corry@eniac.seas.upenn.edu (Chris Corry) (12/13/90)
Hi. I'm writing a program that, under certain conditions, needs to reboot the computer. I figured that this was a simple generation of interrupt 25 (hex 19). However, everytime I try to use this mechanism (using geninterrupt or int86 from Turbo C) the computer hangs. Anyone have any ideas? Please mail or post and I'll summarize if there seems to be an interest (I can't belive that I'm the only person who has run into this problem. Then again I'm probably doing something stupid.) THANXS! Chris Corry corry@eniac.seas.upenn.edu
v087mxgb@ubvmsd.cc.buffalo.edu (Shawn E Thompson) (12/13/90)
In article <34681@netnews.upenn.edu>, corry@eniac.seas.upenn.edu (Chris Corry) writes...
I think assy lang int (19, I think) will call the bootstrap,
maybe you could link to that ??? I've used it from DOS, works
well in batch files .
ST
Ralf.Brown@B.GP.CS.CMU.EDU (12/13/90)
In article <34681@netnews.upenn.edu>, corry@eniac.seas.upenn.edu (Chris Corry) wrote: }I'm writing a program that, under certain conditions, needs to reboot the }computer. I figured that this was a simple generation of interrupt 25 (hex 19). }However, everytime I try to use this mechanism (using geninterrupt or int86 }from Turbo C) the computer hangs. Anyone have any ideas? Please mail or post From the interrupt list: INT 19 - DISK BOOT causes reboot of disk system (no memory test performed, interrupt vectors preserved). Because interrupt vectors are preserved, this interrupt usually causes a system hang if any TSRs have hooked vectors from 00h through 1Ch, particularly INT 08. Notes: to accomplish a warm boot equivalent to Ctrl-Alt-Del, store 1234h in 0040h:0072h and jump to FFFFh:0000h. For a cold boot equivalent to a reset, store 0000h at 0040h:0072h before jumping. VDISK.SYS hooks this interrupt to allow applications to find out how much extended memory has been used by VDISKs (the three bytes at offset 2Ch in the INT 19 handler's segment contain the linear address of the first free extended memory). -- UUCP: {ucbvax,harvard}!cs.cmu.edu!ralf -=- 412-268-3053 (school) -=- FAX: ask ARPA: ralf@cs.cmu.edu BIT: ralf%cs.cmu.edu@CMUCCVMA FIDO: 1:129/3.1 Disclaimer? | I was gratified to be able to answer promptly, and I did. What's that? | I said I didn't know. --Mark Twain
jc58+@andrew.cmu.edu (Johnny J. Chin) (12/13/90)
Excerpts From Captions of msdos: 30-Nov-90 Rebooting (SUMMARY) John Clinton Hall@wpi.WP (686) >In summary, to perform a system warm boot on the IBM, put the word 1234h in >location 0040h:0072h and JMP to location 0FFFFh:0000h. For example, the >following Debug code performs a warm boot: > > MOV AX,0040 > MOV DS,AX > MOV AX,1234 > MOV [0072],AX > JMP FFFF:0000 > >To cold boot the computer, just JMP 0FFFF:0000h. >-- >The highest sounds are hardest to hear. ## ## ## ##### ## jhall@wpi.wpi.edu >Going forward is a way to retreat. ## ## ## ## ## ## Worcester >Great talent shows itself late in life. ## ## ## ##### ## Polytechnic >Even a perfect program still has bugs. ######## ## ## Institute I hope that this little piece of assembly code will help you. The call to INT 19h sometimes causes the system to hang, because it only reloads the bootstrap. If you have something memory resident at this point, it will not get cleared and usually cause the system to hang. The above piece of assembly code does a reboot after clearing relocated interrupts (usually changed by memory resident programs) and resetting memory. Cold boot will cause the computer to go through the system memory check that is performed during the POST (power-on self-test); warm boot is a <ctrl-alt-del>. __________ Carnegie Mellon University ___ / \ / / /_/ / /\/ _/ / / / "Happy Computing ..." __/. /__ / / / / / / / / -- Computer Dr. / / Internet: Johnny.J.Chin@andrew.cmu.edu / ------- / 4730 Centre Ave. #412 BITnet: jc58@andrew \__________/ Pittsburgh, PA 15213 UUCP: ...!uunet!andrew.cmu.edu!jc58
valley@uchicago (Doug Dougherty) (12/14/90)
corry@eniac.seas.upenn.edu (Chris Corry) writes: >Hi. >I'm writing a program that, under certain conditions, needs to reboot the >computer. I figured that this was a simple generation of interrupt 25 (hex 19). >However, everytime I try to use this mechanism (using geninterrupt or int86 >from Turbo C) the computer hangs. Anyone have any ideas? Please mail or post >and I'll summarize if there seems to be an interest (I can't belive that I'm >the only person who has run into this problem. Then again I'm probably doing >something stupid.) >THANXS! >Chris Corry >corry@eniac.seas.upenn.edu This is becoming an FAQ. MOV AX,40 MOV DS,AX MOV AX,1234 MOV [72],AX JMP FFFF:0
raymond@purina.berkeley.edu (Raymond Chen) (12/14/90)
In article <valley.661107789@gsbsun> valley@uchicago (Doug Dougherty) writes: >This is becoming an FAQ. It already *is* an FAQ. Question number 2.3. |2.3) How do I reboot my computer via software? | | Although some people will suggest using interrupt 19h, that method has | its problems since it doesn't reset lots of things (e.g., the | interrupt vectors). A more effective method is to store the magic | number 0x1234 into 0x40:0x0072 and then perform a long jump to | 0xffff:0x0000. The magic number suppresses the memory test. Sometimes I really wonder if people read the FAQ at all...
stever@Octopus.COM (Steve Resnick ) (12/15/90)
In article <51045@eerie.acsu.Buffalo.EDU> v087mxgb@ubvmsd.cc.buffalo.edu writes: >In article <34681@netnews.upenn.edu>, corry@eniac.seas.upenn.edu (Chris Corry) writes... > >I think assy lang int (19, I think) will call the bootstrap, >maybe you could link to that ??? I've used it from DOS, works >well in batch files . > On what machine with what OS, hardware & drivers? A LOT of BIOS extensions, device drivers, and OE's (DESQview and Windows) intercept and functionally remove this service. INT 19H should really not be used, as it doesn't do a lot of house-cleaning that a re-boot does. (Remember, int 19 just performs a boot-strap load). This is already in the FAQ list (come on people, read the FAQ first!) To do a cold boot, make a jump to FFFF:0, to do a warm boot write a 1234H into address 0:472H then make a jump to FFFF:0, this will boot the machine without running the POST. This is a much more bulletproof meathod. Hope this helps .... Steve -- ---------------------------------------------------------------------------- steve.resnick@f105.n143.z1.FIDONET.ORG - or - apple!camphq!105!steve.resnick Flames, grammar errors, spelling errrors >/dev/nul The Asylum OS/2 BBS - (408)263-8017 IFNA 1:143/105.0