File: fopen.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 (49 lines) | stat: -rw-r--r-- 958 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
41
42
43
44
45
46
47
48
49
;
; Ullrich von Bassewitz, 22.11.2002
;
; FILE* __fastcall__ fopen (const char* name, const char* mode)
; /* Open a file */
;

        .export         _fopen

        .import         __fopen, __fdesc
        .import         pushax, return0

        .include        "errno.inc"


; ------------------------------------------------------------------------
; Code

.proc   _fopen

; Bring the mode parameter on the stack

        jsr     pushax

; Allocate a new file stream

        jsr     __fdesc

; Check if we have a stream

        cmp     #$00
        bne     @L1
        cpx     #$00
        bne     @L1

; Failed to allocate a file stream

        lda     #EMFILE
        jsr     __seterrno      ; Set __errno, will return 0 in A
        tax
        rts                     ; Return zero

; Open the file and return the file descriptor. All arguments are already
; in place: name and mode on the stack, and f in a/x

@L1:    jmp     __fopen

.endproc