From 5e049ebe8e63d84f470c50d3addc9dfb6cfac806 Mon Sep 17 00:00:00 2001 From: Dave Schmenk Date: Tue, 27 Mar 2018 22:13:58 -0700 Subject: [PATCH] Fix CS destination jump --- src/libsrc/apple/jit.pla | 16 +++++++--------- src/toolsrc/lex.pla | 2 +- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/libsrc/apple/jit.pla b/src/libsrc/apple/jit.pla index 6e54212..49000b2 100644 --- a/src/libsrc/apple/jit.pla +++ b/src/libsrc/apple/jit.pla @@ -90,7 +90,7 @@ def compiler(defptr)#0 // Multi-byte operands // is $2E // CS - i = i + ^(bytecode+i+1) + 1 + i = i + ^(bytecode+i+1)// + 1 break // // Double byte operands @@ -393,9 +393,9 @@ def compiler(defptr)#0 is $2E // CS i++ j = ^(bytecode+i) - dest = i + j + 1 + dest = codeptr + 10 + j //puts("CS "); //puts(bytecode+i); //puts("-->"); puti(dest) - if isule(codeptr + 10 + j, codemax) + if isule(dest, codemax) if A_IS_TOSL & TOSL_DIRTY *codeptr = $D095+(VX<<8) // STA ESTKL,X codeptr = codeptr + 2 @@ -405,14 +405,12 @@ def compiler(defptr)#0 codeptr=>2 = $C095+(VX<<8) // STA ESTKH,X codeptr=>4 = $A9+((codeptr+9)<<8) // LDA #6 = $4C // JMP abs - codeptr=>7 = addrxlate=>[dest] - if not (codeptr->8 & $80) // Unresolved address list - addrxlate=>[dest] = codeptr + 7 - *jitcodeptr - fin + dest = codeptr + 10 + j + codeptr=>7 = dest strcpy(codeptr + 9, bytecode + i) i = i + j fin - codeptr = codeptr + 10 + j + codeptr = dest A_IS_TOSL = TOSL_DIRTY // STA ESTKL,X break is $32 // DROP2 @@ -421,7 +419,7 @@ def compiler(defptr)#0 is $30 // DROP //puts("DROP") VX++ // INX - A_IS_TOSL = FALSE + A_IS_TOSL = FALSE break is $34 // DUP //puts("DUP") diff --git a/src/toolsrc/lex.pla b/src/toolsrc/lex.pla index 6d8f062..934c351 100644 --- a/src/toolsrc/lex.pla +++ b/src/toolsrc/lex.pla @@ -325,7 +325,7 @@ def nextln scanptr++ scan else - if token <> EOL_TKN and token <> EOF_TKN; puti(token&$7F); puts("Extraneous characters\n"); exit_err(0); fin + if token <> EOL_TKN and token <> EOF_TKN; putc(token&$7F); puts("Extraneous characters\n"); exit_err(0); fin scanptr = inbuff ^instr = fileio:read(refnum, inbuff, 127) if ^instr