home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / ddkx86v5.zip / DDKX86 / SRC / DEV / PCMCIA / CLDFM / CS_IDC.ASM < prev    next >
Encoding:
Assembly Source File  |  1995-04-14  |  5.6 KB  |  214 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. ;
  14. ;    The following IBM OS/2 2.1 source code is provided to you solely for
  15. ;    the purpose of assisting you in your development of OS/2 2.x device
  16. ;    drivers. You may use this code in accordance with the IBM License
  17. ;    Agreement provided in the IBM Device Driver Source Kit for OS/2. This
  18. ;    Copyright statement may not be removed.;
  19. ;*****************************************************************************/
  20. ;/*****************************************************************************
  21. ;*
  22. ;* SOURCE FILE NAME = CS_IDC.ASM
  23. ;*
  24. ;* DESCRIPTIVE NAME =
  25. ;*
  26. ;*
  27. ;* VERSION
  28. ;*
  29. ;* DATE
  30. ;*
  31. ;* DESCRIPTION
  32. ;*
  33. ;* FUNCTIONS
  34. ;*
  35. ;*
  36. ;* NOTES        NONE
  37. ;*
  38. ;* STRUCTURES   NONE
  39. ;*
  40. ;* EXTERNAL REFERENCES
  41. ;*
  42. ;*              NONE
  43. ;*
  44. ;* EXTERNAL FUNCTIONS
  45. ;*
  46. ;*              NONE
  47. ;*
  48. ;* CHANGE ACTIVITY =
  49. ;*   DATE      FLAG        APAR   CHANGE DESCRIPTION
  50. ;*   --------  ----------  -----  --------------------------------------
  51. ;*   mm/dd/yy  @Vr.mpppxx  xxxxx  xxxxxxx
  52. ;*   03/13/95              113752 Set up DS before calling IDC Entry Point in PCMCIA
  53. ;*****************************************************************************/
  54.  
  55. .286
  56. .287
  57.  
  58. ;*
  59. ;* constant definitions
  60. ;*
  61. ATTACHDD equ 42
  62.  
  63.  
  64. _DATA   SEGMENT WORD PUBLIC 'DATA'
  65. _DATA   ENDS
  66.  
  67. _BSS    SEGMENT WORD PUBLIC 'BSS'
  68. _BSS    ENDS
  69.  
  70. CONST   SEGMENT WORD PUBLIC 'CONST'
  71. CONST   ENDS
  72.  
  73. _TEXT   SEGMENT WORD PUBLIC 'CODE'
  74. _TEXT   ENDS
  75.  
  76. DGROUP  GROUP   _DATA, CONST, _BSS
  77. CGRP    GROUP   _TEXT
  78.  
  79.  
  80. _DATA   SEGMENT
  81. Driver_name       DB 'PCMCIA$ ',  00H
  82. Driver_handle     DW 6 DUP (0)
  83. Driver_entry_func DW 2 DUP (0)
  84. Driver_DS         DW        0     ; @113752
  85.  
  86. EXTRN Device_help:NEAR
  87. _DATA   ENDS
  88.  
  89.  
  90. _TEXT   SEGMENT WORD PUBLIC 'CODE'
  91.         ASSUME cs:CGRP, ds:DGROUP, es:NOTHING, ss:NOTHING
  92.  
  93.  
  94. ;/***************************************************************************
  95. ;*
  96. ;* FUNCTION NAME = _cs_idc_init
  97. ;*
  98. ;* DESCRIPTION   = short cs_idc_init(void)
  99. ;*
  100. ;* INPUT         =
  101. ;*
  102. ;* OUTPUT        =
  103. ;*
  104. ;* RETURN-NORMAL =
  105. ;*
  106. ;* RETURN-ERROR  =
  107. ;*
  108. ;**************************************************************************/
  109.  
  110. PUBLIC _cs_idc_init
  111. _cs_idc_init PROC NEAR
  112.  
  113.             push bx                    ; attach to card services driver
  114.             push di
  115.             push dx
  116.  
  117.             mov  bx,OFFSET DGROUP:Driver_name
  118.             mov  di,OFFSET DGROUP:Driver_handle
  119.             mov  dl,ATTACHDD
  120.             call DWORD PTR Device_help
  121.             jc   error1
  122.  
  123.                                        ; if successful get entry point
  124.                                        ;                to cs driver
  125. next:       mov  ax,WORD PTR Driver_handle + 6    ;offset
  126.             mov  dx,WORD PTR Driver_handle + 8    ;segment
  127.             mov  bx,WORD PTR Driver_handle + 0ah  ; @113752 - DS of IDC DD
  128.             mov  WORD PTR Driver_entry_func,ax
  129.             mov  WORD PTR Driver_entry_func+2,dx
  130.             mov  WORD PTR Driver_DS,bx               ; @113752
  131.             mov  ax,0
  132.             jmp  done1
  133.  
  134. error1:     mov  ax,-1
  135.  
  136. done1:      pop  dx
  137.             pop  di
  138.             pop  bx
  139.             ret
  140.  
  141. _cs_idc_init endp
  142.  
  143.  
  144. ;/***************************************************************************
  145. ;*
  146. ;* FUNCTION NAME = _do_card_services
  147. ;*
  148. ;* DESCRIPTION   = void do_card_services(IDC_PACKET *idc_packP)
  149. ;*
  150. ;* INPUT         =
  151. ;*
  152. ;* OUTPUT        =
  153. ;*
  154. ;* RETURN-NORMAL =
  155. ;*
  156. ;* RETURN-ERROR  =
  157. ;*
  158. ;**************************************************************************/
  159.  
  160. public _do_card_services
  161. _do_card_services proc near
  162.  
  163.             push bp                    ; save registers
  164.             mov bp,sp
  165.             push si
  166.             push di
  167.             push cx
  168.             push es
  169.             push bx
  170.             push ds                    ; @113752
  171.  
  172.             mov  bx,WORD PTR [bp+4]    ; set up function argument
  173.             mov  al,BYTE PTR [bx]
  174.  
  175.             mov  ah,0afh               ; set up static value
  176.  
  177.             mov  dx,WORD PTR [bx+1]    ; set up handle
  178.  
  179.             mov  di,WORD PTR [bx+5]    ; set up pointer
  180.             mov  si,WORD PTR [bx+3]
  181.  
  182.             mov  cx,WORD PTR [bx+7]    ; set up arglength
  183.  
  184.             mov  es,WORD PTR [bx+11]   ; set up argpointer
  185.             mov  bx,WORD PTR [bx+9]
  186.  
  187.             mov  ds,Driver_DS          ; @113752
  188.  
  189.             call DWORD PTR Driver_entry_func ; make the idc request to card services
  190.  
  191.                                        ; error if carry flag set
  192.             jc   done3                 ;   - return code in ax
  193.  
  194.             mov  bx,WORD PTR [bp+4]    ; set up handle
  195.             mov  WORD PTR [bx+1],dx
  196.  
  197.             mov  ax,0                  ; call successful
  198.  
  199. done3:      pop  ds                    ; @113752
  200.             pop  bx
  201.             pop  es                    ; restore registers - return
  202.             pop  cx
  203.             pop  di
  204.             pop  si
  205.             mov  sp,bp
  206.             pop  bp
  207.             ret
  208.  
  209. _do_card_services endp
  210.  
  211. _TEXT ENDS
  212.  
  213.         END
  214.