1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
|
;------------------------------------------------------------------------------;
; Power.com <--> Arrêt de PC grâce a APM (Advanced Power Managment) ;
; Ce code ne pourra fonctionner que si le PC possède une alimentation ;
; du type "ATX" ;
; ;
; Compilateur utilisé : FASM - Rédaction du code : Romain TARTIERE ;
; e-mail : romain-tartiere AT astase.com ;
; Site internet : http://www.astase.com ;
;------------------------------------------------------------------------------;
Org 100h
MOV DX, APMVer ;
MOV AH, 09h ;
INT 21h ; Récupération des infos APM du système.
MOV AX, 5300h ;
MOV BX, 0000h ;
INT 15h ; Vérification du matériel
Jb No_APM_Support ; Erreur : APM non supporté par le système !
;------------------------------------------;
; Afichage de la version de APM du système ;
;------------------------------------------;
PUSH AX
PUSH AX
ADD AH, 30h ;
MOV DL, AH ;
MOV AH, 02h ;
INT 21h ; Affichage du numéro de version majeur.
MOV DL, 2Eh ;
MOV AH, 02h ;
INT 21h ; Affichage du Point.
POP AX ;
ADD AL, 30h ;
MOV DL, AL ;
MOV AH, 02h ;
INT 21h ; Affichage du numéro de version mineure.
;----------------------------;
; Connexion au service d'APM ;
;----------------------------;
MOV AX, 5301h ;
MOV BX, 0000h ;
INT 15h ; Connect real Mode Interface.
Jb Deconnexion ; Erreur ! On déconnecte...
;-------------------------;
; Arret de l'alimentation ;
;-------------------------;
MOV AX, 530Eh ;
MOV BX, 0000h ;
POP CX ;
INT 15h ; Version du driver.
MOV AX, 530Dh ;
MOV BX, 0001h ;
MOV CX, 0001h ;
INT 15h ; On rend disponibles les services d'APM.
MOV AX, 530Fh ;
MOV BX, 0001h ;
MOV CX, 0001h ;
INT 15h ; On rend disponible l'arret de l'alimentation.
MOV AX, 5307h ;
MOV BX, 0001h ;
MOV CX, 0003h ;
INT 15h ; Arret du système.
Jb Set_APM_Failed ; Erreur !
JMP Deconnexion
;-----------------------------;
; L'arrêt du système à échoué ;
;-----------------------------;
Set_APM_Failed:
PUSH AX
MOV AX, 0DDCh
MOV DS, AX
MOV DX, Fail
MOV AH, 09h
INT 21h
POP AX
Jmp APM_Done
;--------------------------------;
; Déconnexion des services d'APM ;
;--------------------------------;
Deconnexion:
MOV AX, 5304h ;
MOV BX, 0000h ;
INT 15h ; Déconnexion de l'interface APM.
Jb No_APM_Support
JMP APM_Done
;------------------------------------------------------;
; APM semble ne pas être pris en charge par le système ;
; (Ca peut être Windows qui fait une blague ;) ;
;------------------------------------------------------;
No_APM_Support:
MOV DX, NoAPM
MOV AH, 09h
INT 21h
;----------------------;
; Fin de l'application ;
;----------------------;
APM_Done:
MOV DX, Done
MOV AH, 09h
INT 21h
MOV AX, 4C00h ;
INT 21h ; Fin du programme
;-------------------------;
; Constantes du programme ;
;-------------------------;
APMVer db 'Version de APM du systme : $'
NoAPM db 13,10,'[Erreur] : Pas de support de APM !$'
Fail db 13,10,'Echec lors de l''arret de l''alimentation !$'
Done db 13,10,'Termin.$';
;--------------------;
; That's all folks ! ;
;--------------------; |
Partager