klon Atari 2600
Moderátor: Moderátoři
klon Atari 2600
Jak zložité je poskladať emulator Atari 2600 a z čoho?
Z niečoho takého mám ten ROM čip
https://obrazki.elektroda.pl/5748260000_1716467363.jpg
https://obrazki.elektroda.pl/1443978500_1716467364.png
Na rovnakú adresnú a dátovú zbernicu sa pripájajú kartridže s hrami, takže dáta v tom čipe musia byť štandardné.
http://www.visual6502.org/JSSim/index.html
Má len 56 inštrukcií, 6 registrov (A, Y, X, PC, S a P) a vo verzii 6507 len 13 bitovú adresnú zbernicu a žiadné prerušenie.
To sa musí dať nahradiť dvoma, maximálne troma arduinami.
https://www.mdawson.net/vic20chrome/cpu ... y_1976.pdf
https://web.archive.org/web/20160329090 ... 2_riot.pdf
Ech, procesor, aj porty sú jednoduché, ale televízny čip sa ani neviem rozhodnúť, ktorý by som mal emulovať.
https://www.retrosix.wiki/tia-chip-atari-2600
Tak nič. Odkladám späť do šuflika.
Ja myslím, že by to šlo.
Arduino Pro MINI s procesorom Atmega328P, port D multiplexovaný medzi spodnú adresu cez dva obvody 7475 a dáta cez dva obvody 4066, port B pre hornú adresu a na porte C výstup hodín ϕ2, výstup R/W a vstup RDY. Hodinami ϕ2 by sa zároveň aktivovali spínače 4066 pre dáta, výstup R/W by bol zároveň trigerom pre 7475. Operačný kód inštrukcie načítaný cez port D by bol zároveň adresou vo flash ROM v Arduine, kde by bol kód pre vykonanie danej inštrukcie.
Napríklad kód pre inštrukciu NOP by bol na adrese (11)10 1010 1110 1010 b asi takto:
set ϕ2 to low (address phase)
set port D direction to output
write PCL variable to port D
set R/W to low
set R/W to high (trigger 7475 latches)
write PCH variable to port C
set port D direction to input
set ϕ2 to high (data phase)
wait for RDY input
read port D to ZL register
read port D to ZH register
set bit 13 of Z register high
indirect jump to address in Z register
Pri 16MHz Arduine by sa to do 1MHz emulácie mohlo stihnúť. Alebo je niečo, čo by takto nešlo stihnúť?
Tohle je projekt, ktetý sr hodí nacpat spíš do nějakého CPLD než do hromady Arduin.
https://github.com/electrojustin/check-2600