$CB84/52100:   Open direct access channel, number

Jump from $D819:

CB84: AD 8E 02  LDA $028E       ; last drive number
CB87: 85 7F     STA $7F         ; drive number
CB89: A5 83     LDA $83         ; channel number
CB8B: 48        PHA
CB8C: 20 3D C6  JSR $C63D       ; check drive and initialize
CB8F: 68        PLA
CB90: 85 83     STA $83
CB92: AE 74 02  LDX $0274       ; length of filename
CB95: CA        DEX
CB96: D0 0D     BNE $CBA5       ; greater than one?
CB98: A9 01     LDA #$01
CB9A: 20 E2 D1  JSR $D1E2       ; layout buffer and channel
CB9D: 4C F1 CB  JMP $CBF1       ; set flags, done

Jump from $CBAF, $CBC4, $CBCB:

CBA0: A9 70     LDA #$70
CBA2: 4C C8 C1  JMP $C1C8       ; 70, 'no channel'

Jump from $CB96:

CBA5: A0 01     LDY #$01
CBA7: 20 7C CC  JSR $CC7C       ; get buffer number
CBAA: AE 85 02  LDX $0285       ; buffer number
CBAD: E0 05     CPX #$05        ; bigger than 5?
CBAF: B0 EF     BCS $CBA0       ; 70, 'no channel'
CBB1: A9 00     LDA #$00
CBB3: 85 6F     STA $6F
CBB5: 85 70     STA $70
CBB7: 38        SEC

Jump from $CBBD:

CBB8: 26 6F     ROL $6F
CBBA: 26 70     ROL $70
CBBC: CA        DEX
CBBD: 10 F9     BPL $CBB8
CBBF: A5 6F     LDA $6F
CBC1: 2D 4F 02  AND $024F
CBC4: D0 DA     BNE $CBA0
CBC6: A5 70     LDA $70
CBC8: 2D 50 02  AND $0250
CBCB: D0 D3     BNE $CBA0
CBCD: A5 6F     LDA $6F
CBCF: 0D 4F 02  ORA $024F
CBD2: 8D 4F 02  STA $024F
CBD5: A5 70     LDA $70
CBD7: 0D 50 02  ORA $0250
CBDA: 8D 50 02  STA $0250
CBDD: A9 00     LDA #$00
CBDF: 20 E2 D1  JSR $D1E2       ; search channel
CBE2: A6 82     LDX $82         ; channel number
CBE4: AD 85 02  LDA $0285       ; buffer number
CBE7: 95 A7     STA $A7,X
CBE9: AA        TAX
CBEA: A5 7F     LDA $7F         ; drive number
CBEC: 95 00     STA $00,X
CBEE: 9D 5B 02  STA $025B,X

Jump from $CB9D:

CBF1: A6 83     LDX $83         ; secondary address
CBF3: BD 2B 02  LDA $022B,X
CBF6: 09 40     ORA #$40        ; set READ and WRITE flags
CBF8: 9D 2B 02  STA $022B,X
CBFB: A4 82     LDY $82         ; channel number
CBFD: A9 FF     LDA #$FF
CBFF: 99 44 02  STA $0244,Y     ; end pointer
CC02: A9 89     LDA #$89
CC04: 99 F2 00  STA $F2,Y       ; set READ and WRITE flags
CC07: B9 A7 00  LDA $A7,Y       ; buffer number
CC0A: 99 3E 02  STA $023E,Y
CC0D: 0A        ASL             ; times 2
CC0E: AA        TAX
CC0F: A9 01     LDA #$01
CC11: 95 99     STA $99,X       ; buffer pointer to one
CC13: A9 0E     LDA #$0E
CC15: 99 EC 00  STA $EC,Y       ; flag for direct access
CC18: 4C 94 C1  JMP $C194       ; done

    Previous Page / Next Page