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
							; 2510	;1512:
							; 2511	
							; 2512	;CASE 13  --  RESERVED
							; 2513	;1513:
							; 2514	
							; 2515	;CASE 14  --  RESERVED
							; 2516	1514:
							; 2517	FL-BWRITE:			;THE NEXT 4 CASES ARE ALSO 
							; 2518					;USED IN FLOATING POINT
U 1514, 0104,4751,1217,4374,4007,0700,0000,0000,1000	; 2519		HALT	[BW14]
							; 2520	
							; 2521	;CASE 15 -- STORE AC
							; 2522	1515:
							; 2523	STAC:	AC_[AR],		;STORE AC
U 1515, 0100,3440,0303,0174,4156,4700,0400,0000,0000	; 2524		NEXT INST		;DO NEXT INSTRUCTION
							; 2525	
							; 2526	;CASE 16 -- STORE IN MEMORY
							; 2527	1516:
							; 2528	STMEM:	MEM WRITE,		;WAIT FOR MEMORY
							; 2529		MEM_[AR],		;STORE AR
U 1516, 1400,3333,0003,4175,5007,0701,0200,0000,0002	; 2530		J/DONE			;START FETCH OF NEXT
							; 2531	
							; 2532	;CASE 17 -- STORE BOTH
							; 2533	1517:
							; 2534	STBOTH: MEM WRITE,		;WAIT FOR MEMORY
							; 2535		MEM_[AR],		;STORE AR
U 1517, 1515,3333,0003,4175,5007,0701,0200,0000,0002	; 2536		J/STAC			;NOW STORE AC
							; 2537	
							; 2538	=0
							; 2539	STBTH1: MEM WRITE,		;WAIT FOR MEMORY
							; 2540		MEM_[AR],		;STORE AR
U 0434, 1515,3333,0003,4175,5007,0701,0200,0000,0002	; 2541		J/STAC			;NOW STORE AC
							; 2542	STORE:	MEM WRITE,		;WAIT FOR MEMORY
							; 2543		MEM_[AR],		;STORE AC
U 0435, 1400,3333,0003,4175,5007,0701,0200,0000,0002	; 2544		J/DONE			;START NEXT INST
							; 2545	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 70
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			MOVE GROUP						

							; 2546	.TOC	"MOVE GROUP"
							; 2547	
							; 2548		.DCODE
D 0200, 1015,1515,1100					; 2549	200:	R-PF,	AC,	J/STAC		;MOVE
D 0201, 0015,1515,3000					; 2550		I-PF,	AC,	J/STAC		;MOVEI
D 0202, 0116,1404,0700					; 2551		W,	M,	J/MOVE		;MOVEM
D 0203, 0004,1504,1700					; 2552		RW,	S,	J/STSELF	;MOVES
							; 2553	
D 0204, 1015,1402,1100					; 2554	204:	R-PF,	AC,	J/MOVS		;MOVS
D 0205, 0015,1402,3000					; 2555		I-PF,	AC,	J/MOVS		;MOVSI
D 0206, 0116,1402,0700					; 2556		W,	M,	J/MOVS		;MOVSM
D 0207, 0004,1402,1700					; 2557		RW,	S,	J/MOVS		;MOVSS
							; 2558	
D 0210, 1015,1405,1100					; 2559	210:	R-PF,	AC,	J/MOVN		;MOVN
D 0211, 0015,1405,3000					; 2560		I-PF,	AC,	J/MOVN		;MOVNI
D 0212, 0116,1405,0700					; 2561		W,	M,	J/MOVN		;MOVNM
D 0213, 0004,1405,1700					; 2562		RW,	S,	J/MOVN		;MOVNS
							; 2563	
D 0214, 1015,1403,1100					; 2564	214:	R-PF,	AC,	J/MOVM		;MOVM
D 0215, 0015,1515,3000					; 2565		I-PF,	AC,	J/STAC		;MOVMI
D 0216, 0116,1403,0700					; 2566		W,	M,	J/MOVM		;MOVMM
D 0217, 0004,1403,1700					; 2567		RW,	S,	J/MOVM		;MOVNS
							; 2568		.UCODE
							; 2569	
							; 2570	1402:
U 1402, 1500,3770,0303,4344,4003,7700,0200,0003,0001	; 2571	MOVS:	[AR]_[AR] SWAP,EXIT
							; 2572	
							; 2573	1403:
U 1403, 1404,3333,0003,4174,4007,0520,0000,0000,0000	; 2574	MOVM:	READ [AR], SKIP DP0, J/MOVE
							; 2575	
							; 2576	1404:
U 1404, 1500,4443,0000,4174,4003,7700,0200,0003,0001	; 2577	MOVE:	EXIT
							; 2578	1405:
							; 2579	MOVN:	[AR]_-[AR],		;NEGATE NUMBER
							; 2580		AD FLAGS, 3T,		;UPDATE FLAGS
U 1405, 1404,2441,0303,4174,4467,0701,4000,0001,0001	; 2581		J/MOVE			;STORE ANSWER
							; 2582	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 71
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			EXCH							

							; 2583	.TOC	"EXCH"
							; 2584	
							; 2585		.DCODE
D 0250, 0015,1406,1500					; 2586	250:	R,W TEST,	AC,	J/EXCH
							; 2587		.UCODE
							; 2588	
							; 2589	1406:
							; 2590	EXCH:	[BR]_AC,		;COPY AC TO THE BR
U 1406, 0506,3771,0005,0276,6007,0700,0200,0003,0002	; 2591		START WRITE		;START A WRITE CYCLE
							; 2592		MEM WRITE,		;COMPLETE WRITE CYCLE
							; 2593		MEM_[BR],		;STORE BR (AC) IN MEMORY
U 0506, 1515,3333,0005,4175,5007,0701,0200,0000,0002	; 2594		J/STAC			;STORE THE AR IN AC. NOTE: AR
							; 2595					; WAS LOADED WITH MEMORY OPERAND
							; 2596					; AS PART OF INSTRUCTION DISPATCH
							; 2597	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 72
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			HALFWORD GROUP						

							; 2598	.TOC	"HALFWORD GROUP"
							; 2599	;	DESTINATION LEFT HALF
							; 2600	
							; 2601		.DCODE
D 0500, 1015,1410,1100					; 2602	500:	R-PF,	AC,	J/HLL
D 0501, 0015,1410,3000					; 2603		I-PF,	AC,	J/HLL
D 0502, 0016,1407,1700					; 2604		RW,	M,	J/HRR		;HLLM = HRR EXCEPT FOR STORE
D 0503, 0004,1404,1700					; 2605		RW,	S,	J/MOVE		;HLLS = MOVES
							; 2606	
D 0504, 1015,1411,1100					; 2607		R-PF,	AC,	J/HRL
D 0505, 0015,1411,3000					; 2608		I-PF,	AC,	J/HRL
D 0506, 0016,1413,1700					; 2609		RW,	M,	J/HRLM
D 0507, 0004,1414,1700					; 2610		RW,	S,	J/HRLS
							; 2611	
D 0510, 1015,1432,1100					; 2612	510:	R-PF,	AC,	J/HLLZ
D 0511, 0015,1432,3000					; 2613		I-PF,	AC,	J/HLLZ
D 0512, 0116,1432,0700					; 2614		W,	M,	J/HLLZ
D 0513, 0004,1432,1700					; 2615		RW,	S,	J/HLLZ
							; 2616	
D 0514, 1015,1424,1100					; 2617		R-PF,	AC,	J/HRLZ
D 0515, 0015,1424,3000					; 2618		I-PF,	AC,	J/HRLZ
D 0516, 0116,1424,0700					; 2619		W,	M,	J/HRLZ
D 0517, 0004,1424,1700					; 2620		RW,	S,	J/HRLZ
							; 2621	
D 0520, 1015,1433,1100					; 2622	520:	R-PF,	AC,	J/HLLO
D 0521, 0015,1433,3000					; 2623		I-PF,	AC,	J/HLLO
D 0522, 0116,1433,0700					; 2624		W,	M,	J/HLLO
D 0523, 0004,1433,1700					; 2625		RW,	S,	J/HLLO
							; 2626	
D 0524, 1015,1425,1100					; 2627		R-PF,	AC,	J/HRLO
D 0525, 0015,1425,3000					; 2628		I-PF,	AC,	J/HRLO
D 0526, 0116,1425,0700					; 2629		W,	M,	J/HRLO
D 0527, 0004,1425,1700					; 2630		RW,	S,	J/HRLO
							; 2631	
D 0530, 1015,1430,1100					; 2632	530:	R-PF,	AC,	J/HLLE
D 0531, 0015,1430,3000					; 2633		I-PF,	AC,	J/HLLE
D 0532, 0116,1430,0700					; 2634		W,	M,	J/HLLE
D 0533, 0004,1430,1700					; 2635		RW,	S,	J/HLLE
							; 2636	
D 0534, 1015,1422,1100					; 2637		R-PF,	AC,	J/HRLE
D 0535, 0015,1422,3000					; 2638		I-PF,	AC,	J/HRLE
D 0536, 0116,1422,0700					; 2639		W,	M,	J/HRLE
D 0537, 0004,1422,1700					; 2640		RW,	S,	J/HRLE
							; 2641	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 73
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			HALFWORD GROUP						

							; 2642	;	DESTINATION RIGHT HALF
							; 2643	
D 0540, 1015,1407,1100					; 2644	540:	R-PF,	AC,	J/HRR
D 0541, 0015,1407,3000					; 2645		I-PF,	AC,	J/HRR
D 0542, 0016,1410,1700					; 2646		RW,	M,	J/HLL		;HRRM = HLL EXCEPT FOR STORE
D 0543, 0004,1404,1700					; 2647		RW,	S,	J/MOVE		;HRRS = MOVES
							; 2648	
D 0544, 1015,1412,1100					; 2649		R-PF,	AC,	J/HLR
D 0545, 0015,1412,3000					; 2650		I-PF,	AC,	J/HLR
D 0546, 0016,1415,1700					; 2651		RW,	M,	J/HLRM
D 0547, 0004,1416,1700					; 2652		RW,	S,	J/HLRS
							; 2653	
D 0550, 1015,1420,1100					; 2654	550:	R-PF,	AC,	J/HRRZ
D 0551, 0015,1420,3000					; 2655		I-PF,	AC,	J/HRRZ
D 0552, 0116,1420,0700					; 2656		W,	M,	J/HRRZ
D 0553, 0004,1420,1700					; 2657		RW,	S,	J/HRRZ
							; 2658	
D 0554, 1015,1426,1100					; 2659		R-PF,	AC,	J/HLRZ
D 0555, 0015,1426,3000					; 2660		I-PF,	AC,	J/HLRZ
D 0556, 0116,1426,0700					; 2661		W,	M,	J/HLRZ
D 0557, 0004,1426,1700					; 2662		RW,	S,	J/HLRZ
							; 2663	
D 0560, 1015,1421,1100					; 2664	560:	R-PF,	AC,	J/HRRO
D 0561, 0015,1421,3000					; 2665		I-PF,	AC,	J/HRRO
D 0562, 0116,1421,0700					; 2666		W,	M,	J/HRRO
D 0563, 0004,1421,1700					; 2667		RW,	S,	J/HRRO
							; 2668	
D 0564, 1015,1427,1100					; 2669		R-PF,	AC,	J/HLRO
D 0565, 0015,1427,3000					; 2670		I-PF,	AC,	J/HLRO
D 0566, 0116,1427,0700					; 2671		W,	M,	J/HLRO
D 0567, 0004,1427,1700					; 2672		RW,	S,	J/HLRO
							; 2673	
D 0570, 1015,1417,1100					; 2674	570:	R-PF,	AC,	J/HRRE
D 0571, 0015,1417,3000					; 2675		I-PF,	AC,	J/HRRE
D 0572, 0116,1417,0700					; 2676		W,	M,	J/HRRE
D 0573, 0004,1417,1700					; 2677		RW,	S,	J/HRRE
							; 2678	
D 0574, 1015,1423,1100					; 2679		R-PF,	AC,	J/HLRE
D 0575, 0015,1423,3000					; 2680		I-PF,	AC,	J/HLRE
D 0576, 0116,1423,0700					; 2681		W,	M,	J/HLRE
D 0577, 0004,1423,1700					; 2682		RW,	S,	J/HLRE
							; 2683	
							; 2684		.UCODE
							; 2685	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 74
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			HALFWORD GROUP						

							; 2686	;FIRST THE GUYS THAT LEAVE THE OTHER HALF ALONE
							; 2687	
							; 2688	;THE AR CONTAINS THE MEMORY OPERAND. SO WE WANT TO PUT THE LH OF
							; 2689	; AC INTO AR TO DO A HRR. OBVIOUS THING FOR HLL.
							; 2690	1407:
U 1407, 1500,3771,0003,0276,0003,7700,0200,0003,0001	; 2691	HRR:	[AR]_AC,HOLD RIGHT,EXIT
							; 2692	1410:
U 1410, 1500,3771,0003,0270,6003,7700,0200,0003,0001	; 2693	HLL:	[AR]_AC,HOLD LEFT,EXIT
							; 2694	
							; 2695	;HRL FLOW:
							; 2696	;AT HRL AR CONTAINS:
							; 2697	;
							; 2698	;	!------------------!------------------!
							; 2699	;	!     LH OF (E)    !	 RH OF (E)    !
							; 2700	;	!------------------!------------------!
							; 2701	;
							; 2702	;AR_AR SWAP GIVES:
							; 2703	;
							; 2704	;	!------------------!------------------!
							; 2705	;	!     RH OF (E)    !	 LH OF (E)    !
							; 2706	;	!------------------!------------------!
							; 2707	;
							; 2708	;AT HLL, AR_AC,HOLD LEFT GIVES:
							; 2709	;
							; 2710	;	!------------------!------------------!
							; 2711	;	!     RH OF (E)    !	 RH OF AC     !
							; 2712	;	!------------------!------------------!
							; 2713	;
							; 2714	;THE EXIT MACRO CAUSES THE AR TO BE STORED IN AC (AT STAC).
							; 2715	; THE REST OF THE HALF WORD IN THIS GROUP ARE VERY SIMILAR.
							; 2716	
							; 2717	1411:
U 1411, 1410,3770,0303,4344,4007,0700,0000,0000,0000	; 2718	HRL:	[AR]_[AR] SWAP,J/HLL
							; 2719	1412:
U 1412, 1407,3770,0303,4344,4007,0700,0000,0000,0000	; 2720	HLR:	[AR]_[AR] SWAP,J/HRR
							; 2721	
							; 2722	1413:
U 1413, 0511,3770,0303,4344,4007,0700,0000,0000,0000	; 2723	HRLM:	[AR]_[AR] SWAP
U 0511, 1402,3771,0003,0270,6007,0700,0000,0000,0000	; 2724		[AR]_AC,HOLD LEFT,J/MOVS
							; 2725	1414:
U 1414, 1500,3770,0303,4344,0003,7700,0200,0003,0001	; 2726	HRLS:	[AR]_[AR] SWAP,HOLD RIGHT,EXIT
							; 2727	
							; 2728	1415:
U 1415, 0512,3770,0303,4344,4007,0700,0000,0000,0000	; 2729	HLRM:	[AR]_[AR] SWAP
U 0512, 1402,3771,0003,0276,0007,0700,0000,0000,0000	; 2730		[AR]_AC,HOLD RIGHT,J/MOVS
							; 2731	1416:
U 1416, 1500,3770,0303,4340,4003,7700,0200,0003,0001	; 2732	HLRS:	[AR]_[AR] SWAP,HOLD LEFT,EXIT
							; 2733	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 75
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			HALFWORD GROUP						

							; 2734	;NOW THE HALFWORD OPS WHICH CONTROL THE "OTHER" HALF.
							; 2735	; ENTER WITH 0,,E (E) OR (AC) IN AR
							; 2736	
							; 2737	1417:
U 1417, 1420,3333,0003,4174,4007,0530,0000,0000,0000	; 2738	HRRE:	READ [AR],SKIP DP18
							; 2739	1420:
U 1420, 1500,5731,0003,4174,4003,7700,0200,0003,0001	; 2740	HRRZ:	[AR] LEFT_0, EXIT
							; 2741	1421:
U 1421, 1500,5431,1203,4174,4003,7700,0200,0003,0001	; 2742	HRRO:	[AR] LEFT_-1, EXIT
							; 2743	
							; 2744	1422:
U 1422, 1424,3333,0003,4174,4007,0530,0000,0000,0000	; 2745	HRLE:	READ [AR],SKIP DP18
							; 2746	1424:
U 1424, 1402,3771,0003,4374,0007,0700,0000,0000,0000	; 2747	HRLZ:	[AR]_#,#/0,HOLD RIGHT,J/MOVS
							; 2748	1425:
U 1425, 1402,3771,0003,4374,0007,0700,0000,0077,7777	; 2749	HRLO:	[AR]_#,#/777777,HOLD RIGHT,J/MOVS
							; 2750	
							; 2751	1423:
U 1423, 1426,3333,0003,4174,4007,0520,0000,0000,0000	; 2752	HLRE:	READ [AR],SKIP DP0
							; 2753	1426:
U 1426, 1402,3771,0003,4370,4007,0700,0000,0000,0000	; 2754	HLRZ:	[AR]_#,#/0,HOLD LEFT,J/MOVS
							; 2755	1427:
U 1427, 1402,3771,0003,4370,4007,0700,0000,0077,7777	; 2756	HLRO:	[AR]_#,#/777777,HOLD LEFT,J/MOVS
							; 2757	
							; 2758	1430:
U 1430, 1432,3333,0003,4174,4007,0520,0000,0000,0000	; 2759	HLLE:	READ [AR],SKIP DP0
							; 2760	1432:
U 1432, 1500,5371,0003,4174,4003,7700,0200,0003,0001	; 2761	HLLZ:	[AR] RIGHT_0, EXIT
							; 2762	1433:
U 1433, 1500,5341,1203,4174,4003,7700,0200,0003,0001	; 2763	HLLO:	[AR] RIGHT_-1, EXIT
							; 2764	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 76
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			DMOVE, DMOVN, DMOVEM, DMOVNM				

							; 2765	.TOC	"DMOVE, DMOVN, DMOVEM, DMOVNM"
							; 2766	
							; 2767		.DCODE
D 0120, 0205,1505,1100					; 2768	120:	DBL R,	DAC,	J/DAC
D 0121, 0215,1434,1100					; 2769		DBL R,	AC,	J/DMOVN
							; 2770		.UCODE
							; 2771	
							; 2772	1434:
U 1434, 3070,4551,0404,4374,0007,0700,0010,0037,7777	; 2773	DMOVN:	CLEAR ARX0, CALL [DBLNGA]
U 1436, 1515,3440,0404,1174,4007,0700,0400,0000,1441	; 2774	1436:	AC[1]_[ARX], J/STAC
							; 2775	
							; 2776		.DCODE
D 0124, 0300,1567,0100					; 2777	124:	DBL AC, 	J/DMOVN1
D 0125, 0100,1565,0500					; 2778		W,		J/DMOVNM
							; 2779		.UCODE
							; 2780	
							; 2781	
							; 2782	1565:
U 1565, 3067,3771,0004,1276,6007,0701,0010,0000,1441	; 2783	DMOVNM: [ARX]_AC[1],CALL [DBLNEG]
							; 2784	1567:
							; 2785	DMOVN1: [HR]+[ONE],		;GET E+1
							; 2786		LOAD VMA,		;PUT THAT IN VMA
							; 2787		START WRITE,		;STORE IN E+1
U 1567, 0531,0113,0207,4174,4007,0700,0200,0003,0312	; 2788		PXCT DATA		;DATA CYCLE
U 0531, 0532,3333,0004,4175,5007,0701,0200,0000,0002	; 2789		MEM WRITE, MEM_[ARX]	;STORE LOW WORD
							; 2790		VMA_[HR],		;GET E
							; 2791		LOAD VMA,		;SAVE IN VMA
							; 2792		PXCT DATA,		;OPERAND STORE
							; 2793		START WRITE,		;START MEM CYCLE
U 0532, 0435,3443,0200,4174,4007,0700,0200,0003,0312	; 2794		J/STORE 		;GO STORE AR
							; 2795	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 77
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			BOOLEAN GROUP						

							; 2796	.TOC	"BOOLEAN GROUP"
							; 2797	
							; 2798		.DCODE
D 0400, 0015,1441,3000					; 2799	400:	I-PF,	AC,	J/SETZ
D 0401, 0015,1441,3000					; 2800		I-PF,	AC,	J/SETZ
D 0402, 0016,1441,2700					; 2801		IW,	M,	J/SETZ
D 0403, 0017,1441,2700					; 2802		IW,	B,	J/SETZ
							; 2803		.UCODE
							; 2804	
							; 2805	1441:
U 1441, 1500,4221,0003,4174,4003,7700,0200,0003,0001	; 2806	SETZ:	[AR]_0, EXIT
							; 2807	
							; 2808		.DCODE
D 0404, 1015,1442,1100					; 2809	404:	R-PF,	AC,	J/AND
D 0405, 0015,1442,3000					; 2810		I-PF,	AC,	J/AND
D 0406, 0016,1442,1700					; 2811		RW,	M,	J/AND
D 0407, 0017,1442,1700					; 2812		RW,	B,	J/AND
							; 2813		.UCODE
							; 2814	
							; 2815	1442:
U 1442, 1500,4551,0303,0274,4003,7700,0200,0003,0001	; 2816	AND:	[AR]_[AR].AND.AC,EXIT
							; 2817	
							; 2818		.DCODE
D 0410, 1015,1443,1100					; 2819	410:	R-PF,	AC,	J/ANDCA
D 0411, 0015,1443,3000					; 2820		I-PF,	AC,	J/ANDCA
D 0412, 0016,1443,1700					; 2821		RW,	M,	J/ANDCA
D 0413, 0017,1443,1700					; 2822		RW,	B,	J/ANDCA
							; 2823		.UCODE
							; 2824	
							; 2825	1443:
U 1443, 1500,5551,0303,0274,4003,7700,0200,0003,0001	; 2826	ANDCA:	[AR]_[AR].AND.NOT.AC,EXIT
							; 2827	
							; 2828		.DCODE
D 0414, 1015,1404,1100					; 2829	414:	R-PF,	AC,	J/MOVE	 ;SETM = MOVE
D 0415, 0015,1404,3000					; 2830		I-PF,	AC,	J/MOVE
D 0416, 0016,1404,1700					; 2831		RW,	M,	J/MOVE	 ;SETMM = NOP THAT WRITES MEMORY
D 0417, 0017,1404,1700					; 2832		RW,	B,	J/MOVE	 ;SETMB = MOVE THAT WRITES MEMORY
							; 2833	
D 0420, 1015,1444,1100					; 2834	420:	R-PF,	AC,	J/ANDCM
D 0421, 0015,1444,3000					; 2835		I-PF,	AC,	J/ANDCM
D 0422, 0016,1444,1700					; 2836		RW,	M,	J/ANDCM
D 0423, 0017,1444,1700					; 2837		RW,	B,	J/ANDCM
							; 2838		.UCODE
							; 2839	
							; 2840	1444:
U 1444, 1442,7441,0303,4174,4007,0700,0000,0000,0000	; 2841	ANDCM:	[AR]_.NOT.[AR],J/AND
							; 2842	
							; 2843		.DCODE
D 0424, 0000,1400,1100					; 2844	424:	R,		J/DONE
D 0425, 0000,1400,2100					; 2845		I,		J/DONE
D 0426, 0116,1404,0700					; 2846		W,	M,	J/MOVE		;SETAM = MOVEM
D 0427, 0116,1404,0700					; 2847		W,	M,	J/MOVE		;SETAB, TOO
							; 2848		.UCODE
							; 2849	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 78
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			BOOLEAN GROUP						

							; 2850		.DCODE
D 0430, 1015,1445,1100					; 2851	430:	R-PF,	AC,	J/XOR
D 0431, 0015,1445,3000					; 2852		I-PF,	AC,	J/XOR
D 0432, 0016,1445,1700					; 2853		RW,	M,	J/XOR
D 0433, 0017,1445,1700					; 2854		RW,	B,	J/XOR
							; 2855		.UCODE
							; 2856	
							; 2857	1445:
U 1445, 1500,6551,0303,0274,4003,7700,0200,0003,0001	; 2858	XOR:	[AR]_[AR].XOR.AC,EXIT
							; 2859	
							; 2860		.DCODE
D 0434, 1015,1446,1100					; 2861	434:	R-PF,	AC,	J/IOR
D 0435, 0015,1446,3000					; 2862		I-PF,	AC,	J/IOR
D 0436, 0016,1446,1700					; 2863		RW,	M,	J/IOR
D 0437, 0017,1446,1700					; 2864		RW,	B,	J/IOR
							; 2865		.UCODE
							; 2866	
							; 2867	1446:
U 1446, 1500,3551,0303,0274,4003,7700,0200,0003,0001	; 2868	IOR:	[AR]_[AR].OR.AC,EXIT
							; 2869	
							; 2870		.DCODE
D 0440, 1015,1447,1100					; 2871	440:	R-PF,	AC,	J/ANDCB
D 0441, 0015,1447,3000					; 2872		I-PF,	AC,	J/ANDCB
D 0442, 0016,1447,1700					; 2873		RW,	M,	J/ANDCB
D 0443, 0017,1447,1700					; 2874		RW,	B,	J/ANDCB
							; 2875		.UCODE
							; 2876	
							; 2877	1447:
U 1447, 1443,7441,0303,4174,4007,0700,0000,0000,0000	; 2878	ANDCB:	[AR]_.NOT.[AR],J/ANDCA
							; 2879	
							; 2880		.DCODE
D 0444, 1015,1450,1100					; 2881	444:	R-PF,	AC,	J/EQV
D 0445, 0015,1450,3000					; 2882		I-PF,	AC,	J/EQV
D 0446, 0016,1450,1700					; 2883		RW,	M,	J/EQV
D 0447, 0017,1450,1700					; 2884		RW,	B,	J/EQV
							; 2885		.UCODE
							; 2886	
							; 2887	1450:
U 1450, 1500,7551,0303,0274,4003,7700,0200,0003,0001	; 2888	EQV:	[AR]_[AR].EQV.AC,EXIT
							; 2889	
							; 2890		.DCODE
D 0450, 0015,1451,3000					; 2891	450:	I-PF,	AC,	J/SETCA
D 0451, 0015,1451,3000					; 2892		I-PF,	AC,	J/SETCA
D 0452, 0016,1451,2700					; 2893		IW,	M,	J/SETCA
D 0453, 0017,1451,2700					; 2894		IW,	B,	J/SETCA
							; 2895		.UCODE
							; 2896	
							; 2897	1451:
U 1451, 1500,7771,0003,0274,4003,7700,0200,0003,0001	; 2898	SETCA:	[AR]_.NOT.AC,EXIT
							; 2899	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 79
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			BOOLEAN GROUP						

							; 2900		.DCODE
D 0454, 1015,1452,1100					; 2901	454:	R-PF,	AC,	J/ORCA
D 0455, 0015,1452,3000					; 2902		I-PF,	AC,	J/ORCA
D 0456, 0016,1452,1700					; 2903		RW,	M,	J/ORCA
D 0457, 0017,1452,1700					; 2904		RW,	B,	J/ORCA
							; 2905		.UCODE
							; 2906	
							; 2907	1452:
U 1452, 0564,7771,0005,0274,4007,0700,0000,0000,0000	; 2908	ORCA:	[BR]_.NOT.AC
U 0564, 1500,3111,0503,4174,4003,7700,0200,0003,0001	; 2909		[AR]_[AR].OR.[BR],EXIT
							; 2910	
							; 2911		.DCODE
D 0460, 1015,1453,1100					; 2912	460:	R-PF,	AC,	J/SETCM
D 0461, 0015,1453,3000					; 2913		I-PF,	AC,	J/SETCM
D 0462, 0016,1453,1700					; 2914		RW,	M,	J/SETCM
D 0463, 0017,1453,1700					; 2915		RW,	B,	J/SETCM
							; 2916		.UCODE
							; 2917	
							; 2918	1453:
U 1453, 1500,7441,0303,4174,4003,7700,0200,0003,0001	; 2919	SETCM:	[AR]_.NOT.[AR],EXIT
							; 2920	
							; 2921		.DCODE
D 0464, 1015,1454,1100					; 2922	464:	R-PF,	AC,	J/ORCM
D 0465, 0015,1454,3000					; 2923		I-PF,	AC,	J/ORCM
D 0466, 0016,1454,1700					; 2924		RW,	M,	J/ORCM
D 0467, 0017,1454,1700					; 2925		RW,	B,	J/ORCM
							; 2926		.UCODE
							; 2927	
							; 2928	1454:
U 1454, 1446,7441,0303,4174,4007,0700,0000,0000,0000	; 2929	ORCM:	[AR]_.NOT.[AR],J/IOR
							; 2930	
							; 2931		.DCODE
D 0470, 1015,1455,1100					; 2932	470:	R-PF,	AC,	J/ORCB
D 0471, 0015,1455,3000					; 2933		I-PF,	AC,	J/ORCB
D 0472, 0016,1455,1700					; 2934		RW,	M,	J/ORCB
D 0473, 0017,1455,1700					; 2935		RW,	B,	J/ORCB
							; 2936		.UCODE
							; 2937	
							; 2938	1455:
U 1455, 1453,4551,0303,0274,4007,0700,0000,0000,0000	; 2939	ORCB:	[AR]_[AR].AND.AC,J/SETCM
							; 2940	
							; 2941		.DCODE
D 0474, 0015,1456,3000					; 2942	474:	I-PF,	AC,	J/SETO
D 0475, 0015,1456,3000					; 2943		I-PF,	AC,	J/SETO
D 0476, 0016,1456,2700					; 2944		IW,	M,	J/SETO
D 0477, 0017,1456,2700					; 2945		IW,	B,	J/SETO
							; 2946		.UCODE
							; 2947	
							; 2948	1456:
U 1456, 1500,2441,0703,4174,4003,7700,4200,0003,0001	; 2949	SETO:	[AR]_-[ONE], EXIT
							; 2950	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 80
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			ROTATES AND LOGICAL SHIFTS -- ROT, LSH, JFFO		

							; 2951	.TOC	"ROTATES AND LOGICAL SHIFTS -- ROT, LSH, JFFO"
							; 2952	
							; 2953		.DCODE
D 0240, 0400,1622,1000					; 2954	240:	SH,		J/ASH
D 0241, 0400,1632,1000					; 2955		SH,		J/ROT
D 0242, 0400,1612,1000					; 2956		SH,		J/LSH
D 0243, 0000,1462,2100					; 2957		I,		J/JFFO
D 0244, 0000,1466,3000					; 2958		I-PF,		J/ASHC
D 0245, 0500,1470,1000					; 2959	245:	SHC,		J/ROTC
D 0246, 0500,1464,1000					; 2960		SHC,		J/LSHC
							; 2961		.UCODE
							; 2962	
							; 2963	
							; 2964	;HERE IS THE CODE FOR LOGICAL SHIFT. THE EFFECTIVE ADDRESS IS
							; 2965	; IN AR.
							; 2966	1612:
							; 2967	LSH:	[AR]_AC,		;PICK UP AC
							; 2968		FE_-FE-1,		;NEGATIVE SHIFT
U 1612, 0572,3771,0003,0276,6007,0700,1000,0031,1777	; 2969		J/LSHL			;SHIFT LEFT
							; 2970	1613:	[AR]_AC.AND.MASK,	;MAKE IT LOOK POSITIVE
							; 2971		FE_FE+1, 		;UNDO -1 AT SHIFT
U 1613, 0611,4551,1203,0276,6007,0700,1000,0041,0001	; 2972		J/ASHR			;GO SHIFT RIGHT
							; 2973	
							; 2974	LSHL:	[AR]_[AR]*2,		;SHIFT LEFT
U 0572, 1515,3445,0303,4174,4007,0700,1020,0041,0001	; 2975		SHIFT, J/STAC		;FAST SHIFT & GO STORE AC
							; 2976	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 81
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			ROTATES AND LOGICAL SHIFTS -- ROT, LSH, JFFO		

							; 2977	;HERE IS THE CODE FOR ARITHMETIC SHIFT. THE EFFECTIVE ADDRESS IS
							; 2978	; IN AR.
							; 2979	
							; 2980	ASH36 LEFT	"[AR]_[AR]*2 LONG, ASHC, STEP SC, ASH AROV"
							; 2981	
							; 2982	1622:
U 1622, 0632,4222,0000,4174,4007,0700,0000,0000,0000	; 2983	ASH:	Q_0, J/ASHL0		;HARDWARE ONLY DOES ASHC
							; 2984	1623:	[AR]_AC,		;GET THE ARGUMENT
U 1623, 0611,3771,0003,0276,6007,0700,1000,0041,0001	; 2985		FE_FE+1 		;FE HAS NEGATIVE SHIFT COUNT
							; 2986	ASHR:	[AR]_[AR]*.5,		;SHIFT RIGHT
							; 2987		ASH, SHIFT,		;FAST SHIFT
U 0611, 1515,3447,0303,4174,4007,0700,1020,0041,0001	; 2988		J/STAC			;STORE AC WHEN DONE
							; 2989	
							; 2990	ASHL0:	[AR]_AC*.5,		;GET INTO 9 CHIPS
U 0632, 0454,3777,0003,0274,4007,0631,2000,0060,0000	; 2991		STEP SC 		;SEE IF NULL SHIFT
							; 2992	=0
U 0454, 0454,3444,0303,4174,4447,0630,2000,0060,0000	; 2993	ASHL:	ASH36 LEFT, J/ASHL	;SHIFT LEFT
							; 2994					;SLOW BECAUSE WE HAVE TO
							; 2995					; TEST FOR OVERFLOW
							; 2996	
U 0455, 1515,3445,0303,4174,4007,0700,0000,0000,0000	; 2997	ASHX:	[AR]_[AR]*2, J/STAC	;SHIFT BACK INTO 10 CHIPS
							; 2998	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 82
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			ROTATES AND LOGICAL SHIFTS -- ROT, LSH, JFFO		

							; 2999	;HERE IS THE CODE FOR ROTATE. THE EFFECTIVE ADDRESS IS
							; 3000	; IN AR.
							; 3001	1632:
							; 3002	ROT:	[AR]_AC*.5,		;PICK UP THE AC (& SHIFT)
							; 3003		FE_-FE-1,		;NEGATIVE SHIFT COUNT
U 1632, 0747,3777,0003,0274,4007,0701,1000,0031,1777	; 3004		J/ROTL			;ROTATE LEFT
							; 3005	1633:	[AR]_AC*.5,		;PICK UP THE AC (& SHIFT)
U 1633, 0646,3777,0003,0274,4007,0701,1000,0041,0001	; 3006		FE_FE+1 		;NEGATIVE SHIFT COUNT
U 0646, 0701,3447,0303,4174,4007,0700,0000,0000,0000	; 3007		[AR]_[AR]*.5		;PUT IN 9 DIPS
							; 3008		[AR]_[AR]*.5,		;SHIFT RIGHT
U 0701, 0706,3447,0303,4174,4037,0700,1020,0041,0001	; 3009		ROT, SHIFT		;FAST SHIFT
U 0706, 0455,3445,0303,4174,4007,0700,0000,0000,0000	; 3010	ASHXX:	[AR]_[AR]*2,J/ASHX	;SHIFT TO STD PLACE
							; 3011	
U 0747, 0752,3447,0303,4174,4007,0700,0000,0000,0000	; 3012	ROTL:	[AR]_[AR]*.5		;PUT IN RIGHT 36-BITS
							; 3013		[AR]_[AR]*2,		;ROTATE LEFT
							; 3014		ROT, SHIFT,		;FAST SHIFT
U 0752, 0706,3445,0303,4174,4037,0700,1020,0041,0001	; 3015		J/ASHXX 		;ALL DONE--SHIFT BACK
							; 3016	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 83
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			ROTATES AND LOGICAL SHIFTS -- ROT, LSH, JFFO		

							; 3017	1462:
							; 3018	JFFO:	[BR]_AC.AND.MASK, 4T,	;GET AC WITH NO SIGN
U 1462, 0502,4551,1205,0276,6007,0622,0000,0000,0000	; 3019		SKIP AD.EQ.0		; EXTENSION. SKIP IF
							; 3020					; ZERO.
							; 3021	=0	[PC]_[AR],		;NOT ZERO--JUMP
							; 3022		LOAD VMA, FETCH,	;GET NEXT INST
U 0502, 0767,3441,0301,4174,4007,0700,0200,0014,0012	; 3023		J/JFFO1 		;ENTER LOOP
U 0503, 1400,4223,0000,1174,4007,0700,0400,0000,1441	; 3024		AC[1]_0, J/DONE 	;ZERO--DONE
							; 3025	
U 0767, 0514,4443,0000,4174,4007,0700,1000,0071,1764	; 3026	JFFO1:	FE_-12. 		;WHY -12.? WELL THE
							; 3027					; HARDWARE LOOKS AT
							; 3028					; BIT -2 SO THE FIRST
							; 3029					; 2 STEPS MOVE THE BR
							; 3030					; OVER. WE ALSO LOOK AT
							; 3031					; THE DATA BEFORE THE SHIFT
							; 3032					; SO WE END UP GOING 1 PLACE
							; 3033					; TOO MANY. THAT MEANS THE
							; 3034					; FE SHOULD START AT -3.
							; 3035					; HOWEVER, WE COUNT THE FE BY
							; 3036					; 4  (BECAUSE THE 2 LOW ORDER
							; 3037					; BITS DO NOT COME BACK) SO
							; 3038					; FE_-12.
							; 3039	=0
							; 3040	JFFOL:	[BR]_[BR]*2,		;SHIFT LEFT
							; 3041		FE_FE+4,		;COUNT UP BIT NUMBER
U 0514, 0514,3445,0505,4174,4007,0520,1000,0041,0004	; 3042		SKIP DP0, J/JFFOL	;LOOP TILL WE FIND THE BIT
U 0515, 1006,3777,0003,4334,4057,0700,0000,0041,0000	; 3043		[AR]_FE 		;GET ANSWER BACK
U 1006, 1023,4251,0303,4374,4007,0700,0000,0000,0077	; 3044		[AR]_[AR].AND.# CLR LH,#/77 ;MASK TO 1 COPY
U 1023, 0100,3440,0303,1174,4156,4700,0400,0000,1441	; 3045		AC[1]_[AR], NEXT INST	;STORE AND EXIT
							; 3046	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 84
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			ROTATES AND LOGICAL SHIFTS -- LSHC			

							; 3047	.TOC	"ROTATES AND LOGICAL SHIFTS -- LSHC"
							; 3048	
							; 3049	;SHIFT CONNECTIONS WHEN THE SPECIAL FUNCTION "LSHC" IS DONE:
							; 3050	;
							; 3051	;   !-!   !----!------------------------------------!
							; 3052	;   !0!-->!0000!	 HIGH ORDER 36 BITS	    !  RAM FILE
							; 3053	;   !-!   !----!------------------------------------!
							; 3054	;						   ^
							; 3055	;						   :
							; 3056	;		....................................
							; 3057	;		:
							; 3058	;	  !----!------------------------------------!
							; 3059	;	  !0000!	  LOW ORDER 36 BITS	    !  Q-REGISTER
							; 3060	;	  !----!------------------------------------!
							; 3061	;						   ^
							; 3062	;						   :
							; 3063	;						  !-!
							; 3064	;						  !0!
							; 3065	;						  !-!
							; 3066	;
							; 3067	
							; 3068	1464:
U 1464, 0544,4443,0000,4174,4007,0630,2000,0060,0000	; 3069	LSHC:	STEP SC, J/LSHCL
U 1465, 1026,3333,0003,4174,4007,0700,2000,0031,5777	; 3070	1465:	READ [AR], SC_-SHIFT-1
U 1026, 0534,4443,0000,4174,4007,0630,2000,0060,0000	; 3071		STEP SC
							; 3072	=0
U 0534, 0534,3446,0505,4174,4057,0630,2000,0060,0000	; 3073	LSHCR:	[BR]_[BR]*.5 LONG,STEP SC,LSHC,J/LSHCR
U 0535, 1033,3444,0505,4174,4007,0700,0000,0000,0000	; 3074		[BR]_[BR]*2 LONG,J/LSHCX
							; 3075	
							; 3076	=0
U 0544, 0544,3444,0505,4174,4057,0630,2000,0060,0000	; 3077	LSHCL:	[BR]_[BR]*2 LONG,LSHC,STEP SC,J/LSHCL
U 0545, 1033,3444,0505,4174,4007,0700,0000,0000,0000	; 3078		[BR]_[BR]*2 LONG
U 1033, 1036,3444,0505,4174,4007,0700,0000,0000,0000	; 3079	LSHCX:	[BR]_[BR]*2 LONG
U 1036, 1064,3440,0505,0174,4007,0700,0400,0000,0000	; 3080		AC_[BR], J/ASHCQ1
							; 3081	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 85
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			ROTATES AND LOGICAL SHIFTS -- ASHC			

							; 3082	.TOC	"ROTATES AND LOGICAL SHIFTS -- ASHC"
							; 3083	
							; 3084	
							; 3085	1466:
							; 3086	ASHC:	READ [AR],		;PUT AR ON DP
							; 3087		SC_SHIFT, LOAD FE,	;PUT SHIFT IN BOTH SC AND FE
U 1466, 0554,3333,0003,4174,4007,0330,3000,0041,4000	; 3088		SKIP ADR.EQ.0		;SEE IF NULL SHIFT
							; 3089	=0	Q_AC[1],		;NOT NULL--GET LOW WORD
U 0554, 1046,3772,0000,1275,5007,0701,0000,0000,1441	; 3090		J/ASHC1 		;CONTINUE BELOW
U 0555, 0100,4443,0000,4174,4156,4700,0000,0000,0000	; 3091	NIDISP: NEXT INST		;NULL--ALL DONE
							; 3092	ASHC1:	[BR]_AC*.5 LONG,	;GET HIGH WORD
							; 3093					;AND SHIFT Q
U 1046, 0614,3776,0005,0274,4007,0631,0000,0000,0000	; 3094		SKIP/SC 		;SEE WHICH DIRECTION
							; 3095	=0	[BR]_[BR]*.5,		;ADJUST POSITION
							; 3096		SC_FE+S#, S#/1776,	;SUBRTACT 2 FROM FE
U 0614, 0634,3447,0505,4174,4007,0700,2000,0041,1776	; 3097		J/ASHCL 		;GO LEFT
							; 3098		[BR]_[BR]*.5,		;ADJUST POSITION
U 0615, 0624,3447,0505,4174,4007,0700,2000,0031,1776	; 3099		SC_S#-FE, S#/1776	;SC_-2-FE, SC_+# OF STEPS
							; 3100	=0				;HERE TO GO RIGHT
							; 3101	ASHCR:	[BR]_[BR]*.5 LONG,	;GO RIGHT
							; 3102		ASHC,			;SET DATA PATHS FOR ASHC (SEE DPE1)
U 0624, 0624,3446,0505,4174,4047,0630,2000,0060,0000	; 3103		STEP SC, J/ASHCR	;COUNT THE STEP AND KEEP LOOPING
							; 3104		[BR]_[BR]*2 LONG,	;PUT BACK WHERE IT GOES
U 0625, 1053,3444,0505,4174,4047,0700,0000,0000,0000	; 3105		ASHC, J/ASHCX		;COMPLETE INSTRUCTION
							; 3106	
							; 3107	=0
							; 3108	ASHCL:	[BR]_[BR]*2 LONG,	;GO LEFT
							; 3109		ASHC, ASH AROV, 	;SEE IF OVERFLOW
U 0634, 0634,3444,0505,4174,4447,0630,2000,0060,0000	; 3110		STEP SC, J/ASHCL	;LOOP OVER ALL PLACES
							; 3111		[BR]_[BR]*2 LONG,	;SHIFT BACK WHERE IT GOES
U 0635, 1053,3444,0505,4174,4447,0700,0000,0000,0000	; 3112		ASHC, ASH AROV		;CAN STILL OVERFLOW
							; 3113	ASHCX:	AC_[BR]+[BR], 3T,	;PUT BACK HIGH WORD
U 1053, 0642,0113,0505,0174,4007,0521,0400,0000,0000	; 3114		SKIP DP0		;SEE HOW TO FIX LOW SIGN
							; 3115	=0	Q_Q.AND.#, #/377777,	;POSITIVE, CLEAR LOW SIGN
U 0642, 1064,4662,0000,4374,0007,0700,0000,0037,7777	; 3116		HOLD RIGHT, J/ASHCQ1	;GO STORE ANSWER
							; 3117		Q_Q.OR.#, #/400000,	;NEGATIVE, SET LOW SIGN
U 0643, 1064,3662,0000,4374,0007,0700,0000,0040,0000	; 3118		HOLD RIGHT		;IN LEFT HALF
U 1064, 0100,3223,0000,1174,4156,4700,0400,0000,1441	; 3119	ASHCQ1: AC[1]_Q, NEXT INST	;PUT BACK Q AND EXIT
							; 3120	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 86
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			ROTATES AND LOGICAL SHIFTS -- ROTC			

							; 3121	.TOC	"ROTATES AND LOGICAL SHIFTS -- ROTC"
							; 3122	
							; 3123	;SHIFT CONNECTIONS WHEN THE SPECIAL FUNCTION "ROTC" IS DONE:
							; 3124	;
							; 3125	;	  !----!------------------------------------!
							; 3126	;   .....>!0000!	 HIGH ORDER 36 BITS	    !  RAM FILE
							; 3127	;   :	  !----!------------------------------------!
							; 3128	;   :						   ^
							; 3129	;   :						   :
							; 3130	;   :	............................................
							; 3131	;   :	:
							; 3132	;   :	: !----!------------------------------------!
							; 3133	;   :	..!0000!	  LOW ORDER 36 BITS	    !  Q-REGISTER
							; 3134	;   :	  !----!------------------------------------!
							; 3135	;   :						   ^
							; 3136	;   :						   :
							; 3137	;   :..............................................:
							; 3138	;
							; 3139	
							; 3140	1470:
U 1470, 0742,4443,0000,4174,4007,0630,2000,0060,0000	; 3141	ROTC:	STEP SC, J/ROTCL
U 1471, 1077,3333,0003,4174,4007,0700,2000,0031,5777	; 3142	1471:	READ [AR], SC_-SHIFT-1
U 1077, 0644,4443,0000,4174,4007,0630,2000,0060,0000	; 3143		STEP SC
							; 3144	=0
U 0644, 0644,3446,0505,4174,4077,0630,2000,0060,0000	; 3145	ROTCR:	[BR]_[BR]*.5 LONG,STEP SC,ROTC,J/ROTCR
U 0645, 1033,3444,0505,4174,4007,0700,0000,0000,0000	; 3146		[BR]_[BR]*2 LONG,J/LSHCX
							; 3147	
							; 3148	=0
U 0742, 0742,3444,0505,4174,4077,0630,2000,0060,0000	; 3149	ROTCL:	[BR]_[BR]*2 LONG,ROTC,STEP SC,J/ROTCL
							; 3150		[BR]_[BR]*2 LONG,
U 0743, 1033,3444,0505,4174,4007,0700,0000,0000,0000	; 3151		J/LSHCX
							; 3152	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 87
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			TEST GROUP						

							; 3153	.TOC	"TEST GROUP"
							; 3154	
							; 3155		.DCODE
							; 3156	
							; 3157	;SPECIAL MACROS USED ONLY IN B-FIELD OF TEST INSTRUCTIONS
							; 3158	TN-		"B/4"
							; 3159	TNE		"B/0"
							; 3160	WORD-TNE	"B/10"	;USED IN TIOE
							; 3161	TNA		"B/0"
							; 3162	TNN		"B/4"
							; 3163	WORD-TNN	"B/14"	;USED IN TION
							; 3164	TZ-		"B/5"
							; 3165	TZE		"B/1"
							; 3166	TZA		"B/1"
							; 3167	TZN		"B/5"
							; 3168	TC-		"B/6"
							; 3169	TCE		"B/2"
							; 3170	TCA		"B/2"
							; 3171	TCN		"B/6"
							; 3172	TO-		"B/7"
							; 3173	TOE		"B/3"
							; 3174	TOA		"B/3"
							; 3175	TON		"B/7"
							; 3176	
D 0600, 0000,1400,2100					; 3177	600:	I,		J/DONE		;TRN- IS NOP
D 0601, 0000,1400,2100					; 3178		I,		J/DONE		;SO IS TLN-
D 0602, 0000,1475,2100					; 3179		I,	TNE,	J/TDXX
D 0603, 0000,1474,2100					; 3180		I,	TNE,	J/TSXX
D 0604, 0000,1473,2100					; 3181		I,	TNA,	J/TDX
D 0605, 0000,1472,2100					; 3182		I,	TNA,	J/TSX
D 0606, 0004,1475,2100					; 3183		I,	TNN,	J/TDXX
D 0607, 0004,1474,2100					; 3184		I,	TNN,	J/TSXX
							; 3185	
D 0610, 0000,1400,2100					; 3186	610:	I,		J/DONE		;TDN- IS A NOP
D 0611, 0000,1400,2100					; 3187		I,		J/DONE		;TSN- ALSO
D 0612, 0000,1475,1100					; 3188		R,	TNE,	J/TDXX
D 0613, 0000,1474,1100					; 3189		R,	TNE,	J/TSXX
D 0614, 0000,1473,1100					; 3190		R,	TNA,	J/TDX
D 0615, 0000,1472,1100					; 3191		R,	TNA,	J/TSX
D 0616, 0004,1475,1100					; 3192		R,	TNN,	J/TDXX
D 0617, 0004,1474,1100					; 3193		R,	TNN,	J/TSXX
							; 3194	
D 0620, 0005,1473,2100					; 3195	620:	I,	TZ-,	J/TDX
D 0621, 0005,1472,2100					; 3196		I,	TZ-,	J/TSX
D 0622, 0001,1475,2100					; 3197		I,	TZE,	J/TDXX
D 0623, 0001,1474,2100					; 3198		I,	TZE,	J/TSXX
D 0624, 0001,1473,2100					; 3199		I,	TZA,	J/TDX
D 0625, 0001,1472,2100					; 3200		I,	TZA,	J/TSX
D 0626, 0005,1475,2100					; 3201		I,	TZN,	J/TDXX
D 0627, 0005,1474,2100					; 3202		I,	TZN,	J/TSXX
							; 3203	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 88
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			TEST GROUP						

D 0630, 0005,1473,1100					; 3204	630:	R,	TZ-,	J/TDX
D 0631, 0005,1472,1100					; 3205		R,	TZ-,	J/TSX
D 0632, 0001,1475,1100					; 3206		R,	TZE,	J/TDXX
D 0633, 0001,1474,1100					; 3207		R,	TZE,	J/TSXX
D 0634, 0001,1473,1100					; 3208		R,	TZA,	J/TDX
D 0635, 0001,1472,1100					; 3209		R,	TZA,	J/TSX
D 0636, 0005,1475,1100					; 3210		R,	TZN,	J/TDXX
D 0637, 0005,1474,1100					; 3211		R,	TZN,	J/TSXX
							; 3212	
D 0640, 0006,1473,2100					; 3213	640:	I,	TC-,	J/TDX
D 0641, 0006,1472,2100					; 3214		I,	TC-,	J/TSX
D 0642, 0002,1475,2100					; 3215		I,	TCE,	J/TDXX
D 0643, 0002,1474,2100					; 3216		I,	TCE,	J/TSXX
D 0644, 0002,1473,2100					; 3217		I,	TCA,	J/TDX
D 0645, 0002,1472,2100					; 3218		I,	TCA,	J/TSX
D 0646, 0006,1475,2100					; 3219		I,	TCN,	J/TDXX
D 0647, 0006,1474,2100					; 3220		I,	TCN,	J/TSXX
							; 3221	
D 0650, 0006,1473,1100					; 3222	650:	R,	TC-,	J/TDX
D 0651, 0006,1472,1100					; 3223		R,	TC-,	J/TSX
D 0652, 0002,1475,1100					; 3224		R,	TCE,	J/TDXX
D 0653, 0002,1474,1100					; 3225		R,	TCE,	J/TSXX
D 0654, 0002,1473,1100					; 3226		R,	TCA,	J/TDX
D 0655, 0002,1472,1100					; 3227		R,	TCA,	J/TSX
D 0656, 0006,1475,1100					; 3228		R,	TCN,	J/TDXX
D 0657, 0006,1474,1100					; 3229		R,	TCN,	J/TSXX
D 0660, 0007,1473,2100					; 3230	660:	I,	TO-,	J/TDX
D 0661, 0007,1472,2100					; 3231		I,	TO-,	J/TSX
D 0662, 0003,1475,2100					; 3232		I,	TOE,	J/TDXX
D 0663, 0003,1474,2100					; 3233		I,	TOE,	J/TSXX
D 0664, 0003,1473,2100					; 3234		I,	TOA,	J/TDX
D 0665, 0003,1472,2100					; 3235		I,	TOA,	J/TSX
D 0666, 0007,1475,2100					; 3236		I,	TON,	J/TDXX
D 0667, 0007,1474,2100					; 3237		I,	TON,	J/TSXX
							; 3238	
D 0670, 0007,1473,1100					; 3239	670:	R,	TO-,	J/TDX
D 0671, 0007,1472,1100					; 3240		R,	TO-,	J/TSX
D 0672, 0003,1475,1100					; 3241		R,	TOE,	J/TDXX
D 0673, 0003,1474,1100					; 3242		R,	TOE,	J/TSXX
D 0674, 0003,1473,1100					; 3243		R,	TOA,	J/TDX
D 0675, 0003,1472,1100					; 3244		R,	TOA,	J/TSX
D 0676, 0007,1475,1100					; 3245		R,	TON,	J/TDXX
D 0677, 0007,1474,1100					; 3246		R,	TON,	J/TSXX
							; 3247	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 89
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			TEST GROUP						

							; 3248		.UCODE
							; 3249	
							; 3250	;THESE 64 INSTRUCTIONS ARE DECODED BY MASK MODE(IMMEDIATE OR MEMORY)
							; 3251	; IN THE A FIELD, DISPATCH TO HERE ON THE J FIELD, AND RE-DISPATCH
							; 3252	; FOR THE MODIFICATION ON THE B FIELD.
							; 3253	
							; 3254	; ENTER WITH 0,E OR (E) IN AR, B FIELD BITS 2 AND 3 AS FOLLOWS:
							; 3255	; 0 0	NO MODIFICATION
							; 3256	; 0 1	0S
							; 3257	; 1 0	COMPLEMENT
							; 3258	; 1 1	ONES
							; 3259	;   THIS ORDER HAS NO SIGNIFICANCE EXCEPT THAT IT CORRESPONDS TO THE
							; 3260	;   ORDER OF INSTRUCTIONS AT TGROUP.
							; 3261	
							; 3262	;THE BIT 1 OF THE B FIELD IS USED TO DETERMINE THE SENSE
							; 3263	; OF THE SKIP
							; 3264	; 1	SKIP IF AC.AND.MASK .NE. 0 (TXX- AND TXXN)
							; 3265	; 0	SKIP IF AC.AND.MASK .EQ. 0 (TXXA AND TXXE)
							; 3266	
							; 3267	;BIT 0 IS UNUSED AND MUST BE ZERO
							; 3268	
							; 3269	
							; 3270	1472:
U 1472, 1473,3770,0303,4344,4007,0700,0000,0000,0000	; 3271	TSX:	[AR]_[AR] SWAP		;TSXX AND TLXX
							; 3272	1473:
U 1473, 0014,4221,0005,4174,4003,7700,0000,0000,0000	; 3273	TDX:	[BR]_0,TEST DISP	; ALWAYS AND NEVER SKIP CASES
							; 3274	
							; 3275	1474:
U 1474, 1475,3770,0303,4344,4007,0700,0000,0000,0000	; 3276	TSXX:	[AR]_[AR] SWAP		;TSXE, TSXN, TLXE, TLXN
							; 3277	1475:
							; 3278	TDXX:	[BR]_[AR].AND.AC,	;TDXE, TDXN, TRXE, TRXN
U 1475, 0014,4551,0305,0274,4003,7700,0000,0000,0000	; 3279		TEST DISP
							; 3280	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 90
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			TEST GROUP						

							; 3281	;TEST DISP DOES AN 8 WAY BRANCH BASED ON THE B-FIELD OF DROM
							; 3282	
							; 3283	=1100
							; 3284	TEST-TABLE:
							; 3285	
							; 3286	;CASE 0 & 4	-- TXNX
U 0014, 1400,3333,0005,4174,4007,0571,0000,0000,0000	; 3287	TXXX:	READ [BR], TXXX TEST, 3T, J/DONE
							; 3288	
							; 3289	;CASE 1 & 5 -- TXZ AND TXZX
U 0015, 1116,7441,0303,4174,4007,0700,0000,0000,0000	; 3290		[AR]_.NOT.[AR],J/TXZX
							; 3291	
							; 3292	;CASE 2 & 6 -- TXC AND TXCX
U 0016, 1123,6551,0303,0274,4007,0700,0000,0000,0000	; 3293		[AR]_[AR].XOR.AC,J/TDONE
							; 3294	
							; 3295	;CASE 3 & 7 -- TXO AND TXOX
U 0017, 1123,3551,0303,0274,4007,0700,0000,0000,0000	; 3296		[AR]_[AR].OR.AC,J/TDONE
							; 3297	
							; 3298	;THE SPECIAL FUNCTION TXXX TEST CAUSES A MICROCODE SKIP IF
							; 3299	; AD.EQ.0 AND DROM B IS 0-3 OR AD.NE.0 AND DROM B IS 4-7.
							; 3300	
U 1116, 1123,4551,0303,0274,4007,0700,0000,0000,0000	; 3301	TXZX:	[AR]_[AR].AND.AC
U 1123, 0014,3440,0303,0174,4007,0700,0400,0000,0000	; 3302	TDONE:	AC_[AR],J/TXXX
							; 3303	;	READ BR,TXXX TEST,J/DONE
							; 3304	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 91
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			COMPARE -- CAI, CAM					

							; 3305	.TOC	"COMPARE -- CAI, CAM"
							; 3306	
							; 3307		.DCODE
							; 3308	
							; 3309	;SPECIAL B-FIELD ENCODING USED BY SKIP-JUMP-COMPARE CLASS
							; 3310	; INSTRUCTIONS:
							; 3311	
							; 3312	SJC-	"B/0"	;NEVER
							; 3313	SJCL	"B/1"	;LESS
							; 3314	SJCE	"B/2"	;EQUAL
							; 3315	SJCLE	"B/3"	;LESS EQUAL
							; 3316	SJCA	"B/4"	;ALWAYS
							; 3317	SJCGE	"B/5"	;GREATER THAN OR EQUAL
							; 3318	SJCN	"B/6"	;NOT EQUAL
							; 3319	SJCG	"B/7"	;GREATER
							; 3320	
							; 3321		.UCODE
							; 3322	
							; 3323	;COMPARE TABLE
							; 3324	=1000
							; 3325	SKIP-COMP-TABLE:
							; 3326	
							; 3327	;CASE 0 -- NEVER
U 0250, 0110,3443,0100,4174,4156,4700,0200,0014,0012	; 3328		DONE
							; 3329	
							; 3330	;CASE 1 -- LESS
U 0251, 1400,3333,0003,4174,4007,0520,0000,0000,0000	; 3331		READ [AR], SKIP DP0,J/DONE
							; 3332	
							; 3333	;CASE 2 -- EQUAL
U 0252, 1400,3333,0003,4174,4007,0621,0000,0000,0000	; 3334	SKIPE:	READ [AR], SKIP AD.EQ.0,J/DONE
							; 3335	
							; 3336	;CASE 3 -- LESS OR EQUAL
U 0253, 1400,3333,0003,4174,4007,0421,0000,0000,0000	; 3337		READ [AR], SKIP AD.LE.0,J/DONE
							; 3338	
							; 3339	;CASE 4 -- ALWAYS
U 0254, 0110,0111,0701,4170,4156,4700,0200,0014,0012	; 3340		VMA_[PC]+1, NEXT INST FETCH, FETCH
							; 3341	
							; 3342	;CASE 5 -- GREATER THAN OR EQUAL
U 0255, 0260,3333,0003,4174,4007,0520,0000,0000,0000	; 3343		READ [AR], SKIP DP0,J/SKIP
							; 3344	
							; 3345	;CASE 6 -- NOT EQUAL
U 0256, 0260,3333,0003,4174,4007,0621,0000,0000,0000	; 3346		READ [AR], SKIP AD.EQ.0,J/SKIP
							; 3347	
							; 3348	;CASE 7 -- GREATER
U 0257, 0260,3333,0003,4174,4007,0421,0000,0000,0000	; 3349		READ [AR], SKIP AD.LE.0,J/SKIP
							; 3350	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 92
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			COMPARE -- CAI, CAM					

							; 3351		.DCODE
D 0300, 0000,1400,2100					; 3352	300:	I,	SJC-,	J/DONE	;CAI
D 0301, 0001,1476,2100					; 3353		I,	SJCL,	J/CAIM
D 0302, 0002,1476,2100					; 3354		I,	SJCE,	J/CAIM
D 0303, 0003,1476,2100					; 3355		I,	SJCLE,	J/CAIM
D 0304, 0004,1476,2100					; 3356		I,	SJCA,	J/CAIM
D 0305, 0005,1476,2100					; 3357		I,	SJCGE,	J/CAIM
D 0306, 0006,1476,2100					; 3358		I,	SJCN,	J/CAIM
D 0307, 0007,1476,2100					; 3359		I,	SJCG,	J/CAIM
							; 3360	
D 0310, 0000,1476,1100					; 3361	310:	R,	SJC-,	J/CAIM	;CAM
D 0311, 0001,1476,1100					; 3362		R,	SJCL,	J/CAIM
D 0312, 0002,1476,1100					; 3363		R,	SJCE,	J/CAIM
D 0313, 0003,1476,1100					; 3364		R,	SJCLE,	J/CAIM
D 0314, 0004,1476,1100					; 3365		R,	SJCA,	J/CAIM
D 0315, 0005,1476,1100					; 3366		R,	SJCGE,	J/CAIM
D 0316, 0006,1476,1100					; 3367		R,	SJCN,	J/CAIM
D 0317, 0007,1476,1100					; 3368		R,	SJCG,	J/CAIM
							; 3369		.UCODE
							; 3370	
							; 3371	1476:
U 1476, 0250,2551,0303,0274,4003,7701,4000,0000,0000	; 3372	CAIM:	[AR]_AC-[AR], 3T, SKIP-COMP DISP
							; 3373	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 93
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			ARITHMETIC SKIPS -- AOS, SOS, SKIP			

							; 3374	.TOC	"ARITHMETIC SKIPS -- AOS, SOS, SKIP"
							; 3375	;ENTER WITH (E) IN AR
							; 3376	
							; 3377		.DCODE
D 0330, 0000,1477,1100					; 3378	330:	R,	SJC-,	J/SKIPS ;NOT A NOP IF AC .NE. 0
D 0331, 0001,1477,1100					; 3379		R,	SJCL,	J/SKIPS
D 0332, 0002,1477,1100					; 3380		R,	SJCE,	J/SKIPS
D 0333, 0003,1477,1100					; 3381		R,	SJCLE,	J/SKIPS
D 0334, 0004,1477,1100					; 3382		R,	SJCA,	J/SKIPS
D 0335, 0005,1477,1100					; 3383		R,	SJCGE,	J/SKIPS
D 0336, 0006,1477,1100					; 3384		R,	SJCN,	J/SKIPS
D 0337, 0007,1477,1100					; 3385		R,	SJCG,	J/SKIPS
							; 3386		.UCODE
							; 3387	
							; 3388	1477:
							; 3389	SKIPS:	FIX [AR] SIGN,
U 1477, 0744,3770,0303,4174,0007,0360,0000,0000,0000	; 3390		SKIP IF AC0
U 0744, 0250,3440,0303,0174,4003,7700,0400,0000,0000	; 3391	=0	AC_[AR],SKIP-COMP DISP
U 0745, 0250,4443,0000,4174,4003,7700,0000,0000,0000	; 3392		SKIP-COMP DISP
							; 3393	
							; 3394		.DCODE
D 0350, 0000,1431,1500					; 3395	350:	RW,	SJC-,	J/AOS
D 0351, 0001,1431,1500					; 3396		RW,	SJCL,	J/AOS
D 0352, 0002,1431,1500					; 3397		RW,	SJCE,	J/AOS
D 0353, 0003,1431,1500					; 3398		RW,	SJCLE,	J/AOS
D 0354, 0004,1431,1500					; 3399		RW,	SJCA,	J/AOS
D 0355, 0005,1431,1500					; 3400		RW,	SJCGE,	J/AOS
D 0356, 0006,1431,1500					; 3401		RW,	SJCN,	J/AOS
D 0357, 0007,1431,1500					; 3402		RW,	SJCG,	J/AOS
							; 3403		.UCODE
							; 3404	
							; 3405	1431:
U 1431, 1136,0111,0703,4174,4467,0701,0000,0001,0001	; 3406	AOS:	[AR]_[AR]+1, 3T, AD FLAGS
U 1136, 1143,4443,0000,4174,4007,0700,0200,0003,0002	; 3407	XOS:	START WRITE
U 1143, 1477,3333,0003,4175,5007,0701,0200,0000,0002	; 3408		MEM WRITE,MEM_[AR],J/SKIPS
							; 3409	
							; 3410		.DCODE
D 0370, 0000,1437,1500					; 3411	370:	RW,	SJC-,	J/SOS
D 0371, 0001,1437,1500					; 3412		RW,	SJCL,	J/SOS
D 0372, 0002,1437,1500					; 3413		RW,	SJCE,	J/SOS
D 0373, 0003,1437,1500					; 3414		RW,	SJCLE,	J/SOS
D 0374, 0004,1437,1500					; 3415		RW,	SJCA,	J/SOS
D 0375, 0005,1437,1500					; 3416		RW,	SJCGE,	J/SOS
D 0376, 0006,1437,1500					; 3417		RW,	SJCN,	J/SOS
D 0377, 0007,1437,1500					; 3418		RW,	SJCG,	J/SOS
							; 3419		.UCODE
							; 3420	
							; 3421	1437:
U 1437, 1136,1111,0703,4174,4467,0701,4000,0001,0001	; 3422	SOS:	[AR]_[AR]-1, 3T, AD FLAGS, J/XOS
							; 3423	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 94
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			CONDITIONAL JUMPS -- JUMP, AOJ, SOJ, AOBJ		

							; 3424	.TOC	"CONDITIONAL JUMPS -- JUMP, AOJ, SOJ, AOBJ"
							; 3425	; ENTER WITH E IN AR
							; 3426	
							; 3427	=1000
							; 3428	JUMP-TABLE:
							; 3429	
							; 3430	;CASE 0 -- NEVER
U 0270, 0100,3440,0505,0174,4156,4700,0400,0000,0000	; 3431		AC_[BR], NEXT INST
							; 3432	
							; 3433	;CASE 1 -- LESS
U 0271, 0762,3770,0505,0174,4007,0520,0400,0000,0000	; 3434		AC_[BR] TEST, SKIP DP0, J/JUMP-
							; 3435	
							; 3436	;CASE 2 -- EQUAL
U 0272, 0762,3770,0505,0174,4007,0621,0400,0000,0000	; 3437		AC_[BR] TEST, SKIP AD.EQ.0, J/JUMP-
							; 3438	
							; 3439	;CASE 3 -- LESS THAN OR EQUAL
U 0273, 0762,3770,0505,0174,4007,0421,0400,0000,0000	; 3440		AC_[BR] TEST, SKIP AD.LE.0, J/JUMP-
							; 3441	
							; 3442	;CASE 4 -- ALWAYS
U 0274, 0764,3440,0505,0174,4007,0700,0400,0000,0000	; 3443	JMPA:	AC_[BR], J/JUMPA
							; 3444	
							; 3445	;CASE 5 -- GREATER THAN OR EQUAL TO
U 0275, 0764,3770,0505,0174,4007,0520,0400,0000,0000	; 3446		AC_[BR] TEST, SKIP DP0, J/JUMPA
							; 3447	
							; 3448	;CASE 6 -- NOT EQUAL
U 0276, 0764,3770,0505,0174,4007,0621,0400,0000,0000	; 3449		AC_[BR] TEST, SKIP AD.EQ.0, J/JUMPA
							; 3450	
							; 3451	;CASE 7 -- GREATER
U 0277, 0764,3770,0505,0174,4007,0421,0400,0000,0000	; 3452		AC_[BR] TEST, SKIP AD.LE.0, J/JUMPA
							; 3453	
							; 3454	=0
U 0762, 0110,3443,0100,4174,4156,4700,0200,0014,0012	; 3455	JUMP-:	DONE
U 0763, 0110,3441,0301,4170,4156,4700,0200,0014,0012	; 3456		JUMPA
							; 3457	
							; 3458	=0
U 0764, 0110,3441,0301,4170,4156,4700,0200,0014,0012	; 3459	JUMPA:	JUMPA
U 0765, 0110,3443,0100,4174,4156,4700,0200,0014,0012	; 3460		DONE
							; 3461	
							; 3462	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 95
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			CONDITIONAL JUMPS -- JUMP, AOJ, SOJ, AOBJ		

							; 3463		.DCODE
D 0320, 0000,1400,2100					; 3464	320:	I,	SJC-,	J/DONE
D 0321, 0001,1440,2100					; 3465		I,	SJCL,	J/JUMP
D 0322, 0002,1440,2100					; 3466		I,	SJCE,	J/JUMP
D 0323, 0003,1440,2100					; 3467		I,	SJCLE,	J/JUMP
D 0324, 0004,1520,2100					; 3468		I,	SJCA,	J/JRST
D 0325, 0005,1440,2100					; 3469		I,	SJCGE,	J/JUMP
D 0326, 0006,1440,2100					; 3470		I,	SJCN,	J/JUMP
D 0327, 0007,1440,2100					; 3471		I,	SJCG,	J/JUMP
							; 3472		.UCODE
							; 3473	
							; 3474	1440:
U 1440, 0270,3771,0005,0276,6003,7700,0000,0000,0000	; 3475	JUMP:	[BR]_AC,JUMP DISP
							; 3476	
							; 3477		.DCODE
D 0340, 0000,1611,3000					; 3478	340:	I-PF,	SJC-,	J/AOJ
D 0341, 0001,1611,2100					; 3479		I,	SJCL,	J/AOJ
D 0342, 0002,1611,2100					; 3480		I,	SJCE,	J/AOJ
D 0343, 0003,1611,2100					; 3481		I,	SJCLE,	J/AOJ
D 0344, 0004,1611,2100					; 3482		I,	SJCA,	J/AOJ
D 0345, 0005,1611,2100					; 3483		I,	SJCGE,	J/AOJ
D 0346, 0006,1611,2100					; 3484		I,	SJCN,	J/AOJ
D 0347, 0007,1611,2100					; 3485		I,	SJCG,	J/AOJ
							; 3486		.UCODE
							; 3487	
							; 3488	1611:
U 1611, 0270,0551,0705,0274,4463,7702,0000,0001,0001	; 3489	AOJ:	[BR]_AC+1, AD FLAGS, 4T, JUMP DISP
							; 3490	
							; 3491		.DCODE
D 0360, 0000,1542,3000					; 3492	360:	I-PF,	SJC-,	J/SOJ
D 0361, 0001,1542,2100					; 3493		I,	SJCL,	J/SOJ
D 0362, 0002,1542,2100					; 3494		I,	SJCE,	J/SOJ
D 0363, 0003,1542,2100					; 3495		I,	SJCLE,	J/SOJ
D 0364, 0004,1542,2100					; 3496		I,	SJCA,	J/SOJ
D 0365, 0005,1542,2100					; 3497		I,	SJCGE,	J/SOJ
D 0366, 0006,1542,2100					; 3498		I,	SJCN,	J/SOJ
D 0367, 0007,1542,2100					; 3499		I,	SJCG,	J/SOJ
							; 3500		.UCODE
							; 3501	
							; 3502	1542:
U 1542, 0270,2551,0705,0274,4463,7702,4000,0001,0001	; 3503	SOJ:	[BR]_AC-1, AD FLAGS, 4T, JUMP DISP
							; 3504	
							; 3505		.DCODE
D 0252, 0005,1547,2100					; 3506	252:	I,	SJCGE,	J/AOBJ
D 0253, 0001,1547,2100					; 3507		I,	SJCL,	J/AOBJ
							; 3508		.UCODE
							; 3509	
							; 3510	1547:
							; 3511	AOBJ:	[BR]_AC+1000001,	;ADD 1 TO BOTH HALF WORDS
							; 3512		INH CRY18, 3T,		;NO CARRY INTO LEFT HALF
U 1547, 0270,0551,1505,0274,4403,7701,0000,0000,0000	; 3513		JUMP DISP		;HANDLE EITHER AOBJP OR AOBJN
							; 3514	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 96
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			AC DECODE JUMPS -- JRST, JFCL				

							; 3515	.TOC	"AC DECODE JUMPS -- JRST, JFCL"
							; 3516	
							; 3517		.DCODE
D 0254, 0000,1520,6000					; 3518	254:	I,VMA/0, AC DISP,	J/JRST	;DISPATCHES TO 1 OF 16
							; 3519						; PLACES ON AC BITS
D 0255, 0000,1540,2100					; 3520		I,			J/JFCL
							; 3521		.UCODE
							; 3522	
							; 3523	;JRST DISPATCHES TO ONE OF 16 LOC'NS ON AC BITS
							; 3524	
							; 3525	=0000
							; 3526	1520:
U 1520, 0110,3441,0301,4170,4156,4700,0200,0014,0012	; 3527	JRST:	JUMPA			;(0) JRST 0,
U 1521, 0110,3441,0301,4170,4156,4700,0200,0014,0012	; 3528	1521:	JUMPA			;(1) PORTAL IS SAME AS JRST
							; 3529	1522:	VMA_[PC]-1, START READ, ;(2) JRSTF
U 1522, 0150,1113,0701,4170,4007,0700,4200,0004,0012	; 3530		J/JRSTF
U 1523, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 3531	1523:	UUO			;(3)
U 1524, 1004,4443,0000,4174,4007,0340,0000,0000,0000	; 3532	1524:	SKIP KERNEL, J/HALT	;(4) HALT
							; 3533	1525:
							; 3534	XJRSTF0: VMA_[AR], START READ, ;(5) XJRSTF
U 1525, 2606,3443,0300,4174,4007,0700,0200,0004,0012	; 3535		J/XJRSTF
U 1526, 0320,4443,0000,4174,4007,0340,0000,0000,0000	; 3536	1526:	SKIP KERNEL, J/XJEN	;(6) XJEN
U 1527, 1014,4443,0000,4174,4007,0340,0000,0000,0000	; 3537	1527:	SKIP KERNEL, J/XPCW	;(7) XPCW
							; 3538	1530:	VMA_[PC]-1, START READ, ;(10)
U 1530, 1010,1113,0701,4170,4007,0040,4200,0004,0012	; 3539		 SKIP IO LEGAL, J/JRST10
U 1531, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 3540	1531:	UUO			;(11)
							; 3541	1532:	VMA_[PC]-1, START READ, ;(12) JEN
U 1532, 0300,1113,0701,4170,4007,0040,4200,0004,0012	; 3542		 SKIP IO LEGAL, J/JEN
U 1533, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 3543	1533:	UUO			;(13)
U 1534, 1024,4443,0000,4174,4007,0340,0000,0000,0000	; 3544	1534:	SKIP KERNEL, J/SFM	;(14) SFM
U 1535, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 3545	1535:	UUO			;(15)
U 1536, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 3546	1536:	UUO			;(16)
U 1537, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 3547	1537:	UUO			;(17)
							; 3548	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 97
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			AC DECODE JUMPS -- JRST, JFCL				

							; 3549	=0*
							; 3550	JRSTF:	MEM READ,		;WAIT FOR DATA
							; 3551		[HR]_MEM,		;STICK IN HR
							; 3552		LOAD INST EA,		;LOAD @ AND XR
U 0150, 2551,3771,0002,4365,5217,0700,0210,0000,0002	; 3553		CALL [JRST0]		;COMPUTE EA AGAIN
U 0152, 0110,3441,0301,4170,4156,4700,0200,0014,0012	; 3554		JUMPA			;JUMP
							; 3555	
U 2551, 0030,4443,0000,2174,4006,6700,0000,0000,0000	; 3556	JRST0:	EA MODE DISP		;WHAT TYPE OF EA?
							; 3557	=100*
							; 3558		READ XR,		;INDEXED
							; 3559		LOAD FLAGS,		;GET FLAGS FROM XR
							; 3560		UPDATE USER,		;ALLOW USER TO SET
U 0030, 0002,3773,0000,2274,4464,1700,0000,0001,0004	; 3561		RETURN [2]		;ALL DONE
							; 3562		READ [HR],		;PLAIN
							; 3563		LOAD FLAGS,		;LOAD FLAGS FROM INST
							; 3564		UPDATE USER,		;ALLOW USER TO SET
U 0032, 0002,3333,0002,4174,4464,1700,0000,0001,0004	; 3565		RETURN [2]		;RETURN
							; 3566		[HR]_[HR]+XR,		;BOTH
							; 3567		LOAD VMA,		;FETCH IND WORD
							; 3568		START READ,		;START MEM CYCLE
U 0034, 2556,0551,0202,2270,4007,0700,0200,0004,0012	; 3569		J/JRST1 		;CONTINUE BELOW
							; 3570		VMA_[HR],		;INDIRECT
							; 3571		START READ,		;FETCH IND WORD
							; 3572		PXCT EA,		;SETUP PXCT STUFF
U 0036, 2556,3443,0200,4174,4007,0700,0200,0004,0112	; 3573		J/JRST1 		;CONTINUE BELOW
							; 3574	JRST1:	MEM READ,		;WAIT FOR DATA
							; 3575		[HR]_MEM,		;LOAD THE HR
							; 3576		LOAD INST EA,		;LOAD @ AND XR
U 2556, 2551,3771,0002,4365,5217,0700,0200,0000,0002	; 3577		J/JRST0 		;LOOP BACK
							; 3578	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 98
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			AC DECODE JUMPS -- JRST, JFCL				

							; 3579	=0
U 1004, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 3580	HALT:	UUO			;USER MODE
U 1005, 2601,3441,0301,4174,4007,0700,0000,0000,0000	; 3581		[PC]_[AR]		;EXEC MODE--CHANGE PC
U 2601, 0104,4751,1217,4374,4007,0700,0000,0000,0001	; 3582		HALT [HALT]		;HALT INSTRUCTION
							; 3583	
							; 3584	=0
U 1010, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 3585	JRST10: UUO
U 1011, 0303,4443,0000,4174,4007,0700,0000,0000,0000	; 3586		J/JEN2			;DISMISS INTERRUPT
							; 3587	=0000
U 0300, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 3588	JEN:	UUO			; FLAGS
							; 3589		MEM READ,
							; 3590		[HR]_MEM,		;GET INST
							; 3591		LOAD INST EA,		;LOAD XR & @
U 0301, 2551,3771,0002,4365,5217,0700,0210,0000,0002	; 3592		CALL [JRST0]		;COMPUTE FLAGS
							; 3593	=0011
U 0303, 2432,4553,1400,4374,4007,0331,0010,0007,7400	; 3594	JEN2:	DISMISS 		;DISMISS INTERRUPT
U 0307, 3610,3770,1416,4344,4007,0700,0010,0000,0000	; 3595	=0111	CALL LOAD PI		;RELOAD PI HARDWARE
U 0317, 0110,3441,0301,4170,4156,4700,0200,0014,0012	; 3596	=1111	JUMPA			;GO JUMP
							; 3597	=
							; 3598	
							; 3599	1540:
							; 3600	JFCL:	JFCL FLAGS,		;ALL DONE IN HARDWARE
							; 3601		SKIP JFCL,		;SEE IF SKIPS
							; 3602		3T,			;ALLOW TIME
U 1540, 0762,4443,0000,4174,4467,0551,0000,0001,0010	; 3603		J/JUMP- 		;JUMP IF WE SHOULD
							; 3604	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 99
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			EXTENDED ADDRESSING INSTRUCTIONS			

							; 3605	.TOC	"EXTENDED ADDRESSING INSTRUCTIONS"
							; 3606	
							; 3607	=0000
U 0320, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 3608	XJEN:	UUO			;HERE IF USER MODE
U 0321, 2432,4553,1400,4374,4007,0331,0010,0007,7400	; 3609		DISMISS 		;CLEAR HIGHEST INTERRUPT
U 0325, 0335,3333,0012,4174,4437,0700,0000,0000,0000	; 3610	=0101	READ [MASK], LOAD PI	;NO MORE INTERRUPTS
							; 3611	=1101	ABORT MEM CYCLE,	;AVOID INTERRUPT PAGE FAIL
U 0335, 1525,4223,0000,4364,4277,0700,0200,0000,0010	; 3612		J/XJRSTF0		;START READING FLAG WORD
							; 3613	=
							; 3614	
U 2606, 2623,3771,0005,4365,5007,0700,0200,0000,0002	; 3615	XJRSTF: MEM READ, [BR]_MEM	;PUT FLAGS IN BR
							; 3616		[AR]_[AR]+1,		;INCREMENT ADDRESS
							; 3617		LOAD VMA,		;PUT RESULT IN VMA
U 2623, 2627,0111,0703,4174,4007,0700,0200,0004,0012	; 3618		START READ		;START MEMORY
							; 3619		MEM READ, [PC]_MEM,	;PUT DATA IN PC
U 2627, 2701,3771,0001,4361,5007,0700,0200,0000,0002	; 3620		HOLD LEFT		;IGNORE SECTION NUMBER
							; 3621		READ [BR], LOAD FLAGS,	;LOAD NEW FLAGS
U 2701, 2714,3333,0005,4174,4467,0700,0000,0001,0004	; 3622		UPDATE USER		;BUT HOLD USER FLAG
							; 3623	PISET:	[FLG]_[FLG].AND.NOT.#,	;CLEAR PI CYCLE
U 2714, 0305,5551,1313,4374,4007,0700,0000,0001,0000	; 3624		 FLG.PI/1, J/PIEXIT	;RELOAD PI HARDWARE
							; 3625					; INCASE THIS IS AN
							; 3626					; INTERRUPT INSTRUCTION
							; 3627	
							; 3628	=0
U 1014, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 3629	XPCW:	UUO			;USER MODE
U 1015, 0060,4521,1205,4074,4007,0700,0000,0000,0000	; 3630		[BR]_FLAGS		;PUT FLAGS IN BR
							; 3631	=0*0
							; 3632	PIXPCW: VMA_[AR], START WRITE,	;STORE FLAGS
U 0060, 3667,3443,0300,4174,4007,0700,0210,0003,0012	; 3633		CALL [STOBR]		;PUT BR IN MEMORY
							; 3634	=1*0	VMA_[AR]+1, LOAD VMA,
							; 3635		START WRITE,		;PREPEARE TO STORE PC
U 0064, 3670,0111,0703,4170,4007,0700,0210,0003,0012	; 3636		CALL [STOPC]		;PUT PC IN MEMORY
							; 3637	=1*1	[AR]_[AR]+1,		;DO NEW PC PART
U 0065, 2606,0111,0703,4174,4007,0700,0200,0004,0002	; 3638		START READ, J/XJRSTF
							; 3639	=
							; 3640	
							; 3641	=0
U 1024, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 3642	SFM:	UUO
U 1025, 2715,3443,0300,4174,4007,0700,0200,0003,0012	; 3643		VMA_[AR], START WRITE	;STORE FLAGS
U 2715, 0435,4521,1203,4074,4007,0700,0000,0000,0000	; 3644		[AR]_FLAGS, J/STORE	;STORE AND EXIT
							; 3645	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 100
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			XCT							

							; 3646	.TOC	"XCT"
							; 3647	
							; 3648		.DCODE
D 0256, 0000,1541,1100					; 3649	256:	R,		J/XCT	;OPERAND FETCHED AS DATA
							; 3650		.UCODE
							; 3651	
							; 3652	1541:
U 1541, 1034,4443,0000,4174,4007,0340,0000,0000,0000	; 3653	XCT:	SKIP KERNEL		;SEE IF MAY BE PXCT
							; 3654	=0
							; 3655	XCT1A:	[HR]_[AR],		;STUFF INTO HR
							; 3656		DBUS/DP,		;PLACE ON DBUS FOR IR
							; 3657		LOAD INST,		;LOAD IR, AC, XR, ETC.
							; 3658		PXCT/E1,		;ALLOW XR TO BE PREVIOUS
U 1034, 2716,3441,0302,4174,4617,0700,0000,0000,0100	; 3659		J/XCT1			;CONTINUE BELOW
							; 3660	
							; 3661		READ [HR],		;LOAD PXCT FLAGS
							; 3662		LOAD PXCT,		; ..
U 1035, 1034,3333,0002,4174,4167,0700,0000,0000,0000	; 3663		J/XCT1A			;CONTINUE WITH NORMAL FLOW
							; 3664	
							; 3665	XCT1:	WORK[YSAVE]_[HR] CLR LH,;SAVE FOR IO INSTRUCTIONS
U 2716, 0371,4713,1202,7174,4007,0700,0400,0000,0422	; 3666		J/XCT2			;GO EXECUTE IT
							; 3667	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 101
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			STACK INSTRUCTIONS -- PUSHJ, PUSH, POP, POPJ		

							; 3668	.TOC	"STACK INSTRUCTIONS -- PUSHJ, PUSH, POP, POPJ"
							; 3669	
							; 3670		.DCODE
D 0260, 0000,1544,2100					; 3671	260:	I,	B/0,	J/PUSHJ
D 0261, 0002,1543,3100					; 3672		IR,	B/2,	J/PUSH
D 0262, 0002,1545,2100					; 3673		I,	B/2,	J/POP
D 0263, 0000,1546,2100					; 3674		I,		J/POPJ
							; 3675		.UCODE
							; 3676	
							; 3677	;ALL START WITH E IN AR
							; 3678	1543:
							; 3679	PUSH:	MEM READ,		;PUT MEMOP IN BR
U 1543, 2717,3771,0005,4365,5007,0700,0200,0000,0002	; 3680		[BR]_MEM		; ..
							; 3681	PUSH1:	[ARX]_AC+1000001,	;BUMP BOTH HALVES OF AC
							; 3682		INH CRY18,		;NO CARRY
							; 3683		LOAD VMA,		;START TO STORE ITEM
							; 3684		START WRITE,		;START MEM CYCLE
							; 3685		PXCT STACK WORD,	;THIS IS THE STACK DATA WORD
							; 3686		3T,			;ALLOW TIME
							; 3687		SKIP CRY0,		;GO TO STMAC, SKIP IF PDL OV
U 2717, 1044,0551,1504,0274,4407,0311,0200,0003,0712	; 3688		J/STMAC 		; ..
							; 3689	
							; 3690	1544:
							; 3691	PUSHJ:	[BR]_PC WITH FLAGS,	;COMPUTE UPDATED FLAGS
							; 3692		CLR FPD,		;CLEAR FIRST-PART-DONE
U 1544, 2717,3741,0105,4074,4467,0700,0000,0005,0000	; 3693		J/PUSH1 		; AND JOIN PUSH CODE
							; 3694	
							; 3695	=0
							; 3696	STMAC:	MEM WRITE,		;WAIT FOR MEMORY
							; 3697		MEM_[BR],		;STORE BR ON STACK
							; 3698		B DISP, 		;SEE IF PUSH OR PUSHJ
U 1044, 0220,3333,0005,4175,5003,7701,0200,0000,0002	; 3699		J/JSTAC 		;BELOW
							; 3700	;WE MUST STORE THE STACK WORD PRIOR TO SETTING PDL OV IN CASE OF
							; 3701	; PAGE FAIL.
							; 3702		MEM WRITE,		;WAIT FOR MEMORY
U 1045, 2720,3333,0005,4175,5007,0701,0200,0000,0002	; 3703		MEM_[BR]		;STORE BR
							; 3704	SETPDL: SET PDL OV,		;OVERFLOW
							; 3705		B DISP, 		;SEE IF PUSH OR PUSHJ
U 2720, 0220,4443,0000,4174,4463,7700,0000,0001,2000	; 3706		J/JSTAC 		;BELOW
							; 3707	
							; 3708	=00
							; 3709	JSTAC:	[PC]_[AR],		;PUSHJ--LOAD PC
							; 3710		LOAD VMA,		;LOAD ADDRESS
U 0220, 0221,3441,0301,4174,4007,0700,0200,0014,0012	; 3711		FETCH			;GET NEXT INST
							; 3712	JSTAC1: AC_[ARX],		;STORE BACK STACK PTR
U 0221, 0100,3440,0404,0174,4156,4700,0400,0000,0000	; 3713		NEXT INST		;DO NEXT INST
							; 3714		AC_[ARX],		;UPDATE STACK POINTER
U 0222, 1400,3440,0404,0174,4007,0700,0400,0000,0000	; 3715		J/DONE			;DO NEXT INST
							; 3716	=
							; 3717	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 102
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			STACK INSTRUCTIONS -- PUSHJ, PUSH, POP, POPJ		

							; 3718	1545:
							; 3719	POP:	[ARX]_AC,		;GET POINTER
							; 3720		LOAD VMA,		;ADDRESS OF STACK WORD
							; 3721		START READ, 3T,		;START CYCLE
U 1545, 2721,3771,0004,0276,6007,0701,0200,0004,0712	; 3722		PXCT STACK WORD 	;FOR PXCT
							; 3723	
							; 3724		MEM READ,		;LOAD BR (QUIT IF PAGE FAIL)
U 2721, 2722,3771,0005,4365,5007,0700,0200,0000,0002	; 3725		[BR]_MEM		;STACK WORD TO BR
							; 3726	
							; 3727		[ARX]_[ARX]+#,		;UPDATE POINTER
							; 3728		#/777777,		;-1 IN EACH HALF
							; 3729		INH CRY18, 3T,		;BUT NO CARRY
U 2722, 1144,0551,0404,4374,4407,0311,0000,0077,7777	; 3730		SKIP CRY0		;SEE IF OVERFLOW
							; 3731	
							; 3732	=0	VMA_[AR],		;EFFECTIVE ADDRESS
							; 3733		PXCT DATA,		;FOR PXCT
							; 3734		START WRITE,		;WHERE TO STORE RESULT
U 1144, 2724,3443,0300,4174,4007,0700,0200,0003,0312	; 3735		J/POPX1			;OVERFLOW
							; 3736	
							; 3737		VMA_[AR],		;EFFECTIVE ADDRESS
							; 3738		PXCT DATA,		;FOR PXCT
U 1145, 2723,3443,0300,4174,4007,0700,0200,0003,0312	; 3739		START WRITE		;WHERE TO STORE RESULT
							; 3740	
							; 3741		MEM WRITE,		;WAIT FOR MEM
							; 3742		MEM_[BR],		;STORE BR
							; 3743		B DISP, 		;POP OR POPJ?
U 2723, 0220,3333,0005,4175,5003,7701,0200,0000,0002	; 3744		J/JSTAC 		;STORE POINTER
							; 3745	
							; 3746	
							; 3747	POPX1:	MEM WRITE,		;WAIT FOR MEMORY
							; 3748		MEM_[BR],		;STORE BR
U 2724, 2720,3333,0005,4175,5007,0701,0200,0000,0002	; 3749		J/SETPDL		;GO SET PDL OV
							; 3750	
							; 3751	1546:
							; 3752	POPJ:	[ARX]_AC,		;GET POINTER
							; 3753		LOAD VMA,		;POINT TO STACK WORD
							; 3754		PXCT STACK WORD, 3T,	;FOR PXCT
U 1546, 2725,3771,0004,0276,6007,0701,0200,0004,0712	; 3755		START READ		;START READ
							; 3756		[ARX]_[ARX]+#,		;UPDATE POINTER
							; 3757		#/777777,		;-1 IN BOTH HALFS
							; 3758		INH CRY18, 3T,		;INHIBIT CARRY 18
U 2725, 1146,0551,0404,4374,4407,0311,0000,0077,7777	; 3759		SKIP CRY0		;SEE IF OVERFLOW
U 1146, 1147,4443,0000,4174,4467,0700,0000,0001,2000	; 3760	=0	SET PDL OV		;SET OVERFLOW
							; 3761		MEM READ, [PC]_MEM,	;STICK DATA IN PC
							; 3762		HOLD LEFT,		;NO FLAGS
U 1147, 0221,3771,0001,4361,5007,0700,0200,0000,0002	; 3763		J/JSTAC1		;STORE POINTER
							; 3764	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 103
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			STACK INSTRUCTIONS -- ADJSP				

							; 3765	.TOC	"STACK INSTRUCTIONS -- ADJSP"
							; 3766	
							; 3767		.DCODE
D 0105, 0000,1551,3000					; 3768	105:	I-PF,	B/0,		J/ADJSP
							; 3769		.UCODE
							; 3770	
							; 3771	1551:
							; 3772	ADJSP:	[AR]_[AR] SWAP, 	;MAKE 2 COPIES OF RH
U 1551, 2726,3770,0303,4344,0007,0700,0000,0000,0000	; 3773		HOLD RIGHT
							; 3774		[BR]_AC,		;READ AC, SEE IF MINUS
							; 3775		3T,
U 2726, 1150,3771,0005,0276,6007,0521,0000,0000,0000	; 3776		SKIP DP0
							; 3777	=0	AC_[BR]+[AR],		;UPDATE AC
							; 3778		INH CRY18,		;NO CARRY
							; 3779		SKIP DP0,		;SEE IF STILL OK
							; 3780		3T,			;ALLOW TIME
U 1150, 1152,0113,0503,0174,4407,0521,0400,0000,0000	; 3781		J/ADJSP1		;TEST FOR OFLO
							; 3782		AC_[BR]+[AR],		;UPDATE AC
							; 3783		INH CRY18,		;NO CARRY
							; 3784		SKIP DP0,		;SEE IF STILL MINUS
							; 3785		3T,			;ALLOW TIME FOR SKIP
U 1151, 1154,0113,0503,0174,4407,0521,0400,0000,0000	; 3786		J/ADJSP2		;CONTINUE BELOW
							; 3787	
							; 3788	=0
U 1152, 0100,4443,0000,4174,4156,4700,0000,0000,0000	; 3789	ADJSP1: NEXT INST		;NO OVERFLOW
							; 3790		SET PDL OV,		;SET PDL OV
U 1153, 0555,4443,0000,4174,4467,0700,0000,0001,2000	; 3791		J/NIDISP		;GO DO NICOND DISP
							; 3792	
							; 3793	=0
							; 3794	ADJSP2: SET PDL OV,		;SET PDL OV
U 1154, 0555,4443,0000,4174,4467,0700,0000,0001,2000	; 3795		J/NIDISP		;GO DO NICOND DISP
U 1155, 0100,4443,0000,4174,4156,4700,0000,0000,0000	; 3796		NEXT INST		;NO OVERFLOW
							; 3797	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 104
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			SUBROUTINE CALL/RETURN -- JSR, JSP, JSA, JRA		

							; 3798	.TOC	"SUBROUTINE CALL/RETURN -- JSR, JSP, JSA, JRA"
							; 3799	
							; 3800		.DCODE
D 0264, 0000,1552,2100					; 3801	264:	I,		J/JSR
D 0265, 0000,1550,2100					; 3802		I,		J/JSP
D 0266, 0000,1554,2100					; 3803		I,		J/JSA
D 0267, 0000,1555,2100					; 3804		I,		J/JRA
							; 3805		.UCODE
							; 3806	
							; 3807	1550:
U 1550, 2727,3741,0105,4074,4007,0700,0000,0000,0000	; 3808	JSP:	[BR]_PC WITH FLAGS	;GET PC WITH FLAGS
							; 3809		CLR FPD,		;CLEAR FIRST-PART-DONE
							; 3810		AC_[BR],		;STORE FLAGS
U 2727, 0764,3440,0505,0174,4467,0700,0400,0005,0000	; 3811		J/JUMPA 		;GO JUMP
							; 3812	
							; 3813	1552:
							; 3814	JSR:	[BR]_PC WITH FLAGS,	;GET PC WITH FLAGS
U 1552, 2730,3741,0105,4074,4467,0700,0000,0005,0000	; 3815		CLR FPD 		;CLEAR FIRST-PART-DONE
							; 3816		VMA_[AR],		;EFFECTIVE ADDRESS
U 2730, 2731,3443,0300,4174,4007,0700,0200,0003,0012	; 3817		START WRITE		;STORE OLD PC WORD
							; 3818		MEM WRITE,		;WAIT FOR MEMORY
U 2731, 2732,3333,0005,4175,5007,0701,0200,0000,0002	; 3819		MEM_[BR]		;STORE
							; 3820		[PC]_[AR]+1000001,	;PC _ E+1
							; 3821		HOLD LEFT,		;NO JUNK IN LEFT
							; 3822		3T,			;ALLOW TIME FOR DBM
U 2732, 1400,0551,0301,4370,4007,0701,0000,0000,0001	; 3823		J/DONE	 		;[127] START AT E+1
							; 3824					;[127] MUST NICOND TO CLEAR TRAP CYCLE
							; 3825	
							; 3826	
							; 3827	
							; 3828	1554:
							; 3829	JSA:	[BR]_[AR],		;SAVE E
U 1554, 2733,3441,0305,4174,4007,0700,0200,0003,0002	; 3830		START WRITE		;START TO STORE
U 2733, 0130,3770,0304,4344,4007,0700,0000,0000,0000	; 3831		[ARX]_[AR] SWAP 	;ARX LEFT _ E
							; 3832	=0*0	[AR]_AC, 		;GET OLD AC
U 0130, 3075,3771,0003,0276,6007,0700,0010,0000,0000	; 3833		CALL [IBPX]		;SAVE AR IN MEMORY
							; 3834	=1*0	[ARX]_[PC],		;ARX NOW HAS E,,PC
							; 3835		HOLD LEFT,		; ..
U 0134, 3671,3441,0104,4170,4007,0700,0010,0000,0000	; 3836		CALL [AC_ARX]		;GO PUT ARX IN AC
							; 3837	=1*1	[PC]_[BR]+1000001,	;NEW PC
							; 3838		3T,			;ALLOW TIME
							; 3839		HOLD LEFT,		;NO JUNK IN PC LEFT
U 0135, 1400,0551,0501,4370,4007,0701,0000,0000,0001	; 3840		J/DONE	 		;[127] START AT E+1
							; 3841					;[127] NICOND MUST CLEAR TRAP CYCLE
							; 3842	=
							; 3843	
							; 3844	1555:
U 1555, 2734,3771,0005,0276,6007,0700,0000,0000,0000	; 3845	JRA:	[BR]_AC 		;GET AC
U 2734, 2735,3770,0505,4344,4007,0700,0000,0000,0000	; 3846		[BR]_[BR] SWAP		;OLD E IN BR RIGHT
							; 3847		VMA_[BR],		;LOAD VMA
U 2735, 2736,3443,0500,4174,4007,0700,0200,0004,0012	; 3848		START READ		;FETCH SAVED AC
							; 3849		MEM READ,		;WAIT FOR MEMORY
							; 3850		[BR]_MEM,		;LOAD BR WITH SAVE AC
U 2736, 0274,3771,0005,4365,5007,0700,0200,0000,0002	; 3851		J/JMPA			;GO JUMP
							; 3852	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 105
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			ILLEGAL INSTRUCTIONS AND UUO'S				

							; 3853	.TOC	"ILLEGAL INSTRUCTIONS AND UUO'S"
							; 3854	;LUUO'S TRAP TO CURRENT CONTEXT
							; 3855	
							; 3856		.DCODE
D 0030, 0000,1557,2100					; 3857	030:	I,	B/0,	J/LUUO
D 0031, 0001,1557,2100					; 3858		I,	B/1,	J/LUUO
D 0032, 0002,1557,2100					; 3859		I,	B/2,	J/LUUO
D 0033, 0003,1557,2100					; 3860		I,	B/3,	J/LUUO
D 0034, 0004,1557,2100					; 3861		I,	B/4,	J/LUUO
D 0035, 0005,1557,2100					; 3862		I,	B/5,	J/LUUO
D 0036, 0006,1557,2100					; 3863		I,	B/6,	J/LUUO
D 0037, 0007,1557,2100					; 3864		I,	B/7,	J/LUUO
							; 3865	
							; 3866	;MONITOR UUO'S -- TRAP TO EXEC
							; 3867	
D 0040, 0000,1556,2100					; 3868	040:	I,		J/MUUO		;CALL
D 0041, 0000,1556,2100					; 3869		I,		J/MUUO		;INIT
D 0042, 0000,1556,2100					; 3870		I,		J/MUUO
D 0043, 0000,1556,2100					; 3871		I,		J/MUUO
D 0044, 0000,1556,2100					; 3872		I,		J/MUUO
D 0045, 0000,1556,2100					; 3873		I,		J/MUUO
D 0046, 0000,1556,2100					; 3874		I,		J/MUUO
D 0047, 0000,1556,2100					; 3875		I,		J/MUUO		;CALLI
D 0050, 0000,1556,2100					; 3876		I,		J/MUUO		;OPEN
D 0051, 0000,1556,2100					; 3877		I,		J/MUUO		;TTCALL
D 0052, 0000,1556,2100					; 3878		I,		J/MUUO
D 0053, 0000,1556,2100					; 3879		I,		J/MUUO
D 0054, 0000,1556,2100					; 3880		I,		J/MUUO
D 0055, 0000,1556,2100					; 3881		I,		J/MUUO		;RENAME
D 0056, 0000,1556,2100					; 3882		I,		J/MUUO		;IN
D 0057, 0000,1556,2100					; 3883		I,		J/MUUO		;OUT
D 0060, 0000,1556,2100					; 3884		I,		J/MUUO		;SETSTS
D 0061, 0000,1556,2100					; 3885		I,		J/MUUO		;STATO
D 0062, 0000,1556,2100					; 3886		I,		J/MUUO		;GETSTS
D 0063, 0000,1556,2100					; 3887		I,		J/MUUO		;STATZ
D 0064, 0000,1556,2100					; 3888		I,		J/MUUO		;INBUF
D 0065, 0000,1556,2100					; 3889		I,		J/MUUO		;OUTBUF
D 0066, 0000,1556,2100					; 3890		I,		J/MUUO		;INPUT
D 0067, 0000,1556,2100					; 3891		I,		J/MUUO		;OUTPUT
D 0070, 0000,1556,2100					; 3892		I,		J/MUUO		;CLOSE
D 0071, 0000,1556,2100					; 3893		I,		J/MUUO		;RELEAS
D 0072, 0000,1556,2100					; 3894		I,		J/MUUO		;MTAPE
D 0073, 0000,1556,2100					; 3895		I,		J/MUUO		;UGETF
D 0074, 0000,1556,2100					; 3896		I,		J/MUUO		;USETI
D 0075, 0000,1556,2100					; 3897		I,		J/MUUO		;USETO
D 0076, 0000,1556,2100					; 3898		I,		J/MUUO		;LOOKUP
D 0077, 0000,1556,2100					; 3899		I,		J/MUUO		;ENTER
							; 3900	
							; 3901	;EXPANSION OPCODES
							; 3902	
D 0100, 0000,1556,2100					; 3903	100:	I,		J/UUO		;UJEN
D 0101, 0000,1661,2100					; 3904		I,		J/UUO101
D 0102, 0000,1662,2100					; 3905		I,		J/UUO102	;GFAD
D 0103, 0000,1663,2100					; 3906		I,		J/UUO103	;GFSB
							; 3907	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 106
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			ILLEGAL INSTRUCTIONS AND UUO'S				

							; 3908	;RESERVED OPCODES
							; 3909	
D 0000, 0000,1556,2100					; 3910	000:	I,		J/UUO
D 0104, 0000,1664,2100					; 3911	104:	I,		J/JSYS		;JSYS
D 0106, 0000,1666,2100					; 3912	106:	I,		J/UUO106	;GFMP
D 0107, 0000,1667,2100					; 3913		I,		J/UUO107	;GFDV
D 0130, 0000,1660,2100					; 3914	130:	I,	B/0,	J/FP-LONG	;UFA
D 0131, 0001,1660,2100					; 3915		I,	B/1,	J/FP-LONG	;DFN
D 0141, 0002,1660,2100					; 3916	141:	I,	B/2,	J/FP-LONG	;FADL
D 0151, 0003,1660,2100					; 3917	151:	I,	B/3,	J/FP-LONG	;FSBL
D 0161, 0004,1660,2100					; 3918	161:	I,	B/4,	J/FP-LONG	;FMPL
D 0171, 0005,1660,2100					; 3919	171:	I,	B/5,	J/FP-LONG	;FDVL
D 0247, 0000,1665,2100					; 3920	247:	I,		J/UUO247	;RESERVED
							; 3921		.UCODE
							; 3922	
							; 3923	1661:
U 1661, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 3924	UUO101: UUO
							; 3925	1662:
U 1662, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 3926	UUO102: UUO
							; 3927	1663:
U 1663, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 3928	UUO103: UUO
							; 3929	1664:
U 1664, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 3930	JSYS:	UUO
							; 3931	1666:
U 1666, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 3932	UUO106: UUO
							; 3933	1667:
U 1667, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 3934	UUO107: UUO
							; 3935	1660:
U 1660, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 3936	FP-LONG:UUO
							; 3937	1665:
U 1665, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 3938	UUO247: UUO
							; 3939	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 107
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			ILLEGAL INSTRUCTIONS AND UUO'S				

							; 3940	;HERE FOR UUO'S WHICH TRAP TO EXEC
							; 3941	1556:
							; 3942	UUO:	;THIS TAG IS USED FOR ILLEGAL THINGS WHICH DO UUO TRAPS
							; 3943	MUUO:	;THIS TAG IS USED FOR MONITOR CALL INSTRUCTIONS
							; 3944		[HR]_[HR].AND.#,	;MASK OUT @ AND XR
							; 3945		#/777740,		;MASK
U 1556, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 3946		HOLD RIGHT		;KEEP RIGHT
							; 3947	;THE UUO MACRO DOES THE ABOVE INSTRUCTION AND GOES TO UUOGO
U 2737, 1156,4751,1204,4374,4007,0700,0000,0000,0424	; 3948	UUOGO:	[ARX]_0 XWD [424]	;HERE FROM UUO MACRO
							; 3949					;GET OFFSET TO UPT
							; 3950	=0	[ARX]_[ARX]+[UBR],	;ADDRESS OF MUUO WORD
U 1156, 1510,0111,1104,4174,4007,0700,0010,0000,0000	; 3951		CALL [ABORT]		;STOP MEMORY
							; 3952	.IF/KIPAGE
							; 3953	.IF/KLPAGE
							; 3954		READ [EBR],		;IF BOTH POSSIBLE, SEE WHICH IS ENABLED
U 1157, 1160,3333,0010,4174,4007,0520,0000,0000,0000	; 3955		SKIP DP0		;KL PAGING ??
							; 3956	=0
							; 3957	.ENDIF/KLPAGE
							; 3958		READ [ARX],		;GET THE ADDRESS
							; 3959		LOAD VMA,		;START WRITE
							; 3960		VMA PHYSICAL WRITE,	;ABSOLUTE ADDRESS
U 1160, 0310,3333,0004,4174,4007,0700,0200,0021,1016	; 3961		J/KIMUUO		;GO STORE KI STYLE
							; 3962	.ENDIF/KIPAGE
							; 3963	.IF/KLPAGE
U 1161, 1162,3770,0203,4344,4007,0700,0000,0000,0000	; 3964		[AR]_[HR] SWAP		;PUT IN RIGHT HALF
							; 3965	=0	[AR]_FLAGS,		;FLAGS IN LEFT HALF
							; 3966		HOLD RIGHT,		;JUST WANT FLAGS
U 1162, 2745,4521,1203,4074,0007,0700,0010,0000,0000	; 3967		CALL [UUOFLG]		;CLEAR TRAP FLAGS
							; 3968		READ [ARX],		;LOOK AT ADDRESS
							; 3969		LOAD VMA,		;LOAD THE VMA
U 1163, 0314,3333,0004,4174,4007,0700,0200,0021,1016	; 3970		VMA PHYSICAL WRITE	;STORE FLAG WORD
							; 3971	=0*	MEM WRITE,		;WAIT FOR MEMORY
U 0314, 2746,3333,0003,4175,5007,0701,0210,0000,0002	; 3972		MEM_[AR], CALL [NEXT]	;STORE
							; 3973		MEM WRITE,		;WAIT FOR MEMORY
U 0316, 0020,3333,0001,4175,5007,0701,0200,0000,0002	; 3974		MEM_[PC]		;STORE FULL WORD PC
							; 3975	=000	[HR]_0, 		;SAVE E
U 0020, 2746,4221,0002,4174,0007,0700,0010,0000,0000	; 3976		HOLD RIGHT, CALL [NEXT]	;BUT CLEAR OPCODE
							; 3977	.ENDIF/KLPAGE
							; 3978	=010
							; 3979	UUOPCW: MEM WRITE,		;WAIT FOR MEMORY
							; 3980		MEM_[HR],		;STORE INSTRUCTION IN KI
							; 3981					; OR FULL WORD E IN KL
U 0022, 3541,3333,0002,4175,5007,0701,0210,0000,0002	; 3982		CALL [GETPCW]		;GET PROCESS-CONTEXT-WORD
							; 3983	
							; 3984	=011	NEXT [ARX] PHYSICAL WRITE, ;POINT TO NEXT WORD
U 0023, 3667,0111,0704,4170,4007,0700,0210,0023,1016	; 3985		CALL [STOBR]		;STORE PROCESS CONTEXT WORD
							; 3986	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 108
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			ILLEGAL INSTRUCTIONS AND UUO'S				

							; 3987	;NOW WE MUST PICK ONE OF 8 NEW PC WORDS BASED ON PC FLAGS
U 0027, 2740,4751,1205,4374,4007,0700,0000,0000,0430	; 3988	=111	[BR]_0 XWD [430]	;OFFSET INTO UPT
							; 3989	=
U 2740, 2741,0111,1105,4174,4007,0700,0000,0000,0000	; 3990		[BR]_[BR]+[UBR] 	;ADDRESS OF WORD
U 2741, 2742,4521,1203,4074,4007,0700,0000,0000,0000	; 3991		[AR]_FLAGS		;GET FLAGS
							; 3992		TL [AR],		;LOOK AT FLAGS
U 2742, 1164,4553,0300,4374,4007,0321,0000,0000,0600	; 3993		#/600			;TRAP SET?
							; 3994	=0	[BR]_[BR].OR.#, 	;YES--POINT TO TRAP CASE
							; 3995		#/1,			; ..
U 1164, 1165,3551,0505,4370,4007,0700,0000,0000,0001	; 3996		HOLD LEFT		;LEAVE LEFT ALONE
							; 3997		TL [AR],		;USER OR EXEC
U 1165, 1166,4553,0300,4374,4007,0321,0000,0001,0000	; 3998		#/10000 		; ..
							; 3999	=0	[BR]_[BR].OR.#, 	;USER
							; 4000		#/4,			;POINT TO USER WORDS
U 1166, 1167,3551,0505,4370,4007,0700,0000,0000,0004	; 4001		HOLD LEFT
							; 4002		READ [BR],		;LOOK AT ADDRESS
							; 4003		LOAD VMA,		;PLACE IN VMA
							; 4004		VMA PHYSICAL,		;PHYSICAL ADDRESS
U 1167, 2743,3333,0005,4174,4007,0700,0200,0024,1016	; 4005		START READ		;GET NEW PC WORD
							; 4006	GOEXEC: MEM READ,		;WAIT FOR DATA
U 2743, 2744,3771,0003,4365,5007,0700,0200,0000,0002	; 4007		[AR]_MEM		;STICK IN AR
							; 4008		READ [AR],		;LOOK AT DATA
							; 4009		LOAD FLAGS,		;LOAD NEW FLAGS
							; 4010		LEAVE USER,		;ALLOW USER TO LOAD
							; 4011		LOAD PCU,		;SET PCU FROM USER
U 2744, 0764,3333,0003,4174,4467,0700,0000,0000,0404	; 4012		J/JUMPA 		;JUMP
							; 4013	
							; 4014	.IF/KIPAGE
							; 4015	;HERE FOR TOPS-10 STYLE PAGING
							; 4016	
							; 4017	=00
							; 4018	KIMUUO: MEM WRITE,		;STORE INSTRUCTION
U 0310, 2746,3333,0002,4175,5007,0701,0210,0000,0002	; 4019		MEM_[HR], CALL [NEXT]	;IN MEMORY
							; 4020	=10	[AR]_PC WITH FLAGS,	;GET PC WORD
U 0312, 2745,3741,0103,4074,4007,0700,0010,0000,0000	; 4021		CALL [UUOFLG]		;CLEAR TRAP FLAGS
							; 4022	=11	MEM WRITE,		;STORE PC WORD
							; 4023		MEM_[AR],		; ..
U 0313, 0022,3333,0003,4175,5007,0701,0200,0000,0002	; 4024		J/UUOPCW		;GO STORE PROCESS CONTEXT
							; 4025	.ENDIF/KIPAGE
							; 4026	
							; 4027	UUOFLG:	[AR]_[AR].AND.NOT.#,	;CLEAR TRAP FLAGS
							; 4028		#/600, HOLD RIGHT,	; IN WORD TO SAVE
U 2745, 0001,5551,0303,4374,0004,1700,0000,0000,0600	; 4029		RETURN [1]		; BACK TO CALLER
							; 4030	
							; 4031	NEXT:	NEXT [ARX] PHYSICAL WRITE, ;POINT TO NEXT WORD
U 2746, 0002,0111,0704,4170,4004,1700,0200,0023,1016	; 4032		RETURN [2]
							; 4033	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 109
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			ILLEGAL INSTRUCTIONS AND UUO'S				

							; 4034	;HERE FOR LUUO'S
							; 4035	1557:
U 1557, 0400,4751,1203,4374,4007,0700,0000,0000,0040	; 4036	LUUO:	[AR]_0 XWD [40] 	;AR GET CONSTANT 40
							; 4037	;THE LUUO MACRO DOES THE ABOVE INSTRUCTION AND GOES TO LUUO1
							; 4038	400:				;FOR SIMULATOR
							; 4039	LUUO1:	READ [AR],		;LOAD 40 INTO
							; 4040		LOAD VMA,		; THE VMA AND
U 0400, 2747,3333,0003,4174,4007,0700,0200,0003,0012	; 4041		START WRITE		; PREPARE TO STORE
							; 4042		[HR]_[HR].AND.#,	;CLEAR OUT INDEX AND @
							; 4043		#/777740,		; ..
U 2747, 2750,4551,0202,4374,0007,0700,0000,0077,7740	; 4044		HOLD RIGHT
							; 4045		MEM WRITE,		;STORE LUUO IN 40
U 2750, 2751,3333,0002,4175,5007,0701,0200,0000,0002	; 4046		MEM_[HR]
							; 4047		VMA_[AR]+1,		;POINT TO 41
							; 4048		LOAD VMA,		;PUT 41 IN VMA
							; 4049		START READ,		;START FETCH
U 2751, 2501,0111,0703,4170,4007,0700,0200,0004,0012	; 4050		J/CONT1 		;GO EXECUTE THE INSTRUCTION
							; 4051	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 110
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			ARITHMETIC -- ADD, SUB					

							; 4052	.TOC	"ARITHMETIC -- ADD, SUB"
							; 4053	
							; 4054		.DCODE
D 0270, 1015,1560,1100					; 4055	270:	R-PF,	AC,	J/ADD
D 0271, 0015,1560,3000					; 4056		I-PF,	AC,	J/ADD
D 0272, 0016,1560,1700					; 4057		RW,	M,	J/ADD
D 0273, 0017,1560,1700					; 4058		RW,	B,	J/ADD
							; 4059		.UCODE
							; 4060	
							; 4061	1560:
							; 4062	ADD:	[AR]_[AR]+AC,		;DO THE ADD
U 1560, 1500,0551,0303,0274,4463,7701,0200,0001,0001	; 4063		AD FLAGS EXIT, 3T	;UPDATE CARRY FLAGS
							; 4064					;STORE ANSWER
							; 4065					;MISSES 3-TICKS BY 3 NS.
							; 4066	
							; 4067	
							; 4068		.DCODE
D 0274, 1015,1561,1100					; 4069	274:	R-PF,	AC,	J/SUB
D 0275, 0015,1561,3000					; 4070		I-PF,	AC,	J/SUB
D 0276, 0016,1561,1700					; 4071		RW,	M,	J/SUB
D 0277, 0017,1561,1700					; 4072		RW,	B,	J/SUB
							; 4073		.UCODE
							; 4074	
							; 4075	1561:
							; 4076	SUB:	[AR]_AC-[AR],		;DO THE SUBTRACT
U 1561, 1500,2551,0303,0274,4463,7701,4200,0001,0001	; 4077		AD FLAGS EXIT, 3T	;UPDATE PC CARRY FLAGS
							; 4078					;ALL DONE
							; 4079					;MISSES 3-TICKS BY 3 NS.
							; 4080	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 111
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			ARITHMETIC -- DADD, DSUB				

							; 4081	.TOC	"ARITHMETIC -- DADD, DSUB"
							; 4082	
							; 4083		.DCODE
D 0114, 0205,1457,1100					; 4084	114:	DBL R,	DAC,	J/DADD
D 0115, 0205,1615,1100					; 4085		DBL R,	DAC,	J/DSUB
							; 4086		.UCODE
							; 4087	
							; 4088	1457:
							; 4089	DADD:	[ARX]_[ARX]+AC[1], 4T,	;ADD LOW WORDS
U 1457, 1170,0551,0404,1274,4007,0562,0000,0000,1441	; 4090		SKIP CRY1		;SEE IF CARRY TO HIGH WORD
							; 4091	=0
							; 4092	DADD1:	[AR]_[AR]+AC,		;ADD HIGH WORDS
							; 4093		ADD .25,		;ADD IN ANY CARRY FROM LOW WORD
							; 4094		AD FLAGS, 4T,		;UPDATE PC FLAGS
U 1170, 2753,0551,0303,0274,4467,0702,4000,0001,0001	; 4095		J/CPYSGN		;COPY SIGN TO LOW WORD
U 1171, 2752,7441,1205,4174,4007,0700,0000,0000,0000	; 4096		[BR]_.NOT.[MASK]	;SET BITS 35 AND 36 IN
							; 4097		[AR]_[AR].OR.[BR],	; AR SO THAT ADD .25 WILL
U 2752, 1170,3111,0503,4170,4007,0700,0000,0000,0000	; 4098		HOLD LEFT, J/DADD1	; ADD 1.
							; 4099	
							; 4100	1615:
							; 4101	DSUB:	[ARX]_AC[1]-[ARX], 4T,	;SUBTRACT LOW WORD
U 1615, 1172,2551,0404,1274,4007,0562,4000,0000,1441	; 4102		SKIP CRY1		;SEE IF CARRY
							; 4103	=0	[AR]_AC-[AR]-.25,	;NO CARRY
							; 4104		AD FLAGS, 4T,		;UPDATE PC FLAGS
U 1172, 2753,2551,0303,0274,4467,0702,0000,0001,0001	; 4105		J/CPYSGN		;GO COPY SIGN
							; 4106		[AR]_AC-[AR], 4T,	;THERE WAS A CARRY
U 1173, 2753,2551,0303,0274,4467,0702,4000,0001,0001	; 4107		AD FLAGS		;UPDATE CARRY FLAGS
							; 4108	
U 2753, 1174,3770,0303,4174,0007,0520,0000,0000,0000	; 4109	CPYSGN: FIX [AR] SIGN, SKIP DP0
U 1174, 1404,4551,0404,4374,0007,0700,0000,0037,7777	; 4110	=0	[ARX]_[ARX].AND.#, #/377777, HOLD RIGHT, J/MOVE
U 1175, 1404,3551,0404,4374,0007,0700,0000,0040,0000	; 4111		[ARX]_[ARX].OR.#, #/400000, HOLD RIGHT, J/MOVE
							; 4112	
							; 4113	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 112
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			ARITHMETIC -- MUL, IMUL					

							; 4114	.TOC	"ARITHMETIC -- MUL, IMUL"
							; 4115	
							; 4116		.DCODE
D 0220, 1015,1641,1100					; 4117	220:	R-PF,	AC,	J/IMUL
D 0221, 0015,1641,3000					; 4118		I-PF,	AC,	J/IMUL
D 0222, 0016,1641,1700					; 4119		RW,	M,	J/IMUL
D 0223, 0017,1641,1700					; 4120		RW,	B,	J/IMUL
							; 4121		.UCODE
							; 4122	1641:
U 1641, 2754,3441,0306,0174,4007,0700,0000,0000,0000	; 4123	IMUL:	[BRX]_[AR], AC		;COPY C(E)
U 2754, 0021,3772,0000,0275,5007,0700,2000,0071,0043	; 4124		Q_AC, SC_35.		;GET THE AC
							; 4125	=0**	[BRX]_[BRX]*.5 LONG,	;SHIFT RIGHT
U 0021, 3000,3446,0606,4174,4007,0700,0010,0000,0000	; 4126		CALL [MULSUB]		;MULTIPLY
U 0025, 1176,3333,0004,4174,4007,0621,0000,0000,0000	; 4127		READ [ARX], SKIP AD.EQ.0 ;SEE IF FITS
U 1176, 2755,3445,0404,4174,4007,0700,0000,0000,0000	; 4128	=0	[ARX]_[ARX]*2, J/IMUL2	;NOT ZERO--SHIFT LEFT
U 1177, 1500,3221,0003,4174,4003,7700,0200,0003,0001	; 4129	IMUL1:	[AR]_Q, EXIT		;POSITIVE
							; 4130	
							; 4131	IMUL2:	[MASK].AND.NOT.[ARX],	;SEE IF ALL SIGN BITS
U 2755, 1200,5113,0412,4174,4007,0621,0000,0000,0000	; 4132		SKIP AD.EQ.0		; ..
							; 4133	=0	FIX [ARX] SIGN, 	;NOT ALL SIGN BITS
U 1200, 1202,3770,0404,4174,0007,0520,0000,0000,0000	; 4134		SKIP DP0, J/IMUL3	;GIVE + OR - OVERFLOW
U 1201, 1500,7001,0003,4174,4003,7700,0200,0003,0001	; 4135		[AR]_[MAG].EQV.Q, EXIT	;NEGATIVE
							; 4136	=0
U 1202, 1404,3221,0003,4174,4467,0700,0000,0041,1000	; 4137	IMUL3:	[AR]_Q, SET AROV, J/MOVE
U 1203, 1404,7001,0003,4174,4467,0700,0000,0041,1000	; 4138		[AR]_[MAG].EQV.Q, SET AROV, J/MOVE
							; 4139	
							; 4140	
							; 4141		.DCODE
D 0224, 1005,1571,1100					; 4142	224:	R-PF,	DAC,	J/MUL
D 0225, 0005,1571,3000					; 4143		I-PF,	DAC,	J/MUL
D 0226, 0016,1571,1700					; 4144		RW,	M,	J/MUL
D 0227, 0006,1571,1700					; 4145		RW,	DBL B,	J/MUL
							; 4146		.UCODE
							; 4147	
							; 4148	
							; 4149	1571:
U 1571, 2756,3442,0300,0174,4007,0700,0000,0000,0000	; 4150	MUL:	Q_[AR], AC		;COPY C(E)
U 2756, 2757,3441,0316,4174,4007,0700,0000,0000,0000	; 4151		[T0]_[AR]		;SAVE FOR OVERFLOW TEST
U 2757, 0031,3771,0006,0276,6007,0700,2000,0071,0043	; 4152		[BRX]_AC, SC_35.	;GET THE AC
							; 4153	=0**	[BRX]_[BRX]*.5 LONG,	;SHIFT OVER
U 0031, 3000,3446,0606,4174,4007,0700,0010,0000,0000	; 4154		CALL [MULSUB]		;MULTIPLY
U 0035, 2760,3445,0403,4174,4007,0700,0000,0000,0000	; 4155		[AR]_[ARX]*2		;SHIFT OVER
U 2760, 1204,3770,0303,4174,0007,0520,0000,0000,0000	; 4156		FIX [AR] SIGN, SKIP DP0 ;SEE IF NEGATIVE
							; 4157	=0	[ARX]_[MAG].AND.Q,	;POSITIVE
U 1204, 1500,4001,0004,4174,4003,7700,0200,0003,0001	; 4158		EXIT
U 1205, 1206,4113,0616,4174,4007,0520,0000,0000,0000	; 4159		[T0].AND.[BRX], SKIP DP0 ;TRIED TO SQUARE 1B0?
U 1206, 1500,7001,0004,4174,4003,7700,0200,0003,0001	; 4160	=0	[ARX]_[MAG].EQV.Q, EXIT	;NO
							; 4161		[ARX]_[MAG].EQV.Q, 	;YES 
U 1207, 1404,7001,0004,4174,4467,0700,0000,0041,1000	; 4162		SET AROV, J/MOVE
							; 4163	
							; 4164	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 113
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			ARITHMETIC -- DMUL					

							; 4165	.TOC	"ARITHMETIC -- DMUL"
							; 4166	
							; 4167		.DCODE
D 0116, 0205,1566,1100					; 4168	116:	DBL R,	DAC,		J/DMUL
							; 4169		.UCODE
							; 4170	
							; 4171	.IF/FULL
							; 4172	1566:
U 1566, 2761,3447,0303,4174,4007,0700,0000,0000,0000	; 4173	DMUL:	[AR]_[AR]*.5		;SHIFT MEM OPERAND RIGHT
U 2761, 2762,4117,0004,4174,4007,0700,0000,0000,0000	; 4174		[ARX]_([ARX].AND.[MAG])*.5
							; 4175		[BR]_[ARX],		;COPY LOW WORD
U 2762, 0120,3441,0405,4174,4007,0350,0000,0000,0000	; 4176		SKIP FPD		;SEE IF FIRST PART DONE
							; 4177	;
							; 4178	; BRX * BR ==> C(E+1) * C(AC+1)
							; 4179	;
							; 4180	=000	[BRX]_(AC[1].AND.[MAG])*.5, 3T, ;GET LOW AC
U 0120, 2774,4557,0006,1274,4007,0701,0010,0000,1441	; 4181		CALL [DMULGO]		;START MULTIPLY
							; 4182		[ARX]_(AC[2].AND.[MAG])*.5, 3T, ;FIRST PART DONE
U 0121, 2764,4557,0004,1274,4007,0701,0000,0000,1442	; 4183		J/DMUL1 		;GO DO SECOND PART
U 0124, 0171,3223,0000,1174,4007,0700,0400,0000,1443	; 4184	=100	AC[3]_Q 		;SALT AWAY 1 WORD OF PRODUCT
							; 4185	=
							; 4186	;
							; 4187	; BRX * Q ==> C(E) * C(AC+1)
							; 4188	;
							; 4189	=0**	Q_[AR], SC_35., 	;GO MULT NEXT HUNK
U 0171, 0563,3442,0300,4174,4007,0700,2010,0071,0043	; 4190		CALL [QMULT]		; ..
U 0175, 2763,3441,0416,4174,4007,0700,0000,0000,0000	; 4191		[T0]_[ARX]		;SAVE PRODUCT
							; 4192		AC[2]_Q, [ARX]_Q*.5,	;SAVE PRODUCT
U 2763, 0410,3227,0004,1174,4007,0700,0400,0000,1442	; 4193		J/DMUL2			;GO DO HIGH HALF
U 2764, 0410,3777,0016,1276,6007,0701,0000,0000,1441	; 4194	DMUL1:	[T0]_AC[1]*.5		;RESTORE T0
							; 4195	=0*0
							; 4196	;
							; 4197	; BRX * BR ==> C(AC) * C(E+1)
							; 4198	;
							; 4199	DMUL2:	[BRX]_AC*.5,		;PREPARE TO DO HIGH HALF
U 0410, 2775,3777,0006,0274,4007,0701,0010,0000,0000	; 4200		CALL [DBLMUL]		; GO DO IT
							; 4201		AC[1]_[T0]*2, 3T,	;INTERRUPT, SAVE T0
U 0411, 2777,0113,1616,1174,4007,0701,0400,0000,1441	; 4202		J/DMLINT		;SET FPD AND INTERRUPT
U 0414, 2765,3223,0000,1174,4007,0700,0400,0000,1442	; 4203		AC[2]_Q 		;SAVE PRODUCT
							; 4204	=
U 2765, 0543,0111,1604,4174,4007,0700,0000,0000,0000	; 4205		[ARX]_[ARX]+[T0]	;PREPARE FOR LAST MUL
							; 4206	;
							; 4207	; BRX * Q ==> C(AC) * C(E)
							; 4208	;
							; 4209	=0**	Q_[AR], SC_35., 	;DO THE LAST MULTIPLY
U 0543, 0563,3442,0300,4174,4007,0700,2010,0071,0043	; 4210		CALL [QMULT]		; GO DO IT
							; 4211		[ARX]_[ARX]*2,		;SHIFT BACK
U 0547, 2766,3445,0404,4174,4467,0700,0000,0005,0000	; 4212		CLR FPD 		;CLEAR FPD
							; 4213	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 114
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			ARITHMETIC -- DMUL					

U 2766, 1210,3770,0404,0174,4007,0520,0400,0000,0000	; 4214		AC_[ARX] TEST, SKIP DP0 ;PUT BACK INTO AC
U 1210, 2773,3223,0000,1174,4007,0700,0400,0000,1441	; 4215	=0	AC[1]_Q, J/DMTRAP	;POSITIVE
U 1211, 2767,7003,0000,1174,4007,0700,0400,0000,1441	; 4216		AC[1]_[MAG].EQV.Q	;NEGATIVE
U 2767, 2770,3772,0000,1275,5007,0701,0000,0000,1442	; 4217		Q_AC[2]
U 2770, 2771,7003,0000,1174,4007,0700,0400,0000,1442	; 4218		AC[2]_[MAG].EQV.Q
U 2771, 2772,3772,0000,1275,5007,0701,0000,0000,1443	; 4219		Q_AC[3]
U 2772, 2773,7003,0000,1174,4007,0700,0400,0000,1443	; 4220		AC[3]_[MAG].EQV.Q
							; 4221	DMTRAP: [AR]_PC WITH FLAGS,	;LOOK AT FLAGS
U 2773, 1212,3741,0103,4074,4007,0520,0000,0000,0000	; 4222		SKIP DP0		;SEE IF AROV SET?
U 1212, 0110,3443,0100,4174,4156,4700,0200,0014,0012	; 4223	=0	DONE			;NO--ALL DONE
U 1213, 1400,4443,0000,4174,4467,0700,0000,0041,1000	; 4224		SET AROV, J/DONE	;YES--FORCE TRAP 1 ALSO
							; 4225	
							; 4226	
							; 4227	;WAYS TO CALL MULTIPLY
U 2774, 2775,4221,0004,4174,4007,0700,0000,0000,0000	; 4228	DMULGO: [ARX]_0 		;CLEAR ARX
U 2775, 2776,3442,0500,4174,4007,0700,2000,0071,0043	; 4229	DBLMUL: Q_[BR], SC_35.
U 2776, 0563,3447,0606,4174,4007,0700,0000,0000,0000	; 4230		[BRX]_[BRX]*.5
							; 4231	=0**
							; 4232	QMULT:	Q_Q*.5,
U 0563, 3002,3446,1200,4174,4007,0700,0010,0000,0000	; 4233		CALL [MULTIPLY]
							; 4234		[ARX]+[ARX], AD FLAGS,	;TEST FOR OVERFLOW
U 0567, 0004,0113,0404,4174,4464,1701,0000,0001,0001	; 4235		3T, RETURN [4]		;AND RETURN
							; 4236	
U 2777, 2677,4443,0000,4174,4467,0700,0000,0003,0000	; 4237	DMLINT: SET FPD, J/FIXPC	;SET FPD, BACKUP PC
							; 4238					; INTERRUPT
							;;4239	.IFNOT/FULL
							;;4240	1566:
							;;4241	DMUL:	UUO
							; 4242	.ENDIF/FULL
							; 4243	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 115
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			ARITHMETIC -- DMUL					

							; 4244	;MULTIPLY SUBROUTINE
							; 4245	;ENTERED WITH:
							; 4246	;	MULTIPLIER IN Q
							; 4247	;	MULTIPLICAND IN BRX
							; 4248	;RETURNS 4 WITH PRODUCT IN ARX!Q
							; 4249	
							; 4250	MUL STEP	"A/BRX,B/ARX,DEST/Q_Q*.5,ASHC,STEP SC,MUL DISP"
							; 4251	MUL FINAL	"A/BRX,B/ARX,DEST/Q_Q*2"
							; 4252	
U 3000, 3001,3446,0606,4174,4007,0700,0000,0000,0000	; 4253	MULSUB: [BRX]_[BRX]*.5 LONG
							; 4254	MULSB1: [ARX]_0*.5 LONG,	;CLEAR ARX AND SHIFT Q
							; 4255		STEP SC,		;COUNT FIRST STEP
U 3001, 0122,4226,0004,4174,4007,0630,2000,0060,0000	; 4256		J/MUL+			;ENTER LOOP
							; 4257	
							; 4258	;MULTIPLY SUBROUTINE
							; 4259	;ENTERED WITH:
							; 4260	;	MULTIPLIER IN Q
							; 4261	;	MULTIPLICAND IN BRX
							; 4262	;	PARTIAL PRODUCT IN ARX
							; 4263	;RETURNS 4 WITH Q*BRX+ARX IN ARX!Q
							; 4264	
							; 4265	MULTIPLY:
							; 4266		Q_Q*.5, 		;SHIFT Q
							; 4267		STEP SC,		;COUNT FIRST STEP
U 3002, 0122,3446,1200,4174,4007,0630,2000,0060,0000	; 4268		J/MUL+			;ENTER LOOP
							; 4269	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 116
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			ARITHMETIC -- DMUL					

							; 4270	;HERE FOR POSITIVE STEPS
							; 4271	=010				;0 IN A POSITIVE STEP
							; 4272	MUL+:	AD/B,			;DON'T ADD
							; 4273		MUL STEP,		;SHIFT
U 0122, 0122,3336,0604,4174,4046,2630,2000,0060,0000	; 4274		J/MUL+			;KEEP POSITIVE
							; 4275	=011				;DONE
							; 4276		AD/B,			;DON'T ADD
							; 4277		MUL FINAL,		;SHIFT
U 0123, 0004,3334,0604,4174,4004,1700,0000,0000,0000	; 4278		RETURN [4]		;SHIFT Q AND RETURN
							; 4279	=110				;1 IN A POSITIVE STEP
							; 4280		AD/B-A-.25, ADD .25,	;SUBTRACT
							; 4281		MUL STEP,		;SHIFT AND COUNT
U 0126, 0142,1116,0604,4174,4046,2630,6000,0060,0000	; 4282		J/MUL-			;NEGATIVE NOW
							; 4283	=111				;DONE
							; 4284		AD/B-A-.25, ADD .25,	;SUBTRACT
							; 4285		MUL FINAL,		;SHIFT
U 0127, 0004,1114,0604,4174,4004,1700,4000,0000,0000	; 4286		RETURN [4]		; AND RETURN
							; 4287	
							; 4288	;HERE FOR NEGATIVE STEPS
							; 4289	=010				;0 IN NEGATIVE STEP
							; 4290	MUL-:	AD/A+B, 		;ADD
							; 4291		MUL STEP,		;SHIFT AND COUNT
U 0142, 0122,0116,0604,4174,4046,2630,2000,0060,0000	; 4292		J/MUL+			;POSITIVE NOW
							; 4293	=011				;DONE
							; 4294		AD/A+B, 		;ADD
							; 4295		MUL FINAL,		;SHIFT
U 0143, 0004,0114,0604,4174,4004,1700,0000,0000,0000	; 4296		RETURN [4]			;FIX Q AND RETURN
							; 4297	=110				;1 IN NEGATIVE STEP
							; 4298		AD/B,			;DON'T ADD
							; 4299		MUL STEP,		;SHIFT AND COUNT
U 0146, 0142,3336,0604,4174,4046,2630,2000,0060,0000	; 4300		J/MUL-			;STILL NEGATIVE
							; 4301	=111				;DONE
							; 4302		AD/B,			;DON'T ADD
							; 4303		MUL FINAL,		;SHIFT
U 0147, 0004,3334,0604,4174,4004,1700,0000,0000,0000	; 4304		RETURN [4]			;FIX Q AND RETURN
							; 4305	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 117
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			ARITHMETIC -- DIV, IDIV					

							; 4306	.TOC	"ARITHMETIC -- DIV, IDIV"
							; 4307	
							; 4308		.DCODE
D 0230, 1005,1600,1100					; 4309	230:	R-PF,	DAC,	J/IDIV
D 0231, 0005,1600,3000					; 4310		I-PF,	DAC,	J/IDIV
D 0232, 0016,1600,1700					; 4311		RW,	M,	J/IDIV
D 0233, 0006,1600,1700					; 4312		RW,	DBL B,	J/IDIV
							; 4313	
D 0234, 1005,1601,1100					; 4314	234:	R-PF,	DAC,	J/DIV
D 0235, 0005,1601,3000					; 4315		I-PF,	DAC,	J/DIV
D 0236, 0016,1601,1700					; 4316		RW,	M,	J/DIV
D 0237, 0006,1601,1700					; 4317		RW,	DBL B,	J/DIV
							; 4318		.UCODE
							; 4319	
							; 4320	1600:
U 1600, 3003,3441,0305,0174,4007,0700,0000,0000,0000	; 4321	IDIV:	[BR]_[AR], AC		;COPY MEMORY OPERAND
							; 4322		Q_AC,			;LOAD Q
U 3003, 1214,3772,0000,0275,5007,0520,0000,0000,0000	; 4323		SKIP DP0		;SEE IF MINUS
							; 4324	=0	[AR]_0, 		;EXTEND + SIGN
U 1214, 0161,4221,0003,4174,4007,0700,0000,0000,0000	; 4325		J/DIV1			;NOW SAME AS DIV
							; 4326		[AR]_-1,		;EXTEND - SIGN
U 1215, 0161,2441,0703,4174,4007,0700,4000,0000,0000	; 4327		J/DIV1			;SAME AS DIV
							; 4328	
							; 4329	1601:
U 1601, 3004,3441,0305,4174,4007,0700,0000,0000,0000	; 4330	DIV:	[BR]_[AR]		;COPY MEM OPERAND
U 3004, 3005,3771,0003,0276,6007,0700,0000,0000,0000	; 4331		[AR]_AC 		;GET AC
U 3005, 3006,3772,0000,1275,5007,0701,0000,0000,1441	; 4332		Q_AC[1] 		;AND AC+1
							; 4333		READ [AR],		;TEST FOR NO DIVIDE
U 3006, 0160,3333,0003,4174,4007,0621,0000,0000,0000	; 4334		SKIP AD.EQ.0
							; 4335	=000	.NOT.[AR],		;SEE IF ALL SIGN BITS IN AR
							; 4336		SKIP AD.EQ.0,		; ..
U 0160, 1216,7443,0300,4174,4007,0621,0000,0000,0000	; 4337		J/DIVA			;CONTINUE BELOW
							; 4338	=001
							; 4339	DIV1:	READ [BR],		;SEE IF DIVIDE BY
U 0161, 0164,3333,0005,4174,4007,0621,0000,0000,0000	; 4340		SKIP AD.EQ.0		; ZERO
							; 4341	=100
							; 4342	DIV2:	SC_34., 		;NOT ZERO--LOAD STEP COUNT
U 0164, 0370,4443,0000,4174,4007,0700,2010,0071,0042	; 4343		CALL [DIVSUB]		;DIVIDE
U 0165, 0555,4443,0000,4174,4467,0700,0000,0051,1000	; 4344	=101	NO DIVIDE		;DIVIDE BY ZERO
							; 4345	=110	[ARX]_[AR],		;COPY REMAINDER
U 0166, 1177,3441,0304,4174,4007,0700,0000,0000,0000	; 4346		J/IMUL1 		;STORE ANSWER
							; 4347	=
							; 4348	
							; 4349	
							; 4350	=0
							; 4351	DIVA:	[BRX]_[AR],		;HIGH WORD IS NOT SIGNS
U 1216, 3007,3441,0306,4174,4007,0700,0000,0000,0000	; 4352		J/DIVB			;GO TEST FOR NO DIVIDE
							; 4353		READ [BR],		;ALL SIGN BITS
							; 4354		SKIP AD.EQ.0,		;SEE IF ZERO DIVIDE
U 1217, 0164,3333,0005,4174,4007,0621,0000,0000,0000	; 4355		J/DIV2			;BACK TO MAIN FLOW
							; 4356	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 118
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			ARITHMETIC -- DIV, IDIV					

U 3007, 3010,3221,0004,4174,4007,0700,0000,0000,0000	; 4357	DIVB:	[ARX]_Q 		;MAKE ABS VALUES
							; 4358		READ [AR],		;SEE IF +
U 3010, 0330,3333,0003,4174,4007,0520,0000,0000,0000	; 4359		SKIP DP0
							; 4360	=00	READ [BR],		;SEE IF +
							; 4361		SKIP DP0,
U 0330, 1220,3333,0005,4174,4007,0520,0000,0000,0000	; 4362		J/DIVC			;CONTINUE BELOW
							; 4363		CLEAR [ARX]0,		;FLUSH DUPLICATE SIGN
U 0331, 3071,4551,0404,4374,0007,0700,0010,0037,7777	; 4364		CALL [DBLNG1]		;NEGATE AR!ARX
							; 4365	=11	READ [BR],		;SEE IF TOO BIG
							; 4366		SKIP DP0,
U 0333, 1220,3333,0005,4174,4007,0520,0000,0000,0000	; 4367		J/DIVC
							; 4368	=
							; 4369	=0
							; 4370	DIVC:	[AR]-[BR],		;COMPUTE DIFFERENCE
							; 4371		SKIP DP0,		;SEE IF IT GOES
							; 4372		3T,			;ALLOW TIME
U 1220, 1222,2113,0305,4174,4007,0521,4000,0000,0000	; 4373		J/NODIV 		;TEST
							; 4374		[AR]+[BR],
							; 4375		SKIP DP0,		;SAME TEST FOR -VE BR
							; 4376		3T,
U 1221, 1222,0113,0305,4174,4007,0521,0000,0000,0000	; 4377		J/NODIV
							; 4378	=0
U 1222, 0555,4443,0000,4174,4467,0700,0000,0051,1000	; 4379	NODIV:	NO DIVIDE		;TOO BIG
							; 4380		[AR]_[BRX],		;FITS
U 1223, 0161,3441,0603,4174,4007,0700,0000,0000,0000	; 4381		J/DIV1			;GO BACK AND DIVIDE
							; 4382	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 119
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			ARITHMETIC -- DDIV					

							; 4383	.TOC	"ARITHMETIC -- DDIV"
							; 4384	
							; 4385		.DCODE
D 0117, 0205,1627,1100					; 4386	117:	DBL R,	DAC,	J/DDIV
							; 4387		.UCODE
							; 4388	
							; 4389	.IF/FULL
							; 4390	1627:
U 1627, 3011,4112,0400,4174,4007,0700,0000,0000,0000	; 4391	DDIV:	Q_[ARX].AND.[MAG]	;COPY LOW WORD
							; 4392		[BR]_[AR]*.5,		;COPY MEMORY OPERAND
U 3011, 1224,3447,0305,4174,4007,0421,0000,0000,0000	; 4393		SKIP AD.LE.0		;SEE IF POSITIVE
							; 4394	=0	[BR]_[BR]*.5 LONG,	;POSITIVE
U 1224, 1230,3446,0505,4174,4007,0700,0000,0000,0000	; 4395		J/DDIV1 		;CONTINUE BELOW
							; 4396		[BR]_[BR]*.5 LONG,	;NEGATIVE OR ZERO
U 1225, 1226,3446,0505,4174,4007,0520,0000,0000,0000	; 4397		SKIP DP0		;SEE WHICH?
							; 4398	=0	[MAG].AND.Q,		;SEE IF ALL ZERO
U 1226, 1230,4003,0000,4174,4007,0621,0000,0000,0000	; 4399		SKIP AD.EQ.0, J/DDIV1	;CONTINUE BELOW
U 1227, 3012,4751,1217,4374,4007,0700,0000,0000,0005	; 4400		[T1]_0 XWD [5]		;NEGATE MEM OP
							; 4401		Q_Q.OR.#, #/600000,	;SIGN EXTEND THE LOW
U 3012, 3013,3662,0000,4374,0007,0700,0000,0060,0000	; 4402		HOLD RIGHT		; WORD
U 3013, 3014,2222,0000,4174,4007,0700,4000,0000,0000	; 4403		Q_-Q			;MAKE Q POSITIVE
							; 4404		[BR]_(-[BR]-.25)*.5 LONG, ;NEGATE HIGH WORD
							; 4405		ASHC, MULTI PREC/1,	;USE CARRY FROM LOW WORD
U 3014, 3016,2446,0505,4174,4047,0700,0040,0000,0000	; 4406		J/DDIV3 		;CONTINUE BELOW
							; 4407	=0
							; 4408	DDIV1:	[BR]_[BR]*.5 LONG,	;SHIFT OVER 1 PLACE
U 1230, 3015,3446,0505,4174,4047,0700,0000,0000,0000	; 4409		ASHC, J/DDIV2		;CONTINUE BELOW
U 1231, 0555,4443,0000,4174,4467,0700,0000,0051,1000	; 4410		NO DIVIDE		;DIVIDE BY ZERO
U 3015, 3016,4751,1217,4374,4007,0700,0000,0000,0004	; 4411	DDIV2:	[T1]_0 XWD [4]		;MEM OPERAND IS POSITIVE
U 3016, 3017,3221,0006,0174,4007,0700,0000,0000,0000	; 4412	DDIV3:	[BRX]_Q, AC		;COPY Q
							; 4413	
U 3017, 0054,3777,0003,0274,4007,0520,0000,0000,0000	; 4414		[AR]_AC*.5, 2T, SKIP DP0 ;GET AC--SEE IF NEGATIVE
							; 4415	=0*1*0
							; 4416	DDIV3A:	Q_AC[1].AND.[MAG],	;POSITIVE (OR ZERO)
U 0054, 1232,4552,0000,1275,5007,0701,0000,0000,1441	; 4417		J/DDIV4 		;CONTINUE BELOW
							; 4418		[T1]_[T1].XOR.#,	;NEGATIVE
U 0055, 3060,6551,1717,4374,4007,0700,0010,0000,0007	; 4419		#/7, CALL [QDNEG]	;UPDATE SAVED FLAGS
							; 4420	=1*1*1	[AR]_[AR]*.5,		;SHIFT AR OVER
U 0075, 0054,3447,0303,4174,4007,0700,0000,0000,0000	; 4421		J/DDIV3A		;GO BACK AND LOAD Q
							; 4422	=
							; 4423	=0
							; 4424	DDIV4:	[AR]_[AR]*.5 LONG,	;SHIFT AR OVER
U 1232, 3042,3446,0303,4174,4007,0700,0010,0000,0000	; 4425		CALL [DDIVS]		;SHIFT 1 MORE PLACE
U 1233, 1234,2113,0305,4174,4007,0521,4000,0000,0000	; 4426		[AR]-[BR], 3T, SKIP DP0 ;TEST MAGNITUDE
							; 4427	=0	[AR]-[BR], 2T,
U 1234, 1236,2113,0305,4174,4007,0620,4000,0000,0000	; 4428		SKIP AD.EQ.0, J/DDIV5
U 1235, 3020,3221,0004,4174,4007,0700,0000,0000,0000	; 4429		[ARX]_Q, J/DDIV5A	;ANSWER FITS
							; 4430	
							; 4431	=0
U 1236, 0033,3333,0017,4174,4003,5701,0000,0000,0000	; 4432	DDIV5:	READ [T1], 3T, DISP/DP, J/NODDIV
U 1237, 1240,1003,0600,4174,4007,0521,4000,0000,0000	; 4433		Q-[BRX], 3T, SKIP DP0
U 1240, 0033,3333,0017,4174,4003,5701,0000,0000,0000	; 4434	=0	READ [T1], 3T, DISP/DP, J/NODDIV
U 1241, 3020,3221,0004,4174,4007,0700,0000,0000,0000	; 4435		[ARX]_Q 		;COPY LOW WORD
							; 4436	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 120
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			ARITHMETIC -- DDIV					

							; 4437	;HERE WITH EVERYTHING SETUP AND READY TO GO
U 3020, 0354,4552,0000,1275,5007,0701,0000,0000,1442	; 4438	DDIV5A: Q_AC[2].AND.[MAG]
U 0354, 1264,3446,1200,4174,4007,0700,2010,0071,0042	; 4439	=0*	Q_Q*.5, SC_34., CALL [DBLDIV]
U 0356, 3021,3224,0016,4174,4007,0700,0000,0000,0000	; 4440		[T0]_Q*2 LONG
U 3021, 3022,0002,1600,4174,4007,0700,0000,0000,0000	; 4441		Q_Q+[T0]
U 3022, 1242,4003,0000,1174,4007,0700,0400,0000,1440	; 4442		AC[0]_Q.AND.[MAG]	;STORE ANSWER
U 1242, 3042,3442,0400,4174,4007,0700,0010,0000,0000	; 4443	=0	Q_[ARX], CALL [DDIVS]	;SHIFT OUT EXTRA ZERO BIT
U 1243, 3023,3221,0004,4174,4007,0700,0000,0000,0000	; 4444		[ARX]_Q 		; ..
U 3023, 0551,4552,0000,1275,5007,0701,0000,0000,1443	; 4445		Q_AC[3].AND.[MAG]
							; 4446	=0*	[T0]_[AR]*.5 LONG,	;SHIFT Q, PUT AR ON DP
							; 4447		SC_34., 		;LOAD SHIFT COUNT
							; 4448		SKIP DP0,		;LOOK AT AR SIGN
U 0551, 1264,3446,0316,4174,4007,0520,2010,0071,0042	; 4449		CALL [DBLDIV]		;GO DIVIDE
U 0553, 3024,3224,0016,4174,4007,0700,0000,0000,0000	; 4450		[T0]_Q*2 LONG
U 3024, 0056,3333,0017,4174,4003,5701,0000,0000,0000	; 4451		READ [T1], 3T, DISP/DP	;WHAT SIGN IS QUO
							; 4452	=1110	[T0]_[T0]+Q,		;POSITIVE QUO
U 0056, 3027,0001,1616,4174,4007,0700,0000,0000,0000	; 4453		J/DDIV5B		;CONTINUE BELOW
U 0057, 3025,2225,0016,4174,4007,0700,4000,0000,0000	; 4454		[T0]_-Q*2		;NEGATIVE QUO
							; 4455		AD/-D-.25, DBUS/RAM, 3T,
							; 4456		RAMADR/AC#, DEST/Q_AD,
U 3025, 3026,1772,0000,0274,4007,0701,0040,0000,0000	; 4457		MULTI PREC/1
U 3026, 1244,3223,0000,0174,4007,0621,0400,0000,0000	; 4458		AC_Q, SKIP AD.EQ.0
U 1244, 3030,3440,1616,1174,4007,0700,0400,0000,1441	; 4459	=0	AC[1]_[T0], J/DDIV5C
U 1245, 3032,4223,0000,1174,4007,0700,0400,0000,1441	; 4460		AC[1]_0, J/DDIV6
							; 4461	
U 3027, 3032,4113,1600,1174,4007,0700,0400,0000,1441	; 4462	DDIV5B: AC[1]_[T0].AND.[MAG], J/DDIV6	;STORE LOW WORD IN + CASE
							; 4463	
U 3030, 3031,3551,1616,4374,0007,0700,0000,0040,0000	; 4464	DDIV5C: [T0]_[T0].OR.#, #/400000, HOLD RIGHT
U 3031, 3032,3440,1616,1174,4007,0700,0400,0000,1441	; 4465		AC[1]_[T0]
							; 4466	
U 3032, 1246,3333,0003,4174,4007,0520,0000,0000,0000	; 4467	DDIV6:	READ [AR], SKIP DP0	;LOOK AT AR SIGN
							; 4468	=0
U 1246, 3036,3442,0400,4174,4007,0700,0000,0000,0000	; 4469	DDIV7:	Q_[ARX], J/DDIV8
U 1247, 3033,0112,0406,4174,4007,0700,0000,0000,0000	; 4470		Q_[ARX]+[BRX]
							; 4471		[AR]_[AR]+[BR],
U 3033, 3034,0111,0503,4174,4007,0700,0040,0000,0000	; 4472		MULTI PREC/1
U 3034, 3035,0002,0600,4174,4007,0700,0000,0000,0000	; 4473		Q_Q+[BRX]
							; 4474		[AR]_[AR]+[BR],
U 3035, 3036,0111,0503,4174,4007,0700,0040,0000,0000	; 4475		MULTI PREC/1
U 3036, 0355,3333,0017,4174,4003,5701,0000,0000,0000	; 4476	DDIV8:	READ [T1], 3T, DISP/DP
							; 4477	=1101
							; 4478	DDIV8A: [AR]_[AR]*2 LONG, ASHC, ;POSITIVE REMAINDER
U 0355, 3040,3444,0303,4174,4047,0700,0000,0000,0000	; 4479		J/DDIV9 		;CONTINUE BELOW
U 0357, 3037,2222,0000,4174,4007,0700,4000,0000,0000	; 4480		Q_-Q			;NEGATE REMAINDER IN AR!Q
							; 4481		[AR]_(-[AR]-.25)*2 LONG,
U 3037, 3040,2444,0303,4174,4047,0700,0040,0000,0000	; 4482		MULTI PREC/1, ASHC
							; 4483	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 121
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			ARITHMETIC -- DDIV					

							; 4484	DDIV9:	AC[2]_[AR]+[AR], 3T,
U 3040, 1250,0113,0303,1174,4007,0521,0400,0000,1442	; 4485		SKIP DP0
							; 4486	=0	AC[3]_Q.AND.[MAG],
U 1250, 0100,4003,0000,1174,4156,4700,0400,0000,1443	; 4487		NEXT INST
U 1251, 3041,4002,0000,1174,4007,0700,0000,0000,1443	; 4488		Q_Q.AND.[MAG], AC[3]
							; 4489		AC[3]_[MAG].EQV.Q,
U 3041, 0100,7003,0000,1174,4156,4700,0400,0000,1443	; 4490		NEXT INST
							; 4491	
							; 4492	
							; 4493	;HERE IF WE WANT TO SET NO DIVIDE
							; 4494	=11011
U 0033, 3060,4443,0000,4174,4007,0700,0010,0000,0000	; 4495	NODDIV: CALL [QDNEG]		;FIXUP AC TO AC+3
U 0037, 0555,4443,0000,4174,4467,0700,0000,0051,1000	; 4496		NO DIVIDE		;ABORT DIVIDE
							; 4497	
U 3042, 0001,3446,0303,4174,4044,1700,0000,0000,0000	; 4498	DDIVS:	[AR]_[AR]*.5 LONG, ASHC, RETURN [1]
							;;4499	.IFNOT/FULL
							;;4500	1627:
							;;4501	DDIV:	UUO
							; 4502	.ENDIF/FULL
							; 4503	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 122
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			ARITHMETIC -- DIVIDE SUBROUTINE				

							; 4504	.TOC	"ARITHMETIC -- DIVIDE SUBROUTINE"
							; 4505	
							; 4506	;HERE IS THE SUBROUTINE TO DO DIVIDE
							; 4507	;ENTER WITH:
							; 4508	;	AR!Q = D'END
							; 4509	;	BR = D'SOR
							; 4510	;RETURN 2 WITH:
							; 4511	;	AR = REMAINDER
							; 4512	;	Q = QUOTIENT
							; 4513	;CALLER MUST CHECK FOR ZERO DIVIDE PRIOR TO CALL
							; 4514	;
							; 4515	=1000
							; 4516	DIVSUB:	Q_Q.AND.#,		;CLEAR SIGN BIT IN
							; 4517		#/377777,		;MASK
							; 4518		HOLD RIGHT,		;JUST CLEAR BIT 0
U 0370, 3043,4662,0000,4374,0007,0700,0010,0037,7777	; 4519		CALL [DIVSGN]		;DO REAL DIVIDE
U 0374, 0002,4443,0000,4174,4004,1700,0000,0000,0000	; 4520	=1100	RETURN [2]		;ALL POSITIVE
U 0375, 0002,2222,0000,4174,4004,1700,4000,0000,0000	; 4521	=1101	Q_-Q, RETURN [2]	;-QUO +REM
U 0376, 0377,2222,0000,4174,4007,0700,4000,0000,0000	; 4522	=1110	Q_-Q			;ALL NEGATIVE
U 0377, 0002,2441,0303,4174,4004,1700,4000,0000,0000	; 4523	=1111	[AR]_-[AR], RETURN [2]	;NEGATIVE REMAINDER
							; 4524	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 123
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			ARITHMETIC -- DIVIDE SUBROUTINE				

							; 4525	;HERE IS THE INNER DIVIDE SUBROUTINE
							; 4526	;SAME SETUP AS DIVSUB
							; 4527	;RETURNS WITH AR AND Q POSITIVE AND
							; 4528	;	14 IF ALL POSITIVE
							; 4529	;	15 IF -QUO
							; 4530	;	16 IF ALL NEGATIVE
							; 4531	;	17 IF NEGATIVE REMAINDER
							; 4532	
							; 4533	BASIC DIV STEP	"DEST/Q_Q*2, DIV, A/BR, B/AR, STEP SC"
							; 4534	DIV STEP	"BASIC DIV STEP, AD/A+B, DIVIDE/1"
							; 4535	FIRST DIV STEP	"BASIC DIV STEP, AD/B-A-.25, ADD .25"
							; 4536	
U 3043, 1252,3333,0003,4174,4007,0520,0000,0000,0000	; 4537	DIVSGN:	READ [AR], SKIP DP0
U 1252, 3045,4221,0004,4174,4007,0700,0000,0000,0000	; 4538	=0	[ARX]_0, J/DVSUB2	;REMAINDER IS POSITIVE
U 1253, 1254,2222,0000,4174,4007,0621,4000,0000,0000	; 4539		Q_-Q, SKIP AD.EQ.0	;COMPLEMENT LOW WORD
U 1254, 3044,7441,0303,4174,4007,0700,0000,0000,0000	; 4540	=0	[AR]_.NOT.[AR], J/DVSUB1 ;COMPLEMENT HI WORD
U 1255, 3044,2441,0303,4174,4007,0700,4000,0000,0000	; 4541		[AR]_-[AR]		;TWO'S COMPLEMENT HI WORD SINCE
							; 4542					; LOW WORD WAS ZERO
U 3044, 3045,3771,0004,4374,4007,0700,0000,0010,0000	; 4543	DVSUB1: [ARX]_#, #/100000	;REMAINDER IS NEGATIVE
U 3045, 1256,3333,0005,4174,4007,0520,0000,0000,0000	; 4544	DVSUB2: READ [BR], SKIP DP0	;IS THE DIVISOR NEGATIVE
							; 4545	=0
							; 4546	DVSUB3: [AR]_[AR]*.5 LONG,	;START TO PUT IN 9-CHIPS
U 1256, 3047,3446,0303,4174,4007,0700,0000,0000,0000	; 4547		J/DIVSET		;JOIN MAIN STREAM
U 1257, 3046,2441,0505,4174,4007,0700,4000,0000,0000	; 4548		[BR]_-[BR]		;COMPLEMENT DIVISOR
							; 4549		[ARX]_[ARX].OR.#, 	;ADJUST SIGN OF QUOTIENT
U 3046, 1256,3551,0404,4374,4007,0700,0000,0004,0000	; 4550		#/40000, J/DVSUB3	;USE 9 CHIPS
U 3047, 3050,3447,0303,4174,4007,0700,0000,0000,0000	; 4551	DIVSET: [AR]_[AR]*.5
U 3050, 3051,3447,0505,4174,4007,0700,0000,0000,0000	; 4552		[BR]_[BR]*.5
U 3051, 3052,3447,0505,4174,4007,0700,0000,0000,0000	; 4553		[BR]_[BR]*.5
U 3052, 1260,1114,0503,4174,4067,0630,6000,0060,0000	; 4554		FIRST DIV STEP
							; 4555	;HERE IS THE MAIN DIVIDE LOOP
							; 4556	=0
U 1260, 1260,0114,0503,4174,4067,0630,2100,0060,0000	; 4557	DIVIDE: DIV STEP, J/DIVIDE
U 1261, 3053,3444,1717,4174,4067,0700,0100,0000,0000	; 4558		[T1]_[T1]*2 LONG, DIVIDE/1, DIV
U 3053, 1262,3447,0303,4174,4007,0520,0000,0000,0000	; 4559		[AR]_[AR]*.5, SKIP DP0
							; 4560	=0
U 1262, 3054,3444,0303,4174,4007,0700,0000,0000,0000	; 4561	FIX++:	[AR]_[AR]*2 LONG, J/FIX1++
U 1263, 1262,0111,0503,4174,4007,0700,0000,0000,0000	; 4562		[AR]_[AR]+[BR], J/FIX++
U 3054, 3055,3444,0303,4174,4007,0700,0000,0000,0000	; 4563	FIX1++: [AR]_[AR]*2 LONG
U 3055, 3056,4002,1200,4174,4007,0700,0000,0000,0000	; 4564		Q_[MASK].AND.Q
							; 4565		READ [ARX], 3T,		;RETURN TO 1 OF 4 PLACES
							; 4566		DISP/1,			;BASED ON SIGN OF RESULT
U 3056, 0014,3333,0004,4174,4000,1701,0000,0000,0000	; 4567		J/14			;RETURN
							; 4568	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 124
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			ARITHMETIC -- DOUBLE DIVIDE SUBROUTINE			

							; 4569	.TOC	"ARITHMETIC -- DOUBLE DIVIDE SUBROUTINE"
							; 4570	.IF/FULL
							; 4571	;CALL WITH:
							; 4572	;	AR!ARX!Q = 3 WORD DV'END
							; 4573	;	BR!BRX	 = 2 WORD DV'SOR
							; 4574	;RETURN 2 WITH:
							; 4575	;	AR!ARX	 = 2 WORD REMAINDER
							; 4576	;			CORRECT IF POSITIVE (Q IS ODD)
							; 4577	;			WRONG (BY BR!BRX) IF NEGATIVE (Q IS EVEN)
							; 4578	;	Q	 = 1 WORD QUOTIENT
							; 4579	;CALLER MUST CHECK FOR ZERO DIVIDE PRIOR TO CALL
							; 4580	;
							; 4581	;NOTE: THIS SUBROUTINE ONLY WORKS FOR POSITIVE NUMBERS
							; 4582	;
							; 4583	=0
							; 4584	;HERE FOR NORMAL STARTUP
							; 4585	DBLDIV: [ARX]_([ARX]-[BRX])*2 LONG, ;SUBTRACT LOW WORD
U 1264, 3057,1114,0604,4174,4057,0700,4000,0000,0000	; 4586		LSHC, J/DIVHI		;GO ENTER LOOP
							; 4587	;SKIP ENTRY POINT IF FINAL STEP IN PREVIOUS ENTRY WAS IN ERROR
							; 4588		[ARX]_([ARX]+[BRX])*2 LONG, ;CORRECTION STEP
U 1265, 3057,0114,0604,4174,4057,0700,0000,0000,0000	; 4589		LSHC, J/DIVHI		;GO ENTER LOOP
							; 4590	
							; 4591	;HERE IS DOUBLE DIVIDE LOOP
							; 4592	DIVHI:	AD/A+B, 		;ADD (HARDWARE MAY OVERRIDE)
							; 4593		A/BR, B/AR,		;OPERANDS ARE AR AND BR
							; 4594		DEST/AD*2,		;SHIFT LEFT
							; 4595		SHSTYLE/NORM,		;SET SHIFT PATHS (SEE DPE1)
							; 4596		MULTI PREC/1,		;INJECT SAVED BITS
U 3057, 1266,0115,0503,4174,4007,0630,2040,0060,0000	; 4597		STEP SC 		;COUNT DOWN LOOP
							; 4598	=0	AD/A+B, 		;ADD (HARDWARE MAY OVERRIDE)
							; 4599		A/BRX, B/ARX,		;LOW WORDS
							; 4600		DEST/Q_Q*2,		;SHIFT WHOLE MESS LEFT
							; 4601		SHSTYLE/DIV,		;SET SHIFT PATHS (SEE DPE1)
							; 4602		DIVIDE/1,		;SAVE BITS
U 1266, 3057,0114,0604,4174,4067,0700,0100,0000,0000	; 4603		J/DIVHI 		;KEEP LOOPING
							; 4604	;HERE WHEN ALL DONE
							; 4605		DEST/Q_Q*2, DIV,	;SHIFT IN LAST Q BIT
							; 4606		DIVIDE/1,		;GENERATE BIT
U 1267, 0002,4444,0002,4174,4064,1700,0100,0000,0000	; 4607		B/HR, RETURN [2]	;ZERO HR AND RETURN
							; 4608	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 125
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			ARITHMETIC -- SUBROUTINES FOR ARITHMETIC		

							; 4609	.TOC	"ARITHMETIC -- SUBROUTINES FOR ARITHMETIC"
							; 4610	
							; 4611	;QUAD WORD NEGATE
							; 4612	;ARGUMENT IN AC!AC1!AC2!AC3
							; 4613	;LEAVES COPY OF AC!AC1 IN AR!Q
							; 4614	;RETURNS TO CALL!24
U 3060, 3061,1772,0000,1274,4007,0701,4000,0000,1443	; 4615	QDNEG:	Q_-AC[3]
							; 4616		AC[3]_Q.AND.[MAG],	;PUT BACK LOW WORD
U 3061, 1270,4003,0000,1174,4007,0621,0400,0000,1443	; 4617		SKIP AD.EQ.0		;SEE IF ANY CARRY
							; 4618	=0
U 1270, 3064,7772,0000,1274,4007,0701,0000,0000,1442	; 4619	COM2A:	Q_.NOT.AC[2], J/COM2	;CARRY--DO 1'S COMPLEMENT
U 1271, 3062,1772,0000,1274,4007,0701,4000,0000,1442	; 4620		Q_-AC[2]		;NEXT WORD
							; 4621		AC[2]_Q.AND.[MAG],	;PUT BACK WORD
U 3062, 1272,4003,0000,1174,4007,0621,0400,0000,1442	; 4622		SKIP AD.EQ.0
							; 4623	=0
U 1272, 3065,7772,0000,1274,4007,0701,0000,0000,1441	; 4624	COM1A:	Q_.NOT.AC[1], J/COM1
U 1273, 3063,1772,0000,1274,4007,0701,4000,0000,1441	; 4625		Q_-AC[1]
							; 4626		AC[1]_Q.AND.[MAG],
U 3063, 1274,4003,0000,1174,4007,0621,0400,0000,1441	; 4627		SKIP AD.EQ.0
							; 4628	=0
U 1274, 3066,7771,0003,0274,4007,0700,0000,0000,0000	; 4629	COM0A:	[AR]_.NOT.AC, J/COM0
U 1275, 3066,1771,0003,0274,4007,0701,4000,0000,0000	; 4630		[AR]_-AC, 3T, J/COM0
							; 4631	
U 3064, 1272,4003,0000,1174,4007,0700,0400,0000,1442	; 4632	COM2:	AC[2]_Q.AND.[MAG], J/COM1A
U 3065, 1274,4003,0000,1174,4007,0700,0400,0000,1441	; 4633	COM1:	AC[1]_Q.AND.[MAG], J/COM0A
U 3066, 0024,3440,0303,0174,4004,1700,0400,0000,0000	; 4634	COM0:	AC_[AR], RETURN [24]
							; 4635	.ENDIF/FULL
							; 4636	
							; 4637	;DOUBLE WORD NEGATE
							; 4638	;ARGUMENT IN AR AND ARX
							; 4639	;RETURNS TO CALL!2
							; 4640	
U 3067, 3070,4551,0404,4374,0007,0700,0000,0037,7777	; 4641	DBLNEG: CLEAR ARX0		;FLUSH DUPLICATE SIGN
							; 4642	DBLNGA: [ARX]_-[ARX],		;FLIP LOW WORD
U 3070, 1276,2441,0404,4174,4007,0621,4000,0000,0000	; 4643		SKIP AD.EQ.0		;SEE IF CARRY
							; 4644	=0	[AR]_.NOT.[AR], 	;NO CARRY-- 1 COMP
U 1276, 2220,7441,0303,4174,4467,0700,0000,0001,0001	; 4645		AD FLAGS, J/CLARX0	;CLEAR LOW SIGN
							; 4646		[AR]_-[AR],		;CARRY
U 1277, 2220,2441,0303,4174,4467,0701,4000,0001,0001	; 4647		AD FLAGS, 3T, J/CLARX0
							; 4648	
							; 4649	;SAME THING BUT DOES NOT SET PC FLAGS
U 3071, 1300,2441,0404,4174,4007,0621,4000,0000,0000	; 4650	DBLNG1: [ARX]_-[ARX], SKIP AD.EQ.0
U 1300, 2220,7441,0303,4174,4007,0700,0000,0000,0000	; 4651	=0	[AR]_.NOT.[AR], J/CLARX0
U 1301, 2220,2441,0303,4174,4007,0700,4000,0000,0000	; 4652		[AR]_-[AR], J/CLARX0
							; 4653	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 126
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			ARITHMETIC -- SUBROUTINES FOR ARITHMETIC		

; 4654		.NOBIN
; 4655	.TOC	"BYTE GROUP -- IBP, ILDB, LDB, IDPB, DPB"
; 4656	
; 4657	
; 4658	;ALL FIVE INSTRUCTIONS OF THIS GROUP ARE CALLED WITH THE BYTE POINTER
; 4659	;IN THE AR.  ALL INSTRUCTIONS SHARE COMMON SUBROUTINES.
; 4660	
; 4661	;IBP OR ADJBP
; 4662	;IBP IF AC#0, ADJBP OTHERWISE
; 4663	; HERE WITH THE BASE POINTER IN AR
; 4664	
; 4665	;HERE IS A MACRO TO DO IBP. WHAT HAPPENS IS:
; 4666	;	THE AR IS PUT ON THE DP.
; 4667	;	THE BR IS LOADED FROM THE DP WITH BITS 0-5 FROM SCAD
; 4668	;	THE SCAD COMPUTES P-S
; 4669	;	IBPS IS CALLED WITH A 4-WAY DISPATCH ON SCAD0 AND FIRST-PART-DONE
; 4670	;THE MACRO IS WRITTEN WITH SEVERAL SUB-MACROS BECAUSE OF RESTRICTIONS
; 4671	; IN THE MICRO ASSEMBLER
; 4672	
; 4673	IBP DP		"AD/D, DEST/A, A/AR, B/BR, DBUS/DBM, DBM/DP, BYTE/BYTE1"
; 4674	IBP SCAD	"SCAD/A-B, SCADA/BYTE1, SCADB/SIZE"
; 4675	IBP SPEC	"SCAD DISP, SKIP FPD"
; 4676	CALL IBP	"IBP DP, IBP SCAD, IBP SPEC, CALL [IBPS], DT/3T"
; 4677	
; 4678	SET P TO 36-S	"AD/D,DEST/A,A/BR,B/AR,DBUS/DBM,DBM/DP,SCAD/A-B,SCADB/SIZE,BYTE/BYTE1,SCADA/PTR44"
; 4679	
; 4680	;THE FOLLOWING MACRO IS USED FOR COUNTING SHIFTS IN THE BYTE ROUTINES. IT
; 4681	; USES THE FE AND COUNTS BY 8. NOTE: BYTE STEP IS A 2S WEIGHT SKIP NOT 1S.
; 4682	BYTE STEP	"SCAD/A+B,SCADA/S#,S#/1770,SCADB/FE,LOAD FE, 3T,SCAD DISP"
; 4683	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 127
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			BYTE GROUP -- IBP, ILDB, LDB, IDPB, DPB			

							; 4684		.BIN
							; 4685	
							; 4686		.DCODE
D 0133, 0015,1610,1100					; 4687	133:	R,	AC,	J/IBP		;OR ADJBP
D 0134, 0000,1620,1500					; 4688	134:	R,W TEST,	J/ILDB		;CAN'T USE RPW BECAUSE OF FPD
D 0135, 0000,1624,1100					; 4689		R,		J/LDB
D 0136, 0000,1630,1500					; 4690		R,W TEST,	J/IDPB
D 0137, 0000,1634,1100					; 4691		R,		J/DPB
							; 4692		.UCODE
							; 4693	1610:
U 1610, 0240,4443,0000,4174,4007,0360,0000,0000,0000	; 4694	IBP:	SKIP IF AC0		;SEE IF ADJBP
							; 4695	=000	WORK[ADJPTR]_[AR],	;SAVE POINTER
U 0240, 3127,3333,0003,7174,4007,0700,0400,0000,0223	; 4696		J/ADJBP 		;GO ADJUST BYTE POINTER
U 0241, 0350,3770,0305,4334,4016,7351,0010,0033,6000	; 4697	=001	CALL IBP		;BUMP BYTE POINTER
U 0245, 0110,3443,0100,4174,4156,4700,0200,0014,0012	; 4698	=101	DONE			;POINTER STORED
							; 4699	=
							; 4700	
							; 4701	1620:
U 1620, 0350,3770,0305,4334,4016,7351,0010,0033,6000	; 4702	ILDB:	CALL IBP		;BUMP BYTE POINTER
							; 4703	1624:
							; 4704	LDB:	READ [AR],		;LOOK AT POINTER
							; 4705		LOAD BYTE EA, FE_P, 3T, ;GET STUFF OUT OF POINTER
U 1624, 3077,3333,0003,4174,4217,0701,1010,0073,0500	; 4706		CALL [BYTEA]		;COMPUTE EFFECTIVE ADDRESS
U 1625, 0604,3443,0100,4174,4007,0700,0200,0014,0012	; 4707	1625:	VMA_[PC], FETCH 	;START FETCH OF NEXT INST
							; 4708	=0*	READ [AR],		;LOOK AT POINTER
							; 4709		FE_FE.AND.S#, S#/0770,	;MASK OUT JUNK IN FE
							; 4710		BYTE DISP,		;DISPATCH ON BYTE SIZE
U 0604, 0340,3333,0003,4174,4006,5701,1010,0051,0770	; 4711		CALL [LDB1]		;GET BYTE
							; 4712		AC_[AR], CLR FPD,	;STORE AC
U 0606, 0555,3440,0303,0174,4467,0700,0400,0005,0000	; 4713		J/NIDISP		;GO DO NEXT INST
							; 4714	
							; 4715	1630:
U 1630, 0350,3770,0305,4334,4016,7351,0010,0033,6000	; 4716	IDPB:	CALL IBP		;BUMP BYTE POINTER
							; 4717	1634:
U 1634, 3072,3775,0004,0274,4007,0701,0000,0000,0000	; 4718	DPB:	[ARX]_AC*2		;PUT 7 BIT BYTE IN 28-34
							; 4719		AD/A, A/ARX, SCAD/A,	;PUT THE BYTE INTO
							; 4720		SCADA/BYTE5, 3T,	; INTO THE FE REGISTER
U 3072, 3073,3443,0400,4174,4007,0701,1000,0077,0000	; 4721		LOAD FE 		; FE REGISTER
U 3073, 0264,3771,0004,0276,6007,0700,0000,0000,0000	; 4722		[ARX]_AC		;PUT BYTE IN ARX
							; 4723	=100	READ [AR],		;LOOK AT BYTE POINTER
							; 4724		LOAD BYTE EA,		;LOAD UP EFFECTIVE ADDRESS
U 0264, 3077,3333,0003,4174,4217,0700,0010,0000,0500	; 4725		CALL [BYTEA]		;COMPUTE EFFECTIVE ADDRESS
							; 4726		READ [AR],		;LOOK AT POINTER AGAIN
							; 4727		BYTE DISP,		;DISPATCH ON SIZE
U 0265, 0360,3333,0003,4174,4006,5701,0010,0000,0000	; 4728		CALL [DPB1]		;GO STORE BYTE
U 0267, 1400,4443,0000,4174,4467,0700,0000,0005,0000	; 4729	=111	CLR FPD, J/DONE 	;ALL DONE
							; 4730	=
							; 4731	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 128
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			BYTE GROUP -- INCREMENT BYTE POINTER SUBROUTINE		

							; 4732	.TOC	"BYTE GROUP -- INCREMENT BYTE POINTER SUBROUTINE"
							; 4733	
							; 4734	=00
U 0350, 3075,3441,0503,4174,4007,0700,0200,0003,0002	; 4735	IBPS:	[AR]_[BR], START WRITE, J/IBPX	;NO OVERFLOW, BR HAS ANSWER
U 0351, 0004,4443,0000,4174,4004,1700,0000,0000,0000	; 4736		RETURN [4]			;FIRST PART DONE SET
U 0352, 3074,3770,0503,4334,4017,0700,0000,0032,6000	; 4737		SET P TO 36-S, J/NXTWRD 	;WORD OVERFLOW
U 0353, 0004,4443,0000,4174,4004,1700,0000,0000,0000	; 4738		RETURN [4]			;FPD WAS SET IGNORE OVERFLOW
							; 4739						; AND RETURN
							; 4740	
U 3074, 3075,0111,0703,4170,4007,0700,0200,0003,0002	; 4741	NXTWRD: [AR]_[AR]+1, HOLD LEFT, START WRITE	;BUMP Y AND RETURN
U 3075, 0004,3333,0003,4175,5004,1701,0200,0000,0002	; 4742	IBPX:	MEM WRITE, MEM_[AR], RETURN [4]
							; 4743	
							; 4744	
							; 4745	.TOC	"BYTE GROUP -- BYTE EFFECTIVE ADDRESS EVALUATOR"
							; 4746	
							; 4747	;ENTER WITH POINTER IN AR
							; 4748	;RETURN1 WITH (EA) IN VMA AND WORD IN BR
							; 4749	BYTEAS: EA MODE DISP,		;HERE TO AVOID FPD
U 3076, 0070,4443,0000,2174,4006,6700,0000,0000,0000	; 4750		J/BYTEA0		;GO COMPUTE EA
							; 4751	BYTEA:	SET FPD,		;SET FIRST-PART-DONE
U 3077, 0070,4443,0000,2174,4466,6700,0000,0003,0000	; 4752		EA MODE DISP		;DISPATCH
							; 4753	=100*
							; 4754	BYTEA0: VMA_[AR]+XR,		;INDEXING
							; 4755		START READ,		;FETCH DATA WORD
							; 4756		PXCT BYTE DATA, 	;FOR PXCT
U 0070, 3101,0553,0300,2274,4007,0700,0200,0004,0712	; 4757		J/BYTFET		;GO WAIT
							; 4758		VMA_[AR],		;PLAIN
							; 4759		START READ,		;START CYCLE
							; 4760		PXCT BYTE DATA, 	;FOR PXCT
U 0072, 3101,3443,0300,4174,4007,0700,0200,0004,0712	; 4761		J/BYTFET		;GO WAIT
							; 4762		VMA_[AR]+XR,		;BOTH
							; 4763		START READ,		;START CYCLE
							; 4764		PXCT BYTE PTR EA,	;FOR PXCT
U 0074, 3100,0553,0300,2274,4007,0700,0200,0004,0512	; 4765		J/BYTIND		;GO DO INDIRECT
							; 4766		VMA_[AR],		;JUST @
							; 4767		START READ,		;START READ
U 0076, 3100,3443,0300,4174,4007,0700,0200,0004,0512	; 4768		PXCT BYTE PTR EA	;FOR PXCT
							; 4769	BYTIND: MEM READ,		;WAIT FOR @ WORD
							; 4770		[AR]_MEM,		;PUT IN AR
							; 4771		HOLD LEFT,		;JUST IN RH (SAVE P & S)
							; 4772		LOAD BYTE EA,		;LOOP BACK
U 3100, 3076,3771,0003,4361,5217,0700,0200,0000,0502	; 4773		J/BYTEAS		; ..
							; 4774	
							; 4775	BYTFET: MEM READ,		;WAIT FOR BYTE DATA
							; 4776		[BR]_MEM.AND.MASK,	; WORD. UNSIGNED
U 3101, 0001,4551,1205,4365,5004,1700,0200,0000,0002	; 4777		RETURN [1]		;RETURN TO CALLER
							; 4778	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 129
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			BYTE GROUP -- LOAD BYTE SUBROUTINE			

							; 4779	.TOC	"BYTE GROUP -- LOAD BYTE SUBROUTINE"
							; 4780	
							; 4781	;CALL WITH:
							; 4782	;	WORD IN BR
							; 4783	;	POINTER IN AR
							; 4784	;	P IN FE
							; 4785	;	BYTE DISPATCH
							; 4786	;RETURN2 WITH BYTE IN AR
							; 4787	LDB SCAD	"SCAD/A,BYTE/BYTE5"
							; 4788	7-BIT LDB	"AD/D,DBUS/DBM,DBM/DP,DEST/A,A/BR,B/BR, LDB SCAD"
							; 4789	
							; 4790	=000
							; 4791	LDB1:	GEN 17-FE, 3T,		;GO SEE IF ALL THE BITS
							; 4792		SCAD DISP,		; ARE IN THE LEFT HALF
U 0340, 0550,4443,0000,4174,4006,7701,0000,0031,0210	; 4793		J/LDBSWP		;GO TO LDBSWP & SKIP IF LH
							; 4794	
							; 4795	;HERE ARE THE 7-BIT BYTES
U 0341, 3102,3770,0505,4334,4057,0700,0000,0073,0000	; 4796	=001	7-BIT LDB, SCADA/BYTE1, J/LDB7
U 0342, 3102,3770,0505,4334,4057,0700,0000,0074,0000	; 4797	=010	7-BIT LDB, SCADA/BYTE2, J/LDB7
U 0344, 3102,3770,0505,4334,4057,0700,0000,0075,0000	; 4798	=100	7-BIT LDB, SCADA/BYTE3, J/LDB7
U 0345, 3102,3770,0505,4334,4057,0700,0000,0076,0000	; 4799	=101	7-BIT LDB, SCADA/BYTE4, J/LDB7
U 0347, 3102,3770,0505,4334,4057,0700,0000,0077,0000	; 4800	=111	7-BIT LDB, SCADA/BYTE5, J/LDB7
							; 4801	=
							; 4802	
							; 4803	;FOR 7-BIT BYTES WE HAVE BYTE IN BR 28-35 AND JUNK IN REST OF BR.
							; 4804	; WE JUST MASK THE SELECTED BYTE AND SHIFT ONE PLACE RIGHT.
							; 4805	LDB7:	AD/ZERO,RSRC/DA,	;LH_ZERO, RH_D.AND.A
							; 4806		DBUS/DBM,DBM/#,#/376,	;D INPUT IS 376
							; 4807		A/BR,			;A IS BR
							; 4808		B/AR,			;PUT RESULT IN AR
							; 4809		DEST/AD*.5, 3T, 	;SHIFT RESULT 1 PLACE
U 3102, 0002,4257,0503,4374,4004,1701,0000,0000,0376	; 4810		RETURN [2]		;RETURN TO CALLER
							; 4811	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 130
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			BYTE GROUP -- LOAD BYTE SUBROUTINE			

							; 4812	;HERE FOR NORMAL BYTES
							; 4813	=00
							; 4814	LDBSWP: FE_-FE, 		;MAKE P NEGATIVE
U 0550, 3104,4443,0000,4174,4007,0700,1000,0031,0000	; 4815		J/LDBSH 		;JOIN MAIN LDB LOOP
U 0552, 3103,3770,0505,4344,4007,0700,0000,0000,0000	; 4816	=10	[BR]_[BR] SWAP		;SHIFT 18 STEPS
							; 4817	=
							; 4818		[BR]_0, HOLD RIGHT,	;PUT ZERO IN LH
U 3103, 3104,4221,0005,4174,0007,0700,1000,0031,0220	; 4819		FE_-FE+S#, S#/220	;UPDATE FE
							; 4820	LDBSH:	[BR]_[BR]*.5,		;SHIFT RIGHT
							; 4821		FE_FE+10,		;UPDATE THE FE
U 3104, 3105,3447,0505,4174,4007,0700,1020,0041,0010	; 4822		MULTI SHIFT/1		;FAST SHIFT
U 3105, 3106,3333,0003,4174,4007,0700,1000,0031,7770	; 4823		READ [AR], FE_-S-10	;GET SIZE
U 3106, 3107,4222,0000,4174,4007,0700,0000,0000,0000	; 4824		Q_0			;CLEAR Q
							; 4825		GEN MSK [AR],		;PUT MASK IN Q (WIPEOUT AR)
							; 4826		FE_FE+10,		;COUNT UP ALL STEPS
U 3107, 3110,4224,0003,4174,4027,0700,1020,0041,0010	; 4827		MULTI SHIFT/1		;FAST SHIFT
U 3110, 3111,4224,0003,4174,4027,0700,0000,0000,0000	; 4828		GEN MSK [AR]		;ONE MORE BIT
U 3111, 0002,4001,0503,4174,4004,1700,0000,0000,0000	; 4829		[AR]_[BR].AND.Q, RETURN [2]
							; 4830	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 131
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			BYTE GROUP -- LOAD BYTE SUBROUTINE			

; 4831		.NOBIN
; 4832	.TOC	"BYTE GROUP -- DEPOSIT BYTE IN MEMORY"
; 4833	
; 4834	;FLOW FOR DPB (NOT 7-BIT BYTE)
; 4835	;
; 4836	;FIRST SET ARX TO -1 AND Q TO ZERO AND ROTATE LEFT
; 4837	; S PLACES GIVING:
; 4838	
; 4839	;		ARX		  Q
; 4840	;	+------------------!------------------+
; 4841	;	!111111111111000000!000000000000111111!
; 4842	;	+------------------!------------------+
; 4843	;					!<--->!
; 4844	;					S BITS
; 4845	;
; 4846	
; 4847	;NOW THE AC IS LOAD INTO THE ARX AND BOTH THE ARX AND Q
; 4848	; ARE SHIFTED LEFT P BITS GIVING:
; 4849	
; 4850	;	+------------------!------------------+
; 4851	;	!??????BBBBBB000000!000000111111000000!
; 4852	;	+------------------!------------------+
; 4853	;	 <----><---->		  <----><---->
; 4854	;	  JUNK	BYTE		   MASK P BITS
; 4855	;
; 4856	
; 4857	;AT THIS POINT WE ARE ALMOST DONE. WE NEED TO AND
; 4858	; THE BR WITH .NOT. Q TO ZERO THE BITS FOR THE BYTE
; 4859	; AND AND ARX WITH Q TO MASK OUT THE JUNK THIS GIVES:
; 4860	;
; 4861	;		ARX
; 4862	;	+------------------+
; 4863	;	!000000BBBBBB000000!
; 4864	;	+------------------!
; 4865	;
; 4866	;		AR
; 4867	;	+------------------+
; 4868	;	!DDDDDD000000DDDDDD!
; 4869	;	+------------------+
; 4870	;
; 4871	;WE NOW OR THE AR WITH ARX TO GENERATE THE ANSWER.
; 4872	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 132
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			BYTE GROUP -- DEPOSIT BYTE IN MEMORY			

							; 4873		.BIN
							; 4874	
							; 4875	;DEPOSIT BYTE SUBROUTINE
							; 4876	;CALL WITH:
							; 4877	;	BYTE POINTER IN AR
							; 4878	;	BYTE TO STORE IN ARX
							; 4879	;	WORD TO MERGE WITH IN BR
							; 4880	;	(E) OF BYTE POINTER IN VMA
							; 4881	;	7-BIT BYTE IN FE
							; 4882	;	BYTE DISPATCH
							; 4883	;RETURN2 WITH BYTE IN MEMORY
							; 4884	;
							; 4885	DPB SCAD	"SCAD/A+B,SCADA/S#,SCADB/FE,S#/0"
							; 4886	7-BIT DPB	"AD/D,DEST/A,A/BR,DBUS/DBM,DBM/DP,B/AR, DPB SCAD"
							; 4887	
							; 4888	=000
U 0360, 3114,3333,0003,4174,4007,0700,1000,0031,7770	; 4889	DPB1:	READ [AR], FE_-S-10, J/DPBSLO	;NOT SPECIAL
U 0361, 3112,3770,0503,4334,4017,0700,0000,0041,0000	; 4890	=001	7-BIT DPB, BYTE/BYTE1, J/DPB7
U 0362, 3112,3770,0503,4334,4027,0700,0000,0041,0000	; 4891	=010	7-BIT DPB, BYTE/BYTE2, J/DPB7
U 0364, 3112,3770,0503,4334,4037,0700,0000,0041,0000	; 4892	=100	7-BIT DPB, BYTE/BYTE3, J/DPB7
U 0365, 3112,3770,0503,4334,4047,0700,0000,0041,0000	; 4893	=101	7-BIT DPB, BYTE/BYTE4, J/DPB7
U 0367, 3112,3770,0503,4334,4057,0700,0000,0041,0000	; 4894	=111	7-BIT DPB, BYTE/BYTE5, J/DPB7
							; 4895	=
U 3112, 3113,3447,1200,4174,4007,0700,0200,0003,0002	; 4896	DPB7:	[MAG]_[MASK]*.5, START WRITE
U 3113, 0002,3333,0003,4175,5004,1701,0200,0000,0002	; 4897		MEM WRITE, MEM_[AR], RETURN [2]
							; 4898	
							; 4899	
U 3114, 3115,4222,0000,4174,4007,0700,0000,0000,0000	; 4900	DPBSLO: Q_0			;CLEAR Q
							; 4901		GEN MSK [MAG],		;GENERATE MASK IN Q (ZAP MAG)
							; 4902		FE_FE+10,		;COUNT STEPS
U 3115, 3116,4224,0000,4174,4027,0700,1020,0041,0010	; 4903		MULTI SHIFT/1		;FAST SHIFT
U 3116, 3117,4224,0000,4174,4027,0700,0000,0000,0000	; 4904		GEN MSK [MAG]		;ONE MORE BITS
U 3117, 3120,3333,0003,4174,4007,0701,1000,0073,0000	; 4905		READ [AR], 3T, FE_P	;AMOUNT TO SHIFT
U 3120, 3121,4443,0000,4174,4007,0700,1000,0051,0770	; 4906		FE_FE.AND.S#, S#/0770	;MASK OUT JUNK
							; 4907		Q_Q.AND.[MASK], 	;CLEAR BITS 36 AND 37
U 3121, 3122,4002,1200,4174,4007,0700,1000,0031,0000	; 4908		FE_-FE			;MINUS NUMBER OF STEPS
							; 4909		[ARX]_[ARX]*2 LONG,	;SHIFT BYTE AND MASK
							; 4910		FE_FE+10,		;COUNT OUT STEPS
U 3122, 3123,3444,0404,4174,4007,0700,1020,0041,0010	; 4911		MULTI SHIFT/1		;FAST SHIFT
							; 4912	;AT THIS POINT WE HAVE DONE ALL THE SHIFTING WE NEED. THE BYTE IS
							; 4913	; IN ARX AND THE MASK IS IN Q.
U 3123, 3124,7221,0003,4174,4007,0700,0000,0000,0000	; 4914		[AR]_.NOT.Q
U 3124, 3125,4111,0503,4174,4007,0700,0000,0000,0000	; 4915		[AR]_[AR].AND.[BR]
U 3125, 3126,4001,0404,4174,4007,0700,0000,0000,0000	; 4916		[ARX]_[ARX].AND.Q
							; 4917		[AR]_[AR].OR.[ARX],
U 3126, 3112,3111,0403,4174,4007,0700,0000,0000,0000	; 4918		J/DPB7
							; 4919	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 133
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			BYTE GROUP -- ADJUST BYTE POINTER			

							; 4920	.TOC	"BYTE GROUP -- ADJUST BYTE POINTER"
							; 4921	.IF/FULL
							; 4922	;FIRST THE NUMBER OF BYTES PER WORD IS COMPUTED FROM THE
							; 4923	; FOLLOWING FORMULA:
							; 4924	;
							; 4925	;		       (  P  )	    ( 36-P )
							; 4926	;  BYTES PER WORD = INT( --- ) + INT( ---- )
							; 4927	;		       (  S  )	    (  S   )
							; 4928	;
							; 4929	;THIS GIVES 2 BYTES PER WORD FOR THE FOLLOWING 12 BIT BYTE:
							; 4930	;	!=====================================!
							; 4931	;	!  6  !////////////!	12     !  6   !
							; 4932	;	!=====================================!
							; 4933	;		P=18 AND S=12
							; 4934	;
							; 4935	;WE GET 3 BYTES/WORD IF THE BYTES FALL IN THE NATURAL PLACE:
							; 4936	;	!=====================================!
							; 4937	;	!    12     !\\\\\\\\\\\\!     12     !
							; 4938	;	!=====================================!
							; 4939	;	       P=12 AND S=12
							; 4940	
							; 4941	;WE COME HERE WITH THE BYTE POINTER IN AR, AND ADJPTR
							; 4942	ADJBP:	[ARX]_[AR] SWAP,	;MOVE SIZE OVER
U 3127, 1302,3770,0304,4344,4007,0700,2000,0071,0011	; 4943		SC_9.			;READY TO SHIFT
							; 4944	=0
							; 4945	ADJBP0: [ARX]_[ARX]*.5, 	;SHIFT P OVER
							; 4946		STEP SC,		; ..
U 1302, 1302,3447,0404,4174,4007,0630,2000,0060,0000	; 4947		J/ADJBP0		; ..
							; 4948		[ARX]_([ARX].AND.#)*.5, ;SHIFT AND MASK
							; 4949		3T,			;WAIT
U 1303, 3130,4557,0404,4374,4007,0701,0000,0000,0176	; 4950		#/176			;6 BIT MASK
							; 4951		[ARX]_#,		;CLEAR LH
							; 4952		#/0,			; ..
U 3130, 3131,3771,0004,4374,0007,0700,0000,0000,0000	; 4953		HOLD RIGHT		; ..
U 3131, 3132,3333,0004,7174,4007,0700,0400,0000,0221	; 4954		WORK[ADJP]_[ARX]	;SAVE P
							; 4955		[BR]_([AR].AND.#)*.5,	;START ON S
							; 4956		3T,			;EXTRACT S
U 3132, 3133,4557,0305,4374,4007,0701,0000,0000,7700	; 4957		#/007700		; ..
							; 4958		[BR]_[BR] SWAP, 	;SHIFT 18 PLACES
U 3133, 3134,3770,0505,4344,4007,0700,2000,0071,0003	; 4959		SC_3			; ..
							; 4960		[BR]_0, 		;CLEAR LH
U 3134, 1304,4221,0005,4174,0007,0700,0000,0000,0000	; 4961		HOLD RIGHT		; ..
							; 4962	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 134
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			BYTE GROUP -- ADJUST BYTE POINTER			

							; 4963	=0
							; 4964	ADJBP1: [BR]_[BR]*.5,		;SHIFT S OVER
							; 4965		STEP SC,		; ..
U 1304, 1304,3447,0505,4174,4007,0630,2000,0060,0000	; 4966		J/ADJBP1		; ..
							; 4967		WORK[ADJS]_[BR],	;SALT S AWAY
U 1305, 1306,3333,0005,7174,4007,0621,0400,0000,0222	; 4968		SKIP AD.EQ.0		;SEE IF ZERO
							; 4969	=0	Q_[ARX],		;DIVIDE P BY S
							; 4970		SC_34.,			;STEP COUNT
U 1306, 0660,3442,0400,4174,4007,0700,2000,0071,0042	; 4971		J/ADJBP2		;SKIP NEXT WORD
U 1307, 1404,3771,0003,7274,4007,0701,0000,0000,0223	; 4972		[AR]_WORK[ADJPTR], J/MOVE	;S=0 -- SAME AS MOVE
							; 4973	=0*
							; 4974	ADJBP2: [AR]_#, 		;FILL AR WITH SIGN BITS
							; 4975		#/0,			;POSITIVE
U 0660, 0370,3771,0003,4374,4007,0700,0010,0000,0000	; 4976		CALL [DIVSUB]		;GO DIVIDE
U 0662, 3135,3223,0000,7174,4007,0700,0400,0000,0224	; 4977		WORK[ADJQ1]_Q		;SAVE QUOTIENT
							; 4978		Q_#,			;COMPUTE (36-P)/S
							; 4979		#/36.,			; ..
U 3135, 3136,3772,0000,4370,4007,0700,0000,0000,0044	; 4980		HOLD LEFT		;SMALL ANSWER
U 3136, 3137,1662,0000,7274,4007,0701,4000,0000,0221	; 4981		Q_Q-WORK[ADJP]		;SUBTRACT P
U 3137, 3140,3771,0005,7274,4007,0701,0000,0000,0222	; 4982		[BR]_WORK[ADJS]		;DIVIDE BY S
U 3140, 0664,4443,0000,4174,4007,0700,2000,0071,0042	; 4983		SC_34.			;STEP COUNT
							; 4984	=0*	[AR]_#,			;MORE SIGN BITS
							; 4985		#/0,			; ..
U 0664, 0370,3771,0003,4374,4007,0700,0010,0000,0000	; 4986		CALL [DIVSUB]		;GO DIVIDE
U 0666, 3141,3333,0003,7174,4007,0700,0400,0000,0225	; 4987		WORK[ADJR2]_[AR]	;SAVE REMAINDER
							; 4988		[AR]_#, 		;ASSUME NEGATIVE ADJ
U 3141, 3142,3771,0003,4374,4007,0700,0000,0077,7777	; 4989		#/777777		;EXTEND SIGN
							; 4990		AD/D+Q, 		;BR_(P/S)+((36-P)/S)
							; 4991		DEST/AD,		; ..
							; 4992		B/BR,			; ..
							; 4993		RAMADR/#,		; ..
							; 4994		DBUS/RAM,		; ..
							; 4995		WORK/ADJQ1,		; ..
							; 4996		4T,			; ..
U 3142, 1310,0661,0005,7274,4007,0622,0000,0000,0224	; 4997		SKIP AD.EQ.0		;SEE IF ZERO
							; 4998	=0	Q_Q+AC, 		;GET ADJUSTMENT
							; 4999		SC_34.,			;STEP COUNT
							; 5000		SKIP DP0,		;GO DO DIVIDE
							; 5001		4T,			;WAIT FOR DP
U 1310, 0570,0662,0000,0274,4007,0522,2000,0071,0042	; 5002		J/ADJBP3		;BELOW
U 1311, 0555,4443,0000,4174,4467,0700,0000,0051,1000	; 5003		NO DIVIDE		;0 BYTES/WORD
							; 5004	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 135
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			BYTE GROUP -- ADJUST BYTE POINTER			

							; 5005	;WE NOW DIVIDE THE ADJUSTMENT BY THE BYTES PER WORD AND FORCE THE
							; 5006	; REMAINDER (R) TO BE A POSITIVE NUMBER (MUST NOT BE ZERO). THE
							; 5007	; QUOTIENT IS ADDED TO THE Y FIELD IN THE BYTE POINTER AND THE NEW
							; 5008	; P FIELD IS COMPUTED BY:
							; 5009	;
							; 5010	;	     (		     ( 36-P ))
							; 5011	; NEW P = 36-((R * S) +  RMDR( ---- ))
							; 5012	;	     (		     (	 S  ))
							; 5013	;
							; 5014	;WE NOW HAVE BYTES/WORD IN BR AND ADJUSTMENT IN Q. DIVIDE TO GET
							; 5015	; WORDS TO ADJUST BY.
							; 5016	=00
							; 5017	ADJBP3: [AR]_#, 		;POSITIVE ADJUSTMENT
U 0570, 0571,3771,0003,4374,4007,0700,0000,0000,0000	; 5018		#/0.
							; 5019		WORK[ADJBPW]_[BR],	;SAVE BYTES/WORD & COMPUTE
U 0571, 0370,3333,0005,7174,4007,0700,0410,0000,0226	; 5020		CALL [DIVSUB]		; ADJ/(BYTES/WORD)
							; 5021	;WE NOW WANT TO ADJUST THE REMAINDER SO THAT IT IS POSITIVE
							; 5022	=11	Q_#,			;ONLY RIGHT HALF
							; 5023		#/0,			; ..
U 0573, 3143,3772,0000,4374,0007,0700,0000,0000,0000	; 5024		HOLD RIGHT		; ..
							; 5025	=
							; 5026		READ [AR],		;ALREADY +
U 3143, 1312,3333,0003,4174,4007,0421,0000,0000,0000	; 5027		SKIP AD.LE.0		; ..
							; 5028	=0
							; 5029	ADJBP4: AD/D+Q, 		;ADD Q TO POINTER AND STORE
							; 5030		DEST/AD,		; ..
							; 5031		B/BR,			;RESULT TO BR
							; 5032		RAMADR/#,		;PTR IS IN RAM
							; 5033		DBUS/RAM,		; ..
							; 5034		WORK/ADJPTR,		; ..
							; 5035		INH CRY18,		;JUST RH
							; 5036		3T,			;WAIT FOR RAM
U 1312, 3145,0661,0005,7274,4407,0701,0000,0000,0223	; 5037		J/ADJBP5		;CONTINUE BELOW
							; 5038		Q_Q-1,			;NO--MAKE Q SMALLER
U 1313, 3144,1002,0700,4170,4007,0700,4000,0000,0000	; 5039		HOLD LEFT		; ..
							; 5040		[AR]_[AR]+WORK[ADJBPW], ;MAKE REM BIGGER
U 3144, 1312,0551,0303,7274,4007,0701,0000,0000,0226	; 5041		J/ADJBP4		;NOW HAVE + REMAINDER
							; 5042	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 136
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			BYTE GROUP -- ADJUST BYTE POINTER			

							; 5043	ADJBP5: [BRX]_[AR],		;COMPUTE R*S
U 3145, 3146,3441,0306,4174,4007,0700,2000,0071,0043	; 5044		SC_35.			;STEP COUNT
U 3146, 0062,3772,0000,7274,4007,0701,0000,0000,0222	; 5045		Q_WORK[ADJS]		;GET S
							; 5046	=01*	[BRX]_[BRX]*.5 LONG,	;SHIFT OVER
U 0062, 3000,3446,0606,4174,4007,0700,0010,0000,0000	; 5047		CALL [MULSUB]		; ..
							; 5048		AD/D+Q, 		;AR_(R*S)+RMDR(36-P)/S
							; 5049		DEST/AD,		; ..
							; 5050		B/AR,			; ..
							; 5051		RAMADR/#,		; ..
							; 5052		3T,			; ..
							; 5053		DBUS/RAM,		; ..
U 0066, 3147,0661,0003,7274,4007,0701,0000,0000,0225	; 5054		WORK/ADJR2		; ..
							; 5055		[AR]_(#-[AR])*2,	;COMPUTE 36-AR
							; 5056		3T,			;AND START LEFT
U 3147, 3150,2555,0303,4374,4007,0701,4000,0000,0044	; 5057		#/36.			; ..
							; 5058		[AR]_[AR] SWAP, 	;PUT THE POSITION BACK
U 3150, 3151,3770,0303,4344,4007,0700,2000,0071,0011	; 5059		SC_9.			; ..
							; 5060		[AR]_#, 		;CLEAR JUNK FROM RH
							; 5061		#/0,			; ..
U 3151, 1314,3771,0003,4370,4007,0700,0000,0000,0000	; 5062		HOLD LEFT		; ..
							; 5063	=0
							; 5064	ADJBP6: [AR]_[AR]*2,		;LOOP OVER ALL BITS
							; 5065		STEP SC,		; ..
U 1314, 1314,3445,0303,4174,4007,0630,2000,0060,0000	; 5066		J/ADJBP6		; ..
							; 5067		[BR]_[BR].AND.#,	; ..
							; 5068		#/007777,		; ..
U 1315, 3152,4551,0505,4374,0007,0700,0000,0000,7777	; 5069		HOLD RIGHT		; ..
							; 5070		AC_[AR].OR.[BR],	;ALL DONE
U 3152, 1400,3113,0305,0174,4007,0700,0400,0000,0000	; 5071		J/DONE
							;;5072	.IFNOT/FULL
							;;5073	
							;;5074	ADJBP:	UUO			;NO ADJBP IN SMALL
							;;5075						; MICROCODE
							; 5076	.ENDIF/FULL
							; 5077	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 137
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			BYTE GROUP -- ADJUST BYTE POINTER			

; 5078		.NOBIN
; 5079	.TOC	"BLT"
; 5080	
; 5081	;THIS CODE PROVIDES A GUARANTEED RESULT IN AC ON COMPLETION OF
; 5082	; THE TRANSFER (EXCEPT IN THE CASE AC IS PART OF BUT NOT THE LAST WORD
; 5083	; OF THE DESTINATION BLOCK).  WHEN AC IS NOT PART OF THE DESTINATION
; 5084	; BLOCK, IT IS LEFT CONTAINING THE ADDRESSES OF THE FIRST WORD FOLLOWING
; 5085	; THE SOURCE BLOCK (IN THE LH), AND THE FIRST WORD FOLLOWING THE DEST-
; 5086	; INATION BLOCK (IN THE RH).  IF AC IS THE LAST WORD OF THE DESTINATION
; 5087	; BLOCK, IT WILL BE A COPY OF THE LAST WORD OF THE SOURCE BLOCK.
; 5088	
; 5089	;IN ADDITION, A SPECIAL-CASE CHECK IS MADE FOR THE CASE IN WHICH EACH
; 5090	; WORD STORED IS USED AS THE SOURCE OF THE NEXT TRANSFER.  IN THIS CASE,
; 5091	; ONLY ONE READ NEED BE PERFORMED, AND THAT DATA MAY BE STORED FOR EACH
; 5092	; TRANSFER.  THUS THE COMMON USE OF BLT TO CLEAR CORE IS SPEEDED UP.
; 5093	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 138
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			BLT							

							; 5094		.BIN
							; 5095	
							; 5096	;HERE TO SETUP FOR A BLT/UBABLT
							; 5097	
U 3153, 1316,3770,0604,4344,4007,0700,0000,0000,0000	; 5098	SETBLT:	[ARX]_[BRX] SWAP	;COPY TO ARX (SRC IN RH)
							; 5099	=0	VMA_[ARX],		;ADDRESS OF FIRST WORD
							; 5100		START READ,
							; 5101		PXCT BLT SRC,
U 1316, 3663,3443,0400,4174,4007,0700,0210,0004,0712	; 5102		CALL [CLARXL]		;CLEAR THE LEFT HALF OF
							; 5103		[BRX]_0,		; BOTH SRC AND DEST
U 1317, 3154,4221,0006,4174,0007,0700,0000,0000,0000	; 5104		HOLD RIGHT
U 3154, 3155,2112,0306,4174,4007,0700,4000,0000,0000	; 5105		Q_[AR]-[BRX]		;NUMBER OF WORDS TO MOVE
U 3155, 3156,0001,0705,4174,4007,0700,0000,0000,0000	; 5106		[BR]_Q+1		;LENGTH +1
							; 5107		[BR]_[BR] SWAP, 	;COPY TO BOTH HALFS
U 3156, 3157,3770,0505,4344,0007,0700,0000,0000,0000	; 5108		HOLD RIGHT
							; 5109		[BR]_AC+[BR],		;FINAL AC
U 3157, 3160,0551,0505,0274,4407,0701,0000,0000,0000	; 5110		INH CRY18		;KEEP AC CORRECT IF DEST IS 777777
U 3160, 0002,3771,0013,4370,4004,1700,0000,0000,0001	; 5111		STATE_[BLT],RETURN [2]	;SET PAGE FAIL FLAGS
							; 5112	
							; 5113		.DCODE
D 0251, 0000,1640,2100					; 5114	251:	I,		J/BLT
							; 5115		.UCODE
							; 5116	
							; 5117	1640:
U 1640, 3153,3771,0006,0276,6007,0700,0010,0000,0000	; 5118	BLT:	[BRX]_AC,CALL [SETBLT]	;FETCH THE AC (DEST IN RH)
							; 5119	1642:	AC_[BR],		;STORE BACK IN AC
U 1642, 3662,3440,0505,0174,4007,0700,0410,0000,0000	; 5120		CALL [LOADQ]		;LOAD FIRST WORD INTO Q
							; 5121	1643:	[BR]_[ARX]+1000001,	;SRC+1
							; 5122		3T,
U 1643, 3161,0551,0405,4370,4007,0701,0000,0000,0001	; 5123		HOLD LEFT
							; 5124		[BR]-[BRX], 3T,		;IS THIS THE CORE CLEAR CASE
U 3161, 1320,2113,0506,4174,4007,0331,4000,0000,0000	; 5125		SKIP ADR.EQ.0
							; 5126	=0
							; 5127	BLTLP1: VMA_[BRX],		;NO, GET DEST ADR
							; 5128		START WRITE,		;START TO STORE NEXT WORD
							; 5129		PXCT BLT DEST,		;WHERE TO STORE
U 1320, 3164,3443,0600,4174,4007,0700,0200,0003,0312	; 5130		J/BLTGO
							; 5131	
							; 5132		;SKIP TO NEXT PAGE IF CLEARING CORE
							; 5133	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 139
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			BLT							

							; 5134	;CLEAR CORE CASE
							; 5135		VMA_[BRX],
							; 5136		START WRITE,
U 1321, 3162,3443,0600,4174,4007,0700,0200,0003,0312	; 5137		PXCT BLT DEST
							; 5138	BLTCLR: MEM WRITE,		;STORE WORD
							; 5139		MEM_Q,
U 3162, 1322,3223,0000,4174,4007,0671,0200,0000,0002	; 5140		SKIP/-1 MS		;1 MS TIMER UP
U 1322, 3165,4443,0000,4174,4007,0700,0000,0000,0000	; 5141	=0	J/BLTGOT		;GO TAKE INTERRUPT
							; 5142		[BRX]-[AR],		;BELOW E?
							; 5143		3T,
U 1323, 1324,2113,0603,4174,4007,0521,4000,0000,0000	; 5144		SKIP DP0
							; 5145	=0	END BLT,		;NO--STOP BLT
U 1324, 1400,4221,0013,4170,4007,0700,0000,0000,0000	; 5146		J/DONE
							; 5147		[ARX]_[ARX]+1,		;FOR PAGE FAIL LOGIC
U 1325, 1326,0111,0704,4174,4007,0370,0000,0000,0000	; 5148		SKIP IRPT
							; 5149	=0	VMA_[BRX]+1,
							; 5150		LOAD VMA,
							; 5151		PXCT BLT DEST,
							; 5152		START WRITE,		;YES--KEEP STORING
U 1326, 3162,0111,0706,4170,4007,0700,0200,0003,0312	; 5153		J/BLTCLR
							; 5154		VMA_[BRX]+1,		;INTERRUPT
							; 5155		LOAD VMA,
							; 5156		PXCT BLT DEST,
							; 5157		START WRITE,
U 1327, 3164,0111,0706,4170,4007,0700,0200,0003,0312	; 5158		J/BLTGO
							; 5159	
							; 5160	;HERE FOR NORMAL BLT
							; 5161	BLTLP:	MEM READ,		;FETCH
							; 5162		Q_MEM,
U 3163, 1320,3772,0000,4365,5007,0700,0200,0000,0002	; 5163		J/BLTLP1
							; 5164	BLTGO:	MEM WRITE,		;STORE
U 3164, 3165,3223,0000,4174,4007,0701,0200,0000,0002	; 5165		MEM_Q
							; 5166	BLTGOT:	[BRX]-[AR],		;BELOW E?
							; 5167		3T,
U 3165, 1330,2113,0603,4174,4007,0521,4000,0000,0000	; 5168		SKIP DP0
							; 5169	=0	END BLT,		;NO--STOP BLT
U 1330, 1400,4221,0013,4170,4007,0700,0000,0000,0000	; 5170		J/DONE
U 1331, 3166,0111,0706,4174,4007,0700,0000,0000,0000	; 5171		[BRX]_[BRX]+1		;UPDATE DEST ADDRESS
							; 5172		VMA_[ARX]+1,
							; 5173		LOAD VMA,
							; 5174		PXCT BLT SRC,
							; 5175		START READ,		;YES--MOVE 1 MORE WORD
U 3166, 3163,0111,0704,4170,4007,0700,0200,0004,0712	; 5176		J/BLTLP
							; 5177	
							; 5178	;HERE TO CLEAN UP AFTER BLT PAGE FAILS
							; 5179	BLT-CLEANUP:
U 3167, 3170,3770,0303,4344,4007,0700,0000,0000,0000	; 5180		[AR]_[AR] SWAP		;PUT SRC IN LEFT HALF
							; 5181		[AR]_WORK[SV.BRX],
U 3170, 3171,3771,0003,7270,4007,0701,0000,0000,0214	; 5182		HOLD LEFT
							; 5183		AC_[AR],		;STORE THE AC AND RETURN
U 3171, 1100,3440,0303,0174,4007,0700,0400,0000,0000	; 5184		J/CLEANED
							; 5185	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 140
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			BLT							

							;;5186	.IF/UBABLT
							;;5187	.TOC	"UBABLT - BLT BYTES TO/FROM UNIBUS FORMAT"
							;;5188	
							;;5189	;THESE INSTRUCTION MOVE WORDS FROM BYTE TO UNIBUS AND UNIBUS TO BYTE
							;;5190	;FORMAT.  FORMATS ARE:
							;;5191	;
							;;5192	;BYTE FORMAT:
							;;5193	;
							;;5194	; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
							;;5195	; ;; BYTE 0 ;; BYTE 1 ;; BYTE 2 ;; BYTE 3 ;; 4 BITS ;;
							;;5196	; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
							;;5197	;
							;;5198	;UNIBUS FORMAT:
							;;5199	;
							;;5200	; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
							;;5201	; ;; 2 BITS ;; BYTE 1 ;; BYTE 0 ;; 2 BITS ;; BYTE 3 ;; BYTE 2 ;;
							;;5202	; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
							;;5203	;
							;;5204	
							;;5205	=0*
							;;5206	BLTX:	[BRX]_AC,		;FETCH THE AC (DEST IN RH)
							;;5207		CALL [SETBLT]		;DO THE REST OF THE SETUP
							;;5208		AC_[BR]			;STORE THE FINAL AC IN AC
							;;5209	
							;;5210	BLTXLP:	MEM READ,		;READ THE SOURCE WORD
							;;5211		Q_MEM,			;FROM MEMORY
							;;5212		B DISP			;SKIP IF BLTUB (OPCODE 717)
							;;5213	=110	Q_Q*.5,			;BLTBU (OPCODE 716) - SHIFT RIGHT 1 BIT
							;;5214		J/BLTBU1		;CONTINUE INSTRUCTION
							;;5215	
							;;5216		AD/D.AND.Q,DBUS/DBM,	;BLTUB - MASK LOW BYTES, SHIFT LEFT
							;;5217		DBM/#,#/377,DEST/AD*2,B/T1	;AND STORE RESULT
							;;5218	=00	FE_S#,S#/1767,		;-9 MORE BITS TO PUT LOW BYTE OF LH
							;;5219		CALL [T1LSH]		; IN TOP OF LH SHIFT LEFT
							;;5220	=01	FE_S#,S#/1772,		;-6 BITS TO PUT HI BYTE TO RIGHT
							;;5221		CALL [Q_RSH]		; OF LOW BYTE.  
							;;5222	=11	Q_Q.AND.#,#/001774	;KEEP ONLY HI BYTES
							;;5223	=
							;;5224		AD/A.OR.Q,A/T1,DEST/AD,	;MERGE PAIRS OF BYTES. NOW SWAPPED,
							;;5225		B/T1			;BUT STILL IN HALF-WORDS
							;;5226		AD/57,RSRC/0A,A/T1,	;CLEAR LH OF Q WHILE LOADING
							;;5227		DEST/Q_AD		;RH WITH LOW WORD
							;;5228		Q_Q*2			;SHIFT LOW WORD ACROSS 1/2 WORD
							;;5229		Q_Q*2			;AND INTO FINAL POSITION
							;;5230		[T1]_[T1].AND.# CLR RH,	;CLEAR ALL BUT HIGH 16-BIT WORD
							;;5231		#/777774,J/BLTXV	;FROM T1 AND CONTINUE
							;;5232	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 141
; SIMPLE.MIC[7,3]	16:49 11-NOV-1985			BLT							

							;;5233	BLTBU1:	Q_Q*.5			;NOW IN 1/2 WORDS
							;;5234		Q_Q*.5,HOLD LEFT	;INSERT A NULL BIT IN RH
							;;5235		Q_Q*.5,HOLD LEFT	;ONE MORE - NOW IN HALF WORDS
							;;5236		AD/D.AND.Q,DBUS/DBM,	;BUT NOT SWAPPED.  COPY RIGHT BYTE
							;;5237		DBM/#,#/377,DEST/AD*2,B/T1	;TO T1 AND SHIFT LEFT 1 POSITION
							;;5238	=00	FE_S#,S#/1771,		;-7 BITS MORE
							;;5239		CALL [T1LSH]		;TO FINAL RESTING PLACE
							;;5240	=01	FE_S#,S#/1770,		;-8. LEFT BYTES MOVE RIGHT
							;;5241		CALL [Q_RSH]		;TO FINAL RESTING PLACE
							;;5242	=11	Q_Q.AND.#,#/377		;WANT ONLY THE NEW BYTES
							;;5243	=
							;;5244	
							;;5245	BLTXV:	Q_[T1].OR.Q,		;MERGE RESULTS
							;;5246		J/BLTXW			;AND STUFF IN MEMORY
							;;5247	
							;;5248	T1LSH:	[T1]_[T1]*2,SHIFT,RETURN [1]
							;;5249	Q_RSH:	Q_Q*.5,SHIFT,RETURN [2]
							;;5250	
							;;5251	BLTXW:	VMA_[BRX],START WRITE,	;DEST TO VMA
							;;5252		PXCT BLT DEST
							;;5253		MEM WRITE,MEM_Q		;STORE
							;;5254		[BRX]-[AR],3T,SKIP DP0	;DONE?
							;;5255	=0	END BLT,J/DONE		;YES
							;;5256		[BRX]_[BRX]+1		;NO, INC DEST
							;;5257		VMA_[ARX]+1,LOAD VMA,	; AND SOURCE (LOADING VMA)
							;;5258		PXCT BLT SRC,START READ,;START UP MEMORY
							;;5259		J/BLTXLP		;AND CONTINUE WITH NEXT WORD
							; 5260	.ENDIF/UBABLT
							; 5261	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 142
; FLT.MIC[7,3]	01:46 20-MAR-1981				FLOATING POINT -- FAD, FSB				

							; 5262	.TOC	"FLOATING POINT -- FAD, FSB"
							; 5263	
							; 5264		.DCODE
D 0140, 0701,1577,1100					; 5265	140:	FL-R,	FL-AC,		J/FAD
D 0142, 0702,1577,1700					; 5266	142:	FL-RW,	FL-MEM,		J/FAD
D 0143, 0703,1577,1700					; 5267		FL-RW,	FL-BOTH,	J/FAD
D 0144, 0711,1577,1100					; 5268		FL-R,	FL-AC, ROUND,	J/FAD
D 0145, 0611,1577,0100					; 5269		FL-I,	FL-AC, ROUND,	J/FAD
D 0146, 0712,1577,1700					; 5270		FL-RW,	FL-MEM, ROUND,	J/FAD
D 0147, 0713,1577,1700					; 5271		FL-RW,	FL-BOTH, ROUND,	J/FAD
							; 5272	
D 0150, 0701,1576,1100					; 5273	150:	FL-R,	FL-AC,		J/FSB
D 0152, 0702,1576,1700					; 5274	152:	FL-RW,	FL-MEM,		J/FSB
D 0153, 0703,1576,1700					; 5275		FL-RW,	FL-BOTH,	J/FSB
D 0154, 0711,1576,1100					; 5276		FL-R,	FL-AC, ROUND,	J/FSB
D 0155, 0611,1576,0100					; 5277		FL-I,	FL-AC, ROUND,	J/FSB
D 0156, 0712,1576,1700					; 5278		FL-RW,	FL-MEM, ROUND,	J/FSB
D 0157, 0713,1576,1700					; 5279		FL-RW,	FL-BOTH, ROUND,	J/FSB
							; 5280		.UCODE
							; 5281	
							; 5282	;BOTH FAD & FSB ARE ENTERED WITH THE MEMORY OPERAND IN AR
							; 5283	; SIGN SMEARED. THE EXPONENT IN BOTH SC AND FE.
							; 5284	1576:
U 1576, 1577,2441,0303,4174,4007,0700,4000,0000,0000	; 5285	FSB:	[AR]_-[AR]		;MAKE MEMOP NEGATIVE
							; 5286	
							; 5287	1577:
U 1577, 0670,3771,0005,0276,6006,7701,2000,0020,2000	; 5288	FAD:	[BR]_AC, SC_SC-EXP-1, 3T, SCAD DISP
							; 5289	=0*
U 0670, 1334,3333,0005,4174,4007,0520,0000,0000,0000	; 5290	FAS1:	READ [BR], SKIP DP0, J/FAS2	;BR .LE. AR
U 0672, 3172,3441,0304,4174,4007,0700,0000,0000,0000	; 5291		[ARX]_[AR]		;SWAP AR AND BR
U 3172, 3173,3441,0503,4174,4007,0700,2000,0041,2000	; 5292		[AR]_[BR], SC_EXP
U 3173, 3174,3441,0405,4174,4007,0700,2000,0020,0000	; 5293		[BR]_[ARX], SC_SC-FE-1	;NUMBER OF SHIFT STEPS
U 3174, 1332,3333,0003,4174,4007,0520,1000,0041,2000	; 5294		READ [AR], FE_EXP, 2T, SKIP DP0
U 1332, 3175,4551,0303,4374,0007,0700,0000,0000,0777	; 5295	=0	[AR]_+SIGN, J/FAS3
U 1333, 3175,3551,0303,4374,0007,0700,0000,0077,7000	; 5296		[AR]_-SIGN, J/FAS3
							; 5297	
							; 5298	=0	;SIGN SMEAR BR AND UNNORMALIZE
U 1334, 3175,4551,0505,4374,0007,0700,0000,0000,0777	; 5299	FAS2:	[BR]_+SIGN, J/FAS3
U 1335, 3175,3551,0505,4374,0007,0700,0000,0077,7000	; 5300		[BR]_-SIGN, J/FAS3
							; 5301	
U 3175, 1336,4222,0000,4174,4007,0630,2000,0060,0000	; 5302	FAS3:	Q_0, STEP SC
							; 5303	=0
U 1336, 1336,3446,0505,4174,4047,0630,2000,0060,0000	; 5304	FAS4:	[BR]_[BR]*.5 LONG, STEP SC, ASHC, J/FAS4
U 1337, 0420,0111,0503,4174,4003,4701,0000,0000,0000	; 5305		[AR]_[AR]+[BR], NORM DISP, J/SNORM
							; 5306	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 143
; FLT.MIC[7,3]	01:46 20-MAR-1981				FLAOTING POINT -- FMP					

							; 5307	.TOC	"FLAOTING POINT -- FMP"
							; 5308	
							; 5309		.DCODE
D 0160, 0701,1570,1100					; 5310	160:	FL-R,	FL-AC,		J/FMP
D 0162, 0702,1570,1700					; 5311	162:	FL-RW,	FL-MEM,		J/FMP
D 0163, 0703,1570,1700					; 5312		FL-RW,	FL-BOTH,	J/FMP
							; 5313	
D 0164, 0711,1570,1100					; 5314		FL-R,	FL-AC, ROUND,	J/FMP
D 0165, 0611,1570,0100					; 5315		FL-I,	FL-AC, ROUND,	J/FMP
D 0166, 0712,1570,1700					; 5316		FL-RW,	FL-MEM, ROUND,	J/FMP
D 0167, 0713,1570,1700					; 5317		FL-RW,	FL-BOTH, ROUND,	J/FMP
							; 5318		.UCODE
							; 5319	
							; 5320	1570:
							; 5321	FMP:	[BRX]_AC,		;GET AC
							; 5322		FE_SC+EXP, 3T,		;EXPONENT OF ANSWER
U 1570, 1340,3771,0006,0276,6007,0521,1000,0040,2000	; 5323		SKIP DP0		;GET READY TO SMEAR SIGN
U 1340, 3176,4551,0606,4374,0007,0700,0000,0000,0777	; 5324	=0	[BRX]_+SIGN, J/FMP1	;POSITIVE
U 1341, 3176,3551,0606,4374,0007,0700,0000,0077,7000	; 5325		[BRX]_-SIGN, J/FMP1	;NEGATIVE
U 3176, 0163,3442,0300,4174,4007,0700,2000,0071,0033	; 5326	FMP1:	Q_[AR], SC_27.		;GET MEMORY OPERAND
							; 5327	=01*	[BRX]_[BRX]*.5 LONG,	;SHIFT RIGHT
U 0163, 3000,3446,0606,4174,4007,0700,0010,0000,0000	; 5328		CALL [MULSUB]		;MULTIPLY
							; 5329		Q_Q.AND.#, #/777000,	;WE ONLY COMPUTED
U 0167, 3177,4662,0000,4370,4007,0700,0000,0077,7000	; 5330		HOLD LEFT		; 27 BITS
U 3177, 3200,3441,0403,4174,4007,0700,1000,0041,0002	; 5331		[AR]_[ARX], FE_FE+2	;SET SHIFT PATHS
							; 5332		[AR]_[AR]*.5 LONG,	;SHIFT OVER
							; 5333		FE_FE-200,		;ADJUST EXPONENT
U 3200, 0420,3446,0303,4174,4003,4701,1000,0041,1600	; 5334		NORM DISP, J/SNORM	;NORMALIZE & EXIT
							; 5335	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 144
; FLT.MIC[7,3]	01:46 20-MAR-1981				FLOATING POINT -- FDV					

							; 5336	.TOC	"FLOATING POINT -- FDV"
							; 5337	
							; 5338		.DCODE
D 0170, 0701,1574,1100					; 5339	170:	FL-R,	FL-AC,		J/FDV
D 0172, 0702,1574,1700					; 5340	172:	FL-RW,	FL-MEM,		J/FDV
D 0173, 0703,1574,1700					; 5341		FL-RW,	FL-BOTH,	J/FDV
							; 5342	
D 0174, 0711,1574,1100					; 5343		FL-R,	FL-AC, ROUND,	J/FDV
D 0175, 0611,1574,0100					; 5344		FL-I,	FL-AC, ROUND,	J/FDV
D 0176, 0712,1574,1700					; 5345		FL-RW,	FL-MEM, ROUND,	J/FDV
D 0177, 0713,1574,1700					; 5346		FL-RW,	FL-BOTH, ROUND,	J/FDV
							; 5347		.UCODE
							; 5348	
							; 5349	
							; 5350	1574:
U 1574, 1342,3441,0305,0174,4007,0621,0000,0000,0000	; 5351	FDV:	[BR]_[AR], SKIP AD.EQ.0, AC	;COPY DIVSOR SEE IF 0
							; 5352	=0
							; 5353		[AR]_AC, FE_SC-EXP, SKIP DP0,	;GET AC & COMPUTE NEW
U 1342, 1344,3771,0003,0276,6007,0520,1000,0030,2000	; 5354			J/FDV0			; EXPONENT
U 1343, 0555,4443,0000,4174,4467,0700,0000,0071,1000	; 5355		FL NO DIVIDE			;DIVIDE BY ZERO
							; 5356	=0
U 1344, 3201,4551,0303,4374,0007,0700,0000,0000,0777	; 5357	FDV0:	[AR]_+SIGN, J/FDV1
U 1345, 3202,3551,0303,4374,0007,0700,0000,0077,7000	; 5358		[AR]_-SIGN, J/FDV2
U 3201, 3203,3441,0304,4174,4007,0700,1000,0031,0200	; 5359	FDV1:	[ARX]_[AR],FE_-FE+200,J/FDV3	;COMPUTE 2*DVND
U 3202, 3203,2441,0304,4174,4007,0700,5000,0031,0200	; 5360	FDV2:	[ARX]_-[AR],FE_-FE+200,J/FDV3	;ABSOLUTE VALUE
U 3203, 1346,3445,0506,4174,4007,0520,0000,0000,0000	; 5361	FDV3:	[BRX]_[BR]*2, SKIP DP0	;ABSOLUTE VALUE
							; 5362	=0
U 1346, 1350,2113,0406,4174,4007,0311,4000,0000,0000	; 5363	FDV4:	[ARX]-[BRX], SKIP CRY0, 3T, J/FDV5	;FLOATING NO DIV?
U 1347, 1346,2445,0506,4174,4007,0700,4000,0000,0000	; 5364		[BRX]_-[BR]*2, J/FDV4		;FORCE ABSOLUTE VALUE
							; 5365	=0
U 1350, 1352,3447,0606,4174,4007,0700,0000,0000,0000	; 5366	FDV5:	[BRX]_[BRX]*.5, J/FDV6		;SHIFT BACK ARX
U 1351, 0555,4443,0000,4174,4467,0700,0000,0071,1000	; 5367		FL NO DIVIDE			;UNNORMALIZED INPUT
							; 5368	=0
							; 5369	FDV6:	[AR]_[AR]*2,			;DO NOT DROP A BIT
U 1352, 3665,3445,0303,4174,4007,0700,0010,0000,0000	; 5370		CALL [SBRL]			;AT FDV7+1
U 1353, 0144,2113,0604,4174,4007,0421,4000,0000,0000	; 5371		[BRX]-[ARX], SKIP AD.LE.0	;IS ANSWER .LE. 1?
							; 5372	=00100
U 0144, 3043,4222,0000,4174,4007,0700,2010,0071,0033	; 5373	FDV7:	Q_0, SC_27., CALL [DIVSGN]	;DIVIDE
U 0145, 0144,3447,0303,4174,4007,0700,1000,0041,0001	; 5374	=00101	[AR]_[AR]*.5, FE_FE+1, J/FDV7	;SCALE DV'END
							; 5375	=01100
U 0154, 3204,3227,0003,4174,4007,0700,0000,0000,0000	; 5376	FDV8:	[AR]_Q*.5, J/FDV9		;PUT ANSWER IN AR
							; 5377	=01101	READ [AR], SKIP AD.EQ.0,	;-VE ANSWER, LOOK AT RMDR
U 0155, 2054,3333,0003,4174,4007,0621,0010,0000,0000	; 5378		CALL [SETSN]			; SEE HOW TO NEGATE
							; 5379	=01110	READ [AR], SKIP AD.EQ.0,	;-VE ANSWER, LOOK AT RMDR
U 0156, 2054,3333,0003,4174,4007,0621,0010,0000,0000	; 5380		CALL [SETSN]			; SEE HOW TO NEGATE
U 0157, 3204,3227,0003,4174,4007,0700,0000,0000,0000	; 5381	=01111	[AR]_Q*.5, J/FDV9		;PUT ANSWER IN AR
U 0177, 3204,2227,0003,4174,4007,0700,4000,0000,0000	; 5382	=11111	[AR]_-Q*.5, J/FDV9		;ZERO RMDR
							; 5383	
U 3204, 1363,4222,0000,4174,4007,0700,0000,0000,0000	; 5384	FDV9:	Q_0, J/SNORM0			;GO NORMALIZE
							; 5385	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 145
; FLT.MIC[7,3]	01:46 20-MAR-1981				FLOATING POINT -- FLTR, FSC				

							; 5386	.TOC	"FLOATING POINT -- FLTR, FSC"
							; 5387	
							; 5388		.DCODE
D 0127, 0011,1616,1100					; 5389	127:	R,	FL-AC,ROUND,	J/FLTR
D 0132, 0001,1621,2100					; 5390	132:	I,	FL-AC,		J/FSC
							; 5391		.UCODE
							; 5392	
							; 5393	1616:
U 1616, 1354,4553,0300,4374,4007,0321,0000,0077,7000	; 5394	FLTR:	[AR].AND.#, #/777000, 3T, SKIP ADL.EQ.0 ;SMALL POS NUMBER?
U 1354, 1356,2441,0305,4174,4007,0521,4000,0000,0000	; 5395	=0	[BR]_-[AR], SKIP DP0, 3T, J/FLTR1	;NO--SEE IF MINUS
U 1355, 1363,4222,0000,4174,4007,0700,1000,0071,0233	; 5396		Q_0, FE_S#, S#/233, J/SNORM0	;FITS IN 27 BITS
							; 5397	=0
							; 5398	FLTR1:	[BR].AND.#, #/777000, 3T,
U 1356, 1360,4553,0500,4374,4007,0321,0000,0077,7000	; 5399			SKIP ADL.EQ.0, J/FLTR1A	;SMALL NEGATIVE NUMBER
U 1357, 3205,4222,0000,4174,4007,0700,1000,0071,0244	; 5400		Q_0, FE_S#, S#/244, J/FLTR2	;LARGE POS NUMBER
							; 5401	=0
U 1360, 3205,4222,0000,4174,4007,0700,1000,0071,0244	; 5402	FLTR1A:	Q_0, FE_S#, S#/244, J/FLTR2	;BIG NUMBER
U 1361, 1363,4222,0000,4174,4007,0700,1000,0071,0233	; 5403		Q_0, FE_S#, S#/233, J/SNORM0	;FITS IN 27 BITS
							; 5404	;AT THIS POINT WE KNOW THE NUMBER TAKES MORE THAN 27 BITS. WE JUST
							; 5405	; SHIFT 8 PLACES RIGHT AND NORMALIZE. WE COULD BE MORE CLEVER BUT
							; 5406	; THIS IS THE RARE CASE ANYWAY.
U 3205, 1362,3446,0303,4174,4047,0700,2000,0071,0006	; 5407	FLTR2:	[AR]_[AR]*.5 LONG, ASHC, SC_6	;SHOVE OVER TO THE RIGHT
							; 5408	=0
							; 5409	FLTR3:	[AR]_[AR]*.5 LONG, ASHC, 	;SHIFT RIGHT 9 PLACES
U 1362, 1362,3446,0303,4174,4047,0630,2000,0060,0000	; 5410			STEP SC, J/FLTR3	; SO IT WILL FIT
U 1363, 0420,3333,0003,4174,4003,4701,0000,0000,0000	; 5411	SNORM0:	READ [AR], NORM DISP, J/SNORM	;NORMALIZE ANSWER
							; 5412	
							; 5413	
							; 5414	1621:
U 1621, 3206,3333,0003,4174,4007,0700,2000,0041,4000	; 5415	FSC:	READ [AR], SC_SHIFT
U 3206, 3207,4222,0000,0174,4007,0700,0000,0000,0000	; 5416		Q_0, AC				;DON'T SHIFT IN JUNK
U 3207, 1364,3771,0003,0276,6007,0520,1000,0040,2000	; 5417		[AR]_AC, FE_SC+EXP, SKIP DP0	;SIGN SMEAR
U 1364, 1363,4551,0303,4374,0007,0700,0000,0000,0777	; 5418	=0	[AR]_+SIGN, J/SNORM0
U 1365, 1363,3551,0303,4374,0007,0700,0000,0077,7000	; 5419		[AR]_-SIGN, J/SNORM0
							; 5420	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 146
; FLT.MIC[7,3]	01:46 20-MAR-1981				FLOATING POINT -- FIX AND FIXR				

							; 5421	.TOC	"FLOATING POINT -- FIX AND FIXR"
							; 5422	
							; 5423		.DCODE
D 0122, 0701,1626,1100					; 5424	122:	FL-R,	FL-AC,		J/FIX
D 0126, 0711,1626,1100					; 5425	126:	FL-R,	FL-AC,ROUND,	J/FIX
							; 5426		.UCODE
							; 5427	
							; 5428	1626:
							; 5429	FIX:	Q_0, SCAD/A+B, SCADA/S#,	;CLEAR Q, SEE IF
							; 5430			S#/1534, SCADB/FE, 3T,	; ANSWER FITS IN
U 1626, 0674,4222,0000,4174,4006,7701,0000,0041,1534	; 5431			SCAD DISP		; 35 BITS.
U 0674, 0555,4443,0000,4174,4467,0700,0000,0041,1000	; 5432	=0*	SET AROV, J/NIDISP		;TOO BIG
U 0676, 0720,4443,0000,4174,4006,7701,2000,0041,1544	; 5433		SC_FE+S#, S#/1544, 3T, SCAD DISP ;NEED TO MOVE LEFT?
U 0720, 1370,4443,0000,4174,4007,0630,2000,0060,0000	; 5434	=0*	STEP SC, J/FIXL
U 0722, 3210,4443,0000,4174,4007,0700,2000,0031,0232	; 5435		SC_S#-FE, S#/232		;NUMBER OF PLACES TO SHIFT
							; 5436						; RIGHT
U 3210, 1366,4443,0000,4174,4007,0630,2000,0060,0000	; 5437		STEP SC				;ALREADY THERE
							; 5438	=0
							; 5439	FIXR:	[AR]_[AR]*.5 LONG, ASHC,	;SHIFT BINARY POINT
U 1366, 1366,3446,0303,4174,4047,0630,2000,0060,0000	; 5440			STEP SC, J/FIXR		; TO BIT 35.5
U 1367, 0063,3447,0705,4174,4003,7700,0000,0000,0000	; 5441		[BR]_[ONE]*.5, B DISP, J/FIXX	;WHICH KIND OF FIX?
							; 5442	
							; 5443	=0
U 1370, 1370,3445,0303,4174,4007,0630,2000,0060,0000	; 5444	FIXL:	[AR]_[AR]*2, STEP SC, J/FIXL	;SHIFT LEFT
U 1371, 0100,3440,0303,0174,4156,4700,0400,0000,0000	; 5445		AC_[AR], NEXT INST		;WE ARE NOW DONE
							; 5446	
							; 5447	=0*11
U 0063, 1372,3333,0003,4174,4007,0520,0000,0000,0000	; 5448	FIXX:	READ [AR], SKIP DP0, J/FIXT	;FIX--SEE IF MINUS
U 0073, 1514,0111,0503,4174,4003,7700,0200,0003,0001	; 5449	FIXX1:	[AR]_[AR]+[BR], FL-EXIT		;FIXR--ROUND UP
							; 5450	=0
U 1372, 0100,3440,0303,0174,4156,4700,0400,0000,0000	; 5451	FIXT:	AC_[AR], NEXT INST		;FIX & +, TRUNCATE
U 1373, 1374,3223,0000,4174,4007,0621,0000,0000,0000	; 5452		READ Q, SKIP AD.EQ.0		;NEGATIVE--ANY FRACTION?
U 1374, 1514,0111,0703,4174,4003,7700,0200,0003,0001	; 5453	=0	[AR]_[AR]+1, FL-EXIT		;YES--ROUND UP
							; 5454		[BR]_.NOT.[MASK],		;MAYBE--GENERATE .75
U 1375, 0073,7441,1205,4174,4007,0700,0000,0000,0000	; 5455		J/FIXX1				;ROUND UP IF BIT 36 OR
							; 5456						; 37 SET
							; 5457	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 147
; FLT.MIC[7,3]	01:46 20-MAR-1981				FLOATING POINT -- SINGLE PRECISION NORMALIZE		

							; 5458	.TOC	"FLOATING POINT -- SINGLE PRECISION NORMALIZE"
							; 5459	
							; 5460	;NORMALIZE DISPATCH IS A 9-WAY DISPATCH. THE HARDWARE LOOKS AT
							; 5461	; 4 SIGNALS: DP=0, DP BIT 8, DP BIT 9, DP BIT -2. THE 9 CASES
							; 5462	; ARE:
							; 5463	
							; 5464	;	DP=0	DP08	DP09	DP00	ACTION TO TAKE
							; 5465	;	0	0	0	0	SHIFT LEFT
							; 5466	;
							; 5467	;	0	0	0	1	NEGATE AND RETRY
							; 5468	;
							; 5469	;	0	0	1	0	ALL DONE
							; 5470	;
							; 5471	;	0	0	1	1	NEGATE AND RETRY
							; 5472	;
							; 5473	;	0	1	0	0	SHIFT RIGHT
							; 5474	;
							; 5475	;	0	1	0	1	NEGATE AND RETRY
							; 5476	;
							; 5477	;	0	1	1	0	SHIFT RIGHT
							; 5478	;
							; 5479	;	0	1	1	1	NEGATE AND RETRY
							; 5480	;
							; 5481	;	1	-	-	-	LOOK AT Q BITS
							; 5482	
							; 5483	;ENTER HERE WITH UNNORMALIZED NUMBER IN AR!Q. FE HOLDS THE NEW
							; 5484	; EXPONENT. CALL WITH NORM DISP
							; 5485	=0000		;9-WAY DISPATCH
U 0420, 0420,3444,0303,4174,4063,4701,1000,0041,1777	; 5486	SNORM:	[AR]_[AR]*2 LONG, DIV, FE_FE-1, NORM DISP, J/SNORM
U 0421, 2000,2222,0000,4174,4007,0311,4000,0000,0000	; 5487		Q_-Q, SKIP CRY0, 3T, J/SNNEG
U 0422, 0262,3333,0003,4174,4003,4701,0010,0000,0000	; 5488		READ [AR], NORM DISP, CALL [SROUND]
U 0423, 2000,2222,0000,4174,4007,0311,4000,0000,0000	; 5489		Q_-Q, SKIP CRY0, 3T, J/SNNEG
U 0424, 0262,3447,0303,4174,4007,0700,1010,0041,0001	; 5490		[AR]_[AR]*.5, FE_FE+1, CALL [SROUND]
U 0425, 2000,2222,0000,4174,4007,0311,4000,0000,0000	; 5491		Q_-Q, SKIP CRY0, 3T, J/SNNEG
U 0426, 0262,3447,0303,4174,4007,0700,1010,0041,0001	; 5492		[AR]_[AR]*.5, FE_FE+1, CALL [SROUND]
U 0427, 2000,2222,0000,4174,4007,0311,4000,0000,0000	; 5493		Q_-Q, SKIP CRY0, 3T, J/SNNEG
U 0430, 1376,3223,0000,4174,4007,0621,0000,0000,0000	; 5494		READ Q, SKIP AD.EQ.0, J/SNORM1
U 0436, 1377,3770,0303,4324,0457,0700,0000,0041,0000	; 5495	=1110	[AR]_EXP, J/FLEX
							; 5496	=
							; 5497	=0
U 1376, 0420,3444,0303,4174,4063,4701,1000,0041,1777	; 5498	SNORM1:	[AR]_[AR]*2 LONG, DIV, FE_FE-1, NORM DISP, J/SNORM
U 1377, 1514,4443,0000,4174,4003,7700,0200,0003,0001	; 5499	FLEX:	FL-EXIT
							; 5500	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 148
; FLT.MIC[7,3]	01:46 20-MAR-1981				FLOATING POINT -- SINGLE PRECISION NORMALIZE		

							; 5501	=0
U 2000, 0440,7441,0303,4174,4003,4701,0000,0000,0000	; 5502	SNNEG:	[AR]_.NOT.[AR], NORM DISP, J/SNNORM ;NEGATE HIGH WORD
							; 5503						; (NO CARRY)
U 2001, 0440,2441,0303,4174,4003,4701,4000,0000,0000	; 5504		[AR]_-[AR], NORM DISP, J/SNNORM	;NEGATE HIGH WORD (W/CARRY)
							; 5505	=0000
U 0440, 0440,3444,0303,4174,4063,4701,1000,0041,1777	; 5506	SNNORM:	[AR]_[AR]*2 LONG, DIV, FE_FE-1, NORM DISP, J/SNNORM
U 0442, 0262,3333,0003,4174,4003,4701,0010,0000,0000	; 5507	=0010	READ [AR], NORM DISP, CALL [SROUND]
U 0444, 0262,3447,0303,4174,4007,0700,1010,0041,0001	; 5508	=0100	[AR]_[AR]*.5, FE_FE+1, CALL [SROUND]
U 0446, 0262,3447,0303,4174,4007,0700,1010,0041,0001	; 5509	=0110	[AR]_[AR]*.5, FE_FE+1, CALL [SROUND]
U 0450, 0440,3444,0303,4174,4063,4701,1000,0041,1777	; 5510	=1000	[AR]_[AR]*2 LONG, DIV, FE_FE-1, NORM DISP, J/SNNORM
U 0456, 0327,3770,0303,4324,0453,7700,0000,0041,0000	; 5511	=1110	[AR]_EXP, B DISP
							; 5512	=
U 0327, 2002,4553,1300,4374,4007,0321,0000,0000,2000	; 5513	=0111	TL [FLG], FLG.SN/1, J/SNNOT
							; 5514		[AR]_[AR].AND.[MASK],	;CLEAR ANY LEFT OVER BITS
U 0337, 2005,4111,1203,4174,4007,0700,0000,0000,0000	; 5515		J/SNNOT1
							; 5516	=0
U 2002, 3211,7441,0303,4174,4007,0700,0000,0000,0000	; 5517	SNNOT:	[AR]_.NOT.[AR], J/SNNOT2
U 2003, 2004,3223,0000,4174,4007,0621,0000,0000,0000	; 5518		READ Q, SKIP AD.EQ.0
U 2004, 3211,7441,0303,4174,4007,0700,0000,0000,0000	; 5519	=0	[AR]_.NOT.[AR], J/SNNOT2
U 2005, 3211,2441,0303,4174,4007,0700,4000,0000,0000	; 5520	SNNOT1:	[AR]_-[AR], J/SNNOT2	;NORMAL NEGATE AND EXIT
U 3211, 1514,4221,0013,4174,4003,7700,0200,0003,0001	; 5521	SNNOT2:	[FLG]_0, FL-EXIT
							; 5522	
							; 5523	
							; 5524	
							; 5525	.TOC	"FLOATING POINT -- ROUND ANSWER"
							; 5526	
							; 5527	=*01*
U 0262, 0407,3447,0705,4174,4003,7700,0000,0000,0000	; 5528	SROUND:	[BR]_[ONE]*.5, B DISP, J/SRND1
U 0266, 0262,3447,0303,4174,4007,0700,1000,0041,0001	; 5529		[AR]_[AR]*.5, FE_FE+1, J/SROUND ;WE WENT TOO FAR
							; 5530	=0111
U 0407, 0016,4443,0000,4174,4004,1700,0000,0000,0000	; 5531	SRND1:	RETURN [16]			;NOT ROUNDING INSTRUCTION
U 0417, 0302,0111,0503,4174,4003,4701,0000,0000,0000	; 5532		[AR]_[AR]+[BR], NORM DISP
U 0302, 0016,4443,0000,4174,4004,1700,0000,0000,0000	; 5533	=*01*	RETURN [16]
U 0306, 0016,3447,0303,4174,4004,1700,1000,0041,0001	; 5534		[AR]_[AR]*.5, FE_FE+1, RETURN [16]
							; 5535	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 149
; FLT.MIC[7,3]	01:46 20-MAR-1981				FLOATING POINT -- DFAD, DFSB				

							; 5536	.TOC	"FLOATING POINT -- DFAD, DFSB"
							; 5537	
							; 5538		.DCODE
D 0110, 1100,1637,1100					; 5539	110:	DBL FL-R,		J/DFAD
D 0111, 1100,1635,1100					; 5540	111:	DBL FL-R,		J/DFSB
							; 5541		.UCODE
							; 5542	
							; 5543	;ENTER FROM A-READ CODE WITH:
							; 5544	;FE/	EXP
							; 5545	;SC/	EXP
							; 5546	;AR/	C(E) SHIFT RIGHT 2 PLACES
							; 5547	;ARX/	C(E+1) SHIFTED RIGHT 1 PLACE
							; 5548	1635:
U 1635, 3212,2441,0404,4174,4007,0700,4000,0000,0000	; 5549	DFSB:	[ARX]_-[ARX]		;NEGATE LOW WORD
U 3212, 1637,2441,0303,4174,4007,0700,0040,0000,0000	; 5550		[AR]_-[AR]-.25, MULTI PREC/1
							; 5551	1637:
U 1637, 3213,4557,0006,1274,4007,0701,0000,0000,1441	; 5552	DFAD:	[BRX]_(AC[1].AND.[MAG])*.5, 3T ;GET LOW WORD
							; 5553		[BR]_AC*.5, 3T,		;GET AC AND START TO SHIFT
							; 5554		SC_SC-EXP-1,		;NUMBER OF PLACES TO SHIFT
U 3213, 2006,3777,0005,0274,4007,0521,2000,0020,2000	; 5555		SKIP DP0		;SEE WHAT SIGN
							; 5556	=0	[BR]_+SIGN*.5, 3T,	;SIGN SMEAR
U 2006, 2010,5547,0505,0374,4007,0631,0000,0077,7400	; 5557		AC, SKIP/SC, J/DFAS1	;SEE WHICH IS BIGGER
							; 5558		[BR]_-SIGN*.5, 3T,	;SIGN SMEAR
U 2007, 2010,3547,0505,0374,4007,0631,0000,0077,7400	; 5559		AC, SKIP/SC, J/DFAS1	;SEE WHICH IS BIGGER
							; 5560	=0
							; 5561	DFAS1:	Q_[BRX],		;AR IS BIGGER
U 2010, 2012,3442,0600,4174,4007,0700,0000,0000,0000	; 5562		J/DFAS2			;ADJUST BR!Q
							; 5563		[T0]_AC,		;BR IS BIGGER OR EQUAL
U 2011, 3215,3771,0016,0276,6007,0700,2000,0041,2000	; 5564		SC_EXP, 2T, J/DFAS3	;SET SC TO THAT EXPONENT
							; 5565	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 150
; FLT.MIC[7,3]	01:46 20-MAR-1981				FLOATING POINT -- DFAD, DFSB				

							; 5566	;HERE IF AR!ARX IS GREATER THAN BR!BRX
							; 5567	=0
U 2012, 0153,3441,0516,4174,4007,0700,0010,0000,0000	; 5568	DFAS2:	[T0]_[BR], CALL [DFADJ]	;ADJUST BR!Q
U 2013, 3214,3441,1605,4174,4007,0700,0000,0000,0000	; 5569		[BR]_[T0]		;PUT ANSWER BACK
U 3214, 3220,0002,0400,4174,4007,0700,0000,0000,0000	; 5570		Q_Q+[ARX], J/DFAS5	;ADD LOW WORDS
							; 5571	
							; 5572	;HERE IS BR!BRX IF GREATER THAN OR EQUAL TO AR!ARX
							; 5573	DFAS3:	Q_[ARX],		;SETUP TO SHIFT AR!ARX
U 3215, 3216,3442,0400,4174,4007,0700,2000,0020,0000	; 5574		SC_SC-FE-1		;COMPUTE # OF PLACES
U 3216, 2014,3333,0016,4174,4007,0700,1000,0041,2000	; 5575		READ [T0], FE_EXP	;EXPONENT OF ANSWER
U 2014, 0153,3441,0316,4174,4007,0700,0010,0000,0000	; 5576	=0	[T0]_[AR], CALL [DFADJ]	;ADJUST AR!Q
U 2015, 3217,3441,1603,4174,4007,0700,0000,0000,0000	; 5577		[AR]_[T0]		;PUT ANSWER BACK
U 3217, 3220,0002,0600,4174,4007,0700,0000,0000,0000	; 5578		Q_Q+[BRX], J/DFAS5	;ADD LOW WORDS
							; 5579	
							; 5580	;BIT DIDDLE TO GET THE ANSWER (INCLUDING 2 GUARD BITS) INTO
							; 5581	; AR!Q
							; 5582	DFAS5:	[AR]_([AR]+[BR])*.5 LONG, ;ADD HIGH WORDS
U 3220, 3221,0116,0503,4174,4047,0700,0040,0000,0000	; 5583		MULTI PREC/1, ASHC	;INJECT SAVED CRY2
							; 5584		[AR]_[AR]*2 LONG,	;SHIFT BACK LEFT
U 3221, 0433,3444,0303,4174,4046,2700,0000,0000,0000	; 5585		ASHC, MUL DISP		;SEE IF WE LOST A 1
							; 5586	=1011
U 0433, 3222,5111,1217,4174,4007,0700,0000,0000,0000	; 5587	DFAS6:	[T1]_[T1].AND.NOT.[MASK], J/DFAS7
U 0437, 0433,0222,0000,4174,4007,0700,4000,0000,0000	; 5588		Q_Q+.25, J/DFAS6
							; 5589	DFAS7:	[AR]_[AR]*2 LONG, ASHC,	;PUT IN GUARD BITS
U 3222, 3223,3444,0303,4174,4047,0700,1000,0041,1777	; 5590		FE_FE-1
							; 5591		[AR]_[AR]*2 LONG, ASHC,
U 3223, 3224,3444,0303,4174,4047,0700,1000,0041,1777	; 5592		FE_FE-1
U 3224, 2027,3002,1700,4170,4007,0700,0000,0000,0000	; 5593		Q_[T1].OR.Q, HOLD LEFT, J/DNORM0
							; 5594	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 151
; FLT.MIC[7,3]	01:46 20-MAR-1981				FLOATING POINT -- DFAD, DFSB				

							; 5595	;SUBROUTINE TO ADJUST NUMBER IN T0!Q
							; 5596	;RETURNS 1 WITH
							; 5597	;	T0!Q ADJUSTED
							; 5598	;	FLG.SN=1 IF WE SHIFTED OUT ANY 1 BITS (STICKY BIT)
							; 5599	;	T1 HAS Q TWO STEPS PRIOR TO BEING DONE
							; 5600	DFADJ	"STEP SC, ASHC, MUL DISP"
							; 5601	
							; 5602	=0**11
							; 5603	DFADJ:	[T0]_[T0]*2 LONG, DIV,	;MOVE EVERYTHING 2 PLACES
U 0153, 2055,3444,1616,4174,4067,0700,0010,0000,0000	; 5604		CALL [CLRSN]
U 0173, 3225,3444,1616,4174,4067,0700,0000,0000,0000	; 5605		[T0]_[T0]*2 LONG, DIV
U 3225, 3226,3444,1616,4174,4067,0700,0000,0000,0000	; 5606		[T0]_[T0]*2 LONG, DIV
							; 5607		[T0]_[T0]*.5 LONG, ASHC, ;SHIFT AT LEAST 1 PLACE
U 3226, 0472,3446,1616,4174,4047,0630,2000,0060,0000	; 5608		STEP SC
							; 5609	=1010
							; 5610	DFADJ1:	[T0]_[T0]*.5 LONG,	;UNNORMALIZE T0!Q
U 0472, 0472,3446,1616,4174,4046,2630,2000,0060,0000	; 5611		DFADJ, J/DFADJ1		;LOOP TILL DONE
							; 5612	DFADJ2:	[T1]_Q,			;SAVE GUARD BITS
U 0473, 0453,3221,0017,4174,4006,2700,0000,0000,0000	; 5613		MUL DISP, J/DFADJ5	;LOOK AT LAST BIT
U 0476, 2016,3551,1313,4374,0007,0700,0000,0000,2000	; 5614		[FLG]_[FLG].OR.#, FLG.SN/1, HOLD RIGHT, J/DFADJ3
U 0477, 2017,3551,1313,4374,0007,0700,0000,0000,2000	; 5615		[FLG]_[FLG].OR.#, FLG.SN/1, HOLD RIGHT, J/DFADJ4
							; 5616	
							; 5617	=0
U 2016, 2016,3446,1616,4174,4047,0630,2000,0060,0000	; 5618	DFADJ3:	[T0]_[T0]*.5 LONG, ASHC, STEP SC, J/DFADJ3
U 2017, 0453,3221,0017,4174,4007,0700,0000,0000,0000	; 5619	DFADJ4:	[T1]_Q			;SAVE 2 GUARD BITS
							; 5620	=1011
U 0453, 3227,3446,1616,4174,4047,0700,0000,0000,0000	; 5621	DFADJ5:	[T0]_[T0]*.5 LONG, ASHC, J/DFADJ6
U 0457, 0453,3551,1313,4374,0007,0700,0000,0000,2000	; 5622		[FLG]_[FLG].OR.#, FLG.SN/1, HOLD RIGHT, J/DFADJ5
U 3227, 0001,3446,1616,4174,4044,1700,0000,0000,0000	; 5623	DFADJ6:	[T0]_[T0]*.5 LONG, ASHC, RETURN [1]
							; 5624	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 152
; FLT.MIC[7,3]	01:46 20-MAR-1981				FLOATING POINT -- DFMP					

							; 5625	.TOC	"FLOATING POINT -- DFMP"
							; 5626	
							; 5627		.DCODE
D 0112, 1105,1631,1100					; 5628	112:	DBL FL-R,	DAC,	J/DFMP
							; 5629		.UCODE
							; 5630	
							; 5631	;SAME ENTRY CONDITIONS AS DFAD/DFSB
							; 5632	1631:
U 1631, 2020,3442,0400,4174,4007,0700,2000,0071,0006	; 5633	DFMP:	Q_[ARX], SC_6		;SHIFT MEM OP 8 PLACES
							; 5634	=0
							; 5635	DFMP1:	[AR]_[AR]*2 LONG, ASHC,	;SHIFT
U 2020, 2020,3444,0303,4174,4047,0630,2000,0060,0000	; 5636		STEP SC, J/DFMP1
U 2021, 3230,3446,1200,4174,4007,0700,0000,0000,0000	; 5637		Q_Q*.5
U 3230, 3231,4662,0000,4374,0007,0700,0000,0007,7777	; 5638		Q_Q.AND.#, #/077777, HOLD RIGHT
U 3231, 3232,3221,0005,4174,4007,0700,0000,0000,0000	; 5639		[BR]_Q			;COPY LOW WORD
							; 5640	;
							; 5641	; BRX * BR ==> C(E+1) * C(AC+1)
							; 5642	;
U 3232, 0623,4557,0006,1274,4007,0700,0000,0000,1441	; 5643		[BRX]_(AC[1].AND.[MAG])*.5 ;GET LOW AC
U 0623, 3001,3447,0606,4174,4007,0700,2010,0071,0043	; 5644	=0**	[BRX]_[BRX]*.5, SC_35., CALL [MULSB1]
							; 5645	;
							; 5646	; BRX * Q ==> C(E) * C(AC+1)
							; 5647	;
U 0627, 0730,3442,0300,4174,4007,0700,2000,0071,0043	; 5648		Q_[AR], SC_35. 		;GO MULT NEXT HUNK
U 0730, 3002,4443,0000,4174,4007,0700,0010,0000,0000	; 5649	=0**	CALL [MULTIPLY]
U 0734, 3233,3441,0416,4174,4007,0700,0000,0000,0000	; 5650		[T0]_[ARX]		;SAVE PRODUCT
U 3233, 3234,3227,0004,4174,4007,0700,2000,0011,0000	; 5651		[ARX]_Q*.5, SC_FE	;PUT IN NEXT STEP
							; 5652	;
							; 5653	; BRX * BR ==> C(AC) * C(E+1)
							; 5654	;
							; 5655		[BRX]_AC*.5,		;PREPARE TO DO HIGH HALF
							; 5656		FE_SC+EXP,		;EXPONENT ON ANSWER
U 3234, 2022,3777,0006,0274,4007,0521,1000,0040,2000	; 5657		SKIP DP0, 3T
U 2022, 0732,5547,0606,4374,4007,0701,0000,0077,7400	; 5658	=0	[BRX]_+SIGN*.5, 3T, J/DFMP2
U 2023, 0732,3547,0606,4374,4007,0701,0000,0077,7400	; 5659		[BRX]_-SIGN*.5, 3T
							; 5660	=0**
U 0732, 3002,3442,0500,4174,4007,0700,2010,0071,0043	; 5661	DFMP2:	Q_[BR], SC_35., CALL [MULTIPLY]	;GO MULTIPLY
U 0736, 3235,3221,0017,4174,4007,0700,0000,0000,0000	; 5662		[T1]_Q			;SAVE FOR ROUNDING
U 3235, 1012,0111,1604,4174,4007,0700,0000,0000,0000	; 5663		[ARX]_[ARX]+[T0]	;PREPARE FOR LAST MUL
							; 5664	;
							; 5665	; BRX * Q ==> C(AC) * C(E)
							; 5666	;
							; 5667	=0**	Q_[AR], SC_35., 	;DO THE LAST MULTIPLY
U 1012, 3002,3442,0300,4174,4007,0700,2010,0071,0043	; 5668		CALL [MULTIPLY]		; ..
							; 5669	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 153
; FLT.MIC[7,3]	01:46 20-MAR-1981				FLOATING POINT -- DFMP					

							; 5670	;OK, WE NOW HAVE THE PRODUCT IN ARX!Q!T1. ALL WE NEED TO DO
							; 5671	; IS SOME BIT DIDDLES TO GET EVERYTHING IN THE RIGHT PLACE
							; 5672		[AR]_[ARX]*.5 LONG,	;SHIFT THE ANSWER
U 1016, 0243,3446,0403,4174,4007,0700,1000,0041,1576	; 5673		FE_FE+S#, S#/1576	;CORRECT EXPONENT
							; 5674	=0**11	READ [T1], SKIP AD.EQ.0, ;SEE IF LOW ORDER 1
U 0243, 2054,3333,0017,4174,4007,0621,0010,0000,0000	; 5675		CALL [SETSN]		; BITS AROUND SOMEPLACE
U 0263, 3236,3444,0303,4174,4047,0700,0000,0000,0000	; 5676		[AR]_[AR]*2 LONG, ASHC	;SHIFT LEFT
U 3236, 3237,3447,0705,4174,4007,0700,0000,0000,0000	; 5677		[BR]_[ONE]*.5		;PLACE TO INSTERT BITS
U 3237, 2024,4553,1700,4374,4007,0321,0000,0020,0000	; 5678		TL [T1], #/200000	;ANYTHING TO INJECT?
U 2024, 2025,0002,0500,4174,4007,0700,0000,0000,0000	; 5679	=0	Q_Q+[BR]		;YES--PUT IT IN
U 2025, 3240,3444,0303,4174,4047,0700,0000,0000,0000	; 5680		[AR]_[AR]*2 LONG, ASHC	;MAKE ROOM FOR MORE
U 3240, 2026,4553,1700,4374,4007,0321,0000,0010,0000	; 5681		TL [T1], #/100000	;ANOTHER BIT NEEDED
U 2026, 2027,0002,0500,4174,4007,0700,0000,0000,0000	; 5682	=0	Q_Q+[BR]		;YES--PUT IN LAST BIT
							; 5683	DNORM0:	READ [AR], NORM DISP,	;SEE WHAT WE NEED TO DO
U 2027, 0520,3333,0003,4174,4003,4701,1000,0041,0002	; 5684		FE_FE+S#, S#/2, J/DNORM	;ADJUST FOR INITIAL SHIFTS
							; 5685	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 154
; FLT.MIC[7,3]	01:46 20-MAR-1981				FLOATING POINT -- DFDV					

							; 5686	.TOC	"FLOATING POINT -- DFDV"
							; 5687	
							; 5688		.DCODE
D 0113, 1105,1636,1100					; 5689	113:	DBL FL-R,	DAC,	J/DFDV
							; 5690		.UCODE
							; 5691	1636:
U 1636, 0132,3441,0406,4174,4007,0700,0000,0000,0000	; 5692	DFDV:	[BRX]_[ARX]		;COPY OPERAND (COULD SAVE TIME
							; 5693					; WITH SEPERATE A-READ FOR DFDV)
U 0132, 2055,4221,0017,4174,4007,0700,0010,0000,0000	; 5694	=1**10	[T1]_0, CALL [CLRSN]	;CLEAR FLAG
							; 5695		[BR]_[AR], SKIP AD.LE.0, ;SEE IF POSITIVE
U 0133, 2030,3441,0305,1174,4007,0421,0000,0000,1441	; 5696		AC[1]			;WARM UP RAM
							; 5697	=0
							; 5698	DFDV1:	[ARX]_(AC[1].AND.[MAG])*.5, ;POSITIVE--GET AC
U 2030, 3243,4557,0004,1274,4007,0700,0000,0000,1441	; 5699		J/DFDV2			; AND CONTINUE BELOW
U 2031, 3241,7441,1717,4174,4007,0700,0000,0000,0000	; 5700		[T1]_.NOT.[T1]		;DV'SOR NEGATIVE (OR ZERO)
U 3241, 3242,2441,0606,4174,4007,0700,4000,0000,0000	; 5701		[BRX]_-[BRX]		;NEGATE LOW WORD
							; 5702		AD/-B-.25, B/BR, DEST/AD, ;NEGATE HIGH WORD
							; 5703		MULTI PREC/1, 3T,	;ADDING IN CRY02
							; 5704		SKIP DP0, AC[1],	;SEE IF STILL NEGATIVE
U 3242, 2030,2331,0005,1174,4007,0521,0040,0000,1441	; 5705		J/DFDV1			; ..
							; 5706	DFDV2:	[AR]_AC*.5,		;GET AC AND SHIFT
							; 5707		FE_SC-EXP, 3T,		;COMPUTE NEW EXPONENT
U 3243, 2032,3777,0003,0274,4007,0521,1000,0030,2000	; 5708		SKIP DP0		;SEE IF NEGATIVE
U 2032, 2034,5547,0303,4374,4007,0701,0000,0077,7400	; 5709	=0	[AR]_+SIGN*.5, 3T, J/DFDV3	;POSITIVE
U 2033, 3244,7441,1717,4174,4007,0700,0000,0000,0000	; 5710		[T1]_.NOT.[T1]		;NEGATIVE OR ZERO
U 3244, 3245,3547,0303,4374,4007,0701,0000,0077,7400	; 5711		[AR]_-SIGN*.5, 3T	;SIGN SMEAR
U 3245, 3246,2442,0400,4174,4007,0700,4000,0000,0000	; 5712		Q_-[ARX]		;NEGATE OPERAND
							; 5713		[AR]_(-[AR]-.25)*.5 LONG, ;NEGATE HIGH WORD
							; 5714		MULTI PREC/1,		;USE SAVED CARRY
U 3246, 2035,2446,0303,4174,4047,0700,0040,0000,0000	; 5715		ASHC, J/DFDV4		;CONTINUE BELOW
							; 5716	=0
							; 5717	DFDV3:	Q_[ARX],		;COPY OPERAND
U 2034, 3042,3442,0400,4174,4007,0700,0010,0000,0000	; 5718		CALL [DDIVS]		;SHIFT OVER
U 2035, 2036,2113,0305,4174,4007,0521,4000,0000,0000	; 5719	DFDV4:	[AR]-[BR], 3T, SKIP DP0	;SEE IF OVERFLOW
U 2036, 0555,4443,0000,4174,4467,0700,0000,0071,1000	; 5720	=0	FL NO DIVIDE
U 2037, 0724,3221,0004,4174,4007,0700,0000,0000,0000	; 5721		[ARX]_Q			;START DIVISION
U 0724, 1264,4222,0000,4174,4007,0700,2010,0071,0032	; 5722	=0*	Q_0, SC_26., CALL [DBLDIV]
U 0726, 1054,3221,0016,4174,4007,0700,2000,0071,0043	; 5723		[T0]_Q, SC_35.
							; 5724	=0*	Q_Q.AND.NOT.[MAG],	;SEE IF ODD
							; 5725		SKIP AD.EQ.0,		;SKIP IF EVEN
U 1054, 1264,5002,0000,4174,4007,0621,0010,0000,0000	; 5726		CALL [DBLDIV]		;GO DIVIDE
U 1056, 3247,3446,1200,4174,4007,0700,0000,0000,0000	; 5727		Q_Q*.5			;MOVE ANSWER OVER
							; 5728	=
							; 5729		[T0]_[T0]*2 LONG, ASHC, ;DO FIRST NORM STEP
U 3247, 0513,3444,1616,4174,4046,2700,0000,0000,0000	; 5730		MUL DISP		; SEE IF A 1 FELL OUT
							; 5731	=1011
							; 5732	DFDV4A:	READ [T1], SKIP DP0,	;SHOULD RESULT BE NEGATIVE
							; 5733		FE_S#-FE, S#/202,	;CORRECT EXPONENT
U 0513, 2040,3333,0017,4174,4007,0520,1000,0031,0202	; 5734		J/DFDV4B		;LOOK BELOW
U 0517, 0513,0222,0000,4174,4007,0700,4000,0000,0000	; 5735		Q_Q+.25, J/DFDV4A	;PUT BACK THE BIT
							; 5736	=0
U 2040, 0520,3441,1603,4174,4003,4701,0000,0000,0000	; 5737	DFDV4B:	[AR]_[T0], NORM DISP, J/DNORM ;PLUS
U 2041, 0200,3441,1603,4174,4003,4701,0000,0000,0000	; 5738		[AR]_[T0], NORM DISP, J/DNNORM ;MINUS
							; 5739	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 155
; FLT.MIC[7,3]	01:46 20-MAR-1981				FLOATING POINT -- DOUBLE PRECISION NORMALIZE		

							; 5740	.TOC	"FLOATING POINT -- DOUBLE PRECISION NORMALIZE"
							; 5741	
							; 5742	;NORMALIZE AR!Q
							; 5743	;DNORM0:	READ [AR], NORM DISP,	;SEE WHAT WE NEED TO DO
							; 5744	;	FE_FE+S#, S#/2, J/DNORM	;ADJUST FOR INITIAL SHIFTS
							; 5745	=0000
							; 5746	DNORM:	[AR]_[AR]*2 LONG,	;SHIFT LEFT
							; 5747		FE_FE-1, ASHC,		;ADJUST EXPONENT
U 0520, 0520,3444,0303,4174,4043,4701,1000,0041,1777	; 5748		NORM DISP, J/DNORM	;TRY AGAIN
U 0521, 2044,4553,1300,4374,4007,0321,0000,0000,2000	; 5749		TL [FLG], FLG.SN/1, J/DNEG ;RESULT IS NEGATIVE
							; 5750		READ [AR], NORM DISP,	;SEE IF WE WENT TOO FAR
U 0522, 0322,3333,0003,4174,4003,4701,0010,0000,0000	; 5751		CALL [DROUND]		; AND ROUND ANSWER
U 0523, 2044,4553,1300,4374,4007,0321,0000,0000,2000	; 5752		TL [FLG], FLG.SN/1, J/DNEG ;RESULT IS NEGATIVE
							; 5753		[AR]_[AR]*.5 LONG, ASHC,
U 0524, 0322,3446,0303,4174,4047,0700,1010,0041,0001	; 5754		FE_FE+1, CALL [DROUND]
U 0525, 2044,4553,1300,4374,4007,0321,0000,0000,2000	; 5755		TL [FLG], FLG.SN/1, J/DNEG ;RESULT IS NEGATIVE
							; 5756		[AR]_[AR]*.5 LONG, ASHC,
U 0526, 0322,3446,0303,4174,4047,0700,1010,0041,0001	; 5757		FE_FE+1, CALL [DROUND]
U 0527, 2044,4553,1300,4374,4007,0321,0000,0000,2000	; 5758		TL [FLG], FLG.SN/1, J/DNEG ;RESULT IS NEGATIVE
							; 5759		Q_[MAG].AND.Q,		;HIGH WORD IS ZERO
U 0530, 3251,4002,0000,4174,0007,0700,0000,0000,0000	; 5760		HOLD RIGHT, J/DNORM1	;GO TEST LOW WORD
U 0536, 3250,4221,0013,4174,4007,0700,0000,0000,0000	; 5761	=1110	[FLG]_0			;[122] CLEAR FLAG WORD
							; 5762	=
							; 5763		AC[1]_[ARX].AND.[MAG],	;STORE LOW WORD
U 3250, 1515,4113,0400,1174,4007,0700,0400,0000,1441	; 5764		J/STAC			;GO DO HIGH WORD
							; 5765	
							; 5766	
U 3251, 2042,3223,0000,4174,4007,0621,0000,0000,0000	; 5767	DNORM1:	READ Q, SKIP AD.EQ.0	;TEST LOW WORD
							; 5768	=0	[AR]_[AR]*2 LONG, 	;LOW WORD IS NON-ZERO
							; 5769		FE_FE-1, ASHC,		;ADJUST EXPONENT
U 2042, 0520,3444,0303,4174,4043,4701,1000,0041,1777	; 5770		NORM DISP, J/DNORM	;KEEP LOOKING
U 2043, 1515,3440,0303,1174,4007,0700,0400,0000,1441	; 5771		AC[1]_[AR], J/STAC	;WHOLE ANSWER IS ZERO
							; 5772	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 156
; FLT.MIC[7,3]	01:46 20-MAR-1981				FLOATING POINT -- DOUBLE PRECISION NORMALIZE		

							; 5773	;HERE TO NORMALIZE NEGATIVE D.P. RESULTS
							; 5774	=0
U 2044, 3252,7222,0000,4174,4007,0700,0000,0000,0000	; 5775	DNEG:	Q_.NOT.Q, J/DNEG1	;ONES COMP
U 2045, 2046,2222,0000,4174,4007,0511,4000,0000,0000	; 5776		Q_-Q, SKIP CRY2, J/DNEG2
U 3252, 2046,4221,0013,4174,4007,0700,0000,0000,0000	; 5777	DNEG1:	[FLG]_0
							; 5778	=0
							; 5779	DNEG2:	[AR]_.NOT.[AR],		;NO CARRY
U 2046, 0200,7441,0303,4174,4003,4701,0000,0000,0000	; 5780		NORM DISP, J/DNNORM	;GO NORMALIZE
							; 5781		[AR]_-[AR],		;CARRY
U 2047, 0200,2441,0303,4174,4003,4701,4000,0000,0000	; 5782		NORM DISP, J/DNNORM	;NORMALIZE
							; 5783	
							; 5784	=000*
							; 5785	DNNORM:	[AR]_[AR]*2 LONG,	;SHIFT 1 PLACE
							; 5786		FE_FE-1, ASHC,		;ADJUST EXPONENT
U 0200, 0200,3444,0303,4174,4043,4701,1000,0041,1777	; 5787		NORM DISP, J/DNNORM	;LOOP TILL DONE
							; 5788	=001*	READ [AR], NORM DISP,	;SEE IF WE WENT TOO FAR
U 0202, 0322,3333,0003,4174,4003,4701,0010,0000,0000	; 5789		CALL [DROUND]		; AND ROUND ANSWER
							; 5790	=010*	[AR]_[AR]*.5 LONG, ASHC,
U 0204, 0322,3446,0303,4174,4047,0700,1010,0041,0001	; 5791		FE_FE+1, CALL [DROUND]
							; 5792	=011*	[AR]_[AR]*.5 LONG, ASHC,
U 0206, 0322,3446,0303,4174,4047,0700,1010,0041,0001	; 5793		FE_FE+1, CALL [DROUND]
							; 5794	=100*	Q_[MAG].AND.Q,		;HIGH WORD IS ZERO
U 0210, 3255,4002,0000,4174,0007,0700,0000,0000,0000	; 5795		HOLD RIGHT, J/DNNRM1	;GO TEST LOW WORD
U 0216, 0610,4111,1204,4174,4007,0700,0000,0000,0000	; 5796	=111*	[ARX]_[ARX].AND.[MASK]	;REMOVE ROUNDING BIT
							; 5797	=
							; 5798	=00	[ARX]_[ARX].AND.[MAG],	;ALSO CLEAR SIGN
U 0610, 3256,4111,0004,4174,4007,0700,0010,0000,0000	; 5799		CALL [CHKSN]		;ONES COMP?
							; 5800	=10	[ARX]_[ARX].XOR.[MAG],	;YES--ONES COMP
U 0612, 3253,6111,0004,4174,4007,0700,0000,0000,0000	; 5801		J/DNN1			;CONTINUE BELOW
							; 5802	=11	[ARX]_-[ARX], 3T,	;NEGATE RESULT
U 0613, 2050,2441,0404,4174,4007,0561,4000,0000,0000	; 5803		SKIP CRY1, J/DNN2
							; 5804	=
U 3253, 2050,4221,0013,4174,4007,0700,0000,0000,0000	; 5805	DNN1:	[FLG]_0			;CLEAR FLAG
							; 5806	=0
U 2050, 3254,7333,0003,0174,4007,0700,0400,0000,0000	; 5807	DNN2:	AC_.NOT.[AR], J/DNORM2
U 2051, 3254,2443,0300,0174,4007,0701,4400,0000,0000	; 5808		AC_-[AR], 3T
							; 5809	DNORM2:	AC[1]_[ARX].AND.[MAG],	;STORE LOW WORD
U 3254, 0100,4113,0400,1174,4156,4700,0400,0000,1441	; 5810		NEXT INST		;ALL DONE
							; 5811	
U 3255, 2052,3223,0000,4174,4007,0621,0000,0000,0000	; 5812	DNNRM1:	READ Q, SKIP AD.EQ.0	;TEST LOW WORD
							; 5813	=0	[AR]_[AR]*2 LONG, 	;LOW WORD IS NON-ZERO
							; 5814		FE_FE-1, ASHC,		;ADJUST EXPONENT
U 2052, 0200,3444,0303,4174,4043,4701,1000,0041,1777	; 5815		NORM DISP, J/DNNORM	;KEEP LOOKING
U 2053, 1515,3440,0303,1174,4007,0700,0400,0000,1441	; 5816		AC[1]_[AR], J/STAC	;WHOLE ANSWER IS ZERO
							; 5817	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 157
; FLT.MIC[7,3]	01:46 20-MAR-1981				FLOATING POINT -- DOUBLE PRECISION NORMALIZE		

U 3256, 0002,4553,1300,4374,4004,1321,0000,0000,2000	; 5818	CHKSN:	TL [FLG], FLG.SN/1, RETURN [2]
							; 5819	
							; 5820	;SUBROUTINE TO SET/CLEAR FLG.SN
							; 5821	;CALL WITH:
							; 5822	;	CALL [SETSN], SKIP IF WE SHOULD CLEAR
							; 5823	;RETURNS 23
							; 5824	=0
U 2054, 0023,3551,1313,4374,0004,1700,0000,0000,2000	; 5825	SETSN:	[FLG]_[FLG].OR.#, FLG.SN/1, HOLD RIGHT, RETURN [23]
U 2055, 0023,5551,1313,4374,0004,1700,0000,0000,2000	; 5826	CLRSN:	[FLG]_[FLG].AND.NOT.#, FLG.SN/1, HOLD RIGHT, RETURN [23]
							; 5827	
							; 5828	
							; 5829	;SUBROUTINE TO ROUND A FLOATING POINT NUMBER
							; 5830	;CALL WITH:
							; 5831	;	NUMBER IN AR!Q AND NORM DISP
							; 5832	;RETURNS 16 WITH ROUNDED NUMBER IN AR!ARX
							; 5833	;
							; 5834	=*01*
							; 5835	DROUND:	[ARX]_(Q+1)*.5,		;ROUND AND SHIFT
							; 5836		SKIP CRY2,		;SEE IF OVERFLOW
U 0322, 0462,0007,0704,4174,4007,0511,0000,0000,0000	; 5837		J/DRND1			;COMPLETE ROUNDING
							; 5838		[AR]_[AR]*.5 LONG,	;WE WENT TOO FAR
U 0326, 0322,3446,0303,4174,4047,0700,1000,0041,0001	; 5839		FE_FE+1, ASHC, J/DROUND	;SHIFT BACK AND ROUND
							; 5840	=*010
U 0462, 0016,3770,0303,4324,0454,1700,0000,0041,0000	; 5841	DRND1:	[AR]_EXP, RETURN [16]	;NO OVERFLOW
							; 5842	=011	[AR]_[AR]+.25,		;ADD CARRY (BITS 36 AND 37
							; 5843					; ARE COPIES OF Q BITS)
							; 5844		NORM DISP,		;SEE IF OVERFLOW
U 0463, 0462,0441,0303,4174,4003,4701,4000,0000,0000	; 5845		J/DRND1		; ..
							; 5846	=110	[AR]_[AR]*.5,		;SHIFT RIGHT
							; 5847		FE_FE+1,		;KEEP EXP RIGHT
U 0466, 0462,3447,0303,4174,4007,0700,1000,0041,0001	; 5848		J/DRND1		;ALL SET NOW
							; 5849	=
							; 5850	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 158
; EXTEND.MIC[7,3]	11:35 26-JULY-1984			EXTEND -- DISPATCH ROM ENTRIES				

							; 5851	.TOC	"EXTEND -- DISPATCH ROM ENTRIES"
							; 5852	
							; 5853		.DCODE
D 0001, 0001,1740,2100					; 5854	001:	I,	SJCL,	J/L-CMS
D 0002, 0002,1740,2100					; 5855		I,	SJCE,	J/L-CMS
D 0003, 0003,1740,2100					; 5856		I,	SJCLE,	J/L-CMS
D 0004, 0002,1741,2100					; 5857		I,	B/2,	J/L-EDIT
D 0005, 0005,1740,2100					; 5858		I,	SJCGE,	J/L-CMS
D 0006, 0006,1740,2100					; 5859		I,	SJCN,	J/L-CMS
D 0007, 0007,1740,2100					; 5860		I,	SJCG,	J/L-CMS
							; 5861	
D 0010, 0001,1742,2100					; 5862	010:	I,	B/1,	J/L-DBIN	;CVTDBO
D 0011, 0004,1742,2100					; 5863		I,	B/4,	J/L-DBIN	;CVTDBT
D 0012, 0001,1743,2100					; 5864		I,	B/1,	J/L-BDEC	;CVTBDO
D 0013, 0000,1743,2100					; 5865		I,	B/0,	J/L-BDEC	;CVTBDT
							; 5866	
D 0014, 0001,1744,2100					; 5867	014:	I,	B/1,	J/L-MVS		;MOVSO
D 0015, 0000,1744,2100					; 5868		I,	B/0,	J/L-MVS		;MOVST
D 0016, 0002,1744,2100					; 5869		I,	B/2,	J/L-MVS		;MOVSLJ
D 0017, 0003,1744,2100					; 5870		I,	B/3,	J/L-MVS		;MOVSRJ	
							; 5871	
D 0020, 0000,1746,2100					; 5872	020:	I,		J/L-XBLT	;XBLT
D 0021, 0000,1747,2100					; 5873		I,		J/L-SPARE-A	;GSNGL
D 0022, 0000,1750,2100					; 5874		I,		J/L-SPARE-B	;GDBLE
D 0023, 0000,1751,2100					; 5875		I,	B/0,	J/L-SPARE-C	;GDFIX
D 0024, 0001,1751,2100					; 5876		I,	B/1,	J/L-SPARE-C	;GFIX
D 0025, 0002,1751,2100					; 5877		I,	B/2,	J/L-SPARE-C	;GDFIXR
D 0026, 0004,1751,2100					; 5878		I,	B/4,	J/L-SPARE-C	;GFIXR
D 0027, 0010,1751,2100					; 5879		I,	B/10,	J/L-SPARE-C	;DGFLTR
							; 5880	;30:					;GFLTR
							; 5881						;GFSC
							; 5882		.UCODE
							; 5883	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 159
; EXTEND.MIC[7,3]	11:35 26-JULY-1984			EXTEND -- DISPATCH ROM ENTRIES				

							; 5884	1740:
U 1740, 0400,4751,1203,4374,4007,0700,0000,0000,0040	; 5885	L-CMS:	LUUO
							; 5886	1741:
U 1741, 0400,4751,1203,4374,4007,0700,0000,0000,0040	; 5887	L-EDIT:	LUUO
							; 5888	1742:
U 1742, 0400,4751,1203,4374,4007,0700,0000,0000,0040	; 5889	L-DBIN:	LUUO
							; 5890	1743:
U 1743, 0400,4751,1203,4374,4007,0700,0000,0000,0040	; 5891	L-BDEC:	LUUO
							; 5892	1744:
U 1744, 0400,4751,1203,4374,4007,0700,0000,0000,0040	; 5893	L-MVS:	LUUO
							; 5894	1746:
U 1746, 0400,4751,1203,4374,4007,0700,0000,0000,0040	; 5895	L-XBLT:	LUUO
							; 5896	1747:
U 1747, 0400,4751,1203,4374,4007,0700,0000,0000,0040	; 5897	L-SPARE-A: LUUO
							; 5898	1750:
U 1750, 0400,4751,1203,4374,4007,0700,0000,0000,0040	; 5899	L-SPARE-B: LUUO
							; 5900	1751:
U 1751, 0400,4751,1203,4374,4007,0700,0000,0000,0040	; 5901	L-SPARE-C: LUUO
							; 5902	
							; 5903	;NOTE: WE DO NOT NEED TO RESERVE 3746 TO 3751 BECAUSE THE CODE
							; 5904	;	AT EXTEND DOES A RANGE CHECK.
							; 5905	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 160
; EXTEND.MIC[7,3]	11:35 26-JULY-1984			EXTEND -- INSTRUCTION SET DECODING			

							; 5906	.TOC	"EXTEND -- INSTRUCTION SET DECODING"
							; 5907	
							; 5908	;EACH INSTRUCTION IN THE RANGE 1-23 GOES TO 1 OF 2 PLACES
							; 5909	; 1740-1747 IF NOT UNDER EXTEND
							; 5910	; 3740-3747 IF UNDER EXTEND
							; 5911	
							; 5912		.DCODE
D 0123, 0000,1467,3100					; 5913	123:	I,READ/1,		J/EXTEND
							; 5914		.UCODE
							; 5915	
							; 5916	1467:
U 1467, 1062,3771,0005,4365,5007,0700,0200,0000,0002	; 5917	EXTEND:	MEM READ, [BR]_MEM	;FETCH INSTRUCTION
							; 5918	=0**	TL [BR], #/760740,	;IN RANGE 0-17 (AND AC#=0)
U 1062, 3556,4553,0500,4374,4007,0321,0010,0076,0740	; 5919		CALL [BITCHK]		;TRAP IF NON-ZERO BITS FOUND
							; 5920		[BRX]_[HR].AND.# CLR RH, ;SPLIT OUT AC NUMBER
U 1066, 3257,4521,0206,4374,4007,0700,0000,0000,0740	; 5921		#/000740		; FROM EXTEND INSTRUCTION
							; 5922		[BR]_[BR].OR.[BRX],	;LOAD IR AND AC #
U 3257, 3260,3111,0605,4174,0417,0700,0000,0000,0000	; 5923		HOLD RIGHT, LOAD IR	; ..
							; 5924		READ [BR], LOAD BYTE EA,	;LOAD XR #
U 3260, 3261,3333,0005,4174,4217,0700,0000,0000,0500	; 5925		    J/EXTEA0			;COMPUTE E1
							; 5926	
U 3261, 3262,3333,0003,7174,4007,0700,0400,0000,0240	; 5927	EXTEA0:	WORK[E0]_[AR]
U 3262, 0170,4443,0000,2174,4006,6700,0000,0000,0000	; 5928	EXTEA1:	EA MODE DISP
							; 5929	=100*
U 0170, 0172,0551,0505,2270,4007,0700,0000,0000,0000	; 5930	EXTEA:	[BR]_[BR]+XR
							; 5931	EXTDSP:	[BR]_EA FROM [BR], LOAD VMA,
U 0172, 0556,5741,0505,4174,4003,7700,0200,0000,0010	; 5932		B DISP, J/EXTEXT
U 0174, 3263,0551,0505,2270,4007,0700,0200,0004,0512	; 5933		[BR]_[BR]+XR, START READ, PXCT EXTEND EA, LOAD VMA, J/EXTIND
U 0176, 3263,3443,0500,4174,4007,0700,0200,0004,0512	; 5934		VMA_[BR], START READ, PXCT EXTEND EA
							; 5935	
U 3263, 3262,3771,0005,4361,5217,0700,0200,0000,0502	; 5936	EXTIND:	MEM READ, [BR]_MEM, HOLD LEFT, LOAD BYTE EA, J/EXTEA1
							; 5937	
							; 5938	;HERE TO EXTEND SIGN FOR OFFSET MODES
							; 5939	=1110
							; 5940	EXTEXT:	WORK[E1]_[BR],			;SAVE E1
U 0556, 3400,3333,0005,7174,4001,2700,0400,0000,0241	; 5941		DISP/DROM, J/3400		;GO TO EXTENDED EXECUTE CODE
U 0557, 2056,3333,0005,4174,4007,0530,0000,0000,0000	; 5942		READ [BR], SKIP DP18		;NEED TO EXTEND SIGN
							; 5943	=0	WORK[E1]_[BR],			;POSITIVE
U 2056, 3400,3333,0005,7174,4001,2700,0400,0000,0241	; 5944		DISP/DROM, J/3400
							; 5945		[BR]_#, #/777777, HOLD RIGHT,	;NEGATIVE
U 2057, 0556,3771,0005,4374,0007,0700,0000,0077,7777	; 5946		J/EXTEXT
							; 5947	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 161
; EXTEND.MIC[7,3]	11:35 26-JULY-1984			EXTEND -- MOVE STRING -- SETUP				

							; 5948	.TOC	"EXTEND -- MOVE STRING -- SETUP"
							; 5949	
							; 5950	;HERE TO MOVE A STRING
							; 5951	;COME HERE WITH:
							; 5952	;	AR/ E0
							; 5953	;	BR/ E1
							; 5954	;
							; 5955	3744:
							; 5956	MVS:	[AR]_[AR]+1,		;GO FETCH FILL
							; 5957		LOAD VMA,		; BYTE
							; 5958		START READ,		; ..
U 3744, 3456,0111,0703,4174,4007,0700,0210,0004,0012	; 5959		CALL [GTFILL]		;SUBROUTINE TO COMPLETE
U 3754, 2060,3771,0005,1276,6007,0701,0000,0000,1443	; 5960	3754:	[BR]_AC[DLEN]		;GET DEST LENGTH AND FLAGS
							; 5961	=0**	TL [BR], #/777000,	;ANY FLAGS SET?
U 2060, 3556,4553,0500,4374,4007,0321,0010,0077,7000	; 5962		CALL [BITCHK]		;SEE IF ILLEGAL
U 2064, 2062,3771,0003,0276,6007,0700,0000,0000,0000	; 5963		[AR]_AC			;GET SRC LENGTH AND FLAGS
							; 5964	=0	[BRX]_[AR].AND.# CLR RH, ;COPY FLAGS TO BRX
							; 5965		#/777000,		; ..
U 2062, 3460,4521,0306,4374,4007,0700,0010,0077,7000	; 5966		CALL [CLRFLG]		;CLEAR FLAGS IN AR
							; 5967					;NEW DLEN IS <SRC LEN>-<DST LEN>
							; 5968		AC[DLEN]_[AR]-[BR], 3T,	;COMPUTE DIFFERENCE
U 2063, 2066,2113,0305,1174,4007,0521,4400,0000,1443	; 5969		SKIP DP0		;WHICH IS SHORTER?
							; 5970	=0	[AR]_.NOT.[BR], 	;DESTINATION
U 2066, 3264,7441,0503,4174,4007,0700,0000,0000,0000	; 5971		J/MVS1			;GET NEGATIVE LENGTH
U 2067, 3264,7441,0303,4174,4007,0700,0000,0000,0000	; 5972		[AR]_.NOT.[AR]		;SOURCE
							; 5973	MVS1:	WORK[SLEN]_[AR],	; ..
U 3264, 0574,3333,0003,7174,4003,7700,0400,0000,0242	; 5974		B DISP			;SEE WHAT TYPE OF MOVE
							; 5975	;SLEN NOW HAS -<LEN OF SHORTER STRING>-1
							; 5976	=1100
U 0574, 0500,3771,0013,4370,4007,0700,0000,0000,0003	; 5977		STATE_[SRC], J/MOVELP	;TRANSLATE--ALL SET
U 0575, 3265,3771,0005,1276,6007,0701,0000,0000,1444	; 5978		[BR]_AC[DSTP], J/MVSO	;OFFSET BUILD MASK
							; 5979		[ARX]_[AR],		;LEFT JUSTIFY
U 0576, 3305,3441,0304,4174,4007,0700,0000,0000,0000	; 5980		J/MOVST0		; ..
							; 5981		[ARX]_AC[DLEN],		;RIGHT JUSTIFY
							; 5982		SKIP DP0, 4T,		;WHICH IS SHORTER?
U 0577, 0630,3771,0004,1276,6007,0522,0000,0000,1443	; 5983		J/MOVRJ
							; 5984	
U 3265, 3266,3333,0005,4174,4007,0700,1000,0041,6020	; 5985	MVSO:	READ [BR], FE_S+2	;GET DST BYTE SIZE
U 3266, 2070,4222,0000,4174,4006,7701,1000,0041,1770	; 5986		Q_0, BYTE STEP		;BUILD AN S BIT MASK
							; 5987	=0*
U 2070, 2070,4224,0003,4174,4026,7701,1000,0041,1770	; 5988	MVSO1:	GEN MSK [AR], BYTE STEP, J/MVSO1
U 2072, 3267,7221,0003,4174,4007,0700,0000,0000,0000	; 5989		[AR]_.NOT.Q		;BITS WHICH MUST NOT BE SET
							; 5990		WORK[MSK]_[AR].AND.[MASK], ;SAVE FOR SRCMOD
U 3267, 0507,4113,0312,7174,4007,0700,0400,0000,0243	; 5991		J/MOVLP0		;GO ENTER LOOP
							; 5992	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 162
; EXTEND.MIC[7,3]	11:35 26-JULY-1984			EXTEND -- MOVE STRING -- OFFSET/TRANSLATE		

							; 5993	.TOC	"EXTEND -- MOVE STRING -- OFFSET/TRANSLATE"
							; 5994	
							; 5995	;HERE IS THE LOOP FOR OFFSET AND TRANSLATED MOVES
							; 5996	=000
							; 5997	MOVELP:	[AR]_WORK[SLEN]+1,	;UPDATE STRING LENGTH
U 0500, 1074,0551,0703,7274,4007,0701,0010,0000,0242	; 5998		CALL [SRCMOD]		;GET A SOURCE BYTE
							; 5999	=001	[ARX]_[AR], SKIP DP0,	;(1) LENGTH EXHAUSTED
U 0501, 0750,3441,0304,4174,4007,0520,0000,0000,0000	; 6000		J/MOVST2		;    SEE IF FILL IS NEEDED
							; 6001	=100	[AR]_-WORK[SLEN],	;(4) ABORT
U 0504, 3270,1771,0003,7274,4007,0701,4000,0000,0242	; 6002		J/MVABT			; ..
							; 6003		STATE_[SRC+DST],	;(5) NORMAL--STORE DST BYTE
U 0505, 3450,3771,0013,4370,4007,0700,0010,0000,0005	; 6004		CALL [PUTDST]		;     ..
							; 6005	=111
U 0507, 0500,3771,0013,4370,4007,0700,0000,0000,0003	; 6006	MOVLP0:	STATE_[SRC], J/MOVELP	;(7) DPB DONE
							; 6007	=
							; 6008	
							; 6009	;HERE TO ABORT A STRING MOVE DUE TO TRANSLATE OR OFFSET FAILURE
							; 6010	
							; 6011	MVABT:	[BR]_AC[DLEN], 		;WHICH STRING IS LONGER
U 3270, 2074,3771,0005,1276,6007,0522,0000,0000,1443	; 6012		SKIP DP0, 4T
							; 6013	=0
U 2074, 3271,3440,0303,1174,4007,0700,0400,0000,1443	; 6014	MVABT1:	AC[DLEN]_[AR], J/MVABT2	;PUT AWAY DEST LEN
							; 6015		[AR]_[AR]-[BR],		;DEST LEN WAS GREATER
U 2075, 2074,1111,0503,4174,4007,0700,4000,0000,0000	; 6016		J/MVABT1		;STICK BACK IN AC
							; 6017	
U 3271, 3272,7771,0003,7274,4007,0701,0000,0000,0242	; 6018	MVABT2:	[AR]_.NOT.WORK[SLEN]	;GET UNDECREMENTED SLEN
U 3272, 2076,3333,0005,4174,4007,0520,0000,0000,0000	; 6019		READ [BR], SKIP DP0	;NEED TO FIXUP SRC?
U 2076, 2077,0111,0503,4174,4007,0700,0000,0000,0000	; 6020	=0	[AR]_[AR]+[BR]		;SRC LONGER BY (DLEN)
U 2077, 3273,3111,0603,4174,4007,0700,0000,0000,0000	; 6021	MVEND:	[AR]_[AR].OR.[BRX]	;PUT BACK SRC FLAGS
U 3273, 1515,4221,0013,4170,4007,0700,0000,0000,0000	; 6022		END STATE, J/STAC	;ALL DONE
							; 6023	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 163
; EXTEND.MIC[7,3]	11:35 26-JULY-1984			EXTEND -- MOVE STRING -- MOVSRJ				

							; 6024	.TOC	"EXTEND -- MOVE STRING -- MOVSRJ"
							; 6025	
							; 6026	=00
U 0630, 3274,3771,0003,1276,6007,0701,0000,0000,1441	; 6027	MOVRJ:	[AR]_AC[SRCP], J/MVSKP	;SRC LONGER, SKIP OVER SOME
							; 6028		STATE_[DSTF],		;DST LONGER, FILL IT
U 0631, 2263,3771,0013,4370,4007,0700,0010,0000,0006	; 6029		CALL [MOVFIL]		; ..
							; 6030	=11	[ARX]_WORK[SLEN]+1,	;DONE FILLING
U 0633, 3306,0551,0704,7274,4007,0701,0000,0000,0242	; 6031		J/MOVST1		;GO MOVE STRING
							; 6032	
							; 6033	;HERE TO SKIP OVER EXTRA SOURCE BYTES
U 3274, 2100,3440,0303,1174,4007,0670,0400,0000,1441	; 6034	MVSKP:	AC[SRCP]_[AR], SKIP -1MS ;[121] Is there a timer interrupt?
U 2100, 3277,3333,0003,7174,4007,0700,0400,0000,0211	; 6035	=0	WORK[SV.AR]_[AR], J/MVSK2 ;[121][123] Yes, save regs for interrupt.
							; 6036		[ARX]_[ARX]-1, 3T,	;DONE SKIPPING?
U 2101, 2102,1111,0704,4174,4007,0521,4000,0000,0000	; 6037		SKIP DP0
							; 6038	=0	IBP DP, IBP SCAD,	;NO--START THE IBP
							; 6039		SCAD DISP, SKIP IRPT,	;4-WAY DISPATCH
U 2102, 0650,3770,0305,4334,4016,7371,0000,0033,6000	; 6040		3T, J/MVSKP1		;GO BUMP POINTER
							; 6041		AC[DLEN]_0,		;LENGTHS ARE NOW EQUAL
U 2103, 0546,4223,0000,1174,4007,0700,0400,0000,1443	; 6042		J/MOVST4		;GO MOVE STRING
							; 6043	
							; 6044	=00
U 0650, 3274,3441,0503,4174,4007,0700,0000,0000,0000	; 6045	MVSKP1:	[AR]_[BR], J/MVSKP	;NO OVERFLOW
							; 6046		[AR]_.NOT.WORK[SLEN],	;INTERRUPT
U 0651, 3275,7771,0003,7274,4007,0701,0000,0000,0242	; 6047		J/MVSK3			; ..
							; 6048		SET P TO 36-S,		;WORD OVERFLOW
U 0652, 3276,3770,0503,4334,4017,0700,0000,0032,6000	; 6049		J/MVSKP2		;FIXUP Y
U 0653, 3275,7771,0003,7274,4007,0701,0000,0000,0242	; 6050		[AR]_.NOT.WORK[SLEN]	;[121] INTERRUPT or timer.
U 3275, 2104,3440,0303,1174,4007,0700,0400,0000,1443	; 6051	MVSK3:	AC[DLEN]_[AR]		;RESET DLEN
							; 6052	=0	[AR]_[AR]+[ARX],
U 2104, 3664,0111,0403,4174,4007,0700,0010,0000,0000	; 6053		CALL [INCAR]		;ADD 1 TO AR
							; 6054		AC_[AR].OR.[BRX],	;PUT BACK FLAGS
U 2105, 3720,3113,0306,0174,4007,0700,0400,0000,0000	; 6055		J/ITRAP			;DO INTERRUPT TRAP
							; 6056	
							; 6057	MVSKP2:	[AR]_[AR]+1, HOLD LEFT,	;BUMP Y
U 3276, 3274,0111,0703,4170,4007,0700,0000,0000,0000	; 6058		J/MVSKP		;KEEP GOING
							; 6059	
							; 6060					;BEGIN EDIT [123]
U 3277, 3300,3333,0005,7174,4007,0700,0400,0000,0213	; 6061	MVSK2:	WORK[SV.BR]_[BR]	;SAVE ALL
U 3300, 3301,3333,0004,7174,4007,0700,0400,0000,0212	; 6062		WORK[SV.ARX]_[ARX]	;THE REGISTERS
U 3301, 2071,3333,0006,7174,4007,0700,0400,0000,0214	; 6063		WORK[SV.BRX]_[BRX]	;FOR THE TICK
U 2071, 3560,4443,0000,4174,4007,0700,0010,0000,0000	; 6064	=0*	CALL [TICK]		;UPDATE CLOCK AND SET INTERUPT
U 2073, 3302,3771,0003,7274,4007,0701,0000,0000,0211	; 6065		[AR]_WORK[SV.AR]	;NOW PUT
U 3302, 3303,3771,0005,7274,4007,0701,0000,0000,0213	; 6066		[BR]_WORK[SV.BR]	;THEM ALL
U 3303, 3304,3771,0004,7274,4007,0701,0000,0000,0212	; 6067		[ARX]_WORK[SV.ARX]	;BACK SO WE
							; 6068		[BRX]_WORK[SV.BRX],	;CAN CONTINUE
U 3304, 3274,3771,0006,7274,4007,0701,0000,0000,0214	; 6069			J/MVSKP
							; 6070					;END EDIT [123]
							; 6071	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 164
; EXTEND.MIC[7,3]	11:35 26-JULY-1984			EXTEND -- MOVE STRING -- SIMPLE MOVE LOOP		

							; 6072	.TOC	"EXTEND -- MOVE STRING -- SIMPLE MOVE LOOP"
							; 6073	
							; 6074	;HERE FOR NO-MODIFICATION STRING MOVES
U 3305, 3306,0111,0704,4174,4007,0700,0000,0000,0000	; 6075	MOVST0:	[ARX]_[ARX]+1		;CANT DO [ARX]_[AR]+1
U 3306, 0540,3771,0013,4370,4007,0700,0000,0000,0003	; 6076	MOVST1:	STATE_[SRC]		;PREPARE FOR PAGE FAIL
							; 6077	=000
							; 6078		WORK[SLEN]_[ARX],	;GO GET A SOURCE BYTE
U 0540, 2274,3333,0004,7174,4007,0520,0410,0000,0242	; 6079		SKIP DP0, CALL [GSRC]	; ..
							; 6080	MOVSTX:	[ARX]_[AR],		;SHORT STRING RAN OUT
U 0541, 0750,3441,0304,4174,4007,0520,0000,0000,0000	; 6081		SKIP DP0, J/MOVST2	;GO SEE IF FILL NEEDED
							; 6082	=010	STATE_[SRC+DST],	;WILL NEED TO BACK UP BOTH POINTERS
U 0542, 3450,3771,0013,4370,4007,0700,0010,0000,0005	; 6083		CALL [PUTDST]		;STORE BYTE
							; 6084	=110
							; 6085	MOVST4:	[ARX]_WORK[SLEN]+1,	;COUNT DOWN LENGTH
U 0546, 3306,0551,0704,7274,4007,0701,0000,0000,0242	; 6086		J/MOVST1		;LOOP OVER STRING
							; 6087	=
							; 6088	=00
U 0750, 3307,4223,0000,1174,4007,0700,0400,0000,1443	; 6089	MOVST2:	AC[DLEN]_0, J/MOVST3	;CLEAR DEST LEN, REBUILD SRC
U 0751, 2263,3771,0013,4370,4007,0700,0010,0000,0004	; 6090		STATE_[DST], CALL [MOVFIL] ;FILL OUT DEST
U 0753, 2147,3440,0606,0174,4007,0700,0400,0000,0000	; 6091	=11	AC_[BRX], J/ENDSKP	;ALL DONE
							; 6092	
U 3307, 3310,3113,0406,0174,4007,0700,0400,0000,0000	; 6093	MOVST3:	AC_[ARX].OR.[BRX]	;REBUILD SRC
U 3310, 0252,4221,0013,4170,4007,0700,0000,0000,0000	; 6094		END STATE, J/SKIPE	; ..
							; 6095	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 165
; EXTEND.MIC[7,3]	11:35 26-JULY-1984			EXTEND -- COMPARE STRING				

							; 6096	.TOC	"EXTEND -- COMPARE STRING"
							; 6097	
							; 6098	3740:
U 3740, 2061,3771,0004,1276,6007,0701,0000,0000,1443	; 6099	CMS:	[ARX]_AC[DLEN]		;GET DEST LEN
U 2061, 3556,4553,0400,4374,4007,0321,0010,0077,7000	; 6100	=0**	TL [ARX], #/777000, CALL [BITCHK]
U 2065, 2110,3771,0006,0276,6007,0700,0000,0000,0000	; 6101		[BRX]_AC		;GET SRC LEN
U 2110, 3556,4553,0600,4374,4007,0321,0010,0077,7000	; 6102	=0**	TL [BRX], #/777000, CALL [BITCHK]
U 2114, 2106,2113,0604,4174,4007,0521,4000,0000,0000	; 6103		[BRX]-[ARX], 3T, SKIP DP0 ;WHICH STRING IS LONGER?
U 2106, 2107,0111,0703,4174,4007,0700,0000,0000,0000	; 6104	=0	[AR]_[AR]+1		;SRC STRING IS LONGER
U 2107, 2112,0111,0703,4170,4007,0700,0200,0004,0012	; 6105		VMA_[AR]+1, START READ	;DST STRING
							; 6106	=0	[AR]_0,			;FORCE FIRST COMPARE TO BE
							; 6107					;EQUAL
U 2112, 3662,4221,0003,4174,4007,0700,0010,0000,0000	; 6108		CALL [LOADQ]		;PUT FILL INTO Q
							; 6109		WORK[FILL]_Q,		;SAVE FILLER
U 2113, 3320,3223,0000,7174,4007,0700,0400,0000,0244	; 6110		J/CMS2			;ENTER LOOP
							; 6111	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 166
; EXTEND.MIC[7,3]	11:35 26-JULY-1984			EXTEND -- COMPARE STRING				

							; 6112	;HERE IS THE COMPARE LOOP.
							; 6113	; ARX/ CONATINS REMAINING DEST LENGTH
							; 6114	; BRX/ CONTAINS REMAINING SOURCE LENGTH
							; 6115	=0
							; 6116	CMS3:				;BYTES ARE NOT EQUAL
							; 6117		END STATE,		;NO MORE SPECIAL PAGE FAIL ACTION
U 2116, 0250,4221,0013,4170,4003,7700,0000,0000,0000	; 6118		SKIP-COMP DISP		;SEE SKIP-COMP-TABLE
U 2117, 3311,3771,0003,1276,6007,0701,0000,0000,1441	; 6119	CMS4:	[AR]_AC[SRCP]		;GET BYTE POINTER
U 3311, 1020,3333,0006,4174,4007,0520,0000,0000,0000	; 6120		READ [BRX], SKIP DP0	;MORE IN SOURCE STRING?
							; 6121	=00	STATE_[EDIT-SRC],	;PREPARE FOR PAGE FAIL
U 1020, 2275,3771,0013,4370,4007,0700,0010,0000,0011	; 6122		CALL [GETSRC]		; GO GET BYTE
							; 6123		READ [ARX], SKIP DP0,	;NO MORE SRC--SEE IF MORE DEST
U 1021, 2120,3333,0004,4174,4007,0520,0000,0000,0000	; 6124		J/CMS5			; ..
U 1022, 3312,3333,0003,7174,4007,0700,0400,0000,0245	; 6125		WORK[CMS]_[AR]		;SAVE SRC BYTE
							; 6126	=
U 3312, 3313,3440,0606,0174,4007,0700,0400,0000,0000	; 6127		AC_[BRX]		;PUT BACK SRC LEN
U 3313, 3314,3771,0013,4370,4007,0700,0000,0000,0010	; 6128		STATE_[COMP-DST]	;HAVE TO BACK UP IF DST FAILS
U 3314, 1030,3333,0004,4174,4007,0520,0000,0000,0000	; 6129		READ [ARX], SKIP DP0	;ANY MORE DEST?
							; 6130	=00
U 1030, 2122,4443,0000,4174,4007,0700,0010,0000,0000	; 6131	CMS6:	CALL [CMPDST]		;MORE DEST BYTES
							; 6132		[AR]_WORK[FILL],	;OUT OF DEST BYTES
U 1031, 3315,3771,0003,7274,4007,0701,0000,0000,0244	; 6133		J/CMS7			;GO DO COMPARE
U 1032, 3315,3440,0404,1174,4007,0700,0400,0000,1443	; 6134		AC[DLEN]_[ARX]		;GOT A BYTE, UPDATE LENGTH
							; 6135	=
							; 6136	CMS7:	[AR]_[AR].AND.[MASK],	;MAKE MAGNITUDES
U 3315, 3316,4111,1203,7174,4007,0700,0000,0000,0245	; 6137		WORK[CMS]		;WARM UP RAM
U 3316, 3317,4551,1205,7274,4007,0700,0000,0000,0245	; 6138		[BR]_[MASK].AND.WORK[CMS], 2T ;GET SRC MAGNITUDE
U 3317, 3320,2111,0503,4174,4007,0700,4000,0000,0000	; 6139		[AR]_[BR]-[AR] REV	;UNSIGNED COMPARE
U 3320, 3321,1111,0704,4174,4007,0700,4000,0000,0000	; 6140	CMS2:	[ARX]_[ARX]-1		;UPDATE LENGTHS
U 3321, 3322,1111,0706,4174,4007,0700,4000,0000,0000	; 6141		[BRX]_[BRX]-1		; ..
U 3322, 2116,3333,0003,4174,4007,0621,0000,0000,0000	; 6142		READ [AR], SKIP AD.EQ.0, J/CMS3 ;SEE IF EQUAL
							; 6143	
							; 6144	=0
U 2120, 3323,3772,0000,7274,4007,0701,0000,0000,0244	; 6145	CMS5:	Q_WORK[FILL], J/CMS8	;MORE DST--GET SRC FILL
U 2121, 2116,4221,0003,4174,4007,0700,0000,0000,0000	; 6146		[AR]_0, J/CMS3		;STRINGS ARE EQUAL
U 3323, 3324,3771,0013,4370,4007,0700,0000,0000,0012	; 6147	CMS8:	STATE_[EDIT-DST]	;JUST DST POINTER ON PAGE FAIL
U 3324, 1030,3223,0000,7174,4007,0700,0400,0000,0245	; 6148		WORK[CMS]_Q, J/CMS6	;MORE DST--SAVE SRC FILL
							; 6149	
							; 6150	=0
							; 6151	CMPDST:	[AR]_AC[DSTP],		;GET DEST POINTER
U 2122, 3451,3771,0003,1276,6007,0701,0010,0000,1444	; 6152		CALL [IDST]		;UPDATE IT
							; 6153		READ [AR],		;LOOK AT BYTE POINTER
							; 6154		FE_FE.AND.S#, S#/0770,	;MASK OUT BIT 6
U 2123, 0340,3333,0003,4174,4006,5701,1000,0051,0770	; 6155		BYTE DISP, J/LDB1	;GO LOAD BYTE
							; 6156	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 167
; EXTEND.MIC[7,3]	11:35 26-JULY-1984			EXTEND -- DECIMAL TO BINARY CONVERSION			

							; 6157	.TOC	"EXTEND -- DECIMAL TO BINARY CONVERSION"
							; 6158	
							; 6159	3742:
U 3742, 3325,4571,1203,4374,4007,0700,0000,0077,7777	; 6160	DBIN:	[AR]_[777777] XWD 0	;IF WE ARE IN OFFSET MODE
U 3325, 3326,3333,0003,7174,4007,0700,0400,0000,0243	; 6161		WORK[MSK]_[AR]		; ONLY ALLOW 18 BITS
							; 6162					;RANGE CHECKED (0-10) LATER
U 3326, 3327,3771,0003,0276,6007,0700,0000,0000,0000	; 6163		[AR]_AC			;GET SRC LENGTH
							; 6164		[BRX]_[AR].AND.# CLR RH, ;SPLIT OUT FLAGS
U 3327, 2124,4521,0306,4374,4007,0700,0000,0077,7000	; 6165		#/777000		; ..
							; 6166	=0*	[ARX]_AC[BIN1],		;GET LOW WORD
U 2124, 2220,3771,0004,1276,6007,0701,0010,0000,1444	; 6167		CALL [CLARX0]		;CLEAR BIT 0 OF ARX
U 2126, 2130,3440,0404,1174,4007,0700,0400,0000,1444	; 6168		AC[BIN1]_[ARX]		;STORE BACK
							; 6169	=0	READ [BRX], SKIP DP0,	;IS S ALREADY SET?
U 2130, 2154,3333,0006,4174,4007,0520,0010,0000,0000	; 6170		CALL [CLRBIN]		;GO CLEAR BIN IF NOT
							; 6171		[AR]_[AR].AND.#,	;CLEAR FLAGS FROM LENGTH
							; 6172		#/000777, HOLD RIGHT,	; ..
U 2131, 0616,4551,0303,4374,0003,7700,0000,0000,0777	; 6173		B DISP			;SEE IF OFFSET OR TRANSLATE
							; 6174	=1110
U 0616, 3330,3771,0013,4370,4007,0700,0000,0000,0007	; 6175	DBIN1:	STATE_[CVTDB], J/DBIN2	;TRANSLATE--LEAVE S ALONE
							; 6176		[BRX]_[BRX].OR.#,	;OFFSET--FORCE S TO 1
							; 6177		#/400000, HOLD RIGHT,
U 0617, 0616,3551,0606,4374,0007,0700,0000,0040,0000	; 6178		J/DBIN1
U 3330, 0460,7333,0003,7174,4007,0700,0400,0000,0242	; 6179	DBIN2:	WORK[SLEN]_.NOT.[AR]	;STORE -SLEN-1
							; 6180	
							; 6181	;HERE IS THE MAIN LOOP
							; 6182	=0*0
U 0460, 1074,0551,0703,7274,4007,0701,0010,0000,0242	; 6183	DBINLP:	[AR]_WORK[SLEN]+1, CALL [SRCMOD] ;(0) GET MODIFIED SRC BYTE
							; 6184		TL [BRX], #/100000,	;(1) DONE, IS M SET?
U 0461, 2142,4553,0600,4374,4007,0321,0000,0010,0000	; 6185		J/DBXIT
							; 6186		[AR]_.NOT.WORK[SLEN],	;(4) ABORT
U 0464, 3335,7771,0003,7274,4007,0701,0000,0000,0242	; 6187		J/DBABT			;	..
							; 6188		[AR]-#, #/10.,		;(5) NORMAL--SEE IF 0-9
U 0465, 2132,1553,0300,4374,4007,0532,4000,0000,0012	; 6189		4T, SKIP DP18		; ..
							; 6190	=0	[AR]_.NOT.WORK[SLEN],	;DIGIT TOO BIG
U 2132, 3335,7771,0003,7274,4007,0701,0000,0000,0242	; 6191		J/DBABT			;GO ABORT CVT
							; 6192	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 168
; EXTEND.MIC[7,3]	11:35 26-JULY-1984			EXTEND -- DECIMAL TO BINARY CONVERSION			

							; 6193	;HERE TO ADD IN A DIGIT
							; 6194		[BR]_AC[BIN0], 4T,	;GET HIGH BINARY
U 2133, 1050,3771,0005,1276,6007,0622,0000,0000,1443	; 6195		SKIP AD.EQ.0		;SEE IF SMALL
							; 6196	=00
							; 6197	DBSLO:	[ARX]_AC[BIN1],		;TOO BIG
U 1050, 0560,3771,0004,1276,6007,0701,0010,0000,1444	; 6198		CALL [DBSLOW]		;GO USE DOUBLE PRECISION PATHS
							; 6199		[BR]_AC[BIN1],		;GET LOW WORD
U 1051, 3331,3771,0005,1276,6007,0701,0000,0000,1444	; 6200		J/DBFAST		;MIGHT FIT IN 1 WORD
U 1052, 0460,4443,0000,4174,4007,0700,0000,0000,0000	; 6201		J/DBINLP		;RETURN FROM DBSLOW
							; 6202					;GO DO NEXT DIGIT
							; 6203	=
U 3331, 2134,4553,0500,4374,4007,0321,0000,0076,0000	; 6204	DBFAST:	TL [BR], #/760000	;WILL RESULT FIT IN 36 BITS?
U 2134, 1050,4443,0000,4174,4007,0700,0000,0000,0000	; 6205	=0	J/DBSLO			;MAY NOT FIT--USE DOUBLE WORD
U 2135, 3332,3775,0005,1276,6007,0701,0000,0000,1444	; 6206		[BR]_AC[BIN1]*2		;COMPUTE AC*2
U 3332, 2136,3445,0505,1174,4007,0700,0000,0000,1444	; 6207		[BR]_[BR]*2, AC[BIN1]	;COMPUTE AC*4
							; 6208	=0	[BR]_[BR]+AC[BIN1], 2T,	;COMPUTE AC*5
U 2136, 3665,0551,0505,1274,4007,0700,0010,0000,1444	; 6209		CALL [SBRL]		;COMPUTE AC*10
							; 6210		AC[BIN1]_[AR]+[BR], 3T,	;NEW BINARY RESULT
U 2137, 0460,0113,0305,1174,4007,0701,0400,0000,1444	; 6211		J/DBINLP		;DO NEXT DIGIT
							; 6212	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 169
; EXTEND.MIC[7,3]	11:35 26-JULY-1984			EXTEND -- DECIMAL TO BINARY CONVERSION			

							; 6213	;HERE IF NUMBER DOES NOT FIT IN ONE WORD
							; 6214	
							; 6215	=000
							; 6216	DBSLOW:	[BR]_AC[BIN0],		;FETCH HIGH WORD
U 0560, 0620,3771,0005,1276,6007,0701,0010,0000,1443	; 6217		CALL [MULBY4]		;MULTIPLY BY 4
							; 6218		[ARX]_[ARX]+AC[BIN1],	;COMPUTE VALUE * 5
							; 6219		SKIP CRY1, 4T,		;SEE IF OVERFLOW
U 0561, 2140,0551,0404,1274,4007,0562,0010,0000,1444	; 6220		CALL [ADDCRY]		;GO ADD CARRY
U 0565, 0600,0551,0505,1274,4007,0701,0000,0000,1443	; 6221	=101	[BR]_[BR]+AC[BIN0]	;ADD IN HIGH WORD
							; 6222	=
U 0600, 0621,4443,0000,4174,4007,0700,0010,0000,0000	; 6223	=000	CALL [DBLDBL]		;MAKE * 10
							; 6224		[ARX]_[ARX]+[AR], 3T,	;ADD IN NEW DIGIT
							; 6225		SKIP CRY1,		;SEE IF OVERFLOW
U 0601, 2140,0111,0304,4174,4007,0561,0010,0000,0000	; 6226		CALL [ADDCRY]		;ADD IN THE CARRY
U 0605, 3333,3440,0404,1174,4007,0700,0400,0000,1444	; 6227	=101	AC[BIN1]_[ARX]		;PUT BACK ANSWER
							; 6228	=
							; 6229		AC[BIN0]_[BR],		; ..
U 3333, 0002,3440,0505,1174,4004,1700,0400,0000,1443	; 6230		RETURN [2]		;GO DO NEXT BYTE
							; 6231	
							; 6232	;HERE TO DOUBLE BR!ARX
							; 6233	=000
U 0620, 0621,4443,0000,4174,4007,0700,0010,0000,0000	; 6234	MULBY4:	CALL [DBLDBL]		;DOUBLE TWICE
U 0621, 0622,0111,0505,4174,4007,0700,0000,0000,0000	; 6235	DBLDBL:	[BR]_[BR]+[BR]		;DOUBLE HIGH WORD FIRST
							; 6236					;(SO WE DON'T DOUBLE CARRY)
							; 6237		[ARX]_[ARX]+[ARX],	;DOUBLE LOW WORD
							; 6238		SKIP CRY1, 3T,		;SEE IF CARRY
U 0622, 2140,0111,0404,4174,4007,0561,0010,0000,0000	; 6239		CALL [ADDCRY]		;ADD IN CARRY
U 0626, 0001,4443,0000,4174,4004,1700,0000,0000,0000	; 6240	=110	RETURN [1]		;ALL DONE
							; 6241	=
							; 6242	
							; 6243	;HERE TO ADD THE CARRY
							; 6244	=0
U 2140, 0004,4443,0000,4174,4004,1700,0000,0000,0000	; 6245	ADDCRY:	RETURN [4]		;NO CARRY
U 2141, 3334,4551,0404,4374,0007,0700,0000,0037,7777	; 6246		CLEAR [ARX]0		;KEEP LOW WORD POSITIVE
							; 6247		[BR]_[BR]+1,		;ADD CARRY
U 3334, 0004,0111,0705,4174,4004,1700,0000,0000,0000	; 6248		RETURN [4]		;ALL DONE
							; 6249	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 170
; EXTEND.MIC[7,3]	11:35 26-JULY-1984			EXTEND -- DECIMAL TO BINARY CONVERSION			

							; 6250	;HERE TO ABORT CONVERSION
U 3335, 3336,3111,0306,4174,4007,0700,0000,0000,0000	; 6251	DBABT:	[BRX]_[BRX].OR.[AR]	;PUT BACK UNUSED LENGTH
							; 6252		[PC]_[PC]-1, HOLD LEFT,	;DO NOT SKIP
U 3336, 2143,1111,0701,4170,4007,0700,4000,0000,0000	; 6253		J/DBDONE		;GO FIX UP SIGN COPY
							; 6254	
							; 6255	;HERE AT END
							; 6256	=0
							; 6257	DBXIT:	[ARX]_AC[BIN1],		;GET LOW WORD
U 2142, 3341,3771,0004,1276,6007,0701,0000,0000,1444	; 6258		J/DBNEG			;GO NEGATE
U 2143, 3337,3771,0003,1276,6007,0701,0000,0000,1444	; 6259	DBDONE:	[AR]_AC[BIN1]		;FETCH LOW WORD
							; 6260		[BR]_AC[BIN0], 4T,	;GET HIGH WORD
U 3337, 2144,3771,0005,1276,6007,0522,0000,0000,1443	; 6261		SKIP DP0		;WHAT SIGN
U 2144, 3340,4551,0303,4374,0007,0700,0000,0037,7777	; 6262	=0	CLEAR [AR]0, J/DBDN1	;POSITIVE
U 2145, 3340,3551,0303,4374,0007,0700,0000,0040,0000	; 6263		[AR]_[AR].OR.#, #/400000, HOLD RIGHT
U 3340, 2146,3440,0303,1174,4007,0700,0400,0000,1444	; 6264	DBDN1:	AC[BIN1]_[AR]		;STORE AC BACK
							; 6265	=0	AC_[BRX] TEST,	;RETURN FLAGS
U 2146, 2154,3770,0606,0174,4007,0520,0410,0000,0000	; 6266		SKIP DP0, CALL [CLRBIN]	;CLEAR BIN IS S=0
U 2147, 0260,4221,0013,4170,4007,0700,0000,0000,0000	; 6267	ENDSKP:	END STATE, J/SKIP	;NO--ALL DONE
							; 6268	
U 3341, 3342,4551,0404,4374,0007,0700,0000,0037,7777	; 6269	DBNEG:	CLEAR ARX0		;CLEAR EXTRA SIGN BIT
							; 6270		[ARX]_-[ARX], 3T,	;NEGATE AND SEE IF
U 3342, 2150,2441,0404,1174,4007,0621,4000,0000,1443	; 6271		SKIP AD.EQ.0, AC[BIN0]	; ANY CARRY
U 2150, 2153,7771,0003,1274,4007,0700,0000,0000,1443	; 6272	=0	[AR]_.NOT.AC[BIN0], 2T, J/STAC34 ;NO CARRY
							; 6273		[AR]_-AC[BIN0], 3T,	;CARRY
U 2151, 2152,1771,0003,1274,4007,0621,4000,0000,1443	; 6274		SKIP AD.EQ.0		;SEE IF ALL ZERO
U 2152, 2153,4571,1204,4374,4007,0700,0000,0040,0000	; 6275	=0	[ARX]_[400000] XWD 0	;MAKE COPY OF SIGN
							; 6276					; UNLESS HIGH WORD IS ZERO
U 2153, 3343,3440,0303,1174,4007,0700,0400,0000,1443	; 6277	STAC34:	AC[BIN0]_[AR]		;PUT BACK ANSWER
U 3343, 2143,3440,0404,1174,4007,0700,0400,0000,1444	; 6278		AC[BIN1]_[ARX], J/DBDONE	; ..
							; 6279	
							; 6280	;HELPER SUBROUTINE TO CLEAR AC[BIN0] AND AC[BIN1] IF S=0
							; 6281	;CALL WITH:
							; 6282	;	READ [BRX], SKIP DP0, CALL [CLRBIN]
							; 6283	;RETURNS 1 ALWAYS
							; 6284	=0
U 2154, 3344,4223,0000,1174,4007,0700,0400,0000,1443	; 6285	CLRBIN:	AC[BIN0]_0, J/CLRB1
U 2155, 0001,4443,0000,4174,4004,1700,0000,0000,0000	; 6286		RETURN [1]
U 3344, 0001,4223,0000,1174,4004,1700,0400,0000,1444	; 6287	CLRB1:	AC[BIN1]_0, RETURN [1]
							; 6288	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 171
; EXTEND.MIC[7,3]	11:35 26-JULY-1984			EXTEND -- BINARY TO DECIMAL CONVERSION			

							; 6289	.TOC	"EXTEND -- BINARY TO DECIMAL CONVERSION"
							; 6290	
							; 6291	3743:
							; 6292	BDEC:	[BRX]_AC[DLEN],		;GET LENGTH AND FLAGS
U 3743, 2156,3771,0006,1276,6007,0351,0000,0000,1443	; 6293		SKIP FPD		;CONTINUE FROM INTERUPT?
							; 6294	=0	[BRX]_[BRX].AND.#,	;JUST KEEP THE FLAGS
							; 6295		#/777000,		; ..
U 2156, 3345,4551,0606,4374,4007,0700,0000,0077,7000	; 6296		J/BDEC0			;COMPUTE NEW FLAGS
U 2157, 3363,3771,0003,0276,6007,0700,0000,0000,0000	; 6297	DOCVT:	[AR]_AC, J/DOCVT1	;ALL SET PRIOR TO TRAP
U 3345, 3346,3771,0004,1276,6007,0701,0000,0000,1441	; 6298	BDEC0:	[ARX]_AC[1]		;GET LOW BINARY
U 3346, 2125,3771,0003,0276,6007,0700,2000,0071,0024	; 6299		[AR]_AC, SC_20.		;GET HIGH WORD, SET STEP COUNT
							; 6300	=0*	WORK[BDL]_[ARX],	;SAVE IN CASE OF ABORT
U 2125, 2220,3333,0004,7174,4007,0700,0410,0000,0250	; 6301		CALL [CLARX0]		;MAKE SURE BIT 0 IS OFF
							; 6302		WORK[BDH]_[AR],		;SAVE HIGH WORD AND
U 2127, 2160,3333,0003,7174,4007,0520,0400,0000,0247	; 6303		SKIP DP0		; TEST SIGN
							; 6304	=0
							; 6305	BDEC1:	[BRX]_0, HOLD LEFT,	;POSITIVE, CLEAR RH OF BRX
U 2160, 2170,4221,0006,4170,4007,0700,0000,0000,0000	; 6306		J/BDEC3			;COMPUTE # OF DIGITS REQUIRED
							; 6307		[BRX]_[BRX].OR.#, 	;NEGATIVE, SET M
U 2161, 2164,3551,0606,4374,0007,0700,0000,0010,0000	; 6308		#/100000, HOLD RIGHT	; ..
							; 6309	=0*
U 2164, 3071,4551,0404,4374,0007,0700,0010,0037,7777	; 6310	BDEC2:	CLEAR ARX0, CALL [DBLNG1] ;NEGATE AR!ARX
							; 6311		AC_[AR] TEST,		;PUT BACK ANSWER
U 2166, 2162,3770,0303,0174,4007,0520,0400,0000,0000	; 6312		SKIP DP0		;IF STILL MINUS WE HAVE
							; 6313					; 1B0, AND NO OTHER BITS
U 2162, 2160,3440,0404,1174,4007,0700,0400,0000,1441	; 6314	=0	AC[1]_[ARX], J/BDEC1	;POSITIVE NOW
U 2163, 3347,0111,0704,4174,4007,0700,0000,0000,0000	; 6315		[ARX]_[ARX]+1		;JUST 1B0--ADD 1
							; 6316		[BRX]_[BRX].OR.#,	;AND REMEMBER THAT WE DID
							; 6317		#/040000, HOLD RIGHT,	; IN LEFT HALF OF AC+3
U 3347, 2164,3551,0606,4374,0007,0700,0000,0004,0000	; 6318		J/BDEC2			; NEGATE IT AGAIN
							; 6319	=0
U 2170, 0441,3771,0003,0276,6007,0700,0000,0000,0000	; 6320	BDEC3:	[AR]_AC, J/BDEC4	;GET HIGH AC
							; 6321		[BRX]_[BRX].OR.#,	;NO LARGER POWER OF 10 FITS
							; 6322		#/200000,		;SET N FLAG (CLEARLY NOT 0)
U 2171, 2174,3551,0606,4374,0007,0700,0000,0020,0000	; 6323		HOLD RIGHT, J/BDEC5	;SETUP TO FILL, ETC.
							; 6324	=001
							; 6325	BDEC4:	[ARX]_AC[1],		;GET HIGH WORD
U 0441, 2214,3771,0004,1276,6007,0701,0010,0000,1441	; 6326		CALL [BDSUB]		;SEE IF 10**C(BRX) FITS
							; 6327	=011	[BRX]_[BRX]+1,	;NUMBER FITS--TRY A LARGER ONE
U 0443, 2170,0111,0706,4174,4007,0630,2000,0060,0000	; 6328		STEP SC, J/BDEC3	;UNLESS WE ARE OUT OF NUMBERS
U 0447, 2172,4553,0600,4374,4007,0331,0000,0077,7777	; 6329	=111	TR [BRX], #/777777	;ANY DIGITS REQUIRED?
							; 6330	=
							; 6331	=0	[BRX]_[BRX].OR.#,	;SOME DIGITS NEEDED,
							; 6332		#/200000, HOLD RIGHT,	; SET N FLAG
U 2172, 2174,3551,0606,4374,0007,0700,0000,0020,0000	; 6333		J/BDEC5			;CONTINUE BELOW
U 2173, 2174,0111,0706,4174,4007,0700,0000,0000,0000	; 6334		[BRX]_[BRX]+1		;ZERO--FORCE AT LEAST 1 DIGIT
							; 6335	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 172
; EXTEND.MIC[7,3]	11:35 26-JULY-1984			EXTEND -- BINARY TO DECIMAL CONVERSION			

							; 6336	=0
							; 6337	BDEC5:	[AR]_AC[DLEN],		;GET LENGTH
U 2174, 3460,3771,0003,1276,6007,0701,0010,0000,1443	; 6338		CALL [CLRFLG]		;REMOVE FLAGS FROM AR
U 2175, 3350,4221,0005,4174,4007,0700,0000,0000,0000	; 6339		[BR]_0
U 3350, 3351,3441,0605,4170,4007,0700,0000,0000,0000	; 6340		[BR]_[BRX], HOLD LEFT	;GET # OF DIGITS NEEDED
							; 6341		[BR]_[BR]-[AR],		;NUMBER OF FILLS NEEDED
U 3351, 2176,1111,0305,4174,4007,0421,4000,0000,0000	; 6342		SKIP AD.LE.0		;SEE IF ENOUGH ROOM
							; 6343	=0	[ARX]_WORK[BDL],	;DOES NOT FIT IN SPACE ALLOWED
U 2176, 3373,3771,0004,7274,4007,0701,0000,0000,0250	; 6344		J/BDABT			; DO NOT DO CONVERT
U 2177, 2200,3333,0006,4174,4007,0520,0000,0000,0000	; 6345		READ [BRX], SKIP DP0	;IS L ALREADY SET
							; 6346	=0	AC[DLEN]_[BRX],		;NO--NO FILLERS
U 2200, 2157,3440,0606,1174,4007,0700,0400,0000,1443	; 6347		J/DOCVT			;GO CHURN OUT THE NUMBER
							; 6348	
							; 6349	
							; 6350	;HERE TO STORE LEADING FILLERS
U 2201, 3352,3441,0603,4174,0007,0700,0000,0000,0000	; 6351		[AR]_[BRX], HOLD RIGHT	;MAKE SURE THE FLAGS GET SET
U 3352, 3353,3440,0303,1174,4007,0700,0400,0000,1443	; 6352		AC[DLEN]_[AR]		; BEFORE WE PAGE FAIL
U 3353, 3354,3771,0003,7274,4007,0701,0000,0000,0240	; 6353		[AR]_WORK[E0]		;ADDRESS OF FILL (-1)
							; 6354		[AR]_[AR]+1, LOAD VMA,	;FETCH FILLER
U 3354, 3355,0111,0703,4174,4007,0700,0200,0004,0012	; 6355		START READ
U 3355, 3356,3771,0016,4365,5007,0700,0200,0000,0002	; 6356		MEM READ, [T0]_MEM	;GET FILLER INTO AR
U 3356, 3357,3771,0013,4370,4007,0700,0000,0000,0012	; 6357		STATE_[EDIT-DST]	;PAGE FAILS BACKUP DST
U 3357, 3360,2113,0507,7174,4007,0701,4400,0000,0242	; 6358		WORK[SLEN]_[BR]-1, 3T	;SAVE # OF FILLERS
U 3360, 3361,3441,1603,7174,4007,0700,0000,0000,0242	; 6359	BDFILL:	[AR]_[T0], WORK[SLEN]	;RESTORE FILL BYTE AND
							; 6360					; WARM UP RAM FILE
							; 6361		[BR]_WORK[SLEN]+1, 3T,	;MORE FILLERS NEEDED?
U 3361, 0640,0551,0705,7274,4007,0521,0000,0000,0242	; 6362		SKIP DP0
U 0640, 2157,3440,0606,1174,4007,0700,0400,0000,1443	; 6363	=000	AC[DLEN]_[BRX], J/DOCVT	;ALL DONE FIX FLAGS AND CONVERT
							; 6364	=001	WORK[SLEN]_[BR],	;SAVE UPDATED LENGTH
U 0641, 3450,3333,0005,7174,4007,0700,0410,0000,0242	; 6365		CALL [PUTDST]		; AND STORE FILLER
U 0647, 3362,2551,0705,1274,4007,0701,4000,0000,1443	; 6366	=111	[BR]_AC[DLEN]-1		;COUNT DOWN STRING LENGTH
							; 6367	=
U 3362, 3360,3440,0505,1174,4007,0700,0400,0000,1443	; 6368		AC[DLEN]_[BR], J/BDFILL	;KEEP FILLING
							; 6369	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 173
; EXTEND.MIC[7,3]	11:35 26-JULY-1984			EXTEND -- BINARY TO DECIMAL CONVERSION			

							; 6370	;HERE TO STORE THE ANSWER
							; 6371	
							; 6372	DOCVT1:	[ARX]_AC[1],		;GET LOW WORD
U 3363, 3372,3771,0004,1276,6007,0701,0000,0000,1441	; 6373		J/DOCVT2		;ENTER LOOP FROM BOTTOM
							; 6374	=010
							; 6375	BDECLP:	[BR]_[BR]+1,		;COUNT DIGITS
U 0562, 2214,0111,0705,4174,4007,0700,0010,0000,0000	; 6376		CALL [BDSUB]		;KEEP SUBTRACTING 10**C(BRX)
U 0566, 3364,3333,0003,7174,4007,0700,0400,0000,0247	; 6377	=110	WORK[BDH]_[AR]		;SAVE BINARY
							; 6378	=
							; 6379		[AR]_[BR]+WORK[E1],	;OFFSET DIGIT
U 3364, 0636,0551,0503,7274,4003,7701,0000,0000,0241	; 6380		B DISP			;SEE WHICH MODE
							; 6381	=1110	READ [AR], LOAD VMA,	;TRANSLATE, START READING TABLE
U 0636, 2206,3333,0003,4174,4007,0700,0200,0004,0012	; 6382		START READ, J/BDTBL	; GO GET ENTRY FROM TABLE
U 0637, 0510,3333,0004,7174,4007,0700,0400,0000,0250	; 6383	BDSET:	WORK[BDL]_[ARX]		;SAVE LOW BINARY
U 0510, 3450,3771,0013,4370,4007,0700,0010,0000,0012	; 6384	=00*	STATE_[EDIT-DST], CALL [PUTDST]
U 0516, 3365,2551,0705,1274,4007,0701,4000,0000,1443	; 6385	=11*	[BR]_AC[DLEN]-1		;UPDATE STRING LENGTH
U 3365, 3366,3771,0003,7274,4007,0701,0000,0000,0247	; 6386		[AR]_WORK[BDH]
U 3366, 3367,3771,0004,7274,4007,0701,0000,0000,0250	; 6387		[ARX]_WORK[BDL]
U 3367, 2202,4553,0500,4374,4007,0321,0000,0004,0000	; 6388		TL [BR], #/040000	;ARE WE CONVERTING 1B0?
U 2202, 3374,0111,0704,4174,4007,0700,0000,0000,0000	; 6389	=0	[ARX]_[ARX]+1, J/BDCFLG	;YES--FIX THE NUMBER AND CLEAR FLAG
U 2203, 3370,3440,0303,0174,4007,0700,0400,0000,0000	; 6390	DOCVT3:	AC_[AR]
U 3370, 3371,3440,0404,1174,4007,0700,0400,0000,1441	; 6391		AC[1]_[ARX]
U 3371, 3372,3440,0505,1174,4007,0700,0400,0000,1443	; 6392		AC[DLEN]_[BR]		;STORE BACK NEW STRING LENGTH
U 3372, 2204,1111,0706,4174,4007,0531,4000,0000,0000	; 6393	DOCVT2:	[BRX]_[BRX]-1, 3T, SKIP DP18
U 2204, 0562,2441,0705,4174,4467,0701,4000,0003,0000	; 6394	=0	[BR]_-1, SET FPD, 3T, J/BDECLP
U 2205, 0260,4221,0013,4170,4467,0700,0000,0005,0000	; 6395		END STATE, CLR FPD, J/SKIP
							; 6396	
							; 6397	;HERE TO TRANSLATE 1 DIGIT
							; 6398	=0
							; 6399	BDTBL:	END STATE,		;DON'T CHANGE BYTE POINTER IF
							; 6400					; THIS PAGE FAILS
U 2206, 3660,4221,0013,4170,4007,0700,0010,0000,0000	; 6401		CALL [LOADAR]		;GO PUT WORD IN AR
U 2207, 2210,4553,0600,4374,4007,0331,0000,0077,7777	; 6402		TR [BRX], #/777777	;LAST DIGIT
U 2210, 0637,4221,0003,4174,0007,0700,0000,0000,0000	; 6403	=0	[AR]_0, HOLD RIGHT, J/BDSET
U 2211, 2212,4553,0600,4374,4007,0321,0000,0010,0000	; 6404		TL [BRX], #/100000	;AND NEGATIVE
U 2212, 2213,3770,0303,4344,4007,0700,0000,0000,0000	; 6405	=0	[AR]_[AR] SWAP		;LAST AND MINUS, USE LH
U 2213, 0637,4221,0003,4174,0007,0700,0000,0000,0000	; 6406		[AR]_0, HOLD RIGHT, J/BDSET
							; 6407	
U 3373, 1505,3771,0003,7274,4007,0701,0000,0000,0247	; 6408	BDABT:	[AR]_WORK[BDH], J/DAC
							; 6409	
							; 6410	BDCFLG:	[BR]_[BR].AND.NOT.#, 	;CLEAR FLAG THAT TELLS US
							; 6411		#/040000, HOLD RIGHT,	; TO SUBTRACT 1 AND
U 3374, 2203,5551,0505,4374,0007,0700,0000,0004,0000	; 6412		J/DOCVT3		; CONTINUE CONVERTING
							; 6413	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 174
; EXTEND.MIC[7,3]	11:35 26-JULY-1984			EXTEND -- BINARY TO DECIMAL CONVERSION			

							; 6414	;SUBROUTINE TO SUBRTACT A POWER OF 10 FROM AR!ARX
							; 6415	;CALL WITH:
							; 6416	;	AR!ARX/	NUMBER TO BE CONVERTED
							; 6417	;	BRX(RIGHT)/ POWER OF 10
							; 6418	;RETURNS:
							; 6419	;	2 RESULT IS STILL POSITIVE
							; 6420	;	6 RESULT WOULD HAVE BEEN NEGATIVE (RESTORE DONE)
							; 6421	=0
							; 6422	BDSUB:	[T0]_[BRX]+#, 3T, WORK/DECLO, ;ADDRESS OF LOW WORD
U 2214, 2165,0551,0616,4374,4007,0701,0000,0000,0344	; 6423		J/BDSUB1		;NO INTERRUPT
U 2215, 2677,4443,0000,4174,4007,0700,0000,0000,0000	; 6424		J/FIXPC			;INTERRUPT
							; 6425	=0*
							; 6426	BDSUB1:	[T1]_[T0], LOAD VMA,	;PUT IN VMA,
U 2165, 2220,3441,1617,4174,4007,0700,0210,0000,0010	; 6427		CALL [CLARX0]		;FIX UP SIGN OF LOW WORD
							; 6428		[ARX]_[ARX]-RAM, 3T,	;SUBTRACT
U 2167, 2216,1551,0404,6274,4007,0561,4000,0000,0000	; 6429		SKIP CRY1		;SEE IF OVERFLOW
U 2216, 2217,1111,0703,4174,4007,0700,4000,0000,0000	; 6430	=0	[AR]_[AR]-1		;PROCESS CARRY
U 2217, 3375,0551,0616,4374,4007,0701,0000,0000,0373	; 6431		[T0]_[BRX]+#, 3T, WORK/DECHI ;ADDRESS OF HIGH WORD
U 3375, 3376,3333,0016,4174,4007,0700,0200,0000,0010	; 6432		READ [T0], LOAD VMA	;PLACE IN VMA
							; 6433		[AR]_[AR]-RAM, 4T,	;SUBTRACT
U 3376, 2220,1551,0303,6274,4007,0522,4000,0000,0000	; 6434		SKIP DP0		;SEE IF IT FIT
							; 6435	=0
							; 6436	CLARX0:	CLEAR ARX0,		;IT FIT, KEEP LOW WORD +
U 2220, 0002,4551,0404,4374,0004,1700,0000,0037,7777	; 6437		RETURN [2]		; AND RETURN
U 2221, 3377,0551,0303,6274,4007,0700,0000,0000,0000	; 6438		[AR]_[AR]+RAM		;RESTORE
U 3377, 3400,3333,0017,4174,4007,0700,0200,0000,0010	; 6439		READ [T1], LOAD VMA
U 3400, 2222,0551,0404,6274,4007,0561,0000,0000,0000	; 6440		[ARX]_[ARX]+RAM, 3T, SKIP CRY1
							; 6441	=0
							; 6442	BDSUB2:	CLEAR ARX0,		;KEEP LOW WORD +
U 2222, 0006,4551,0404,4374,0004,1700,0000,0037,7777	; 6443		RETURN [6]		;RETURN OVERFLOW
							; 6444		[AR]_[AR]+1,		;ADD BACK THE CARRY
U 2223, 2222,0111,0703,4174,4007,0700,0000,0000,0000	; 6445		J/BDSUB2		;COMPLETE SUBTRACT
							; 6446	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 175
; EXTEND.MIC[7,3]	11:35 26-JULY-1984			EXTEND -- EDIT -- MAIN LOOP				

							; 6447	.TOC	"EXTEND -- EDIT -- MAIN LOOP"
							; 6448	
							; 6449	;HERE FOR EDIT INSTRUCTION
							; 6450	;CALL WITH:
							; 6451	;	AR/	E0	ADDRESS OF FILL, FLOAT, AND MESSAGE TABLE
							; 6452	;	BR/	E1	TRANSLATE TABLE
							; 6453	;
							; 6454	3741:
							; 6455	EDIT:	VMA_[AR]+1, START READ,	;FIRST GET FILL BYTE
U 3741, 3456,0111,0703,4170,4007,0700,0210,0004,0012	; 6456		CALL [GTFILL]		;GO GET IT
U 3751, 2111,3771,0006,0276,6007,0700,0000,0000,0000	; 6457	3751:	[BRX]_AC		;GET PATTERN POINTER
							; 6458	=0**	TL [BRX], #/047777,	;MAKE SURE SECTION 0
U 2111, 3556,4553,0600,4374,4007,0321,0010,0004,7777	; 6459		CALL [BITCHK]		; ..
U 2115, 3401,3443,0600,4174,4007,0700,0200,0004,0012	; 6460	EDITLP:	VMA_[BRX], START READ	;FETCH PATTERN WORD
U 3401, 3402,4221,0013,4170,4007,0700,0000,0000,0000	; 6461		END STATE		;NO SPECIAL PAGE FAIL ACTION
U 3402, 2224,3770,0605,4344,4007,0700,0000,0000,0000	; 6462		[BR]_[BRX] SWAP		;GET PBN IN BITS 20 & 21
							; 6463	=0	[BR]_[BR]*4,		; ..
U 2224, 3660,0115,0505,4174,4007,0700,0010,0000,0000	; 6464		CALL [LOADAR]		;GET PATTERN WORD
U 2225, 0654,3333,0005,4174,4003,1701,0000,0000,0000	; 6465		READ [BR], 3T, DISP/DP LEFT
							; 6466	=1100
U 0654, 2226,3770,0303,4344,4007,0700,2000,0071,0007	; 6467		[AR]_[AR] SWAP, SC_7, J/MOVPAT	;(0) BITS 0-8
U 0655, 2227,3770,0303,4344,4007,0700,0000,0000,0000	; 6468		[AR]_[AR] SWAP, J/MSKPAT	;(1) BITS 9-17
U 0656, 2226,3447,0303,4174,4007,0700,2000,0071,0006	; 6469		[AR]_[AR]*.5, SC_6, J/MOVPAT	;(2) BITS 18-27
U 0657, 3403,4551,0303,4374,4007,0700,0000,0000,0777	; 6470		[AR]_[AR].AND.#, #/777, J/EDISP	;(3) BITS 28-35
							; 6471	=0
U 2226, 2226,3447,0303,4174,4007,0630,2000,0060,0000	; 6472	MOVPAT:	[AR]_[AR]*.5, STEP SC, J/MOVPAT	;SHIFT OVER
U 2227, 3403,4551,0303,4374,4007,0700,0000,0000,0777	; 6473	MSKPAT:	[AR]_[AR].AND.#, #/777
							; 6474	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 176
; EXTEND.MIC[7,3]	11:35 26-JULY-1984			EXTEND -- EDIT -- MAIN LOOP				

							; 6475	;HERE WITH PATTERN BYTE RIGHT ADJUSTED IN AR
U 3403, 2230,3447,0305,4174,4007,0700,2000,0071,0002	; 6476	EDISP:	[BR]_[AR]*.5, SC_2	;SHIFT OVER
							; 6477	=0
U 2230, 2230,3447,0505,4174,4007,0630,2000,0060,0000	; 6478	EDISP1:	[BR]_[BR]*.5, STEP SC, J/EDISP1
U 2231, 0661,3333,0005,4174,4003,5701,0000,0000,0000	; 6479		READ [BR], 3T, DISP/DP	;LOOK AT HIGH 3 BITS
							; 6480	=0001				;(0) OPERATE GROUP
							; 6481		[AR]-#, #/5, 4T,	;	SEE IF 0-4
U 0661, 2232,1553,0300,4374,4007,0532,4000,0000,0005	; 6482		SKIP DP18, J/EDOPR
							; 6483					;(1) MESSAGE BYTE
							; 6484		READ [BRX], SKIP DP0,
U 0663, 2250,3333,0006,4174,4007,0520,0000,0000,0000	; 6485		J/EDMSG
							; 6486					;(2) UNDEFINED
U 0665, 3423,4443,0000,4174,4007,0700,0000,0000,0000	; 6487		J/EDNOP
							; 6488					;(3) UNDEFINED
U 0667, 3423,4443,0000,4174,4007,0700,0000,0000,0000	; 6489		J/EDNOP
							; 6490					;(4) UNDEFINED
U 0671, 3423,4443,0000,4174,4007,0700,0000,0000,0000	; 6491		J/EDNOP
							; 6492					;(5) SKIP IF M SET
							; 6493		TL [BRX], #/100000,
U 0673, 2254,4553,0600,4374,4007,0321,0000,0010,0000	; 6494		J/EDSKP
							; 6495					;(6) SKIP IF N SET
							; 6496		TL [BRX], #/200000,
U 0675, 2254,4553,0600,4374,4007,0321,0000,0020,0000	; 6497		J/EDSKP
							; 6498					;(7) SKIP ALWAYS
U 0677, 2254,4443,0000,4174,4007,0700,0000,0000,0000	; 6499		J/EDSKP
							; 6500	
							; 6501	.TOC	"EXTEND -- EDIT -- DECODE OPERATE GROUP"
							; 6502	
							; 6503	;HERE FOR OPERATE GROUP. SKIP IF IN RANGE
							; 6504	=0
U 2232, 3423,4443,0000,4174,4007,0700,0000,0000,0000	; 6505	EDOPR:	J/EDNOP			;OUT OF RANGE
U 2233, 0710,3333,0003,4174,4003,5701,0000,0000,0000	; 6506		READ [AR], 3T, DISP/DP	;DISPATCH ON TYPE
U 0710, 3404,0111,0701,4174,4007,0700,0000,0000,0000	; 6507	=1000	[PC]_[PC]+1, J/EDSTOP	;(0) STOP EDIT
							; 6508		STATE_[EDIT-SRC], 	;(1) SELECT SOURCE BYTE
U 0711, 2240,3771,0013,4370,4007,0700,0000,0000,0011	; 6509		J/EDSEL
							; 6510		READ [BRX], SKIP DP0,	;(2) START SIGNIFICANCE
U 0712, 0006,3333,0006,4174,4007,0520,0000,0000,0000	; 6511		J/EDSSIG
							; 6512		[BRX]_[BRX].AND.#,	;(3) FIELD SEPERATOR
							; 6513		#/77777, HOLD RIGHT,
U 0713, 3423,4551,0606,4374,0007,0700,0000,0007,7777	; 6514		J/EDNOP
U 0714, 0715,3771,0005,1276,6007,0701,0000,0000,1443	; 6515		[BR]_AC[MARK]		;(4) EXCHANGE MARK AND DEST
							; 6516		VMA_[BR], START READ,
U 0715, 2236,3443,0500,4174,4007,0700,0200,0004,0012	; 6517		J/EDEXMD
							; 6518	=
							; 6519	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 177
; EXTEND.MIC[7,3]	11:35 26-JULY-1984			EXTEND -- EDIT -- STOP EDIT				

							; 6520	.TOC	"EXTEND -- EDIT -- STOP EDIT"
							; 6521	
							; 6522	;HERE TO END AN EDIT OPERATION. PC IS SET TO SKIP IF NORMAL END
							; 6523	; OR NON-SKIP IF ABORT
							; 6524	EDSTOP:	[BR]_.NOT.[BRX],	;AD WILL NOT DO D.AND.NOT.A
U 3404, 3405,7441,0605,4174,4007,0700,1000,0071,0010	; 6525		FE_S#, S#/10		;PRESET FE
U 3405, 3406,3441,0603,4174,4007,0701,1000,0043,0000	; 6526		[AR]_[BRX], 3T, FE_FE+P	;MOVE POINTER, UPBATE PBN
							; 6527		[BR].AND.#, 3T,		;WAS OLD NUMBER 3?
U 3406, 2234,4553,0500,4374,4007,0321,0000,0003,0000	; 6528		#/030000, SKIP ADL.EQ.0	; ..
							; 6529	=0
U 2234, 1515,3770,0303,4334,4017,0700,0000,0041,0000	; 6530	EDSTP1:	[AR]_P, J/STAC		;NO--ALL DONE
							; 6531		[AR]_[AR]+1,		;YES--BUMP WORD #
							; 6532		FE_FE.AND.S#, S#/0700,	;KEEP ONLY FLAG BITS
U 2235, 2234,0111,0703,4174,4007,0700,1000,0051,0700	; 6533		J/EDSTP1		;GO STOP EDIT
							; 6534	
							; 6535	.TOC	"EXTEND -- EDIT -- START SIGNIFICANCE"
							; 6536	
							; 6537	;HERE WITH DST POINTER IN AR
							; 6538	=110
U 0006, 3412,4443,0000,4174,4007,0700,0010,0000,0000	; 6539	EDSSIG:	CALL [EDFLT]		;STORE FLT CHAR
U 0007, 3423,4443,0000,4174,4007,0700,0000,0000,0000	; 6540		J/EDNOP			;DO NEXT PATTERN BYTE
							; 6541	
							; 6542	.TOC	"EXTEND -- EDIT -- EXCHANGE MARK AND DESTINATION"
							; 6543	
							; 6544	;HERE WITH ADDRESS OF MARK POINTER IN BR
							; 6545	=0
							; 6546	EDEXMD:	Q_AC[DSTP],		;GET DEST POINTER
U 2236, 3660,3772,0000,1275,5007,0701,0010,0000,1444	; 6547		CALL [LOADAR]		;GO PUT MARK IN AR
U 2237, 3407,4443,0000,4174,4007,0700,0200,0003,0002	; 6548		START WRITE		;START WRITE. SEPERATE STEP TO AVOID
							; 6549					; PROBLEM ON DPM5
U 3407, 3410,3223,0000,4174,4007,0701,0200,0000,0002	; 6550		MEM WRITE, MEM_Q	;PUT OLD DEST IN MARK
U 3410, 3423,3440,0303,1174,4007,0700,0400,0000,1444	; 6551		AC[DSTP]_[AR], J/EDNOP	;PUT BACK DEST POINTER
							; 6552	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 178
; EXTEND.MIC[7,3]	11:35 26-JULY-1984			EXTEND -- EDIT -- PROCESS SOURCE BYTE			

							; 6553	.TOC	"EXTEND -- EDIT -- PROCESS SOURCE BYTE"
							; 6554	
							; 6555	=0*
							; 6556	EDSEL:	[AR]_AC[SRCP],		;PICK UP SRC POINTER
U 2240, 2275,3771,0003,1276,6007,0701,0010,0000,1441	; 6557		CALL [GETSRC]		;GET SOURCE BYTE
U 2242, 0700,3447,0303,7174,4007,0700,0000,0000,0241	; 6558		[AR]_[AR]*.5, WORK[E1]	;PREPARE TO TRANSLATE
							; 6559	=000	[AR]_[AR]+WORK[E1],	;GO TRANSLATE BY HALFWORDS
U 0700, 3443,0551,0303,7274,4007,0700,0010,0000,0241	; 6560		2T, CALL [TRNAR]	; ..
							; 6561	=010
							; 6562	EDFILL:	READ [AR],		;(2) NO SIGNIFICANCE, GO FILL
							; 6563		SKIP AD.EQ.0,		;    SEE IF ANY FILLER
U 0702, 2244,3333,0003,4174,4007,0621,0000,0000,0000	; 6564		J/EDFIL1		;    GO TO IT
							; 6565		STATE_[EDIT-SRC],	;(3) SIG START, DO FLOAT CHAR
U 0703, 0246,3771,0013,4370,4007,0700,0000,0000,0011	; 6566		J/EDSFLT
U 0704, 3404,4443,0000,4174,4007,0700,0000,0000,0000	; 6567	=100	J/EDSTOP		;(4) ABORT
							; 6568	=101
							; 6569	EDSPUT:	STATE_[EDIT-S+D],	;(5) NORMAL, STORE AT DST
U 0705, 3450,3771,0013,4370,4007,0700,0010,0000,0013	; 6570		CALL [PUTDST]		;    ..
							; 6571	=111
U 0707, 3423,4443,0000,4174,4007,0700,0000,0000,0000	; 6572		J/EDNOP			;(7) BYTE STORED
							; 6573	=
							; 6574	
							; 6575	;HERE TO COMPLETE STORING FILL
							; 6576	=0
U 2244, 0705,4443,0000,4174,4007,0700,0000,0000,0000	; 6577	EDFIL1:	J/EDSPUT		;STORE FILLER
U 2245, 3423,4443,0000,4174,4007,0700,0000,0000,0000	; 6578		J/EDNOP			;NO FILLER TO STORE
							; 6579	
							; 6580	;HERE TO DO FLOAT BYTE
							; 6581	=110
							; 6582	EDSFLT:	WORK[FSIG]_[ARX],	;SAVE SIG CHAR
U 0246, 3412,3333,0004,7174,4007,0700,0410,0000,0246	; 6583		CALL [EDFLT]		;STORE FLOAT CHAR
U 0247, 3411,3771,0003,7274,4007,0701,0000,0000,0246	; 6584		[AR]_WORK[FSIG]		;RESTORE CHAR
							; 6585		[AR]_[AR].AND.# CLR LH,	;JUST KEEP THE BYTE IN CASE
							; 6586		#/77777,		; DEST BYTE .GT. 15 BITS
U 3411, 0705,4251,0303,4374,4007,0700,0000,0007,7777	; 6587		J/EDSPUT		;GO STORE CHAR WHICH STARTED THIS ALL
							; 6588	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 179
; EXTEND.MIC[7,3]	11:35 26-JULY-1984			EXTEND -- EDIT -- PROCESS SOURCE BYTE			

							; 6589	;SUBRUTINE TO PROCESS FLOAT CHAR
							; 6590	;CALL WITH:
							; 6591	;	AR/ POINTER TO STORE @ MARK
							; 6592	;RETURN 7 WITH FLOAT STORED
U 3412, 3413,3771,0005,1276,6007,0701,0000,0000,1443	; 6593	EDFLT:	[BR]_AC[MARK]		;ADDRESS OF MARK POINTER
U 3413, 3414,3443,0500,4174,4007,0700,0200,0003,0012	; 6594		VMA_[BR], START WRITE	;READY TO STORE
U 3414, 3415,3771,0005,1276,6007,0701,0000,0000,1444	; 6595		[BR]_AC[DSTP]		;GET DST POINTER
U 3415, 2246,3333,0005,4175,5007,0701,0200,0000,0002	; 6596		MEM WRITE, MEM_[BR]	;STORE POINTER
							; 6597	=0	[AR]_0 XWD [2],		;FETCH FLOAT CHAR
U 2246, 3417,4751,1203,4374,4007,0700,0010,0000,0002	; 6598		CALL [EDBYTE]		;GET TBL BYTE
							; 6599		MEM READ, [AR]_MEM,	;GET FLOAT CHAR
U 2247, 0740,3771,0003,4365,5007,0621,0200,0000,0002	; 6600		SKIP AD.EQ.0		;SEE IF NULL
							; 6601	=000
							; 6602		[FLG]_[FLG].OR.#,	;REMEMBER TO BACKUP DST POINTER
							; 6603		STATE/EDIT-DST,		; WILL ALSO BACKUP SRC IF CALLED
							; 6604		HOLD LEFT,		; FROM SELECT
U 0740, 3450,3551,1313,4370,4007,0700,0010,0000,0012	; 6605		CALL [PUTDST]		; STORE FLOAT
							; 6606	=001	[BRX]_[BRX].OR.#, #/400000,
U 0741, 3416,3551,0606,4374,0007,0700,0000,0040,0000	; 6607		HOLD RIGHT,  J/EDFLT1	;NULL
							; 6608	=110	[BRX]_[BRX].OR.#, #/400000,
U 0746, 3416,3551,0606,4374,0007,0700,0000,0040,0000	; 6609		HOLD RIGHT,  J/EDFLT1	;MARK STORED
							; 6610	=
							; 6611	EDFLT1:	AC_[BRX],		;SAVE FLAGS SO WE DON'T
							; 6612					;TRY TO DO THIS AGAIN IF
							; 6613					;NEXT STORE PAGE FAILS
U 3416, 0007,3440,0606,0174,4004,1700,0400,0000,0000	; 6614		RETURN [7]		;AND RETURN
							; 6615	
							; 6616	.TOC	"EXTEND -- EDIT -- MESSAGE BYTE"
							; 6617	
							; 6618	;HERE WITH SKIP ON S
							; 6619	=0
							; 6620	EDMSG:	[AR]_WORK[FILL],	;GET FILL BYTE
							; 6621		SKIP AD.EQ.0, 4T,	;SEE IF NULL
U 2250, 0760,3771,0003,7274,4007,0622,0000,0000,0244	; 6622		J/EDMSG1		;GO STORE
							; 6623		[AR]_[AR].AND.# CLR LH, ;GET OFFSET INTO TABLE
U 2251, 2252,4251,0303,4374,4007,0700,0000,0000,0077	; 6624		#/77
							; 6625	=0	[AR]_[AR]+1, WORK[E0],	;PLUS 1
U 2252, 3417,0111,0703,7174,4007,0700,0010,0000,0240	; 6626		CALL [EDBYTE]		;GET TBL BYTE
U 2253, 0760,3771,0003,4365,5007,0700,0200,0000,0002	; 6627		MEM READ, [AR]_MEM	;FROM MEMORY
							; 6628	=000
							; 6629	EDMSG1:	STATE_[EDIT-DST],	;WHAT TO DO ON PAGE FAILS
U 0760, 3450,3771,0013,4370,4007,0700,0010,0000,0012	; 6630		CALL [PUTDST]		;STORE MESSAGE BYTE
U 0761, 3423,4443,0000,4174,4007,0700,0000,0000,0000	; 6631	=001	J/EDNOP			;NULL FILLER
U 0766, 3423,4443,0000,4174,4007,0700,0000,0000,0000	; 6632	=110	J/EDNOP			;NEXT BYTE
							; 6633	=
							; 6634	
U 3417, 3420,0551,0303,7274,4007,0701,0000,0000,0240	; 6635	EDBYTE:	[AR]_[AR]+WORK[E0]	;GET OFFSET INTO TABLE
							; 6636		VMA_[AR], START READ,	;START MEMORY CYCLE
U 3420, 0001,3443,0300,4174,4004,1700,0200,0004,0012	; 6637		RETURN [1]		;RETURN TO CALLER
							; 6638	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 180
; EXTEND.MIC[7,3]	11:35 26-JULY-1984			EXTEND -- EDIT -- SKIP					

							; 6639	.TOC	"EXTEND -- EDIT -- SKIP"
							; 6640	
							; 6641	=0
							; 6642	;HERE TO SKIP ALWAYS
							; 6643	EDSKP:	[AR]_[AR].AND.#, #/77,	;JUST KEEP SKIP DISTANCE
U 2254, 3421,4551,0303,4374,4007,0700,0000,0000,0077	; 6644		J/EDSKP1		;CONTINUE BELOW
							; 6645	;HERE IF WE DO NOT WANT TO SKIP
U 2255, 3423,4443,0000,4174,4007,0700,0000,0000,0000	; 6646		J/EDNOP
U 3421, 3422,0115,0703,4174,4007,0700,0000,0000,0000	; 6647	EDSKP1:	[AR]_([AR]+1)*2		;GIVE 1 EXTRA SKIP
							; 6648		READ [AR], SCAD/A*2,	;PUT THE ADJUSTMENT
							; 6649		SCADA/BYTE5, 3T, LOAD SC, ; THE SC
U 3422, 3424,3333,0003,4174,4007,0701,2000,0007,0000	; 6650		J/EDNOP1		;JOIN MAIN LOOP
							; 6651	
							; 6652	
							; 6653	.TOC	"EXTEND -- EDIT -- ADVANCE PATTERN POINTER"
							; 6654	
U 3423, 3424,4443,0000,4174,4007,0700,2000,0071,0000	; 6655	EDNOP:	SC_0			;NO SKIP
U 3424, 3425,3333,0006,4174,4007,0701,1000,0073,0000	; 6656	EDNOP1:	READ [BRX], 3T, FE_P	;PUT PBN IN FE
U 3425, 3426,4443,0000,4174,4007,0700,1000,0051,0030	; 6657		FE_FE.AND.S#, S#/30	;JUST BYTE #
U 3426, 3427,4443,0000,4174,4007,0700,1000,0040,0000	; 6658		FE_FE+SC		;ADD IN ANY SKIP DISTANCE
U 3427, 3430,4443,0000,4174,4007,0700,1000,0041,0010	; 6659		FE_FE+S#, S#/10		;BUMP PBN
							; 6660		[AR]_FE,		;GET NUMBER OF WORDS
U 3430, 3431,3777,0003,4334,4057,0700,2000,0041,0000	; 6661		LOAD SC			;PUT MSB WHERE IT CAN BE TESTED
							; 6662					; QUICKLY
							; 6663		[AR]_[AR].AND.# CLR LH,	;KEEP ONLY 1 COPY
U 3431, 2256,4251,0303,4374,4007,0630,0000,0000,0170	; 6664		#/170, SKIP/SC		; ..
							; 6665	=0
							; 6666	EDN1A:	[AR]_[AR]*.5, SC_0,
U 2256, 2260,3447,0303,4174,4007,0700,2000,0071,0000	; 6667		J/EDNOP2		;READY TO SHIFT OFF BYTE WITHIN
							; 6668					; WORD
							; 6669		[AR]_[AR].OR.#, #/200,	;GET THE SIGN BIT OF THE FE
							; 6670		HOLD LEFT,		; INTO THE AR. ONLY HAPPENS ON
U 2257, 2256,3551,0303,4370,4007,0700,0000,0000,0200	; 6671		J/EDN1A			; SKP 76 OR SKP 77
							; 6672	=0
U 2260, 2260,3447,0303,4174,4007,0630,2000,0060,0000	; 6673	EDNOP2:	[AR]_[AR]*.5, STEP SC, J/EDNOP2
							; 6674		[BRX]_[BRX]+[AR],	;UPDATE WORD ADDRESS
U 2261, 3432,0111,0306,4170,4007,0700,0000,0000,0000	; 6675		HOLD LEFT
U 3432, 3433,3770,0303,4334,4017,0700,0000,0041,0000	; 6676		[AR]_P			;PUT PBN BACK IN BRX
							; 6677		[BRX]_[BRX].AND.#,	;JUST KEEP FLAGS
							; 6678		#/700000,		; ..
U 3433, 3434,4551,0606,4374,0007,0700,0000,0070,0000	; 6679		HOLD RIGHT
							; 6680		[AR]_[AR].AND.#,	;JUST KEEP PBN
U 3434, 3435,4551,0303,4374,4007,0700,0000,0003,0000	; 6681		#/030000
							; 6682		[BRX]_[BRX].OR.[AR],	;FINAL ANSWER
U 3435, 3436,3111,0306,4174,0007,0700,0000,0000,0000	; 6683		HOLD RIGHT
U 3436, 2115,3440,0606,0174,4007,0700,0400,0000,0000	; 6684		AC_[BRX], J/EDITLP	;DO NEXT FUNCTION
							; 6685	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 181
; EXTEND.MIC[7,3]	11:35 26-JULY-1984			EXTEND SUBROUTINES -- FILL OUT DESTINATION		

							; 6686	.TOC	"EXTEND SUBROUTINES -- FILL OUT DESTINATION"
							; 6687	
							; 6688	;CALL WITH
							; 6689	;	AC[DLEN]/ NEGATIVE NUMBER OF BYTES LEFT IN DEST
							; 6690	;	FILL/  FILL BYTE
							; 6691	;	RETURN [2] WITH FILLERS STORED
							; 6692	;
							; 6693	;NOTE: THIS ROUTINE NEED NOT TEST FOR INTERRUPTS ON EACH BYTE
							; 6694	;	BECAUSE EVERY BYTE STORE DOES A MEMORY READ.
							; 6695	;
							; 6696	=01*
							; 6697	MOVF1:	[AR]_WORK[FILL], 2T,	;GET FILL BYTE
U 0332, 3450,3771,0003,7274,4007,0700,0010,0000,0244	; 6698		CALL [PUTDST]		;PLACE IN DEST
U 0336, 3437,3771,0003,1276,6007,0701,0000,0000,1443	; 6699		[AR]_AC[DLEN]		;AMOUNT LEFT
							; 6700		AC[DLEN]_[AR]+1, 3T,	;STORE UPDATED LEN
U 3437, 2262,0113,0703,1174,4007,0521,0400,0000,1443	; 6701		SKIP DP0		; AND SEE IF DONE
U 2262, 0002,4443,0000,4174,4004,1700,0000,0000,0000	; 6702	=0	RETURN [2]		;DONE
U 2263, 0332,4443,0000,7174,4007,0700,0000,0000,0244	; 6703	MOVFIL:	WORK[FILL], J/MOVF1	;DO ANOTHER BYTE
							; 6704					;ENTERING HERE SAVES 150NS
							; 6705					; PER BYTE BUT COSTS 300NS
							; 6706					; PER FIELD MOVED. I ASSUME (BUT DO
							; 6707					; NOT KNOW) THAT THIS SPEEDS
							; 6708					; THINGS UP.
							; 6709	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 182
; EXTEND.MIC[7,3]	11:35 26-JULY-1984			EXTEND SUBROUTINES -- GET MODIFIED SOURCE BYTE		

							; 6710	.TOC"EXTEND SUBROUTINES -- GET MODIFIED SOURCE BYTE"
							; 6711	
							; 6712	;CALL WITH:
							; 6713	;SLEN = MINUS LENGTH OF STRING
							; 6714	;MSK = MASK FOR BYTE SIZE (1 IF BIT MUST BE ZERO)
							; 6715	;E1 = EFFECTIVE ADDRESS OF OPERATION WORD (SIGN EXTENDED IF OFFSET)
							; 6716	;	[AR]_WORK[SLEN]+1, CALL [SRCMOD]
							; 6717	;RETURNS:
							; 6718	;	1 LENGTH EXHAUSTED
							; 6719	;	2 (EDIT ONLY) NO SIGNIFICANCE
							; 6720	;	3 (EDIT ONLY) SIGNIFICANCE START:
							; 6721	;	4 ABORT: OUT OF RANGE OR TRANSLATE FAILURE
							; 6722	;	5 NORMAL: BYTE IN AR
							; 6723	;
							; 6724	;DROM B SET AS FOLLOWS:
							; 6725	;	0 TRANSLATE
							; 6726	;	1 OFFSET
							; 6727	;	2 EDIT
							; 6728	;	4 CVTDBT
							; 6729	=00
							; 6730	SRCMOD:	WORK[SLEN]_[AR],	;PUT BACK SOURCE LENGTH
							; 6731		SKIP DP0,		;SEE IF DONE
U 1074, 2274,3333,0003,7174,4007,0520,0410,0000,0242	; 6732		CALL [GSRC]		;GET A SOURCE BYTE
U 1075, 0001,4221,0013,4170,4004,1700,0000,0000,0000	; 6733		END STATE, RETURN [1]	;DONE
U 1076, 0716,4443,0000,7174,4003,7700,0000,0000,0241	; 6734		WORK[E1], B DISP	;OFFSET OR TRANSLATE?
							; 6735	=
U 0716, 3442,3447,0303,4174,4007,0700,0000,0000,0000	; 6736	=1110	[AR]_[AR]*.5, J/XLATE	;TRANSLATE
U 0717, 3440,3770,0303,7174,0007,0700,0000,0000,0241	; 6737		FIX [AR] SIGN, WORK[E1]	;IF WE ARE PROCESSING FULL WORD
							; 6738					; BYTES, AND THEY ARE NEGATIVE,
							; 6739					; AND THE OFFSET IS POSITIVE THEN
							; 6740					; WE HAVE TO MAKE BITS -1 AND -2
							; 6741					; COPIES OF THE SIGN BIT.
U 3440, 3441,0551,0303,7274,4007,0700,0000,0000,0241	; 6742		[AR]_[AR]+WORK[E1], 2T	;OFFSET
							; 6743		[AR].AND.WORK[MSK],	;VALID BYTE?
							; 6744		SKIP AD.EQ.0, 4T,	;SKIP IF OK
U 3441, 0004,4553,0300,7274,4004,1622,0000,0000,0243	; 6745		RETURN [4]		;RETURN 4 IF BAD, 5 IF OK
							; 6746	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 183
; EXTEND.MIC[7,3]	11:35 26-JULY-1984			EXTEND SUBROUTINES -- TRANSLATE				

							; 6747	.TOC	"EXTEND SUBROUTINES -- TRANSLATE"
							; 6748	
							; 6749	;HERE WITH BYTE IN AR 1-36. FETCH TABLE ENTRY.
U 3442, 3443,0551,0303,7274,4007,0701,0000,0000,0241	; 6750	XLATE:	[AR]_[AR]+WORK[E1]	;COMPUTE ADDRESS
							; 6751	TRNAR:	READ [AR], LOAD VMA,	;FETCH WORD
U 3443, 2264,3333,0003,4174,4007,0700,0200,0004,0012	; 6752		START READ		; ..
							; 6753	=0	[AR]_[AR]*2,		;GET BACK LSB
							; 6754					;BIT 36 IS NOT PRESERVED 
							; 6755					; BY PAGE FAILS
U 2264, 3661,3445,0303,4174,4007,0700,0010,0000,0000	; 6756		CALL [LOADARX]		;PUT ENTRY IN ARX
U 2265, 2266,4553,0300,4374,4007,0331,0000,0000,0001	; 6757		TR [AR], #/1		;WHICH HALF?
							; 6758	=0
							; 6759	XLATE1:	[AR]_[ARX], 3T, 	;RH -- COPY TO AR
							; 6760		DISP/DP LEFT,		;DISPATCH ON CODE
U 2266, 0721,3441,0403,4174,4003,1701,0000,0000,0000	; 6761		J/TRNFNC		;DISPATCH TABLE
							; 6762		[ARX]_[ARX] SWAP,	;LH -- FLIP AROUND
U 2267, 2266,3770,0404,4344,4007,0700,0000,0000,0000	; 6763		J/XLATE1		;START SHIFT
							; 6764	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 184
; EXTEND.MIC[7,3]	11:35 26-JULY-1984			EXTEND SUBROUTINES -- TRANSLATE				

							; 6765	;HERE ON TRANSLATE OPERATION TO PERFORM FUNCTIONS REQUIRED BY
							; 6766	; THE 3 HIGH ORDER BITS OF THE TRANSLATE FUNCTION HALFWORD. WE
							; 6767	; DISPATCH ON FUNCTION AND HAVE:
							; 6768	;	BRX/	FLAGS
							; 6769	;	ARX/	TABLE ENTRY IN RH
							; 6770	;
							; 6771	=0001
							; 6772					;(0) NOP
							; 6773	TRNFNC:	READ [BRX], SKIP DP0,	;S FLAG ALREADY SET?
U 0721, 2270,3333,0006,4174,4007,0520,0000,0000,0000	; 6774		J/TRNRET		; ..
							; 6775					;(1) ABORT
U 0723, 0004,4443,0000,4174,4004,1700,0000,0000,0000	; 6776		RETURN [4]
							; 6777					;(2) CLEAR M FLAG
							; 6778		[BRX]_[BRX].AND.NOT.#,
							; 6779		#/100000, HOLD RIGHT,	
U 0725, 0721,5551,0606,4374,0007,0700,0000,0010,0000	; 6780		J/TRNFNC
							; 6781					;(3) SET M FLAG
							; 6782		[BRX]_[BRX].OR.#,
							; 6783		#/100000, HOLD RIGHT,
U 0727, 0721,3551,0606,4374,0007,0700,0000,0010,0000	; 6784		J/TRNFNC
							; 6785					;(4) SET N FLAG
							; 6786	TRNSIG:	[BRX]_[BRX].OR.#,
							; 6787		#/200000, HOLD RIGHT,
U 0731, 0721,3551,0606,4374,0007,0700,0000,0020,0000	; 6788		J/TRNFNC
							; 6789					;(5) SET N FLAG THEN ABORT
							; 6790		[BRX]_[BRX].OR.#,
							; 6791		#/200000, HOLD RIGHT,
U 0733, 0004,3551,0606,4374,0004,1700,0000,0020,0000	; 6792		RETURN [4]
							; 6793					;(6) CLEAR M THEN SET N
							; 6794		[BRX]_[BRX].AND.NOT.#,
							; 6795		#/100000, HOLD RIGHT,
U 0735, 0731,5551,0606,4374,0007,0700,0000,0010,0000	; 6796		J/TRNSIG
							; 6797					;(7) SET N AND M
							; 6798		[BRX]_[BRX].OR.#,	
							; 6799		#/300000, HOLD RIGHT,
U 0737, 0721,3551,0606,4374,0007,0700,0000,0030,0000	; 6800		J/TRNFNC
							; 6801	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 185
; EXTEND.MIC[7,3]	11:35 26-JULY-1984			EXTEND SUBROUTINES -- TRANSLATE				

							; 6802	;HERE TO COMPLETE A TRANSLATE
							; 6803	
							; 6804	=0
							; 6805	TRNRET:	READ [ARX], SKIP DP18,	;S-FLAG IS ZERO
							; 6806		B DISP, SKIP DP18,	;SEE IF EDIT OR SIG START
U 2270, 0754,3333,0004,4174,4003,7530,0000,0000,0000	; 6807		J/TRNSS			; ..
							; 6808	TRNSS1:	[AR]_[ARX].AND.# CLR LH, ;S IS SET, JUST RETURN BYTE
U 2271, 0005,4251,0403,4374,4004,1700,0000,0007,7777	; 6809		#/77777, RETURN [5]	; ..
							; 6810	
							; 6811	=1100
							; 6812	TRNSS:	[AR]_AC[DLEN],		;NO SIG ON MOVE OR D2B
U 0754, 0533,3771,0003,1276,6003,7701,0000,0000,1443	; 6813		B DISP, J/TRNNS1	;SEE IF D2B
							; 6814		[BRX]_[BRX].OR.#,	;SIG START ON MOVE OR D2B
							; 6815		#/400000, HOLD RIGHT,
U 0755, 2271,3551,0606,4374,0007,0700,0000,0040,0000	; 6816		J/TRNSS1		;RETURN BYTE
							; 6817		[AR]_WORK[FILL],	;EDIT--NO SIG RETURN FILL
U 0756, 0002,3771,0003,7274,4004,1701,0000,0000,0244	; 6818		RETURN [2]		; ..
							; 6819		[AR]_AC[DSTP],		;EDIT--START OF SIG
U 0757, 0003,3771,0003,1276,6004,1701,0000,0000,1444	; 6820		RETURN [3]		; ..
							; 6821	
							; 6822	=1011
U 0533, 3444,1111,0703,4174,4007,0700,4000,0000,0000	; 6823	TRNNS1:	[AR]_[AR]-1, J/TRNNS2	;COMPENSATE FOR IGNORING SRC
							; 6824		[AR]_WORK[SLEN]+1,	;DEC TO BIN HAS NO DEST LENGTH
U 0537, 1074,0551,0703,7274,4007,0701,0000,0000,0242	; 6825		J/SRCMOD		;JUST UPDATE SRC LENTH
							; 6826	TRNNS2:	AC[DLEN]_[AR] TEST,	;PUT BACK DLEN AND
U 3444, 2272,3770,0303,1174,4007,0520,0400,0000,1443	; 6827		SKIP DP0		; SEE WHICH IS NOW SHORTER
							; 6828	=0	[AR]_WORK[SLEN],	;DEST IS SHORTER. DO NOT CHANGE
U 2272, 1074,3771,0003,7274,4007,0701,0000,0000,0242	; 6829		J/SRCMOD		; AMOUNT LEFT
							; 6830		[AR]_WORK[SLEN]+1,	;GO LOOK AT NEXT BYTE
U 2273, 1074,0551,0703,7274,4007,0701,0000,0000,0242	; 6831		J/SRCMOD
							; 6832	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 186
; EXTEND.MIC[7,3]	11:35 26-JULY-1984			EXTEND SUBROUTINES -- GET UNMODIFIED SOURCE BYTE	

							; 6833	.TOC	"EXTEND SUBROUTINES -- GET UNMODIFIED SOURCE BYTE"
							; 6834	
							; 6835	;CALL:
							; 6836	;	GSRC WITH SKIP ON SOURCE LENGTH
							; 6837	;	GETSRC IF LENGHT IS OK
							; 6838	;WITH:
							; 6839	;	AC1/ SOURCE BYTE POINTER
							; 6840	;RETURNS:
							; 6841	;	1 IF LENGTH RAN OUT
							; 6842	;	2 IF OK (BYTE IN AR)
							; 6843	;
							; 6844	=0
							; 6845	GSRC:	[AR]_AC[DLEN],		;LENGTH RAN OUT
U 2274, 0001,3771,0003,1276,6004,1701,0000,0000,1443	; 6846		RETURN [1]		;RESTORE AR AND RETURN
U 2275, 3445,3771,0003,1276,6007,0701,0000,0000,1441	; 6847	GETSRC:	[AR]_AC[SRCP]		;GET SRC PTR
							; 6848		IBP DP,	IBP SCAD,	;UPDATE BYTE POINTER
U 3445, 0231,3770,0305,4334,4016,7701,0000,0033,6000	; 6849		SCAD DISP, 3T		;SEE IF OFLOW
U 0231, 3447,3441,0503,4174,4007,0700,0000,0000,0000	; 6850	=01	[AR]_[BR], J/GSRC1	;NO OFLOW
U 0233, 3446,3770,0503,4334,4017,0700,0000,0032,6000	; 6851		SET P TO 36-S		;RESET P
U 3446, 3447,0111,0703,4170,4007,0700,0000,0000,0000	; 6852		[AR]_[AR]+1, HOLD LEFT	;BUMP Y
							; 6853	
U 3447, 2276,3440,0303,1174,4007,0700,0400,0000,1441	; 6854	GSRC1:	AC[SRCP]_[AR]		;STORE UPDATED POINTER
							; 6855	=0	READ [AR], LOAD BYTE EA,;SETUP TO FIGURE OUT
U 2276, 3076,3333,0003,4174,4217,0701,1010,0073,0500	; 6856		FE_P, 3T, CALL [BYTEAS]	; EFFECTIVE ADDRESS
							; 6857		READ [AR],		;LOOK AT POINTER
							; 6858		BYTE DISP,		;SEE IF 7 BIT
							; 6859		FE_FE.AND.S#, S#/0770,	;MASK OUT P FIELD
U 2277, 0340,3333,0003,4174,4006,5701,1000,0051,0770	; 6860		J/LDB1			;GO GET THE BYTE
							; 6861	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 187
; EXTEND.MIC[7,3]	11:35 26-JULY-1984			EXTEND SUBROUTINES -- STORE BYTE IN DESTINATION STRING

							; 6862	.TOC	"EXTEND SUBROUTINES -- STORE BYTE IN DESTINATION STRING"
							; 6863	
							; 6864	;CALL WITH:
							; 6865	;	AR/ BYTE TO STORE
							; 6866	;	AC4/ DESTINATION BYTE POINTER
							; 6867	;RETURNS:
							; 6868	;	AR & AC4/ UPDATED BYTE POINTER
							; 6869	;	ARX/ BYTE TO STORE
							; 6870	;	BR/ WORD TO MERGE WITH
							; 6871	;	6 ALWAYS
							; 6872	;
U 3450, 2300,3441,0304,4174,4007,0700,0000,0000,0000	; 6873	PUTDST:	[ARX]_[AR]		;SAVE BYTE
							; 6874	=0	[AR]_AC[DSTP],		;GET DEST POINTER
U 2300, 3451,3771,0003,1276,6007,0701,0010,0000,1444	; 6875		CALL [IDST]		;BUMP DEST POINTER
							; 6876		AD/A+B, A/ARX, B/ARX,	;SHIFT 7-BIT BYTE TO
							; 6877		SCAD/A, 3T,		; NATURAL PLACE, AND PUT
U 2301, 2241,0113,0404,4174,4007,0701,1000,0077,0000	; 6878		SCADA/BYTE5, LOAD FE	; INTO FE
							; 6879	=0*	READ [AR], BYTE DISP,	;GO PUT BYTE IN MEMORY
U 2241, 0360,3333,0003,4174,4006,5701,0010,0000,0000	; 6880		CALL [DPB1]		; ..
U 2243, 0006,4443,0000,4174,4004,1700,0000,0000,0000	; 6881		RETURN [6]		;ALL DONE
							; 6882	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 188
; EXTEND.MIC[7,3]	11:35 26-JULY-1984			EXTEND SUBROUTINES -- UPDATE DEST STRING POINTERS	

							; 6883	.TOC	"EXTEND SUBROUTINES -- UPDATE DEST STRING POINTERS"
							; 6884	
							; 6885	
							; 6886	;SUBROUTINE TO BUMP DST POINTERS
							; 6887	;CALL WITH:
							; 6888	;	AR/	AC[DSTP]
							; 6889	;	RETURN 1 WITH UPDATED POINTER STORED
							; 6890	;
U 3451, 2304,3770,0305,4334,4016,7701,0000,0033,6000	; 6891	IDST:	IBP DP, IBP SCAD, SCAD DISP, 3T
U 2304, 3453,3441,0503,4174,4217,0700,0000,0000,0600	; 6892	=0*	[AR]_[BR], LOAD DST EA, J/IDSTX
U 2306, 3452,3770,0503,4334,4017,0700,0000,0032,6000	; 6893		SET P TO 36-S
U 3452, 3453,0111,0703,4170,4217,0700,0000,0000,0600	; 6894		[AR]_[AR]+1, HOLD LEFT, LOAD DST EA
							; 6895	IDSTX:	AC[DSTP]_[AR], 3T,	;STORE PTR BACK
U 3453, 0230,3440,0303,1174,4006,6701,1400,0073,1444	; 6896		FE_P, DISP/EAMODE	;SAVE P FOR CMPDST
							; 6897	=100*
U 0230, 3101,0553,0300,2274,4007,0701,0200,0004,0712	; 6898	DSTEA:	VMA_[AR]+XR, START READ, PXCT BYTE DATA, 3T, J/BYTFET
U 0232, 3101,3443,0300,4174,4007,0700,0200,0004,0712	; 6899		VMA_[AR], START READ, PXCT BYTE DATA, J/BYTFET
U 0234, 3454,0553,0300,2274,4007,0701,0200,0004,0612	; 6900		VMA_[AR]+XR, START READ, PXCT/BIS-DST-EA, 3T, J/DSTIND
U 0236, 3454,3443,0300,4174,4007,0700,0200,0004,0612	; 6901		VMA_[AR], START READ, PXCT/BIS-DST-EA, J/DSTIND
							; 6902	
U 3454, 3455,3771,0003,4361,5217,0700,0200,0000,0602	; 6903	DSTIND:	MEM READ, [AR]_MEM, HOLD LEFT, LOAD DST EA
U 3455, 0230,4443,0000,2174,4006,6700,0000,0000,0000	; 6904		EA MODE DISP, J/DSTEA
							; 6905	
							; 6906	
							; 6907	;HERE TO TEST ILLEGAL BITS SET
							; 6908	;CALL WITH:
							; 6909	;	SKIP IF ALL BITS LEGAL
							; 6910	;	RETURN [4] IF OK, ELSE DO UUO
							; 6911	;
							; 6912	3556:		;EXTEND OF 0 COMES HERE
U 3556, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 6913	BITCHK:	UUO
U 3557, 0004,4443,0000,4174,4004,1700,0000,0000,0000	; 6914	3557:	RETURN [4]
							; 6915	
							; 6916	;HERE TO PUT FILL IN [AR] AND WORK[FILL]
							; 6917	GTFILL:	MEM READ,		;WAIT FOR DATA
U 3456, 3457,3771,0003,4365,5007,0700,0200,0000,0002	; 6918		[AR]_MEM		;PLACE IN AR
							; 6919		WORK[FILL]_[AR],	;SAVE FOR LATER
U 3457, 0010,3333,0003,7174,4004,1700,0400,0000,0244	; 6920		RETURN [10]		;RETURN TO CALLER
							; 6921	
							; 6922	;SUBROUTINE TO CLEAR FLAGS IN AR
							; 6923	CLRFLG:	[AR]_[AR].AND.#,	;CLEAR FLAGS IN AR
							; 6924		#/000777,		; ..
U 3460, 0001,4551,0303,4374,0004,1700,0000,0000,0777	; 6925		HOLD RIGHT, RETURN [1]
							; 6926	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 189
; EXTEND.MIC[7,3]	11:35 26-JULY-1984			EXTEND -- PAGE FAIL CLEANUP				

							; 6927	.TOC	"EXTEND -- PAGE FAIL CLEANUP"
							; 6928	
							; 6929	;BACK UP SOURCE POINTER
							; 6930	=0
							; 6931	BACKS:	[AR]_AC[SRCP],
U 2302, 3473,3771,0003,1276,6007,0701,0010,0000,1441	; 6932		CALL [BACKBP]		;BACKUP BP
U 2303, 2700,3440,0505,1174,4007,0700,0400,0000,1441	; 6933		AC[SRCP]_[BR], J/CLDISP
							; 6934	
U 3461, 3462,3771,0003,7274,4007,0701,0000,0000,0214	; 6935	CMSDST:	[AR]_WORK[SV.BRX]	;GET OLD SRC LEN
U 3462, 2310,0113,0703,0174,4007,0701,0400,0000,0000	; 6936		AC_[AR]+1, 3T		;BACK UP
							; 6937	;BACK UP DESTINATION POINTER
							; 6938	=0
							; 6939	BACKD:	[AR]_AC[DSTP],
U 2310, 3473,3771,0003,1276,6007,0701,0010,0000,1444	; 6940		CALL [BACKBP]
U 2311, 2700,3440,0505,1174,4007,0700,0400,0000,1444	; 6941		AC[DSTP]_[BR], J/CLDISP
							; 6942	
							; 6943	;FAILURES DURING MOVE STRING (BACKUP LENGTHS)
U 3463, 3464,1771,0003,7274,4007,0701,4000,0000,0242	; 6944	STRPF:	[AR]_-WORK[SLEN]	;GET AMOUNT LEFT
							; 6945	STRPF0:	[BR]_AC[DLEN], 4T,	;WHICH STRING IS LONGER?
U 3464, 2312,3771,0005,1276,6007,0522,0000,0000,1443	; 6946		SKIP DP0
							; 6947	=0
U 2312, 3466,3440,0303,1174,4007,0700,0400,0000,1443	; 6948	STRPF1:	AC[DLEN]_[AR], J/STPF1A	;SRC LONGER
U 2313, 2314,3441,0304,4174,4007,0700,0000,0000,0000	; 6949		[ARX]_[AR]		;COPY SRC LENGTH
							; 6950	=0	[ARX]_[ARX].OR.WORK[SV.BRX], ;REBUILD FLAGS
U 2314, 3671,3551,0404,7274,4007,0701,0010,0000,0214	; 6951		CALL [AC_ARX]		;RESET AC]SLEN]
U 2315, 3465,1111,0503,4174,4007,0700,4000,0000,0000	; 6952		[AR]_[AR]-[BR]		;MAKE DEST LEN
							; 6953	STRPF3:	AC[DLEN]_[AR],		;PUT BACK DEST LEN
U 3465, 2700,3440,0303,1174,4007,0700,0400,0000,1443	; 6954		J/CLDISP		;DO NEXT CLEANUP
							; 6955	
U 3466, 3470,0111,0503,4174,4007,0700,0000,0000,0000	; 6956	STPF1A:	[AR]_[AR]+[BR], J/STRPF2
							; 6957	
U 3467, 3470,1771,0003,7274,4007,0701,4000,0000,0242	; 6958	PFDBIN:	[AR]_-WORK[SLEN]	;RESTORE LENGTH
U 3470, 3471,3551,0303,7274,4007,0701,0000,0000,0214	; 6959	STRPF2:	[AR]_[AR].OR.WORK[SV.BRX]
U 3471, 2700,3440,0303,0174,4007,0700,0400,0000,0000	; 6960	PFGAC0:	AC_[AR], J/CLDISP	;PUT BACK SRC LEN AND FLAGS
							; 6961	
U 3472, 3464,7771,0003,7274,4007,0701,0000,0000,0242	; 6962	STRPF4:	[AR]_.NOT.WORK[SLEN], J/STRPF0
							; 6963	
							; 6964	BACKBP:	IBP DP, SCAD/A+B, SCADA/BYTE1, SCADB/SIZE, ;P_P+S
U 3473, 0001,3770,0305,4334,4014,1700,0000,0043,6000	; 6965		RETURN [1]
							; 6966	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 190
; INOUT.MIC[7,3]	13:32 7-JAN-1986			TRAPS							

							; 6967		.TOC	"TRAPS"
							; 6968	
U 3474, 3475,3741,0104,4074,4007,0700,0000,0000,0000	; 6969	TRAP:	[ARX]_PC WITH FLAGS	;SAVE THE PC WHICH CAUSED THE
							; 6970		WORK[TRAPPC]_[ARX],	; TRAP
U 3475, 2316,3333,0004,7174,4007,0340,0400,0000,0425	; 6971		SKIP KERNEL		;SEE IF UBR OR EBR
							; 6972	=0	[AR]_[AR]+[UBR],	;ADDRESS OF INSTRUCTION
							; 6973		MEM READ,		;WAIT FOR PREFETCH TO GET INTO
							; 6974					; THE CACHE. MAY PAGE FAIL BUT
							; 6975					; THAT IS OK
							; 6976		START READ,		;START FETCH
							; 6977		VMA PHYSICAL,		;ABSOLUTE ADDRESSING
U 2316, 3476,0111,1103,4364,4007,0700,0200,0024,1016	; 6978		J/TRP1			;JOIN COMMON CODE
							; 6979	
							; 6980		[AR]_[AR]+[EBR],	;WE COME HERE IN EXEC MODE
							; 6981		MEM READ,		;WAIT FOR PREFETCH TO GET INTO
							; 6982					; THE CACHE. MAY PAGE FAIL BUT
							; 6983					; THAT IS OK
							; 6984		START READ,		;START FETCH
							; 6985		VMA PHYSICAL,		;ABSOLUTE ADDRESSING
U 2317, 3476,0111,1003,4364,4007,0700,0200,0024,1016	; 6986		J/TRP1			;JOIN COMMON CODE
							; 6987	
							; 6988	TRP1:	MEM READ, [HR]_MEM,	;PLACE INSTRUCTION IN HR
U 3476, 3477,3771,0002,4365,5617,0700,0200,0000,0002	; 6989		LOAD INST		;LOAD IR, XR, @
							; 6990		[HR].AND.#,		;TEST TO SEE IF THIS
							; 6991		#/700000, 3T,		; IS A UUO
U 3477, 2320,4553,0200,4374,4007,0321,0000,0070,0000	; 6992		SKIP ADL.EQ.0
							; 6993	=0	CHANGE FLAGS,		;NOT A UUO
							; 6994		HOLD USER/1,		;CLEAR TRAP FLAGS
U 2320, 2716,4443,0000,4174,4467,0700,0000,0001,0000	; 6995		J/XCT1			;DO THE INSTRUCTION
U 2321, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 6996		UUO			;DO THE UUO
							; 6997	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 191
; INOUT.MIC[7,3]	13:32 7-JAN-1986			IO -- INTERNAL DEVICES					

							; 6998		.TOC	"IO -- INTERNAL DEVICES"
							; 6999	
							; 7000		.DCODE
D 0700, 1200,1700,4100					; 7001	700:	IOT,AC DISP,	J/GRP700
D 0701, 1200,1720,4100					; 7002		IOT,AC DISP,	J/GRP701
							; 7003		.UCODE
							; 7004	
U 1701, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 7005	1701:	UUO		;DATAI APR,
U 1702, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 7006	1702:	UUO		;BLKO APR,
U 1703, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 7007	1703:	UUO		;DATAO APR,
U 1706, 3502,3771,0005,4304,4007,0701,0000,0000,0000	; 7008	1706:	[BR]_APR, J/APRSZ ;CONSZ APR,
U 1707, 3500,3771,0005,4304,4007,0701,0000,0000,0000	; 7009	1707:	[BR]_APR, J/APRSO ;CONSO APR,
							; 7010	1710:
U 1710, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 7011	RDERA:	UUO		;BLKI PI,
U 1711, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 7012	1711:	UUO		;DATAI PI,
U 1712, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 7013	1712:	UUO		;BLKO PI,
U 1713, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 7014	1713:	UUO		;DATAO PI,
U 1716, 0136,3441,1405,4174,4007,0700,0000,0000,0000	; 7015	1716:	[BR]_[PI], J/CONSZ ;CONSZ PI,
U 1717, 3501,3441,1405,4174,4007,0700,0000,0000,0000	; 7016	1717:	[BR]_[PI], J/CONSO ;CONSO PI,
							; 7017	
							; 7018	1720:
U 1720, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 7019	GRP701:	UUO		;BLKI PAG,
U 1726, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 7020	1726:	UUO		;CONSZ PAG,
U 1727, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 7021	1727:	UUO		;CONSO PAG,
							; 7022	
							; 7023	;680I AND CACHE SWEEP STUFF
U 1730, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 7024	1730:	UUO
U 1731, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 7025	1731:	UUO
U 1732, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 7026	1732:	UUO
U 1733, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 7027	1733:	UUO
U 1734, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 7028	1734:	UUO
U 1735, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 7029	1735:	UUO
U 1736, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 7030	1736:	UUO
U 1737, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 7031	1737:	UUO
							; 7032	
U 3500, 3501,4251,0505,4374,4007,0700,0000,0000,7770	; 7033	APRSO:	[BR]_[BR].AND.# CLR LH, #/7770
U 3501, 0260,4113,0305,4174,4007,0330,0000,0000,0000	; 7034	CONSO:	[BR].AND.[AR], SKIP ADR.EQ.0, J/SKIP
							; 7035	
U 3502, 0136,4251,0505,4374,4007,0700,0000,0000,7770	; 7036	APRSZ:	[BR]_[BR].AND.# CLR LH, #/7770
							; 7037	136:					;STANDARD LOCATION FOR VERSION INFO,
							; 7038						;ANY UWORD THAT HAS A FREE # FIELD CAN
							; 7039						;BE USED.
							; 7040	CONSZ:	[BR].AND.[AR], SKIP ADR.EQ.0, J/DONE,
							; 7041		MICROCODE RELEASE(MAJOR)/UCR,	;MAJOR VERSION #
U 0136, 1400,4113,0305,4174,4007,0330,0000,0000,0020	; 7042		MICROCODE RELEASE(MINOR)/UCR	;MINOR VERSION # (FOR ID ONLY)
							; 7043	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 192
; INOUT.MIC[7,3]	13:32 7-JAN-1986			IO -- INTERNAL DEVICES					

							; 7044	1700:
							; 7045	GRP700:
							; 7046	APRID:	[BR]_#,
U 1700, 0137,3771,0005,4374,4007,0700,0000,0001,0001	; 7047		#/4097.
							; 7048	137:	[BR]_#,
							; 7049		MICROCODE OPTION(INHCST)/OPT,
							; 7050		MICROCODE OPTION(NOCST)/OPT,
							; 7051		MICROCODE OPTION(NONSTD)/OPT,
							; 7052		MICROCODE OPTION(UBABLT)/OPT,
							; 7053		MICROCODE OPTION(KIPAGE)/OPT,
							; 7054		MICROCODE OPTION(KLPAGE)/OPT,
							; 7055		MICROCODE VERSION/UCV,
							; 7056		HOLD RIGHT,
U 0137, 3613,3771,0005,4374,0007,0700,0000,0003,0130	; 7057		J/RTNREG
							; 7058	
							; 7059	1704:
U 1704, 3503,3771,0005,7274,4007,0701,0000,0000,0230	; 7060	WRAPR:	[BR]_WORK[APR]
							; 7061		[BR]_[BR].AND.NOT.#,	;CLEAR THE OLD PIA
U 3503, 3504,5551,0505,4370,4007,0700,0000,0000,0007	; 7062		#/7, HOLD LEFT		; ..
U 3504, 3505,4551,0304,4374,4007,0700,0000,0000,0007	; 7063		[ARX]_[AR].AND.#, #/7	;PUT NEW PIA IN ARX
U 3505, 3506,3111,0405,4174,4007,0700,0000,0000,0000	; 7064		[BR]_[BR].OR.[ARX]	;PUT NEW PIA IN BR
							; 7065		[ARX]_[AR].AND.#, 	;MASK THE DATA BITS
U 3506, 3507,4551,0304,4374,4007,0700,0000,0000,7760	; 7066		#/007760		; DOWN TO ENABLES
U 3507, 2322,4553,0300,4374,4007,0331,0000,0010,0000	; 7067		TR [AR], #/100000	;WANT TO ENABLE ANY?
U 2322, 2323,3111,0405,4174,4007,0700,0000,0000,0000	; 7068	=0	[BR]_[BR].OR.[ARX]	;YES--SET THEM
U 2323, 2324,4553,0300,4374,4007,0331,0000,0004,0000	; 7069		TR [AR], #/40000	;WANT TO DISABLE ANY?
U 2324, 2325,5111,0405,4174,4007,0700,0000,0000,0000	; 7070	=0	[BR]_[BR].AND.NOT.[ARX]	;YES--CLEAR THEM
U 2325, 3510,3771,0006,4304,4007,0701,0000,0000,0000	; 7071		[BRX]_APR		;GET CURRENT STATUS
U 3510, 2326,4553,0300,4374,4007,0331,0000,0002,0000	; 7072		TR [AR], #/20000	;WANT TO CLEAR FLAGS?
U 2326, 2327,5111,0406,4174,4007,0700,0000,0000,0000	; 7073	=0	[BRX]_[BRX].AND.NOT.[ARX] ;YES--CLEAR BITS
U 2327, 2330,4553,0300,4374,4007,0331,0000,0001,0000	; 7074		TR [AR], #/10000	;WANT TO SET ANY FLAGS?
U 2330, 2331,3111,0406,4174,4007,0700,0000,0000,0000	; 7075	=0	[BRX]_[BRX].OR.[ARX]	;YES--SET FLAGS
U 2331, 2332,4553,0300,4374,4007,0331,0000,0003,0000	; 7076		TR [AR], #/30000	;ANY CHANGE AT ALL?
							; 7077	=0	READ [BRX],		;YES--LOAD NEW FLAGS
U 2332, 3513,3333,0006,4174,4007,0700,0000,0000,0000	; 7078		J/WRAPR2		;TURN OFF INTERRUPT 8080
U 2333, 3511,3333,0005,4174,4007,0700,0000,0000,0000	; 7079	WRAPR1:	READ [BR]		;FIX DPM TIMING BUG
							; 7080		READ [BR], 		;ENABLE CONDITIONS
U 3511, 3512,3333,0005,4174,4257,0700,0000,0000,0000	; 7081		SET APR ENABLES
							; 7082		WORK[APR]_[BR],		;SAVE FOR RDAPR
U 3512, 1400,3333,0005,7174,4007,0700,0400,0000,0230	; 7083		J/DONE			;ALL DONE
							; 7084	
							; 7085	WRAPR2:	READ [BRX], 		;LOAD NEW FLAGS
U 3513, 3514,3333,0006,4174,4237,0700,0000,0000,0000	; 7086		SPEC/APR FLAGS		; ..
							; 7087		[BRX]_[BRX].AND.NOT.#,	;CLEAR INTERRUPT THE 8080
U 3514, 3515,5551,0606,4370,4007,0700,0000,0000,2000	; 7088		#/002000, HOLD LEFT	; FLAG
							; 7089		READ [BRX], 		;LOAD NEW FLAGS
							; 7090		SPEC/APR FLAGS,		; ..
U 3515, 2333,3333,0006,4174,4237,0700,0000,0000,0000	; 7091		J/WRAPR1		;LOOP BACK
							; 7092	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 193
; INOUT.MIC[7,3]	13:32 7-JAN-1986			IO -- INTERNAL DEVICES					

							; 7093	1705:
U 1705, 3516,3771,0005,7274,4007,0701,0000,0000,0230	; 7094	RDAPR:	[BR]_WORK[APR]
							; 7095		[BR]_[BR] SWAP,		;PUT ENABLES IN BOTH
U 3516, 3517,3770,0505,4344,0007,0700,0000,0000,0000	; 7096		HOLD RIGHT		; HALVES
							; 7097		[BR]_[BR].AND.#,	;SAVE ENABLES IN LH
							; 7098		#/7760,			;
U 3517, 3520,4551,0505,4374,0007,0700,0000,0000,7760	; 7099		HOLD RIGHT
							; 7100		[BR]_[BR].AND.#,	;SAVE PIA IN RH
							; 7101		#/7,
U 3520, 3521,4551,0505,4370,4007,0700,0000,0000,0007	; 7102		HOLD LEFT
U 3521, 3522,3771,0004,4304,4007,0701,0000,0000,0000	; 7103		[ARX]_APR		;READ THE APR FLAGS
							; 7104		[ARX]_[ARX].AND.# CLR LH, ;MASK OUT JUNK
U 3522, 3523,4251,0404,4374,4007,0700,0000,0000,7770	; 7105		#/007770		;KEEP 8 FLAGS
							; 7106		[BR]_[BR].OR.[ARX],	;MASH THE STUFF TOGETHER
U 3523, 3613,3111,0405,4174,4007,0700,0000,0000,0000	; 7107		J/RTNREG		;RETURN
							; 7108	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 194
; INOUT.MIC[7,3]	13:32 7-JAN-1986			IO -- INTERNAL DEVICES -- EBR & UBR			

							; 7109	.TOC	"IO -- INTERNAL DEVICES -- EBR & UBR"
							; 7110	
							; 7111		;UBR FORMAT:
							; 7112		;BITS  0 & 2	LOAD FLAGS (RETURNED ON RDUBR)
							; 7113		;BITS  3 - 5	ZERO
							; 7114		;BITS  6 -11	AC BLOCKS SELECTED - CUR,PREV
							; 7115		;BITS 16 -35	UPT PHYSICAL ADDRESS
							; 7116	
							; 7117	1723:
							; 7118	WRUBR:	VMA_[AR],		;LOAD E INTO VMA
U 1723, 3524,3443,0300,4174,4007,0700,0200,0004,0012	; 7119		START READ		;START MEMORY
							; 7120		MEM READ,		;WAIT FOR DATA
							; 7121		[AR]_MEM, 3T,		;PUT IT INTO THE AR
U 3524, 2334,3771,0003,4365,5007,0521,0200,0000,0002	; 7122		SKIP DP0		;SEE IF WE WANT TO LOAD
							; 7123					; AC BLOCK NUMBERS
							; 7124	
							; 7125	=0	[AR]_[AR].AND.#,	;NO--CLEAR JUNK IN AR (ALL BUT LD UBR)
							; 7126		#/100000,		; LEAVE ONLY LOAD UBR
							; 7127		HOLD RIGHT,		; IN LEFT HALF
							; 7128		SKIP ADL.EQ.0, 3T,	;SEE IF WE WANT TO LOAD UBR
U 2334, 2336,4551,0303,4374,0007,0321,0000,0010,0000	; 7129		J/ACBSET		;SKIP AROUND UBR LOAD
							; 7130	
							; 7131		;HERE WHEN WE WANT TO LOAD AC BLOCK SELECTION
							; 7132		[UBR]_[UBR].AND.#,	;MASK OUT THE UBR'S OLD
							; 7133		#/770077,		; AC BLOCK NUMBERS
U 2335, 3525,4551,1111,4374,0007,0700,0000,0077,0077	; 7134		HOLD RIGHT		;IN THE LEFT HALF
							; 7135	
							; 7136		[AR]_[AR].AND.#,	;CLEAR ALL BUT NEW SELECTION
							; 7137		#/507700,		;AND LOAD BITS
U 3525, 3526,4551,0303,4374,0007,0700,0000,0050,7700	; 7138		HOLD RIGHT		;IN AR LEFT
							; 7139	
							; 7140		[AR].AND.#,		;SEE IF WE WANT TO LOAD
							; 7141		#/100000, 3T,		; UBR ALSO
U 3526, 2336,4553,0300,4374,4007,0321,0000,0010,0000	; 7142		SKIP ADL.EQ.0
							; 7143	
							; 7144		;HERE WITH AR LEFT = NEW AC BLOCKS OR ZERO, 
							; 7145		;SKIP IF DON'T LOAD UBR
							; 7146	=0
							; 7147	ACBSET: [BR]_[AR].AND.#,	;COPY UBR PAGE NUMBER
							; 7148		#/3777,			; INTO BR
U 2336, 3527,4551,0305,4374,4007,0700,0000,0000,3777	; 7149		J/SETUBR		;GO LOAD UBR
							; 7150	
							; 7151		[UBR]_[UBR].OR.[AR],	;DO NOT LOAD UBR
							; 7152					; PUT AC BLOCK # IN
							; 7153		HOLD RIGHT,		; THE LEFT HALF
							; 7154		LOAD AC BLOCKS,		;LOAD HARDWARE
U 2337, 1400,3111,0311,4174,0477,0700,0000,0000,0000	; 7155		J/DONE			;ALL DONE
							; 7156	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 195
; INOUT.MIC[7,3]	13:32 7-JAN-1986			IO -- INTERNAL DEVICES -- EBR & UBR			

							; 7157		;HERE WITH AR LEFT AS BEFORE, AR RIGHT = MASKED PAGE #
							; 7158	SETUBR: [BR]_0, 		;CLEAR BR LEFT
							; 7159		HOLD RIGHT,		;BR IS 0,,PAGE #
U 3527, 2340,4221,0005,4174,0007,0700,2000,0071,0007	; 7160		SC_7			;PUT THE COUNT IN SC
							; 7161	=0
							; 7162	STUBRS: [BR]_[BR]*2,		;SHIFT BR OVER
							; 7163		STEP SC,		; 9 PLACES
U 2340, 2340,3445,0505,4174,4007,0630,2000,0060,0000	; 7164		J/STUBRS		;PRODUCING UPT ADDRESS
							; 7165	
							; 7166		[UBR]_[UBR].AND.#,	;MASK OUT OLD UBR
							; 7167		#/777774,		; BITS IN
U 2341, 3530,4551,1111,4374,0007,0700,0000,0077,7774	; 7168		HOLD RIGHT		; LEFT HALF
							; 7169	
							; 7170		[UBR]_0,		;CLEAR RIGHT HALF
U 3530, 3531,4221,0011,4170,4007,0700,0000,0000,0000	; 7171		HOLD LEFT		;UBR IS FLGS+ACBLK+0,,0
							; 7172	
U 3531, 3532,3111,0511,4174,4007,0700,0000,0000,0000	; 7173		[UBR]_[UBR].OR.[BR]	;PUT IN PAGE TABLE ADDRESS
							; 7174	
							; 7175		[UBR]_[UBR].OR.[AR],	;PUT IN AC BLOCK #
							; 7176		HOLD RIGHT,		; IN LEFT HALF
							; 7177		LOAD AC BLOCKS,		;TELL HARDWARE
U 3532, 2406,3111,0311,4174,0477,0700,0000,0000,0000	; 7178		J/SWEEP			;CLEAR CACHE
							; 7179	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 196
; INOUT.MIC[7,3]	13:32 7-JAN-1986			IO -- INTERNAL DEVICES -- EBR & UBR			

							; 7180	1724:
U 1724, 2342,3445,0303,4174,4007,0700,2000,0071,0006	; 7181	WREBR:	[AR]_[AR]*2, SC_6	;DO A SHIFT OVER 8 MORE
							; 7182	=0
U 2342, 2342,3445,0303,4174,4007,0630,2000,0060,0000	; 7183	WREBR1:	[AR]_[AR]*2, STEP SC, J/WREBR1	;SKIP WHEN = -1
							; 7184	.IF/FULL			;DO NOT ENABLE PAGING IN SMALL
							; 7185					; MICROCODE.
U 2343, 3533,3771,0005,7274,4007,0701,0000,0000,0230	; 7186		[BR]_WORK[APR]
U 3533, 3534,4551,0505,4370,4007,0700,0000,0074,7777	; 7187		[BR]_[BR].AND.#, #/747777, HOLD LEFT
U 3534, 2344,4553,0300,4374,4007,0321,0000,0000,0020	; 7188		[AR].AND.#, #/20, 3T, SKIP ADL.EQ.0	;BIT 22 - TRAP ENABLE
U 2344, 2345,3551,0505,4370,4007,0700,0000,0003,0000	; 7189	=0	[BR]_[BR].OR.#, #/030000, HOLD LEFT	;SET - ALLOW TRAPS TO HAPPEN
U 2345, 3535,3333,0005,4174,4257,0700,0000,0000,0000	; 7190		READ [BR], SET APR ENABLES
U 3535, 3536,3333,0005,7174,4007,0700,0400,0000,0230	; 7191		WORK[APR]_[BR]
							; 7192	.ENDIF/FULL
							; 7193	
							; 7194	.IF/KIPAGE
							; 7195	.IF/KLPAGE
U 3536, 3537,3441,0310,4174,4007,0700,0000,0000,0000	; 7196		[EBR]_[AR]		;NOTE: SHIFTED LEFT 9 BITS
U 3537, 2346,4553,1000,4374,4007,0321,0000,0000,0040	; 7197		[EBR].AND.#, #/40, 3T, SKIP ADL.EQ.0	;BIT 21 - KL PAGING ENABLE
U 2346, 2406,3551,1010,4374,0007,0700,0000,0040,0000	; 7198	=0	[EBR]_[EBR].OR.#, #/400000, HOLD RIGHT, J/SWEEP ;YES, SET INTERNAL FLAG
U 2347, 2406,5551,1010,4374,0007,0700,0000,0040,0000	; 7199		[EBR]_[EBR].AND.NOT.#, #/400000, HOLD RIGHT, J/SWEEP ;NO, CLR BIT 0
							; 7200	.ENDIF/KLPAGE
							; 7201	.ENDIF/KIPAGE
							; 7202	
							;;7203	.IFNOT/KLPAGE			;MUST BE KI ONLY
							;;7204		[EBR]_[AR],J/SWEEP	;SO INTERNAL FLAG ISN'T USED
							; 7205	.ENDIF/KLPAGE
							; 7206	
							;;7207	.IFNOT/KIPAGE			;MUST BE KL ONLY
							;;7208		[EBR]_[AR],J/SWEEP	;SO INTERNAL FLAG ISN'T USED
							; 7209	.ENDIF/KIPAGE
							; 7210	
							; 7211	1725:
U 1725, 2350,3447,1005,4174,4007,0700,2000,0071,0006	; 7212	RDEBR:	[BR]_[EBR]*.5, SC_6
							; 7213	=0
U 2350, 2350,3447,0505,4174,4007,0630,2000,0060,0000	; 7214	RDEBR1:	[BR]_[BR]*.5, STEP SC, J/RDEBR1
U 2351, 3540,4551,0505,4374,4007,0700,0000,0006,3777	; 7215		[BR]_[BR].AND.#, #/63777 ;MASK TO JUST EBR
							; 7216		[BR]_0,			;CLEAR LEFT HALF
							; 7217		HOLD RIGHT,		; BITS
U 3540, 3613,4221,0005,4174,0007,0700,0000,0000,0000	; 7218		J/RTNREG		;RETURN ANSWER
							; 7219	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 197
; INOUT.MIC[7,3]	13:32 7-JAN-1986			IO -- INTERNAL DEVICES -- EBR & UBR			

							; 7220	1721:	
U 1721, 2352,4551,1105,4374,0007,0700,0000,0050,7700	; 7221	RDUBR:	[BR]_[UBR].AND.#,#/507700,HOLD RIGHT	;GET LOAD BITS AND AC BLOCKS
U 2352, 2354,3447,1106,4174,4007,0700,2010,0071,0006	; 7222	=0	[BRX]_[UBR]*.5, SC_6, CALL [GTPCW1]	;SET SC (9) START SHIFT,GET UBR
							; 7223		VMA_[AR],START WRITE,	;START TO
U 2353, 3614,3443,0300,4174,4007,0700,0200,0003,0012	; 7224		J/RTNRG1		;RETURN DATA
							; 7225	
							; 7226	
U 3541, 3542,4551,1105,4374,0007,0700,0000,0050,7700	; 7227	GETPCW:	[BR]_[UBR].AND.#,#/507700,HOLD RIGHT	;GET LOAD BITS AND AC BLOCKS
U 3542, 2354,3447,1106,4174,4007,0700,2000,0071,0006	; 7228		[BRX]_[UBR]*.5, SC_6			;SET SC (9) START SHIFT
							; 7229	
							; 7230	=0
U 2354, 2354,3447,0606,4174,4007,0630,2000,0060,0000	; 7231	GTPCW1:	[BRX]_[BRX]*.5, STEP SC, J/GTPCW1	;SHIFT UBR ADDR TO PAGE #
U 2355, 3543,4551,0606,4374,4007,0700,0000,0000,3777	; 7232		[BRX]_[BRX].AND.#, #/3777		;ONLY PAGE #
U 3543, 0001,3441,0605,4170,4004,1700,0000,0000,0000	; 7233		[BR]_[BRX], HOLD LEFT, RETURN [1]	;MOVE PAGE # TO RH OF RESULT
							; 7234	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 198
; INOUT.MIC[7,3]	13:32 7-JAN-1986			IO -- INTERNAL DEVICES -- KL PAGING REGISTERS		

							; 7235	.TOC	"IO -- INTERNAL DEVICES -- KL PAGING REGISTERS"
							; 7236	
							; 7237		.DCODE
D 0702, 1216,1760,4700					; 7238	702:	IOT,AC DISP,	M,	J/GRP702
							; 7239		.UCODE
							; 7240	
							; 7241	1760:
							; 7242	GRP702:
U 1760, 3613,3771,0005,7274,4007,0701,0000,0000,0215	; 7243	RDSPB:	[BR]_WORK[SBR], J/RTNREG
							; 7244	1761:
U 1761, 3613,3771,0005,7274,4007,0701,0000,0000,0216	; 7245	RDCSB:	[BR]_WORK[CBR], J/RTNREG
							; 7246	1762:
U 1762, 3613,3771,0005,7274,4007,0701,0000,0000,0220	; 7247	RDPUR:	[BR]_WORK[PUR], J/RTNREG
							; 7248	1763:
U 1763, 3613,3771,0005,7274,4007,0701,0000,0000,0217	; 7249	RDCSTM:	[BR]_WORK[CSTM], J/RTNREG
							; 7250	1766:
U 1766, 3613,3771,0005,7274,4007,0701,0000,0000,0227	; 7251	RDHSB:	[BR]_WORK[HSBADR], J/RTNREG
U 1767, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 7252	1767:	UUO
							; 7253	
							; 7254	1770:
U 1770, 3544,4443,0000,4174,4007,0703,0200,0006,0002	; 7255	WRSPB:	START READ,WRITE TEST,5T	;WAIT FOR (?) WRITE-TEST PF
U 3544, 3545,3771,0003,4365,5007,0700,0200,0000,0002	; 7256		MEM READ, [AR]_MEM
U 3545, 1400,3333,0003,7174,4007,0700,0400,0000,0215	; 7257		WORK[SBR]_[AR], J/DONE
							; 7258	1771:
U 1771, 3546,4443,0000,4174,4007,0703,0200,0006,0002	; 7259	WRCSB:	START READ,WRITE TEST,5T	;WAIT FOR (?) WRITE-TEST PF
U 3546, 3547,3771,0003,4365,5007,0700,0200,0000,0002	; 7260		MEM READ, [AR]_MEM
U 3547, 1400,3333,0003,7174,4007,0700,0400,0000,0216	; 7261		WORK[CBR]_[AR], J/DONE
							; 7262	1772:
U 1772, 3550,4443,0000,4174,4007,0703,0200,0006,0002	; 7263	WRPUR:	START READ,WRITE TEST,5T	;WAIT FOR (?) WRITE-TEST PF
U 3550, 3551,3771,0003,4365,5007,0700,0200,0000,0002	; 7264		MEM READ, [AR]_MEM
U 3551, 1400,3333,0003,7174,4007,0700,0400,0000,0220	; 7265		WORK[PUR]_[AR], J/DONE
							; 7266	1773:
U 1773, 3552,4443,0000,4174,4007,0703,0200,0006,0002	; 7267	WRCSTM:	START READ,WRITE TEST,5T	;WAIT FOR (?) WRITE-TEST PF
U 3552, 3553,3771,0003,4365,5007,0700,0200,0000,0002	; 7268		MEM READ, [AR]_MEM
U 3553, 1400,3333,0003,7174,4007,0700,0400,0000,0217	; 7269		WORK[CSTM]_[AR], J/DONE
							; 7270	1776:
U 1776, 3554,4443,0000,4174,4007,0703,0200,0006,0002	; 7271	WRHSB:	START READ,WRITE TEST,5T	;WAIT FOR (?) WRITE-TEST PF
U 3554, 3555,3771,0003,4365,5007,0700,0200,0000,0002	; 7272		MEM READ, [AR]_MEM
U 3555, 1400,3333,0003,7174,4007,0700,0400,0000,0227	; 7273		WORK[HSBADR]_[AR], J/DONE
							; 7274	
U 1777, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 7275	1777:	UUO
							; 7276	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 199
; INOUT.MIC[7,3]	13:32 7-JAN-1986			IO -- INTERNAL DEVICES -- TIMER CONTROL			

							; 7277	.TOC	"IO -- INTERNAL DEVICES -- TIMER CONTROL"
							; 7278	
							; 7279	
							; 7280					;BEGIN [123]
							; 7281	TICK:	[AR]_WORK[TIME1],	;GET LOW WORD
U 3560, 3561,3771,0003,7274,4117,0701,0000,0000,0301	; 7282		SPEC/CLRCLK		;CLEAR CLOCK FLAG
							; 7283					;END [123]
U 3561, 3562,4751,1205,4374,4007,0700,0000,0001,0000	; 7284	TOCK:	[BR]_0 XWD [10000]	;2^12 UNITS PER MS
U 3562, 3563,0111,0503,4174,4007,0700,0000,0000,0000	; 7285		[AR]_[AR]+[BR]		;INCREMENT THE TIMER
U 3563, 2356,3770,0303,4174,0007,0520,0000,0000,0000	; 7286		FIX [AR] SIGN, SKIP DP0	;SEE IF IT OVERFLOWED
							; 7287	=0
							; 7288	TOCK1:	WORK[TIME1]_[AR],	;STORE THE NEW TIME
U 2356, 3564,3333,0003,7174,4007,0700,0400,0000,0301	; 7289		J/TOCK2			;SKIP OVER THE OVERFLOW CODE
U 2357, 2305,3771,0003,7274,4007,0701,0000,0000,0300	; 7290		[AR]_WORK[TIME0]	 ;GET HIGH WORD
							; 7291	=0*	[AR]_[AR]+1,		;BUMP IT
U 2305, 3572,0111,0703,4174,4007,0700,0010,0000,0000	; 7292		CALL [WRTIM1]		;STORE BACK IN RAM
							; 7293		[AR]_0,			;CAUSE LOW WORD WORD
U 2307, 2356,4221,0003,4174,4007,0700,0000,0000,0000	; 7294		J/TOCK1			; TO GET STORED
U 3564, 3565,3771,0003,7274,4007,0701,0000,0000,0303	; 7295	TOCK2:	[AR]_WORK[TTG]
							; 7296		[AR]_[AR]-[BR],		;COUNT DOWN TIME TO GO
U 3565, 2360,1111,0503,4174,4007,0421,4000,0000,0000	; 7297		SKIP AD.LE.0		;SEE IF IT TIMED OUT
							; 7298	=0
							; 7299	TOCK3:	WORK[TTG]_[AR],		;SAVE NEW TIME TO GO
U 2360, 0002,3333,0003,7174,4004,1700,0400,0000,0303	; 7300		RETURN [2]		;ALL DONE
U 2361, 3566,3771,0003,7274,4007,0701,0000,0000,0302	; 7301		[AR]_WORK[PERIOD]
U 3566, 3567,3771,0005,4304,4007,0701,0000,0000,0000	; 7302		[BR]_APR		;GET CURRENT FLAGS
U 3567, 3570,3551,0505,4374,4007,0700,0000,0000,0040	; 7303		[BR]_[BR].OR.#, #/40	;SET TIMER INTERRUPT FLAG
							; 7304		READ [BR],		;PLACE ON DP AND
							; 7305		SPEC/APR FLAGS,		; LOAD INTO HARDWARE
U 3570, 2360,3333,0005,4174,4237,0700,0000,0000,0000	; 7306		J/TOCK3			;ALL DONE
							; 7307	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 200
; INOUT.MIC[7,3]	13:32 7-JAN-1986			IO -- INTERNAL DEVICES -- WRTIME & RDTIME		

							; 7308	.TOC	"IO -- INTERNAL DEVICES -- WRTIME & RDTIME"
							; 7309	
							; 7310	1774:
U 1774, 3571,4443,0000,4174,4007,0700,0200,0004,0002	; 7311	WRTIME:	START READ		;FETCH WORD AT E
							; 7312		MEM READ,		;WAIT FOR DATA
U 3571, 1114,3771,0003,4365,5007,0700,0200,0000,0002	; 7313		[AR]_MEM		;PUT WORD IN AR
							; 7314	=00	VMA_[HR]+1,		;BUMP E
							; 7315		START READ,		;START MEMORY
U 1114, 3661,0111,0702,4170,4007,0700,0210,0004,0012	; 7316		CALL [LOADARX]		;PUT DATA IN ARX
							; 7317		[ARX]_[ARX].AND.#,	;CLEAR PART HELD IN
							; 7318		#/770000,		; HARDWARE COUNTER
U 1115, 3572,4551,0404,4370,4007,0700,0010,0077,0000	; 7319		HOLD LEFT,  CALL [WRTIM1]
							; 7320	=11	WORK[TIME1]_[ARX],	;IN WORK SPACE
U 1117, 1400,3333,0004,7174,4007,0700,0400,0000,0301	; 7321		J/DONE			;NEXT INSTRUCTION
							; 7322	=
							; 7323	WRTIM1:	WORK[TIME0]_[AR],	;SAVE THE NEW VALUE
U 3572, 0002,3333,0003,7174,4004,1700,0400,0000,0300	; 7324		RETURN [2]
							; 7325	
							; 7326	1764:
U 1764, 3573,4451,1205,4324,4007,0700,0000,0000,0000	; 7327	RDTIME:	[BR]_TIME		;READ THE TIME
U 3573, 3574,4451,1204,4324,4007,0700,0000,0000,0000	; 7328		[ARX]_TIME		; AGAIN
U 3574, 3575,4451,1206,4324,4007,0700,0000,0000,0000	; 7329		[BRX]_TIME		; AGAIN
							; 7330		[BR].XOR.[ARX],		;SEE IF STABLE
U 3575, 2362,6113,0405,4174,4007,0621,0000,0000,0000	; 7331		SKIP AD.EQ.0		; ..
U 2362, 2363,3441,0604,4174,4007,0700,0000,0000,0000	; 7332	=0	[ARX]_[BRX]		;NO THEN NEXT TRY MUST BE OK
U 2363, 3576,3771,0005,7274,4007,0701,0000,0000,0300	; 7333		[BR]_WORK[TIME0]
							; 7334		[ARX]_[ARX]+WORK[TIME1], ;COMBINE PARTS
U 3576, 1120,0551,0404,7274,4007,0671,0000,0000,0301	; 7335		SKIP/-1 MS		;SEE IF OVERFLOW HAPPENED
							; 7336	=00	SPEC/CLRCLK,		;CLEAR CLOCK FLAG
							; 7337		[AR]_WORK[TIME1], 2T,	;GET LOW WORD FOR TOCK
U 1120, 3561,3771,0003,7274,4117,0700,0010,0000,0301	; 7338		CALL [TOCK]		;UPDATE CLOCKS
							; 7339		READ [HR], LOAD VMA,	;DID NOT OVERFLOW
U 1121, 3577,3333,0002,4174,4007,0700,0200,0003,0012	; 7340		START WRITE, J/RDTIM1	;STORE ANSWER
U 1122, 1764,4443,0000,4174,4007,0700,0000,0000,0000	; 7341		J/RDTIME		;TRY AGAIN
							; 7342	=
U 3577, 3600,3333,0005,4175,5007,0701,0200,0000,0002	; 7343	RDTIM1:	MEM WRITE, MEM_[BR]
U 3600, 3601,0111,0702,4170,4007,0700,0200,0003,0012	; 7344		VMA_[HR]+1, LOAD VMA, START WRITE
U 3601, 1400,3333,0004,4175,5007,0701,0200,0000,0002	; 7345		MEM WRITE, MEM_[ARX], J/DONE
							; 7346	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 201
; INOUT.MIC[7,3]	13:32 7-JAN-1986			IO -- INTERNAL DEVICES -- WRINT & RDINT			

							; 7347	.TOC	"IO -- INTERNAL DEVICES -- WRINT & RDINT"
							; 7348	
							; 7349	
							; 7350	1775:
U 1775, 3602,4443,0000,4174,4007,0700,0200,0004,0002	; 7351	WRINT:	START READ
U 3602, 3603,3771,0003,4365,5007,0700,0200,0000,0002	; 7352		MEM READ, [AR]_MEM
U 3603, 3604,3333,0003,7174,4007,0700,0400,0000,0302	; 7353		WORK[PERIOD]_[AR]
							; 7354		WORK[TTG]_[AR],
U 3604, 1400,3333,0003,7174,4007,0700,0400,0000,0303	; 7355		J/DONE
							; 7356	
							; 7357	1765:
							; 7358	RDINT:	[BR]_WORK[PERIOD],
U 1765, 3613,3771,0005,7274,4007,0701,0000,0000,0302	; 7359		J/RTNREG
							; 7360	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 202
; INOUT.MIC[7,3]	13:32 7-JAN-1986			IO -- INTERNAL DEVICES -- RDPI & WRPI			

							; 7361	.TOC	"IO -- INTERNAL DEVICES -- RDPI & WRPI"
							; 7362	
							; 7363	1715:
U 1715, 3613,3441,1405,4174,4007,0700,0000,0000,0000	; 7364	RDPI:	[BR]_[PI], J/RTNREG
							; 7365	
							; 7366	1714:
U 1714, 2364,4553,0300,4374,4007,0331,0000,0001,0000	; 7367	WRPI:	TR [AR], PI.CLR/1
U 2364, 2365,4221,0014,4174,4007,0700,0000,0000,0000	; 7368	=0	[PI]_0
U 2365, 2366,4553,0300,4374,4007,0331,0000,0074,0000	; 7369		TR [AR], PI.MBZ/17
U 2366, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 7370	=0	UUO
U 2367, 3605,4551,0305,4374,4007,0700,0000,0000,0177	; 7371		[BR]_[AR].AND.#,#/177
U 3605, 3606,3770,0505,4344,0007,0700,0000,0000,0000	; 7372		[BR]_[BR] SWAP, HOLD RIGHT
U 3606, 2370,4553,0300,4374,4007,0331,0000,0002,0000	; 7373		TR [AR], PI.DIR/1
U 2370, 2371,5111,0514,4174,0007,0700,0000,0000,0000	; 7374	=0	[PI]_[PI].AND.NOT.[BR], HOLD RIGHT
U 2371, 2372,4553,0300,4374,4007,0331,0000,0000,4000	; 7375		TR [AR], PI.REQ/1
U 2372, 2373,3111,0514,4174,0007,0700,0000,0000,0000	; 7376	=0	[PI]_[PI].OR.[BR], HOLD RIGHT
U 2373, 2374,4553,0300,4374,4007,0331,0000,0000,0200	; 7377		TR [AR], PI.TSN/1
U 2374, 2375,3551,1414,4370,4007,0700,0000,0000,0200	; 7378	=0	[PI]_[PI].OR.#,PI.ON/1, HOLD LEFT
U 2375, 2376,4553,0300,4374,4007,0331,0000,0000,0400	; 7379		TR [AR], PI.TSF/1
U 2376, 2377,5551,1414,4370,4007,0700,0000,0000,0200	; 7380	=0	[PI]_[PI].AND.NOT.#,PI.ON/1, HOLD LEFT
U 2377, 2400,4553,0300,4374,4007,0331,0000,0000,2000	; 7381		TR [AR], PI.TCN/1
U 2400, 2401,3111,0514,4170,4007,0700,0000,0000,0000	; 7382	=0	[PI]_[PI].OR.[BR], HOLD LEFT
U 2401, 0304,4553,0300,4374,4007,0331,0000,0000,1000	; 7383		TR [AR], PI.TCF/1
U 0304, 0305,5111,0514,4170,4007,0700,0000,0000,0000	; 7384	=0**0	[PI]_[PI].AND.NOT.[BR], HOLD LEFT
U 0305, 3610,3770,1416,4344,4007,0700,0010,0000,0000	; 7385	PIEXIT:	CALL LOAD PI
							; 7386	=1**1
U 0315, 0110,3443,0100,4174,4156,4700,0200,0014,0012	; 7387		DONE
							; 7388	=
							; 7389	
							; 7390	;SUBROUTINE TO LOAD PI HARDWARE
							; 7391	;CALL WITH:
							; 7392	;	CALL LOAD PI
							; 7393	;RETURNS 10 WITH PI HARDWARE LOADED
							; 7394	;
U 3607, 3610,3770,1416,4344,4007,0700,0000,0000,0000	; 7395	LOADPI:	[T0]_[PI] SWAP		;PUT ACTIVE CHANS IN LH
U 3610, 3611,2441,0716,4170,4007,0700,4000,0000,0000	; 7396	LDPI2:	[T0]_-1, HOLD LEFT	;DONT MASK RH
U 3611, 3612,4111,1416,4174,4007,0700,0000,0000,0000	; 7397		[T0]_[T0].AND.[PI]	;ONLY REQUEST CHANS THAT ARE ON
							; 7398		.NOT.[T0], LOAD PI,	;RELOAD HARDWARE
U 3612, 0010,7443,1600,4174,4434,1700,0000,0000,0000	; 7399		 RETURN [10]		;RETURN TO CALLER
							; 7400	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 203
; INOUT.MIC[7,3]	13:32 7-JAN-1986			IO -- INTERNAL DEVICES -- SUBROUTINES			

							; 7401	.TOC	"IO -- INTERNAL DEVICES -- SUBROUTINES"
							; 7402	
							; 7403	
							; 7404	;HERE WITH SOMETHING IN BR STORE IT @AR
U 3613, 3614,3443,0300,4174,4007,0700,0200,0003,0012	; 7405	RTNREG:	VMA_[AR], START WRITE
U 3614, 1400,3333,0005,4175,5007,0701,0200,0000,0002	; 7406	RTNRG1:	MEM WRITE, MEM_[BR], J/DONE
							; 7407	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 204
; INOUT.MIC[7,3]	13:32 7-JAN-1986			IO -- INTERNAL DEVICES -- SUBROUTINES			

							; 7408	;CACHE SWEEP
							; 7409	
							; 7410	1722:
							; 7411	CLRPT:	VMA_[AR],		;PUT CORRECT ADDRESS IN VMA
U 1722, 3615,3443,0300,4174,4147,0700,0200,0000,0010	; 7412		LOAD PAGE TABLE		;GET SET TO WRITE PAGE TABLE
U 3615, 2402,4221,0003,4174,4007,0700,0000,0000,0000	; 7413		[AR]_0			;CLEAR ENTRY
							; 7414	=0	[AR]_#,#/377377,	;INITIAL VMA VALUE
U 2402, 3621,3771,0003,4374,4007,0700,0010,0037,7377	; 7415		CALL [SSWEEP]		;LOAD THE SC
							; 7416		[BR]_#, #/1001,		;CONSTANT TO KEEP ADDING
U 2403, 3616,3771,0005,4374,4247,0700,0000,0000,1001	; 7417		CLRCSH			;START TO CLEAR CACHE
U 3616, 2404,3333,0003,4174,4247,0700,0000,0000,1000	; 7418		READ [AR], CLRCSH	;FIRST THING TO CLEAR
							; 7419	=0
							; 7420	CLRPTL:	[AR]_[AR]-[BR],		;UPDATE AR (AND PUT ON DP)
							; 7421		CLRCSH,			;SWEEP ON NEXT STEP
							; 7422		STEP SC,		;SKIP IF WE ARE DONE
U 2404, 2404,1111,0503,4174,4247,0630,6000,0060,1000	; 7423		J/CLRPTL		;LOOP FOR ALL ENTRIES
U 2405, 2411,3333,0003,4174,4007,0700,0000,0000,0000	; 7424		READ [AR], J/ZAPPTA	;CLEAR LAST ENTRY
							; 7425	
							; 7426	=0
							; 7427	SWEEP:	[AR]_#,#/377377,	;INITIAL VMA VALUE
U 2406, 3621,3771,0003,4374,4007,0700,0010,0037,7377	; 7428		CALL [SSWEEP]		;LOAD NUMBER OF STEPS INTO SC
							; 7429		[BR]_#, #/1001,		;CONSTANT TO KEEP ADDING
U 2407, 3617,3771,0005,4374,4347,0700,0000,0000,1001	; 7430		SWEEP			;START SWEEP
U 3617, 2410,3333,0003,4174,4347,0700,0000,0000,1000	; 7431		READ [AR], SWEEP	;FIRST THING TO CLEAR
							; 7432	=0
							; 7433	SWEEPL:	[AR]_[AR]-[BR],		;UPDATE AR (AND PUT ON DP)
							; 7434		SWEEP,			;SWEEP ON NEXT STEP
							; 7435		STEP SC,		;SKIP IF WE ARE DONE
U 2410, 2410,1111,0503,4174,4347,0630,6000,0060,1000	; 7436		J/SWEEPL		;LOOP FOR ALL ENTRIES
							; 7437					;CLEAR LAST ENTRY AND
U 2411, 3620,4223,0000,7174,4007,0700,0400,0000,0424	; 7438	ZAPPTA:	WORK[PTA.U]_0		; FORGET PAGE TABLE ADDRESS
							; 7439		WORK[PTA.E]_0,		;FORGET PAGE TABLE ADDRESS
U 3620, 1400,4223,0000,7174,4007,0700,0400,0000,0423	; 7440		J/DONE			;ALL DONE
							; 7441	
							; 7442	SSWEEP:	SC_S#, S#/375,		;NUMBER OF STEPS
U 3621, 0001,4443,0000,4174,4004,1700,2000,0071,0375	; 7443		RETURN [1]		;RETURN
							; 7444	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 205
; INOUT.MIC[7,3]	13:32 7-JAN-1986			IO -- INTERNAL DEVICES -- SUBROUTINES			

							; 7445	;WE COME HERE EITHER FROM NEXT INSTRUCTION DISPATCH OR PAGE FAIL
							; 7446	; LOGIC. IN ALL CASES, THE CURRENT INSTRUCTION IS CORRECTLY SETUP
							; 7447	; TO RESTART PROPERLY.
							; 7448	
							; 7449	;FIRST SET THE CORRECT PI IN PROGRESS BIT
							; 7450	;	[FLG]_[FLG].OR.#,FLG.PI/1, HOLD RIGHT,
							; 7451	;		J/PI		;SET PI CYCLE AND PROCESS PI
							; 7452	=1000
							; 7453	PI:	AD/D, DBUS/PI NEW,	;LOOK AT NEW LEVEL
							; 7454		DISP/DP LEFT, 3T,	;DISPATCH ON IT
U 0770, 0770,3773,0000,4074,4003,1701,0000,0000,0000	; 7455		J/PI			;GO TO 1 OF NEXT 7 PLACES
U 0771, 3622,3551,1414,4370,4007,0700,0000,0004,0000	; 7456	=1001	[PI]_[PI].OR.#, #/040000, HOLD LEFT, J/PIP1
U 0772, 3623,3551,1414,4370,4007,0700,0000,0002,0000	; 7457	=1010	[PI]_[PI].OR.#, #/020000, HOLD LEFT, J/PIP2
U 0773, 3624,3551,1414,4370,4007,0700,0000,0001,0000	; 7458	=1011	[PI]_[PI].OR.#, #/010000, HOLD LEFT, J/PIP3
U 0774, 3625,3551,1414,4370,4007,0700,0000,0000,4000	; 7459	=1100	[PI]_[PI].OR.#, #/004000, HOLD LEFT, J/PIP4
U 0775, 3626,3551,1414,4370,4007,0700,0000,0000,2000	; 7460	=1101	[PI]_[PI].OR.#, #/002000, HOLD LEFT, J/PIP5
U 0776, 3627,3551,1414,4370,4007,0700,0000,0000,1000	; 7461	=1110	[PI]_[PI].OR.#, #/001000, HOLD LEFT, J/PIP6
U 0777, 3630,3551,1414,4370,4007,0700,0000,0000,0400	; 7462	=1111	[PI]_[PI].OR.#, #/000400, HOLD LEFT, J/PIP7
U 3622, 3631,4751,1206,4374,4007,0700,0000,0000,0001	; 7463	PIP1:	[BRX]_0 XWD [1], J/PI10	;REMEMBER WE ARE AT LEVEL 1
U 3623, 3631,4751,1206,4374,4007,0700,0000,0000,0002	; 7464	PIP2:	[BRX]_0 XWD [2], J/PI10	;REMEMBER WE ARE AT LEVEL 2
U 3624, 3631,4751,1206,4374,4007,0700,0000,0000,0003	; 7465	PIP3:	[BRX]_0 XWD [3], J/PI10	;REMEMBER WE ARE AT LEVEL 3
U 3625, 3631,4751,1206,4374,4007,0700,0000,0000,0004	; 7466	PIP4:	[BRX]_0 XWD [4], J/PI10	;REMEMBER WE ARE AT LEVEL 4
U 3626, 3631,4751,1206,4374,4007,0700,0000,0000,0005	; 7467	PIP5:	[BRX]_0 XWD [5], J/PI10	;REMEMBER WE ARE AT LEVEL 5
U 3627, 3631,4751,1206,4374,4007,0700,0000,0000,0006	; 7468	PIP6:	[BRX]_0 XWD [6], J/PI10	;REMEMBER WE ARE AT LEVEL 6
U 3630, 3631,4751,1206,4374,4007,0700,0000,0000,0007	; 7469	PIP7:	[BRX]_0 XWD [7], J/PI10	;REMEMBER WE ARE AT LEVEL 7
							; 7470	
							; 7471	PI10:	[AR]_[PI].AND.# CLR LH,	;TURN OFF PI SYSTEM
U 3631, 3632,4251,1403,4374,4007,0700,0000,0007,7577	; 7472		#/077577		; TILL WE ARE DONE
U 3632, 3633,7443,0300,4174,4437,0700,0000,0000,0000	; 7473		.NOT.[AR], LOAD PI	;  ..
U 3633, 2412,4223,0000,4364,4277,0700,0200,0000,0010	; 7474		ABORT MEM CYCLE		;NO MORE TRAPS
							; 7475	=0	[AR]_VMA IO READ,	;SETUP TO READ WRU BITS
							; 7476		WRU CYCLE/1,		; ..
U 2412, 3666,4571,1203,4374,4007,0700,0010,0024,1300	; 7477		CALL [STRTIO]		;START THE CYCLE
							; 7478		MEM READ,		;WAIT FOR DATA
							; 7479		[AR]_IO DATA, 3T,	;PUT DATA IN AR
U 2413, 2414,3771,0003,4364,4007,0331,0200,0000,0002	; 7480		SKIP ADR.EQ.0		;SEE IF ANYONE THERE
U 2414, 3642,4221,0004,4174,4007,0700,0000,0000,0000	; 7481	=0	[ARX]_0, J/VECINT	;YES--VECTORED INTERRUPT
U 2415, 3634,3445,0603,4174,4007,0700,0000,0000,0000	; 7482		[AR]_[BRX]*2		;N*2
							; 7483		[AR]_[AR]+#, #/40, 3T,	;2*N+40
U 3634, 3635,0551,0303,4370,4007,0701,0000,0000,0040	; 7484		HOLD LEFT		; ..
							; 7485		[AR]_[AR]+[EBR],	;ABSOULTE ADDRESS OF 
U 3635, 3636,0111,1003,4174,4007,0700,0000,0000,0000	; 7486		J/PI40			; INTERRUPT INSTRUCTION
							; 7487	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 206
; INOUT.MIC[7,3]	13:32 7-JAN-1986			IO -- INTERNAL DEVICES -- SUBROUTINES			

							; 7488	;HERE WITH ABSOLUTE ADDRESS OF INTERRUPT INSTRUCTION IN [AR]
U 3636, 3637,3443,0300,4174,4007,0700,0200,0024,1016	; 7489	PI40:	VMA_[AR], VMA PHYSICAL READ	;FETCH THE INSTRUCTION
							; 7490	PI50:	MEM READ, [AR]_MEM, LOAD VMA,	;FETCH INSTRUCTION
U 3637, 3640,3771,0003,4365,5007,0701,0200,0020,0012	; 7491		3T, FORCE EXEC			;E IS EXEC MODE
U 3640, 2416,6553,0300,4374,4007,0321,0000,0025,4340	; 7492		[AR].XOR.#, #/254340, 3T, SKIP ADL.EQ.0
U 2416, 2420,6553,0300,4374,4007,0321,0000,0026,4000	; 7493	=0	[AR].XOR.#, #/264000, SKIP ADL.EQ.0, 3T, J/PIJSR
U 2417, 3641,4521,1205,4074,4007,0700,0000,0000,0000	; 7494		[BR]_FLAGS			;SAVE FLAGS
							; 7495		AD/ZERO, LOAD FLAGS,
U 3641, 0060,4223,0000,4174,4467,0700,0000,0000,0004	; 7496		J/PIXPCW			;ENTER EXEC MODE AND ASSUME
							; 7497						; WE HAVE AN XPCW
							; 7498	;IF WE HALT HERE ON A VECTORED INTERRUPT, WE HAVE
							; 7499	;	T0/ WHAT WE READ FROM BUS AS VECTOR
							; 7500	;	ARX/ EPT+100+DEVICE
							; 7501	;	BR/  ADDRESS OF ILLEGAL INSTRUCTION
							; 7502	;	BRX/ VECTOR (MASKED AND SHIFTED)
							; 7503	=0
U 2420, 0104,4751,1217,4374,4007,0700,0000,0000,0101	; 7504	PIJSR:	HALT [ILLII]			;NOT A JSR OR XPCW
U 2421, 0470,4443,0000,4174,4007,0700,0200,0023,0002	; 7505		START WRITE, FORCE EXEC		;PREPARE TO STORE OLD PC
							; 7506	=0*0	[BR]_PC WITH FLAGS,		;OLD PC
U 0470, 3667,3741,0105,4074,4007,0700,0010,0000,0000	; 7507		CALL [STOBR]			;STORE OLD PC
							; 7508	=1*0	[AR]_#, #/0, HOLD RIGHT,		;PREPARE TO CLEAR FLAGS
U 0474, 3664,3771,0003,4374,0007,0700,0010,0000,0000	; 7509		CALL [INCAR]			;BUMP POINTER
							; 7510	=1*1	[PC]_[AR], LOAD FLAGS,		;NEW PC
U 0475, 2714,3441,0301,4174,4467,0700,0000,0000,0004	; 7511		J/PISET				;CLEAR PI CYCLE & START
							; 7512						; INTERRUPT PROGRAM
							; 7513	=
							; 7514	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 207
; INOUT.MIC[7,3]	13:32 7-JAN-1986			IO -- INTERNAL DEVICES -- SUBROUTINES			

							; 7515	;HERE TO PROCESS A VECTORED INTERRUPT. AT THIS POINT:
							; 7516	;	AR/ WRU BITS (BIT 18 FOR DEVICE 0)
							; 7517	;	ARX/ 0
							; 7518	VECINT:	[AR]_[AR]*2,		;SHIFT LEFT (UNSHIFTED ON DP)
U 3642, 2422,3445,0303,4174,4007,0530,0000,0000,0000	; 7519		SKIP DP18		;ANYONE THERE?
							; 7520	=0	[ARX]_[ARX]+[XWD1],	;NO--BUMP BOTH HALVES
U 2422, 3642,0111,1504,4174,4007,0700,0000,0000,0000	; 7521		J/VECINT		;KEEP LOOKING
							; 7522		[AR]_VMA IO READ,	;SETUP FOR VECTOR CYCLE
U 2423, 2424,4571,1203,4374,4007,0700,0000,0024,1240	; 7523		VECTOR CYCLE/1		; ..
							; 7524	=0	[AR]_[AR].OR.[ARX],	;PUT IN UNIT NUMBER
U 2424, 3666,3111,0403,4174,4007,0700,0010,0000,0000	; 7525		CALL [STRTIO]		;START CYCLE
							; 7526		MEM READ,		;WAIT FOR VECTOR (SEE DPM5)
U 2425, 2426,3771,0016,4364,4007,0700,0200,0000,0002	; 7527		[T0]_IO DATA		;GET VECTOR
							; 7528	=0	[BR]_[EBR]+#, 3T, #/100,	;EPT+100
U 2426, 3663,0551,1005,4374,4007,0701,0010,0000,0100	; 7529		CALL [CLARXL]		;CLEAR ARX LEFT
							; 7530		[ARX]_[ARX]+[BR],	;EPT+100+DEVICE
U 2427, 3643,0111,0504,4174,4007,0700,0200,0024,1016	; 7531		VMA PHYSICAL READ	;FETCH WORD
							; 7532		MEM READ, [BR]_MEM, 3T,	;GET POINTER
U 3643, 2430,3771,0005,4365,5007,0331,0200,0000,0002	; 7533		SKIP ADR.EQ.0		;SEE IF NON-ZERO
							; 7534	=0	[BRX]_([T0].AND.#)*.5, 3T, ;OK--MAKE VECTOR MOD 400
U 2430, 3644,4557,1606,4374,4007,0701,0000,0000,0774	; 7535		#/774, J/VECIN1		; AND SHIFT OVER
U 2431, 0104,4751,1217,4374,4007,0700,0000,0000,0102	; 7536		HALT [ILLINT]
U 3644, 3645,3447,0606,4174,4007,0700,0000,0000,0000	; 7537	VECIN1:	[BRX]_[BRX]*.5		;SHIFT 1 MORE PLACE
							; 7538		[BR]_[BR]+[BRX],	;ADDRESS OF WORD TO USE
							; 7539		LOAD VMA, FORCE EXEC,	;FORCE EXEC VIRTUAL ADDRESS
U 3645, 3637,0111,0605,4174,4007,0700,0200,0024,0012	; 7540		START READ, J/PI50	;GO GET INSTRUCTION
							; 7541	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 208
; INOUT.MIC[7,3]	13:32 7-JAN-1986			PRIORITY INTERRUPTS -- DISMISS SUBROUTINE		

							; 7542	.TOC	"PRIORITY INTERRUPTS -- DISMISS SUBROUTINE"
							; 7543	
							; 7544	;SUBROUTINE TO DISMISS THE HIGHEST PI IN PROGRESS
							; 7545	;RETURNS 4 ALWAYS
							; 7546	
							; 7547	;DISMISS:
							; 7548	;	TR [PI], #/077400	;ANY PI IN PROGRESS?
							; 7549	=0
U 2432, 3646,3771,0005,4374,4007,0700,0000,0004,0000	; 7550	JEN1:	[BR]_#, PI.IP1/1, J/DSMS1 ;YES--START LOOP
U 2433, 0004,4443,0000,4174,4004,1700,0000,0000,0000	; 7551		RETURN [4]		;NO--JUST RETURN
							; 7552	
U 3646, 2434,4113,0514,4174,4007,0330,0000,0000,0000	; 7553	DSMS1:	[PI].AND.[BR], SKIP ADR.EQ.0
U 2434, 0004,5111,0514,4170,4004,1700,0000,0000,0000	; 7554	=0	[PI]_[PI].AND.NOT.[BR], HOLD LEFT, RETURN [4]
U 2435, 3646,3447,0505,4174,4007,0700,0000,0000,0000	; 7555		[BR]_[BR]*.5, J/DSMS1
							; 7556	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 209
; INOUT.MIC[7,3]	13:32 7-JAN-1986			EXTERNAL IO INSTRUCTIONS				

							; 7557	.TOC	"EXTERNAL IO INSTRUCTIONS"
							; 7558	
							; 7559		.DCODE
D 0710, 1210,1614,0100					; 7560	710:	IOT,	WORD-TNE,	J/TIOX
D 0711, 1214,1614,0100					; 7561	711:	IOT,	WORD-TNN,	J/TIOX
D 0720, 1200,1614,0100					; 7562	720:	IOT,	TNE,		J/TIOX
D 0721, 1204,1614,0100					; 7563	721:	IOT,	TNN,		J/TIOX
							; 7564		.UCODE
							; 7565	
							; 7566	1614:
U 1614, 2436,4443,0000,4174,4007,0700,0010,0000,0000	; 7567	TIOX:	CALL [IORD]
U 1617, 0014,4551,0305,0274,4003,7700,0000,0000,0000	; 7568	1617:	[BR]_[AR].AND.AC, TEST DISP
							; 7569	
							; 7570		.DCODE
D 0712, 1210,1460,0100					; 7571	712:	IOT,	B/10,		J/RDIO
D 0713, 1210,1461,0100					; 7572	713:	IOT,	B/10,		J/WRIO
D 0722, 1200,1460,0100					; 7573	722:	IOT,	B/0,		J/RDIO
D 0723, 1200,1461,0100					; 7574	723:	IOT,	B/0,		J/WRIO
							; 7575		.UCODE
							; 7576	
							; 7577	1460:
U 1460, 2436,4443,0000,4174,4007,0700,0010,0000,0000	; 7578	RDIO:	CALL [IORD]
U 1463, 1400,3440,0303,0174,4007,0700,0400,0000,0000	; 7579	1463:	AC_[AR], J/DONE
							; 7580	
							; 7581	1461:
U 1461, 2446,3771,0005,0276,6007,0700,0000,0000,0000	; 7582	WRIO:	[BR]_AC, J/IOWR
							; 7583	
							; 7584		.DCODE
D 0714, 1210,1644,0100					; 7585	714:	IOT,		B/10,	J/BIXUB
D 0715, 1214,1644,0100					; 7586	715:	IOT,		B/14,	J/BIXUB
D 0724, 1200,1644,0100					; 7587	724:	IOT,		B/0,	J/BIXUB
D 0725, 1204,1644,0100					; 7588	725:	IOT,		B/4,	J/BIXUB
							; 7589		.UCODE
							; 7590	
							; 7591	1644:
							; 7592	BIXUB:	[BRX]_[AR],		;SAVE EFFECTIVE ADDRESS
U 1644, 2436,3441,0306,4174,4007,0700,0010,0000,0000	; 7593		CALL [IORD]		;GO GET THE DATA
							; 7594	1647:	[BR]_[AR],		;COPY DATA ITEM
U 1647, 1013,3441,0305,4174,4003,7700,0000,0000,0000	; 7595		B DISP			;SEE IF SET OR CLEAR
							; 7596	=1011	[BR]_[BR].OR.AC,	;SET BITS
U 1013, 3647,3551,0505,0274,4007,0700,0000,0000,0000	; 7597		J/BIXUB1		;GO DO WRITE
							; 7598		[BR]_[BR].AND.NOT.AC,	;CLEAR BITS
U 1017, 3647,5551,0505,0274,4007,0700,0000,0000,0000	; 7599		J/BIXUB1		;GO DO WRITE
							; 7600	
							; 7601	BIXUB1:	[AR]_[BRX],		;RESTORE ADDRESS
U 3647, 2446,3441,0603,4174,4007,0700,0000,0000,0000	; 7602		J/IOWR
							; 7603	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 210
; INOUT.MIC[7,3]	13:32 7-JAN-1986			EXTERNAL IO INSTRUCTIONS				

							; 7604	;SUBROUTINE TO READ FROM AN IO DEVICE
							; 7605	;CALL WITH:
							; 7606	;	SECTION 0 EFFECTIVE ADDRESS IN AR
							; 7607	;	INSTRUCTION IN HR
							; 7608	;RETURN 3 WITH WORD OR BYTE IN AR
							; 7609	;
							; 7610	=0
							; 7611	IORD:	CLR IO BUSY,		;CLEAR BUSY
U 2436, 2456,4443,0000,4174,4137,0700,0010,0000,0000	; 7612		CALL [IOEA]		;COMPUTE IO EA
U 2437, 0067,4443,0000,4174,4003,7700,0000,0000,0000	; 7613		B DISP
							; 7614	=10111	[BR]_VMA IO READ,	;BYTE MODE
							; 7615		IO BYTE/1,		;SET BYTE FLAG
U 0067, 2440,4571,1205,4374,4007,0700,0000,0024,1220	; 7616		J/IORD1			;GO DO C/A CYCLE
U 0077, 2440,4571,1205,4374,4007,0700,0000,0024,1200	; 7617	=11111	[BR]_VMA IO READ	;WORD MODE
							; 7618	=
							; 7619	=0
							; 7620	IORD1:	VMA_[AR].OR.[BR] WITH FLAGS,
U 2440, 3656,3113,0305,4174,4007,0701,0210,0000,0036	; 7621		CALL [IOWAIT]		;WAIT FOR THINGS COMPLETE
							; 7622		MEM READ,		;MAKE SURE REALLY READY
							; 7623		[BR]_IO DATA,		;PUT DATA IN BR
U 2441, 1027,3771,0005,4364,4003,7700,0200,0000,0002	; 7624		B DISP			;SEE IF BYTE MODE
U 1027, 2442,4553,0300,4374,4007,0331,0000,0000,0001	; 7625	=0111	TR [AR], #/1, J/IORD2	;BYTE MODE SEE IF ODD
U 1037, 0003,3441,0503,4174,4004,1700,0000,0000,0000	; 7626		[AR]_[BR], RETURN [3]	;ALL DONE
							; 7627	
							; 7628	;HERE ON WORD MODE
							; 7629	=0
							; 7630	IORD2:	[BR]_[BR]*.5, SC_5,	;LEFT BYTE
U 2442, 2444,3447,0505,4174,4007,0700,2000,0071,0005	; 7631		J/IORD3			;GO SHIFT IT
							; 7632		[AR]_[BR].AND.#,	;MASK IT
U 2443, 0003,4551,0503,4374,4004,1700,0000,0000,0377	; 7633		#/377, RETURN [3]	;ALL DONE
							; 7634	
							; 7635	=0
							; 7636	IORD3:	[BR]_[BR]*.5,		;SHIFT OVER 
U 2444, 2444,3447,0505,4174,4007,0630,2000,0060,0000	; 7637		STEP SC, J/IORD3	; ..
							; 7638		[AR]_[BR].AND.#,	;MASK IT
U 2445, 0003,4551,0503,4374,4004,1700,0000,0000,0377	; 7639		#/377, RETURN [3]	;ALL DONE
							; 7640	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 211
; INOUT.MIC[7,3]	13:32 7-JAN-1986			EXTERNAL IO INSTRUCTIONS				

							; 7641	;ROUTINE TO WRITE TO AN IO DEVICE
							; 7642	;CALL WITH:
							; 7643	;	SECTION 0 EFFECTIVE ADDRESS IN AR
							; 7644	;	INSTRUCTION IN HR
							; 7645	;	WORD OR BYTE IN BR
							; 7646	;RETURNS BACK TO USER
							; 7647	;
							; 7648	=0
							; 7649	IOWR:	CLR IO BUSY,		;CLEAR BUSY
U 2446, 2456,4443,0000,4174,4137,0700,0010,0000,0000	; 7650		CALL [IOEA]		;COMPUTE IO EA
U 2447, 0227,4443,0000,4174,4003,7700,0000,0000,0000	; 7651		B DISP
U 0227, 2452,4553,0300,4374,4007,0331,0000,0000,0001	; 7652	=10111	TR [AR], #/1, J/IOWR2	;BYTE MODE
U 0237, 3650,4571,1204,4374,4007,0700,0000,0021,1200	; 7653	=11111	[ARX]_VMA IO WRITE	;SETUP FLAGS
							; 7654	=
U 3650, 2450,3113,0304,4174,4007,0701,0200,0000,0036	; 7655	IOWR1:	VMA_[AR].OR.[ARX] WITH FLAGS
							; 7656	=0	MEM WRITE, MEM_[BR],	;SEND DATA
U 2450, 3656,3333,0005,4175,5007,0701,0210,0000,0002	; 7657		CALL [IOWAIT]		;WAIT FOR DATA
U 2451, 0110,3443,0100,4174,4156,4700,0200,0014,0012	; 7658		DONE			;RETURN
							; 7659	
							; 7660	;HERE FOR BYTE MODE
							; 7661	=0
							; 7662	IOWR2:	[BR]_[BR]*2, SC_5,	;ODD--MOVE LEFT
U 2452, 2454,3445,0505,4174,4007,0700,2000,0071,0005	; 7663		J/IOWR3			; ..
							; 7664		[ARX]_VMA IO WRITE,	;SETUP FLAGS
U 2453, 3650,4571,1204,4374,4007,0700,0000,0021,1220	; 7665		IO BYTE/1, J/IOWR1	; ..
							; 7666	
							; 7667	=0
							; 7668	IOWR3:	[BR]_[BR]*2, STEP SC,	;SHIFT LEFT
U 2454, 2454,3445,0505,4174,4007,0630,2000,0060,0000	; 7669		J/IOWR3			;KEEP SHIFTING
							; 7670		[ARX]_VMA IO WRITE,	;SETUP FLAGS
U 2455, 3650,4571,1204,4374,4007,0700,0000,0021,1220	; 7671		IO BYTE/1, J/IOWR1	; ..
							; 7672	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 212
; INOUT.MIC[7,3]	13:32 7-JAN-1986			EXTERNAL IO INSTRUCTIONS				

							; 7673	;HERE TO COMPUTE IO EFFECTIVE ADDRESS
							; 7674	;CALL WITH:
							; 7675	;	SECTION 0 EFFECTIVE ADDRESS IN AR
							; 7676	;	INSTRUCTION IN HR
							; 7677	;RETURN 1 WITH EA IN AR
							; 7678	;
							; 7679	=0
							; 7680	IOEA:	VMA_[PC]-1,		;GET INSTRUCTION
							; 7681		START READ,		; ..
U 2456, 3660,1113,0701,4170,4007,0700,4210,0004,0012	; 7682		CALL [LOADAR]		;PUT WORD IN AR
U 2457, 3651,7441,0306,4174,4007,0700,0000,0000,0000	; 7683		[BRX]_.NOT.[AR]		;SEE IF IN RANGE 700-777
U 3651, 2460,4553,0600,4374,4007,0321,0000,0070,0000	; 7684		TL [BRX], #/700000	; ..
							; 7685	=0
U 2460, 2462,4553,0200,4374,4007,0321,0000,0000,0020	; 7686	IOEA1:	TL [HR], #/20, J/IOEA2	;INDIRECT?
							; 7687		WORK[YSAVE]_[AR] CLR LH, ;DIRECT IO INSTRUCTION
U 2461, 2460,4713,1203,7174,4007,0700,0400,0000,0422	; 7688		J/IOEA1			;SAVE Y FOR EA CALCULATION
							; 7689	=0
							; 7690	IOEA2:	[AR]_WORK[YSAVE],	;@--GET SAVED Y
U 2462, 3652,3771,0003,7274,4007,0701,0000,0000,0422	; 7691		J/IOEAI			;GET Y AND GO
U 2463, 1055,4443,0000,2174,4006,6700,0000,0000,0000	; 7692		EA MODE DISP		;WAS THERE INDEXING?
							; 7693	=1101	[ARX]_XR, SKIP ADL.LE.0, ;SEE IF LOCAL OR GLOBAL INDEXING
U 1055, 2466,3771,0004,2274,4007,0120,0000,0000,0000	; 7694		2T, J/IOEAX		; ..
							; 7695		[AR]_WORK[YSAVE],	;JUST PLAIN IO
U 1057, 0001,3771,0003,7274,4124,1701,0000,0000,0422	; 7696		CLR IO LATCH, RETURN [1]
							; 7697	
							; 7698	IOEAI:	READ [HR], DBUS/DP,	;LOAD XR FLOPS IN CASE
U 3652, 3653,3333,0002,4174,4217,0700,0000,0000,0000	; 7699		LOAD INST EA		; THERE IS INDEXING
U 3653, 2464,4553,0200,4374,4007,0321,0000,0000,0017	; 7700		TL [HR], #/17		;WAS THERE ALSO INDEXING
U 2464, 2465,0551,0303,2270,4007,0701,0000,0000,0000	; 7701	=0	[AR]_[AR]+XR, 3T, HOLD LEFT ;YES--ADD IN INDEX VALUE
U 2465, 3654,3443,0300,4174,4007,0700,0200,0004,0012	; 7702		VMA_[AR], START READ	;FETCH DATA WORD
							; 7703		MEM READ, [AR]_MEM,	;GO GET DATA WORD
U 3654, 0001,3771,0003,4365,5124,1700,0200,0000,0002	; 7704		CLR IO LATCH, RETURN [1]
							; 7705	
							; 7706	=0
							; 7707	IOEAX:	[AR]_[ARX]+WORK[YSAVE],	;GLOBAL INDEXING
U 2466, 0001,0551,0403,7274,4124,1701,0000,0000,0422	; 7708		CLR IO LATCH, RETURN [1]
U 2467, 3655,0551,0403,7274,4007,0701,0000,0000,0422	; 7709		[AR]_[ARX]+WORK[YSAVE]	;LOCAL INDEXING
							; 7710		[AR]_0, HOLD RIGHT,
U 3655, 0001,4221,0003,4174,0124,1700,0000,0000,0000	; 7711		CLR IO LATCH, RETURN [1]
							; 7712	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 213
; INOUT.MIC[7,3]	13:32 7-JAN-1986			EXTERNAL IO INSTRUCTIONS				

							; 7713	;WAIT FOR IO TO COMPLETE
							; 7714	;RETURNS 1 OR PAGE FAILS
							; 7715	;
							; 7716	IOWAIT:	SC_S#, S#/200,		;DELAY
							; 7717		[T0]_VMA,		;GET VMA
U 3656, 1124,3771,0016,4354,4007,0650,2000,0071,0200	; 7718		SKIP/-IO BUSY		;SEE IF BUSY YET
							; 7719	=00
							; 7720	IOW1:	CLR IO LATCH,		;WENT BUSY
							; 7721		WORK[SV.VMA]_[T0],	;MAKE SURE SV.VMA IS SETUP
U 1124, 3657,3333,0016,7174,4127,0700,0400,0000,0210	; 7722		J/IOW2			;WAIT FOR IT TO CLEAR
							; 7723		SC_SC-1, SCAD DISP, 5T,	;SEE IF DONE YET
							; 7724		SKIP/-IO BUSY,		; ..
U 1125, 1124,4443,0000,4174,4006,7653,2000,0060,0000	; 7725		J/IOW1			;BACK TO LOOP
							; 7726		CLR IO LATCH,		;WENT BUSY AND TIMEOUT
							; 7727		WORK[SV.VMA]_[T0],	;MAKE SURE SV.VMA IS SETUP
U 1126, 3657,3333,0016,7174,4127,0700,0400,0000,0210	; 7728		J/IOW2			; ..
							; 7729		WORK[SV.VMA]_[T0],	;MAKE SURE SV.VMA IS SETUP
U 1127, 2473,3333,0016,7174,4007,0700,0400,0000,0210	; 7730		J/IOW5			;GO TRAP
							; 7731	
							; 7732	IOW2:	SC_S#, S#/777,		;GO TIME IO
U 3657, 2470,4443,0000,4174,4007,0650,2000,0071,0777	; 7733		SKIP/-IO BUSY		; ..
							; 7734	=0
							; 7735	IOW3:	CLR IO LATCH,		;TRY TO CLEAR LATCH
U 2470, 2472,4443,0000,4174,4127,0630,2000,0060,0000	; 7736		STEP SC, J/IOW4		;STILL BUSY
U 2471, 0001,4443,0000,4174,4004,1700,0000,0000,0000	; 7737		RETURN [1]		;IDLE
							; 7738	
							; 7739	=0
							; 7740	IOW4:	CLR IO LATCH, 5T,	;TRY TO CLEAR LATCH
							; 7741		SKIP/-IO BUSY,		;SEE IF STILL BUSY
U 2472, 2470,4443,0000,4174,4127,0653,0000,0000,0000	; 7742		J/IOW3			; ..
U 2473, 1501,4571,1206,4374,4007,0700,0000,0020,0000	; 7743	IOW5:	[BRX]_[200000] XWD 0, J/HARD
							; 7744	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 214
; INOUT.MIC[7,3]	13:32 7-JAN-1986			SMALL SUBROUTINES					

							; 7745	.TOC	"SMALL SUBROUTINES"
							; 7746	
							; 7747	;HERE ARE A COLLECTION ON 1-LINE SUBROUTINES
							; 7748	LOADAR:	MEM READ, [AR]_MEM,	;FROM MEMORY TO AR
U 3660, 0001,3771,0003,4365,5004,1700,0200,0000,0002	; 7749		RETURN [1]		;RETURN TO CALLER
							; 7750	
U 3661, 0001,3771,0004,4365,5004,1700,0200,0000,0002	; 7751	LOADARX: MEM READ, [ARX]_MEM, RETURN [1]
							; 7752	
U 3662, 0001,3772,0000,4365,5004,1700,0200,0000,0002	; 7753	LOADQ:	MEM READ, Q_MEM, RETURN [1]
							; 7754	
U 3663, 0001,4221,0004,4174,0004,1700,0000,0000,0000	; 7755	CLARXL:	[ARX]_0, HOLD RIGHT, RETURN [1]
							; 7756	
U 3664, 0001,0111,0703,4174,4004,1700,0000,0000,0000	; 7757	INCAR:	[AR]_[AR]+1, RETURN [1]
							; 7758	
U 3665, 0001,3445,0505,4174,4004,1700,0000,0000,0000	; 7759	SBRL:	[BR]_[BR]*2, RETURN [1]
							; 7760	
U 3666, 0001,3443,0300,4174,4004,1701,0200,0000,0036	; 7761	STRTIO:	VMA_[AR] WITH FLAGS, RETURN [1]
							; 7762	
U 3667, 0004,3333,0005,4175,5004,1701,0200,0000,0002	; 7763	STOBR:	MEM WRITE, MEM_[BR], RETURN [4]
							; 7764	
U 3670, 0001,3333,0001,4175,5004,1701,0200,0000,0002	; 7765	STOPC:	MEM WRITE, MEM_[PC], RETURN [1]
							; 7766	
U 3671, 0001,3440,0404,0174,4004,1700,0400,0000,0000	; 7767	AC_ARX:	AC_[ARX], RETURN [1]
							; 7768	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 215
; INOUT.MIC[7,3]	13:32 7-JAN-1986			UNDEFINED IO INSTRUCTIONS				

							; 7769	.TOC	"UNDEFINED IO INSTRUCTIONS"
							; 7770	
							; 7771		.DCODE
D 0703, 0003,1650,2100					; 7772	703:	I,	B/3,	J/IOT700
D 0706, 0006,1650,2100					; 7773	706:	I,	B/6,	J/IOT700
D 0707, 0007,1650,2100					; 7774		I,	B/7,	J/IOT700
							; 7775	
D 0716, 0006,1651,2100					; 7776	716:	I,	B/6,	J/IOT710
D 0717, 0007,1651,2100					; 7777		I,	B/7,	J/IOT710
							; 7778	
D 0726, 0006,1652,2100					; 7779	726:	I,	B/6,	J/IOT720
D 0727, 0007,1652,2100					; 7780		I,	B/7,	J/IOT720
							; 7781	
D 0730, 0000,1653,2100					; 7782	730:	I,	B/0,	J/IOT730
D 0731, 0001,1653,2100					; 7783		I,	B/1,	J/IOT730
D 0732, 0002,1653,2100					; 7784		I,	B/2,	J/IOT730
D 0733, 0003,1653,2100					; 7785		I,	B/3,	J/IOT730
D 0734, 0004,1653,2100					; 7786		I,	B/4,	J/IOT730
D 0735, 0005,1653,2100					; 7787		I,	B/5,	J/IOT730
D 0736, 0006,1653,2100					; 7788		I,	B/6,	J/IOT730
D 0737, 0007,1653,2100					; 7789		I,	B/7,	J/IOT730
							; 7790	
D 0740, 0000,1654,2100					; 7791	740:	I,	B/0,	J/IOT740
D 0741, 0001,1654,2100					; 7792		I,	B/1,	J/IOT740
D 0742, 0002,1654,2100					; 7793		I,	B/2,	J/IOT740
D 0743, 0003,1654,2100					; 7794		I,	B/3,	J/IOT740
D 0744, 0004,1654,2100					; 7795		I,	B/4,	J/IOT740
D 0745, 0005,1654,2100					; 7796		I,	B/5,	J/IOT740
D 0746, 0006,1654,2100					; 7797		I,	B/6,	J/IOT740
D 0747, 0007,1654,2100					; 7798		I,	B/7,	J/IOT740
							; 7799	
D 0750, 0000,1655,2100					; 7800	750:	I,	B/0,	J/IOT750
D 0751, 0001,1655,2100					; 7801		I,	B/1,	J/IOT750
D 0752, 0002,1655,2100					; 7802		I,	B/2,	J/IOT750
D 0753, 0003,1655,2100					; 7803		I,	B/3,	J/IOT750
D 0754, 0004,1655,2100					; 7804		I,	B/4,	J/IOT750
D 0755, 0005,1655,2100					; 7805		I,	B/5,	J/IOT750
D 0756, 0006,1655,2100					; 7806		I,	B/6,	J/IOT750
D 0757, 0007,1655,2100					; 7807		I,	B/7,	J/IOT750
							; 7808	
D 0760, 0000,1656,2100					; 7809	760:	I,	B/0,	J/IOT760
D 0761, 0001,1656,2100					; 7810		I,	B/1,	J/IOT760
D 0762, 0002,1656,2100					; 7811		I,	B/2,	J/IOT760
D 0763, 0003,1656,2100					; 7812		I,	B/3,	J/IOT760
D 0764, 0004,1656,2100					; 7813		I,	B/4,	J/IOT760
D 0765, 0005,1656,2100					; 7814		I,	B/5,	J/IOT760
D 0766, 0006,1656,2100					; 7815		I,	B/6,	J/IOT760
D 0767, 0007,1656,2100					; 7816		I,	B/7,	J/IOT760
							; 7817	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 216
; INOUT.MIC[7,3]	13:32 7-JAN-1986			UNDEFINED IO INSTRUCTIONS				

D 0770, 0000,1657,2100					; 7818	770:	I,	B/0,	J/IOT770
D 0771, 0001,1657,2100					; 7819		I,	B/1,	J/IOT770
D 0772, 0002,1657,2100					; 7820		I,	B/2,	J/IOT770
D 0773, 0003,1657,2100					; 7821		I,	B/3,	J/IOT770
D 0774, 0004,1657,2100					; 7822		I,	B/4,	J/IOT770
D 0775, 0005,1657,2100					; 7823		I,	B/5,	J/IOT770
D 0776, 0006,1657,2100					; 7824		I,	B/6,	J/IOT770
D 0777, 0007,1657,2100					; 7825		I,	B/7,	J/IOT770
							; 7826		.UCODE
							; 7827	
							; 7828	1650:
U 1650, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 7829	IOT700:	UUO
							; 7830	1651:
							; 7831	IOT710:
							; 7832	.IFNOT/UBABLT
U 1651, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 7833		UUO
							;;7834	.IF/UBABLT
							;;7835		J/BLTX		;GO TO COMMON CODE FOR UBABLT INSTRS
							; 7836	.ENDIF/UBABLT
							; 7837	1652:
U 1652, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 7838	IOT720:	UUO
							; 7839	1653:
U 1653, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 7840	IOT730:	UUO
							; 7841	1654:
U 1654, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 7842	IOT740:	UUO
							; 7843	1655:
U 1655, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 7844	IOT750:	UUO
							; 7845	1656:
U 1656, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 7846	IOT760:	UUO
							; 7847	1657:
U 1657, 2737,4551,0202,4374,0007,0700,0000,0077,7740	; 7848	IOT770:	UUO
							; 7849	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 217
; INOUT.MIC[7,3]	13:32 7-JAN-1986			UMOVE AND UMOVEM					

							; 7850	.TOC	"UMOVE AND UMOVEM"
							; 7851	
							; 7852		.DCODE
D 0704, 1200,1754,0100					; 7853	704:	IOT,	J/UMOVE
D 0705, 1200,1755,0100					; 7854		IOT,	J/UMOVEM
							; 7855		.UCODE
							; 7856	
							; 7857	1754:
							; 7858	UMOVE:	VMA_[AR],		;LOAD VMA
							; 7859		START READ,		;START MEMORY
U 1754, 3672,3443,0300,4174,4207,0700,0200,0004,0012	; 7860		SPEC/PREV		;FORCE PREVIOUS
							; 7861		MEM READ,		;WAIT FOR MEMORY
							; 7862		[AR]_MEM,		;PUT DATA IN AR
U 3672, 1515,3771,0003,4365,5007,0700,0200,0000,0002	; 7863		J/STAC			;GO PUT AR IN AC
							; 7864	
							; 7865	1755:
							; 7866	UMOVEM:	VMA_[AR],		;LOAD VMA
							; 7867		START WRITE,		;START MEMORY
U 1755, 3673,3443,0300,4174,4207,0700,0200,0003,0012	; 7868		SPEC/PREV		;FORCE PREVIOUS
							; 7869		[AR]_AC,		;FETCH AC
U 3673, 1516,3771,0003,0276,6007,0700,0000,0000,0000	; 7870		J/STMEM			;STORE IN MEMORY
							; 7871	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 218
; INOUT.MIC[7,3]	13:32 7-JAN-1986			UMOVE AND UMOVEM					

							; 7872	;HERE WITH HALT CODE IN THE T1
							; 7873	=010*
							; 7874	HALTED:	WORK[SV.ARX]_[ARX],	;SAVE TEMP REGISTER
U 0104, 3676,3333,0004,7174,4007,0700,0410,0000,0212	; 7875		CALL [SAVVMA]		;PUT VMA IN WORK[SV.VMA]
							; 7876	=110*	ABORT MEM CYCLE,		;ABORT CYCLE IN PROGRESS
U 0114, 3675,4223,0000,4364,4277,0700,0210,0000,0010	; 7877		CALL [WRTHSB]		;WRITE HALT STATUS BLOCK
							; 7878	=111*
U 0116, 3674,4221,0004,4174,4007,0700,0200,0021,1016	; 7879	PWRON:	[ARX]_0, VMA PHYSICAL WRITE ;STORE HALT CODE
							; 7880	=
U 3674, 2474,3333,0017,4175,5007,0701,0200,0000,0002	; 7881		MEM WRITE, MEM_[T1]	; IN LOCATION 0
							; 7882	=0	NEXT [ARX] PHYSICAL WRITE,
U 2474, 3670,0111,0704,4170,4007,0700,0210,0023,1016	; 7883		CALL [STOPC]
U 2475, 0005,4443,0000,4174,4107,0700,0000,0000,0074	; 7884	H1:	SET HALT, J/HALTLP	;TELL CONSOLE WE HAVE HALTED
							; 7885	
							; 7886	
							; 7887	4:	UNHALT,			;RESET CONSOLE
U 0004, 2476,4443,0000,4174,4107,0640,0000,0000,0062	; 7888		SKIP EXECUTE, J/CONT	;SEE IF CO OR EX
							; 7889	5:
U 0005, 0004,4443,0000,4174,4007,0660,0000,0000,0000	; 7890	HALTLP:	SKIP/-CONTINUE, J/4	;WAIT FOR CONTINUE
							; 7891	
							; 7892	=0
							; 7893	CONT:	VMA_[PC],		;LOAD PC INTO VMA
							; 7894		FETCH,			;START READ
U 2476, 0117,3443,0100,4174,4007,0700,0200,0014,0012	; 7895		J/XCTGO			;DO THE INSTRUCTION
U 2477, 2500,4571,1203,4374,4007,0700,0000,0024,1200	; 7896		[AR]_VMA IO READ	;PUT FLAGS IN AR
							; 7897	=0	[AR]_[AR].OR.#,		;PUT IN ADDRESS
							; 7898		#/200000, HOLD LEFT,	; OF CSL REGISTER
U 2500, 3666,3551,0303,4370,4007,0700,0010,0020,0000	; 7899		CALL [STRTIO]
							; 7900	CONT1:	MEM READ,		;WAIT FOR DATA
							; 7901		[HR]_MEM,		;PUT IN HR
							; 7902		LOAD INST,		;LOAD IR, ETC.
U 2501, 2716,3771,0002,4365,5617,0700,0200,0000,0002	; 7903		J/XCT1			;GO DO THE INSTRUCTION
							; 7904	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 219
; INOUT.MIC[7,3]	13:32 7-JAN-1986			WRITE HALT STATUS BLOCK					

							; 7905	.TOC	"WRITE HALT STATUS BLOCK"
							; 7906	
							; 7907	;THE HALT STATUS BLOCK LOOKS LIKE:
							; 7908	
							; 7909	;	!=======================================================!
							; 7910	;	!00!                        MAG                         !
							; 7911	;	!-------------------------------------------------------!
							; 7912	;	!01!                         PC                         !
							; 7913	;	!-------------------------------------------------------!
							; 7914	;	!02!                         HR                         !
							; 7915	;	!-------------------------------------------------------!
							; 7916	;	!03!                         AR                         !
							; 7917	;	!-------------------------------------------------------!
							; 7918	;	!04!                        ARX                         !
							; 7919	;	!-------------------------------------------------------!
							; 7920	;	!05!                         BR                         !
							; 7921	;	!-------------------------------------------------------!
							; 7922	;	!06!                        BRX                         !
							; 7923	;	!-------------------------------------------------------!
							; 7924	;	!07!                        ONE                         !
							; 7925	;	!-------------------------------------------------------!
							; 7926	;	!10!                        EBR                         !
							; 7927	;	!-------------------------------------------------------!
							; 7928	;	!11!                        UBR                         !
							; 7929	;	!-------------------------------------------------------!
							; 7930	;	!12!                        MASK                        !
							; 7931	;	!-------------------------------------------------------!
							; 7932	;	!13!                        FLG                         !
							; 7933	;	!-------------------------------------------------------!
							; 7934	;	!14!                         PI                         !
							; 7935	;	!-------------------------------------------------------!
							; 7936	;	!15!                        XWD1                        !
							; 7937	;	!-------------------------------------------------------!
							; 7938	;	!16!                         T0                         !
							; 7939	;	!-------------------------------------------------------!
							; 7940	;	!17!                         T1                         !
							; 7941	;	!=======================================================!
							; 7942	;	!         VMA FLAGS         !            VMA            !
							; 7943	;	!=======================================================!
							; 7944	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 220
; INOUT.MIC[7,3]	13:32 7-JAN-1986			WRITE HALT STATUS BLOCK					

							; 7945	;START AT 1 TO DUMP 2901 REGISTERS INTO MAIN MEMORY
							; 7946	1:	WORK[SV.ARX]_[ARX],	;SAVE TEMP REGISTER
U 0001, 3676,3333,0004,7174,4007,0700,0410,0000,0212	; 7947		CALL [SAVVMA]		;WORK[SV.VMA]_VMA
U 0011, 0024,3771,0004,7274,4007,0701,0000,0000,0227	; 7948	11:	[ARX]_WORK[HSBADR]
U 0024, 3700,4223,0000,4364,4277,0700,0210,0000,0010	; 7949	=10*	ABORT MEM CYCLE, CALL [DUMP]
U 0026, 2475,4443,0000,4174,4107,0700,0000,0000,0074	; 7950		SET HALT, J/H1
							; 7951	
							; 7952	
							; 7953	WRTHSB:	[ARX]_WORK[HSBADR], ;GET ADDRESS OF HSB
U 3675, 2502,3771,0004,7274,4007,0422,0000,0000,0227	; 7954		SKIP AD.LE.0, 4T	;SEE IF VALID
							; 7955	=0	READ [MASK], LOAD PI,	;TURN OFF PI SYSTEM
U 2502, 3700,3333,0012,4174,4437,0700,0000,0000,0000	; 7956		J/DUMP			; AND GO TAKE DUMP
							; 7957		[ARX]_WORK[SV.ARX],
U 2503, 0002,3771,0004,7274,4004,1701,0000,0000,0212	; 7958		RETURN [2]		;DO NOT DUMP ANYTHING
							; 7959	
U 3676, 3677,3771,0004,4354,4007,0700,0000,0000,0000	; 7960	SAVVMA:	[ARX]_VMA
							; 7961		WORK[SV.VMA]_[ARX],
U 3677, 0010,3333,0004,7174,4004,1700,0400,0000,0210	; 7962		RETURN [10]
							; 7963	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 221
; INOUT.MIC[7,3]	13:32 7-JAN-1986			WRITE HALT STATUS BLOCK					

							; 7964	;DUMP OUT THE 2901
U 3700, 2504,3333,0004,4174,4007,0700,0200,0021,1016	; 7965	DUMP:	READ [ARX], VMA PHYSICAL WRITE
U 2504, 2746,3333,0000,4175,5007,0701,0210,0000,0002	; 7966	=0*	MEM WRITE, MEM_[MAG], CALL [NEXT]
U 2506, 3701,3333,0001,4175,5007,0701,0200,0000,0002	; 7967		MEM WRITE, MEM_[PC]
U 3701, 2505,0111,0704,4170,4007,0700,0200,0023,1016	; 7968		NEXT [ARX] PHYSICAL WRITE
U 2505, 2746,3333,0002,4175,5007,0701,0210,0000,0002	; 7969	=0*	MEM WRITE, MEM_[HR], CALL [NEXT]
U 2507, 2510,3333,0003,4175,5007,0701,0200,0000,0002	; 7970		MEM WRITE, MEM_[AR]
U 2510, 2746,3333,0003,7174,4007,0700,0410,0000,0211	; 7971	=0*	WORK[SV.AR]_[AR], CALL [NEXT]
U 2512, 2511,3771,0003,7274,4007,0701,0000,0000,0212	; 7972		[AR]_WORK[SV.ARX]
U 2511, 2746,3333,0003,4175,5007,0701,0210,0000,0002	; 7973	=0*	MEM WRITE, MEM_[AR], CALL [NEXT]
U 2513, 3702,3333,0005,4175,5007,0701,0200,0000,0002	; 7974		MEM WRITE, MEM_[BR]
U 3702, 2514,0111,0704,4170,4007,0700,0200,0023,1016	; 7975		NEXT [ARX] PHYSICAL WRITE
U 2514, 2746,3333,0006,4175,5007,0701,0210,0000,0002	; 7976	=0*	MEM WRITE, MEM_[BRX], CALL [NEXT]
U 2516, 3703,3333,0007,4175,5007,0701,0200,0000,0002	; 7977		MEM WRITE, MEM_[ONE]
U 3703, 2515,0111,0704,4170,4007,0700,0200,0023,1016	; 7978		NEXT [ARX] PHYSICAL WRITE
U 2515, 2746,3333,0010,4175,5007,0701,0210,0000,0002	; 7979	=0*	MEM WRITE, MEM_[EBR], CALL [NEXT]
U 2517, 3704,3333,0011,4175,5007,0701,0200,0000,0002	; 7980		MEM WRITE, MEM_[UBR]
U 3704, 2520,0111,0704,4170,4007,0700,0200,0023,1016	; 7981		NEXT [ARX] PHYSICAL WRITE
U 2520, 2746,3333,0012,4175,5007,0701,0210,0000,0002	; 7982	=0*	MEM WRITE, MEM_[MASK], CALL [NEXT]
U 2522, 3705,3333,0013,4175,5007,0701,0200,0000,0002	; 7983		MEM WRITE, MEM_[FLG]
U 3705, 2521,0111,0704,4170,4007,0700,0200,0023,1016	; 7984		NEXT [ARX] PHYSICAL WRITE
U 2521, 2746,3333,0014,4175,5007,0701,0210,0000,0002	; 7985	=0*	MEM WRITE, MEM_[PI], CALL [NEXT]
U 2523, 3706,3333,0015,4175,5007,0701,0200,0000,0002	; 7986		MEM WRITE, MEM_[XWD1]
U 3706, 2524,0111,0704,4170,4007,0700,0200,0023,1016	; 7987		NEXT [ARX] PHYSICAL WRITE
U 2524, 2746,3333,0016,4175,5007,0701,0210,0000,0002	; 7988	=0*	MEM WRITE, MEM_[T0], CALL [NEXT]
U 2526, 2525,3333,0017,4175,5007,0701,0200,0000,0002	; 7989		MEM WRITE, MEM_[T1]
U 2525, 2746,3771,0003,7274,4007,0701,0010,0000,0210	; 7990	=0*	[AR]_WORK[SV.VMA], CALL [NEXT]
U 2527, 3707,3333,0003,4175,5007,0701,0200,0000,0002	; 7991		MEM WRITE, MEM_[AR]
U 3707, 3710,3771,0003,7274,4007,0701,0000,0000,0211	; 7992	HSBDON:	[AR]_WORK[SV.AR]
U 3710, 3711,3771,0004,7274,4007,0701,0000,0000,0210	; 7993		[ARX]_WORK[SV.VMA]
U 3711, 3712,3443,0400,4174,4007,0700,0200,0000,0010	; 7994		VMA_[ARX]
							; 7995		[ARX]_WORK[SV.ARX],
U 3712, 0006,3771,0004,7274,4004,1701,0000,0000,0212	; 7996		RETURN [6]
							; 7997	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 222
; PAGEF.MIC[7,3]	12:15 10-APR-1985			WRITE HALT STATUS BLOCK					

; 7998		.NOBIN
; 7999		.TOC	"PAGE FAIL REFIL LOGIC"
; 8000	
; 8001	;WHEN THE CPU CAN NOT COMPLETE A MEMORY REFERENCE BECAUSE THE PAGE
; 8002	; TABLE DOES NOT CONTAIN VALID INFORMATION FOR THE VIRTUAL PAGE INVOLVED
; 8003	; THE HARDWARE CALLS THIS ROUTINE TO RELOAD THE HARDWARE PAGE TABLE.
; 8004	;
; 8005	;THIS CODE WILL EITHER DO THE RELOAD OR GENERATE A PAGE FAIL FOR THE
; 8006	; SOFTWARE. THE INFORMATION LOADED CONSISTS OF THE PHYSICAL PAGE NUMBER,
; 8007	; THE CACHE ENABLE BIT AND THE WRITE ENABLE BIT.
; 8008	
; 8009	;THIS LOGIC USES MANY VARIABLES. THEY ARE DESCRIBED BRIEFLY HERE:
; 8010	
; 8011	;THING			WHERE KEPT			USE
; 8012	;OLD VMA		WORKSPACE WORD 210		SAVES VMA
; 8013	;OLD AR 		WORKSPACE WORD 211		SAVES AR
; 8014	;OLD ARX		WORKSPACE WORD 212		SAVES ARX
; 8015	;OLD BR 		WORKSPACE WORD 213		SAVES BR
; 8016	;OLD BRX		WORKSPACE WORD 214		SAVES BRX
; 8017	;KL PAGING BIT		EBR BIT 1 (IN 2901)		INDICATES KL STYLE (TOPS-20) PAGING
; 8018	;							INSTEAD OF KI STYLE (TOPS-10 AND DIAGNOSTIC)
; 8019	;							MODE PAGING
; 8020	;W BIT			FLG BIT 4			PAGE CAN BE WRITTEN
; 8021	;C BIT			FLG BIT 6			DATA IN THIS PAGE MAY BE PUT
; 8022	;							INTO CACHE
; 8023	;PI CYCLE		FLG BIT 5			STORING OLD PC DURING PI
; 8024	;MAP FLAG		FLG BIT 18			MAP INSTRUCTION IN PROGRESS
; 8025	;CLEANUP CODE		FLG BITS 32-35			WHAT TO DO SO INSTRUCTION MAY BE
; 8026	;							RESTARTED
; 8027	;SPT BASE		WORKSPACE WORD 215		ADDRESS OF SHARED-POINTER-TABLE
; 8028	;CST BASE		WORKSPACE WORD 216		ADDRESS OF CORE-STATUS-TABLE
; 8029	;CST MASK		WORKSPACE WORD 217		BITS TO KEEP ON CST UPDATE
; 8030	;CST DATA (PUR) 	WORKSPACE WORD 220		BITS TO SET ON CST UPDATE
; 8031	;PAGE TABLE ADDRESS	AR				WHERE THIS PAGE TABLE IS LOCATED
; 8032	;PHYSICAL PAGE # (PPN)	AR				RESULT OF THIS PROCESS
; 8033	;CST ENTRY		AR				CORE STATUS TABLE ENTRY
; 8034	;SPT ENTRY		AR				WORD FROM SPT
; 8035	;PAGE TABLE ENTRY	AR				WORD FROM PT
; 8036	;PAGE NUMBER		BR				INDEX INTO CURENT PAGE TABLE
; 8037	;PAGE FAIL WORD 	BRX				WHAT HAPPENED (ALSO MAP RESULT)
; 8038	
;;8039	.IF/INHCST
;;8040		SKIP NO CST	"AD/D,DBUS/RAM,RAMADR/#,WORK/CBR,DT/4T,SKIP/ADEQ0"
; 8041	.ENDIF/INHCST
; 8042	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 223
; PAGEF.MIC[7,3]	12:15 10-APR-1985			PAGE FAIL REFIL LOGIC					

; 8043	;
; 8044	;
; 8045	;
; 8046	;		   KL10 PAGING - WORD FORMATS
; 8047	;
; 8048	;Section Pointer
; 8049	;
; 8050	;The section pointer is found in the user or exec section table.
; 8051	;(Part of UPT or EPT.)
; 8052	;
; 8053	;Section pointer provides (via the SPT) the physical address  of
; 8054	;the PAGE TABLE for the given section.
; 8055	;
; 8056	;	 Code:	 0	 No-access (trap)
; 8057	;		 1	 Immediate
; 8058	;		 2	 Share
; 8059	;		 3	 Indirect
; 8060	;		 4-7	 Unused, reserved
; 8061	;
; 8062	;	 0 1 2 3 4 5 6		 18			 35
; 8063	;	 +----+-+-+-+-+---------+-------------------------+	
; 8064	;	 !CODE!P!W! !C!/////////!  PAGE TABLE IDENTIFIER  !
; 8065	;	 !010 ! ! ! ! !/////////!	 (SPT INDEX)	  !
; 8066	;	 +----+-+-+-+-+---------+-------------------------+
; 8067	;
; 8068	;		NORMAL SECTION POINTER (Code = 2)
; 8069	;
; 8070	;	 0   2 3 4 5 6	   9	       18		      35
; 8071	;	 +----+-+-+-+-+---+-----------+------------------------+
; 8072	;	 !CODE!P!W! !C!///!SECTION    !SECTION TABLE IDENTIFIER!
; 8073	;	 !011 ! ! ! ! !///!TABLE INDEX!       (SPT INDEX)      !
; 8074	;	 +----+-+-+-+-+---+-----------+------------------------+
; 8075	;
; 8076	;	       INDIRECT SECTION POINTER (Code = 3)
; 8077	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 224
; PAGEF.MIC[7,3]	12:15 10-APR-1985			PAGE FAIL REFIL LOGIC					

; 8078	;PAGE POINTERS
; 8079	;
; 8080	;FOUND IN PAGE TABLES
; 8081	;
; 8082	;	 0 1 2 3 4 5 6	    12				 35
; 8083	;	 +----+-+-+-+-+----+------------------------------+
; 8084	;	 !CODE!P!W! !C!////!   PHYSICAL ADDRESS OF PAGE   !
; 8085	;	 !001 ! ! ! ! !////!				  !
; 8086	;	 +----+-+-+-+-+----+------------------------------+
; 8087	;
; 8088	;		 IMMEDIATE POINTER (code field = 1)
; 8089	;
; 8090	;	 B12-35  give PHYSICAL ADDRESS OF PAGE
; 8091	;	     if  B12-17 >< 0, page not in core-trap
; 8092	;	     if  B12-17 =  0, B23-35 give CORE PAGE
; 8093	;			      NUMBER of page, B18-22 MBZ
; 8094	;
; 8095	;
; 8096	;
; 8097	;
; 8098	;
; 8099	;	 0    2 3     6 	  18			 35
; 8100	;	 +-----+-------+---------+------------------------+
; 8101	;	 !CODE !SAME AS!/////////!	  SPT INDEX	  !
; 8102	;	 !010  ! IMMED.!/////////!			  !
; 8103	;	 +-----+-------+---------+------------------------+
; 8104	;
; 8105	;		 SHARED POINTER (code field = 2)
; 8106	;
; 8107	;	 B18-35  Give SPT INDEX (SPTX).  SPTX + SPT BASE
; 8108	;		 ADDRESS = physical core address of word
; 8109	;		 holding physical address of page.
; 8110	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 225
; PAGEF.MIC[7,3]	12:15 10-APR-1985			PAGE FAIL REFIL LOGIC					

; 8111	;	 0 1 2 3      6     9	 17 18			 35
; 8112	;	 +----+--------+---+-------+----------------------+
; 8113	;	 !CODE!SAME AS !///! PAGE  ! PAGE TABLE IDENTIFIER!	
; 8114	;	 !011 ! IMMED. !///!NUMBER !	 (SPT INDEX)	  !
; 8115	;	 +----+--------+---+-------+----------------------+
; 8116	;
; 8117	;		 INDIRECT POINTER (code field = 3)
; 8118	;
; 8119	;	 This pointer type causes another pointer to be  fetched
; 8120	;	 and  interpreted.   The  new pointer is found in word N
; 8121	;	 (B9-17) of the page addressed by C(SPT + SPTX).
; 8122	;
; 8123	;
; 8124	;
; 8125	;	 SPT ENTRY
; 8126	;
; 8127	;	 Found in the SPT, i.e., when fetching C(SPT +SPTX)
; 8128	;
; 8129	;			       12			 35
; 8130	;	 +--------------------+---------------------------+
; 8131	;	 !////////////////////!  PHYSICAL ADDRESS OF PAGE !
; 8132	;	 !////////////////////! 	 OR PAGE TABLE	  !
; 8133	;	 +--------------------+---------------------------+
; 8134	;
; 8135	;		 B12-35  Give PHYSICAL ADDRESS of page.
; 8136	;
; 8137	;	 The base address (physical core  address)  of	the  SPT
; 8138	;	 resides in one AC of the reserved AC block.
; 8139	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 226
; PAGEF.MIC[7,3]	12:15 10-APR-1985			PAGE FAIL REFIL LOGIC					

; 8140	;PHYSICAL STORAGE ADDRESS
; 8141	;
; 8142	;Found in B12-35 of IMMEDIATE POINTERS and SPT ENTRIES.
; 8143	;
; 8144	;			 12	 17 18	 23		 35
; 8145	;			 +---------+----+-----------------+
; 8146	;			 !	   !MBZ ! CORE PAGE NUMBER!
; 8147	;			 !	   !	!   IF B12-17 = 0 !
; 8148	;			 +---------+----+-----------------+
; 8149	;
; 8150	;	 If B12-17 = 0, then B23-35 are CORE PAGE NUMBER  (i.e.,
; 8151	;	 B14-26  of  physical  core  address) of page and B18-22
; 8152	;	 MBZ.  If B12-17 >< 0, then  address  is  not  core  and
; 8153	;	 pager traps.
; 8154	;
; 8155	;
; 8156	;
; 8157	;CORE STATUS TABLE ENTRY
; 8158	;
; 8159	;Found when fetching C(CBR + CORE PAGENO)
; 8160	;
; 8161	;	 0	5				  32  34 35
; 8162	;	 +-------+-------------------------------+------+-+
; 8163	;	 !  CODE !				 !	!M!
; 8164	;	 +-------+-------------------------------+------+-+
; 8165	;
; 8166	;	 B0-5	 are code field:
; 8167	;
; 8168	;		 0 - unavailable, trap
; 8169	;
; 8170	;		 1-77 - available
; 8171	;
; 8172	;
; 8173	;
; 8174	;	 B32-34 reserved for future hardware specification.
; 8175	;
; 8176	;	 B35 is "modified" bit, set on any write ref to page.
; 8177	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 227
; PAGEF.MIC[7,3]	12:15 10-APR-1985			PAGE FAIL REFIL LOGIC					

; 8178	;QUANTITIES IN HARDWARE REGISTERS
; 8179	;
; 8180	;SPT	 SPT Base Register
; 8181	;
; 8182	;			 14				 35
; 8183	;			 +--------------------------------+
; 8184	;			 !   PHYSICAL CORE WORD ADDRESS   !
; 8185	;			 +--------------------------------+
; 8186	;
; 8187	;CBR	 CST Base Register
; 8188	;
; 8189	;			 14				 35
; 8190	;			 +--------------------------------+
; 8191	;			 !   PHYSICAL CORE WORD ADDRESS   !
; 8192	;			 +--------------------------------+
; 8193	;
; 8194	;CSTMSK  CST Update Mask
; 8195	;
; 8196	;	 0					     32  35
; 8197	;	 +------------------------------------------+---+-+
; 8198	;	 !			 MASK		    !111!1!
; 8199	;	 +------------------------------------------+---+-+
; 8200	;
; 8201	;		 ANDed with CST word during update
; 8202	;
; 8203	;(B32-35 must be all 1's to preserve existing CST information)
; 8204	;
; 8205	;CSTDATA CST Update Data
; 8206	;
; 8207	;	 0				      32 34 35	
; 8208	;	 +------------------------------------------+---+-+
; 8209	;	 !			 DATA		    !000!0!
; 8210	;	 +------------------------------------------+---+-+
; 8211	;
; 8212	;		 IORed with CST word during update
; 8213	;
; 8214	;(B32-35 must be all 0's to preserve existing CST information)
; 8215	;
; 8216	;All  unspecified  bits  and  fields  are  reserved  for  future
; 8217	;specification by DEC.
; 8218	;
; 8219	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 228
; PAGEF.MIC[7,3]	12:15 10-APR-1985			PAGE FAIL REFIL LOGIC					

							; 8220		.BIN
							; 8221	
							; 8222		.DCODE
D 0257, 1215,1553,0100					; 8223	257:	IOT,	AC,	J/MAP
							; 8224		.UCODE
							; 8225	
							; 8226	1553:
							; 8227	MAP:	[AR]_[AR].OR.#,		;ASSUME PHYSICAL REF
							; 8228		#/160000,		;FAKE ANSWER
U 1553, 3713,3551,0303,4374,0007,0700,0000,0016,0000	; 8229		HOLD RIGHT		; ..
U 3713, 3714,3771,0006,4354,4007,0700,0000,0000,0000	; 8230		[BRX]_VMA		;PUT VMA AND FLAGS IN BRX
							; 8231		[BRX]_[BRX].AND.#,	;JUST KEEP USER BIT
U 3714, 3715,4551,0606,4374,0007,0700,0000,0040,0000	; 8232		#/400000, HOLD RIGHT	; ..
U 3715, 3716,3333,0006,7174,4007,0700,0400,0000,0210	; 8233		WORK[SV.VMA]_[BRX]	;SAVE IN WORKSPACE
U 3716, 3717,3771,0005,7274,4007,0701,0000,0000,0230	; 8234		[BR]_WORK[APR]		;GET APR FLAGS
U 3717, 2530,4553,0500,4374,4007,0331,0000,0003,0000	; 8235		TR [BR], #/030000	;PAGING ENABLED?
U 2530, 3727,3771,0013,4370,4007,0700,0000,0040,0002	; 8236	=0	STATE_[MAP], J/PFMAP	;YES--DO REAL MAP
U 2531, 0100,3440,0303,0174,4156,4700,0400,0000,0000	; 8237		AC_[AR], NEXT INST	;NO--RETURN VIRTUAL ADDRESS
							; 8238	;HARDWARE COMES HERE ON PAGE TABLE NOT VALID (OR INTERRUPT) WHEN
							; 8239	; STARTING A MEMORY REFERENCE. MICOWORD ADDRESS OF INSTRUCTION DOING
							; 8240	; MEM WAIT IS SAVED ON THE STACK.
							; 8241	3777:
							; 8242	PAGE-FAIL:
U 3777, 3720,3333,0003,7174,4007,0700,0400,0000,0211	; 8243		WORK[SV.AR]_[AR]
U 3720, 3721,3333,0006,7174,4007,0700,0400,0000,0214	; 8244	ITRAP:	WORK[SV.BRX]_[BRX]
U 3721, 3722,3771,0006,4354,4007,0700,0000,0000,0000	; 8245		[BRX]_VMA
U 3722, 3723,3333,0006,7174,4007,0700,0400,0000,0210	; 8246		WORK[SV.VMA]_[BRX]
							; 8247		WORK[SV.ARX]_[ARX],
U 3723, 1060,3333,0004,7174,4007,0370,0400,0000,0212	; 8248		SKIP IRPT		;SEE IF INTERRUPT (SAVE DISPATCH)
							; 8249	=0000
							; 8250	PFD:	DBM/PF DISP, DBUS/DBM,	;BRING CODE TO 2901'S
							; 8251		AD/D, DEST/PASS, 4T,	;PUT ON DP 18-21
U 1060, 1060,3773,0000,4304,4003,1702,0000,0000,0000	; 8252		DISP/DP LEFT, J/PFD	;DISPATCH ON IT
							; 8253	=0001				;(1) INTERRUPT
U 1061, 1503,3333,0005,7174,4007,0700,0400,0000,0213	; 8254		WORK[SV.BR]_[BR], J/PFPI1
							; 8255	=0011				;(3) BAD DATA FROM MEMORY
							; 8256		[BRX]_IO DATA,		;GET THE BAD DATA
							; 8257		AD PARITY OK/0,		; DO NOT LOOK AT PARITY
U 1063, 3724,3771,0006,4374,4007,0700,0000,0000,0000	; 8258		J/BADDATA		;SAVE IN AC BLK 7
							; 8259	=0101				;(5) NXM ERROR
U 1065, 1501,4571,1206,4374,4007,0700,0000,0037,0000	; 8260		[BRX]_[370000] XWD 0, J/HARD
							; 8261	=0111				;(7) NXM & BAD DATA
U 1067, 1501,4571,1206,4374,4007,0700,0000,0037,0000	; 8262		[BRX]_[370000] XWD 0, J/HARD
							; 8263	=1000				;(10) WRITE VIOLATION
U 1070, 3727,3333,0005,7174,4007,0700,0400,0000,0213	; 8264		WORK[SV.BR]_[BR], J/PFMAP
							; 8265	=1001				;[123] (11) 1 ms timer and movsrj
U 1071, 1503,3333,0005,7174,4007,0700,0400,0000,0213	; 8266		WORK[SV.BR]_[BR], J/PFPI1
							; 8267	=1010				;(12) PAGE NOT VALID
U 1072, 3727,3333,0005,7174,4007,0700,0400,0000,0213	; 8268		WORK[SV.BR]_[BR], J/PFMAP
							; 8269	=1011				;(13) EXEC/USER MISMATCH
U 1073, 3727,3333,0005,7174,4007,0700,0400,0000,0213	; 8270		WORK[SV.BR]_[BR], J/PFMAP
							; 8271	=
							; 8272	
							; 8273	BADDATA:
U 3724, 3725,3333,0006,7174,4007,0700,0400,0000,0160	; 8274		WORK[BADW0]_[BRX]	;SAVE BAD WORD
U 3725, 3726,3333,0006,7174,4007,0700,0400,0000,0161	; 8275		WORK[BADW1]_[BRX]	;AGAIN
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 228-1
; PAGEF.MIC[7,3]	12:15 10-APR-1985			PAGE FAIL REFIL LOGIC					

U 3726, 1501,4571,1206,4374,4007,0700,0000,0036,0000	; 8276		[BRX]_[360000] XWD 0, J/HARD
							; 8277	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 229
; PAGEF.MIC[7,3]	12:15 10-APR-1985			PAGE FAIL REFIL LOGIC					

							; 8278	;WE HAVE SAVED AR, ARX, BR AND BRX. WE MERGE IN HERE FROM MAP
							; 8279	; INSTRUCTION, SAVE THE VMA AND START THE PAGE FAIL WORD.
U 3727, 3730,4223,0000,4364,4277,0700,0200,0000,0010	; 8280	PFMAP:	ABORT MEM CYCLE		;CLEAR PAGE FAIL
							; 8281		[FLG]_[FLG].OR.#,	;PRESET W AND C TO 1
							; 8282		FLG.W/1, FLG.C/1,	;BITS INVOLVED
U 3730, 3731,3551,1313,4374,0007,0700,0000,0002,4000	; 8283		HOLD RIGHT		;LEAVE RH ALONE
U 3731, 2532,4553,0600,4374,4007,0321,0000,0002,0000	; 8284		TL [BRX], WRITE TEST/1	;IS THIS A WRITE TEST?
							; 8285	=0	[BRX]_[BRX].OR.#,
							; 8286		#/10000,
U 2532, 2533,3551,0606,4374,0007,0700,0000,0001,0000	; 8287		HOLD RIGHT		;YES--TURN INTO WRITE REF
							; 8288		[BRX]_[BRX].AND.#,	;START PAGE FAIL WORD
							; 8289		#/411000,		;SAVE 3 INTERESTING BITS
U 2533, 3732,4551,0606,4374,0007,0700,0000,0041,1000	; 8290		HOLD RIGHT		;SAVE VIRTUAL ADDRESS
							; 8291					;USER ADDR (400000)
							; 8292					;WRITE REF (010000)
							; 8293					;PAGED REF (001000)
							; 8294		[BRX]_[BRX].XOR.#,	;FIX BIT 8
U 3732, 3733,6551,0606,4374,0007,0700,0000,0000,1000	; 8295		#/1000, HOLD RIGHT
							; 8296		[BR]_[BRX],		;COPY VIRTUAL ADDRESS
U 3733, 2534,3441,0605,4174,4007,0700,2000,0071,0007	; 8297		SC_7			;PREPARE TO SHIFT 9 PLACES
							; 8298	=0
							; 8299	PF25:	[BR]_[BR]*.5,		;RIGHT ADJUST PAGE #
							; 8300		STEP SC,		;COUNT SHIFT STEPS
U 2534, 2534,3447,0505,4174,4007,0630,2000,0060,0000	; 8301		J/PF25			;LOOP FOR 9
							; 8302		[BR]_[BR].AND.# CLR LH,	;MASK TO 9 BITS
U 2535, 3734,4251,0505,4374,4007,0700,0000,0000,0777	; 8303		#/777			; ..
							; 8304	.IF/KLPAGE
							; 8305	.IF/KIPAGE
							; 8306		TL [EBR],		;KI MODE REFILL?
U 3734, 2536,4553,1000,4374,4007,0321,0000,0000,0040	; 8307		#/40			;FLAG BIT
							; 8308	=0
							; 8309	.ENDIF/KIPAGE
							; 8310		READ [BRX],		;USER REF? (KL MODE)
							; 8311		SKIP DP0,		; ..
U 2536, 2540,3333,0006,4174,4007,0520,0000,0000,0000	; 8312		J/PF30			;CONTINUE AT PF30
							; 8313	.ENDIF/KLPAGE
							; 8314	.IF/KIPAGE
							; 8315		[ARX]_[BR]*.5,		;KI10 MODE REFILL
U 2537, 3774,3447,0504,4174,4007,0700,0000,0000,0000	; 8316		J/KIFILL		;GO HANDLE EASY CASE
							; 8317	.ENDIF/KIPAGE
							; 8318	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 230
; PAGEF.MIC[7,3]	12:15 10-APR-1985			PAGE FAIL REFIL LOGIC					

							; 8319	.IF/KLPAGE
							; 8320	;HERE IN TOPS-20 MODE
							; 8321	;PICK UP CORRECT SECTION POINTER
							; 8322	=0
							; 8323	PF30:	[ARX]_WORK[PTA.E],	;EXEC MODE
							; 8324		SKIP AD.EQ.0, 4T,	;SEE IF VALID
U 2540, 2544,3771,0004,7274,4007,0622,0000,0000,0423	; 8325		J/PF35			;CONTINUE BELOW
							; 8326		[ARX]_WORK[PTA.U],	;USER MODE
U 2541, 2542,3771,0004,7274,4007,0622,0000,0000,0424	; 8327		SKIP AD.EQ.0, 4T	;SEE IF VALID
							; 8328	=0	VMA_[ARX]+[BR],		;POINTER VALID
							; 8329		VMA PHYSICAL READ,	;START MEMORY
U 2542, 1130,0113,0405,4174,4007,0700,0200,0024,1016	; 8330		J/PF77			;CONTINUE BELOW
							; 8331		[AR]_[UBR]+#, 3T,	;USER MODE
							; 8332		#/540,			;OFFSET TO UPT
U 2543, 3735,0551,1103,4374,4007,0701,0000,0000,0540	; 8333		J/PF40			;GO GET POINTER
							; 8334	
							; 8335	=0
							; 8336	PF35:	VMA_[ARX]+[BR],		;POINTER VALID
							; 8337		VMA PHYSICAL READ,	;START MEMORY
U 2544, 1130,0113,0405,4174,4007,0700,0200,0024,1016	; 8338		J/PF77			;CONTINUE BELOW
							; 8339		[AR]_[EBR]+#, 3T,	;EXEC MODE
U 2545, 3735,0551,1003,4374,4007,0701,0000,0000,0540	; 8340		#/540			;OFFSET TO EPT
							; 8341	PF40:	VMA_[AR],		;LOAD THE VMA
							; 8342		START READ,		;START THE MEMORY CRANKING
U 3735, 3736,3443,0300,4174,4007,0700,0200,0024,1016	; 8343		VMA PHYSICAL		;ABSOLUTE ADDRESS
							; 8344		MEM READ,		;WAIT FOR MEMORY
U 3736, 1000,3771,0003,4365,5007,0700,0200,0000,0002	; 8345		[AR]_MEM		;POINT POINTER IN AR
							; 8346	;LOOK AT SECTION POINTER AND DISPATCH ON TYPE
							; 8347	=000
							; 8348	PF45:	SC_7,			;FETCH SECTION 0 POINTER
U 1000, 3767,4443,0000,4174,4007,0700,2010,0071,0007	; 8349		CALL [SETPTR]		;FIGURE OUT POINTER TYPE
							; 8350	SECIMM:	TL [AR],		;IMMEDIATE POINTER
							; 8351		#/77,			;TEST FOR 12-17 = 0
U 1001, 2552,4553,0300,4374,4007,0321,0000,0000,0077	; 8352		J/PF50			;CONTINUE AT PF50
							; 8353		[AR]_[AR]+WORK[SBR],	;SHARED SECTION
U 1002, 2550,0551,0303,7274,4007,0701,0000,0000,0215	; 8354		J/SECSHR		;GO FETCH POINTER FROM SPT
							; 8355		[AR]_[AR]+WORK[SBR],	;INDIRECT SECTION POINTER
U 1003, 3772,0551,0303,7274,4007,0701,0010,0000,0215	; 8356		CALL [RDPT]		;GO FETCH SPT ENTRY
							; 8357	=111	TL [AR],		;12 TO 17 = 0?
U 1007, 2546,4553,0300,4374,4007,0321,0000,0000,0077	; 8358		#/77			; ..
							; 8359	=
U 2546, 2672,4553,1300,4374,4007,0321,0000,0001,0000	; 8360	=0	PAGE FAIL TRAP		;NO
							; 8361		[AR]_[AR]*2,		;FIRST SHIFT
U 2547, 0602,3445,0303,4174,4007,0630,2000,0060,0000	; 8362		STEP SC			;SC WAS LOADED AT PF45
							; 8363	=0*0
							; 8364	PF60:	[AR]_[AR]*2,		;CONVERT TO ADDRESS OF
							; 8365		STEP SC,		; SECTION TABLE
U 0602, 0602,3445,0303,4174,4007,0630,2000,0060,0000	; 8366		J/PF60
U 0603, 3772,4443,0000,4174,4007,0700,0010,0000,0000	; 8367		CALL [RDPT]		;READ SECTION TABLE
U 0607, 1000,4443,0000,4174,4007,0700,0000,0000,0000	; 8368	=1*1	J/PF45			;TRY AGAIN
							; 8369	=
							; 8370	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 231
; PAGEF.MIC[7,3]	12:15 10-APR-1985			PAGE FAIL REFIL LOGIC					

							; 8371	;STILL .IF/KLPAGE
							; 8372	;HERE FOR SHARED SECTION. AR GETS THE ADDRESS OF PAGE TABLE
							; 8373	=0**
U 2550, 3772,4443,0000,4174,4007,0700,0010,0000,0000	; 8374	SECSHR:	CALL [RDPT]		;READ WORD FROM SPT
U 2554, 2552,4553,0300,4374,4007,0321,0000,0000,0077	; 8375		TL [AR], #/77		;TEST FOR BITS 12-17 = 0
							; 8376	
							; 8377	;HERE WITH ADDRESS OF PAGE TABLE IN AR AND SKIP ON
							; 8378	; BITS 12 THRU 17 EQUAL TO ZERO
							; 8379	=0
U 2552, 2672,4553,1300,4374,4007,0321,0000,0001,0000	; 8380	PF50:	PAGE FAIL TRAP		;BITS 12-17 .NE. 0
							; 8381		[ARX]_[AR].AND.# CLR LH, ;PAGE NUMBER OF PAGE TABLE
U 2553, 2555,4251,0304,4374,4007,0700,0000,0000,3777	; 8382		#/3777			;11 BIT PHYSICAL PAGE #
							; 8383	.IFNOT/NOCST
							; 8384	=0*	[AR]_[ARX],		;COPY ADDRESS
U 2555, 2622,3441,0403,4174,4007,0700,0010,0000,0000	; 8385		CALL [UPCST]		;UPDATE CST0
U 2557, 2560,3551,0303,7274,4007,0701,0000,0000,0220	; 8386	PF70:	[AR]_[AR].OR.WORK[PUR]	;PUT IN NEW AGE AND
							; 8387					; USE BITS
							; 8388	.IFNOT/INHCST
							; 8389	=0**	START NO TEST WRITE,	;START MEMORY WRITE
U 2560, 3075,4443,0000,4174,4007,0700,0210,0001,0002	; 8390		CALL [IBPX]		;GO STORE IN MEMORY
							; 8391	.ENDIF/INHCST
							;;8392	.IF/INHCST
							;;8393	=0**	SKIP NO CST,		;SEE IF A CST
							;;8394		CALL [WRCST]		;AND GO WRITE IN MEMORY
							; 8395	.ENDIF/INHCST
U 2564, 2562,4443,0000,4174,4007,0700,2000,0071,0007	; 8396		SC_7			;THIS CAN BE BUMMED
							; 8397	=0
							; 8398	PF75:	[ARX]_[ARX]*2,		;CONVERT PAGE NUMBER TO
							; 8399		STEP SC,		; PAGE ADDRESS
U 2562, 2562,3445,0404,4174,4007,0630,2000,0060,0000	; 8400		J/PF75			;LOOP OVER 9 STEPS
							; 8401	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 232
; PAGEF.MIC[7,3]	12:15 10-APR-1985			PAGE FAIL REFIL LOGIC					

							; 8402	;STILL .IF/KLPAGE
							; 8403	;WE NOW HAVE THE ADDRESS OF THE PAGE TABLE ENTRY. GO
							; 8404	; READ IT AND START ANALYSIS
							; 8405	
							; 8406	;IF WE ARE HERE FOR THE FIRST TIME FOR THE USER OR EXEC SAVE THE
							; 8407	; ADDRESS OF THE PAGE TABLE IN PTA.E OR PTA.U SO THAT WE DO NOT
							; 8408	; HAVE TO DO THE SECTION LOOKUP EVERY TIME.
U 2563, 1040,3333,0006,4174,4007,0520,0000,0000,0000	; 8409		READ [BRX], SKIP DP0	;USER OR EXEC REF?
							; 8410	=000	[AR]_WORK[PTA.E],	;EXEC MODE
							; 8411		SKIP AD.EQ.0, 4T,	;SEE IF SET YET
U 1040, 2642,3771,0003,7274,4007,0622,0010,0000,0423	; 8412		CALL [SHDREM]		;SHOULD WE REMEMBER PTR
							; 8413		[AR]_WORK[PTA.U],	;USER MODE
							; 8414		SKIP AD.EQ.0, 4T,	;SEE IF SET YET
U 1041, 2642,3771,0003,7274,4007,0622,0010,0000,0424	; 8415		CALL [SHDREM]		;SHOULD WE REMEMBER PTR
							; 8416		WORK[PTA.E]_[ARX],	;SAVE FOR EXEC
U 1042, 1047,3333,0004,7174,4007,0700,0400,0000,0423	; 8417		J/PF76			;CONTINUE BELOW
							; 8418		WORK[PTA.U]_[ARX],	;SAVE FOR USER
U 1043, 1047,3333,0004,7174,4007,0700,0400,0000,0424	; 8419		J/PF76			;CONTINUE BELOW
							; 8420	=111
							; 8421	PF76:	VMA_[ARX]+[BR], 	;READ PAGE POINTER
							; 8422		START READ,
U 1047, 1130,0113,0405,4174,4007,0700,0200,0024,1016	; 8423		VMA PHYSICAL
							; 8424	=
							; 8425	=00
							; 8426	PF77:	MEM READ,		;START ANALYSIS OF POINTER
							; 8427		[AR]_MEM,
U 1130, 3767,3771,0003,4365,5007,0700,0210,0000,0002	; 8428		CALL [SETPTR]
							; 8429	PTRIMM: TL [AR],		;IMMEDIATE POINTER
							; 8430		#/77,			;CHECK FOR BITS 0-5
U 1131, 1134,4553,0300,4374,4007,0321,0000,0000,0077	; 8431		J/PF80			;GO TO PF80
							; 8432		[AR]_[AR]+WORK[SBR],	;SHARED POINTER
U 1132, 2561,0551,0303,7274,4007,0701,0000,0000,0215	; 8433		J/PTRSHR		;GO TO READ SPT
							; 8434	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 233
; PAGEF.MIC[7,3]	12:15 10-APR-1985			PAGE FAIL REFIL LOGIC					

							; 8435	;STILL .IF/KLPAGE
							; 8436	;INDIRECT POINTER. CHANGE PAGE # AND LOOK FOR PAGE TABLE
							; 8437	PTRIND:	[BR]_[AR] SWAP, 	;PUT IN RIGHT HALF
U 1133, 2566,3770,0305,4344,4007,0670,0000,0000,0000	; 8438		SKIP/-1 MS		;DID CLOCK GO OFF
							; 8439	=0	WORK[SV.AR1]_[AR],	;YES--UPDATE CLOCK
U 2566, 2600,3333,0003,7174,4007,0700,0400,0000,0426	; 8440		J/PFTICK		; ..
							; 8441		[BR]_[BR].AND.# CLR LH,	;UPDATE PAGE # AND RESTART
							; 8442		#/777,			;MASK FOR PAGE #
U 2567, 2570,4251,0505,4374,4007,0370,0000,0000,0777	; 8443		SKIP IRPT		;SEE IF THIS IS A LOOP
							; 8444	=0	[AR]_[AR].AND.#,	;CHANGE INDIRECT POINTER
							; 8445		#/277000,		; INTO SHARE POINTER
							; 8446		HOLD RIGHT,		; ..
U 2570, 1000,4551,0303,4374,0007,0700,0000,0027,7000	; 8447		J/PF45			;GO BACK AND TRY AGAIN
U 2571, 2672,4553,1300,4374,4007,0321,0000,0001,0000	; 8448		PAGE FAIL TRAP		;POINTER LOOP
							; 8449	
							; 8450	=0**
U 2561, 3772,4443,0000,4174,4007,0700,0010,0000,0000	; 8451	PTRSHR:	CALL [RDPT]		;GO LOOK AT POINTER
							; 8452		TL [AR],		;BITS 12-17 .EQ. 0?
U 2565, 1134,4553,0300,4374,4007,0321,0000,0000,0077	; 8453		#/77
							; 8454	
							; 8455	;HERE WITH FINAL POINTER. SKIP IF 12-17 NOT EQUAL TO ZERO
							; 8456	.IFNOT/NOCST
							; 8457	=00
U 1134, 2672,4553,1300,4374,4007,0321,0000,0001,0000	; 8458	PF80:	PAGE FAIL TRAP		;NO--TAKE A TRAP
							; 8459		[ARX]_[AR].AND.# CLR LH, ;SAVE PHYSICAL PAGE #
							; 8460		#/3777,			;MASK TO 13 BITS
U 1135, 2622,4251,0304,4374,4007,0700,0010,0000,3777	; 8461		CALL [UPCST]		;UPDATE CST0
							; 8462	=11
							;;8463	.IF/NOCST
							;;8464	=0
							;;8465	PF80:	PAGE FAIL TRAP		;NO--TAKE A TRAP
							; 8466	.ENDIF/NOCST
							; 8467	
							; 8468	;HERE WE HAVE CST ENTRY IN AR, PAGE FAIL WORD IN BRX. GO LOOK
							; 8469	; AT WRITABLE AND WRITTEN BITS
							; 8470	PF90:	[BRX]_[BRX].OR.#,	;TRANSLATION IS VALID
U 1137, 3737,3551,0606,4374,0007,0700,0000,0010,0000	; 8471		#/100000, HOLD RIGHT	; ..
U 3737, 2572,4553,1300,4374,4007,0321,0000,0002,0000	; 8472		TL [FLG], FLG.W/1	;IS THIS PAGE WRITABLE?
							; 8473	=0	[BRX]_[BRX].OR.#,	;YES--INDICATE THAT IN PFW
							; 8474		#/020000,
U 2572, 3745,3551,0606,4374,4007,0700,0000,0002,0000	; 8475		J/PF100			;NOT WRITE VIOLATION
							; 8476		TL [BRX],		;IS THIS A WRITE REF?
U 2573, 2574,4553,0600,4374,4007,0321,0000,0003,0000	; 8477		WRITE TEST/1, WRITE CYCLE/1
U 2574, 2672,4553,1300,4374,4007,0321,0000,0001,0000	; 8478	=0	PAGE FAIL TRAP		;WRITE VIOLATION
							; 8479	PF107:
							; 8480	.IFNOT/NOCST
							; 8481		[AR]_[AR].OR.WORK[PUR],	;PUT IN NEW AGE
U 2575, 2603,3551,0303,7274,4007,0701,0000,0000,0220	; 8482		J/PF110			;GO TO STORE CST ENTRY
							; 8483	.ENDIF/NOCST
							;;8484	.IF/NOCST
							;;8485	PFDONE:	TR [FLG],
							;;8486		#/400000,
							;;8487		J/PF140
							; 8488	.ENDIF/NOCST
							; 8489	
							; 8490	=0*
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 233-1
; PAGEF.MIC[7,3]	12:15 10-APR-1985			PAGE FAIL REFIL LOGIC					

							; 8491	PFTICK:	[AR]_WORK[TIME1],	;UPDATE TIMER
U 2600, 3561,3771,0003,7274,4117,0701,0010,0000,0301	; 8492		SPEC/CLRCLK, CALL [TOCK]
							; 8493		[AR]_WORK[SV.AR1],	;RESTORE AR
U 2602, 1133,3771,0003,7274,4007,0701,0000,0000,0426	; 8494		J/PTRIND		;GO TRY AGAIN
							; 8495	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 234
; PAGEF.MIC[7,3]	12:15 10-APR-1985			PAGE FAIL REFIL LOGIC					

							; 8496	;STILL .IF/KLPAGE
							; 8497	;HERE IF PAGE IS WRITABLE
U 3745, 2576,4553,0600,4374,4007,0321,0000,0001,0000	; 8498	PF100:	TL [BRX], WRITE CYCLE/1	;IS THIS A WRITE REF?
							; 8499	=0	[AR]_[AR].OR.#, 	;YES--SET WRITTEN BIT
							; 8500		#/1,
							; 8501		HOLD LEFT,
U 2576, 2604,3551,0303,4370,4007,0700,0000,0000,0001	; 8502		J/PF105
							; 8503		TR [AR],		;NOT WRITE, ALREADY WRITTEN?
U 2577, 2604,4553,0300,4374,4007,0331,0000,0000,0001	; 8504		#/1
							; 8505	=0
							; 8506	PF105:	[BRX]_[BRX].OR.#,	;WRITTEN SET BIT
							; 8507		#/040000,		;MARK PAGE AS
							; 8508		HOLD RIGHT,		;WRITABLE
U 2604, 2575,3551,0606,4374,0007,0700,0000,0004,0000	; 8509		J/PF107			;STORE CST WORD
							; 8510		[FLG]_[FLG].AND.NOT.#,	;NOT WRITTEN, CAUSE TRAP ON
							; 8511		FLG.W/1,		; WRITE ATTEMPT
							; 8512		HOLD RIGHT,		;ONLY CLEAR LH
U 2605, 2575,5551,1313,4374,0007,0700,0000,0002,0000	; 8513		J/PF107
							; 8514	.IFNOT/NOCST
							; 8515	=0**
							; 8516	PF110:
							; 8517	.IFNOT/INHCST
							; 8518		START NO TEST WRITE,
U 2603, 3075,4443,0000,4174,4007,0700,0210,0001,0002	; 8519		CALL [IBPX]		;STORE CST ENTRY
							; 8520	.ENDIF/INHCST
							;;8521	.IF/INHCST
							;;8522		SKIP NO CST,
							;;8523		CALL [WRCST]
							; 8524	.ENDIF/INHCST
							; 8525	
							; 8526	.ENDIF/KLPAGE
							; 8527	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 235
; PAGEF.MIC[7,3]	12:15 10-APR-1985			PAGE FAIL REFIL LOGIC					

							; 8528	
							; 8529	;HERE WHEN WE HAVE FIGURED OUT PHYSICAL ADDRESS (IN ARX) AND FLAGS
							; 8530	; (IN BRX) RELOAD PAGE TABLE.
							; 8531	PFDONE: TR [FLG],		;MAP INSTRUCTION?
U 2607, 2610,4553,1300,4374,4007,0331,0000,0040,0000	; 8532		#/400000
							; 8533	.ENDIF/NOCST
							; 8534	=0
							; 8535	PF140:	[AR]_[ARX],		;GET PHYSCIAL PAGE #
							; 8536		SC_7,			;PREPARE TO CONVERT TO
U 2610, 2612,3441,0403,4174,4007,0700,2000,0071,0007	; 8537		J/PF130			; WORD ADDRESS
							; 8538		[AR]_WORK[SV.VMA],	;RESTORE VMA
U 2611, 3753,3771,0003,7274,4007,0701,0000,0000,0210	; 8539		J/PF120
							; 8540	=0
							; 8541	PF130:	[AR]_[AR]*2,		;CONVERT TO WORD #
							; 8542		STEP SC,
U 2612, 2612,3445,0303,4174,4007,0630,2000,0060,0000	; 8543		J/PF130
							; 8544		[AR]_[AR].AND.#,	;JUST ADDRESS BITS
							; 8545		#/3,
U 2613, 3746,4551,0303,4374,0007,0700,0000,0000,0003	; 8546		HOLD RIGHT
U 3746, 3747,4221,0013,4170,4007,0700,0000,0000,0000	; 8547		END MAP 		;CLEAR MAP FLAGS
							; 8548		[BRX]_[BRX].OR.#,	;TURN ON THE TRANSLATION
							; 8549		#/100000,		; VALID BIT
U 3747, 3750,3551,0606,4374,0007,0700,0000,0010,0000	; 8550		HOLD RIGHT		; IN LEFT HALF ONLY
U 3750, 2614,4553,1300,4374,4007,0321,0000,0000,4000	; 8551		TL [FLG], FLG.C/1	;CACHE BIT SET?
							; 8552	=0	[BRX]_[BRX].OR.#,	;YES--SET IN MAP WORD
U 2614, 2615,3551,0606,4374,0007,0700,0000,0000,2000	; 8553		#/002000, HOLD RIGHT	; ..
							; 8554		[BRX]_[BRX].AND.#,	;PRESERVE WORD #
U 2615, 3752,4551,0606,4370,4007,0700,0000,0000,0777	; 8555		#/777, HOLD LEFT	; IN PAGE FAIL WORD
							; 8556		[AR]_[AR].OR.[BRX],	;COMPLETE MAP INSTRUCTION
U 3752, 1500,3111,0603,4174,4003,7700,0200,0003,0001	; 8557		EXIT
							; 8558	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 236
; PAGEF.MIC[7,3]	12:15 10-APR-1985			PAGE FAIL REFIL LOGIC					

U 3753, 3755,3441,0305,4174,4007,0700,0000,0000,0000	; 8559	PF120:	[BR]_[AR]		;COPY PAGE FAIL WORD
							; 8560		[BR]_[AR].AND.NOT.#,	;CLEAR BITS WHICH START A CYCLE
							; 8561		READ CYCLE/1,		; ..
							; 8562		WRITE CYCLE/1,		; ..
							; 8563		WRITE TEST/1,		; ..
U 3755, 3756,5551,0305,4374,0007,0700,0000,0007,0000	; 8564		HOLD RIGHT		;JUST DO LEFT HALF
							; 8565		VMA_[BR], 3T,		;RESTORE VMA
U 3756, 3757,3443,0500,4174,4007,0701,0200,0000,0030	; 8566		DP FUNC/1		;SET USER ACCORDING TO WHAT IT WAS
							; 8567		[ARX]_[ARX].AND.# CLR LH, ;JUST KEEP PAGE #
U 3757, 3760,4251,0404,4374,4007,0700,0000,0000,3777	; 8568		#/3777			; ..
U 3760, 3761,3551,0406,4374,4007,0700,0000,0040,0000	; 8569		[BRX]_[ARX].OR.#, #/400000 ;SET VALID BITS
U 3761, 2616,4553,1300,4374,4007,0321,0000,0002,0000	; 8570		TL [FLG], FLG.W/1	;WANT WRITE SET?
U 2616, 2617,3551,0606,4374,4007,0700,0000,0004,0000	; 8571	=0	[BRX]_[BRX].OR.#, #/040000 ;SET WRITE BIT
							; 8572		TL [FLG], FLG.C/1,	;WANT CACHE SET?
U 2617, 2620,4553,1300,4374,4147,0321,0000,0000,4000	; 8573		LOAD PAGE TABLE		;LOAD PAGE TABLE ON NEXT
							; 8574					; MICRO INSTRUCTION
							; 8575	=0	[BRX]_[BRX].OR.#,	;SET CACHE BIT
U 2620, 3762,3551,0606,4374,4007,0700,0000,0002,0000	; 8576		#/020000, J/PF125	;CACHE BIT
U 2621, 3762,3333,0006,4174,4007,0700,0000,0000,0000	; 8577		READ [BRX]		;LOAD PAGE TABLE
U 3762, 3763,3771,0004,7274,4007,0701,0000,0000,0212	; 8578	PF125:	[ARX]_WORK[SV.ARX]
U 3763, 3764,3771,0005,7274,4007,0701,0000,0000,0213	; 8579		[BR]_WORK[SV.BR]
U 3764, 3765,3771,0006,7274,4007,0701,0000,0000,0214	; 8580		[BRX]_WORK[SV.BRX]
							; 8581		VMA_[AR],		;MAKE MEM REQUEST
							; 8582		DP FUNC/1, 3T,		;FROM DATA PATH
U 3765, 3766,3443,0300,4174,4007,0701,0200,0000,0032	; 8583		WAIT/1			;WAIT FOR PREVIOUS CYCLE TO
							; 8584					; COMPLETE. (NEED THIS TO 
							; 8585					; START ANOTHER CYCLE)
							; 8586		[AR]_WORK[SV.AR],
U 3766, 0000,3771,0003,7274,4004,1701,0000,0000,0211	; 8587		RETURN [0]
							; 8588	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 237
; PAGEF.MIC[7,3]	12:15 10-APR-1985			PAGE FAIL REFIL LOGIC					

							; 8589	.IF/KLPAGE
							; 8590	.IFNOT/NOCST
							; 8591	;SUBROUTINE TO START CST UPDATE
							; 8592	;CALL WITH:
							; 8593	;	AR/ PHYSICAL PAGE NUMBER
							; 8594	;RETURN 2 WITH ENTRY IN AR, PAGE FAIL IF AGE TOO SMALL
							; 8595	.IFNOT/INHCST
							; 8596	=0**
							; 8597	UPCST:	[AR]_[AR]+WORK[CBR],	;ADDRESS OF CST0 ENTRY
U 2622, 3772,0551,0303,7274,4007,0701,0010,0000,0216	; 8598		CALL [RDPT]		;READ OLD VALUE
							; 8599		TL [AR],		;0 - 5 = 0?
U 2626, 2624,4553,0300,4374,4007,0321,0000,0077,0000	; 8600		#/770000		; ..
							; 8601	=0	[AR]_[AR].AND.WORK[CSTM],	;CLEAR AGE FIELD
U 2624, 0002,4551,0303,7274,4004,1701,0000,0000,0217	; 8602		RETURN [2]		;AGE IS NOT ZERO
U 2625, 2672,4553,1300,4374,4007,0321,0000,0001,0000	; 8603		PAGE FAIL TRAP		;AGE TOO SMALL
							; 8604	.ENDIF/INHCST
							;;8605	.IF/INHCST
							;;8606	UPCST:	SKIP NO CST		;SEE IF A CST IS PRESENT
							;;8607	=0*0	[AR]_[AR]+WORK[CBR],	;YES, ADDRESS OF CST0 ENTRY
							;;8608		CALL [RDPT]		;READ OLD VALUE
							;;8609		[AR]_0,RETURN [2]	;NO CST, RETURN
							;;8610		TL [AR],		;CHECK AGE FIELD
							;;8611		#/770000
							;;8612	=
							;;8613	=0	[AR]_[AR].AND.WORK[CSTM],	;CLEAR AGE FIELD
							;;8614		RETURN [2]		;AGE IS NOT ZERO
							;;8615		PAGE FAIL TRAP		;AGE TOO SMALL
							;;8616	
							;;8617	=0
							;;8618	WRCST:	START NO TEST WRITE,
							;;8619		J/IBPX
							;;8620		RETURN [4]
							; 8621	.ENDIF/INHCST
							; 8622	.ENDIF/NOCST
							; 8623	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 238
; PAGEF.MIC[7,3]	12:15 10-APR-1985			PAGE FAIL REFIL LOGIC					

							; 8624	;STILL .IF/KLPAGE
							; 8625	;SUBROUTINE TO LOOK AT PAGE POINTER
							; 8626	;CALL WITH POINTER IN AR
							; 8627	;RETURNS 1 IF TYPE 1
							; 8628	;RETURNS 2 IF TYPE 2
							; 8629	;RETURNS 3 IF TYPE 3
							; 8630	;GOES TO PFT IF TYPE 0 OR 4 THRU 7
							; 8631	SETPTR: [ARX]_[AR].OR.#,	;AND C AND W BITS
U 3767, 3770,3551,0304,4374,4007,0700,0000,0075,3777	; 8632		#/753777		; OF ALL POINTERS
							; 8633		[FLG]_[FLG].AND.[ARX],	; ..
U 3770, 3771,4111,0413,4174,0007,0700,0000,0000,0000	; 8634		HOLD RIGHT		;KEEP IN LH OF FLG
							; 8635		READ [AR],		;TYPE 4,5,6 OR 7?
U 3771, 2630,3333,0003,4174,4007,0520,0000,0000,0000	; 8636		SKIP DP0		; ..
							; 8637	=0	TL [AR],		;HERE WE TEST FOR TYPE
							; 8638		#/300000,		; ZERO POINTER
U 2630, 2632,4553,0300,4374,4007,0321,0000,0030,0000	; 8639		J/STPTR1		;CHECK AT STPTR1
U 2631, 2672,4553,1300,4374,4007,0321,0000,0001,0000	; 8640		PAGE FAIL TRAP		;BAD TYPE
							; 8641	=0
							; 8642	STPTR1: TL [AR],		;NOT ZERO
							; 8643		#/100000,		;SEPERATE TYPE 2
U 2632, 2634,4553,0300,4374,4007,0321,0000,0010,0000	; 8644		J/STPTR2		; ..
U 2633, 2672,4553,1300,4374,4007,0321,0000,0001,0000	; 8645		PAGE FAIL TRAP		;TYPE 0
							; 8646	
							; 8647	=0
							; 8648	STPTR2: TL [AR],		;SEPERATE TYPE 1
							; 8649		#/200000,		; AND 3
U 2634, 2636,4553,0300,4374,4007,0321,0000,0020,0000	; 8650		J/STPTR3		; ..
U 2635, 0002,4443,0000,4174,4004,1700,0000,0000,0000	; 8651		RETURN [2]		;TYPE 2
							; 8652	
							; 8653	=0
U 2636, 0003,4443,0000,4174,4004,1700,0000,0000,0000	; 8654	STPTR3: RETURN [3]		;TYPE 3
U 2637, 0001,4443,0000,4174,4004,1700,0000,0000,0000	; 8655		RETURN [1]		;TYPE 1
							; 8656	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 239
; PAGEF.MIC[7,3]	12:15 10-APR-1985			PAGE FAIL REFIL LOGIC					

							; 8657	;STILL .IF/KLPAGE
							; 8658	;SUBROUTINE TO FETCH A PAGE POINTER OR CST ENTRY
							; 8659	;CALL WITH ADDRESS IN AR
							; 8660	;RETURN 4 WITH WORD IN AR
							; 8661	;
							; 8662	RDPT:	VMA_[AR],		;LOAD THE VMA
							; 8663		START READ,		;START MEM CYCLE
							; 8664		VMA PHYSICAL,		;ABSOLUTE ADDRESS
U 3772, 2640,3443,0300,4174,4007,0370,0200,0024,1016	; 8665		SKIP IRPT		;CHECK FOR INTERRUPTS
							; 8666	=0	MEM READ,		;NO INTERRUPTS
							; 8667		[AR]_MEM,		;PUT THE DATA INTO AR
U 2640, 0004,3771,0003,4365,5004,1700,0200,0000,0002	; 8668		RETURN [4]		;AND RETURN
U 2641, 2672,4553,1300,4374,4007,0321,0000,0001,0000	; 8669		PAGE FAIL TRAP		;INTERRUPT
							; 8670	
							; 8671	
							; 8672	;SUBROUTINE TO SEE IF WE SHOULD REMEMBER AN EXEC SECTION PTR
							; 8673	;CALL WITH SKIP ON ADR.EQ.0
							; 8674	;RETURNS 2 IF WE SHOULD STORE AND 7 IF WE SHOULD NOT
							; 8675	;
							; 8676	=0
U 2642, 0007,4443,0000,4174,4004,1700,0000,0000,0000	; 8677	SHDREM:	RETURN [7]		;INDIRECT PTR
U 2643, 3773,7441,1303,4174,4007,0700,0000,0000,0000	; 8678		[AR]_.NOT.[FLG]		;FLIP BITS
U 3773, 2644,4553,0300,4374,4007,0321,0000,0002,4000	; 8679		TL [AR], FLG.W/1, FLG.C/1 ;BOTH BITS SET
U 2644, 0007,4443,0000,4174,4004,1700,0000,0000,0000	; 8680	=0	RETURN [7]		;NO--DON'T STORE
U 2645, 0002,4443,0000,4174,4004,1700,0000,0000,0000	; 8681		RETURN [2]		;STORE
							; 8682	
							; 8683	.ENDIF/KLPAGE
							; 8684	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 240
; PAGEF.MIC[7,3]	12:15 10-APR-1985			PAGE FAIL REFIL LOGIC					

							; 8685	.IF/KIPAGE
							; 8686	;HERE IN KI10 MODE
							; 8687	;BR CONTAINS PAGE # AND ARX CONTAINS PAGE #/2
							; 8688	
							; 8689	KIFILL: READ [BRX],		;USER REF?
U 3774, 2646,3333,0006,4174,4007,0520,0000,0000,0000	; 8690		SKIP DP0		; ..
							; 8691	=0	[BR]-#, 		;EXEC--LESS THAN 340?
							; 8692		#/340,			; ..
							; 8693		SKIP DP18, 4T,		; ..
U 2646, 2650,1553,0500,4374,4007,0532,4000,0000,0340	; 8694		J/KIF10			;FOLLOW EXEC PATH
							; 8695	KIUPT:	[ARX]_[ARX]+[UBR],	;POINTER TO PAGE MAP ENTRY
							; 8696		LOAD VMA,		;PUT ADDRESS IN VMA
							; 8697		VMA PHYSICAL,		;ABSOLUTE ADDRESS
							; 8698		START READ,		;FETCH UPT WORD
U 2647, 3775,0111,1104,4174,4007,0700,0200,0024,1016	; 8699		J/KIF30			;JOIN COMMON CODE
							; 8700	=0
							; 8701	KIF10:	[BR]-#, 		;EXEC ADDRESS .GE. 340
							; 8702		#/400,			; SEE IF .GT. 400
							; 8703		SKIP DP18, 4T,		; ..
U 2650, 2652,1553,0500,4374,4007,0532,4000,0000,0400	; 8704		J/KIEPT			;LOOK AT KIF20
							; 8705		[ARX]_[ARX]+#, 3T,	;EXEC ADDRESS .LT. 340
							; 8706		#/600,			;IN EBR+600
U 2651, 2652,0551,0404,4374,4007,0701,0000,0000,0600	; 8707		J/KIEPT			;JOIN COMMON CODE
							; 8708	
							; 8709	=0
							; 8710	KIEPT:	[ARX]_[ARX]+[EBR],	;ADD OFFSET TO
							; 8711		LOAD VMA,		; EPT
							; 8712		START READ,		;START FETCH
							; 8713		VMA PHYSICAL,		;ABSOLUTE ADDRESS
U 2652, 3775,0111,1004,4174,4007,0700,0200,0024,1016	; 8714		J/KIF30			;GO GET POINTER
							; 8715		[ARX]_[ARX]+#,		;PER PROCESS PAGE
							; 8716		#/220, 3T,		; IS IN UPT + 400
U 2653, 2647,0551,0404,4374,4007,0701,0000,0000,0220	; 8717		J/KIUPT			;JOIN COMMON CODE
							; 8718	KIF30:	MEM READ,		;WAIT FOR DATA
U 3775, 3776,3771,0004,4365,5007,0700,0200,0000,0002	; 8719		[ARX]_MEM		;PLACE IT IN ARX
							; 8720		TR [BR],		;SEE IF EVEN OR ODD
U 3776, 2654,4553,0500,4374,4007,0331,0000,0000,0001	; 8721		#/1			; ..
							; 8722	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 241
; PAGEF.MIC[7,3]	12:15 10-APR-1985			PAGE FAIL REFIL LOGIC					

							; 8723	;STILL .IF/KIPAGE
							; 8724	=0
							; 8725	KIF40:	READ [ARX],		;ODD
							; 8726		SKIP DP18,		;SEE IF VALID
U 2654, 2656,3333,0004,4174,4007,0530,0000,0000,0000	; 8727		J/KIF50			;JOIN COMMON CODE
							; 8728		[ARX]_[ARX] SWAP,	;EVEN--FLIP AROUND
U 2655, 2654,3770,0404,4344,4007,0700,0000,0000,0000	; 8729		J/KIF40			; AND CONTINUE
							; 8730	
							; 8731	.ENDIF/KIPAGE
							; 8732	=0
U 2656, 2672,4553,1300,4374,4007,0321,0000,0001,0000	; 8733	KIF50:	PAGE FAIL TRAP
							; 8734	;AT THIS POINT WE HAVE THE PAGE MAP ENTRY IN RH OF AR
							; 8735		[FLG]_[FLG].AND.NOT.#,	;CLEAR W AND C
U 2657, 1435,5551,1313,4374,4007,0700,0000,0002,4000	; 8736		FLG.W/1, FLG.C/1	; FLAGS
U 1435, 2660,4553,0400,4374,4007,0331,0000,0002,0000	; 8737		TR [ARX], #/020000	;CACHE ENABLED?
							; 8738	=0	[FLG]_[FLG].OR.#,	;SET CACHE BITS
U 2660, 2661,3551,1313,4374,0007,0700,0000,0000,4000	; 8739		FLG.C/1, HOLD RIGHT	; ..
U 2661, 2662,4553,0400,4374,4007,0331,0000,0004,0000	; 8740		TR [ARX], #/040000	;DO NOT CACHE
							; 8741					;SEE IF CACHE BIT SET
							; 8742	=0	[BRX]_[BRX].OR.#,	;COPY BITS TO BRX
							; 8743		#/020000,
U 2662, 2663,3551,0606,4374,0007,0700,0000,0002,0000	; 8744		HOLD RIGHT
							; 8745		TR [ARX],		; ..
U 2663, 2664,4553,0400,4374,4007,0331,0000,0010,0000	; 8746		#/100000
							; 8747	=0	[FLG]_[FLG].OR.#,	;SAVE W
							; 8748		FLG.W/1,		; ..
							; 8749		HOLD RIGHT,		; ..
U 2664, 1500,3551,1313,4374,0007,0700,0000,0002,0000	; 8750		J/KIF90			;ALL DONE
							; 8751		TL [BRX],		;W=0, WRITE REF?
U 2665, 2666,4553,0600,4374,4007,0321,0000,0001,0000	; 8752		WRITE CYCLE/1
							; 8753	=0
							; 8754	KIF80:	[BRX]_[BRX].OR.#,	;WRITE FAILURE
							; 8755		#/100000, HOLD RIGHT,	;INDICATE THAT ACCESS WAS ON
U 2666, 2656,3551,0606,4374,0007,0700,0000,0010,0000	; 8756		J/KIF50			;GO PAGE FAIL
U 2667, 2607,4443,0000,4174,4007,0700,0000,0000,0000	; 8757		J/PFDONE		;ALL DONE
							; 8758	
							; 8759	KIF90:	[BRX]_[BRX].OR.#,	;PAGE IS WRITABLE
							; 8760		#/40000,		;TURN ON IN BRX
U 1500, 2607,3551,0606,4374,4007,0700,0000,0004,0000	; 8761		J/PFDONE		;ALL SET
							; 8762	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 242
; PAGEF.MIC[7,3]	12:15 10-APR-1985			PAGE FAIL REFIL LOGIC					

							; 8763	;HERE ON HARD PAGE FAILURES
U 1501, 2670,3333,0005,7174,4007,0700,0400,0000,0213	; 8764	HARD:	WORK[SV.BR]_[BR]	;SAVE BR (CLEANUP MAY NEED IT)
							; 8765	=0	[BR]_VMA,		;BUILD PAGE FAIL WORD
U 2670, 1510,3771,0005,4354,4007,0700,0010,0000,0000	; 8766		CALL [ABORT]		;CLEAR ERROR
							; 8767		[BR]_[BR].AND.#,	;SAVE THE FLAGS
							; 8768		#/401237,		; ..
U 2671, 1502,4551,0505,4374,0007,0700,0000,0040,1237	; 8769		HOLD RIGHT		; ..
							; 8770		[BRX]_[BRX].OR.[BR],	;COMPLETE PAGE FAIL WORD
U 1502, 2656,3111,0506,4174,4007,0700,0000,0000,0000	; 8771		J/KIF50			;GO TRAP
							; 8772	
U 1503, 1140,4443,0000,4174,4007,0370,0000,0000,0000	; 8773	PFPI1:	SKIP IRPT		;TIMER TRAP?
							; 8774	=00
							; 8775		[AR]_WORK[TIME1],	;YES--GET LOW WORD
							; 8776		SPEC/CLRCLK,		;CLEAR CLOCK FLAG
U 1140, 3561,3771,0003,7274,4117,0701,0010,0000,0301	; 8777		CALL [TOCK]		;DO THE UPDATE
U 1141, 2673,4443,0000,4174,4007,0700,0000,0000,0000	; 8778		J/PFT1			;EXTERNAL INTERRUPT
U 1142, 1507,4223,0000,4364,4277,0700,0200,0000,0010	; 8779		ABORT MEM CYCLE		;CLEAR 1MS FLAGS
							; 8780	=
							; 8781	PFPI2:	[AR]_WORK[SV.VMA],	;RESTORE VMA
U 1507, 3762,3771,0003,7274,4007,0701,0000,0000,0210	; 8782		J/PF125
							; 8783	
							; 8784	
U 1510, 0001,4223,0000,4364,4274,1700,0200,0000,0010	; 8785	ABORT:	ABORT MEM CYCLE, RETURN [1]
							; 8786	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 243
; PAGEF.MIC[7,3]	12:15 10-APR-1985			PAGE FAIL REFIL LOGIC					

							; 8787	;HERE ON PAGE FAIL TRAP
							; 8788	=0
U 2672, 0104,4751,1217,4374,4007,0700,0000,0000,0100	; 8789	PFT:	HALT [IOPF]		;IO PAGE FAILURE
							; 8790	PFT1:	[AR]_WORK[SV.VMA],
U 2673, 2674,3771,0003,7274,4007,0611,0000,0000,0210	; 8791		SKIP/TRAP CYCLE		;SEE IF TRAP CYCLE
							; 8792	=0	TL [AR], FETCH/1,	;IS THIS AN INSTRUCTION FETCH
U 2674, 2676,4553,0300,4374,4007,0321,0000,0010,0000	; 8793		J/PFT1A			;GO LOOK BELOW
U 2675, 1511,3771,0003,7274,4007,0701,0000,0000,0425	; 8794		[AR]_WORK[TRAPPC]	;RESTORE PC
U 1511, 2700,3333,0003,4174,4467,0700,0000,0000,0004	; 8795		READ [AR], LOAD FLAGS, J/CLDISP
							; 8796	=0
U 2676, 1100,4443,0000,4174,4007,0700,0000,0000,0000	; 8797	PFT1A:	J/CLEANED		;YES--NO PC TO BACK UP
U 2677, 2700,1111,0701,4170,4007,0700,4000,0000,0000	; 8798	FIXPC:	[PC]_[PC]-1, HOLD LEFT	;DATA FAILURE--BACKUP PC
							; 8799	=0
U 2700, 1100,3333,0013,4174,4003,5701,0000,0000,0000	; 8800	CLDISP:	CLEANUP DISP		;GO CLEANUP AFTER PAGE FAIL
							; 8801	=0000
							; 8802	CLEANUP:
							; 8803	CLEANED:			;(0) NORMAL CASE
							; 8804		END STATE, SKIP IRPT,	;NO MORE CLEANUP NEEDED
U 1100, 2702,4221,0013,4170,4007,0370,0000,0000,0000	; 8805		J/PFT2			;HANDLE PAGE FAIL OR INTERRUPT
							; 8806		[AR]_WORK[SV.ARX],	;(1) BLT
U 1101, 3167,3771,0003,7274,4007,0701,0000,0000,0212	; 8807		J/BLT-CLEANUP
							; 8808		[PC]_[PC]+1,		;(2) MAP
U 1102, 1562,0111,0701,4174,4007,0700,0000,0000,0000	; 8809		J/MAPDON
							; 8810		STATE_[EDIT-SRC],	;(3) SRC IN STRING MOVE
U 1103, 3463,3771,0013,4370,4007,0700,0000,0000,0011	; 8811		J/STRPF
							; 8812		STATE_[EDIT-DST],	;(4) DST IN STRING MOVE
U 1104, 3463,3771,0013,4370,4007,0700,0000,0000,0012	; 8813		J/STRPF
							; 8814		STATE_[SRC],		;(5) SRC+DST IN STRING MOVE
U 1105, 2310,3771,0013,4370,4007,0700,0000,0000,0003	; 8815		J/BACKD
							; 8816		STATE_[EDIT-DST],	;(6) FILL IN MOVSRJ
U 1106, 3472,3771,0013,4370,4007,0700,0000,0000,0012	; 8817		J/STRPF4
							; 8818		STATE_[EDIT-SRC],	;(7) DEC TO BIN
U 1107, 3467,3771,0013,4370,4007,0700,0000,0000,0011	; 8819		J/PFDBIN
							; 8820		STATE_[EDIT-SRC],	;(10) SRC+DST IN COMP
U 1110, 3461,3771,0013,4370,4007,0700,0000,0000,0011	; 8821		J/CMSDST
U 1111, 2302,4221,0013,4170,4007,0700,0000,0000,0000	; 8822		END STATE, J/BACKS	;(11) EDIT SRC FAIL
U 1112, 2310,4221,0013,4170,4007,0700,0000,0000,0000	; 8823		END STATE, J/BACKD	;(12) EDIT DST FAIL
							; 8824		STATE_[EDIT-SRC],	;(13) SRC+DST IN EDIT
U 1113, 2310,3771,0013,4370,4007,0700,0000,0000,0011	; 8825		J/BACKD
							; 8826	=
							; 8827	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 244
; PAGEF.MIC[7,3]	12:15 10-APR-1985			PAGE FAIL REFIL LOGIC					

							; 8828	=0
							; 8829	PFT2:	[AR]_[UBR]+#,		;PREPARE TO STORE PFW
							; 8830		#/500, 3T,
U 2702, 1512,0551,1103,4374,4007,0701,0000,0000,0500	; 8831		J/PFT10
U 2703, 0770,3551,1313,4374,0007,0700,0000,0001,0000	; 8832	PFT3:	TAKE INTERRUPT		;PROCESS INTERRUPT
							; 8833	PFT10:	VMA_[AR],		;WHERE TO STORE PFW
U 1512, 2704,3443,0300,4174,4007,0700,0200,0021,1016	; 8834		VMA PHYSICAL WRITE
							; 8835	=0	MEM WRITE,		;STORE PFW
							; 8836		MEM_[BRX],
U 2704, 1564,3333,0006,4175,5007,0701,0210,0000,0002	; 8837		CALL [NEXTAR]		;ADVANCE POINTER TO
							; 8838					;PREPARE TO STORE PC
							; 8839	.IF/KLPAGE
							; 8840	.IF/KIPAGE
U 2705, 2706,4553,1000,4374,4007,0321,0000,0040,0000	; 8841		TL [EBR], #/400000	;KL PAGING?
							; 8842	=0
							; 8843	.ENDIF/KIPAGE
U 2706, 2712,4521,1205,4074,4007,0700,0000,0000,0000	; 8844		[BR]_FLAGS,J/EAPF	;YES--DO EXTENDED THING
							; 8845	.ENDIF/KLPAGE
							; 8846	
							; 8847	.IF/KIPAGE
U 2707, 1513,3741,0105,4074,4007,0700,0000,0000,0000	; 8848		[BR]_PC WITH FLAGS	;GET OLD PC
							; 8849		MEM WRITE,		;STORE OLD PC
							; 8850		MEM_[BR],
U 1513, 1563,3333,0005,4175,5007,0701,0200,0000,0002	; 8851		J/EAPF1
							; 8852	.ENDIF/KIPAGE
							; 8853	
							; 8854	MAPDON:	END STATE,		;CLEAR MAP BIT
U 1562, 2710,4221,0013,4170,4007,0370,0000,0000,0000	; 8855		SKIP IRPT		;ANY INTERRUPT?
							; 8856	=0	[AR]_[BRX],		;RETURN PAGE FAIL WORD
U 2710, 1500,3441,0603,4174,4003,7700,0200,0003,0001	; 8857		EXIT
U 2711, 2703,1111,0701,4174,4007,0700,4000,0000,0000	; 8858		[PC]_[PC]-1, J/PFT3	;INTERRUPTED OUT OF MAP
							; 8859					; RETRY INSTRUCTION
							; 8860	
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 245
; PAGEF.MIC[7,3]	12:15 10-APR-1985			PAGE FAIL REFIL LOGIC					

							; 8861	
							; 8862	.IF/KLPAGE
							; 8863	=0
							; 8864	EAPF:	MEM WRITE, MEM_[BR],	;STORE FLAGS
U 2712, 1564,3333,0005,4175,5007,0701,0210,0000,0002	; 8865		CALL [NEXTAR]		;STORE PC WORD
U 2713, 1563,3333,0001,4175,5007,0701,0200,0000,0002	; 8866		MEM WRITE, MEM_[PC]	; ..
							; 8867	.ENDIF/KLPAGE
							; 8868	
							; 8869	EAPF1:	[AR]_[AR]+1,
							; 8870		VMA PHYSICAL READ,
U 1563, 2743,0111,0703,4174,4007,0700,0200,0024,1016	; 8871		J/GOEXEC
							; 8872	
U 1564, 0001,0111,0703,4170,4004,1700,0200,0023,1016	; 8873	NEXTAR:	NEXT [AR] PHYSICAL WRITE, RETURN [1]
							; 8874	


; Number of microwords used: 
;	D words= 512
;	U words= 2024, Highest= 2047

	END
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 246
; 								Cross Reference Listing					

(U) A				633 #
	AR			637 #	2391	2429	2459	2460	2523	2571	2579	2718	2720	2723	2726
				2729	2732	2816	2826	2841	2858	2868	2878	2888	2919	2929	2939
				2974	2986	2993	2997	3007	3008	3010	3012	3013	3021	3044	3045
				3271	3276	3278	3290	3293	3296	3301	3302	3372	3389	3391	3456
				3459	3527	3528	3534	3554	3581	3596	3632	3643	3655	3709	3732
				3737	3772	3816	3820	3829	3831	3992	3997	4027	4062	4076	4092
				4103	4106	4109	4123	4150	4151	4156	4173	4189	4209	4321	4330
				4335	4345	4351	4370	4374	4392	4420	4424	4426	4427	4446	4478
				4481	4484	4498	4523	4540	4541	4546	4551	4559	4561	4563	4634
				4644	4646	4651	4652	4697	4702	4712	4716	4754	4758	4762	4766
				4942	4955	5040	5043	5055	5058	5064	5070	5105	5180	5183	5285
				5291	5295	5296	5326	5332	5351	5357	5358	5359	5360	5369	5374
				5394	5395	5407	5409	5418	5419	5439	5444	5445	5451	5486	5490
				5492	5495	5498	5502	5504	5506	5508	5509	5510	5511	5517	5519
				5520	5529	5534	5550	5576	5584	5589	5591	5635	5648	5667	5676
				5680	5695	5709	5711	5713	5719	5746	5753	5756	5768	5771	5779
				5781	5785	5790	5792	5808	5813	5816	5838	5841	5842	5846	5964
				5968	5972	5979	5990	5999	6014	6034	6038	6051	6054	6080	6164
				6171	6188	6210	6224	6251	6262	6263	6264	6277	6311	6341	6352
				6390	6405	6433	6438	6467	6468	6469	6470	6472	6473	6476	6481
				6530	6551	6558	6559	6585	6623	6635	6636	6643	6663	6666	6669
				6673	6674	6676	6680	6682	6736	6737	6742	6743	6750	6753	6757
				6826	6848	6854	6873	6891	6895	6898	6899	6900	6901	6923	6948
				6949	6953	6959	6960	6964	7034	7040	7063	7065	7067	7069	7072
				7074	7076	7118	7125	7136	7140	7147	7151	7175	7181	7183	7188
				7196	7223	7286	7367	7369	7371	7373	7375	7377	7379	7381	7383
				7405	7411	7473	7483	7489	7492	7493	7510	7518	7568	7579	7592
				7594	7620	7625	7652	7655	7683	7701	7702	7761	7858	7866	7897
				8227	8237	8341	8350	8353	8355	8357	8361	8364	8375	8381	8386
				8429	8432	8437	8444	8452	8459	8481	8499	8503	8541	8544	8559
				8560	8581	8597	8599	8601	8631	8637	8642	8648	8662	8679	8792
				8833
	ARX			638 #	2491	2773	2774	3712	3714	3727	3756	4089	4101	4110	4111
				4128	4131	4133	4155	4175	4191	4211	4214	4234	4363	4391	4443
				4469	4470	4549	4641	4642	4650	4719	4909	4916	4917	4945	4948
				4969	5099	5121	5293	5331	5363	5549	5570	5573	5633	5650	5672
				5692	5712	5717	5763	5802	5809	6052	6093	6100	6134	6168	6218
				6227	6237	6246	6269	6270	6278	6310	6314	6391	6428	6436	6440
				6442	6759	6762	6808	6876	6950	7064	7068	7070	7073	7075	7104
				7106	7317	7330	7334	7524	7707	7709	7767	7994	8328	8336	8384
				8398	8421	8535	8567	8569	8633	8705	8715	8728	8737	8740	8745
	BR			639 #	2190	2387	2422	2424	2428	2909	3040	3073	3074	3077	3078
				3079	3080	3095	3098	3101	3104	3108	3111	3113	3145	3146	3149
				3150	3431	3434	3437	3440	3443	3446	3449	3452	3777	3782	3810
				3837	3846	3847	3994	3999	4097	4229	4394	4396	4404	4408	4471
				4474	4548	4552	4553	4554	4557	4562	4593	4735	4737	4796	4797
				4798	4799	4800	4807	4816	4820	4829	4890	4891	4892	4893	4894
				4915	4958	4964	5067	5107	5109	5119	5124	5292	5299	5300	5304
				5305	5361	5364	5398	5449	5532	5556	5558	5568	5582	5661	5679
				5682	5918	5930	5931	5933	5934	5961	5970	6015	6020	6045	6048
				6139	6204	6207	6208	6221	6229	6235	6358	6368	6379	6388	6392
				6410	6463	6478	6516	6527	6594	6850	6851	6892	6893	6933	6941
				6952	6956	7033	7036	7061	7095	7097	7100	7162	7173	7187	7189
				7214	7215	7285	7296	7303	7372	7374	7376	7382	7384	7420	7433
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 247
; 								Cross Reference Listing					

				7530	7553	7554	7555	7596	7598	7626	7630	7632	7636	7638	7662
				7668	7759	8235	8299	8302	8315	8441	8565	8691	8701	8720	8767
				8770
	BRX			640 #	4125	4153	4159	4230	4253	4273	4277	4281	4285	4291	4295
				4299	4303	4380	4433	4473	4585	4588	4599	5046	5098	5127	5135
				5142	5166	5324	5325	5327	5366	5371	5561	5578	5644	5658	5659
				5701	5922	6021	6091	6102	6103	6127	6176	6184	6265	6294	6307
				6316	6321	6329	6331	6340	6346	6351	6363	6402	6404	6422	6431
				6458	6460	6462	6493	6496	6512	6524	6526	6606	6608	6611	6677
				6684	6778	6782	6786	6790	6794	6798	6814	7087	7231	7232	7233
				7332	7482	7537	7538	7601	7684	8231	8284	8285	8288	8294	8296
				8470	8473	8476	8498	8506	8548	8552	8554	8556	8571	8575	8742
				8751	8754	8759	8856
	EBR			642 #	6980	7197	7198	7199	7212	7485	7528	8306	8339	8710	8841
	FLG			645 #	3623	5513	5614	5615	5622	5749	5752	5755	5758	5818	5825
				5826	6602	8281	8360	8380	8448	8458	8472	8478	8510	8531	8551
				8570	8572	8603	8640	8645	8669	8678	8733	8735	8738	8747	8832
	HR			636 #	2291	2297	2303	2309	2318	2322	2331	2336	2437	2785	2790
				3531	3540	3543	3545	3546	3547	3566	3570	3580	3585	3588	3608
				3629	3642	3924	3926	3928	3930	3932	3934	3936	3938	3944	3964
				4042	5920	6913	6990	6996	7005	7006	7007	7011	7012	7013	7014
				7019	7020	7021	7024	7025	7026	7027	7028	7029	7030	7031	7252
				7275	7370	7686	7700	7829	7833	7838	7840	7842	7844	7846	7848
	MAG			634 #	2426	4135	4138	4157	4160	4161	4174	4180	4182	4216	4218
				4220	4398	4416	4438	4442	4445	4486	4488	4489	4616	4621	4626
				4632	4633	5552	5643	5698	5724	5759	5794	5798	5800
	MASK			644 #	2152	2153	2154	2157	2160	2193	2204	2240	2244	2247	2250
				2259	2262	2265	2268	2519	2742	2763	2970	3018	3582	3630	3644
				3665	3948	3965	3988	3991	4036	4096	4232	4266	4400	4411	4439
				4564	4776	4896	4907	5454	5514	5587	5637	5727	5796	5885	5887
				5889	5891	5893	5895	5897	5899	5901	6136	6138	6160	6275	6597
				7284	7327	7328	7329	7463	7464	7465	7466	7467	7468	7469	7475
				7494	7504	7522	7536	7614	7617	7653	7664	7670	7687	7743	7896
				8260	8262	8276	8789	8844
	ONE			641 #	2182	2186	2231	2233	2278	2365	2416	2419	2949	3340	3406
				3422	3489	3503	3529	3538	3541	3616	3634	3637	3984	4031	4047
				4326	4741	5038	5106	5147	5149	5154	5171	5172	5441	5453	5528
				5677	5835	5956	5997	6030	6036	6057	6075	6085	6104	6105	6140
				6141	6183	6247	6252	6315	6327	6334	6354	6361	6366	6375	6385
				6389	6393	6394	6430	6444	6455	6507	6531	6625	6647	6700	6823
				6824	6830	6852	6894	6936	7291	7314	7344	7396	7680	7757	7882
				7968	7975	7978	7981	7984	7987	8798	8808	8858	8869	8873
	PC			635 #	2230	2234	2252	2345	2407	2432	3328	3455	3460	3691	3808
				3814	3834	4020	4221	4223	4698	4707	6969	7387	7506	7658	7893
				8848
	PI			646 #	3594	3595	3609	7015	7016	7364	7378	7380	7385	7395	7397
				7456	7457	7458	7459	7460	7461	7462	7471
	T0			648 #	4201	4205	4441	4452	4459	4462	4464	4465	5569	5577	5603
				5605	5606	5607	5610	5618	5621	5623	5663	5729	5737	5738	6359
				6426	7398	7534
	T1			649 #	4418	4558	5593	5678	5681	5700	5710
	UBR			643 #	3950	3990	6972	7132	7166	7221	7222	7227	7228	8331	8695
				8829
	XWD1			647 #	3511	3681	7520
(D) A				1317 #
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 248
; 								Cross Reference Listing					

	DBLAC			1321 #	2777
	DFP			1327 #	5539	5540	5628	5689
	DREAD			1320 #	2768	2769	4084	4085	4168	4386
	DSHIFT			1323 #	2959	2960
	FP			1325 #	5265	5266	5267	5268	5270	5271	5273	5274	5275	5276	5278
				5279	5310	5311	5312	5314	5316	5317	5339	5340	5341	5343	5345
				5346	5424	5425
	FPI			1324 #	5269	5277	5315	5344
	IOT			1328 #	7001	7002	7238	7560	7561	7562	7563	7571	7572	7573	7574
				7585	7586	7587	7588	7853	7854	8223
	RD-PF			1326 #	2549	2554	2559	2564	2602	2607	2612	2617	2622	2627	2632
				2637	2644	2649	2654	2659	2664	2669	2674	2679	2809	2819	2829
				2834	2851	2861	2871	2881	2901	2912	2922	2932	4055	4069	4117
				4142	4309	4314
	READ			1318 #	2552	2557	2562	2567	2586	2604	2605	2609	2610	2615	2620
				2625	2630	2635	2640	2646	2647	2651	2652	2657	2662	2667	2672
				2677	2682	2811	2812	2821	2822	2831	2832	2836	2837	2844	2853
				2854	2863	2864	2873	2874	2883	2884	2903	2904	2914	2915	2924
				2925	2934	2935	3188	3189	3190	3191	3192	3193	3204	3205	3206
				3207	3208	3209	3210	3211	3222	3223	3224	3225	3226	3227	3228
				3229	3239	3240	3241	3242	3243	3244	3245	3246	3361	3362	3363
				3364	3365	3366	3367	3368	3378	3379	3380	3381	3382	3383	3384
				3385	3395	3396	3397	3398	3399	3400	3401	3402	3411	3412	3413
				3414	3415	3416	3417	3418	3649	4057	4058	4071	4072	4119	4120
				4144	4145	4311	4312	4316	4317	4687	4688	4689	4690	4691	5389
	SHIFT			1322 #	2954	2955	2956
	WRITE			1319 #	2551	2556	2561	2566	2614	2619	2624	2629	2634	2639	2656
				2661	2666	2671	2676	2681	2778	2846	2847
(U) ACALU			1215 #
	AC+N			1217 #	2175	2176	2183	2373	2385	2491	2774	2783	3024	3045	3089
				3119	4089	4101	4180	4182	4184	4192	4194	4201	4203	4215	4216
				4217	4218	4219	4220	4332	4416	4438	4442	4445	4459	4460	4462
				4465	4484	4486	4488	4489	4615	4616	4619	4620	4621	4624	4625
				4626	4632	4633	5552	5643	5696	5698	5704	5763	5771	5809	5816
				5960	5968	5978	5981	6011	6014	6027	6034	6041	6051	6089	6099
				6119	6134	6151	6166	6168	6194	6197	6199	6206	6207	6208	6210
				6216	6218	6221	6227	6229	6257	6259	6260	6264	6271	6272	6273
				6277	6278	6285	6287	6292	6298	6314	6325	6337	6346	6352	6363
				6366	6368	6372	6385	6391	6392	6515	6546	6551	6556	6593	6595
				6699	6700	6812	6819	6826	6845	6847	6854	6874	6895	6931	6933
				6939	6941	6945	6948	6953
	B			1216 #
(D) ACDISP			1348 #	3518	7001	7002	7238
(U) ACN				1218 #	2373	2385	2491	2774	2783	3024	3045	3089	3119	4089	4101
				4180	4182	4184	4192	4194	4201	4203	4215	4216	4217	4218	4219
				4220	4332	4416	4438	4442	4445	4459	4460	4462	4465	4484	4486
				4488	4489	4615	4616	4619	4620	4621	4624	4625	4626	4632	4633
				5552	5643	5696	5698	5704	5763	5771	5809	5816	6298	6314	6325
				6372	6391
	BIN0			1225 #	2175	6194	6216	6221	6229	6260	6271	6272	6273	6277	6285
	BIN1			1226 #	2176	2183	6166	6168	6197	6199	6206	6207	6208	6210	6218
				6227	6257	6259	6264	6278	6287
	DLEN			1222 #	5960	5968	5981	6011	6014	6041	6051	6089	6099	6134	6292
				6337	6346	6352	6363	6366	6368	6385	6392	6699	6700	6812	6826
				6845	6945	6948	6953
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 249
; 								Cross Reference Listing					

	DSTP			1223 #	5978	6151	6546	6551	6595	6819	6874	6895	6939	6941
	MARK			1224 #	6515	6593
	SRCLEN			1220 #
	SRCP			1221 #	6027	6034	6119	6556	6847	6854	6931	6933
(U) AD				530 #	2157	2160	2193	2204	2240	2244	2247	2250	2259	2262	2265
				2268	2322	2519	2740	2742	2761	2763	3582	3665	3948	3988	4036
				4400	4411	5885	5887	5889	5891	5893	5895	5897	5899	5901	5931
				6160	6275	6597	7284	7327	7328	7329	7463	7464	7465	7466	7467
				7468	7469	7475	7504	7522	7536	7614	7617	7653	7664	7670	7687
				7743	7896	8260	8262	8276	8789
	A			559 #	2152	2154	2230	2234	2252	2297	2309	2336	2345	2387	2428
				2429	2432	2491	2523	2774	2790	2974	2986	2993	2997	3007	3008
				3010	3012	3013	3021	3040	3045	3073	3074	3077	3078	3079	3080
				3095	3098	3101	3104	3108	3111	3145	3146	3149	3150	3302	3328
				3391	3431	3443	3455	3456	3459	3460	3527	3528	3534	3554	3570
				3581	3596	3632	3643	3655	3709	3712	3714	3732	3737	3810	3816
				3829	3834	3847	4123	4125	4128	4150	4151	4153	4155	4173	4175
				4189	4191	4209	4211	4223	4229	4230	4232	4253	4266	4321	4330
				4345	4351	4380	4392	4394	4396	4408	4420	4424	4439	4443	4446
				4459	4465	4469	4478	4498	4546	4551	4552	4553	4558	4559	4561
				4563	4634	4698	4707	4712	4719	4735	4758	4766	4820	4896	4909
				4945	4964	4969	5043	5046	5064	5099	5119	5127	5135	5183	5291
				5292	5293	5304	5326	5327	5331	5332	5351	5359	5361	5366	5369
				5374	5407	5409	5439	5441	5444	5445	5451	5486	5490	5492	5498
				5506	5508	5509	5510	5528	5529	5534	5561	5568	5569	5573	5576
				5577	5584	5589	5591	5603	5605	5606	5607	5610	5618	5621	5623
				5633	5635	5637	5644	5648	5650	5661	5667	5672	5676	5677	5680
				5692	5695	5717	5727	5729	5737	5738	5746	5753	5756	5768	5771
				5785	5790	5792	5813	5816	5838	5846	5934	5979	5999	6014	6034
				6045	6051	6080	6091	6127	6134	6168	6207	6227	6229	6264	6277
				6278	6314	6340	6346	6351	6352	6359	6363	6368	6390	6391	6392
				6426	6460	6469	6472	6476	6478	6516	6526	6551	6558	6594	6611
				6636	6666	6673	6684	6736	6753	6759	6850	6854	6873	6892	6895
				6899	6901	6933	6941	6948	6949	6953	6960	7015	7016	7118	7162
				7181	7183	7196	7212	7214	7222	7223	7228	7231	7233	7332	7364
				7387	7405	7411	7482	7489	7510	7518	7537	7555	7579	7592	7594
				7601	7626	7630	7636	7658	7662	7668	7702	7759	7761	7767	7858
				7866	7893	7994	8237	8296	8299	8315	8341	8361	8364	8384	8398
				8535	8541	8559	8565	8581	8662	8833	8856
	A+B			532 #	2182	2186	2231	2233	2278	2365	2416	2419	2785	3113	3340
				3406	3616	3634	3637	3777	3782	3950	3984	3990	4031	4047	4201
				4205	4234	4290	4294	4374	4470	4471	4474	4484	4557	4562	4588
				4592	4598	4741	5147	5149	5154	5171	5172	5305	5449	5453	5532
				5582	5663	5956	6020	6052	6057	6075	6104	6105	6210	6224	6235
				6237	6247	6315	6327	6334	6354	6375	6389	6444	6455	6463	6507
				6531	6625	6647	6674	6700	6852	6876	6894	6936	6956	6972	6980
				7285	7291	7314	7344	7485	7520	7530	7538	7757	7882	7968	7975
				7978	7981	7984	7987	8328	8336	8421	8695	8710	8808	8869	8873
	A+Q			531 #	4441	4452	4473	5106	5570	5578	5679	5682	5835
	A-.25			543 #
	A-B-.25			548 #	4370	4426	4427	5105	5124	5142	5166	5363	5371	5719	5968
				6103	6139	6358
	A-D-.25			544 #	6188	6428	6433	6481	8691	8701
	A-Q-.25			547 #
	A.AND.B			564 #	4159	4174	4391	4462	4915	5514	5763	5796	5798	5809	5990
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 250
; 								Cross Reference Listing					

				6136	7034	7040	7397	7553	8633
	A.AND.Q			563 #	4157	4398	4442	4486	4488	4564	4616	4621	4626	4632	4633
				4829	4907	4916	5759	5794
	A.EQV.B			591 #
	A.EQV.Q			590 #	4135	4138	4160	4161	4216	4218	4220	4489
	A.OR.B			556 #	2909	4097	4917	5070	5922	6021	6054	6093	6251	6682	7064
				7068	7075	7106	7151	7173	7175	7376	7382	7524	7620	7655	8556
				8770
	A.OR.Q			555 #	5593
	A.XOR.B			583 #	5800	7330
	A.XOR.Q			582 #
	B			558 #	2162	2170	2172	2173	2176	2178	2185	2187	2378	2398	2497
				2529	2535	2540	2543	2574	2593	2738	2745	2752	2759	2789	3070
				3086	3142	3287	3331	3334	3337	3343	3346	3349	3408	3562	3610
				3621	3661	3697	3703	3742	3748	3819	3954	3958	3968	3972	3974
				3980	4002	4008	4019	4023	4039	4046	4127	4272	4276	4298	4302
				4333	4339	4353	4358	4360	4365	4432	4434	4451	4467	4476	4537
				4544	4565	4695	4704	4708	4723	4726	4742	4823	4889	4897	4905
				4954	4967	4987	5019	5026	5290	5294	5377	5379	5411	5415	5448
				5488	5507	5575	5674	5683	5732	5750	5788	5924	5927	5940	5942
				5943	5973	5985	6019	6035	6061	6062	6063	6078	6120	6123	6125
				6129	6142	6153	6161	6169	6300	6302	6345	6364	6377	6381	6383
				6432	6439	6465	6479	6484	6506	6510	6562	6582	6596	6648	6656
				6730	6751	6773	6805	6855	6857	6879	6919	6970	7077	7079	7080
				7082	7085	7089	7190	7191	7257	7261	7265	7269	7273	7288	7299
				7304	7320	7323	7339	7343	7345	7353	7354	7406	7418	7424	7431
				7656	7698	7721	7727	7729	7763	7765	7874	7881	7946	7955	7961
				7965	7966	7967	7969	7970	7971	7973	7974	7976	7977	7979	7980
				7982	7983	7985	7986	7988	7989	7991	8233	8243	8244	8246	8247
				8254	8264	8266	8268	8270	8274	8275	8310	8409	8416	8418	8439
				8577	8635	8689	8725	8764	8795	8800	8836	8850	8864	8866
	B-.25			542 #
	B-A-.25			540 #	3422	3529	3538	3541	4280	4284	4554	4585	6015	6036	6140
				6141	6252	6341	6393	6430	6823	6952	7296	7420	7433	7680	8798
				8858
	D			562 #	2151	2155	2180	2181	2183	2221	2271	2341	2355	2359	2364
				2368	2372	2373	2385	2386	2391	2396	2407	2413	2571	2590	2691
				2693	2718	2720	2723	2724	2726	2729	2730	2732	2747	2749	2754
				2756	2783	2967	2984	2990	3002	3005	3043	3089	3092	3271	3276
				3389	3434	3437	3440	3446	3449	3452	3475	3551	3558	3575	3590
				3595	3615	3619	3680	3691	3719	3725	3752	3761	3772	3774	3808
				3814	3831	3832	3845	3846	3850	3964	4007	4020	4109	4124	4133
				4152	4156	4194	4199	4214	4217	4219	4221	4322	4331	4332	4414
				4543	4697	4702	4716	4718	4722	4737	4770	4796	4797	4798	4799
				4800	4816	4890	4891	4892	4893	4894	4942	4951	4958	4972	4974
				4978	4982	4984	4988	5017	5022	5045	5058	5060	5098	5107	5111
				5118	5162	5180	5181	5288	5321	5353	5417	5495	5511	5553	5563
				5655	5706	5841	5917	5936	5945	5960	5963	5977	5978	5981	6003
				6006	6011	6027	6028	6038	6048	6065	6066	6067	6068	6076	6082
				6090	6099	6101	6119	6121	6128	6132	6145	6147	6151	6163	6166
				6175	6194	6197	6199	6206	6216	6257	6259	6260	6265	6292	6297
				6298	6299	6311	6320	6325	6337	6343	6353	6356	6357	6372	6384
				6386	6387	6405	6408	6457	6462	6467	6468	6508	6515	6530	6546
				6556	6565	6569	6584	6593	6595	6599	6620	6627	6629	6660	6676
				6697	6699	6737	6762	6812	6817	6819	6826	6828	6845	6847	6848
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 251
; 								Cross Reference Listing					

				6851	6874	6891	6893	6903	6918	6931	6935	6939	6945	6964	6969
				6988	7008	7009	7046	7048	7060	7071	7094	7095	7103	7121	7186
				7243	7245	7247	7249	7251	7256	7260	7264	7268	7272	7281	7286
				7290	7295	7301	7302	7313	7333	7337	7352	7358	7372	7385	7395
				7414	7416	7427	7429	7453	7479	7490	7506	7508	7527	7532	7550
				7582	7623	7690	7693	7695	7703	7717	7748	7751	7753	7862	7869
				7901	7948	7953	7957	7960	7972	7990	7992	7993	7995	8230	8234
				8236	8245	8251	8256	8323	8326	8345	8410	8413	8427	8437	8491
				8493	8538	8578	8579	8580	8586	8667	8719	8728	8765	8775	8781
				8790	8794	8806	8810	8812	8814	8816	8818	8820	8824	8848
	D+A			536 #	2291	2303	2318	2331	3489	3511	3566	3681	3727	3756	3820
				3837	4062	4089	4092	4754	4762	5040	5109	5121	5930	5933	5997
				6030	6085	6183	6208	6218	6221	6361	6379	6422	6431	6438	6440
				6559	6635	6742	6750	6824	6830	6898	6900	7334	7483	7528	7701
				7707	7709	8331	8339	8353	8355	8432	8597	8705	8715	8829
	D+Q			537 #	4990	4998	5029	5048
	D-.25			554 #
	D-A-.25			552 #	3372	3503	4076	4101	4103	4106	5055	6366	6385
	D-Q-.25			553 #
	D.AND.A			571 #	2424	2426	2437	2459	2773	2816	2939	2970	3018	3278	3301
				3531	3540	3543	3545	3546	3547	3580	3585	3588	3594	3608	3609
				3629	3630	3642	3644	3924	3926	3928	3930	3932	3934	3936	3938
				3944	3965	3991	3992	3997	4042	4110	4180	4182	4363	4416	4438
				4445	4641	4776	4948	4955	5067	5295	5299	5324	5357	5394	5398
				5418	5513	5552	5643	5678	5681	5698	5749	5752	5755	5758	5818
				5918	5920	5961	5964	6100	6102	6138	6164	6171	6184	6204	6246
				6262	6269	6294	6310	6329	6388	6402	6404	6436	6442	6458	6470
				6473	6493	6496	6512	6527	6643	6677	6680	6743	6757	6913	6923
				6990	6996	7005	7006	7007	7011	7012	7013	7014	7019	7020	7021
				7024	7025	7026	7027	7028	7029	7030	7031	7063	7065	7067	7069
				7072	7074	7076	7097	7100	7125	7132	7136	7140	7147	7166	7187
				7188	7197	7215	7221	7227	7232	7252	7275	7317	7367	7369	7370
				7371	7373	7375	7377	7379	7381	7383	7494	7534	7568	7625	7632
				7638	7652	7684	7686	7700	7829	7833	7838	7840	7842	7844	7846
				7848	8231	8235	8284	8288	8306	8350	8357	8360	8375	8380	8429
				8444	8448	8452	8458	8472	8476	8478	8498	8503	8531	8544	8551
				8554	8570	8572	8599	8601	8603	8637	8640	8642	8645	8648	8669
				8679	8720	8733	8737	8740	8745	8751	8767	8792	8841	8844
	D.AND.Q			572 #	3115	4516	5329	5638
	D.EQV.A			595 #	2888
	D.EQV.Q			596 #
	D.OR.A			560 #	2153	2422	2460	2868	3296	3994	3999	4111	4464	4549	5296
				5300	5325	5358	5419	5558	5614	5615	5622	5659	5711	5825	6176
				6263	6307	6316	6321	6331	6602	6606	6608	6669	6782	6786	6790
				6798	6814	6950	6959	7189	7198	7303	7378	7456	7457	7458	7459
				7460	7461	7462	7596	7897	8227	8281	8285	8386	8470	8473	8481
				8499	8506	8548	8552	8569	8571	8575	8631	8738	8742	8747	8754
				8759	8832
	D.OR.Q			561 #	3117	4401
	D.XOR.A			587 #	2190	2858	3293	4418	7492	7493	8294
	D.XOR.Q			588 #
	Q			557 #	3119	4129	4137	4184	4192	4192	4203	4215	4357	4412	4429
				4435	4440	4444	4450	4458	4977	5139	5165	5376	5381	5452	5494
				5518	5612	5619	5639	5651	5662	5721	5723	5767	5812	6109	6148
				6550
; KS10.MCR[7,3]	15:03 7-JAN-1986	MICRO 31(254)	KS10 MICROCODE V130, 7-JAN-86	Page 252
; 								Cross Reference Listing					

	Q-.25			541 #
	Q-A-.25			539 #	4433	5038
	Q-D-.25			545 #	4981
	ZERO			568 #	2163	2163	2165	2168	2175	2177	2179	2196	2218	2402	2806
				2983	3024	3044	3273	3611	3975	4228	4254	4324	4460	4538	4805
				4818	4824	4825	4828	4900	4901	4904	4960	5103	5145	5169	5302
				5373	5384	5396	5400	5402	5403	5416	5429	5521	5694	5722	5761
				5777	5805	5986	5988	6022	6041	6089	6094	6106	6117	6146	6267
				6285	6287	6305	6339	6395	6399	6403	6406	6461	6585	6623	6663
				6733	6808	7033	7036	7104	7158	7170	7216	7293	7368	7413	7438
				7439	7471	7474	7481	7495	7710	7755	7876	7879	7949	8280	8302
				8381	8441	8459	8547	8567	8779	8785	8804	8822	8823	8854
	-A-.25			551 #	2579	2949	4326	4404	4481	4523	4541	4548	4642	4646	4650
				4652	5285	5360	5364	5395	5504	5520	5549	5550	5701	5712	5713
				5781	5802	5808	6270	6394	7396
	-B-.25			550 #	5702
	-D-.25			546 #	4455	4615	4620	4625	4630	6001	6273	6944	6958
	-Q-.25			549 #	4403	4454	4480	4521	4522	4539	5382	5487	5489	5491	5493
				5776
	.NOT.A			594 #	2841	2878	2919	2929	3290	4096	4335	4540	4644	4651	5454
				5502	5517	5519	5700	5710	5779	5970	5972	6524	7398	7473	7683
				8678
	.NOT.A.AND.B		575 #	4131	5587	7070