December 28, 2000
Hur får man interrupts (int) att funka i protected mode??
Det verkar finnas två sätt.
Ena är något om att man ska skapa en typ interrupt lista eller något sånt inne i protected mode (fattar inte så mycket av det).
Det andra verkar vara att man går ut till real mode och sen utför interrupten och går tillbaka.
Hur kommer man ut ur protected mode??
December 28, 2000
1. Jag tänkte på utan operativ system. T ex eget os, göra en bootbar disket eller något liknande. Då MÅSTE man göra en interrupt tabell (tror jag att det heter).
2. Hm... Vet inte kanske ta emot tangentbords nedtryckningar.
3. C++, Assembler går oxå bra om bara är lite grann. Kom ihåg, cout cin och sånt funkar ju inte...
January 4, 2003
DeepBlueMagic wrote: 1. Jag tänkte på utan operativ system. T ex eget os, göra en bootbar disket eller något liknande. Då MÅSTE man göra en interrupt tabell (tror jag att det heter).
2. Hm... Vet inte kanske ta emot tangentbords nedtryckningar.
3. C++, Assembler går oxå bra om bara är lite grann. Kom ihåg, cout cin och sånt funkar ju inte...
Ahh, göra eget OS... been there done that :).. Denna interrupt tabell som du snackar om ligger i böran utav minnet. Varje address är 4 byte stor (segment, offset) och det finns 256 entrys, så hela tabellen är 1024 byte stor. När en interrupt sker så kollar processorn i denna tabell och hoppar till den minnes adressen och börjar execvera där ifrån. Skall du taemot tangentbordsknappar så har jag för mig att det ät int9 som genereras så fort en knapp trycks ner. Sedan hämtar man tangentbordsstatusen via en port, tror det är 0x80 men inte säker, var ett tagsedan jag höll på med detta.
Du måste kunna assembler rätt bra om du skall skriva ett litet os. Du måste veta hur det ser ut i slutändan. Skall du skriva ut saker på skärmen så får man skriva rutinerna själv. I textläge så ligger allt skärm innehåll på minnes adressen 0xb8000 (dubbel kolla detta). Varje tecken är två byte. Ena byten är attribut (färg osv) och andra tecknet är värdet för symbolen.
Protectedmode eller RealMode. Du måste bestämma i vilket utav dom lägena som ditt os skall arbeta i. Alla operativ system idag kör ProtectedMode eftersom det är mycket stabilare och tilllåter ner.
Men innan du kan göra allt detta så måste du ha en bootloader. Det första som bootas är första sector som brukar vara 512byte. Sedan är det upp till den och driva det hela vidare. Jag rekommenderar att du använder GRUB som bootloader. Att skriva en egen är ett rent helvete.
Du måste även ganska kvickt skriva en memory manager så du kan allokera minne.
Sök på OS development på nätet. Finns massor med info om det hela. Dock är x86 väldigt elak och bökig så du måste veta vad du håller på med när du skriver.
1 Guest(s)