Apple ][+#

Apple ][+ Specifications#

Lifespan

1979-1983

Media

Cassette tape, 5.25” floppy disk (Disk II)

CPU

MOS Technology 6502 @ 1 MHz

Memory

16K-64K RAM, 12K ROM (expandable)

Display

40x24 text, 40x48 lo-res graphics (16 colors), 280x192 hi-res graphics (6 colors)

Sound

1-bit speaker

Input

Keyboard, paddle controllers, joystick

FozzTexx, CC BY-SA 4.0 https://creativecommons.org/licenses/by-sa/4.0, via Wikimedia Commons

History#

The Apple ][+ was introduced by Apple Computer, Inc. in June 1979 as an enhancement to the original Apple ][ model, which was released in 1977. The Apple ][ series of computers were designed primarily by Steve Wozniak and marketed by Steve Jobs. The Apple ][+ added the Applesoft BASIC programming language, which was integrated into the ROM and replaced the Integer BASIC of the original Apple ][. The Apple ][+ also featured an improved keyboard, with keys for control characters and lowercase letters.

The Apple ][+ was successful in the early years of personal computing, especially in the education market. It was eventually succeeded by the Apple //e in 1983, which replaced the discrete IC-based circuitry with a single ASIC chip.

Programming#

Applesoft BASIC was developed by Microsoft. It offered improved floating-point arithmetic and graphics commands compared to Integer BASIC. Integer BASIC was available by loading it into the optional Language Card memory.

The 8bitworkshop IDE doesn’t include the original Apple ROMs, so BASIC is not available. Instead, you can program in 6502 assembler or in C with the CC65 compiler tools.

Memory Map#

Address Range

Description

$0000-$00FF

Zero page

$0100-$01FF

Stack

$0200-$02FF

Input buffer, variables

$0300-$03BF

Free space

$03C0-$03FF

DOS Vectors

$0400-$07FF

Text/Lores Page 1

$0800-$1FFF

Free space

$2000-$3FFF

Hires Page 1

$4000-$5FFF

Hires Page 2

$6000-$BFFF

Free space

$C000-$CFFF

I/O switches and softswitches

$D000-$FFFF

ROM (Applesoft BASIC, Monitor)

I/O Switches and Softswitches#

The Apple II uses memory-mapped I/O with “softswitches” - reading or writing specific memory addresses toggles hardware features:

Address

Function

$C000

80STORE (80-column card memory mapping)

$C001

RAMRD (read from auxiliary memory)

$C002

RAMWRT (write to auxiliary memory)

$C003

INTCXROM (internal ROM for slot C1-CF)

$C004

ALTZP (alternate zero page)

$C005

SLOTC3ROM (slot 3 ROM)

$C006

80COL (80-column display)

$C007

ALTCHARSET (alternate character set)

$C00C/D

80COL (80-column display on/off)

$C00E/F

ALTCHARSET (alternate character set on/off)

$C050

Graphics mode

$C051

Text mode

$C052

Mixed graphics/text off

$C053

Mixed graphics/text on

$C054

Text page 1

$C055

Text page 2

$C056

Lo-res graphics

$C057

Hi-res graphics

$C058

Annunciator 0 off

$C059

Annunciator 0 on

$C05A

Annunciator 1 off

$C05B

Annunciator 1 on

$C05C

Annunciator 2 off

$C05D

Annunciator 2 on

$C05E

Annunciator 3 off

$C05F

Annunciator 3 on

$C061

Push button 0 (paddle button)

$C062

Push button 1 (paddle button)

$C063

Push button 2 (paddle button)

$C064

Paddle 0 X coordinate

$C065

Paddle 0 Y coordinate

$C066

Paddle 1 X coordinate

$C067

Paddle 1 Y coordinate

$C070

Paddle trigger

Graphics Modes#

Text Mode (40x24)#

Standard text display using the built-in character set. Characters are stored in the text page starting at $0400.

Lo-Res Graphics (40x48, 16 colors)#

Low-resolution color graphics with 16 available colors. Each byte represents two 4-bit pixels vertically stacked.

Hi-Res Graphics (280x192, 6 colors)#

High-resolution monochrome graphics with color artifacts. Uses two graphics pages at $2000 and $4000.

Development Tools#

CC65 Compiler#

C programs are compiled using the CC65 toolchain, which provides:

  • Standard C library support

  • Apple II-specific extensions

  • TGI (Tiny Graphics Interface) graphics library

  • Conio (console I/O) library

Assembly Tools#

  • DASM - Versatile macro assembler (.a, .dasm)

  • Merlin32 - Apple II-specific assembler (.lnk)

  • CA65 - CC65’s linker-aware assembler (.s, .ca65)

Memory Configuration#

Programs that use hi-res graphics should include the following:

#define CFGFILE apple2-hgr.cfg
#pragma data-name(push,"HGR")
#pragma data-name(pop)

For details and other configuration files, see the CC65 documentation.

Binary Formats#

The 8bitworkshop Apple II platform detects multiple binary formats for loading programs:

Disk Images (.dsk files)#

  • 16-sector, 35-track disk images (143,360 bytes)

  • Automatically detected and mounted as a DiskII drive in slot 6

  • Supports Apple DOS 3.3 format with multiple files

AppleSingle Format#

  • Header signature: $00 $05 $16 $00 (first 4 bytes)

  • Load address: Stored at offset $38-$39 (big-endian)

  • Header size: 58 bytes

  • Used by CC65 compiler (exehdr.s)

DOS 3.3 Binary Format#

  • 4-byte header: origin address (2 bytes, little-endian) + size (2 bytes, little-endian)

  • Automatically detected when:

    • Size matches file length minus 4 bytes

    • Origin address is less than $C000

    • Origin + size is less than $13000

    • Origin is $803 or aligned to $xx00

  • Programs load at the specified origin address in the header

Raw Binary Format#

  • Default load address: $803

  • Used when no other format is detected

Comments