home *** CD-ROM | disk | FTP | other *** search
- page ,132
- title vmprintf - VM output call
- ;***
- ;vmprintf.asm - VM output call
- ;
- ; Copyright (c) 1989-1992, Microsoft Corporation. All rights reserved.
- ;
- ;*******************************************************************************
-
- include version.inc
- .model large,c
-
- extrn C fprintf:far
- extrn C _iob:far
-
- .data?
-
- extrn C _asizeC:byte
- extrn C _asizeD:byte
-
- pReturn dd ?
-
- .code _TEXT
-
- __VmPrintf proc
-
- pop word ptr [pReturn+0]
- pop word ptr [pReturn+2]
-
- pop dx ;DX = pFormatString
- mov ax,OFFSET _iob+16 ;AX = stderr
-
- cmp [_asizeD],0 ;Near data model?
- je @F ;Brif so
- push ds ;Push far pointer to format string
- push dx
-
- mov dx,SEG _iob ;DX:AX = stderr
- add ax,8
- @@:
- push dx
- push ax
-
- cmp [_asizeC],0 ;Near code model?
- je @F ;Brif so
- call far ptr fprintf
- jmp short Exit
- @@:
- call near ptr fprintf
-
- Exit:
- cmp [_asizeD],0 ;Near data model?
- je @F ;Brif so
- add sp,4 ;Adjust for two far pointers
- @@:
- add sp,2 ;Adjust for stderr offset
- jmp [pReturn] ;Return to caller
-
- __VmPrintf endp
-
- end
-