Ahora vamos a lo que nos reúne, el Bootloader. Como muchos ya me han dicho, puede ser más fácil utilizar GRUB, pero la verdad yo almenos no entiendo como m***** hacerlo funcionar -.-
Por esto que decidí hacer uno propio que simplemente muestre un mensaje. Por ahora eso puede ser suficiente.
Estoy buscando información sobre como leer el segundo sector del floppy y así ejecutar un kernel que hasta ahora estaría programado en C, por favor si alguien tenga esa información puede comentar aquí o enviarlo a mi correo feelipee.024@hotmail.com.
Acá va el código:
;NuOS Kernel.
;Copyright (C) 2011 Felipe Cabrera
;This program is free software: you can redistribute it and/or modify
;it under the terms of the GNU General Public License as published by
;the Free Software Foundation, either version 3 of the License, or
;(at your option) any later version.
;This program is distributed in the hope that it will be useful,
;but WITHOUT ANY WARRANTY; without even the implied warranty of
;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;GNU General Public License for more details.
;You should have received a copy of the GNU General Public License
;along with this program. If not, see <http://www.gnu.org/licenses/>.
;------------------------------boot.asm----------------------------------;
[BITS 16] ;Indica al compilador NASM (el que yo
;utilizo) que el Bootloader se ejecuta
;en Modo Real (16 Bits)
[ORG 0x7c00] ;No tengo ni p*** idea de que es esto
xor ax, ax ;declaraciones,
mov ds, ax ;declaraciones
mov ecx, 0xFF ;y mas declaraciones...
cli ;Desactiva las interrupciones
sti ;Inicializa las interrupciones
mov si, msg ;Mueve el contenido de 'msg' a 'si'
ch_loop:lodsb ;Creo que me faltaba algo...
or al, al ;...mas declaraciones -.-
jz hang ;
mov ah, 0x0E ;Mueve 0x0E a 'ah'
int 0x10 ;llama a la interrupción 0x10
;(Imprimir en pantalla)
jmp ch_loop
hang:
jmp hang
msg db 'Inicializado', 13, 10, 0 ;'msg' es el texto a escribir
;ahora indicamos que el texto sera
;'Inicializado'
times 510-($-$$) db 0 ;Indica que todo lo anterior usa 510 bits
db 0x55 ;Declaración: el bit 511 corresponde a 0x55
db 0xAA ;Declaración(sabías que odio las
;declaraciones?): el bit 512 es 0xAA
;Así es como se completan los 512 bits del primer sector del floppy (MBR)
;Recuerda que para compilar debes escribir en la terminal:; ~$ nasm boot.asm -o boot.bin;y para guardarlo en una imagen de floppy; ~$ dd if=boot.asm of=floppy;Recuerda ademas que si no tienes instalado NASM; ~$ sudo aptitude install nasm
Cualquier cosa nueva que añada será escrita en este blog, el cuál seguirá mi travesía dentro del mundo de la programación de Sistemas Operativos -.-
Hola que tal, espero y aun sigas escribiendo el SO, tu info es muy buena, yo tambien soy aficionado bueno y estudiante, pero una cosa:
ResponderBorrarComo guardas esta informacion en el disco duro? digo windows lo utilizaria como un usb como lo compilas o lo guardas en una memoria para el arranque de una maquina?