File:  [OS/2 SDKs] / os2sdk / startup / dos / crt0msg.asm
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Thu Aug 9 12:25:13 2018 UTC (7 years, 9 months ago) by root
Branches: msft, MAIN
CVS tags: os2sdk-1987, HEAD
Microsoft OS/2 SDK 12-15-1987

	TITLE	crt0msg - startup messages
;*** 
;crt0msg.asm - startup error messages
;
;	Copyright (c) 1985-1987, Microsoft Corporation.  All rights reserved.
;
;Purpose:
;	Core collection of error messages contained in programs
;	which use the C startup code; also contains _FF_MSGBANNER
;	for writing the first portion of run-time error messages.
;
;*******************************************************************************


?DF=		1			; this is special for c startup
include version.inc
.xlist
include cmacros.inc
.list

createSeg	HDR,	nhdr,	byte,	public, MSG,	DGROUP
createSeg	MSG,	nmsg,	byte,	public, MSG,	DGROUP
createSeg	PAD,	npad,	byte,	common, MSG,	DGROUP
createSeg	EPAD,	nepad,	byte,	common, MSG,	DGROUP

createSeg	_TEXT,	code,	word,	public, CODE,	<>
createSeg	_DATA,	data,	word,	public, DATA,	DGROUP

defGrp	DGROUP				; define DGROUP


public	__acrtmsg
__acrtmsg=	9876h

;	Messages used by crt0.asm

sBegin	nmsg
assumes ds,data
	dw	0
	db	'R6000',13,10,'- stack overflow',13,10,0
	dw	3
	db	'R6003',13,10,'- integer divide by 0',13,10,0
	dw	9
	db	'R6009',13,10,'- not enough space for environment',13,10,0
ifdef	_QC
	dw	12
	db	'R6012',13,10,'- illegal near pointer use',13,10,0
	dw	13
	db	'R6013',13,10,'- illegal far pointer use',13,10,0
	dw	14
	db	'R6014',13,10,'- control-BREAK encountered',13,10,0
endif	;_QC
	dw	252
	db	13,10,0	
	dw	255
	db	'run-time error ',0	
sEnd	nmsg

sBegin	npad
assumes ds,data
	dw	-1
; no padding for now;
; MAX padding would be
;	db	114 dup(0)	
sEnd

externP		_NMSG_WRITE

sBegin	data
	assumes ds,data
	
globalCP	_adbgmsg,0		; For C, _FF_DBGMSG is inactive, so
					; _adbgmsg is set to null;
					; For FORTRAN, _adbgmsg is set to 
					; point to _FF_DBGMSG in dbginit 
					; initializer in dbgmsg.asm 

sEnd	data


sBegin	code
	assumes cs,code
	assumes ds,data

page
;*** 
;_FF_MSGBANNER - writes out first part of run-time error messages
;
;Purpose:
;	This routine writes "\r\n" followed by "run-time error " to standard 
;	error. 
;
;	For FORTRAN $DEBUG error messages, it also uses the _FF_DBGMSG 
;	routine whose address is stored in the _adbgmsg variable to print out
;	file and line number information associated with the run-time error.
;	If the value of _adbgmsg is found to be null, then the _FF_DBGMSG 
;	routine won't be called from here (the case for C-only programs).
;
;Entry:
;	No arguments.
;
;Exit:
;	Nothing returned.
;
;Uses:
;	AX,BX,CX,DX,ES are destroyed.
;
;Exceptions:
;	None handled.
;
;*******************************************************************************


cProc	_FF_MSGBANNER,<PUBLIC>,<>
cBegin
	mov	ax,252			; "\r\n" to begin error message
	push	ax
	call	_NMSG_WRITE
if sizeC
	cmp	word ptr [__adbgmsg+2],0
	jz	dbgmsg_inactive
	call	dword ptr [__adbgmsg]	; call __FF_DBGMSG for FORTRAN
else   					; not needed for C-only version
	cmp	[__adbgmsg],0
	jz	dbgmsg_inactive
	call	word ptr [__adbgmsg]	
endif
dbgmsg_inactive:
	mov 	ax,255			; run-time error message banner
	push	ax
	call	_NMSG_WRITE
cEnd

sEnd	code

	end

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.