home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Simtel MSDOS 1996 September
/
Simtel-MSDOS-Sep1996-CD2.iso
/
disc2
/
c
/
reboot.c
< prev
next >
Wrap
Internet Message Format
|
1990-02-16
|
995b
Date: Thu Feb 15 18:05:39 GMT 1990
To: Info-IBMPC@WSMR-SIMTEL20.ARMY.MIL
From: Mike O'Carroll <lena!mike@relay.EU.net>
Subject: Reboot of PC
The program below works in TurboC (or MS C). In some compilers, you
have to fold the address to 20 bits, but here the segment and offset
are separate.
Mike O'Carroll, Microsystems Unit, University of Leeds, LS2 9JT, UK
E-mail: @ukc.ac.uk:mike@ee.leeds.ac.uk
UUCP: ...!mcsun!ukc!lena!mike or mike@lena.uucp
---cut-here---
#define MAGIC 0 /* for cold restart */
/* #define MAGIC 0x1234 /* for warm restart */
#define BOOT_SEG 0xffffL
#define BOOT_OFF 0x0000L
#define BOOT_ADR ((BOOT_SEG << 16) | BOOT_OFF)
#define DOS_SEG 0x0040L
#define RESET_FLAG 0x0072L
#define RESET_ADR ((DOS_SEG << 16) | RESET_FLAG)
main()
{
void ((far *fp)()) = (void (far *)()) BOOT_ADR;
*(int far *)RESET_ADR = MAGIC;
(*fp)();
return 0; /* never gets here, but keeps compiler happy */
}