Replica 1 software and hardware articles

A collection of articles and projects around the Replica 1.


REBUS Replica 1 Hardware Extensions
ACIA, Flash, Apple II sound
Ken Wessen
Apple II sound circuit
Replica Quick reference by Jeff Trenter
Krusader Ken Wessen’s assember IDE
Archive with many variants, sources, versions
Krusader 1.2.1 source for use with an ACIA
Applesoft Lite archive
EWoz extended WOZ monitor with hex file upload
Jeff Tranter’s large collection of 6502 articles
Micro-KIM, Replica 1, and much more. A real treasure collection, original here!

EEPROM programmer circuit (as featured on the Multi I/O board)
EEPROM circuit
Here’s a 1 chip EEPROM programmer for somebody wishing to copy their EEPROM or create their own data. In keeping with the replica 1 theme, it is a down and dirty solution requiring few connections. All the connections listed on the EEPROM go to their listed connections. A 74LS00 is all that is required to program an EEPROM.

This attaches to address A000-BFFF and is direct addressing. Simply write to the address to store the data. You should give a slight delay after your write since it takes 200ns to write a byte into an EEPROM. I do a short loop in basic


That does the trick. I tested this circuit out and had 0 errors when writing.

Replica 1 Cassette Interface

In 2007 Vince Briel tried to get a replica of the Cassette board, as designed by Steve Wozniak, operational. Another example of the genius Steve Wozniak, minimal hardware, 256 byte program. Two revisions, he did not have much luck with this. Reports indicate this has to do with insufficient quality of the power supply lines.

Original Apple 1 Cassette Interface Manual
A real userguide as can be found at the site of San Bergmans
Mimeo Cassette Interface and Operations Guide

Archive with disassembly and source files of the Apple 1 Cassette Interface.


Replica 1 Multi I/O Board

The Multi I/O Board, 2007, gives 2 8 bit bi-directional ports with 4 handshaking lines, a 6522 VIA,, a true RS232 serial port, a 6551 ACIA, with speeds up to 19,200 BAUD, and a 8K EEPROM programmer to store data or programs. There is a socket to add your own Speakjet voice chip that works in conjunction with the serial port to make your Replica 1 or Apple 1 speak!
Software included to let the WOZmon operate over serial.

Multi I/O board Setup and users Manual

Replica 1 slot expanders

Three slot expander

Available first in 2006 for the SE and continued to the Plus. One side for the 40 pin connector, the other side a real Apple 1 slot.

Note that sometimes the 40 pin flatcable connection is not reliable and gives CFFA1 I/O errors. A thick extra ground wire between the Replica 1 and the slot expander solves this.

Slot Expander I board manual

One slot expander

A single slot expander, one Apple 1 slot, to be placed upon the 40 pin box connector.

Replica 1 TE

Replica 1 TE improvements (2008)

  • Apple 1 compatible 44 pin slot
  • Apple 1 compatible 44 pin edge connector
  • Bread board area for hobby experiments
  • Elimination of jumpers
  • Improved video display using Parallax Propeller (works with most TV’s and monitors)
  • No need for Apple 1 slot adapter because Apple 1 slot now onboard as well as original replica 1 connector
  • User firmware updates. User can download firmware updates and install. No need to send in for new chips.

The use of the Propeller instead of the ATMega IC’s makes the TE more compact, it handles video and PS/2 interfacing.

Replica 1 TE Setup and users Manual
Replica 1 TE schematic

Replica 1 TE CD


Junior by Philippe Roca

Philippe Roca sent me photos and Gerber PCB files from his Junior system.

From scratch, reading the original Elektor articles, he designed and built a complete Junior system.

Faithfull to the original and with even the ‘problem’ parts such as the 2708 EPROM on the main PCB and the 82S33 PROM on the interface card. For those devices he built programmers!

Still working on building and testing (January 2021), here photos and Gerbers of finished and working cards.


Interface card



Gerbers download

Junior PCB gerber
Display print gerber
Power supply gerber


CFFA1 – CompactFlash Interface for Apple 1
R&D Automation

The CFFA1, designed and sold by Rich Dreher adds a mass storage device to the Apple 1, clones and the Replica’s. And also 32K SRAM storage is possible, which is meaningful for the Apple 1, the Replica’s have already RAM extended. The firmware is in a EEPROM which can be reprogrammed in place from the Apple 1. Check Rich Dreher’s site for availability.

CFFA1 Manual 1.0
CFFA1 Manual 1.1
CFFA1 QuickStart 1.0.pdf

CFFA1 cdrom V1.0: manuals, diskimages, firmware, utilities
CFFA1 cdrom v1.1
V1.0 Support such as Flash the EEPROM and the API source V1.0
ULTIMATE APPLE1 CFFA 3.2 disk image
ULTIMATE APPLE1 CFFA 3.3 disk image

Some disk images with Apple 1 software are in the CDROM archives.
The Ultimate disk images contain all known Apple 1 programs, Basic programs, Applesoft for Apple 1, Forth, Microchess, EHBASIC, Krusader and much more.
Reading and writing of disk images is possible with the excellent Ciderpress program.

The CFA A1 is accessed via a menu driven program or via an API.

9000: 4C

 CFFA1 MENU (1.0)
 R - RENAME       D - DELETE
^F - FORMAT       T - TERSE


CFFA1 API (see the CDROM v1.1 for the V1.1 API)

; CFFA1_API.s  Version 1.0 - 05/22/2007
; Equates for calling the CFFA1 API -- Firmware version 1.0 ($01)
CFFA1_ID1           = $AFFC   ; contains $CF when CFFA1 card is present
CFFA1_ID2           = $AFFD   ; contains $FA when CFFA1 card is present
FirmwareVersion     = $01
; Entry points to the CFFA1 firmware:
; MenuExitToMonitor
;   JMP here to display the CFFA1 menu.
;   Quit puts the user into the monitor.
; MenuExitToBASIC
;   JMP here to display the CFFA1 menu.
;   Quit puts the user into BASIC.
; Menu
;   JSR here to display the CFFA1 menu.
;   Quit returns control to your code.
; CFBlockDriver
;   JSR here to read or write a block, after setting up pdCommandCode
;   and other inputs (see below).
;   Result:  CLC, A = 0
;            SEC, A = error code
;   JSR here to call one of many functions provided by the firmware.
;   See "Function selectors for CFFA1_API" below.
MenuExitToMonitor   = $9000
MenuExitToBASIC     = $9003
Menu                = $9006
CFBlockDriver       = $9009
CFFA1_API           = $900C
; Inputs for CFBlockDriver - ProDOS block interface locations
pdCommandCode       = $42     ; see below
pdUnitNumber        = $43     ; always set this to 0 for firmware 1.0
pdIOBufferLow       = $44
pdIOBufferHigh      = $45
pdBlockNumberLow    = $46
pdBlockNumberHigh   = $47
; Values for pdCommandCode
PRODOS_STATUS       = $00
PRODOS_READ         = $01
PRODOS_WRITE        = $02
PRODOS_FORMAT       = $03
; Function selectors for CFFA1_API.
; Load one of these values into X:
;    ldx #CFFA1_xxxxx
;    jsr API
; Result:  CLC, A = 0
;          SEC, A = error code
; Certain functions have additional outputs, as described below.
; CFFA1_Version:
;   Output: X = current firmware version
;           Y = oldest compatible firmware version
; CFFA1_Menu:
;   Result: Runs the CFFA1 menu and returns when the user chooses Quit.
; CFFA1_DisplayError:
;   Input:  A = an error code
;   Result: Prints out a carriage return, the 2-digit hex error code,
;           and a description of that error, if available.
; CFFA1_OpenDir:
;   Input:  None (operates on the current prefix directory)
;   Result: Prepares for one or more calls to ReadDir.
; CFFA1_ReadDir:
;   Setup:  You have to call OpenDir before calling ReadDir.
;   Result: If no error, EntryPtr points to the next occupied directory entry.
; CFFA1_FindDirEntry:
;   Input:   Filename = name to search for
;   Result:  If no error, EntryPtr points at the found item's directory entry.
; CFFA1_WriteFile:
;   Input:  Filename = name for new file (will be replaced if it already exists)
;           Destination = starting address
;           FileSize = number of bytes to write
;           Filetype = type for new file
;           Auxtype = auxiliary type for new file
; CFFA1_ReadFile:
;   Input:  Filename = file to read into memory
;           Destination = starting address ($0000 to use the file's Auxtype value)
; CFFA1_SaveBASICFile:
;   Input:  Filename
; CFFA1_LoadBASICFile:
;   Input:  Filename
; CFFA1_Rename:
;   Input:  OldFilename = original name
;           Filename = new name
; CFFA1_Delete:
;   Input:  Filename = file or empty directory to delete
; CFFA1_NewDirectoryAtRoot:
;   Input:  Filename = name for new directory
; CFFA1_FormatDrive:
;   Input:  Filename = name for new volume
;           A = drive number (always set to 0 for firmware 1.0)
;           Y = $77 (just to help avoid accidental formatting)
;   Result: Disk volume is erased and given the specified name.
CFFA1_Version            = $00
CFFA1_Menu               = $02
CFFA1_DisplayError       = $04
CFFA1_OpenDir            = $10
CFFA1_ReadDir            = $12
CFFA1_FindDirEntry       = $14
CFFA1_WriteFile          = $20
CFFA1_ReadFile           = $22
CFFA1_SaveBASICFile      = $24
CFFA1_LoadBASICFile      = $26
CFFA1_Rename             = $28
CFFA1_Delete             = $2A
CFFA1_NewDirectoryAtRoot = $2C
CFFA1_FormatDrive        = $2E
; Zero-page inputs and results for API functions
; Filename and OldFilename point to strings that begin with a length byte (from
; 1 to 15), and each character must have its high bit off.  For example:
;    Filename   = $80     $280: 05  48  45  4C  4C  4F
;    Filename+1 = $02              'H'  'E' 'L' 'L' 'O'
Destination         = $00                   ; 2 bytes
Filename            = Destination+2         ; 2 bytes
OldFilename         = Filename+2            ; 2 bytes
Filetype            = OldFilename+2         ; 1 byte
Auxtype             = Filetype+1            ; 2 bytes
FileSize            = Auxtype+2             ; 2 bytes
EntryPtr            = FileSize+2            ; 2 bytes
; ProDOS low-level return codes
PRODOS_NO_ERROR      = $00    ; No error
PRODOS_BADCMD        = $01    ; Bad Command (not implemented)
PRODOS_IO_ERROR      = $27    ; I/O error
PRODOS_NO_DEVICE     = $28    ; No Device Connected
PRODOS_WRITE_PROTECT = $2B    ; Write Protected
PRODOS_BADBLOCK      = $2D    ; Invalid block number requested
PRODOS_OFFLINE       = $2F    ; Device off-line
; High-level return codes
eBadPathSyntax       = $40
eDirNotFound         = $44
eFileNotFound        = $46
eDuplicateFile       = $47
eVolumeFull          = $48
eDirectoryFull       = $49
eFileFormat          = $4A
eBadStrgType         = $4B
eFileLocked          = $4E
eNotProDOS           = $52
eBadBufferAddr       = $56
eBakedBitmap         = $5A
eUnknownBASICFormat  = $FE
eUnimplemented       = $FF
; ProDOS directory entry structure offsets
oFiletype           = $10
oKeyBlock           = $11
oBlockCount         = $13
oFileSize           = $15
oCreateDateTime     = $18
oVersion            = $1C
oMinVersion         = $1D
oAccess             = $1E
oAuxtype            = $1F
oModDateTime        = $21
oHeaderPointer      = $25
oDirLinkPrevious    = $00
oDirLinkNext        = $02
oVolStorageType     = $04
oVolVersion         = $20
oVolAccess          = $22
oVolEntryLength     = $23
oVolEntriesPerBlock = $24
oVolFileCount       = $25
oVolBitmapNumber    = $27
oVolTotalBlocks     = $29
; ProDOS Storage types
kSeedling           = $10
kSapling            = $20
kTree               = $30
kExtended           = $50
kDirectory          = $D0
kSubdirHeader       = $E0
kVolume             = $F0
kStorageTypeMask    = $F0
; Filetypes
kFiletypeText       = $04
kFiletypeBinary     = $06
kFiletypeDirectory  = $0F
kFiletypeBASIC1     = $F1
kFiletypeBAS        = $FC
kFiletypeSYS        = $FF
; end of CFFA1_API.s

Replica 1 SE

The only Replica 1 I have is the 2006 Replica 1 SE.

This version is the Second Edition, a polished version of the original Replica 1.
Again with the ATX power connector, but also with alternative ways of power supply.
Note that using an Apple II keyabord requires power supply via the ATX method, due to +/- 12V required.
One Apple 1 slot in a 40 pin connector format.
In the 8K ROM the Apple 1 Integer Basic, the WOZ monitor and the Krusader assembler IDE is placed. Documentation and other files are supplied on CD again.

At this time the two slot expanders to real apple 1 slots were available, the slot expander has to be connected via a 40 pin flatcable.
The first card available (but withdrawn due to reliability problems) was the replica Apple 1 cassette board.
The second is the Multi I/O board.
The CFFA1 also appeared at this time, giving mass storage facilities.

Replica 1 SE Setup and Users Manual 2006
Replica 1 SE Setup and Users Manual 2007
Replica 1 SE Schematic
Replica 1 SE CD

Video on PAL monitorsThe Replica 1 SE might have trouble with some video monitors, especially in 50 Hz/Europe countries. Look with a scope at the composite video signal, it is much too low amplitude, a wonder the monitors did sync after all.
The video monitor has a 75 ohm load. In parallel with the 100 ohm R3 this was giving a too low amplitude to let the monitor sync fast enough.As a dirty hack clip the R3 resistor off and the video becomes stable on many monitors. But not on all!


A-ONE replica

I have a A-one extended. Beautiful system, well designed and build. A-ONE hardware design: Franz Achatz , Video controller Software: San Bergmans, Keyboard controller Software: Ben Zijlstra

SB-Projects, San Bergmans’ description of the working of the Apple 1 and all about the A-ONE

The A-ONE is a compact and high quality Apple 1 replica made and designed in the Netherlands by Achatz Electronics. Similar, but not identical to the Apple 1 Replica 1. Advantages are the small board size and low IC count,, 50 Hz and 60 Hz rock solid video, and the real Apple 1 slot.


  • System-Clock: 1 MHz
  • RAM Memory: 32KB SRAM
  • ROM Memory: 32KB (64KB EPROM, selectable are two banks)
  • Video: 40 Chars/line at 24 Video-lines 50Hz and 60Hz
  • Video Out: Composite positive Video, 75 Ohms
  • Keyboard: PS/1 Keyboard interface
  • RS232: 9-pin SubD Female, 2400 Bd
  • Expansion: 2×22 Edge Connector
  • Powersupply: recommended is single universal AC-DC Adapter
  • Voltage: DC 9-12VDC
  • Supply Current: 250 mA
  • PCB Size: 160 x 100mm

A-ONE Extended

The A-ONE Extended is a standard A-ONE with additional a large breadboard and three Apple 1 slots. Together with the breadboard prototype board this make it quite an impressive system to develop hardware for 6502 systems!


A-one extended

A-one extended

A-ONE manual 1.10
A-ONE manual 1.10
Elektuur announcement
A-ONE flyer
A-ONE terminal description by San Bergmans
JP1: Video 50/60Hz
JP2: MemoryMap (see Manual)
JP3: H-A14 = 65C02 CPU
A14-L = 6502 CPU


A-ONE extensions

Since the Apple 1 slot is standard, it must be possible to use the Apple 1 and Replica 1 extensions, such as the CFFA1 and the multi-I/O board on the A-ONE. It will need a A-One slot to Apple 1 slot onnection, perhaps via one of the prototype boards.

Working with the A-ONE extended becomes even more a pleasure with the prototype boards sold by Achatz Electronics.



A-ONE information

The design of the A-ONE is well documented and open: see the excellent website of San Bergmans

Photos of my A-ONE Extended

Photos of the development

Replica 1, first version

The first Replica 1 is just called “Replica 1”.

The Replica 1 is as simple as can be, to make an Apple 1 look-a-like. CPU (65(C)02), SRAM (62256 32K), EEPROM 28C64 8K), clck (1 MHz can oscillator) is as expected, as is the 6821 PIA for I/O.
Keyboard input is original also, just an ASCII parallel keyboard, like the Apple 2 keyboard.

The video circuit, quite complicated in the original design, is replaced with a programmable ATMEGA8 with a 74LS166 shift register.

As an extra and optional a serial I/O board for Revision C  is used to also allow a PS/1 keyboard as keyboard input. Made with a ATMEGA8515. The serial I/O board can also be used on the original Apple 1! There was also a Revision B with the serial I/O integrated on the main PCB, see the photos below.

The Apple 1 expansion slot is replaced with a 40 pin connector, with the same signals at the same position but mechanically incompatible with the Apple 1.

The WOZmon monitor and Apple 1 Integer Basic are burned into the EEPROM.

The announcement by Vince Briel on Applefritter in 2005:

The Briel Computers Replica 1 is a fully functional clone of the Apple 1 © computer created by Steve Wozniak in 1976 that started Apple Computers ©. The Replica 1 is available as a kit that you solder all the components onto the circuit board, or preassembled.

A new circuit layout was done to implement a more simple circuit and replace older no longer available IC’s. This new design allows for a smaller board yet still gives all the functionality of the original design. Just like the Apple 1, the keyboard and power supply are not included. Simply add your own PC 386-Pentium© class power supply, a composite TV or monitor and a PS/2 keyboard or Apple II© style ASCII keyboard and you are set.

The serial I/O board is a unique design made to work with both the Replica I and the Apple 1. It is a piggy-back board that goes in the 6821 socket and is transparent to the computer. With this design anything that goes to the video display is sent to the serial I/O board and anything that comes in through the serial I/O is treated like a keystroke. This method reduces the speed of the I/O board to 2400bps but gives the advantage of being able to save BASIC programs as a text file. No setting switches or running software required. Just install it, set up Hyper Terminal, connector your serial cable (not included) and your all set.

Revision B

Replica 1 Setup and Users Manual
Revision C January 2005
Replica 1 Serial I/O board
Setup and Install Manual January 2004
Replica 1  Circuit Diagram
Replica 1 firmware source Replica 1  keyboard encoder
Video Rev C
Serial I/O

Hardware bug

There is a hardware bug that may occur on the replica 1 boards. It causes occasional dropped characters from the display. There is a fairly easy fix but it does require soldering.
Requirements: .01uF ceramic disc capacitor, soldering iron (25W preferred) and solder.
Locate the chip labeled 74LS04 on the circuit board. Pin 3 is on the side that is closer to the edge of the board. Pin 14 is on the other side of the chip top pin.
So, the pins are labeled as follows:

|(74LS00 is here on the board)
|----- this is the edge of the board
|----------- 6821 is here on the board

Pin 1 and 14 are closer to the 6821. Connect the ceramic capacitor on the bottom of the board to pins 3 and 14. Make sure the capacitor doesn’t touch any of the other pins on the chip. This will eliminate all dropped characters.

Revision B has the serial I/O on the main PCB