.. L ! ! ! ! ! ! ! ! ! ! ! R .pl 72 .he Manual de interfata CP/M .fo # .pn 32 .uj 1 -------------------------------------------------------- | | | RUTINA 35 : Determinare lungime fisier | | (Compute File Size) | | | | Intrari : | | registrul C : 23H | | registrele D&E : adresa FCB | | | | Iesiri : | | lungimea virtuala a fisierului plasata | | in octetii 33, 34 si 35 din FCB | -------------------------------------------------------- Efect: rutina necesita ca FCB-ul adresat prin registrele "D&E" sa aiba 36 de octeti si sa contina un specificator-individual de fisier. Rutina cauta in "director" informatii privind fisierul specificat in FCB si completeaza octetii 33, 34 si 35 cu o va loare egala cu numarul corespunzator primei inregistrari de pe disc care urmeaza dupa sfirsitul fizic al fisierului. Astfel, octetii 33, 34 si 35 reprezinta "lungimea fisierului", lungime care poate fi: - lungime reala a fisierului daca fisierul a fost creat secvential; - lungime virtuala a fisierului (daca fisierul a fost creat in acces direct si exista "gauri" in alocarea fisierului). Daca octetul 35 are valoare egala cu 01H rezulta ca fisierul contine numarul maxim de inregistrari posibile: 65536. Rutina poate fi folosita pentru a adauga inregistrari intr-un fisier. Prin apelul ei se determina numarul de ordine al primei inregistrari neocupate de dupa sfirsitul fizic al fisierului, numar de ordine ce poate fi folosit in continuare de catre o secventa de operatii de "scriere directa". .cp 38 -------------------------------------------------------- | | | RUTINA 36 : Determinare numar inregistrare | | (Set Random Record) | | | | Intrari : | | registrul C : 24H | | registrele D&E : adresa FCB | | | | Iesiri : | | numarul inregistrarii plasat | | in octetii 33, 34 si 35 din FCB | -------------------------------------------------------- Efect: rutina intoarce in octetii 33, 34 si 35 din FCB numarul inregistrarii curente dintr-un fisier care a fost citit/scris secvential. Rutina poate fi folosita astfel: - pentru determinarea numarului de ordine al unor inregistrari dintr-un fisier, care contin o anumita "cheie". In acest caz, fisierul se parcurge secvential in citire, se verifica daca inregistrarea citita contine "cheia" cautata si daca o contine se apeleaza rutina 36 pentru a determina "numarul de ordine" al ia    <  `` ala a fisierului. La sfirsitul prelucrarii se va dispune de o lista a tuturor numerelor inregistrarilor care contin "cheia" respectiva. Pe baza acestei liste, utilizatorul poate citi direct inregistrarile care il intereseaza. - atunci cind se doreste trecerea de la accesul secvential intr-un fisier la accesul direct. In acest caz, dupa ce un fisier a fost exploatat secvential pina la un anumit punct, se apeleaza rutina 36 pentru a determina "numarul de ordine" al inregistrarii curente. Pe baza acestui numar de ordine se pot realiza, in continuare, operatii de citire/scriere directa, operatii ce se aplica de la un anumit punct selec tat din fisier in continuare. .cp 23 -------------------------------------------------------- | | | RUTINA 37 : Dezactivare discuri | | (Reset Drive) | | | | Intrari : | | registrul C : 25H | | registrele D&E : vector discuri | | | -------------------------------------------------------- Efect: dezactiveaza unitatile de disc specificate in vectorul definit prin continutul registrelor "D&E" si acorda acestor uni tati atributul R/W. Bitul B0 din registrul "E" corespunde unita tii "A" iar bitul B7 din registrul "D" corespunde unitatii "P". O valoare logica "1" in vectorul definit reprezinta o optiune- utilizator de "dezactivare" a unitatii respective. Rutina se foloseste, de obicei, pentru a modifica atributul R/O, care a fost asociat unei unitati de disc prin apelul rutinei 28. Discul selectat nu poate fi dezactivat prin aceasta rutina, ci numai printr-o rutina 13. .cp 6 -------------------------------------------------------- | | | RUTINELE 38 si 39 sint rezervate pentru dezvoltari| | ulterioare ale sistemului. | | | -------------------------------------------------------- .cp 19 -------------------------------------------------------- | | | RUTINA 40 : Scriere directa cu umplere cu 0 | | (Write Random with Zero Fill) | | | | Intrari : | | registrul C : 28H | | registrele D&E : adresa FCB | | | | Iesiri : | | registrul A : octet de stare | | | -------------------------------------------------------- Efect: rutina este similara rutinei 34 (scriere directa) cu exceptia faptului ca inainte de a se scrie o inregistrare, intr-un bloc nealocat, acesta este automat umplut cu zerouri. Astfel, toate "gaurile" dintr-un fisier creat in acces direct vor fi recunoscute prin continutul lor (zerouri).