src | ||
assemble.sh | ||
blankdisk.po | ||
build_env.sh | ||
LICENSE | ||
README.md |
mrbuffer
Apple IIgs simple lowres buffer text editor. Written in 65816 assembly. The commit history will show a different name; I had originally intended to write a pong game but found editing text a more suitable vehicle for learning the quirks of writing code for the GS.
Getting Started
Requirements
- Some *nix flavor. Please don't open issues if you are using Windows.
- GNU build tools (
autoconf
,gcc
, etc.) - Basic understanding of C/C++ build issues, since you'll likely face some.
- An Apple IIGS emulator of your flavor + the appropriate ROM (which you will have to source for yourself)
- The assemble script uses
gsplus
- The assemble script uses
Building
There are two scripts here which will get all the tools needed to assemble the game.
./build_env.sh # to grab utils
./assemble.sh # to assemble the game
The assemble
script runs the assembly source through Merlin32, then changes the ProDOS file kind to S16
, an executable format that is used for GS/OS applications. _FileInformation.txt
is what cadius
uses to manage the ProDOS metadata for each record (since obviously this information can't be mapped to your computer's filesystem).
References
There are a lot of good materials out there: here is what I used to make this game.
- IIgs Hardware Architecture
- p. 74 has a memory map
- IIgs firmware reference
- Importantly, overview on bank $00, D $0000
- Scanlon's IIgs Assembly Programming
- Tremendously useful reference for QuickDraw and some tools
- Programming the 65816 and 65xx family
- Official WDC manual.
- "PEI Slam" fast SHR rendering
- Changing ProDOS file types with Cadius
- 6502 opcode list
- 65816 opcode list
- BrutalDeluxe GS/OS internals (VERY USEFUL)
- Apple II 6502 for beginners
- Has practical examples for reading user input, etc.
- System monitor reference
- This is the humbling moment I take back every bad thing I ever said about GDB in my life ever.
- SNES CPU overview, same CPU, nice insights
- SNES opcode list
- 65816 primer
- Another 6502 reference, insightful
- 65816 interrupts guide