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


tOPCODE	equ	41h 
tNOT	equ	43h 
tOFFSET	equ	44h 
tSEG	equ	45h 
tTYPE	equ	46h 
tOR	equ	48h 
tXOR	equ	49h 
tAND	equ	4ah 
tMOD	equ	4bh 
tSHR	equ	4ch 
tSHL	equ	4dh 
tHIGH	equ	4eh 
tLOW	equ	4fh 
tPTR	equ	50h 
tNUMBER	equ	64h 
tREG	equ	65h 
tTYP	equ	66h 
tMEM	equ	67h 
tSYM	equ	6bh 
 
TSymbol	struc 
	sScope	dd	? 
	sAddr	dd	? 
	sValue	dd	? 
	sSize	dw	? 
	sFlag	dw	? 
	sParent	dd	? 
	ends 
 
TAsmSymbol	struc 
	aValue	dd	? 
	aParent	dd	? 
	aAddr	dd	? 
	aSize	dw	? 
	aRegs	db	? 
	aSeg	db	? 
	aRegNum	dw	? 
	aType	db	? 
	aHalf	db	? 
	ends 
 
TCodeBuffer	struc 
	cType	dw	? 
	cValue	dd	? 
	cAddr	dd	? 
	ends 
 
rfInd	equ	40h 
rfBX	equ	8 
rfBP	equ	4 
rfSI	equ	2 
rfDI	equ	1 
 
szByte	equ	0 
szWord	equ	1 
szSreg	equ	2 
szST	equ	4 
szDword	equ	0ffh 
szQword	equ	0feh 
szTbyte	equ	0fdh 
sz???	equ	0fch 
 
rgAL	equ	0 
rgCL	equ	1 
rgDL	equ	2 
rgBL	equ	3 
rgAH	equ	4 
rgCH	equ	5 
rgDH	equ	6 
rgBH	equ	7 
rgAX	equ	0 
rgCX	equ	1 
rgDX	equ	2 
rgBX	equ	3 
rgSP	equ	4 
rgBP	equ	5 
rgSI	equ	6 
rgDI	equ	7 
rgES	equ	0 
rgCS	equ	1 
rgSS	equ	2 
rgDS	equ	3 
 
eByte	equ	0 
eFixup	equ	1 
eShort	equ	2 
eFloat	equ	3 
 
fRel	equ	0 
fOffs	equ	1 
fSegm	equ	2 
fPtr	equ	3 
 
cNop		equ	0 
cPushD16	equ	2 
cPushD8		equ	4 
cLea		equ	6 
cOutDX		equ	8 
cOutD8		equ	10 
cInDX		equ	12 
cInD8		equ	14 
cXchgRAX	equ	16 
cXchgAXR	equ	18 
cInt		equ	20 
cEnter		equ	22 
cArOpRD		equ	24 
cMovRD		equ	26 
cJmpRM16	equ	28 
cJmpFar		equ	30 
cJmpRM32	equ	32 
cJcc		equ	34 
cJmpNear	equ	36 
cMovMAcc	equ	38 
cMovAccM	equ	40 
cRet		equ	42 
cRetnD16	equ	44 
cPrefix		equ	46 
cPushSr		equ	48 
cPopSr		equ	50 
cIncR16		equ	52 
cLgdt		equ	54 
cLar		equ	56 
cArpl		equ	58 
cImul286	equ	60 
cMovSrRM	equ	62 
cMovRMSr	equ	64 
cMovRMR		equ	66 
cXchgRMR	equ	68 
cPopRM		equ	70 
cArOpRMD	equ	72 
cMovRMD		equ	74 
cIncRM		equ	76 
cLds		equ	78 
cShift		equ	80 
cFoper		equ	82 
cFstswAX	equ	84 
cF_STi		equ	86 
cF_STiST	equ	88 
cF_STSTi	equ	90 
cF_RM		equ	92 
cF_Tbyte	equ	94 
cFstsw		equ	96 
cFiadd		equ	98 
cFild		equ	100 
cFstenv		equ	102 
cFsave		equ	104 
cDB		equ	106 
 
Offs	equ	(word ptr 0) 
Segm	equ	(word ptr 2) 
W0	equ	(word ptr 0) 
W2	equ	(word ptr 2) 
B0	equ	(byte ptr 0) 
B1	equ	(byte ptr 1) 
 
Argm	macro	Symbol,SType,Count 
	local	Offset 
	@AP = (@AP + SType * Count + 1) and 0fffeh 
	Offset = @AP 
Symbol	equ	(SType ptr [bp+@AF-Offset]) 
	endm 
 
@AP = 0 
@AF = 0 
 
Loc	macro	Symbol,SType,Count 
	local	Offset,S 
	@LP = @LP + SType * Count 
	Offset = @LP 
Symbol	equ	(SType ptr [bp-Offset]) 
	endm 
 
@LP = 0 
 
Entry	macro	Name 
	public	Name 
Name	proc	far 
	push	bp 
	mov	bp,sp 
	@AF = @AP + 6 
	if	@LP ne 0 
		sub	sp,@LP 
	endif 
	endm 
 
Exit	macro	Name,X 
	if	@LP ne 0 
		mov	sp,bp 
	endif 
	pop	bp 
	retf	@AP 
	@AP = 0 
	@LP = 0 
	endp	Name 
	endm 
 
Dwc	macro	A,B 
	dw	H&A&_&B 
endm 
 
Zeroc	macro	A,B 
	@H&A&_&B = 0 
endm 
 
Peekc	macro	A,B,C 
	A = @H&B&_&C 
endm 
 
Pokec	macro	 A,B,C 
	@H&A&_&B = C 
endm 
 
Fixupc	macro	A,B 
	H&A&_&B = @H&A&_&B 
endm 
 
@HN=0 
 
Hash	macro	NBuck 
	local	Nb 
	@I = 0 
	@Hn = @Hn+1 
	@Nb = (NBuck-1) shl 1 
	Nb = @Nb 
	dw 	Nb 
	rept	NBuck 
		Dwc	%@Hn,%@I 
		Zeroc	%@Hn,%@I 
		@I = @I+2 
		endm 
	endm 
 
HEnt	macro	Nm 
	local	A,I 
	I = 0 
	@Hs = 0 
	irpc	@C, 
		I = I+1 
		@Hs = @Hs+'&@C&'-1 
		endm 
	@Hs = (@Hs*2) and @NB 
	Peekc	A,%@Hn,%@Hs 
	Pokec	%@Hn,%@Hs,$ 
	dw	A 
	db	I,'&Nm&' 
	endm 
 
HEnd	macro 
	@I = 0 
	rept	(@Nb shr 1)+1 
		Fixupc	%@Hn,%@I 
		@I = @I+2 
		endm 
	endm 
 
	model	large Basm_Text,pascal 
	locals	@@