]> git.sur5r.net Git - cc65/commitdiff
Use structs
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Wed, 3 Dec 2003 20:54:43 +0000 (20:54 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Wed, 3 Dec 2003 20:54:43 +0000 (20:54 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@2711 b7a2c559-68d2-44c3-8de9-860c34a00d81

asminc/o65.inc
libsrc/common/modload.s

index 4bb9938fefcf3d6a8aa4718610d46b9a8ad39369..12f3917166a09329990c797ad037a2f8a41340ac 100644 (file)
 
 
 
-; Offsets into the o65 header structure (6502 format)
-O65_HDR_MARKER          =       0       ; Non-C64 marker
-O65_HDR_MAGIC           =       2       ; o65 magic
-O65_HDR_VERSION         =       5       ; Version number
-O65_HDR_MODE            =       6       ; Mode word
-O65_HDR_TBASE           =       8       ; Original text (code) segment address
-O65_HDR_TLEN            =      10       ; Size of text (code) segment
-O65_HDR_DBASE           =      12       ; Original data segment address
-O65_HDR_DLEN            =      14       ; Size of data segment
-O65_HDR_BBASE           =      16       ; Original bss segment address
-O65_HDR_BLEN            =      18       ; Size of bss segment
-O65_HDR_ZBASE           =      20       ; Original zp segment address
-O65_HDR_ZLEN            =      22       ; Size of zp segment
-O65_HDR_STACK           =      24       ; Stacksize needed
-O65_HDR_SIZE            =      26       ; Size of header structure
+; The o65 header structure (6502 format)
+.struct O65_HDR
+        MARKER          .byte   2       ; Non-C64 marker: $01 $00
+        MAGIC           .byte   3       ; o65 magic: "o65"
+        VERSION         .byte   1       ; Version number
+        MODE            .word           ; Mode word
+        TBASE           .word           ; Original text (code) segment address
+        TLEN            .word           ; Size of text (code) segment
+        DBASE           .word           ; Original data segment address
+        DLEN            .word           ; Size of data segment
+        BBASE           .word           ; Original bss segment address
+        BLEN            .word           ; Size of bss segment
+        ZBASE           .word           ; Original zp segment address
+        ZLEN            .word           ; Size of zp segment
+        STACK           .word           ; Stacksize needed
+.endstruct
 
 ; Marker, magic and version number
 O65_MARKER_0            =       $01
index 0818f686a1963c30a4be31a601d9ddf2f70e99d0..ac04a39870be89424698f60177d920dd9cd9e67d 100644 (file)
@@ -63,7 +63,7 @@ RegBankSave:    .res    6               ; Save area for register bank
 ; The header of the o65 file. Since we don't need the first 8 bytes any
 ; longer, once we've checked them, we will overlay them with other data to
 ; save a few bytes.
-Header:         .res    O65_HDR_SIZE    ; The o65 header
+Header:         .tag    O65_HDR         ; The o65 header
 
 ; Input
 InputByte       = Header                ; Byte read from input
@@ -349,7 +349,7 @@ _mod_load:
         lda     #<Header
         ldx     #>Header
         jsr     pushax
-        lda     #O65_HDR_SIZE
+        lda     #.sizeof(O65_HDR)
         ldx     #0                      ; Always less than 256
         jsr     ReadAndCheckError       ; Bails out in case of errors
 
@@ -439,19 +439,19 @@ HeaderError:
 ; caller
 
 CalcSizes:
-        lda     Header + O65_HDR_TLEN
-        add     Header + O65_HDR_DLEN
+        lda     Header + O65_HDR::TLEN
+        add     Header + O65_HDR::DLEN
         sta     TPtr
-        lda     Header + O65_HDR_TLEN + 1
-        adc     Header + O65_HDR_DLEN + 1
+        lda     Header + O65_HDR::TLEN + 1
+        adc     Header + O65_HDR::DLEN + 1
         sta     TPtr+1
         lda     TPtr
-        add     Header + O65_HDR_BLEN
+        add     Header + O65_HDR::BLEN
         pha                             ; Save low byte of total size
         ldy     #MOD_CTRL::MODULE_SIZE
         sta     (Ctrl),y
         lda     TPtr+1
-        adc     Header + O65_HDR_BLEN + 1
+        adc     Header + O65_HDR::BLEN + 1
         iny
         sta     (Ctrl),y
         tax
@@ -489,8 +489,8 @@ GotMem: lda     Module
         tax
         pla
         jsr     pushax
-        lda     Header + O65_HDR_BLEN
-        ldx     Header + O65_HDR_BLEN+1
+        lda     Header + O65_HDR::BLEN
+        ldx     Header + O65_HDR::BLEN+1
         jsr     _bzero                  ; bzero (bss, bss_size);
 
 ; Load code and data segment into memory. The sum of the sizes of
@@ -525,10 +525,10 @@ Reloc:  lda     Module
 ; Relocate the data segment
 
         lda     Module
-        add     Header + O65_HDR_TLEN
+        add     Header + O65_HDR::TLEN
         pha
         lda     Module + 1
-        adc     Header + O65_HDR_TLEN + 1
+        adc     Header + O65_HDR::TLEN + 1
         tax
         pla                             ; Data segment address in a/x
         jsr     RelocSeg