МИКРОДОС
GRSCR.COM
это несколько более интересно.
ибо в нем эмулируется почти полный сет управляющих символов как в ром
за исключением кодов котрые удаляют строки/символы
Скрытый текст
Код:
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
и используется в некоторых символах,
6) есть функции для загрузки символов в знакогенератор
---
из приятного - она нормально работает с EXTROM ибо не затирает драйвер
сконфигурил под него catchum & ladder - работают
попробовал сконфигурировать SuperCalc - заработал
---
размышление на тему
в теории можно было бы открутить от нее цвет (ибо нафиг он не нужен)
сделать оптимизации по скорости как в CP/M
(4 сдвинутых знакогенератора в ГЗУ, оптимизированный вывод)
и дописать удаления
НО код и так там уже порядка 2К против 800 байт в CP/M
и оно не нужно особо
---
в аттаче выдраный исходник, но я его не компилировал,
просто экспортил из иды и отрезал лишнее.