ÚVOD | Novinky | 8 Bitů | Příslušenství | Drobnosti | TTL | Kontakt


Drobnosti / OS MIKROS / Příručka pro implementaci



OCR dokumentace SMEP 3S100101


3S100101



SMEP







OS MIKROS
PŘÍRUČKA PRO IMPLEMENTACI







1985













Vydáno pro potřebu uživatelů systému malých elektronických počítačů

Název:OS MIKROS - Příručka pro implementaci
Autor:Zdenek Navrátil
Určeno:   Řada uživatelských, publikací
Číslo:3S100101
Vydáni:První, rok 1985
Vydal:Kancelářské stroje, k.ú.o., závod OSTRAVA, odbor SI
Tisk:Moravské tiskařské závody, závod 20, Novinářská 7, Ostrava
Publikace neprošla jazykovou ani stylistickou úpravou
Náklad:1 200 výtisků

(C) Kancelářské stroje



OBSAH

  1. Úvod
  2. Relokace MIKROSu
    1. Příkaz FORMÁT
    2. Příkaz MOVOS
    3. Příkaz SYSGEN
  3. Metoda vytváření relokovatelných programů
  4. Generování relokovatelné verze MIKROSu
    1. Příkaz GENHEX
    2. Příkaz GENMOD
  5. Vstupně - výstupní modul BIOS
    1. Vstupní vektor BIOSu
    2. Parametry disků
    Příloha - obsah distribuční diskety OS MIKROS


  1. ÚVOD
  2. Příručka, kterou dostáváte do rukou, má sloužit jako pomůcka pro ty uživatele mikropočítačového operačního systému MIKROS, kteří si přejí tento systém upravit pro svoje specifické technické prostředky.

    V příručce jsou popsány příkazy umožňující formátování disků, kopírování systému, relokaci už existujícího (vygenerovaného) operačního systému i metodu, jak je možné vygenerovat nový operační systém s upraveným BlOSem. Tato problematika tvoří náplň kapitol 2 až 4.

    BIOSu je věnována kapitola 5. Zaobírá se jeho strukturou, požadavky, kterým musí vyhovovat jednotlivé drivery do něj zabudované a sumarizuje parametry a datové struktury potřebné pro rekonfiguraci systému ovládání souborů. Při studiu této kapitoly je nutno využívat zdrojový text BIOSu, na který se výklad odvolává. Tento zdrojový text se nachází na distribučním disku pod jménem BIOS.MAC.

    U čtenáře se předpokládá znalost příruček "OS MIKROS - Příručka programátora" a "OS MIKROS Služobné programy - príručka uživateľa".

    Příručka se odvolává na standardní MIKROS, takový jaký je implementovaný na Mikropočítačovém Vývojovém Systému (dále MVS) vyvinutém ve VÚVT Žilina. Tato implementace má následující parametry:



  3. RELOKACE MIKROSu
  4. Tato kapitola popisuje práci s programy, které slouží pro přípravu disku pro uloženi MIKROSu, generování nové verze systému pro zadaný rozsah, paměti a pro jeho kopírování.


    1. PŘÍKAZ FORMÁT
    2. Příkaz FORMÁT umožňuje naformátovat pružný disk pro MIKROS tak, že se mu jeví jako prázdný. Formátuje jej sekvenčně, t.j. posloupnost adres jednotlivých sektorů odpovídá fyzickému uložení těchto sektorů na stopě. Každý sektor přitom popíše vzorem E5H, což je pro MIKROS příznak prázdnosti disku. Připomínáme, že původní obsah disku se přitom zničí.

      Protože pro naformátování disku se nedá využit vstupní vektor BIOSu (taková funkce tam není), je potřebné vykonávat ho pomoci kanálového programu příslušného řadiče disku a příkaz FORMÁT je tedy závislý na typu tohoto řadiče. Příkaz FORMÁT, který tvoří součást dodávaného programového vybaveni, umožňuje formátovat pružné disky jednoduché hustoty v jednotkách A a B, (bázová adresa řadiče je 78H).

      Syntax a funkce příkazu:

      FORMÁT

      Po svém odstartování vypíše oznámení:

      DISK TO FORMAT OR RETURN TO REBOOT

      a čeká na zadání jména jednotky, ve které chceme disk formátovat. Odpovědi, které akceptuje, jsou malá a velká písmena A nebo B. V případě, že nechceme dále formátovat, zadáme znak a program konči. Po odpovědi A nebo B se vypíše žádost o založení formátovaného disku do zadané jednotky. Výpis má formu:

      INSERT DISK TO X: THEN TYPE RETURN

      Program čeká na založení formátovaného disku do požadované jednotky a na stlačení znaku .

      Potom disk naformátuje a po ukončení operace vypíše:

      FUNCTION COMPLETE

      a znovu si žádá zadání jména jednotky pro formátování. V případě, že nemůže formátování provést, (např. disk je chráněný proti zápisu), vypíše:

      IMPOSSIBLE TO FORMAT THIS DISK, PERMANENT ERROR OCCURED

      a znovu si žádá jméno jednotky.


    3. PŘÍKAZ MOVOS
    4. Příkaz MOVOS umožňuje vytvořit verzi MIKROSu pro zadaný rozsah paměti. Program MOVOS je vlastně relokovatelný tvar MIKROSu, doplněný o relokační program.

      Syntax příkazu a popis příkazu:

      MOVOS XY *

      Parametr XY představuje požadovanou hranici paměti v K bytech, pro kterou chceme MIKROS vygenerovat. Jestliže namísto tohoto parametru zadáme hvězdičku nebo otazník, vygeneruje se verze pro, maximální rozsah dostupné paměti. Hvězdička nebo jakýkoliv jiný znak na místě druhého parametru způsobí, že se po vygenerování tato verze nepřesune do svého úseku paměti a nepřevezme řízení.

      Po svém spuštění vypíše MOVOS oznámení:

      CONSTRUCTING XYK MIKROS V2.2

      a po vygenerování požadované verze končí radou:

      READY FOR "SYSGEN" OR
      "SAVE XY MIKROSXY.COM"

      Nyní je možné příkazem SAVE XY MIKROSXY.COM uložit obraz vygenerované verze jako soubor na disku, nebo bezprostředně použít příkaz SYSGEN k uložení vygenerovaného systému na nultou a prvou stopu.

      V případě, že zadáme požadovanou horní hranici paměti (parametr XY) menší než 20 nebo větší než 64 MOVOS hlásí chybu:

      INVALID MEMORY SIZE

      a končí.


    5. PŘÍKAZ SYSGEN
    6. Příkaz SYSGEN slouží pro kopírování operačního systému z jednoho disku na druhý (kopíruje pouze první dvě stopy) nebo k uložení systému z diskového souboru nebo z paměti na první dvě stopy disku. Jak vidíme, je tento příkaz závislý na konkrétní implementaci systému.

      Syntax a popis příkazu:

      SYSGEN <jméno soubor>

      <jméno souboru> udává soubor, který je nositelem dané verze MIKROSu. Tento soubor jsme získali po vykonání příkazů MOVOS a SAVE. Tento soubor se zavede do paměti a SYSGEN si žádá zadat kód disku, na který ho má z paměti uložit, výpisem:

      DESTINATION DRIVE NAME (OR RETURN TO REBOOT)

      Jestliže zadáme <CR> SYSGEN končí, jestliže zadáme kód disku, požádá nás o založení disku do požadované jednotky a odstartování zápisu systému na tento disk znakem <CR>

      DESTINATION ON X, THEN TYPE RETURN

      po provedení zápisu vypíše:

      FUNCTION COMPLETE

      a opět žádá kód disku pro zápis systému.

      Při spuštění SYSGENu nemusíme parametr <jméno souboru> zadávat. V tomto případě žádá kód zdrojového disku, z kterého má vzít systém výpisem:

      SOURCE DRIVE (OR RETURN TO SKIP)

      Jestliže odpovíme znakem <CR>, předpokládá, že systém je připravený v paměti na tom místě, kam by ho načítal ze souboru a žádá o zadání kódu disku, na který ho má uložit. Tento způsob můžeme použít v případě, jestliže jsme před tím generovali systém příkazem MOVOS - je v paměti tam, kde ho SYSGEN předpokládá.

      Jestli zadáme kód disku, žádá výpisem:

      SOURCE ON X, THEN TYPE RETURN

      založení požadovaného disku a spuštění jeho čtení znakem <CR> . Pak se ptá na kód disku, na který má systém uložit. Tento způsob můžeme použit, chceme-li vytvořit identickou kopii systému.



  5. METODA VYTVÁŘENÍ RELOKOVATELNÝCH PROGRAMŮ
  6. anebo o tom, jak jednoduché věci je možné dělat jednoduchým způsobem.

    Instrukční síť mikroprocesoru 8080 neposkytuje možnosti pro relokaci programu, t.j. neumožňuje vytvářet kód, který je přemístitelný v operační paměti. Program, který byl přeložen pro konkrétní adresy, funguje pouze tehdy, je-li umístěný na těchto adresách.

    Toto omezení je nutno řešit SW metodami, které jsou velmi různorodé co do složitosti i komplexnosti řešení.

    Existuje samozřejmě obrovské množství aplikací, kde není relokace potřebná, avšak v operačních systémech, které si kladou za cíl alespoň trochu efektivně hospodařit s operační pamětí, je relokace nevyhnutelná. I když operační systém MIKROS takovéto nároky nemá, přesto se vyskytuje problém, jak zajistit rekonfiguraci systému do libovolné oblasti paměti. Jak víme, někdy je k dispozici 64K, někdy pouze 48K bytů RAM paměti apod., a protože se systém umísťuje obvykle na konci dostupné paměti, je nutné zajistit jednoduché prostředky pro jeho relokaci.

    Na tomto místě je nutné zdůraznit, že požadujeme, aby byl program schopný relokace po dobu jeho zavádění do paměti! Metody, kdy překladač přeloží program do tzv. relokovaného tvaru, kterému pak musíme přidělit absolutní, adresy na pevno pomocí jiného "umisťovacího" programu (locator) náš problém neřeší, protože obvyklý locator nepracuje při zavádění programu, nýbrž absolutní adresy pro umístění programu je nutno poznat předem. Přidělování absolutních adres pomocí tohoto typu locatorů je tedy separátní činnost, která nemůže zohlednit momentální požadavky systému.

    Metoda relokace systému popsaná v této kapitole je jednoduchá, úplně vyhovuje požadavkům na rekonfiguraci MIKROSu a je dostatečně obecná na to, aby mohla být použitá i pro jiné účely.

    Popravdě řečeno, MIKROS se nerelokuje po dobu svého zavádění do paměti, zavádí se už v absolutním tvaru, ale tento absolutní tvar se připravuje popisovanou metodou. Tato metoda však najde své plné uplatnění v multiprogramové verzi MIKROSu nazvané MIKROM, kde obvyklé metody, jak už bylo řečeno, nevyhovují.

    Na adresní prostor mikroprocesoru 8080, který tvoří 64K bytů, můžeme pohlížet jako na 256 stránek, z nichž každá zabírá 256 bytů, (256 = 100H). Znamená to, že adresní odkazy, které jsou vždy dvojbytové, můžeme interpretovat jako čísko stránky a pořadové číslo bytu na této stránce. Příklad: adresa 2030H nás odkáže na 30H-tý byte na 20H-té stránce. Instrukce odvolávající se explicitně na adresu, obsahující tuto adresu v druhém a třetím bytu, anebo, z našeho hlediska, mají v třetím bytu číslo stránky adresního prostoru a v druhém bytu pořadové číslo bytu V rámci této stránky. Přeložme tentýž program jednou od začátku stránky 0 (t.j. od adresy 0000H), a jednou od začátku stránky 1 (t.j. od adresy 0100H) a porovnejme generovaný kód v obou případech.

    Obrázek 3-1 ukazuje, jak vypadá vygenerovaný kód při překladu ukázky programu od začátku stránky 0, a obrázek 3-2 ukazuje vygenerovaný kód pro tentýž program, ale přeložený od začátku stránky 1. (V ukázce nehledejte logický smysl, má sloužit pouze k demonstraci generovaného kódu).

    Všimneme si, jak se liší oba vygenerované kódy. Vidíme, že posunutím programu o jednu stránku se o jedničku změní (zvětší) právě číslo stránky v adresních odkazech, které jsou v rámci tohoto programu. Číslo bytu v rámci stránky zůstalo nezměněné. Odkazy na adresy, které nejsou závislé na umístění programu v paměti, se nemění. (Volání služby MIKROSu se dělá přes adresu 0005, nezávisle na umístění instrukce CALL MIKROS v paměti).

    obr. 3 - 1

    				ASEG
    				ORG	0
    			MIKROS	EQU	5
    				;
    0000	11 21(00)	START:	LXI	D,OZNAM
    0003	0E 09			MVI	C,9
    0005	CD 05 00		CALL	MIKROS
    				;
    0008	21 1B(00)		LXI	H,TABCIN
    000B	19			DAD	D
    000C	5E			MOV	E,M
    000D	23			INX	H
    000E	56			MOV	D,M
    000F	EB			XCHG
    0010	E9			PCHL
    				;
    0011	21 19 00	CINA:	LXI	H,25
    				;
    0014	32 1A(00)	CXNB:	STA	TAM
    				;
    0017	C3 00(00)	CINC:	JMP	START
    				;
    001A	FF		TAM: 	DB	0FFH
    				;
    001B	11(00)		TABCIN:	DW	CINA
    001D	14(00)			DW	CINB
    001F	17(00)			DW	CINC
    				;
    0021	4D 49 4B 52	OZNAM:	DB	'MIKROS$'
    0025	4F 53 24
    				;
    				END
    

    obr. 3 - 2

    				ASEG
    				ORG	100H
    			MIKROS	EQU	5
    				;
    0000	11 21(01)	START:	LXI	D,OZNAM
    0003	0E 09			MVI	C,9
    0005	CD 05 00		CALL	MIKROS
    				;
    0008	21 1B(01)		LXI	H,TABCIN
    000B	19			DAD	D
    000C	5E			MOV	E,M
    000D	23			INX	H
    000E	56			MOV	D,M
    000F	EB			XCHG
    0010	E9			PCHL
    				;
    0011	21 19 00	CINA:	LXI	H,25
    				;
    0014	32 1A(01)	CXNB:	STA	TAM
    				;
    0017	C3 00(01)	CINC:	JMP	START
    				;
    001A	FF		TAM: 	DB	0FFH
    				;
    001B	11(01)		TABCIN:	DW	CINA
    001D	14(01)			DW	CINB
    001F	17(01)			DW	CINC
    				;
    0021	4D 49 4B 52	OZNAM:	DB	'MIKROS$'
    0025	4F 53 24
    				;
    				END
    

    Porovnáním kódu z obr. 3-1 a z obr. 3-2 zjistíme, že se mění byty na relativních, adresách: 0002H, 000AH, 0016H, 0019H, 001CH, 001EH a 0020H. Tato informace postačuje k tomu, abychom mohli umístit uvedený program například od stránky 13H, t.j. od adresy 1300H. K tomu musíme změnit kód ve výše uvedených bytech. Jak jej musíme změnit? K jejich obsahu připočítáme číslo stránky, od který má být náš program umístěný, t.j. 13H. Že je tomu skutečně tak, se přesvědčíme porovnáním našich výsledků s kódem na obr. 3-3, který byl získaný překladem našeho programu od adresy 1300H.

    Jakým způsobem můžeme tedy vytvořit relokovatelný program? Stejným způsobem, jakým jsme to ukázali na našem demonstračním programu.

    1. Vytvoříme obraz (kód) programu od stránky 0.
    2. Vytvoříme obraz téhož programu od stránky 1.
    3. Oba obrazy porovnáme a tímto porovnáním získáme informace o bytech, které se při relokaci změní.
    4. Získanou informaci doplníme k obrazu programu od stránky 0, například ve tvaru posloupnosti bitů, kde každý bit odpovídá jednomu bytu programu a nazveme jej relokační mapa. Informaci z relokační mapy potom využívá program, který zavádí náš program na určené místo v paměti.

    Relokační mapa našeho demonstračního programu vypadá následovně:

    00100000 00100000 00000010 01001010 10000000
       20H      20H      02H      4AH      80H
    

    Popsanou metodu vytváření programů relokovatelných po stránkách paměti využijeme v následující kapitole při přípravě relokovatelného MIKROSu.

    obr. 3-3

    				ASEG
    				ORG	1300H
    			MIKROS	EQU	5
    				;
    0000	11 21 13	START:	LXI	D,OZNAM
    0003	0E 09			MVI	C,9
    0005	CD 05 00		CALL	MIKROS
    				;
    0008	21 1B 13		LXI	H,TABCIN
    000B	19			DAD	D
    000C	5E			MOV	E,M
    000D	23			INX	H
    000E	56			MOV	D,M
    000F	EB			XCHG
    0010	E9			PCHL
    				;
    0011	21 19 00	CINA:	LXI	H,25
    				;
    0014	32 1A 13	CXNB:	STA	TAM
    				;
    0017	C3 00 13	CINC:	JMP	START
    				;
    001A	FF		TAM: 	DB	0FFH
    				;
    001B	11 13		TABCIN:	DW	CINA
    001D	14 13			DW	CINB
    001F	17 13			DW	CINC
    				;
    0021	4D 49 4B 52	OZNAM:	DB	'MIKROS$'
    0025	4F 53 24
    				;
    				END
    


  7. GENEROVÁNÍ RELOKOVATELNÉ VERZE MIKROSu
  8. Metodu relokace popsanou v předcházející kapitole využijeme při přípravě relokovátelného MIKROSu. Vytvoříme dva operační systémy. První, budeme jej nazývat MIKROS0, uložíme od adresy 0000H, zatímco druhý, MIKR0S1, úplně totožný s prvním uložíme od adresy 0100H. Tyto dva systémy porovnáme pomocí programu GENMOD, který navíc doplní k obrazu paměti systému MIKROS0 informace potřebné pro relokaci tohoto systému.

    Celý generovatelný MIKROS se skládá z následujících modulů:

    Všechny uvedené moduly obsahuje dodávaný MIKROSovský systém. Soubor BIOS.MAC obsahuje zdrojový text BIOSu, který je využit na MVS, a který uživatel může přizpůsobit svým technickým prostředkům, nebo jej úplně přepsat.

    Soubory BOOT0 a B00T1 obsahují bootovací (zaváděcí) program pro zavedení systému od adresy 0000H (BOOT0.MAC). Pro nestandardní disky musí uživatel tento program upravit. Upozorňujeme ale, že program BOOT se zavádí vždy na stejnou definovanou adresu (pro systém MVS je to adresa 3000H) i přesto, že systém může být vygenerovaný pro jakýkoliv rozsah paměti.

    HW nezávislé moduly CCP a BDOS jsou uložené v hexadecimálních souborech MIKSYS0.HEX (CCP+BDOS od adresy 0000H) a MIKSYS1.HEX (CCP+BDOS od adresy 0100H).

    Pomoci těchto souborů a programů pro generování je možné vytvořit relokovatelný operační systém MIKROS.

    Jak vypadá vlastní generování? Potřebujeme k tomu následující soubory (jsou dodávány na MIKROSovské disketě):

    GENER.SUBSubmitovský soubor obsahující potřebné příkazy
    XSUB.COMProgram rozšiřující možnosti SUBMITu
    SUBMIT.COMPříkaz pro submit
    L80.COMUmisíovací program (locator)
    M80.COMMakroassembler
    SLAP.COMLadící program
    PIP.COMProgram pro konverzi souborů
    GENHEX.COMProgram pro generaci hexadecimálního formátu
    GENMOD.COM   Program pro porovnání dvou hexadecimálních, souborů
    MIKMOV.COMRelokační program
    MIKSYS0.HEXCCP+BDOS od adresy 0000H
    MIKSYS1.HEXCCP+BDOS od adresy 0100H
    BOOT0.MACBootovací program ve zdrojovém tvaru pro zavedení n sektorů, počínaje druhým na nulté stopě od adresy 0000H
    BOOT1.MACDtto BOOT0.MAC, ale od adresy 0100H
    BIOS.MACDrivery operačního systému ve zdrojovém tvaru

    Se soubory GENER. SUB, GENHEX.COM, GENMOD.COM a MIKMOV.COM blíže seznámíme během výkladu. Programy XSUB.COM, SUBMIT.COM, M80.COM, L80.COM, SLAP.COM a PIP.COM známe z příručky"OS MIKROS Služobné programy - Príručka uživateľa". 0 souborech MIKSYS0.HEX, MIKSYS1.HEX, BOOT0.MAC, B00T1.MAC, BIOS.MAC jsme se již zmínili, i když BIOSu je věnována samostatná kapitola. Rádi bychom na tomto místě zdůraznili, že pro samotné generování jsou z uvedeného seznamu nevyhnutelné pouze programy od makroassembleru (M80.COM) níže. V tomto případě ale musíme zdrojové programy překládat dvakrát, vždy pro jinou ukládací adresu a všechny příkazy musíme zadávat z konzoly (nemůžeme využít příkaz SUBMIT).

    Čtenář, seznámený se služebními příkazy MIKROSu si potřebné změny, které z toho vyplývají, uvědomí sám.

    Soubor GENER. SUB obsahuje všechny potřebné programy pro generování, a tak je možné toto generování, bez znalostí postupu, který bude popsaný níže, udělat jednoduchým operátorským příkazem:

    SUBMIT GENER

    a pouze sledovat průběh celého generování.

    My na tomto místě celý soubor GENER.SUB uvádíme, přičemž jednotlivé příkazy souboru očíslujeme, jelikož se na ně budeme v dalším výkladu odvolávat.

    1   XSUB
    2   M80 ,=BIOS/R/M
    3   L80 /P:1600,BIOS,BIOS0/N/X/M/E
    4   L80 /P:1700,BIOS,BIOS1/N/X/M/E
    5   ERA BIOS.REL
    6   M80 ,=BOOT0/R/M
    7   L80 /P:3000,BOOT0,BOOT0/N/X/M/E
    8   ERA BOOT0.REL
    9   M80 ,=B00T1/R/M
    10  L80 /P:3000,B00T1,BOOT1/N/X/M/E
    11  ERA B00T1.REL
    12  SLAP
    13  F100,2FFF,0
    14  IBOOT0.HEX
    15  RD180
    16  IMIKSYS0. HEX
    17  R200
    18  IBIOS0.HEX
    19  R200
    20  G0
    21  SAVE 27 MIKROS0.COM
    22  ERA BOOT0.HEX
    23  ERA BIOS0.HEX
    24  SLAP
    25  F100,2FFF,0
    26  IB00T1 .HEX
    27  RD180
    28  IMIKSYS1.HEX
    29  R100
    30  XBX0S1.HEX
    31  R100
    32  G0
    33  SAVE 27 MIKROS1.COM
    34  ERA B00T1.HEX
    35  ERA BIOS1.HEX
    36  GENHEX MIKROS0
    37  GENHEX MIKROS 1 100
    38  ERA MIKROS0. COM
    39  ERA MIKROS1.COM
    40  PIP MIKROS.HEX=MIKROS0.HEX,MIKROS1 .HEX
    41  ERA MIKROS0. HEX
    42  ERA MIKROS 1. HEX
    43  GENMOD MIKROS.HEX MIKROS. PRL
    44  ERA MIKROS.HEX
    45  SLAP MIKMOV. COM
    46  IMIKROS. PRL
    47  R700
    48  G0
    49  SAVE 39 MOVOS.COM
    50  ERA MIKROS.PRL
    

    Vypadá to složitě, ale jen na první pohled. Vždyť vice jak čtvrtina příkazů je ERA, t.j. výmaz již nepotřebných souborů a téměř polovina ostatních příkazů se opakuje.

    Zopakujme si:

    Chceme vytvořit posloupnost modulů CCP+BDOS+BIOS, která je nejprve umístěna od adresy 0000H a pak od adresy 0100H. Navíc před tuto posloupnost potřebujeme vložit modul BOOT, který se vždy zavádí od adresy 3000H, ale zbytek posloupnosti se (t.j. CCP+BDOS+BIOS) zavádí jednou od adresy 0000H, podruhé od adresy 0100H. Když takovéto dva obrazy paměti porovnáme, budou se právě ty byty, které se v obou obrazech liší, měnit podle toho, od které stránky paměti bude posloupnost modulů CCP+BDOS+BIOS uložena.

    Nyní již můžeme rozebrat výše uvedený submitovský soubor a pomocí něj vysvětlit postup generování.

    Zopakujme si:

    Celý popsaný způsob má jednoduchou myšlenku:

    1. Vytvoříme obraz operačního systému, který je možno uložit od stránky 0 (příkazy 1 až 23).

    2. Vytvoříme obraz operačního systému, který je možno uložit od stránky 1, t.j. o 100H bytů posunutý oproti prvnímu (příkazy 24 až 42).

    3. Oba obrazy porovnáme a k obrazu od stránky 0 přidáme bitovou mapu, udávající, které byty se při posunutí o stránku paměti změní. (Jak se změní? - K obsahu indikovaného bytu se připočte číslo stránky, na které se tento byte nachází). (Příkazy 43 a 44)

    4. K obrazu systému vytvořeného v bodě iii) přidáme program zjišťující, které byty a jak (podle zadaného parametru) je třeba změnit a změní je.

    Celý postup generování (generace) je zdlouhavý. Pro jeho urychlení a zmechanizování byl vytvořen submitovský příkaz GENER.SUB. Výsledkem generování je ale operátorský příkaz MOVOS, pomocí kterého během několika sekund, zadáním jediného parametru, umíme připravit verzi MIKROSu pro daný rozsah paměti.

    V následujících odstavcích popíšeme podrobněji programy GENHEX a GENMOD. Práce programu MIKMOV (má smysl jenom ve spojení s vytvořeným MIKROS.PRL) byla vlastně popsána v kapitole 1 při popisu práce MOVOS.



    1. PŘÍKAZ GENHEX
    2. Dříve, než se budeme zabývat příkazem GENHEX, seznámíme se s tzv. hexadecimálním formátem.

      Základní jednotkou tohoto formátu jsou tzv. recordy, které mají následující tvar:

      : DN UKAD TP B1 B2 ... BN CS CR LF , kde

      • Každý record začíná dvojtečkou.

      • Za dvojtečkou následuje délka recordu - DN (počet bytů recordu) uložená jako dvě hexadecimální cifry. MIKROS používá maximální délku recordu 1CH (t.j. 28 dekadicky).

      • Za délkou recordu je uvedena ukládací adresa prvního bytu recor du - UKAD. Tato ukládací adresa je reprezentovaná 4 hexadecimálními ciframi.

      • Následuje tzv. typ rekordu - TP (2 hexadecimální cifry) určující, jsou-li obsahem recordu datové byty, anebo jiná informace. Typ 00 určuje, že následuje informace ukládaná do paměti - datové byty, typ 01 označuje konec celého záznamu.

      • B1 až BN jsou byty, které tvoří vlastní informační obsah recordu. Jejich počet byl definovaný v bytu DN. První byte z této posloupnosti (B1) se ukládá na adresu určenou položkou UKAD, druhý byte (B2) na následující, t.j. o 1 adresu výše atd., až byte BN na adresu UKAD+DN-1. Každý takovýto byte je v recordu zaznamenaný jako dvě hexadecimální cifry.

      • Za posledním bytem BN následuje kontrolní součet - CS, což je vlastně byte s takovým obsahem,aby součet mod 256 bytů DN až CS (včetně) byl nulový.

      • Znaky CR a LF jsou carriage return (kod 0DH) a line feed (kód 0AH).

      Celý hexadecimální soubor je tvořen posloupností takovýchto recordu.


      Příkaz GENHEX dělá konverzi souboru, v kterém je informace uložena v binárním formátu (t.j. z tvaru v jakém se ukládá program do paměti), do právě popsaného formátu hexadecimálního.

      Syntax příkazu:

      GENHEX <jméno souboru> <ukládací adresa>

      <jméno souboru>
      je jméno programu, který chceme zkonvertovat do hexadecimálního tvaru. <jméno souboru>, jak víme, může mít v MIKROSu 2 části - vlastní jméno a verzi. Příkladem jsou SLAP.COM, PROG.MAC atd. Příkaz GENHEX nevyžaduje udání verze ve <jméně souboru>. Jestliže uvedeme jakoukoliv verzi, popřípadě ji vůbec neudáme, vždy hledá konvertovaný program pod verzí.COM a výsledný soubor (v hexadecimálním tvaru) ukládá s verzi .HEX. Jestliže už na disku existuje soubor se stejným jménem i verzí, tak jej zruší. Když se vrátíme v submitovském souboru GENER.SUB k příkazu 36 (GENHEX MXKROS0), zjistíme, že tento příkaz vezme binární soubor MIKROS0.COM a vytvoří hexadecimální soubor MIKROS0.HEX. V příkaze stačilo uvést jen samostatné jméno souboru.

      <ukládací adresa>
      je volitelný parametr. Jestliže jej nezadáme, vytváří se hexadecimální soubor, který má ukládací adresu 0000H, t.j. ukládací adresa prvního recordu je nula. Tento parametr se zadává jako hexadecimální cifry. V příkaze 36 submitovského souboru GENER není ukládací adresa uvedená, znamená to, že vytvářený hexadecimální kod (soubor MXKROS0.HEX) bude mít ukládací adresu 0000H, naproti tomu v příkaze 37 je explicitně uvedený druhý parametr (100), t.j. vytvářený hexadecimální soubor (MIKROS1.HEX) bude mít ukládací adresu 0100H.


      Vypisované zprávy:

      HEX FILE WRITTEN
      Tímto výpisem oznamuje program GENHEX, že zapsal vytvořený hexadecimální soubor, a že končí svou činnost.

      BAD HEX DIGIT IN BASE
      Jestliže v<ukládací adrese> je udaná nehexadecimální cifra, vypíše se uvedená zpráva a končí svou činnost.

      NO INPUT FILE PRESENT
      V případě, že soubor s jménem udaným jako první parametr příkazu, t.j. soubor jméno .COM není na specifikovaném disku, končí GENHEX svou činnost uvedeným výpisem.

      DISK IS FULL
      Na disku není místo pro vytvářený hexadecimální soubor - disk je plný. GENHEX tímto končí.

      NO.DIRECTORY SPACE
      V adresáři standardního systému je místo pro 64 položek (souborů). Jakmile jsou všechny položky adresáře obsazeny (v adresáři už není místo pro zapsání informací o vytvářeném hexadecimálním souboru), GENHEX končí.

      DISK READ ERROR
      Tato zpráva se vyskytne, jestliže došlo k chybě při pokusu o čtení z disku. Tato chyba není bezprostředně způsobena technickými prostředky, např. poškozeným diskem - to by hlásil BDOS výpisem BDOS ERROR ON X: BAD SECTOR, ale jedná se o chybu, kterou zjistil systém ovládání souborů (během čtení byl vyměněn pružný disk apod.).

      CANNOT CLOSE FILE
      Tady došlo k chybě při pokusu o uzavření vytvářeného hexadecimálního souboru. Podobně jako v předcházejícím případě nebyla chyba bezprostředně způsobena technickými prostředky.



    3. PŘÍKAZ GENMOD
    4. Příkaz GENMOD porovnává dva obrazy paměti uložené v hexadecimálním tvaru za sebou v jediném souboru a vytváří výstupní soubor, který obsahuje první z obou obrazů paměti doplněný o tzv. relokační mapu.

      Syntax příkazu;

      GENMOD <vstupní soubor> <výstupní soubor>

      <vstupní soubor>
      je jméno hexadecimálního souboru, který obsahuje dva hexadecimální obrazy toho samého programu. Jeden obraz tvoří program přeložený od adresy 0000H, druhý od adresy 0100H. <vstupní soubor> pro GENMOD získáme z těchto obrazů jejich spojením pomocí programu PIP. Příklad: Označíme-li. SOUBOR0.HEX hexadecimální soubor programu přeloženého od adresy 0000H a S0UB0R1.HEX hexadecimální soubor téhož programu přeloženého od adresy 0100H, pak pomocí příkazu: PIP SOUBOR.HEX=SOUBOR0.HEX,SOUBOR1.HEX získáme hexadecimální soubor SOUBOR.HEX, který je spojením souborů SOUBOR0.HEX a SOUBOR1.HEX v uvedeném pořadí a slouží jako <vstupní soubor> pro program GENHEX. Je důležité, aby se každé dva odpovídající byty obou dvou obrazů lišily maximálně o jednu. (Vyplývá to z použité metody popsané v kapitole 3). Jestliže tomu tak není, udělali jsme při vytváření <vstupního souboru> pro GENMOD chybu, a ten nám ji oznámí (viz Vypisované zprávy).

      <výstupní soubor>
      obsahuje obraz programu přeloženého od adresy 0000H a relokační mapu. Struktura tohoto výstupního souboru je následující:

      adresaobsah
      0000 až 000000
      0001 až 0002Délka programu
      0003 až 00FF00
      0100 až 100+(délka programu - 1)   Vlastní program
      0100 + Délka programuZač. rel. mapy

      V uvedeném tvaru je program schopný relokace. Soubor obsahuje všechny informace potřebné pro umístění vlastního programu od začátku jakékoliv stránky paměti a pro jeho úpravu do "spustitelného tvaru". Z tohoto důvodu obvykle označujeme výstupní soubor programu GENMOD verzí .PRL (page relocatable). V případě, že na disku existuje soubor se stejným jménem jako <výstupní soubor>, GENMOD jej vymaže.


      Jak vypadá vlastní relokační mapa? Je to posloupnost bitů, přičemž každý bit popisuje jeden byte samotného souboru. Jestliže se daný byte při relokaci mění, je hodnota odpovídajícího bitu "1", když se byte nemění, je hodnota tohoto bitu "0". Osmice relokačních bitů tvoří jeden byte, přičemž vyšší bit v bytu odpovídá nižšímu bytu programu. Tedy 7. bit popisuje nultý byte, 6. bit prvý byte, až nultý bit 7. byte programu. Osmý byte programu popisuje 7. bit následujícího bytu relokační mapy atd.


      Vypisované zprávy:

      Jakmile generování proběhne bez chyb, vypíši se 4 následující zprávy:

      REL MOD END <adresa>
      REL MOD SIZE <délka>
      ABS MOD SIZE <adresa>
      MODULE CONSTRUCTED

      <adresa> ve zprávě REL MOD END udává délku samotného programu. Tato délka se ukládá do 1. a 2. bytu popsaného 100H bytového úseku na začátku vytvořeného modulu, tzv. hlavičky, <délka> ve zprávě REL MOD SIZE udává délku modulu včetně relokační mapy (je to délka programu + délka relokační mapy). V paměti se celý výstupní soubor připraví od adresy 0800H a <adresa> ve zprávě ABS MOD SIZE udává absolutní adresu konce tohoto souboru v paměti.


      Výpisem

      MISSING FILE NAME

      oznamuje GENMOD, že nebylo udáno jméno vstupního, nebo výstupního souboru. Po tomto výpise jeho činnost končí.


      Když zadaný vstupní soubor na disku není, oznámí to GENMOD výpisem:

      INPUT FILE NOT PRESENT

      a končí.


      Jestliže některý znak ve vstupním souboru není hexadecimální, je to chyba, kterou GENMOD oznámí výpisem

      BAD HEX DIGIT

      a končí.


      Vstupní soubor obsahuje 2 obrazy toho samého programu, které jsou proti sobě posunuty právě o 100H bytů. To znamená, že dva odpovídající si byty v obou obrazech se mohou lišit nejvíc o jedničku. Jestliže tomu tak není, je to chyba, kterou GENMOD oznámí výpisem:

      RELOC ERROR AT <adresa>

      kde <adresa> udává pozici obou porovnávaných bytů od začátku obrazu (t.j. jejich relativní adresu). Po tomto výpise GENMOD končí.


      Není-li již místo na disku, nebo v adresáři, nemůže GENMOD zapsat výstupní soubor na disk, což nám oznámí výpisem:

      CANNOT CREATE OUTPUT FILE

      a skončí.



  9. VSTUPNĚ - VÝSTUPNÍ MODUL - BIOS
  10. Ve vstupně - výstupním modulu (BIOSu.) jsou soustředěny všechny části operačního systému, které jsou závislé na technických prostředcích, na kterých je MIKROS implementovaný. Obsahuje drivery jednotlivých přídavných zařízení a všechny parametry pro implementaci systému ovládání souborů na různých typech disků. Implementovat BIOS na konkrétním mikropočítači v konečném důsledku znamená napsat BIOS pro tento počítač, popřípadě upravit BIOS dodávaný.



    1. VSTUPNÍ VEKTOR BIOSu
    2. Mezi jádrem operačního systému (BDOSem) a BlOSem existuje jednoznačně definovaný interface (propojení). BDOS vstupuje do BIOSu jenom přes toto propojení, které je realizováno posloupností skokových instrukcí JMP na jednotlivé drivery (tzv. vstupní vektor BIOSu). Potřebné parametry odevzdává v registru C, popřípadě BC a naopak parametry z BIOSu získává v registru A, popřípadě HL. Pro zajištění návratu do BDOSu musí všechny drivery (služby BIOSu) kromě BOOT a WBOOT (viz dále) končit instrukcí RET. Struktura vstupního vektoru BIOSu je následující:

      JMP BOOTVstupní bod do BIOSu po počátečním zavedení operačního systému z disku A do paměti.
      JMP WBOOTZajistí znovuzavedení modulů CCP a BDOS do paměti. Realizuje službu č. 0 (viz OS MIKROS Příručka programátora).
      JMP CONSTZjistí připravenost znaku na konzole.
      JMP CONINČti znak z konzoly.
      JMP CONOUT   Vypiš znak na konzolu.
      JMP LISTVypiš znak na tiskárně.
      JMP PUNCHVyděruj znak do děrné pásky.
      JMP READERPřečti znak z děrné pásky.
      JMP HOMENastav hlavu na nultou stopu vybraného disku.
      JMP SELDSKVyber diskovou jednotku.
      JMP SETTRKNastav číslo stopy.
      JMP SETSECNastav číslo sektoru.
      JMP SETDMANastav DMA adresu.
      JMP READČti nastavený sektor.
      JMP WRITEZapiš na nastavený sektor.
      JMP LISTSTZjisti připravenost tiskárny.
      JMP SECTRNPřeveď logické číslo stopy na fyzické.

      Adresy, uvedené při jednotlivých skocích, jsou adresy podprogramů, které realizují požadované funkce. Je věcí implementátora systému, jakým způsobem tyto funkce zajistí. Důležité pouze je, aby podprogramy BIOSu splnily následující požadavky (konfrontujte prosím jednotlivé podprogramy s listingem BIOSu):


      BOOT
      Vstupní bod BlOSu, na který odevzdá řízení zaváděcí program (viz BOOT.MAC na distribuční disketě). Při vstupu na BOOT je už celý operační systém na svém místě v paměti a úkolem této části BIOSu je inicializovat požadované přerušovací rutiny, nastavit přes SETDMA adresu DMA na 0080H, inicializovat vstupní body v oblasti systémových parametrů, t.j. na adresu 0000H zapsat instrukci skoku na položku vstupního vektoru JMP WBOOT, na adresu 0005H zapsat instrukci skoku do BDOSu (její adresní část bude: adresa začátku BIOSu - E00H + 6) a na adresu 0004H zapsat 0 (indikace diskové jednotky A:). Potom se odevzdává řízení na CCP skokovou instrukcí na adresu: adresa začátku BIOSu - 1600H.

      WBOOT
      Na tuto položku vstupního vektoru je odevzdáváno řízení při volání služby č. 0 (reset systému). Na adrese 0000H v oblasti systémových parametrů je skoková instrukce právě tam. Úkolem WBOOTu je opětovné zavedení modulů CCP a BDOS z disku do paměti na jejich určená místa a provedení všech funkcí, které dělá BOOT. Jediný rozdíl mezi BOOTem a WBOOTem je v tom, že BOOT už má CCP a BDOS v paměti.

      CONIN
      Podprogram přečte ze vstupu konzoly znak do registru A a nuluje jeho sedmý bit. Podprogram čeká, dokud na konzole není znak k dispozici.

      CONOUT
      Podprogram zabezpečuje výpis znaku z registru C na konzolu.

      LIST
      Znak z registru C se vypíše na tiskárně.

      PUNCH
      Znak z registru C se vyděruje do děrné pásky.

      READER
      Ze snímače děrné pásky se přečte znak do registru A.

      HOME
      Na vybraném disku nastaví hlavu na nultou stopu. Všimněme si listingu, že tato funkce nemusí vyvolat odpovídající fyzickou činnost disku. V našem případě stačí, když v parametrovém bloku pro kanálový program nastavíme příslušný parametr (číslo stopy).

      SELDSK
      Pro následující diskové operace vybere disk, jehož číslo je v registru C (0 pro jednotku A, 1 pro B atd.). Podprogram vrátí v registrech HL adresu 16. bytové oblasti - hlavičky bloku diskových parametrů, patřící vybranému disku. Hodnotu HL = 0 vrátí při pokuse vybrat neimplementovaný disk. Jako v předcházejícím případě podprogram může udělat jenom zápis do parametrového bloku kanálového programu.

      SETTRK
      V registrech BC se zadává číslo stopy, na které se má udělat následující disková operace. Podprogram může opět nastavit tuto stopu v parametrovém bloku kanálového programu.

      SETSEC
      V registrech BC se zadává číslo sektoru, s kterým se má udělat následující disková operace. Podprogram opět může nastavit tento sektor v parametrovém bloku kanálového programu.

      SETDMA
      V registrech BC se odevzdává počáteční adresa oblasti paměti (v terminologii MIKROSu - DMA adresa), pro následující diskovou operaci. Na této adrese, kterou SETDMA nastaví, se budou dělat všechny diskové operace až do doby, dokud tuto adresu podprogram SETDMA nezmění. V tomto případě opět platí, že tento parametr se nastaví v parametrovém bloku.

      READ
      Podprogram čte jeden záznam o délce 128 bytů z vybraného disku, nastavené stopy a nastaveného sektoru na nastavenou adresu DMA. V případě úspěšné diskové operace vrátí v registru A nulu, v opačném případě vrátí 1. BDOS nerozlišuje druhy chyb podle jejich kódu, proto READ vrací jednotný chybový kód. Záznam o délce 128 bytů tvoří tzv. logický sektor MIKROSu. Jestliže je pro konkrétní mikropočítačový systém výhodnější použít fyzický záznam o jiné délce (násobek 128-mi), musí být vlastní fyzický přenos dělán přes buffer a logické sektory postupně vybírané z tohoto bufferu tak, aby při výstupu z podprogramu READ měl BDOS na adrese DMA k dispozici jen svůj logický sektor.

      WRITE
      Podprogram zapíše jeden záznam o délce 128 bytů (logický sektor) na nastavený sektor na nastavené stopě na vybraném disku z nastavené DMA adresy, Jestliže fyzický sektor použitých, disků nemá délku 128, ale je jeho násobkem, musí se BDOSem odevzdané logické sektory sestavovat v bufferu do fyzického sektoru, a ten po jeho naplnění zapsat. Pro tento účel poskytuje BDOS při vstupu do podprogramu WRITE v registru C následující informace:
      0 - normální zápis sektoru
      1 - zápis do adresáře
      2 - zápis 1, sektoru nového alokačního bloku
      V případě úspěšné diskové operace vrátí podprogram VRITE v registru A nulu, v opačném případě vrátí 1.

      LISTST
      V registru A vrátí hodnotu 0, není-li tiskárna připravena převzít vypisovaný znak, v případě její připravenosti vrátí hodnotu FFH,

      SECTRN
      Podprogram zabezpečuje převod logického čísla sektoru na fyzické. Vstupními parametry jsou logické číslo sektoru v registrech BC a adresa převodní tabulky v registrech DE, Logické číslo sektoru je vlastně indexem v této tabulce. Podprogram poskytuje v registrech HL odpovídající fyzické číslo sektoru, MIKROS totiž nemusí při zápisu na disk postupovat sekvenčně, ale může po stopě "skákat" z důvodů minimalizace přístupové doby. Dosáhne tohoto tak, že přečísluje sektory každé stopy. Je-li parametr tohoto přečíslení rovný například 6, vypadá posloupnost logicky po sobě následujících sektorů takto: 1, 7, 13, 19, 25, 5, 11, 17 atd. Logickému číslu 0 potom odpovídá fyzický sektor 1, číslu 1 odpovídá sektor 7, číslu 2 sektor 13 atd. Z důvodu kompatibility mezi jednotlivými systémy doporučujeme používat právě parametr 6.



    3. PARAMETRY DISKŮ
    4. BIOS obsahuje tabulky, které popisují parametry implementovaných disků, jakož i parametry použitého systému ovládání souborů, které se mohou měnit. Konfrontujte prosím následující výklad s listingem BIOSu.

      Každé diskové jednotce přísluší 16 bytová oblast, kterou nazýváme hlavička bloku diskových parametrů. Tento blok obsahuje osm dvojbytových parametrů a implementátor systému musí dodržet jeho strukturu, která je následující:

      XLT 0000 0000 0000 DIRBUF DPB CSV ALV


      Význam každého z těchto parametrů:

      XLT
      Adresa převodové tabulky mezi logickým a fyzickým číslem sektoru. V případě, že logická čísla odpovídají fyzickým číslům sektorů, obsahuje XLT nulu. Různé diskové jednotky se mohou odvolávat na tutéž převodovou tabulku, jestliže mají parametr přečíslení stejný.

      0000
      Za XLT následují 3 slova (6 bytů) vyhrazená pro výpočty, které provádí systém ovládání souborů, Na jejich počáteční hodnotě nezáleží.

      DIRBUF
      Adresa 128 bytového bufferu pro operace s adresářem. Všechny implementované diskové jednotky využívají stejný buffer.

      DPB
      Adresa bloku diskových parametrů dané jednotky. Diskové jednotky, které mají stejné parametry, se adresou DPB odvolávají na tentýž blok diskových parametrů.

      CSV
      Adresa oblasti, do které BDOS ukládá vypočítané kontrolní součty jednotlivých sektorů adresáře. Pro každou diskovou jednotku musí být rezervována samostatná oblast.

      ALV
      Adresa tzv. alokačního vektoru, v kterém si BDOS registruje obsazenost disku. Pro každou diskovou jednotku musí být rezervovaná samostatná oblast pro alokační vektor.


      Tyto hlavičky bloku diskových parametrů jsou v BIOSu seřazeny za sebou, počínaje hlavičkou nulté jednotky a konče hlavičkou poslední implamentováné jednotky. Jak bylo uvedeno v popisu podprogramu SELDSK, tento podprogram vrátí v registrech HL adresu popsané hlavičky toho disku, jehož číslo bylo při vstupu do tohoto podprogramu uvedeno v registru C.

      Blok diskových parametrů, jehož adresa je uvedená v položce DPB, už obsahuje, konkrétní parametry implementovaných disků a má následující strukturu, kterou je nutno dodržet:

      SPT 2 byty
      Počet sektorů na stopě.

      BSH 1 byte
      Prostor na disku je souborům přidělovaný po alokačních blocích. Parametr BSH udává délku alokačního bloku ve formě 2**BSH = počet sektorů alokačního bloku (pro BSH = 3 je alokační blok dlouhý 8 sektorů). Délka alokačního bloku souvisí s kapacitou disku. Je-li maximální číslo alokačního bloku tak velké, že na jeho uložení jsou potřebné 2 byty, potom položka adresáře může popisovat pouze 8 alokačních bloků. Přitom položka adresáře nesmí popisovat menší jak 16K bytovou část souboru. To je ale nemožné, jestliže délka alokačního bloku je menší než 2K bytů.

      BLM 1 byte
      Maska alokačního bloku. Je to počet alokačních bloků - 1. (Pro BSH = 3 je BLM = 7.)

      EXM 1 byte
      Maska pro část (extension) souboru. MIKROS logicky rozděluje soubor na 16K bytové části, tzv. extension. Souvisí to s položkou adresáře. Jak víme z příručky "0S MIKROS Príručka programátora", obsahuje položka adresáře 16 bytů, v kterých se zaznamenávají čísla alokačních bloků obsazených souborem. Jestliže má alokační blok délku 8 sektorů, t.j. 1K, zaplněná položka adresáře popisuje právě 16K bytovou část souboru, t.j. 1 extension. V případě, že zvolíme alokační bloky o délce 16 sektorů, t.j. 2K bytů, vejde se do položky adresáře 16 * 2K = 32K bytů, což jsou 2 extensiony. Hodnota EXM + 1 udává právě počet 16K bytových částí souboru, které je možno popsat v jedné položce adresáře. Jak vidíme, souvisí EXM s délkou alokačního bloku (Pro BSH = 3 je EXM = 0) .

      DSM 2 byty
      Určuje kapacitu diskové jednotky v počtu alokačních bloků. Alokační bloky se číslují od 0 a DSM je maximální číslo alokačního bloku, který se ještě vejde na disk.

      DRM 2 byty
      Udává počet 32 bytových položek, rezervovaných pro adresář.

      AL0,AL1 2 byty
      Tyto 2 jednobytové položky představují dva byty alokačního vektoru. Jejich obsahem inicializuje BDOS mapu obsazenosti disků (alokační vektor). Každý bit těchto bytů popisuje obsazenost příslušného alokačního bloku. Hodnoty AL0 a AL1 souvisí s položkami DRM a BSH. Nechť alokační blok má délku 8 sektorů, t.j. 1K a pro adresář jsme rezervovali 64 32 bytových položek, t.j. 2K byty. Potom adresář zabere 2 alokační bloky. Dva bloky tedy musíme v alokační mapě indikovat jako obsazené. To docílíme tak, že nastavíme sedmý a šestý bit AL0 na jedničku a všechny ostatní bity nulujeme. AL0 a AL1 budou tedy inicializované hodnotami C0H a 0H.

      CKS 2 byty
      Udává počet sektorů adresáře, z kterých má BDOS dělat kontrolní součet.

      OFF 2 byty
      Počet stop na disku, které jsou rezervované pro operační systém. Jestliže udáme 2 stopy, nebude systém ovládání souborů využívat nultou a prvou stopu a bude předpokládat, že od druhé stopy začíná adresář.



    Příloha

    Obsah distribuční diskety OS MIKROS

    STAT.COM
    PIP.COM
    LOAD.COM
    DUMP.COM
    SLAP.COM
    SUBMIT.COM
    XSUB.COM
    ED.COM
    M80.COM
    CREF8.0.COM
    L80.COM
    LIB.COM
    FORMAT.COM
    SYSGEN.COM
    MOVOS.COM
    BOOT0.MAC
    B00T1 .MAC
    BIOS.MAC
    GENHEX.COM
    GENMOD.COM
    MIKSYS0.HEX
    MIKSYS1.HEX
    MIKMOV.COM
    GENER. SUB
    






MTZ O 21 85 R 47121







Kancelářské stroje, k. ú. o.

VÚVTVÝSKUMNÝ ÚSTAV
VÝPOČTOVEJ TECHNIKY

datasystém



ÚVOD | Novinky | 8 Bitů | Příslušenství | Drobnosti | TTL | Kontakt


Drobnosti / OS MIKROS / Příručka pro implementaci



SAPI.cz - web o československých osmibitech, zejména SAPI-1. Provozuje EC1045 od roku 2011
Za korekce češtiny dekuji: MELSOFTovi, Silliconovi, Martinu Lukáškovi a NOSTALCOMPovi

Když začínám blbnout z 8bitů tak se chodím léčit mezi otaku.
Animefest.cz