Символьный экран надо сделать теневым. Включать только при печати на экран. Возможность включать в любое окно. Но для CP/M желательно использовать окно с адреса 4000H, так как в окне с адреса 0000 область RST, а с адреса 8000H и выше ДОС, которая и печатает на экран. Ориентировочно будет два текстовых режима.
Простой для программиста режим 30 строк по 64 символа. Достоинство — длина строки символов 128 кратна 2 в степени N. Поэтому строки идут друг за другом без пустот. Текст легко редактировать и печатать на экране с помощью команд LDIR. Шрифт более крупный и разборчивый. Так как разрешение монитора 640х480 точек символ будет состоять из 10х16 точек.
Расположение символов в экранном ОЗУ. Байт атрибута, байт символа, байт атрибута, байт символа. Для перехода к символу справа надо увеличить адрес на 2. Для перехода к символу снизу надо увеличить адрес на 128.
Возможно будет и второй режим 30 строк по 80 символов. Текста в строке больше, но он менее разборчивый и труднее обработка строк. Строка не кратна 2 в степени N. Поэтому будут пустые промежутки при длине строки 256 символов. Одной командой LDIR всю страницу уже не напечатать. Так как разрешение монитора 640х480 точек символ будет состоять из 8х16 точек.
Кодировка предположительно КОИ-8 с псевдографикой.
В окне можно разместить 4 страницы по 4 Кбайта. Из страницы в страницу можно будет копировать текст командой LDIR. Текущую отображаемую страницы выбирать записью в дополнительный порт.
Атрибут будет состоять из 4х бит цвета PAPER и 4х бит цвета INK. Для слоя символьного экрана будет своя палитра с возможностью прозрачного цвета.
Для UZIX и текстовых программ с выводом на экран большого количества информации - символьный экран 60х80 символов со шрифтом 8х8 точек.
Наверно надо сделать несколько символьных режимов:
00. 30 строк по 40 символов размером 16х16 точек
01. 30 строк по 64 символа размером 10х16 точек
10. 30 строк по 80 символов размером 8х16 точек
11. 60 строк по 80 символов размером 8х8 точек
Символьный режим 30х40 символов размерами 16х16 подойдет для игр. Этот слой надо сделать самым близким. Если в палитре использовать прозрачный цвет, то текст можно писать поверх фона. Это позволит поверх скроллируемого фона отображать очки, попытки и т. п. информацию.
Если знакогенератор будет загружаемым, то можно в нескольких знакоместах сдвигать стрелку мышки. Печатая эти символы в разных знакоместах можно будет сдвигать стрелку с точностью до точки. Также можно будет запрограммировать значки разной формы.
Если в знакогенераторе будет 2 бита на точку, то можно будет делать шрифты с обводкой, тенью, трехцветные и т. п.
В атрибутах перед шрифтами можно указать инверсию символа, номер цветовой палитры, номер фонта, например, чтобы сделать слово жирным текстом.




Ответить с цитированием