Псевдографический режим 128x62 компьютеров РК86
Стандартный видеорежим компьютеров РК86 64x25 символа. Благодаря псевдографическим символам, делящим знакоместо на 4 части, реализуется псведографический режим 128x50. Но из за отступа в 2 пикселя между стркоами символов изображение будет распадаться на строки.
Этот отступ можно программно отключить, используя следующую программу.
; Ждем обратный ход
ld hl, VG75_ADDR+1
ld a, (hl)
wait1: ld a, (hl)
and 20h
jp z, wait1
; Выключаем видео
ld hl, VG75_ADDR+1
ld (hl), 0
; Устаналиваем видеорежим
ld hl, VG75_ADDR
ld (hl), 77 ; 78 символов
ld (hl), 29 ; 30 линий
ld (hl), 77h ; Высота символа 8
ld (hl), 053h
; Включаем видео
inc l
ld (hl), 27h
Программно этот режим полностью совместим со стандартным. Но при этом частота частота кадров увеличивается с 50 до 60 Гц и изображение становится уже.
Если же при этом увеличить количество строк на экране с 25-и (видимых) до 31-ой, то стандартная частота кадров сохранится, а псевдографическое разрешние повысится до 128x62.
Такой видеорежим использует 78*37 = 2886 байт видеопамяти. А стандартно под видеопамять отводится 2340 байт расположенных в конце ОЗУ. Поэтому необходимо, либо перенести видеопамять в другие адреса, либо воспользоваться специальным значением F1 (стоп ПДП или конец строки). Если разместить F1 в видеопамяти, то следующий байт видеопамяти будет началом следующей строки.
В стандартном режиме РК86 750 байт памяти не используется, так как не отображается на мониторе. Если вместо пробелов заполняющий 3 верхние, 3 нижние строки и 4 правых колонки разместить значение F1, то видеорежим 128x62 поместится в стандартную видеопамять.
Это стандартная возможность всех РК86-компьютертов ( использующих микросхему ВГ75). Такой видеорежим не совместим с программой "Монитор", но является стандартным для видеоконтроллера и телевизора.
start: ; Ждем обратный ход
ld hl, VG75_ADDR+1
ld a, (hl)
wait1: ld a, (hl)
and 20h
jp z, wait1
; Выключаем видео
ld (hl), 0
; Записываем байт F1 (стоп ПДП, байт обозначающий конец строки) и очищаем видеопамять
ld hl, VIDEOMEM_ADDR
xor a
ld bc, 1 +(3<<8)
call writeF1
ld bc, 73+(31<<8)
call writeF1
ld bc, 1 +(2<<8)
call writeF1
ld bc, 35+(1<<8)
call writeF1
; Устаналиваем видеорежим
ld hl, VG75_ADDR
ld (hl), 04Dh ; 78 символов
ld (hl), 36 ; 37 линий
ld (hl), 77h ; Высота символа 8
ld (hl), 053h
; Включаем видео
inc l
ld (hl), 27h
;-----------------------------------
writeF1: ld d, c
writeF1_1: ld (hl), a
inc hl
dec d
jp nz, writeF1_1
ld (hl), 0F1h
inc hl
dec b
jp nz, writeF1
ret
Адрес символа в видеопамяти вычисляется по формуле VIDEOMEM_ADDR + 15 + строка*74 + столбец.
