Эмуляция "Микро-80"

 


Иногда в интернетах вспоминают о древнем компьютере "Микро-80", после очередного поста я решил посмотреть на него. Чаще всего публикуют только это фото - один из авторов компьютеров "Микро-80" Сергей Николаевич Попов с первым экземпляром "Микро-80".

Эмуляторов нашлось два - Башкирия-2М и Emu80. Документации тоже есть немношк.

Скачал эмуль и застрял на вечер - выгрузка блока из монитора дает файл формата .rk8 нулевой длины. Переключился на версию с монитором Радио-86РК - выгрузил файл, чтобы разобраться с этим форматом. Эмулятор "Башкирия-2М" тоже выгружает .rk другого формата.

Заодно на сайте Emu80 нашлась давняя утилита bin2tape с исходниками. Ей я и занялся.Подготовил бинарь:

Я долго копался с подсчетом контрольной суммы, но в конце концов разобрался в исходниках и пазл сложился, осталось подготовить данные:
device zxspectrum48
prgstart equ $8000

MACRO swapw wo
dw ((wo&255)<<8)|((wo>>8)&255)
ENDM
        ORG prgstart-4
        swapw begin
        swapw end
begin
ld hl,$E800 ; characters
mu:
ld (hl),l
inc l
jp nz,mu
ret
end
;header
db 0,0,0,$E6
endrk8:
savebin "outchar.rk",prgstart-4,endrk8-(prgstart-4)

;precalc check sum - for example must be BB,B8
    LUA ;allpass
    local checksum
    local fp
    checksum=0
    
    for i=sj.get_label("begin"),sj.get_label("end"),1 do
    checksum=checksum+sj.get_byte(i)*257
    end
    print(string.format("%02x",checksum))
fp = assert(io.open("outchar.rk", "ab"))
fp:write(string.char(math.floor((checksum %65536)/256)))
fp:write(string.char(checksum % 256))

    assert(fp:close())
    ENDLUA


Результат работы программы

После всей этой возни с форматом мне расхотелось что-то еще изучать, вернусь позже.

Комментарии