Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

133 lines
2.6 KiB

  1. .xlist
  2. include kernel.inc
  3. include pdb.inc
  4. include tdb.inc
  5. .list
  6. DataBegin
  7. externW curTDB
  8. DataEnd
  9. sBegin CODE
  10. externD prevInt10proc
  11. assumes CS,CODE
  12. assumes ds, nothing
  13. assumes es, nothing
  14. ;-----------------------------------------------------------------------;
  15. ; IntnnHandlers - Handlers for int 0, 2, 4, 6, 7, 10, 3E, 75 ;
  16. ; ;
  17. ; Slimed in here for lack of a better place. ;
  18. ; Merely jump through the vector saved in the TDB ;
  19. ; ;
  20. ;-----------------------------------------------------------------------;
  21. cProc Int00Handler,<PUBLIC,FAR>
  22. cBegin nogen
  23. push bx
  24. mov bx, TDB_INTVECS
  25. IntnnCommon:
  26. sub sp, 2 ; Make room for dword (saved bx is
  27. push bp ; other word)
  28. mov bp, sp
  29. push ds
  30. SetKernelDS
  31. mov ds, CurTDB
  32. UnSetKernelDS
  33. push [bx] ; Fill in dword with vector contents
  34. pop [bp+2]
  35. mov bx, [bx+2]
  36. xchg bx, [bp+4] ; Fill in segment, recover bx
  37. pop ds
  38. pop bp
  39. retf
  40. cEnd nogen
  41. cProc Int02Handler,<PUBLIC,FAR>
  42. cBegin nogen
  43. push bx
  44. mov bx, TDB_INTVECS+4
  45. jmps IntnnCommon
  46. cEnd nogen
  47. cProc Int04Handler,<PUBLIC,FAR>
  48. cBegin nogen
  49. push bx
  50. mov bx, TDB_INTVECS+8
  51. jmps IntnnCommon
  52. cEnd nogen
  53. cProc Int06Handler,<PUBLIC,FAR>
  54. cBegin nogen
  55. push bx
  56. mov bx, TDB_INTVECS+12
  57. jmps IntnnCommon
  58. cEnd nogen
  59. cProc Int07Handler,<PUBLIC,FAR>
  60. cBegin nogen
  61. push bx
  62. mov bx, TDB_INTVECS+16
  63. jmps IntnnCommon
  64. cEnd nogen
  65. cProc Int3EHandler,<PUBLIC,FAR>
  66. cBegin nogen
  67. push bx
  68. mov bx, TDB_INTVECS+20
  69. jmps IntnnCommon
  70. cEnd nogen
  71. cProc Int75Handler,<PUBLIC,FAR>
  72. cBegin nogen
  73. push bx
  74. mov bx, TDB_INTVECS+24
  75. jmps IntnnCommon
  76. cEnd nogen
  77. ifdef WOW
  78. cProc Int10Handler,<PUBLIC,FAR>
  79. ;; QuattroPro for windows does direct VGA programming if they detect
  80. ;; that the monitor they are running on is a VGA. On NT if they program
  81. ;; the VGA we trap all the operations in NTVDM - but it makes QuattroPro
  82. ;; look very slow. So we lie to them here bl = 0 No monitor. That way
  83. ;; they don't do direct VGA programming and run fast.
  84. ;; - mattfe june 93
  85. ;;
  86. ;; if function == 1h (get monitor type)
  87. ;; then return 0 - No monitor
  88. ;; else
  89. ;; chain into real int10 handler
  90. cBegin nogen
  91. cmp ah,1ah
  92. jne int10h_dontbother
  93. mov bl,00h
  94. IRET
  95. int10h_dontbother:
  96. jmp cs:prevInt10proc
  97. cEnd nogen
  98. endif; WOW
  99. ;-----------------------------------------------------------------------;
  100. ; FOR INT HANDLER SEE ;
  101. ; ;
  102. ; 21h i21entry.asm ;
  103. ; 3Fh ldint.asm ;
  104. ; ;
  105. ;-----------------------------------------------------------------------;
  106. sEnd CODE
  107. end