.. L ! ! ! ! ! ! ! ! ! ! ! R .pl 72 .he Descrierea comenzilor CP/M tranzitorii .fo # .pn 13 .uj 1 4. DESCRIEREA COMENZILOR CP/M TRANZITORII Comenzile tranzitorii sint programe care se incarca de pe disc in zona TPA si apoi se executa. Structura generala a unei comenzi tranzitorii este: [dispozitiv:]nume-comanda[argumente](CR) unde: dispozitiv - numele unitatii de discuri de pe care se va incarca in zona TPA programul indicat prin nume-comanda. nume-comanda - este numele unui fisier disc care are extensie standard COM (aceasta extensie nu se specifica in nume-comanda). argumente - parametri cu continut si sintaxa depen dente de tipul comenzii. In continuare se vor prezenta o serie de comenzi tranzitorii ce reprezinta programe utilitare de baza din sistemul CP/M. .. L ! ! ! ! ! ! ! ! R NOTA Pentru simplificarea scrierii sintaxei pro prii fiecarei comenzi tranzitorii, in cele ce urmeaza se va omite intentionat numele dispozitivului (discului) pe care se gaseste comanda tranzitorie, presupunindu-se ca aceasta este rezidenta pe discul curent instalat. .. L ! ! ! ! ! ! ! ! ! ! ! R Trebuie subliniat faptul ca sistemul CP/M ofera si alte componen te (comenzi tranzitorii) descrierea acestora facind obiectul unor manuale separate. .pa .he Comenzi CP/M STAT 4.1 Comanda STAT STAT[argumente](CR) Comanda STAT - furnizeaza informatii statistice generale privind fisierele stocate pe un disc si configuratia curenta a sistemului de I/E; - permite modificarea atributelor unor fisiere/volume disc, precum si a configuratiei curente de I/E; - dispune de autodocumentare. .cp 7 Exista urmatoarele forme valide ale comenzii STAT: (1) STAT VAL:(CR) - afiseaza la consola sintaxa tuturor formelor VALide ale comenzii STAT (inclusiv toate asignarile de periferice acceptate). Exemplu: .uj 0 STAT VAL: Temp R/O Disk: d:=R/O Set Indicator: d:filename.typ $R/O $R/W $SYS $DIR Disk Status : DSK: d:DSK User Status : USR: Iobyte Assign: CON: = TTY: CRT: BAT: UC1: RDR: = TTY: PTR: UR1: UR2: PUN: = TTY: PTR: UP1: UP2: LST: = TTY: CRT: LPT: UL1: .uj 1 (2) STAT DEV:(CR) - afiseaza la consola configuratia de I/E curenta sub forma: "periferic-logic" is "periferic-fizic" unde: .cp 2 "periferic-logic" defineste numele unui echipament logic: .cp 2 CON: echipament tip consola (conversational) .cp 2 RDR: echipament tip "reader" (cu functii de intrare de pe suport extern). .cp 2 PUN: echipament tip "punch" (cu functii de iesire pe suport extern). .cp 2 LST: echipament tip "list" (cu functii de listare). .cp 3 "periferic-fizic" defineste numele echipamentului fizic asociat echipamentului logic respectiv. Se pot folosi urmatoarele denumiri de echipamente fizice: TTY: consola sistem; CRT: consola tip display; BAT: consola "batch" (functiile de intrare sint satisfacute de dispozitivul RDR: curent iar cele de iesire de dispozitivul LST: curent; UC1: consola utilizator (periferic nestandard); PTR: cititor de banda de hirtie; UR1: periferic de intrare 1 nestandard; UR2: periferic de intrare 2 nestandard; LPT: imprimanta; UL1: periferic de listare nestandard; PTP: perforator banda de hirtie; UP1: periferic de iesire nestandard; UP2: periferic de iesire nestandard. Exemplu: STAT DEV: CON: is TTY: RDR: is TTY: PUN: is PTP: LST: is CRT: .. L ! ! ! ! ! ! ! ! R .cp 12 NOTA .. L ! ! ! ! ! ! ! ! ! ! ! R Comanda STAT DEV: afiseaza la consola starea curenta a octetului IOBYTE (de la adresa 0003H). Configuratia binara asociata acestui octet este interpretata standard de catre sistemul CP/M conform schemei din ANEXA 1. Intrucit structura octetului IOBYTE este dependenta de versiunea de MONITOR informa tiile furnizate de comanda STAT trebuie adap tate la structura curenta a octetului IOBYTE, corespunzatoare microcalculatorului gazda. .cp 12 (3) STAT USR:(CR) - afiseaza la consola numarul utilizatorului curent (Active User) si numerele utilizatorilor care au fisiere pe discul instalat (Active Files). Exemplu: STAT USR: Active User : 0 Active Files: 0 (4) STAT [dispozitiv:]DSK:(CR) - afiseaza la consola caracteristicile tuturor volumelor disc CP/M prezente in toate unitatile de discuri operationale in momentul respectiv. Exemplu: .uj 0 STAT DSK: A: Drive Caracteristics 1944: 128 Byte Record Capacity 243: Kilobyte Drive Capacity 64: 32 Byte Directory Entries 64: Checked Directory Entries 128: Records/ Extent 8: Records/ Block 26: Sectors/ Track 2: Reserved Tracks B: Drive Caracteristics 1944: 128 Byte Record Capacity 243: Kilobyte Drive Capacity 64: 32 Byte Directory Entries 64: Checked Directory Entries 128: Records/ Extent 8: Records/ Block 26: Sectors/ Track 2: Reserved Tracks .uj 1 .cp 4 Informatiile listate au urmatoarea semnificatie: - un volum disc are 77 de piste cu 26 de sectoare pe pista (1 sector = 1 inregistrare = 128 B) deci 2002 sectoare; - exista 2 piste rezervate pentru sistemul CP/M; .cp 2 - unitatea de alocare pe disc ("blocul de alocare") are o capacitate de 8 inregistrari (8 * 128 B = 1024B = 1KB); .cp 3 - capacitatea utila a unui volum disc (utilizabila pentru "director" si fisierele de date) este de 1944 inregistrari (i.e. 243 KB = 243 blocuri de alocare); .cp 2 - dimensiunea unei "extensii logice" a unui fisier este de 128 inregistrari (128 * 128 B = 16 KB); - orice intrare in "director" are o capacitate de 32 B - "directorul" unui volum disc are maximum 64 de intrari (i. e. ocupa maximum 64 * 32 B = 16 inregistrari); Pentru informatii suplimentare privind organizarea discului CP/M, vezi "Manualul de interfata CP/M". Daca dispozitivul este precizat, se vor afisa doar informatii referitoare la discul din unitatea respectiva. Exemplu: .uj 0 STAT B:DSK: B: Drive Caracteristics 1944: 128 Byte Record Capacity 243: Kilobyte Drive Capacity 64: 32 Byte Directory Entries 64: Checked Directory Entries 128: Records/ Extent 8: Records/ Block 26: Sectors/ Track 2: Reserved Tracks (5) STAT specificator-fisier [$S](CR) .uj 1 - afiseaza la consola urmatoarele informatii privind fisierele care corespund specificatorului din comanda: Size numarul de ordine al ultimei inregistrari scrise in fisier (exprimat in zecimal); acest cimp apare listat numai daca in comanda STAT s-a specificat parametrul "$S"). Recs numarul de inregistrari (de cite 128 B fiecare) ocupate de fisier (exprimat in zeci mal); acest cimp insumeaza numarul de inre gistrari din cadrul fiecarei "extensii lo gice" a fisierului. Bytes numarul de Kocteti alocati fisierului; in trucit spatiul-disc minim ce poate fi alocat pentru un fisier este egal cu 1 bloc de alocare (1KB) acest cimp indica numarul de blocuri de alocare asociate fisierului. .cp 4 Ext numarul de "extensii logice" asociate fisie rului; reprezinta numarul de "intrari" in "director" rezervate pentru fisierul respectiv. .cp 7 Acc atributele fisierului, care pot fi: R/O - protejat la scriere R/W - neprotejat la scriere Daca fisierul are atributul SYS, numele fisierului este afisat intre paranteze. .CP 11 Exemplu: .uj 0 STAT *.* Recs Bytes Ext Acc 2 1k 2 R/W A:AAA.RAN 41 6k 1 R/O (A:STAT.COM) 111 14k 1 R/W A:WS.COM 196 25k 2 R/O A:WSMSGS.OVR 214 27k 2 R/O A:WSOVLY1.OVR Bytes Remaining On A: 168k .cp 11 STAT *.* $S Size Recs Bytes Ext Acc 130 2 1k 2 R/W A:AAA.RAN 41 41 6k 1 R/O (A:STAT.COM) 111 111 14k 1 R/W A:WS.COM 196 196 25k 2 R/O A:WSMSGS.OVR 214 214 27k 2 R/O A:WSOVLY1.OVR Bytes Remaining On A: 168k .uj 1 Pentru fisierele create secvential, valorile din cimpurile "Size" si "Recs" sint identice si reprezinta lungimea reala a fisieru lui. Pentru fisierele create in acces direct cimpul "Recs" indica lungimea reala a fisierului (numarul de inregistrari ocu pate de catre fisier), iar cimpul "Size" indica lungimea virtuala a fisierului (numarul ultimei inregistrari scrise in fisier). (6) STAT specificator-fisier $atribut(CR) - permite modificarea (setare/resetare) atributelor fisierelor care corespund specificatorului-fisier din comanda. Atributul poate fi: - R/O fisier protejat la scriere (read only). - R/W fisier care permite acces in scriere si citire (read/write). Acesta este atributul pe care il au ini tial toate fisierele. .cp 3 - SYS fisier invizibil (informatii privind acest fisier nu se pot obtine prin comanda DIR, ci numai prin coman da STAT). - DIR fisier vizibil (reversul atributului SYS). Fisie rele sint create implicit cu atributul DIR. .cp 5 Exemplu: .uj 0 STAT WS.COM $R/O A:WS.COM set to R/O .uj 1 .cp 7 (7) STAT dispozitiv:=R/O(CR) - are ca efect declararea temporara a discului din unita tea specificata ca disc de tip R/O (read only). Coman da este efectiva pina la o initializare sau o reincarcare a sistemului CP/M. Un disc declarat R/O permite doar operatii de citire. Exemplu: .uj 0 STAT B:=R/O (8) STAT [dispozitiv:](CR) .uj 1 - afiseaza la consola numarul de Kocteti disponibili pe discul din unitatea specificata. Daca dispozitivul nu este specificat, comanda analizeaza discurile prezente in toate unitatile operationale in acel moment, si afiseaza: - numarul unitatii - atributul asociat volumului (R/O sau R/W). - spatiul disponibil pe fiecare disc (in Kocteti). Exemple: .uj 0 STAT B: Bytes Remaining On B: 169k STAT A: R/W, Space: 160k B: R/W, Space: 169k (9) STAT pl1=pf1[,pl2=pf2,...](CR) .uj 1 - realizeaza asignarea unui periferic fizic unui perife ric logic. pli - reprezinta numele unui periferic logic (CON:, PUN:, RDR:, LST:). pfi - reprezinta numele unui periferic fizic (TTY:, LPT:, PTP:, etc.). Comanda are ca efect modificarea configuratiei de I/E curente, respectiv ea permite sa se asigneze unui periferic logic un anumit periferic fizic. Exemplu: STAT LST:=TTY: In utilizarea acestei comenzi trebuie tinut cont de diferentele existente intre "structura standard a octetului IOBYTE" utilizata de sistemul CP/M si "structura octetului IOBYTE specifica MONITORULUI existent in microcalculatorul gazda". .pa .he Comenzi CP/M LOAD 4.2 Comanda LOAD LOAD specificator-individual(CR) Comanda LOAD se aplica numai asupra unui fisier rezident pe disc de tip "HEXA" (program cod-masina in format hexa) care are extensie standard "HEX". Comanda LOAD citeste fisierul care corespunde specificatorului din comanda si produce, pe disc, un fisier imagine-memorie (program cod-obiect absolut, direct executabil) Intrucit comanda LOAD trateaza numai fisiere care se identifica prin: [dispozitiv:]nume-fisier.HEX este suficient ca specificatorul individual sa aiba forma: [dispozitiv:]nume-fisier Programul LOAD creeaza automat, pe disc, un fisier imagine- memorie identificabil prin: [dispozitiv:]nume-fisier.COM unde "dispozitiv" si "nume-fisier" sint identice cu specificato rul din comanda. Intrucit rezultatul actiunii programului LOAD este un program cod-masina direct executabil, acestui program i se asociaza extensia COM, el devenind astfel o comanda tranzitorie CP/M. Fisierul rezultat in urma comenzii LOAD poate fi incarcat in memorie si executat prin comanda: [dispozitiv:]nume-fisier(CR) sub controlul componentei CCP (dupa aparitia textului "dispozitiv>"). In general componenta CCP citeste numele X care urmeaza prompterului ">" si il compara cu numele comenzilor CP/M reziden te. Daca X nu corespunde unei comenzi rezidente, componenta CCP cauta in "directorul" discului specificat un fisier cu numele X.COM. Daca il gaseste, atunci incarca programul cod-masina prezent in acel fisier in zona TPA si il lanseaza in executie. Rezulta ca pentru a obtine un program cod-obiect absolut este suficient sa se aplice o singura data comanda LOAD asupra unui fisier hexa. .cp 5 Un fisier hexa este un fisier care: - contine blocuri (inregistrari) in format cod-masina hexaze cimal (rezultat, de exemplu, dintr-o executie a programului ASM). .cp 2 - are ca adresa de incarcare in memorie adresa 100H (adresa de inceput a zonei TPA). - are adrese de incarcare la nivel de bloc ordonate crescator Formatul general al unui fisier hexa este: :xxyyyyzzaaaa...aabb unde: : - marcajul de inceput de bloc (inregistrare) xx - lungimea blocului (in octeti). yyyy - adresa de incarcare in memorie a blocului (daca blocul este de date) sau adresa de lansare automata in executie a programului (daca blocul este bloc EOF). zz - tipul blocului (00H=bloc de date; 01H=bloc EOF). aa...a - continutul blocului bb - cifra de control la nivel de bloc Daca adresele de incarcare ale blocurilor nu sint strict succe sive (exista zone de memorie neutilizate) atunci comanda LOAD va umple automat zonele neocupate (neutilizate) cu zero, fisierul X.COM devenind astfel contiguu. Comanda LOAD trebuie utilizata numai pentru crearea de fisiere (comenzi tranzitorii) standard CP/M, care se incarca si se execu ta numai in zona TPA. Pentru programe care ocupa alte regiuni de memorie decit zona TPA se va folosi, pentru incarcarea lor, programul DDT. Exemplu: LOAD B:BETA - transforma fisierul BETA.HEX de pe discul "B" in pro gram direct executabil cu numele de BETA.COM (tot pe discul "B").