User Tools

Site Tools


sd:star_forth_dictionary

This is an old revision of the document!


Star Forth Dictionary

Also see: Star Forth Test Suite

Here is a list of each word that comes standard in Star Forth. Included is a short definition as to its general usage.

+ (add)

This adds the two numbers on the top of the stack and pushes the result.

  1 2 + .

This puts a 1 and a 2 on the stack, then adds them and pushes the result. Then, the . (dot) command prints the result, which is 3:

  3 ok

BYE

This quits the REPL (the Forth environment).

Usage:

  BYE

. (dot)

This is the “print” command. It prints whatever is on the TOS. For example:

  5 .             ( this prints 5. )
  1 1 + .         ( this prints 2. )

DOW

  DOW  ( -- n )  Day of week 0=Sun 6=Sat

Pushes day of week to stack.

DUP

This command duplicates the top item on the stack. So if your stack is:

  1 2 3

then DUP will make it:

  1 2 3 3

2DUP

  : 2DUP OVER OVER ;

This duplicates the top 2 items on the stack. If the stack holds 1 2 3 2DUP will show 1 2 3 2 3. The 2 and 3 were duplicated.

DROP

Drops the TOS. If the stack is 1 2 3 then after DROP it will be 1 2.

2DROP

  : 2DROP DROP DROP ;

This command drops twice. If the stack is 1 2 3 then it will become 1. If the stack is 3 4 5 6 7 then it will become 3 4 5.

EVALUATE

Like EVALUATE from ANS Forth.

Experimental command.

Also see: INCLUDE

INCLUDE

INCLUDE command. Experimental.

Also see: EVALUATE

LROT

Bitwise left rotate.

Also see: RROT, LSHIFT, RSHIFT

LSHIFT

Bitwise shift left.

Also see: LROT, RROT, RSHIFT

MAX

  : MAX 2DUP < IF SWAP THEN DROP ;

A nice command. It does 2DUP then picks the highest number. How it works is easy; if the TOS is greater than the 2nd one down, it swaps them and drops the low one. Otherwise it drops TOS (because it's smaller). Note that the IF consumes the original numbers, so the only number left is the MAX one.

  stack:    1 5 10
  step1:    1 5 10 5 10     ; 2DUP
  step2:    1 5 10          ; < found
  step3:    1 10 5          ; SWAP
  step4:    1 10            ; 10 remains (the max of 5 and 10)

MIN

  : MIN 2DUP > IF SWAP THEN DROP ;

MIN is the opposite of MAX. The difference is that the comparator ('>') is reversed from MAX (where it is '<'). See MAX for a discussion of how it works.

MS

  MS  ( -- n )  Milliseconds 0-999

Timer function.

.N (dotn)

This is the print command, like . (dot) but it does not print a space after numbers.

NIP

  : NIP SWAP DROP ;

This command drops the element under the top of stack. if the stack is 1 2 3 then NIP drops the 2 and the stack will hold ''1 3'.

PERF

  PERF  ( -- n )  Performance timer (ms since page load)

PERF pushes the ms since system start onto the stack. Should be accurate to at least 1ms.

Also see: MS, TIME&DATE

RROT

Bitwise rotate right.

Also see: LROT, LSHIFT, RSHIFT

RSHIFT

Bitwise shift right.

Also see: LROT, RROT, LSHIFT

TIME&DATE

  TIME&DATE  ( -- sec min hour day month year )

Pushes the time and date to the stack. Useful!

Also see: DOW, MS, PERF


More coming soon!

sd/star_forth_dictionary.1777193731.txt.gz · Last modified: by appledog

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki