ivagor(14.04.2023)
оффтоп про z88dk
Скачал последнюю версию - чуда не случилось, исходный неправленый вариант библиотеки picojpeg не переваривает. Зато правленый вариант текущий z88dk делает на 917 байт короче и на 16% быстрее (это вариант без ассемблерных вставок)! Прогресс за 2 года ощутимый, еще бы работу с арифметикой доработали.[свернуть]
- - - Добавлено - - -
Извините, заканчиваю с оффтопом, но авторам компиляторов на заметку - как надо использовать возможности 8085. Один и тот же декодировщик jpeg c Леной, чисто Сишная версия без ассемблерных вставок (z88dk 20230414, sccz80):
8080 (29321 байт) 48 секунд
8085 (26962 байта) 34 секунды
z80 (28952 байта) 40 секунд
Это все с векторовским торможением, но абсолютные цифры не так важны, интересны соотношения.
Последний раз редактировалось ivagor; 15.04.2023 в 13:11. Причина: исправил размер версии для 8080
Improver(14.04.2023), parallelno(14.04.2023), svofski(14.04.2023)
Вчера ошибся в размере версии 8080, исправил. Дополнение: попробовал вариант с ассемблерными вставками - в отличие от чисто Сишного он почти не ускорился, всего на 0.1 секунды, зато размер меньше на 503 байта. Надо смотреть библиотеки, они наверно оптимизировали арифметику, в первую очередь умножение, а в версии с ассемлерными вставками вся критичная арифметика в них.
В MSX-BASIC имя переменной это два байта. Тип хранится отдельно и по совместительству является размером. По умолчанию A, A%, A$, A() -- разные переменные, потому что имеют разные типы. Если вызвать DEFINTA, A становится эквивалентом A%.
Можно без потерь сделать имена переменных трехбуквенными, если закодировать их в RADIX-50: в те же два байта помещаются 3 буквы и цифры. Подчеркивание не в стандарте RADIX50, но можно использовать вопросик или точку. Преобразования не самые удобные, правда.
В BASIC 2.5 я не залезал глубоко, но по-моему дела обстоят немного иначе -- мне показалось, что признак строковости это старший битик в имени переменной ($00,$41 = A, $80,$41 = A$, $C1,$41 = AA$). Так конечно RADIX50 не вклячишь.
Больше игр нет
Типы переменных в 2.5 Евгений Филиппов описал в Vector-User 10.
MSX Basic при большом желании можно портануть с ПК8002, но есть неприятные дополнительные требования и ограничения. Из экранных режимов скорее всего получится эмулировать текстовые. Спрайтов не будет. Если с квазом Баркаря, то можно попробовать сделать SCREEN 2. Толку без спрайтов наверно в этом нет. Для любителей расширенной математики с диском есть MBASIC и комания, для магнитофонщиков - Бейсик-Корвет.
svofski(15.04.2023)
Понимаю что я немного не в теме, всё же осмелюсь предложить посмотреть на
MSX Basic Compiler
https://github.com/leonhad/msx-bcc
-- подозреваю, что в нём можно заменить codegen часть + допилить рантайм -- и получить тем самым тот же язык для Вектора.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
На мой поверхностный взгляд это близко по сложности к перепиливанию спековского Boriel - готового рантайма для вектора нет и z80.
Уголок любителей истории. Оказалось, что circle в 2.5 и драйверах устройств адаптирован с Ириши. Процедура быстрее корветовской, но довольно громоздкая. У Вектора сравнительно быстрый circle и неторопливая заливка, у Корвета наоборот.
Заливку оптимизировал (отсюда и далее), но отдельно, а в бейсик не встраивал (там места не хватает).
- - - Добавлено - - -
В процитированном фрагменте "У Вектора" надо понимать в контексте сообщения, т.е. "в 2.5 и драйверах устройств".
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)