Přenos dat podruhé, aneb co je to "PARJOY"

Jiří Svoboda

Z důvodu usnadnění a urychlení prací se stále více věcí pro malé Atari (a tedy i FLOP) připravuje na 16(32)bitech. Oč lépe se píše text na ST nebo kreslí obrázek na Amize. Z tohoto důvodu vzrůstá potřeba přenosu dat z těchto počítačů na malé Atari. V minulém článku (FLOP 30) popsaný způsob přenosu (tj. pomocí podpůrných programů emulátoru Atari XL/XE na ST) se dnes již nejeví jako nejvhodnější. Je neskutečně zdlouhavý a pomalý, vyžaduje mechaniku 1050, používá pouze SINGLE hustotu, čte a zapisuje vždy jen celou disketu a bývá často nespolehlivý. Z těchto důvodů bylo třeba nalézt nějaký nový, rychlý a spolehlivý způsob přenosu (nejlépe přímé propojení).

Po mnoha a mnoha úvahách nad klady a zápory mnoha různých zapojení, jsem zůstal u dvou variant.

První a nejlepší je možnost propojení přes sériové porty. Bohužel, stále nejsou vyřešeny všechny hardwarové a softwarové problémy této varianty, ale na jejich odstraňování průběžně pracuji.

Paralelně jsem navrhl jiné propojení, jehož první verze pracovala pro svou jednoduchost ještě týž den. Nazval jsem jej "PARJOY". Prozatím však pracuje pouze přenos ve směru na malé Atari.

"PARJOY"

Jedná se o propojení paralelního portu libovolného počítače a joystickového portu malého Atari.

Po zvážení všech pro a proti (uvažoval jsem o šířce přenášených dat osm, čtyři, dva nebo jeden bit) jsem se (pro někoho určitě nepochopitelně) rozhodl pro dvoubitový přenos. Hlavní výhoda spočívá ve velmi nízké ceně propojení, protože k sestrojení postačuje jediný starý kabel od joysticku a konektor na paralelní port.

"PARJOY" se skládá ze tří částí. Kromě vlastního propojovacího kabelu jsou to ještě komunikační programy pro oba počítače. Současné verze programů však prozatím umožňují pouze jednosměrný přenos ve směru na malé ATARI (v zapojení propojovacího kabelu je však na obousměrný provoz pamatováno).

Zapojení propojovacího kabelu

 paralelní port ! joystickový port
-----------------------------------
   pin  ozn.    !    pin
-----------------------------------
    1   /STROBE !     6
    2   D0      !     1
    3   D1      !     2
   10   /ACK    !     3
   11   BUSY    !     4
  17-25 GND     !     8
-----------------------------------
(Pozn.: / = signál aktivní v log.0)

Program "Transmitter"

Program na vysílacím počítači načítá postupně byte po byte přenášeného souboru, konvertuje je do dvoubitového tvaru (to znamená, že každý byte souboru je rozložen do čtyř po sobě následujících bytů po dvou platných bitech, přičemž se začíná od nejvyšších bitů a nepoužité bity jsou nulovány) a odesílá je na dané výstupní zařízení (paralelní port).

Napsán je v jazyce "C" a nepoužívá žádné speciální funkce. Díky tomu je UNIVERZÁLNÍ pro všechny počítače (testováno Amiga, Atari ST a PC).

Program se volá z příkazové řádky povelem:

PARJOY <input> <output>

<input> je jméno přenášeného souboru
<output> je jméno výstupního zařízení (paralelního portu)

Paralelní port má jména:

     Amiga     ...  PAR: (ne PRT:, viz. upozornění)
     Atari ST  ...  PRN: 
     PC        ...  LPTx (LPT1 pro port 1)

(Velice se omlouvám za to, že stále opomíjím vynikající MACy, ale moje informovanost v této oblasti je minimální, vzhledem k tomu, že žádného uživatele MACa neznám. Uživatelé MACa, ozvěte se mi!)

Jako výstupní zařízení lze samozřejmě použít i jiný soubor. Pak budou data pouze zkonvertována a mohou být odeslána později příkazem "COPY" nebo povelem k tisku.

Upozornění: PŘI PŘENOSU MUSÍ BÝT ZAJIŠTľNO, ŽE DATA PŮJDOU PŘÍMO NA PARALELNí PORT A NEBUDOU UPRAVOVÁNA NľJAKÝM DRIVEREM TISKÁRNY. Typickým příkladem je paralelní port na Amize, kam můžeme přistupovat přes "PAR:" (přímo paralelní port), tak i přes "PRT:" (oklikou přes driver tiskárny, data budou pozměněna!).

Program "Receiver"

Program je určen pro příjem dvoubitových dat joystickovým portem (port 0, tj. ovladač 1) malého Atari. Přijatá data ihned převádí zpět do osmibitového tvaru a ukládá do paměti.

První verzi jsem napsal sám jako kombinaci assembleru a AtariBasicu. Druhou, podstatně vylepšenou verzi, jsme napsali společně s Radkem Štěrbou, kterému patří můj velký dík (já už malé Atari přes dva roky nemám a leccos jsem zapoměl). I tak to zůstala směs assembleru a TurboBasicu. Do budoucna (pokud nepřejdeme rovnou na sériový přenos) uvažujeme o kompletním přepsání do assembleru.

Po spuštění programu v TurboBasicu si tento alokuje veškerou dostupnou paměť na přijímací buffer. Po odstartování příjmu dat obrazovka ztmavne. Pokud jsou přenášena nějaká data, je na obrazovce pohybující se "duha". Přenos se ukončuje (a zároveň ho lze kdykoliv přerušit) stiskem tlačítka "START". Po ukončení přenosu se zobrazí počet přenesených bytů (není zabudována žádná kontrola přenášených dat, správný počet přenesených bytů je však dostatečnou zárukou bezchybného přenosu). Poté lze uložit přijatá data do souboru.

Jak přenášet?

     (CO) - týká se Amigy, Atari ST, PC, ...
     (XE) - týká se Atari XL/XE

     1. (CO)(XE) Propojíte kabelem paralelní port (CO) a joystickový port 0 (XE).
     2. (XE) Spustíte program "Receiver" a odstartujete příjem.
     3. (CO) Odstartujete vysílání povelem:
             PARJOY  
     5. (XE) Po dobu "duhy" jsou přenášena data.
     6. (XE) Po ukončení přenosu stisknete "START".
     7. (XE) Zkontrolujete počet přenesených bytů a uložíte přijatá data do souboru.

Závěrem

Propojení "PARJOY" je sice konstruováno na obousměrný přenos (je propojen i signál BUSY, je však trvale nulový), ale současná verze software ho ještě nepodporuje. Překvapila mne i poněkud nízká přenosová rychlost. I přes jeho dobrou funkčnost a jednoduchost si více slibuji od propojení sériových portů. Než však bude toto propojení uvedeno do provozu (což může trvat i několik měsíců), "PARJOY" jistě dobře splní to, pro co byl určen.