M2.0 - основной монитор на Орион-128

Установка основного монитора М2 в Орион, описание встроенных функций

Продаю платы и наборы микросхем, куплю микросхемы Платы и комплектующие на ПК Орион-128

Стандарты ПО, адресов и портов

Организация экранной области Ориона-128

Описание Монитора 3.1

Программа МОНИТОР[1] (назовем ее МОНИТОР-1) предназначена, практически, только для отладочных целей при построении компьютера, а также первых (ознакомительных) шагов в его освоении. Мы надеемся, что этот этап у читателя закончился благополучно и предлагаем теперь заменить программу МОНИТОР, записанную в ППЗУ (DD22) на основной МОНИТОР (МОНИТОР-2), коды которого приведены в табл.1, а контрольные суммы блоков - в табл.2. (Внимание данный дамп не проверен), проверенная прошивка ниже, ее можите скачать.

0000   C3 42 F8 C3 C6 F3 C3 CD F9 C3 CC F3 C3 53 FA C3   *.B...........S..*
0010   34 FC C3 78 FA C3 1C F9 C3 37 F9 C3 EE FA C3 63   *4..э.....7.....ж*
0020   F9 C3 C9 F3 C3 7F F9 C3 36 F9 C3 41 F9 C3 EF F8   *.......6..A....*
0030   C3 6E F9 C3 6B F9 C3 78 F9 C3 72 F9 C3 5C F9 C3   *.м..й..э..п..\..*
0040   C3 F3 31 C0 F3 AF D3 F8 D3 F9 D3 FA 32 D3 F3 32   *..1.........2..2*
0050   D4 F3 32 DE F3 3E C3 32 C6 F3 32 C9 F3 32 CC F3   *..2..>.2..2..2..*
0060   32 C3 F3 21 40 60 22 DA F3 CD C8 F8 31 C0 F3 3E   *2..!@ч".....1..>*
0070   8A 32 03 F4 3E 55 32 E7 F3 21 6C F8 22 D8 F3 AF   *.2..>U2..!к."...*
0080   32 E5 F3 67 6F 3E 90 32 03 F5 CD C1 F8 4F 23 CD   *2..цн>.2.....O#.*
0090   C1 F8 B9 C2 AD F8 21 A6 F8 CD 37 F9 CD 84 FA CD   *......!...7.....*
00A0   7F F9 C2 96 F8 E9 1F 77 77 6F 64 3F 00 21 FF 07   *......ббнд?.!..*
00B0   11 FF BF CD C1 F8 12 1B 2B 7C B7 F2 B3 F8 C3 FD   *........+щ......*
00C0   BF 22 01 F5 3A 00 F5 C9 21 C0 30 22 CF F3 21 00   *."..:...!.0"..!.*
00D0   F0 22 D1 F3 21 37 FC 22 CD F3 22 E1 F3 21 36 F9   *."..!7.".."..!6.*
00E0   22 CA F3 21 84 FA 22 C7 F3 21 33 FE 22 C4 F3 11   *"..!.."..!3."...*
00F0   4A FE 2A D1 F3 0E 07 AF 77 23 1A 07 07 07 E6 07   *J.*.....б#......*
0100   47 1A E6 1F 77 23 0D 78 A7 CA 10 F9 05 C3 01 F9   *G...б#.э........*
0110   13 7A A7 C8 79 A7 C2 FA F8 C3 F5 F8 F5 0F 0F 0F   *.г..ш...........*
0120   0F CD 25 F9 F1 E6 0F FE 0A FA 2E F9 C6 07 C6 30   *..%............0*
0130   C5 4F CD 09 F8 C1 C9 7E A7 C8 CD 30 F9 23 C3 37   *.O.....в...0.#.7*
0140   F9 01 00 00 79 86 4F F5 CD 56 F9 CA 76 FA F1 78   *....ш.O..V..ф..э*
0150   8E 47 23 C3 44 F9 7C BA C0 7D BB C9 7D 07 07 6F   *.G#.D.щ..ы..ы..н*
0160   22 D6 F3 2A D6 F3 7D 0F 0F 6F C9 22 E3 F3 2A E3   *"..*..ы..н."..*.*
0170   F3 C9 D3 F9 71 C3 7B F9 D3 F9 4E AF D3 F9 C9 3E   *....ъ.ь...N....>*
0180   FF CD B4 F9 22 EE F3 EB CD B2 F9 EB E5 CD CB F9   *...."...........*
0190   77 CD 56 F9 23 C2 8D F9 CD CB F9 CD B2 F9 CD B2   *б.V.#...........*
01A0   F9 44 4D E1 C5 CD 41 F9 D1 60 69 CD 56 F9 2A EE   *.DM...A..чх.V.*.*
01B0   F3 C9 3E 08 CD CD F9 67 CD CB F9 6F C9 3A DA F3   *..>....ц...н.:..*
01C0   C3 C6 F9 3A DB F3 3D C2 C6 F9 C9 3E 08 C5 D5 E5   *...:..=....>....*
01D0   0E 00 57 CD 45 FA 5F 00 00 00 00 79 E6 7F 07 4F   *..W.E._....ш..O*
01E0   00 06 00 05 C2 F3 F9 00 00 00 00 00 00 00 00 00   *................*
01F0   C3 4F FA CD 45 FA BB CA E3 F9 00 B1 4F CD C3 F9   *.O..E.......O...*
0200   CD 45 FA 5F B2 F2 39 FA 00 00 00 00 00 00 00 00   *.E._..9.........*
0210   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   *................*
0220   00 00 00 00 00 00 00 3E E6 91 CA 34 FA 3E 19 91   *.......>...4.>..*
0230   C2 DB F9 2F 32 DC F3 16 09 15 C2 DB F9 3A DC F3   *.../2........:..*
0240   A9 E1 D1 C1 C9 3A 02 F4 0F 0F 0F 0F E6 01 C9 2A   *.....:.........**
0250   D8 F3 E9 F5 C5 06 08 00 00 00 00 00 79 07 4F 3E   *............ш.O>*
0260   01 A9 32 02 F4 CD BD F9 3E 00 A9 32 02 F4 CD BD   *..2.....>..2....*
0270   F9 05 C2 5C FA C1 F1 C9 AF 32 00 F4 3A 01 F4 3C   *...\.....2..:..<*
0280   C8 3E FF C9 C5 D5 E5 CD EE FA FE FF C2 92 FA 32   *.>.............2*
0290   E6 F3 16 00 13 1D 1C CC 72 FD CD EE FA 3C CA 94   *........п....<..*
02A0   FA F5 7A 0F D4 72 FD F1 3D F2 CE FA 11 40 55 21   *..г..п..=....@U!*
02B0   E5 F3 7E 2F 77 32 02 F4 A7 7A CA BE FA 7B 32 E7   *..в/б2...г...ь2.*
02C0   F3 CD EE FA 3C C2 C1 FA CD 72 FD C3 92 FA 5F 16   *....<....п...._.*
02D0   14 21 E6 F3 BE CA E3 FA 15 CA E3 FA CD EE FA BB   *.!..............*
02E0   CA D8 FA CD 3F F8 73 CD 72 FD 7B C3 00 FD C5 D5   *....?.я.п.ь.....*
02F0   E5 21 00 FD E5 06 00 16 09 0E FE 79 32 00 F4 07   *.!.........ш2...*
0300   4F 3A 01 F4 FE FF CA 1A FB 5F 21 00 06 2B 7C B5   *O:......._!..+щ.*
0310   C2 0D FB 3A 01 F4 BB CA 2D FB 78 C6 08 47 15 C2   *...:....-.э..G..*
0320   FB FA 3A 02 F4 E6 80 3E FE C8 3C C9 04 1F DA 2C   *..:....>..<....,*
0330   FB 78 E6 3F FE 10 DA 97 FB FE 3F 47 3E 20 C8 3A   *.э.?......?G> .:*
0340   02 F4 4F E6 40 C2 4C FB 78 E6 1F C9 3A E5 F3 A7   *..O.@.L.э...:...*
0350   C2 7B FB 79 E6 20 78 CA 67 FB FE 1C FA 73 FB FE   *.ь.ш. э.ц....я..*
0360   20 FA 75 FB C3 73 FB FE 1C DA 75 FB FE 20 DA 73   * .с..я....с.. .я*
0370   FB C6 20 C6 10 C6 10 E1 C3 00 FD 79 E6 20 78 CA   *.. ........ш. э.*
0380   8F FB FE 1C FA 73 FB FE 20 FA 75 FB C3 71 FB FE   *.....я.. .с..ъ..*
0390   1C FA 75 FB C3 73 FB 21 A0 FB 4F 06 00 09 7E C9   *..с..я.!..O...в.*
03A0   0C 1F 1B 00 01 02 03 04 09 0A 0D 7F 08 19 18 1A   *...............*
03B0   00 00 00 00 00 00 00 00 00 00 00 00 00 00 40 00   *..............@.*
03C0   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   *................*
03D0   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   *................*
03E0   00 00 00 00 00 00 00 80 00 80 00 00 00 00 00 80   *................*
03F0   00 40 00 40 00 00 00 00 00 00 00 40 00 40 00 00   *.@.@.......@.@..*
0400   00 00 00 00 00 00 00 00 00 00 00 40 00 00 00 00   *...........@....*
0410   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   *................*
0420   00 00 00 00 00 00 80 00 00 00 00 00 00 00 00 00   *................*
0430   00 00 00 00 C5 4F 06 C5 D5 E5 F5 79 FE 1B 3E F0   *.....O.....ш..>.*
0440   CA 8A FD 3A DE F3 A7 C2 90 FD 79 FE 7F C2 5A FC   *...:......ш..Z.*
0450   3A D3 F3 2F 32 D3 F3 C3 FF FC 26 20 94 DA A4 FC   *:../2.....& ....*
0460   6F 29 29 29 EB 2A D1 F3 19 EB CD 44 FD EB 3E 16   *н))).*.....D..>.*
0470   F5 E5 3A D3 F3 AE E6 3F 6F 3A DD F3 3D 26 00 29   *..:....?н:..=&.)*
0480   29 3C C2 7F FC EB 78 AE A6 B2 77 24 79 AE A6 B3   *)<...э...б$ш...*
0490   77 25 2C EB E1 23 F1 D6 03 F2 70 FC 21 05 FD FE   *б%,..#....о.!...*
04A0   F8 C2 70 FC 2A D6 F3 CD 04 FD 09 7C FE 19 DA FC   *..о.*......щ....*
04B0   FC C2 FA FC 14 62 CA FC FC E5 21 00 00 39 22 DF   *.....а....!..9".*
04C0   F3 3A D0 F3 47 3A CF F3 67 3A D4 F3 6F CD 6A FD   *.:..G:..ц:..н.и.*
04D0   4F 79 C6 0A 6F F9 69 3E F0 D1 73 2C 72 2C D1 73   *Oш..н.х>..я,п,.я*
04E0   2C 72 2C BD D2 D9 FC 3A D3 F3 33 77 2C C2 EA FC   *,п,....:..3б,...*
04F0   24 05 C2 D1 FC 2A DF F3 F9 E1 26 18 22 D6 F3 F1   *$....*....&."...*
0500   E1 D1 C1 C9 01 00 01 51 3C CC EC FD CA 3F FD FE   *.......Q<....?..*
0510   EB C8 15 C6 05 C8 14 06 FF 3C C8 0E FC FE EF C8   *.........<......*
0520   01 00 00 FE F0 C2 2F FD 7D E6 E0 C6 20 6F C9 0E   *....../.ы... н..*
0530   04 3C C8 FE EF CA 3F F8 C6 0B CA 40 FD 3C C0 62   *.<....?....@.<.а*
0540   6A 42 4A C9 2A D6 F3 7D 0F 6F 0F 85 47 6C 3A CF   *иBJ.*..ы.н..Gк:.*
0550   F3 67 78 25 24 D6 04 D2 54 FD 32 DD F3 E5 21 FC   *.цэ%$...T.2...!.*
0560   00 29 29 3C C2 61 FD 44 4D E1 7D 07 07 07 85 85   *.))<.ю.DM.ы.....*
0570   6F C9 CD 44 FD C6 09 6F 78 AE 77 24 79 AE 77 25   *н..D...нэ.б$ш.б%*
0580   C9 79 FE 59 C2 9E FD 3E 02 B0 32 DE F3 C3 FF FC   *.ш.Y...>..2.....*
0590   47 E6 03 CA 81 FD 3D CA D3 FD 3D CA E1 FD AF 32   *G.....=...=....2*
05A0   DE F3 79 FE 4A CA F6 FD FE 4B CA 1E FE 21 4A FC   *..ш.J....K...!J.*
05B0   E5 0E 18 FE 43 C8 0C FE 41 C8 0C FE 42 C8 0E 08   *....C...A...B...*
05C0   FE 44 C8 0E 0C FE 48 C8 0E 1F FE 45 C8 B9 C8 E1   *.D....H....E....*
05D0   C3 FF FC 79 D6 20 07 07 E6 FC 32 D6 F3 AF C3 8A   *...ш. ....2.....*
05E0   FD 79 D6 20 32 D7 F3 3E F1 C3 8A FD C5 D5 E5 F5   *.ш. 2..>........*
05F0   3A D4 F3 C3 FA FD 3A D7 F3 3C FE 19 D2 FF FC 6F   *:.....:..<.....н*
0600   CD 6A FD 4F 3A CF F3 67 3A D0 F3 47 25 24 69 3A   *.и.O:..ц:..G%$х:*
0610   D3 F3 77 2C C2 12 FE 05 C2 0D FE C3 FF FC 2A D6   *..б,..........*.*
0620   F3 E5 45 0E 20 CD 37 FC 3E 04 80 47 C2 25 FE E1   *..E. .7.>..G.%..*
0630   C3 FC FC 0E 15 3A E7 F3 FB 3D C2 38 FE 3A E7 F3   *.....:...=.8.:..*
0640   F3 3D C2 40 FE 0D C2 35 FE C9 C0 84 00 04 4A 60   *.=.@...5......Jч*
0650   2A 1F 0A 1F 2A 11 0E 51 0E 11 18 19 02 04 08 13   **...*..Q........*
0660   03 04 2A 0C 15 12 0D 26 02 04 40 02 04 48 04 02   *..*....&..@..H..*
0670   08 04 42 04 08 00 04 15 0E 15 04 00 00 24 1F 24   *..B..........$.$*
0680   00 40 2C 04 08 40 1F 40 80 2C 00 01 02 04 08 10   *.@,..@.@.,......*
0690   00 0E 11 13 15 19 11 0E 04 0C 64 0E 0E 11 01 06   *..........д.....*
06A0   08 10 1F 1F 01 02 06 01 11 0E 02 06 0A 12 1F 22   *..............."*
06B0   1F 10 1E 21 11 0E 07 08 10 1E 31 0E 1F 01 02 04   *...!......1.....*
06C0   48 0E 31 0E 31 0E 0E 31 0F 01 02 1C 00 2C 20 2C   *H.1.1..1....., ,*
06D0   2C 00 2C 04 08 02 04 08 10 08 04 02 20 1F 00 1F   *,.,......... ...*
06E0   20 08 04 02 01 02 04 08 0E 11 01 02 04 00 04 0E   * ...............*
06F0   11 13 15 17 10 0E 04 0A 31 1F 31 1E 31 1E 31 1E   *........1.1.1.1.*
0700   0E 11 50 11 0E 1E 89 1E 1F 30 1E 30 1F 1F 30 1E   *..P......0.0..0.*
0710   50 0E 11 30 13 11 0F 51 1F 51 0E 84 0E 61 31 0E   *P..0...Q.Q...ю1.*
0720   11 12 14 18 14 12 11 90 11 1F 11 1B 35 51 31 19   *............5Q1.*
0730   15 13 31 0E 91 0E 1E 31 1E 50 0E 51 15 12 0D 1E   *..1....1.P.Q....*
0740   31 1E 14 12 11 0E 11 10 0E 01 11 0E 1F A4 B1 0E   *1...............*
0750   51 2A 24 51 55 0A 31 0A 04 0A 31 31 0A 64 1F 01   *Q*$QU.1...11.д..*
0760   02 0E 08 10 1F 0E 88 0E 00 10 08 04 02 01 00 0E   *................*
0770   82 0E 0E 11 80 A0 1F 12 35 1D 35 12 04 0A 31 1F   *........5.5...1.*
0780   31 1F 30 1E 31 1E 92 1F 01 06 6A 1F 11 1F 30 1E   *1.0.1.....и...0.*
0790   30 1F 04 1F 35 1F 24 1F 11 90 31 0A 04 0A 31 31   *0...5.$...1...11*
07A0   13 15 19 31 15 11 13 15 19 31 11 12 14 18 14 12   *...1.....1......*
07B0   11 07 89 19 11 1B 35 51 51 1F 51 0E 91 0E 1F B1   *......5QQ.Q.....*
07C0   0F 31 0F 05 09 11 1E 31 1E 50 0E 11 50 11 0E 1F   *.1.....1.P..P...*
07D0   A4 51 0A 04 08 10 11 35 0E 35 11 1E 31 1E 31 1E   *.Q.....5.5..1.1.*
07E0   50 1E 31 1E 51 19 35 19 0E 11 01 06 01 11 0E 11   *P.1.Q.5.........*
07F0   95 1F 0E 11 01 07 01 11 0E 95 1F 01 51 1F 41 52   *............Q.AR*

Скачать прошивку можно здесь...

Таблица 2.
0000 - 00FF E853
0100 - 01FF C72E
0200 - 02FF 48CF
0300 - 03FF FB9B
0400 - 04FF 1A93
0500 - 05FF 0885
0600 - 06FF D9BE
0700 - 07FF C6F3

Необходимость такого "ступенчатого" освоения компьютера продиктована тем, что МОНИТОР-2 не имеет в своем составе никаких средств, позволяющих хотя бы приблизительно определить неисправность компьютера. На начальном этапе отладки и освоения компьютера действительно были необходимы такие операции, как просмотр и модификация ячеек памяти, возможность ручного переключения экранных режимов дисплея, проверка правильного функционирования клавиатуры, проверка канала чтения/записи на магнитофон. Именно для этих целей и был разработан МОНИТОР-1, хотя с самого начала подразумевалось, что диалог пользователь-компьютер должен осуществлять не МОНИТОР, а операционная система (ОС). МОНИТОР же при этом должен представлять собой набор драйверов, обслуживающих аппаратную часть и иметь загрузчик первоначального ("холодного") запуска операционной системы при включении компьютера. Естественно, что совмещение в одном двухкилобайтном ППЗУ функций управления и набора системных драйверов (и к тому же еще знакогенератора) невозможно без значительного упрощения "МОНИТОРА".

Теперь же наступило время разделить эти функции так, как это делается в большинстве современных систем: основное ППЗУ будет выполнять функции мощного драйвера аппаратных средств, а диалог с пользователем станет поддерживать операционная система. На низовом уровне это ОС ORDOS. Она предназначена как для профессионалов, так и для начинающих пользователей - тех, кто только входит в мир операционных систем.  Для запуска ОР ДОС необходим РОМ ДИСК.

В среде ORDOS возможно решение широкого круга прикладных задач в без дисковом варианте ПРК "Орион-128".

На более высоком уровне - ОС СР/М-80. Эта операционная система может быть адаптирована в двух вариантах: с использованием в качестве внешней памяти внутреннего квазидиска (второй страницы памяти) или накопителя на гибких магнитных дисках, правда, во втором случае необходимо еще дополнительное устройство - плата контроллера дисковода.

Во всех случаях при работе с ОС (независимо от уровня) "МОНИТОР" должен выполнять роль (или же дополнять) BIOS (базовая система ввода-вывода), а также содержать первоначальный ("холодный") загрузчик операционной системы или другой программы, поддерживающей диалог с пользователем.

МОНИТОР-2 занимает в ПЗУ 2 Кбайта и устанавливается в ПРК вместо МОНИТОРА-1. При включении компьютера или нажатии кнопки "СБРОС" МОНИТОР-2 производит инициализацию портов, служебных ячеек, распаковку знакогенератора и другие служебные операции, а затем проверяет, подключен ли ROM-диск к порту 0F500H (ХЗ). Если он не подключен, то экран дисплея очищается и в его верхнем левом углу выводится сообщение - "ввод?", свидетельствующее о том, что МОНИТОР-2 готов к вводу программы с магнитной ленты.

Считанная информация размещается по адресам, записанным на магнитной ленте. Если контрольная сумма совпадает, то управление передается в начальный адрес считанной программы, т. е. производится ее самозапуск. При обнаружении ошибки считывания - сообщение "ввод?" выводится повторно: - МОНИТОР готов к повторному вводу.

На программном уровне МОНИТОР-2 полностью совместим (снизу вверх) с программой МОНИТОР-1, т. е. все программы, рассчитанные на работу с МОНИТОРОМ-1, будут работать и с МОНИТОРОМ-2, но не наоборот. Разумеется, это справедливо только в том случае, если программы пользователя обращаются корректно к стандартным подпрограммам через таблицу, расположенную в начальных адресах монитора, а также используют служебные ячейки) объявленные авторами в [1]. Добавим, что программы, которые мы предполагаем публиковать впредь будут, в основном, работать при наличии МОНИТОРА-2. Это вызвано тем, что МОНИТОР-1 (из-за упрощений) не может обеспечить их функционирование. О том, что программа может работать только с одним монитором, мы будем предупреждать читателя.

Таблица входов в стандартные подпрограммы нового МОНИТОРА почти полностью совпадает с той, что приведена в [1], поэтому нет необходимости приводить ее полностью. Расскажем только о дополнениях и изменениях.

Так как загрузчики ОС содержат свои необходимые драйверы для записи файлов на магнитную ленту, из таблицы исключена функция по адресу 0F827H - "запись файла (массива) на магнитофон" и вход заблокирован командой RET.

Вход 0F821H (ранее не использовался) определен как универсальный, программно переключаемый вход в программы-драйверы пользователя. В исходном состоянии заблокирован командой RET. Использовать этот вход можно для работы с драйвером печатающего устройства, однако этим его применение не ограничивается. В дальнейшем мы расскажем, как пользоваться переключаемыми входами.

Дополнительно появился новый вход: 0F83FH - подпрограмма генерирования звукового сигнала. Эта подпрограмма не имеет входных параметров и формирует звуковой сигнал постоянной длительности. "Высоту" сигнала можно изменять, если его значение записывать в служебную ячейку по адресу 0F3E7H.

Особенностью построения таблицы МОНИТОРА-2 является возможность подмены некоторых внутренних драйверов периферийных устройств внешними. Такое переключение можно производить с помощью программных переключателей. Для переключения доступны драйверы клавиатуры (OF803H), дисплея (OF809H), формирователя звукового сигнала (0F83FH) и универсальный вход в программы-драйверы пользователя (0F821H).

Пользователь может написать свой драйвер для обслуживания выше перечисленных устройств и переключить на пего управление, при этом вход в программу будет оставаться прежним, стандартным. Такое переключение на "подставной" драйвер осуществляется занесением адреса входа нового драйвера в специальную ячейку-ключ. Адреса ячеек-ключей для выше означенных драйверов следующие:

клавиатура - 0F3C7-0F3C8H,
дисплей - 0F3CD-0F3CEH,
формирователь звукового сигнала - 0F3C4-0F3C5H,
универсальный вход - 0F3CA-0F3CBH.
Приведем примеры. Допустим, вы написали свой драйвер дисплея, который выполняет другие функции, чем имеющиеся в МОНИТОРЕ-2. Желательно такой драйвер (как и все сменные драйверы) разместить в области 0А800Н - 0AFFFH. Это исключит возможные конфликты с загружаемыми командами операционной системой. Чтобы к этому драйверу можно было обращаться из программ пользователя по стандартному адресу - 0F809H, необходимо адрес входа в ваш драйвер занести в ячейки 0F3CD-0F3CEH. Естественно, теперь по адресу 0F809H внутренний драйвер монитора уже будет недоступен, поэтому для такой ситуации имеется второй вход в драйвер дисплея монитора - 0F80FH (напомним, выводимый символ находится в регистре "А"). Такой подход позволяет работать одновременно с двумя драйверами дисплея.

Подобным образом можно поступить и с драйвером клавиатуры, подменив его, например, программой, обслуживающей джойстик и формирующей коды управления курсором. Это позволит игровые программы, работающие с клавиатурой, перевести на управление джойстиком, не меняя ничего в самой программе игры. Адрес входа в драйвер джойстика необходимо занести в ячейки 0F3CA- 0F3CBH.

Относительно третьего драйвера мы ограничимся лишь замечанием, оставив придумывать варианты читателю. Внутренний драйвер формирования звука очень упрощен и рассчитан на обслуживание клавиатуры. Формировать с его помощью серьезные фонограммы нельзя, поэтому и предусмотрена возможность его подмены.

Что касается универсального входа в программы-драйверы пользователя, то он не имеет специального определения в назначении и используется для служебных целей в программах, где необходимо через один вход (стандартный) обращаться к своим подпрограммам-драйверам. Переключение производится через ячейку-ключ. Возможен, например, такой вариант: вы написали драйвер вывода символа (или строки символов) на печатающее устройство, которым располагаете. Нет необходимости этот драйвер "прицеплять" к каждой прикладной программе, в том числе и к БЕЙСИКУ, РЕДАКТОРУ, АССЕМБЛЕРУ и другим программам. Достаточно разместить его в свободной области памяти (желательно 0А800- 0AFFFH) и через ячейку-ключ переключить на него управление. Теперь все программы будут обращаться к драйверу печати по одному адресу - 0F821H. Такой подход позволяет не специализировать прикладные программы под один тип принтера.

Вернемся к драйверу дисплея. Его функциональные возможности значительно расширены. Мы уже говорили о том, что драйвер дисплея игнорирует символы с кодами 00-1FH, вернее интерпретирует их как пробел. Исключение составляют коды управления работой дисплея:

08Н - перемещение курсора на одну позицию влево.
09Н - горизонтальная табуляция. Установка курсора в ближайшую позицию в строке, кратную четырем.
0АН - перемещение курсора вниз на одну строку в той же позиции. Если такой переход происходит в самой нижней строке, то включается режим "Скроллинг" (смещение всего изображения экрана на одну строку вверх).
0СН - установка курсора в левый верхний угол экрана.
0DH - установка курсора в первую позицию строки.
18Н-перемещение курсора на одну позицию вправо.
19Н - перемещение курсора на одну позицию вверх.
1АН - перемещение курсора на одну позицию вниз.
1FH - стирание экрана, курсор установить в верхний левый угол.
7FH - переключение вывода символов на экран дисплея в инверсном виде (белый фон, черные символы). Выключение - повторный ввод кода 7FH.

МОНИТОР-2 имеет расширенный набор функций, вызываемых с помощью управляющего кода 1ВН (АР2). В программе МОНИТОР-1 эти функции отсутствуют:

1ВН+41Н - сместить курсор на одну позицию вверх.
1ВН+42Н - сместить курсор на одну позицию вниз.
1ВН+43Н - сместить курсор на одну позицию вправо.
1ВН+44Н - сместить курсор на одну позицию влево.
1ВН+45Н - стирание экрана.
1ВН+48Н - установить курсор в верхний левый угол.
1BH+4AH - стирание экрана нг, с курсора.
1ВН+4ВН - стирание строки правее курсора.
1BH+59H+(X+20H)+(Y+20H) - установить курсор в позицию Х (номер строки - 0-19Н), Y (номер позиции - 0-3FH).
Драйвер дисплея использует несколько установочных констант, которые хранятся в области служебных ячеек и поэтому доступных для оперативного изменения.

0F3CFH - старший байт адреса начала строки. При инициализации МОНИТОР заносит значение 0С0Н (0С000Н - начальный адрес области ОЗУ экрана №1 ). Если записывать промежуточные значения (0С0-0Е0Н), то будет происходить смещение начала строки вправо. Для включения экранов №2, №3 и №4 заносят (помимо соответствующего кода в системный порт №3) соответственно коды 80Н, 40Н, 00Н. Данная константа влияет на начальную позицию первого символа в строке.

0F3D0H - ширина поля, в котором производятся операции "Скроллинг" и гашение экрана. Исходное значение З0Н, т. е. 48 байт в строке (не символов). Программно сдвигая экран вправо, необходимо пропорционально укорачивать эту константу, в противном случае функции гашение экрана и "Скроллинг" будут "влезать" в служебную область МОНИТОРА (для экрана №1) - поле знакогенератора. На длину символьной строки данная константа не влияет.

0F3D4H - номер строки, с которой действуют функции стирания экрана, а также "Скроллинг". Отсчет ведется от верхней строки. Если в ячейку занести код 05Н, к примеру, то верхние пять строк не будут стираться по коду 1FH (или 1ВН+45Н) и не попадут под действие режима "Скроллинг". Для возврата в исходное состояние, необходимо восстановить начальное значение констант.

Оперируя этими константами, можно оперативно защитить часть экрана от стирания и "Скроллинга", т. е. без дополнительных программных средств имитировать "окно". Однако следует помнить, что изменение констант, а также переключение экранов требуют аккуратного и продуманного порядка действий. Драйвер дисплея не имеет "защиты от дурака", и установка констант, при которых "окно" выйдет за границы дисплейной области ОЗУ, скорее всего приведет к выходу программы из-под контроля.

В заключение следует сказать, что в программе МОНИТОР-2 есть "пустые" места. Это сделано не случайно. Авторы предусмотрели возможность модификации МОНИТОРА под другие типы клавиатур, расширению функциональных возможностей драйвера ввода с магнитофона.

В. СУГОНЯКО, В. САФРОНОВ Московская обл.

ЛИТЕРАТУРА

Сугоняко, В. Сафронов, К. Коненков. Персональный радиолюбительский компьютер "Орион-128". Программное обеспечение. - Радио, 1990, № 2, с. 46.

 

Купить платы, наборы микросхем на Орион-128, КР565РУ5В, КР565ру7В, к565ру5г AU, к565ру7г Au в позолоте, куплю микросхемы

 

Полезные и интересные статьи

На предыдущую страницу  На главную страницу  На следующую страницу