====== [hemmerling] FORTH 3/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 )]]. *[[forth04.html|FORTH 4/7]]. *[[forth05.html|FORTH 5/7]]. *[[forth06.html|FORTH 6/7]]. *[[forth07.html|FORTH 7/7 - H2oForth]]. *[[vmachine.html|Virtual Machines, P-Code & Byte-Code Interpreters]]. *[[wasm.html|WebAssembly ( WASM )]]. ===== Integrated Development Environments ( IDEs ) & Terminal Software with FORTH Support ===== ==== The FORTH Development Process ==== === Classical - 100% of static Code Generation on the Host ( Tethered FORTH ) ==== *The FORTH system boots on the target. *Typical in the era of software updates on the target, by buring new EPROMs ( 1975-2000 ). *All modern software tools for editing, code generation and source code saving can be used. But at that time, 1975-2000, typically no CVS. No continous delivery though. *Waterfall software development process: -Create source code on the host, using a simple editor or an IDE. -Generate code on the host, using an IDE, compiler, assembler. -Optional testing on a hardware & software simulator, on the host. -Burn EPROMs for the target, or flash the complete FlashMemory of the target. -The FORTH application might be executed from FlashMemory or from RAM, this depends from the FORTH implementation. -Run, test and debug the application on the target. *Example: *FORTH on an embedded board with 808x / Z80 / 6502 CPU. === Classical - 100% of static Code Generation on the Host, optional dynamic Code Generation on the Target ==== *The FORTH system boots on the target. *Typical in the era of software updates on the target, by buring new EPROMs ( 1975-2000 ). *All modern software tools for editing, code generation and source code saving can be used. But at that time, 1975-2000, typically no CVS. No continous delivery though. *Waterfall software development process: -Part I. -Create source code on the host, using a simple editor or an IDE. -Generate code on the host, using an IDE, compiler, assembler. -Optional testing on a hardware & software simulator, on the host. -Burn EPROMs for the target, or flash the complete FlashMemory of the target. -Part II. -The host provides an editor for creating & editing source code. -The target is connected to a serial terminal of a host. -The host transfers FORTH source code to the target, as if typed in by humans. The transfer stopps automatically in case of syntax errors or other faults, deteced by the FORTH system on the target. -The assembler is integrated part of the FORTH system on the target. -New words may be implemented immediately, but just temporarily. -Part III: Run, test and debug the application on the target. *Example: *FORTH on an embedded board with 808x / Z80 / 6502 CPU. === Primitive Classical, on the Target === *The FORTH system boots on the target. *The target provides an editor for creating & editing source code. *Either the target has a keyboard input and video output, or the target is connected to a serial terminal of a host. *The assembler is integrated part of the FORTH system on the target. *New words may be implemented immediately. *FORTH definitions may be edited in the dictionary on the fly, rather than using "Screens" as most Forths of that era did. I.e. there is no saving of "Screens". By this, source code was not stored, but immediately converted to "Block Code", which could be re-edited. Remember that there was just 1 KByte of RAM! *No CVS. *Saving of the the code ( new words, the application ) on an external serial storage medium, i.e. cassette recorder tape. *Example: *FORTH on the personal computer "Jupiter ACE" / "Jupiter Ace 4000". *FORTH on the personal computer "JU+TE-FORTH-System". === Modern & Advanced Classical, on the Target === *An operating system system ( or the FORTH system ) boots on the target. *Either the target has a keyboard input and video output, or the target is connected to a serial terminal ( on a host ). *The target provides an editor for creating & editing source code. *The assembler is integrated part of the FORTH system on the target. So mostly the assembler is no independant executable application. I.e. even if there is an operating system like MSDOS, the assembler ist mostly not an executable file on the file system. *New words may be implemented and made permanent immediately. *Typically no CVS. *Saving of the source code and the code ( new words, the application ) on the target. -By a 16 line x 64 character / line block system. It is not transparent to the user, how this block data is stored. -In files on a file system. Today, most forths load just plain text files. -As raw data on a storage media, e.g. sectors on a floppy disk. Implemented in FORTH systems of the 1970th and early 1980th - This is a feature from the past which made it easy to get started, e.g. on a target with floppy disks, but without affordable operating system, e.g. on CP/M hardware without expensive CP/M license. -On a file system, FORTH sources as text files, FORTH binaries as binary files. *Examples: *FORTH on the CP/M, Apple II+, MSDOS platforms with disk drives, ESP32forth with on-board SPIFFS file system. *FORTH with block system => See "The FORTH 64x16 Screen Paradigma". *FORTH with file system => See "The FORTH 64x16 Screen Paradigma". *ESP32forth provides a simple editor by the serial terminal. *FORTH on TI-99/4A,... "TurboForth supports disk blocks for storing program code and data (or indeed, anything you wish to store) on disk". === Modern, on a rich Target === *Target is a desktop PC, notebook PC, server or an embedded system, running a rich operating system, e.g. Linux, Windows, MacOSX => An operating system system boots on the target. *All modern software tools for editing, code generation, continous delivery and source code saving ( by a CVS system like Git / GitHub ) can be used. *New words may be implemented and made resident, immediately. *The editor for creating & editing source code must not be integral part of the FORTH system, but you may use an external editor. *Examples: *ForthWin / Forth2020 - Uses Notepad++ as editor. The documentation describes how to use another external editor. *Gforth - Uses Emacs as editor. *WinForth - Has it's own editor "IDE". === Modern, on the Host but with an embedded Target === *The FORTH system boots on the target. *The source code is created on on the host, by an IDE or a rich text editor ( e.g. Visual Studio Code,... ), which has special plugins to support FORTH software development. Saving of the source code on the file system of the host. *All modern software tools for editing, continous integration and source code saving ( by a CVS system like Git / GitHub ) can be used, on the host. *Compilation process: -On the target. *The created source code is transfered to the target, by a special terminal application on the host ( RS232 terminal emulator on the host, with special text file transfer options ). *On the target, there is just a "FORTH prompt" waiting for new commands. So that a host IDE must carefully - hopefully with RS232 handshake - transfer the text of a FORTH word definition as if typed by a human.... :-(. This is legacy style of software development :-(. *Problem #1, if there is no handshake... at all :-(. *Problem #2, if there is handshake, but the limited serial buffer is not large enough, or the host terminal gets a timeout if it must wait too long. So that the FORTH system needs precious time to compile a word... while the dumb host IDE tries already to push FORTH source code to the target... :-(. *On the target, the FORTH system compiles it to code and loads the new words into RAM. The assembler is integrated part of the FORTH system on the target. *The updated FORTH system may be stored as dump on the host, and / or it is stored on the permanent FlashMemory memory on the target. But at the end of the day, you have to transfer a FlashMemory memory dump back to the host ( by an RS232 terminal emulator on the host, with special binary file transfer options ). *By this, new words may be implemented and made permanent immediately. *Example: IDE "4E4th - Forth For Education" for MSP430 Launchpad. -On the host. *Experts told me: Most C-FORTHs can be said to be crosscompiled. Some may have ways to append "compiled" forth words to that source in some data form. Either just as source or as generated code/data. *By this, new words may be implemented and made permanent immediately. *The Ardunio IDE works similarily, but there the code is totally generated on the host. === Resources === *Some CPUs or MCUs are shipped with limited EEPROM permanent storage ( e.g. 512 Bytes EEPROM, while 256 Bytes RAM and 8 KBytes ROM ), the technology before FlashMemory, to store the state of an embedded ( FORTH ) application. *[[http://en.wikipedia.org/wiki/Motorola_68HC11|EN.Wikipedia "Motorola 68HC11"]], [[http://de.wikipedia.org/wiki/Motorola_68HC11|DE.Wikipedia "Motorola 68HC11"]] - "The MC68HC11A8 was the first microcontroller to include CMOS EEPROM". *[[http://en.wikipedia.org/wiki/EEPROM|EN.Wikipedia "EEPROM"]], [[http://de.wikipedia.org/wiki/Electrically_Erasable_Programmable_Read-Only_Memory|DE.Wikipedia "Electrically Erasable Programmable Read-Only Memory"]]. *[[http://www.facebook.com/groups/forth2020/posts/4187772874637447/|Facebook "Forth2020 Users-Group" - "How is the technical implementation of different FORTH to learn new words, permanently?"]]. *[[http://www.facebook.com/groups/forth2020/posts/4196048183809916|Facebook "Forth2020 Users-Group" - "Are there Ardunio-alike development processes for FORTH on embedded systems?"]]. *[[http://mecrisp-stellaris-folkdoc.sourceforge.io/modern-forth-development-environment.html|SourceForge.IO "Mecrisp Stellaris Unofficial 1.0 documentation" - "A Modern Forth IDE"]]. ==== The FORTH 64x16 Screen Paradigma ==== === FORTH with forced 64x16 Screens only === *The 64x16 "Screen" ( also called "1 Kbyte Block" ) was the a completely normal Forth model, until the late 1980s. The FORTH "1 KByte Block" was the equivalent to the block size on permanent storage systems, e.g. the Floppy Disk. *A "Sector" on a standard Floppy Disk = 512 Bytes. *The "Cluster Size" of two standard Floppy disk sectors = 1024 bytes. *Classical "Screens" of legacy historical FORTH systems don't have end-of-lines ( i.e. CR/LF, CR, LF ). *Source code comments: *In times of little RAM, there was no space and so no option for source code comments. *In the first line of a 64x16 Screen. *Source code comments since about 1980, by "Shadow Screens". *Most keyboards, also of the first personal computer generation since 1977, are equipped with arrow keys, either two ( Apple II+ ) or four ( IBM-PC, ATARI-ST, AMIGA, MacOS,.. ). *If the FORTH Screen editor displays a "Screen", you may switch to the "Shadow Screen" by pressing the arrow key ( "=>" ). *The "Shadown Screen" is a 64x16 block just for comments, no code. *If the FORTH Screen editor displays a "Shadow Screen", you may leave to the "Shadow Screen" by pressing the arrow key ( "<=" ). *[[http://retrocomputing.stackexchange.com/questions/3315/early-forth-for-personal-computers|StackExchange Retrocomputing "Early Forth for personal computers"]]. *User#2 "There was even a third type of code documentation, the shadow screen. Forth code was originally written in 64-character by 16-line screens, stored on disk as numbered blocks. Blocks 1000 to 1999, say, were assigned to interpretable Forth code. Then 2000 to 2999 were documentation screens. I.e., 1000 (in this example) above every code screen was its documentation screen. / / Since more complex file systems are used today, shadow screens are no longer necessary. – *User#3 "Those must have been pretty ancient, or "tiny" (as in "tiny C") versions. Even FIG-Forth in 1978 supported both parenthetical and backslash comments". *User#2: "I'm talking 1973/74. Well before '78 we'd blacklisted Forth as an unusable language". *How was the most simple 64x16 screen editor implemented? *User feedback: "figForth for the 1802microprocessor needed a low level coded EMIT for output ( It could be an external terminal or some internal program giving the EMIT output on a screen ) and KEY to fetch keyboard input. These Forth words should be available in any Forth system. I expect the Forth editor was pubished somewhere, perhaps in Forth Dimensions. === List of FORTH Systems, categorized by the Editor Modes ( Blocks, Streaming Files ) === == Legacy 64x16 Screen-only FORTH == *PC/FORTH by LMI, an MSDOS FORTH. It contains an excellent editor for block screens (64 chars, 16 lines). The top line was reserved for a screen comment. *volksFORTH MS-DOS (Intel x86 Architecture i8086-ia64), volksFORTH 6502 (Commodore 64, Commodore Plus 4, Commodre C16, Atari XL/XE, Apple I), volksFORTH Z80 (CP/M, Amstrad CPC), volksFORTH 68000 (Atari ST). *volksFORTH 6502: Screens of 24 lines a 41 characters + 1 line of 40 characters to fit the C64 screen. *Z79Forth. == FORTH with Screen & processing of standard Textfiles ( "Stream Files" ) == *ESp32forth hast a built-in "1K Screen" editor, but accepts a seamless character stream ( = the contents of a standard text file ) by a terminal connection. *Win32forth has a special editor which can handle both "Screens" and standard text files. *Gforth still comes with a block editor, PolyForth-style. *[[http://www.stackoverflow.com/questions/48837115/does-gnu-forth-have-an-editor|StackOverflow "Does GNU FORTH have an editor?"]]. *Brief operating instructions for the block editor:use blocked.fb 1 load *and you have a block editor similar to the PolyForth editor ( of course, the block editor is in a block file, the only one in the Gforth distribution ). 0 l *will give you the help screen. The last line there says "If you don't like it, write a block editor mode for Emacs!" *bigForth has a GUI-based editor, which is also capable of editing blocks. *Notepad ++ can be configured to operate in a 64 columns mode. == No Screens anymore == *SwiftForth. == Resources == *In the early 1990s, the editors of most of the FORTH implementations were converted to text editors without this restriction. Newly implemented FORTH systems were designed to accept text files. The "Screens" remained as an option. *Expert feedback in 2021: "It would appear virtually no-one uses Forth block editors these days unless it's the only option or they are seeking a serious retro fix". == FORTH Systems with standard Text Files, without 64x16 Screens == *Source code comments: ( ... ) \ ... === Excursus: Use of SQL Databases to store FORTH Screens === == Maximum Length of Strings in SQL Databases == *IBM DB2. *[[http://www.ibm.com/docs/en/db2oc?topic=reference-sql-xml-limits|IBM Documentation "IBM Db2 on Cloud" - "SQL and XML limits"]] - "Table 3. String Limits". *Maximum length of CHAR (in bytes or OCTETS) 255. *Maximum length of CHAR (in CODEUNITS32) 63. *Maximum length of VARCHAR (in bytes or OCTETS)2 32,672. *Maximum length of VARCHAR (in CODEUNITS32)2 8168. *Maximum length of LONG VARCHAR (in bytes)1 32,700. *Maximum length of CLOB (in bytes or OCTETS) 2,147,483,647. *Maximum length of CLOB (in CODEUNITS32) 536,870,911. *Microsoft SQL Server. *[[http://www.sqlshack.com/sql-varchar-data-type-deep-dive/|SQLShack "SQL varchar data type deep dive"]], 2019 - "Microsoft SQL Server 2008 (and above) can store up to 8000 characters as the maximum length of the string using varchar data type. SQL varchar usually holds 1 byte per character and 2 more bytes for the length information". *[[https://www.developer.com/microsoft/dotnet/working-with-binary-large-objects-blobs-using-sql-server-and-ado-net/|Developer.com "Working with Binary Large Objects (BLOBs) Using SQL Server and ADO.NET"]], 2008: *LOB Type - SQL Server Data Type - Max. Size. *BLOB - varbinary(MAX), Image - 2,147,483,647. *CLOB - varchar(MAX), Text - 2,147,483,647. *CLOB – Unicode nvarchar(MAX), NText - 1,073,741,823. *XML data - xml - 2,147,483,647. *The Text, NText, and Image data types come from the previous versions of SQL Server. *MariaDB. *[[http://www.mariadb.com/kb/en/data-types/|MariaDB "Data Types"]]. *[[http://www.mariadb.com/kb/en/varchar/|MariaDB "VARCHAR"]] - "A variable-length string. M represents the maximum column length in characters. The range of M is 0 to 65,532. The effective maximum length of a VARCHAR is subject to the maximum row size and the character set used. For example, utf8 characters can require up to three bytes per character, so a VARCHAR column that uses the utf8 character set can be declared to be a maximum of 21,844 characters". *[[http://www.mariadb.com/kb/en/blob-and-text-data-types/|BLOB and TEXT Data Types]]. *[[http://www.techonthenet.com/mariadb/datatypes.php|TechOnTHeNet "MariaDB: Data Types"]]. *"VARCHAR(size) Maximum size of 255 characters" - Limit of legacy versions? *MySQL. *[[http://dev.mysql.com/doc/refman/8.0/en/storage-requirements.html|MySQL "MySQL 8.0 Reference Manual / Data Types / Data Type Storage Requirements"]] - "String Type Storage Requirements". *SQLite. *[[http://www.sqlite.org/datatype3.html|SQLite "Datatypes In SQLite Version 3"]]. *[[http://www.sqlitetutorial.net/sqlite-data-types/|SQLite Tutorial "SQLite Data Types"]]. *"The maximum length of TEXT is unlimited. SQLite supports various character encodings". *"BLOB stands for a binary large object that can store any kind of data. The maximum size of BLOB is, theoretically, unlimited". == Technical Problems to store a FORTH Screen by an SQL String in SQL Databases == *Microsoft SQL Server. *[[http://docs.microsoft.com/en-us/sql/odbc/microsoft/string-limitations?view=sql-server-ver15|Microsoft Documentation "String Limitations"]]. *"The maximum length of an SQL statement string is 65,000 characters. *"When the Microsoft Access driver is used, **only SQL-92 string constants (with single quotation marks, not double quotation marks) are supported**" :-(. *"**The pipe character (|) cannot be used in a string**, whether the character is enclosed in back quotes or not. For maximum interoperability, applications should pass strings in parameters, rather than passing quoted strings" :-(. *MySQL *[[http://www.stackoverflow.com/questions/2510618/why-does-mysql-refuse-pipe-character-in-string-on-insert-into|StackOverflow "Why does MySQL refuse pipe ('|') character in string on INSERT INTO"]]. === Resources == *[[http://www.facebook.com/groups/forth2020/posts/4196048183809916/|Facebook Group "Forth2020", Thread "Are there Ardunio-alike development processes for FORTH on embedded systems?"]]. *User A: "The rule, a Screen 'does not under any circumstances whatsoever allow a definition to span a block boundary' was not always true. Some old fashion Screen/Block-based FORTH systems of the 1980th have an immediate word--> that allows 'continuing compilation, i.e. LOAD-ing, to the next Screen/Block". *[[http://spectrumcomputing.co.uk/entry/8967/ZX-Spectrum/White_Lightning|Spectrum Computing "White Lightning"]]. *[[http://www.github.com/mattsteeldue/vforth|GitHub "mattsteeldue / vforth"]]. *[[http://www.github.com/mattsteeldue/vforth-next|GitHub "mattsteeldue / vforth-next"]]. *The definition of --> implemented in these three versions, that effectively allows a colon-definition to cross a Screen/Block boundary, is as follow: : --> ?LOADING 0 >IN ! B/SCR BLK @ OVER MOD - BLK +! ; IMMEDIATE *Some FORTH developers use the Term "Screen/Block". But there is not always a 1-to-1 correspondence between "Screen" and "Block". *A "Block" refers to a memory area (512 bytes usually) that is the image of a disk sector or an equivalent chunk of a plain file. *A "Screen" refers to a set of contiguous blocks that can be interpreted via LOAD (usually B/SCR is 2). *In addition ?LOADING has #22 error-message usually associated with it : ?LOADING BLK @ 0= 22 ?ERROR ; *--> is deprecated in the 2020s. It is replaced by the standard word THRU. *[[http://forth-standard.org/standard/block/THRU|Forth-Standard "THRU - BLOCK EXT"]] - "LOAD the mass storage blocks numbered u1 through u2 in sequence. Other stack effects are due to the words LOADed" ). *[[http://www.complang.tuwien.ac.at/forth/gforth/Docs-html/Blocks.html|Gforth Manual "5.18 Blocks"]] - "thru load the blocks n1 through n2 in sequence". *User B: "My recollection was that --> could be used BETWEEN word definitions, but it could not be used IN THE MIDDLE of a word definition. The implication, if I understand it correctly, was that a SYSTEM, a SET of word definitions, could span a block, but NO ONE WORD DEFINITION could cross a block boundary". ==== How to organize a FORTH Project ? ==== === Prologue === *I know that in classical FORTH times of the 1980th, with little RAM, where a project must fit into 1 Kbyte of RAM ( Jupiter Ace !), or little more, it must have been easy to keep the overview over a FORTH project. But today with a simple ARM or MSP430 CPU, you have such an amount of interfaces and hardware modules, and with now a little bit more RAM ( e.g. 64Kbytes,..) anf FlashMemory ( e.g. 256 KBytes,..) so that the applications get more complex. *You have definitely this structure in a modern embedded software system: -A driver level of C ( in case of a C-FORTH ) or assembly language ( as FORTH words implemented in assembler ). -A lowest function level in FORTH which calls the drivers. -Middleware. -Top of application, e.g. user interface and control of the business process, technical process and / or the device. === Hierarchical tree, BottomUp === *You first describe some basic FORTH words, and then build higher FORTH words until you reach a control level, where the application is really-working. You create the API before you are using it. *This seems to me the most "obvious" style for FORTH. *The same style is used by agile web developers, who don´t start with a defining a database model but prefer a non-SQL database as they can later add some fields as soon as needed. === Hierarchical tree, TopDown === *The usual style for non-embedded applications, also using mockups, rapid prototyping tools &methods: First you bild the top of application, e.g. user interface and control of the business process, technical process and / or the device, but there is still no "action". For the lower functions, you create an API before you implement it. *How can this be done by FORTH, as FORTH functions are based on earlier-defined FORTH functions which give results and have parameters...? === Hierarchical tree, first Drivers then TopDown === *The most common and simplest way to create embedded systems is to first implement a basic low-level API of functions which initializes the hardware for the 1st. software release and gives access to the needed hardware for 1st. software release, and then switch to topdown development. So that you quickly have access to the hardware ( blinking LED,..), so that the top-level application can operate with limited functions quickly. *If the hardware manufacturer of the embedded board provides a "board support package" ( [[http://en.wikipedia.org/wiki/Board_support_package|EN.Wikipedia "Board support package"]] to be loaded into RAM ) or even a "BIOS" ( [[http://en.wikipedia.org/wiki/BIOS|EN.Wikipedia "BIOS"]], [[http://de.wikipedia.org/wiki/BIOS|DE.Wikipedia "BIOS"]], usually resident in ROM or FlashMemory ), these implements hardware initalisation routines and non-reentrant low-level drivers for the board. *This is called in modern terms "Minimum viable product" ( [[http://en.wikipedia.org/wiki/Minimum_viable_product|EN.Wikipedia "Minimum viable product"]], [[http://de.wikipedia.org/wiki/Minimum_Viable_Product|DE.Wikipedia "Minimum Viable Product"]] ). *With FORTH, this might work if the top application code uses kind of mockup to pass by middle-level application functions, but that for a rapid prototyping toplevel functions call lowlevel functions. === How to document the Structure of the FORTH code of a FORTH project, inside the FORTH system or even outside ? === *Documentation of the Structure of the FORTH code of a FORTH project: *HolonForth - "The first Holon system had a structure of modules, groups and (Forth) words", inspired by the hierarchical presentation of classes in Smalltalk IDEs. *You might use graphical tools ( UML? ), or simply sketch tools to document the hierarchical tree of your FORTH vocabulary. === FORTH, a Spaghetti Code Language ? === *[[http://en.wikipedia.org/wiki/Spaghetti_code|EN.Wikipedia "Spaghetti code"]], [[http://en.wikipedia.org/wiki/Spaghetticode|EN.Wikipedia "Spaghetticode"]]. *Who agrees that in "old times", or with hobbyist project even still nowadays, FORTH programmers are known to practice this style? *Usually this style is accused to be practiced by BASIC or C programmer, but if you do BottomUp programming in FORTH you loose any control what you are doing, easily... === Resources === ==== IDEs & Editors with FORTH Support ==== === 4E4th - Forth For Education ==== *[[http://www.4e4th.org/|4E4th - Forth For Education ( 4e4th.org )]] - "4E4th on the LaunchPad - 8/16K". *[[http://4e4th-ide.org/|4E4th - Forth For Education ( 4e4th-ide.org )]] - "The Integrated Development Environment for your MSP430 LaunchPad". *[[http://wiki.forth-ev.de/doku.php/projects:4e4th:start|DokuWiki "Forth Wiki [Forth-eV Wiki]" - "4E4th"]]. *Warning "!!! Achtung: Steck die beiden Jumper für den UART richtig herum !!!" :-). *[[http://wiki.forth-ev.de/doku.php/en:projects:4e4th:start|DokuWiki "Forth Wiki [Forth-eV Wiki]" - "4E4th - the New Version 2018"]]. *[[http://alt.forth-ev.de/repos/4e4th-se/|DokuWiki "Forth Wiki [Forth-eV Wiki]" - "4e4th-se Repository"]]. *[[http://alt.forth-ev.de/repos/4e4th/|DokuWiki "Forth Wiki [Forth-eV Wiki]" - "4e4th Repository"]]. *[[http://alt.forth-ev.de/repos/4e4th/Release0.34/Doc/Glossary_functional.pdf|DokuWiki "Forth Wiki [Forth-eV Wiki]" - "4e4th Repository / 4e4th Glossary"]]. *Author: [[http://www.facebook.com/dirk.bruehl|Facebook "Dirk Bruehl"]]. === Atom === *[[http://www.atom.io/packages/language-forth|Atom Packages "language-forth"]] - "Forth language support for Atom". *[[http://www.github.com/mpgirro/atom-language-forth|GitHub "mpgirro / atom-language-forth"]] - "Forth language support for Atom". *[[http://www.atom.io/packages/language-forth-multiuser|Atom Packages "language-forth-multiuser"]] - "Multi-User Forth language support for Atom". *[[http://www.github.com/inutt/atom-language-forth-multiuser|GitHub "inutt / atom-language-forth-multiuser"]], forked from [[http://www.github.com/mpgirro/atom-language-forth|GitHub "mpgirro / atom-language-forth"]]. === BBEdit === *8th is shipped with syntax file for the MacOSX-only editor BBEdit, in the "/docs/" folder. === Emacs === *Gforth is shipped with a Emacs configuration file to support reading and writing of FORTH blocks files. *[[http://www.complang.tuwien.ac.at/forth/gforth/Docs-html/Emacs-and-Gforth.html#Emacs-and-Gforth|TU Wien "Gforth Manual" - "12 Emacs and Gforth"]]. *[[http://www.complang.tuwien.ac.at/forth/gforth.el|TU Wien, Forth stuff - "gforth.el"]]. *[[http://www.jimbrooks.org/archive/programming/forth/emacs_gforth.php|Jim Brooks "interactively run Gforth inside Emacs"]]. *8th is shipped with syntax file for Emacs, in the "/docs" folder. *[[http://pygmy.utoh.org/forthblocks.html|Frank Sergeant "Forth Blocks Mode"]] - "This is an Emacs mode to help you edit Forth code in text files (almost) as if you were editing block files". === MyFORTHshell === *[[http://sites.google.com/view/myffshell/|Google Sites "MyFORTHshell"]] - "Development tool - Integrated Terminal and FileEditor for FORTH MCU development on Windows". === Notepad ++ === == Notepad ++ == *[[http://www.notepad-plus-plus.org/|Notepad ++]], [[http://TextFX.sourceforge.net/projects/notepadplusplus.mirror/|SourceForge "Notepad++"]], [[http://www.sourceforge.net/projects/notepadplusplus.mirror/|SourceForge "Notepad++"]]. == AceFORTH Syntax Highlighting ( NPP_AceFORTH_Syntax ) == *[[http://www.jupiter-ace.co.uk/faq_TextSyntaxHighlighting.html|Jupiter ACE Archive - The archive for the 1982 8-bit FORTH computer. "Text File Syntax Highlighting"]] - "NotePad++ AceFORTH syntax highlighting". == Plugin "TextFX Characters" == *[[http://npp-plugins.sourceforge.net/projects/|SourceForge "Notepad++ Plugins"]], [[http://www.sourceforge.net/projects/npp-plugins/|SourceForge "Notepad++ Plugins", Plugin "TextFX"]]. *[[http://www.sourceforge.net/projects/npp-plugins/files/TextFX/|SourceForge "Notepad++ Plugins"]] for 32-bit Notepad++ only :-(. *[[http://community.notepad-plus-plus.org/topic/17436/textfx-plugin-completely-missing|Notepad ++ Community "TextFX Plugin Completely Missing"]], 2019. *[[http://community.notepad-plus-plus.org/topic/17709/textfx-0-27-x86-and-x64-available|Notepad ++ Community "TextFX 0.27 x86 and x64 available"]], 2019. *[[http://community.notepad-plus-plus.org/topic/18558/textfx-plugin||Notepad ++ Community "TextFX plugin"]], 2019. *"If you have a 32-bit Notepad++ on a 32-bit OS, and chose normal installation, then plugins will go into the C:\Program Files\Notepad++\plugins\". *"If you have 64-bit Notepad++ on 64-bit OS, the official TextFX isn’t available". == Python Script by Claudia Frank == *[[http://community.notepad-plus-plus.org/topic/12073/limit-line-length|Notepad ++ Community "Limit line length"]] #, 2016. *Requires "Python script plugin". *[[http://npppythonscript.sourceforge.net/|SourceForge "Python Script for Notepad++"]], [[http://www.sourceforge.net/projects/npppythonscript/|SourceForge "Notepad++ Python Script"]]. *[[http://www.github.com/bruderstein/PythonScript|GitHub "bruderstein / PythonScript"]] - "Python Script plugin for Notepad++". *Prerequisite reading: *[[http://community.notepad-plus-plus.org/topic/17256/guide-how-to-install-the-pythonscript-plugin-on-notepad-7-6-3-7-6-4-and-above|Notepad ++ Community "Guide: How to install the PythonScript plugin on Notepad++ 7.6.3, 7.6.4 and above"]], 2019. *[[http://community.notepad-plus-plus.org/topic/10882/feature-request-copy-line-with-number/6|Notepad ++ Community "Feature request: Copy line with number", Article by "Claudia Frank"]], 2015. == Using Regular Expressions to split after 64 characters, by tomas-chrastina == *[[http://community.notepad-plus-plus.org/topic/10642/how-do-i-get-the-file-to-wrap-the-line-at-78-characters/4|Notepad ++ Community "How do I get the file to wrap the line at 78 characters?"]], 2015. == Resources == *"Settings / Preferences / Language" - Language Menu, Available items: 'Forth'" - Syntax highlighting of words versus numbers :-), no line break after 64 characters :-(. ***[[http://community.notepad-plus-plus.org/topic/12073/limit-line-length|Notepad ++ Community "Limit line length"]] #, 2016**. === UltraEdit === *The just-commercial editor [[http://www.ultraedit.com/|UltraEdit Text Editor]]. *[[http://www.jupiter-ace.co.uk/faq_TextSyntaxHighlighting.html|Jupiter ACE Archive - The archive for the 1982 8-bit FORTH computer. "Text File Syntax Highlighting"]] - "UltraEdit AceFORTH syntax highlighting". === Vim === *8th is shipped with syntax file for Vim, in the "/docs/" folder. === VisualStudio Code === == The IDE & FORTH == *[[http://marketplace.visualstudio.com/items?itemName=fttx.language-forth|Visual Studio Marketplace, Filippo Tortomasi "Forth"]] - "Forth language support in VSCode with objects.fs highlighting added from Gforth". *[[http://www.github.com/fttx/language-forth|GitHub "fttx / language-forth"]]. *[[http://marketplace.visualstudio.com/items?itemName=rickcarlino.forth|Visual Studio Marketplace, Rick Carlino "Forth"]] - "VS Code support for the Forth programming language". *[[http://www.github.com/RickCarlino/vscode-forth|GitHub "RickCarlino / vscode-forth"]]. == The IDE & Debugging ( C, FORTH, ... ) on ESP8266 == *[[http://medium.com/brickmakers/visual-studio-code-und-der-esp8266-2a401cc366b1|Medium, Brickmakers "Visual Studio Code und der ESP8266"]]. *[[http://devblogs.microsoft.com/iotdev/debug-your-arduino-code-with-visual-studio-code/|Microsoft DevBlogs "Debug your Arduino code with Visual Studio Code"]]. *[[http://www.randomnerdtutorials.com/vs-code-platformio-ide-esp32-esp8266-arduino/|Random Nerd Tutorials "Getting Started with VS Code and PlatformIO IDE for ESP32 and ESP8266 (Windows, Mac OS X, Linux Ubuntu)"]]. *[[http://www.visualmicro.com/|VisualMicro]] - "Arduino IDE for Visual Studio". *[[http://www.visualmicro.com/page/esp8266.aspx|VisualMicro "Arduino ESP8266 in the Visual Studio IDE"]]. *[[http://www.visualmicro.com/page/ESP8266-Debugging.aspx|VisualMicro "How to debug an ESP8266 Arduino project with GDBStub"]] - "The ESP8266 has only supported the vMicro Software debugger, as it lacks support for JTAG. Since the release of the 2.5.0 toolchain from Espressif, a GDB Stub has been added, allowing you to debug in a similar way to the Hardware debugging, without the hardware....". *[[http://www.facebook.com/groups/2225595150855239/permalink/3975791905835546/|Facebook Group "Forth2020", Thread "Automated approaches to testing Forth programs"]], 2021-05-16. *[[http://www.github.com/disokgone|GitHub "JurngChen, Su ( disokgone )"]], [[http://www.facebook.com/yongcheng.su|Facebook "Yongcheng Su"]]. *[[http://www.github.com/disokgone/2021_ESP32_DOIT_VSC_JTAG|GitHub "disokgone / 2021_ESP32_DOIT_VSC_JTAG"]]. *"This is a part of espforth from GitHub. You can load the .c program in VSCode and compile, then download to ESP32 dev board via JTAG cable. Once program flashed OK, the OpenOCD program will stopped program at the line before jump into your main(). You can set break points on the function run() and trace every primitives bytecodes". *"I suggest you add Serial.println(“before execute ..“); before line 497. And Serial.println(“after exec .. some debug messages, etc”); after line 497" *"By change the value of #define DEBUG_CORE_WORDS 0 (-> 1) and re-compile + Run, you can see the internal codes.. (That's too difficult to me !)". === Resources === *For some editors and IDEs, it is possible to limit the line length to 62 characters + CR/LF, to emulate FORTH screens. But even if the line length is limited to 64 characters -including CR/LF -, this does not provide 1K text blocks ( due to missing space characters after the last non-space character, due to the missing limit to 16 lines ).... :-(. ==== Terminal Technology ==== === Operate FORTH by Terminal === *[[http://xoomspeed.com/CNC/usbio/webhelp/forth-from-a-serial-terminal.htm|Xoomspeed "Forth from a serial terminal"]]. === Terminal Software with FORTH Support === == e4thcom == *[[http://wiki.forth-ev.de/doku.php/en:projects:e4thcom|DokuWiki "Forth Wiki [Forth-eV Wiki]" - "e4thcom - A Terminal for Embedded Forth Systems"]]. *Author: Manfred Mahlow. == escom == *[[http://www.github.com/Edzelf/escom|GitHub "Edzelf / escom"]] - "Communication for small Forth devices. Like e4thcom, but it will run under Windows". == forthtalk == *[[http://www.github.com/mike290/forthtalk|GitHub "mike290 / forthtalk"]] - "Python shell for communicating with Forth based systems via serial communications". == MyFFshell == *[[http://www.github.com/DK-MYC-01/MyFFshell|GitHub "DK-MYC-01 / MyFFshell"]] - "A shell for developing FlashForth SW via a COM port on Arduino, Scamp2 ++". *Author: [[http://www.facebook.com/jan.langevad|Facebook "Jan Langevad(OZ8MS)"]]. === Standard Terminal Software & USB Serial Drivers / Virtual COM Port (VCP) Drivers === *See [[remoteaccess.html|Remote Access Tools for Computers & Network Clients]] => "SSH, Telnet and Terminal Clients", "USB Serial Drivers / Virtual COM Port (VCP) Drivers". *See [[forth04.html|FORTH 4/7]]. === Protocols to transfer Data between 2 Terminals === *See [[remoteaccess.html|Remote Access Tools for Computers & Network Clients]] => "Protocols to transfer Data between 2 Terminals". *See [[forth04.html|FORTH 4/7]]. ==== Resources ==== *[[http://www.facebook.com/groups/forth2020/posts/3915709405177130/|Facebook "Forth2020 Users-Group" - "Would like to hear what kinds of IDE tools for modern Forth development you are using"]]. *"Block-based Forths used to be far more integrated than file-based Forths. In Polyforth, a single keystroke took you into the editor. Another single keystroke saved your changes, a single keystroke exited the editor and an alt-keystroke compiled the block. It was significantly faster than file-based work". *[[http://www.facebook.com/groups/forth2020/posts/4196048183809916/|Facebook "Forth2020 Users-Group" - "Are there Ardunio-alike development process for FORTH on embedded systems?"]]. *[[http://www.reddit.com/r/Forth/comments/6l4x7p/forth_language_support_extension_in_visual_studio/|Reddit "Forth Language Support Extension in Visual Studio Code - Just Starting Out"]]. *[[http://marketplace.visualstudio.com/search?term=forth&target=VSCode|Visual Studio Marketplace - Search for "forth"]]. ===== FAQs, Help, and Tutorials ===== *[[http://diacomm.co.kr/FORTH01.pdf|Dia Communications]], South Korea. *[[http://diacomm.co.kr/upload/joy_util/FORTH01.pdf|Dia Communications "Forth Introduction"]] ( PDF ). *[[http://www.forth.org/tutorials.html|Forth Interest Group ( FIG ) "Tutorials"]]. *[[http://free.forth-schulung.de/|FORTH-Schulung "Forth for bloody beginners"]]. *[[http://www.youtube.com/watch?v=RD7Ky4fF_XA|YouTube, 4ther "Workshop: Forth für blutige Anfänger - erste Schritte mit GNU/Forth (gforth) - von Carsten Strotmann"]]. *[[http://www.figuk.plus.com/|FIG UK]]. *[[http://www.figuk.plus.com/byof.htm|FIG UK "Build Your Own Forth"]]. *"F83 Tutor by Bill Kibler". *[[http://www.kiblerelectronics.com/|Kibler Electronics]]. *[[http://www.kiblerelectronics.com/kibler/forth.shtml|Kibler Electronics "Forth"]] - Download of "f83tutor.zip". *[[http://wiki.forth-ev.de/doku.php/projects|Forth e.V. Wiki "Projekte"]]. *[[http://wiki.forth-ev.de/doku.php/projects:f83_tutor|Forth e.V. Wiki "F83 TUTOR by BILL KIBLER"]] - Tutorial as 83 loadable FORTH-83 screens. *[[http://www.forth.org/resumes/kibler_bill.html|Forth Interest Group (FIG) "Bill Kibler Forth Resume"]] - Download of "F83TUTOR.ZIP". *[[http://www.linkedin.com/in/bill-kibler-19309768/|LinkedIn "Bill Kibler"]]. *[[http://www.forth-ev.de/wiki/pfw:welcome|Forth e.V. Wiki "Project Forth Works"]]. *"The core idea of this project is to use a simple, generic version of Forth to spread ideas, algorithms, protocols, applications and hardware drivers. This generic version of Forth guarantees that it can be understood and used by (almost) everybody in the Forth-community". *[[http://thebeez.home.xs4all.nl/ForthPrimer/|2( FP ) - Free FORTH Primer]] - "An ANS version of the Forth Primer". *[[http://dec.bournemouth.ac.uk/forth/forth.html|Peter Knaggs "Forth: An underview"]]. *[[http://wiki.laptop.org/index.php?title=Forth_Lessons|Laptop.org Wiki "Forth Lessons"]] by Julian V. Noble. *[[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.github.com/skilldrick/easyforth|GitHub "skilldrick / easyforth"]]. *[[http://web.archive.org/web/*/http://hem.passagen.se/tiletech/forth.htm|Edward Patel "Crash Course in FORTH"]] ( - 2004-04-04 ). *[[http://juergenandforth.wordpress.com/easyforth/|Jürgen Pintaske "A Start With Forth"]]. *Bill Regsdale: *[[http://www.forth.org/svfig/kk/08-2023-Ragsdale.pdf|Forth.org, Bill Regsdale "VALUE, TO and +TO SVFIG Aug. 26, 2023"] ( PDF ). *[[http://www-personal.umich.edu/~williams/archive/forth/forth.html|David N. Williams "DNW's Forth Page"]]. *[[http://www.murphywong.net/hello/forth.htm|Leo Wong "Forth"]]. *[[http://www.murphywong.net/hello/simple.htm|Leo Wong "Simple Forth. Rudiments of a Programming Language"]], 2004 - FORTH lessons. *[[http://www.murphywong.net/hello/01234th.htm|Leo Wong "0123 Forth. Beginning Programs in ANS Forth"]]. ===== FORTH Sample Code & Sample Programs ===== ==== Project Forth Works ( 2023 ) ==== *[[http://wiki.forth-ev.de/doku.php/pfw:welcome|Forth e.V. Wiki "Project Forth Works"]], 2023. *[[http://www.github.com/project-forth-works/project-forth-works|GitHub "Project Forth Works"]] - Discontinued. ==== Coding Snippets ==== *[[http://www.github.com/antonioleal/fsmlock|GitHub "antonioleal / fsmlock"]] - "FORTH code snippets". *[[http://www.google.com/search?q=forth+code+snippets|Google - Search for "forth code snippets"]]. *[[http://www.sametwice.com/forth_code|SameTwice "Forth code examples"]]. ==== Coding Tasks ==== *Check the FORTH booklist at [[forth06.html|FORTH 6/7]], for books which provide real coding excercises. *[[http://www.exercism.io/|Exercism]]. *Code practice and mentorship for everyone. Level up your programming skills with 3,450 exercises across 52 languages, and insightful discussion with our dedicated team of welcoming mentors. Exercism is 100% free forever. *Experts told me: The students use any help to code the solution ( web, book, tutorials ). The Excercism track gives hints where to find resources to understand and solve the excercise. Excercism itself is not a tutorial. *[[http://exercism.io/tracks/forth/|Exercism "Forth"]] - Does not yet exist. *[[http://www.github.com/exercism/exercism|GitHub "Exercism"]]. *[[http://www.github.com/exercism/forth/|GitHub "exercism / forth"]] - "Exercism Forth Track". *[[http://www.youtube.com/watch?v=ngY7Hs3HNfY|YouTube "Carsten Strotmann: Learning Forth with Exercsim.io"]], 2020-12 - "If you want to join, please leave comment in the Github issue #1". *[[http://docs.google.com/document/u/1/d/e/2PACX-1vT12DTKcw-u0XhHzrOU-slFAGYBpBOIO3TvtgEXn_HJ6Q1zSCZKHnpyq6clk5PSb2g1qzUn30O9nOsw/|Google Docs "Forth2020 Programming Challenge #1"]] by Peter Jakacki, 2022-10. *[[https://docs.google.com/document/d/e/2PACX-1vTwYgkNJRoDjYE7CUL5EMKEmP7vlVcIcQpYio_GAuGAN940Y36JGNRturhMNjsZhcyRrBDB5AjtdUi0/pub?fbclid=IwAR1EKVrtlULsZszxhL47afexkrDl158Hq7vmnSxrKRpO9UACWPoC-bIQXAM|Google Docs "Forth2020 Lift Challenge #2"]] by Peter Jakacki, 2023-03. ==== Simple Projects for FORTH Starters ==== *[[http://cs.wellesley.edu/~cs251/f19/assignments/forth/|Wellesley College "CS 251 Fall 2019 'The Forth Assignment"]]. *"The 10 minute challenge. What can you do in 10 minutes? You could go have a coffee,... Or..... you could write a short bit of Forth code and share it. What Forth code or experience can you post in 10 minutes?". *[[http://www.facebook.com/groups/forth2020/posts/4220408318040569/|Facebook "Forth2020 Users-Group", Thread "Albert Einstein"]] - Different FORTH implementations of the scientific calculation "E = MC2". *Online document [[http://archive.org/details/ff5-tutorial-guide/|Archive.org "A Tutorial Guide to Programming PIC18, PIC24 and ATmega Microcontrollers with FlashForth. 2016 Revision"]] - "A number of example programs, in the Forth language, are provided to illustrate the use of some of each microcontroller's peripheral devices". ==== Resources ==== *[[http://www.nippycodes.com/coding-snippets/forth/|NippyCodes "Code Snippets Forth"]]. *[[http://www.complang.tuwien.ac.at/forth/program-links.html|TU Wien, Institut für Computersprachen "Links to Forth programs"]]. ===== Resources ===== *[[http://www.6502.org/tutorials/zero_overhead_forth_interrupts.html|6502.org. the 6502 microprocessor resource, Tutorial "Zero-Overhead Forth Interrupt Service on 65C02"]]. *AcademicKids. *[[http://www.academickids.com/encyclopedia/index.php/Forth_programming_language|AcademicKids "Forth"]]. *[[http://www.academickids.com/encyclopedia/index.php/Jupiter_ACE|AcademicKids "Jupiter ACE"]], [[http://www.academickids.com/encyclopedia/index.php/Jupiter_Cantab|AcademicKids "Jupiter Cantab"]]. *[[http://www.academickids.com/encyclopedia/index.php/Reverse_Polish_notation|AcademicKids "Reverse Polish notation"]]. *[[http://www.academickids.com/encyclopedia/index.php/Threaded_code|AcademicKids "Threaded code"]]. *[[http://academickids.com/encyclopedia/index.php/Stack_(computing)|AcademicKids "Stack (computing)"]]. *[[http://www.andreadrian.de/8_Bit_Laptops/index.html|Andre Adrian "8 Bit Laptops"]] - "Die Programmiersprache Forth", "Forth in Z80 Assembler". *Blog [[http://cartesianproduct.wordpress.com/|cartesian product by Adrian McMenamin. Stuff about computing…mostly]]. *[[http://cartesianproduct.wordpress.com/2021/12/18/forth-code-optimisation-revisited/|cartesian product "Forth code optimisation revisited"]]. *[[http://cartesianproduct.wordpress.com/tag/domain-specific-language/|cartesian product - "Tag: Domain-specific language"]]. *[[http://www.arduino-forth.com/|FORTH & Arduino / ESP32]]. *Author: [[http://www.facebook.com/mpDu11|Facebook "Bientor Laquille"]], [[https://www.facebook.com/groups/1470449089921787/user/1637072397/|Facebook "Bientor Laquille"]]. *[[http://www.arduino-forth.com/article/FORTH_learn_parOuCommencer|FORTH & Arduino ESP32 "Where to start to program in FORTH language"]]. *"Rotary encoder". *[[http://www.arduino-forth.com/article/composants_rotaryEncoder|FORTH & Arduino ESP32 "Rotary encoder"]]. *[[http://www.facebook.com/groups/PROGRAMMINGFORTH/posts/2838093476490668/|Facebook "FORTH PROGRAMMING LANGUAGE 21st CENTURY", Thread "KY040encoder"]]. *[[http://www.arduino-forth.com/article/FORTH_whyForth|FORTH & Arduino / ESP32 "Why program in FORTH language on ARDUINO?"]]. *Wiki [[http://www.atariwiki.org/|ATARI Wiki]]. *[[http://www.atariwiki.org/wiki/Wiki.jsp?page=Forth|ATARI Wiki "Forth"]]. *"Forth Systems for the Atari". *"Forth Books". *"Forth Articles". *"Tutorials". *"Videos and Screencasts". *[[http://www.c64-wiki.de/wiki/Forth|C64-Wiki "Forth"]]. *[[http://lennartb.home.xs4all.nl/|Lennart Benschop]]. *[[http://lennartb.home.xs4all.nl/firstforth.txt|Lennart Benschop "My first experiences with FORTH", 1984-1992]]. *[[http://bootstrapping.miraheze.org/w/index.php?title=Forth|bootstrapping wiki "Forth"]]. *"Implementations in Forth". *"tiny C interpreter in forth". *"BASIC in a few screens of code". *[[http://www.forthworks.com/forth/|Charles Childers, Forthworks "Forth Resources"]]. *[[http://liinwww.ira.uka.de/bibliography/Compiler/forth.html|The Collection of Computer Science Bibliographies "Forth Bibliography"]]. *comp.lang.forth. *[[http://forth.sourceforge.net/|SourceForge "comp.lang.forth.repository"]], [[http://www.sourceforge.net/projects/forth|SourceForge "comp.lang.forth.repository"]] #. *[[http://www.faqs.org/faqs/computer-lang/forth-faq/|Computer Lang/forth FAQ Index]]. *[[http://groups.google.com/g/comp.lang.forth/c/1hyNWI-PPRw/m/78hGdMb1DAAJ|Google Groups "comp.lang.forth", Thread "Forth is the programming language of the future"]], 2018. *[[http://groups.google.com/g/comp.lang.forth/c/N5B1AbXqPfQ|Google Groups "comp.lang.forth", Thread "Is there a free version of Forth that uses the exact same words as "Starting Forth" on Forth Inc.'s site?"]], 2017. *Wiki [[http://www.concatenative.org/|The Concatenative Language Wiki]]. *[[http://www.concatenative.org/wiki/view/Forth|The Concatenative Language Wiki "Forth"]]. *[[http://www.cornu.de/forth.html|Cornu GmbH "Cornu: Forth"]]. *"Forth ist eine der wenigen Programmiersprachen, die von einer Einzelperson implementiert werden können". *"Weil der Parser nicht rekursiv ist, kann er sehr schnell sein, was für große Eingabedateien wie z.B. CAN-Traces wichtig sein kann". *Cunningham & Cunningham, Inc. ( C2 ). *[[http://wiki.c2.com/?ConcatenativeLanguage|Cunningham & Cunningham, Inc. "Concatenative Language"]]. *[[http://c2.com/cgi/wiki?ForthLanguage|Cunningham & Cunningham, Inc. "Forth Language"]] #. *[[http://wiki.c2.com/?SmugForthWeenies|Cunningham & Cunningham, Inc. "Smug Forth Weenies"]]. *[[http://wwww.dev.to/efpage/let-the-forth-be-with-you-2dob|DEV Community, Eckehard "Let the FORTH be with you"]]. *"Though FORTH is available for almost any computer system as open source, it never reached a larger community for some reasons": *"Using stack oriented operations is very machine-friendly, but not easy to understand". *"The lack of more advanced structures made it very hard to follow the program logic. Reading and understanding a program was nearly impossible, even if you created the code yourself 14 days ago". *[[http://www.msmisp.com/futuretest/Forth%27s_Dilemma.htm|EE-Logos.org "The Forth's Dilemma, When Great Firms Cause New Technologies to Fail"]]. *Assad Ebrahim. *[[http://www.linkedin.com/in/assadebrahim/|LinkedIn "Assad Ebrahim"]]. *[[http://www.mathscitech.org/articles/author/AKE|Assad Ebrahim, Mathematical Science & Technologies… explorations, in a nutshell … , Author "Assad Ebrahim"]]. *[[http://mathscitech.org/articles/about|Assad Ebrahim, Mathematical Science & Technologies… explorations, in a nutshell … "About Us"]]. *[[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.embedded.com/|Embedded.com]]. *[[http://www.embedded.com/i-hate-forth/|Embedded.com, Jack Ganssle "I Hate Forth"]], 2001. *[[http://www.embedded.com/go-forth/|Embedded.com, Colin Walls "Go Forth!"]], 2014. *[[http://www.exemark.com/|eXmark - Technical Marketing Services]]. *[[http://www.exemark.com/FORTH.htm|eXmark - Technical Marketing Services "FORTH"]]. *[[http://www.exemark.com/FORTH/eForthOverviewv5.pdf|eXmark - Technical Marketing Services "eForth Overview by C. H. Ting"]] ( PDF ). *[[http://wiki.forth-ev.de/lib/exe/fetch.php/projects:430eforth:eforth_publisher_2018_09_16_v2.pdf|Forth e.V. "eForth Overview by C.H. Ting. Here just the code. The complete file can be found at www.exemark.com under Forth"]] ( PDF ). *[[http://wiki.forth.org.ru/|Forth.ORG.RU Wiki]]. *ForthOS. *BootOS. *ForthLiterature. *[[http://forth.retro-os.live/|FORTH Fans ( forth.retro-os.live )]]. *[[http://www.facebook.com/marisa.giancarla|Facebook "Marisa Giancarla, Indie game dev"]]. *[[http://www.linkedin.com/in/marisagiancarla/|LinkedIn "Marisa Giancarla"]]. *[[http://www.discord.gg/bh9XeV43|Discord "FORTH Fan"]]. *Similar projects: *[[http://cando.amigacity.xyz/|CanDo For Amiga Fans]]. *[[http://www.discord.com/VXkGuKtQ]/|Discord "CanDo For Amiga"]]. *[[http://www.mpeforth.com/|MicroProcessor Engineering Limited]]. *[[http://soton.mpeforth.com/|MPE Southampton]]. *[[http://soton.mpeforth.com/flag/|FLAG - Forth Library Action Group]] - "Last updated: 1 November 2011". *Blog [[http://www.forthseen.de/|ForthSeen - Alternative Embedded Systems - Blog]] ( - 2015 ) - "ForthDay2015", "ForthDay2014". *[[http://www.forth-standard.org/|Forth ( forth-standard.org )]] - "This is the official website of the Forth 2012 Standard, and Forth200x committee". *[[http://www.forth-standard.org/standard/core|Forth ( forth-standard.org ) "6 Glossary. 6.1 Core words"]]. *[[http://www.forth200x.org/|Forth200x]] - "A new Forth standardization". *[[http://web.archive.org/web/*/http://www.forthlinks.com/|Archive.org "forthlinks.com"]] ( - 2009-11-26 ). *[[http://www.forthfreak.net/|Lothar Schmidt "ForthFreak"]]. *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"]]. *[[http://www.forth-ev.de/|Forth-Gesellschaft e.V.]]. *[[http://www.forth.com/resources/evolution/|FORTH,Inc "The Evolution of Forth"]]. *[[http://www.forth.org/tutorials.html|Forth Interest Group "Forth Tutorials"]] - List to FORTH tutorials. *[[http://www.forthlang.org/|Forth Language ( forthlang.org )]]. *[[http://www.forth.ninja/development/|forth.ninja "Forth Programming Language. All about Forth programming language. Forth FOREVER!" ( forth.ninja )]]. *[[http://forth.ninja/wp-content/uploads/2020/02/dpans94.pdf|dpans94.pdf]]. *[[http://www.patorjk.com/programming/articles/forththoughts.htm|Patrick Gillespie "Michael Misamore: Introduction to Thoughtful Programming and the Forth Philosophy"]], 2002. *[[http://www.hackaday.com/|Hackaday]]. *[[http://www.hackaday.com/2017/01/27/forth-the-hackers-language/|Hackaday "Forth: The Hacker’s Language"]], 2017. *[[http://www.hackaday.com/2023/01/08/forth-cracks-risc-v/|Hackaday "Forth Cracks RISC-V"]], 2023. *[[http://www.hackr.io/tutorials/learn-forth|hackr.io "Learn Forth - Best Forth Tutorials"]] - "Forth Tutorials and Courses". *[[http://www.heise.de/hintergrund/Forth-die-ewig-junge-Programmiersprache-4988866.html|heise online "Forth – die ewig junge Programmiersprache"]], 2020-12. *"Forth ist eine 'Concatenative'-Programmiersprache. Das heißt, es gibt nur minimale Syntaxregeln, und Befehle beziehungsweise Funktionen (im Forth-Sprachgebrauch 'Wörter') werden mit Leerzeichen getrennt hintereinander geschrieben". *"Da in den ersten Jahren von Forth auch der Platz für Quellcode auf Speichermedien stark begrenzt war, hatte sich Forth leider den Ruf einer Write-only-Programmiersprache zugezogen. Es braucht ein wenig Disziplin, um schön lesbare Forth-Programme zu schreiben". *[[http://home.iae.nl/users/mhx/|Marcel Hendrix]]. *[[http://www.inventio.co.uk/threeforthsmakeahole.htm|Inventio Software "Three Forths Make a Hole"]], 2003. *[[http://www.jeelabs.org/|JeeLabs]]. *[[http://www.jeelabs.org/w/weblog/|JeeLabs "Weblog"]], 2008-2019. *[[http://www.jeelabs.org/article/|JeeLabs "Articles"]], 2015-2017. *[[http://web.archive.org/web/*/http://www.jeelabs.org/archive/|Archive.org "JeeLabs: Archive"]], 2011-2015. *Blog [[http://blog.jeronimus.net/|The Jeronimus.Net blog]] - A blog of a FORTH user :-). *Hacker News. *[[http://news.ycombinator.com/item?id=19665888|Hacker News "Why Concatenative Programming Matters"]], 2012. *Homebrew Robotics Club. *[[http://www.hbrobotics.org/wiki/index.php?title=Forth_on_Robots|Homebrew Robotics Club "Forth on Robots"]]. *[[http://www.hbrobotics.org/wiki/index.php?title=Forth_for_Robotics_and_Programming_at_the_Bare_Metal|Homebrew Robotics Club "Forth for Robotics and Programming at the Bare Metal"]]. *[[http://home.kpn.nl/~josv/|Jos "Forth for a smart home, graphics and parallel processing"]]. *[[http://dec.bournemouth.ac.uk/forth/|Dr. Peter Knaggs "The Forth Research Page"]]. *[[http://www.yosefk.com/|Yossi.Kreinin]]. *[[http://yosefk.com/blog/my-history-with-forth-stack-machines.html|Yossi.Kreinin, Proper Fixation. a substitute for anaesthesia "My history with Forth & stack machines"]], 2010 - Article about experience with "pForth", 9.007 comments! *[[http://p2k.unkris.ac.id/IT/3065-2962/|Universitas Krisnadwipayana Jakarta "Teknologi Informasi (Informatika, Internet & Komputer)"]]. *[[http://p2k.unkris.ac.id/IT/3065-2962/push-down-stack_4190_p2k-unkris.html|Universitas Krisnadwipayana Jakarta "Stack machine"]]. *[[http://www.learnxinyminutes.com/docs/forth/|Learn X in Y minutes "Where X=forth"]]. *[[http://www.ctrl-c.club/~lettuce/programming-forth.html|Lettuce gemlog. Generative music, art, coding, learning, politics, whatever "Programming Forth"]], 2021-01 - "I have been learning Forth this year!". *[[http://www.lobste.rs/search?q=forth|lobste.rs - Search for "forth"]] - "2755 results". *[[http://www.nanopdf.com/download/5ad00cdbb1c5c_pdf|NanoPDF "Sergey Baranov: Forth in Russia"]] *[[http://www2.latech.edu/~acm/helloworld/HelloWorld.shtml|Louisiana Tech ACM "Hello World"]]. *[[http://www2.latech.edu/~acm/helloworld/forth.html|Louisiana Tech ACM "Hello World in FORTH"]]. *[[http://www.mikrocontroller.net/articles/Forth|Mikrocontroller.net "Forth"]] - List of FORTH implementations. *Blog [[http://dirkmittler.homeip.net/blog/|Dirk Mittler's Blog]]. *[[http://dirkmittler.homeip.net/blog/archives/3514|Dirk Mittler's Blog "64-bit FORTH"]]. *[[http://www.theforthsource.com/|Mountain View Press "The FORTH Source"]] #. *[[http://www.angelfire.com/mn2/myyahtzee/forth.html|mw28394 "Forth in Java Programming"]] -> General FORTH linklist #. *[[http://web.archive.org/web/*/http://forth.gsfc.nasa.gov/|Archive.org "Space-Related Applications of Forth. Compiled by James Rash, NASA Goddard Space Flight Center Greenbelt, Maryland ( forth.gsfc.nasa.gov )"]] ( - 2011-02-04 ). *[[http://www.progopedia.com/language/forth/|Progopedia - Encyclopedia of Programming Languages "Forth"]]. *[[http://www.zock.com/64er/8407/0011.html|Projekt 64'er, Ausgabe 7/Juli 1984 "Forth - die etwas andere Programmiersprache"]]. *[[http://smoliva.blog/post/computer-chronicles-revisited-018-personal-cobol-forth-dr-logo/|S.M. Oliva, "Computer Chronicles Revisited, Part 18 — Personal COBOL, Forth, and DR Logo"]], 2021. *Wiki [[http://wiki.laptop.org/go/The_OLPC_Wiki|The OLPC Wiki]]. *[[http://wiki.laptop.org/go/FORTH|The OLPC Wiki "FORTH"]]. *[[http://wiki.laptop.org/go/Forth_Lessons|The OLPC Wiki "Forth Lessons"]] - "This is a series of lessons on the Forth programming language and Open Firmware". *[[http://wiki.laptop.org/go/Open_Firmware|The OLPC Wiki "Open Firmware"]]. *[[http://project-forth-works.github.io/|GitHub.io "Project Forth Works"]], 2021. *"Forth would benefit greatly from an active community sharing sources and solutions. But our problem lies in the saying: 'When you have seen one Forth, you have seen one Forth'. With this project we would like to embrace our differences. And start sharing, despite having all the different Forths-dialects". *[[http://www.github.com/project-forth-works|GitHub "Project Forth Works. Embrace The Difference"]]. *[[http://www.rosettacode.org/wiki/Category:Forth|Rosetta Code "Category:Forth"]] - Source code solutions for standard computation problems :-). *[[http://www.amd.e-technik.uni-rostock.de/veroeff/f93.pdf|Universität Rostock, Egmont Woitzel "Datenstrukturen unter Forth: Eine alte Lösung für ein altes Problem"]] - "war die Bekanntschaft mit dem Windows-API. Eigentlich als C-Interface ausgelegt, werden durch dieses Interface auch Zeiger auf relativ komplexe Datenstrukturen, vorzugsweise Records, hin und her getragen, die entweder vor der Übergabe oder nach der Rückkehr aus Windows vom Programmierer auszufüllen bzw. auszuwerten sind. Handhabbar ist solch ein Interface nur, wenn die Adressierung symbolisch erfolgt. Da eingesetzte WinForth keine geeigneten Konstrukte enthielt... ". *[[http://www.fortech.de/|FORTecH Software GmbH]]. *[[http://www.slashdot.org/|SlashDot]]. *[[http://www.slashdot.org/archive.pl?op=bytime|SlashDot Story Archive -]] *[[http://www.slashdot.org/story/01/09/11/139249/chuck-moore-holds-forth|SlashDot "Chuck Moore Holds Forth"]], 2001. *[[http://www.atariwiki.org/wiki/Wiki.jsp?page=Henry%20Laxen%20on%20Slashdot%202002|ATARI Wiki "Henry Laxen on Slashdot 2002"]]. *[[http://www.scidata.ca/|scidata]]. *[[http://www.scidata.ca/?p=47|scidata "Thinking in Forth"]]. *[[http://www.scidata.ca/?p=264|scidata "Forth – not quite dead"]]. *[[http://www.scidata.ca/?page_id=857|scidata "Forth on the Pi"]] ( = "GForth on the Pi" ). *[[http://www.scidata.ca/?p=895|scidata "Forth: A Syntonic Language"]]. *[[http://www.scidata.ca/?page_id=1935|scidata "Pygmy Forth on the Pi"]]. *[[http://www.sigusr2.net/be-moore-like-chuck.html?|Sigusr2 "Be Moore Like Chuck"]]. *[[http://cis.csuohio.edu/~somos/forth.html|Michael Somos "Forth WWW and FTP Links"]]. *[[http://uwiki.strotmann.de/view/forth-language/|Carsten Strotmann's Federated Wiki "Forth Language"]]. *[[http://www.taygeta.com/|Taygeta Scientific Inc.]]. *[[http://www.taygeta.com/forth.html|Taygeta Scientific Inc. "Forth Information on Taygeta"]] #. *"John Hayes's ANS compiler validation program (27 Nov 95 version)". *[[http://www.taygeta.com/forthlit.html|Taygeta Scientific Inc. "Forth Literature and Education"]]. *[[http://wiki.tcl.tk/1656|Tcler's Wiki "Forth"]]. *[[http://www.tfconsult.com/forth-2020-revisited/|TF Consulting, Dr. rer. nat. Thomas Fabula "Forth 2020 revisited"]]. *[[http://www.pcorner.com/list/FORTH|The Programmer's Corner "Forth Source Code"]]. *TU Wien, Institut für Computersprachen. *[[http://www.complang.tuwien.ac.at/forth/faq/faq-general-2.html|TU Wien, Institut für Computersprachen "comp.lang.forth Frequently Asked Questions"]]. *[[http://www.complang.tuwien.ac.at/anton/euroforth/|TU Wien, Institut für Computersprachen "EuroForth. The European Forth Conference"]], 2006-09-19. *[[http://www.complang.tuwien.ac.at/projects/forth.html|TU Wien, Institut für Computersprachen "Forth Research at Institut für Computersprachen"]] #. *[[http://www.complang.tuwien.ac.at/forth/old-faq/more-books.html|TU Wien, Institut für Computersprachen "Forth Literature Registered in BIBOS"]]. *[[http://www.complang.tuwien.ac.at/forth/objects/opinion.html|TU Wien, Institut für Computersprachen "On Standardizing Object-Oriented Forth Extensions"]]. *[[http://www.complang.tuwien.ac.at/forth/threaded-code.html|TU Wien, Institut für Computersprachen "Threaded Code"]]. *[[http://www.complang.tuwien.ac.at/forth/program-links.html|TU Wien, Institut für Computersprachen "Links to Forth programs"]]. *[[http://web.archive.org/web/*/http://www.webring.org/hub?ring=forth|Archive.org "Webring.org 'Forth Programming'"]] ( - 2015 ). [[http://web.archive.org/web/*/http://www.webring.org/cgi-bin/webring?ring=forth;list|Archive.org "Webring.org 'Forth Programming'" - List of member pages]] ( 2011-08-11 only ). -#1 [[http://home.planet.nl/~josv/|Jos v.d.Ven "4th"]]. *[[http://web.archive.org/web/*/http://home.planet.nl:80/~josv/|Using Win32Forth for Graphics and parallel arithmetic]] ( - 2012-05-06 ). *[[http://sites.google.com/site/win324th/|Archive.org "Google Sites: Win32Forth for graphics and parallel processing"]] ( - 2016-09-24 ). -#5 [[http://web.archive.org/web/*/http://www.zforth.com/|Bill Zimmerly - The Forth Programming Webring" ( zforth.com )]] ( - 2009-01-06 ) - "This webring site is powered by webserver software, zHTTP, that was written in zForth (what else?) by your's truely". -#5 [[http://www.murphywong.net/hello/forth.htm|Leo Wong "Forth"]]. -#8 [[http://4im.atspace.com/|4IM - A Neoclassic Forth ( atspace.com )]]. -#10 [[http://www.taygeta.com/forth.html|Taygeta Scientific Inc. "Forth Information on Taygeta"]]. -#11 [[http://www.schneider-busch.de/dirk/forth/|Dirk's Win32Forth Homepage]]. -#13 [[http://bernd-paysan.de/|Bernd Paysan's Homepage]]. -#15 [[http://www.testra.com/|Testra Corporation - The New Art in Stepping Motor Drive and Control]]. -#18 [[http://calforth.sourceforge.net/|SourceForge "calForth Sourceforge Homepage"]], [[http://sourceforge.net/projects/calforth/|SourceForge "CalForth"]]. -#20 [[http://www.win32forth.org/|Win32Forth Project Group]]. -#23 [[http://people.well.com/user/jax/rcfb/forth.html|Jax RCFB - The Forth Programming Environment Online]]. -#24 [[http://web.archive.org/web/*/http://pbjtech.com/|pbjtech - Embedded Control Technology]] ( - 2014-01-06 ) - FORTH is not mentioned on the website :-(. -#26 [[http://www.mpeforth.com/|mpe - MicroProcessor Engineering]]. -#38 [[http://alexript.tripod.com/|Tripod "GForth Resources"]]. -#39 [[http://pfe.sourceforge.net/|SourceForge "PFE - Portable Forth Environment"]], [[http://www.sourceforge.net/projects/pfe|SourceForge "PFE - Portable Forth Environment"]]. -#41 [[http://www.angelfire.com/mn2/myyahtzee/forth.html|Anglefire "Forth in Java Programming"]]. -#49 [[http://forth.sourceforge.net/|SourceForge "comp.lang.forth.repository"]], [[http://www.sourceforge.net/projects/forth|SourceForge "comp.lang.forth.repository"]]. -#51 [[http://web.archive.org/web/*/http://www.newmicros.com|Archive.org "New Micros, Inc. (NMI)"]]. *[[http://web.archive.org/web/20080614014158/http://forth.newmicros.com/|Archive.org "New Micros, Inc. (NMI) - Max-FORTH IN A NUTSHELL"]]. -#53 [[http://www.forth.org/svfig/|Silicon Valley Forth Interest Group]] (SVFIG). -#56 [[http://web.archive.org/web/*/http://www.coreforth.com/en/index.html|Archive.org "Coreforth. A Virtual Machine Inside The Operation System"]] ( - 2008 ). *Blog [[http://wellys.com/tags/forth/|Lief Koepsel, Welly's Blog - Articles tagged with "forth"]], 2021 - Topics: ESP32Forth, Mecrisp-Stellaris Forth, ... *[[http://www.whoishostingthis.com/|WhoIsHostingThis]]. *[[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 ) - The stories about bigFORTH, Gforth, pbForth. *[[http://en.wikipedia.org/wiki/Burroughs_large_systems|EN.Wikipedia "Burroughs large systems"]]. *"The Burroughs Large Systems Group produced a family of large 48-bit mainframes using stack machine instruction sets with dense syllables". *[[http://en.wikipedia.org/wiki/Forth_%28programming_language%29|EN.Wikipedia "Forth (programming language)"]], [[http://de.wikipedia.org/wiki/Forth_%28Informatik%29|DE.Wikipedia "Forth (Informatik)"]]. *[[http://en.wikipedia.org/wiki/Reverse_Polish_notation|EN.Wikipedia "Reverse Polish notation"]] ( RPN ), [[http://de.wikipedia.org/wiki/Umgekehrte_polnische_Notation[[|DE.Wikipedia "Umgekehrte polnische Notation"]] ( UPN ). *[[http://en.wikipedia.org/wiki/Concatenative_programming_language|EN.Wikipedia "Concatenative programming language"]]. *[[http://en.wikipedia.org/wiki/Function-level_programming|EN.Wikipedia "Function-level programming"]] ( "A function-level program is variable-free". FORTH is not mentioned to support this, though ) versus [[http://en.wikipedia.org/wiki/Functional_programming|EN.Wikipedia "Functional programming"]], [[http://de.wikipedia.org/wiki/Funktionale_Programmierung|DE.Wikipedia "Funktionale Programmierung"]] versus [[http://en.wikipedia.org/wiki/Procedural_programming|EN.Wikipedia "Procedural programming"]], [[http://de.wikipedia.org/wiki/Prozedurale_Programmierung|DE.Wikipedia "Prozedurale Programmierung"]]. *[[http://en.wikipedia.org/wiki/Homoiconicity|EN.Wikipedia "Homoiconicity"]], [[http://de.wikipedia.org/wiki/Homoikonizität|DE.Wikipedia "Homoikonizität"]] ( FORTH is not mentioned to support this, though ). *[[http://en.wikipedia.org/wiki/Stack-oriented_programming|EN.Wikipedia "Stack-oriented programming"]]. *[[http://en.wikipedia.org/wiki/Stack_machine|EN.Wikipedia "Stack machine"]]. *[[http://en.wikipedia.org/wiki/Tacit_programming|EN.Wikipedia "Tacit programming"]]. *[[http://en.wikipedia.org/wiki/Write-only_language|EN.Wikipedia "Write-only language"]] - "Languages that have been derided as write-only include ... Forth... ". *[[http://en.wikipedia.org/wiki/Tower_of_Babel|EN.Wikipedia "Tower of Babel"]], [[http://de.wikipedia.org/wiki/Turmbau_zu_Babel|DE.Wikipedia "Turmbau zu Babel"]]. *Reduced instruction set computer / processor. *[[http://en.wikipedia.org/wiki/Reduced_instruction_set_computer|EN.Wikipedia "Reduced instruction set computer"]], [[http://de.wikipedia.org/wiki/Reduced_Instruction_Set_Computer|DE.Wikipedia "Reduced Instruction Set Computer"]]. *"Forth Reduced Instruction Set Computer ( FRISC ) processor architecture". *[[http://en.wikipedia.org/wiki/4-bit_computing|EN.Wikipedia "4-bit computing"]] - "The 4-bit processors were programmed in assembly language or Forth, e.g. "MARC4 Family of 4 bit Forth CPU" because of the extreme size constraint on programs and because common programming languages (for microcontrollers, 8-bit and larger), such as the C programming language, do not support 4-bit data types (C requires that the size of the char data type be at least 8 bits, and that all data types other than bitfields have a size that is a multiple of the character size". *[[http://de.wiktionary.org/wiki/Egotrip|Wiktionary "Egotrip"]] - "innere Haltung einer Person, fast nur das eigene Interesse zu verfolgen". *[[http://en.wikipedia.org/wiki/Separation_of_concerns|EN.Wikipedia "Separation of concerns"]]. *[[http://en.wikipedia.org/wiki/Create,_read,_update_and_delete|EN.Wikipedia "Create, read, update and delete"]], [[http://en.wikipedia.org/wiki/CRUD|EN.Wikipedia "CRUD"]]. *[[http://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop|EN.Wikipedia "Read–eval–print loop"]] ( "REPL" ). *[[http://en.wikipedia.org/wiki/Finite-state_machine|EN.Wikipedia "Finite-state machine"]], [[http://de.wikipedia.org/wiki/Endlicher_Automat|EN.Wikipedia "Endlicher Automat"]]. ===== Forums, Newsgroups ===== *[[http://forum.6502.org/search.php?keywords=forth|6502.org. the 6502 microprocessor resource, Forum - Search for "forth"]]. *[[http://forum.6502.org/viewtopic.php?f=9&t=1944|6502.org. the 6502 microprocessor resource, Forum "Getting started in Forth"]] - "I chose the FIG6502 source from the source code repository". *[[http://www.atariage.com/forums/topic/232186-modernizing-graforth/|AtariAge Forums, Subforum "Apple II Computers", Thread "Modernizing" GraFORTH"]], 2014. *[[http://forums.bannister.org/|Richard Bannister's Forums]]. *[[http://forums.bannister.org/ubbthreads.php?ubb=cfrm&c=5|Richard Bannister's Forums - Subforum "MAME"]]. *[[http://computer-programming-forum.com/| computer-programming-forum.com]]. *[[http://computer-programming-forum.com/viewforum/22-forth/35.htm| computer-programming-forum.com "forth"]] ( - 2005 ). *[[http://computer-programming-forum.com/viewforum/22-forth/479.htm|Computer Programming Forum "forth"]] ( without "www." ) - "ForthNet articles from GEn ( - 1992 )". *[[http://computer-programming-forum.com/22-forth/f4cce746a9e897c5.htm|Computer Programming Forum "forth" - "ANS NOT"]] ( without "www." ). *"Forth-79 says: NOT ( flag -> ! flag ) Reverse truth value. Equivalent to 0=, Forth-83 says: NOT ( 16b1 -- 16b2 ) 16b2 is the one's complement of 16b1". *"Quoting from Kelly and Spies _FORTH: A Text and Reference_, p34: **There is another word, NOT , whose use is inconsistent in different dialects of FORTH**. In most dialects and in FORTH-79, NOT doesn't change bits; it does something quite different ... . In FORTH-83, however, NOT changes each bit to its opposite". *"ANS Forth didn't change or "kill" NOT . Forth-83 changed (and thus ultimately killed) NOT . ANS Forth simply noted that the damage has already been done, and is beyond repair, unless you are willing to break "most dialects" (as claimed in Kelly and Spies) of Forth. Mitch Bradley". *[[https://discord.com/invite/BSUM7GBdwU|Discord "Forth"]]. *Facebook. *[[http://www.facebook.com/search/groups/?q=forth|Facebook - Search for "forth"]]. *[[http://www.facebook.com/groups/752722221513690/|Facebook "328eForth"]]. *[[http://www.facebook.com/groups/322686718913758/|Facebook "comp.lang.forth"]]. *[[http://www.facebook.com/DurexForth/|Facebook "DurexForth"]]. *[[http://www.facebook.com/groups/fortharduinoesp32|Facebook "FORTH programming on ARDUINO"]] ( formerly "Arduino & ESP32 FORTH" ). *[[http://www.facebook.com/profile.php?id=100070151762864|Facebook "FIGnition"]]. *[[http://www.facebook.com/groups/1847741652126778/|Facebook "FORTH PROGRAMMING:- HARDWARE / SOFTWARE / SERVICES (SALE+WANTED)"]]. *[[http://www.facebook.com/groups/PROGRAMMINGFORTH/|Facebook "FORTH PROGRAMMING LANGUAGE 21st CENTURY"]] #. *"FORTH PROGRAMMING LANGUAGE 21st CENTURY" General Chat. *[[http://www.facebook.com/groups/forthprogrammingretrodev/|Facebook "FORTH PROGRAMMING / EARLY FORTH SYSTEMS & DEVELOPMENT"]] #. *[[http://www.facebook.com/groups/forth2020/|Facebook Group "Forth2020 forth programming language group"]] ( formerly: [[http://www.facebook.com/groups/2225595150855239/|Facebook Group "Forth2020 Users-Group"]], "Forth2020 forth programming language legacy group") #. *Subgroup [[http://www.facebook.com/groups/forth2020/subgroups/759709845342071|Facebook "FORTH2020 FORTH LANGUAGE PROGRAMMING CHANNEL. In Forth2020 Users-Group. Open feed channel"]]. *With postings in this group, it is a good, welcomed and wanted practice, to explain the personal relation to the contents of the message. E.g. "I am working on a FORTH project, and encountered a software or hardware problem. That is the result of my research". *Postings of links to videos and blogs are also welcomed and wanted practice ( but URLs just in the comments, as putting URLs in the main message is rejected by the Facebook group settings for this group. *[[http://www.facebook.com/groups/2225595150855239/permalink/2639085656172851/|Facebook "Forth2020 Users-Group" - "List of important documents inside the group"]]. *[[http://www.facebook.com/groups/2225595150855239/permalink/3656408221107251/|Facebook "Forth2020 Users-Group" - "DEFER & IS vectored execution"]] - Prototyping of an embedded FORTH application for motor control. *[[http://www.facebook.com/groups/forth2020/posts/4595233137224750/|Facebook "Forth2020 Users-Group" - "ESP32forth- Adding words for a EEPROM C library"]]. *[[http://www.facebook.com/groups/forth2020/posts/4614500421964688/|Facebook "Forth2020 Users-Group" - "My experience as an ESP32forth beginner"]]. *[[http://www.facebook.com/groups/forth2020/posts/4522441541170577|Facebook "Forth2020 Users-Group" - "Might somebody be so kind and send me by PM ( or here?) the wordlist displayed by the Forth word WORDS"]]. *Atle Bergstrøm: "This is from ESPforth v.7.05". *[[http://www.facebook.com/Forth2020-100123365599943|Facebook Page "Forth2020"]]. *[[http://www.facebook.com/GreenArrays-Inc-202003206534708/|Facebook "GreenArrays, Inc."]]. *[[http://www.facebook.com/groups/1255230494521587/|Facebook "Jupiter Ace Sinclair ZX80 and Forth"]]. *[[http://www.facebook.com/groups/714452415259600/|Facebook "Win32Forth"]]. *[[http://www.facebook.com/groups/raspberrypiproj|Facebook "RPI Pico Esp32 robotics and Forth automation"]]. *[[http://www.facebook.com/groups/esp3forth/|Facebook "ESP32Forth: programming with FORTH language for ESP32"]]. *[[http://www.facebook.com/groups/esp32a/|Facebook "ESP32FORTH forth programming for the ESP32 CPU"]] - "Bilingual group Spanish & English". *[[http://www.facebook.com/groups/357586125111969|Facebook "FORTH programming on ARDUINO"]]. *[[http://fforum.winglion.ru/|Forth forum]] of Russia, with English as board UI language. *[[http://www.github.com/Forthhub|GitHub "Forthhub"]]. *[[http://github.com/ForthHub/discussion/blob/master/README.md|GitHub "Forthhub" - "Welcome to this group for Forth enthusiasts. Please open an issue to start a new discussion"]]. *[[http://www.github.com/orgs/ForthHub/people|GitHub "Forthhub" - "People"]]. *[[http://www.github.com/stars/ForthStar|GitHub "Your Stars. Browse your starred repositories and topics" - "ForthStar"]]. *[[http://plus.google.com/117397092524585190890/|Google+ Communties "Forth"]]. *[[http://forth.retro-os.live/index.php/forum|FORTH Fans ( forth.retro-os.live ) Forum]]. *Google Groups. *[[http://groups.google.com/g/ateam-forth|Google Groups "ATeam Forth"]] - No postings. *[[http://groups.google.com/g/canon-cat|Google Groups "Canon Cat"]]#, 2015-2020-?. *[[http://groups.google.com/g/color-forth|Google Groups "ColorForth"]]#, 2009-2021-?. *[[http://groups.google.com/g/fido7.su.forth/|Google Groups "fido7.su.forth"]], 2002. *[[http://groups.google.com/g/relcom.fido.su.forth|Google Groups "relcom.fido.su.forth"]], 1997-2000. *[[http://groups.google.com/g/relcom.comp.lang.forth|Google Groups "relcom.fido.su.forth"]], 1994-2010. *[[http://groups.google.com/g/forth-group|Google Groups "Forth"]], 2009-2010. *[[http://groups.google.com/g/forth|Google Groups "forth"]], 2009. *[[http://groups.google.com/g/forth-france|Google Groups "forth-france"]], 2007-2011. *[[http://groups.google.com/g/forthontop|Google Groups "Forth On TOP @ AMCP"]], 2008. *[[http://groups.google.com/g/forthru/|Google Groups "forth.ru"]] - No postings. *[[http://groups.google.com/g/microcontroller-forth|Google Groups "microcontroller-forth"]], 2008-2020. *[[http://groups.google.com/g/niclos-for-forth-94|Google Groups "niclos-for-forth-94"]], 2008-2010 - "A group for the collaborative development of the cross-platform Nicl Incremental Collection Library Oversight System, for 'small', free standing 16-bit systems as well as 'big' 32-bit systems running on large modern operating systems". *[[http://groups.google.com/g/pforthdev|Google Groups "pforthdev"]]#, 2010-2021-?. *[[http://groups.google.com/g/fignition|Google Groups "fignition"]]#, 2011-2019. *[[http://www.groups.io/g/win32forth/|Groups.io "win32forth"]] ( 2020 - 2021 ). *[[http://www.forum.g-heinrichs.de/|Georg Heinrichs "Forum"]] - "Mikrocontroller: Tipps, Tricks und immer wieder ein Blick hinter die Kulissen...". Support subforum "Forth" for the "MikroForth3" FORTH. *[[http://www.forum.g-heinrichs.de/viewtopic.php?f=17&t=126|Georg Heinrichs "Forum", Subforum "Forth", Thread "FORTH-Programme: Eine Übersicht"]] - "Mit dem MikroForth3-System werden eine Reihe von Forth-Programmen zur Verfügung gestellt. Meist handelt es sich hier um kleinere Programme, die die Funktionsweise einzelner Wörter darstellen bzw. testen sollen. Jürgen Pintaske hat diese Programme dankenswerterweise in einem pdf-Dokument zusammengetragen und mit einem verlinkten Inhaltsverzeichnis versehen. Auf diese Weise kann man sich so über alle Programme einen Überblick verschaffen, ohne die Dateien einzeln laden zu müssen". *IRC "irc.freenode.net's #tunes". *[[http://www.tunes.org/~nef/logs/|tunes.org/~nef/logs]]. *[[http://www.tunes.org/~nef/logs/forth/|tunes.org/~nef/logs/forth/]]. *[[http://forums.parallax.com/|Parallax Forums]]. *[[http://forums.parallax.com/search?Search=forth|Parallax Forums - Search for "forth"]]. *[[http://www.quartus.net/discus/|Quartus Discussion Forum and Wiki]]. *Quora. *[[http://www.quora.com/topic/Forth-programming-language|Quora "Forth (programming language)"]]. *[[http://www.quora.com/Why-would-I-consider-learning-to-program-in-Forth|Quora "Why would I consider learning to program in Forth?"]], 2017. *[[http://www.quora.com/search?q=Forth|Quora - Search for "Forth"]] - Mostly no relevant results. *[[http://www.44342.com/viewforum-381-1.htm|Programming and Web Development Forums "Forth #1"]]) .. [[http://www.44342.com/viewforum-381-159.htm|Programming and Web Development Forums "Forth #159"]]) ( 2004-2011, unsorted? ). *Reddit. *[[http://www.reddit.com/user/8thdev|Reddit "8thdev"]]. *[[http://www.reddit.com/r/Forth/|Reddit "Forth - The programming language for low-fat computing"]]. *[[http://www.reddit.com/r/Forth/wiki/index/|Reddit Wiki "Forth"]]. *[[http://www.retrowiki.es/|RetroWiki]], Spain. *[[http://www.retrowiki.es/viewforum.php?f=34|RetroWiki Forum "Jupiter Ace"]], Spain. *[[http://discuss.spoj.com/|Sphere Online Judge (SPOJ ) Discussion board]]. *[[http://discuss.spoj.com/t/forth/41541|Sphere Online Judge (SPOJ ) Discussion board "Forth"]]. *StackOverflow & Stackexchange. *[[http://www.stackoverflow.com/questions/tagged/forth|StackOverflow - Tagged Questions "[forth]"]]. *[[http://www.stackoverflow.com/questions/23832703/why-does-forth-return-1-as-a-flag-for-true|StackOverflow "Why does Forth return -1 as a flag for True?"]]. *"My guess is that it's a wish to have TRUE be the bitwise inversion of FALSE". *"-1 is all bits set which then has the benefit that words such as and, or, not, ... serve as both logical and bitwise operators (as opposed to say C with &&, ||, !, ... vs. &, |, ~, ...)". "This is the actual, correct answer to the OP's question. It also allows the host CPU to make branch-free decisions using AND and OR instead of multiplication and addition". *[[http://www.stackoverflow.com/questions/12778187/examples-of-very-concise-forth-applications|StackOverflow "Examples of very concise Forth applications? [closed]"]]. *[[http://www.stackoverflow.com/questions/tagged/gforth|StackOverflow - Tagged Questions "[gforth]"]]. *[[http://www.stackoverflow.com/questions/tagged/win32forth|StackOverflow - Tagged Questions "[win32forth]"]]. *[[http://retrocomputing.stackexchange.com/questions/tagged/forth|Stackexchange Retrocomputing - Tagged Questions "[forth]"]]. *SourceForge. *[[http://www.sourceforge.net/p/mecrisp/discussion/|SourceForge "Mecrisp / Discussion"]]. *Usenet ( Google Groups, Narkive News Archive,.. ). *[[http://groups.google.com/g/alt.comp.lang.forth|Google Groups "alt.comp.lang.forth"]], 2011-2017. *[[http://groups.google.com/g/comp.lang.forth|Google Groups "comp.lang.forth"]]#, 1986-2021-?. *[[http://groups.google.com/g/comp.lang.forth.mac|Google Groups "comp.lang.forth.mac"]]#, 1988-2020-?. *[[http://groups.google.com/g/de.comp.lang.forth|Google Groups "de.comp.lang.forth"]]#, 1993-2021-?. *[[http://userpage.fu-berlin.de/~ram/pub/charta_jf47ht81Ht/de.comp.lang.forth|Stefan Ram "Charta von de.comp.lang.forth"]]. *[[http://groups.google.com/g/fido7.su.forth|Google Groups "fido7.su.forth"]], 1997-2016. *[[http://groups.google.com/g/fj.comp.lang.forth/|Google Groups "fj.comp.lang.forth"]], 1998-2017. *[[http://groups.google.com/g/net.lang.forth|Google Groups "net.lang.forth"]], 1982-1986 - "net.lang.forth is being renamed comp.lang.forth". *[[http://groups.google.com/group/z-netz.sprachen.forth/|Google Groups "z-netz.sprachen.forth"]], 1994-2004. *[[http://comp.lang.forth.narkive.com/|Narkive News Archive "comp.lang.forth.narkive.com"]]. *[[http://comp.lang.forth.narkive.com/nMWSO4rf/ga144-polyforth|Narkive News Archive "comp.lang.forth.narkive.com" - "GA144 polyForth"]], 2012. *[[http://groups.google.com/g/comp.lang.forth/c/UQ7sfKGidbE/m/8Zd-IHoPBAAJ|Google Groups "comp.lang.forth" - "FIG Forth vs F83 vs Polyforth"]], [[http://comp.lang.forth.narkive.com/tejgeZlO/fig-forth-vs-f83-vs-polyforth|Narkive Newsgroup Archive "comp.lang.forth.narkive.com" - "FIG Forth vs F83 vs Polyforth"]], 2019. *(Hugh Aguilar). *"UR/Forth for MS-DOS was the first professional Forth system I used. Prior to that, I had used HESforth (Vic-20), SuperForth (C64) and ISYS Forth (Apple-IIc). I never actually used figForth or F83, but I heard good things about F83 --- I wasn't opposed to F83 --- it helps the Forth community. To get a job as a Forth programmer though, UR/Forth experience was needed. Being an F83 or PolyForth programmer wouldn't get you hired anywhere". *(A). *"According to Jeff Fox, Elizabeth Rather wanted to sue FIG for pirating MicroForth from Forth Inc. (FIG did pirate it). Charles Moore made an agreement with FIG that they could continue to distribute figForth so long as they agreed not to upgrade it. They definitely had to agree to not pirate anything else. This is why figForth stagnated --- it was still 1970s technology well into the 1980s ---". *F83 became the new PD Forth for novices. **F83 was developed from scratch** --- it wasn't pirated. By that time, there were multiple Forth systems, some PD and some commercial, all of which were developed from scratch. As I said, UR/Forth (originally PC/Forth) from LMI was the best. This is also why PolyForth stagnated --- it was still 1970s technology well into the 1990s --- Charles Moore wasn't upgrading it anymore because he had been kicked out of Forth Inc. by Elizabeth Rather". *"According to Jeff Fox, the reason why Charles Moore left Forth Inc. was that Elizabeth Rather wanted to sue FIG for pirating MicroForth and sue everybody else who developed a Forth for stealing Forth Inc.'s "look and feel" (similar to what Apple was doing in regard to GUI). Charles Moore wanted to allow other people to develop Forth systems in competition with Forth Inc. --- he felt confident that he could develop better Forth systems because he was a better programmer. Elizabeth Rather wasn't a programmer at all --- she just wanted Forth Inc. to have sole ownership of Forth --- she wanted to use lawsuits to prevent competition. For her, Forth was the property of Forth Inc., just like a cow is property, and she didn't want anybody to steal her cow. This disagreement was irreconcilable --- they had to part company. Elizabeth Rather's plan for hitting competitors with lawsuits flopped because Charles Moore was the inventor of Forth, so she had no legal basis.Her new plan for killing the Forth community was to develop the ANS-Forth Standard that made everybody (especially UR/Forth) non-standard. This plan worked pretty well --- **ANS-Forth killed the Forth community**". *"Elizabeth Rather didn't understand that software technology can't stagnate. Charles Moore's Forth was a winner in the 1970s, but it couldn't just stagnate there forever. It had to be upgraded. Charles Moore knew this, which is why he was okay with figForth so long as it didn't get upgraded (he knew that it would soon be non competitive if he was upgrading the Forth Inc. product). Elizabeth Rather still didn't understand this in 1994 --- ANS-Forth was 1970s technology now written in stone so it couldn't be upgraded. She still doesn't understand this --- **she endlessly promotes 1970s style programming without code-libraries**. This is essentially why the world sees Forth as stagnating in the 1970s, and Forth programmers as being too dumb to notice that we are no longer living in the 1970s (not in the 20th century at all!). Elizabeth Rather is a boat-anchor that holds the Forth community down in the 1970s...! *"Killing the Forth community is also the plan with Forth-200x, except that now MPE is a "major vendor" along with Forth Inc. (Forth Inc. is fizzling out; eventually MPE will be the only 'major vendor')". *(B). *"The major vendors are certainly necessary for a meaningful standard. FORTH, Inc. is committed to the process". *(A). *"**Essentially, Forth-200x means that only MPE and Forth Inc. can develop Forth --- everybody else has to be a customer**". *(C). *"**F83 was no less "pirated" than Ragsdale's 6502 forth which became fig-Forth. Any IP that may have existed in fig-Forth was duplicated in F83. F83 went one better and grabbed multi-tasking**. If there was any difference between fig-Forth and F83 it was the latter wasn't sponsored by FIG who by then had ties to Forth Inc. with Ragsdale a share-holder and director". *(Elizabeth D. Rather). *"According to Don Colburn, who first became involed at this time, Ragsdale approached FORTH, Inc. to make a 6502 Forth, and they declined. So, Ragsdale engaged Maj. Robert Selzer, who had used microFORTH for an AMI 6800 development system on an Army project and was privately developing a standalone editor/assembler/linker package for the 6502. Selzer wrote a 6502 Forth assembler, and used the Army’s microFORTH metacompiler to target compile the first 6502 stand-alone Forth for the Jolt single board computer. Modifications to this model led to the first FIG Forth. See the published paper, The Evolution of Forth, written by Chuck, myself, and Don". *[[http://www.forth.com/resources/forth-programming-language/|FORTH, Inc. "The Evolution of Forth"]]. *"F83 was developed at a time when FORTH, Inc. was in some financial difficulty and the developers, some of whom had been deeply involved in polyFORTH development, wanted to preserve some of that technology (mainly the multitasker) in case it went under. FORTH, Inc. considered going after them, and decided not to. But polyFORTH was substantially faster than F83". *[[http://web.archive.org/web/*/http://www.rhinocerus.net/forum/lang-forth/|Archive.org "Rhinocerus Forum - Threads in Forum : Newsgroup comp.lang.forth"]] ( - 2012 ). *Yahoo Groups ( - 2019-12-14 ). *[[http://web.archive.org/web/*/http://groups.yahoo.com/group/camelforth/|Archive.org, Yahoo Groups "camelforth · CamelForth Programming Language"]]. *[[http://web.archive.org/web/*/http://tech.groups.yahoo.com/group/euroforth/|Archive.org, Yahoo Groups "euroforth · EuroForth conference list"]]. *[[http://web.archive.org/web/*/http://de.groups.yahoo.com/group/visualFORTH/|Archive.org, Yahoo Groups "visualFORTH"]]. *[[http://web.archive.org/web/*/http://groups.yahoo.com/group/win32forth|Archive.org, Yahoo Groups "win32forth"]] ( 2003 - 2005-05-11 ), [[http://web.archive.org/web/*/http://tech.groups.yahoo.com/group/win32forth|Archive.org, Yahoo Groups "win32forth"]] ( 2007 - 2013-10-13 ). ===== 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}}