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ó.

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ó.

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ő.


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é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"$"

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.