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

Seiten: [1]
1
Lowlevel-Coding / Bootloader
« am: 11. September 2007, 19:36 »
Hallo,

ich habe hier meinen alten Bootloader gefunden ... wie findet ihr ihn, und ist er richtig? also er funktioniert schonmal:

Zitat
;==================================================;
;------------------- BootLoader -------------------;
;===    Ladet OS-Loader, und springt zu ihm.   ===;
;==================================================;

org 0x7C00            ; Startadresse
jmp start            ; springe!

;-----------------------------------------------

;===== dOkS-FS =====;
FS_ID          db 0xDA
FS_VERSION       db 0x00, 0x01
FS_FT_START_AT       db 2
FS_SEC_PER_CLS      db 8
FS_END_ID      db 0xDE

;-----------------------------------------------

;====== print Funktion =======;
;--- SI, Offset vom String ---;
;=============================;
print:
   .1:
   lodsb               ; nächstes Byte von SI
   or al, al            ; wenn 0, dann Schluss
   jz .2               ; ...
   mov ah, 0x0E            ; Die Funktion 0x0E
   int 0x10            ; Interrupt 0x10
   jmp .1
   .2:
   retn   

;-----------------------------------------------

;===== Start =====;
start:
   mov [bootdrv], dl         ; Bootlaufwerk sichern
   
   mov si, start_msg         ; Offset von start_msg nach si
   call print            ; Text ausgeben
   
   .1:
   ;=== Floppy resetten ===;
   mov si, flp_reset         ; Offset von der Nachricht
   call print            ; Text ausgeben
   mov ah, 0x00            ; Funktion 0x00
   mov dl, [bootdrv]         ; Bootlaufwerk (sollte aber 0 sein)
   int 0x13            ; Interrupt 0x13
   jc .1
   
   .2:
   ;=== Sectoren lesen ===;
   mov si, read_sec         ; Offset von der Nachricht
   call print            ; Text ausgeben
   mov ax, 0x800            ; Segmentadresse nach ax
   mov es, ax            ; ax nach es
   mov bx, 0            ; dx auf null
   
   mov ah, 0x02            ; Funktion 0x02
   mov al, [sec_to_read]         ; Anzahl der Sektoren zum Lesen
   mov ch, 0            ; Spur/Track 0
   mov cl, 2            ; Beginne bei Sektor 2
   mov dh, 0            ; Kopf/Head 0
   mov dl, [bootdrv]         ; Bootlaufwerk (sollte aber 0 sein)
   int 0x13   
   jc .2
   
   ;=== Springe zum OsLoader ===;
   mov si, jmp_to_osl         ; Offset von der Nachricht
   call print            ; Text ausgeben
   mov ax, 0x800            ; Adresse zum OS-Loader
   mov es, ax            ; Adresse nach es
   mov ds, ax            ; Adresse nach ds
   mov dl, [bootdrv]
   
   jmp 0x800:0x00            ; Far-Jump zum OS-Loader

jmp $                  ; Unendliche-Schleife

;-----------------------------------------------

;===== VARIBALEN =====;
bootdrv         db 0
sec_to_read      db 3
start_msg      db "Starte den dOkS-Bootloader ...",10,13,0
flp_reset      db "Setze Diskettenlaufwerk zurueck...",10,13,0
read_sec      db "Lese 4 Sektoren ...",10,13,0
jmp_to_osl      db "Lade den OS-Loader ...",10,13,0

;=== die Bootsignatur & 512 bytes ===;
times 512-($-$$)-2    db 0
dw 0xAA55

MfG
2
Offtopic / ToasterOS
« am: 25. June 2007, 16:52 »
3
Offtopic / Re: Hosen runter! Zeigt eure OS ;)
« am: 23. June 2007, 14:06 »
@bitmaster:

ehm, ich könnte dir Grafiken machen ...

Jedoch darfst du die dann nicht ohne meiner zustimmung diese verändern ...

Und irrgend wo sollte stehen, dass sie von mir sind ... Sonst kannst du sie nach bedarf verwenden.

MfG
Seiten: [1]

Einloggen