79 lines
2.7 KiB
Markdown
79 lines
2.7 KiB
Markdown
# Apple1_MIST
|
|
|
|
Apple-I core for the MiST FPGA.
|
|
|
|
## What's implemented
|
|
|
|
- 512 bytes ROM (Woz monitor and ACI), remaing space is RAM
|
|
- full working audio cassette interface (see below how to operate it)
|
|
- CPU clock is accurate and RAM refresh lost cycles are implemented
|
|
- NTSC output (with crosstalk pixel artifacts!)
|
|
- Keyboard: ASCII keyboard with clear screen and reset keys
|
|
|
|
## How to use it
|
|
|
|
F5 resets the machine, F1 clears the screen.
|
|
|
|
You can load `.PRG` files from the SD card via the F12 MiST menu. `.PRG` files
|
|
are plain binary files with an header of two bytes containing the load address
|
|
of the program.
|
|
|
|
If you have a binary file (usually they come with a `.bin` extension, or no
|
|
extension at all) you need to convert it to `.PRG` before you can load with
|
|
it with the F12 menu option. Check my other repo
|
|
[apple1-videocard-lib](https://github.com/nippur72/apple1-videocard-lib)
|
|
where I have some tools for converting from and to various Apple-I
|
|
formats (prg, bin, wav, woz).
|
|
|
|
After you load a file, you can run it from the monitor, for example
|
|
if you have a program that starts at address `$0280` type:
|
|
```
|
|
280R (return)
|
|
```
|
|
|
|
## Using the ACI Audio Cassette Interface
|
|
|
|
To be able to use the ACI you need to connect your audio input source (tape,
|
|
mp3 player, PC, ect...) to the `UART_RX` pin of the MiST (Mistica units
|
|
have a dedicated "audio input" jack plug).
|
|
|
|
Audio output (for saving programs on tape) is simply taken for the speakers output.
|
|
|
|
The F12 menu option "Audio monitor" allows you to choose from:
|
|
- "tape in": audio coming from the tape is also played on the speaker as feedback
|
|
- "tape out": the speakers play the tape out signal (for recording on a real tape or sampling it on a PC).
|
|
|
|
The ACI is commanded from its own monitor program. Enter it with:
|
|
```
|
|
C100R (return)
|
|
```
|
|
(a `*` will be shown as prompt).
|
|
|
|
### How to load a file
|
|
|
|
On the ACI monitor type the start and end address of the program you are going to read,
|
|
followed by a "R", e.g.:
|
|
````
|
|
280.2CAR (enter)
|
|
````
|
|
Note: make sure the tape (or WAV) is already playing before pressing (enter).
|
|
|
|
### How to save a file
|
|
|
|
On the ACI monitor type the start and end address of the program you are going to write,
|
|
followed by a "W", e.g.:
|
|
````
|
|
280.2CAW (enter)
|
|
````
|
|
Note: press record & play on tape before pressing (enter) on the ACI.
|
|
|
|
## Acknowledgments
|
|
|
|
This FPGA core is based on the previous projects:
|
|
- [apple-one](https://github.com/alangarf/apple-one) by Alan Garfield
|
|
- [Mist_FPGA](https://github.com/Gehstock/Mist_FPGA) by Gehstock
|
|
|
|
Thanks also to [P-L4B](https://github.com/P-L4B) and [UncleBernie](https://www.applefritter.com/users/unclebernie), for all the techincal details and explanations that allowed me to write
|
|
a more accurate implementation.
|
|
|