: \ 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 ; \ Printing utilities : CR 10 EMIT ; : SPACE 32 EMIT ; : CHAR KEY STATE @ 0<> IF LIT LIT , , \ Append LIT to definition if compiling THEN ; IMMEDIATE : EMIT-DIGIT DUP 10 < IF CHAR 0 ELSE CHAR A THEN + EMIT ; : . \ Handle negatives DUP 0< IF CHAR - EMIT NEGATE THEN \ Determine starting place value 1 BEGIN BASE @ * 2DUP / 0= UNTIL \ Print leading non-zero digits BEGIN BASE @ / 2DUP / EMIT-DIGIT TUCK MOD SWAP OVER 0= UNTIL \ Print any trailing zeros BASE @ / DUP 0<> IF BEGIN CHAR 0 EMIT BASE @ / 0= UNTIL THEN 2DROP ; \ Set SYSREADY high to indicate prelude has finished and enable user \ input on the JS side. 1 SYSREADY AC!