]> git.sur5r.net Git - cc65/blob - libsrc/common/fmisc.s
syschdir by Stefan Haubenthal
[cc65] / libsrc / common / fmisc.s
1 ;
2 ; Ullrich von Bassewitz, 31.05.1998
3 ;
4 ; Several small file stream functions
5 ;
6
7         .export         _clearerr, _feof, _ferror, _fileno, _fflush
8         .import         return0
9         .importzp       ptr1
10
11         .include        "_file.inc"
12
13 ;
14 ; Get the FILE* parameter, check if the file is open
15 ;
16
17 getf:   sta     ptr1
18         stx     ptr1+1
19         ldy     #_FILE::f_flags
20         lda     (ptr1),y        ; get f->f_flags
21         and     #_FOPEN         ; file open?
22         beq     @L1             ; jump if no
23         clc                     ; ok
24         rts
25 @L1:    sec
26         rts
27
28 ;
29 ; void clearerr (FILE* f);
30 ;
31
32 _clearerr:
33         jsr     getf
34         bcs     err
35         lda     (ptr1),y
36         and     #<~(_FEOF | _FERROR)
37         sta     (ptr1),y
38 err:    rts
39
40 ;
41 ; int feof (FILE* f);
42 ;
43
44 _feof:
45         jsr     getf
46 ;       bcs     err
47         lda     (ptr1),y
48         and     #_FEOF
49         ldx     #0
50         rts
51
52 ;
53 ; int ferror (FILE* f);
54 ;
55
56 _ferror:
57         jsr     getf
58 ;       bcs     err
59         lda     (ptr1),y
60         and     #_FERROR
61         ldx     #0
62         rts
63
64 ;
65 ; int fileno (FILE* f);
66 ;
67
68 _fileno:
69         jsr     getf
70 ;       bcs     err
71         ldy     #_FILE::f_fd
72         lda     (ptr1),y
73         ldx     #0
74         rts
75
76 ;
77 ; int __fastcall__ fflush (FILE* f);
78 ;
79
80 _fflush = return0
81
82