Добрался до компьютера свое мечты - ЮТ-88. Увы, в старое время он так и был недоступен.
Эмуляторы нашлись - 1,2,3. Остался ассемблер и часть информации. Внутри компьютера находится процессор КР580ВМ80, совместимый с Intel8080. Пригодится Tasm 3.1(не Borland, а Telemark), и моя давно написанная утилитка z80<>8080. Пошел дальше, наткнулся на непонятную информацию - непонятно, как подготовить файл .rku, потому что контрольная сумма блока считается не пойми как. Скомпилировал тсходник первой программы
tasm -85 -b -q src.asm src.bin
Исходник src.asm
.ORG 3000h
START:
lxi h,0E800h
m1 mov m,l
inr l
jnz m1
ret
.END
START:
lxi h,0E800h
m1 mov m,l
inr l
jnz m1
ret
.END
Да, с адресом видеопамяти я так и не врубился, указал 0E000h. в эмуляторе Башкирия2м открываю отладчик, жму Ctrl+L, указываю загруженный адрес 3000. Возвращаюсь к эмулятору, набираю команду G3000 - ничего нет. В отладчике меняю адрес на правильный
ура! заработало! Остался неведомый формат rku. Вычитал, как сохранять файл:Сохранил программу и сравнил бинарь с .rku:Сразу понятно, как посчитать эту контрольную сумму. Для удобства написал программу bin2rku, на трех эмуляторах программа загрузилась.
Посмотрел опубликованные программы, ничего интересного. Заодно выяснилось, что эмуляции звука в Башкирии2м нет(программа gamma). Ладно, Вернемся к опросу клавиатуры. В документации указано, что порт A0 - это данные клавиатуры. Но из порта ничего не читалось, чтение доков и копание в отладчиков подсказало другой способ:
.ORG 3000h
START:
kl ;in 0A0h
call 0fdaeh ;
cpi 0FFh
jz kl
sta 0E803h
push psw
ani 0f0h
rar
rar
rar
rar
call hnum
sta 0E800h
pop psw
ani 0fh
call hnum
sta 0E801h
mvi a,58
sta 0E802h
jmp kl
hnum
mov l,a
mvi h,0
lxi d,hx
dad d
mov a,m
ret
hx
.byte "0123456789ABCDEF"
.END
при нажатии клавиш в верхнем левом углу отображается код(255 если не нажато). Захотелось порисовать немножко, используя набор символов:
.ORG 3000h
START:
;zero memory
lxi h,0E800h
zm mvi m,0
inx h
mov a,h
cpi 0F0h
jnz zm
; draw line
lxi d,0 ; D.E=y.x
ll call plot
inr e
call plot
inr e
inr d
mov a,d
cpi 64
jnz ll
g jmp g
plot
;get bit value
mov a,d
ani 1
add a
xra e
ani 0FEh
xra e
mov c,a
mvi b,0
lxi h,bw
dad b
mov a,m
push psw
;y*64
; mov l,d
mov a,d
ora a
rar
mov l,a
mvi h,0
dad h
dad h
dad h
dad h
dad h
dad h
mov a,e
mvi b,0E8h
ora a
rar
mov c,a
dad b
pop psw
ora m
mov m,a
ret
bw .byte 1,2,4,16
;01|02 (y&1)*2+(x&1)
;--+--
;04|16
.END
;up 19
;down 1A
;left 08
;right 18
К коду я еще вернусь, а пока файлы тут.
Комментарии
Отправить комментарий