1 ;*************************************************************************
3 ; DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 ; Copyright 2008 by Sun Microsystems, Inc.
7 ; OpenOffice.org - a multi-platform office productivity suite
9 ; $RCSfile: wnt.asm,v $
13 ; This file is part of OpenOffice.org.
15 ; OpenOffice.org is free software: you can redistribute it and/or modify
16 ; it under the terms of the GNU Lesser General Public License version 3
17 ; only, as published by the Free Software Foundation.
19 ; OpenOffice.org is distributed in the hope that it will be useful,
20 ; but WITHOUT ANY WARRANTY; without even the implied warranty of
21 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 ; GNU Lesser General Public License version 3 for more details
23 ; (a copy is included in the LICENSE file that accompanied this code).
25 ; You should have received a copy of the GNU Lesser General Public License
26 ; version 3 along with OpenOffice.org. If not, see
27 ; <http://www.openoffice.org/license.html>
28 ; for a copy of the LGPLv3 License.
30 ;*************************************************************************
33 ; Direktaufruf von C- und PASCAL-Routinen, Windows und OS/2
36 ; type = CallXXX (far *pProc, char *pStack, short nStack)
38 ; Kopie des Basic-Stacks (nStack Bytes) auf den C-Stack
39 ; und Aufruf der Prozedur.
43 _TEXT
SEGMENT DWORD PUBLIC 'CODE' USE32
53 _CallINT
@12 LABEL byte
54 _CallLNG
@12 LABEL byte
55 _CallDBL
@12 LABEL byte
56 _CallSTR
@12 LABEL byte
67 MOVZX EAX,WORD PTR [EBP+16] ; EAX == nStack
68 SUB ESP,EAX ; Stack um nStack Bytes vergroessern
71 MOV ES,AX ; ES:EDI = Startadresse des fuer
72 ; Parameter reservierten Stackbereichs
73 MOV ESI,[EBP+12] ; DS:ESI == pStack
75 MOVZX ECX,WORD PTR [EBP+16] ; ECX == nStack
79 REP MOVSW ; Stack uebernehmen
81 CALL DWORD PTR [EBP+8] ; Aufruf der Prozedur
82 ; CLI ; unter NT nicht erlaubt (privileged instruction)
84 SUB ESP,16 ; wegen gepushter Register