Bladeren bron

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 :)
master
Virgil Dupras 3 jaren geleden
bovenliggende
commit
68dd800bd1
17 gewijzigde bestanden met toevoegingen van 31 en 32 verwijderingen
  1. +5
    -5
      blk/263
  2. +3
    -4
      blk/264
  3. +1
    -1
      blk/270
  4. +1
    -1
      blk/353
  5. +1
    -1
      blk/354
  6. +3
    -1
      blk/363
  7. +1
    -1
      blk/369
  8. +1
    -1
      blk/372
  9. +1
    -1
      blk/374
  10. +0
    -1
      blk/381
  11. +0
    -6
      blk/382
  12. +1
    -1
      blk/392
  13. +2
    -2
      blk/396
  14. +2
    -2
      blk/397
  15. +7
    -1
      blk/399
  16. BIN
      cvm/forth.bin
  17. +2
    -3
      doc/dict.txt

+ 5
- 5
blk/263 Bestand weergeven

@@ -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- ;

+ 3
- 4
blk/264 Bestand weergeven

@@ -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!
;

+ 1
- 1
blk/270 Bestand weergeven

@@ -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 ;


+ 1
- 1
blk/353 Bestand weergeven

@@ -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 )

+ 1
- 1
blk/354 Bestand weergeven

@@ -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 ;


+ 3
- 1
blk/363 Bestand weergeven

@@ -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)
;

+ 1
- 1
blk/369 Bestand weergeven

@@ -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 )


+ 1
- 1
blk/372 Bestand weergeven

@@ -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 ;

+ 1
- 1
blk/374 Bestand weergeven

@@ -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] ;

+ 0
- 1
blk/381 Bestand weergeven

@@ -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 ;

+ 0
- 6
blk/382 Bestand weergeven

@@ -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

+ 1
- 1
blk/392 Bestand weergeven

@@ -2,7 +2,7 @@
BEGIN
WORD DUP @ 0x0401 = ( EOT ) IF DROP EXIT THEN
FIND NOT IF (parse) ELSE EXECUTE THEN
C<? NOT IF SPC LIT< ok (print) NL THEN
C<? NOT IF SPC LIT" ok" (print) NL THEN
AGAIN ;
( Read from BOOT C< PTR and inc it. )
: (boot<)


+ 2
- 2
blk/396 Bestand weergeven

@@ -11,6 +11,6 @@
['] C@ A@* ! ['] C! A!* !
( boot< always has a char waiting. 06 == C<?* )
1 0x06 RAM+ ! INTERPRET
RDLN$ LIT< _sys [entry]
LIT< CollapseOS (print) NL (main) ;
RDLN$ LIT" _sys" [entry]
LIT" Collapse OS" (print) NL (main) ;
XCURRENT @ _xapply ORG @ 0x04 ( stable ABI BOOT ) + !

+ 2
- 2
blk/397 Bestand weergeven

@@ -1,11 +1,11 @@
( Now we have "as late as possible" stuff. See bootstrap doc. )
: _bchk DUP 0x7f + 0xff > 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


+ 7
- 1
blk/399 Bestand weergeven

@@ -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


BIN
cvm/forth.bin Bestand weergeven


+ 2
- 3
doc/dict.txt Bestand weergeven

@@ -221,9 +221,8 @@ NOT f -- f Push the logical opposite of f

# Strings

LIT< x -- Read following word and write to HERE as a
string literal.
LIT" x" -- Same as LIT<, but can contain whitespaces.
LIT" x" -- Read following characters and write to HERE
as a string literal.
S= a1 a2 -- f Returns whether string a1 == a2.

# I/O


Laden…
Annuleren
Opslaan