; 018X-U7.LST F000 14 01 D8 D7 B4 0A 91 BD 43 6F 70 79 72 69 67 68 F010 74 20 31 39 38 34 2C 20 31 39 38 35 2C 20 31 39 F020 38 36 2C 20 4D 2F 41 2D 43 6F 6D 2C 20 49 6E 63 F030 2E 20 41 6C 6C 20 72 69 67 68 74 73 20 72 65 73 F040 65 72 76 65 64 65 66 69 72 69 6E 67 CE 35 4E 8D F050 E0 17 C5 0C B0 5C 4C 5A 71 08 87 91 00 00 00 00 F060 00 00 00 00 ;COMMAND LENGTH TABLE. HAS TOTAL NUM. OF BYTES EXPECTED. ; ;CMD-> 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 F064 05 01 08 0C 13 04 04 01 01 02 14 09 08 01 02 01 01 01 14 02 ;JUMP TABLE STARTS HERE F078 8C F1 76 BR @F176 ; CMD 00 CALC UNIT KEY STEP 1 F07B 8C F1 A4 BR @F1A4 ; CMD 01 CALC UNIT KEY STEP 2 F07E 8C F1 CF BR @F1CF ; CMD 02 CALC UNIT KEY STEP 3 F081 8C F2 13 BR @F213 ; CMD 03 DECRYPT MONTH KEY F084 8C F2 50 BR @F250 ; CMD 04 DECRYPT PROGRAM KEY F087 8C F3 30 BR @F330 ; CMD 05 CALC WORKING KEY F08A 8C F3 30 BR @F330 ; CMD 06 CALC WORKING KEY F08D 8C F4 0F BR @F40F ; CMD 07 ?? RAM LOCATIONS TO U19 F090 8C F3 C6 BR @F3C6 ;CMD 08 F093 8C F3 D8 BR @F3D8 ;CMD 09 F096 8C F4 E3 BR @F4E3 ;CMD 0A CLEAR RAM F099 8C F4 88 BR @F488 ;CMD 0B SEED KEY LOAD F09C 8C F4 99 BR @F499 ;CMD 0C WRITE NEW ID # F09F 8C F4 BC BR @F4BC ;CMD 0D GET UNIT ID TO U19 F0A2 8C F4 35 BR @F435 ;CMD 0E SEED KEY DECRYPT F0A5 8C F4 82 BR @F482 ;CMD 0F PORT A TO U-19 F0A8 8C F3 30 BR @F330 ;CMD 10 F0AB 8C F5 0C BR @F50C ;CMD 11 F0AE 8C F5 0F BR @F50F ;CMD 12 F0B1 8C F5 E6 BR @F5E6 ;CMD 13 ;;TRAP 20, GET A COMMAND F0B4 72 FF 77 MOV %FF,r77 F0B7 88 05 03 76 MOVD %0503 ,r76 F0BB 52 01 MOV %01,B F0BD 53 01 AND %01,B F0BF 55 01 XOR %01,B F0C1 92 06 MOVP B,p06 F0C3 7D FF 77 CMP %FF,r77 F0C6 E2 07 JZ ADR=F0CF F0C8 DB 76 DECD r76 F0CA E3 03 JC ADR=F0CF F0CC 8C FC 84 BR @FC84 F0CF 80 04 MOVP p04,A F0D1 27 02 E9 BTJZ %02,A ADR=F0BD F0D4 7D FF 77 CMP %FF,r77 F0D7 E6 16 JNZ ADR=F0EF F0D9 91 0A MOVP P0A,B F0DB 5D 14 CMP %14,B F0DD E7 03 JNC ADR=F0E2 F0DF 8C FC 84 BR @FC84 F0E2 88 00 57 72 MOVD %0057 ,r72 ;DATA BUFFER STARTS AT 0057 F0E6 AA F0 64 LDA @F064(B) F0E9 D0 74 MOV A,r74 F0EB D1 77 MOV B,r77 F0ED E0 06 JMP ADR=F0F5 F0EF 80 0A MOVP p0A,A F0F1 9B 72 STA *r72 ;PUT COMMAND DATA IN BUFFER F0F3 D3 72 INC r72 F0F5 22 08 MOV %08,A F0F7 84 08 ORP A,p08 F0F9 72 FF 73 MOV %FF,r73 F0FC 91 04 MOVP P04,B F0FE 57 02 06 BTJZ %02,B ADR=F107 F101 DA 73 F8 DJNZ r73 ADR=F0FC F104 8C FC 84 BR @FC84 F107 A3 F7 08 ANDP %F7,p08 F10A DA 74 AA DJNZ r74 ADR=F0B7 F10D A2 00 06 MOVP %00,p06 F110 0A RETS F111 72 FF 73 MOV %FF,r73 F114 DA 73 03 DJNZ r73 ADR=F11A F117 8C FC 84 BR @FC84 F11A A7 02 04 F6 BTJZP %02,p04 ADR=F114 F11E A7 80 04 04 BTJZP %80,p04 ADR=F126 F122 82 06 MOVP A,p06 F124 E0 05 JMP ADR=F12B F126 82 0A MOVP A,p0A F128 A2 FF 0B MOVP %FF,p0B F12B 22 08 MOV %08,A F12D 84 08 ORP A,p08 F12F 72 FF 73 MOV %FF,r73 F132 DA 73 03 DJNZ r73 ADR=F138 F135 8C FC 84 BR @FC84 F138 A6 02 04 F6 BTJOP %02,p04 ADR=F132 F13C A2 00 0B MOVP %00,p0B F13F A3 F7 08 ANDP %F7,p08 F142 0A RETS F143 88 F0 5C 70 MOVD %F05C ,r70 F147 7D 02 4E CMP %02,r4E ; STATE = 02 ? F14A E6 04 JNZ ADR=F150 F14C 88 00 4F 70 MOVD %004F ,r70 F150 9A 70 LDA *r70 F152 82 06 MOVP A,p06 F154 D3 70 INC r70 F156 A3 EF 08 ANDP %EF,p08 F159 A4 10 08 ORP %10,p08 F15C CA F2 DJNZ B ADR=F150 F15E 0A RETS F15F 06 DINT F160 A2 00 06 MOVP %00,p06 F163 A2 00 08 MOVP %00,p08 F166 A2 00 0A MOVP %00,p0A F169 A2 FF 09 MOVP %FF,p09 F16C A2 FF 0B MOVP %FF,p0B F16F A2 20 00 MOVP %20,p00 F172 A2 20 03 MOVP %20,p03 F175 01 IDLE ;COMMAND 00 1ST STEP IN UNIT KEY CALCULATION F176 7D 1F 05 CMP %1F,r05 F179 E6 26 JNZ ADR=F1A1 F17B 98 58 5C MOVD r58,r5C ;KEY SELECTOR --> R5B..R5E F17E 98 5A 5E MOVD r5A,r5E F181 98 07 58 MOVD r07,r58 ;UNIT ID # R6..R9 --> R57..R5A F184 98 09 5A MOVD r09,r5A F187 32 5B MOV r5B,B ;SEED KEY SELECTOR TO B F189 53 0F AND %0F,B ;KEEP LOW 4 BITS F18B D1 4D MOV B,r4D ;SAVE LOW 4 BITS IN R4D F18D 53 03 AND %03,B ;KEEP LOW 2 BITS F18F 5C 07 MPY %07,B ;MPY BY 7 F191 A8 00 0A 70 MOVD %000A(B),r70 ;R70 POINTS TO SEED KEY F195 ED TRAP 18 F624 ;DES DECRYPTION F196 88 00 57 70 MOVD %0057 ,r70 F19A 88 00 45 72 MOVD %0045 ,r72 ;DES RESULT MOVED TO R45..R4C F19E 52 08 MOV %08,B F1A0 EC TRAP 19 F608 F1A1 8C FC 71 BR @FC71 ;FINISHED, GO GET NEW COMMAND ; ; ;COMMAND 01 STEP 2 IN UNIT KEY CALCULATIONS ; ; F1A4 7D 1F 05 CMP %1F,r05 F1A7 E6 F8 JNZ ADR=F1A1 F1A9 88 00 45 70 MOVD %0045 ,r70 ; RESULT FROM COMMAND 00 ABOVE F1AD 88 00 57 72 MOVD %0057 ,r72 F1B1 52 08 MOV %08,B F1B3 EC TRAP 19 F608 ; MOVE 8 BYTES TO R56..R5D F1B4 32 4D MOV r4D,B ;GET LOW 4 BITS KEY SELECTOR F1B6 53 0C AND %0C,B ;KEEP BITS 2,3 F1B8 CC RR B ;SHIFT THEM RIGHT 2 PLACES F1B9 CC RR B F1BA 5C 07 MPY %07,B F1BC A8 00 0A 70 MOVD %000A(B),r70 ;R70 POINTS TO SEED KEY F1C0 ED TRAP 18 F624 ;DES DECRYPT F1C1 88 00 57 70 MOVD %0057 ,r70 F1C5 88 00 45 72 MOVD %0045 ,r72 F1C9 52 08 MOV %08,B F1CB EC TRAP 19 F608 ;MOVE RESULT TO R45..R4C F1CC 8C FC 71 BR @FC71 ; ;COMMAND 02 STEP 3 IN UNIT KEY CALCULATION ;UNIT TIER MASK IS IN COMMAND BUFFER R56..R5C ; F1CF 7D 1F 05 CMP %1F,r05 F1D2 E6 CD JNZ ADR=F1A1 F1D4 88 00 00 31 MOVD %0000 ,r31 ;CLEAR MONTH KEY F1D8 88 00 00 33 MOVD %0000 ,r33 ;..LEFT OVER FROM LAST F1DC 88 00 00 35 MOVD %0000 ,r35 ;...CMD 04 OPERATION F1E0 88 00 00 37 MOVD %0000 ,r37 ;* THIS KILLS 3 MUSKETEER F1E4 88 00 57 70 MOVD %0057 ,r70 ; TYPE CHEATING F1E8 88 00 37 72 MOVD %0037 ,r72 F1EC 52 07 MOV %07,B F1EE EC TRAP 19 F608 ;MOVE TIER MASK TO R37..R3D F1EF 88 00 45 70 MOVD %0045 ,r70 F1F3 88 00 57 72 MOVD %0057 ,r72 F1F7 52 08 MOV %08,B F1F9 EC TRAP 19 F608 ; RESULT OF CMD 01 TO R56..R5D F1FA 32 4D MOV r4D,B F1FC 53 03 AND %03,B F1FE 5C 07 MPY %07,B F200 A8 00 0A 70 MOVD %000A(B),r70 ;R70 POINTS TO A SEED KEY F204 ED TRAP 18 F624 ;DES DECRYPT F205 88 00 45 72 MOVD %0045 ,r72 F209 88 00 57 70 MOVD %0057 ,r70 F20D 52 08 MOV %08,B F20F EC TRAP 19 F608 ;RESULT TO R45..R4C F210 8C FC 71 BR @FC71 ; ;COMMAND 03 MONTH KEY DECRYPTION F213 7D 1F 05 CMP %1F,r05 F216 E6 F8 JNZ ADR=F210 F218 98 60 2F MOVD r60,r2F ;BUFFER 5F,60 -> R2E,R2F F21B 42 61 4D MOV r61,r4D ;BUFFER 61 --> R4D F21E 88 00 45 70 MOVD %0045 ,r70 F222 88 00 30 72 MOVD %0030 ,r72 F226 52 07 MOV %07,B F228 EC TRAP 19 F608 ;UNIT KEY TO R30..R36 F229 88 00 37 70 MOVD %0037 ,r70 ;POINT TO UNIT TIER MASK F22D 88 00 30 72 MOVD %0030 ,r72 ;POINT TO UNIT KEY F231 52 07 MOV %07,B F233 EE TRAP 17 F613 ;56 BIT XOR UNIT KEY WITH F234 88 00 30 70 MOVD %0030 ,r70 UNIT TIER MASK F238 ED TRAP 18 F624 ;DES DECRYPT MONTH KEY F239 45 2E EB XOR r2E,r5B ;XOR LAST 3 BYTES OF DECODED F23C 45 2F 5C XOR r2F,r5C ;..MONTH KEY WITH PPV BYTES F23F 45 4D 5D XOR r4D,r5D F242 88 00 57 70 MOVD %0057 ,r70 F246 88 00 30 72 MOVD %0030 ,r72 F24A 52 07 MOV %07,B F24C EC TRAP 19 F608 ;MOVE FULLY DECODED MONTH KEY F24D 8C FC 71 BR @FC71 ; TO R30..R36 ; ; ; ;COMMAND 04 PROGRAM KEY DECRYPTION ; F250 7D 1F 05 CMP %1F,r05 F253 E6 F8 JNZ ADR=F24D F255 88 00 57 70 MOVD %0057 ,r70 F259 88 00 3E 72 MOVD %003E ,r72 F25D 52 07 MOV %07,B F25F EC TRAP 19 F608 F260 98 5F 58 MOVD r5F,r58 F263 98 61 5A MOVD r61,r5A F266 98 63 5C MOVD r63,r5C F269 98 65 5E MOVD r65,r5E F26C 88 00 30 70 MOVD %0030 ,r70 F270 88 00 5F 72 MOVD %005F ,r72 F274 52 07 MOV %07,B F276 EC TRAP 19 F608 F277 45 66 5F XOR r66,r5F F27A 45 67 60 XOR r67,r60 F27D 45 68 61 XOR r68,r61 F280 42 68 4D MOV r68,r4D F283 D8 66 PUSH r66 F285 D8 67 PUSH r67 F287 88 00 5F 70 MOVD %005F ,r70 F28B ED TRAP 18 F624 F28C D9 67 POP r67 F28E D9 66 POP r66 F290 12 5E MOV r5E,A F292 E6 77 JNZ ADR=F30B F294 88 00 37 70 MOVD %0037 ,r70 F298 88 00 3E 72 MOVD %003E ,r72 F29C 72 07 73 MOV %07,r73 F29F 9A 70 LDA *r70 F2A1 C0 MOV A,B F2A2 9A 72 LDA *r72 F2A4 36 00 57 BTJO r00,B ADR=F2FE F2A7 D3 70 INC r70 F2A9 D3 72 INC r72 F2AB DA 73 F1 DJNZ r73 ADR=F29F F2AE 77 80 4D 59 BTJZ %80,r4D ADR=F30B F2B2 4D 57 2B CMP r57,r2B F2B5 E6 0A JNZ ADR=F2C1 F2B7 4D 58 2C CMP r58,r2C F2BA E6 05 JNZ ADR=F2C1 F2BC 4D 59 2D CMP r59,r2D F2BF E2 3D JZ ADR=F2FE F2C1 EA TRAP 21 F5FF F2C2 4D 01 2A CMP r01,r2A F2C5 E6 44 JNZ ADR=F30B F2C7 98 28 50 MOVD r28,r50 F2CA 42 29 51 MOV r29,r51 F2CD B0 TSTA F2CE 4E 66 4F DAC r66,r4F F2D1 49 67 50 ADC r67,r50 F2D4 79 00 51 ADC %00,r51 F2D7 E3 32 JC ADR=F30B F2D9 D5 52 CLR r52 F2DB 98 2F 54 MOVD r2F,r54 F2DE 07 SETC F2DF 4F 4F 52 DSB r4F,r52 F2E2 4B 50 53 SBB r50,r53 F2E5 4B 51 54 SBB r51,r54 F2E8 E7 21 JNC ADR=F30B F2EA 06 DINT F2EB 42 51 29 MOV r51,r29 F2EE 42 50 28 MOV r50,r28 F2F1 42 4F 27 MOV r4F,r27 F2F4 EA TRAP 21 F5FF F2F5 D1 2A MOV B,r2A F2F7 98 58 2C MOVD r58,r2C F2FA 42 59 2D MOV r59,r2D F2FD 05 EINT F2FE 88 00 57 70 MOVD %0057 ,r70 F302 88 00 3E 72 MOVD %003E ,r72 F306 52 07 MOV %07,B F308 EE TRAP 17 F613 F309 E0 0F JMP ADR=F31A F30B 88 00 00 3F MOVD %0000 ,r3F F30F 88 00 00 41 MOVD %0000 ,r41 F313 88 00 00 43 MOVD %0000 ,r43 F317 72 00 44 MOV %00,r44 F31A 88 00 00 50 MOVD %0000 ,r50 F31E 88 00 00 52 MOVD %0000 ,r52 F322 88 00 00 54 MOVD %0000 ,r54 F326 88 00 00 56 MOVD %0000 ,r56 F32A 72 00 4E MOV %00,r4E ; STATE := 00 F32D 8C FC 71 BR @FC71 ; ; ;COMMANDS 05,06,10 ; F330 7D 10 77 CMP %10,r77 F333 E6 0E JNZ ADR=F343 F335 88 F0 4C 70 MOVD %F04C ,r70 F339 88 00 4F 72 MOVD %004F ,r72 F33D 52 08 MOV %08,B F33F EC TRAP 19 F608 F340 72 02 4E MOV %02,r4E ;STATE := 02 F343 52 08 MOV %08,B F345 A3 9F 08 ANDP %9F,p08 F348 A4 40 08 ORP %40,p08 F34B EF TRAP 16 F143 F34C 7D 10 77 CMP %10,r77 F34F E6 10 JNZ ADR=F361 F351 88 F0 54 70 MOVD %F054 ,r70 F355 88 00 4F 72 MOVD %004F ,r72 F359 52 08 MOV %08,B F35B EC TRAP 19 F608 F35C 72 02 4E MOV %02,r4E ;STATE := 02 F35F E0 18 JMP ADR=F379 F361 88 00 00 5B MOVD %0000 ,r5B F365 88 00 00 5D MOVD %0000 ,r5D F369 D5 5E CLR r5E F36B 52 08 MOV %08,B F36D 88 00 57 70 MOVD %0057 ,r70 F371 88 00 4F 72 MOVD %004F ,r72 F375 EC TRAP 19 F608 F376 72 02 4E MOV %02,r4E ;STATE := 02 F379 52 08 MOV %08,B F37B A3 9F 08 ANDP %9F,p08 F37E A4 60 08 ORP %60,p08 F381 EF TRAP 16 F143 F382 A3 9F 08 ANDP %9F,p08 F385 A4 00 08 ORP %00,p08 F388 42 03 4F MOV r03,r4F F38B 72 02 4E MOV %02,r4E ;STATE := 02 F38E 52 01 MOV %01,B F390 EF TRAP 16 F143 F391 A3 9F 08 ANDP %9F,p08 F394 A4 20 08 ORP %20,p08 F397 42 02 4F MOV r02,r4F F39A 72 02 4E MOV %02,r4E ;STATE := 02 F39D 52 01 MOV %01,B F39F EF TRAP 16 F143 F3A0 7D 10 77 CMP %10,r77 F3A3 E2 1E JZ ADR=F3C3 F3A5 7D 06 77 CMP %06,r77 F3A8 E2 06 JZ ADR=F3B0 F3AA 88 00 3E 70 MOVD %003E ,r70 F3AE E0 04 JMP ADR=F3B4 F3B0 88 F0 45 70 MOVD %F045 ,r70 F3B4 ED TRAP 18 F624 F3B5 52 08 MOV %08,B F3B7 88 00 57 70 MOVD %0057 ,r70 F3BB 88 00 4F 72 MOVD %004F ,r72 F3BF EC TRAP 19 F608 F3C0 72 02 4E MOV %02,r4E ;STATE := 02 F3C3 8C FC 71 BR @FC71 ; ;COMMAND 08 ; F3C6 A3 9F 08 ANDP %9F,p08 F3C9 A4 00 08 ORP %00,p08 F3CC 42 04 4F MOV r04,r4F F3CF 52 01 MOV %01,B F3D1 72 02 4E MOV %02,r4E ;STATE := 02 F3D4 EF TRAP 16 F143 F3D5 8C F3 1A BR @F31A ; ;COMMAND 09 ; F3D8 7D 1F 05 CMP %1F,r05 F3DB E6 F8 JNZ ADR=F3D5 F3DD 42 57 5C MOV r57,r5C F3E0 98 28 58 MOVD r28,r58 F3E3 42 29 59 MOV r29,r59 F3E6 98 2F 5E MOVD r2F,r5E F3E9 EA TRAP 21 F5FF F3EA 4D 01 2A CMP r01,r2A F3ED E2 06 JZ ADR=F3F5 F3EF 88 00 00 5B MOVD %0000 ,r5B F3F3 E0 04 JMP ADR=F3F9 F3F5 88 FF FF 5B MOVD %FFFF ,r5B F3F9 88 00 45 70 MOVD %0045 ,r70 F3FD ED TRAP 18 F624 F3FE 88 00 57 70 MOVD %0057 ,r70 F402 88 00 4F 72 MOVD %004F ,r72 F406 52 08 MOV %08,B F408 EC TRAP 19 F608 F409 72 01 4E MOV %01,r4E ;STATE := 01 F40C 8C FC 71 BR @FC71 ; ;COMMAND 07 ; F40F 88 00 27 70 MOVD %0027 ,r70 ;R6F,R70 := 0027 F413 52 0B MOV %0B,B F415 5D 08 LF415: CMP %08,B F417 E6 0D JNZ ADR=F426 F419 88 F0 5C 70 MOVD %F05C ,r70 ; R6F,R70 := F05C F41D 7D 01 4E CMP %01,r4E ;STATE = 01 ? F420 E6 04 JNZ ADR=F426 ;IF NOT JMP TO F426 F422 88 00 4F 70 MOVD %004F ,r70 ;..ELSE R6F,R70 := 004F F426 9A 70 LDA *r70 F428 F0 TRAP 15 F111 ;OUT TO U19 F429 D3 70 INC r70 F42B CA E8 DJNZ B ADR=F415 F42D B5 CLR A F42E F0 TRAP 15 F111 ;OUT TO U19 F42F 8C F3 1A BR @F31A F432 8C FC 7C BR @FC7C ; GET NEW COMMAND BUT ;...DON'T CLEAR BUFFER FIRST ; ; ;COMMAND 0E DECRYPT AND MOVE SEED KEY TO FINAL DESTINATION ; F435 12 57 MOV r57,A ;SAME AS OLD U7 F437 23 F7 AND %F7,A ;BIT 3 SET F439 24 10 OR %10,A ;BIT 4 CLEARED F43B 82 08 MOVP A,p08 ;WRITE IT TO PORT C F43D 7D 03 4E CMP %03,r4E ;STATE = 03 ? F440 E6 F0 JNZ ADR=F432 ;NO, EXIT WITHOUT ZEROING BUFFER ; ;ADDED IN 018X UNITS.. ; ; IF STATE = 03 THEN DO THIS... CALCULATE AND STORE THE SEED KEY ;SEED KEY NUMBER IS AT 4F, 7 BYTES OF DATA ARE AT 50..56 ; F442 77 10 05 39 BTJZ %10,r05 ADR=F47F F446 12 4F MOV r4F,A ;R4F HAS SEED KEY NUMBER F448 23 03 AND %03,A ;LIMIT RANGE 0..3 F44A D0 75 MOV A,r75 ;SAVE IT IN R75 F44C B3 INC A F44D C5 CLR B F44E 07 SETC F44F CF RLC B F450 BA FD DJNZ A ADR=F44F F452 D1 76 MOV B,r76 ;SET A BIT TO INDICATE SEED F454 33 05 AND r05,B ;....HAS BEEN LOADED F456 E6 27 JNZ ADR=F47F F458 98 07 58 MOVD r07,r58 ;UNIT ID (REVERSED) TO 57..5A F45B 98 09 5A MOVD r09,r5A F45E 88 00 00 5C MOVD %0000 ,r5C ;ZEROS TO 5B..5E F462 88 00 00 5E MOVD %0000 ,r5E ;57..5A ARE DATA TO DES INPUT F466 88 00 50 70 MOVD %0050 ,r70 ;SEED KEY KEY AT 50..56 F46A ED TRAP 18 F624 ;DES DECRYPT (CREATE SEED KEY) F46B 88 00 57 70 MOVD %0057 ,r70 F46F 7C 07 75 MPY %07,r75 ;COMPUTE SEED KEY LOCATION F472 A8 00 0A 72 MOVD %000A(B),r72 ;00-> 000A 01-> 0011 02-> 0018 F476 52 07 MOV %07,B ;03-> 001F F478 EC TRAP 19 F608 ;MOVE SEED KEY TO FINAL LOC. F479 44 76 05 OR r76,r05 ;UPDATE LOADING STATUS TO F47C F1 TRAP 14 F5EC ;....CRYPTO HEALTH BYTE F47D D1 26 MOV B,r26 F47F 8C F3 1A BR @F31A ;CLEAR KEY BUFFER 50..56 ;AND SET STATE := 00 ; ; COMMAND 0F PORT A TO U-19 ; F482 80 04 MOVP p04,A F484 F0 TRAP 15 F111 F485 8C FC 7C BR @FC7C ; ;COMMAND 0B WRITE NEW KEYS ; F488 88 00 57 70 MOVD %0057 ,r70 F48C 88 00 4F 72 MOVD %004F ,r72 F490 52 08 MOV %08,B F492 EC TRAP 19 F608 ;MOVE 8 BYTES FROM BUFFER TO R4F..R56 F493 72 03 4E MOV %03,r4E ;STATE := 03 F496 8C FC 71 BR @FC71 ; ;COMMAND 0C WRITE NEW ID NUMBER ; F499 76 10 05 1C BTJO %10,r05 ADR=F4B9 ;IF ALREADY LOADED DON'T DO AGAIN F49D 88 00 57 70 MOVD %0057 ,r70 F4A1 88 00 06 72 MOVD %0006 ,r72 F4A5 52 04 MOV %04,B F4A7 EC TRAP 19 F608 ;MOVE 4 ID BYTES TO R06..R09 F4A8 88 00 5B 70 MOVD %005B ,r70 F4AC 88 00 02 72 MOVD %0002 ,r72 F4B0 52 03 MOV %03,B F4B2 EC TRAP 19 F608 ; F4B3 74 10 05 OR %10,r05 ;SET "LOADED" STATUS BIT IN R05 F4B6 F1 TRAP 14 F5EC F4B7 D1 26 MOV B,r26 F4B9 8C FC 71 BR @FC71 ; ;COMMAND 0D WRITE CRYPTO HEALTH BYTE AND 4 UNIT ID BYTES TO U19 ; ; F4BC F1 TRAP 14 F5EC F4BD 12 05 MOV r05,A F4BF 23 1F AND %1F,A F4C1 4D 01 26 CMP r01,r26 F4C4 E6 02 JNZ ADR=F4C8 F4C6 24 80 OR %80,A F4C8 B8 PUSH A F4C9 EA TRAP 21 F5FF F4CA B9 POP A F4CB 4D 01 2A CMP r01,r2A F4CE E6 02 JNZ ADR=F4D2 F4D0 24 40 OR %40,A F4D2 F0 TRAP 15 F111 F4D3 88 00 06 70 MOVD %0006 ,r70 F4D7 52 04 MOV %04,B F4D9 9A 70 LDA *r70 F4DB F0 TRAP 15 F111 F4DC D3 70 INC r70 F4DE CA F9 DJNZ B ADR=F4D9 F4E0 8C FC 71 BR @FC71 ; ;COMMAND 0A CLEAR RAM ; F4E3 22 ED MOV %ED,A F4E5 88 00 69 70 MOVD %0069 ,r70 F4E9 9D 70 CMPA *r70 F4EB E6 1C JNZ ADR=F509 F4ED 7D 57 70 CMP %57,r70 F4F0 E2 05 JZ ADR=F4F7 F4F2 B3 INC A F4F3 D2 70 DEC r70 F4F5 E0 F2 JMP ADR=F4E9 F4F7 22 7F MOV %7F,A F4F9 C5 CLR B F4FA 0D LDSP F4FB 06 DINT F4FC C8 PUSH B ;PUSH ZEROS INTO ALL RAM F4FD BA FD DJNZ A ADR=F4FC F4FF 52 77 MOV %77,B F501 0D LDSP F502 72 00 2A MOV %00,r2A F505 72 00 26 MOV %00,r26 F508 05 EINT F509 8C FC 7C BR @FC7C ; ;COMMAND 11 ; F50C 8C FC 71 BR @FC71 ; ;COMMAND 12 ; F50F 22 ED MOV %ED,A F511 88 00 69 70 MOVD %0069 ,r70 F515 9D 70 CMPA *r70 F517 E6 F0 JNZ ADR=F509 F519 7D 57 70 CMP %57,r70 F51C E2 05 JZ ADR=F523 F51E B3 INC A F51F D2 70 DEC r70 F521 E0 F2 JMP ADR=F515 F523 88 F0 08 70 MOVD %F008 ,r70 F527 88 00 00 72 MOVD %0000 ,r72 F52B 9A 70 LDA *r70 F52D 48 00 72 ADD r00,r72 F530 79 00 71 ADC %00,r71 F533 D3 70 INC r70 F535 79 00 6F ADC %00,r6F F538 E6 F1 JNZ ADR=F52B F53A 8A F0 06 LDA @F006 F53D 4D 00 72 CMP r00,r72 F540 E6 2E JNZ ADR=F570 F542 8A F0 07 LDA @F007 F545 4D 00 71 CMP r00,r71 F548 E6 26 JNZ ADR=F570 F54A 88 00 7F 02 MOVD %007F ,r02 F54E 12 02 MOV r02,A F550 9B 02 STA *r02 F552 9D 02 CMPA *r02 F554 E6 1A JNZ ADR=F570 F556 B4 INV A F557 9B 02 STA *r02 F559 9D 02 CMPA *r02 F55B E6 13 JNZ ADR=F570 F55D B5 CLR A F55E 9B 02 STA *r02 F560 DB 02 DECD r02 F562 7D 02 02 CMP %02,r02 F565 E6 E7 JNZ ADR=F54E F567 22 55 MOV %55,A F569 52 02 MOV %02,B F56B C4 INV B F56C 5D FD CMP %FD,B F56E E2 02 JZ ADR=F572 F570 22 AA MOV %AA,A F572 A2 00 06 MOVP %00,p06 F575 A2 00 08 MOVP %00,p08 F578 A4 01 08 ORP %01,p08 F57B A3 FE 08 ANDP %FE,p08 F57E A2 02 08 MOVP %02,p08 F581 A4 01 08 ORP %01,p08 F584 A3 FE 08 ANDP %FE,p08 F587 82 06 MOVP A,p06 F589 A4 01 08 ORP %01,p08 F58C A3 FE 08 ANDP %FE,p08 F58F 80 0A MOVP p0A,A F591 82 06 MOVP A,p06 F593 A4 01 08 ORP %01,p08 F596 A3 FE 08 ANDP %FE,p08 F599 80 04 MOVP p04,A F59B 82 06 MOVP A,p06 F59D A4 01 08 ORP %01,p08 F5A0 A3 FE 08 ANDP %FE,p08 F5A3 A2 00 06 MOVP %00,p06 F5A6 A4 01 08 ORP %01,p08 F5A9 A3 FE 08 ANDP %FE,p08 F5AC A2 01 06 MOVP %01,p06 F5AF A4 01 08 ORP %01,p08 F5B2 A3 FE 08 ANDP %FE,p08 F5B5 A2 02 06 MOVP %02,p06 F5B8 A4 01 08 ORP %01,p08 F5BB A3 FE 08 ANDP %FE,p08 F5BE 22 04 MOV %04,A F5C0 B4 INV A F5C1 C0 MOV A,B F5C2 B4 INV A F5C3 84 08 ORP A,p08 F5C5 84 06 ORP A,p06 F5C7 A4 01 08 ORP %01,p08 F5CA 93 08 ANDP B,p08 F5CC 93 06 ANDP B,p06 F5CE A3 FE 08 ANDP %FE,p08 F5D1 BF RLC A F5D2 E7 EC JNC ADR=F5C0 F5D4 A4 01 08 ORP %01,p08 F5D7 A3 FE 08 ANDP %FE,p08 F5DA A4 01 08 ORP %01,p08 F5DD A3 FE 08 ANDP %FE,p08 F5E0 A2 00 08 MOVP %00,p08 F5E3 8C F5 0F BR @F50F ; ;COMMAND 13 ; F5E6 12 57 MOV r57,A F5E8 F0 TRAP 15 F111 F5E9 8C FC 71 BR @FC71 F5EC 88 00 25 70 MOVD %0025 ,r70 F5F0 C5 CLR B F5F1 9A 70 LDA *r70 F5F3 38 00 ADD r00,B F5F5 59 00 ADC %00,B F5F7 D2 70 DEC r70 F5F9 7D 01 70 CMP %01,r70 F5FC E6 F3 JNZ ADR=F5F1 F5FE 0A RETS F5FF 32 29 MOV r29,B F601 38 28 ADD r28,B F603 39 27 ADC r27,B F605 59 00 ADC %00,B F607 0A RETS ; ; ;MEMORY BLOCK MOVE R69,R70 POINTS TO SOURCE DATA ; R71,R72 POINTS TO DESTINATION DATA ; B HAS BYTE COUNT ; F608 9A 70 LDA *r70 F60A 9B 72 STA *r72 F60C D3 70 INC r70 F60E D3 72 INC r72 F610 CA F6 DJNZ B ADR=F608 F612 0A RETS F613 9A 70 LDA *r70 F615 D0 76 MOV A,r76 F617 9A 72 LDA *r72 F619 15 76 XOR r76,A F61B 9B 72 STA *r72 F61D D3 70 INC r70 F61F D3 72 INC r72 F621 CA F0 DJNZ B ADR=F613 F623 0A RETS ; ; DES DECRYPTION ROUTINE R70 POINTS TO 7 BYTE KEY ; DATA INPUT AND OUTPUT IS 8 BYTES IN R57..R5E F624 52 07 MOV %07,B F626 88 00 4F 72 MOVD %004F ,r72 F62A 9A 70 LDA *r70 F62C 9B 72 STA *r72 ;MOVE KEY TO R4F..R55 F62E D3 70 INC r70 F630 D3 72 INC r72 F632 CA F6 DJNZ B ADR=F62A F634 72 10 74 MOV %10,r74 F637 DE 55 RL r55 F639 DD 6D RRC r6D F63B DE 55 RL r55 F63D DD 6C RRC r6C F63F DE 55 RL r55 F641 DD 6B RRC r6B F643 DE 55 RL r55 F645 DD 6A RRC r6A F647 DE 55 RL r55 F649 DD 67 RRC r67 F64B DE 55 RL r55 F64D DD 68 RRC r68 F64F DE 55 RL r55 F651 DD 69 RRC r69 F653 DE 55 RL r55 F655 DD 6D RRC r6D F657 DE 54 RL r54 F659 DD 6C RRC r6C F65B DE 54 RL r54 F65D DD 6B RRC r6B F65F DE 54 RL r54 F661 DD 6A RRC r6A F663 DE 54 RL r54 F665 DD 67 RRC r67 F667 DE 54 RL r54 F669 DD 68 RRC r68 F66B DE 54 RL r54 F66D DD 69 RRC r69 F66F DE 54 RL r54 F671 DD 6D RRC r6D F673 DE 54 RL r54 F675 DD 6C RRC r6C F677 DE 53 RL r53 F679 DD 6B RRC r6B F67B DE 53 RL r53 F67D DD 6A RRC r6A F67F DE 53 RL r53 F681 DD 67 RRC r67 F683 DE 53 RL r53 F685 DD 68 RRC r68 F687 DE 53 RL r53 F689 DD 69 RRC r69 F68B DE 53 RL r53 F68D DD 6D RRC r6D F68F DE 53 RL r53 F691 DD 6C RRC r6C F693 DE 53 RL r53 F695 DD 6B RRC r6B F697 DE 52 RL r52 F699 DD 6A RRC r6A F69B DE 52 RL r52 F69D DD 67 RRC r67 F69F DE 52 RL r52 F6A1 DD 68 RRC r68 F6A3 DE 52 RL r52 F6A5 DD 69 RRC r69 F6A7 DE 52 RL r52 F6A9 DD 6D RRC r6D F6AB DE 52 RL r52 F6AD DD 6C RRC r6C F6AF DE 52 RL r52 F6B1 DD 6B RRC r6B F6B3 DE 52 RL r52 F6B5 DD 6A RRC r6A F6B7 DE 51 RL r51 F6B9 DD 67 RRC r67 F6BB DE 51 RL r51 F6BD DD 68 RRC r68 F6BF DE 51 RL r51 F6C1 DD 69 RRC r69 F6C3 DE 51 RL r51 F6C5 DD 6D RRC r6D F6C7 DE 51 RL r51 F6C9 DD 6C RRC r6C F6CB DE 51 RL r51 F6CD DD 6B RRC r6B F6CF DE 51 RL r51 F6D1 DD 6A RRC r6A F6D3 DE 51 RL r51 F6D5 DD 67 RRC r67 F6D7 DE 50 RL r50 F6D9 DD 68 RRC r68 F6DB DE 50 RL r50 F6DD DD 69 RRC r69 F6DF DE 50 RL r50 F6E1 DD 6D RRC r6D F6E3 DE 50 RL r50 F6E5 DD 6C RRC r6C F6E7 DE 50 RL r50 F6E9 DD 6B RRC r6B F6EB DE 50 RL r50 F6ED DD 6A RRC r6A F6EF DE 50 RL r50 F6F1 DD 67 RRC r67 F6F3 DE 50 RL r50 F6F5 DD 68 RRC r68 F6F7 DE 4F RL r4F F6F9 DD 69 RRC r69 F6FB DE 4F RL r4F F6FD DD 6D RRC r6D F6FF DE 4F RL r4F F701 DD 6C RRC r6C F703 DE 4F RL r4F F705 DD 6B RRC r6B F707 DE 4F RL r4F F709 DD 6A RRC r6A F70B DE 4F RL r4F F70D DD 67 RRC r67 F70F DE 4F RL r4F F711 DD 68 RRC r68 F713 DE 4F RL r4F F715 DD 69 RRC r69 F717 42 6A 6E MOV r6A,r6E F71A D7 6E SWAP r6E F71C 52 08 MOV %08,B F71E 72 40 73 MOV %40,r73 F721 B5 CLR A F722 47 73 57 02 BTJZ r73,r57 ADR=F728 F726 24 80 OR %80,A F728 47 73 58 02 BTJZ r73,r58 ADR=F72E F72C 24 40 OR %40,A F72E 47 73 59 02 BTJZ r73,r59 ADR=F734 F732 24 20 OR %20,A F734 47 73 5A 02 BTJZ r73,r5A ADR=F73A F738 24 10 OR %10,A F73A 47 73 5B 02 BTJZ r73,r5B ADR=F740 F73E 24 08 OR %08,A F740 47 73 5C 02 BTJZ r73,r5C ADR=F746 F744 24 04 OR %04,A F746 47 73 5D 02 BTJZ r73,r5D ADR=F74C F74A 24 02 OR %02,A F74C 47 73 5E 02 BTJZ r73,r5E ADR=F752 F750 24 01 OR %01,A F752 AB 00 5E STA @005E(B) F755 DD 73 RRC r73 F757 DD 73 RRC r73 F759 CA C6 DJNZ B ADR=F721 F75B B5 CLR A F75C 77 04 6C 02 BTJZ %04,r6C ADR=F762 F760 24 20 OR %20,A F762 77 80 6B 02 BTJZ %80,r6B ADR=F768 F766 24 10 OR %10,A F768 77 20 6C 02 BTJZ %20,r6C ADR=F76E F76C 24 08 OR %08,A F76E 77 01 6B 02 BTJZ %01,r6B ADR=F774 F772 24 04 OR %04,A F774 77 80 6D 02 BTJZ %80,r6D ADR=F77A F778 24 02 OR %02,A F77A 77 08 6D 02 BTJZ %08,r6D ADR=F780 F77E 24 01 OR %01,A F780 D0 56 MOV A,r56 F782 B5 CLR A F783 77 20 6D 02 BTJZ %20,r6D ADR=F789 F787 24 20 OR %20,A F789 77 01 6E 02 BTJZ %01,r6E ADR=F78F F78D 24 10 OR %10,A F78F 77 02 6C 02 BTJZ %02,r6C ADR=F795 F793 24 08 OR %08,A F795 77 04 6D 02 BTJZ %04,r6D ADR=F79B F799 24 04 OR %04,A F79B 77 08 6B 02 BTJZ %08,r6B ADR=F7A1 F79F 24 02 OR %02,A F7A1 77 40 6C 02 BTJZ %40,r6C ADR=F7A7 F7A5 24 01 OR %01,A F7A7 D0 55 MOV A,r55 F7A9 B5 CLR A F7AA 77 02 6B 02 BTJZ %02,r6B ADR=F7B0 F7AE 24 20 OR %20,A F7B0 77 20 6B 02 BTJZ %20,r6B ADR=F7B6 F7B4 24 10 OR %10,A F7B6 77 10 6C 02 BTJZ %10,r6C ADR=F7BC F7BA 24 08 OR %08,A F7BC 77 10 6D 02 BTJZ %10,r6D ADR=F7C2 F7C0 24 04 OR %04,A F7C2 77 04 6E 02 BTJZ %04,r6E ADR=F7C8 F7C6 24 02 OR %02,A F7C8 77 01 6D 02 BTJZ %01,r6D ADR=F7CE F7CC 24 01 OR %01,A F7CE D0 54 MOV A,r54 F7D0 B5 CLR A F7D1 77 01 6C 02 BTJZ %01,r6C ADR=F7D7 F7D5 24 20 OR %20,A F7D7 77 02 6D 02 BTJZ %02,r6D ADR=F7DD F7DB 24 10 OR %10,A F7DD 77 02 6E 02 BTJZ %02,r6E ADR=F7E3 F7E1 24 08 OR %08,A F7E3 77 10 6B 02 BTJZ %10,r6B ADR=F7E9 F7E7 24 04 OR %04,A F7E9 77 08 6C 02 BTJZ %08,r6C ADR=F7EF F7ED 24 02 OR %02,A F7EF 77 40 6D 02 BTJZ %40,r6D ADR=F7F5 F7F3 24 01 OR %01,A F7F5 D0 53 MOV A,r53 F7F7 B5 CLR A F7F8 77 08 68 02 BTJZ %08,r68 ADR=F7FE F7FC 24 20 OR %20,A F7FE 77 01 67 02 BTJZ %01,r67 ADR=F804 F802 24 10 OR %10,A F804 77 20 69 02 BTJZ %20,r69 ADR=F80A F808 24 08 OR %08,A F80A 77 80 68 02 BTJZ %80,r68 ADR=F810 F80E 24 04 OR %04,A F810 77 20 67 02 BTJZ %20,r67 ADR=F816 F814 24 02 OR %02,A F816 77 02 6A 02 BTJZ %02,r6A ADR=F81C F81A 24 01 OR %01,A F81C D0 52 MOV A,r52 F81E B5 CLR A F81F 77 40 69 02 BTJZ %40,r69 ADR=F825 F823 24 20 OR %20,A F825 77 10 68 02 BTJZ %10,r68 ADR=F82B F829 24 10 OR %10,A F82B 77 02 67 02 BTJZ %02,r67 ADR=F831 F82F 24 08 OR %08,A F831 77 80 67 02 BTJZ %80,r67 ADR=F837 F835 24 04 OR %04,A F837 77 08 69 02 BTJZ %08,r69 ADR=F83D F83B 24 02 OR %02,A F83D 77 10 67 02 BTJZ %10,r67 ADR=F843 F841 24 01 OR %01,A F843 D0 51 MOV A,r51 F845 B5 CLR A F846 77 01 68 02 BTJZ %01,r68 ADR=F84C F84A 24 20 OR %20,A F84C 77 08 67 02 BTJZ %08,r67 ADR=F852 F850 24 10 OR %10,A F852 77 20 68 02 BTJZ %20,r68 ADR=F858 F856 24 08 OR %08,A F858 77 01 6A 02 BTJZ %01,r6A ADR=F85E F85C 24 04 OR %04,A F85E 77 04 69 02 BTJZ %04,r69 ADR=F864 F862 24 02 OR %02,A F864 77 08 6A 02 BTJZ %08,r6A ADR=F86A F868 24 01 OR %01,A F86A D0 50 MOV A,r50 F86C B5 CLR A F86D 77 40 67 02 BTJZ %40,r67 ADR=F873 F871 24 20 OR %20,A F873 77 04 68 02 BTJZ %04,r68 ADR=F879 F877 24 10 OR %10,A F879 77 04 67 02 BTJZ %04,r67 ADR=F87F F87D 24 08 OR %08,A F87F 77 01 69 02 BTJZ %01,r69 ADR=F885 F883 24 04 OR %04,A F885 77 80 69 02 BTJZ %80,r69 ADR=F88B F889 24 02 OR %02,A F88B 77 10 69 02 BTJZ %10,r69 ADR=F891 F88F 24 01 OR %01,A F891 D0 4F MOV A,r4F F893 32 74 MOV r74,B F895 AA FA 60 LDA @FA60(B) F898 73 0F 6E AND %0F,r6E F89B DD 6E RRC r6E F89D DD 6D RRC r6D F89F DD 6C RRC r6C F8A1 DD 6B RRC r6B F8A3 E7 03 JNC ADR=F8A8 F8A5 74 08 6E OR %08,r6E F8A8 73 0F 6A AND %0F,r6A F8AB DD 6A RRC r6A F8AD DD 69 RRC r69 F8AF DD 68 RRC r68 F8B1 DD 67 RRC r67 F8B3 E7 03 JNC ADR=F8B8 F8B5 74 08 6A OR %08,r6A F8B8 BA DE DJNZ A ADR=F898 F8BA 98 60 5C MOVD r60,r5C F8BD 98 62 5E MOVD r62,r5E F8C0 32 5E MOV r5E,B F8C2 12 5B MOV r5B,A F8C4 BD RRC A F8C5 CD RRC B F8C6 CC RR B F8C7 CC RR B F8C8 35 56 XOR r56,B F8CA 53 3F AND %3F,B F8CC AA FA 71 LDA @FA71(B) F8CF 27 08 03 BTJZ %08,A ADR=F8D5 F8D2 75 80 65 XOR %80,r65 F8D5 27 04 03 BTJZ %04,A ADR=F8DB F8D8 75 80 64 XOR %80,r64 F8DB 27 02 03 BTJZ %02,A ADR=F8E1 F8DE 75 02 64 XOR %02,r64 F8E1 27 01 03 BTJZ %01,A ADR=F8E7 F8E4 75 02 63 XOR %02,r63 F8E7 32 5E MOV r5E,B F8E9 12 5D MOV r5D,A F8EB BF RLC A F8EC CF RLC B F8ED 35 55 XOR r55,B F8EF 53 3F AND %3F,B F8F1 AA FA B1 LDA @FAB1(B) F8F4 27 08 03 BTJZ %08,A ADR=F8FA F8F7 75 08 65 XOR %08,r65 F8FA 27 04 03 BTJZ %04,A ADR=F900 F8FD 75 10 63 XOR %10,r63 F900 27 02 03 BTJZ %02,A ADR=F906 F903 75 40 66 XOR %40,r66 F906 27 01 03 BTJZ %01,A ADR=F90C F909 75 40 64 XOR %40,r64 F90C 32 5D MOV r5D,B F90E 12 B1 MOV rB1,A F910 B0 TSTA F911 CD RRC B F912 CC RR B F913 CC RR B F914 35 54 XOR r54,B F916 53 3F AND %3F,B F918 AA FA F1 LDA @FAF1(B) F91B 27 08 03 BTJZ %08,A ADR=F921 F91E 75 01 64 XOR %01,r64 F921 27 04 03 BTJZ %04,A ADR=F927 F924 75 01 65 XOR %01,r65 F927 27 02 03 BTJZ %02,A ADR=F92D F92A 75 04 63 XOR %04,r63 F92D 27 01 03 BTJZ %01,A ADR=F933 F930 75 04 66 XOR %04,r66 F933 32 5D MOV r5D,B F935 12 5C MOV r5C,A F937 BF RLC A F938 CF RLC B F939 35 53 XOR r53,B F93B 53 3F AND %3F,B F93D AA FB 31 LDA @FB31(B) F940 27 08 03 BTJZ %08,A ADR=F946 F943 75 40 63 XOR %40,r63 F946 27 04 03 BTJZ %04,A ADR=F94C F949 75 10 64 XOR %10,r64 F94C 27 02 03 BTJZ %02,A ADR=F952 F94F 75 40 65 XOR %40,r65 F952 27 01 03 BTJZ %01,A ADR=F958 F955 75 80 66 XOR %80,r66 F958 32 5C MOV r5C,B F95A 12 5D MOV r5D,A F95C BD RRC A F95D CD RRC B F95E CC RR B F95F CC RR B F960 35 52 XOR r52,B F962 53 3F AND %3F,B F964 AA FB 71 LDA @FB71(B) F967 27 08 03 BTJZ %08,A ADR=F96D F96A 75 01 66 XOR %01,r66 F96D 27 04 03 BTJZ %04,A ADR=F973 F970 75 04 65 XOR %04,r65 F973 27 02 03 BTJZ %02,A ADR=F979 F976 75 80 63 XOR %80,r63 F979 27 01 03 BTJZ %01,A ADR=F97F F97C 75 20 66 XOR %20,r66 F97F 32 5C MOV r5C,B F981 12 5B MOV r5B,A F983 BF RLC A F984 CF RLC B F985 35 51 XOR r51,B F987 53 3F AND %3F,B F989 AA FB B1 LDA @FBB1(B) F98C 27 08 03 BTJZ %08,A ADR=F992 F98F 75 10 66 XOR %10,r66 F992 27 04 03 BTJZ %04,A ADR=F998 F995 75 08 63 XOR %08,r63 F998 27 02 03 BTJZ %02,A ADR=F99E F99B 75 20 65 XOR %20,r65 F99E 27 01 03 BTJZ %01,A ADR=F9A4 F9A1 75 20 64 XOR %20,r64 F9A4 32 5B MOV r5B,B F9A6 12 5C MOV r5C,A F9A8 BD RRC A F9A9 CD RRC B F9AA CC RR B F9AB CC RR B F9AC 35 50 XOR r50,B F9AE 53 3F AND %3F,B F9B0 AA FB F1 LDA @FBF1(B) F9B3 27 08 03 BTJZ %08,A ADR=F9B9 F9B6 75 01 63 XOR %01,r63 F9B9 27 04 03 BTJZ %04,A ADR=F9BF F9BC 75 10 65 XOR %10,r65 F9BF 27 02 03 BTJZ %02,A ADR=F9C5 F9C2 75 04 64 XOR %04,r64 F9C5 27 01 03 BTJZ %01,A ADR=F9CB F9C8 75 02 66 XOR %02,r66 F9CB 32 5B MOV r5B,B F9CD 12 5E MOV r5E,A F9CF BF RLC A F9D0 CF RLC B F9D1 35 4F XOR r4F,B F9D3 53 3F AND %3F,B F9D5 AA FC 31 LDA @FC31(B) F9D8 27 08 03 BTJZ %08,A ADR=F9DE F9DB 75 08 66 XOR %08,r66 F9DE 27 04 03 BTJZ %04,A ADR=F9E4 F9E1 75 20 63 XOR %20,r63 F9E4 27 02 03 BTJZ %02,A ADR=F9EA F9E7 75 02 65 XOR %02,r65 F9EA 27 01 03 BTJZ %01,A ADR=F9F0 F9ED 75 08 64 XOR %08,r64 F9F0 7D 01 74 CMP %01,r74 F9F3 E2 17 JZ ADR=FA0C F9F5 98 60 50 MOVD r60,r50 F9F8 98 62 52 MOVD r62,r52 F9FB 98 64 60 MOVD r64,r60 F9FE 98 66 62 MOVD r66,r62 FA01 98 50 64 MOVD r50,r64 FA04 98 52 66 MOVD r52,r66 FA07 D2 74 DEC r74 FA09 8C F7 5B BR @F75B FA0C 52 08 MOV %08,B FA0E 72 01 73 MOV %01,r73 FA11 B5 CLR A FA12 47 73 62 02 BTJZ r73,r62 ADR=FA18 FA16 24 80 OR %80,A FA18 47 73 66 02 BTJZ r73,r66 ADR=FA1E FA1C 24 40 OR %40,A FA1E 47 73 61 02 BTJZ r73,r61 ADR=FA24 FA22 24 20 OR %20,A FA24 47 73 65 02 BTJZ r73,r65 ADR=FA2A FA28 24 10 OR %10,A FA2A 47 73 60 02 BTJZ r73,r60 ADR=FA30 FA2E 24 08 OR %08,A FA30 47 73 64 02 BTJZ r73,r64 ADR=FA36 FA34 24 04 OR %04,A FA36 47 73 5F 02 BTJZ r73,r5F ADR=FA3C FA3A 24 02 OR %02,A FA3C 47 73 63 02 BTJZ r73,r63 ADR=FA42 FA40 24 01 OR %01,A FA42 AB 00 56 STA @0056(B) FA45 DE 73 RL r73 FA47 CA C8 DJNZ B ADR=FA11 FA49 88 00 00 50 MOVD %0000 ,r50 FA4D 88 00 00 52 MOVD %0000 ,r52 FA51 88 00 00 54 MOVD %0000 ,r54 FA55 88 00 00 56 MOVD %0000 ,r56 FA59 72 00 4E MOV %00,r4E ;STATE := 00 FA5C A2 00 06 MOVP %00,p06 FA5F 0A RETS FA60 00 NOP ; ;KEY LEFT SHIFT TABLE FA61 01 01 02 02 02 02 02 02 01 02 02 02 02 02 02 01 ;THE 8 DES "S" BOXES ; FA71 0E 00 04 0F 0D 07 01 04 02 0E 0F 02 0B 0D 08 01 FA81 03 0A 0A 06 06 0C 0C 0B 05 09 09 05 00 03 07 08 FA91 04 0F 01 0C 0E 08 08 02 0D 04 06 09 02 01 0B 07 FAA1 0F 05 0C 0B 09 03 07 0E 03 0A 0A 00 05 06 00 0D FAB1 0F 03 01 0D 08 04 0E 07 06 0F 0B 02 03 08 04 0E FAC1 09 0C 07 00 02 01 0D 0A 0C 06 00 09 05 0B 0A 05 FAD1 00 0D 0E 08 07 0A 0B 01 0A 03 04 0F 0D 04 01 02 FAE1 05 0B 08 06 0C 07 06 0C 09 00 03 05 02 0E 0F 09 FAF1 0A 0D 00 07 09 00 0E 09 06 03 03 04 0F 06 05 0A FB01 01 02 0D 08 0C 05 07 0E 0B 0C 04 0B 02 0F 08 01 FB11 0D 01 06 0A 04 0D 09 00 08 06 0F 09 03 08 00 07 FB21 0B 04 01 0F 02 0E 0C 03 05 0B 0A 05 0E 02 07 0C FB31 07 0D 0D 08 0E 0B 03 05 00 06 06 0F 09 00 0A 03 FB41 01 04 02 07 08 02 05 0C 0B 01 0C 0A 04 0E 0F 09 FB51 0A 03 06 0F 09 00 00 06 0C 0A 0B 01 07 0D 0D 08 FB61 0F 09 01 04 03 05 0E 0B 05 0C 02 07 08 02 04 0E FB71 02 0E 0C 0B 04 02 01 0C 07 04 0A 07 0B 0D 06 01 FB81 08 05 05 00 03 0F 0F 0A 0D 03 00 09 0E 08 09 06 FB91 04 0B 02 08 01 0C 0B 07 0A 01 0D 0E 07 02 08 0D FBA1 0F 06 09 0F 0C 00 05 09 06 0A 03 04 00 05 0E 03 FBB1 0C 0A 01 0F 0A 04 0F 02 09 07 02 0C 06 09 08 05 FBC1 00 06 0D 01 03 0D 04 0E 0E 00 07 0B 05 03 0B 08 FBD1 09 04 0E 03 0F 02 05 0C 02 09 08 05 0C 0F 03 0A FBE1 07 0B 00 0E 04 01 0A 07 01 06 0D 00 0B 08 06 0D FBF1 04 0D 0B 00 02 0B 0E 07 0F 04 00 09 08 01 0D 0A FC01 03 0E 0C 03 09 05 07 0C 05 02 0A 0F 06 08 01 06 FC11 01 06 04 0B 0B 0D 0D 08 0C 01 03 04 07 0A 0E 07 FC21 0A 09 0F 05 06 00 08 0F 00 0E 05 02 09 03 02 0C FC31 0D 01 02 0F 08 0D 04 08 06 0A 0F 03 0B 07 01 04 FC41 0A 0C 09 05 03 06 0E 0B 05 00 00 0E 0C 09 07 02 FC51 07 02 0B 01 04 0E 01 07 09 04 0C 0A 0E 08 02 0D FC61 00 0F 06 0C 0A 09 0D 00 0F 03 03 05 05 06 08 0B ; ;COME HERE AT END OF EACH COMMAND TO GET THE NEXT ONE... ; FC71 52 57 MOV %57,B ;CLEAR R57..R77 FC73 B5 CLR A FC74 AB 00 00 STA @0000(B) FC77 C3 INC B FC78 5D 78 CMP %78,B FC7A E6 F8 JNZ ADR=FC74 FC7C EB TRAP 20 F0B4 ;GET A COMMAND FC7D 32 77 MOV r77,B FC7F 5C 03 MPY %03,B ;COMPUTE JUMP TABLE ADDRESS FC81 AC F0 78 BR @F078(B) ;EXECUTE COMMAND FC84 A2 00 0B MOVP %00,p0B FC87 E0 FE JMP ADR=FC87 FC89 06 RESET: DINT FC8A A2 00 10 MOVP %00,p10 FC8D A2 30 00 MOVP %30,p00 FC90 A3 10 00 ANDP %10,p00 FC93 A7 01 04 03 BTJZP %01,p04 ADR=FC9A ;IF U7-6 LOW, JUMP FC97 8C FD 40 BR @FD40 FC9A A2 00 0B MOVP %00,p0B FC9D 52 08 MOV %08,B FC9F 80 0A MOVP p0A,A FCA1 AB 00 02 STA @0002(B) ; MOVE "D" PORT DATA TO 0A..03 FCA4 CA F9 DJNZ B ADR=FC9F FCA6 88 00 7F 01 MOVD %007F ,r01 ;A := 00 B:= 7F FCAA 9B 01 STA *r01 ;CLEAR 0B..7F FCAC C2 DEC B FCAD 5D 0A CMP %0A,B FCAF E6 F9 JNZ ADR=FCAA FCB1 88 00 00 0C MOVD %0000 ,r0C ;CLEAR 0B,0C FCB5 88 00 00 0E MOVD %0000 ,r0E ;CLEAR 0D,0E FCB9 88 00 00 10 MOVD %0000 ,r10 ;CLEAR 0F,10 FCBD 88 00 00 12 MOVD %0000 ,r12 ;CLEAR 11,12 FCC1 88 FF FF 76 MOVD %FFFF ,r76 ; FF TO 75,76 FCC5 9A 76 LDA *r76 ; A := (FFFF) FCC7 48 00 12 ADD r00,r12 FCCA 79 00 11 ADC %00,r11 FCCD DB 76 DECD r76 FCCF 9A 76 LDA *r76 FCD1 48 00 11 ADD r00,r11 FCD4 79 00 10 ADC %00,r10 FCD7 DB 76 DECD r76 FCD9 9A 76 LDA *r76 FCDB 48 00 10 ADD r00,r10 FCDE 79 00 0F ADC %00,r0F FCE1 DB 76 DECD r76 FCE3 9A 76 LDA *r76 FCE5 48 00 0F ADD r00,r0F FCE8 79 00 0E ADC %00,r0E FCEB DB 76 DECD r76 FCED 9A 76 LDA *r76 FCEF 48 00 0E ADD r00,r0E FCF2 79 00 0D ADC %00,r0D FCF5 DB 76 DECD r76 FCF7 9A 76 LDA *r76 FCF9 48 00 0D ADD r00,r0D FCFC 79 00 0C ADC %00,r0C FCFF DB 76 DECD r76 FD01 9A 76 LDA *r76 FD03 48 00 0C ADD r00,r0C FD06 79 00 0B ADC %00,r0B FD09 DB 76 DECD r76 FD0B 9A 76 LDA *r76 FD0D 48 00 0B ADD r00,r0B FD10 79 00 12 ADC %00,r12 FD13 DB 76 DECD r76 FD15 7D F0 75 CMP %F0,r75 FD18 E6 AB JNZ ADR=FCC5 FD1A 7D 07 76 CMP %07,r76 FD1D E6 A6 JNZ ADR=FCC5 FD1F D5 76 CLR r76 FD21 52 08 MOV %08,B FD23 AA 00 0A LDA @000A(B) FD26 D0 75 MOV A,r75 FD28 AA 00 02 LDA @0002(B) FD2B 15 75 XOR r75,A FD2D 44 00 76 OR r00,r76 FD30 CA F1 DJNZ B ADR=FD23 FD32 12 76 MOV r76,A FD34 E2 04 JZ ADR=FD3A FD36 01 IDLE FD37 8C FD 36 BR @FD36 FD3A A2 80 00 MOVP %80,p00 FD3D 8C AA 00 BR @AA00 ;;COME HERE FROM RESET ROUTINE AT FC97 FD40 52 77 MOV %77,B ;STACK POINTER = 77 FD42 0D LDSP FD43 A2 00 06 MOVP %00,p06 FD46 A2 95 08 MOVP %95,p08 FD49 A2 FF 09 MOVP %FF,p09 FD4C A2 00 0B MOVP %00,p0B FD4F 05 EINT FD50 52 2E MOV %2E,B FD52 B5 CLR A FD53 AB 00 00 STA @0000(B) ;CLEAR R2E..R7F FD56 C3 INC B FD57 57 80 F9 BTJZ %80,B ADR=FD53 FD5A 8C FC 71 BR @FC71 FF40 A6 80 00 03 BTJOP %80,p00 ADR=FF47 FF44 8C F1 5F BR @F15F FF47 8C AA 00 BR @AA00 FF4A A6 80 00 03 BTJOP %80,p00 ADR=FF51 FF4E 8C F1 5F BR @F15F FF51 8C AA 00 BR @AA00 FF54 A6 80 00 03 BTJOP %80,p00 ADR=FF5B FF58 8C F1 5F BR @F15F FF5B 8C AA 00 BR @AA00 FF5E A6 80 00 03 BTJOP %80,p00 ADR=FF65 FF62 8C F1 5F BR @F15F FF65 8C 98 00 BR @9800 FF68 A6 80 00 03 BTJOP %80,p00 ADR=FF6F FF6C 8C F1 5F BR @F15F FF6F 8C 88 00 BR @8800 FF72 A6 80 00 03 BTJOP %80,p00 ADR=FF79 FF76 8C F1 5F BR @F15F FF79 8C 78 00 BR @7800 FF7C FF TRAP 0 FC89 FF7D FF TRAP 0 FC89 FFD0 FF 72 FC 89 F5 FF F0 B4 F6 08 F6 24 F6 13 F1 43 FFE0 F1 11 F5 EC FC 89 FF 68 FC 89 FC 89 FC 89 FC 89 FFF0 FC 89 FC 89 FF 5E FC 89 FF 54 FF 4A FF 40 FC 89