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

User Tag List

Страница 57 из 59 ПерваяПервая ... 53545556575859 ПоследняяПоследняя
Показано с 561 по 570 из 590

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

  1. #561
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,889
    Спасибо Благодарностей отдано 
    668
    Спасибо Благодарностей получено 
    1,907
    Поблагодарили
    1,080 сообщений
    Mentioned
    23 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
    Адрес
    г. Волгоград
    Сообщений
    990
    Спасибо Благодарностей отдано 
    460
    Спасибо Благодарностей получено 
    419
    Поблагодарили
    230 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

    По умолчанию

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

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

    По умолчанию

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

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

    По умолчанию

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

  7. #566
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,889
    Спасибо Благодарностей отдано 
    668
    Спасибо Благодарностей получено 
    1,907
    Поблагодарили
    1,080 сообщений
    Mentioned
    23 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.996 - 17.6 секунды
    Скорость бейсика конечно сказывается не только на инициализации и рисовании уровня, но и на скорости движения героя и отзывчивости управления. С 2.5 не сравнил, т.к. в нем очень ограниченная поддержка шестнадцатеричных и пришлось бы дорабатывать CORPSE для совместимости. Смысла в такой доработке нет, даже в 2.891 слишком медленно, в 2.5 было бы просто невыносимо.
    Вложения Вложения
    Последний раз редактировалось ivagor; 30.05.2024 в 16:43. Причина: добавил результат 2.996

  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,889
    Спасибо Благодарностей отдано 
    668
    Спасибо Благодарностей получено 
    1,907
    Поблагодарили
    1,080 сообщений
    Mentioned
    23 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

    svofski (21.05.2024)

  11. #568
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,889
    Спасибо Благодарностей отдано 
    668
    Спасибо Благодарностей получено 
    1,907
    Поблагодарили
    1,080 сообщений
    Mentioned
    23 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. Эти 2 пользователя(ей) поблагодарили ivagor за это полезное сообщение:

    Improver (28.05.2024), metamorpho (27.05.2024)

  13. #569
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,889
    Спасибо Благодарностей отдано 
    668
    Спасибо Благодарностей получено 
    1,907
    Поблагодарили
    1,080 сообщений
    Mentioned
    23 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    2.995fix и 2.996 в картотеке.
    2.996 - это ребрендинг 3.0, посчитал что не тянет на смену главной цифры, но отличий не так уж мало и ускорение во многих тестах заметное. Кое-что из 2.996 удалил, поэтому 2.995fix тоже остается. Полный список изменений в readme или проще почитать прямо в карточке базиса. Прокомментирую отдельные моменты касающиеся 2.996:
    1. В качестве утилиты для ренумерации можно использовать 2.891 или 2.995fix.
    2. Линии оставил "классические", но немного ускорил.
    3. Ну и самое интересное для меня, результаты бенчмарков:
    Пустой цикл
    ANTIGRAV (стартовое рисование уровня)
    Пробегание от левой стены до правой в PROVERKA и взлет ракеты в ANTIGRAV
    Rugg/Feldman benchmarks
    Решето Эратосфена
    Быстрый Мандельброт
    Медленный Мандельброт
    Трассировщик с дизером
    Трассировщик с отражениями
    Рейкастер
    CORPSEfld2 (инициализация+заставка)

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

    Improver (30.05.2024), metamorpho (30.05.2024), svofski (30.05.2024)

  15. #570
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,889
    Спасибо Благодарностей отдано 
    668
    Спасибо Благодарностей получено 
    1,907
    Поблагодарили
    1,080 сообщений
    Mentioned
    23 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В 2.5 нет оператора (в MSX BASIC называется SOUND) который позволяет задавать произвольную частоту канала таймера, но это вполне можно сделать через OUT. С таким подходом вектор становится настолько могуч, что может на бейсике изобразить нечто похожее на спековский биперный движок phaser1 (basphas) или на Новикова (автора Fatax, Eraser и т.д.). Или можно накрутить звуковые эффекты. А можно глиссандо (basglis), но тут очень зависит от скорости бейсика, причем разница даже между 2.995 и 2.996 слышна невооруженным ухом. Это еще одна потенциально сильная сторона вектора, которая не была раскрыта, надеюсь на конкурсе или вне конкурса кто-нибудь попробует использовать.
    Вложения Вложения

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

    Improver (03.06.2024), metamorpho (03.06.2024), nzeemin (03.06.2024), Ramiros (06.06.2024), svofski (03.06.2024), tnt23 (05.06.2024)

Страница 57 из 59 ПерваяПервая ... 53545556575859 ПоследняяПоследняя

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

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

Эту тему просматривают: 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

Ваши права

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