     $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