www.pudn.com > tp60src.zip > STDUTILS.ASM


	model	large compiler_text,pascal 
	include	compiler.inc 
 
	.code	compiler_text 
 
	public	PushReference 
	public	PushFileRef 
	public	PushStringRef 
	public	PushIntRef 
	public	GetPtrRef 
	public	GetPtrExpr 
	public	GetStringExpr 
	public	GetOrdExpr 
	public	GetIntExpr 
	public	GetNumExpr 
	public	PushStringExpr 
	public	GetOrdParam 
	public	GetIntParam 
	public	GetNumParam 
	public	MarkReadOnly 
	public	CastPointer 
	public	CastString 
	public	CastExtended 
	public	CastReal 
	public	CastLongint 
	public	CastBoolean 
	public	CastReal2Ext 
	public	DefaultFile 
	public	CheckIOResult 
	public	CheckOParen 
	public	CheckComma 
	public	NeedOParen 
	public	NeedCParen 
	public	NeedComma 
 
PushReference	proc	near 
	Invoke	GetReference 
	Invoke	PushAddr 
	les	bx,[di].exType 
	ret 
PushReference	endp 
 
PushFileRef	proc	near 
	call	PushReference 
	cmp	es:[bx].tdType,ttFile 
	je	@@1 
	cmp	es:[bx].tdType,ttText 
	jne	@@2 
@@1:	ret 
@@2:	mov	ax,77 
	Chain	CompileError 
PushFileRef	endp 
 
PushStringRef	proc	near 
	call	PushReference 
	cmp	es:[bx].tdType,ttString 
	jne	@@1 
	ret 
@@1:	mov	ax,66 
	Chain	CompileError 
PushStringRef	endp 
 
PushIntRef	proc	near 
	call	PushReference 
	cmp	es:[bx].tdType,ttInteger 
	jne	@@1 
	cmp	es:[bx].tdSizeOf,2 
	jne	@@1 
	ret 
@@1:	mov	ax,98 
	Chain	CompileError 
PushIntRef	endp 
 
GetPtrRef	proc	near 
	Invoke	GetReference 
	les	bx,[di].exType 
	cmp	es:[bx].tdType,ttPointer 
	jne	@@1 
	ret 
@@1:	mov	ax,65 
	Chain	CompileError 
GetPtrRef	endp 
 
GetPtrExpr	proc	near 
	Invoke	GetExpr 
	cmp	es:[bx].tdType,ttPointer 
	jne	@@1 
	ret 
@@1:	mov	ax,78 
	Chain	CompileError 
GetPtrExpr	endp 
 
GetStringExpr	proc	near 
	Invoke	GetExpr 
	Invoke	ConvChar2String 
	Invoke	LoadPackedChar 
	les	bx,[di].exType 
	cmp	es:[bx].tdType,ttString 
	jne	@@1 
	ret 
@@1:	mov	ax,67 
	Chain	CompileError 
GetStringExpr	endp 
 
GetOrdExpr	proc	near 
	Invoke	GetExpr 
	cmp	es:[bx].tdType,ttInteger 
	jb	@@1 
	ret 
@@1:	mov	ax,39 
	Chain	CompileError 
GetOrdExpr	endp 
 
GetIntExpr	proc	near 
	Invoke	GetExpr 
	cmp	es:[bx].tdType,ttInteger 
	jne	@@1 
	ret 
@@1:	mov	ax,38 
	Chain	CompileError 
GetIntExpr	endp 
 
GetNumExpr	proc	near 
	Invoke	GetExpr 
	les	bx,[di].exType 
	mov	al,es:[bx].tdType 
	cmp	al,ttInteger 
	je	@@1 
	cmp	al,ttReal 
	je	@@1 
	cmp	al,tt8087 
	jne	@@2 
@@1:	ret 
@@2:	mov	ax,79 
	Chain	CompileError 
GetNumExpr	endp 
 
PushStringExpr	proc	near 
	call	GetStringExpr 
	Invoke	PutImmedString 
	Chain	PushAddr 
PushStringExpr	endp 
 
GetOrdParam	proc	near 
	Invoke	NeedOParen 
	call	GetOrdExpr 
	Chain	NeedCParen 
GetOrdParam	endp 
 
GetIntParam	proc	near 
	Invoke	NeedOParen 
	call	GetIntExpr 
	Chain	NeedCParen 
GetIntParam	endp 
 
GetNumParam	proc	near 
	Invoke	NeedOParen 
	call	GetNumExpr 
	Chain	NeedCParen 
GetNumParam	endp 
 
MarkReadOnly	proc	near 
	cmp	[di].exLocation,elMemory 
	jne	@@1 
	or	[di].exMisc,efReadOnly 
@@1:	ret 
MarkReadOnly	endp 
 
CastPointer	proc	near 
	mov	ax,SystemUnit 
	mov	[di].exType.Offs,_Pointer 
	mov	[di].exType.Segm,ax 
	ret 
CastPointer	endp 
 
CastString	proc	near 
	mov	ax,SystemUnit 
	mov	[di].exType.Offs,_String 
	mov	[di].exType.Segm,ax 
	ret 
CastString	endp 
 
CastExtended	proc	near 
	mov	ax,SystemUnit 
	mov	[di].exType.Offs,_Extended 
	mov	[di].exType.Segm,ax 
	ret 
CastExtended	endp 
 
CastReal	proc	near 
	mov	ax,SystemUnit 
	mov	[di].exType.Offs,_Real 
	mov	[di].exType.Segm,ax 
	ret 
CastReal	endp 
 
CastLongint	proc	near 
	mov	ax,SystemUnit 
	mov	[di].exType.Offs,_Longint 
	mov	[di].exType.Segm,ax 
	ret 
CastLongint	endp 
 
CastBoolean	proc	near 
	mov	ax,SystemUnit 
	mov	[di].exType.Offs,_Boolean 
	mov	[di+2],ax 
	ret 
CastBoolean	endp 
 
CastReal2Ext	proc	near 
	les	bx,[di].exType 
	mov	al,es:[bx].tdType 
	cmp	al,ttReal 
	jne	@@1 
	test	CompilerOptions,co8087 
	jz	@@1 
	mov	al,tt8087 
@@1:	ret 
CastReal2Ext	endp 
 
DefaultFile	proc	near 
	or	ax,ax 
	jnz	@@1 
	mov	al,0bfh			; mov	di,... 
	Invoke	PutByte 
	mov	ax,SystemUnit 
	xor	bx,bx 
	mov	cx,ffData+ffOffs 
	Invoke	PutFixup 
	mov	ax,571eh		; push	ds	pop	di 
	Chain	PutWord 
@@1:	Chain	UseGoal 
DefaultFile	endp 
 
CheckIOResult	proc	near 
	test	CompilerOptions,coIOChk 
	jz	@@1 
	mov	ax,_InOutCheck 
	Chain	PutSystemCall 
@@1:	ret 
CheckIOResult	endp 
 
CheckOParen	proc	near 
	mov	al,tOParen 
	Chain	CheckToken 
CheckOParen	endp 
 
CheckComma	proc	near 
	mov	al,tComma 
	Chain	CheckToken 
CheckComma	endp 
 
NeedOParen	proc	near 
	mov	al,tOParen 
	Chain	NeedToken 
NeedOParen	endp 
 
NeedCParen	proc	near 
	mov	al,tCParen 
	Chain	NeedToken 
NeedCParen	endp 
 
NeedComma	proc	near 
	mov	al,tComma 
	Chain	NeedToken 
NeedComma	endp 
 
	end