From f54b1dc5040a89220142c4eaa56dcc7ac25798a5 Mon Sep 17 00:00:00 2001 From: Virgil Dupras Date: Wed, 6 May 2020 09:49:37 -0400 Subject: [PATCH] Add 2>R and 2R> This allows us to make DO..LOOP more compact. --- blk/048 | 2 ++ blk/326 | 18 +++++++++++------- blk/431 | 7 ++----- blk/432 | 2 +- emul/forth.bin | Bin 5749 -> 5702 bytes 5 files changed, 16 insertions(+), 13 deletions(-) diff --git a/blk/048 b/blk/048 index 880a530..e9505ac 100644 --- a/blk/048 +++ b/blk/048 @@ -1,7 +1,9 @@ Return Stack >R n -- R:n Pops PS and push to RS +2>R x y -- R:x y Equivalent to SWAP >R >R R> R:n -- n Pops RS and push to PS +2R> R:x y -- x y Equivalent to R> R> SWAP I -- n Copy RS TOS to PS I' -- n Copy RS second item to PS J -- n Copy RS third item to PS diff --git a/blk/326 b/blk/326 index 25e6c85..180c820 100644 --- a/blk/326 +++ b/blk/326 @@ -1,13 +1,17 @@ CODE >R - HL POPqq, - chkPS, - ( 17 == pushRS ) - 17 BCALL, + HL POPqq, chkPS, + 17 BCALL, ( 17 == pushRS ) +;CODE +CODE 2>R + DE POPqq, HL POPqq, chkPS, + 17 BCALL, ( 17 == pushRS ) EXDEHL, 17 BCALL, ;CODE - CODE R> - ( 20 == popRS ) - 20 BCALL, + 20 BCALL, ( 20 == popRS ) HL PUSHqq, ;CODE +CODE 2R> + 20 BCALL, ( 20 == popRS ) EXDEHL, 20 BCALL, + HL PUSHqq, DE PUSHqq, +;CODE diff --git a/blk/431 b/blk/431 index 1640707..a82bbc6 100644 --- a/blk/431 +++ b/blk/431 @@ -3,11 +3,8 @@ : / /MOD SWAP DROP ; : MOD /MOD DROP ; -( In addition to pushing H@ this compiles 2 >R so that loop +( In addition to pushing H@ this compiles 2>R so that loop variables are sent to PS at runtime ) -: DO - COMPILE SWAP COMPILE >R COMPILE >R - H@ -; IMMEDIATE +: DO COMPILE 2>R H@ ; IMMEDIATE diff --git a/blk/432 b/blk/432 index 3a4cfe5..d058dc3 100644 --- a/blk/432 +++ b/blk/432 @@ -12,5 +12,5 @@ : LOOP COMPILE _ COMPILE (?br) H@ - , - COMPILE R> COMPILE DROP COMPILE R> COMPILE DROP + COMPILE 2R> COMPILE 2DROP ; IMMEDIATE diff --git a/emul/forth.bin b/emul/forth.bin index cdd42bb92ea6423dedf776c3efa39615aed9bd9d..6c565b3223a3ee2dafbd952a331ed7f0e57c8361 100644 GIT binary patch literal 5702 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 Kxga0z6ywin`%qW_ literal 5749 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