home *** CD-ROM | disk | FTP | other *** search
/ PC Interdit / pc-interdit.iso / nodebug / nodeb.asm < prev    next >
Assembly Source File  |  1994-10-19  |  3KB  |  142 lines

  1. .386p
  2. .MODEL TPASCAL
  3. .DATA
  4.  oldint3 dd ?
  5.  anc_interrupt3 dd ?
  6.  
  7. .CODE
  8.  
  9.   public PIQ_Stop_System
  10.   public Keyboard_off
  11.   public Keyboard_on
  12.   public No_Stepping
  13.  
  14.  
  15. keyb_off macro
  16.   push ax
  17.   in  al,21h
  18.   or  al,02
  19.   out 21h,al
  20.   pop ax
  21. endm
  22.  
  23. keyb_on macro
  24.   push ax
  25.   in  al,21h
  26.   and al,0Fdh
  27.   out 21h,al
  28.   pop ax
  29. endm
  30.  
  31. PIQ_Stop_System proc near
  32.   push ds
  33.   push ax
  34.   push bx
  35.   push cs
  36.   pop  ds                             ; CS en DS
  37.   mov  cs:word ptr [@int_21_fonct],4CB4h  ; Fonction arrêter le Programme
  38. @int_21_fonct:
  39.   mov  ah,30h                         ; Fonction lire la version du DOS
  40.   int  21h
  41.   pop  bx
  42.   pop  ax
  43.   pop  ds
  44.   ret
  45. PIQ_Stop_System endp
  46.  
  47. Keyboard_off proc near
  48.    keyb_off
  49.    ret
  50. Keyboard_off endp
  51.  
  52. Keyboard_on proc near
  53.    keyb_on
  54.    ret
  55. Keyboard_on endp
  56.  
  57. No_Stepping proc near
  58.   push ax
  59.   jmp @Nostep+2
  60. @Nostep:
  61.   mov ds:byte ptr [06EBh],00
  62.   mov ax,4C01h
  63.   int 21h
  64.   pop ax
  65.   ret
  66. No_Stepping endp
  67.  
  68. public protected_stopping
  69. protected_stopping proc pascal
  70.     pusha
  71.     cli                         ; inhibe les interruptions
  72.     mov eax,cr0                 ; active le mode protégé
  73.     or eax,1
  74.     mov cr0,eax
  75.     jmp PROTECTION_ENABLED      ; efface le canal d'exécution
  76. PROTECTION_ENABLED:
  77.  
  78.     and al,0FEh                 ; rétablit le mode réel
  79.     mov cr0,eax                 ; ne remet pas à zéro le processeur
  80.     jmp PROTECTION_DISABLED     ; efface le canal d'exécution
  81. PROTECTION_DISABLED:
  82.     sti                         ; restaure les interruptions
  83.     popa
  84.   ret
  85. protected_stopping endp
  86.  
  87. public Check_vector
  88. Check_vector proc pascal check : dword;
  89.   mov bx,0
  90.   mov es,bx
  91.   mov bx,18
  92.   mov eax,es:[bx]
  93.   mov oldint3,eax
  94.   mov eax,check
  95.   mov es:[bx],eax
  96.   ret
  97. Check_vector endp
  98.  
  99. public Vector_ok
  100. Vector_ok proc pascal check : dword;
  101.   mov bx,0
  102.   mov es,bx
  103.   mov bx,18
  104.   mov eax,es:[bx]
  105.   cmp eax,check
  106.   je  @check_ok
  107.   mov al,0
  108.   jmp @check_fin
  109. @check_ok:
  110.   mov al,1
  111. @check_fin:
  112.   ret
  113. Vector_ok endp
  114.  
  115. public restore_Checkvector
  116. restore_Checkvector proc pascal
  117.   mov bx,0
  118.   mov es,bx
  119.   mov bx,18
  120.   mov eax,oldint3
  121.   mov es:[bx],eax
  122.   ret
  123. restore_Checkvector endp
  124.  
  125. public Copy_int21_int3
  126. Copy_int21_int3 proc pascal
  127.   mov bx,0
  128.   mov es,bx
  129.   mov bx,18
  130.   mov eax,es:[bx]
  131.   mov anc_interrupt3,eax                ; sauvegarde l'ancienne int 3
  132.   mov bx,84                             ; charge l'int 21
  133.   mov eax,es:[bx]
  134.   mov bx,18                             ; et la mémorise en int3
  135.   mov es:[bx],eax
  136.   ret
  137. Copy_int21_int3 endp
  138.  
  139.  
  140.  
  141. end
  142.