
Сообщение от
HardWareMan
Я, пожалуй, начну с BIOSа. И так понятно, что это ответственная часть. В самом BIOSе всего несколько ключевых подпрограмм. И начну я с вывода символа.
Вывод символа будет стандартный для Спеца (для поддержки совместимости): 64х25, даже координатная сетка будет та же.
Будет ли Монитор иметь константы в ОЗУ, описывающие геометрию экрана (как в Орионе) - на Орионе это позволяло уменьшать "область экрана драйвера" (вводить служебные строки, не попадающие под искейп-обработку)?

Сообщение от
HardWareMan
3. Поддержка ESC кодов. Вообще, весь сервис планируется именно через ESC последовательности. Во первых, они стандартны (вроде как), а во вторых - можно придумать много своих, не теряя в совместимости со старыми программами.
Пошерстил журнальчики про Орион, 86РК и Спец и нарыл следующие управляющие коды, которые будет поддерживаться моим выводом символа:
Я правильно понял, будешь идти по возможности близко к стандартам VT-52?
Вот результат моих исследований:
Код:
VT52 compliant codes
====================
Orion Monitor-2 Orion CPM (ACPM) MYZ80 CPM.EXE
--------------- ---------------- -------------
01h ------------ ------------ HOME
04h ------------ ------------ CLS+HOME
07h BELL BELL BELL
+ 08h cursor LEFT cursor LEFT BACKSPACE
+ 09h TAB TAB TAB
+ 0Ah LF LF LF
0Bh ------------ ------------ cursor UP
0Ch HOME ------------ CLS
+ 0Dh CR CR CR
18h cursor RIGHT cursor RIGHT CLREOLN
19h cursor UP cursor UP -----------
1Ah cursor DOWN cursor DOWN CLS+HOME
1Eh ------------ ------------ HOME
+ 1Fh CLS+HOME CLS+HOME CR+LF
+ 7Fh INVERSE ------------ -----------
+ 1Bh+34h='4' ------------ LineWrap ON -----------
+ 1Bh+35h='5' ------------ LineWrap OFF -----------
+ 1Bh+36h='6' ------------ Inverse ON -----------
+ 1Bh+37h='7' ------------ Inverse OFF -----------
1Bh+3Ah=':' ------------ cursor ON CLS
1Bh+3Bh=';' ------------ cursor OFF CLS
+ 1Bh+41h='A' cursor UP cursor UP cursor UP
+ 1Bh+42h='B' cursor DOWN cursor DOWN cursor DOWN
+ 1Bh+43h='C' cursor RIGHT cursor RIGHT cursor RIGHT
+ 1Bh+44h='D' cursor LEFT cursor LEFT cursor LEFT
+ 1Bh+45h='E' CLS CLS CLS+HOME
+ 1Bh+48h='H' HOME HOME HOME
1Bh+49h='I' ------------ set/get ActiveScreen reverse LineFeed
+ 1Bh+4Ah='J' CLRREOSCR CLRREOSCR CLRREOSCR
+ 1Bh+4Bh='K' CLREOLN CLREOLN CLREOLN
1Bh+4Ah='L' ------------ INSROW INSROW
1Bh+4Bh='M' ------------ DELROW DELROW
1Bh+52h='R' ------------ set cursor height DELROW
+ 1Bh+59h='Y'+X+Y cursor position cursor position cursor position
1Bh+64h='d' ------------ ----------- CLRBOSCR
1Bh+65h='e' [ ------------ ----------- cursor ON
1Bh+66h='f' ------------ ----------- cursor OFF
1Bh+6Ah='j' ------------ ----------- save cursor
1Bh+6Bh='k' ------------ ----------- restore cursor position
1Bh+6Ch='l' ------------ ----------- clear line
1Bh+6Fh='o' ------------ ----------- CLRBOLN
1Bh+70h='p' ------------ ----------- Inverse ON
1Bh+71h='q' ------------ ----------- Inverse OFF
1Bh+76h='v' ------------ ----------- line wrap on
1Bh+77h='w' ------------ ----------- line wrap off
Коды помеченные "+" должны быть реализованы обязательно в минимальном наборе (т.е. вместе с другими, возможно не только они).
Использование только "+"-помеченных кодов позволило мне написать коммандер (исходники на сайте) работающий не только как в "классическом" MS-DOS эмуляторе CP/M, так и на всех VT-52 версиях CP/M Ориона. Кроме того, этот коммандер корректно отображается в RS-232 терминальных клиентах, понимающих VT52 (например стандартном виндовозном HyperTerm). Этот результат на Орионе больше не одним псевдографическим коммандером не достигнут - все прочие рисуют по RS-232 кашу даже при включенной эмуляции VT52.

Сообщение от
HardWareMan
Так же, будет введен код управления направления автосмещения. По умолчанию, это курсор вправо. Но можно будет задавать вверх, вниз, влево и даже отменять автоматическое перемещение. Это позволит быстро рисовать всяческие рамки.

Давайте обсудим это и я примусь за реализацию.
Файл во вложении - описание Esc-последовательностей драйвера ACPM Ориона. Оконные функции реализовывались через коды расширенного драйвера VT-52 Ориона - последовательностью Esc+W (и не только: стандартные ESC,'L' , ESC,'M' внутри окна дают вертикальный скроллинг содержимого окна вверх/вниз). Esc-W в Орионе реализовано не совместимо с "оконными" искейпами эмулятора MyZ80, но оконные Esc-расширения стандарта VT-52 и не прижились в "стандартных" CP/M приложениях - не используются почти нигде, и как бы это помягче сказать - вообще "недостандартизованы" (неполны, неудобны, не совпадают от мануала к мануалу).

Сообщение от
HardWareMan
Ах да, сам вывод символа будет запускаться из ПЗУ и сам фонт так же будет находиться в ПЗУ. Как в стандарте, так и в МХе.
Будут ли векторизированы в ОЗУ подпрограммы Монитора, адрес фонта в некоторой ячейке и т.д.? Это даст подключать пользовательские драйвера и фонты... Например для CР/M, 64х25 - это мало, неудобно. Иногда надо 64х24, и почти всегда надо 80х25, т.е. по любому в CP/М придется подгружаемый драйвер иметь.