home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / ddkx86v5.zip / DDKX86 / SRC / DEV / DASD / DEVHELP / DHMACS.INC < prev    next >
Encoding:
Text File  |  1995-04-14  |  6.3 KB  |  406 lines

  1. ;*DDK*************************************************************************/
  2. ;
  3. ; COPYRIGHT    Copyright (C) 1995 IBM Corporation
  4. ;
  5. ;    The following IBM OS/2 WARP source code is provided to you solely for
  6. ;    the purpose of assisting you in your development of OS/2 WARP device
  7. ;    drivers. You may use this code in accordance with the IBM License
  8. ;    Agreement provided in the IBM Device Driver Source Kit for OS/2. This
  9. ;    Copyright statement may not be removed.;
  10. ;*****************************************************************************/
  11. ;**************************************************************************
  12. ;*
  13. ;* SOURCE FILE NAME = DHMACS.INC
  14. ;*
  15. ;* DESCRIPTIVE NAME = DH calls private macros
  16. ;*
  17. ;*
  18. ;*
  19. ;* VERSION = V2.0
  20. ;*
  21. ;* DATE
  22. ;*
  23. ;* DESCRIPTION :
  24. ;*
  25. ;* Purpose:
  26. ;*
  27. ;*
  28. ;*
  29. ;*
  30. ;* Macros     :   DHDef
  31. ;*                DHArgs
  32. ;*                DHCall
  33. ;*                DHCallES
  34. ;*                DHRet1
  35. ;*                DHRet2
  36. ;*
  37. ;*
  38. ;* NOTES
  39. ;*
  40. ;*
  41. ;* STRUCTURES
  42. ;*
  43. ;* EXTERNAL REFERENCES
  44. ;*
  45. ;*
  46. ;*
  47. ;* EXTERNAL FUNCTIONS
  48. ;*
  49. ;* CHANGE ACTIVITY =
  50. ;*   DATE      FLAG        APAR   CHANGE DESCRIPTION
  51. ;*   --------  ----------  -----  --------------------------------------
  52. ;*   mm/dd/yy  @VR.MPPPXX  XXXXX  XXXXXXX
  53. ;*
  54. ;*
  55. ;*
  56. ;*
  57. ;*
  58. ;****************************************************************************
  59.  
  60.  
  61. ;*
  62. ;*
  63. ;* Device Help Library Macros
  64. ;*
  65. ;*
  66.  
  67. include devhlp.inc
  68.  
  69. ;*
  70. ;* To define a Device Help Thunk:
  71. ;*
  72. ;*
  73. ;*  DHDef   Name
  74. ;*
  75. ;*  DHArgs  Type, ArgName1
  76. ;*    .
  77. ;*    .
  78. ;*    .
  79. ;*  DHArgs  Type, ArgNameN
  80. ;*
  81. ;*  DHCall
  82. ;*
  83. ;*  DHRet1
  84. ;*
  85.  
  86. ;***************************************************************************
  87. ;*
  88. ;* MACRO NAME    =  DHDef
  89. ;*
  90. ;*
  91. ;* DESCRIPTION   =
  92. ;*
  93. ;*   Purpose:
  94. ;*
  95. ;*
  96. ;*   Function Calls:
  97. ;*
  98. ;*
  99. ;*
  100. ;*
  101. ;* INPUT         =
  102. ;*
  103. ;*
  104. ;*
  105. ;*
  106. ;* OUTPUT        = NONE
  107. ;*
  108. ;*
  109. ;* RETURN-NORMAL = NONE
  110. ;*
  111. ;* RETURN-ERROR  = NONE
  112. ;*
  113. ;****************************************************************************
  114.  
  115. DHDef   Macro   DHName, Code
  116.  
  117.         public  DevHelp_&DHName
  118. DevHelp_&DHName  label   far
  119.  
  120. DHCode  =       DevHlp_&DHName
  121. Frame   =        0
  122. Disp    =       -6
  123.         push    bp
  124.         mov     bp, sp
  125.         push    bx
  126.         push    cx
  127.         push    dx
  128.         push    si
  129.         push    di
  130.         push    ds
  131.         push    es
  132.  
  133.         Endm
  134.  
  135. DSReg   equ     -12             ; DS Reg image on stack
  136. ESReg   equ     -14             ; ES Reg image on stack
  137.  
  138. ;***************************************************************************
  139. ;*
  140. ;* MACRO NAME    =  DHArgs
  141. ;*
  142. ;*
  143. ;* DESCRIPTION   =
  144. ;*
  145. ;*   Purpose:
  146. ;*
  147. ;*
  148. ;*   Function Calls:
  149. ;*
  150. ;*
  151. ;*
  152. ;*
  153. ;* INPUT         =
  154. ;*
  155. ;*
  156. ;*
  157. ;*
  158. ;* OUTPUT        = NONE
  159. ;*
  160. ;*
  161. ;* RETURN-NORMAL = NONE
  162. ;*
  163. ;* RETURN-ERROR  = NONE
  164. ;*
  165. ;****************************************************************************
  166.  
  167. DHArgs  Macro  Type,ArgName
  168.  
  169.  
  170. Field = 0
  171. IFIDN <&Type>,<USHORT>
  172.   Field = 2
  173. ENDIF
  174. IFIDN <&TYPE>,<PUSHORT>
  175.   Field = 4
  176. ENDIF
  177. IFIDN <&TYPE>,<ULONG>
  178.   Field = 4
  179. ENDIF
  180. IFIDN <&TYPE>,<PULONG>
  181.   Field = 4
  182. ENDIF
  183. IFIDN <&TYPE>,<PSEL>
  184.   Field = 4
  185. ENDIF
  186. IFIDN <&TYPE>,<LIN>
  187.   Field = 4
  188. ENDIF
  189. IFIDN <&TYPE>,<PLIN>
  190.   Field = 4
  191. ENDIF
  192. IFIDN <&TYPE>,<PFN>
  193.   Field = 4
  194. ENDIF
  195. IFIDN <&TYPE>,<PPBYTE>
  196.   Field = 4
  197. ENDIF
  198. IFIDN <&TYPE>,<SEL>
  199.   Field = 2
  200. ENDIF
  201. IFIDN <&TYPE>,<PVOID>
  202.   Field = 4
  203. ENDIF
  204. IFIDN <&TYPE>,<NPFN>
  205.   Field = 2
  206. ENDIF
  207. IFIDN <&TYPE>,<NPSZ>
  208.   Field = 2
  209. ENDIF
  210. IFIDN <&TYPE>,<NPVOID>
  211.   Field = 2
  212. ENDIF
  213. IFIDN <&TYPE>,<NPBYTE>
  214.   Field = 2
  215. ENDIF
  216. IFIDN <&TYPE>,<NPPFN>
  217.   Field = 2
  218. ENDIF
  219. IFIDN <&TYPE>,<PBYTE>
  220.   Field = 4
  221. ENDIF
  222. IFIDN <&TYPE>,<UCHAR>
  223.   Field = 2
  224. ENDIF
  225. IFIDN <&TYPE>,<NPUSHORT>
  226.   Field = 2
  227. ENDIF
  228. IFE Field
  229.   %OUT Unknown Argument: &Type
  230.   .ERR
  231. ENDIF
  232.  
  233. Disp  = Disp+Field
  234. &ArgName = -Disp                   ;* Offset to variable from FRAME
  235. Frame = Frame+Field
  236.  
  237.         Endm
  238.  
  239. ;***************************************************************************
  240. ;*
  241. ;* MACRO NAME    =  DHCall
  242. ;*
  243. ;*
  244. ;* DESCRIPTION   =
  245. ;*
  246. ;*   Purpose:
  247. ;*
  248. ;*
  249. ;*   Function Calls:
  250. ;*
  251. ;*
  252. ;*
  253. ;*
  254. ;* INPUT         =
  255. ;*
  256. ;*
  257. ;*
  258. ;*
  259. ;* OUTPUT        = NONE
  260. ;*
  261. ;*
  262. ;* RETURN-NORMAL = NONE
  263. ;*
  264. ;* RETURN-ERROR  = NONE
  265. ;*
  266. ;****************************************************************************
  267.  
  268. DHCall  Macro
  269.  
  270. IFNDEF  Device_Help
  271. _DATA   segment dword public 'DATA'
  272.         extrn   _Device_Help:dword
  273. _DATA   ends
  274. ENDIF
  275.  
  276.         mov     dl, DHCode
  277.         call    [_Device_Help]
  278.  
  279.         Endm
  280.  
  281. ;***************************************************************************
  282. ;*
  283. ;* MACRO NAME    =  DHCallES
  284. ;*
  285. ;*
  286. ;* DESCRIPTION   =
  287. ;*
  288. ;*   Purpose:
  289. ;*
  290. ;*
  291. ;*   Function Calls:
  292. ;*
  293. ;*
  294. ;*
  295. ;*
  296. ;* INPUT         =
  297. ;*
  298. ;*
  299. ;*
  300. ;*
  301. ;* OUTPUT        = NONE
  302. ;*
  303. ;*
  304. ;* RETURN-NORMAL = NONE
  305. ;*
  306. ;* RETURN-ERROR  = NONE
  307. ;*
  308. ;****************************************************************************
  309.  
  310. DHCallES Macro
  311.  
  312. IFNDEF  Device_Help
  313. _DATA   segment dword public 'DATA'
  314.         extrn   _Device_Help:dword
  315. _DATA   ends
  316. ENDIF
  317.  
  318.         mov     dl, DHCode
  319.         call    es:[_Device_Help]
  320.  
  321.         Endm
  322.  
  323. ;***************************************************************************
  324. ;*
  325. ;* MACRO NAME    =  DHRet1
  326. ;*
  327. ;*
  328. ;* DESCRIPTION   =
  329. ;*
  330. ;*   Purpose:
  331. ;*
  332. ;*
  333. ;*   Function Calls:
  334. ;*
  335. ;*
  336. ;*
  337. ;*
  338. ;* INPUT         =
  339. ;*
  340. ;*
  341. ;*
  342. ;*
  343. ;* OUTPUT        = NONE
  344. ;*
  345. ;*
  346. ;* RETURN-NORMAL = NONE
  347. ;*
  348. ;* RETURN-ERROR  = NONE
  349. ;*
  350. ;****************************************************************************
  351.  
  352. DHRet1  Macro
  353.  
  354.         pop     es
  355.         pop     ds
  356.         pop     di
  357.         pop     si
  358.         pop     dx
  359.         pop     cx
  360.         pop     bx
  361.         DHRet2  %Frame
  362.  
  363.         Endm
  364.  
  365. ;***************************************************************************
  366. ;*
  367. ;* MACRO NAME    =  DHRet2
  368. ;*
  369. ;*
  370. ;* DESCRIPTION   =
  371. ;*
  372. ;*   Purpose:
  373. ;*
  374. ;*
  375. ;*   Function Calls:
  376. ;*
  377. ;*
  378. ;*
  379. ;*
  380. ;* INPUT         =
  381. ;*
  382. ;*
  383. ;*
  384. ;*
  385. ;* OUTPUT        = NONE
  386. ;*
  387. ;*
  388. ;* RETURN-NORMAL = NONE
  389. ;*
  390. ;* RETURN-ERROR  = NONE
  391. ;*
  392. ;****************************************************************************
  393.  
  394. DHRet2  Macro   FrameSize
  395.  
  396. IFNDEF  DHRET_&FrameSize
  397.         extrn   DHRET_&FrameSize:near
  398. ENDIF
  399.         jmp     DHRET_&FrameSize
  400.  
  401.         Endm
  402.  
  403.  
  404.  
  405. Stk     equ     <[BP].Frame>
  406.