]> git.sur5r.net Git - cc65/commitdiff
add support for XDOS command lines
authorChristian Groessler <chris@groessler.org>
Tue, 24 May 2016 00:57:21 +0000 (02:57 +0200)
committerChristian Groessler <chris@groessler.org>
Tue, 24 May 2016 01:06:00 +0000 (03:06 +0200)
asminc/atari.inc
libsrc/atari/dosdetect.s
libsrc/atari/getargs.s

index e6d165524fbc716d3dca8ef51f9ae6c9d54c4c04..183564f1f426419a448453ed2afb1ad578f4cec6 100644 (file)
@@ -997,12 +997,15 @@ diopp_size   = 5        ; size of structure
 ; VALUES for dos_type
 ;-------------------------------------------------------------------------
 
-ATARIDOS     = 0
-SPARTADOS    = 1
-OSADOS       = 2        ; OS/A+
-MYDOS        = 3
-XDOS         = 4
+SPARTADOS    = 0
+OSADOS       = 1        ; OS/A+
+XDOS         = 2
+ATARIDOS     = 3
+MYDOS        = 4
 NODOS        = 255
+; The DOSes with dos_type below or equal MAX_DOS_WITH_CMDLINE do support
+; command line arguments.
+MAX_DOS_WITH_CMDLINE = XDOS
 
 ;-------------------------------------------------------------------------
 ; XDOS defines (version 2.4, taken from xdos24.pdf)
index c2888d888baae78561c97e5954b95dd97d9071cb..68f4aefb20a1c8d5b06aea4749ee24dd9f36a1fd 100644 (file)
@@ -50,4 +50,4 @@ done:   rts
 
         .data
 
-__dos_type:     .byte   0       ; default to ATARIDOS
+__dos_type:     .byte   ATARIDOS; default to ATARIDOS
index e3b18b2f92270c6f1111f5d5ad813e33d20a10f5..b1b5d258d49c8ef59842704ac5a29bfd6fe5b562 100644 (file)
@@ -7,6 +7,8 @@
 ; startup code but is nevertheless included in the compiled program when
 ; needed.
 
+; XDOS support added 05/2016 by Christian Groessler
+
 MAXARGS = 16            ; max. amount of arguments in arg. table
 CL_SIZE = 64            ; command line buffer size
 SPACE   = 32            ; SPACE char.
@@ -22,22 +24,30 @@ SPACE   = 32            ; SPACE char.
 
 .segment        "ONCE"
 
+nargdos:rts
+
 initmainargs:
         lda     __dos_type      ; which DOS?
-        cmp     #ATARIDOS
-        beq     nargdos         ; DOS does not support arguments
-        cmp     #MYDOS
-        bne     argdos          ; DOS supports arguments
-nargdos:rts
+        cmp     #MAX_DOS_WITH_CMDLINE + 1
+        bcs     nargdos
 
 ; Initialize ourcl buffer
 
-argdos: lda     #ATEOL
-        sta     ourcl+CL_SIZE
+argdos: ldy     #ATEOL
+        sty     ourcl+CL_SIZE
 
-; Move SpartaDOS command line to our own buffer
+; Move SpartaDOS/XDOS command line to our own buffer
+
+        cmp     #XDOS
+        bne     sparta
+
+        lda     #<XLINE
+        sta     ptr1
+        lda     #>XLINE
+        sta     ptr1+1
+        bne     cpcl0
 
-        lda     DOSVEC
+sparta: lda     DOSVEC
         clc
         adc     #<LBUF
         sta     ptr1
@@ -45,7 +55,7 @@ argdos: lda     #ATEOL
         adc     #>LBUF
         sta     ptr1+1
 
-        ldy     #0
+cpcl0:  ldy     #0
 cpcl:   lda     (ptr1),y
         sta     ourcl,y
         iny