1
0
mirror of https://github.com/cc65/cc65.git synced 2024-12-22 12:30:41 +00:00
cc65/libsrc/common/_fdesc.s
cuz c09ecf0efd Use stdio.inc
git-svn-id: svn://svn.cc65.org/cc65/trunk@2136 b7a2c559-68d2-44c3-8de9-860c34a00d81
2003-05-03 08:49:51 +00:00

44 lines
832 B
ArmAsm

;
; Ullrich von Bassewitz, 17.06.1998
;
; int _fdesc (void);
; /* Find a free descriptor slot */
.export __fdesc
.import return0
.include "stdio.inc"
.include "_file.inc"
.proc __fdesc
ldy #0
lda #_FOPEN
Loop: and __filetab + _FILE_f_flags,y ; load flags
beq Found ; jump if closed
.repeat ::_FILE_size
iny
.endrepeat
cpy #(FOPEN_MAX * _FILE_size) ; Done?
bne Loop
; File table is full
jmp return0
; Free slot found, get address
Found: tya ; Offset
clc
adc #<__filetab
ldx #>__filetab ; High byte
bcc @L1 ; Jump if no overflow
inx ; Bump high byte
@L1: rts
.endproc