PAGE ,132 TITLE REBOOT -- Command to Force a Reboot %OUT History ; reboot.asm 20 Mar 85 Craig Milo Rogers at USC/ISI ; Copied from Info-IBMPC Digest V4 #34, made format changes, ; and fixed bugs. The original was by Joeseph M. Newcomer, ; based on REBOOT.SEQ in the Info-IBMPC library. ; This program reboots your IBM-PC, but omits the memory ; diagnostic. WARNING! There is code here which is very ; BIOS dependent! ; The following commands should remake this program: ; MASM REBOOT; ; LINK REBOOT; ; EXE2BIN REBOOT ; RENAME REBOOT.BIN REBOOT.COM ; DEL REBOOT.EXE PAGE %OUT BIOS RAM Locations BIOSCOM SEGMENT AT 40H ORG BIOSCOM+72H RESET_FLAG DW ; Warm/cold restart flag. BIOSCOM ENDS PAGE %OUT Start of Program and Data ; The following location (RESTART) holds the address of the ; label START in the IBMPC ROM BIOS. Jumping to START does a cold ; boot, but skips the RAM check step. Warning! The address of START ; may be different in IBM-PC clones, or even in later releases of IBM ; BIOS. CODESEG SEGMENT 'CODE' ; Start the code segment ASSUME CS:CODESEG ASSUME DS:CODESEG ORG 100H ; Beginning of code area. BEGIN: JMP SHORT CLRBFI ; Jump around data area. RESTART LABEL DWORD DW 0E05BH ; IP for reboot DW 0F000H ; CS for reboot MSG DB 'Strike any key to REBOOT$' PAGE %OUT Code CLRBFI: ; Drain typein buffer. mov AH,1 int 16H ; ask keyboard status (Z holds result) jz clear ; nothing pending, go on mov AH,0 int 16H ; read character at keyboard jmp clrbfi ; ignore it, see if any left CLEAR: MOV DX,OFFSET MSG ; Get address of 'Strike any key' message. MOV AH,9 ; Print String DOS function. INT 21H ; Call DOS. MOV AH,8 ; Input No Echo, Wait If Needed INT 21H ; wait for key to be struck MOV AX,SEG BIOSCOM ; Point to BIOS data segment. MOV DS,AX ASSUME DS:BIOSCOM MOV RESET_FLAG,1234H ; Set 'Warm Start' flag. JMP RESTART ; Jump into BIOS. CODESEG ENDS END BEGIN .