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