!
! TYPCHK.DEFINITIONS - this file contains the definitions that drive type-checking of MACRO-32 instructions.
!
!	Note that the defintions in this file are specified as position independent with commas, tabs, EOLs or blanks as field
!	separators. All text is case insensitive. All comments begin with an exclamation point. Note parens are not allowed in
!	data type definition names as parens are part of the syntax to the DEFINE_OPCODE statement. 
!	Keywords not to re-defined are: DEFINE_TYPE, DEFINE_OPCODE, DEFINE_EXCEPTION, *NO_CHECK*, DEFINE_OPTION, *LABEL*,
!	*REG*, any option_flag_name, DEFINE_TYPE_MODE. The data type names are invariant however but the data type ID strings
!	for these data types can be redefined.
!
!	If you make a clever change to these definitions that catches a bug then please share it with your colleagues by informing
!	Paul Houlihan will see that it gets propogated.
!
!	X-1	PJH		Paul J houlihan			3-MAR-1991
!		Create Initial definitions
!
! ---
! DEFINE_OPTION
! Define option flags. Select the desired options. The options are:
!
!	FLAG_INTEGERS - Flag all arguments that are just integers, this check assumes "#" is missing.
!	FLAG_LOCAL - Flag local modules symbols that are used in arguments. By default this flagging is selected as it is useful
!		to check field size assumptions for the local symbols that don't have the field size built into the symbol name.
!		However there maybe facilities that need to use this option to reduce noise. A local symbol is an argument
!		that contains alphanumeric or underscore characters but not "$".
!	FLAG_INDEXING_MISMATCHES - Flag all mismatches between the data type imbedded in the field name and the expected data 
!		type used for indexing. The expected indexing data type is unique for each opcode and argument and is specified in
!		the argument data type suffix for the DEFINE_OPCODE statements below.
!	FLAG_NODT_INDEXING - Flag all arguments using indexing that have no data type as no field name exists (ie. (R2)[R3]).
!		This allows manual checking of all such arguments against the type of indexing done for this opcode and argument.
!	FLAG_UNSIGNED_BRANCHES - Flag all unsigned branch (BGTR, BGEQ, BLSS, BLEQ) that follows a byte or word opcode. This
!		attempts to locate branch opcodes that should be unsigned as they result from operations on unsigned fields. 
!	FLAG_LITERAL_WRITE_ADDRS - Flag all instructions that write values to a literal address which is in most cases not
!		intended. The argument access type suffix for the DEFINE_OPCODE statement specifies whether an argument is used
!		as the address of a write.
!	FLAG_IMPLICIT_REGISTER_USE - Flag all opcodes that implicitly destroy (or return data in) registers other than AP/FP/SP/PC.
!	ASSUME_SUPPRESS - If this option is selected then any field which is included in an ASSUME statement prior to a
!		data type mismatch will have the warning suppressed. If option not selected then ASSUME are ignored. Only the last
!		five ASSUME statements prior to a given instruction are checked.
!	FULL_TYPCHK_FILE - If selected this option results in a complete copy of the original listing file with warnings imbedded.
!		Without this option, the TYPCHK file terminates after the instructions and warnings at the beginning of the symbol
!		table or Alpha machine code listing.
!	FLAG_REGISTER_ONLY_ARGS - Flag arguments that are only registers with no field name offset as error for manual checking.
!
! SYNTAX: 
!
!	DEFINE_OPTION 	option_flag_name
!
DEFINE_OPTION	FLAG_INTEGERS,FLAG_LOCAL,FLAG_INDEXING_MISMATCHES,FLAG_UNSIGNED_BRANCHES,FLAG_LITERAL_WRITE_ADDRS
DEFINE_OPTION	FLAG_IMPLICIT_REGISTER_USE

! ---
! DEFINE_TYPE
! Define the strings that identify the data type of a MACRO-32 field name. Note that the correct usage of TEXT and ADDR
!	data types is hard to predict, so the DEFINE_OPCODE statements uses these sparingly. You may wish to remove these data
!	types to flag all references or add them to other opcodes to reduce the noise. Note that a data_type_name can contain
!	alphanumeric, $ or _ characters. The SOFT and HARD data types are longword or quadword data types depending on the target
!	environment sensed by the Type Checker. The following are special data types:
!	*NO_CHECK* is a special keyword used for the data_type_id_string which specifies no checking to be done on this data type.
!	*LABEL* is a special data type that is defined to be the format of a valid Macro-32 local label. 
!
! SYNTAX: 
!
!	DEFINE_TYPE	data_type_name 	[data_type_id_string1,data_type_id_string2,...]
!
DEFINE_TYPE     BYTE    $B_,$GB_,$AB_,_B_,_GB_,_AB_,$IB_,$GIB_,$AIB_,_IB_,_GIB_,_AIB_
DEFINE_TYPE     WORD    $W_,$GW_,$AW_,_W_,_GW_,_AW_,$IW_,$GIW_,$AIW_,_IW_,_GIW_,_AIW_
DEFINE_TYPE     LONG    $L_,$GL_,$AL_,_L_,_GL_,_AL_,$IL_,$GIL_,$AIL_,_IL_,_GIL_,_AIL_
DEFINE_TYPE     QUAD    $Q_,$GQ_,$AQ_,_Q_,_GQ_,_AQ_,$IQ_,$GIQ_,$AIQ_,_IQ_,_GIQ_,_AIQ_
DEFINE_TYPE	INT_S 	$IS_,$GIS_,$AIS_,_IS_,_GIS_,_AIS_
DEFINE_TYPE	INT_H	$IH_,$GIH_,$AIH_,_IH_,_GIH_,_AIH_
DEFINE_TYPE	PTR_S	$PS_,$GPS_,$APS_,_PS_,_GPS_,_APS_
DEFINE_TYPE	PTR_H	$PH_,$GPH_,$APH_,_PH_,_GPH_,_APH_
DEFINE_TYPE	OCTA    $O_,$GO_,$AO_,_O_,_GO_,_AO_
DEFINE_TYPE	FLOAT   $F_,$GF_,$AF_,_F_,_GF_,_AF_
DEFINE_TYPE	DFLOAT  $D_,$GD_,$AD_,_D_,_GD_,_AD_
DEFINE_TYPE	GFLOAT  $G_,$GG_,$AG_,_G_,_GG_,_AG_
DEFINE_TYPE	HFLOAT  $H_,$GH_,$AH_,_H_,_GH_,_AH_
DEFINE_TYPE	PACKED	$P_,$GP_,$AP_,_P_,_GP_,_AP_
DEFINE_TYPE	VIELD   $V_,_V_
DEFINE_TYPE	MASK    $M_,_M_
DEFINE_TYPE	SIZE    $S_,_S_
DEFINE_TYPE	ANY_TYPE	*NO_CHECK*
DEFINE_TYPE	LABEL		*LABEL*
DEFINE_TYPE	CONSTANT  	$K_,$GK_,$AK_,$C_,$GC_,$AC_,$_,_K_,_GK_,_AK_,_C_,_GC_,_AC_
DEFINE_TYPE	TEXT		$T_,$GT_,$AT_,_T_,_GT_,_AT_
DEFINE_TYPE	ADDR		$A_,$GA_,$AA_,$AR_,_A_,_GA_,_AA_,_AR_
DEFINE_TYPE	PTR_L		$PL_,$GPL_,$APL_,_PL_,_GPL_,_APL_
DEFINE_TYPE	PTR_Q		$PQ_,$GPQ_,$APQ_,_PQ_,_GPQ_,_APQ_
DEFINE_TYPE	REG_MASK	#^M

!
! Other IDSM conventional data type whose macro usage I couldn't predict. Thus these fields aren't used in checking.
!
!DEFINE_TYPE	RECORD 		$R_,$GR_,$AR_,_R_,_GR_,_AR_
!DEFINE_TYPE	NUM_STRING	$N_,$GN_,$AN_,_N_,_GN_,_AN_  ! NUMERIC STRING (ALL BYTE FORMS)
!DEFINE_TYPE	VARIABLE	$Z_,$GZ_,$AZ_,_Z_,_GZ_,_AZ_

! ---
! DEFINE_OPCODE
! Argument Data Types for standard VAX instructions. The opcode string is specified along with and the type for each of
!	it's arguments. Multiple data types acceptable for a given argument can be surrounded by parens. The floating point
!	instructions are mostly commented out as these are rare in the VMS Exec. Any data type name used in a DEFINE_OPCODE
!	statement must have previously been defined in a DEFINE_TYPE statement. Each argument has an optional suffix describing
!	the access type and data size of the argument (very close to the SRM conventions). This access type suffix is used in the
!	FLAG_LITERAL_WRITE_ADDRS option to detect constants in arguments used writes. The data type is used by the Flag
!	Indexing options to determine the type of indexing done for this argument.
!                       
! SYNTAX: 
!
!	DEFINE_OPCODE	opcode_string	[argument1_type,argument2_type,...] where 
!						argumentN_type = data_type_name-<access_type><data_type> or
!								( data_type_name1,data_type_name2,... )-<access_type><data_type>
!					      where:
!						access_type = R:Read or W:Write or M:Modify or B:Branch
!						data_type = B:Byte or W:Word or L:Long or Q:Quad or O:Octa or D or F or G or H
!                                                                                                      
DEFINE_OPCODE	ACBB	BYTE-RB		BYTE-RB		BYTE-MB		ANY_TYPE-BB
!DEFINE_OPCODE	ACBD	DFLOAT-RD	DFLOAT-RD	DFLOAT-MD	ANY_TYPE-BW
!DEFINE_OPCODE	ACBF	FLOAT-RF	FLOAT-RF	FLOAT-MF	ANY_TYPE-BW
!DEFINE_OPCODE	ACBG	GFLOAT-RG	GFLOAT-RG	GFLOAT-MG	ANY_TYPE-BW
!DEFINE_OPCODE	ACBH	HFLOAT-RH	HFLOAT-RH	HFLOAT-MH	ANY_TYPE-BW
DEFINE_OPCODE	ACBL	LONG-RL		LONG-RL		LONG-ML		ANY_TYPE-BW
DEFINE_OPCODE	ACBW	WORD-RW		WORD-RW		WORD-MW		ANY_TYPE-BW
DEFINE_OPCODE	ADAWI	WORD-RW		WORD-MW
DEFINE_OPCODE	ADDB	BYTE-RB		BYTE-MB
DEFINE_OPCODE	ADDB2	BYTE-RB		BYTE-MB
DEFINE_OPCODE	ADDB3	BYTE-RB		BYTE-RB		BYTE-WB
!DEFINE_OPCODE	ADDD	DFLOAT-RD	DFLOAT-MD
!DEFINE_OPCODE	ADDD2	DFLOAT-RD	DFLOAT-MD
!DEFINE_OPCODE	ADDD3	DFLOAT-RD	DFLOAT-RD	DFLOAT-WD
!DEFINE_OPCODE	ADDF	FLOAT-RF	FLOAT-MF
!DEFINE_OPCODE	ADDF2	FLOAT-RF	FLOAT-MF
!DEFINE_OPCODE	ADDF3	FLOAT-RF	FLOAT-RF	FLOAT-WF
!DEFINE_OPCODE	ADDG2	GFLOAT-RG	GFLOAT-MG
!DEFINE_OPCODE	ADDG3	GFLOAT-RG	GFLOAT-RG	GFLOAT-WG
!DEFINE_OPCODE	ADDH2	HFLOAT-RH	HFLOAT-MH
!DEFINE_OPCODE	ADDH3	HFLOAT-RH	HFLOAT		HFLOAT-WH
DEFINE_OPCODE	ADDL	LONG-RL		LONG-ML
DEFINE_OPCODE	ADDL2	LONG-RL		LONG-ML
DEFINE_OPCODE	ADDL3	LONG-RL		LONG-RL		LONG-WL
DEFINE_OPCODE	ADDP	WORD-RW		PACKED-RB	WORD-RW		PACKED-MB	
DEFINE_OPCODE	ADDP4	WORD-RW		PACKED-RB	WORD-RW		PACKED-MB	
DEFINE_OPCODE	ADDP6	WORD-RW		PACKED-RB	WORD-RW		PACKED-RB	WORD-RW		PACKED-WB	
DEFINE_OPCODE	ADDW	WORD-RW		WORD-MW
DEFINE_OPCODE	ADDW2	WORD-RW		WORD-MW
DEFINE_OPCODE	ADDW3	WORD-RW		WORD-RW		WORD-WW
DEFINE_OPCODE	ADWC	LONG-RL		LONG-ML
DEFINE_OPCODE	AOBLEQ	LONG-RL		LONG-ML		ANY_TYPE-BB
DEFINE_OPCODE	AOBLSS	LONG-RL		LONG-ML		ANY_TYPE-BB
DEFINE_OPCODE	ASHL	(VIELD,SIZE)-RB	LONG-RL		LONG-WL
DEFINE_OPCODE	ASHP	BYTE-RB		WORD-RW		PACKED-RB	BYTE-RB		WORD-RW		PACKED-WB	
DEFINE_OPCODE	ASHQ	(SIZE,VIELD)-RB	QUAD-RQ		QUAD-WQ
DEFINE_OPCODE	BBC	VIELD-RL	ANY_TYPE-RB	ANY_TYPE-BB
DEFINE_OPCODE	BBCC	VIELD-RL	ANY_TYPE-MB	ANY_TYPE-BB
DEFINE_OPCODE	BBCCI	VIELD-RL	ANY_TYPE-MB	ANY_TYPE-BB
DEFINE_OPCODE	BBCS	VIELD-RL	ANY_TYPE-MB	ANY_TYPE-BB
DEFINE_OPCODE	BBS	VIELD-RL	ANY_TYPE-RB	ANY_TYPE-BB
DEFINE_OPCODE	BBSC	VIELD-RL	ANY_TYPE-MB	ANY_TYPE-BB
DEFINE_OPCODE	BBSS	VIELD-RL	ANY_TYPE-MB	ANY_TYPE-BB
DEFINE_OPCODE	BBSSI	VIELD-RL	ANY_TYPE-MB	ANY_TYPE-BB
DEFINE_OPCODE	BCC 	ANY_TYPE-BB
DEFINE_OPCODE	BCS 	ANY_TYPE-BB
DEFINE_OPCODE	BEQL 	ANY_TYPE-BB
DEFINE_OPCODE	BEQLU 	ANY_TYPE-BB
DEFINE_OPCODE	BGEQ 	ANY_TYPE-BB
DEFINE_OPCODE	BGEQU 	ANY_TYPE-BB
DEFINE_OPCODE	BGTR 	ANY_TYPE-BB
DEFINE_OPCODE	BGTRU 	ANY_TYPE-BB
DEFINE_OPCODE	BICB	(BYTE,MASK,CONSTANT)-RB		BYTE-MB
DEFINE_OPCODE	BICB2	(BYTE,MASK,CONSTANT)-RB		BYTE-MB
DEFINE_OPCODE	BICB3	(BYTE,MASK,CONSTANT)-RB		BYTE-RB		BYTE-WB
DEFINE_OPCODE	BICL	(LONG,MASK,CONSTANT)-RL		LONG-ML
DEFINE_OPCODE	BICL2	(LONG,MASK,CONSTANT)-RL		LONG-ML
DEFINE_OPCODE	BICL3	(LONG,MASK,CONSTANT)-RL		LONG-RL		LONG-WL
DEFINE_OPCODE	BICPSW	(WORD,MASK,CONSTANT)-RW
DEFINE_OPCODE	BICW	(WORD,MASK,CONSTANT)-RW		WORD-MW
DEFINE_OPCODE	BICW2	(WORD,MASK,CONSTANT)-RW		WORD-MW
DEFINE_OPCODE	BICW3	(WORD,MASK,CONSTANT)-RW		WORD-RW		WORD-WW
DEFINE_OPCODE	BISB	(BYTE,MASK,CONSTANT)-RB		BYTE-MB
DEFINE_OPCODE	BISB2	(BYTE,MASK,CONSTANT)-RB		BYTE-MB
DEFINE_OPCODE	BISB3	(BYTE,MASK,CONSTANT)-RB		BYTE-RB		BYTE-WB
DEFINE_OPCODE	BISL	(LONG,MASK,CONSTANT)-RL		LONG-ML
DEFINE_OPCODE	BISL2	(LONG,MASK,CONSTANT)-RL		LONG-ML
DEFINE_OPCODE	BISL3	(LONG,MASK,CONSTANT)-RL		LONG-RL		LONG-WL
DEFINE_OPCODE	BISPSW	(WORD,MASK,CONSTANT)-RW
DEFINE_OPCODE	BISW	(WORD,MASK,CONSTANT)-RW		WORD-MW
DEFINE_OPCODE	BISW2	(WORD,MASK,CONSTANT)-RW		WORD-MW
DEFINE_OPCODE	BISW3	(WORD,MASK,CONSTANT)-RW		WORD-RW		WORD-WW
DEFINE_OPCODE	BITB	(BYTE,MASK,CONSTANT)-RB		(BYTE,TEXT)-RB
DEFINE_OPCODE	BITL	(LONG,MASK,CONSTANT)-RL		LONG-RL
DEFINE_OPCODE	BITW	(WORD,MASK,CONSTANT)-RW		WORD-RW
DEFINE_OPCODE	BLBC	(BYTE,WORD,LONG)-RL 		ANY_TYPE-BB
DEFINE_OPCODE	BLBS	(BYTE,WORD,LONG)-RL    		ANY_TYPE-BB
DEFINE_OPCODE	BLEQ	ANY_TYPE-BB
DEFINE_OPCODE	BLEQU	ANY_TYPE-BB
DEFINE_OPCODE	BLSS	ANY_TYPE-BB
DEFINE_OPCODE	BLSSU	ANY_TYPE-BB
DEFINE_OPCODE	BNEQ	ANY_TYPE-BB
DEFINE_OPCODE	BNEQU	ANY_TYPE-BB
!DEFINE_OPCODE	BPT	ANY_TYPE-BB
DEFINE_OPCODE	BRB	ANY_TYPE-BB
DEFINE_OPCODE	BRW	ANY_TYPE-BW
DEFINE_OPCODE	BSBB	ANY_TYPE-BB
DEFINE_OPCODE	BSBW	ANY_TYPE-BW
DEFINE_OPCODE	BVC	ANY_TYPE-BB
DEFINE_OPCODE	BVS	ANY_TYPE-BB
DEFINE_OPCODE	CALLG	CONSTANT-RL 	ANY_TYPE-BB
DEFINE_OPCODE	CALLS	LONG-RL		ANY_TYPE-BB
DEFINE_OPCODE	CASEB	BYTE-RB		BYTE-RB		BYTE-RB
DEFINE_OPCODE	CASEL	LONG-RL		LONG-RL		LONG-RL
DEFINE_OPCODE	CASEW	WORD-RW		WORD-RW		WORD-RW
DEFINE_OPCODE	CHME	(WORD,CONSTANT)-RW
DEFINE_OPCODE	CHMK	(WORD,CONSTANT)-RW
DEFINE_OPCODE	CHMS	(WORD,CONSTANT)-RW
DEFINE_OPCODE	CHMU	(WORD,CONSTANT)-RW
DEFINE_OPCODE	CLRB	(BYTE,TEXT)-WB
!DEFINE_OPCODE	CLRD	DFLOAT-WD
!DEFINE_OPCODE	CLRF	FLOAT-WF
!DEFINE_OPCODE	CLRG	GFLOAT-WG
!DEFINE_OPCODE	CLRH	HFLOAT-WH
DEFINE_OPCODE	CLRL	(LONG,ADDR,PTR_L)-WL
DEFINE_OPCODE	CLRO	OCTA-WO
DEFINE_OPCODE	CLRQ	(QUAD,PTR_Q)-WQ
DEFINE_OPCODE	CLRW	WORD-WW
DEFINE_OPCODE	CMPB	(BYTE,TEXT)-RB	(BYTE,TEXT)-RB
DEFINE_OPCODE	CMPC	WORD-RW		ANY_TYPE-RB	ANY_TYPE-RB
DEFINE_OPCODE	CMPC3	WORD-RW		ANY_TYPE-RB	ANY_TYPE-RB
DEFINE_OPCODE	CMPC5	WORD-RW		ANY_TYPE-RB	BYTE-RB		WORD-RW		ANY_TYPE-RB
!DEFINE_OPCODE	CMPD	DFLOAT-RD	DFLOAT-RD
!DEFINE_OPCODE	CMPF	FLOAT-RF	FLOAT-RF
!DEFINE_OPCODE	CMPG	GFLOAT-RG	GFLOAT-RG
!DEFINE_OPCODE	CMPH	HFLOAT-RH	HFLOAT-RH
DEFINE_OPCODE	CMPL	(LONG,ADDR,PTR_L)-RL	(LONG,ADDR,PTR_L)-RL
DEFINE_OPCODE	CMPP	WORD-RW		PACKED-RB	PACKED-RB	
DEFINE_OPCODE	CMPP3	WORD-RW		PACKED-RB	PACKED-RB	
DEFINE_OPCODE	CMPP4	WORD-RW		PACKED-RB	WORD-RW		PACKED-RB	
DEFINE_OPCODE	CMPV	VIELD-RL	SIZE-RB		ANY_TYPE-RB	LONG-RL
DEFINE_OPCODE	CMPW	WORD-RW		WORD-RW
DEFINE_OPCODE	CMPZV	VIELD-RL	SIZE-RB		ANY_TYPE-RB	LONG-RL
DEFINE_OPCODE	CRC	ANY_TYPE-RB	LONG-RL		WORD-RW		ANY_TYPE-RB
!DEFINE_OPCODE	CVTBD	BYTE-RB		DFLOAT-WD
!DEFINE_OPCODE	CVTBF	BYTE-RB		FLOAT-WF
!DEFINE_OPCODE	CVTBG	BYTE-RB		GFLOAT-WG
!DEFINE_OPCODE	CVTBH	BYTE-RB		HFLOAT-WH
DEFINE_OPCODE	CVTBL	BYTE-RB		LONG-WL
DEFINE_OPCODE	CVTBW	BYTE-RB		WORD-WW
!DEFINE_OPCODE	CVTDB	DFLOAT-RD	BYTE-WB
!DEFINE_OPCODE	CVTDF	DFLOAT-RD	FLOAT-WF
!DEFINE_OPCODE	CVTDH	DFLOAT-RD	HFLOAT-WH
!DEFINE_OPCODE	CVTDL	DFLOAT-RD	LONG-WL
!DEFINE_OPCODE	CVTDW	DFLOAT-RD	WORD-WW
!DEFINE_OPCODE	CVTFB	FLOAT-RF	BYTE-WB
!DEFINE_OPCODE	CVTFD	FLOAT-RF	DFLOAT-WD
!DEFINE_OPCODE	CVTFG	FLOAT-RF	GFLOAT-WG
!DEFINE_OPCODE	CVTFH	FLOAT-RF	HFLOAT-WH
!DEFINE_OPCODE	CVTFL	FLOAT-RF	LONG-WL
!DEFINE_OPCODE	CVTFW	FLOAT-RF	WORD-WW
!DEFINE_OPCODE	CVTGB	GFLOAT-RG	BYTE-WB
!DEFINE_OPCODE	CVTGF	GFLOAT-RG	FLOAT-WF
!DEFINE_OPCODE	CVTGH	GFLOAT-RG	HFLOAT-WH
!DEFINE_OPCODE	CVTGL	GFLOAT-RG	LONG-WL
!DEFINE_OPCODE	CVTGW	GFLOAT-RG	WORD-WW
!DEFINE_OPCODE	CVTHB	HFLOAT-RG	BYTE-WB
!DEFINE_OPCODE	CVTHD	HFLOAT-RG	DFLOAT-WD
!DEFINE_OPCODE	CVTHF	HFLOAT-RG	FLOAT-WF
!DEFINE_OPCODE	CVTHG	HFLOAT-RG	GFLOAT-WG
!DEFINE_OPCODE	CVTHL	HFLOAT-RG	LONG-WL
!DEFINE_OPCODE	CVTHW	HFLOAT-RG	WORD-WW
DEFINE_OPCODE	CVTLB	LONG-RL		BYTE-WB
!DEFINE_OPCODE	CVTLD	LONG-RL		DFLOAT-WD
!DEFINE_OPCODE	CVTLF	LONG-RL		FLOAT-WF
!DEFINE_OPCODE	CVTLG	LONG-RL		GFLOAT-WG
!DEFINE_OPCODE	CVTLH	LONG-RL		HFLOAT-WH
DEFINE_OPCODE	CVTLP	LONG-RL		WORD-RW		PACKED-WB	
DEFINE_OPCODE	CVTLW	LONG-RL		WORD-WW
DEFINE_OPCODE	CVTPL	WORD-RW		PACKED-RB	LONG-WL
DEFINE_OPCODE	CVTPS	WORD-RW		PACKED-RB	WORD-RW		ANY_TYPE-WB
DEFINE_OPCODE	CVTPT	WORD-RW		PACKED-RB	ANY_TYPE-RB	WORD-RW		ANY_TYPE-WB
!DEFINE_OPCODE	CVTRDL	DFLOAT-RD	LONG-WL
!DEFINE_OPCODE	CVTRFL	FLOAT-RF	LONG-WL
!DEFINE_OPCODE	CVTRGL	GFLOAT-RG	LONG-WL
!DEFINE_OPCODE	CVTRHL	HFLOAT-RH	LONG-WL
DEFINE_OPCODE	CVTSP	WORD-RW		ANY_TYPE-RB	WORD-RW		PACKED-WB	
DEFINE_OPCODE	CVTTP	WORD-RW		ANY_TYPE-RB	ANY_TYPE-RB	WORD-RW		PACKED-WB	
DEFINE_OPCODE	CVTWB	WORD-RW		BYTE-WB
!DEFINE_OPCODE	CVTWD	WORD-RW		DFLOAT-WD
!DEFINE_OPCODE	CVTWF	WORD-RW		FLOAT-WF
!DEFINE_OPCODE	CVTWG	WORD-RW		GFLOAT-WG
!DEFINE_OPCODE	CVTWH	WORD-RW		HFLOAT-WH
DEFINE_OPCODE	CVTWL	WORD-RW		LONG-WL
DEFINE_OPCODE	DECB	BYTE-MB
DEFINE_OPCODE	DECL	LONG-ML
DEFINE_OPCODE	DECW	WORD-MW
DEFINE_OPCODE	DIVB	BYTE-RB		BYTE-MB
DEFINE_OPCODE	DIVB2	BYTE-RB		BYTE-MB
DEFINE_OPCODE	DIVB3	BYTE-RB		BYTE-RB		BYTE-WB
!DEFINE_OPCODE	DIVD	DFLOAT-RD	DFLOAT-MD
!DEFINE_OPCODE	DIVD2	DFLOAT-RD	DFLOAT-MD
!DEFINE_OPCODE	DIVD3	DFLOAT-RD	DFLOAT-RD	DFLOAT-WD
!DEFINE_OPCODE	DIVF	FLOAT-RF	FLOAT-MF
!DEFINE_OPCODE	DIVF2	FLOAT-RF	FLOAT-MF
!DEFINE_OPCODE	DIVF3	FLOAT-RF	FLOAT-RF	FLOAT-WF
!DEFINE_OPCODE	DIVG	GFLOAT-RG	GFLOAT-MG
!DEFINE_OPCODE	DIVG2	GFLOAT-RG	GFLOAT-MG
!DEFINE_OPCODE	DIVG3	GFLOAT-RG	GFLOAT-RG	GFLOAT-WG
!DEFINE_OPCODE	DIVH	HFLOAT-RH	HFLOAT-MH
!DEFINE_OPCODE	DIVH2	HFLOAT-RH	HFLOAT-MH
!DEFINE_OPCODE	DIVH3	HFLOAT-RH	HFLOAT-RH	HFLOAT-WH
DEFINE_OPCODE	DIVL	LONG-RL		LONG-ML
DEFINE_OPCODE	DIVL2	LONG-RL		LONG-ML
DEFINE_OPCODE	DIVL3	LONG-RL		LONG-RL		LONG-WL
DEFINE_OPCODE	DIVP	WORD-RW		PACKED-RB	WORD-RW		PACKED-RB	WORD-RW		PACKED-WB	
DEFINE_OPCODE	DIVW	WORD-RW		WORD-MW
DEFINE_OPCODE	DIVW2	WORD-RW		WORD-MW
DEFINE_OPCODE	DIVW3	WORD-RW		WORD-RW		WORD-WW
DEFINE_OPCODE	EDITPC	WORD-RW		ANY_TYPE-RB	ANY_TYPE-RB	ANY_TYPE-WB
DEFINE_OPCODE	EDIV	LONG-RL		QUAD-RQ		LONG-WL		LONG-WL
!DEFINE_OPCODE	EMODD	DFLOAT-RD	BYTE-RB		DFLOAT-RD	LONG-WL		DFLOAT-WD
!DEFINE_OPCODE	EMODF	FLOAT-RF	BYTE-RB		FLOAT-RF	LONG-WL		FLOAT-WF
!DEFINE_OPCODE	EMODG	GFLOAT-RG	WORD-RW		GFLOAT-RG	LONG-WL		GFLOAT-WG
!DEFINE_OPCODE	EMODH	HFLOAT-RH	WORD-RW		HFLOAT-RH	LONG-WL		HFLOAT-WH
DEFINE_OPCODE	EMUL	LONG-RL		LONG-RL		LONG-RL		QUAD-WQ
DEFINE_OPCODE	EXTV	VIELD-RL	SIZE-RB		ANY_TYPE-RB	LONG-WL
DEFINE_OPCODE	EXTZV	VIELD-RL	SIZE-RB		ANY_TYPE-RB	LONG-WL
DEFINE_OPCODE	FFC	VIELD-RL	SIZE-RB		ANY_TYPE-RB	LONG-WL
DEFINE_OPCODE	FFS	VIELD-RL	SIZE-RB		ANY_TYPE-RB	LONG-WL
!DEFINE_OPCODE	HALT
DEFINE_OPCODE	INCB	BYTE-WB
DEFINE_OPCODE	INCL	LONG-WL
DEFINE_OPCODE	INCW	WORD-WW
DEFINE_OPCODE	INDEX	LONG-RL		LONG-RL		LONG-RL		LONG-RL		LONG-RL		LONG-WL
DEFINE_OPCODE	INSQHI	(QUAD,LONG)-WB	(QUAD,LONG)-WB
DEFINE_OPCODE	INSQTI	(QUAD,LONG)-WB	(QUAD,LONG)-WB
DEFINE_OPCODE	INSQUE	(QUAD,LONG)-WB	(QUAD,LONG)-WB
DEFINE_OPCODE	INSV	ANY_TYPE-RL	VIELD-RL	SIZE-RB		ANY_TYPE-WB
DEFINE_OPCODE	JMP	ANY_TYPE-BB
DEFINE_OPCODE	JSB	ANY_TYPE-BB
!DEFINE_OPCODE	LDPCTX	
DEFINE_OPCODE	LOCC	BYTE-RB		WORD-RW		ANY_TYPE-RB
DEFINE_OPCODE	MATCHC	WORD-RW		ANY_TYPE-RB	WORD-RW		ANY_TYPE-RB
DEFINE_OPCODE	MCOMB	BYTE-RB		BYTE-WB
DEFINE_OPCODE	MCOML	LONG-RL		LONG-WL
DEFINE_OPCODE	MCOMW	WORD-RW		WORD-WW
DEFINE_OPCODE	MFPR	CONSTANT-RL	(CONSTANT,LONG)-WL
DEFINE_OPCODE	MNEGB	BYTE-RB		BYTE-WB
!DEFINE_OPCODE	MNEGD	DFLOAT-RD	DFLOAT-WD
!DEFINE_OPCODE	MNEGF	FLOAT-RF	FLOAT-WF
!DEFINE_OPCODE	MNEGG	GFLOAT-RG	GFLOAT-WG
!DEFINE_OPCODE	MNEGH	HFLOAT-RH	HFLOAT-WH
DEFINE_OPCODE	MNEGL	LONG-RL		LONG-WL
DEFINE_OPCODE	MNEGW	WORD-RW		WORD-WW
DEFINE_OPCODE	MOVAB	ANY_TYPE-RB 	(LONG,ADDR,PTR_L)-WL
!DEFINE_OPCODE	MOVAD	DFLOAT-RD	LONG-WL
!DEFINE_OPCODE	MOVAF	FLOAT-RF	LONG-WL
!DEFINE_OPCODE	MOVAG	GFLOAT-RG	LONG-WL
!DEFINE_OPCODE	MOVAH	HFLOAT-RH	LONG-WL
DEFINE_OPCODE	MOVAL	ANY_TYPE-RL 	(LONG,ADDR,PTR_L)-WL
DEFINE_OPCODE	MOVAO	ANY_TYPE-RO	(LONG,ADDR,PTR_L)-WL
DEFINE_OPCODE	MOVAQ	ANY_TYPE-RQ 	(LONG,ADDR,PTR_L)-WL
DEFINE_OPCODE	MOVAW	ANY_TYPE-RW 	(LONG,ADDR,PTR_L)-WL
DEFINE_OPCODE	MOVB	(BYTE,TEXT)-RB	(BYTE,TEXT)-WB
DEFINE_OPCODE	MOVC	WORD-RW		ANY_TYPE-RB	ANY_TYPE-WB
DEFINE_OPCODE	MOVC3	WORD-RW		ANY_TYPE-RB	ANY_TYPE-WB
DEFINE_OPCODE	MOVC5	WORD-RW		ANY_TYPE-RB	BYTE-RB		WORD-RW		ANY_TYPE-WB
!DEFINE_OPCODE	MOVD	DFLOAT-RD	DFLOAT-WD
!DEFINE_OPCODE	MOVF	FLOAT-RF	FLOAT-WF
!DEFINE_OPCODE	MOVG	GFLOAT-RG	GFLOAT-WG
!DEFINE_OPCODE	MOVH	HFLOAT-RH	HFLOAT-WH
DEFINE_OPCODE	MOVL	(LONG,ADDR,PTR_L)-RL	(LONG,ADDR,PTR_L)-WL
DEFINE_OPCODE	MOVO	OCTA-RO		OCTA-WO
DEFINE_OPCODE	MOVP	WORD-RW		PACKED-RB	PACKED-WB	
DEFINE_OPCODE	MOVPSL	LONG-WL
DEFINE_OPCODE	MOVQ	(QUAD,PTR_Q)-RQ	(QUAD,PTR_Q)-WQ
DEFINE_OPCODE	MOVTC	WORD-RW		ANY_TYPE-RB	BYTE-RB		ANY_TYPE-RB	WORD-RW		ANY_TYPE-WB
DEFINE_OPCODE	MOVTUC	WORD-RW		ANY_TYPE-RB	BYTE-RB		ANY_TYPE-RB	WORD-RW		ANY_TYPE-WB
DEFINE_OPCODE	MOVW	WORD-RW		WORD-WW
DEFINE_OPCODE	MOVZBL	(BYTE,TEXT)-RB	LONG-WL
DEFINE_OPCODE	MOVZBW	(BYTE,TEXT)-RB	WORD-WW
DEFINE_OPCODE	MOVZWL	WORD-RW		LONG-WL
DEFINE_OPCODE	MTPR	(CONSTANT,LONG,MASK)-RL		CONSTANT-RL
DEFINE_OPCODE	MULB	BYTE-RB		BYTE-MB
DEFINE_OPCODE	MULB2	BYTE-RB		BYTE-MB
DEFINE_OPCODE	MULB3	BYTE-RB		BYTE-RB		BYTE-WB
!DEFINE_OPCODE	MULD	DFLOAT-RD	DFLOAT-MD
!DEFINE_OPCODE	MULD2	DFLOAT-RD	DFLOAT-MD
!DEFINE_OPCODE	MULD3	DFLOAT-RD	DFLOAT-RD	DFLOAT-WD
!DEFINE_OPCODE	MULF	FLOAT-RF	FLOAT-MF
!DEFINE_OPCODE	MULF2	FLOAT-RF	FLOAT-MF
!DEFINE_OPCODE	MULF3	FLOAT-RF	FLOAT-RF	FLOAT-WF
!DEFINE_OPCODE	MULG	GFLOAT-RG	GFLOAT-MG
!DEFINE_OPCODE	MULG2	GFLOAT-RG	GFLOAT-MG
!DEFINE_OPCODE	MULG3	GFLOAT-RG	GFLOAT-RG	GFLOAT-WG
!DEFINE_OPCODE	MULH	HFLOAT-RH	HFLOAT-MH
!DEFINE_OPCODE	MULH2	HFLOAT-RH	HFLOAT-MH
!DEFINE_OPCODE	MULH3	HFLOAT-RH	HFLOAT-RH	HFLOAT-WH
DEFINE_OPCODE	MULL	LONG-RL		LONG-ML
DEFINE_OPCODE	MULL2	LONG-RL		LONG-ML
DEFINE_OPCODE	MULL3	LONG-RL		LONG-RL		LONG-WL
DEFINE_OPCODE	MULP	WORD-RW		PACKED-RB	WORD-RW		PACKED-RB	WORD-RW		PACKED-WB	
DEFINE_OPCODE	MULW	WORD-RW		WORD-MW
DEFINE_OPCODE	MULW2	WORD-RW		WORD-MW
DEFINE_OPCODE	MULW3	WORD-RW		WORD-RW		WORD-WW
!DEFINE_OPCODE	NOP
!DEFINE_OPCODE	POLYD	DFLOAT-RD	WORD-RW		ANY_TYPE-RB
!DEFINE_OPCODE	POLYF	FLOAT-RF	WORD-RW		ANY_TYPE-RB
!DEFINE_OPCODE	POLYG	GFLOAT-RG	WORD-RW		ANY_TYPE-RB
!DEFINE_OPCODE	POLYH	HFLOAT-RH	WORD-RW		ANY_TYPE-RB
DEFINE_OPCODE	POPL	LONG-WL
DEFINE_OPCODE	POPR	REG_MASK-RW
DEFINE_OPCODE	PROBER	BYTE-RB		(WORD,SIZE,CONSTANT)-RW		ANY_TYPE-RB
DEFINE_OPCODE	PROBEW	BYTE-RB		(WORD,SIZE,CONSTANT)-RW		ANY_TYPE-RB 
DEFINE_OPCODE	PUSHAB	ANY_TYPE-RB
!DEFINE_OPCODE	PUSHAD	DFLOAT-RD
!DEFINE_OPCODE	PUSHAF	FLOAT-RF
!DEFINE_OPCODE	PUSHAG	GFLOAT-RG
!DEFINE_OPCODE	PUSHAH	HFLOAT-RH
DEFINE_OPCODE	PUSHAL	ANY_TYPE-RL
DEFINE_OPCODE	PUSHAO	ANY_TYPE-RO
DEFINE_OPCODE	PUSHAQ	ANY_TYPE-RQ
DEFINE_OPCODE	PUSHAW	ANY_TYPE-RW
DEFINE_OPCODE	PUSHL	(LONG,ADDR,PTR_L)-RL
DEFINE_OPCODE	PUSHR	REG_MASK-RW
!DEFINE_OPCODE	REI
DEFINE_OPCODE	REMQHI	(QUAD,LONG)-WB	LONG-WL  
DEFINE_OPCODE	REMQTI	(QUAD,LONG)-WB	LONG-WL
DEFINE_OPCODE	REMQUE	(QUAD,LONG)-WB	LONG-WL
!DEFINE_OPCODE	RET
DEFINE_OPCODE	ROTL	(SIZE,VIELD)-RB	LONG-RL		LONG-WL
!DEFINE_OPCODE	RSB
DEFINE_OPCODE	SBWC	LONG-RL		LONG-ML
DEFINE_OPCODE	SCANC	WORD-RW		ANY_TYPE-RB	ANY_TYPE-RB	BYTE-RB
DEFINE_OPCODE	SKPC	BYTE-RB		WORD-RW		ANY_TYPE-RB
DEFINE_OPCODE	SOBGEQ	LONG-ML		ANY_TYPE-BB
DEFINE_OPCODE	SOBGTR	LONG-ML		ANY_TYPE-BB
DEFINE_OPCODE	SPANC	WORD-RW		ANY_TYPE-RB	ANY_TYPE-RB	BYTE-RB
DEFINE_OPCODE	SUBB	BYTE-RB		BYTE-MB
DEFINE_OPCODE	SUBB2	BYTE-RB		BYTE-MB
DEFINE_OPCODE	SUBB3	BYTE-RB		BYTE-RB		BYTE-WB
!DEFINE_OPCODE	SUBD	DFLOAT-RD	DFLOAT-MD
!DEFINE_OPCODE	SUBD2	DFLOAT-RD	DFLOAT-MD
!DEFINE_OPCODE	SUBD3	DFLOAT-RD	DFLOAT-RD	DFLOAT-WD
!DEFINE_OPCODE	SUBF	FLOAT-RF	FLOAT-MF
!DEFINE_OPCODE	SUBF2	FLOAT-RF	FLOAT-MF
!DEFINE_OPCODE	SUBF3	FLOAT-RF	FLOAT-RF	FLOAT-WF
!DEFINE_OPCODE	SUBG	GFLOAT-RG	GFLOAT-MG
!DEFINE_OPCODE	SUBG2	GFLOAT-RG	GFLOAT-MG
!DEFINE_OPCODE	SUBG3	GFLOAT-RG	GFLOAT-RG	GFLOAT-WG
!DEFINE_OPCODE	SUBH	HFLOAT-RH	HFLOAT-MH
!DEFINE_OPCODE	SUBH2	HFLOAT-RH	HFLOAT-MH
!DEFINE_OPCODE	SUBH3	HFLOAT-RH	HFLOAT-RH	HFLOAT-WH
DEFINE_OPCODE	SUBL	LONG-RL		LONG-ML
DEFINE_OPCODE	SUBL2	LONG-RL		LONG-ML
DEFINE_OPCODE	SUBL3	LONG-RL		LONG-RL		LONG-WL
DEFINE_OPCODE	SUBP	WORD-RW		PACKED-RB	WORD-RW		PACKED-MB	
DEFINE_OPCODE	SUBP4	WORD-RW		PACKED-RB	WORD-RW		PACKED-MB	
DEFINE_OPCODE	SUBP6	WORD-RW		PACKED-RB	WORD-RW		PACKED-RB	WORD-RW		PACKED-WB	
DEFINE_OPCODE	SUBW	WORD-RW		WORD-MW
DEFINE_OPCODE	SUBW2	WORD-RW		WORD-MW
DEFINE_OPCODE	SUBW3	WORD-RW		WORD-RW		WORD-WW
!DEFINE_OPCODE	SVPCTX
DEFINE_OPCODE	TSTB	(BYTE,TEXT)-RB
!DEFINE_OPCODE	TSTD	DFLOAT-RD
!DEFINE_OPCODE	TSTF	FLOAT-RF
!DEFINE_OPCODE	TSTG	GFLOAT-RG
!DEFINE_OPCODE	TSTH	HFLOAT-RH
DEFINE_OPCODE	TSTL	(LONG,ADDR,PTR_L)-RL
DEFINE_OPCODE	TSTW	WORD-RW
!DEFINE_OPCODE	XFC
DEFINE_OPCODE	XORB	(BYTE,MASK,CONSTANT)-RB		BYTE-MB
DEFINE_OPCODE	XORB2	(BYTE,MASK,CONSTANT)-RB		BYTE-MB
DEFINE_OPCODE	XORB3	(BYTE,MASK,CONSTANT)-RB		BYTE-RB		BYTE-WB
DEFINE_OPCODE	XORL	(LONG,MASK,CONSTANT)-RL		LONG-ML
DEFINE_OPCODE	XORL2	(LONG,MASK,CONSTANT)-RL		LONG-ML
DEFINE_OPCODE	XORL3	(LONG,MASK,CONSTANT)-RL		LONG-RL		LONG-WL
DEFINE_OPCODE	XORW	(WORD,MASK,CONSTANT)-RW		WORD-MW
DEFINE_OPCODE	XORW2	(WORD,MASK,CONSTANT)-RW		WORD-MW
DEFINE_OPCODE	XORW3	(WORD,MASK,CONSTANT)-RW		WORD-RW		WORD-WW
!
DEFINE_OPCODE 	EVAX_LDAQ	QUAD-WQ		(QUAD,PTR_Q)-RQ
DEFINE_OPCODE 	EVAX_LDQ	QUAD-WQ		(QUAD,PTR_Q)-RQ
DEFINE_OPCODE 	EVAX_LDQL	QUAD-WQ		(QUAD,PTR_Q)-RQ
DEFINE_OPCODE 	EVAX_LDQU	QUAD-WQ		(QUAD,PTR_Q)-RQ
DEFINE_OPCODE	EVAX_STQ	QUAD-RQ		(QUAD,PTR_Q)-WQ
DEFINE_OPCODE	EVAX_STQC	QUAD-RQ		(QUAD,PTR_Q)-WQ
DEFINE_OPCODE	EVAX_STQU	QUAD-RQ		(QUAD,PTR_Q)-WQ
DEFINE_OPCODE	EVAX_ADDQ	QUAD-RQ		(CONSTANT,QUAD)-RQ	QUAD-WQ
DEFINE_OPCODE	EVAX_SUBQ	QUAD-RQ		(CONSTANT,QUAD)-RQ	QUAD-WQ
DEFINE_OPCODE	EVAX_MULQ	QUAD-RQ		(CONSTANT,QUAD)-RQ	QUAD-WQ
DEFINE_OPCODE	EVAX_UMULH	QUAD-RQ		(CONSTANT,QUAD)-RQ	QUAD-WQ
DEFINE_OPCODE	EVAX_AND	QUAD-RQ		(CONSTANT,MASK,QUAD)-RQ		QUAD-WQ
DEFINE_OPCODE	EVAX_OR		QUAD-RQ		(CONSTANT,MASK,QUAD)-RQ		QUAD-WQ
DEFINE_OPCODE	EVAX_XOR	QUAD-RQ		(CONSTANT,MASK,QUAD)-RQ		QUAD-WQ
DEFINE_OPCODE	EVAX_BIC	QUAD-RQ		(CONSTANT,MASK,QUAD)-RQ		QUAD-WQ
DEFINE_OPCODE	EVAX_ORNOT	QUAD-RQ		(CONSTANT,MASK,QUAD)-RQ		QUAD-WQ
DEFINE_OPCODE	EVAX_EQV	QUAD-RQ		(CONSTANT,MASK,QUAD)-RQ		QUAD-WQ
DEFINE_OPCODE	EVAX_SLL	QUAD-RQ		(VIELD,SIZE,QUAD)-RQ	QUAD-WQ
DEFINE_OPCODE	EVAX_SRL	QUAD-RQ		(VIELD,SIZE,QUAD)-RQ	QUAD-WQ
DEFINE_OPCODE	EVAX_SRA	QUAD-RQ		(VIELD,SIZE,QUAD)-RQ	QUAD-WQ
DEFINE_OPCODE	EVAX_EXTBL	QUAD-RQ		CONSTANT-RQ		QUAD-WQ
DEFINE_OPCODE	EVAX_EXTWL	QUAD-RQ		CONSTANT-RQ		QUAD-WQ
DEFINE_OPCODE	EVAX_EXTLL	QUAD-RQ		CONSTANT-RQ		QUAD-WQ
DEFINE_OPCODE	EVAX_EXTQL	QUAD-RQ		CONSTANT-RQ    		QUAD-WQ
DEFINE_OPCODE	EVAX_EXTBH	QUAD-RQ		CONSTANT-RQ  		QUAD-WQ
DEFINE_OPCODE	EVAX_EXTWH	QUAD-RQ		CONSTANT-RQ  		QUAD-WQ
DEFINE_OPCODE	EVAX_EXTLH	QUAD-RQ		CONSTANT-RQ  		QUAD-WQ
DEFINE_OPCODE	EVAX_EXTQH	QUAD-RQ		CONSTANT-RQ  		QUAD-WQ
DEFINE_OPCODE	EVAX_INSBL	QUAD-RQ		CONSTANT-RQ  		QUAD-WQ
DEFINE_OPCODE	EVAX_INSWL	QUAD-RQ		CONSTANT-RQ  		QUAD-WQ
DEFINE_OPCODE	EVAX_INSLL	QUAD-RQ		CONSTANT-RQ  		QUAD-WQ
DEFINE_OPCODE	EVAX_INSQL	QUAD-RQ		CONSTANT-RQ  		QUAD-WQ
DEFINE_OPCODE	EVAX_INSBH	QUAD-RQ		CONSTANT-RQ  		QUAD-WQ
DEFINE_OPCODE	EVAX_INSWH	QUAD-RQ		CONSTANT-RQ  		QUAD-WQ   
DEFINE_OPCODE	EVAX_INSLH	QUAD-RQ		CONSTANT-RQ  		QUAD-WQ
DEFINE_OPCODE	EVAX_INSQH	QUAD-RQ		CONSTANT-RQ  		QUAD-WQ
DEFINE_OPCODE	EVAX_CMPEQ	QUAD-RQ		(CONSTANT,QUAD)-RQ	QUAD-WQ
DEFINE_OPCODE	EVAX_CMPLT	QUAD-RQ		(CONSTANT,QUAD)-RQ	QUAD-WQ
DEFINE_OPCODE	EVAX_CMPLE	QUAD-RQ		(CONSTANT,QUAD)-RQ	QUAD-WQ
DEFINE_OPCODE	EVAX_CMPULT	QUAD-RQ		(CONSTANT,QUAD)-RQ	QUAD-WQ
DEFINE_OPCODE	EVAX_CMPULE	QUAD-RQ		(CONSTANT,QUAD)-RQ	QUAD-WQ
DEFINE_OPCODE	EVAX_BEQ	QUAD-RQ		ANY_TYPE
DEFINE_OPCODE	EVAX_BNE	QUAD-RQ		ANY_TYPE


! ---
!
! Define some facility specific macros to check. You specify the macro name and the type for each of it's arguments.
!	Multiple data types acceptable for a given argument can be surrounded by parens. Macro name can only contain
!	alpha-numerics, $ or _ characters.
!
! SYNTAX: 
!
!	DEFINE_OPCODE	macro_name 	[argument1_type,argument2_type,...] where 
!						argumentN_type = data_type_name or
!								 ( data_type_name1,data_type_name2,... )
!
DEFINE_OPCODE	$REMQHI  	(QUAD,LONG)-WB	  LONG-WL

! ---
! DEFINE_EXCEPTION
! Define some facility specific field names to exclude from type-checking. These field names don't obey conventions and generate
! excessive errors. You merely specify a character string(SYMBOL_NAME) and no argument containing this string ever reports an error.
!
! SYNTAX:
!
!	DEFINE_EXCEPTION 	[symbol_name,...]
!
! EXAMPLE: 
!	DEFINE_EXCEPTION	CTL$GQ_RMS_RUREC_LKSB

! ---
! DEFINE_TYPE_MODE
! Define the addressing mode(s) that MUST or MUST NOT be used for specific data types. Addressing mode names are builtin and 
! placing an uparrow character before the address mode name means the address mode must not be used with this data type. I will
! add recognition of other addressing modes if there are good uses for them. The following addr_mode_names are defined:
!
!	LITERAL - an argument beginning with the string #,S^#,I^#
!
! SYNTAX:
!
!	DEFINE_TYPE_MODE 	type_name	[arg_mode1,arg_mode2,...] where
!							arg_mode =  addr_mode_name or
!								   ^addr_mode_name
!
DEFINE_TYPE_MODE 	CONSTANT	LITERAL
DEFINE_TYPE_MODE 	MASK 		LITERAL
DEFINE_TYPE_MODE 	SIZE		LITERAL
DEFINE_TYPE_MODE 	VIELD 		LITERAL
DEFINE_TYPE_MODE	ANY_TYPE		^LITERAL
