Einzelnen Beitrag anzeigen

Benutzerbild von mwiesbau
mwiesbau

Registriert seit: 27. Mai 2003
57 Beiträge
 
Delphi 7 Enterprise
 
#21

UND ES GEHT DOCH MIT DELPHI

  Alt 14. Jan 2004, 19:11
Wenn du mit Delphi (Pascal) ein eigenes Betriebsystem schreiben willst musst du dir zu erst einen Bootloader schreiben.

Du musst nur deinen Kernel soweit entwickeln um Delphi sourcecode kompilieren und verarbeiten zu können.


Mein tipp für alle die ein eigenes Betriebsystem Programmieren wollen:

nehmt euch ein mini Linux und entwickelt es weiter.



http://web105.essen082.server4free.de/lowlevel/

Das nimmst du und Speicherst es in einem file z.b.: Bootloader.asm
------

org 0x7C00
;--------------------------------------------------------
;Bootloader
;--------------------------------------------------------
start:
cli ; Keine Interrupts verwenden!
mov ax, 0x9000 ; Adresse des Stack speichern
mov ss, ax ; Stackadresse festlegen
mov sp, 0 ; Stackpointer auf 0 setzen
sti ; Jetzt lassen wir wieder Interrupts zu

mov [bootdriv], dl ; Bootlaufwerk aus DL speichern

call load ; Lade Kernel
mov ax, 0x1000 ; 0x1000 ist die Speicheradresse unserer Shell
mov es, ax
mov ds, ax
push ax
mov ax, 0
push ax
retf

bootdriv db 0 ; Das Bootlaufwerk
loadmsg db "Lade ...WieOS 0.09",13,10,0

; Mit dieser Funktion geben wir einen String aus
putstr:
lodsb
or al,al
jz short putstrd
mov ah,0x0E
mov bx,0x0007
int 0x10
jmp putstr
putstrd:
retn

; Mit dieser Funktion laden wir unseren Kernel vom Bootlaufwerk
load:
push ds
mov ax, 0
mov dl, [bootdriv]
int 13h
pop ds
jc load

load1:
mov ax,0x1000
mov es,ax
mov bx, 0
mov ah, 2
mov al, 5
mov cx, 2
mov dx, 0
int 13h
jc load1
mov si,loadmsg
call putstr
retn
times 512-($-$$)-2 db 0
dw 0AA55h

----------------------------------

Wenn du das hast besorgst du dir gleich den NASM (Netwide Asembler)
und machst dir eine Binary daraus --> nasm -f bin -o bootloader.bin bootloader.asm

Als nächstes kommt dein eigener Kernel
--------------------------------------------------------
mov ax, 1000h
mov ds, ax
mov es, ax

start: ; Hier fängt unser eigentliches "Betriebssystem" an
mov si, msg_0 ; Wir zeigen einfach nur einen String an
call schreiben

mov si, msg_1
call schreiben

mov si, msg_2
call schreiben ; "schreiben" gibt den String am Bildschirm aus

call lesen ; "lesen" wartet bis eine Taste gedrückt wurde
jmp reset ; Danach wird die Funktion "reset" aufgerufen

msg_0 db "WieOS 0.09 started...",13,10,0
msg_1 db "Programmed and Developped by hdkiller",10,0
msg_2 db "Press any key to reboot",10,0

schreiben:
lodsb
or al, al
jz short schreiben_d
mov ah, 0x0E
mov bx, 0x0007
int 0x10
jmp schreiben

schreiben_d:
retn

lesen:
mov ah, 0
int 016h
ret

reset:
db 0Eah
dw 0000h
dw 0FFFFh
-----------------------------------------
Wieder Speichern in z.b.: Kernel.asm
und natürlich wieder die binary erzeugen.

jezt Fügst du die beiden binarys zu einem Image zusammen --> copy bootloader.bin+kernel.bin betriebssystem.raw

das ganze jetzt mit rawrite auf diskette schreiben und booten


War doch nicht so schwer oder ??
qui s'excuse, saccuse
(Wer sich entschuldigt, klagt sich an)
  Mit Zitat antworten Zitat