www.pudn.com > tp60src.zip > TDINFO5.INC
MarkType proc near mov bx,es:[di].tsType.Segm mov di,es:[di].tsType.Offs mov es,es:[bx] jmp @@1 MarkVar label near mov bx,es:[di].vsType.Segm mov di,es:[di].vsType.Offs mov es,es:[bx] _Mark label near @@1: mov bx,es cmp bx,d3cb2 jne @@4 cmp d3cbe,0 je @@2 test es:[di].tdNext,8000h jz @@4 and es:[di].tdNext,7fffh jmp short @@3 @@2: test es:[di].tdNext,8000h jnz @@4 or es:[di].tdNext,8000h @@3: push es di mov bl,es:[di].tdType xor bh,bh shl bx,1 call cs:MarkSwitch[bx] pop di es @@4: ret MarkType endp MarkVoid proc near ret MarkVoid endp MarkArray proc near push es di es di mov bx,es:[di].atBase.Segm mov di,es:[di].atBase.Offs mov es,es:[bx] call _Mark pop di es mov bx,es:[di].atBounds.Segm mov di,es:[di].atBounds.Offs mov es,es:[bx] call _Mark pop di es ret MarkArray endp MarkRecord proc near push es push di mov si,es:[di].rtFirst jmp short @@2 @@1: push bx mov bl,es:[si].seName.B0 xor bh,bh lea di,[si+size TSymbol+bx] pop bx push es:[di].vsNext call MarkField pop si @@2: or si,si jnz @@1 pop di es ret MarkRecord endp MarkObject proc near push es di mov si,es:[di].rtFirst jmp short @@3 @@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 je @@2 push es:[di].vsNext call MarkField pop si jmp short @@3 @@2: mov si,es:[di].psType.tdNext @@3: or si,si jnz @@1 pop di es ret MarkObject endp MarkPointer proc near push es di mov bx,es:[di].ptBase.Segm mov di,es:[di].ptBase.Offs mov es,es:[bx] call _Mark pop di es ret MarkPointer endp MarkField proc near push es di mov bx,es:[di].vsType.Segm mov di,es:[di].vsType.Offs mov es,es:[bx] call _Mark pop di es ret MarkField endp MarkProc proc near ret MarkProc endp ChooseType proc near mov cl,cs:[bx] xor ch,ch inc bx mov dl,cs:[bx] xor dh,dh inc bx @@1: cmp al,cs:[bx] je @@2 add bx,dx loop @@1 dec cx @@2: ret ChooseType endp