www.pudn.com > tp60src.zip > TDINFO1.INC


SkipName	proc	near 
	add	si,seName 
	xor	ah,ah 
	mov	al,es:[si].B0 
	inc	ax 
	add	si,ax 
	ret 
SkipName	endp 
 
StoreUnitName	proc	near 
	mov	si,es:uhName 
	jmp	StoreName 
StoreUnitName	endp 
 
StoreName	proc	near 
	test	d3caa,8000h 
	jz	@@3 
	mov	al,es:[si].seName.B0 
	xor	ah,ah 
	inc	ax 
	cmp	Phase,0 
	je	@@1 
	cmp	Phase,8000h 
	jne	@@2 
	push	si di 
	add	si,seName+1 
	call	GetMem 
	push	ds es es 
	call	StartBuf 
	pop	ds 
	dec	ax 
	mov	cx,ax 
	cld 
	rep	movsb 
	xor	al,al 
	stosb 
	pop	es 
	pop	ds 
	call	StopBuf 
	pop	di 
	pop	si 
@@1:	add	NamePoolSize.W0,ax 
	adc	NamePoolSize.W2,0 
@@2:	inc	Cnt.NameCount 
@@3:	ret 
StoreName	endp 
 
StoreUnit	proc	near 
	mov	si,es:uhName 
	call	SkipName 
	xor	ax,ax 
	cwd 
	jmp	short @@3 
@@1:	call	SkipName 
	cmp	es:[si].usChecksum,0 
	je	@@3 
	cmp	Phase,20h 
	jne	@@2 
	push	es 
	mov	es,es:[si].usAddress 
	mov	ax,es:uhNumber 
	call	StartBuf 
	stosw 
	xor	ax,ax 
	stosw 
	mov	ax,dx 
	stosw 
	mov	ax,-2 
	stosw 
	xor	ax,ax 
	stosw 
	stosw 
	call	StopBuf 
	pop	es 
	mov	dx,Cnt.ScopeCount 
@@2:	inc	Cnt.ScopeCount 
@@3:	mov	si,es:[si].usNext 
	or	si,si 
	jnz	@@1 
	ret 
StoreUnit	endp 
 
HashIterator	proc	near 
	push	di si bx cx 
	mov	cx,es:[bx] 
	shr	cx,1 
	inc	cx 
@@1:	inc	bx 
	inc	bx 
	mov	si,es:[bx] 
	jmp	short @@3 
@@2:	push	bx 
	mov	bl,es:[si].seName.B0 
	mov	bh,0 
	lea	di,[si+size TSymbol+bx] 
	mov	al,es:[si].seType 
	and	al,not t_Private 
	call	HashIterFunc 
	pop	bx 
	mov	si,es:[si].sePrev 
@@3:	or	si,si 
	jnz	@@2 
	loop	@@1 
	pop	cx bx si di 
	ret 
HashIterator	endp 
 
l039b	proc	near 
	call	l03a2 
	call	l03d4 
	ret 
l039b	endp 
 
l03a2	proc	near 
	mov	d3cec,0 
	mov	ax,es 
	cmp	ax,LastUnit 
	jne	@@1 
	call	l0962 
@@1:	lea	ax,l0751 
	mov	bx,es:uhDebugHash 
	cmp	bx,es:uhInterface 
	je	@@2 
	lea	ax,l0745 
@@2:	call	CustomHashIter 
	test	d3caa,2 
	jz	@@3 
	inc	Cnt.SegmentCount 
@@3:	ret 
l03a2	endp 
 
l03d4	proc	near 
	mov	bx,es:uhDebugHash 
	cmp	bx,es:uhInterface 
	je	@@1 
	lea	ax,l073a 
	jmp	short CustomHashIter 
@@1:	ret 
l03d4	endp 
 
CustomHashIter	proc	near 
	mov	HashIterFunc,ax 
	call	HashIterator 
	lea	ax,l0751 
	mov	HashIterFunc,ax 
	ret 
CustomHashIter	endp 
 
DoCountProcInfoSize	proc	near 
	cmp	al,t_Proc 
	je	_DoCountProcInfoSize 
	cmp	al,t_Type 
	jne	@@5 
	push	es di 
	mov	bx,es:[di].tsType.Segm 
	mov	di,es:[di].tdType.Offs 
	mov	es,es:[bx] 
	cmp	es:[di].tdType,ttObject 
	jne	@@4 
	mov	ax,es:[di].rtFirst 
	or	ax,ax 
	jz	@@4 
	push	si 
	mov	si,ax 
@@1:	push	bx 
	mov	bl,es:[si].seName.B0 
	xor	bh,bh 
	lea	di,[si+size TSymbol+bx] 
	pop	bx 
	mov	al,es:[si].seType 
	and	al,not t_Private 
	cmp	al,t_Proc 
	jne	@@2 
	call	_DoCountProcInfoSize 
	mov	si,es:[di].psType.tdNext 
	jmp	short @@3 
@@2:	mov	si,es:[di].vsNext 
@@3:	or	si,si 
	jnz	@@1 
	pop	si 
@@4:	pop	di es 
@@5:	ret 
DoCountProcInfoSize	endp 
 
_DoCountProcInfoSize	proc	near 
	test	es:[di].psFlags,pfInline 
	jnz	@@3 
	mov	bx,es:[di].psProcMap 
	add	bx,es:uhProcMap 
	mov	ax,bx 
	test	es:[bx].pmFlags.B0,4 
	jz	@@1 
	cmp	es:[bx].pmStub,0 
	je	@@3 
	mov	ax,ProcInfoSize 
	mov	es:[bx].pmStub,ax 
	mov	bx,es:[bx].pmCodeMap 
	add	bx,es:uhEndMaps 
	mov	es:[bx].smAddr,0 
	mov	ax,6 
	jmp	short @@2 
@@1:	mov	bx,es:[bx].pmCodeMap 
	add	bx,es:uhCodeMap 
	cmp	es:[bx].smAddr,-1 
	je	@@3 
	mov	bx,ax 
	mov	ax,ProcInfoSize 
	mov	es:[bx].pmStub,ax 
	mov	ax,6 
	cmp	es:[bx].pmEntryPoint,-1 
	je	@@2 
	mov	ax,10 
@@2:	add	ProcInfoSize,ax 
	jc	@@4 
	mov	bx,es:[di].psHash 
	or	bx,bx 
	jz	@@3 
	call	HashIterator 
@@3:	ret 
@@4:	jmp	OutOfMemory 
_DoCountProcInfoSize	endp 
 
l04b2	proc	near 
	mov	cx,es:[si].trSymbol 
	jcxz	@@1 
	xchg	si,cx 
	mov	bl,es:[si].seName.B0 
	mov	bh,0 
	lea	bx,[si+size TSymbol+bx] 
	mov	bx,es:[bx].psHash 
	xchg	si,cx 
	call	l09b8 
	call	HashIterator 
@@1:	ret 
l04b2	endp 
 
l04cf	proc	near 
	mov	cx,es:[si].trSymbol 
	jcxz	@@1 
	push	di 
	mov	di,cx 
	mov	bl,es:[di].seName.B0 
	xor	bh,bh 
	lea	di,[di+size TSymbol+bx] 
	mov	bx,es:[di].psHash 
	push	es 
	mov	di,es:[di].psProcMap 
	add	di,es:uhProcMap 
	mov	di,es:[di].pmStub 
	mov	es,ProcInfo 
	mov	cx,es:[di+8] 
	mov	ax,9 
	cwd 
	mul	cx 
	call	GetMem 
	call	StartBuf 
	mov	d3cb6,di 
	pop	es 
	push	Cnt.SymbolCount 
	call	l09b8 
	call	HashIterator 
	pop	ax 
	call	l1b6b 
	pop	di 
@@1:	ret 
l04cf	endp 
 
l051a	proc	near 
	mov	cx,es:[si].trSymbol 
	jcxz	@@2 
	push	di 
	mov	di,cx 
	mov	bl,es:[di].seName.B0 
	xor	bh,bh 
	lea	di,[di+size TSymbol+bx] 
	mov	bx,es:[di].psHash 
	push	di 
	mov	d3ced,0 
	push	di Cnt.SymbolCount 
	call	l09b8 
	call	HashIterator 
	pop	ax si 
	push	es 
	mov	si,es:[si].psProcMap 
	add	si,es:uhProcMap 
	mov	si,es:[si].pmStub 
	mov	es,ProcInfo 
	sub	ax,Cnt.SymbolCount 
	neg	ax 
	mov	es:[si+8],ax 
	mov	ax,Cnt.ScopeCount 
	mov	es:[si+6],ax 
	pop	es 
	inc	Cnt.ScopeCount 
	pop	di 
	cmp	d3ced,0 
	je	@@1 
	mov	di,es:[di].psProcMap 
	add	di,es:uhProcMap 
	or	es:[di].pmFlags.B0,20h 
@@1:	pop	di 
@@2:	ret 
l051a	endp 
 
TraceIterator	proc	near 
	mov	si,es:uhTrace 
	cmp	si,es:uhEndTrace 
	je	@@4 
	mov	d3cea,ax 
	mov	di,es:uhCodeMap 
	jmp	short @@3 
@@1:	cmp	es:[di].smAddr,-1 
	je	@@2 
	mov	si,es:[di].smTrace 
	cmp	si,-1 
	je	@@2 
	add	si,es:uhTrace 
	call	d3cea 
@@2:	add	di,size TSegMap 
@@3:	cmp	di,es:uhConstMap 
	jne	@@1 
@@4:	ret 
TraceIterator	endp 
 
l05ba	proc	near 
	mov	ax,es 
	cmp	ax,LastUnit 
	je	@@3 
	push	d3caa Phase 
	mov	Phase,0 
	mov	d3caa,0 
	lea	si,Cnt 
	mov	cx,size Cnt shr 1 
@@1:	lodsw 
	push	ax 
	loop	@@1 
	mov	bx,es:uhDebugHash 
	call	HashIterator 
	lea	ax,l04b2 
	call	TraceIterator 
	lea	si,Cnt+size Cnt-2 
	mov	cx,size Cnt shr 1 
@@2:	pop	[si] 
	dec	si 
	dec	si 
	loop	@@2 
	pop	Phase d3caa 
@@3:	ret 
l05ba	endp 
 
l0603	proc	near 
	mov	si,es:uhTrace 
	cmp	si,es:uhEndTrace 
	je	@@4 
	mov	si,es:uhSources 
	xor	bh,bh 
	jmp	short @@3 
@@1:	cmp	es:[si].slFileType,fdIncludeDir 
	jb	@@2 
	cmp	es:[si].slFileType,fdUnitDir 
	ja	@@2 
	call	StoreSourceFile 
	push	si 
	add	si,size TSourceList-size TSymbol 
	call	StoreName 
	pop	si 
@@2:	mov	bl,es:[si].slName.B0 
	lea	si,[si+size TSourceList+bx] 
@@3:	cmp	si,es:uhTrace 
	jb	@@1 
@@4:	ret 
l0603	endp 
 
l063e	proc	near 
	xor	dx,dx 
	mov	bx,-1 
	lea	ax,l0651 
	call	TraceIterator 
	or	dx,dx 
	jz	@@1 
	call	StoreCorrel 
@@1:	ret 
l063e	endp 
 
l0651	proc	near 
	mov	ax,es:[si].trSource 
	cmp	ax,bx 
	je	@@2 
	cmp	bx,-1 
	je	@@1 
	push	ax 
	call	StoreCorrel 
	pop	ax 
	xor	dx,dx 
@@1:	xchg	ax,bx 
@@2:	call	l066a 
	ret 
l0651	endp 
 
l066a	proc	near 
	push	si ds es 
	pop	ds 
	mov	cx,[si+8] 
	add	si,10 
@@1:	lodsb 
	or	al,al 
	js	@@2 
	cbw 
	jmp	short @@3 
@@2:	and	al,7fh 
	mov	ah,al 
	lodsb 
@@3:	or	ax,ax 
	jz	@@4 
	inc	dx 
@@4:	loop	@@1 
	pop	ds 
	pop	si 
	ret 
l066a	endp 
 
l068b	proc	near 
	mov	si,es:[si] 
	or	si,si 
	jnz	@@1 
	jmp	@@3 
@@1:	mov	ax,es:[di] 
	mov	d3cc8,ax 
	mov	ax,es:[di+2] 
	mov	d3cca,ax 
	push	es di es 
	mov	bl,es:[si+3] 
	xor	bh,bh 
	lea	si,[bx+si+4] 
	mov	di,es:[si+2] 
	add	di,es:[0ch] 
	mov	ax,es:[di+6] 
	add	d3cc8,ax 
	sub	d3cca,ax 
	mov	di,es:[di] 
	mov	es,ProcInfo 
	mov	dx,es:[di] 
	mov	ax,es:[di+8] 
	mov	cx,Cnt.SegmentCount 
	pop	es 
	test	byte ptr es:[si],10h 
	jnz	@@2 
	mov	si,es:[si+4] 
	or	si,si 
	jz	@@2 
	mov	bl,es:[si+3] 
	xor	bh,bh 
	lea	si,[bx+si+4] 
	mov	di,es:[si+2] 
	add	di,es:[0ch] 
	mov	di,es:[di] 
	mov	es,ProcInfo 
	mov	cx,es:[di+6] 
@@2:	mov	bx,ax 
	call	StartBuf 
	mov	ax,Cnt.SymbolCount 
	stosw 
	mov	ax,bx 
	stosw 
	add	Cnt.SymbolCount,ax 
	mov	ax,cx 
	stosw 
	mov	ax,dx 
	stosw 
	mov	ax,d3cc8 
	stosw 
	mov	ax,d3cca 
	stosw 
	call	StopBuf 
	pop	di es 
	inc	Cnt.ScopeCount 
@@3:	ret 
l068b	endp 
 
l0729	proc	near 
	mov	bx,es:[bx+2] 
	add	bx,es:[0ch] 
	mov	bx,es:[bx] 
	mov	es,ProcInfo 
	ret 
l0729	endp