SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: Solman en Sábado 15 de Octubre de 2005, 01:50

Título: Bootear La Maquina Desde El Diskette
Publicado por: Solman en Sábado 15 de Octubre de 2005, 01:50
porfavor alguien sabe hacer un programa que haga que bootee la maquina desde el diskette pero con codigo en C bueno y si quieren utilizan una pisca de asm . porfavor ayudenme.
Título: Re: Bootear La Maquina Desde El Diskette
Publicado por: Alpha_ en Sábado 15 de Octubre de 2005, 06:53
A ver a ver... eso es configuración de la BIOS...

Por ende, el programa sería muy específico según el modelo...

Alguno sabe decir si es posible programar eso?
Título: Re: Bootear La Maquina Desde El Diskette
Publicado por: grifo en Sábado 15 de Octubre de 2005, 09:27
Pues se necesitaria hacer un sistema opartivo completo, que reconzca e lPC y lo haga funcionr esto es halgo dificil de lograr, que necesita hcer acaso???
Título: Re: Bootear La Maquina Desde El Diskette
Publicado por: Eternal Idol en Sábado 15 de Octubre de 2005, 12:08
La BIOS te carga, despues de eso dependes de instrucciones de ensamblador e interrupciones de la BIOS mientras estes en modo real (16 bits) que es el modo en que arranca toda PC desde una XT hasta un AMD de 64 bits.

Aca tenes un par de posts que te pueden servir (assembly):

http://foros.solocodigo.com/index.php?showtopic=16756 (http://foros.solocodigo.com/index.php?showtopic=16756)
http://foros.solocodigo.com/index.php?showtopic=16853 (http://foros.solocodigo.com/index.php?showtopic=16853)
Título: Re: Bootear La Maquina Desde El Diskette
Publicado por: Solman en Sábado 15 de Octubre de 2005, 19:54
Hola eternal
puedes ayudarme ha hacer un programa que bootee la maquina desde el diskette.  creo que si saltamos a FFFF:0000 podemos reiniciarla y tambien con la int 13h cuando ah=00h creo ayuda porfa
Título: Re: Bootear La Maquina Desde El Diskette
Publicado por: Solman en Sábado 15 de Octubre de 2005, 20:05
Puedes tan bien explicarme bien el funcionamiento de la bios en lo que resetea la maquina... ? porfavor eternal .
Título: Re: Bootear La Maquina Desde El Diskette
Publicado por: Eternal Idol en Sábado 15 de Octubre de 2005, 22:04
En el primer link anterior tenes dos ejemplos sobre codigo para bootear una PC.

Aca tenes la explicacion sobre el arranque de NT 5.1 (XP):
http://dotnetjunkies.com/WebLog/unknownref...cles/12284.aspx (http://dotnetjunkies.com/WebLog/unknownreference/articles/12284.aspx)

"The CPU loads the ROM BIOS starting at ROM memory address FFFF:0000 which is only 16 bytes from the top of ROM memory. As such it contains only a JMP (jump) instruction that points to the actual address of the ROM BIOS code."

Por lo tanto si saltas a esa direccion (FFFF:0000) es como si arrancaras la maquina nuevamente.
Título: Re: Bootear La Maquina Desde El Diskette
Publicado por: Alpha_ en Lunes 17 de Octubre de 2005, 04:39
Pero y toda la RAM? Y el sistema operativo ya cargado? Qué pasa con eso?
Título: Re: Bootear La Maquina Desde El Diskette
Publicado por: Eternal Idol en Lunes 17 de Octubre de 2005, 10:43
Cita de: "Alpha_"
Pero y toda la RAM? Y el sistema operativo ya cargado? Qué pasa con eso?
No entiendo muy bien que tiene que ver tu pregunta, el Sistema Operativo NO esta cargado. Lo que se carga es lo que la BIOS quiere, hay una lista de unidades incluso donde podes elegir el orden y desde cuales se intente cargar. Si se carga desde un diskette no hay ningun S.O. sino que en realidad lo que haya en el diskette sera el S.O. (por muy pobre que sea sera lo unico disponible).

 :devil:
Título: Re: Bootear La Maquina Desde El Diskette
Publicado por: Solman en Martes 18 de Octubre de 2005, 00:07
Hola eternal esta bien si saltamos a FFFF:0000 entonces podemos reiniciar la maquina ok pero yo no puedo poner en C o C++ la instruccion

jmp FFFF:0000 porque no es valido ,,,, entonces q deberia poner para q reinicie la maquina pero en C (si es q programas en c) a y otra cosa .
una vez reiniciada la maquina como hago para con unas cuantas instrucciones pueda configurar el setup sin tener que hacerlo manualmente para que cargue desde el diskette y no desde el disco duro. puedes explicar eso?
Título: Re: Bootear La Maquina Desde El Diskette
Publicado por: Eternal Idol en Martes 18 de Octubre de 2005, 09:50
Cita de: "Solman"
Hola eternal esta bien si saltamos a FFFF:0000 entonces podemos reiniciar la maquina ok pero yo no puedo poner en C o C++ la instruccion

jmp FFFF:0000 porque no es valido ,,,, entonces q deberia poner para q reinicie la maquina pero en C (si es q programas en c) a y otra cosa .
una vez reiniciada la maquina como hago para con unas cuantas instrucciones pueda configurar el setup sin tener que hacerlo manualmente para que cargue desde el diskette y no desde el disco duro. puedes explicar eso?
La verdad es que no programo en C/C++ en 16 bits, solo hago en 32 y 64 bits. Asi que me pase por google y encontre esto:

Código: Text
  1.  
  2. void Reboot()
  3. {
  4.   __emit__ ((unsigned char)    0xEA);  /* jmp far --> FFFF:0000  */
  5.   __emit__ ((unsigned short) 0x0000);  /* offset                 */
  6.   __emit__ ((unsigned short) 0xFFFF);  /* segment                */
  7. }
  8.  
  9.  

http://bbs.ee.ntu.edu.tw/boards/Programming/13/13.html (http://bbs.ee.ntu.edu.tw/boards/Programming/13/13.html)

Una vez reiniciada la maquina la BIOS ya toma el control y no podes ejecutar ninguna instruccion. Lo tenes que hacer con anterioridad y aca tenes un articulo al respecto:

http://www.codepedia.com/1/CMOS_C (http://www.codepedia.com/1/CMOS_C)

 :devil:  :devil:  :devil: