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;