Orodha ya maudhui:

Kupitia Kompyuta ya Z80: Hatua 6
Kupitia Kompyuta ya Z80: Hatua 6

Video: Kupitia Kompyuta ya Z80: Hatua 6

Video: Kupitia Kompyuta ya Z80: Hatua 6
Video: ГРЕНДПА и Гренни В РЕАЛЬНОЙ ЖИЗНИ! Почему они перепутали мой дом? GRANDPA GRANNY Chapter Two 2024, Novemba
Anonim
Kupitia Kompyuta ya Z80
Kupitia Kompyuta ya Z80
Kupitia Kompyuta ya Z80
Kupitia Kompyuta ya Z80

Hapo awali, niliandika mwongozo wa jinsi ya kujenga kompyuta yenye msingi wa Z80, na nilibadilisha mzunguko uwe rahisi kama iwezekanavyo ili iweze kujengwa kwa urahisi iwezekanavyo. Niliandika programu ndogo pia kutumia wazo sawa la unyenyekevu. Ubunifu huu ulifanya kazi vizuri, lakini sikufurahiya kabisa. Nilianza na kuiandikia tena programu ambayo iliruhusu kupangwa wakati wa kukimbia. Hii ilikuwa kuniruhusu nipime vipande vya nambari bila kulazimika kuitolea kwa EEPROM, ambayo nayo itahitaji niipange upya EEPROM. Hili halikusikika kama wazo la kufurahisha kwangu. Kisha nikaanza kufikiria juu ya nafasi za kumbukumbu. Ikiwa nilitaka kusanikisha kipande cha vifaa (IO haswa), kipande cha nambari kinaweza kuzidi kiwango cha nafasi ya kumbukumbu inayopatikana kwa mfumo. Kumbuka, muundo ulitumia tu kaiti ya chini ya basi ya anwani na kisha kidogo ya chini ya baiti ilitumika kuchagua kati ya nafasi za ROM na RAM. Hii ilimaanisha nilikuwa na kaiti 253 tu za kutumia. Labda unauliza kwanini 253 badala ya 256. Hiyo ni kwa sababu nambari yangu mpya inaingiza kaiti tatu za data mwishoni mwa programu iliyoandikwa (hii itafunikwa baadaye, kama nilivyoibadilisha ili ifanye kazi kwenye muundo mpya).

n

Nilirudi juu ya hesabu zangu za zamani ili kuona ni nini kingine kinachoendelea. Nilipata kasoro ndogo na mzunguko wa uteuzi wa kumbukumbu, ambayo nitafunika nikifika huko. Toleo lililorahisishwa: maombi yote ya kuandika yangepitia, ingawa kila wakati iliwekwa kwenye RAM. Labda hii haikuwa kitu chochote cha kuhangaika, lakini nilitaka kuifanya vizuri wakati huu. Na kwa hayo, nilianza kuteka skimu mpya. Picha mbili zilizoambatanishwa na ukurasa huu ni kabla na baada ya mzunguko halisi. Nilisafisha wiring ya tambi sana, sio ya kuchekesha.

n

Ikiwa ulifuata pamoja na uwasilishaji wangu wa asili na unapanga kufuata pamoja na hii, utanichukia. Ikiwa unaanza safi, basi una bahati. Shika tu sehemu kwenye orodha (au sawa) na ufuate.

Ugavi:

LM7805 - 5 Volt mdhibiti Z80 - CPU; akili za mfumoAT28C64B - EEPROM. Uhifadhi wa data "wa Kudumu" uliotumika kwa firmwareIDT6116SA - SRAM ya kompyuta. kutumika kwa kuhifadhi nambari ya mtumiaji na / au kuhifadhi jumla ya dataNE555 - Mfumo wa saa74HC374 - Octal D-Latch na / OE; kutumika kama chip chip74LS273 - Octal D-Latch na / MR; Chip ChipTLC59211 - Chip ya dereva ya LED (iliyotumiwa kwa hivyo 74LS273 inaweza kuendesha LED, kwani peke yake haina uwezo wa pato la sasa) MC14572 - Hii ni chip "Line Line", lakini nimeona ni kamili kwa mantiki ya Udhibiti wa Kumbukumbu. Ina inverters 4, na mlango wa NAND na NOR umejengwa katika74LS32 - Quad AU langoCD4001 - Quad NOR gateCD4040 - 12 Stage Ripple Counter; Iliyochorwa, lakini haitekelezwi mgawanyiko wa saa (kwa kuendesha mfumo kwa kasi ndogo ya saa) 2 10K Ohm Resistors - Moja hutumiwa katika mzunguko wa kipima muda cha 555, kwa hivyo tumia thamani yoyote unayopenda kwa hiyo 4 1K Ohm Resistors - Moja hutumiwa kwa Mzunguko wa saa 555, kwa hivyo tumia chochote unachotaka. Mwingine hutumiwa kwa kuendesha LED, kwa hivyo ubadilishe pia ikiwa ungependa8x330 Ohm Resistor Bus8x10K Ohm Resistor Bus11 LEDs - Tatu hutumiwa kwa hali ya mfumo na zingine nane ni matokeo. Kwa 8, nilitumia onyesho la grafu ya bar (HDSP-4836) 4 Capacitors - Mbili hutumiwa LM7805; 0.22uF na 0.1uF. Moja ni ya kipima muda cha 555, kwa hivyo tumia kile unachohisi ni sawa. Ya mwisho ni ya kuweka upya nguvu; 100uF2 N. O. Vifungo vya kushinikiza - Moja hutumiwa kwa kuingiza, nyingine kwa kuweka upya swichi za SPST DIP - Uingizaji wa data; Nilitumia mtindo wa Piano KeyWire. Kura nyingi na waya

n

KUMBUKA: MC14572 kupitia toleo la shimo imepitwa na wakati, lakini toleo la SMD bado linafanya kazi (hata "sio kwa muundo mpya"), kwa hivyo unaweza kuhitaji kununua bodi ya mzunguko kukuruhusu kuitumia. 74LS32 ya pili inaweza kutumika badala ya MC14572 (rejea muundo wa "mzunguko wa uteuzi wa kumbukumbu" wa ible iliyopita)

Hatua ya 1: Muhtasari wa Haraka wa Mabadiliko + Schematics

Muhtasari wa Haraka wa Mabadiliko + Skimu
Muhtasari wa Haraka wa Mabadiliko + Skimu

Jinsi ya kusoma hesabu: Mshale ulioelekezwa kwenye chip ni pembejeo: Ingiza> -Ushale ulioelekezwa mbali na chip ni pato: Pato

n

Chips nyingi zimechorwa na pini zao halisi. Kuzama kidogo kumechorwa kwenye chips hizi. Chips nyingi pia zina nambari za siri na lebo juu yao. Wanaweza kuwa tad ngumu kusoma. Penseli yangu ilikuwa inazidi kuwa nyepesi.

n

Kwa upande wa unganisho wa mzunguko, mpangilio wa muundo mpya haujabadilika kutoka kwa asili. Niliunganisha nibble ya chini ya anwani ya juu kwa kumbukumbu na kisha nikatumia sehemu ndogo ya nibble ya juu (A12) kwa uteuzi wa RAM / ROM. Hii ilimaanisha kuwa nafasi ya ROM ilitoka 0000-00FF hadi 0000-0FFF. Nafasi ya Ram ilienda kutoka 0100-01FF hadi 1000-1FFF. Nilibadilisha pia mantiki ya Udhibiti wa kumbukumbu kwa muundo bora na nikaongeza hali mbili mpya za LED (na mantiki fulani ya gundi). Pia nimechora (lakini sikuwa na waya) mzunguko wa mgawanyiko wa saa. Ilikuwa ni kufanya kazi mbili. Kazi dhahiri ni kugawanya masafa ya saa chini. Kazi nyingine ni kwa madhumuni ya PWM (Pulse Width Modulation), kwani 555 haitoi mawimbi na mizunguko ya ushuru wa 50%. Hiyo haina maana sana katika mzunguko huu, lakini ikiwa ungetaka kutumia saa kuendesha baadhi ya LED, hakika utagundua athari (moja (seti ya) LED (s) itakuwa nyepesi kuliko nyingine). Wengine wote wa mzunguko haibadiliki.

Hatua ya 2: CPU, Kumbukumbu na Udhibiti wa Kumbukumbu

CPU, Kumbukumbu na Udhibiti wa Kumbukumbu
CPU, Kumbukumbu na Udhibiti wa Kumbukumbu
CPU, Kumbukumbu na Udhibiti wa Kumbukumbu
CPU, Kumbukumbu na Udhibiti wa Kumbukumbu
CPU, Kumbukumbu na Udhibiti wa Kumbukumbu
CPU, Kumbukumbu na Udhibiti wa Kumbukumbu
CPU, Kumbukumbu na Udhibiti wa Kumbukumbu
CPU, Kumbukumbu na Udhibiti wa Kumbukumbu

Hii ndio sehemu ambayo wasomaji wa toleo langu la zamani wananichukia. Katika muundo wa asili, nilitupa tu sehemu kwenye ubao mahali walionekana kama wangeweka shida kidogo kwa kupata waya. Matokeo yake yalionekana kama mtu ametupa sahani ya tambi juu yake na ilikuwa kama "waya!" Nilitaka kusafisha kidogo, kwa hivyo nilianza kwa kurarua kila kitu isipokuwa CPU, RAM na ROM. Nilivuta karibu mzunguko mzima wa pembejeo, mzunguko wa pato, na mantiki ya gundi. Iliniumiza sana kufanya, lakini ilikuwa lazima. Niliacha miunganisho yote ya data ikiwa sawa na kaiti ya chini ya basi ya anwani. Kisha nikaunganisha bits nne zifuatazo za basi la anwani (A8-A11) hadi kwenye chip ya ROM. Nilijali kuzunguka chip wakati huu ili iwe rahisi kujiondoa kwa kupanga upya. Pia niliruka viunganisho vya anwani chini ya chip ya RAM.

n

Pamoja na kuwa nje ya njia, ilibidi sasa nipate mantiki ya kudhibiti kumbukumbu iliyounganishwa. Katika mpango wa asili, nilikuwa nimeunganisha laini ya processor / MREQ moja kwa moja na / CE kwa vidokezo vyote vya kumbukumbu, kisha nikatia waya / WR kwa RAM's / WE. Halafu nilikuwa na CPU's / RD na / MREQ kimantiki OR'd pamoja na A9. Kwa kweli, iliwekwa ili maombi yote ya kumbukumbu yakaamilishe RAM na ROM, lakini A9 ilitumika kuchagua ni ipi kati ya chips / OE iliyochaguliwa. Hii ilikuwa sawa na yote kwa sababu chips zingebaki zisifanye kazi hadi ombi la kumbukumbu lifanywe na kisha moja tu / OE ingekuwa inafanya kazi wakati wa ombi la kusoma. Hii ilizuia msalaba, lakini ilianzisha nuance isiyo ya kawaida. Kwa sababu A9 ilitumika tu kuamua ni chip gani kilikuwa kinatoa data na kwa sababu CPU ilikuwa na ufikiaji wa moja kwa moja kwa pini ya RAM / WE, maombi yoyote ya kuandika yangepitia. Hii ilikuwa sawa kwa ROM kwa sababu hali yake ya kuandika imezuiwa kwa kufunga / WE moja kwa moja kwa usambazaji wa 5V. RAM, hata hivyo, ingeandikwa bila kujali A9. Hii ilimaanisha kuwa jaribio la kuandika kwa eneo la nafasi ya ROM lingeandika kwa eneo moja katika nafasi ya RAM.

n

Suluhisho moja kwa hii itakuwa kugeuza tena mantiki ya kudhibiti ili CPU iwe na ufikiaji wa moja kwa moja wa pini za chips / OE na / WE na kisha tumia MREQ na A12 kuchagua ni zipi / CE zinazoendeshwa. Nilikwenda na wazo hili, lakini badala ya kutumia milango minne ya NOR na inverter kama muundo wa asili, nilipata chip kidogo isiyo sawa ambayo ilikuwa kamili kwa kazi hiyo. Ilinibidi kuunda mzunguko ambao ulitumia milango tu ya mantiki inayopatikana kwenye chip, lakini hiyo ilikuwa rahisi kutosha. A12 hula moja kwa moja kwenye lango la NAND na lango la NOR. / MREQ inalishwa ndani ya lango la NOR na pongezi yake inalishwa ndani ya lango la NAND. Lango la NAND hutumiwa kuendesha / CE kwa RAM na pato la NOR hubadilishwa na kutumika kuendesha ROM / CE. Hii inafanya hivyo kwamba / MREQ inapaswa kuwa chini kabla ya chip yoyote kuchaguliwa na kisha A12 inachagua ni ipi itachaguliwa. Pamoja na usanidi huu, sasa maombi yoyote ya kuandika kwa ROM hayatafanya chochote. Pia inaokoa nguvu kwa sababu ni chip moja tu inayofanya kazi badala ya zote mbili. Kama chip ya mantiki yenyewe, bado tuna vigeuzi viwili visivyotumika ndani. Mtu atatumiwa baadaye, lakini tutafika tukifika.

Hatua ya 3: LEDs za Hali ya Mfumo

Hali ya Mfumo wa LED
Hali ya Mfumo wa LED
Hali ya Mfumo wa LED
Hali ya Mfumo wa LED

Kabla ya kuanza mradi huu, nilikuwa najaribu kuunganishwa na IC fulani, lakini nilikuwa na shida nayo. Kutokuwa na hakika ya kile kilichokuwa kikiendelea, nilitumia jopo la mlima wa LED kuchunguza karibu (moja ya makusanyiko hayo ambayo ina kontena iliyojengwa ndani). Kufanya hivi kulinipa wazo la nostalgia ambalo bado linatumika leo: hadhi za LED zinazotumiwa kuonyesha ikiwa kumbukumbu ilikuwa ikisomwa kutoka au kuandikiwa. Ilipaswa kutumiwa kwa kushirikiana na pembejeo ya LED ambayo nilikuwa nayo tayari. Uingizaji wa LED uliunganishwa na jenereta ya ishara ya / SUBIRI ili kutuonyesha kuwa mfumo huo, unasubiri uingizaji (nitafika hapo, usijali). Nilifikiria kuongeza LED kwa kuonyesha maandishi ya IO, lakini niligundua kuwa pato la LED zinazobadilishwa tayari zitakuwa kiashiria kikubwa cha hiyo. Kufikiria juu yake, bado ninaweza kuiongeza bado. Walakini, naona ni muhimu kujua ikiwa kumbukumbu inasomwa au kuandikwa. Naam, ni muhimu kwa utatuzi wa programu, hata hivyo. Kwa kweli niliitumia kama vile wakati wa kujaribu kufanya programu yangu ifanye kazi: “kwanini inaandika kwa kumbukumbu? Haitakiwi kufanya hivyo bado!"

n

Ili kudhibiti LED hizi, nilitumia lango la quad NOR. Nilitumia malango yote. Ni mbili tu zilizotumiwa kutoa ishara za hali, lakini chip haina uwezo wa nguvu ya kuendesha LEDs. Wana uwezo wa kuzama nguvu nyingi, kwa hivyo nilitumia milango mingine miwili ya NOR kama inverters na nikaunganisha LED kama vile. Kwa sababu LED moja hutumiwa kuonyesha kusoma na nyingine kwa kuandika, na ombi la kusoma na kuandika halitatokea wakati huo huo, niliweza kuondoka na kutumia kontena moja tu kwa LED zote mbili. Kwa ishara ambazo nilihitaji kuamua, hiyo pia ilikuwa rahisi kutosha. Nilitaka maombi yote ya kusoma kumbukumbu yaonyeshwe, kwa hivyo lango la kwanza la NOR lilikuwa na / MREQ na / RD kwenye pembejeo zake. Hali ya kuandika ilikuwa ngumu kidogo, lakini ni rahisi tu. Bado nilitumia / MREQ kama pembejeo moja, lakini kutumia / WR kama nyingine kungesababisha nuance ndogo ambayo nilitaka kuikwepa. Ingekuwa imeonyesha maombi YOTE ya kuandika. Nilitaka tu zile ambazo zilipitia. Kwa hivyo ningefanyaje hivyo? Kweli, kumbuka jinsi ninavyoweka mfumo ili RAM tu iweze kuandikwa? Nilitumia RAM / CE kama pembejeo nyingine kwenye lango la NOR. Hii inamaanisha kuwa LED itaangaza tu wakati RAM imechaguliwa na ombi la kuandika linafanywa. Kwa upande wa rangi ya LED, nilichagua rangi ya machungwa kama kiashiria cha kusoma (lakini nimepata zile za manjano tu) na nyekundu kama kiashiria cha kuandika.

Hatua ya 4: Pembejeo na Pato

Ingizo na Pato
Ingizo na Pato
Ingizo na Pato
Ingizo na Pato
Ingizo na Pato
Ingizo na Pato

Katika hatua ya awali, unaweza kuwa umeona kuwa nimeongeza vifaa vingine kwenye bodi tayari. Nilikuwa nikihifadhi nafasi kwa hivyo nisingeweka waya kwa bahati mbaya ambapo nilitaka sehemu (kwa hivyo ningelazimika kupata eneo jipya la sehemu iliyosemwa). Labda pia umeona niliondoka swichi za kuingiza mahali na nikatia waya kwenye reli ya umeme. Niliamua kuwa eneo la asili lilikuwa mahali pazuri na niliamua kuweka taa za pato karibu (hapo juu). Kulia kwa onyesho la baa kuna latch ya pembejeo. Juu yake kuna latch ya pato, na kushoto kwake ni dereva wa LED. Nilianza kwa kuunganisha onyesho na dereva kwani hiyo ndiyo ilikuwa rahisi kufanya. Kisha nikaunganisha swichi kwa upande wa kuingiza wa latch ya pembejeo. Ifuatayo niliunganisha upande wa pato la latch ya pato kwa dereva wa LED. Hii inaweza kuonekana kama amri ngumu kupata hizi wired, lakini ilikuwa kwa sababu. Ingizo la latch ya pato lingeunganishwa kwenye basi ya data na pato la latch ya pembejeo. Wazo lilikuwa kuunganisha matokeo ya latch ya pembejeo na pembejeo za latch ya pato, ambayo nilifanya. Halafu nilichostahili kufanya ni kupata fujo hilo kushikamana na basi la data. Haijalishi ni wapi miunganisho hii ilikwenda kimwili kwa sababu zote zingeunganishwa kwa umeme. Kompyuta sasa imekamilika.

Hatua ya 5: Rudisha na Kumaliza Ingizo na Pato

Samahani, hakuna picha kwa hatua hii. Rejea hatua ya awali kwa picha.

n

Labda umeona kwenye picha ya mwisho ya hatua iliyopita, nilikuwa na kitufe cha kijani kibichi na chip nyingine ya mantiki imewekwa. Chip ni lango la AU. Milango miwili hutumiwa kutoa ishara ya / KUSUBIRI. Kweli, moja hutengeneza ishara kwa OR-ing / IORQ na / RD kutoka kwa processor. Pato limelishwa ndani ya lango la pili, ambapo hupata OR'd tena kwa kitufe cha kushinikiza. Kitufe huleta pembejeo ya lango juu, na hivyo kuleta pato juu. Pato hili hulishwa kwa wasindikaji / pINI WAIT. Wakati haikushinikizwa, kipinga kinashikilia pembejeo chini. Hapo awali nilitumia kontena la 10K, lakini LS32 ilikuwa ikiweka voltage nje kwenye pembejeo. Kinzani haikuiangusha chini vya kutosha na ilibidi kuibadilisha na 1K. Kwa hivyo, wazo ni kwamba wakati ombi la kusoma la IO linafanywa, milango ya kwanza na ya pili AU inamwambia processor asubiri. Mara tu unapoweka swichi za kuingiza kwa chochote unachotaka, bonyeza kitufe na inaleta CPU nje ya hali ya kusubiri. LED ya "pembejeo" ya kijani, kama nilivyoiita katika hatua ya awali, imewekwa waya ili wakati pini ya / WAIT inashuka chini, inawaka.

n

Lakini hatujamaliza bado tu. Flip flop ya kuingiza inahitaji ishara kuijulisha wakati pembejeo ya data ni halali na inapaswa kutolewa kwa CPU. Pini hii ya saa inatumika sana. Kabla, tuliunganisha tu kwenye kitufe. Hii bado ni chaguo halali, lakini wakati huu nilichagua kuiweka kwenye pato sawa na lango la pili AU. IC hii pia ina pini / OE ambayo inahitaji kuendeshwa. Ikiwa ingefanyika juu, haingeingiza data kwenye basi. Ikiwa imeshikiliwa chini, ingekuwa ikiendesha basi kila wakati. Ili kurekebisha hili, nilitumia tu lango la tatu AU. Pembejeo ni / IORQ na / RD na pato huenda moja kwa moja kwa latch's / OE.

n

Latch ya pato pia inahitaji pini ya saa kuendeshwa. Tena, inafanya kazi juu. Katika mpango wangu, nilichora lango la nne AU moja kwa moja nikiendesha pini kwa kutumia / IORQ na / WR. Hii ilimaanisha kuwa pini ya saa ingeshikiliwa juu hadi ombi la kuandika lifanywe, basi itashuka chini kisha juu tena. Labda hii ingekuwa sawa kwa sababu basi ya data ingekuwa bado ina data halali juu yake mara tu baada ya jaribio la kuandika, lakini kwa mtazamo wa uhandisi, ilikuwa muundo wa takataka. Sikuona kosa hili hadi baada ya kuchukua picha za mwisho, lakini nilikata muunganisho huo kisha nikalisha pato la lango la OR katika moja ya inverters ambazo hazikutumiwa kutoka kwa mantiki ya kudhibiti kumbukumbu, kisha nikaunganisha pato lake kwa pini ya saa. Nilirekebisha skimu na nikapata kosa lingine nililofanya. Niliisahihisha pia.

n

Pamoja na hayo yote hatimaye kufanywa, nilikuwa na kazi ndogo sana ya kufanya: mzunguko wa kuweka upya. Niliongeza kitufe kwenye ubao na nilitumia kontena la 10K kushikilia upande mmoja juu. Upande wa pili huenda moja kwa moja ardhini. Upande ulioshikiliwa juu ni pato / Rudisha, ambayo ilienda kwa kila chip na pini ya / Rudisha (CPU na latch ya pato). Ili kukamilisha kuweka upya nguvu, niliongeza capacitor kwenye pato la / RESET. Wazo ni kwamba kipingaji kikubwa cha thamani kitasababisha kipima nguvu kikubwa kuchaji polepole na kushikilia pini za / Rudisha chini kwa idadi fulani ya mizunguko ya saa (CPU inahitaji mizunguko ya saa nne). Labda tayari unaweza kudhani ni upande gani hasi wa mzunguko huu. Ni hasi sawa na toleo lililopita kwa sababu ni mzunguko huo. Wakati kifungo kinabanwa, capacitor kimsingi hupunguzwa kupitia kitufe. Hii ni mbaya kwa kofia na kitufe, kwa hivyo ikiwa unataka kufanya ujenzi wako uwe wa kudumu zaidi, unaweza kutaka kuuunda upya. Nilikuwa nikifikiria kipima muda kingine cha 555 kilichowekwa katika hali inayoweza kutekelezeka. Lakini pamoja na hayo, mzunguko wa kompyuta sasa umekamilika. Yay. Sasa inahitaji kusanidiwa.

Hatua ya 6: Programu

Kupanga jambo hili ilikuwa ndoto mbaya. Niliunda programu ya Arduino EEPROM. Haikufanya kazi. Nilijenga nyingine kulingana na muundo wa mtu mwingine na kuweka alama. Bado haikufanya kazi. Nilirudi kwa njia iliyojaribiwa na ya kweli ya kuweka mikono kwa anwani na data kwa mkono. Kwa namna fulani, nilikosea. Nilijaribu tena na bado nikakosea. Nilirudi tena tena na kugundua ilikuwa mbali na baiti moja, kwa hivyo niliisahihisha na mwishowe ilifanya kazi, asante Mungu.

n

Kuhusu programu halisi, inaonekana ni ngumu sana na ngumu kufuata, lakini sivyo. Ni rahisi sana, kwa kweli. Nusu yake ni kunakili nambari kote. Nusu nyingine inashirikiwa kati ya hesabu 16-bit, kuruka kwa masharti, na nambari hata zaidi za kunakili kuzunguka. Basi wacha niipitie na kukuambia jinsi inavyofanya kazi.

n

Uanzishaji huweka tu maadili kadhaa ya sajili ya kutumiwa na programu. Kitanzi cha programu ni ngumu zaidi, lakini sio mengi. Kwanza, inakubali pembejeo kwa rejista ya A kwenye bandari ya 00. Halafu rejista ya E inaandikwa kwa kumbukumbu. Kwenye vitanzi viwili vya kwanza, rejista ya E ina data ya taka, kwa hivyo tunajaribu kuiandika kwa ka mbili za mwisho za nafasi ya ROM kwa sababu haitaandikwa; pointer ya anwani (IY) inaongezewa. Thamani iliyohifadhiwa katika D kisha huhamishiwa E ili kuandikwa ijayo. A huingizwa kwenye D na L na E inakiliwa kwa H. HL ndipo kulinganisha kwa thamani hufanyika kupitia kutoa na kuangalia ZF (bendera ya sifuri). Thamani ya kwanza ikilinganishwa dhidi imehifadhiwa kwenye rejista B na C. B na C zinachukuliwa kama rejista moja ya 16-bit, BC. Ikiwa maadili ni sawa, basi mpango huo unaruka moja kwa moja kwenye nafasi ya RAM, ambapo nambari ya mtumiaji inachukuliwa kukaa. Ikiwa nambari katika BC hailingani, basi HL inapakiwa tena na maadili ya awali kutoka D na E na ikilinganishwa tena na thamani katika SP kwa njia ile ile ililinganishwa na BC. Ikiwa ni mechi, ina matokeo sawa, lakini kaiti tatu za ziada zimeandikwa kwa kumbukumbu. Baiti ni nambari inayosababisha CPU kuruka nyuma mwanzoni mwa programu yake (kuweka upya programu). Ikiwa ulinganisho wa pili haukuwa mechi, hata hivyo, mpango huo unazunguka ambapo unachukua thamani kutoka kwa mtumiaji.

n

LD SP, EDBFH; nambari ya exe (inaongeza kuruka)

n

LD IY, FFEH; pointer ya kumbukumbu ya awali ya uhifadhi wa nambari

n

LD KK, EDC3H; nambari ya exe (hakuna kitanzi)

n

kitanzi; agizo la kukusanyika kwa hivyo sio lazima tujue sehemu hii inakaa kwenye kumbukumbu

n

KATIKA A, (00H); pata data ya programu

n

LD (IY + 00H), E; E ina nambari ya kuhifadhiwa

n

INC IY; nenda kwenye eneo la kumbukumbu inayofuata

n

LD E, D; ld D ndani ya E

n

LD D, A; ld A ndani ya D

n

LD H, E; ld E ndani ya H

n

LD L, D; ld D ndani ya L

n

AU A; upya kubeba bendera

n

SBC HL, BC; inarudi 0 ikiwa nambari 2 ya exe iliingizwa

n

JP Z, 1000H; ikiwa ni hivyo, rukia na kutekeleza mpango

n

LD H, E; vinginevyo, onyesha hizi kwa maadili sahihi

n

LD L, D

n

AU A; Ondoa kwanza inaweza kuwa imeweka bendera. Futa

n

SBC HL, SP; inarudi 0 ikiwa nambari 1 ya exe iliingizwa

n

JP NZ, kitanzi; ikiwa sivyo, rudia mchakato (kuanzia na kupata thamani)

n

LD (IY + 00H), C3H; vinginevyo, ingiza nambari ya kuruka mwishoni mwa programu ya mtumiaji

n

LD (IY + 01H), 00H; kuruka kimsingi hufanya kama kuweka upya programu

n

LD (IY + 02H), 00H; ni kuweka upya kamili ikiwa rejista zinabadilishwa

n

JP 1000H; kuruka na kutekeleza programu ya mtumiaji

Ilipendekeza: