home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 10 / mycd10.iso / share / os2 / utilidad / ext2fl / e2wrap.asm < prev    next >
Encoding:
Assembly Source File  |  1995-07-31  |  6.2 KB  |  312 lines

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