{"id":43318504,"url":"https://github.com/fstark/apple1loader","last_synced_at":"2026-02-01T22:10:39.886Z","repository":{"id":188793682,"uuid":"679394036","full_name":"fstark/apple1loader","owner":"fstark","description":"A loader of Apple 1 software on ROM","archived":false,"fork":false,"pushed_at":"2024-09-09T19:53:02.000Z","size":139,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-09-09T23:21:43.344Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Assembly","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fstark.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2023-08-16T18:28:50.000Z","updated_at":"2024-09-09T19:53:05.000Z","dependencies_parsed_at":"2024-09-09T22:33:44.816Z","dependency_job_id":"15918be3-2e75-421d-ae04-c549c6e1da00","html_url":"https://github.com/fstark/apple1loader","commit_stats":null,"previous_names":["fstark/apple1loader"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/fstark/apple1loader","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fstark%2Fapple1loader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fstark%2Fapple1loader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fstark%2Fapple1loader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fstark%2Fapple1loader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fstark","download_url":"https://codeload.github.com/fstark/apple1loader/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fstark%2Fapple1loader/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28992744,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-01T22:01:47.507Z","status":"ssl_error","status_checked_at":"2026-02-01T21:58:37.335Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2026-02-01T22:10:39.424Z","updated_at":"2026-02-01T22:10:39.881Z","avatar_url":"https://github.com/fstark.png","language":"Assembly","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Loader for the Aberco/SiliconInsider Apple1 64K RAM/ROM Card\n\nThis is the loader for aberco/SiliconInsider 64K ROM for the Apple1\n\nIt contains an assortment of software for the Apple1, to test and demo the machine.\n\nThe rom file is [32KA1COMPIL.BIN](32KA1COMPIL.BIN).\n\nYou can build the ROM using the top-level Makefile, if you have the right tools installed (xa assembler, ca65 tool suite, python3).\n\n# Content of the ROM\n\nWhen booting you Apple1 (if you mapped the $F000-$FFFF region), or after executing ``2000R``, you will be greated by this menu (after having cleared the screen and pressed reset):\n\n![The welcome menu](images/menu.png)\n\nYou don't have to wait for the menu to display: you can type the key corresponding to the program you want to execute during the display.\n\nYou can always return to the menu, by pressing the Reset key (and entering ``2000R`` if needed).\n\n*Authors: Fred Stark and Antoine Bercovici (2024)*\n\n## Mandelbrot\n\nPressing **``M``** will launch a fast mandelbrot explorer, written specifically for this ROM.\n\nSource available at: https://github.com/fstark/mandelbrot65/\n\nIt will display a short introduction message, and display the Mandelbrot set.\n\n![The mandelbrot set](images/mandelbrot-1.png)\n\nI will then wait for 5 seconds, and zoom in a random-but-interesting place. It will then zoom into the zoom, up to 5 levels of zooms.\n\n![A zoom](images/mandelbrot-2.png)\n\nYou can skip a display by pressing ``space``. You can return the the top-level Mandelbrot set by pressing ``space`` twice in succession.\n\n*Author: [Fred Stark (2024)](https://github.com/fstark/mandelbrot65/)*\n\n## WozMon\n\n**``W``** gives you access to Wozmom. This is useful if you chose to map the $f000-$ffff space, as the Apple1 would now boot the loader instead of the Wozniak monitor.\n\n![The Wozniak Monitor](images/wozmon.png)\n\nThe fundamental commands to remember are:\n\n* ``adrs1.adrs2`` to display the memory between ``adrs1`` and ``adrs2``\n* ``adrsR`` to **R**un at address ``adrs``\n* ``adrs:value1 value2 value3...`` to store ``value1``, ``value2``, ``value3`` starting at ``adrs``. Beware that the display shows the content of the previous value at ``adrs``. This can be confusing sometimes.\n\n*Author: Steve Wozniak (1976)*\n\n## Integer BASIC\n\n**``I``** is for Integer BASIC, which is the original basic of the Apple1.\n\nThe BASIC is present in the ROM and should be mapped to $E000.\n\n![The Integer BASIC](images/basic-1.png)\n\nYou can now create amazing ``10 PRINT``, ``20 GOTO 10`` demos!\n\nThis also served as the basis for the BASIC that shipped with the original Apple2. [Here is the original manual for the basic](https://ia801902.us.archive.org/11/items/apple1_basic_manual/apple1_basic_manual.pdf).\n\nNote that Integer BASIC defaults to 4K of RAM. If you have 8K, you may want to use ``HIMEM=8192`` before typing in your program. However, as you can't have both the ROM card and a Cassette Interface Card, it is unlikely you will find use for that much memory.\n\n*Author: Steve Wozniak (1976)*\n\n## Re-entering BASIC\n\nWhen you hit reset, you can re-enter the BASIC without losing the current program by using the **``R``** key.\n\n![Re-entering the BASIC](images/basic-2.png)\n\nThe program we entered in BASIC is still present.\n\n*Author: Steve Wozniak (1976)*\n\n## Testing 8K of memory\n\nPress **``A``** to execute a 8K memory test, on adresses from ``$0000`` to ``$1FFF``.\n\n![8K memory test](images/8k-memory.png)\n\nEach pass will take around 13 seconds.\n\n*Author: Mike Willegal (2010)*\n\n## Testing 4K of memory\n\nIf you Apple1 only have 4K of memory, from ``$0000`` to ``$0fff``, press **``B``** for a memory test.\n\n![4K memory test](images/4k-memory.png)\n\nEach pass will take around 6 seconds.\n\n*Author: Mike Willegal (2010)*\n\n## Testing the display\n\nWith **``C``** you can test the display of your Apple1.\n\n![Display test](images/display-test.png)\n\nThis is useful to check that your Apple1 Character ROM is correct by comparing your display with the above screenshot. [It was the sample code given in the Apple 1 manual](https://s3data.computerhistory.org/brochures/apple.applei.1976.102646518.pdf) to verify proper functionality of the computer.\n\n*Author: Steve Wozniak (1976)*\n\n## Using the Apple2 Monitor\n\n**``D``** will launch the Apple2 monitor, as you would on a Apple2, using ``CALL -151``.\n\n![The Apple2 Monitor](images/apple2-monitor.png)\n\nThis is useful, for instance, to disassemble memory.\n\n*Authors: Steve Wozniak and Allen Baum (1977). Port by Winston Gayler, Wendell Sander and Jeff Tranter*\n\n## Using the Apple2 Mini-Assembler\n\n**``E``** will launch the Apple2 mini-assembler. It was included with the early Integer BASIC versions of the Apple2.\n\n![The Apple2 mini-assembler](images/mini-assembler.png)\n\nThis version have been modified, so entering a '#' in the first column will launch Wozmon. In the above example a simple program that writes an infinite number of ``A`` on screen has been assembled at adress ``$0280``. Then ``#`` is used to launch Wozmon and ``280R`` executes our new assembled software.\n\n*Author: Allen Baum (1976)*\n\n## Displaying the Memory Map of your Apple 1\n\nPressing **``?``** will launch a small utility that displays the memory mapping of your Apple 1. It should be self-explanatory:\n\n![Memory mapping](images/memory-map.jpg)\n\nThis will allow you to check that the jumpers on the RAM/ROM card are properly configured (addresses at 5000-5FFF, 7000-CFFF and E000-EFFF must be mapped to the card). Mapping F000-FFFF is optional but helps by having ``Reset`` directly laucnhing the menu (You will need to deactivate the on-board Wozmon). Directly booting to the card also activate some tests of the low memory of the Apple1: it will print ``ZP?`` or ``SP?`` in a loop if the zero page or the stack page are not writable. Can be useful to debug your Apple1.\n\n*Author: Fred Stark (2024)*\n\n## The Apple 30th Demo\n\n**``1``** will launch the famous Apple 30th Anniversary Demo.\n\n![The Woz, in the Apple 30th demo](images/apple-30th.png)\n\n*Author: Dave Schmenk (2006)*\n\n## Playing Tic-Tac-Toe\n\n**``2``** will launch a classic from the late 70s, early 80s: a BASIC tic-tac-toe game, shown here in a somewhat precarious position.\n\n![Playing Tic-Tac-Toe](images/tic-tac-toe-1.png)\n\nThis is a BASIC program. Pressing ``Reset`` and choosing to re-enter BASIC with the ``R`` option will let you admire the source code:\n\n![Looking at Tic-Tac-Toe](images/tic-tac-toe-2.png)\n\n*Author: [Larry Nelson (1977)](https://www.applefritter.com/node/2902)*\n\n## Landing on the Moon\n\n**``3``** is for Lunar Lander, a huge classic back in the day.\n\n![Lunar Lander](images/lunar-lander.png)\n\nThis game needs no introduction or explanations. It is also harder than it looks...\n\n*Author: Unknown, please contact (github issue) if you have info.*\n\n## A small adventure\n\n**``4``** brings *Little Tower* a small text adventure game for the Apple 1. It is pretty rough on the edges, but you should be able to beat it in a few minutes.\n\n![Little Tower](images/little-tower.png)\n\nThe version included has been patched so one can actually get the key and finish the game...\n\n*Author: Arnaud Verhille (2000). Fixes by Fred Stark (2024)*\n\n## C64 Maze\n\nPress **``5``** and you will cover the screen in little ``/`` and ``\\``, re-creating the classic Commodore 64 BASIC one-liner.\n\n![A C64-like maze](images/c64-maze.png)\n\n*Author: Antoine Bercovici (2024)*\n\n## Micro-Chess\n\nWith **``6``** you get the extraordinary micro-chess, a chess program written originaly for the KIM-1\n\n![Microchess playing the French Defense](images/chess.png)\n\nYou can guess my nationality by looking at the above chessboard...\n\nYou move the pieces by specifying the from and to squares (13-33 for e2-e4, for instance), and you tell the computer to play by pressing the ``P`` key.\n\nThe documentation of [this versions seems to match the one on the apple1](http://retro.hansotten.nl/6502-sbc/lee-davison-web-site/microchess/). The [original microchess is available too](https://www.benlo.com/microchess/Kim-1Microchess.html), but won't explain the key bindings of the Apple1...\n\nWhat an extraordinary feat from Peter R. Jennings to get a full chess program in 1 kilobyte of code!\n\n*Author: Peter R. Jennings (1976)*\n\n## PasArt\n\nPasArt is **``7``**. Not sure why it is called this way, but you can get some interesting patterns by tring various values.\n\n![A PasArt image](images/pasart.png)\n\nTry other numbers, like ``18,35,9,1``, ``18,35,61,2`` or ``19,39,55,2``...\n\n*Author: Unknown, please contact (github issue) if you have info.*\n\n## Cellular\n\nCellular automaton always have been classic for display on old computers, and the Apple1 is no exception. Use **``8``** to run Cellular, a [1d cellular automaton](https://en.wikipedia.org/wiki/Elementary_cellular_automaton). Don't get fooled by the apparent simplicity, [some people believe they contain the secret of eveything](https://en.wikipedia.org/wiki/A_New_Kind_of_Science).\n\n![Rule 30 automaton](images/cellular.png)\n\nAbove is the famous rule 30 automaton (1E in hex). [You can look up the rules from there](https://mathworld.wolfram.com/ElementaryCellularAutomaton.html), but will have to enter them in hexadecimal...\n\n*Author: Unknown, please contact (github issue) if you have info.*\n\n## Mastermind\n\nPress **``9``** for the original implementation of Mastermind on the Apple1.  Mastermind was a popular board game in the 70s and early 80s.\n\n![A game of Mastermind](images/mastermind.png)\n\nYou are trying to find the code, composed by numbers from 0 to 7. \n\nThis is quite difficult, as the numbers can be repeated. You enter a potential solution, and you get a '+' for every number in the right position, and a '-' for every number in the wrong position.\n\nThe game comes from [Volume 1, Number 8, Page 26 of \"Dr Dobb's Journal of Computer Calisthenics \u0026 Orthodontia\", September 1976](http://cini.classiccmp.org/pdf/DrDobbs/DrDobbs-1976-09-v1n8.pdf). Yes, this is how we distributed software before the internet... Beware that in the time you often typed code from magazine to find they were not working as expected. This is no different, and the above listing contains a bug (GUESS at $FB is too high, and GUESS+5 will be $100, wreaking havoc on the code...). As I had to change the code and am very bad at mastermind, I added a small trick: pressing ``@`` when ``READY?`` is displayed will switch to *easy mode*, where each number will be used at most once in the code... A simple ``#define`` lets you revert to the original fixed code.\n\nIn the same issue of Dr Dobb's, you'll find the source code of the 6502 Disassembler above, and, page 35, the original criticism of the 56-bits DES encryption algorithm by Hellman and Diffie themselves...\n\n*Author: Steve Wozniak (1976)*\n\n## Nim\n\nFinally, **``0``** will launch [a game of Nim](https://en.wikipedia.org/wiki/Nim), an ancien game, very popular on early computers, as it is easy to program and have an elegant mathematical way for the computer to play.\n\n![A game of Nim](images/nim.png)\n\nAt the begining you choose how many heaps you want, and how many objects you want on each heap. Remember that you will play first.\n\nAt each turn, you have to choose a heap, and remove at least one object from it. The player that removes the last object from the last heap wins (this is the opposite of the way it is commonly played, but doesn't change the core game).\n\nHave fun, but if you don't play absolutely perfectly, your Apple 1 will always win...\n\n*Author: Unknown, please contact (github issue) if you have info.*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffstark%2Fapple1loader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffstark%2Fapple1loader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffstark%2Fapple1loader/lists"}