mirror of
https://github.com/dschmenk/PLASMA.git
synced 2025-01-23 14:30:48 +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/mon.pla prodos/bld/samples/MON.PLA.TXT
|
||||||
cp utilsrc/apple/zipchip.pla prodos/bld/samples/ZIPCHIP.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
|
mkdir prodos/bld/scripts
|
||||||
cp scripts/rod.4th prodos/bld/scripts/ROD.4TH.TXT
|
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
|
LDY #$00
|
||||||
- LDA (SRC),Y
|
- LDA (SRC),Y
|
||||||
BEQ RLDEX ; END OF RLD
|
BEQ RLDEX ; END OF RLD
|
||||||
PHA
|
|
||||||
INY
|
INY
|
||||||
LDA (SRC),Y
|
LDA (SRC),Y
|
||||||
INY
|
|
||||||
CLC
|
CLC
|
||||||
ADC ESTKL+3,X ; ADDR=ENTRY=>1+MODFIX
|
ADC ESTKL+3,X ; ADDR=ENTRY=>1+MODFIX
|
||||||
STA DSTL
|
STA DSTL
|
||||||
|
INY
|
||||||
LDA (SRC),Y
|
LDA (SRC),Y
|
||||||
ADC ESTKH+3,X
|
ADC ESTKH+3,X
|
||||||
STA DSTH
|
STA DSTH
|
||||||
PLA
|
LDY #$00
|
||||||
|
LDA (SRC),Y
|
||||||
AND #$10 ; EXTERN REF - EXIT
|
AND #$10 ; EXTERN REF - EXIT
|
||||||
BNE RLDEX
|
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
|
LDA (DST),Y
|
||||||
INY
|
ADC ESTKH+2,X
|
||||||
|
CLC
|
||||||
|
BCC FIX8
|
||||||
|
FIX16 LDA (DST),Y ; FIXUP=*ADDR+MODOFST
|
||||||
CLC
|
CLC
|
||||||
ADC ESTKL+2,X
|
ADC ESTKL+2,X
|
||||||
STA TMPL
|
STA TMPL
|
||||||
|
INY
|
||||||
LDA (DST),Y
|
LDA (DST),Y
|
||||||
ADC ESTKH+2,X
|
ADC ESTKH+2,X
|
||||||
CMP ESTKH+1,X ; FIXUP >= BYTECODE?
|
CMP ESTKH+1,X ; FIXUP >= BYTECODE?
|
||||||
@ -698,7 +715,7 @@ asm reloc(modfix, modofst, bytecode, rld)#3
|
|||||||
+ STA (DST),Y ; *ADDR=FIXUP
|
+ STA (DST),Y ; *ADDR=FIXUP
|
||||||
DEY
|
DEY
|
||||||
LDA TMPL
|
LDA TMPL
|
||||||
STA (DST),Y
|
FIX8 STA (DST),Y
|
||||||
LDA SRCL ; NEXT ENTRY
|
LDA SRCL ; NEXT ENTRY
|
||||||
; CLC
|
; CLC
|
||||||
ADC #$04
|
ADC #$04
|
||||||
|
@ -753,25 +753,42 @@ asm reloc(modfix, modofst, bytecode, rld)#3
|
|||||||
LDY #$00
|
LDY #$00
|
||||||
- LDA (SRC),Y
|
- LDA (SRC),Y
|
||||||
BEQ RLDEX ; END OF RLD
|
BEQ RLDEX ; END OF RLD
|
||||||
PHA
|
|
||||||
INY
|
INY
|
||||||
LDA (SRC),Y
|
LDA (SRC),Y
|
||||||
INY
|
|
||||||
CLC
|
CLC
|
||||||
ADC ESTKL+3,X ; ADDR=ENTRY=>1+MODFIX
|
ADC ESTKL+3,X ; ADDR=ENTRY=>1+MODFIX
|
||||||
STA DSTL
|
STA DSTL
|
||||||
|
INY
|
||||||
LDA (SRC),Y
|
LDA (SRC),Y
|
||||||
ADC ESTKH+3,X
|
ADC ESTKH+3,X
|
||||||
STA DSTH
|
STA DSTH
|
||||||
PLA
|
LDY #$00
|
||||||
|
LDA (SRC),Y
|
||||||
AND #$10 ; EXTERN REF - EXIT
|
AND #$10 ; EXTERN REF - EXIT
|
||||||
BNE RLDEX
|
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
|
LDA (DST),Y
|
||||||
INY
|
ADC ESTKH+2,X
|
||||||
|
CLC
|
||||||
|
BCC FIX8
|
||||||
|
FIX16 LDA (DST),Y ; FIXUP=*ADDR+MODOFST
|
||||||
CLC
|
CLC
|
||||||
ADC ESTKL+2,X
|
ADC ESTKL+2,X
|
||||||
STA TMPL
|
STA TMPL
|
||||||
|
INY
|
||||||
LDA (DST),Y
|
LDA (DST),Y
|
||||||
ADC ESTKH+2,X
|
ADC ESTKH+2,X
|
||||||
CMP ESTKH+1,X ; FIXUP >= BYTECODE?
|
CMP ESTKH+1,X ; FIXUP >= BYTECODE?
|
||||||
@ -785,7 +802,7 @@ asm reloc(modfix, modofst, bytecode, rld)#3
|
|||||||
+ STA (DST),Y ; *ADDR=FIXUP
|
+ STA (DST),Y ; *ADDR=FIXUP
|
||||||
DEY
|
DEY
|
||||||
LDA TMPL
|
LDA TMPL
|
||||||
STA (DST),Y
|
FIX8 STA (DST),Y
|
||||||
LDA SRCL ; NEXT ENTRY
|
LDA SRCL ; NEXT ENTRY
|
||||||
; CLC
|
; CLC
|
||||||
ADC #$04
|
ADC #$04
|
||||||
|
@ -773,25 +773,42 @@ asm reloc(modfix, modofst, bytecode, rld)#3
|
|||||||
LDY #$00
|
LDY #$00
|
||||||
- LDA (SRC),Y
|
- LDA (SRC),Y
|
||||||
BEQ RLDEX ; END OF RLD
|
BEQ RLDEX ; END OF RLD
|
||||||
PHA
|
|
||||||
INY
|
INY
|
||||||
LDA (SRC),Y
|
LDA (SRC),Y
|
||||||
INY
|
|
||||||
CLC
|
CLC
|
||||||
ADC ESTKL+3,X ; ADDR=ENTRY=>1+MODFIX
|
ADC ESTKL+3,X ; ADDR=ENTRY=>1+MODFIX
|
||||||
STA DSTL
|
STA DSTL
|
||||||
|
INY
|
||||||
LDA (SRC),Y
|
LDA (SRC),Y
|
||||||
ADC ESTKH+3,X
|
ADC ESTKH+3,X
|
||||||
STA DSTH
|
STA DSTH
|
||||||
PLA
|
LDY #$00
|
||||||
|
LDA (SRC),Y
|
||||||
AND #$10 ; EXTERN REF - EXIT
|
AND #$10 ; EXTERN REF - EXIT
|
||||||
BNE RLDEX
|
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
|
LDA (DST),Y
|
||||||
INY
|
ADC ESTKH+2,X
|
||||||
|
CLC
|
||||||
|
BCC FIX8
|
||||||
|
FIX16 LDA (DST),Y ; FIXUP=*ADDR+MODOFST
|
||||||
CLC
|
CLC
|
||||||
ADC ESTKL+2,X
|
ADC ESTKL+2,X
|
||||||
STA TMPL
|
STA TMPL
|
||||||
|
INY
|
||||||
LDA (DST),Y
|
LDA (DST),Y
|
||||||
ADC ESTKH+2,X
|
ADC ESTKH+2,X
|
||||||
CMP ESTKH+1,X ; FIXUP >= BYTECODE?
|
CMP ESTKH+1,X ; FIXUP >= BYTECODE?
|
||||||
@ -805,7 +822,7 @@ asm reloc(modfix, modofst, bytecode, rld)#3
|
|||||||
+ STA (DST),Y ; *ADDR=FIXUP
|
+ STA (DST),Y ; *ADDR=FIXUP
|
||||||
DEY
|
DEY
|
||||||
LDA TMPL
|
LDA TMPL
|
||||||
STA (DST),Y
|
FIX8 STA (DST),Y
|
||||||
LDA SRCL ; NEXT ENTRY
|
LDA SRCL ; NEXT ENTRY
|
||||||
; CLC
|
; CLC
|
||||||
ADC #$04
|
ADC #$04
|
||||||
|
@ -731,25 +731,42 @@ asm reloc(modfix, modofst, bytecode, rld)#3
|
|||||||
LDY #$00
|
LDY #$00
|
||||||
- LDA (SRC),Y
|
- LDA (SRC),Y
|
||||||
BEQ RLDEX ; END OF RLD
|
BEQ RLDEX ; END OF RLD
|
||||||
PHA
|
|
||||||
INY
|
INY
|
||||||
LDA (SRC),Y
|
LDA (SRC),Y
|
||||||
INY
|
|
||||||
CLC
|
CLC
|
||||||
ADC ESTKL+3,X ; ADDR=ENTRY=>1+MODFIX
|
ADC ESTKL+3,X ; ADDR=ENTRY=>1+MODFIX
|
||||||
STA DSTL
|
STA DSTL
|
||||||
|
INY
|
||||||
LDA (SRC),Y
|
LDA (SRC),Y
|
||||||
ADC ESTKH+3,X
|
ADC ESTKH+3,X
|
||||||
STA DSTH
|
STA DSTH
|
||||||
PLA
|
LDY #$00
|
||||||
|
LDA (SRC),Y
|
||||||
AND #$10 ; EXTERN REF - EXIT
|
AND #$10 ; EXTERN REF - EXIT
|
||||||
BNE RLDEX
|
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
|
LDA (DST),Y
|
||||||
INY
|
ADC ESTKH+2,X
|
||||||
|
CLC
|
||||||
|
BCC FIX8
|
||||||
|
FIX16 LDA (DST),Y ; FIXUP=*ADDR+MODOFST
|
||||||
CLC
|
CLC
|
||||||
ADC ESTKL+2,X
|
ADC ESTKL+2,X
|
||||||
STA TMPL
|
STA TMPL
|
||||||
|
INY
|
||||||
LDA (DST),Y
|
LDA (DST),Y
|
||||||
ADC ESTKH+2,X
|
ADC ESTKH+2,X
|
||||||
CMP ESTKH+1,X ; FIXUP >= BYTECODE?
|
CMP ESTKH+1,X ; FIXUP >= BYTECODE?
|
||||||
@ -763,7 +780,7 @@ asm reloc(modfix, modofst, bytecode, rld)#3
|
|||||||
+ STA (DST),Y ; *ADDR=FIXUP
|
+ STA (DST),Y ; *ADDR=FIXUP
|
||||||
DEY
|
DEY
|
||||||
LDA TMPL
|
LDA TMPL
|
||||||
STA (DST),Y
|
FIX8 STA (DST),Y
|
||||||
LDA SRCL ; NEXT ENTRY
|
LDA SRCL ; NEXT ENTRY
|
||||||
; CLC
|
; CLC
|
||||||
ADC #$04
|
ADC #$04
|
||||||
|
@ -742,25 +742,42 @@ asm reloc(modfix, modofst, bytecode, rld)#3
|
|||||||
LDY #$00
|
LDY #$00
|
||||||
- LDA (SRC),Y
|
- LDA (SRC),Y
|
||||||
BEQ RLDEX ; END OF RLD
|
BEQ RLDEX ; END OF RLD
|
||||||
PHA
|
|
||||||
INY
|
INY
|
||||||
LDA (SRC),Y
|
LDA (SRC),Y
|
||||||
INY
|
|
||||||
CLC
|
CLC
|
||||||
ADC ESTKL+3,X ; ADDR=ENTRY=>1+MODFIX
|
ADC ESTKL+3,X ; ADDR=ENTRY=>1+MODFIX
|
||||||
STA DSTL
|
STA DSTL
|
||||||
|
INY
|
||||||
LDA (SRC),Y
|
LDA (SRC),Y
|
||||||
ADC ESTKH+3,X
|
ADC ESTKH+3,X
|
||||||
STA DSTH
|
STA DSTH
|
||||||
PLA
|
LDY #$00
|
||||||
|
LDA (SRC),Y
|
||||||
AND #$10 ; EXTERN REF - EXIT
|
AND #$10 ; EXTERN REF - EXIT
|
||||||
BNE RLDEX
|
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
|
LDA (DST),Y
|
||||||
INY
|
ADC ESTKH+2,X
|
||||||
|
CLC
|
||||||
|
BCC FIX8
|
||||||
|
FIX16 LDA (DST),Y ; FIXUP=*ADDR+MODOFST
|
||||||
CLC
|
CLC
|
||||||
ADC ESTKL+2,X
|
ADC ESTKL+2,X
|
||||||
STA TMPL
|
STA TMPL
|
||||||
|
INY
|
||||||
LDA (DST),Y
|
LDA (DST),Y
|
||||||
ADC ESTKH+2,X
|
ADC ESTKH+2,X
|
||||||
CMP ESTKH+1,X ; FIXUP >= BYTECODE?
|
CMP ESTKH+1,X ; FIXUP >= BYTECODE?
|
||||||
@ -774,7 +791,7 @@ asm reloc(modfix, modofst, bytecode, rld)#3
|
|||||||
+ STA (DST),Y ; *ADDR=FIXUP
|
+ STA (DST),Y ; *ADDR=FIXUP
|
||||||
DEY
|
DEY
|
||||||
LDA TMPL
|
LDA TMPL
|
||||||
STA (DST),Y
|
FIX8 STA (DST),Y
|
||||||
LDA SRCL ; NEXT ENTRY
|
LDA SRCL ; NEXT ENTRY
|
||||||
; CLC
|
; CLC
|
||||||
ADC #$04
|
ADC #$04
|
||||||
|
Loading…
x
Reference in New Issue
Block a user