Autor Thema: "Hallo Welt" ... und weiter?  (Gelesen 3727 mal)

BugBott

  • Beiträge: 3
    • Profil anzeigen
Gespeichert
« am: 19. September 2004, 22:17 »
Hallo Leute,
ich bin vor ein paar Monaten auf das LowLevel-Magazin gestoßen und dachte mir cool.... gut zu wissen! :-)

Ich hab mir die Tuts durchgelesen, ausprobiert u.s.w.
Der Beispiel-Kernel schreibt nun "Hallo bei BugOS 0.1" auf den Bildschirm und startet bei Tastendruck den Rechner neu! (Reife Leistung, wa?) :-)

Nun,
wie gehts nun eigentlich weiter?

Also, meine Diskette vermute ich mal ist nicht mit irgendeinem FS formatiert, oder?
(per rawrite kopiert)

Der Kernel bräuchte doch nun eine Dateisystem-Funktionalität, oder?
Oder braucht die schon der Bootloader weil der ja den Kernel /floppy/kernel oder a:\kernel (oder halt ähnliches) laden soll... ?

Jetzt wäre eine Shell Sinnvoll....
Aber vorher ein Tastatur -Treiber...?
(Brauch ich den zwingend?)

Also kurz:
Ich weiß gerade nicht wie es weiter gehen soll....

Hätte jemand ein paar Infos für mich ?

THX im vorraus....
Herscher der Super-Kuh-Kräfte

lobmann

  • Beiträge: 243
    • Profil anzeigen
    • http://www.fallek.de.vu
Gespeichert
« Antwort #1 am: 19. September 2004, 22:42 »
kommt drauf an was du machen willst wenn du nen RMode OS machen willst kannst du das auf die Bios Int`s aufbauen. Bei nem PMODE OS musst du die ganzen Treiber bauen. Am Anfang würd ich vorschlagen das du dich erstma ganz "simpel" um Ein und Ausgaben kümmerst, dann kommen schon die Ideen.
Man kann doch nem alten Mann nicht in den Bart spucken und sagen es hat geschneit

BugBott

  • Beiträge: 3
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 19. September 2004, 22:48 »
Servus lobmann,
Ganz "simpel" anfangen ist gut,
Du hättest nicht zufällig gerade Lust die unterschiede zwischen RealMode und ProtectedMode anzureißen?
Oder nur mal schnell verklickern welche INT's für Ein- und Ausgaben zuständig sind?

Ich hab Zuhause ne Liste von INT's was die machen u.s.w.
Aber das ist Tonnenweise Material,... nur damit nen Ansatz hab wo in der Doku ich suchen muss.

Wär mir ne grosse Hilfe! Danke
Herscher der Super-Kuh-Kräfte

lobmann

  • Beiträge: 243
    • Profil anzeigen
    • http://www.fallek.de.vu
Gespeichert
« Antwort #3 am: 20. September 2004, 11:56 »
Naja der gravierenste Unterschied is wohl die Adressierung. Im RM wird über Segment(16-BIT):offset(16-BIT) adressiert daraus ergibt sich eine 20-BIT Adresse, am besten nochma in einem Assembler Buch nachlesen. Im Rmode kann deshalb nur 1 MB adressiert werden.

Naja der PMode wurde halt erstma so erweitert das man jetz 4 GB Speicher adressieren kann, sowie einiges an Schutzmechanismen(Ring 0-3), vorraussetzung für Multitasking(TSS-Segment), und so weiter, lies am besten mal TeeJay`s Tut.

Beispiel für ein Rmode OS ist z.B. DOS, PMode : Linux, Windows.

Was nochbwichtig ist zu erwähnen ist das die INT`s nur im RMode funktionieren, im PMode musst du das alles selber machen.
Man kann doch nem alten Mann nicht in den Bart spucken und sagen es hat geschneit

joachim_neu

  • Beiträge: 1 228
    • Profil anzeigen
    • http://www.joachim-neu.de
Gespeichert
« Antwort #4 am: 20. September 2004, 14:32 »
also ich baue mein OS von grund (Real Mode) auf auf, d.h. es dauert zwar ein bisschen, bis man etwas großes hat, dafür hat man aber oft erfolge, und es  wird nicht so schnell langweilig. andere bauen ihr OS gleich im Protection Mode auf, weil sie dann nicht so viel zeit beim Real Mode "verschwenden". dafür ist es aber auch schwerer und es dauert, bis man etwas vorzuzeigen hat. jeder hat seine methode!
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de

System: 256 RAM, GeForce 2 MX 400, AMD Athlon XP 1600+, Windows XP, 1x Diskette, 1x DVD-ROM, 1x CD-R(W) Brenner,...

BugBott

  • Beiträge: 3
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 25. September 2004, 01:59 »
Jo, Servus,
ich arbeite nun erstmal im RM, und versuche gerade verzweifelt einen INT-Handler (War das nu eigentlich der richtige Begriff?) selbst zu bauen.
Stoße aber auf Probleme:
Der Code:

_int0x21:
 _int0x21_ser0x01:       ; funktion 0x01
 cmp al, 0x01            ; funktion 0x01 angefragt?
 jne _int0x21_end        ; nächste Routine checken
   
 _int0x21_ser0x01_start:
 lodsb                   ; nächstes Byte laden
 or  al, al              ; 0-Byte?
 jz  _int0x21_ser0x01_end
 mov ah, 0x0E            ; BIOS Teletype
 mov bh, 0x00            ; Page 0
 mov bl, 0x07            ; Text-Attribute
 int 0x10                ; BIOS-Call
 jmp _int0x21_ser0x01_start
 _int0x21_ser0x01_end:
 jmp _int0x21_end
 
 _int0x21_end:
 iret

push dx
push es
xor ax, ax
mov es, ax
cli
mov word [es:0x21*4], _int0x21  ; Pointer auf den Handler
mov [es:0x21*4+2], cs           ; Pointer auf CS
sti
pop es
pop dx

füge ich wo ein?
Ich hab versucht den Code vor "start:" zu setzten, auch nach "start:",aber
wenn ich den int ausführe/aufrufe geschieht nichts....
Anstelle meiner Ausgabe (die mache ich so):

msg db "irgendwas"
 mov si, msg
 mov al,0x01
 int 0x21h
hab ich nur einen leeren Bildschirm.
Wie Ihr seht ist fast nur Copy & Paste, deswegen wundert mich es das es nit funzt.

Und an dieser Stelle frag ich mich nun, "Wie könnte ich sowas Debuggen?"
Geht das überhaupt?

THX,
BB
Herscher der Super-Kuh-Kräfte

Another Stupid Coder

  • Beiträge: 749
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 25. September 2004, 10:33 »
Du könntest mit Msgs die du "manuell" also ohne Ints ausgibst, testen bis wohin du kommst ;)

joachim_neu

  • Beiträge: 1 228
    • Profil anzeigen
    • http://www.joachim-neu.de
Gespeichert
« Antwort #7 am: 01. November 2004, 09:00 »
ich glaube, es liegt daran, dass du


msg db "irgendwas"


vor das


 mov si, msg
 mov al,0x01
 int 0x21h

gemacht hast. wenn nähmlich das program von oben nach unten ausgeführt wird, dann findet der Prozessor "irgendwas", weil ja das "msg db" nicht mit eingebaut wird, und probiert das auszuführen, und das geht net, also stürzt er ab.
so

jmp marke
msg db "irgendwas"
marke:
 mov si, msg
 mov al,0x01
 int 0x21h


müsste es gehen. musste mal ausprobieren.
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de

System: 256 RAM, GeForce 2 MX 400, AMD Athlon XP 1600+, Windows XP, 1x Diskette, 1x DVD-ROM, 1x CD-R(W) Brenner,...

 

Einloggen