From 8d645405b39f6a0deb473a496fa26586b5f87b2f Mon Sep 17 00:00:00 2001 From: Virgil Dupras Date: Sun, 21 Jun 2020 15:14:38 -0400 Subject: [PATCH] pcat: add RSP checks in next --- blk/816 | 16 ++++++---------- blk/817 | 16 ++++++++++------ blk/818 | 5 +++++ 3 files changed, 21 insertions(+), 16 deletions(-) create mode 100644 blk/818 diff --git a/blk/816 b/blk/816 index 2db7339..8cc605b 100644 --- a/blk/816 +++ b/blk/816 @@ -1,13 +1,9 @@ lblnext BSET PC 0x1d - ORG @ 0x1b + ! ( next ) + ( RSP check ) + AX RS_ADDR MOVxI, BP AX CMPxx, + IFC, ( BP < RS_ADDR ) + DI 0x06 MOVxm, JMPs, L1 FWRs ( execute ) + THEN, DI DX MOVxx, ( <-- IP ) DX INCx, DX INCx, DI [DI] MOVx[], ( wordref ) - ( continue to execute ) -lblexec BSET PC 0x36 - ORG @ 0x34 + ! ( DI -> wordref ) - AL [DI] MOVr[], DI INCx, ( PFA ) - AL AL ORrr, IFZ, DI JMPr, THEN, ( native ) - AL DECr, IFNZ, ( cell or does ) - DI PUSHx, ( push PFA ) - AL DECr, IFZ, ( cell ) JMPs, lblnext @ RPCs, THEN, - ( does, see B302 ) - DI INCx, DI INCx, DI [DI] MOVx[], - THEN, ( continue to compiled cont. ) + ( continue to execute ) L1 FSET diff --git a/blk/817 b/blk/817 index c2ee308..b9c83a3 100644 --- a/blk/817 +++ b/blk/817 @@ -1,11 +1,15 @@ -( compiled ) +lblexec BSET PC 0x36 - ORG @ 0x34 + ! ( DI -> wordref ) + AL [DI] MOVr[], DI INCx, ( PFA ) + AL AL ORrr, IFZ, DI JMPr, THEN, ( native ) + AL DECr, IFNZ, ( cell or does ) + DI PUSHx, ( push PFA ) + AL DECr, IFZ, ( cell ) JMPs, lblnext @ RPCs, THEN, + ( does, see B302 ) + DI INCx, DI INCx, DI [DI] MOVx[], + THEN, ( continue to compiled ) + ( compiled ) BP INCx, BP INCx, [BP] 0 DX MOV[]+x, ( pushRS ) DX DI MOVxx, DX INCx, DX INCx, ( --> IP ) DI [DI] MOVx[], JMPs, lblexec @ RPCs, -lblchkPS BSET ( CX -> expected size ) - AX PS_ADDR MOVxI, AX SP SUBxx, 2 SUBAXI, ( CALL adjust ) - AX CX SUBxx, - IFNC, ( we're good ) RETn, THEN, - ( underflow ) DI 0x06 MOVxm, JMPs, lblexec @ RPCs, diff --git a/blk/818 b/blk/818 new file mode 100644 index 0000000..7c36afe --- /dev/null +++ b/blk/818 @@ -0,0 +1,5 @@ +lblchkPS BSET ( CX -> expected size ) + AX PS_ADDR MOVxI, AX SP SUBxx, 2 SUBAXI, ( CALL adjust ) + AX CX CMPxx, + IFNC, ( we're good ) RETn, THEN, + ( underflow ) DI 0x06 MOVxm, JMPs, lblexec @ RPCs,