Специалист/Техническая информация: различия между версиями
| Panther (обсуждение | вклад)  (http://www.emu80.org/dev/dev_s.html) | Barsik (обсуждение | вклад)  м (мелкие уточнения) | ||
| Строка 1: | Строка 1: | ||
| {{ДИ|Источник=http://www.emu80.org/dev/dev_s.html}} | {{ДИ|Источник=http://www.emu80.org/dev/dev_s.html}} | ||
| ==  | == Карта памяти == | ||
| <PRE> | <PRE> | ||
| 0000-8FFF - ОЗУ | 0000-8FFF - ОЗУ | ||
| 9000-BFFF - Видео-ОЗУ | 9000-BFFF - Видео-ОЗУ | ||
| C000-C7FF - ПЗУ  | C000-C7FF - ПЗУ (Загрузчик Волкова/Зверкова) | ||
| C800- | C800-CFFF - ПЗУ (Монитор Орлова) | ||
| F000-F7FF -  | D000-EFFF - может стоять ПЗУ пользователя | ||
| F800-FFFF -  | F000-F7FF - ППА пользователя (есть не на всех платах) | ||
| F800-FFFF - ППА клавиатуры | |||
| </PRE> | </PRE> | ||
| == Структура видео-ОЗУ == | == Структура видео-ОЗУ == | ||
| Экранная область имеет разрешение 384x256 в черно-белом режиме. | Экранная область имеет разрешение 384x256 в черно-белом режиме. Байт по адресу 9000H представляет 8 первых точек в первой строке экрана. Байт по адресу 9001H — 8 первых точек во второй строке, а байт | ||
| Байт по адресу 9000H представляет 8 первых точек в первой строке | по адресу 9100h — точки с 8 по 16 в первой строке и т. д. Старшие биты располагаются слева. Бит, установленный в 1 — светлая точка. По формату экрана есть совместимость с ОРИОНОМ-128. Наличие внешней платы адаптера цвета позволяет выводить экранные байты в заранее заданном (в порту PC ППА клавиатуры) цвете. Окрашивается только цвет единичных точек (т.е тех пикселей, что соответствуют 1 в экранном байте). | ||
| экрана. Байт по адресу 9001H — 8 первых точек во второй строке, а байт | |||
| по адресу 9100h — точки с 8 по 16 в первой строке и т. д. Старшие биты | |||
| располагаются слева. Бит, установленный в 1 — светлая точка. | |||
| == Программирование ВВ55 == | == Программирование ППА ВВ55 == | ||
| Матрица клавиатуры имеет  | Матрица клавиатуры имеет формат 6x12, всего 72 клавиши. И ещё отдельная клавиша <НР>. Клавиши <CTRL> применяемой в программах от РК86 и CP/M нет. В некоторых программах её заменяют клавишей <НР>. | ||
| <PRE> | <PRE> | ||
| Развёрнуто на 90' (слева верхний ряд): | |||
| СТР -=  :*  .>  ЗБ  ВК | СТР -=  :*  .>  ЗБ  ВК | ||
| [ ] 0   ХH  Э\  /?  ПС | [ ] 0   ХH  Э\  /?  ПС | ||
| Строка 35: | Строка 34: | ||
| </PRE> | </PRE> | ||
| ;Порт A: | ;Порт A: | ||
| *  | * левые 8 горизонтальных линий из 12 матрицы клавиатуры (ввод/вывод) | ||
| ;Порт B: | ;Порт B: | ||
| * биты  | * биты D2..D7: 6 вертикальных линий матрицы клавиатуры (ввод/вывод) | ||
| * бит  | * бит D1: клавиша <НР> (0 если нажата) | ||
| * бит  | * бит D0: ввод с магнитофона | ||
| ;Порт C: | ;Порт C: | ||
| * биты  | * биты D0..D3: правые 4 горизонтальные линии из 12 матрицы клавиатуры | ||
| * бит  | * бит D4: триггер НП (начальный пуск). По сбросу =0 и всё адресное пространство ПЗУ | ||
| * бит 5: выход звука | * бит 5: выход звука | ||
| * бит 6: не используется | * бит 6: без цвета не используется (бит регистра цвета при цветном адаптере) | ||
| * бит 7: выход на магнитофон | * бит 7: выход на магнитофон (бит регистра цвета при цветном адаптере) | ||
| Теоретически для опроса клавиатуры может использоваться один из трех методов: | |||
| * Порты A, младшая половина C и B программируются на ввод. Нажатая клавиша определяется по положению нулей в обоих портах. Нажатая клавиша располагается на пересечении положения нулей. | * Порты A, младшая половина C и B программируются на ввод. Нажатая клавиша определяется по положению нулей в обоих портах. Нажатая клавиша располагается на пересечении положения нулей. | ||
| Строка 55: | Строка 54: | ||
| * Порт A и младшая половина C программируются на ввод, порт B — на вsвод. Осуществляется сканирование методом бегущего «0» путем записи в порт B и анализа портов A и C. | * Порт A и младшая половина C программируются на ввод, порт B — на вsвод. Осуществляется сканирование методом бегущего «0» путем записи в порт B и анализа портов A и C. | ||
| == Стандартные  | Реально в программах используется только первый вариант. Два других варианта со сканированием из-за отсутсвия диодов (как в матрице РК86) чреваты выходом из строя ППА ВВ55, т.к создают КЗ выходов ППА, к тому же на порядок более медленные и даже, если ППА не выйдет из строя могут давать при опросе таким методом непредсказуемый результат. | ||
| Есть два варианта ПЗУ Загрузчика, оригинал от А.Волкова и вариант Зверкова. Всегда используется второй вариант, т.к с ним работает монитор Орлова. Отличия в кодах клавиш <F1>...<F7>, они вместо кодов 82H...89H выдают коды 00...07. Коды клавиш <F8>...<F11> совпадают. Монитор А.Волкова исходно опубликованный в стартовой публикации (работающий в ОЗУ 8D00) с 1988 года не используется. Вместо него стандартом является монитор Орлова располагающийся в ПЗУ C800. Т.к именно загрузчик Зверкова и Монитор Орлова используют практически 100% программ. Некоторые игры работают при наличии только загрузчика. Но системные программы все используют входные точки ПЗУ C800, т.к подпрограммы загрузчика имеют недостатки. | |||
| == Стандартные подпрограммы Загрузчика Волкова/Зверкова == | |||
| <PRE> | <PRE> | ||
| C010 - CLS, очистка экрана | |||
|    Вх: (8FFA)=FFFF - светлый фон |    Вх: (8FFA)=FFFF - светлый фон | ||
|        (8FFA)=0000 - темный фон |        (8FFA)=0000 - темный фон | ||
|   Изм:  |   Изм: портит все | ||
| C037 - COUT, вывод символа на экран | |||
|    Вх: C - код символа |    Вх: C - код символа | ||
|        ( |        (8FFC), (8FFD) - положение курсора | ||
|        ( |        (8FE7), (8FE8) - (адрес знакогенератора)/8 | ||
|   Изм:  |   Не делает ролик экрана, нет обслуживания искейп-кодов. И даже знакоместо перед выводом не очищает, делая XOR изображения символа и исходного содержимого знакоместа. | ||
|   Изм: все регистры сохраняет | |||
| C170 - SOUND, генерирование звука | |||
|    Вх: ( |    Вх: (8FF1) - частота сигнала | ||
|        ( |        (8FF2) - длительность сигнала | ||
|   Изм:  |   Изм: все регистры сохраняет | ||
| C196 - пауза при вводе с клавиатуры | |||
|  Изм: регистров не портит | |||
| C1A0 - HISND, звук высокого тона | |||
|   Изм: не сохраняет А | |||
|   Изм:  | |||
| C1AB - LOSND, звук низкого тона | |||
|  Изм: не сохраняет А | |||
| C254 - PPA82, программирование порта клавиатуры | |||
|          (А,С - вывод, В - ввод, режим 0). |          (А,С - вывод, В - ввод, режим 0). | ||
|   Изм:  |   Изм: не сохраняет А | ||
| C25A - PPA91, программирование порта клавиатуры | |||
|          (А,С0..С3 - ввод, В,С4..С7 - вывод, режим 0). |          (А,С0..С3 - ввод, В,С4..С7 - вывод, режим 0). | ||
|  Изм: не сохраняет А | |||
| C337 - RDKEY, ввод символа с клавиатуры (ждёт нажатия клавиши) | |||
|   Вых: A -  |   Вых: A - код символа   | ||
|   Изм:  |   Изм: BC,DE,HL не портит | ||
| C377 - LDBYTE, ввод байта с магнитофона | |||
|    Вх: A=08H - без поиска синхробайта |    Вх: A=08H - без поиска синхробайта | ||
|        A=FFH - с поиском синхробайта |        A=FFH - с поиском синхробайта | ||
|   Вых: A - введенный байт   |   Вых: A - введенный байт   | ||
|   Изм:  |   Изм: BC,DE,HL не портит | ||
| C3D0 - SVBYTE, запись байта на магнитофон | |||
|    Вх: A - выводимый байт |    Вх: A - выводимый байт | ||
|   Изм:  |   Изм: регистров не портит | ||
| В отличие от аналогичной п/п РК86 выводимый байт не в рег.C, а в рег.А | |||
| C3F9 - LDBLK1, ввод блока произвольной длины с магнитофона с поиском синхробайта. | |||
|         (1-2 байт в блоке - адрес начала, 3-4 байт - адрес конца блока. |         (1-2 байт в блоке - адрес начала, 3-4 байт - адрес конца блока. | ||
|   Изм:  |   Изм: сохраняет BC,DE. Заносит нач.адрес в ячейки ASTART (8FF3/8FF4) | ||
| C414 - LDBLK2, чтение блока с МГ без поиска синхробайта | |||
|  Изм: сохраняет BC,DE. Ячейки ASTART не меняет. | |||
| C422 - LDBLK3, всё как у п/п C414, но с поиском синхробайта | |||
|    Вх: HL - адрес начала блока |    Вх: HL - адрес начала блока | ||
|        DE - адрес конца блока |        DE - адрес конца блока | ||
|   Изм:  |   Изм: сохраняет BC,DE. Ячейки ASTART не меняет. | ||
| C427 - CMPDH, сравнение регистров HL и DE | |||
|    Вх: HL, DE |    Вх: HL, DE | ||
|   Вых: Z=1, если  |   Вых: Z=1, если HL=DE; CY=1, если DE>HL (т.е устанавливает признаки по операции HL-DE) | ||
|   Изм: A |   Изм: A | ||
| C42D - TRANS, пересылка блока памяти (HL)...(DE) --> (BC) | |||
|    Вх: HL - адрес начала блока |    Вх: HL - адрес начала блока | ||
|        DE - адрес конца блока |        DE - адрес конца блока плюс 1 | ||
|        BC - новый адрес блока |        BC - новый адрес блока | ||
|   Изм: A,BC,HL |   Изм: A,BC,HL | ||
| Особенность: байт на который указывает DE не копируется. При пересылке вверх, недопустимо перекрытие адресов. | |||
| C438 - ZMSSG, вывод сообщения на экран. Стоп-байт 00. | |||
|    Вх: HL - адрес начала сообщения |    Вх: HL - адрес начала сообщения | ||
|   Изм: A, |   Изм: портит A,C,HL. При выходе HL указывает на стоп-байт. | ||
| В отличие от п/п C818 не делает ролика и не чистит знакоместа при выводе. | |||
| C444 - RESET, обработка сброса, т.е исполнительная часть загрузчика | |||
| Вводит по сбросу блок с МГ-ленты и запускает его. КС блока не проверяется. Нажатием функц.клавиш ожидание синхробайта прерывается и ожидает нажатия клавиши с кодом константы ввода. По <ВК> выход в монитор, по <ПС> запуск ранее введённой программы по JMP (ASTART). | |||
| </PRE> | </PRE> | ||
| == Стандартные  | == Стандартные подпрограммы Монитора Орлова == | ||
| <PRE> | <PRE> | ||
| C803 - CONIN, ввод символа с клавиатуры. Просто JMP на C337 | |||
| C806 - LDBYTE, чтение байта с МГ. Просто JMP на C377  | |||
| C809 - COUT, вывод символа. Если не упр.символ, то очищается знакоместо и JMP C037 | |||
| C80C - SVBYTE, вывод байта на МГ-ленту. Просто JMP на C3D0 (в отличие от РК86 байт в A) | |||
| C80F - GETLIN, ввод строки символов в буфер (HL)...(DE) | |||
| C812 - STATUS, проверка нажатия клавиш клавиатуры | |||
| C815 - HEX_A, вывод байта на экран в шестнадцатеричном виде | |||
| C818 - MSSG, вывод сообщения на экран (с очисткой знакомест) | |||
| C81B - GETKEY, ввод символа с клавиатуры "на лету" | |||
| C81E - ASKCUR, запрос положения курсора | |||
| C821 - RET | |||
| C824 - LD_MAS, чтение массива с МГ. Если A!=0, устанавливает константу. JMP C3F9 | |||
| C827 - SV_MAS, вывод блока (HL)...(DE) на магнитофон | |||
| C82A - CHKSUM, подсчет контрольной суммы блока (HL)...(DE) | |||
| C830 - установка верхней границы свободной памяти | |||
| C833 - запрос верхней границы свободной памяти | |||
| /PRE> | |||
| == Служебные ячейки Загрузчика == | == Служебные ячейки Загрузчика Волкова/Зверкова == | ||
| <PRE> | <PRE> | ||
| 8FE3,8FE4 - ASTART, адрес последнего введённого с МГ блока | |||
| 8FDF,8FE0 - AEKEYS, адрес подпрограммы обработки кодов клавиш | |||
| 8FE7,8FE8 - AFONT, адрес фонта делённый на 8 | |||
| 8FE9 - LAST_S, код символа выведенного на экран | |||
| 8FED,8FEE - адрес подпрограммы задержки при вводе символа с клавиатуры | 8FED,8FEE - адрес подпрограммы задержки при вводе символа с клавиатуры | ||
| 8FEF - LAST_K, код нажатой клавиши (в верхнем регистре)   | |||
| 8FF0 - служебная для автоповтора | |||
| 8FF1,8FF2 - PARSND, константа звука и число периодов для п/п SOUND | |||
| 8FF3 - INV_MG, признак инвертирования сигнала с магнитофона | |||
| 8FF1, 8FF2 -  | 8FF8,8FF9 - адрес нижней ячейки в знакоместе символа | ||
| 8FF3 - признак инвертирования сигнала с магнитофона | 8FFA,8FFB - INVERSE, задают фон экрана (00,00 или FF,FF) | ||
| 8FF8, 8FF9 - адрес нижней  | 8FFC - V_CUR, вертикальная координата курсора (0...FF) | ||
| 8FFD - H_CUR, горизонтальная координата курсора сдвинутая на 2р. влево (0...BF) | |||
| 8FFE - KNS_SV, константа записи на МГ | |||
| 8FFF - KNS_LD, константа чтения с МГ | |||
| </PRE> | </PRE> | ||
| [[Категория:Специалист]] | [[Категория:Специалист]] | ||
Версия от 01:23, 11 декабря 2019
|   | Данный материал защищён авторскими правами! Использование материала заявлено как добросовестное, исключительно для образовательных некоммерческих целей. Источник: http://www.emu80.org/dev/dev_s.html | 
Карта памяти
0000-8FFF - ОЗУ 9000-BFFF - Видео-ОЗУ C000-C7FF - ПЗУ (Загрузчик Волкова/Зверкова) C800-CFFF - ПЗУ (Монитор Орлова) D000-EFFF - может стоять ПЗУ пользователя F000-F7FF - ППА пользователя (есть не на всех платах) F800-FFFF - ППА клавиатуры
Структура видео-ОЗУ
Экранная область имеет разрешение 384x256 в черно-белом режиме. Байт по адресу 9000H представляет 8 первых точек в первой строке экрана. Байт по адресу 9001H — 8 первых точек во второй строке, а байт по адресу 9100h — точки с 8 по 16 в первой строке и т. д. Старшие биты располагаются слева. Бит, установленный в 1 — светлая точка. По формату экрана есть совместимость с ОРИОНОМ-128. Наличие внешней платы адаптера цвета позволяет выводить экранные байты в заранее заданном (в порту PC ППА клавиатуры) цвете. Окрашивается только цвет единичных точек (т.е тех пикселей, что соответствуют 1 в экранном байте).
Программирование ППА ВВ55
Матрица клавиатуры имеет формат 6x12, всего 72 клавиши. И ещё отдельная клавиша <НР>. Клавиши <CTRL> применяемой в программах от РК86 и CP/M нет. В некоторых программах её заменяют клавишей <НР>.
Развёрнуто на 90' (слева верхний ряд): СТР -= :* .> ЗБ ВК [ ] 0 ХH Э\ /? ПС [x] 9) ЗZ ЖV ,< -> EDIT8( Щ] ДD Ю@ ПВ F8 7, Ш[ ЛL БB <- F7 6& ГG ОO ЬX Sp F6 5% НN РR ТT АР2 F5 4$ ЕE ПP ИI ТАБ F4 3# КK АA МM DOWN F3 2" УU ВW СS UP F2 1! ЦC ЫY Ч^ HOME F1 ;+ ЙJ ФF ЯQ Р/Л
- Порт A
- левые 8 горизонтальных линий из 12 матрицы клавиатуры (ввод/вывод)
- Порт B
- биты D2..D7: 6 вертикальных линий матрицы клавиатуры (ввод/вывод)
- бит D1: клавиша <НР> (0 если нажата)
- бит D0: ввод с магнитофона
- Порт C
- биты D0..D3: правые 4 горизонтальные линии из 12 матрицы клавиатуры
- бит D4: триггер НП (начальный пуск). По сбросу =0 и всё адресное пространство ПЗУ
- бит 5: выход звука
- бит 6: без цвета не используется (бит регистра цвета при цветном адаптере)
- бит 7: выход на магнитофон (бит регистра цвета при цветном адаптере)
Теоретически для опроса клавиатуры может использоваться один из трех методов:
- Порты A, младшая половина C и B программируются на ввод. Нажатая клавиша определяется по положению нулей в обоих портах. Нажатая клавиша располагается на пересечении положения нулей.
- Порт A и младшая половина C программируются на вывод, порт B — на ввод. Осуществляется сканирование методом бегущего «0» путем записи в порты A и C и анализа порта B.
- Порт A и младшая половина C программируются на ввод, порт B — на вsвод. Осуществляется сканирование методом бегущего «0» путем записи в порт B и анализа портов A и C.
Реально в программах используется только первый вариант. Два других варианта со сканированием из-за отсутсвия диодов (как в матрице РК86) чреваты выходом из строя ППА ВВ55, т.к создают КЗ выходов ППА, к тому же на порядок более медленные и даже, если ППА не выйдет из строя могут давать при опросе таким методом непредсказуемый результат.
Есть два варианта ПЗУ Загрузчика, оригинал от А.Волкова и вариант Зверкова. Всегда используется второй вариант, т.к с ним работает монитор Орлова. Отличия в кодах клавиш <F1>...<F7>, они вместо кодов 82H...89H выдают коды 00...07. Коды клавиш <F8>...<F11> совпадают. Монитор А.Волкова исходно опубликованный в стартовой публикации (работающий в ОЗУ 8D00) с 1988 года не используется. Вместо него стандартом является монитор Орлова располагающийся в ПЗУ C800. Т.к именно загрузчик Зверкова и Монитор Орлова используют практически 100% программ. Некоторые игры работают при наличии только загрузчика. Но системные программы все используют входные точки ПЗУ C800, т.к подпрограммы загрузчика имеют недостатки.
Стандартные подпрограммы Загрузчика Волкова/Зверкова
C010 - CLS, очистка экрана
  Вх: (8FFA)=FFFF - светлый фон
      (8FFA)=0000 - темный фон
 Изм: портит все
C037 - COUT, вывод символа на экран
  Вх: C - код символа
      (8FFC), (8FFD) - положение курсора
      (8FE7), (8FE8) - (адрес знакогенератора)/8
  Не делает ролик экрана, нет обслуживания искейп-кодов. И даже знакоместо перед выводом не очищает, делая XOR изображения символа и исходного содержимого знакоместа.
 Изм: все регистры сохраняет
C170 - SOUND, генерирование звука
  Вх: (8FF1) - частота сигнала
      (8FF2) - длительность сигнала
 Изм: все регистры сохраняет
C196 - пауза при вводе с клавиатуры
 Изм: регистров не портит
C1A0 - HISND, звук высокого тона
 Изм: не сохраняет А
C1AB - LOSND, звук низкого тона
 Изм: не сохраняет А
  
C254 - PPA82, программирование порта клавиатуры
        (А,С - вывод, В - ввод, режим 0).
 Изм: не сохраняет А
C25A - PPA91, программирование порта клавиатуры
        (А,С0..С3 - ввод, В,С4..С7 - вывод, режим 0).
 Изм: не сохраняет А
C337 - RDKEY, ввод символа с клавиатуры (ждёт нажатия клавиши)
 Вых: A - код символа 
 Изм: BC,DE,HL не портит
C377 - LDBYTE, ввод байта с магнитофона
  Вх: A=08H - без поиска синхробайта
      A=FFH - с поиском синхробайта
 Вых: A - введенный байт 
 Изм: BC,DE,HL не портит
C3D0 - SVBYTE, запись байта на магнитофон
  Вх: A - выводимый байт
 Изм: регистров не портит
В отличие от аналогичной п/п РК86 выводимый байт не в рег.C, а в рег.А
C3F9 - LDBLK1, ввод блока произвольной длины с магнитофона с поиском синхробайта.
       (1-2 байт в блоке - адрес начала, 3-4 байт - адрес конца блока.
 Изм: сохраняет BC,DE. Заносит нач.адрес в ячейки ASTART (8FF3/8FF4)
C414 - LDBLK2, чтение блока с МГ без поиска синхробайта
 Изм: сохраняет BC,DE. Ячейки ASTART не меняет.
C422 - LDBLK3, всё как у п/п C414, но с поиском синхробайта
  Вх: HL - адрес начала блока
      DE - адрес конца блока
 Изм: сохраняет BC,DE. Ячейки ASTART не меняет.
C427 - CMPDH, сравнение регистров HL и DE
  Вх: HL, DE
 Вых: Z=1, если HL=DE; CY=1, если DE>HL (т.е устанавливает признаки по операции HL-DE)
 Изм: A
C42D - TRANS, пересылка блока памяти (HL)...(DE) --> (BC)
  Вх: HL - адрес начала блока
      DE - адрес конца блока плюс 1
      BC - новый адрес блока
 Изм: A,BC,HL
Особенность: байт на который указывает DE не копируется. При пересылке вверх, недопустимо перекрытие адресов.
C438 - ZMSSG, вывод сообщения на экран. Стоп-байт 00.
  Вх: HL - адрес начала сообщения
 Изм: портит A,C,HL. При выходе HL указывает на стоп-байт.
В отличие от п/п C818 не делает ролика и не чистит знакоместа при выводе.
C444 - RESET, обработка сброса, т.е исполнительная часть загрузчика
Вводит по сбросу блок с МГ-ленты и запускает его. КС блока не проверяется. Нажатием функц.клавиш ожидание синхробайта прерывается и ожидает нажатия клавиши с кодом константы ввода. По <ВК> выход в монитор, по <ПС> запуск ранее введённой программы по JMP (ASTART).
Стандартные подпрограммы Монитора Орлова
C803 - CONIN, ввод символа с клавиатуры. Просто JMP на C337 C806 - LDBYTE, чтение байта с МГ. Просто JMP на C377 C809 - COUT, вывод символа. Если не упр.символ, то очищается знакоместо и JMP C037 C80C - SVBYTE, вывод байта на МГ-ленту. Просто JMP на C3D0 (в отличие от РК86 байт в A) C80F - GETLIN, ввод строки символов в буфер (HL)...(DE) C812 - STATUS, проверка нажатия клавиш клавиатуры C815 - HEX_A, вывод байта на экран в шестнадцатеричном виде C818 - MSSG, вывод сообщения на экран (с очисткой знакомест) C81B - GETKEY, ввод символа с клавиатуры "на лету" C81E - ASKCUR, запрос положения курсора C821 - RET C824 - LD_MAS, чтение массива с МГ. Если A!=0, устанавливает константу. JMP C3F9 C827 - SV_MAS, вывод блока (HL)...(DE) на магнитофон C82A - CHKSUM, подсчет контрольной суммы блока (HL)...(DE) C830 - установка верхней границы свободной памяти C833 - запрос верхней границы свободной памяти /PRE> == Служебные ячейки Загрузчика Волкова/Зверкова == <PRE> 8FE3,8FE4 - ASTART, адрес последнего введённого с МГ блока 8FDF,8FE0 - AEKEYS, адрес подпрограммы обработки кодов клавиш 8FE7,8FE8 - AFONT, адрес фонта делённый на 8 8FE9 - LAST_S, код символа выведенного на экран 8FED,8FEE - адрес подпрограммы задержки при вводе символа с клавиатуры 8FEF - LAST_K, код нажатой клавиши (в верхнем регистре) 8FF0 - служебная для автоповтора 8FF1,8FF2 - PARSND, константа звука и число периодов для п/п SOUND 8FF3 - INV_MG, признак инвертирования сигнала с магнитофона 8FF8,8FF9 - адрес нижней ячейки в знакоместе символа 8FFA,8FFB - INVERSE, задают фон экрана (00,00 или FF,FF) 8FFC - V_CUR, вертикальная координата курсора (0...FF) 8FFD - H_CUR, горизонтальная координата курсора сдвинутая на 2р. влево (0...BF) 8FFE - KNS_SV, константа записи на МГ 8FFF - KNS_LD, константа чтения с МГ
