home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 8 Other / 08-Other.zip / e2fltsrc.zip / e2wrap.asm < prev    next >
Assembly Source File  |  1995-07-24  |  6KB  |  301 lines

  1. ;/************************************************************************/
  2. ;/*  Linux partition filter (C) Deon van der Westhuysen.                 */
  3. ;/*                                                                      */
  4. ;/*  Dedicated to Jesus Christ, my Lord and Saviour.                     */
  5. ;/*                                                                      */
  6. ;/*  Permission is granted to freely use and modify this code for non-   */
  7. ;/*  profit use on the condition that this notice is not removed. All    */
  8. ;/*  other rights are reserved. No warranty, etc.                        */
  9. ;/*                                                                      */
  10. ;/*  This code is still under development; expect some rough edges.      */
  11. ;/*                                                                      */
  12. ;/************************************************************************/
  13.  
  14.     Title    E2Wrap- Assembly wrapper around interface functions.
  15.  
  16. locals
  17. .386P
  18.  
  19. include devhlp.inc
  20.  
  21. STRING_MESSAGE=    1178        ; Message ID for Save_Message
  22. ADD_CLASS= 1            ; Device class for adapter device drivers
  23.  
  24. DGROUP    group _DATA,_BSS
  25.  
  26. _DATA    segment word public 'DATA' use16
  27.  
  28.      extrn _DevHelp: dword
  29.  
  30. MsgStructure    dw STRING_MESSAGE    ;String replacement message
  31.         dw 1                    ;Only one item.
  32. MsgMessage    dd ?                    ;Address of string to display.
  33.  
  34. _DATA    ends
  35.  
  36. _BSS    segment word public 'BSS' use16
  37. _BSS    ends
  38.  
  39. _TEXT    segment byte public 'CODE' use16
  40.     assume cs:_TEXT, ds:DGROUP
  41.  
  42.     extrn _E2FilterIORB:near
  43.     extrn _FilterNotify:near
  44.     extrn _PartNotify:near
  45.  
  46.     public _memset
  47. _memset    proc    near
  48. ; void memset (void far* Buffer, UCHAR Value, USHORT Count);
  49.     push bp
  50.     mov bp,sp
  51.     push di
  52.     les di,[bp+4]
  53.     cld
  54.     mov al,[bp+8]
  55.     mov cx,[bp+10]
  56.     rep stosb
  57.     pop di
  58.     pop bp
  59.     ret
  60. _memset    endp
  61.  
  62.     public _memcpy
  63. _memcpy    proc near
  64. ; void memcpy (void far* Dest, void far* Source, USHORT Size);
  65.     push bp
  66.     mov bp,sp
  67.     push ds
  68.     push si
  69.     push di
  70.     lds si,[bp+8]
  71.     les di,[bp+4]
  72.     mov cx,[bp+12]
  73.     cld
  74.     rep movsb
  75.     pop di
  76.     pop si
  77.     pop ds
  78.     pop bp
  79.     ret
  80. _memcpy    endp
  81.  
  82.  
  83.  
  84.     public _VirtToPhys
  85. _VirtToPhys    proc
  86. ; void VirtToPhys (void FAR *pDataSeg,ULONG FAR *ppDataSeg);
  87.     push bp
  88.     mov bp,sp
  89.     push ds
  90.     push si
  91.     lds si,[bp+4]
  92.     mov dl,DevHlp_VirtToPhys
  93.     call [_DevHelp]
  94.     jnc short @@NoError
  95.     mov ax,0FFFFh
  96.     mov bx,ax
  97. @@NoError:
  98.     lds si,[bp+8]
  99.     mov ds:[si],bx
  100.     mov ds:[si+2],ax
  101.     pop si
  102.     pop ds
  103.     pop bp
  104.     ret
  105. _VirtToPhys    endp
  106.  
  107.     public _PhysToVirt
  108. _PhysToVirt    proc near
  109. ; void far * PhysToVirt(ULONG ppXferBuf, USHORT XferLength);
  110.     push bp
  111.     mov bp,sp
  112.     push es
  113.     push di
  114.     mov ax,[bp+6]
  115.     mov bx,[bp+4]
  116.     mov cx,[bp+8]
  117.     mov dh,1
  118.     mov dl,DevHlp_PhysToVirt
  119.     call [_DevHelp]
  120.     mov dx,es
  121.     mov ax,di
  122.     jnc short @@NoError
  123.     xor ax,ax
  124.     mov dx,ax
  125. @@NoError:
  126.     pop di
  127.     pop es
  128.     pop bp
  129.     ret
  130. _PhysToVirt    endp
  131.  
  132.  
  133.  
  134.     public _E2FilterIORBWrapper
  135. _E2FilterIORBWrapper    proc far
  136. ; VOID FAR E2FilterIORBWrapper (PIORB pIORB);
  137.     push bp
  138.     mov bp,sp
  139.     push ds
  140.     push es
  141.     push si
  142.     push di
  143.     mov ax,seg DGROUP
  144.     mov ds,ax
  145.     push dword ptr [bp+6]
  146.     call _E2FilterIORB
  147.     add sp,4
  148.     pop di
  149.     pop si
  150.     pop es
  151.     pop ds
  152.     pop bp
  153.     retf
  154. _E2FilterIORBWrapper    endp;
  155.  
  156.     public _FilterNotifyWrapper
  157. _FilterNotifyWrapper    proc
  158. ; PIORB FAR FilterNotifyWrapper (PIORB pIORB);
  159.     push bp
  160.     mov bp,sp
  161.     push ds
  162.     push es
  163.     push si
  164.     push di
  165.     mov ax,seg DGROUP
  166.     mov ds,ax
  167.     push dword ptr [bp+6]
  168.     call _FilterNotify
  169.     add sp,4
  170.     pop di
  171.     pop si
  172.     pop es
  173.     pop ds                ; Never mind return value...
  174.     pop bp
  175.     retf
  176. _FilterNotifyWrapper    endp
  177.  
  178.     public _PartNotifyWrapper
  179. _PartNotifyWrapper    proc
  180. ; PIORB FAR PartNotifyWrapper (PIORB pIORB);
  181.     push bp
  182.     mov bp,sp
  183.     push ds
  184.     push es
  185.     push si
  186.     push di
  187.     mov ax,seg DGROUP
  188.     mov ds,ax
  189.     push dword ptr [bp+6]
  190.     call _PartNotify
  191.     add sp,4
  192.     pop di
  193.     pop si
  194.     pop es
  195.     pop ds                ; Never mind return value...
  196.     pop bp
  197.     retf
  198. _PartNotifyWrapper    endp
  199.  
  200.  
  201.  
  202.     public _ProcRun
  203. _ProcRun    proc far
  204. ; int far ProcRun (PIORB pIORB)
  205.     push bp
  206.     mov bp,sp
  207.     push ds
  208.     mov ax,seg DGROUP
  209.     mov ds,ax
  210.     push es
  211.     push si
  212.     push di
  213.     mov ax,[bp+8]
  214.     mov bx,[bp+6]
  215.     mov dl,DevHlp_ProcRun
  216.     call [_DevHelp]
  217.     pop di
  218.     pop si
  219.     pop es
  220.     pop ds
  221.     pop bp
  222.     retf
  223. _ProcRun    endp
  224.  
  225.     public _ProcBlock
  226. _ProcBlock    proc near
  227. ; int ProcBlock(PIORB pIORB)
  228.     push bp
  229.     mov bp,sp
  230.     push di
  231.     mov ax,[bp+6]
  232.     mov bx,[bp+4]
  233.     mov cx,0FFFFh        ;Set timeout to -1: no timeout.
  234.     mov di,cx
  235.     mov dh,1        ;Non interruptable
  236.     mov dl,DevHlp_ProcBlock
  237.     call [_DevHelp]
  238.     pop di
  239.     pop bp
  240.     ret
  241. _ProcBlock     endp
  242.  
  243.  
  244.  
  245.     public _E2GetADDTable
  246. _E2GetADDTable    proc near
  247. ; PDevClassTableStruc _E2GetADDTable (void)
  248.     mov al,DHGETDOSV_DEVICECLASSTABLE
  249.     mov cx,ADD_CLASS
  250.     mov dl,DevHlp_GetDOSVar
  251.     call [_DevHelp]
  252.     mov dx,ax
  253.     mov ax,bx
  254.     ret
  255. _E2GetADDTable    endp
  256.  
  257.     public _RegisterADD
  258. _RegisterADD    proc
  259. ; USHORT RegisterADD (PADDEntryPoint pAddEP, PSZ DriverName);
  260.     push bp
  261.     mov bp, sp
  262.     push ds
  263.     push si
  264.     push di
  265.     lds si,[bp+8]
  266.     mov bx,[bp+4]
  267.     mov ax,[bp+6]
  268.     mov di,0
  269.     mov cx,1
  270.     mov dl,DevHlp_RegisterDeviceClass
  271.     call [_DevHelp]
  272.     jnc short @@NoError
  273.     xor ax,ax
  274. @@NoError:
  275.     pop di
  276.     pop si
  277.     pop ds
  278.     pop bp
  279.     ret
  280. _RegisterADD    endp
  281.  
  282.     public _E2Print
  283. _E2Print    proc near
  284. ; void _E2Print (PSZ Text)
  285.     push bp
  286.     mov bp,sp
  287.     push si
  288.     mov eax,[bp+4]
  289.     mov MsgMessage,eax
  290.     mov si,offset MsgStructure
  291.     mov dl,DevHlp_Save_Message
  292.     call [_DevHelp]
  293.     pop si
  294.     pop bp
  295.     ret
  296. _E2Print    endp
  297.  
  298. _TEXT    ends
  299.  
  300.     end
  301.