There are lots of useful words in F83 that do not appear in any standard. This wordset defines some of them.
BS
BOUNDS ( a b -- b+a a )
PERFORM ( addr -- ? )
?LEAVE ( cond -- )
NOOP ( -- )
RP@ ( -- addr )
RP! ( addr -- )
SP! ( ... addr -- )
-ROT ( a b c -- c a b )
CSET ( n addr -- )
CRESET ( n addr -- )
CTOGGLE ( n addr -- )
OFF ( addr -- )
ON ( addr -- )
3DUP ( a b c -- a b c a b c )
4DUP ( a b c d -- a b c d a b c d )
UPC ( c1 -- c2 )
UPPER ( addr cnt -- )
LOWER ( addr cnt -- )
SKIP ( addr cnt c -- addr' cnt' )
SCAN ( addr cnt c -- addr' cnt' )
PLACE ( addr1 len addr2 -- )
ASCII word ( -- val )
CONTROL word ( -- val )
NUMBER? ( addr -- d flag )
VOCS ( -- )
DEFER word ( -- )
>EXECUTE ( xt -- ? )
BS
EMIT
BL
reference: '\b' in ../src/lpf83.c:0407, export OC BS
BOUNDS ( a b -- b+a a )
simulate: : BOUNDS OVER + SWAP ;
reference: p4_bounds in ../src/lpf83.c:0040, export CO BOUNDS
PERFORM ( addr -- ? )
simulate: : PERFORM @ EXECUTE
reference: p4_perform in ../src/lpf83.c:0052, export CO PERFORM
?LEAVE ( cond -- )
reference: p4_question_leave in ../src/lpf83.c:0060, export CO ?LEAVE
NOOP ( -- )
reference: p4_noop in ../src/lpf83.c:0074, export CO NOOP
RP@ ( -- addr )
example: : R@ RP@ @ ;
reference: p4_r_p_fetch in ../src/lpf83.c:0083, export CO RP@
RP! ( addr -- )
RP@
reference: p4_r_p_store in ../src/lpf83.c:0091, export CO RP!
SP! ( ... addr -- )
SP@
reference: p4_s_p_store in ../src/lpf83.c:0099, export CO SP!
-ROT ( a b c -- c a b )
ROT
reference: p4_dash_rot in ../src/lpf83.c:0107, export CO -ROT
CSET ( n addr -- )
simulate: : CSET TUCK @ SWAP OR SWAP ! ;
reference: p4_c_set in ../src/lpf83.c:0121, export CO CSET
CRESET ( n addr -- )
simulate: : CRESET TUCK @ SWAP NOT AND SWAP ! ;
reference: p4_c_reset in ../src/lpf83.c:0132, export CO CRESET
CTOGGLE ( n addr -- )
simulate: : CTOGGLE TUCK @ SWAP XOR SWAP ! ;
reference: p4_c_toggle in ../src/lpf83.c:0143, export CO CTOGGLE
OFF ( addr -- )
simulate: : OFF FALSE SWAP ! ;
reference: p4_off in ../src/lpf83.c:0153, export CO OFF
ON ( addr -- )
: ON TRUE SWAP ! ;
reference: p4_on in ../src/lpf83.c:0162, export CO ON
3DUP ( a b c -- a b c a b c )
simulate: : 3DUP 3 PICK 3 PICK 3 PICK ;
reference: p4_three_dup in ../src/lpf83.c:0171, export CO 3DUP
4DUP ( a b c d -- a b c d a b c d )
simulate: : 4DUP 4 PICK 4 PICK 4 PICK 4 PICK ;
reference: p4_four_dup in ../src/lpf83.c:0183, export CO 4DUP
UPC ( c1 -- c2 )
: UPC >R _toupper ;
reference: p4_upc in ../src/lpf83.c:0196, export CO UPC
UPPER ( addr cnt -- )
simulate: : UPPER 0 DO DUP I + DUP C@ UPC SWAP C! LOOP DROP ;
reference: p4_upper in ../src/lpf83.c:0206, export CO UPPER
LOWER ( addr cnt -- )
simulate: : LOWER 0 DO DUP I + DUP C@ >R _tolower SWAP C! LOOP DROP ;
reference: p4_lower in ../src/lpf83.c:0218, export CO LOWER
SKIP ( addr cnt c -- addr' cnt' )
simulate: : SKIP >R BEGIN DUP OVER C@ R@ = OR WHILE 1- SWAP 1- SWAP REPEAT R> DROP ;
reference: p4_skip in ../src/lpf83.c:0230, export CO SKIP
SCAN ( addr cnt c -- addr' cnt' )
simulate: : SCAN >R BEGIN DUP OVER C@ R@ = 0= OR WHILE 1- SWAP 1- SWAP REPEAT R> DROP ;
reference: p4_scan in ../src/lpf83.c:0248, export CO SCAN
PLACE ( addr1 len addr2 -- )
simulate: : PLACE 2DUP C! 1+ SWAP CMOVE ;
reference: p4_place in ../src/lpf83.c:0265, export CO PLACE
ASCII word ( -- val )
CHAR
[CHAR]
simulate: : ASCII [COMPILE] [CHAR] STATE @ IF [COMPILE] LITERAL THEN ;
reference: p4_ascii in ../src/lpf83.c:0280, export CS ASCII
CONTROL word ( -- val )
ASCII
simulate: : CONTROL [COMPILE] [CHAR] [CHAR] @ - STATE @ IF [COMPILE] LITERAL THEN ;
reference: p4_control in ../src/lpf83.c:0306, export CS CONTROL
NUMBER? ( addr -- d flag )
INTERPRET
example: BL WORD HERE NUMBER? 0= IF ." not a number " THEN .
reference: p4_number_question in ../src/lpf83.c:0336, export CO NUMBER?
VOCS ( -- )
simulate: : VOCS VOC-LINK @ BEGIN DUP WHILE DUP BODY> >NAME .NAME ->VOC-LINK @ REPEAT DROP ;
reference: p4_vocs in ../src/lpf83.c:0356, export CO VOCS
DEFER word ( -- )
simulate: : DEFER CREATE 0, DOES> ( the ((DEFER)) runtime ) @ ?DUP IF EXECUTE THEN ;declare as
"DEFER deferword"
"['] executionword TO deferword"
reference: p4_defer in ../src/lpf83.c:0386, export CO DEFER
>EXECUTE ( xt -- ? )
EXECUTE
simulate: : >EXECUTE ?DUP IF EXECUTE THEN ;
reference: p4_to_execute in ../src/lpf83.c:0397, export CO >EXECUTE