]> git.sur5r.net Git - cc65/blob - libsrc/apple2/filedes.s
Use .assert
[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
21         ; Convert handle to fdtab slot
22         .assert .sizeof(FD) = 4, error
23         asl
24         asl
25
26         ; Check for fdtab slot in use
27         tay
28         lda     fdtab + FD::REF_NUM,y
29         beq     error
30
31         ; Return success
32         clc
33         rts
34
35         ; Load errno code and return error
36 error:  lda     #EINVAL
37         sec
38         rts
39
40         .data
41
42 fdtab:  .assert .sizeof(FD) = 4, error
43
44         .byte   $80             ; STDIN_FILENO ::REF_NUM
45         .byte   O_RDONLY        ; STDIN_FILENO ::FLAGS
46         .addr   $0000           ; STDIN_FILENO ::BUFFER
47
48         .byte   $80             ; STDOUT_FILENO::REF_NUM
49         .byte   O_WRONLY        ; STDOUT_FILENO::FLAGS
50         .addr   $0000           ; STDOUT_FILENO::BUFFER
51
52         .byte   $80             ; STDERR_FILENO::REF_NUM
53         .byte   O_WRONLY        ; STDERR_FILENO::FLAGS
54         .addr   $0000           ; STDERR_FILENO::BUFFER
55
56         .res    (MAX_FDS - 3) * .sizeof(FD)