File: close.s

package info (click to toggle)
cc65 2.19-2
  • links: PTS
  • area: main
  • in suites: forky, sid, trixie
  • size: 20,268 kB
  • sloc: ansic: 117,151; asm: 66,339; pascal: 4,248; makefile: 1,009; perl: 607
file content (40 lines) | stat: -rw-r--r-- 778 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
;
; Oliver Schmidt, 30.12.2004
;
; int __fastcall__ close (int fd);
;

        .export         _close

        .import         closedirect, freebuffer

        .include        "errno.inc"
        .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
        lda     #$00

        ; Set __oserror
oserr:  jmp     __mappederrno

        ; Set __errno
errno:  jmp     __directerrno