tirsdag 8. august 2017

RC6502 Apple 1 Replica SBC

Dette er et innlegg relatert til RC6502, mitt forsøk på å bygge en fungerende replika av den første Apple maskinen som ble laget. Det som trengs av tegninger og programvare for bruk av maskinvaren er lagt ut på https://github.com/tebl/RC6502.

RC6502 State of art

Mine opprinnelige mål med RC6502-maskinen min var å lage en maskin som var i stand til å fungere tilsvarende som en av de opprinnelige Apple 1 datamaskinene, eller i det minste så langt som det er praktisk å gjøre dette i dag (få av oss arbeider frivillig med en CRT-monitor, så denne biten er erstattet av en Arduino Nano som trer inn i rollen som tastatur og skjerm sett fra datamaskinens side).

Alt gikk selvsagt ikke på skinner, slik som man kan lese ut av gjennomgangen i innlegget Montering og feilsøking - konklusjonen for eventuelle lesere som aldri nådde frem til konklusjonen, var at maskinen fungerer uten endringer i maskinvaren. 

Mål oppnådd!

Hva gjør man når har oppnådd målene sine innenfor IT-sektoren? Det... Det skal jeg fortelle deg så snart jeg har luktet på muligheten til å i det hele tatt komme i nærheten. Historisk sett ut fra tidsalderen maskinen stammer fra så var svaret å lage dem enda mindre.

Challenge accepted!

RC6502 Apple 1 Replica SBC

Det neste logiske skrittet var vel egentlig det de fleste egentlig starter med, det vil si å lage en versjon av maskinen der alt av funksjonalitet er lagt ut på en enkel PCB. Disse versjonene er gjerne de som senere blir lagt ut for salg og blir da referert til som en Single Board Computer - SBC. Disse blir langt mer kompakte enn maskinen jeg så langt har bygd - borte er behovet for en backplane samt at eventuell logikk som tidligere var gjengitt på flere av kortene nå er begrenset til det minimale.

Den komplette tegningen over hvordan alle komponentene henger sammen, essensielt sett alle modulene komprimert ned til en enkel sammenhengende skisse uten overlapp, er gjengitt nedenfor. Det er relativt mye som foregår her, men mye må kunne sies om å det å se en komplett fungerende datamaskin på en enkelt A3-side.

(Last ned i PDF-format)

Det eneste som er nytt her er fire hull lagt inn for å sette inn "føtter" for maskinen, den andre er at det er lagt inn en 3.3K resistor fra CPU pin 36 til +5v. Kan ikke se at dette gjorde noen forskjell på maskinens funksjon, men det er dette som ser ut til å være anbefalt ved bruk av 65c02 prosessorer fra Western Design - ikke det at jeg har fått disse til å fungere så langt, men det får være en sak for mitt fremtidige jeg. Kortet fungerer med de langt billigere og langt mer tidsriktige versjonene av 6502-prosessoren, så er fornøyd så langt.

Slet kraftig med å få alt inn på en PCB med størrelse under 10 ganger 10 centimeter i og med at dette er nåværende grenser for å få produsert en PCB innenfor grensene til lommeboken min (konstant for lite penger, og alltid altfor lite tid til å bruke alt jeg likevel kjøper). Endte opp med å måtte gjemme en del av resistorene under pluggene for å koble til Arduino Nano-en. Resultatet kan du se nedenfor, og til tross for at noen med mer erfaring utvilsomt ville klart det langt bedre så er resultatet overraskende bra.


Man ser her også skruene for de allerede nevnte føttene, har her brukt hex-avstandsskruer tilsvarende de man gjerne vil bruke mellom pc-kabinett og hovedkort. Nederst er det også inkludert tilkoblingsmuligheter slik at man kan bruke SBC-modulen sammen med en eventuell backplane for bruk av andre tilleggs-moduler - her kan man selvsagt også bruke en 40 pins sokkel kuttet ned til 39 for bruk av en enkelt modul uten behov for backplane. Muligheter så langt øyet ser...

I og med at jeg først startet med å bygge slike maskiner for å lære om hvordan disse fungerer så tenkte jeg at det var på sin plass å bruke baksiden av kortet til noe fornuftig, derfor har jeg nærmest skrevet inn dokumentasjonen på selve kortet. På den måten skal det ikke være nødvendig å bla så veldig mye i notatene, de mest brukte kommandoene finner man ved å snu på kortet! Praktisk.


Den nevnte resistoren som ble lagt med i diagrammet kom selvsagt ikke inn i PCB-en, men den ble slengt inn på baksiden istedenfor.

SBC-versjonen av maskinen fungerer, så da har man gjort det også! Har fortsatt en håndfull av dem liggende, så dersom andre ønsker å bygge sin egen versjon av maskinen så er det gode muligheter for det. Muligens i bytte mot en Amiga 500, men den delen forblir nok bare en gammel teknologs drøm så får heller bare avslutte med et action-foto av maskinen i bruk!


8 kommentarer:

  1. Hello friend! I love the work you've done here and I'm trying to build the RC6502 SBC, but I've had to luck. I've tried both the Revision B board, and the Revision F board, but neither work. I would love to correspond with you to get it working, but I have no contact info for you. Thanks!

    SvarSlett
  2. I have mine working. A few observations: I believe it was not working because I was mixing LS chips with HCT chips. When I added a 74hct00n, 74hct04n, and 74hct138n it worked. Also I first tried it with an R6502 CPU, and that did not work. It is working now with an SY6502. Thanks!

    SvarSlett
  3. Some clues as to why other 6502's maynot work (pins 1,3,37,38)

    http://www.westerndesigncenter.com/wdc/AN-002_W65C02S_Replacements.cfm?fbclid=IwAR2vck7wad2wCMHNNxVWXxILflfeCzQkimGfupMCTuPetB3MKwwtvA_xg5U

    SvarSlett
  4. Hello Svar, I have the rev H motherboard, LS00, LS04 and LS138 and a Rockwell 6502. Also had difficulty downloading the MCP23S17 files and libraries. Which 6502 did you use, LS chips matter and where to find the MCP23S17 files?

    Do you have a link?

    Do you type in the Serial Monitor of the Arduino IDE to communicate with the SBC? Any new or other sketch you are using?

    I get the Apple I header message and then nothing works or responds!

    Thank you kindly,



    Ian

    SvarSlett
    Svar
    1. Ian: Late reply. Use the serial monitor from the ARDUINO IDE or picocom, minicom, etc. to talk to the REPLICA-1. Read the APPLE 1 manual (several sources available) that describe how to use the simple WOZMON. Upon RESET, the REPLICA 1 will emit a "\" and a line feed. "aaaa.bbbb" will display memory from 0xaaaa to 0xbbbb. "aaaa:bb cc dd ee ff [,etc]" will enter bb, cc, dd, ee, ff to memory starting at 0xaaaa. "aaaaR" will run the program at 0xaaaa.

      Slett
  5. Hello: Nice design. Thanks for the effort. Some things I changed; I removed X1, U6, R2, R3 and C10 and replaced the CPU clock and RESET functions with the ARDUINO NANO using D6 (RST SW input), D7 (CPU RST) and D9 (OC0A for CPU CLK). I comprehend that the design was meant to also be used with a backplane (without NANO as a terminal) and other support boards but I will never use it in that manner. I modified the ARDUINO code (pia.c @version 2 w/ direct SPI to MCP23S17 and thanks for using GCC and MAKEFILEs) to add these functions and lowered baud rate to 57.6k as 115.2kb was too high creating lost characters. Being that I plan to use a 28C256 [32KB] (or 27C128 [16KB]) instead of a 28C64 [8KB], I changed U5 ('HC08) to an 'HC20 (4-inp NAND) and used two of the unused U7 'HC04 inverters to create a CS_ROM (via 'HC138) for 0x8000-0x9FFF and 0xE000-0xFFFF and brought out a 0xC000 chip-select to the edge connector. To support 28C256 and 27C128, I modified jumpers "A13" and "A14".

    Using the ARDUINO as a CPU clock source allows one to increase (over-clock) or decrease (under-clock) the CPU clock rate. I've tested several of my 6502's up to 4 MHZ and even the 1MHz 6821 seems to function at that clock speed. What I am impressed about is how speedy the 6502 is even running with a *5 KHZ* clock (200 times slower).

    Peace and blessings,
    JQ

    SvarSlett
  6. Greetings. Where is the BOM for the SBC version to be found? I must be overlooking the obvious.. but cannot find it either here or on GitHub. Thanks!

    SvarSlett
  7. Greetings from Down Under.
    Just built the SBC today, worked first go very happy. Now on to the Cosmac ELF.
    Thanks for sharing.

    SvarSlett