Mundarija:

Z80 kompyuterini qayta ko'rib chiqish: 6 qadam
Z80 kompyuterini qayta ko'rib chiqish: 6 qadam

Video: Z80 kompyuterini qayta ko'rib chiqish: 6 qadam

Video: Z80 kompyuterini qayta ko'rib chiqish: 6 qadam
Video: Noutbook klaviaturasini yoqish #shorts 2024, Iyul
Anonim
Z80 kompyuterini qayta ko'rib chiqish
Z80 kompyuterini qayta ko'rib chiqish
Z80 kompyuterini qayta ko'rib chiqish
Z80 kompyuterini qayta ko'rib chiqish

O'tmishda men Z80-ga asoslangan kompyuterni yaratish bo'yicha qo'llanma yozdim va sxemani iloji boricha sodda qilib tuzdim, shuning uchun uni iloji boricha oson qurish mumkin edi. Men ham xuddi shu oddiylik g'oyasidan foydalangan holda kichik dastur yozdim. Bu dizayn juda yaxshi ishladi, lekin men bundan umuman mamnun emas edim. Men dasturni qayta yozishni boshladim, bu uni ish vaqtida dasturlash imkonini berdi. Bu menga kod qismlarini EEPROMga bag'ishlamasdan sinab ko'rishga ruxsat berish edi, bu esa o'z navbatida EEPROMni qayta dasturlashni talab qiladi. Bu men uchun kulgili fikrga o'xshamadi. Keyin men xotira bo'shliqlari haqida o'ylay boshladim. Agar men qo'shimcha qurilmani (asosan IO) ishlatmoqchi bo'lsam, kodning bir qismi tizimda mavjud xotira maydonidan oshib ketishi mumkin. Yodingizda bo'lsin, dizayn faqat manzil avtobusining pastki baytidan foydalangan, keyin esa yuqori baytning pastki qismi ROM va RAM oralig'ini tanlash uchun ishlatilgan. Bu shuni anglatadiki, menda faqat 253 bayt bo'sh joy bor edi. Siz nima uchun 256 o'rniga 253. deb so'rashingiz mumkin. Buning sababi shundaki, mening yangi kodim yozma dastur oxirida uch baytli ma'lumotlarni kiritadi (bu men keyinroq ko'rib chiqiladi, chunki men uni yangi dizayn ustida ishlash uchun o'zgartirdim).

n

Men yana nima bo'layotganini bilish uchun eski sxemalarimga qaytdim. Men xotira tanlash sxemasi bilan kichik bir kamchilikni topdim, u erga etib kelganimda uni yopaman. Soddalashtirilgan versiya: barcha yozish so'rovlari haqiqatan ham bajariladi, lekin u har doim RAMga qo'yilgan. Bu, ehtimol, tashvishlanishga arzigulik emas edi, lekin men buni bu safar to'g'ri bajarishni xohladim. Va shu bilan men yangi sxemani chizishni boshladim. Ushbu sahifaga biriktirilgan ikkita rasm haqiqiy sxemadan oldin va keyin. Men spagetti simlarini juda ko'p tozaladim, bu kulgili emas.

n

Agar siz mening asl taklifimga ergashgan bo'lsangiz va uni davom ettirmoqchi bo'lsangiz, siz meni yomon ko'rasiz. Agar siz yangidan boshlasangiz, demak omadingiz bor. Ro'yxatdagi qismlarni (yoki ularning ekvivalentini) oling va davom eting.

Ta'minot:

LM7805 - 5 voltli regulyator Z80 - protsessor; AT28C64B - EEPROM tizimining miyasi. IDT6116SA - SRAM dasturiy ta'minoti uchun ishlatiladigan "doimiy" ma'lumotlar ombori; foydalanuvchi kodini va /yoki umumiy ma'lumotlarni saqlash uchun ishlatiladi kirish chipi sifatida ishlatiladi74LS273 - Octal D -Latch /MR bilan; chiqish chipi TLC59211 - LED drayveri chipi (74LS273 LEDni boshqarishi uchun ishlatilgan, chunki u faqat joriy chiqishga qodir emas) MC14572 - Bu "Chalg'igan drayveri" chipi, lekin men buni Xotirani boshqarish mantig'iga mos deb topdim. U 4 ta invertorga ega va 74LS32 - Quad OR gateCD4001 - Quad NOR gateCD4040 - 12 bosqichli to'lqin hisoblagichi o'rnatilgan NAND va NOR eshigiga ega; Chizilgan, lekin amalga oshirilmagan soatni ajratuvchi (tizimni sekinroq soat tezligida ishlatish uchun) 2 10K Ohmli rezistorlar - 555 taymer sxemasida bittasi ishlatiladi, shuning uchun siz xohlagan qiymatdan foydalaning 4 1K Ohmli rezistorlar - biri ishlatiladi. 555 taymer sxemasi, shuning uchun xohlagan narsangizdan foydalaning. Ikkinchisi LEDlarni boshqarish uchun ishlatiladi, shuning uchun agar xohlasangiz, 8x330 Ohm rezistorli avtobus 8x10K Ohm rezistorli Bus11 LEDlari - uchtasi tizim holati uchun ishlatiladi, qolgan sakkiztasi - chiqish. 8 uchun men chiziqli displeyni (HDSP -4836) ishlatardim 4 kondansatkich - ikkitasi LM7805; 0,22uF va 0,1uF. Ulardan biri 555 taymer uchun, shuning uchun o'zingizni to'g'ri deb hisoblaganingizdan foydalaning. Oxirgi-quvvatni qayta o'rnatish; 100uF2 N. O. Tugmalar - biri kirish uchun ishlatiladi, ikkinchisi reset 8 SPST DIP kalitlari - ma'lumotlarni kiritish; Men Pianino Key styleWire -dan foydalanardim. Ko'p va juda ko'p simlar

n

ESLATMA: MC14572 teshikli versiyasi eskirgan, lekin SMD versiyasi hali ham faol (hatto "yangi dizayn uchun emas"), shuning uchun uni ishlatishga ruxsat berish uchun elektron kartani sotib olishingiz kerak bo'ladi. MC14572 o'rniga ikkinchi 74LS32 ishlatilishi mumkin (oldingi ible "xotira tanlash sxemasi" ga qarang)

1 -qadam: O'zgarishlar + sxemalar haqida qisqacha ma'lumot

O'zgarishlar haqida qisqacha ma'lumot + sxemalar
O'zgarishlar haqida qisqacha ma'lumot + sxemalar

Sxemalarni qanday o'qish kerak: Chipga yo'naltirilgan o'q-bu kirish: Kirish>-Chipdan uzoqlashtirilgan o'q-bu chiqish: Chiqish <-Avtobuslar o'q o'rniga chiziqdan foydalanadi: Avtobus |-

n

Ko'pgina chiplar aniq pinoutlari bilan chizilgan. Bu chiplarga ozgina cho'kma chizilgan. Ko'pgina chiplarda pin raqamlari va teglar ham bor. Ularni o'qish biroz qiyin bo'lishi mumkin. Qalamim zerikib ketdi.

n

Tarmoqli ulanishlar nuqtai nazaridan, yangi dizaynning sxemasi asosan o'zgarmaydi. Men yuqori bayt manzilini pastki xotirasini xotiralar bilan bog'ladim va keyin RAM/ROMni tanlash uchun yuqori nibble (A12) ning pastki qismini ishlatdim. Bu shuni anglatadiki, ROM maydoni 0000-00FF dan 0000-0FFF gacha bo'lgan. Ram maydoni 0100-01FF dan 1000-1FFFgacha ketdi. Men ham yaxshiroq dizayn uchun Xotira nazorati mantig'ini almashtirdim va ikkita yangi LED holatini qo'shdim (va yopishtiruvchi mantiq). Men ham soatni ajratuvchi sxemani chizdim (lekin simlamadim). Bu ikkita funktsiyani bajarish edi. Aniq vazifa - soat chastotasini pastga bo'lish. Boshqa funktsiya PWM (puls kengligi modulyatsiyasi) uchun mo'ljallangan, chunki 555 50% ish tsikli bilan to'lqin hosil qilmaydi. Bu sxemada bu unchalik muhim emas, lekin agar siz LEDni ishlatish uchun soatni ishlatmoqchi bo'lsangiz, siz effektlarni aniq sezasiz (bitta (LED) sig'im boshqasiga qaraganda xira bo'ladi). Qolgan sxemalar deyarli o'zgarmaydi.

2 -qadam: CPU, xotira va xotirani boshqarish

CPU, xotira va xotirani boshqarish
CPU, xotira va xotirani boshqarish
CPU, xotira va xotirani boshqarish
CPU, xotira va xotirani boshqarish
CPU, xotira va xotirani boshqarish
CPU, xotira va xotirani boshqarish
CPU, xotira va xotirani boshqarish
CPU, xotira va xotirani boshqarish

Bu mening oldingi versiyamning o'quvchilari meni yomon ko'radigan qismi. Asl konstruktsiyada men shunchaki qismlarni taxtaga, xuddi simni ulashda unchalik katta muammo tug'dirmaydigan joyga tashladim. Natija kimdir ustiga spagetti tarelkasini tashlaganga o'xshardi va "simlar!" Men uni biroz tozalashni xohlardim, shuning uchun men protsessor, RAM va ROMdan tashqari hamma narsani yirtib tashlashdan boshladim. Men deyarli butun kirish sxemasini, chiqish sxemasini va elim mantig'ini oldim. Bu deyarli meni xafa qildi, lekin bu kerak edi. Men barcha ma'lumotlar ulanishlarini va manzil shinasining pastki baytini o'z joyida qoldirdim. Keyin manzil avtobusining keyingi to'rt bitini (A8-A11) ROM chipiga uladim. Men bu safar chipni aylanib o'tishga harakat qildim. Shuningdek, men manzil ulanishlarini RAM chipiga o'tkazdim.

n

Shunday qilib, men endi xotirani boshqarish mantig'ini ulashim kerak edi. Asl sxemada men protsessor /MREQ liniyasini to'g'ridan -to'g'ri /CE ga ikkala xotira chipiga ulaganman, keyin RAM /WE ga simli ulanganman. Keyin menda protsessor /RD va /MREQ mantiqiy ravishda OR'd, shuningdek A9 edi. Asosan, u barcha xotira so'rovlari RAM va ROMni faollashtirishi uchun o'rnatildi, lekin A9 qaysi chip /OE tanlanganligini tanlash uchun ishlatilgan. Bu hammasi yaxshi edi, chunki chiplar xotira so'rovi bajarilmaguncha harakatsiz bo'lib qoladi va o'qish so'rovi davomida faqat bitta /OE faol bo'ladi. Bu o'zaro to'qnashuvning oldini oldi, lekin noqulay nuance kiritdi. A9 faqat qaysi chip ma'lumot chiqarayotganini aniqlash uchun ishlatilganligi va CPU RAM /WE piniga to'g'ridan -to'g'ri kirish imkoniga ega bo'lganligi sababli, har qanday yozish so'rovlari bajariladi. Bu ROM uchun yaxshi edi, chunki uning yozish rejimi to'g'ridan -to'g'ri 5V ta'minotiga ulanishi bilan inhibe qilingan. Biroq, RAM A9 -dan qat'iy nazar yoziladi. Bu shuni anglatadiki, ROM maydoniga yozishga urinish RAM maydonidagi bir xil joyga yoziladi.

n

Buning echimlaridan biri bu protsessorning chiplar /OE va /WE pinlariga to'g'ridan -to'g'ri kirishi uchun boshqaruv mantig'ini qayta yo'naltirish, keyin MREQ va A12 yordamida qaysi chip /CE boshqarilishini tanlash. Men bu g'oya bilan bordim, lekin asl dizayn kabi to'rtta NOR darvozasi va inverterni ishlatishning o'rniga, men vazifaga juda mos keladigan noqulay kichik chipni topdim. Men faqat chipda mavjud bo'lgan mantiq eshiklarini ishlatadigan sxemani yaratishim kerak edi, lekin bu etarli darajada oson edi. A12 to'g'ridan -to'g'ri NAND va NOR darvozalariga uzatiladi. /MREQ NOR darvozasiga va uning iltifoti NAND eshigiga yuboriladi. NAND eshigi operativ xotira uchun /CE haydash uchun ishlatiladi va NOR chiqishi teskari bo'ladi va ROM /CE haydash uchun ishlatiladi. Bu shuni anglatadiki, har bir chip tanlanmasidan oldin /MREQ past bo'lishi kerak, keyin A12 qaysi birini tanlashini tanlaydi. Ushbu sozlash yordamida endi ROMga yoziladigan har qanday so'rovlar hech narsa qilmaydi. Bu, shuningdek, quvvatni tejaydi, chunki ikkalasi o'rniga faqat bitta chip faol. Mantiqiy chipning o'ziga kelsak, bizda hali ham ishlatilmagan ikkita invertor bor. Biri keyinroq ko'nikib ketadi, lekin biz u erga borganimizda erishamiz.

3 -qadam: tizim holati LEDlari

Tizim holati LEDlari
Tizim holati LEDlari
Tizim holati LEDlari
Tizim holati LEDlari

Ushbu loyihani boshlashdan oldin, men ma'lum bir IC bilan bog'lanishga harakat qilardim, lekin menda muammo bor edi. Nima bo'layotganiga ishonchim komil emas, men atrofni tekshirish uchun LED o'rnatish panelini ishlatardim (o'rnatilgan rezistorli yig'ilishlardan biri). Bu menga nostalji g'oyasini berdi, u hanuzgacha ishlatilmoqda: xotira o'qilgan yoki yozilganligini ko'rsatish uchun LEDlar. U menda mavjud bo'lgan kirish LED bilan birgalikda ishlatilishi kerak edi. Kirish svetodiod /WAIT signal generatoriga ulangan, bu bizga tizim kirishni kutayotganligini bildiradi (men u erga boraman, xavotir olmang). Men IO yozishni ko'rsatish uchun LED qo'shishni o'ylab qoldim, lekin menimcha, chiqish LEDlari o'zgarishi buning ajoyib ko'rsatkichi bo'ladi. O'ylab qarasam, men uni hali qo'shib qo'yishim mumkin. Shunga qaramay, men xotirani o'qish yoki yozish haqida bilish foydali deb bilaman. Yaxshiyamki, bu dasturni tuzatish uchun foydalidir. Men o'z dasturimni ishga solishga urinayotganda, men undan juda ko'p foydalandim: “nega bu xotiraga yozilgan? Hali bunday qilmaslik kerak!”

n

Ushbu LEDlarni boshqarish uchun men to'rtburchaklar NOR darvozasidan foydalanardim. Men hamma eshiklardan foydalandim. Holat signallarini ishlab chiqarish uchun atigi ikkitasi ishlatilgan, biroq chip LEDlarni boshqarishga qodir emas. Ular shuncha quvvatni cho'ktirishga qodir, shuning uchun men boshqa ikkita NOR eshiklarini invertor sifatida ishlatardim va LEDlarni shunday uladim. Chunki bitta LED o'qish uchun, ikkinchisi yozish uchun ishlatiladi va o'qish va yozish so'rovi bir vaqtning o'zida amalga oshmaydi, men har ikkala LED uchun ham bitta rezistorni ishlatib qutula oldim. Men hal qilishim kerak bo'lgan signallarga kelsak, bu ham etarli darajada oson edi. Men barcha xotira o'qish so'rovlarini ko'rsatilishini xohlardim, shuning uchun birinchi NOR eshigida /MREQ va /RD bor edi. Yozish holati biroz murakkabroq edi, lekin xuddi shunday oson. Men hali ham /MREQ -ni bitta kirish sifatida ishlatardim, lekin /WR -ni boshqasi sifatida ishlatish men oldini olishni xohlagan kichik bir nuansga olib keladi. Bu HAMMA yozish so'rovlarini ko'rsatgan bo'lardi. Men faqat haqiqatan ham boshdan kechirganlarni xohlardim. Xo'sh, men buni qanday qilardim? Esingizda bo'lsin, menda tizimni qanday sozlash kerak, faqat RAM yozish mumkinmi? RAM /CE ni NOR darvozasiga boshqa kirish sifatida ishlatardim. Bu shuni anglatadiki, LED faqat RAM tanlanganida va yozish so'rovi yuborilganda yonadi. LED rangi bo'yicha men o'qish ko'rsatkichi sifatida to'q sariq rangni tanladim (lekin men faqat sariq rangni topdim) va yozish ko'rsatkichi sifatida qizil rangni tanladim.

4 -qadam: kirish va chiqish

Kirish va chiqish
Kirish va chiqish
Kirish va chiqish
Kirish va chiqish
Kirish va chiqish
Kirish va chiqish

Oldingi bosqichda, men qolgan qismlarni taxtaga qo'shganimni payqagan bo'lishingiz mumkin. Men simni tasodifan o'zim xohlagan joyga qo'ymasligim uchun joy ajratib qo'ygan edim (shuning uchun men ushbu komponent uchun yangi joyni topishim kerak edi). Siz, shuningdek, kirish kalitlarini joyida qoldirib, elektr simiga ulanganimni payqagan bo'lishingiz mumkin. Men asl joyni eng zo'r joy deb qaror qildim va chiqish LEDlarini yaqin atrofda (tepada) joylashtirishga qaror qildim. Bar displeyining o'ng tomonida kirish mandali joylashgan. Yuqorida chiqish mandali va uning chap tomonida LED drayveri joylashgan. Men ekranni haydovchiga ulashdan boshladim, chunki bu eng oson. Keyin men kalitlarni kirish mandalining kirish tomoniga uladim. Keyin men chiqish mandalining chiqish qismini LED drayveriga uladim. Bu simlarni ulash noqulay buyruqdek tuyulishi mumkin, lekin buning sababi bor edi. Chiqish mandalining kirishi ma'lumotlar avtobusiga, shuningdek kirish mandalining chiqishiga ulanishi kerak edi. Fikr kirish mandalining chiqishlarini chiqish mandalining kirishiga ulash edi, men buni qildim. Keyin men qilishim kerak bo'lgan narsa bu ma'lumotlar avtobusiga ulanish edi. Bu ulanishlar jismonan qayerga ketishi muhim emas edi, chunki ularning hammasi elektrga ulanadi. Endi kompyuter deyarli tayyor.

5 -qadam: kirish va chiqishni tiklash va tugatish

Kechirasiz, bu qadam uchun rasmlar yo'q. Rasmlar uchun oldingi bosqichga qarang.

n

Siz oldingi qadamning oxirgi rasmida payqagan bo'lishingiz mumkin, menda yashil tugma va boshqa mantiqiy chip o'rnatilgan. Chip - bu OR eshigi. /WAIT signalini ishlab chiqarish uchun ikkita eshik ishlatiladi. Xo'sh, protsessordan OR-ing /IORQ va /RD orqali signal ishlab chiqariladi. Chiqish ikkinchi eshikka uzatiladi, u erda yana OR'd tugmasini bosadi. Tugma eshikning kirishini baland qiladi va shu bilan chiqishni yuqori qiladi. Bu chiqish protsessorlarga /WAIT piniga beriladi. Bosilmaganda, qarshilik kirishni past darajada ushlab turadi. Men dastlab 10K rezistordan foydalandim, lekin LS32 aslida kirishga kuchlanish qo'ydi. Rezistor etarli darajada pastga tushmadi va men uni 1K bilan almashtirishga majbur bo'ldim. Yaxshiyamki, IO o'qish so'rovi yuborilganda, birinchi va ikkinchi OR eshiklari protsessorga kutish kerakligini aytadi. Kirish tugmachalarini xohlaganingizga o'rnatganingizdan so'ng, siz tugmani bosasiz va u CPUni kutish holatidan chiqaradi. Yashil "kirish" LED, men ilgari aytganimdek, sim bilan ulangan, shuning uchun /WAIT pin pastga tushganda, u yonadi.

n

Lekin biz hozircha ishimizni tugatmadik. Kirish flip -ga ma'lumot kiritish qachon yaroqli ekanligi to'g'risida xabar berish uchun signal kerak va uni CPUga berish kerak. Bu soat pimi yuqori faol. Avval biz uni faqat tugmachaga ulaganmiz. Bu hali ham to'g'ri variant, lekin bu safar men uni ikkinchi OR darvozasi bilan bir xil chiqishni tanladim. Ushbu IC -da, shuningdek, boshqarilishi kerak bo'lgan /OE pin mavjud. Agar u baland ko'tarilsa, u avtobusga hech qachon ma'lumot kiritmaydi. Agar past tutilsa, u har doim avtobusni boshqarar edi. Buni tuzatish uchun men uchinchi OR eshikdan foydalanardim. Kirishlar /IORQ va /RD bo'lib, chiqish to'g'ridan -to'g'ri mandalning /OE ga o'tadi.

n

Chiqish mandaliga soat pimi ham qo'zg'alishi kerak. Shunga qaramay, u yuqori faollikda. Sxemada men /IORQ va /WR yordamida pinni boshqaradigan to'rtinchi OR eshikni chizdim. Bu shuni anglatadiki, yozish so'rovi olinmaguncha, soat pimi baland ushlab turiladi, keyin u past, keyin yana baland bo'ladi. Bu, ehtimol, yaxshi bo'lardi, chunki ma'lumotlar avtobusida yozishga urinishdan keyin ham u haqida to'g'ri ma'lumotlar bo'lishi kerak edi, lekin muhandislik nuqtai nazaridan, axlat dizayni edi. Men bu xatoni oxirgi rasmlarni olguncha payqamadim, lekin men bu aloqani uzib tashladim, keyin esa xotira boshqaruv mantig'idan foydalanilmagan invertorlardan biriga OR darvozasini uzatdim, keyin uning chiqishini soat piniga uladim.. Men sxemani tuzatdim va men qilgan boshqa xatoni topdim. Men ham uni tuzatdim.

n

Bularning hammasi nihoyat bajarilgach, menda juda oz ish bor edi: qayta o'rnatish davri. Men taxtaga tugma qo'shdim va bir tomonini baland ushlab turish uchun 10K qarshilik ishlatdim. Boshqa tomon to'g'ridan -to'g'ri erga tushadi. Har bir chipga /RESET pinli (protsessor va chiqish mandali) ulangan /RESET chiqishi yuqori tomonda. Qayta ishga tushirish uchun /RESET chiqishiga kondansatör qo'shdim. Fikr shundan iboratki, katta qarshilik qarshiligi nisbatan katta kondansatkichni sekin zaryadlashiga olib keladi va /RESET pimlarini bir necha soatlik tsikllar uchun past ushlab turadi (CPU to'rt soatlik tsiklga muhtoj). Siz, ehtimol, bu sxemaning salbiy tomoni nima ekanligini taxmin qilishingiz mumkin. Bu oldingi versiya bilan bir xil salbiy, chunki u bir xil elektron. Tugma bosilganda, kondansatör tugma orqali qisqaradi. Bu qopqoq uchun ham, tugma uchun ham yomon, shuning uchun agar siz qurilishingizni biroz doimiy qilishni xohlasangiz, uni qayta loyihalashingiz mumkin. Men boshqa 555 ta taymerni bir xil rejimda o'rnatilgani haqida o'ylardim. Ammo shu bilan kompyuter sxemasi tugadi. Vajjaj. Endi uni dasturlash kerak.

6 -qadam: dasturlash

Bu narsani dasturlash dahshat edi. Men Arduino EEPROM dasturchisini qurdim. Ishlamadi. Men boshqasini dizayni va kodlash asosida boshqasini qurdim. Hali ham ishlamadi. Manzil va ma'lumotlar baytlarini qo'lda qo'lda sozlashning haqiqiy va haqiqiy usuliga qaytdim. Qandaydir tarzda men buni chalkashtirib yubordim. Men yana urinib ko'rdim va hali ham noto'g'ri. Men yana qaytib bordim va u bitta bayt bilan o'chirilganini aniqladim, shuning uchun men uni to'g'riladim va nihoyat ishladi, Xudoga shukur.

n

Haqiqiy dasturga kelsak, bu juda murakkab va unga rioya qilish qiyin ko'rinadi, lekin unday emas. Bu juda oddiy, aslida. Uning yarmi raqamlarni ko'chiradi. Qolgan yarmi 16-bitli matematika, shartli sakrash va undan ham ko'proq nusxa ko'chirish raqamlari o'rtasida taqsimlanadi. Shunday qilib, men buni ko'rib chiqaman va sizga qanday ishlashini aytib beraman.

n

Dastlabki ishga tushirish dasturdan foydalanish uchun faqat registr qiymatlarini belgilaydi. Dastur aylanishi biroz murakkabroq, lekin unchalik ko'p emas. Birinchidan, u 00 portidagi A registrga kirishni qabul qiladi. Keyin E registr xotiraga yoziladi. Dastlabki ikkita ko'chadan E registrida keraksiz ma'lumotlar mavjud, shuning uchun biz uni ROM maydonining oxirgi ikki baytiga yozishga harakat qilamiz, chunki u aslida yozilmaydi; keyin manzil ko'rsatgichi (IY) ortadi. D -da saqlangan qiymat keyinroq yozilishi uchun E -ga ko'chiriladi. A keyin D va L ga yuklanadi va E H. HL ga ko'chiriladi, bu erda qiymatlarni taqqoslash ayirish va ZF (nol bayroq) orqali amalga oshiriladi. B va C registrlarida saqlanadigan birinchi qiymat B va C yagona miloddan avvalgi 16-bitli registr sifatida ko'rib chiqiladi. Agar qiymatlar bir xil bo'lsa, dastur to'g'ridan -to'g'ri RAM maydoniga o'tadi, bu erda foydalanuvchi kodi joylashgan deb hisoblanadi. Agar miloddan avvalgi kod mos kelmasa, HL D va E boshlang'ich qiymatlari bilan qayta yuklanadi va miloddan avvalgi bilan bir xilda yana SP qiymatiga solishtiriladi. Agar u mos keladigan bo'lsa, u xuddi shunday natijaga ega, lekin xotiraga qo'shimcha uchta bayt yozilgan. Bayt - bu protsessorni dasturning boshiga qaytishiga olib keladigan kod (dasturiy ta'minotni asl holatiga qaytarish). Agar ikkinchi taqqoslash mos kelmasa, dastur foydalanuvchidan kerakli qiymatni oladi.

n

LD SP, EDBFH; exe kodi (sakrashni qo'shadi)

n

LD IY, FFEH; kodni saqlash uchun dastlabki xotira ko'rsatkichi

n

LD BC, EDC3H; exe kodi (loop yo'q)

n

pastadir; assembler ko'rsatmasi, shuning uchun biz bu qism xotirada qaerda joylashganligini bilishimiz shart emas

n

A, IN (00H); dastur ma'lumotlarini olish

n

LD (IY+00H), E; E saqlanadigan kodni o'z ichiga oladi

n

INC IY; keyingi xotira joyiga o'ting

n

LD E, D; ld D ga E

n

LD D, A; ld A dan D gacha

n

LD H, E; ld E dan H gacha

n

LD L, D; ld D ga L

n

YoKI A; tashish bayrog'ini tiklash

n

SBC HL, miloddan avvalgi; exe kodi 2 kiritilgan bo'lsa, 0 qaytaradi

n

JP Z, 1000H; agar shunday bo'lsa, dasturga o'ting va uni bajaring

n

LD H, E; aks holda, ularni kerakli qiymatlarga yangilang

n

LD L, D.

n

YoKI A; birinchi ayirma tashish bayrog'ini o'rnatgan bo'lishi mumkin. Tozalang

n

SBC HL, SP; exe kod 1 kiritilgan bo'lsa, 0 qaytaradi

n

JP NZ, pastadir; bo'lmasa, jarayonni takrorlang (qiymatni olishdan boshlanadi)

n

LD (IY+00H), C3H; Aks holda, foydalanuvchi dasturining oxirida o'tish kodini kiriting

n

LD (IY+01H), 00H; o'tish asosan dasturiy ta'minotni tiklash vazifasini bajaradi

n

LD (IY+02H), 00H; Agar registrlar o'zgartirilgan bo'lsa, bu to'liq tiklash

n

JP 1000H; o'tish va foydalanuvchi dasturini bajarish

Tavsiya: