]> git.sur5r.net Git - cc65/commitdiff
implement DEFAULT_DEVICE support
authorcpg <cpg@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Fri, 14 Nov 2003 22:41:01 +0000 (22:41 +0000)
committercpg <cpg@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Fri, 14 Nov 2003 22:41:01 +0000 (22:41 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@2669 b7a2c559-68d2-44c3-8de9-860c34a00d81

libsrc/atari/ucase_fn.s

index 32b048b06ac1b7b7780d1f5c2542a6e177524711..c52de8ef7577bf838ad7df07b468cf4af2e1c78f 100644 (file)
@@ -18,6 +18,9 @@
 
        .include        "atari.inc"
 
+.ifdef DEFAULT_DEVICE
+       .importzp tmp2
+.endif
        .importzp tmp3,ptr4,sp
        .import _strupr,subysp
        .export ucase_fn
        sta     ptr4
        stx     ptr4+1
 
+.ifdef DEFAULT_DEVICE
+       ldy     #1
+       sty     tmp2            ; initialize flag: device present in passed string
+       lda     #':'
+       cmp     (ptr4),y
+       beq     hasdev
+       iny
+       cmp     (ptr4),y
+       beq     hasdev
+       sta     tmp2            ; set flag: no device is passed string
+hasdev:
+.endif
+
        ; now we need the length of the name
        ldy     #0
 loop:  lda     (ptr4),y
@@ -59,6 +75,23 @@ loop2:       lda     (ptr4),y
        dey
        bpl     loop2           ; bpl: this way we only support a max. length of 127
 
+.ifdef DEFAULT_DEVICE
+       lda     tmp2
+       cmp     #1              ; was device present in passed string?
+       beq     hasdev2         ; yes, don't prepend something
+
+       inc     tmp3            ; no, prepend "D:"
+       inc     tmp3            ; adjust stack size used
+       ldy     #2
+       jsr     subysp          ; adjust stack pointer
+       ldy     #1
+       lda     #':'
+       sta     (sp),y          ; insert ':'
+       dey
+       lda     #'D'
+       sta     (sp),y          ; insert 'D'
+hasdev2:
+.endif
        ; uppercase the temp. filename
        ldx     sp+1
        lda     sp