43 lines
851 B
ArmAsm
43 lines
851 B
ArmAsm
;
|
|
; Oliver Schmidt, 30.12.2004
|
|
; Robert Justice, 2026
|
|
;
|
|
; int __fastcall__ close (int fd);
|
|
;
|
|
|
|
.export _close
|
|
|
|
.import closedirect, freebuffer
|
|
|
|
.include "errno.inc"
|
|
.include "filedes.inc"
|
|
.include "zeropage.inc"
|
|
|
|
_close:
|
|
; Process fd
|
|
jsr getfd ; Returns A, Y and C
|
|
bcs errno
|
|
|
|
; Check for device
|
|
cmp #$80
|
|
beq zerofd
|
|
|
|
; Close file
|
|
sty tmp3 ; Save Y
|
|
jsr closedirect
|
|
bne oserr
|
|
ldy tmp3
|
|
|
|
; Mark fdtab slot as free
|
|
zerofd: lda #$00
|
|
sta fdtab + FD::REF_NUM,y
|
|
|
|
; Return success
|
|
lda #$00
|
|
|
|
; Set ___oserror
|
|
oserr: jmp ___mappederrno
|
|
|
|
; Set __errno
|
|
errno: jmp ___directerrno
|