- bmi iocberr
- sta tmp3 ; save it
- jsr ldax0sp ; get size
- stx tmp2
- ldx tmp3 ; iocb
- cpx #$80 ; iocb must be 0...7
- bcs iocberr
- sta ICBLL,x
- lda tmp2 ; size hi
- sta ICBLH,x
- ldy #3 ; get buf addr (was 2 in orig. version)
- jsr ldaxysp
- stx tmp2
- ldx tmp3
- sta ICBAL,x
- lda tmp2
- sta ICBAH,x
- jsr incsp6 ; pop args
- lda ICBLL,x
- ora ICBLH,x ; return with Z if length was 0
- rts
-
-iocberr:jsr incsp6 ; pop args
- ldx #$FF ; indicate error + clear ZF
+ bmi iocberr ; negative (X=$FF or A>$7F) on error.
+ tax
+ pla ; store address
+ sta ICBAH,x
+ pla
+ sta ICBAL,x
+ pla ; store length
+ sta ICBLH,x
+ pla
+ sta ICBLL,x
+ ora ICBLH,x ; returns Z if length is 0