Portable emulator of an Apple ][+ or //e. Written in Go. Runs Total Replay.
Go to file
Ivan Izaguirre b1b55f4c0b Write support for ProDOS hard disks. 2019-10-05 15:30:13 +02:00
.circleci Use CircleCI 2019-06-11 00:04:23 +02:00
apple2console Added the -traceCpu and -traceSS command line switches. 2019-09-24 23:32:03 +02:00
apple2sdl Press F11 to toggle CPU execution trace to standard output 2019-10-02 23:00:02 +02:00
core6502 Press F11 to toggle CPU execution trace to standard output 2019-10-02 23:00:02 +02:00
doc Read only ProDOS hard disk support. 2019-10-02 23:39:39 +02:00
romdumps Support the ThunderClock Plus card. Partial mulation of the microPD1990AC integrated circuit. 2019-09-28 13:37:42 +02:00
.gitignore Initial support for the Base64A clone. Support for ROM banks 2019-06-09 17:36:29 +02:00
LICENSE Create LICENSE 2019-02-16 21:03:59 +01:00
README.md Write support for ProDOS hard disks. 2019-10-05 15:30:13 +02:00
apple2.go Press F11 to toggle CPU execution trace to standard output 2019-10-02 23:00:02 +02:00
apple2Setup.go Write support for ProDOS hard disks. 2019-10-05 15:30:13 +02:00
apple2main.go Change default slot of ThunderClock to 4. 2019-10-05 15:26:24 +02:00
base64a.go Support for joysticks 2019-08-06 00:37:27 +02:00
cardBase.go Read only ProDOS hard disk support. 2019-10-02 23:39:39 +02:00
cardDisk2.go Fix Saturn card to pass Saturn test 2019-06-07 17:42:18 +02:00
cardHardDisk.go Write support for ProDOS hard disks. 2019-10-05 15:30:13 +02:00
cardInOut.go Project reorg. Separate executables for the SDL and console versions 2019-06-01 17:11:25 +02:00
cardLanguage.go Fix language card. ProDos 2.4.2 boots now. 2019-09-24 23:43:58 +02:00
cardLogger.go Project reorg. Separate executables for the SDL and console versions 2019-06-01 17:11:25 +02:00
cardSaturn.go Fix Saturn card to pass Saturn test 2019-06-07 17:42:18 +02:00
cardThunderClockPlus.go Support the ThunderClock Plus card. Partial mulation of the microPD1990AC integrated circuit. 2019-09-28 13:37:42 +02:00
characterGenerator.go Support for character generator pages. F10 to change page. 2019-06-09 23:54:27 +02:00
diskette16sector.go Embed default resources in the executable 2019-06-01 20:06:44 +02:00
hardDisk.go Write support for ProDOS hard disks. 2019-10-05 15:30:13 +02:00
ioC0Page.go Added the -traceCpu and -traceSS command line switches. 2019-09-24 23:32:03 +02:00
memoryManager.go Support the ThunderClock Plus card. Partial mulation of the microPD1990AC integrated circuit. 2019-09-28 13:37:42 +02:00
memoryRange.go Project reorg. Separate executables for the SDL and console versions 2019-06-01 17:11:25 +02:00
microPD1990ac.go Ignore not supported calls to the ThunderClock+ card. 2019-10-02 23:03:00 +02:00
resources.go Use non-compressed DSK images with http links. Valid also with ROMs 2019-07-07 17:40:29 +02:00
screen.go Press F12 to save a screen capture 2019-06-02 22:59:51 +02:00
screenHiRes.go Project reorg. Separate executables for the SDL and console versions 2019-06-01 17:11:25 +02:00
screenHiRes_test.go Project reorg. Separate executables for the SDL and console versions 2019-06-01 17:11:25 +02:00
screenLoRes.go Project reorg. Separate executables for the SDL and console versions 2019-06-01 17:11:25 +02:00
screenNtscFilter.go Project reorg. Separate executables for the SDL and console versions 2019-06-01 17:11:25 +02:00
screenText.go Project reorg. Separate executables for the SDL and console versions 2019-06-01 17:11:25 +02:00
screenText_test.go Project reorg. Separate executables for the SDL and console versions 2019-06-01 17:11:25 +02:00
softSwitches2.go Notes on how to implement prodos hard disk support. 2019-09-28 19:17:47 +02:00
softSwitches2e.go Project reorg. Separate executables for the SDL and console versions 2019-06-01 17:11:25 +02:00

README.md

Apple II+ emulator

Portable emulator of an Apple II+. Written in Go.

CircleCI

Features

  • Apple II+ with 48Kb of base RAM
  • Sound
  • 16 Sector diskettes in DSK format
  • ProDos hard disk
  • Emulated extension cards:
    • DiskII controller
    • 16Kb Language Card
    • 256Kb Saturn RAM
    • ThunderClock Plus real time clock
    • Simulated bootable hard disk card
  • Graphic modes:
    • Text, Lores and Hires
  • Displays:
    • Green monochrome monitor with half width pixel support
    • NTSC Color TV (extracting the phase from the mono signal)
    • ANSI Console, avoiding the SDL2 dependency
  • Adjustable speed.
  • Fast disk mode to set max speed while using the disks.
  • Single file executable with embedded ROMs and DOS 3.3
  • Optional emulation of the clone Base64A by Copam
  • Joystick support. Up to two joysticks or four paddles.

Running the emulator

No installation required. Download the single file executable apple2xxx_xxx for linux or Mac, SDL2 graphics or console.

Default mode

Execute without parameters to have an emulated Apple II+ with 64kb booting DOS 3.3 ready to run Applesoft:

casa@servidor:~$ ./apple2sdl

DOS 3.3 started

Play games

Download a DSK file locally or use an URL (Asimov is an excellent source) with the -disk parameter:

casa@servidor:~$ ./apple2sdl -disk "https://www.apple.asimov.net/images/games/action/karateka/karateka (includes intro).dsk"

Karateka

Play the Total Replay collection

Download the excellent Total Replay compilation by a2-4am. Run it with the -hd parameter:

casa@servidor:~$ ./apple2sdl -hd "Total Replay v2.0.2mg"

Total Replay

Terminal mode

To run text mode right on the terminal without the SDL2 dependency, use apple2console. It runs on the console using ANSI escape codes. Input is sent to the emulated Apple II one line at a time:

casa@servidor:~$ ./apple2console

############################################
#                                          #
#                APPLE II                  #
#                                          #
#     DOS VERSION 3.3  SYSTEM MASTER       #
#                                          #
#                                          #
#            JANUARY 1, 1983               #
#                                          #
#                                          #
# COPYRIGHT APPLE COMPUTER,INC. 1980,1982  #
#                                          #
#                                          #
# ]10 PRINT "HELLO WORLD"                  #
#                                          #
# ]LIST                                    #
#                                          #
# 10  PRINT "HELLO WORLD"                  #
#                                          #
# ]RUN                                     #
# HELLO WORLD                              #
#                                          #
# ]_                                       #
#                                          #
#                                          #
############################################
Line: 

Keys

  • F5: Toggle speed between real and fastest
  • F6: Toggle between NTSC color TV and green phosphor monochrome monitor
  • F7: Save current state to disk
  • F8: Restore state from disk
  • F10: Cycle character generator codepages. Only if the character generator ROM has more than one 2Kb page.
  • F11: Toggle on and off the trace to console of the CPU execution
  • F12: Save a screen snapshot to a file snapshot.png

Only valid on SDL mode

Command line options

  -base64a
        setup a Base64A clone
  -charRom string
        rom file for the character generator (default "<internal>/Apple2rev7CharGen.rom")
  -disk string
        file to load on the first disk drive (default "<internal>/dos33.dsk")
  -disk2Slot int
        slot for the disk driver. -1 for none. (default 6)
  -diskRom string
        rom file for the disk drive controller (default "<internal>/DISK2.rom")
  -dumpChars
        shows the character map
  -fastDisk
        set fast mode when the disks are spinning (default true)
  -hd string
        file to load on the hard disk
  -hdSlot int
        slot for the hard drive if present. -1 for none. (default -1)
  -languageCardSlot int
        slot for the 16kb language card. -1 for none
  -mhz float
        cpu speed in Mhz, use 0 for full speed. Use F5 to toggle. (default 1.0227142857142857)
  -mono
        emulate a green phosphor monitor instead of a NTSC color TV. Use F6 to toggle.
  -panicss
        panic if a not implemented softswitch is used
  -rom string
        main rom file (default "<internal>/Apple2_Plus.rom")
  -saturnCardSlot int
        slot for the 256kb Saturn card. -1 for none (default -1)
  -thunderClockCardSlot int
        slot for the ThunderClock Plus card. -1 for none (default 4)
  -traceCpu
        dump to the console the CPU execution. Use F11 to toggle.
  -traceSS
        dump to the console the sofswitches calls

Building from source

apple2console

The only dependency is having a working Go installation on any platform.

Run:

$ go get github.com/ivanizag/apple2/apple2console 
$ go build github.com/ivanizag/apple2/apple2console 

apple2sdl

Besides having a working Go installation, install the SDL2 developer files. Valid for any platform

Run:

$ go get github.com/ivanizag/apple2/apple2sdl
$ go build github.com/ivanizag/apple2/apple2sdl 

Cross compile apple2sdl.exe for Windows in Ubuntu

Install the mingw cross compile tools and the SDL2 Windows libs for mingw.

$ sudo apt install mingw-w64
$ wget https://www.libsdl.org/release/SDL2-devel-2.0.9-mingw.tar.gz
$ tar -xzf SDL2-devel-2.0.9-mingw.tar.gz
$ sudo cp -r SDL2-2.0.9/x86_64-w64-mingw32/* /usr/x86_64-w64-mingw32

Compile:

$ env CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc GOOS=windows CGO_LDFLAGS="-L/usr/x86_64-w64-mingw32/lib -lSDL2 --verbose" CGO_FLAGS="-I/usr/x86_64-w64-mingw32/include -D_REENTRANT" go build -o apple2sdl.exe -x github.com/ivanizag/apple2/apple2sdl

To run the executable in Windows, copy the file SDL2.dll on the same folder. The latest SDL2.dll can be found in the Runtime binary for Windows 64-bit.