]> git.sur5r.net Git - cc65/commitdiff
initial version from Stefan Haubenthal
authorcpg <cpg@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Wed, 4 Jan 2006 09:56:04 +0000 (09:56 +0000)
committercpg <cpg@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Wed, 4 Jan 2006 09:56:04 +0000 (09:56 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@3693 b7a2c559-68d2-44c3-8de9-860c34a00d81

libsrc/atari/sysmkdir.s [new file with mode: 0644]
libsrc/atari/sysrmdir.s [new file with mode: 0644]

diff --git a/libsrc/atari/sysmkdir.s b/libsrc/atari/sysmkdir.s
new file mode 100644 (file)
index 0000000..75e4c28
--- /dev/null
@@ -0,0 +1,80 @@
+;
+; Stefan Haubenthal, 2005-12-24
+; Based on Christian Groessler
+;
+; unsigned char _sysmkdir (const char* name, ...);
+;
+
+       .include "atari.inc"
+       .include "errno.inc"
+       .import findfreeiocb
+       .importzp tmp4
+.ifdef UCASE_FILENAME
+       .importzp tmp3
+       .import addysp
+       .import ucase_fn
+.endif
+       .export __sysmkdir
+
+.proc  __sysmkdir
+
+       pha                     ; save input parameter
+       txa
+       pha
+
+       jsr     findfreeiocb
+       beq     iocbok          ; we found one
+
+       pla
+       pla                     ; fix up stack
+
+       lda     #TMOF           ; too many open files
+       rts
+
+iocbok:        stx     tmp4            ; remember IOCB index
+       pla
+       tax
+       pla                     ; get argument again
+
+.ifdef UCASE_FILENAME
+
+       jsr     ucase_fn
+       bcc     ucok1
+
+       lda     #182            ; see oserror.s
+       rts
+ucok1:
+
+.endif ; defined UCASE_FILENAME
+
+       ldy     tmp4            ; IOCB index
+       sta     ICBAL,y         ; store pointer to filename
+       txa
+       sta     ICBAH,y
+       tya
+       tax
+       lda     #34
+       sta     ICCOM,x
+       lda     #0
+       sta     ICAX1,x
+       sta     ICAX2,x
+       sta     ICBLL,x
+       sta     ICBLH,x
+       jsr     CIOV
+
+.ifdef UCASE_FILENAME
+       tya
+       pha
+       ldy     tmp3            ; get size
+       jsr     addysp          ; free used space on the stack
+       pla
+       tay
+.endif ; defined UCASE_FILENAME
+
+       bmi     cioerr
+       lda     #0
+       rts
+cioerr:        tya
+       rts
+
+.endproc       ; __sysmkdir
diff --git a/libsrc/atari/sysrmdir.s b/libsrc/atari/sysrmdir.s
new file mode 100644 (file)
index 0000000..d3b2cf3
--- /dev/null
@@ -0,0 +1,10 @@
+;
+; Stefan Haubenthal, 2005-12-24
+;
+; unsigned char __fastcall__ _sysrmdir (const char* name);
+;
+
+       .export         __sysrmdir
+       .import         __sysremove
+
+__sysrmdir := __sysremove