Oman "käyttöjärjestelmän" tekeminen

Muu yhteisön välinen keskustelu.
Post Reply
naputtelija
Devoted Member
Posts: 718
Joined: Wed Nov 03, 2010 7:56 pm
Location: Joku piste pohjoisessa.

Oman "käyttöjärjestelmän" tekeminen

Post by naputtelija »

Käyttöjärjestelmän teko Episodi 1: Bootloader

Vaikka tämä nyt ei mitenkään coolbasiciin liity, ajattelin, että hyvin monelle aloittelevalle assembly-ohjelmoijalle (kuten minulle) voisi olla tästä tutoriaalista hyötyä.

Kyseessä on siis oman käyttöjärjestelmän koodaaminen ihan perusteista lähtien käyttäen assemblyä ja C-kieltä. Pyrin tässä oppaassa antamaan ohjeet sekä windowsille että linuxille, mutta suosittelen kuitenkin käyttämään linuxia siksi, että sillä on huomattavasti helpompi asentaa tarvittavat ohjelmat jos vain terminaali on hallussa. Netistä kyllä löytyy kohtuullisen helposti muitakin oppaita aiheesta, mutta ne ovat usein englanniksi ja käsittelevät melko vanhoja ohjelmia, joita ei vättämättä ole enää saatavilla tai toimivat eri lailla nykyään. (Hyviä esimerkkejä ovat qemu ja partcopy.exe) No niin, jaarittelu seis ja aloitetaan.
  • Tarvittavat laitteet/työkalut:
  • Tietokone, jossa on käyttöjärjestelmänä windows tai linux (tässä käytän ubuntua)
  • Nasm-assembler. Voidaan asentaa ubuntulle kirjoittamalla terminaaliin sudo apt-get install build-essential nasm
  • 3,5 tuuman tyhjä korppu ja sille asema tai:
  • Mikä tahansa virtuaalikone, joka tukee boottaamista virtuaaliselta korpulta. Itse käyttäisin ubuntulla qemua, mutta jostain syystä en saanut sitä toimimaan ja sivutkin näyttävät olevan kaatuneet.
Koodaaminen:

Tämä osio on kohtuullisen helppo, vaikka aikaisempaa kokemusta assembly-ohjelmoinnista ei olisikaan. Tässä koodaamme assemblyllä bootloaderin, eli 512 tavun (jep, luit oikein, se on noin lyhyt) mittaisen ohjelman, joka lataa tulevaisuudessa käyttöjärjestelmämme muun datan. Nyt kuitenkin laitamme sen vain tulostamaan klassisen tekstin Hello World, että saamme jotain boottaamaan.

Tässä vaiheessa kannattaa luoda oma kansio käyttöjärjestelmällesi. Kun olet luonut kansion haluamaasi paikkaan, tee tyhjä tiedosto nimellä boot.txt kansioosi. Avaa tiedosto ja kirjoita sinne seuraava koodi:

Code: Select all

BITS 16

org 0x7c00

Start: jmp loader

msg db "Hello, World!", 0

Print:

lodsb
or al, al
jz PrintDone
mov ah, 0eh
int 10h
jmp Print

PrintDone:

ret

loader:

xor ax, ax
mov ds, ax
mov es, ax
mov si, msg
Call Print

xor ax, ax
int 0x12

cli
hlt

times 510 - ($-$$) db 0

dw 0xAA55
Tarkastellaanpa koodia:

BITS 16 kertoo prosessorille että tämä koodi käyttää 16-bittisiä komentoja. Kaikki bootloaderit käyttävät vain niitä.
org 0x7c00 kertoo prosessorille, mihin muistiosoitteeseen ohjelma pitää asettaa. Bootloaderit käynnistyvät aina osoitteesta 0x7c00 eivätkä mistään muualta.

Start: jmp loader hyppää (jump) seuraavat koodirivit yli loader-kohtaan.

msg db "Hello, World!" kertoo kääntäjälle, että tässä kohtaa tiedostoa on msg-niminen kohta, joka sisältää dataa. Tämä on melkein kuin muuttuja.

Print: "funktio", joka käy läpi kaikki tavut tietyssä kohtaa ja tulostaa ne näytölle.
-lodsb lataa seuraavan tavun rekisteriin. Rekisterit ovat vähän niin kuin koneen sisäisiä muuttujia, joille voidaan tehdä laskutoimituksia.
-or al, al tarkistaa, onko ladattu tavu 0, eli onko tekstiä jäljellä.
-jz PrintDone jos on, on valmis ja hypätään kohtaan PrintDone.
-mov ah, 0eh siirtää (move) luetun tavun rekisteriin ah, josta
-int 10h-ohjelmakeskeytys (interrupt) sen ottaa ja tulostaa näytölle.
-jmp Print hyppää takaisin alkuun.
-PrintDone: tässä kohtaa ollaan valmiita, joten
-ret palauttaa (return) "funktion" takaisin sinne, mistä kutsuttiin.

loader: on osio, johon hypättiin alussa.

xor ax, ax asettaa ax-rekisterin nollaksi, koska ax XOR ax on aina 0.
mov ds/es, ax siirtää ax-rekisterin arvon (0) rekistereihin ds ja es.
mov si, msg löytää lähdeindeksin "Hello, World!"-tekstille Print-kohtaa varten.
Call Print kutsuu print-kohtaa, joka tulostaa tekstin näytölle.
xor ax, ax nollaa taas ax-rekisterin.
int 0x12 on taas yksi kätevä ohjelmakeskeytys. Tämä asettaa ax-rekisterin arvoksi nykyisen työmuistin määrän kilotavuina. Tätä tarvitaan myöhemmin.

cli puhdistaa ohjelmakeskeytykset (clear interrupts)
hlt pysäyttää (halt) järjestelmän nykyiseen tilaansa. Silloin näytöllä ehtii näkyäkin jotain.

times 510 - ($-$$) db 0 täyttää bootsektorin nollilla 510 tavuun asti.
dw 0xAA55 antaa sektorille oman allekirjoituksen, että järjestelmä tunnistaa sen lopun. Näin boottisektori on tasan 512 tavua pitkä (510 + 2)

Kääntäminen:

Nyt käännämme koodimme konekieleksi nasm-assemblerilla. Nimeä ensiksi uudelleen boot.txt boot.asm-nimellä.

Windows:
Lataa nasmin uusimman version asentaja windowsille tästä. Kun asentaja on asettanut tiedostot valitsemaasi kansioon, siirrä nasm.exe järjestelmäkansioosi, joka on Windows xp:llä C:\WINDOWS\System32 tai Windows vistalla/7:llä C:\WINDOWS\SysWOW64. Avaa komentorivi. Siirry cd-komennolla kansioosi, jossa boot.asm sijaitsee. Kirjoita:

nasm Kansiosi/boot.asm -f bin -o Kansiosi/boot.bin,

missä Kansiosi kuvastaa kansiota, johon olet tallentanut boot.asmin.
Linux/ubuntu:
Olet jo asentanut nasmin yllä. Avaa vain terminaali (Ctrl+Alt+T), siirry cd-komennolla kansioosi, jossa boot.asm sijaitsee ja kirjoita:

nasm Kansiosi/boot.asm -f bin -o Kansiosi/boot.bin,

missä Kansiosi kuvastaa kansiota, johon olet tallentanut boot.asmin.
Bootloaderin tallentaminen korpulle:

Ennen tätä vaihetta tarkista, että boot.binin koko on 512 tavua. Jos se ei ole, olet tehnyt jotain väärin. Nyt siirrämme bootloaderimme korpulle, jolta voimme käynnistää sen.

Windows:
Aseta korppu asemaan A: ja alusta se haluamallasi työkalulla. komentorivin format a: käy hyvin. Mikäli haluat hoitaa homman nopeasti, lisää perään /q pikaformatointia varten. Mikäli käytät virtuaalikonetta, luo vain uusi virtuaalinen korppu ja nimeä se vaikka bootiksi.

Nyt voimme siirtää bootloaderimme korpulle. Avaa komentorivi, siirry kansioon, jossa boot.bin sijaitsee ja kirjoita:

debug boot.bin

Odota hetki. Nyt komentoriville pitäisi ilmestyä pieni viiva (-). Kun se on ilmestynyt, kirjoita:

w 100 0 0 1
q,

niin boot.binin kaikki tavut kopioidaan aseman A: ensimmäiselle sektorille.

Jos käytät virtuaalista korppua, käytä partcopya kopioidaksesi boot.binin kaikki 512 tavua virtuaalisen korppusi levykuvatiedoston alkuun.
Linux/ubuntu:
Aseta korppusi asemaan ja alusta se haluamallasi työkalulla. Avaa sitten terminaali, siirry cd:llä kansioon, jossa boot.bin sijaitsee ja kirjoita

dd if=boot.bin bs=512 of=/dev/fd0

niin boot.binin kaikki 512 tavua kopioidaan korpun ensimmäiselle sektorille. Jos äsköinen ei toimikaan, vaihda fd0 fd1:ksi. Jos käytät virtuaalista korppua, vaihda /dev/fd0 poluksi virtuaalisen korppusi levykuvaan.
Käynnistys:

Kaikki pitäisi olla valmista. Käynnistä tietokoneesi/vrtuaalikoneesi uudelleen korppu asemassa ja varmista, että tietokoneesi käynnistysjärjestyksessä on Floppy drive ennen Hard disk driveä. Käynnistysjärjestykseen pääsee käsiksi tietokoneesta riippuen painamalla jotain funktionäppäintä tietokoneen käynnistyessä. Jos kaikki meni oikein, Tietokoneesi pitäisi käynnistyä ja kirjoittaa näytölle teksti "Hello, world!"

Onneksi olkoon, olet juuri tehnyt ensimmäisen bootloaderisi!
Erilaista palautetta oppaasta otetaan vastaan.
EDIT:

Ohhoh, tämähän on ensimmmäinen tutoriaalini :shock: Toivottavasti tykkäätte :)

Last edited by naputtelija on Tue Nov 06, 2012 11:58 pm, edited 4 times in total.
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: Oman käyttöjärjestelmän tekeminen

Post by valscion »

Koska tutoriaalisi aihe ei liittynyt CoolBasiciin, siirsin sen Yleinen-alueelle.
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
naputtelija
Devoted Member
Posts: 718
Joined: Wed Nov 03, 2010 7:56 pm
Location: Joku piste pohjoisessa.

Re: Oman käyttöjärjestelmän tekeminen

Post by naputtelija »

VesQ wrote:Koska tutoriaalisi aihe ei liittynyt CoolBasiciin, siirsin sen Yleinen-alueelle.
Kiitos. Alussa mietinkin, pitäisikö topic laittaa yleisiin vai tutoriaaleihin. Nyt tiedän.
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
User avatar
Timblex
Advanced Member
Posts: 252
Joined: Sun Apr 11, 2010 10:37 am
Location: Kouvola

Re: Oman käyttöjärjestelmän tekeminen

Post by Timblex »

Hieno tuto oli mutta ainakin minulla tuo kääntäminen ei toiminut antamallasi komennolla vaan se piti muuttaa tällaiseksi:

Code: Select all

nasm  Kansiosi/boot.asm -f bin -o Kansiosi/boot.bin
Entinen timpe99...
Demokisa 2013 demo valmis, Check it out!
naputtelija
Devoted Member
Posts: 718
Joined: Wed Nov 03, 2010 7:56 pm
Location: Joku piste pohjoisessa.

Re: Oman käyttöjärjestelmän tekeminen

Post by naputtelija »

timpe99 wrote:Hieno tuto oli mutta ainakin minulla tuo kääntäminen ei toiminut antamallasi komennolla vaan se piti muuttaa tällaiseksi:

Code: Select all

nasm  Kansiosi/boot.asm -f bin -o Kansiosi/boot.bin
Niin, nähtävästi kopioin rimpsun jostain vanhasta oppaasta, joka käytti kääntäjän eri versiota. Nyt on kunnossa.
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: Oman käyttöjärjestelmän tekeminen

Post by esa94 »

älä tee tutoriaalia aiheesta josta et tiedä mitään
Last edited by Pettis on Wed Nov 07, 2012 2:12 am, edited 1 time in total.
Reason: Ei tämmöistä palautetta, kiitos.
legend
Advanced Member
Posts: 371
Joined: Wed Nov 18, 2009 8:06 pm

Re: Oman käyttöjärjestelmän tekeminen

Post by legend »

esa94 wrote:älä tee tutoriaalia aiheesta josta et tiedä mitään
Turhan karu totuus naputtelijalle :o
naputtelija
Devoted Member
Posts: 718
Joined: Wed Nov 03, 2010 7:56 pm
Location: Joku piste pohjoisessa.

Re: Oman käyttöjärjestelmän tekeminen

Post by naputtelija »

Mistä te tiedätte, kuinka paljon minä tästä tiedän? Sitä paitsi, sen takiahan osittain minä tämän teen, että oppisin. Jos joku on sitä mieltä, että tutoriaalissa on virheitä tai epäkohtia, voitte ilmoittaa suoraan epäkohdat sen kummemmin haukkumatta yleistietämystäni. Ei nyt anneta modeille munalukkoa hopealautasella.
EDIT:

Oppaan toinen osa on tulossa, joka käsittelee tiedon lukemista korpulta bootloaderilla. Tämähän ei ole valmis bootloader vielä, jos sitä tarkoitatte. Tämän osan tarkoituksena oli vain sisäistyttää se, miten saadaan ohjelma buuttaamaan korpulta, eikä se, mitä se tekee.

<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
TheFlash
Newcomer
Posts: 1
Joined: Sat Sep 01, 2012 2:53 pm

Re: Oman "käyttöjärjestelmän" tekeminen

Post by TheFlash »

Ei tuossa kyllä ihan kauheasti asiavirheitä ollu. Turhan demoralisoiva asenne.

Mutta jospa listaan ne asiavirheet:
"BITS 16 kertoo prosessorille että tämä koodi käyttää 16-bittisiä komentoja. Kaikki bootloaderit käyttävät vain niitä.
org 0x7c00 kertoo prosessorille, mihin muistiosoitteeseen ohjelma pitää asettaa."

Nämä kaksi direktiiviä ei kerro prosessorille oikeastaan yhtään mitään, niistä ei generoida ainuttakaan konekielistä käskyä. Nämä on ohjeita assemblerille.

"cli puhdistaa ohjelmakeskeytykset (clear interrupts)"
Ei tämä mitään ohjelmakeskeytyksiä puhdista. Komennon koko "nimi" on clear interrupt flag. Tämä siis asettaa nollabitin suorittimen statusrekisteriin IF-bitin kohdalle. Tämän bitin ollessa nolla, suoritin ignoroi _rauta_keskeytykset, ei ohjelmakeskeytyksiä.

Elämäähelpottavana vinkkinä vielä:
Tuo listaus kääntyy melkein semmosenaan validiksi DOS:n .com-tiedostoksi, vaihtaa vain org direktiivin tilalle "org 0x100". Voi ajaa esim. DOSBoxissa.
KilledWhale
Tech Developer
Tech Developer
Posts: 545
Joined: Sun Aug 26, 2007 2:43 pm
Location: Liminka

Re: Oman "käyttöjärjestelmän" tekeminen

Post by KilledWhale »

Aika turhaa tehdä suomenkielistä opasta käyttöjärjestelmän tekemisestä kun netistä löytyy kiljoonittain parempia oppaita englanniksi.
Jos joku ei sen vertaa osaa englantia että voisi kyseisiä oppaita lukea, voi kyseinen henkilö puolestani painua vittuun Internetistä.
CoolBasic henkilökuntaa
Kehittäjä

cbFUN Kello
cbSDL
Whale.dy.fi

<@cce> miltäs tuntuu olla suomen paras
naputtelija
Devoted Member
Posts: 718
Joined: Wed Nov 03, 2010 7:56 pm
Location: Joku piste pohjoisessa.

Re: Oman "käyttöjärjestelmän" tekeminen

Post by naputtelija »

KilledWhale wrote:Aika turhaa tehdä suomenkielistä opasta käyttöjärjestelmän tekemisestä kun netistä löytyy kiljoonittain parempia oppaita englanniksi.
Jos joku ei sen vertaa osaa englantia että voisi kyseisiä oppaita lukea, voi kyseinen henkilö puolestani painua vittuun Internetistä.
Niin, mitä järkeä onkin tehdä jotain, jonka joku muu on tehnyt? Tällä ajattelutavalla mm. Kaikki pong-kloonit ovat täysin turhia. Älä unohda, että kaikella tiedolla on itseisarvo.
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
KilledWhale
Tech Developer
Tech Developer
Posts: 545
Joined: Sun Aug 26, 2007 2:43 pm
Location: Liminka

Re: Oman "käyttöjärjestelmän" tekeminen

Post by KilledWhale »

naputtelija wrote:
KilledWhale wrote:Aika turhaa tehdä suomenkielistä opasta käyttöjärjestelmän tekemisestä kun netistä löytyy kiljoonittain parempia oppaita englanniksi.
Jos joku ei sen vertaa osaa englantia että voisi kyseisiä oppaita lukea, voi kyseinen henkilö puolestani painua vittuun Internetistä.
Niin, mitä järkeä onkin tehdä jotain, jonka joku muu on tehnyt? Tällä ajattelutavalla mm. Kaikki pong-kloonit ovat täysin turhia. Älä unohda, että kaikella tiedolla on itseisarvo.
Kaikki pong-kloonit ovat täysin turhia.
CoolBasic henkilökuntaa
Kehittäjä

cbFUN Kello
cbSDL
Whale.dy.fi

<@cce> miltäs tuntuu olla suomen paras
naputtelija
Devoted Member
Posts: 718
Joined: Wed Nov 03, 2010 7:56 pm
Location: Joku piste pohjoisessa.

Re: Oman "käyttöjärjestelmän" tekeminen

Post by naputtelija »

Ovat ne sinulle. Niiden tekijöille ei välttämättä. Tämänkin oppaan kirjoittamisesta opin paljon, ja olen varma että jokin muukin oppi. Levitin siis tietoa. Mitä väärää tässä sitten on??
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
User avatar
ItzRaines
Active Member
Posts: 211
Joined: Sat Feb 05, 2011 6:59 pm

Re: Oman "käyttöjärjestelmän" tekeminen

Post by ItzRaines »

Taidanpa jopa odottaa, että opas valmistuu kokonaisuudeksi.
On muuten taas todella kypsää käytöstä täällä. :shock:
Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: Oman "käyttöjärjestelmän" tekeminen

Post by Awaclus »

naputtelija wrote:Ovat ne sinulle. Niiden tekijöille ei välttämättä.
Ovat ne kyllä täysin turhia niiden tekijöillekin. Hyöty on tekemisprosessissa, yhdestäkään valmiista pong-kloonista ei ole ikinä ollut mitään hyötyä kenellekään.
legend
Advanced Member
Posts: 371
Joined: Wed Nov 18, 2009 8:06 pm

Re: Oman "käyttöjärjestelmän" tekeminen

Post by legend »

Awaclus wrote:
naputtelija wrote:Ovat ne sinulle. Niiden tekijöille ei välttämättä.
Ovat ne kyllä täysin turhia niiden tekijöillekin. Hyöty on tekemisprosessissa, yhdestäkään valmiista pong-kloonista ei ole ikinä ollut mitään hyötyä kenellekään.
Itse olen oppinut pong pelin pong-kloonista :D
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: Oman "käyttöjärjestelmän" tekeminen

Post by esa94 »

legend wrote:
Awaclus wrote:
naputtelija wrote:Ovat ne sinulle. Niiden tekijöille ei välttämättä.
Ovat ne kyllä täysin turhia niiden tekijöillekin. Hyöty on tekemisprosessissa, yhdestäkään valmiista pong-kloonista ei ole ikinä ollut mitään hyötyä kenellekään.
Itse olen oppinut pong pelin pong-kloonista :D
No ei kai kukaan olettanutkaan kenenkään yrittävän nykypäivänä Pong-konetta etsiä.
Pettis
The Evil Admin
The Evil Admin
Posts: 1044
Joined: Sun Aug 26, 2007 5:08 pm
Location: Rovaniemi
Contact:

Re: Oman "käyttöjärjestelmän" tekeminen

Post by Pettis »

Ei helvetti...

Tämä viestiketju ei käsittele sitä, että tuleeko tietyistä aiheista kirjoittaa suomeksi eikä sitä, että mitkä aiheet ovat turhia. Mielestäni keskustelu järkevistä asioista kielellä kuin kielellä ei ole turhaa. Turhuudesta valittaminen tässä viestiketjussa on turhaa - samoin offtopic liittyen johonkin pongiin.

Isken tässä moderaattorikortin tiskiin ja totean seuraavaa: offtopic, lapsellinen itku ja turha kitinä tässä viestiketjussa tulee aiheuttamaan mielivaltaisen suuruisia rangaistuksia riippumatta kohteen foorumirankista tai viestilaskurin poskettoman suuresta koosta.

Mikäli teillä ei ole mitään rakentavaa sanottavaa, niin jättäkää postaamatta.
CB Repository .com - Sinne ne kaikki koodit menneet on!
MunVerkko - Ilmaisia foorumeita ja blogeja
skorpioni-cb
Advanced Member
Posts: 364
Joined: Wed Dec 03, 2008 3:48 pm
Location: Turku

Re: Oman "käyttöjärjestelmän" tekeminen

Post by skorpioni-cb »

Autetaas vähän naputtelijaa hädässä ja ahdingossa, koska mulla on pikkusen kokemusta kerneleiden ja bootloadereiden kanssa.
tuo bootloader minkä naputtelija näytti oli ns. real modessa, josta esimerkkinä voisin sanoa M$-DOS

Protected modeen pääsee vaihtamalla yhden bitin, lisää tietoa sivulla wiki.osdev.org täällä kaikki käyttöjärjestelmän tekoon on listattu selkeästi, ja niin että saat käyttää omia aivojasi:
anyways ;D

sä käytät BIOSsin keskeytystä 13h, h tuossa tarkoittaa heksadesimaalia, eli toi 13h olisi javassa ja muissa c-sukuisissa kielissä 0x13
kutsut tuota keskeytystä laittamalla koodiisi

Code: Select all

int 13h
jossa int ei ole integer vaan interrup
mutta ei tuossa kaikki, sinun täytyy laittaa kasa parametreja eri rekistereihin, en viitsi luetella niitä kaikkia koska menisi varmaan merkkirajan yli, mutta tässä on kaikki tarvittava: http://en.wikipedia.org/wiki/INT_13H#Li ... h_services
En tiedä, mitä tiedän, mutta tiedän ettei se ole mitään kaunista.

I know not what I know, but I do know that it's not beautiful.
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: Oman "käyttöjärjestelmän" tekeminen

Post by esa94 »

Eihän sitä nyt hullukaan ala suoraan protected modessa ohjelmoida.

Siihen on ihan syynsä että x86-assemblyn oppaat aloittavat real modesta; muutamina voidaan mainita esimerkiksi laitteistokeskeytyksien käyttömahdollisuus. I/O-ajureiden kirjoittaminen ei varmaankaan ole monellekaan ohjelmoitsijalle niin yksinkertaista että sitä kannattaisi pitää lähtökohtana, ja ellei sitten halua vaihtoehtoisena keinona opetella hyppimään protected moden ja real moden välillä, taitaa se olla ainoa tapa lukea näppäimistösyötettä.

Jos tietenkin ohjelma itsessään sisältää koko oman datasarjansa niin mikäs siinä, mutta ymmärrykseni oli että tässä pyrittiin rakentamaan käyttäjäinteraktiivista järjestelmää.

--

Dollarimerkit taasen ei ollu hauskoja ees 90-luvulla.
Post Reply