www.pudn.com > tp60src.zip > TDINFO7.INC
l187f proc near call WriteHeader call ClearHeader mov cx,16 xor di,di @@1: push cx mov word ptr Cnt[di],1 mov cx,di shr cx,1 mov ax,1 shl ax,cl mov d3caa,ax mov Phase,ax cmp ax,400h jb @@2 cmp ax,2000h ja @@2 cmp d3cef,0 je @@4 @@2: call l18f6 mov bx,FirstUnit @@3: mov es,bx mov d3cb2,bx push es di call cs:l141c[di] pop di es mov bx,es:[4] or bx,bx jnz @@3 @@4: pop cx inc di inc di loop @@1 ret l187f endp l18d6 dw 0c100h,8085h,8000h,0 dw 1,3,92h,4ch dw 8600h,8500h,0a00h,0 dw 400h,400h,0,-1 l18f6 proc near mov ax,cs:l18d6[di] cmp ax,0 je @@5 or d3caa,ax push di mov cx,10h xor di,di @@1: shr ax,1 jnc @@2 mov word ptr Cnt[di],1 @@2: inc di inc di or ax,ax jz @@3 loop @@1 @@3: pop di cmp Cnt.TypeCount,1 jne @@4 cmp Phase,100h je @@4 mov Cnt.TypeCount,21h @@4: cmp Cnt.ScopeCount,1 jne @@5 push word ptr Cnt[8] pop Cnt.ScopeCount @@5: test d3caa,0b00h jz @@6 not d3cbe @@6: ret l18f6 endp l194e proc near mov ax,es:[3ch] inc ax add Cnt.NameCount,ax ret l194e endp l1958 proc near mov si,es:[si] or si,si jz @@1 push es mov bl,es:[si+3] xor bh,bh lea si,[bx+si+4] mov si,es:[si+2] add si,es:[0ch] mov si,es:[si] mov es,ProcInfo add dx,es:[si+8] pop es @@1: ret l1958 endp WriteHeader proc near mov ax,30h cmp Cnt.ClassCount,1 je @@1 add ax,10h @@1: call GetMem call StartBuf call l1a51 mov ax,52fbh stosw mov ax,208h cmp Cnt.ClassCount,1 je @@2 mov ax,209h @@2: stosw mov ax,NamePoolSize.Offs stosw mov ax,NamePoolSize.Segm stosw mov ax,Cnt.NameCount dec ax stosw mov ax,Cnt.TypeCount dec ax stosw mov d3cf0,ax mov ax,Cnt.MemberCount dec ax stosw mov d3cf2,ax mov ax,Cnt.SymbolCount dec ax stosw inc di inc di mov ax,Cnt.SegmentCount dec ax stosw inc di inc di mov ax,Cnt.ScopeCount dec ax stosw mov ax,Cnt.LineNumberCount dec ax stosw mov ax,Cnt.SourceFileCount dec ax stosw mov ax,Cnt.SegmentCount dec ax stosw mov ax,Cnt.CorrelCount dec ax stosw add di,4 cmp OverlaysPresent,1 je @@3 add di,4 inc di jmp short @@4 @@3: inc di inc di mov ax,DataStart stosw mov al,2 stosb @@4: inc di inc di mov ax,Cnt.DataCount dec ax stosw mov d3cf6,ax inc di mov d3cef,0 cmp Cnt.ClassCount,1 jne @@5 mov d3cf4,0 inc di inc di jmp short @@6 @@5: mov d3cef,1 mov ax,10h stosw mov ax,Cnt.ClassCount dec ax stosw mov ax,Cnt.ParentCount dec ax stosw mov d3cf4,ax inc di inc di inc di inc di mov ax,Cnt.SegmentCount dec ax stosw mov ax,Cnt.SegmentCount dec ax stosw inc di inc di inc di inc di @@6: call StopBuf ret WriteHeader endp l1a51 proc near push di shr ax,1 mov cx,ax xor ax,ax rep stosw pop di ret l1a51 endp l1a5c proc near push bp mov bp,sp push si di ds mov ax,di add ax,si shr ax,1 push ds si di dec ax mov cx,9 mul cx add ax,d3cb6 mov si,ax call StartBuf mov dx,di mov ax,es mov ds,ax rep movsb pop di si es @@1: mov bx,si mov al,0 call l1ad2 jz @@2 inc si jmp @@1 @@2: mov bx,di mov al,1 call l1ad2 jz @@3 dec di jmp @@2 @@3: cmp si,di ja @@5 je @@4 call l1b3f @@4: inc si dec di cmp si,di jna @@1 @@5: pop ds cmp [bp-2],di jae @@6 xchg si,[bp-2] call l1a5c mov si,[bp-2] @@6: cmp [bp-4],si jbe @@7 mov di,[bp-4] call l1a5c @@7: mov sp,bp pop bp ret l1a5c endp l1aca db 0,3,1,1,3,2,3,3 l1ad2 proc near push si di dx ax mov si,dx mov cx,9 mov ax,bx dec ax mul cx add ax,es:d3cb6 mov di,ax pop ax or al,al jnz @@1 xchg si,di @@1: lea bx,l1aca mov al,[di+8] and al,7 segcs xlat mov ah,al mov al,[si+8] and al,7 segcs xlat cmp al,ah jb @@4 ja @@5 cmp al,0 jne @@2 mov ax,[si+6] cmp ax,[di+6] jb @@4 ja @@5 mov ax,[si+4] cmp ax,[di+4] jb @@4 jmp short @@5 @@2: cmp al,1 jne @@3 mov ax,[si+4] cmp ax,[di+4] jg @@4 jmp short @@5 @@3: mov ax,[si] cmp ax,[di] jmp short @@7 @@4: mov al,1 jmp short @@6 @@5: mov al,0 @@6: or al,al @@7: pop dx di si ret l1ad2 endp l1b3f proc near push si di dx mov cx,9 mov ax,si dec ax mul cx add ax,es:d3cb6 mov si,ax mov ax,di dec ax mul cx add ax,es:d3cb6 mov di,ax @@1: mov al,[si] xchg al,[di] mov [si],al inc si inc di loop @@1 pop dx di si ret l1b3f endp l1b6b proc near mov dx,ax sub ax,Cnt.SymbolCount jz @@3 neg ax push ax push dx mov di,ax mov si,1 push es call l1a5c pop es dx cx push ds es mov di,d3cb6 mov es,ProcInfo mov ds,BufPtr.Segm @@1: mov al,[di+8] mov ah,al and al,7 jnz @@2 test ah,20h jz @@2 and byte ptr [di+8],0dfh mov bx,[di] mov es:[bx],dx mov ax,es:[bx+4] mov [di],ax @@2: add di,9 inc dx loop @@1 pop es ds @@3: ret l1b6b endp