Először egy kazettás magnetofont kellett illesztenem az IBM-hez. Mivel új HT-s állomány szalagra írására nem volt szükség, ezért csak az egyik irányt, a szalagról való beolvasást kellett megcsinálnom (hát persze, hogy a másik az egyszerűbb...).
A nyomtatóillesztő (Centronics port) megfelelőnek látszott a feladatra, ugyanis tucatnyi ki- és vagy 5 bemenete van (ami bőven elegendő), 5 V-os TTL (transistor-transistor logic) szintekkel működik, könnyen programozható (irodalom[1..2]). Nos, a magnó (MK-29) fejhallgatókimenetét (egyrészt ez általában van, másrészt ez a kimenet terhelhető, harmadrészt lekapcsolja a magnó hangszóróját, ami felettébb idegkímélő, szóval ezt a kimenetet) kellett TTL szintre illesztenem.
Az magnóillesztőm tehát a magnó fejhallgatókimenete és a PC nyomtatóvezérlője közé került. A magnó analóg jelet szolgáltat, ez a számítógép pedig digitális, tehát egy egybites analóg-digitál átalakítóról van szó. Gyakorlatban ez például egy komparátor, ami legegyszerűbben egy nagyon nagy erősítésű erősítővel valósítható meg. Az egyszerűség jegyében erősítőként (aktív elemként) egyetlen tranzisztort használtam (kis teljesítményű szilícium npn tranzisztor nagy erősítéssel, pl. BC238C, BC107C, ami van a fiókban).
A komparálási szintet egy trimmerpotméterrel (olyan, mint a hangerőszabályzó) állíthatóra terveztem, amire szükség is volt, ugyanis a szalagokon igen eltérőekre sikerültek a felvételek. Végül is három állítási lehetőség van a felvétel korrigálására: a magnó hangerőszabályzója, hangszínszabályzója és a komparálási szint állítása az illesztőben. Erről bővebben a tesztprogramnál írok.
Nem szóltam még az illesztő tápfeszültségéről. Ennek biztosítására is a nyomtatóillesztőt használom, ami első pillanatra meglepő lehet. Talán másodikra is. Nos, egyrészt a soros vonalra csatlakozó egér is hasonlóképp lop áramot, pedig azt nagy cégek gyártják, másrészt működik. (Utána is.) Mindenesetre nem illik nagyon megterhelni a (tulajdonképpen) adatvonalakat, ezért a rajzon szereplő ellenállások értékét nem célszerű csökkenteni (nagyobb ellenállás kisebb áram).
A kapcsolási rajz alább látható. Az egész kapcsolás egy tranzisztorból, két kondenzátorból, egy potméterből és két ellenállásból valamint egy 3.5-es Jack dugóból és egy D25-ös papa csatlakozóból és végül némi vezetékből áll. Célszerű árnyékolt kábelek használata, ugyanis az árnyékolatlan zavart szedhet össze. Nyáktervet nem adok, az egész kapcsolás fél óra alatt összedobható próbakártyán. Én a bevált "AS" módszer légszerelés technológiát alkalmaztam (AS = ahogy sikerül).
Speciális ibm kazettás illesztő
IBM Parallel
Printer Adapter
D 25
+------------------o Auto feed 14
|
<+5V
+++ 10
+-------+--->| | +---------o Select
input 17
+ | 10/uF | +++ kOhm |
<+5V
------- | |
+++ 1.5
------- | ---
| |
| 6 V |
+++ kOhm
| |
|
--- +++ 33
+---------o Ack 10
| |
| >
100 nF +++ kOhm /
| | |
| / BC ... C
Magnó o------| |----+----------|<
fej- > |
|
| \ npn
hallgató
_\|
|
o
| o Gnd 18 .. 25
|
| |
---
--- ---
Nos, a TSTCAS (TSTCAS.PRJ) program beolvassa a magnóról érkező jelet és kiküldi a PC hangszórójára és a CGA képernyő keretére. Ezt a programot és a beolvasóprogramot is a gép Turbo állásában célszerű futtatni.
Ha csatlakoztatta a kazettaillesztőt a PC-hez és a magnóhoz, állítsa a komparálási szint potméterét és a magnó hangszínszabályzóját középállásba, a hangerőszabályzót 3/4-re és tegyen a magnóba egy HT-s kazettát. Ha elindította a tesztprogramot és a magnót, akkor a hangszóróból csipogás hallatszik, a CGA képernyő keretén pedig fekete-fehér csíkok láthatók.
Ha ez megvan, a zajhatárt kell megállapítani. Állítsa teljes magashangkiemelésre a magnót, vegye ki a kazettát, üresen kapcsolja lejátszásra, és a növelje a hangerőt amíg jelet nem hall-lát. Ha teljes hangerőn sincs zavar, akkor gratulálhat magának. Egyébként, ha van zavar, próbálja megszüntetni pl. árnyékolt vezetékkel, zavaró berendezések kikapcsolásával. A zavarszintet jelölje be a hangerőszabályzón, ugyanis annál nagyobb erősítésnél még remény sincs a helyes beolvasásra.
Itt az ideje az első HT-állományhoz beállítani az illesztőt és magnót (három állítási lehetőség!). Jó beállításban a hangszóróból szép digitális hangot kell hallani, inkább kevesebb, mint több magashanggal. A kereten félkarakter-magas csíkokat kell látni, kis vékony csíkok nélkül. A tesztprogram (és a beolvasó program is) az első nyomtatóportot használja és el sem indul, ha nem találja. Ha elindult, bármely billentyű leütésére leáll.
Mindenesetre a teszt és beolvasó programot a lehető leggyorsabbra kell fordítani. (Például Tiny vagy Small modell, 286-os utasításkészlet AT-n, szóhatárra igazítás, verem keretezetlen (stack frame off), veremtúlcsordulás figyelés kikapcsolva, sebességre (és nem méretre) optimalizálás, regiszterváltozók használata, regiszterek használatának optimalizálása, ugrások optimalizálása).
Kivétel csak a ciklusok optimalizálása, ugyanis időhúzásra üres ciklusokat használok. (Az MSC képes likvidálni a magtalan ciklusokat, ami most éppen helytelen.) A beolvasó program alapja rövid idők mérése. Ezért minden zavaró körülményt ki kell zárni, ha csak lehet.
Minden megszakítást letilt a program -- kivéve a billentyűzetét, de azt is átírja. Egy megszakítás ugyanis akármikor becsaphat és nem tudni mennyi ideig tart, s mivel az alatt az idő alatt nem ácsorog a szalag, elveszhet néhány bit. Természetesen a rendszeróra 18-ad másodpercenkéni megszakításait is le kellett tiltani, ami azzal a hátránnyal jár, hogy "megáll az idő". A tesztelések, beolvasások után célszerű tehát a DOS TIME parancsának használata.
Le kellene tiltani (lassítani?) a memóriafrissítés DMA-ját is, de akkor túl feledékeny lenne a gép. Az időzítésre visszatérve nyilvánvaló, hogy gyorsabb gép hamarabb végez az időzítő ciklussal. Hogy ez ne így legyen, a várakozóciklusokat a géphez kell igazítani, gyorsabb gépen nagyobb időállandót kell használni.
Sajnos ez az érték nem csak a gép sebességétől, hanem a C fordítótól is függ. Beolvasáskor használja mindig Turbo módban gépét! Ha a gépe nem CGA kártyás, módosítsa a PPACAS.H állományt.
HT-1080Z kazettaformátum (bitek).
T0
T1 T2 T0
---->|--------->|--->|--
+-+
+-+ +-+
+-+
| |
| | | |
| |
-----+ +-------+ +-------+ +-----------------+
+------
Start
1 Start
0 Start
------|---------|---------|---------|---------|---------|--->>
0 1 2 3 4 5 ms
Egy 80286-os, 10 MHz-es gépen 420-as érték kellett. 20 MHz-en tehát kb. 800-840. Célszerű 10-es lépésközzel többször megpróbálni a beolvasást. Valami ilyesmi fog történni: 400-nál nem olvas be, 410-nél hibázik, 420-nál jó, 430-nál megint hibázik, 440-nél nem olvas be. Nem kell minden próbához újrafordítani a programot, az időzítőállandó megadható paraméterként.
Ha megvan az Ön gépéhez tartozó érték, írja át a forrásprogramban ( PPACAS.H ), majd fordítsa le újra a beolvasóprogramot. Az IBMHT programnak tehát csak egy paraméter, az időállandó adható meg. Ha nem adja meg, a forrásprogramban szereplő érték marad érvényes.
A program automatikusan megáll egy állomány végén, de leállítható egy tetszőleges billentyű leütésével is. A beolvasott állomány neve HT.HT, amit -- ha az eredeti HT-s állományt meg akarja őrizni -- át kell nevezni, ugyanis a következő beolvasás felülírja. Mivel a listázóprogram (PRIHT) ugyanezt az állományt listázza, kevesebbet kell gépelnie.
Az átnevezés után ajánlom Norton bácsi FI - File Info programját, hogy pl. a szalagszámláló állását feljegyezze. Akár három számot is leírhat, ugyanis a HT-k (legalább) kétfajta magnóval kerültek forgalomba. Az egyik a bal, a másik a jobb oldali orsóról hajtott számlálóval rendelkezett, nehogy egyszerű legyen az átszámítás. Harmadik variáció nem lévén rövidesen meg is szüntették az egész gép gyártását ( ;-> ).
A beolvasás folyamata CGA kártyás gépen jól nyomon követhető a kereten (ez nálam Spectrumos hagyomány...), a bevezető nullák alatt az addigi zöld keret pirosra vált, majd minden byte első bitje sárga, a többi zöld. Beolvasás alatt a pc hangszórója csendben marad, ami nem csekély erénye a programnak. Új szalag, másik állomány beolvasásakor, ha hibázást észlel, futtassa a tesztprogramot és próbálja a három potmétert a felvételhez állítani.
Mind a négy típust listázására képes a PRIHT (PRIHT.PRJ) program, aminek megadható a listázandó állomány neve, ami alapértelmezésben HT.HT. A lista a standard output állományra íródik (képernyő), amit át lehet irányítani akár lemezes állományba, akár nyomtatóra.
Az adatrekord ugye az, ami. A gépi kódú program Z80-as processzort feltételez, igy az csak emulátorral használható IBM PC-n. Az Assembly forrásprogramok szintén Z80-asak, PC-n crossassemblerrel lefordíthatók. Maradnak a Basic forrásprogramok, tulajdonképpen ezért készült az egész rendszer.
Célként csupán annyit jelöltem meg, hogy a GW interpreterbe betölthető programot kapjak a HT-s programból. Futásról szó sincs! Csupán betölthetőségről. Van ugyanis néhány olyan HT-s kulcsszó (token), ami nincs meg a GW-ben. Iyen a CLOAD, CLOAD?, CMD, CSAVE, MEM és SET.
Részletesebb összehasonlító nyelvelemzést ugyan nem végeztem, de más szintaktikai problémák is lehetnek. A GW-Basic a számkonstansokat is belső formában ábrázolja, míg a HT nem változtat a beírt (ASCII) alakon. Nos én sem tokenizáltam a számokat, amit elsőre nem tolerál a GW, de egyszerűen meg lehet nyugtatni: ki kell listázni a képernyőre a programot és ENTER-rel újra tároltatni.
A GW ekkor elvégzi a piszkos munkát (helyettem), azaz konvertálja a számokat (is). Ez nem nagy megszorítás, a programot úgyis tüzetesen át kell nézni. Van még néhány hardware-függő utasítás: PEEK, POKE, INP, OUT. Ezeket és a grafikát mindenképp át kell írni.
[2] Pálinkás Tibor: Portvezérlés PC-vel a Centronics-porton keresztül [2,1..3]. Rádiótechnika folyóirat [2,1]: 1991 szeptember 419. o., [2,2]: 1991 október 467. o., [2,3]: 1991 november 515. o.
[3] Pethő Ádám: IBM PC/XT 3. A ROM BIOS és ami mögötte van. Számalk, 1988.
[4] Donald Alcock: Ismerd meg a Basic nyelvet! Műszaki, 1983.
[5] Kőhegyi János (szerk.): Ismerd meg a Basic nyelvjárásait! HT-1080Z, ABC80, ZX81. Műszaki, 1984.
[6] Charles Simonyi, Martin Heller: The Hungarian Revolution, Byte folyóirat
1991 augusztus, 131. o.