Google
 

Trailing-Edge - PDP-10 Archives - ksu2_130 - ks10.mcr
Click ks10.mcr to see without markup as text/plain
There are 3 other files named ks10.mcr in the archive. Click here to see a list.
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 1
; 								Table of Contents					

; 1		KS10.MIC[7,3]	14:54 7-JAN-1986
; 57	REVISION HISTORY
; 184	HOW TO READ THE MICROCODE
; 389	CONDITIONAL ASSEMBLY DEFINITIONS
; 435	2901 REGISTER USAGE
; 471	MICROCODE FIELDS -- LISTING FORMAT
; 519	MICROCODE FIELDS -- DATAPATH CHIP
; 671	MICROCODE FIELDS -- RAM FILE ADDRESS AND D-BUS
; 705	MICROCODE FIELDS -- PARITY GENERATION & HALF WORD CONTROL
; 728	MICROCODE FIELDS -- SPEC
; 831	MICROCODE FIELDS -- DISPATCH
; 875	MICROCODE FIELDS -- SKIP
; 926	MICROCODE FIELDS -- TIME CONTROL
; 946	MICROCODE FIELDS -- RANDOM CONTROL BITS
; 968	MICROCODE FIELDS -- NUMBER FIELD
; 1312	DISPATCH ROM DEFINITIONS
; 1358	HOW TO READ MACROS
; 1517	MACROS -- DATA PATH CHIP -- GENERAL
; 1667	MACROS -- DATA PATH CHIP -- Q
; 1702	MACROS -- DATA PATH CHIP -- MISC.
; 1723	MACROS -- STORE IN AC
; 1755	MACROS -- MICROCODE WORK SPACE
; 1782	MACROS -- MEMORY CONTROL
; 1832	MACROS -- VMA
; 1849	MACROS -- TIME CONTROL
; 1862	MACROS -- SCAD, SC, FE LOGIC
; 1945	MACROS -- DATA PATH FIELD CONTROL
; 1961	MACROS -- SHIFT PATH CONTROL
; 1974	MACROS -- SPECIAL FUNCTIONS
; 2005	MACROS -- PC FLAGS
; 2034	MACROS -- PAGE FAIL FLAGS
; 2042	MACROS -- SINGLE SKIPS
; 2067	MACROS -- SPECIAL DISPATCH MACROS
; 2101	DISPATCH ROM MACROS
; 2142		SIMPLE.MIC[7,3]	16:49 11-NOV-1985
; 2144	POWER UP SEQUENCE
; 2226	THE INSTRUCTION LOOP -- START NEXT INSTRUCTION
; 2350	THE INSTRUCTION LOOP -- FETCH ARGUMENTS
; 2462	THE INSTRUCTION LOOP -- STORE ANSWERS
; 2546	MOVE GROUP
; 2583	EXCH
; 2598	HALFWORD GROUP
; 2765	DMOVE, DMOVN, DMOVEM, DMOVNM
; 2796	BOOLEAN GROUP
; 2951	ROTATES AND LOGICAL SHIFTS -- ROT, LSH, JFFO
; 3047	ROTATES AND LOGICAL SHIFTS -- LSHC
; 3082	ROTATES AND LOGICAL SHIFTS -- ASHC
; 3121	ROTATES AND LOGICAL SHIFTS -- ROTC
; 3153	TEST GROUP
; 3305	COMPARE -- CAI, CAM
; 3374	ARITHMETIC SKIPS -- AOS, SOS, SKIP
; 3424	CONDITIONAL JUMPS -- JUMP, AOJ, SOJ, AOBJ
; 3515	AC DECODE JUMPS -- JRST, JFCL
; 3605	EXTENDED ADDRESSING INSTRUCTIONS
; 3646	XCT
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 2
; 								Table of Contents					

; 3668	STACK INSTRUCTIONS -- PUSHJ, PUSH, POP, POPJ
; 3765	STACK INSTRUCTIONS -- ADJSP
; 3798	SUBROUTINE CALL/RETURN -- JSR, JSP, JSA, JRA
; 3853	ILLEGAL INSTRUCTIONS AND UUO'S
; 4052	ARITHMETIC -- ADD, SUB
; 4081	ARITHMETIC -- DADD, DSUB
; 4114	ARITHMETIC -- MUL, IMUL
; 4165	ARITHMETIC -- DMUL
; 4306	ARITHMETIC -- DIV, IDIV
; 4383	ARITHMETIC -- DDIV
; 4504	ARITHMETIC -- DIVIDE SUBROUTINE
; 4569	ARITHMETIC -- DOUBLE DIVIDE SUBROUTINE
; 4609	ARITHMETIC -- SUBROUTINES FOR ARITHMETIC
; 4655	BYTE GROUP -- IBP, ILDB, LDB, IDPB, DPB
; 4732	BYTE GROUP -- INCREMENT BYTE POINTER SUBROUTINE
; 4745	BYTE GROUP -- BYTE EFFECTIVE ADDRESS EVALUATOR
; 4779	BYTE GROUP -- LOAD BYTE SUBROUTINE
; 4832	BYTE GROUP -- DEPOSIT BYTE IN MEMORY
; 4920	BYTE GROUP -- ADJUST BYTE POINTER
; 5079	BLT
; 5261		FLT.MIC[7,3]	01:46 20-MAR-1981
; 5262	FLOATING POINT -- FAD, FSB
; 5307	FLAOTING POINT -- FMP
; 5336	FLOATING POINT -- FDV
; 5386	FLOATING POINT -- FLTR, FSC
; 5421	FLOATING POINT -- FIX AND FIXR
; 5458	FLOATING POINT -- SINGLE PRECISION NORMALIZE
; 5525	FLOATING POINT -- ROUND ANSWER
; 5536	FLOATING POINT -- DFAD, DFSB
; 5625	FLOATING POINT -- DFMP
; 5686	FLOATING POINT -- DFDV
; 5740	FLOATING POINT -- DOUBLE PRECISION NORMALIZE
; 5850		EXTEND.MIC[7,3]	11:35 26-JULY-1984
; 5851	EXTEND -- DISPATCH ROM ENTRIES
; 5906	EXTEND -- INSTRUCTION SET DECODING
; 5948	EXTEND -- MOVE STRING -- SETUP
; 5993	EXTEND -- MOVE STRING -- OFFSET/TRANSLATE
; 6024	EXTEND -- MOVE STRING -- MOVSRJ
; 6072	EXTEND -- MOVE STRING -- SIMPLE MOVE LOOP
; 6096	EXTEND -- COMPARE STRING
; 6157	EXTEND -- DECIMAL TO BINARY CONVERSION
; 6289	EXTEND -- BINARY TO DECIMAL CONVERSION
; 6447	EXTEND -- EDIT -- MAIN LOOP
; 6501	EXTEND -- EDIT -- DECODE OPERATE GROUP
; 6520	EXTEND -- EDIT -- STOP EDIT
; 6535	EXTEND -- EDIT -- START SIGNIFICANCE
; 6542	EXTEND -- EDIT -- EXCHANGE MARK AND DESTINATION
; 6553	EXTEND -- EDIT -- PROCESS SOURCE BYTE
; 6616	EXTEND -- EDIT -- MESSAGE BYTE
; 6639	EXTEND -- EDIT -- SKIP
; 6653	EXTEND -- EDIT -- ADVANCE PATTERN POINTER
; 6686	EXTEND SUBROUTINES -- FILL OUT DESTINATION
; 6710	EXTEND SUBROUTINES -- GET MODIFIED SOURCE BYTE
; 6747	EXTEND SUBROUTINES -- TRANSLATE
; 6833	EXTEND SUBROUTINES -- GET UNMODIFIED SOURCE BYTE
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 3
; 								Table of Contents					

; 6862	EXTEND SUBROUTINES -- STORE BYTE IN DESTINATION STRING
; 6883	EXTEND SUBROUTINES -- UPDATE DEST STRING POINTERS
; 6927	EXTEND -- PAGE FAIL CLEANUP
; 6966		INOUT.MIC[7,3]	13:32 7-JAN-1986
; 6967	TRAPS
; 6998	IO -- INTERNAL DEVICES
; 7109	IO -- INTERNAL DEVICES -- EBR & UBR
; 7235	IO -- INTERNAL DEVICES -- KL PAGING REGISTERS
; 7277	IO -- INTERNAL DEVICES -- TIMER CONTROL
; 7308	IO -- INTERNAL DEVICES -- WRTIME & RDTIME
; 7347	IO -- INTERNAL DEVICES -- WRINT & RDINT
; 7361	IO -- INTERNAL DEVICES -- RDPI & WRPI
; 7401	IO -- INTERNAL DEVICES -- SUBROUTINES
; 7542	PRIORITY INTERRUPTS -- DISMISS SUBROUTINE
; 7557	EXTERNAL IO INSTRUCTIONS
; 7745	SMALL SUBROUTINES
; 7769	UNDEFINED IO INSTRUCTIONS
; 7850	UMOVE AND UMOVEM
; 7905	WRITE HALT STATUS BLOCK
; 7997		PAGEF.MIC[7,3]	12:15 10-APR-1985
; 7999	PAGE FAIL REFIL LOGIC
;	Cross Reference Index
;	DCODE Location / Line Number Index
;	UCODE Location / Line Number Index
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 4
; KS10.MIC[7,3]	14:54 7-JAN-1986					KS10.MIC[7,3]	14:54 7-JAN-1986		

; 1		.NOBIN
; 2	.TITLE	"KS10 MICROCODE V130, 7-JAN-86"
; 3	
; 4	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 5	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 6	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 7	;;;                                                           ;;;
; 8	;;;                                                           ;;;
; 9	;;;     COPYRIGHT (C) 1976,1977,1978,1979,1980,1981,1982,     ;;;
; 10	;;;			1984,1985,1986			      ;;;
; 11	;;;	  DIGITAL EQUIPMENT CORP., MAYNARD, MASS.             ;;;
; 12	;;;                                                           ;;;
; 13	;;;     THIS SOFTWARE IS FURNISHED UNDER A LICENSE  FOR  USE  ;;;
; 14	;;;     ONLY  ON  A SINGLE COMPUTER SYSTEM AND MAY BE COPIED  ;;;
; 15	;;;     ONLY WITH  THE  INCLUSION  OF  THE  ABOVE  COPYRIGHT  ;;;
; 16	;;;     NOTICE.  THIS SOFTWARE, OR ANY OTHER COPIES THEREOF,  ;;;
; 17	;;;     MAY NOT BE PROVIDED OR OTHERWISE MADE  AVAILABLE  TO  ;;;
; 18	;;;     ANY  OTHER  PERSON EXCEPT FOR USE ON SUCH SYSTEM AND  ;;;
; 19	;;;     TO ONE WHO AGREES TO THESE LICENSE TERMS.  TITLE  TO  ;;;
; 20	;;;     AND  OWNERSHIP  OF  THE  SOFTWARE SHALL AT ALL TIMES  ;;;
; 21	;;;     REMAIN IN DEC.                                        ;;;
; 22	;;;                                                           ;;;
; 23	;;;     THE INFORMATION  IN  THIS  DOCUMENT  IS  SUBJECT  TO  ;;;
; 24	;;;     CHANGE WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED AS  ;;;
; 25	;;;     A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION.        ;;;
; 26	;;;                                                           ;;;
; 27	;;;     DEC  ASSUMES  NO  RESPONSIBILITY  FOR  THE  USE   OR  ;;;
; 28	;;;     RELIABILITY  OF  ITS  SOFTWARE IN EQUIPMENT WHICH IS  ;;;
; 29	;;;     NOT SUPPLIED BY DEC.                                  ;;;
; 30	;;;                                                           ;;;
; 31	;;;     DESIGNED AND WRITTEN BY:                              ;;;
; 32	;;;             DONALD A. LEWINE                              ;;;
; 33	;;;             DIGITAL EQUIPMENT CORP.                       ;;;
; 34	;;;             MARLBORO, MASS.                               ;;;
; 35	;;;             MR1-2/E47  X6430                              ;;;
; 36	;;;                                                           ;;;
; 37	;;;     MAINTAINED AND ENHANCED BY:                           ;;;
; 38	;;;             DONALD D. DOSSA				      ;;;
; 39	;;;             DIGITAL EQUIPMENT CORP.                       ;;;
; 40	;;;             MARLBORO, MASS.                               ;;;
; 41	;;;             MR1-2/E18  DTN 231-4138                       ;;;
; 42	;;;                                                           ;;;
; 43	;;;             SEAN KEENAN				      ;;;
; 44	;;;             DIGITAL EQUIPMENT CORP.                       ;;;
; 45	;;;             MARLBORO, MASS.                               ;;;
; 46	;;;             MR1-2/E18  DTN 231-4463                       ;;;
; 47	;;;                                                           ;;;
; 48	;;;		TIMOTHE LITT				      ;;;
; 49	;;;             DIGITAL EQUIPMENT CORP.                       ;;;
; 50	;;;             MARLBORO, MASS.                               ;;;
; 51	;;;		IND-3/C9 262-8374			      ;;;
; 52	;;;                                                           ;;;
; 53	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 54	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 55	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 56	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 5
; KS10.MIC[7,3]	14:54 7-JAN-1986				REVISION HISTORY					

; 57	.TOC	"REVISION HISTORY"
; 58	
; 59	;REV	WHY
; 60	;1	START KS10 MICROCODE BASED ON SM10 MICROCODE VERSION 510
; 61	;2	UPDATE TO KS10 VERSION 512
; 62	;3	FIX SOME DEFAULTS
; 63	;4	CHANGE HARDWARE TO MATCH ECO #215
; 64	;5	START TO UPDATE IO MICROCODE
; 65	;6	MORE WORK ON IO
; 66	;7	MAKE INTERRUPT THE 8080 BE A PULSE.
; 67	;10	ADD NEW RDIO AND WRIO
; 68	;11	FIX PROBLEMS IN MUUO CODE & CORRECT T-FIELDS
; 69	;12	FIX PROBLEMS IN DDIV
; 70	;13	FIX UP PROBLEMS IN PI
; 71	;14	TURN ON WRITE FOR FL-EXIT
; 72	;15	FIX UP MAP INSTRUCTION
; 73	;16	MORE WORK ON KI-STYLE MAP
; 74	;17	INVERT HOLD RIGHT AND HOLD LEFT BITS
; 75	;20	FIXUP WRIO & RDIO EFFECTIVE ADDRESS CALC.
; 76	;21	FIX EDIT 15
; 77	;22	HAVE LSH USE FAST SHIFT HARDWARE
; 78	;23	FIX T-FIELD VALUES FOR PRODUCTION HARDWARE
; 79	;24	REMOVE WRITE TEST FROM IO READS & WRITES
; 80	;25	REWRITE MUL & MULI TO BE FASTER AND SMALLER. ALSO MAKE ADJBP
; 81	;	USE NEW MULSUB
; 82	;26	MAKE BYTES USE FAST SHIFT ECO.
; 83	;27	MAKE SURE VMA FETCH IS CORRECT
; 84	;30	MORE OF 25 (FORGOT FMP)
; 85	;31	FIX SOME PROBLEMS WITH TRAPS
; 86	;32	SPEED UP EFFECTIVE ADDRESS CALCULATION
; 87	;33	MORE OF 32
; 88	;34	SPEED UP ASH & ROT
; 89	;35	FIX UP RDTIM SO THAT TIME DOES NOT GO BACKWARDS
; 90	;36	MORE OF 35
; 91	;37	FIX UP PROBLEMS WITH INTERRUPTS AND DOUBLE F.P.
; 92	;40	IMPROVE LISTING FORMAT
; 93	;41	SPEEDUP KL-MODE PAGE REFILL
; 94	;42	FIX UP DDIV
; 95	;43	STILL MORE DDIV STUFF
; 96	;44	CORRECT PROBLEMS IN D.P. PARITY STUFF
; 97	;45	CORRECT THE BLT CLEAR-CORE CASE TO INTERRUPT CORRECTLY
; 98	;46	MORE OF 45
; 99	;47	DO NOT ALLOW SOFTWARE INTERRUPTS IF THE PI LEVEL IS NOT
; 100	;	ACTIVE.
; 101	;50	MAKE FDV WORK THE SAME AS THE KL10
; 102	;51	FIX INTERRUPT IN CVTBDX. MAKE ABORT WORK LIKE SPEC.
; 103	;52	FIX BUG IN HALT LOOP
; 104	;53	FIX IOEA TO WORK IF NO @ OR INDEXING
; 105	;54	EDIT 47 BROKE JEN
; 106	;55	FIX FLAGS IN MULTIPLY. ALSO CODE BUMS
; 107	;56	MORE CODE BUMS
; 108	;57	CORRECT OVERFLOW TRAPS WHICH DO MUUOS TO NOT STORE
; 109	;	THE TRAP FLAGS.
; 110	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 6
; KS10.MIC[7,3]	14:54 7-JAN-1986				REVISION HISTORY					

; 111	;60	CORRECT TRAPS SO THAT DSKEA RUNS RIGHT
; 112	;61	MORE OF 60. NOTE: MICROCODE REQUIRES ECO #299!!
; 113	;62	ONE MORE TRY AT EDIT 60.
; 114	;63	CORRECT TOPS-10 STYLE PAGING SO THAT A WRITE VIOLATION SETS
; 115	;	BIT 2 IN THE PAGE FAIL WORD (ACCESS ALLOWED).
; 116	;64	EDIT 63 BROKE HARD PAGE FAILS. (NXM, BAD DATA, AND IO NXM)
; 117	;65	INTERRUPTS OUT OF MOVSRJ INSTRUCTIONS DO STRANGE THINGS.
; 118	;66	IO NXM PAGE FAIL FOR MISSING UBA GIVES PC+1 IN PAGE FAIL BLOCK.
; 119	;67	ON A BAD DATA ERROR, STORE THE BAD WORD IN AC BLOCK 7 WORD 0 AND
; 120	;	1
; 121	;70	FIX A BUG WHICH CAUSED INTERRUPTS OUT OF CVTBDT TO GENERATE A BAD
; 122	;	ANSWER.
; 123	;71	CLEANUP SOME THINGS TO MAKE LIFE EASIER FOR FIELD SERVICE
; 124	;72	LOOK FOR 1-MS TRAP ON @ PAGE POINTERS AND ABORT REFILL IF
; 125	;	SET.
; 126	;73	CORRECT EDIT 72.
; 127	;74	EDIT 67 GENERATES A DATA PATH PARITY ERROR BECAUSE OF THE BAD
; 128	;	DATA. CORRECT TO NOT CHECK PARITY.
; 129	;	ALSO CHANGE POP TO TIE UP BUS LESS.
; 130	;75	EDIT 60 BROKE TRAPS. MISSING =0 AT TRAP:. 
; 131	;76	CORRECT BUG IN DFAD AND DFSB
; 132	;77	FIX PROBLEM SEEN IN SOME (ALL BUT ENGINEERING?) MACHINES CAUSED
; 133	;	BY EDIT 76
; 134	;100	CHANGE DFAD/DFSB TO HAVE 2 MORE GUARD BITS. THIS SHOULD PRODUCE
; 135	;	KL10 ANSWERS FOR ALL NORMALIZED INPUTS
; 136	;	ALSO FIX A BUG IN CVTBDX PAGE FAIL LOGIC.
; 137	;101	DFDV OF 0.0 / -0.5 HANGS THE MACHINE
; 138	;102	FIX CHOPPED FLOATING POINT INSTRUCTIONS
; 139	;103	CORRECT DFDV ROUNDING BUG.
; 140	;104	CORRECT PROBLEMS IN DFMP
; 141	;105	RDTIME SOMETIMES GIVES WRONG ANSWER. CARRY BETWEEN
; 142	;	WORDS GETS LOST SOMETIME.
; 143	;106	MOVEM (ALSO, SETZM, SETOM, ETC.) SOMETIMES DOES NOT GENERATE
; 144	;	A WRITE-TRAP IN 100% OF THE CASES THAT IT SHOULD.
; 145	;107	PXCT 14, DOES NOT GET THE INDEX REGISTER IN THE PREVIOUS
; 146	;	CONTEXT ALL THE TIME.
; 147	;110	FIX TYPO IN EDIT 103
; 148	;111	63. BIT BYTES DO NOT WORK CORRECTLY. DSKDA FAILS BECAUSE OF THIS
; 149	;	PROBLEM.
; 150	;******* VERSION 111 WENT OUT WITH SYSTEM REV 2 *******
; 151	
; 152	;112	FIX COMMENT IN TEST INSTRUCTIONS
; 153	;113	CORRECT IOEA TO COMPUTE CORRECT ADDRESS IF JUST LOCAL INDEXING
; 154	;	IS USED.
; 155	;114	CORRECT INTERRUPT BUG IN DMUL
; 156	;115	CORRECT COMMENTS HALT STATUS BLOCK
; 157	;116	CORRECT PROBLEM WHERE CST MODIFIED BIT GETS SET BY MISTAKE.
; 158	;117	RDINT INSTRUCTION DOES NOT WORK AT ALL. IT STORES RANDOM TRASH
; 159	;	IN THE WRONG PLACE. NEED TO LOAD BR NOT AR.
; 160	;120	FLOATING POINT OPERATIONS SOMETIMES GET THE WRONG RESULT WITH
; 161	;	INPUTS OF UNNORMALIZED ZEROS. THIS SHOULD NEVER HAPPEN WITH
; 162	;	FORTRAN OR ANY OTHER DEC LANGUAGE.
; 163	;121	PREVENT KEEP-ALIVE CRASHES FROM OCCURRING BECAUSE THE MOVSRJ
; 164	;	INSTRUCTION CAN LOCK OUT THE 1MS TIMER INTERRUPTS FROM BEING
; 165	;	HANDLED. THIS CAUSES THE OPERATING SYSTEM TO LOSE TRACK OF THE
; 166	;	PASSAGE OF TIME.
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 6-1
; KS10.MIC[7,3]	14:54 7-JAN-1986				REVISION HISTORY					

; 167	;122	DFAD FOLLOWED BY A FSC OF -5 CAUSES THE FSC TO GET WRONG
; 168	;	ANSWER. HAD TO CLEAR FLAG WORD AT EXIT OF DFAD TO FIX PROBLEM
; 169	;123	MORE CODE FOR EDIT 121. ADDED ANOTHER DISPATCH ADDRESS FOR
; 170	;	PAGE FAIL CODE AT PFD:.
; 171	;124	ADD ASSEMBLY OPTIONS FOR NOCST AND INHIBIT CST UPDATE.
; 172	;	ADD BLTUB/BLTBU TO GET UBA STYLE BYTES SWAPPED TO/FROM ILDB FORM.
; 173	;	ADD ASSEMBLY OPTIONS FOR KI/KL PAGE.  NEED THE SPACE FOR BLTUB/BU.
; 174	;125	SUPPORT THE "MAJOR/MINOR VERSION IN 136" UCODE STANDARD.
; 175	;	FIX BAD CONSTRAINT FOR INHCST ASSEMBLIES (NOT CURRENTLY USED)
; 176	;126	FIX NON-TRIVIAL CASES OF RDUBR,WRUBR, AND PROCESS CONTEXT WORD.
; 177	;127	JSR IN A TRAP CYCLE STORES E+1 SOMETIMES.  TRAP CYCLE WAS NOT BEING
; 178	;	CLEARED (BY NICOND) BEFORE STARTING THE NEXT MEMORY READ.  
; 179	;130	FIX UCODE HANG WITH STOPPPED CLOCKS ON WR (KL-PAGING REGISTER) IF
; 180	;	PAGING IS ON.  IDEALLY, WE WOULD REMOVE WRITE TEST FROM THE DROM
; 181	;	FIELD, BUT IT'S TOO LATE TO ECO THE ROMS.  
; 182	;	RESTRICTION:  WRITE KLPAGE REGISTER LOCATION MUST BE WRITABLE.
; 183	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 7
; KS10.MIC[7,3]	14:54 7-JAN-1986				HOW TO READ THE MICROCODE				

; 184	.TOC	"HOW TO READ THE MICROCODE"
; 185	
; 186	;		
; 187	;		
; 188	;		1.0 FIELD DEFINITIONS
; 189	;		
; 190	;		THESE OCCUR AT THE BEGINNING  OF  THE  LISTING,  IN  THE  SOURCE  FILE  KS10.MIC
; 191	;		(CONTROL AND DISPATCH RAM DEFINITIONS).  THEY HAVE THE FORM:
; 192	;		
; 193	;		        SYMBOL/=<L:R>M,J
; 194	;		
; 195	;		THE PARAMETER (J) IS MEANINGFUL WHEN "D" IS SPECIFIED AS THE DEFAULT  MECHANISM,
; 196	;		AND  IN  THAT  CASE, GIVES THE DEFAULT VALUE OF THE FIELD IN OCTAL.  WHEN "F" IS
; 197	;		SPECIFIED AS THE DEFAULT MECHANISM, (J) IS THE NAME OF A  FIELD  WHICH  CONTAINS
; 198	;		THE DEFAULT VALUE FOR THIS FIELD.
; 199	;		
; 200	;		THE PARAMETER (L) GIVES THE BIT POSITION OF THE LEFTMOST BIT IN THE FIELD.   THE
; 201	;		SAME METHOD IS USED AS FOR (R) BELOW.
; 202	;		
; 203	;		THE PARAMETER (R) GIVES THE FIELD POSITION IN DECIMAL AS THE BIT NUMBER  OF  THE
; 204	;		RIGHTMOST  BIT  OF  THE FIELD.  BITS ARE NUMBERED FROM 0 ON THE LEFT.  NOTE THAT
; 205	;		THE POSITION OF BITS IN THE MICROWORD SHOWN IN THE LISTING BEARS NO RELATION  TO
; 206	;		THE ORDERING OF BITS IN THE HARDWARE MICROWORD, WHERE FIELDS ARE OFTEN BROKEN UP
; 207	;		AND SCATTERED.
; 208	;		
; 209	;		THE PARAMETER (M) IS OPTIONAL, AND SELECTS A DEFAULT MECHANISM  FOR  THE  FIELD.
; 210	;		THE  LEGAL  VALUES  OF  THIS PARAMETER ARE THE CHARACTERS "D", "F", "T", "P", OR
; 211	;		"+".
; 212	;		
; 213	;		        "D" MEANS (J) IS THE DEFAULT VALUE OF THE FIELD IF NO EXPLICIT VALUE  IS
; 214	;		        SPECIFIED.
; 215	;		
; 216	;		        "F" IS USED TO CAUSE THIS FIELD TO DEFAULT TO SOME OTHER FIELD.
; 217	;		
; 218	;		        "T" IS USED ON THE TIME FIELD TO SPECIFY THAT THE  VALUE  OF  THE  FIELD
; 219	;		        DEPENDS  ON  THE  TIME PARAMETERS SELECTED FOR OTHER FIELDS.  "T" IS NOT
; 220	;		        USED IN THE KS10.
; 221	;		
; 222	;		        "P" IS USED ON THE PARITY FIELD TO SPECIFY THAT THE VALUE OF  THE  FIELD
; 223	;		        SHOULD  DEFAULT  SUCH THAT PARITY OF THE ENTIRE WORD IS ODD.  "P" IS NOT
; 224	;		        USED ON THE KS10.
; 225	;		
; 226	;		        "+" IS USED ON THE JUMP ADDRESS FIELD TO SPECIFY THAT THE  DEFAULT  JUMP
; 227	;		        ADDRESS  IS  THE  ADDRESS  OF  THE  NEXT  INSTRUCTION ASSEMBLED (NOT, IN
; 228	;		        GENERAL, THE CURRENT LOCATION +1).
; 229	;		
; 230	;		IN GENERAL, A FIELD CORRESPONDS TO THE SET OF BITS WHICH PROVIDE  SELECT  INPUTS
; 231	;		FOR MIXERS OR DECODERS, OR CONTROLS FOR ALU'S.
; 232	;		
; 233	;		
; 234	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 8
; KS10.MIC[7,3]	14:54 7-JAN-1986				HOW TO READ THE MICROCODE				

; 235	;		2.0 VALUE DEFINITIONS
; 236	;		
; 237	;		FOLLOWING A FIELD DEFINITION, SYMBOLS MAY BE CREATED IN THAT FIELD TO CORRESPOND
; 238	;		TO VALUES OF THE FIELD.  THE FORM IS:
; 239	;		
; 240	;		        SYMBOL=N
; 241	;		
; 242	;		"N" IS, IN OCTAL, THE VALUE OF SYMBOL WHEN USED IN THE FIELD.
; 243	;		
; 244	;		
; 245	;		
; 246	;		3.0 LABEL DEFINITIONS
; 247	;		
; 248	;		A MICRO INSTRUCTION MAY BE LABELLED BY A SYMBOL FOLLOWED BY COLON PRECEDING  THE
; 249	;		MICROINSTRUCTION  DEFINITION.   THE  ADDRESS OF THE MICROINSTRUCTION BECOMES THE
; 250	;		VALUE OF THE SYMBOL IN THE FIELD NAMED "J".  EXAMPLE:
; 251	;		
; 252	;		        FOO:  J/FOO
; 253	;		
; 254	;		THIS IS A MICROINSTRUCTION WHOSE "J" FIELD (JUMP  ADDRESS)  CONTAINS  THE  VALUE
; 255	;		"FOO".   IT  ALSO  DEFINES  THE  SYMBOL  "FOO"  TO  BE  THE  ADDRESS  OF ITSELF.
; 256	;		THEREFORE, IF EXECUTED BY THE MICROPROCESSOR, IT WOULD LOOP ON ITSELF.
; 257	;		
; 258	;		
; 259	;		
; 260	;		4.0 COMMENTS
; 261	;		
; 262	;		A SEMICOLON ANYWHERE ON A LINE CAUSES THE REST OF THE LINE TO BE IGNORED BY  THE
; 263	;		ASSEMBLER.  THIS TEXT IS AN EXAMPLE OF COMMENTS.
; 264	;		
; 265	;		
; 266	;		
; 267	;		5.0 MICROINSTRUCTION DEFINITION
; 268	;		
; 269	;		A WORD OF MICROCODE IS DEFINED BY SPECIFYING A FIELD  NAME,  FOLLOWED  BY  SLASH
; 270	;		(/),  FOLLOWED BY A VALUE.  THE VALUE MAY BE A SYMBOL DEFINED FOR THAT FIELD, AN
; 271	;		OCTAL DIGIT STRING, OR A DECIMAL DIGIT STRING (DISTINGUISHED BY THE FACT THAT IT
; 272	;		CONTAINS  "8"  AND/OR "9" AND/OR IS TERMINATED BY A PERIOD).  SEVERAL FIELDS MAY
; 273	;		BE SPECIFIED IN ONE MICROINSTRUCTION BY  SEPARATING  FIELD/VALUE  SPECIFICATIONS
; 274	;		WITH COMMAS.  EXAMPLE:
; 275	;		
; 276	;		        AD/ZERO,RAMADR/AC*#,ACALU/AC+N,ACN/1,DBUS/DP
; 277	;		
; 278	;		
; 279	;		6.0 CONTINUATION
; 280	;		
; 281	;		THE DEFINITION OF A MICROINSTRUCTION MAY CONTINUED ONTO TWO  OR  MORE  LINES  BY
; 282	;		BREAKING IT AFTER ANY COMMA.  IN OTHER WORDS, IF THE LAST NON-BLANK, NON-COMMENT
; 283	;		CHARACTER ON A LINE IS A COMMA, THE INSTRUCTION SPECIFICATION  IS  CONTINUED  ON
; 284	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 9
; KS10.MIC[7,3]	14:54 7-JAN-1986				HOW TO READ THE MICROCODE				

; 285	;		THE FOLLOWING LINE.  EXAMPLE:
; 286	;		        READ [AR],              ;LOOK AT EFFECTIVE ADDRESS
; 287	;		        SKIP DP18,              ;SEE IF RIGHT OR LEFT SHIFT
; 288	;		        SC_SHIFT-1,              ;PUT NUMBER OF PLACE TO
; 289	;		                                ;SHIFT IN SC
; 290	;		        LOAD FE,                ; AND IN FE
; 291	;		        INST DISP               ;GO DO THE SHIFT
; 292	;		
; 293	;		
; 294	;		
; 295	;		7.0 MACROS
; 296	;		
; 297	;		A MACRO IS A SYMBOL WHOSE VALUE IS ONE OR MORE FIELD/VALUE SPECIFICATIONS AND/OR
; 298	;		MACROS.   A  MACRO  DEFINITION IS A LINE CONTAINING THE MACRO NAME FOLLOWED BY A
; 299	;		QUOTED STRING WHICH IS THE VALUE OF THE MACRO.  EXAMPLE:
; 300	;		
; 301	;		        LOAD VMA "MEM/1, LDVMA/1
; 302	;		
; 303	;		THE APPEARANCE OF A MACRO IN A MICROINSTRUCTION DEFINITION IS EQUIVALENT TO  THE
; 304	;		APPEARANCE OF ITS VALUE.
; 305	;		
; 306	;		MACRO MAY HAVE PARAMETERS ENCLOSED IN [].  FOR EXAMPLE,
; 307	;		
; 308	;		        []_[] "AD/A,A/@2,DEST/AD,B/@1"
; 309	;		
; 310	;		THE @1 GETS REPLACED BY WHAT IS WRITTEN IN  THE  FIRST  SET  OF  []  AND  @2  IS
; 311	;		REPLACED BY WHAT IS WRITTEN IN THE SECOND SET OF [].  THUS
; 312	;		
; 313	;		        [AR]_[ARX]
; 314	;		
; 315	;		HAS THE SAME EFFECT AS SAYING
; 316	;		
; 317	;		        AD/A,A/ARX,DEST/AD,B/AR
; 318	;		
; 319	;		
; 320	;		        SEE DESCRIPTION OF RULES FOR MACRO NAMES.
; 321	;		
; 322	;		8.0 PSEUDO OPS
; 323	;		
; 324	;		        THE MICRO ASSEMBLER HAS 13 PSEUDO-OPERATORS:
; 325	;		
; 326	;		        .DCODE AND .UCODE SELECT THE RAM INTO WHICH SUBSEQUENT MICROCODE WILL BE
; 327	;		        LOADED,  AND  THEREFORE  THE  FIELD  DEFINITIONS  AND  MACROS  WHICH ARE
; 328	;		        MEANINGFUL IN SUBSEQUENT MICROCODE
; 329	;		        .TITLE DEFINES A STRING OF TEXT TO APPEAR IN THE PAGE HEADER, AND
; 330	;		        .TOC DEFINES AN ENTRY FOR THE TABLE OF CONTENTS AT THE BEGINNING.
; 331	;		        .SET DEFINES THE VALUE OF A CONDITIONAL ASSEMBLY PARAMETER,
; 332	;		        .CHANGE REDEFINES A CONDITIONAL ASSEMBLY PARAMETER,
; 333	;		        .DEFAULT ASSIGNS A VALUE TO AN UNDEFINED PARAMETER.
; 334	;		        .IF ENABLES ASSEMBLY IF THE VALUE OF THE PARAMETER IS NOT ZERO,
; 335	;		        .IFNOT ENABLES ASSEMBLY IF THE PARAMETER VALUE IS ZERO, AND
; 336	;		        .ENDIF RE-ENABLES ASSEMBLY IF SUPPRESSED BY THE PARAMETER NAMED.
; 337	;		        .NOBIN TURNS OFF THE BINARY A GETS RID OF THE SPACE USED TO LIST IT,
; 338	;		        .BIN TURN BINARY BACK ON AGAIN.
; 339	;		        .WIDTH CONTROLS THE NUMBER OF BITS IN THE CRAM
; 340	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 10
; KS10.MIC[7,3]	14:54 7-JAN-1986				HOW TO READ THE MICROCODE				

; 341	;		9.0 LOCATION CONTROL
; 342	;		
; 343	;		A MICROINSTRUCTION "LABELLED" WITH A NUMBER IS ASSIGNED TO THAT ADDRESS.
; 344	;		
; 345	;		THE CHARACTER "=" AT THE BEGINNING OF A LINE, FOLLOWED BY A STRING OF 0'S,  1'S,
; 346	;		AND/OR   *'S,   SPECIFIES   A   CONSTRAINT   ON   THE   ADDRESS   OF   FOLLOWING
; 347	;		MICROINSTRUCTIONS.  THE NUMBER OF CHARACTERS IN THE CONSTRAINT STRING (EXCLUDING
; 348	;		THE  "=")  IS  THE  NUMBER  OF  LOW-ORDER  BITS CONSTRAINED IN THE ADDRESS.  THE
; 349	;		MICROASSEMBLER ATTEMPTS TO FIND AN UNUSED LOCATION WHOSE ADDRESS HAS 0  BITS  IN
; 350	;		THE POSITIONS CORRESPONDING TO 0'S IN THE CONSTRAINT STRING AND 1 BITS WHERE THE
; 351	;		CONSTRAINT HAS 1'S.  ASTERISKS DENOTE "DON'T CARE" BIT POSITIONS.
; 352	;		
; 353	;		IF THERE ARE ANY 0'S IN THE CONSTRAINT STRING, THE CONSTRAINT IMPLIES A BLOCK OF
; 354	;		<2**N> MICROWORDS, WHERE N IS THE NUMBER OF 0'S IN THE STRING.  ALL LOCATIONS IN
; 355	;		THE BLOCK WILL HAVE 1'S IN THE ADDRESS BITS CORRESPONDING TO 1'S IN THE  STRING,
; 356	;		AND BIT POSITIONS DENOTED BY *'S WILL BE THE SAME IN ALL LOCATIONS OF THE BLOCK.
; 357	;		
; 358	;		IN SUCH A CONSTRAINT BLOCK, THE DEFAULT ADDRESS PROGRESSION IS COUNTING  IN  THE
; 359	;		"0"  POSITIONS  OF  THE  CONSTRAINT STRING, BUT A NEW CONSTRAINT STRING OCCURING
; 360	;		WITHIN A BLOCK MAY FORCE SKIPPING OVER SOME LOCATIONS OF THE  BLOCK.   WITHIN  A
; 361	;		BLOCK,  A  NEW  CONSTRAINT STRING DOES NOT CHANGE THE PATTERN OF DEFAULT ADDRESS
; 362	;		PROGRESSION, IT MERELY ADVANCES THE LOCATION COUNTER OVER THOSE LOCATIONS.   THE
; 363	;		MICROASSEMBLER WILL LATER FILL THEM IN.
; 364	;		
; 365	;		A NULL CONSTRAINT STRING ("=" FOLLOWED BY ANYTHING BUT "0", "1", OR "*")  SERVES
; 366	;		TO TERMINATE A CONSTRAINT BLOCK.  EXAMPLES:
; 367	;		
; 368	;		        =0 
; 369	;		
; 370	;		THIS SPECIFIES THAT THE LOW-ORDER ADDRESS BIT MUST BE ZERO-- THE  MICROASSEMBLER
; 371	;		FINDS  AN  EVEN-ODD  PAIR  OF LOCATIONS, AND PUTS THE NEXT TWO MICROINSTRUCTIONS
; 372	;		INTO THEM.
; 373	;		
; 374	;		        =11
; 375	;		THIS SPECIFIES THAT THE TWO LOW-ORDER BITS OF THE ADDRESS  MUST  BOTH  BE  ONES.
; 376	;		SINCE THERE ARE NO 0'S IN THIS CONSTRAINT, THE ASSEMBLER FINDS ONLY ONE LOCATION
; 377	;		MEETING THE CONSTRAINT.
; 378	;		
; 379	;		        =0*****
; 380	;		
; 381	;		THIS SPECIFIES  AN  ADDRESS  IN  WHICH  THE  "40"  BIT  IS  ZERO.   DUE  TO  THE
; 382	;		IMPLEMENTATION OF THIS FEATURE IN THE ASSEMBLER, THE DEFAULT ADDRESS PROGRESSION
; 383	;		APPLIES ONLY TO THE LOW-ORDER 5 BITS, SO THIS CONSTRAINT FINDS ONE WORD IN WHICH
; 384	;		THE  "40"  BIT  IS ZERO, AND DOES NOT ATTEMPT TO FIND ONE IN WHICH THAT BIT IS A
; 385	;		ONE.  THIS LIMITATION HAS BEEN CHANGED WITH NEWER ASSEMBLER  VERSIONS.   HOWEVER
; 386	;		NONE  OF  THE  LOCATIONS  IN  THE  MICROCODE REQUIRE ANYTHING BUT THE CONSTRAINT
; 387	;		MENTIONED ABOVE.
; 388	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 11
; KS10.MIC[7,3]	14:54 7-JAN-1986				CONDITIONAL ASSEMBLY DEFINITIONS			

; 389	.TOC	"CONDITIONAL ASSEMBLY DEFINITIONS"
; 390	
; 391	.DEFAULT/SIM=0		;0=RUN ON REAL HARDWARE
; 392				;1=RUN UNDER SIMULATOR
; 393	
; 394	.DEFAULT/FULL=1		;0=INCLUDE ONLY BASIC INSTRUCTIONS
; 395				;1=INCLUDE FULL INSTRUCTION SET
; 396	
; 397	.DEFAULT/INHCST=0	;0=NO CODE TO INHIBIT CST UPDATE IF CSB=0
; 398				;1=DON'T UPDATE CST IF CSB=0
; 399	
; 400	.DEFAULT/NOCST=0	;0=INCLUDE SUPPORT FOR WRITING THE CST
; 401				;1=COMPLETELY DESUPPORT CST (FOR TOPS-10)
; 402	
; 403	.DEFAULT/UBABLT=0	;0=NO UBABLT SUPPORT
; 404				;1=SUPPORT UBA STYLE BLT INSTRUCTIONS.
; 405	
; 406	.DEFAULT/KIPAGE=1	;0=DON'T SUPPORT KI PAGING
; 407				;1=DO
; 408	
; 409	.DEFAULT/KLPAGE=1	;0=DON'T SUPPORT KL PAGING
; 410				;1=DO
; 411	
;;412	.IF/UBABLT		;THESE INSTRUCTIONS
;;413		.IF/KLPAGE
;;414			.CHANGE/KIPAGE=0
;;415		.ENDIF/KLPAGE
;;416		.IF/KIPAGE	;ALLOW ONLY ONE PAGING MODE
;;417			.CHANGE/KLPAGE=0
;;418		.ENDIF/KIPAGE
; 419	.ENDIF/UBABLT		;OTHERWISE, MAY HAVE EITHER OR BOTH
; 420	
;;421	.IF/NOCST
;;422		.CHANGE/INHCST=0
; 423	.ENDIF/NOCST
; 424	
; 425	.DEFAULT/NONSTD=0	;0=STANDARD MICROCODE
; 426				;1=NON-STANDARD MICROCODE
; 427	
; 428	.WIDTH/108		;ONLY FIELDS BETWEEN BITS 0 AND 107 EVER
; 429				; GET LOADED INTO THE CRAM. OTHER FIELDS
; 430				; ARE USED FOR DEFAULTING PROCESS.
; 431	
; 432	.REGION/0,1377/2000,3777/1400,1777
; 433				;TRY AND KEEP STUFF OUT OF DROM SPACE
; 434	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 12
; KS10.MIC[7,3]	14:54 7-JAN-1986				2901 REGISTER USAGE					

; 435	.TOC	"2901 REGISTER USAGE"
; 436	
; 437	;	!=========================================================================!
; 438	;0:	!                   MAG (ONES IN BITS 1-36, REST ZERO)                    !
; 439	;	!-------------------------------------------------------------------------!
; 440	;1:	!                 PC (ADDRESS OF CURRENT INSTRUCTION + 1)                 !
; 441	;	!-------------------------------------------------------------------------!
; 442	;2:	!                        HR (CURRENT INSTRUCTION)                         !
; 443	;	!-------------------------------------------------------------------------!
; 444	;3:	!                    AR (TEMP -- MEM OP AT INST START)                    !
; 445	;	!-------------------------------------------------------------------------!
; 446	;4:	!               ARX (TEMP -- LOW ORDER HALF OF DOUBLE PREC)               !
; 447	;	!-------------------------------------------------------------------------!
; 448	;5:	!                                BR (TEMP)                                !
; 449	;	!-------------------------------------------------------------------------!
; 450	;6:	!           BRX (TEMP -- LOW ORDER HALF OF DOUBLE PREC BR!BRX)            !
; 451	;	!-------------------------------------------------------------------------!
; 452	;7:	!                          ONE (THE CONSTANT 1)                           !
; 453	;	!-------------------------------------------------------------------------!
; 454	;10:	!                        EBR (EXEC BASE REGISTER)                         !
; 455	;	!-------------------------------------------------------------------------!
; 456	;11:	!                        UBR (USER BASE REGISTER)                         !
; 457	;	!-------------------------------------------------------------------------!
; 458	;12:	!           MASK (ONES IN BITS 0-35, ZERO IN -1, -2, 36 AND 37)           !
; 459	;	!-------------------------------------------------------------------------!
; 460	;13:	!          FLG (FLAG BITS)           !           PAGE FAIL CODE           !
; 461	;	!-------------------------------------------------------------------------!
; 462	;14:	!                  PI (PI SYSTEM STATUS REGISTER [RDPI])                  !
; 463	;	!-------------------------------------------------------------------------!
; 464	;15:	!                       XWD1 (1 IN EACH HALF WORD)                        !
; 465	;	!-------------------------------------------------------------------------!
; 466	;16:	!                                T0 (TEMP)                                !
; 467	;	!-------------------------------------------------------------------------!
; 468	;17:	!                                T1 (TEMP)                                !
; 469	;	!=========================================================================!
; 470	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 13
; KS10.MIC[7,3]	14:54 7-JAN-1986				MICROCODE FIELDS -- LISTING FORMAT			

; 471		.TOC	"MICROCODE FIELDS -- LISTING FORMAT"
; 472	
; 473	;								; 3633	1561:
; 474	;								; 3634	SUB:	[AR]_AC-[AR],
; 475	;								; 3635		AD FLAGS, 3T,
; 476	;	U 1561, 1500,2551,0303,0274,4463,7701,4200,0001,0001	; 3636		EXIT
; 477	;	  [--]  [--] !!!! [][] !!![-][][-][]! !!!     [----]
; 478	;	  !     !    !!!! ! !  !!!!  ! !  ! ! !!!        !
; 479	;	  !     !    !!!! ! !  !!!!  ! !  ! ! !!!        +---- # (MAGIC NUMBER)
; 480	;	  !     !    !!!! ! !  !!!!  ! !  ! ! !!!      
; 481	;	  !     !    !!!! ! !  !!!!  ! !  ! ! !!+------------- MULTI PREC, MULTI SHIFT, CALL (4S, 2S, 1S)
; 482	;	  !     !    !!!! ! !  !!!!  ! !  ! ! !!
; 483	;	  !     !    !!!! ! !  !!!!  ! !  ! ! !+-------------- FM WRITE, MEM, DIVIDE (4S, 2S, 1S)
; 484	;	  !     !    !!!! ! !  !!!!  ! !  ! ! !
; 485	;	  !     !    !!!! ! !  !!!!  ! !  ! ! +--------------- CRY38, LOAD SC, LOAD FE (4S, 2S, 1S)
; 486	;	  !     !    !!!! ! !  !!!!  ! !  ! !
; 487	;	  !     !    !!!! ! !  !!!!  ! !  ! +----------------- T
; 488	;	  !     !    !!!! ! !  !!!!  ! !  !
; 489	;	  !     !    !!!! ! !  !!!!  ! !  +------------------- SKIP
; 490	;	  !     !    !!!! ! !  !!!!  ! !
; 491	;	  !     !    !!!! ! !  !!!!  ! +---------------------- DISP
; 492	;	  !     !    !!!! ! !  !!!!  !
; 493	;	  !     !    !!!! ! !  !!!!  +------------------------ SPEC
; 494	;	  !     !    !!!! ! !  !!!!
; 495	;	  !     !    !!!! ! !  !!!+--------------------------- CLOCKS & PARITY (CLKR, GENR, CHKR, CLKL, GENL, CHKL)
; 496	;	  !     !    !!!! ! !  !!!
; 497	;	  !     !    !!!! ! !  !!+---------------------------- DBM
; 498	;	  !     !    !!!! ! !  !!
; 499	;	  !     !    !!!! ! !  !+----------------------------- DBUS
; 500	;	  !     !    !!!! ! !  !
; 501	;	  !     !    !!!! ! !  +------------------------------ RAM ADDRESS
; 502	;	  !     !    !!!! ! !
; 503	;	  !     !    !!!! ! +--------------------------------- B
; 504	;	  !     !    !!!! !
; 505	;	  !     !    !!!! +----------------------------------- A
; 506	;	  !     !    !!!!
; 507	;	  !     !    !!!+------------------------------------- DEST
; 508	;	  !     !    !!!
; 509	;	  !     !    !!+-------------------------------------- RSRC
; 510	;	  !     !    !!
; 511	;	  !     !    !+--------------------------------------- LSRC   ]
; 512	;	  !     !    !                                                ] - AD
; 513	;	  !     !    +---------------------------------------- ALU    ]
; 514	;	  !     !
; 515	;	  !     +--------------------------------------------- J
; 516	;	  !
; 517	;	  LOCATION OF THIS MICRO WORD
; 518	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 14
; KS10.MIC[7,3]	14:54 7-JAN-1986				MICROCODE FIELDS -- DATAPATH CHIP			

; 519	.TOC	"MICROCODE FIELDS -- DATAPATH CHIP"
; 520	
; 521	J/=<0:11>+              ;CRA1
; 522				;NEXT MICROCODE ADDRESS
; 523	
; 524	;ALU FUNCTIONS
; 525	
; 526	;NOTE: THE AD FIELD IS A 2 DIGIT FIELD. THE LEFT DIGIT IS THE
; 527	; 2901 ALU FUNCTION. THE RIGHT DIGIT IS THE 2901 SRC CODE FOR
; 528	; THE LEFT HALF. NORMALY THE RIGHT HALF SRC CODE IS THE SAME AS
; 529	; THE LEFT HALF.
; 530	AD/=<12:17>D,44       ;DPE1 & DPE2
; 531		A+Q=00
; 532		A+B=01
; 533		0+Q=02
; 534		0+B=03
; 535		0+A=04
; 536		D+A=05
; 537		D+Q=06
; 538		0+D=07
; 539		Q-A-.25=10
; 540		B-A-.25=11
; 541		Q-.25=12
; 542		B-.25=13
; 543		A-.25=14
; 544		A-D-.25=15
; 545		Q-D-.25=16
; 546		-D-.25=17
; 547		A-Q-.25=20
; 548		A-B-.25=21
; 549		-Q-.25=22
; 550		-B-.25=23
; 551		-A-.25=24
; 552		D-A-.25=25
; 553		D-Q-.25=26
; 554		D-.25=27
; 555		A.OR.Q=30
; 556		A.OR.B=31
; 557		Q=32
; 558		B=33
; 559		A=34
; 560		D.OR.A=35
; 561		D.OR.Q=36
; 562		D=37
; 563		A.AND.Q=40
; 564		A.AND.B=41
; 565	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 15
; KS10.MIC[7,3]	14:54 7-JAN-1986				MICROCODE FIELDS -- DATAPATH CHIP			

; 566	;MORE ALU FUNCTIONS
; 567	
; 568		ZERO=42
; 569	;	ZERO=43
; 570	;	ZERO=44
; 571		D.AND.A=45
; 572		D.AND.Q=46
; 573	;	ZERO=47
; 574		.NOT.A.AND.Q=50
; 575		.NOT.A.AND.B=51
; 576	;	Q=52
; 577	;	B=53
; 578	;	A=54
; 579		.NOT.D.AND.A=55
; 580		.NOT.D.AND.Q=56
; 581	;	ZERO=57
; 582		A.XOR.Q=60
; 583		A.XOR.B=61
; 584	;	Q=62
; 585	;	B=63
; 586	;	A=64
; 587		D.XOR.A=65
; 588		D.XOR.Q=66
; 589	;	D=67
; 590		A.EQV.Q=70
; 591		A.EQV.B=71
; 592		.NOT.Q=72
; 593		.NOT.B=73
; 594		.NOT.A=74
; 595		D.EQV.A=75
; 596		D.EQV.Q=76
; 597		.NOT.D=77
; 598	
; 599	;THIS FIELD IS THE RIGHTMOST 3 BITS OF THE
; 600	; AD FIELD. IT IS USED ONLY TO DEFAULT THE RSRC 
; 601	; FIELD.
; 602	LSRC/=<15:17>         ;DPE1
; 603	
; 604	;THIS IS THE SOURCE FOR THE RIGHT HALF OF THE
; 605	; DATA PATH. IT LETS US MAKE THE RIGHT AND LEFT
; 606	; HALF WORDS DO SLIGHTLY DIFFERENT THINGS.
; 607	RSRC/=<18:20>F,LSRC	;DPE2
; 608		AQ=0		;A  Q
; 609		AB=1		;A  B
; 610		0Q=2		;0  Q
; 611		0B=3		;0  B
; 612		0A=4		;0  A
; 613		DA=5		;D  A
; 614		DQ=6		;D  Q
; 615		D0=7		;D  0
; 616	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 16
; KS10.MIC[7,3]	14:54 7-JAN-1986				MICROCODE FIELDS -- DATAPATH CHIP			

; 617	;DESTINATION CONTROL
; 618	;SEE DPE1 AND DPE2 (2'S WEIGHT IS INVERTED ON DPE5)
; 619	DEST/=<21:23>D,3      ;DPE1 & DPE2
; 620		A=0		;A REG IS CHIP OUTPUT, AD IS WRITTEN
; 621				; INTO REG FILE
; 622		AD=1		;REG FILE GETS AD
; 623		Q_AD=2		;REG FILE IS NOT LOADED
; 624		PASS=3		;AD OUTPUT IS CHIP OUTPUT
; 625				; Q AND REG FILE LEFT ALONE
; 626		Q_Q*2=4		;ALSO REG FILE GETS AD*2
; 627		AD*2=5		;AND Q IS LEFT ALONE
; 628		Q_Q*.5=6	;ALSO REG FILE GETS AD*.5
; 629		AD*.5=7		;AND Q IS LEFT ALONE
; 630	
; 631	;	<24:25>		;UNUSED
; 632	
; 633	A/=<26:29>            	;DPE1 & DPE2
; 634		MAG=0
; 635		PC=1
; 636		HR=2
; 637		AR=3
; 638		ARX=4
; 639		BR=5
; 640		BRX=6
; 641		ONE=7
; 642		EBR=10
; 643		UBR=11
; 644		MASK=12
; 645		FLG=13
; 646		PI=14
; 647		XWD1=15
; 648		T0=16
; 649		T1=17
; 650	
; 651	;	<30:31>		;UNUSED
; 652	
; 653	B/=<32:35>D,0         ;DPE1 & DPE2
; 654		MAG=0
; 655		PC=1
; 656		HR=2
; 657		AR=3
; 658		ARX=4
; 659		BR=5
; 660		BRX=6
; 661		ONE=7
; 662		EBR=10
; 663		UBR=11
; 664		MASK=12
; 665		FLG=13
; 666		PI=14
; 667		XWD1=15
; 668		T0=16
; 669		T1=17
; 670	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 17
; KS10.MIC[7,3]	14:54 7-JAN-1986				MICROCODE FIELDS -- RAM FILE ADDRESS AND D-BUS		

; 671	.TOC	"MICROCODE FIELDS -- RAM FILE ADDRESS AND D-BUS"
; 672	
; 673	RAMADR/=<36:38>D,4	;DPE6
; 674		AC#=0		;AC NUMBER
; 675		AC*#=1		;AC .FN. #
; 676		XR#=2		;INDEX REGISTER
; 677		VMA=4		;VIRTUAL MEMORY REFERENCE
; 678		RAM=6		;VMA SUPPLIES 10-BIT RAM ADDRESS
; 679		#=7		;ABSOLUTE RAM FILE REFERENCE
; 680	
; 681	;	<39:39>
; 682	
; 683	;LEFT HALF ON DPE3 AND RIGHT HALF ON DPE4
; 684	DBUS/=<40:41>D,1      	;DPE3 & DPE4
; 685		PC FLAGS=0	;PC FLAGS IN LEFT HALF
; 686		PI NEW=0	;NEW PI LEVEL IN BITS 19-21
; 687	;	VMA=0		;VMA IN BITS 27-35
; 688		DP=1		;DATA PATH
; 689		RAM=2		;CACHE, AC'S AND WORKSPACE
; 690		DBM=3		;DBM MIXER
; 691	
; 692	;LEFT HALF ON DPM1 AND RIGHT HALF ON DPM2
; 693	DBM/=<42:44>D,7       	;DPM1 & DPM2
; 694		SCAD DIAG=0	;(LH) SCAD DIAGNOSTIC
; 695		PF DISP=0	;PAGE FAIL DISP IN BITS 18-21
; 696		APR FLAGS=0	;APR FLAGS IN BITS 22-35
; 697		BYTES=1		;5 COPIES OF SCAD 1-7
; 698		EXP=2		;LH=EXPONENT, RH=TIME FRACTION
; 699		DP=3		;DATA PATH
; 700		DP SWAP=4	;DATA PATH SWAPPED
; 701		VMA=5		;VMA FLAGS,,VMA
; 702		MEM=6		;MEMORY BUFFER
; 703		#=7		;NUMBER FIELD IN BOTH HALVES
; 704	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 18
; KS10.MIC[7,3]	14:54 7-JAN-1986				MICROCODE FIELDS -- PARITY GENERATION & HALF WORD CONTROL

; 705	.TOC	"MICROCODE FIELDS -- PARITY GENERATION & HALF WORD CONTROL"
; 706	
; 707	AD PARITY OK/=<108>D,0  ;**NOT STORED IN CRAM**
; 708				;THIS BIT IS A 1 IF THE ALU IS DOING
; 709					; SOMETHING WHICH DOES NOT INVALIDATE
; 710					; PARITY. IT DOES NOT APPEAR IN THE
; 711					; REAL MACHINE. WE JUST USE IT TO SET
; 712					; THE DEFAULT FOR GENR & GENL
; 713	
; 714	CLKL/=<45:45>D,1        ;DPE5
; 715				;CLOCK THE LEFT HALF OF THE MACHINE
; 716	GENL/=<46:46>F,AD PARITY OK ;DPE4 FROM CRM2 PARITY EN LEFT H
; 717				;STORE PARITY FOR 2901 LEFT
; 718	CHKL/=<47:47>           ;DPE4 FROM CRM2 PARITY CHK LEFT H
; 719				;CHECK LEFT HALF DBUS PARITY
; 720	
; 721	CLKR/=<48:48>D,1        ;DPE5
; 722				;CLOCK THE RIGHT HALF OF THE MACHINE
; 723	GENR/=<49:49>F,AD PARITY OK ;DPE4 FROM CRM2 PARITY EN RIGHT H
; 724				;STORE PARITY FOR 2901 RIGHT
; 725	CHKR/=<50:50>           ;DPE4 FROM CRM2 PARITY CHK RIGHT H
; 726				;CHECK RIGHT HALF DBUS PARITY
; 727	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 19
; KS10.MIC[7,3]	14:54 7-JAN-1986				MICROCODE FIELDS -- SPEC				

; 728	.TOC	"MICROCODE FIELDS -- SPEC"
; 729	
; 730	
; 731	;
; 732	;THE FOLLOWING SPECIAL FUNCTION ARE DECODED ON DPE1, DPE5, AND DPMA:
; 733	;	!=========================================================================!
; 734	;	!S!     EFFECT      !    CRA6 SPEC    !    CRA6 SPEC    !    CRA6 SPEC    !
; 735	;	!P!    ON SHIFT     !      EN 40      !      EN 20      !      EN 10      !
; 736	;	!E!      PATHS      !  E102 ON DPE5   !  E101 ON DPE5   !  E410 ON DPMA   !
; 737	;	!C!   (SEE DPE1)    !                 !  E411 ON DPMA   !  E113 ON CRA2   !
; 738	;	!=========================================================================!
; 739	;	!0!     NORMAL      !   CRY 18 INH    !    PREVIOUS     !        #        !
; 740	;	!-------------------------------------------------------------------------!
; 741	;	!1!      ZERO       !     IR LOAD     !     XR LOAD     !   CLR 1 MSEC    !
; 742	;	!-------------------------------------------------------------------------!
; 743	;	!2!      ONES       !     <SPARE>     !     <SPARE>     !  CLR IO LATCH   !
; 744	;	!-------------------------------------------------------------------------!
; 745	;	!3!       ROT       !     PI LOAD     !    APR FLAGS    !   CLR IO BUSY   !
; 746	;	!-------------------------------------------------------------------------!
; 747	;	!4!      ASHC       !    ASH TEST     !    SET SWEEP    !   PAGE WRITE    !
; 748	;	!-------------------------------------------------------------------------!
; 749	;	!5!      LSHC       !    EXP TEST     !     APR EN      !     NICOND      !
; 750	;	!-------------------------------------------------------------------------!
; 751	;	!6!       DIV       !    PC FLAGS     !    PXCT OFF     !     PXCT EN     !
; 752	;	!-------------------------------------------------------------------------!
; 753	;	!7!      ROTC       !  AC BLOCKS EN   !     MEM CLR     !    MEM WAIT     !
; 754	;	!=========================================================================!
; 755	; THE DPM BOARD USES THE SPEC FIELD TO CONTROL THE
; 756	;  DBM MIXER, AS FOLLOWS:
; 757	;
; 758	;	!=====================================!
; 759	;	!  S  !                               !
; 760	;	!  P  !        ACTION WHEN DBM        !
; 761	;	!  E  !          SELECTS DP           !
; 762	;	!  C  ! GET DP BITS  !  GET SCAD 1-7  !
; 763	;	!=====================================!
; 764	;	!  0  !     ALL      !      NONE      !
; 765	;	!-------------------------------------!
; 766	;	!  1  !     7-35     !      0-6       !
; 767	;	!-------------------------------------!
; 768	;	!  2  !0-6 AND 14-35 !      7-13      !
; 769	;	!-------------------------------------!
; 770	;	!  3  !0-13 AND 21-35!     14-20      !
; 771	;	!-------------------------------------!
; 772	;	!  4  !0-20 AND 28-35!     21-27      !
; 773	;	!-------------------------------------!
; 774	;	!  5  ! 0-27 AND 35  !     28-34      !
; 775	;	!-------------------------------------!
; 776	;	!  6  !         SAME AS ZERO          !
; 777	;	!-------------------------------------!
; 778	;	!  7  !         SAME AS ZERO          !
; 779	;	!=====================================!
; 780	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 20
; KS10.MIC[7,3]	14:54 7-JAN-1986				MICROCODE FIELDS -- SPEC				

; 781	;THE SPEC FIELD IS DEFINED AS A 6-BIT FIELD. THE TOP 3 BITS
; 782	; ARE SPEC SEL A, SPEC SEL B, AND SPEC SEL C. THE LOW 3 BITS ARE
; 783	; THE SELECT CODE.
; 784	
; 785	SPEC/=<51:56>D,0      	;DPE1 & DPE5 & DPM1 & DPMA
; 786		#=10		;DECODE # BITS 
; 787		CLRCLK=11	;CLEAR 1MS NICOND FLAG
; 788		CLR IO LATCH=12	;CLEAR IO LATCH
; 789		CLR IO BUSY=13	;CLEAR IO BUSY
; 790		LDPAGE=14	;WRITE PAGE TABLE
; 791		NICOND=15	;DOING NICOND DISPATCH
; 792		LDPXCT=16	;LOAD PXCT FLAGS
; 793		WAIT=17		;MEM WAIT
; 794		PREV=20		;FORCE PREVIOUS CONTEXT
; 795		LOADXR=21	;LOAD XR #, USES PXCT FIELD TO SELECT 
; 796				; CORRECT AC BLOCK
; 797		APR FLAGS=23	;LOAD APR FLAGS
; 798		CLRCSH=24	;CLEAR CACHE
; 799		APR EN=25	;SET APR ENABLES
; 800		MEMCLR=27	;CLEAR PAGE FAULT CONDITION
; 801		SWEEP=34	;SET SWEEP
; 802		PXCT OFF=36	;TURN OFF THE EFFECT OF PXCT
; 803		INHCRY18=40	;INHIBIT CARRY INTO LEFT HALF
; 804		LOADIR=41	;LOAD THE IR
; 805		LDPI=43		;LOAD PI SYSTEM
; 806		ASHOV=44	;TEST RESULT OF ASH
; 807		EXPTST=45	;TEST RESULT OF FLOATING POINT
; 808		FLAGS=46	;CHANGE PC FLAGS
; 809		LDACBLK=47	;LOAD AC BLOCK NUMBERS
; 810		LDINST=61	;LOAD INSTRUCTION
; 811	
; 812	;THE SPEC FIELD IS REDEFINED WHEN USED FOR BYTE MODE STUFF
; 813	BYTE/=<54:56>         	;DPM1 (SPEC SEL)
; 814		BYTE1=1
; 815		BYTE2=2
; 816		BYTE3=3
; 817		BYTE4=4
; 818		BYTE5=5
; 819	
; 820	;THE SPEC FIELD IS REDEFINED WHEN USED TO CONTROL SHIFT PATHS
; 821	SHSTYLE/=<54:56>      	;DPE1 (SPEC SEL)
; 822		NORM=0		;2 40-BIT REGISTERS
; 823		ZERO=1		;SHIFT ZERO INTO 36 BITS (ASH TOP 2901)
; 824		ONES=2		;SHIFT IN ONES
; 825		ROT=3		;ROTATE
; 826		ASHC=4		;ASHC
; 827		LSHC=5		;LSHC
; 828		DIV=6		;SPECIAL DIVIDE
; 829		ROTC=7		;ROTATE DOUBLE
; 830	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 21
; KS10.MIC[7,3]	14:54 7-JAN-1986				MICROCODE FIELDS -- DISPATCH				

; 831	.TOC	"MICROCODE FIELDS -- DISPATCH"
; 832	;	!=======================================================!
; 833	;	! D !      CRA1      !      CRA1      !      DPEA       !
; 834	;	! I !      DISP      !      DISP      !      DISP       !
; 835	;	! S !       10       !       20       !       40        !
; 836	;	! P !                !                !                 !
; 837	;	!=======================================================!
; 838	;	! 0 !    DIAG ADR    !    DIAG ADR    !        0        !
; 839	;	!-------------------------------------------------------!
; 840	;	! 1 !     RETURN     !     RETURN     !    DP 18-21     !
; 841	;	!-------------------------------------------------------!
; 842	;	! 2 !    MULTIPLY    !       J        !        J        !
; 843	;	!-------------------------------------------------------!
; 844	;	! 3 !   PAGE FAIL    !     AREAD     !     AREAD      !
; 845	;	!-------------------------------------------------------!
; 846	;	! 4 !     NICOND     !   NOT USABLE   !      NORM       !
; 847	;	!-------------------------------------------------------!
; 848	;	! 5 !      BYTE      !   NOT USABLE   !    DP 32-35     !
; 849	;	!-------------------------------------------------------!
; 850	;	! 6 !    EA MODE     !   NOT USABLE   !     DROM A      !
; 851	;	!-------------------------------------------------------!
; 852	;	! 7 !      SCAD      !   NOT USABLE   !     DROM B      !
; 853	;	!=======================================================!
; 854	;NOTE:	DISP EN 40 & DISP EN 10 ONLY CONTROL THE LOW 4 BITS OF THE
; 855	;	JUMP ADDRESS. DISP EN 20 ONLY CONTROLS THE HI 7 BITS. TO DO
; 856	;	SOMETHING TO ALL 11 BITS BOTH 20 & 40 OR 20 & 10 MUST BE ENABLED.
; 857	
; 858	DISP/=<57:62>D,70     	;CRA1 & DPEA
; 859		CONSOLE=00	;CONSOLE DISPATCH
; 860		DROM=12		;DROM
; 861		AREAD=13	;AREAD
; 862		DP LEFT=31	;DP 18-21
; 863		NORM=34		;NORMALIZE
; 864		DP=35		;DP 32-35
; 865		ADISP=36	;DROM A FIELD
; 866		BDISP=37	;DROM B FIELD
; 867		RETURN=41	;RETURN
; 868		MUL=62		;MULTIPLY
; 869		PAGE FAIL=63	;PAGE FAIL
; 870		NICOND=64	;NEXT INSTRUCTION DISPATCH
; 871		BYTE=65		;BYTE SIZE AND POSITION
; 872		EAMODE=66	;EFFECTIVE ADDRESS MODE
; 873		SCAD0=67	;J!2 IF SCAD BIT 0 = 1
; 874	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 22
; KS10.MIC[7,3]	14:54 7-JAN-1986				MICROCODE FIELDS -- SKIP				

; 875	.TOC	"MICROCODE FIELDS -- SKIP"
; 876	;	!=======================================================!
; 877	;	! S !      CRA2      !      DPEA      !      DPEA       !
; 878	;	! K !      SKIP      !      SKIP      !      SKIP       !
; 879	;	! I !       10       !       20       !       40        !
; 880	;	! P !                !                !                 !
; 881	;	!=======================================================!
; 882	;	! 0 !       0        !       0        !        0        !
; 883	;	!-------------------------------------------------------!
; 884	;	! 1 !   TRAP CYCLE   !     CRY 02     !    CARRY OUT    !
; 885	;	!-------------------------------------------------------!
; 886	;	! 2 !      AD=0      !    ADL SIGN    !      ADL=0      !
; 887	;	!-------------------------------------------------------!
; 888	;	! 3 !    SC SIGN     !    ADR SIGN    !      ADR=0      !
; 889	;	!-------------------------------------------------------!
; 890	;	! 4 !    EXECUTE     !    USER IOT    !      -USER      !
; 891	;	!-------------------------------------------------------!
; 892	;	! 5 !  -BUS IO BUSY  !   JFCL SKIP    !    FPD FLAG     !
; 893	;	!-------------------------------------------------------!
; 894	;	! 6 !   -CONTINUE    !     CRY 01     !  AC # IS ZERO   !
; 895	;	!-------------------------------------------------------!
; 896	;	! 7 !    -1 MSEC     !      TXXX      !  INTERRUPT REQ  !
; 897	;	!=======================================================!
; 898	
; 899	SKIP/=<63:68>D,70     	;CRA2 & DPEA
; 900		IOLGL=04	;(.NOT.USER)!(USER IOT)!(CONSOLE EXECUTE MODE)
; 901		LLE=12		;AD LEFT .LE. 0
; 902		CRY0=31		;AD CRY -2
; 903		ADLEQ0=32	;ADDER LEFT = 0
; 904		ADREQ0=33	;ADDER RIGHT = 0
; 905		KERNEL=34	;.NOT. USER
; 906		FPD=35		;FIRST PART DONE
; 907		AC0=36		;AC NUMBER IS ZERO
; 908		INT=37		;INTERRUPT REQUEST
; 909		LE=42		;(AD SIGN)!(AD.EQ.0)
; 910		CRY2=51		;AD CRY 02
; 911		DP0=52		;AD SIGN
; 912		DP18=53		;AD BIT 18
; 913		IOT=54		;USER IOT
; 914		JFCL=55		;JFCL SKIP
; 915		CRY1=56		;AD CRY 1
; 916		TXXX=57		;TEST INSTRUCTION SHOULD SKIP
; 917		TRAP CYCLE=61	;THIS INSTRUCTION IS THE RESULT OF A
; 918				; TRAP 1, 2, OR 3
; 919		ADEQ0=62	;AD.EQ.0
; 920		SC=63		;SC SIGN BIT
; 921		EXECUTE=64	;CONSOLE EXECUTE MODE
; 922		-IO BUSY=65	;.NOT. I/O LATCH
; 923		-CONTINUE=66	;.NOT. CONTINUE
; 924		-1 MS=67	;.NOT. 1 MS. TIMER
; 925	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 23
; KS10.MIC[7,3]	14:54 7-JAN-1986				MICROCODE FIELDS -- TIME CONTROL			

; 926	.TOC	"MICROCODE FIELDS -- TIME CONTROL"
; 927	
; 928	DT/=<109:111>D,0        ;**NOT STORED IN CRAM**
; 929				;DEFAULT TIME FIELD (USED IN MACROS)
; 930				; CAN BE OVERRIDDEN IN MACRO CALL
; 931		2T=0
; 932		3T=1
; 933		4T=2
; 934		5T=3
; 935	
; 936	
; 937	T/=<69:71>F,DT          ;CSL5 (E601)
; 938				;CLOCK TICKS MINUS TWO REQUIRED TO
; 939				; DO A MICRO INSTRUCTION
; 940		2T=0		;TWO TICKS
; 941		3T=1		;THREE TICKS
; 942		4T=2		;FOUR TICKS
; 943		5T=3		;FIVE TICKS
; 944	
; 945	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 24
; KS10.MIC[7,3]	14:54 7-JAN-1986				MICROCODE FIELDS -- RANDOM CONTROL BITS			

; 946	.TOC	"MICROCODE FIELDS -- RANDOM CONTROL BITS"
; 947	
; 948	CRY38/=<72>             ;DPE5
; 949				;INJECT A CARRY INTO THE 2901 ADDER
; 950	LOADSC/=<73>            ;DPM4
; 951				;LOAD THE STEP COUNTER FROM THE SCAD
; 952	LOADFE/=<74>            ;DPM4
; 953				;LOAD THE FE REGISTER FROM THE SCAD
; 954	FMWRITE/=<75>           ;DPE5 (E302)
; 955				;WRITE THE RAM FILE.
; 956	MEM/=<76>               ;DPM5 (E612) & DPE5 (E205)
; 957				;START (OR COMPLETE) A MEMORY OR I/O CYCLE UNDER
; 958				; CONTROL OF THE NUMBER FIELD.
; 959	DIVIDE/=<77>            ;DPE5
; 960				;THIS MICROINSTRUCTION IS DOING A DIVIDE
; 961	MULTI PREC/=<78>        ;DPE5
; 962				;MULTIPRECISION STEP IN DIVIDE, DFAD, DFSB
; 963	MULTI SHIFT/=<79>       ;CSL5 (HAS NOTHING TO DO WITH DPE5 MULTI SHIFT)
; 964				;FAST SHIFT
; 965	CALL/=<80>              ;CRA2 (STACK IS ON CRA3)
; 966				;THIS IS A CALL
; 967	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 25
; KS10.MIC[7,3]	14:54 7-JAN-1986				MICROCODE FIELDS -- NUMBER FIELD			

; 968	.TOC	"MICROCODE FIELDS -- NUMBER FIELD"
; 969	
; 970	;HERE IS THE GENERAL FIELD
; 971	#/=<90:107>           	;MANY PLACES
; 972	
; 973	;# REDEFINED WHEN USED AS SCAD CONTROL:
; 974	SCAD/=<90:92>         	;DPM3
; 975		A*2=0
; 976		A.OR.B=1
; 977		A-B-1=2
; 978		A-B=3
; 979		A+B=4
; 980		A.AND.B=5
; 981		A-1=6
; 982		A=7
; 983	SCADA/=<93:95>        	;DPM3
; 984		SC=0
; 985		S#=1
; 986		PTR44=2	;44 AND BIT 6 (SEE DPM3)
; 987		BYTE1=3
; 988		BYTE2=4
; 989		BYTE3=5
; 990		BYTE4=6
; 991		BYTE5=7
; 992	SCADB/=<96:97>        	;DPM3
; 993		FE=0
; 994		EXP=1
; 995		SHIFT=2
; 996		SIZE=3
; 997	S#/=<98:107>          	;DPM3
; 998	
; 999	;# REDEFINED WHEN USED AS STATE REGISTER CONTROL:
; 1000	STATE/=<90:107>         ;NOT USED BY HARDWARE
; 1001		SIMPLE=0	;SIMPLE INSTRUCTIONS
; 1002		BLT=1		;BLT IN PROGRESS
; 1003		MAP=400002	;MAP IN PROGRESS
; 1004		SRC=3		;MOVE STRING SOURCE IN PROGRESS
; 1005		DST=4		;MOVE STRING FILL IN PROGRESS
; 1006		SRC+DST=5	;MOVE STRING DEST IN PROGRESS
; 1007		DSTF=6		;FILLING DEST
; 1008		CVTDB=7		;CONVERT DEC TO BIN
; 1009		COMP-DST=10	;COMPARE DEST
; 1010		EDIT-SRC=11	;EDIT SOURCE
; 1011		EDIT-DST=12	;EDIT DEST
; 1012		EDIT-S+D=13	;BOTH SRC AND DST POINTERS
; 1013	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 26
; KS10.MIC[7,3]	14:54 7-JAN-1986				MICROCODE FIELDS -- NUMBER FIELD			

; 1014	;# REDEFINED WHEN USED AS WORSPACE ADDRESS
; 1015	
; 1016	WORK/=<98:107>        	;DPE6
; 1017		BADW0=160	;AC BLK 7 WORD 0 (BAD DATA FROM MEMORY)
; 1018		BADW1=161	;AC BLK 7 WORD 1 (BAD DATA FROM MEMORY)
; 1019		MUL=200		;TEMP FOR MULTIPLY
; 1020		DIV=201		;TEMP FOR DIVIDE
; 1021		SV.VMA=210	;SAVE VMA
; 1022		SV.AR=211	;SAVE AR
; 1023		SV.ARX=212	;SAVE ARX
; 1024		SV.BR=213	;SAVE BR
; 1025		SV.BRX=214	;SAVE BRX
; 1026		SBR=215		;SPT BASE REGISTER
; 1027		CBR=216		;CST BASE ADDRESS
; 1028		CSTM=217	;CST MASK
; 1029		PUR=220		;PROCESS USE REGISTER
; 1030		ADJP=221	;"P" FOR ADJBP
; 1031		ADJS=222	;"S" FOR ADJBP
; 1032		ADJPTR=223	;BYTE POINTER FOR ADJBP
; 1033		ADJQ1=224	;TEMP FOR ADJBP
; 1034		ADJR2=225	;TEMP FOR ADJBP
; 1035		ADJBPW=226	;(BYTES/WORD) FOR ADJBP
; 1036		HSBADR=227	;ADDRESS OF HALT STATUS BLOCK
; 1037		APR=230		;APR ENABLES
; 1038	;THE FOLLOWING WORDS ARE USED BY EXTEND INSTRUCTION
; 1039		E0=240		;ORIGINAL EFFECTIVE ADDRESS
; 1040		E1=241		;EFFECTIVE ADDRESS OF WORD AT E0
; 1041		SLEN=242	;SOURCE LENGTH
; 1042		MSK=243		;BYTE MASK
; 1043		FILL=244	;FILL BYTE
; 1044		CMS=245		;SRC BYTE IN STRING COMPARE
; 1045		FSIG=246	;PLACE TO SAVE ARX WHILE STORING
; 1046				; THE FLOAT CHAR
; 1047		BDH=247		;BINARY BEING CONVERTED TO
; 1048		BDL=250		; DECIMAL
; 1049	
; 1050	;TIMER STUFF
; 1051		TIME0=300	;HIGH ORDER 36 BITS OF TIME
; 1052		TIME1=301	;LOW ORDER 36 BITS OF TIME
; 1053		PERIOD=302	;INTERRUPT PERIOD
; 1054		TTG=303		;TIME TO GO TO NEXT INTERRUPT
; 1055	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 27
; KS10.MIC[7,3]	14:54 7-JAN-1986				MICROCODE FIELDS -- NUMBER FIELD			

; 1056	;DDIV STUFF
; 1057		AC0=314
; 1058		AC1=315
; 1059		AC2=316
; 1060		AC3=317
; 1061		DDIV SGN=320
; 1062		DVSOR H=321
; 1063		DVSOR L=322
; 1064	;POWERS OF TEN
; 1065		DECLO=344	;LOW WORD
; 1066		DECHI=373	;HIGH WORD
; 1067	
; 1068		YSAVE=422	;Y OF LAST INDIRECT POINTER
; 1069		PTA.E=423	;ADDRESS OF EXEC PAGE MAP (NOT PROCESS TABLE)
; 1070		PTA.U=424	;ADDRESS OF USER PAGE MAP
; 1071		TRAPPC=425	;SAVED PC FROM TRAP CYCLE
; 1072		SV.AR1=426	;ANOTHER PLACE TO SAVE AR
; 1073	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 28
; KS10.MIC[7,3]	14:54 7-JAN-1986				MICROCODE FIELDS -- NUMBER FIELD			

; 1074	;# REDEFINED WHEN USED AS PC FLAG CONTROL (ALL ON DPE9)
; 1075	
; 1076	SETOV/=<90>             ;DPE9
; 1077				;SET ARITHMETIC OVERFLOW
; 1078	SETFOV/=<91>            ;SET FLOATING OVERFLOW
; 1079	SETNDV/=<92>            ;SET NO DIVIDE
; 1080	
; 1081	;---------------------------------------------------------------------
; 1082	
; 1083	CLRFPD/=<93>            ;CLEAR FIRST PART DONE
; 1084	SETFPD/=<94>            ;SET FIRST PART DONE
; 1085	HOLD USER/=<95>         ;WHEN THIS BIT IS SET IT:
; 1086				; 1. PREVENTS SETTING USER IOT IN USER MODE
; 1087				; 2. PREVENTS CLEARING USER IN USER MODE
; 1088	
; 1089	;---------------------------------------------------------------------
; 1090	
; 1091	;	<96>		;SPARE
; 1092	TRAP2/=<97>             ;SET TRAP 2
; 1093	TRAP1/=<98>             ;SET TRAP 1
; 1094	
; 1095	;---------------------------------------------------------------------
; 1096	
; 1097	LD PCU/=<99>            ;LOAD PCU FROM USER
; 1098	;	<100>		;SPARE
; 1099	;	<101>		;SPARE
; 1100	
; 1101	;---------------------------------------------------------------------
; 1102	
; 1103	;	<102>		;SPARE
; 1104	;	<103>		;SPARE
; 1105	JFCLFLG/=<104>          ;DO A JFCL INSTRUCTION
; 1106	
; 1107	;---------------------------------------------------------------------
; 1108	
; 1109	LD FLAGS/=<105>         ;LOAD FLAGS FROM DP
; 1110	;	<106>
; 1111	ADFLGS/=<107>           ;UPDATE CARRY FLAGS
; 1112	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 29
; KS10.MIC[7,3]	14:54 7-JAN-1986				MICROCODE FIELDS -- NUMBER FIELD			

; 1113	;# REDEFINED WHEN USED AS MEMORY CYCLE CONTROL
; 1114	
; 1115	FORCE USER/=<90>        ;FORCE USER MODE REFERENCE
; 1116	FORCE EXEC/=<91>        ;FORCE EXEC MODE REFERENCE
; 1117				; (DOES NOT WORK UNDER PXCT)
; 1118	FETCH/=<92>             ;THIS IS AN INSTRUCTION FETCH
; 1119	
; 1120	;---------------------------------------------------------------------
; 1121	
; 1122	READ CYCLE/=<93>        ;SELECT A READ CYCLE
; 1123	WRITE TEST/=<94>        ;PAGE FAILE IF NOT WRITTEN
; 1124	WRITE CYCLE/=<95>       ;SELECT A MEMORY WRITE CYCLE
; 1125	
; 1126	;---------------------------------------------------------------------
; 1127	
; 1128	;	<96>		;SPARE BIT
; 1129	DONT CACHE/=<97>        ;DO NOT LOOK IN CACHE
; 1130	PHYSICAL/=<98>          ;DO NOT INVOKE PAGING HARDWARE
; 1131	
; 1132	;---------------------------------------------------------------------
; 1133	
; 1134	PXCT/=<99:101>          ;WHICH PXCT BITS TO LOOK AT
; 1135		CURRENT=0
; 1136		E1=1
; 1137		D1=3
; 1138		BIS-SRC-EA=4
; 1139		E2=5
; 1140		BIS-DST-EA=6
; 1141		D2=7
; 1142	
; 1143	;---------------------------------------------------------------------
; 1144	
; 1145	AREAD/=<102>            ;LET DROM SELECT SYSLE TYPE AND VMA LOAD
; 1146	DP FUNC/=<103>          ;IGNORE # BITS 0-11 AND USE DP 0-13 INSTEAD
; 1147				; DP9 MEANS "FORCE PREVIOUS"
; 1148	LDVMA/=<104>            ;LOAD THE VMA
; 1149	
; 1150	;---------------------------------------------------------------------
; 1151	
; 1152	EXT ADR/=<105>          ;PUT VMA BITS 14-17 ONTO BUS
; 1153	WAIT/=<106>             ;START A MEMORY OR I/O CYCLE
; 1154	BWRITE/=<107>           ;START A MEMORY CYCLE IF DROM ASKS FOR IT
; 1155	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 30
; KS10.MIC[7,3]	14:54 7-JAN-1986				MICROCODE FIELDS -- NUMBER FIELD			

; 1156	;THESE BITS ARE USED ONLY TO SETUP DP FOR A DP FUNCTION
; 1157	
; 1158	;	<99>		;PREVIOUS
; 1159	IO CYCLE/=<100>         ;THIS IS AN I/O CYCLE
; 1160	WRU CYCLE/=<101>        ;WHO ARE YOU CYCLE
; 1161	
; 1162	;---------------------------------------------------------------------
; 1163	
; 1164	VECTOR CYCLE/=<102>     ;READ INTERRUPT VECTOR
; 1165	IO BYTE/=<103>          ;BYTE CYCLE
; 1166	;	<104>
; 1167	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 31
; KS10.MIC[7,3]	14:54 7-JAN-1986				MICROCODE FIELDS -- NUMBER FIELD			

; 1168	;# REDEFINED WHEN USED AS PI RIGHT BITS
; 1169	PI.ZER/=<90:92>         ;ZEROS
; 1170	PI.IP1/=<93>            ;PI 1 IN PROG
; 1171	PI.IP2/=<94>
; 1172	PI.IP3/=<95>
; 1173	PI.IP4/=<96>
; 1174	PI.IP5/=<97>
; 1175	PI.IP6/=<98>
; 1176	PI.IP7/=<99>
; 1177	PI.ON/=<100>            ;SYSTEM IS ON
; 1178	PI.CO1/=<101>           ;CHAN 1 IS ON
; 1179	PI.CO2/=<102>
; 1180	I.CO3/=<103>
; 1181	I.CO4/=<104>
; 1182	I.CO5/=<105>
; 1183	I.CO6/=<106>
; 1184	I.CO7/=<107>
; 1185	
; 1186	;# REDEFINED WHEN USED AS WRPI DATA
; 1187	PI.MBZ/=<90:93>         ;MUST BE ZERO
; 1188	PI.DIR/=<94>            ;DROP INTERRUPT REQUESTS
; 1189	PI.CLR/=<95>            ;CLEAR SYSTEM
; 1190	PI.REQ/=<96>            ;REQUEST INTERRUPT
; 1191	PI.TCN/=<97>            ;TURN CHANNEL ON
; 1192	PI.TCF/=<98>            ;TURN CHANNEL OFF
; 1193	PI.TSF/=<99>            ;TURN SYSTEM OFF
; 1194	PI.TSN/=<100>           ;TURN SYSTEM ON
; 1195	PI.SC1/=<101>           ;SELECT CHANNEL 1
; 1196	PI.SC2/=<102>
; 1197	PI.SC3/=<103>
; 1198	PI.SC4/=<104>
; 1199	PI.SC5/=<105>
; 1200	PI.SC6/=<106>
; 1201	PI.SC7/=<107>
; 1202	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 32
; KS10.MIC[7,3]	14:54 7-JAN-1986				MICROCODE FIELDS -- NUMBER FIELD			

; 1203	;# REDEFINED WHEN USED AS AC CONTROL
; 1204	
; 1205	
; 1206	;THIS FIELD CONTROLS THE INPUT TO A 74LS181 ON DPE6. THE NUMBER
; 1207	; FIELD HAS THIS FORMAT IN <98:107>:
; 1208	;
; 1209	;	!-----!-----!-----!-----!-----!-----!-----!-----!-----!-----!
; 1210	;	!CARRY! S8  !  S4 ! S2  !  S1 ! MODE! B8  ! B4  !  B2 ! B1  !
; 1211	;	!  IN !       FUNCTION        !     !      DATA INPUTS      !
; 1212	;	!-----!-----------------------!-----!-----------------------!
; 1213	;
; 1214	
; 1215	ACALU/=<98:103>       	
; 1216		B=25
; 1217		AC+N=62
; 1218	ACN/=<104:107>
; 1219				;AC NAMES FOR STRING INSTRUCTIONS
; 1220		SRCLEN=0	;SOURCE LENGTH
; 1221		SRCP=1		;SOURCE POINTER
; 1222		DLEN=3		;DEST LENGTH
; 1223		DSTP=4		;DEST POINTER
; 1224		MARK=3		;POINTER TO MARK
; 1225		BIN0=3		;HIGH WORD OF BINARY
; 1226		BIN1=4		;LOW WORD OF BINARY
; 1227	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 33
; KS10.MIC[7,3]	14:54 7-JAN-1986				MICROCODE FIELDS -- NUMBER FIELD			

; 1228	;# FIELD REDEFINED WHEN USE AS APRID DATA
; 1229	MICROCODE OPTIONS/=<90:98>
; 1230	;100	- NON-STANDARD MICROCODE
; 1231	;200	- NO CST AT ALL
; 1232	;400	- INHIBIT CST UPDATE IS AVAILABLE
; 1233	;040	- UBABLT INSTRUCTIONS ARE PRESENT
; 1234	;020	- KI PAGING IS PRESENT
; 1235	;010	- KL PAGING IS PRESENT
; 1236	MICROCODE OPTION(INHCST)/=<90>
;;1237	.IF/INHCST
;;1238		OPT=1
; 1239	.IFNOT/INHCST
; 1240		OPT=0
; 1241	.ENDIF/INHCST
; 1242	MICROCODE OPTION(NOCST)/=<91>
;;1243	.IF/NOCST
;;1244		OPT=1
; 1245	.IFNOT/NOCST
; 1246		OPT=0
; 1247	.ENDIF/NOCST
; 1248	MICROCODE OPTION(NONSTD)/=<92>
;;1249	.IF/NONSTD
;;1250		OPT=1
; 1251	.IFNOT/NONSTD
; 1252		OPT=0
; 1253	.ENDIF/NONSTD
; 1254	MICROCODE OPTION(UBABLT)/=<93>
;;1255	.IF/UBABLT
;;1256		OPT=1
; 1257	.IFNOT/UBABLT
; 1258		OPT=0
; 1259	.ENDIF/UBABLT
; 1260	MICROCODE OPTION(KIPAGE)/=<94>
; 1261	.IF/KIPAGE
; 1262		OPT=1
;;1263	.IFNOT/KIPAGE
;;1264		OPT=0
; 1265	.ENDIF/KIPAGE
; 1266	MICROCODE OPTION(KLPAGE)/=<95>
; 1267	.IF/KLPAGE
; 1268		OPT=1
;;1269	.IFNOT/KLPAGE
;;1270		OPT=0
; 1271	.ENDIF/KLPAGE
; 1272	
; 1273	MICROCODE VERSION/=<99:107>
; 1274		UCV=130
; 1275	
; 1276	MICROCODE RELEASE(MAJOR)/=<99:104>
; 1277		UCR=2		;MAJOR VERSION NUMBER (1,2,3,....)
; 1278	
; 1279	MICROCODE RELEASE(MINOR)/=<105:107>
; 1280		UCR=0		;MINOR VERSION NUMBER (.1,.2,.3,...)
; 1281	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 34
; KS10.MIC[7,3]	14:54 7-JAN-1986				MICROCODE FIELDS -- NUMBER FIELD			

; 1282	;# FIELD REDEFINED WHEN USED AS A HALT CODE
; 1283	
; 1284	HALT/=<90:107>
; 1285				;CODES 0 TO 77 ARE "NORMAL" HALTS
; 1286		POWER=0		;POWER UP
; 1287		HALT=1		;HALT INSTRUCTION
; 1288		CSL=2		;CONSOLE HALT
; 1289				;CODES 100 TO 777 ARE SOFTWARE ERRORS
; 1290		IOPF=100	;I/O PAGE FAIL
; 1291		ILLII=101	;ILLEGAL INTERRUPT INSTRUCTION
; 1292		ILLINT=102	;BAD POINTER TO UNIBUS INTERRUPT VECTOR
; 1293				;CODES 1000 TO 1777 ARE HARDWARE ERRORS
; 1294		BW14=1000	;ILLEGAL BWRITE FUNCTION (BAD DROM)
; 1295		NICOND 5=1004	;ILLEGAL NICOND DISPATCH
; 1296		MULERR=1005	;VALUE COMPUTED FOR 10**21 WAS WRONG
;;1297	.IFNOT/FULL
;;1298		PAGEF=1777	;PAGE FAIL IN SMALL MICROCODE
; 1299	.ENDIF/FULL
; 1300	
; 1301	
; 1302	
; 1303	;# FIELD REDEFINED WHEN USED AS FLG BITS
; 1304	
; 1305	FLG.W/=<94>             ;W BIT FROM PAGE MAP
; 1306	FLG.PI/=<95>            ;PI CYCLE
; 1307	FLG.C/=<96>             ;CACHE BIT FROM PAGE MAP
; 1308	FLG.SN/=<97>		;SPECIAL NEGATE IN FDV & DFDV
; 1309	
; 1310	;RIGHT HALF OF FLG USED TO RECOVER FROM PAGE FAILS
; 1311	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 35
; KS10.MIC[7,3]	14:54 7-JAN-1986				DISPATCH ROM DEFINITIONS				

; 1312	.TOC	"DISPATCH ROM DEFINITIONS"
; 1313	
; 1314	;ALL ON DPEA
; 1315	
; 1316		.DCODE
; 1317	A/=<2:5>                ;OPERAND FETCH MODE
; 1318		READ=0		;READ
; 1319		WRITE=1		;WRITE
; 1320		DREAD=2		;DOUBLE READ
; 1321		DBLAC=3		;DOUBLE AC
; 1322		SHIFT=4		;SIMPLE SHIFT
; 1323		DSHIFT=5	;DOUBLE SHIFT
; 1324		FPI=6		;FLOATING POINT IMMEDIATE
; 1325		FP=7		;FLOATING POINT
; 1326		RD-PF=10	;READ, THEN START PREFETCH
; 1327		DFP=11		;DOUBLE FLOATING POINT
; 1328		IOT=12		;CHECK FOR IO LEGAL THEN SAME AS I
; 1329	
; 1330	B/=<8:11>               ;STORE RESULTS AS
; 1331		SELF=4		;SELF
; 1332		DBLAC=5		;DOUBLE AC
; 1333		DBLB=6		;DOUBLE BOTH
; 1334		AC=15		;AC
; 1335		MEM=16		;MEMORY
; 1336		BOTH=17		;BOTH
; 1337	
; 1338	;B-FIELD WHEN USED IN FLOATING POINT OPERATIONS
; 1339	ROUND/=<8>              ;ROUND THE RESULT
; 1340	MODE/=<9>               ;SEPARATE ADD/SUB & MUL/DIV ETC.
; 1341	FL-B/=<10:11>           ;STORE RESULTS AS
; 1342		AC=1		;AC
; 1343		MEM=2		;MEMORY
; 1344		BOTH=3		;BOTH
; 1345	
; 1346	J/=<12:23>              ;DISPATCH ADDRESS (MUST BE 1400 TO 1777)
; 1347	
; 1348	ACDISP/=<24>            ;DISPATCH ON AC FIELD
; 1349	I/=<25>                 ;IMMEDIATE DISPATCH. DISP/AREAD DOES A DISP/DROM
; 1350				; IF THIS BIT IS SET.
; 1351	READ/=<26>              ;START A READ AT AREAD
; 1352	TEST/=<27>              ;START A WRITE TEST  AT AREAD
; 1353	COND FUNC/=<28>       	;START A MEMORY CYCLE ON BWRITE
; 1354	VMA/=<29>D,1            ;LOAD THE VMA ON AREAD
; 1355	WRITE/=<30>           	;START A WRITE ON AREAD
; 1356		.UCODE
; 1357	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 36
; KS10.MIC[7,3]	14:54 7-JAN-1986				HOW TO READ MACROS					

; 1358	.TOC	"HOW TO READ MACROS"
; 1359	;		
; 1360	;		1.0  REGISTER TRANSFER MACROS
; 1361	;		
; 1362	;		MOST MACROS USED IN THE KS10 ARE USED TO OPERATE ON DATA IN  (OR  FROM/TO)  2901
; 1363	;		REGISTERS.   THE  NAMES  OF  THE  2901  REGISTERS  ARE  MACRO PARAMETERS AND ARE
; 1364	;		ENCLOSED IN [].  A TYPICAL MACRO IS:
; 1365	;		
; 1366	;		        [AR]_[AR]+[BR]
; 1367	;		
; 1368	;		THE SYMBOL _ IS PRONOUNCED "GETS".  THE ABOVE MACRO WOULD BE READ "THE  AR  GETS
; 1369	;		THE AR PLUS THE BR".
; 1370	;		
; 1371	;		IF A MACRO DOES NOT HAVE A _ IN IT, THERE IS NO RESULT STORED.  THUS,  [AR]-[BR]
; 1372	;		JUST COMPARES THE AR AND THE BR AND ALLOWS FOR SKIPS ON THE VARIOUS ALU BITS.
; 1373	;		
; 1374	;		
; 1375	;		
; 1376	;		1.1  SPECIAL SYMBOLS
; 1377	;		
; 1378	;		THERE ARE A BUNCH OF SYMBOLS USED IN THE MACROS WHICH ARE  NOT  2901  REGISTERS.
; 1379	;		THEY ARE DEFINED HERE:
; 1380	;		
; 1381	;		     1.  AC -- THE AC SELECTED BY THE CURRENT INSTRUCTION.  SEE DPEA
; 1382	;		
; 1383	;		     2.  AC[] -- AC+N.  AC[1] IS AC+1, AC[2] IS AC+2, ETC.
; 1384	;		
; 1385	;		     3.  APR -- THE APR FLAGS FROM DPMA
; 1386	;		
; 1387	;		     4.  EA -- THE EFFECTIVE ADDRESS.  THAT IS, 0  IN  THE  LEFT  HALF  AND  THE
; 1388	;		         CONTENTS OF THE HR IN THE RIGHT HALF.
; 1389	;		
; 1390	;		     5.  EXP -- THE F.P.  EXPONENT  FROM  THE  SCAD.   [AR]_EXP  WILL  TAKE  THE
; 1391	;		         EXPONENT OUT OF THE FE AND PUT IT BACK INTO THE NUMBER IN THE AR.
; 1392	;		
; 1393	;		     6.  FE -- THE FE REGISTER
; 1394	;		
; 1395	;		     7.  FLAGS -- THE PC FLAGS (FROM DPE9) IN THE LEFT HALF.
; 1396	;		
; 1397	;		     8.  Q -- THE Q REGISTER
; 1398	;		
; 1399	;		     9.  RAM -- THE RAM FILE, RAM ADDRESS IS IN THE VMA.
; 1400	;		
; 1401	;		    10.  P -- THE P FIELD OF THE BYTE POINTER.  SAME IDEA AS EXP.
; 1402	;		
; 1403	;		    11.  TIME -- THE 1MS.  TIMER
; 1404	;		
; 1405	;		    12.  VMA -- THE VMA.  WHEN READ IT INCLUDES THE VMA FLAGS
; 1406	;		
; 1407	;		    13.  XR -- INDEX REGISTER
; 1408	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 37
; KS10.MIC[7,3]	14:54 7-JAN-1986				HOW TO READ MACROS					

; 1409	;		    14.  XWD -- HALF WORD.  USED TO GENERATE CONSTANTS.  FOR EXAMPLE, [AR]_0 XWD
; 1410	;		         [40] WOULD LOAD THE CONSTANT 40 (OCTAL) INTO THE AR.
; 1411	;		
; 1412	;		    15.  +SIGN AND -SIGN -- SIGN BITS USED TO SIGN  SMEAR  F.P.   NUMBERS.   FOR
; 1413	;		         EXAMPLE, [AR]_+SIGN WOULD CLEAR AR BITS 0 TO 8.
; 1414	;		
; 1415	;		    16.  WORK[] -- LOCATIONS IN  THE  WORKSPACE  USED  AS  SCRATCH  SPACE.   FOR
; 1416	;		         EXAMPLE,  [AR]_WORK[CSTM]  WOULD LOAD THE AR WITH THE CST MASK FROM THE
; 1417	;		         RAM.  CSTM IS A SYMBOL DEFINED IN THE WORK FIELD.
; 1418	;		
; 1419	;		
; 1420	;		
; 1421	;		
; 1422	;		1.2  LONG
; 1423	;		
; 1424	;		LONG IS USED ON SHIFT OPERATIONS  TO  INDICATE  THAT  THE  Q  REGISTER  IS  ALSO
; 1425	;		SHIFTED.  THIS SAYS NOTHING ABOUT HOW THE SHIFT PATHS ARE CONNECTED UP.
; 1426	;		
; 1427	;		
; 1428	;		
; 1429	;		2.0  MEMORY MACROS
; 1430	;		
; 1431	;		MEMORY IS INDICATED BY THE SYMBOL "MEM".  WHEN WE  ARE  WAITING  FOR  DATA  FROM
; 1432	;		MEMORY  THE  "MEM  READ" MACRO IS USED.  WHEN WE ARE SENDING DATA TO MEMORY, THE
; 1433	;		"MEM WRITE" MACRO IS USED.  EXAMPLE,
; 1434	;		        MEM READ,               ;WAIT FOR MEMORY
; 1435	;		        [AR]_MEM                ;LOAD DATA INTO AR
; 1436	;		VMA_ IS USED THE LOAD THE VMA.  THUS, VMA_[PC] LOADS THE VMA FROM THE PC.
; 1437	;		
; 1438	;		
; 1439	;		
; 1440	;		3.0  TIME CONTROL
; 1441	;		
; 1442	;		THERE ARE 2 SETS OF MACROS USED FOR TIME CONTROL.  THE FIRST,  SELECTS  THE  RAM
; 1443	;		ADDRESS  TO  SPEED UP THE NEXT INSTRUCTION.  THESE MACROS ARE AC, AC[], XR, VMA,
; 1444	;		WORK[].  THE SECOND, SETS THE TIME FIELD.  THESE ARE  2T,  3T,  4T,  AND  5T  TO
; 1445	;		SELECT 2, 3, 4, OR 5 TICKS.
; 1446	;		
; 1447	;		
; 1448	;		
; 1449	;		4.0  SCAD MACROS
; 1450	;		
; 1451	;		THE SCAD MACROS LOOK LIKE THE 2901 MACROS EXECPT NO [] ARE REQUIRED.  THERE  ARE
; 1452	;		ONLY A FEW SYMBOLS USED.
; 1453	;		
; 1454	;		     1.  FE -- THE FE REGISTER
; 1455	;		
; 1456	;		     2.  SC -- THE SC REGISTER
; 1457	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 38
; KS10.MIC[7,3]	14:54 7-JAN-1986				HOW TO READ MACROS					

; 1458	;		     3.  EXP -- THE EXPONENT FROM A F.P.  NUMBER.  FOR EXAMPLE FE_EXP LOADS  THE
; 1459	;		         FE FROM DP BITS 1-8.
; 1460	;		
; 1461	;		     4.  SHIFT -- THE SHIFT COUNT FROM SHIFT INSTRUCTIONS.  THAT IS DP  BITS  18
; 1462	;		         AND 28-35.
; 1463	;		
; 1464	;		     5.  S# -- THE SMALL NUMBER.  THE 10 BIT MAGIC NUMBER  INPUT  TO  THE  SCADA
; 1465	;		         MIXER.
; 1466	;		
; 1467	;		
; 1468	;		
; 1469	;		
; 1470	;		5.0  CONTROL MACROS
; 1471	;		
; 1472	;		ALL CONTROL MACROS LOOK LIKE ENGLISH COMMANDS.  SOME EXAMPLES,
; 1473	;		        HOLD LEFT               ;DO NOT CLOCK LEFT HALF OF DP
; 1474	;		        SET APR ENABLES         ;LOAD APR ENABLES FROM DP
; 1475	;		        SET NO DIVIDE           ;SET NO DIVIDE PC FLAG
; 1476	;		
; 1477	;		
; 1478	;		
; 1479	;		6.0  SKIPS
; 1480	;		
; 1481	;		ALL SKIPS CAUSE THE NEXT MICRO INSTRUCTION TO COME  FROM  THE  ODD  WORD  OF  AN
; 1482	;		EVEN/ODD PAIR.  THE MACROS HAVE THE FORMAT OF SKIP COND.  THEY SKIP IF CONDITION
; 1483	;		IS TRUE.  SOME EXAMPLES,
; 1484	;		        SKIP AD.EQ.0            ;SKIP IF ADDER OUTPUT IS ZERO
; 1485	;		        SKIP IRPT               ;SKIP IF INTERRUPT IS PENDING
; 1486	;		
; 1487	;		
; 1488	;		
; 1489	;		7.0  DISPATCH MACROS
; 1490	;		
; 1491	;		DISPATCH MACROS CAUSE THE MACHINE TO GO TO ONE OF MANY PLACES.   IN  MOST  CASES
; 1492	;		THEY HAVE THE WORD "DISP" IN THE NAME OF THE MACRO.  FOR EXAMPLE, MUL DISP, BYTE
; 1493	;		DISP.
; 1494	;		
; 1495	;		
; 1496	;		
; 1497	;		8.0  SUPER MACROS
; 1498	;		
; 1499	;		THERE ARE PLACES WHERE ONE MICRO  INSTRUCTION  IS  USED  IN  MANY  PLACES.   FOR
; 1500	;		EXAMPLE,  MANY  PLACES  DETECT ILLEGAL OPERATIONS AND WANT TO GENERATE A TRAP TO
; 1501	;		THE MONITOR.  WE COULD WRITE
; 1502	;		        J/UUO
; 1503	;		BUT THIS WASTES A MICRO STEP DOING A USELESS JUMP.  INSTEAD WE WRITE,
; 1504	;		        UUO
; 1505	;		THIS MACRO IS THE FIRST STEP  OF  THE  UUO  ROUTINE  AND  JUMPS  TO  THE  SECOND
; 1506	;		INSTRUCTION.   WE  WRITE THE EXPANSION OF THE UUO MACRO AS THE FIRST INSTRUCTION
; 1507	;		OF THE UUO ROUTINE SO THAT THE READER CAN SEE WHAT IT DOES.   SOME  EXAMPLES  OF
; 1508	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 39
; KS10.MIC[7,3]	14:54 7-JAN-1986				HOW TO READ MACROS					

; 1509	;		SUPER MACROS ARE:
; 1510	;		        PAGE FAIL TRAP          ;GENERATE A PAGE FAIL TRAP
; 1511	;		        DONE                    ;THIS INSTRUCTION IS NOW COMPLETE
; 1512	;		                                ; USED WITH A SKIP OR DISP WHERE
; 1513	;		                                ; SOME PATHS ARE NOP'S
; 1514	;		        HALT []                 ;JUMP TO HALT LOOP. ARGUMENT IS A
; 1515	;		                                ; CODE
; 1516	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 40
; KS10.MIC[7,3]	14:54 7-JAN-1986				MACROS -- DATA PATH CHIP -- GENERAL			

; 1517	.TOC	"MACROS -- DATA PATH CHIP -- GENERAL"
; 1518	
; 1519	.NOT.[] 	"AD/.NOT.A,A/@1"
; 1520	[]+[]		"AD/A+B,A/@1,B/@2"
; 1521	[]-[]		"AD/A-B-.25,A/@1,B/@2,ADD .25"
; 1522	[]-#		"AD/A-D-.25,DBUS/DBM,DBM/#,A/@1,ADD .25"
; 1523	[].AND.#	"AD/D.AND.A,DBUS/DBM,DBM/#,A/@1"
; 1524	[].AND.Q	"AD/A.AND.Q,A/@1,DEST/PASS"
; 1525	[].AND.[]	"AD/A.AND.B,A/@2,B/@1,DEST/PASS"
; 1526	[].AND.NOT.[]	"AD/.NOT.A.AND.B,A/@2,B/@1,DEST/PASS"
; 1527	[].OR.[]	"AD/A.OR.B,A/@2,B/@1,DEST/PASS"
; 1528	[].XOR.#	"AD/D.XOR.A,DBUS/DBM,DBM/#,A/@1"
; 1529	[].XOR.[]	"AD/A.XOR.B,A/@2,B/@1,DEST/PASS"
; 1530	[]_#-[]		"AD/D-A-.25,DEST/AD,A/@2,B/@1,DBUS/DBM,DBM/#,ADD .25"
; 1531	[]_#		"AD/D,DBUS/DBM,DBM/#,DEST/AD,B/@1"
; 1532	[]_-1		"AD/-A-.25,A/ONE,DEST/AD,B/@1,ADD .25"
; 1533	[]_-2		"AD/-A-.25,DEST/AD*2,A/ONE,B/@1,ADD .25"
; 1534	[]_-Q		"AD/-Q-.25,DEST/AD,B/@1,ADD .25"
; 1535	[]_-Q*2		"AD/-Q-.25,DEST/AD*2,B/@1,ADD .25"
; 1536	[]_-Q*.5	"AD/-Q-.25,DEST/AD*.5,B/@1,ADD .25"
; 1537	[]_-[]		"AD/-A-.25,A/@2,DEST/AD,B/@1,ADD .25"
; 1538	[]_-[]-.25	"AD/-A-.25,A/@2,DEST/AD,B/@1"
; 1539	[]_-[]*2	"AD/-A-.25,A/@2,DEST/AD*2,B/@1,ADD .25"
; 1540	[]_.NOT.AC	"AD/.NOT.D,DBUS/RAM,RAMADR/AC#,DEST/AD,B/@1"
; 1541	[]_.NOT.AC[]	"AD/.NOT.D,DBUS/RAM,RAMADR/AC*#,ACALU/AC+N,ACN/@2,DEST/AD,B/@1,DT/3T"
; 1542	[]_.NOT.Q	"AD/.NOT.Q,DEST/AD,B/@1"
; 1543	[]_.NOT.[]	"AD/.NOT.A,A/@2,DEST/AD,B/@1"
; 1544	[]_0		"AD/ZERO,DEST/AD,B/@1"
; 1545	[]_0*.5 LONG	"AD/ZERO,DEST/Q_Q*.5,B/@1"
; 1546	[]_0 XWD []	"AD/47,DEST/AD,B/@1,DBM/#,DBUS/DBM,#/@2,RSRC/DA,A/MASK"
; 1547	[]_AC		"AD/D,DBUS/RAM,RAMADR/AC#,DEST/AD,B/@1,AD PARITY"
; 1548	[]_-AC		"AD/-D-.25,DBUS/RAM,RAMADR/AC#,DEST/AD,B/@1,ADD .25"
; 1549	[]_-AC[]	"AD/-D-.25,DBUS/RAM,RAMADR/AC*#,ACALU/AC+N,ACN/@2,DEST/AD,B/@1,ADD .25,DT/3T"
; 1550	[]_AC*.5	"AD/D,DBUS/RAM,RAMADR/AC#,DEST/AD*.5,B/@1,DT/3T"
; 1551	[]_AC*.5 LONG	"AD/D,DBUS/RAM,RAMADR/AC#,DEST/Q_Q*.5,B/@1,DT/3T"
; 1552	[]_AC*2 	"AD/D,DBUS/RAM,RAMADR/AC#,DEST/AD*2,B/@1,DT/3T"
; 1553	[]_AC+1 	"AD/D+A,DBUS/RAM,RAMADR/AC#,A/ONE,DEST/AD,B/@1"
; 1554	[]_AC+1000001	"AD/D+A,DBUS/RAM,RAMADR/AC#,A/XWD1,DEST/AD,B/@1"
; 1555	[]_AC+[]	"AD/D+A,A/@2,DBUS/RAM,RAMADR/AC#,DEST/AD,B/@1,DT/3T"
; 1556	[]_AC-1 	"AD/D-A-.25,DBUS/RAM,RAMADR/AC#,A/ONE,DEST/AD,B/@1,ADD .25"
; 1557	[]_AC-[]	"AD/D-A-.25,A/@2,DBUS/RAM,RAMADR/AC#,DEST/AD,B/@1,ADD .25"
; 1558	[]_AC-[]-.25	"AD/D-A-.25,A/@2,DBUS/RAM,RAMADR/AC#,DEST/AD,B/@1"
; 1559	[]_AC[]-[]	"AD/D-A-.25,A/@3,DBUS/RAM,RAMADR/AC*#,ACALU/AC+N,ACN/@2,DEST/AD,B/@1,ADD .25,DT/3T"
; 1560	[]_AC[]-1	"AD/D-A-.25,A/ONE,DBUS/RAM,RAMADR/AC*#,ACALU/AC+N,ACN/@2,DEST/AD,B/@1,ADD .25,DT/3T"
; 1561	[]_AC[].AND.[]	"AD/D.AND.A,A/@3,DBUS/RAM,RAMADR/AC*#,ACALU/AC+N,ACN/@2,DEST/AD,B/@1,DT/3T"
; 1562	[]_AC.AND.MASK	"AD/D.AND.A,A/MASK,DBUS/RAM,RAMADR/AC#,DEST/AD,B/@1,AD PARITY"
; 1563	[]_AC[]		"AD/D,DBUS/RAM,RAMADR/AC*#,ACALU/AC+N,ACN/@2,DEST/AD,B/@1,AD PARITY,DT/3T"
; 1564	[]_AC[]*2	"AD/D,DBUS/RAM,RAMADR/AC*#,ACALU/AC+N,ACN/@2,DEST/AD*2,B/@1,AD PARITY,DT/3T"
; 1565	[]_AC[]*.5	"AD/D,DBUS/RAM,RAMADR/AC*#,ACALU/AC+N,ACN/@2,DEST/AD*.5,B/@1,AD PARITY,DT/3T"
; 1566	[]_APR		"AD/D,DBUS/DBM,DBM/APR FLAGS,DEST/AD,B/@1,DT/3T"
; 1567	[]_CURRENT AC [] "AD/D,DBUS/RAM,RAMADR/#,ACALU/B,ACN/@2,DEST/AD,B/@1,AD PARITY,DT/3T"
; 1568	[]_EA FROM []	"AD/57,RSRC/0A,A/@2,DEST/AD,B/@1"
; 1569	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 41
; KS10.MIC[7,3]	14:54 7-JAN-1986				MACROS -- DATA PATH CHIP -- GENERAL			

; 1570	[]_EA		"AD/57,RSRC/0A,A/HR,DEST/AD,B/@1"
; 1571	[]_EXP		"AD/D,DBUS/DBM,DBM/EXP,A/@1,B/@1,DEST/A,SCAD/A+B,SCADA/S#,S#/0,SCADB/FE,HOLD RIGHT,EXP TEST"
; 1572	[]_FE		"AD/D,DEST/AD*.5,B/@1,DBUS/DBM,DBM/DP,SCAD/A+B,SCADA/S#,S#/0,SCADB/FE,BYTE/BYTE5"
; 1573	[]_FLAGS	"AD/D.AND.A,DBUS/PC FLAGS,A/MASK,DEST/AD,B/@1,RSRC/0Q"
; 1574	[]_P		"AD/D,DEST/A,A/@1,B/@1,DBUS/DBM,DBM/DP,BYTE/BYTE1,SCAD/A+B,SCADA/S#,S#/0,SCADB/FE"
; 1575	[]_PC WITH FLAGS "AD/D,DBUS/PC FLAGS,RSRC/0A,A/PC,DEST/AD,B/@1"
; 1576	[]_Q		"AD/Q,DEST/AD,B/@1"
; 1577	[]_Q*.5		"AD/Q,DEST/AD*.5,B/@1"
; 1578	[]_Q*2		"AD/Q,DEST/AD*2,B/@1"
; 1579	[]_Q*2 LONG	"AD/Q,DEST/Q_Q*2,B/@1"
; 1580	[]_Q+1		"AD/A+Q,A/ONE,DEST/AD,B/@1"
; 1581	[]_RAM		"AD/D,DBUS/RAM,RAMADR/RAM,DEST/AD,B/@1,AD PARITY"
; 1582	[]_TIME		"AD/44,RSRC/DA,A/MASK,DBUS/DBM,DBM/EXP,DEST/AD,B/@1"
; 1583	[]_VMA		"AD/D,DEST/AD,B/@1,DBUS/DBM,DBM/VMA"
; 1584	[]_XR		"AD/D,DBUS/RAM,RAMADR/XR#,DEST/AD,B/@1"
; 1585	[]_[]		"AD/A,A/@2,DEST/AD,B/@1"
; 1586	[]_[] SWAP	"AD/D,DBUS/DBM,DBM/DP SWAP,DEST/A,A/@2,B/@1"
; 1587	[]_[] XWD 0	"AD/45,DEST/AD,B/@1,DBM/#,DBUS/DBM,#/@2,RSRC/D0,A/MASK"
; 1588	[]_[]*.5	"AD/A,A/@2,DEST/AD*.5,B/@1"
; 1589	[]_[]*.5 LONG	"AD/A,A/@2,DEST/Q_Q*.5,B/@1"
; 1590	[]_[]*2 	"AD/A,A/@2,DEST/AD*2,B/@1"
; 1591	[]_[]*2 LONG	"AD/A,A/@2,DEST/Q_Q*2,B/@1"
; 1592	[]_[]*4 	"AD/A+B,A/@2,B/@1,DEST/AD*2"
; 1593	[]_[]+# 	"AD/D+A,DBUS/DBM,DBM/#,A/@2,DEST/AD,B/@1"
; 1594	[]_[]+.25	"AD/0+A,A/@2,DEST/AD,B/@1, ADD .25"
; 1595	[]_[]+0		"AD/0+A,A/@2,DEST/AD,B/@1"
; 1596	[]_[]+1 	"AD/A+B,A/ONE,B/@1,B/@2,DEST/AD"
; 1597	[]_[]+1000001	"AD/D+A,A/@2,DBUS/DBM,DBM/#,#/1,DEST/AD,B/@1"
; 1598	[]_[]+AC	"AD/D+A,A/@2,DBUS/RAM,RAMADR/AC#,DEST/AD,B/@1"
; 1599	[]_[]+AC[]	"AD/D+A,A/@2,DBUS/RAM,RAMADR/AC*#,ACALU/AC+N,ACN/@3,DEST/AD,B/@1,DT/3T"
; 1600	[]_[]+Q		"AD/A+Q,A/@2,DEST/AD,B/@1"
; 1601	[]_[]+RAM	"AD/D+A,A/@2,DBUS/RAM,RAMADR/RAM,DEST/AD,B/@1"
; 1602	[]_[]+XR	"AD/D+A,DBUS/RAM,RAMADR/XR#,A/@2,DEST/AD,B/@1,HOLD LEFT"
; 1603	[]_[]+[]	"AD/A+B,A/@3,B/@1,B/@2,DEST/AD"
; 1604	[]_[]+[]+.25	"AD/A+B,A/@3,B/@1,B/@2,DEST/AD, ADD .25"
; 1605	[]_[]-# 	"AD/A-D-.25,DBUS/DBM,DBM/#,A/@2,DEST/AD,B/@1, ADD .25"
; 1606	[]_[]-1 	"AD/B-A-.25,B/@1,A/ONE,DEST/AD,ADD .25"
; 1607	[]_[]-1000001	"AD/A-D-.25,A/@2,DBUS/DBM,DBM/#,#/1,DEST/AD,B/@1,ADD .25"
; 1608	[]_[]-AC	"AD/A-D-.25,A/@2,DBUS/RAM,RAMADR/AC#,DEST/AD,B/@1,ADD .25"
; 1609	[]_[]-RAM	"AD/A-D-.25,A/@2,DBUS/RAM,RAMADR/RAM,DEST/AD,B/@1,ADD .25"
; 1610	[]_[]-[]	"AD/B-A-.25,B/@1,B/@2,A/@3,DEST/AD,ADD .25"
; 1611	[]_[]-[] REV	"AD/A-B-.25,B/@1,B/@3,A/@2,DEST/AD,ADD .25"
; 1612	[]_[].AND.#	"AD/D.AND.A,DBUS/DBM,DBM/#,DEST/AD,A/@2,B/@1"
; 1613	[]_[].AND.# CLR LH "AD/ZERO,RSRC/DA,DBUS/DBM,DBM/#,DEST/AD,A/@2,B/@1"
; 1614	[]_[].AND.# CLR RH "AD/D.AND.A,RSRC/0Q,DBUS/DBM,DBM/#,DEST/AD,A/@2,B/@1"
; 1615	[]_(AC[].AND.[])*.5 "AD/D.AND.A,DEST/AD*.5,A/@3,B/@1,RAMADR/AC*#,DBUS/RAM,ACALU/AC+N,ACN/@2"
; 1616	[]_(Q+1)*.5	"AD/A+Q,A/ONE,DEST/AD*.5,B/@1"
; 1617	[]_(#-[])*2	"AD/D-A-.25,DEST/AD*2,A/@2,B/@1,DBUS/DBM,DBM/#,ADD .25"
; 1618	[]_(-[])*.5	"AD/-A-.25,A/@2,DEST/AD*.5,B/@1,ADD .25"
; 1619	[]_(-[]-.25)*.5 LONG "AD/-A-.25,A/@2,DEST/Q_Q*.5,B/@1"
; 1620	[]_(-[]-.25)*2 LONG "AD/-A-.25,A/@2,DEST/Q_Q*2,B/@1"
; 1621	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 42
; KS10.MIC[7,3]	14:54 7-JAN-1986				MACROS -- DATA PATH CHIP -- GENERAL			

; 1622	[]_([].AND.#)*.5 "AD/D.AND.A,DBUS/DBM,DBM/#,DEST/AD*.5,A/@2,B/@1"
; 1623	[]_([].AND.#)*2	"AD/D.AND.A,DBUS/DBM,DBM/#,DEST/AD*2,A/@2,B/@1"
; 1624	[]_([].AND.NOT.#)*.5 "AD/.NOT.D.AND.A,DBUS/DBM,DBM/#,DEST/AD*.5,A/@2,B/@1"
; 1625	[]_([].AND.NOT.#)*2	"AD/.NOT.D.AND.A,DBUS/DBM,DBM/#,DEST/AD*2,A/@2,B/@1"
; 1626	[]_([].AND.[])*.5 "AD/A.AND.B,DEST/AD*.5,A/@3,B/@1,B/@2"
; 1627	[]_([].AND.[])*2 "AD/A.AND.B,DEST/AD*2,A/@3,B/@1,B/@2"
; 1628	[]_([].OR.#)*.5 "AD/D.OR.A,DBUS/DBM,DBM/#,DEST/AD*.5,A/@2,B/@1"
; 1629	[]_([].OR.#)*2	"AD/D.OR.A,DBUS/DBM,DBM/#,DEST/AD*2,A/@2,B/@1"
; 1630	[]_([]+#)*2	"AD/D+A,DBUS/DBM,DBM/#,DEST/AD*2,A/@2,B/@1"
; 1631	[]_([]+1)*2 	"AD/A+B,A/ONE,B/@1,B/@2,DEST/AD*2"
; 1632	[]_([]+[])*.5 LONG	"AD/A+B,A/@3,B/@1,B/@2,DEST/Q_Q*.5"
; 1633	[]_([]+[])*2 LONG	"AD/A+B,A/@3,B/@1,B/@2,DEST/Q_Q*2"
; 1634	[]_([]-[])*.5 LONG	"AD/B-A-.25,A/@3,B/@1,B/@2,DEST/Q_Q*.5, ADD .25"
; 1635	[]_([]-[])*2 LONG	"AD/B-A-.25,A/@3,B/@1,B/@2,DEST/Q_Q*2, ADD .25"
; 1636	[]_([]+[]+.25)*.5 LONG	"AD/A+B,A/@3,B/@1,B/@2,DEST/Q_Q*.5, ADD .25"
; 1637	[]_[].AND.AC	"AD/D.AND.A,DBUS/RAM,RAMADR/AC#,A/@2,DEST/AD,B/@1"
; 1638	[]_[].AND.NOT.# "AD/.NOT.D.AND.A,DBUS/DBM,DBM/#,A/@2,DEST/AD,B/@1"
; 1639	[]_[].AND.NOT.[] "AD/.NOT.A.AND.B,DEST/AD,B/@1,B/@2,A/@3"
; 1640	[]_[].AND.NOT.AC "AD/.NOT.D.AND.A,DBUS/RAM,RAMADR/AC#,A/@2,DEST/AD,B/@1"
; 1641	[]_[].AND.Q	"AD/A.AND.Q,A/@2,DEST/AD,B/@1"
; 1642	[]_[].AND.[]	"AD/A.AND.B,A/@3,B/@1,B/@2,DEST/AD"
; 1643	[]_[].EQV.AC	"AD/D.EQV.A,DBUS/RAM,RAMADR/AC#,A/@2,DEST/AD,B/@1"
; 1644	[]_[].EQV.Q	"AD/A.EQV.Q,A/@2,DEST/AD,B/@1"
; 1645	[]_[].OR.#	"AD/D.OR.A,DBUS/DBM,DBM/#,A/@2,DEST/AD,B/@1"
; 1646	[]_[].OR.AC	"AD/D.OR.A,DBUS/RAM,RAMADR/AC#,A/@2,DEST/AD,B/@1"
; 1647	[]_[].OR.FLAGS	"AD/D.OR.A,DBUS/PC FLAGS,RSRC/0A,A/@1,DEST/AD,B/@1"
; 1648	[]_[].OR.[]	"AD/A.OR.B,A/@3,B/@2,B/@1,DEST/AD"
; 1649	[]_[].XOR.#	"AD/D.XOR.A,DBUS/DBM,DBM/#,DEST/AD,A/@2,B/@1"
; 1650	[]_[].XOR.AC	"AD/D.XOR.A,DBUS/RAM,RAMADR/AC#,A/@1,DEST/AD,B/@2"
; 1651	[]_[].XOR.[]	"AD/A.XOR.B,A/@3,B/@1,B/@2,DEST/AD"
; 1652	
; 1653	[] LEFT_0	"AD/57,RSRC/0B,DEST/AD,B/@1"
; 1654	[] RIGHT_0	"AD/53,RSRC/D0,DEST/AD,B/@1"
; 1655	[] LEFT_-1	"AD/54,RSRC/0B,DEST/AD,A/MASK,B/@1"
; 1656	[] RIGHT_-1	"AD/53,RSRC/0A,DEST/AD,A/MASK,B/@1"
; 1657	
; 1658	
; 1659	[]_+SIGN	"[@1]_[@1].AND.#, #/777, HOLD RIGHT"
; 1660	[]_-SIGN	"[@1]_[@1].OR.#, #/777000, HOLD RIGHT"
; 1661	;THE FOLLOWING 2 MACROS ARE USED IN DOUBLE FLOATING STUFF
; 1662	; THEY ASSUME THAT THE OPERAND HAS BEEN SHIFTED RIGHT 1 PLACE.
; 1663	; THEY SHIFT 1 MORE PLACE
; 1664	[]_+SIGN*.5	"AD/.NOT.D.AND.A,A/@1,B/@1,DEST/AD*.5,DBUS/DBM,DBM/#,#/777400,RSRC/0A"
; 1665	[]_-SIGN*.5	"AD/D.OR.A,A/@1,B/@1,DEST/AD*.5,DBUS/DBM,DBM/#,#/777400,RSRC/0A"
; 1666	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 43
; KS10.MIC[7,3]	14:54 7-JAN-1986				MACROS -- DATA PATH CHIP -- Q				

; 1667	.TOC	"MACROS -- DATA PATH CHIP -- Q"
; 1668	
; 1669	Q-[]		"AD/Q-A-.25,A/@1,ADD .25"
; 1670	Q.AND.NOT.[]	"AD/.NOT.A.AND.Q,A/@1,DEST/PASS"
; 1671	Q_[]		"AD/A,DEST/Q_AD,A/@1"
; 1672	Q_[]-[] 	"AD/A-B-.25,A/@1,B/@2,DEST/Q_AD,ADD .25"
; 1673	Q_[]+[] 	"AD/A+B,A/@1,B/@2,DEST/Q_AD"
; 1674	Q_[].AND.[]	"AD/A.AND.B,A/@1,B/@2,DEST/Q_AD"
; 1675	Q_.NOT.AC[]	"AD/.NOT.D,DBUS/RAM,RAMADR/AC*#,ACALU/AC+N,ACN/@1,DEST/Q_AD,DT/3T"
; 1676	Q_-[]		"AD/-A-.25,DEST/Q_AD,A/@1, ADD .25"
; 1677	Q_-1		"Q_-[ONE]"
; 1678	Q_-AC[]	"AD/-D-.25,DBUS/RAM,RAMADR/AC*#,ACALU/AC+N,ACN/@1,DEST/Q_AD,ADD .25,DT/3T"
; 1679	Q_-Q		"AD/-Q-.25,ADD .25,DEST/Q_AD"
; 1680	Q_AC		"AD/D,DBUS/RAM,RAMADR/AC#,DEST/Q_AD,CHK PARITY"
; 1681	Q_AC[]		"AD/D,DBUS/RAM,RAMADR/AC*#,ACALU/AC+N,ACN/@1,DEST/Q_AD,CHK PARITY,DT/3T"
; 1682	Q_AC[].AND.MASK	"AD/D.AND.A,A/MASK,DBUS/RAM,RAMADR/AC*#,ACALU/AC+N,ACN/@1,DEST/Q_AD,CHK PARITY,DT/3T"
; 1683	Q_AC[].AND.[]	"AD/D.AND.A,A/@2,DBUS/RAM,RAMADR/AC*#,ACALU/AC+N,ACN/@1,DEST/Q_AD,CHK PARITY,DT/3T"
; 1684	Q_.NOT.Q		"AD/.NOT.Q,DEST/Q_AD"
; 1685	Q_#		"AD/D,DBUS/DBM,DBM/#,DEST/Q_AD"
; 1686	Q_0		"AD/ZERO,DEST/Q_AD"
; 1687	Q_0 XWD []	"AD/47,DEST/Q_AD,DBM/#,DBUS/DBM,#/@1,RSRC/DA,A/MASK"
; 1688	Q_Q+.25		"AD/0+Q,DEST/Q_AD,ADD .25"
; 1689	Q_Q+1		"AD/A+Q,A/ONE,DEST/Q_AD"
; 1690	Q_Q-1		"AD/Q-A-.25,A/ONE,DEST/Q_AD, ADD .25"
; 1691	Q_Q+AC		"AD/D+Q,DBUS/RAM,RAMADR/AC#,DEST/Q_AD"
; 1692	Q_Q*.5		"[MAG]_[MASK]*.5 LONG, SHSTYLE/NORM"
; 1693	Q_Q*2		"[MASK]_[MAG]*2 LONG, SHSTYLE/NORM"
; 1694	Q_Q.OR.#	"AD/D.OR.Q,DBUS/DBM,DBM/#,DEST/Q_AD"
; 1695	Q_Q.AND.#	"AD/D.AND.Q,DBUS/DBM,DBM/#,DEST/Q_AD"
; 1696	Q_Q.AND.[]	"AD/A.AND.Q,A/@1,DEST/Q_AD"
; 1697	Q_Q.AND.NOT.[]	"AD/.NOT.A.AND.Q,A/@1,DEST/Q_AD"
; 1698	Q_Q+[]		"AD/A+Q,A/@1,DEST/Q_AD"
; 1699	Q_[].AND.Q	"AD/A.AND.Q,A/@1,DEST/Q_AD"
; 1700	Q_[].OR.Q	"AD/A.OR.Q,A/@1,DEST/Q_AD"
; 1701	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 44
; KS10.MIC[7,3]	14:54 7-JAN-1986				MACROS -- DATA PATH CHIP -- MISC.			

; 1702	.TOC	"MACROS -- DATA PATH CHIP -- MISC."
; 1703	
; 1704	CLEAR []0	"AD/D.AND.A,A/@1,DBUS/DBM,DBM/#,#/377777,DEST/AD,B/@1,HOLD RIGHT"
; 1705	CLEAR ARX0	"CLEAR [ARX]0"
; 1706	
; 1707	;CYCLE CHIP REGISTERS THRU AD SO WE CAN TEST BITS
; 1708	READ XR		"AD/D,DBUS/RAM,RAMADR/XR#"
; 1709	READ [] 	"AD/B,B/@1"
; 1710	READ Q		"AD/Q"
; 1711	
; 1712	;TEST BITS IN REGISTERS (SKIP IF ZERO)
; 1713	TR []		"AD/D.AND.A,DBUS/DBM,DBM/#,A/@1,SKIP ADR.EQ.0,DT/3T"
; 1714	TL []		"AD/D.AND.A,DBUS/DBM,DBM/#,A/@1,SKIP ADL.EQ.0,DT/3T"
; 1715	
; 1716	
; 1717	;CAUSE BITS -2 AND -1 TO MATCH BIT 0. 
; 1718	FIX [] SIGN	"AD/D,DEST/A,A/@1,B/@1,DBUS/DP,HOLD RIGHT"
; 1719	
; 1720	;GENERATE A MASK IN Q AND ZERO A 2901 REGISTER
; 1721	GEN MSK []	"AD/ZERO,DEST/Q_Q*2,B/@1,ONES"
; 1722	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 45
; KS10.MIC[7,3]	14:54 7-JAN-1986				MACROS -- STORE IN AC					

; 1723	.TOC	"MACROS -- STORE IN AC"
; 1724	
; 1725	FM WRITE	"FMWRITE/1"
; 1726	
; 1727	AC[]_[] VIA AD	"AD/B,DEST/PASS,B/@2,RAMADR/AC*#,ACALU/AC+N,ACN/@1,DBUS/DP,FM WRITE,CHK PARITY"
; 1728	AC_[] VIA AD	"AD/B,DEST/PASS,B/@1,RAMADR/AC#,DBUS/DP,FM WRITE,CHK PARITY"
; 1729	AC[]_[]		"AD/A,DEST/A,B/@2,A/@2,RAMADR/AC*#,ACALU/AC+N,ACN/@1,DBUS/DP, FM WRITE"
; 1730	AC[]_[] TEST	"AD/D,DBUS/DP,DEST/A,B/@2,A/@2,RAMADR/AC*#,ACALU/AC+N,ACN/@1,DBUS/DP, FM WRITE"
; 1731	AC[]_[]+1	"AD/A+B,DEST/PASS,A/ONE,B/@2,RAMADR/AC*#,ACALU/AC+N,ACN/@1,DBUS/DP,FM WRITE"
; 1732	AC[]_[]*2	"AD/A+B,DEST/PASS,A/@2,B/@2,RAMADR/AC*#,ACALU/AC+N,ACN/@1,DBUS/DP,FM WRITE"
; 1733	AC_[]		"AD/A,DEST/A,B/@1,A/@1,RAMADR/AC#,DBUS/DP, FM WRITE"
; 1734	AC_[] TEST	"AD/D,DBUS/DP,DEST/A,B/@1,A/@1,RAMADR/AC#,DBUS/DP, FM WRITE"
; 1735	AC_[]+1		"AD/A+B,DEST/PASS,A/ONE,B/@1,RAMADR/AC#, FM WRITE"
; 1736	AC_[]+Q		"AD/A+Q,DEST/PASS,A/@1,B/@1,RAMADR/AC#, FM WRITE"
; 1737	AC[]_[]+Q	"AD/A+Q,DEST/PASS,A/@2,B/@2,RAMADR/AC*#,ACALU/AC+N,ACN/@1, FM WRITE"
; 1738	AC[]_[]-[]	"AD/A-B-.25,DEST/PASS,B/@3,A/@2,RAMADR/AC*#,ACALU/AC+N,ACN/@1,DBUS/DP,FM WRITE,ADD .25"
; 1739	AC[]_[]+[]	"AD/A+B,DEST/PASS,B/@3,A/@2,RAMADR/AC*#,ACALU/AC+N,ACN/@1,DBUS/DP,FM WRITE"
; 1740	AC_[]+[]	"AD/A+B,DEST/PASS,B/@2,A/@1,RAMADR/AC#,DBUS/DP,FM WRITE"
; 1741	AC[]_[].AND.[]	"AD/A.AND.B,DEST/PASS,B/@3,A/@2,RAMADR/AC*#,ACALU/AC+N,ACN/@1,DBUS/DP,FM WRITE"
; 1742	AC[]_Q.AND.[]	"AD/A.AND.Q,DEST/PASS,A/@2,RAMADR/AC*#,ACALU/AC+N,ACN/@1,DBUS/DP,FM WRITE"
; 1743	AC[]_[].EQV.Q	"AD/A.EQV.Q,DEST/PASS,A/@2,RAMADR/AC*#,ACALU/AC+N,ACN/@1,DBUS/DP,FM WRITE"
; 1744	AC[]_-[]	"AD/-B-.25,DEST/PASS,B/@2,RAMADR/AC*#,ACALU/AC+N,ACN/@1,DBUS/DP,FM WRITE,ADD .25"
; 1745	AC_-[]		"AD/-A-.25,DEST/PASS,A/@1,RAMADR/AC#,DBUS/DP, ADD .25,FM WRITE"
; 1746	AC_[].OR.[]	"AD/A.OR.B,A/@1,B/@2,RAMADR/AC#,DBUS/DP, FM WRITE"
; 1747	AC[]_.NOT.[]	"AD/.NOT.B,DEST/PASS,B/@2,RAMADR/AC*#,ACALU/AC+N,ACN/@1,DBUS/DP,FM WRITE"
; 1748	AC_.NOT.[]	"AD/.NOT.B,DEST/PASS,B/@1,RAMADR/AC#,DBUS/DP,FM WRITE"
; 1749	AC[]_-Q		"AD/-Q-.25,RAMADR/AC*#,ACALU/AC+N,ACN/@1,DBUS/DP,FM WRITE,ADD .25"
; 1750	AC_Q		"AD/Q,RAMADR/AC#,DBUS/DP, FM WRITE"
; 1751	AC[]_0		"AD/ZERO,RAMADR/AC*#,ACALU/AC+N,ACN/@1,DBUS/DP, FM WRITE"
; 1752	AC[]_1		"AD/B,DEST/PASS,B/ONE,RAMADR/AC*#,ACALU/AC+N,ACN/@1,DBUS/DP,FM WRITE"
; 1753	AC[]_Q		"AD/Q,RAMADR/AC*#,ACALU/AC+N,ACN/@1,DBUS/DP, FM WRITE"
; 1754	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 46
; KS10.MIC[7,3]	14:54 7-JAN-1986				MACROS -- MICROCODE WORK SPACE				

; 1755	.TOC	"MACROS -- MICROCODE WORK SPACE"
; 1756	
; 1757	
; 1758	WORK[]_Q	"AD/Q,DEST/PASS,RAMADR/#,WORK/@1,FM WRITE"
; 1759	Q_WORK[]	"AD/D,DEST/Q_AD,RAMADR/#,DBUS/RAM,WORK/@1,DT/3T"
; 1760	WORK[]_0	"AD/ZERO,DEST/PASS,RAMADR/#,WORK/@1,FM WRITE"
; 1761	WORK[]_1	"AD/B,DEST/PASS,RAMADR/#,WORK/@1,B/ONE,FM WRITE"
; 1762	WORK[]_[]	"AD/B,DEST/PASS,RAMADR/#,WORK/@1,B/@2,FM WRITE"
; 1763	WORK[]_[] CLR LH "AD/47,RSRC/AB,DEST/PASS,RAMADR/#,WORK/@1,B/@2,A/MASK,FM WRITE"
; 1764	WORK[]_[]-1	"AD/A-B-.25,A/@2,B/ONE,DEST/PASS,RAMADR/#,WORK/@1,FM WRITE, ADD .25"
; 1765	WORK[]_.NOT.[]	"AD/.NOT.B,DEST/PASS,RAMADR/#,WORK/@1,B/@2,FM WRITE"
; 1766	WORK[]_[].AND.[] "AD/A.AND.B,DEST/PASS,RAMADR/#,WORK/@1,A/@2,B/@3,FM WRITE"
; 1767	[].AND.NOT.WORK[] "AD/.NOT.D.AND.A,A/@1,DBUS/RAM,RAMADR/#,WORK/@2,DT/3T"
; 1768	[].AND.WORK[]	"AD/D.AND.A,A/@1,DBUS/RAM,RAMADR/#,WORK/@2,DT/3T"
; 1769	[]_[]+WORK[]	"AD/D+A,A/@2,DEST/AD,B/@1,DBUS/RAM,RAMADR/#,WORK/@3,DT/3T"
; 1770	[]_[].AND.WORK[] "AD/D.AND.A,A/@2,DEST/AD,B/@1,DBUS/RAM,RAMADR/#,WORK/@3,DT/3T"
; 1771	[]_[].AND.NOT.WORK[] "AD/.NOT.D.AND.A,A/@2,DEST/AD,B/@1,DBUS/RAM,RAMADR/#,WORK/@3,DT/3T"
; 1772	[]_[].OR.WORK[]	"AD/D.OR.A,A/@2,DEST/AD,B/@1,DBUS/RAM,RAMADR/#,WORK/@3,DT/3T"
; 1773	[]_WORK[]	"AD/D,DEST/AD,B/@1,DBUS/RAM,RAMADR/#,WORK/@2,DT/3T"
; 1774	[]_.NOT.WORK[]	"AD/.NOT.D,DEST/AD,B/@1,DBUS/RAM,RAMADR/#,WORK/@2,DT/3T"
; 1775	[]_-WORK[]	"AD/-D-.25,ADD .25,DEST/AD,B/@1,DBUS/RAM,RAMADR/#,WORK/@2,DT/3T"
; 1776	[]_WORK[]+1	"AD/D+A,A/ONE,DEST/AD,B/@1,DBUS/RAM,RAMADR/#,WORK/@2,DT/3T"
; 1777	Q_Q-WORK[]	"AD/Q-D-.25,DEST/Q_AD,DBUS/RAM,RAMADR/#,WORK/@1,ADD .25,DT/3T"
; 1778	[]_[]-WORK[]	"AD/A-D-.25,DEST/AD,A/@2,B/@1,DBUS/RAM,RAMADR/#,WORK/@3,ADD .25,DT/3T"
; 1779	
; 1780	RAM_[]		"AD/B,DEST/PASS,RAMADR/RAM,B/@1,FM WRITE"
; 1781	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 47
; KS10.MIC[7,3]	14:54 7-JAN-1986				MACROS -- MEMORY CONTROL				

; 1782	.TOC		"MACROS -- MEMORY CONTROL"
; 1783	
; 1784	MEM CYCLE		"MEM/1"
; 1785	
; 1786	;THE FOLLOWING MACROS CONTROL MEMORY ADDRESS
; 1787	LOAD VMA		"MEM CYCLE,LDVMA/1"
; 1788	FORCE EXEC		"FORCE EXEC/1"
; 1789	VMA PHYSICAL		"PHYSICAL/1,FORCE EXEC/1,FORCE USER/0,EXT ADR/1,LOAD VMA"
; 1790	VMA PHYSICAL WRITE	"LOAD VMA,VMA PHYSICAL,WAIT/1,MEM/1,WRITE CYCLE/1,WRITE TEST/0"
; 1791	VMA PHYSICAL READ	"LOAD VMA,VMA PHYSICAL,WAIT/1,MEM/1,READ CYCLE/1,WRITE TEST/0"
; 1792	VMA EXTENDED		"EXT ADR/1"
; 1793	
; 1794	PXCT EA			"PXCT/E1"
; 1795	PXCT DATA		"PXCT/D1"
; 1796	PXCT BLT DEST		"PXCT/D1"
; 1797	PXCT BYTE PTR EA 	"PXCT/E2"
; 1798	PXCT BYTE DATA		"PXCT/D2"
; 1799	PXCT STACK WORD		"PXCT/D2"
; 1800	PXCT BLT SRC		"PXCT/D2"
; 1801	PXCT EXTEND EA		"PXCT/E2"
; 1802	
; 1803	;THE FOLLOWING MACROS GET MEMORY CYCLES STARTED
; 1804	WRITE TEST		"WRITE TEST/1,WAIT/1"
; 1805	START READ		"MEM CYCLE,READ CYCLE/1,WAIT/1"
; 1806	START WRITE		"MEM CYCLE,WRITE TEST,WRITE CYCLE/1,WAIT/1"
; 1807	START NO TEST WRITE	"MEM CYCLE,WRITE CYCLE/1,WAIT/1"
; 1808	FETCH			"START READ,FETCH/1,PXCT/CURRENT,WAIT/1"
; 1809	
; 1810	;THE FOLLOWING MACROS COMPLETE MEMORY CYCLES
; 1811	MEM WAIT		"MEM CYCLE,WAIT/1"
; 1812	MEM READ		"MEM WAIT,DBUS/DBM,DBM/MEM"
; 1813	MEM WRITE		"MEM WAIT,DT/3T"
; 1814	SPEC MEM READ		"SPEC/WAIT,DBUS/DBM,DBM/MEM"
; 1815	SPEC MEM WRITE		"SPEC/WAIT,DT/3T"
; 1816	
; 1817	
; 1818	;THINGS WHICH WRITE MEMORY
; 1819	MEM_[]			"AD/B,DEST/PASS,B/@1,DBUS/DP,RAMADR/VMA,CHK PARITY"
; 1820	MEM_Q			"AD/Q,DBUS/DP,RAMADR/VMA"
; 1821	
; 1822	
; 1823	;THINGS WHICH READ MEMORY
; 1824	[]_IO DATA		"AD/D,DBUS/DBM,RAMADR/VMA,DEST/AD,B/@1"
; 1825	[]_MEM			"AD/D,DBUS/DBM,RAMADR/VMA,DEST/AD,B/@1,CHK PARITY"
; 1826	[]_MEM THEN FETCH	"AD/D,DBUS/DBM,RAMADR/VMA,DEST/A,A/PC,B/@1,CHK PARITY, FETCH, LOAD VMA"
; 1827	[]_MEM*.5		"AD/D,DBUS/DBM,RAMADR/VMA,DEST/AD*.5,B/@1,CHK PARITY"
; 1828	[]_MEM.AND.MASK		"AD/D.AND.A,A/MASK,DBUS/DBM,RAMADR/VMA,DEST/AD,B/@1,CHK PARITY"
; 1829	[]_(MEM.AND.[])*.5	"AD/D.AND.A,A/@2,DBUS/DBM,RAMADR/VMA,DEST/AD*.5,B/@1,CHK PARITY"
; 1830	Q_MEM			"AD/D,DBUS/DBM,RAMADR/VMA,DEST/Q_AD,CHK PARITY"
; 1831	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 48
; KS10.MIC[7,3]	14:54 7-JAN-1986				MACROS -- VMA						

; 1832	.TOC	"MACROS -- VMA"
; 1833	
; 1834	VMA_[]			"AD/A,A/@1,DEST/PASS,LOAD VMA"
; 1835	VMA_[] WITH FLAGS	"AD/A,A/@1,DEST/PASS,LOAD VMA,WAIT/1, MEM/1, EXT ADR/1, DP FUNC/1, DT/3T"
; 1836	VMA_[].OR.[] WITH FLAGS	"AD/A.OR.B,A/@1,B/@2,DEST/PASS,LOAD VMA,WAIT/1, MEM/1, EXT ADR/1, DP FUNC/1, DT/3T"
; 1837	VMA_[]+1		"AD/A+B,A/ONE,B/@1,DEST/AD,HOLD LEFT,LOAD VMA"
; 1838	VMA_[]-1		"AD/B-A-.25,A/ONE,B/@1,ADD .25,HOLD LEFT,LOAD VMA"
; 1839	VMA_[]+XR		"AD/D+A,DBUS/RAM,RAMADR/XR#,A/@1,LOAD VMA"
; 1840	VMA_[]+[]		"AD/A+B,DEST/PASS,A/@1,B/@2,LOAD VMA"
; 1841	
; 1842	NEXT [] PHYSICAL WRITE "AD/A+B,A/ONE,B/@1,DEST/AD,HOLD LEFT,LOAD VMA, VMA PHYSICAL, START WRITE"
; 1843	
; 1844	;MACROS TO LOAD A 2901 REGISTER WITH VMA FLAG BITS
; 1845	[]_VMA FLAGS	"AD/45,DEST/AD,B/@1,DBM/#,DBUS/DBM,RSRC/D0,A/MASK"
; 1846	[]_VMA IO READ	"[@1]_VMA FLAGS,READ CYCLE/1,IO CYCLE/1,WRITE TEST/0, PHYSICAL/1, FORCE EXEC/1, FORCE USER/0"
; 1847	[]_VMA IO WRITE	"[@1]_VMA FLAGS,WRITE CYCLE/1,IO CYCLE/1,WRITE TEST/0, PHYSICAL/1, FORCE EXEC/1, FORCE USER/0"
; 1848	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 49
; KS10.MIC[7,3]	14:54 7-JAN-1986				MACROS -- TIME CONTROL					

; 1849	.TOC	"MACROS -- TIME CONTROL"
; 1850	
; 1851	AC		"RAMADR/AC#"
; 1852	AC[]		"RAMADR/AC*#,ACALU/AC+N,ACN/@1"
; 1853	XR		"RAMADR/XR#"
; 1854	VMA		"RAMADR/VMA"
; 1855	WORK[]		"RAMADR/#, WORK/@1"
; 1856	
; 1857	2T		"T/2T"
; 1858	3T		"T/3T"
; 1859	4T		"T/4T"
; 1860	5T		"T/5T"
; 1861	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 50
; KS10.MIC[7,3]	14:54 7-JAN-1986				MACROS -- SCAD, SC, FE LOGIC				

; 1862	.TOC	"MACROS -- SCAD, SC, FE LOGIC"
; 1863	
; 1864	LOAD SC		"LOADSC/1"
; 1865	LOAD FE		"LOADFE/1"
; 1866	STEP SC		"SCAD/A-1,SCADA/SC,LOAD SC,SKIP/SC"
; 1867	SHIFT		"SCAD/A+B,SCADA/S#,SCADB/FE,S#/1, LOAD FE, MULTI SHIFT/1"
; 1868	
; 1869	SC_SC-1		"SCAD/A-1,SCADA/SC,LOAD SC"
; 1870	SC_SHIFT	"SCAD/A+B,SCADA/S#,S#/0,SCADB/SHIFT,LOAD SC"
; 1871	SC_SHIFT-1	"SCAD/A+B,SCADA/S#,S#/1777,SCADB/SHIFT,LOAD SC"
; 1872	SC_SHIFT-2	"SCAD/A+B,SCADA/S#,S#/1776,SCADB/SHIFT,LOAD SC"
; 1873	SC_-SHIFT	"SCAD/A-B,SCADA/S#,S#/0000,SCADB/SHIFT,LOAD SC"
; 1874	SC_-SHIFT-1	"SCAD/A-B,SCADA/S#,SCADB/SHIFT,S#/1777,LOAD SC"
; 1875	SC_-SHIFT-2	"SCAD/A-B,SCADA/S#,SCADB/SHIFT,S#/1776,LOAD SC"
; 1876	SC_SC-EXP	"SCAD/A-B,SCADA/SC,SCADB/EXP,LOAD SC"
; 1877	SC_SC-EXP-1	"SCAD/A-B-1,SCADA/SC,SCADB/EXP,LOAD SC"
; 1878	SC_SC-FE-1	"SCAD/A-B-1,SCADA/SC,SCADB/FE,LOAD SC"
; 1879	SC_SC-FE	"SCAD/A-B,SCADA/SC,SCADB/FE,LOAD SC"
; 1880	SC_EXP		"SCAD/A+B,SCADA/S#,S#/0,SCADB/EXP,LOAD SC"
; 1881	SC_S#-FE	"SCAD/A-B,SCADA/S#,SCADB/FE,LOAD SC"
; 1882	SC_FE+S#	"SCAD/A+B,SCADA/S#,SCADB/FE,LOAD SC"
; 1883	SC_FE		"SCAD/A.OR.B,SCADA/S#,S#/0,SCADB/FE,LOAD SC"
; 1884	SC_S#		"SCAD/A,SCADA/S#,LOAD SC"
; 1885	
; 1886	
; 1887	SC_36.		"SC_S#,S#/36."
; 1888	SC_35.		"SC_S#,S#/35."
; 1889	SC_34.		"SC_S#,S#/34."
; 1890	SC_28.		"SC_S#,S#/28."
; 1891	SC_27.		"SC_S#,S#/27."
; 1892	SC_26.		"SC_S#,S#/26."
; 1893	SC_24.		"SC_S#,S#/24."
; 1894	SC_22.		"SC_S#,S#/22."
; 1895	SC_20.		"SC_S#,S#/20."
; 1896	SC_19.		"SC_S#,S#/19."
; 1897	SC_14.		"SC_S#,S#/14."
; 1898	SC_11.		"SC_S#,S#/11."
; 1899	SC_9.		"SC_S#,S#/9."
; 1900	SC_8.		"SC_S#,S#/8."
; 1901	SC_7		"SC_S#,S#/7"
; 1902	SC_6		"SC_S#,S#/6"
; 1903	SC_5		"SC_S#,S#/5"
; 1904	SC_4		"SC_S#,S#/4"
; 1905	SC_3		"SC_S#,S#/3"
; 1906	SC_2		"SC_S#,S#/2"
; 1907	SC_1		"SC_S#,S#/1"
; 1908	SC_0		"SC_S#,S#/0."
; 1909	SC_-1		"SC_S#,S#/1777"
; 1910	SC_-2		"SC_S#,S#/1776"
; 1911	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 51
; KS10.MIC[7,3]	14:54 7-JAN-1986				MACROS -- SCAD, SC, FE LOGIC				

; 1912	FE_-FE		"SCAD/A-B,SCADA/S#,S#/0,SCADB/FE,LOAD FE"
; 1913	FE_-FE-1	"SCAD/A-B,SCADA/S#,S#/1777,SCADB/FE,LOAD FE"
; 1914	FE_FE-19	"SCAD/A+B,SCADB/FE,SCADA/S#,S#/1550,LOAD FE"
; 1915	FE_-FE+S#	"SCAD/A-B,SCADA/S#,SCADB/FE,LOAD FE"
; 1916	FE_FE+SC	"SCAD/A+B,SCADA/SC,SCADB/FE, LOAD FE"
; 1917	FE_FE.AND.S#	"SCAD/A.AND.B,SCADA/S#,SCADB/FE, LOAD FE"
; 1918	FE_P		"SCAD/A,SCADA/BYTE1, LOAD FE"
; 1919	FE_S		"SCAD/A+B, SCADA/S#, S#/0 ,SCADB/SIZE, LOAD FE"
; 1920	FE_S+2		"SCAD/A+B, SCADA/S#, S#/20, SCADB/SIZE, LOAD FE"
; 1921	FE_-S-20	"SCAD/A-B,SCADA/S#,S#/1760,SCADB/SIZE, LOAD FE"
; 1922	FE_-S-10	"SCAD/A-B,SCADA/S#,S#/1770,SCADB/SIZE, LOAD FE"
; 1923	FE_S#		"SCAD/A,SCADA/S#,LOAD FE"
; 1924	FE_S#-FE	"SCAD/A-B,SCADA/S#,SCADB/FE,LOAD FE"
; 1925	FE_-2		"FE_S#,S#/1776"
; 1926	FE_-12.		"FE_S#,S#/1764"
; 1927	FE_0		"FE_S#,S#/0"
; 1928	FE_-1		"FE_S#,S#/1777"
; 1929	FE_FE+1		"SCAD/A+B,SCADA/S#,SCADB/FE,S#/1,LOAD FE"
; 1930	FE_FE+2		"SCAD/A+B,SCADA/S#,SCADB/FE,S#/2,LOAD FE"
; 1931	FE_FE+10		"SCAD/A+B,SCADA/S#,SCADB/FE,S#/10,LOAD FE"
; 1932	FE_FE-1		"SCAD/A+B,SCADA/S#,SCADB/FE,S#/1777,LOAD FE"
; 1933	FE_FE+4		"SCAD/A+B,SCADA/S#,SCADB/FE,S#/4,LOAD FE"
; 1934	FE_EXP		"SCAD/A+B,SCADA/S#,S#/0,SCADB/EXP,LOAD FE"
; 1935	FE_SC+EXP	"SCAD/A+B,SCADA/SC,SCADB/EXP,LOAD FE"
; 1936	FE_SC-EXP	"SCAD/A-B,SCADA/SC,SCADB/EXP,LOAD FE"
; 1937	FE_FE+P		"SCAD/A+B,SCADA/BYTE1,SCADB/FE, LOAD FE"
; 1938	FE_FE-200	"SCAD/A+B,SCADA/S#,S#/1600,SCADB/FE,LOAD FE"
; 1939	FE_-FE+200	"SCAD/A-B,SCADA/S#,S#/200,SCADB/FE,LOAD FE"
; 1940	FE_FE+S#	"SCAD/A+B,SCADA/S#,SCADB/FE,LOAD FE"
; 1941	
; 1942	
; 1943	GEN 17-FE	"SCAD/A-B,SCADA/S#,S#/210,SCADB/FE"
; 1944	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 52
; KS10.MIC[7,3]	14:54 7-JAN-1986				MACROS -- DATA PATH FIELD CONTROL			

; 1945	.TOC	"MACROS -- DATA PATH FIELD CONTROL"
; 1946	
; 1947	HOLD LEFT	"CLKL/0,GENL/0"
; 1948	ADL PARITY	"GENL/1"
; 1949	CHK PARITY L	"CHKL/1"
; 1950	
; 1951	HOLD RIGHT	"CLKR/0,GENR/0"
; 1952	ADR PARITY	"GENR/1"
; 1953	CHK PARITY R	"CHKR/1"
; 1954	
; 1955	AD PARITY	"AD PARITY OK/1"
; 1956	CHK PARITY	"CHKL/1,CHKR/1"
; 1957	BAD PARITY	"CHKL/0,CHKR/0"
; 1958	
; 1959	INH CRY18	"SPEC/INHCRY18"
; 1960	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 53
; KS10.MIC[7,3]	14:54 7-JAN-1986				MACROS -- SHIFT PATH CONTROL				

; 1961	.TOC	"MACROS -- SHIFT PATH CONTROL"
; 1962	
; 1963	ASH		"SHSTYLE/NORM"	;ASH SHIFT
; 1964	LSH		"SHSTYLE/NORM"	;LSH SHIFT (SAME HARDWARE AS ASH BUT
; 1965					; BITS -2 AND -1 ARE PRESET TO ZERO)
; 1966	ROT		"SHSTYLE/ROT"
; 1967	LSHC		"SHSTYLE/LSHC"
; 1968	ASHC		"SHSTYLE/ASHC"
; 1969	ROTC		"SHSTYLE/ROTC"
; 1970	ONES		"SHSTYLE/ONES"	;SHIFT IN 1 BITS
; 1971	DIV		"SHSTYLE/DIV"	;SPECIAL PATH FOR DIVIDE (LIKE ROTC BUT
; 1972					; COMPLEMENT BIT AS IT GOES AROUND)
; 1973	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 54
; KS10.MIC[7,3]	14:54 7-JAN-1986				MACROS -- SPECIAL FUNCTIONS				

; 1974	.TOC	"MACROS -- SPECIAL FUNCTIONS"
; 1975	
; 1976	LOAD IR		"SPEC/LOADIR"	;LOAD INSTRUCTION REG FROM
; 1977					; DBUS0-DBUS8, LOAD AC# FROM
; 1978					; DBUS9-DBUS12
; 1979					; UPDATE LAST-INST-PUBLIC PC FLAG
; 1980	LOAD INST	"SPEC/LDINST"
; 1981	LOAD INST EA	"SPEC/LOADXR,PXCT/CURRENT"
; 1982	LOAD BYTE EA	"SPEC/LOADXR,PXCT/E2"
; 1983	LOAD IND EA	"SPEC/LOADXR,PXCT/E1"
; 1984	LOAD SRC EA	"SPEC/LOADXR,PXCT/BIS-SRC-EA"
; 1985	LOAD DST EA	"SPEC/LOADXR,PXCT/BIS-DST-EA"
; 1986	ADD .25		"CRY38/1"	;GENERATE CARRY IN TO BIT 37
; 1987	CALL []		"CALL/1,J/@1"	;CALL A SUBROUTINE
; 1988	LOAD PXCT	"SPEC/LDPXCT"	;LOAD PXCT FLAGS IF EXEC MODE
; 1989	TURN OFF PXCT	"SPEC/PXCT OFF"
; 1990	LOAD PAGE TABLE	"SPEC/LDPAGE"
; 1991	LOAD AC BLOCKS	"SPEC/LDACBLK"
; 1992	SWEEP		"SPEC/SWEEP,PHYSICAL/1"
; 1993	CLRCSH		"SPEC/CLRCSH,PHYSICAL/1"
; 1994	LOAD PI		"SPEC/LDPI"
; 1995	SET HALT	"SPEC/#,#/74"
; 1996	CLEAR CONTINUE	"SPEC/#,#/40"
; 1997	CLEAR EXECUTE	"SPEC/#,#/20"
; 1998	CLEAR RUN	"SPEC/#,#/10"
; 1999	UNHALT		"SPEC/#,#/62"
; 2000	SET APR ENABLES	"SPEC/APR EN"
; 2001	ABORT MEM CYCLE	"DBUS/DBM,RAMADR/VMA,DBM/MEM,AD/ZERO,SPEC/MEMCLR,LOAD VMA"
; 2002	CLR IO BUSY	"SPEC/CLR IO BUSY"
; 2003	CLR IO LATCH	"SPEC/CLR IO LATCH"
; 2004	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 55
; KS10.MIC[7,3]	14:54 7-JAN-1986				MACROS -- PC FLAGS					

; 2005	.TOC	"MACROS -- PC FLAGS"
; 2006	
; 2007	CHANGE FLAGS	"SPEC/FLAGS"
; 2008	
; 2009	SET AROV	"CHANGE FLAGS, HOLD USER/1, SETOV/1, TRAP1/1"
; 2010	SET FOV		"CHANGE FLAGS, HOLD USER/1, SETFOV/1, TRAP1/1"
; 2011	SET NO DIVIDE	"CHANGE FLAGS, HOLD USER/1, SETOV/1, SETNDV/1, TRAP1/1"
; 2012	SET FL NO DIVIDE "SET NO DIVIDE, SETFOV/1"
; 2013	
; 2014	ASH AROV	"SPEC/ASHOV"
; 2015	SET FPD		"CHANGE FLAGS, HOLD USER/1, SETFPD/1"
; 2016	CLR FPD		"CHANGE FLAGS, HOLD USER/1, CLRFPD/1"
; 2017	
; 2018	SET PDL OV	"CHANGE FLAGS, HOLD USER/1, TRAP2/1"
; 2019	SET TRAP1	"CHANGE FLAGS, HOLD USER/1, TRAP1/1"
; 2020	
; 2021	LOAD PCU	"CHANGE FLAGS, LD PCU/1"
; 2022	UPDATE USER	"CHANGE FLAGS, HOLD USER/1"
; 2023	LEAVE USER	"CHANGE FLAGS, HOLD USER/0"
; 2024	
; 2025	JFCL FLAGS	"CHANGE FLAGS, HOLD USER/1, JFCLFLG/1"
; 2026	
; 2027	LOAD FLAGS	"CHANGE FLAGS, LD FLAGS/1"
; 2028	EXP TEST	"SPEC/EXPTST"
; 2029	AD FLAGS	"CHANGE FLAGS, ADFLGS/1, HOLD USER/1"
; 2030	
; 2031	NO DIVIDE	"SET NO DIVIDE, J/NIDISP"
; 2032	FL NO DIVIDE	"SET FL NO DIVIDE, J/NIDISP"
; 2033	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 56
; KS10.MIC[7,3]	14:54 7-JAN-1986				MACROS -- PAGE FAIL FLAGS				

; 2034	.TOC	"MACROS -- PAGE FAIL FLAGS"
; 2035	
; 2036	STATE_[]	"[FLG]_#,STATE/@1,HOLD LEFT"
; 2037	END STATE	"[FLG]_0, HOLD LEFT"
; 2038	
; 2039	END BLT		"END STATE"
; 2040	END MAP		"END STATE"
; 2041	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 57
; KS10.MIC[7,3]	14:54 7-JAN-1986				MACROS -- SINGLE SKIPS					

; 2042	.TOC	"MACROS -- SINGLE SKIPS"
; 2043					;SKIPS IF:
; 2044	SKIP IF AC0	"SKIP/AC0"	;THE AC NUMBER IS ZERO
; 2045	SKIP DP0	"SKIP/DP0"	;DP BIT 0=1
; 2046	SKIP DP18	"SKIP/DP18"	;DP BIT 18=1
; 2047	SKIP AD.EQ.0	"SKIP/ADEQ0,DT/3T" ;ADDER OUTPUT IS ZERO
; 2048	SKIP AD.LE.0	"SKIP/LE,DT/3T" ;ADDER OUTPUT IS LESS THAN OR EQUAL
; 2049					; TO ZERO.
; 2050	SKIP ADL.LE.0	"SKIP/LLE,DT/3T" ;ADDER LEFT IS LESS THAN OR EQUAL
; 2051					; TO ZERO.
; 2052	SKIP FPD	"SKIP/FPD"	;FIRST-PART-DONE PC FLAG IS SET
; 2053	SKIP KERNEL	"SKIP/KERNEL"	;USER=0
; 2054	SKIP IO LEGAL	"SKIP/IOLGL"	;USER=0 OR USER IOT=1
; 2055	SKIP CRY0	"SKIP/CRY0"	;ADDER BIT CRY0=1 (NOT PC FLAG BIT)
; 2056	SKIP CRY1	"SKIP/CRY1"	;ADDER BIT CRY1=1 (NOT PC FLAG BIT)
; 2057	SKIP CRY2	"SKIP/CRY2,DT/3T"	;ADDER BIT CRY2=1
; 2058	SKIP JFCL	"SKIP/JFCL"	;IF JFCL SHOULD JUMP
; 2059	SKIP ADL.EQ.0	"SKIP/ADLEQ0"	;ALU BITS -2 TO 17 = 0
; 2060	SKIP ADR.EQ.0	"SKIP/ADREQ0"	;ALU BITS 18-35 = 0
; 2061	SKIP IRPT	"SKIP/INT"	;INTERRUPT IS PENDING
; 2062	SKIP -1MS	"SKIP/-1 MS"	;DON'T SKIP IF 1MS TIMER HAS EXPIRED.
; 2063	SKIP AC REF	"SKIP/ACREF"	;VMA IS 0-17
; 2064	SKIP EXECUTE	"SKIP/EXECUTE"	;CONSOLE EXECUTE
; 2065	TXXX TEST	"SKIP/TXXX"	;TEST INSTRUCTION SHOULD SKIP
; 2066	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 58
; KS10.MIC[7,3]	14:54 7-JAN-1986				MACROS -- SPECIAL DISPATCH MACROS			

; 2067	.TOC		"MACROS -- SPECIAL DISPATCH MACROS"
; 2068	
; 2069	NEXT INST	"DISP/NICOND,SPEC/NICOND,J/NICOND"
; 2070	NEXT INST FETCH	"DISP/NICOND,SPEC/NICOND,J/NICOND-FETCH"
; 2071	EA MODE DISP	"DISP/EAMODE,RAMADR/XR#"
; 2072	AREAD		"DISP/AREAD,WAIT/1,AREAD/1,MEM/1,J/0"
; 2073	B DISP		"DISP/BDISP"
; 2074	BWRITE DISP	"B DISP,MEM/1,BWRITE/1,WRITE CYCLE/1,J/BWRITE"
; 2075	INST DISP	"DISP/DROM,J/0"
; 2076	EXIT		"BWRITE DISP,SPEC/0, WRITE TEST/1"
; 2077	AD FLAGS EXIT	"BWRITE DISP, WRITE TEST/0, AD FLAGS"
; 2078	FL-EXIT		"WRITE CYCLE/1,WRITE TEST/1,MEM/1,BWRITE/1,B DISP,J/FL-BWRITE"
; 2079	TEST DISP	"B DISP,J/TEST-TABLE"
; 2080	SKIP-COMP DISP	"B DISP,J/SKIP-COMP-TABLE"
; 2081	JUMP DISP	"B DISP,J/JUMP-TABLE"
; 2082	DONE		"VMA_[PC],LOAD VMA, FETCH, NEXT INST FETCH"
; 2083	JUMPA		"[PC]_[AR],HOLD LEFT,LOAD VMA,FETCH,NEXT INST FETCH"
; 2084	UUO		"[HR]_[HR].AND.#,#/777740,HOLD RIGHT,J/UUOGO"
; 2085	LUUO		"[AR]_0 XWD [40], J/LUUO1"
; 2086	PAGE FAIL TRAP	"TL [FLG], FLG.PI/1, J/PFT"
; 2087	TAKE INTERRUPT	"[FLG]_[FLG].OR.#,FLG.PI/1,HOLD RIGHT,J/PI"
; 2088	INTERRUPT TRAP	"WORK[SV.AR]_[AR], J/ITRAP"
; 2089	MUL DISP	"DISP/MUL"
; 2090	DIV DISP	"DISP/DIV"
; 2091	BYTE DISP	"DISP/BYTE, DT/3T"
; 2092	SCAD DISP	"DISP/SCAD0"	;SKIP (2'S WEIGHT) IS SCAD IS MINUS
; 2093	RETURN []	"DISP/RETURN,J/@1"
; 2094	PI DISP		"DISP/PI"
; 2095	NORM DISP	"DISP/NORM,DT/3T"
; 2096	DISMISS		"TR [PI], #/077400, CALL [JEN1],DT/3T"
; 2097	CALL LOAD PI	"[T0]_[PI] SWAP, CALL [LDPI2]"
; 2098	HALT []		"AD/47,DEST/AD,B/T1,DBM/#,DBUS/DBM,HALT/@1,RSRC/DA,A/MASK, J/HALTED"
; 2099	CLEANUP DISP	"READ [FLG], DBUS/DP, DISP/DP, 3T, J/CLEANUP"
; 2100	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 59
; KS10.MIC[7,3]	14:54 7-JAN-1986				DISPATCH ROM MACROS					

; 2101	.TOC		"DISPATCH ROM MACROS"
; 2102		.DCODE
; 2103	
; 2104	;"A FIELD" MACROS SAY HOW TO FETCH ARGUMENTS
; 2105	
; 2106	I	"I/1"
; 2107	I-PF	"I/1,VMA/0,READ/1"
; 2108	R	"A/READ,READ/1"
; 2109	R-PF	"A/RD-PF,READ/1"
; 2110	W	"A/WRITE,TEST/1"
; 2111	RW	"A/READ,TEST/1,READ/1"
; 2112	IW	"I/1,TEST/1"	;IMMED WHICH STORE IN E. (SETZM, ETC.)
; 2113	IR	"I/1,READ/1"	;START READ A GO TO EXECUTE CODE
; 2114	DBL R	"A/DREAD,READ/1"	;AR!ARX _ E!E+1
; 2115	DBL AC	"A/DBLAC"
; 2116	SH	"A/SHIFT,VMA/0,READ/1"
; 2117	SHC	"A/DSHIFT,VMA/0,READ/1"
; 2118	FL-R	"A/FP,READ/1"	;FLOATING POINT READ
; 2119	FL-RW	"A/FP,READ/1,TEST/1"
; 2120	FL-I	"A/FPI,READ/0"	;FLOATING POINT IMMEDIATE
; 2121	DBL FL-R "A/DFP,READ/1"
; 2122	IOT	"A/IOT"		;CHECK FOR IO LEGAL
; 2123	
; 2124	;"B FIELD" MACROS SAY HOW TO STORE RESULTS
; 2125	
; 2126	AC	"B/AC"
; 2127	M	"B/MEM,TEST/1,COND FUNC/1"
; 2128	B	"B/BOTH,TEST/1,COND FUNC/1"
; 2129	S	"B/SELF,TEST/1,COND FUNC/1"
; 2130	DAC	"B/DBLAC"
; 2131	DBL B	"B/DBLB,TEST/1,COND FUNC/1"
; 2132	FL-AC	"FL-B/AC"			;FLOATING POINT
; 2133	FL-MEM	"FL-B/MEM,TEST/1,COND FUNC/1"	;FLOATING POINT TO MEMORY
; 2134	FL-BOTH	"FL-B/BOTH,TEST/1,COND FUNC/1"	;FLOATING POINT TO BOTH
; 2135	ROUND	"ROUND/1"			;FLOATING POINT ROUNDED
; 2136	
; 2137	
; 2138	;CONTROL BITS
; 2139	W TEST	"TEST/1"
; 2140	AC DISP	"ACDISP/1"
; 2141		.UCODE
; 2142	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 60
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			DISPATCH ROM MACROS					

							; 2143		.BIN
							; 2144	.TOC	"POWER UP SEQUENCE"
							; 2145	
							; 2146		.UCODE
							; 2147	
							; 2148	;HERE IS WHERE WE FIRE THE MACHINE UP DURING POWER ON
							; 2149	
							; 2150	
U 0000, 0002,3771,0012,4374,4007,0700,0000,0037,7777	; 2151	0:	[MASK]_#, #/377777	;BUILD A MASK WITH
U 0002, 0013,3445,1212,4174,4007,0700,0000,0000,0000	; 2152		[MASK]_[MASK]*2 	; A ONE IN 36-BITS AND 0
U 0013, 0053,3551,1212,4374,4007,0700,0000,0000,0001	; 2153		[MASK]_[MASK].OR.#,#/1	; IN BITS -2,-1,36,37
U 0053, 0061,3447,1200,4174,4007,0700,0000,0000,0000	; 2154		[MAG]_[MASK]*.5 	;MAKE CONSTANT
U 0061, 0071,3771,0015,4374,4007,0700,0000,0000,0001	; 2155		[XWD1]_#, #/1		;CONSTANT WITH 1 IN EACH
							; 2156					; HALF WORD
							; 2157		[ONE]_0 XWD [1],	;THE CONSTANT 1
U 0071, 0003,4751,1207,4374,4007,0700,0010,0000,0001	; 2158		CALL/1			;RESET STACK (CAN NEVER RETURN
							; 2159					; TO WHERE MR LEFT US)
U 0003, 0100,4751,1203,4374,4007,0700,0000,0037,6000	; 2160	3:	[AR]_0 XWD [376000]	;ADDRESS OF HALT STATUS
							; 2161					; BLOCK
U 0100, 0106,3333,0003,7174,4007,0700,0400,0000,0227	; 2162		WORK[HSBADR]_[AR]	;SAVE FOR HALT LOOP
U 0106, 0110,4221,0011,4364,4277,0700,0200,0000,0010	; 2163		[UBR]_0, ABORT MEM CYCLE ;CLEAR THE UBR AND RESET
							; 2164					; MEMORY CONTROL LOGIC
U 0110, 0125,4221,0010,4174,4477,0700,0000,0000,0000	; 2165		[EBR]_0, LOAD AC BLOCKS ;CLEAR THE EBR AND FORCE
							; 2166					; PREVIOUS AND CURRENT AC
							; 2167					; BLOCKS TO ZERO
U 0125, 0131,4221,0013,4174,4257,0700,0000,0000,0000	; 2168		[FLG]_0, SET APR ENABLES ;CLEAR THE STATUS FLAGS AND
							; 2169					; DISABLE ALL APR CONDITIONS
U 0131, 0162,3333,0013,7174,4007,0700,0400,0000,0230	; 2170		WORK[APR]_[FLG] 	;ZERO REMEMBERED ENABLES
							; 2171	
U 0162, 0212,3333,0013,7174,4007,0700,0400,0000,0300	; 2172		WORK[TIME0]_[FLG]	;CLEAR TIME BASE
U 0212, 0214,3333,0013,7174,4007,0700,0400,0000,0301	; 2173		WORK[TIME1]_[FLG]	; ..
							; 2174	.IF/FULL
U 0214, 0223,4223,0000,1174,4007,0700,0400,0000,1443	; 2175		AC[BIN0]_0		;COMPUTE A TABLE OF POWERS OF
U 0223, 0226,3333,0007,1174,4007,0700,0400,0000,1444	; 2176		AC[BIN1]_1		; TEN
U 0226, 0235,4221,0003,4174,4007,0700,2000,0071,0023	; 2177		[AR]_0, SC_19.		;WE WANT TO GET 22 NUMBERS
U 0235, 0242,3333,0007,7174,4007,0700,0400,0000,0344	; 2178		WORK[DECLO]_1		;STARTING WITH 1
U 0242, 0244,4223,0000,7174,4007,0700,0400,0000,0373	; 2179		WORK[DECHI]_0		; ..
U 0244, 0311,3771,0002,4374,4007,0700,0000,0000,0344	; 2180		[HR]_#, WORK/DECLO	;ADDRESS OF LOW WORD
U 0311, 0323,3771,0006,4374,4007,0700,0000,0000,0373	; 2181		[BRX]_#, WORK/DECHI	;ADDRESS OF HIGH WORD
U 0323, 0010,0111,0706,4174,4007,0700,0200,0000,0010	; 2182	TENLP:	[BRX]_[BRX]+1, LOAD VMA ;ADDRESS THE HIGH WORD
							; 2183	=0*	[ARX]_AC[BIN1], 	;LOW WORD TO ARX
U 0010, 0560,3771,0004,1276,6007,0701,0010,0000,1444	; 2184		CALL [DBSLOW]		;MULTIPLY BY TEN
U 0012, 0324,3333,0005,6174,4007,0700,0400,0000,0000	; 2185		RAM_[BR]		;SAVE HIGH WORD
U 0324, 0334,0111,0702,4174,4007,0700,0200,0000,0010	; 2186		[HR]_[HR]+1, LOAD VMA	;WHERE TO STORE LOW WORD
U 0334, 0224,3333,0004,6174,4007,0630,2400,0060,0000	; 2187		RAM_[ARX], STEP SC	;STORE LOW WORD AND SEE IF
							; 2188					; WE ARE DONE
U 0224, 0323,4443,0000,4174,4007,0700,0000,0000,0000	; 2189	=0	J/TENLP 		;NOT YET--KEEP GOING
U 0225, 0140,6553,0500,4374,4007,0321,0000,0033,0656	; 2190		[BR].XOR.#, 3T, SKIP ADL.EQ.0, #/330656
							; 2191					;DID WE GET THE RIGHT ANSWER
							; 2192					; IN THE TOP 18 BITS?
U 0140, 0104,4751,1217,4374,4007,0700,0000,0000,1005	; 2193	=0**0	HALT [MULERR]		;NO--CPU IS BROKEN
							; 2194	.ENDIF/FULL
							; 2195	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 61
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			POWER UP SEQUENCE					

U 0141, 3607,4221,0014,4174,4007,0700,0010,0000,0000	; 2196	=0**1	[PI]_0, CALL [LOADPI]	;CLEAR PI STATE
							; 2197	=1**1				;CLEAR REGISTERS SO NO
							; 2198					;PARITY ERROR HAPPEN
							;;2199	.IFNOT/FULL
							;;2200		[ARX]_0 		;WRITTEN WHILE COMPUTING POWERS
							;;2201		[BR]_0			;OF 10
							;;2202		[BRX]_0
							; 2203	.ENDIF/FULL
U 0151, 0343,4751,1217,4374,4007,0700,0000,0000,0120	; 2204		[T1]_0 XWD [120]	;RH OF 120 CONTAINS START ADDRESS
							; 2205					; FOR SIMULATOR. FOR THE REAL
							; 2206					; MACHINE IT IS JUST DATA WITH
							; 2207					; GOOD PARITY.
							; 2208	=
							; 2209	;THE CODE UNDER .IF/SIM MUST USE THE SAME ADDRESS AS THE CODE
							; 2210	; UNDER .IFNOT/SIM SO THAT MICROCODE ADDRESSES DO NOT CHANGE BETWEEN
							; 2211	; VERSIONS
							;;2212	.IF/SIM
							;;2213		VMA_[T1], START READ	;READ THE WORD
							;;2214		MEM READ, [PC]_MEM, HOLD LEFT, J/START
							;;2215					;GO FIRE UP SIMULATOR AT THE
							;;2216					; PROGRAMS STARTING ADDRESS
							; 2217	.IFNOT/SIM
							; 2218		[PC]_0, 		;CLEAR LH OF PC
							; 2219		LEAVE USER,		;ENTER EXEC MODE
U 0343, 0346,4221,0001,4174,4467,0700,0000,0000,0004	; 2220		LOAD FLAGS		;CLEAR TRAP FLAGS
							; 2221		[T1]_#, HALT/POWER,	;LOAD T1 WITH POWER UP CODE
U 0346, 0116,3771,0017,4374,4007,0700,0000,0000,0000	; 2222		J/PWRON			;ENTER HALT LOOP. DO NOT STORE
							; 2223					; HALT STATUS BLOCK
							; 2224	.ENDIF/SIM
							; 2225	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 62
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			THE INSTRUCTION LOOP -- START NEXT INSTRUCTION		

							; 2226	.TOC	"THE INSTRUCTION LOOP -- START NEXT INSTRUCTION"
							; 2227	
							; 2228	;ALL INSTRUCTIONS EXCEPT JUMP'S AND UUO'S END UP HERE
							; 2229	1400:
U 1400, 0110,3443,0100,4174,4156,4700,0200,0014,0012	; 2230	DONE:	DONE
U 1401, 0110,0111,0701,4170,4156,4700,0200,0014,0012	; 2231	1401:	VMA_[PC]+1, NEXT INST FETCH, FETCH
							; 2232	=0
U 0260, 0110,0111,0701,4170,4156,4700,0200,0014,0012	; 2233	SKIP:	VMA_[PC]+1, NEXT INST FETCH, FETCH
U 0261, 0110,3443,0100,4174,4156,4700,0200,0014,0012	; 2234		DONE
							; 2235	
							; 2236	
							; 2237	;16-WAY DISPATCH BASED ON NEXT INSTRUCTION
							; 2238	=0000
							; 2239	NICOND:
							; 2240	=0001	[AR]_0 XWD [423],	;TRAP TYPE 3
							; 2241					; GET ADDRESS OF TRAP INST
							; 2242		TURN OFF PXCT,		;CLEAR PXCT
U 0101, 3474,4751,1203,4374,4367,0700,0000,0000,0423	; 2243		J/TRAP			;PROCESS TRAP (INOUT.MIC)
							; 2244	=0010	[AR]_0 XWD [422],	;TRAP TYPE 2
							; 2245		TURN OFF PXCT,		;CLEAR PXCT
U 0102, 3474,4751,1203,4374,4367,0700,0000,0000,0422	; 2246		J/TRAP			;GO TRAP
							; 2247	=0011	[AR]_0 XWD [421],	;TRAP TYPE 1
							; 2248		TURN OFF PXCT,		;TURN OF PXCT
U 0103, 3474,4751,1203,4374,4367,0700,0000,0000,0421	; 2249		J/TRAP			;GO TRAP
U 0105, 0104,4751,1217,4374,4007,0700,0000,0000,0002	; 2250	=0101	HALT [CSL]		;"HA" COMMAND TO 8080
							; 2251	=0111
							; 2252		VMA_[PC],		;LOAD VMA
							; 2253		FETCH,			;INDICATE INSTRUCTION FETCH
U 0107, 0117,3443,0100,4174,4007,0700,0200,0014,0012	; 2254		J/XCTGO 		;GO GET INSTRUCTION
							; 2255	;THE NEXT SET OF CASES ARE USED WHEN THERE IS A FETCH
							; 2256	; IN PROGESS
							; 2257	=1000
							; 2258	NICOND-FETCH:
							; 2259	=1001	[AR]_0 XWD [423],	;TRAP TYPE 3
							; 2260		TURN OFF PXCT,
U 0111, 3474,4751,1203,4374,4367,0700,0000,0000,0423	; 2261		J/TRAP
							; 2262	=1010	[AR]_0 XWD [422],	;TRAP TYPE 2
							; 2263		TURN OFF PXCT,
U 0112, 3474,4751,1203,4374,4367,0700,0000,0000,0422	; 2264		J/TRAP
							; 2265	=1011	[AR]_0 XWD [421],	;TRAP TYPE 1
							; 2266		TURN OFF PXCT,
U 0113, 3474,4751,1203,4374,4367,0700,0000,0000,0421	; 2267		J/TRAP
U 0115, 0104,4751,1217,4374,4007,0700,0000,0000,0002	; 2268	=1101	HALT [CSL]		;"HA" COMMAND TO 8080
							; 2269	=1111
							; 2270	XCTGO:	MEM READ,		;WAIT FOR MEMORY
							; 2271		[HR]_MEM,		;PUT DATA IN HR
							; 2272		LOAD INST,		;LOAD IR & AC #
U 0117, 0363,3771,0002,4365,5617,0700,0200,0000,0002	; 2273		J/INCPC 		;GO BUMP PC
							; 2274	=
							; 2275	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 63
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			THE INSTRUCTION LOOP -- START NEXT INSTRUCTION		

							; 2276	;HERE WE POINT PC TO NEXT INSTRUCTION WHILE WE WAIT FOR
							; 2277	; EFFECTIVE ADDRESS LOGIC TO SETTLE
							; 2278	INCPC:	VMA_[PC]+1,		;ADDRESS OF NEXT INSTRUCTION
							; 2279		FETCH/1,		;INSTRUCTION FETCH
							; 2280		TURN OFF PXCT,		;CLEAR EFFECT OF PXCT
U 0363, 0201,0111,0701,2170,4366,6700,0200,0010,0010	; 2281		EA MODE DISP		;DISPACTH OF INDEXING AND @
							; 2282	
							; 2283	;MAIN EFFECTIVE ADDRESS CALCULATION
							; 2284	=0001
							; 2285	EACALC:
							; 2286	;
							; 2287	;	THE FIRST 4 CASES ARE USED ONLY FOR JRST
							; 2288	;
							; 2289	
							; 2290	;CASE 0 -- JRST 0,FOO(XR)
							; 2291		[PC]_[HR]+XR,		;UPDATE PC
							; 2292		HOLD LEFT,		;ONLY RH
							; 2293		LOAD VMA, FETCH,	;START GETTING IT
U 0201, 0110,0551,0201,2270,4156,4700,0200,0014,0012	; 2294		NEXT INST FETCH 	;START NEXT INST
							; 2295	
							; 2296	;CASE 2 -- JRST 0,FOO
							; 2297		[PC]_[HR],		;NEW PC
							; 2298		HOLD LEFT,		;ONLY RH
							; 2299		LOAD VMA, FETCH,	;START GETTING IT
U 0203, 0110,3441,0201,4170,4156,4700,0200,0014,0012	; 2300		NEXT INST FETCH 	;START NEXT INST
							; 2301	
							; 2302	;CASE 4 -- JRST 0,@FOO(XR)
							; 2303		[HR]_[HR]+XR,		;ADD IN INDEX
							; 2304		START READ,		;START TO FETCH @ WORD
							; 2305		LOAD VMA,		;PUT ADDRESS IN VMA
U 0205, 0366,0551,0202,2270,4007,0700,0200,0004,0012	; 2306		J/FETIND		;GO DO MEM WAIT (FORGET ABOUT JRST)
							; 2307	
							; 2308	;CASE 6 -- JRST 0,@FOO
							; 2309		VMA_[HR],		;LOAD UP ADDRESS
							; 2310		START READ,		;START TO FETCH @ WORD
U 0207, 0366,3443,0200,4174,4007,0700,0200,0004,0012	; 2311		J/FETIND		;GO DO MEM WAIT (FORGET ABOUT JRST)
							; 2312	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 64
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			THE INSTRUCTION LOOP -- START NEXT INSTRUCTION		

							; 2313	;
							; 2314	;THESE 4 ARE FOR THE NON-JRST CASE
							; 2315	;
							; 2316	
							; 2317	;CASE 10 -- JUST INDEXING
							; 2318	INDEX:	[HR]_[HR]+XR,		;ADD IN INDEX REGISTER
U 0211, 0213,0551,0202,2270,4007,0700,0000,0000,0000	; 2319		HOLD LEFT		;JUST DO RIGHT HALF
							; 2320	
							; 2321	;CASE 12 -- NO INDEXING OR INDIRECT
							; 2322	NOMOD:	[AR]_EA,		;PUT 0,,E IN AR
U 0213, 0000,5741,0203,4174,4001,3700,0200,0000,0342	; 2323		PXCT DATA, AREAD	;DO ONE OR MORE OF THE FOLLWING
							; 2324					; ACCORDING TO THE DROM:
							; 2325					;1. LOAD VMA
							; 2326					;2. START READ OR WRITE
							; 2327					;3. DISPATCH TO 40-57
							; 2328					;   OR DIRECTLY TO EXECUTE CODE
							; 2329	
							; 2330	;CASE 14 -- BOTH INDEXING AND INDIRECT
							; 2331	BOTH:	[HR]_[HR]+XR,		;ADD IN INDEX REGISTER
							; 2332		LOAD VMA, PXCT EA,	;PUT ADDRESS IN VMA
U 0215, 0366,0551,0202,2270,4007,0700,0200,0004,0112	; 2333		START READ, J/FETIND	;START CYCLE AND GO WAIT FOR DATA
							; 2334	
							; 2335	;CASE 16 -- JUST INDIRECT
							; 2336	INDRCT: VMA_[HR],		;LOAD ADDRESS OF @ WORD
U 0217, 0366,3443,0200,4174,4007,0700,0200,0004,0112	; 2337		START READ, PXCT EA	;START CYCLE
							; 2338	
							; 2339	
							; 2340	;HERE TO FETCH INDIRECT WORD
							; 2341	FETIND: MEM READ, [HR]_MEM,	;GET DATA WORD
							; 2342		HOLD LEFT,		;JUST RIGHT HALF
U 0366, 0371,3771,0002,4361,5217,0700,0200,0000,0102	; 2343		LOAD IND EA		;RELOAD @ AND INDEX FLOPS
							; 2344	
							; 2345	XCT2:	VMA_[PC],		;PUT PC BACK IN VMA
							; 2346		FETCH/1,		;TURN ON FETCH FLAG
							; 2347		EA MODE DISP,		;REDO CALCULATION FOR
U 0371, 0201,3443,0100,2174,4006,6700,0200,0010,0010	; 2348		J/EACALC		; NEW WORD
							; 2349	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 65
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			THE INSTRUCTION LOOP -- FETCH ARGUMENTS			

							; 2350	.TOC	"THE INSTRUCTION LOOP -- FETCH ARGUMENTS"
							; 2351	;HERE ON AREAD DISP TO HANDLE VARIOUS CASES OF ARGUMENT FETCH
							; 2352	
							; 2353	;CASE 0 -- READ (E)
							; 2354	40:	MEM READ,		;WAIT FOR DATA
							; 2355		[AR]_MEM,		;PUT WORD IN AR
U 0040, 0000,3771,0003,4365,5001,2700,0200,0000,0002	; 2356		INST DISP		;GO TO EXECUTE CODE
							; 2357	
							; 2358	;CASE 1 -- WRITE (E)
							; 2359	41:	[AR]_AC,		;PUT AC IN AR
U 0041, 0000,3771,0003,0276,6001,2700,0000,0000,0000	; 2360		INST DISP		;GO TO EXECUTE CODE
							; 2361	
							; 2362	;CASE 2 -- DOUBLE READ
							; 2363	42:	MEM READ,		;WAIT FOR DATA
U 0042, 0401,3771,0003,4365,5007,0700,0200,0000,0002	; 2364		[AR]_MEM		;PUT HI WORD IN AR
							; 2365		VMA_[HR]+1, PXCT DATA,	;POINT TO E+1
U 0401, 0406,0111,0702,4170,4007,0700,0200,0004,0312	; 2366		START READ		;START MEMORY CYCLE
							; 2367		MEM READ,		;WAIT FOR DATA
							; 2368		[ARX]_MEM,		;LOW WORD IN ARX
U 0406, 0000,3771,0004,4365,5001,2700,0200,0000,0002	; 2369		INST DISP		;GO TO EXECUTE CODE
							; 2370	
							; 2371	;CASE 3 -- DOUBLE AC
U 0043, 0415,3771,0003,0276,6007,0700,0000,0000,0000	; 2372	43:	[AR]_AC 		;GET HIGH AC
							; 2373		[ARX]_AC[1],		;PUT C(AC+1) IN ARX
U 0415, 0000,3771,0004,1276,6001,2701,0000,0000,1441	; 2374		INST DISP		;GO TO EXECUTE CODE
							; 2375	
							; 2376	;CASE 4 -- SHIFT
							; 2377	44:
							; 2378	SHIFT:	READ [AR],		;LOOK AT EFFECTIVE ADDRESS
							; 2379		SKIP DP18,		;SEE IF LEFT OR RIGHT
							; 2380		SC_SHIFT-1,		;PUT NUMBER OF PLACES TO SHIFT IN
							; 2381		LOAD FE,		; SC AND FE
U 0044, 0000,3333,0003,4174,4001,2530,3000,0041,5777	; 2382		INST DISP		;GO DO THE SHIFT
							; 2383	
							; 2384	;CASE 5 -- SHIFT COMBINED
U 0045, 0416,3772,0000,1275,5007,0701,0000,0000,1441	; 2385	45:	Q_AC[1] 		;PUT LOW WORD IN Q
U 0416, 0431,3776,0005,0274,4007,0701,0000,0000,0000	; 2386		[BR]_AC*.5 LONG 	;PUT AC IN BR & SHIFT BR!Q RIGHT
							; 2387		[BR]_[BR]*.5 LONG,	;SHIFT BR!Q 1 MORE PLACE RIGHT
U 0431, 0044,3446,0505,4174,4007,0700,0000,0000,0000	; 2388		J/SHIFT 		;GO DO SHIFT SETUP
							; 2389	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 66
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			THE INSTRUCTION LOOP -- FETCH ARGUMENTS			

							; 2390	;CASE 6 -- FLOATING POINT IMMEDIATE
							; 2391	46:	[AR]_[AR] SWAP,		;FLIP BITS TO LEFT HALF
U 0046, 0372,3770,0303,4344,4007,0700,0000,0000,0000	; 2392		J/FPR0			;JOIN COMMON F.P. CODE
							; 2393	
							; 2394	;CASE 7 -- FLOATING POINT
							; 2395	47:	MEM READ,		;WAIT FOR MEMORY (SPEC/MEM WAIT)
U 0047, 0372,3771,0003,4365,5007,0700,0200,0000,0002	; 2396		[AR]_MEM		;DATA INTO AR
							; 2397	=0
							; 2398	FPR0:	READ [AR],		;LOOK AT NUMBER
							; 2399		SC_EXP, FE_EXP, 	;PUT EXPONENT IN SC & FE
							; 2400		SKIP DP0,		;SEE IF NEGATIVE
U 0372, 0412,3333,0003,4174,4007,0520,3010,0041,2000	; 2401		CALL [ARSIGN]		;EXTEND AR SIGN
							; 2402	FPR1:	[ARX]_0,		;ZERO ARX
U 0373, 0000,4221,0004,4174,4001,2700,0000,0000,0000	; 2403		INST DISP		;GO TO EXECUTE CODE
							; 2404	
							; 2405	;CASE 10 -- READ THEN PREFETCH
							; 2406	50:	MEM READ,		;WAIT FOR DATA
							; 2407		[AR]_MEM THEN FETCH,	;PUT DATA IN AR AND START A READ
							; 2408					; VMA HAS PC+1.
U 0050, 0000,3770,0103,4365,5001,2700,0200,0014,0012	; 2409		INST DISP		;GO DO IT
							; 2410	
							; 2411	;CASE 11 -- DOUBLE FLOATING READ
							; 2412	51:	SPEC MEM READ,		;WAIT FOR DATA
							; 2413		[BR]_MEM,		;HOLD IN BR
							; 2414		SC_EXP, FE_EXP, 	;SAVE EXPONENT
U 0051, 0402,3771,0005,4365,5177,0521,3000,0041,2000	; 2415		SKIP DP0, 3T		;SEE IF MINUS
							; 2416	=0	[AR]_[AR]+1,		;POINT TO E+1
							; 2417		LOAD VMA, PXCT DATA,	;PUT IN VMA
U 0402, 0445,0111,0703,4174,4007,0700,0200,0004,0312	; 2418		START READ, J/DFPR1	;GO GET POSITIVE DATA
							; 2419		[AR]_[AR]+1,		;POINT TO E+1
							; 2420		LOAD VMA, PXCT DATA,	;PUT IN VMA
U 0403, 0432,0111,0703,4174,4007,0700,0200,0004,0312	; 2421		START READ		;GO GET NEGATIVE DATA
							; 2422		[BR]_-SIGN,		;SMEAR MINUS SIGN
U 0432, 0451,3551,0505,4374,0007,0700,0000,0077,7000	; 2423		J/DFPR2 		;CONTINUE BELOW
U 0445, 0451,4551,0505,4374,0007,0700,0000,0000,0777	; 2424	DFPR1:	[BR]_+SIGN		;SMEAR PLUS SIGN
							; 2425	DFPR2:	MEM READ, 3T,		;WAIT FOR MEMORY
							; 2426		[ARX]_(MEM.AND.[MAG])*.5,
U 0451, 0452,4557,0004,4365,5007,0701,0200,0000,0002	; 2427		ASH			;SET SHIFT PATHS
U 0452, 0467,3447,0503,4174,4007,0700,0000,0000,0000	; 2428		[AR]_[BR]*.5		;SHIFT AR
							; 2429		[AR]_[AR]*.5,		;COMPLETE SHIFTING
U 0467, 0471,3447,0303,4174,4007,0700,2000,0011,0000	; 2430		SC_FE			;PAGE FAIL MAY HAVE ZAPPED
							; 2431					; THE SC.
							; 2432		VMA_[PC], FETCH,	;GET NEXT INST
U 0471, 0000,3443,0100,4174,4001,2700,0200,0014,0012	; 2433		INST DISP		;DO THIS ONE
							; 2434	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 67
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			THE INSTRUCTION LOOP -- FETCH ARGUMENTS			

							; 2435	;CASE 12 -- TEST FOR IO LEGAL
U 0052, 0404,4443,0000,4174,4007,0040,0000,0000,0000	; 2436	52:	SKIP IO LEGAL		;IS IO LEGAL?
U 0404, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 2437	=0	UUO			;NO
U 0405, 0000,4443,0000,4174,4001,2700,0000,0000,0000	; 2438		INST DISP		;YES--DO THE INSTRUCTION
							; 2439	
							; 2440	
							; 2441	;CASE 13 -- RESERVED
							; 2442	;53:
							; 2443	
							; 2444	;CASE 14 -- RESERVED
							; 2445	;54:
							; 2446	
							; 2447	;CASE 15 -- RESERVED
							; 2448	;55:
							; 2449	
							; 2450	;CASE 16 -- RESERVED
							; 2451	;56:
							; 2452	
							; 2453	;CASE 17 -- RESERVED
							; 2454	;57:
							; 2455	
							; 2456	;EXTEND AR SIGN.
							; 2457	;CALL WITH SKIP ON AR0, RETURNS 1 ALWAYS
							; 2458	=0
U 0412, 0001,4551,0303,4374,0004,1700,0000,0000,0777	; 2459	ARSIGN:	[AR]_+SIGN, RETURN [1]	;EXTEND + SIGN
U 0413, 0001,3551,0303,4374,0004,1700,0000,0077,7000	; 2460		[AR]_-SIGN, RETURN [1]	;EXTEND - SIGN
							; 2461	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 68
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			THE INSTRUCTION LOOP -- STORE ANSWERS			

							; 2462	.TOC	"THE INSTRUCTION LOOP -- STORE ANSWERS"
							; 2463	
							; 2464	;NOTE:	INSTRUCTIONS WHICH STORE IN BOTH AC AND MEMORY
							; 2465	;	(E.G. ADDB, AOS)  MUST STORE IN MEMORY FIRST
							; 2466	;	SO THAT IF A PAGE FAIL HAPPENS THE  AC IS
							; 2467	;	STILL INTACT.
							; 2468	
							; 2469	1500:
							; 2470	BWRITE: ;BASE ADDRESS OF BWRITE DISPATCH
							; 2471	
							; 2472	;CASE 0 -- RESERVED
							; 2473	;1500:
							; 2474	
							; 2475	;CASE 1  --  RESERVED
							; 2476	;1501:
							; 2477	
							; 2478	;CASE 2  --  RESERVED
							; 2479	;1502:
							; 2480	
							; 2481	;CASE 3  --  RESERVED
							; 2482	;1503:
							; 2483	
							; 2484	;CASE 4 -- STORE SELF
							; 2485	1504:
							; 2486	STSELF: SKIP IF AC0,		;IS AC # ZERO?
U 1504, 0434,4443,0000,4174,4007,0360,0000,0000,0000	; 2487		J/STBTH1		;GO TO STORE BOTH CASE
							; 2488	
							; 2489	;CASE 5 -- STORE DOUBLE AC
							; 2490	1505:
							; 2491	DAC:	AC[1]_[ARX],		;STORE AC 1
U 1505, 1515,3440,0404,1174,4007,0700,0400,0000,1441	; 2492		J/STAC			;GO STORE AC
							; 2493	
							; 2494	;CASE 6 -- STORE DOUBLE BOTH (KA10 STYLE MEM_AR ONLY)
							; 2495	1506:
							; 2496	STDBTH: MEM WRITE,		;WAIT FOR MEMORY
							; 2497		MEM_[AR],		;STORE AR
U 1506, 1505,3333,0003,4175,5007,0701,0200,0000,0002	; 2498		J/DAC			;NOW STORE AC & AC+1
							; 2499	
							; 2500	;CASE 7 -- RESERVED
							; 2501	;1507:
							; 2502	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 69
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			THE INSTRUCTION LOOP -- STORE ANSWERS			

							; 2503	;CASE 10  --  RESERVED
							; 2504	;1510:
							; 2505	
							; 2506	;CASE 11  --  RESERVED
							; 2507	;1511:
							; 2508	
							; 2509	;CASE 12  --  RESERVED
							;