D-Text (původně počeštěný Spectral Writer)
D-Text je editor s dlouhou historií. Původně byl vydán v roce 1984 jako Spectral Writer a jeho autorem je Gianluca Carri (UK). Ale protože v socialistickém Československu se na autorská práva pohlíželo jinak než na západě a protože mezi uživateli ZX Spectra byl o textový editor zájem ujal se Daniel Jenne konverze a počeštění někdy v roce 1986. Napsal k němu i manuál, který podle všeho byl napsán v samotném D-Textu. Další manuál napsal Ladislav Zajíček (-elzet-).
Já jsem se s D-Textem setkal až mnohem později, když se mi možná v roce 1994 do rukou dostala disketa s magazínem Bratislavského Betaklubu, kde byl pro Betadisk upravený D-Text společně s texty článků. Tou dobou už jsem používal Proximácký Desktop, tak mi D-Text až tak moc neučaroval, ale přesto byl zajímavý a oproti jiným i relativně snadno ovladatelný a rychlý. A to jsem ještě netušil, že se mi ho podaří o 30 let později ještě zrychlit.
Proč?
Protože jsem chtěl jednoduchý textový editor, abych mohl pohodlněji psát a tisknout texty na svém plotru. Vzpoměl jsem si na D-Text, se kterým jsem si hrál například při pokusech s merkurovým plotrem Alfi. Jenomže jsem si neuvědomil, že to dá docela hodně práce program nejenom disassemblovat do kompilovatelné podoby, ale hlavně pochopit. Pochopení a zdokumentování samo o sobě zabralo nejméně 2/3 času, ne-li mnohem víc. Trvalo mi to celý prosinec 2021.
Když jsem začal objevovat mnohé nedokonalosti a nedostatky programy, který pochází až z roku 1984, tak už se mi nechtělo s tím přestat. Investoval jsem do toho tolik úsilí, že se mi nechtělo ustoupit a začít totéž na možná schopnějším D-Writeru (původně The Writer), nebo na ještě lepším Text Machine, který dodnes znám jen z doslechu, protože je určený výhradně pro D40 a jiná verze dosud neexistuje. Navíc u D-Writeru si nejsem zcela jistý, že by to byl krok k lepšímu. Program umí trochu víc, ale je zároveň hůř ovladatelný, pomalejší a pro text má vyhrazeno méně paměti.
Jedním z lákadel, kvůli kterým jsem začal D-Text analyzovat byla domnělá jednoduchost a už hotová podpora Betadisku. Jenomže z jednoduchosti se na mnoha místech stala nedokonalost a podpora Betadisku není natolik provázaná s programem, aby se nedala doplnit i do jiného editoru.
Přesto to byla fascinující zkušenost. Odkrývat způsob práce programátora před 40 lety v kontrastu s pozdějšími znalostmi a v kontrastu s tím, že jsem program v roce 1994/1995 považoval za něco mnohem dokonalejšího, než opravdu je.
Výsledek analýzy
Výsledkem je v tuto chvíli nahrubo okomentovaný a zkompilovatelný zdroják. Komentáře určitě nejsou všude správně. Během přepisování jsem objevil několik míst, která fungují jinak než jsem se domníval. Ale cílem nebylo mít perfektně zdokumentovaný zdroják k původní binárce. Cílem bylo mít kód, který jsem mohl začít upravovat a přepisovat podle mé chuti a potřeb. Instrukce a data ve zdrojáku správně jsou, kompiler z něj vyrobí identickou binárku, jako byla verze D-Textu, který jsem začal analyzovat.
Přesto získaný zdroják původního D-Textu zveřejňuji, berte však komentáře ve zdrojáku s velikou rezervou. Nemám důvod se k tomu vracet a komentáře opravovat.
Zdrojový kód mé verze programu bude komentovaný mnohem přesněji a správněji. Ale protože změny byly opravdu velké, vlastně z původního programu zbyly jen malé části kódu a to ještě na úplně jiných místech v paměti, než byly původně, tak nový zdrojový kód určitě nebude použitelný k pochopení původní verze.
Download
- 2022-02-20_dtext-disasm.tar.bz2 - disassemblovaný a nahrubo analyzovaný Betadiskový D-Textu z roku 1994
nový D-Text
Jaké byly konkrétní cíle?
Cílů a plánů bylo mnoho, vypadaly jednoduše, ale natáhlo se to na týdny práce po večerech a o víkendech. Za nejdůležitější považuji.
- jednoduše ovladatelný editor prostého textu
- plná podpora Češtiny a pokud možno i Slovenštiny
- zachovat kompatibilitu s existujícími textovými soubory
- přizpůsobitelnost pro libovolnou tiskárnu
- pohodlné ukládání a načítání souborů
- podpora pásky i TRDOSu a teprve později možná i dalších systémů
- zvyklosti a ovládání podobnější Desktopu, kde to dává smysl
Výpis textu na obsazovku
Přepracováním kódu pro výpis mikroprintu, to jest znaků v rastru 8x4px na obrazovku a přepsáním dalších podprogramů pro manipulaci s obrazem jako je mazání a scroll jsem dosáhl největšího urychlení za cenu jen o málo delšího kódu.
Původní mikroprint měl například uložené znaky jen v jedné půlce bytu a kvůli sudým znakům musel každý byte předlohy o 4 bity rotovat vlevo. Takových nedostatků tam bylo mnoho. Někde pomohlo zjednodušení kódu, lepší algoritmus, rozvinutí cyklu... výsledkem jsou mnohem svižnější reakce D-Textu, jak ukazuje toto video.
Práce se soubory
D-Text a vlastně už i původní Spectral Writer využíval pro práci se soubory příkazy v BASICu a s BASICovým programem byl provázaný mnohem víc, než se mi líbilo. Pro Betadisk upravený D-Text měl navíc vypnutou podporu pásky. Já chtěl obojí tak pohodlné, jak je jen možné.
Podprogramy pro práci s páskou jsem přepsal společně s hlavním menu do strojáku. Tím se vše stalo menším a mnohem rychlejším. Zbylo mi díky tomu o kousek víc místa na buffer pro celý TRDOSový adresář, díky kterému jsem mohl napsat souborový dialog téměř tak pohodlný, jako na moderních PC. Při načítání stačí soubor jen vybrat bez opisování jména souboru, jako tomu bylo dosud.
Hlavní menu
V původním D-Textu bylo hlavní menu místem nejenom pro načítání souborů, ale i pro tisk a nastavení tiskárny. To přestalo dávat smysl, protože nastavení tiskárny má být výhradně záležitostí ovladače. Hlavní menu proto bude dovolovat pouze načtení ovladače tiskárny. Nastavení jsem přesunul pod klávesovou zkratku EXT+I v editoru, po vzoru Proximáckého Desktopu. (EXT+P je tisk)
Ponechal jsem v hlavním menu volbu komprese, to patří k souborům. A ze stejného důvodu jsem přesunul do hlavního menu konverzi češtiny z R-Textu, která byla původně pod klávesovou zkratkou v editoru.
ZX Printer
Původní Spectral Writer uměl tisknout primárně na ZX Printer, ale kvůli potřebě rozšířit klávesové kódy pro psaní diakritiky byla v D-Textu možnost tisknout na ZX Printer rozbitá. Určitě to tak bylo ve verzi, ze které jsem vycházel.
Uživatelů ZX Printer určitě není a nebude mnoho, ale je to "tiskárna", která k ZX Spectrum patří a která je podporovaná v některých emulátorech. Proto jsem ZX Printer využil jako vzor pro tvorbu dalších ovladačů pro další tiskárny.
Podpora tiskáren
Mým cílem jsou v zásadě tři - HPGL plotr a písma pana Hersheyho, HP Deskjet a LaserJet s LPT portem podporující jazyk PCL3 a tiskárny EPSON s LPT portem a jazykem ESC-P. Cokoli dalšího je bonus navíc, pokud někdy vznikne.
Na programu stále občas pracuji... ještě není hotovo.
Download
- 2022-02-20_dtext-disasm.tar.bz2 - disassemblovaný a nahrubo analyzovaný Betadiskový D-Textu z roku 1994
- dtext-manual-djenne.tar.bz2 - manuál Daniela Jenneho k jeho D-Textu převedený do PDF jako OCRkovaný text (dříve se internetem potulovalo jen PDF z nascanovaných obrázků)
Související odkazy
- různé verze D-Textu na OldComp Wiki - verze nejbližší té, ze které jsem vycházel je asi "D-Text 1994 Betadisk "
- Spectral Writer na Spectrum Computing - editor, ze kterého D-Text vznikl lokalizací a dalšími úpravami Daniela Jenneho
- Spectral Writer na World Of Spectrum - editor, ze kterého D-Text vznikl lokalizací a dalšími úpravami Daniela Jenneho
- diskuze o D-Textu na OldComp.cz
Historie změn článku
- 2022-02-20 - Zveřejněna první část.
- 2023-06-16 - Zveřejněn z papíru do textu převedený manuál.
- 2023-12-23 - Aktualizován manuál - použil jsem Softhousovo správně počeštěné písmo.