2d17b4e8ec
I'm not sure why I chose null-terminated initially. Probably because the z80asm version had null-terminated strings. Length-prefixes strings are the traditional form of strings in Forth and it's a bit easier to work with them with traditional forth words when they're under this form.
15 lines
609 B
Plaintext
15 lines
609 B
Plaintext
: ABORT (resSP) QUIT ;
|
|
: 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 ;
|
|
: =><= 2 PICK >= ( n l f ) ROT ROT >= AND ;
|
|
: MIN ( n n - n ) 2DUP > IF SWAP THEN DROP ;
|
|
: MAX ( n n - n ) 2DUP < IF SWAP THEN DROP ;
|
|
: NIP SWAP DROP ; : TUCK SWAP OVER ;
|
|
: C@+ ( a -- a+1 c ) DUP C@ SWAP 1+ SWAP ;
|
|
: C!+ ( c a -- a+1 ) TUCK C! 1+ ;
|
|
: C@- ( a -- a-1 c ) DUP C@ SWAP 1- SWAP ;
|
|
: C!- ( c a -- a-1 ) TUCK C! 1- ;
|
|
: LEAVE R> R> DROP I 1- >R >R ; : UNLOOP R> 2R> 2DROP >R ;
|