Talaan ng mga Nilalaman:
2025 May -akda: John Day | [email protected]. Huling binago: 2025-01-13 06:58
Kasunod sa dati kong Instructable, inilagay ko na ang 6502 sa isang strip board at nagdagdag ng 6522 Versatile Interface Adapter (VIA). Muli, gumagamit ako ng isang bersyon ng WDC ng 6522, dahil ito ay isang perpektong tugma para sa kanilang 6502. Hindi lamang ang mga bagong chips na ito ay gumagamit ng mas kaunting lakas kaysa sa orihinal na mga bersyon ng MOS, ngunit maaari silang patakbuhin sa mas mabagal na bilis o kahit na humakbang isang programa nang walang anumang problema.
Ang programa ng Arduino ay orihinal na isinulat ni Ben Eater (na maraming mga video sa YouTube) at binago ko upang makamit ang resulta na ito.
Mga gamit
1 x WDC W65C02 Processor
1 x WDC W65C22 Maramihang Interface Adapter
1 x 74HC00N IC (Quad 2-input NAND gate) o katulad
1 x 10cm ang lapad (35 linya) Strip board
2 x 40 pin na socket ng DIL
1 x 14 pin na socket ng DIL
PCB Header Pins 2.54mm
PCB Header Sockets 2.54mm
1 x 12mm Momentary Tactile Push Button Switch PCB Mounted SPST o katulad
1 x 1K risistor
1 x 3K3 risistor
2 x 0.1 uF ceramic capacitors
1 x 8 Way Water Light Marquee 5mm red LED
Iba't ibang kulay na kawad para sa mga koneksyon
8 lalaki - mga wire ng lalaking link
Hakbang 1: Ang Circuit Board
Ang circuit board ay medyo compact at ang underside plugs direkta sa Arduino MEGA. Upang makamit ito, ang mga pin ay itinulak hangga't maaari sa mga may hawak ng plastik bago na-solder sa ilalim ng board. Maaaring magamit ang mga mas mahahabang pin para dito, ngunit ang karaniwang mga pin ay nangangahulugang ang board ay matatag na nakasalalay sa tuktok ng MEGA.
Nakapila ko ang mga 6502 at 6522 IC upang magamit nila ang mga strip board track upang kumonekta sa MEGA. Mayroon ding ilang mga koneksyon para sa 6502 na nakatago sa ilalim ng IC. Kapag ginagawa ang board, ang unang bagay na dapat gawin ay i-cut ang 16 strips na magkonekta sa dobleng hilera ng mga socket ng Arduino. Ang panlabas na 2 ay hindi kailangang putulin dahil ang 5v at Gnd ay nasa magkabilang panig. Susunod na panghinang sa 2 mga hilera ng 18 mga pin sa ilalim, at ang 2 mga hanay ng 18 mga socket sa tuktok na bahagi.
Pagkatapos nito ang mga socket ng DIL ay na-solder sa lugar at pinutol ang mga track sa pagitan nila. Maaari kong mai-save ang isang koneksyon sa pamamagitan ng paglalagay ng pin 14 ng 74HC00 sa parehong track bilang 5v. Pinutol ko lang ang mga track kapag natitiyak kong kailangan nila ito habang hinihinang ko ang mga wires na nagkokonekta. Gayunpaman, ang mga bagay ay hindi palaging pupunta sa plano, orihinal kong dinisenyo ang strip board mula sa nakaraang tinapay board na gumagamit ng mga pin 2, 3 at 7 ng Arduino, ngunit hindi ito nakahanay sa mga butas sa strip board, kaya kailangang gamitin pin 18, 31 at 37. Samakatuwid ang mga link sa aking board sa 31 at 37. Maaari kang magtaka kung bakit hindi ko ginamit ang isa sa mga hindi nagamit na pin (23, 24 atbp) para sa orasan, ito ay dahil hindi nila sinusuportahan nakakagambala, kaya kailangang gumamit ng pin 18, 19, 20 o 21 na gagawin. Sa kasamaang palad ang 4 na mga pin na ito ay nakahanay kasama ang mga butas sa strip board at panatilihing compact ang lahat. Ang Pin 18 ay pinakamalayo rin sa lahat ng iba pang mga wire.
Maaari mo ring mapansin na ang aking natapos na board ay hindi eksaktong kapareho ng aking diagram. Ito ay sapagkat sumusunod ako sa diagram ng iba. Samakatuwid ang mga koneksyon sa 74HC00. Nagdagdag din ako ng isang power LED at isang labis na 2 mga hilera ng sockets para sa Gnd at 5v pati na rin ng ilang higit pang mga capacitor.
Maaari kong konektado ang 2 data sockets, ngunit nangangahulugang mas maraming mga wire ang tumatawid sa board. Pinili ko para sa 8 mga wire ng link upang gawin ito bilang isang pansamantalang hakbang.
Ang 6522 port A at B ay may mga socket na solder sa kanilang mga track upang ang mga LED marque ay madaling maipasok.
Mayroong mas maliliit na mga wire ngayon kaysa sa bersyon ng bread board.
Hakbang 2: Teoryang Programming
Ang 6522 ay may dalawang I / O port pati na rin maraming iba pang mga tampok, ngunit ang port A at B ay madaling ma-access. Upang mag-output ng data sa port, kailangang itakda ang Data Direction Register (DDR) nang naaayon at ang data na ipinadala sa port mismo.
Sa naka-set up sa itaas, ang 6522 ay matatagpuan sa $ E000.
Upang mag-output ng data sa port B, ang DDR sa $ E002 ay nakatakda sa $ FF (255 - lahat ng output) at ang data ay ipinadala sa $ E000.
Upang mag-output ng data sa port A, ang DDR sa $ E003 ay nakatakda sa $ FF (255 - lahat ng output) at ang data ay ipinadala sa $ E001.
Ang code sa ibaba ay naglo-load ng $ FF sa 6502 A register at isinulat ito sa DDR B sa $ E002. Naglo-load ito pagkatapos ng $ 55 at isinulat ito sa ORB. Ang code ay pinaikot (pagbibigay ng $ AA) at nakasulat sa ORB. Ang programa ay tumalon pabalik tp $ 1005 at nauulit na walang katapusan. TANDAAN: ang DDR ay kailangang ma-paisa lamang nang isang beses.
Address 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
Ang $ 55 sa binary ay 010101010 at ang $ AA ay 10101010 na sanhi ng mga LEDs na kahalili ng 4 sa, 4 na off.
Mabilis at maruming pag-aayos:
Palitan ang 74HC00 (Quad 2 input NAND Gate) ng isang 74HC08 (Quad 2 input AT Gate) at ang 6522 ay matatagpuan ngayon sa $ 6000 sa halip na $ E000. Inililipat nito ito mula sa itaas na 32K patungo sa mas mababang 32K ng naaalamang memorya ng 6502.
Hakbang 3: Ang Arduino Program at Output
Tulad ng ang 6502 ay walang RAM na mabasa mula sa, ang Arduino ay nagbibigay ng programa para mabasa ito. Kapag nakita ang isang pulso sa orasan sa pin 18, inilalagay ng Arduino ang data ng programa sa data bus (ang Arduino pin 39, 41, 43, 45, 47, 49, 51 at 53). Bumubuo ang 6502 ng sarili nitong mga address na sinusubaybayan lamang ng Arduino sa pantay na pin na 22 hanggang 52. Nagbibigay din ang Arduino ng pulso ng orasan sa pin 37. Ang linya ng R / W ng 6502 ay sinusubaybayan sa pin 31.
Tulad ng pagbibigay ng Arduino ng data, sa ngayon hindi posible na makuha ang 6502 sa pag-input ng data mula sa VIA (maliban kung alam mo ang mas mahusay).
Ang programa ng Arduino ay nasa ibaba at isang sample na output mula sa Serial Monitor ay nasa itaas.
Hakbang 4: Konklusyon
Muli ay sinubukan kong ipakita kung paano mag-set up ng isang minimal na "6502 Computer".
Sa yugtong ito ang 6502 ay umaasa pa rin sa Arduino upang ibigay ito sa isang programa at isang pulso sa orasan upang tumakbo ito.
Ito ay isang hakbang na mas malayo kaysa sa kung kailan ko ito itinakda sa bread board.
Hindi ko nagamit ang 74HC373 sa oras na ito ngunit ang mas kumplikadong 6522 upang madikit ang mga output ng data. Gayundin ang 6522 ay may dalawang I / O port.
Nilayon kong dalhin ang proyektong ito nang higit pa sa pamamagitan ng pag-install ng ilang SRAM o isang EEPROM.