Copyleft HUMONGOUS CP/M Archives
При поддержке журналаRadio Magazine
RU | EN

CRISS CP/M

Руководство программиста КРИСС CP/M

Программист

Компьютер жив тогда, когда на нём пишут программы! Вся техническая информация будет собираться и актуализироваться на этой странице. Если у Вас есть вопросы, Вам чего-то не хватает в описании, Вы заметили ошибку или опучатку, у Вас есть предложения по расширению стандартных функций - смело пишите на mail@ogss.ru или mail@radio.ru.

Наиболее подробное описание правил и приёмов написания программ и работы с компьютером КРИСС CP/M ищите в журналах Радио за 2021 год. У компьютера есть все необходимые интерфейсы и возможности, а богатый набор языков разработки (Бейсик, Си, Паскаль, Фортран, Модула) позволит сделать практически всё, что можно придумать!

Для написания программ желательно знать базовые принципы устройства ОС CP/M, рекомендуем прочитать:

Краткое руководство по ESC-командам

Сами языки программирования никаких особенностей не имеют, ко всем языкам приложены найденные инструкции по работе с ними. Если не хватает какой-то информации - пишите запросы по электронной почте, информация будет добавлена.

Для удобства подготовлена краткое руководство по базовым ESC-командам, скачать его можно тут: criss.fun/criss/pdf/CRISS_Manual_RUS.pdf.

Специальные символы и ESC-последовательности

В базовой версии поддерживается некий усреднённый набор специальных символов и ESC-последовательностей для базового режима работы (режим совместимости CRISS). Для других платформ коды могут быть другие, см. документацию на платформы.

#N обозначает символ с кодом N (chr(N)), символ - стандартный символ ASCII.

DECHEX MnemonicОписаниеDescriptionСтандарт/Standard
#10x01^AHOMEустановка курсора в позицию 1,1 locate cursor to home position top left cornerTerminal
#70x07^GBELLсистемный звуковой сигнал system beepTerminal
#80x08^HCURLEFTперемещение курсора на символ влево move cursor 1 char leftTerminal
#90x09^ITABустановка курсора в следующую позицию табуляции move cursor to next tab positionTerminal
#100x0a^JLFперемещение курсора на следующую строку move cursor to next line, line feedTerminal
#120x0c^LCLRSCRочистка экрана и установка курсора в позицию 1,1 clear screen and home cursor Terminal
#130x0d^MCR установка курсора в начало текущей строки locate cursor to the 1st column, carriage returnTerminal
#140x0e^NSCROLLOFFзапрет скроллинга disable screen scrollingRobotron 1715
#150x0f^OSCROLLONразрешение сколлинга экрана enable screen scrollingRobotron 1715
#200x14^TCLRCURстирание с позиции курсора до конца экрана clear screen from the cursor to end of the screen Terminal
#210x15^UCURRIGHTперемещение курсора на 1 позицию вправо move cursor 1 char right Terminal
#220x16^VCLREOLстирание с позиции курсора до конца строки clear from the cursor to the end of lineTerminal
#240x18^XCLRLNстирание строки clear lineTerminal
#260x1a^ZCURUPперемещение курсора на 1 позицию вверх move cursor 1 char upтерм.
#270x1bESCуправляющий код ESC ESC control charTerminal
#300x1eCUROFFвыключение курсора cursor offCRISS
#310x1fCURONвключение курсора cursor onCRISS

Перечень поддерживаемых ESC-последовательностей приведён в таблице. Строки и столбцы считаются от 1. Символ звёздочки, если идёт не сразу за командой #27, обозначает любой символ.

ESC-seqОписаниеDescriptioStandardFW
#27 0выключение курсораcursor offCRISS
#27 1включение курсораcursor on CRISS
#27 \ chr(n)вывод на экран символа chr(n) для рисования символов #1..#31output symbol with code nCRISS
#27 #124 chr(n)вывод на экран символа chr(n) в обхрд видеопамятиoutput symbol with code n bypassing vide RAMCRISS4.66
#27 #9 chr(x)установить курсор в столбец xset cursor to column xCRISS
#27 Z chr(x)установка видережима, биты 0-4 - число строк, 7-5 - таблица ЗГ (со стиранием экрана)set video mode: bits 0-4 contains lines number; 7-5 - codepageCRISS
#27 chr(127+y) chr(127+x)установка курсора в позицию x,yset cursor to pos x,yRobotron 1715
#27 ^ *игнорируетсяignoredRobotron 1715
#27 _ *игнорируетсяignoredRobotron 1715
#27 = chr(31+y) chr(31+x)установка курсора в позицию x,yset cursor to pos x,yKAYPRO
#27 B 4выключение курсораcursor offKAYPRO
#27 C 4включение курсораcursor onKAYPRO
#27 B 6запомнить текущее положение курсораstore cursor positionKAYPRO
#27 C 6восстановить положение курсораrestore cursor positionKAYPRO
#27 RУдалить строкуremove lineKAYPRO
#27 EВставить строкуinsert lineKAYPRO
#27 Y chr(y+1) chr(x+1)установка курсора в позицию x,yset cursor to pos x,yTRS-80
#27 Hустановка курсора в позицию 1,1set cursor to home pos 1,1TRS-80
#27 Jочистка экрана от позиции курсора до конца экранаclear screen from the cursor to end of screenTRS-80
#27 Kочистка экрана от позиции курсора до конца строкиclear from the cursor to end of lineTRS-80
#27 jочистка экранаclear screenTRS-80
#27 B Sзапомнить экран во внутреннем буфереstore screen in internal bufferCRISS4.65+
#27 C Sвосстановить экран из внутреннего буфераrestore screen from internal bufferCRISS4.65+

Команды переключения видео-режима:

ESC-seqОписаниеDescriptioStandardFW
#27 G 0Выбор знакогенератора 0 и 24 строки с очисткой экранаselect standard symbols set 24 linesCRISS4.58
#27 G 1Выбор знакогенератора 2 и 24 строки с очисткой экранаselect symbols set 2 and 24 linesCRISS4.58
#27 G 2Выбор знакогенератора 3 и 24 строки с очисткой экранаselect symbols set 3 and 24 linesCRISS4.58
#27 G 3Выбор знакогенератора 4 с очисткой экранаselect symbols set 4 and 24 linesCRISS4.58
#27 G 4Переключение в графический режим с очисткой экранаselect graphic modeKAYPRO
#27 G 5Выбор знакогенератора 0 и 25 строк с очисткой экранаselect standard symbols set 25 linesCRISS4.58
#27 G 6Выбор знакогенератора 0 и 30 строк 64 символа с очисткой экранаselect standard symbols set 30 lines x 64 charsCRISS4.64
#27 G 7Выбор знакогенератора 4 и 30 строк 64 символа с очисткой экранаselect 4th symbols set 30 lines x 64 charsCRISS4.64
#27 G 8Выбор знакогенератора 0 и 31 строка 64 символа с очисткой экранаselect standard symbols set 31 lines x 64 charsCRISS4.64
#27 G 8Выбор знакогенератора 4 и 31 строка 64 символа с очисткой экранаselect 4th symbols set 31 lines x 64 charsCRISS4.64
#27 G SСпециальный режим - таблица знакогенератора определяется списком по адресу 0xf800+24*80, режим 24 строки 80 символов с очисткой экранаSpecial mode, symbols sets are selected per line at 0xf800+24*80, 24 lines x 80 charsCRISS4.64
#27 G sПереход в режим SleepSleep modeCRISS4.66
#27 G wВозврат из режима Sleep без очистки экранаReturn from Sleep modeCRISS4.66

Коды для команд графики:

ESC-seqОписаниеDescriptioStandardFW
#27 G 4включить графический режимGraphics modeKAYPRO
#27 G Nвключить текстовый режим 24x80Text mode 24x80KAYPRO
#27 * chr(y) chr(x)установка точки в графическом режимеPut pixelKAYPRO
#27 chr(32) chr(y) chr(x)стирание точки в графическом режимеClear pixelKAYPRO
#27 # chr(y) chr(x)инверсия точки в графическом режимеInvert the pixelCRISS
#27 L chr(y1) chr(x1) chr(y2) chr(x2)рисование линии в графическом режимеDraw lineKAYPRO
#27 D chr(y1) chr(x1) chr(y2) chr(x2)стирание линии в графическом режимеClear lineKAYPRO
#27 x chr(y1) chr(x1) chr(y2) chr(x2)инверсия линии в графическом режимеInvert the lineCRISS
#27 c chr(S) chr(y) chr(x) chr(R)рисование сегментов окружности (S)Draw circleCRISS

Команды управления периферией

ESC-seqОписаниеDescriptioStandardFW
#27 g CH VALвывод значения в стандартный канал GPIO адрес расширителя CH, VAL - значениеwrite VAL to GPIO channel chip CHCRISS4.64+
#27 k #запись символа во входной поток клавиатурыreturn char to CON inputCRISS4.65+
#27 m n1 n2 .. nk 4 cmdПроигрывание мелодии, n1..nk - ноты, cmd - команда проигрыванияPlay melody, n1..nk - notes, cmd - play commandCRISS4.66+

Команды специального ввода/вывода на экран

ESC-seqОписаниеDescriptioStandardFW
#27 W x1 y1 x2 y2Оконный вывод - установить границыWindowed output - set limitsCRISS4.65+
#27 w #Оконный вывод: значение # = C - очистка, U - скроллинг, F - двойная рамка, f - одинарная рамкаWindowed output: # value: C - clear window, U - scroll window, F - double frame, f - single frameCRISS4.65+
#27 y X YОконный вывод - установить курсор в окне, X, Y - от 1 до размера окнаWindowed output - relative set cursor, X, Y count from 1 to window sizeCRISS4.65+
#27 a BЗакрепить нижнюю строку экрана как статуснуюFix bottom line as a status bar lineCRISS4.67+
#27 a TЗакрепить верхнюю строку экрана как статуснуюFix top line as a status bar lineCRISS4.67+
#27 A xСохраняет позицию курсора (ESC+B+6), выключает его и ставит в позицию x статусной строкиStore and hide cursor and place it to position x of the status lineCRISS4.67+

Команды работы с модулем цветности

ESC-seqОписаниеDescriptioStandardFW
#27 q #Вывод команды # в интерфейс МК ФСЦColored output - raw commandCRISS4.66+
#27 r /SELPHRGYBMCW/Управляющая команда интерфейса ФСЦ: S -- скроллинг, E -- очистка экрана, L -- очистка строки, P -- переход в режим цветовых схем, HRGYBMCW -- установить цвет вывода: чёрный, красный, зелёный, жёлтый, синий, малиновый, циан, белыйColored output - control commandCRISS4.66+
#27 s /1-16/ /0-7/Вывести с позиции экранного курсора 1--16 символов цветом 0--7, соответственно чёрный, красный, зелёный, жёлтый, синий, малиновый, циан, белыйColored output - Output commandCRISS4.66+

Коды клавиатуры

Функциональные и специальные клавиши возвращаются как ASCII-символы в диапазоне 1-31, перечень возвращаемых значений приведён в таблице. В своём большинстве клавиши соответствуют стандартам редактора WordStar. Скан-коды клавиш и структура клавиш-модификаторов в разделах "Скан-коды клавиш" и "Порты ввода/вывода".

DECCTRLКлавиша / КeyDECCTRLКлавиша / KeyDECCTRLКлавиша / Key
0^@- 10^JF1 20^TCtrl-Del
1^ACtrl-(←) 11^KF2 21^UF9
2^BF6 12^LF7 22^VIns
3^CPgDn 13^MEnter (ET) 23^WEnd
4^D(→) 14^NF8 24^X(↓)
5^E(↑) 15^OF3 25^YF10
6^FCtrl-(→) 16^PF4 26^ZHome
7^GDel 17^QF5 27 - ESC
8^HЗабой (Backspace) 18^RPgUp 28 - F11
9^ITAB 19^S(←) 29 - F12
127Ctrl-Забой (Ctrl-Backspace)

Комбинации клавиш Ctrl + Alt + цифровая клавиатура возвращают символы псевдографики одиночной линии, Shift + Ctrl + Alt + цифровая клавиатура - сдвоенная линия. Коды символов соответствуют кодировке CP 866. Расположение символов показано в таблице.

NUM  /     *    -  
ET
Del

Ввод символа по коду с нажатой клавишей Alt не реализован.

С версии прошивки КВУ 0.22 комбинация клавиш Ctrl + Alt + клавиша возвращает символы псевдографики: основные цифровые клавиши - знаки фигур, I, O - спецсимволы, QWERTYU - символы заполнения и рисования стен, остальные - символы псевдографики для соединения одинарных и двойных линий рамок.

Скан-коды клавиш

000102030405060708090A0B0C0D0E0F
00 F9 F7 F5 F3 F1 F2 F12 F10 F8 F6 F4 TAB тильда
10 Alt LShift Ctrl Q 1! Z S A W 2@
20 C X D E 4$ 3# Space V F T R 5%
30 N B H G Y 6^ M J U 7& 8*
40 ,< K I O 0) 9( .> /? L ;: P -_
50 '" * { =+ CapsLock RShift Enter } END \ Left Home
60 INS DEL Down Right Up PgDown BSpace PgUp 1 4 7
70 0 KP. 2 5 6 8 ESC NUMLOCK F11 KP+ 3 KP- KP* 9 SCRLOCK

Таблицы знакогенератора

Для редактирования таблиц знакогенератора рекомендуется использовать редактор ZEDITOR Виталия Поединка, доступного тут: 86rk.ru/zeditor/.

Основная кодовая страница CP0, в основу положена кодировка CP866. Базовая для режима совместимости КРИСС. Актуальна начиная с обновления 30.11.2021 г. Стабильная, возможные изменения только в отрисовке символов.

Кодовая страница 0

Кодовая таблица графического режима (CP1). Точка в данной таблице не заполняет отведённого пространства полностью, можно использовать альтернативную версию таблицы ЗГ, где точка квадратные, с частичным или полным заполнением блока 4x5 пикселов.

Кодовая страница 1

Кодовая страница CP2 ориентирована на режим эмуляции Robotron 1715 RU, реализована поддержка атрибута инверсии.

Кодовая страница 2

Кодовая страница CP3 ориентирована на режим эмуляции Robotron 1715 EN, KAYPRO, TRS-80, MICROBEE, реализована поддержка атрибута инверсии и символов псевдографики. Проработка режима совместимости продолжается, возможны изменения в данной таблице.

Кодовая страница 3

Таблица CP4 находится в процессе проработки, предполагается наполнение её символами игровой псевдографики. Все предложения приветствуются!

Синтезатор мелодий

Проигрывание мелодии запускается записью в порт управления (214). Команда, в зависимости от значения старших битов, имеет разные значения.

Для проигрывания программной загруженной мелодии:

76543210
PD2PD1PD0ND4ND3ND2ND1ND0
  • PD2..PD0 - длительность паузы между нотами, от 0 до 6
  • ND4..ND0 - длительность ноты длительностью 1/8

Единица длительности равна 10 мс.

Для проигрывания мелодии из набора преднастроенных (системных) мелодий:

76543210
1110PN3PN2PN1PN0
  • PN3..PN0 - номер мелодии в ПЗУ (системные мелодии), мелодии записаны в ПЗУ с адреса 0x0100 блоками по 16 байт, первый байт - команда воспроизведения, далее 15 нот мелодии (прошивка 0.20+).

Специальные команды вывода в порт управления:

  • 0xFF - останавливает проигрывание мелодии (прошивка 0.20+)
  • 0xFE - запускает проигрывание первой ноты до получения команды 0xFF (прошивка 0.22+)

После окончания воспроизведения чтение из порта вернёт 0.

Структура байта ноты для проигрывания имеет вид:

76543210
NI4NI3NI2NI1NI0SPBDI1DI0
  • NI4..NI0 - индекс высоты тона для проигрывания
  • SPB - бит подавления паузы между нотами, когда равен 1 пауза подавляется
  • DI1..DI0 - индекс длительности: 0 соответствует длительности 1/8, 1 - 1/4, 2 - 1/2, 3 - 1

Некоторые значения байта ноты обозначают специальные команды:

76543210
000001C1C0
  • C0, C1 - код специальной команды

Специальные кманды:

  • 0 (0x04) - конец мелодии
  • 1 (0x05) - повторение мелодии (прошивка 0.20+)

Для быстрого написания мелодий можно воспользоваться таблицей индексов высот тона.

ИндексNI4..NI0Символьный кодЧастота, ГцНотаПримечание
00---Пауза
182-6880.00 AЛя второй октавы
2162-5/6830.60 G#Соль-диез второй октавы
3242-5784.00GСоль второй октавы
4322-4/5739.98F#Фа-диез второй октавы
5402-4698.46FФа второй октавы
6482-3659.26EМи второй октавы
7562-2/3622.26D#Ре-диез второй октавы
8642-2587.32DРе второй октавы
9722-1/2554.36C#До-диез второй октавы
10802-1523.25CДо второй октавы
11881-7493.88BСи первой октавы
12961-6/7466.16A#Ля-диез первой октавы
131041-6440.00AЛя первой октавы
141121-5/6415.30G#Соль-диез первой октавы
151201-5392.00GСоль первой октавы
161281-4/5369.99F#Фа-диез первой октавы
171361-4349.23FФа первой октавы
181441-3329.63EМи первой октавы
191521-2/3311.13D#Ре-диез первой октавы
201601-2293.66DРе первой октавы
211681-1/2277.18C#До-диез первой октавы
221761-1261.63CДо первой октавы
231840-7246.96BСи малой октавы
241920-6/7233.08A#Ля-диез малой октавы
252000-6220.00AЛя малой октавы
262080-5/6207.00G#Соль-диез малой октавы
272160-5196.00GСоль малой октавы
282240-4/5185.00F#Фа-диез малой октавы
292320-4174.62FФа малой октавы
302400-3164.81EМи малой октавы
312480-2/3155.56D#Ре-диез малой октавы

Пример кода, играющего мелодию "от улыбки хмурый день светлей":

procedure music; const m:array[224..233] of byte = (121,145,106,122,161,137,145,161,178,4); var i:integer; begin for i:=224 to 233 do port[i]:=m[i]; port[214]:=10; end;

Порты ввода/вывода

В данном разделе приведено описание лишь основных портов ввода/вывода, доступных для CP/M-программ через команды IN/OUT. Порядок работы с полным набором портов может быть выслан по отдельному запросу.

Порты с номерами 00h - СFh обслуживаются ПО уровня обеспечения аппаратной совместимости.

Порт 0xFE - порт работы с внешними устройствами (ЧРВ, сеть, ...), порт 0xFF - порт работы с внутренними устройствами МК ЦПУ (регистры и пр.).

Системные порты ввода вывода приведены в таблице

HEXDECIndexНазваниеTitleОписаниеDescription*
DO208VSTATПорт видеоконтроллераVideo controller control portУстановка кодовой страницы и числа строк экранаLine number and code page settingsR/W
D1209VCURH-"--"-Адрес отображаемого курсора (старший байт)Cursor address HR/W
D2210VCURL-"--"-Адрес отображаемого курсора (младший байт)Cursor address LR/W
D3211KMODKПорт контроллера клавиатурыKeyboard controller control portЗначение модификаторовModkeys valuesR
D4212KACTK-"--"-Скан-код клавишиKey scan-code valueR
D5213KCHAR-"--"-CP866 Код нажатой клавишиDecoded key valueR/W
D6214MPCMDПорт управления синтезатора мелодийMelody generator control portКоманда для выполнения синтезатором мелодийCommandR/W
E0-EF224-239MPBUF-"--"-Ноты для воспроизведенияNotes bufferR/W
D7215TWCMDПорт управления GPIOGPIO controller control portTWI-команда для выполненияTWI command to be executedR/W
D8216TWDTI-"--"-Параметр или возвращаемое значение командыTWI parameterR/W
DB219SYSRQСистемный портSystem command control portКомандаCommand to executeR/W
DC220SYSAA-"--"-АдресAddress valueW
DD221SYSVV-"--"-ЗначениеParameter valueR/W
DE222CTCVVПорт управления таймеромTimer portЗадание/текущее состояния таймера 10мсCurrent value 10ms stepR/W
DF223COMTCПорт управления COM-каналомRS-232 control portУстановка/чтение счётчика передачиOutput counterR/W
F1241COMST-"--"-Флаг наличия символа во буфереSymbol ready flagR, Clear-on-read port
F2242COMTX-"--"-Символ для передачиSymbol to transmitW
F3243COMRX-"--"-Принятый символReceived symbolR, Clear-on-read port

Структура байта управления экраном (порт управления видеоконтроллера)

76543210
LN4LN3LN2LN1LN0CP2CP1CP0
  • LN4..LN0 - число строк на экране, от 1 до 25
  • CP2..CP0 - кодовая страница, от 0 до 4

С версии 0.21 прошивки МК VGA добавлен перевод видеоадаптера в режим сна записью значения 0x00 в порт управления экраном D0/208. Для пробуждения необходимо установить требуемый видеорежим.

Структура байта кодов-модификаторов клавиатуры, значения битов 5-7 не определены.

76543210
---ALTCAPSLOCKSCROLLOCKSHIFTCTRL
  • биты 0-4 - значения модификаторов

Системный пор SYSRQ 219 (0xDB) работает в режиме чтения/записи, частично его биты имеют роль системных флагов. Структура байта порта:

76543210
SRQMSSLCR-CMD3CMD2CMD1CMD0
  • SRQ - флаг запроса исполнения системной команды, равен 0, когда команда выполнена
  • MSS - флаг активного состояния манипулятора мышь, 1 - мышь активна
  • LCR - внутренний флаг запроса изменения состояния индикатора NumLock, 1 - запрос на изменение в соответствии со значением бита MSS
  • Бит 4 - зарезервирован и читается как 0
  • CMD3-CMD0 - код системной команды: 0x01 -- чтение 8-битного регистра, 0x02, 0x03 -- запись восьми битного/шестнадцатибитного регистра соответственно, 0x0E -- запрос версии прошивки, 0x0F -- аппаратный сброс (RESET) (прошивка 0.23+)

Для исполнения команды необходимо:

  • прочитать значение порта, убедиться, что флаг SRQ==0
  • установить в битах CMD3-CMD0 значение команды и SRQ=1
  • записать новое значение в порт
  • дождаться исполнения, что будет сигнализироваться значением флага SRQ==0.

При работе с регистрами порт SYSAA содержит адрес регистра, SYSVV - его значение. При записи шестнадцатеричного регистра старший байт предполагается равным 0.

Структура банков данных

Работа с системными переменными и некоторыми внешними устройствами организована через специальные банки данных, доступ к которым осуществляется через два порта: пор адреса и порт данных.

Порт адресПорт данныхДлина, байтОписание
0xF40xF518Управление программным ускорителем видеоконтролллера
0xF60xF7254Блок системных переменных и обменных переменных
0xF80xF932Резерв
0xFA0xFB35Банк данных контроллера Ethernet
0xFC0xFD134Буфер прямого доступа к SPI-устройствам

Блок системных переменных

СмещениеТип данныхМнемоникаОписание
0BYTEHW_FLAGНомер выбранной аппаратной платформы
1BYTECON_IOBYTEIOBYTE консольного ввода/вывода
2BYTEHW_FOUNDУстановленное оборудование
3WORDINT_MASKМаска прерываний
5BYTECRT_SETTINGSНастройки терминала
6BYTECURSOR_XПозиция курсора по горизонтали
7BYTECURSOR_YПозиция курсора по вертикали
8BYTECURSOR_STATUSРежим отображения курсора
9BYTECRT_LINESЧисло строк экрана
10BYTECRT_CHARSЧисло символов в строке
11WORDVIDEO_ENDВерхняя граница условной видеопамяти
13WORDVIDEO_CURSORАдрес курсора в условной видеопамяти
15BYTEBIOS_DISKВыбранный логический диск BIOS
16WORDBIOS_TRACKДорожка BIOS
18BYTEBIOS_SECTORСектор BIOS
19WORDBIOS_DMAАдрес DMA-буфера в памяти эмулятора
21BYTESD_TYPEТип SD-карты
22BYTECON_LAST_CHARВведённый с клавиатуры символ
23BYTECON_LAST_MODKМодификаторы
24BYTECON_LAST_KACTСкан-код
25BYTELST_LAST_CHARВведённый с канала LST символ
26BYTE*16SD_FDD_BASEФизические номера на SD-карте образов логических дисков
42BYTESYS_NOTIFYНастройки отладчика
43BYTE*3DBG_OPTIONSЗарезервировано
46BYTEBIOS_LAST_CALLНомер последней вызванной команды BIOS
47BYTE*4-Резерв
51BYTE*13FLIB_CMDБлок сопроцессора операций с плавающей точкой
64BYTEBDOS_LAST_CALLНомер последней вызванной команды BDOS
65BYTE*7RTCДанные часов реального времени
72BYTEPR_IOBYTEНастройки коммуникационного обмена канала PUNCH/READER
73BYTEHW_DISABLEЗапрет работы интерфейсов
74BYTE*12PR_SRVНастройки сетевых параметров канала PUNCH/READER
86BYTETMR_10MSСистемный таймер с инкрементом 10 мс
86-127--Зарезервировано
128-254--Зона пользовательских данных

Блок данных контроллера Ethernet

СмещениеТип данныхМнемоникаОписание
0WORDLAN_PARСлужебные настройки
2WORDLAN_MBUF_INАдрес буфера приёма в ОЗУ эмулятора
4WORDLAN_MBUF_IN_LДлина буфера
8WORDLAN_MBUF_OUTАдрес буфера передачи в ОЗУ эмулятора
10WORDLAN_MBUF_IN_LДлина буфера
12BYTE*4LAN_IP_MYСвой IP-адрес
16BYTE*4LAN_IP_REMOTEIP-адрес партнёра
20BYTE*6LAN_MAC_MYСвой MAC-адрес
26BYTE*6LAN_MAC_MYMAC-адрес партнёра
32BYTELAN_BANKСлужебные данные
33WORDLAN_RXDPTУказатель чтения внутреннего буфера контроллера
35WORDLAN_RXSTATUSРезультат операции чтения
37WORDLAN_UPD_DATAДанные для записи в регистры
39WORDLAN_PORT_MYСвой порт
41WORDLAN_PORT_REMOTEПорт партнёра
43BYTELAN_PROTOCOLТип протокола
44BYTELAN_MAIN_RQSTФлаг требования обработки пакета
45BYTE*4-Зарезервировано

Блок данных доступа к SPI-утройствам

СмещениеТип данныхМнемоникаОписание
0BYTEPSPI_ADDRЛогический адрес устройства
1BYTEPSPI_MODEНастройка скорости и режима работы
2-133-PSPI_DATAДанные отправки/приёма

Битовые маски

HW_FLAG - обнаруженное оборудование

76543210
FSDCFCANFLANFROMFRTCFIRQF128FRAM
  • FSDC - накопитель SD;
  • FCAN - CAN-контроллер
  • FLAN - Ethernet-контроллер
  • FROM - системное ПЗУ
  • FRTC - ЧРВ
  • FIRQ - контроллер прерываний
  • F128 - 128 кБ ОЗУ
  • FRAM - ОЗУ

IOBYTE, PR_IOBYTE

76543210
SILSTSILANSITTYSICONSOLSTSOLANSOTTYSOCON
  • SILST - ввод с RS-232
  • S|LAN - ввод с LAN
  • S|TTY - ввод с TTY
  • S|CON - ввод с клавиатуры
  • SOLST - вывод на RS-232
  • SOLAN - вывод на LAN
  • SOTTY - вывод наTTY
  • SOCON - вывод на 'экран

Команды управляющих портов

Порт внешних устройств

Порядок доступа к порту внешних устройств:

  • отправить код команды в порт 0xFE
  • отправить при необходимости параметры по списку в указанном порядке в порт 0xFE
  • прочитать результат выполнения команды из порта 0xFE
Блок базовых команд
КомандаОписаниеВозвращаемое значение
0Выполнение SPI-запросаПоследний полученный байт данных с шины
1Реинициализация SD-картыТип SD-карты
2-15Зарезервировано-
16-47Зарезервировано для устройства пользователя-
48-79Команды контроллера EthernetСм. описание
80-96Команды ЧРВСм. описание
96-127Зарезервировано-
128-255Блок пользовательских портов-
Блок команд контроллера Ethernet

Базовые команды:

КомандаИндексОписаниеВозвращаемое значениеПрошивка
480Инициализация адаптера Ethernet на стандартные настройки-
491Инициализация адаптера Ethernet на настройки банка данных-
502Копировать данные из ОЗУ эмулятора во внутренний буфер-
513Копировать данные из внутреннего буфера в ОЗУ эмулятора-
524Прочитать значение ETH регистраЗначение регистра
535Прочитать значение MX регистраЗначение регистра
546Отправить Ethernet пакет из внутреннего буфераСтатус
557Прочитать Ethernet пакет во внутренний буферСтатус
568Прочитать значения счётчика пакетов в очереди приёмникаЗначение счётчика
579Записать данные в ETH регистр-
5810Прочитать PHY регистр-
5911Рассчитать IP CRC внутреннего буфера-
6012Сформировать IP-пакет из внутреннего буфера-
6113Сформировать UDP-пакет из внутреннего буфера-
6214Сформировать ARP-ответ по запросу внутреннего буфера-
6315Сформировать Ethernet-пакет из внутреннего буфера-
6416Получить тип принятого пакетаТип пакета
6517Прочитать значение регистра ESTATЗначение регистра
6618Обработать очередь входящих пакетовРезультат
6719Прочитать данные UDP пакетаРезультат4.64+
6820Сформировать и отправить ARP-запросРезультат4.64+
6921Сформировать и отправить UDP-пакетРезультат4.64+
7022Сформировать и отправить PING-запросРезультат4.64+
7123Сформировать и отправить PING-ответРезультат4.64+

Команды, которые были в первых версиях прошивки, но были исключены:

КомандаИндексОписаниеВозвращаемое значениеПрошивка
6719Отправить байт данных в сетевой интерфейс консолиРезультатдо 4.64, удалена
6820Отправить байт данных в сетевой интерфейс канала PUNCH/READERРезультатдо 4.64, удалена
6921Отправить загруженный буфер по UDPРезультат4.58 до 4.64, удалена
7022Удалить заголовок UDP-пакета-4.58 до 4.64, удалена
Блок команд ЧРВ
КомандаИндексОписаниеВозвращаемое значениеПрошивка
800Считать время/дату-
811Установить время-
822Установить дату-
833Системная команда записи ПЗУ ЧРВ-
844Считать настройки ALARM0Настройки
855Считать настройки ALARM1Настройки
866Считать байт статуса ЧРВСтатус
877Системная команда чтения ПЗУ ЧРВ-

Порт внутренних устройств

Порядок доступа к порту внутренних устройств МК ЦПУ устройств:

  • отправить код команды в порт 0xFF
  • отправить при необходимости параметры по списку в указанном порядке в порт 0xFF
  • прочитать результат выполнения команды из порта 0xFF
КомандаОписаниеПараметрыВозвращаемое значениеПрошивка
0-31Команды блока операций с плавающей точкой--
32Чтение системного регистра AVRАдрес регистра в памятиЗначение регистра
33Запись 8-битного регистра AVRАдрес регистра в памяти, значение-4.65+
34Запись 16-битного регистра AVRАдрес регистра в памяти, значение Hi, значение Lo-4.65+
35Запрос версии прошивки-Минорный номер прошивки4.65+
36Запрос версии прошивки-Мажорный номер прошивки4.65+
37Чтение значения счётчика символов в буфере TTY / UART1-Число символов в буфере4.67+
38Чтение символа из буфера TTY / UART1-Символ4.67+
39Отправка символа в канал TTY / UART1Символ-4.67+

Работа с периферийными устройствами

Порт RS-232

Настройки порта по умолчанию: скорость 9600 бод, 8 бит данных, 1 стоп-бит, без проверки чётности.

Настройка скорости передачи выполняется через системный порт КВУ (для прошивок 0.21+):

  • записать в SYSAA значение 0xC4
  • записать в SYSVV значение скорости (табл.)
  • прочитать значение порта SYSRQ, выполнить OR со значением 0x83, записать полученное значение в SYSRQ
  • дождаться пока чтение из порта SYSRQ вернёт значение с битом 7 равным 0.
Скорость, кБодиндекс скорости для записи
9.6 129
14.4 86
19.2 64
28.8 42
38.4 32
57.6 21
76.8 15
115.2 10

GPIO

КРИСС CP/M поддерживает работы с внешним модулем цифровых каналов ввода/вывода на базе микросхем PCF8574(A). Можно использовать как рекомендованный 24-канальный адаптер GPIO, так и самодельный.

Для работы с внешними устройствам используются порты ввода/вывода twcmd (215) и twdta (216). Порядок работы подробно описан в журнальной статье. Для вывода байта данных на шину GPIO необходимо сначала в порт данных twdta записать значение, потом в порт управления twcmd - команду и дождаться, пока значение в порту twcmd станет равно 0 (успешно) или 1 (ошибка шины). Для чтения необходимо сначала записать команду, потом, в случае успеха, прочитать результат из порта данных.

76543210
C3C2C1C0A2A1A0RW
  • C3-C0 - идентификатор ИМС расширителя (по документации);
  • A2-A0 - адрес ведомого устройства;
  • RW - тип команды: 0 - запись, 1 - чтение.

Начиная с версии прошивки 0.24 КВУ отслеживается тайм-аут обращения к шине и обрабатываются дополнительные команды в порту twcmd (215):

  • 0xFE - сброс шины TWI, после записи дождитесь чтения 0 из этого регистра;
  • 0xFD - исполнение команды в расширенном режиме.

Расширенный режим канала TWI (прошивка 0.24+) позволяет обращаться к произвольным TWI-устройствам на шине, используя буфер mpbuf (используется так же генератором мелодий) для записи последовательности команд. В этом режиме команды записываются парами код состояния шины - значение, поддерживаются состояния (коды):

КодКомандаЗначениеR/WКомментарий
0x08STARTSLA+RWWОбязательно в первой блоке
0x10RESTARTSLA+RWW
0x18WRITEDataWПервая запись после START+W, ACK получен
0x20WRITEDataWЗапись после START+W, NACK получен
0x28WRITEDataWЗапись после WRITE, ACK получен
0x40READ RQData-Чтение после START+R, ACK получен
0x50READ RQDataRЧтение после READ, ACK получен
0x58READDataRЧтение после READ, NACK получен

SLA обозначает 8-битный адрес устройства, RW - признак типа доступа: 0 - запись, 1 - чтение. Data - 8-битное значение. В режиме чтения возвращаемый байт данных будет записан в порт следующего за READ RQ операцией.

Пример записи 2 байт в устройство на шине:

0x08 0x40 START SLA=0x40+W 0x18 [0xFF] SEND after ACK [0xFF] - value 0x28 [0xFF] SEND after DATA [0xFF] - value 0x00 0x00 STOP

Пример чтения 1 байта с устройства на шине

read: Responce: 0x08 0x41 START SLA=0x40+R 0x08 0x41 0x40 0x00 SLA ACK - request 0x40 0x00 0x50 0x00 READ with NACK expected 0x50 [0xFF] (responce!) 0x00 0x00 STOP 0x00 0x00

Манипулятор мышь

Начиная с версии 0.21 КВУ реализована поддержка PS/2 манипулятора мышь. Для работы используются те же физические линии, что и для внешнего блока GPIO, поэтому их одновременное использование невозможно.

Для работы с мышью в рамках пользовательской программы необходимо:

  • записать в порт 215 команду 0xE0 - инициализация, выдержать паузу 10мс и проверить значение в порту 215 - 0 значит что мышь подключена и успешно инициализирована;
  • записать в порт 216 значение 0 для инициализации состояния кнопок;
  • для опроса мыши записать в порт 215 команду 0xE1, выдержать паузу 10мс, далее порт 216 будет содержать состояние кнопок (см. рис.), 217, 218 - накопительное смещение по X и по Y в формате знаковых 8-битных значений;
  • перед окончанием работы программы записать в порт 215 команду 0xE2 деактивации мыши.
76543210
*AF*Middle*Right*LeftAFMiddleRightLeft

Значения со звёздочкой соответствуют состоянию до опроса. AF - флаг перехвата опроса более приоритетным запросом, равен 0 в случае опроса без перехвата, в противном случае состояние мышки не изменяется.

Пример программного кода работы с машью:

begin port[215]:=$e0; delay(10); if port[215]<>0 then begin write('Error'); halt; end; port[216]:=0; repeat port[215]:=$e1; delay(10); if port[216] and 1 >0 then write('Left button pressed'); until port[216] and 1>0; port[215]:=$e4; end.

Команды эмулятор Z80

Basic functions

.----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | | 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 00 | NOP | LD BC,nn | LD (BC),A | INC BC | INC B | DEC B | LD B,n | RLCA | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 08 | EX AF,AFe | ADD HL,BC | LD A,(BC) | DEC BC | INC C | DEC C | LD C,n | RRCA | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 10 | DJNZ s | LD DE,nn | LD (DE),A | INC DE | INC D | DEC D | LD D,n | RLA | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 18 | JR *,s | ADD HL,DE | LD A,(DE) | DEC DE | INC E | DEC E | LD E,n | RRA | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 20 | JR NZ,s | LD HL,nn | LD (ww),HL | INC HL | INC H | DEC H | LD H,n | DAA | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 28 | JR Z,s | ADD HL,HL | LD HL,(ww) | DEC HL | INC L | DEC L | LD L,n | CPL A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 30 | JR NC,s | LD SP,nn | LD (nn),A | INC SP | INC (HL) | DEC (HL) | LD (HL),n | SCF | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 38 | JR C,s | ADD HL,SP | LD A,(nn) | DEC SP | INC A | DEC A | LD A,n | CCF | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 40 | LD B,B | LD B,C | LD B,D | LD B,E | LD B,H | LD B,L | LD B,(HL) | LD B,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 48 | LD C,B | LD C,C | LD C,D | LD C,E | LD C,H | LD C,L | LD C,(HL) | LD C,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 50 | LD D,B | LD D,C | LD D,D | LD D,E | LD D,H | LD D,L | LD D,(HL) | LD D,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 58 | LD E,B | LD E,C | LD E,D | LD E,E | LD E,H | LD E,L | LD E,(HL) | LD E,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 60 | LD H,B | LD H,C | LD H,D | LD H,E | LD H,H | LD H,L | LD H,(HL) | LD H,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 68 | LD L,B | LD L,C | LD L,D | LD L,E | LD L,H | LD L,L | LD L,(HL) | LD L,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 70 | LD (HL),B | LD (HL),C | LD (HL),D | LD (HL),E | LD (HL),H | LD (HL),L | HALT | LD (HL),A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 78 | LD A,B | LD A,C | LD A,D | LD A,E | LD A,H | LD A,L | LD A,(HL) | LD A,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 80 | ADD A,B | ADD A,C | ADD A,D | ADD A,E | ADD A,H | ADD A,L | ADD A,(HL) | ADD A,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 88 | ADC A,B | ADC A,C | ADC A,D | ADC A,E | ADC A,H | ADC A,L | ADC A,(HL) | ADC A,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 90 | SUB A,B | SUB A,C | SUB A,D | SUB A,E | SUB A,H | SUB A,L | SUB A,(HL) | SUB A,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 98 | SBC A,B | SBC A,C | SBC A,D | SBC A,E | SBC A,H | SBC A,L | SBC A,(HL) | SBC A,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | a0 | AND A,B | AND A,C | AND A,D | AND A,E | AND A,H | AND A,L | AND A,(HL) | AND A,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | a8 | XOR A,B | XOR A,C | XOR A,D | XOR A,E | XOR A,H | XOR A,L | XOR A,(HL) | XOR A,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | b0 | OR A,B | OR A,C | OR A,D | OR A,E | OR A,H | OR A,L | OR A,(HL) | OR A,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | b8 | CP A,B | CP A,C | CP A,D | CP A,E | CP A,H | CP A,L | CP A,(HL) | CP A,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | c0 | RET NZ | POP BC | JP NZ,nn | JP *,nn | CALL NZ,nn | PUSH BC | ADD A,n | RST 00h | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | c8 | RET Z | RET * | JP Z,nn | CB* | CALL Z,nn | CALL *,nn | ADC A,n | RST 08h | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | d0 | RET NC | POP DE | JP NC,nn | OUT (n),A | CALL NC,nn | PUSH DE | SUB A,n | RST 10h | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | d8 | RET C | EXX | JP C,nn | IN A,(n) | CALL C,nn | DD* | SBC A,n | RST 18h | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | e0 | RET PO | POP HL | JP PO,nn | EX (SP),HL | CALL PO,nn | PUSH HL | AND A,n | RST 20h | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | e8 | RET PE | JP *,HL | JP PE,nn | EX DE,HL | CALL PE,nn | ED* | XOR A,n | RST 28h | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | f0 | RET P | POP AF | JP P,nn | DI | CALL P,nn | PUSH AF | OR A,n | RST 30h | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | f8 | RET M | LD SP,HL | JP M,nn | EI | CALL M,nn | FD* | CP A,n | RST 38h | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------|

CB-prefixed commands

.----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | | 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 00 | RLC B | RLC C | RLC D | RLC E | RLC H | RLC L | RLC (HL) | RLC A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 08 | RRC B | RRC C | RRC D | RRC E | RRC H | RRC L | RRC (HL) | RRC A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 10 | RL B | RL C | RL D | RL E | RL H | RL L | RL (HL) | RL A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 18 | RR B | RR C | RR D | RR E | RR H | RR L | RR (HL) | RR A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 20 | SLA B | SLA C | SLA D | SLA E | SLA H | SLA L | SLA (HL) | SLA A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 28 | SRA B | SRA C | SRA D | SRA E | SRA H | SRA L | SRA (HL) | SRA A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 30 | SLL B | SLL C | SLL D | SLL E | SLL H | SLL L | SLL (HL) | SLL A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 38 | SRL B | SRL C | SRL D | SRL E | SRL H | SRL L | SRL (HL) | SRL A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 40 | BIT 0,B | BIT 0,C | BIT 0,D | BIT 0,E | BIT 0,H | BIT 0,L | BIT 0,(HL) | BIT 0,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 48 | BIT 1,B | BIT 1,C | BIT 1,D | BIT 1,E | BIT 1,H | BIT 1,L | BIT 1,(HL) | BIT 1,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 50 | BIT 2,B | BIT 2,C | BIT 2,D | BIT 2,E | BIT 2,H | BIT 2,L | BIT 2,(HL) | BIT 2,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 58 | BIT 3,B | BIT 3,C | BIT 3,D | BIT 3,E | BIT 3,H | BIT 3,L | BIT 3,(HL) | BIT 3,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 60 | BIT 4,B | BIT 4,C | BIT 4,D | BIT 4,E | BIT 4,H | BIT 4,L | BIT 4,(HL) | BIT 4,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 68 | BIT 5,B | BIT 5,C | BIT 5,D | BIT 5,E | BIT 5,H | BIT 5,L | BIT 5,(HL) | BIT 5,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 70 | BIT 6,B | BIT 6,C | BIT 6,D | BIT 6,E | BIT 6,H | BIT 6,L | BIT 6,(HL) | BIT 6,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 78 | BIT 7,B | BIT 7,C | BIT 7,D | BIT 7,E | BIT 7,H | BIT 7,L | BIT 7,(HL) | BIT 7,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 80 | RES 0,B | RES 0,C | RES 0,D | RES 0,E | RES 0,H | RES 0,L | RES 0,(HL) | RES 0,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 88 | RES 1,B | RES 1,C | RES 1,D | RES 1,E | RES 1,H | RES 1,L | RES 1,(HL) | RES 1,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 90 | RES 2,B | RES 2,C | RES 2,D | RES 2,E | RES 2,H | RES 2,L | RES 2,(HL) | RES 2,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 98 | RES 3,B | RES 3,C | RES 3,D | RES 3,E | RES 3,H | RES 3,L | RES 3,(HL) | RES 3,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | a0 | RES 4,B | RES 4,C | RES 4,D | RES 4,E | RES 4,H | RES 4,L | RES 4,(HL) | RES 4,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | a8 | RES 5,B | RES 5,C | RES 5,D | RES 5,E | RES 5,H | RES 5,L | RES 5,(HL) | RES 5,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | b0 | RES 6,B | RES 6,C | RES 6,D | RES 6,E | RES 6,H | RES 6,L | RES 6,(HL) | RES 6,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | b8 | RES 7,B | RES 7,C | RES 7,D | RES 7,E | RES 7,H | RES 7,L | RES 7,(HL) | RES 7,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | c0 | SET 0,B | SET 0,C | SET 0,D | SET 0,E | SET 0,H | SET 0,L | SET 0,(HL) | SET 0,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | c8 | SET 1,B | SET 1,C | SET 1,D | SET 1,E | SET 1,H | SET 1,L | SET 1,(HL) | SET 1,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | d0 | SET 2,B | SET 2,C | SET 2,D | SET 2,E | SET 2,H | SET 2,L | SET 2,(HL) | SET 2,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | d8 | SET 3,B | SET 3,C | SET 3,D | SET 3,E | SET 3,H | SET 3,L | SET 3,(HL) | SET 3,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | e0 | SET 4,B | SET 4,C | SET 4,D | SET 4,E | SET 4,H | SET 4,L | SET 4,(HL) | SET 4,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | e8 | SET 5,B | SET 5,C | SET 5,D | SET 5,E | SET 5,H | SET 5,L | SET 5,(HL) | SET 5,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | f0 | SET 6,B | SET 6,C | SET 6,D | SET 6,E | SET 6,H | SET 6,L | SET 6,(HL) | SET 6,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | f8 | SET 7,B | SET 7,C | SET 7,D | SET 7,E | SET 7,H | SET 7,L | SET 7,(HL) | SET 7,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------|

DD-prefixed commands

.----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | | 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 00 | NOP | LD BC,nn | LD (BC),A | INC BC | INC B | DEC B | LD B,n | RLCA | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 08 | EX AF,AFe | ADD IX,BC | LD A,(BC) | DEC BC | INC C | DEC C | LD C,n | RRCA | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 10 | DJNZ s | LD DE,nn | LD (DE),A | INC DE | INC D | DEC D | LD D,n | RLA | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 18 | JR *,s | ADD IX,DE | LD A,(DE) | DEC DE | INC E | DEC E | LD E,n | RRA | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 20 | JR NZ,s | LD IX,nn | LD (ww),IX | INC IX | INC IXh | DEC IXh | LD IXh,n | DAA | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 28 | JR Z,s | ADD IX,IX | LD IX,(ww) | DEC IX | INC IXl | DEC IXl | LD IXl,n | CPL A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 30 | JR NC,s | LD SP,nn | LD (nn),A | INC SP | INC (IX+d) | DEC (IX+d) | LD (IX+d),n | SCF | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 38 | JR C,s | ADD IX,SP | LD A,(nn) | DEC SP | INC A | DEC A | LD A,n | CCF | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 40 | LD B,B | LD B,C | LD B,D | LD B,E | LD B,IXh | LD B,IXl | LD B,(IX+d) | LD B,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 48 | LD C,B | LD C,C | LD C,D | LD C,E | LD C,IXh | LD C,IXl | LD C,(IX+d) | LD C,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 50 | LD D,B | LD D,C | LD D,D | LD D,E | LD D,IXh | LD D,IXl | LD D,(IX+d) | LD D,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 58 | LD E,B | LD E,C | LD E,D | LD E,E | LD E,IXh | LD E,IXl | LD E,(IX+d) | LD E,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 60 | LD IXh,B | LD IXh,C | LD IXh,D | LD IXh,E | LD IXh,IXh | LD IXh,IXl | LD H,(IX+d) | LD IXh,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 68 | LD IXl,B | LD IXl,C | LD IXl,D | LD IXl,E | LD IXl,IXh | LD IXl,IXl | LD L,(IX+d) | LD IXl,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 70 | LD (IX+d),B | LD (IX+d),C | LD (IX+d),D | LD (IX+d),E | LD (IX+d),H | LD (IX+d),L | HALT | LD (IX+d),A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 78 | LD A,B | LD A,C | LD A,D | LD A,E | LD A,IXh | LD A,IXl | LD A,(IX+d) | LD A,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 80 | ADD A,B | ADD A,C | ADD A,D | ADD A,E | ADD A,IXh | ADD A,IXl | ADD A,(IX+d) | ADD A,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 88 | ADC A,B | ADC A,C | ADC A,D | ADC A,E | ADC A,IXh | ADC A,IXl | ADC A,(IX+d) | ADC A,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 90 | SUB A,B | SUB A,C | SUB A,D | SUB A,E | SUB A,IXh | SUB A,IXl | SUB A,(IX+d) | SUB A,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 98 | SBC A,B | SBC A,C | SBC A,D | SBC A,E | SBC A,IXh | SBC A,IXl | SBC A,(IX+d) | SBC A,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | a0 | AND A,B | AND A,C | AND A,D | AND A,E | AND A,IXh | AND A,IXl | AND A,(IX+d) | AND A,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | a8 | XOR A,B | XOR A,C | XOR A,D | XOR A,E | XOR A,IXh | XOR A,IXl | XOR A,(IX+d) | XOR A,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | b0 | OR A,B | OR A,C | OR A,D | OR A,E | OR A,IXh | OR A,IXl | OR A,(IX+d) | OR A,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | b8 | CP A,B | CP A,C | CP A,D | CP A,E | CP A,IXh | CP A,IXl | CP A,(IX+d) | CP A,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | c0 | RET NZ | POP BC | JP NZ,nn | JP *,nn | CALL NZ,nn | PUSH BC | ADD A,n | RST 00h | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | c8 | RET Z | RET * | JP Z,nn | DDCB | CALL Z,nn | CALL *,nn | ADC A,n | RST 08h | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | d0 | RET NC | POP DE | JP NC,nn | OUT (n),A | CALL NC,nn | PUSH DE | SUB A,n | RST 10h | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | d8 | RET C | EXX | JP C,nn | IN A,(n) | CALL C,nn | NONI | SBC A,n | RST 18h | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | e0 | RET PO | POP IX | JP PO,nn | EX (SP),IX | CALL PO,nn | PUSH IX | AND A,n | RST 20h | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | e8 | RET PE | JP *,IX | JP PE,nn | EX DE,IX | CALL PE,nn | NONI | XOR A,n | RST 28h | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | f0 | RET P | POP AF | JP P,nn | DI | CALL P,nn | PUSH AF | OR A,n | RST 30h | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | f8 | RET M | LD SP,IX | JP M,nn | EI | CALL M,nn | NONI | CP A,n | RST 38h | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------|

ED-prefixed commands

.----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | | 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 00 | BIOS 0 | BIOS 1 | BIOS 2 | BIOS 3 | BIOS 4 | BIOS 5 | BIOS 6 | BIOS 7 | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 08 | BIOS 8 | BIOS 9 | BIOS 10 | BIOS 11 | BIOS 12 | BIOS 13 | BIOS 14 | BIOS 15 | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 10 | BIOS 16 | BIOS 17 | BIOS 18 | BIOS 19 | BIOS 20 | BIOS 21 | BIOS 22 | BIOS 23 | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 18 | BIOS 24 | BIOS 25 | BIOS 26 | BIOS 27 | BIOS 28 | BIOS 29 | BIOS 30 | BIOS 31 | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 20 | BIOS 32 | BIOS 33 | BIOS 34 | BIOS 35 | BIOS 36 | BIOS 37 | BIOS 38 | BDOS | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 28 | NONI | NONI | NONI | NONI | NONI | NONI | NONI | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 30 | NONI | NONI | NONI | NONI | NONI | NONI | NONI | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 38 | NONI | NONI | NONI | NONI | NONI | NONI | NONI | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 40 | IN B,(C) | OUT (C),B | SBC HL,BC | LD (ww),BC | NEG A | RETN | IM 0 | LD I,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 48 | IN C,(C) | OUT (C),C | ADC HL,BC | LD BC,(ww) | NEG A | RETI | IM 3 | LD R,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 50 | IN D,(C) | OUT (C),D | SBC HL,DE | LD (ww),DE | NEG A | RETN | IM 1 | LD A,I | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 58 | IN E,(C) | OUT (C),E | ADC HL,DE | LD DE,(ww) | NEG A | RETN | IM 2 | LD A,R | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 60 | IN H,(C) | OUT (C),H | SBC HL,HL | LD (ww),HL | NEG A | RETN | IM 0 | RRD A,(HL) | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 68 | IN L,(C) | OUT (C),L | ADC HL,HL | LD HL,(ww) | NEG A | RETN | IM 3 | RLD A,(HL) | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 70 | NONI | OUT (C),0 | SBC HL,SP | LD (ww),SP | NEG A | RETN | IM 1 | MUL | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 78 | IN A,(C) | OUT (C),A | ADC HL,SP | LD SP,(ww) | NEG A | RETN | IM 2 | DIV | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 80 | NONI | NONI | NONI | NONI | NONI | NONI | NONI | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 88 | NONI | NONI | NONI | NONI | NONI | NONI | NONI | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 90 | NONI | NONI | NONI | NONI | NONI | NONI | NONI | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 98 | NONI | NONI | NONI | NONI | NONI | NONI | NONI | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | a0 | LDI | CPI | INI | OUTI | FL32 0 | FL32 1 | FL32 2 | FL32 3 | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | a8 | LDD | CPD | IND | OUTD | NONI | NONI | NONI | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | b0 | LDIR | CPIR | INIR | OTIR | NONI | NONI | NONI | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | b8 | LDDR | CPDR | INDR | OTDR | NONI | NONI | NONI | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | c0 | NONI | NONI | NONI | NONI | NONI | NONI | NONI | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | c8 | NONI | NONI | NONI | NONI | NONI | NONI | NONI | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | d0 | NONI | NONI | NONI | NONI | NONI | NONI | NONI | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | d8 | NONI | NONI | NONI | NONI | NONI | NONI | NONI | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | e0 | NONI | NONI | NONI | NONI | NONI | NONI | NONI | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | e8 | NONI | NONI | NONI | NONI | NONI | NONI | NONI | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | f0 | NONI | NONI | NONI | NONI | NONI | NONI | NONI | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | f8 | NONI | NONI | NONI | NONI | NONI | NONI | NONI | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------|

FD-prefixed commands

.----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | | 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 00 | NOP | LD BC,nn | LD (BC),A | INC BC | INC B | DEC B | LD B,n | RLCA | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 08 | EX AF,AFe | ADD IY,BC | LD A,(BC) | DEC BC | INC C | DEC C | LD C,n | RRCA | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 10 | DJNZ s | LD DE,nn | LD (DE),A | INC DE | INC D | DEC D | LD D,n | RLA | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 18 | JR *,s | ADD IY,DE | LD A,(DE) | DEC DE | INC E | DEC E | LD E,n | RRA | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 20 | JR NZ,s | LD IY,nn | LD (ww),IY | INC IY | INC IYh | DEC IYh | LD IYh,n | DAA | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 28 | JR Z,s | ADD IY,IY | LD IY,(ww) | DEC IY | INC IYl | DEC IYl | LD IYl,n | CPL A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 30 | JR NC,s | LD SP,nn | LD (nn),A | INC SP | INC (IY+d) | DEC (IY+d) | LD (IY+d),n | SCF | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 38 | JR C,s | ADD IY,SP | LD A,(nn) | DEC SP | INC A | DEC A | LD A,n | CCF | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 40 | LD B,B | LD B,C | LD B,D | LD B,E | LD B,IYh | LD B,IYl | LD B,(IY+d) | LD B,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 48 | LD C,B | LD C,C | LD C,D | LD C,E | LD C,IYh | LD C,IYl | LD C,(IY+d) | LD C,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 50 | LD D,B | LD D,C | LD D,D | LD D,E | LD D,IYh | LD D,IYl | LD D,(IY+d) | LD D,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 58 | LD E,B | LD E,C | LD E,D | LD E,E | LD E,IYh | LD E,IYl | LD E,(IY+d) | LD E,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 60 | LD IYh,B | LD IYh,C | LD IYh,D | LD IYh,E | LD IYh,IYh | LD IYh,IYl | LD H,(IY+d) | LD IYh,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 68 | LD IYl,B | LD IYl,C | LD IYl,D | LD IYl,E | LD IYl,IYh | LD IYl,IYl | LD L,(IY+d) | LD IYl,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 70 | LD (IY+d),B | LD (IY+d),C | LD (IY+d),D | LD (IY+d),E | LD (IY+d),H | LD (IY+d),L | HALT | LD (IY+d),A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 78 | LD A,B | LD A,C | LD A,D | LD A,E | LD A,IYh | LD A,IYl | LD A,(IY+d) | LD A,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 80 | ADD A,B | ADD A,C | ADD A,D | ADD A,E | ADD A,IYh | ADD A,IYl | ADD A,(IY+d) | ADD A,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 88 | ADC A,B | ADC A,C | ADC A,D | ADC A,E | ADC A,IYh | ADC A,IYl | ADC A,(IY+d) | ADC A,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 90 | SUB A,B | SUB A,C | SUB A,D | SUB A,E | SUB A,IYh | SUB A,IYl | SUB A,(IY+d) | SUB A,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 98 | SBC A,B | SBC A,C | SBC A,D | SBC A,E | SBC A,IYh | SBC A,IYl | SBC A,(IY+d) | SBC A,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | a0 | AND A,B | AND A,C | AND A,D | AND A,E | AND A,IYh | AND A,IYl | AND A,(IY+d) | AND A,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | a8 | XOR A,B | XOR A,C | XOR A,D | XOR A,E | XOR A,IYh | XOR A,IYl | XOR A,(IY+d) | XOR A,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | b0 | OR A,B | OR A,C | OR A,D | OR A,E | OR A,IYh | OR A,IYl | OR A,(IY+d) | OR A,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | b8 | CP A,B | CP A,C | CP A,D | CP A,E | CP A,IYh | CP A,IYl | CP A,(IY+d) | CP A,A | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | c0 | RET NZ | POP BC | JP NZ,nn | JP *,nn | CALL NZ,nn | PUSH BC | ADD A,n | RST 00h | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | c8 | RET Z | RET * | JP Z,nn | FDCB | CALL Z,nn | CALL *,nn | ADC A,n | RST 08h | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | d0 | RET NC | POP DE | JP NC,nn | OUT (n),A | CALL NC,nn | PUSH DE | SUB A,n | RST 10h | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | d8 | RET C | EXX | JP C,nn | IN A,(n) | CALL C,nn | NONI | SBC A,n | RST 18h | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | e0 | RET PO | POP IY | JP PO,nn | EX (SP),IY | CALL PO,nn | PUSH IY | AND A,n | RST 20h | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | e8 | RET PE | JP *,IY | JP PE,nn | EX DE,IY | CALL PE,nn | NONI | XOR A,n | RST 28h | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | f0 | RET P | POP AF | JP P,nn | DI | CALL P,nn | PUSH AF | OR A,n | RST 30h | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | f8 | RET M | LD SP,IY | JP M,nn | EI | CALL M,nn | NONI | CP A,n | RST 38h | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------|

DDCB-prefixed commands

.----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | | 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 00 | NONI | NONI | NONI | NONI | NONI | NONI | RLC (IX+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 08 | NONI | NONI | NONI | NONI | NONI | NONI | RRC (IX+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 10 | NONI | NONI | NONI | NONI | NONI | NONI | RL (IX+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 18 | NONI | NONI | NONI | NONI | NONI | NONI | RR (IX+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 20 | NONI | NONI | NONI | NONI | NONI | NONI | SLA (IX+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 28 | NONI | NONI | NONI | NONI | NONI | NONI | SRA (IX+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 30 | NONI | NONI | NONI | NONI | NONI | NONI | SLL (IX+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 38 | NONI | NONI | NONI | NONI | NONI | NONI | SRL (IX+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 40 | NONI | NONI | NONI | NONI | NONI | NONI | BIT 0,(IX+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 48 | NONI | NONI | NONI | NONI | NONI | NONI | BIT 1,(IX+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 50 | NONI | NONI | NONI | NONI | NONI | NONI | BIT 2,(IX+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 58 | NONI | NONI | NONI | NONI | NONI | NONI | BIT 3,(IX+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 60 | NONI | NONI | NONI | NONI | NONI | NONI | BIT 4,(IX+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 68 | NONI | NONI | NONI | NONI | NONI | NONI | BIT 5,(IX+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 70 | NONI | NONI | NONI | NONI | NONI | NONI | BIT 6,(IX+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 78 | NONI | NONI | NONI | NONI | NONI | NONI | BIT 7,(IX+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 80 | NONI | NONI | NONI | NONI | NONI | NONI | RES 0,(IX+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 88 | NONI | NONI | NONI | NONI | NONI | NONI | RES 1,(IX+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 90 | NONI | NONI | NONI | NONI | NONI | NONI | RES 2,(IX+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 98 | NONI | NONI | NONI | NONI | NONI | NONI | RES 3,(IX+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | a0 | NONI | NONI | NONI | NONI | NONI | NONI | RES 4,(IX+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | a8 | NONI | NONI | NONI | NONI | NONI | NONI | RES 5,(IX+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | b0 | NONI | NONI | NONI | NONI | NONI | NONI | RES 6,(IX+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | b8 | NONI | NONI | NONI | NONI | NONI | NONI | RES 7,(IX+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | c0 | NONI | NONI | NONI | NONI | NONI | NONI | SET 0,(IX+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | c8 | NONI | NONI | NONI | NONI | NONI | NONI | SET 1,(IX+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | d0 | NONI | NONI | NONI | NONI | NONI | NONI | SET 2,(IX+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | d8 | NONI | NONI | NONI | NONI | NONI | NONI | SET 3,(IX+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | e0 | NONI | NONI | NONI | NONI | NONI | NONI | SET 4,(IX+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | e8 | NONI | NONI | NONI | NONI | NONI | NONI | SET 5,(IX+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | f0 | NONI | NONI | NONI | NONI | NONI | NONI | SET 6,(IX+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | f8 | NONI | NONI | NONI | NONI | NONI | NONI | SET 7,(IX+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------|

FDCB-prefixed commands

.----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | | 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 00 | NONI | NONI | NONI | NONI | NONI | NONI | RLC (IY+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 08 | NONI | NONI | NONI | NONI | NONI | NONI | RRC (IY+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 10 | NONI | NONI | NONI | NONI | NONI | NONI | RL (IY+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 18 | NONI | NONI | NONI | NONI | NONI | NONI | RR (IY+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 20 | NONI | NONI | NONI | NONI | NONI | NONI | SLA (IY+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 28 | NONI | NONI | NONI | NONI | NONI | NONI | SRA (IY+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 30 | NONI | NONI | NONI | NONI | NONI | NONI | SLL (IY+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 38 | NONI | NONI | NONI | NONI | NONI | NONI | SRL (IY+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 40 | NONI | NONI | NONI | NONI | NONI | NONI | BIT 0,(IY+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 48 | NONI | NONI | NONI | NONI | NONI | NONI | BIT 1,(IY+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 50 | NONI | NONI | NONI | NONI | NONI | NONI | BIT 2,(IY+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 58 | NONI | NONI | NONI | NONI | NONI | NONI | BIT 3,(IY+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 60 | NONI | NONI | NONI | NONI | NONI | NONI | BIT 4,(IY+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 68 | NONI | NONI | NONI | NONI | NONI | NONI | BIT 5,(IY+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 70 | NONI | NONI | NONI | NONI | NONI | NONI | BIT 6,(IY+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 78 | NONI | NONI | NONI | NONI | NONI | NONI | BIT 7,(IY+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 80 | NONI | NONI | NONI | NONI | NONI | NONI | RES 0,(IY+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 88 | NONI | NONI | NONI | NONI | NONI | NONI | RES 1,(IY+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 90 | NONI | NONI | NONI | NONI | NONI | NONI | RES 2,(IY+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | 98 | NONI | NONI | NONI | NONI | NONI | NONI | RES 3,(IY+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | a0 | NONI | NONI | NONI | NONI | NONI | NONI | RES 4,(IY+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | a8 | NONI | NONI | NONI | NONI | NONI | NONI | RES 5,(IY+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | b0 | NONI | NONI | NONI | NONI | NONI | NONI | RES 6,(IY+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | b8 | NONI | NONI | NONI | NONI | NONI | NONI | RES 7,(IY+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | c0 | NONI | NONI | NONI | NONI | NONI | NONI | SET 0,(IY+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | c8 | NONI | NONI | NONI | NONI | NONI | NONI | SET 1,(IY+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | d0 | NONI | NONI | NONI | NONI | NONI | NONI | SET 2,(IY+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | d8 | NONI | NONI | NONI | NONI | NONI | NONI | SET 3,(IY+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | e0 | NONI | NONI | NONI | NONI | NONI | NONI | SET 4,(IY+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | e8 | NONI | NONI | NONI | NONI | NONI | NONI | SET 5,(IY+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | f0 | NONI | NONI | NONI | NONI | NONI | NONI | SET 6,(IY+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------| | f8 | NONI | NONI | NONI | NONI | NONI | NONI | SET 7,(IY+d) | NONI | |----|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------|

© Copyright Radio / Радио / OGSS / НГСС / I. Reshetnikov / Решетников И.С. 2020-2022