Агуулгын хүснэгт:

6502 Хамгийн бага компьютер (Arduino MEGA -тай хамт) 3 -р хэсэг: 7 алхам
6502 Хамгийн бага компьютер (Arduino MEGA -тай хамт) 3 -р хэсэг: 7 алхам

Видео: 6502 Хамгийн бага компьютер (Arduino MEGA -тай хамт) 3 -р хэсэг: 7 алхам

Видео: 6502 Хамгийн бага компьютер (Arduino MEGA -тай хамт) 3 -р хэсэг: 7 алхам
Видео: История ПК и видеокарт. Как за год из десятка компаний осталось только две. 2024, Долдугаар сарын
Anonim
6502 Хамгийн бага компьютер (Arduino MEGA -тай хамт) 3 -р хэсэг
6502 Хамгийн бага компьютер (Arduino MEGA -тай хамт) 3 -р хэсэг

Цаашид үргэлжлүүлэн би үндсэн самбар дээр Octal Latch, 8 тэгш өнцөгт LED, 220 Ом эсэргүүцэлтэй массив нэмсэн. Түүнчлэн массивын нийтлэг зүү ба газардуулгын хооронд холбогч байдаг бөгөөд ингэснээр LED -ийг унтрааж болно. 74HC00 NAND хаалгыг 78LS08 AND хаалгаар сольж, хаалганы утсыг мөн өөрчилсөн байна. AND хаалга нь 6522 нь E000 долларын оронд 6000 доллараар байрлаж байна гэсэн үг юм.

Мөн 6502 -ийг жолоодох гадаад цагийг холбох зүү байдаг. Ийм холболттой бол MEGA нь цагийн дохио өгөх шаардлагагүй болно. MEGA нь процессор дээр юу болж байгааг урьдын адил хянадаг.

Би жаахан байсан тул түгжээнд 20 зүү 74HC373 ашигласан. Талхны тавцан дээр байхад энэ нь зүгээр байсан, гэхдээ 74HC573 нь автобусанд тохирсон бөгөөд маш олон утас хэмнэх байсан. 22 зүү IC болох UCN5801A -ийг мөн хэлхээнд авч үзэж болох боловч утас нь арай өөр байх болно.

Дээд, ганц улбар шар өнгийн LED нь тэжээлийн индикатор бөгөөд зүүн доод улаан гэрэл нь бичлэг хийгдэж байгааг илтгэнэ. Самбарыг илүү өндөр хурдтай ажиллуулах тохиолдолд сүүлийнх нь ач холбогдолгүй болно.

Өөрчлөгдсөн хэлхээ нь дээр байна (74HC573 -тэй).

Алхам 1: Үзүүлэх програмууд

Үзүүлэх хөтөлбөрүүд
Үзүүлэх хөтөлбөрүүд

6502 дэлгэцэнд хоёр энгийн үзүүлэнгийн програм багтсан бөгөөд тэдгээрийн задалсан код энд байна.

Энэ програм нь 1 -ийг 6502 A бүртгэлд ачаалж түгжээнд хадгалдаг. Дараа нь A бүртгэлд 1 -ийг нэмж, түгжээнд хадгалдаг. Дараа нь 1005 доллар руу буцаж очоод энэ үйл явц үүрд давтагдана.

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

Энэ програм нь эхлээд 6522 порт B -ийн DDR -ийг гаралтанд тохируулдаг. Дараа нь боомт болон түгжээнд 55 доллар (B01010101) хадгалдаг. A бүртгэл дараа нь 1 алхам баруун тийш эргэж, одоо $ AA (B10101010) хадгална. Үүнийг дахин В порт болон түгжээнд хадгална. Хөтөлбөр нь 1005 доллар болж, үүрд үргэлжлэх болно.

* = 1000

1000 A9 FF LDA #$ FF 1002 8D 02 60 STA $ 6002 1005 A9 55 LDA #$ 100 100 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

Таны дунд байгаа хурц нүдтэй хүмүүс өнгөт LED нь ногооноос өөр хэв маягийг харуулж байгааг анзаарч магадгүй юм. Учир нь нийтлэг тугалга нь өнгөт утсан дээр 5в, ногоон дээрх нийтлэг утас нь газартай холбогддог.

Энэ кодын мөрийг program2 эсвэл program3 болгон өөрчилнө үү.

setDataPins (program3 [offset]);

6502 Assembler ба Disassembler нь таны програмыг кодлоход туслах хэрэгсэл юм.

Алхам 2: EEPROM нэмэх

EEPROM нэмж байна
EEPROM нэмж байна
EEPROM нэмж байна
EEPROM нэмж байна
EEPROM нэмж байна
EEPROM нэмж байна

EEPROM хавтангийн хувьд би 950 x 650 мм хэмжээтэй туузан хавтан, 19 мм хэмжээтэй эрэгтэй толгойн зүү ашиглан самбарыг доороос нь цэвэрлэх боломжтой болгосон. Энэхүү самбар нь доорх 6502 самбарт залгагддаг. EEPROM нь ATMEL 28C256 бөгөөд 28 зүүтэй бөгөөд 32кх 8 битийн санах ойтой. Энэ нь одоогийн ашиглаж буй жижиг програмуудын хувьд хангалттай юм.

Би энэ самбарын хэлхээний диаграмыг хийгээгүй боловч доорх 6502 самбартай хэрхэн холбогдож байгаа нь маш энгийн юм. Эдгээр EEPROM чипс нь автобусанд ээлтэй биш тул тус бүрийг "ногоон, цагаан спагетти" -тэй холбох хэрэгтэй. Би өмнөх самбар дээрх гүүрэн гарцын асуудлыг самбарын доод талд өгөгдлийн шугамыг холбож шийдсэн.

EEPROM -ийн 14 хаягийн зүү нь зүүн гар талын зохих тээглүүрүүд (ногоон утаснууд), I/O зүү нь баруун талын өгөгдлийн хавчууруудтай (цагаан утаснууд) холбогддог. 27 (WE) зүү нь 28 (5v) зүү, 22 (OE) зүү, 20 (CE) зүү нь NAND хаалгатай холбогдсон байна. NAND хаалганы 2 оролт нь A15 -тай холбогдсон байна. үндсэн самбар. Энэ нь энэ зүү өндөрт гарах үед NAND хаалга нь EEPROM -ийн CE зүү рүү бага дохио өгч идэвхжүүлдэг гэсэн үг юм. Энэхүү тохиргоог хийснээр EEPROM -ийг зөвхөн 6502 унших боломжтой гэсэн үг юм.

EEPROM нь санах ойн газрын зураг дээрх шилдэг 32к -т амьдардаг тул $ FFFC ба $ FFFD нь 6502 -ийн анхны хаягийг дахин тохируулсны дараа хадгалах боломжтой гэсэн үг юм. 6522 хаяг нь $ 6000 -аас $ 600F хооронд, түгжээ нь 4100 доллар байх тул санах ойн зөрчилдөөнийг зогсооно.

NMI вектор ($ FFFA ба $ FFFB) ба BRK / IRQ вектор ($ FFFE anf $ FFFF) -ийг мөн адил бичиж болно.

Алхам 3: EEPROM програмчлах

EEPROM програмчлах
EEPROM програмчлах
EEPROM програмчлах
EEPROM програмчлах

EEPROM дээр програм хадгалахын тулд програмист хэрэгтэй. Би нэг туузан самбар, Arduino Pro Mini, 74HC595 хос, ZIF залгуураар хийсэн. Эхэндээ програмист нь AT28C256 -аас цөөн тооны хаягийн шугамтай байсан тул үүнийг өөрчлөх шаардлагатай байсан.

Хэлхээний диаграм нь эдгээр EEPROM -ийг хоёуланг нь хэрхэн яаж холбохыг харуулж байна. Хоёр 595 чип нь дээрээс доошоо харсан бөгөөд диаграммд үзүүлсэн шиг биш байгаа нь зурагнаас тодорхойгүй байна. 595/1 -ийн 1 -ээс 7 -р зүү нь EEPROM -ийн A1 -ээс A7 -тэй нийцдэг. Энэ нь 7 холбох утсыг хэмнэдэг. Удирдах зөвлөл одоо жаахан нягт харагдаж байна, учир нь би анх 24 зүү DIL залгуурыг ашиглаж байсан бөгөөд одоо илүү том 28 зүүтэй ZIF залгуураар солигдсон юм.

Миний самбартай ажилладаг програм багтсан болно. Хөтөлбөр нь ямар ч Arduino болон 595 -тай зураг дээр үзүүлсэн шиг ажиллах болно. Би 5v Pro Mini -ийг сонгосон, учир нь энэ нь авсаархан бөгөөд хямдхан байдаг.

Алхам 4: EEPROM програмууд

EEPROM програмууд
EEPROM програмууд

EEPROM програмист дээр гурван энгийн програм байдаг. Тэдгээрийг ашиглахын тулд ашиглахыг хүссэн мөрийнхөө комментийг бичихэд л хангалттай.

// 6522 оны А портоос уншина уу

// const байтын өгөгдөл = {0xA9, 0x00, 0x8D, 0x03, 0x60, 0xAD, 0x01, 0x60, 0x4C, 0x05, 0x90, 0x00};

Хөтөлбөр дууссаны дараа санах ойн хаягийг харуулдаг. Доорх програмын хэсэг нь бичих эсвэл устгахыг хүссэн зүйлээ бүрэн хянах боломжийг танд олгож, $ FFFC & $ FFFD -ийг тохируулж, дараа нь тухайн мужийн агуулгыг харуулна. Параметрүүдийг хүссэнээрээ тайлбарлахгүй эсвэл өөрчлөх хэрэгтэй. Мөн хаягийг аравтын бутархай хэлбэрээр оруулж болно.

// erEEPROM (422, 930, 0x41); // EEPROM -ийг бүхэлд нь эсвэл хэсэгчлэн устгахын тулд ашиглана уу - эхлэх, дуусгах, байт

Serial.println ("EEPROM програмчлах"); хэмжээ = program_numeric_data (0x1000); бичихEEPROM (0x7ffc, 0x00); // $ FFFC -ийг 6502 writeEEPROM (0x7ffd, 0x90) болгож тохируулна уу; // $ FFFD -ийг 6502 -д тохируулах // writeEEPROM (0x1000, 0xA9); // 1 байтын өгөгдлийг бичих Serial.println ("хийсэн"); String тойм = "Бичсэн" + (String) хэмжээ + "байт"; Serial.println (тойм); Serial.println ("EEPROM унших"); printContents (0x0000, 0x112f); // printContents (0x7ff0, 0x7fff) харуулах хүрээг тохируулах; // EEPROM дээрх сүүлийн 16 байтыг уншдаг

Хөтөлбөрийн товчилсон гаралт дээр байна.

Алхам 5: 6502 -ийг EEPROM -ээс ажиллуулах

6502 -ийг EEPROM -ээс ажиллуулж байна
6502 -ийг EEPROM -ээс ажиллуулж байна
6502 -ийг EEPROM -ээс ажиллуулж байна
6502 -ийг EEPROM -ээс ажиллуулж байна
6502 -ийг EEPROM -ээс ажиллуулж байна
6502 -ийг EEPROM -ээс ажиллуулж байна

Програмчлагдсан EEPROM -ийг одоо түүний самбар дээр оруулах боломжтой бөгөөд энэ гахайн мах нь MEGA -д хадгалагддаг 6502 үндсэн самбар дээр бэхлэгддэг. Дээрх хажуу ба дээд талын гэрэл зургууд нь энэ бүхэн хоорондоо хэрхэн нийцэж байгааг харуулж байна.

6502 нь $ FFFC ба $ FFFD ($ 9000) эхлэх векторыг уншиж, дараа нь тэнд хадгалагдсан програм руу шилжих боломжтой болно. MEGA нь цагийн дохиог өгдөг хэвээр байгаа бөгөөд түүний програмыг зөвхөн цагийн дохиог өгч, 6502 -ийг хянахын тулд өөрчлөх шаардлагатай байна. Үүнийг хийхийн тулд өөрчилсөн програмыг өгсөн болно.

Ажиллаж буй зураг нь энэ програм ажиллаж байгааг харуулж байна.

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

Шилжүүлэгчид нь А порт руу залгагдсан бөгөөд програм нь В порт болон 74HC373 дээр уншиж буй утгыг харуулдаг. унтраалга нь газардуулгатай, LED нь 5в -т холбогдсон байна. EOR #$ FF нь түгжээ болон В порт өөр өөр хэв маягийг харуулах асуудлыг засч залруулахын өмнө битийг эргүүлснээр засдаг.

Алхам 6: Гадаад цагийн дохио

Гадаад цагийн дохио
Гадаад цагийн дохио

Хэрэв самбарын дээд хэсэгт байрлах зүү дээр цагийн дохио өгвөл 6502 нь MEGA -аас хараат бус ажиллах боломжтой болсон. Мэдээжийн хэрэг цахилгаан хангамж хэрэгтэй болно. Би өөр өөр цагийг туршиж үзсэн, тэр ч байтугай болор осциллятороор 6502 -ийг 1МГц давтамжтайгаар ажиллуулж байсан. MEGA нь илүү хурдан хурдыг гүйцэж чаддаггүй тул үүнийг арилгах шаардлагатай байна.

Би 555 таймерын гаралтыг туршиж үзсэн боловч энэ нь ажиллахгүй байна. Миний бодлоор энэ нь дөрвөлжин долгион биш юм болов уу? CD4017 гаралтын аль нэгэнд холбогдсон үед энэ нь 6502 -ийг жолоодож чадсан юм. Би цагны дохиог авахын тулд дээрх иж бүрдэл хэсгүүдийн нэгийг бөглөсөн.

Цагийн дохио авахын тулд би янз бүрийн аргыг хайж байгаа хэвээр байна.

Алхам 7: Дүгнэлт

Би зарим нарийн төвөгтэй хэлхээг хэрхэн бүтээж, хамгийн бага хэмжээний эд ангиудтай ажиллахад маш энгийн "компьютер" авахыг харуулсан. Мэдээжийн хэрэг, компьютер одоогоор тийм ч их зүйлийг хийж чадахгүй байгаа эсвэл ирээдүйд хийх магадлалтай байна.

80 -аад оны эхээр VIC20 -той байхдаа би гайхалтай машиныг гайхдаг байсан бөгөөд үүнийг хэрхэн яаж эхлүүлэх талаар анхны төсөөлөлтэй байгаагүй. Цаг хугацаа урагшилж, технологи ч өөрчлөгдөж байгаа боловч анхан шатны мэдлэгтээ эргэн орж, эхнээс нь бүтээсэн зүйлээрээ бахархах сайхан хэвээр байна.

Энэ компьютерийг цаашид хөгжүүлэхийн тулд би 2K SRAM -ийг 0000-2020 доллараар тавьж, 1 МГц -ийн осциллятор нэмж оруулах бодолтой байна. Би CD4040 (12 үе шаттай хоёртын долгионы тоолуур / хуваагч) гэх мэт зүйлийг нэмж оруулах болно, ингэснээр би өөр өөр цагийн хурдыг ашиглах боломжтой болно.

Зөвхөн анивчдаг гэрэл гэхээсээ илүү текст гаралтыг өгөхийн тулд LCD дэлгэц нэмж болно. EEPROM програмистыг LCD дэлгэц ажиллуулахад шаардлагатай том програмуудтай ажиллахын тулд өөрчлөх шаардлагатай болно.

MEGA нь 6502 -ийг ажиллуулахад шаардлагагүй болж байгаа ч энэ нь машины кодыг дибаг хийхэд тустай хэвээр байна. Хэн ч мэдэж байгаагаар машины код үргэлж алдаатай байдаг!

Зөвлөмж болгож буй: