Google
 

Trailing-Edge - PDP-10 Archives - BB-H580E-SB_1985 - opctab.mac
There are 7 other files named opctab.mac in the archive. Click here to see a list.
; UPD ID= 3396 on 2/16/81 at 2:00 PM by NIXON                           
UNIVERSAL OPCTAB FOR COBOL AND LIBOL - OP CODE TABLE DEFINITION FILE

	SEARCH	COPYRT
	SALL

;COPYRIGHT (C) DIGITAL EQUIPMENT CORPORATION 1977, 1985
;ALL RIGHTS RESERVED.
;
;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
;ONLY  IN  ACCORDANCE  WITH  THE  TERMS  OF  SUCH LICENSE.

;*** NOTA BENE ***
; WHEN EDITING THIS FILE, RECOMPILE AT LEAST THE FOLLOWING MODULES:
;	CMNGEN.MAC
;	COBOLG.MAC
;	COBOLO.MAC
;	PMATCH.MAC
;*****************

;EDIT HISTORY
;NAME	DATE		COMMENTS
;----	----		--------
;DMN	 1-APR-80	[1004] ADD MORE OPCODES FOR ASCII & EBCDIC COLLATING SEQUENCES.
;DMN	 2-OCT-78	[562] FIX SIXBIT 6 CHAR FIG-CON COMPARE
;DAW	28-SEP-78	[561] FIX "GO DEPENDING" - /O PROBLEM
;
;	THIS FILE CONTAINS THE LIST OF ALL OP CODES USED BY THE
; COBOL COMPILER.  EACH OP CODE HAS CERTAIN PROPERTIES, SO
; EACH OP CODE IS DEFINED HERE (IN ONE PLACE) WITH ALL ITS PROPERTIES
; AND A METHOD IS PROVIDED FOR EACH MODULE THAT WISHES TO ACCESS THESE
; PROPERTIES TO EITHER BUILD ITS OWN TABLE, OR SET OF DEFINITIONS,
; OR TO SHARE IT WITH ANOTHER MODULE.  SPECIFICALLY, CMNGEN.MAC
; DEFINES THE INTERNAL CODES USED FOR EACH OP CODE; COBOLG AND COBOLO
; BOTH CONTAIN SEPARATE TABLES WITH DIFFERENT PIECES OF INFORMATION
; ABOUT EACH OP CODE.  ALL THESE SETS OF DEFINITIONS ARE INTER-RELATED,
; SO THIS FILE KEEPS PHASE ERRORS FROM HAPPENING.
;	EACH OP CODE IS FOLLOWED BY A LIST OF PROPERTIES.  TO ADD A NEW
; PROPERTY, ADD IT TO EVERY OP CODE.  THERE IS NO DEFAULTING MECHANISM
; PROVIDED.  EACH BUILDER OF A TABLE NEED ONLY USE THE PROPERTIES FOR
; EACH OP CODE THAT ARE OF INTEREST TO THAT TABLE.
;
;	TO INVOKE THE TABLE, GIVE THE TABLE NAME FOLLOWED BY TWO
; OPTIONAL ARGUMENTS.  THESE ARE THE NAMES FOR THE TWO TABLES
; (FIRST OP CODE TABLE, AND SECOND OPCODE TABLE)
;
;THE ORDER OF THE ARGUMENTS IN THE %OPCT% MACRO ARE:
;A	MNEMONIC NAME FOR LISTING GENERATION
;B	INTERNAL OP CODE VALUE
;C	INTERNAL MNEMONIC NAME FOR ASYFIL GENERATION
;D	ACTUAL OP CODE FOR INSTRUCTION
;E	FLAG FOR LISTING A ZERO AC (1 IF LIST)
;F	FLAG FOR LISTING A ZERO ADDRESS (1 IF LIST)
;G	FLAG FOR LIST RH AS DECIMAL CONSTANT
;H	FLAG FOR LISTING RH AS A NEGATIVE NUMBER
;I	FLAG FOR INDENTING OP-CODE (1 IF INDENT)
;J	IPTAB SKIP BITS FOR INSTRUCTION
;K	OPPARE (OPTIMIZER PATTERN RECOGNIZER) ADDRESS (0 IF NONE)
;
;
;	ALSO CONTAINED IN THIS MODULE ARE THE DEFINITIONS
; OF ALL THE FIELDS USED BY VARIOUS MODULES IN PHASE O TO ACCESS
; TABLES BUILT FROM THIS OPCTAB, AS WELL AS OTHERS.

SUBTTL THE TABLE OF PDP-10 OP-CODES

DEFINE	OPCTAB(T1),<

IFNB <T1>,<
T1:	>

XLIST
%OPCT%(MOVE,	000,	MOV,	200,	1,1,0,0,0,	N.SKIP,	MVEPAT	)
%OPCT%(MOVEI,	001,	MOVEI.,	201,	1,1,1,0,0,	N.SKIP,	MVIPAT	)
%OPCT%(MOVEM,	002,	MOVEM.,	202,	1,1,0,0,0,	N.SKIP,	MVMOPT	)
%OPCT%(MOVM,	003,	MOVM.,	214,	1,1,0,0,0,	N.SKIP,	MVMPAT	)
%OPCT%(MOVMM,	004,	MOVMM.,	216,	1,1,0,0,0,	N.SKIP,	MMMPAT	)
%OPCT%(MOVN,	005,	MOVN.,	210,	1,1,0,0,0,	N.SKIP,	MOVNPT	)
%OPCT%(MOVNI,	006,	MOVNI.,	211,	1,1,1,0,0,	N.SKIP,	LODSTR	)
%OPCT%(MOVNM,	007,	MOVNM.,	212,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(MOVS,	010,	MOVS.,	204,	1,1,0,0,0,	N.SKIP,	0	)

%OPCU%(MOVSI,	011,	HRLZI.,	205,	1,1,0,0,0,	N.SKIP,	LODSTR	)
%OPCT%(MOVSI,	011,	MOVSI.,	205,	1,1,0,0,0,	N.SKIP,	LODSTR)
%OPCT%(ADD,	012,	AD,	270,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(ADDI,	013,	ADDI.,	271,	1,1,1,0,0,	N.SKIP,	0	)
%OPCT%(ADDM,	014,	ADDM.,	272,	1,1,0,0,0,	N.SKIP,	ADMPAT	)
%OPCT%(ADDB,	015,	ADDB.,	273,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(SUB,	016,	SUB.,	274,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(SUBI,	017,	SUBI.,	275,	1,1,1,0,0,	N.SKIP,	SBIPAT	)
%OPCT%(SUBM,	020,	SUBM.,	276,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(MUL,	021,	MUL.,	224,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(MULI,	022,	MULI.,	225,	1,1,1,0,0,	N.SKIP,	0	)
%OPCT%(IMUL,	023,	IMUL.,	220,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(IMULI,	024,	IMULI.,	221,	1,1,1,0,0,	N.SKIP,	IMIPAT	)
%OPCT%(XCT,	025,	XCT.,	256,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(DIV,	026,	DIV.,	234,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(DIVI,	027,	DIVI.,	235,	1,1,1,0,0,	N.SKIP,	0	)
%OPCT%(DIVM,	030,	DIVM.,	236,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(IDIV,	031,	IDIV.,	230,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(IDIVI,	032,	IDIVI.,	231,	1,1,1,0,0,	N.SKIP,	0	)
%OPCT%(IDIVM,	033,	IDIVM.,	232,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(FADR,	034,	FAD.,	144,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(FADRM,	035,	FADM.,	146,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(FSBR,	036,	FSB.,	154,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(FSBRM,	037,	FSBM.,	156,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(FMPR,	040,	FMP.,	164,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(FMPRM,	041,	FMPM.,	166,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(FDVR,	042,	FDV.,	174,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(FDVRM,	043,	FDVM.,	176,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(DPB,	044,	DPB.,	137,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(LDB,	045,	LDB.,	135,	1,1,0,0,0,	N.SKIP,	LODSTR	)	
%OPCT%(IDPB,	046,	IDPB.,	136,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(ILDB,	047,	ILDB.,	134,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(AOS,	050,	AOS.,	350,	0,1,0,0,0,	N.SKIP,	AOSPAT	)
%OPCT%(SOS,	051,	SOS.,	370,	0,1,0,0,0,	N.SKIP,	0	)
%OPCT%(SOSGE,	052,	SOSGE.,	375,	0,1,0,0,0,	C.SKIP,	SGEPAT	)
%OPCT%(SOSLE,	053,	SOSLE.,	373,	0,1,0,0,0,	C.SKIP,	SLEPAT	)

%OPCU%(CAM,	052,	CAM.,	310,	0,1,0,0,0,	N.SKIP,	0	)
%OPCU%(CAI,	053,	CAI.,	300,	0,1,0,0,0,	N.SKIP,	0	)
%OPCT%(CAME,	054,	CAME.,	312,	1,1,0,0,0,	C.SKIP,	CNDSKP	)
%OPCT%(CAIE,	055,	CAIE.,	302,	1,1,1,0,0,	C.SKIP,	CAIXX	)
%OPCT%(CAMG,	056,	CAMG.,	317,	1,1,0,0,0,	C.SKIP,	CNDSKP	)
%OPCT%(CAIG,	057,	CAIG.,	307,	1,1,1,0,0,	C.SKIP,	CAIXX	)
%OPCT%(CAMGE,	060,	CAMGE.,	315,	1,1,0,0,0,	C.SKIP,	CNDSKP	)
%OPCT%(CAIGE,	061,	CAIGE.,	305,	1,1,1,0,0,	C.SKIP,	CAIXX	)
%OPCT%(CAML,	062,	CAML.,	311,	1,1,0,0,0,	C.SKIP,	CNDSKP	)
%OPCT%(CAIL,	063,	CAIL.,	301,	1,1,1,0,0,	C.SKIP,	CAIXX	)
%OPCT%(CAMLE,	064,	CAMLE.,	313,	1,1,0,0,0,	C.SKIP,	CNDSKP	)
%OPCT%(CAILE,	065,	CAILE.,	303,	1,1,1,0,0,	C.SKIP,	CAIXX	)
%OPCT%(CAMN,	066,	CAMN.,	316,	1,1,0,0,0,	C.SKIP,	CNDSKP	)
%OPCT%(CAIN,	067,	CAIN.,	306,	1,1,1,0,0,	C.SKIP,	CAIXX	)

%OPCU%(JUMP,	067,	JUMP.,	320,	0,1,0,0,0,	N.SKIP,	0	)
%OPCT%(JUMPE,	070,	JUMPE.,	322,	1,1,0,0,0,	N.SKIP,	DOTREF	)
%OPCT%(JUMPG,	071,	JUMPG.,	327,	1,1,0,0,0,	N.SKIP,	DOTREF	)
%OPCT%(JUMPGE,	072,	JMPGE.,	325,	1,1,0,0,0,	N.SKIP,	DOTREF	)
%OPCT%(JUMPL,	073,	JUMPL.,	321,	1,1,0,0,0,	N.SKIP,	DOTREF	)
%OPCT%(JUMPLE,	074,	JMPLE.,	323,	1,1,0,0,0,	N.SKIP,	DOTREF	)
%OPCT%(JUMPN,	075,	JUMPN.,	326,	1,1,0,0,0,	N.SKIP,	DOTREF	)
%OPCT%(JRST,	076,	JRST.,	254,	0,1,0,0,0,	N.SKIP,	JRSTXX	)

%OPCU%(SKIP,	076,	SKIP.,	330,	0,1,0,0,0,	N.SKIP,	0	)
%OPCT%(SKIPE,	077,	SKIPE.,	332,	0,1,0,0,0,	C.SKIP,	CNDSKP	)
%OPCT%(SKIPG,	100,	SKIPG.,	337,	0,1,0,0,0,	C.SKIP,	CNDSKP	)
%OPCT%(SKIPGE,	101,	SKPGE.,	335,	0,1,0,0,0,	C.SKIP,	CNDSKP	)
%OPCT%(SKIPL,	102,	SKIPL.,	331,	0,1,0,0,0,	C.SKIP,	SKLPAT	)
%OPCT%(SKIPLE,	103,	SKPLE.,	333,	0,1,0,0,0,	C.SKIP,	CNDSKP	)
%OPCT%(SKIPN,	104,	SKIPN.,	336,	0,1,0,0,0,	C.SKIP,	CNDSKP	)
%OPCT%(SKIPA,	105,	SKIPA.,	334,	0,0,0,0,0,	A.SKIP,	SKPA	)

%OPCT%(TRNE,	106,	TRNE.,	602,	1,1,0,0,0,	C.SKIP,	0	)
%OPCT%(TRNN,	107,	TRNN.,	606,	1,1,0,0,0,	C.SKIP,	0	)
%OPCT%(TLNE,	110,	TLNE.,	603,	1,1,0,0,0,	C.SKIP,	0	)
%OPCT%(TLNN,	111,	TLNN.,	607,	1,1,0,0,0,	C.SKIP,	0	)
%OPCT%(JSA,	112,	JSA.,	266,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(PUSHJ,	113,	PUSHJ.,	260,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(BLT,	114,	BLT.,	251,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(SETZM,	115,	SETZM.,	402,	0,1,0,0,0,	N.SKIP,	0	)
%OPCT%(SETOM,	116,	SETOM.,	476,	0,1,0,0,0,	N.SKIP,	0	)
%OPCT%(TDCA,	117,	TDCA.,	654,	1,1,0,0,0,	A.SKIP,	0	)
%OPCT%(ANDM,	120,	ANDM.,	406,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(IORCAM,	121,	ORCAM.,	456,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(HRLOI,	122,	HRLOI.,	525,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(HRROI,	123,	HRROI.,	561,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(HRRI,	124,	HRRI.,	541,	1,1,0,0,0,	N.SKIP,	HRRIXX	)
%OPCT%(HRRZI,	125,	HRRZI.,	551,	1,1,0,0,0,	N.SKIP,	LODSTR	)
%OPCT%(SETZB,	126,	SETZB.,	403,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(ARG,	127,	ARG.,	320,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(SOJG,	130,	SOJG.,	367,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(EXCH,	131,	EXCH.,	250,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(CALLI,	132,	CALLI.,	047,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(TLZ,	133,	TLZ.,	621,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(TLO,	134,	TLO.,	661,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(SETCAM,	135,	SETCA.,	452,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(SETCMM,	136,	SETCM.,	462,	0,1,0,0,0,	N.SKIP,	0	)
%OPCT%(POPJ,	137,	POPJ.,	263,	1,0,0,0,0,	N.SKIP,	0	)

LIST
>	;END OF OPCTAB MACRO


DEFINE OPCTB2(T2),<

IFNB <T2>,<
T2:	>

XLIST
%OPCT%(DMOVE,	000,	DMOVE.,	120,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(DMOVN,	001,	DMOVN.,	121,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(DMOVEM,	002,	DMOVM.,	124,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(DMOVNM,	003,	DMVNM.,	125,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(DADD,	004,	DADD.,	114,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(DSUB,	005,	DSUB.,	115,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(DMUL,	006,	DMUL.,	116,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(DDIV,	007,	DDIV.,	117,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(ASHC,	010,	ASHC.,	244,	1,1,1,1,0,	N.SKIP,	ASHCPT	)
%OPCT%(HLRZ,	011,	HLRZ.,	554,	1,1,0,0,0,	N.SKIP,	LODSTR	)
%OPCT%(HRLM,	012,	HRLM.,	506,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(HRRZ,	013,	HRRZ.,	550,	1,1,0,0,0,	N.SKIP,	LODSTR	)
%OPCT%(HRRM,	014,	HRRM.,	542,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(HLLZS,	015,	HLLZS.,	513,	0,1,0,0,0,	N.SKIP,	0	)
%OPCT%(HLLOS,	016,	HLLOS.,	523,	0,1,0,0,0,	N.SKIP,	0	)
%OPCT%(HRRZS,	017,	HRRZS.,	553,	0,1,0,0,0,	N.SKIP,	0	)
%OPCT%(HRROS,	020,	HRROS.,	563,	0,1,0,0,0,	N.SKIP,	0	)
%OPCT%(FLTR,	021,	FLTR.,	127,	1,1,0,0,0,	N.SKIP,	FLTPAT	)
%OPCT%(JFCL,	022,	JFCL.,	255,	0,0,0,0,0,	N.SKIP,	0	)
%OPCT%(ASH,	023,	ASH.,	240,	1,1,1,1,0,	N.SKIP,	0	)
%OPCT%(FADRI,	024,	FADRI.,	145,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(FSBRI,	025,	FSBRI.,	155,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(FMPRI,	026,	FMPRI.,	165,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(FDVRI,	027,	FDVRI.,	175,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(PUSH,	030,	PUSH.,	261,	1,1,0,0,0,	N.SKIP,	PSHPAT	)
%OPCT%(POP,	031,	POP.,	262,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(IBP,	032,	IBP.,	133,	0,1,0,0,0,	N.SKIP,	0	)
%OPCT%(ADJBP,	033,	ADJBP.,	133,	1,1,0,0,0,	N.SKIP,	ADJPAT	)
%OPCT%(LSH,	034,	LSH.,	242,	1,1,1,1,0,	N.SKIP,	0	)
%OPCT%(TLZE,	035,	TLZE.,	623,	1,1,0,0,0,	C.SKIP,	0	)
%OPCT%(TLZN,	036,	TLZN.,	627,	1,1,0,0,0,	C.SKIP,	0	)
%OPCT%(TLZA,	037,	TLZA.,	625,	1,1,0,0,0,	C.SKIP,	0	)
%OPCT%(TRZE,	040,	TRZE.,	622,	1,1,0,0,0,	C.SKIP,	0	)
%OPCT%(TRZN,	041,	TRZN.,	626,	1,1,0,0,0,	C.SKIP,	0	)
%OPCT%(TRZA,	042,	TRZA.,	624,	1,1,0,0,0,	A.SKIP,	0	)
%OPCT%(TDNE,	043,	TDNE.,	612,	1,1,0,0,0,	C.SKIP,	0	)
%OPCT%(TDNN,	044,	TDNN.,	616,	1,1,0,0,0,	C.SKIP,	0	)
%OPCT%(TDNA,	045,	TDNA.,	614,	1,1,0,0,0,	A.SKIP,	0	)
%OPCT%(TDZE,	046,	TDZE.,	632,	1,1,0,0,0,	C.SKIP,	0	)
%OPCT%(TDZN,	047,	TDZN.,	636,	1,1,0,0,0,	C.SKIP,	0	)
%OPCT%(TDZA,	050,	TDZA.,	634,	1,1,0,0,0,	A.SKIP,	0	)
%OPCT%(TDOE,	051,	TDOE.,	672,	1,1,0,0,0,	C.SKIP,	0	)
%OPCT%(TDON,	052,	TDON.,	676,	1,1,0,0,0,	C.SKIP,	0	)
%OPCT%(TDOA,	053,	TDOA.,	674,	1,1,0,0,0,	A.SKIP,	0	)
%OPCT%(HRLI,	054,	HRLI.,	505,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(SETZ,	055,	SETZ.,	400,	1,0,0,0,0,	N.SKIP,	STZPAT	)
%OPCT%(SETO,	056,	SETO.,	474,	1,0,0,0,0,	N.SKIP, STOPAT	)
%OPCT%(TRZ,	057,	TRZ.,	620,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(HRLZ,	060,	HRLZ.,	514,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(HLR,	061,	HLR.,	544,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(HRR,	062,	HRR.,	540,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(HLLZ,	063,	HLLZ.,	510,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(AND,	064,	AND..,	404,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(LSHC,	065,	LSHC.,	246,	1,1,1,1,0,	N.SKIP,	0	)
%OPCT%(ANDI,	066,	ANDI.,	405,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(IOR,	067,	IOR.,	434,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(IORI,	070,	IORI.,	435,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(JRST,	071,	XJRST.,	254,	0,1,0,0,0,	N.SKIP,	XJPAT	)
%OPCT%(SKIPA,	072,	XSKPA.,	334,	0,0,0,0,0,	A.SKIP,	0	)
%OPCT%(AOSA,	073,	AOSA.,	354,	0,1,0,0,0,	A.SKIP,	0	)
%OPCT%(MOVMS,	074,	MOVMS.,	217,	0,1,0,0,0,	N.SKIP,	MVMSPT	)
%OPCT%(SOSL,	075,	SOSL.,	371,	0,1,0,0,0,	C.SKIP,	SLPAT	)
%OPCT%(SOSG,	076,	SOSG.,	377,	0,1,0,0,0,	C.SKIP,	SGPAT	)
%OPCT%(SETOB,	077,	SETOB.,	477,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(PUSHJ,	100,	XPSHJ.,	260,	1,1,0,0,0,	C.SKIP,	0	)
%OPCT%(PUSHJ,	101,	ERROR.,	260,	1,1,0,0,1,	N.SKIP,	0	)
%OPCT%(MOVEI,	102,	XMOVI.,	201,	1,1,1,0,0,	N.SKIP,	0 )	;[561]
%OPCT%(TLC,	103,	TLC.,	641,	1,1,0,0,0,	N.SKIP, 0 )	;[562]
%OPCT%(TLCA,	104,	TLCA.,	645,	1,1,0,0,0,	A.SKIP, 0 )
%OPCT%(DFAD,	105,	DFAD.,	110,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(DFSB,	106,	DFSB.,	111,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(DFMP,	107,	DFMP.,	112,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(DFDV,	110,	DFDV.,	113,	1,1,0,0,0,	N.SKIP,	0	)
%OPCT%(ANDCAM,	111,	NDCAM.,	412,	1,1,0,0,0,	N.SKIP,	0	);[1004]

%OPCT%(EXTEND,	112,	XTND.,	123,	1,1,0,0,0,	C.SKIP,	0	)
%OPCT%(Z,	113,	ZOP.,	  0,	0,1,0,0,0,	N.SKIP,	0	)

OPCT%V=:	113	;EACH MODULE THAT EXPANDS THIS MACRO GETS
			;GLOBAL SYMBOL OPCT%V; LINK COMPLAINS IF CONFLICT
LIST
>	;END OF OPCTB2 MACRO


DEFINE	XOPTAB,<

XLIST
;%OPCT%(Z,	0,	Z,	0,	0,1,0,0,0,	N.SKIP,	0	)
%OPCT%(CMPSL,	1,	CMPSL,	1,	0,1,0,0,0,	N.SKIP,	0	)
%OPCT%(CMPSE,	2,	CMPSE,	2,	0,1,0,0,0,	N.SKIP,	0	)
%OPCT%(CMPSLE,	3,	CMPSLE,	3,	0,1,0,0,0,	N.SKIP,	0	)
%OPCT%(EDIT,	4,	EDIT,	4,	0,1,0,0,0,	N.SKIP,	0	)
%OPCT%(CMPSGE,	5,	CMPSGE,	5,	0,1,0,0,0,	N.SKIP,	0	)
%OPCT%(CMPSN,	6,	CMPSN,	6,	0,1,0,0,0,	N.SKIP,	0	)
%OPCT%(CMPSG,	7,	CMPSG,	7,	0,1,0,0,0,	N.SKIP,	0	)
%OPCT%(CVTDBO,	10,	CVTDBO,	10,	0,1,0,0,0,	N.SKIP,	0	)
%OPCT%(CVTDBT,	11,	CVTDBT,	11,	0,1,0,0,0,	N.SKIP,	0	)
%OPCT%(CVTDBO,	12,	CVTDBO,	12,	0,1,0,0,0,	N.SKIP,	0	)
%OPCT%(CVTBDT,	13,	CVTBDT,	13,	0,1,0,0,0,	N.SKIP,	0	)
%OPCT%(MOVSO,	14,	MOVSO,	14,	0,1,0,0,0,	N.SKIP,	0	)
%OPCT%(MOVST,	15,	MOVST,	15,	0,1,0,0,0,	N.SKIP,	0	)
%OPCT%(MOVSLJ,	16,	MOVSLJ,	16,	0,1,0,0,0,	N.SKIP,	0	)
%OPCT%(MOVSRJ,	17,	MOVSRJ,	17,	0,1,0,0,0,	N.SKIP,	0	)
%OPCT%(XBLT,	20,	XBLT,	20,	0,1,0,0,0,	N.SKIP,	0	)

LIST
>	;END OF XOPTAB MACRO



SUBTTL	MACRO DEFINITIONS COMMON TO PHASE O.

;DECLARE THE FIELD DEFINITIONS OF THE IPTAB, AND MACROS TO BUILD
; BYTE POINTERS INTO THAT FIELD.
; THESE FIELDS ARE SET UP IN COBOLO, AND EXAMINED BY PMATCH
; THE IP*EXT BIT IS A FLAG THAT SAYS "DO NOT USE THIS INSTR
; AS A MATCH FOR ANY INSTR".  IT IS A SPECIAL "DONT TOUCH THIS".

	;THESE BITS ARE ALL LEFT HALF FLAGS IN THE IPTAB.
	; THEY ARE NORMALLY USED BY SAYING "TLXX AC,IP%FOO"
	; WHERE AC CONTAINS A COPY OF THE ORIGINAL IPTAB ENT
IP%EXT==400000		;DONT TOUCH THIS EXCEPTION TO NORMAL PROCESSING
IP%SKP==003400		;ALL THE SKIP BITS
IP%SKA==000400		;THE INSTRUCTION ALWAYS SKIPS
IP%SK1==001000		;THE INSTRUCTION CONDITIONALLY SKIPS
IP%SK2==002000		;THE INSTRUCTION CONDITIONALLY SKIPS ONE OR TWO
IP%AC== 074000		;THE AC BITS IN THE IPTAB
IP%WC== 300000		;THE WORD COUNT FIELD
IP%OP== 000377		;THE OP CODE FIELD

	;THESE MACROS DEFINE FIELDS IN THE IPTAB ENTRY
	; THEY ARE NORMALLY USED BY SAYING SOMETHING
	; LIKE "LDB AC,[IP$FOO <ADDR>]" WHERE ADDR CONTAINS
	; AN IPTAB ENTRY.  THEY BUILD THE APPROPRIATE
	; BYTE POINTER.
DEFINE	IP$EXT	(ADDR),<POINT 1,ADDR,0>		;THE EXCEPTION TO PROCESSING BIT
DEFINE	IP$AC	(ADDR),<POINT 4,ADDR,6>		;THE AC OF THE INSTRUCTION
DEFINE	IP$SKP	(ADDR),<POINT 3,ADDR,9>		;THE COMBINED SKIP BITS
DEFINE	IP$OP	(ADDR),<POINT 8,ADDR,17>	;THE OP CODE FIELD
DEFINE	IP$WC	(ADDR),<POINT 2,ADDR,2>		;THE COUNT OF WORDS IN INSTBF
DEFINE	IP$SKA	(ADDR),<POINT 1,ADDR,9>		;THE UNCONDITIONAL SKIP BIT
DEFINE	IP$SK1	(ADDR),<POINT 1,ADDR,8>		;THE CAN SKIP ONE INSTR BIT
DEFINE	IP$SK2	(ADDR),<POINT 1,ADDR,7>		;THE CAN SKIP TWO INSTRS BIT


	;DEFINE SOME SPECIAL "OPCODES".  THEY ARE IPTAB ENTRIES
	; THAT ARE NOT CODE.  WE DEFINE THEM HERE FOR CONVENIENCE.
	DEFINE	SETVL (A,B),<B==A>

	SETVL	377,%TAG.	;THIS ENTRY IS A TAG.
	SETVL	376,%PROC.	;THIS ENTRY IS A PROCEDURE NAME
	SETVL	375,%HDR.	;HEADER OF AN XWD
	SETVL	374,%DATA.	;DATA WORD
	SETVL	373,%CNVD.	;PUSHJ PP,CNVDB.##


	;DEFINE FIELDS IN THE OPPART.  (OPTIMIZER PATTERN RECOGNITION
	; TABLE.)  THERE IS AN ENTRY IN THE OPPART FOR EVERY OP CODE
	; THAT IS DEFINED.  THE RIGHT HALF OF EACH ENTRY CONTAINS
	; THE OPPARE (OPTIMIZER PATTERN RECOGNIZER) ADDRESS FOR
	; THAT SPECIFIC (OR GENERAL) OP CODE.  THE LEFT HALF
	; CONTAINS BITS OF INTEREST.
DEFINE	A$SKIP	(ADDR),<POINT 1,ADDR,17>	;INSTRUCTION ALWAYS SKIPS
DEFINE	C$SKIP	(ADDR),<POINT 1,ADDR,16>	;INSTRUCTION CONDITIONALY SKIPS

	;DEFINE MNEMONICS FOR INSTRUCTION SKIP CHARACTERISTICS
	A.SKIP==1		;ALWAYS SKIPS
	C.SKIP==2		;CONDITIONALLY SKIPS
	N.SKIP==0		;NEVER SKIPS




	END		;THAT;'S ALL FOLKS