--- title: "figForth v1.0" id: 56327 type: "computer_media" slug: "figforth" url: "http://localhost/computer_media/figforth/" markdown_url: "http://localhost/computer_media/figforth.md" published_at: "2024-08-04T10:50:00+00:00" modified_at: "2026-03-31T08:13:12+00:00" author: "David Anderson" featured_image: url: "http://localhost/wp-content/uploads/2024/08/SCR-20240804-iygd.png" excerpt: "A complete fig-FORTH built specifically for the TS2068 — bank switching, Timex printer, extended memory and all — and released into the public domain." category: - name: "Archived Media" slug: "archived-media" taxonomy: "category" url: "http://localhost/category/archived-media/" post_tag: - name: "Downloadable" slug: "downloadable" taxonomy: "post_tag" url: "http://localhost/tag/downloadable/" - name: "Forth (programming language)" slug: "forth" taxonomy: "post_tag" url: "http://localhost/tag/forth/" - name: "TS 2068" slug: "ts2068" taxonomy: "post_tag" url: "http://localhost/tag/ts2068/" model: - name: "Timex/Sinclair 2068" slug: "ts-2068" taxonomy: "model" url: "http://localhost/model/ts-2068/" indiv: - name: "Robert Burton" slug: "robert-burton" taxonomy: "indiv" url: "http://localhost/indiv/robert-burton/" genre: - name: "Forth (programming language)" slug: "forth-programming-language" taxonomy: "genre" url: "http://localhost/type/forth-programming-language/" - name: "Programming" slug: "programming" taxonomy: "genre" url: "http://localhost/type/programming/" media_contents: - id: 56277 title: "Timex Sinclair Public Domain Library Tape 2001" type: "computer_media" url: "http://localhost/computer_media/timex-sinclair-public-domain-library-tape-2001/" - id: 60550 title: "Fort Worth TS2068 Club Library Tape" type: "computer_media" url: "http://localhost/computer_media/fort-worth-ts2068-club-library-tape/" media_type: "Program" programmers: - name: "Robert Burton" slug: "robert-burton" taxonomy: "indiv" url: "http://localhost/indiv/robert-burton/" download_url: "https://archive.org/download/timex-sinclair-software-archive/figForth%20%28198x%29%28Burton%2C%20Robert%20J%29%28TS2068%29%28US%29%28Program%29.zip" mediadate: "198x" images: - url: "http://localhost/wp-content/uploads/2024/08/SCR-20240804-iygd.png" media_type_tags: "Forth (programming language), Programming" --- # figForth v1.0 Robert J. Burton’s fig-FORTH is one of the cleanest and most complete Forth implementations available for the TS2068. Burton released it explicitly into the public domain, making it a genuinely open resource for the TS2068 community. Promised updates included help screens, assembler and better SAVE system. ### Distribution The program loads from cassette via a BASIC loader (program name **20015**) that brings in two machine code blocks: the engine and core dictionary (8,500 bytes loading at 0x7C00), and a block of virtual disk screens containing Forth source code (10,240 bytes). The first 1,024 bytes of the code block are a plain-text banner with contact information and the public domain notice — an unusual and charming touch that makes authorship immediately clear. ### Architecture Burton implements **Indirect Threaded Code (ITC)** fig-FORTH, the standard model described in the original fig-FORTH specification. The register conventions are: - **BC** = Instruction Pointer - **HL** = Top of Stack - **SP** = Parameter Stack - **Memory variable at 0x8128** = Return Stack pointer The inner interpreter (NEXT) lives at 0x8145 and uses the standard two-byte CFA fetch. This is a conventional, readable implementation — no tricks or clever compressions that would obscure the code. ### Word Set The dictionary contains **approximately 240 words**, covering the complete fig-FORTH standard kernel plus a set of TS2068-specific extensions that set this implementation apart: **Standard fig-FORTH kernel** — all the expected words are present and correctly implemented: the full compiler (`:` `;` `CREATE` `DOES>`), block I/O (`BLOCK` `BUFFER` `UPDATE` `FLUSH` `LOAD`), number formatting (`<#` `#` `#S` `#>`), the control flow compilers (`IF` `ELSE` `THEN` `DO` `LOOP` `BEGIN` `UNTIL`), and the outer interpreter loop. **TS2068 hardware extensions** — Unique words include `LO`, `HI`, and `RAM` for TS2068 bank switching; `R_UPDATE` and `BLK/RAM` for RAM-backed block storage; `SAVE`, `GET`, `PUT`, and `READ` for cassette operations; `PRINTER`, `FEMIT`, and `CURSOR` for the Timex printer interface; and `MS`, `ON`, `OFF`, and `SET-IO` for general hardware control. ### What’s Not Included Compared to the Hawg Wild Software fig-FORTH released the same era, this implementation omits a screen editor, graphics words (`BORDER`, `INK`, `PAPER`, `PLOT`, `DRAW`), floating point via the ROM, and tape screen save/load utilities. It’s a focused, tight implementation of the core language rather than an extended application environment. ## Source Code ``` 800 ON ERR RESET : CLS : ON ERR GO TO 800: LET A=USR 32771: GO TO 803 801 LET A=USR 32774: GO TO 803 802 ON ERR GO TO 800: LET A=USR 32768 803 PRINT : PRINT "BASIC: CONT & returns to FORTH OR GO TO 800" : ON ERR RESET : STOP : GO TO 801 804 PRINT AT 5,6; FLASH 1;"LOADING MACHINE CODE": LOAD "20015A" CODE : LOAD "20015B"CODE : POKE 23658,8: CLS : BEEP 1,2: BEEP 1,0: GO TO 802: REM 23658,8 IS CAPS LOCK 805 REM ********************** to save a copy, type GO TO 806 ******************************* 806 PRINT AT 0,0;"SAVING FORTH": SAVE "20015" LINE 804: PAUSE 25: BEEP 1,0: SAVE "20015A"CODE 31744,8500: PAUSE 25: BEEP 1,0: SAVE "20015B"CODE 55295,10240: STOP 807 REM ********While in FORTH typing `` will give the intro-ductory screens.****** 808 REM *********************** TO SAVE RAM DISK, GO TO 809 ******************************** 809 PRINT AT 0,0;"SAVING FORTH RAM": SAVE "20015B"CODE 55295,10240 ```