Информация со старого сайта с исправлениями
0000-8FFF - ОЗУ 9000-BFFF - Видео-ОЗУ C000-C7FF - ПЗУ Загрузчика C800-... - ПЗУ Монитора F000-F7FF - 580ВВ55 - 1 F800-FFFF - 580ВВ55 - 2 (Клавиатура)
Экранная область имеет разрешение 384x256 в черно-белом режиме. Байт по адресу 9000H представляет 8 первых точек в первой строке экрана. Байт по адресу 9001H - 8 первых точек во второй строке, а байт по адресу 9100h - точки с 8 по 16 в первой строке и т.д. Старшие биты располагаются слева. Бит, установленный в 1 - светлая точка.
Матрица клавиатуры имеет размер 6x12:
СТР -= :* .> ЗБ ВК [ ] 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:
биты 2-7: 6 бит матрицы клавиатуры (ввод/вывод)
бит 1: клавиша НР (1-отжата)
бит 0: ввод с магнитофона
биты 0-3: 4 старших бита из 12 матрицы клавиатуры
бит 4: триггер "начальный пуск". Используется для корректного "Reset"
бит 5: выход звука
бит 6: не используется
бит 7: выход на магнитофон
Для опроса клавиатуры может использоваться один из двух методов:
C010H - очистка экрана Вх: (8FFA)=FFFF - светлый фон (8FFA)=0000 - темный фон Изм: -- C037H - вывод символа на экран Вх: C - код символа (8ffc), (8ffd) - положение курсора (8fe7), (8fe8) - (адрес знакогенератора)/8 Изм: -- C170H - генерирование звука Вх: (8ff1) - частота сигнала (8ff2) - длительность сигнала Изм: A C190H - задержка Вх: B - задержка Изм: ? C254H - программирование порта клавиатуры (А,С - вывод, В - ввод, режим 0). Изм: ? C257H - программирование порта клавиатуры (А,С0..С3 - ввод, В,С4..С7 - вывод, режим 0). C337H - ввод символа с клавиатуры Вых: A - клд символа Изм: -- C377H - ввод байта с магнитофона Вх: A=08H - без поиска синхробайта A=FFH - с поиском синхробайта Вых: A - введенный байт Изм: -- C3D0H - запись байта на магнитофон Вх: A - выводимый байт Изм: -- C3F9H - ввод блока произвольной длины с магнитофона с поиском синхробайта. (1-2 байт в блоке - адрес начала, 3-4 байт - адрес конца блока. Изм: ? C422H - ввод блока произвольной длины с магнитофона с поиском синхробайта. Вх: HL - адрес начала блока DE - адрес конца блока Изм: ? C427H - сравнение HL и DE Вх: HL, DE Вых: Z=1, если равны Изм: A C42DH - пересылка блока памяти Вх: HL - адрес начала блока DE - адрес конца блока BC - новый адрес блока Изм: A,BC,HL Некорректно работает при пересылке "вверх", если перекрываются адреса. C438H - вывод сообщения на экран Вх: HL - адрес начала сообщения Изм: A,BC,HL
C803H - ввод символа с клавиатуры без ожидания C809H - вывод символа на экран C812H - опрос состояния клавиатуры (?) C815H - вывод байта на экран в шестнадцатеричном виде C818H - вывод сообщения на экран C81BH - ввод символа с клавиатуры без ожидания нажатия C81EH - запрос положения курсора C806H - чтение байта с магнитофона C80CH - запись байта на магнитофон C824H - ввод блока с магнитофона (?) C827H - вывод блока на магнитофон (?) C82AH - подсчет контрольной суммы блока C830H - установка верхней границы свободной памяти C833H - запрос верхней границы свободной памяти C80FH - вывод символа не принтер C840H - вывод байта на принтер в шестнадцатеричном виде C843H - вывод сообщения на принтер C852H - определение готовности принтера C855H - генерирование звука
Информация о входных и выходных параметрах у меня есть, здесь она будет размещена чуть позже.
8FE3H,8FE4H - адрес вводимой с маг. программы (при вводе через C3F9H) 8FED,8FEE - адрес подпрограммы задержки при вводе символа с клавиатуры 8FE5,8FE6 - не используются 8FDF,8FE0 - адрес начала подпрогаммы обработки кодов клавиш 8FE9 - код символа, выводимого на экран 8FEF, 8FF0 - код нажатой клавиши (в верхнем регистре) 8FF1, 8FF2 - частота и длительность звука 8FF3 - признак инвертирования сигнала с магнитофона 8FF8, 8FF9 - адрес нижней экранной ячейки для скроллинга 8FFa, 8FFb - цвет экрана