Cov txheej txheem:

6502 Tsawg Lub Computer (nrog Arduino MEGA) Ntu 3: 7 Cov Kauj Ruam
6502 Tsawg Lub Computer (nrog Arduino MEGA) Ntu 3: 7 Cov Kauj Ruam

Video: 6502 Tsawg Lub Computer (nrog Arduino MEGA) Ntu 3: 7 Cov Kauj Ruam

Video: 6502 Tsawg Lub Computer (nrog Arduino MEGA) Ntu 3: 7 Cov Kauj Ruam
Video: История CPU: MOS 6502 2024, Hlis ntuj nqeg
Anonim
6502 Tsawg Lub Computer (nrog Arduino MEGA) Ntu 3
6502 Tsawg Lub Computer (nrog Arduino MEGA) Ntu 3

Tsiv mus ntxiv ntxiv, tam sim no kuv tau ntxiv Octal Latch, 8 lub kaum sab xis LEDs thiab 220 Ohm resistor array rau pawg thawj coj. Kuj tseem muaj jumper nruab nrab ntawm cov kab sib txuas tus pin thiab hauv av, kom cov LED tuaj yeem tua tau. Lub 74HC00 NAND lub rooj vag tau hloov nrog 78LS08 THIAB lub qhov rooj, txoj hlua txuas mus rau lub qhov rooj kuj tseem tau hloov pauv. Lub qhov rooj THIAB txhais tau tias 6522 tam sim no nyob ntawm $ 6000 es tsis yog $ E000.

Kuj tseem muaj tus pin rau kev sib txuas ntawm lub moos sab nraud los tsav 6502. Nrog rau qhov kev sib txuas no, tsis tas yuav muaj MEGA los muab lub moos teeb liab. MEGA tseem saib xyuas qhov ua mus nrog tus txheej txheem ua ntej.

Kuv siv 20 tus pin 74HC373 rau lub latch vim tias kuv muaj qee yam. Qhov no tsis ua li cas thaum nyob rau ntawm lub khob cij, tab sis 74HC573 yog lub tsheb npav sib xws thiab yuav tau khaws cov khoom thaiv. UCN5801A uas yog 22 tus pin IC kuj tseem yuav raug txiav txim siab hauv Circuit Court, tab sis cov xov hlau yuav txawv me ntsis.

Sab saum toj, ib leeg txiv kab ntxwv LED yog lub zog ntsuas thiab sab qis dua liab ib qho qhia thaum sau ntawv. Qhov tom kawg yuav tsis tseem ceeb yog tias pawg thawj coj saib xyuas tau nrawm dua.

Cov hloov pauv hloov pauv yog siab dua (nrog 74HC573).

Kauj Ruam 1: Cov Qauv Qhia Tawm

Cov Qauv Qhia Tawm
Cov Qauv Qhia Tawm

Ob qhov kev qhia ua piv txwv yooj yim tau suav nrog hauv 6502 tus saib xyuas thiab lawv cov lej sib cais yog nyob ntawm no.

Txoj haujlwm no thauj 1 mus rau 6502 A rau npe thiab khaws nws hauv lub latch. Tom qab ntawv nws ntxiv 1 rau A npe thiab khaws cov khoom hauv lub latch. Tom qab ntawd nws dhia rov qab rau $ 1005 thiab cov txheej txheem rov ua dua ib txwm.

* = 1000

1000 A9 01 LDA #$ 01 1002 8D 00 41 STA $ 4100 1005 69 01 ADC #$ 01 1007 8D 00 41 STA $ 4100 100A 4C 05 10 JMP $ 1005 100D. END

Txoj haujlwm no ua ntej teeb tsa DDR ntawm 6522 chaw nres nkoj B rau qhov tso tawm. Tom qab ntawd nws khaws $ 55 (B01010101) hauv qhov chaw nres nkoj nrog rau lub latch. Daim ntawv sau npe A tig 1 kauj ruam txoj cai thiab tam sim no tuav $ AA (B10101010). Qhov no tau rov khaws dua hauv chaw nres nkoj B thiab lub latch. Txoj haujlwm dhia mus rau $ 1005 thiab txuas ntxiv mus tas li.

* = 1000

1000 A9 FF LDA #$ FF 1002 8D 02 60 STA $ 6002 1005 A9 55 LDA #$ 55 1007 38 SEC 1008 8D 00 60 STA $ 6000 100B 8D 00 41 STA $ 4100 100E 6A ROR A 100F 8D 00 60 STA $ 6000 1012 8D 00 41 STA $ 4100 1015 4C 05 10 JMP $ 1005 1018. END

Lub ntsej muag ntse ntawm koj yuav pom tias cov xim LEDs tau qhia tus qauv sib txawv dua li cov xim ntsuab. Qhov no yog vim tias cov hmoov txhuas feem ntau txuas nrog 5v ntawm cov xim dawb thiab ib qho ntawm cov ntsuab yog txuas nrog hauv av.

Hloov kab kab ntawv no rau program2 lossis program3.

setDataPins (program3 [offset]);

6502 Tus Neeg Sib Sau thiab Disassembler yog cov cuab yeej muaj txiaj ntsig los pab txheeb xyuas koj cov haujlwm.

Kauj ruam 2: Ntxiv EEPROM

Ntxiv EEPROM
Ntxiv EEPROM
Ntxiv EEPROM
Ntxiv EEPROM
Ntxiv EEPROM
Ntxiv EEPROM

Txog EEPROM pawg thawj coj saib, kuv siv 950 x 650 mm strip board thiab 19mm txiv neej header pins kom pab pawg tswj hwm kom tshem tawm ib qho hauv qab. Pawg thawj coj no txuas rau 6502 pawg thawj coj hauv qab no. EEPROM yog ATMEL 28C256 uas muaj 28 tus pin thiab muaj 32k x 8 khoom nco. Qhov no ntau dua qhov tsim nyog rau cov phiaj xwm me uas tau siv tam sim no.

Kuv tsis tau ua daim duab kos rau lub rooj tsav xwm no, tab sis nws ncaj ncaj rau pem hauv ntej yuav ua li cas nws txuas rau 6502 pawg thawj coj hauv qab no. Cov EEPROM chips no tsis yog tsheb npav zoo li yuav tsum tau txuas rau tus kheej tus pin, yog li txhua qhov "ntsuab thiab dawb spaghetti". Kuv tau daws qhov teeb meem txuas rau ntawm pawg thawj coj ua ntej los ntawm xaim cov kab ntawv cov ntaub ntawv ua ke nyob rau hauv qab ntawm pawg thawj coj saib.

EEPROM qhov chaw nyob 14 tus pin txuas rau tus pin tsim nyog ntawm sab laug tes (xov hlau ntsuab) thiab I/O tus pin rau cov ntaub ntawv xov ntawm sab xis (xov hlau dawb). Tus pin 27 (WE) txuas nrog tus pin 28 (5v), tus pin 22 (OE) txuas nrog hauv av thiab tus pin 20 (CE) txuas nrog NAND rooj vag. Qhov 2 qhov nkag ntawm NAND rooj vag txuas nrog A15 ntawm pawg thawj coj loj. Qhov no txhais tau tias thaum tus lej no nce siab, NAND rooj vag muab lub teeb liab qis rau CE tus pin ntawm EEPROM uas ua rau nws nquag. Nrog teeb tsa no nws txhais tau tias EEPROM tuaj yeem nyeem tau los ntawm 6502 xwb.

Raws li EEPROM nyob rau sab saum toj 32k ntawm daim npav nco, nws txhais tau tias $ FFFC thiab $ FFFD tuaj yeem tuav qhov chaw nyob pib rau 6502 tom qab nws tau rov pib dua. Nrog 6522 muaj nws qhov chaw nyob nruab nrab ntawm $ 6000 thiab $ 600F thiab lub latch nyob ntawm $ 4100, nws nres ib qho kev tsis sib haum xeeb.

NMI vector ($ FFFA thiab $ FFFB) thiab BRK / IRQ vector ($ FFFE anf $ FFFF) kuj tseem tuaj yeem sau tib yam nkaus.

Kauj Ruam 3: Programming EEPROM

Programming lub EEPROM
Programming lub EEPROM
Programming lub EEPROM
Programming lub EEPROM

Txhawm rau khaws ib qhov program ntawm EEPROM, nws xav tau tus programmer. Kuv tau ua ib qho los ntawm kab txaij, Arduino Pro Mini, ob peb ntawm 74HC595's thiab ZIF qhov (socket). Keeb kwm, tus programmer tau tsim rau AT28C16 uas muaj kab lus tsawg dua li AT28C256 yog li yuav tsum tau hloov kho.

Daim duab hluav taws xob qhia pom yuav ua li cas xaim ob qho ntawm EEPROMs no. Nws tsis meej los ntawm daim duab uas ob daim 595 tau ntxeev thiab tsis zoo li qhia hauv daim duab. Pins 1 txog 7 ntawm 595/1 kab nrog A1 txog A7 ntawm EEPROM tsis hais qhov twg yog siv. Qhov no txuag 7 txuas cov xov hlau. Lub rooj tsavxwm tam sim no zoo me ntsis thiab qhov no yog vim thaum xub thawj kuv tau siv 24 tus pin DIL qhov ntsaws uas tam sim no tau hloov los ntawm qhov loj dua 28 tus pin ZIF qhov (socket).

Ib txoj haujlwm tau suav nrog uas ua haujlwm nrog kuv lub rooj tsavxwm. Qhov kev zov me nyuam yuav ua haujlwm nrog ib qho Arduino thiab 595s hauv ib kab lus raws li qhia. Kuv xaiv 5v Pro Mini vim tias nws yog qhov me me thiab pheej yig txaus tawm hauv qhov teeb tsa.

Kauj Ruam 4: Txoj Haujlwm EEPROM

EEPROM Cov Kev Kawm
EEPROM Cov Kev Kawm

Muaj peb txoj haujlwm yooj yim hauv EEPROM programmer. Txhawm rau siv lawv, tsuas yog tsis ua raws kab uas koj xav siv.

// Nyeem los ntawm chaw nres nkoj A ntawm 6522

// const byte cov ntaub ntawv = {0xA9, 0x00, 0x8D, 0x03, 0x60, 0xAD, 0x01, 0x60, 0x4C, 0x05, 0x90, 0x00};

Qhov kev zov me nyuam qhia pom lub cim xeeb pov tseg thaum nws ua tiav. Ib feem ntawm txoj haujlwm hauv qab no ua rau koj tswj hwm txhua yam koj xav sau lossis tshem tawm, teeb tsa $ FFFC & $ FFFD thiab tom qab ntawd nthuav qhia cov ntsiab lus ntawm qhov muab ntau yam. Tsuas yog tsis pom zoo lossis hloov pauv qhov ntsuas raws li koj xav tau. Cov chaw nyob kuj tuaj yeem nkag rau hauv hom ntawv zauv.

// lwv EEEPROM (422, 930, 0x41); // Siv los lwv tag nrho lossis ib feem ntawm EEPROM - pib, kawg, byte

Serial.println ("Programming EEPROM"); tus nqi = program_numeric_data (0x1000); writeEEPROM (0x7ffc, 0x00); // Teeb $ FFFC rau 6502 sauEEPROM (0x7ffd, 0x90); // Teeb tsa $ FFFD rau 6502 // writeEEPROM (0x1000, 0xA9); // Sau 1 byte ntawm cov ntaub ntawv Serial.println ("ua tiav"); Txoj hlua kab lus = "Sau" + (Txoj hlua) tus nqi + "bytes"; Serial.println (tus qauv); Serial.println ("Nyeem EEPROM"); printContents (0x0000, 0x112f); cov. // Teeb tsa kom pom cov ntawv printContents (0x7ff0, 0x7fff); // Nyeem kawg 16 bytes ntawm EEPROM

Ib qho luv luv tso tawm los ntawm qhov program yog saum toj no.

Kauj Ruam 5: Khiav 6502 Los ntawm EEPROM

Khiav 6502 Los ntawm EEPROM
Khiav 6502 Los ntawm EEPROM
Khiav 6502 Los ntawm EEPROM
Khiav 6502 Los ntawm EEPROM
Khiav 6502 Los ntawm EEPROM
Khiav 6502 Los ntawm EEPROM

Cov phiaj xwm EEPROM tam sim no tuaj yeem tso rau hauv nws lub rooj tsavxwm thiab cov npua no rov qab rau ntawm lub rooj tsavxwm loj 6502 uas npua rov qab rau MEGA. Sab thiab sab saum toj saib cov duab saum toj no qhia tias nws txhua yam haum ua ke.

Tam sim no 6502 tuaj yeem nyeem qhov pib pib ntawm $ FFFC thiab $ FFFD (uas yog $ 9000) thiab tom qab ntawd dhia mus rau qhov haujlwm uas tau khaws cia rau ntawd. MEGA tseem tab tom muab lub moos teeb liab thiab nws txoj haujlwm yuav tsum tau hloov pauv kom muab lub teeb liab lub moos thiab saib xyuas 6502. Ib qho kev hloov kho tau muab los ua qhov no.

Tus yees duab khiav qhia qhov haujlwm no ua haujlwm.

9000 LDA #$ 00 A9 00

9002 STA $ 6003 8D 03 60 9005 LDA #$ FF A9 FF 9007 STA $ 6002 8D 02 60 900A LDA $ 6001 AD 01 60 900D STA $ 6000 8D 00 60 9010 EOR #$ FF 49 FF 9012 STA $ 4100 8D 00 41 9015 JMP $ 900A 4C 0A 90

Cov hloov pauv tau ntsaws rau hauv chaw nres nkoj A thiab qhov kev zov me nyuam qhia tus nqi nws tau nyeem ntawm chaw nres nkoj B thiab 74HC373 (uas tsis pom nyob rau tam sim no). cov hloov pauv tau txuas rau hauv av thiab LEDs txuas nrog 5v. EOR #$ FF kho qhov teeb meem ntawm lub latch thiab chaw nres nkoj B tso tawm cov qauv sib txawv los ntawm kev tig cov khoom ua ntej sau rau lub latch.

Kauj Ruam 6: Lub Sijhawm Sab Nraud

Lub Sijhawm Sab Nraud
Lub Sijhawm Sab Nraud

Yog tias lub moos teeb liab tau siv rau tus pin ntawm sab saum toj ntawm lub rooj tsavxwm, 6502 tam sim no tuaj yeem ua haujlwm ywj pheej ntawm MEGA. Tau kawg nws kuj xav tau lub zog siv. Kuv tau sim nrog lub moos sib txawv thiab txawm tias ua haujlwm 6502 ntawm 1MHz nrog cov siv lead ua oscillator. MEGA tsis tuaj yeem ceev nrawm dua, yog li yuav tsum tau muab tshem tawm.

Kuv kuj tau sim qhov tso tawm los ntawm 555 lub sijhawm tab sis qhov ntawd tsis ua haujlwm. Kuv xav tias nws yuav yog vim nws tsis yog plaub fab xwm fab xwm meem? Thaum txuas nrog ib qho ntawm CD4017 cov lus tso tawm, nws tau tsav lub 6502. Kuv tau patched rau hauv ib qho ntawm cov khoom siv saum toj no los sim thiab tau txais lub moos teeb liab.

Kuv tseem tab tom saib txoj hauv kev sib txawv kom tau txais lub moos teeb liab.

Kauj Ruam 7: Xaus

Kuv tau qhia yuav ua li cas tsim qee txoj kab hluav taws xob nyuaj thiab ua kom yooj yim heev "khoos phis tawj" los ua haujlwm nrog qhov tsawg kawg nkaus. Pom zoo, lub khoos phis tawj tsis tuaj yeem ua haujlwm zoo tam sim no lossis zoo li yuav ua tau yav tom ntej.

Rov qab thaum ntxov 80's, nrog kuv VIC20, Kuv tau xav tsis thoob ntawm lub tshuab txaus thiab tsis muaj thawj lub tswv yim ntawm yuav pib tso ib qho ua ke li cas. Lub sijhawm tau hloov mus thiab yog li muaj thev naus laus zis, tab sis nws tseem yog qhov zoo kom rov qab mus rau qhov pib thiab txaus siab rau qee yam uas koj tau tsim los ntawm kos.

Txhawm rau txhim kho lub khoos phis tawj no ntxiv, kuv npaj siab yuav tso 2k ntawm SRAM ntawm $ 0000 txog $ 2047 thiab ntxiv 1 MHz oscillator. Tej zaum yuav ntxiv qee yam xws li CD4040 (12-Theem Binary Ripple Counter / Divider) kom kuv tuaj yeem coj mus rau hauv lub moos sib txawv.

Tej zaum tseem yuav ntxiv LCD zaub los muab cov ntawv sau tawm ntau dua li tsuas yog teeb lub teeb. EEPROM tus khoos kas tseem yuav tsum tau hloov kho los daws cov haujlwm loj dua uas xav tau los ua lub LCD saib.

Txawm hais tias MEGA tau dhau los ua qhov tsis tseem ceeb rau kev ua haujlwm ntawm 6502, nws tseem muaj txiaj ntsig zoo rau kev debugging lub tshuab code. Raws li leej twg paub, tshuab chaws ib txwm muaj kab!

Pom zoo: