Files
libreoffice/basic/source/runtime/os2.asm
Jens-Heiner Rechtien c25ec0608a initial import
2000-09-18 15:18:56 +00:00

90 lines
1.6 KiB
NASM

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; OS2.ASM
;;
;; Ersterstellung MD 30.05.94
;;
;; Anmerkungen
;; Direktaufruf von C- und PASCAL-Routinen, OS/2
;;
;; Source Code Control System - Header
;; $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/basic/source/runtime/os2.asm,v 1.1.1.1 2000-09-18 16:12:11 hr Exp $
;;
;; Copyright (c) 1990,95 by STAR DIVISION GmbH
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Inhalt:
; type = CallXXX (far *proc, char *stack, short nstack)
;
; Kopie des Basic-Stacks (nstack Bytes) auf den C-Stack
; und Aufruf der Prozedur.
.386
.MODEL FLAT
.CODE
PUBLIC CallINT
PUBLIC CallLNG
PUBLIC CallSNG
PUBLIC CallDBL
PUBLIC CallSTR
PUBLIC CallFIX
PUBLIC _CallINT
PUBLIC _CallLNG
PUBLIC _CallSNG
PUBLIC _CallDBL
PUBLIC _CallSTR
PUBLIC _CallFIX
_CallINT LABEL byte
_CallLNG LABEL byte
_CallSNG LABEL byte
_CallDBL LABEL byte
_CallSTR LABEL byte
_CallFIX LABEL byte
CallINT LABEL byte
CallLNG LABEL byte
CallSNG LABEL byte
CallDBL LABEL byte
CallSTR LABEL byte
CallFIX PROC
p EQU [EBP+8]
stk EQU [EBP+12]
n EQU [EBP+16]
PUSH EBP
MOV EBP,ESP
PUSH ESI
PUSH EDI
MOV DX,DS
MOVZX ECX,word ptr [n]
SUB ESP,ECX
MOV EDI,ESP
MOV AX,SS
MOV ES,AX
MOV ESI,[stk]
SHR ECX,1
CLD
JCXZ $1
REP MOVSW ; Stack uebernehmen
$1: MOV DS,DX
CALL LARGE [p] ; 32-bit
MOV ECX,EBP
SUB ECX,8 ; wegen gepushter Register
MOV ESP,ECX
POP EDI
POP ESI
POP EBP
; Bei Borland C++ Calling Convention:
; RET 12
; CSet System-Calling Convention
RET
CallFIX ENDP
END