]> git.sur5r.net Git - cc65/blobdiff - libsrc/atari/getdefdev.s
lseek: Implement additional feedback from PR #723.
[cc65] / libsrc / atari / getdefdev.s
index a1c950dc50e9112b9aea3c847adf05385289fb75..480639b4a6cea56457fc33a2b6e60e7766d04b08 100644 (file)
@@ -77,16 +77,33 @@ finish: lda     #<__defdev
         ldx     #>__defdev
         rts
 
-; XDOS version
+; XDOS default device retrieval
 
-xdos:   lda     XDEFDEV
+xdos:
+
+; check XDOS version (we need >= 2.4)
+
+        lda     XGLIN
+        cmp     #$4C            ; there needs to be a 'JMP' opcode here
+        bne     finish          ; older version, use DEFAULT_DEVICE or D1:
+        lda     XVER            ; get BCD encoded version ($24 for 2.4)
+        cmp     #$24
+        bcc     finish          ; too old, below 2.4
+
+; good XDOS version, get default drive
+
+        lda     #ATEOL
+        sta     XLINE           ; simulate empty command line
+        ldy     #0
+        jsr     XMOVE           ; create an FMS filename (which in this case only contains the drive)
+        lda     XFILE+1
         bne     done
 
         .data
 
 crvec:  jmp     $FFFF           ; target address will be set to crunch vector
 
-; Default device
+; Default device string
 
 __defdev:
 .ifdef  DEFAULT_DEVICE
@@ -94,4 +111,3 @@ __defdev:
 .else
         .byte   "D1:", 0
 .endif
-