Псевдографический режим 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-компьютертов (использующих микросхему КР580ВГ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), 77 ; 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 + столбец.