Szédületes pezsgésen és fejlődésen megy keresztül a legutóbbi néhány év során a Commodore platform (és annak is a közepében természetesen a C64-es világ): pontosan a fordítottját produkálva annak, mintsem ki vagy meg akarna halni. Ezzel az is vele jár, hogy egyre többen fedezik fel, és szerzik be maguknak a régi gépeiket újra, csakhogy ma már nem szeret az ember holmi ócska háttértárolókkal piszmogni, sem percekig várni egy-egy program betöltésére, vagy lemezek közt matatni. Azonban a drága dolgokat sem kedveli a többség, így törvényszerű módon egy-egy jól sikerült kompromisszum mentén betaláló – azaz elég olcsó, ugyanakkor praktikusan jól használható – technikai megfejtésnek az a sorsa, hogy afféle általános tömegszabványokká válnak. Most ezek közül kettőről lesz szó, egy hardver- és egy szoftvervívmányról: az egyik az SD2IEC, a másik meg a JiffyDOS. Ha háttértárra és/vagy gyorstöltőre van szükség, ma kétségkívül ezt a kettőt használják a legtöbben.
Tegyük hozzá, ez a kettő együtt különösen hasznos, viszont az már jóval ritkább eset, hogy a júzer gépén tényleg mind a kettő egyidőben jelen legyen – ezért kell egy áthidaló megoldás is közéjük.
Az SD2IEC egy (akár házilag is bütykölhető) SD-kártya csatoló az IEC protokollon keresztül (azaz nagyjából a régi CMD FD/HD cuccok utódának tekinthető ilyen szempontból), amit ezenkívül megfejeltek azzal, hogy a lemezképeket is kezeli és megnyitja (D64/D71/D81 stb.), sőt, még néhány gyakran használt gyorstöltő-kód korlátozott támogatására is képes a rajta lévő olcsó mikrokontroller. Nagyon remek eszköz, viszont sajnos ezeket az utóbbi tulajdonságait sokan félreértik, és azt hiszik, hogy emulálja is a szóbanforgó lemezegységeket – majd amikor rájönnek, hogy nem, a hamis elvárások miatt csalódnak. A más hasonló tömegtárolási megfejtések (mint pl. 64HDD vagy IDE64) által szintén átvett módszert alkalmazza a (többnyire és ajánlottan FAT32 rendszerűre megformattált) mapparendszer böngészésére: a parancscsatornán át kell neki szöveges utasításokat küldeni.
Például a belépés egy mappába így fest (a CD, azaz „Change Directory” a legtöbb embernek az MS-DOS-ból lehet ismerős):
open1,8,15,”cd:dir”:close1
Ez magában egy kissé nehézkes és körülményes eljárás egy bővítetlen gépen, de van egy másik, még rosszabb dolog: alapjáraton a sebesség is hasonló a lemezegység alapsebességéhez (azaz kissé gyorsabb, mivel nincsen mozgó alkatrész). Mikor ezzel szembesülnek, akkor jön a csalódások másik fele… Ámde szerencsére mindkettőre van egy szuper megoldás.
A JiffyDOS a számítógép és a lemezegység „BIOS-ának” (vagyis a Kernal és a DOS ROM-nak) egy módosítása, mely többek közt az összes lemezműveletet a sokszorosára képes felgyorsítani (nem csupán a töltést, de a mentést, formattálást, írást, olvasást…), és egyúttal számos hasznos funkcióval bővíti a rendszert. (Ehhez persze ki kell cserélni a ROM chipeket mindkét eszközben.)
Például a fenti parancs kiadása vele ilyen egyszerű:
@cd:dir
Másik előnye, hogy nagyon kompatibilis, a lehetőség szerint legészrevehetetlenebbül tevékenykedik a háttérben. Eredetileg a CMD cég kezdte fejleszteni még a ’80-as évek derekán (ugyanazok, akik például a SuperCPU-t is csinálták), s később minden egyéb termékbe is beépítette. A cég megszűnése óta kissé zavarosan alakult a jogok utódlása, így emiatt (s a technikai bonyodalmak miatt is) a többi fejlesztésük utóélete némiképpen viharvertre sikeredett, de nagy-nagy szerencsénkre a JiffyDOS végül megmenekült, és még ma is akad néhány (ha jól tudom, tán kettő) olyan ember, aki jogosult a liszenszre a gyártáshoz és forgalmazáshoz.
Ráadásként időközben elkészült az összes ismert 8-bites Commodore masinához (még Plus/4-hez és VIC-20-hoz is van!) és szinte mindenféle lemezegységhez, így mindezeket keresztül-kasul lehet vele kombinálni egymással. Mivel csak a szoftver maga jogvédett, az általa használt protokoll azonban nem, így mások is tudnak olyan programokat írni hozzá, ami ezzel működik. Ezért ma már szinte minden valamirevaló modern cuccban benne van (vagy lehetőség van rá valahogyan megoldani ezt), többek között természetesen az SD2IEC-ekben is. Ami viszont bökkenő, hogy pont a legfontosabb helyre a legnehezebb betenni: a 64-esbe… Ugyanis a gépben be van forrasztva a Kernal chip, így ki kell onnan forrasztani, aztán foglalattal helyettesíteni, és a bővítést csak aztán tudjuk belehelyezni.
Itt jön be a képbe az a harmadik összetevő, ami felé végig tereltem a szót: az SJLOAD. Ez egy egyszerű kis C64-alkalmazás, egy olyan gyorstöltő program, mely a Jiffy protokollal megy. 2008-ban készítette el egy „1570” fedőnevű emberke (aki amúgy fogalmam sincs, kicsoda), de valójában csak egy másik, még régebbi alkalmazás módosítása: a VDOS nevűé, amit pedig 1986-ban írt Edward Carroll (Írországban). A VDOS még a 1541-es és a 1571-es lemezegységekhez készült: ebben írták át a gyorstöltős részt Jiffy-sre. (Egy-két évvel később aztán újabb lelkes önkéntesek átportolták C128-ra és VIC-20-ra is SJ128 és SJVIC néven – vagy legalábbis magát a Jiffy protokollt. Az SJ itt az ún. „szoftver-Jiffy” rövidítése, mely arra utal, hogy nincsen ROM-ba égetve a kód.) Világszerte ezt használják ma a legtöbben az SD2IEC (és más hasonló) eszközeik mellé.
Csakhogy én meg úgy döntöttem, én sem hagyom annyiban a dolgot, s mivel valamilyen gyorstöltőre mindenképpen szükség lesz a fejlesztéshez, kézenfekvő volt, hogy ezekhez nyúljak. Miért? Leginkább mert Public Domain (vagyis szabadon felhasználható és tetszés szerint módosítható), a forráskód is nyílt és publikus, így könnyű vele elindulni, és a kettő együtt lefedi a legfontosabb célokat. Nekiálltam első lépés gyanánt, hogy a két programot egybegyúrjam, ennek eredményét pedig elneveztem úgy, hogy SDOS ( = SJLOAD + VDOS… szóval nem az SD-kártya miatt van).
A felhasználás szempontjából mind a három program azonos: egy kurta kis fájl, melynek egy karakteres neve van, ez többnyire egy felkiáltójel (!). A lemezre kell másolni, majd onnan elindítani. Az én verziómban kijavítgattam a régi kódok számos apró hibáját (bár nem mindet), így ajánlottabb immár lecserélni őket rá. Az indításkor ellenőrzi, milyen eszközön fut épp, és annak megfelelően dönti el, hogy melyik protokollal dolgozzon, ez automatikus. (Tehát éppúgy lehet használni a régi, normál lemezegységekhez, mint a modern Jiffy-alapúakhoz.) Az indítás is lehet többféle:
load”!”,8,1 vagy load”!*program”,8,1
Az első forma csak a töltőt aktiválja, míg a másodikkal ezen felül betöltünk egy másik programot. Az én verzióm itt még fejlettebb, mivel ezt a programot is futtatja egy RUN-nal (ha nem akarjuk ezt, a Shift billentyűt tartsuk lenyomva). Ha már egyszer aktiváltuk, attól kezdve elhagyhatjuk az egységszámokat, mert megjegyzi az utoljára használtat. Pl.:
load”program” vagy load”$”
Emellett a VERIFY utasítás új szerepkört kap: vele lehet lekérdezni a parancscsatornát (ha paraméter nélkül használjuk), vagy parancsokat elküldeni, illetve a lemezkönyvtárakat kilistáztatni (csak a képernyőre, az aktuális tárolt program felülírása nélkül):
verify”cd:dir” (rövidítve vE”cd:dir)
verify”$” (rövidítve vE”$)
verify (rövidítve vE)
Ezek tehát kis praktikus segítségek azon esetre, ha nem áll rendelkezésre az eredeti JiffyDOS a Kernalban (a teljes leírás a program mellett lévő readme fájlban megtalálható). Az én újításom ebben egyelőre annyit tesz, hogy mindezt picit jobban csinálja, illetve hogy ugyanez az eredeti lemezegységekkel (akár Jiffy-vel, vagy anélkül) is, sőt, lényegében tetszőleges háttértárral alkalmazható. Ám ez még csupán a kezdet: a következő lépés gyanánt pedig azt tervezem, hogy egy egész csomó újabb hasznos funkcióval bővítem a rendszert. Ezek közül itt egy rövid lista, ízelítőnek (tehát ezek most még egyelőre nincsenek!):
- Mindkét kódprotokoll használata egyszerre (pl. ha együtt van a gépen egy SD2IEC és egy hagyományos lemezegység, akkor egyikhez az SJLOAD, a másikhoz a VDOS – ezt jelenleg még nem tudja).
- C128 és VIC-20 támogatás (ehhez SJ128 és SJVIC kód integrálása), és hogy platformfüggetlenül menjen ugyanazon közös alkalmazásból.
- Talán más gépeken is (Plus/4, C65…).
- 128-as üzemmódban betöltött C64 program autodetektálása, és az indítása közben automatikusan átváltás a 64-es módba, majd ott futtatás. (Ez a programrész már majdnem kész, és jól működik, ezért biztos benne lesz.)
- Talán ugyanez a C65-ön is. (Ez már kissé rázósabb…)
- A program kezdőcímének a vizsgálata még a töltés előtt, és az ahhoz való alkalmazkodás (pl. a Basic pointerek beállítása, vagy a képernyő címe… stb.), mely szintén automatizált. Ennek különösen VIC-20-on van komoly jelentősége, ahol a sokféle memóriabővítésből kifolyólag igen nagy a szórás (de jól jön akár C128 és C65 közti natív programcserebere esetében is). (Ez a rész is félig kész, de még nincsen tesztelve, és hiányos.)
- Autoboot az SD-kártyáról a számítógép bekapcsolásakor (C128-on, talán C65-ön is).
- Egy egyszerű kis fájlböngésző, ami függőlegesen osztott két panelos, ezért a Norton Commanderre emlékeztet (és akár a 80-oszlopos képernyőn is futhat). (És ezt pedig Commie Commandernek fogom hívni, hogyha egyszer megvalósul, szóval stipistopi, ezt a nevet most már ne használja senki más!)
- Virtuális drive-ok emulálása a memóriában. Mint pl. REU Ramdrive, vagy 1541 Ultimate-II Command Interface… (Ez csak terv, és talán túl nagyratörő is, de meglátjuk.)
Szóval most a következő néhány hónap során ezen fogok dolgozgatni, és ha valamilyen szinten elkészülne, akkor közzéteszem majd az eredményt. Valószínűleg az már SDOS 2017 néven fog majd futni (míg a jelenlegi verzió az SDOS 2016, mint látható), és egyfájlos szingli-alkalmazás helyett már egy egész csokor program lesz. (A mellé adott forráskódok pedig lehetővé tennék bárki számára, hogy szubrutinként beépítse azt a saját kódjába, hisz végső soron éppen ez a cél: a Rosetta Interactive Fiction rendszer része lesz.)
Egyelőre ezt a jelenlegi változatot feltöltöttem most a saját oldalamra és a csdb.dk-ra is, onnan tetszés szerint leszedhető, tesztelhető, kipróbálható, és értékelhető. (Jó lenne, ha minél többen kipróbálnák különféle eszközökön, mivel nekem csak egy SDrive 1564 van kéznél tesztelésre mostanság, és azon legalábbis jól használható.)
U.i.: Természetesen az megeshet, hogy egyes programokkal együtt használva a rendszert problémáink támadnak. (Ez más boot/speed loaderekkel is megesik, mint ahogy az eredeti SJLOAD és VDOS, sőt, a JiffyDOS sem „szent”, ők is néha kifagynak, vagy összeakadnak.) Ilyen esetekre néhány tipp:
- Legfeljebb csak kb. 198 vagy 200 blokkos hosszúságig működik a töltés. (Az eredetiekben ez csak 195 blokk, ahhoz képest ez is némi fejlődés.)
- Ha a kívánt program betöltődik, de utána nem jól működik, akkor töltés közben tartsuk lenyomva a Shift billentyűt, ezzel megakadályozzuk az automata RUN parancsot. A töltés után deaktiváljuk az SDOS-t (vagy SYS700, vagy Run/Stop + Restore), és csak akkor futtassuk.
- Ha netán már a töltés közben kiakadna, üssünk Run/Stop + Restore-t, majd utána SYS737-tel újraaktiválhatjuk az SDOS-t.
- További tippek nyerhetők a readme.txt fájl olvasásával…
(Egyelőre ez van. A későbbi verziókban igyekszem majd valamilyen kulturáltabb hibakezelési módszert kieszközölni.)
(a téma folytatása: Storage for the masses)