$E1CB/57803:   Get last side-sector

Jump from $CA56, $CA69, $DB32, $DF0B, $E31F:

E1CB: 20 D2 DE  JSR $DED2       ; get number of the side-sector
E1CE: 85 D5     STA $D5         ; save
E1D0: A9 04     LDA #$04
E1D2: 85 94     STA $94         ; pointer to side-sectors
E1D4: A0 0A     LDY #$0A
E1D6: D0 04     BNE $E1DC

Jump from $E1DE:

E1D8: 88        DEY
E1D9: 88        DEY
E1DA: 30 26     BMI $E202

Jump from $E1D6:

E1DC: B1 94     LDA ($94),Y     ; track number of the previous block
E1DE: F0 F8     BEQ $E1D8
E1E0: 98        TYA
E1E1: 4A        LSR             ; divide by 2
E1E2: C5 D5     CMP $D5         ; = number of the actual block?
E1E4: F0 09     BEQ $E1EF       ; yes
E1E6: 85 D5     STA $D5         ; else save all numbers
E1E8: A6 82     LDX $82         ; channel number
E1EA: B5 CD     LDA $CD,X       ; buffer number
E1EC: 20 1B DF  JSR $DF1B       ; read block

Jump from $E1E4:

E1EF: A0 00     LDY #$00
E1F1: 84 94     STY $94         ; buffer pointer
E1F3: B1 94     LDA ($94),Y     ; track number
E1F5: D0 0B     BNE $E202       ; another block?
E1F7: C8        INY
E1F8: B1 94     LDA ($94),Y     ; sector number = end pointer
E1FA: A8        TAY
E1FB: 88        DEY
E1FC: 84 D6     STY $D6         ; save end pointer
E1FE: 98        TYA
E1FF: 4C E9 DE  JMP $DEE9       ; set buffer pointer

Jump from $E1DA, $E1F5, $E286:

E202: A9 67     LDA #$67
E204: 20 45 E6  JSR $E645       ; 67, 'illegal track or sector'

    Previous Page / Next Page