.. L ! ! ! ! ! ! ! ! ! ! ! R .pl 72 .he EDitor - Ghid de utilizare .fo # .uj 1 1. PREZENTARE GENERALA ED este un editor de texte contextual, care lucreaza sub sistemul de operare CP/M si este utilizat pentru crearea si modificarea fisierelor sursa. Lansarea in executie a programului ED se face prin una dintre comenzile: (1) ED specificator-individual(CR) (2) ED specificator-individual nume-unitate(CR) Forma (1) permite crearea unui fisier sursa (ASCII) pe disc, sau modificarea unui fisier existent deja pe disc. Prin aceasta forma, atit versiunea anterioara editarii, cit si fisierul rezul tat in urma editarii se pastreaza pe aceeasi unitate de disc (unitate pe care se gaseste fisierul de editat). EXEMPLU: ED X.Y(CR) editeaza fisierul X.Y de pe discul instalat si pastrea za versiunea anterioara editarii in fisierul X.BAK, iar fisierul rezultat din editare in X.Y. (Daca fisierul X.Y nu exista, el se creeaza in urma editarii). Forma (2) permite utilizarea simultana a doua unitati de disc: - o unitate, pe care se gaseste fisierul de editat si pe care se va pastra versiunea anterioara editarii; - o unitate, pe care se va gasi fisierul rezultat din editare. Daca unitatea specificata (pentru fisierul rezultat) este decla rata R/O, atunci la consola va apare mesajul: Bdos Err On x: R/O unde "x" este numele unitatii specificate in comanda ED si procesul de editare se va intrerupe. Dupa apasarea oricarui caracter se face o reinitializare a sistemului, care deprotejeaza toate unitatile. Dupa verificarea discurilor montate, si o noua reinitializare, se reintroduce comanda. .cp 12 EXEMPLU: ED X.Y B:(CR) editeaza fisierul X.Y de pe discul "A" si rezulta in urma editarii fisierele: X.BAK (pe discul "A") versiunea anterioara X.Y (pe discul "B") rezultatul editarii .cp 5 Daca fisierul supus editarii exista deja si avea atributul R/O, la consola apare mesajul: ** FILE IS READ/ONLY ** care atentioneaza utilizatorul ca fisierul nu poate fi modificat, ci doar vizualizat. Daca fisierul exista deja si avea atributul SYS, la consola apare mesajul: "SYSTEM" FILE NOT ACCESSIBLE si procesul de editare se intrerupe. In ambele cazuri, utilizato rul trebuie sa modifice atributele fisierului de editat, prin comanda STAT. In forma (2), daca pe unitatea specificata in comanda exista deja un fisier cu nume identic cu cel al fisierului de editat, apare la consola mesajul: FILE EXISTS, ERASE IT si procesul de editare se intrerupe. Utilizatorul trebuie sa utilizeze comanda ERA pentru a sterge intii acest fisier si apoi sa reia procesul de editare. Editorul ED lucreaza intern cu un fisier temporar pe disc, cu nume identic cu cel al fisierului de editat si extensie "$$$", fisier ce se va gasi pe aceeasi unitate cu fisierul de editat (forma (1)) sau pe unitatea specificata in comanda (forma (2)). Functionarea editorului ED este prezentata in FIG. 1. Procesul de editare consta in: - transferarea continutului (integral sau partial) fisierului sursa (de editat) in buffer-ul de memorie al editorului (daca acest fisier exista !); - modificarea continutului buffer-ului de memorie prin comenzi ED (inserare text, modificare text, etc.); - scrierea continutului (partial sau total) al buffer-ului de memorie in fisierul temporar; - transferarea, la sfirsitul procesului de editare, a continu tului integral al buffer-ului de memorie si a acelei parti din fisierul sursa care n-a fost citita (daca e cazul !) tot in fisierul temporar; - modificarea numelui fisierului sursa in "x.BAK" si a fisie rului temporar in "x.y". .cp 12 Editorul ED lucreaza numai cu fisiere sursa (fisiere alcatuite din caractere ASCII). Toate operatiile de editare (modificare) se realizeaza asupra buffer-ului de memorie. Capacitatea buffer-ului este dependenta de versiunea de CP/M (ea poate fi cunoscuta prin intermediul comenzii V). Editorul ED lucreaza cu doua entitati: - caractere; - linii (o linie este o succesiune de caractere, de orice lungime, terminata prin caracterele (CR)(LF)). .pa .uj 0 ------------ ( ) ( ) | ------------ | | | | BIBLIOTECI | | SURSA | | | ( ) ------------ | | | | | (R) | | | V ------------ ------------ ------------ ( ) | | ( ) ( ) | | ( ) | ------------ | | BUFFER | | ------------ | | | | | | | | FISIER |----->| EDITOR |----->| FISIER | | SURSA | (A) | | (W) | TEMPORAR | | X.Y | | | | X.$$$ | ( ) | | ( ) ------------ ------------ ------------ | ^ | | | la sfirsitul | | | la sfirsitul | procesului de | | | procesului de | editare | | | editare | | | | | (E) (I) | | (T) | (E) | | | | | | | | V | V V ------------ ---------------- ------------- ( ) | -------- | ( ) ( ) | ( ) | ( ) | ------------ | | ( ) | | ------------- | | | | -------- | | | | COPIE | | | | NOUL FISIER | | A FISIERULUI | ---------------- | SURSA | | X.BAK | ( ) | X.Y | | | ------------------ | | ( ) | | ( ) -------------- ------------------ ------------- .uj 1 NOTA Programul ED accepta de la consola atit ca ractere ASCII minuscule cit, si caractere ASCII majuscule. FIG. 1 .pa In buffer, liniile sint dispuse una dupa alta. Pentru a putea parcurge ordonat buffer-ul de memorie, acesta are asociat un "INDICATOR la nivel de caracter" (IC), care poate fi deplasat sub controlul utilizatorului. Indicatorul nu este vizibil la consola si el poate sa se gaseasca in una din pozitiile: - inaintea primului caracter existent in buffer; - dupa ultimul caracter existent in buffer; - intre doua caractere consecutive existente in buffer. Utilizatorul poate, in orice moment, sa afle pozitia IC-ului si respectiv sa modifice aceasta pozitie. IC-ul nu poate fi deplasat (prin comenzi utilizator) in afara limitelor buffer-ului de memo rie (el se opreste cel mult pe una din limite). Prin conventie se numeste "linie curenta" linia in care se gaseste la un moment dat indicatorul. .pa 2. COMENZI ED Dialogul cu programul ED se face de la consola, prin intermediul comenzilor ED. Comenzile pot fi: - individuale, sub forma: comanda(CR) - inlantuite, sub forma: comanda(1)comanda(2) . . . comanda(n)(CR) Lungimea maxima a unei comenzi (sir de comenzi) ED este de 128 caractere. Un sir de comenzi (sau o comanda) este executata numai dupa ce a fost introdus caracterul (CR). In timpul introducerii unei comenzi (sir de comenzi) se pot folosi, pentru corectii, carac terele de editare ale sistemului CP/M (ex: (RUBOUT), (CTRL/U), (CTRL/R), etc). Toate caracterele de tip (CTRL/x) introduse in comenzile ED (cu exceptia caracterelor de editare ale sistemului CP/M) apar afisate la consola sub forma "^x". Comenzile ED au forma generala: [+/-n]nume-comanda(CR) unde: n - este un intreg, exprimat in zecimal, cu va lori intre 0 si 65535; nume-comanda - este o litera. .cp 9 Exista urmatoarele conventii valabile pentru scrierea comenzilor ED: - daca "n" este omis intr-o comanda in care el poate figura, se considera implicit n=1; - daca semnul ("+/-") apare specificat in sintaxa unei comenzi si este omis la utilizare, se considera implicit egal cu "+"; - oriunde apare "n" in sintaxa unei comenzi, el poate fi inlocuit prin caracterul "#", care are semnificatia de "n=65535". .cp 7 O particularitate a editorului ED este aceea ca el asigura accesul la texte atit prin context, cit si pe baza numarului de linie. Fiecare linie are un numar asociat, exprimat sub forma: nnnnn: numar cuprins intre 1 si 65535 ce poate fi referit in comenzi. .cp 5 De exemplu, forma: nr-linie: este echivalenta cu comanda: pozitioneaza-te in linia "nr-linie", .cp 6 iar forma: :nr-linie comanda este echivalenta cu: executa comanda de un numar de ori egal cu diferenta intre "nr-linie" si "numarul absolut al liniei curente" O comanda de tipul: nr-linie-1::nr-linie-2 comanda este echivalenta cu: executa comanda incepind din linia cu numar egal cu "nr-linie-1" de k ori (unde k=nr-linie-2-nr-linie-1). Prima linie din buffer-ul de memorie are intotdeauna numarul 1 iar numerele de linie cresc din 1 in 1. Numerele de linie inso tesc textul numai in buffer-ul editorului, ele nepropagindu-se in fisierul temporar/rezultat. Numerele de linie pot fi folosite pentru a precede orice comanda ED standard. Exista si posibi litatea de a anula numerotarea automata a liniilor (vezi comanda V). .cp 7 Comenzile ED se impart in: - comenzi de I/E - comenzi de editare texte - comenzi de lucru cu biblioteci sursa - comenzi generale .cp 7 2.1 COMENZI de I/E Realizeaza transferul de linii din fisierul sursa in buffer-ul de memorie, sau din buffer-ul de memorie in fisierul temporar (si eventual final). Modul de lucru al acestor comenzi este prezen tat in FIG. 2. Comenzile de I/E sint: .cp 6 nA(CR) - citeste "n" linii din fisierul sursa (incepind de la pozitia PS) si le transfera in buffer-ul de memorie (incepind din pozitia PM). Incrementeaza corespunzator PS si PM cu "n". Nu afecteaza pozitia IC-ului. .cp 6 0A(CR) - citeste linii din fisierul sursa pina cind umple o jumatate din capacitatea buffer-ului de memorie. Incre menteaza corespunzator indicatorul PS. Nu afecteaza pozitia IC-ului. .cp 15 #A(CR) - citeste linii din fisierul sursa pina cind se umple buffer-ul de memorie sau se ajunge la sfirsit de fisier sursa. Nu afecteaza pozitia IC-ului. NOTA Daca intr-o comanda A se depaseste capacita tea buffer-ului de memorie, la consola este semnalata o eroare. Utilizatorul va trebui sa foloseasca comanda W pentru a-si elibera buffer-ul. Depasirea capacitatii buffer-ului poate apare si in mijlocul unei linii, caz in care, restul liniei va fi citit (preluat) prin urmatoarele comenzi A. .. L ! ! ! ! ! ! ! ! ! ! ! R .cp 7 nW(CR) - scrie primele "n" linii din buffer in fisierul tem porar (incepind din pozitia PT) si deplaseaza linia "n+1", la inceputul buffer-ului. Incrementeaza PT cu "n" si decrementeaza PM cu "n". Nu afecteaza pozitia IC-ului. .cp 4 0W(CR) - scrie linii din buffer, in fisierul temporar, pina cind buffer-ul este cel putin jumatate gol. .cp 7 E(CR) - termina procesul de editare si preda controlul siste mului CP/M (copiaza tot textul din buffer in fisierul temporar, copiaza toate liniile netratate din fisierul sursa in fisierul temporar si schimba numele fisierelor (asa cum a fost descris anterior)). .cp 12 H(CR) - prin aceasta comanda fisierul temporar devine noul fisier sursa, buffer-ul de memorie este golit si se creaza un nou fisier temporar (cu PT pozitionat la inceputul acestuia). Comanda "H" este echivalenta co menzilor: E(CR) (comanda ED) ED x.y(CR) (reapel program) IC se pozitioneaza pe inceputul buffer-ului. .cp 8 O(CR) - revine la fisierul sursa original. Buffer-ul de memo rie este golit, fisierul temporar este sters iar PS revine la pozitia 1 din fisierul sursa. Prin aceasta comanda se realizeaza anularea unor comenzi de editare efectuate anterior si se reia de la inceput procesul de editare. IC se pozitioneaza pe inceputul buffer-ului. .cp 11 Q(CR) - abandoneaza lucrul cu editorul, fara a modifica fisie rul sursa si preda controlul sistemului CP/M. NOTA Comenzile E, H, O, Q trebuie introduse NUMAI ca o comanda individuala. Comenzile O si Q solicita la consola un raspuns (Y/N), ele fiind efective numai atunci cind raspunsul este "Y". .. L ! ! ! ! ! ! ! ! ! ! ! R .pa ORGANIZAREA BUFFER-ULUI DE MEMORIE .uj 0 FISIERUL SURSA BUFFER DE MEMORIE FISIER TEMPORAR --------------- ----------------- --------------- | | | | | | 1 | prima linie | 1 | prima linie | 1 | prima linie | | | | | | | --------------- ----------------- --------------- | | | | | | 2 |linii citite | | text din | | text | 3 |(transferate)| | buffer | | prelucrat | | | | | | | | | | | | | | | | | | | | | | | | | PS | | PM | | PT | | -->--------------- -->----------------- -->--------------- | | | | | | | linii sursa | | spatiu de | |spatiu fisier| | neprelucrate| | memorie | | disponibil | | | | disponibil | | | | | | | | | | | | | | | --------------- ----------------- --------------- .uj 1 PS - indicator al urmatoarei linii care va fi citita din fisierul sursa (comanda A). PM - indicator de inceput al zonei de memorie dispo nibila in buffer. PT - indicator de inceput al zonei din fisierul tempo rar disponibila la momentul respectiv. FIG. 2 .pa 2.2 COMENZI de EDITARE texte Aceste comenzi se aplica numai asupra buffer-ului de memorie. Ele sint: - comenzi la nivel de caracter - comenzi la nivel de linie - comenzi asupra sirurilor de caractere 2.2.1 Comenzi la nivel de caracter +/-B(CR) - deplaseaza IC la inceputul buffer-ului de memorie (daca s-a specificat semnul "+") sau la sfirsitul buffer-ului de memorie (daca s-a specificat semnul "-"). +/-nC(CR) - deplaseaza IC-ul in buffer peste "n" caractere (catre inceputul buffer-ului daca este specificat semnul "-" si catre sfirsitul acestuia in caz contrar). +/-nD(CR) - sterge "n" caractere din buffer aflate inaintea IC- ului (daca s-a specificat semnul "-") sau aflate dupa acesta, in caz contrar. .cp 7 2.2.2 Comenzi la nivel de linie +/-nL(CR) deplaseaza IC-ul in buffer peste "n" linii (spre inceputul buffer-ului daca semnul este "-" si spre sfirsitul acestuia, in caz contrar). NOTA Daca n=0 atunci IC-ul este deplasat la inceputul liniei curente. Daca n este diferit de 0 atunci este deplasat intii IC-ul la inceputul liniei curente si apoi este mutat peste "n" linii. .. L ! ! ! ! ! ! ! ! ! ! ! R +/-nK(CR) - sterge "n" linii din buffer, utilizind IC-ul ca punct de referinta. Daca IC nu se gaseste la inceputul liniei atunci: .cp 4 daca s-a specificat semnul "+" se sterg (n-1) linii aflate dupa linia curenta si toate caracterele din linia curenta aflate intre IC si sfirsitul liniei ((CR)(LF)). .cp 3 daca s-a specificat semnul "-" se sterg caracte rele din linia curenta aflate inaintea IC-ului si (n) linii anterioare liniei curente. .cp 4 daca n = 0 se sterg caracterele din linia curenta aflate inaintea IC-ului. Comanda nu afecteaza pozitia IC-ului. .cp 7 +/-nT(CR) - tipareste la consola continutul a "n" linii din buffer. Daca n este 0, tipareste continutul liniei curente pina la IC. Daca n este 1, tipareste continutul liniei curente de la IC pina la sfirsitul liniei. Daca n este mai mare ca 1 si semnul este "+", tipareste caracterele din linia curenta aflate dupa IC si (n-1) linii care urmeaza liniei curente. Daca n este mai mare ca 1 si semnul este "-", tipareste "n" linii precedente liniei curente si caracterele din linia curenta, pina la IC. Nu afecteaza pozitia IC-ului. Comanda poate fi intre rupta (in timpul executiei) prin tastarea oricarui caracter. +/-n(CR) - este echivalenta cu comanda +/-nLT, adica deplaseaza IC-ul peste "n" linii si tipareste continutul liniei curente. nX(CR) - transfera "n" linii incepind de la linia curenta spre sfirsitul buffer-ului, intr-un fisier temporar denumit X$$$$$$$.LIB, care este activ doar pe durata unui proces de editare. Utilizatorul poate transfera mai multe segmente de text din buffer in fisierul tem porar (X$$$$$$$.LIB), utilizind succesiv comanda "X". In urma unei comenzi "X", liniile transferate nu se sterg automat din buffer. Daca n=0 atunci comanda are ca efect stergerea continutului fisierului temporar (X$$$$$$$.LIB). .cp 7 +/-nP(CR) - muta IC in buffer, peste "n" pagini (spre sfirsitul buffer-ului daca este "+" si spre inceputul lui daca este "-") si tipareste pagina respectiva. O pagina are 23 de linii. '0P' tipareste 23 de linii fara sa mute IC-ul. .cp 15 2.2.3 Comenzi asupra sirurilor de caractere I(CR) linia 1(CR) linia 2(CR) . . . linia k(CR) (CTRL/Z) - introduce de la consola, in buffer, incepind din pozi tia curenta a IC, un text (alcatuit din mai multe caractere/linii). Fiecare linie se termina cu caracte rul (CR), in buffer inregistrindu-se automat perechea de caractere (CR)(LF). Inserarea se termina atunci cind se tasteaza caracterul (CTRL/Z). IC ramine pozi tionat in buffer dupa ultimul caracter introdus. In timpul inserarii textului se pot face corectii cu aju torul caracterelor de editare ale sistemului CP/M (ex:(RUBOUT), (CTRL/R), etc.). .cp 4 Itext(CTRL/Z) - este identica cu forma anterioara (text este o succe siune de caractere/linii). .cp 7 NOTA Lungimea oricarei linii (comanda sau text) nu trebuie sa depaseasca 128 de caractere. Daca acest lucru se intimpla, se forteaza sfirsit de linie dupa caracterul 128. Aceasta este singura regula care restringe lungimea unui sir de caractere din comenzile I F S N J. .. L ! ! ! ! ! ! ! ! ! ! ! R Itext(CR) - este identica cu forma anterioara, cu deosebirea ca dupa ultimul caracter din text se mai introduce auto mat perechea de caractere (CR)(LF). NOTA In acest caz sfirsitul unei linii se indica prin introducerea caracterului (CTRL/L). .cp 12 nFc1c2...ck(CR) sau nFc1c2...ck(CTRL/Z) - cauta in buffer, incepind din pozitia curenta a IC pina la sfirsitul buffer-ului, sirul de caractere identice cu "c1c2...ck". Cautarea se efectueaza de "n" ori si daca s-a gasit al "n"-lea sir identic cu "c1c2...ck", atunci IC-ul se pozitioneaza dupa caracterul "ck" din acest sir. In caz contrar, IC-ul nu se deplaseaza din pozitia initiala. Sirul "c1c2...ck" poate contine si caracterul (CTRL/L) care inlocuieste perechea (CR)(LF). .cp 9 nSc1c2...ck(CTRL/Z)d1d2...dm(CR) sau nSc1c2...ck(CTRL/Z)d1d2...dm(CTRL/Z) - cauta in buffer incepind din pozitia curenta a IC pina la sfirsitul buffer-ului siruri de caractere identice cu "c1c2...ck" si le substitue prin sirul "d1d2...dm". Operatia de substitutie are loc de "n" ori sau pina se termina buffer-ul. .cp 6 nNc1c2...ck(CR) sau nNc1c2...ck(CTRL/Z) - este similara cu comanda "F", cu sau deosebirea ca prin aceasta comanda se cauta a "n"-a aparitie a siru lui "c1c2...ck" in tot fisierul sursa. Comanda se executa astfel: Se cauta in buffer-ul curent, incepind din pozi tia curenta a IC-ului, a "n"-a aparitie a unui sir identic cu "c1c2...ck". Daca s-a gasit, atunci IC ramine pozitionat dupa caracterul "ck" din acest ultim sir. Daca nu s-a gasit, atunci se executa automat o comanda "#W" (se transfera tot continutul buffer- ului in fisierul temporar) si se citesc automat linii din fisierul sursa pina s-a umplut cel putin o jumatate din buffer sau pina s-a sfirsit fisie rul sursa. Procesul de cautare continua si asupra noului buffer. Daca s-a gasit a "n"-a aparitie a sirului cautat, indicatorul IC ramine pozitionat dupa caracterul "ck" din sir. In caz contrar, comanda continua in acelasi mod, pina cind tot fisierul sursa a fost in intregime transferat in fisierul temporar. .cp 14 Jc1c2...ck(CTRL/Z)d1d2...dm(CTRL/Z)e1e2...en(CR) sau Jc1c2...ck(CTRL/Z)d1d2...dm(CTRL/Z)e1e2...en(CTRL/Z) - aceasta comanda consta in cautarea sirului "c1c2...ck" incepind de la pozitia curenta a IC spre sfirsitul buffer-ului. Daca acest sir a fost gasit se insereaza, in acel punct, sirul "d1d2...dm" si se pozi tioneaza IC dupa caracterul "dm". Apoi se sterg toate caracterele care existau intre IC si sirul "e1e2...en" (exclusiv acest sir), IC raminind pozitionat dupa caracterul "dm". Daca sirul "e1e2...en" nu este gasit atunci nu se efectueaza nici o stergere. .cp 7 2.3 COMENZI de lucru cu BIBLIOTECI SURSA Aceste comenzi permit includerea unor biblioteci sursa in procesul de editare. Comanda este: (1) Rnume(CR) (2) R(CR) unde "nume" este numele unui fisier sursa pe disc care are exten sie "LIB". Comanda "R" are ca efect citirea fisierului specificat si inclu derea lui in buffer, incepind din pozitia curenta a IC. Forma (2) este folosita atunci cind fisierul care se citeste este fisierul X$$$$$$$.LIB creat cu ajutorul comenzii "X". De remarcat faptul ca prin comanda "R", fisierul cu extensie "LIB" poate fi citit de mai multe ori. .cp 8 2.4 COMENZI generale nMc1c2...ck(CR) - unde "c1c2...ck" este sir de comenzi ED. Permite execu tia de "n" ori a sirului de comenzi ED "c1c2...ck". Sirul "c1c2...ck" nu trebuie sa contina o alta comanda "M". .cp 5 Daca n=0 sau n=1 atunci sirul de comenzi se executa de un numar nelimitat de ori pina cind apare o conditie de eroare (de exemplu: atunci cind s-a atins sfirsitul buffer-ului intr-o comanda "F"). .cp 5 +/-V(CR) - permite ca ED sa numeroteze liniile din buffer (daca este +V sau V=optiune implicita) sau ca ED sa nu numeroteze liniile din buffer (daca este -V). .cp 14 0V(CR) - tipareste la consola mesajul: nr-1 / nr-2 unde: nr-1=numarul de octeti liberi din buffer (in zecimal). nr-2=numarul total de octeti ai buffer-ului (dimensiunea buffer-ului exprimata tot in zecimal). .cp 20 +/-U(CR) - transforma minusculele in majuscule (daca este U sau +U) sau nu face nici o transformare (daca este -U). Implicit, editorul considera ca fiind activa comanda -U. O comanda U ramine activa pina la o noua comanda -U. Daca este activa o comanda -U si se introduc cu litere mici comenzi de tipul: I, F, S, N sau J atunci sirurile de caractere implicate in aceste comenzi vor putea contine atit caractere minuscule cit si caractere majuscule (nefacindu-se nici o transformare asupra lor!). Daca insa, este -U si se introduc cu litere mari comenzi de tipul I, F, S, N, sau J, atunci, indi ferent de tipul caracterelor (minuscule sau majuscule) din sirurile implicate in aceste comenzi, editorul automat le va trata ca siruri de caractere scrise cu majuscule. Daca este activa o comanda U, atunci, indi ferent de caracterele cu care se introduc comenzile ED/sirurile de caractere din comenzile ED, editorul va transforma automat toate minusculele in majuscule. .pa 3. MESAJE DE EROARE ED In caz de eroare, ED tipareste mesajul: BREAK "x" AT @ unde: "x" - este un indicator de eroare @ - este comanda in care a aparut eroarea Indicatorul de eroare poate fi: ? comanda nerecunoscuta sau o comanda E, H, Q sau O nu este singura intr-o linie de comanda. > buffer-ul de memorie este plin (trebuie utilizata una din comenzile "D", "K", "N", "S" sau "W" pentru a-l goli) sau sirurile de caractere din una din comenzile "F", "N" sau "S" sint prea lungi. # ED nu poate gasi sirul specificat intr-o comanda F, S, sau N comanda a fost intrerupta prin introducerea unui caracter de la consola. O fisierul cu extensia "LIB", specificat intr-o comanda "R" nu este gasit. Daca la scrierea fisierului temporar se depaseste capacitatea discului apare mesajul: DISK OR DIRECTORY FULL si se reinitializeaza sistemul. Utilizatorul trebuie sa se asigure inainte de a incepe editarea ca exista spatiu suficient pe discul destinatie. Daca se detecteaza o eroare "CRC" intr-un fisier, apare mesajul: Bdos Err on d: Bad Sector unde "d" este numele unitatii de disc pe care a aparut eroarea. NOTA "CRC" reprezinta o serie de informatii de "control ciclic redundant", care insotesc fiecare inregistrare dintr-un fisier si care sint puse de catre sistemul CP/M in momentul scrierii unui fisier. Aceste informatii sint folosite in operatiile de citire a fisieru lui, pentru a verifica daca datele au fost preluate corect. .. L ! ! ! ! ! ! ! ! ! ! ! R .cp 4 La aparitia unei astfel de erori, utilizatorul poate sa ignore eroarea (tastind la consola orice caracter diferit de (CTRL/C)), sau sa reincarce sistemul CP/M (tastind (CTRL/C)) si sa reia procesul de editare pornind de la fisierul cu extensia "BAK" (daca acesta exista). .cp 8 NOTA Ignorarea erorii trebuie sa fie urmata de o vizualizare a buffer-ului pentru a se verifi ca daca datele citite au fost corect intro duse in buffer. Reincarcarea sistemului CP/M trebuie urmata de o secventa de comenzi CP/M de tipul: TYPE X.BAK(CR) unde "X" era numele fisierului care se edita in momentul apari tiei erorii, pentru a verifica daca fisierul "BAK" contine inte gral versiunea anterioara a fisierului care se edita. ERA X.Y(CR) pentru a sterge fisierul initial (care putea fi afectat de aban donarea procesului de editare). REN X.Y=X.BAK(CR) pentru a restaura fisierul initial. ED X.Y(CR) pentru a relua editarea pornind de la versiunea anterioara. .pa 4. CARACTERE DE CONTROL DISPONIBILE IN ED caracterul de control functia realizata (CTRL/C) reincarcarea sistemului CP/M (CTRL/E) introduce un sfirsit fizic de linie la consola (in buffer nu se introduce nimic) (CTRL/H) sterge ultimul caracter introdus (pentru CRT) (CTRL/I) caractere de tabulare (coloanele 1, 9, 17,...) (CTRL/L) caracter ce inlocuieste perechea (CR)(LF) in cadrul sirurilor ce apar in comenzi de cautare/substi tutie siruri. (CTRL/M) echivalent cu (CR) (CTRL/R) fiseaza la consola continutul curent al buffer-ului consolei (CTRL/U) sterge linia introdusa de la consola (pentru TTY) (CTRL/X) sterge linia introdusa de la consola (pentru CRT) (CTRL/Z) terminator de sir de caractere (RUBOUT) (DEL) sterge ultimul caracter introdus (pentru TTY) .pa 5. COMENZI DISPONIBILE IN ED comanda functia realizata nA introduce in buffer linii din fi sierul sursa +/-B inceput/sfirsit de buffer +/-nC muta IC peste "n" caractere E sfirsit proces de editare si inchi dere fisiere (sfirsit normal al unei operatii de editare) nF cauta sir H sfirsit proces de editare, inchi dere si redeschidere fisiere I inserare text J plaseaza siruri prin juxtapunere +/-nK sterge linii +/-nL muta IC peste "n" linii nM comenzi repetitive nN cauta un sir parcurgind automat tot fisierul sursa O revine la fisierul sursa original +/-nP muta IC peste "n" pagini si tipa reste pagina respectiva Q abandoneaza procesul de editare fara a afecta fisierele R citeste date dintr-o biblioteca sursa nS substitutie sir +/-nT tipareste "n" linii nW scrie linii din buffer in fisierul temporar +/-U transforma minusculele in majuscule .cp 2 +/-n muta IC peste "n" linii si tipares te (+/-nLT) .cp 2 nZ introduce o "intirziere" de aproxi mativ "n" secunde.