[comp.sys.ibm.pc] warm/cold reboot on a IBM-PC

ajr@inesc.UUCP (Julio Raposo) (01/17/90)

	I hope this can help some of you out there.

	After the recent postings about cold and warm reboot by jumping
	to adress FFFF:0000, I decided to find out why it always did a cold
	reboot on my computer, although pressing the Ctrl-Alt-Del keys gave
	a warm reboot. I found out that the value I have to load into adress
	0000:0472 (I'm writing it from memory, don't torch me if it is the
	wrong adress, please look in the previous postings) is NOT 1234, or,
	in C programs, ~0x1234. My ROM Bios has a NOT instruction to that
	memory adress before the test, thats why the warm boot didn't work.
	Changing the value from 1234 to NOT 1234 (don't be confused) gave me
	the warm boot I was looking for.

						Antonio Julio Raposo

					  (ajr@inesc.pt - LISBOA - PORTUGAL)


P.S.: My BIOS is Schneider (German made) for MS-DOS 3.3

Disclaimer: My boss knows nothing about this, I hope he never finds out.
	    All standart disclaimers apply.

risto@tuura.UUCP (Risto Lankinen) (01/22/90)

Someone (myself being most inexperienced net-user I couldnt check *who*)
wrote that the PC reboot was equally succesful either with JMP FFFF:0 or
F000:FFF0 .  The MS-DOS debugger revealed another JMP FAR in that location,
but for *any* Intel-based computer this does not apply.

I dont have the relevant Intel specs within reach right now, but I believe
I have seen that documented as a difference between different "x":s in
80x86 processor types.  So, any ROM code expecting a particular segment
preloaded in boot-up will fail if executed with direct jump to an incorrect
segment address.
(Although IBM BIOSes are not such...)

BTW, I have also seen a list of uses for other registers in boot-up as
well.  Just after reset, certain register(s) in 80x86 (or at least 386)
conain information such as CPU version number, microcode checksums etc.
I wonder, if any of the processor detection routines around will utilize
this stuff...

Risto Lankinen


--