Technomorous

Další (jablečné) přírůstky do sbírky

Jednou z radostí pravidelného blogování je to, že vám občas někdo pošle nějaký ten hardware, abyste se zabavili a nezlobili. Stalo se tak i tentokrát, jsem zase o jeden Mac Mini G4 a 15" PowerBook G4 bohatší. První jmenovaný víceméně půjde hned do regálu, protože takové mám už další dva (a to jsem se jednoho vloni zbavil v naivním přesvědčení, že nebudu zbytečně hromadit stejné počítače), ale ten patnáctipalcový PowerBook si i přes jisté provozní opotřebení (mrtvá baterie, špína, chybějící nožičky, chybějící gumy držící displej v zavřeném stavu ve správné vzdálenosti od klávesnice, polofunkční západka displeje) asi vyslouží alespoň občasné používání.

Jdou do něj totiž nacpat 2 GB RAM (Mac Mini jen giga, 12" Powerbook jen jeden a čtvrt giga, 12" iBook jen jeden a půl giga), má PCMCIA slot a byť to není ani zdaleka nejrychlejší z patnáctipalcových modelů (1.25 GHz), tak s Void Linuxem to bude blesk, ten je svižný i na pomalejších strojích.


Kompilátory na Spectru

Příjemná práce s MIRA Fortranem mě přivedla k tomu, že se na kompilátory na Spectru chci podívat trochu více. Klasické domácí osmibitování, to bylo hodně hraní her, sledování demoscény a občas trocha programování v zabudovaném BASICu. Přitom Sinclair nedělal Spectrum kvůli hrám - proto taky nemělo zákaznické čipy, porty pro joysticky či vícekanálový zvuk - dělal ho jako nástroj pro vzdělávámí. A co lepšího se na počítači naučit, než programování?

Vím, že kromě Fortranu existují kompilátory či interprety pro:
  • BASIC
  • C
  • Forth
  • Pascal

Určitě jich v nejbližší době několik vyzkouším. Nenapadá někoho nějaký další jazyk, který jsem vynechal?


MIRA Fortran

Intenzivní četba dokumentace v hromadné dopravě a pár hodin pokusů a omylů mě dovedly až k tomu, že už se v MIRA Fortranu nejen orientuju, ale přímo se cítím být povolán ho trochu zhodnotit. Totéž už udělali v roce 1987 v časopise Crash, do jisté míry se naše názory shodují, takže nechám jen na vás, zda si chcete nejdříve přečíst původní recenzi, nebo začnete mým výplodem.

Začnu něčím, co tehdy vědět nemohli: MIRA Fortran byl pro spectristy znovuobjeven letos v březnu. Hledal jsem ho roky, všude byl však veden jako Missing-In-Action. Není to zrovna Manic Miner, je otázkou kolik lidí si ho za patnáct liber pořídilo, kolik z těchto prodaných kopií se dochovalo a kolik majitelů dochovaných kopií ví, jak je zaarchivovat a dát online. Jeden se ale přeci jen našel, vzpomněl si, že má ve sklepě v krabici originálku, po 25 letech nepoužívání si někde půjčil kazeťák, vyrobil TZX obraz kazety, naskenoval dokumentaci, booklet a nafotil kazetu. Velmi záslužná práce.

MIRA Fotran je poctivý kompilátor redukované verze standardu Fortran 77, určené pro mikropočítače, značené jako Fotran 77S. To, že je to kompilátor, mimo jiné znamená, že zdrojový kód zadáte, pak ho přeložíte a v paměti už spouštíte jeho překlad do strojáku. Má to své výhody i nevýhody, ale o tom až dále - teď pěkně od začátku. Na začátku nahrajete editor se syntax checkerem, který má necelých 11 kB. Ten vás uvítá suchou hláškou Press required key, což je bez manuálu neřešitelný problém. Nebo bez stisknutí klávesy H, která vám ukáže ovládání. Pokud chcete programovat, stačí stisknout klávesu Enter, čímž se dostanete do režimu zadávání řádků programu.

Ovládání MIRA Fortranu

Ty se zadávají stejně jako na děrných štítcích sálových počítačů té doby, tj. vše na řádku má své přesné místo a píše se to velkými písmeny. Na první pozici je buď C nebo *, pak se jedná o komentář a kompilátor řádek přeskakuje; nebo je tam D, značící debugovací řádek, který se dle nastavení bere buď jako kód nebo jako komentář, čímž možno elegantně zapínat a vypínat například ladící výpisy proměnných; nebo tam není ani jedno z uvedeného a pak se na prvních pěti místech očekává buď číslo značící štítek řádku (neplést s číslem řádku!), nebo mezera. Následuje jedna mezera a samotné příkazy se píší až od pozice 7, což v případě, že se jedná o řádek bez štítku znamená zmáčknout vždy šestkrát mezerník, než můžete začít psát - je to otrava a autoři to mohli vyřešit nějakou zkratkou, která to udělá za vás, ale na druhou stranu je to Fortran a ten je jen pro opravdové programátory. Celková délka programového řádku nesmí překročit 80 znaků, na obrazovce Spectra široké 32 znaků je takový řádek několikrát zalomený a na jeho konci je vždy jeho pořadové číslo, tedy přesně naopak, než třeba v BASICu. Dá se na to zvyknout. Každý řádek je po zadání hned kontrolován na syntaktické chyby.

Máte-li už hotovo, pomocí Caps Shift + 6 se dostanete opět do "menu" v němž klávesou X přejdete ke kompilaci. Nejdříve je ještě jednou provedena syntaktická kontrola, tentokrát ale na věci, které nelze zkontrolovat na jednotlivých řádcích: neukončené funkce, smyčky či samotný program. Následně se z kazety dohrává samotný kompilátor (10 kB), který po svém skončení vrací řízení BASICu a zpět do editoru už se nijak nedostanete. Je proto velmi dobré si zdroják uložit před tím, než X zmáčknete!

MIRA Fortran - info po kompilaci

Když X stisknete, už není cesty zpět. Kontrola, kompilace, následně se vypíší zajímavé údaje, jako kolik výsledná binárka zabírá paměti, od které adresy ji najdete a po stisku libovolné klávesy jste v BASICu. Produkt kompilace lze spustit pomocí RANDOMIZE USR 63500, uložit na kazetu si jej musíte sami s pomocí předtím zobrazených údajů, snad jste si je zapsali, protože teď už je nezjistíte. Délka binárky je vždy minimálně 5 kB, linkuje se k ní knihovna funkcí, je tedy evidentní, že tvořit ve Fortranu krátké prográmky nemá smysl.

Nemám s kompilátory jiných jazyků než je BASIC na Spectru velké zkušenosti, nicméně provedení MIRA Fotranu se mi líbí. Kompilace je rychlá, dle dobové recenze zhruba třicet řádků za sekundu - ve výsledku tak trvá déle nahrání z kazety, než samotné přeložení i celkem komplexního programu. Vytkl bych akorát dvě věci: již zmíněnou nutnost dělat na začátku každého řádku manuálně mezery a pak absenci byť i jednoduchého stavového řádku, který by alespoň ukazoval pozici na obrazovce. Se zbytkem problém nemám a myslím, že implementace jazyka určeného pro sálová monstra na krabičce od mýdla s gumovými tlačítky a 48 kB paměti dopadla víc než dobře.


Fortran na Spectru

Fortram je bezva programovací jazyk a ZX Spectrum je bezva počítač. Proto mi vždy vadilo, že je nemůžu nijak příjemně spojit. Pro Spectrum totiž existoval historicky asi jediný použitelný kompilátor - MIRA Fortran - a ten se mi nikdy nikde nepodařilo dohledat.

MIRA Fortran

A teď mi jen tak přistál v mailu i s dokumentací a příklady. Implementuje standard Fortran 77S a vypadá to, že s jedná o skutečný čistokrevný kompilátor do strojového kódu - žádné bytekódové nesmysly, vyžadující runtime, zakuklené interprety a tak podobně. Tak jen už abych se ho naučil pořádně ovládat a alespoň něco v něm napsal, přeložil, uložil, nahrál a spustil. Zatím jen čtu manuál a snažím se ho pochopit. Je to moc pěkný kus software.


A RPi 2 stále běží!

Přesouvám zrovna data z EliteBooku na USB disk připojený k RasPi 2, které běží 24/7 a jednou denně vytváří zálohu mého webserveru. Napadlo mě při tom podívat se, jak vlastně běží to zálohování, nějak jsem na něj od posledka úplně zapomněl.

 -bash-5.0# date
 Sat Nov 9 22:37:19 UTC 2019
 -bash-5.0# uptime
  22:37:22 up 80 days, 03:10, load average: 0.16, 0.13, 0.15
 

Pohled do top ukazuje, že po osmdesáti dnech je obsazeno celých 23 MB RAM, evidentně tak vše funguje jak má, bez memory leaků. Čtvrtroční výročí tu bude za chvilku, tak schválně, zda to dotáhneme alespoň na půlroční uptime - začátkem jara se ozvu.


Ježdění se síbíčkem

Už si na to pomalu začínám zvykat: Když jedu kamkoliv mimo Prahu, dávám na střechu magnetku, na sedačku spolujezdce hážu CRT One a pouštím sken CB pásma.

Jelikož nějaký centrální svolávací kanál u nás nemáme, je sken jediná možnost jak zaslechnout nějakou místní komunikaci. Obvykle mám štěstí na pražské dvojce či osmnáctce, jakmile ale vyjedu skutečně za hranice města, je to spíš věc náhody.

Projiždím oblastmi menšího či většího rušení, občas někde někdo odpoví na kamioňácké desítce, občas se podaří najít místní hovor a člověk si alespoň může zapsat, kde místopisně a jak frekvenčně to příště zkoušet, například mezi Vraným a Slaným na pětatřicítce.

Není to úplně tak, že by si člověk na dvouhodinové cestě z Prahy na německé hranice za Chomutovem celou cestu pokecal, ale tu a tam se to dá. A to i když zrovna neprobíhá žádný závod, což jsem popravdě řečeno ani nečekal.


Desktopové příběhy (7) - Návrat SCSI

Jedi se sice vrátil už v šesté epizodě a král to dokonce stihl už ve třetím díle, SCSI se ale vrátilo do mého života právě teď a jsem tomu rád, byť mu to tedy řádně trvalo.

První můj počítač se SCSI byl Macintosh LC II. Druhý byl PowerMac 7100. Třetí byl desktopový PowerMac G3. Čtvrtý byl gigahertzový Athlon, který jsem měl ve stejné době, jako ty tři výše uvedené. Přechod na moderní Mac ve formě iBooku G4, následně pokračování PowerBookem G4, PowerMacem G4 a PowerMacem G5 zakončené používáním EliteBooku v docku - čas poskočil o 14 let a SCSI v primárně používaném stroji celou tuto dobu chybělo.

V desktopu, který mám aktuálně na stole ale už zase je. A není to žádné ořezávátko, držím prst na tepu doby a mám řadič do PCIe slotu (ač se hlásí jako PCI-X):

 [logout@vichy ~]$ lspci
 02:08.0 SCSI storage controller: Broadcom / LSI 53c1030 PCI-X
 			Fusion-MPT Dual Ultra320 SCSI (rev c1)
 
Prozatím je na konci 68pinové kšandy pouze stará dobrá páskovačka DDS DAT4 na kterou zrovna provádím zálohu své fotoknihovny z posledních tří let:
 [logout@vichy ~]$ lsscsi
 [0:0:1:0]  cd/dvd  HL-DT-ST DVD-RAM GSA-H54L 1.00  /dev/sr0 
 [4:0:0:0]  disk    ATA      OCZ-AGILITY4     1.3   /dev/sda 
 [5:0:0:0]  disk    ATA      WDC WD5000BPVT-0 1A01  /dev/sdb 
 [6:0:0:0]  disk    ATA      ST9500420AS      SDM1  /dev/sdc 
 [10:0:6:0] tape    ARCHIVE  Python 06408-XXX 9100  /dev/st0 
 

Jestli se zadaří za rozumné peníze opatřit S-AIT pásku, tak externě připojím mechaniku další. Seriózní výpočetnictví opět začalo, SCSI je zpět!


TOPlist