mirror of
https://github.com/dschmenk/PLASMA.git
synced 2025-08-09 16:25:01 +00:00
Check for existing string in pool before copying CS string from aux mem
This commit is contained in:
@@ -15,10 +15,10 @@ PROMPT = $33
|
|||||||
;* PRODOS
|
;* PRODOS
|
||||||
;*
|
;*
|
||||||
PRODOS = $BF00
|
PRODOS = $BF00
|
||||||
DEVCNT = $BF31 ; GLOBAL PAGE DEVICE COUNT
|
DEVCNT = $BF31 ; GLOBAL PAGE DEVICE COUNT
|
||||||
DEVLST = $BF32 ; GLOBAL PAGE DEVICE LIST
|
DEVLST = $BF32 ; GLOBAL PAGE DEVICE LIST
|
||||||
MACHID = $BF98 ; GLOBAL PAGE MACHINE ID BYTE
|
MACHID = $BF98 ; GLOBAL PAGE MACHINE ID BYTE
|
||||||
RAMSLOT = $BF26 ; SLOT 3, DRIVE 2 IS /RAM'S DRIVER VECTOR
|
RAMSLOT = $BF26 ; SLOT 3, DRIVE 2 IS /RAM'S DRIVER VECTOR
|
||||||
NODEV = $BF10
|
NODEV = $BF10
|
||||||
;*
|
;*
|
||||||
;* HARDWARE ADDRESSES
|
;* HARDWARE ADDRESSES
|
||||||
@@ -786,7 +786,47 @@ CSX DEX
|
|||||||
TAY
|
TAY
|
||||||
ADC IPH
|
ADC IPH
|
||||||
STA IPH
|
STA IPH
|
||||||
LDA (IP),Y
|
LDA PPH ; SCAN POOL FOR STRING ALREADY THERE
|
||||||
|
STA TMPH
|
||||||
|
LDA PPL
|
||||||
|
STA TMPL
|
||||||
|
_CMPPSX LDA TMPH ; CHECK FOR END OF POOL
|
||||||
|
CMP IFPH
|
||||||
|
BCC _CMPSX ; CHECK FOR MATCHING STRING
|
||||||
|
BNE _CPYSX ; BEYOND END OF POOL, COPY STRING OVER
|
||||||
|
LDA TMPL
|
||||||
|
CMP IFPL
|
||||||
|
BCS _CPYSX ; AT OR BEYOND END OF POOL, COPY STRING OVER
|
||||||
|
_CMPSX STA ALTRDOFF
|
||||||
|
LDA (TMP),Y ; COMPARE STRINGS FROM AUX MEM TO STRINGS IN MAIN MEM
|
||||||
|
STA ALTRDON
|
||||||
|
CMP (IP),Y ; COMPARE STRING LENGTHS
|
||||||
|
BNE _CNXTSX1
|
||||||
|
TAY
|
||||||
|
_CMPCSX STA ALTRDOFF
|
||||||
|
LDA (TMP),Y ; COMPARE STRING CHARS FROM END
|
||||||
|
STA ALTRDON
|
||||||
|
CMP (IP),Y
|
||||||
|
BNE _CNXTSX
|
||||||
|
DEY
|
||||||
|
BNE _CMPCSX
|
||||||
|
LDA TMPL ; MATCH - SAVE EXISTING ADDR ON ESTK AND MOVE ON
|
||||||
|
STA ESTKL,X
|
||||||
|
LDA TMPH
|
||||||
|
STA ESTKH,X
|
||||||
|
BNE _CEXSX
|
||||||
|
_CNXTSX LDY #$00
|
||||||
|
STA ALTRDOFF
|
||||||
|
LDA (TMP),Y
|
||||||
|
STA ALTRDON
|
||||||
|
_CNXTSX1 SEC
|
||||||
|
ADC TMPL
|
||||||
|
STA TMPL
|
||||||
|
LDA #$00
|
||||||
|
ADC TMPH
|
||||||
|
STA TMPH
|
||||||
|
BNE _CMPPSX
|
||||||
|
_CPYSX LDA (IP),Y ; COPY STRING FROM AUX TO MAIN MEM POOL
|
||||||
TAY ; MAKE ROOM IN POOL AND SAVE ADDR ON ESTK
|
TAY ; MAKE ROOM IN POOL AND SAVE ADDR ON ESTK
|
||||||
EOR #$FF
|
EOR #$FF
|
||||||
CLC
|
CLC
|
||||||
@@ -797,13 +837,13 @@ CSX DEX
|
|||||||
ADC PPH
|
ADC PPH
|
||||||
STA PPH
|
STA PPH
|
||||||
STA ESTKH,X ; COPY STRING FROM AUX MEM BYTECODE TO MAIN MEM POOL
|
STA ESTKH,X ; COPY STRING FROM AUX MEM BYTECODE TO MAIN MEM POOL
|
||||||
- LDA (IP),Y ; ALTRD IS ON, NO NEED TO CHANGE IT HERE
|
_CPYSX1 LDA (IP),Y ; ALTRD IS ON, NO NEED TO CHANGE IT HERE
|
||||||
STA (PP),Y ; ALTWR IS OFF, NO NEED TO CHANGE IT HERE
|
STA (PP),Y ; ALTWR IS OFF, NO NEED TO CHANGE IT HERE
|
||||||
DEY
|
DEY
|
||||||
CPY #$FF
|
CPY #$FF
|
||||||
BNE -
|
BNE _CPYSX1
|
||||||
INY
|
INY
|
||||||
LDA (IP),Y ; SKIP TO NEXT OP ADDR AFTER STRING
|
_CEXSX LDA (IP),Y ; SKIP TO NEXT OP ADDR AFTER STRING
|
||||||
TAY
|
TAY
|
||||||
JMP NEXTOP
|
JMP NEXTOP
|
||||||
;*
|
;*
|
||||||
|
Reference in New Issue
Block a user