From 68dd800bd1a490a5a6655c9a73e058ac874edb0d Mon Sep 17 00:00:00 2001 From: Virgil Dupras Date: Sat, 19 Sep 2020 18:51:29 -0400 Subject: [PATCH] Remove LIT< in favor of LIT" exclusively This duplicated feature existed because of bootstrapping issues with LIT", but again, with careful threading, we can clean things up. We can now have a proper "Collapse OS" prompt :) --- blk/263 | 10 +++++----- blk/264 | 7 +++---- blk/270 | 2 +- blk/353 | 2 +- blk/354 | 2 +- blk/363 | 4 +++- blk/369 | 2 +- blk/372 | 2 +- blk/374 | 2 +- blk/381 | 1 - blk/382 | 6 ------ blk/392 | 2 +- blk/396 | 4 ++-- blk/397 | 4 ++-- blk/399 | 8 +++++++- cvm/forth.bin | Bin 5262 -> 5220 bytes doc/dict.txt | 5 ++--- 17 files changed, 31 insertions(+), 32 deletions(-) diff --git a/blk/263 b/blk/263 index 6b47543..eb8ed08 100644 --- a/blk/263 +++ b/blk/263 @@ -7,9 +7,9 @@ CREATE XCURRENT 0 , : XFIND XCURRENT @ SWAP _find DROP _xapply ; : X' XCON ' XCOFF ; : X['] XCON ' _xapply LITN XCOFF ; : XCOMPILE XCON ' _xapply LITN - LIT< , FIND DROP _xapply , XCOFF ; + LIT" ," FIND DROP _xapply , XCOFF ; : X[COMPILE] XCON ' _xapply , XCOFF ; -: XDO LIT< 2>R XFIND , H@ ; -: XLOOP LIT< (loop) XFIND , H@ - C, ; -: XIF LIT< (?br) XFIND , H@ 1 ALLOT ; -: XELSE LIT< (br) XFIND , 1 ALLOT [COMPILE] THEN H@ 1- ; +: XDO LIT" 2>R" XFIND , H@ ; +: XLOOP LIT" (loop)" XFIND , H@ - C, ; +: XIF LIT" (?br)" XFIND , H@ 1 ALLOT ; +: XELSE LIT" (br)" XFIND , 1 ALLOT [COMPILE] THEN H@ 1- ; diff --git a/blk/264 b/blk/264 index 176d03e..ff054f5 100644 --- a/blk/264 +++ b/blk/264 @@ -1,7 +1,6 @@ -: XAGAIN LIT< (br) XFIND , H@ - C, ; -: XUNTIL LIT< (?br) XFIND , H@ - C, ; -: XLIT< LIT< (s) XFIND , WORD DUP C@ 1+ MOVE, ; +: XAGAIN LIT" (br)" XFIND , H@ - C, ; +: XUNTIL LIT" (?br)" XFIND , H@ - C, ; : XLIT" - LIT< (s) XFIND , H@ 0 C, ," + LIT" (s)" XFIND , H@ 0 C, ," DUP H@ -^ 1- SWAP C! ; diff --git a/blk/270 b/blk/270 index a169868..615258c 100644 --- a/blk/270 +++ b/blk/270 @@ -5,7 +5,7 @@ : DO XDO ; IMMEDIATE : LOOP XLOOP ; IMMEDIATE : IF XIF ; IMMEDIATE : ELSE XELSE ; IMMEDIATE : AGAIN XAGAIN ; IMMEDIATE : UNTIL XUNTIL ; IMMEDIATE -: LIT< XLIT< ; IMMEDIATE : LIT" XLIT" ; IMMEDIATE +: LIT" XLIT" ; IMMEDIATE : IMMEDIATE XIMM ; : (entry) (xentry) ; : CREATE XCREATE ; diff --git a/blk/353 b/blk/353 index 2ff63bf..dc2d8ed 100644 --- a/blk/353 +++ b/blk/353 @@ -9,6 +9,6 @@ : (infl) 0 IN( DUP IN> ! ! ; ( flush input buffer ) : QUIT (resRS) 0 0x08 RAM+ ! ( C<* override ) (infl) - LIT< (main) FIND DROP EXECUTE + LIT" (main)" FIND DROP EXECUTE ; 1 25 LOADR+ ( xcomp core low ) diff --git a/blk/354 b/blk/354 index 9471640..302b2ab 100644 --- a/blk/354 +++ b/blk/354 @@ -1,5 +1,5 @@ : ABORT (resSP) QUIT ; -: ERR LIT< (print) FIND IF EXECUTE THEN ABORT ; +: ERR LIT" (print)" FIND IF EXECUTE THEN ABORT ; : = CMP NOT ; : < CMP -1 = ; : > CMP 1 = ; : 0< 32767 > ; : >= < NOT ; : <= > NOT ; : 0>= 0< NOT ; : >< ( n l h -- f ) 2 PICK > ( n l f ) ROT ROT > AND ; diff --git a/blk/363 b/blk/363 index 1017ee8..a5da7b5 100644 --- a/blk/363 +++ b/blk/363 @@ -1,8 +1,10 @@ +: (wnf) LIT" (print)" FIND DROP EXECUTE + LIT" word not found" ERR ; : (parse) ( a -- n ) _pc IF EXIT THEN _ph IF EXIT THEN _pb IF EXIT THEN _pd IF EXIT THEN ( nothing works ) - LIT< (wnf) FIND IF EXECUTE ELSE ABORT THEN + (wnf) ; diff --git a/blk/369 b/blk/369 index 5f1848b..579a5cb 100644 --- a/blk/369 +++ b/blk/369 @@ -1,5 +1,5 @@ : '? WORD FIND ; -: ' '? NOT IF LIT< (wnf) FIND DROP EXECUTE THEN ; +: ' '? NOT IF (wnf) THEN ; : ROLL ?DUP NOT IF EXIT THEN 1+ DUP PICK ( n val ) diff --git a/blk/372 b/blk/372 index 8b8ae1d..20860d1 100644 --- a/blk/372 +++ b/blk/372 @@ -11,4 +11,4 @@ WORD( HERE ! ( w ) PREV CURRENT ! ; -: EMPTY LIT< _sys FIND IF DUP HERE ! CURRENT ! THEN ; +: EMPTY LIT" _sys" FIND IF DUP HERE ! CURRENT ! THEN ; diff --git a/blk/374 b/blk/374 index 6535bea..5919535 100644 --- a/blk/374 +++ b/blk/374 @@ -1,4 +1,4 @@ : [IF] IF EXIT THEN - LIT< [THEN] BEGIN DUP WORD S= UNTIL DROP ; + LIT" [THEN]" BEGIN DUP WORD S= UNTIL DROP ; : [THEN] ; diff --git a/blk/381 b/blk/381 index 8df37ff..12d7936 100644 --- a/blk/381 +++ b/blk/381 @@ -9,4 +9,3 @@ XCURRENT @ _xapply ORG @ 0x06 ( stable ABI uflw ) + ! : (oflw) LIT" stack overflow" ERR ; XCURRENT @ _xapply ORG @ 0x13 ( stable ABI oflw ) + ! -: (wnf) (print) SPC LIT" word not found" ERR ; diff --git a/blk/382 b/blk/382 index 83d7076..8bc9584 100644 --- a/blk/382 +++ b/blk/382 @@ -2,9 +2,3 @@ BEGIN C< DUP 34 ( ASCII " ) = IF DROP EXIT THEN C, AGAIN ; -: LIT" - COMPILE (s) H@ 0 C, ," - DUP H@ -^ 1- ( a len ) SWAP C! -; IMMEDIATE -: ." [COMPILE] LIT" COMPILE (print) ; IMMEDIATE -: ABORT" [COMPILE] ." COMPILE ABORT ; IMMEDIATE diff --git a/blk/392 b/blk/392 index 9b1af66..0364a2f 100644 --- a/blk/392 +++ b/blk/392 @@ -2,7 +2,7 @@ BEGIN WORD DUP @ 0x0401 = ( EOT ) IF DROP EXIT THEN FIND NOT IF (parse) ELSE EXECUTE THEN - C IF LIT< br-ovfl (print) ABORT THEN ; +: _bchk DUP 0x7f + 0xff > IF LIT" br ovfl" (print) ABORT THEN ; : DO COMPILE 2>R H@ ; IMMEDIATE : LOOP COMPILE (loop) H@ - _bchk C, ; IMMEDIATE ( LEAVE is implemented in low xcomp ) : LITN 0x23 ( n ) , , ; ( gets its name at the very end. can't comment afterwards ) -: _ BEGIN LIT< ) WORD S= UNTIL ; IMMEDIATE +: _ BEGIN LIT" )" WORD S= UNTIL ; IMMEDIATE : _ ( : will get its name almost at the very end ) (entry) 1 ( compiled ) C, BEGIN diff --git a/blk/399 b/blk/399 index 46ab344..cf8e01b 100644 --- a/blk/399 +++ b/blk/399 @@ -1,4 +1,10 @@ -: LIT< COMPILE (s) WORD DUP C@ 1+ MOVE, ; IMMEDIATE +: LIT" + COMPILE (s) H@ 0 C, ," + DUP H@ -^ 1- ( a len ) SWAP C! +; IMMEDIATE +( We don't use ." and ABORT in core, they're not xcomp-ed ) +: ." [COMPILE] LIT" COMPILE (print) ; IMMEDIATE +: ABORT" [COMPILE] ." COMPILE ABORT ; IMMEDIATE : BEGIN H@ ; IMMEDIATE : AGAIN COMPILE (br) H@ - _bchk C, ; IMMEDIATE : UNTIL COMPILE (?br) H@ - _bchk C, ; IMMEDIATE diff --git a/cvm/forth.bin b/cvm/forth.bin index 15879e4310ea07fbb50574ec98a46462a044900a..d7ccc3e98a6507b16fcbc8c8bd945a29990b4e0b 100644 GIT binary patch delta 1828 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 ZSZn$ka&{