X-Git-Url: https://git.kengrimes.com/?p=watForth.git;a=blobdiff_plain;f=forth.forth;h=dce37c5b7833fcff87ea467ecf2be56b1bf3878c;hp=fb04e4d2061dd5965b7ef0cda264c72bc9008e11;hb=7946a78988064b7ec67e8d27763a962cebb29515;hpb=94d40c7e5521898acd394ca7a3e30cf20065ee5c diff --git a/forth.forth b/forth.forth index fb04e4d..dce37c5 100644 --- a/forth.forth +++ b/forth.forth @@ -34,11 +34,15 @@ word DEFINE-DOES 45 define word QUIT 16384 define word BYE 25 define word WORDS 27 define -word !CHANNEL 35 define +word CHANNEL-IN 35 define +word CHANNEL-OUT 48 define +word CHANNEL-OPEN 51 define +word CHANNEL-AWAIT 50 define word !HERE 36 define word HERE 28 define word STACKTRACE 46 define +word FETCH 47 define word ; 1 define word JZ: 14 define @@ -83,9 +87,9 @@ word ::> here define ' word , ' 2dup , ' here , ' define-does , ' here , ' define , ' ; , \ write the execution semantics of a word to memory -: MEMORIZE-WORD ' dup , ' JNZ: , here 12 + , ' 2drop , ' ; , +: MEMORIZE-WORD ' dup , ' JNZ: , here 12 + , ' 2drop , ' ; , ' 2dup , ' find , ' dup , ' JZ: , here 16 + , ' , , ' 2drop , ' ; , -' drop , ' lit , ' lit , ' , , ' execute-num , ' , , ' ; , +' drop , ' lit , ' lit , ' , , ' execute-num , ' , , ' ; , \ change interpreter semantics to "memorize-word" : memorizing ' lit , ' mode , ' lit , ' memorize-word , ' ! , ' ; , @@ -94,7 +98,8 @@ word ::> here define \memorizing \: executing lit mode lit execute-word ! ; \: FINISH-" drop string-end ; -\: " string-start \: KLOOP key 34 =? JNZ: finish-" string-put JMP: KLOOP +\: BSLASH-" drop key string-put JMP: \here \8 \+ \, +\: " string-start \: KLOOP key 92 =? JNZ: bslash-" 34 =? JNZ: finish-" string-put JMP: KLOOP \: DO" \:> " " swap lit lit , , lit lit , , ; \: DOIF \:> IF lit JZ: , here dup , ; \: DOELSE \:> ELSE lit JMP: , here dup , swap here ! ; @@ -136,11 +141,13 @@ here define-does then compiling ; \ Set the number conversion base : BASE 14348 swap ! ; +: BASE10 10 base ; ( End of bootstrap process beyond this point, all hope is lost ) +\ Print intro string " watForth-32 Interactive CLI: " .s