X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=libsrc%2Fatari%2Ffdtable.s;h=111f340d0e064e6011ef4f21ee92fae92345eea0;hb=3a8365c44565b6c97b957f63ca451905f23434d5;hp=816ade8d399e431ef82f8bc50594174a6404db08;hpb=d25ea2001b0764e6738b895e3a17065c6f4e3b6c;p=cc65 diff --git a/libsrc/atari/fdtable.s b/libsrc/atari/fdtable.s index 816ade8d3..111f340d0 100644 --- a/libsrc/atari/fdtable.s +++ b/libsrc/atari/fdtable.s @@ -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