Updated Serial IO README

This commit is contained in:
Unknown 2019-01-14 14:50:37 +01:00
parent 6a4e16d951
commit bae1e34bf1
2 changed files with 18 additions and 8 deletions

View File

@ -4,25 +4,28 @@ Did you ever wonder what the first computer created by Apple was like, and then
There are two versions of the RC6502, one has a card for every basic function such as CPU, RAM (redesigned version of also supports ROM), separate ROM as well as a serial card that replaces the traditional CRT and ASCII keyboard with an Arduino Nano. Doing it this way requires a backplane to connect everything together, this may be the version to build either because you want to study each of them in detail to figure out their secrets or simply because you want the option to easily replace them. The other one, this one actually, is the SBC-version (Single Board Computer) - this is the version to get if you want to learn a bit about the computer and enjoy building kits that are in a more compact form factor. It looks nice on shelf, or in a small drawer (if you don't get a vote on what belongs on display in your home). Most can be accomplished with the SBC version, so for your first build I recommend that you start with the SBC ([order](https://www.pcbway.com/project/shareproject/RC6502_Apple_1_SBC__revision_D_.html?inviteid=88707)) as well as a backplane ([order](https://www.pcbway.com/project/shareproject/RC6502_Apple_1_Replica__Backplane_module_revision_A_.html?inviteid=88707)) (so you can create and add features later).
![Completed board](https://github.com/tebl/RC6502/raw/master/RC6502%20Apple%201%20SBC/gallery/2017-07-09%2015.17.21.jpg)
Excited yet? Ofcourse you are, the next step is getting a PCB made and with the files available here you can have a company such as [PCBWay](https://www.pcbway.com/project/shareproject/RC6502_Apple_1_SBC__revision_D_.html?inviteid=88707) make a stack of them for around 5$, then have a look through the BOM (Bill Of Manufacturing) below to figure out what kind of components you'd need later to put it all together. Other than that you need basic tools such as a good soldering iron with a small-ish tip, lead-based solder with a resin core is recommended for beginners and then finally you'll need a basic EEPROM programmer (I use a cheap, but fantastic one called MiniPro TL866A).
The project uses only through-hole components that are easy for beginners, these have a set of pins or wires that are threaded through the holes of the PCB and then soldered on to the backside of the PCB. You can assemble it in the order of your own choosing as long as everything goes in the right place, but here are some hints to get started: do smaller parts such as the resistors first, then followed by the capacitors, IC sockets and then finally the larger components. By doing it this way, we're gradually going from the components closest to the board and successively moving onto taller components - this makes it easier to keep everything flush with the board. The components icons on the top of the PCB, what we hardware geeks usually refer to as the silkscreen, shows you which components goes where - take care that they are oriented the correct way, where it matters it'll be marked. Sockets will have a little indent marked on it similar to what you find on the PCB, for the electrolytic capacitors (round towers) you'll be able to match a stripe on one of the sides to the filled half of the symbol (this is the minus side).
![Board overview](https://github.com/tebl/RC6502/raw/master/RC6502%20Apple%201%20SBC/gallery/2017-07-09%2015.17.02.jpg)
![Reverse side of board](https://github.com/tebl/RC6502/raw/master/RC6502%20Apple%201%20SBC/gallery/2017-07-09%2020.06.43.jpg)
Take it slow and steady, enjoy the feeling of building a computer by hand. Study the text on the backside of the PCB as you go along, it'll have some text on it describing what most of the components you are installing actually does! If afterwards you want to study everything in detail, you can do so by studying the schematic for the whole thing at your leasure. Having problems with it? Now, I'm afraid you no longer have the option to avoid the schematic, but happily most problems can be fixed by verifying each connection by using a cheap multimeter set to continuity mode. If you print the schematic, you can mark everything you've checked with a pen so you won't overlook anything - this is where you'll be learning the most! Sometimes the wrong things have been accidentally connected, usually by a stray splash of solder - these are quickly found using the same continuity check, systematically work through each of the ICs to see if pins next to each other have been connected without a corresponding link on the schematic. Don't feel bad that everything didn't work from the get go, that just means you got some extra opportunities to learn even more than expected!
The originally designed computer had circuits for displaying data on a screen and reading input via a physical keyboard, but to keep things simple we are instead using an Arduino Nano to replace these parts - that way don't need to buy an antique keyboard or a scary CRT monitor in order to use it! You can communicate with the computer you built using a terminal emulator program such as PuTTy, SecureCRT or similar over the serial interface provided by the Arduino Nano. The Nano of course also need some software running on it, you'll find that in the form of an Arduino sketch called "[PIA Communicator](https://github.com/tebl/RC6502/tree/master/RC6502%20Serial%20IO/pia_communicator)", for more information see the details for the standalone [Serial IO](https://github.com/tebl/RC6502-Apple-1-Replica/tree/master/RC6502%20Serial%20IO)-module.
![Reverse side of board](https://github.com/tebl/RC6502/raw/master/RC6502%20Apple%201%20SBC/gallery/2017-07-09%2020.06.43.jpg)
The original computer had circuits for displaying data on a screen and reading input via a physical keyboard, but to keep things simple we are instead using an Arduino Nano to replace these parts - that way, you thanfully don't need to buy an antique keyboard or a scary CRT monitor in order to use it! You can communicate with the computer you built using a terminal emulator program such as PuTTy, SecureCRT or similar over the serial interface provided by the Arduino Nano. The Nano of course also need some software running on it, you'll find that in the form of an Arduino sketch called "[PIA Communicator](https://github.com/tebl/RC6502/tree/master/RC6502%20Serial%20IO/pia_communicator)", for more information see the details for the standalone [Serial IO](https://github.com/tebl/RC6502-Apple-1-Replica/tree/master/RC6502%20Serial%20IO)-module.
The firmware that goes into the EEPROM hasn't been changed since Wozniak himself wrote it, but as long as you have the programmer handy you can easily flash it into place using the software that came with the programmer (MiniPro Programmer, if you bought the one I'm using). Today the [8 KB binary file](https://github.com/tebl/RC6502/tree/master/RC6502%20ROM/firmware) will seem really small, but even still it contains everything you'll need to get started and even a lot more. You've got a complete version of Basic environment in there, but since it's an Apple 1 the first thing you'll see is something called a computer monitor - WozMon! The monitor allows you to interact with the system by peeking and poking memory locations to your hearts content!
At this point you'll certainly have learned a lot, after all you've actually built an entire computer! Thankfully you had some modern tools available, but please take a moment to contemplate the genious needed to build this thing back in 1976! Still wanting more, why not try your hand at designing some extra modules to use with that backplane connector? Add a parallell port, replace the display portion with a proper LCD, or you could even go as far as adding a few pretty blinking lights - the possibilities are truly endless (so long as it's within 64K)!
# Schematic
The supplied KiCad files should be sufficient as both a schematic and as a starting point for ordering PCBs (basically you could just zip the contents of the export folder and upload that on a fabrication site), the schematic is also available in [PDF-format](https://github.com/tebl/RC6502/raw/master/RC6502%20Apple%201%20SBC/export/RC6502%20Apple%201%20SBC.pdf) so that you can refer to it while troubleshooting. You could even print it out and hang it on your office wall, excellent conversation starter at any technology-oriented business worth working at!
![Completed board](https://github.com/tebl/RC6502/raw/master/RC6502%20Apple%201%20SBC/gallery/2017-07-09%2015.17.21.jpg)
# BOM
This is the part list as it stands now, most should be easy to get a hold of from your local electronic component shop though you might have to consider other sources for the older parts such as CPU, memory and PIA. Personally I bought most components with free shipping from China via AliExpress, prices will vary though you should be able to find most components in larger quantities than you'll ever need for the cost of a few cups of fancy coffee! You don't even need the newest and fastest components, after all it's going into a 70s-era computer so don't go overboard unless you absolutely want to (you can replace 74LS ICs with 74HCT or 74ALS if you want something newer). Most components have been produced by various manufacturers, these mostly do the same thing without any relevant differences though the choice of CPU and PIA could lead to incompatibilities so I've specified the ones I've had success with (probably also the cheapest ones available).

View File

@ -1,8 +1,14 @@
# RC6502 Serial IO
This module enables serial communication with the RC6502 computer. The original Apple 1 computer communicated with the user via the expected means, a keyboard for input and ofcourse a simplified video card for output - all of this via the PIA (MC6820, MC6821, W65c21 etc).
The original Apple 1 computer had circuitry for displaying data on a monitor as well as reading input via a physical keyboard, but to keep things simple we are instead using an Arduino Nano to this! Might not be as cool without an antique keyboard or a big and scary CRT monitor connected to it, but then again those things aren't for beginners and should you feel like adding them later there no reason as to why you can't!
The serial module works by replacing all of this so that characters are transferred using the serial communications functionality on an Arduino Nano board. To make things easier when communicating, a MCP23S17 SPI IO-expander (see [Githup Repository](https://github.com/MajenkoLibraries/MCP23S17) for the library needed) is used as the interface between the two computer and the Nano.
Via the Arduino Nano we can communicate with the computer, the one you'¨ve just built, by using your favourite terminal emulator program such as PuTTy, SecureCRT or similar over the serial interface provided by the Nano. The Nano will of course need some software running on it, you'll find that in the form of an Arduino sketch called "[PIA Communicator](https://github.com/tebl/RC6502/tree/master/RC6502%20Serial%20IO/pia_communicator)". This is a rather basic version of that is intended to get you started with something that is easy to understand, thanks however to the wonders of the Internet and collaborative forces of Github you can find a much improved version of it on [https://github.com/jblang/pia_communicator](https://github.com/jblang/pia_communicator).
The RC6502 computer, more specifically this module or the one integrated into the (SBC)[https://github.com/tebl/RC6502-Apple-1-Replica/tree/master/RC6502%20Apple%201%20SBC] version of it has an IC called a PIA (Peripheral Interface Adapter) on it. The PIA has two ports and when Wozniak his original Apple 1, he dedicated one port to video output and the other to keyboard input - both of those functions we've replaced with our Nano, but to keep things original we've kept the actual PIA to keep things authentic. A 40-pin headers in addition to a couple of pull-up resistors have been added to the board so that one or both of these can be later replaced with actual hardware.
You have several options for which particular type of PIA to use, there is the MC6820, MC6821 as well as the newer W65c21 that are available. The ones I've had most luck with, and to me feels the most authentic has to be the MC6821 by Motorola - a slightly newer design than the original MC6820, but it's more abundantly available for purchase while still featured in most older computer design books so that is the one I prefer to use.
The serial module works by replacing all of this so that characters are transferred using the serial communications functionality on an Arduino Nano board. To make things easier when communicating with parallell devices using a Nano, I've added an IO-expander in the form of the SPI-based MCP23S17 (see [Githup Repository](https://github.com/MajenkoLibraries/MCP23S17) for the library needed).
![Wired up](https://github.com/tebl/RC6502/raw/master/RC6502%20Serial%20IO/gallery/2017-06-02%2019.50.00.jpg)
@ -18,12 +24,13 @@ point for ordering PCBs, the schematic is also available in
| U1 | 74LS04 | 1 |
| U2 | MC6821 PIA | 1 |
| U3 | 74LS138 | 1 |
| C1-C3 | Capacitor, 100nF | 3 |
| C4 | Capacitor, 10nF | 1 |
| R1-R3 | Resistor, 10K (R2-R3 optional) | 1 (2) |
| C1-C3 | 100nF ceramic capacitor | 3 |
| C4 | 10nF ceramic capacitor | 1 |
| R1-R5 | Resistor, 10K (R1,R4 optional) | 3 (2) |
| J1 | 1x39 right angle pin header, male | 1 |
| J2 | Arduino pin headers, 1x15 pin header | 2 |
| J3 | 1x5 right angle pin header, male | (1) |
| J4 | 2x20 pin header, male | (1) |
| JP1 | 1x2 right angle pin header, male | 1 |
| SW1 | PCB momentary push button | 1 |
| Nano | Arduino Nano with data cable | 1 |