Add README.md

This commit is contained in:
flowenol 2021-03-01 02:15:24 +01:00
parent 30735d6337
commit fcf18c4c91
1 changed files with 63 additions and 0 deletions

63
README.md Normal file
View File

@ -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`