ZX1541 - ZX Spectrum C64-es floppy kezeléssel

Ismerkedjünk a különféle régiés új Sinclair klónokkal...
gatora
Hozzászólások: 24
Csatlakozott: 2016.01.05. 18:55

ZX1541 - ZX Spectrum C64-es floppy kezeléssel

Hozzászólás Szerző: gatora »

Akiknek köszönettel tartozom
Legelőször is köszönetet kell, hogy mondjak Mezei Robi (m/zx) barátomnak, aki nélkül nem lett volna olyan a ZX1541-es, mint amilyen lett.

Köszönet Chris Smith-nek is, aki visszafejtette a ZX Spectrum ULA-t hardver szinten.
Köszönetet érdemel Miguel Angel Rodríguez Jódar (mcleod-ideafix) is, aki a digitális leírásból Verilog kódot készített,
amelyet kis módosítással alkalmaztam az EPM7128SLC84-es CPLD-ben.

A ZX1541-ről
A ZX1541-es ötletét az adta, hogy kellene egy olyan ZX Spectrum klón, amelyen van Joystick bemenet,
és aminek használatával kímélhetem az eredeti Sinclair gépet.
Nem akartam nyüstölni a régi gépeimet (főleg az ULA miatt), de lemondani sem szerettem volna a Spectrum nyújtotta élményekről.

Néhány klón létezett akkortájt (Harlequin, ZX MAX 48, Humble48).
Harlequin-em már volt (kettőt is készítettem), de sajnos nincs rajta Joystick bemenet.
Ennek ellenére nagyon stabil, igen szerethető klón.

A ZX MAX 48-at elkészítettem volna, de nem tetszett benne az, hogy ZX81-es házba tervezték.

A Humble48 elkészítése ellen több dolog is szólt.
A +5V-ot 7805-ös stabilizátor adja (ami nem igazán szerencsés megoldás).
Az ULA-t XC95144XL CPLD-vel oldották meg, amit nem olyan egyszerű be-és kiforrasztani.

Úgy gondoltam, hogy érdemes lenne tervezni egy stabil, nagyon könnyen javítható ZX Spectrum klónt.
A ZX1541-es prototípusa 2018. december végére készült el.

A panel szélessége azonos, magassága kisebb. és jól beleilleszthető az eredeti házba.
Minden IC foglalatban van (kivéve az AD724JRZ), ami miatt a javítás szinte gyerekjáték.
Törekedtem az alkatrészek lehető legoptimálisabb elhelyezésére.
A tápbemenet után nem alkalmaztam diódás egyenirányító hidat (egy nagyáramú dióda van nyitóirányban előfeszítve).
Emiatt az eredeti ZX Spectrum tápegység nem használható (fordított bekötésű, kívül van a 14V) !!!!!
Viszont jó neki egy 9V 1A-es kínai táp is (belső pozitív 9V).

Később egy-két dolgot átterveztem rajta, és kész lett az ISSUE1b verzió.
Kép

Sajnos a ZX MAX 48, és a Humble48-ban található RGBi kapcsolást alkalmaztam.
Ez 1N4148-as diódás kapcsolás, de nem szerencsés dolog, mert így nincs BRIGHT ezen sem, és a fent említett klónokon sem.
Mivel a 1N4148-as dióda nyitófeszültsége 0.7 V körül van, emiatt nem tud a BRIGHT 0 értékénél 0.4 V létrejönni.
Ezért kicseréltem a diódákat 0.3 V nyitófeszültségűekre, és az ezekhez tartozó ellenállásokat is átméreteztem.
Így már lett BRIGHT a ZX1541-esen, de egy kicsit gyengébb lett az elvártnál.
A BRIGHT átmeneteknél is látszódtak itt-ott vékony függőleges vonalacskák.

Átterveztem az RGBi részt tranzisztorosra.
Az 5V-os feszültségstabilizátor után beiktattam egy LC-kört is a táp-zaj szűrése érdekében.
A ROM-választó kapcsolót áthelyeztem. Így a házon kis fúrást ejtve hosszabbítással kivűlről lehet ROM-ot választani.

És elkészült az ISSUE1c verzió.
Kép

Főbb alkatrészek
A CPU Z8C000x sorozatú.
A 4 ROM-ot tartalmazó EEPROM W27C512.
Az EPM7128SLC84-ben az ULA található.
A RAM-ok 62256-os tipusúak.
Az EPM7032SLC44 a joystick és a VC-1541-es floppy kezelését végzi.
A +5V-ot LM2596 állítja elő (piros SMD LED jelzi a +5V létét).
Az AD724JRZ a PAL kompozit videó jelet állítja elő.

VIDEO, AUDIO
A kompozit videó jelet RCA csatlakozóval, az analóg RGB kimenetet mini DIN8-as csatlakozó aljzattal oldottam meg.
A kompozit videó kimeneti jele trimmer kondenzátorral állítható, így egész jó képet lehet varázsolni.
Az analóg RGB kimenet viszont kitűnő képet ad.
A hangszóró jumperrel kiiktatható. Ennek akkor van jelentősége, amikor RGB módban (SCART) a TV hangszóróiból hallgatjuk a játékprogramok zenéit,
vagy akár az EAR ciripelését.

EAR, MIC
Az EAR És a MIC csatlakozás 3.5mm sztereo Jack aljzat.

1541-es floppy meghajtó csatlakozás
Szabványos DIN6 pólusú aljzat.

RESET
Normál nyomógomb a táp csatlakozó mellett, balról.

Egyéb tulajdonságok
4 különböző ROM-ot lehet kiválasztani a 2 áramkörös DIP-kapcsolóval. Van benne teszt ROM is, ami igen jól jön bizonyos esetekben.
A videoRAM 62256-os (32k) IC-je jumperelhető. Ki lehet választani, hogy a 62256-os alsó, vagy a felső 16k-ját használja a rendszer.
Ha csak az egyik fele hibásodna meg, akkor a másik felét még lehetne használni.

A 48k-s timing az eredeti Spectrummal megegyező.
Kép
Kép

Kezeli a Kempston, és a Fuller joystick-ot.
A Fuller-t nem tudja se a ZX MAX 48, se a Humble48.

Amiben még különbözik az eredetitől, illetve a többi klóntól, az az, hogy kezeli a C64-es számítógép 1541-es floppy meghajtóját.
Lehet, hogy ma már ez senkit sem érdekel, de úgy gondolom, hogy nem hátrány ha tudja ezt is.

Egy zöld színű SMD LED jelzi az adatátvitelt (floppy olvasás, vagy írás).

Programok betöltésekor igen tetszetős vastag Border csíkok láthatóak.
Kép

Készítettem SD2IEC (hardveres VC-1541 emuláció) panelt is az öreg 1541-es meghajtók kiváltására.
A gép ennek segítségével ugyanúgy írt SD-kártyára, és olvasott róla, mintha eredeti 1541-es floppy lenne.

A floppy kezelés a 14446-os címen kezdődik az első ROM-ban. Ez az eredeti ZX Spectrum ROM-jának elvileg nem használt területe a 14446-15615-ös címtartományban, ami 255-ös értékekkel van feltöltve.
Az assembly-ben megírt floppyvezérlő kód 20 éve készült el, és kisebb-nagyobb módosításokkal lett végleges.
m/zx besegített az optimalizálásba és néhány rutin áthelyezését is elvégezte, miután kiderült, hogy néhány játék bizonyos okok miatt használja a ROM-nak ezt a részét, erről a területről olvas, ezért a kódba be kellett néhány meghatározott helyre szúrni az eredetileg itt található 255-ös értékeket, így növelve a kompatibilitást.

Utasítás példák

Tartalomjegyzék: RANDOMIZE USR 14450 : REM $ vagy RANDOMIZE USR 14450 : REM L"$"
Kép

Program betöltés : RANDOMIZE USR 14450 : REM L"filenév"
CODE betöltés : RANDOMIZE USR 14450 : REM L"filenév"C

Program mentés : RANDOMIZE USR 14450 : REM S"filenév"
CODE mentés : RANDOMIZE USR 14450 : REM S"filenév"C16384,6912

Program verify : RANDOMIZE USR 14450 : REM V"filenév"
CODE verify : RANDOMIZE USR 14450 : REM V"filenév"C16384,6912

1541 DOS parancs : RANDOMIZE USR 14450 : REM @"DOS parancs"

Főbb DOS parancsok
Lemez formázása : RANDOMIZE USR 14450 : REM @"NEW:lemeznév,azonosító" vagy RANDOMIZE USR 14450 : REM @"N:lemeznév,azonosító"
File-ok törlése : RANDOMIZE USR 14450 : REM @"SCRATCH:filenév" vagy RANDOMIZE USR 14450 : REM @"S:filenév"
File-ok átnevezése : RANDOMIZE USR 14450 : REM @"R:újnév = réginév"
Lemez inicializálás : RANDOMIZE USR 14450 : REM @"I"
Lemez érvényesítés : RANDOMIZE USR 14450 : REM @"V"

Sajnos egy utasítás sorba csak egy floppy kezelő utasítás sort lehet beírni, különben hibazünetet kapunk.

Programok átírása 5 1/4"-os lemezre (SD kártyára)
Nem túl bonyolult művelet, szerencsés esetben elég a játék BASIC betöltőjében a parancsokat lecserélni, és a ROM-ban lévő rutint meghívni.

Pl.
10 LOAD""CODE
20 RANDOMIZE USR 25000

helyett
10 RANDOMIZE USR 14450: REM L"CODE"C
20 RANDOMIZE USR 25000

Bonyolultabb esetekben egy gépi kódú betöltő segítségével a ROM rutinokat ki lehet váltani.

Kompatibilitás...
Úgy tűnik, hogy a Harlequin nem 100%-osan kompatibilis az eredetivel.
Pl. a BIFF nevű játékprogram lefagy, ha betöltés után megnyomjuk a "4 REDEFINE"-t.
Ennek hardveres oka van, amit ki lehet javítani, és akkor az eredeti ZX Spectrum-mal teljesen egyenértékű lesz.

A ZX MAX 48 és a Humble48 ULA Verilog kódján is kell módosítani, így talán 100%-os kompatibilitásúak lesznek.

És hogy a ZX1541-es milyen lett?
Szerintem nem lett rosszabb, mint az előzőekben említett három klón.
Avatar
saga
Hozzászólások: 72
Csatlakozott: 2012.01.09. 14:15
Tartózkodási hely: Szolnok

Re: ZX1541 - ZX Spectrum C64-es floppy kezeléssel

Hozzászólás Szerző: saga »

Köszi az ismertetőt, elismerésem a ZX1541 létrehozásáért!!!
:roll:

Kérdés: miért ez lett a neve, mikor ezen a néven már létezik "sima 1541 illesztő"?
gatora
Hozzászólások: 24
Csatlakozott: 2016.01.05. 18:55

Re: ZX1541 - ZX Spectrum C64-es floppy kezeléssel

Hozzászólás Szerző: gatora »

A kérdés jogos, és talán két oka is van:
1.) Tudtam a dologról mielőtt elkezdtem tervezni, de azután megfeledkeztem róla
2.) Ezt a projektet egyáltalán nem akartam publikálni, így nem lett volna név ütközés

S hogy mégis miért publikáltam ?
Mert ez a klón annyit megérdemel, hogy a magyar ZX Spectrum rajongók legalább annyit tudjanak róla, hogy létezik.
Illetve azért, mert a publikációval lezártam egy folyamatot.
Nem fogom tovább fejleszteni (más fejlesztési terveim vannak).

Sajnos az ismertetőből kimaradt egy igen fontos dolog.
A DivIDE-vel is kitűnően működik, és valószínűleg a DivMMC-vel is elboldogul.
Utóbbit sajnos még nem készítettem, így azzal nem tudtam tesztelni.
Laki
Speccyalista
Hozzászólások: 61
Csatlakozott: 2012.01.08. 22:06
Tartózkodási hely: Budapest

Re: ZX1541 - ZX Spectrum C64-es floppy kezeléssel

Hozzászólás Szerző: Laki »

gatora írta: 2020.12.03. 10:25 Mert ez a klón annyit megérdemel, hogy a magyar ZX Spectrum rajongók legalább annyit tudjanak róla, hogy létezik.
Én is szeretnék gratulálni, hogy összeraktad ezt a gépet! Szerintem jó pár évvel ezelőtt egy hasonló képességű és hasonló preferenciák mentén tervezgetett klónt akart itt ez a közösség is összehozni. Egy kis fogyasztású, modernebb alkatrészekből álló, CPLD vagy FPGA alapú logikával, az eredeti dobozba passzoló, annak billentyűzetét kezelni képes, és élcsatlakozóval, illetve a kor igényeinek megfelelő videó kimenettel rendelkező klón. Tulajdonképpen ezt hoztad össze. Az is jó dolog, hogy egyes részei korábbi fejlesztéseken alapulnak, így azok frissítései is meg tudnak jelenni benne, ami mindig jó.

Kérdésem, hogy gondolkoztál abban, hogy mások számára is elérhetővé tedd? Utángyártatható a panel? Van alkatrész lista? Összességében mennyiből hozható ki?
A hozzászólást 1 alkalommal szerkesztették, utoljára Laki 2020.12.04. 21:33-kor.
Laki
Speccyalista
Hozzászólások: 61
Csatlakozott: 2012.01.08. 22:06
Tartózkodási hely: Budapest

Re: ZX1541 - ZX Spectrum C64-es floppy kezeléssel

Hozzászólás Szerző: Laki »

Van lehetőség valamilyen külső billentyűzet nem az élcsatlakozóra dugott interface-en keresztüli fogadására?

Belefér valamelyik CPLD-be mondjuk egy PS2-es logikája? Végül is az csak 3 vezeték, talán annyi van még az IC-n, a kérdés, hogy annyi szabad kapu maradt-e benne ami a Spectrum megfelelő I/O portjára mappeli a lenyomott billentyű kódjának megfelelő mátrix értéket?

Vagy akár az 1541-es csatlakozóját át lehetne úgy programozni az őt kezelő logikában, hogy azon át fogadja a billentyűzetet? Ez már csak azért jutott az eszembe, mert így nem kellene a NYÁK-hoz nyúlni, mivel említetted, hogy lezártnak tekinted ezt az állapotot.
A hozzászólást 1 alkalommal szerkesztették, utoljára Laki 2020.12.04. 21:31-kor.
Avatar
Bali
Alapító tag
Hozzászólások: 2503
Csatlakozott: 2012.01.06. 12:34
Tartózkodási hely: Budapest III.
Kapcsolat:

Re: ZX1541 - ZX Spectrum C64-es floppy kezeléssel

Hozzászólás Szerző: Bali »

Először is én is szeretnék gratulálni a sikeres projekthez. Nálam onnan kezd érdekes lenni egy klón, amikor van rajta élcsatlakozó. :) Mi tegyek, én szeretnek rádugni ezt-azt, ha mindemellett még 100%-os Spectrum klón, hát egye fene. :)

Első olvasatra se gondolnám, hogy ezt a fiók mélyére kellene süllyeszteni, remélem megosztod velünk az utánlpítés lehetőségét, mondjuk a Hardver fejlesztési projektek között.
Egyébként az előző PS2-es bill csati pl. jó ötletnek tűnik egy esetleges továbbfejlesztés esetén.

Talán még utólag is tarthatnánk keresztelőt?!

Ami a 1541 kapcsán szöget ütött a fejemben, hogy vajon meg lehetne-e oldani, hogy így ebben a formájában ZX + ZX Interface C-ként funkcionáljon? Nem lenne jobb mint a te verziód, csak mint érdekesség.

Meg szívesen megtesztelném ezt a kütyüt pár illesztővel is (ZXHD, Spectranet, SpecDRUM stb.). :)

Talán érdemes lenne az az SD2IEC megoldást is megosztanod.

Még a Harlequin kapcsán írtad egyszer: "Még anno 1999-ben készítettem Spectrumhoz VC1541-es floppy illesztőt, amivel lazán beolvasta a lemezen lévő file-okat."
Ezt gyúrtad hozzá tulajdonlépp az klómodhoz? Amúgy talán ezt is érdemes lenne megosztanod a nagyérdeművel.

Jut eszembe a Csaba-féle smartmédia if is erre a 255-ös területre költözködött be. Valahol talán összegyűjthetnék mik is azok a játékok, akik betesztelik, hogy ott van-e 255.
-= Bali =-
(c) 1983-2017 Evil-Soft
Avatar
mezei
Speccyalista
Hozzászólások: 606
Csatlakozott: 2012.01.06. 13:52

Re: ZX1541 - ZX Spectrum C64-es floppy kezeléssel

Hozzászólás Szerző: mezei »

Bali írta: 2020.12.03. 23:33 Valahol talán összegyűjthetnék mik is azok a játékok, akik betesztelik, hogy ott van-e 255.
Ezek a játékok is rajta vannak Alessandro Grussu néha még mindig frissülő listáján.

Még a ZX1541 tesztelésekor betöltöttünk és kipróbáltunk több ezer(!) játékot, és ami hirtelen eszembe jut, hogy biztosan ez volt a baja:
Sbugetti Junction, Kungfu, No1, Glass, Time Trax

A lényeg amúgy annyi, hogy a 14591-92 (38FF-3900), 14847-48 (39FF-3A00) , 15103-04 (3AFF-3B00), 15359-60 (3BFF-3C00) címpárokon legyen 255 (FF) érték. Mikor ezekre a címekre visszaírtuk a 255-öket, már minden játék tökéletesen működött.

Üdv
m/zx
Avatar
Zimi
Hozzászólások: 205
Csatlakozott: 2013.08.13. 13:34
Tartózkodási hely: Budapest
Kapcsolat:

Re: ZX1541 - ZX Spectrum C64-es floppy kezeléssel

Hozzászólás Szerző: Zimi »

Nagyon szép, gyönyörű, szívből gratulálok! Bárcsak lehetne kapni összeszerelve :)
10-féle ember van, aki érti a bináris aritmetikát és aki nem.
Avatar
Asimo
Hozzászólások: 149
Csatlakozott: 2012.01.09. 17:49

Re: ZX1541 - ZX Spectrum C64-es floppy kezeléssel

Hozzászólás Szerző: Asimo »

Gratulálok és minden elismerésem! Jól néz ki a hardver és szuper, hogy a kompatibilitás is ilyen magas az eredetivel. A C-1541 illesztés külön elismerést érdemel!
10 évvel ezelőtt, éveken át terveztem, hogy építek CPLD később FPGA alapú Speccy-t, de a terveknél tovább sosem jutottam. Így kicsit irigykedem is. :D
gatora
Hozzászólások: 24
Csatlakozott: 2016.01.05. 18:55

Re: ZX1541 - ZX Spectrum C64-es floppy kezeléssel

Hozzászólás Szerző: gatora »

Asimo

Ha én 10 évvel ezelőtt tudtam volna a CPLD-ről, vagy az FPGA-ról ...

Kb. 4 éve tudok róla.
Azt azért elárulhatom, hogy ez a projekt azért
csúszott időben, mert közben terveztem FPGA alapú ZX Spectrum 128-ast, PC billentyűzettel, egér kezeléssel, digitális RGB-vel.
Szerintem nagyon jól sikerült.
Lehet, hogy majd ezt is publikálom
A hozzászólást 1 alkalommal szerkesztették, utoljára gatora 2020.12.05. 06:41-kor.
Válasz küldése

Vissza: “Klónok háborúja”