<< Zpět na domovskou stránku

česky: , English:

Litos8

Litos8 je experimentální operační systém sloužící k seznámení s problematikou tvorby operačních systémů. Pro praktické využití není dostatečně vybavený ani testovaný a neměl by být používán!

Litos8 by měl být zkoušen pouze v emulátoru nebo tam, kde nehrozí poškození dat na disku!

Litos8 je jakousi obdobou operačního systému CP/M. Využívá sice 16bitovou instrukční sadu procesoru 8086, ale je omezen na 64 KB paměti RAM. Je programován v assembleru (překladač NASM). Z důvodu omezení na prvních 64 KB paměti RAM nevyužívá segmentové registry. Program se zavádí do paměti od adresy 0000:1000h a má k dispozici 27 KB paměti. S jádrem systému komunikuje pomocí tabulky skoků (k dispozici je rozsáhlá knihovna přibližně 440 systémových funkcí).

Litos8 podporuje floppy disky se standardním formátem disket (např. v mechanice 1.44 MB disketa 1.44 MB, formát FAT12) a hard disky IDE s LBA rozšířením. Partition může být ve formátu FAT12 nebo FAT16 (o velikosti max. 2 GB). Systémové disky mohou mít označení A: až P:, přičemž disk P: je vyhrazen pro RAM disk, který používá zbývající nevyužitou kapacitu paměti RAM (typicky 580 KB). Fyzická zařízení (disky, COM a LPT porty, displej) mohou být otevřena a používána jako soubory.

Vývoj systému Litos8 byl ukončen ve stavu v jakém je, případné další chyby nebudou opravovány.

 

Obraz paměti systému Litos8

0000h .. 03FFh: tabulka vektorů INT
0400h .. 05FFh: interní data BIOS
0600h .. 0BFFh: zásobník
0C00h .. 0FFFh: tabulka adres systémových funkcí
1000h .. 74FFh: uživatelský program a data
7500h .. FFFFh: jádro systému

 

Překlad a zkoušení

Download systému Litos8 (3 MB), doporučeno prostředí Windows a program FAR (souborový manažer - na rozdíl od jiných má konzolový výstup). Systém rozbalte do složky C:\Litos8 (v případě jiné cesty je třeba vybrat obraz disku v nastavení VirtualBoxu). Systém je v balíku již přeložen, lze znovu přeložit pomocí C.BAT (překladač NASM je součástí balíku). Pomocí D.BAT lze překlad vyčistit. Pomocí E.BAT lze systém spustit v emulátoru Bochs (součástí balíku) nebo pomocí EE.BAT spustit v emulátoru VirtualBox (je nutná jeho instalace).

Programem INSTFLOP.COM lze systém uložit na disketu 1.44 MB v mechanice A:. Bootovací CD je možné vytvořit např. pomocí Nero (jako spouštěcí obraz vybrat LITOS8.IMA s emulací diskety 1.44 MB).

Při spouštění Litos8 v reálném počítači odpojte harddisky obsahující důležitá data! Systém není odladěný a je pravděpodobné že obsahuje chyby (obzvláště v obsluze souborů), které mohou poškodit data na discích. Proto se doporučuje zkoušení pouze v emulátoru. K dispozici je případně ochranný přepínač při překladu PROTECT (v KERNEL.ASM), který zakazuje zápis na hard disk, avšak nezabrání nepředvídatelným chybám při havárii.

Známá neodladěná chyba: V emulátoru VirtualBox je chyba při spouštění více programů za sebou (větších než 512 B) projevujících se tak, jakoby při spouštění zůstal v paměti obraz původního programu (do 512 B), ale při testu těsně před spuštěním (test záhlaví programu a CRC) tam přitom je nový program, tedy jakási neurčitost načtení sektoru z diskety. Nepomáhá ani nové načtení systému. Tato chyba se nevyskytuje v reálném PC ani v emulátoru Bochs.

 

Ovládání

Litos8 podporuje množinu českých národních znaků KEYBCS2 (Kamenických) - důvodem výběru tohoto kódu je plná kompatibilita znaků pro zobrazení rámečků tabulek. Přepínání klávesnice a displeje mezi českou a anglickou variantou je možné klávesou Scroll Lock (v případě zapnuté češtiny svítí kontrolka Scroll Lock) - lze vyzkoušet po zobrazení tabulky znaků programem ASCII.

Litos8 se ovládá přes příkazový řádek. K dispozici je několik vestavěných příkazů:

VER - zobrazení verze systému.

DIR [maska] - výpis obsahu adresáře. Lze zadat plnou nebo zkrácenou cestu, lze použít masku souborů se znaky * (=jakékoliv následující znaky) a ? (=jakýkoliv 1 znak).

CD [cesta] - zobrazení nebo změna aktivního adresáře. Lze uvést plnou nebo zkrácenou cestu (podle konvencí DOS). Příkaz CD.. je vynoření o úroveň výše. V Litos8 nemá každý disk svůj aktivní adresář (jako v DOS), ale je jeden globální aktivní adresář. Proto změna disku vybere současně root adresář (např. "CD C:" má stejný význam jako "CD C:\" nebo jako "C:").

MD jméno - vytvoření adresáře.

RD jméno - zrušení prázdného adresáře.

DEL jméno - zrušení souboru.

REN staré nové - přejmenování souboru nebo adresáře.

MOVE staré nové - přesun souboru nebo adresáře. Od REN se liší tím, že namísto změny jména v adresářové položce vytvoří novou adresářovou položku a přesune obsah, tedy změní pořadí položek v adresáři.

FREE - zobrazení volného a obsazeného místa aktivního disku.

TYPE soubor - výpis obsahu textového souboru.

X: - změna aktivního disku (A: až P:). Změnou disku se současně nastaví root adresář disku jako aktivní adresář ("C:" má stejný význam jako "CD C:\").

program - spuštění programu ve formátu Litos8, přípona je automaticky L8X.

 

Ukázkové programy a screenshoty

Litos8 po startu a zadání příkazu DIR:

ASCII - zobrazení tabulky znaků. Klávesou Scroll Lock lze přepínat (displej i klávesnici) mezi kódy IBM (anglicky) nebo KEYBCS2 (čeština Kamenických). V grafických režimech je nutné nové spuštění programu, aby byla změna kódu znaků patrná.

CALC - kalkulátor. Výpočty probíhají s pevnou desetinnou tečkou, s přesností 74 číslic pro celou část a 74 číslic pro desetinnou část. Na displeji se zobrazí max. 30 číslic. K dispozici jsou 4 základní operace, odmocnina, převrácená hodnota a paměťový registr. Volitelný počet zobrazených desetinných míst a oddělení řádů tisíců. Aktuální stav se při ukončení uchovává do konfiguračního souboru.

CLOCK - hodiny. Zobrazí aktuální datum a čas. Datum a čas je možné změnit. Upozornění - při nastavení na příliš vysoké datum (rok 2106 a výše) v reálném PC se systém Windows nemusí již nastartovat, je nutná oprava data do běžných mezí.

COMINFO - zobrazení informací o portech COM a LPT.

CPUINFO - zobrazení informací o procesoru. Litos8 má poměrně přesné určení rychlosti procesoru.

DISKINFO - zobrazení informací o fyzických a logických discích.

MEMINFO - zobrazení informací o paměti, segmenty jádra systému, volná paměť.

VGAPAL - zobrazení standardních palet VGA. Litos8 může použít integrovanou tabulku uniformních palet VGA s rozložením: 16 standardních barev EGA, 16 odstínů šedé, 8 kontrastních barev RGB a 216 uniformních barev, kde každá složka RGB má 6 odstínů (tedy uniformní paleta = 40 + B*6/256 + G*6/256*6 + R*6/256*6*6).

VMODE číslo - nastavení videomódu (číslo 0 až 19). Litos8 podporuje 20 základních videomódů BIOS - nastavení a detekce parametrů, zobrazení textů, rámečků, scrolování. V grafických režimech se použijí integrované fonty 8 x 8 bodů v kódu IBM nebo KEYBCS2 (podle nastavení Scroll Lock). Při startu systému se přednastaví videomód číslo 3.

0 - text 40 x 25 gray
1 - text 40 x 25 color
2 - text 80 x 25 gray
3 - text 80 x 25 color
4 - graphics 320 x 200, 4 colors
5 - graphics 320 x 200, 4 gray
6 - graphics 640 x 200, 2
7 - text 80 x 25, black&white
13 - graphics 320 x 200, 16 colors
14 - graphics 640 x 200, 16 colors
15 - graphics 640 x 350, black&white
16 - graphics 640 x 350, 16 colors
17 - graphics 640 x 480, 2 colors
18 - graphics 640 x 480, 16 colors
19 - graphics 320 x 200, 256 colors

 

Programové rozhraní

Programy v systému Litos8 se zavádí od adresy 1000h (segment CS=0). Jsou psány v assembleru 8086 (překladač NASM). Uvedením %include "APPS.INC" na začátku programu se importují definice funkcí a struktur systému a také se vytvoří 16bajtová hlavička programu. Program startuje ihned za hlavičkou. Na konci programu musí být uveden label ExeEnd:, který používá hlavička ke zjištění velikosti programu. Program má k dispozici asi 27 KB paměti, ale o přidělení paměti musí žádat systém (funkce MemAlloc).

Při volání systémových funkcí je nutné dodržovat, že CS=DS=ES=0 a příznak směru vynulovaný CLD. Pokud jsou tato nastavení programem změněna, je nutné je vrátit zpět.

Aplikační rozhraní (systémové a knihovní funkce):

BIOSDISK - fyzický disk BIOS
CMOS - paměť CMOS
COM - sériové porty COM
CPU - info o procesoru
DEV - systémová zařízení
DISP - ovladač displeje
DISPCON - ovladač konzole displeje
DISPFRAM - zobrazení rámečku
FILE - soubory
FLOAT - aritmetika s plovoucí čárkou
INTNUM - celočíselná aritmetika
KEY - ovladač klávesnice
LPT - paralelní porty LPT
MEMORY - manažer paměti
RANDOM - generátor náhody
SYSDISK - logické (systémové) disky
SYSTEM - systémové funkce
TEXT - textové řetězce
TIME - datum a čas
TIMER - systémový časovač

Download systému Litos8 (3 MB)


Jste [CNW:Counter] návštěvníkem těchto stránek.

<< Zpět na domovskou stránku