     $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