Эмуляция SHARP MZ-80A

 


Google позавчера подсунул инфу о стареньком компьютере SHARP MZ-80A. Вчера интернет перестал работать, поэтому нашлось время на изучение. Сначала стал искать эмуляторы, надеясь, что сразу найдутся образы ROM. Нашлась игра с эмулятором и готовыми ROM(как показало изучение отсутствовал FDIF.rom). Готовый комплект тоже нашелся. Доступна модель MZ-80B.

С остатками MZ-80K и MZ-80C все грустно: есть эмулятор Takeda, но нет образов. Сборник программ от Takeda нашелся, но при запуске экран заполнился символом ©. Поискал в интернетах картинку с экрана: при запуске появляется сообщение System Monitor. Долгие поиски вывели на сборник образов(дополнительно)


Теперь стал разбираться с монитором. Нашлась MZ80A_Owners_Manual.pdf, в документации достаточно инфы - карта памяти и команды. Доступно немного команд - загрузка и запуск, карта памяти немного отличается:

0000-0FFF Monitor
1000-11FF Monitor Work Area
1200-41FF BASIC SP 5025
4200-4805 BASIC Work Area
4806-CFFF Program in BASIC
D000-DFFF Video RAM Area
E000-EFFF I/O Controls
F000-FFFF DOS

Запустил отладчик эмулятора Takeda, не нашел команду загрузки бинарных файлов, но удалось проверить, верно ли указаны адреса - изменил содержимое ячейки по адресу $D000 и увидел символ. Символы можно посмотреть, открыв FONT.rom(картинка из моего редактора шрифтов):

Разрешение экрана 40х25 и есть семиграфика, которая даст экран разрешением 80х50.

Стал искать кросс-средства разработки и описание формата .mzf - все плохо, не найдено.
Позже нашелся готовый ассемблер - автор написал, что адаптировал сообщения, но не смог перевести описание. Google все же перевел страничку.

Написал простой код:
        ORG    $1200
LD HL,$D000
LP:
LD (HL),L
INC L
JR NZ,LP
JR $
        END

Компиляция : z80as ch.asm -m chars
Предлагается другой вариант: использовать Z88dk с вызовом makeapp, не стал проверять.

Загрузка программы это отдельная песня. Запустить эмулятор, нажать L<Enter>, перебросить на окно файл и выбрать меню CMT->Play button.
Результат работы программы.

Осталось подумать, какие символы можно использовать, моей фантазии хватило на:

С дисководом я пока не разобрался, другие игры не смотрел. Пока есть время, можно найти многое. Главное - не упустить момент(:.

Дополнение.  Нашлась утилита bin2mzf, написанная в индусском стиле, но все же работает. Формат .mzf такой:
typedef struct header_t {
    unsigned char file_attribute;
    char file_name[17];
    unsigned short file_size; 
    unsigned short file_load; 
    unsigned short file_exec;
    char comment[104];
} Header;

Можно обойтись с помощью sjasmplus.

Комментарии