]> git.sur5r.net Git - cc65/blob - libsrc/atari/remove.s
renamed remove.o to sysremove.o
[cc65] / libsrc / atari / remove.s
1 ;
2 ; Christian Groessler, Dec-2001
3 ;
4 ; int remove (const char* name);
5 ;
6
7         .include "atari.inc"
8         .include "errno.inc"
9         .import findfreeiocb,incsp2,__do_oserror
10         .import popax,__oserror,__seterrno
11         .importzp tmp1
12 .ifdef  UCASE_FILENAME
13         .importzp tmp3
14         .import addysp
15         .import ucase_fn
16 .endif
17         .export _remove
18
19 .proc   _remove
20
21         jsr     findfreeiocb
22         beq     iocbok          ; we found one
23
24         jsr     incsp2          ; discard stack argument
25         lda     #<EMFILE        ; "too many open files"
26         ldx     #>EMFILE
27 seterr: jsr     __seterrno
28         lda     #$FF
29         tax
30         rts                     ; return -1
31
32 iocbok: ;stx    tmp1            ; remember IOCB index
33         txa
34         pha
35         jsr     popax
36
37 .ifdef  UCASE_FILENAME
38
39         jsr     ucase_fn
40         bcc     ucok1
41         lda     #<EINVAL        ; file name is too long
42         ldx     #>EINVAL
43         jmp     seterr
44 ucok1:
45
46 .endif  ; defined UCASE_FILENAME
47
48         ;ldy    tmp1
49         sta     tmp1
50         pla
51         tay
52         lda     tmp1
53         sty     tmp1
54         sta     ICBAL,y
55         txa
56         sta     ICBAH,y
57         ldx     tmp1
58         lda     #DELETE
59         sta     ICCOM,x
60         lda     #0
61         sta     ICAX1,x
62         sta     ICAX2,x
63         sta     ICBLL,x
64         sta     ICBLH,x
65         jsr     CIOV
66
67 .ifdef  UCASE_FILENAME
68         tya
69         pha
70         ldy     tmp3            ; get size
71         jsr     addysp          ; free used space on the stack
72         pla
73         tay
74 .endif  ; defined UCASE_FILENAME
75
76         bmi     cioerr
77
78         ldx     #0
79         stx     __oserror
80         txa
81         rts
82
83 cioerr: jmp     __do_oserror
84
85 .endproc        ; _remove