mirror of
https://github.com/cc65/cc65.git
synced 2024-08-19 02:29:33 +00:00
42 lines
724 B
ArmAsm
42 lines
724 B
ArmAsm
;
|
|
; Oliver Schmidt, 30.12.2004
|
|
;
|
|
; int __fastcall__ close (int fd);
|
|
;
|
|
|
|
.export _close
|
|
|
|
.import closedirect, freebuffer
|
|
.import errnoexit, oserrexit
|
|
.import return0
|
|
|
|
.include "filedes.inc"
|
|
|
|
_close:
|
|
; Process fd
|
|
jsr getfd ; Returns A, Y and C
|
|
bcs errno
|
|
|
|
; Check for device
|
|
bmi zerofd
|
|
|
|
; Close file
|
|
jsr closedirect ; Preserves Y
|
|
bcs oserr
|
|
|
|
; Mark fdtab slot as free
|
|
zerofd: lda #$00
|
|
sta fdtab + FD::REF_NUM,y
|
|
|
|
; Cleanup I/O buffer
|
|
jsr freebuffer
|
|
|
|
; Return success
|
|
jmp return0
|
|
|
|
; Return errno
|
|
errno: jmp errnoexit
|
|
|
|
; Return oserror
|
|
oserr: jmp oserrexit
|