Apple 2 Emulator in Go
Go to file
2018-05-27 20:08:48 +01:00
audio Added glide based dependency management 2018-05-27 14:39:03 +01:00
cmd Added glide based dependency management 2018-05-27 14:39:03 +01:00
cpu Added glide based dependency management 2018-05-27 14:39:03 +01:00
disk Added glide based dependency management 2018-05-27 14:39:03 +01:00
keyboard Added capslock key, toggable with ctrl-alt-c 2018-05-12 13:59:43 +01:00
mmu Added glide based dependency management 2018-05-27 14:39:03 +01:00
system Moved disk module out of mmu 2018-05-26 23:23:35 +01:00
utils Added glide based dependency management 2018-05-27 14:39:03 +01:00
video Added glide based dependency management 2018-05-27 14:39:03 +01:00
.gitignore Renamed prodos disk for consistency 2018-05-27 16:22:23 +01:00
apple2.go Added glide based dependency management 2018-05-27 14:39:03 +01:00
bank_switch_test.go Added glide based dependency management 2018-05-27 14:39:03 +01:00
bell_test.go Added glide based dependency management 2018-05-27 14:39:03 +01:00
dos33_boot_test.go Adapted DOS3.3 test to use a master disk, to match the README's instructions 2018-05-27 20:08:48 +01:00
glide.yaml Added glide based dependency management 2018-05-27 14:39:03 +01:00
io_test.go Added glide based dependency management 2018-05-27 14:39:03 +01:00
LICENSE Added license 2018-05-27 16:12:10 +01:00
prodos_boot_test.go Renamed prodos disk for consistency 2018-05-27 16:22:23 +01:00
README.md Added README 2018-05-27 17:18:33 +01:00
rwts_write_test.go Added glide based dependency management 2018-05-27 14:39:03 +01:00

Apple //e emulator in go

Ebiten based apple //e emulator written in go.

Features

  • MOS 6502 CPU
  • keyboard
  • 40 column text mode
  • low resolution color graphics
  • high resolution monochrome graphics
  • upper memory bank switching: $d000 page and ROM/RAM switching
  • main memory page1/page2 switching in text, lores and hires
  • speaker audio

Installation

Install prerequisites with glide

glide up

Build the executable

go build

Download apple2e.rom from a2go.applearchives.com and put it in the root directory.

Running it

go run apple2e.go
go run apple2e.go my_disk_image.dsk
go run apple2e.go -drive-head-click my_disk_image.dsk

Running the tests

Setting up the tests

Some disk images are used for the tests

Running the tests

go test -v

The CPU tests make use of Klaus2m5's excellent 6502 functional tests.

Known working images

  • DOS 3.3
  • Prodos 1.9
  • Lemonade stand
  • Montezuma's Revenge

Keyboard shortcuts

  • ctrl-alt-R reset
  • ctrl-alt-M mute
  • ctrl-alt-C capslock

Remaining work

  • 80 column card
  • 48k aux memory
  • double hires
  • paddles

Known issues

  1. On MacOS, the initial beep is sometimes split into two little beeps. This appears to be an ebiten issue.
  2. On MacOS, shutting down sometimes takes 30 seconds or so