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


	.data 
 
C	struc 
	Msk	dw	? 
	Opcode	dw	? 
	Len	db	? 
	Spec	db	? 
	ends 
 
Opcodes	C	<0fch,88h,-12,scNorm> 
	C	<0fdh,8ch,-12,scNorm> 
	C	<0feh,86h,-12,scNorm> 
	C	<0feh,0c4h,-12,scNorm> 
	C	<0feh,84h,-12,scNorm> 
	C	<0fch,0d0h,-12,scNorm> 
	C	<0c4h,0,-12,scNorm> 
	C	<0ffh,62h,-12,scNorm> 
	C	<0f8h,0d8h,-12,scNorm> 
	C	<0ffh,8dh,-12,scNorm> 
	C	<38ffh,30ffh,-12,scNorm> 
	C	<38ffh,008fh,-12,scNorm> 
	C	<30feh,00feh,-12,scNorm> 
	C	<20feh,20f6h,-12,scNorm> 
	C	<30feh,10f6h,-12,scNorm> 
	C	<30ffh,10ffh,-12,scInd+scCall> 
	C	<30ffh,20ffh,-12,scInd+scJmp> 
	C	<0fch,80h,-24,scNorm> 
	C	<0c6h,4,-16,scNorm> 
	C	<0feh,0a8h,-16,scNorm> 
	C	<0f8h,90h,1,scNorm> 
	C	<0e7h,27h,1,scNorm> 
	C	<0ffh,0d7h,1,scNorm> 
	C	<0ffh,0c8h,4,scNorm> 
	C	<0ffh,0c9h,1,scNorm> 
	C	<0fcffh,034cdh,-28,scInt> 
	C	<0fcffh,038cdh,-28,scInt> 
	C	<0ffffh,03ccdh,-36,scInt> 
	C	<0ffffh,03dcdh,2,scInt> 
	C	<0ffh,0cdh,2,scInt> 
	C	<0ffh,0cch,1,scNorm> 
	C	<0ffh,0ceh,1,scNorm> 
	C	<0ffh,9bh,1,scNorm> 
	C	<0ffh,0ebh,-2,scJmp> 
	C	<0f0h,70h,-2,scJcc> 
	C	<0fch,0e0h,-2,scJcc> 
	C	<0ffh,0e9h,-4,scJmp> 
	C	<0ffh,0e8h,-4,scCall> 
	C	<0ffh,0eah,-6,scJmp> 
	C	<0ffh,9ah,-6,scCall> 
	C	<0e7h,26h,0,scNorm> 
	C	<0feh,0f2h,0,scNorm> 
	C	<0f7h,0c3h,1,scRet> 
	C	<0f7h,0c2h,3,scRet> 
	C	<0ffh,0cfh,1,scRet> 
	C	<0fffeh,0ad4h,2,scNorm> 
	C	<0feh,6ch,-30,scNorm> 
	C	<0feh,6eh,-32,scNorm> 
	C	<0feh,0a6h,-34,scNorm> 
	C	<0feh,0a4h,-34,scNorm> 
	C	<0feh,0ach,-32,scNorm> 
	C	<0feh,0aeh,-30,scNorm> 
	C	<0feh,0aah,-30,scNorm> 
	C	<0ffffh,060fh,2,scNorm> 
	C	<0c6ffh,800fh,1,scNorm> 
	C	<0feh,60h,1,scNorm> 
	C	<0feh,0fch,1,scNorm> 
	C	<0feh,0f4h,1,scNorm> 
	C	<0feh,98h,1,scNorm> 
	C	<0fch,0ech,1,scNorm> 
	C	<0fch,0e4h,2,scNorm> 
	C	<0fch,0f8h,1,scNorm> 
	C	<0fch,9ch,1,scNorm> 
	C	<0f0h,50h,1,scNorm> 
	C	<0f0h,40h,1,scNorm> 
	C	<0fch,0a0h,-38,scNorm> 
	C	<0e6h,6,1,scNorm> 
	C	<0feh,0c0h,-14,scNorm> 
	C	<38feh,00c6h,-22,scNorm> 
	C	<38feh,00f6h,-22,scNorm> 
	C	<0fdh,69h,-26,scNorm> 
	C	<0ffffh,0af0fh,-28,scNorm> 
	C	<0fdh,68h,-18,scNorm> 
	C	<0f0h,0b0h,-20,scNorm> 
	C	<0ffh,0f0h,0,scNorm> 
	C	<0f8h,0d8h,-12,scNorm> 
	C	<0,0,1,scNorm> 
OpLen	equ	($-Opcodes)/6 
 
SegPrefix	dw	0 
 
	.code 
 
Disasm	proc	near 
	xor	dx,dx 
	mov	SegPrefix,dx 
@@1:	mov	bx,es:[di] 
	lea	si,Opcodes 
	mov	cx,OpLen 
@@2:	lodsw 
	and	ax,bx 
	cmp	ax,[si-2].Opcode 
	je	@@3 
	add	si,size C-2 
	loop	@@2 
	mov	cx,1 
	xor	ax,ax 
	ret 
@@3:	mov	cl,[si-2].Len 
	xor	ch,ch 
	mov	al,[si-2].Spec 
	xor	ah,ah 
	and	cl,cl 
	jle	@@5 
	add	cx,dx 
@@4:	ret 
@@5:	jz	@@7 
	dec	ch 
	mov	si,cx 
	neg	si 
	add	si,offset @@Tbl 
	jmp	word ptr cs:[si] 
@@Tbl	dw	@@7,@@10,@@11,@@12,@@4,@@4,@@19,@@18 
	dw	@@24,@@26,@@28,@@17,@@16,@@15,@@14,@@30 
	dw	@@31,@@35,@@13,@@32 
@@7:	mov	al,es:[di] 
	inc	di 
	inc	dx 
	cmp	al,26h 
	je	@@9 
	cmp	al,2eh 
	je	@@8 
	cmp	al,26h 
	jne	@@1 
@@8:	mov	SegPrefix,-1 
	jmp	@@1 
@@9:	mov	SegPrefix,7 
	jmp	@@1 
@@10:	mov	bx,ax 
	mov	al,es:[di+1] 
	cbw 
	xchg	ax,bx 
	lea	di,[bx+di+2] 
	mov	cx,2 
	add	cx,dx 
	ret 
@@11:	mov	bx,es:[di+1] 
	lea	di,[bx+di+3] 
	mov	cx,3 
	add	cx,dx 
	ret 
@@12:	les	di,es:[di+1] 
	mov	cx,5 
	add	cx,dx 
	ret 
@@13:	inc	di 
	inc	dx 
	mov	bl,es:[di+1] 
	and	bl,0f0h 
	cmp	bl,20h 
	jne	@@14 
	inc	dx 
	add	cx,dx 
	ret 
@@14:	inc	di 
	jmp	short @@18 
@@15:	test	byte ptr es:[di],2 
	jnz	@@18 
	inc	dx 
	jmp	short @@18 
@@16:	test	byte ptr es:[di],2 
	jnz	@@18 
@@17:	inc	dx 
	test	byte ptr es:[di],1 
	jz	@@19 
@@18:	inc	dx 
@@19:	and	ax,ax 
	jnz	@@21 
	mov	cx,SegPrefix 
	and	cx,cx 
	jl	@@21 
	mov	bl,es:[di+1] 
	cmp	bl,0c0h 
	jae	@@21 
	jcxz	@@20 
	or	ax,cx 
	jmp	short @@21 
@@20:	and	bl,0c7h 
	cmp	bl,6 
	je	@@21 
	and	bl,7 
	cmp	bl,2 
	je	@@21 
	cmp	bl,3 
	je	@@21 
	cmp	bl,6 
	je	@@21 
	or	ax,6 
@@21:	mov	bl,es:[di+1] 
	and	bl,0c7h 
@@22:	mov	cx,2 
	cmp	bl,0c0h 
	jae	@@23 
	mov	cx,4 
	cmp	bl,80h 
	jae	@@23 
	cmp	bl,6 
	je	@@23 
	dec	cx 
	cmp	bl,40h 
	jae	@@23 
	dec	cx 
@@23:	add	cx,dx 
	ret 
@@24:	mov	cx,2 
	test	byte ptr es:[di],1 
	jz	@@25 
	inc	cx 
@@25:	ret 
@@26:	mov	cx,2 
	test	byte ptr es:[di],2 
	jnz	@@27 
	inc	cx 
@@27:	ret 
@@28:	mov	cx,2 
	test	byte ptr es:[di],8 
	jz	@@29 
	inc	cx 
@@29:	ret 
@@30:	mov	ax,scES 
	mov	cx,dx 
	inc	cx 
	ret 
@@31:	mov	cx,1 
	jmp	short @@33 
@@32:	mov	cx,3 
@@33:	mov	ax,SegPrefix 
	cmp	ax,7 
	je	@@30 
	inc	ax 
	jz	@@34 
	mov	ax,scDS 
@@34:	add	cx,dx 
	ret 
@@35:	mov	ax,SegPrefix 
	cmp	ax,7 
	je	@@30 
	inc	ax 
	jz	@@30 
	mov	ax,scBoth 
	mov	cx,dx 
	inc	cx 
	ret 
Disasm	endp