Top 10k strings from cpmint0.doc
in <root> / doc / technical / specifications / CPMDOC.zip /
Back to the directory listing
41 | | 38 Manual de interfata CP/M 28 23 -------------------------------------------------------- 12 | Intrari : | 8 5 | | 4 |--------------------------------------------| 3 | Iesiri : | 3 | | 3 | | 3 | | 2 sfirsitul unei linii. 2 dreapta cu blancuri. 2 cat prin registrul "E". 2 Times New Roman 2 BOOT EQU O 2 ----------------------------------------------------------- 2 ------------------------------------------------------- 2 - octetul 00 1 | numar utilizator curent | numar disc instalat | 1 | RUTINA 9 : Tiparire sir de caractere la consola | 1 | RUTINA 8 : Modificare IOBYTE | 1 | RUTINA 7 : Citire IOBYTE | 1 | RUTINA 6 : Citire/Scriere directa la consola | 1 | RUTINA 5 : Scriere caracter la imprimanta logica | 1 | RUTINA 3 : Citire caracter de la cititor logic | 1 | RUTINA 2 : Scriere caracter la consola | 1 | RUTINA 14 : Selectare disk | 1 | RUTINA 13 : Initializare stare sistem discuri | 1 | RUTINA 12 : Citire versiune sistem | 1 | RUTINA 11 : Citire stare consola | 1 | RUTINA 10 : Citire buffer consola | 1 | RUTINA 1 : Citire caracter de la consola | 1 | RUTINA 0 : Reinitializarea sistem CP/M | 1 | RUTINA 4 : Scriere caracter la performator logic | 1 | Intrari : registrul C : 05H | 1 | Intrari : | 1 | Intrari : registrul C : 04H | 1 | Iesiri : registrul A : valoare curenta IOBYTE| 1 | Iesiri : registrul A : caracter ASCII | 1 | Iesiri : registrul A : stare consola | 1 | F D O S (BDOS + BIOS) | 1 | parametri sistem | 1 | registrul A : caracter ASCII sau OOH| 1 | registrul E : numar unitate selectata| 1 | registrul E : caracter ASCII | 1 | registrul E : valoare pentru IOBYTE | 1 | registrul E : 0FFH pentru intrare | 1 | registrul C : OEH | 1 | registrul C : ODH | 1 | registrul C : 08H | 1 | registrul C : 07H | 1 | registrul C : 03H | 1 | registrul C : O1H | 1 | registrul C : 09H | 1 | registrul C : 06H | 1 | registrul C : OOH | 1 | registrul A : caracter ASCII | 1 | registrul E : caracter ASCII | 1 | registrul C : 02H | 1 | registrele D&E : adresa sir | 1 | registrul E : caracter ASCII | 1 | registrul C : OCH | 1 | registrul C : OBH | 1 | registrul C : OAH | 1 | registrele H&L : numar de versiune | 1 | registrele D&E : adresa buffer | 1 | Console Output) | 1 | (select Disk) | 1 | (Set I/O Byte) | 1 | (Reset Disk System) | 1 | (Reader Input) | 1 | (Print String) | 1 | (List Output) | 1 | (Get I/0 Byte) | 1 | (Direct Console I/0) | 1 | T P A | 1 | C C P | 1 | (System Reset) | 1 | (Read Console Buffer) | 1 | (Punch Output) | 1 | (Get Version Number) | 1 | (Get Console Status) | 1 | (Console Input) | 1 | sau caracter ASCII | 1 | pentru iesire | 1 | | 1 zona de memorie inainte de utilizarea lui. 1 zona TPA, iar blocul de control de la adresa 005CH va fi initia- 1 zona TPA si care, implicit, se incarca in memorie incepind de la 1 zona pentru fisierele de date. Fiecare fisier are asociat un 1 zeaza citirea (fara ecou) a unui caracter de la consola. Regis 1 zator in primul octet din buffer. Rutina aduce in bufferul a 1 versiunea 2.2). Intrucit in versiunea 1.4 de CP/M nu erau 1 verificare pentru caracterul CTRL/S (stop defilare). 1 valorile: OOH pentru unitatea "A", 01H pentru unitatea "B",...OFH 1 valori intre 1 si 255); acest cimp este initializat de 1 valoarea OOH. 1 valoarea OFFH. In caz contrar, in registrul "A" se va afla 1 utilizator. Ele reprezinta un reset neinitializat din bufferul 1 utilizator de aplicatii. 1 utilizata ca buffer in operatiile de citire/scriere se 1 urmatoarele extensii standard: 1 urmatoarea pozitie de tabulare. La fel ca in rutina 2, se face 1 urile corespunzatoare fisierelor de pe un disc se gasesc inregis- 1 unor caractere de la consola, pina la intilnirea unui caracter 1 unde "comanda" este numele unei comenzi CP/M rezidente (ex.: ERA, 1 un FCB propriu, care sa furnizeze, pentru fiecare operatie cu 1 ultimul caracter din buffer. Stergere caracter 1 ultima initializare/reinitializare a sistemului CP/M sau de 1 tul 10 este 1; altfel, acest bit este egal cu 0. 1 trul "A". Toate caracterele tiparibile si in plus (CR) (LF) si 1 trul "A" va contine codul caracterului ASCII introdus sau 00H, 1 trimise si la imprimanta logica. Un nou CTRL/P 1 trebuie terminat dupa ce se tiparesc injuraturile de rigoare. 1 trebuie apelata in toate programele care face acces aleator. Daca 1 trate in "directorul" discului respectiv si sint aduse in memoria 1 tratabile cu asamblorul M80 1 tratabile cu asamblorul ASM sau MAC 1 trata pe disc (vezi rutina CLOSE). 1 trarii de scris/citit (are valori intre 0000H si FFFFH 1 tranzitorii in rutinele sistemului CP/M (in 1 tranzitorii (majoritatea acestora rezervindu-si o stiva proprie 1 totusi este util de cunoscut faptul ca este suficient de mare 1 tor inainte de deschiderea fisierului. 1 toarele patru parti: 1 toare la cel de-al doilea fisier vor fi sterse (suprascrise) de 1 tiva in octetul 34. 1 tipul sistemului CP/M. 1 tie I/E modificind astfel asignarea dispozitivelor logice 1 terminale cu tub catodic. 1 ter citit din linia de editare (i.e. caracterul "cn") si pina la 1 teaza caracterele TAB (CTRL/I) intilnite, mutind cursorul in 1 tasteaza un caracter la consola. 1 tabulare. Restul de caractere netiparibile nu sint transmise in 1 tabile sub CP/M, programe ce utilizeaza facilitatile de I/E si de 1 suficient se recomanda folosirea acestei zone. 1 sterge atributul R/0), asigneaza ca disc selectat unitatea "A" si 1 stare sistem discuri" (rutina 13). Daca in timp ce o unitate este 1 standardele PL/M de comunicare parametri. 1 stabileste ca "adresa DMA" adresa 0080H. Rutina poate fi folosita 1 sistemului CP/M sau pina la o noua operatie de "initializare 1 si 34 reprezinta o valoare pe 16 biti cu partea cea mai 1 si (LF)). Valoare intoarsa de sistem. 1 si revenind in CCP printr-o instructiune de tip "JMP BOOT"), 1 sfirsitul de fisier fiind detectat de rutina CP/M de citire. 1 selectat") sau 1 se transmite decit atunci cind se tasteaza (CR). 1 se reinitializa sistemul CP/M (prin CTRL/C). 1 se impart in doua categorii: 1 se foloseste in accesul secvential la fisiere; in mod 1 se termina atunci cind s-a intilnit caracterul "$". Rutina tra 1 se pozitioneaza pe inceputul liniei dar linia nu 1 se afiseaza la consola prin rutinele 2 si 9 sint 1 sa revina in CCP, atunci programul trebuie sa nu suprascrie zona 1 rutina realizeaza scrierea la consola a caracterului respectiv. 1 rutina CP/M de citire. Caracterele CTRL/Z existente intr-un 1 rul/specificatorii de fisier prezenti in linia de comanda (dupa 1 rul utilizatorului curent si numarul discu 1 rezidente pe acest suport. 1 respectiv: 1 respectiv (H)=OOH iar (L)= numarul de versiune (ex: 22H pentru 1 reprezinta un parametru optional folosit numai in 1 reprezinta imaginea-memorie a unui program care se executa in 1 registrul "C", a numarului rutinei). 1 registrul "A". Pentru semnificatia acestui octet vezi Anexa 1 din 1 realizeaza asupra unei inregistrari de 128 de octeti 1 putin semnificativa in octetul 33 si cea mai semnifica 1 putin de 8 caractere, atunci el trebuie completat la 1 punzatoare de pe ecran; alunare linie pentru 1 punct de vedere logic inregistrarile intr-un fisier sint contigue 1 programului, controlul poate reveni in CCP (printr-o instructiune 1 programului tranzitoriu incepe avind SP-ul pozitionat pe o stiva 1 prin introducerea, dupa fiecare prompter CP/M (">") a unei linii 1 primitivele de acces la disc, 1 prezenta informatiile necesare pentru scrierea de programe execu 1 preluarea caracterului de la RDR:. 1 pozitia corespunzatoare ultimului caracter posibil in buffer, vor 1 perifericele, 1 pera componenta CCP). 1 pentru unul din FCB-urile necesare. Aceasta zona are avantajul ca 1 pentru unitatea "P". In urma executiei rutinei, unitatea specifi- 1 pentru terminale cu hirtie. 1 pentru a realiza apeluri de rutine CP/M. Acest lucru este posibil 1 pentru "parametri sistem". Aceste FCB-uri sint constituite in 1 pectiv in BDOS (JMP FBASE). 1 parametru, ea fiind initializata de catre sistemul CP/M sau 1 optionale, dependente de tipul rutinei. 1 operatii ulterioare asupra fisierului "specificator-fisier1". Al 1 operatii de tip OPEN, MAKE, SEARCH. 1 operatie prin care aceasta zona este suprascrisa (initial "adresa 1 oferi o interfata flexibila intre utilizator si informatiile 1 ocupa spatiu in "directorul" discului respectiv. O "extensie 1 octetul 16 = 00H (cod disc selectat, care in acest caz 1 octetul 01 = ' ' 1 octetul 00 = OEH (numarul de caractere utile din linia 1 octetul 00 = 02H (cod unitate "B") 1 octetii 28-31 = 00H 1 octetii 25-27 = 'ZAP' 1 octetii 17-24 = 'Y 1 octetii 12-15 = 00H 1 octetii 10-14 = 'Y.ZAP' 1 octetii 09-11 = 'ZOT' 1 octetii 02-08 = 'B:X.ZOT' 1 octetii 01-08 = 'X 1 octeti pentru acces direct). Adresa FCB-ului se transmite in 1 oceti, aceste valori se gasesc si in registrele 1 obicei acest octet este sters cu zero de utilizator. 1 numit FDOS, care are un punct de intrare unic. Componenta CCP 1 numeste "adresa DMA". Acesta adresa nu se transmite ca 1 numele unui program-utilizator. Daca "comanda" este numele unei 1 numele si extensia fisierelor cu blancuri. Primul FCB este 1 numele comenzii). Automat, CCP completeaza (daca este cazul) 1 numele fisierului exprimat in ASCII (caractere 1 nume. Fiecare unitate de disc este, din punct de vedere logic, 1 numarul real de caractere introduse in linie (fara (CR) 1 numarul maxim de caractere din buffer, atunci dupa ultimul carac- 1 numarul inregistrarii din "extensia logica" curenta; 1 numarul maxim de caractere din bufferul consolei (cu 1 numarul de versiune intors este mai mic decit 20H, programul 1 numarul de versiune al sistemului CP/M sub care se lucreaza, 1 normal acest octet este sters cu zero de catre utiliza 1 nizarea memoriei) si punctele de intrare in sistem. Se vor 1 nea maxima 1 mului CP/M existenta in BIOS (JMP WBOOT). 1 memorie care nu este utilizata de FDOS si CCP) in care se executa 1 memorie a unui program tranzitoriu, componenta CCP ii preda 1 memoria pina la adresa FBASE - 1. 1 maximum 16 KB; dimensiunea blocului de alocare este stabilita la 1 majuscule. 1 majuscule, cu B7=0); daca numele fisierului are mai 1 lul printr-o instructiune de tip "CALL". La sfirsitul executiei 1 lui/fisierelor (vezi rutinele OPEN, MAKE). Copia din memorie a 1 lui instalat. 1 lucrurile la normal. 1 lucru cu fisiere pe disc .............................. 5 1 lucru cu discul oferite de sistem. 1 lucru cu fisiere pe disc trebuie respectate urmatoarele 1 logice" contorul de inregistrari poate fi reprezentat pe 8 biti. 1 logica" (16 KB) este formata din mai multe blocuri de alocare. 1 lizat astfel: 1 la ultima operatie de initializare stare sistem discuri 1 jos reprezinta un exemplu in acest sens, el realizind citirea 1 intrucit componenta FDOS comuta SP-ul pe o stiva locala, la 1 introdus in timpul executiei rutinei 10, readuce 1 introdus caracterul (CR) sau caracterul (LF) sau atunci cind s-a 1 introdus de la consola este interpretat drept stop defilare. 1 intrare in FDOS (existent la adresa BOOT + 0005H), a unui numar 1 intr-un proces de editare texte 1 interna inainte ca utilizatorul sa inceapa lucrul asupra fisieru 1 instalat; octetul de la aceasta adresa are forma: 1 initiala a programului. Programul in limbaj de asamblare de mai 1 indicat ca utilizatorul sa astepte prin program introducerea unui 1 in octetii 00 - 11 a specificatorului fisierului si prin umplerea 1 in mod dinamic, pe masura crearii lor. 1 in cadrul categoriei respective. Astfel, sistemul CP/M utilizeaza 1 in operatiile de intrare/iesire cu fisiere. CCP initializeaza 1 in momentul lansarii unui program in TPA "disc 1 implementate functiile de acces aleator la fisiere, rutina 12 1 identificator alcatuit din: 1 generarea sistemului CP/M. Pentru utilizarea rutinelor CP/M de 1 general prin registrele D&E. 1 gasesc pe discul selectat. 1 formatul impus de FDOS pentru accesul la fisiere (vezi cap. 1.4). 1 forma unui "bloc de control fisier" (File Control Block = 1 fisierului, iar la terminarea lucrului cu acesta ea este inregis- 1 fisierul informatii privind numele si alocarea acestuia. Orice 1 fisierul PROGNAME.COM de pe discul instalat va fi incarcat in 1 fisiere pe disc 1 fisier, atunci componenta CCP pregateste si unul sau doua "blo 1 fisier cu octet 00 din FCB diferit de zero). 1 fisier cod-obiect (de exemplu, in fisiere tip COM) sint ignorate, 1 fisier atunci zonele 005DH - 0067H si 006DH - 0077H vor contine 1 fiecare intrare intr-o rutina de sistem, neafectind astfel stiva 1 fiecare volum disc, o structura de fisiere identificate prin 1 fi folosita pentru a determina dimensiu 1 fata al consolei nu exista nici un caracter disponibil). Este 1 face prin transmiterea catre sistemul CP/M, prin punctul de 1 extensia (tipul) fisierului exprimat in ASCII 1 existente pe disc. TPA este o zona de memorie (i.e. zona de 1 exista 128 de inregistrari (128 * 128 B = 16 KB) numerotate de la 1 exista in buffer o serie de caractere fara semnificatie pentru 1 executa dupa cum va fi prezentat in continuare. 1 este un program distinct, care utilizeaza programul FDOS pentru a 1 este initializata de CCP inainte de lansarea programului. 1 este desemnata de catre sistem ca R/O (vezi si rutina 28). 1 este chiar discul instalat) 1 eroare - numeric - daca aceasta a esuat). 1 ele pot fi dispersate pe disc. Fisierelor li se aloca spatiu disc 1 egala cu BOOT + 0100H, iar adresele CBASE si FBASE depind de 1 egal cu 0. 1 ecou la consola. Rutina asteapta un timp nelimitat pina cind se 1 e. Exista rutine CP/M care nu au iesiri. 1 doilea FCB este construit in octetii 16 - 31 din primul FCB 1 doar adresa de revenire in CCP (7nivele sint libere). Desi 1 distincta, avind o zona rezervata pentru "director" si o alta 1 disponibile. 1 disc in memorie, incepind de la adresa TBASE si ii preda contro 1 disc (rutina 14)) sau 1 din octetul 09 este egal cu 1; astfel, acest bit este 1 desfasurare a operatiei (operatie desfasurata corect sau codul de 1 deschide fisierul corespunzator primului FCB (de la adresa 1 depune in registrul "A". Rutina steapta un timp nelimitat 1 depasit capacitatea bufferului consolei specificata de utili- 1 denumite "extensii logice". In cadrul fiecarei "extensii logice" 1 de disc ................................... 27 1 de comanda exceptind numele comenzii) 1 de cite 128 octeti fiecare, numerotate de la 0 la 65535. Desi din 1 de catre o rutina CP/M speciala (rutina 26). 1 de caractere .............................. 13 1 de CTRL/C. CTRL/C dupa CTRL/S reinitializeaza sistemul CP/M. 1 de tip "RET") sau in CP/M (printr-o instructiune "JMP BOOT"). 1 de rutina si a unei adrese pentru informatii specifice rutinei. 1 de pe ecran. Stergere pentru terminale cu tub 1 de comanda. Fiecare linie de comanda are una din urmatoarele 1 daca nu s-a introdus nici un caracter. 1 d. Exista rutine CP/M care nu necesita parametrii 1 d. Adresa 0004H este rezervata pentru a stoca numa 1 curi de control fisier" (FCB), in zona de memorie rezervata 1 curente. 1 curente (ia volori intre 00H si 7FH); acest cimp este 1 curent al unei linii in care s-au efectuat 1 cu posibilitate de depasire in octetul 35). Octetii 33 1 cu o capacitate de 8 nivele (16 octeti), in care exista inscrisa 1 cu dispozitivele periferice, precum si 1 cu 00H a restului de octeti (12 - 32/35). Informatiile din FCB- 1 cu transferarea continutului ei intr-o zona de memorie a carei 1 corectii, caracterele de editare ale sistemului CP/M: 1 corectii prin RUBOUT (DEL). 1 conventii: 1 contor de inregistrari in cadrul "extensiei logice" 1 continutului liniei de comanda exceptind numele comenzii. 1 continutul curent al buferului de intrare. Prin 1 construit la adresa 005CH si poate fi folosit ca atare pentru 1 consola. Daca in registrul de interfata al consolei exista un 1 consola (ea intoarce imediat (A)=00H, daca in registrul de inter- 1 componenta CCP construieste (dupa cum s-a aratat in sectiunea 1 completat de catre sistem. 1 comenzile tranzitorii CP/M si programele-utilizator de aplicatii. 1 comenzi CP/M, atunci aceasta comanda este executata imediat. In 1 comanda.COM 1 comanda) sae pe discul instalat, un fisier cu numele: 1 comanda specificator-fisier1(CR) 1 comanda specificator-fisier1 specificator-fisier2(CR) 1 codul unitatii de disc pe care se gaseste fisierul, 1 caz contrar, CCP cauta pe discul specificat (indicat inainte de 1 catre utilizator inaintea apelului rutinei 10. 1 catre sistem (de catre rutina OPEN). 1 catre rutinele FDOS intr-un format standard, si anume sub 1 cata in registrul "E" este trecuta in starea "activ" (disc activ) 1 carui adresa este data in registrele "D&E" urmatorul continut: 1 care realizeaza intrari/iesiri cu consola (rutinele 1, 2, 9, 10 1 care incarca "directorul" volumului respectiv; unitatea ramine in 1 care pot fi apelate in cadrul programelor tranzitorii. Rutinele 1 care fiecare "linie" din fisier se termina prin secventa de 1 caracterul CTRL/I (TAB) muta cursorul in urmatoarea pozitie de 1 caracterele din linia de editare (c1,c2,c3,...,cn) 1 caractere, atunci acest cimp trebuie completat la 1 caractere (CR) (LF) (ODH OAH). Astfel, o inregistrare CP/M (de 1 caracter de la consola. 1 caracter disponibil, atunci rutina intoarce in registrul "A" 1 c. Exista rutine CP/M care folosesc doar registrul 1 c. Adresa 0003H este rezervata pentru octetul IOBYTE 1 buffer, inainte de a executa orice operatie asupra unui fisier, 1 b. Conventiile de apel al rutinelor CP/M respecta 1 b. Adresa prezenta in locatiile 0006H - 0007H poate 1 atunci cind o aplicatie necesita schimbari de volume disc fara a 1 apelului lor. 1 anumit fisier, in timp ce numele identifica in mod unic fisierul 1 anulare linie pentru terminale cu hirtie. 1 alocat unui fisier. Un bloc de alocare are minimum 1 KB si 1 adresa de inceput este specificata in registrele "D&E". Tiparirea 1 adresa de inceput este data in registrele "D&E". 1 adresa 0080H va avea urmatorul continut: 1 adresa TBASE. Componenta CCP incarca fisierul tip ".COM" de pe 1 activata prin: 1 acestuia controlul printr-o instructiune de tip "CALL". Executia 1 acestui buffer consola). 1 acest indicator este activ, toate caracterele care 1 acest octet este sters cu zero atunci cind se executa 1 acest caracter se poate vizualiza continutul 1 aceasta functie are acelasi efect ca "JMP BOOT". 1 aceasta stiva nu este de obicei folosita de catre programele 1 aceasta stare pina la o noua initializare sau reinitializare a 1 accesul direct la fisiere. El indica numarul inregis 1 acces la un fisier implica initializarea de catre utilizator 1 a. Pentru rutinele care au ca iesiri valori pe doi 1 a memoriei disponibile (presupunind ca se reaco 1 [ MVI E, parametru-specific-rutinei ] 1 [ LXI D, parametrii-specifici-rutinei ] 1 Zona 0080H - 00FFH (128 octeti) poate fi folosita drept "buffer" 1 ZapfDingbats 1 ZapfChancery 1 Utilizatorul comunica cu componenta CCP (deci cu sistemul CP/M) 1 Un bloc de alocare reprezinta spatiul disc minim ce poate fi 1 Toate FCB-urile care au primul octet egal cu 1 TPA - zona pentru programe tranzitorii. 1 TBASE: | | 1 Structura standard a unui FCB este urmatoarea: 1 Sistemul CP/M pune la dispozitia utilizatorilor o serie de rutine 1 Sistemul CP/M este alcatuit din punct de vedere logic din urma 1 Sfirsitul unui fisier ASCII este indicat prin caracterul CTRL/Z 1 S-a aratat in sectiunea 1.2 ca dupa incarcarea de pe disc in 1 Rutinele de I/E pentru periferice simple sint: 1 Rutinele de I/E pentru lucrul cu fisiere pe disc sint: 1 Rutinele FDOS pot avea ca iesiri valori pe un octet (in registrul 1 Rutina nu asteapta nelimitat introducerea unui caracter de la 1 Rutina 6 nu trebuie sa fie folosita impreuna cu alte rutine CP/M 1 Rezulta ca secventa standard necesara pentru apelul unor rutine 1 Reluarea defilarii dupa CTRL/S se face cu orice caracter diferit 1 RUTINA 40 - Scriere directa cu umplere cu zero ........ 34 1 RUTINA 37 - Dezactivare discuri ....................... 34 1 RUTINA 36 - Determinare numar inregistrare ............ 33 1 RUTINA 35 - Determinare lungime fisier ................ 32 1 RUTINA 34 - Scriere directa ........................... 31 1 RUTINA 33 - Citire directa ............................ 30 1 RUTINA 32 - Citire/Modificare numar utilizator ........ 29 1 RUTINA 31 - Citire adresa "bloc de parametri disc" .... 29 1 RUTINA 30 - Modificare atribute fisier ................ 28 1 RUTINA 29 - Citire vector de unitati R/O .............. 28 1 RUTINA 28 - Setare atribut R/O pentru o unitate 1 RUTINA 27 - Citire adresa de alocare .................. 27 1 RUTINA 26 - Modificare "adresa DMA" ................... 26 1 RUTINA 25 - Citire numar disc selectat ................ 26 1 RUTINA 24 - Citire vector de unitati-disc active ...... 26 1 RUTINA 23 - Schimbare nume fisier ..................... 25 1 RUTINA 22 - Creare fisier ............................. 24 1 RUTINA 21 - Scriere secventiala ....................... 23 1 RUTINA 20 - Citire secventiala ........................ 22 1 RUTINA 19 - Stergere fisier ........................... 21 1 RUTINA 18 - Cauta in "director" urmatoarea intrare .... 21 1 RUTINA 17 - Cauta in "director" prima intrare ......... 20 1 RUTINA 16 - Inchidere fisier .......................... 19 1 RUTINA 15 - Deschidere fisier ......................... 18 1 RUTINA 14 - Selectare disc ............................ 17 1 RUTINA 13 - Initializare stare sistem discuri ......... 16 1 RUTINA 12 - Citire versiune sistem .................... 16 1 RUTINA 11 - Citire stare consola ...................... 15 1 RUTINA 10 - Citire buffer consola ..................... 14 1 RUTINA 9 - Tiparire la consola a unui sir 1 RUTINA 8 - Modificare octet IOBYTE ................... 13 1 RUTINA 7 - Citire octet IOBYTE ....................... 12 1 RUTINA 6 - Citire/Scriere directa la consola ......... 12 1 RUTINA 5 - Scriere caracter la dispozitivul 1 RUTINA 4 - Scriere caracter la dispozitivul 1 RUTINA 3 - Citire caracter de la dispozitivul 1 RUTINA 2 - Scriere caracter la consola ............... 10 1 RUTINA 1 - Citire caracter de la consola ............. 10 1 RUTINA 0 - Reinitializare sistem CP/M ................ 10 1 RUEOUT/DEL - sterge din bufferul de intrare si reda in ecou 1 RET ;revenire in CCP 1 Programele tranzitorii sint comenzi tranzitorii CP/M si programe- 1 Programele tranzitorii pot folosi: 1 Programele tranzitorii pot folosi zona 005CH - 007FH (36 octeti) 1 Programatorul trebuie sa salveze continutul celui de-al doilea 1 Pentru lucrul cu discul flexibil sistemul CP/M implementeaza, pe 1 PROGNAME B:X.ZOT Y.ZAP(CR) 1 Orice program tranzitoriu se incarca de pe disc in zona TPA si se 1 Orice fisier CP/M este o secventa de maximum 65536 inregistrari, 1 Organizarea memoriei intr-un sistem standard CP/M este: 1 ORG 100H ;adresa de baza pentru TPA 1 OOH se refera implicit la fisiere care se 1 OBSERVATII: a. Adresa 0005H este PUNCT DE INTRARE din programe 1 OBSERVATII: 1 OBSERVATIE: Liniile cuprinse intre [] reprezinta linii 1 O linie editata la consola se considera terminata atunci cind s-a 1 Numarul curent al "extensiei logice" a fisierului; de 1 NewCenturySchlbk 1 Manualul de prezentare CP/M. 1 MVI C,CONIN ;pregatire apel rutina CONIN 1 MVI C, numar-rutina 1 MS LineDraw 1 JNZ NEXTC ;reluare prelucrare 1 Informatiile privind fiecare "extensie logica" a unui fisier 1 In timpul introducerii de la consola a liniei sint active, pentru 1 In ANEXA 1 este prezentata lista completa a rutinelor CP/M 1 Helvetica-Condensed 1 Fisierele sursa sint tratate ca o secventa de caractere ASCII, in 1 Fiecare fisier este, intern, impartit in segmente de cite 16 KB, 1 Fiecare fisier care trebuie exploatat prin CP/M trebuie sa aiba 1 FCB-ului este actualizata pe masura ce au loc operatii asupra 1 FCB). Dimensiunea FCB depinde de tipul accesului la fisier 1 FCB (cei 16 octeti incepind de la adresa 006CH) inainte de a 1 FBASE: | | 1 Extensiile definesc categoria generica din care face parte un 1 Este sarcina utilizatorului de a extrage informatiile din acest 1 Efect: rutina desemneaza unitatea specificata in registrul "E" ca 1 Efect: daca registrul "E" este egal cu OFFH, atunci rutina reali 1 Efect: transmite la dispozitivul PUN: curent caracterul specifi 1 Efect: transmite la dispozitivul LST: curent caracterul specifi- 1 Efect: transmite la consola caracterul specificat prin registrul 1 Efect: tipareste la consola sirul de caractere ASCII a carui 1 Efect: scrie continutul registrului "E" in octetul de configura- 1 Efect: rutina permite citirea unei linii introduse de la consola 1 Efect: rutina verifica daca s-a introdus un caracter de la 1 Efect: rutina intoarce in registrele "H&L" o valoare egala cu 1 Efect: rutina dezactiveaza logic toate unitatile de disc (le 1 Efect: preia un caracter de la dispozitivul RDR: curent si-l 1 Efect: preia un caracter de la consola si-l transmite in regis- 1 Efect: intoarece controlul din programul utilizator in CP/M; 1 Efect: citeste octetul de configuratie I/E si il plaseaza in 1 Dupa executia rutinei, FDOS intoarce o valoare ce indica modul de 1 Dupa receptionarea unei linii de comanda CCP pastreaza la adresa 1 Default Paragraph Font 1 De obicei adresa BOOT este egala cu 0000H, adresa TBASE este 1 Daca numarul de caractere din linia de editare este mai mic decit 1 Daca fisierul este invizibil (SYS) atunci B7 din octe 1 Daca de exemplu, utilizatorul introduce comanda: 1 Daca un astfel de fisier este gasit, atunci se presupune ca el 1 Daca se doreste ca la sfirsitul executiei programului controlul 1 Daca registrul "E" contine codul unui caracter ASCII, atunci 1 Daca intr-o linie de comanda CP/M nu apare nici un specificator- 1 Daca in linia de comanda exista unul sau doi specificatori de 1 Daca fisierul este protejat la scriere (R/0) atunci B7 1 DMA" este egala cu 0080H, adica tocmai adresa de inceput a 1 DIR, TYPE, etc.) sau numele unei comenzi CP/M tranzitorii sau 1 Courier New 1 Componentele BIOS si BDOS sint grupate intr-un singur program 1 Componenta CCP asigura automat transformarea minusculelor in 1 CTRL/X - sterge bufferul de intrare si caracterele cores- 1 CTRL/U - sterge bufferul de intrare, afiseaza caracterul 1 CTRL/R - tipareste la consola pe linia imediat urmatoare 1 CTRL/P - inverseaza starea indicatorului "hard copy". Daca 1 CTRL/M - este echivalent unui caracter (CR) si reprezinta 1 CTRL/J - este echivalent unui caracter (LF) si reprezinta 1 CTRL/H - sterge ultimul caracter din bufferul de intrare si 1 CTRL/E - forteaza sfirsitul fizic al unei linii; cursorul 1 CTRL/C - reincarcarea sistemului de operare. 1 CPI '*' ;test pentru sfirsit 1 CP/M este: 1 CONIN EQU 1 ;rutina "Console Input" 1 CCP - procesorul de comenzi-consola, 1 CBASE: | | 1 CBASE - FBASE. In caz contrar, programul poae sa foloseasca 1 CALL BDOS ;citire caracter de la consola 1 CALL BDOS ; apel rutina prin 1 C U P R I N S 1 BTranslated by WordPort from WordStar 3.x, 4.0 document cpmint0.txt 1 BOOT: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | | 1 BIOS - sistemul de I/E de baza, care ofera interfata cu 1 BDOS - sistemul de exploatare a discurilor, care ofera 1 BDOS EQU BOOT+5 ;punct de intrare standard 1 BDOS EQU BOOT+5 1 AvantGarde 1 Atunci cind o comanda (program) se lanseaza in executie prin: 1 Astfel, pentru exemplul considerat anterior, bufferul de la 1 Adresele 0000H -: 0007 sint rezervate pentru: 1 Acest manual descrie organizarea sistemului CP/M (inclusiv orga 1 Accesul la rutinele FDOS se realizeaza prin transmiterea in: 1 Accesul din programe tranzitorii la sistemul de I/E al CP/M se 1 ASCII diferite de spatiu). 1 A N E X A 1 ............................................ 35 1 ;in rutinele CP/M 1 ;in registrul "A" 1 ;de prelucrare 1 ;cu preluarea caracterului 1 ; punctul de intrare in FDOS 1 128 de octeti) poate contine mai multe linii de text sursa. 1 10H - pentru unitatea "P" 1 1.5 Prezentarea rutinelor CP/M 1 1.5 Prezentarea rutinelor CP/M ............................ 10 1 1.4 Particularitati in utilizarea rutinelor CP/M de 1 1.4 Particularitati in utilizarea rutinelor CP/M de lucru cu 1 1.3 Conventii pentru apelul functiilor de sistem CP/M ..... 3 1 1.3 CONVENTII PENTRU APELUL FUNCTIILOR DE SISTEM CP/M 1 1.2) primii 16 octeti din doua FCB-uri pornind de la specificato- 1 1.2 Executia programelor tranzitorii ...................... 2 1 1.2 EXECUTIA PROGRAMELOR TRANZITORII 1 1.1 Organizarea CP/M ...................................... 1 1 1.1 ORGANIZAREA CP/M 1 01H - pentru unitatea "A" 1 00H - pentru discul selectat 1 0080H un buffer pentru consola, in care exista o copie a 1 005CH), intrucit prin deschiderea acestuia informatiile referi 1 0005H - 0007H = salt la punctul de intrare in FDOS, res 1 0004H = numarul utilizatorului curent si al discu 1 0003H = octetul IOBYTE. 1 0000H - 0002H = salt la rutina de reinitializare a siste 1 0000 - 1111 0000 - 1111 1 0000 ---------------------------------------------- 1 0 la 127 (OOH - 7FH). Se observa ca in cadrul unei "extensii 1 ---------------------------------------------------------- 1 ---------------------------------------------------------- 1 -------------------------------------------------------- 1 ------------------------------------------------- 1 ---------------------------------------------- 1 - tiparire la consola a unui sir de caractere, 1 - subsistemul de lucru cu discul, pentru accesul la fisiere 1 - stergere fisier, 1 - se numeste "disc selectat" acea unitate de disc care a fost 1 - se numeste "disc activ" acea unitate de disc, care de la 1 - scriere secventiala sau directa a unui fisier, 1 - scriere caracter la dispozitivul tip "PUNCH", 1 - scriere caracter la dispozitivul tip "LIST", 1 - scriere caracter la consola, 1 - rutine de I/E pentru periferice simple; 1 - rutine de I/E pentru lucrul cu fisiere pe disc. 1 - registrul "C" a numarului rutinei si in 1 - prin rutina CP/M de selectare disc (rutina 14). 1 - perechea de registre "D&E" a unor parametri necesari 1 - orice operatie de citire/scriere date intr-un fisier se 1 - octetul 32 1 - octetul 15 1 - octetul 14 este rezervat pentru sistem 1 - octetul 13 este rezervat pentru sistem 1 - octetul 12 1 - octetul 01 1 - octetii 33-35 1 - octetii 16-31 sint rezervati pentru sistem. 1 - octetii 09-11 1 - octetii 02-n 1 - octetii 01-08 1 - numele (alcatuit din 1 - 8 caractere ASCII diferite de 1 - modificare nume fisier, 1 - modificare atribute fisier, 1 - initializare stare sistem discuri. 1 - initializare "adresa DMA", 1 - informatiile de identificare a oricarui fisier se transmit 1 - inchidere fisier, 1 - implicite (printr-o rutina de deschidere sau creare a unui 1 - facilitatile CP/M de I/E pentru a comunica cu consola si 1 - extensia (tipul) fisierului (alcatuita din 0 - 3 caractere 1 - explicite (prin CCP sau prin rutina CP/M de selectare 1 - deschidere fisier, 1 - creare fisier, 1 - codul pentru selectarea unitatii de disc (o litera A - P). 1 - citire/scriere directa la consola, 1 - citire/modificare octet IOBYTE, 1 - citire stare consola. 1 - citire secventiala sau directa a unui fisier, 1 - citire caracter de la dispozitivul tip "READER", 1 - citire caracter de la consola, 1 - citire buffer consola, 1 - cautare in "director", 1 - adresa de inceput a zonei de memorie (de 128 de octeti) 1 - actiunea componentei CCP (discul instalat prin CCP este 1 - REL pentru fisiere cod-obiect relocabil 1 - PRN pentru fisiere listing 1 - MAC pentru fisiere sursa in limbaj de asamblare 1 - INT pentru fisiere cod-obiect intermediar 1 - HEX pentru fisiere hexa 1 - FOR pentru fisiere sursa in limbaj FORTRAN 1 - COM pentru fisiere cod-obiect direct executabil 1 - COB pentru fisiere sursa in limbaj COBOL 1 - BAS pentru fisiere sursa in limbaj BASIC 1 - BAK pentru fisiere ce reprezinta versiuni anterioare 1 - ASM pentru fisiere sursa in limbaj de asamblare 1 - $$$ pentru fisiere temporare 1 (rutina 13), a facut obiectul unei selectii: 1 (programator) a FCB-ului corespunzator, respectiv prin inscrierea 1 (este de 33 de octeti pentru acces secvential si de 36 de 1 (configuratia de I/E curenta). 1 (caractere majuscule); daca extensia are mai putin de 3 1 (apelul lor presupune doar transmiterea, prin 1 (adica de la adresa 006CH) si trebuie sa fie mutat intr-o alta 1 (BS) (CTRL/H) sint transmise in ecou la consola. De asemenea 1 (A) (P) 1 (3) comanda specificator-fisier1 specificator-fisier2(CR) 1 (2) comanda specificator-fisier1(CR) 1 (1AH) sau prin "sfirsitul fizic" de fisier, detectat de catre 1 (1) comanda(CR) 1 "disc selectat". Numarul unitatii de disc se specifica prin 1 "adresa DMA" cu 0080H, deci daca un singur "buffer" este 1 "activa" se fac schimbari de volume disc, atunci automat unitatea 1 "Reader" curent ........................... 11 1 "Punch" curent ............................ 11 1 "List" curent ............................. 11 1 "E". Caracterele "TAB" (CRTL/I) sint expandate. Caracterul CTRL/S 1 "E" pentru transmiterea unor parametrii necesari 1 "A") sau pe doi octeti (in perechea de registre H&L). 1 "A" si "B" (i.e. (A) = L si (B) = H)> 1 "*" care determina intoarcerea controlului in CCP: 1 "#" pe linia curenta si trece la linie noua;