Zilog Z80/Система команд/DAA
Этот документ создан для Emuverse и распространяется на условиях лицензии CC-BY-SA-3.0. |
Команда DAA производит операцию «десятичной коррекции аккумулятора», смысл которой в том, чтобы восстановить правильное двоично-десятичное значение после арифметических операций. Параметрами команды DAA являются:
- Флаг N — тип предыдущей операции (сложение/вычитание);
- Флаг CY — перенос;
- Флаг HC — частичный перенос;
- Значение в аккумуляторе A.
Смысл команды заключается в том, что она прибавляет к аккумулятору некоторое значение, вычисляемое на основе исходных данных. Эмуляцию DAA можно осуществить двумя методами — обычными if/else по таблице, приведенной в документации, либо вычислить значения коррекции заранее и свести их в таблицу. Ниже рассмотрены оба метода.
Обычный метод
- Достоинство: Экономия памяти
- Недостаток: Время исполнения, сложность кода
В документации на процессор приведена следующая таблица коррекции:
N | CY | Старший полубайт | HC | Младший полубайт | Прибавляемое значение | CY после DAA |
---|---|---|---|---|---|---|
0 | 0 | 0-9 | 0 | 0-9 | 00 | 0 |
0-8 | A-F | 06 | ||||
0-9 | 1 | 0-3 | ||||
A-F | 0 | 0-9 | 60 | 1 | ||
9-F | A-F | 66 | ||||
A-F | 1 | 0-3 | ||||
1 | 0-2 | 0 | 0-9 | 60 | ||
A-F | 66 | |||||
0-3 | 1 | 0-3 | ||||
1 | 0 | 0-9 | 0 | 0-9 | 00 | 0 |
0-8 | 1 | 6-F | FA | |||
1 | 7-F | 0 | 0-9 | A0 | 1 | |
6-F | 1 | 6-F | 9A |
Использование массива
- Достоинство: Быстрая работа, простота кода
- Недостаток: Необходимость хранить 4к данных;
Value := A + DAA_adjust[(N SHL 10) + (CY SHL 9) + (HC SHL 8) + A]; NewA := Value AND $FF; NewCY := (Value SHR 8) AND 1;
Подразумевается, что значения переменных, обозначающих флаги, могут принимать только значения 0 и 1, а массив DAA_adjust описан следующим образом:
const DAA_adjust: array [0..4095] of Byte = ($00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $06, $06, $06, $06, $06, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $06, $06, $06, $06, $06, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $06, $06, $06, $06, $06, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $06, $06, $06, $06, $06, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $06, $06, $06, $06, $06, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $06, $06, $06, $06, $06, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $06, $06, $06, $06, $06, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $06, $06, $06, $06, $06, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $06, $06, $06, $06, $06, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $66, $66, $66, $66, $66, $66, $60, $60, $60, $60, $60, $60, $60, $60, $60, $60, $66, $66, $66, $66, $66, $66, $60, $60, $60, $60, $60, $60, $60, $60, $60, $60, $66, $66, $66, $66, $66, $66, $60, $60, $60, $60, $60, $60, $60, $60, $60, $60, $66, $66, $66, $66, $66, $66, $60, $60, $60, $60, $60, $60, $60, $60, $60, $60, $66, $66, $66, $66, $66, $66, $60, $60, $60, $60, $60, $60, $60, $60, $60, $60, $66, $66, $66, $66, $66, $66, $60, $60, $60, $60, $60, $60, $60, $60, $60, $60, $66, $66, $66, $66, $66, $66, $06, $06, $06, $06, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $06, $06, $06, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $06, $06, $06, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $06, $06, $06, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $06, $06, $06, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $06, $06, $06, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $06, $06, $06, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $06, $06, $06, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $06, $06, $06, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $06, $06, $06, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $66, $66, $66, $66, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $66, $66, $66, $66, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $66, $66, $66, $66, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $66, $66, $66, $66, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $66, $66, $66, $66, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $66, $66, $66, $66, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $60, $60, $60, $60, $60, $60, $60, $60, $60, $60, $66, $66, $66, $66, $66, $66, $60, $60, $60, $60, $60, $60, $60, $60, $60, $60, $66, $66, $66, $66, $66, $66, $60, $60, $60, $60, $60, $60, $60, $60, $60, $60, $66, $66, $66, $66, $66, $66, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $66, $66, $66, $66, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $66, $66, $66, $66, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $66, $66, $66, $66, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $66, $66, $66, $66, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $06, $06, $06, $06, $06, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $06, $06, $06, $06, $06, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $06, $06, $06, $06, $06, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $06, $06, $06, $06, $06, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $06, $06, $06, $06, $06, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $06, $06, $06, $06, $06, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $06, $06, $06, $06, $06, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $06, $06, $06, $06, $06, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $06, $06, $06, $06, $06, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $66, $66, $66, $66, $66, $66, $60, $60, $60, $60, $60, $60, $60, $60, $60, $60, $66, $66, $66, $66, $66, $66, $60, $60, $60, $60, $60, $60, $60, $60, $60, $60, $66, $66, $66, $66, $66, $66, $60, $60, $60, $60, $60, $60, $60, $60, $60, $60, $66, $66, $66, $66, $66, $66, $60, $60, $60, $60, $60, $60, $60, $60, $60, $60, $66, $66, $66, $66, $66, $66, $60, $60, $60, $60, $60, $60, $60, $60, $60, $60, $66, $66, $66, $66, $66, $66, $60, $60, $60, $60, $60, $60, $60, $60, $60, $60, $66, $66, $66, $66, $66, $66, $06, $06, $06, $06, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $06, $06, $06, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $06, $06, $06, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $06, $06, $06, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $06, $06, $06, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $06, $06, $06, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $06, $06, $06, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $06, $06, $06, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $06, $06, $06, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $06, $06, $06, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $66, $66, $66, $66, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $66, $66, $66, $66, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $66, $66, $66, $66, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $66, $66, $66, $66, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $66, $66, $66, $66, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $66, $66, $66, $66, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $60, $60, $60, $60, $60, $60, $60, $60, $60, $60, $66, $66, $66, $66, $66, $66, $60, $60, $60, $60, $60, $60, $60, $60, $60, $60, $66, $66, $66, $66, $66, $66, $60, $60, $60, $60, $60, $60, $60, $60, $60, $60, $66, $66, $66, $66, $66, $66, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $66, $66, $66, $66, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $66, $66, $66, $66, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $66, $66, $66, $66, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $66, $66, $66, $66, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $00, $00, $00, $00, $00, $00, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $00, $00, $00, $00, $00, $00, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $00, $00, $00, $00, $00, $00, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $00, $00, $00, $00, $00, $00, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $00, $00, $00, $00, $00, $00, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $00, $00, $00, $00, $00, $00, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $00, $00, $00, $00, $00, $00, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $00, $00, $00, $00, $00, $00, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $00, $00, $00, $00, $00, $00, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $00, $00, $00, $00, $00, $00, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $00, $00, $00, $00, $00, $00, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $00, $00, $00, $00, $00, $00, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $00, $00, $00, $00, $00, $00, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $00, $00, $00, $00, $00, $00, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $00, $00, $00, $00, $00, $00, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $00, $00, $00, $00, $00, $00, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $00, $00, $00, $00, $00, $00, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $00, $00, $00, $00, $00, $00, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $00, $00, $00, $00, $00, $00, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $00, $00, $00, $00, $00, $00, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $00, $00, $00, $00, $00, $00, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $00, $00, $00, $00, $00, $00, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $00, $00, $00, $00, $00, $00, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $00, $00, $00, $00, $00, $00, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $00, $00, $00, $00, $00, $00, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $00, $00, $00, $00, $00, $00, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $00, $00, $00, $00, $00, $00, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $00, $00, $00, $00, $00, $00, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $00, $00, $00, $00, $00, $00, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $00, $00, $00, $00, $00, $00, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $00, $00, $00, $00, $00, $00, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $00, $00, $00, $00, $00, $00, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $00, $00, $00, $00, $00, $00, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $FA, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $00, $00, $00, $00, $00, $00, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $00, $00, $00, $00, $00, $00, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $00, $00, $00, $00, $00, $00, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $00, $00, $00, $00, $00, $00, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $00, $00, $00, $00, $00, $00, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $00, $00, $00, $00, $00, $00, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $00, $00, $00, $00, $00, $00, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $00, $00, $00, $00, $00, $00, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $A0, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $00, $00, $00, $00, $00, $00, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $00, $00, $00, $00, $00, $00, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $00, $00, $00, $00, $00, $00, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $00, $00, $00, $00, $00, $00, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $00, $00, $00, $00, $00, $00, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $00, $00, $00, $00, $00, $00, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $00, $00, $00, $00, $00, $00, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $00, $00, $00, $00, $00, $00, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $00, $00, $00, $00, $00, $00, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A, $9A);