mirror of
https://github.com/dschmenk/PLASMA.git
synced 2025-01-07 15:31:49 +00:00
Update module loader to handle 8 bit fixups generated by EDASM
This commit is contained in:
parent
a89b1b9b40
commit
6efc2b1a98
BIN
images/apple/ASM-TK.po
Executable file
BIN
images/apple/ASM-TK.po
Executable file
Binary file not shown.
@ -152,7 +152,9 @@ cp samplesrc/fppow.pla prodos/bld/samples/FPPOW.PLA.TXT
|
||||
cp utilsrc/apple/mon.pla prodos/bld/samples/MON.PLA.TXT
|
||||
cp utilsrc/apple/zipchip.pla prodos/bld/samples/ZIPCHIP.PLA.TXT
|
||||
|
||||
cp libsrc/apple/dhgrlib.pla prodos/bld/DHGR.PLA.TXT
|
||||
cp libsrc/apple/dhgrlib.pla prodos/bld/samples/DHGR.PLA.TXT
|
||||
cp samplesrc/testrel.asm prodos/bld/samples/TESTREL.ASM.TXT
|
||||
cp samplesrc/testext.asm prodos/bld/samples/TESTEXT.ASM.TXT
|
||||
|
||||
mkdir prodos/bld/scripts
|
||||
cp scripts/rod.4th prodos/bld/scripts/ROD.4TH.TXT
|
||||
|
@ -1,42 +0,0 @@
|
||||
REL
|
||||
ORG $1000
|
||||
;
|
||||
ESTKH EQU $C0
|
||||
ESTKL EQU $D0
|
||||
;
|
||||
EXTRN PUTS
|
||||
EXTRN PUTLN
|
||||
;
|
||||
; EXT HEADER
|
||||
;
|
||||
DW $6502
|
||||
DW 0 ; SYSFLAGS
|
||||
DW DEFSEG ; DEF OFFSET
|
||||
DW 1 ; DEF COUNT (INCLUDING INIT)
|
||||
DW MODINIT ; MOD INIT
|
||||
MSB ON
|
||||
ASC "CMDSY" ; MOD DEPENDENCIES
|
||||
MSB OFF
|
||||
ASC "S"
|
||||
DB 0
|
||||
;
|
||||
; DATA AND 6502 CODE SEGMENT
|
||||
;
|
||||
MSG STR "Hello"
|
||||
MSGADDR DW MSG
|
||||
ASMINIT LDA MSGADDR
|
||||
LDY MSGADDR+1
|
||||
DEX
|
||||
STA ESTKL,X
|
||||
STY ESTKH,X
|
||||
JSR PUTS
|
||||
JMP PUTLN
|
||||
;
|
||||
; BYTECODE DEFS SEGMENT
|
||||
;
|
||||
DEFSEG EQU *
|
||||
MODINIT DB $54 ; CALL ASMINIT
|
||||
DW ASMINIT
|
||||
DB $2C ; CW
|
||||
DW $2000 ; MODKEEP
|
||||
DB $5C ; RET
|
86
src/samplesrc/testext.asm
Normal file
86
src/samplesrc/testext.asm
Normal file
@ -0,0 +1,86 @@
|
||||
;
|
||||
; EXTENDED REL MODULE WITH DEPENDENCIES, BYTECODE SEGMENT, AND INIT
|
||||
;
|
||||
REL
|
||||
ORG $1000
|
||||
;
|
||||
; USEFUL ZERO PAGE LOCATIONS
|
||||
;
|
||||
SRC EQU $06
|
||||
SRCL EQU SRC
|
||||
SRCH EQU SRC+1
|
||||
DST EQU SRC+2
|
||||
DSTL EQU DST
|
||||
DSTH EQU DST+1
|
||||
TMP EQU $E7
|
||||
TMPL EQU TMP
|
||||
TMPH EQU TMP+1
|
||||
ESTKH EQU $C0
|
||||
ESTKL EQU $D0
|
||||
DROPOP EQU $EF
|
||||
NEXTOP EQU $F0
|
||||
FETCHOP EQU NEXTOP+1
|
||||
;
|
||||
; JUMP TO BYTECODE INTERPRETER ADDRESS
|
||||
;
|
||||
INTERP EQU $03D0
|
||||
;
|
||||
; EXTERNALS USED BY THIS MODULE
|
||||
;
|
||||
EXTRN PUTS
|
||||
EXTRN PUTLN
|
||||
;
|
||||
; EXT HEADER
|
||||
;
|
||||
DW $6502
|
||||
DW 0 ; SYSFLAGS
|
||||
DW DEFSEG ; DEF OFFSET
|
||||
DW 1 ; DEF COUNT (INCLUDING INIT)
|
||||
DW MODINIT ; MOD INIT
|
||||
MSB ON
|
||||
ASC "CMDSY" ; MOD DEPENDENCIES (DCI BACKWARDS HI/LO BIT FROM REL FILE)
|
||||
MSB OFF
|
||||
ASC "S"
|
||||
DB 0
|
||||
;
|
||||
; DATA AND 6502 CODE SEGMENT
|
||||
;
|
||||
HIMSG STR "Hello"
|
||||
HELLO DEF HELLO ; CALLABLE FROM EXTERNAL MODULES
|
||||
LDA #>HIMSG
|
||||
LDY #<HIMSG
|
||||
DEX
|
||||
STA ESTKL,X
|
||||
STY ESTKH,X
|
||||
JSR PUTS
|
||||
JMP PUTLN
|
||||
BYEMSG STR "Goodbye"
|
||||
GOODBYE DEF GOODBYE ; CALLABLE FROM EXTERNAL MODULES
|
||||
LDA #>BYEMSG
|
||||
LDY #<BYEMSG
|
||||
DEX
|
||||
STA ESTKL,X
|
||||
STY ESTKH,X
|
||||
JSR PUTS
|
||||
JMP PUTLN
|
||||
;
|
||||
; INITIALIZE MODULE AND RETURN SUCCESS
|
||||
;
|
||||
INIT LDA #$00
|
||||
JSR HELLO
|
||||
LDY #$00
|
||||
DEX
|
||||
STA ESTKL,X
|
||||
STY ESTKH,X
|
||||
RTS
|
||||
;
|
||||
; BYTECODE DEFS SEGMENT
|
||||
;
|
||||
DB 0 ; PAD BYE
|
||||
DEFSEG EQU *
|
||||
;
|
||||
; INIT CODE RUNS WHEN MODULE LOADED
|
||||
;
|
||||
MODINIT DB $54 ; CALL ASM INIT
|
||||
DW INIT
|
||||
DB $5C ; RET
|
52
src/samplesrc/testrel.asm
Normal file
52
src/samplesrc/testrel.asm
Normal file
@ -0,0 +1,52 @@
|
||||
;
|
||||
; SIMPLE REL FILE - NO DEPENDENCIES, NO INIT CODE
|
||||
;
|
||||
REL
|
||||
ORG $1000
|
||||
;
|
||||
; USEFUL ZERO PAGE LOCATIONS
|
||||
;
|
||||
SRC EQU $06
|
||||
SRCL EQU SRC
|
||||
SRCH EQU SRC+1
|
||||
DST EQU SRC+2
|
||||
DSTL EQU DST
|
||||
DSTH EQU DST+1
|
||||
TMP EQU $E7
|
||||
TMPL EQU TMP
|
||||
TMPH EQU TMP+1
|
||||
ESTKH EQU $C0
|
||||
ESTKL EQU $D0
|
||||
DROPOP EQU $EF
|
||||
NEXTOP EQU $F0
|
||||
FETCHOP EQU NEXTOP+1
|
||||
;
|
||||
; JUMP TO BYTECODE INTERPRETER ADDRESS
|
||||
;
|
||||
INTERP EQU $03D0
|
||||
;
|
||||
; EXTERNALS USED BY THIS MODULE
|
||||
;
|
||||
EXTRN PUTS
|
||||
EXTRN PUTLN
|
||||
;
|
||||
; DATA AND MACHINE CODE FOR THIS REL MODULE
|
||||
;
|
||||
HIMSG STR "Hello"
|
||||
HELLO DEF HELLO
|
||||
LDA #>HIMSG
|
||||
LDY #<HIMSG
|
||||
DEX
|
||||
STA ESTKL,X
|
||||
STY ESTKH,X
|
||||
JSR PUTS
|
||||
JMP PUTLN
|
||||
BYEMSG STR "Goodbye"
|
||||
GOODBYE DEF GOODBYE
|
||||
LDA #>BYEMSG
|
||||
LDY #<BYEMSG
|
||||
DEX
|
||||
STA ESTKL,X
|
||||
STY ESTKH,X
|
||||
JSR PUTS
|
||||
JMP PUTLN
|
@ -666,25 +666,42 @@ asm reloc(modfix, modofst, bytecode, rld)#3
|
||||
LDY #$00
|
||||
- LDA (SRC),Y
|
||||
BEQ RLDEX ; END OF RLD
|
||||
PHA
|
||||
INY
|
||||
LDA (SRC),Y
|
||||
INY
|
||||
CLC
|
||||
ADC ESTKL+3,X ; ADDR=ENTRY=>1+MODFIX
|
||||
STA DSTL
|
||||
INY
|
||||
LDA (SRC),Y
|
||||
ADC ESTKH+3,X
|
||||
STA DSTH
|
||||
PLA
|
||||
LDY #$00
|
||||
LDA (SRC),Y
|
||||
AND #$10 ; EXTERN REF - EXIT
|
||||
BNE RLDEX
|
||||
TAY ; FIXUP=*ADDR+MODOFST
|
||||
LDA (SRC),Y
|
||||
BMI FIX16
|
||||
AND #$40
|
||||
BNE FIXMSB
|
||||
FIXLSB LDA (DST),Y
|
||||
CLC
|
||||
ADC ESTKL+2,X
|
||||
CLC
|
||||
BCC FIX8
|
||||
FIXMSB LDY #$03
|
||||
LDA (SRC),Y ; FIXUPH=(ENTRY->3+MODOFSTL)+(^ADDR+MODOFSTH)
|
||||
CLC
|
||||
ADC ESTKL+2,X
|
||||
LDY #$00
|
||||
LDA (DST),Y
|
||||
INY
|
||||
ADC ESTKH+2,X
|
||||
CLC
|
||||
BCC FIX8
|
||||
FIX16 LDA (DST),Y ; FIXUP=*ADDR+MODOFST
|
||||
CLC
|
||||
ADC ESTKL+2,X
|
||||
STA TMPL
|
||||
INY
|
||||
LDA (DST),Y
|
||||
ADC ESTKH+2,X
|
||||
CMP ESTKH+1,X ; FIXUP >= BYTECODE?
|
||||
@ -698,7 +715,7 @@ asm reloc(modfix, modofst, bytecode, rld)#3
|
||||
+ STA (DST),Y ; *ADDR=FIXUP
|
||||
DEY
|
||||
LDA TMPL
|
||||
STA (DST),Y
|
||||
FIX8 STA (DST),Y
|
||||
LDA SRCL ; NEXT ENTRY
|
||||
; CLC
|
||||
ADC #$04
|
||||
|
@ -753,25 +753,42 @@ asm reloc(modfix, modofst, bytecode, rld)#3
|
||||
LDY #$00
|
||||
- LDA (SRC),Y
|
||||
BEQ RLDEX ; END OF RLD
|
||||
PHA
|
||||
INY
|
||||
LDA (SRC),Y
|
||||
INY
|
||||
CLC
|
||||
ADC ESTKL+3,X ; ADDR=ENTRY=>1+MODFIX
|
||||
STA DSTL
|
||||
INY
|
||||
LDA (SRC),Y
|
||||
ADC ESTKH+3,X
|
||||
STA DSTH
|
||||
PLA
|
||||
LDY #$00
|
||||
LDA (SRC),Y
|
||||
AND #$10 ; EXTERN REF - EXIT
|
||||
BNE RLDEX
|
||||
TAY ; FIXUP=*ADDR+MODOFST
|
||||
LDA (SRC),Y
|
||||
BMI FIX16
|
||||
AND #$40
|
||||
BNE FIXMSB
|
||||
FIXLSB LDA (DST),Y
|
||||
CLC
|
||||
ADC ESTKL+2,X
|
||||
CLC
|
||||
BCC FIX8
|
||||
FIXMSB LDY #$03
|
||||
LDA (SRC),Y ; FIXUPH=(ENTRY->3+MODOFSTL)+(^ADDR+MODOFSTH)
|
||||
CLC
|
||||
ADC ESTKL+2,X
|
||||
LDY #$00
|
||||
LDA (DST),Y
|
||||
INY
|
||||
ADC ESTKH+2,X
|
||||
CLC
|
||||
BCC FIX8
|
||||
FIX16 LDA (DST),Y ; FIXUP=*ADDR+MODOFST
|
||||
CLC
|
||||
ADC ESTKL+2,X
|
||||
STA TMPL
|
||||
INY
|
||||
LDA (DST),Y
|
||||
ADC ESTKH+2,X
|
||||
CMP ESTKH+1,X ; FIXUP >= BYTECODE?
|
||||
@ -785,7 +802,7 @@ asm reloc(modfix, modofst, bytecode, rld)#3
|
||||
+ STA (DST),Y ; *ADDR=FIXUP
|
||||
DEY
|
||||
LDA TMPL
|
||||
STA (DST),Y
|
||||
FIX8 STA (DST),Y
|
||||
LDA SRCL ; NEXT ENTRY
|
||||
; CLC
|
||||
ADC #$04
|
||||
|
@ -773,25 +773,42 @@ asm reloc(modfix, modofst, bytecode, rld)#3
|
||||
LDY #$00
|
||||
- LDA (SRC),Y
|
||||
BEQ RLDEX ; END OF RLD
|
||||
PHA
|
||||
INY
|
||||
LDA (SRC),Y
|
||||
INY
|
||||
CLC
|
||||
ADC ESTKL+3,X ; ADDR=ENTRY=>1+MODFIX
|
||||
STA DSTL
|
||||
INY
|
||||
LDA (SRC),Y
|
||||
ADC ESTKH+3,X
|
||||
STA DSTH
|
||||
PLA
|
||||
LDY #$00
|
||||
LDA (SRC),Y
|
||||
AND #$10 ; EXTERN REF - EXIT
|
||||
BNE RLDEX
|
||||
TAY ; FIXUP=*ADDR+MODOFST
|
||||
LDA (SRC),Y
|
||||
BMI FIX16
|
||||
AND #$40
|
||||
BNE FIXMSB
|
||||
FIXLSB LDA (DST),Y
|
||||
CLC
|
||||
ADC ESTKL+2,X
|
||||
CLC
|
||||
BCC FIX8
|
||||
FIXMSB LDY #$03
|
||||
LDA (SRC),Y ; FIXUPH=(ENTRY->3+MODOFSTL)+(^ADDR+MODOFSTH)
|
||||
CLC
|
||||
ADC ESTKL+2,X
|
||||
LDY #$00
|
||||
LDA (DST),Y
|
||||
INY
|
||||
ADC ESTKH+2,X
|
||||
CLC
|
||||
BCC FIX8
|
||||
FIX16 LDA (DST),Y ; FIXUP=*ADDR+MODOFST
|
||||
CLC
|
||||
ADC ESTKL+2,X
|
||||
STA TMPL
|
||||
INY
|
||||
LDA (DST),Y
|
||||
ADC ESTKH+2,X
|
||||
CMP ESTKH+1,X ; FIXUP >= BYTECODE?
|
||||
@ -805,7 +822,7 @@ asm reloc(modfix, modofst, bytecode, rld)#3
|
||||
+ STA (DST),Y ; *ADDR=FIXUP
|
||||
DEY
|
||||
LDA TMPL
|
||||
STA (DST),Y
|
||||
FIX8 STA (DST),Y
|
||||
LDA SRCL ; NEXT ENTRY
|
||||
; CLC
|
||||
ADC #$04
|
||||
|
@ -731,25 +731,42 @@ asm reloc(modfix, modofst, bytecode, rld)#3
|
||||
LDY #$00
|
||||
- LDA (SRC),Y
|
||||
BEQ RLDEX ; END OF RLD
|
||||
PHA
|
||||
INY
|
||||
LDA (SRC),Y
|
||||
INY
|
||||
CLC
|
||||
ADC ESTKL+3,X ; ADDR=ENTRY=>1+MODFIX
|
||||
STA DSTL
|
||||
INY
|
||||
LDA (SRC),Y
|
||||
ADC ESTKH+3,X
|
||||
STA DSTH
|
||||
PLA
|
||||
LDY #$00
|
||||
LDA (SRC),Y
|
||||
AND #$10 ; EXTERN REF - EXIT
|
||||
BNE RLDEX
|
||||
TAY ; FIXUP=*ADDR+MODOFST
|
||||
LDA (SRC),Y
|
||||
BMI FIX16
|
||||
AND #$40
|
||||
BNE FIXMSB
|
||||
FIXLSB LDA (DST),Y
|
||||
CLC
|
||||
ADC ESTKL+2,X
|
||||
CLC
|
||||
BCC FIX8
|
||||
FIXMSB LDY #$03
|
||||
LDA (SRC),Y ; FIXUPH=(ENTRY->3+MODOFSTL)+(^ADDR+MODOFSTH)
|
||||
CLC
|
||||
ADC ESTKL+2,X
|
||||
LDY #$00
|
||||
LDA (DST),Y
|
||||
INY
|
||||
ADC ESTKH+2,X
|
||||
CLC
|
||||
BCC FIX8
|
||||
FIX16 LDA (DST),Y ; FIXUP=*ADDR+MODOFST
|
||||
CLC
|
||||
ADC ESTKL+2,X
|
||||
STA TMPL
|
||||
INY
|
||||
LDA (DST),Y
|
||||
ADC ESTKH+2,X
|
||||
CMP ESTKH+1,X ; FIXUP >= BYTECODE?
|
||||
@ -763,7 +780,7 @@ asm reloc(modfix, modofst, bytecode, rld)#3
|
||||
+ STA (DST),Y ; *ADDR=FIXUP
|
||||
DEY
|
||||
LDA TMPL
|
||||
STA (DST),Y
|
||||
FIX8 STA (DST),Y
|
||||
LDA SRCL ; NEXT ENTRY
|
||||
; CLC
|
||||
ADC #$04
|
||||
|
@ -742,25 +742,42 @@ asm reloc(modfix, modofst, bytecode, rld)#3
|
||||
LDY #$00
|
||||
- LDA (SRC),Y
|
||||
BEQ RLDEX ; END OF RLD
|
||||
PHA
|
||||
INY
|
||||
LDA (SRC),Y
|
||||
INY
|
||||
CLC
|
||||
ADC ESTKL+3,X ; ADDR=ENTRY=>1+MODFIX
|
||||
STA DSTL
|
||||
INY
|
||||
LDA (SRC),Y
|
||||
ADC ESTKH+3,X
|
||||
STA DSTH
|
||||
PLA
|
||||
LDY #$00
|
||||
LDA (SRC),Y
|
||||
AND #$10 ; EXTERN REF - EXIT
|
||||
BNE RLDEX
|
||||
TAY ; FIXUP=*ADDR+MODOFST
|
||||
LDA (SRC),Y
|
||||
BMI FIX16
|
||||
AND #$40
|
||||
BNE FIXMSB
|
||||
FIXLSB LDA (DST),Y
|
||||
CLC
|
||||
ADC ESTKL+2,X
|
||||
CLC
|
||||
BCC FIX8
|
||||
FIXMSB LDY #$03
|
||||
LDA (SRC),Y ; FIXUPH=(ENTRY->3+MODOFSTL)+(^ADDR+MODOFSTH)
|
||||
CLC
|
||||
ADC ESTKL+2,X
|
||||
LDY #$00
|
||||
LDA (DST),Y
|
||||
INY
|
||||
ADC ESTKH+2,X
|
||||
CLC
|
||||
BCC FIX8
|
||||
FIX16 LDA (DST),Y ; FIXUP=*ADDR+MODOFST
|
||||
CLC
|
||||
ADC ESTKL+2,X
|
||||
STA TMPL
|
||||
INY
|
||||
LDA (DST),Y
|
||||
ADC ESTKH+2,X
|
||||
CMP ESTKH+1,X ; FIXUP >= BYTECODE?
|
||||
@ -774,7 +791,7 @@ asm reloc(modfix, modofst, bytecode, rld)#3
|
||||
+ STA (DST),Y ; *ADDR=FIXUP
|
||||
DEY
|
||||
LDA TMPL
|
||||
STA (DST),Y
|
||||
FIX8 STA (DST),Y
|
||||
LDA SRCL ; NEXT ENTRY
|
||||
; CLC
|
||||
ADC #$04
|
||||
|
Loading…
Reference in New Issue
Block a user