mirror of
https://github.com/cc65/cc65.git
synced 2024-11-19 06:31:31 +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
|