From 5f71c1481bf3f6143b066441fea34325ee87dccc Mon Sep 17 00:00:00 2001
From: David Schmenk <dschmenk@gmail.com>
Date: Wed, 18 Jun 2014 16:51:35 -0700
Subject: [PATCH] LC no longer has to be write enbaled

---
 src/vmsrc/plvm02.s | 58 ++++++++++++++++++++--------------------------
 1 file changed, 25 insertions(+), 33 deletions(-)

diff --git a/src/vmsrc/plvm02.s b/src/vmsrc/plvm02.s
index e42ff64..8afff28 100644
--- a/src/vmsrc/plvm02.s
+++ b/src/vmsrc/plvm02.s
@@ -179,9 +179,7 @@ OPTBL 	!WORD	ZERO,ADD,SUB,MUL,DIV,MOD,INCR,DECR		; 00 02 04 06 08 0A 0C 0E
 ;*
 ;* ENTER INTO BYTECODE INTERPRETER
 ;*
-DINTERP	BIT	LCRWEN+LCBNK2	; WRITE ENABLE LANGUAGE CARD
-	BIT	LCRWEN+LCBNK2
-	PLA
+DINTERP	PLA
         STA     IPL
         PLA
         STA     IPH
@@ -189,9 +187,7 @@ DINTERP	BIT	LCRWEN+LCBNK2	; WRITE ENABLE LANGUAGE CARD
 	LDA	#>OPTBL
 	STA	OPPAGE
 	JMP	FETCHOP
-IINTRP	BIT	LCRWEN+LCBNK2	; WRITE ENABLE LANGUAGE CARD
-	BIT	LCRWEN+LCBNK2
-	PLA
+IINTRP	PLA
         STA     TMPL
         PLA
         STA     TMPH
@@ -205,9 +201,7 @@ IINTRP	BIT	LCRWEN+LCBNK2	; WRITE ENABLE LANGUAGE CARD
 	LDA	#>OPTBL
 	STA	OPPAGE
 	JMP	FETCHOP
-IINTRPX	BIT	LCRWEN+LCBNK2	; WRITE ENABLE LANGUAGE CARD
-	BIT	LCRWEN+LCBNK2
-	PLA
+IINTRPX	PLA
         STA     TMPL
         PLA
         STA     TMPH
@@ -316,10 +310,12 @@ DISABLE80 !BYTE	21, 13, '1', 26, 13
 FAILMSG !BYTE	39
 	!TEXT	"MISSING CMD. PRESS ANY KEY TO RESET..."
 PAGE0	=	*
+;******************************
+;*                            *
+;* INTERP BYTECODE INNER LOOP *
+;*                            *
+;******************************
        	!PSEUDOPC	$00EF {
-;*
-;* INTERP BYTECODE INNER LOOP
-;*
 	INX			; DROP @ $EF
 	INY			; NEXTOP @ $F0
 	BEQ	NEXTOPH
@@ -330,10 +326,10 @@ NEXTOPH	INC	IPH
 	BNE	FETCHOP
 }
 PAGE3	=	*
-	!PSEUDOPC	$03D0 {
 ;*
 ;* PAGE 3 VECTORS INTO INTERPRETER
 ;*
+	!PSEUDOPC	$03D0 {
 	BIT	LCRDEN+LCBNK2	; $03D0 - DIRECT INTERP ENTRY
 	JMP	DINTERP
 	BIT	LCRDEN+LCBNK2	; $03D6 - INDIRECT INTERP ENTRY
@@ -1373,17 +1369,17 @@ IBRNCH	LDA	IPL
 ;*
 CALL 	+INC_IP
 	LDA	(IP),Y
-	STA	CALLADR+1
+	STA	TMPL
 	+INC_IP
 	LDA	(IP),Y
-	STA	CALLADR+2
+	STA	TMPH
 	LDA	IPH
 	PHA
 	LDA	IPL
 	PHA
 	TYA
 	PHA
-CALLADR	JSR	$FFFF
+	JSR	JMPTMP
 	PLA
 	TAY
 	PLA
@@ -1392,16 +1388,14 @@ CALLADR	JSR	$FFFF
 	STA	IPH
 	LDA	#>OPTBL		; MAKE SURE WE'RE INDEXING THE RIGHT TABLE
 	STA	OPPAGE
-	BIT	LCRWEN+LCBNK2	; WRITE ENABLE LANGUAGE CARD
-	BIT	LCRWEN+LCBNK2
 	JMP	NEXTOP
 ;
 CALLX 	+INC_IP
 	LDA	(IP),Y
-	STA	CALXADR+1
+	STA	TMPL
 	+INC_IP
 	LDA	(IP),Y
-	STA	CALXADR+2
+	STA	TMPH
 	LDA	IPH
 	PHA
 	LDA	IPL
@@ -1410,7 +1404,7 @@ CALLX 	+INC_IP
 	PHA
 	STA	ALTRDOFF
 	CLI
-CALXADR	JSR	$FFFF
+	JSR     JMPTMP
 	SEI
 	STA	ALTRDON
 	PLA
@@ -1421,16 +1415,14 @@ CALXADR	JSR	$FFFF
 	STA	IPH
 	LDA	#>OPXTBL	; MAKE SURE WE'RE INDEXING THE RIGHT TABLE
 	STA	OPPAGE
-	BIT	LCRWEN+LCBNK2	; WRITE ENABLE LANGUAGE CARD
-	BIT	LCRWEN+LCBNK2
 	JMP	NEXTOP
 ;*
 ;* INDIRECT CALL TO ADDRESS (NATIVE CODE)
 ;*
 ICAL 	LDA	ESTKL,X
-	STA	ICALADR+1
+	STA	TMPL
 	LDA	ESTKH,X
-	STA	ICALADR+2
+	STA	TMPH
 	INX
 	LDA	IPH
 	PHA
@@ -1438,7 +1430,7 @@ ICAL 	LDA	ESTKL,X
 	PHA
 	TYA
 	PHA
-ICALADR	JSR	$FFFF
+	JSR	JMPTMP
 	PLA
 	TAY
 	PLA
@@ -1447,14 +1439,12 @@ ICALADR	JSR	$FFFF
 	STA	IPH
 	LDA	#>OPTBL		; MAKE SURE WE'RE INDEXING THE RIGHT TABLE
 	STA	OPPAGE
-	BIT	LCRWEN+LCBNK2	; WRITE ENABLE LANGUAGE CARD
-	BIT	LCRWEN+LCBNK2
 	JMP	NEXTOP
 ;
 ICALX 	LDA	ESTKL,X
-	STA	ICLXADR+1
+	STA	TMPL
 	LDA	ESTKH,X
-	STA	ICLXADR+2
+	STA	TMPH
 	INX
 	LDA	IPH
 	PHA
@@ -1464,7 +1454,7 @@ ICALX 	LDA	ESTKL,X
 	PHA
 	STA	ALTRDOFF
 	CLI
-ICLXADR	JSR	$FFFF
+	JSR	JMPTMP
 	SEI
 	STA	ALTRDON
 	PLA
@@ -1475,10 +1465,12 @@ ICLXADR	JSR	$FFFF
 	STA	IPH
 	LDA	#>OPXTBL	; MAKE SURE WE'RE INDEXING THE RIGHT TABLE
 	STA	OPPAGE
-	BIT	LCRWEN+LCBNK2	; WRITE ENABLE LANGUAGE CARD
-	BIT	LCRWEN+LCBNK2
 	JMP	NEXTOP
 ;*
+;* JUMP INDIRECT TRHOUGH TMP
+;*
+JMPTMP	JMP	(TMP)
+;*
 ;* ENTER FUNCTION WITH FRAME SIZE AND PARAM COUNT
 ;*
 ENTER 	+INC_IP