From fcf18c4c91721cb431b835b858b20a893c224959 Mon Sep 17 00:00:00 2001 From: flowenol Date: Mon, 1 Mar 2021 02:15:24 +0100 Subject: [PATCH] Add README.md --- README.md | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..54f584a --- /dev/null +++ b/README.md @@ -0,0 +1,63 @@ +# apple1serial + +This repository contains firmware files for the Apple-1 Serial Interface expansion card. + +## Description + +This project aims to provide alternative to the ACI for the Apple-1 replica or original boards owners via use of the serial communication (9600/8-N-1). +The project is based around ATMega328P MCU which operates as half-duplex UART. + +# Memory map + +| address | function | +| --- | --- | +| `$C100` | the original ACI loader program adapted to the A1SI | +| `$C300` | "teletype on apple-1" test program - the data from remote terminal appears on Apple-1 screen | +| `$C400` | "teletype on remote" test program - the data from Apple-1 appears on remote terminal | +| `$C500` | 0-255 repeating counter - all possible bytes are repeatedly sent to remote terminal | +| `$C600` | serialmonitor - the well known Woz Monitor, but now you type on the remote terminal | + +entries for programmers: + +| address | function | +| --- | --- | +| `$C000` | ready flag - contains 0x00 if the device is ready to write/read byte | +| `$C080` | read address - the location for data read from the interface, first read of this address switches the device to read mode | +| `$C081` | write address - the location for data to be written via the interface, first write to this address switches the device to read mode | +| `$C23A` | software reset routine - resets the MCU | +| `$C1EC` | block read routine - reads data from the interface to the specified address range | +| `$C213` | block write routine - writes the data via the interface from the specified address range | +| `$0034` | lower byte of the end address for block read/write routines | +| `$0035` | upper byte of the end address for block read/write routines | +| `$0036` | lower byte of the beginning address for block read/write routines | +| `$0037` | upper byte of the beginning address for block read/write routines | + + +## Contents + +The contents of this repository are as following: + +firmware/ - contains source code for the ATMega328 MCU firmware +mapping/ - contains EQN and JED files for GAL20V8 based address decoder for the board +src/ - contains the 6502 assembly sources for the A1SI onboard ROM routines + +## Requirements + +You need the following to sucessfully build the firmware: + +* [xa](https://www.floodgap.com/retrotech/xa/) cross assembler software +* [avr-gcc](https://gcc.gnu.org/wiki/avr-gcc) toolchain +* [avr-libc](https://www.nongnu.org/avr-libc/) set of libraries +* [AVRDUDE](https://www.nongnu.org/avrdude/) AVR programmer software or equivalent +* Some software capable of translating the EQN files into JED's. I used for this purpose the DOS based EQN2JED from OPALjr PLD Development Package. + + +## How to build? + +To build the firmware just type: + +`make` + +And to clean the build: + +`make clean`