]> git.sur5r.net Git - cc65/blob - libsrc/apple2/filedes.s
Fixed gcc compiler warning (#867)
[cc65] / libsrc / apple2 / filedes.s
1 ;
2 ; Oliver Schmidt, 30.12.2004
3 ;
4 ; File descriptor management for the POSIX I/O routines
5 ;
6
7         .include        "errno.inc"
8         .include        "fcntl.inc"
9         .include        "filedes.inc"
10
11 getfd:
12         ; Check for handle >= 256
13         cpx     #$00
14         bne     error
15
16         ; Check for handle >= MAX_FDS
17         cmp     #MAX_FDS
18         bcs     error
19
20         ; Convert handle to fdtab slot
21         .assert .sizeof(FD) = 4, error
22         asl
23         asl
24
25         ; Check for fdtab slot in use
26         tay
27         lda     fdtab + FD::REF_NUM,y
28         beq     error
29
30         ; Return success
31         clc
32         rts
33
34         ; Load errno code and return error
35 error:  lda     #EINVAL
36         sec
37         rts
38
39         .data
40
41 fdtab:  .assert .sizeof(FD) = 4, error
42
43         .byte   $80             ; STDIN_FILENO ::REF_NUM
44         .byte   O_RDONLY        ; STDIN_FILENO ::FLAGS
45         .addr   $0000           ; STDIN_FILENO ::BUFFER
46
47         .byte   $80             ; STDOUT_FILENO::REF_NUM
48         .byte   O_WRONLY        ; STDOUT_FILENO::FLAGS
49         .addr   $0000           ; STDOUT_FILENO::BUFFER
50
51         .byte   $80             ; STDERR_FILENO::REF_NUM
52         .byte   O_WRONLY        ; STDERR_FILENO::FLAGS
53         .addr   $0000           ; STDERR_FILENO::BUFFER
54
55         .res    (MAX_FDS - 3) * .sizeof(FD)