X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=libsrc%2Fatari%2Ffdtoiocb.s;h=bd8c92dae8d766e0715a2ff43b8221df7af6807c;hb=b31e0d32496a33e92818f44950dc7c84c376f87a;hp=710ef900912589be647e67ff7071d4ead12413cc;hpb=fa25cc732f1898bf9106ce5733e6dafb97729c92;p=cc65 diff --git a/libsrc/atari/fdtoiocb.s b/libsrc/atari/fdtoiocb.s index 710ef9009..bd8c92dae 100644 --- a/libsrc/atari/fdtoiocb.s +++ b/libsrc/atari/fdtoiocb.s @@ -5,37 +5,37 @@ ; Convert file descriptor to IOCB number ; - .include "atari.inc" - .include "fd.inc" - .import fd_table,fd_index - .export fdtoiocb + .include "atari.inc" + .include "fd.inc" + .import fd_table,fd_index + .export fdtoiocb - .code + .code ; gets fd in ax ; return iocb index in A, fd_table index in X ; return N bit set for invalid fd ; all registers destroyed -.proc fdtoiocb +.proc fdtoiocb - cpx #0 - bne inval - cmp #MAX_FD_INDEX - bcs inval - tax - lda fd_index,x - asl a ; create index into fd table - asl a - tax - lda #$ff - cmp fd_table+ft_iocb,x ; entry in use? - beq inval ; no, return error - lda fd_table+ft_usa,x ; get usage counter - beq inval ; 0? should not happen - lda fd_table+ft_iocb,x ; get iocb - rts + cpx #0 + bne inval + cmp #MAX_FD_INDEX + bcs inval + tax + lda fd_index,x + asl a ; create index into fd table + asl a + tax + lda #$ff + cmp fd_table+ft_iocb,x ; entry in use? + beq inval ; no, return error + lda fd_table+ft_usa,x ; get usage counter + beq inval ; 0? should not happen + lda fd_table+ft_iocb,x ; get iocb + rts -inval: ldx #$ff ; sets N - rts +inval: ldx #$ff ; sets N + rts -.endproc ; fdtoiocb +.endproc ; fdtoiocb