forked from KolibriOS/kolibrios
7b2b309d03
git-svn-id: svn://kolibrios.org@1942 a494cfbc-eb01-0410-851d-a64ba20cac60
151 lines
3.1 KiB
PHP
151 lines
3.1 KiB
PHP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
;; ;;
|
|
;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;;
|
|
;; Distributed under terms of the GNU General Public License ;;
|
|
;; ;;
|
|
;; Shutdown for Menuet ;;
|
|
;; ;;
|
|
;; Distributed under General Public License ;;
|
|
;; See file COPYING for details. ;;
|
|
;; Copyright 2003 Ville Turjanmaa ;;
|
|
;; ;;
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
$Revision$
|
|
|
|
|
|
align 4
|
|
pr_mode_exit:
|
|
|
|
; setup stack
|
|
mov ax, 0x3000
|
|
mov ss, ax
|
|
mov esp, 0x0EC00
|
|
; setup ds
|
|
push cs
|
|
pop ds
|
|
|
|
lidt [old_ints_h]
|
|
;remap IRQs
|
|
mov al,0x11
|
|
out 0x20,al
|
|
call rdelay
|
|
out 0xA0,al
|
|
call rdelay
|
|
|
|
mov al,0x08
|
|
out 0x21,al
|
|
call rdelay
|
|
mov al,0x70
|
|
out 0xA1,al
|
|
call rdelay
|
|
|
|
mov al,0x04
|
|
out 0x21,al
|
|
call rdelay
|
|
mov al,0x02
|
|
out 0xA1,al
|
|
call rdelay
|
|
|
|
mov al,0x01
|
|
out 0x21,al
|
|
call rdelay
|
|
out 0xA1,al
|
|
call rdelay
|
|
|
|
mov al,0xB8
|
|
out 0x21,al
|
|
call rdelay
|
|
mov al,0xBD
|
|
out 0xA1,al
|
|
sti
|
|
|
|
temp_3456:
|
|
xor ax,ax
|
|
mov es,ax
|
|
mov al,byte [es:0x9030]
|
|
cmp al,1
|
|
jl nbw
|
|
cmp al,4
|
|
jle nbw32
|
|
|
|
nbw:
|
|
in al,0x60
|
|
cmp al,6
|
|
jae nbw
|
|
mov bl,al
|
|
nbw2:
|
|
in al,0x60
|
|
cmp al,bl
|
|
je nbw2
|
|
cmp al,240 ;ax,240
|
|
jne nbw31
|
|
mov al,bl
|
|
dec ax
|
|
jmp nbw32
|
|
nbw31:
|
|
add bl,128
|
|
cmp al,bl
|
|
jne nbw
|
|
sub al,129
|
|
|
|
nbw32:
|
|
|
|
dec ax
|
|
dec ax ; 2 = power off
|
|
jnz no_apm_off
|
|
call APM_PowerOff
|
|
jmp $
|
|
no_apm_off:
|
|
|
|
; 3 = reboot, 4 = obsolete restart kernel
|
|
push 0x40
|
|
pop ds
|
|
mov word[0x0072],0x1234
|
|
jmp 0xF000:0xFFF0
|
|
|
|
|
|
rdelay:
|
|
ret
|
|
|
|
APM_PowerOff:
|
|
mov ax, 5304h
|
|
xor bx, bx
|
|
int 15h
|
|
;!!!!!!!!!!!!!!!!!!!!!!!!
|
|
mov ax,0x5300
|
|
xor bx,bx
|
|
int 0x15
|
|
push ax
|
|
|
|
mov ax,0x5301
|
|
xor bx,bx
|
|
int 0x15
|
|
|
|
mov ax,0x5308
|
|
mov bx,1
|
|
mov cx,bx
|
|
int 0x15
|
|
|
|
mov ax,0x530E
|
|
xor bx,bx
|
|
pop cx
|
|
int 0x15
|
|
|
|
mov ax,0x530D
|
|
mov bx,1
|
|
mov cx,bx
|
|
int 0x15
|
|
|
|
mov ax,0x530F
|
|
mov bx,1
|
|
mov cx,bx
|
|
int 0x15
|
|
|
|
mov ax,0x5307
|
|
mov bx,1
|
|
mov cx,3
|
|
int 0x15
|
|
;!!!!!!!!!!!!!!!!!!!!!!!!
|
|
ret
|