From 298767d71ad0be05952827b52730527325960832 Mon Sep 17 00:00:00 2001 From: cuz Date: Wed, 3 Dec 2003 20:54:43 +0000 Subject: [PATCH] Use structs git-svn-id: svn://svn.cc65.org/cc65/trunk@2711 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- asminc/o65.inc | 31 ++++++++++++++++--------------- libsrc/common/modload.s | 24 ++++++++++++------------ 2 files changed, 28 insertions(+), 27 deletions(-) diff --git a/asminc/o65.inc b/asminc/o65.inc index 4bb9938fe..12f391716 100644 --- a/asminc/o65.inc +++ b/asminc/o65.inc @@ -38,21 +38,22 @@ -; 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 diff --git a/libsrc/common/modload.s b/libsrc/common/modload.s index 0818f686a..ac04a3987 100644 --- a/libsrc/common/modload.s +++ b/libsrc/common/modload.s @@ -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 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 -- 2.39.5