025E CA 53 02 JZ M2 ;
0261 CD 95 02 M1: CALL WAIT1 ; небольшая задержка для записи в регистры
0264 3E 02 MVI A,02H ; WD1=0
0266 DB D4 IN PORT3 ;
0268 32 12 20 STA IN_BYTE1 ;
026B DB D5 IN PORT4 ;
026D 32 13 20 STA IN_BYTE2 ;
0270 DB E4 IN PORT5 ;
0272 32 14 20 STA IN_BYTE3 ;
0275 DB E5 IN PORT6 ;
0277 32 15 20 STA IN_BYTE4 ;
027A DB D6 IN PORT10 ;
027C 32 16 20 STA IN_BYTE5 ;
027F DB E6 IN PORT11 ;
0281 E6 0F ANI 0FH ; маска 00001111
0283 F6 A0 ORI A0H ; добавляем 10100000
0285 32 17 20 STA IN_BYTE6 ;
0288 DB F4 IN PORT7 ;
028A 32 18 20 STA IN_BYTE7 ;
028D DB F5 IN PORT8 ;
028F 32 19 20 STA IN_BYTE8 ;
0292 C3 9E 02 JMP DECODE ;
0295 3E FF WAIT1: MVI A,FFH ; около 1 мкс
0297 3D DCR A ;
0298 3C INR A ;
0299 3D DCR A ;
029A C2 95 02 JNZ WAIT1 ;
029D C9 RET ;
029E 21 20 20 DECODE: LXI H,STT_TBL; начинаем проверять и записывать
02A1 3A 12 20 LDA IN_BYTE1 ; в таблицу состояния состояние секций
02A4 CD 00 03 CALL INTERP ;
02A7 3A 13 20 LDA IN_BYTE2 ;
02AA CD 00 03 CALL INTERP ;
02AD 3A 16 20 LDA IN_BYTE5 ;
02B0 CD 00 03 CALL INTERP ;
02B3 3A 14 20 LDA IN_BYTE3 ;
02B6 CD 00 03 CALL INTERP ;
02B9 3A 15 20 LDA IN_BYTE4 ;
02BC CD 00 03 CALL INTERP ;
02BF 3A 17 20 LDA IN_BYTE6 ;
02C2 CD 00 03 CALL INTERP ;
02C5 21 20 20 LXI H,STT_TBL;
02C8 CD 6B 03 CALL M4 ; заполнить байт сосояния 1
02CB 78 MOV A,B ;
02CC 32 80 20 STA STATEB1 ;
02CF CD 6B 03 CALL M4 ; заполнить байт сосояния 2
02D2 78 MOV A,B ;
02D3 E6 FC ANI FCH ;
02D5 0F RRC ;
02D6 0F RRC ;
02D7 32 85 20 STA STATEB2 ;
02DA 21 2E 20 LXI H,202EH ; адрес таблицы сосояний, раздел стрелки
02DD CD 6B 03 CALL M4 ; заполнить байт сосояния 3
02E0 78 MOV A,B ;
02E1 32 90 20 STA STATEB3 ;
02E4 C3 1A 03 JMP EXIT_D ; выход
02E7 06 00 M4: MVI B,00H ; формирование байта состояния
02E9 0E 08 MVI C,08H ; счетчик бит
02EB CD 53 02 M3: CALL M2 ; формирование байта стековым образом
02EE 23 INX H ; следующий элемент сосояния
02EF 0D DCR C ; уменьшаем счетчик бит
02F0 79 MOV A,C ;
02F1 FE 00 CPI 00H ;
02F3 C2 EB 02 JNZ M3 ; если счетчик не = 0 - цикл
02F6 C9 RET
02F7 78 M2: MOV A,B ; чтение текущего сосояния байта
02F8 07 RLC ;
02F9 47 MOV B,A ;
02FA 7E MOV A,M ;
02FB E6 01 ANI 01H ;
02FD B0 ORA B ; добавление к нему информации со сдвигом
02FE 47 MOV B,A ;
02FF C9 RET ;
0300 CD 0D 03 INTERP: CALL STOR ; вызов самого декодера
0303 CD 0D 03 CALL STOR ;
0306 CD 0D 03 CALL STOR ;
0309 CD 0D 03 CALL STOR ;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.