Просмотр полной версии : Корвет : Режим 80x25
Софт для CP/M стандартно считает что экран у нас 80x25(4)
а текстовый режим корвета - 64x16
он конечно классный из-за шрифта 8x16 но маленький в данном контексте.
не то чтобы такого софта много использовалось на корвете, но он есть
из того что приходит в голову
электронные таблицы
SuperCalc
Multiplam
текстовый процессор
SuperText
и пару игрушек ;)
Catchum
Ladder
и эту проблему решали несколькими способами
1) т.к. CP/M софт обычно содержит утилиты конфигурирования
то перестраивали в настройках размер экрана и управляющие последовательности
как следствие софт впихивался в несчастные 64x16
работало быстро ибо текстовый экран, но смотрелось - странно
2) экран 80x25 в граф режиме
звучит хорошо, НО
шрифт 6x8 (+2 строки пропуска между строками)
ЖУТКО медленный скролл экрана
очень ограниченный набор управляющих кодов.
но зато большой экран текстовый.
собственно как выяснилось были решения и для CP/M и для Микродос
для CP/M это
25.COM 30.com
для микродос
GRSCR.COM
Оборвался на полуслове, продолжим.
CP/M
там существуют
16.COM
25.COM
32.COM
это соответственно эмулятор экранов
80x25
80x32
64x16
я его описывал http://zx-pk.ru/showpost.php?p=641092&postcount=1
но чуть позже скопирую сюда, для единообразия
из забавного, это даже не "драйвер"
при запуске этой штуки оно готовит шрифты в видеопамяти
и ПОДМЕНЯЕТ БИОС СОБОЙ, как результат - работает с любым загруженным биосом ;)
16.com - просто обычный текстовый биос
+ шрифт 6x8, что заметно замедляет вывод, особенно без оптимизаций.
как недостаток не будет работать с нашим ExtROM, ибо он патчит оригинальный биос
можно будет сделать спец версии
основные тормоза - конечно скролл экрана
тормозит раза в 2 в сравнении со стандартным драйвером
(тест опишу ниже)
МИКРОДОС
GRSCR.COM
http://zx-pk.ru/attachment.php?attachmentid=51552&d=1426844667
это несколько более интересно.
ибо в нем эмулируется почти полный сет управляющих символов как в ром
за исключением кодов котрые удаляют строки/символы
0BH => Удаление строки, на которой находится курсор
(оставшиеся до конца экрана строки сдвигаются
вниз, последняя строка пропадает)
1CH => Вставка пробела на место курсора (остаток
строки сдвигается вправо, последний символ
строки пропадает)
aka 1BH,'@'
1DH => Удаление символа из позиции курсора (остаток
строки сдвигается влево, в последнюю позицию
строки заносится пробел)
aka 1BH,'P'
1EH => Вставка пустой строки на место курсора
(оставшиеся до конца экрана строки сдвигаются
вверх, на место последней строки заносится
пустая строка)
1BH,'0' => Включение основного набора символов
знакогенератора
1BH,'1' => Включение дополнительного набора символов
знакогенератора
1BH,'M' => Удаление строки, на которой находится курсор
(оставшиеся до конца экрана строки сдвигаются
вверх, на место последней строки экрана
заносится пустая строка)
он даже поддерживает цветной режим (4 цвета)
но и не без недостатков ;)
1) Работает только в МикроДОС от 30.06.88 (которая работает только с ОПТС 2.0)
но можно сделать версию для МикроДОС от 05.01.90
(я проверил, убрал проверку оно заработало)
МикроДОС от 05.01.90 это самая навороченная версия
главное в отличии от 30.06.88 которая работает ТОЛЬКО с ОПТС2
он работает и с ОПТС1.
и при наличии 192к ГЗУ там есть рамдиск.
2) ramtop уменьшает на 5 килобайт с 0xC000 (49152) на 0xAC00 (44032)
а это много, есть софт которые по этому поводу расстроится
из них шрифт 6x10 занимает 2560 байт
3) самая медленная из существующих реализаций
т.к. у нее один шрифт и она каждый раз сдвигает 6битный символ сдвигами
так-же т.к. реализован цветной режим, для вывода используется 2 битплоскости, то и скролит она 2 плоскости, что явно не добавляет ей скорости.
из прикольных штук
1) курсор у нее в виде блока, и живет в отдельном слое
т.е. он видимый и не мешает обычному выводу
2) есть дополнительные коды вкл/выкл подчёркивание
1BH,'4' _UNDERSCORE_ON
1BH,'5' _UNDERSCORE_OFF
3) есть дополнительные коды задаюшие цвет foregraund/background
1BH,'8',Color _SET_FOREGROUND_COLOR (color 0..3 2 младших бита)
1BH,'9',Color _SET_BACKGROUND_COLOR (color 0..3 2 младших бита)
0 - черный
1 - синий
2 - красный
3 - белый
по умолчанию белый на черном
4) есть два режима 80x24/80x23
1BH,'2' вместо => Включение нормальной ширины символов
устанавливает 80x25
1BH,'3' вместо => Включение удвоенной ширины символов
устанавливает 80x24
в РОМ это переключение 32/64 символа в строке
5) похоже шрифт у нее именно 8x10 а не 8x8 как в cp/m
и используется в некоторых символах,
http://zx-pk.ru/attachment.php?attachmentid=51558&d=1426898773
6) есть функции для загрузки символов в знакогенератор
---
из приятного - она нормально работает с EXTROM ибо не затирает драйвер
сконфигурил под него catchum & ladder - работают
попробовал сконфигурировать SuperCalc - заработал
---
размышление на тему
в теории можно было бы открутить от нее цвет (ибо нафиг он не нужен)
сделать оптимизации по скорости как в CP/M
(4 сдвинутых знакогенератора в ГЗУ, оптимизированный вывод)
и дописать удаления
НО код и так там уже порядка 2К против 800 байт в CP/M
и оно не нужно особо ;)
---
в аттаче выдраный исходник, но я его не компилировал,
просто экспортил из иды и отрезал лишнее.
вытянул "исходники" из всех 3х драйверов
кому интересно - в аттаче вместе с базами.
там исходнику
25.com (точнее кусочки, загрузчик, кусок кода биоса ибо в самом 25.com там биос целеком)
screen.com для ученического корнета
основан на 25.com но только привязан к конкретному биосу
и содержит резедент которые кидается на F800
ну и для кучи grscr.com
Powered by vBulletin® Version 4.2.5 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot