Информация со старого сайта с исправлениями
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 - цвет экрана