Path: utzoo!censor!geac!torsqnt!news-server.csri.toronto.edu!rutgers!cs.utexas.edu!samsung!rex!uflorida!haven!adm!news From: CDCKAB%EMUVM1.BITNET@cunyvm.cuny.edu ( Karl Brendel) Newsgroups: comp.lang.pascal Subject: Re: INT 019h question Message-ID: <25212@adm.brl.mil> Date: 7 Dec 90 14:33:23 GMT Sender: news@adm.brl.mil Lines: 54 On Thu, 6 Dec 90 10:41:48 EST, C0361@UNIVSCVM.BITNET (Thomas Jenkins) wrote: > I have a question which I'm directing to several lists. I've >gotten a request from a section here that deals with PCs. They are >updating the config .sys file on pcs, then rebooting. They wanted to >have the program reboot the system after changes are complete. When >asked, I said call int 019h. This will preform a warm boot. Didn't >work. All my references say 19h has no arguments and if a certain >memory location contains 1234h, no memory check is done, else a >memory check will occur. > Now I tried it. No luck. These are my attempts: [code deleted] >Now I'm really comfused! So, I look in my handy >_Mastering_Turbo_Assembler_ by Tom Swan: Sure enough there's a >rebooting module. The code uses the BIOSData segment to load the >1234h and then uses a JMP FAR to the reboot code!!! [remainder deleted] As others have pointed out, INT $19 is the bootstrap loader. Apparently its handling is one of the areas of frequent incompatibility. I note that TurboPower Software rejected the INT $19 approach in favor of the $1234, JMP FFFF:0000 approach, and that Neil Rubenking published an inline version of the latter method years back in PC Magazine. I'm sure I have read before of common (but probably _not_ IBM) systems hanging from calling INT $19. JMP FFFF:0000 does not always work either: Depending on configuration, memory managers such as QEMM will fail to detect your intent to reboot and will hang the system or the wrong type of boot will be performed. On a Compaq 386 20/e running Compaq MS-DOS 3.31, with nothing but DOS loaded, I see that the INT $19 code does not soon lead to the same code that the JMP FFFF:0000 code leads to. (I tired of debugging it after seeing that it didn't go there quickly. I also searched for the bytes corresponding to the real target of the JMP FFFF:0000 (which is a JMP to a JMP) and didn't find them anywhere near the INT $19 code.) The point of this article is to confirm that you apparently can't count on $19 working for rebooting a variety of systems; that even JMP FFFF:0000 isn't 100% reliable, and that the two approaches weren't necessarily going to do the same thing in the first place. +--------------------------------------------------------------------+ | Karl Brendel Centers for Disease Control | | Internet: CDCKAB@EMUVM1.BITNET Epidemiology Program Office | | Bitnet: CDCKAB@EMUVM1 Atlanta, GA, USA | | Home of Epi Info 5.0 | +--------------------------------------------------------------------+