Salve lista! oggi vi propongo domande divertenti: ho letto l'articolo "writing your own toy OS", scritto da 3 studenti indiani che mi insegnano a scrivere un boot sector, a usare gli interrupt e a passare in modalità protetta. Io ho deciso di scopiazzare per farne una cosetta: un boot sector che avvia un programma scritto da me in Fortran. Ecco il boot sector:
LOC1=0x500 entry start start: mov ax,#LOC1 mov es,ax mov bx,#0 ;segment offset mov dl,#0 ;drive no. mov dh,#0 ;head no. mov ch,#0 ;track no. mov cl,#2 ;sector no.( 1..18 ) mov al,#1 ;no. of sectors tranferred mov ah,#2 ;function no. int 0x13 jmpi 0,#LOC1 che è paro paro quello proposto dai 3 studenti. Da quel che ho capito permette di saltare ad un settore del disco successivo, nel quale ho copiato l'eseguibile del programma fortran già compilato. Il tutto viene copiato su floppy dal seguente programma: #include <sys/types.h> /* unistd.h needs this */ #include <unistd.h> /* contains read/write */ #include <fcntl.h> int main() { char boot_buf[512]; char file_buf[7000]; int floppy_desc, file_desc; file_desc = open("./bsect", O_RDONLY); read(file_desc, boot_buf, 510); close(file_desc); boot_buf[510] = 0x55; boot_buf[511] = 0xaa; floppy_desc = open("/dev/sdb", O_RDWR); lseek(floppy_desc, 0, SEEK_SET); write(floppy_desc, boot_buf, 512); file_desc = open("./tempo", O_RDONLY); // tempo è il mio programmino read(file_desc, file_buf, 7000); close(file_desc); lseek(floppy_desc, 512, SEEK_SET); write(floppy_desc, file_buf, 7000); close(floppy_desc); return(0); } che è grosso modo identico a quello scritto dagli autori, solo che invece di copiare un programmino assembler fatto da loro, mette sul floppy il mio eseguibile. Io inserisco il floppy nel lettorino, e riavvio, ma il mio programmino non da segni di vita. Premetto che con le cose fatte da loro gira tutto. Dove sbaglio? grazie mille a chi ha la pazienza di leggere sin quiggiù. -- Per REVOCARE l'iscrizione alla lista, inviare un email a debian-italian-requ...@lists.debian.org con oggetto "unsubscribe". Per problemi inviare un email in INGLESE a listmas...@lists.debian.org To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/1299928806.4022.5.ca...@debian.fastwebnet.it