Real mode / Protected mode|Programmering / Grafisk formgivning|Forum|Nordichardware

Search
Forum Scope


Match



Forum Options



Minimum search word length is 3 characters - maximum search word length is 84 characters
Lost password?
The forums are currently locked and only available for read only access
sp_Feed sp_TopicIcon
Real mode / Protected mode
Weeblie
Kommer du hit ofta?
Medlem
Forum Posts: 381
Member Since:
December 28, 2000
sp_UserOfflineSmall Offline
1
November 19, 2002 - 6:13 pm
sp_Permalink sp_Print

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

matricks
Nu vet jag hur man gör inlägg!
Medlem
Forum Posts: 18
Member Since:
January 4, 2003
sp_UserOfflineSmall Offline
245972
January 4, 2003 - 8:00 am
sp_Permalink sp_Print

Du behöver inte göra något speciellt. Jag antar att du vill ha direkt access tillhårdvaran. Svara på dessa så skall jag se vad jag kan hjälpa till med

1. Operativ System?
2. Vad skall du skriva?
3. Språk (asm + ?), Kompilator?

Weeblie
Kommer du hit ofta?
Medlem
Forum Posts: 381
Member Since:
December 28, 2000
sp_UserOfflineSmall Offline
246123
January 4, 2003 - 1:27 pm
sp_Permalink sp_Print

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

matricks
Nu vet jag hur man gör inlägg!
Medlem
Forum Posts: 18
Member Since:
January 4, 2003
sp_UserOfflineSmall Offline
246427
January 4, 2003 - 9:26 pm
sp_Permalink sp_Print

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.

Forum Timezone: Europe/Stockholm
Most Users Ever Online: 694
Currently Online:
Guest(s) 73
Currently Browsing this Page:
2 Guest(s)
Top Posters:
Andreas Galistel: 16287
Jonas Klar: 15897
ilg@dd: 10810
Nyhet: 10607
Mind: 10550
Ctrl: 10355
Gueno: 9881
Guest: 9344
Snorch: 8881
Callister: 8468
Newest Members:
PetrbonFU PetrbonFU
Karine Bembry
Dolores Mcdaniels
Anibal McLeish
Francisca Alt
Alfie Everhart
Lester Huitt
Orlando Jorgensen
Mikki Lundgren
Dakota Kozlowski
Forum Stats:
Groups: 11
Forums: 59
Topics: 146630
Posts: 1300967

 

Member Stats:
Guest Posters: 2
Members: 79425
Moderators: 0
Admins: 11
Administrators: nordicadmin, Henrik Berntsson, Anton Karmehed, Carl Holmberg, Joel Oscarsson, Mikael Linnér, Mikael Schwartz, Andreas Paulsson, Nickebjrk, Mattias Pettersson, EmxL