From c3d3da6771c0dee85fe2b31f41c63e95f204eb5b Mon Sep 17 00:00:00 2001 From: Carsten Strotmann Date: Mon, 12 Apr 2021 20:42:46 +0200 Subject: [PATCH] Circular String Buffer --- sources/generic/csb.fth | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 sources/generic/csb.fth diff --git a/sources/generic/csb.fth b/sources/generic/csb.fth new file mode 100644 index 0000000..974eb2d --- /dev/null +++ b/sources/generic/csb.fth @@ -0,0 +1,35 @@ +( ----- 000 ) +\\ Circular String Buffer cas 27jul20 + Wil Baden, Costa Mesa, California + Forth Dimensions July 1996 +( ----- 001 ) +\ CSB load screen cas 27jul20 + + 1 3 +thru + + + .( Circular Ring Buffer loaded. ) +( ----- 002 ) +\ Get-Buf >PAD cas 27jul20 + +1000 CONSTANT /CSB +CREATE CSB 0 , /CSB ALLOT + + : GET-BUF ( n -- c_addr ) + DUP CSB @ > IF /CSB CSB ! THEN + NEGATE CSB +! + CSB 2+ CSB @ + ; + + : >PAD ( a u -- 'a u ) + DUP GET-BUF SWAP + 2DUP >R >R MOVE R> R> ; +( ----- 003 ) +\ S" cas 27jul20 + + : S" ( "ccc" -- | c_addr u ) + ASCII " PARSE + STATE @ IF + POSTPONE SLITERAL + ELSE + >PAD + THEN ; IMMEDIATE