asyvec.s
上传用户:hepax88
上传日期:2007-01-03
资源大小:1101k
文件大小:3k
源码类别:

TCP/IP协议栈

开发平台:

Visual C++

  1. ; ASY (8250/16550A "com" port) interrupt hooks
  2. ; Copyright 1991 Phil Karn, KA9Q
  3. include asmglobal.h
  4. extrn doret:proc,asyint:far,eoi:proc,fpint:far
  5. .DATA
  6. extrn Sssave:word
  7. extrn Spsave:word
  8. extrn Stktop
  9. .CODE
  10. dbase dw @Data
  11. ; asy0vec - asynch channel 0 interrupt handler
  12. public asy0vec
  13. label asy0vec far
  14. cld
  15. push ds ; save on user stack
  16. mov ds,cs:dbase ; establish interrupt data segment
  17. mov Sssave,ss ; stash user stack context
  18. mov Spsave,sp
  19. mov ss,cs:dbase
  20. lea sp,Stktop
  21. PUSHALL
  22. push es
  23. call eoi
  24. mov ax,0 ; arg for service routine
  25. push ax
  26. call asyint
  27. inc sp
  28. inc sp
  29. jmp doret
  30. ; asy1vec - asynch channel 1 interrupt handler
  31. public asy1vec
  32. label asy1vec far
  33. cld
  34. push ds ; save on user stack
  35. mov ds,cs:dbase ; establish interrupt data segment
  36. mov Sssave,ss ; stash user stack context
  37. mov Spsave,sp
  38. mov ss,cs:dbase
  39. lea sp,Stktop
  40. PUSHALL
  41. push es
  42. call eoi
  43. mov ax,1 ; arg for service routine
  44. push ax
  45. call asyint
  46. inc sp
  47. inc sp
  48. jmp doret
  49. ; asy2vec - asynch channel 2 interrupt handler
  50. public asy2vec
  51. label asy2vec far
  52. cld
  53. push ds ; save on user stack
  54. mov ds,cs:dbase ; establish interrupt data segment
  55. mov Sssave,ss ; stash user stack context
  56. mov Spsave,sp
  57. mov ss,cs:dbase
  58. lea sp,Stktop
  59. PUSHALL
  60. push es
  61. call eoi
  62. mov ax,2 ; arg for service routine
  63. push ax
  64. call asyint
  65. inc sp
  66. inc sp
  67. jmp doret
  68. ; asy3vec - asynch channel 3 interrupt handler
  69. public asy3vec
  70. label asy3vec far
  71. cld
  72. push ds ; save on user stack
  73. mov ds,cs:dbase ; establish interrupt data segment
  74. mov Sssave,ss ; stash user stack context
  75. mov Spsave,sp
  76. mov ss,cs:dbase
  77. lea sp,Stktop
  78. PUSHALL
  79. push es
  80. call eoi
  81. mov ax,3 ; arg for service routine
  82. push ax
  83. call asyint
  84. inc sp
  85. inc sp
  86. jmp doret
  87. ; asy4vec - asynch channel 4 interrupt handler
  88. public asy4vec
  89. label asy4vec far
  90. cld
  91. push ds ; save on user stack
  92. mov ds,cs:dbase ; establish interrupt data segment
  93. mov Sssave,ss ; stash user stack context
  94. mov Spsave,sp
  95. mov ss,cs:dbase
  96. lea sp,Stktop
  97. PUSHALL
  98. push es
  99. call eoi
  100. mov ax,4 ; arg for service routine
  101. push ax
  102. call asyint
  103. inc sp
  104. inc sp
  105. jmp doret
  106. ; asy5vec - asynch channel 5 interrupt handler
  107. public asy5vec
  108. label asy5vec far
  109. cld
  110. push ds ; save on user stack
  111. mov ds,cs:dbase ; establish interrupt data segment
  112. mov Sssave,ss ; stash user stack context
  113. mov Spsave,sp
  114. mov ss,cs:dbase
  115. lea sp,Stktop
  116. PUSHALL
  117. push es
  118. call eoi
  119. mov ax,5 ; arg for service routine
  120. push ax
  121. call asyint
  122. inc sp
  123. inc sp
  124. jmp doret
  125. ; fp0vec - Fourport channel 0 interrupt handler
  126. public fp0vec
  127. label fp0vec far
  128. cld
  129. push ds ; save on user stack
  130. mov ds,cs:dbase ; establish interrupt data segment
  131. mov Sssave,ss ; stash user stack context
  132. mov Spsave,sp
  133. mov ss,cs:dbase
  134. lea sp,Stktop
  135. PUSHALL
  136. push es
  137. call eoi
  138. mov ax,0 ; arg for service routine
  139. push ax
  140. call fpint
  141. inc sp
  142. inc sp
  143. jmp doret
  144. end