From 7e0f021a9aec35fd8e6725e87e3313b101d26f5e Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Sun, 27 Jan 2008 11:37:44 +0100 Subject: Initial import (2.0.2-6) --- reference/C/CONTRIB/SNIP/coldboot.asm | 42 +++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100755 reference/C/CONTRIB/SNIP/coldboot.asm (limited to 'reference/C/CONTRIB/SNIP/coldboot.asm') diff --git a/reference/C/CONTRIB/SNIP/coldboot.asm b/reference/C/CONTRIB/SNIP/coldboot.asm new file mode 100755 index 0000000..828c79d --- /dev/null +++ b/reference/C/CONTRIB/SNIP/coldboot.asm @@ -0,0 +1,42 @@ +; by: David Nugent via ECPROG echo +; +; works VERY reliably under all the protected mode environments I've +; tried (namely DV and PC-MOS). Haven't tried VM386 or NX386 yet, but +; I'm hopeful.... ;-) + + +BIOS_POST equ 0472H ; POST (warm boot) flag + + + xor BX,BX ; AL=1 for warm boot, 0 for cold + mov ES,BX + cmp AL,1 + jnz @NcB + mov AX,1234H ; Avoid POST +@NcB: + mov ES:[BIOS_POST],AX ; Install flag + + cli ; Reboot + xor AX,AX + mov DS,AX + mov ES,AX + mov SS,AX + mov SP,AX +@cP: + in AL,64H ; Wait on AT keyboard controller + test AL,2 + jne @cP + + xor AL,AL ; Try reset lines + out 64H,AL + iodelay + mov AL,0FEh + out 64H,AL + iodelay + mov AX,0002H ; Jump to reset vector + push AX ; via IRET + mov AX,0F000H + push AX + mov AX,0FFF0H + push AX + iret -- cgit v1.2.3-54-g00ecf