.paper – malý šikovný textový editor pro esxDOS
Jak už je u mě zvykem, pracuji teď kromě jiného na několika projektech najednou – na věcech pro Forever, hrách 2048 a No Trust, NXPaintu, Calm Commanderu a samozřejmě také na Bow Commanderu, jehož novou verzi vydám během pár dnů.
A právě z Bow Commanderu jsem se rozhodl vyseparovat textový editor a udělat z něj samostatný dot command .paper.
Možná se ptáte proč. Odpověď je vlastně jednoduchá – přišlo mi to logické. Editor v Bow Commanderu už umí spoustu věcí a v nové verzi jich bude umět ještě pár navíc. Jako samostatný editor, který jednoduše spustíte z BASICu, má ale jednu nespornou výhodu: více volné paměti pro editovaný text.
PAPER je textový editor se 64 sloupci × 22 řádky textu, rozbalovací nabídkou, hledáním a nahrazováním a stavovým řádkem, který ukazuje, na kterém řádku právě jste, kolik místa vám ještě zbývá a zda máte v dokumentu něco neuloženého.
Žádná myš, žádné přepínání režimů, žádné čekání.
Jak PAPER pracuje s textem
Uvnitř drží PAPER celý dokument v takzvaném mezerovém bufferu neboli gap bufferu – stejné technice, na které stojí řada klasických textových editorů.
Bajty souboru jsou uložené jako
[text před kurzorem][nevyužitá mezera][text za kurzorem],
přičemž mezera je vždy přesně na pozici kurzoru.
Napsání nebo smazání znaku je proto operace s konstantním časem bez ohledu na velikost souboru.
Kde PAPER bere paměť
Dokument je uložený ve volné paměti samotného BASICu – v prostoru mezi koncem jeho pracovní oblasti a zásobníkem, který po dobu běhu dot commandu stejně leží ladem. PAPER si tuto mezeru při startu změří a zabere ji celou.
Proto vám čerstvě zapnutý stroj nabídne skoro 40 KB prostoru pro text a proto stejný build funguje na 48K i 128K Spectru, aniž by bylo potřeba sahat na stránkování paměti.
Do budoucna možná dodělám rozšíření paměti pro 128K. Ale popravdě – edituje někdo na ZX Spectru 120KB texty? Možná bude. A pak tu možnost dostane.
Požadavky
- ZX Spectrum 48K nebo 128K, případně kompatibilní stroj. PAPER drží dokument ve volné paměti BASICu, ne ve 128K paměťové bance, takže je mu v zásadě jedno, na kterém modelu běží.
- Rozhraní DivMMC nebo kompatibilní zařízení s esxDOS a SD/CF kartou či podobným úložištěm naformátovaným souborovým systémem, který esxDOS umí číst.
- Nejméně přibližně 2 KB volné paměti. Na čerstvě zapnutém stroji je jí skoro 40 KB, s větším programem v BASICu se PAPERu přidělí prostě to, co zůstane.
PAPER si skutečný stav paměti při startu vždy změří a pokud je místa málo, řekne to rovnou, místo aby se později choval nepředvídatelně.
Instalace a spuštění
PAPER se distribuuje jako jediný esxDOS dot command s názvem
PAPER bez přípony.
Stačí jej zkopírovat do adresáře /BIN na vašem esxDOS úložišti,
tedy tam, kde máte ostatní tečkové příkazy.
.paper readme.txt – otevře soubor k editaci
.paper /docs/notes.txt – funguje i plná cesta
.paper "muj soubor.txt" – cestu s mezerou nebo dvojtečkou dejte do uvozovek
Pokud soubor neexistuje, PAPER začne s prázdným dokumentem a vytvoří jej až při uložení.
Název souboru je povinný. Samotné .paper pouze vypíše nápovědu k použití.
Po ukončení editoru se vrátíte rovnou do BASICu a stroj zůstane ve stavu, v jakém byl předtím.
Funkce
- 64 sloupců × 22 řádků textu v úsporném písmu 4×8 bodů.
- Uložení dokumentu v mezerovém bufferu – vkládání a mazání zůstává rychlé bez ohledu na velikost souboru.
- Dlouhé řádky se zalamují přes tolik obrazovkových řádků, kolik potřebují, a stránkování počítá skutečné obrazovkové řádky místo logických.
- Držené klávesy se automaticky opakují při psaní, mazání znaků i pohybu kurzoru. Příkazy se naopak záměrně neopakují.
- Hledání, hledání dalšího výskytu a nahrazování.
- Smazání celého řádku, na kterém stojí kurzor.
- Skok o slovo vlevo a vpravo, skok na konec řádku a skok na začátek nebo konec souboru.
- Uložit a Uložit jako, včetně zadání cesty ve stavovém řádku. Uložit jako zároveň přesměruje i další běžné ukládání.
- Rozbalovací nabídka File / Edit / Go / Help jako alternativa k pamatování si všech zkratek.
- Vlastní okno nápovědy se seznamem všech kláves.
- Stavový řádek s číslem aktuálního řádku, počtem bajtů, které ještě lze napsat, a hvězdičkou při neuložených změnách.
- Při odchodu s neuloženými změnami se PAPER zeptá, zda uložit, zahodit, nebo ukončení zrušit.
- Zvuková odezva klávesnice.
Psaní
- Písmena, číslice a mezera se píší běžně; velká písmena přes CAPS SHIFT.
-
SYM SHIFT dává interpunkci:
! @ # $ % & ' ( ) _ : ? / * , . ^ - + = " ; - ENTER – rozdělí řádek v místě kurzoru.
- DELETE (CAPS SHIFT + 0) – smaže znak před kurzorem.
- SYM SHIFT + D – smaže celý řádek, na kterém stojí kurzor.
Pohyb
- CAPS SHIFT + 5 / 6 / 7 / 8 – vlevo / dolů / nahoru / vpravo. Při držení se pohyb opakuje.
- CAPS SHIFT + 4 / 3 – stránka nahoru / dolů.
- SYM SHIFT + Q / R – skok o slovo vlevo / vpravo.
- SYM SHIFT + E – skok na konec aktuálního řádku.
- SYM SHIFT + T / I – skok na začátek / konec souboru.
Hledání a nahrazování
- SYM SHIFT + F – Hledat: napište text a stiskněte ENTER.
- SYM SHIFT + G – Hledat další: zopakuje poslední hledání bez nového zadávání.
- SYM SHIFT + S – Nahradit: zeptá se na hledaný i nahrazující text.
Hledání nerozlišuje velká a malá písmena. Klávesnice Spectra si za každé velké písmeno účtuje CAPS SHIFT a hledání, které kvůli tomu nic nenajde, je přesně ten druh věci, který spíš otravuje.
Nahrazující text se naopak vloží přesně tak, jak jste jej napsali.
Hledání začíná těsně za kurzorem a když dojde na konec dokumentu, pokračuje od začátku. Hledání dalšího výskytu tak prochází všechny výskyty dokola místo toho, aby skončilo u posledního.
Pokud text v dokumentu není, PAPER to oznámí a kurzorem nepohne.
Nahrazování se zeptá na oba texty a pak změní všechny výskyty od kurzoru do konce dokumentu. Nakonec oznámí, kolik náhrad provedlo.
Pokud chcete pracovat s celým souborem, stiskněte nejdřív SYM SHIFT + T.
Undo zatím k dispozici není. Na kartu se ale nic nezapíše, dokud dokument neuložíte, a odchod s neuloženými změnami stále nabízí možnost změny zahodit.
Soubory, nabídka a konec
- SYM SHIFT + W – Uložit.
- SYM SHIFT + A – Uložit jako.
- CAPS SHIFT + 1 – okno nápovědy se seznamem všech zkratek.
- CAPS SHIFT + ENTER – otevře rozbalovací nabídku.
- BREAK (CAPS SHIFT + mezera) – ukončí editor nebo zruší aktuální dotaz či nabídku.
Omezení
- Maximální velikost dokumentu závisí na tom, kolik je při spuštění PAPERu volné paměti. Na čerstvě zapnutém stroji je to skoro 40 KB, s programem v BASICu odpovídajícím dílem méně.
- Hodnota Free ve stavovém řádku ukazuje přesný počet bajtů, které ještě zbývají. Při nule se psaní zastaví, místo aby paměť přetekla.
- Soubor se načte jen tehdy, pokud se celý vejde do paměti a zbude po něm alespoň 256 bajtů. Větší soubor PAPER odmítne, místo aby jej potichu zkrátil.
- Řádky odděluje samotné LF, tedy znak 10. Samostatný CR se přenáší beze změny, ale za konec řádku se nepovažuje.
- Tabulátory se zobrazují jako mezery, ostatní řídicí znaky jako tečka. V souboru se ale obojí zachová přesně tak, jak bylo.

