Uživatelsky přívětivá platforma: Swyft Card a Canon Cat (II)

Žil byl jednou jeden Jef Raskin a ten se u Apple zabýval vývojem levného a snadno ovladatelného počítače.

Slíbili jsme si podívat se nyní na příkazy, které prostředí Swyft Card pro Apple //e nabízí.

Příkazy DISK, CALC, BASIC a SEND na Swyft Card fungují vlastně všechny podobně – napsaný, jako blok označený text se pošle někam.
Ne do háje, ale do ovladače disku, interpretu Basicu, nebo na modem.
A tam se s ním pak něco stane.

Canon Cat pak oproti Swyft Card přidává další příkazy, místo Basicu nabízí programování v assembleru a Forthu, ale základ je stejný.

Příkaz DISK (USE FRONT + L) uloží aktuální text na disk. Se vším, i s polohou kurzoru.
Na Apple //e pracuje i s jedinou disketovou jednotkou.
Po uložení kurzor rychleji bliká. To je znamení, že je veškerá vaše práce uložena.

Pokud by došlo k nějaké chybě, načte se při restartu (na Apple //e typický trojhmat CTRL + Open Apple + RESET) text tak, jak vypadal při posledním uložení.

Povel DISK dělá ještě něco.
Nejen, že uloží aktuální text, ale pokud vyměníte disketu, místo uložení načte nový text z ní.

Pokud tedy nemáte nějaký neuložený text.
To jen pípne, nic neuloží (aby nic cenného nepřepsal) a bude ukládat teprve tehdy, když vložíte původní disketu s neuloženým textem.

Nutnosti ukládat neuložený text se zbavíte tak, že celý starý text v počítači smažete.
Leapněte na začátek “nulté” stránky, stiskněte LEAP BACKWARD a jednou LEAP AGAIN. Stiskněte obě LEAP klávesy, tím se označí celý text.
Stiskněte DELETE.

Část textu na jedné disketě lze vkládat do textu na jiné disketě.
Prostě text označte jako blok, vyměňte disketu a stiskněte DISK (USE FRONT + L). Označený blok se do nového textu vloží na místo kurzoru.
Pokud jej chcete na jiném místě, stiskněte DELETE, přesuňte kurzor a stiskněte INSERT.

S příkazem DISK to sice nesouvisí, ale diskety je třeba nějak naformátovat.
Napíšete CALL 3600 (označí se jako blok) a stisknete CALC (USE FRONT + G).

Zkopírovat disk na prázdnou disketu je lehké.
Vložíte zdrojový disk, stisknete DISK. Vložte prázdnou disketu, stisknete DISK.
Hotovo.

Povel DISK umí ještě jednu věc.
Pokud vložená disketa není naformátovaná pro Swyft Card, ale normálně pro Apple ][, a změny v textu byly uloženy, pak se z diskety normálně nabootuje program, který je na ní uložen (hra nebo aplikace pro Apple ][).

Navrátit se zpět do Swyft Card se lze vložením diskety s příslušným dokumentem a stiskem resetu (CTRL + Open Apple + RESET).
Pokud není disketa vložena, Apple se po resetu snaží bootovat, boot ukončíte stiskem CTRL+RESET.

Pokud psaním textu zaplníte paměť, počítač při stisku klávesy jen pípne a nic nevypíše.
Může se ale stát, že text je smazaný, na obrazovce nic, a přesto nejde nic napsat…

… protože paměť není prázdná.
Například, když po zaplnění celé paměti smažete celý text, je obrazovka prázdná… ale paměť plná smazaného textu ve schránce!

Text obnovte, smažte pár znaků po jednom, pak smažte naráz zbytek textu, napiště pár znaků, klidně dva, a smažte je.
Smazaný dlouhý text se nahradí dvěma smazanými znaky a ostatní paměť se uvolní.

Příkaz CALC byl míněn jako kalkulačka.
Zajímá vás, kolik je 34 + 78?

Napište ?34+78 a stiskněte CALC.
Napsaný text se automaticky označí.
Za označeným blokem se objeví odpověď 112.

Označený text (zadaný výpočet) nyní můžete vymazat a zůstane pouze odpověď.

Odpověď je následována znakem nového řádku.
Pokud nechcete, aby se řádek ukončoval, použijte středník: ?34+78;

Co všechno jde v kalkulačce počítat?
Všechno, co umí Applesoft Basic.
Ten otazník na začátku, to je zkrácená forma zápisu příkazu PRINT.

Protože se zapsaný text předá interpretu Basicu, je možné stejným způsobem v editoru Swyft Card psát i krátké prográmky a dělat vše, co Basic umí (třeba kreslit grafiku).

CALC lze použít i na jiné užitečné věci:
Zjištění volného místa: ?RO%
Pokud se zobbrazí záporné číslo, je volné místo větší než 32768. V takovém případě si můžete provést přepočet ?65536-RO%
Můžete si definovat i řetězce:
L$=”unles gives prior written notice”
Zadáním ?L$; a stiskem CALC se vypíše v řetězci uložený text.

Spuštěním Basicového programu se vloží jeho výpis.
Zkuste:
10 FOR I=1 TO 31
20 PRINT "JANUARY";I
30 NEXT I
RUN

Po zapsání (včetně RUN) stiskněte CALC. Do textu se vloží:
JANUARY 1
JANUARY 2
JANUARY 3
...
JANUARY 30
JANUARY 31

Velikost programu v Basicu je omezena velikostí bufferu na asi 900 bajtů!

Běžící program v Basicu lze přerušit pomocí CTRL+RESET.
(Běžné CTRL+C taky funguje, ale vloží do textu nežádoucí text BREAK.)

Příkazy PRINT a SEND pracují s tiskárnou a sériovou linkou (která může být připojena přímo k druhému počítači, nebo třeba k modemu).
Swyft Card předpokládá tiskárenskou kartu ve slotu 1 a sériovou kartu ve slotu 2.

Oba příkazy automaticky označují recentně napsaný text.

Princip je jednoduchý – to, co je označeno, nebo co se automaticky označí, je posláno na tiskárnu nebo na sériák.

Zastavení běžícího tisku lze provést pomocí CTRL+RESET.
Nevytištěný text zůstane označen, takže dalším povelem PRINT lze pokračovat.

Nastavování parametrů se pak děje nejčastěji pomocí povelu CALC, nastavováním proměnných Basicu (N%=x, zjištění nastavené hodnoty pak pomocí ?N%;) nebo, pro posílání “netisknutelných” řídících znaků pro tiskárny, použitím příkazu ?CHR$(n).

Proměnné, kterými lze ovlivňovat (nejen) tisk, jsou:
PR$ – inicializační řetězce tiskárny (například pro Apple LaserWriter: PR$=CHR$(1)+CHR$(0)+CHR$(0))
US$ – kódy pro zapnutí podtržení (například pro Apple LaserWriter US$=CHR$(27)+CHR$(69))
UE$ – kódy pro vypnutí podtržení (například pro Apple LaserWriter UE$=CHR$(1)+CHR$(27)+CHR$(82))

RO% – ukazatel volného místa. Při záporném výsledku lze provést přepočet ?65536+RO%
WI% – šířka řádku, normálně 80 (15-80)
MA% – levý okraj, normálně 0 (0-80)
AB% – odsazení horního okraje, normálně 6
BE% – odsazení dolního okraje, normálně 6
PL% – délka stránky, počet řádků včetně okrajů. Normálně 66
PF% – nejnižší číslo stránky, které se bude tisknout. Normálně 2 (první strana je tedy bez čísla, ostatní číslované)
PA% – číslo prvního oddělovače stránek na začátku textu. Normálně 0
LP% – odsazení čísla stránky od spodku stránky, v řádcích. Normálně 3
SP% – řádkování. Normálně 1, dvojité řádkování je 2
LE% – určuje konverzi znaků konce řádku při komunikaci. 29 pro znak RETURN na konci řádku a na konci příkazu SEND. -1 pro propojení dvou Swyft Card. LE%=13+256*10 pro poslání CR (13) a LF (10). (Swyft Card používá interně kód 29, který při komunikaci s vnějším světem automaticky konvertuje na kód 13.)
SE% – nastavení přenosové rychlosti:
SE%=5641 – 300 bd (normální hodnota)
SE%=6153 – 1200 bd
SE%=6665 – 2400 bd
SE%=7177 – 4800 bd
SE%=7689 – 9600 bd
SE%=7945 – 19200 bd
Jde o hodnoty, které se pošlou do řídících registrů sériového čipu 6551. Současně se tedy nastavuje i počet bitů, počet stop bitů a parita:

Kompletní nastavení SE% jde vypočítat jako součet hodnot pro jednotlivá nastavení +16 (na tomto bitu se aktivuje generátor baudrate) a při výsledku větším jak 32767 je potřeba ještě převést na záporné číslo pomocí odečtení 65536.

Počet bitů:
8 – 0
7 – 32
6 – 64
5 – 96

Počet stop bitů:
1 – 0
2 – 128

Parita:
žádná – 0
lichá (odd) – 32
sudá (even) – 96
mark – 160
mezera – 224

Baudrate:
153600 – 0
50 – 1
75 – 2
110 – 3
134,58 – 4
150 – 5
300 – 6
600 – 7
1200 – 8
1800 – 9
2400 – 10
3600 – 11
4800 – 12
7200 – 13
9600 – 14
19200 – 15

Řídící kódy modemu lze odesílat přímo z textu jako AT příkazy, například pro vytáčení ATDT 555-1212.

CTRL kódy a escape sekvence lze odesílat stiskem USE FRONT + Z.
Po tomto stisku stále držte USE FRONT a stiskem žádané klávesy (třeba Y) se pošle žádaná CTRL sekvence (zde CTRL+Y).
Pro poslání ESC do escape sekvence se postupuje podobně, po stisku USE FRONT + Z stále držet USE FRONT a stisknout ESC (na Swyft Card přeznačený na PAGE).

Při komunikaci mezi dvěma počítači (ať propojenými přímo, nebo přes modem) lze použít dva CTRL kódy:

CTRL+E (USE FRONT + Z E) vrátí informace o systému. Konkrétně Swyft Card vrací text SwyftCard 1066 //e – číslo se může lišit podle verze firmware.
poznáte tak, že systém na druhé straně “žije”, i když u něj zrovna není obsluha, která by vám hned odpověděla.

CTRL+G (USE FRONT + Z G) je tradiční znak BELL, tedy zvonek. Pokud na počítač přijde tento znak, pípne.
Můžete zkusit probudit nebo přivolat obsluhu protistrany zvoněním.
Stiskněte USE FRONT a mačkejte ZGZGZGZG…

Vidíme tedy, že představa Jefa Raskina o uživatelské přítulnosti byla jiná, než je dnešní matlání po skle.
Základem všeho byly klávesové zkratky a rychlý pohyb po textu pomocí leapování.

Některé akce (třeba označit celý text, označit zbytek textu, …) vyžadují od uživatele přemýšlení, ale při osvojení a nacvičení pak určitě probíhají velmi rychle.
Swyft Card v podstatě umožňuje i jednoduše realizovatelné “mail merge” a další vymoženosti, když uživatel vymyslí, jak.

Stejně tak považoval zřejmě Raskin pro uživatele za méně obtěžující a především za rychlejší, podívat se do referenční karty (třeba na seznam použitelných proměnných či hodnoty baudrate), než hledat, kde by se odpovídající volby mohly nacházet v nějakém menu.
Stejně tak možnost poskládat si třeba parametry sériové komunikace pomocí výrazu nebo vypočítané hodnoty evidentně považoval za méně omezující, než hledání parametrů v nabídkách.

To už ale příliš zavání představou, že by počítač měl něco počítat (případně francouzský ordinateur že by měl v něčem dělat pořádek).
A ta v době, kdy “kompl” je především nástroj zábavy a videí, může působit značně zastarale.