An Apple //e emulator written in Go using ebiten.
- MOS 6502 CPU
- Keyboard
- 40 column text mode
- Low resolution monochrome and color graphics
- High resolution monochrome and color graphics
- Upper memory bank switching: $d000 page and ROM/RAM
- Main memory page1/page2 switching in text, lores and hires
- Disk image reading & writing
- Speaker audio
The installation requires go modules go be installed
Build the executable
go build
Download apple2e.rom
from
a2go.applearchives.com and put it in the root directory.
./apple2-go
./apple2-go my_disk_image.dsk
./apple2-go -drive-head-click my_disk_image.dsk
- ctrl-alt-R reset
- ctrl-alt-M toggle monochrome/color display
- ctrl-alt-C caps lock
- ctrl-alt-F show FPS
The tests use DOS and Prodos disk images. Download them from
- dos33.dsk from mirrors.apple2.org.za
- prodos19.dsk from mirrors.apple2.org.za
go test -v
The CPU tests make use of Klaus2m5's excellent 6502 functional tests.
The source files are 6502_functional_test.a65
and 6502_interrupt_test.a65
. They are assembled using as65
into a binary file which contains a memory image of the test code. They are compressed into gzip files which are loaded into the apple memory by the unit tests.
Download as65 and unzip it to get the as65
assembler binary.
Assemble the tests
cd cpu
as65 -l -m -w -h0 6502_functional_test.a65
gzip 6502_functional_test.bin
as65 -l -m -w -h0 6502_interrupt_test.a65
gzip 6502_interrupt_test.bin
- DOS 3.3
- Prodos 1.9
- Lemonade stand
- Montezuma's Revenge
- 80 column card
- 48k aux memory
- double hires
- joystick
Use gofmt
to ensure standard go style consistency
go fmt $(go list ./... | grep -v /vendor/)
Use golint
to ensure Google's style consistency
golint $(go list ./...)