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

Seiten: [1]
1
Lowlevel-Coding / Floppy Laufwerk
« am: 19. May 2006, 18:20 »
Wenn ich den Bootloader auf die Diskette kopiert habe, möchte ich auch den Kernel auf die Diskette kopieren, TeeJay schreibt, man soll einfach im Explorer den Kernel auf die mit Rawrite beschriebene Diskette kopieren, da ich aber Linux benutze, wollte ich wissen wie das mit Linux geht, da Konqueror immer sagt das das Laufwerk nur lesbar ist Wenn ich die Kernel.bin dann mit "cp" auf die Floppy kopiere sagt QEMU not a bootable disk.
2
Lowlevel-Coding / Floppy Laufwerk
« am: 19. May 2006, 17:21 »
Hi, also das mit der Diskette hat jetzt funtkioniert, ich habe aber noch eine Frage und zwar bei TeeJays Bootloader Tutorial, da schreibe ich die Bootsec.bin mittels "dd" auf die Diskette, aber wie kopier ich dann den Kernel auf die Diskette, weil eer mir immer anzeigt "File not Found"(also der Boootloader).

MFG MRBIGBRAIN
3
Lowlevel-Coding / Floppy Laufwerk
« am: 16. May 2006, 17:49 »
Daran lags auch nicht, ich habe jetzt einen neuen Kernel mit dem Code vom Lowlevel magazin erstellt, aber auch da tut sich nix.
Jetzt mal ne ganz doofe frage :D wenn man den Standard Kernel und den Bootloader vom Lowlevel Magazin benutzt und in den Kernel:

mov ah,0h
mov dl,0h
int 13h

schreibt, müsste doch wenigstens das Floppy Lämpchen leuchten, oder?Ich habe das ganze auch mal mit einem anderen PC ausprobiert, auch da funktioniert das nicht.
4
Lowlevel-Coding / Floppy Laufwerk
« am: 15. May 2006, 18:26 »
Hallo, beim folgenden Code passiert garnix, es geht noch nichtmal das Diskettenlaufwerk an:

 mov ah,0
 mov dl,0
 int 13h
 mov ah, 3
 mov al, 17
 mov ch, 0
 mov cl, 0
 xor dx, dx
 mov ax, ds
 mov es, ax
 mov bx, format_start
 int 13h


Wisst ihr woran das liegT?
5
Lowlevel-Coding / NASM Datei Include funktioniert nicht
« am: 14. May 2006, 12:15 »
Danke!!!, das mit dem includieren funktioniert jetzt, ich hab jetzt aber noch ein Problem und zwar wenn ich folgenden Code ausführe,soll das Diskettenlafuwerk eine Diskette formatieren, es wird die Meldung "Format" auf den Bildschirm geschrieben, doch mit dem Floppy Laufwerk passiert garnichts:

shell_format:
printf msg_format
mov ah, 0             ; Erstes Diskettenlaufwerk
mov dl, 0             ; Laufwerk zurücksetzen
int 13h               ; int
 
jc shell_format          ; fehler? nochmal
 diskformat:
 mov cx, 1             ; Cylinder=0 Sektor=0
 mov dx, 0             ; erstes diskettenlaufwerk, Head=0
 mov ax, ds            
 mov es, ax            ; segment
 mov bx, format_start  ; offset
 mov ah, 3             ; sektoren schreiben
 mov al, 19            ; 19 stück
 int 13h               ; int


Ich werde noch verrückt dieses schei** Floppylaufwerk, hat keiner ne Idee?
6
Lowlevel-Coding / NASM Datei Include funktioniert nicht
« am: 13. May 2006, 20:50 »
Hallo, ich habe schon die Suchfunktion benutz und auch was gefunden, aber das half mir nicht weiter.
Ich habe z.B. in der Datei Kernel.asm  ein Makro "print" definiert und möchte nun in der Datei "IO.asm" darauf zugreifen, ist das möglich?
Denn wenn ich %include "kernel.asm" in "IO.asm" schreibe kommt immer:"parser: instruction expected". Wenn ich jetzt auch in der "IO.asm" die Datei Kernel.asm inkludiere steht da Cannot open Kerenl.asm und cannot open IO.asm.

Ich hoffe ihr könnt mir helfen, danke schonmal im voraus.
7
Lowlevel-Coding / QEMU Loading... Problem behoben
« am: 13. May 2006, 13:53 »
Hallo, da ich mit QEMU das Problem hatte und anscheinend auch andere hier aus dem Forum, dass der Bootloader den Kernel lädt, aber nur "loading..." zu sehen war und nicht "Stupid OS 1.0", suchte ich eine Lösung und fand sie auch  :D .

1.
Mit NASM alle Dateien assemblieren wie im Lowlevel Magazin 1 beschrieben.
2.
Die Dateien Boot.bin und Kernel.bin zu myOs.img zusammenkopieren (auch wie im Magazin erklärt).
3.
Ich gehe davon aus, dass ihr bei Windows den Path zu eurem QEMU Verzeichniss ergänzt habt, oder ihr euch in dem QEMU Verzeichniss befindet.
4.
Jetzt kommt das wichtige, nur so hat es bei mir funktioniert:
Ihr gebt in eurer Shell(Linux) oder Kommandozeile(Windows)
"qemu-img create harddisk.img 5M" ein, dass bewirkt das ihr ein Image mit der Größe 5Megabyte(ihr könnt dei Größe natürlich beliebig ändern) erzeugt.
5.
Nun die Datei myOs.img und harddisk.img zusammenkopieren.
6.
Als letzten Schritt das Image mit QEMU "booten".
qemu -fda myOs.img -boot a

Ich hoffe es hat bei euch funktioniert, ihr könnt ja mal eure Erfolgsmeldungen
:wink: Posten.

MFG MrBigBrain
8
Lowlevel-Coding / Welcher Emulator für Linux?
« am: 29. January 2006, 11:08 »
Hallo, ich wollte euch fragen welchen Emulator ich für Linux benutzen soll um mein "OS" zu starten? QEMU hab ich schon probiert aber da steht immer loading... und der Kernel wird nicht gestartet. Das Problem hatten ja schon viele hier im Forum und konnten es nicht lösen.

MFG MrBigBrain
9
Lowlevel-Coding / OS programmieren unter Linux
« am: 31. December 2005, 17:03 »
Also das ist der Bootloader und der Kernel aus dem Lowlevel 1 Magazin.
Bootloader:

org 0x7C00 ; Unsere Startadresse

; -----------------------------------------
; Unser Bootloader
; -----------------------------------------

start:
                ; Erst brauchen wir einen Stack.
cli             ; Keine Interrupts!
mov ax, 0x9000  ; Stackadresse
mov ss, ax      ; SS = 9000 (unser Stack)
mov sp, 0       ; SP = 0000  (der Stackpointer)
sti             ; Interrupts zulassen

; Bootlaufwerk aus DL speichern
mov [bootdrv], dl

;Lade unseren Kernel
call load

;Springe zu diesem Kernel
mov ax, 0x1000 ; Die Adresse des Programms
mov es, ax     ; Segmentregister updaten
mov ds, ax
push ax
mov ax, 0
push ax
retf

; ----------------------------------------------
; Funktionen und Variablen
; ----------------------------------------------

bootdrv db 0 ;Das Bootlaufwerk
loadmsg db "Loading...",13,10,0

; Einen String ausgeben:
putstr:
lodsb             ; Byte laden
or al,al
jz short putstrd  ; 0-Byte? -> Ende!

mov ah,0x0E       ; Funktion 0x0E
mov bx,0x0007     ; Attribut-Byte (wird nicht benötigt)
int 0x10          ; schreiben
jmp putstr        ; Nächstes Byte
putstrd:
retn

; Lade den Kernel vom Bootlaufwerk
load:

; Diskdrive reset (Interrupt 13h, 0)
push ds            ; Sichere DS
mov ax, 0          ; Die gewünschte Funktion (reset)
mov dl, [bootdrv]  ; Dieses Laufwerk ist gewünscht
int 13h            ; Den Interrupt ausführen
pop ds             ; DS wiederherstellen
jc load            ; Geht nicht? -> Noch mal!

load1:
mov ax,0x1000      ; ES:BX = 10000
mov es,ax
mov bx, 0

; Sektoren lesen (Interrupt 13h, 2)
mov ah, 2       ; Funktion 2 (Lesen)
mov al, 5       ; Lese 5 Sektoren
mov cx, 2       ; Cylinder=0, Sector=2
mov dx, 0       ; Head=0, Laufwerk=0
int 13h         ; ES:BX =  Daten vom Laufwerk
jc load1        ; Fehler? Noch mal!
mov si,loadmsg
call putstr     ; Meldung ausgeben
retn

times 512-($-$$)-2 db 0   ; Dateilänge: 512 Bytes
dw 0AA55h                 ; Bootsignatur



Kernel:

; ---------------------------------------------------
; Unser Kernel
; ---------------------------------------------------

mov ax, 1000h ; Segmentregister updaten
mov ds, ax
mov es, ax

start:
mov si, msg
call putstr   ; Schicke Bootmessage :)

mov si,msg_boot
call putstr   ; Noch eine Message :D

call getkey   ; Warte auf einen Tastendruck
jmp reboot    ; Reboot

; -------------------------------------------------
; Funktionen und Variablen
; -------------------------------------------------

msg db "Welcome to StupidOS 1.0",13,10,0
msg_boot db "Press any key...",10,0

; Stringausgabe
putstr:
lodsb            ; Byte laden
or al,al
jz short putstrd ; 0-Byte? -> Ende!
mov ah,0x0E      ; Funktion 0x0E
mov bx,0x0007    ; Atrribut-Byte
int 0x10         ; schreiben
jmp putstr       ; nächstes Byte
putstrd:
retn

; Warte auf einen Tastendruck
getkey:
mov ah, 0 ; Funktion 0
int 016h  ; Ausführen
ret

; Rebooten (HEX Dump).
reboot:
db 0EAh
dw 0000h
dw 0FFFFh



Kompilieren tue ich das ganze mit "nasm -f bin -o boot.bin boot.asm" und "nasm -f bin -o kernel.bin kernel.asm".
Dann kopiere ich das ganze zusammen "cat boot.bin kernel.bin >myOs.img".
Jetzt kopier ich das Image auf die Diskette "dd bs=2x80x18b <myOs.img> /dev/fda", danach starte ich QEMU mit "qemu -fda /dev/fd0". Im QEMU Fenster steht dann loading..., aber nicht "welcome to stupid OS". In der Konsole steht aber auch "Could not open '/dev/qvm86' - QEMU acceleration layer not activated".

mfg MrBigBrain
10
Lowlevel-Coding / OS programmieren unter Linux
« am: 30. December 2005, 16:18 »
Danke das zusammenkopieren hab ich jetzt hinbekommen, nur im QEMU Fenster steht halt nur "loading...", heißt das das mein Kernel garnicht aufgerufen wird?
11
Lowlevel-Coding / OS programmieren unter Linux
« am: 30. December 2005, 15:26 »
Hallo, ich habe eine Frage:
Benutzt einer von euch Linux zum OS programmieren, wenn ja wie kann man z.B kernel.bin und boot.bin zusammenkopieren? Mit "cp boot.bin>kernel.bin Os.img"?
Die zweite frage die ich habe, wenn ich QEMU mit "qemu -fda my.img -boot a" starte steht im QEMU Fenster nur loading, aber nicht die Meldung die der Kernel aus dem Lowlevel Magazin 1 ausgeben soll und ist es normal das im QEMU Fenster Bochs Bios steht?

Danke schonmal im voraus.
12
Lowlevel-Coding / Nasm C Befehl einbinden
« am: 23. October 2005, 19:42 »
Da hab ich leider keine Ahnung wie das geht.
13
Offtopic / Unser bekanntestes Mtglied
« am: 23. October 2005, 15:48 »
Auf Daniils Website sind Texte einer anderen Website die unter Copyright steht abgedruckt. Ich weis nicht ob er den Autor der Website gefragt hat ob er die Texte bei sich abdrucken darf. Der kopiert wahrscheinlich Texte von anderen Websiten und sagt dann er habe das geschrieben. Nunja soll mich ja nicht stören, der ist halt nicht ganz bei der sache.



MFG MrBigBrain
14
Lowlevel-Coding / Nasm C Befehl einbinden
« am: 23. October 2005, 12:56 »
Ich hatte mir die falsche DJGPP Version runtergeladen  :oops: . Auf www.osdever.net/ links dann auf downloads und dann bin ich auf DJGPP with installer without C++ support(6MB) gegangen. Nachdem ich dann den Kernel.c kompiliert hab konnte ich das ganze dann auch linken.
15
Lowlevel-Coding / Nasm C Befehl einbinden
« am: 23. October 2005, 12:32 »
So ich hab jetzt geschafft das ganze zu linken, allerdings wenn ich mit rawrite die boot.bin auf die diskette schreibe und die kernel.bin nicht auf die Diskette kopiere kommt natürlich vom Bootloader "file not found" .
So soll es ja auch sein, aber wenn ich jetzt noch die Kernel.bin auf die Diskette kopiere, also einfach mit dem Explorer dann kommt vom Bootloader "loading" aber es wird keine Meldung vom Kernel angezeigt.

Gibts da eine Lösung? Denn ich hab ja alles wie in Teejays tutorial gemacht.

MFG MrBigBrain
16
Lowlevel-Coding / Shell programmieren
« am: 22. October 2005, 22:04 »
Hallo, ich weis ja das hier so fragen nicht gern gesehen sind, aber wie mache ich das wenn der user "hallo" eingibt hallo mit einer Variable verglichen wird und wenn in der Variable auch hallo steht code ausgeführt wird. Also eigentlich wie die Eingabeaufforderung.

MFG MrBigBrain
17
Lowlevel-Coding / Nasm C Befehl einbinden
« am: 21. October 2005, 18:58 »
Die unterstriche hab ich entfernt hilft aber auch nix.
Os ist Windows XP Home.
18
Lowlevel-Coding / Nasm C Befehl einbinden
« am: 21. October 2005, 17:29 »
Hallo, ich bin grad dabei das Tutorial von TeeJay zu lesen.
Ich habe jetzt alles gemacht wie er, aber wenn ich dann alles linke kommt die Meldung "kernel32.obj:kernel32.obj:(.text+0x1): undefined reference to `_main'" ich weis das es hier im Forum bereits einen Thread über dieses Problem gibt, aber in dem Thread steht keine Lösung die bei mir funktioniert. Also es liegt wohl daran das NASM oder der Linker ld _main nicht finden können.
In C ist aber int main. Ich habe auch schon int _main ausprobiert jedoch klappte es auch so nicht.

Die kernel32.asm sieht so aus:

[Bits 32]

extern _main
global start
start:
jmp _main
stop:
jmp stop

Könnt ihr mir sagen was das Problem ist?
Seiten: [1]

Einloggen