neděle 30. ledna 2000

Tools 40/80

autoři: Jiří Třasák a Sweet Factor

Program se nahraje zadáním příkazu 'RUN'. Ovládání Kempstonem připojeným k disketové jednotce umožníme tak, že program 'run' nahrajeme na 'MERGE' a odmažeme 'REM' na řádku 90. Program uložíme zpět na disketu s Line 90. Od verze 2.0 (Tools 80) vyeditujeme řádek 90 a opravíme OUT 153,0 na OUT 153,16. A uložíme zpět na disketu s Line 90. Od verze 3.1 není tento OUT použit (každý si nastaví před nahráním programu)

Čelní panel
V čelním panelu jsou zobrazeny tyto informace: jméno diskety, volné místo na této disketě, ve dvou širokých oknech jsou jména souborů, v dolním okně jsou zobrazeny údaje o souboru na němž právě stojí kurzor.

Údaje v čelním panelu můžeme ovlivnit stiskem 'S'. Objeví se menu s funkcemi:
Justify/Zarovnej - přípony souborů jsou zarovnány přesně pod sebou
Runables/Spustitelné - zobrazí se pouze soubory typu Basic nebo Snap
Sort files/Třiď soubory - jména souborů jsou seřazeny podle abecedy
Bold font/Tučné písmo - texty v Tools budou psány silnějším písmem
Actualise/Aktualisuj - změny prováděné v Tools se budou ukládat na disketu
Erased/Vymazané - v adresáři se vypíší i smazané soubory

Každá z těchto funkcí se stiskem Enter zapne (zjasní) nebo vypne (ztmavne).

U Actualise je tomu ve všech verzích naopak. Návrat z menu stiskem Space.

Ovládání
Potvrzení se provádí stiskem ENTER nebo pal na Kempstonu. Po položkách adresáře se pohybujeme kurzory nebo Kempstonem.

CS+1 - opuštění inputů (např. při změně jména atd.)
SPACE - opuštění některých menu
CS+SPACE - opuštění editací
CS+K - zapnutí nebo vypnutí ovládání Kempstonem.

Připojitelné mechaniky
Od verze 2.0 (Tools 80) můžeme používat dvě mechaniky. Při dvou mechanikách se v levém okně vypisují informace z mechaniky A a v pravém okně informace o mechanice B. Stiskem Space si zvolíme aktuální mechaniku, v jejímž okně bude kurzor. Při prvním stisku Space se načte adresář diskety v druhé mechanice proto nezapomeňte tam disk včas vložit.

Od verze 2.1 se navíc zobrazuje v horní polovině oken písmeno mechaniky (A nebo B) a při přepínání mechanik se tato písmena zjasní nebo ztmaví.

CS+Z - odpojení nebo připojení druhé mechaniky s možností kopírovat pouze na jedné. Tuto funkci můžeme použít při připojení mechanik 3,5 a 5,25. Pracovní prostor se zvětší z 18 944 bajtů na 26 112 bajtů.

Od verze 3.11 je tento pracovní prostor zvětšen o paměť 128-ičky (pokud je k dispozici).

Operace s disketou
N - načtení katalogu nové diskety
CS+F - formátování diskety. Pokud nechcete mít problémy s disketami odpovězte dvakrát stiskem ENTER a dvakrát stiskem klávesy "Y".
SS+F - rychlé formátování (pouze TOOLS 128). Verze 3.21 si disketu načte a zformátuje, verze 3.22 si disketu kontroluje. Je třeba před vlastní operací disketu pojmenovat. Rychlé formátování se dá použít na diskety již zformátované pod M-DOSem.

Informace o disketě
I - zapnutí informací o disketě
CS+I - zapnutí a vypnutí trvalého zobrazení informací

Format - počet stop na jedné straně diskety a počet sektorů ve stopě
Blocks - počet sektorů dobrých, volných a špatných na disku
Capacity - kapacita na kterou byl disk zformátován
Files - počet souborů na disketě
Selected - počet označených souborů a jejich celková délka

Při jedné mechanice se info zobrazuje vpravo, při dvou mechanikách je info vždy v protilehlém okně.

Mapa diskety
M - mapa rozložení souborů na disketě. Informace jsou zobrazeny barvami:

fialová - oblast obsazená adresářem diskety
zelená - prázdná místa na disketě
bleděmodrá - obsazeno uloženými soubory
červená - špatné sektory
žlutá - soubor na který v menu ukazuje kurzor

Od verze 2.0:
modrý border - první strana diskety
černý border - druhá strana diskety

Přejmenování diskety
V - přejmenování diskety

Editování diskety / souboru
CS+E - editace diskety
E - editace souboru

šipka dolů nebo nahoru - kurzor se přesune o jednu k vyšší nebo nižší adrese
šipka vlevo nebo vpravo - kurzor se posune o 16 bytes k vyšší nebo nižší adrese
CS+1 - zapnutí nebo vypnutí editace. Červený kurzor se změní na zelený a můžeme zapisovat písmena, číslo se zadá po stisku ENTER.
CS+2 - absolutní nebo relativní adresování editovaného souboru. Při editaci diskety se nepoužívá.
CS+3 - dekadický nebo hexadecimální výpis čísel.
CS+4 - určení adresy od které začneme s editací. (relativní - od nuly, absolutní - od skutečné adresy na níž by soubor začínal).
CS+SPACE - ukončení editace. POZOR všechny provedené změny se uloží na disketu.

Pro oba způsoby editace platí od verze 2.0 tyto změny:

* vypisují se informace o absolutním čísle editovaného sektoru na disketě, o čísle stopy a čísle sektoru na stopě
* po povolení zápisu čísel stiskněte ENTER a můžete vkládat čísla tak dlouho, dokud nestisknete CS+1

Individuální operace
R - přejmenování souboru na kterém stojíme kurzorem
SS+S - od verze 2.1 bylo zrušeno automatické setřídění souborů po provedeném přejmenování souboru. Touto funkcí si automatické setřídění můžete zapnout nebo opět vypnout.
A - nastavení atributů souboru. Stiskem ENTER u nabídky devíti položek menu, tento typ nastavíme nebo zrušíme. Změny se po stisku SPACE uloží na disketu, jestliže je položka Aktualisace zapnuta.
SS+U - obnovení smazaného souboru. Zapneme funkci Erased a nastavíme se kurzorem na soubor, který chceme obnovit (místo typu souboru je otazník) a stiskneme A. Změníme typ souboru z Unknown na správný (basic, code , snap) a stiskneme SS+U. Pokud se objeví hlášení File exists, soubor již nepůjde obnovit.
W - zobrazí obrázek ze Snapů i z basic částí komprimovaných programů. Obrázek se zobrazí a můžeme: stiskem S obrázek uložit na disketu nebo stiskem T obrázek uložit na kazetu. Od verze 2.1 se pakovaný obrázek hledá i uvnitř souborů typu Bytes.
B - změna startovací adresy u basic programu nebo počáteční adresy byte souboru.
SS+R - soubor na kterém stojí kurzor a je to basic nebo snap se spustí. Od verze 2.0 (Tools 80) dojde před nahráním zvoleného programu k úplnému vymazání paměti.

Od verze 3.1:
CS+R - nahraje a spustí soubor RUN (pokud je na disketě).
CS+H - softreset. Resetuje mechaniky a načte disketu. Velice vhodné pokud program hlásí chybu Sector not found a jsme si jisti, že daný sektor skutečně existuje.
CS+T - změna typu souboru (přípony) i na nestandartní typy.
F - nalezení souboru. Můžete zadat i jen začátek jména hledaného souboru.

Od verze 3.21:
CS+C - Vynulování počitadla bezhlavičkových souborů pro převod z pásky na disk (viz. níže).
CS+S - Setřesení adresáře diskety. Vyprázdní "díry" v adresáři disku po smazaných souborech.

Skupinové operace
Dále popisované operace se provádějí se souborem na kterém stojí kurzor nebo přednostně se soubory označenými.

Označení souborů
ENTER - označení/zrušení označení po jednom souboru
SS+K - označení všech souborů v menu
SS+J - zrušení označení všech souborů

od verze 3.21 změna:
SS+K - označení všech souborů, které vyhovují masce. Maska se zadává ve stejné syntaxi jako příkazy M-DOSu (jméno.přípona). Lze použít jak hvězdičkovou tak i otazníkovou konvenci. Maska je předdefinována takto: *.* (pro všechny soubory stačí zmačknout ENTER). Pokud chcete jinak, začněte rovnou psát (přednastavená maska se smaže) nebo upravte podle potřeby (např.: *.P)
K - označení všech souborů
SS+J - zrušení označení souborů podle masky
J - zrušení označení všech souborů.
SS+I - inverze označení souborů (které byly označené se ze "odznačí" a naopak.

Vymázání souborů
SS+D - po potvrzení této volby se vymažou označené soubory nebo soubor na kterém stojí kurzor.

Kopírování souborů
C - z vložené diskety se začnou načítat označené soubory a ukládají se na jinou vloženou disketu. Při prvním vyzvání na vložení diskety na níž se má kopírovat můžete kopírování přerušit stiskem CS+SPACE.

Při dvou mechanikách se kopírují označené soubory z adresáře v němž stojí kurzor do druhého adresáře. Po skončení kopírování zůstane kurzor v okně cílové diskety (Verze 3.21 zůstane ve zdrojovém okně).

Od verze 2.1 se zobrazuje v editačním řádku text (Copying) za nímž je jméno kopírovaného souboru.

SS+X - disk copy. Cílová disketa je zformátována na formát diskety zdrojové a potom se přenesou všechny soubory. Neobsazené sektory se nekopírují.

Od verze 3.21:
SS+C - totéž co kopírování, ale s rozdílem, že se program vrátí na zdrojovou disketu a nechá soubory označené.
SS+M - Přesun souborů ze zdrojové na cílovou disketu.

Protože program nekontroluje zda na disketě na níž se má ukládat již existuje soubor stejného jména jako soubor kopírovaný, je možno touto funkcí zdvojit soubory na jedné disketě.

Převod z diskety na kazetu
Z diskety se převádějí soubory označené nebo soubor na kterém stojí kurzor na kazetu. Snapshot se převede na kazetu do spustitelné podoby. Soubory delší než 25 kb budou rozděleny do dvou bloků s novými hlavičkami. Podle údajů z těchto hlaviček si budete muset bloky v počítači spojit v jeden. Basic programy nebo data soubory takto převádět nejde. (Poznámka: je jednodušší si vytvořit v počítači vhodný CLEAR a bloky nahrát z diskety a potom uložit na kazetu než touto funkcí).

T - převod souborů z diskety na kazetu

Od verze 3.21program převede jakýkoliv soubor s libovolnou délkou bez zbytečného rozdělování do bloků. Navíc dokáže převádět i bezhlavičkové bloky (mají příponu H - formát uložení je shodný s MASTERcopy).

Převod z kazety na disketu
D - převod souborů s hlavičkami z kazety na disketu

Vhodné pouze pro soubory s menší délkou než 25 kb. Pro převod delších souboru platí poznámka výše).

Od verze 3.21 platí jako v minulém odstavci.

Závěr
Tools 200 má pouze úpravu pro kopírování na počítačích se 128kB RAM. Tools 128 má navíc tyto funkce. CS+S,CS+C,SS+C,SS+M,J,K,SS+I a předělány funkce SS+K,SS+J a je určena pouze pro 128ičky.

Zvláštní funkcí je přejmenování. Něco už jsem nakousl v kapitole o označování souborů. Pokud chcete přejmenovat soubor nebo disketu, program vám nabídne původní jméno souboru k opravě (např.: pokus2 na pokus3 - takto stačí BACKSPACE a doplnit "3"). Pokud ale chcete mít jméno úplně jiné, stačí jen začít psát. Původní jméno se smaže a začne se vypisovat nové.

středa 5. ledna 2000

A-Mouse III

autor: Zbyněk Vanžura

Již je to trošku delší doba, co jsem dostal od jednoho čtenáře pěkný ovladač pro myš (omlouvám se mu, ale při hardwarové poruše mého pevného disku jsem přišel o jeho jméno). Je opravdu pěkný, rychlý, malý - dokonce se mi jej podařilo vtěsnat do kalkulačky, jež napsal Universum jako utilitu pro Desktop. Takže teď už nechci od nikoho slyšet, že ovládání myši je moc paměťově náročné. Ale teď už k tomu ovladači:
AMouse
in
a,(31)
;vezme původní stav clonek

ld
d,a

ld
b,0
;počet průchodů smyčkou
AMouseC
in
a,(31)
;vezme nový stav myši

ld
e,d

ld
d,a

rra

;zjisti zda clonky patřící

rra

;k jednomu směru mají stejnou úroveň

xor
d

and
3

ld
c,a
;když jsou, tak se bity odpovídající

rlca

;oběma clonkám nastaví na jedničky

rlca

;a při operaci xor e dojde k negaci

or
c

xor
e
;starý stav clonek

xor
d
;nový stav clonek

ld
c,a
;výsledek: 001 směr vpravo

and
5
;100 směr vlevo

jp
pe,AMouse1
;0101 a 0000 myš stojí skok

inc
h
;zvýší se X

dec
a
;směr vpravo ?

jr
z,AMouse3
;ano, skok

dec
h
;zruší se zvýšení X

jr
AMouse1
;X=0, snížení nemožné, skok

dec
h
;X=X-1

jr
AMouse1
AMouse3
ld
a,h
;test přetečení z 255 na 0

and
a
;je X=0 ?

jr
nz,AMouse1
;ne, k přetečení nedošlo

dec
h
;sníží se zpět na 255
AMouse1
ld
a,c
;stejný test v ose Y

rrca

and
5
;při 0000 a 0101 skok

jp
pe,AMouse2

inc
l
;zvýší se Y

dec
a
;směr dolů ?

jr
z,AMouse4
;ano, skok

dec
l
;když Y=0, tak by došlo

jr
z,AMouse2
;k přetečení a proto skok

dec
l
;Y=Y-1
AMouse4
ld
a,l
;ošetření přetečení přes 192

cp
192

jr
c,AMouse2

dec
l
;když Y>=192 tak Y=Y-1
AMouse2
djnz
AMouseC
;počítadlo průchodů

ret

.end
Pokud jste nebyli nedočkaví a ještě ovladač myši nevyzkoušeli, napíši vám také jeho nevýhody. Nevýhodou je to, že je rychlý, ano nespletl jsem se, je rychlý a z toho důvodu myš testuje jen chvilku za kterou sice neprošvihne téměř žádný impuls clonek, ale přesto je myš pomalejší než z předchozím ovladačem (ZX Magazín 1/95), neboť myš testuje jen nepatrnou chvilku. Ale nebojte se, nechci vám vnucovat svůj původní ovladač, jen se vám pokusím ukázat, jak to vyřešit jinak a lépe.
Představte si, že si vykreslíte obrazovku, pokud chcete program ovládat šipkou, tak se toho až tak moc v programu nevykresluje (většinou jen ta šipka) a poté si otestujete joystick, klávesnici nebo myš a čekáte na další přerušení, abyste mohli opět překreslovat obrazovku. Ale co ten nevyužitý čas co se čeká na přerušení, proč jej zmařit instrukcí HALT, proč netestovat myš až do poslední chvíle. Jistě, nedokážeme uhodnout, kdy k přerušení dojde a vzhledem k počítačům Didaktik M a jim podobným to nepoznáme ani podle toho zda se vykresluje PAPER, nebo uz BORDER. Když ale nemůžeme přerušení rozpoznat, proč si nenadefinovat vlastní - třeba následujícím postupem:
Inicializovat přerušení IM 2 například následující rutinkou:
InicIM2
di

;zakaž přerušení

ld
a,$3b
;nastav do registru

ld
i,a
;číslo $3b adresa bude na $3bff (15359)

ld
a,$18
;na adresu 65535 (což je ona adresa)

ld
(65535),a
;ulož kód instrukce jr (provede se skok na adresu 65422)

im
2

ei

ret
Na adresu 65422 uložit rutinku pro obsloužení přerušení, nebo spíše hlavní program, který nakonec spustí dokola již zmiňovaný test myši. Takže opět příklad:

.org
65422
;adresa kam skočí instrukce jr na adrese 65535

ld
sp,Zasobnik
;nutno nastavit zásobník, neboť se stále posouvá

call
SmazSipk
;rutina pro smazání šipky

call
TestTlac
;rutina pro test tlačítek

ld
hl,(Sourad)
;do HL nové souřadnice šipky

call
KresSipk
;rutinka pro nakreslení šipky

ei

;nesmíme zapomenout povolit přerušení
AMouse
in
a,(31)
;vezme původní stav clonek

ld
d,a
AMouseC
. . .

;pokračování je shodné jako předtím


. . .

;jen konec poupravíme
AMouse2
ld
(Sourad),hl
;ulož nové souřadnice šipky

jr
AMouseC
;a znova dokud nás přerušení nepřeruší

Sourad
.dw
0
;X a Y souřadnice šipky

.end
Podprogramy pro kreslení a mazání šipky a test tlačítek si doufám již naprogramujete sami.
Na závěr popřeji co nejcitlivější šipku.