Add new attachment

Only authorized users are allowed to upload new attachments.

List of attachments

Kind Attachment Name Size Version Date Modified Author Change note
atr
Elcomp Forth_DOS 25.atr 92.2 kB 1 29-May-2022 16:02 Andreas Tartz Elcomp Forth_DOS 25.atr
atr
Grafs Atari-Forth DOS 2.5.atr 92.2 kB 1 29-May-2022 16:03 Andreas Tartz Grafs Atari-Forth DOS 2.5.atr
atr
Grafs_Atari-Forth_DOS_2.5.atr 92.2 kB 1 29-May-2022 22:41 Roland B. Wassenberg Grafs_Atari-Forth_DOS_2.5.atr
atr
fig-FORTH1.4S-1.atr 92.2 kB 1 05-Jul-2016 10:53 Roland B. Wassenberg fig-FORTH1.4S-1
atr
fig-FORTH1.4S-2.atr 92.2 kB 1 05-Jul-2016 10:53 Roland B. Wassenberg fig-FORTH1.4S-2

This page (revision-80) was last changed on 03-Feb-2023 16:21 by Carsten Strotmann  

This page was created on 20-Feb-2010 21:56 by Carsten Strotmann

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Difference between version and

At line 3 added 2 lines
[{TableOfContents }]
At line 4 changed one line
Forth is a programming language that uses a stack-based metaphor in an effort to reduce memory requirements as much as possible. In contrast to languages like [Basic], the parser never has to "look ahead" to find additional data in order to see if a command is properly entered, any data it could need has to be pushed onto the stack as well. This greatly reduces the size of the parser, and as a result, leaves more room free for programs.
Forth is a cancatenative stack-based programming language.
At line 6 changed one line
Another key aspect of the language was Forth's inherently multitasking design. The program could set up separate stacks and feed different code into each one. The Forth kernel would run each of these stacks in turn, so all Forth programs had access to these features. This made writing multithreaded code very easy, so one could, for instance, have a thread reading the joystick as it moved, and then read that value in a game loop in another stack.
Stack-based languages simplify the language's parser considerably because the data for an instruction always appears in the source code before the instructions that will use it. To see why this helps, consider this typical line of [Basic]:\\
\\
{{A = 10 + 20 * B}}\\
\\
To perform this line, the interpreter has to read the entire line, look up the value of B (let's say 3), realize that the * has to be performed before + and order the instructions correctly, and then finally convert those into instructions something like:\\
\\
{{get(B,temp1)}} - get the value in B and store it in temp1\\
{{multiply(20,temp1,temp2)}} - multiply that value by 20 and store the result in temp2\\
{{add(10,temp2,temp3)}} - add 10 to temp2 and store the result in temp3 \\
{{put(temp3,A)}} - store the value of temp3 into the variable A\\
\\
In contrast, in a stack-based system, the programmer organizes the code in the fashion it will ultimately be performed. The equivalent would be something like:\\
\\
{{B 20 mul}}\\
{{10 add}}\\
\\
When this code is performed, the interpreter pushes the value of B on the stack, then 20. It then encounters the mul, which removes the last two items, the 3 and 20, multiplies them, and puts the result back on the stack. Next, it pushes 10 on the stack, leaving the top two locations containing 60 and 10. It then encounters add, taking the two values, adding them, and putting the result back on the stack. The top of the stack now contains the result, 70.
At line 8 changed one line
The downside to the stack-based approach is that it makes the language difficult to understand by mere mortals. Even tutorials purporting to show how simple it was often ended in an unreadable mess. As a result, Forth was subject to perhaps one of the longest running fanboi wars since APL was invented. Constantly derided by practically everyone in the industry, it saw some interest in spite of this, but little commercial software emerged. The singular exception is the PostScript system, which is essentially a version of Forth modified to produce graphics output.
Notice that the stack-based version ''has no temporary values'', and only reads a single instruction at a time, not an entire line of code. As a result, the parser is much simpler, smaller and requires less memory to run. This, in turn, generally makes it much faster, comparable to compiled programs.
At line 10 changed one line
The Atari 8-bits were being sold right in the middle of this battle, and as a result there was a fair amount of support on the platform and some interest in the press.
Another key aspect of the language is Forth's inherently multitasking design. The program could set up separate stacks and feed different code into each one. The Forth kernel would run each of these stacks in turn, so all Forth programs had access to these features. This made writing multithreaded code very easy, so one could, for instance, have a thread reading the joystick as it moved, and then read that value in a game loop in another stack.
At line 12 removed 2 lines
[{TableOfContents }]
At line 15 removed one line
At line 22 changed one line
!! Tutorials
!! Forth Systems for the Atari
At line 24 changed one line
* [Einfuehrung in Forth 83]
* [FOCO65|https://github.com/piotr-wiszowaty/foco65] a Forth Cross-Compiler written in Python that translates into XASM assembly language
* [SPL] (Simple Programming Language) a Forth-ish compiler written in Python that translates into Assembly language
* [X-FORTH] - a FIG Forth variant, currently maintained
* [VolksForth] - a powerful Forth83 standards Forth for Atari 8bit, Atari ST, MS-DOS, CP/M, C=64, C=16/116/Plus4, still maintained
* [ANTIC Forth]
* [valFORTH]
* [English Software Company FORTH]
** [Page 6 Review of ES Forth|http://page6.org/archive/issue_14/page_34.htm]
* [Extended Atari FIG-Forth APX20029]
* [Mesa Forth]
* [QS Forth]
* [Graphic Forth] - A ANTIC / Fig-FORTH 1.4s Version with special Graphics Extensions.
* [FIG Forth 1.1]
* [FIG Forth 1.0D]
* [fig-FORTH1.4S-1.atr]
* [fig-FORTH1.4S-2.atr]
* [ProForth] Apple II (6502 Source)
* [SNAUT]
* [Forth Compiler from Frank Ostrowski]
* [CoinOp FORTH]
* [Elcomp Forth_DOS 25.atr]; Atari Version of Elcomp-Forth by E.Floegel & H.C.Wagner, 1982
* [Grafs Atari-Forth DOS 2.5.atr|Grafs_Atari-Forth_DOS_2.5.atr]; from Andreas Graf ca. 1990
At line 62 added 5 lines
!! Forth Books
* [Using Fig FORTH On The Atari 800 By Stephen A. Cohen|https://archive.org/details/UsingFigFORTHOnTheAtari800ByStephenACohen]
* [APX 20157 FORTH Turtle Graphics Plus Manual by William D. Volk|https://archive.org/details/APX20157FORTHTurtleGraphicsPlusManual]
At line 53 changed one line
!! Forth Systems for the Atari
!! Tutorials
* [Einfuehrung in Forth 83]
At line 55 removed 20 lines
* [FOCO65|https://github.com/piotr-wiszowaty/foco65] a Forth Cross-Compiler written in Python that translates into XASM assembly language
* [SPL] (Simple Programming Language) a Forth-ish compiler written in Python that translates into Assembly language
* [X-FORTH] - a FIG Forth variant, currently maintained
* [VolksForth] - a powerful Forth83 standards Forth for Atari 8bit, Atari ST, MS-DOS, CP/M, C=64, C=16/116/Plus4, still maintained
* [ANTIC Forth]
* [valFORTH]
* [English Software Company FORTH]
** [Page 6 Review of ES Forth|http://page6.org/archive/issue_14/page_34.htm]
* [Extended Atari FIG-Forth APX20029]
* [Mesa Forth]
* [QS Forth]
* [Graphic Forth] - A ANTIC / Fig-FORTH 1.4s Version with special Graphics Extensions.
* [FIG Forth 1.1]
* [FIG Forth 1.0D]
* [fig-FORTH1.4S-1.atr]
* [fig-FORTH1.4S-2.atr]
* [ProForth] Apple II (6502 Source)
* [SNAUT]
* [Forth Compiler from Frank Ostrowski]
At line 88 removed one line
Version Date Modified Size Author Changes ... Change note
80 03-Feb-2023 16:21 6.129 kB Carsten Strotmann to previous
79 29-May-2022 22:48 7.176 kB Roland B. Wassenberg to previous | to last
78 29-May-2022 22:42 7.239 kB Roland B. Wassenberg to previous | to last
77 29-May-2022 22:36 7.209 kB Roland B. Wassenberg to previous | to last
76 29-May-2022 16:22 7.146 kB Andreas Tartz to previous | to last
75 13-Sep-2021 05:48 6.991 kB Robert Roland to previous | to last
74 13-Sep-2021 05:40 6.709 kB Robert Roland to previous | to last
73 31-Mar-2021 19:38 6.691 kB Roland B. Wassenberg to previous | to last
72 01-May-2018 03:30 6.695 kB Roland B. Wassenberg to previous | to last
71 28-Apr-2018 15:44 6.695 kB Maury Markowitz to previous | to last
70 28-Apr-2018 15:38 6.295 kB Maury Markowitz to previous | to last
69 28-Apr-2018 15:36 6.27 kB Maury Markowitz to previous | to last
68 26-Apr-2018 22:31 4.923 kB Maury Markowitz to previous | to last
67 26-Apr-2018 22:19 4.336 kB Maury Markowitz to previous | to last
66 29-Aug-2017 04:50 3.271 kB Roland B. Wassenberg to previous | to last
65 25-Feb-2017 16:55 3.292 kB Carsten Strotmann to previous | to last
64 05-Jul-2016 10:56 3.153 kB Roland B. Wassenberg to previous | to last
63 02-Jul-2016 01:07 3.103 kB Roland B. Wassenberg to previous | to last
62 01-Jul-2016 18:40 3.062 kB Roland B. Wassenberg to previous | to last
61 23-Jan-2014 18:28 3.048 kB Carsten Strotmann to previous | to last
« This page (revision-80) was last changed on 03-Feb-2023 16:21 by Carsten Strotmann  
G’day (anonymous guest) My Prefs
© 2010-2021 AtariWiki
All content in the Wiki is licensed under Creative Commons Share Alike License, unless otherwise noted.
JSPWiki v2.8.3