Уже не помню, где нашел этот компьютер. Вчера нашел созданную год назад папку Jynx и вечером занялся поисками. Сам эмулятор был построен на эмуляцию Бейсика, нашлись другие.
Документации нашлось мало, наиболее интересно это. Софт нашелся в TOSEC.
Больше всего я возился с эмулятором PALE 8.50. Эта версия потребовала библиотеки runtime VB5.0 - справился и запустил. Эмулятор начал ругаться на отсутствие ROM, файлы нашлись в предыдущей версии, я вытащил из с помощью забытой утилитки expand.exe.
Хорошо, эмулятор работает. Стал читать уроки chibakumas. Надо сказать, что он использует замысловатый способ подсчета контрольной суммы формата .TAP. Беглые поиски не вывели на понимание формата. Но тут я увидел в панели PALE кнопку Z80-TAP. Набрал программу, скормил эмулю бинарь, получил рабочую тапку, запустил и оставил доработку на утро. Я рассчитывал собрать готовый файл с помощью ужясма и использовать LUA. Вот текст:
org $6500-13
tap_b:
;name
db $22,"NONAME",$22
;type
db "M"
;program length
dw end-begin
;load point
dw begin
org $6500
begin
xor a ;By default lynx makes a noise
out (%10000100),a ;so we mute the noise here!
ld hl,Message ;Address of string
call PrintString ;Show String to screen
ret ;return to basic
NewLine:
ld a,13 ;Carriage return
jp PrintChar
PrintChar:
rst 8
ret
PrintString:
ld a,(hl) ;Print a '255' terminated string
cp 255
ret z
inc hl
call PrintChar
jr PrintString
Message: db 'Hello World 323!',255
end
;calc checksum
LUA
local checksum
checksum=0
for i=sj.get_label("begin"),sj.get_label("end") do
checksum=checksum+sj.get_byte( i )
end
-- print("cs:",string.format("%08X",checksum))
sj.insert_label("CSU", checksum%256)
ENDLUA
;rest tail
checkd: db CSU,CSU ;checksum LSB two times
;execute point
dw begin
;high byte of execute point
db begin/256
tap_e:
savebin "hlw.tap",tap_b,tap_e-tap_b
Как это работает: в комментариях расписаны части файла: имя из 8 символов, тип программы - буква M, слово длина программы, слово стартовый адрес, сам код, на файла .TAP два байта подряд контрольной суммы - младший байт суммы данных, адрес входа(запуска) и младший байт этого адреса.
Собралось запустилось на двух эмуляторах. старый Jynx загрузил тапку и повис. Выяснилось, что есть новая версия 1.8.0. Запустилось и тут, звук я не тестировал.
Дальше стал заниматься графикой, об использовании можно прочитать на сайте chibakumas. Расписано понятно, но пока неясно, как удобнее использовать доступ к памяти - раздельно к RGB, или другой способ? А пока подумаю, что нарисовать на экране, есть кое-какие мысли.
Архив лежит тут - готовый PALE, исходный текст и архив дизассемблера ROM, почему-то его нет на сайте автора.
Дополнение: увы, не получилось с процедурой построения точки. Вышло 128 байт, хотя есть лишние байты
Комментарии
Отправить комментарий