Mundarija:

6502 minimal kompyuter (Arduino MEGA bilan) 3 -qism: 7 qadam
6502 minimal kompyuter (Arduino MEGA bilan) 3 -qism: 7 qadam

Video: 6502 minimal kompyuter (Arduino MEGA bilan) 3 -qism: 7 qadam

Video: 6502 minimal kompyuter (Arduino MEGA bilan) 3 -qism: 7 qadam
Video: Sistem Embedded#11- Bahasa C pada MCu Keluarga AVR 2024, Dekabr
Anonim
6502 minimal kompyuter (Arduino MEGA bilan) 3 -qism
6502 minimal kompyuter (Arduino MEGA bilan) 3 -qism

Yana oldinga siljib, men sakkizta mandalni, 8 ta to'rtburchaklar LEDni va 220 Ohmli rezistorni asosiy kartaga qo'shdim. LEDlarning o'chirilishi uchun massivning umumiy pimi va er o'rtasida o'tish moslamasi ham mavjud. 74HC00 NAND eshigi 78LS08 AND darvozasi bilan almashtirildi, darvoza simlari ham o'zgartirildi. AND darvozasi 6522 hozirda $ E000 o'rniga 6000 dollarda joylashganligini bildiradi.

6502 -ni haydash uchun tashqi soatni ulash uchun pin ham mavjud. Bunday ulanish bilan MEGA -ga soat signalini berishning hojati yo'q. MEGA hali ham avvalgidek protsessor bilan nima bo'layotganini kuzatib boradi.

Men mandal uchun 20 pinli 74HC373 ishlatardim, chunki menda biroz bor edi. Bu taxtada bo'lganida yaxshi edi, lekin 74HC573 avtobusga mos keladi va ko'p simlarni tejaydi. UCN5801A, bu 22 pinli IC, kontaktlarning zanglashiga olib kelishi mumkin, lekin simlar biroz boshqacha bo'ladi.

Yuqori, bitta to'q sariq rangli LED - bu quvvat ko'rsatkichi va pastki chapdagi qizil - bu yozilish qachon sodir bo'lganligini ko'rsatadi. Agar taxta yuqori tezlikda ishlasa, ikkinchisi ahamiyatsiz bo'ladi.

O'zgartirilgan sxema yuqorida (74HC573 bilan).

1 -qadam: Namoyish dasturlari

Namoyish dasturlari
Namoyish dasturlari

6502 monitoriga ikkita oddiy namoyish dasturi kiritilgan va ularning demontaj qilingan kodi shu erda.

Bu dastur 6502 A registriga 1 ta yuklaydi va uni mandalda saqlaydi. Keyin u A registriga 1 ni qo'shadi va uni mandalda saqlaydi. Keyin u $ 1005 ga qaytadi va jarayon abadiy takrorlanadi.

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

Bu dastur avval 6522 B portining DDR ni chiqishga o'rnatadi. Keyin u portda 55 dollar (B01010101) va mandalni saqlaydi. Keyin registr 1 qadam o'ngga aylanadi va hozirda $ AA (B10101010) ni ushlab turadi. Bu yana B portida va mandalda saqlanadi. Dastur $ 1005 ga qaytadi va abadiy davom etadi.

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

Sizning orangizdagi o'tkir ko'zli odamlar, rangli LEDlar yashil ranglardan farqli o'laroq naqsh ko'rsatayotganini payqashi mumkin. Buning sababi shundaki, umumiy qo'rg'oshin rangli 5V ga, yashil rangdagi esa erga ulangan.

Ushbu kod satrini program2 yoki program3 ga o'zgartiring.

setDataPins (program3 [ofset]);

6502 Assembler va Disassembler sizning dasturlaringizni kodlashga yordam beradigan foydali vositalardir.

2 -qadam: EEPROM qo'shish

EEPROM qo'shish
EEPROM qo'shish
EEPROM qo'shish
EEPROM qo'shish
EEPROM qo'shish
EEPROM qo'shish

EEPROM taxtasi uchun men 950 x 650 mm tasma taxtasi va 19 mm erkak bosh pimlarini ishlatib, taxtani ostidan tozalashga ruxsat berdim. Bu karta quyida joylashgan 6502 taxtasiga ulanadi. EEPROM ATMEL 28C256 bo'lib, 28 ta pinli va 32 kx 8 bitli xotiraga ega. Bu hozirda ishlatilayotgan kichik dasturlar uchun etarli emas.

Men bu taxtaning elektron sxemasini qilmaganman, lekin u quyida 6502 taxtasiga qanday ulanishi aniq. Ushbu EEPROM chiplari avtobusga mos kelmaydi, shuning uchun ularni alohida pinlarga ulash kerak, shuning uchun ham "yashil va oq spagetti". Men oldingi taxtadagi ko'prik muammosini taxtaning pastki qismidagi ma'lumotlar liniyalarini ulash orqali hal qildim.

EEPROM -ning 14 ta manzil pinlari chap tarafdagi tegishli pinlarga (yashil simlar), kirish -chiqish pinlari esa o'ngdagi ma'lumotlar pinlariga (oq simlar) ulanadi. 27 -pin (WE) 28 -pin (5v) ga ulangan, 22 -pin (OE) erga ulangan va 20 -pin (Idoralar) NAND eshigiga ulangan. asosiy taxta. Bu shuni anglatadiki, bu pin baland bo'lganda, NAND eshigi EEPROMning IE piniga past signal beradi, bu uni faol qiladi. Bu sozlash bilan, bu EEPROMni faqat 6502 tomonidan o'qilishi mumkinligini bildiradi.

EEPROM xotira xaritasida eng yuqori 32kda yashaganligi uchun, $ FFFC va $ FFFD 6502 uchun boshlang'ich manzilni qayta o'rnatilgandan keyin ushlab turishi mumkin. 6522 manzillari 6000 dan 600F gacha va mandal 4100 dollarni tashkil qilganda, u xotira ziddiyatlarini to'xtatadi.

NMI vektori ($ FFFA va $ FFFB) va BRK / IRQ vektori ($ FFFE anf $ FFFF) ham xuddi shunday yozilishi mumkin edi.

3 -qadam: EEPROM dasturlash

EEPROM dasturlash
EEPROM dasturlash
EEPROM dasturlash
EEPROM dasturlash

EEPROMda dasturni saqlash uchun unga dasturchi kerak. Men bortli taxtadan, Arduino Pro Mini, ikkita 74HC595 va ZIF rozetkasidan yasadim. Dastlab, dasturchi AT28C256 ga qaraganda kamroq manzil satriga ega bo'lgan AT28C16 uchun yaratilgan, shuning uchun uni o'zgartirish kerak edi.

O'chirish diagrammasi ushbu ikkala EEPROMni qanday ulash kerakligini ko'rsatadi. Suratdan ko'rinib turibdiki, ikkita 595 ta chip teskari va diagrammada ko'rsatilgandek emas. 595/1 ning 1 dan 7 gacha pinlari EEPROMning A1 dan A7 gacha, qaysi turidan qat'i nazar, mos keladi. Bu 7 ta ulash simini tejaydi. Kengash endi biroz qattiq ko'rinadi va buning sababi shundaki, men dastlab 24 pinli DIL rozetkasidan foydalanganman, endi uning o'rnini 28 pinli ZIF ulagichi egallagan.

Mening taxtam bilan ishlaydigan dastur kiritilgan. Dastur har qanday Arduino va 595 bilan ishlaydi. Men 5v Pro Mini -ni tanladim, chunki u ixcham va arzon narxda.

4 -qadam: EEPROM dasturlari

EEPROM dasturlari
EEPROM dasturlari

EEPROM dasturchisida uchta oddiy dastur mavjud. Ulardan foydalanish uchun kerakli satrni belgilang.

// 6522 yil A portidan o'qing

// const bayt ma'lumotlari = {0xA9, 0x00, 0x8D, 0x03, 0x60, 0xAD, 0x01, 0x60, 0x4C, 0x05, 0x90, 0x00};

Dastur tugagandan so'ng xotira dampini ko'rsatadi. Dasturning quyi qismi sizga yozmoqchi yoki o'chirmoqchi bo'lgan narsangizni to'liq nazorat qilish imkonini beradi, $ FFFC & $ FFFD ni o'rnatadi va keyin berilgan diapazon tarkibini ko'rsatadi. Parametrlarni kerakli tarzda yozing yoki o'zgartiring. Manzillarni o'nlik formatda ham kiritish mumkin.

// o'chirishEEPROM (422, 930, 0x41); // EEPROMning to'liq yoki bir qismini o'chirish uchun foydalaning - boshlash, tugatish, bayt

Serial.println ("EEPROM dasturlash"); miqdori = program_numeric_data (0x1000); writeEEPROM (0x7ffc, 0x00); // $ FFFC ni 6502 writeEEPROM (0x7ffd, 0x90) ga o'rnating; // $ FFFD ni 6502 ga o'rnating // writeEEPROM (0x1000, 0xA9); // 1 bayt ma'lumot yozing Serial.println ("bajarildi"); String konturi = "Yozma" + (String) miqdori + "bayt"; Serial.println (kontur); Serial.println ("EEPROMni o'qish"); printContents (0x0000, 0x112f); // printContents (0x7ff0, 0x7fff) ni ko'rsatish uchun diapazonni o'rnating; // EEPROM -da oxirgi 16 baytni o'qiydi

Dasturning qisqartirilgan chiqishi yuqorida.

5 -qadam: 6502 -ni EEPROM -dan ishga tushirish

6502 -ni EEPROM -dan ishga tushirish
6502 -ni EEPROM -dan ishga tushirish
6502 -ni EEPROM -dan ishga tushirish
6502 -ni EEPROM -dan ishga tushirish
6502 -ni EEPROM -dan ishga tushirish
6502 -ni EEPROM -dan ishga tushirish

Dasturlashtirilgan EEPROM endi o'z taxtasiga joylashtirilishi mumkin va bu cho'chqa go'shti asosiy 6502 taxtasiga, cho'chqa go'shti esa MEGA -ga o'rnatiladi. Yuqoridagi yon va yuqori ko'rinishdagi fotosuratlar uning bir -biriga qanday mos kelishini ko'rsatadi.

6502 endi $ FFFC va $ FFFD ($ 9000) boshlang'ich vektorini o'qishi va keyin o'sha erda saqlanadigan dasturga o'tishi mumkin. MEGA hali ham soat signalini beradi va uning dasturini faqat soat signalini berish va 6502 ni kuzatish uchun o'zgartirish kerak. Buning uchun o'zgartirilgan dastur taqdim etilgan.

Ishlayotgan fotosuratda ushbu dastur ishlayotgani ko'rsatilgan.

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

Kommutatorlar A portiga ulangan va dastur B va 74HC373 portlarida o'qilayotgan qiymatni ko'rsatadi (hozirda u yashiringan). kalitlar erga ulangan va LEDlar 5v ga ulangan. EOR #$ FF mandalga yozishdan oldin bitlarni siljitish orqali turli xil naqshlarni ko'rsatuvchi mandal va port B muammosini tuzatadi.

6 -qadam: Tashqi vaqt signali

Tashqi vaqt signallari
Tashqi vaqt signallari

Agar taxtaning yuqori qismidagi pimga soat signali qo'llanilsa, 6502 endi MEGA -dan mustaqil ishlashi mumkin. Albatta, u elektr ta'minotiga muhtoj. Men turli soatlar bilan tajriba o'tkazdim va hatto 6502 ni 1MGts da kristalli osilator bilan ishladim. MEGA tezroq tezlikni ushlab tura olmaydi, shuning uchun uni olib tashlash kerak.

Men ham 555 taymerdan chiqishni sinab ko'rdim, lekin bu ishlamayapti. Menimcha, bu kvadrat to'lqin emasmi? CD4017 chiqishlaridan biriga ulanganida, u 6502 -ni boshqarardi. Men soat signalini olish uchun yuqoridagi to'plamlardan biriga yamoq qo'ydim.

Men hali ham soat signalini olishning turli usullarini ko'rib chiqayapman.

7 -qadam: Xulosa

Men qandaydir murakkab sxemalarni tuzish va minimal qismlar bilan ishlash uchun juda oddiy "kompyuter" ni olishni ko'rsatdim. To'g'ri, hozirda kompyuter katta ish qila olmaydi yoki kelajakda ham shunday qilishi mumkin.

80 -yillarning boshlarida, VIC20 -da, men ajoyib mashinaga hayron bo'lardim va uni qanday yig'ishni boshlash haqida birinchi tasavvurga ega emas edim. Vaqt o'tdi va texnologiya ham shunday bo'ldi, lekin baribir asoslarga qaytish va noldan qurgan narsangiz bilan faxrlanish hali ham yoqimli.

Bu kompyuterni yanada rivojlantirish uchun men 2k SRAMni 0000 dollardan 2047 dollarga qo'yib, 1 MGtsli osilatorni qo'shmoqchiman. Ehtimol, men CD4040 (12 bosqichli ikkilik to'lqin hisoblagichi / bo'luvchi) kabi narsalarni qo'shaman, shunda men har xil soat tezligiga kira olaman.

Hatto faqat miltillovchi chiroqlar emas, balki matnli chiqish uchun LCD displey qo'shilishi mumkin. LCD displeyni ishga tushirish uchun zarur bo'lgan katta dasturlar bilan ishlash uchun EEPROM dasturchisini ham o'zgartirish kerak bo'ladi.

MEGA 6502 -ni ishga tushirish uchun keraksiz bo'lib qolsa -da, u hali ham mashina kodini tuzatishda yordam beradi. Hamma biladiki, mashina kodi har doim xatolarni o'z ichiga oladi!

Tavsiya: