Serial flash namiesto mg. pre Didaktik Gama (TAPaTAPa) a iné
Napsal: 16 bře 2018, 23:54
(Pôvodný názov: Použitie serial flash namiesto magnetofónu pre Didaktik Gama)
(krycie meno: projekt TAPaTAPa)
(ďalej popisujem aj iné vylepšenia pre Didaktik M)
Tak som vyrobil niečo nové, a nedá mi sa nepodeliť s ostatnými. Je to externá pamäť simulujúca pásku, určená pre Didaktik M, Gama, ZX Spectrum, a kompatibilné počítače, ktoré majú buď zabudovaný, alebo pripojený interface 8255.
Mám tu peknú zbierku starých BIOS čipov z PC, teda serial flash 1 Mbyte až 4 Mbyte, a tak ma napadlo vyrobiť z nich niečo užitočné. Krycí názov TAPaTAPa. Projekt začínal takto:
Malá elektronika pripojená na interface (TTL), na ňu by sa napájala "páska", teda krabička s dvoma flash obvodmi a jedným prepínačom (ochrana proti zápisu). Dvoma preto, lebo jeden (24LC04) by uchovával pozíciu na páske (tá by sa prepísala po každom čítaní), a prípadne aj nejaký popis pásky, názov a tak. Druhý napríklad 25Q32, by obsahoval samotný TAP súbor s hromadou hier. Prepínač pre ochranu proti zápisu by bol napojený na pin WP (write protect). Samotný 25Q32 by sa naprogramoval v programátore na PC.
Obslužný program by bol v ROM a nahrádzal by klasickú LOAD rutinu. Fungoval by takto: prečítal by pozíciu pásky z 24xx (3 byty), z 25xx by prečítal prvé dva byty z tejto pozície (dĺžka bloku v TAP súbore), pripočítal ich a uložil naspäť do 24xx. Tým by sa pozícia posunula na nasledujúci blok na páske. Z 25xx by načítal blok ako klasický LOAD (alebo VERIFY). Keby sa dĺžka bloku rovnala 0 alebo 65535, páska by sa "pretočila", teda by sa nastavila pozícia 0. Nakoľko prázdna eeprom obsahuje samé #FF, nebolo by treba nič upravovať, na konci TAP súboru by sa sám vrátil na začiatok.
Momentálne je už hotovo, projekt je dokončený, tu je výsledok:
Hotovo. Prikladám TAPaTAPa ROM, vo formáte priamo ROM (=BIN), a tiež TAP (keby ju niekto chcel nahrať do Spectra s LOAD"" CODE...).
ROM TAPaTAPa - ROMka Didaktiku M (rovnaká ako ROM ZX Spectra 48k, len má tučné písmo a iný tón po stlačení klávesu) so špeciálnou LOAD rutinou. Využíva interface MHB8255, a to takto: port A je nastavený ako vstup, slúži aj ako Kempston joystick, port B je výstup, a port C je tiež výstup, lebo stránkovanie Didaktiku Gama je na PC0.
Samotný TAPaTAPa využíva tieto porty:
vstup:
PA7 - data (do SO),
výstupy:
PB4 - data (do SI),
PB5 - CLK,
PB6 - /CS,
PB7 - LED.
Nahrávanie je riešené klasicky ako z pásky, LOAD "", tiež MERGE a VERIFY. Samozrejme sa dá použiť aj meno, napríklad LOAD "PSSST", potom to funguje rovnako, ako by ste nechali spustený magnetofón, teda sa budú vypisovať názvy, až kým sa nenájde konkrétny program. Rovnako fungujú aj všetky programy, ktoré volajú rutinu LOAD z adresy 1378 (alebo 1366). Rýchlosť nahrávania je 48 KB za 11 sekúnd.
Chybové signalizácie:
BORDER bliká červeno-bledomodro = chyba čítania z 24xx (alebo žiadny modul),
BORDER bliká fialovo-bledomodro = chyba zápisu do 24xx,
BORDER bliká modro-bledomodro = chyba čítania z 25xx (alebo je na jej začiatku #FFFF alebo #0000).
Funkcia SAVE nieje použitá, ostala pôvodná s výstupom na magnetofón.
Pridaná funkcia "rewind", nastaví pozíciu modulu TAPaTAPa na začiatok. Je v ROM na adrese 14567, spustiť sa dá napríklad s RANDOMIZE USR 14567.
Pamäť 25xx sa programuje v programátore v PC. Zmaže sa, a nahrá sa jeden obrovský TAP súbor. TAP súbory sa dajú ľahko spájať, napríklad pod Windows v príkazovom riadku: COPY /B *.TAP TAPA.BIN pospája všetky TAPky v aktuálnom priečinku do jedného súboru tapa.bin. Poradie nieje určené. 25xx sa dá zmazať a programovať aj priamo zo Spectra, stačí dorobiť software.
Ešte k tomu Didaktiku Gama. Nepoužil som jeho pôvodnú ROM, lebo som o tom čítal že vraj tam poopravovali chyby v ROM a narobili aj nové, vďaka čomu nefungujú niektoré hry, a hlavne tie čo používajú IM2 s I=57. Vďaka ROM z Didaktiku M funguje IM2 aj s I=57, 58, aj 59. Nieje teda ale ošetrené stránkovanie pamäte z BASICu, treba si pred OUT 127,1 nastaviť ramtop pod 32768 (CLEAR 32767), inak sa odstránkuje zásobník a nasleduje zvyčajne reset. Tiež tam tým pádom niesu extra integrované rutiny, ktoré mala iba Gama (obsluha tlačiarne a ja neviem čo všetko mala Gama naviac). V prípade záujmu môžem poskytnúť upravenú priamo ROMku Gamy, ale bude bez rewindu.
TAPaTAPa rutina sa nachádza v ROM od adresy 1378 (dĺžka 162 bajtov) plus 15361 (dĺžka 254 bajtov), rutina rewind je od 14567 (dĺžka 24 bajtov).
TAPaTAPa - výroba hardwéru, pre Didaktik Gama model 88. Okrem výroby nasledovných PCB bude treba ešte dve úpravy Didaktiku Gama: vymeniť pôvodnú EPROM za EPROM s TAPaTAPa (výhoda je, že Gama má EPROM v pätici), a vyviesť +5V na konektor interface, pin 30 (vpravo hore, pôvodné OUT2 samozrejme odpojiť). Gama tam má OUT2, (D40 tam má PC0 a UR4 tam má +5V, pekný chaos). Dá sa použiť aj iný pin, prípadne priviesť +5V z iného zdroja, na PCB som na tento účel dal prepojku na odpojenie pinu 30. Treba ale brať ohľad na to, že 5V napája aj Kempston joystick (pokiaľ má napríklad autofire).
Samotné návrhy PCB sú v prílohe. Sú navrhnuté ako jednostranný PCB s čo najľahšou výrobou aj pri ručnom kreslení (môj prípad), preto som musel použiť väčšie množstvo prepojok. Akurát modul má trochu hustejšie cestičky, ale ešte navrhnem jednoduchšiu verziu s vodičmi na strane spojov. Modulov bude treba aj tak viac kusov. Čo modul, to páska.
Použité súčiastky (za "-" je množstvo):
tranzistory BC547B - 5
integrovaný obvod 74LS04 - 1
regulátor napätia TS1117B 3.3V - 1
dióda 1N4148 - 1
rezistory:
10k - 14
6k8 - 4
2k2 - 4
1k0 - 1
470R - 1
kondenzátory keramické 100n - 2
LED 5mm žltá - 1
obojstranný kolík ZL202-10G - 1
konektor MLW10G - 1
konektor FRB samec 30 pin stranový do DPS - 1
pre modul:
dutinková lišta BLW8210G XIN - 1
rezistor 10k - 1
prepínač P-ESP101 - 1
serial EEPROM 24C04 - 1
serial EEPROM W25Q32 - 1
Tranzistory sa dajú použiť hocijaké NPN, len aby sedeli vývody.
Kondenzátory môžu byť aj menšie. Prepínač+rezistor na module slúžia ako ochrana
proti zápisu. Je možné ich vynechať a nahradiť prepojkou jeden z nich, podľa
toho, či chcete mať pamäť iba na čítanie, alebo aj na zápis.
Serial EEPROM rady 24xx sa dá použiť akákoľvek, C alebo LC, od 24C01 až do 24C16
(s výnimkou 24C01A a 24C02A), jediná podmienka je write buffer 3 a viac bytov.
Pamäť FLASH (Serial EEPROM) rady 25xx sa dá použiť takmer akákoľvek, maximálna kapacita je 16 MB
(128 Mega-bit), minimálna 128 kB (1 Mega-bit). Tabuľka kapacít podľa označenia:
25x10 128 kB
25x20 256 kB
25x40 512 kB
25x80 1 MB
25x16 2 MB
25x32 4 MB
25x64 8 MB
25x128 16 MB
Kempston joystick je zapojený podľa interface UR4. Vzhľadom na to, že didaktiky mali rôzne koncovky pre joystick, tak som konektor pre Kempston joystick volil s redukciou. Redukcia CANON 9 pin: konektor s plochým káblom, poradie vodičov 1 až 9 na kábli sedí s označením pinov na konektore.
(c) 2018 TAPaTAPa by PotPalo
(krycie meno: projekt TAPaTAPa)
(ďalej popisujem aj iné vylepšenia pre Didaktik M)
Tak som vyrobil niečo nové, a nedá mi sa nepodeliť s ostatnými. Je to externá pamäť simulujúca pásku, určená pre Didaktik M, Gama, ZX Spectrum, a kompatibilné počítače, ktoré majú buď zabudovaný, alebo pripojený interface 8255.
Mám tu peknú zbierku starých BIOS čipov z PC, teda serial flash 1 Mbyte až 4 Mbyte, a tak ma napadlo vyrobiť z nich niečo užitočné. Krycí názov TAPaTAPa. Projekt začínal takto:
Malá elektronika pripojená na interface (TTL), na ňu by sa napájala "páska", teda krabička s dvoma flash obvodmi a jedným prepínačom (ochrana proti zápisu). Dvoma preto, lebo jeden (24LC04) by uchovával pozíciu na páske (tá by sa prepísala po každom čítaní), a prípadne aj nejaký popis pásky, názov a tak. Druhý napríklad 25Q32, by obsahoval samotný TAP súbor s hromadou hier. Prepínač pre ochranu proti zápisu by bol napojený na pin WP (write protect). Samotný 25Q32 by sa naprogramoval v programátore na PC.
Obslužný program by bol v ROM a nahrádzal by klasickú LOAD rutinu. Fungoval by takto: prečítal by pozíciu pásky z 24xx (3 byty), z 25xx by prečítal prvé dva byty z tejto pozície (dĺžka bloku v TAP súbore), pripočítal ich a uložil naspäť do 24xx. Tým by sa pozícia posunula na nasledujúci blok na páske. Z 25xx by načítal blok ako klasický LOAD (alebo VERIFY). Keby sa dĺžka bloku rovnala 0 alebo 65535, páska by sa "pretočila", teda by sa nastavila pozícia 0. Nakoľko prázdna eeprom obsahuje samé #FF, nebolo by treba nič upravovať, na konci TAP súboru by sa sám vrátil na začiatok.
Momentálne je už hotovo, projekt je dokončený, tu je výsledok:
Hotovo. Prikladám TAPaTAPa ROM, vo formáte priamo ROM (=BIN), a tiež TAP (keby ju niekto chcel nahrať do Spectra s LOAD"" CODE...).
ROM TAPaTAPa - ROMka Didaktiku M (rovnaká ako ROM ZX Spectra 48k, len má tučné písmo a iný tón po stlačení klávesu) so špeciálnou LOAD rutinou. Využíva interface MHB8255, a to takto: port A je nastavený ako vstup, slúži aj ako Kempston joystick, port B je výstup, a port C je tiež výstup, lebo stránkovanie Didaktiku Gama je na PC0.
Samotný TAPaTAPa využíva tieto porty:
vstup:
PA7 - data (do SO),
výstupy:
PB4 - data (do SI),
PB5 - CLK,
PB6 - /CS,
PB7 - LED.
Nahrávanie je riešené klasicky ako z pásky, LOAD "", tiež MERGE a VERIFY. Samozrejme sa dá použiť aj meno, napríklad LOAD "PSSST", potom to funguje rovnako, ako by ste nechali spustený magnetofón, teda sa budú vypisovať názvy, až kým sa nenájde konkrétny program. Rovnako fungujú aj všetky programy, ktoré volajú rutinu LOAD z adresy 1378 (alebo 1366). Rýchlosť nahrávania je 48 KB za 11 sekúnd.
Chybové signalizácie:
BORDER bliká červeno-bledomodro = chyba čítania z 24xx (alebo žiadny modul),
BORDER bliká fialovo-bledomodro = chyba zápisu do 24xx,
BORDER bliká modro-bledomodro = chyba čítania z 25xx (alebo je na jej začiatku #FFFF alebo #0000).
Funkcia SAVE nieje použitá, ostala pôvodná s výstupom na magnetofón.
Pridaná funkcia "rewind", nastaví pozíciu modulu TAPaTAPa na začiatok. Je v ROM na adrese 14567, spustiť sa dá napríklad s RANDOMIZE USR 14567.
Pamäť 25xx sa programuje v programátore v PC. Zmaže sa, a nahrá sa jeden obrovský TAP súbor. TAP súbory sa dajú ľahko spájať, napríklad pod Windows v príkazovom riadku: COPY /B *.TAP TAPA.BIN pospája všetky TAPky v aktuálnom priečinku do jedného súboru tapa.bin. Poradie nieje určené. 25xx sa dá zmazať a programovať aj priamo zo Spectra, stačí dorobiť software.
Ešte k tomu Didaktiku Gama. Nepoužil som jeho pôvodnú ROM, lebo som o tom čítal že vraj tam poopravovali chyby v ROM a narobili aj nové, vďaka čomu nefungujú niektoré hry, a hlavne tie čo používajú IM2 s I=57. Vďaka ROM z Didaktiku M funguje IM2 aj s I=57, 58, aj 59. Nieje teda ale ošetrené stránkovanie pamäte z BASICu, treba si pred OUT 127,1 nastaviť ramtop pod 32768 (CLEAR 32767), inak sa odstránkuje zásobník a nasleduje zvyčajne reset. Tiež tam tým pádom niesu extra integrované rutiny, ktoré mala iba Gama (obsluha tlačiarne a ja neviem čo všetko mala Gama naviac). V prípade záujmu môžem poskytnúť upravenú priamo ROMku Gamy, ale bude bez rewindu.
TAPaTAPa rutina sa nachádza v ROM od adresy 1378 (dĺžka 162 bajtov) plus 15361 (dĺžka 254 bajtov), rutina rewind je od 14567 (dĺžka 24 bajtov).
TAPaTAPa - výroba hardwéru, pre Didaktik Gama model 88. Okrem výroby nasledovných PCB bude treba ešte dve úpravy Didaktiku Gama: vymeniť pôvodnú EPROM za EPROM s TAPaTAPa (výhoda je, že Gama má EPROM v pätici), a vyviesť +5V na konektor interface, pin 30 (vpravo hore, pôvodné OUT2 samozrejme odpojiť). Gama tam má OUT2, (D40 tam má PC0 a UR4 tam má +5V, pekný chaos). Dá sa použiť aj iný pin, prípadne priviesť +5V z iného zdroja, na PCB som na tento účel dal prepojku na odpojenie pinu 30. Treba ale brať ohľad na to, že 5V napája aj Kempston joystick (pokiaľ má napríklad autofire).
Samotné návrhy PCB sú v prílohe. Sú navrhnuté ako jednostranný PCB s čo najľahšou výrobou aj pri ručnom kreslení (môj prípad), preto som musel použiť väčšie množstvo prepojok. Akurát modul má trochu hustejšie cestičky, ale ešte navrhnem jednoduchšiu verziu s vodičmi na strane spojov. Modulov bude treba aj tak viac kusov. Čo modul, to páska.
Použité súčiastky (za "-" je množstvo):
tranzistory BC547B - 5
integrovaný obvod 74LS04 - 1
regulátor napätia TS1117B 3.3V - 1
dióda 1N4148 - 1
rezistory:
10k - 14
6k8 - 4
2k2 - 4
1k0 - 1
470R - 1
kondenzátory keramické 100n - 2
LED 5mm žltá - 1
obojstranný kolík ZL202-10G - 1
konektor MLW10G - 1
konektor FRB samec 30 pin stranový do DPS - 1
pre modul:
dutinková lišta BLW8210G XIN - 1
rezistor 10k - 1
prepínač P-ESP101 - 1
serial EEPROM 24C04 - 1
serial EEPROM W25Q32 - 1
Tranzistory sa dajú použiť hocijaké NPN, len aby sedeli vývody.
Kondenzátory môžu byť aj menšie. Prepínač+rezistor na module slúžia ako ochrana
proti zápisu. Je možné ich vynechať a nahradiť prepojkou jeden z nich, podľa
toho, či chcete mať pamäť iba na čítanie, alebo aj na zápis.
Serial EEPROM rady 24xx sa dá použiť akákoľvek, C alebo LC, od 24C01 až do 24C16
(s výnimkou 24C01A a 24C02A), jediná podmienka je write buffer 3 a viac bytov.
Pamäť FLASH (Serial EEPROM) rady 25xx sa dá použiť takmer akákoľvek, maximálna kapacita je 16 MB
(128 Mega-bit), minimálna 128 kB (1 Mega-bit). Tabuľka kapacít podľa označenia:
25x10 128 kB
25x20 256 kB
25x40 512 kB
25x80 1 MB
25x16 2 MB
25x32 4 MB
25x64 8 MB
25x128 16 MB
Kempston joystick je zapojený podľa interface UR4. Vzhľadom na to, že didaktiky mali rôzne koncovky pre joystick, tak som konektor pre Kempston joystick volil s redukciou. Redukcia CANON 9 pin: konektor s plochým káblom, poradie vodičov 1 až 9 na kábli sedí s označením pinov na konektore.
(c) 2018 TAPaTAPa by PotPalo