Site icon frescho.hu

Adattárolás magnókazettán

Mire a 8 bites gépek megjelentek a papír alapú adattárolást már meghaladta a technika. Az Altair Basic-et még lyukszalagon terjesztették, de ez már egy korszak végét jelentette. A mikroszámítógépek első szériája már kazettáról töltötte be és mentette a programokat, adatokat. Érdekes módon még az első IBM PC-nél is lehetett magnetofont használni. A magnók mellett fokozatosan megjelentek a floppy meghajtók, de ezek sokkal többe kerültek. Még drágább volt a merevlemez, ami már inkább a 16 bitesek kiváltsága volt.

A mágneses adattároláshoz elég jó elméleti háttér tartozik. Próbáltam megúszni, hogy Fourier és Shanon tételről írjak, mert nagy valószínűséggel már azok is elfelejtették akik tanulták. Leegyszerűsítve, de pár sort mégis írni fogok, hogy a továbbiak érthetőek legyenek:

Akit a matematikai háttér jobban érdekel az a wiki oldalon el tud indulni. Az első gépek megalkotói inkább gyakorlati oldalról közelítették meg a témát és több kevesebb-sikerrel megoldották a feladatot. Néha annyira jól, hogy több generáción keresztül ugyanaz a megoldás öröklődött. Erre jó példa, hogy a Peddle által írt rutint csak évekkel később cserélték le, mert egyrészt jól működött, másrészt nem volt hozzá forráskód. A feladat elég egyszerűnek hangzik. Az adatot valahogy fel kell venni a magnókazettára, majd onnan visszatölteni. A gond az, hogy az adat digitális, míg a szalag analóg adatot tárol és egy bit hiba sem megengedett. Sajnos a felvett és visszajátszott jel sok helyen torzulhat az olcsó, rossz minőségű szalag és magnó miatt.

Szinte minden gépnél van pár közös pont amivel a fenti problémákon túlléptek:

A Commodore adattárolása jól dokumentált, ezért adja magát, hogy kicsit részletesebben bemutassam. Nem saját kútfőt, hanem két jó leírást használtam forrásként, a linkeket lent megtalálhatjátok.

A Commodore PET-től egészen a 128-ig használható a CN2-es datasette. Ez TTL szintű jellel kommunikál a számítógéppel mivel a rögzítéshez szükséges elektronika és a szalagról olvasott jelet erősítő elektronika is a magnóba került. A számítógép vezérelni tudja a motort, így a programok több részletben is képesek betölteni adatot anélkül, hogy a felhasználónak kellene a visszajátszást elindítania.

A szalagra rögzített jel inkább szinuszos, a négyszögjelet a sávszélesség limitációja miatt nem képes átvinni. A képen egy C64 programot játszottam vissza a képeken is látható Tensai magnóval. Az oszcilloszkóp kimenetén jól látható, hogy a felvett analóg jel nem állandó. Az amplitúdója és a periódusideje (frekvenciája) is változik. Itt az adatot nem a nem a jel nagysága, hanem az időtartama hordozza. Mielőtt a kódolásról és az adatszerkezetre rátérnék érdemes megnézni, hogy a Commodore CN2-es magnetofon kimeneti jele miben tér el a szalagon lévő jeltől.

 

A datasette jele már TTL kompatibilis. Több lépcsőben addig erősítik a jelet amíg az nem válik négyszögjellé. Ezzel a módszerrel jól elnyomják a kisebb zavarjeleket és torzítást, mint amilyen például a sávok közötti áthallás. A számítógép könnyedén tud időt mérni. A C64 a lefutó élek közötti időtartamot méri és az ezek között eltelt időből tudja, hogy 0 vagy 1 az adott bit. Már csak az a kérdés, hogy hogyan kódolták át idővé az adatot.

 

 

Az alap Commodore formátum három különböző időtartamú impulzust használ:

Az adatot mindig egy impulzus pár határoz meg az alábbi táblázat szerint:

A fenti 4 típusból építenek fel egy keretet. Ebben 9 bit és egy data marker található meg. Ennek a felépítését a c64tapes.org-ról vettem át. Az első 8 bit (bit0-7) logikusan egy bájt. Az ezeket követő ellenőrző bitet XOR-ral képezik belőlük, segítségével páratlan számú bit hibáját lehet a segítségével detektálni. Ha a data marker új adat, akkor a következő bájtot olvassa be gép, míg a data vége esetén befejezi azt.

  (?,?) (?,?) (?,?) (?,?) (?,?) (?,?) (?,?) (?,?) (?,?) (?,?)
    |     |     |     |     |     |     |     |     |     |
   bit0  bit1  bit2  bit3  bit4  bit5  bit6  bit7   |     |
                                                    |     |
                                               checkbit   |
                                                       data marker

A teljes adat sikeres betöltéséhez a gépnek szüksége van még pár dologra. Egy elmentett programblokk az alábbiakból áll:

Az egész bonyolultnak tűnik, de teljesen logikus. Chuck Peddle talán kicsit túlkomplikálta a bitek azonosítását és duplikálta a fejléc és adat blokkokat is. Ez azt eredményezte, hogy bár viszonylag megbízható lett, de cserébe lassú is. A turbo loaderek azért tudtak megjelenni, mert eléggé megbízhatóan lehetett egy-egy rövid/hosszú impulzusra bízni az alap kettő helyett 1-1 bit rögzítését.

Más gépeknél is hasonlóan épült fel az adattárolás. Szinte mindegyik impulzushossz mérésen alapul. Amikor frekvenciát írnak akkor az csak az idő reciprokát jelenti. Felhasználói szemmel volt még pár praktikus közös vonás. Percekig vártuk türelmesen, hogy betöltsön a program. Ez persze nem mindig sikerült, voltak gépek amiknél jobb volt a formátum, de egyik sem volt 100%-ig biztonságos. Ha nem sikerült a betöltés, vagy meguntuk a játékot, akkor meg kellett keresni a következő program elejét. A kazettaborítóban lévő papírra, vagy egy kockás füzetbe írtuk fel a programokat és a hozzájuk tartozó számláló állását. Ha elfelejtettük kinullázni a számlálót, akkor nem maradt más, mint előre tekerni és ezt megtenni. Ha ezt nem akartuk megtenni, akkor belefüleltünk a szalagba. Kellő gyakorlattal már felismertük a bevezető hangját. Ha programokat csereberéltünk, akkor gyakran előfordult, hogy a magnó nem olvasta a másik magnón felvett programot. Ilyenkor a fejet kis csavarhúzóval kellett beállítani. Ma már nosztalgiával emlegetjük ezeket az időket, de hogy őszinte legyek már akkor is hatalmas előrelépésnek és tartottuk a floppy meghajtókat.

Felhasznált irodalom:

 http://sidpreservation.6581.org/tape-format

http://c64tapes.org/tape_loaders.php

http://ht.homeserver.hu/html/konvertibmcas.htm

http://primo.homeserver.hu/

Views: 755

Exit mobile version