Orodha ya maudhui:

Kompyuta ndogo ya 6502 (na Arduino MEGA) Sehemu ya 3: Hatua 7
Kompyuta ndogo ya 6502 (na Arduino MEGA) Sehemu ya 3: Hatua 7

Video: Kompyuta ndogo ya 6502 (na Arduino MEGA) Sehemu ya 3: Hatua 7

Video: Kompyuta ndogo ya 6502 (na Arduino MEGA) Sehemu ya 3: Hatua 7
Video: Гарри Льюис, тур по переводчику BASIC 2024, Novemba
Anonim
Kompyuta ndogo ya 6502 (na Arduino MEGA) Sehemu ya 3
Kompyuta ndogo ya 6502 (na Arduino MEGA) Sehemu ya 3

Kuendelea mbele zaidi, sasa nimeongeza Latch ya Octal, LEDs za mstatili 8 na safu ya kupinga ya 220 Ohm kwenye bodi kuu. Pia kuna jumper kati ya pini ya kawaida ya safu na ardhi, ili taa ziweze kuzimwa. Lango la NAND la 74HC00 limebadilishwa na 78LS08 NA lango, wiring kwa lango pia imebadilishwa. Lango na ina maana kwamba 6522 sasa iko $ 6000 badala ya $ E000.

Pia kuna pini ya unganisho la saa ya nje kuendesha 6502. Kwa unganisho huu, hakuna haja ya MEGA kutoa ishara ya saa. MEGA bado inafuatilia kinachoendelea na processor kama hapo awali.

Nilitumia pini 20 74HC373 kwa latch kwa sababu nilikuwa na zingine. Hii ilikuwa sawa wakati kwenye ubao wa mkate, lakini 74HC573 inaendana na basi na ingehifadhi wiring nyingi. UCN5801A ambayo ni pini 22 IC pia inaweza kuzingatiwa katika mzunguko, lakini wiring itakuwa tofauti kidogo.

LED ya juu, moja ya machungwa ni kiashiria cha nguvu na ile ya chini kushoto nyekundu inaonyesha wakati maandishi yanafanyika. Mwisho hautakuwa muhimu ikiwa bodi inaendeshwa kwa kasi kubwa.

Mzunguko uliobadilishwa uko juu (na 74HC573).

Hatua ya 1: Programu za Maonyesho

Programu za Maonyesho
Programu za Maonyesho

Programu mbili rahisi za maandamano zimejumuishwa katika mfuatiliaji wa 6502 na nambari yao iliyotengwa iko hapa.

Mpango huu unapakia 1 kwenye rejista ya 6502 na kuihifadhi kwenye latch. Halafu inaongeza 1 kwenye rejista A na inahifadhi kwenye latch. Kisha inaruka kurudi $ 1005 na mchakato unarudia milele.

* = 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

Mpango huu kwanza huweka DDR ya 6522 bandari B kwa pato. Halafu inahifadhi $ 55 (B01010101) katika bandari na vile vile latch. Rejista kisha inazunguka hatua 1 kulia na sasa inashikilia $ AA (B10101010). Hii imehifadhiwa tena katika bandari B na latch. Mpango huo unaruka hadi $ 1005 na unaendelea milele.

* = 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

Macho makali kati yako yanaweza kugundua kuwa LED za rangi zinaonyesha muundo tofauti na zile za kijani kibichi. Hii ni kwa sababu risasi ya kawaida imeunganishwa na 5v kwenye zile zenye rangi na ile ya kawaida kwenye ile ya kijani imeunganishwa ardhini.

Badilisha laini hii ya nambari iwe program2 au program3.

setDataPins (program3 [offset]);

Assembler na Disassembler ya 6502 ni zana muhimu kusaidia kusimba programu zako.

Hatua ya 2: Kuongeza EEPROM

Kuongeza EEPROM
Kuongeza EEPROM
Kuongeza EEPROM
Kuongeza EEPROM
Kuongeza EEPROM
Kuongeza EEPROM

Kwa bodi ya EEPROM, nilitumia bodi ya ukanda ya 950 x 650 mm na pini za kichwa cha kiume 19mm kuwezesha bodi kufuta moja chini. Bodi hii inaingia kwenye bodi 6502 hapa chini. EEPROM ni ATMEL 28C256 ambayo ina pini 28 na ina kumbukumbu 32k x 8. Hii ni ya kutosha kwa programu ndogo zinazotumiwa kwa sasa.

Sijafanya mchoro wa mzunguko wa bodi hii, lakini ni sawa sawa mbele jinsi inavyounganisha na bodi ya 6502 hapa chini. Chips hizi za EEPROM sio rafiki wa basi kwa hivyo lazima iwe na waya kwa pini za kibinafsi, kwa hivyo "spaghetti ya kijani na nyeupe" yote. Nimetatua suala la kuziba kwenye bodi ya mapema kwa kuunganisha laini za data pamoja chini ya ubao.

Pini za anwani 14 za EEPROM zinaunganisha na pini zinazofaa upande wa kushoto (waya za kijani) na pini za I / O kwenye pini za data upande wa kulia (waya mweupe). Pin 27 (WE) imeunganishwa na pin 28 (5v), pin 22 (OE) imeunganishwa ardhini na pin 20 (CE) imeunganishwa na lango la NAND. Pembejeo mbili za lango la NAND zimeunganishwa na A15 kwenye bodi kuu. Hii inamaanisha kuwa wakati pini hii inakwenda juu, lango la NAND hutoa ishara ya chini kwa pini ya CE ya EEPROM ambayo inafanya kazi. Pamoja na usanidi huu inamaanisha kuwa EEPROM inaweza kusomwa tu na 6502.

Kama EEPROM inakaa juu ya 32k kwenye ramani ya kumbukumbu, inamaanisha kuwa $ FFFC na $ FFFD zinaweza kushikilia anwani ya kuanza kwa 6502 baada ya kuwekwa upya. Pamoja na 6522 kuwa na anwani zake kati ya $ 6000 na $ 600F na latch iko $ 4100, inasimamisha mizozo yoyote ya kumbukumbu.

Vector ya NMI ($ FFFA na $ FFFB) na vekta ya BRK / IRQ ($ FFFE anf $ FFFF) pia inaweza kuandikwa kwa njia ile ile.

Hatua ya 3: Kupanga programu ya EEPROM

Kupanga programu ya EEPROM
Kupanga programu ya EEPROM
Kupanga programu ya EEPROM
Kupanga programu ya EEPROM

Ili kuhifadhi programu kwenye EEPROM, inahitaji programu. Nilitengeneza moja kutoka kwa bodi ya ukanda, Arduino Pro Mini, 744HC595's kadhaa na tundu la ZIF. Awali, programu ilitengenezwa kwa AT28C16 ambayo ina laini chache za anwani kuliko AT28C256 kwa hivyo ilibidi ibadilishwe.

Mchoro wa mzunguko unaonyesha jinsi ya kutumia waya hizi zote za EEPROM. Haijulikani kutoka kwenye picha kwamba chips mbili 595 zimeingizwa chini na sio kama inavyoonyeshwa kwenye mchoro. Pini ya 1 hadi ya 7 ya 595/1 inaambatana na A1 hadi A7 ya EEPROM bila kujali ambayo inatumika. Hii inaokoa waya 7 za kuunganisha. Bodi sasa inaonekana kuwa ngumu na hii ni kwa sababu mwanzoni nilitumia tundu 24 la DIL ambalo sasa limebadilishwa na tundu kubwa zaidi la pini 28 la ZIF.

Programu imejumuishwa ambayo inafanya kazi na bodi yangu. Programu hiyo itafanya kazi na Arduino yoyote na 595s katika mzunguko kama inavyoonyeshwa. Nilichagua 5v Pro Mini kwa sababu ni kompakt na bei rahisi ya kutosha kuondoka kwenye usanidi.

Hatua ya 4: Programu za EEPROM

Programu za EEPROM
Programu za EEPROM

Kuna programu tatu rahisi katika programu ya EEPROM. Ili kuzitumia, ondoa tu laini unayotaka kutumia.

// Soma kutoka bandari A ya 6522

// data ya byte = {0xA9, 0x00, 0x8D, 0x03, 0x60, 0xAD, 0x01, 0x60, 0x4C, 0x05, 0x90, 0x00};

Programu inaonyesha dampo la kumbukumbu wakati imemaliza. Sehemu ya programu hapa chini inakupa udhibiti kamili wa kile unataka kuandika au kufuta, huweka $ FFFC & $ FFFD na kisha kuonyesha yaliyomo kwenye anuwai iliyopewa. Ondoa tu au badilisha vigezo unavyohitaji. Anwani zinaweza pia kuingizwa katika muundo wa desimali.

// kufutaEEPROM (422, 930, 0x41); // Tumia kufuta nzima au sehemu ya EEPROM - anza, maliza, byte

Serial.println ("Programu ya EEPROM"); kiasi = program_numeric_data (0x1000); andikaEEPROM (0x7ffc, 0x00); // Weka $ FFFC kwa kuandika 6502EEPROM (0x7ffd, 0x90); // Weka $ FFFD kwa 6502 // writeEEPROM (0x1000, 0xA9); // Andika 1 ka ya data Serial.println ("imefanywa"); Muhtasari wa kamba = "Imeandikwa" + (Kamba) kiasi + "ka"; Serial.println (muhtasari); Serial.println ("Kusoma EEPROM"); magazetiContents (0x0000, 0x112f); // Weka masafa ili kuonyesha kuchapishwaContents (0x7ff0, 0x7fff); // Inasoma ka 16 za mwisho kwenye EEPROM

Pato lililofupishwa kutoka kwa programu hiyo hapo juu.

Hatua ya 5: Kuendesha 6502 Kutoka EEPROM

Kuendesha 6502 Kutoka EEPROM
Kuendesha 6502 Kutoka EEPROM
Kuendesha 6502 Kutoka EEPROM
Kuendesha 6502 Kutoka EEPROM
Kuendesha 6502 Kutoka EEPROM
Kuendesha 6502 Kutoka EEPROM

Programu iliyopangwa ya EEPROM sasa inaweza kuingizwa ndani ya bodi yake na piggy hii inaendelea kwa bodi kuu 6502 ambayo piggy inaunga mkono kwa MEGA. Picha za upande na mwonekano wa juu hapo juu zinaonyesha jinsi yote inafaa pamoja.

6502 sasa inaweza kusoma vector ya kuanza kutoka $ FFFC na $ FFFD (ambayo ni $ 9000) na kisha uruke kwenye programu iliyohifadhiwa hapo. MEGA bado inatoa ishara ya saa na programu yake inahitaji kubadilishwa ili kutoa tu ishara ya saa na kufuatilia 6502. Programu iliyobadilishwa hutolewa kufanya hivyo.

Picha inayoendesha inaonyesha programu hii inaendesha.

LDA 9000 # $ 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

Swichi zimefungwa kwenye bandari A na programu inaonyesha thamani inayosoma kwenye bandari B na 74HC373 (ambayo imefichwa kwa sasa). swichi zimeunganishwa na ardhi na LED zinaunganishwa na 5v. EOR # $ FF husahihisha shida ya latch na bandari B kuonyesha mifumo tofauti kwa kupindua bits kabla ya kuandika kwenye latch.

Hatua ya 6: Ishara ya Saa za Nje

Ishara ya Wakati wa Nje
Ishara ya Wakati wa Nje

Ikiwa ishara ya saa inatumiwa kwenye pini iliyo juu ya ubao, 6502 sasa inaweza kukimbia bila kutegemea MEGA. Kwa kweli pia inahitaji usambazaji wa umeme. Nimejaribu saa tofauti na hata kukimbia 6502 kwa 1MHz na oscillator ya kioo. MEGA haiwezi kuendelea na kasi zaidi, kwa hivyo inapaswa kuondolewa.

Nilijaribu pia pato kutoka kwa kipima muda cha 555 lakini hiyo haifanyi kazi. Nadhani inaweza kuwa kwa sababu sio wimbi la mraba? Wakati wa kushikamana na moja ya matokeo ya CD4017, iliendesha gari 6502. Nilipiga viraka kwenye moja ya vifaa hapo juu kujaribu kupata ishara ya saa.

Bado ninaangalia njia tofauti kupata ishara ya saa.

Hatua ya 7: Hitimisho

Nimeonyesha jinsi ya kujenga mizunguko ngumu na kupata "kompyuta" rahisi sana ya kufanya kazi na idadi ndogo ya sehemu. Kwa kweli, kompyuta haiwezi kufanya mengi kwa sasa au ina uwezekano wa kufanya hivyo baadaye.

Nyuma mapema miaka ya 80, na VIC20 yangu, nilikuwa nikishangaa kwa mashine ya kutisha na sikuwa na wazo la kwanza la jinsi ya kuanza kuiweka pamoja. Nyakati zimeendelea na teknolojia pia ina, lakini bado ni nzuri kurudi kwenye misingi na kujivunia kitu ambacho umejenga tangu mwanzo.

Ili kuendeleza kompyuta hii, ninakusudia kuweka 2k ya SRAM kwa $ 0000 hadi $ 2047 na kuongeza oscillator 1 MHz. Labda nitaongeza kitu kama CD4040 (12-Stage Binary Ripple Counter / dividerer) ili niweze kugonga kasi tofauti za saa.

Inaweza hata kuongeza onyesho la LCD ili kutoa matokeo ya maandishi badala ya taa tu. Programu ya EEPROM pia itahitaji kubadilishwa ili kukabiliana na programu kubwa zinazohitajika kuendesha onyesho la LCD.

Ingawa MEGA inakuwa ya lazima kwa uendeshaji wa 6502, bado inakuja kwa urahisi kwa utatuzi wa nambari ya mashine. Kama mtu yeyote anajua, nambari ya mashine huwa na mende kila wakati!

Ilipendekeza: