Main Index Routine Index Memory Index
Previous Page Next Page


Routine $0206:   "M-W" command body, decrypt [$0300-$0380] code area

Memory commands ("M-W", "M-E") are cached in the 1541 [$0200-$0229] "Buffer for command string", starting at $0200 for each command. The "M-E" command was 5 bytes long and overwrote the first 5 bytes of the "M-W" command which are no longer needed as the "M-W" command was already executed ($15 data bytes copied to [$B5-$C9]). So the body of the "M-W" command remains at $0206-$0217: our routine here. This routine enables Interrupts again but Job #4's execution is not enforced here. Then [$0300-$0380] is decrypted and executed.

Jump from $07FD: 0206: 58 CLI ; enable Interrupts for executing Job #4 (read Sector 3 to [$07xx]) 0207: 49 36 EOR #$36 ; XOR with parity of last read data buffer (Sector 15), should be $35 0209: 85 06 STA $06 ; [$06]:= ($35 xor $36) = #$03, so [$05/$06] points to $0300 Jump from $0213: 020B: B1 05 LDA ($05),Y 020D: 59 17 04 EOR $0417,Y 0210: 91 05 STA ($05),Y ; decryption, [$0300-$0380]:= [$0300-$0380] xor [$0417-$0497] 0212: 88 DEY 0213: 10 F6 BPL $020B 0215: 6C 05 00 JMP ($0005) ; jump to $0300 (see above $0209 statement) Previous Page / Next Page