Sisällysluettelo:
- Vaihe 1: Nopea yleiskatsaus muutoksista + kaaviot
- Vaihe 2: CPU, muisti ja muistin hallinta
- Vaihe 3: Järjestelmän tilan merkkivalot
- Vaihe 4: Tulo ja lähtö
- Vaihe 5: Palauta ja viimeistele tulo ja lähtö
- Vaihe 6: Ohjelmointi
Video: Z80 -tietokoneen uudelleenkäynti: 6 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 08:59
Aiemmin olen kirjoittanut oppaan Z80-pohjaisen tietokoneen rakentamisesta ja suunnitellut piirin mahdollisimman yksinkertaiseksi, jotta se voitaisiin rakentaa mahdollisimman helposti. Kirjoitin myös pienen ohjelman käyttäen samaa yksinkertaisuuden ajatusta. Tämä malli toimi melko hyvin, mutta en ollut täysin tyytyväinen siihen. Aloitin kirjoittamalla sille ohjelman, joka salli sen ohjelmoinnin ajon aikana. Tämän tarkoituksena oli antaa minun testata koodinpalasia ilman, että tarvitsen sitä omistaa EEPROMille, mikä puolestaan vaatisi minua ohjelmoimaan EEPROMin uudelleen. Tämä ei kuulostanut minusta hauskalta ajatukselta. Sitten aloin miettiä muistipaikkoja. Jos halusin liittää laitteiston (pääasiassa IO), koodikappale saattaa mahdollisesti ylittää järjestelmän käytettävissä olevan muistitilan. Muista, että muotoilu käytti vain osoiteväylän alempaa tavua ja sitten korkean tavun alempaa bittiä valittiin ROM- ja RAM -tilojen välillä. Tämä tarkoitti, että minulla oli käytössä vain 253 tavua tilaa. Saatat kysyä miksi 253 sijasta 256. Tämä johtuu siitä, että uusi koodini syöttää kolme tavua dataa kirjallisen ohjelman lopussa (tämä käsitellään myöhemmin, kun muutin sitä toimimaan uuden mallin kanssa).
n
Palasin takaisin vanhoihin kaavioihini nähdäkseni, mitä muuta oli tapahtumassa. Löysin pienen virheen muistin valintapiirissä, jonka peitän, kun pääsen sinne. Yksinkertaistettu versio: kaikki kirjoituspyynnöt todella menisivät läpi, vaikka se asetettiin aina RAM -muistiin. Tämä ei luultavasti ollut mikään huolestumisen arvoinen asia, mutta halusin tehdä sen oikein tällä kertaa. Ja sen myötä aloin piirtää uuden kaavion. Tämän sivun kaksi kuvaa ovat todellista piiriä ennen ja jälkeen. Puhdistin niin paljon spagettijohtoja, se ei ole hauskaa.
n
Jos olet seurannut alkuperäistä ilmoitustani ja aiot seurata tätä, tulet vihaamaan minua. Jos aloitat uudesta, olet onnekas. Tartu vain luettelon osiin (tai vastaaviin) ja seuraa niitä.
Tarvikkeet:
LM7805 - 5 voltin säädinZ80 - suoritin; järjestelmän aivotAT28C64B - EEPROM. Tietokoneen laiteohjelmistoa varten”pysyvä” tallennustila IDT6116SA - SRAM; käytetään käyttäjäkoodin tallentamiseen ja /tai yleiseen tietojen tallennukseen NE555 - Järjestelmän kello74HC374 - Octal D -Latch ja /OE; käytetään syöttösiruna74LS273 - Octal D -Latch ja /MR; Lähtösiru TLC59211 - LED -ohjainpiiri (käytetään siten, että 74LS273 voi ajaa LED -valoja, koska se ei yksinään kykene nykyiseen lähtöön) MC14572 - Tämä on "Line Driver" -piiri, mutta löysin sen täydelliseksi muistin ohjauslogiikalle. Siinä on 4 invertteriä ja sisäänrakennettu NAND- ja NOR -portti74LS32 - Quad OR GateCD4001 - Quad NOR gateCD4040 - 12 Stage Ripple Counter; Piirretty, mutta ei toteutettu kellonjakaja (järjestelmän käyttämiseen hitaammilla kellonopeuksilla) 2 10 K ohmin vastusta - Yksi käytetään 555 -ajastinpiirissä, joten käytä sille mitä tahansa arvoa 4 1 ohmin vastusta - Yksi käytetään 555 ajastinpiiri, joten käytä sitä mitä haluat. Toista käytetään LEDien ohjaamiseen, joten vaihda myös sitä, jos haluat 8: ssa käytin pylväskaavionäyttöä (HDSP -4836) 4 kondensaattoria - Kaksi on käytetty LM7805: tä; 0,22 uF ja 0,1 uF. Yksi koskee 555 -ajastinta, joten käytä sitä, mikä tuntuu oikealta. Viimeinen koskee virrankatkaisua; 100uF2 N. O. Painikkeet - Toista käytetään syöttöön, toista nollaamiseen8 SPST DIP -kytkintä - Tietojen syöttö; Käytin Piano Key styleWirea. Paljon ja paljon lankoja
n
HUOMAUTUS: MC14572 -reikäversio on vanhentunut, mutta SMD -versio on edelleen aktiivinen (ei edes "ei uuden suunnittelun tila"), joten sinun on ehkä ostettava piirilevy, jotta voit käyttää sitä. Toista 74LS32: ta voidaan käyttää MC14572: n sijasta (katso "muistin valintapiiri" kaaviosta edellisestä iblestä)
Vaihe 1: Nopea yleiskatsaus muutoksista + kaaviot
Kaavioiden lukeminen: Piiriin osoitettu nuoli on tulo: Syöttö> -Sirusta poispäin osoittava nuoli on lähtö: Lähtö <-Bussit käyttävät viivaa nuolen sijaan: Väylä |-
n
Suurin osa pelimerkkeistä on vedetty täsmällisillä pinouteillaan. Näihin pelimerkkeihin on piirretty pieni dippi. Useimmissa siruissa on myös pin -numerot ja tarrat. Niitä voi olla vähän vaikea lukea. Lyijykynäni oli tylsää.
n
Piiriliitosten osalta uuden mallin ulkoasu on enimmäkseen muuttumaton alkuperäisestä. Yhdistin osoitteen alemman tavun muistin muistiin ja käytin sitten ylemmän napin (A12) matalaa bittiä RAM/ROM -valintaan. Tämä tarkoitti sitä, että ROM-tila kasvoi 0000-00FF-0000-0FFF. Ram-tila vaihteli välillä 0100-01FF ja 1000-1FFF. Vaihdoin myös Memory Control -logiikan parempaan suunnitteluun ja lisäsin kaksi uutta tila -LEDiä (ja jonkin verran liimalogiikkaa). Olen myös piirtänyt (mutta en langannut) kellonjakajapiirin. Sen tehtävänä oli suorittaa kaksi tehtävää. Ilmeinen tehtävä on jakaa kellotaajuus alas. Toinen toiminto on PWM (Pulse Width Modulation) -tarkoituksiin, koska 555 ei luo aaltoja 50%: n kuormitussyklillä. Tällä ei todellakaan ole väliä tässä piirissä, mutta jos haluat käyttää kelloa joidenkin LED -valojen ajamiseen, huomaat varmasti vaikutukset (yksi (joukko) LED -valoja on himmeämpi kuin toinen). Koko muu piiri on olennaisesti muuttumaton.
Vaihe 2: CPU, muisti ja muistin hallinta
Tämä on osa, jossa edellisen versioni lukijat vihaavat minua. Alkuperäisessä rakenteessa heitin vain osia levylle paikkaan, jossa ne näyttivät aiheuttavan vähän ongelmia johdotuksen kanssa. Tulos näytti siltä kuin joku olisi kaatanut siihen lautasen spagettia ja olisi kuin "johdot!" Halusin puhdistaa sitä hieman, joten aloin repimällä kaiken paitsi CPU: n, RAM: n ja ROM: n. Vedin lähes koko tulopiirin, lähtöpiirin ja liimalogiikan ylös. Se melkein satutti minua tekemään, mutta se oli välttämätöntä. Jätin kaikki tietoyhteydet ennalleen ja osoiteväylän alemman tavun. Liitin sitten osoiteväylän (A8-A11) seuraavat neljä bittiä ROM-siruun. Varoitin kiertämään sirun tällä kertaa helpottaakseni vetämistä uudelleen ohjelmointiin. Hyppäsin myös osoiteyhteydet alas RAM -sirulle.
n
Kun se oli poissa tieltä, minun piti nyt kytkeä muistin ohjauslogiikka päälle. Alkuperäisessä kaaviossa olin liittänyt suorittimen /MREQ -linjan suoraan /CE: hen molempiin muistisiruihin, ja sitten johdotin /WR: n RAM -muistiin /WE. Sitten minulla oli CPU /RD ja /MREQ loogisesti TAI yhdessä sekä A9. Pohjimmiltaan se määritettiin niin, että kaikki muistipyynnöt aktivoivat sekä RAM- että ROM -levyt, mutta A9: tä käytettiin valitsemaan, mitkä sirut /OE valittiin. Tämä oli ok ja kaikki, koska sirut pysyisivät passiivisina, kunnes muistipyyntö tehtiin, ja sitten vain yksi /OE olisi aktiivinen lukupyynnön aikana. Tämä esti ylikuulumisen, mutta toi mukanaan hankalan vivahteen. Koska A9: tä käytettiin vain määrittämään, mikä siru lähetti dataa ja koska suorittimella oli suora pääsy RAM -muistin /WE -nastaan, kaikki kirjoituspyynnöt menisivät läpi. Tämä oli kunnossa ROM -levylle, koska sen kirjoitustila estetään sitomalla /WE suoraan 5V -syöttöön. RAM -muisti kirjoitetaan kuitenkin A9: stä riippumatta. Tämä tarkoitti sitä, että ROM -levylle kirjoittaminen yritti kirjoittaa samaan paikkaan RAM -tilassa.
n
Yksi ratkaisu tähän olisi langata ohjauslogiikka uudelleen siten, että suorittimella on suora pääsy sirujen /OE- ja /WE -nastoihin ja sitten MREQ: n ja A12: n avulla, mitkä sirut /CE ajettiin. Lähdin tähän ajatukseen, mutta sen sijaan, että olisin käyttänyt neljää NOR -porttia ja alkuperäisen suunnittelun kaltaista invertteriä, löysin hankalan pienen sirun, joka oli täydellinen tehtävään. Minun piti luoda piiri, joka käytti vain sirussa olevia logiikkaportteja, mutta se oli tarpeeksi helppoa. A12 syötetään suoraan NAND -porttiin ja NOR -porttiin. /MREQ syötetään NOR -porttiin ja sen kohteliaisuus syötetään NAND -porttiin. NAND -porttia käytetään RAM -muistin ajamiseen /CE: hen ja NOR -lähtö käännetään käänteiseksi ja sitä käytetään ROM /CE: n ajamiseen. Tämän vuoksi /MREQ -arvon on oltava alhainen, ennen kuin jompikumpi siru valitaan, ja sitten A12 valitsee, kumpi valitaan. Tällä asetuksella kaikki kirjoituspyynnöt ROM -levylle eivät tee mitään. Se säästää myös virtaa, koska vain yksi siru on aktiivinen molempien sijasta. Mitä tulee itse logiikkapiiriin, meillä on edelleen kaksi käyttämätöntä invertteriä sisällä. Yksi tottuu myöhemmin, mutta pääsemme perille, kun pääsemme perille.
Vaihe 3: Järjestelmän tilan merkkivalot
Ennen kuin aloitin tämän projektin, yritin liittyä tiettyyn IC: hen, mutta minulla oli ongelmia sen kanssa. Epävarma siitä, mitä oli tapahtumassa, käytin paneeliasennuksen LED -valotusta ympärilleni (yksi niistä kokoonpanoista, joissa on sisäänrakennettu vastus). Tämän tekeminen antoi minulle nostalgia -idean, jota käytetään edelleen: tilan merkkivalot osoittivat, luetaanko muistia vai kirjoitetaanko sille. Sitä oli tarkoitus käyttää yhdessä tulo -LEDin kanssa, joka minulla jo oli. Tulo -LED liitettiin /WAIT -signaaligeneraattoriin osoittaakseen meille, että järjestelmä odottaa tuloa (tulen sinne, älä huoli). Harkitsin LED -valon lisäämistä IO -kirjoituksen ilmaisemiseksi, mutta ajattelin, että lähtö -LEDien vaihtaminen olisi jo hyvä osoitus siitä. Kun mietin sitä, voin lisätä sen vielä. Siitä huolimatta minusta on hyödyllistä tietää, luetaanko vai kirjoitetaanko muistia. Se on joka tapauksessa hyödyllinen ohjelmien virheenkorjauksessa. Käytin sitä todella paljon sellaisenaan yrittäessäni saada ohjelmani toimimaan:”miksi se kirjoittaa muistiin? Sen ei pitäisi vielä tehdä sitä!"
n
Näiden LEDien ohjaamiseen käytin quad NOR -porttia. Käytin kaikkia portteja. Tilasignaalien tuottamiseen käytettiin vain kahta, mutta sirulla ei ole tehoa LEDien todelliseen ajamiseen. Ne kykenevät upottamaan niin paljon virtaa, joten käytin kahta muuta NOR -porttia inverttereinä ja liitin LEDit sellaisinaan. Koska toista LEDiä käytetään lukemien ilmaisemiseen ja toista kirjoituksiin, ja luku- ja kirjoituspyyntöä ei tapahdu samanaikaisesti, pystyin eroon siitä, että käytin vain yhtä vastusta molemmille LEDeille. Mitä signaaleihin minun piti purkaa, se oli myös tarpeeksi helppoa. Halusin, että kaikki muistin lukupyynnöt ilmoitetaan, joten ensimmäisen NOR -portin tuloissa oli /MREQ ja /RD. Kirjoitustila oli hieman hankalampi, mutta yhtä helppo. Käytin edelleen /MREQ: tä yhtenä tulona, mutta /WR: n käyttäminen toisena aiheuttaisi pienen vivahteen, jonka halusin välttää. Se olisi ilmoittanut KAIKKI kirjoituspyyntöjä. Halusin vain ne, jotka todella menivät läpi. Joten miten tekisin sen? Muista, kuinka olen asettanut järjestelmän niin, että vain RAM -muistia voidaan kirjoittaa? Käytin RAM -muistia /CE: tä toisena tulona NOR -portille. Tämä tarkoittaa, että merkkivalo syttyy vain, kun RAM on valittu ja kirjoituspyyntö tehdään. LED -värin suhteen valitsin oranssin lukuindikaattoriksi (mutta löysin vain keltaisia) ja punaisen kirjoitusilmaisimena.
Vaihe 4: Tulo ja lähtö
Edellisessä vaiheessa olet ehkä huomannut, että olen lisännyt joitain muita komponentteja jo levylle. Varasin tilaa, jotta en vahingossa asettaisi johtoja sinne, missä halusin komponentin (minun olisi siis löydettävä kyseiselle komponentille uusi paikka). Olet ehkä myös huomannut, että jätin tulokytkimet paikoilleen ja johdotin sähkökiskoon. Päätin, että alkuperäinen sijainti oli täydellinen paikka, ja päätin sijoittaa lähtö -LEDit lähellä (yllä). Palkkinäytön oikealla puolella on syöttösalpa. Sen yläpuolella on lähtösalpa ja sen vasemmalla puolella on LED -ohjain. Aloitin liittämällä näytön ohjaimeen, koska se oli helpoin tehdä. Sitten liitin kytkimet tulolukon tulopuolelle. Seuraavaksi liitin lähtösalvan lähtöpuolen LED -ohjaimeen. Tämä saattaa tuntua hankalalta saada nämä johdot, mutta se oli syystä. Lähtösalvan tulo oli yhdistettävä dataväylään sekä tulolukon ulostulo. Ajatuksena oli kytkeä tulolukon lähdöt lähtösalvan tuloihin, minkä tein. Sitten minun piti vain saada se sotku yhteys dataväylään. Ei ollut väliä, minne nämä liitännät menivät fyysisesti, koska ne kaikki olisivat sähköisesti kytkettyjä. Tietokone on nyt melkein valmis.
Vaihe 5: Palauta ja viimeistele tulo ja lähtö
Valitettavasti tässä vaiheessa ei ole kuvia. Katso kuvat edellisestä vaiheesta.
n
Olet ehkä huomannut edellisen vaiheen viimeisessä kuvassa, että minulla oli vihreä painike ja toinen logiikkapiiri. Siru on TAI -portti. Kahta porttia käytetään generoimaan /WAIT -signaali. No, yksi tuottaa signaalin OR-ing /IORQ ja /RD prosessorista. Lähtö syötetään toiseen porttiin, jossa se saa TAI -painikkeen uudelleen. Painike nostaa portin tulon korkealle, jolloin lähtö on korkea. Tämä lähtö syötetään prosessoreille /WAIT -nastalle. Kun vastusta ei paineta, vastus pitää tulon alhaisena. Käytin alun perin 10K vastusta, mutta LS32 laittaa jännitteen tuloon. Vastus ei pudottanut sitä tarpeeksi alas ja jouduin korvaamaan sen 1K: lla. Joka tapauksessa ajatus on, että kun IO -lukupyyntö tehdään, ensimmäinen ja toinen TAI -portti kehottavat prosessoria odottamaan. Kun olet asettanut tulokytkimet haluamaasi asentoon, painat painiketta ja se poistaa suorittimen odotustilasta. Vihreä "tulo" -merkkivalo, kuten kutsuin sitä aikaisemmassa vaiheessa, on kytketty niin, että kun /WAIT -nasta laskee, se syttyy.
n
Mutta emme ole vielä valmiita. Tulon flip flop tarvitsee signaalin ilmoittaakseen, milloin syötetty tieto on kelvollinen, ja se tulisi lähettää CPU: lle. Tämä kellotappi on aktiivinen korkealla. Ennen liitämme sen vain painikkeeseen. Tämä on edelleen pätevä vaihtoehto, mutta tällä kertaa päätin laittaa sen samaan lähtöön kuin toinen TAI -portti. Tässä IC: ssä on myös /OE -nasta, jota on käytettävä. Jos sitä pidettäisiin korkealla, se ei koskaan lisäisi tietoja väylään. Jos se pidetään alhaalla, se ajaa aina linja -autoa. Tämän korjaamiseksi käytin yksinkertaisesti kolmatta TAI -porttia. Tulot ovat /IORQ ja /RD ja lähtö menee suoraan salvan /OE: hen.
n
Lähtösalpa tarvitsee myös kellotapin ajaa. Jälleen se on aktiivinen korkealla. Kaaviossa piirsin neljännen TAI -portin suoraan ohjaamalla tappia /IORQ- ja /WR -painikkeilla. Tämä tarkoitti sitä, että kellotappi pidettiin korkealla, kunnes kirjoituspyyntö tehtiin, ja sitten se laski jälleen matalalle. Tämä olisi luultavasti ollut hienoa, koska dataväylällä olisi silti ollut kelvollisia tietoja siitä heti kirjoitusyrityksen jälkeen, mutta tekniseltä kannalta se oli roskasuunnittelu. Huomasin tämän virheen vasta viimeisten kuvien ottamisen jälkeen, mutta repin sen yhteyden ja syötin sitten OR -portin ulostulon johonkin käyttämättömästä muuntimesta muistin ohjauslogiikasta ja liitin sen sitten kellonapaan. Korjasin myös kaavion ja löysin toisen tekemäni virheen. Korjasin myös sen.
n
Kun kaikki tämä oli vihdoin tehty, minulla oli hyvin pieni määrä työtä: nollauspiiri. Lisäsin levylle painikkeen ja käytin 10K vastusta pitämään toista puolta korkealla. Toinen puoli menee suoraan maahan. Sivulla pidetään korkealla /RESET -lähtö, joka meni jokaiseen siruun, jossa oli /RESET -nasta (suoritin ja lähtösalpa). Käynnistysasetusten palauttamiseksi lisäsin kondensaattorin /RESET-lähtöön. Ajatuksena on, että suuren arvon vastus saisi suhteellisen suuren kondensaattorin latautumaan hitaasti ja pitämään /RESET -nastat alhaisina jonkin verran kellosyklejä (CPU tarvitsee neljä kellojaksoa). Voit jo arvata, mikä tämän piirin negatiivinen puoli on. Se on sama negatiivinen kuin edellinen versio, koska se on sama piiri. Kun painiketta painetaan, kondensaattori on olennaisesti oikosulussa painikkeen läpi. Tämä on huono sekä korkin että painikkeen kannalta, joten jos haluat tehdä rakennuksestasi hieman pysyvämmän, voit suunnitella sen uudelleen. Ajattelin toista 555 -ajastinta, joka on asennettu monostabiiliin tilaan. Mutta sillä tietokonepiiri on nyt valmis. Jee. Nyt se on ohjelmoitava.
Vaihe 6: Ohjelmointi
Tämän asian ohjelmointi oli painajainen. Rakensin Arduino EEPROM -ohjelmoijan. Se ei toiminut. Rakensin toisen toisen suunnittelun ja koodauksen perusteella. Ei silti toiminut. Palasin kokeiltuun tapaan asettaa osoitteet ja datatavut manuaalisesti käsin. Jotenkin sekaisin sen. Yritin uudelleen ja ymmärsin silti väärin. Palasin jälleen takaisin ja huomasin, että se oli poistunut yhdestä tavusta, joten korjasin sen ja se lopulta toimi, kiitos Jumalalle.
n
Mitä tulee varsinaiseen ohjelmaan, näyttää siltä, että se on erittäin monimutkainen ja vaikea seurata, mutta se ei ole. Se on oikeastaan aika yksinkertaista. Puolet siitä kopioi numeroita. Toinen puoli jaetaan 16-bittisen matematiikan, ehdollisten hyppyjen ja vielä useampien numeroiden kopioinnin välillä. Joten käyn läpi sen ja kerron kuinka se toimii.
n
Alustus asettaa vain joitain rekisteriarvoja ohjelman käyttöön. Ohjelmasilmukka on hieman monimutkaisempi, mutta ei paljon. Ensinnäkin se hyväksyy syötteen A -rekisteriin portissa 00. Sitten E -rekisteri kirjoitetaan muistiin. Kahdessa ensimmäisessä silmukassa E -rekisteri sisältää roskatietoja, joten yritämme kirjoittaa ne kahdelle viimeiselle tavulle ROM -tilaa, koska niitä ei itse asiassa kirjoiteta; sitten osoitinosoitinta (IY) lisätään. D -arvoon tallennettu arvo siirretään sitten kohtaan E, joka kirjoitetaan seuraavaksi. Tämän jälkeen A ladataan D: hen ja L ja E kopioidaan H. Ensimmäinen vertailtava arvo tallennetaan rekistereihin B ja C. B ja C käsitellään yhtenä 16-bittisenä rekisterinä BC. Jos arvot ovat samat, ohjelma hyppää suoraan RAM -tilaan, jossa oletetaan olevan käyttäjäkoodi. Jos BC: n koodi ei vastaa, HL ladataan uudelleen D: n ja E: n alkuperäisarvoilla ja verrataan uudelleen SP: n arvoon samalla tavalla kuin BC: hen. Jos se on ottelu, sillä on sama tulos, mutta kolme ylimääräistä tavua kirjoitetaan muistiin. Tavu on koodi, joka saa suorittimen palaamaan ohjelmansa alkuun (ohjelmiston nollaus). Jos toinen vertailu ei kuitenkaan ollut osuma, ohjelma palaa sinne, mistä se hakee arvon käyttäjältä.
n
LD SP, EDBFH; exe -koodi (lisää hyppy)
n
LD IY, FFEH; ensimmäinen muistiosoitin koodin tallentamista varten
n
LD BC, EDC3H; exe -koodi (ei silmukkaa)
n
silmukka; asentajan direktiiviä, joten meidän ei tarvitse tietää, missä muistissa tämä osa sijaitsee
n
IN A (00H); hae ohjelmatietoja
n
LD (IY+00H), E; E sisältää tallennettavan koodin
n
INC IY; siirtyä seuraavaan muistipaikkaan
n
LD E, D; ld D osaksi E
n
LD D, A; ld A osaksi D.
n
LD H, E; Ld E osaksi H
n
LD L, D; ld D osaksi L
n
TAI A; palauta kuljetuslippu
n
SBC HL, BC; palauttaa 0, jos exe -koodi 2 on syötetty
n
JP Z, 1000H; jos näin on, siirry ohjelmaan ja suorita se
n
LD H, E; Muussa tapauksessa päivitä nämä oikeisiin arvoihin
n
LD L, D.
n
TAI A; ensimmäinen vähennys on saattanut asettaa kuljetuslipun. Tyhjennä se
n
SBC HL, SP; palauttaa 0, jos exe -koodi 1 on syötetty
n
JP NZ, silmukka; jos ei, toista prosessi (alkaen arvon saamisesta)
n
LD (IY+00H), C3H; muussa tapauksessa syötä hyppykoodi käyttäjäohjelman lopussa
n
LD (IY+01H), 00H; hyppy toimii periaatteessa ohjelmiston nollauksena
n
LD (IY+02H), 00H; se on täydellinen nollaus, jos rekistereitä muutetaan
n
JP 1000H; siirry käyttäjäohjelmaan ja suorita se
Suositeltava:
Z80-MBC2 Atmega32a: n ohjelmointi: 6 vaihetta
Z80-MBC2 Atmega32a: n ohjelmointi: Ennen kuin voit käyttää z80-MBC2: ta, sinun on ohjelmoitava Atmeg32. Nämä ohjeet osoittavat, kuinka halpaa arduino miniä käytetään ohjelmoijana koodin lataamiseen
Z80 MBC2 - Käännä QP/M Bios ja Loader uudelleen: 6 vaihetta
Z80 MBC2 - Käännä QP/M Bios ja Loader uudelleen: Jos, kuten minä, joudut tilanteeseen, jossa sinun on koottava QP/M -bios uudelleen MBC2 -laitteellesi - näin teet sen. prosessi, kuinka kääntää olemassa oleva versio uudelleen. Sinun tehtäväsi on tehdä muutoksia todelliseen BIOSiin
Z80-mbc2 Z80-koodisalama Käyttäjän LED: 3 vaihetta
Z80-mbc2 Z80 Code Flash User LED: Tämä on esimerkki käyttäjän LED-ohjelmasta, joka on kirjoitettu Z80-kokoonpanossa z80-mbc2-tietokoneelle
Z80 MBC2 - Käännä CPM2.2 Bios uudelleen: 4 vaihetta
Z80 MBC2 - Käännä CPM2.2 Bios uudelleen: Jos, kuten minä, joudut tilanteeseen, jossa sinun on käännettävä uudelleen CP/M -bios (2.2) MBC2 -laitteellesi - näin teet sen. tapauksessani halusin poistaa”WARM BOOT” -viestin aina, kun jokin ohjelma oli olemassa tai kun teit ctrl-c. Minä a
DC-MOOTTORIN UUDELLEENKÄYNTI (harjattu RS-540): 15 vaihetta
DC-MOOTTORIN UUDELLEENKYTKEMINEN (RS-540-harjattu tyyppi): RS-555 DC -moottorin (samanlainen kuin RS-540-moottori) UUDELLEENKÄYTTÄMINEN nopeuttaaksesi nopeutta rpm. Tasavirtamoottorin päivittäminen ja nopeuden lisääminen