vinxru, у микроши динамик висит на таймере, и к INTE не привязан.
Вид для печати
vinxru, у микроши динамик висит на таймере, и к INTE не привязан.
А зачем тебе это нужно? Если ты пишешь программу работающую в псевдографике, то ты явно будешь выводить графику не ESC последвательностями, а напрямую записью в видеопамять.
Курсор устанавливается через порт быстро и просто.
Все поголовно работают с видеопамятью и железом напрямую. Иначе бы программы Апогея, Микроши, РК86 были бы совместимые. Программ работающих через ПЗУ всего десяток.
гениально, а если мне понадобиться вывести текст?
конечно, одну строчку можно и прицелиться, но когда их больше одной?
да, если стоит вопрос только запхнуть байты в порты. но говорят (наверное врут) что иногда надо соотносить позицию курсора с адресом в видео ОЗУ. и говорят (наверное опять врут) что для этого надо провести некоторые математические действия.
если под словом "железо" понимать клаву и таймер то да.
пограмм которые напрямую работают с ВГ75 и ВТ57 единицы.
Вот тебе программа для Микроши включающая псевдографический режим 128x62, причем этот режим использует меньше ОЗУ, чем оригинальный 128x50
Код:; Пример псевдографического режима
; (с) 17-04-2012 vinxru
; Используется компилятор sjasm
device zxspectrum48
hdr: db 0,4
dw 0
start: ; Ждем обратный ход
ld hl, 0D001h ; для Апогея 0EF01h
ld a, (hl) ; Обязательно пару команд!
wait1: ld a, (hl)
and 20h
jp z, wait1
; Вырубаем видео
ld hl, 0D001h ; для Апогея 0EF01h
ld (hl), 0
; Заполняем видеопамять (из за байта F1 это надо делать пока видео выключено)
ld bc, data
ld hl, 76D0h ; для Апогея 0E1D0h
copy: ld a, (bc)
cp 0FFh
jp z, endCopy
ld (hl), a
inc bc
inc hl
jp copy
endCopy:
; Устаналиваем режим и врубаем видео
ld hl, 0D000h ; для Апогея 0EF00h
ld (hl), 04Dh ; 78 символов
ld (hl), 36 ; 37 линий
ld (hl), 7 ; Высота символа 8
ld (hl), 083h
; Врубаем видео
inc l
ld (hl), 27h
; Висим
jp $
data: db 0,0F1h,0,0F1h,0,0F1h
db 0,0,0,0,0,0,0,0,0, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0F1h ; 0
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 1
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 2
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 3
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 4
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 5
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 6
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 7
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 8
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 9
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 10
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 11
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 12
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 13
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 14
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 15
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 16
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 17
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 18
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 19
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 20
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 21
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 22
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 23
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 24
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 25
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 26
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 27
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 28
db 0,0,0,0,0,0,0,0,0, 5,'12345678901234567890123456789012345678901234567890123456789012',5,0F1h ; 29
db 0,0,0,0,0,0,0,0,0, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0F1h ; 0
db 0,0F1h,0,0F1h,0,0F1h
dataEnd: DUP 78*30 - (dataEnd-data)
db 0
EDUP
db 0FFh
end: savebin "test.rkm",hdr,end-hdr