]> git.sur5r.net Git - cc65/commitdiff
move fdtoiocb function into its own file -- idea by Daniel Serpell
authorcpg <cpg@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Mon, 23 Nov 2009 21:59:29 +0000 (21:59 +0000)
committercpg <cpg@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Mon, 23 Nov 2009 21:59:29 +0000 (21:59 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@4478 b7a2c559-68d2-44c3-8de9-860c34a00d81

libsrc/atari/Makefile
libsrc/atari/fdtable.s
libsrc/atari/fdtoiocb.s [new file with mode: 0644]

index 3b11f0f2fcf6794ce4b6620f604d442b6855e6c6..c6fff15a619d3c2a5f6ad1541bcfcacee8d28ead 100644 (file)
@@ -78,6 +78,7 @@ OBJS =        _scrsize.o      \
        diowritev.o     \
        dosdetect.o     \
        fdtable.o       \
+       fdtoiocb.o      \
        getargs.o       \
        getdefdev.o     \
        getfd.o         \
index ecc7c451fa307d0b247eec43262750860dd803be..111f340d0e064e6011ef4f21ee92fae92345eea0 100644 (file)
@@ -10,7 +10,6 @@
        .import fd_table,fd_index
        .import fdt_to_fdi
        .export clriocb
-       .export fdtoiocb
        .export fdtoiocb_down
        .export findfreeiocb
        .export fddecusage
@@ -88,31 +87,6 @@ loop:        sta     ICHID,x
 .endproc
 
 
-; 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
-
-       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
-
-.endproc       ; fdtoiocb
-
 ; find a free iocb
 ; no entry parameters
 ; return ZF = 0/1 for not found/found
@@ -137,6 +111,7 @@ found:      rts
 
 .endproc       ; findfreeiocb
 
+
 ; decrements usage counter for fd
 ; if 0 reached, it's marked as unused
 ; get fd index in tmp2
@@ -170,6 +145,7 @@ ret:        rts
 
 .endproc       ; fddecusage
 
+
 ; newfd
 ;
 ; called from open() function
diff --git a/libsrc/atari/fdtoiocb.s b/libsrc/atari/fdtoiocb.s
new file mode 100644 (file)
index 0000000..710ef90
--- /dev/null
@@ -0,0 +1,41 @@
+;
+; Christian Groessler, May-2000
+; Moved from fdtable.s to it's own file by Daniel Serpell, 2009.
+;
+; Convert file descriptor to IOCB number
+;
+
+       .include "atari.inc"
+       .include "fd.inc"
+       .import fd_table,fd_index
+       .export fdtoiocb
+
+       .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
+
+       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
+
+.endproc       ; fdtoiocb