;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; COMM.ASM ; ; Copyright (c) Microsoft Corporation 1990. All rights reserved. ; ; This module contains code to write a string to the COM port ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ?PLM=1 ; pascal call convention ?WIN=0 ; Windows prolog/epilog code .286 .xlist include cmacros.inc ; include windows.inc .list WF_CPU286 equ 0002h ifdef DEBUG DEBUG_RETAIL equ 1 endif ; externA __0040h ; in KERNEL ; externA __B000h ; in KERNEL externFP OutputDebugString ; in KERNEL externFP wvsprintf ; in USER SCREENWIDTH equ 80 SCREENHEIGHT equ 25 SCREENBYTES equ (SCREENWIDTH*2) DEFATTR equ 07 LASTLINE equ ((SCREENHEIGHT-1)*SCREENBYTES) BUFFER_SIZE = 256 ;****************************************************************************** ; ; SEGMENTS ; ;****************************************************************************** createSeg _TEXT, CodeRes, word, public, CODE createSeg FIX, CodeFix, word, public, CODE createSeg INTDS, DataFix, byte, public, DATA ;****************************************************************************** ; ; FIXED DATA ; ;****************************************************************************** ifdef DEBUG_RETAIL sBegin DataFix globalW fDebugOutput, 0 sEnd DataFix endif ;****************************************************************************** ; ; NON FIXED DATA ; ;****************************************************************************** ifdef DEBUG sBegin Data globalW _fDebug, 0 sEnd Data endif ifdef DEBUG sBegin CodeRes assumes cs,CodeRes assumes ds,nothing assumes es,nothing ;****************************************************************************** ; ; dprintf - output a MMSYSTEM debug string with formatting ; ; if the mmsystem global fDebug==0, no ouput will be sent ; ;============================================================================== assumes ds,Data assumes es,nothing ?PLM=0 cProc dprintf, , <> ParmD szFormat ParmW Args LocalV szBuffer, BUFFER_SIZE cBegin cmp [_fDebug],0 jz dprintf_exit lea ax,szBuffer lea bx,Args cCall wvsprintf, lea ax,szBuffer push ss push ax call far ptr OutputDebugStr dprintf_exit: cEnd ?PLM=1 sEnd endif ;****************************************************************************** ; ;****************************************************************************** sBegin CodeFix assumes cs,CodeFix assumes ds,nothing assumes es,nothing externW CodeFixDS ; in STACK.ASM externW CodeFixWinFlags ifdef DEBUG ;****************************************************************************** ; ; dout - output a MMSYSTEM debug string ; ; if the mmsystem global fDebug==0, no ouput will be sent ; ;============================================================================== assumes ds,Data assumes es,nothing public dout dout proc far cmp [_fDebug],0 jnz OutputDebugStr retf 4 dout endp endif; DEBUG ; ; in the retail version stub out the OutputDebugStr function ; cProc OutputDebugStr, , <> ParmD szString cBegin cCall OutputDebugString, cEnd sEnd end