FSED

Z PMD 85 Infoserver

FSED


Obsah


FSED je jednoduchý celoobrazovkový editor textových súborov pre operačný systém CP/M 2.2. Oproti riadkovému editoru ED, ktorý je štandardne dodávaný s operačným systémom CP/M, poskytuje podstatne užívateľsky príjemnejšie ovládanie. Poskytuje množstvo editačných funkcií pre prácu s riadkom, celým textom i blokom textu. Editor pracuje iba s textom, ktorý sa vôjde do voľnej pamäti. Veľkosť voľnej pamäti závisí od konkrétnej implementácie CP/M.

FSED je možné pomocou konfiguračného programu FSEDCONF prispôsobiť pre konkrétne vlastnosti použitého terminálu. FSEDCONF komunikuje s užívateľom iba v anglickom jazyku.


Spustenie editora

Editor sa spúšťa obvyklým spôsobom:

   A>FSED [[d:]filename.ext [linenumber]]

Ak je uvedené aj meno súboru, daný súbor sa po spustení nahraje do pamäti. Meno nahrávaného súboru môže začínať písmenom zdrojového disku. Za menom súboru môže byť naviac uvedené aj desiatkové číslo, ktoré určuje číslo riadku, na ktoré sa po nahratí zadaného súboru nastaví kurzor.

Informačný riadok

 ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜
   36:5   (272)   [30547]  INS  A:FILENAME.EXT

Posledný riadok obrazovky je určený pre zobrazenie základných informácií o editovanom texte a pre zadávanie vstupných údajov. Informačný riadok je od editovaného textu oddelený jedným riadkom s vlnovkami. Informačný riadok obsahuje zľava:

  • číslo riadku, na ktorom stojí kurzor
  • číslo stĺpca, na ktorom stojí kurzor
  • v okrúhlych zátvorkách celkový počet riadkov textu
  • v hranatých zátvorkách zostávajúca veľkosť voľnej pamäti pre text
  • režim editora
    • INSert - vkladací
    • OVeRwrite - prepisovací
  • názov aktuálne editovaného súboru

Ak je šírka obrazovky menšia ako 48 znakov, meno aktuálne editovaného súboru sa zobrazuje v oddeľovacom riadku vpravo. Ak sa od užívateľa vyžaduje vstup, stane sa informačný riadok dialógovým pre zadávanie vstupných údajov.

Formát textu

Riadky sú ukončené štandardne znakmi CR <13> a LF <10>. Môžu obsahovať znak tabulátor TAB <9>. Ostatné riadiace znaky s kódmi menšími ako 32 sú pri nahrávaní súboru do pamäti zahadzované. Akceptované sú aj všetky znaky z hornej polovice ASCII tabuľky, teda s kódmi väčšími ako 127, kde sú zvyčajne znaky s diakritikou. Jeden riadok textu, vrátane rozvinutých tabulátorov na medzery, môže obsahovať maximálne 126 znakov. Pri opustení riadku, kedy sa riadok zaraďuje do textu, sú medzery a tabulátory na konci riadku odstraňované.

Bloky

Editor umožňuje definovať blok textu, s ktorým je možné vykonávať osobitné operácie. Príslušnosť riadkov k bloku je signalizovaná zvislou čiarou (znak |) v prvom stĺpci obrazovky. Nerozlišuje sa začiatok a koniec bloku, ale editor si pamätá dva okraje a pri zadávaní nového odstraní ten, ktorý bol zadaný skôr a pridá nový.

Editácia textu

Editor môže pracovať v prepisovacom alebo vkladacom režime, čo je signalizované v informačnom riadku, ako bolo uvedené vyššie. V prepisovacom režime sa znak, na ktorom stojí kurzor nahradí (prepíše) znakom zadaným z klávesnice. Vo vkladacom režime sa znak zadaný z klávesnice vloží pred znak, na ktorom stojí kurzor a text od kurzora ďalej sa posunie o jednu pozíciu doprava. Vloženie tabulátora znamená prechod na ďalšiu tabelačnú pozíciu vložením príslušného počtu medzier, pri zobrazovaní na obrazovke. V pamäti je samozrejme znak TAB <9>. Tabelačné pozície sú každých 8 znakov.

Editačné funkcie

V nasledujúcom je uvedený zoznam všetkých editačných funkcií editora s príslušným popisom. Názvy editačných funkcií sú uvedené v anglickom jazyku, rovnako, ako je to v konfiguračnom programe, v ktorom sa jednotlivým funkciám priraďujú požadované kontrolné klávesy.

Štandardné priradenie kontrolnej klávesy pre počítač PMD 85 je uvedené pri názve funkcie v zátvorkách. Znakom ^ bude označená klávesa Shift. Klávesa |<-- bude nazývaná ako šípka hore, klávesa -->| zasa ako šípka dolu a slovo HOME označuje šikmú šípku. Toto nastavenie je samozrejme možné v konfiguračnom programe zmeniť.

Editačné funkcie programu FSED
Funkcia Význam Klávesa na PMD 85
cursor left by char Posun o znak doľava.

Ak je kurzor v prvom stĺpci, nič sa nestane.

<--
cursor right by char Posun o znak doprava.

Ak je kurzor v poslednom 126. stĺpci, nič sa nestane.

-->
cursor to begin of line Prechod na začiatok riadku.

Kurzor sa nastaví na prvý stĺpec v riadku.

HOME
cursor to end of line Prechod na koniec riadku.

Kurzor sa nastaví za posledný vložený znak v riadku.

END
cursor left by word Posun o slovo doľava.

Kurzor sa nastaví na prvý znak predchádzajúceho slova. Za slová sa považujú skupiny znakov oddelené medzerou.

Shift + <--
cursor right by word Posun o slovo doprava.

Kurzor sa nastaví na prvý znak nasledujúceho slova.

Shift + -->
insert tabulátor - TAB Vloženie tabulátora v mieste kurzora.

Pri zobrazovaní to znamená, že sa od polohy tabulátora až po nasledujúcu tabelačnú pozíciu vytlačia medzery. Tabelačné pozície sú každých 8 znakov, teda 9. stĺpec, 17., 25., ... atď.

C-D
delete text from line Zmazanie obsahu riadku. CLR
delete text right of cursor Zmazanie časti riadku vpravo od kurzora. Shift + CLR
toggle mode INS/OVR Zmena editačného režimu. Viď. viššie. INS
delete char at cursor Zmaže znak na pozícii kurzora.

Ak sa kurzor nachádza na konci riadku, alebo je riadok prázdny, dôjde k spojeniu tohto riadku s nasledujúcim, ak ich celková dĺžka nepresiahne 126 znakov.

DEL
backspace Zmaže znak na pred kurzorom.

Ak sa kurzor nachádza na začiatku riadku, nič sa nestane.

K1
restore original line text Vráti obsah riadku do stavu, v akom bol pred jeho zmenou. RCL
next ASCII character Znak, na ktorom je kurzor, sa zmení na znak, ktorý za ním nasleduje v ASCII tabuľke. Shift + WRK
key ENTER/RETURN Nový riadok.

Ak stojí kurzor na začiatku riadku, tak sa PRED tento riadok vloží nový riadok.

Ak stojí kurzor na konci riadku, tak sa ZA tento riadok vloží nový riadok.

Ak stojí kurzor vo vnútri riadku, tak sa tento riadok rozdelí na dva v mieste kurzora.

Ak ale nie je dosť voľnej pamäti pre vloženie nového riadku, do info riadku sa vypíše "No room for line(s)".

EOL
cursor to previous line Posun o riadok hore.

Ak sa kurzor nachádza na prvom riadku obrazovky, zobrazí sa predchádzajúca stránka textu.

|<--
cursor to next line Posun o riadok dolu.

Ak sa kurzor nachádza na poslednom riadku obrazovky, zobrazí sa nasledujúca stránka textu.

-->|
previous page Prechod na predchádzajúcu stránku textu. Shift + |<--
next page Prechod na nasledujúcu stránku textu. Shift + -->|
first text line Prechod na prvý riadok textu. Shift + HOME
last text line Prechod na posledný riadok textu. Shift + END
delete current line Odstránenie riadku s kurzorom. Shift + DEL
duplicate line Zduplikuje aktuálny riadok tak, že pred tento riadok vloži jeho kópiu. Shift + INS
exchange lines Zamení aktuálny riadok s predchádzajúcim. Ak kurzor stojí na prvom riadku, nič sa nestane. Shift + RCL
set block boundary Nastavenie okraja bloku. Shift + C-D
enter command mode Prechod do príkazového režimu. WRK

Príkazový režim

Okrem často používaných operácií, ktoré je možné dosiahnuť funkčnými klávesami, obsahuje editor ešte príkazový režim. Povely v príkazovom režime sa zadávajú stlačením príslušnej písmenovej klávesy. Po stlačení klávesy 'enter command mode' (WRK), sa do informačného riadku vypíše: "COMMAND:" a čaká sa na zadanie povelu. Ak sa stlači klávesa, ktorá nemá žiadny povel, nič sa nevykoná. Zoznam povelov:

Q (Quit) - ukončenie programu 
Ak bol text zmenený a nebol uložený, do info riadku sa vypíše "Text changed. Save?". 'Y' znamená kladnú odpoveď a text je uložený pod aktuálnym menom. Klávesa 'N' znamená zápornú odpoveď a ukončenie editora bez uloženia textu. Ak text ešte nebol uložený (nebolo zadané meno súboru) editor si vyžiada zadanie nového mena súboru.
X (clear teXt) - zmazanie celého textu 
Editor najprv vypíše do info riadku "Are you sure?". Po stlačení 'Y' sa ešte testuje, či bol aktuálny text zmenený. Ak áno, dôjde k uloženiu textu, rovnako ako pri povele Q. Následne sa vymaže celý text.
L (Load) - nahratie textu zo súboru do pamäti 
Najprv sa testuje, či bol aktuálny text zmenený. Ak áno, dôjde k uloženiu textu, rovnako ako pri povele Q. Následne si editor vyžiada zadanie mena súboru a dôjde k nahratiu súboru do pamäti. Ak je súbor príliš dlhý a nevôjde sa do pamäti, do info riadku sa vypíše "Too long. Truncated!". V pamäti je iba časť textu.
S (Save) - uloženie textu do súboru 
Ak už bolo meno súboru zadané, text sa ihneď uloží. Inak si editor vyžiada zadanie mena súboru a text uloží.
A (save As) - uloženie súboru pod iným menom 
Editor si vyžiada zadanie mena súboru a text uloží. Zároveň sa zadané meno súboru stáva aktuálnym.
B (save Block) - uloženie označeného bloku do súboru 
Editor si vyžiada zadanie mena súboru a nastavený blok textu uloží.
D (Delete block) - zmazanie označeného bloku 
Editor najprv vypíše do info riadku "Are you sure?". Po stlačení 'Y' sa nastavený blok zmaže.
C (Copy block) - skopírovanie nastaveného bloku 
Nastavený blok textu sa skopíruje pred riadok s kurzorom. Ak ale nie je dosť voľnej pamäti pre skopírovanie bloku, do info riadku sa vypíše "No room for line(s)" a ku kopírovaniu nedôjde. Nemožno kopírovať do vnútra bloku.
G (Go to line) - skok na zvolený riadok 
Do info riadku sa zobrazí "Line:" a editor čaká na zadanie čísla riadku, na ktorý sa má skočiť. Ak zadané číslo nie je v rozsahu 1 až počet riadkov textu, nič sa nestane.
F (Find string) - vyhľadanie reťazca 
Vyžiada si zadanie reťazca, ktorý sa má vyhľadať a začne hľadanie od nasledujúceho riadku, pričom sa do info riadku zobrazí "Wait please...". Ak sa daný reťazec v texte nájde, kurzor sa nastaví na prvý znak nájdeného reťazca v riadku, v ktorom sa hľadaný reťazec našiel. Ak sa pri hľadaní dosiahne koniec textu, čo znamená, že sa hľadaný reťazec nenašiel, do info riadku sa vypíše "String not found". Pri hľadaní sa nerozlišuje veľkosť písmen (iba písmená v dolnej polovici ASCII tabuľky). Hľadaný reťazec môže obsahovať rôzne Escape znaky. Escape znak začína opačným lomítkom '\'.
  • \C - rozlišovať veľkosti písmen
  • \\ - opačné lomítko
  • \T - znak tabulátor
  • \? - ľubovoľný znak
  • \S - ľubovoľný počet medzier a tabulátorov, minimálne však jeden
N (find Next) - vyhľadanie ďalšieho výskytu 
Od nasledujúceho riadku sa hľadá ďalší výskyt reťazca zadaného v povely F.
Z (show directory) - zoznam suborov na disku 
Do info riadku sa zobrazí "Drive?" a editor čaká na stlačenie písmena disku, ktorého zoznam súborov sa má vypísať.

Hlásenia editora

No room for line(s) 
pri vkladaní nového riadku alebo pri kopírovaní bloku, ak nie je dosť voľnej pamäti
File not found 
požadovaný súbor sa na disku nenašiel
Loading file... 
pri nahrávaní súboru do pamäti
Command: 
editor očakáva zadanie povelu
Are you sure? 
pri mazaní celého textu alebo pri mazaní nastaveného bloku textu
Text changed! Save? 
text bol zmenený a užívateľ chce nahrať zo súboru nový text alebo chce zmazať celý text
Saving file... 
text sa ukladá do súboru
Name: 
editor očakáva zadanie mena súboru
Too long. Truncated! 
nahrávaný súbor je dlhší ako voľná pamäť
Bad file name 
zadané meno súboru je nesprávne
Directory full 
pri vytváraní/ukladaní súboru už nie je miesto v adresári
Disk full 
pri vytváraní/ukladaní súboru už nie je miesto na disku
Line: 
editor očakáva zadanie čísla riadku
Drive? 
editor očakáva písmeno disku
Wait please... 
pri hľadaní reťazcov
String not found 
ak sa pri hľadaní dosiahol koniec textu