Важная информация

User Tag List

Страница 57 из 57 ПерваяПервая ... 5354555657
Показано с 561 по 568 из 568

Тема: Бейсики для Вектора-06Ц и клонов

  1. #561
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,865
    Спасибо Благодарностей отдано 
    658
    Спасибо Благодарностей получено 
    1,855
    Поблагодарили
    1,060 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Пара слов про компилятор. Компилятор специально для 2.5+ скорее всего не будет написан никогда, но есть другой путь, чуть более реальный. Теоретически можно научить BASCOM переваривать векторовские программы. Для этого нужны 2 вещи:
    1. Ассемблерная библиотека для BASCOM с поддержкой графики и музыки.
    2. Препроцессор, который берет текстовый файл программы для 2.5 и меняет там графические и музыкальные операторы и функции на вызовы вышеупомянутой библиотеки.
    На оригинальность не претендую, просто надеюсь, что написанное подтолкнет кого-нибудь к практическим действиям в данном направлении (необязательно для вектора, для любого компа с 8080).

  2. Эти 2 пользователя(ей) поблагодарили ivagor за это полезное сообщение:

    KTSerg (09.05.2024), svofski (08.05.2024)

  3. #562
    Master Аватар для Improver
    Регистрация
    06.02.2018
    Адрес
    г. Волгоград
    Сообщений
    982
    Спасибо Благодарностей отдано 
    441
    Спасибо Благодарностей получено 
    402
    Поблагодарили
    224 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Пример подобной конструкции, кмк: ЛС-Паскаль.
    Теоретически, можно даже написать некий конвертор из бейсика в p-код и использовать компилятор Паскаля.

  4. #563
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,865
    Спасибо Благодарностей отдано 
    658
    Спасибо Благодарностей получено 
    1,855
    Поблагодарили
    1,060 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Задачи могут быть разные, но для быстродействия конверсия в p-код ничего хорошего не даст. Вот если конвертировать бейсиковские исходники в паскалевские (или сишные) исходники и потом нормальным компилятором получать машинный код, то это другое дело. Это обобщение того, что я написал, просто конвертировать исходник 2.5 в BASCOM проще, чем в Паскаль или Си.

  5. #564
    Veteran
    Регистрация
    22.02.2014
    Адрес
    г. Курган
    Сообщений
    1,658
    Спасибо Благодарностей отдано 
    226
    Спасибо Благодарностей получено 
    301
    Поблагодарили
    212 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    ...Теоретически можно научить BASCOM переваривать векторовские программы. Для этого нужны 2 вещи:
    1. Ассемблерная библиотека для BASCOM с поддержкой графики и музыки.
    ...
    Я думал, что "Драйверы устройств" - это ассемблерная библиотека графики, музыки и всего прочего.
    Или для BASCOM нужно что-то особенного?

  6. #565
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,865
    Спасибо Благодарностей отдано 
    658
    Спасибо Благодарностей получено 
    1,855
    Поблагодарили
    1,060 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Проблемы две:
    1. Драйверы устройств располагаются по тем же адресам, что и родная runtime библиотека BASCOM.
    2. Нужно так или иначе обеспечить интерфейс, чтобы из BASCOM можно было вызывать нужные процедуры.

  7. #566
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,865
    Спасибо Благодарностей отдано 
    658
    Спасибо Благодарностей получено 
    1,855
    Поблагодарили
    1,060 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Добавил CORPSE в свой набор бенчмарков, соответственно стал часто запускать и заметил, что изредка на экране появляются странные черточки. После этого можно много раз запускать и ничего не будет, а потом вдруг снова. Расследование показало, что опрос клавиатуры baskeysCorrected2 не полностью совместим с версиями бейсика начиная с 2.98 (особенности обработчика прерываний), извините. Проблема косметическая, бейсик не ломается, но все равно неприятно и так оставлять нельзя. Сделал новый вариант, который совместим со всей линейкой от 2.5 до 2.9+. Машиннокодовая процедура на 3 байта длиннее (стартовый адрес изменился!), а бейсиковский загрузчик оптимизировал, он компактнее. CORPSEfld доработал, но потенциальная проблема касается и других игрушек, например VITAMINO, поэтому надо или запускать их в бейсиках <2.98 или заменить процедуру опроса. Рекомендую все же заменить, в 2.98 много важных оптимизаций (по количеству и качеству изменений это скорее 3.0), предыдущие версии заметно медленнее. На примере CORPSE (время от RUN до строки 315, инициализация+заставка):
    2.891 - 59.6 секунды
    2.97fix - 45.6 секунды
    2.98fix/2.995 - 29.4 секунды
    CORPSEfld2:
    2.891 - 45.3 секунды
    2.97fix - 35.5 секунды
    2.98fix/2.995 - 19.5 секунды
    Скорость бейсика конечно сказывается не только на инициализации и рисовании уровня, но и на скорости движения героя и отзывчивости управления. С 2.5 не сравнил, т.к. в нем очень ограниченная поддержка шестнадцатеричных и пришлось бы дорабатывать CORPSE для совместимости. Смысла в такой доработке нет, даже в 2.891 слишком медленно, в 2.5 было бы просто невыносимо.
    Вложения Вложения

  8. Эти 4 пользователя(ей) поблагодарили ivagor за это полезное сообщение:

    Improver (17.05.2024), KTSerg (19.05.2024), metamorpho (17.05.2024), svofski (17.05.2024)

  9. #567
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,865
    Спасибо Благодарностей отдано 
    658
    Спасибо Благодарностей получено 
    1,855
    Поблагодарили
    1,060 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ускорил дизернутый трассировщик до упора. Все ради любви к круглым цифрам и новой версии бейсика, в которой будет рисовать меньше чем за 3 часа.

  10. Этот пользователь поблагодарил ivagor за это полезное сообщение:

    svofski (21.05.2024)

  11. #568
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,865
    Спасибо Благодарностей отдано 
    658
    Спасибо Благодарностей получено 
    1,855
    Поблагодарили
    1,060 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В штатном описании 2.5 для функции RND приведен только один вариант вызова - RND(1)
    Из дизассемблера или описаний микрософтовских бейсиков можно узнать полный набор вариантов того, как влияют аргументы RND:
    1) >0 - генерация нового псевдослучайного числа
    2) =0 - повторение предыдущего
    3) <0 - рестарт псевдослучайной последовательности с RND SEED зависящим от аргумента
    Особый интерес представляет случай 3, т.к. в 2.5 (как и во всех клонах msbasic 8k) нет оператора RANDOMIZE, позволяющего задать RND SEED.
    Первое число последовательности при вызове с аргументом <0 получается так (это справедливо для аналогов микрософтовского 3.2, в более новых версиях они изменили генератор и инициализацию):
    1. Меняются местами старший и младший байт мантиссы аргумента
    2. Результат всегда будет положительный и после нормализации диапазон (0,1]
    Пара примеров близких к границам диапазона:
    1) RND(-16777215) - последовательность начнется с 1.
    2) RND(-1) - последовательность начнется с 7.65943E-06. Можно получить чуть-чуть меньшее значение, если делить аргумент на степени двойки. На первый элемент это повлияет очень слабо, но на следующие сильно.

  12. Этот пользователь поблагодарил ivagor за это полезное сообщение:

    metamorpho (27.05.2024)

Страница 57 из 57 ПерваяПервая ... 5354555657

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Картотека ПО для Вектора-06ц
    от svofski в разделе Вектор
    Ответов: 719
    Последнее: 04.04.2024, 11:13
  2. Восстановление Вектора-06ц
    от Daniil Chislov 86 в разделе Вектор
    Ответов: 100
    Последнее: 11.03.2021, 00:23
  3. Ответов: 198
    Последнее: 26.04.2020, 13:05
  4. Ответов: 58
    Последнее: 06.07.2019, 23:56
  5. Ответов: 8
    Последнее: 14.11.2008, 02:41

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •