From 73fee14a4372613187f4ccb2b82eb60729555d8a Mon Sep 17 00:00:00 2001 From: David Schmenk Date: Sat, 21 Jun 2014 20:49:46 -0700 Subject: [PATCH] Inner interp loop optimization too good to pass up --- PLASMA/src/plvm02.s | 6 +++--- PLASMA/src/plvm02zp.inc | 17 +++++++++++------ 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/PLASMA/src/plvm02.s b/PLASMA/src/plvm02.s index 2044076b..e30f2f48 100644 --- a/PLASMA/src/plvm02.s +++ b/PLASMA/src/plvm02.s @@ -247,7 +247,7 @@ CMDEXEC = * ; ; INSTALL PAGE 0 FETCHOP ROUTINE ; - LDY #$0E + LDY #$0F - LDA PAGE0,Y STA DROP,Y DEY @@ -319,9 +319,9 @@ PAGE0 = * INX ; DROP @ $EF INY ; NEXTOP @ $F0 BEQ NEXTOPH -FETCHOP LDA (IP),Y + LDA $FFFF,Y ; FETCHOP @ $F3, IP MAPS OVER $FFFF @ $F4 STA OPIDX - JMP (OPTBL) + JMP (OPTBL) ; OPIDX AND OPPAGE MAP OVER OPTBL NEXTOPH INC IPH BNE FETCHOP } diff --git a/PLASMA/src/plvm02zp.inc b/PLASMA/src/plvm02zp.inc index 9667f317..c7461fdd 100644 --- a/PLASMA/src/plvm02zp.inc +++ b/PLASMA/src/plvm02zp.inc @@ -17,11 +17,12 @@ VMZP = ESTK+ESTKSZ IFP = VMZP IFPL = IFP IFPH = IFP+1 -IP = IFP+2 -IPL = IP -IPH = IP+1 -IPY = IP+2 -TMP = IP+3 +;IP = IFP+2 ; MOVED TO OVERLAY NEXTOP +;IPL = IP +;IPH = IP+1 +;IPY = IP+2 +IPY = IFP+2 +TMP = IPY+1 TMPL = TMP TMPH = TMP+1 NPARMS = TMPL @@ -30,5 +31,9 @@ DVSIGN = TMP+2 ESP = TMP+2 DROP = $EF NEXTOP = $F0 -OPIDX = NEXTOP+8 +FETCHOP = NEXTOP+3 +IP = FETCHOP+1 +IPL = IP +IPH = IPL+1 +OPIDX = FETCHOP+6 OPPAGE = OPIDX+1