home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1997 October / VPR9710A.ISO / BENCH / DJ1SRC_K / 112M3 / EVINTR.ASM < prev    next >
Assembly Source File  |  1997-05-01  |  3KB  |  137 lines

  1. ;;;
  2. ;;; EVINTR.ASM
  3. ;;;
  4. ;;;  Copyright (C) 1992, Csaba Biegl
  5. ;;;    820 Stirrup Dr, Nashville, TN, 37221
  6. ;;;    csaba@vuse.vanderbilt.edu
  7. ;;;
  8. ;;;  This file is distributed under the terms listed in the document
  9. ;;;  "copying.cb", available from the author at the address above.
  10. ;;;  A copy of "copying.cb" should accompany this file; if not, a copy
  11. ;;;  should be available from where this file was obtained.  This file
  12. ;;;  may not be distributed without a verbatim copy of "copying.cb".
  13. ;;;  You should also have received a copy of the GNU General Public
  14. ;;;  License along with this program (it is in the file "copying");
  15. ;;;  if not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  16. ;;;  Cambridge, MA 02139, USA.
  17. ;;;
  18. ;;;  This program is distributed in the hope that it will be useful,
  19. ;;;  but WITHOUT ANY WARRANTY; without even the implied warranty of
  20. ;;;  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  21. ;;;  GNU General Public License for more details.
  22. ;;;
  23. ; 97/05/01 Kimio Itoh(kitoh@nn.iij4u.or.jp) modified
  24. ; for reduce binary size and for dead code elimination.
  25. ;1.11m5 - 1.12m4 common version.
  26.  
  27. _TEXT    segment byte public 'CODE'
  28. _TEXT    ends
  29.  
  30. _TEXT    segment byte public 'CODE'
  31.     assume  cs:_TEXT,ds:NOTHING
  32.  
  33. ;;
  34. ;; mouse interrupt routine -- called by the mouse handler callback mechanism
  35. ;;
  36. __ev_mouseint    proc    far
  37.     pushf
  38.     cli
  39.     push    cx dx
  40.     mov    cx,sp
  41.     mov    dx,ss
  42.     mov    ss,WORD PTR cs:__ev_interss
  43.     mov    sp,WORD PTR cs:__ev_msintsp
  44.     sti
  45.     push    ax bx cx dx es ds
  46.     mov    ds,WORD PTR cs:__ev_interds
  47.     push    di
  48.     push    si
  49.     push    bx
  50.     push    ax
  51.     call    FAR PTR __ev_mousehandler
  52.     add    sp,8
  53.     pop    ds es dx cx bx ax
  54.     cli
  55.     mov    ss,dx
  56.     mov    sp,cx
  57.     pop    dx cx
  58.     popf
  59.     ret
  60. __ev_mouseint    endp
  61.  
  62. ;;
  63. ;; keyboard interrupt handler -- replaces the int 9 vector
  64. ;;
  65. __ev_keybdint    proc    far
  66.     inc    WORD PTR cs:__ev_kbinter
  67.     jz    kbint_proceed
  68.     dec    WORD  PTR cs:__ev_kbinter
  69.     jmp    DWORD PTR cs:__ev_oldkbint
  70. kbint_proceed:
  71.     cli
  72.     push    cx dx
  73.     mov    cx,sp
  74.     mov    dx,ss
  75.     mov    ss,WORD PTR cs:__ev_interss
  76.     mov    sp,WORD PTR cs:__ev_kbintsp
  77.     pushf
  78.     call    DWORD PTR cs:__ev_oldkbint
  79.     sti
  80.     push    ax bx cx dx es ds
  81.     mov    ds,WORD PTR cs:__ev_interds
  82.     call    FAR PTR __ev_keybdhandler
  83.     pop    ds es dx cx bx ax
  84.     cli
  85.     mov    ss,dx
  86.     mov    sp,cx
  87.     pop    dx cx
  88.     dec    WORD PTR cs:__ev_kbinter
  89.     iret
  90. __ev_keybdint    endp
  91.  
  92. ;;
  93. ;; critical error handler -- replaces the int 24 vector
  94. ;;
  95. __ev_criterr    proc    far
  96.     cmp    WORD PTR cs:__ev_kbinter,0ffffh
  97.     je    criterr_proceed
  98.     jmp    DWORD PTR cs:__ev_oldcriterr
  99. criterr_proceed:
  100.     mov    al,3
  101.     iret
  102. __ev_criterr    endp
  103.  
  104.  
  105. __ev_oldkbint    label    dword
  106.     db    4 dup (?)
  107. __ev_kbinter    label    word
  108.     db    2 dup (?)
  109. __ev_interss    label    word
  110.     db    2 dup (?)
  111. __ev_kbintsp    label    word
  112.     db    2 dup (?)
  113. __ev_msintsp    label    word
  114.     db    2 dup (?)
  115. __ev_interds    label    word
  116.     db    2 dup (?)
  117. __ev_oldcriterr    label    dword
  118.     db    4 dup (?)
  119. _TEXT    ends
  120.  
  121.     public  __ev_keybdint
  122.     public  __ev_mouseint
  123.     public  __ev_msintsp
  124.     public  __ev_kbintsp
  125.     public  __ev_interss
  126.     public  __ev_interds
  127.     public  __ev_kbinter
  128.     public  __ev_oldkbint
  129.     public  __ev_criterr
  130.     public  __ev_oldcriterr
  131.  
  132.     extrn    __ev_keybdhandler:far
  133.     extrn    __ev_mousehandler:far
  134.  
  135.     end
  136.  
  137.