Main Index Routine Index Memory Index
Previous Page Next Page
Routine $0625: File transfer: [$B5-$B6] bytes starting at ($30),Y. CF:=1 if whole file transfer complete.
JSR from $0374, $05D2:
0625: A9 D0 LDA #$D0
0627: 85 01 STA $01 ; set Job #1 to execute ($0400)
0629: 8D 05 1C STA $1C05 ; set/refresh timeout for Job #1
062C: 58 CLI
Jump from $066B, $0673:
062D: B1 30 LDA ($30),Y ; byte to transfer
062F: AA TAX
0630: 4A LSR A
0631: 4A LSR A
0632: 4A LSR A
0633: 4A LSR A
0634: 48 PHA
0635: A9 02 LDA #$02
0637: 8D 00 18 STA $1800
063A: 8A TXA
063B: AE 00 18 LDX $1800
Jump from $0641:
063E: EC 00 18 CPX $1800
0641: F0 FB BEQ $063E
0643: 29 0F AND #$0F
Jump from $0648:
0645: EC 00 18 CPX $1800
0648: D0 FB BNE $0645
064A: 8D 00 18 STA $1800
064D: 0A ASL A
064E: 29 0A AND #$0A
0650: 8D 00 18 STA $1800
0653: 68 PLA
0654: 8D 00 18 STA $1800
0657: 0A ASL A
0658: 29 0A AND #$0A
065A: 8D 00 18 STA $1800
065D: A9 0A LDA #$0A
065F: C6 B5 DEC $B5 ; decrease lo-number of bytes to be transferred
0661: 8D 00 18 STA $1800
0664: D0 04 BNE $066A
0666: C6 B6 DEC $B6 ; decrease hi-number of bytes to be transferred
0668: F0 2B BEQ $0695 ; file transfer complete (CF:=1, RTS)
Jump from $0664:
066A: C8 INY ; increase file offset
066B: D0 C0 BNE $062D
066D: A9 03 LDA #$03 ; transfer only [$03xx] and [$04xx]
066F: C5 31 CMP $31 ; buffer [$03xx] already transferred?
0671: 85 31 STA $31 ; update buffer pointer
0673: D0 B8 BNE $062D ; branch if [$03xx] was not transferred yet
0675: 18 CLC ; CF:=0: buffers [$03xx] and [$04xx] transferred, but not end of file yet
0676: 78 SEI
0677: 60 RTS
Previous Page / Next Page