cvs.gedasymbols.org/archives/browse.cgi | search |
From: | Clemens Valens <c DOT valens AT mindless DOT com> |
Newsgroups: | comp.os.msdos.djgpp |
Subject: | Re: How to restart computer? |
Organization: | http://www.remarq.com: The World's Usenet/Discussions Start Here |
X-Originating-Host: | 195.154.148.69 |
X-Wren-Trace: | cI2qip+N0bObydmkncrMxMvezd3S2p3B3dDC393AzY3T0pjC0pjMzdDY0cbVlN6ZwpeAjp/cqaWBkMOAksiKlsbOg4k= |
Message-ID: | <933769851.26224@www.remarq.com> |
References: | <7o8r5i$2r9q$1 AT ns DOT felk DOT cvut DOT cz> |
Lines: | 47 |
Date: | Wed, 04 Aug 1999 04:30:47 -0800 |
NNTP-Posting-Host: | 10.0.3.195 |
X-Complaints-To: | wrenabuse AT remarq DOT com |
X-Trace: | WReNphoon3 933769585 10.0.3.195 (Wed, 04 Aug 1999 05:26:25 PDT) |
NNTP-Posting-Date: | Wed, 04 Aug 1999 05:26:25 PDT |
To: | djgpp AT delorie DOT com |
DJ-Gateway: | from newsgroup comp.os.msdos.djgpp |
Reply-To: | djgpp AT delorie DOT com |
You are in luck, I had to do the same and came up with this code (it works very well): /* * Reboot the PC by simulating a ctrl-alt-del. * Based on Frank van Gilluwe's "The Undocumented PC" */ int reboot(void) { volatile char kb_status; unsigned short int i, timeout = 1; while ((kb_status=inportb(0x64))&0x02) { i=1; while(i) i++; /* Slow down I/O access. */ timeout++; if (!timeout) goto reboot_error; } outportb(0x64,0xfe); i=1; while(i) i++; /* Slow down I/O access. */ /* * If all went well you should never get below this line. */ while ((kb_status=inportb(0x64))&0x02) { i=1; while(i) i++; /* Slow down I/O access. */ timeout++; if (!timeout) goto reboot_error; } return 0; reboot_error: return -1; } I have only tested it with DJGPP, but normally it should work with BC as well. Clemens * Sent from RemarQ http://www.remarq.com The Internet's Discussion Network * The fastest and easiest way to search and participate in Usenet - Free!
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |