Bola doba, keď ste si pri kopírovaní súborov aj zacvičili. Niekedy ste ale museli cvičiť viac, ako vám bolo príjemné a peknou retročriepkou je, že v prípade Apple šlo o niečo, na čo jeho vývojári nemali ako prísť.

Zasúvanie a vysúvanie diskiet z počítača bola činnosť, ktorá neodmysliteľne patrila do ranej éry osobných počítačov  v 80 a 90. rokoch minulého storočia.

Vzhľadom na ich kapacity bola potrebná ich výmena „za jazdy“, pričom nešlo len o inštaláciu samotného operačného systému, ale aj klasické používanie programov či hier.

Toto „žonglovanie“ bolo nevyhnutným dôsledkom toho, že disketa bola jediné trvalé pamäťové médium, ktoré ste v počítači mali. Rané osobné počítače neboli z dôvodu ceny vybavené HDD a v momente ako ste načítali z diskety operačný systém (do RAM), ste mohli disketu vybrať a vložiť do mechaniky inú s nejakým programom a začať pracovať.

To isté vymieňanie nastalo, ak ste si chceli obsah diskety skopírovať. Obsah diskety sa načítal do operačnej pamäte, disketu ste vymenili za inú a dáta z RAM sa následne skopírovali na ňu.

Prvý Macintosh /Foto: Sailko/

Inak tomu nebolo ani v prípade Macintoshu od Apple. Ten bol v roku 1984 veľkým skokom oproti predošlým Apple počítačom Lisa Apple II, pričom dostal do svojich útrob 128 kB operačnej pamäte. Dnes ho retrospektívne označuje ako Macintosh 128K, aby sa odlíšil od neskorších modelov, pričom možno ho poznáte aj v súvislosti s dnes už ikonickou reklamou.

A keďže 3,5“ diskety ktoré používal mali kapacitu 400 kB, vzhľadom na 128 kB RAM bolo jasné, že pri kopírovaní ste ich museli vymieňať tam a spať.

Mohli ste si síce kúpiť aj druhú externú disketovú mechaniku a k počítaču ju pripojiť ako „frajer“, avšak treba myslieť na to, že šlo o luxus za zhruba 1500 eur na dnešné peniaze. A ak ste si nový Macintosh práve kúpili a vypadol z vás ekvivalent 7500 eur, ochota vyťahovať ďalších 1500, len aby ste nemuseli vymieňať disketu pri kopírovaní, bola pre drvivú väčšinu ľudí nedostupná.

VYMIEŇAJ AŽ SA Z TEBA PRÁŠI

V základe platilo, že na 128 kB Macu bolo dostupných zhruba 85 kB operačnej pamäte pre samotné aplikácie a činnosti používateľa.

Zvyšok spotrebovával samotný operačný systém System 1, hlavne na zobrazovanie stále novučičkej a neopozeranej bitmapovej grafiky (okenné grafické prostredie operačného systému).

Ak si to spočítate, tak v prípade kopírovania 400 kB diskety to znamenalo, že si vaša ruka zacvičí a budete potrebovať 5 výmen tam a späť.

Ruka dostala zabrať, ale dalo sa to vydržať.

Problémom bolo, že počítač občas z nejakého dôvodu požadoval výrazne viac výmen, pokojne aj viac ako 20. A nikto v základe netušil prečo. Paradoxné bolo, že v momente keď ste kopírovanie začali, ste nemali ani tušenia, ktorý prípad to bude.

Pri piatej výmene ste sa teda prežehnali a dúfali, že bude posledná. Ak si počítač vyžiadal následne šiestu výmenu, chytali ste sa stebielka, že ste sa možno len prepočítali, ale pri siedmej už bolo jasné, že ste na divokej jazde a čaká vás poriadna vymieňačka na úrovni 20 a viac prehodení.

ČO TEN BUG SPÔSOBOVALO A PREČO BOLI VÝVOJÁRI APPLE PRÍLIŠ DOBRÍ NA TO, ABY HO DOKÁZALI NÁJSŤ

Za bežných okolností sa o správu súborov staral program Apple Finder, ktorý mal sám o sebe 46 kB, pričom potreboval zhruba 10 až 20 kB na svoju prácu. Pri kopírovaní dát z diskety na disketu by jeho plná prítomnosť nebola vhodná, pretože by z 86 voľných kilobajtov v RAM zostalo na presúvanie dát len 30 či 20 kB.

Pri vývoji softvéru tak programátori Apple naprogramovali všetko tak, aby v momente ako sa kopírovanie na disketu malo začať, program z RAM zmizol, pričom zostala načítaná len jeho rudimentárna kopírovacia rutina a minimálne potrebné časti kódu. Vo výsledku tak v RAM zostalo voľných 75 kB, čo práve stačilo na to, aby sa kopírovanie dokončilo po piatej, maximálne šiestej výmene (obvykle nebola disketa zaplnená úplne na 400 kB maximum).

Mnoho používateľov ale reportovalo, že tomu tak nie je.

Bug reporty obvykle vyzerali podľa vývojára Steva Cappsa zhruba nasledovne: „Kopíroval som disketu a zabralo mi to viac ako 20 výmen vy čur..i!!! Keď som to skúšal s tými istými disketami znova, všetko bolo v poriadku.“

Vývojári sa rýchlo dovtípili, že to bude preto, že program z ničoho nič načítal svoj kompletný kód, čím zabral voľné miesto.

Tím stojaci za prvými Macintoshami /Foto: Norman Seeff/

Nedokázali ale pochopiť, ako daná situácia mohla nastať. Kód programu bol totiž rozdelený na dve časti. Veľkú, ktorá v základe obsahovala všetko a maličkú, ktorá obsahovala len kopírovací mechanizmus.

V momente keď ste kopírovanie vyvolali, napríklad pretiahnutím súborov na ikony priečinka s disketou, vykonalo sa spláchnutie väčšej časti programu z RAM a zostala tam len tá malá, ktorá skopírovanie vykonala. A nedarilo sa im nasimulovať žiadnu situáciu, ktorá by náhodne veľkú časť programu vrátila.

Tento bug tak neustále pretrvával. Nech vývojári Apple robili čo robili, nedarilo si im ho reprodukovať. Na otázky čo prejaveniu problému predchádzalo žiadny z používateľov nevedel odpovedať. Robili vždy to isté a raz kopírovanie fungovalo normálne a inokedy pomaly.

Vždy len súbory potiahli na ikonu diskety. Vývojári Apple to skúšali stovky či tisíce krát, pričom vymieňali diskety ako na bežiacom páse, ale vždy sa to podarilo na maximálne šesť výmen (400 kB), nikdy nie viac.

Nakoniec ale pravda predsa len vyšla najavo…

Dôvodom, prečo vývojári Apple tak veľmi dlhú dobu nedokázali u seba bug vyvolať bolo, že s počítačmi robili dlho a vedeli dobre používať myš.

Respektíve, nikdy sa im nestávala vec, čo sa ľudom, ktorí ešte s myšou zvyknutí pracovať úplne neboli, stávala bežne – že nechcene pustili ťahaný súbor.

Myš prvého Macintoshu mala len jedno tlačidlo. Ním sa klikalo, označovali súbory alebo stláčali tlačidlá menu, pričom v prípade kopírovania / presunu súborov ste mohli tak ako dnes na súbor kliknúť, držať tlačidlo stlačené a posunúť ho do iného priečinka či na inú jednotku.

Ľudia, ktorí s myšou začínali, mali občas problém udržať tlačidlo stlačené v čase, kedy rukou a celou myšou hýbali takisto.

V základe to pravdaže nič zlé neznalo. Súbor ste na pracovnej ploche skrátka chytili a ťahali smerom k disketovej jednotke a ak vám počas ťahania spadol, pretože ste tlačidlo nezvládli držať stlačené, chytili ste ho znovu a ťahanie dokončili.

Problém bolo, že program Finder obsahoval mechanizmus, ktorý si zapamätával pozíciu pustenia, aby používateľ videl ikonu „tam kde mu spadla“ a znova ju mohol vziať a pokračovať v ťahaní.

A tento mechanizmus bol uložený v tej veľkej časti kódu. Ak sa teda používateľovi súbory vyšmykli, ich pozícia zostala v pamäti. Ako sa veľká časť programu pri začatí kopírovaní spláchla, zvyšok programu narazil na report o zmene pozície ikony, ktorý už nebol potrebný. A pre akceptáciu tejto nepotrebnosti sa zavolala funkcia vo veľkej časti programu.

Proces kopírovania tak prebehol len s 30 kB priestoru v RAM, pričom ak sa mu pustenie podarilo viac krát, rutina sa volala stále dokola a proces kopírovania prebehol s 20 či 17 kB voľného miesta v RAM.

Ako náhle sa príčina ukázala a problém sa dal ľahko reprodukovať, oprava bola priamočiara. V základe je ale táto retročriepka peknou ukážkou toho, že občas skrátka nejakú chybu nedokážete napodobiť preto, že ste skrátka nevedomky príliš šikovný.

Ďalšie drobné čriepky z IT histórie hľadajte na našom webe každý štvrtok večer a takisto pod rovnomenným kľúčovým slovom.

František Urban

František Urban
Zameriavam sa najmä na prehľadové a analytické články z oblasti najrôznejších technológií a ich vývoja. Nájdete ma takisto pri diagnostike HW a SW problémov.