67 lines
839 B
Forth
67 lines
839 B
Forth
: \ KEY 10 = 0BRANCH [ -20 , ] ; IMMEDIATE \ Now we have line comments :)
|
|
|
|
\ Conditionals
|
|
|
|
: IF
|
|
LIT 0BRANCH ,
|
|
HERE @ 0 ,
|
|
; IMMEDIATE
|
|
|
|
: THEN
|
|
DUP HERE @ SWAP -
|
|
SWAP !
|
|
; IMMEDIATE
|
|
|
|
: ELSE
|
|
LIT BRANCH ,
|
|
HERE @ 0 ,
|
|
SWAP
|
|
DUP HERE @ SWAP -
|
|
SWAP !
|
|
; IMMEDIATE
|
|
|
|
\ Loops
|
|
|
|
: BEGIN HERE @ ; IMMEDIATE
|
|
|
|
: UNTIL
|
|
LIT 0BRANCH ,
|
|
HERE @ - ,
|
|
; IMMEDIATE
|
|
|
|
: AGAIN
|
|
LIT BRANCH ,
|
|
HERE @ - ,
|
|
; IMMEDIATE
|
|
|
|
\ Recursive calls
|
|
|
|
: RECURSE LATEST @ >CFA , ; IMMEDIATE
|
|
|
|
\ Block comments (with nesting)
|
|
|
|
: (
|
|
BEGIN
|
|
KEY DUP
|
|
40 = IF RECURSE THEN
|
|
41 =
|
|
UNTIL
|
|
; IMMEDIATE
|
|
|
|
( ( Take that, C ) )
|
|
|
|
\ Peripheral register addresses
|
|
|
|
: TXBUF 0 ;
|
|
: RXBUF 32 ;
|
|
: TXHEAD 64 ;
|
|
: TXTAIL 65 ;
|
|
: RXHEAD 66 ;
|
|
: RXTAIL 67 ;
|
|
: SYSREADY 68 ;
|
|
|
|
\ Set SYSREADY high to indicate prelude has finished and enable user
|
|
\ input on the JS side.
|
|
|
|
1 SYSREADY AC!
|