|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6598
|
Bootloader con Bochs
Ho scritto un piccolo bootloader che carica un kernel, il quale scrive un semplice messaggio a video. Ora, so che il bootloader deve stare nel primo settore del floppy, ed il kernel in quelli successivi. Inanzitutto, il kernel l'ho scritto in c++, compilato con il C++BuilderX. Il bootloader è in assembler e compilato con il Nasm. Credo che la procedura giusta sia inserire nel floppy prima il botloader e poi il kernel compilato, inserendo quindi il file con estensione obj. Vorrei fare il tutto con rawrite, ma non so come creare un'immagine del disco partendo da questi due file. Il tutto poi partirebbe in simulazione con il Bochs. Vi allego il kernel in c++, cosi' se c'è qualche errore potete dirmelo:
char *videomem = (char *) 0xb8000; /*da dove inizia la memoria della scheda video*/ void putc(char carattere){ *videomem++ = carattere; /*imposto il carattere*/ *videomem++ = 0x7; /*imposto gli attributi del carattere*/ } void putstring(char *stringa){ int i = 0; while(stringa[i]){ putc(stringa[i]); i++; } } void _start() { putstring("Ciao "); } |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
C++ BuilderX? ...ehm, assicurati di aver create un eseguibile binario...
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6598
|
Quote:
|
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Non so se il C++ Builder lo fa. Assicurati comunque di generare un "flat executable".
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6598
|
Quote:
|
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Quote:
Inannanzitutto: scrivere un bootloader non è facile. Bisogna rispettare dei precisi limiti (deve entrare tutto in un solo settore, quindi deve essere grande precisamente 512 byte e deve terminare con due byte, 0x55 e 0xAA) per farlo riconoscere al BIOS. Quindi: assicurati che il bootloader sia grande 512 byte e termini con 0xAA55, poi crea un singolo file che faccia da "immagine" per il floppy (visto che usi Rawrite e C++ Builder credo tu stia usando Windows
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
|
#7 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
daniele, lui voleva semplicemente sapere come fare a creare un file contenente un'immagine "raw" del floppy da scrivere poi direttamente con rawrite
unrue, per farlo puoi semplicemente scrivere un programma che: 1) apra il file del bootloader 2) lo ricopi tale e quale nel file di destinazione (quello che conterrà l'immagine del floppy da scrivere con rawrite) 3) scriva il kernel nel file di destinazione subito dopo il primo settore una volta fatto questo e riuscito a caricare il kernel col tuo bootloader, scoprirai che un file COFF a 32 bit non corrisponde esattamente a un binario puro... buon lavoro |
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Quote:
ciao
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:13.



















