diff --git a/src/vmsrc/plvm01.s b/src/vmsrc/plvm01.s index cf1d8fb..c6468a9 100644 --- a/src/vmsrc/plvm01.s +++ b/src/vmsrc/plvm01.s @@ -891,19 +891,19 @@ CALL +INC_IP +INC_IP LDA (IP),Y STA CALLADR+2 - LDA IPH - PHA - LDA IPL - PHA TYA + CLC + ADC IPL + PHA + LDA IPH + ADC #$00 PHA CALLADR JSR $FFFF PLA - TAY + STA IPH PLA STA IPL - PLA - STA IPH + LDY #$00 JMP NEXTOP ;* ;* INDIRECT CALL TO ADDRESS (NATIVE CODE) @@ -913,19 +913,19 @@ ICAL LDA ESTKL,X LDA ESTKH,X STA ICALADR+2 INX - LDA IPH - PHA - LDA IPL - PHA TYA + CLC + ADC IPL + PHA + LDA IPH + ADC #$00 PHA ICALADR JSR $FFFF PLA - TAY + STA IPH PLA STA IPL - PLA - STA IPH + LDY #$00 JMP NEXTOP ;* ;* ENTER FUNCTION WITH FRAME SIZE AND PARAM COUNT @@ -941,9 +941,9 @@ ENTER INY DEC IFPH + INY LDA (IP),Y + BEQ + ASL TAY - BEQ + - LDA ESTKH,X DEY STA (IFP),Y diff --git a/src/vmsrc/plvm02.s b/src/vmsrc/plvm02.s index 7278cf2..11b3d2d 100755 --- a/src/vmsrc/plvm02.s +++ b/src/vmsrc/plvm02.s @@ -1429,25 +1429,25 @@ CALL +INC_IP +INC_IP LDA (IP),Y STA TMPH + TYA + CLC + ADC IPL + PHA LDA IPH - PHA - LDA IPL - PHA - TYA + ADC #$00 PHA JSR JMPTMP - PLA - TAY + PLA + STA IPH PLA STA IPL - PLA - STA IPH LDA #>OPTBL ; MAKE SURE WE'RE INDEXING THE RIGHT TABLE STA OPPAGE !IF SELFMODIFY { BIT LCRWEN+LCBNK2 BIT LCRWEN+LCBNK2 } + LDY #$00 JMP NEXTOP ; CALLX +INC_IP @@ -1456,29 +1456,29 @@ CALLX +INC_IP +INC_IP LDA (IP),Y STA TMPH + TYA + CLC + ADC IPL + PHA LDA IPH - PHA - LDA IPL - PHA - TYA + ADC #$00 PHA STA ALTRDOFF ;CLI UNTIL I KNOW WHAT TO DO WITH THE UNENHANCED IIE JSR JMPTMP ;SEI UNTIL I KNOW WHAT TO DO WITH THE UNENHANCED IIE STA ALTRDON - PLA - TAY + PLA + STA IPH PLA STA IPL - PLA - STA IPH LDA #>OPXTBL ; MAKE SURE WE'RE INDEXING THE RIGHT TABLE STA OPPAGE !IF SELFMODIFY { BIT LCRWEN+LCBNK2 BIT LCRWEN+LCBNK2 } + LDY #$00 JMP NEXTOP ;* ;* INDIRECT CALL TO ADDRESS (NATIVE CODE) @@ -1488,25 +1488,25 @@ ICAL LDA ESTKL,X LDA ESTKH,X STA TMPH INX + TYA + CLC + ADC IPL + PHA LDA IPH - PHA - LDA IPL - PHA - TYA + ADC #$00 PHA JSR JMPTMP - PLA - TAY + PLA + STA IPH PLA STA IPL - PLA - STA IPH LDA #>OPTBL ; MAKE SURE WE'RE INDEXING THE RIGHT TABLE STA OPPAGE !IF SELFMODIFY { BIT LCRWEN+LCBNK2 BIT LCRWEN+LCBNK2 } + LDY #$00 JMP NEXTOP ; ICALX LDA ESTKL,X @@ -1514,11 +1514,12 @@ ICALX LDA ESTKL,X LDA ESTKH,X STA TMPH INX + TYA + CLC + ADC IPL + PHA LDA IPH - PHA - LDA IPL - PHA - TYA + ADC #$00 PHA STA ALTRDOFF ;CLI UNTIL I KNOW WHAT TO DO WITH THE UNENHANCED IIE @@ -1526,17 +1527,16 @@ ICALX LDA ESTKL,X ;SEI UNTIL I KNOW WHAT TO DO WITH THE UNENHANCED IIE STA ALTRDON PLA - TAY + STA IPH PLA STA IPL - PLA - STA IPH LDA #>OPXTBL ; MAKE SURE WE'RE INDEXING THE RIGHT TABLE STA OPPAGE !IF SELFMODIFY { BIT LCRWEN+LCBNK2 BIT LCRWEN+LCBNK2 } + LDY #$00 JMP NEXTOP ;* ;* JUMP INDIRECT TRHOUGH TMP @@ -1559,9 +1559,9 @@ ENTER INY STA IFPH INY LDA (IP),Y + BEQ + ASL TAY - BEQ + - LDA ESTKH,X DEY STA (IFP),Y diff --git a/src/vmsrc/plvm03.s b/src/vmsrc/plvm03.s index ee2e9f0..f2328b3 100644 --- a/src/vmsrc/plvm03.s +++ b/src/vmsrc/plvm03.s @@ -1048,23 +1048,23 @@ CALL +INC_IP +INC_IP LDA (IP),Y STA CALLADR+2 - LDA IPX + TYA + CLC + ADC IPL PHA LDA IPH + ADC #$00 PHA - LDA IPL - PHA - TYA + LDA IPX PHA CALLADR JSR $FFFF PLA - TAY - PLA - STA IPL + STA IPX PLA STA IPH PLA - STA IPX + STA IPL + LDY #$00 JMP NEXTOP ;* ;* INDIRECT CALL TO ADDRESS (NATIVE CODE) @@ -1074,23 +1074,23 @@ ICAL LDA ESTKL,X LDA ESTKH,X STA ICALADR+2 INX - LDA IPX + TYA + CLC + ADC IPL PHA LDA IPH + ADC #$00 PHA - LDA IPL - PHA - TYA + LDA IPX PHA ICALADR JSR $FFFF PLA - TAY - PLA - STA IPL + STA IPX PLA STA IPH PLA - STA IPX + STA IPL + LDY #$00 JMP NEXTOP ;* ;* ENTER FUNCTION WITH FRAME SIZE AND PARAM COUNT @@ -1109,9 +1109,9 @@ ENTER INY STA IFPH INY LDA (IP),Y + BEQ + ASL TAY - BEQ + - LDA ESTKH,X DEY STA (IFP),Y diff --git a/src/vmsrc/plvm802.s b/src/vmsrc/plvm802.s index 01a731f..993a3cf 100755 --- a/src/vmsrc/plvm802.s +++ b/src/vmsrc/plvm802.s @@ -1113,118 +1113,133 @@ CALL +INC_IP LDA (IP16),Y STA TMP +INC_IP -EMUSTK STY IPY - SEC ; SWITCH TO EMULATED MODE +EMUSTK SEC ; SWITCH TO EMULATED MODE XCE !AS - TSX ; COPY HW EVAL STACK TO ZP EVAL STACK - TXA + STY IPY + TSC ; MOVE HW EVAL STACK TO ZP EVAL STACK + EOR #$FF SEC - SBC HWSP + ADC HWSP ; STACK DEPTH = (HWSP - SP)/2 LSR - LDX ESP + EOR #$FF + SEC + ADC ESP ; ESP - STACK DEPTH TAY - BEQ + -- DEX - PLA + TAX + BRA + +- PLA STA ESTKL,X PLA STA ESTKH,X - DEY + INX ++ CPX ESP BNE - -+ LDA IP16H - PHA - LDA IP16L - PHA LDA IPY + CLC + ADC IP16L + PHA + LDA IP16H + ADC #$00 PHA PHX + TYX JSR JMPTMP - PLY ; COPY RETURN VALUES TO HW EVAL STACK + PLY ; MOVE RETURN VALUES TO HW EVAL STACK STY ESP - PLY - PLA - STA IP16L PLA STA IP16H - CPX ESP - BEQ + -- LDA ESTKH,X + PLA + STA IP16L + STX TMPL + TYX + BRA + +- DEX + LDA ESTKH,X PHA LDA ESTKL,X PHA - INX - CPX ESP ++ CPX TMPL BNE - -+ CLC ; SWITCH BACK TO NATIVE MODE + CLC ; SWITCH BACK TO NATIVE MODE XCE REP #$20 ; 16 BIT A/M SEP #$10 ; 8 BIT X,Y !AL + TSX + STX HWSP LDX #>OPTBL ; MAKE SURE WE'RE INDEXING THE RIGHT TABLE STX OP16PAGE + LDY #$00 JMP NEXTOP16 ; CALLX +INC_IP LDA (IP16),Y STA TMP +INC_IP -EMUSTKX STY IPY - SEC ; SWITCH TO EMULATED MODE +EMUSTKX SEC ; SWITCH TO EMULATED MODE XCE !AS - TSX ; COPY HW EVAL STACK TO ZP EVAL STACK - TXA + STY IPY + TSC ; MOVE HW EVAL STACK TO ZP EVAL STACK + EOR #$FF SEC - SBC HWSP + ADC HWSP ; STACK DEPTH = (HWSP - SP)/2 LSR - LDX ESP + EOR #$FF + SEC + ADC ESP ; ESP - STACK DEPTH TAY - BEQ + -- DEX - PLA + TAX + BRA + +- PLA STA ESTKL,X PLA STA ESTKH,X - DEY + INX ++ CPX ESP BNE - -+ LDA IP16H - PHA - LDA IP16L - PHA LDA IPY + CLC + ADC IP16L + PHA + LDA IP16H + ADC #$00 PHA PHX + TYX STX ALTRDOFF ;CLI UNTIL I KNOW WHAT TO DO WITH THE UNENHANCED IIE JSR JMPTMP ;SEI UNTIL I KNOW WHAT TO DO WITH THE UNENHANCED IIE STX ALTRDON - PLY ; COPY RETURN VALUES TO HW EVAL STACK + PLY ; MOVE RETURN VALUES TO HW EVAL STACK STY ESP - PLY - PLA - STA IP16L PLA STA IP16H - CPX ESP - BEQ + -- LDA ESTKH,X + PLA + STA IP16L + STX TMPL + TYX + BRA + +- DEX + LDA ESTKH,X PHA LDA ESTKL,X PHA - INX - CPX ESP ++ CPX TMPL BNE - -+ CLC ; SWITCH BACK TO NATIVE MODE + CLC ; SWITCH BACK TO NATIVE MODE XCE REP #$20 ; 16 BIT A/M SEP #$10 ; 8 BIT X,Y !AL + TSX + STX HWSP LDX #>OPXTBL ; MAKE SURE WE'RE INDEXING THE RIGHT TABLE STX OP16PAGE + LDY #$00 JMP NEXTOP16 - ;* ;* INDIRECT CALL TO ADDRESS (NATIVE CODE) ;* @@ -1259,10 +1274,10 @@ ENTER INY !AS INY LDA (IP16),Y + BEQ + ASL TAY - BEQ + - LDX ESP + LDX ESP ; MOVE PARAMETERS TO CALL FRAME - LDA ESTKH,X DEY STA (IFP),Y @@ -1283,22 +1298,25 @@ LEAVEX STX ALTRDOFF ;CLI UNTIL I KNOW WHAT TO DO WITH THE UNENHANCED IIE LEAVE SEP #$20 ; 8 BIT A/M !AS - TSX ; COPY HW EVAL STACK TO ZP EVAL STACK - TXA - LDX ESP + TSC ; MOVE HW EVAL STACK TO ZP EVAL STACK + EOR #$FF SEC - SBC HWSP + ADC HWSP ; STACK DEPTH = (HWSP - SP)/2 LSR - BEQ + + EOR #$FF + SEC + ADC ESP ; ESP - STACK DEPTH TAY -- DEX - PLA + TAX + BRA + +- PLA STA ESTKL,X PLA STA ESTKH,X - DEY + INX ++ CPX ESP BNE - -+ PLA ; DEALLOCATE POOL + FRAME + PLA ; DEALLOCATE POOL + FRAME REP #$20 ; 16 BIT A/M !AL AND #$00FF @@ -1315,22 +1333,25 @@ RETX STX ALTRDOFF ;CLI UNTIL I KNOW WHAT TO DO WITH THE UNENHANCED IIE RET SEP #$20 ; 8 BIT A/M !AS - TSX ; COPY HW EVAL STACK TO ZP EVAL STACK - TXA - LDX ESP + TSC ; MOVE HW EVAL STACK TO ZP EVAL STACK + EOR #$FF SEC - SBC HWSP + ADC HWSP ; STACK DEPTH = (HWSP - SP)/2 LSR - BEQ + + EOR #$FF + SEC + ADC ESP ; ESP - STACK DEPTH TAY -- DEX - PLA + TAX + BRA + +- PLA STA ESTKL,X PLA STA ESTKH,X - DEY + INX ++ CPX ESP BNE - -+ REP #$20 ; 16 BIT A/M + REP #$20 ; 16 BIT A/M !AL LDA IFP ; DEALLOCATE POOL STA PP