]> git.sur5r.net Git - cc65/commitdiff
Merge pull request #348 from SvOlli/release
authorOliver Schmidt <ol.sc@web.de>
Tue, 20 Sep 2016 14:19:45 +0000 (16:19 +0200)
committerGitHub <noreply@github.com>
Tue, 20 Sep 2016 14:19:45 +0000 (16:19 +0200)
ca65: added .P4510 and .IFP4510 pseudo commands

asminc/atari.inc
cfg/lynx-bll.cfg
cfg/lynx-coll.cfg
cfg/lynx-uploader.cfg
cfg/lynx.cfg
libsrc/atari/getdefdev.s
libsrc/atari/shadow_ram_handlers.s
libsrc/lynx/bootldr.s
libsrc/lynx/defdir.s
libsrc/lynx/exehdr.s

index 453c370f43f4b80ff262cf8a64e6a1dcb8d321d8..1b995e380731e2322512d05888dd9f17f257cb55 100644 (file)
@@ -1024,9 +1024,16 @@ XFILE        = $087D    ; XDOS filename buffer
 XLINE        = $0880    ; XDOS DUP input line
 XGLIN        = $0871    ; get line
 XSKIP        = $0874    ; skip parameter
+.ifdef __ATARIXL__
+.ifndef SHRAM_HANDLERS
+.import XMOVE_handler
+.endif
+.define XMOVE XMOVE_handler
+XMOVE_org    = $0877    ; move filename
+.else
 XMOVE        = $0877    ; move filename
+.endif
 XGNUM        = $087A    ; get number
-XDEFDEV      = $0816    ; current drive * undocumented *
 
 ;-------------------------------------------------------------------------
 ; End of atari.inc
index a1687b423f90f30789c175a114169ab9abefc2f5..adf1e7ab697d9b632385f10ef0d32c185d40c301 100644 (file)
@@ -1,7 +1,8 @@
 SYMBOLS {
     __STACKSIZE__:        type = weak, value = $0800; # 2k stack
     __STARTOFDIRECTORY__: type = weak, value = $00CB; # start just after loader
-    __BLOCKSIZE__:        type = weak, value = $0400; # cart block size
+    __BANK0BLOCKSIZE__:   type = weak, value = $0400; # bank 0 cart block size
+    __BANK1BLOCKSIZE__:   type = weak, value = $0000; # bank 1 block size
     __BLLHDR__:           type = import;
 }
 MEMORY {
index 9467c3c921f64a7ddd5588700b969e1a5ed4dded..7c71993f80b35e72d08e5b0c408540e65082ce3f 100644 (file)
@@ -1,7 +1,8 @@
 SYMBOLS {
     __STACKSIZE__:        type = weak, value = $0800; # 2k stack
     __STARTOFDIRECTORY__: type = weak, value = $00CB; # start just after loader
-    __BLOCKSIZE__:        type = weak, value = $0400; # cart block size
+    __BANK0BLOCKSIZE__:   type = weak, value = $0400; # bank 0 cart block size
+    __BANK1BLOCKSIZE__:   type = weak, value = $0000; # bank 1 block size
     __EXEHDR__:           type = import;
     __BOOTLDR__:          type = import;
     __DEFDIR__:           type = import;
index c32e3583f400b836183d8dccd138a449d6b866f3..476b3c5deacd3e2ba40d8694c906c0061bd2df6b 100644 (file)
@@ -1,7 +1,8 @@
 SYMBOLS {
     __STACKSIZE__:        type = weak, value = $0800; # 2k stack
     __STARTOFDIRECTORY__: type = weak, value = $00CB; # start just after loader
-    __BLOCKSIZE__:        type = weak, value = $0400; # cart block size
+    __BANK0BLOCKSIZE__:   type = weak, value = $0400; # bank 0 cart block size
+    __BANK1BLOCKSIZE__:   type = weak, value = $0000; # bank 1 block size
     __EXEHDR__:           type = import;
     __BOOTLDR__:          type = import;
     __DEFDIR__:           type = import;
index 5140b342fe90a43360607f99a8cabf3d912dd486..5c42654d773d224b302d5e85fd9e004cd915b225 100644 (file)
@@ -1,7 +1,8 @@
 SYMBOLS {
     __STACKSIZE__:        type = weak, value = $0800; # 2k stack
     __STARTOFDIRECTORY__: type = weak, value = $00CB; # start just after loader
-    __BLOCKSIZE__:        type = weak, value = 1024; # cart block size
+    __BANK0BLOCKSIZE__:   type = weak, value = $0400; # bank 0 cart block size
+    __BANK1BLOCKSIZE__:   type = weak, value = $0000; # bank 1 block size
     __EXEHDR__:           type = import;
     __BOOTLDR__:          type = import;
     __DEFDIR__:           type = import;
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
-
index d65e6bd68727eaa394d0c2a59f320aeabcdc7bc1..a8ba611b6ca45407f15c465d9fd0ca63d906008b 100644 (file)
@@ -22,6 +22,7 @@ SHRAM_HANDLERS  =       1
         .export         CIO_handler
         .export         SIO_handler
         .export         SETVBV_handler
+        .export         XMOVE_handler
 
 BUFSZ           =       128     ; bounce buffer size
 BUFSZ_SIO       =       256
@@ -1085,6 +1086,24 @@ SETVBV_handler:
         plp
         rts
 
+;---------------------------------------------------------
+
+XMOVE_handler:
+
+        pha
+        lda     PORTB
+        sta     cur_XMOVE_PORTB
+        enable_rom
+        pla
+        jsr     XMOVE_org
+        php
+        pha
+        disable_rom_val cur_XMOVE_PORTB
+        pla
+        plp
+        rts
+
+
 CIO_a:                  .res    1
 CIO_x:                  .res    1
 CIO_y:                  .res    1
@@ -1093,6 +1112,7 @@ cur_CIOV_PORTB:         .res    1
 cur_SIOV_PORTB:         .res    1
 cur_KEYBDV_PORTB:       .res    1
 cur_SETVBV_PORTB:       .res    1
+cur_XMOVE_PORTB:        .res    1
 orig_ptr:               .res    2
 orig_len:               .res    2
 req_len:                .res    2
index a62d6155cd706709ee6b7c246a0fcaab9cfacf34..64569e6eec9e6fbbfd6ddbd2303bbd747550dad8 100644 (file)
@@ -5,7 +5,7 @@
 ;
         .include "lynx.inc"
         .include "extzp.inc"
-        .import         __BLOCKSIZE__
+        .import         __BANK0BLOCKSIZE__
         .export         __BOOTLDR__: absolute = 1
 
 
@@ -167,7 +167,7 @@ seclynxblock:
         lda __iodat
         sta IODAT
         stz _FileBlockByte
-        lda #<($100-(>__BLOCKSIZE__))
+        lda #<($100-(>__BANK0BLOCKSIZE__))
         sta _FileBlockByte+1
         ply
         plx
index 2930edf4beab17260cfce842d397694d73574a94..c0fe19f4de270fe130c12427f99412f2bba25d28 100644 (file)
@@ -8,7 +8,7 @@
         .import         __MAIN_START__
         .import         __CODE_SIZE__, __DATA_SIZE__, __RODATA_SIZE__
         .import         __STARTUP_SIZE__, __ONCE_SIZE__, __LOWCODE_SIZE__
-        .import         __BLOCKSIZE__
+        .import         __BANK0BLOCKSIZE__
         .export         __DEFDIR__: absolute = 1
 
 
 
 __DIRECTORY_START__:
 off0 = __STARTOFDIRECTORY__ + (__DIRECTORY_END__ - __DIRECTORY_START__)
-blocka = off0 / __BLOCKSIZE__
+blocka = off0 / __BANK0BLOCKSIZE__
 ; Entry 0 - first executable
-block0 = off0 / __BLOCKSIZE__
+block0 = off0 / __BANK0BLOCKSIZE__
 len0 = __STARTUP_SIZE__ + __ONCE_SIZE__ + __CODE_SIZE__ + __DATA_SIZE__ + __RODATA_SIZE__ + __LOWCODE_SIZE__
         .byte   <block0
-        .word   off0 & (__BLOCKSIZE__ - 1)
+        .word   off0 & (__BANK0BLOCKSIZE__ - 1)
         .byte   $88
         .word   __MAIN_START__
         .word   len0
index 4f077fb82403e849d06caeaa74745b7585518b5a..d63c0524d708042e0ed1bf0ef99d2edc37b989c4 100644 (file)
@@ -3,7 +3,8 @@
 ;
 ; This header contains data for emulators like Handy and Mednafen
 ;
-        .import         __BLOCKSIZE__
+        .import         __BANK0BLOCKSIZE__
+        .import         __BANK1BLOCKSIZE__
         .export         __EXEHDR__: absolute = 1
 
 
@@ -11,8 +12,8 @@
 ; EXE header
         .segment "EXEHDR"
         .byte   'L','Y','N','X'                         ; magic
-        .word   __BLOCKSIZE__                           ; bank 0 page size
-        .word   __BLOCKSIZE__                           ; bank 1 page size
+        .word   __BANK0BLOCKSIZE__                      ; bank 0 page size
+        .word   __BANK1BLOCKSIZE__                      ; bank 1 page size
         .word   1                                       ; version number
         .asciiz "Cart name                      "       ; 32 bytes cart name
         .asciiz "Manufacturer   "                       ; 16 bytes manufacturer