Pisze system operacyjny na mój komputer, i mam problem z powrotem do Real mode. Mój system jest w trybie chronionym, z odblokowaną linią A20 i włączonym stronicowaniem. Jak z tego można przejść do RM?
Jeżeli ktoś dysponuje takim kawałkiem kodu, to proszę o jego zamieszczenie ? wtedy mógłbym go przerobić na swoje potrzeby. Z góry dzięki :)
Dzięki, poradziłem sobie z włączaniem trybu rzeczywistego, ale jest jeszcze jeden problem. Kiedy wywołuje przerwanie 10h <- zmieniam tryb graficzny na tekstowy to wszystko jest w porządku, natomiast kiedy próbuje użyć przerwania 13h ( odczytania sektora ) to nie działa .... :/ Czemu może się tak dziać?
No musisz posprawdzać czy konfiguracja sprzętowa do tego potrzebna jest dobrze ustawiona. Przykładowo czy nie masz zablokowanych przerwań sprzętowych. Musisz dojść do tego po przez analize tego w co ingeruje twój system, a co może miec wpływ na złą prace sterownika.
przerwania są na pewno odblokowane itd, bo działa przerwanie 10h ... chociaż nie do końca dobrze, teraz zauważyłem że wymiary ma nieco inne zamiast 80x25 ma 40x na coś :P a trym na pewno dobry wybieram :
[code]
mov ax, 0003
int 10h
[/code]
Zastanawiam się czy nie ingeruje w jakiś zarezerwowany obszar pamięci, tylko nie mam pojęcia jaki mógłby to być?
może podam jak działa mój os, może to coś wyjaśni, najpierw włącza sie MBR pod adres 0x7C00 przekopiowuje się do 0x7E00, wyszukuje partycji gdzie jest bootsector i wczytuje go pod adres 0x7C00, następnie on wczytuje drugi program ładujący o rozmiarze 5 sektorów pod adres 0x2000, on ustawia PAGE_DIR = 0x3000
Page_table = 0x4000, globalną Tablice alokacji = 0x5000 - każdy z nich po 4KB; i tablice alokacji = 0x120000 do 0x140000. Przeglądałem mapę pamięci ale z tego co widziałem to te obszary są wolne.....