Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - armizh

#181
Cita de: Khronos14 en 17 Diciembre 2011, 01:55 AM
Al mismo tiempo que una idea estúpida...
Sin embargo, en este tema nadie ha dicho algo de hacer un SO sin kernel. Quien comenzo el tema dijo que si debia hacer un kernel, ya que lo que el esta haciendo es un bootloader. Aun que si se le puede cuestionar el hecho de haber nombrado a LILO y GRUB, porque no los necesita, ¿no esta haciendo un boot?
Aunque no es tan estupido ni alocado hacer un SO sin kernel, ya que se puede hacer un interprete de comandos lo suficientemente pequeño como para que se encuentre junto al boot dentro de 512 bytes, pero el que lo haga sera un maestro. ;D
#182
Cita de: prometheus48 en 10 Diciembre 2011, 11:38 AM
¿Podría cargar un archivo hecho en C++, por ejemplo llamado main.cpp, que seria el sistema operativo?
En realidad no se si funcionaria porque como va a interpretar el ordenador el código en C++ si no tiene compilador o interpretador?
Osea:
¿Cómo hago para que en donde dice text_string db 'Hola Amigos de el hacker.net!', 0 se cargue un archivo de C++, que va a ser la línea de comandos (hecha por mí),?
Tengo que añadir algo al código?
¿O debería hacer un kernel?

Gracias chicos.
Salu2!
Por supuesto que si se puede, de hecho yo estoy en lo mismo pero ya no me interesa abrir un archivo cpp o c. Pero creo que tienes una idea equivocada sobre eso, porque tienes que compilar ambos programas, el bootloader y el kernel por separado, el bootloader deberia tener alguna función para cargar sectores la cual llamaras desde el main de tu bootloader, luego grabas el boot en un floppy (en el MBR) y el kernel lo grabas en el segundo sector del floppy.
Aca hay una excelente página que te muestra las interrupciones y sus usos, y hay una, la Int 13h que es para manejar el floppy y los discos duros.
http://www.ctyme.com/intr/rb-0607.htm
Yo tambien estoy en lo de crear un SO, y estoy desarrollando un blog en el que muestro mis avances, si te interesa vemos como te mando el link, ya que no quiero meterme en lios con el moderador -.-
Ahhh y se me olvidaba, la wikipedia tambien nos da información sobre como usar las interrupciones.
http://es.wikipedia.org/wiki/Llamadas_de_interrupci%C3%B3n_del_BIOS#Tabla_de_interrupciones
Somos pocos los que quedamos con ganas de crear nuestro propio sistema operativo :D
#183
Cita de: Eternal Idol en 11 Diciembre 2011, 21:04 PM
Eso no es codigo, lee el enlace completo de nuevo, sobre el final tenes un ejemplo:
Código (asm) [Seleccionar]
mov [0xb8000], 0x07690748

Igual sin saber assembly mucho mas que copiar y pegar no vas a estar haciendo la verdad ...

Siento defraudarte por dos razones: primero no soy ningun genio ni erudito del asm, estoy aprendiendo lo basico como para poder pasar ya a C o C++ o cualquier lenguaje para crear un kernel, y segundo, esto es una de las pocas cosas que he estado haciendo con copiar y pegar... Creo que me faltab algo: aun con el ejemplo no compila 'error: operation size not specified'
Realmente creo que hay veces en que nos gustaria que nos explicaran algo, especialmente a los que estamos comenzando. Gracias de todos modos
#184
Cita de: Eternal Idol en 11 Diciembre 2011, 20:18 PM
¿Leiste el enlace que deje? ¿Tenes alguna duda concreta?

Bueno, se supone que el orden es
0x000b8000: 'H', colourforH
cambio 'colourforH' por 0x07 que es lightgrey-on-black
pero a la hora de compilar me aparece 'error: label or instruction expected at start of line'
#185
Perdon por tantas preguntas tal vez estupidas, pero como se hace eso?
#186
Cita de: Eternal Idol en 11 Diciembre 2011, 16:23 PM
Escribe solo en modo real y escribe los 32 caracteres que le mandas escribir ...

CX = number of characters in string.


Ohhh jeje, siertamente fue un error estupido, debi haber revisado bien esa página anoche, o tal vez estaria medio dormido ;D
Pero, ahora me surge una nueva duda, realmente escribe solo en modo real y ya que pase a modo protegido simplemente no escribe lo segundo... ¿como se escribe en pantalla en modo protegido? Graciaas
#187
ASM / Duda sobre bootloader en paso a modo protegido
11 Diciembre 2011, 16:08 PM
Bueno la verdad, la duda no es sobre el paso a modo protegido, sino que no estoy seguro si esta funcionando como deberia. He buscado muchisima información pero nada ayuda a salir de mi duda.
Ahora explicando, pues el bootloader es bastante simple, arranca el sistema, muestra un mensaje, luego pasa a modo protegido y muestra otro mensaje, el problema es que el segundo mensaje no se imprime en la pantalla al 100 %. Cree un blog en el que voy publicando cualquier avance, y ahi esta mi duda.
Por cierto, el código está publicado y recién estoy empezando, la publicación del blog es INNECESARIA. Esto lo estoy haciendo para aprender y para que otras personas se animen a aprender.

Código (asm) [Seleccionar]
   ;----------------boot.asm------------------;
   [BITS 16]
   [ORG 0x7c00]

   jmp main

   bootmesg db "Loading... please wait... "
   pm_mesg  db "Switching to protected mode. "

   init:
      mov ax, cs
      mov ds, ax
      mov es, ax
      ret

   print_mesg :
      mov ah,0x13
      mov al,0x00
      mov bx,0x0007
      mov cx,0x20
      mov dx,0x0000
      int 0x10
      ret

   clrscr :
      mov ax,0x0600
      mov cx,0x0000
      mov dx,0x174f
      mov bh,0
      int 0x10
      ret

   switch_protected:
      cli
      mov eax, cr0
      or eax, 1
      mov cr0, eax
      jmp 0x08:protected_main

   main:
      call init
      call clrscr
      mov bp,bootmesg
      call print_mesg
      call switch_protected
      jmp main

   [BITS 32]
   protected_main:
      mov bp,pm_mesg
      call print_mesg
      jmp protected_main

   times 510-($-$$) db 0
   db 0x55
   db 0xAA