Кто-нибудь может подсказать, почему бейсик-микрон не работает на Z80? Вроде бы когда-то обсуждалось, может быть, даже патч был, но не могу почему-то найти...
Если не ошибаюсь, проблема была с флагом четности...
Кто-нибудь может подсказать, почему бейсик-микрон не работает на Z80? Вроде бы когда-то обсуждалось, может быть, даже патч был, но не могу почему-то найти...
Если не ошибаюсь, проблема была с флагом четности...
yevrowl(26.11.2025)
Да, там в двух местах флаг четности мешает.
Если речь про РКшный микрон, то вот
в 2011 году я подсчитал, что RDK очень похож на TRS-80 Level I, который был не от Microsoft (от тех был Level II), а был написан на основе фришного Palo Alto Tiny BASIC от Li-Chen Wang:
http://en.wikipedia.org/wiki/TRS-80Level I Basic was based on Li-Chen Wang's free Tiny BASIC, additional functions added by Radio Shack.[8] It achieved a measure of noteworthiness due in large part to its outstanding manual,[5] written by David Lien, which presented lessons on programming with text and humorous graphics, making the subjects very easy to understand. It had only two string variables (A$ and B$), 26 numeric variables (A - Z) and one array, A(). Code for functions like SIN(), COS() and TAN() was not included in ROM but printed at the end of the book. The only error messages were: "WHAT?" for syntax errors, "HOW?" for arithmetic errors such as division by zero, and "SORRY" for out of memory errors.
http://www.nedopc.org/forum/viewtopi...=9630&start=30
P.S. Буквально вот только что появился ещё один микроскопический бейсик для 8080, который влезает в 1К ПЗУ и требует как минимум 1К ОЗУ (но может использовать и все 64К):
https://hackaday.io/project/194248-o...c-for-the-8080
https://github.com/WillStevens/basic1K
Последний раз редактировалось Shaos; 13.03.2024 в 10:14.
Администратор сетевого сообщества nedoPC.org
Урал 8/64К, Sp2000, ZX48K+, ZX16K (спалил), TS1000 (американский ZX81), TS2068, Дельта-С, 20 лет собираю ATM Turbo 2+
Неспектрумы: Электроника МК-85 и МК-85М, ПК-01 Львов, БК-0011, Вектор-06Ц, Лик (спец), Апогеи, Radio-86RK SRAM 32K & 128K (всё ещё собираю)
tnt23(13.03.2024)
Занялся дизассемблированием Бейсика от КР-04.
Несколько недель ушло на устранение множества гвоздей, которые не давали перемещать подпрограммы ни на байт: PRINT зацикливался при выводе числовых значений, BEEP честно выдавал ошибку деления на ноль и т.п. и т.д.
Причина - банальная: Дизассемблер напутал с константами и объявил их метками, а некоторые ссылки на метки объявил константами, так как в коде множество ухищрений с маскировкой команд, типа:Из-за чего многие метки оказались неопределёнными и команды ветвления использовали магические константы.Код:; Странная инструкция mvi c,0f1h ; На самом деле db 0eh Label1: pop psw ; Странная инструкция lxi h,0d1c1h ; На самом деле db 21h Label2: pop b pop d
Сейчас, когда я вычистил листинг (более 5000 строк) от всей этой магии, Бейсик вполне пригоден для работы (проверяю на игре Злые пещеры), но есть сомнения в тригонометрии из-за тех магических констант, что потребует очередных трассировок.
Выявил все подпрограммы директив, операторов и функций.
Ещё один шаг - замена всех RST на CALL, чтобы отвязать Бейсик от жёсткой посадки на нулевой адрес: Тоже выявило много магических зависимостей. Но, в конце-концов, удалось и это. Ничего не зацикливается и игра благополучно выполняется достаточное время.
Сейчас проблема одна: При забрасывании Бейсика в верхние адреса (за 8000h) он хоть и продолжает работать, но годен только для простых операций: PRINT, BEEP и т.п.
При попытке создать переменную или на том же FOR - выдаёт "Мало ОЗУ". В отладчике я конкретные точки возникновения ошибки нашёл и вижу. Но пока не понимаю, как это исправить: Всё крутится внутри NEW и холодного старта.
Можно подробнее про баг FLOAT->DE?
Сравниваю кое-как с исходниками Altair-Basic.
P.S.: Исходный листинг слишком велик, чтобы быстро в нём ориентироваться.
Электроника КР-03; ZX-Spectrum "Ленинград-48"; Atari-130XE; Поиск-1...
yevrowl(04.10.2025)
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)