ID Number: Q47634
5.00 5.10 6.00 6.00a 6.00ax 7.00
MS-DOS
Summary:
In Microsoft C versions 5.0, 5.1, 6.0, 6.0a, 6.0ax, and C/C++ version
7.0, you can do a complete reboot on an 8086-based machine by jumping
to the address F000:FFF0. This action also reboots many 80286 and
80386 machines. The address contains a jump instruction that leads to
the machine's initialization code. For this method to succeed, your
machine must be in real-mode operation.
To prevent a memory check (on IBM and many compatibles), you should
store the value 0x1234 in the memory location at 0040:0072.
The following functions reboot your system without a memory check. If
you want to allow the memory check to occur, you must remove the
single-line comment delimiters (//) from the lines involving "memchk".
//int far *memchk ;
void (far *reboot)( void ) = (void far *)0xf000fff0 ;
void main ( void )
{
// memchk = (int far *)0x00400072 ; /* Address of mem. check control */
// *memchk = 0x1234 ; /* Disable memory check */
(*reboot)() ; /* Reboot your machine */
}
Additional reference words: 5.00 5.10 6.00 6.00a 6.00ax 7.00