RUNNER2

Z PMD 85 Infoserver

(Rozdiel medzi revíziami)
Rombor (Diskusia | príspevky)
(Nový článok)
Rombor (Diskusia | príspevky)
(Úprava textu)
Riadok 17: Riadok 17:
* umožňuje "pomenovať" si disketu - toto meno sa zobrazuje v titulku zoznamu nájdených programov
* umožňuje "pomenovať" si disketu - toto meno sa zobrazuje v titulku zoznamu nájdených programov
* je možné vypnúť triedenie zoznamu programov
* je možné vypnúť triedenie zoznamu programov
-
* poskytuje ďalších 7 služieb - 6 z nich slúži pre sekvenčný prístup k súborom po bytoch, čo dáva možnosť jednoduchšej náhrady pôvodného zápisu a čítania z magnetofónu
+
* poskytuje ďalších 7 služieb - 6 z nich slúži pre sekvenčný prístup k súborom po bytoch, čo dáva možnosť jednoduchšej náhrady pôvodného zápisu a čítania z magnetofónu v upravovaných programoch
* niektoré služby z predošlého RUNNERa sa čiastočne zmenili
* niektoré služby z predošlého RUNNERa sa čiastočne zmenili
-
Pokiaľ to nebude nutné, v nasledujúcom budú uvedené iba rozdiely oproti predošlej verzii. Takže doporučujem prečítať si aj popis predošlej [[RUNNER|verzie]].
+
Pokiaľ to nebude nutné, v nasledujúcom budú uvedené iba rozdiely oproti predošlej verzii. Takže doporučujeme prečítať si aj popis predošlej [[RUNNER|verzie]].
== Informačný súbor ==
== Informačný súbor ==
Riadok 40: Riadok 40:
== Služby RUNNERa a rozloženie pamäti ==
== Služby RUNNERa a rozloženie pamäti ==
-
Rozloženie pamäti sa v globále nezmenilo. Rozdiel nastal iba v tom, že sa zmenilo umiestnenie jednotlivých častí RUNNERa. Buffre a služby RUNNERa sú umiestnené na začiatku a interpretér príkazov spolu s kódom pre vytvorenie zoznamu programov je na konci. Po spustení je celá časť pamäti za službami až po BDOS k dispozícii užívateľovi. Adresu tejto oblasti a jej veľkosť môže užívateľ získať pomocou služby 2.
+
Rozloženie pamäti sa v globále nezmenilo. Rozdiel nastal iba v tom, že sa zmenilo umiestnenie jednotlivých častí RUNNERa. Buffre a služby RUNNERa sú umiestnené na začiatku a interpretér príkazov spolu s kódom pre vytvorenie zoznamu programov je na konci. Po spustení zvoleného programu je celá časť pamäti za službami až po BDOS k dispozícii užívateľovi. Adresu tejto oblasti a jej veľkosť môže užívateľ získať pomocou služby 2.
=== Služby RUNNERa ===
=== Služby RUNNERa ===
Po spustení zvoleného programu (skokom na adresu uvedenú v príkaze {{Kbd|JUMP}}) obsahuje register {{Kbd|DE}} adresu vstupného bodu pre volanie služieb RUNNERa. Číslo služby sa predáva v registri {{Kbd|B}}, ostatné parametre podľa potreby v ďalších registroch.
Po spustení zvoleného programu (skokom na adresu uvedenú v príkaze {{Kbd|JUMP}}) obsahuje register {{Kbd|DE}} adresu vstupného bodu pre volanie služieb RUNNERa. Číslo služby sa predáva v registri {{Kbd|B}}, ostatné parametre podľa potreby v ďalších registroch.
 +
 +
Prvých 7 služieb zodpovedá službám, ktoré poskytoval predošlý [[RUNNER]]. Drobné zmeny však nastali v službách 0 a 3. Podrobnosti ďalej.
{{CodeBig|0 - CALL BDOS}}
{{CodeBig|0 - CALL BDOS}}
-
Volanie pôvodných služieb BDOSu. Originálny vstupný bod BDOSu na adrese 0005h sa nesmie použiť, pretože na tejto adrese vlastne ani skok do BDOSu nemusí existovať. Možno použiť iba pre diskové sluzby s číslami 13 a viac. Konzolové služby nie je umožnené volať, pretože tie využívajú systémové premenné Monitora a tak by mohlo dôjsť ku "kolízii" so zobrazovaním pri volaní klasických rutín Monitora.
+
Volanie pôvodných služieb BDOSu. Originálny vstupný bod BDOSu na adrese 0005h sa nesmie použiť, pretože na tejto adrese vlastne ani skok do BDOSu nemusí existovať. Možno použiť iba pre diskové sluzby BDOSu s číslami 13 a viac. Konzolové služby BDOSu nie je umožnené volať, pretože tie využívajú systémové premenné Monitora a tak by mohlo dôjsť ku "kolízii" so zobrazovaním pri volaní klasických rutín Monitora.
* Vstup:
* Vstup:
** B=0
** B=0
Riadok 56: Riadok 58:
* Výstup:
* Výstup:
** podľa danej BDOS služby
** podľa danej BDOS služby
 +
* Mení:
 +
** všetky registre
Riadok 88: Riadok 92:
** B=3
** B=3
** HL=adresa vstupného textu s menom súboru ukončeného nulou (00h)
** HL=adresa vstupného textu s menom súboru ukončeného nulou (00h)
-
** C=1 - meno môže obsahovať Wildchars
+
** C=1 - meno môže obsahovať Wildchars ('?' a '*')
** C=0 - meno nesmie obsahovať Wildchars
** C=0 - meno nesmie obsahovať Wildchars
* Výstup:
* Výstup:
Riadok 99: Riadok 103:
{{CodeBig|4 - LOAD FILE}}
{{CodeBig|4 - LOAD FILE}}
-
Služba pre načítanie súboru na požadovanú adresu a o maximálne povolenej dĺžke. POZOR: Mení aktuálnu adresu DMA pre BDOS!
+
Služba pre načítanie celého súboru na požadovanú adresu a o maximálne povolenej dĺžke. Meno súboru pripravené v internom FCB by malo byť jednoznačné (bez wildchars), inak sa načíta prvý súbor, ktorý zodpovedá danej maske. POZOR: Mení aktuálnu adresu DMA pre BDOS!
* Vstup:
* Vstup:
** B=4
** B=4
Riadok 115: Riadok 119:
{{CodeBig|5 - SAVE FILE}}
{{CodeBig|5 - SAVE FILE}}
-
Služba pre uloženie súboru z požadovanej adresy a o požadovanej dĺžke. Dĺžka sa zarovná na násobok 128. Existujúci súbor daného mena sa najprv zmaže. POZOR: Mení aktuálnu adresu DMA pre BDOS!
+
Služba pre uloženie obsahu pamäti z požadovanej adresy a o požadovanej dĺžke do súboru. Dĺžka sa zarovná na násobok 128. Existujúci súbor daného mena sa najprv zmaže. Meno súboru pripravené v internom FCB musí byť jednoznačné (bez wildchars), inak mazanie súboru, ktoré je súčasťou služby, môže spôsobiť zmazanie skupiny súborov, ktorých mená zodpovedajú danej maske. POZOR: Mení aktuálnu adresu DMA pre BDOS!
* Vstup:
* Vstup:
** B=5
** B=5
Riadok 140: Riadok 144:
-
Nasledujúce služby (7 až 12) umožňujú pracovať so súbormi sekvenčne po bajtoch. Po otvorení súboru sa vráti v registri {{Kbd|HL}} adresa deskriptora, ktorá sa potom používa pri volaní ďalších služieb. Deskriptor má veľkosť 8 bytov a udržiava sa v ňom aktuálny stav otvoreného súboru. S každým deskriptorom je zviazaný jeden FCB a buffer o veľkosti 128 bytov. RUNNER umožňuje mať otvorené súčasne dva súbory naraz. Súbor môže byť otvorený v móde pre čítanie alebo pre zápis. Ak je súbor otvorený pre čítanie, nie je možné doň zapisovať a naopak.
+
Nasledujúce služby (7 až 12) umožňujú pracovať so súbormi sekvenčne po bajtoch. Po otvorení súboru sa v registri {{Kbd|HL}} vráti adresa deskriptora, ktorá sa potom používa pri volaní ďalších služieb. Deskriptor má veľkosť 8 bytov a udržiava sa v ňom aktuálny stav otvoreného súboru. S každým deskriptorom je zviazaný jeden FCB a buffer o veľkosti 128 bytov. RUNNER umožňuje mať otvorené súčasne dva súbory naraz. Súbor môže byť otvorený v móde pre čítanie alebo pre zápis. Ak je súbor otvorený pre čítanie, nie je možné doň zapisovať a naopak.
Do deskriptora nie je vhodné počas práce so súborom zasahovať, ale pre úplnosť tu uvedieme význam jednotlivých jeho položiek:
Do deskriptora nie je vhodné počas práce so súborom zasahovať, ale pre úplnosť tu uvedieme význam jednotlivých jeho položiek:
Riadok 173: Riadok 177:
-
{{CodeBig|7 - OPEN FILE 1}}
+
{{CodeBig|7 - OPEN FILE (1. možnosť)}}
-
Otvorí súbor pre sekvenčné čítanie alebo sekvenčný zápis po bytoch. Pri otváraní súboru pre zápis sa existujúci súbor daného mena najprv zmaže. Táto služba očakáva meno súboru v tvare ako je to v FCB.
+
Otvorí súbor pre sekvenčné čítanie alebo sekvenčný zápis po bytoch. Pri otváraní súboru pre zápis sa existujúci súbor daného mena najprv zmaže. Táto služba očakáva jednoznačné meno súboru v tvare ako je to v FCB.
* Vstup:
* Vstup:
** B=7
** B=7
Riadok 189: Riadok 193:
-
{{CodeBig|8 - OPEN FILE 2}}
+
{{CodeBig|8 - OPEN FILE (2. možnosť)}}
-
Otvorí súbor pre sekvenčné čítanie alebo sekvenčný zápis po bytoch. Pri otváraní súboru pre zápis sa existujúci súbor daného mena najprv zmaže. Táto služba očakáva meno súboru v rovnakom tvare ako služba 3.
+
Otvorí súbor pre sekvenčné čítanie alebo sekvenčný zápis po bytoch. Pri otváraní súboru pre zápis sa existujúci súbor daného mena najprv zmaže. Táto služba očakáva jednoznačné meno súboru v rovnakom tvare ako služba 3.
* Vstup:
* Vstup:
** B=8
** B=8
Riadok 226: Riadok 230:
** B=10
** B=10
** HL=adresa deskriptora
** HL=adresa deskriptora
 +
** A=zapisovaný byte
* Výstup:
* Výstup:
** CY=0, Z=1 - OK
** CY=0, Z=1 - OK
Riadok 237: Riadok 242:
{{CodeBig|11 - CLOSE FILE}}
{{CodeBig|11 - CLOSE FILE}}
-
Uzatvorí otvorený súbor. Súbory otvorené pre čítanie, nie je podľa špecifikácie CP/M uzatvárať, ale z konvencie sa to doporučuje. Pokiaľ bol súbor otvorený pre zápis a v buffri sú nezapísané dáta, prevedie sa najprv zápis posledného sektora a až tak sa súbor uzavrie. POZOR: Mení aktuálnu adresu DMA pre BDOS!
+
Uzatvorí otvorený súbor. Súbory otvorené pre čítanie, nie je podľa špecifikácie CP/M nutné uzatvárať, ale z konvencie sa to doporučuje. Pokiaľ bol súbor otvorený pre zápis a v buffri sú nezapísané dáta, prevedie sa najprv zápis posledného sektora a až tak sa súbor uzavrie. Uzatváranie súboru, ktorý bol otvorený pre zápis je teda nutné! POZOR: Mení aktuálnu adresu DMA pre BDOS!
* Vstup:
* Vstup:
** B=11
** B=11
Riadok 252: Riadok 257:
{{CodeBig|12 - READ LINE}}
{{CodeBig|12 - READ LINE}}
-
Zo súboru prečíta jeden textový riadok ukončený CRLF. Súbor musí byť otvorený službou 7 alebo 8 pre čítanie. Predpokladá sa, že vstupný súbor je obyčajný textový súbor a za koniec súboru (a prípadne aj posledného riadku) sa považuje znak EOF. Všetky riadiace znaky s kódmi menšími ako 32, s výnimkou CR, LF, TAB a EOF, sa ignorujú. Tabulátor je možné nechať voliteľne nahradzovať jednou medzerou. Za koniec riadku sa považuje iba LF! CR sa potichu preskočí.
+
Zo súboru prečíta jeden textový riadok ukončený znakmi CR a LF a uloží do cieľového buffra. Súbor musí byť otvorený službou 7 alebo 8 pre čítanie. Predpokladá sa, že vstupný súbor je obyčajný textový súbor a za koniec súboru (a prípadne aj posledného riadku) sa považuje znak EOF. Všetky riadiace znaky s kódmi menšími ako 32, s výnimkou CR, LF, TAB a EOF, sa ignorujú. Tabulátor je možné nechať voliteľne nahradzovať jednou medzerou. Za koniec riadku sa považuje iba LF! CR sa potichu preskočí.
-
Cieľový buffer musí mať veľkosť minimálne podľa hodnoty registra C + 1, aby sa mohla zapísať ukončovacia nula. Pokiaľ sa buffer zaplní a nedosiahol sa CRLF, je v B registri vrátená pôvodná hodnota +1. CR, LF a ani EOF sa do buffra nezapisujú! Iba ukončovacia nula. POZOR: Mení aktuálnu adresu DMA pre BDOS!
+
Cieľový buffer musí mať veľkosť minimálne podľa hodnoty registra C + 1, aby sa mohla zapísať ukončovacia nula. Pokiaľ sa buffer zaplní a nedosiahol sa CR a LF, je v B registri vrátená pôvodná hodnota +1. CR, LF a ani EOF sa do cieľového buffra nezapisujú! Iba ukončovacia nula. POZOR: Mení aktuálnu adresu DMA pre BDOS!
* Vstup:
* Vstup:
** B=12
** B=12
** HL=adresa deskriptora
** HL=adresa deskriptora
** DE=adresa cieľového buffra
** DE=adresa cieľového buffra
-
** C=max. počet znakov bez CRLF, EOF
+
** C=veľkosť cieľového buffra -1
** CY=1 - tabulátor sa nahradí jednou medzerou
** CY=1 - tabulátor sa nahradí jednou medzerou
** CY=0 - tabulátor sa ponechá
** CY=0 - tabulátor sa ponechá
* Výstup:
* Výstup:
** CY=0, Z=1 - OK
** CY=0, Z=1 - OK
-
*** B=počet znakov v buffri bez CRLF, EOF
+
*** B=počet znakov zapísaných do buffra
*** DE=ukazuje za posledný zapísaný byte v buffri
*** DE=ukazuje za posledný zapísaný byte v buffri
** CY=0, Z=0 - čítanie za fyzickým koncom súboru
** CY=0, Z=0 - čítanie za fyzickým koncom súboru

Verzia zo dňa a času 19:12, 7. marec 2011

RUNNER 2


RUNNER 2
Autor:Roman Bórik
Vývojár:RM-TEAM
Verzia:RUNNER, v2.0 (2011)
(PMD 85-3 + PMD 32
PMD 85-2A + PMD 32)
Operačný systém:CP/M
Lokalizácia:angličtina
Download: {{{download}}}

Obsah


RUNNER 2 je nová verzia programu RUNNER. Nová verzia sa od predošlej verzie líši v týchto bodoch:

  • môže byť spustená na PMD 85-3 a aj na PMD 85-2A
  • umožňuje "pomenovať" si disketu - toto meno sa zobrazuje v titulku zoznamu nájdených programov
  • je možné vypnúť triedenie zoznamu programov
  • poskytuje ďalších 7 služieb - 6 z nich slúži pre sekvenčný prístup k súborom po bytoch, čo dáva možnosť jednoduchšej náhrady pôvodného zápisu a čítania z magnetofónu v upravovaných programoch
  • niektoré služby z predošlého RUNNERa sa čiastočne zmenili

Pokiaľ to nebude nutné, v nasledujúcom budú uvedené iba rozdiely oproti predošlej verzii. Takže doporučujeme prečítať si aj popis predošlej verzie.

Informačný súbor

Formát informačného súboru sa nijako nezmenil. Jediným rozdielom je to, že jeho dĺžka už nie je limitovaná na 1 kB. Je to preto, že sa k nemu pristupuje sekvenčne pomocou nových služieb.

Špeciálny súbor RUN.INF

Na disketu možno pridať špeciálny súbor RUN.INF, ktorý umožňuje pomenovať disketu a potlačiť triedenie zoznamu programov. V tomto súbore má teda zmysel iba príkaz NAME a nový príkaz NOSORT, ostatné príkazy sú ignorované. Syntaktické chyby nie sú hlásené a prípadná chyba spôsobí iba ukončenie spracovávania súboru RUN.INF.

NAME name

Príkaz NAME slúži pre "pomenovanie" diskety. Príkaz je v tomto prípade nepovinný. name môže mať maximálne 20 znakov.

NOSORT

Príkaz NOSORT potlačí triedenie zoznamu súborov. Pre RUN.INF je nepovinný, pre klasické INF súbory nemá význam a je ignorovaný.

Služby RUNNERa a rozloženie pamäti

Rozloženie pamäti sa v globále nezmenilo. Rozdiel nastal iba v tom, že sa zmenilo umiestnenie jednotlivých častí RUNNERa. Buffre a služby RUNNERa sú umiestnené na začiatku a interpretér príkazov spolu s kódom pre vytvorenie zoznamu programov je na konci. Po spustení zvoleného programu je celá časť pamäti za službami až po BDOS k dispozícii užívateľovi. Adresu tejto oblasti a jej veľkosť môže užívateľ získať pomocou služby 2.

Služby RUNNERa

Po spustení zvoleného programu (skokom na adresu uvedenú v príkaze JUMP) obsahuje register DE adresu vstupného bodu pre volanie služieb RUNNERa. Číslo služby sa predáva v registri B, ostatné parametre podľa potreby v ďalších registroch.

Prvých 7 služieb zodpovedá službám, ktoré poskytoval predošlý RUNNER. Drobné zmeny však nastali v službách 0 a 3. Podrobnosti ďalej.


0 - CALL BDOS

Volanie pôvodných služieb BDOSu. Originálny vstupný bod BDOSu na adrese 0005h sa nesmie použiť, pretože na tejto adrese vlastne ani skok do BDOSu už nemusí existovať. Možno použiť iba pre diskové sluzby BDOSu s číslami 13 a viac. Konzolové služby BDOSu nie je umožnené volať, pretože tie využívajú systémové premenné Monitora a tak by mohlo dôjsť ku "kolízii" so zobrazovaním pri volaní klasických rutín Monitora.

  • Vstup:
    • B=0
    • C=číslo BDOS služby (>=13)
    • ostané parametre podľa danej BDOS služby
  • Výstup:
    • podľa danej BDOS služby
  • Mení:
    • všetky registre


1 - FCB ADDRESS

Služba vráti adresu interného FCB, ktorý je používaný službami 4 a 5.

  • Vstup:
    • B=1
  • Výstup:
    • HL=adresa interneho FCB
  • Mení:
    • HL


2 - BUFFER ADDRESS AND SIZE

Služba vráti adresu a veľkosť voľnej pamäťovej oblasti za službami RUNNERa.

  • Vstup:
    • B=2
  • Výstup:
    • HL=adresa
    • BC=veľkosť
  • Mení:
    • HL, BC


3 - PREPARE FILE NAME

Služba spracuje reťazec, ktorý zodpovedá menu súboru v tvare [d:]filename[.ext] (1:8.3) a pripravi ho do interného FCB. Pokiaľ sa neuvedie disk, bude sa predpokladať aktuálny disk.

  • Vstup:
    • B=3
    • HL=adresa vstupného textu s menom súboru ukončeného nulou (00h)
    • C=1 - meno môže obsahovať Wildchars ('?' a '*')
    • C=0 - meno nesmie obsahovať Wildchars
  • Výstup:
    • CY=1 pri chybe
    • CY=0, ak je meno súboru v poriadku, vyplnené interné FCB
  • Mení:
    • všetky registre


4 - LOAD FILE

Služba pre načítanie celého súboru na požadovanú adresu a o maximálne povolenej dĺžke. Meno súboru pripravené v internom FCB by malo byť jednoznačné (bez wildchars), inak sa načíta prvý súbor, ktorý zodpovedá danej maske. POZOR: Mení aktuálnu adresu DMA pre BDOS!

  • Vstup:
    • B=4
    • [interné FCB]=pripravené meno súboru
    • HL=adresa kam sa súbor nahraje
    • DE=maximálna dĺžka súboru
  • Výstup:
    • S=1 - disková chyba
    • CY=1 - súbor je dlhý
    • S=0, CY=0 - OK
  • Mení:
    • všetky registre


5 - SAVE FILE

Služba pre uloženie obsahu pamäti z požadovanej adresy a o požadovanej dĺžke do súboru. Dĺžka sa zarovná na násobok 128. Existujúci súbor daného mena sa najprv zmaže. Meno súboru pripravené v internom FCB musí byť jednoznačné (bez wildchars), inak mazanie súboru, ktoré je súčasťou služby, môže spôsobiť zmazanie skupiny súborov, ktorých mená zodpovedajú danej maske. POZOR: Mení aktuálnu adresu DMA pre BDOS!

  • Vstup:
    • B=5
    • [interné FCB]=pripravené meno súboru
    • HL=adresa
    • DE=dĺžka
  • Výstup:
    • S=1 - disková chyba
    • CY=1 - súbor je dlhý
    • S=0, CY=0 - OK
  • Mení:
    • všetky registre


6 - RUNNER VERSION

Vráti číslo verzie RUNNERa.

  • Vstup:
    • B=6
  • Výstup:
    • A=číslo verzie RUNNERa. Súčasná verzia vráti 20h
  • Mení:
    • A


Nasledujúce služby (7 až 12) umožňujú pracovať so súbormi sekvenčne po bajtoch. Po otvorení súboru sa v registri HL vráti adresa deskriptora, ktorá sa potom používa pri volaní ďalších služieb. Deskriptor má veľkosť 8 bytov a udržiava sa v ňom aktuálny stav otvoreného súboru. S každým deskriptorom je zviazaný jeden FCB a buffer o veľkosti 128 bytov. RUNNER umožňuje mať otvorené súčasne dva súbory naraz. Súbor môže byť otvorený v móde pre čítanie alebo pre zápis. Ak je súbor otvorený pre čítanie, nie je možné doň zapisovať a naopak.

Do deskriptora nie je vhodné počas práce so súborom zasahovať, ale pre úplnosť tu uvedieme význam jednotlivých jeho položiek:

Deskriptor otvoreného súboru
Offset Veľkosť Význam
0 1 RW flag - 0/1/2 = CLOSED/READ/WRITE
1 2 adresa FCB otvoreného súboru
3 1 počítadlo bytov v buffri
4 2 adresa sektorového buffra zviazaného s týmto deskriptorom
6 2 aktuálny ukazateľ do sektorového buffra


7 - OPEN FILE (1. možnosť)

Otvorí súbor pre sekvenčné čítanie alebo sekvenčný zápis po bytoch. Pri otváraní súboru pre zápis sa existujúci súbor daného mena najprv zmaže. Táto služba očakáva jednoznačné meno súboru v tvare ako je to v FCB.

  • Vstup:
    • B=7
    • A=0 alebo 1 - číslo deskriptora
    • C=1-READ alebo 2-WRITE
    • HL=adresa predpripraveného mena súboru ako v FCB - DNNNNNNNNEEE
  • Výstup:
    • CY=1 pri chybe parametrov
    • S=1, ak sa súbor nepodarilo otvoriť
    • S=0, CY=0 - OK, HL=adresa deskriptora
  • Mení:
    • všetky registre


8 - OPEN FILE (2. možnosť)

Otvorí súbor pre sekvenčné čítanie alebo sekvenčný zápis po bytoch. Pri otváraní súboru pre zápis sa existujúci súbor daného mena najprv zmaže. Táto služba očakáva jednoznačné meno súboru v rovnakom tvare ako služba 3.

  • Vstup:
    • B=8
    • A=0 alebo 1 - číslo deskriptora
    • C=1-READ alebo 2-WRITE
    • HL=adresa vstupného textu s menom súboru ukončeného nulou
  • Výstup:
    • CY=1 pri chybe parametrov
    • S=1, ak sa súbor nepodarilo otvoriť
    • S=0, CY=0 - OK, HL=adresa deskriptora
  • Mení:
    • všetky registre


9 - READ BYTE

Prečíta byte zo súboru. POZOR: Mení aktuálnu adresu DMA pre BDOS!

  • Vstup:
    • B=9
    • HL=adresa deskriptora
  • Výstup:
    • CY=0, Z=1 - OK, A=prečítaný byte
    • CY=1 - chybný typ operácie v deskriptore
    • Z=0 - chyba pri čítaní zo súboru - koniec súboru
    • S=1 - disková chyba
  • Mení:
    • AF


10 - WRITE BYTE

Zapíše byte do súboru. POZOR: Mení aktuálnu adresu DMA pre BDOS!

  • Vstup:
    • B=10
    • HL=adresa deskriptora
    • A=zapisovaný byte
  • Výstup:
    • CY=0, Z=1 - OK
    • CY=1 - chybný typ operácie v deskriptore
    • Z=0 - chyba pri zápise do súboru - plný disk
    • S=1 - disková chyba
  • Mení:
    • AF


11 - CLOSE FILE

Uzatvorí otvorený súbor. Súbory otvorené pre čítanie, nie je podľa špecifikácie CP/M nutné uzatvárať, ale z konvencie sa to doporučuje. Pokiaľ bol súbor otvorený pre zápis a v buffri sú nezapísané dáta, prevedie sa najprv zápis posledného sektora a až tak sa súbor uzavrie. Uzatváranie súboru, ktorý bol otvorený pre zápis je teda nutné! POZOR: Mení aktuálnu adresu DMA pre BDOS!

  • Vstup:
    • B=11
    • HL=adresa deskriptora
  • Výstup:
    • CY=0, Z=1 - OK
    • CY=1 - chybný typ operácie v deskriptore
    • Z=0 - chyba pri zápise do súboru
    • S=1 - disková chyba
  • Mení:
    • všetky registre


12 - READ LINE

Zo súboru prečíta jeden textový riadok ukončený znakmi CR a LF a uloží do cieľového buffra. Súbor musí byť otvorený službou 7 alebo 8 pre čítanie. Predpokladá sa, že vstupný súbor je obyčajný textový súbor a za koniec súboru (a prípadne aj posledného riadku) sa považuje znak EOF. Všetky riadiace znaky s kódmi menšími ako 32, s výnimkou CR, LF, TAB a EOF, sa ignorujú. Tabulátor je možné nechať voliteľne nahradzovať jednou medzerou. Za koniec riadku sa považuje iba LF! CR sa potichu preskočí. Cieľový buffer musí mať veľkosť minimálne podľa hodnoty registra C + 1, aby sa mohla zapísať ukončovacia nula. Pokiaľ sa buffer zaplní a nedosiahol sa CR a LF, je v B registri vrátená pôvodná hodnota +1. CR, LF a ani EOF sa do cieľového buffra nezapisujú! Iba ukončovacia nula. POZOR: Mení aktuálnu adresu DMA pre BDOS!

  • Vstup:
    • B=12
    • HL=adresa deskriptora
    • DE=adresa cieľového buffra
    • C=veľkosť cieľového buffra -1
    • CY=1 - tabulátor sa nahradí jednou medzerou
    • CY=0 - tabulátor sa ponechá
  • Výstup:
    • CY=0, Z=1 - OK
      • B=počet znakov zapísaných do buffra
      • DE=ukazuje za posledný zapísaný byte v buffri
    • CY=0, Z=0 - čítanie za fyzickým koncom súboru
    • CY=1 - chybný typ operácie v deskriptore
    • S=1 - disková chyba
  • Mení:
    • DE, BC, AF


13 - RETURN TO CP/M

Prevedie sa návrat do CP/M.

  • Vstup:
    • B=13