$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