Beiträge anzeigen

Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.


Nachrichten - __OS_coder

Seiten: [1] 2 3 4
1
Lowlevel-Coding / Re: Init Paging
« am: 04. December 2006, 14:11 »
Nein PAGE_DIR ist eine symbolische Konstante, die die Adresse seines Page Directory ersetzt ;) konntest du aber nicht wissen, hat er ja nicht angegeben...
Er hat mir nur seinen Source geschickt, deswegen wusste ich das...

Nur ich hab den Fehler noch net gefunden...
2
OS-Design / Re: OS schon wieder
« am: 22. October 2006, 22:30 »
In dem Archiv, das du vom oben genannten Link beziehst, befinden
sich die stage files...
3
OS-Design / Re: OS schon wieder
« am: 22. October 2006, 18:42 »
Hier sind die GRUB Binaries drin:

ftp://alpha.gnu.org/gnu/grub/grub-0.97-i386-pc.tar.gz

Die lädst du dir herunter und machst folgendes damit:

1. Du kopierst stage1 und stage2 zu einem Image zusammen:
    für Windows:
copy /b stage1 + stage 2 image.bin 2. Du schreibst die image.bin auf eine Diskette mit Rawrite o.ä.
3. Du formatierst eine Diskette mit dem Dateisystem deiner Wahl
    und packst auf die Diskette in den Ordner /boot/grub die Dateien
    stage1, stage2, ***_stage1_5 und legst eine Textdatei namens
    menu.lst dort an.
4. Du startest von der ersten Diskette, wartest bis Grub geladen ist
    und legst die zweite Diskette ein.
5. Dann tippst du in die Grub Konsole folgenden Befehl ein:
    install /boot/grub/stage1 (fd0) /boot/grub/stage2 p /boot/grub/menu.lst

Dann müsste eine Meldung erscheinen, dass Grub erfolgreich auf der
Diskette installiert wurde. Und von da an, kannst du diese Diskette als
Bootdisk für dein Betriebssystem verwenden ;)
4
Lowlevel-Coding / Re: PMode Wahnsinn
« am: 21. October 2006, 16:12 »
Der Videospeicher sitzt an der Adresse 0xB8000. Das stimmt schon so...
DS muss dann einen Selector auf ein Segment mit der Basis Null enthalten.
5
Lowlevel-Coding / Re: PMode Wahnsinn
« am: 21. October 2006, 14:42 »
Na prima :)

Dann ist ja alles ok XD

Dann noch viel Spaß und Erfolg im Protected Mode ;)
6
Lowlevel-Coding / Re: PMode Wahnsinn
« am: 21. October 2006, 14:32 »
Nein nein... Lass das [Bits 32] wo es ist...
Aber benutz mal statt

jmp codesel:PMode

des hier:

jmp dword codesel:PMode

Denn wenn die physikalische Adresse 0x10000 ist... Dann muss du ja
ein 32Bit Offset angeben... Und ich meine ich hab das bei mir dann
immer so gelöst, dass ich ein DWORD davor gesetzt hab...
Ist aber auch schon länger her XD ich benutze nämlich nun auch GRUB.
7
Lowlevel-Coding / Re: Parameter für meine API-Funktionen
« am: 20. October 2006, 15:32 »
In der Tat das kompiliert nur GCC... Allerdings braucht der
Anwendungsprogrammierer nicht unbedingt GCC benutzen...
Wenn du das Sourcefile mit GCC kompilierst, kannst du daraus
ja ne Static Library machen, die dann zu dem Programm des
Anwendungsprogrammierers hinzugelinkt wird. Da ist es egal, ob
der Anwendungsprogramierer GCC oder BorlandC oder sonst
irgendeinen Compiler verwendet.

Das Headerfile versteht jeder C Compiler...

;)
8
Lowlevel-Coding / Re: PMode Wahnsinn
« am: 19. October 2006, 19:21 »
Vllt liegt der Fehler in deinem Code, wie du da oben schon vermutest, in
der Segmentadresse des Datensegmentes. Du setzt die nämlich auf
0x0000

xor ax, ax
mov ds, ax

Die setz mal auf 0x1000, wenn der Bootloader den Kernel nach 0x10000 lädt.
Sonst findet er den GDT Pointer nämlich nicht. Denn der liegt ja dann an:
0x1000:_gdtr

9
Lowlevel-Coding / Re: Parameter für meine API-Funktionen
« am: 18. October 2006, 18:23 »
Also ich würde es ja folgendermaßen realisieren:

Du schreibst dir ein Headerfile das folgendermaßen aussieht:

#ifndef __HEADER_H_
#define __HEADER_H_

void ShowCursor( unsigned x, unsigned y, char Taste );

#endif


Dann das dazugehörige Sourcefile:

#include "./header.h"

void ShowCursor ( unsigned x, unsigned y, char Taste ) {
    __asm__ __volatile__ ( " movq %%rcx, %0\n"
                           " movq %%rdx, %1\n"
                           " movb %%bl, %2\n"
                           " int $0x30\n"
                          : : "m"(y), "m"(x), "m"(Taste) :
                          );
}


Als Beispiel für C jetzt. Dann würdest du das Sourcefile kompilieren
und zu einer Shared Library oder einer Static Library machen, die
dann zu dem C Programm hinzugelinkt werden muss. Und das
Headerfile benutzt du dazu, um die Funktionen dem Quelltext des
C Programms bereitzustellen.

Die Cursor-Funktion ließe sich dann so in einem C-Programm
verwenden:

#include "header.h"

int main() {
    ShowCurser( 2, 2, TASTE );
    return 0;
}


Aber ich denke, dass du das genau so realisieren willst, nicht?
Nur du programmierst die Funktion für das C-Programm in ASM.
Aber das brauchst du ja gar nicht, wenn du GCC-Inline ASM benutzt
geht das viel bequemer... dann musst du dich nicht um die
Adressen der Parameter auf dem Stack scheren... das macht der GCC
dann für dich.

10
Lowlevel-Coding / Re: PMode Wahnsinn
« am: 18. October 2006, 17:34 »
Ich würd' für die Selectors lieber
 codesel equ (1<<3)
 datasel equ (2<<3)
schreiben.

Dann bist du auf der sicheren Seite... denn ein Selector ist
NICHT das Offset des Deskriptors in der GDT!!
Sondern der Index des Deskriptors bei 0 beginnend.
Dieser Eindruck entsteht bloß, da der Index um 3 Bits
linksverschoben ist.

;)
11
Das Wiki / Genuine Reihe - Beta Leser
« am: 27. August 2006, 17:04 »
Zunächsteinmal möchte ich sagen, dass ich die Idee dieser Dokumente sehr gut heiße. Mir persönlich
werden sie wohl noch sehr viel Nutzen erweisen, da ich gerade erst am Anfang der OS-Entwicklung stehe.

Zum Dokument: Programming the PIT genuine (II) ist mir folgendes aufgefallen:

Auf der ersten Seite des Dokuments muss es heißen:
"(...) handelt vom PIT, (...)"
den Ausdruck handeln um hab ich noch nicht gehört.

Weiter auf Seite 2:
"Zu beachten ist hierbei, dass immer mir korrekten Einheiten gerechnet wird(...)"

Ich denke, dass es offensichtlich ist, dass mit korrekten Einheiten gerechnet wird ;)

Die Vorsätze Mega bedeutet immer 1000000 und Kilo immer 1000.
Die einzige Ausnahme ist die Einheit Byte. Laut Standard (SI-System) müsste
1 MegaByte 1000 KiloByte entsprechen, aber oft wird auch mit dort
mit dem Faktor 1024 gerechnet, was falsch ist.
Wobei mittlerweile auch andere Vorsätze gelten:
Gi(Gibi)  = 1.073.741.824
Mi(Mebi) = 1048576
Ki(Kibi)   = 1024

Für die Zeilen wie:
"(...) dort jedes Nibble(=4 Bit Block) Werte von (...)" Seite 3
Würde ich Fußnoten verwenden.

Dann noch ein Grammtikfehler:
Der Plural von Modus ist Modi.
Ebenfalls Seite drei: "(die anderen Moduse sind auch schlecht dokumentiert)"

Auf Seite 4 noch etwas:
"Es wird der Zähler 0 zu seinen Standardwerten gesetzt,(...)"
man setzt etwas auf einen bestimmten Wert nicht zu.
Ist meine Meinung... Also:
"Der Zähler 0 wird auf die Standardwerte gesetzt; der Code(...)"

Weiter auf Seite 4:
"Die Standardwerte sind 0,010 ms Aktivierungszeit, Modus 3 und binäre Zählung, wobei man auch oft auf BCD Zählung trifft."
Kann das sein, dass du 10ms oder 0,010 s meinst?

Das viel mir so beim Überfliegen auf... Sonst ein sehr schönes Dokument... weiter so ;)
12
Lowlevel-Coding / wieder Frage zu Pmode ^^
« am: 09. August 2006, 21:04 »
Du kannst im Endeffekt soviele Deskriptoren( naja net ganz 8192 sinds genau ) definieren wie du willst. Es ist deine Sache wie du dein Speichermodell aufsetzt.
Die drei Deskriptoren sind eigentlisch meistens dann für ein 32bit Flat Memory Model.
Wobei du dann eigentlisch 5 brauchst ( 1 NULL, 1 CODE PL0, 1 DATA PL0, 1 CODE PL3, 1 DATA PL3 ) plus eventuelle TS-Segmente.
Aber im Endeffekt schreibt dir niemand vor, wie du deine Segmente zu verteilen hast. Das muss du selber entscheiden.
13
OS-Design / Implementierung des Exception-Handlers
« am: 26. July 2006, 23:51 »
Wieso müsste bei Invalid TSS n neuer Task gestartet werden? Einfach den mit dem invalid TSS rausnehmen und fertisch ist... Wenn du Interrupt Gates benutzt wird doch Kernelcode ausgeführt, der ist taskunabhängig, sozusagen... also ick würd die Handler innen Kernelcode packen... ist viel einfacher zu implementieren und auch effizienter wie ick finde... Weil wenn sie als Task laufen können sie ja auch unterbrochen werden und des wär doch net soo gut...
14
Lowlevel-Coding / Text Ausgabe unter PMode ...(umlauten)
« am: 22. July 2006, 21:19 »
Wie ich schon sagte du könntest die Umlaute auf ALLEN rechnern benutzen, wenn du vorher die Bitmaps für die Umlaute im VGA Font überprüfst und gegebenenfalls mit deinen eigenen Bitmaps überschreibst, wenn diese net den Umlauten entsprechen.
15
Lowlevel-Coding / Text Ausgabe unter PMode ...(umlauten)
« am: 22. July 2006, 12:47 »
Hmm... das weiß ich leider nicht genau... es ist kein Standard... der Standard umfasst nur 7bit, glaube ich... allerdings wird des auf einigermaßen jedem PC laufen... denke ich... wenn dir des net sicher genug ist, und du wirklich möchtest, dass es auf JEDEM PC 100%ig läuft.. dann nimm halt Unicode XD Aber dafür kannste den Textmodus 3 dann vergessen...
Eine andere möglichkeit ist, du stellst sicher, dass die VGA 8x16 Fonts an diesen 6 Codepositionen ( 0x81, 0x84, 0x8E, 0x94, 0x99, 0x9A ) wirklich den Bitmaps für die Umlaute entsprechen... wenn nicht überschreibst du sie halt mit deinen eigenen bitmaps für die umlaute
16
Lowlevel-Coding / Text Ausgabe unter PMode ...(umlauten)
« am: 22. July 2006, 02:17 »
Aaaaalso:
Der erweiterte ASCII-Zeichensatz hat die Umlaute und die kann man auch im Textmode 0x3 ausgeben... Benutze einfach die folgenden Codes:


Ä 0x8E   ä 0x84
Ö 0x99   ö 0x94
Ü 0x9A   ü 0x81


In NASM sieht das dann so aus:

msg0 db "Ich bin ein String mit den Umlauten:", 0x84, 0x94, 0x81,"." 0


Das würde dann, wenn du's ausgibst, so aussehen:

Ich bin ein String mit den Umlauten äöü.


Ich hoffe das hat dir geholfen...[/code]
17
Lowlevel-Coding / Grub and VBE mode 800x600 16bit Farbtiefe
« am: 21. July 2006, 20:51 »
Das Problem hat sich durch die wunderbare Mitarbeit bluecode's im ICQ geklärt... wer es wissen möchte... ick hab den loader vorher gehangt deswegen, ist der code, der den bildschirm färbt, nie ausgeführt worden... nochmal vielen dank an bluecode
18
Lowlevel-Coding / Break-SCanCode wird nicht gesendet ...
« am: 21. July 2006, 19:58 »
nagut alles klar ;) ich hab des ja auch noch nie gemacht, mit den breakcodes... aber gelesen habe ick darüber...ist aber auch schon länger her... LoL
19
Lowlevel-Coding / Grub and VBE mode 800x600 16bit Farbtiefe
« am: 21. July 2006, 19:41 »
Hat denn keiner hier in dieser wunderbaren Community eine Idee was falsch sein könnte?  :shock:  :(

Bitte helft mir! XD
20
Lowlevel-Coding / Break-SCanCode wird nicht gesendet ...
« am: 21. July 2006, 19:40 »
ähmm... ist das erste Byte vom Break net 0xE0?! Kann aber auch seien, dass ich mich irre...
Seiten: [1] 2 3 4

Einloggen