===== [hemmerling] FORTH 4/7 ======
Related pages:
  *[[dsl.html|Textual and Graphical Modeling by Domain Specific Languages]].
  *[[embedded.html|Embedded Systems]].
  *[[forth.html|FORTH 1/7]].
  *[[forth02.html|FORTH 2/7 - Hardware, Commercial Products & Services, Intellectual Property ( IP )]].
  *[[forth03.html|FORTH 3/7]].
  *[[forth05.html|FORTH 5/7]].
  *[[forth06.html|FORTH 6/7]].
  *[[forth07.html|FORTH 7/7 - H2oForth]].
  *[[specbyex.html|Specification by Example, Modelling by Example]].
  *[[testing.html|Testing]].
  *[[unittest.html|Unit Test / Module Test]].
  *[[vmachine.html|Virtual Machines, P-Code & Byte-Code Interpreters]].
  *[[wasm.html|WebAssembly ( WASM )]].
===== Implementations ===== 
==== The Beginning ====
=== The first FORTH ===
  *[[http://www.github.com/monsonite/1968-FORTH|GitHub "monsonite / 1968-FORTH"]] - "Original Forth for IBM 1130 written by Charles Moore in 1968".
=== The first Hardware ===
  *[[http://www.ibm1130.org/sim/|IBM1130.org "Simulating the IBM 1130 on 21st-century hardware"]].
  *[[http://en.wikipedia.org/wiki/IBM_1130|EN.Wikipedia "IBM 1130"]].
==== Free & OpenSource FORTH Systems ====
=== Valuable OpenSource FORTHs, named by a FORTH expert in 2021-07 ( in alphabetic Order ) ==
  -CamelForth.
  -eForth.
  -ESP32forth.
  -ForthWin/Forth2020.  
  -Gforth.
  -Mecrisp.
  -noForth / Egel project. 
  -SP-Forth.
  -Tachyon Forth.
  -Win32forth.
=== Free & OpenSource FORTH Systems for BareMetal Systems, in Assembly Language, ( some ) C, .. ===
  *[[http://www.retrotechnology.com/|RetroTechonology, Herb Johnson]].
    *The OpenSource [[http://www.retrotechnology.com/memship/figforth_1802.html|RetroTechonology, Herb Johnson "1802 FIG FORTH"]].
  *[[http://www.github.com/ablevm/able-forth|GitHub "ablevm / able-forth"]]  - "A Forth-like programming language that targets the AbleVM".
    *[[http://www.reddit.com/r/Forth/comments/p01ht0/looking_for_a_simple_forth_compiler_producing/|Reddit "r/Forth", Thread "Looking for a simple forth compiler (producing asm/executables, not compiling forth words) to learn from, preferably in C family language"]] - "The Able Forth compiler targets the AbleVM but in every other respect, it's a native code compiler (there's no reason Able Forth couldn't be made to emit native code for a physical machine). The default AbleVM core was designed to make the Able Forth compiler simple; it's implemented as a C library and provides, among other things, a 0-operand dual-stack virtual machine with ample general-purpose and base+offset address registers".
  *[[http://www.github.com/yesco/ALForth|yesco / ALForth]] - "ALphabetical Forth - an ASCII mapped byte-code proposal for FORTH (standard and extented)".
    *Author [[http://www.facebook.com/jonas.s.karlsson|Facebook "Jonas S Karlsson"]].
    *[[http://www.facebook.com/groups/2225595150855239?multi_permalinks=4326642794083787|Facebook "Forth2020 Users-Group", Thread "How does one get an operational Forth system on a board that has extremely limited SRAM?"]] - "BTW, I"d consider using an Alphabetical Letter Forth bytecode: I've mapped the most common names in forth to 1 letter, and others to two letter sequences. I went through all the standard forth words and extras and assigned them 1-2 letters. I feel the mapping is pretty good. The mapping/bytecode was created for a letter byte coded forth for 6502 (not completed, but experiemnted on in various variants). There are many nice features with having the byte-code be the same the names. You'll find a number of similar systems of various "forth" charactersistcs by other members. What I've learned is that this simplifies, if not completely removes the need for a compiler/parser. I made a prototype one, with 8 bit (byte) "wordsize" with an editor. 256 bytes housed all user defined words (address 0-N, 0 terminated). and the end of the 256 byte page was 16 bytes for program stack, 16 bytes for user stack. The program grew up towards the stack that grew down".
    *"I almost had a fullscreen (vt100) editor working for the 256-- bytes. Newlines-formatted.256 bytes quite a lot of op-codes... CTRL-R reset the stack and parsed worddefs/ran the code on screen.Instead of immediate/Compile mode I had Edit/Run mode. I think my 50+ words plus editor was about 1.5KB in 6502".
  *The OpenSource ANS94 FORTH system [[http://bigforth.sourceforge.net/|SourceForge "bigFORTH"]], [[http://www.sourceforge.net/projects/bigforth|SourceForge "bigFORTH"]].
    *[[http://www.bernd-paysan.de/|Bernd Paysan]].
      *[[http://www.bernd-paysan.de/bigforth.html|Bernd Paysan "bigFORTH"]].
        -ATARI-ST version.
        -The once-commercial MSDOS-with-Dos-Extender version.
    *[[http://web.archive.org/web/*/http://www.jwdt.com/~paysan/bigforth.html|Archive.org "Bernd Paysan - bigFORTH"]] ( - 2011-03-07 ).
    *List of FORTH words:<code>
BIGFORTH.INI  ENVIRONMENTAL  ENVIRONMENT?  ENVIRONMENT  ENVIRON.FS RANDOM  RND  ROL9  GENERATOR  SEED  RANDOM.FS  STRING  DOUBLE  PTR SHORT  BYTE  STRUCT{  STRUCT  SIZEOF  ALIGN-BY  STRUCT.FS  DFFIELD: SFFIELD:  FFIELD:  FIELD:  CFIELD:  +FIELD  END-STRUCTURE  BEGIN-STRUCTURE K-F12  K-F11  K-F10  K-F9  K-F8  K-F7  K-F6  K-F5  K-F4  K-F3  K-F2 K-F1  K-INSERT  K-END  K-NEXT  K-PRIOR  K-DOWN  K-RIGHT  K-UP  K-LEFT K-HOME  FKEY.  SIMPLE-FKEY-STRING  KEYCODE-END  KEYCODE-START  K-FNS: EKEY>FKEY  EKEY>XCHAR  EKEY>CHAR  K-FN-MASK  K-MOUSE-MASK  K-NUMLOCK-MASK K-ALT-MASK  K-CTRL-MASK  K-CAPSLOCK-MASK  K-SHIFT-MASK  EKEY?  EKEY ACTION-OF  DEFER!  DEFER@  SYNONYM  FORTH200X.FS  (FILE-ERROR  .BACK "BACK  IN_WHICH?  .EXCEPT  DUMPED  EXCEPT.FS  BECOMES  NOTRACE  TRACEALL TAB  ~~  ~~,  (~~)  B~~  BP'OFF  BP'ON  BP:  TRACE'  DEBUG  >DEBUG VOCS  D'  ?  DL  DU  DUMP  DSEE  SEE  TOOLS  .DUMPED  WITHIN 0= I C@  .A3  .A2  .A1  TOOLS.FB  .386  .86  DISLINE  DISW  DIS  DISASS.F -BUFFER  +BUFFER  +OUT  NULL  OUT  0.  OUTPUT.FB  (ENTER)  WRITE-HISTORY LFPAD  PREV-LINE  FIND-PREV-LINE  NEXT-LINE  GET-LINE  HIST-SETPOS HIST-POS  CLEAR-TIB  CLEAR-LINE  BACKSPACES  ?HISTORY  GET-HISTORY HISTORY-FILE  FORCE-OPEN  BACKWARD^  FORWARD^  HISTORY  BINDKEY <TAB>  EXTRACT-WORD  TIB-FULL?  KILL-EXPAND  SEARCH-PREFIX  PREFIX-FOUND F'  HELP  (FTAST  VT100-DECODE  TCODE  TRANS  FCODE  TRANSCODE  TRANSLATE VT100KEY.FS  IDLE+  IDLE'  RE-TIME  DOSHIFT  !NAME  NEWTASK  TASK TASKS  TASK'S  RENDEZVOUS  AUTOSTART  .TIME  >US  MS>TIME  MS  MINUTES SECONDS  TIMEOUT?  WAIT  TILL  AFTER  !TIME  TIME  TIMER@  KILL PASS  ACTIVATE  UNLOCK-ALL  MULTITASK  SINGLETASK  TASKER.FB  CP APPLY  'BYE  IMPORT  M'  MODULES  SAVESYSTEM  SAVEMOD  SAVING  SAVEMOD.FB STRING-PREFIX?  STR<  STR=  (0"  0"  ,0"  CPUSH  0PLACE  0>C"  C>0" $ADD  $SUM  +PLACE  BLANK  REPLACE  INSERT  DELETE  SEARCH  COMPARE CAPSCOMP  CAPS  STRINGS.FS  MEMERR$  SYSERRS  ERRORE.FS  SH  (VIEW RM  MV  LL  LS  FREE?  CD  DIR  PWD  MAKEDIR  KILLDIR  INDEX  CONVEY COPY  MORE  (MORE  FILES  EOF  "USE  FROM  RENAME  MAKEFILE  FREE? KILLFILE  PATH  RESIZE-FILE  FILE-SIZE  REPOSITION-FILE  FILE-POSITION FLUSH-FILE  WRITE-FILE  READ-FILE  BIN  W/O  R/W  R/O  DELETE-FILE CLOSE-FILE  CREATE-FILE  OPEN-FILE  SOURCE-ID  TIME&DATE  APP-WIN DOS  [WHILE]  [AGAIN]  [REPEAT]  [UNTIL]  [BEGIN]  [I]  [NEXT]  [FOR] [LOOP]  [+LOOP]  [?DO]  [DO]  [ENDIF]  [THEN]  [ELSE]  [IFUNDEF] [IFDEF]  [IF]  [UNDEFINED]  [DEFINED]  DEFINED?  [STRUCT]  FILEINT.FB HASH  HASH.FS  INCLUDED?  INCLUDED  INCLUDE-FILE  WRITE-LINE  READ-LINE \*  /*  (*  (  \\\  \\  #!  \  #LIST  MORE?  INCLUDE  STR?  #INCLUDE #LOAD  (#LOAD  INPUT-FILE  RESTORE-INPUT  SAVE-INPUT  REFILL  READLINE (READLINE  SKIPLF  READ?  STREAM@  -EOF?  POS@  FPOS  CMAX  STREAM.FB LABEL  >LABEL  CODE  >C:  ;CODE  USER'  ASSEMBLER  ASSEM486.FB  .BLK STARTUP.FB  FORTH  BIGFORTH  WIN32  FORTH.FB  RESTART  PCR/W  H: G:  F:  E:  D:  C:  B:  A:  DRV?  >DRIVE  DRIVE  DISPLAY  KEYBOARD PCACCEPT  PCDECODE  EVERYCHAR  CTYPE?  SCANCODE  LASTKEY  CTRLKEYS <CLR>  <END>  <BEG>  <BS>  <DEL>  <BACK>  <FORW>  <NEXT>  <PREV> <INS>  >STRING  CUR+  PCGETKEY  PCFORM  PCAT?  PCAT  PCTYPE  PCCLRLINE PCCURRITE  PCCURLEFT  PCCUROFF  PCCURON  PCPAGE  PCDEL  PCCR  BELL PCEMIT  COLOR  PCKEY  PCKEY?  KBSHIFT  PENDING  ESC[  ESC!  CON! #BELL  #TAB  #ESC  #LF  #CR  #BS  COLD  RSPACE  DS@  CS@  EXCEPT' EXCEPT#  DUMPED  'RESTART  #TIBS  INTERPRET-ARGS  DO-ARG  ARG#  -OPTIONS SCRIPT?  ARG  ARGC  MODULECOLD  MODULE;  MODULE]  EXPORT  EXPORTVOC EXPORT:  BYE:  MAIN:  COLD:  MODULE  MODULE[  JOINED  SAVEDP  FINDMOD MODHEADER  MAXMODLEN  QUERY  PREVTIB  NEXTTIB  EVALUATE  EXECUTE-PARSING ">TIB  DELTIB  MORETIBS  NEWTIB  #TIB  TIB  MAX#TIB  ?CR  COLS  ROWS COL  ROW  STOP?  BADBYE  BYE  MODULEBYE  SAVE  EMPTY  MARKER  FORGET(FORGET  CLEAR  CUSTOM-REMOVE  REMOVE  RM-MODULE  USE  /NAME  /PARSE FILE?  .FILE  >LEN  DIRECT  FILE  FILE,  CLOSE!  CLOSE  OPEN  FLUSH EMPTY-BUFFERS  CLOSE-FILES  SAVE-BUFFERS  CAPACITY  DOS  FILE-LINK HOSTSEM  BLOCK  BUFFER  ISFILE@  (BLOCK  (BUFFER  CORE?  UPDATE EMPTYBUF  BACKUP  DISKERR  (DISKERR  RESIZE  FREE  ALLOCATE  MEMORY BLOCKR/W  OFFSET  PREV  UNLOCK  LOCK  SEMA  IDLE  SEMALINK  SLEEP WAKE  PAUSE  STOP  LINKTASK  'UP  SLEEPERS  LIST  L/S  C/L  .S  MAXDEPTH-.S U.  .  UD.  D.  U.R  .R  UD.R  D.R  #S  #  SIGN  #>  <#  HOLD  QUD/MOD SPACES  SPACE  -TRAILING  BL  ERROR"  ABORT"  (ABORT  (ERROR"  (ABORT" (ERROR  LASTERR  ABORT  PUSHI/O  STANDARDI/O  (PUSHI/O  (STANDARDI/ QUIT  ?ERROR  (QUIT  PROMPT  'QUIT  INCLUDE  LOADFROM  -->  +THRU THRU  +LOAD  LOAD  (LOAD  SAVEERR  LOADERR  .STATUS  THROW  BACKTRACE CATCH  (CATCH  'CATCH  'ABORT  END-TRACE  >ERROR  ERR$S  ERROR$S SYSERR$  ?STACK  CPU  SYS-SP  FORTHSTART  FTAB  MROOT  IS  DEFERS WHAT'S  PATCH  DEFER  EOT?  ACCEPT  DECODE  KEY?  KEY  INPUT:  AT-XY CLRLINE  CURRITE  CURLEFT  CUROFF  CURON  TFLUSH  EOT  BOT  FORM AT?  AT  PAGE  DEL  TYPE  CR  EMIT?  EMIT  OUTPUT:  CFA@  TABLE: T]  ]  [  INTERPRET  NO.EXTENSIONS  NOTFOUND  PARSER  NUMBER  NUMBER? S>NUMBER  GETSIGN  GETBASE  BASES  CHAR@  >NUMBER  ACCUMULATE  DIGIT? [']  '  FIND  (FIND  (PREHASH  ((FIND  LIST(FIND  FOUND  .NAME  >BODY NAME>  (NAME>  WORDS  UNLIST  LIST>  ORDER  BODY>  SEARCH-WORDLIST FORTH-WORDLIST  SET-CURRENT  GET-CURRENT  SET-ORDER  GET-ORDER  WORDLIST 'PREHASH  'FINDPAD  >REL  ONLYFORTH  ONLY  ROOT  VOCABULARY  VOC, VOC-LINK  SLOWVOC  'INITVOC  DEFINITIONS  PREVIOUS  TOSS  ALSO  CONTEXT CURRENT  VP  TO  &  AUSER  USER  UALLOT  AVALUE  VALUE  2CONSTANT ACONSTANT  CONSTANT  AVARIABLE  2VARIABLE  VARIABLE  ALIAS  ;  !LENGTH :NONAME  >NAME  NFA?  :  CREATE  HEADER  NAME?  HEADALIGN  HEAD+ MAKEVIEW  BLK@  FORWARD  NOT  WARNINGS  WARNING  |  ?HEAD  HMACRO DP!  DOES>  (;CODE  HEAP?  HEAP  HALLOT  CLEARSTACK  MACRO  RESTRICT IMMEDIATE  RECURSE  RECURSIVE  REVEAL  'REVEAL  \NEEDS  \\  \  .( (  .'  ."  (."  C'  S'  ,'  "  S"  SLITERAL  (S"  C"  (C"  ,"  "LIT SSTRING+  CSTRING+  CTRL  ASCII  [CHAR]  CHAR  DECIMAL  HEX  JOIN FORK  ENDCASE  ENDOF  OF  CASE  NEXT  -LOOP  +LOOP  LOOP  NEXTITER -ITERATE  +ITERATE  ITERATE  FOR  U-DO  -DO  U+DO  +DO  ?DO  DO MEANWHILE  REPEAT  UNTIL  AGAIN  WHILE  BEGIN  ELSE  ENDIF  THEN IF  AHEAD  ?LEAVE  LEAVE  DONE  LEAVINGS  CS-ROLL  CS-PICK  YET BUT  .ALIGN  CASE?  ?STRUC  POSTPONE  [COMPILE]  COMPILE  (COMPILE REL  COMPILE,  CFA,  'CFA,  !LASTDES  ?ALIT,  ?LIT,  ALITERAL  2LITERAL LITERAL  #OPT  OPTTAB  :S  :R  :##  :#>  :#+@  :#@^  :#@&  :#@| :#@-  :#@+  :+@  :Q+@  :#^  :#&  :#|  :#-  :#+  :C@  :@  :I@  :SVAR@ :OVAR@  :SUSR@  :USER@  :#@  :#@>  :#C@  :#C@>  :IC@  :#!  :!  :#+C@ :C!  :XOR  :AND  :OR  :-  :+  :SVAR  :OVAR  :I  :Q+  :CDX  :SUSER :USER  :LIT  :+LOOP  :?  :F  :OVER  :DX>  :DX  :AX  :NONE  T&P  LASTXT LASTCFA  LAST  LASTOPT  LASTDES  NAME  (NAME  PARSE-NAME  PARSE WORD  SOURCE  BLK+  B/BLK  (WORD  CAPITALIZE  TOLOWER  CAPITAL  SCAN< -SCAN  -SKIP  SKIP<  SCAN  SKIP  ERASEBITS  MOVEBITS  A,  V!  A! RELOFF  RELON  RELINFO  BIT@  ~BIT  -BIT  +BIT  W,  C,  2, , PAD ALIGN  ALIGNED  ALLOT  UNUSED  HERE  ERASE  FILL  -TEXT  /STRING COUNT  PLACE  MOVE  (FOR  CMOVE>  CMOVE  ITH  UNLOOP  +I'  (NEXT (LOOP  (-LOOP  (+LOOP  I@  K'  J'  I'  K  J  I  (-DO  (U+DO  (+DO (U-DO  (?DO  (DO  Q*/  *  Q*  QMOD  Q/MOD  Q/  M*  UM*  DMIN  DMAX M*/  D*  UD/MOD  U/MOD  MOD  SM/REM  FM/MOD  M/REM  MU/  M/  /  */ UM/MOD  MU/MOD  M/MOD  /MOD  */MOD  BOUNDS  ABS  DABS  S>D  EXTEND UMIN  UMAX  MAX  MIN  DU<  D<  D=  WITHIN  D-  D0=  <>  U>=  U<= >=  <=  0<=  0>=  =  U<  U>  <  >  ?EXIT  0>  0<  0=  0<>  PUSH -ROLL  ROLL  -ROT  ROT  CHARS  CELL/  CELLS  PICK  D2/  D2*  4/ 4*  2/  2*  ON  OFF  FALSE  TRUE  -1  -CELL  CELL  4  3  2  1  0 8+  6+  CELL-  4-  2-  1-  CELL+  4+  3+  2+  1+  CHAR+  2!  2@ M+  D+  DNEGATE  <<  >>  RSHIFT  LSHIFT  NEGATE  INVERT  XOR  AND OR  -  UNDER+  +  RDEPTH  DEPTH  D0<  2ROT  2OVER  2DUP  2SWAP  SWAP TUCK  UNDER  NIP  OVER2  OVER  C!+  C@+  W!+  WX@+  W@+  !+  @+ AC!+  AC@+  A!+  A@+  A>  >A  PC!  PC@  CX@  WX@  W!  WEXTEND  W@ CTOGGLE  C!  C@  ?DUP  +!  !  @  2>R  2R>  2R@  R>  >R  RDROP  R@ PERFORM  EXECUTE  UNNEST  RP!  RP@  UP!  UP@  SP!  SP@  FROMFILE ISFILE  R#  SCR  DPL  LOADFILE  LINE  BLK  >IN  >TIB  STATE  EXPORTLINK THISMODULE  "ERROR  ERRORHANDLER  WAKE-TIME  INPUT  OUTPUT  BASE S^  DP  HANDLER  R0  S0  LOCK>  TSTART  TSAVE  TSAVERP  TPREV  TNEXT UDP  MAXUDP  (SUSER  (USER  DUP  D>S  DROP  2DROP  NOOP  EXIT  KERNEL</code>
  *[[http://www.github.com/lennart-benschop/agon-forth|GitHub "agon-forth"]] for a Z80 board.
  *[[http://www.github.com/rm-hull/byok|GitHub "rm-hull / byok"]] - "A bare-metal x86 Forth interpreter & compiler".
    *[[http://www.librehacker.com/2020/11/25/byok-bare-metal-forth/|The Libre Hacker - Freedom Software, Firmware, and Hardware Enthusiast "BYOK: Bare Metal Forth"]].
  *[[http://www.github.com/agsb/f2u|GitHub "agsb /f2u"]] - "A forth concept with no assembler in dictionary, else in primitives, and a eficient indirect thread code".
  *Charles Childers, Forthworks.
    *[[http://www.forthworks.com/nga|Charles Childers, Forthworks "Nga"]].
    *[[http://www.forthworks.com/parable|Charles Childers, Forthworks "Parable"]].
    *Retro Forth ( see on this page! ).
  *The OpenSource FORTH System [[http://www.flashforth.com/|FlashForth]], [[http://sourceforge.net/projects/flashforth/|SourceForge "FlashForth: for PIC and Atmega"]], [[http://www.flashforth.sourceforge.net/projects/|SourceForge "FlashForth: for PIC and Atmega"]] - "A standalone Forth system for the Microchip PIC 18, 24, 30, 33 and the Atmel Atmega series of microcontrollers".
  *Ulrich Hoffmann.
    *[[http://www.github.com/uho|GitHub "Ulrich Hoffmann"]].
      *[[http://www.github.com/uho/docker-forth|GitHub "uho / docker-forth"]] - "Docker images for popular Forth systems".
      *[[http://www.github.com/uho/minimal|GitHub "uho / minimal"]] - "Minimal Forth Workbench". 
        *"Their aim is to define a Standard Forth subset suitable for educational purposes. For this they propose to cut down the number of Forth words initially explained to Forth newcomers and only stepwise introduce new concepts such as number output, compiling words, strings, file access, exceptions, ...".
        *"This package - the Minimal Forth Workbench - allows to experiment with different sets of primitive (i.e. predefined) definitions in order to further elaborate on Paul's and Peter's ideas".
    *Video [[http://wiki.forth-ev.de/doku.php/events:ef2019:forth-editing|Forth-eV Wiki, EuroForth 2019 "Ulrich Hoffmann — Forth Projectional Edition"]].
    *PDF slides [[http://www.forth-ev.de/wiki/events:ft2019:ulli-seedforth|Forth-eV Wiki, Forth–Tagung 2019 im Hotel Sandwiese bei Worms, Ulrich Hoffmann — Seedforth "Ulrich Hoffmann — Seedforth"]].
    *Video [[http://av.tib.eu/media/46998|TIB AV Portal "Forth - The New Synthesis"]] - "ICE concept, Moore, 1999 - Interpret, Compile, Execute".
  *[[http://home.hccnet.nl/a.w.m.van.der.horst/|Albert van der Horst]].
    *The OpenSource 16-bit / 32-bit /64-bit FORTH system "ciforth".
      *[[http://home.hccnet.nl/a.w.m.van.der.horst/ciforth.html|Albert van der Horst "ciforth. A common intel / computer intelligence / ch+ forth"]], [[http://www.github.com/albertvanderhorst/ciforth|GitHub "albertvanderhorst / ciforth"]].
        *[[http://forth.hcc.nl/producten/ciforth.html|HCC!Forth, Albert van der Horst "ciforth"]].
        *"As long as your target is i86 based, you can pick your target to be: -16 32 or 64 bit" :-).
        *Developer comment, 2020-02 "If the program is very large it is useful to have automatic tests, that abort if fail. This is implemented in ciforth with the word rREGRESS . It can also build data structure, because if I compile to a trunkey REGRESS is made into a comment".
        *[[http://comp.lang.forth.narkive.com/INwE2vlA/graspforth-a-new-forth-written-in-c|Narkive News Archive "comp.lang.forth.narkive.com", Thread "GraspForth ... a new forth written in C"]], 2004.
          *"**and eForth cannot be ported with GCC (AS) AS cannot have look-ahead ORG statements**. Of the Free Forth's eForth(or hForth) is the best assembly based solution *if* you have the commercial assembler for that micro .. and you have time for the port" :-(.
          *"As I read it, eforth even lets you generate a Forth for a target system using a different assembler, by only using its macros and ignoring its own code generation functionality. The idea then is to have the 30-ish pieces of machine code set up as bit patterns of data, with the rest of the high level Forth still provided as data as before. Of course, the time problem goes up, but it's a lot more practical than implementing a whole Forth for a virgin machine with no tools for it. Traditionally, of course, you would go the route of cross compiling from a different Forth platform".
      *[[http://home.hccnet.nl/a.w.m.van.der.horst/lina.html|Albert van der Horst "lina : a LInux NAtive Forth"]] - "This is one of the Forth's that can be generated by the ciforth generic system at github".
    *[[http://www.github.com/agsb/immu|GitHub "agsb / immu"]] - "An implementation of Forth using extended indirect thread code, with a **dictionary made up of machine-independent vocabularies**. Only those relating to bios, system, drives and primitives depend on the machine".
    *Lucky7, a FORTH Meta Language.
      *[[http://home.hccnet.nl/a.w.m.van.der.horst/lucky7.html|Albert van der Horst "Lucky7"]].
      *[[http://groups.google.com/g/comp.lang.forth/c/oY6c0G1GL2U?pli=1|Google Groups "comp.lang.forth", Thread "A new spring, a new language, the raspberry pico and lucky7"]], 2021-03.
      *[[http://comp.lang.forth.narkive.com/8ziQSiOj/lucky7-is-complete|Narkive News Archive "comp.lang.forth.narkive.com", Thread "lucky7 is complete"]], 2021-04 - "The little language lucky is about 100 lines inclusive tests on top of Forth".
  *"Itsy Forth".
    -Original implementation for MSDOS by John Metcalf.
      *[[http://www.retroprogramming.com/|John Metcalf, Retro Programming]]. 
        -( [[http://www.retroprogramming.com/2011/03/itsy-os-simple-preemptive-switcher.html|John Metcalf, Retro Programming "Itsy-OS Kernel: Preemptive Switcher & Memory Manager"]] ), 2011-03-30.
        -[[http://www.retroprogramming.com/2012/03/itsy-forth-1k-tiny-compiler.html|John Metcalf, Retro Programming "Itsy-Forth: the Outer Interpreter of a 1K Tiny Compiler"]], 2012-03-14.
        -[[http://www.retroprogramming.com/2012/04/itsy-forth-dictionary-and-inner.html|John Metcalf, Retro Programming "Itsy-Forth: the Dictionary and Inner Interpreter"]], 2012-04-03.
        -[[http://www.retroprogramming.com/2012/04/itsy-forth-primitives.html|John Metcalf, Retro Programming "Itsy Forth: Implementing the Primitives"]], 2012-04-14.
        -[[http://www.retroprogramming.com/2012/06/itsy-forth-compiler.html|John Metcalf, Retro Programming "Itsy Forth: The Compiler"]], 2012-06-23.   
        -[[http://www.retroprogramming.com/2012/09/itsy-documenting-bit-twiddling-voodoo.html|John Metcalf, Retro Programming "Itsy: Documenting the Bit-Twiddling & Voodoo Magic"]], 2012-09-04.
      *[[http://www.reddit.com/r/programming/comments/zdrmu/itsy_forth_a_language_in_just_978_bytes/|Reddit "/r/programming", Thread "Itsy Forth: a language in just 978 bytes"]].
    -[[http://www.github.com/kt97679/itsy-linux|GitHub "kt97679 / itsy-linux"]] - "Linux port of itsy forth by John Metcalf" ( MSDOS, Linux ).
    -[[http://www.github.com/dylanmc/itsy-forth|GitHub "dylanmc / itsy-forth"]] - "MacOS port of Linux port of itsy forth by John Metcalf " ( MSDOS, Linux, MacOSX ).
    -[[http://www.github.com/phf/itsy-forth|GitHub "phf / itsy-forth"]] - "Linux port of itsy forth by John Metcalf" ( MSDOS, Linux, MacOSX ).
  *[[http://www.github.com/drj11|GitHub "David Jones ( drj11 )"]].
    *The OpenSource [[http://www.github.com/drj11/sixtyforth|GitHub "drj11 /sixtyforth"]] - "A 64-bit implementation of FORTH written in 64-bit Intel assembler".
    *Video [[http://www.youtube.com/watch?v=iZ-5rBQS_p4|YouTube "PYCON UK 2017: What I learned building Forth in 64 bit Intel assembly"]].
  *The OpenSource "JonesForth".
    *[[http://rwmj.wordpress.com/tag/jonesforth/|WordPress "Richard WM Jones" - "Tag Archives: jonesforth"]].
    *[[http://web.archive.org/web/*/http://www.annexia.org/|Annexia.org - Free software and writings by Richard W.M. Jones]] ( - 2010-07-01 ).
      *[[http://web.archive.org/web/*/http://www.annexia.org:80/forth|Annexia.org "FORTH compiler and tutorial"]] ( - 2009-02-09 ).
        *"jonesforth.s.txt".
          *[[http://web.archive.org/web/*/http://www.annexia.org:80/_file/jonesforth.s.txt|Archive.org "A sometimes minimal FORTH compiler and tutorial for Linux / i386 systems. By Richard W.M. Jones"]] ( - 2009-02-09 ).
        *"jonesforth.f.txt".
      *[[http://www.lambda-the-ultimate.org/node/2452|Lambda the Ultimate "Minimal FORTH compiler and tutorial"]] - "Rich Jones writes: I wanted to understand how FORTH is implemented, so I implemented it and wrote a step-by-step tutorial on what every bit does".
      *Code repository [[http://git.annexia.org/?p=jonesforth.git;a=tree|Annexia.org Git "jonesforth"]].
  *[[http://www.mcforth.net/|Klaus Kohl-Schöpe]].
    *"mcForth".
    *[[http://mcforth.net/SmallForth/SmallForth.htm|SmallForth]].
    *[[http://www.mcforth.net/KK-Forth/KK-Forth.html|Klaus Kohl-Schöpe "KK Forth"]].
    *[[http://www.mcforth.net/S8-Forth/S8-Forth.html|Klaus Kohl-Schöpe "S8 Forth"]].
  *[[http://www.github.com/howerj/libforth|GitHub "howerj / libforth"]] - "libforth: A small Forth interpreter that can be used as a library written in c99".
  *The OpenSource Forth "MinForth".
    *[[http://minforth.sourceforge.net/|SourceForge "MinForth"]], [[http://www.sourceforge.net/projects/minforth/|SourceForge "MinForth"]].
    *[[http://wwww.github.com/andrewtholt/minforth|GitHub "andrewtholt / minforth"]].
    *[[http://www.forthlang.org/projects/minforth-v3-4/|Forth Language "MinForth v3.4.5"]].
    *[[http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/devel/forth/minforth/mfintro.pdf|ibiblio - The Public's Library and Digital Archive
 "MinForth"]] ( PDF ) - "a MINimal but complete FORTH system in C and ANS Forth for DOS, Windows and Linux operating systems".
    *[[http://web.archive.org/web/*/http://minforth.net.ms/|Archive "MinForth. a MINimalistic*) but complete FORTH system in C and Forth94 for DOS, Windows and Linux operating systems" ( minforth.net.ms )]] ( - 2011-08-22 ).
    *????
  *Brad Nelson.
    *[[http://www.github.com/bradn123|GitHub "bradn123"]].
      *[[http://github.com/bradn123/literateforth|GitHub "bradn123/literateforth"]].
    *[[http://bradn123.github.io/literateforth/out/|GitHub.io "Literate Forth Programs"]].
    *See [[systemdesign.html|System Design]], section "Literate Programming".
  *[[http://mecrisp.sourceforge.net/|SourceForge "Mecrisp - Native code Forth for MSP430 and ARM Cortex"]], [[http://www.sourceforge.net/projects/mecrisp|SourceForge "Mecrisp - A family of optimising native code Forth implementations for MSP430, ARM Cortex M, RISC-V RV32IM(C), MIPS M4K and FPGAs"]].
    *[[http://mecrisp-stellaris-folkdoc.sourceforge.io/|SourceForge "Mecrisp Stellaris Unofficial UserDoc"]].
    *[[http://mecrisp-stellaris-folkdoc.sourceforge.io/modern-forth-development-environment.html|SourceForge.IO "Mecrisp Stellaris Unofficial 1.0 documentation" - "A Modern Forth IDE"]].
    *[[http://mecrisp-across-folkdoc.sourceforge.io/|SourceForge "Mecrisp-Across Unofficial Documentation"]] - "Mecrisp-Across is a very strong optimising cross compiler running on ... ARM Linux and generating code for small classic MSP430 chips like MSP430F2012".
    *[[http://spyr.ch/twiki/bin/view/MecrispCube|Peter Schmid "Mecrisp-Cube, Forth for the STM32 Ecosystem"]].
    *[[http://www.hackaday.com/2017/04/19/moving-forth-with-mecrisp-stellaris-and-embello/|Hackaday "Moving Forth With Mecrisp-Stellaris And Embello"]].
      *[[http://www.github.com/hexagon5un/hackaday-forth|GitHub "hexagon5un / hackaday-forth"]] - "Mecrisp-Stellaris Forth, Hackaday Edition".
      *[[http://www.github.com/stlink-org/stlink|GitHub "stlink-org / stlink"]] - "Open source STM32 MCU programming toolset".
      *[[http://www.emb4fun.de/archive/stlink/|emb4fun "STLINK GDB Server"]].
      *[[http://www.github.com/rogerclarkmelbourne/Arduino_STM32/wiki/Maple-and-Maple-mini|GitHub "rogerclarkmelbourne / Arduino_STM32"]] - "Maple and Maple mini".
    *List of FORTH words of "mecrisp 2.0.7 for msp430g2553"<code>
--- Mecrisp Core --- hook-key? hook-key hook-emit? hook-emit key? key emit? emit hex. cr bl space spaces words .s h.s u.s .rs 2nip 2drop 2-rot 2rot 2tuck 2swap 2over 2dup 2>r 2r> 2r@ 2rdrop depth pick nip drop rot -rot swap tuck over ?dup dup >r r> r@ rdrop rdepth rpick sp@ sp! rp@ rp! >< arshift rshift lshift shr shl ror rol bic not xor or and true false clz .digit digit hold sign #S # #> <# u. . ud. d. f/ f* hold< f#S f# f. f.n number */ u*/ */mod m/mod m* um/mod ud/mod udm* d2/ d2* dshr dshl dabs dnegate d- d+ s>d du> du< d> d< d0< d0= d<> d= um* u/mod /mod mod / * compare skipstring ctype type s" c" ." ( count \ min max umin umax 2- 1- 2+ 1+ even 2* 2/ abs negate - + binary decimal hex base cells cell+ move fill cbit@ bit@ cxor! xor! cbic! bic! cbis! bis! 2constant constant 2variable variable nvariable buffer: +! c+! 2! 2@ c! c@ ! @ >in current-source source setsource tib query cexpect accept token parse ['] ' evaluate interpret hook-quit quit dictionarystart dictionarynext , c, align aligned [char] char string, literal, 2literal, inline, call, ret, flashvar-here here allot (create) compiletoram? compiletoram compiletoflash smudge compileonly inline immediate setflags find execute recurse postpone does> <builds create state ] [ ; : 0-foldable 1-foldable 2-foldable 3-foldable 4-foldable 5-foldable 6-foldable 7-foldable jump, then else if ahead repeat while until again begin exit k j i unloop leave +loop loop ?do do case ?of of endof endcase u<= u>= u> u< <= >= > < 0< 0<> 0= <> = dint eint eint? nop reset lpm0 lpm1 lpm2 lpm3 lpm4 wakeup hook-pause pause serial-key? serial-key serial-emit? serial-emit adc-vcc adc-1.5 analog eraseflashfrom eraseflash cflash! flash! irq-port1 irq-port2 irq-adc irq-timera1 irq-timera0 irq-watchdog irq-timerb1 irq-timerb0 irq-comp irq-tx irq-rx --- Flash Dictionary --- list searchfor searchcalls uses name. disasm-$ disasm-fetch u.4 u.ns u.h register. disasm-const disasm-jumps disasm-source disasm-destination disasm-string disasm-single disasm-double disasm memstamp disasm-step seec see cornerstone eraseflash
</code>
    *List of FORTH words of "mecrisp 2.0.7 for msp430g2553",  converted to uppercase<code>
--- Mecrisp Core --- HOOK-KEY? HOOK-KEY HOOK-EMIT? HOOK-EMIT KEY? KEY EMIT? EMIT HEX. CR BL SPACE SPACES WORDS .S H.S U.S .RS 2NIP 2DROP 2-ROT 2ROT 2TUCK 2SWAP 2OVER 2DUP 2>R 2R> 2R@ 2RDROP DEPTH PICK NIP DROP ROT -ROT SWAP TUCK OVER ?DUP DUP >R R> R@ RDROP RDEPTH RPICK SP@ SP! RP@ RP! >< ARSHIFT RSHIFT LSHIFT SHR SHL ROR ROL BIC NOT XOR OR AND TRUE FALSE CLZ .DIGIT DIGIT HOLD SIGN #S # #> <# U. . UD. D. F/ F* HOLD< F#S F# F. F.N NUMBER */ U*/ */MOD M/MOD M* UM/MOD UD/MOD UDM* D2/ D2* DSHR DSHL DABS DNEGATE D- D+ S>D DU> DU< D> D< D0< D0= D<> D= UM* U/MOD /MOD MOD / * COMPARE SKIPSTRING CTYPE TYPE S" C" ." ( COUNT \ MIN MAX UMIN UMAX 2- 1- 2+ 1+ EVEN 2* 2/ ABS NEGATE - + BINARY DECIMAL HEX BASE CELLS CELL+ MOVE FILL CBIT@ BIT@ CXOR! XOR! CBIC! BIC! CBIS! BIS! 2CONSTANT CONSTANT 2VARIABLE VARIABLE NVARIABLE BUFFER: +! C+! 2! 2@ C! C@ ! @ >IN CURRENT-SOURCE SOURCE SETSOURCE TIB QUERY CEXPECT ACCEPT TOKEN PARSE ['] ' EVALUATE INTERPRET HOOK-QUIT QUIT DICTIONARYSTART DICTIONARYNEXT , C, ALIGN ALIGNED [CHAR] CHAR STRING, LITERAL, 2LITERAL, INLINE, CALL, RET, FLASHVAR-HERE HERE ALLOT (CREATE) COMPILETORAM? COMPILETORAM COMPILETOFLASH SMUDGE COMPILEONLY INLINE IMMEDIATE SETFLAGS FIND EXECUTE RECURSE POSTPONE DOES> <BUILDS CREATE STATE ] [ ; : 0-FOLDABLE 1-FOLDABLE 2-FOLDABLE 3-FOLDABLE 4-FOLDABLE 5-FOLDABLE 6-FOLDABLE 7-FOLDABLE JUMP, THEN ELSE IF AHEAD REPEAT WHILE UNTIL AGAIN BEGIN EXIT K J I UNLOOP LEAVE +LOOP LOOP ?DO DO CASE ?OF OF ENDOF ENDCASE U<= U>= U> U< <= >= > < 0< 0<> 0= <> = DINT EINT EINT? NOP RESET LPM0 LPM1 LPM2 LPM3 LPM4 WAKEUP HOOK-PAUSE PAUSE SERIAL-KEY? SERIAL-KEY SERIAL-EMIT? SERIAL-EMIT ADC-VCC ADC-1.5 ANALOG ERASEFLASHFROM ERASEFLASH CFLASH! FLASH! IRQ-PORT1 IRQ-PORT2 IRQ-ADC IRQ-TIMERA1 IRQ-TIMERA0 IRQ-WATCHDOG IRQ-TIMERB1 IRQ-TIMERB0 IRQ-COMP IRQ-TX IRQ-RX --- FLASH DICTIONARY --- LIST SEARCHFOR SEARCHCALLS USES NAME. DISASM-$ DISASM-FETCH U.4 U.NS U.H REGISTER. DISASM-CONST DISASM-JUMPS DISASM-SOURCE DISASM-DESTINATION DISASM-STRING DISASM-SINGLE DISASM-DOUBLE DISASM MEMSTAMP DISASM-STEP SEEC SEE CORNERSTONE ERASEFLASH
</code>
    *Specialty with the wordlist:
      *LIST lists the FORTH wordlist like WORDS / VLIST with other FORTH implementation.
      *WORD lists a FORTH wordlist with extended informations, one FORTH word by line.
  *preForth & seedForth.
    *[[http://www.github.com/uho/preForth|GitHub "uho / preForth"]] => preForth & seedForth.
    *[[http://archive.fosdem.org/2020/schedule/track/minimalistic_experimental_and_emerging_languages/|FOSDEM 2020 "Minimalistic, Experimental and Emerging Languages devroom"]].
      *[[http://archive.fosdem.org/2020/schedule/event/forth_new_synthesis/|FOSDEM 2020 "Forth - The New Synthesis. Growing Forth with preForth and seedForth"]].
  *"Pygmy Forth".
    *[[http://pygmy.utoh.org/|Frank Sergeant]].
      *[[http://pygmy.utoh.org/forth.html|Frank Sergeant's Forth Page]].
        *[[http://pygmy.utoh.org/pygmyforth.html|Frank Sergeant's 'Pygmy Forth for the PC' Page]] - The OpenSource "Pygmy Forth" for MSDOS ( based on Charles Moore's cmFORTH ).
        *The OpenSource [[http://pygmy.utoh.org/riscy/|Riscy Pygness – Pygmy Forth for the ARM]], written in Tcl #.
        *[[http://groups.google.com/forum/#!topic/comp.lang.forth/edqa3CNrQhQ|Google Groups "comp.lang.forth", Thread "Riscy Pygness (Pygmy Forth for the ARM)"]], 2004.
    *[[http://developer.mbed.org/cookbook/MbedForth|ARM mbed Cookbook "MbedForth"]].
    *[[http://www.github.com/xunil/riscy-pygness|GitHub "xunil/riscy-pygness"]] - "STM32F4 port of Riscy Pygness Forth, originally by Frank Sergeant".
    *[[http://www.kudra.com/forth/|Kundra, Robert Sexton "Riscy Pygness for the Cortex-M3"]] - "Forth for TI/Stellaris Cortex-M3".
      *[[http://www.motherboardpoint.com/threads/has-someone-tried-to-add-interrupt-support-to-riscy-pygness.251581/|Motherboards Point, Thread "Has someone tried to add interrupt support to Riscy Pygness?"]] - "I just started to play with Riscy Pygness on target part of LPCXpresso 1769 board... The only thing which seems to be lacking is interrupt support. Well, I can write the interrupt service routine in assembly and add it to the kernel, and it will be the most efficient solution. However for interactive experiments it would be much nicer to have possibility to implement ISR as a Forth word. Such functionality is available in the latest version of [[http://amforth.sf.net/|amforth for ATmega's]]".
  *The OpenSource FORTH "Diaperglu64" by [[http://www.rainbarrel.com/|Rainbarrel.com]].
    *Author [[http://www.facebook.com/james.norris.5059|Facebook "James Norris"]].
    *"Diaperglu64 is a 64 bit Forth based script interpreter and compiler I developed in C/C++ and assembler that can host dynamic html pages under Apache and ISAPI. It also comes with an x86 assembler".
  *RETRO Forth & REVA Forth.
    *RETRO Forth.
      *The OpenSource FORTH [[http://www.forthworks.com/retro|ForthWorks by Charles Childers "RETRO"]] ( RETRO Forth ).
        *[[http://retro.tunes.org/|Tunes "RETRO"]], [[http://www.retroforth.org/|RETROFORTH.org]].
        *"A clean, elegant, and pragmatic dialect of Forth. It provides a simple alternative for those willing to make a break from legacy systems".
    *REVA Forth.
      *Ron Aaron.
        *The OpenSource Forth [[http://www.ronware.org/dev/p.sh/reva/|Ron Aaron "Reva"]].
          *To get the current source code by Ron, you have to ask Ron Aaron for a free account?!.
          *"Reva currently runs on Windows, Mac OS/X and Linux. It only runs on 32-bit 'x86' family processors, at the moment, although it will run on 64-bit machines if they have 32-bit application support".
          *[[http://www.ronware.org/dev/p.sh/reva/wiki?name=Tutorial|Ron Aaron's Reva "Tutorial"]] - "Reva is a derivative of RetroForth, and is not -- nor is it intended to be -- ANS Forth compliant".
        *[[http://www.github.com/ronaaron/reva|GitHub "ronaaron / reva"]] - "Reva Forth (public-domain x86 Forth)".
      *Bob Armstrong.
        *[[http://www.cosy.com/|Bob Armstrong, Coherent Systems ( CoSy )]].
          *"CoSy is the only APL in 'Open to the chip' Forth".
          *"I've become disenamoured with particularly Github ... and Facebook ...  and have reverted to simple open directories and email lists on the CoSy" ( 2021 ).
          *[[http://www.cosy.com/CoSy/|Coherent Systems CoSy - In the Begining Is the Dictionary]] - Download of "CoSy.zip", based on "Reva.exe".
        *[[http://www.github.com/CoSyBob|GitHub "Bob Armstrong ( CoSyBob )"]].
          *[[http://www.github.com/CoSyBob/CoSy|GitHub "CoSyBob / CoSy"]] - "CoSy APL NoteComputing environment in open x86 Reva Forth".
  *The OpenSource FORTH system [[http://www.github.com/seanpringle/reforth|GitHub "seanpringle / reforth"]] - "Enter Reforth! It is small, familiar, still a Forth. Not an ANS-Forth out of the box, but...".
  *The OpenSource FORTH system [[http://www.github.com/cesarblum/sectorforth|GitHub "cesarblum/sectorforth"]] - "sectorforth is a 16-bit x86 Forth that fits in a 512-byte boot sector".
    *Resources:
      *[[http://groups.google.com/g/comp.lang.forth/c/NS2icrCj1jQ|Google Groups "comp.lang.forth", Thread "What is Minimum Assembly Coded Words set in Forth?"]].
      *[[http://www.github.com/nanochess|GitHub "Oscar Toledo"]] - Boot sector game, boot sector operating system.
  *The OpenSource FORTH system "Swapforth".
    *[[http://www.github.com/jamesbowman|GitHub "James Bowman"]].
      *[[http://www.github.com/jamesbowman/swapforth|GitHub "jamesbowman / swapforth"]] - "Swapforth is a cross-platform ANS Forth".
      *[[http://www.github.com/jamesbowman/swapforth/tree/master/esp8266|GitHub "jamesbowman / swapforth / esp8266"]].
      *[[http://www.github.com/ForthHub/discussion/issues/39|GitHub "FortHub", Issue "Forth for ESP32 #39"]] - "Yes, swapforth has a port".
  *"VolksForth".
    *[[http://www.github.com/forth-ev/|GitHub "Forth-Gesellschaft eV"]].
    *[[http://www.github.com/forth-ev/VolksForth|GitHub "forth-ev/VolksForth"]].
    *[[http://volksforth.sourceforge.net/|SourceForge "VolksForth"]], [[http://www.sourceforge.net/projects/volksforth|SourceForge "VolksForth"]].
    *[[http://www.github.com/forth-ev/VolksForth|GitHub "forth-ev / VolksForth"]].
      *"Some modern Forth Systems were influenced by or were derived from volksFORTH (GNU-Forth, bigForth)".
      *Implementations: 
        -volksFORTH MS-DOS (Intel x86 Architecture i8086-ia64).
        -volksFORTH 6502 (Commodore 64, Commodore Plus 4, Commodore PET, Apple 1, Atari XL/XE).
          *Installation and operation with the C64 emulator "C64 Emulator":
            *It is not useful to create a "Game Exe" by the menu command "Configuration / Misc / Create Game Exe" and selecting the disk image "vforth4_1.d64" as application, as loading a disk causes the error message "?DEVICE NOT PRSENT ERROR".
            *Instead, load a the disk image "vforth4_1.d64" by menu command "Configuration / Load File". The loaded disk is be available even after executing the "Reset" menue command of the emulator.
            *At C64-BASIC promt:
              *Press "F1" key. It executes the C64-BASIC command 'LOAD"$",8'. 
              *"LIST" lists the directory of the loaded volksFORTH disk.
              *Execute 'LOAD"RUNME",8' to read the readme text.
              *Execute 'LOAD"C64-VOLKSFORTH83",8' to load volksFORTH.
              *Execute "RUN" to start volksFORTH.
          *[[http://www.github.com/forth-ev/VolksForth/blob/master/6502/C64/disks/vforth4_3.fth|GitHub "forth-ev / VolksForth / 6502 / C64 / disks / vforth4_3.fth"]] - C64 Tasker, from block 57 onwards.
        -65816 (Western Design Center - Mensch Computer, C-One).
        -volksFORTH Z80 (CP/M, Amstrad CPC), Amstrad NC100, Cambridge Computer Z88. 
        -68000 (Atari ST).
          *Installation and first-time operation with the ATARI-ST emulator "Hatari":
            *Copy the contents of the "Harddisk" directory of the volksForth distribution archive on your host filesystem.
            *Press "F12" to enter the Hatari main menu.
            *Select "Atari screen" to configure the graphics resolution, e.g. to switch to "Mono". Press the button "Back to main menu".
            *Select "Hard disks". Click on "GEMDOS drive: Browse" to select the "Harddisk" directory on your host filesystem. Press the button "Back to main menu".
            *Optional saving of the configuration.
              *Select "Save config". Select a directory with the configuration file "hatari.nvram", click on the "hatari.nvram" filename label and press the button "ok". The default file path on Win10 is "C:\users\<user>\AppData\Local\Hatari\hatari.nvram". 
              *As with "Hatari 2.3.1", however, by saving a configuration, neither the screen size nor the GEMDOS drive can be restored by this.
          *Operation with the ATARI-ST emulator "Hatari":
            *Press "F12" to enter the Hatari main menu.
            *<del>Select "Load config". Select a directory and press the button "ok"</del>.
            *On the ATARI-ST desktop of the ATARI-ST emulation, open drive "C:" and double-click on the icon "4TH.PRG".
          *[[http://www.github.com/forth-ev/VolksForth/blob/master/sources/AtariST/TASKER.fth|GitHub "forth-ev / VolksForth / sources / AtariST / TASKER.fth"]].
    *[[http://wiki.forth-ev.de/doku.php/projects:historischedokumente:volksforth|Forth e.V. Wiki "VolksFORTH - Historische Dokumente"]].
    *[[http://wiki.forth-ev.de/doku.php/words:volksforth_kernel|Forth e.V. Wiki "Volksforth Kernel 3.80"]].
    *[[http://www.c64-wiki.de/wiki/volksFORTH|C64 Wiki "volksFORTH"]] - "volksFORTH (ehemals ultraFORTH)... Zeitweise war die Weiterentwicklung unterbrochen, seit dem Jahr 2005 wurde sie wieder aufgenommen und wird wieder von Jahr zu Jahr überarbeitet. Die aktuelle Version ist 3.80.1. Zur Zeit wird an der Version 3.9.3 gearbeitet. Die kommende Version 4.0 soll dann weitgehend mit dem Forth2012-Standard kompatibel sein. volksFORTH kann kostenlos genutzt werden und steht unter BSD-Lizenz. Die Programmiersprache volksForth beinhaltet den gesamten Forth-83 Standard, sowie ergänzend viele ANSI Forth 94 Erweiterungen".
    *[[http://www.facebook.com/groups/forthprogrammingretrodev/posts/1252971931777959/|Facebook "FORTH PROGRAMMING / EARLY FORTH SYSTEMS & DEVELOPMENT", Thread "How to handle parser recursion when dealing compiled Forth words?"]] - " The minimal CP/M VolksForth kernel has access to the first file that you give as parameter on the command line. So if you run "volks4th fileint.fb" then all block access goes to the block file fileint.fb. If you then, inside VolskForth, run '1 load' then you have the full file interface available, with USE, INCLUDE etc. Without fileint.fb loaded, you have access to only that one file passed from the CP/M command line".
  *Wolf Wejgaard.
    *[[http://www.facebook.com/groups/2225595150855239/user/1302066651/|Facebook "Wolf Wejgaard"]].
    *[[http://holonforth.com/|HolonForth]] 
      *"The first Holon system had a structure of modules, groups and (Forth) words", inspired by the hierarchical presentation of classes in Smalltalk IDEs.
      *"Handling Source Code in a Browser", "Handling Source in a Database". "Why do programmers still edit source code in linear text files? Why not in a CMS? The CMS can write source files for the compiler. And it gives you new options to present and handle complete programs in a browser, clearly structured like a book".
      *[[http://www.holonforth.com/dossystems.html|HolonForth "DOS Forth"]].
    *[[http://www.github.com/wejgaard|GitHub "Wolf Wejgaard"]].
      *[[http://www.github.com/wejgaard/Holonforth-DOS|GitHub "wejgaard / Holonforth-DOS"]] - "HolonForth - Forth IDE's inspired by Smalltalk", "First-generation of HolonForth. - Developing code in browsers inspired by Smalltalk, using book-like structures with Modules, Groups, and Words".
      *[[http://www.github.com/wejgaard/TclForth|GitHub "wejgaard / TclForth"]].
  *[[http://www.github.com/frenchie68/79Forth|GitHub "frenchie68 / Z79Forth"]] - "Z79Forth for a Hitachi 63C09 based single board computer, aka the 'Z79Forth Reference Board'".
    *Autor: [[http://www.facebook.com/francois.laagel|Facebook "Francois Laagel"]].
      *"The reference 'canonical' (VM based implementation) remains CamelForth by Brad Rodriguez".
      *Z79Forth **implements a subset of FORTH79**. Just the FORTH79 nucleus words **U*** and **U/** are missing.
    *[[http://en.wikipedia.org/wiki/Hitachi_6309|EN.Wikipedia "Hitachi 6309"]].
    *List of the about 200 FORTH words ( Developer comment: "All the stuff above @ is loaded from block storage. You can safely ignore it" ):<code>
TO VALUE : H. BSA BS BFBSADR MRUBUFA BUF1 BUF0 FLAGS>STR FLAGS-TABLE DIS .SRC .TAB HDMP OPCODE-LOOKUP INSTR>SOURCE INSTR>OPSIZE OPC-TABLE " TAB NB F12TESTLOAD SAPINLOAD HANLOAD PHRPALLOAD PALFLTLOAD DISLOAD LIFELOAD VILOAD @ ? C@ ! C! -! 1+! +! HERE LAST CELLS MOVE CMOVE CMOVE> BLANKS FILL ALLOT , C, -ROT ROT ROLL OVER PICK SWAP DROP DUP NIP TUCK ?DUP .S .' DUMP HEX DECIMAL OCTAL BIN BASE STATE VLIST PAYLOAD S */MOD */ /MOD MOD / 2/ 2* * SHIFT 2 1 0 2- 1- - 2+ 1+ + EMIT KEY KEY? MS CONTINUED --> THRU LOAD INTERPRET ACCEPT EXPECT -TRAILING COUNT TYPE PAD CR PAGE SPACES SPACE BL U.R .R U. . <# # #S HOLD SIGN #> 2@ 2! 2DUP 2DROP 2SWAP 2OVER D< D0= DNEGATE D+ S" ." \ SOURCE WORD CHAR [CHAR] BYE EXECUTE FORGET RECURSE ; : COMPILE, POSTPONE ['] [ ] FIND ABORT QUIT K J' J I' R@ I LEAVE R R> REPEAT WHILE END UNTIL EXIT AGAIN BEGIN NEGATE ABS MIN MAX < WITHIN U< U> NOT 0= 0< 0> INVERT COM AND OR XOR <= <> = THEN ELSE UNLESS IF UNLOOP +LOOP LOOP DO ICHECK MONITOR RESTRICT IMMEDIATE VARIABLE CONSTANT LITERAL DOES> CREATE DEPTH RCLR NCLR S>DLIST RTC! RTC@ TICKS INDEX LINE SCR IN BLK BLOCK BUFFER UPDATE FLUSH SAVE-BUFFERS EMPTY-BUFFERS
</code>
  *[[http://www.github.com/tabemann/zeptoforth|GitHub "tabemann / zeptoforth"]] - "A not-so-small forth for Cortex-M".
    *[[http://www.hackaday.io/project/170826-zeptoforth|Hackaday, Travis Bemann "zeptoforth.A Cortex-M native code Forth with a kernel written in Thumb-2 assembly"]].
    *[[http://www.opensourcelibs.com/lib/zeptoforth|Open Source Libs "Zeptoforth - A small forth for Cortex-M"]].
      *[[http://www.reddit.com/user/tabemann/|Reddit "/user/tabemann"]].
    *[[http://www.reddit.com/r/Forth/comments/g081l2/zeptoforth_an_srtnci_forth_for_cortexm_mcus/|Reddit "zeptoforth, an SRT/NCI Forth for Cortex-M MCUs"]].
=== CamelForth, an important FORTH Systems originally implemented Assembly Language, then ported to C ===
== CamelForth by Brad Rodriguez ==
  *[[http://www.camelforth.com/|CamelForth]] - "A Forth implementation for embedded microprocessors (8051, 8086, Z80, and 6809, with more to come)".
  *[[http://www.camelforth.com/page.php?3|CamelForth "Documentation"]].
    *"Moving Forth: the original CamelForth articles. This series originally appeared in The Computer Journal. Accompanying source code can be found on the CamelForth page".
    *"Multitasking 8051 CamelForth".
  *Forks:
    *[[http://www.seanet.com/~karllunt/camel80.htm|Karl Lunt "Z180 Forth system"]].
    *[[http://www.hytherion.com/beattidp/comput/z80forth.htm|Douglas Beattie, Jr "Camel_FORTH for the Z80, Z180, Z380/Z382, and eZ80; Z80 hFORTH"]].
== CamelForth in C by Brad Rodriguez ==
  *[[http://www.camelforth.com/download.php?view.35|CamelForth "CamelForth in C v0.1"]].
  *Forks:
    *[[http://www.github.com/wa1tnr/camelforth-rp2040-aU|GitHub "wa1tnr / camelforth-rp2040-aU"]].
== Resources ==
  *Experts told me, that CamelForth is case sensitive, in opposite to most FORTHs.
=== eForth, an important FORTH Systems originally implemented Assembly Language, then ported to C, then ported to Javascript, C++, Java in the 2020th ===
== bForth & eForth Design Principles ==
  *Chen-Hanson Ting told me in 2021-08:
    *The original Forth of Chuck Moore of 1970 had the concept of a virtual memory system, i.e. the concept to read and write tapes, to save binary data to a file system.
    *eForth has no idea of files or any other mass storage systems. Files and blocks are not ( part of ) eForth. eForth has not to deal with mass storage.
    *Instead, eForth  implements serial I/O only. The source and destination of data must be a serial port. 
    *An implemented serial port, as destionation of serial data, might catch the data and save the data in files, on a local file system.
    *eForth just processes a stream of text ( the traditional Unix shell & Tcl/Tk data processing idea ).
  *Experts told me, that eForth is not a "full Forth", but a very limited minimal Forth.
== bForth by Bill Muench, eForth by Bill Muench & Chen-Hanson Ting ==
  *Bill Muench.
    *The OpenSource FORTH system [[http://web.archive.org/web/*/http://www.baymoon.com/~bimu/forth/|Archive.org "Bill Muench 'eForth'"]] ( - 2011-08-08 ) - "eForth allows me to make a complete Forth system with about 30 very simple machine code routines".
    *[[http://web.archive.org/web/*/http://www.calcentral.com/~forth/forth/|Archive.org "Bill Muench 'eForth. A simple model Forth system'"]], 2015-08-16.
    *[[http://biged.github.io/6502-website-archives/|GitHub.IO "Archives of 6502-related websites"]].
      *[[http://biged.github.io/6502-website-archives/lowkey.comuf.com/|GitHub.IO "Archives of 6502-related websites" - "Bruce Clark's site formerly at lowkey.comuf.com"]].
        *[[http://biged.github.io/6502-website-archives/lowkey.comuf.com/eforth.htm|GitHub.IO Archives of 6502-related websites - "65xx eForth"]] - "65xx eForth download"
  *Chen-Hanson Ting.
    *[[http://www.forth.org/svfig/kk/07-2010.html|FORTH.org "July 2010 Meeting Notes"]] - "STM8S-Discovery Board - CH Ting".
    *[[http://wiki.forth-ev.de/doku.php/en:projects:430eforth:start|Forth-eV Wiki "eForth - a small Forth in many incarnations by Dr. Chen-Hanson Ting"]].
    *[[http://wiki.forth-ev.de/doku.php/en:projects:430eforth:start|Forth-eV Wiki "eForth - a small Forth Implementation by C.-H. Ting"]].
    *Documentation:
      *[[http://web.archive.org/web/*/http://www.eforth.com.tw/academy-n/library.htm|Archive.org "eForth Technology - Library"]] ( - 2007-10-21 ).
      *[[http://www.forth.org/OffeteStore/OffeteStore.htmlm|Forth Interest Group ( FIG ) "Offete Store"]].
        *[[http://www.forth.org/OffeteStore/1013_eForthAndZen.pdf|Forth Interest Group ( FIG ) "Offete Store" - "eForth and Zen - Second Edition - 2013"]].
          *"eForth Words. There are 190 high level words in eForth, built on the 31 low level primitive words... Among the 221 words in eForth, 134 words can be classified as commonly useful words and 87 words are the system words".
              *"The set of 134 common Forth words contains the Forth words which are universally supported in most Forth systems. To use Forth fluently, you have to fully understand these words and use them efficiently to compose words which will solve your applications. They include data stack and return stack words, memory accessing words, math and logical words, control structure words, defining words, and some utility words".
              *"The set of 87 system words are defined to support the construction of the outer interpreter in eForth".
          *eForth Word Set 
            *Device Dependent I/O Words: <code>BYE  ?RX  TX!  !IO</code>
            *Kernel Words: <code>doLIT  doLIST  EXIT  EXECUTE  next  ?branch  branch  !  @  C!  C@ RP@  RP!  R>  R@  >R SP@  SP!  DROP  DUP  SWAP  OVER  0<  AND  OR  XOR  UM+</code>
            *System Variables: <code>doVAR  UP  doUSER  SP0  RP0 '?KEY  'EMIT  'EXPECT  'TAP  'ECHO  'PROMPT  BASE  tmp  SPAN  >IN  #TIB  CSP  'EVAL  'NUMBER  HLD  HANDLER  CONTEXT  CURRENT  CP  NP  LAST</code>
            *Common Functions: <code>doVOC  FORTH  ?DUP  ROT  2DROP  2DUP  +  NOT  NEGATE  DNEGATE  -  ABS  =  U<  <  MAX  MIN WITHIN</code>
            *Divide and Multiply: <code>UM/MOD  M/MOD  /MOD  MOD  /  UM*  *  M*  */MOD  */</code>
            *Miscellaneous: <code>CELL+  CELL-  CELLS  ALIGNED  BL  >CHAR  DEPTH  PICH</code>
            *Memory Access: <code>+!  2!  2@  COUNT  HERE  PAD  TIB  @EXECUTE  CMOVE  FILL  -TRAILING  PACK$</code>
            *Numeric Output: <code>DIGIT  EXTRACT  <#  HOLD  #  #S  SIGN  #>  str  HEX  DECIMAL</code>
            *Numeric Input <code>DIGIT?  NUMBER?</code>
            *Basic I/O: <code>?KEY  KEY  EMIT  NUF?  PACE  SPACE  TYPE  CR  do$  $"|  ."|  .R  U.R  U.  .  ?</code>
            *Parsing: <code>parse  PARSE  .(  (  \  CHAR  TOKEN  WORD</code>
            *Dictionary Search: <code>NAME>  SAME?  find  NAME?</code>
            *Terminal Response <code>^H  TAP  kTAP  accept  EXPECT  QUERY</code>
            *Error Handling: <code>CATCH  THROW  NULL$  ABORT  abort" </code>
            *Text Interpreter: <code>$INTERPRET  [  .OK  ?STACK  EVAL</code> 
            *Shell: <code>PRESET  xio  FILE  HAND  I/O  CONSOLE  QUIT</code> 
            *Compiler: <code>'  ALLOT  ,  [COMPILE]  COMPILE  LITERAL  $."  RECURSE</code>  
            *Structures: <code>FOR  BEGIN  NEXT  UNTIL  AGAIN  IF  AHEAD  REPEAT  THEN  AFT  ELSE  WHILE  ABORT"  $"  ."</code>  
            *Name Compiler: <code>?UNIQUE  $,n</code>
            *Forth Compiler: <code>$COMPILE  OVERT  ;  ]  call,  :  IMMEDIATE</code>   
            *Defining Words: <code>USER  CREATE  VARIABLE</code> 
            *Tools:<code> _TYPE  dm+  DUMP  .S  !CSP  ?CSP  >ANME  .ID  SEE  WORDS</code> 
            *Hardware Reset:<code>VER  hi  'BOOT  COLD</code> 
      *[[http://sites.google.com/view/forth-books/home/forth-books/dr-tings-collection15|Google Sites "Dr.Tings Collection of offete"]].
      *[[http://web.archive.org/web/*/http://offete.com/|Archive.org "Offete Enterprises"]] ( - 2015-09-16 ).
        *[[http://web.archive.org/web/*/http://www.offete.com/files/|Archive.org "Offete Enterprises - Files"]] ( 2015-04-16 ).
          *[[http://web.archive.org/web/*/http://www.offete.com/files/zeneForth.htm|Archive.org "Offete Enterprises - eForth Overview"]] ( 2015-05-23 ).
            *"This eForth model consists of about 200 words, of which only 31 are primitive words". 
            *eForth Kernel:
              *"System interface: BYE, ?rx, tx!, !io".
              *"Inner interpreters: doLIT, doLIST, next, ?branch,  branch, EXECUTE, EXIT".
              *"Memory access: ! , @, C!, C@".
              *"Return stack: RP@, RP!,  R>, R@, >R".
              *"Data stack: SP@, SP!, DROP, DUP, SWAP, OVER".
              *"Logic: 0<,  AND, OR, XOR".
              *"Arithmetic: UM+".
      *[[http://www.github.com/chengchangwu/rtforth/blob/master/doc/eforth-words.f|GitHub "chengchangwu / rtforth / eforth-words.f"]].
        ***List of eForth words :-), with implementation in FORTH :-)**. 
        *But "Copyright Bill Muench All rights reserved. Permission is granted for non-commercial use, provided this notice is included. Contact Bill Muench concerning commercial use".
== eForth by Thomas Göppel ==
  *[[http://www.github.com/TG9541|GitHub "TG9541 ( Thomas )"]].
    *[[http://www.github.com/TG9541/stm8ef|GitHub "TG9541 / stm8ef"]] - "STM8 eForth: a user-friendly Forth for cheap µCs with docs", "An interactive Forth system for the full range of STM8 8-bit MCUs".
      *[[http://www.github.com/TG9541/stm8ef/wiki/STM8-eForth-Example-Code|GitHub Wiki "TG9541 / stm8ef" - "STM8 eForth Example Code"]].
      *[[http://www.github.com/TG9541/stm8ef/wiki/STM8-eForth-Idle-Task|GitHub Wiki "STM8 eForth" - "STM8 eForth Idle Task"]].
  *[[http://www.hackaday.io/TG9541|Hackaday "Thomas"]].
    *[[http://www.hackaday.com/tag/stm8/|Hackaday "stm8. 12 Articles"]].
    *[[http://www.hackaday.io/projects?tag=stm8|Hackaday "36 Projects tagged with 'stm8'"]].
      *[[http://hackaday.io/project/16097-eforth-for-cheap-stm8s-gadgets|Hackaday "eForth for cheap STM8S gadgets"]].
  *Experts told me in 2021-08, that this eForth system was extended from its very limited minimal origin to an almost "full" ANS94 Forth, by adding layers of compatible words, and testing it for compatibility with ANS94.
  *[[http://en.wikipedia.org/wiki/STM8|EN.Wikipedia "ST8"]].
== Arduino Forth based on eForth ==
  *[[http://www.youtube.com/watch?v=P6rMFcwik3M|YouTube "Arduino USBasp Programmer / Simple Forth Programming"]] - "This video will describe how to program a hex file into into the ATmega328p microcontroller using an USBasp programmer. AVRdudess and Zadig software will be covered. Interactive Arduino Forth will run and simple programming will be demonstrated... eForth documentation...".
  *[[http://www.youtube.com/watch?v=PY01_9dANd8|Forth "Interactive Programming / Micro-controllers For Beginners"]] - "This video is a primer on Interactive Programming for microcontrollers which is based on the Forth programming language".
  *[[http://www.youtube.com/watch?v=bNB7GeTDWUI|YouTube "Arduino applied sensor project - Forth programming #arduino uno #forth"]].
== MicroEforth ( µEforth ) & ESP32forth in C by Brad Nelson & Chen-Hanson Ting ==
  *Target: ESP32.
    *[[http://esp32forth.appspot.com/|Brad Nelson: ESP32Forth & MicroEForth ( uEForth )]].
      *[[http://esp32forth.appspot.com/ESP32forth.html|Brad Nelson "ESP32forth"]] - Download "STABLE RELEASE".
    *[[http://esp32forth.wordpress.com/|Wordpress "esp32forth-home"]].
    *Blog [[http://esp32forth.wordpress.com/blog/|Wordpress "esp32forth-home" - "esp32forth BLOG"]].
      *"Topic ESP32forth from the Forth2020 channel will land here helping information is ordered + easier to access".
      *[[http://drive.google.com/file/d/1gCiXRdCE6TXtlKqRzv2wXDXZK3XlAcKb/|Google Drive "ESP32forth.zip"]] - "ESPforth 7".
    *[[http://sites.google.com/view/forth2020/eforth-for-esp32|Google Site, Forth2020 "eForth for ESP32"]].
    *[[http://esp32forth.appspot.com/ESP32forth.html|Appspot "ESP32forth"]].
    *[[http://sites.google.com/view/esp32forth/projects-1|Google Sites "Esp32forth - Projects"]].
  *Target: MicroEforth ( uEForth ) for Windows, Linux on 80x86, a64.
    *[[http://esp32forth.appspot.com/|Brad Nelson: ESP32Forth & MicroEForth ( uEForth )]].
      *[[http://eforth.appspot.com/windows.html|Brad Nelson "µEforth for Windows"]].
      *[[http://eforth.appspot.com/linux.html|Brad Nelson "µEforth for Linux"]].
    *[[http://www.github.com/flagxor/espforth|GitHub "flagxor / espforth"]].
      *[[http://www.github.com/flagxor/eforth/tree/main/ueforth|GitHub "eforth/tree/main/ueforth"]].
        *"Complete Unprocessed Source Code (under ueforth/)".
        *"This EForth inspired implementation of Forth is bootstraped from a minimalist C kernel".
    *[[http://eforth.storage.googleapis.com/releases/archive.html|Release Archive - Prior Releases of uEForth]] by Brad Nelson - "Archive-page of esp32forth where also a 64 and 32 bit version of forth is available as uEf64 and uEf32 as a .exe".
  *[[http://www.youtube.com/watch?v=C2zH9SI_OGY|YouTube, Silicon Valley Forth Interest Group "2020-11-21 - EForth Implemented in C - Brad Nelson"]].
  *Forks.
    *[[http://www.github.com/lkoepsel/esp32Forth|GitHub "lkoepsel / esp32Forth"]] - Improved fork of ESP32Forth 6.5.
  *Resources.
    *Dr. Ting told me in 2021-08: About 1700 lines of C code.
    *[[http://www.facebook.com/groups/2225595150855239/permalink/3554221187992622/|Facebook "Forth2020 Users-Group", Thread "New web page for ESP32 eforth installation with all the necessary steps (short version) + the full manual, sources .ino, all in single place !" by Peter Forth]].
    *[[http://www.arduino-forth.com/article/ESP32_lexiqueESP32forthV70|FORTH & Arduino ESP32 "Lexicon of words ESP32forth v 7.0"]].
  *Lists of FORTH words.
    -Target: ESP32 system, version "ESPforth v.7.05".
      -List of FORTH words, as listed by WORDS. The word OK appears twice in the list<code>
forth editor list copy thru load flush update empty-buffers buffer block save-buffers default-use use open-blocks block-id scr block-fid telnetd bterm timers registers webui login web-interface streams ; { words vlist order see .s startswith? str= :noname SMUDGE forget dump assert reset revive startup: remember restore save dump-file include included rtos interrupts sockets Serial ledc SPIFFS SD_MMC WiFi WebServer Wire resize free allocate ok LED OUTPUT INPUT HIGH LOW page tone freq duty adc pin ms start-task task pause tasks internals sealed also only transfer{ }transfer transfer definitions vocabulary [IF] [ELSE] [THEN] DEFINED? ok quit evaluate prompt refill tib echo fill cmove> cmove z>s s>z r| r" z" ." s" $place n. ? . u. binary decimal octal hex str #> sign #s # hold <# extract pad hld cr space emit bye key? key type is defer +to to value throw catch handler j i loop +loop leave unloop ?do do next for depth rp0 sp0 variable constant postpone >body >flags >link >link& >name abs max min aft repeat while else if then ahead until again begin literal [char] char ['] ' ] [ c, , align aligned allot here context current base state >in #tib 'tib 2! 2@ 2dup 2drop cell/ cells cell+ \ +! 4/ 4* 2/ 2* 1- 1+ nl bl 0<> <> = >= <= > < -rot rot - negate invert mod / /mod * */ rdrop nip ( ; EXIT : IMMEDIATE DOES> CREATE S>NUMBER? PARSE FIND CELL EXECUTE R@ R> >R RP! RP@ SP! SP@ C! L! ! C@ L@ @ DROP OVER SWAP DUP XOR OR AND RSHIFT LSHIFT */MOD U/MOD + 0< 0= timer_isr_register accept SD_MMC.begin MDNS.begin FILE-SIZE RESIZE-FILE REPOSITION-FILE FILE-POSITION READ-FILE WRITE-FILE DELETE-FILE CREATE-FILE OPEN-FILE FLUSH-FILE CLOSE-FILE BIN W/O R/W R/O TERMINATE MS-TICKS dacWrite pulseIn analogRead digitalRead digitalWrite pinMode 
</code>
      -List of FORTH words, converted to lowercase<code>
forth editor list copy thru load flush update empty-buffers buffer block save-buffers default-use use open-blocks block-id scr block-fid telnetd bterm timers registers webui login web-interface streams ; { words vlist order see .s startswith? str= :noname smudge forget dump assert reset revive startup: remember restore save dump-file include included rtos interrupts sockets serial ledc spiffs sd_mmc wifi webserver wire resize free allocate ok led output input high low page tone freq duty adc pin ms start-task task pause tasks internals sealed also only transfer{ }transfer transfer definitions vocabulary [if] [else] [then] defined? ok quit evaluate prompt refill tib echo fill cmove> cmove z>s s>z r| r" z" ." s" $place n. ? . u. binary decimal octal hex str #> sign #s # hold <# extract pad hld cr space emit bye key? key type is defer +to to value throw catch handler j i loop +loop leave unloop ?do do next for depth rp0 sp0 variable constant postpone >body >flags >link >link& >name abs max min aft repeat while else if then ahead until again begin literal [char] char ['] ' ] [ c, , align aligned allot here context current base state >in #tib 'tib 2! 2@ 2dup 2drop cell/ cells cell+ \ +! 4/ 4* 2/ 2* 1- 1+ nl bl 0<> <> = >= <= > < -rot rot - negate invert mod / /mod * */ rdrop nip ( ; exit : immediate does> create s>number? parse find cell execute r@ r> >r rp! rp@ sp! sp@ c! l! ! c@ l@ @ drop over swap dup xor or and rshift lshift */mod u/mod + 0< 0= timer_isr_register accept sd_mmc.begin mdns.begin file-size resize-file reposition-file file-position read-file write-file delete-file create-file open-file flush-file close-file bin w/o r/w r/o terminate ms-ticks dacwrite pulsein analogread digitalread digitalwrite pinmode
</code>
      -List of FORTH words, converted to uppercase<code>
FORTH EDITOR LIST COPY THRU LOAD FLUSH UPDATE EMPTY-BUFFERS BUFFER BLOCK SAVE-BUFFERS DEFAULT-USE USE OPEN-BLOCKS BLOCK-ID SCR BLOCK-FID TELNETD BTERM TIMERS REGISTERS WEBUI LOGIN WEB-INTERFACE STREAMS ; { WORDS VLIST ORDER SEE .S STARTSWITH? STR= :NONAME SMUDGE FORGET DUMP ASSERT RESET REVIVE STARTUP: REMEMBER RESTORE SAVE DUMP-FILE INCLUDE INCLUDED RTOS INTERRUPTS SOCKETS SERIAL LEDC SPIFFS SD_MMC WIFI WEBSERVER WIRE RESIZE FREE ALLOCATE OK LED OUTPUT INPUT HIGH LOW PAGE TONE FREQ DUTY ADC PIN MS START-TASK TASK PAUSE TASKS INTERNALS SEALED ALSO ONLY TRANSFER{ }TRANSFER TRANSFER DEFINITIONS VOCABULARY [IF] [ELSE] [THEN] DEFINED? OK QUIT EVALUATE PROMPT REFILL TIB ECHO FILL CMOVE> CMOVE Z>S S>Z R| R" Z" ." S" $PLACE N. ? . U. BINARY DECIMAL OCTAL HEX STR #> SIGN #S # HOLD <# EXTRACT PAD HLD CR SPACE EMIT BYE KEY? KEY TYPE IS DEFER +TO TO VALUE THROW CATCH HANDLER J I LOOP +LOOP LEAVE UNLOOP ?DO DO NEXT FOR DEPTH RP0 SP0 VARIABLE CONSTANT POSTPONE >BODY >FLAGS >LINK >LINK& >NAME ABS MAX MIN AFT REPEAT WHILE ELSE IF THEN AHEAD UNTIL AGAIN BEGIN LITERAL [CHAR] CHAR ['] ' ] [ C, , ALIGN ALIGNED ALLOT HERE CONTEXT CURRENT BASE STATE >IN #TIB 'TIB 2! 2@ 2DUP 2DROP CELL/ CELLS CELL+ \ +! 4/ 4* 2/ 2* 1- 1+ NL BL 0<> <> = >= <= > < -ROT ROT - NEGATE INVERT MOD / /MOD * */ RDROP NIP ( ; EXIT : IMMEDIATE DOES> CREATE S>NUMBER? PARSE FIND CELL EXECUTE R@ R> >R RP! RP@ SP! SP@ C! L! ! C@ L@ @ DROP OVER SWAP DUP XOR OR AND RSHIFT LSHIFT */MOD U/MOD + 0< 0= TIMER_ISR_REGISTER ACCEPT SD_MMC.BEGIN MDNS.BEGIN FILE-SIZE RESIZE-FILE REPOSITION-FILE FILE-POSITION READ-FILE WRITE-FILE DELETE-FILE CREATE-FILE OPEN-FILE FLUSH-FILE CLOSE-FILE BIN W/O R/W R/O TERMINATE MS-TICKS DACWRITE PULSEIN ANALOGREAD DIGITALREAD DIGITALWRITE PINMODE 
</code>
    -Target: MicroEforth ( uEForth ) for Windows, Linux on 80x86, a64. Version "7.0.6.9".
      -List of FORTH words, as listed by WORDS. The word OK appears twice in the list<code>
forth +to to ; { (local) editor list copy thru load flush update empty-buffers buffer block save-buffers default-use use open-blocks block-id scr block-fid streams reset revive startup: remember restore save dump-file words vlist order see .s startswith? str= :noname SMUDGE forget dump assert start-task task pause tasks include included resize free allocate process-heap HeapReAlloc HeapFree HeapAlloc GetProcessHeap ok ms file-size resize-file reposition-file file-position write-file read-file rename-file delete-file flush-file close-file create-file open-file r/w w/o r/o windows f.s f. #fs set-precision precision fsqrt pi fvariable fconstant fliteral afliteral sf, sfloat+ sfloats sfloat f>= f<= f<> f> f< f= page at-xy normal bg fg ansi internals sealed also only transfer{ }transfer transfer definitions vocabulary [IF] [ELSE] [THEN] DEFINED? ok quit evaluate prompt refill tib accept echo blank erase fill cmove> cmove z>s s>z r| r" z" ." s" zplace $place n. ? . u. binary decimal octal hex str #> sign #s # hold <# extract pad hld cr space emit bye key? key type is defer +to to value-bins value throw catch handler j i loop +loop leave unloop ?do do next for nest-depth fdepth depth fp0 rp0 sp0 variable constant postpone >body >flags >link >link& >name abs max min recurse aft repeat while else if then ahead until again begin literal [char] char ['] ' ] [ c, , align aligned allot here context current base state >in #tib 'tib 2! 2@ 2dup 2drop cell/ cells cell+ +! 4/ 4* 2/ 2* 1- 1+ nl bl 0<> <> = >= <= > < -rot rot - negate invert mod / /mod * */ rdrop nip \ ( ; EXIT : YIELD IMMEDIATE DOES> CREATE F>NUMBER? S>NUMBER? PARSE FIND CELL EXECUTE R@ R> >R RP! RP@ SP! SP@ C! L! ! C@ L@ @ DROP OVER SWAP DUP XOR OR AND RSHIFT LSHIFT */MOD U/MOD + 0< 0= F>S S>F 1/F F/ F* F- F+ F0= F0< FNEGATE FSWA FOVER FDROP FNIP FDUP SF! SF@ FP! FP@ LOADLIBRARYA GETPROCADDRESS
</code>
== jeforth in Javascript, by Cheahshen Yap, Sam Chen and Chen-Hanson Ting  ==
  *Newest release "jeforth_614" in Javascript, in 2021-08.
  *Dr. Ting told me in 2021-08: 100 words, about 400 lines of C++ code.
  *"This jeforth system was originally written by Mr. Cheahshen Yap and Mr. Sam Chen in the Taiwan Forth Interest group around 2010-2011. I polished up the code so that all Forth words were self-sufficient objects. It now has a pretty user interface worthy of the Internet".
  *[[http://drive.google.com/file/d/10ZsGMrtNZBCYNMeG_Fg3CYTk223WJBWa/|Google Drive "ting614.zip"]].
== ceForth in truely object-oriented C++, by Chen-Hanson Ting & friends  ==
  *Newest release "ceforth_403" in truely object-oriented C++, in 2021-08.
  *[[http://www.forth.org/OffeteStore/|forth.org/OffeteStore]] - "2177-ceForth_33_macroAssemblerVS2019.zip".
  *Dr. Ting told me in 2021-08: 100 words, about 400 lines of C++ code.
== ooForth in Java, by Xuyang (Shawn) Chen, Brad Nelson, Chochain Lee, and Chen-Hanson Ting ==
  *Newest release "ooforth_204" in Java, in 2021-08.
  *[[http://drive.google.com/file/d/1sOnnh8uez-9z1Gy9jHYHYhhCEOZEtFq1/|Google Drive "ooeForth204.zip"]].
  *Dr. Ting told me in 2021-08: 100 words, about 400 lines of C++ code.
== Resources ==
  *[[http://computer-programming-forum.com/22-forth/bcdb0cad980f6f96.htm|<Programming> computer-programming-forum.com "32 bit (and other) versions of Eforth"]], 1995.
=== FORTH-83 Reference Implementations by Henry Laxon & Mike Perry ===
== Downloads ==
  *[[http://www.forth.org/eforth.html|Forth Interest Group ( FIG ) "Public Domain Forths"]] - "3 Forth-83 standard implementations by Henry Laxon & Mike Perry" ( MSDOS, CP/M, CP/M 68K ).
    *The MSDOS & CP/M archives are ok :-).
    *The CP/M 68K archive is incomplete. Additionally, at least the "README.68" text file is corrupted and contains false bytes :-(.
  *[[http://dflund.se/~pi/cpm/files/ftp.mayn.de/pub/cpm/languages/forth68k/|Mirror of "ftp.mayn.de/" - Forth-83 68K]] - Incomplete distribution. Instead of "f83.68k", there is a 1 byte large file "f83.68k.txt" :-(.
  *[[http://www.github.com/uho/F83|GitHub "uho / F83"]] - "F83 (Forth 83 Model implementation, 16Bit) by Henry Laxen and Mike Perry, 1984. 8080, 8086, and 68000 distributions". Complete distributions, including binaries ( "F83.COM", "F83.COM", "F83.68K" ) :-).
== Resources ==
  *While the MSDOS and CP/M implementations are shipped with executable applications ( "F83.COM" ) :-), the CP/M 68K implementation consists of some ".BLK" files, i.e. no "F83.COM" file :-(.
  *A suitable CP/M emulator for Windows is Ronald Daleske's "EMUZ80 - Z80 / CP/M - Emulator" => See [[embedded.html|Embedded Systems]].
    -Download eth FORTH-83 archive "f83v2-80.arc".
    -Unpack the ".ARC" archive.
      *The free archiver [[http://www.izarc.org/|IZArc]] on Windows can unpack ".ARC" files of the CP/M and CP/M68K implementations :-).
    -Copy the implementation files to one of the subdirectories "CPM_LW_A" or "CPM_LW_B".
    -Start the emulator, at CP/M shell promt enter:
      -"C:".
      -"F83".
  *[[http://www.atariwiki.org/wiki/Wiki.jsp?page=Converting%20FIG-Forth%20Programs%20to%20Forth-83|ATARI Wiki "Converting FIG-Forth Programs to Forth-83"]].
=== F-PC by Tom Zimmer & Robert Smith ===
  *[[http://www.forth.org/eforth.html|Forth Interest Group ( FIG ) "Public Domain Forths"]] - "fpc Forth optimized for PC by Tom Zimmer & Robert Smith".
  *The "*.hlp" files are no "Windows Help", but plain text files. Remember, the final version of F-PC was released in 1989, prior to the rise of Windows with Win3.1!
  *The word WORDS prints help on the screen, before the wordlist is printed:
    *%%*%%%%*%% Press SPACE to pause, or ESC to exit %%*%%%%*%%.
    *COLON (pink), CONSTANT (darkGreen), VALUE (yellow), VARIABLE (green), USER-VARIABLE (green with blue background), DEFERED (lightBlue), USER-DEFERED (lightBlue on blue background), CODE (blue), CREATE-DOES (red), OTHER (white). Each word type is displayed in color as shown above.
    *%%-%%%%-%%[ FORTH  ]%%-%%%%-%%.
  *List of 1523 FORTH words:<code>
EMPTY SESSIONDAT SESSIONSEGMENT SESSIONDATL MOUSEKEY MOUSEKEY? TRACKER TRACK-MOUSE TRACK-MENU ?MENUBAR# SHOW.MOUSE HIDE.MOUSE MOUSEBUTTON MOUSEXY! MOUSEXY LISTSET ?SHOWSTACK SMASK FPRINT INDEX EDITALL FLOOK GET-FILESPECS ?IN-EMPTY FALLOF WATCH-COMMANDS SETWATCH WATCH_CMD STIBBUF DEPTH_SAVE .WATCH WATCH_ADDRESS  WATCH_SEGMENT CALLS USEDIN XREF REF -SKIP -SCAN SCANW NEWBEEP BEEPFREQ BEEPDURATION RING TONE NOTE TONEGATE TIMERCTRL TIMERDATA MLOAD ?MARKEND.LINE MERRFIX EFSAVE >B >BROWSER AUTOEDITOFF AUTOEDITON (EDITERR) WORDSAVE MSGSAVE SED NEWFILE F1 LISTING UNEDIT AUTOSAVEOFF AUTOSAVEON LEAVEPROMPTOFF LEAVEPROMPTON VF VIEWFROM LIST EDIT H HELP E ED LL L V B BROWSE VIEW ?LEAVE_SET CFA_VIEW FILE-LINE_VIEW <ED> <RED> PUSH/POP-LEVEL HDSTSCHR HSRCSCHR HYPERTYPEL DOCOMPILE %DODOS COMMAND.BUF ".ERRMSG (--)CHAR SEDCHAR GRAPHICCHAR EURCHAR@ EXTCHAR@ ?AUOB EXTROWS EXTCHARSEG CHROW CHCOL CHARLINE CHARCOL CHARBUTTON IMPORT EXCUT EXPORT ?GETEXPFILE EXPBUF EXPORT$ GETINPFILE IMP/EXP.INIT CUT/COPY_FILE INSERTALINE IBM-PROPRINT LASERJET TELETYPE SHOMEM BACKUPON BACKUPOFF NOBACKUP DONE EDITOR FILEPRINT PFILE $PFILE TOPRINTER PCLOSE SWITCH SWITCH_BODIES XCHANGE MAKEDEFER :DEF? DEFMENU RESTMENU SAVEMENU MENU ?DOMKEY ?MENUKEY 1ST-ROWCHAR UCSCAN SHOWMENUS .MENU .MENUBAR .VERTICAL .HORIZONTAL DOFUNC MENULIST MENUBAR DEFAULT-LIST DEFAULT-BAR DEFSAVE DUMY$ DFILE$ DO-DOS FHELP OPENFILE MAKEAFILE EDITAFILE LEDIT_RESTORE MBYE DOFHELP DOLISTING EDITFILE MAKEFILE MENULINE" +," ENDMENU NEWMENUBAR NEWMENU MBUTTON DOOTHER MENUKEY MROW MCOL MCOLUMN DEFAULT-MCOLUMN MLINE DEFAULT-MLINE EMM-BYE-FUNC EMM-POINTERINIT EMM-POINTER CLS RENAME REN COPY CD CHDIR DEL DIR `` ` SYS SWAPFILE "SWAPFILE .ME ME@ ME$ .PATH PATH@ PATH$ .COMSPEC COMSPEC@ COMSPEC$ .ENV "ENVFIND ENVSIZE  EVSEG .FILES .LOADED NEEDS ?LOADED <GETFILE> FL OPEN VOCOFF VOCON STATOFF STATON .STATUS <.STAT> VOCV INCLUDE LOAD >VIEWFILE LOADEDFROM VIEWFILE NAME>PAD LINEEDITOR MARK HELLO .CURFILE .HELLO <.CURFILE> .FILE <.HELLO> (\.") \TYPE \TYPEL DO\CHAR \CHARS LFEMIT \EMIT "EMIT \AT-REST \AT-SAVE \Y \X \%AT \%TENTHS \%SPACES PACKED_ASC># SLOW FAST QTYPEL BLANKOFF BLANKON RECOVERLINE RECOVERSCR RESTSCR SAVESCR SVINIT SVTOTAL SVSIZE SVMAX SVSEG MENUBOX .BOX" (.BOX) BOX&FILL BOX BCR >MENU >BOX COLORIZEON COLORIZEOFF C.ID COLORIZE-INIT COLORIZE COLOR-INFO ?COLORIZE BORDER@ BORDER! PAL! BLINKON BLINKOFF BLINK! >LCD >COLOR >8BGFG >7BGFG >6BGFG >5BGFG >4BGFG >3BGFG >2BGFG >1BGFG COLORSET >BG >FG FG@ FG! BG@ BG! COLORS WHITE YELLOW LTMAGENTA LTRED LTCYAN LTGREEN LTBLUE DKGRAY LTGRAY BROWN MAGENTA RED CYAN GREEN BLUE BLACK BLACK-ON-WHITE WHITE-ON-BLACK INVERT-SCREEN >MONO >REVBLNK >BOLDBLNK >BOLDUL >BOLD >UL >REVERSE >NONEBG >NONE REVERSEVAL NORMALVAL REVVAL NORMVAL MED-CURSOR BIG-CURSOR NORM-CURSOR CURSOR-ON CURSOR-OFF CURSOR_POS_INIT >IBM IBM--LINE NORM-DARK LFILLW IBM-DARK IBM-AT? IBM-AT THESE WORDS PREWORDS CONTEXTONLY ?TOTAL.* ?USER-DEFERED.* ?DEFERED.* ?VALUE.* ?CONSTANT.* ?USER-VARIABLE.* ?VARIABLE.* ?:.* ?CODE.* ?*.* ?W.TEST .VOCWORDS W.NAME <W.NAME> ?W.NAME ?TOTALWORDS ?WORDTYPE WORDTYPE ?CODENAME ?INNAME W$ W.ID TOTALWORDS .VYET VADDR VYET LARGEST SEARCH VFIND HFIND PREPEND.PATH ?DRIVE.PREPEND ?DRIVE.EXTRACT FLHNDL DBG DEBUG ADEBUG UNBUG PNEXT DEBNEXT DNEXT FNEXT DBGH. DO.SHOW.SOURCE .RP DBG_RDEPTH DEBUG.S #PAD-SAVE SKIP_TO DBG.S 'DEBUG CNT DBOFF DBSEG SRCOFF SRCON DO.SRC .DEFSRC SRCCR SHOWSRC ?UPC DEBUGABLE TURNKEY FSAVE SAVE-EXE <SAVE-EXE> EXEHCB WRITE-EXE SAVEERR EHSP EHCKSM EH512Z EHLMRV EHADR EHZ EHMT SEXE WITHHEADS XDPSEGLEN DPSAVED SUVEC GLOBAL_REF LOCAL_REF CLEAR_ALL_LABELS LLSET- LLSET+ INLINE ASM->IN CODE LABEL DOASSEM ASMSTUFF ARUNSAVE PRE> >PRE POSTFIX PREFIX RUN-A; A; A;! .INST /NOLISTING /LISTING <LRUN> LIC@ LIHERE LINESTRT LRUNSAVE ?LISTING "ERR %"ERR ENDCASE NRESOLVE IF-OF OF ENDOF CASE DU XDUMP YDUMP DUMP LDUMP .FOOT .HEAD DLN EMIT. D.2W .2W DUMPC@ %DUMPC@ DUMPSEG SEE CRTAB -TAB +TAB 0TAB DECOM. SHOWBASE .VALIDATE BUFSIZE-INIT MS FUDGE IBLIMIT UNDEFER DEFERS BUG HIDDEN ROOT { \\ } <}> BEHEAD HWORDS+ HWORDS- HEADERLESS HEADERS I: | "IHEADER SAVE_"HEADER BEHEADABLE UNHEAD I:END UNVOC UNTHREAD HOPEN.FPATH @TBL+ !TBL+ ?FUNKEY .MEM EMMHEAD NEWPAGE %NEWPAGE FORMFEED USED .USED !USED DSBUF >PATHEND" $>TIB ?KEYPAUSE ?DOSTOP DEFAULTSTATE RESTORESTATE SAVESTATE STATV RESTSTAT RESTRMRG RESTLMRG RESTTABS RESTCAPS RESTBASE MOUSEFLG DOBUTTON >NORMBG >REV >NORM >ATTRIB8 >ATTRIB7 >ATTRIB6 >ATTRIB5 >ATTRIB4 >ATTRIB3 >ATTRIB2 >ATTRIB1 GRAPHCHAR <GRAPHDUMMY> H.4 (SEE) >NAME.ID ?DEFATTRIB NLEN =: \T \F \TCOM \FPC DIRECTIVE \- \|U \|UNLESS \+ \U \UNLESS ALIAS ?PAGE FORM-FEED PAGE #PAGE ?DOINGMAC RESTCURSOR SAVECURSOR -LINE AT? ?DARK DARK AT MANY TIMES #TIMES 0<= 0>= >= <= U>= U<= >.ID 'DOCOL DOES? $.L $.R  CDATE CTIME PFASAV DEFCFA .SRCCR CCR DRIVE? .FREE EEOL SP>COL ?DOSIO ?ENOUGH YCOUNT ? .VERSION .FPCVER# FPCVER# #THEN #ENDIF #IF #ELSE <#IF> .COMMENT: <.COMMENT:> /* COMMENT: <COMMENT:> COMMENT$ ?LOADING ?EXEC CRUNSAVE TILLKEY .COMPSTAT 0COMPILER HOURS MINUTES TENTHS SECONDS PAUSE-FUNC 10TH-ELAPSED SEC-ELAPSED TIMER .ELAPSED <.ELAPSED> B>SEC TIME-ELAPSED TIME-RESET B>T T>B TTIME STIME .DATE FORM-DATE D.M.Y Y-M-D M/D/Y BUILD-DATE <D.M.Y> <Y-M-D> <M/D/Y> .TIME FORM-TIME BUILD-TIME BUILD-SH BUILD-HM "+ ##+ DTBUF SETTIME GETTIME <GETTIME> SETDATE GET-CURSOR SET-CURSOR \ TAB ?CR ?LINE TABSIZE RMARGIN LMARGIN H. RECURSE DUMP .ID %.ID .S MAX.S DEPTH @REL>ABS SET_VECTORS RESTNEXT DIVIDE0 BYE BYEFUNC DIV0FUNC DIV0STRT RESTORE_VECTORS CTRLBKSAVE DIV0SAVE BIOSBKSAVE START COLD WARM 1STCOLD WARMFUNC WARMSTRT SEGSET INITSTUFF BOOT QUIT F: E: D: C: B: A: SELECT IS (IS) >IS USER #USER SETCRITICAL HADCRITICAL HDEFAULT DOS>TIB CFGHNDL DOS-LINE FLOAD $FLOAD FILE $FILE <$FILE> $FILE_BUF ?OPEN.ERROR PREPEND.APATH .FPATH FPATH FPATH+ <FPATH+> "FPATH+ SKIP.BLANKS NPATH PATH1 PATHLEN PATHPTR PATHHNDL FPATH$ \S OK ?FILEOPEN CHARREAD <FLOAD> ?NOLOADED, ?LOADED, LOADED, >LINE LOADER <LOAD> CLOSEALL CLOSE SEQDOWN FILLTIB LENGTH.CHECK ?.LOADLINE .LOADLINE %.LOADLINE SETTIB CRLF>BL'S HIDELINES SHOWLINES LISTVAR SEEK GFL FILE>TIB GETFILE $HOPEN IBRESET SEQINIT SEQUP ?SEQRANGE (?SERROR) ?BASE_RESTORE .BASE NOBASE DECIMALBASE HEXBASE DEFBASE DOERROR (DOERROR) LINEREAD %LINEREAD ?FILLBUFF FILLBUFF GET_ALINE CURPOINTER .SEQHANDLE SEQHANDLE+ LOADSTAT (TYPE) (TYPEL) CONTYPEL PRNTYPEL (PRINT) PRINTL (CONSOLE) CONSOLEL PRNHNDL CONHNDL LOADING FILEPOINTER HNDLS MAXNEST OUTBUF TOTALLINES INLENGTH INSTART OBLEN DELIMITER SCREENCHAR INBSEG IBFULL IBLEN WITHPATH OTHER.CHECK SET-DTA DTA! DTA@ FIND-NEXT FIND-FIRST HREAD HWRITE EXHWRITE EXHREAD HDELETE HCLOSE HOPEN WRITE-ONLY READ-WRITE READ-ONLY DEF-RWMODE R/W-DMODE R/W-MODE HCREATE HRENAME <HRENAME> PATHSET ENDFILE MOVEPOINTER HDOS4 HDOS3 HDOS1 $>EXT HANDLE>EXT FCB>HANDLE !HCB $>HANDLE ">HANDLE ?DEF.EXT DEFEXT HANDLE CLR-HCB >NAM >HNDLE >ATTRIB RWERR B/FILENAME HNDLOFFSET B/HCB RESTORE> SAVE> SAVE!> ?COMP %URESTORE> %USAVE> %USAVE!> %RESTORE> %SAVE> %SAVE!> &> ON> OFF> DECR> INCR> +!> !> @> ?USER ?NOUSER %&> %ON> %OFF> %DECR> %INCR> %+!> %U!> %U@> %!> %@> SIZEOF@> %SIZEOF@ SIZEOF!> %SIZEOF! 0POINTERS UNPOINTER> %UNPOINTER ?VALID_POINTER POINTER PTR_OK?EXIT EMMSYSEND <EXTEXEC> SP_SAVE SS_SAVE EXTHNDL CMDPATH EXEC.PARAM EXEC$ DISKOFF DISKON DSK-STATUS USE-DISK EMMPARST EMMPARS EMMHNDL EMMPAGE# #FPCPAGES EMMSTK EMMON EMMOFF EMM-INIT ?EMM: EMM-GET-VERSION EMM-DEALLOC-PAGES EMM-MAP-PAGES EMM-ALLOC-PAGES EMM-TOTAL-PAGES EMM-AVAIL-PAGES EMM-PAGE-FRAME ?EMMERR EMM-STATUS? EMM-PRESENT? CUR_EMM_HNDL USE-EMM EMM-STATUS PAGE-FRAME EMMNAME (?ERROR) ERRFIX RUN <RUN> 2VARIABLE 2CONSTANT DEFINITIONS VOCABULARY DEFER ARRAY VARIABLE VALUE CONSTANT RECURSIVE ; : (:) ANEW MAKEDUMMY ] (]) ;CODE ;USES [ SETASSEM ASSEMBLER DOES> (;CODE) (;USES) REVEAL HIDE ?CSP !CSP CREATE "CREATE HEADER <HEADER> ,JUMP ,CALL "HEADER <"HEADER> ?ALREADY_DEF %ALREADY_DEF SPCHECK NOLISTROOM NOHEADROOM ,VIEW NEXT FOR AFT BREAK CONTINUE FORWARD THEN ELSE IF +LOOP LOOP ?DO DO REPEAT WHILE UNTIL AGAIN BEGIN ?LEAVE LEAVE ?<RESOLVE ?<MARK ?>RESOLVE ?>MARK <RESOLVE <MARK >RESOLVE >MARK ?CONDITION FORGET ABORT ABORT" (ABORT") ?ERROR (FRGET) TRIM FENCE ">$ "" " ." X," ," (.") %(.") (X") (") X>"BUF XALIGN XEVEN "BUF [COMPILE] ['] ' ?MISSING CRASH CONTROL ASCII DLITERAL LITERAL IMMEDIATE COMPILE EVEN ALIGN C, ALLOT PRINT INTERPRET STATUS INTERP ?STACK (?STACK) WARNOVER STACKOVER STACKUNDER DEFINED SKIP'C' FIND %FIND %%FIND OVER.SWAP.HASH.@ PRIOR.CHECK DROP.CONTEXT.I2*+@D (FIND) HASH VIEW> >VIEW >LINK >NAME NO-NAME >BODY LINK> NAME> BODY> L>NAME N>LINK CNSRCH CNHASH DONE? +PLACEL PLACEL TRAVERSE ( .( >TYPE VIDEO-TYPE VIDEO-TYPEL NOSETCUR WORD PARSE SOURCE /STRING SCAN SKIP D.R D. (D.) UD.R UD. (UD.) .R . (.) U.R U. (U.) #S # SIGN #> <# HOLD NUMBER (NUMBER) %NUMBER NUMB %NUMB NUMH #NUM ^NUM 'NUM $NUM %NUMH %^NUM %'NUM %$NUM NUMBER? (NUMBER?) CONVERT DOUBLE? DIGIT  DEFAULT BINARY OCTAL DECIMAL HEX INIT-R0 FIRST LIMIT DISK-ERROR QUERY MORE? TIB EXPECT (EXPECT) NEXPECT KEYTABLE NORM-KEYTABLE ^CHAR CHAR (CHAR) CR-IN ESC-IN (ESC-IN) P-IN RES-IN RESET-IN BACK-UP DEL-IN (DEL-IN) BS-IN BEEP %BEEP BACKSPACES SPACES SPACE SPCS FEMIT CRLF (EMIT) PEMIT CR ?PRINTER.READY <?PTR.READY> PR-STATUS XC, X, XHERE YHASH YCSET Y, YC! YC@ Y! Y@ YS: YHERE SETYSEG F-PC +XSEG DOSVER CURSORSET MAXBLOCK SETBLOCK ALLOC DEALLOC DOS_MAXBLOCK DOS_SETBLOCK DOS_ALLOC DOS_DEALLOC MEMCHK #OVBYTES #OVSEGS #HEADSEGS #LISTSEGS #CODESEGS CMOVE-PARS> CMOVE-PARS CMOVEL> CMOVEL CONSOLE OUTPAUSE (KEY) (KEY?) BGSTUFF KEYFILTER BIOSKEY BIOSKEY? BIOSKEYVAL BIOSCHAR OS2 BDOS2 BDOS <BDOS> !L C!L C@L @L ?ES: ?DS: ?CS: COMPARE CAPS-COMP COMP -TRAILING PAD HERE ?UPPERCASE UPPER UPC ATBL MOVE COUNTL LENGTH COUNT BLANK ERASE LFILL FILL >IN_WORD CAPS BELL BS BL LOADLINE SEQHANDLE #PARS PHEAD SSEG XMOVED XSEGLEN DPSTART YSTART YDP XDPSEG XDP #LINE #OUT END? #TIB SPAN >IN VOC-LINK WIDTH 'TIB CONTEXT #VOCS CURRENT LAST CSP R# DPL WARNING STATE PRIOR TYPEL TYPE KEY KEY?           EMIT PRINTING HLD BASE OFFSET DP RP0 SP0 ES0 LINK ENTRY TOS SHOW.COLOR BLANK.COL VMODE.SET INITCOLOR INITMONO ?VMODE CROWS ROWS COLS BLANKING VMODE-VAR VIDEO-SEG ATTRIB DPARAGRAPH PARAGRAPH 2ROT ROLL */ */MOD MOD /MOD / MU/MOD M/MOD *D DMAX DMIN 4DUP D> D< DU< D= D0= ?DNEGATE D- UD16/ D2/ D2* DABS S>D DNEGATE D+ 2OVER 2SWAP 3DUP 2DUP 3DROP 2DROP 2! 2@ UBETWEEN BETWEEN WITHIN UMAX 0MAX MAX MIN UMIN > < U> U< ?NEGATE <> = 0<> 0> 0< 0= UM/MOD U*D * UM* 2- 1- 2+ 1+ 8* U8/ U16/ U2/ 2/ 2* #THREADS PDOS P! PC! P@ PC@ C+! +! D+! ABS - NEGATE + 0DECR DECR INCR 0! -1! OFF ON CTOGGLE CRESET CSET FALSE TRUE NOT XOR OR AND RPICK PICK 2R@ R@ 2>R 2R> >R DUP>R R>DROP R> ?DROP ?DUP JOIN SPLIT FLIP -ROT ROT NIP TUCK PLUCK OVER SWAP DUP DROP RP! RP@ SP! SP@ +PLACE PLACE CMOVE> CMOVE C! C@ ! @ (?LEAVE) (LEAVE) K J I PAUSE NOOP GO EXEC: GOTO PERFORM EXECUTE >BIOSBK >DOES >NEST >NEXT BOUNDS (OF) (?DO) (DO) (+LOOP) (LOOP) UNDO  NEXT| ?BRANCH DOENDOF BRANCH ?UNTIL ?WHILE DOREPEAT DOAGAIN DOTHEN DOENDCASE DOCASE DOBEGIN <'> (LIT) UP UNNEST ?EXIT EXIT BKFLAG BKABLE YSEG XSEG FILES FORTH
</code>
=== FORTH Systems in C/C++ ===
== 4IM ==
  *"4IM".
    *[[http://4im.atspace.com/|4IM - A Neoclassic Forth ( atspace.com )]].
    *[[http://web.archive.org/web/*/http://4im.atspace.com/|Archive.org "4IM - A Neoclassic Forth"]] ( - 2007-04-02 ).
    *[[http://web.archive.org/web/*/http://astrobe.byethost31.com/|Archive.org "4IM - A Neoclassic Forth"]] ( - 2009-02-05 ).
    *[[http://web.archive.org/web/*/http://membres.multimania.fr/astrobe/|Archive.org "4IM - A Neoclassic Forth"]] ( - 2013-07-13 ).
    *[[http://www.computer-programming-forum.com/22-forth/cd0e8ba36f5f3daa.htm|<Programming> computer-programming-forum.com "Coming soon: 4IM"]], 2004.
== The 4th Compiler ==
  *[[http://thebeez.home.xs4all.nl/4tH/|thebeez.home.xs4all.nl "The 4th Compiler"]].
== Autodesk Threaded Language Application System Toolkit ( ATLAST ) ==
  *[[http://www.fourmilab.ch/atlast/|John Walker "Autodesk Threaded Language Application System Toolkit ( ATLAST )"]] - "Atlast is based upon the FORTH-83 language... Atlast is implemented in a single file, written in portable C".
== BForth ==
  *[[http://www.github.com/Megamemnon/BForth|GitHub "Megamemnon / BForth"]] - "Brian's Forth. A simple threaded Forth compiler in C, inspired by Itsy Forth by John MetcalF".
== bif-c ==
  *[[http://bif-c.sourceforge.net/|SourceForge "bif-c, a near fig-FORTH in C"]], [[http://www.sourceforge.net/projects/bif-c/|SourceForge "bif-c, a near fig-FORTH in C"]] - "C language implementation of my BIF 6809 variant of fig-FORTH. May be interesting to programmers with C background who want to understand the high-level version of the low-level of FORTH".
== calForth ==
   *[[http://calforth.sourceforge.net/|SourceForge "calForth Sourceforge Homepage"]], [[http://sourceforge.net/projects/calforth/|SourceForge "CalForth"]].
     *"calForth is a forth language interpreter and compiler. It... will run on most *nix environments. It also includes a debugger and tracer. It's coded in 'C' to allow easy modification. Also, support for the 8051 processor has been added".
     *"It will run as a forth interperter, as well as strictly compile an executable".
== C-FORTH: a portable, C-coded figFORTH Interpreter, by Allan Pratt ( 1985 ) ==
  *[[http://ftp.sunet.se/mirror/archive/ftp.sunet.se/pub/usenet/ftp.uu.net/comp.sources.unix/volume1/cforth/|Mirror "ftp.uu.net/comp.sources.unix/volume1/cforth"]] - "C-FORTH: a portable, C-coded figFORTH interpreter" by Allan Pratt, 1985-04. Project description, but no source ( "part1.gz", "part2.gz", "part3.gz" ).
  *[[http://www.github.com/pahihu/cforthu|GitHub "pahihu / cforthu"]], 2020 - "C-FORTH by Allan Pratt". "This is c-forth written by Allan Pratt containing modifications by John P. Nelson, Ken Brown and Marc de Groot". "Limitations: cell addressed FORTH virtual machine".
  *[[http://www.edm2.com/index.php/C-Forth|EDM/2 "C-Forth"]].
    *"An OS/2 port of Allan Pratt's portable Forth interpreter for DOS that featured a basic interpreted core written in C and the rest of the tool written in Forth. It is often known as Portable Forth especially on DOS and OS/2, but that name should be avoided since it name wise clashes with Portable Forth Environment. It is a fairly slow implementation and although the porter announced that he would add OS/2 specific features they never showed up so not a lot to recommend it over and above the original 1985 DOS version".
    *"On the other hand, at 20k in total it is tiny and still offers the usual Forth interpreter functions like execution tracing, single-stepping through instructions, breakpoint detection and breakpoint stack dumping. It also has a couple of small neat touches that not all Forth implementations have such as saving and automatic restoration environment".
  *Resources.
    *Discussion at [[http://groups.google.com/g/comp.lang.forth/c/cBfkRiO-hLY|Google Groups "comp.lang.forth", Thread "Simple Forth written in C"]].
      *"The original Forth-in-C is on <del>[[http://web.archive.org/web/*/http://gatekeeper.dec.com|gatekeeper.dec.com]]</del>. Circa 1982 I think".
      *"Here possibly at this link? <del>[[http://ftp.digital.com/cgi-bin/grep-index?forth]]</del>. The files there include '/pub/usenet/comp.sources.unix/volume1/cforth/part1.Z', '/pub/usenet/comp.sources.unix/volume1/cforth/part2.Z', '/pub/usenet/comp.sources.unix/volume1/cforth/part3.Z'.
    *[[http://www.digital.com/digital-equipment-corporation/|Digital "The Tragic Tale Of DEC, The Computing Giant That Died Too Soon"]].
== cforth ==
  *[[http://www.github.com/MitchBradley/cforth|GitHub "MitchBradley / cforth"]].
    *[[http://github.com/MitchBradley/cforth/releases/tag/esp32-v1.0|GitHub "MitchBradley / cforth / ESP32 working version with precompiled binary"]].
    *[[http://www.github.com/MitchBradley/cforth/commit/b3c56890599353149275ece80977d9fbcad844c8|GitHub "MitchBradley / cforth / ESP32 - no more SDK include dependencies"]].
  *[[http://www.github.com/quozl/cforth-1/blob/esp32/|GitHub "quozl /cforth-1"]] - "C Forth based firmware for ESP32 WiFi SOC". "A fork of Mitch Bradley's C Forth with my local build configuration for Ubuntu 14.04 amd64".
  *[[http://www.github.com/ForthHub/discussion/issues/39|GitHub "FortHub", Issue "Forth for ESP32 #39"]].
== cforth for osx ==
  *[[http://cforth.sourceforge.net/|SourceForge "cforth for osx"]], [[http://www.sourceforge.net/projects/cforth/|SourceForge "cforth for osx"]] for MacOSX.
== Chris Curl's FORTH Implementations ==
  *[[http://www.facebook.com/chris.curl.963|Facebook "Chris Curl"]].
  *[[http://www.github.com/CCurl/|GitHub "Chris Curl"]].      
      -[[http://www.github.com/CCurl/BoardForth|GitHub "CCurl / BoardForth"]] - "A token-threaded VM for the PC and development boards, written in C ".
        *Experts told me: "If what you are looking for is a Forth where the same code (both the Forth system code and your Forth "user code") can be built and run on both the PC and on a dev board, then BoardForth may be an option for you".
      -[[http://www.github.com/CCurl/CForth|GitHub "CCurl / CForth"]] - "A new Forth project".
      -[[http://www.github.com/CCurl/Forth_C|GitHub "CCurl / Forth_C"]] - "Another Forth. This one creates a 'bare metal' Forth virtual machine. Written in C using Visual Studio".
      -[[http://www.github.com/CCurl/Forth-GCC|GitHub "CCurl / Forth-GCC"]] - "This is a simple token-threaded (byte-code) implementation of Forth, written in C for GCC. Yes, I know ... ANOTHER Forth implementation. This one creates a 'bare metal' Forth virtual machine. The goal of this project is to create a basic, easy to understand, and easily extendable implementation of a Forth virtual machine. To that end, the virtual CPU has less than 50 instructions, which make up the VM's opcodes. They are also the Forth system's primitives".
      -[[http://www.github.com/CCurl/Forth-PCode-Asm|GitHub "CCurl / Forth-PCode-Asm"]] - "Yet another Forth implementation. This one is a PCode based one written in assembler".
      -[[http://www.github.com/CCurl/MachineForth|GitHub "CCurl / MachineForth"]] - "Inspired by Chuck Moore's 'Machine Forth'".
== cxxforth ==
  *[[http://www.github.com/kristopherjohnson/cxxforth|GitHub "kristopherjohnson / cxxforth"]] - "A simple public-domain Forth implementation in C++".
== embed by Richard James Howe ==
  *[[http://www.github.com/howerj|GitHub "howerj ( James )"]].
    *[[http://www.github.com/howerj/embed|GitHub "howerj / embed"]] - "embed: A tiny embeddable Forth interpreter", "An embeddable, tiny Forth interpreter with metacompiler".
  *[[http://howerj.github.io/|GitHub.io "meta.fth"]].
    *[[http://howerj.github.io/embed/meta.htm|GitHub.io "meta.fth"]] - "A Meta-compiler, an implementation of eForth, and a tutorial on both".
== Ficl ==
  *Ficl.
    -[[http://ficl.sourceforge.net/|SourceForge "Ficl"]], [[http://www.sourceforge.net/projects/ficl|SourceForge "Ficl"]] - "Forth Inspired Command Language".
    -[[http://www.github.com/pahihu/ficl|GitHub "pahihu / ficl"]] - "Enhanced FiCL based on FiCL 4.0.31".
    -[[http://www.github.com/hoobaa/ficl|GitHub "hoobaa / ficl"]] - "A modified ficl(one of the forth implementations). This works on Mac and FreeBSD and iOS and android".
== FINF Is Not Forth ==
  *[[http://www.github.com/lpereira/finf|GitHub "lpereira / finf"]] - "FINF Is Not Forth. FINF is a simple implementation for a FORTH-like language for the Arduino platform... Current version weighs about 8kB of object code (8.8kB if built with TERMINAL defined), making it suitable even for less beefier Arduinos, such as the ones based on the Atmega168 microcontrollers (even though it runs out of memory quickly and starts to behave weirdly)".
  *[[http://forum.arduino.cc/t/forth-environment-for-arduino/8902|Ardunio Forum "FORTH environment for Arduino"]], 2011.
== Froth ==
  *[[http://www.github.com/flrl/froth|GitHub "flrl / froth"]] - "a forth implementation in c".
== graspForth ==
  *"graspForth".
    *[[ftp://ftp.taygeta.com/pub/Forth/Compilers/native/misc/graspForth/|Taygeta FTP "graspForth"]].
    *[[http://www.github.com/andrewtholt/graspForth|GitHub "andrewtholt / graspForth"]] - "graspForth .. a 32-bit Forth by Bernard Mentink".
    *[[http://www.stm32circle.com/projects/project.php?id=121|The STM32 Primer Community "GraspForth"]] - "GraspForth port for STM32 Primer. Works over VirtualCOM".
      *[[http://shequ.stmicroelectronics.cn/forum.php?mod=viewthread&tid=107781|STMicroelectronics Forum "GraspForth port for STM32 Primer. Works over VirtualCOM"]].
    *[[http://comp.lang.forth.narkive.com/INwE2vlA/graspforth-a-new-forth-written-in-c|Narkive News Archive "comp.lang.forth.narkive.com", Thread "GraspForth ... a new forth written in C"]], 2004.
      *"You seem to have missed the whole point of my post. In respect to 'tethered' forth's for example. I don't want one. The reason is simple, I don't want to carry around the development system in the field. For example, I want to be able to configure/program/modify my products in the field with a PDA for example .. or a laptop .. or the kitchen sink, anything with a serial port. I don't want to drag around a development environment, if I wanted that I'd write using C tools".
      *"**and eForth cannot be ported with GCC (AS) AS cannot have look-ahead ORG statements**. Of the Free Forth's eForth(or hForth) is the best assembly based solution *if* you have the commercial assembler for that micro .. and you have time for the port" :-(.
      *"As I read it, eforth even lets you generate a Forth for a target system using a different assembler, by only using its macros and ignoring its own code generation functionality. The idea then is to have the 30-ish pieces of machine code set up as bit patterns of data, with the rest of the high level Forth still provided as data as before. Of course, the time problem goes up, but it's a lot more practical than implementing a whole Forth for a virgin machine with no tools for it. Traditionally, of course, you would go the route of cross compiling from a different Forth platform".
      *"Well, many Forths are me-too efforts. They feature the same basic engine, the same ANS-Forth vocabulary and they are used in the same way. There are a few that are different:
        *C-based FORTH:
          *OpenBios - doing Fcode.
          *FICL - the way it interfaces with C.
          *4tH - conventional compiler instead of Forth engine.
          *I have seen a C-based Forth in 1K C-code (First??) some time ago in a dutch Forth magazine.
        *Not C-based FORTH:
          *RetroForth - very minimal, very versatile, very portable.
          *ForthCMP - makes tiny, very speedy standalone executables.
== kForth-64 ==
  *[[http://www.github.com/mynenik/kForth-64|GitHub "mynenik / kForth-64"]].
    *"64-bit Forth System for x86_64-GNU/Linux".
    *Author: Krishna Myneni.
    *"The following packages are required to build and maintain kForth-64 from its source package, on a GNU/Linux system: binutils, gcc, gcc-c++, glibc, glibc-devel, libstdc++-devel, make, readline, readline-devel, patchutils".
  *[[http://web.archive.org/web/*/http://www.ccreweb.org/software/kforth/|Archive.org "CCREWeb.org: kForth Page"]] ( - 2017-07-09 ).
    *[[http://web.archive.org/web/*/http://www.ccreweb.org/software/kforth/kforth4.html|Archive.org "Archive.org "CCREWeb.org: kForth Page": kForth Programming Examples"]] ( - 2018-05-27 ).
== Peter J. Knaggs' BaseForth ==
  *[[http://www.rigwit.co.uk/|Peter J. Knaggs]].
    *[[http://www.rigwit.co.uk/forth/BaseForth.c|Peter J. Knaggs "forth/BaseForth.c"]]
      *Minimal FORTH with minimal test framework ( "Test Harness" ).
      *Subject of the lecture at EuroForth2021  [[http://euroforth.org/ef21/papers/knaggs.pdf|EuroForth2021, Peter J. Knaggs "Using Test Driven Development to build a new Forth interpreter"]] ( PDF ). 
== lbForth ==
  *[[http://www.github.com/lbruder|GitHub "Leif Bruder ( lbruder )"]].
    *[[http://gist.github.com/lbruder|GitHub Gist "Leif Bruder ( lbruder )"]].
      *[[http://gist.github.com/lbruder/10007431|GitHub Gist "Leif Bruder ( lbruder )" - "lbForth.c"]] - "A minimal Forth compiler in ANSI C".
== Libforth ==
  *[[http://www.github.com/howerj/libforth|GitHub "howerj / libforth"]] - "libforth: A small Forth interpreter that can be used as a library written in c99".
== Lars Brinkhoff  ==
  *[[http://www.github.com/larsbrinkhoff/lbForth|GitHub "larsbrinkhoff / lbForth"]] - "Self-hosting metacompiled Forth, bootstrapping from a few lines of C; targets Linux, Windows, ARM, RISC-V, 68000, PDP-11, asm.js.".
  *[[http://github.com/larsbrinkhoff/nybbleForth|GitHub "larsbrinkhoff / nybbleForth"]] - "Stack machine with 4-bit instructions. There's a simulator, an assembler, a cross compiler, and a Forth kernel, all written in Forth. There's a hardware design written in Verilog".
== microforth ==
  *[[http://www.github.com/Earlz/microforth|GitHub "Earlz / microforth"]] - "A forth implementation aimed at being portable and tiny(in code size and required resources) written in C".
== MinForth ==
  *MinForth.
    *[[http://web.archive.org/web/*/http://home.arcor.de:80/a.s.kochenburger/minforth.html|Archive.org "MinForth"]] ( - 2012-04-14 ).
    *[[http://cyberside.net.ee/files/devel/forth/minforth/|cyberside.net.ee/files/devel/forth/minforth]].
    *[[http://www.github.com/andrewtholt/minforth|GitHub "andrewtholt / minforth"]].
== MiniForth ==
  *[[http://www.github.com/davidjade/MiniForth|GitHub "davidjade / MiniForth"]] - "MiniForth - a minimal Forth Interpreter".
== MiniForth - Tiny Forth Built in a Week ==
  *[[http://www.github.com/ttsiodras/MiniForth/|GitHub "ttsiodras / MiniForth"]] - "A tiny Forth I built in a week".
  *[[http://www.thanassis.space/miniforth.html|Athanasios (Thanassis) Tsiodras "Building a tiny FORTH for an Arduino UNO in one week"]].
  *[[http://www.hackaday.com/2021/07/08/diy-forth-on-arduino/|Hackaday "DIY Forth On Arduino"]].
== muforth ==
  *[[http://muforth.nimblemachines.com/|muforth: a simple ITC Forth]] for MSP430, ARM.
    *[[http://www.github.com/nimblemachines/muforth|GitHub "nimblemachines / muforth"]] - "A simple, indirect-threaded Forth, written in C; for target compiling; runs on Linux, BSD, OSX, and Cygwin".
    *"Indirect-threaded code (ITC) Forth".
    *"Unlike mecrisp – which could be considered muforth's main 'competition' – muforth supports a tethered development model, where the dictionary names and all the interactive command processing live on the host, and only the code and data live on the target machine. This makes it possible to target very small devices with a few kilobytes of flash. In contrast, mecrisp needs at least 16 KiB of flash to be useful; 32 KiB is a more comfortable minimum".
    *"5.11. What is a tethered/umbilical Forth system? A tethered Forth system is a cross-development environment where the host and the target are connected at run-time (during development), allowing full interactive use of the target system without requiring all the space that a full-blown Forth system would require on the target. E.g., the headers can be kept completely in the host. Tethered systems may also provide the compilation speed and some of the conveniences of a full-blown Forth system on the host. Tethered systems are also called umbilical systems".
== OneFileForth ==
  *[[http://www.github.com/paraplegic/OneFileForth|GitHub "paraplegic / OneFileForth"]] - "A single file implementation of a non-standard Forth written in the FIG style".
== pez ==
  *[[http://www.github.com/pete/pez|GitHub "pete / pez"]] - "A Forth dialect based on Atlast, with expanded capabilities and more portability".
== pForth ==
  *[[http://www.softsynth.com/pforth/|Mobileer Inc. "pForth - Portable Forth in 'C'"]].
    *[[http://www.github.com/philburk/pforth|GitHub "philburk / pforth"]].
  *[[http://en.wikipedia.org/wiki/PForth|EN.Wikipedia "PForth"]].
== PFE - Portable Forth Environment ==
  *[[http://pfe.sourceforge.net/|SourceForge "PFE - Portable Forth Environment"]], [[http://www.sourceforge.net/projects/pfe|SourceForge "PFE - Portable Forth Environment"]].
    *"The PFE has been created by Dirk-Uwe Zoller and had been maintained up to the 0.9.x versions (1993-1995). Tektronix has adopted the PFE package in 1998 and made a number of extensions".
    *"You can load additional C objects at runtime to extend the Forth dictionary".
    *"It is fully written in C, the newer version has a module concept, and it is fully multithreaded. Autoconf used. Tested in embedded environments".
== SX-FORTH ==
  *The OpenSource FORTH system "SX-FORTH".
    *[[http://www.avrfreaks.net/index.php?module=Freaks%20Academy&func=viewItem&item_id=626&item_type=project|AVR Freaks "Projects - SX-Forth Interpreter for the AVR Butterfly ... but not only"]].
      *A C Language Developmemt Environment that use Forth for Interactive Debugging, Extensibility, Embedding Scripting Language, define Application Specific Language and User Interface
      *Forth Interpreter with Builtin Forth and C Functions WORDs Dictionary
    *Download[[http://www.avrfreaks.net/index.php?module=Freaks Files&func=viewFile&id=1930&showinfo=1|AVR Freaks "sx-forth"]].
    *Download [[http://www.avrfreaks.net/index.php?module=Freaks%20Files&func=viewFile&id=1931&showinfo=1|AVR Freaks "Introductory Article on FORTH and SX-Forth Primer"]].
    *<del>[[http://www.avrfreaks.net/index.php?module=Freaks%20Tools&func=viewItem&item_id=716|AVR Freaks "Tools / Development Applications - SX-Forth for AVR Butterfly ... and others AVR with 8KB Flash"]]</del>.
    *Author: Valter Foresto, [[http://www.facebook.com/valter.foresto|Facebook "Valter Foresto"]], [[http://www.linkedin.com/in/commsec|LinkedIn "Valter Foresto"]].
== Tail Forth ==
  *[[http://www.github.com/snej/tails|GitHub "snej / tails"]] - "Tails, A Fast C++ Forth Core. A fast, minimal Forth-like interpreter core in C++ with no assembly".
== This-Forth ==
  *[[http://www.github.com/cstrotm/This-Forth|GitHub "cstrotm / This-Forth"]] - "A macro-oriented Forth based on Standard (ANS) Forth 1994 by Wil Baden ".
== TILE Forth by Mikael R.K. Patel ==
  *[[http://www.github.com/cstrotm/tile-forth|GitHub "cstrotm / tile-forth"]] - "THREADED INTERPRETIVE LANGUAGE ENVIRONMENT (TILE) FORTH"  by Mikael R.K. Patel.
  *[[http://ftp.fau.de/aminet/dev/gg/tile-forth-bin.readme|Friedrich-Alexander-Universität Erlangen-Nürnberg "Mikael R.K. Patel: "Threaded Interpretive Language Environ. V2.1"]].
  *"TILE Forth is a 32-bit implementation of the Forth-83 Standard written in C".
== Toy-FORTH ==
  *[[http://www.github.com/DM126/Toy-FORTH|GitHub "DM126 / Toy-FORTH"]] - "Toy interpreter for the FORTH programming language".
== uforth ==
  *[[http://www.github.com/tcoram/uforth|GitHub "tcoram / uforth]] - "A very portable (embeddable) switch threaded forth".
== yForth ==
   *yForth.
=== FORTH Systems in Java ===
== FORTH in Java ==
  *[[http://www.mistybeach.com/products/Forth/|Misty Beach Forth]] - "An applet version of Misty Beach Forth is embedded here" :-(.
  *[[http://www.stackoverflow.com/questions/1415910/forth-interpreter-in-java/1415937#1415937|StackOverflow "Forth Interpreter in Java"]].
== Resources ==
  *[[http://news.ycombinator.com/item?id=6105746|Hacker News "Sounds like Forth would be perfect for the JVM"]].
  *[[http://www.44342.com/forth-f381-t2426-p1.htm|Programming and Web Development Forums "Bootstrapping Forth on JVM, .NET CLR, etc."]].
=== FORTH Systems in Javascript ===
== Beetle Forth ==
  *[[http://codeprojet.wordpress.com/2021/05/14/le-langage-beetle-proche-du-langage-forth/|WordPress "Codeprojet", "Javascript / jQuery. Le langage Beetle proche du langage Forth"]].
  *Author: Frédéric Vissault [[http://www.facebook.com/frederic.vissault|Facebook "Frédéric Vissault"]].
  *[[http://www.facebook.com/groups/PROGRAMMINGFORTH/posts/2743155472651136/|Facebook "FORTH PROGRAMMING LANGUAGE 21st CENTURY", Thread "Le langage Beetle proche du langage Forth"]].
== JeForth ==
  *[[http://www.github.com/hcchengithub/jeforth.3we|GitHub "JeForth"]] - "A FORTH running on HTA, HTML, Node.js, NW.js, Chrome Extension, Chrome App, and more".
== JS-Forth ==
  *The OpenSource FORTH system "JS-Forth".
    *[[http://www.forthfreak.net/|Lothar Schmidt "ForthFreak"]].
      *[[http://www.forthfreak.net/jsforth.html|ForthFreak "JS-Forth"]].
      *Old Wiki [[http://wiki.forthfreak.net/|ForthFreak Wiki]].
    *[[http://www.github.com/ForthHub/|GitHub "ForthHub"]].
      *[[http://www.github.com/ForthHub/ForthFreak/|GitHub "ForthHub / ForthFreak"]].
        *New Wiki [[http://www.github.com/ForthHub/ForthFreak/wiki/Forthfreak-wiki|GitHub "ForthHub / ForthFreak / wiki"]].
== ricardo-forth ==
  *[[http://www.github.com/marianoguerra/ricardo-forth|GitHub "marianoguerra / ricardo-forth"]] - "Forth dialect implemented in C, Javascript, WebAssembly and compiled from C to asm.js and WebAssembly".
    *[[http://www.github.com/marianoguerra/ricardo-forth/blob/master/docs/buzzard.2.design|GitHub "ricardo-forth / docs / buzzard.2.design"]].
    *[[http://www.github.com/c00kiemon5ter/ioccc-obfuscated-c-contest/tree/master/1992|GitHub " c00kiemon5ter / ioccc-obfuscated-c-contest / 1992/"]].
    *[[http://www.ioccc.org/years.html#1992_buzzard.2|IOCCC "The International Obfuscated C Code Contest - 9th International Obfuscated C Code Contest (1992)"]].
    *[[http://www.reddit.com/r/programming/comments/zdrmu/itsy_forth_a_language_in_just_978_bytes/|Reddit "/r/programming", Thread "Itsy Forth: a language in just 978 bytes"]].
      *"A tiny Forth interpreter in C was a contestant for the Obfuscated C contest back in 1992. Take a look at http://www.ioccc.org/1992/ 's buzzard2.c and the accompanying files in that directory. buzzard.2.c is only 791 bytes".
== webForth ==
  *The OpenSource FORTH system "webForth".
    *[[http://www.github.com/mitra42/webforth|GitHub "mitra42 / webforth"]].
      *[[http://www.github.com/mitra42/webForth/blob/master/index.js|GitHub "mitra42 / webForth / index.js"]].
        *The definition of T{ is at "Tbrace()"... its somewhat implementation specific, because I wanted T{ to be a comment unless a flag was set, otherwise loading from source gets VERY slow since I include "T{" in the source. 
    *[[http://www.mitra.biz/|Mitra Ardron]]. 
      *[[http://www.mitra.biz/forth/console.html|Mitra Ardron "WebForth demonstration page"]]. 
    *[[http://www.facebook.com/Mitraardron|Facebook "Mitra Ardron"]].
=== FORTH Systems in Lua ===
  *[[http://news.ycombinator.com/item?id=24452741|HackerNews "Bootstrapping a Forth in 40 lines of Lua code"]].
  *[[http://news.ycombinator.com/item?id=9471926|HackerNews "A simple Forth-like language intended for DSL creation, implemented in Lua"]].
=== FORTH Compiler for the Forth language using LLVM ===
  *[[http://www.github.com/Reschivon/movForth|GitHub "Reschivon / movForth"]] - "Compiler for the Forth language using LLVM".
  *[[http://www.facebook.com/groups/forth2020/posts/4498575136890551/?comment_id=4499519363462795|Facebook "Forth2020 Users-Group", Thread "movForth"]] by software developer [[http://www.facebook.com/xuyang.chen.robo|Facebook "Xuyang Chen"]].
=== FORTH Systems in PHP ===
== Implementations ==
  *[[http://www.github.com/Spyryto/php-forth|GitHub "Spyryto/php-forth"]], [[http://code.google.com/archive/p/php-forth/|Google Code "php-forth"]]  - "Forth machine. Example PHP 5.3 console application project".
  *[[http://www.github.com/tobyontour/php-forth|GitHub "tobyontour / php-forth"]] - "Php-forth. Forth interpreter implemented in PHP".
  *[[http://www.github.com/udexon/Phoshell|GitHub "tobyontour / Phoshell"]] - "Phoshell was initially implemented in PHP as an experiment to see how easy it is to implement a simplified stack machine. Eventually, we realized that this simplified stack machine can in fact be implemented in any known programming language with the equivalent of around 50 lines of JavaScript or PHP code, thus making the Forth like script (hence "Phos") a likely candidate to be a universal scripting language".
== Resources ==
  *[[http://comp.lang.forth.narkive.com/6wOdUBTV/poking-php-with-5gl-a-forth-like-language|Narkive Archive "comp.lang.forth", Thread "Poking PHP with 5GL (a Forth-like language)"]].
=== FORTH Systems in Python ===
  *The free online HTML book [[http://www.openbookproject.net/py4fun/|OpenBookProject, Chris Meyers and Fred Obermann "Python for Fun"]].
    *[[http://www.openbookproject.net/py4fun/forth/forth.html|OpenBookProject, Chris Meyers and Fred Obermann "Python for Fun", Chapter "FORTH - A simple stack oriented language"]].
  *[[http://www.github.com/tiluser/cfpy|GitHub " tiluser / cfpy"]] - Creole Forth for Python.
=== FORTH Systems in Ruby ===
  *[[http://www.github.com/ananthrk/rforth|GitHub "ananthrk / rforth"]] - "Russ Forth - A simple Forth interpreter in Ruby".
    *[[http://www.fogus.me/|fogus.me]].
=== FORTH Systems in Rust ===
  *[[http://www.github.com/chengchangwu/rtforth|GitHub "chengchangwu / rtforth"]] - "Forth implemented in Rust for realtime application".
    *[[http://www.github.com/chengchangwu/rtforth/blob/master/doc/eforth-words.f|GitHub "chengchangwu / rtforth / eforth-words.f"]].
    *[[http://mapacode.github.io/rtforth/|GitHub "rtForth"]] - But in Chinese language :-(.
=== FORTH Systems just for complete Operating Systems ( Windows, Linux, MacOSX ) ===
== Delta Forth .NET ==
  *The discontinued OpenSource FORTH system "Delta Forth .NET" for Windows with .NET 2.0.
    *[[http://web.archive.org/web/*/http://www.bocan.ro/deltaforthnet|Valer BOCAN "Delta Forth .NET"]] ( - 2017-10-07 ) => Discontinued :-(. 
  *[[http://www.github.com/shanecelis/delta-forth-net|GitHub "shanecelis / delta-forth-net"]] - "Delta Forth .NET Compiler, Version 1.0. Released: January 23, 2002".
  *[[http://www.codeproject.com/Tips/1752/Delta-Forth-NET|CodeProject "Delta Forth .NET"]], 2013.
== ForthWin/Forth2020 ==
  *[[http://www.forth2020.org/|Forth2020]].
  *[[http://www.github.com/PeterForth/ForthWin-Download|GitHub "PeterForth / ForthWin-Download"]].
  *[[http://sites.google.com/view/forth2020/|Google Sites "Forth2020"]], [[http://www.forth2020.org/|Google Sites "Forth2020"]].
  *[[http://www.github.com/PeterForth/LEARNING-FORTH2020|GitHub "PeterForth/LEARNING-FORTH2020"]].
  *An expert told me: 
    *"Forth2020 is Forth94 most of the part and it has some of the new things of 2012, but is not full 2012. Almost no forth is FULL 2012, because there are many ambivalent things. IMHO up to 94 Forth was Forth after that nobody knows for sure what they did... :-)".
    *ForthWin/Forth2020 is - in 2021-07 - not under active development :-(.
== Gforth ( GNUForth ) ==
  *The OpenSource 32-bit / 64-bit ANS94 FORTH system "Gforth" ( = "GNUForth" ).
  *"A free, fast, featureful and portable implementation of the Forth 2012 language".
  *[[http://gforth.org/|Gforth]] ( without "www." only ).
    *[[http://gforth.org/manual/|Gforth Manual]] ( without "www." only ).
      *[[http://gforth.org/manual/Debugging.html|Gforth Manual - "5.24.3 Debugging"]].
    *[[http://www.complang.tuwien.ac.at/forth/gforth/Docs-html/|TU Wien "Gforth Manual"]].
      *[[http://www.complang.tuwien.ac.at/forth/gforth/Docs-html/Debugging.html|TU Wien "Gforth Manual" - "5.24.3 Debugging"]].
  *[[http://www.gnu.org/software/gforth/|Free Software Foundation - GNU Project "Gforth"]].
  *[[http://www.bernd-paysan.de/gforth.html|Bernd Paysan "Gforth"]] - "Gforth uses GCC".
  *[[http://www.complang.tuwien.ac.at/forth/gforth/Docs-html/Origin.html|Institut für Information Systems Engineering der Fakultät für Informatik an der Technischen Universität Wien "Appendix B Authors and Ancestors of Gforth"]]
    *"The Gforth project was started in mid-1992 by Bernd Paysan and Anton Ertl".
    *"Gforth descends from bigFORTH (1993) and fig-Forth. Of course, a significant part of the design of Gforth was prescribed by ANS Forth".
  *List of FORTH words:<code>
disasm disassembler base-addr show-name default-32bit default-16bit default-16bit? col w@ (D.) MAXCOUNTED SPCS SPCS-MAX maxstring dffield: sffield: ffield: 2field: field: cfield: end-structure begin-structure +field init-libcc end-c-library c-library c-library-name c-library-incomplete clear-libs c-function c-function-rt c-function-ft link-wrapper-function compile-wrapper-function1 compile-wrapper-functio .lib-error c-source-file-execute notype-execute c-source-file init-c-source-file lib-handle c-tmp-library-name c-named-library-name c-library-name-create c-library-name-setup open-wrappers prepend-dirname libcc-tmp-dir libcc-named-dir gen-filename basename dirname scan-back gen-wrapper-function wrapper-function-name gen-wrapped-stmt gen-wrapped-types gen-wrapped-func gen-wrapped-r gen-wrapped-d gen-wrapped-a gen-wrapped-n gen-wrapped-void gen-wrapped-call gen-par gen-par-types gen-par-void gen-par-func gen-par-r gen-par-d gen-par-a gen-par-n count-stacks count-stacks-types count-stacks-void count-stacks-func count-stacks-r count-stacks-d count-stacks-a count-stacks-n type-letter parse-function-types parse-libcc-type libcc-types \c save-c-prefix-line print-c-prefix-lines print-c-prefix-line c-prefix-lines-end c-prefix-lines c-prefix% c-prefix-chars c-prefix-count append-l add-lib c-libs c-lib% c-lib-string list-map list-append list-insert list% list-payload list-next append s+ front-char front-string const+ .nb replace-rpath libcc-path libcc-named-dir-v lib-modulename lib-filename lib-handle-addr c-source-file-id cff% cff-ptypes cff-np cff-rtype cff-lha cff-deferred cff-cfr mkdir-parents disasm-gdb append-extend-string end-code ;code (;code) code init-asm assembler break" (break") break: (break:) break:, dbg (debug) (_debug) D-KEY Unnest Nesting nestXT nestXT-checkSpecial Body restore-bp set-bp DT BP breaker breaker-size DebugLoop jump get-next disp-step Leave-D NoFine d.s .n scanword restore-see-flags save-see-flags dbg-ip see-code see-code-range see-code-next-inline simple-see simple-see-range simple-see-word print-backtrace print-bt-entry backtrace-return-stack init-backtrace backtrace-rs-buffer adjust-buffer init-buffer buffer% buffer-maxlength buffer-address buffer-length buffer-descriptor c-extend1 c-lp+!# c-laddr# c-f@local# c-flit c-@local# c-branch-lp+!# c-?branch-lp+!# c-loop-lp+!# see name-see (.immediate) (xt-see-xt) xt-see seefield seecol seedoes see-threaded seedefer seevalue seecon seeuser seevar seecode next-prim next-head discode .defname xt-see-xt makepass c-initanalyse BranchTo? DoTable c-extender C-Table c-(compile) c-does> c-abort" c-exit c-?do c-do c-loop c-for c-?branch DebugBranch c-branch RepeatCheck Forward? c-string? c-c" .name-without c-lit+ c-lit c-callxt c-call .word back? Debug? Display? Scan? DebugMode DisplayMode ScanMode C-Pass NoOutput Branch! Type! ,Branch CheckWhile MyBranch CheckEnd MoreBranchAddr? BranchAddr? (BranchAddr?) FirstBranch MaxTable BranchTable SearchPointer BranchPointer Branches C-Stop LeaveCode Disable WhileCode2 AheadCode ElseCode UntilCode AgainCode RepeatCode .struc c-\type (.string) .string cemit ctype warp? (nl) nl nlcount uppercase nlflag level- level+ Format Level YPos XPos C-Clearline C-Highlight C-Formated C-Output .\" s\" \"-parse \-escape \-escape-table parse-num parse-num-x char/ ekey? ekey>fkey ekey>char ekey clear-ekey-buffer esc-sequence esc-prefix ekey-buffered ekey-buffer esc-sequences unkeys unkey char-append-buffer key-buffered key-buffer s-k12 s-k11 s-k10 s-k9 s-k8 s-k7 s-k6 s-k5 s-k4 s-k3 s-k2 s-k1 k12 k11 k10 k9 k8 k7 k6 k5 k4 k3 k2 k1 k-f12 k-f11 k-f10 k-f9 k-f8 k-f7 k-f6 k-f5 k-f4 k-f3 k-f2 k-f1 k-delete k-insert k-next k-prior k-end k-home k-down k-up k-right k-left k-alt-mask k-ctrl-mask k-shift-mask keycode table tablesearch-map table-find savesystem dump-fi update-image-included-files delete-prefix save-mem-dict <compilation compilation> (compilation>1) <interpretation interpretation> (interpretation>1) fix-does-code create-interpret/compile no-interpretation-does-code no-compilation-does-code bye block-included --> +thru +load thru load block-input list updated? scr buffer block get-buffer flush empty-buffers save-buffers empty-buffer save-buffer update block-position get-block-fid use open-blocks flush-blocks block-cold offset block-offset block-fid block-limit buffers last-block block-buffers buffer-struct next-buffer block-buffer buffer-dirty buffer-fid buffer-block ) (end-assert) assert( assert3( assert2( assert1( assert0( assertn assert-level ~~ .debugline-stderr (.debugline) .debugline printdebugdata .sourcepos compile-sourcepos current-sourcepos str>loadfilename# loadfilename#>str vt100-decode tcode trans: transcode translate history-cold get-history xchar-history xtab-expand insert xkill-expand (xenter) xclear-tib xclear-line xend-pos xfirst-pos xeof <xdel> ?xdel (xdel) xforw xback (xins) <xins> xretype .all .rest xback-restore xcur-correct at-deltaxy #esc kill-prefix tib-full? search-prefix prefix-string prefix-off search-voc word-lex capscomp sgn prefix-found extract-word (enter) prev-line find-prev-line next-line get-line hist-setpos hist-pos clear-line linew-off screenw linew cur-correct back-restore history-file force-open end^ backward^ forward^ history bindkey >string ctrl ctrl-i utf-8-cold set-encoding-utf-8 u8width -u8trailing-garbage u8addrlen u8!+? u8@ u8\string- +u8/string u8emit u8key check-xy u8<< u8>> u8!+ u8@+ u8len max-single-byte UTF-8-err O-PNT@ O-DEINIT O-INIT TypeXT EmitXT O-EMIT O-TYPE O-PNT O-Buffer page at-xy ESC[ ;pn pn WordInfo InfoTable Com# Str# Ali# Use# Col# Def# Doe# Val# Var# Con# Pri# prim? xtprim? colon? defered? does? user? con? var? alias? >head >name threaded>name look prim>name PrimStart threaded>xt search-name xt>threaded base-execute infile-execute outfile-execute l@ w@ /l /w typewhite what's action-of f.s f.rdp f>str-rdp f>buf-rdp f>buf-rdp-try push-right ]] postponer1 [[ compile-compile-2literal compile-2literal compile-compile-literal compile-literal slurp-fid slurp-file const-does> (const-does>) compile-fliterals compile-literals in-return-stack? ]L sh system $? dmax dmin ?CSP !CSP CSP needs locals| TO definer! >definer (local) (exit-like) (until-like) (again-like) (begin-like) (then-like) locals-;-hook locals-:-hook endscope adjust-locals-list scope { old-dpp new-locals-wl new-locals-map new-locals-reveal new-locals-find some-wlocal some-flocal some-dlocal some-clocal locals-types lp-offset, lp-offset create-local compile-pushlocal-c compile-pushlocal-d compile-pushlocal-f check-begin set-locals-size-list list-size sub-list? common-list compile-pushlocal-w alignlp-f alignlp-w locals-dp locals-buffer locals adjust-locals-size compile-lp+! compile-f@local compile-@local FMOD FTRUNC f~ f~rel f~abs 1/f f2/ f2* pi fvariable sfnumber fs. fe. f. f$ -zeros zeros scratch set-precision precision FLiteral fdepth fconstant f, dfloat+ sfloat+ dfalign sfalign .words hash-cold make-hash (hashsearch-map) hashdouble (rehash) rehashall clearhash addall inithash hash-reveal (reveal lastlink! hash-find bucket NewFix DelFix hash-alloc hashsearch-map HashTable HashPop HashIndex HashPointer revealed insRule hash Hashlen hashbits reserve-mem marker marker! marker, included-files-mark expect span search blank erase convert [compile] C" endcase endof of case m*/ d>s .( broken-pipe-error exception next-exception errstring linked include-ffi.h-string libffi-present ffcall-present libtool-flags libtool-cc libtool-command has? $has? e? environment? environment-wordlist environment vocs order .voc .name .id id. seal set-order get-order init-vp update-image-order Only Root Forth vocsearch (localsvocfind) locals-wordlist (vocfind) previous also >order check-maxvp Vocabulary wordlist mappedwordlist slowvoc definitions vp! set-current get-current vp maxvp-limit maxvp %alloc %allocate %allot %align %size %alignment double% sfloat% dfloat% float% char% cell% struct end-struct field create-field field, dozerofield nalign naligned endtry-iferror endtry restore iferror handler-intro, (endtry) try (try) nothrow first-throw store-backtrace dodoes: dofield: dodefer: douser: dovar: docol: dovalue: docon: vlist words wordlist-words cols rows ? dump .line .chars .4 /dump .s maxdepth-.s [WHILE] [AGAIN] [REPEAT] [UNTIL] [BEGIN] [I] [NEXT] [FOR] [LOOP] [+LOOP] [?DO] [DO] (i) [ENDIF] [THEN] [ELSE] [IFUNDEF] [IFDEF] [IF] [undefined] defined [defined] ?if [struct]-voc [struct]-search scanIF >exec dummy countif ." S" abort" SLiteral CLiteral ?EXIT EXIT exit-like NEXT S+LOOP -LOOP +LOOP LOOP loop-like FOR U-DO -DO U+DO +DO ?DO ?do-like DO ?LEAVE LEAVE DONE leave> >leave clear-leave-stack leave-sp leave-stack leave-stack-size REPEAT WHILE UNTIL until-like AGAIN again-like BEGIN begin-like ELSE ENDIF THEN cs>addr then-like ?DUP-0=-IF ?DUP-IF IF AHEAD YET BUT <resolve >resolve >mark sys? ?struc other-control-flow cs-push-orig cs-push-part CS-ROLL CS-PICK cs-item-size cs-item? non-orig? scope? do-dest? dest? orig? def? scopestart do-dest dest dead-orig live-orig ASSUME-LIVE UNREACHABLE backedge-locals dead-code locals-list .included .stringsrequire include required included included1 add-included-file included? init-included-files sourceline# sourcefilename image-included-files included-files open-fpath-file open-path-file check-path open-ofile reworkdir compact-filename skip-..-prefixes preserve-root del-./s del-string expandtopic remove~+ extractpath need/ pathsep? tfile ofile absolut-path? .fpath .path previous-path next-path path>string fpath= path= fpath+ path+ only-path clear-path also-path os-cold make-path fpath +place path-allot ( write-line bin r/o r/w w/o os-boot (process-args) process-option args-evaluate args-required args-required1 os-execute-parsing next-arg shift-args script? argc argv pathdirs pathstring #! arg cstring>sstring set-encoding-fixed-width c-size c!+? string- +string char- xhold x@+/string -trailing-garbage x-width x-size xc-size xc@+ xc!+? xc@ x\string- +x/string xchar- xchar+ xkey xemit license include-file execute-parsing-file execute-parsing-named-file read-loop line-end-hook query clear-tibstack evaluate execute-parsing execute-parsing-wrapper create-input restore-input save-input pop-file push-file expand-tib new-tib file-input read-line evaluate-input terminal-input input-start-line input-lexeme! tib+ tib loadfilename #fill-bytes blk loadfile loadline old-input max#tib #tib input-lexeme >in (restore-input) (save-input) source-id refill source input-var input-method accept edit-line decode everyline everychar insert-char ctrlkeys (ret) (bs) (ins) recursive rehash reveal check-shadow (reveal) warnings last? ; :noname : (:noname) defstart ;-hook :-hook interpret/compile? TO IS [IS] <IS> defer! DOES> Defers defer@ Defer defer-default interpret/compile: interpret/compile-struct interpret/compile-comp interpret/compile-int (Field) 2Constant AValue Value AConstant Constant (Value) (Constant) AUser User uallot 2Variable AVariable Variable Create Alias compile-only restrict immediate lastflags ctoggle creset cset ," mem, S, ] [ compiler1 recurse POSTPONE postpone, [COMP'] COMP' ['] [(')] name>comp (compile) dodoes, (does>2) (does>) !does compile-to-prims, peephole-compile, basic-block-end compile, cfa, [char] char char@ ALiteral 2Literal Literal latest lastxt latestxt noname noname-header nextname nextname-header nextname-string input-stream input-stream-header header, longstring, string, header (header) const A, cfalign maxalign falign align 2, , c, allot bye boot cold 'cold process-args bootmessage (bootmessage) quit (DoError) .error-frame .error-line part-type mark-end mark-start umin .error-string dobacktrace DOERROR -trailing hex. dec.r dec. input-error-data >error error> error-stack /error max-errors (quit) prompt .status 'quit extend-mem free-mem-var save-mem interpreter1 interpret interpret1 before-word no.extensions interpreter-notfound1 compiler-notfound1 name parse-word parse-name parser parser1 ' (') find sfind /does-handler does-handler! does-code! code-address! flashc! flash! >does-code >code-address body> >body >head-noprim head? ??? (name>intn) (name>comp) name?int name>int (name>x) ((name>)) name>string (x>int) (cfa>int) compile-only-error ticking-compile-only-error flag-sign lcount-mask restrict-mask immediate-mask alias-mask find-name search-wordlist (search-wordlist) context voclink current lookup forth-wordlist f83search initvoc f83find wordlist-struct wordlist-extend wordlist-link wordlist-id wordlist-map wordlist-map-struct hash-method rehash-method reveal-method find-method \G \ ( number number? snumber? s>number s>number? s>unumber? s'>unumber? ?dnegate sign? getbase bases name-too-long? name-too-short? (name) parse word sword (word) version-string .error >stderr ErrLink u. . ud. d. u.r .r ud.r d.r #s # sign #>> <<# #> <# hold pad backspaces spaces space cr bell #lf #ff #cr #del #tab #bs #bell #eof (S") (.") key? key emit type (key?) (key) (emit) (type) infile-id outfile-id hex decimal "lit clearstacks clearstack depth ?stack abort (abort") c(abort") throw catch lp@ ud/mod s>d >number accumulate digit? skip scan bounds place roll dabs off on here dp in-dictionary? unused usable-dictionary-end dictionary-end A! chars cfaligned maxaligned r@ NIL str< string-prefix? str= locals-size max-name-length Last LastCFA dpp normal-dp state dpl base includefilename current-input "error errorhandler backtrace-rp0 handler lp0 fp0 rp0 sp0 save-task prev-task next-task udp main-task def#tib pad-minsize holdend holdptr holdbuf-end holdbuf word-pno-size chars/block l/s c/l /line bl float cell false true forthstart image-header tag-offsets call2 set-next-code decompile-prim forget-dyncode finish-code compile-prim1 lib-error l! sl@ ul@ w! sw@ uw@ wcall lib-sym open-lib fpick f>l >l lp! lp+2 lp+ lp- lp+!# laddr# f@local1 f@local0 f@local# @local3 @local2 @local1 @local0 @local# faxpy v* dfaligned sfaligned dfloats sfloats fatanh facosh fasinh ftanh fcosh fsinh ftan fsqrt fsincos fsin falog flog flnp1 fln fexpm1 fexp fcos fatan2 fatan fasin facos fabs >float represent fmin fmax fround floor floats float+ ftuck fnip frot fover fswap fdup fdrop fnegate f**2 fm*/ fm/ fm* f** f/ f* f- f+ sf! sf@ df! df@ f@ f! f>s f>d d>f s>f f0>= f0<= f0> f0< f0<> f0= f>= f<= f> f< f<> f= cputime utime newline =mkdir get-dir set-dir filename-match close-dir read-dir open-dir file-eof? file-status flush-file emit-file write-file (read-line) read-file resize-file file-size reposition-file file-position rename-file delete-file create-file open-file close-file call-c strsignal strerror resize free allocate ms time&date close-pipe open-pipe getenv (system) (bye) flush-icache wcwidth form stderr stdout stdin key?-file key-file threading-method faligned aligned (parse-white) (hashkey1) (tablelfind) (hashlfind) (listlfind) count (chars) char+ cells cell+ 2@ 2! c! c@ +! ! lit@ @ 2tuck 2nip 2rot 2swap 2over 2dup 2drop pick ?dup tuck nip -rot rot dup swap drop over 2rdrop 2r@ 2r> 2>r rdrop r> >r fp! fp@ rp! rp@ sp! sp@ up! useraddr within du>= du<= du> du< du<> du= d0>= d0<= d0> d0< d0<> d0= d>= d<= d> d< d<> d= u>= u<= u> u< u<> u= >= <= > < <> = 0>= 0<= 0> 0< 0<> 0= lshift rshift invert xor or and d2/ d2* dnegate d- d+ m+ um/mod um* m* sm/rem fm/mod 2/ 2* */ */mod /mod mod / * abs min max 1- 1+ negate - under+ lit+ + lit /string capscompare toupper compare fill cmove> cmove move k j i' i (u-do) (-do) (u+do) (+do) (?do) (do) (for) (s+loop)-lp+!# (s+loop) (-loop)-lp+!# (-loop) (+loop)-lp+!# (+loop) (loop)-lp+!# (loop) (next)-lp+!# (next) ?dup-0=-?branch ?dup-?branch ?branch-lp+!# ?branch branch branch-lp+!# does-exec lit-perform unloop ;s perform execute call noop
</code>
  *Resources:
    *[[http://dirkmittler.homeip.net/blog/archives/3514|Dirk Mittler's Blog "64-bit FORTH"]].
    *[[http://stackoverflow.com/questions/48837115/does-gnu-forth-have-an-editor|StackOverflow "Does GNU FORTH have an editor?"]] - Detailed instructions how to use the Gforth block editor.
  *[[http://en.wikipedia.org/wiki/Gforth|EN.Wikipedia "Gforth"]].
  *Fan pages & FORTH application pages.
    *[[http://www.github.com/susam/may4|GitHub "susam / may4"]] - "Celebrating Star Wars Day with some Forth code!".
    *[[http://forth-brainless.sourceforge.net/|SourceForge "brainless"]], [[http://www.sourceforge.net/projects/forth-brainless/|SourceForge "brainless"]] - "A chess-playing program written in ANS Forth. Uses the Forth terminal for interacting with the user. Can make use of ANSI color terminals and Utf-8 chess-piece glyphs for quasi-graphical display".
    *[[http://home.iae.nl/users/mhx/|Marcel Hendrix "iForth"]].
      *[[http://home.iae.nl/users/mhx/dawg.frt|Marcel Hendrix "Generate and use a directed acyclic word graph (DAWG), in ANSFORTH]].
== Oforth ==
  *[[http://www.oforth.com/|Oforth]] for Linux, Windows, MacOSX.
  *"Oforth is a Forth dialect (Oforth is for Object + Forth). It keeps Forth mecanisms while implementing a full object model".
  *Not under active development since 2018 :-(.
== SP-Forth ( for Windows, Linux ) ==
  *The OpenSource FORTH system [[http://spf.sourceforge.net/|SourceForge "SP-Forth"]], [[http://sourceforge.net/projects/spf/|SourceForge "SP-Forth - ANS Forth compiler"]] by RuFIG - "ANS Forth for Win32 and Linux/x86".
  *Not under active development since 2009 or 2011, respectively :-(.
  *The help file ".\docs\papers\spf_help.chm", which described each FORTH word of SP-Forth, is in Russian language only :-(.
  *List of FORTH words:<code>
/CHAR B! B@ B, INIT (INIT) SPF-INIT? ;.. ..: ... SPF-INI OPTIONS (OPTIONS) TITLE (TITLE) PLATFORM EXC-DUMP1 AT-EXC-DUMP IN-EXCEPTION USER-EXIT PROCESS-INIT USER-INIT FATAL-HANDLER1 (FATAL-HANDLER1) DUMP-TRACE-USING-REGS DUMP-EXCEPTION-HEADER DUMP-TRACE-SHRUNKEN TRACE-TAIL-SIZE TRACE-HEAD-SIZE DUMP-TRACE STACK-ADDR. ADDR. (ADDR.) ERR-EXIT POOL-INIT AT-PROCESS-STARTING AT-THREAD-STARTING ALIGN-BYTES-CONSTANT MAINX DONE COMMANDLINE-OPTIONS SUBSTRING-OPTIONS SAVE EXPORTS-SIZE EXPORTS-RVA RESOURCES-SIZE RESOURCES-RVA IMAGE-BASE IMAGE-SIZE IMAGE-BEGIN ORG-ADDR CGI-OPTIONS POST? CGI? THREAD-ID TERMINATE PAUSE STOP RESUME SUSPEND START ERASE-IMPORTS TASK: TASK WNDPROC: CALLBACK: EXTERN WINAPI: __WIN:  NEW-WINAPI? WINAPLINK OEM>ANSI ANSI>OEM PROC-ERROR1 LIB-ERROR1 ERROR2 DECODE-ERROR (DECODE-ERROR) FORTH_ERROR ENVIRONMENT? (ENVIR?) EXECUTE ?DUP RDROP >R R> }} {{ ;MODULE EXPORT MODULE: UNLOOP LEAVE I +LOOP LOOP ?DO DO RECURSE AGAIN REPEAT WHILE UNTIL BEGIN THEN ELSE IF ?LITERAL2 ?SLITERAL2 HEX-SLITERAL ?LITE ?SLITERAL1 ['] ABORT" [CHAR] ." C" S" CLITERAL SLITERAL 2LITERAL LITERAL -- FIELD \EOF EXIT ; [COMPILE] ( .( \ POSTPONE TO : :NONAME HIDE SMUDGE C-SMUDGE BEHAVIOR! BEHAVIOR ->VECT USER-VECT USER-VALUE USER USER-CREATE USER-ALIGNED ->VARIABLE VECT VALUE CONSTANT VARIABLE VOCABULARY DOES> (DOES2) (DOES1) CREATE CREATED HEADER SHEADER1 SHEADER LAST-NON LAST-CFA INCLUDED-EXISTING REQUIRE REQUIRED INCLUDED INCLUDED_STD INCLUDE-DEPTH (INCLUDED1) (INCLUDED) INCLUDE-PROBE INCLUDE-FILE TranslateFlow FIND-FULLNAME1 FIND-FULLNAME HEAP-COPY RECEIVE-WITH RECEIVE-WITH-XT PROCESS-ERR1 PROCESS-ERR EVALUATE EVALUATE-WITH RESTORE-SOURCE SAVE-SOURCE QUIT MAIN1 ] [ OK1 .SN #(SIGNED) INTERPRET &INTERPRET INTERPRET_ NOTFOUND EVAL-WORD BYE CHAR ' WORD ?COMP ?STACK DEPTH ?SLITERAL ?LITERAL <MAIN> OK BLK STATE WARNING R0 S0 SAVE-ERR (ABORT1") ?ERROR LAST-WORD TYPE0 ERR-STRING ERR-FILE ERR-LINE ERR-IN# ERR-LINE# ERR-NUMBER NOTSEEN-ERR SEEN-ERR SEEN-ERR? ERR-DATA /err-data err.file err.line err.notseen err.in# err.line# err.number /errstr_ ER-U ER-A (ABORT") ERROR WORDS NLIST W-CNT >OUT LATEST ORDER VOC-NAME. PREVIOUS ALSO SET-ORDER ONLY FORTH GET-ORDER DEFINITIONS FIND1 SFIND CONTEXT S-O SEARCH-WORDLIST1 SEARCH-WORDLIST-NFA CDR-BY-NAME CDR-BY-NAME3 CDR-BY-NAME2 CDR-BY-NAME1 CDR-BY-NAME0 SEARCH-WORDLIST FIND NEAR_NFA WordByAddrSilent (WordByAddrSilent) WordByAddr (WordByAddr) (NEAREST-NFA) (NEAREST3) (NEAREST2) (NEAREST1) FOR-WORDLIST ENUM-VOCS-FORTH (ENUM-VOCS-FORTH) ENUM-VOCS IS-CLASS-FORTH VOC IMMEDIATE ?VOC ?IMMEDIATE IS-VOC IS-IMMEDIATE ID. CDR NAME>L  NAME>F NAME>C NAME> WID-EXTRA PAR@ PAR! CLASS@ CLASS! VOC-NAME@ VOC-NAME! FREE-WORDLIST TEMP-WORDLIST WORDLIST AT-WORDLIST-CREATING BUILD-DATE VERSION WL_SIZE +WORD +SWORD >BODY FORTH-WORDLIST &VOC &IMMEDIATE LAST VOC-LIST _VOC-LIST ALIGN-NOP ALIGN ALIGNED ALIGN-TO ALIGN-BYTES >RESOLVE >RESOLVE1 >ORESOLVE >ORESOLVE1 <MARK >MARK ", SLIT, S", S, ?BRANCH, RLIT, DLIT, LIT, RET, BRANCH, COMPILE, _COMPILE, HERE RESOLVE_OPT J_OPT? J_MOVE J_+! J?_STEP CON>LIT VECT-INLINE? FORLIT, OPT ???BR-OPT ??BR-OPT ?BR-OPT BR-EVEN-EAX ?BR-OPT-RULES MACRO, INLINE, OPT_INIT OPT_CLOSE XC_J _INLINE, 2A_,_STEP 1A_,_STEP 0A_,_STEP A_,_STEP 7_,_STEP 6_,_STEP 5_,_STEP 4_,_STEP 4_,_STEP_ 3_,_STEP 2_,_STEP 1_,_STEP +EBP MACRO? INLINE? DO_OPT OPT_ -EVEN-EBP OPT-RULES ?C-JMP ?EAX=RULES FPOP DO_EAX>ECX ?EAX:=ECX EBX:=EAX ECX:=EAX F?EAX>ECX T?EAX>ECX -EBPCLR -EBPLIT EAX>ECX EAX>ECX0 ?EAX>ECX EAX>EBX EAX>EBX0 ?EAX>EBX }?~EAX ?~EAX{ SAVE-?~EAX ?~EAX OPinsert OPresize MOV_EDX_[EBP] ?EDX_[EBP] XX_STEP ?OPlast OPexcise OP_SIZE ^?EAX= ?ChEAX DUP7B? DUP5B? DUP6B? DUP2B? DUP3B? DUP3B?[EBP] ADD|XOR|OR|AND= +>OFF-EBP EVEN-EBP EVEN-EAX MACROOPT-WL SHORT? ?SET SetJP J_@ SJ@ J@ ClearJpBuff INIT-MACROOPT-LIGHT JP4 JP3 JP2 JP1 JP0 JpBuffSize ToOP0 SetOP OPLast OP8 OP7 OP6 OP5 OP4 OP3 OP2 OP1 OP0 OpBuffSize LAST-HERE J-SET :-SET OFF-EAX OFF-EBP MM_SIZE DIS-OPT SET-OPT J_COD ~BR-OPT OPT? REL@ 'DROP 'DUP >T [>T] W, C, , ALLOT DP IS-TEMP-WL GET-CURRENT SET-CURRENT DOES>A CFL (DP) CURRENT NON-OPT-WL VOC-LIST REFILL-SOURCE REFILL-FILE FREFILL REFILL-STDIN TAKEN-TIB REFILL CONSOLE-HANDLES ?CONSOLE ?GUI CURSTR <PRE>  SOURCE-ID-XT SOURCE-ID SKIP1 SKIP PSKIP PARSE PARSE-NAME NextWord ParseWord SkipUpTo SkipWord OnNotDelimiter SkipDelimiters OnDelimiter GetChar IsDelimiter IsDelimiter1 PeekChar CharAddr EndOfChunk SOURCE! SOURCE ATIB TIB C/L >IN #TIB SOURCE-NAME +LibraryDirName +ModuleDirName ModuleDirName CUT-PATH CURFILE ModuleName is_path_delimiter SCREEN-LENGTH >NUMBER (.") DUMP PTYPE >PRT .TO-LOG .0 U. . D. (D.) SIGN #> #S # <# HOLDS HOLD DECIMAL HEX PAD SYSTEM-PAD NUMERIC-OUTPUT-LENGTH BASE HLD SPACES SPACE BL CR EMIT TYPE1 ACCEPT1 ACCEPT TO-LOG STARTLOG ENDLOG KEY1 KEY KEY? PENDING-CHAR EKEY>SCAN EKEY>CHAR EKEY KEY_EVENT ControlKeysMask INPUT_RECORD EKEY? ANSI><OEM FILE-EXISTS FILE-EXIST FLUSH-FILE WRITE-LINE RESIZE-FILE WRITE-FILE lpNumberOfBytesWritten READ-LINE _addr _fp2 _fp1 REPOSITION-FILE READ-FILE lpNumberOfBytesRead OPEN-FILE FILE-SIZE FILE-POSITION lpDistanceToMoveHigh DELETE-FILE OPEN-FILE-SHARED CREATE-FILE-SHARED SA CREATE-FILE CLOSE-FILE SET-EXC-HANDLER (EXC) DROP-EXC-HANDLER <EXC-DUMP> EXC-HANDLER HALT AT-PROCESS-FINISHING AT-THREAD-FINISHING H-STDLOG H-STDERR H-STDOUT H-STDIN ABORT CATCH <SET-EXC-HANDLER> THROW FATAL-HANDLER HANDLER RESIZE FREE ALLOCATE DESTROY-HEAP CREATE-PROCESS-HEAP CREATE-HEAP SET-HEAP EXTRA-MEM USER-HERE USER-ALLOT ERR USER-OFFS THREAD-HEAP R/W W/O R/O FILE_CURRENT FILE_BEGIN OPEN_EXISTING CREATE_ALWAYS FILE_ATTRIBUTE_ARCHIVE INVALID_HANDLE_VALUE MEM_RESERVE MEM_COMMIT PAGE_EXECUTE_READWRITE FlushFileBuffers Sleep TerminateThread ResumeThread SuspendThread CreateThread GetEnvironmentVariableA GetModuleFileNameA OemToCharBuffA CharToOemBuffA GetProcAddress LoadLibraryA GetCommandLineA HeapReAlloc HeapFree HeapAlloc HeapDestroy HeapCreate GetProcessHeap ReadConsoleInputA GetNumberOfConsoleInputEvents ExitThread ExitProcess SetEndOfFile WriteFile ReadFile GetFileSize SetFilePointer DeleteFileA CreateFileA CloseHandle GetFileAttributesA GetLastError GetStdHandle <FORTH-INSTANCE FORTH-INSTANCE> _WNDPROC-CODE _WINAPI-CODE API-CALL AO_INI LIB-ERROR PROC-ERROR ST-RES AOGPA AOLL TYPE NATIVE-LINES EOLN UNIX-LINES DOS-LINES LTL LT DOES-CODE HASH DABS CZMOVE ERASE MOVE >CELLS >CHARS CHARS CHAR- CHAR+ */ CELL TRUE FALSE FNOP _FLIT-CODE10 _FLIT-CODE8 `F1- F**2 `F1+ FD> FD< FRSTOR FSAVE FENV> F>ENV F10/ F10* F>D F>D LOW-MODE UP-MODE ROUND-MODE TRUNC-MODE F[LOG] FLOG2 GETFPUSW F--DS F>DS DS>F GETFPUCW SETFPUCW FINIT F>RAD F>DEG FASIN FACOS FATAN2 FATAN FTAN F** FEXPM1 FEXP FLOG FLNP1 FLN SF@ SF! F@ DATA>FLOAT32 FLOAT>DATA32 DATA>FLOAT FLOAT>DATA F! DF@ DF! D>F F1+ FDEPTH FROT FSWAP FINT FOVER FDUP FDROP FSQRT F/ F- F+ F* FABS FSINCOS FSIN FCOS FNEGATE FMIN FMAX F= F< F0< F0= 1.E .E FL2E FL2T FLN2 FLG2 FPI 10.E 2.E (ENTER) TRAP-CODE TIMER@ (LocalsExit) RFREE (RALLOT) RALLOT RP+! RP+ RP+@ NRCOPY N>R NR> DRMOVE C-EXECUTE C-?DUP C-RDROP C-R> C->R C-I ADD[ESP],EAX C-?DO C-DO J FS! FS@ TlsIndex@ TlsIndex! RP@ SP@ RP! SP! ASCIIZ> FILL CMOVE> CMOVE SEARCH COMPARE -TRAILING D2/ D2* D= D0= 0<> 0= 0< U> U< D> D< WITHIN > < <> = DIGIT FM/MOD SM/REM ARSHIFT RSHIFT LSHIFT M* */MOD U2/ 2/ UM/MOD UMOD /MOD MOD +! U/ / UM* C>S U>D D>S S>D NOOP DNEGATE ABS NEGATE INVERT XOR OR AND * COUNT 0! 1+! - D- D+ CELLS CELL- CELL+ + 2* 2- 2+ 1- 1+ 2! 2@ W! W@ C! C@ ! @ 2R@ R@ 2R> 2>R TUCK ROLL PICK -ROT ROT NIP 2OVER OVER 2SWAP SWAP 2DROP 0MAX UMIN UMAX MIN MAX DROP 2DUP DUP VECT-CODE TOUSER-VALUE-CODE USER-VALUE-CODE TOVALUE-CODE CONSTANT-CODE USER-CODE CREATE-CODE _---CODE CLITERAL-CODE CLITERAL-CODE SLITERAL-CODE _SLITERAL-CODE _TOUSER-VALUE-CODE _TOVALUE-CODE _VECT-CODE _USER-VECT-CODE _USER-VALUE-CODE USER+ _USER-CODE _CONSTANT-CODE _CREATE-CODE
</code>
== StoneKnifeForth ==
  *[[http://www.github.com/kragen/stoneknifeforth|GitHub "kragen / stoneknifeforth"]] - "This is StoneKnifeForth, a very simple language inspired by Forth. It is not expected to be useful; instead, its purpose is to show how simple a compiler can be. The compiler is a bit under two pages of code when the comments are removed. This package includes a 'metacircular compiler' which is written in StoneKnifeForth and compiles StoneKnifeForth to an x86 Linux ELF executable".
== Win32Forth ( for Windows ) ==
  *The OpenSource ANS94 FORTH system [[http://win32forth.sourceforge.net/|SourceForge "The Home of the Win32Forth Project Group"]], [[http://www.sourceforge.net/projects/win32forth|SourceForge "Win32Forth"]]
    *Latest version is "Win32Forth 6.15.05" ( and Tom Zimmer's last Win32Forth Version 4.2 Build 671 ). At some other places, there might be a "WinForth 6.16", though...
  *Not under active development since 2018 :-(.
  *The installer must be pointed to a directory, in which the installer then creates a "WIN2FORTH" directory. The directory "WIN2FORTH" must not exist :-), else the installer aborts with an error :-(.
  *Implementation size: 
    *Startup screen: "2,812 Words in Application dictionary. 2,631 Words in System dictionary. 5,443 Words total in dictionaries. 20,312 Windows Constants available".
    *"WORDS" displays 2447 of the 5448 words in the system.
  *List of FORTH words:<code>
EMPTY >WIN32FORTHIDE >WINED SYSTEMEDITOR FORTHBOOT LOADCONFIGFILE USERCONFIG$ CONFIG$ SET-SHELL ABS@ "OF-INCLUDE ("OF-INCLUDE) "OF-COMPARE ("OF-COMPARE) BACKGROUND FOREGROUND SIZE-POINTER UPARROW-POINTER WAIT-POINTER NOWAY-POINTER ICON-POINTER IBEAM-POINTER CROSS-POINTER ARROW-POINTER NEW-POINTER SP>COL SET-POINTER NOTE F^X FPOP FPUSH (F@) FR@ FDUP>R F>R R>F FSP FSTACK ?UPPERCASE ASCIIZ->ASC-LEN OF-RANGE _OF-RANGE SYS ` ZEXEC .BROWSE .DOS .EDITOR WIN32S? WIN98? WIN95? NT? WITH-IMG <CLASS <OBJECT HEAP> <A -- DOC (* /* CONSOLEWINDOW CMD MULTISTATUSBAR STATUSBAR -STATUSBAR.F COMMANDWINDOW LOGKEYSTROKES HANDLEKEYDOWN HANDLEKEYS SET-CONSOLE-POPUP SET-CONSOLE-MENU MENU-OFF CONSOLE-POPUP WIN32FORTH-POPUP-BAR CONSOLE-MENU WIN32FORTH-MENU-BAR MARK-ALL CUT-CONSOLE COPY-CONSOLE .LDE .WINDOWS .DFC DEXH XREF HELP-SYSTEM CLASS-BROWSER .FORTHFORM .IDE -TOOLS.F NEWEDITDIALOG PAGE-UP-SETUP PAGE-UP-DIALOG ABOUT-WIN32FORTH IDOK3 IDD_PROMPT2_TEXT IDOK2 IDD_EDIT2_TEXT IDD-PROMPT2_TEXT IDD_EDIT2_DIALOG IDD_EDIT_TEXT2 IDD-PROMPT_TEXT2 IDD_REPLACE_DIALOG IDB_OPTION IDD_EDIT_DIALOG IDD_PROMPT_TEXT IDD_EDIT_TEXT IDD_TITLE_TEXT IDD_4UP IDD_2UP IDD_PAGEUP IDD_AVAIL_MEMORY IDD_AVAIL IDD_SAVE_MEMORY IDD_ABOUT_TEXT4 IDD_ABOUT_TEXT3 IDD_ABOUT_TEXT2 IDD_ABOUT_TEXT IDD_ABOUT_HEAD IDD_ABOUT_FORTH IDD_TEXT IDD_CHECK IDD_FONT IDD_FONTDLG FORTHDLG BROWSEFORFOLDER -BROWSEFLD.F MIN-MENU-BAR POPUPBAR MENUBAR NEXTID IDCOUNTER IDSTART MODELESSDIALOG DIALOG LOAD-DIALOG READ-DIALOG FIND-DIALOG-ID ?DLGERR DIALOGID? COMBOFIELD EDITFIELD PICTUREBUTTON TOOLBAR DEFTOOLSPACING DEFTOOLWIDTH DEFTOOLHEIGHT LRBUTTONBAR HBUTTONBAR BHBUTTONBAR VBUTTONBAR GENERIC-BUTTONBAR BUILDBAR DEFBHEIGHT DEFBWIDTH DIALOGWINDOW BUTTONCONTROL RADIOCONTROL CHECKCONTROL STATICCONTROL GROUPCONTROL LISTCONTROL COMBOLISTCONTROL COMBOCONTROL EDITCONTROL CLIENTRECT CONTROL IN-BUTTON? MOUSE-IS-DOWN? INFO-FLAG CALLWINDOWPROC SUBCLASS-ENTRY SUBCLASS-RETURN SUBCLASS-WNDPROC ZMESSAGE MESSAGE-ORIGIN MESSAGE-ON MSG-WINDOW MSGWINDOW CHILD-WINDOW LOADICONFILE SEND-WINDOW FIND-WINDOW WINDOW WNDRECT WNDPROCERROR ERRSTRING ERRCFA CLASSNAMEID DEFAULTMENUBAR ZERO-IMAGE-WINDOWS GENERIC-WINDOW GET-MOUSE-XY WINRECT WRECT DIALOG-LINK WINDOWS-LINK PRINT-CONSOLE PRINT-SCREEN #PRINT-SCREEN ROWSTRING 4PRINT 2PRINT FPRINT $FPRINT PRINT PRINTER FOUR-PAGE TWO-PAGE SINGLE-PAGE PRINT-SCALED PAGE-SCALED PRINT-MULTI-PAGE START-RAW2 START-RAW START-SCALED2 START-SCALED PAGE-SETUP START-PRINTER2 THEPRINTER WINPRINTER SPLITLINE -BLSCAN1 XLCNT BORDER? DIRECT-PRINT? AUTO-ON? CALC_FONT_HEIGHT PRINT-EXTENDED-LINES PRINTER-VRES PRINTER-HRES PRINTER-VSIZE PRINTER-HSIZE PRINTER-MODE XLINECOUNT ?TAB PR_RAW PR_SCALED #XINDENT PRINTER? MULTI-PAGE? PRINTER-#LINE PRINTER-#OUT PRINTER-COLS PRINTER-ROWS PRINTER-CPI PRINTER-LPI PRINTING? SCREEN-HEIGHT SCREEN-WIDTH #PAGES-UP WINDC GDIDC CHAR-HEIGHT CHAR-WIDTH PRINT-ORIENTATION PAPER-SIZE QUALITY-PRINT UNLOCKDEVMODE LOCKDEVMODE DEFAULTPRINTER PRINT-FLAGS GET-COPIES GET-TOPAGE GET-FROMPAGE PRINT-END PRINT-PAGE END-PAGE START-PAGE PRINT-START AUTO-PRINT-INIT PRINT-SETUP PRINT-INIT PRINT-INIT2 PRINT-CLOSE PRINTDLG PAGESETUPDLG JOB DOCNAME DI NCOPIES NMAXPAGE NMINPAGE NTOPAGE NFROMPAGE PDFLAGS HDC HDEVNAMES HDEVMODE HWNDOWNER PD RTMARGIN RTMINMARGIN PTPAPERSIZE PSDFLAGS HOWNER PSD FILESAVEDIALOG FILEOPENDIALOG FILENEWDIALOG GET-FILTER-INDEX -XFILEDLG.F FONT GDIFONT ?GDICHECK (?GDICHECK) .GDI-OBJECTS UNLINKGDIOBJECT GETGDIOBJECTHANDLE ?ISGDIOBJECT GDIOBJECT 8REVERSE 6REVERSE 5REVERSE HATCHCOLOROBJECT BROWN WHITE LTCYAN CYAN LTMAGENTA MAGENTA DKMAGENTA LTYELLOW YELLOW LTBLUE BLUE LTGREEN GREEN LTRED RED DKGRAY LTGRAY GRAY BLACK NEW-COLOR EXTCOLOROBJECT COLOROBJECT IMAGESET?COLORSET ?COLORCHECK (?COLORCHECK) .COLORS COLORS-LINK PALETTEINDEX PALETTERGB RGB GDITEXTMETRIC GDISIZE GDIRGBQUAD GDICOLORREF GDIPOINT MDBG MDEBUG MSEE OBJECTS MATCHES IVARS METHODS CMETHODS SAVEINFO LOADINFO _?UNSAVE-SRC _SAVE-SRC _SAVE-SOURCE SRCINFOHERE _RESETSRCINFO SRCINFO, DOLOADINFO SRCINFOCNT SRCINFOPTR PRE-INIT-SYSTEM-LOCKS-OFF PREINITAPPID INIT?ENABLECONSOLEMESSAGES INIT-TURNKEY-NODEBUG INIT-TURNKEY-FIND INIT-IMAGE-HANDLES TRIM-IMAGE-ERRORS TRIM-IMAGE-CHAINS TRIM-IMAGE-LIST ZERO_CONHNDL TURNKEY SAVE "SAVE (SAVE) CONSOLEHIDDENBOOT CONSOLEBOOT DOSCONSOLEBOOT NOCONSOLEBOOT .APPDIR &APPDIR PRESETNOCONSOLEIO PRESETDOSCONSOLE GENERALBOOT MSGBOX CONSOLEMODE DOCONSOLEBOOT DEFAULT-APPLICATION IS-IMAGE IN-IMAGE? >IMAGE IMAGE-COPY ZERO-WORDS IMAGE-STATS PSIZE PORIG PTABL VIMAGE SCINTILLA-DLL? AUTOEDITOFF AUTOEDITON _EDIT-ERROR BROWSE Z EDIT ED VV V VIEW LINELIST N LL L LOCATE .V WHERE $BROWSE $EDIT PASTE-LOAD EDITOR-PRESENT? MSGPAD -EDITOR_IO.F "FILE-LINK WEB "WEB-LINK "SHELLEXECUTE ("SHELLEXECUTE) DOS SHELL $SHELL .SHELL S$ .$ ,$ DOS" SHELL" BROWSE" EDITOR" DOS$ SHELL$ BROWSE$ EDITOR$ $EXEC-WAIT $EXEC NEW-PROMPT? EXEC-CMD-WAIT EXEC-CMD ZEXEC-CMD-WAIT ZEXEC-CMD EXECEDITOR EXECWINED EXECHELP EXECIDE EXECFORTH (W32FAPPCMDLINE) EXECW32FAPP SET-TIME-TAKEN TIME-TAKEN CLOSETHREAD CLOSEPROCESS ((CREATEPROCESS)) PROCESSCMD PROCINFO STARTUPINFO DECODEW32FMSG BROADCASTW32FMSG SENDW32FMSG COPYDATASTRUCT RUNASNEWAPPID UNINITSHAREDMEMORY INITSHAREDMEMORY ?REMOVEGHOST CLOSESHAREDMEMORY .SHARED SHAREDHWND SHAREDAPPID RESETSHARED SETSHARED SET?ENABLECONSOLEMESSAGES (?ENABLECONSOLEMESSAGES) ENABLEW32FMSG ISRUNNING? W32FSHAREP W32FSHAREH W32FSHARENAME ED_NAME ED_WATCH ED_OPEN_BROWSE ED_OPEN_EDIT ED_DEBUG ED_STACK ED_WORD ED_RESPONSE WM_INQUIRE WM_DONEBP WM_RSTKBP WM_HEREBP WM_BEGNBP WM_JUMPBP WM_CONTBP WM_UNESTBP WM_NESTBP WM_STEPBP WM_SETBP WM_PASTELOAD WM_KEY WM_SHOWDEFER WM_HTML WM_LINEFILE WM_WORDHELP WM_BEEPME W32FAPPID>FILENAME W32FEDITOR W32FHELP W32FIDE W32FFORTH W32FWINED UNSET-EXCEPT SET-EXCEPT RELEASE-EXCEPT-BUFFER ALLOCATE-EXCEPT-BUFFER .EXCEPTION CLEAR-EXCEPTION .EXCEPTION-CODE INIT-EXCEPT-USERS RECOVER-EXCEPTION SHOW-EXCEPTION EXCEPT-IO THROW_WINEXCEPT EXCEPTION_CONTINUE_EXECUTION EXCEPTION_CONTINUE_SEARCH EXCEPTION_EXECUTE_HANDLER MACRO 2LITERAL HARROW-CURSOR MAGNIFY-CURSOR SPLITH-CURSOR       SPLITV-CURSOR HAND-CURSOR IDC_HARROW IDC_HAND IDC_MAGNIFY IDC_SPLITH IDC_SPLITV APP_ICON ICON_FORTH WAIT-CURSOR UPARROW-CURSOR SIZEWE-CURSOR SIZENWSE-CURSOR SIZENS-CURSOR SIZENESW-CURSOR SIZEALL-CURSOR NOWAY-CURSOR IBEAM-CURSOR HELP-CURSOR CROSS-CURSOR ARROW-CURSOR APPSTARTING-CURSOR MAKE-CURSOR DEFAULTOF FLIST FTYPE "FTYPE ?KEYPAUSE PAUSE-SECONDS SECONDS_MS RANDOM-INIT RANDOM SEED3 SEED2 SEED1 .BUILTBY ELAPSE .ELAPSED TIMER-RESET TIME-RESET START-TIME MS@ .CVERSION .AM/PM >AM/PM" .TIME >TIME" .MONTH,DAY,YEAR >MONTH,DAY,YEAR" .DATE >DATE" .#" TIME&DATE COMPILE-VERSION GET-LOCAL-TIME TIME$ DATE$ TIME-BUF TIME-LEN _STACK-CHECK LINELOAD #FLOAD >LINE START-LINE .VIEWINFO $.VIEWINFO ORIG-LOC CUR-LINE COPYFILE ?WIN-ERROR WIN-ABORT .ERRORBOX ERRORBOX ?TERMINATEBOX ?ERRORBOX ?MESSAGEBOX MESSAGEBOX .LOADED .PLATFORM .PLATFORM-NT .REG_WNT\VERSION IDIR .FILE .CUR-FILE .DEFERRED SCREEN-SIZE XFIELD: LFIELD: WFIELD: BFIELD: CFIELD: FIELD: +FIELD END-STRUCTURE BEGIN-STRUCTURE ENVIRONMENT? ENVIRONMENT OPEN-SHARE I-WAS-FIRST CLOSE-SHARE OPEN-MAP-FILE CLOSE-MAP-FILE UNMAP-VIEW-FILE FLUSH-VIEW-FILE MAP-VIEW-FILE MAP-NAME CREATE-FILE-MAP >HFILENAME >HFILEMAXLENGTH >HFILELENGTH >HFILEADDRESS >HFILEMAPPING >HFILE MAP-FIELD+ MAP-HANDLE DOMAP +K_CONTROL +K_ALT +K_SHIFT K_PGUP K_PGDN K_PAUSE K_SCROLL K_DOWN K_UP K_RIGHT K_LEFT K_DELETE K_INSERT K_END K_HOME K-NEXT K-PRIOR K-PAUSE K-SCROLL K-DOWN K-UP K-RIGHT K-LEFT K-DELETE K-INSERT K-END K-HOME SPLKEY K_F12 K_F11 K_F10 K_F9 K_F8 K_F7 K_F6 K_F5 K_F4 K_F3 K_F2 K_F1 K-F12 K-F11 K-F10 K-F9 K-F8 K-F7 K-F6 K-F5 K-F4 K-F3 K-F2 K-F1 FKEY K_LF K_CR K_BACKSPACE K_TAB K_ESC LITKEY RENAME DO-RENAME-AFILE DIR PRINT-DIR-FILES .FILE-SIZE-NAME _PRINT-DIR-FILES .DIR->FILE-SIZE .DIR->FILE-NAME FORALLFILES FORALLFILENAMES DIR->FILE-NAME ASCIIZ->ASC-LEN FILETIME-TO-SYSTEMTIME GET-FILE-MODIFIED FILE-TIME-BUF DIR-ATTRIBUTE? GET-FILE-NAME GET-FILE-SIZE GET-DOS-WRITE-DATETIME GET-DOS-ACCESS-DATETIME GET-DOS-CREATE-DATETIME FIND-CLOSE FIND-NEXT-FILE FIND-FIRST-FILE GET-FSPACE CAPS-COMPARE CAPS-SEARCH WMILLISECONDS WSECOND WMINUTE WHOUR WDAY WDAYOFWEEK WMONTH WYEAR _SYSTEMTIME SIZEOF(_SYSTEMTIME) PTR-DOS-TIME PTR-DOS-DATE _WIN32-FIND-DATA TOTAL-FILE-BYTES #FILES _HDL-SEARCH [GETMETHOD] GETMETHOD .CLASSES TEMPRECT RECTANGLE STRING OBJECT CLASSROOT METHODCATCH METHODEXECUTE ?DISPOSE DISPOSE DIMENSION  -RANGE +RANGE |CLASS BUILD|CLASS CLONE <SUPER :CLASS BUILD:CLASS (CLASS) :OBJECT OBJ-LOADLINE OBJ-CLASS USEROBJECT: NEW> ** [[ HASH> @WORD WARN_CLASH NEWOBJECT (NEWOBJECT) ?WIN-ERROR-ENABLED THROW_DISPOSE_ERR THROW_INDEX_OFR THROW_UNDEF_METH THROW_METH_BUFF_OVERFLOW THROW_NO_WM THROW_OBJ_EXPOSED THROW_NO_FIND_OBJ THROW_INVALID_IVAR THROW_NO_FIND_VAR THROW_INVALID_OBJ_REF THROW_NOT_METHOD THROW_NOT_OBJ THROW_NOT_CLASS THROW_NO_CLONE THROW_NOT_CLASS_OR_OBJ THROW_NEW> THROW_IVAR_EXISTS THROW_NOT_IN_CLASS THROW_BIG_BITS THROW_ZERO_BITS THROW_NO_BITS THROW_NOT_SELF THROW_NOT_SEL THROW_NEED_SEL WITHOUT-SOURCE WITH-SOURCE PATCHINTO #PATCHINTO ?UNBUG WATCH DBG RESTORE-IO DEBUG-IO BP FDEBUG FDBG DEBUG NDBG ADEBUG REMOTE-DEBUG UNBP UNBUG _.RSTACK BUG CFA-WATCH WATCHED-CFA START-WATCH? IN-BREAKPOINT? REMOTE-DEBUG? MAX.RSTACK +OV? DEBUG-EXIT DEBUG-.S DEBUG-ENTRY $WATCH STACK-WATCH WORD-WATCH DBG-FSTACK DBG-NEXT-CELL .WORD-TYPE-CHAIN DBG-NEST-CHAIN ?WINERROR DEFINEDABORT, (?WINERROR) (FORMATSYSTEMMESSAGE) (GETLASTERROR) MENUKEY-MORE AUTO_KEY? AUTO_KEY MOUSEFLAGS MOUSEY MOUSEX ACTIVATE-CONSOLE FOREGROUND-CONSOLE _ACTIVATE-CONSOLE _FOREGROUND-CONSOLE (SETACTIVEWINDOW) (SETFOREGROUNDWINDOW) (SETWINDOW) CURSOR-ON SHOW-CURSOR CURSOR-OFF HIDE-CURSOR FORTH-IO DUMP DUMPC@ +NO-WRAP -DUMP.F ON-ALLWORDS WORDS WITH-ADDRESS CONSTANTS .WORDS VOCS ORDER HORIZONTAL-LINE USED .MEM .FREE .MALLOCS .PROCS .LIBS .COUNTS .THREADS .THREAD 1TCOUNT .1THREAD COUNT-WORDS COUNT-VOC HEADER-CNT APP-CNT WORDS-CNT SEEMORE REST SHOW-NEXT-OFF SHOW-NEXT-ON DISASSEMBLER SEE 'SEE (SEE) DEBUGGING? .WORD-CHAIN .OTHER-CLASS-CHAIN .EXECUTION-CLASS-CHAIN FDISCARD-NUMBER _FLOAT-NUMBER, FLOAT-RESET-STACKS FLOAT-NUMBER? .FLOAT SEE.FLOAT .ONEFLOAT F.X FDUMP .FDEPTH F.S SHOW-FP-DEPTH F^2 F0<> F2PI FPI/2 G. E. FS. FE. F. (G.) (E.) (FS.) (FE.) (F.) MIN-PRECISION SET-PRECISION PRECISION MAXSIG SIGDIGITS REPRESENT F# >FLOAT F#+> F#-> F+> F-> #FLOAT-ARRAY FLOAT #^FLOAT-ARRAY ^FLOAT FLOAT-ARRAY SFLOATS SFLOAT+ DFLOATS DFLOAT+ FLOATS FLOAT+ SFALIGNED SFALIGN DFALIGNED DFALIGN FALIGNED FALIGN FATANH FACOSH FASINH FTANH FCOSH FSINH FALOG F** FEXPM1 FEXP FLOG FLNP1 FLN FATAN2 FATAN FACOS FASIN FTAN FSINCOS FCOS FSIN F0.5 F10.0 F2.0 FINF F~ FSQRT FABS F2/ F2* 1/F FNEGATE F/ F* F- F+ FMIN FMAX F>= F<= F> F< F= F0> F0< F0= SFS>DS FS>DS F>S S>F ZF>D F>D D>F FROUND FTRUNC FCEIL FLOOR SQ2/2M1 SQ2M1 A2**63 FSMALL FEPS FBIG FLN2 FLOG2 FL2E FL2T F1.0 F0.0 FPI F2NIP F2SWAP F2DUP F2DROP FNIP FPICK FROT FOVER FSWAP FDUP FDROP SFIELD: FFIELD: DFIELD: FLITERAL FCONSTANT  +FTO FTO FVALUE FVARIABLE F, F+! DF! SF! F! DF@ SF@ F@ FSP-ADJUST FSP-CACHED? FINIT FEXAM FPU_STATUS_CCF_DENORMAL FPU_STATUS_CCF_EMPTY FPU_STATUS_CCF_ZERO  FPU_STATUS_CCF_INFINITY FPU_STATUS_CCF_NORMAL FPU_STATUS_CCF_NAN FPU_STATUS_CCF_UNSUPPORTED FPU_STATUS_CCF_MASK_023 FPU_STATUS_CCF_MASK_1 FPU_STATUS_CCF_MASK FDEPTH FSTKUFLO THROW_FLOATSTACKUNDER FLOATSTACK FSTACK-ELEMENTS FLOATSP CELLS/FLOAT FPSW> >FPCW FPCW> >FREGS> >FREGS B/FLOAT .M1NAME .M0NAME OBJ-SAVE ADD-HASH CLASH ?UNHASH UNHASH (UNHASH) HASH-WID HASHED OP! OP@ (IVD+!) (IVD!) (IVD@) (IV+!) (IV!) (IV@) (IVW+!) (IVW!) (IVW@) (IVC+!) (IVC!) (IVC@) (&IV) ^BASE DOOBJ ?EXITM EXITM UNNESTM M1CFA M0CFA ((FINDV)) ((FINDM)) METHOD-HASH VOC-PFA-SIZE CLASSES .FONTS FONTFUNC &FONTFUNC CALLBACK: CALLBACK BUILD-CALLBACK __CDECL __STDCALL __CDECLV CALLBACK-BEGIN CALLBACK-RETURN ]MACRO MACRO[ (]MACRO) (MACRO[) _NOPT-CODE NCODE SUBR: _CODE> _OPT-CODE RESOLVE-OFA CODE-HEADER MACRO: SUBR: ;CODE CODE SET-REGISTER-ASM SET-REGISTER-REF ;INTS ;BYTES NUMBERS: -NUMBERALLOC.F "FILE-CLIP" REQUIRED REQUIRE NEEDS \LOADED \LOADED- LOADED? "LOADED? GOHOME PREPEND<HOME>\ FINDRELATIVENAME FINDRELATIVEPATH MAKEPATHRELATIVETO ISPATHRELATIVETO? MAKEABSOLUTEPATH N"OPEN OPEN-PATH$ "PATH-FILE PROGRAM-PATH-INIT .FPATH FPATH+ FBASE-PATH+ "FPATH+ "FBASE-PATH+ SEARCH-PATH SEARCH-BASE-PATH FIND-PATH FULL-PATH .PATH "PATH+ FIRST-PATH" RESET-PATH-SOURCE NEXT-PATH" PATH: CHDIR .DIR "CHDIR .FORTHDIR .PROGRAM WINVER-INIT WINVER GETREGISTRYENTRY WIN10 WIN8 WIN7 WIN2008R2 WIN2008 WINVISTA WIN2003 WINXP WIN2K WINNT4 WINNT351 WINME WIN98 WIN95 GETSETTING SETSETTING REGSETSTRING REGGETSTRING PROGREG-INIT PROGREG-SET-BASE-PATH REGACCESSMASK REGBASEKEY PROGREG BASEREG (REGSETVALUE) (REGQUERYVALUE) (REGCLOSEKEY) (REGCREATEKEY) (REGOPENKEY) INIT-NEW$ _NEW$ DYNALLOC DYN-OFFSET DYN-PTR MAX-DYN-STRING NAMED-NEW$ SIZEOF@> SIZEOF!> UNPOINTER> POINTER RESIZEPOINTER (RESIZEPOINTER) %SIZEOF@ %SIZEOF! >POINTER %UNPOINTER .POINTERS [UNDEFINED] [DEFINED] #IFNDEF #IFDEF #ENDIF #THEN #IF #ELSE [ENDIF] [THEN] [IF] [ELSE] MODULE EXTERNAL INTERNAL PRIVATE (PRIVATE) ASSEMBLER EDITOR "ANYFIND ANYFIND ANYVOC VOC: +ORDER SET-ORDER GET-ORDER FORTH-WORDLIST PREVIOUS ONLY ALSO DEFINITIONS VOCABULARY #VOCABULARY LEXICON #LEXICON (VOC) SWAP-CURRENT SET-CURRENT GET-CURRENT WORDLIST #WORDLIST #LEXTHREADS #THREADS ANEW POSSIBLY MARKER DO-MARKER MARK DO-MARK FORGET (FORGET) VTRIM TRIM-WINPROCS TRIM-WINLIBS TRIM-HANDLES TRIM-DEFER TRIM-CHAINS FULL-TRIM TRIM? SYS-TRIM? FENCE (GDIUNLOCK) (GDILOCK) (DYNUNLOCK) (DYNLOCK) (POINTERUNLOCK) (POINTERLOCK) (CLASSNAMEUNLOCK) (CLASSNAMELOCK) (DIALOGUNLOCK) (DIALOGLOCK) (CONTROLUNLOCK) (CONTROLLOCK) USEROBJECTLIST IDK_BASEPROC NEWPROC PROC_NEXT GET-VIEWFILE +LNULL C+LPLACE +LPLACE LPLACE "LCLIP" LMAXSTRING LMAXCOUNTED ?ENABLECONSOLEMESSAGES STOPLAUNCHING MYRUNUNIQUE RUNUNIQUE NEWAPPID MYAPPID ERASE$ STRING: #DEFINE ISWINCONSTANT PRESETCONSOLEIO (CONSOLEHIDDENBOOT) (CONSOLEBOOT) (DOSCONSOLEBOOT) (NOCONSOLEBOOT) DOSCONSOLE NOCONSOLEIO MESSAGELOOP MESSAGESTRUCTURE WAITFORMESSAGE PAUSEFORMESSAGES HANDLEMESSAGES HANDLE HANDLES-LIST PRE-SAVE-IMAGE-CHAIN POST-FORGET-CHAIN FORGET-CHAIN SEMICOLON-CHAIN MSG-CHAIN RESET-STACK-CHAIN FORTH-IO-CHAIN UNLOAD-CHAIN INITIALIZATION-CHAIN .CHAINS (.CHAINS) .CHAIN IN-CODE-SPACE? IN-SYS-SPACE? IN-APP-SPACE? TRIM (TRIM) B. BU,.R BUD,.R .R.1 D.R.# (D.#) UD.R UD. U,.R UD,.R (UD,.) (XUD,.) (.) ID. ?.NAME ?NAME ARG-EXT" ARG-NEXT" ARG-1" "ARG-NEXT" ARG-POS" ARG" 2+TO 2TO 2VALUE DO2VALUE+! DO2VALUE! 2+! UNUSED EXPECT SPAN CONVERT ,"TEXT" C+PLACE SYS-RESERVE RESERVE APP-RESERVE \+ \- M+ M*/ UT/ (UT/) MT* UT* TNEGATE STACK-EMPTY? CHECKSTACK NOSTACK1 NOSTACK STACK-CHECK-ON STACK-CHECK-OFF OLDDEPTH CS-ROLL CS-PICK ROLL EXEC: ?+; ?+\ ?-\ ENDCHAR? ".EXT-ONLY" "MINUS-EXT" "PATH-ONLY" ("PATH-FUNC") (CALL-PRE) (CALL-PRFS) BUFFER: IMPORT: AS ALLOT-TO SUPPRESS-SYSTEM \IN-SYSTEM-OK DOIMPORT "HOLD LOWORD HIWORD NR> N>R DEFER! DEFER@ ACTION-OF RESTORE-DEFAULT IS-DEFAULT _RESTORE_DEFAULT _IS-DEFAULT .USERSIZE CFA-COMP, CFA-CODE EXIT-ASSEMBLER ENTER-ASSEMBLER CFA-FUNC GET-COMMANDLINE NOT +Z", +Z," ASCIIZ Z-BUF  -NULL, _\N->CRLF DEFAULTWINDOWPROC _DEFAULTWINDOWPROC WITH-SOURCE? MESSAGE-OFF "TOP-MESSAGE "MESSAGE SAVE-SOURCE RESETSRCINFO .RSTACK STOP/START .. BREAKER MAKEDEFER ?ISCLASS DO|CLASS DOCLASS CTRL ALT ASCII EXCEPTION@ ABS>REL REL>ABS HOLDS EMIT? EKEY>FKEY EKEY>CHAR EKEY? EKEY FOCUS-CONSOLE NORMAL-CONSOLE SHOW-CONSOLE UNHIDE-CONSOLE HIDE-CONSOLE SHOW-WINDOW CONDC SET-CONPOS ?CONTROL ?SHIFT SHIFTMASK ?LINE CRTAB TABBING-ON TABBING-OFF TABING-OFF TABING-ON FIRST-LINE -TAB +TAB 0TAB TAB TAB-WRAP? WRAP? INDENT FIRST-LINE? TABING? TABS-MAX TAB-MARGIN RIGHT-MARGIN LEFT-MARGIN TAB-SIZE ROWS COLS AT-XY >NORM >BOLD PAGE BEEP _BEEP BEEP! TONE TONE_DURA TONE_FREQ SHIFT_MASK CONTROL_MASK ALT_MASK UP_MASK DOWN_MASK DOUBLE_MASK PROC_MASK MENU_MASK MOUSE_MASK K-ALT-MASK K-SHIFT-MASK K-CTRL-MASK SPECIAL_MASK FUNCTION_MASK CONHNDL SUPER-NUMBER? IS-NUMBER? NUMBER? DISCARD-NUMBER IP-NUMBER? IP-SEG WINCON-NUMBER? WINCON-CALL WINENUMPTR WINCONPTR WINCONLIB QUOTED-NUMBER? HEX-NUMBER? 0XL-NUMBER? LASTCHAR NEW-NUMBER BASE-NUMBER? XBASE-CONVERT BASE-TONUM DOTTED-NUMBER? RUN-NUMCHAIN -VE-TEST -IFZEROTHROW NUMBER?-CHAIN //{{NO_DEPENDENCIES}} // COMMENT: (( "COMMENT \S ( COMMENT _COMMENT MULTI-LINE? _COMMEOF ; DO-;CHAIN #DOES> DOES> ?EXIT EXIT .VERSION ((VERSION)) BUILD# VERSION# KWORDS NUF? .REFILL ECHO _START/STOP DELAYS SCREENDELAY .NAME .S WAIT EMIT. H.8 H.4 H.2 H.N H.R EXEM TASK-ENTRY START-INTERPRETER &FORTHDIR &PROGNAM EXCEPT-HANDLER EXCEPT-VALLOC EMPTY-COMMAND-LINE CMDLINE BOOT QUERY-INTERPRET MESSAGE _MESSAGE WARNMSG RESET-STACKS _RESET-STACKS EDIT-ERROR &OF (&OF-VALUE) (&OF-LOCAL) PARMFIND LOCALS| {: { NEXTWORD (LOCAL) LOCFLG INPARMS #-LOCALS LOCAL15 LOCAL14 LOCAL13 LOCAL12 LOCAL11 LOCAL10 LOCAL9 LOCAL8 LOCAL7 LOCAL6 LOCAL5 LOCAL4 LOCAL3 LOCAL2 LOCAL1 LOCAL0 MOVE-LOCALS INIT-LOCALS EXITP UNNESTP DOLOCAL+! DOLOCAL! DOLOCAL LOCALALLOC: LOCALALLOC _LOCALALLOC _LOCALALLOCP _LOCALFREE (DPRWARN) DPR-WARNING-ON DPR-WARNING-OFF DPR-WARNING? \ OK SYS-FLOAD INCLUDE "FLOAD FLOAD $FLOAD INCLUDED INCLUDE-FILE END-INCLUDE START-INCLUDE EVALUATE EXECUTE-PARSING RESTORE-INPUT SAVE-INPUT LINKFILE ISABSOLUTEPATH? ISFILE LOADFILE KERNFILE $CURRENT-DIR! CURRENT-DIR$ $OPEN "OPEN _"OPEN ?DEFEXT "TO-PATHEND" DEFEXT DEFEXT_ON? DEFEXTZ$ DEFEXTMAX DEFEXT$ INCLUDING? STACK-CHECK REFILL LEN-PREV (WINPAUSE) WINPAUSE INTERPRET _INTERPRET ?UNSAVE-SRC SAVE-SRC NUMBER, _NUMBER, QUERY ?STACK DEPTH FIELD+ OFFSET INSERT-STRAND APPEND-STRAND STRAND DO-CHAIN CHAIN-ADD-BEFORE NOOP-CHAIN-ADD-BEFORE CHAIN-REMOVE CHAIN-ADD NOOP-CHAIN-ADD NEW-SYS-CHAIN NEW-CHAIN SYS-CHAIN-LINK CHAIN-LINK +TO TO DOFCON VALUE IS ?IS (IS) @(IP) 2VARIABLE 2CONSTANT USERSIZE NEWUSER USER DEFER VARIABLE CONSTANT CREATE DEFER-LIST RECURSE : :NONAME PARMS-INIT PARMS ?:M [ ] _[ _] #(;CODE) (DOES>) (;CODE) SYS-WARN-DOES? SUPPRESS DOES>? DODOES-CALL, ?CSP !CSP CSP SYNONYM ALIAS HEADER SLOW SLFACTOR "HEADER START/STOP ("HEADER) CLASS>SYS CFAPTR! _HEADER-OFA CONSFILE ENDCASE ENDOF OF CASE +LOOP LOOP ?DO DO REPEAT WHILE AGAIN UNTIL BEGIN ELSE ENDIF THEN -IF IF AHEAD <RESOLVE >RESOLVE <MARK >MARK ?COMP ?EXEC ?PAIRS ABORT" (ABORT") ((")) ?THROW ABORT! NABORT! ABORT THROW CATCH FSAVE-FILE FILE-STATUS RESIZE-FILE WRITE-LINE READ-LINE FLUSH-FILE FILE-SIZE FILE-APPEND REPOSITION-FILE ADVANCE-FILE FILE-POSITION FPARMS-FP RENAME-FILE DELETE-FILE WRITE-FILE READ-FILE CLOSE-FILE CREATE-FILE OPEN-FILE ASCII-Z R/W W/O R/O BIN RESIZE REALLOC RELEASE FREE MALLOC ALLOCATE (MEMUNLOCK) (MEMLOCK) MHEAPSIZE MALLOC-ADJLEN LINK>MEM LINK>HADDR MALLOC-LINK MALLOC-HFLAG DLL WINLIBRARY FREE-DLL LOAD-DLL "WINLIBRARY CALL EXTERN PROC RES-MULTI-LIBS RES-SINGLE-LIB RES-LOADPROC "FIND-PROC PROC-ERROR _PROC-ERROR PROC>NAME PROC>PCNT PROC>LIB PROC>EP PROC>CFA CFA>PROC LIB>NAME LIB>HANDLE IGNORE-MISSING-PROCS? WINPROC-LAST WINPROC-LINK WINLIB-LAST WINLIB-LINK PDP PARSE-S$ /PARSE-WORD /PARSE SLITERAL ." Z" S" C" (.") (Z") (S") (C") NEW$  Z,"  Z", ," ", \N->CRLF LINK, UN-LINK APPEND-LINK ADD-LINK DO-LINK POSTPONE ['] [CHAR] [COMPILE] ' CHAR LITERAL REVEAL HIDE DEPRECATED IMMEDIATE CODE-ALIGN CODE-C, CODE-W, CODE-, CODE-ALLOT CODE-HERE CODE-FREE SYS-ALIGN SYS-COMPILE SYS-COMPILE, SYS-C, SYS-W, SYS-, SYS-ALLOT SYS-HERE SYS-FREE APP-ALIGN APP-ALLOT APP-HERE APP-FREE TURNKEYED? NALIGNED -ALIGNED ALIGN ALIGNED COMPILE COMPILE, SYS-WARNING-ON SYS-WARNING-OFF SYS-WARNING? DUP-WARNING-ON DUP-WARNING-OFF DUP-WARNING? IN-SYS? SYS-ADDR? ALLOT ?MEMCHK C, W, , HERE CODE-ORIGIN SYS-ORIGIN APP-ORIGIN CODE> APPLICATION> SYSTEM> DP> >CODE >SYSTEM >APPLICATION >DP IN-PREVIOUS IN-CODE IN-SYSTEM IN-APPLICATION ODP DP CDP ADP SDP DP-LINK IMG-ENTRY SYS-OFFS SYS-SIZE APP-OFFS APP-SIZE CODE-OFFS CODE-SIZE DEFINED FIND CAPS-FIND NAME-MAX-CHARS SEARCH-WORDLIST (SEARCH-SELF) (SEARCH-WID) "#HASH LATEST-NFA OFA-LAST >OFA@ >FFA@ >VIEW@ >VIEW >HEAD-FIELD N>HEAD >NAME [UNKNOWN] DOVOC VOC>VCFA VCFA>VOC VOC#THREADS VOC>VLINK VLINK>VOC VOC-ALSO HIDDEN FILES LOCALS FORTH ROOT VOC-LINK LAST-LINK LAST LATESTXT CURRENT CONTEXT NFA-COUNT NAME> LINK> N>BFA N>CFAPTR N>LINK L>NAME BODY> >BODY BFA_VFA_PRESENT BFA_FFA_PRESENT BFA_OFA_PRESENT BFA_UNUSED1 BFA_UNUSED2 BFA_UNUSED3 BFA_DEPRECATED BFA_IMMEDIATE .( PARSE PARSE-WORD PARSE-NAME WORD .ID ? H. U.R U. .R . D.R D. (D.) #S # SIGN #> <# HOLD OCTAL BINARY HEX DECIMAL NUMBER ?MISSING (NUMBER?) NUM-INIT -VE-NUM? DP-LOCATION DOUBLE? >NUMBER DIGIT UPPERCASE LOWER UPPER UPC TR TRTZ TRTNZ GETLASTWINERR GETLASTWINERRMSG WINERRMSG MS BYE K_BYE UNLOAD-FORTH #TAB COL SPACES SPCS SPCS-MAX SPACE D_ACCEPT D_KEY D_KEY? D_EKEY>CHAR D_EKEY D_CR D_EMIT D_TYPE D_UNINIT-CONSOLE D_INIT-CONSOLE DOSCHAR INP_REC OUTH INH K32DLL _CONHNDL APPINST SCROLLTOVIEW &THE-SCREEN GETROWOFF GETCOLROW GET-CURSOR SET-CURSOR CHARWH SETCHARWH BG@ FG@ FGBG! GETXY GOTOXY ?CR CR TYPE EMIT CLS "PUSHKEYS PUSHKEY ACCEPT KEY? KEY INIT-SCREEN INIT-CONSOLE CONSOLE MAXASCII K_NOOP2 K_NOOP1 K_NOOP0 .SMAX #TIB SOURCE TIB (SOURCE) LOADING? SOURCE-POSITION SOURCE-ID >IN LOADLINE FIND-BUFFER TEMP$ CUR-FILE POCKET WARNING STATE LAST-ERROR MSG THROW_MSGS MAIN? ASSYNC-TASK MAIN-TASK TASK-STATUS? TASK-FLIP TASK-CLEAR TASK-SET USEROFFS USERMIN USEREXTRA PAD HLD BASE OP LP HANDLER EXC-ACCESS EXC-GUARD &EXCEPT &EXREC TCB SP0 RP0 UP! UP@ NEXT-USER DOCALL-SINGLE DOCALL-MULTI DOEXTERN DOCALL CALL-PROC DMAX DMIN D<> D> D< D0= D0< D= D>S S>D DABS DNEGATE D- D+ BYTE-SORT CELL-SORT LARGEST /STRING -NULLS -TRAILING -TRAILCHARS +NULL +PLACE PLACE "CLIP" -SKIP -SCAN LSCAN LSKIP WSCAN WSKIP SCAN SKIP SEARCH ISTR= STR= COMPARE LCASETAB UCASETAB ZCOUNT LCOUNT WCOUNT COUNT */ */MOD MOD / /MOD FM/MOD SM/REM * M* 4DUP 3DUP 4DROP 3DROP 2ROT 2OVER 2SWAP 2DUP 2NIP 2DROP 2! 2@ BETWEEN WITHIN 0MAX MAX UMAX MIN UMIN DU< U> U< >= <= > < <> = 0> 0< 0<> 0= WORD-JOIN WORD-SPLIT UM/MOD UM* D2/ D2* 1- 1+ U2/ 2/ 2* ABS NEGATE UNDER+ - + BIT-MSB BIT-POP TOGGLE OFF ON CDECR CINCR DECR INCR RSHIFT LSHIFT INVERT XOR OR AND BLANK ERASE FILL MOVE CMOVE> CMOVE CHAR+ CHARS -CELLS +CELLS CELL- CELL+ CELLS- CELLS+ CELLS W+! W! SW@ W@ C+! C! C@ +! ! @ 2R@ 2R> 2>R RDROP R>DROP DUP>R R@ R> >R RP! RP@ SP! SP@ 4REVERSE 3REVERSE S-REVERSE PICK TUCK NIP ?DUP -ROT ROT OVER SWAP DUP DROP _ENDCASE _ENDOF _OF _CASE BOUNDS UNLOOP (+LOOP) (LOOP) ?LEAVE LEAVE K' K J' J I' I (?DO) (DO) _WHILE _UNTIL _REPEAT _AGAIN _THEN _BEGIN -?BRANCH ?BRANCH BRANCH CALLF RETURNF EXEC-SEQ NEXT-SEQ CRLF$ MAXCOUNTED MAX-PATH MAXSTRING MAX-HANDLE #VOCS PTRNULL NULL FALSE TRUE BL -CELL CELL 2 1 0 -1 NOOP PERFORM EXECUTE LIT UNNEST DOOFF DOUSER DOVALUE+! DOVALUE! DOVALUE DO2VALUE DODEFER DOVAR DODOES DOCON DOCOL 
</code>
  *[[http://win32forth.sourceforge.net/doc/|SourceForge "Win32Forth" Documentation]].
    *[[http://win32forth.sourceforge.net/doc/p-history.htm|SourceForge "Win32Forth" Documentation "The History of Win32Forth"]].
    *[[http://win32forth.sourceforge.net/doc/p-debugging.htm|SourceForge "Win32Forth" Documentation "Debugging in Win32Forth"]].
    *[[http://win32forth.sourceforge.net/doc/p-task.htm|SourceForge "Win32Forth" Documentation "Using the Task Wordset"]] - "Multi-tasking in Win32Forth is accomplished by using the Windows multi-tasker".
    *[[http://win32forth.sourceforge.net/doc/p-noconsole.htm|SourceForge "Win32Forth" Documentation "No console"]].
      *"Helper words for turnkey applications that don't need the console window and the  w32fConsole.dll".
      *"For an example of multi-tasking use see  demos/MultiHello.f" ( a FORTH file shipped with Win32Forth, in the "demos" folder ).
  *[[http://www.win32forth.org/|Win32Forth Project Group]]. Last update 2010-02-11.
  *[[http://www.github.com/BillRagsdale|GitHub "Bill Ragsdale"]].
    *[[http://www.github.com/BillRagsdale/WIN32Forth-Guide|GitHub "WIN32Forth-Guide"]].
  *[[http://www.ezforth.com/|ezForth]].
    *[[http://www.ezforth.com/ezForth/Win32Forth/Win32Forth61503/Help/html|ezForth "Wun32Forth Help"]].
    *[[http://sites.google.com/site/ezforth/|Google Sites "ezForth"]] by [[http://www.facebook.com/TaiWanFIG/|Facebook "TaiWanFIG"]].
      *[[http://sites.google.com/site/ezforth/win32forth|Google Sites "Win32Forth"]].
  *[[http://sites.google.com/site/figtaiwanfigtaiwan/|Google Sites "FigTaiwan"]].
    *[[http://sites.google.com/site/figtaiwanfigtaiwan/resource/fu-shi-ban-ben/mian-fei-ban-ben/win32forth|Google Sites "FigTaiwan" - "01 Win32Forth"]].
  *[[http://www.github.com/JohnAlanPeters/Win32Forth|GitHub "JohnAlanPeters/Win32Forth"]] - Clone copy.
  *[[http://comp.lang.forth.narkive.com/hUnkZRnW/forth-as-smartphone-s-operating-system|Narkive News Archive "comp.lang.forth.narkive.com", Thread "Forth as smartphone's operating system"]], 2018  - "What tools offers Win32forth ... Full sources of anything. A simple installing complete IDE, with editor, full source debugger, with tracing capabilities, Assembler, Disassembler, Full C interface, lots of libraries for TCP-IP for example, is easy to write a server (in real it is already written).... Win32forth has lots of examples ready to go, how to access the full hardware of your PC, you can read and write on COM ports Parallel ports" :-).
  *Expert comment about the history of Win32Forth. 
    *"Tom Zimmer hat Anfang der 2000 aufgegeben, aber er hatte viele Programmierer dabei zum helfen, die danach alleine oder zusammen weiterentwickelten".
    *"Es waren ca 20 Top Programmierer in diesem Team, Howerd Oakford, Dirk Brühl und ein anderer Dirk".
    *"Fast alle Forth Programmierer die Du heute kensst, haben mit Win32forth Programme geschrieben. es war ausserordentliches System".
    *"Win32forth lauft fast kaum in modernen Rechner, so es macht kein Sinn. Win32forth konnte man nicht in Windows >XP installieren. so haben alle aufgegeben. Windows hat win32forth als ein Virus Programm gesehen, so kannst Du auch nicht mehr den Turnkey oder SAVE benutzen, es wird alles von der Festplatte gelöscht"
    *"Das tolle Feature von Win32forth war, dass Du EXE Programme herstellen konntest und danach verbreiten. Als Windows dies dichtmachte hat der ganze Prozess kein Wert mehr".
    *"Es gab viele Seiten mit Win32forth Programme, es gab sogar Seiten mit Win32forth Server auf Forth geschrieben, die als Virus auftauchten und dann gesperrt wurden. Es fing eigentlich mit einem XP-Patch schon an".
    *"Man hätte es retten können, aber es gab Leute die mit Win32forth Virus Applikationen schrieben. Computer Chaos Club usw.".
  *[[http://alt.forth-ev.de/article.php?story=20190310140217952|Forth-Gesellschaft e.V. "Win32Forth heilen !"]], 2019-03-10 - "Trotzdem wird Win32F als 'Falsch Positiv' identifiziert und blockiert. Nach weiterer Suche fand ich einige Probleme im HEAD von PE-EXE. Einige Eingaben erwiesen sich als problematish, und mit einem anderen HEAD, geborgt aus einer aelteren Version von Tom Zimmer, konnte ich die Entdeckungsrate ganz beeindruckend vermindern".
  *Fan pages & FORTH application pages.
    *Peter Forth.
      *[[http://sites.google.com/view/win32forth/|Peter Forth "Forth Programming Language"]] - "Win32forth".
        *[[http://sites.google.com/view/win32forth/win32forth-readme/alphabetical-wordlist1|Peter Forth "Forth Programming Language" - "Alphabetical Wordlist1]] - "General Forth Alphabetical Wordlist-1. Non-Floating Point Words ( F83 standart words )".
        *[[http://sites.google.com/view/win32forth/win32forth-readme/alphabetical-wordlist2|Peter Forth "Forth Programming Language" - "Alphabetical Wordlist2]] - "General Forth Alphabetical Wordlist-1. Floating Point Words ( Forth 83 Floating Point )".
      *[[http://sites.google.com/view/win32forth/videos-on-w32forth|YouTube, Peter Forth "Videos on Win32forth"]].
    *[[http://home.planet.nl/~josv/|Jos v.d.Ven "4th"]] - "Downloadpage for free programs. All the programs were generated by Win32Forth or its kernel" => Jos v.d.Ven is using Win32Forth for Graphics and parallel arithmetic.
    *[[http://web.archive.org/web/*/http://www.sunterr.demon.co.uk:80/|Archive.org "Working with Win32Forth"]] ( - 2005-12-11 ).
    *[[http://web.archive.org/web/*/http://www.concentric.net/~jkelm/win32for/|Archive.org "Jeff Kelm: Win32 Programming Examples using Win32For"]] ( - 2013-06-18 ).
    *[[http://www.forth.org/svfig/Win32Forth/items.html|Silicon Valley Forth Interest Group "Win32Forth Items"]].
    *[[http://web.archive.org/*/http://users.cybercity.dk/~ccc27382/us/w32forth.html|Archive.org "Michael Hillerström: Win32Forth"]].
    *[[http://web.archive.org/web/*/http://win32forth.de.vu/|Archive.org "Dirk Busch: Win32Forth"]].
    *[[http://web.archive.org/web/*/http://mrrainbowsallysir.1afm.com/Win32Forth/FUN.htm|Archive.org "Rainbow Sally: The FUN series for Win32Forth  (Beginners to Intermediate)"]] ( - 2008-05-14 ).
    *[[http://web.archive.org/web/*/http://phma.hn.org/Software/csv2html.html|Archive.org "Pierre Abbat: csv2html"]].
    *[[http://web.archive.org/web/*/http://www.marioferrari.org/emupbforth/emupbforth.html|Archive.org "Mario Ferrari: emupbForth"]] ( - 2016-04-05 ).
    *[[http://web.archive.org/web/*/http://www.larrybrucedaniel.com/forth/|Archive.org "Larry Bruce Daniel: Win32forth Programs"]] ( - 2008-05-09 ).
    *[[http://web.archive.org/web/*/http://cview.myweb.hinet.net:80/forth/index.htm|Archive.org "Lcc Wizard's Forth tools for Win32forth"]] ( - 2007-10-21 ).
== Howerd Oakford's Win32Forth6v05H ==
  *[[http://www.inventio.co.uk/LegacyIndex.htm|Inventio Software Techie Page]] by Howerd Oakford - "Win32Forth6v05H 2019 Mar 02. The ‘H’ is for Howerd, although I have kept as much of the original V6.05 as possible. This version of Win32Forth runs under Windows 7 and 10 and does not trigger my anti-virus program".
  *Experts told me, that "Win32Forth6v05" still is almost like the latest Tom Zimmer's last "Win32Forth Version 4.2 Build 671"! There was never a version 5. Some Win32Forth releases after 6.05, Win32Forth was heavily modified. The current stable version of Win32Forth is 6.15, in 2021, though there is a Win32Forth 6.16 somewhere out.
  *[[http://www.inventio.co.uk/forthvsc.htm|Inventio Software "Forth Versus C"]], 2004.
== visualFORTH based on Win32Forth ==
  *[[http://www.visualforth.org/|visualFORTH]] - "VisualFORTH based on Win32Forth for Windows 95/98/ME/NT4/W2K/XP/VISTA/W7/W8/W10".
  *Blog [[http://visualforth.blogspot.com/|Blogspot "visualFORTH"]] ( - 2019-03-15 ).
  *[[http://www.smallestplcoftheworld.org/visualFORTH.pdf|smallestplcoftheworld "Anleitung visualFORTH Alpha-Version für WindowsXP"]] ( PDF ).
== Win32FX based on Win32Forth 6.01 ==
  *[[http://win32fx.sourceforge.net/|SourceForge "Win32FX"]]. [[http://www.sourceforge.net/projects/win32fx/|SourceForge "Win32FX"]], [[http://win32fx.sf.net|win32fx.sf.net]] - "Evolved from Win32Forth 6.01. Code runs ten times faster on older cpu's. Absolute addressing makes the VM simple to understand. Five stacks and demos showing why modern Forths need at least 4, and preferably 5 stacks to be viable in today's computer".
== Mind.Forth based on Win32Forth ==
  *[[http://mind.sourceforge.net/|SourceForge "Mind.Forth"]] - Simulator "Mind in JavaScript for MSIE".
    *[[http://mind.sourceforge.net/forth.html|SourceForge "Mind.Forth" - "Forth for Artificial Intelligence in Robots"]].
    *[[http://mind.sourceforge.net/mind4th.html|SourceForge "Mind.Forth" - "MindForth Free AI Source Code for Robots"]] - "Before you take the trouble to download and unzip the specific Win32Forth W32FOR42_671.zip version into which you must 'fload' and run the free AI source code listed below".
  *[[http://www.sourceforge.net/projects/mind/|SourceForge "Mind.Forth"]].
  *[[http://dl.acm.org/doi/10.1145/307824.307853|ACM Digital Library "Mind.Forth: thoughts on artificial intelligence and Forth"]].
  *Book [[http://www.amazon.de/exec/obidos/ASIN/0595259227/hemmerling-21|Arthur Murray: "AI4U: Mind-1.1 Programmer's Manual"]], 2002.
    *[[http://ai.neocities.org/ai4ubook.html|Neocities "Artificial Intelligence for You (AI4U). A Supplement to the AI4U Textbook of Artificial Intelligence"]].
=== WinForth64 ===
  *[[http://winforth64.sourceforge.net/|SourceForege "WinForth64"]], [[http://www.sourceforge.net/projects/winforth64/|SourceForege "WinForth64"]] - Under active development in 2022-05. Presented at FORTH2020 Zoom meetings in 2022-05.
=== FORTH for MacOS prior MacOSX ===
  *[[http://www.gryphel.com/|Gryphel Project]] - "The goal of the Gryphel Project is to help preserve software made for early Macintosh computers, the computers that Apple sold from 1984 to 1996 based upon Motorola’s 680x0 microprocessors".
    *[[http://www.gryphel.com/c/sw/program/pocforth/|Pocket Forth, hosted by the Gryphel Project]].
  *[[http://web.archive.org/web/*/http://chemlab.pc.maricopa.edu/pocket.html|Archive "The Pocket Forth Page"]] ( - 2006-12-05 ).
  *[[http://www.de1lib.org/book/526831/906cba|Z-Library "C. Heilman: Pocket Forth manual.V0.6.5"]].
=== FORTH for Android OS & Raspberry Pi ===
== Any MSDOS FORTH on Android OS & Raspberry Pi ==
  *[[http://www.youtube.com/watch?v=RbEhH70pimE|YouTube "How to install Dosbox for android full tutorial"]].
  *[[http://play.google.com/store/search?q=gdosbox|Google Play - Search for "gdosbox"]].
  *[[http://www.apkpure.com/de/gdosbox-dosbox-for-android/org.gemesys.android.dosbox|APKpure "gDosBox - DOSbox for Android"]].
== Any MSDOS FORTH on Raspberry Pi ==
  *[[http://www.youtube.com/watch?v=AU9BuKDVQoU|YouTube "FOUR FORTHS on the PI (Dos version)"]].
== Native FORTH for Raspberry Pi ==
  *pijFORTHos.
    *[[http://www.github.com/organix/pijFORTHos|GitHub "organix / pijFORTHos"]] - "A bare-metal FORTH operating system for Raspberry Pi".
    *The OpenSource FORTH [[http://www.github.com/johnhw/minforth|GitHub "Raspberry Pi JonesFORTH O/S"]] - "Minimal FORTH for bare-metal RPi, based on pijFORTHos".
      *[[http://www.github.com/nornagon/jonesforth/blob/master/jonesforth.S|GitHub "nornagon / jonesforth"]].
      *[[http://www.sifflez.org/|Pablo de Oliveira Castro]].
        *[[http://sifflez.org/lectures/ASE/|Pablo de Oliveira Castro "Architecture des Systèmes Embarqués"]].
          *[[http://www.sifflez.org/lectures/ASE/C3.pdf|Pablo de Oliveira Castro "ASE: Writing a forth interpreter from scratch"]] ( PDF ), 2013.
          *"The 2013 project was to port JonesForth interpreter to ARM. During one month the students translated the x86 original version to ARM assembly using linux EABI".
          *[[http://www.github.com/M2IHP13-admin/JonesForth-arm|GitHub "M2IHP13-admin / JonesForth-arm"]].
  *[[http://www.github.com/marto1/raspforth|GitHub "marto1 / raspforth"]] - "Forth interpreter for bare metal raspberry pi".
    *[[http://marto1.github.io/articles/rpiforth/|GitHub.io "hacks:Bare metal rpi forth interpreter"]].
== Resources ==
  *[[http://uwiki.strotmann.de/view/forth-implemented-in-cc|Carsten Strotmann's Federated Wiki "Forth implemented in C/C++"]].
  *[[http://comp.lang.forth.narkive.com/hUnkZRnW/forth-as-smartphone-s-operating-system|Narkive News Archive "comp.lang.forth.narkive.com", Thread "Forth as smartphone's operating system"]], 2018.
    *"You can install anytime a DOS Forth on an Android device... There is an application called gDosBox that will run any Forth or other compiler (in this case the video is about running turbo Pascal) on an android Phone".
=== FORTH Systems for ATARI 400/800 ===
  *Atari ValFORTH.
    *"valFORTH. An Extended fig-FORTH (c) 1982 Valpar International".
    *[[http://www.atariwiki.org/wiki/Wiki.jsp?page=ValFORTH|ATARI Wiki "ValFORTH"]].
    *The online manual [[http://archive.org/details/ValFORTHDocumentation|Archive.org "Atari ValFORTH"]], with much FORTH source code.
=== FORTH for the BBC Microcomputer ===
  *[[http://www.youtube.com/watch?v=7rtkLyr6lVw|YouTube "01 Acornsoft Forth Config"]].
=== FORTH for Commodore Amiga & AmigaOS ===
  *The once-commercial, now free [[http://www.jforth.org/|JForth]].
=== FORTH Systems for Commodore C64, VC20 ===
  *[[http://www.github.com/jkotlinski/durexforth|GitHub "jkotlinski / durexforth"]] - "Modern C64 Forth".
  *[[http://www.youtube.com/watch?v=1XdgUK1NbpI|YouTube "Programming in FORTH on Commodore 64"]].
=== FORTH Systems for ESP8266 ===
  *"Punyforth"
    *[[http://www.github.com/zeroflag/punyforth|GitHub "zeroflag / punyforth"]].
    *[[http://www.gitter.im/punyforth/|Gitter "punyforth - Forth inspired programming language for the ESP8266]].
    *[[http://www.hackaday.com/2016/12/23/interactive-esp8266-development-with-punyforth/|Hackaday "Interactive ESP8266 Development With PunyForth"]], 2016.
    *[[http://www.twitter.com/hashtag/punyforth|Twitter "#punyforth"]].
    *[[http://www.youtube.com/watch?v=NvZHxFj0pt8|YouTube, Peter Forth "Win32Forth to Punyforth"]].
=== FORTH Systems for IBM-PC & MSDOS ===
  *The free FORTH system [[http://forth.hcc.nl/producten/chforth.html|HCC!Forth, van Coos Haak "CHForth"]] - "CHForth (van Coos Haak) is a 16 bit ANSI standard implementation for Intel 80x86 processors under MSDOS or DRDOS. It runs in real mode (16 bit 8086) and uses multiple segments giving it much more programming memory than F83 or the MS-DOS version of ciforth".
  *ciforth for MSDOS, Linux,...
    *[[https://home.hccnet.nl/a.w.m.van.der.horst/ciforth.html|Albert van der Horst "ciforth"]].
    *[[http://home.hccnet.nl/a.w.m.van.der.horst/figforth.html|Albert van der Horst "The Last Fig-Forth Ever"]].
    *[[http://home.hccnet.nl/a.w.m.van.der.horst/forth32.html|Albert van der Horst "forth32 : a 32 bit MSDOS excerpt of fig-Forth"]].
  *"F-PC" ( "FPC" ) for MSDOS.
    *[[http://www.forth.org/eforth.html|Forth Interest Group ( FIG ) "Public Domain Forths"]] => "fpc. Forth optimized for PC by Tom Zimmer & Robert Smith".
    *[[http://www.github.com/uho/F-PC|GitHub "uho / F-PC"]] - "F-PC - a Forth system optimized for IBM-PC, XT & AT machines running DOS".
    *[[http://dl.acm.org/doi/10.1145/382122.382928|ACM Digital Library "F-PC: FORTH optimized for IBM-PC"]], 1989 - "F-PC is a public domain Forth system optimized for IBM PC/XT/AT type of computers under MS-DOS operating system. It is supplied on a set of four diskettes with all the source code and documentation. Files are all compressed in the ARC format. The diskettes are not copy-protected and the users are free to make backup copies and, with one exception, to give copies to others".
    *[[http://www.pcorner.com/list/FORTH|The Programmer's Corner "Forth Source Code"]].
      *"ANSISEQ.ZIP, Mar 12 1994 - Ulrich Hoffman's ANSForth compatibility suite for FPC forth".
  *"Pygmy Forth" => See on this page.
  *"VolksForth" => See on this page.
=== FORTH System for JU+TE-Computer ===
  *[[http://hc-ddr.hucki.net/wiki/doku.php/tiny|Homecomputer DDR "JU+TE TINY"]].
  *[[http://hc-ddr.hucki.net/wiki/doku.php/tiny/forth|Homecomputer DDR "FORTH"]].
    *"Das JU+TE-FORTH-System setzt das 4K-System ES1988 sowie 8 Kbyte RAM voraus. Das FORTH-System wird von Kassette geladen und läßt sich ab %E000 über PROG oder BASIC starten".
    *"Auf die Screenarbeit wurde verzichtet, da mit der Bildschirmgröße und RAM- Austattung des JU+TE-Computers zu enge Grenzen gesetzt sind. Statt dessen können mit dem Wort VIEW alle Wörterbucheinträge rückübersetzt werden".
=== FORTH System for LEGO MindStorms RCX ===
  *[[https://web.archive.org/web/*/http://hempeldesigngroup.com/index.html|Archive.org "Hempel Design Group|]] ( "index.html" is mandatory, - 2010-10-23 ).
  *[[http://web.archive.org/web/*/http://www.hempeldesigngroup.com/lego/|Archive.org "Hempel Design Group: pbForth / lego / pbForth"]] ( - 2001-12-16 ).
    *[[http://web.archive.org/web/*/http://www.hempeldesigngroup.com/lego/pbForth/|Archive.org "Hempel Design Group: LEGO Models and Robotics"]] ( - 2011-02-09 ).
    *[[http://web.archive.org/web/*/http://www.hempeldesigngroup.com/lego/pbForth/homePage.html|Archive.org "Hempel Design Group: pbForth / lego / homePage.html"]] ( - 2009-02-08 ) - "pbForth Home Page".
  *[[http://www.github.com/BrickBot/pbForth|GitHub "BrickBot / pbForth"]] - "pbForth is (yet another) incarnation of Forth that is designed to work with the LEGO MindStorms RCX brick as an alternative firmware for the RCX".
  *[[http://www.tldp.org/HOWTO/Lego/l|Luis Villa "Lego Mindstorm with Linux Mini-HOWTO"]].
    *[[http://www.tldp.org/HOWTO/Lego/pbforth.html|Luis Villa "Lego Mindstorm with Linux Mini-HOWTO" - "pbforth"]].
  *[[http://web.archive.org/web/*/http://www.whoishostingthis.com/resources/forth-programming/|Archive.org "WhoIsHostingThis? - Frank Moraes: Forth: A Weird Programming Language. Here’s Why You Might Love It Anyway", 2020]] ( - 2021-01-22 ).
    *"pbForth does not appear to be supported anymore".
    *"So it wasn't at all surprising that a Forth implementation was created for the LEGO MINDSTORMS robotics kit — specifically, the 16-bit RCX that came out in 1998. It seems never to have been updated to work with the second generation, NXT series, which came out in 2006, nor the current MV3, which came out in 2013... The NXT uses a completely different (and 32-bit) processor, so pbForth would certainly not work with it".
=== FORTH Systems for Microchip / Atmel MCUs ===
== Microchip ==
  *[[http://www.rs-online.com/designspark/forth-based-controller-for-embedded-control|RS Components GmbH - DesignSpark, Bill Marshall: "A Forth-based Embedded Controller Development System"]], 2020-09.
    *The FORTH implementation "FORTHdsPIC" , based on the chip "Microchip dsPIC33".
== Atmel ==
  *The OpenSource "almost ANS94 compatible" FORTH system [[http://amforth.sourceforge.net/|SourceForge "amforth"]], [[http://www.sourceforge.net/projects/amforth|SourceForge "amforth"]] for Atmel ATmega CPUs.
    *[[http://pages.physics.wisc.edu/~lmaurer/projects/FloatingAway/FloatingAway.html|Leon Nathaniel Maurer "Floating Away with AmForth"]].
    *[[http://www.hackaday.com/2013/10/12/a-simple-forth-development-board/|Hackaday "Brian Benchoff: A Simple Forth Development Board"]].
  *[[http://www.github.com/wa1tnr/ainsuForth-gen-exp-m4|GitHub "wa1tnr / ainsuForth-gen-exp-m4"]] - "ainsuForth - generalized - all targets, including SAMD51 M4 - experimental ".
    *[[http://learn.adafruit.com/alternative-languages-for-programming-SAMD-boards/forth|AdaFruit "Alternative languages for programming the SAMD51 boards"]].
=== FORTH System for Parallax MCUs ===
== Propforth ==
  *[[http://code.google.com/archive/p/propforth/|Google Code "propforth"]].
    *"LittleRobot(tm) Functional Demo for Propforth".
  *Github clone repositories:
    *[[http://www.github.com/prof-braino/PropForth5.5|GitHub "prof-braino / PropForth5.5"]].
    *[[http://www.github.com/KvdV49/propforth|GitHub "KvdV49 / propforth"]].
  *[[http://www.hackaday.io/project/2146-propforth|Hackaday "propforth. interactive driver development for real time embedded systems. Allow preprocessing and prefiltering of data streams"]], 2014.
  *[[http://www.youtube.com/watch?v=1Z5kE-3XzS0|YouTube "Drawbot Using Propforth and eBay Steppers"]], 2013.
  *[[http://www.dangerousprototypes.com/blog/2012/11/14/propforth-5-0-and-beginners-guide-available/|DangerousPrototypes "PropForth 5.0 and beginner’s guide available"]], 2012.
== Tachyon Forth ==
  *[[http://www.sourceforge.net/projects/tachyon-forth/|SourceForge "Tachyon Forth"]], [[http://tachyon-forth.sourceforge.net/|SourceForge "Tachyon Forth"]] - "A fast compact embeddable commercial quality Forth for Parallax MCUs".
  *[[http://rbehm-ibb.github.io/Tachyon-IDE/|GitHub.io "Tachyon-IDE"]], [[http://github.com/rbehm-ibb/Tachyon-IDE|GitHub "rbehm-ibb / Tachyon-IDE"]].
== Resources ==
  *[[http://forums.parallax.com/discussion/141704/comparison-of-propeller-forth-implementations|Parallax Forums "Comparison of Propeller Forth Implementations"]].
  *[[http://forums.parallax.com/discussion/172079/my-tachyon-forth-new-experience|Parallax Forums, Thread "My Tachyon Forth, new experience"]].
  *[[http://forums.parallax.com/discussion/170964/propforth-v6|Parallax Forums "PropForth V6?"]].
    *"PropForth5.5 is last version for P1".
    *"I have been trying to use Tachyon for my project, but it is sufficiently unique and for me it is quite frustrating because it is different in its behavior from other Forth implementations. Peter Jakacki is a very talented programmer and he has developed this system to fit his way of thinking. I am struggling trying to figure stuff out. Things that were easy in other implementations are vague and hard to discover".
  *[[http://forums.parallax.com/discussion/168258/how-about-a-forth-stamp|Parallax Forums "How about a 'FORTH stamp'?"]].
    *There are at least 4 different versions of forth for the propeller. All versions can make use of the multiple cores of the propeller.
      *Three versions (Tachyon 3 & 4, and Propforth 5) are optimized for the propeller with many words defined for sensors, communications, actuators.
      *One version (pfth) is a standard ANS forth with some key words defined for use with the propeller. I found it useful for learning interactively some low level propeller features by interactively adjusting parameters in one core and transferring data to words running in other cores.
=== FORTH Systems for Texas Instruments TI-99/4A console with 32K Memory Expansion ( and Disk System ) ===
  *[[http://www.turboforth.net/|TurboForth]].
  *[[http://www.turboforth.net/resources.html|TurboForth "Resources"]].
    *[[http://www.turboforth.net/resources/arrays.html|TurboForth "Arrays"]].
=== FORTH Systems for Texas Instruments MSP430 ===
== 4E4th ==
  *[[http://wiki.forth-ev.de/doku.php/en:projects:4e4th:start|Forth e.V. Wiki "4E4th - the New Version 2018"]].
  *[[http://wiki.forth-ev.de/doku.php/projects:4e4th:4e4th:start:beispiele||Forth e.V. Wiki "Programmierbeispiele"]].
== eForth ==
  *See above on this page.
== FASTFORTH ==
  *[[http://www.framagit.org/Jean-Mi/FAST-FORTH|Explore GitLab "Jean-Michel THOORENS / FAST-FORTH"]] - "FORTH for TI MSP430FRxxxx, 16MHz, 5 Mbds terminal + macro assembler + conditional compiler in just 5 kb!".
== Mecrisp ==
  *See above on this page.
== muforth ==
  *See above on this page.
== noForth ==
  *[[http://home.hccnet.nl/|Albert Nijhof]].
    *[[http://home.hccnet.nl/anij/nof/noforth.html|Albert Nijhof  "noForth"]] - "An interactive stand-alone forth for RISC-V (32bits) and MSP430 (16bits)".
== Egel Project ==
  *[[http://home.hccnet.nl/willem.ouwerkerk/egel-for-msp430/egel%20for%20launchpad.html|Willem Ouwerkerk "Egel project for MSP430 but mainly for MSP430G2553 on Launchpad"]].
=== FORTH Systems for ZX81 ===
  *[[http://zx81.eu5.org/toddysofte.html|Toddy Software]] for ZX-81.
    *ZX81 Toddy Forth (JAN/2011).
    *Micro Sistemas Forth V2.0 (2010/JAN).
    *ZX81 Fig Forth 1.1H alfa  (2009/JUL).
    *[[http://www.rwapsoftware.co.uk/zx81/zx81_software.html|RWAP Software "Software for the Sinclair ZX81 Home Computer"]].
  *[[http://www.zx81stuff.org.uk/zx81/tape/Forth|ZX81 tape Forth by Sinclair Research]].
  *See also [[forth.html|FORTH 1/4]] => "Special FORTH-enabled Hardware / Jupiter Ace".
=== Metacompilers for Forth ===
== ANS Proposed Standard ==
  *Forth, Inc.
    *[[http://www.forth.com/downloads/ANS/XCtext5.doc|Forth, Inc. "x. The optional Cross-compiler word set"]] ( Word.doc ), [[http://www.forth.com/downloads/ANS/XCtext5.pdf|Forth, Inc. "x. The optional Cross-compiler word set"]] ( PDF ) - Normative text.
    *[[http://www.forth.com/downloads/ANS/XCapp5.doc|Forth, Inc. "A.X The optional Cross-compiler word set"]] ( Word.doc ), [[http://www.forth.com/downloads/ANS/XCapp5.pdf|Forth, Inc. "A.X The optional Cross-compiler word set"]] ( PDF ) - Explanatory appendices.
    *[[http://www.forth.com/downloads/ANS/XCpaper.pdf|Forth, Inc. "Toward a Standard for Cross-compilers and Embedded Systems"]] ( PDF ) - Overview.
  *[[http://www.mpeforth.com/arena/|MPE Forth "arena"]].
    *[[http://www.mpeforth.com/arena/XCapp5.PDF|Forth, Inc. "x. The optional Cross-compiler word set"]] ( PDF ) - Normative text.
    *[[http://www.mpeforth.com/arena/XCtext5.PDF|Forth, Inc. "A.X The optional Cross-compiler word set"]] ( PDF ) - Explanatory appendices.
== bForth, eForth ==
  *eForth is shipped with a meta-compiler.
  *See on this page "bForth by Bill Muench, eForth by Bill Muench & Chen-Hanson Ting".
== Chromium 2 Metacompiler by  Bradford J. Rodriguez ==
  *[[http://www.camelforth.com/page.php?6|Camelforth "CamelForth/6809"]] - "CamelForth/09 is supplied as source code, and is compiled with a Forth metacompiler, Chromium 2. This compiler, and the corresponding 6809 cross-assembler, are distributed with CamelForth/09. To run this compiler you must have Laxen & Perry F83 for the IBM PC (available for download from the Forth Interest Group, ftp://ftp.forth.org, and from many IBM PC shareware distributors)".
== embed by Richard James Howe ==
  *embed is shipped with a meta-compiler.
  *See on this page, section "FORTH Systems in C/C++".
== GForth ==
  *[[http://www.complang.tuwien.ac.at/forth/gforth/Docs-html/|TU Wien, GForth Manual]].
    *[[http://www.complang.tuwien.ac.at/forth/gforth/Docs-html/Cross-Compiler.html|TU Wien, GForth Manual "15 Cross Compiler"]].
      *[[http://www.complang.tuwien.ac.at/forth/gforth/Docs-html/Using-the-Cross-Compiler.html|TU Wien, GForth Manual "15.1 Using the Cross Compiler"]].
  *See on this page, section "FORTH Systems just for complete Operating Systems ( Windows, Linux, MacOSX )".
== Metaforth by Jan Vermue and Hans Nieuwenhuijzen ==
  *[[http://www.gitlab.com/pimvantend/metaforth-77|GitLab "Pim van Tend / metaforth-77"]] - "A revival of Observatory Metaforth as created by Jan Vermue and Hans Nieuwenhuijzen".
    *[[http://www.gitlab.com/pimvantend/metaforth-77/-/wikis/home|GitLab Wiki "Pim van Tend / metaforth-77 / Wiki"]] - "This is the home page of the wiki for metaforth-77".
  *The free online and PDF book [[http://www.archive.org/details/metaforth-intro|Archive.org "metaforth-intro by Hans Nieuwenhuijzen"]], 1978.
== Win32Forth ==
  *Win32Forth is shipped with a meta-compiler.
  *See on this page.
== Resources ==
  *[[http://www.arduino-forth.com/article/FORTH_metacompilation_intro|FORTH & Arduino ESP32 "Introduction to metacompilation in FORTH"]].
  *"comp.lang.forth".
    *[[http://comp.lang.forth.narkive.com/oY70zYcI/metacompiler-tutorial|Narkive Archive "comp.lang.forth", Thread "Metacompiler tutorial?"]].
      *"There is a proposed ANS compatible metacompilation standard. But you sort of have to understand Forth first to make sense out of the ANS standard, the document is not a tutorial".
      *"Win32Forth's meta-compiler is as badly documented as any I've seen, but you should be able to get the general drift from it".
    *[[http://comp.lang.forth.narkive.com/Bz1Yvgxi/meta-fcode-compiling-create-does|Narkive Archive "comp.lang.forth", Thread "Meta/FCode compiling CREATE ... DOES>"]].
      *Refers to "Open Firmware","11 FCode Dictionary" => See on this page.
    *[[http://comp.lang.forth.narkive.com/8VeV9x65/8-bits-finding-or-writing-a-forth-cross-compiler|Narkive Archive "comp.lang.forth", Thread "8 bits : finding or writing a forth cross compiler"]].
    *[[http://comp.lang.forth.narkive.com/kmFe0NQQ/forth-bootstrapping-framework-bootforth|Narkive Archive "comp.lang.forth", Thread "Forth bootstrapping framework - Bootforth"]].<code>
http://www.forth.com/downloads/ANS/XCtext5.doc (normative text,
http://www.forth.com/downloads/ANS/XCtext5.pdf two formats)
http://www.forth.com/downloads/ANS/XCapp5.doc (explanatory appendices,
http://www.forth.com/downloads/ANS/XCapp5.pdf two formats)
http://www.forth.com/downloads/ANS/XCpaper.pdf (overview)
</code>
  *[[http://computer-programming-forum.com/22-forth/45df83bc51edcdc0.htm||<Programming> computer-programming-forum.com "Meta-compiling"]].
  *[[http://www.ultratechnology.com/meta.html|Jeff Fox, UltraTechnology "Forth Meta Compilation"]].
=== Other Programming Languages & Runtime Systems with RPN, but not really FORTH ===
  *[[http://fiji.sourceforge.net/|SourceForge "FIJI ForthIsh Java Interpreter"]], [[http://www.sourceforge.net/projects/fiji/|SourceForge "FIJI ForthIsh Java Interpreter"]] - "Java interpreter with Forth-like syntax, use it for testing java libs".
  *[[http://www.stabel-lang.org/|Stabel]] - "Small Safe Portable".
    *Free live online system [[http://www.stabel-lang.org/playground.html|Stabel "Playground"]].
    *[[http://www.dev.to/robinheghan|DEV "Robin Heggelund Hansen"]]
    *[[http://www.dev.to/robinheghan/play-a-new-programming-language-that-targets-web-assembly-based-on-forth-5cnf|DEV, Robin Heggelund Hansen "Play: A new programming language that targets Web Assembly, based on Forth"]], 2020.
  *"Maté: A Tiny Virtual Machine for Sensor Networks".
    *[[http://pdfs.semanticscholar.org/46dc/cfc9787ca9359f1c56c386a00a79ab99c430.pdf|SemanticScholar "Maté: A Tiny Virtual Machine for Sensor Networks"]] - "Maté draws on FORTH's design decisions".
    *[[http://www.docslib.org/doc/2005463/mat%C3%A9-a-tiny-virtual-machine-for-sensor-networks|Docslib "Mat´e: A Tiny Virtual Machine for Sensor Networks"]]
    *[[http://www.youtube.com/watch?v=e30dKzhJqdM|YouTube "Dissertation Talk: Resource-Constrained Sensing as a Shared Utility"]].
=== Other Programming Languages & Runtime Systems inspired by Smalltalk, based on FORTH ===
  *[[http://www.powermops.org/|MOPS]] - " Inspired by Smalltalk and the commercial language Neon, Mops is based on Forth with extended object-oriented features such as multiple inheritance, early and late binding, persistent objects, and garbage collection".
    *[[http://www.atpm.com/8.03/mops.shtml|AboutThisParticularMacintosh ( ATPM ) "The Mops Programming Language—Part 1"]].
==== Jupyter Notebook for Software Development with FORTH ====
  *[[http://www.notebook.community/hcchengithub/project-k/Play%20with%20the%20FORTH%20kernel%20on%20jupyter%20notebook|notebook.community "Play with the FORTH kernel on jupyter notebook"]].
==== Online Services for Software Development with FORTH ====
  *[[http://www.mitra.biz/forth/console.html|Mitra Ardron "WebForth demonstration page"]]. 
  *[[http://skilldrick.github.io/easyforth/|GitHub.io "Nick Morgan 'Easy Forth'"]] - Interactive FORTH tutorial in the browser, with FORTH simulator in the browser.
  *[[http://www.ideone.com/|Ideone -Online Compiler and IDE]] - Select "Forth".
      *"6it0B8 - Online Forth Interpreter & Debugging Tool".
      *List of all words by "vlist".
        *Exit statement "kthx bye".
      *Error message during execution, might happen "CPU time limit exceeded" :-(.
  *JDoodle.
    *[[http://www.jdoodle.com/execute-forth-online/|JDoodle "Online Forth IDE" (gforth 0.7.3)]].
      *Options: "[x] interactive", "[ ] interactive".
    *[[http://play.google.com/store/apps/details?id=com.nutpan.jdoodle_app|Google Play "JDoodle"]].
  *[[http://www.replit.com/|replit]] with free "Starter" account.
    *[[http://www.replit.com/languages/forth|replit "Forth Online Compiler & Interpreter"]]  - "Code, collaborate, compile, run, share, and deploy Forth and more online from your browser". "Signup to code in Forth".
    *"Code, create, and learn together. Use our free, collaborative, in-browser IDE to code in 50+ languages — without spending a second on setup".
    *JS-Forth 0.5200804171342, [[http://www.forthfreak.net/jsforth.html|http://www.forthfreak.net/jsforth.html]], [[http://www.github.com/ForthHub/ForthFreak/wiki/Forthfreak-wiki|GitHub "ForthHub / ForthFreak / Forthfreak wiki"]].
    *[[http://en.wikipedia.org/wiki/Replit|EN.Wikipedia "Replit"]].
  *[[http://www.spoj.com/submit/TEST/|Sphere Online Judge (SPOJ)]].
    *[[http://www.spoj.com/submit/TEST/|Sphere Online Judge (SPOJ) "Submit a solution"]].
      *Select "Forth (gforth 0.7.3)".
      *You may submit a solution, but there is no interactive playground ?! :-(.
  *The free online emulation [[http://www.tramm.li/i8080/|Intel 8080 CPU Emulator, by Stefan Tramm]].
    *"Chrome6+ (or Safari5+) required. Firefox does not support the disk subsystem, as currently only WebDB is implemented".
    *Instructions to start volksFORTH:
      -"r 0 cpma".
      -"r 2 volks4th".
      -"r 3 volks4th2".
      -"b".
      -"g 0".
      -"c:".
      -"volks4th".
  *[[http://www.tutorialspoint.com/execute_forth_online.php|Tutorialspoint "Execute Forth Online (gforth v0.7.3)"]] - "Online Forth Compiler - Online Forth Editor - Online Forth IDE - Forth Coding Online - Practice Forth Online - Execute Forth Online - Compile Forth Online - Run Forth Online".
    *[[http://gforth.org/manual/|Gforth Manual]] ( without "www." only ).
    *Stdout is not properly implemented :-(. Somehow, there is no output, though there is output on a local GForth system :-(. So the installation is therefore considered to be broken... :-(.
    **List of all words by "vlist" => The FORTH word "T" is not shippped :-(.
    *The block editor "blocked.fb" is shipped, but is not functional, as the result window screen of the "Execute" function does not support ANSI escape codes ( i.e. these necessary ANSI escape codes for setting the cursor are written as visible code on the screen, instead of beeing interpreted for cursor control ) :-(. 
    *You can´t search by CTRL-F neither in the input window nor the result window, as you can do on any standard HTML web page :-(.
  *[[http://www.tio.run/|Try It Online]] - Select "Categories [x] Practical".
    *[[http://www.tio.run/#forth-gforth|Try It Online "Forth (gforth)"]].
  *[[http://www.xlerb.de/volksforth/|xlerb.de "VolksForth 83, rev. 3.81.41"]] by [[http://www.fh-wedel.de/wir/organisation/team/detail/show/ulrich-hoffmann|Prof. Dr. Ulrich Hoffmann]], 2023-04 - VolksForth in a DosBox, as browser application.
==== Using an OpenSource FORTH for commercial Projects to generate a Sales Product ====
  *Experts warned me to use a modern OpenSource FORTH ( like some FORTH for the ESP8266 ) for commercial embedded system projects, as some of these products are using several different OpenSource libraries ( e.g. to handle WiFi on the ESP8266,.. ) with often a handful of different OpenSource licenses, including some problematic licenses. The idea to compile this with a self-written application in FORTH language to a commercial saleable binary product, without that the hole commercial binary product is effected by the OpenSource libraries, is not quite realistic :-(.
==== History of FORTH ====
=== FIG's & TheFourceSource's History of FORTH ===
  *[[http://www.forth.org/literature/forthlev.html|Forth Interest Group, Glen B. Haydon "LEVELS OF FORTH"]], [[http://www.theforthsource.com/catalog.html|TheFourceSource "The Forth Source - Catalog"]] => "Levels of Forth", "Implementation Levels of Forth".
    -"Level 0".
      *"On several occasions C.H. Moore has listed approximately 63 functions which he considers the essence of Forth".
      *45 functions noted by Glen B. Haydon at one presentation pf Charles Moore: <code>
+ - * /MOD MIN MAX = AND OR XOR NEGATE ABS NOT */ DUP DROP SWAP OVER DECIMAL HEX OCTAL . n .R CR EMIT KEY : ; CREATE , ALLOT IF ELSE THEN FOR NEXT I
</code>
      *Glen B. Haydon: "There are only 45 functions in this list. You can see about which period this was. The list does not include BEGIN, UNTIL, and several other functions belong in Level 0. A figure of about 63 is appropriate. Three functions are used for output to the display. He included no functions for any kind of storage. Screens are not included much less any means of writing on such a screen. Something more than Level 0 is necessary to provide anyone but Chuck enough to work with".
    -"Level 1".
      *fig-Forth.
        *"There was little in the way of documentation beyond the Installation Manual and the source listings. The older publications such as the Kitt Peak Primer and Using Forth did not mesh well with the public domain version available" :-(.
          *"Kitt Peak Primer" => See [[forth03.html|FORTH 3/6]].
          *Document "Using Forth" ???
        *"The fig-Forth implementations took over the disk precluding its use for other programs. The error messages were stored on a disk" :-(. 
    -"Level 2"
      *FORTH-79. 
        *"79 Standard made about 40 changes to the functions in fig-Forth".
        *"Soon there came the 79 Standard which made several changes. It was then proposed that the Forth Interest Group stop supplying the fig-Forth source listings" :-(.
        *Book by Leo Brody "Starting Forth", 1st. edition.
      *MVP Forth, up to 240 or up to 500 functions. The MVP Forth implementation of FORTH-79 takes over a disk format. But the file on Gene Forth Round Table includes several added utilities which allow one to access screens in files and the compiling of text files written with any word processor.
        *"A Forth editor described in Chapter 3 of Starting Forth written by Sam Daniels is included".
        *Suggested reading: 
          *Document "MVP System Documentation".
          *Document "MVP FORTH Guide".
          *Book "Starting Forth", 1st Edition by Leo Brodie.
          *Free document "The Forth Guide" by by Glen B. Haydon.
    -"Level 3".
      *FORTH-83, up to 1000 functions, including the 132 functions from the 83 Standard.
      *Document by Ting "Inside F83".
    -"Level 4".
      *FPC Forth ( = F-PC Forth ), by Tom Zimmer.  2500 functions. Based on the 83 Standard. All of the source code is in text files.
      *Documents by Ting "F-PC Technical Reference Manual" and "F-PC Users Manual".
    -"Level 5". 
      *MVP-F32 Forth( = F32 Forth ), by Rick VanNorman. 32-bit FORTH, up to 900 functions.
    -"Level 6". 
      *Norm ANS Forth, 1994.
      *THIS4TH Forth.
      *MVP-F32 ( = F32 Forth ) by Rick van Norman, with 32-bit MSDOS extender ( DPMI ) support.
=== FORTH.Inc's History of FORTH ===
  *[[http://www.forth.com/resources/forth-programming-language/|FORTH.Inc "The Evolution of Forth"]].
=== Forth 200x Standardisation Committee s History of FORTH 1978-2012 ====
  *[[http://lars.nocrew.org/forth2012/diff.html|Forth 200x Standardisation Committee. Forth 2012. 10th November 2014 "Forth 2012: Compatibility analysis"]].
=== Jeff Fox's History of FORTH 1970-2004 ===
  *[[http://www.ultratechnology.com/forth0.htm|Jeff Fox, UltraTechnology "Forth Software and Hardware by Date"]].
=== TU Wien, Institut für Computersprachen's History of FORTH ===
== Forth Family Tree and Timeline ==
  *[[http://www.complang.tuwien.ac.at/forth/family-tree/|Forth Family Tree and Timeline]].
== Gforth's History of FORTH ==
  -All early Forth systems were custom-made, usually by Charles Moore, who discovered (as he puts it) Forth during the late 60s. The first full Forth existed in 1971. 
  -The principal architect of microForth was Dean Sanderson. microForth was FORTH, Inc.'s first off-the-shelf product. It was developed in 1976 for the 1802, and subsequently implemented on the 8080, the 6800 and the Z80.
  -A team led by Bill Ragsdale implemented fig-Forth on many processors in 1979. Robert Selzer and Bill Ragsdale developed the original implementation of fig-Forth for the 6502 based on microForth.
  -VolksForth was written by Klaus Schleisiek, Bernd Pennemann, Georg Rehfeld and Dietrich Weineck for the C64 (called UltraForth there) in the mid-80s and ported to the Atari ST in 1986. It descends from fig-Forth.
  -Bernd Paysan wrote bigFORTH, a descendent from TurboForth, an unreleased 32 bit native code version of VolksForth for the Atari ST, written mostly by Dietrich Weineck.
  -Gforth descends from bigFORTH (1993) and fig-Forth. Of course, a significant part of the design of Gforth was prescribed by ANS Forth.
==== Resources ====
  *[[http://www.forth.org/eforth.html|Forth Interest Group "Public Domain Forths"]] - Download of several FORTH implementations.
  *[[http://www.forth.org/compilers.html|Forth Interest Group "Forth Compilers Page"]] - "Non-commercial ( public domain, shareware, etc. )".
  *[[http://www.forth.org/commercial.html|Forth Interest Group "Forth Vendors"]].
  *[[http://forth-standard.org/systems|Forth 2012 Standard ( forth-standard.org ) "Systems. List of Forth Systems hosted on github, taken from the ForthHub wiki"]] ( without "www." ).
  *[[http://www.github.com/ForthHub/wiki/wiki/Forth-Systems|GitHub Wiki "ForthHub" - "Forth-Systems"]] - List of Forth Systems #.
  *[[http://www.github-wiki-see.page/m/ForthHub/wiki/wiki/Forth-Systems|GitHub Wiki SEE "Forth Systems . ForthHub/wiki Wiki . GitHub"]].
  *[[http://www.libhunt.com/r/zeptoforth|LibHunt "Zeptoforth Alternatives. Similar projects and alternatives to zeptoforth based on common topics and language"]].
  *[[http://www.reddit.com/r/Forth/comments/p01ht0/looking_for_a_simple_forth_compiler_producing/|Reddit "r/Forth", Thread "Looking for a simple forth compiler (producing asm/executables, not compiling forth words) to learn from, preferably in C family language"]].
  *[[http://www.taygeta.com/forthcomp.html|Taygeta "Forth Compilers on Taygeta"]].
  *[[http://www.thefreecountry.com/compilers/forth.shtml|TheFreeCountry "Free Forth Compilers and Development Systems"]].
  *[[http://sgorla.com.br/6fu47z/forth-for-pc-223745|Sgorla Queijaria e Especiarias "forth for pc"]].
===== Tools & Applications =====
==== Applications & Libraries ====
  *[[http://www.1-9-9-1.com/|1-9-9-1 - A server-side web framework written in Forth]].
    *[[http://news.ycombinator.com/item?id=19146767|Hacker News ( ycombinator.com ) "1991 – a server-side web framework written in Forth (1-9-9-1.com)"]].
  *[[http://alexript.tripod.com/|alexript "Java-Like Units Realisation"]].
  *Block editors written in FORTH.
    *[[http://www.tunes.org/wiki/block_20editor.html|TUNES Project Wiki "CTO ( Cliki.Tunes.Org ) CLiki for the TUNES project" - "Block Editor"]].
      -"RetroForth's Block Editor".
      -"VIBE: VI-like Block Editor".
  *Blog engine in FORTH.
    *[[http://www.github.com/sam-falvo/unsuitable|GitHub "sam-falvo/unsuitable"]] - "From Bitbucket -- A blog engine in Forth".
    *[[http://www.youtube.com/watch?v=mvrE2ZGe-rs|YouTube "Over the Shoulder 1 - Text Preprocessing in Forth"]].
  *[[http://www.forthworks.com/atua|Charles Childers, Forthworks "Atua: A Gopher Server in Retro"]].
  *[[http://code.google.com/p/ffl/|Google Code "ffl - A general purpose Forth library"]].
  *"The Forth Scientific Library Project library".
    *[[http://www.taygeta.com/fsl/|Skip Carter "The Forth Scientific Library Project library"]].
    *[[http://soton.mpeforth.com/flag/fsl/|FLAG - Forth Library Action Group "FSL - Forth Scientific Library"]].
    *[[http://www.github.com/Josefg/Scientific_FORTH|GitHub "Josefg / Scientific_FORTH"]].
    *[[http://www.de1lib.org/book/526702/7884d0|Z-Library "E. Carter: The Forth scientific library project"]] ( Microsoft Compiled HTML Help ).
  *[[http://forth-script.sourceforge.net/|SourceForge "Forth Script - web scripting engine"]], [[http://www.sourceforge.net/projects/forth-script/|SourceForge "Forth Script - web scripting engine"]].
  *[[http://www.qs.net/ok1fou/quartus/|OK1FOU "Morse Trainer in Quartus Forth"]].
  *[[http://mind.sourceforge.net/mind4th.html|SourceForge "MindForth Free AI Source Code for Robots"]], [[http://mind.sourceforge.net/|SourceForge "Artificial Mind Control Panel"]], <del>[[http://www.sourceforge.net/projects/mind|SourceForge "Mind"]]</del>.
  *[[http://www.github.com/nickpascucci/|GitHub "Nick Pascucci"]].
    *[[http://www.github.com/nickpascucci/boardforth|GitHub "nickpascucci / boardforth"]] - "BoardForth is an experimental Forth-based circuit board design tool. It integrates pForth with SDL2 to provide graphics display capabilities in a portable and lightweight Forth environment".
  *[[http://www.taygeta.com/fsl/sciforth.html|Taygeta Scienific, Skip Carter "The Forth Scientific Library Project"]].
  *[[http://home.kpn.nl/josv/|Jos v.d.Ven "Using Win32Forth for Graphics and parallel arithmetic"]].
  *[[http://www.robo-forth.de/|Herbert Weidner "ROBOprogy - der Komplettbaustein für programmierbare Steuerungen"]].
  *[[http://www.github.com/JonnyBritish/Mako/tree/master/games/Warrior2|GitHub "Warrior2"]] - "Forth Warrior is a game of programming, stabbing and low cunning. Your Forth code controls the actions of a valiant adventurer as she plunges ever deeper into a mysterious dungeon. Gather precious gems, defeat slime creatures and watch your step! Your program must fit in 8 kilobytes and is scored based on how many cycles it takes to execute, how many actions are taken, how many gems are collected and how many slimes are defeated. Once you've made it through all the levels, try to optimize your code and hone your strategy to maximize your score!".
==== Complete Application with FORTH as Programming Language ====
=== Games ===
  *"Cosmic Conquest" of 1982.
    *[[http://www.archive.org/details/byte-magazine-1982-12/page/nundefined/mode/1up?q=cosmic+conquest|Archive.org "Byte Magazine Volume 07 Number 12 - Game Plan 1982"]].
      *"BYTE Game Contest. Cosmic Commands".
    *[[http://www.github.com/RickCarlino/Cosmic-Conquest-1982|GitHub "RickCarlino/Cosmic-Conquest-1982"]].
  *[[http://forthsalon.appspot.com/|Forth Haiku]] - "A Forth Haiku is an attempt to mix mathematics, art, and the Forth programming language".
    *[[http://www.quaxio.com/forth_haiku/|Alok Menghrajani "Forth Haiku. mixing math, art and Forth"]] - "Brad Nelson built a fun little website, where you write little programs which generate animations (and sound). The programs are written in a subset of Forth (a stack oriented programming language) and can only do very simple operations: there are no loops or conditional statements. You also cannot preserve state across the animation frames, so the end result looks mostly like an animated gif".
    *Author:
      *[[http://github.com//bradn123|GitHub "Brad Nelson ( bradn123 )"]].
      *[[http://github.com//flagxor|GitHub "Brad Nelson ( flagxor )"]].
      *[[http://bradn123.github.io/|GitHub.io "Brad Nelson"]].
      *[[http://www.facebook.com/flagxor|Facebook "Bradley Nelson ( flagxor )"]].
    *[[http://www.reddit.com/r/Demoscene/comments/2e477x/forth_salon_a_forth_haiku_is_an_attempt_to_mix|reddit "r/Demoscene" - "Forth Salon - "A Forth Haiku is an attempt to mix mathematics, art, and the Forth programming language." [x-post /r/Forth]"]].
  *[[http://www.github.com/ForthWin/Forth2020UsersGroup/blob/master/Star-Trek.f|GitHub "ForthWin / Forth2020UsersGroup / Star-Trek.f"]] - "Super Star Trek. Translated from the book BASIC COMPUTER GAMES, edited by David Ahl, 1978".
  *[[http://www.zillions-of-games.com/|Zillions of Games -- Unlimited Board Games & Puzzles]].
    *[[http://www.zillions-of-games.com/cgi-bin/zilligames/submissions.cgi?do=show;id=1452|Zillions of Games "Game: Axiom Development Kit"]], 2007 - "The Axiom language is based on the Forth language".
    *[[http://www.github.com/ForthScriptLang/|GitHub "ForthScriptLang"]].
    *[[http://www.replit.com/talk/share/ForthScript/51405|replit "ForthScript"]].
    *The project was presented during the online event "Forth2020 Zoom Meeting", 2023-06-03.
=== Complete Hardware Application with FORTH as Programming Language ( Applicance ) ===
  *[[http://www.github.com/zooxo/ivt|GitHub "zooxo / ivt"]] - "IVT (IV-TINY) - A FORTH-programable Scientific RPN Calculator that fits in 8 kilobytes (Arduino, ATTINY85)".
  *Online document [[http://www.archive.org/details/GasChromatographSimulatorForACommodore64Computer/|Archive.org "Jeff Wegrzyn: Gas Chromatograph Simulator For A Commodore 64 Computer"]], 1984.

==== Compilers built with FORTH ====
   *BASIC.
     *[[http://web.archive.org/web/*/http://www.amresearch.com:80/|Archive.org "AM Research Home"]] ( - 2007-11-25 ).
       *"amr Forth, Basic, and Assembler are released under the LGPL open source license to use freely without charge. All are available for both the Windows and Linux operating systems".
       *[[http://web.archive.org/web/20071212181329/http://www.amresearch.com/software.html|Archive.org "AM Research Home 'Software - amrFORTH'"]] ( - 2007-12-12 ).
         *"Three languages, Forth, Basic, and Assembler plus multiple operating systems, Linux, Unix, BSD, & MS Windows in a fully integrated development environment".
   *Pascal compiler.
     *[[http://groups.google.com/g/de.comp.lang.forth/c/7hUkptFmeq4/m/e6eCzMZ7ihYJ|Google Groups "de.comp.lang.forth", Thread "Re: 8 reichen auch"]], 2005.
       *"Apropos Spieltrieb, wie wäre es denn mit einem portablen Pascal auf dem Rücken eines Forth's. Gibts da schon was?" => "Paul Kleinrubatscher hat sowas einmal in einer Diplomarbeit teilweise gemacht (aber nicht so toll). Schwierigkeiten dabei sind vor allem das goto (vor allem ueber Prozedurgrenzen hinweg) und, zu einem geringerem Grad, das statische Scoping".
   *Tiny Pascal.
     *[[http://www.pcorner.com/list/FORTH|The Programmer's Corner "Forth Source Code"]].
       *Nov 4 1989 "Tiny Pascal compiler written in F-PC" by Tom Zimmer.
==== Database Interface ====
=== Forth Query Language ( FQL ) ===
  *[[http://www.reddit.com/r/SQL/comments/22jlhv/a_description_of_forth_query_language_using_the/|Reddit "r/SQL", Thread "A description of Forth Query Language. Using the power of Forth as a DSL to make SQL simpler, and in some cases, faster than SQL alone"]], 2013.
  *[[http://www.complang.tuwien.ac.at/anton/euroforth/ef13/papers/|EuroForth 2013 proceedings ( http://www.complang.tuwien.ac.at/anton/euroforth/ef13/papers/ )]]:
    *[[http://www.complang.tuwien.ac.at/anton/euroforth/ef13/papers/nelson.pdf|N.J. Nelson "Forth Query Language (FQL) - Implementation and Experience"]] ( PDF ).
  *[[http://www.youtube.com/watch?v=mD4GJ36Npqk|YouTube, ForthFreak "Nick Nelson Forth Query Language FQL"]].
=== Federico de Ceballos ===
  *[[http://www.complang.tuwien.ac.at/anton/euroforth/ef08/genproceedings/slides4|http://www.complang.tuwien.ac.at/anton/euroforth/ef08/genproceedings/slides4]]:
    *[[http://www.complang.tuwien.ac.at/anton/euroforth/ef08/genproceedings/slides4/ceballos.pdf|Federico de Ceballos "A high level interface to SQLite"]] ( PDF ).
.
==== Graphics with FORTH ====
=== FORTH Implementations, FORTH Graphics Libraries ===
  *[[http://www.github.com/esromlabs/turtle-forth|GitHub "esromlabs / turtle-forth"]] - "A tiny forth interpreter with the turtle graphics".
    *[[http://esromlabs.github.io/turtle-forth/|GitHub.io "Turtle Forth"]] - Online implementation with sandbox for input.
  *[[http://www.fabglib.org/|FabGL - ESP32 Display Controller and Graphics Library]].
    *[[http://www.github.com/fdivitto/fabgl|GitHub "fdivitto/fabgl"]].
=== Commercial Documentation ===
  *See [[forth06.html|Forth 6/7]]:
    *"GraFORTH. Graphics Language Reference Manual for the Apple ][".
    *"APX 20157, William D. Volk: FORTH Turtle Graphics Plus Manual" ( for ATARI 400/800 )
=== Videos ===
  *[[http://www.youtube.com/watch?v=pRqwFRJ_WL8|YouTube "Braille Turtle Graphics in Forth"]].
=== FORTH Resources ===
  *ATARI 400/800.
    *[[http://www.atarimagazines.com/v1n3/forthfactory.html|ATARI Magazines "ANTIC VOL. 1, NO. 3 / AUGUST 1982", Article by Gordon Smith "Forth Factory: Turtle Graphics Part I"]].
    *[[http://www.atarimagazines.com/vbook/turtlegraphics.html|ATARI Magazines, "BEST OF ANTIC VOLUME 1", Article "Turtle Graphics"]].
  *[[http://www.mathscitech.org/articles/turtle-logo-forth|Assad Ebrahim, Mathematical Science & Technologies… explorations, in a nutshell … "Coding for pre-schoolers: a 'Turtle Logo' in Forth"]], 2016.
  *[[http://www.bernd-paysan.de/dragongraphics-eng.pdf|Bernd Paysan "'Dragon Graphics' Forth, OpenGL and 3D-Turtle-Graphics"]], 2009.
=== General Resources ===
  *[[http://turtleacademy.com/|Turtle Academy]].
  *[[http://en.wikipedia.org/wiki/Turtle_graphics|EN.Wikipedia "Turtle graphics"]], [[http://de.wikipedia.org/wiki/Turtle-Grafik|EN.Wikipedia "Turtle-Grafik"]].
==== Lint for FORTH? ====
  *[[http://www.computer-programming-forum.com/22-forth/0053a51e7683148c.htm|<Programming> computer-programming-forum.com "forth, FORTH and Functional Programming, and FORTH LINT"]].
  *[[http://comp.lang.forth.narkive.com/wUTPtDKu/is-there-anything-in-forth-like-lint|Narkive Archive "comp.lang.forth", Thread "Is there anything in Forth like lint?"]].
==== Networking ( TCP/IP Networking, Wireless Communications like WiFi, Internet Access, ... ) & Serial Communications ====
=== File Transfer Protocols ===
  *[[http://en.wikipedia.org/wiki/Trivial_File_Transfer_Protocol|EN.Wikipedia "Trivial File Transfer Protocol"]] [[http://de.wikipedia.org/wiki/Trivial_File_Transfer_Protocol|EN.Wikipedia "Trivial File Transfer Protocol"]].
=== MQTT ===
  *[[http://www.mqtt.org/|MQTT - The Standard for IoT Messaging]].
  *[[http://en.wikipedia.org/wiki/MQTT|EN.Wikipedia "MQTT"]] [[http://de.wikipedia.org/wiki/MQTT|EN.Wikipedia "MQTT"]].
=== RS232 Serial Communications ===
  *[[http://computer-programming-forum.com/22-forth/831582c0dbb31008.htm|<Programming> computer-programming-forum.com - forth "Accessing the serial port from Forth"]].
    *"I am currently using gforth/linux" => "Open /dev/ttyS0 or /dev/ttyS1 as file (with open-file). Read from and write to it. To set up speed, use stty (you can issue system commands from Forth with system ( addr u -- r ))".
    *First, take a look at the excellent reference at: [[http://web.archive.org/web//http://www.easysw.com/~mike/serial/serial.html|Archive.org "Michael R. Sweet: Serial Programming Guide for POSIX Operating Systems"]] ( - 2013-04-07 ), [[http://www.netzmafia.de/skripten/hardware/PC-Schnittstellen/SerialPort_Programming_c.pdf|Netzmafia "Michael R. Sweet: Serial Programming Guide for POSIX Operating Systems"]] ( PDF ). The C code can be implemented in Forth easily.
    *There are some serial port driver functions that require use of the "ioctl" function to communicate with a device driver. Not everything can be done with just the file interface words provided by ANS Forth. kForth provides the 'ioctl' word along with the standard file interface words to enable access to all of the serial driver functions. Examples of serial port programming under Linux using kForth may be found at: [[http://web.archive.org/web/*/http://www.ccreweb.org/software/kforth/kforth4.html|Archive.org "Archive.org "CCREWeb.org: kForth Page": kForth Programming Examples"]] ( - 2018-05-27 )". 
  *[[http://groups.google.com/g/comp.lang.forth/c/D63PTbjjN5Y|GoogleGroups "comp.lang.forth", Thread "How do I make Forth talk to a serial port?"]].
    *4E4th.
      *"This is a communication program I jotted down for communicating with the MSP430 board containing the 4E4th forth" => Source code in the message.
    *kForth.
      *"Please take a look at the serial port programming examples which are included in the kForth package for Linux".
        *[[http://web.archive.org/web/*/http://www.ccreweb.org/software/kforth/kforth4.html|Archive.org "Archive.org "CCREWeb.org: kForth Page": kForth Programming Examples"]] ( - 2018-05-27 ).
          *modules.fs Modules framework for Forth.
          *serial.4th Serial port interface module.
          *serial-comm.4th High level serial interface module.
          *terminal.4th Generic terminal module for serial communications.
          *term.4th Terminal program with pluggable comm modules.
          *hexterm.4th Display incoming serial data in hex form.
      *"Also, don't forget to set your group membership to the group permitted read/write access to the /dev/ttyS* nodes. Typically, this is the 'dialout' group, but may depend on your linux distribution. You can check with<code>
ls -l /dev/ttyS*</code>
    *GForth.
      *"Now Linux, Wine, and Windows protect me from accessing my serial port" => "If you have Gforth, look into arch/r8c/terminal.fs. It included enough code to talk to a device on the serial port". 
  *[[http://www.arduino-forth.com/article/FORTH_FlashForth_serial_UART0|FORTH & Arduino ESP32 "Operation of the UART0 serial port on ARDUINO cards"]].
  *[[http://lists.gnu.org/archive/html/gforth/2019-03/msg00002.html|GNU Mailing List Archive "Re: [gforth] Example Forth code for polling & reading from serial port for Linux"]], 2019.
  *[[http://www.mosaic-industries.com/embedded-systems/instrumentation/rs232-serial-rs485-protocol-uart-usart/forth-examples|Mosaic Documentation Web. Provided Embedded Computers for Instrumentation & Automation since 1985 " Modular I/O Boards \ UART Wildcard \ UART Forth Demo. A Forth demonstration program that provides examples of how to invoke the UART Wildcard driver functions"]] - "Managing RS232, RS422, and RS485 Serial Communication Protocols in Forth Programming Language".
=== USB Serial Communications ===
  *[[http://www.jeelabs.org/article/1621d/|JeeLabs "USB serial in Forth, progress!"]], 2016.
=== Serial Communications Protocols ===
  *[[http://en.wikipedia.org/wiki/Kermit_(protocol)|EN.Wikipedia "Kermit (protocol)"]] [[http://de.wikipedia.org/wiki/Kermit_(Software)|EN.Wikipedia "Kermit (Software)"]].
    *[[http://www.columbia.edu/kermit/|Columbia University "The Kermit Project"]] ( 1981-2011 ), [[http://www.kermitproject.org/|The Kermit Project. Now hosted by Panix.com]] ( 2011 - ).
    *[[http://www.columbia.edu/kermit/archive.html|Columbia University "Kermit Software Source Code Archive - Web Access"]].
      *<del>[[http://www.kermitproject.org/archivefiles/c64forth.html|The Kermit Project "c64forth"]]</del> - "You have received a "turnkey" copy of the FORTH program, in which the source screens and programming system are inaccessible.  This copy may be recopied and distributed without restriction.  In fact, the 'new' command of this KERMIT facilitates such copying. If you want a copy of the original FORTH screens, with a printing program to device 4, you may obtain one by sending a blank disk in a stamped, self-addressed mailer to the author" :-(.
      *[[http://www.kermitproject.org/archivefiles/pygmyforth.html|The Kermit Project "pygmyforth"]].
  *[[http://en.wikipedia.org/wiki//XMODEM|EN.Wikipedia "XMODEM"]] [[http://de.wikipedia.org/wiki//XMODEM|DE.Wikipedia "XMODEM"]].
    *[[http://www.github.com/GrantMeStrength/Forth/blob/master/xmodem|GitHub "GrantMeStrength / Forth / xmodem"]] - "Some Forth code for the Minstrel4th / Jupiter Ace".
    *[[http://www.complang.tuwien.ac.at/forth/ftp.dei.isep.ipp.pt/pub/forth/ibm/xmodem.fth|TU Wien, Institut für Computersprachen "Wilson M. Federici: XMODEM PROTOCOL ON FORTH-83]].
    *[[http://jpb.forth.free.fr/|JPB Forth - Enter in world of FORTH]].
      *[[http://jpb.forth.free.fr/anglais/pages_techniques/protocole_xmodem.html|JPB Forth - Enter in world of FORTH "XMODEM protocol"]].
    *[[http://www.forth.org/fd/FD-V08N2.pdf|Forth Interest Group ( FIG ) "FORTH Dimensions, Volume 8, Number 2, July/August 1986 'Forth Resources via Modem'"]] - "XMODEM Tutorial".
  *[[http://en.wikipedia.org/wiki//YMODEM|EN.Wikipedia "YMODEM"]] [[http://de.wikipedia.org/wiki//YMODEM|DE.Wikipedia "/YMODEM"]].
  *[[http://en.wikipedia.org/wiki//ZMODEM|EN.Wikipedia "ZMODEM"]] [[http://de.wikipedia.org/wiki//ZMODEM|DE.Wikipedia "/ZMODEM"]].
=== TCP/IP Networking ===
  *[[http://www.taygeta.com/networking/forthnet.html|TCP/IP Networking with Forth]].
    *"Forth with a pre-existing TCP protocol stack" - Some freeware.
    *"Native Forth implementations of TCP/IP" - No freeware :-(.
  *ESPForth is configured to communicate by WiFi of the ESP32 chip ( i.e. by ESP32 system libraries, written in C language ).
=== Resources ===
  *[[http://www.computer-programming-forum.com/22-forth/98418e1dc380810a.htm|<Programming> computer-programming-forum.com - forth "Interrupt-driven i/o & Xmodem?"]].
    *"F-PC has interrupt-driven serial I/O, see RS232IB.SEQ".
    *"It was an implementation of a simple Kermit protocol. The articles appeared in the May/June and July/August (1997) issues of _Forth Dimensions_. I have also posted it to my web site and to the Kermit ftp site. -- Frank".
  *[[http://computer-programming-forum.com/22-forth/6bf49ab2e33e155a.htm|<Programming> computer-programming-forum.com - forth "ZMODEM in Forth"]].
  *[[http://computer-programming-forum.com/22-forth/106496526ff55b17.htm|<Programming> computer-programming-forum.com - forth "ZMODEM in Forth"]].
  *[[http://www.github.com/jeelabs/esp-link/issues/430|GitHub "jeelabs /esp-link", Topic " SLIP MQTT protocol definition for FORTH client implementation #430"]].
  *[[http://en.wikipedia.org/wiki/Comparison_of_file_transfer_protocols|EN.Wikipedia "Comparison of file transfer protocols"]].
==== Operating Systems Stuff ( Multitasking with FORTH, Multitasking Operating Systems with FORTH Integration &  Bootloaders written in FORTH ) ====
=== FORTH with Cooperative Multitasking ===
== Implementations ==
  *FORTH-83 => See on this page.
  *VolksForth => See on this page.
== Resources ==
  *Experts advised me: "A forth task could be a structure with its own stacks and user variables. Then you can do cooperative multitasking by changing the pointer to the current task".
  *[[http://amforth.sourceforge.net/TG/recipes/Multitasking.html|SourceForge "AmForth" - "Multitasking"]] - "Multitasking in amforth is achieved as cooperative multitasking. In every task the programmer defines places, where control is given up, such that the next task can run. The tasks current state is stored in a piece of memory called the task control block (TCB). TCBs are organized in a simple, linked list and are visited in round–robin fashion".
  *[[http://www.complang.tuwien.ac.at/forth/forth-dimensions/FD-V5N4.pdf|TU Wien "FORTH Dimensions", Volume 5. Number 4, November / December 1983, with title "Multitasking"]] - Article by Henry Laxen: "MultiTasking, Part I".
  *[[http://groups.google.com/g/comp.lang.forth/c/jXq4XlX5dRc|Google Groups "comp.lang.forth", Thread "Forth co-operative multitasking"]], 1998 => Andrew Haley.
  *Andrew Haley.
    *[[http://www.euroforth.org/ef17/papers/haley-slides.pdf|Euroforth 2017, Andrew Haley "A multi-tasking wordset for Standard Forth"]].
    *[[http://www.theforth.net/package/multi-tasking|theForthNet, Andrew Haley "multi-tasking. GForth Reference implementation of multi-tasking standard proposal"]].
  *[[http://www.jeelabs.org/|JeeLabs]].
    *[[http://www.jeelabs.org/article/1621b/|JeeLabs "The need for multitasking"]], 2016.
    *[[http://www.jeelabs.org/article/1712a/|JeeLabs "Let's try out the multi-tasker"]], 2017.
    *[[http://www.jeelabs.org/article/1712b/|JeeLabs "Sometimes, timers are easier"]], 2017.
  *[[http://users.ece.cmu.edu/~koopman/projects.html|Philip Koopman "Research topics"]] - "Stack Computers. In a previous life I designed stack-based CPUs. While they have fallen out of the mainstream, there is still quite a bit of interest, so I maintain a page with my work in this area.
    *[[http://users.ece.cmu.edu/~koopman/pubs/koopman90_HeavyweightTasking.pdf|Philip Koopman JR "Heavyweight Tasking"]] ( PDF ) => FORTH.
  *[[http://www.bradrodriguez.com/papers/mtasking.html|Brad Rodriguez "FORTH Multitasking in a Nutshell"]]#.
  *[[http://en.wikipedia.org/wiki/Cooperative_multitasking|EN.Wikipedia "Cooperative multitasking"]].
  *[[http://en.wikipedia.org/wiki/Computer_multitasking|EN.Wikipedia "Computer multitasking"]], [[http://de.wikipedia.org/wiki/Multitasking|DE.Wikipedia "Multitasking"]].
=== FORTH with Preemtive Multitasking ===
== Implementations ==
  *Win32Forth => See on this page.
== Resources ==
  *[[http://web.archive.org/web/*/http://collaboration.cmc.ec.gc.ca/science/rpn/biblio/ddj/Website/articles/DDJ/1996/9603/9603h/9603h.htm|Archive.org, DDJ, "Andy Yuen: A Tiny Preemptive Multitasking Forth. Better tools for embedded applications" ]], 1996 ( - 2017-04-29 ).
    *[[http://www.reddit.com/r/Forth/comments/81uk1g/a_tiny_preemptive_multitasking_forth/|Reddit "/r/Forth", Thread "A Tiny Preemptive Multitasking Forth"]].
  *[[http://comp.lang.forth.narkive.com/UzvAsWQb/preemptively-multithreaded-forth-systems|Narkive Archive "comp.lang.forth", Thread "Preemptively multithreaded FORTH systems"]].
  *[[http://www.complang.tuwien.ac.at/anton/euroforth/ef12/papers/vanBreda-Standard.pdf|TU Wien, Ian van Breda "Some comments on the proposed Forth Standard"]] ( PDF ) - "The Holy Grail for desktop computing must be for the computer to run a pre-emptive multi-tasking Forth system on top of which other operating systems can be built, particularly Unix, Mac OS X and Windows".
  *[[http://www.geeksforgeeks.org/difference-between-preemptive-and-cooperative-multitasking/|GeeksForGeeks "Difference between Preemptive and Cooperative Multitasking"]], 2020.
  *[[http://en.wikipedia.org/wiki/Preemption_(computing)|EN.Wikipedia "Preemption (computing)"]], [[http://de.wikipedia.org/wiki/Multitasking#Präemptives_Multitasking|DE.Wikipedia "Multitasking, Präemptives Multitasking"]].
=== FORTH with Time Triggered Architecture ===
  *[[https://wiki.forth-ev.de/lib/exe/fetch.php/events:forth_in_echtzeit_durch_zeit-gesteuerte_architektur.pdf|Forth e.V. Wiki "Ulrich Hoffmann: Forth in Echtzeit durch Zeit-gesteuerte Architektur"]] ( PDF ).
  *[[http://www.wilsonminesco.com/multitask/|Wilson Minesco "Simple methods for multitasking without a multitasking OS"]] - 6502 Forth system.
=== Multitasking FORTH ===
== C++ 20 Coroutines ==
  *C++ 20 Coroutines => See  [[cpp.html|C, C++ for Windows & MSDOS]].
== Multithreading FORTH in C++ ==
  *[[http://www.stackoverflow.com/questions/56743884/c-multithreading-with-mingw|StackOverflow "C++ Multithreading with MinGW"]].
    *"When you download mingw, there is a win32 version and a POSIX version. Get the POSIX and it will come with the std::thread implementation".
    *"You can either: Choose the "pthreads" option when installing mingw-w64, or Choose the "Win32 threads" option when installing mingw-w64, and install an additional header file pack. Another good option is to install via MSYS2 which always gives you the latest build with a suitable configuration. (pthreads in this case)".
  *[[http://www.google.com/search?q=mingw+multithreading|Google - Search for "mingw multithreading"]].
=== FORTH Bootloaders ===
== Collapse OS ==
  *[[http://www.collapseos.org/|Collapse OS]] - "Bootstrap post-collapse technology".
  *[[http://www.github.com/hsoft/collapseos|GitHub "hsoft / collapseos"]] - "Collapse OS is a Forth operating system and a collection of tools and documentation with a single purpose: preserve the ability to program micro- controllers through civilizational collapse".
== Open Firmware ==
  *"Forth language shell interface".
  *Online manual [[http://www.archive.org/details/pdfy-iU5LxePoym4rwGvD/|Archive.org "SUN: OpenBoot Command Reference Manual"]].
  *[[http://en.wikipedia.org/wiki/OLPC_XO|EN.Wikipedia "OLPC XO"]], [[http://de.wikipedia.org/wiki/OLPC_XO-1|DE.Wikipedia "OLPC XO-1"]].
    *[[http://wiki.laptop.org/|The OLPC Wiki]].
      *[[http://wiki.laptop.org/go/FORTH|The OLPC Wiki "FORTH"]].
  *See [[booting.html|Booting from Devices]] => "Linux Boot Loaders, Boot CDs, Boot Disks Tools".
  *See [[ddl.html|Device Description Languages and Device Parameterization]] - "Linux Device Tree / Flattened Device Tree ( FDT )".
  *[[http://docs.oracle.com/cd/E19957-01/802-3239-10/preface.html|Oracle Docs "Writing FCode 3.x Programs"]].
    *"This manual, Writing FCode 3.x Programs, replaces all previous manuals describing writing FCode programs. IEEE Standard 1275-1994 is based on the Sun(TM) OpenBoot(TM) 2.x implementation. OpenBoot 3.x from Sun is compliant with IEEE Standard 1275".
    *[[http://docs.oracle.com/cd/E19957-01/802-3239-10/fulldict.html|Oracle Docs "Writing FCode 3.x Programs", Chapter "11 FCode Dictionary"]].
=== Simple multi-tasking Operating Systems ( Schedulers ) which might cooperate with FORTH ===
== FreeRTOS ==
  *See [[realtime.html|Realtime Operating Systems, Operating Systems for Embedded Systems, Distributed Operating Systems]].
== Resources ==
  *[[http://www.freertos.org/FreeRTOS_Support_Forum_Archive/March_2006/freertos_Shell_for_FreeRTOS_1461229.html|FreeRTOS Support Archive "Shell for FreeRTOS?"]], 2006 - "I was wondering if you know of a 'shell' for freertos? Currently we are using FORTH".
  *[[http://itscstime.blogspot.com/2014/04/using-forthcopilotfreertos-with-arduino.html|Its Computer Science Time "Using Forth/Copilot/FreeRTOS With the Arduino"]].
  *[[http://spyr.ch/twiki/bin/view/MecrispCube|Peter Schmid "Mecrisp-Cube, Forth for the STM32 Ecosystem"]].
    *"Already done. Integrated in STM32 Cube ecosystem. Create C code from CubeMX for internal peripherals and use it in Forth.
    *"Forth as CMSIS-RTOS thread. CMSIS-RTOS API to use FreeRTOS from Forth".
  *Masa Kasahara.
    *[[http://www.forth.org/svfig/kk/12-2020-Kasahara.pdf|SVFIG Meeting, Masa Kasahara "C based eForth on Top of RTOS"]] ( PDF ), 2020-12-19.
    *[[http://www.youtube.com/watch?v=djW6IaUXFFk|YouTube, Silicon Valley Forth Interest Group, "Dec 2020 - C based eForth on top of RTOS - Masa Kasahara"]].
    *[[http://www.forth.org/svfig/kk/Audible4-Kasahara.pdf|SVFIG Meeting, Masa Kasahara "AUDIBLE COMPUTING, Part 4"]] ( PDF ) - Deals with the use of FORTH.
    *[[http://www.yumpu.com/en/document/read/21063325/slides-forth-interest-group|Yumpu "AUDIBLE COMPUTING --- Masa Kasahara"]].
    *[[http://forth-ev.de/wiki/res/lib/exe/fetch.php/vd-archiv:4d2011-01.pdf|Forth e.V. Wiki "Vierte Dimension. Das Forth–Magazin 1/2011"]] ( PDF ) - "Unser Masa Kasahara, der ein paar Jahre in Deutschland gelebt hat...".
=== FORTH with complete FORTH Operating Systems ===
== ForthOS ==
  *[[http://www.vsta.org/andy/|VSTa "Andy Valencia's personal pages"]].
  *[[http://web.archive.org/web/*/http://www.forthos.org/|ForthOS]] by Andy Valencia ( - 2018-09-24 ).
    *2018-11-07 - "With the slow fading of Forth (well, at least my own interest in it!) I'm not going to bother spending the money to keep this old domain. So if you're interested in digging through this old OS implemented in Forth, I'll keep a copy of this site available on [[htttp://sources.vsta.org/|sources.vsta.org]]".
    *[[http://sources.vsta.org/|Source code at vsta.org]].
      *[[http://sources.vsta.org/forthos/|vsta.org "ForthOS"]].
        *"An operating system written from scratch and capable of hosting its own development (edit, compile, debug) and OS re-generation. Based on the Forth programming language".
        *"ForthOS is a complete, standalone operating system for the PC. It includes command line, compiler, debugger, editor, and filesystem. You can give it a test drive by booting the standalone CD (image provided so you can burn your own). If you like it, you can install it onto a disk partition and boot directly from your hard disk".
        *"ForthOS was the basis for the author's own experimental software work; unlike many other Forth systems, this one as a real tool in day-to-day use as a part of a larger development. It is a fully standalone system, with a metacompiler used to generate new versions of ForthOS while running under ForthOS. ForthOS is a complete, standalone operating system for the PC. It includes command line, compiler, debugger, editor, and filesystem. You can give it a test drive by booting the standalone CD (image provided so you can burn your own). If you like it, you can install it onto a disk partition and boot directly from your hard disk". 
  *A former non-FORTH operating system [[http://www.vsta.org/|The VSTa Operating System]] by Andy Valencia.
== Kestrel Computer Project ==
  *[[http://kestrelcomputer.github.io/kestrel/|GitHub "Kestrel Computer Project"]].
    *RapidIO, RetroForth, and RISC-V Update.
    *Stepwise Refinement of an Event-Driven Forth Interpreter Part 3: Multiplication.
    *Stepwise Refinement of an Event-Driven Forth Interpreter Part 2: Basic Correctness Checks.
    *Stepwise Refinement of an Event-Driven Forth Interpreter.
    *Kestrel-3 User's Guide Available Now.
    *Event-Driven Forth and its Implications.
    *"This project is now archived, due to Raptor Engineering Releases Kestrel, The 'First Open-HDL/Open Firmware BMC', which I read on 2021 Feb 09. I cannot risk legal action from Raptor Engineering, especially considering how much our respective projects overlap. — Samuel A. Falvo II, 2021 Feb 09".
    *[[http://www.github.com/kestrelcomputer|GitHub "Kestrel Computer Project"]] - "The Kestrel Computer Project aims to build a full-stack, open-source and open-hardware, home computer".
    *[[http://www.hackaday.com/2016/03/25/kestrel-computer-project/|Hackaday "Kestrel Computer Project"]], 2016.
    *[[http://www.hackaday.io/project/10035-kestrel-computer-project|Hackaday "Kestrel Computer Project"]].
  *The competitor [[http://medium.com/librecores/el-correo-libre-issue-35-b548ee0b9d47|Medium "El Correo Libre Issue 35"]] - "Raptor Engineering Releases Kestrel, The 'First Open-HDL/Open Firmware BMC'".
    *[[http://gitlab.raptorengineering.com/kestrel-collaboration/kestrel-litex/litex-boards/-/blob/master/README.md|Raptor Engineering GitLab repository]].
== rpiForth ==
  *[[http://www.github.com/aviatorRHK/rpiForth|GitHub "aviatorRHK / rpiForth"]].
    *"A Forth Operating System for Raspberry Pi".
    *"A sample assembly code implementation of the input02 operating system, that demonstrates a command line interface".
  *[[http://www.raspberrypi.org/forums/viewtopic.php?f=72&t=37712|Raspberry Pi Foundation - Forum "Raspbery Pi Forth Operating System"]], 2020.
== pijFORTHos ==
  *[[http://www.github.com/organix/pijFORTHos|GitHub "organix / pijFORTHos"]] - "A bare-metal FORTH operating system for Raspberry Pi".
=== FORTH with commercial complete FORTH Operating Systems ===
  *See [[forth02.html|FORTH 2/6 - Hardware, Commercial Products & Services, Intellectual Property ( IP )]].
    *The firmware of the "Canon Cat", "Hector", "Jupiter Ace", "ST Robotics' Robots",..., the firmware addon for "BBC Micro", "Rockwell AIM 65",..
    *The commercial operating system "4os".
    *The commercial multi-tasking multi-user "PF/X" operating system for Harris Forth Chip.
=== Resources ===
  *Experts suggested to run bare-metal FORTH operating systems on emulators first, e.g. for 80x86 on Boche, QEMU, VirtualPC / VirtualServer, VirtualBox, VmWare Workstation,..
  *[[http://www.facebook.com/groups/forth2020/posts/4564270170321047/|Facebook "Forth2020 Users-Group", Thread "Multitasking"]].
    *Elizabeth R Conklin:
      *"Brad's article is excellent, and it's principles are still in use. A little history: F83 was developed at a time when the Forth community was in something of a crossroads. There was friction between FIG and FORTH, Inc. For a while it appeared the FORTH, Inc. might not survive in the new PC/hobbyist age. The developers of F83 had worked for FORTH, Inc. and were very familiar with its principles. They wrote F83 to try to preserve some of our technology in the public domain, and the multitasker was a good example. I continue to be surprised that more people haven't adopted it".
      *"Brad was not part of the F83 development AFAIK, but had been an employee of FORTH, Inc. and understood our software intimately. This multitasker continues to be incredibly valuable in modern micro controllers, and is in use in space, in communications, and all kinds of embedded applications".
  *[[http://comp.lang.forth.narkive.com/loOWy1tP/writing-a-simple-forth-os-with-a-c-tutorial|Narkive Archive "comp.lang.forth", Thread "Writing a simple Forth OS with a C tutorial?"]], 2018.
  *[[http://www.tunes.org/wiki/forth_20oses.html|CTO CLiki for the TUNES project "Forth OSes"]] - "The idea for a modern Forth OS has been kicking around since maybe 1995. It's popular with folks who want a simple, understandable OS".
  *[[http://www.forth.org/svfig/osf.html|Forth Interest Group ( FIG ) "OS/Forth. OS/4th. The Complete Operating System"]] - Concept only.
  *[[http://www.forth.org/fd/FD-V04N3.pdf|Forst Interest Group, Forth Dimenions]], Volume 4, Number 3, page 5 - "Forte - A FORTH-Based Operating System" by John  S. James , CoIon  Systems.
  *[[http://news.ycombinator.com/item?id=2973134|Hacker News "ForthOS - standalone operating system written in Forth (forthos.org)"]], 2011.
==== Stack Trace ====
  *[[http://www.steamcommunity.com/app/252610/discussions/0/353916981471210446/|Steam Community "Death Road to Canada" - Discussions "DEATHFORTH ERROR"]] - Example of a "Call Trace".
  *[[http://www,steamcommunity.com/app/252610/discussions/2/353916184355637986/|Steam Community "Death Road to Canada" - Discussions "Deathforth Error Messages"]] - Example of a "Call Trace".
==== Packet Manager, Repository ====
  *[[http://www.theforth.net/|the Forth Net]] - "Package manager and repository for Forth".
    *[[http://www.theforth.net/packages|the Forth Net "Packages"]] - "All packages currently hosted on theForthNet".
==== Profiling ====
  *[[http://www.euroforth.org/ef01/|EuroForth 2001 ( ef01 )]].
    *[[http://www.euroforth.org/ef01/gregg01.pdf|EuroForth 2001 "David Gregg, M. Anton Ertl, John Waldron: The Common Case in Forth Programs"]] ( PDF ) - "In this paper we measure the behaviour of six large Forth programs and four small ones. We look at the ratio of user to system code, basic block lengths, common instructions, and common sequences of instructions".
==== Unit Test / Test of Assertions & Debugging ====
=== Unit Test Tools ===
== Unit Test Tools in FORTH ==
  *[[http://github.com/gerryjackson/forth2012-test-suite|GitHub "gerryjackson / forth2012-test-suite"]].
    *"Test programs for Forth 2012 and ANS Forth".
    *Experts told me, that this test framework might be adopted to do unit-test alike tests for your own FORTH application "Helps in testing for ANS conformance. But it also defines a generic test framework (see **tester.4th**). It can be tailored to check for non-regression in other Forth variants".
  *Forth200x / Forth2012
    *Forth200X Standard.
      *[[http://www.forth200x.org/tests/ttester.fs|forth200x.org "tests / ttester.fs"]].
    *[[http://forth-standard.org/standard/testsuite|Forth ( forth-standard.org ) "Annex F: Test Suite"]] ( no "www." ) for the Forth 2012 Standard. Also called "Hayes suite", as John Hayes started 1994 with it's development.
  *[[http://www.github.com/Anding/simple-tester|GitHub "Anding / simple-tester"]] - "A simple FORTH test package intended for embedded systems based on the ANS FORTH version of ttester.f".
    *[[http://www.euroforth.org/ef19/papers/hoffmanna.pdf|EuroForth 2019, Ulrich Hoffmann, Andrew Read "simple-tester, a testing tool for embedded Forthsystems"]].
    *Expert #1 feedback: "It seems a pity Ulrich Hoffmann arbitrarily switched the names form T{ ==> T} to T{ T} == that will make any existing test suite fail" :-(. "Hashing is a clever idea, but is no cheaper than actually comparing the values, so I'm not sure why they took that approach?".
    *Expert #2 feedback: "I'm not sure what the justification of the hashing was other than its easier to pass a calculated value around as a single stack item or to store it for later use".
  *[[http://www.github.com/TG9541/stm8ef/blob/master/lib/utils/tester.fs|GitHub "G9541 / stm8ef"]] - "eForth tester - inspired by forth2012-test-suite tester.fr".
  *[[http://www.github.com/jamesbowman/swapforth/blob/master/anstests/tester.fr|GitHub "swapforth / anstests / tester.fr"]] - "ANS tests snapshot", "\ 31/3/2015 Variable #ERRORS added and incremented for each error reported"
== Unit Test Tools in Assembly Language, for FORTH ==
  *[[http://www.github.com/jhlagado/|GitHub "John Hardy ( jhlagado )"]].
    *[[http://github.com/jhlagado/zedforth/blob/master/core-tester.z80|GitHub "jhlagado / zedforth / core-tester.z80"]] - Implementation of a small FORTH T-Word unittest framework, in Z80.
    *[[http://www.github.com/jhlagado/firth/blob/master/macros-test.z80|GitHub "jhlagado / firth / macros-test.z80"]].
== Expert-generated List of FORTH implementations, which are shipped with Unit Test Tools ==
  -eForth for ST8 ( in FORTH ).
  -Gforth.
    *[[http://www.github.com/forthy42/gforth/blob/master/test/ttester.fs|GitHub "forthy42 / gforth / test / ttester.fs"]].
  -Win32forth. Not included in the default FORTH kernel, but provided as Forth script file with distribution package.
  -zedforth ( in Z80 assembly language ).
=== Unit Test Resources ===
  *See [[unittest.html|Unit Test / Module Test]].
  *[[http://www.facebook.com/groups/2225595150855239/permalink/3975791905835546/|Facebook Group "Forth2020", Thread "Automated approaches to testing Forth programs"]], 2021-05-16.
    *Here are some examples of how to use it: You wrap the code you want to test between T{ and }T and then write the expected stack state followed by ==
<code>
T{ 1 2 drop }T 1 ==
T{ 1 dup }T 1 1 ==
T{ 2 1 swap }T 1 2 ==
</code>
    *Expert feedback: 
      *In general, the unittest frameworks ( T-word,.. ) are not obvious part of the FORTH testing culture, not handled in ( ancient ) introductory books, nor in current tutorials. They are hard to find, e.g. it's not easy to create a list of FORTH implementations, which are also shipped with a T-word. Usually the unittest tools are included in the default FORTH kernel, but provided as Forth script file with the distribution package. 
      *[[http://www.forth-standard.org/standard/testsuite|Forth ( forth-standard.org ) "Annex F: Test Suite"]] and so the unittest word "T" won´t run on eForth nor on ESP32forth :-(.
      *Indeed, this unitest word "T" just checks whether the expected FORTH stack is identical to the FORTH stack after the execution of the FORTH word to be tested.
  *[[http://www.youtube.com/watch?v=nwZ-kUNabmw|YouTube, Silicon Valley Forth Interest Group "Test Driven Development in Assembly Language: Enterprise Frameworks Not Required!"]].
  *[[http://www.facebook.com/groups/forth2020/posts/4204582182956516/|Facebook Group "Forth2020", Thread "Which Forth systems have a basic unittest word ( T-word ) in its standard, default or extended wordset ?"]] - Something like this: "T{ 1 2 drop }T 1 ==". If you know single implementations of the T-word, without dependancies, please tell me either.
=== Debugging Resources ===
  *There is the option to use "VisualStudio Code" for debugging of C & FORTH code on ESP8266 => See [[forth02.html|FORTH 2/4]].
  *[[http://www.facebook.com/groups/forth2020/posts/4201943729887028/|Facebook Group "Forth2020", Thread "How to debug FORTH code ( on a native code system which executes CPU codes, not a Virtual Machine / P-Code System ) ?"]].
    *"Insert .S where you are unsure of what the stack has on it at any given point".
    * .s with a halt option ".s constant #.s "<code>
: .s #.s 
execute 
begin 
key? 
until ;</code>
    *"In Gforth, Win32Forth and Cforth it is possible to debug compiled Forth-code".
  *With some rare FORTH implementations, i.e. ( [[http://tachyon-forth.sourceforge.net/|SourceForge "Tachyon Forth"]], [[http://www.sourceforge.net/projects/tachyon-forth/|SourceForge "Tachyon Forth"]] ), I was told by the author [[http://www.facebook.com/peter.jakacki|Facebook "Peter Jakacki"]],there are:
    -Trace function.
    -Timing function. 
=== Practical FORTH Debugging Session ===
  *You can test this yourself in a forth system of your choice. just press<code> 
1 +</code> 
  *and an error message will come.<code>
1 2+</code> 
  *gives ok. type<code>
.s</code>
  *then the stack is printed.<code>
weerty</code>
  *displays an error and empties the stack.<code> 
1 2 3 .S +.S +.S</code>
  *you see it. type<code>
qwer</code> 
  *this gives an error and your stack is empty again<code>
.S</code>
  *now pointers, type<code>
VARIABLE A 0 A !</code> 
  *poke's 0 in a A<code>
@</code> 
  *peeks in to A and put it on the stack<code>
.S</code>
  *you can see this an test this<code>
. VARIABLE B 10 B !</code>
  *you test<code>
A@ B@ .s</code>
  *and decide that you want to add them up type<code>
+ .S</code>
  *if you like it you make it a word:<code>
a@+b@ (-- n) a @ b @ + ; 5 6 B ! a ! A@+B@ .</code>
  *and test is<code>
5 6 .s B ! A ! .s A@+B@ .s . .s B@+A@</code>
  *gives a error again. Try :<code>
2 1 ;</code>
  *and type<code>
2 .</code>
  *see how powerful forth is<code>
. 2 2 + . forget 2 2 2 + .
</code>
==== Resources ====
  *[[http://www.awesomeopensource.com/projects/forth|Awesome Open Source "The Top 46 Forth Open Source Projects"]].
  *[[http://www.opensourcelibs.com/libs/forth|Open Source Libs "forth"]] - "158 Open Source Forth Software Projects. Free and open source lua code projects including engines, APIs, generators, and tools".
===== Appropriate OpenDirectory Directory Pages =====
  *[[http://www.dmoz.org/Computers/Programming/Languages/Forth/|OpenDirectory "Top: Computers: Programming: Languages: Forth"]].
  *[[http://www.dmoz.org/World/Deutsch/Computer/Programmieren/Sprachen/Forth/|OpenDirectory "Top: World: Deutsch: Computer: Programmieren: Sprachen: Forth"]].
  *[[http://www.dmoz.org/Computers/Programming/Languages/Forth/Implementations/|OpenDirectory "Top: World: Deutsch: Computer: Programmieren: Sprachen: Forth: Implementations"]].
  *[[http://www.dmoz.org/Computers/Programming/Languages/Forth/Implementations/CamelForth/|OpenDirectory "Top: World: Deutsch: Computer: Programmieren: Sprachen: Forth: Implementations: CamelForth"]].
  *[[http://www.dmoz.org/Computers/Programming/Languages/Forth/Implementations/figForth/|OpenDirectory "Top: World: Deutsch: Computer: Programmieren: Sprachen: Forth: Implementations: figForth"]].
{{tag>FORTH}}
<footnote_navi_en>