diff --git a/src/vmsrc/plvm02.s b/src/vmsrc/plvm02.s
index 1b5ac6b..e3e28ce 100755
--- a/src/vmsrc/plvm02.s
+++ b/src/vmsrc/plvm02.s
@@ -40,6 +40,7 @@ ALTRDON =       $C003
 ALTWROFF=       $C004
 ALTWRON =       $C005
         !SOURCE "vmsrc/plvmzp.inc"
+PSR     =       TMPH+1
 DROP    =       $EF
 NEXTOP  =       $F0
 FETCHOP =       NEXTOP+3
@@ -233,11 +234,15 @@ IINTRP  PLA
 +       LDA     #>OPTBL
         STA     OPPAGE
 !IF SELFMODIFY {
-    BIT LCRWEN+LCBNK2
+        BIT     LCRWEN+LCBNK2
         BIT     LCRWEN+LCBNK2
 }
         JMP     FETCHOP
-IINTRPX PLA
+IINTRPX PHP
+        PLA
+        STA     PSR
+        SEI
+        PLA
         STA     TMPL
         PLA
         STA     TMPH
@@ -258,10 +263,9 @@ IINTRPX PLA
         STA     IFPH
         LDA     #>OPXTBL
         STA     OPPAGE
-        ;SEI UNTIL I KNOW WHAT TO DO WITH THE UNENHANCED IIE
         STA     ALTRDON
 !IF SELFMODIFY {
-    BIT LCRWEN+LCBNK2
+        BIT     LCRWEN+LCBNK2
         BIT     LCRWEN+LCBNK2
 }
         JMP     FETCHOP
@@ -425,8 +429,6 @@ ADD     LDA     ESTKL,X
         LDA     ESTKH,X
         ADC     ESTKH+1,X
         STA     ESTKH+1,X
-;       INX
-;       JMP     NEXTOP
         JMP     DROP
 ;*
 ;* SUB TOS FROM TOS-1
@@ -438,8 +440,6 @@ SUB     LDA     ESTKL+1,X
         LDA     ESTKH+1,X
         SBC     ESTKH,X
         STA     ESTKH+1,X
-;       INX
-;       JMP     NEXTOP
         JMP     DROP
 ;*
 ;* SHIFT TOS LEFT BY 1, ADD TO TOS-1
@@ -453,8 +453,6 @@ IDXW    LDA     ESTKL,X
         LDA     ESTKH,X
         ADC     ESTKH+1,X
         STA     ESTKH+1,X
-;       INX
-;       JMP     NEXTOP
         JMP     DROP
 ;*
 ;* MUL TOS-1 BY TOS
@@ -485,8 +483,6 @@ MULLP   LSR     TMPH            ; MULTPLRH
         BNE     MULLP
         STA     ESTKH+1,X       ; PRODH
         LDY     IPY
-;       INX
-;       JMP     NEXTOP
         JMP     DROP
 ;*
 ;* INTERNAL DIVIDE ALGORITHM
@@ -605,8 +601,6 @@ BAND    LDA     ESTKL+1,X
         LDA     ESTKH+1,X
         AND     ESTKH,X
         STA     ESTKH+1,X
-;       INX
-;       JMP     NEXTOP
         JMP     DROP
 ;*
 ;* INCLUSIVE OR TOS TO TOS-1
@@ -617,8 +611,6 @@ IOR     LDA     ESTKL+1,X
         LDA     ESTKH+1,X
         ORA     ESTKH,X
         STA     ESTKH+1,X
-;       INX
-;       JMP     NEXTOP
         JMP     DROP
 ;*
 ;* EXLUSIVE OR TOS TO TOS-1
@@ -629,8 +621,6 @@ XOR     LDA     ESTKL+1,X
         LDA     ESTKH+1,X
         EOR     ESTKH,X
         STA     ESTKH+1,X
-;       INX
-;       JMP     NEXTOP
         JMP     DROP
 ;*
 ;* SHIFT TOS-1 LEFT BY TOS
@@ -651,8 +641,6 @@ SHL2    ASL     ESTKL+1,X
         DEY
         BNE     SHL2
 SHL3    LDY     IPY
-;       INX
-;       JMP     NEXTOP
         JMP     DROP
 ;*
 ;* SHIFT TOS-1 RIGHT BY TOS
@@ -680,8 +668,6 @@ SHR3    CMP     #$80
         BNE     SHR3
         STA     ESTKH+1,X
 SHR4    LDY     IPY
-;       INX
-;       JMP     NEXTOP
         JMP     DROP
 ;*
 ;* LOGICAL NOT
@@ -706,8 +692,6 @@ LAND    LDA     ESTKL+1,X
         LDA     #$FF
 LAND1   STA     ESTKL+1,X
         STA     ESTKH+1,X
-;LAND2  INX
-;       JMP     NEXTOP
 LAND2   JMP     DROP
 ;*
 ;* LOGICAL OR
@@ -720,8 +704,6 @@ LOR     LDA     ESTKL,X
         LDA     #$FF
         STA     ESTKL+1,X
         STA     ESTKH+1,X
-;LOR1   INX
-;       JMP     NEXTOP
 LOR1    JMP     DROP
 ;*
 ;* DUPLICATE TOS
@@ -753,7 +735,7 @@ ZERO    DEX
         STA     ESTKH,X
         JMP     NEXTOP
 CFFB    LDA     #$FF
-    !BYTE $2C   ; BIT $00A9 - effectively skips LDA #$00, no harm in reading this address
+        !BYTE $2C   ; BIT $00A9 - effectively skips LDA #$00, no harm in reading this address
 CB      LDA     #$00
         DEX
         STA     ESTKH,X
@@ -870,9 +852,9 @@ LB      LDA     ESTKL,X
         STA     LBLDA+1
         LDA     ESTKH,X
         STA     LBLDA+2
-LBLDA   LDA   $FFFF
+LBLDA   LDA     $FFFF
         STA     ESTKL,X
-    LDA #$00
+        LDA     #$00
         STA     ESTKH,X
         JMP     NEXTOP
 } ELSE {
@@ -910,7 +892,7 @@ LBX     LDA     ESTKL,X
         STA     ALTRDOFF
 LBXLDA  LDA     $FFFF
         STA     ESTKL,X
-    LDA #$00
+        LDA     #$00
         STA     ESTKH,X
         STA     ALTRDON
         JMP     NEXTOP
@@ -1024,7 +1006,7 @@ LAB     +INC_IP
 LABLDA  LDA     $FFFF
         DEX
         STA     ESTKL,X
-    LDA #$00
+        LDA     #$00
         STA     ESTKH,X
         JMP     NEXTOP
 } ELSE {
@@ -1071,7 +1053,7 @@ LABX    +INC_IP
 LABXLDA LDA     $FFFF
         DEX
         STA     ESTKL,X
-    LDA #$00
+        LDA     #$00
         STA     ESTKH,X
         STA     ALTRDON
         JMP     NEXTOP
@@ -1122,8 +1104,6 @@ SB      LDA     ESTKL,X
         LDA     ESTKL+1,X
 SBSTA   STA     $FFFF
         INX
-;       INX
-;       JMP     NEXTOP
         JMP     DROP
 } ELSE {
 SB      LDA     ESTKL,X
@@ -1136,8 +1116,6 @@ SB      LDA     ESTKL,X
         STA     (TMP),Y
         LDY     IPY
         INX
-;       INX
-;       JMP     NEXTOP
         JMP     DROP
 }
 SW      LDA     ESTKL,X
@@ -1153,8 +1131,6 @@ SW      LDA     ESTKL,X
         STA     (TMP),Y
         LDY     IPY
         INX
-;       INX
-;       JMP     NEXTOP
         JMP     DROP
 ;*
 ;* STORE VALUE TO LOCAL FRAME OFFSET
@@ -1179,8 +1155,6 @@ SLW     +INC_IP
         LDA     ESTKH,X
         STA     (IFP),Y
         LDY     IPY
-;               INX
-;       JMP     NEXTOP
         JMP     DROP
 ;*
 ;* STORE VALUE TO LOCAL FRAME OFFSET WITHOUT POPPING STACK
@@ -1231,8 +1205,6 @@ SAB     +INC_IP
         LDY     #$00
         STA     (TMP),Y
         LDY     IPY
-;       INX
-;       JMP     NEXTOP
         JMP     DROP
 }
 SAW     +INC_IP
@@ -1249,8 +1221,6 @@ SAW     +INC_IP
         LDA     ESTKH,X
         STA     (TMP),Y
         LDY     IPY
-;       INX
-;       JMP     NEXTOP
         JMP     DROP
 ;*
 ;* STORE VALUE TO ABSOLUTE ADDRESS WITHOUT POPPING STACK
@@ -1306,8 +1276,6 @@ ISEQ    LDA     ESTKL,X
 ISTRU   LDA     #$FF
         STA     ESTKL+1,X
         STA     ESTKH+1,X
-;       INX
-;       JMP     NEXTOP
         JMP     DROP
 ;
 ISNE    LDA     ESTKL,X
@@ -1319,8 +1287,6 @@ ISNE    LDA     ESTKL,X
 ISFLS   LDA     #$00
         STA     ESTKL+1,X
         STA     ESTKH+1,X
-;       INX
-;       JMP     NEXTOP
         JMP     DROP
 ;
 ISGE    LDA     ESTKL+1,X
@@ -1425,8 +1391,6 @@ IBRNCH  LDA     IPL
         LDA     IPH
         ADC     ESTKH,X
         STA     IPH
-;       INX
-;       JMP     NEXTOP
         JMP     DROP
 ;*
 ;* CALL INTO ABSOLUTE ADDRESS (NATIVE CODE)
@@ -1437,25 +1401,25 @@ CALL    +INC_IP
         +INC_IP
         LDA     (IP),Y
         STA     TMPH
-    TYA
-    CLC
-    ADC IPL
-    PHA
+        TYA
+        CLC
+        ADC     IPL
+        PHA
         LDA     IPH
-    ADC #$00
+        ADC     #$00
         PHA
         JSR     JMPTMP
-    PLA
+        PLA
         STA     IPH
         PLA
         STA     IPL
         LDA     #>OPTBL         ; MAKE SURE WE'RE INDEXING THE RIGHT TABLE
         STA     OPPAGE
 !IF SELFMODIFY {
-    BIT LCRWEN+LCBNK2
+        BIT     LCRWEN+LCBNK2
         BIT     LCRWEN+LCBNK2
 }
-    LDY #$00
+        LDY     #$00
         JMP     NEXTOP
 ;
 CALLX   +INC_IP
@@ -1464,29 +1428,34 @@ CALLX   +INC_IP
         +INC_IP
         LDA     (IP),Y
         STA     TMPH
-    TYA
-    CLC
-    ADC IPL
-    PHA
+        TYA
+        CLC
+        ADC     IPL
+        PHA
         LDA     IPH
-    ADC #$00
+        ADC     #$00
         PHA
         STA     ALTRDOFF
-        ;CLI UNTIL I KNOW WHAT TO DO WITH THE UNENHANCED IIE
+        LDA     PSR
+        PHA
+        PLP
         JSR     JMPTMP
-        ;SEI UNTIL I KNOW WHAT TO DO WITH THE UNENHANCED IIE
+        PHP
+        PLA
+        STA     PSR
+        SEI
         STA     ALTRDON
-    PLA
+        PLA
         STA     IPH
         PLA
         STA     IPL
         LDA     #>OPXTBL        ; MAKE SURE WE'RE INDEXING THE RIGHT TABLE
         STA     OPPAGE
 !IF SELFMODIFY {
-    BIT LCRWEN+LCBNK2
+        BIT     LCRWEN+LCBNK2
         BIT     LCRWEN+LCBNK2
 }
-    LDY #$00
+        LDY     #$00
         JMP     NEXTOP
 ;*
 ;* INDIRECT CALL TO ADDRESS (NATIVE CODE)
@@ -1496,25 +1465,25 @@ ICAL    LDA     ESTKL,X
         LDA     ESTKH,X
         STA     TMPH
         INX
-    TYA
-    CLC
-    ADC IPL
-    PHA
+        TYA
+        CLC
+        ADC     IPL
+        PHA
         LDA     IPH
-    ADC #$00
+        ADC     #$00
         PHA
         JSR     JMPTMP
-    PLA
+        PLA
         STA     IPH
         PLA
         STA     IPL
         LDA     #>OPTBL         ; MAKE SURE WE'RE INDEXING THE RIGHT TABLE
         STA     OPPAGE
 !IF SELFMODIFY {
-    BIT LCRWEN+LCBNK2
+        BIT     LCRWEN+LCBNK2
         BIT     LCRWEN+LCBNK2
 }
-    LDY #$00
+        LDY     #$00
         JMP     NEXTOP
 ;
 ICALX   LDA     ESTKL,X
@@ -1522,17 +1491,21 @@ ICALX   LDA     ESTKL,X
         LDA     ESTKH,X
         STA     TMPH
         INX
-    TYA
-    CLC
-    ADC IPL
-    PHA
+        TYA
+        CLC
+        ADC     IPL
+        PHA
         LDA     IPH
-    ADC #$00
+        ADC     #$00
         PHA
         STA     ALTRDOFF
-        ;CLI UNTIL I KNOW WHAT TO DO WITH THE UNENHANCED IIE
+        LDA     PSR
+        PHA
+        PLP
         JSR     JMPTMP
-        ;SEI UNTIL I KNOW WHAT TO DO WITH THE UNENHANCED IIE
+        PHP
+        PLA
+        STA     PSR
         STA     ALTRDON
         PLA
         STA     IPH
@@ -1541,10 +1514,10 @@ ICALX   LDA     ESTKL,X
         LDA     #>OPXTBL        ; MAKE SURE WE'RE INDEXING THE RIGHT TABLE
         STA     OPPAGE
 !IF SELFMODIFY {
-    BIT LCRWEN+LCBNK2
+        BIT     LCRWEN+LCBNK2
         BIT     LCRWEN+LCBNK2
 }
-    LDY #$00
+        LDY     #$00
         JMP     NEXTOP
 ;*
 ;* JUMP INDIRECT TRHOUGH TMP
@@ -1567,7 +1540,7 @@ ENTER   INY
         STA     IFPH
         INY
         LDA     (IP),Y
-    BEQ +
+        BEQ     +
         ASL
         TAY
 -       LDA     ESTKH,X
@@ -1577,14 +1550,16 @@ ENTER   INY
         INX
         DEY
         STA     (IFP),Y
-        BNE -
+        BNE     -
 +       LDY     #$02
         JMP     NEXTOP
 ;*
 ;* LEAVE FUNCTION
 ;*
 LEAVEX  STA     ALTRDOFF
-        ;CLI UNTIL I KNOW WHAT TO DO WITH THE UNENHANCED IIE
+        LDA     PSR
+        PHA
+        PLP
 LEAVE   PLA                     ; DEALLOCATE POOL + FRAME
         CLC
         ADC     IFPL
@@ -1599,7 +1574,9 @@ LEAVE   PLA                     ; DEALLOCATE POOL + FRAME
         RTS
 ;
 RETX    STA     ALTRDOFF
-        ;CLI UNTIL I KNOW WHAT TO DO WITH THE UNENHANCED IIE
+        LDA     PSR
+        PHA
+        PLP
 RET     LDA     IFPL            ; DEALLOCATE POOL
         STA     PPL
         LDA     IFPH
diff --git a/src/vmsrc/plvm802.s b/src/vmsrc/plvm802.s
index 030d4d3..f33aab8 100755
--- a/src/vmsrc/plvm802.s
+++ b/src/vmsrc/plvm802.s
@@ -51,6 +51,7 @@ ALTWROFF=       $C004
 ALTWRON =       $C005
         !SOURCE "vmsrc/plvmzp.inc"
 HWSP    =       TMPH+1
+PSR     =       HWSP+1
 DROP    =       $EF
 NEXTOP  =       DROP+1
 FETCHOP =       NEXTOP+3
@@ -212,7 +213,10 @@ OPTBL   !WORD   ZERO,ADD,SUB,MUL,DIV,MOD,INCR,DECR              ; 00 02 04 06 08
 ;* ENTER INTO BYTECODE INTERPRETER - IMMEDIATELY SWITCH TO NATIVE
 ;*
         !AS
-DINTRP  SEI
+DINTRP  PHP
+        PLA
+        STA     PSR
+        SEI
         CLC                     ; SWITCH TO NATIVE MODE
         XCE
         REP     #$20            ; 16 BIT A/M
@@ -236,19 +240,20 @@ DINTRP  SEI
         JMP     FETCHOP
 }
         !AS
-IINTRP  SEI
+IINTRP  PHP
+        PLA
+        STA     PSR
+        SEI
         CLC                     ; SWITCH TO NATIVE MODE
         XCE
         REP     #$20            ; 16 BIT A/M
         !AL
-        PLA
-        STA     TMP
         LDY     #$01
-        LDA     (TMP),Y
+        LDA     (TOS,S),Y
         DEY
         STA     IP
         LDA     IFP
-        PHA                     ; SAVE ON STACK FOR LEAVE/RET
+        STA     TOS,S           ; SAVE ON STACK FOR LEAVE/RET
         LDA     PP              ; SET FP TO PP
         STA     IFP
         STX     ESP
@@ -262,19 +267,20 @@ IINTRP  SEI
         JMP     FETCHOP
 }
         !AS
-IINTRPX SEI
+IINTRPX PHP
+        PLA
+        STA     PSR
+        SEI
         CLC                     ; SWITCH TO NATIVE MODE
         XCE
         REP     #$20            ; 16 BIT A/M
         !AL
-        PLA
-        STA     TMP
         LDY     #$01
-        LDA     (TMP),Y
-        STA     IP
+        LDA     (TOS,S),Y
         DEY
+        STA     IP
         LDA     IFP
-        PHA                     ; SAVE ON STACK FOR LEAVE/RET
+        STA     TOS,S           ; SAVE ON STACK FOR LEAVE/RET
         LDA     PP             ; SET FP TO PP
         STA     IFP
         STX     ESP
@@ -285,9 +291,9 @@ IINTRPX SEI
 !IF DEBUG {
 SETDBG  LDY     LCRWEN+LCBNK2
         LDY     LCRWEN+LCBNK2
-        LDY     #$00
         STX     DBG_OP+2
         LDX     #>DBGTBL
+        LDY     #$00
 }
         STX     OPPAGE
         JMP     FETCHOP
@@ -324,6 +330,9 @@ CMDENTRY =      *
 !IF     DEBUG {
         LDA     #20             ; SET TEXT WINDOW ABOVE DEBUG OUTPUT
         STA     $23
+;        LDA     $BF98           ; FORCE 64K
+;        AND     #$CF
+;        STA     $BF98
 }
 ;
 ; INSTALL PAGE 0 FETCHOP ROUTINE
@@ -449,13 +458,16 @@ LCDEFCMD =      *-28            ; DEFCMD IN LC MEMORY
         !ALIGN  255,0
 OPXTBL  !WORD   ZERO,ADD,SUB,MUL,DIV,MOD,INCR,DECR              ; 00 02 04 06 08 0A 0C 0E
         !WORD   NEG,COMP,BAND,IOR,XOR,SHL,SHR,IDXW              ; 10 12 14 16 18 1A 1C 1E
-        !WORD   LNOT,LOR,LAND,LA,LLA,CB,CW,CS                   ; 20 22 24 26 28 2A 2C 2E
+        !WORD   LNOT,LOR,LAND,LA,LLA,CB,CW,CSX                  ; 20 22 24 26 28 2A 2C 2E
         !WORD   DROP,DUP,PUSHEP,PULLEP,BRGT,BRLT,BREQ,BRNE      ; 30 32 34 36 38 3A 3C 3E
         !WORD   ISEQ,ISNE,ISGT,ISLT,ISGE,ISLE,BRFLS,BRTRU       ; 40 42 44 46 48 4A 4C 4E
         !WORD   BRNCH,IBRNCH,CALLX,ICALX,ENTER,LEAVEX,RETX,CFFB ; 50 52 54 56 58 5A 5C 5E
         !WORD   LBX,LWX,LLBX,LLWX,LABX,LAWX,DLB,DLW             ; 60 62 64 66 68 6A 6C 6E
         !WORD   SB,SW,SLB,SLW,SAB,SAW,DAB,DAW                   ; 70 72 74 76 78 7A 7C 7E
 !IF     DEBUG {
+;*
+;* DEBUG PRINT ROUTINES
+;*
         !AS
 PRHEX   PHA
         LSR
@@ -496,7 +508,6 @@ PRWORD  PHA
         JSR     PRHEX
         PLA
         JMP     PRHEX
-
 ;*****************
 ;*               *
 ;*  DEBUG TABLE  *
@@ -553,6 +564,21 @@ STEP    STX     TMPL
         SEP     #$20            ; 8 BIT A/M
         !AS
         JSR     PRWORD
+        LDA     #$80+'['
+        JSR     PRCHR
+        STX     TMPH
+        TSX
+        TXA
+        EOR     #$FF
+        SEC
+        ADC     HWSP
+        LSR
+        CLC
+        ADC     #$80+'0'
+        LDX     TMPH
+        JSR     PRCHR
+        LDA     #$80+']'
+        JSR     PRCHR
         LDA     #':'
         JSR     PRCHR
         STX     TMPH
@@ -583,31 +609,42 @@ STEP    STX     TMPL
         JSR     PRCHR
         JSR     PRCHR
         JSR     PRCHR
-+++     ;LDX     $C010
-        LDA     #' '
++++     LDA     #' '
 -       JSR     PRCHR
         CPX     #40
         BNE     -
 ;        LDX     TMPL
-;        CPX     #$48            ; FORCE PAUSE AT 'IS_GE'
+;        CPX     #$56            ; FORCE PAUSE AT 'ICAL'
 ;        BEQ     DBGKEY
 -       LDX     $C000
         CPX     #$9B
-        BNE     ++
+        BNE     +
 DBGKEY  STX     $C010
 -       LDX     $C000
         BPL     -
         CPX     #$9B
-        BEQ     ++
+        BEQ     +
         STX     $C010
         CPX     #$80+'Q'
-        BNE     ++
+        BNE     +
         SEC                     ; SWITCH TO EMU MODE
         XCE
+        BIT     $C054           ; SET TEXT MODE
+        BIT     $C051
+        BIT     $C05F
+        LDA     #20             ; SET TEXT WINDOW ABOVE DEBUG OUTPUT
+        STA     $23
+        STZ     $20
+        STZ     $22
+        STZ     $24
+        STZ     $25
+        STZ     $28
+        LDA     #$04
+        STA     $29
         BRK
-++      REP     #$20            ; 16 BIT A/M
++       REP     #$20            ; 16 BIT A/M
         !AL
-+       LDX     TMPL
+        LDX     TMPL
 DBG_OP  JMP     (OPTBL,X)
 }
 ;*********************************************************************
@@ -644,8 +681,7 @@ IDXW    PLA
 ;*
 ;* MUL TOS-1 BY TOS
 ;*
-MUL     ;STY     IPY
-        ;LDY     #$10
+MUL     LDX     #$10
         LDA     NOS,S
         EOR     #$FFFF
         STA     TMP
@@ -654,10 +690,9 @@ MULLP   ASL     TMP             ;LSR     TMP             ; MULTPLR
         BCS     +
         ADC     TOS,S           ; MULTPLD
 +       ASL                     ;ASL     TOS,S           ; MULTPLD
-        ;DEY
+        DEX
         BNE     MULLP
         STA     NOS,S           ; PROD
-        ;LDY     IPY
         JMP     DROP
 ;*
 ;* INTERNAL DIVIDE ALGORITHM
@@ -769,26 +804,26 @@ XOR     PLA
 ;*
 SHL     PLA
         TAX
-        BEQ     SHL2
+        BEQ     SHLEX
         LDA     TOS,S
-SHL1    ASL
+-       ASL
         DEX
-        BNE     SHL1
+        BNE     -
         STA     TOS,S
-SHL2    JMP     NEXTOP
+SHLEX   JMP     NEXTOP
 ;*
 ;* SHIFT TOS-1 RIGHT BY TOS
 ;*
 SHR     PLA
         TAX
-        BEQ     SHR2
+        BEQ     SHREX
         LDA     TOS,S
-SHR1    CMP     #$8000
+-       CMP     #$8000
         ROR
         DEX
-        BNE     SHR1
+        BNE     -
         STA     TOS,S
-SHR2    JMP     NEXTOP
+SHREX   JMP     NEXTOP
 ;*
 ;* LOGICAL NOT
 ;*
@@ -844,6 +879,7 @@ PUSHEP  LDX     LCRWEN+LCBNK2   ; RWEN LC MEM
         BCC     +
         LDX     #$80+'>'
         STX     $7D0+30
+-       BRA     -
         LDX     #$32
 +
 }
@@ -862,6 +898,7 @@ PULLEP  LDX     LCRWEN+LCBNK2   ; RWEN LC MEM
         BPL     +
         LDX     #$80+'<'
         STX     $7D0+30
+-       BRA     -
         LDX     #$00
 +
 }
@@ -873,8 +910,7 @@ PULLEP  LDX     LCRWEN+LCBNK2   ; RWEN LC MEM
 ;*
 ;* CONSTANT
 ;*
-ZERO    LDA     #$0000
-        PHA
+ZERO    PEA     $0000
         JMP     NEXTOP
 CFFB    +INC_IP
         LDA     (IP),Y
@@ -903,9 +939,8 @@ CS      +INC_IP
         CLC
         ADC     IP
         STA     IP
-        LDY     #$00
         PHA
-        LDA     (IP),Y
+        LDA     (IP)
         TAY
         JMP     NEXTOP
 ;
@@ -914,63 +949,55 @@ CSX     +INC_IP
         CLC
         ADC     IP
         STA     IP
-        LDY     #$00
         LDA     PP              ; SCAN POOL FOR STRING ALREADY THERE
-        STA     TMP
-_CMPPSX CMP     IFP             ; CHECK FOR END OF POOL
-        BCC     _CMPSX          ; CHECK FOR MATCHING STRING
+_CMPPSX STA     TMP
+        CMP     IFP             ; CHECK FOR END OF POOL
         BCS     _CPYSX          ; AT OR BEYOND END OF POOL, COPY STRING OVER
 _CMPSX  SEP     #$20            ; 8 BIT A/M
         !AS
-        STX     ALTRDOFF
-        LDA     (TMP),Y         ; COMPARE STRINGS FROM AUX MEM TO STRINGS IN MAIN MEM
+        STX     ALTRDOFF        ; CHECK FOR MATCHING STRING
+        LDA     (TMP)           ; COMPARE STRINGS FROM AUX MEM TO STRINGS IN MAIN MEM
         STX     ALTRDON
-        CMP     (IP),Y        ; COMPARE STRING LENGTHS
+        CMP     (IP)            ; COMPARE STRING LENGTHS
         BNE     _CNXTSX1
         TAY
-_CMPCSX STX     ALTRDOFF
+-       STX     ALTRDOFF
         LDA     (TMP),Y         ; COMPARE STRING CHARS FROM END
         STX     ALTRDON
         CMP     (IP),Y
         BNE     _CNXTSX
         DEY
-        BNE     _CMPCSX
+        BNE     -
         LDA     TMPH            ; MATCH - SAVE EXISTING ADDR ON ESTK AND MOVE ON
         PHA
         LDA     TMPL
         PHA
         BRA     _CEXSX
-_CNXTSX LDY     #$00
-        STX     ALTRDOFF
-        LDA     (TMP),Y
+_CNXTSX STX     ALTRDOFF
+        LDA     (TMP)
         STX     ALTRDON
-_CNXTSX1 REP     #$20            ; 16 BIT A/M
+_CNXTSX1 REP     #$20           ; 16 BIT A/M
         !AL
         AND     #$00FF
-        SEC
+        SEC                     ; SKIP OVER STRING+LEN BYTE
         ADC     TMP
-        STA     TMP
-        BNE     _CMPPSX
-        !AS
-_CPYSX  LDA     (IP),Y        ; COPY STRING FROM AUX TO MAIN MEM POOL
+        BRA     _CMPPSX
+_CPYSX  LDA     (IP)            ; COPY STRING FROM AUX TO MAIN MEM POOL
         TAY                     ; MAKE ROOM IN POOL AND SAVE ADDR ON ESTK
-        EOR     #$FF
+        AND     #$00FF
+        EOR     #$FFFF
         CLC
-        ADC     PPL
-        STA     PPL
-        TAX
-        LDA     #$FF
-        ADC     PPH
-        STA     PPH
+        ADC     PP
+        STA     PP
         PHA                     ; SAVE ADDRESS ON ESTK
-        PHX
-_CPYSX1 LDA     (IP),Y        ; ALTRD IS ON,  NO NEED TO CHANGE IT HERE
+        SEP     #$20            ; 8 BIT A/M
+        !AS
+-       LDA     (IP),Y          ; ALTRD IS ON,  NO NEED TO CHANGE IT HERE
         STA     (PP),Y          ; ALTWR IS OFF, NO NEED TO CHANGE IT HERE
         DEY
         CPY     #$FF
-        BNE     _CPYSX1
-        INY
-_CEXSX  LDA     (IP),Y        ; SKIP TO NEXT OP ADDR AFTER STRING
+        BNE     -
+_CEXSX  LDA     (IP)            ; SKIP TO NEXT OP ADDR AFTER STRING
         TAY
         REP     #$20            ; 16 BIT A/M
         !AL
@@ -1330,10 +1357,13 @@ CALL    +INC_IP
         LDA     (IP),Y
         +INC_IP
         STA     TMP
-EMUSTK  SEC                     ; SWITCH TO EMULATED MODE
+EMUSTK  TYA                     ; FLATTEN IP
+        CLC
+        ADC     IP
+        STA     IP
+        SEC                     ; SWITCH TO EMULATED MODE
         XCE
         !AS
-        STY     IPY
         TSC                     ; MOVE HW EVAL STACK TO ZP EVAL STACK
         EOR     #$FF
         SEC
@@ -1371,25 +1401,36 @@ EMUSTK  SEC                     ; SWITCH TO EMULATED MODE
         LDX     $C010
 +       TAX
 }
-        LDA     IPY
-        CLC
-        ADC     IPL
-        PHA
         LDA     IPH
-        ADC     #$00
+        PHA
+        LDA     IPL
         PHA
         PHX                     ; SAVE BASELINE ESP
         TYX
-        ;CLI
+        LDA     PSR
+        PHA
+        PLP
         JSR     JMPTMP
-        ;SEI
+        PHP
+        PLA
+        STA     PSR
+        SEI
         PLY                     ; MOVE RETURN VALUES TO HW EVAL STACK
         STY     ESP             ; RESTORE BASELINE ESP
         PLA
-        STA     IPH
-        PLA
         STA     IPL
+        PLA
+        STA     IPH
         STX     TMPL
+!IF     DEBUG {
+        TXA
+        EOR     #$FF
+        SEC
+        ADC     ESP
+        CLC
+        ADC     #$80+'0'
+        STA     $7D0+32
+}
         TSX                     ; RESTORE BASELINE HWSP
         STX     HWSP
         TYX
@@ -1420,10 +1461,13 @@ CALLX   +INC_IP
         LDA     (IP),Y
         +INC_IP
         STA     TMP
-EMUSTKX SEC                     ; SWITCH TO EMULATED MODE
+EMUSTKX TYA                     ; FLATTEN IP
+        CLC
+        ADC     IP
+        STA     IP
+        SEC                     ; SWITCH TO EMULATED MODE
         XCE
         !AS
-        STY     IPY
         TSC                     ; MOVE HW EVAL STACK TO ZP EVAL STACK
         EOR     #$FF
         SEC
@@ -1455,33 +1499,44 @@ EMUSTKX SEC                     ; SWITCH TO EMULATED MODE
         CPX     HWSP
         BEQ     +
         LDX     #$80+'X'
-        STX     $480+30
--       LDX    $C000
+        STX     $7D0+30
+-       LDX     $C000
         BPL     -
         LDX     $C010
 +       TAX
 }
-        LDA     IPY
-        CLC
-        ADC     IPL
-        PHA
         LDA     IPH
-        ADC     #$00
+        PHA
+        LDA     IPL
         PHA
         PHX                     ; SAVE BASELINE ESP
         TYX
         STX     ALTRDOFF
-        ;CLI
+        LDA     PSR
+        PHA
+        PLP
         JSR     JMPTMP
-        ;SEI
+        PHP
+        PLA
+        STA     PSR
+        SEI
         STX     ALTRDON
         PLY                     ; MOVE RETURN VALUES TO HW EVAL STACK
         STY     ESP             ; RESTORE BASELINE ESP
         PLA
-        STA     IPH
-        PLA
         STA     IPL
+        PLA
+        STA     IPH
         STX     TMPL
+!IF     DEBUG {
+        TXA
+        EOR     #$FF
+        SEC
+        ADC     ESP
+        CLC
+        ADC     #$80+'0'
+        STA     $7D0+32
+}
         TSX                     ; RESTORE BASELINE HWSP
         STX     HWSP
         TYX
@@ -1528,6 +1583,13 @@ ENTER   INY
         SEP     #$20            ; 8 BIT A/M
         !AS
         LDA     (IP),Y
+!IF     DEBUG {
+        PHA
+        CLC
+        ADC     #$80+'0'
+        STA     $7D0+31
+        PLA
+}
         PHA                     ; SAVE ON STACK FOR LEAVE
         DEC     HWSP            ; UPDATE HWSP TO SKIP FRAME SIZE
         REP     #$20            ; 16 BIT A/M
@@ -1570,6 +1632,13 @@ LEAVE   SEP     #$20            ; 8 BIT A/M
         SEC
         ADC     HWSP            ; STACK DEPTH = (HWSP - SP)/2
         LSR
+!IF     DEBUG {
+        PHA
+        CLC
+        ADC     #$80+'0'
+        STA     $7D0+31
+        PLA
+}
         EOR     #$FF
         SEC
         ADC     ESP             ; ESP - STACK DEPTH
@@ -1607,7 +1676,9 @@ LEAVE   SEP     #$20            ; 8 BIT A/M
         STA     IFP
         SEC                     ; SWITCH TO EMULATED MODE
         XCE
-        ;CLI
+        LDA     PSR
+        PHA
+        PLP
         RTS
 ;
 RETX    STX     ALTRDOFF
@@ -1618,6 +1689,13 @@ RET     SEP     #$20            ; 8 BIT A/M
         SEC
         ADC     HWSP            ; STACK DEPTH = (HWSP - SP)/2
         LSR
+!IF     DEBUG {
+        PHA
+        CLC
+        ADC     #$80+'0'
+        STA     $7D0+31
+        PLA
+}
         EOR     #$FF
         SEC
         ADC     ESP             ; ESP - STACK DEPTH
@@ -1653,7 +1731,9 @@ RET     SEP     #$20            ; 8 BIT A/M
         SEC                     ; SWITCH TO EMULATED MODE
         XCE
         !AS
-        ;CLI
+        LDA     PSR
+        PHA
+        PLP
         RTS
 
 VMEND   =       *