Portable emulator of an Apple ][+ or //e. Written in Go. Runs Total Replay.
Go to file
Ivan Izaguirre 4b655b40b8 Base64A roms
2019-06-09 17:35:32 +02:00
apple2console Project reorg. Separate executables for the SDL and console versions 2019-06-01 17:11:25 +02:00
apple2sdl Press F12 to save a screen capture 2019-06-02 22:59:51 +02:00
core6502 Fix Saturn card to pass Saturn test 2019-06-07 17:42:18 +02:00
doc Readme file 2019-06-02 23:00:31 +02:00
romdumps Base64A roms 2019-06-09 17:35:32 +02:00
apple2.go Project reorg. Separate executables for the SDL and console versions 2019-06-01 17:11:25 +02:00
apple2main.go Refactor ROM loading. Preparation for alt roms. 2019-06-07 20:01:20 +02:00
apple2Setup.go Refactor ROM loading. Preparation for alt roms. 2019-06-07 20:01:20 +02:00
cardBase.go Embed default resources in the executable 2019-06-01 20:06:44 +02:00
cardDisk2.go Fix Saturn card to pass Saturn test 2019-06-07 17:42:18 +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 Saturn card to pass Saturn test 2019-06-07 17:42:18 +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
characterGenerator.go Embed default resources in the executable 2019-06-01 20:06:44 +02:00
diskette16sector.go Embed default resources in the executable 2019-06-01 20:06:44 +02:00
ioC0Page.go Project reorg. Separate executables for the SDL and console versions 2019-06-01 17:11:25 +02:00
LICENSE Create LICENSE 2019-02-16 21:03:59 +01:00
memoryManager.go Refactor ROM loading. Preparation for alt roms. 2019-06-07 20:01:20 +02:00
memoryRange.go Project reorg. Separate executables for the SDL and console versions 2019-06-01 17:11:25 +02:00
README.md Fix Saturn card to pass Saturn test 2019-06-07 17:42:18 +02:00
resources.go Embed default resources in the executable 2019-06-01 20:06:44 +02:00
screen.go Press F12 to save a screen capture 2019-06-02 22:59:51 +02:00
screenHiRes_test.go Project reorg. Separate executables for the SDL and console versions 2019-06-01 17:11:25 +02:00
screenHiRes.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_test.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
softSwitches2.go Project reorg. Separate executables for the SDL and console versions 2019-06-01 17:11:25 +02:00
softSwitches2e.go Project reorg. Separate executables for the SDL and console versions 2019-06-01 17:11:25 +02:00

Apple II+ emulator

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

Features

  • Apple II+ with 48Kb of base RAM
  • Sound
  • 16 Sector diskettes in DSK format
  • Emulated extension cards:
    • DiskII controller
    • 16Kb Language Card
    • 256Kb Saturn RAM 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

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 an DSK file (Asimov is an excellent source) and use the -disk parameter.

casa@servidor:~$ ./apple2sdl -disk ~/Downloads/karateka.dsk

Karateka

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
  • F12: Save a screen snapshot to a file snapshot.png

Only valid on SDL mode

Command line options

  -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)
  -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)

Building from source

apple2console

The only dependency is having a working Go installation. 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.

Run:

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