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;