{"id":29005230,"url":"https://github.com/programandala-net/solo-forth","last_synced_at":"2025-06-25T11:06:11.869Z","repository":{"id":155962763,"uuid":"71710314","full_name":"programandala-net/solo-forth","owner":"programandala-net","description":"Standard Forth system for ZX Spectrum 128 and compatible computers, with disk drives.","archived":false,"fork":false,"pushed_at":"2025-02-24T14:53:24.000Z","size":15350,"stargazers_count":23,"open_issues_count":0,"forks_count":2,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-02-24T15:43:46.827Z","etag":null,"topics":["forth","zx-spectrum"],"latest_commit_sha":null,"homepage":"http://programandala.net/en.program.solo_forth.html","language":"Forth","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/programandala-net.png","metadata":{"files":{"readme":"README.adoc","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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,"publiccode":null,"codemeta":null}},"created_at":"2016-10-23T15:05:46.000Z","updated_at":"2025-02-24T14:53:28.000Z","dependencies_parsed_at":"2023-10-14T17:55:56.788Z","dependency_job_id":null,"html_url":"https://github.com/programandala-net/solo-forth","commit_stats":null,"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/programandala-net/solo-forth","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/programandala-net%2Fsolo-forth","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/programandala-net%2Fsolo-forth/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/programandala-net%2Fsolo-forth/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/programandala-net%2Fsolo-forth/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/programandala-net","download_url":"https://codeload.github.com/programandala-net/solo-forth/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/programandala-net%2Fsolo-forth/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261859210,"owners_count":23220711,"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","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":["forth","zx-spectrum"],"created_at":"2025-06-25T11:02:28.265Z","updated_at":"2025-06-25T11:06:11.860Z","avatar_url":"https://github.com/programandala-net.png","language":"Forth","readme":"= Solo Forth\n:author: Marcos Cruz (programandala.net)\n:revdate: 2025-02-24\n:toc:\n:linkattrs:\n\n// This file is part of Solo Forth\n// http://programandala.net/en.program.solo_forth.html\n\n// Last modified: 20250224T1550+0100.\n\n// Description {{{1\n== Description\n\n// tag::description[]\n\nSolo Forth is a Forth system for the ZX Spectrum 128 and\ncompatible computers, with disk drives and +3DOS, G+DOS, or TR-DOS.\n\nSolo Forth cannot run on the original ZX Spectrum 48, but could be\nused to develop programs for it.\n\nSolo Forth can be used as a stand-alone Forth system (either in an\nemulator or on the real computer), or as part of a cross-development\nenvironment in a GNU/Linux operating system (in theory, other type of\noperating systems could be used as well).\n\n// end::description[]\n\n=== Main features\n\n// tag::mainfeatures[]\n\n- Fast DTC (Direct Threaded Code) implementation.\n- A kernel as small as possible.\n- Name space in banked memory, separated from code and data space.\n- Easy access to banked memory.\n- Big \u003c\u003c_library,library\u003e\u003e of useful source code.\n- Modular \u003c\u003c_platforms,DOS support\u003e\u003e.\n- Fully documented source code.\n- Detailed documentation.\n- Conform to the http://forth-standard.org[Forth\n  standard,role=\"external\"] (not fully tested yet).\n\n// end::mainfeatures[]\n\n=== Minimum requirements\n\n// XXX REMARK -- These are generic requirements. The manual contains\n// more details, depending on the DOS.\n\n- 128 KiB RAM.\n- One double-sided 80-track disk drive (two or three recommended,\n  depending on the DOS).\n\n// tag::name[]\n\n// == Name\n\n// XXX TODO --\n\n// end::name[]\n\n// Motivation, history and current status {{{1\n== Motivation, history and current status\n\n// tag::history[]\n\nThe motivation behind Solo Forth is double:\n\n1. *I wanted to program the ZX Spectrum with a modern Forth system*:\n   In 2015, my\n   http://programandala.net/en.program.abersoft_forth.html[detailed\n   disassembly of ZX Spectrum's Abersoft Forth], a popular tape-based\n   implementation of fig-Forth ported to several 8-bit home computers\n   in the 1980's (and the Forth system I started learning Forth with\n   in 1984), helped me understand the inner working of the fig-Forth\n   model, including its by-design limitations, compared to modern\n   Forths, and discover some bugs of the ZX Spectrum port. At the same time I\n   wrote the http://programandala.net/en.program.afera.html[Afera\n   library] in order to make Abersoft Forth more stable, powerful and\n   comfortable for cross development.\n   The objective was reached but, after a\n   certain point, further improvements weren't feasible without making\n   radical changes in the system. The need for a new Forth system\n   arised: a Forth designed from the start to use disk drives and\n   banked memory, and useful for cross-development.\n\n2. *Nobody had written such a Forth system before:* In 2015 there was\n   no disk-based Forth for the ZX Spectrum platform, and the only\n   Forth written for ZX Spectrum 128 (the first model with banked\n   memory) was Lennart Benschop's Forth-83\n   (1988). But despite being more powerful than fig-Forth, it is still\n   tape-based and keeps the block sources in a RAM disk. Besides, the\n   system is built by metacompilation, what makes it difficult to\n   adapt to disk drives.\n\nThe development of Solo Forth started on 2015-05-30, from the\ndisassembled code of Abersoft Forth. Some ideas and code were reused\nalso from the Afera library and from a previous abandoned project\ncalled http://programandala.net/en.program.dzx-forth.html[DZX-Forth]\n(a port of CP/M DX-Forth to ZX Spectrum +3e).\n\nOn 2016-03-13 a Git repository was created from the development\nbackups, in order to preserve the evolution of the code from the\nstart, and uploaded to GitHub. On 2020-12-05 the Git repository was\nconverted to https://fossil-scm.org[Fossil,role=\"external\"], keeping\nhttp://github.com/programandala-net/solo-forth[GitHub as a\nmirror,role=\"external\"]. On 2023-04-06 the repository was converted to\nhttps://mercurial-scm.org[Mercurial,role=\"external\"], enabling a\nbetter interaction with GitHub. On 2023-09-12 the Mercurial repository\nwas https://hg.sr.ht/~programandala_net/solo_forth[published on\nSourcehut], keeping GitHub as a mirror.\n\nSolo Forth is very stable, and it's being used to develop two projects\nin Forth:\nhttp://programandala.net/en.program.nuclear_waste_invaders.html[Nuclear\nWaste Invaders] and\nhttp://programandala.net/en.program.black_flag.html[Black Flag].\n\n// end::history[]\n\n// Platforms {{{1\n[#_platforms]\n== Platforms\n\n// tag::platforms[]\n\n[%autowidth]\n.Supported platforms\n|===\n| Computer        | Disk interface        | DOS\n\n| Pentagon 128    |                       | TR-DOS\n| Pentagon 512    |                       | TR-DOS\n| Pentagon 1024   |                       | TR-DOS\n| Scorpion ZS 256 |                       | TR-DOS\n| ZX Spectrum 128 | Beta 128              | TR-DOS\n| ZX Spectrum 128 | Plus D                | G+DOS\n| ZX Spectrum +2  | Beta 128              | TR-DOS\n| ZX Spectrum +2  | Plus D                | G+DOS\n| ZX Spectrum +2A | (External disk drive) | +3DOS\n| ZX Spectrum +2B | (External disk drive) | +3DOS\n| ZX Spectrum +3  |                       | +3DOS\n| ZX Spectrum +3e |                       | +3DOS\n|===\n\n// end::platforms[]\n\n// Project directories {{{1\n[#_tree]\n== Project directories\n\n// tag::tree[]\n\n// XXX OLD -- This tree was created by ``tree``. The UTF-8 graphic\n// characters are ruined  by `htmldoc` in the PDF. `asciidoctor-pdf`\n// renders it fine, except some descriptions are not aligned.\n\n// ....\n// .\n// ├── backgrounds       Version background images\n// ├── bin               ZX Spectrum binary files for disk 0\n// │   ├── fonts         Fonts for the supported screen modes\n// │   ├── addons        Code that is loaded from disk\n// │   │                 because it's not assembled in the library yet\n// │   └── dos           DOS files\n// ├── disks             Disk images\n// │   ├── gplusdos      G+DOS disk images\n// │   ├── plus3dos      +3DOS disk images\n// │   └── trdos         TR-DOS disk images\n// ├── doc               Documentation\n// ├── make              Files used by ``make`` to build the system\n// ├── screenshots       Version screenshots\n// ├── src               Sources\n// │   ├── inc           Z80 symbols files\n// │   ├── lib           Library\n// │   ├── loader        BASIC loader for disk 0\n// │   ├── addons        Code that is loaded from disk\n// │   └── doc           Files used to build the documentation\n// ├── tmp               Temporary files created by `make`\n// ├── tools             Development and user tools\n// └── vim               Vim files\n//     ├── ftplugin      Filetype plugin\n//     └── syntax        Syntax highlighting\n// ....\n\n// XXX OLD -- A table version is not legible enough.\n\n// [%autowidth]\n// |===\n// | Directory      | Description\n\n// | backgrounds    | Version background images\n// | bin            | ZX Spectrum binary files for disk 0\n// | bin/addons     | Code loaded from disk, not assembled in the library yet\n// | bin/dos        | DOS files\n// | bin/fonts      | Fonts for the supported screen modes\n// | disks          | Disk images\n// | disks/gplusdos | G+DOS disk images\n// | disks/plus3dos | +3DOS disk images\n// | disks/trdos    | TR-DOS disk images\n// | doc            | Documentation\n// | make           | Files used by ``make`` to build the system\n// | screenshots    | Version screenshots\n// | src            | Sources\n// | src/addons     | Code that is loaded from disk\n// | src/doc        | Files used to build the documentation\n// | src/inc        | Z80 symbols\n// | src/lib        | Library\n// | src/loader     | BASIC loader for disk 0\n// | tmp            | Temporary files created by ``make``\n// | tools          | Development and user tools\n// | vim            | Vim files\n// | vim/ftplugin   | Filetype plugin\n// | vim/syntax     | Syntax highlighting\n// |===\n\n// XXX OLD -- A list version.\n\n// * *backgrounds* :  Version background images\n// * *bin* : ZX Spectrum binary files for disk 0\n//   - *addons* : Code loaded from disk, not assembled in the library yet\n//   - *dos* : DOS files\n//   - *fonts* : Fonts for the supported screen modes\n// * *disks* : Disk images\n//   - *gplusdos* : G+DOS disk images\n//   - *plus3dos* : +3DOS disk images\n//   - *trdos* : TR-DOS disk images\n// * *doc* : Documentation\n// * *make* : Files used by ``make`` to build the system\n// * *screenshots* : Version screenshots\n// * *src* : Sources\n//   - *addons* : Code that is loaded from disk\n//   - *doc* : Files used to build the documentation\n//   - *inc* : Z80 symbols\n//   - *lib* : Library\n//   - *loader* : BASIC loader for disk 0\n// * *tmp* : Temporary files created by ``make``\n// * *tools* : Development and user tools\n// * *vim* : Vim files\n//   - *ftplugin* : Filetype plugin\n//   - *syntax* : Syntax highlighting\n\n// XXX OLD -- A description list version.\n\n// [horizontal]\n// backgrounds    :: Version background images\n// bin            :: ZX Spectrum binary files for disk 0\n// bin/addons     :: Code loaded from disk, not assembled in the library yet\n// bin/dos        :: DOS files\n// bin/fonts      :: Fonts for the supported screen modes\n// disks          :: Disk images\n// disks/gplusdos :: G+DOS disk images\n// disks/plus3dos :: +3DOS disk images\n// disks/trdos    :: TR-DOS disk images\n// doc            :: Documentation\n// make           :: Files used by ``make`` to build the system\n// screenshots    :: Version screenshots\n// src            :: Sources\n// src/addons     :: Code that is loaded from disk\n// src/doc        :: Files used to build the documentation\n// src/inc        :: Z80 symbols\n// src/lib        :: Library\n// src/loader     :: BASIC loader for disk 0\n// tmp            :: Temporary files created by ``make``\n// tools          :: Development and user tools\n// vim            :: Vim files\n// vim/ftplugin   :: Filetype plugin\n// vim/syntax     :: Syntax highlighting\n\n[cols=\"12,14,54\"]\n|===\n| Directory   | Subdirectory | Description\n\n| backgrounds |              | Version background images\n| bin         |              | ZX Spectrum binary files for disk 0\n| bin         | addons       | Code loaded from disk, not assembled in the library yet\n| bin         | dos          | DOS files\n| bin         | fonts        | Fonts for the supported screen modes\n| disks       |              | Disk images\n| disks       | gplusdos     | G+DOS disk images\n| disks       | plus3dos     | +3DOS disk images\n| disks       | trdos        | TR-DOS disk images\n| doc         |              | Manuals in DocBook, EPUB, HTML and PDF\n| make        |              | Files used by ``make`` to build the system\n| screenshots |              | Version screenshots\n| src         |              | Sources\n| src         | addons       | Code to be loaded from disk. Not used yet.\n| src         | doc          | Files used to build the documentation\n| src         | inc          | Z80 symbols\n| src         | lib          | Library\n| src         | loader       | BASIC loader for disk 0\n| tmp         |              | Temporary files created by ``make``\n| tools       |              | Development and user tools\n| vim         |              | Vim files\n| vim         | ftplugin     | Filetype plugin\n| vim         | syntax       | Syntax highlighting\n|===\n\n// end::tree[]\n\n// Disks {{{1\n== Disks\n\nThe \u003cdisks\u003e directory of the \u003c\u003c_tree,directory tree\u003e\u003e contains the\ndisk images:\n\n....\ndisks/*/disk_0_boot.*\ndisks/*/disk_1*_library.*\ndisks/*/disk_2_programs.*\ndisks/*/disk_3_workbench.*\n....\n\nThe subdirectory and the filename extension of every DOS are the\nfollowing:\n\n[cols=\"6,11,18\"]\n.DOS subdirectories and disk image filename extensions\n|===\n| DOS    | Subdirectory | Filename extension\n\n| +3DOS  | plus3dos     | dsk\n| G+DOS  | gplusdos     | mgt\n| TR-DOS | trdos        | trd\n|===\n\n// How to run {{{1\n[#_run]\n== How to run\n\n// tag::attributes[]\n\n:diskdriveformat: Make sure its disk drives are \\\nconfigured as double-sided and 80-track in the emulator.\n\n// end::attributes[]\n\n// In +3DOS {{{2\n[#_run_plus3dos]\n=== In +3DOS\n\n// On ZX Spectrum +3/+3e {{{3\n==== On ZX Spectrum +3/+3e\n\n// tag::run_plus3[]\n\n// XXX REMARK -- A problem with Asciidoctor makes the rendering of the\n// ZX Spectrum +3e link text fail. It seems the error condition has to\n// do with a combination of \"+\" be at start of a new line, and the\n// presence of the link attribute. The result is the \"+3e\" part is\n// omited. Using ``{sp}`` to prevent the text from being splitted\n// fixes the problem.\n\n// XXX REMARK -- This tag does not include the title, because this is\n// the only entry for +3DOS, and the computers are mentioned in item\n// 1:\n\n1. Run a ZX Spectrum emulator and select a ZX Spectrum +3 (or\n   http://www.worldofspectrum.org/zxplus3e/[ZX\n   Spectrum{sp}+3e,role=\"external\"]). {diskdriveformat}\n2. “Insert” the disk image file \u003cdisks/plus3dos/disk_0_boot.dsk\u003e as\n   disk 'A'.\n3. Choose “Loader” from the computer start menu. Solo Forth will be\n   loaded from disk.\n\n// end::run_plus3[]\n\n// In G+DOS {{{2\n[#_run_gplusdos]\n=== In G+DOS\n\n// On ZX Spectrum 128/+2 with the Plus D interface {{{3\n==== On ZX Spectrum 128/+2 with the Plus D interface\n\n// tag::run_128_with_plusd[]\n\n// XXX REMARK -- This tag does not include the title, because this is\n// the only entry for +3DOS, and the computers are mentioned in item\n// 1:\n\n1. Run a ZX Spectrum emulator and select a ZX Spectrum 128 (or ZX\n   Spectrum +2) with the Plus D disk interface. {diskdriveformat}\n2. “Insert” the disk image file \u003cdisks/gplusdos/disk_0_boot.mgt\u003e as\n   disk 1 of the Plus D disk interface.\n3. Choose \"128 BASIC\" from the computer start menu.\n4. Type ``run`` in BASIC. G+DOS will be loaded from disk, and Solo\n   Forth as well.\n\n// end::run_128_with_plusd[]\n\n// In TR-DOS {{{2\n[#_run_trdos]\n=== In TR-DOS\n\n// tag::trdos_disk_drives[]\n\n[IMPORTANT]\n--\n[#trdosdiskdrives]\nThe TR-DOS version of Solo Forth uses numbers as disk drive\nidentifiers (the same numbers TR-DOS uses internally) instead of the\nletters used by the TR-DOS BASIC interface:\n\n.TR-DOS disk drive identifiers\n|===\n| Drive | In TR-DOS | In Solo Forth\n\n| 1st   | A         | 0\n| 2nd   | B         | 1\n| 3rd   | C         | 2\n| 4th   | D         | 3\n|===\n--\n\n// end::trdos_disk_drives[]\n\n// tag::run_pentagon[]\n\n// On Pentagon 128 {{{3\n==== On Pentagon 128\n\n1. Run a ZX Spectrum emulator and select a Pentagon 128.\n   {diskdriveformat}\n2. “Insert” the disk image file \u003cdisks/trdos/disk_0_boot.128.trd\u003e as\n   disk 'A'.\n3. Choose “TR-DOS” from the computer start menu. This will enter the\n   TR-DOS command line{blank}footnote:trdoscli[The TR-DOS command line\n   uses keyboard tokens, like the ZX Spectrum 48, but commands typed\n   in 'L' cursor mode will be recognized as well, as on the ZX\n   Spectrum 128 editor.  In order to get the 'L' cursor mode you can\n   type a quote (Symbol Shift + 'P') or press 'E' to get keyword\n   ``REM``. When the DOS command is typed in full, the quote or the\n   ``REM`` must be removed from the start of the line before pressing\n   'Enter'.].\n4. Press the 'R' key to get the ``RUN`` command and press the Enter\n   key. Solo Forth will be loaded from disk.\n\n// On Pentagon 512 {{{3\n==== On Pentagon 512\n\n1. Run a ZX Spectrum emulator and select a Pentagon 512.\n   {diskdriveformat}\n2. “Insert” the disk image file\n   \u003cdisks/trdos/disk_0_boot.pentagon_512.trd\u003e as disk 'A'.\n3. Choose \"128k menu\"footnote:pentagonboot[In theory, choosing option\n   “TR-DOS” from the system service menu should work. But it seems it\n   depends on a specific version of TR-DOS.  This alternative method\n   is longer, but it works with the TR-DOS 5.03 ROM.] from the\n   computer start menu (the reset service menu). This will enter a ZX\n   Spectrum 128 style menu. Choose “TR-DOS”.  This will enter the\n   TR-DOS command line{blank}footnote:trdoscli[].\n4. Press the 'R' key to get the ``RUN`` command and press the Enter\n   key.  Solo Forth will be loaded from disk.\n\n// On Pentagon 1024 {{{3\n==== On Pentagon 1024\n\n1. Run a ZX Spectrum emulator and select a Pentagon 1024.\n   {diskdriveformat}\n2. “Insert” the disk image file\n   \u003cdisks/trdos/disk_0_boot.pentagon_1024.trd\u003e as disk 'A'.\n3. Choose \"128k menu\"footnote:pentagonboot[] from the computer start\n   menu (the reset service menu). This will enter a ZX Spectrum 128\n   style menu. Choose “TR-DOS”.  This will enter the TR-DOS command\n   line{blank}footnote:trdoscli[].\n4. Press the 'R' key to get the ``RUN`` command and press the Enter\n   key.  Solo Forth will be loaded from disk.\n\n// end::run_pentagon[]\n\n// tag::run_scorpion[]\n\n// On Scorpion ZS 256 {{{3\n==== On Scorpion ZS 256\n\n1. Run a ZX Spectrum emulator and select a Scorpion ZS 256.\n   {diskdriveformat}\n2. “Insert” the disk image file\n   \u003cdisks/trdos/disk_0_boot.scorpion_zs_256.trd\u003e as disk 'A'.\n3. Choose \"128 TR-DOS\" from the computer start menu.  Solo Forth will\n   be loaded from disk.\n\n// end::run_scorpion[]\n\n// tag::run_128_with_betadisk[]\n\n// On ZX Spectrum 128/+2 with the Beta 128 interface {{{3\n==== On ZX Spectrum 128/+2 with the Beta 128 interface\n\n1. Run a ZX Spectrum emulator and select a ZX Spectrum 128 (or ZX\n   Spectrum +2) with the Beta 128 interface. {diskdriveformat}\n2. “Insert” the disk image file \u003cdisks/trdos/disk_0_boot.128.trd\u003e as disk\n   A of the Beta 128 interface.\n3. Choose \"128 BASIC\" from the computer start menu.\n4. Type `randomize usr 15616` in BASIC (or just `run usr15616` to save\n   seven keystrokes). This will enter the TR-DOS command\n   line{blank}footnote:trdoscli[].\n5. Press the 'R' key to get the ``RUN`` command and press the Enter\n   key.  Solo Forth will be loaded from disk.\n\n// end::run_128_with_betadisk[]\n\n// How to use the library {{{1\n[#_library]\n== How to use the library\n\n// In +3DOS {{{2\n=== In +3DOS\n\n// tag::library_on_plus3dos[]\n\n// XXX TODO -- is `set-drive` needed?\n\n1. \u003c\u003c_run_plus3dos,Run Solo Forth\u003e\u003e.\n2. “Insert” the file \u003cdisks/plus3dos/disk_1_library.dsk\u003e as disk B.\n   `'b' set-drive throw` to make drive 'B' the current one.\n3. Type `1 load` to load block 1 from the library disk. By convention,\n   block 0 cannot be loaded (it is used for comments), and block 1 is\n   used as a loader.  In Solo Forth, block 1 contains `2 load`, in\n   order to load the `need` tool from block 2.\n4. Type `need name`, were “name” is the name of the word or tool you\n   want to load from the library.\n\n// end::library_on_plus3dos[]\n\n// In G+DOS {{{2\n=== In G+DOS\n\n// tag::library_on_gplusdos[]\n\n1. \u003c\u003c_run_gplusdos,Run Solo Forth\u003e\u003e.\n2. “Insert” the file \u003cdisks/gplusdos/disk_1_library.mgt\u003e as\n  disk 2 of the Plus D disk interface. Type `2 set-drive throw` to\n  make drive 2 the current one.\n3. Type `1 load` to load block 1 from the library disk. By convention,\n   block 0 cannot be loaded (it is used for comments), and block 1 is\n   used as a loader.  In Solo Forth, block 1 contains `2 load`, in\n   order to load the `need` tool from block 2.\n4. Type `need name`, were “name” is the name of the word or tool you\n   want to load from the library.\n\n// end::library_on_gplusdos[]\n\n// In TR-DOS {{{2\n=== In TR-DOS\n\n// tag::library_on_trdos[]\n\n1. \u003c\u003c_run_trdos,Run Solo Forth\u003e\u003e.\n\n2. “Insert” the file \u003cdisks/trdos/disk_1a_library.trd\u003e into the first\n   disk drive (called A in TR-DOS and 0 in Solo Forth), and the file\n   \u003cdisks/trdos/disk_1b_library.trd\u003e into the second disk drive (called\n   B in TR-DOS and 1 in Solo Forth).\n+\n--\nNotice that the library is split into two disks because the maximun\ncapacity of a TR-DOS disk is only 640 KiB.\n\nAlso remember in Solo Forth the \u003c\u003ctrdosdiskdrives,TR-DOS disk drive\nidentifiers\u003e\u003e are numbers 0..3 instead of letters A..D.\n--\n\n3. Type `1 load` to load block 1 from the first library disk. By\n   convention, block 0 cannot be loaded (it is used for comments), and\n   block 1 is used as a loader.  In Solo Forth, block 1 contains `2\n   load`, in order to load the `need` tool from block 2.\n\n4. Type `need 2-block-drives` to load and execute the word\n   `2-block-drives` from the library, setting the first two drives as\n   block drives in their normal order.\n\n5. Type `need name`, were “name” is the name of the word or tool you\n   want to load from the library.\n\n// end::library_on_trdos[]\n\n// Documentation {{{1\n== Documentation\n\nThe \u003cdoc\u003e directory contains one version of the manual for every\nsupported DOS, in EPUB, HTML and PDF formats.  The manuals\nare built automatically from the sources and other files.  At the\nmoment they contain a description of the Forth system, the basic\ninformation required to use it and a complete glossary with cross\nreferences.\n","funding_links":[],"categories":["Forth"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprogramandala-net%2Fsolo-forth","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprogramandala-net%2Fsolo-forth","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprogramandala-net%2Fsolo-forth/lists"}