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

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

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

Post by naputtelija » Sun Nov 04, 2012 4:15 pm

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 Wed Nov 07, 2012 12:58 am, 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: 1584
Joined: Thu Dec 06, 2007 8:46 pm
Location: Espoo
Contact:

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

Post by valscion » Mon Nov 05, 2012 1:11 am

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

User avatar
naputtelija
Devoted Member
Posts: 718
Joined: Wed Nov 03, 2010 8:56 pm
Location: Joku piste pohjoisessa.

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

Post by naputtelija » Mon Nov 05, 2012 1:18 am

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 » Tue Nov 06, 2012 8:45 am

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!

User avatar
naputtelija
Devoted Member
Posts: 718
Joined: Wed Nov 03, 2010 8:56 pm
Location: Joku piste pohjoisessa.

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

Post by naputtelija » Tue Nov 06, 2012 9:42 am

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 » Tue Nov 06, 2012 10:38 pm

älä tee tutoriaalia aiheesta josta et tiedä mitään
Last edited by Pettis on Wed Nov 07, 2012 3:12 am, edited 1 time in total.
Reason: Ei tämmöistä palautetta, kiitos.
⁴⁰Ar
<@mikeful> kissatehtaalla on miukuhihna.

User avatar
legend
Advanced Member
Posts: 371
Joined: Wed Nov 18, 2009 9:06 pm

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

Post by legend » Tue Nov 06, 2012 11:35 pm

esa94 wrote:älä tee tutoriaalia aiheesta josta et tiedä mitään
Turhan karu totuus naputtelijalle :o

User avatar
naputtelija
Devoted Member
Posts: 718
Joined: Wed Nov 03, 2010 8:56 pm
Location: Joku piste pohjoisessa.

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

Post by naputtelija » Wed Nov 07, 2012 12:46 am

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 » Wed Nov 07, 2012 3:15 am

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.

User avatar
KilledWhale
Tech Developer
Tech Developer
Posts: 543
Joined: Sun Aug 26, 2007 2:43 pm
Location: Liminka

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

Post by KilledWhale » Thu Nov 08, 2012 11:26 am

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

User avatar
naputtelija
Devoted Member
Posts: 718
Joined: Wed Nov 03, 2010 8:56 pm
Location: Joku piste pohjoisessa.

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

Post by naputtelija » Thu Nov 08, 2012 12:32 pm

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...

User avatar
KilledWhale
Tech Developer
Tech Developer
Posts: 543
Joined: Sun Aug 26, 2007 2:43 pm
Location: Liminka

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

Post by KilledWhale » Thu Nov 08, 2012 1:16 pm

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

User avatar
naputtelija
Devoted Member
Posts: 718
Joined: Wed Nov 03, 2010 8:56 pm
Location: Joku piste pohjoisessa.

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

Post by naputtelija » Thu Nov 08, 2012 1:35 pm

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 7:59 pm

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

Post by ItzRaines » Thu Nov 08, 2012 2:48 pm

Taidanpa jopa odottaa, että opas valmistuu kokonaisuudeksi.
On muuten taas todella kypsää käytöstä täällä. :shock:

User avatar
Awaclus
Forum Veteran
Posts: 2938
Joined: Tue Aug 28, 2007 2:50 pm
Location: Sulkava

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

Post by Awaclus » Thu Nov 08, 2012 5:02 pm

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.
Every day I'm reshuffling.
[22:19] <@Grandi> Ha! Tiesin koko ajan, että Awaclus_ oli Awaclus. Hieno peitenimimerkki, mutta Grandia et huiputtanut.

User avatar
legend
Advanced Member
Posts: 371
Joined: Wed Nov 18, 2009 9:06 pm

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

Post by legend » Thu Nov 08, 2012 5:48 pm

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 » Fri Nov 09, 2012 2:34 am

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ä.
⁴⁰Ar
<@mikeful> kissatehtaalla on miukuhihna.

User avatar
Pettis
The Evil Admin
The Evil Admin
Posts: 1038
Joined: Sun Aug 26, 2007 5:08 pm
Location: Rovaniemi
Contact:

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

Post by Pettis » Sat Nov 10, 2012 10:03 pm

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

User avatar
skorpioni-cb
Advanced Member
Posts: 364
Joined: Wed Dec 03, 2008 4:48 pm
Location: Turku

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

Post by skorpioni-cb » Wed Nov 28, 2012 11:34 pm

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
Minä en tiedä mitä tiedän, mutta sen tiedän ettei se ole mitään kaunista.

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 » Sat Dec 08, 2012 9:11 pm

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.
⁴⁰Ar
<@mikeful> kissatehtaalla on miukuhihna.

Post Reply

Who is online

Users browsing this forum: No registered users and 16 guests