$D1E2/53730:   Find read channel and buffer

Jump from $CB9A, $CBDF, $DC48, $ECA4:

D1E2: 18        CLC             ; flag for reading

Jump from $D1E0:

D1E3: 08        PHP             ; save
D1E4: 85 6F     STA $6F         ; buffer number
D1E6: 20 27 D2  JSR $D227       ; close channel
D1E9: 20 7F D3  JSR $D37F       ; allocate free channel
D1EC: 85 82     STA $82         ; channel number
D1EE: A6 83     LDX $83         ; secondary address
D1F0: 28        PLP
D1F1: 90 02     BCC $D1F5       ; read channel?
D1F3: 09 80     ORA #$80        ; flag for writing

Jump from $D1F1:

D1F5: 9D 2B 02  STA $022B,X     ; set
D1F8: 29 3F     AND #$3F
D1FA: A8        TAY
D1FB: A9 FF     LDA #$FF        ; default value
D1FD: 99 A7 00  STA $A7,Y
D200: 99 AE 00  STA $AE,Y       ; write in associated table
D203: 99 CD 00  STA $CD,Y
D206: C6 6F     DEC $6F         ; decrement buffer number
D208: 30 1C     BMI $D226       ; done already?
D20A: 20 8E D2  JSR $D28E       ; find buffer
D20D: 10 08     BPL $D217       ; found?

Jump from $D221, $DC7E, $DD13:

D20F: 20 5A D2  JSR $D25A       ; erase flags in table
D212: A9 70     LDA #$70
D214: 4C C8 C1  JMP $C1C8       ; 70, 'no channel'

Jump from $D20D:

D217: 99 A7 00  STA $A7,Y       ; buffer number in table
D21A: C6 6F     DEC $6F         ; buffer number
D21C: 30 08     BMI $D226       ; already done?
D21E: 20 8E D2  JSR $D28E       ; find buffer
D221: 30 EC     BMI $D20F       ; not found?
D223: 99 AE 00  STA $AE,Y       ; buffer number in table

Jump from $D208, $D21C:

D226: 60        RTS

    Previous Page / Next Page