Sisällysluettelo:

6502 & 6522 Minimitietokone (Arduino MEGA: lla) Osa 2: 4 vaihetta
6502 & 6522 Minimitietokone (Arduino MEGA: lla) Osa 2: 4 vaihetta

Video: 6502 & 6522 Minimitietokone (Arduino MEGA: lla) Osa 2: 4 vaihetta

Video: 6502 & 6522 Minimitietokone (Arduino MEGA: lla) Osa 2: 4 vaihetta
Video: 6502 CPU: 6522 VIA output to LEDs 2024, Marraskuu
Anonim
6502 ja 6522 Minimitietokone (Arduino MEGA: n kanssa) Osa 2
6502 ja 6522 Minimitietokone (Arduino MEGA: n kanssa) Osa 2

Edellisen Instructable -ohjelmani jälkeen olen nyt laittanut 6502: n nauhalevylle ja lisännyt 6522 -monikäyttöisen sovittimen (VIA). Käytän jälleen WDC -versiota 6522: stä, koska se sopii täydellisesti heidän 6502: een. Nämä uudet sirut käyttävät paitsi paljon vähemmän virtaa kuin alkuperäiset MOS -versiot, mutta ne voidaan ajaa hitaammin tai jopa astua läpi ohjelma ilman ongelmia.

Arduino -ohjelman kirjoitti alunperin Ben Eater (jolla on paljon videoita YouTubessa), ja olen muokannut sitä tämän tuloksen saavuttamiseksi.

Tarvikkeet

1 x WDC W65C02 -prosessori

1 x monipuolinen WDC W65C22 -sovitin

1 x 74HC00N IC (Quad 2-tulon NAND-portti) tai vastaava

1 x 10 cm leveä (35 riviä) nauhalevy

2 x 40 -nastaista DIL -liitintä

1 x 14 -nastainen DIL -liitin

Piirilevyn otsikkotapit 2,54 mm

Piirikorttirasiat 2,54 mm

1 x 12 mm: n hetkellinen kosketuspainike, piirilevyasennettava SPST tai vastaava

1 x 1K vastus

1 x 3K3 vastus

2 x 0,1 uF keraamiset kondensaattorit

1 x 8 -tie Water Light Marquee 5mm punainen LED

Erivärinen johto liitäntöihin

8 uros - uros linkki johdot

Vaihe 1: Piirilevy

Piirilevy
Piirilevy
Piirilevy
Piirilevy

Piirilevy on melko kompakti ja alapuoli liitetään suoraan Arduino MEGA -laitteeseen. Tämän saavuttamiseksi tapit työnnetään mahdollisimman pitkälle muovipidikkeisiin ennen juottamista levyn alapuolelle. Tähän olisi voitu käyttää pidempiä tappeja, mutta vakiotapit tarkoittavat, että levy on tukevasti MEGA: n päällä.

Olen asettanut 6502- ja 6522 -IC: t niin, että ne käyttävät nauhalevyn raitoja MEGA -yhteyden muodostamiseen. 6502: een on myös joitain yhteyksiä piilotettuna IC: n alle. Levyä valmistettaessa ensimmäinen asia oli leikata 16 nauhaa, jotka yhdistyvät Arduinon kaksoisriviin. Ulompaa 2 ei tarvitse leikata, koska 5v ja Gnd ovat molemmin puolin. Seuraava juote 2 rivillä 18 nastaa alapuolella ja 2 riviä 18 pistorasiaa yläpuolella.

Tämän jälkeen DIL -pistorasiat juotettiin paikoilleen ja raot leikattiin niiden väliin. Olisin voinut tallentaa yhteyden asettamalla 74HC00: n nastan 14 samalle radalle kuin 5v. Leikkasin raidat vasta kun olin varma, että niiden täytyi olla, kun juotin liitosjohtoja. Asiat eivät kuitenkaan aina mene suunnitelmien mukaan, suunnittelin alunperin nauhalevyn edellisestä leipälaudasta Arduinon tapilla 2, 3 ja 7, mutta nämä eivät ole linjassa levyn reikien kanssa, joten piti käyttää nastat 18, 31 ja 37. Tästä syystä linkit taulullani 31 ja 37. Saatat ihmetellä, miksi en käyttänyt yhtä käyttämättömistä nastoista (23, 24 jne.) kelloon, koska ne eivät tue keskeyttää, joten joutui käyttämään tappia 18, 19, 20 tai 21. Onneksi nämä 4 nastaa ovat linjassa nauhalevyn reikien kanssa ja pitävät kaiken tiivistettynä. Nasta 18 on myös kauimpana kaikista muista johtimista.

Saatat myös huomata, että valmis paneelini ei ole täsmälleen sama kuin kaavioni. Tämä johtuu siitä, että seurasin jonkun toisen kaaviota. Siksi liitännät 74HC00: een. Olen myös lisännyt virran merkkivalon ja ylimääräiset 2 riviä pistorasioita Gnd- ja 5v -laitteille sekä pari kondensaattoria.

Olisin voinut yhdistää kaksi dataliitäntää, mutta tämä merkitsisi paljon enemmän johtoja levyn yli. Valitsin 8 linkkijohtoa tekemään tämän väliaikaisena toimenpiteenä.

6522 -portissa A ja B on pistorasiat juotettu raitoihinsa, jotta LED -merkkejä voidaan helposti asentaa.

Johtoja on nyt paljon vähemmän kuin leipälevyversiossa.

Vaihe 2: Ohjelmointiteoria

Ohjelmointiteoria
Ohjelmointiteoria

6522: ssä on kaksi I/O -porttia sekä monia muita ominaisuuksia, mutta portit A ja B ovat helposti käytettävissä. Tietojen lähettämiseksi portista Data Direction Register (DDR) on asetettava vastaavasti ja tiedot lähetettävä itse porttiin.

Edellä esitetyllä tavalla 6522 sijaitsee $ E000.

Jos haluat tulostaa tietoja portista B, DDR -arvoksi $ E002 on asetettu $ FF (255 - kaikki lähdöt) ja tiedot lähetetään $ E000: een.

Datan lähettämiseksi portista A DDR -arvoksi $ E003 on asetettu $ FF (255 - kaikki lähdöt) ja tiedot lähetetään $ E001.

Alla oleva koodi lataa $ FF 6502 A -rekisteriin ja kirjoittaa sen DDR B: hen hintaan $ E002. Sitten se lataa 55 dollaria ja kirjoittaa sen ORB: lle. Koodi kierretään (jolloin saadaan AA -arvo) ja kirjoitetaan ORB: lle. Ohjelma hyppää takaisin $ 1005 ja toistaa loputtomasti. HUOMAUTUS: DDR on alustettava vain kerran.

Osoite Hexdump Dissass Assembly

$ 1000 a9 ff LDA #$ ff $ 1002 8d 02 e0 STA $ e002 $ 1005 a9 55 LDA #$ 55 $ 1007 8d 00 e0 STA $ e000 $ 100a 6a ROR A $ 100b 8d 00 e0 STA $ e000 $ 100e 4c 05 10 JMP $ 1005

55 dollaria binäärissä on 010101010 ja AA on 10101010, minkä vuoksi LEDit vuorottelevat 4 päälle, 4 pois päältä.

Nopea ja likainen korjaus:

Korvaa 74HC00 (Quad 2 -tulon NAND -portti) 74HC08: lla (Quad 2 -tulo JA portti), ja 6522: n hinta on nyt 6000 dollaria E000 dollarin sijasta. Tämä siirtää sen 6502: n osoitemuistin ylemmästä 32K: sta alempaan 32K: een.

Vaihe 3: Arduino -ohjelma ja tulostus

Arduino -ohjelma ja tulostus
Arduino -ohjelma ja tulostus

Koska 6502: lla ei ole RAM -muistia lukemiseen, Arduino toimittaa ohjelman lukemista varten. Kun kellopulssi havaitaan nastassa 18, Arduino siirtää ohjelmatiedot dataväylälle (Arduino -nastat 39, 41, 43, 45, 47, 49, 51 ja 53). 6502 luo omat osoitteensa, joita vain Arduino valvoo parillisilla numeroilla 22-52. Arduino toimittaa myös kellopulssin nastassa 37. 6502: n R/W -linjaa valvotaan nastassa 31.

Koska Arduino toimittaa tiedot, toistaiseksi ei ole ollut mahdollista saada 6502 syöttämään tietoja VIA: sta (ellet tiedä paremmin).

Arduino -ohjelma on alla ja sarjamittarin näytteenotto on yllä.

Vaihe 4: Johtopäätös

Olen jälleen yrittänyt näyttää, kuinka perustaa minimaalinen "6502 -tietokone".

Tässä vaiheessa 6502 luottaa edelleen siihen, että Arduino toimittaa sille ohjelman ja kellopulssin, jotta se voi toimia.

Se on askel pidemmälle kuin silloin, kun asetin sen leipäpöydälle.

En ole tällä kertaa käyttänyt 74HC373: ta, mutta monimutkaisempaa 6522: tä datalähtöjen lukitsemiseen. Lisäksi 6522: ssä on kaksi I/O -porttia.

Aion viedä tätä projektia eteenpäin asentamalla jonkin SRAM- tai EEPROM -laitteen.

Suositeltava: