]> git.sur5r.net Git - cc65/blob - libsrc/atari/fdtoiocb.s
Removed (pretty inconsistently used) tab chars from source code base.
[cc65] / libsrc / atari / fdtoiocb.s
1 ;
2 ; Christian Groessler, May-2000
3 ; Moved from fdtable.s to it's own file by Daniel Serpell, 2009.
4 ;
5 ; Convert file descriptor to IOCB number
6 ;
7
8         .include "atari.inc"
9         .include "fd.inc"
10         .import fd_table,fd_index
11         .export fdtoiocb
12
13         .code
14
15 ; gets fd in ax
16 ; return iocb index in A, fd_table index in X
17 ; return N bit set for invalid fd
18 ; all registers destroyed
19 .proc   fdtoiocb
20
21         cpx     #0
22         bne     inval
23         cmp     #MAX_FD_INDEX
24         bcs     inval
25         tax
26         lda     fd_index,x
27         asl     a                       ; create index into fd table
28         asl     a
29         tax
30         lda     #$ff
31         cmp     fd_table+ft_iocb,x      ; entry in use?
32         beq     inval                   ; no, return error
33         lda     fd_table+ft_usa,x       ; get usage counter
34         beq     inval                   ; 0? should not happen
35         lda     fd_table+ft_iocb,x      ; get iocb
36         rts
37
38 inval:  ldx     #$ff                    ; sets N
39         rts
40
41 .endproc        ; fdtoiocb