PDA

Просмотр полной версии : Корвет : Режим 80x25



esl
17.03.2015, 15:49
Софт для 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

esl
17.03.2015, 21:08
Оборвался на полуслове, продолжим.

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 в сравнении со стандартным драйвером
(тест опишу ниже)

esl
20.03.2015, 12:45
МИКРОДОС
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
и оно не нужно особо ;)


---

в аттаче выдраный исходник, но я его не компилировал,
просто экспортил из иды и отрезал лишнее.

esl
23.03.2015, 01:58
вытянул "исходники" из всех 3х драйверов
кому интересно - в аттаче вместе с базами.

там исходнику
25.com (точнее кусочки, загрузчик, кусок кода биоса ибо в самом 25.com там биос целеком)
screen.com для ученического корнета
основан на 25.com но только привязан к конкретному биосу
и содержит резедент которые кидается на F800

ну и для кучи grscr.com