$DC46/56390: Read block, allocate buffer
Jump from $D47E, $D7E4, $D80B, $D9D0:
DC46: A9 01 LDA #$01
DC48: 20 E2 D1 JSR $D1E2 ; find channel and buffer for read
DC4B: 20 B6 DC JSR $DCB6 ; set pointer
DC4E: AD 4A 02 LDA $024A ; file type
DC51: 48 PHA ; save
DC52: 0A ASL
DC53: 05 7F ORA $7F ; drive number
DC55: 95 EC STA $EC,X
DC57: 20 9B D0 JSR $D09B ; read block in buffer
DC5A: A6 82 LDX $82 ; channel number
DC5C: A5 80 LDA $80 ; track
DC5E: D0 05 BNE $DC65 ; following track?
DC60: A5 81 LDA $81 ; sector
DC62: 9D 44 02 STA $0244,X ; as end pointer
Jump from $DC5E:
DC65: 68 PLA ; file type
DC66: C9 04 CMP #$04 ; rel-file?
DC68: D0 3F BNE $DCA9 ; no
DC6A: A4 83 LDY $83 ; secondary address
DC6C: B9 2B 02 LDA $022B,Y ; channel number
DC6F: 09 40 ORA #$40
DC71: 99 2B 02 STA $022B,Y ; set flag for READ and WRITE
DC74: AD 58 02 LDA $0258 ; record length
DC77: 95 C7 STA $C7,X
DC79: 20 8E D2 JSR $D28E ; find buffer for side-sector
DC7C: 10 03 BPL $DC81 ; found?
DC7E: 4C 0F D2 JMP $D20F ; 70, 'no channel'
Jump from $DC7C:
DC81: A6 82 LDX $82 ; channel number
DC83: 95 CD STA $CD,X
DC85: AC 59 02 LDY $0259
DC88: 84 80 STY $80 ; track for side-sector
DC8A: AC 5A 02 LDY $025A
DC8D: 84 81 STY $81 ; sector for side-sector
DC8F: 20 D3 D6 JSR $D6D3 ; transmit parameters to disk controller
DC92: 20 73 DE JSR $DE73 ; read block
DC95: 20 99 D5 JSR $D599 ; and verify
Jump from $DD8A:
DC98: A6 82 LDX $82 ; channel number
DC9A: A9 02 LDA #$02
DC9C: 95 C1 STA $C1,X ; pointer for writing
DC9E: A9 00 LDA #$00
DCA0: 20 C8 D4 JSR $D4C8 ; buffer pointer to zero
DCA3: 20 53 E1 JSR $E153 ; find next record
DCA6: 4C 3E DE JMP $DE3E ; get track and sector number
Jump from $DC68:
DCA9: 20 56 D1 JSR $D156 ; get byte from buffer
DCAC: A6 82 LDX $82 ; channel number
DCAE: 9D 3E 02 STA $023E,X ; byte in output register
DCB1: A9 88 LDA #$88 ; set flag for READ
DCB3: 95 F2 STA $F2,X
DCB5: 60 RTS
Previous Page / Next Page