From 0976282d810a3b90fea722b021ebe6f11cee6986 Mon Sep 17 00:00:00 2001 From: Kelvin Sherlock Date: Sun, 31 May 2020 12:59:27 -0400 Subject: [PATCH 1/2] update program counter (for eval purposes) after each argument in data statements. db,dw,da,adr,adrl all allow multiple arguments. In merlin, the value of * is updated after each argument. in qasm, the value of * is not updated. Encountered assembling marinetti. --- src/asm/asm.1.s | 2 ++ src/asm/asm.eval.s | 4 ++-- src/asm/asm.opcodes.s | 24 ++++++++++++++++++++++++ src/asm/asm.vars.s | 1 + 4 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/asm/asm.1.s b/src/asm/asm.1.s index 8283845..4cf9d4a 100644 --- a/src/asm/asm.1.s +++ b/src/asm/asm.1.s @@ -1586,8 +1586,10 @@ initline php sta lableused lda objptr sta lineobjptr + sta pcobjptr lda objptr+2 sta lineobjptr+2 + sta pcobjptr+2 :xit plp rts diff --git a/src/asm/asm.eval.s b/src/asm/asm.eval.s index 45f805e..366024d 100644 --- a/src/asm/asm.eval.s +++ b/src/asm/asm.eval.s @@ -1285,9 +1285,9 @@ getnum php :xc1 jmp :doxc ;y still on stack! :pc iny rep $30 - lda lineobjptr + lda pcobjptr sta val - lda lineobjptr+$2 + lda pcobjptr+$2 sta val+$2 lda modeflag bit #relflag diff --git a/src/asm/asm.opcodes.s b/src/asm/asm.opcodes.s index eca9679..ac39741 100644 --- a/src/asm/asm.opcodes.s +++ b/src/asm/asm.opcodes.s @@ -2424,6 +2424,12 @@ dwop php lda lvalue+$1 jsr putbyte jsr relcorrect + rep $30 + lda objptr + sta pcobjptr + lda objptr+2 + sta pcobjptr+2 + sep $30 plx txy lda (lineptr),y @@ -2475,6 +2481,12 @@ dfbop php lda lvalue jsr putbyte jsr relcorrect + rep $30 + lda objptr + sta pcobjptr + lda objptr+2 + sta pcobjptr+2 + sep $30 plx txy lda (lineptr),y @@ -2626,6 +2638,12 @@ adrop php lda lvalue+2 jsr putbyte jsr relcorrect + rep $30 + lda objptr + sta pcobjptr + lda objptr+2 + sta pcobjptr+2 + sep $30 plx txy lda (lineptr),y @@ -2684,6 +2702,12 @@ adrlop php lda lvalue+$3 jsr putbyte jsr relcorrect + rep $30 + lda objptr + sta pcobjptr + lda objptr+2 + sta pcobjptr+2 + sep $30 plx txy lda (lineptr),y diff --git a/src/asm/asm.vars.s b/src/asm/asm.vars.s index 6faeecb..482eff9 100644 --- a/src/asm/asm.vars.s +++ b/src/asm/asm.vars.s @@ -187,6 +187,7 @@ lvalue ds 4 myvalue ds 4 noshift ds 4 lineobjptr ds 4 +pcobjptr ds 4 xreg ds 4 ;variables used by EVAL yreg ds 4 From 4a380871cd843f0fd346777d19a5aedd74386cd3 Mon Sep 17 00:00:00 2001 From: Kelvin Sherlock Date: Sun, 11 Oct 2020 20:41:36 -0400 Subject: [PATCH 2/2] ddb - update pcobjptr after each item. --- src/asm/asm.opcodes.s | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/asm/asm.opcodes.s b/src/asm/asm.opcodes.s index ac39741..86a8828 100644 --- a/src/asm/asm.opcodes.s +++ b/src/asm/asm.opcodes.s @@ -2527,6 +2527,10 @@ ddbop ldx #$00 jsr putbyte lda passnum beq :jmp + lda objptr + sta pcobjptr + lda objptr+2 + sta pcobjptr+2 lda modeflag bit #relflag beq :jmp