]> git.sur5r.net Git - cc65/commitdiff
Fix tape header output. Add version info in the header. By Stefan Haubenthal.
authoruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sat, 16 Apr 2011 12:09:28 +0000 (12:09 +0000)
committeruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sat, 16 Apr 2011 12:09:28 +0000 (12:09 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@4984 b7a2c559-68d2-44c3-8de9-860c34a00d81

libsrc/atmos/crt0.s
src/ld65/cfg/atmos.cfg

index 1f561cfe6c126b05e84aa00d8b52ec180c4d3d7a..5feb06d3904865df6785cfb12bd0b3ce30a57598 100644 (file)
@@ -5,45 +5,48 @@
 ;
 
        .export         _exit
-        .export         __STARTUP__ : absolute = 1      ; Mark as startup
+       .export         __STARTUP__ : absolute = 1      ; Mark as startup
        .import         initlib, donelib
-       .import         callmain, zerobss
-               .import         __RAM_START__, __RAM_SIZE__
-               .import         __BSS_LOAD__, __STACKSIZE__
+       .import         callmain, zerobss
+       .import         __RAM_START__, __RAM_SIZE__
+       .import         __BSS_LOAD__, __STACKSIZE__
 
-        .include        "zeropage.inc"
-        .include        "atmos.inc"
+       .include        "zeropage.inc"
+       .include        "atmos.inc"
 
 
 ; ------------------------------------------------------------------------
 ; Oric tape header
 
-.segment        "TAPEHDR"
+.segment       "TAPEHDR"
 
-        .byte   $16, $16, $16   ; Sync bytes
-        .byte   $24             ; End of header marker
+       .byte   $16, $16, $16   ; Sync bytes
+       .byte   $24             ; End of header marker
 
-        .byte   $00                             ; $2B0
-        .byte   $00                             ; $2AF
-        .byte   $80                             ; $2AE Machine code flag
-        .byte   $C7                             ; $2AD Autoload flag
-        .dbyt   __BSS_LOAD__                    ; $2AB
-        .dbyt   __RAM_START__                   ; $2A9
-        .byte   $00                             ; $2A8
-        .byte   $00                             ; Zero terminated name
+       .byte   $00                             ; $2B0
+       .byte   $00                             ; $2AF
+       .byte   $80                             ; $2AE Machine code flag
+       .byte   $C7                             ; $2AD Autoload flag
+       .dbyt   __BSS_LOAD__                    ; $2AB
+       .dbyt   __RAM_START__                   ; $2A9
+       .byte   $00                             ; $2A8
+       .byte   ((.VERSION >> 8) & $0F) + '0'
+       .byte   ((.VERSION >> 4) & $0F) + '0'
+       .byte   (.VERSION & $0F) + '0'
+       .byte   $00                             ; Zero terminated compiler version
 
 ; ------------------------------------------------------------------------
 ; Place the startup code in a special segment.
 
-.segment               "STARTUP"
+.segment       "STARTUP"
 
 ; Save the zero page area we're about to use
 
-       ldx     #zpspace-1
+       ldx     #zpspace-1
 L1:    lda     sp,x
-       sta     zpsave,x        ; Save the zero page locations we need
+       sta     zpsave,x        ; Save the zero page locations we need
        dex
-               bpl     L1
+       bpl     L1
 
 ; Clear the BSS data
 
@@ -51,20 +54,20 @@ L1: lda     sp,x
 
 ; Unprotect columns 0 and 1
 
-        lda     STATUS
-        sta     stsave
-        and     #%11011111
-        sta     STATUS
+       lda     STATUS
+       sta     stsave
+       and     #%11011111
+       sta     STATUS
 
 ; Save system stuff and setup the stack
 
-               tsx
-               stx     spsave          ; save system stk ptr
+       tsx
+       stx     spsave          ; Save system stk ptr
 
-       lda     #<(__RAM_START__ + __RAM_SIZE__ + __STACKSIZE__)
+       lda     #<(__RAM_START__ + __RAM_SIZE__ + __STACKSIZE__)
        sta     sp
        lda     #>(__RAM_START__ + __RAM_SIZE__ + __STACKSIZE__)
-               sta     sp+1            ; Set argument stack ptr
+       sta     sp+1            ; Set argument stack ptr
 
 ; Call module constructors
 
@@ -72,7 +75,7 @@ L1:   lda     sp,x
 
 ; Push arguments and call main()
 
-               jsr     callmain
+       jsr     callmain
 
 ; Call module destructors. This is also the _exit entry.
 
@@ -82,16 +85,16 @@ _exit:      jsr     donelib         ; Run module destructors
 
        ldx     spsave
        txs
-        lda     stsave
-        sta     STATUS
+       lda     stsave
+       sta     STATUS
 
 ; Copy back the zero page stuff
 
-               ldx     #zpspace-1
+       ldx     #zpspace-1
 L2:    lda     zpsave,x
        sta     sp,x
        dex
-               bpl     L2
+       bpl     L2
 
 ; Back to BASIC
 
@@ -100,12 +103,10 @@ L2:       lda     zpsave,x
 ; ------------------------------------------------------------------------
 ; Data
 
-.segment        "ZPSAVE"
+.segment       "ZPSAVE"
 
-zpsave:        .res    zpspace
+zpsave: .res   zpspace
 
 .bss
-spsave:        .res    1
-stsave: .res    1
-
-
+spsave: .res   1
+stsave: .res   1
index b0aa899f3e36f3e57468df618f034cf45e9ad4c8..2bfb691b0b81779e5f04b9fe0f9707b0ffb4ccdd 100644 (file)
@@ -3,7 +3,7 @@ SYMBOLS {
 }
 MEMORY {
     ZP:      file = "", define = yes, start = $00E2, size = $001A;
-    TAPEHDR: file = %O, type   = ro,  start = $0000, size = $000E;
+    TAPEHDR: file = %O, type   = ro,  start = $0000, size = $0011;
     RAM:     file = %O, define = yes, start = $0500, size = $9300 - __STACKSIZE__;
 }
 SEGMENTS {
@@ -14,8 +14,8 @@ SEGMENTS {
     CODE:     load = RAM,     type = ro;
     RODATA:   load = RAM,     type = ro;
     DATA:     load = RAM,     type = rw;
-    ZPSAVE:   load = RAM,     type = bss;
     BSS:      load = RAM,     type = bss, define = yes;
+    ZPSAVE:   load = RAM,     type = bss;
     ZEROPAGE: load = ZP,      type = zp;
 }
 FEATURES {