Main Index Routine Index Memory Index
Previous Page Next Page


Routine $0300:   Transfer "general loading loop" & "exit-routines" to C64

This routine primarily transfers the "general loading loop" & "exit-routines" to the C64. It also reads the final RapidLok sector 3 from Track 18 into the drive memory and decrypts [$039C-$07FF] (~ RapidLok code routines).

Jump from $0215: 0300: A2 80 LDX #$80 0302: D0 02 BNE $0306 Jump from $030C: 0304: 86 04 STX $04 ; set $80 = Read sector to Job #4 (Track 18 Sector 3) Jump from $0302, $0309: 0306: 58 CLI ; enable Interrupts for executing Job #4 (read T18 S3 to [$07xx]) 0307: A5 04 LDA $04 ; get Job #4 status/result 0309: 30 FB BMI $0306 030B: 4A LSR A ; A = Job result (=1 if all OK) 030C: D0 F6 BNE $0304 ; branch to restart Job if something wrong with Job result 030E: 78 SEI 030F: 85 24 STA $24 ; [$24]:=0 0311: A2 11 LDX #$11 Jump from $0319: 0313: 95 B5 STA $B5,X ; [$B5..$C5]:=0 ("M-W" data), [$C6..$C9]=$00,$9B,$36,$CA remains 0315: 9D 08 02 STA $0208,X ; [$0208..$0218]:=0 ($0206 routine, "M-W" data) 0318: CA DEX 0319: 10 F8 BPL $0313 031B: A2 01 LDX #$01 031D: A5 C7 LDA $C7 031F: 4A LSR A 0320: 85 0B STA $0B 0322: AC 94 02 LDY $0294 ; "Current buffer-index" (e.g. Y=2) Jump from $032E: 0325: B5 77 LDA $77,X ; start track & sector ID of file to find & read (encrypted) 0327: 59 17 07 EOR $0717,Y 032A: 95 D6 STA $D6,X ; [$D6-$D7]:= [$77-$78] xor [$0718-$0719] (if e.g. Y=2) 032C: 88 DEY 032D: CA DEX 032E: 10 F5 BPL $0325 0330: 29 80 AND #$80 0332: 4A LSR A 0333: 4A LSR A 0334: 4A LSR A 0335: 4D B5 03 EOR $03B5 ; [$03B5] = CLI command at $02DF in $02B6 "exit-routine" (C64) 0338: 8D B5 03 STA $03B5 ; [$03B5]:= [$03B5] xor (([$D7] and #$80) >> 3) 033B: A2 03 LDX #$03 033D: 86 31 STX $31 ; hi address for following file transfer in $0625 routine 033F: E8 INX 0340: A0 9C LDY #$9C Jump from $0353, $0358: 0342: B1 05 LDA ($05),Y 0344: 45 C7 EOR $C7 0346: 91 05 STA ($05),Y ; decrypt [$039C-$07FF] 0348: 66 24 ROR $24 034A: 26 C9 ROL $C9 034C: 26 C8 ROL $C8 034E: 26 C7 ROL $C7 0350: 26 24 ROL $24 0352: C8 INY 0353: D0 ED BNE $0342 0355: E6 06 INC $06 0357: CA DEX 0358: 10 E8 BPL $0342 035A: 86 C7 STX $C7 ; [$C7]:=$FF 035C: 86 C8 STX $C8 ; [$C8]:=$FF 035E: 86 C9 STX $C9 ; [$C9]:=$FF 0360: A0 74 LDY #$74 0362: 84 B5 STY $B5 0364: A9 01 LDA #$01 0366: 85 B6 STA $B6 ; [$B5-$B6]:=$0174 (length of "general loading loop" & "exit-routines") 0368: 4A LSR A Jump from $0370: 0369: 99 F3 02 STA $02F3,Y ; [$02F3-$0367]:=0, disable potential hostile patch code there? 036C: 99 2A 02 STA $022A,Y ; [$022A-$029E]:=0, disable potential hostile patch code there? 036F: 88 DEY 0370: 10 F7 BPL $0369 0372: A0 8C LDY #$8C ; defines memory start for file transfer: ($30),Y = $038C 0374: 20 25 06 JSR $0625 ; File transfer: [$B5-$B6] bytes starting at ($30),Y = $038C 0377: A9 08 LDA #$08 0379: 8D 00 18 STA $1800 ; signal for C64-client to exit $0200 transfer-routine 037C: 4C 86 07 JMP $0786 Previous Page / Next Page