summaryrefslogtreecommitdiff
path: root/reference/C/CONTRIB/SNIP/reboot.c
diff options
context:
space:
mode:
Diffstat (limited to 'reference/C/CONTRIB/SNIP/reboot.c')
-rwxr-xr-xreference/C/CONTRIB/SNIP/reboot.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/reference/C/CONTRIB/SNIP/reboot.c b/reference/C/CONTRIB/SNIP/reboot.c
new file mode 100755
index 0000000..88a93d0
--- /dev/null
+++ b/reference/C/CONTRIB/SNIP/reboot.c
@@ -0,0 +1,32 @@
+/*
+** Public domain demo to reboot a PC
+*/
+
+#ifdef __TURBOC__
+ #define FAR far
+#else
+ #define FAR _far
+#endif
+
+short FAR *bios_post = (short FAR *)0x00400072;
+void (FAR * boot)(void) = (void (FAR *)())0xffff0000;
+
+void reboot(warm)
+{
+ if (warm)
+ *bios_post = 0x1234;
+ else *bios_post = 0;
+ boot();
+}
+
+#ifdef TEST
+
+#include <stdio.h>
+
+void main(void)
+{
+ puts("The computer should do a cold start");
+ reboot(0);
+}
+
+#endif /* TEST */