{"id":17034503,"url":"https://github.com/bartgo/forth-atari","last_synced_at":"2026-02-09T09:04:14.845Z","repository":{"id":206258733,"uuid":"702219104","full_name":"BartGo/forth-atari","owner":"BartGo","description":"Programs and code snippets for APX Extended Fig-Forth","archived":false,"fork":false,"pushed_at":"2025-07-07T15:18:49.000Z","size":1049,"stargazers_count":4,"open_issues_count":1,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-07-07T16:36:48.564Z","etag":null,"topics":["6502","8-bit","apx","atari","atari800","atari800xl","atari8bit","atarixl","fig-forth","figforth","forth"],"latest_commit_sha":null,"homepage":"","language":"Forth","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BartGo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-10-08T20:46:23.000Z","updated_at":"2025-07-07T15:18:53.000Z","dependencies_parsed_at":"2024-01-16T14:07:36.607Z","dependency_job_id":"77cbc861-77b6-49fe-a3ad-a50f6cc4f468","html_url":"https://github.com/BartGo/forth-atari","commit_stats":null,"previous_names":["bartgo/forth-atari"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/BartGo/forth-atari","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BartGo%2Fforth-atari","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BartGo%2Fforth-atari/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BartGo%2Fforth-atari/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BartGo%2Fforth-atari/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BartGo","download_url":"https://codeload.github.com/BartGo/forth-atari/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BartGo%2Fforth-atari/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270940465,"owners_count":24671671,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-18T02:00:08.743Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["6502","8-bit","apx","atari","atari800","atari800xl","atari8bit","atarixl","fig-forth","figforth","forth"],"created_at":"2024-10-14T08:43:48.577Z","updated_at":"2026-02-09T09:04:14.840Z","avatar_url":"https://github.com/BartGo.png","language":"Forth","funding_links":[],"categories":[],"sub_categories":[],"readme":"# \"Forth-Atari\": source code snippets for Atari 8-bit computers\n\n![fig-Forth booting banner](drafts/figboot.png)\n\n\n## TL;DR\n\nA collection of fig-Forth code snippets, tools, editors, experiments, and oddities for Atari 8‑bit systems—mostly targeting APX Extended Fig-Forth. Everything comes from old type‑in listings, so expect quirks, broken bits, and nostalgia. Use an emulator (Altirra recommended), not real hardware, unless you enjoy surprises.\n\n## No, really, what is this?\n\nThis repository contains different snippets of code implemented in fig-Forth - useful words, data structures, utilities and \"stuff\" - mainly for Atari 8-bit and the \"APX Extended Fig-Forth\" by Patrick Mullarky. Despite being a faithful implementation of the FIG \"model\", APX Forth was nearly never used for commercial purposes, unlike its successor, valForth. Neither was immensely successfull but both deserve being remembered.\n\nFig-Forth was a \"model\", described in a standard-like document and sources for multiple microcomputers, popular in the beginning of the 1980s. \n\nRead about history of Forth [here](https://www.forth.com/resources/forth-programming-language).\n\n## Why would I need it?\n\nIf you know, you know.\n## How to use these source files?\n\nAny information where the code came from and its possible issues, are mentioned in the comments. I give no guarantee that anything published here will work safely for you - and I especially recommend NOT TO RUN any of it on a real Atari hardware without heavy testing.\n\nAll the code comes from type-in listings, published mostly in \"Forth Dimensions\",  \"Micro 6502\" or \"Tajemnice Atari\" in the 1980s and 1990s - so typically are in the public domain or otherwise \"free-like\". The license was not explicitely stated but the intention was clearly similar to contemporary MIT and in the spirit of fig-Forth. \n\nThe most unstable snippets are in the \"drafts\" folder and may be in a completely broken state.\n\nRecommended method of using the code snippets:\n- check the comments and understand the general concept of the code\n- start Atari emulator (Altirra recommended), use atarixl.rom, disable Basic, potentially change the disk saving mode (perhaps to R/W - please check the emulator's manual)\n- boot Forth (usually APX Forth)\n- paste code into Altirra and test\n- if you can't paste the code (i.e. not using Altirra), it has to be converted to an ATR file and connected as a floppy (could be the second one, with the first one being the Forth); scripts present in the \"pc-tools\" folder may help you\n\nIn some cases the code is prepared for storage on the \"source screens\" and it has to be put on the floppy / ATR by using the FIG editor commands. To see what I mean, check \"editors/edit.4th\". In any case, running some of the code snippets will not be straightforward.\n\nWhen in doubt, raise a ticket!\n## How to obtain APX Forth?\n\nEr, I knew but forgot... perhaps, buy it on eBay?\n\n## What EXACTLY are the sources?\n### [\"/asm\"](/asm) - snippets of the Forth Assembler code\n\n* LINER2 - shows a line on the screen and allows to move it down (with Help) or up (with Shift-Help); this is a slightly extended port from a machine code application written by Marek Omirski and published in \"Bajtek\"\n* I put here my minor experiments with Forth Assemblers (typically with the Ragsdale Assembler)\n\n### [\"/debug\"](/debug) - debugging tools\n\n* BREAK\u0026GO - adding breakpoints and starting an internal interpreter to better debug your fig-Forth code\n* QMEG - call a machine language monitor, Self Test or QMEG\n* STACK-PROMPT - enable or disable stack display\n\n### [\"/dictionary\"](/dictionary) - manipulating the Forth dictionary\n\n* NAMESPACES - a (failed) attempt to have vocabularies working more like real namespaces \n* RECOLON - redefining a colon word is a great method, allowing to reconnect a more recent definition to its previous version - and to avoid FORGETing and recompiling parts of the dictionary\n* TRANSIENTS - temporary (disposable) areas of the dictionary; a typical usage would be to load there development tools (assembler, debugging words, editor) and remove them when no longer needed, without recompiling the rest\n* VOCABULARIES - showing that vocabularies allow multi-level inheritance (kind of)\n* WHERE-USED - identifying uses of a word, very useful when modifying the language\n\n### [\"/docs\"](/docs) - miscelleneaus documentation\n\n* ATARI-CONCEPTS - a mysterious description of Forth usage in Atari Coin-Op department as a means of game debugging; extracted from the file: \"figasm, f69asm, computype master.atr\" originally present at \"http://annex.retroarchive.org/disks/Atari/Forth-Disks/\"; the file is not converted correctly yet (missing inverse) and it is not clear whether it describes an unrealized concept or something which was actually used\n\n### [\"/drafts\"](/drafts) - unstable but potentially interesting \n\n* work in progress, usually not working - failed attempts to run or port Forth code, broken data structures, crashing tools and procedures, unfinished type-in conversions...\n* when stabilized, code is moved to other (relevant) folders\n\n### [\"/editors\"](/editors) - source code editors\n\n* EDIT - a very nice (even if slow, as it's written only in Forth) screen editor, written by M. Dougherty\n* EDYTOR-FORTH - a very fast and modern (even if allowing editing of only one screen at once) screen editor by R. Pantola; includes (as a prerequisite) slightly tuned \"Ragsdale Assembler\" and Roland's \"Edytor Wprowadzania\" (\"Entry Editor\" - used to check control codes for type-in programs); contains a clipboard with a ring buffer; Esc-Space exits (without saving)\n* EWK - \"Edytor Wyswietlania Kodow\" (\"Code Display Editor\") - control code generator by R. Pantola, supplementary to the above mentioned \"Edytor Wprowadzania\" and allowing to generate control codes for single lines of Forth code\n* FIG-MINI - smallest useful subset of the FIG line editor (contains only Put and Erase)\n* MTF - this is Micro Text Formatter by Robert La Quey, a small tool to store slightly formatted text on Forth screens\n\n### [\"/games\"](/games) - very simple games and demos\n\n* ESCAPE - a conversion (by John Mattes) of a small graphical demo, wirtten by an unknown author\n* LIFE - a super-slow implementation of Life from the book \"Forth\" by Salman, Tisserand and Toulout\n* MUGWUMP - a conversion (from the Basic language) of an ancient logical game, enhanced by me with some graphics\n* Mugwump-240816.atr - above, bootable\n\n### [\"/io\"](/io) - external device management (drives etc)\n\n* DISKCOPY - a disk copy routine from Space Forth, not included later in APX Forth\n* DISKSIMUL - ram disk simulation from the fig-Forth installation guide\n\n### [\"/mods\"](/mods) - modifications of major words\n\n* BLIST - a better (?) LIST, trying to show both screens with sources and blocks with binary data\n* CASEINS - making the interpreter case-insensitive (ported from pns-Forth)\n* COMPENT-XLIST - \"compiled comments\" as a wasteful way to document words in-memory; XLIST is a VLIST, showing extended word info (with immediate/smudge bits, with CFA references and these \"compiled comments\" as well); APX's DECOMP modification is also described here not to break it completely with the compiled comments\n* MESSAGE - static error messages to avoid reading from the floppy\n* PICK\u0026ROLL - tricky stack operations PICK and ROLL\n\n### [\"/pc-tools\"](/pc-tools) - file format conversion scripts\n\n* FS2ATR - a script by Buki to potentially convert Forth source files from PC into ATR images, may work in some cases\n* TXT2SCR - my attempts to solve the same problem (an in reverse), may work in some cases\n\n### [\"/spin-offs\"](/spin-offs) - modifications of Forth environments\n\n* APXFORTH-IDE - routines to transform APX Forth floppy image into a more contemporary environment, suitable for Forth studies and small development tasks; includes source editing and debugging tools; contains help\n* *.ATR files - floppy files related to these environments, some ready to be booted and played with - see the dedicated [README.md](spin-offs/README.md) for details\n\n![banner](drafts/s1boot.png)\n\n## [\"/variables\"](/variables) - less usual ways to define variables\n\n* ANON - anonymous variables by Leonard Morgenstern, published in Forth Dimensions\n* ARGRES - simple but useful local variables by Marc Perkel, published in Forth Dimensions as \"Turning the Stack into Local Variables\"\n* DEFER-IS - example of \"deferred words\" (vectored execution), based on Henry Laxen's code published in Forth Dimensions\n* LOCALS-MINI - my attempt to implement local variables; too many limitations to be practical\n* LOCALS-STACK - local variables as described by Baranov \u0026 Nozdrunov in \"Language Forth and its Implementations\"\n* MAP - a simple map-like data structure (apply a function when fetching an element of an array)\n* SEQUENCE - a simple Oracle sequence-like data structure (increase variable when fetching), also similar to ++ from C\n* STRINGS - multiple (not always consistent) concepts how to handle text strings \n* TABLE-LOOKUP - table lookup example by Henry Laxen, as published in Forth Dimensions\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbartgo%2Fforth-atari","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbartgo%2Fforth-atari","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbartgo%2Fforth-atari/lists"}