]> git.sur5r.net Git - cc65/blobdiff - libsrc/atari/fdtable.s
move fdtoiocb function into its own file -- idea by Daniel Serpell
[cc65] / libsrc / atari / fdtable.s
index 816ade8d399e431ef82f8bc50594174a6404db08..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
@@ -188,13 +164,9 @@ ret:       rts
 ;      C    - 0/1 for no open needed/open should be performed
 ; all registers preserved!
 
-; local variables:
-;   AX     - 0 (A-0,X-1)
-;   Y      - 2
-;   ptr4   - 3,4  (backup)
-;   devnum - 5
-
        .bss
+
+; local variables:
 loc_Y:         .res    1
 loc_ptr4_l:    .res    1
 loc_ptr4_h:    .res    1
@@ -295,7 +267,7 @@ l2: sta     fd_table+ft_dev,x       ; set device
        sta     fd_table+ft_flag,x
        lda     tmp2
        jsr     fdt_to_fdi              ; get new index
-       bcs     noslot                  ; no one available
+noslot1:bcs    noslot                  ; no one available (noslot1: helper label for branch out of range)
        ;cmp    #$ff                    ; no one available
        ;beq    noslot  ;@@@ cleanup needed
        sta     tmp2                    ; return index
@@ -340,9 +312,6 @@ srch2:      txa
 ; not found, open new iocb
        jmp     do_open
 
-; helper for branch out of range
-noslot1:jmp    noslot
-
 ; found device in table, check device number (e.g R0 - R3)
 fnddev:        lda     fd_table+ft_flag,x
        and     #7