Trailing-Edge
-
PDP-10 Archives
-
BB-AS80B-SM_1985
-
sources/klx.mcr
There are 4 other files named klx.mcr in the archive. Click here to see a list.
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page TOC-1
; Table of Contents
; 1 KLX.MIC[4,30] 17:12 9-Aug-84
; 22 EDHIS.MIC[4,30] 13:59 4-Feb-85
; 39 REVISION HISTORY
; 1029 DEFINE.MIC[4,30] 17:12 9-Aug-84
; 1030 CONDITIONAL ASSEMBLY VARIABLE DEFINITIONS
; 1191 HOW TO READ THE MICROCODE -- FORMATS & CONSTRUCTS
; 1394 MICROCODE LISTING TEMPLATE
; 1445 KL10 INSTRUCTION OPCODE MAP
; 1501 CONTROL RAM DEFINITIONS -- J, AD
; 1557 CONTROL RAM DEFINITIONS -- DATA PATH MIXERS
; 1630 CONTROL RAM DEFINITIONS -- 10-BIT LOGIC
; 1663 CONTROL RAM DEFINITIONS -- SHIFT, ARMM, VMA, TIME
; 1697 CONTROL RAM DEFINITIONS -- MEM SPECIAL FUNCTIONS
; 1726 CONTROL RAM DEFINITIONS -- SKIP/COND SPECIAL FUNCTIONS
; 1818 CONTROL RAM DEFINITIONS -- DISP/SPEC SPECIAL FUNCTIONS
; 1870 CONTROL RAM DEFINITIONS -- MAGIC NUMBER FIELD
; 2189 DISPATCH RAM DEFINITIONS
; 2235 MACRO.MIC[4,30] 17:12 9-Aug-84
; 2236 CRAM Macros--Miscellaneous and A
; 2286 CRAM Macros--AR
; 2512 CRAM Macros--AR Miscellaneous, ARL, and ARR
; 2584 CRAM Macros--ARX
; 2684 CRAM Macros--B, C, D
; 2791 CRAM Macros--E, F
; 2895 CRAM Macros--G, H, I, J, L
; 3008 CRAM Macros--M, N, O, P
; 3119 CRAM Macros--R
; 3179 CRAM Macros--S
; 3431 CRAM Macros--T, U, V, W, X
; 3541 DRAM Macros
; 3625 BASIC.MIC[4,30] 17:12 9-Aug-84
; 3626 THE INSTRUCTION LOOP
; 3722 NEXT INSTRUCTION DISPATCH
; 3857 EFFECTIVE ADDRESS COMPUTATION AND OPERAND FETCH
; 3923 WAIT FOR (E)
; 3991 TERMINATION
; 4050 MOVE GROUP, EXCH, BLT
; 4093 XMOVEI, XHLLI, MOVEM, EXCH, BLT
; 4124 HALFWORD GROUP
; 4271 DMOVE, DMOVN, DMOVEM, DMOVNM
; 4312 BOOLEAN GROUP
; 4469 SKPJMP.MIC[4,30] 17:12 9-Aug-84
; 4470 TEST GROUP
; 4579 COMPARE -- CAI, CAM
; 4605 ARITHMETIC SKIPS -- AOS, SOS, SKIP
; 4654 CONDITIONAL JUMPS -- JUMP, AOJ, SOJ, AOBJ
; 4710 AC DECODE JUMPS -- JRST, JFCL
; 4850 HALT LOOP
; 4879 MAP, XCT
; 4908 STACK INSTRUCTIONS -- PUSHJ, PUSH, POP, POPJ
; 5006 SUBROUTINE CALL/RETURN -- JSR, JSP, JSA, JRA
; 5056 UUO'S
; 5286 JSYS, ADJSP
; 5328 XCT, PXCT, SXCT
; 5402 SHIFT.MIC[4,30] 17:12 9-Aug-84
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page TOC-2
; Table of Contents
; 5403 ROTATES AND LOGICAL SHIFTS -- ROT, LSH, JFFO
; 5458 ROTATE AND LOGICAL SHIFT COMBINED -- ROTC, LSHC
; 5492 ARITHMETIC SHIFTS -- ASH, ASHC
; 5541 ARITH.MIC[4,30] 17:12 9-Aug-84
; 5542 ADD, SUB
; 5567 MUL, IMUL
; 5618 MULTIPLY SUBROUTINE
; 5672 DIV, IDIV
; 5731 INTEGER DIVIDE SUBROUTINE
; 5771 BASIC DIVIDE LOOP
; 5820 DOUBLE INTEGER ARITHMETIC -- DADD, DSUB, DMUL, DDIV
; 5945 FP.MIC[4,30] 17:13 9-Aug-84
; 5946 SINGLE FLOATING ADD & SUB -- FAD, FADR, FSB, FSBR
; 6024 SINGLE FLOATING MULTIPLY -- FMP, FMPR
; 6053 SINGLE FLOATING DIVIDE -- FDV, FDVR
; 6181 UFA, DFN, FSC, IBP
; 6250 FIX, FIXR, FLTR, EXTEND
; 6320 SINGLE PRECISION FLOATING NORMALIZATION
; 6461 DOUBLE FLOATING ARITHMETIC -- DFAD, DFSB, DFMP, DFDV
; 6612 DOUBLE PRECISION NORMALIZATION
; 6674 EXTEXP.MIC[4,30] 17:12 9-Aug-84
; 6675 GFLT DOUBLE PRECISION ARITHMETIC
; 6794 GFLT MULTIPLY
; 6841 GFLT DIVIDE
; 6884 GFLT NORMALIZATION
; 7027 GFLT TO INTEGER CONVERSION
; 7153 GFLT DATA CONVERSION INSTRUCTIONS
; 7381 BYTE.MIC[4,30] 17:12 9-Aug-84
; 7382 BYTE GROUP -- IBP, ILDB, LDB, IDPB, DPB
; 7510 INCREMENT BYTE POINTER SUBROUTINE
; 7634 BYTE EFFECTIVE ADDRESS EVALUATOR FOR XADDR SMP LDB
; 7685 LOAD BYTE SUBROUTINE
; 7708 DEPOSIT BYTE SUBROUTINE
; 7739 IBP, ADJBP
; 8006 BLT.MIC[4,30] 17:12 9-Aug-84
; 8007 XBLT
; 8057 BLT
; 8145 EXTENDED ADDRESSING CODE FOR PXCT OF BLT
; 8182 IO.MIC[4,30] 17:12 9-Aug-84
; 8183 I/O INSTRUCTIONS
; 8282 EXTERNAL DEVICE I/O INSTRUCTIONS
; 8376 INTERNAL DEVICE FUNCTIONS -- APR, CCA
; 8430 INTERNAL DEVICE FUNCTIONS -- PI
; 8485 TRACKS SUPPORT
; 8742 INTERNAL DEVICE FUNCTIONS -- PAG
; 8865 INTERNAL DEVICE FUNCTIONS -- TIM & MTR
; 8970 PRIORITY INTERRUPT PROCESSING
; 9146 KL-MODE PAGE REFILL LOGIC
; 9536 KI-MODE PAGE FAIL HANDLING
; 9686 PAGE FAIL/INTERRUPT CLEANUP FOR SPECIAL INSTRUCTIONS
; 9759 EIS.MIC[4,30] 17:12 9-Aug-84
; 9760 EXTENDED INSTRUCTION SET DECODING
; 9929 ONE WORD GLOBAL BYTE POINTER SUBROUTINES FOR EXTEND
; 9984 EIS -- STRING MOVE
; 10104 EIS -- STRING COMPARE
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page TOC-3
; Table of Contents
; 10177 EIS -- DECIMAL TO BINARY CONVERSION
; 10244 EIS -- BINARY TO DECIMAL CONVERSION
; 10402 EIS -- SRCMOD SUBROUTINE TO GET MODIFIED SOURCE BYTE
; 10607 EIS -- EDIT FUNCTION
; Cross Reference Index
; DCODE Location / Line Number Index
; UCODE Location / Line Number Index
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 1
; KLX.MIC[4,30] 17:12 9-Aug-84 KLX.MIC[4,30] 17:12 9-Aug-84
; 1 ;PARAMETER CHANGES FOR KL10 20-SERIES MICROCODE, no common file system
; 2 ;MODEL B MACHINE EXTENDED ADDRESSING
; 3
; 4 .SET/SNORM.OPT=1
; 5 .SET/XADDR=1
; 6 .SET/EPT540=1
; 7 .SET/LONG.PC=1
; 8 .SET/MODEL.B=1
; 9 .SET/KLPAGE=1
; 10 .SET/FPLONG=0
; 11 .SET/BLT.PXCT=1
; 12 .SET/SMP=0 ;No SMP (DOES RPW instead of RW FOR DPB, IDPB)
; 13 .SET/EXTEXP=1
; 14 .SET/MULTI=1 ;DOES NOT CACHE PAGE TABLE DATA
; 15 .SET/NOCST=1 ;DOES NOT DO AGE UPDATES, ETC. WITH CST = 0
; 16 .SET/OWGBP=1 ;ONE WORD GLOBAL BYTE POINTERS
; 17 .SET/IPA20=1 ;IPA20-L
; 18 .SET/GFTCNV=0 ;DO NOT DO GFLOAT CONVERSION INSTRUCTIONS [273]
; 19 ;SAVES 75 WORDS. MONITOR WILL TAKE CARE OF THEM.
; 20 .set/cst.write=0 ;No common file system support here
; 21 .set/ddt.bug=1 ;For now, hack the big page table APRID bit
; 22
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 1
; EDHIS.MIC[4,30] 13:59 4-Feb-85 KLX.MIC[4,30] 17:12 9-Aug-84
; 23 .NOBIN
; 24
; 25 ; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
; 26 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
; 27 ; EQUIPMENT CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO
; 28 ; RESPONSIBITY FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT.
; 29 ; THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE
; 30 ; PURCHASER UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND
; 31 ; CAN BE COPIED (WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY
; 32 ; FOR USE IN SUCH SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING
; 33 ; BY DIGITAL.
; 34 ; DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE
; 35 ; USE OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED
; 36 ; BY DIGITAL.
; 37 ; COPYRIGHT (C) 1984,1985 DIGITAL EQUIPMENT CORPORATION
; 38
; 39 .TOC "REVISION HISTORY"
; 40
; 41 ; The following collection of people have contributed to the
; 42 ; production and maintenance of this code. In reverse chronological
; 43 ; order:
; 44 ;
; 45 ; QQSV (Dick Wagman) -- beginning with edit 301
; 46 ; Sean Keenan
; 47 ; Don Dossa
; 48 ; Mike Newman
; 49 ; Jud Leonard
; 50 ;
; 51 ;
; 52 .TITLE "KL10 Microcode for TOPS-20 4 February 1985"
; 53 .VERSION/MAJOR=1/MINOR=0/EDIT=357/WHO=0
; 54 ;REV WHY
; 55 ;
; 56 ;357 9 Aug 84--Add the 136 location constraint (forgotten in 356).
; 57 ;356 8 Aug 84--Make the # field of location 136 contain the major and
; 58 ; minor version numbers. Grab a random instruction with no # field
; 59 ; in use to do this.
; 60 ;353 21 May 84--LDB and DPB in version 1 were leaving state register bit
; 61 ; 3 set when the byte word was loaded, resulting in the page fault
; 62 ; handler treating it as if it were a string instruction and trying
; 63 ; to back up a byte pointer in AC1 when the reference page faulted.
; 64 ; Cure it by reseting the state register in GBYTE. (Sure hope this
; 65 ; is the last bug in version 1!)
; 66 ;347 20 Jan 84--Rewrite the MVST and CMPS dispatches to test for illegal
; 67 ; bits in the lengths before BRX gets smashed. UUO was reporting a
; 68 ; bogus op code in these situations.
; 69 ; Turn on BIG.PT by default, since it should work with both old and
; 70 ; new software and hardware.
; 71 ;346 18 Jan 84--Fix the .IFNOT variation of BIG.PT to clear the Keep
; 72 ; bit if anybody sets it. This was introduced in 343.
; 73 ; Add the DDT.BUG conditional. Under it, rewrite APRID to move
; 74 ; bit 23 to bit 5 if it is set in the serial number. This is a
; 75 ; piece of garbage which I hope can disappear soon (it seems EDDT
; 76 ; used the serial number to test for a KS-10!).
; 77 ; Fix the time field on the page map word type dispatch (the assembler
; 78 ; default was too high). Also make the PAGCNT conditional hang on
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 1-1
; EDHIS.MIC[4,30] 13:59 4-Feb-85 REVISION HISTORY
; 79 ; to the original AR value after it counts the PFH entry (this would
; 80 ; only matter for an AR parity error).
; 81 ;344 1 Dec 83--Save CVTBDx fill character address, which was getting lost
; 82 ; if OWGBPs were in use, in a manner similar to that used in CMPSx
; 83 ; (see edit 310). Also, fix some conditionals for EXPMSK constant
; 84 ; generation, so that OWGBPs will assemble with EXTEXP off.
; 85 ;342 8 Nov 83--Change definition of CLR PT LINE to be consistent with
; 86 ; new paging board (see also 333). Also, redefine bit 3 of effective
; 87 ; word to reverse keep sense (so unkept only pages are cleared when
; 88 ; bit 3 is set).
; 89 ;336 9 Aug 83--Back off 330 for a bit, since TOPS-10 7.02 must be tested
; 90 ; and OWGs in section 0 fail for string instructions (they get converted
; 91 ; to TWGs, which are illegal in section 0). For now, we will maintain
; 92 ; both sources.
; 93 ;335 Force memory to be released for SMP case of DPB if P > 36 causes no
; 94 ; actual data to be stored. Make an OWG reference to an address >
; 95 ; 37,,777777 cause a page fail (GBYTE was stripping the excess bits).
; 96 ;334 Fix conflict generated in CLRPT by 333 by creating new subroutine
; 97 ; ARSWAP which is just AR_AR SWAP. Make several other routines call it,
; 98 ; thus saving a few words.
; 99 ;333 Add new conditional BIG.PT. Under it, add code to implement the "Keep
; 100 ; me" bit for paging as bit 5 of the page table, and to move it to page
; 101 ; map bit 23 during page refill. Also make DATAO PAG not clear Kept
; 102 ; pages if bit 3 of the word is off.
; 103 ;332 Redefine all bank 7 ACs as R0,...,R17, and all bank 6 ACs as P0,...,
; 104 ; P17. Change all other alias definitions to refer to these. This
; 105 ; gives us a uniform cross reference for all scratch register references.
; 106 ; Put all macro definitions into alphabetical order, making it easier
; 107 ; to look up a macro definition. Split the edit history into its own
; 108 ; file. There are no functional changes from 331.
; 109 ;331 Allow XSFM anywhere. Clean up the code a bit in the process. There
; 110 ; still remain a number of references to XSFM or XPCW distinctions,
; 111 ; and these could almost certainly be cleaned up further.
; 112 ;330 Allow one word global byte pointers in section zero. This includes
; 113 ; changes in BYTE, EIS, and FP. Change GBYTE and CNV2WD to return 2;
; 114 ; eliminate GTST as obsolete. Also shuffle the calls to these routines
; 115 ; to conform to the new calling conventions, and put the OWG test at
; 116 ; the beginning of IBP, ILDB, IDBP, LDB, DPB, and ADJBP.
; 117 ;327 Add PAGCNT conditional. Under it, include control to count entry
; 118 ; into PFH code and DATAO PAG with bit 2 set.
; 119 ;326 Change VMA restoration in INC2WD and CNV2WD (see edits 320 and 307)
; 120 ; to use RSTR VMA_MQ in order to keep the global/local sense of the
; 121 ; reference. This was causing ILDBs of OWGs in shadow memory to
; 122 ; save the incremented byte pointer in the ACs instead of memory.
; 123 ;325 Add VMA/LOAD to local indexed EA computation for EXTEND E1 to make
; 124 ; it read the section number from VMA instead of PCS (!) if the index
; 125 ; is section local.
; 126 ;324 Force the XADDR conditional to use RPW type references for DPB and
; 127 ; IDPB if the SMP conditional is on, even if one word globals are not
; 128 ; active.
; 129 ;323 Add missing constraint near NOT.WR, accidentally broken by 322.
; 130 ;322 Generate the A(cessible) bit in a page fail word caused by a read
; 131 ; violation if the page is otherwise accessible and if no CST is present.
; 132 ; This could be fixed for the CST present case as well, but has been
; 133 ; deferred since we are tight on space and no one seems to need it
; 134 ; anyway.
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 1-2
; EDHIS.MIC[4,30] 13:59 4-Feb-85 REVISION HISTORY
; 135 ;321 Prevent statistics microcode from losing traps by forcing NICOND
; 136 ; dispatch 11 to ignore the statistics and take the trap.
; 137 ;320 Restore the VMA again in INC2WD (broken by 307), since the state
; 138 ; register bits may have changed in the interim. This was causing
; 139 ; PXCT to do surprising things (mostly bad).
; 140 ;317 Originally, this was an attempt to uncount multiply counted op
; 141 ; codes which resulted from interrupts during long instructions.
; 142 ; That project has been shelved for now. Instead, the second
; 143 ; NICOND dispatch during op code counting has had its final constraint
; 144 ; fixed.
; 145 ;316 Make counting only version compatible with time and counting by making
; 146 ; counting only version use TRX2 and TRX3, removing physical contiguity
; 147 ; requirement.
; 148 ;315 Op code counting lives again! The setup code activated by DATAO PI
; 149 ; was attempting to write the TRX registers with data fresh from memory,
; 150 ; resulting in parity checks when it was used (see edit 73, for example).
; 151 ; Juggle code to overlap next address calculation with parity wait.
; 152 ;314 Add CST.WRITE conditional to facilitate assembly of microcode
; 153 ; without the CST writable bit (see edit 303).
; 154 ;313 Put TIME/3T on XFERW, as the assembler was getting the wrong
; 155 ; value with both AR_MEM and ARX_MEM macros present.
; 156 ;312 Fix definition of BYTE RPW to include a write test. This was
; 157 ; causing the SMP version of DPB to hang when memory was readable
; 158 ; but not writable.
; 159 ;311 Make all IOP function 7 style of references look in the cache.
; 160 ;310 Improve the fix in 307 to save the computed E0+1 in FILL during
; 161 ; OWGBP conversion and to restore the VMA from there when done.
; 162 ; Also, make sure that the VMA is initialized to PC for all cases
; 163 ; when doing effective address calculations for two word globals
; 164 ; in string instructions. 307 was not enough to clean up the
; 165 ; CMPSx fill problem, since VMA HELD was never loaded.
; 166 ; Force EXT2WD to prereference AC4 and AC5 so that glitch discovered
; 167 ; for second edit 210 will not be activated.
; 168 ;307 Restore VMA from MQ at end of CNV2WD (and remove it from INC2WD,
; 169 ; saving a word in the process). This was causing CMPSx to load
; 170 ; a random fill word and MOVSLJ to store to a random place when the
; 171 ; source length was zero if one word globals were in use.
; 172 ; Force page fail code to look for ARX as well as AR parity errors
; 173 ; (now possible with BYTE RPW implemented).
; 174 ; Make sign extension of E1 go to right place in EXTEND decoding of
; 175 ; offset instructions (broken in 301).
; 176 ;306 Add University of Essex code to statistics (TRACKS) code to make
; 177 ; it work with address break enabled.
; 178 ;305 Fix CST write bit logic to not test bit 18 when reading.
; 179 ;304 Switch byte read interlock from LDB to DPB (broken in 303).
; 180 ;303 Implement bit 18 of a CST entry as a write enable bit in addition
; 181 ; to all the other write enable functions.
; 182 ; Knock one cycle out of byte deposit where the byte is being
; 183 ; deposited into the high order byte of a word.
; 184 ; Implement the SMP conditional for extended addressing by
; 185 ; replicating all the byte effective address calculation code for
; 186 ; DPB. This is unfortunate, but necessary due to the huge dispatch
; 187 ; table that ends this subroutine.
; 188 ;302 Move XFERW out of EIS (which no longer absolutely requires it
; 189 ; in line) into SKPJMP (more in the heart of things). Also
; 190 ; juggle comment lines and code layout to reduce the listing
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 1-3
; EDHIS.MIC[4,30] 13:59 4-Feb-85 REVISION HISTORY
; 191 ; size a bit and to force some of the .TOC lines into the table
; 192 ; of contents (even though the code nearby may be suppressed).
; 193 ;301 Fix ADJBP so that instructions which occur at the last word on
; 194 ; a page do not cause a page failure of some random type (one cycle
; 195 ; too many between I FETCH and NICOND).
; 196 ; Fix effective address calculation for EXTEND so that only offset
; 197 ; instructions (and not GSNGL, for example) will have E1 sign
; 198 ; smeared.
; 199 ; Implement XJRST. Also force JSP and JSR to do full 30 bit
; 200 ; effective address calculations.
; 201 ;300 ADD LOAD OF VMA FROM PC IN PUTDST TO GET THE SECTION ADDRESS
; 202 ; CORRECT ON THE STRING INSTRUCTIONS.
; 203 ;277 Add EA CALC table for SMP configurations of extended addressing
; 204 ; for TOPS-10. (TOPS-20 paging)
; 205 ;276 Force global EA CALC for EXTEND instructions in PUTDST.
; 206 ;275 FIX THE ERROR CODE IN STRING COMPARE FOR ILLEGAL BITS IN THE
; 207 ; LENGTH FIELD. WAS CAUSING AR PARITY ERRORS.
; 208 ;274 SAVE THE API FUNCTION WORD ON AN IO PAGE FAIL INSTEAD OF THE
; 209 ; PAGE FAIL WORD. THIS TAKES PLACE IN BOTH THE AC BLK 7 AC 2
; 210 ; AND THE MONITOR.
; 211 ;273 PUT CONDITIONALS AROUND 4 GFLOAT CONVERSION INSTRUCTIONS.
; 212 ; THEY WILL ACT AS MUUO'S AND MONITOR WILL TAKE CARE OF THEM.
; 213 ;272 CONO APR 200000 AT TIMES WAS NOT GENERATING EBUS RESET OF A
; 214 ; SUFFICIENT LENGTH TO CLEAR DTE REGISTERS. ADDED ANOTHER
; 215 ; MICROWORD SO THAT CONO APR IS NOW UP FOR TWO FULL WORDS WHICH
; 216 ; GETS AROUND THE HARDWARE PROBLEM.
; 217 ;271 ILLEGAL INDIRECT PAGE FAIL (24) WAS NOT ALLOWING USER TO BE SET.
; 218 ;270 WHEN IN SECTIONS > 1, AN UPDATED OWGBP WOULD BE WRITTEN INTO
; 219 ; MEMORY INSTEAD OF THE AC'S.
; 220 ;267 CHANGED TESTS FOR OWGBP TO TEST FOR PC SEC0 FIRST. SAVES 33 NS.
; 221 ;266 CONDITIONALS ON FOR TOPS-20 DEVELOPMENT.
; 222 ;265 REMOVED EDIT 244. SOFTWARE ENGINEERING WILL SUPPLY MONITOR
; 223 ; CODE TO TAKE CARE OF PROBLEM. CODE COSTS TOO MUCH TIME IN
; 224 ; THE INSTRUCTION EXECUTION.
; 225 ;264 ADDED CONDITIONALS TO CODE FOR IPA20, OWGBP AND NO CST UPDATE IF
; 226 ; CBR IS ZERO. THIS IS FOR RELEASE 5 OF TOPS-20.
; 227 ;263 IBP DID NOT CLEAR FPD ON EXIT.
; 228 ;262 ALLOW XBLT TO BE VALID IN SECTION 0.
; 229 ;261 FIX CODE AT END OF ADJBP CODE TO CLEAR STATE REG. IF ILDB
; 230 ; WITH 2 WD GLOBAL POINTER POINTING TO ADDRESS NOT IN CORE
; 231 ; CLEAN DISPATCHES TO WRONG CODE BECAUSE SR LEFT OVER FROM
; 232 ; ADJBP.
; 233 ;260 FIX FM PARITY ERRORS AT MVF1: ADDED NULL CALL TO RET2:
; 234 ; AT MVST: TO TAKE CARE OF EXTRA TICK FOR PARITY.
; 235 ;257 MAKE SURE THAT THE UPDATED ONE WORD GLOBAL BYTE POINTER IS
; 236 ; WRITTEN BACK INTO THE CORRECT CONTEXT.
; 237 ;256 MAKE ANOTHER ATTEMPT TO FIX PXCT OF ONE WORD GLOBAL BYTE POINTERS.
; 238 ; THE GIBP CODE GETS THE SAME CHANGES AS EDIT 255.
; 239 ;255 MAKE ONE WORD GLOBAL BYTE POINTERS WORK WITH PXCT. THE STATE
; 240 ; REGISTER BITS ON MCL4 (NOT TO BE CONFUSED WITH CON3), WERE NOT
; 241 ; BEING SET PROPERLY TO ALLOW PREVIOUS ENA AND USER ENA TO BE SET.
; 242 ; GUARANTEE THAT THESE SR BITS ARE SET PRIOR TO THE LOAD OF THE VMA.
; 243 ;254 FIX PROBLEM WITH OWGBP WHERE FPD DOES NOT EFFECT
; 244 ; INC OF POINTER AFTER PAGE FAIL
; 245 ;253 FIXED ADDRESSING FOR SH DISP AT GADJL0:
; 246 ;252 MOVE STRING INSTRUCTIONS DO NOT GET THE CORRECT DATA ON
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 1-4
; EDHIS.MIC[4,30] 13:59 4-Feb-85 REVISION HISTORY
; 247 ; LOCAL POINTERS IN NON 0 SECTIONS
; 248 ;251 ADD CODE FOR ONE WORD GLOBAL BYTE POINTERS.
; 249 ; TOOK OUT EDITS 243 AND 250 TO GET ENOUGH SPACE IN CRAM
; 250 ; FOR THIS EDIT. OWGBP WITH EXTEND INSTRUCTIONS WILL NOT
; 251 ; RETURN A OWGBP. THEY WILL RETURN A TWO WORD GLOBAL BP.
; 252 ;250 ALLOW SMP SWITCH TO EFFECT TOPS-20 MODEL B TO DO RPW IN
; 253 ; BYTE INSTRUCTIONS.
; 254 ;247 DO NOT DO A CST UPDATE OR AGE UPDATE IF THE CBR IS ZERO.
; 255 ;246 EXTEND OP CODE DECODE FOR MODEL A WAS ACCEPTING MODEL B
; 256 ; OP CODES (20-31). ADDED CONDITIONALS TO CODE TO FIX.
; 257 ;245 FIX 2 WORD GLOBAL BYTE POINTER BUG WITH IBP INSTRUCTION
; 258 ; WITH EXTENDED ADDRESSING OUT OF SECTION 0
; 259 ;244 FIX MOVST EXTEND INST. SO THAT ILLEGAL (> 36) S FIELD
; 260 ; DOES NOT CAUSE STOP CODE TO CRASH SYSTEM FOR TOPS-10 MODEL B.
; 261 ;243 WRTIME TRIED TO DO MEM WRITE EVEN THOUGH THE INSTRUCTION
; 262 ; DOES NOT DO ANYTHING TO MEMORY. CAUSED PROBLEMS IF THE MEMORY
; 263 ; LOCATION WAS NOT WRITABLE.
; 264 ;242 FIX CODE FROM EDIT 234 TO GET PF CODE OF 24.
; 265 ;241 FIX DFAD AND DFMP FOR ROUNDING OCCURS PROPERLY. ADDED STICKY
; 266 ; BIT FOR LEAST SIGNIFICANT BITS OF THE RESULT.
; 267 ;240 FIX GFLT INSTRUCTIONS GFIX AND DGFIX SO THEY WILL TRUNCATE NEGATIVE
; 268 ; NUMBERS IN THE CORRECT DIRECTION. THE MQ MUST BE ZERO BEFORE
; 269 ; THE ARX_2 MACRO IS INVOKED OR THE ARX MIGHT GET A 3 FROM MQ00.
; 270 ;237 ADD OPTION BIT FOR PV CPU IN THE APRID WORD AS IT IS DOCUMENTED
; 271 ; IN ALL OF THE HARDWARE DOCUMENTATION. SET THE BIT ACCORDING
; 272 ; TO THE MODEL.B OPTION SWITCH. IT WILL BE MAGIC NUMBER BIT 3.
; 273 ;236 ALLOW THE INTEGER DIVIDE OF THE LARGEST NEGATIVE NUMBER BY
; 274 ; PLUS ONE TO SUCCEED. THIS USED TO BE A DOCUMENTED RESTRICTION
; 275 ; THAT THIS OPERATION WOULD CAUSE AN OVERFLOW AND NO DIVIDE.
; 276 ;235 FIX JRA SO IT DOESN'T FALL INTO SECTION ZERO FROM A NON-ZERO
; 277 ; SECTION EVERY TIME BY WRITING THE PC SECTION INTO THE VMAX.
; 278 ;234 BUILD A PAGE FAIL CODE OF 24 WHEN AN ILLEGAL INDIRECT WORD
; 279 ; IS FOUND DURING THE EFFECTIVE ADDRESS CALCULATION IN
; 280 ; A NON-ZERO SECTION. THE PAGE FAIL CODE WAS PREVIOUSLY NOT
; 281 ; BEING REPORTED.
; 282 ;233 SAVE THE IOP FUNCTION WORD THAT APPEARS ON THE EBUS WHEN AN
; 283 ; EXTERNAL DEVICE INTERRUPTS THE CPU. SAVE THIS INFORMATION
; 284 ; ON EVERY INTERRUPT IN AC BLOCK 7, AC 3. THE CONTENTS
; 285 ; OF THIS AC WILL BE PRESERVED UNTIL THE NEXT INTERRUPT.
; 286 ; OPERATING SYSTEMS SHOULD SAVE THIS INFORMATION AS SOON AS POSSIBLE
; 287 ; IF ITS CONTENTS ARE TO BE RELIABLE AND MEANINGFUL.
; 288 ;232 ADDS 13 NEW INSRUCTIONS FOR SUPPORTING FORTRAN78 ON MODEL
; 289 ; B MACHINES. THESE INSTRUCTIONS ARE:
; 290 ; OPCODE SYMBOL
; 291 ; ====== ======
; 292 ; 102 GFAD AC,E
; 293 ; 103 GFSB AC,E
; 294 ; 106 GFMP AC,E
; 295 ; 107 GFDV AC,E
; 296 ; EXTEND INSTRUCTIONS EXTEND OPCODE
; 297 ; ====== ============ ====== ======
; 298 ; EXTEND AC,[GSNGL 0,E] 21
; 299 ; EXTEND AC,[GDBLE 0,E] 22
; 300 ; EXTEND AC,[DGFIX 0,E] 23
; 301 ; EXTEND AC,[GFIX 0,E] 24
; 302 ; EXTEND AC,[DGFIXR 0,E] 25
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 1-5
; EDHIS.MIC[4,30] 13:59 4-Feb-85 REVISION HISTORY
; 303 ; EXTEND AC,[GFIXR 0,E] 26
; 304 ; EXTEND AC,[DGFLTR 0,E] 27
; 305 ; EXTEND AC,[GFLTR 0,E] 30
; 306 ; EXTEND AC,[GFSC 0,E] 31
; 307 ;231 FIX IN PROBLEM IN EDIT 215 TO XDPB THAT PREVENTED THE KL
; 308 ; FROM HANDLING INTERRUPTS WHILE EVALUTAING AN INDEXED INDIRECT CHAIN.
; 309 ; AN "=0" WAS MISSING BY BYTEIP.
; 310 ;230 TO PRESERVE COMPATABILITY WITH THE KS10 AND BECAUSE OF SPACE
; 311 ; LIMITATIONS IN TOPS20 MODEL A, THE SPECIFICATION FOR THE
; 312 ; CVTDBX INSTRUCTIONS HAVE BEEN CHANGED TO ELIMINATE THE NEED
; 313 ; FOR AN OVERFLOW TEST DURING THE CONVERSION. THIS CHANGE
; 314 ; EFFECTIVELY REMOVES EDIT 221.
; 315 ;227 DELETE EDIT 222 AND RETURN THE CVTBDX INSTRUCTIONS TO THEIR
; 316 ; OLD, BROKEN FUNCTIONALITY SINCE ANY ATTEMPT TO PREVENT THE
; 317 ; FLAGS FROM BEING CHANGED PREMATURELY HAS TO CONTEND WITH
; 318 ; INTERRUPTABILITY PROBLEMS. THE HARDWARE REFERENCE MANUAL
; 319 ; HAS A FOOTNOTE ABOUT THE FLAG PROBLEM SO THE CURRENT FUNCTIONALITY
; 320 ; IS DOCUMENTED FOR USERS.
; 321 ;226 PREVENT AR PARITY ERRORS WHEN INCREMENTING BYTE POINTERS IN THE ACS.
; 322 ;225 THE CODE TO SUPPORT THE MX20 VIA THE SBUS DIAG LOOP MECHANISM
; 323 ; DOES NOT TIME OUT CORRECTLY BECAUSE THE LOOP COUNTER IS BEING
; 324 ; REINITIALIZED EVERY TIME THROUGH THE LOOP. FIX THIS PROBLEM
; 325 ; EVEN THOUGH THE CODE IS NOT ASSEMBLED IN CURRENT RELEASES.
; 326 ;224 FIX BUG IN EDIT 223 THAT CAUSED THE WRONG PAGE FAIL
; 327 ; WORD TO BE WRITTEN WHEN AN I/O PAGE FAIL OCCURS.
; 328 ;223 WHEN A MEMORY PARITY ERROR OCCURRS AT PI LEVEL, AS EVIDENCED
; 329 ; BY AN AR DATA PARITY ERROR, THE DTE MAY BE WAITING FOR A
; 330 ; RESPONSE. IF IT IS, A DEX FAILURE WILL OCCUR UNLESS WE CAUSE
; 331 ; DEMAND TO WIGGLE. WE CAN DO THIS BY FORCING THE DATA IN THE
; 332 ; AR OVER THE EBUS.
; 333 ;222 CVTBDX IS NOT SUPPOSED TO CHANGE THE CONTENTS OF THE ACS
; 334 ; OR MEMORY IF THE CONVERTED NUMBER WILL NOT FIT INTO THE
; 335 ; DESTINATION FIELD. IT WAS, HOWEVER, CHANGING THE FLAGS
; 336 ; BEFORE IT KNEW IF THE NUMBER WOULD FIT.
; 337 ;221 THE CVTDBX WERE FAILING TO SET OV AND TRAP1 WHEN THE
; 338 ; CONVERTED DECIMAL NUMBER WOULD NOT FIT INTO A
; 339 ; DOUBLE WORD.
; 340 ;220 THE TRANSLATE INSTRUCTIONS WERE USING A 15 BIT WIDE
; 341 ; FIELD FOR THE REPLACEMENT BYTE IN THE TRANSLATE TABLE
; 342 ; WHILE THE SPECIFICATION STATED THAT THE TRANSLATE
; 343 ; INSTRUCTIONS WOULD USE ONLY 12 BITS.
; 344 ;217 PREVENT CRAM PARITY ERRORS CAUSED BY DISPATCHING TO LOCATION
; 345 ; 3042 WHEN INDEXING IS SPECIFIED IN THE EFFECTIVE ADDDRESS
; 346 ; CALCULATION OF E1 WHEN THE EXTEDED OPCODE IS ZERO (ILLEGAL).
; 347 ; THE FIX IS TO PUT A JUMP TO UUO AT 3042.
; 348 ;216 CHANGE THE DEFAULT VALUE FOR THE SMP SWITCH TO BE ONE. THIS
; 349 ; CAUSES THE MICROCODE TO INCLUDE SMP SUPPORT BY DEFAULT.
; 350 ;215 CHANGES DPB INSTRUCTION TO R-P-W CYCLE ON DATA FETCH PORTION OF
; 351 ; INSTRUCTION TO SOLVE AN INTERACTION PROBLEM IN AN SMP OPERATING
; 352 ; SYSTEM. THIS CHANGE ONLY APPLIES TO MICROCODES FOR TOPS-10
; 353 ; AND TOPS-20, MODEL A.
; 354 ;214 ADDED CHANGES FOR XADR, RELEASE 4 AS FOLLOWS.
; 355 ; STORE PREVIOUS CONTEXT SECTION (PCS) IN FLAGS WORD (BITS 31-35)
; 356 ; IF EXEC MODE AND XSFM OR XPCW INSTRUCTION,MUUO OR PAGE FAIL.
; 357 ; RESTORE PCS FROM FLAGS WORDS (BITS 31-35) WHEN XJRSTF OR XJEN
; 358 ; IS EXECUTED IN EXEC MODE AND THE NEW PC IS ALSO IN EXEC MODE.
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 1-6
; EDHIS.MIC[4,30] 13:59 4-Feb-85 REVISION HISTORY
; 359 ;213 SET/FPLONG=0 PARAMETER ADDED TO TOPS-10 MICROCODE FOR KL MODEL
; 360 ; A AND MODEL B.
; 361 ;212 CHANGE THE CODE AT LDIND: TO TEST FOR USER MODE IF USER MODE
; 362 ; TURN OFF SPECIAL CYCLE THAT MAY STILL BE ON. THE MICROCODE WILL DEPEND
; 363 ; ON KERNAL PROGRAMS TO NOT GET IN PAGE POINTER
; 364 ; LOOPS. INSTRUCTIONS EXECUTED FROM THE CONSOLE WILL NOT WORK.
; 365 ; PI INSTRUCTIONS GET A RESTRICTION TO NOT GET INDIRECT PAGE POINTERS
; 366 ; IN THEIR PAGING CHAIN AS DO EXAMINES AND DEPOSITS AND BYTE TRANSFERS.
; 367 ;211 CHANGE THE TEST FOR INDIRECT POINTERS TO NOT HAPPEN ON SECTION
; 368 ; POINTERS AND JUST ON INDIRECT PAGE POINTERS. AT LDIND:+1 AND LDIMM:+2
; 369 ;210 MAKE ALL AC+# MICROINSTRUCTIONS HAVE THE # FIELD THE SAME IN THE
; 370 ; PREVIOUS MICROINSTRUCTION TO SOLVE A TIMONG GLITCH IN THE HARDWARE.
; 371 ; MAKE EXCHANG MARK AND DESTINATION POINTERS UUO IF THEY DO NOT
; 372 ; HAVE BYTE POINTERS OF EQUAL LENGTH. CHANGES PERVASIVE IN EIS ALSO IN PF
; 373 ; RECOVERY IN IO.
; 374 ; MAKE THE LOAD OF AN INDIRECT POINTER CLEAR PI CYCLE IF SET.
; 375 ; THIS MEANS THAT THE MONITOR CANNOT USE KERNAL CYCLE, INSTR ABORT
; 376 ; INH PC+1 OR HALT IN A PI CYCLE IF AN INDIRECT POINTER CAN
; 377 ; BE A PART OF THE REFILL. ALSO NOTE THE POSSIBILITY OF GETTING AN
; 378 ; INTERUPT BEFOR THE PI INSTRUCTION COMPLETES. (NEVER CONTINUES PI
; 379 ; INSTRUCTION) CHANGES AT LDIND.
; 380 ;207 CHANGE SBUS DIAG CODE FOR MOS PUT IT IN MOS CONDITIONAL /MOS=1
; 381 ; IF ON SBUS DIAG TRIES AT LEAST 8 TIMES TO GET A RESPONSE
; 382 ; OTHER THAN -1 IF IT GOT -1 ALL THOSE TIMES THE MICROCODE
; 383 ; GIVES UP AND RETURNS 0
; 384 ;206 FINAL FIXES TO PUSHM AND POPM
; 385 ;205 FIX BUG IN INDEX CALCULATION OF E1 FOR EXTENDED ADDRESSING.
; 386 ; INDEXING REQUIRED THAT AN AREAD BE PERFORMED IN ORDER TO LOAD
; 387 ; THE AR WITH A CORRECT FINAL RESULT. THE EFFECTIVE ADDRESS CALCULATION
; 388 ; AROUND EXTLA: GOT A NEW MACRO ADDED FOR INDEXING THAT DOES THE AREAD.
; 389 ; ABSOLUTE LOCATIONS IN THE RANGE 3040 GET USED AS TARGETS FOR THIS
; 390 ; AREAD THEN THE CODE REJOINS THE OLD CODE AT EXT2:
; 391 ; THE AREAD WAS NECESSARY FOR THE HARDWARE MAGIC TO LOAD PARTS OF THE
; 392 ; AR DEPENDING ON THE INDEX REGISTER AND OTHER EXTENDED ADRESSING
; 393 ; PARAMETERS.
; 394 ;204 ADD AUTOMATIC VERSION NUMBER
; 395 ; ADD CODE TO DO SBUS DIAG TESTING REQUIRED BY MOS
; 396 ;203 PUT THE BLKO PAG, CHANGE IN 201 IN A KLPAGING CONDITIONAL
; 397 ; KIPAGING GETS TANGLED IN AR PARITY ERRORS AND IN GENERAL DOES
; 398 ; THE WRONG THINGS
; 399 ;202 TURN OFF IMULI OPTIMIZATION IT GETS THE SIGN BIT AND THE OVERFLOW
; 400 ; FOULED UP (TURNED OFF FOR MODEL B ONLY WAS OFF IN MODEL A)
; 401 ;201 CHANGE BLKO PAG, TO INVALIDATE ONLY ONE ENTRY BY CLEARING IT
; 402 ; CHANGES AT PAGBO PAGBO+1 AND CLRPT+3 CLRPT+3 GETS SETUP THAT USED
; 403 ; TO BE AT PAGBO+1, PAGBO+1 NOW CLEARS ENTRY AND QUITS
; 404 ; KLPAGE ERROR CHECK FOR TOPS 10 MODEL A TO CAUSE ERROR
; 405 ; IF SWITCH SETTINGS ARE IN CONFLICT DIDDLED
; 406 ;200 CHANGE ALL EXEC REF TRACKS FEATURES BACK TO PHYS REF
; 407 ; ON SUSPICION THAT PAGE FAULTS ARE NOT HANDLED PROPERLY
; 408 ; MAKE NON TRACKS INSTR STAT FEATURES GET FOUR PHYSICAL
; 409 ; PAGE NUMBERS FROM FIRST FOUR LOCATIONS IN THE PAGE PRESENTED
; 410 ; IN THE DATAO PI, THE CODE ALSO USES THAT PAGE FIRST
; 411 ; LOCATION TO PUT THE INITIAL JUNK INTO ON STARTUP
; 412 ;177 FIX SOME BUGS IN OPCODE TIMING CODE AT OPTM0: AND BEYOND
; 413 ;176 ADD TO THE TIME COUNTING CODE CODE THAT COUNTS FREQUENCY
; 414 ; OF EACH OPCODE IN PAGE+2 AND PAGE+3
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 1-7
; EDHIS.MIC[4,30] 13:59 4-Feb-85 REVISION HISTORY
; 415 ;175 FIX TIME COUNTING CODE TO ACOUNT FOR EACH OPCODE IN THE
; 416 ; USER OR EXEC MODE IT WAS SEEN IN, EDGE COUNTS WERE DONE IN
; 417 ; WRONG MODE CHANGES UNDER OP.TIME CONDITONALS (PERVASIVE)
; 418 ;174 CHANGE TRACKS AND TIME COUNTING TO USE EXEC VIRTUAL SPACE
; 419 ; INSTEAD OF PHYSICAL SPACE
; 420 ;173 SEPERATE OUT THE DISMISS AT 626: BECAUSE OF SUSPECTED BUG
; 421 ;172 THE FACT THAT XJEN DISMISSES BEFORE READING NEW PC WORDS CAUSES
; 422 ; A PROBLEM FOR TOPS 20. REHASH THE CODE AT 600: TO 637: TO MAKE
; 423 ; XJEN READ THE TWO WORDS FIRST AND THEN DISMISS.
; 424 ;171 CAUSE IO PAGE FAIL FIX IN 170 TO SHIFT AT END GETTING CORRECT
; 425 ; PAGE FAIL WORD CHANGE AT IOPGF:
; 426 ;170 MAKE CLRFPD: GO DIRECT TO FINI: INSTEAD OF THROUGH NOP: THIS WAS
; 427 ; COSTING 2 TICS IN BYTE INSTRUCTIONS
; 428 ; CHANGE IO PAGE FAIL TO SAVE A VIRTUAL ADDRESS IN THE AC BLOCK 7
; 429 ; LOCATION 2 INSTEAD OF THE DATA THAT WAS ON THE EBUS CHANGES AT
; 430 ; PGF4:+1 AND IOPGF:
; 431 ;167 CHANGE DEFAULT ON ADB MIXER SELECTS. NO DEFAULT NOW SUBFIELD U23
; 432 ; IS DEFAULTED TO 1 TO AVOID SELECTING FM AND NEEDING TO WAIT FOR PARITY.
; 433 ; THIS LEAVES THE OTHER BIT OF THE FIELD AVAILABLE FOR PARITY
; 434 ; EPT MOVED TO 540 USING SWITCH IN KLX,KLL (KLA,KLB NOW DEFUNCT)
; 435 ;166 CHANGE FIELD DEFINITION FORMAT CHANGE THE WAY THE OPTIONS FIELD
; 436 ; GETS ITS VALUES ASSIGNED. EACH BIT GETS A FIELD DEFINITION.
; 437 ;165 BUG IN 161 TO 164 WAS MISSING AC0 AT POP2: PARITY BIT WAS PUT THERE
; 438 ; IN THE NEWER MICROCODES
; 439 ; INSTALL MANY THINGS TO MAKE WORD STRING MOVES WORK START AT
; 440 ; MOVWD1 AND UNTILL BMVWD1 ALSO ASSORTED MACROS ARE ADDED
; 441 ; THESE ARE INSTALLED IN A SEPERATED EIS FILE (WDEIS) FOR THE MOST PART
; 442 ; THERE ARE SOME NEW MACROS AND THE CLEAN+17 LOCATION IS USED FOR
; 443 ; THIS CASE UNDER MODEL B CONDITIONAL INTERRUPTS DO NOT WORK YET
; 444 ; IN THIS CODE BUT ALL DATA TRANSFERS ARE CORRECT. INTERRUPTS ARE
; 445 ; TAKEN SO SUSPECT THE PROBLEM IS IN THE CLEANUP CODE.
; 446 ;164 LEAVE IN ONLY MAP FIX
; 447 ;163 TAKE OUT MAP FIX LEAVING XHLLI IN AND JRSTF IN
; 448 ;162 PUT XHLLI BACK IN TAKE OUT JRSTF ONLY IN SEC 0 CODE
; 449 ;161 XHLLI OUT TO DEBUG ADD RSTF0: TO MAKE TEST FOR JRSTF IN NON
; 450 ; 0 SECTIONS TEST IN ALL CASES
; 451 ;157 INSTALL XHLLI MAKE JRSTF UUO ON NON ZERO SECTIONS
; 452 ; ALSO MAKE MAP DOING A REFILL PAGE FAIL RIGHT THIS MEANS THAT AFTER
; 453 ; CLEAN IT CANNOT DO ANYTHING INTERESTING IF AN INTERRUPT IS PENDING
; 454 ; CHANGES AT MAP2:
; 455 ;156 REINSERT A SKP INTRPT IN THE PAGE FAULT HANDLER TO HAVE INDIRECT
; 456 ; POINTER CHAINS INTERRUPTABLE. AT PGRF6:+6
; 457 ;155 ABORTIVE MAP FIX FIX REMOVED PROBLEM MUST BE FIXED IN HARDWARE.
; 458 ;154 ADD TESTS FOR AC'S IN PHYSICAL REFERENCES FOR EXAMINES AND DEPOSITS
; 459 ; PHYS REFS GO TO MEMORY, NOT AC'S AFTER PROBLEM SHEET 1675
; 460 ; CHANGES AT PILD+3 PIFET+2 PSTOR PHYS1 PHYS2 PHYS3
; 461 ; ADD CHANGES IN TRACKS TO MAKE MODEL A WORK AT TRK2+2 AND +3
; 462 ;153 ADD SPECIAL CODE FOR PXCT OF BLT THIS HOPEFULLY CAN GO AWAY
; 463 ; WHEN THE EXTENDED ADDRESSING MONITOR DOES NOT USE PXCT ANYMORE
; 464 ; IT IS UNDER .IF/BLT.PXCT CONDITIONAL AND COSTS 12 WORDS
; 465 ;152 CHANGE WHAT BLT DOES TO MATCH THE SPEC SR_BLT(XXX) IS CHANGED TO
; 466 ; NOT FORCE GLOBAL ADDRESSING THE LOAD VMA(EA)_ARX+BR AND
; 467 ; STORE VMA(EA)_ARX MACROS ARE ADDED TO FORCE THE GLOBAL/LOCAL PARAMETERS
; 468 ; TO BE THE SAME AS THOSE OF THE EFFECTIVE ADDRESS
; 469 ;151 PUT THE EPT AND UPT AT 540 UNDER SWITCH CONTROL .IF/EPT540
; 470 ;150 VERSION NUMBER BACKED UP TO PRESERVE SPACE IN VERSION NUMBER FIELD
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 1-8
; EDHIS.MIC[4,30] 13:59 4-Feb-85 REVISION HISTORY
; 471 ;304 EXTEND 0 WOULD GET A JUMP TO AN UNUSED MICROLOCATION IN MODEL.B
; 472 ; ONLY THIS WAS BECAUSE LOCATION 2002: IN MODEL.A SHOULD BE AT 3002:
; 473 ; IN MODEL.B 3002: AND 3003: PUT IN WHERE 2002: AND 2003: ARE UNDER
; 474 ; CONDITIONALS.
; 475 ;303 CHANGE THE NUMBER FIELD OF THE SR_BLT(XXX) MACROS TO GIVE THE
; 476 ; BIT 0 OFF ALL THE TIME. THIS GIVES BLT MORE THE FORM OF THE OTHER
; 477 ; EXTENDED ADDRESSING STUFF IN HOW IT REFERS TO THE SHADOW AC'S.
; 478 ; IT IS STILL BELIEVED TO BE BROKEN BUT IS BETTER THAN IT WAS.
; 479 ;302 ADD LONGER ADDRESS CONSTRAINTS FOR THE NEW MICROASSEMBLER. EVERY
; 480 ; LOCATION THAT THE DISPATCH RAM CAN JUMP TO IS EFFECTED. THE
; 481 ; CONSTRAINTS THATUSED TO LOOK LIKE =00**** MUST NOW LOOK LIKE
; 482 ; =0****00**** THIS IS BECAUSE THE MODEL B MACHINE CAN AND DID
; 483 ; REALLY SET THAT BIT. THE CHANGE MAKES THE MICROCODE INCOMPATIBLE
; 484 ; WITH THE OLD ASSEMBLER.
; 485 ;301 HALT IS CLEARING THE RUN FLOP WITH HARDWARE MUST CHECK FOR
; 486 ; KERNAL MODE BEFOR THE HALT MACRO SO USER IOT MODE WILL
; 487 ; NOT BE ABLE TO HALT. THIS TAKES ONE MICROWORD AT 1017:
; 488 ; THE SENSE OF THE SKIP IS REVERSED AGAIN SO 1016: IS BACK TO
; 489 ; BEING THE UUO AND CHALT: IS NOW A SEPERATE WORD AFTER 1017:.
; 490 ;300 REPLACE HALT CODE AGAIN BUT THIS TIME GET THE SENSE OF THE
; 491 ; SKIP RIGHT BY SWAPPING THE CONTENTS OF LOCATIONS 1016: AND 1017:
; 492 ; PUT THE 1: ADDRESS CONSTRAINT ON CONT:.
; 493 ;277 PUT HALT BACK THE WAY IT WAS SKP USER HAS THE INVERSE SKIP SENSE
; 494 ; AND HENCE DOES THE WRONG THING. HALT TO BE FIXED LATER.
; 495 ;276 YET ANOTHER TRY AT THE BLKO PROBLEM BLK1: SHOULD HAVE HAD A
; 496 ; J/BLK2.
; 497 ;275 THE LONG PC CHANGES HAD XSFM1: BEFOR THE ADDRESS CONSTRAINT THUS
; 498 ; GIVEING THE WRONG ADDRESS. THE =0 IS PUT BEFOR THE LABEL.
; 499 ;274 FIX THE DIAG.INST CONDITIONALS TO BEHAVE PROPERLY WITH THE
; 500 ; CONSTRAINTS OF DRAM LOCATIONS MAP DIED BECAUSE IT NEVER WAS
; 501 ; REACHED OUT OF A DISPATCH.
; 502 ;273 INSERT THE DIAG.INST FEATURE FOR THE DIAGNOSTICS PEOPLE.
; 503 ; CHANGES AT DCODE 104:, 106: AND AT XCT: SHOULD NOT EFFECT OTHER
; 504 ; ASSEMBLIES.
; 505 ;272 THE FIX TO THE GARBAGE IN THE LEFT HALF OF VMA IN 265 FORGOT TO
; 506 ; LOAD THE VMA IN BLK3:+1 PUT THAT IN. ALSO ON JUD'S RECOMENDATION
; 507 ; PUT A COPY OF THE NOP MICROINSTRUCTION AFTER CLRFPD: TO MAKE
; 508 ; ENOUGH TIME IN THE SKIP CASE. IT SEEMED TO WORK WITHOUT THIS
; 509 ; AND IF SPACE GETS TIGHT IT SOULD BE REMOVED.
; 510 ;271 FIX IN 267 PGF4:+4 DOES NOT WORK, CANNOT PUT VMA_# THERE. POSSIBLY BECAUSE
; 511 ; VMA_# CONFLICTS IN SOME ESOTERIC WAY WITH STORE? THAT CHANGE
; 512 ; IS TAKEN OUT AND AT PGF1 THE VMA IS GIVEN 500 OR 501. THIS IS SLIGHTLY
; 513 ; LESS DESIREABLE AND FURTHER EFFORT COULD BE SPENT IN THE UCODE TO
; 514 ; MAKE PAGE FAILS LESS UNWEILDY FOR THE SOFTWARE ROUTINE THAT CONVERTS
; 515 ; THEM TO MODEL B FORM.
; 516 ;270 CHANGE HALT TO CHECK FOR USER MODE INSTEAD OF IO LEGAL. A JOB
; 517 ; IN USER IOT SHOULD NOT BE ABLE TO HALT THE MACHINE.
; 518 ;267 ADD NEW CONDITIONAL SHIFT.MUUO TO PROVIDE THE SHIFTED DOWN MUUO
; 519 ; DATA BLOCKS MORE SIMILAR TO THE XADDR TYPES. CONDITIONAL IS USED
; 520 ; AT 1003: AND PGF4:+4 TO PROVIDE A DIFFERENT STARTING ADDRESS.
; 521 ;266 FIX PILD+3 TO LOAD THE VMA AT THE SAME TIME THUS ENABLING
; 522 ; THE MODEL HACK FIX TO LOAD THE LONG VMA.
; 523 ;265 HAIR UP THE ALREADY HAIRY BLKXX CODE TO CLOBBER THE LEFT HALF OF AR
; 524 ; BEFOR USING IT AS AN ADDRESS. CLOBBERED ARL AT BLK2 AND LOADED
; 525 ; VMA AT BLK3.
; 526 ;264 ADD J/CLRFPD AT BFIN TO MAKE IT THE SAME AS IT WAS. BFIN GOT
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 1-9
; EDHIS.MIC[4,30] 13:59 4-Feb-85 REVISION HISTORY
; 527 ; MOVED TO A DIFFERENT PLACE IN THE LAST EDIT AND THIS J FIELD
; 528 ; WAS NOT FIXED.
; 529 ;263 ADD THE MIT FIXES. IOTEND AND THE BLK1 TO BLK4 GROUP ARE CHANGED
; 530 ; EXTENSIVELY. CLRFPD IS PUT JUST BEFORE FINI CONSTRAINT ON IOFET
; 531 ; IS CHANGED.
; 532 ; ADD THE LONG PC FORMAT UNDER A NEW CONDITIONAL LONG.PC THE
; 533 ; CONDITIONAL IS TURNED ON BY XADDR. CONDITIONALS ARE ADDED TO THE
; 534 ; LONG PC CODE TO MAKE IT SMALLER WHEN ONLY SECTION 0 IS POSSIBLE.
; 535 ; ADD COMMENTS TO THE MICROCODE OPTIONS FIELD.
; 536 ; RESTORE SXCT CODE FROM VERSION 131. TO BE USED ONLY IN MODEL A
; 537 ; NON KLPAGING CODE.
; 538 ;262 PUT WORD AT INDR1+1 UNDER SXCT CONDITIONAL SO WHEN SXCT IS OFF WE
; 539 ; GET AN ADDITIONAL SAVINGS OF ONE WORD.
; 540 ;261 ADD PHYS REFS AT PGRF6+4 AND PIDISP+4 TO MAKE MODEL.A LOAD A LONG
; 541 ; VMA. PART OF THIS CODE IS NOT UNDER CONDITIONAL BECAUSE IT SHOULD NOT MATTER
; 542 ; TO A MODEL.B MACHINE. PIDISP+4 ALSO GETS THE LOAD OF THE SAME DATA
; 543 ; REPEATED SO THE PHYS REF HAS SOMETHING TO WORK ON.
; 544 ; FLUSH THE NOW USELESS CODE AT CHALT TO GENERATE THE LD AR.PHYS
; 545 ; CONSTANTS.
; 546 ; CURRENTLY THERE IS SORT OF A BUG IN THAT THE SBR AND THE CBR
; 547 ; CAN NOT BE ABOVE 256K IN A MODEL.A MACHINE. THIS DOES NOT BOTHER
; 548 ; THE CURRENT MONITORS AT ALL IN THAT THESE TABLES ARE IN VERY LOW CORE.
; 549 ; IF THAT CHANGES THE LOCATIONS SECIMM+3 SECIMM+7, LDIND, PGRF5, LDSHR
; 550 ; AND LDPT1+1 MUST ALL GET FIXED UP. THE GENERAL FIX IS TO GET A PHYS REF
; 551 ; IN THE MICROINSTRUCTION THAT LOADS THE VMA. THIS CAN BE DONE BY
; 552 ; POSTPONING THE LOAD OF THE VMA ONE MICROINSTRUCTION IN ALL OF THESE
; 553 ; PLACES, BUT, SINCE THAT CAUSES A PERFORMANCE DEGRADATION IT WAS NOT
; 554 ; DONE.
; 555 ;260 DIVERGANT CHANGES TO MAKE KLPAGING PHYS REFS THE OLD WAY
; 556 ; CAUSE ALL CASES OF VMA_XXX+LD AR.PHYS TO GO BACK TO THE
; 557 ; OLD PHYS REF WAY
; 558 ;257 IN MODEL B MACHINES AT LDPT+1 THE VMA IS GETTING GARBAGE IN THE
; 559 ; LEFT HALF BECAUSE IT ADDED IN JUNK THAT WAS IN AR LEFT. FIX IS TO
; 560 ; CLEAR ARL AFTER LDPT AND TO DO THE SHUFFLE PERFORMED THERE ONE
; 561 ; MICROINSTRUCTION LATER.
; 562 ;****** A HACK FIX IS USED HERE THAT TAKES TWO WORDS. THIS WAS DONE BECAUSE
; 563 ; OF EXTREEM TIME PRESSURE TO DEBUG >256K MODEL B. THERE OUGHT TO BE
; 564 ; A WAY TO REDUCE THIS FIX TO ONLY ONE WORD IN SPACE AND TIME, OR
; 565 ; EVEN LESS.
; 566 ;256 EDIT JUMPED TO RANDOMNESS WITH AN EXTRA RETURN. THIS HAPPENED
; 567 ; BECAUSE THERE WAS NO CALL AT EDSFLT IN THE MODEL B NON XADDR CODE
; 568 ; ADDED CALL TO EDSFLT.
; 569 ;255 SAVE EDIT FROM GETTING AN EXTRA STORE CYCLE AT EDSSIG BY SENDING
; 570 ; IT ALWAYS TO THE EDFLT1 LOCATION INSTEAD OF EDFLT THIS ONLY
; 571 ; CHANGES WHAT HAPPENS IN MODEL B NON XADDR BECAUSE IN MODEL A
; 572 ; EDFLT AND EDFLT1 ARE THE SAME LOCATION ANYWAY
; 573 ;254 CAUSE THE A INDRCT CHANGE IN 253 TO BE ONLY FOR NON EXTENDED
; 574 ; ADDRESSING MACHINES. THIS THROWS DOUBT ON THE WORD SAVINGS
; 575 ; THAT MIGHT HAVE BEEN POSSIBLE
; 576 ;253 CHANGE A INDRCT TO LOAD BOTH THE AR AND ARX, IN THE EXTENDED
; 577 ; INSTRUCTION SET THIS HAPPENED TO BE DEPENDED ON AT EXT2+2 AND
; 578 ; EXT2+3. THE DEFINITION OF A IND IN EA CALC/ WAS FIXED TO
; 579 ; LOAD THE AR AND THE ARX
; 580 ; I THINK THIS PERMITS THE SAVINGS OF AN EXTRA WORD AND SOME
; 581 ; TIME ON ALL INDIRECTS. CHECK OUT FLUSHING INDR1 AND MAKING INDRCT
; 582 ; DO THE DISPATCH AND GO TO COMPEA
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 1-10
; EDHIS.MIC[4,30] 13:59 4-Feb-85 REVISION HISTORY
; 583 ; FORCE ADB TO GENERATE AR*4 AS DEFAULT THIS DISABLES PARITY
; 584 ; CHECKING ON THE FM WHEN IT IS NOT BEING READ FIXED IN
; 585 ; DEFINITION OF ADB THIS WILL ALSO SPEED UP THE MACHINE BY SOME
; 586 ; BECAUSE THE ADB FIELD CAN NO LONGER FORCE 3 TICS WITHOUT REALLY
; 587 ; NEEDING THAT LONG
; 588 ;252 SAVE A WORD AT IOPGF+1 BY MAKING IT PILD+3 THIS ADDS THE SET
; 589 ; ACCOUNT ENABLE TO AN UNDEFINED CASE.
; 590 ;251 TURNING ON PAGING CAUSED A HANG THIS WAS BECAUSE OF A MISIMPLIMENTED
; 591 ; FIX IN 250. THE ATTEMPT TO PUT THAT FIX IN NO SPACE FAILED AND IT TOOK
; 592 ; ONE WORD. AT LDPT+1 ADD BR/AR AT GTCST1 RECOVER THE AR FROM THE BR
; 593 ; THIS SEEMS LIKE IT SHOULD BE ABLE TO BE BUMMED BUT I CANNOT
; 594 ; FIGURE OUT HOW
; 595 ; ALSO FIX A PLACE WHERE A PHYS REF WAS LEFT IN THE MODEL A CODE
; 596 ; AT PGRF6+4 MODEL B CONDITIONAL IS AS IT WAS MODEL A IS NEW TO USE
; 597 ; LD AR.PHYS MECHANISM
; 598 ;250 LOADING HIGH ORDER GARBAGE TO THE VMA WITH THE FIX FOR
; 599 ; >256K CAUSES FUNNY THINGS TO HAPPEN. BITS GET CLOBBERED
; 600 ; WITH AR0-8_SCAD 14 LINES AFTER SECIMM. ACTUALLY IS MORE
; 601 ; HAIR BECAUSE OF CONFLICTING FIELDS. CODE ABOVE AND BELOW
; 602 ; THAT GOT REARRANGED TO SIMPLER MODEL A AND MODEL B CONDITIONALS
; 603 ; SINCE NOW ALL LINES ARE DIFFERENT. SHUFFLING OF FE IS DONE
; 604 ; TO PROVIDE ROOM FOR A CONSTANT ON THE CORRECT SIDE OF THE SCAD
; 605 ; AT LDPT A SIMILAR
; 606 ; RECODING IS NEEDED. 4 LINES OF CODE ARE REDONE IN MODEL
; 607 ; A CONDITIONAL AND CONDITIONALS ARE RESHUFFLED TO HAVE
; 608 ; SIMPLER FORMAT
; 609 ; NEW MACROS ARE ADDED GEN AR0-8, GEN FE AND AR0-8
; 610 ; VMA_AR+LD AR.PHYS AND ITS FRIENDS ARE TAKEN OUT OF KLPAGING
; 611 ; CONDITIONAL THEY ARE USED TO DO EXAMINES AND DEPOSITS NOW
; 612 ;247 FIX ST AR.PHYS TO GIVE BIT 4 INSTEAD OF BIT 5 AT CHALT
; 613 ; AT PSTORE CHECK FOR AC REF AND IF SO WRITE FM MUST DO THIS
; 614 ; BECAUSE LOAD AD FUNC DOES NOT SET MCL STORE AR
; 615 ;246 FIX MUUO, IN EXTENDED ADDRESSING, TO GET NEW PC BEFORE CLOBBERING
; 616 ; THE USER AND PUBLIC FLAGS THAT TELL WHERE TO GET IT. FIX CONDITIONAL
; 617 ; ASSEMBLY AT INDRCT TO DO EA TYPE DISP IN MODEL A, NOT MODEL B.
; 618 ;245 ADDITIONAL FIXES FOR THE 256K PROBLEM, TO MAKE EXAMINE AND
; 619 ; DEPOSIT WORK. CHANGES AT CHALT TO CREATE CONSTANT "ST AR.PHYS",
; 620 ; AND EXTENSIVELY NEAR PICYC1, PIDATI, AND PIDATO. CHANGES ARE ALL
; 621 ; UNDER MODEL B CONDITIONAL, BECAUSE MODEL B HARDWARE WORKS OK, AND
; 622 ; THE FIX IS REGARDED AS CROCKISH.
; 623 ;244 WAIT FOR COMPLETION OF INDIRECT REFERENCE AT BYTEI+1 AND EXTI+1
; 624 ; EVEN THOUGH INTERRUPT REQUEST HAS BEEN SEEN, SO AS NOT TO CONFUSE MBOX.
; 625 ;243 VARIOUS FIXES TO MAKE THESE SOURCES WITH MODEL.B SWITCH OFF
; 626 ; EQUIVALENT TO MODEL A SOURCES, SO WE CAN DISCARD MODEL A SOURCES
; 627 ; THE FIXES ARE:
; 628 ; 1) SWITCH SNORM.OPT, TO SAVE SPACE IN SINGLE PRECISION
; 629 ; FLOATING NORMALIZATION.
; 630 ; 2) CREATION OF LD AR.PHYS MAGIC CONSTANT, TO SOLVE HARDWARE
; 631 ; PROBLEMS GENERATING ADDRESSES ABOVE 256K.
; 632 ;242 FIX AT SECPTR+1 TO PRESERVE AR LEFT UNTIL WE CAN CHECK
; 633 ; FOR BITS 12-17 NON ZERO CORRECT ADDRESS CONSTRAINTS AT
; 634 ; SECIMM+1 & +2 TO GET BRANCHING RIGHT FOR SHARED AND INDIRECT
; 635 ; SECTION POINTERS. FIX AT LDIMM+1 TO CLEAR LH OF AR BEFORE
; 636 ; LOADING VMA WITH SPT ADDRESS, TO PREVENT PAGE FAULT ON SPT
; 637 ; REFERENCE.
; 638 ;241 MORE FIXES AT START: AND NEWPC:, FOR SAME PROBLEM AS 240.
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 1-11
; EDHIS.MIC[4,30] 13:59 4-Feb-85 REVISION HISTORY
; 639 ; MUST LOAD FLAGS AND CLEAR VMAX, THEN LOAD VMA INTO PC TO CLEAR
; 640 ; PCX, THEN RELOAD VMA TO GET EFFECT OF NEW FLAGS AND CLEARED
; 641 ; PCX. (MODEL A ONLY).
; 642 ;240 FIXES AT START: AND NEWPC: TO LOAD 23-BIT ADDRESS RATHER
; 643 ; THAN 30-BIT, SINCE OTHER BITS ARE PC FLAGS. AT SAME TIME AND
; 644 ; PLACE, FIX MODEL A CODE TO CLEAR PC SECTION NUMBER.
; 645 ;237 CHANGE CONDITIONALS AROUND PUSH AND POP CODE FROM XADDR TO
; 646 ; MODEL.B. COULD SIMPLIFY IFNOT XADDR.
; 647 ;236 FIX ADDRESS CONSTRAINTS ON USES OF EA MOD DISP IN MODEL
; 648 ; B MACHINE WITH EXTENDED ADDRESSING OFF. PROBLEMS AT COMPEA,
; 649 ; BFETCH, AND EXT2.
; 650 ;235 SLIGHTLY CLEANER FIXES FOR PROBLEMS IN 234 TO AVOID WASTING TIME
; 651 ; AND SPACE. BYTE READ MACRO NEEDS TO SET VMA/LOAD, AND VMA_VMA
; 652 ; HELD MACRO DOESN'T USE MEM FIELD UNLESS MODEL B AND KL PAGING.
; 653 ; ALSO FIX CONDITIONAL ASSEMBLY STUFF TO AVOID SPURIOUS ERRORS.
; 654 ;234 INSTALL FIXES FOR SOME PLACES WHERE MODEL B CODE CAUSES CONFLICT
; 655 ; WITH THE OLD NON KLPAGING NON EXTENDED ADDRESSING CODE
; 656 ; THESE ARE AT BFETCH, PGF3-1, PGF6, EXT1+2
; 657 ;233 FIX THE FOLLOWING PROBLEMS:
; 658 ; KL PAGING SHOULD PRODUCE A PAGE FAILURE WHEN BITS
; 659 ; 12-17 OF A PRIVATE SECTION POINTER ARE NON 0
; 660 ; FIXED AT SECPTR ETC.
; 661 ; EDIT DOES NOT ALLOW INTERUPTS
; 662 ; FIXED AT EDNXT1 AND AFTER THAT
; 663 ; MAP SHOULD NOT BE LEGAL IN USER MODE
; 664 ; FIXED AT MAP2 AND CLEAN+15
; 665 ; MOVMI IS SHORTENED BY MAKING IT THE SAME AS MOVEI
; 666 ; AT DON LEWINES SUGGESTION THIS IS IN DCODE 215
; 667 ;232 MERGE THE SECOND ORDER STATISTICS GATHERING CODE WITH THIS
; 668 ; CODE INTENT IS TO KEEP IT HERE
; 669 ;231 CHANGE THE LOAD CCA DEFINITION TO REFLECT THE NEW HARDWARE
; 670 ; THIS IS ENABLED WHEN THE MODEL.B ASSEMBLY SWITCH IS ON
; 671 ;230 THIS IS THE POINT WHERE MICHAEL NEWMAN TAKES OVER THE MICROCODE
; 672 ; MAINTENCE SEVERAL BUG FIXES GET EDITED INTO 126 AT THIS POINT
; 673 ; TWO SETS OF PARALLEL CODE WILL BE MAINTAINED FOR A WHILE.
; 674 ; FIX THE CMPS PARODY ERROR PROBLEM WHEN ILLEGAL BITS ARE FOUND IN
; 675 ; THE LENGTHS.
; 676 ;227 FIX PIBYTE TO GET DTE# CORRECT ON TO-10 TRANSFERS. FIX MTRREQ
; 677 ; CYCLES TO WAIT FOR STORE TO FINISH BEFORE RE-ENABLING ACCOUNT.
; 678 ; FIX ADJSP OF LONG STACK POINTERS TO FETCH NEXT INSTR.
; 679 ;226 FIX EXMD TO LOAD AR, RATHER THAN ARX, WITH MARK POINTER, AS
; 680 ; EXPECTED BY THE HANDLER. FIX EDIT, SEVERAL PLACES, TO IGNORE
; 681 ; LEFT HALF OF MARK & PATTERN ADDRESSES WHEN PC SECTION IS ZERO.
; 682 ; FIX EDIT TO MAKE EXTENDED REFERENCE FOR PATTERN BYTES.
; 683 ; FIX ADJSP TO BE MEANINGFUL WITH LONG STACK POINTERS
; 684 ;225 FIX BYTEA NOT TO CLOBBER FE ON INDIRECTS, FIX EXMD TO BACK
; 685 ; UP VMA AFTER STORING DSTP2 AND BEFORE STORING DSTP. FIX EDIT TO
; 686 ; COUNT THE WHOLE PATTERN ADDRESS IF PC SECTION NOT ZERO.
; 687 ;224 FIX EXTEND ADDRESS CALCULATION TO RECOVER E0 FROM MQ, AND
; 688 ; FIX EXTEND OPCODE TEST TO DISALLOW OPS >20.
; 689 ; FIXES TO HANDLE NEW ENCODING OF AC-OP ON APR BOARD.
; 690 ;223 COMPLETE 222. P HAS TO GO TO SC AS WELL AS AR0-5. CREATE
; 691 ; SUBROUTINE RESETP TO DO IT. GET CODE IN SYNC WITH HARDWARE AND
; 692 ; MOST RECENT SPEC FOR MEANING OF PXCT AC BITS IN EXTEND. THUS
; 693 ; UNDO COMMENT IN 221: WE SHOULD LOOK AT PXCT B11. ALSO FIX
; 694 ; EXTEND TO USE CORRECT ENCODING OF BITS 9, 11, AND 12 FOR PXCT
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 1-12
; EDHIS.MIC[4,30] 13:59 4-Feb-85 REVISION HISTORY
; 695 ; OF STRING OPERATIONS. FIX DATAI PAG SO IT DOESN'T LOSE THE
; 696 ; PREVIOUS CONTEXT AC BLOCK WHEN LOADING PREVIOUS SECTION #.
; 697 ; INSERT CHANGE CLAIMED FOR EDIT 55, TO INHIBIT INTERRUPT DURING
; 698 ; PI CYCLES.
; 699 ;222 FIX BYTE POINTER UPDATE ROUTINES GSRC & IDST IN EIS CODE
; 700 ; TO UPDATE P WHEN INCREMENTING SECOND WORD. JUST FORGOT TO. TRY
; 701 ; AGAIN TO CONTROL EIS REFERENCES OFF E0, FOR EXTENDED OR NOT.
; 702 ;221 COMPLETE FIX OF 220, TO KEEP SR CORRECT THROUGH RELOAD OF IR
; 703 ; IN EXTEND DECODING, AND TO CONTROL SR CORRECTLY FOR XBLT DST
; 704 ; REFERENCES. (WE WERE LOOKING AT PXCT B11, SHOULD BE B12).
; 705 ;220 FIXES SEVERAL PLACES TO USE "EA" IN DRAM A FIELD INSTEAD OF "I",
; 706 ; NOTABLY BLT, WHICH WAS USING WRONG SECTION. FIX EXTEND TO
; 707 ; CONTROL VMA EXTENDED BEFORE FETCHING EXTEND-OP, SO AS NOT TO
; 708 ; LOOK "UNDER" THE AC'S. FIX XBLT FOREWARD TO STOP WHEN AC GOES
; 709 ; TO ZERO, NOT -1. ALSO CONTROL SR BEFORE INITIAL STORE TO GET
; 710 ; CORRECT CONTEXT.
; 711 ;217 CODE CHANGES TO MAKE SECOND WORD OF BYTE POINTER WORK RIGHT
; 712 ; WHETHER EFIW OR IFIW, BY CONTROLLING CRY18 OR CRY6.
; 713 ;216 RECODE EXTENDED INSTRUCTION SET DECODING & EFFECTIVE ADDRESS
; 714 ; CALCULATION. FIX UUO CODE TO INCREMENT VMA AFTER STORING PC.
; 715 ; FIX ADJBP TO GET 36 BIT ADDRESS ADJUSTMENT IF B12 SET.
; 716 ;215 REARRANGE CONDITIONAL ASSEMBLY DEFAULTS TO BE MORE LOGICAL
; 717 ; INSERT FORM FEEDS AND COMMENTS TO HELP BEAUTIFY THE LISTING.
; 718 ; REWORK THE NEW JRST'S, TO MAKE THEM SMALLER, FASTER, AND TEST
; 719 ; IO LEGAL BEFORE DISMISSING. PUT IN XBLT.
; 720 ;214 MODIFY ADJBP AND UUO'S FOR EXTENDED ADDRESSING. REWORK PARITY
; 721 ; ERROR HANDLING, IN A FRUITLESS ATTEMPT TO MAKE IT SMALLER,
; 722 ; BUT SUCCESSFULLY MAKING IT CLEARER. FIX ASSEMBLY ERRORS IN EIS
; 723 ; DUE TO AC4 CHANGES, AND ADD CODE TO HANDLE LONG BYTE POINTERS
; 724 ; IN AC'S. PUT IN CODE TO GIVE PAGE FAIL 24 ON ILLEGAL FORMAT
; 725 ; INDIRECT WORD.
; 726 ;213 FIX LDB & DPB TO TEST POINTER BIT 12 ON CALL TO BYTEA.
; 727 ;212 MODIFY JSP, JSR TO STORE FULL PC WITHOUT FLAGS IN NON-ZERO SEC
; 728 ; SEPARATE CONDITIONALS FOR "MODEL B" MACHINE FROM THOSE FOR
; 729 ; EXTENDED ADDRESSING MICROCODE.
; 730 ;211 REMOVE UNNECESSARY DIDDLING OF VMA USER BIT DURING PAGE REFILL,
; 731 ; AND ELIMINATE SPECIAL CASE FOR MAP INSTRUCTION, WHEN EXTENDED
; 732 ; ADDRESSING HARDWARE EXISTS TO SOLVE THESE PROBLEMS.
; 733 ; FIX SEVERAL CASES OF SIGNS DISP WITH INADEQUATE CONSTRAINT.
; 734 ;210 FIX DEFINITION OF "SKP LOCAL AC REF", WHICH CONFUSED "AC
; 735 ; REF" WITH "LOCAL AC REF".
; 736 ;207 FIX JRSTF (AND ITS DERIVATIVES) TO LOAD FLAGS INTO AR AFTER
; 737 ; DOING EA MOD DISP, WHICH WOULD OTHERWISE CLOBBER THEM. FIX
; 738 ; COMPEA CODE TO LET AREAD HARDWARE LOAD AR. OTHERWISE GET SEC #.
; 739 ;206 FIX PCTXT ROUTINE TO GET PREVIOUS CONTEXT SECTION.
; 740 ;205 FIX POPJ TO LOAD HALFWORD OR FULLWORD PC ACCORDING TO PC SECT
; 741 ;204 FIX CONDITIONALS AROUND LOC 47, WRONG IN 202. FIX DEFINITION
; 742 ; OF A INDRCT, DOESN'T NEED #07. FIX STACK INSTRUCTIONS FOR
; 743 ; EXTENDED ADDRESSING. MUST NOT LOAD VMA FROM FULL AD.
; 744 ;203 INCLUDE CODE AT NEXT+2 TO GENERATE ADDRESS MASK (LOW 23 BITS)
; 745 ; AT HALT TIME, AND CODE IN PICYCLE TO USE IT TO GET 23 BIT ADDR
; 746 ; OUT OF IOP FUNCTION WORD.
; 747 ;202 MOVE "40+A" LOCATIONS TO "A" UNDER EXTENDED ADDRESSING. CHANGE
; 748 ; ALL CALL MACROS TO GENERATE CALL BIT INSTEAD OF SPECIAL FUNC'S.
; 749 ;201 BEGIN EXTENDED ADDRESSING CHANGES IN EARNEST. INTEGRATE NEW
; 750 ; EFFECTIVE ADDRESS COMPUTATION CODE, AND REVISE INSTRUCTION
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 1-13
; EDHIS.MIC[4,30] 13:59 4-Feb-85 REVISION HISTORY
; 751 ; ROUTINES AS NECESSARY.
; 752 ;126 FIX STRAC3-2, WHERE COMMA GOT LEFT OFF WHEN IFETCH MOVED
; 753 ;125 REMOVE NXT INSTR FROM STAC1, STRAC3, & STAC4, MAKING THEM JUMP
; 754 ; TO FINI INSTEAD. PROBLEM INVOLVES A RACE IF PAGE FAIL OCCURS
; 755 ; WHILE WRITING FM. IF FM ADDRESS CHANGES BEFORE COND/FM WRITE
; 756 ; GOES FALSE, APR BOARD MAY GRONK PARITY BIT OF SOME FM LOC'N.
; 757 ; THIS RESULTS IN SOME SOME PATHS FROM FETCH TO NICOND BECOMING
; 758 ; LONGER THAN 6 TICKS, SO THE FETCHES GOT SHUFFLED IN SOME PLACES.
; 759 ; MICROCODE PATCH ELIMINATES MOST PROBABLE CAUSE, WHICH IS PAGE
; 760 ; FAIL AT NICOND TIME WHILE WRITING AC OTHER THAN 0. IT DOES NOT
; 761 ; TAKE CARE OF THE POSSIBILITY THAT COND/FM WRITE WILL GLITCH AT
; 762 ; INSTR 1777 TIME.
; 763 ;124 FIXES IN SEVERAL PLACES TO SET AND CLEAR ACCOUNT ENABLE SO AS
; 764 ; TO GET REPEATABLE ACCOUNTING MEASURES OF USEFUL WORK DONE. THE
; 765 ; ENABLE IS NOW CLEARED FOR METER UPDATE CYCLES AND KL PAGE REFILL
; 766 ; CYCLES. THE HARDWARE ALREADY TAKES CARE OF PI CYCLES.
; 767 ;123 CORRECT 122 TO CONSTRAIN LOC "UNHALT", AND TO LOAD ARX FROM AR,
; 768 ; SO AS TO LET "SKP AR EQ" WORK. PROBLEM AROSE BECAUSE MACRO ALSO
; 769 ; TESTS ARX00-01. FIX EDIT, WHEN STORING DEST POINTER ON SELECT
; 770 ; SIGNIFICANCE START, TO ELIMINATE AMBIGUITY IN DEST P FIELD.
; 771 ;122 SPEC CHANGE TO EXIT FROM HALT LOOP, SO THAT AR0-8=0 WITH AR9-35
; 772 ; NON-ZERO LOADS AR INTO PC TO START PROCESSOR. THIS IS DIFFERENT
; 773 ; FROM EXECUTING JRST BECAUSE PC FLAGS ARE CLEARED.
; 774 ;121 FIX TO 120 TO ALLOW A CYCLE BETWEEN FILLER FROM MEMORY AND
; 775 ; WRITING IT INTO FM (THUS PARITY CAN BE COMPUTED). ALSO CLEAR
; 776 ; STATE REGISTER IN EDIT BEFORE GETTING NEXT PATTERN BYTE.
; 777 ;120 FIX EIS TO TOLERATE PAGE FAIL ON READ OF FILL BYTE IN MOVSRJ
; 778 ; OR B2D CONVERSION. REQUIRES GETTING FILLER BEFORE STORING DLEN
; 779 ; ALSO INTEGRATE OPCODE COUNTING/TIMING CODE UNDER CONDITIONALS
; 780 ;117 FIX PARITY ERROR CODE TO WRITEBACK AR ON RPW ERROR.
; 781 ;116 REWRITE OF DDIV, SO THAT THE NO-DIVIDE TEST IS ON THE MOST
; 782 ; SIGNIFICANT HALF OF THE MAGNITUDE OF THE DIVIDEND, RATHER THAN
; 783 ; THE MAGNITUDE OF THE MOST SIGNIFICANT HALF. IN THE PROCESS,
; 784 ; SAVE TIME AND SPACE. ALSO PUT IN CONDITIONAL ASSEMBLY VARIABLE
; 785 ; "WRTST" TO INHIBIT WRITE TEST CYCLE FOR INSTRUCTIONS WHICH
; 786 ; APPEAR NOT TO NEED IT, AND THUS TO SPEED THEM UP.
; 787 ;115 FIX SBDIAG TO SET MCL REG FUNC TO INHIBIT EBOX MAY BE PAGED.
; 788 ;114 RECODE STRING COMPARE TO SAVE SPACE AND TIME. CHANGE DEFAULTS
; 789 ; FOR KLPAGING TO INCLUDE EIS, EXCLUDE TRACKS FEATURE. CHANGE
; 790 ; KLPAGING (NEW SPEC) TO KEEP "LOGICALLY WRITABLE" IN SOFTWARE BIT
; 791 ;113 RECODE KL PAGING TO ELIMINATE PROBLEM OF WRITING HARDWARE
; 792 ; PAGE TABLE BEFORE CHECKING FOR AGE TRAP, AND THEREFORE LEAVING
; 793 ; THE PAGE ACCESSIBLE AFTER THE TRAP. THE RECODING ALSO IMPROVES
; 794 ; THE ALGORITHM IN THAT THE HARDWARE ENTRY INCLUDES THE W BIT SET
; 795 ; IF THE CORE TABLES ALLOWED WRITE AND THE CST INDICATES WRITTEN,
; 796 ; EVEN IF THE CURRENT REFERENCE WAS NOT A WRITE.
; 797 ; ALSO FIX CODE WHICH WRITES PT DIR, TO GET WRITE REF BIT FROM
; 798 ; VMA HELD INTO BIT 5 OF SAVED PAGE FAIL WORD.
; 799 ;112 FIX PAGE FAIL CODE FOR USE WITH PROB SHEET 1396, WHICH LOADS
; 800 ; PC IF PAGE FAIL OCCURS ON NICOND. THUS CODE NEEDN'T CHECK FOR
; 801 ; FETCH AT CLEAN, WHICH CAUSED OTHER PROBLEMS ON PARITY ERRORS.
; 802 ; CLEAR FE AND SC IN NXT INSTR MACRO (JUST CLEANLINESS).
; 803 ;111 PATCH SEVERAL ROUTINES WITH THE FOLLOWING MACRO --
; 804 ; FETCH WAIT "MEM/MB WAIT"
; 805 ; TO PREVENT SEQUENCES IN WHICH PAGE FAIL INFO CAN GET LOST
; 806 ; BECAUSE OF LONG TIME FROM REQUEST TO MB WAIT. THESE PATCHES
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 1-14
; EDHIS.MIC[4,30] 13:59 4-Feb-85 REVISION HISTORY
; 807 ; SHOULD BE REMOVED AFTER AN ECO HAS BEEN INSTALLED TO FIX.
; 808 ; IN ADDITION, EBUSX SUBROUTINE HAS BEEN MODIFIED TO PREVENT RACE
; 809 ; CONDITION WHEN SETTING UP IO FUNCTION WITH COND/EBUS CTL AND
; 810 ; MAGIC # BIT 4. MUST NOT CHANGE #5 THROUGH #8 ON NEXT CYCLE.
; 811 ; FIX KLPAGING CODE TO GO BACK TO AREAD ON MAP REF, BECAUSE
; 812 ; MEM/AD FUNC DOESN'T CORRECTLY RESTORE APR REG FUNC. ALSO MAKE
; 813 ; THE CODE SMARTER ON NO MATCH CONDITION, SO REQUEST DOESN'T HAVE
; 814 ; TO BE RESTARTED AND IMMEDIATELY FAIL AGAIN.
; 815 ;110 GIVE UP ON THE OLD STRING COMPARE CODE, INSTALLING MIKE NEWMAN'S
; 816 ; VERSION. SOMEWHAT SLOWER, BUT GIVES THE RIGHT ANSWERS.
; 817 ; FIX LDB CODE TO WAIT FOR MEM WORD EVEN IF INTERRUPT REQUEST
; 818 ; SEEN, SO AS NOT TO GET CONFUSED WHEN IT ARRIVES OR PAGE FAILS.
; 819 ; ALSO IMPROVE CLRPT ROUTINE USED BY CONO AND DATAO PAG TO START
; 820 ; LOOP WITH VMA CLEARED AND PT WR SELECTION SETUP CORRECTLY.
; 821 ;107 FIX STRING COMPARES TO CHECK FOR INTERRUPT. THIS INVOLVED
; 822 ; CHECKING DURING GSRC ROUTINE, WHICH ELIMINATES NEED FOR CHECK
; 823 ; IN SRCMOD (WHICH CALLS GSRC). IT ALSO REQUIRED CLEARING SFLGS
; 824 ; AT STARTUP, AND ADJUSTING DLEN UPDATE CODE IN DEST FILL TO GET
; 825 ; VALID LENGTH STORED ON INTERRUPT.
; 826 ;106 ELIMINATE RACE IN DECODING OF # FIELD ON MTR BOARD BY HOLDING
; 827 ; LOW 3 BITS THROUGH NEXT MICROINSTRUCTION.
; 828 ; FIX LUUO AND MUUO TO ALLOW INTERRUPTS.
; 829 ; FIX B2D OFFSET TO SIGN-EXTEND E1 AFTER INTERRUPT. FINISH 105,
; 830 ; TO GET ENTIRE AR LOADED WHILE CLEARING MQ (ARL WAS HOLDING).
; 831 ; FIX KL PAGING TO USE VMA/1 INSTEAD OF VMA/AD WHEN RESTORING VMA
; 832 ; FROM VMA HELD OR COPIES THEREOF.
; 833 ; FIX UFA NOT TO ALWAYS GET UNDERFLOW ON NEGATIVE RESULTS.
; 834 ; SAME FIX AS EDIT 103 OF BREADBOARD. WHERE DID IT GET LOST?
; 835 ;105 FIX KL PAGING AS REVISED BY EDIT 103 TO CORRECTLY RESTORE
; 836 ; BR ON NO-MATCH CONDITION
; 837 ; ANOTHER FIX TO B2D, TO CLEAR MQ ON ENTRY. BUG INVOLVED GARBAGE
; 838 ; FROM MQ SHIFTING INTO ARX DURING DEVELOPMENT OF POWER OF TEN.
; 839 ;104 FIX BINARY TO DECIMAL CONVERSION, WHICH WAS NOT GOING TO CLEAN
; 840 ; ON FINDING AN INTERRUPT, AND ON RESTART WITH FPD SET, WAS NOT
; 841 ; SETTING UP SLEN. TSK, TSK. CORRECT CLEANUP FOR DEST FILL IN
; 842 ; MOVSRJ, WHICH WAS INCREMENTING BOTH SLEN AND DLEN, SHOULD
; 843 ; HAVE BEEN NEITHER. FIX JSR, BROKEN BY EDIT 103. JUMP MUST BE
; 844 ; TO E+1, NOT E.
; 845 ;103 CREATE CONDITIONAL ASSEMBLY FOR EXTENDED ADDRESSING. UNDER IT,
; 846 ; CREATE MEM FIELD DEFINITIONS, SUPPRESS SXCT.
; 847 ; SAVE A WORD IN JSR BY USING JSTAC IN COMMON WITH PUSHJ.
; 848 ; FORCE TIME FIELD IN CASES WHERE ASSEMBLER DEFAULT SCREWS UP.
; 849 ; ADD INTERRUPT TESTS IN KL PAGING CODE TO PREVENT HANGS, AND
; 850 ; REVISE PAGE FAIL WORD TO ELIMINATE THE NEW FAIL CODES.
; 851 ;102 ATTEMPT ANOTHER FIX OF MOVSRJ, CVTBDX FILL. EDIT 71 LOSES
; 852 ; DUE TO INCONSISTENCY -- DLEN UPDATE MUST NOT PRECEED CLEANUP.
; 853 ; CREATE CONDITIONAL ASSEMBLY SWITCHES TO CONTROL EXTENDED
; 854 ; INSTRUCTION SET, DOUBLE INTEGER ARITHMETIC, AND ADJBP. CHANGE
; 855 ; DEFAULT OF IMULI.OPT, WHICH CAN GET SIGN WRONG ON OVERFLOW.
; 856 ;101 FIX METER REQUEST CODE TO "ABORT INSTR" EVEN IF NOT SETTING
; 857 ; PI CYCLE. THIS SHOULD FIX OCCASIONAL LOSS OF TRAPS PROBLEM.
; 858 ;100 FIXES TO KL PAGING CODE TO PREVENT LOADING VMA FROM AD WHILE
; 859 ; REQUESTING PHYSICAL REF. FIX JSR TO PREVENT FM PARITY STOP
; 860 ; ON STORE TO AC. FIX 1777 TO FORCE RECIRCULATION OF AR/ARX,
; 861 ; EVEN IF MBOX RESP STILL TRUE.
; 862 ;77 FIX DDIV TO GET MQ SHIFTED LEFT ONE PLACE, WITHOUT INTRODUCING
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 1-15
; EDHIS.MIC[4,30] 13:59 4-Feb-85 REVISION HISTORY
; 863 ; AN EXTRA BIT, AT DDVX1. THIS INVOLVES INHIBITING ADA TO PREVENT
; 864 ; AD CRY0 FROM COMMING INTO MQ35.
; 865 ;76 FIX UFA TO ALLOW AN EBOX CYCLE BETWEEN FETCH AND NICOND WHEN
; 866 ; FRACTION SUM IS ZERO, AT UFA3.
; 867 ;75 PUT BACK INSTRUCTION "MBREL" REMOVED BY EDIT 64. NECESSARY TO
; 868 ; ENSURE THAT EBOX REQUEST FOR FETCH DOESN'T COME UP WHILE
; 869 ; REGISTER FUNCTION IS IN PROGRESS, WHICH WOULD CONFUSE MBOX ON
; 870 ; STARTING THE FETCH.
; 871 ;74 CHANGES TO EIS FOR NEW-SPEC AC USAGE. CHANGES TO KL PAGING FOR
; 872 ; INDIRECT, IMMEDIATE SECTION POINTERS
; 873 ;73 FIX JRA TO PREVENT WRITING AC WITH DATA FRESH FROM MEMORY (ALLOW
; 874 ; A CYCLE FOR PARITY CHECK). FIX DPB CODE TAKE ONLY 3 TICKS ON
; 875 ; RETURN FROM BYTEA, SO THAT CACHE DATA DOESN'T ARRIVE INTO AR
; 876 ; AND ARX UNTIL DPB1, WHEN THE BYTE HAS GOTTEN OUT TO MQ.
; 877 ;72 FIX DEFINITION OF SP MEM/UNPAGED TO INHIBIT VMA USER. FIX
; 878 ; PAGE FAIL CODE TO CHECK FOR VMA FETCH BEFORE LOOKING AT
; 879 ; INTERRUPT REQUEST. PROBLEM WAS INTERRUPT CONCURRENT WITH
; 880 ; PAGE FAIL ON JRSTF TO USER. PC FLAGS GOT RESTORED, BUT VMA
; 881 ; NEVER COPIED TO PC BECAUSE PAGE FAIL INHIBITED NICOND, AND
; 882 ; INTERRUPT ABORTED PAGE FAIL HANDLING TO LOAD PC.
; 883 ;71 DEFINE FMADR/AC4=6. FIX MOVFIL ROUTINE TO PUT AWAY UPDATED
; 884 ; LENGTH DIFFERENCE WHEN INTERRUPTED, THUS AVOIDING RANDOMNESS
; 885 ; IN MOVSRJ, CVTBDX. FIX CVTBD CALL TO MOVFIL TO PRESERVE SR.
; 886 ; CHANGE STMAC AND PIDONE FROM "FIN XFER" TO "FIN STORE", BECAUSE
; 887 ; STORE WAS IN PROGRESS, WHICH CAUSED FM WRITE IF AC REF, AND
; 888 ; GOT A PARITY ERROR DUE TO ADB/FM.
; 889 ;70 FIX PXCT 4,[POP ...], WHICH DIDN'T GET DEST CONTEXT SET FOR
; 890 ; STORE. MUST USE SR_100 TO SET IT.
; 891 ;67 FIX PROBLEM IN ADJBP BY WHICH BYTES/WORD WAS GETTING LOST
; 892 ; WHEN DIVIDE ROUTINE LOADED REMAINDER INTO BR. SOLVED BY
; 893 ; SAVING BYTES/WORD IN T1.
; 894 ;66 FIX KL PAGING TO RESTORE VMA ON TRAP, SAVE ADDRESS OF POINTER
; 895 ; CAUSING TRAP, AND NOT RESTORE ARX EXCEPT FOR BLT PAGE FAIL.
; 896 ; ALSO SET TIME PARAMETER ON ADB/FM TO ALLOW TIME FOR PARITY
; 897 ; CHECKING OF FM.
; 898 ;65 FIX KL PAGING CODE TO DO MBWAIT AFTER DETERMINING THAT PARITY
; 899 ; ERROR HAS NOT OCCURRED, SO AS TO GET CORRECT VMA TO SAVE.
; 900 ; CREATE SYMBOLS FOR KL PAGE FAIL CODES. PUT CONDITIONAL
; 901 ; ASSEMBLY AROUND IMULI OPTIMIZATION CODE, AND SXCT. CREATE
; 902 ; SYMBOL "OPTIONS" IN # FIELD FOR MICROCODE OPTIONS.
; 903 ;64 MICROCODE FOR KL10 PAGING (PAGE REFILL, MAP INSTR)...
; 904 ; REMOVE UNNECESSARY INSTRUCTION MBREL: FROM SWEEP AND APRBO
; 905 ; COSMETIC CHANGES TO KEEP COMMENTS & MACRO DEFINITIONS FROM
; 906 ; OVERFLOWING LINE OF LISTING, AND INSERTION OF CONDITIONAL
; 907 ; ASSEMBLY CONTROL OF LONG FLOATING POINT INSTRUCTIONS.
; 908 ;63 IN MTR REQUEST ROUTINE, DON'T DISMISS WHEN PI CYCLE HASN'T
; 909 ; BEEN SET.
; 910 ;62 FIX RDMTR CODE TO PUT 35 IN SC BEFORE GOING TO DMOVEM CODE.
; 911 ;61 FIX PIIBP ROUTINE TO USE CALL.M INSTEAD OF SPEC/CALL,
; 912 ; WHICH GETS OVERRIDDEN BY P_P-S... IN MTR REQUEST SERVICE
; 913 ; ROUTINE, DON'T SET PI CYCLE UNLESS REQUEST IS FOR VECTOR.
; 914 ;60 FIX DATAO PAG TO DO MB WAIT AFTER STORING EBOX ACCT AND
; 915 ; BEFORE CHANGING VMA.
; 916 ;57 RE-CODE USES OF A@, B@ TO USE VMA/1, RATHER THAN VMA/AD,
; 917 ; IN ORDER TO GET CORRECT CONTEXT ON INDIRECT WORD. SEE MCL4
; 918 ;56 FIX SECOND PART OF PICYCLE (TAG NEXT:) TO ENSURE THAT
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 1-16
; EDHIS.MIC[4,30] 13:59 4-Feb-85 REVISION HISTORY
; 919 ; PC+1 INH, KERNEL CYCLE, ETC REMAIN UP DURING 2ND PART.
; 920 ; ALSO CHANGE SPEC/FLAG CTL FOR ECO 1261, WHICH REQUIRES
; 921 ; #07 TO BE OPPOSITE OF #04 TO GENERATE SCD LEAVE USER.
; 922 ;55 FIX SPEC INSTR/SET PI CYCLE TO INHIBIT INTERRUPTS
; 923 ; (IN PARTICULAR, METER UPDATE REQUESTS). MAKE SURE VALID
; 924 ; DATA SAVED ON IO PAGE FAIL AND PARITY ERRORS. REMOVE
; 925 ; BACKWARDS BLT... IT BROKE TOO MANY PROGRAMS.
; 926 ;54 FIX OVERFLOW CHECK IN IMULI OPTIMIZATION TO INH CRY 18
; 927 ; UPDATE TO USE CONDITIONAL ASSEMBLY IN MICRO VERS 20.
; 928 ;53 FIX T1,T2 PARAMETERS ON BYTE DISP, SIGNS DISP
; 929 ;52 CORRECT SHIFT AMOUNT FOR IMULI OPTIMIZATION, AND FIX MACRO
; 930 ; DEFINITIONS FOR SET SR?, WHICH WERE ALWAYS SETTING SR0.
; 931 ;51 OPTIMIZE IMULI OF TWO POSITIVE OPERANDS (TO SPEED UP SUBSCRIPT
; 932 ; CALCULATIONS) BY TAKING ONLY 9 MULTIPLY STEPS AND STARTING
; 933 ; NEXT INSTRUCTION FETCH EARLIER. OPTIMIZATION CAN BE REMOVED
; 934 ; BY COMMENTING OUT TWO INSTRUCTIONS AT IMULI, AND ONE FOLLOWING
; 935 ; IMUL. ALSO FIX APRBI/UVERS TO KEEP SERIAL # OUT OF LH.
; 936 ;50 INTRODUCE SKIP/FETCH AND CODE IN PAGE FAIL RECOVERY TO LOAD
; 937 ; PC FROM VMA IF PAGE FAIL OCCURED ON FETCH, BECAUSE NICOND
; 938 ; CYCLE, WHICH SHOULD HAVE LOADED PC, GETS INHIBITED BY INSTR 1777
; 939 ; ALSO INCLUDE EXTENDED INSTRUCTION SET.
; 940 ;47 UNDO XCT CHANGES OF EDIT 46, WHICH BROKE XCT DUE TO INSUFFICIENT
; 941 ; TIME FOR DRAM HOLD BEFORE USING "A READ". ALSO FIX VECTOR
; 942 ; INTERRUPT CODE TO LOOK AT CORRECT BITS FOR CONTROLLER NUMBER.
; 943 ;46 FOLLOW-ON TO EDIT 45, SAVING 2 WORDS AND A CYCLE
; 944 ; ALSO MOVE JRST TO 600, JFCL TO 700, UUO'S TO 100X AS PREPARATION
; 945 ; FOR EXTENDED INSTRUCTION SET
; 946 ;45 FIX SXCT TO LOOK AT AC FIELD OF SXCT, NOT SUBJECT INSTRUCTION,
; 947 ; WHEN DECIDING WHETHER TO USE BASE-TYPE ADDRESS CALCULATION.
; 948 ;44 FIX PAGE FAIL LOGIC TO WORK FOR EITHER PAGE FAIL OR PARITY
; 949 ; ERROR. EDITS 42 AND 43 BOTH WRONG. ALSO CORRECT RACE IN
; 950 ; WRITING PERFORMANCE ANALYSIS ENABLES TO PREVENT SPURIOUS COUNTS.
; 951 ;43 CORRECT USE OF PF DISP BY EDIT 42. LOW BITS ARE INVERTED
; 952 ;42 FIX BUGS INTRODUCED BY EDIT 40, WHICH MADE FLTR OF 1B0 HANG
; 953 ; TRYING TO NEGATE IT, AND FIX UP EXPONENT CORRECTION ON LONG
; 954 ; SHIFT LEFT. ALSO PUT IN CODE TO HANDLE PARITY ERROR PAGE
; 955 ; FAILURES, AND SET TIME CONTROLS ON 43-47.
; 956 ;41 REWRITE OF VECTOR INTERRUPT PROCESSING TO MAKE DTE VECTORS
; 957 ; GO TO 142+8N, WHERE N IS DTE#. RH20 GO TO PROGRAMMED ADDRESS
; 958 ; IN EPT, EXTERNAL DEVICES USE EXEC VIRTUAL ADDRESSES.
; 959 ;40 IMPROVEMENTS TO FLOATING NORMALIZATION TO MAKE LONG SHIFTS
; 960 ; FASTER, PRIMARILY TO HELP FLTR
; 961 ;37 FIX FLOATING DIVIDE SO THAT THE TRUNCATED FORM OF A NEGATIVE
; 962 ; QUOTIENT IS EQUAL TO THE HIGH-ORDER PART OF THE INFINITE-
; 963 ; PRECISION QUOTIENT. SEE COMMENTS IN THE CODE. ALSO BUM
; 964 ; A CYCLE OUT OF FLOATING DIVIDE BY STARTING THE NORMALIZE
; 965 ; WHILE MOVING THE QUOTIENT INTO AR.
; 966 ; SEVERAL CHANGES TO MAKE TRACKS FEATURE WORK
; 967 ;36 FIX CONO MTR TO PUT DATA ON BOTH HALVES, SO PI CAN SEE PIA
; 968 ;35 FIX CONI PI TO READ BACK WRITE EVEN PARITY ENABLES
; 969 ;34 FIX BLT USE OF SR, SO NO CORRECTION OF ARX NECESSARY
; 970 ;33 FIX PAGE TABLE REFERENCES TO FORCE UNPAGED REF. FIX TRAP
; 971 ; TO SET PC+1 INHIBIT.
; 972 ;32 CORRECT SETTING OF SC FOR SHIFTING METER COUNTERS, TO GET
; 973 ; 12 BITS UNUSED AT RIGHT WHEN IT GETS TO CORE.
; 974 ;31 RECODE ASH AND ASHC TO SAVE SPACE
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 1-17
; EDHIS.MIC[4,30] 13:59 4-Feb-85 REVISION HISTORY
; 975 ;30 FIX JFFO TO SHIFT AR CORRECTLY AT JFFO2. BUM ADJSP TO USE
; 976 ; STMAC FOR UPDATING PDL POINTER.
; 977 ;27 FIX CONI PAG TO READ EBUS. CORRECT DEFINITIONS OF MBOX
; 978 ; REGISTER FUNCTIONS, WHICH HAD BITS 0 AND 3 INVERTED.
; 979 ;26 FIX DEFINITIONS OF DIAG FUNC CONO MTR AND CONO TIM, WHICH
; 980 ; WERE REVERSED
; 981 ;25 FIX DECODING OF PHYSICAL DEVICE NUMBER IN PI FUNCTION CODE
; 982 ; AND RE-CODE JFCL FOR FEWER MICROWORDS
; 983 ;24 FIX JFFO TO SHIFT ON FIRST 6-BIT TEST STEP, AND JRSTF TO
; 984 ; KEEP E AND XR DISTINCT. ALSO SET LOAD-ENABLE BITS IN
; 985 ; DATAI PAG, WORD.
; 986 ;23 FIX CONO PI, TO HOLD AR ONTO EBUS THRU REL EBUS, BECAUSE
; 987 ; PI BOARD DELAYS CONO PI TO GET CONO SET EQUIVALENT.
; 988 ;22 MORE JFCL FIXES. MUST USE FLAG CTL/JFCL WHILE CLEARING BITS,
; 989 ; AS WELL AS WHILE TESTING THEM. BUM A WORD OUT OF JFFO BY
; 990 ; MAKING THE SIXBIT COUNT NEGATIVE. CHANGES SO SHIFT SUBR
; 991 ; RETURNS 2, BYTEA 1. FIX SETMB TO STORE BACK AND FETCH.
; 992 ;21 RE-WRITE JFCL TO KEEP LOW OPCODE BITS OUT OF AR0-1, BECAUSE
; 993 ; PC00 GETS PROPAGATED LEFT TO ADA -1 AND -2.
; 994 ;20 FIX BLT TO LOAD BR WITH SRC-DST ADDR
; 995 ; ALSO SET TIME PARAMETERS ON CONDITIONAL FETCH FUNCTIONS
; 996 ;17 CHANGE SWEEP ONE PAGE TO PUT PAGE # IN E, RATHER THAN ADDR.
; 997 ; ALSO CHANGE COND/FM WRITE TO MATCH ECO #1068.
; 998 ;16 FIX JUMP FETCH MACRO TO LOAD VMA FROM PC+1 (TEST SATISFIED
; 999 ; OVERRIDES THIS TO HOLD VMA). ALSO BUM ONE MICROWORD FROM MUUO.
; 1000 ;15 INCLUDE PAGE FAIL DISP IN DISP/ FIELD
; 1001 ; ALSO MAKE MUUO STORE PROCESS CONTEXT WORD AT 426, AND SETUP
; 1002 ; PCS FROM PC EXTENSION, CWSX FROM SXCT
; 1003 ;14 FIX DEFINITIONS OF SKIP/IO LEGAL, AC#0, SC0, EVEN PAR
; 1004 ; ALSO FIX DATAO PAG, TO SEND LH DATA ON BOTH HALVES OF EBUS
; 1005 ;13 ALIGN SETEBR SO CALL TO SHIFT RETURNS CORRECTLY
; 1006 ;12 MAKE SURE AD COPIES AR DURING DATAO, CONO, AND CLEAR AR AT
; 1007 ; SET DATAI TIME.
; 1008 ;11 FIXES TO CONTINUE CODE SO CONSOLE WORKS, AND CORRECTIONS TO
; 1009 ; PROTECTED DEP/EXAM SO PROTECTION PROTECTS.
; 1010 ;10 FIX A READ MACRO TO VMA/PC+1. AD OVERRIDES UNLESS DRAM A=1
; 1011 ;07 RE-WRITE OF PI CYCLE CODE TO RECOGNIZE NEW EBUS SPEC.
; 1012 ;06 FIX DEFINITIONS OF SKIPS 40-57 BY COMPLEMENTING 3 LOW ORDER BITS
; 1013 ; FIX MULSUB TO CORRESPOND TO NEW CRA LOGIC
; 1014 ;05 FIX EBUS CTL DEFINITIONS TO GET F01 CORRECT. CORRECT FLAG CTL
; 1015 ; DEFINITIONS TO PREVENT LEAVE USER WHEN NOT WANTED, AND FIX
; 1016 ; JRST/JFCL TO HAVE FLAGS IN AR WHEN NEEDED.
; 1017 ;04 FIX RETURNS FROM MULSUB, PUT BETTER COMMENTS ON SNORM CODE,
; 1018 ; IMPROVE SNORM ALGORITHM TO MINIMIZE WORST-CASE TIME.
; 1019 ;03 FIX DISPATCH ADDRESS PROBLEMS, MOSTLY JRST/JFCL AND UUO'S.
; 1020 ;02 CHANGES PER INSTRUCTION SET REVIEW -- DELETE USE OF BIT12 OF
; 1021 ; BYTE POINTERS, CHANGE BLT TO PUT FINAL SRC,DST ADDRESSES IN AC,
; 1022 ; MAKE TRUNCATE FORM FLOATING POINT REALLY TRUNCATE, ELIMINATE
; 1023 ; LOCAL JSYS SUPPORT, DELETE PXCT OPCODE (XCT W/ NON-ZERO AC IN
; 1024 ; EXEC MODE), LUUO'S GO TO 40/41 OF CURRENT SPACE.
; 1025 ;01 UPDATES FOR .TITLE AND .TOC PSEUDO OPS,
; 1026 ; AND VARIOUS CHANGES FOR PROTO HARDWARE
; 1027 ;00 CREATION, BASED ON BREADBOARD AS OF EDIT 66
; 1028 .BIN
; 1029
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 1
; DEFINE.MIC[4,30] 17:12 9-Aug-84 CONDITIONAL ASSEMBLY VARIABLE DEFINITIONS
; 1030 .TOC "CONDITIONAL ASSEMBLY VARIABLE DEFINITIONS"
; 1031 .NOBIN
; 1032
; 1033 ; [COST ESTIMATES IN BRACKETS INDICATE NUMBER OF ADDITIONAL
; 1034 ; MICROINSTRUCTIONS REQUIRED BY TURNING ON THE FEATURE SWITCH]
; 1035
; 1036 .DEFAULT/TRACKS=0 ;1 ENABLES STORING PC AFTER EVERY INSTRUCTION,
; 1037 ; & CREATES DATAI/O PI TO READ/SETUP PC BUFFER
; 1038 ;ADDRESS. [COST = 21 WDS]
; 1039
; 1040 .DEFAULT/OP.CNT=0 ;1 ENABLES CODE TO BUILD A HISTOGRAM IN CORE
; 1041 ; COUNTING USES OF EACH OPCODE IN USER & EXEC
; 1042
; 1043 .DEFAULT/OP.TIME=0 ;1 ENABLES CODE TO ACCUMULATE TIME SPENT BY
; 1044 ; EACH OPCODE
; 1045
; 1046 .DEFAULT/SO.CNT=0 ;SECOND ORDER COUNTING IN 128K STARTING AT LOC
; 1047 ; 400000 NOT DEBUGED [COST = 28 WDS]
; 1048
; 1049 .DEFAULT/SO2.CNT=0 ;SECOND ORDER COUNTING IN 128K STARTING AT LOC
; 1050 ; PRESENTED AT START DOES ONE MORE ADD THAN
; 1051 ; SO.CNT AND HENCE AN INSTRUCTION TAKES
; 1052 ; 120 NS LONGER THAN SO.CNT [COST = 28 WDS]
; 1053
; 1054 .DEFAULT/PAGCNT=0 ;Enable code to count entries into the PFH and
; 1055 ; number of DATAO PAGs with bit 2 set. [Cost =
; 1056 ; 6 words] [327]
; 1057
; 1058 .DEFAULT/FPLONG=1 ;1 ENABLES KA-STYLE DOUBLE PRECISION FLOATING
; 1059 ;POINT INSTRUCTIONS: FADL, FSBL, FMPL, FDVL,
; 1060 ; UFA, DFN. [COST = 49 WDS]
; 1061
; 1062 .DEFAULT/MULTI=0 ;1 IF MULTIPROCESSOR SYSTEM, TO SUPPRESS CACHE
; 1063 ;ON UNPAGED REF'S. PAGED REF'S ARE UP TO EXEC.
; 1064
; 1065 .DEFAULT/KLPAGE=0 ;1 ENABLES KL-MODE PAGING. [COST = 85 WDS]
; 1066
; 1067 .DEFAULT/SHIFT.MUUO=0 ;ENABLES A DIFFERENT MUUO FORMAT FOR MODEL A
; 1068 ;THAT IS SLIGHTLY CLOSER TO THE XADDR FORMAT
; 1069 ;EXPECTED TO BE USED IN CONJUNCTION WITH LONG.PC
; 1070 ;BUT THEY DO NOT DEPEND ON EACH OTHER
; 1071
; 1072 .DEFAULT/MODEL.B=0 ;1 INDICATES EXTENDED ADDRESSING HARDWARE,
; 1073 ;PRIMARILY 2K (RATHER THAN 1280) CONTROL RAM,
; 1074 ;NEW MCL, CTL, AND APR BOARDS.
; 1075
; 1076 .DEFAULT/BLT.PXCT=0 ;1ENABLES SPECIAL BLT CODE FOR EXTENDED ADDRESSING
; 1077 ;THIS IS SUPPOSED TO GO AWAY IN THE FUTURE
; 1078 ;WHEN PXCT OF BLT IS NO LONGER USED BY TOPS-20
; 1079 ;THIS SHOULD ONLY BE USED BY KLX XADDR MICROCODE
; 1080 ;[COST 12 WORDS]
; 1081
; 1082 .IF/KLPAGE
;;1083 .IFNOT/MODEL.B
;;1084 .SET/XADDR=0 ;CAN'T DO EXTENDED ADDRESSING WITHOUT MODEL B
;;1085 .set/extexp=0 ;No room in TOPS20 Model A machine for extended exp.
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 1-1
; DEFINE.MIC[4,30] 17:12 9-Aug-84 CONDITIONAL ASSEMBLY VARIABLE DEFINITIONS
; 1086 .ENDIF/MODEL.B
; 1087
;;1088 .IFNOT/KLPAGE
;;1089 .SET/XADDR=0 ;CAN'T HAVE EXTENDED ADDRESSING WITHOUT KL PAGE
; 1090 .ENDIF/KLPAGE
; 1091
; 1092 .DEFAULT/IMULI.OPT=0 ;1 ENABLES OPTIMIZATION OF IMULI TO TAKE ONLY
; 1093 ;NINE MULTIPLY STEPS [COST = 3 WDS]
; 1094
; 1095 .IF/MODEL.B ; [COST = 19 WDS]
; 1096 .SET/SXCT=0 ;DONT NEED SXCT WITH EXTENDED ADDRESSING
; 1097 ;CAN'T DO IT IN MODEL B HARDWARE
; 1098 .ENDIF/MODEL.B
; 1099 .DEFAULT/SXCT=0 ;1 ENABLES SPECIAL XCT INSTR, WHICH ALLOWS
; 1100 ; DIAGNOSTICS TO GENERATE LARGE ADDRESSES.
; 1101
; 1102
; 1103 .DEFAULT/SNORM.OPT=0 ;1 ENABLES FASTER NORMALIZATION OF SINGLE-
; 1104 ; PRECISION RESULTS WHICH HAVE SEVERE LOSS OF
; 1105 ; SIGNIFICANCE [COST = 4 WDS]
; 1106
;;1107 .IFNOT/MODEL.B
;;1108 .SET/PUSHM=0 ;CODE ONLY WORKS FOR MODEL B
; 1109 .ENDIF/MODEL.B
; 1110
; 1111 .DEFAULT/PUSHM=0 ;ENABLES THE PUSHM AND POPM INSTRUCTIONS
; 1112 ; [COST = ??? WDS]
; 1113 .DEFAULT/EXTEND=1 ;1 ENABLES EXTENDED INSTRUCTION SET
; 1114 ; [COST = 290 WDS]
; 1115
; 1116 .DEFAULT/DBL.INT=1 ;1 ENABLES DOUBLE INTEGER INSTRUCTIONS
; 1117 ; [COST = 59 WDS]
; 1118
; 1119 .DEFAULT/ADJBP=1 ;1 ENABLES ADJUST BYTE POINTER
; 1120 ; [COST = 24 WDS]
; 1121
; 1122 .DEFAULT/RPW=1 ;1 ENABLES READ-PAUSE-WRITE CYCLES FOR
; 1123 ;NON-CACHED REFERENCES BY CERTAIN INSTRUCTIONS.
; 1124 ; [COST = 0]
; 1125
; 1126 .DEFAULT/WRTST=0 ;1 ENABLES WRITE-TEST CYCLES AT AREAD TIME FOR
; 1127 ;INSTRUCTIONS LIKE MOVEM AND SETZM. [COST = 0]
; 1128
; 1129 .DEFAULT/BACK.BLT=0 ;1 ENABLES BLT TO DECREMENT ADDRESSES ON EACH
; 1130 ;STEP IF E < RH(AC). BREAKS MANY PROGRAMS.
; 1131 ; [COST = 9 WDS]
; 1132
;;1133 .IF/TRACKS ;SETUP CONTROL FOR COMMON CODE
;;1134 .SET/INSTR.STAT=1
; 1135 .ENDIF/TRACKS
; 1136
;;1137 .IF/OP.CNT
;;1138 .SET/INSTR.STAT=1 ;ENABLE COMMON CODE, ERROR IF TRACKS TOO
; 1139 .ENDIF/OP.CNT
; 1140
;;1141 .IF/OP.TIME
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 1-2
; DEFINE.MIC[4,30] 17:12 9-Aug-84 CONDITIONAL ASSEMBLY VARIABLE DEFINITIONS
;;1142 .SET/INSTR.STAT=1 ;ERROR IF TRACKS OR OP.CNT ALSO SET
; 1143 .ENDIF/OP.TIME
; 1144
;;1145 .IF/SO.CNT
;;1146 .SET/INSTR.STAT=1
; 1147 .ENDIF/SO.CNT
; 1148
;;1149 .IF/SO2.CNT
;;1150 .SET/INSTR.STAT=1
; 1151 .ENDIF/SO2.CNT
; 1152
; 1153 .DEFAULT/INSTR.STAT=0 ;IF NO STATISTICS, TURN OFF COMMON CODE
; 1154
;;1155 .IF/INSTR.STAT
;;1156 .SET/NONSTD=1 ;STATISTICS CODE IS NONSTANDARD
;;1157 .SET/TRXDEF=1 ;Make sure TRX registers get defined [327]
; 1158 .ENDIF/INSTR.STAT
; 1159
;;1160 .IF/PAGCNT
;;1161 .SET/NONSTD=1 ;All statistics are nonstandard
;;1162 .SET/TRXDEF=1 ;We need the TRX registers
; 1163 .ENDIF/PAGCNT
; 1164
; 1165 .DEFAULT/TRXDEF=0 ;Normally no TRX registers needed
; 1166
; 1167 .DEFAULT/LONG.PC=0 ;LONG PC FORMAT [COST 9 WORDS 11 WORDS IF XADDR]
; 1168
; 1169 .DEFAULT/EPT540=0 ;PUT EPT AND UPT SECTION TABLES AT 540 IF ON
; 1170 ; 440 IF OFF
; 1171
; 1172 .DEFAULT/DIAG.INST=0 ;UNSUPPORTED DIAGNOSTIC MICROCODE
; 1173
;;1174 .IF/DIAG.INST
;;1175 .SET/NONSTD=1 ;NONSTANDARD MICROCODE
; 1176 .ENDIF/DIAG.INST
; 1177
; 1178 .DEFAULT/NONSTD=0 ;NONSTANDARD MICROCODE IS NORMALLY OFF
; 1179 .DEFAULT/SMP=1 ;[216]1 IF SYMMETRIC MULTIPROCESSOR
; 1180 ;SYSTEM.
; 1181 ;TO ENABLE RPW ON DPB INSTRUCTION.
; 1182 ;[COST=9 WORDS if not XADDR, more if XADDR]
; 1183 .DEFAULT/OWGBP=0 ;[264]
; 1184 .DEFAULT/IPA20=0 ;[264]
; 1185 .DEFAULT/NOCST=0 ;[264]
; 1186 .DEFAULT/CST.WRITE=1 ;[314] Enable CST writable bit
; 1187 .DEFAULT/BIG.PT=1 ;[333][347] Special code for big page table and Keep bit
; 1188 .DEFAULT/DDT.BUG=0 ;[346] If on, enable APRID hack to move bit 23
; 1189 .DEFAULT/GFTCNV=1 ;[273] GFLOAT CONVERSION INST.
; 1190
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 2
; DEFINE.MIC[4,30] 17:12 9-Aug-84 HOW TO READ THE MICROCODE -- FORMATS & CONSTRUCTS
; 1191 .TOC "HOW TO READ THE MICROCODE -- FORMATS & CONSTRUCTS"
; 1192
; 1193 ;(1) FIELD DEFINITIONS
; 1194 ; THESE OCCUR AT THE BEGINNING OF THE LISTING, IN THE SOURCE FILE
; 1195 ; DEFINE.MIC (CONTROL AND DISPATCH RAM DEFINITIONS).
; 1196 ; THEY HAVE THE FORM:
; 1197 ; SYMBOL/=<L:R>M,J
; 1198 ;ANOTHER FORM ACCEPTED BY THE ASSEMBLER (FOR HISTORIC REASONS) IS:
; 1199 ; SYMBOL/=J,K,R,M ;THIS FORM HAS BEEN REMOVED FROM THIS CODE
; 1200 ; THE PARAMETER (J) IS MEANINGFUL ONLY WHEN "D" IS SPECIFIED
; 1201 ; AS THE DEFAULT MECHANISM, AND IN THAT CASE, GIVES THE DEFAULT VALUE OF
; 1202 ; THE FIELD IN OCTAL.
; 1203 ; THE PARAMETER (K) GIVES THE FIELD SIZE IN (DECIMAL) NUMBER
; 1204 ; OF BITS. THIS IS USED ONLY IN THE OUTDATED FORMAT.
; 1205 ; THE PARAMETER (L) GIVES THE BIT POSITION OF THE LEFTMOST BIT
; 1206 ;IN THE FIELD. THE SAME METHOD IS USED AS FOR (R) BELOW.
; 1207 ; THE PARAMETER (R) GIVES THE FIELD POSITION IN DECIMAL
; 1208 ; AS THE BIT NUMBER OF THE RIGHTMOST BIT OF THE FIELD. BITS ARE NUMBERED
; 1209 ; FROM 0 ON THE LEFT. NOTE THAT THE POSITION OF BITS IN THE MICROWORD
; 1210 ; SHOWN IN THE LISTING BEARS NO RELATION TO THE ORDERING OF BITS IN THE
; 1211 ; HARDWARE MICROWORD, WHERE FIELDS ARE OFTEN BROKEN UP AND SCATTERED.
; 1212 ; THE PARAMETER (M) IS OPTIONAL, AND SELECTS A DEFAULT
; 1213 ; MECHANISM FOR THE FIELD. THE LEGAL VALUES OF THIS PARAMETER ARE THE
; 1214 ; CHARACTERS "D", "T", "P", OR "+".
; 1215 ; "D" MEANS (J) IS THE DEFAULT VALUE OF THE FIELD IF NO EXPLICIT
; 1216 ; VALUE IS SPECIFIED.
; 1217 ; "T" IS USED ON THE TIME FIELD TO SPECIFY THAT THE VALUE OF THE
; 1218 ; FIELD DEPENDS ON THE TIME PARAMETERS SELECTED FOR OTHER FIELDS.
; 1219 ; THE VALUE OF A FIELD WITH THIS SPECIFICATION DEFAULTS TO THE
; 1220 ; MAX OF <SUM OF THE T1 PARAMETERS DEFINED FOR FIELD/VALUES
; 1221 ; SPECIFIED IN THIS MICROINSTRUCTION>, <SUM OF THE T2 PARAMETERS
; 1222 ; FOR THIS MICROINSTRUCTION>, <J PARAMETER OF THIS FIELD>.
; 1223 ; WITHIN THE KL10 MICROCODE, T1 PARAMETERS ARE USED TO SPECIFY
; 1224 ; FUNCTIONS WHICH DEPEND ON THE ADDER SETUP TIME, AND T2 PARAMETERS
; 1225 ; ARE USED FOR FUNCTIONS WHICH REQUIRE ADDITIONAL TIME FOR CORRECT
; 1226 ; SELECTION OF THE NEXT MICROINSTRUCTION ADDRESS.
; 1227 ; "P" IS USED ON THE PARITY FIELD TO SPECIFY THAT THE VALUE OF THE
; 1228 ; FIELD SHOULD DEFAULT SUCH THAT PARITY OF THE ENTIRE WORD
; 1229 ; IS ODD. IF THIS OPTION IS SELECTED ON A FIELD WHOSE SIZE (K) IS
; 1230 ; ZERO, THE MICRO ASSEMBLER WILL ATTEMPT TO FIND A BIT SOMEWHERE
; 1231 ; IN THE WORD FOR WHICH NO VALUE IS SPECIFIED OR DEFAULTED.
; 1232 ; "+" IS USED ON THE JUMP ADDRESS FIELD TO SPECIFY THAT THE DEFAULT
; 1233 ; JUMP ADDRESS IS THE ADDRESS OF THE NEXT INSTRUCTION ASSEMBLED (NOT,
; 1234 ; IN GENERAL, THE CURRENT LOCATION +1).
; 1235 ; IN GENERAL, A FIELD CORRESPONDS TO THE SET OF BITS WHICH PROVIDE
; 1236 ; SELECT INPUTS FOR MIXERS OR DECODERS, OR CONTROLS FOR ALU'S.
; 1237 ; EXAMPLES:
; 1238 ; AR/=<24:26>D,0 OR AR/=0,3,26,D
; 1239 ; THE MICROCODE FIELD WHICH CONTROLS THE AR MIXER (AND THEREFORE
; 1240 ; THE DATA TO BE LOADED INTO AR ON EACH EBOX CLOCK) IS THREE BITS WIDE
; 1241 ; AND THE RIGHTMOST BIT IS SHOWN IN THE LISTING AS BIT 26 OF THE
; 1242 ; MICROINSTRUCTION. IF NO VALUE IS SPECIFICALLY REQUESTED FOR THE FIELD,
; 1243 ; THE MICROASSEMBLER WILL ENSURE THAT THE FIELD IS 0.
; 1244 ; AD/=<12:17> OR AD/=0,6,17
; 1245 ; THE FIELD WHICH CONTROLS THE AD IS 6 BITS WIDE, ENDING ON
; 1246 ; BIT 17. THE FOURTH PARAMETER OF THE FIELD IS OMITTED, SO THE FIELD
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 2-1
; DEFINE.MIC[4,30] 17:12 9-Aug-84 HOW TO READ THE MICROCODE -- FORMATS & CONSTRUCTS
; 1247 ; IS AVAILABLE TO THE MICROASSEMBLER (IF NO VALUE IS EXPLICITLY
; 1248 ; CALLED OUT FOR THE FIELD) FOR MODIFICATION TO ENSURE ODD PARITY IN THE
; 1249 ; ENTIRE WORD.
; 1250 ;
; 1251 ;(2) VALUE DEFINITIONS
; 1252 ; FOLLOWING A FIELD DEFINITION, SYMBOLS MAY BE CREATED IN THAT
; 1253 ; FIELD TO CORRESPOND TO VALUES OF THE FIELD. THE FORM IS:
; 1254 ; SYMBOL=N,T1,T2
; 1255 ; "N" IS, IN OCTAL, THE VALUE OF SYMBOL WHEN USED IN THE FIELD.
; 1256 ; T1 AND T2 ARE OPTIONAL, AND SPECIFY PARAMETERS IN THE TIME FIELD
; 1257 ; CALCULATION FOR MICROINSTRUCTIONS IN WHICH THIS FIELD/SYMBOL IS USED.
; 1258 ; THE MICROASSEMBLER COMPUTES THE SUMS OF ALL THE T1'S AND ALL THE T2'S
; 1259 ; SPECIFIED FOR FIELD/SYMBOL SPECIFICATIONS IN A WORD, AND USES THE MAX
; 1260 ; OF THE TWO SUMS AS THE DEFAULT VALUE FOR THE FIELD WHOSE DEFAULT
; 1261 ; MECHANISM IS "T". EXAMPLES:
; 1262 ; AD/=<12:17> ;FIELD DEFINITION IN WHICH FOLLOWING SYMBOLS EXIST
; 1263 ; XOR=31
; 1264 ; A+B=6,1
; 1265 ; HERE THE SYMBOLS "XOR" AND "A+B" ARE DEFINED FOR THE "AD" FIELD.
; 1266 ; TO THE ASSEMBLER, THEREFORE, WRITING "AD/XOR" MEANS PUT THE VALUE 31
; 1267 ; INTO THE 6-BIT FIELD ENDING ON BIT 17 OF THE MICROWORD. THE SYMBOLS
; 1268 ; ARE CHOSEN FOR MNEMONIC SIGNIFICANCE, OF COURSE, SO ONE READING
; 1269 ; THE MICROCODE WOULD INTERPRET "AD/XOR" AS "THE OUTPUT OF AD SHALL BE THE
; 1270 ; EXCLUSIVE OR OF ITS A AND B INPUTS". SIMILIARLY, "AD/A+B" IS READ AS
; 1271 ; "AD PRODUCES THE SUM OF A AND B". THE SECOND PARAMETER IN THE DEFINITION
; 1272 ; OF "A+B" IS A CONTROL TO THE MICRO ASSEMBLER'S TIME-FIELD CALCULATION,
; 1273 ; WHICH TELLS THE ASSEMBLER THAT THIS OPERATION TAKES LONGER THAN THE
; 1274 ; BASIC CYCLE, AND THEREFORE THAT THE TIME FIELD SHOULD BE INCREASED.
; 1275 ; AR/=<24:26>D,0 ;FIELD DEFINITION FOR FOLLOWING SYMBOLS
; 1276 ; AR=0
; 1277 ; AD=2
; 1278 ; HERE THE SYMBOLS "AR" AND "AD" ARE DEFINED FOR THE FIELD NAMED
; 1279 ; "AR", WHICH CONTROLS THE AR MIXER. WE COULD WRITE AR/AR TO MEAN THAT
; 1280 ; THE AR MIXER SELECT INPUTS WOULD BE 0, WHICH IN THE
; 1281 ; HARDWARE SELECTS THE AR OUTPUT FOR RECIRCULATION TO THE REGISTER. IN
; 1282 ; PRACTICE, HOWEVER, WE WANT THIS TO BE THE DEFAULT CASE, SO THAT AR
; 1283 ; DOES NOT CHANGE UNLESS WE SPECIFICALLY REQUEST IT, SO THE FIELD
; 1284 ; DEFINITION SPECIFIES 0 AS THE DEFAULT VALUE OF THE FIELD. IF WE
; 1285 ; WANT AR LOADED FROM THE AD OUTPUT, WE WRITE "AR/AD" TO SET THE
; 1286 ; MIXER SELECTS TO PASS THE AD OUTPUT INTO THE AR.
; 1287 ;
; 1288 ;(3) LABEL DEFINITIONS
; 1289 ; A MICRO INSTRUCTION MAY BE LABELLED BY A SYMBOL FOLLOWED BY COLON
; 1290 ; PRECEDING THE MICROINSTRUCTION DEFINITION. THE ADDRESS OF THE
; 1291 ; MICROINSTRUCTION BECOMES THE VALUE OF THE SYMBOL IN THE FIELD NAMED "J".
; 1292 ; EXAMPLE:
; 1293 ; FOO: J/FOO
; 1294 ; THIS IS A MICROINSTRUCTION WHOSE "J" FIELD (JUMP ADDRESS) CONTAINS
; 1295 ; THE VALUE "FOO". IT ALSO DEFINES THE SYMBOL "FOO" TO BE THE ADDRESS
; 1296 ; OF ITSELF. THEREFORE, IF EXECUTED BY THE MICROPROCESSOR, IT WOULD
; 1297 ; LOOP ON ITSELF.
; 1298 ;
; 1299 ;(4) COMMENTS
; 1300 ; A SEMICOLON ANYWHERE ON A LINE CAUSES THE REST OF THE LINE
; 1301 ; TO BE IGNORED BY THE ASSEMBLER. THIS TEXT IS AN EXAMPLE OF COMMENTS.
; 1302 ;
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 2-2
; DEFINE.MIC[4,30] 17:12 9-Aug-84 HOW TO READ THE MICROCODE -- FORMATS & CONSTRUCTS
; 1303 ;(5) MICROINSTRUCTION DEFINITION
; 1304 ; A WORD OF MICROCODE IS DEFINED BY SPECIFYING A FIELD NAME,
; 1305 ; FOLLOWED BY SLASH (/), FOLLOWED BY A VALUE. THE VALUE MAY BE A
; 1306 ; SYMBOL DEFINED FOR THAT FIELD, AN OCTAL DIGIT STRING, OR A DECIMAL
; 1307 ; DIGIT STRING (DISTINGUISHED BY THE FACT THAT IT CONTAINS "8" AND/OR
; 1308 ; "9" AND/OR IS TERMINATED BY A PERIOD). SEVERAL FIELDS MAY BE SPECIFIED
; 1309 ; IN ONE MICROINSTRUCTION BY SEPARATING FIELD/VALUE SPECIFICATIONS WITH
; 1310 ; COMMAS. EXAMPLE:
; 1311 ; ADB/BR,ADA/AR,AD/A+B,AR/AD
; 1312 ; THE FIELD NAMED "ADB" IS GIVEN THE VALUE NAMED "BR" (TO
; 1313 ; CAUSE THE MIXER ON THE B SIDE OF AD TO SELECT BR), FIELD "ADA" HAS VALUE
; 1314 ; "AR", FIELD "AD" HAS VALUE "A+B", AND FIELD "AR" HAS VALUE "AD".
; 1315 ;
; 1316 ;(6) CONTINUATION
; 1317 ; THE DEFINITION OF A MICROINSTRUCTION MAY CONTINUED ONTO TWO OR
; 1318 ; MORE LINES BY BREAKING IT AFTER ANY COMMA. IN OTHER WORDS, IF THE
; 1319 ; LAST NON-BLANK, NON-COMMENT CHARACTER ON A LINE IS A COMMA, THE
; 1320 ; INSTRUCTION SPECIFICATION IS CONTINUED ON THE FOLLOWING LINE.
; 1321 ; EXAMPLE:
; 1322 ; ADB/BR,ADA/AR, ;SELECT AR & BR AS AD INPUTS
; 1323 ; AD/A+B,AR/AD ;TAKE THE SUM INTO AR
; 1324 ; BY CONVENTION, CONTINUATION LINES ARE INDENTED AN EXTRA TAB.
; 1325 ;
; 1326 ;(7) MACROS
; 1327 ; A MACRO IS A SYMBOL WHOSE VALUE IS ONE OR MORE FIELD/VALUE
; 1328 ; SPECIFICATIONS AND/OR MACROS. A MACRO DEFINITION IS A LINE CONTAINING
; 1329 ; THE MACRO NAME FOLLOWED BY A QUOTED STRING WHICH IS THE VALUE OF THE
; 1330 ; MACRO. EXAMPLE:
; 1331 ; AR_AR+BR "ADB/BR,ADA/AR,AD/A+B,AR/AD"
; 1332 ; THE APPEARANCE OF A MACRO IN A MICROINSTRUCTION DEFINITION IS EQUIVALENT
; 1333 ; TO THE APPEARANCE OF ITS VALUE. MACROS FOR VARIOUS FUNCTIONS
; 1334 ; ARE DEFINED IN "MACRO.MIC".
; 1335 ;
; 1336 ;(8) PSEUDO OPS
; 1337 ; THE MICRO ASSEMBLER HAS 10 PSEUDO-OPERATORS:
; 1338 ;.DCODE AND .UCODE SELECT THE RAM INTO WHICH SUBSEQUENT MICROCODE WILL
; 1339 ;BE LOADED, AND THEREFORE THE FIELD DEFINITIONS AND MACROS WHICH ARE
; 1340 ;MEANINGFUL IN SUBSEQUENT MICROCODE
; 1341 ;.TITLE DEFINES A STRING OF TEXT TO APPEAR IN THE PAGE HEADER, AND
; 1342 ;.TOC DEFINES AN ENTRY FOR THE TABLE OF CONTENTS AT THE BEGINNING.
; 1343 ;.SET DEFINES THE VALUE OF A CONDITIONAL ASSEMBLY PARAMETER,
; 1344 ;.CHANGE REDEFINES A CONDITIONAL ASSEMBLY PARAMETER,
; 1345 ;.DEFAULT ASSIGNS A VALUE TO AN UNDEFINED PARAMETER.
; 1346 ;.IF ENABLES ASSEMBLY IF THE VALUE OF THE PARAMETER IS NOT ZERO,
; 1347 ;.IFNOT ENABLES ASSEMBLY IF THE PARAMETER VALUE IS ZERO, AND
; 1348 ;.ENDIF RE-ENABLES ASSEMBLY IF SUPPRESSED BY THE PARAMETER NAMED.
; 1349 ;
; 1350 ;(9) LOCATION CONTROL
; 1351 ; A MICROINSTRUCTION "LABELLED" WITH A NUMBER IS ASSIGNED TO THAT
; 1352 ; ADDRESS.
; 1353 ; THE CHARACTER "=" AT THE BEGINNING OF A LINE, FOLLOWED BY
; 1354 ; A STRING OF 0'S, 1'S, AND/OR *'S, SPECIFIES A CONSTRAINT ON THE
; 1355 ; ADDRESS OF FOLLOWING MICROINSTRUCTIONS. THE NUMBER OF CHARACTERS
; 1356 ; IN THE CONSTRAINT STRING (EXCLUDING THE "=") IS THE NUMBER OF LOW-ORDER
; 1357 ; BITS CONSTRAINED IN THE ADDRESS. THE MICROASSEMBLER ATTEMPTS TO FIND
; 1358 ; AN UNUSED LOCATION WHOSE ADDRESS HAS 0 BITS IN THE POSITIONS
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 2-3
; DEFINE.MIC[4,30] 17:12 9-Aug-84 HOW TO READ THE MICROCODE -- FORMATS & CONSTRUCTS
; 1359 ; CORRESPONDING TO 0'S IN THE CONSTRAINT STRING AND 1 BITS WHERE THE
; 1360 ; CONSTRAINT HAS 1'S. ASTERISKS DENOTE "DON'T CARE" BIT POSITIONS.
; 1361 ; IF THERE ARE ANY 0'S IN THE CONSTRAINT STRING, THE CONSTRAINT
; 1362 ; IMPLIES A BLOCK OF <2**N> MICROWORDS, WHERE N IS THE NUMBER OF 0'S
; 1363 ; IN THE STRING. ALL LOCATIONS IN THE BLOCK WILL HAVE 1'S IN THE ADDRESS
; 1364 ; BITS CORRESPONDING TO 1'S IN THE STRING, AND BIT POSITIONS DENOTED BY *'S
; 1365 ; WILL BE THE SAME IN ALL LOCATIONS OF THE BLOCK.
; 1366 ; IN SUCH A CONSTRAINT BLOCK, THE DEFAULT ADDRESS PROGRESSION IS
; 1367 ; COUNTING IN THE "0" POSITIONS OF THE CONSTRAINT STRING, BUT A NEW
; 1368 ; CONSTRAINT STRING OCCURING WITHIN A BLOCK MAY FORCE SKIPPING OVER
; 1369 ; SOME LOCATIONS OF THE BLOCK. WITHIN A BLOCK, A NEW CONSTRAINT
; 1370 ; STRING DOES NOT CHANGE THE PATTERN OF DEFAULT ADDRESS PROGRESSION, IT
; 1371 ; MERELY ADVANCES THE LOCATION COUNTER OVER THOSE LOCATIONS. THE
; 1372 ; MICROASSEMBLER WILL LATER FILL THEM IN.
; 1373 ; A NULL CONSTRAINT STRING ("=" FOLLOWED BY ANYTHING BUT "0",
; 1374 ; "1", OR "*") SERVES TO TERMINATE A CONSTRAINT BLOCK.
; 1375 ; EXAMPLES:
; 1376 ; =0
; 1377 ; THIS SPECIFIES THAT THE LOW-ORDER ADDRESS BIT MUST BE ZERO--
; 1378 ; THE MICROASSEMBLER FINDS AN EVEN-ODD PAIR OF LOCATIONS, AND PUTS
; 1379 ; THE NEXT TWO MICROINSTRUCTIONS INTO THEM.
; 1380 ; =11
; 1381 ; THIS SPECIFIES THAT THE TWO LOW-ORDER BITS OF THE ADDRESS MUST
; 1382 ; BOTH BE ONES. SINCE THERE ARE NO 0'S IN THIS CONSTRAINT, THE
; 1383 ; ASSEMBLER FINDS ONLY ONE LOCATION MEETING THE CONSTRAINT.
; 1384 ; =0*****
; 1385 ; THIS SPECIFIES AN ADDRESS IN WHICH THE "40" BIT IS ZERO. DUE
; 1386 ; TO THE IMPLEMENTATION OF THIS FEATURE IN THE ASSEMBLER, THE DEFAULT
; 1387 ; ADDRESS PROGRESSION APPLIES ONLY TO THE LOW-ORDER 5 BITS, SO THIS
; 1388 ; CONSTRAINT FINDS ONE WORD IN WHICH THE "40" BIT IS ZERO, AND DOES
; 1389 ; NOT ATTEMPT TO FIND ONE IN WHICH THAT BIT IS A ONE.
; 1390 ;THIS LIMITATION HAS BEEN CHANGED WITH NEWER ASSEMBLER VERSIONS.
; 1391 ;HOWEVER NONE OF THE LOCATIONS IN THE MICROCODE REQUIRE ANYTHING BUT THE
; 1392 ;CONSTRAINT MENTIONED ABOVE.
; 1393
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 3
; DEFINE.MIC[4,30] 17:12 9-Aug-84 MICROCODE LISTING TEMPLATE
; 1394 .TOC "MICROCODE LISTING TEMPLATE"
; 1395 ;HERE IS A TEMPLATE WHICH CAN BE USED WITH THE MICROCODE
; 1396 ; LISTING TO IDENTIFY FIELDS IN THE OUTPUT --
; 1397
; 1398
; 1399 ; ---- ---- ---- ---- ---- ---- ---- ----
; 1400 ; [--] [--] []!! !!!! !!!! !![] [][] ![-]
; 1401 ; ! ! !!! !!!! !!!! !! ! ! ! ! + # = MAGIC NUMBERS
; 1402 ; ! ! !!! !!!! !!!! !! ! ! ! + MARK = SCOPE SYNC
; 1403 ; ! ! !!! !!!! !!!! !! ! ! !
; 1404 ; ! ! !!! !!!! !!!! !! ! ! + CALL, DISP/SPEC = SPEC FUNCTIONS
; 1405 ; ! ! !!! !!!! !!!! !! ! + SKIP/COND = SPECIAL FUNCTIONS
; 1406 ; ! ! !!! !!!! !!!! !! !
; 1407 ; ! ! !!! !!!! !!!! !! + TIME, MEM = UINST TIME & MEM FUNCTION
; 1408 ; ! ! !!! !!!! !!!! !+ VMA = VMA INPUT SELECT
; 1409 ; ! ! !!! !!!! !!!! + SH/ARMM = SH FUNCTION / ARMM SELECT
; 1410 ; ! ! !!! !!!! !!!!
; 1411 ; ! ! !!! !!!! !!!+ SC, FE = SC INPUT SELECT & FE LOAD
; 1412 ; ! ! !!! !!!! !!+ SCADB = SELECT FOR SCAD "B" INPUT
; 1413 ; ! ! !!! !!!! !+ SCADA = ENABLE AND SELECT FOR SCAD "A" INPUT
; 1414 ; ! ! !!! !!!! + SCAD = SC/FE ADDER FUNCTION
; 1415 ; ! ! !!! !!!!
; 1416 ; ! ! !!! !!!+ FM ADR = FAST MEMORY ADDRESS SELECT
; 1417 ; ! ! !!! !!+ BR, BRX, MQ = LOAD BR & BRX, SEL FOR MQ
; 1418 ; ! ! !!! !+ ARX = SELECT FOR ARX INPUT
; 1419 ; ! ! !!! + AR = SELECT FOR AR INPUT
; 1420 ; ! ! !!!
; 1421 ; ! ! !!+ ADB = SELECT FOR ADDER "B" INPUT
; 1422 ; ! ! !+ ADA = SELECT AND ENABLE FOR ADDER "A" INPUT
; 1423 ; ! ! + AD = OPERATION IN ADDER AND ADDER EXTENSION
; 1424 ; ! !
; 1425 ; ! + J = BASE ADDRESS TO WHICH THIS MICROINSTRUCTION JUMPS
; 1426 ; !
; 1427 ; + LOCATION IN CRAM INTO WHICH THIS WORD IS LOADED
; 1428 ;
; 1429 ; U/V = MICRO INSTRUCTION FOR CRAM
; 1430
; 1431 ;*******************************************************************
; 1432
; 1433 ; D = WORD FOR DRAM
; 1434 ;
; 1435 ; + LOCATION IN DRAM INTO WHICH THIS WORD IS LOADED
; 1436 ; !
; 1437 ; ! + A = OPERAND ACCESS CONTROL
; 1438 ; ! !+ B = INSTRUCTION "MODE"
; 1439 ; ! !! + P = PARITY FOR THIS WORD
; 1440 ; ! !! !
; 1441 ; ! !! ! + J = ADDRESS OF HANDLER FOR THIS INSTRUCTION
; 1442 ; [--] !! ! [--]
; 1443 ; ---- ---- ----
; 1444
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 4
; DEFINE.MIC[4,30] 17:12 9-Aug-84 KL10 INSTRUCTION OPCODE MAP
; 1445 .TOC "KL10 INSTRUCTION OPCODE MAP"
; 1446
; 1447 ; 0 1 2 3 4 5 6 7
; 1448 ;100 UUO UUO EFAD EFSB JSYS ADJSP EFMP EFDV
; 1449 ;110 DFAD DFSB DFMP DFDV DADD DSUB DMUL DDIV
; 1450 ;120 DMOVE DMOVN FIX EXTEND DMOVEM DMOVNM FIXR FLTR
; 1451 ;130 UFA DFN FSC IBP ILDB LDB IDPB DPB
; 1452 ;140 FAD FADL FADM FADB FADR FADRI FADRM FADRB
; 1453 ;150 FSB FSBL FSBM FSBB FSBR FSBRI FSBRM FSBRB
; 1454 ;160 FMP FMPL FMPM FMPB FMPR FMPRI FMPRM FMPRB
; 1455 ;170 FDV FDVL FDVM FDVB FDVR FDVRI FDVRM FDVRB
; 1456 ; 0 1 2 3 4 5 6 7
; 1457 ;200 MOVE MOVEI MOVEM MOVES MOVS MOVSI MOVSM MOVSS
; 1458 ;210 MOVN MOVNI MOVNM MOVNS MOVM MOVMI MOVMM MOVMS
; 1459 ;220 IMUL IMULI IMULM IMULB MUL MULI MULM MULB
; 1460 ;230 IDIV IDIVI IDIVM IDIVB DIV DIVI DIVM DIVB
; 1461 ;240 ASH ROT LSH JFFO ASHC ROTC LSHC UUO
; 1462 ;250 EXCH BLT AOBJP AOBJN JRST JFCL XCT MAP
; 1463 ;260 PUSHJ PUSH POP POPJ JSR JSP JSA JRA
; 1464 ;270 ADD ADDI ADDM ADDB SUB SUBI SUBM SUBB
; 1465 ; 0 1 2 3 4 5 6 7
; 1466 ;300 CAI CAIL CAIE CAILE CAIA CAIGE CAIN CAIG
; 1467 ;310 CAM CAML CAME CAMLE CAMA CAMGE CAMN CAMG
; 1468 ;320 JUMP JUMPL JUMPE JUMPLE JUMPA JUMPGE JUMPN JUMPG
; 1469 ;330 SKIP SKIPL SKIPE SKIPLE SKIPA SKIPGE SKIPN SKIPG
; 1470 ;340 AOJ AOJL AOJE AOJLE AOJA AOJGE AOJN AOJG
; 1471 ;350 AOS AOSL AOSE AOSLE AOSA AOSGE AOSN AOSG
; 1472 ;360 SOJ SOJL SOJE SOJLE SOJA SOJGE SOJN SOJG
; 1473 ;370 SOS SOSL SOSE SOSLE SOSA SOSGE SOSN SOSG
; 1474 ; 0 1 2 3 4 5 6 7
; 1475 ;400 SETZ SETZI SETZM SETZB AND ANDI ANDM ANDB
; 1476 ;410 ANDCA ANDCAI ANDCAM ANDCAB SETM SETMI SETMM SETMB
; 1477 ;420 ANDCM ANDCMI ANDCMM ANDCMB SETA SETAI SETAM SETAB
; 1478 ;430 XOR XORI XORM XORB IOR IORI IORM IORB
; 1479 ;440 ANDCB ANDCBI ANDCBM ANDCBB EQV EQVI EQVM EQVB
; 1480 ;450 SETCA SETCAI SETCAM SETCAB ORCA ORCAI ORCAM ORCAB
; 1481 ;460 SETCM SETCMI SETCMM SETCMB ORCM ORCMI ORCMM ORCMB
; 1482 ;470 ORCB ORCBI ORCBM ORCBB SETO SETOI SETOM SETOB
; 1483 ; 0 1 2 3 4 5 6 7
; 1484 ;500 HLL HLLI HLLM HLLS HRL HRLI HRLM HRLS
; 1485 ;510 HLLZ HLLZI HLLZM HLLZS HRLZ HRLZI HRLZM HRLZS
; 1486 ;520 HLLO HLLOI HLLOM HLLOS HRLO HRLOI HRLOM HRLOS
; 1487 ;530 HLLE HLLEI HLLEM HLLES HRLE HRLEI HRLEM HRLES
; 1488 ;540 HRR HRRI HRRM HRRS HLR HLRI HLRM HLRS
; 1489 ;550 HRRZ HRRZI HRRZM HRRZS HLRZ HLRZI HLRZM HLRZS
; 1490 ;560 HRRO HRROI HRROM HRROS HLRO HLROI HLROM HLROS
; 1491 ;570 HRRE HRREI HRREM HRRES HLRE HLREI HLREM HLRES
; 1492 ; 0 1 2 3 4 5 6 7
; 1493 ;600 TRN TLN TRNE TLNE TRNA TLNA TRNN TLNN
; 1494 ;610 TDN TSN TDNE TSNE TDNA TSNA TDNN TSNN
; 1495 ;620 TRZ TLZ TRZE TLZE TRZA TLZA TRZN TLZN
; 1496 ;630 TDZ TSZ TDZE TSZE TDZA TSZA TDZN TSZN
; 1497 ;640 TRC TLC TRCE TLCE TRCA TLCA TRCN TLCN
; 1498 ;650 TDC TSC TDCE TSCE TDCA TSCA TDCN TSCN
; 1499 ;660 TRO TLO TROE TLOE TROA TLOA TRON TLON
; 1500 ;670 TDO TSO TDOE TSOE TDOA TSOA TDON TSON
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 5
; DEFINE.MIC[4,30] 17:12 9-Aug-84 CONTROL RAM DEFINITIONS -- J, AD
; 1501 .TOC "CONTROL RAM DEFINITIONS -- J, AD"
; 1502 ;FIELDS ARRANGED FOR READABILITY, NOT COMPACTNESS
; 1503 ; IN THE PROCESSOR, BITS ARE SCATTERED IN ANOTHER ORDER
; 1504
; 1505 U0/=<0:0>D,0 ;BIT 0 UNUSED
; 1506 J/=<1:11>+ ;SYMBOLS WILL BE DEFINED BY TAGS (CRA1&CRA2)
; 1507
; 1508 ;MAIN ADDER CONTROLS. Bit 0 = carry in, bit 1 = boolean operation
; 1509 ; Bits 2-5 are S8-S1 of the 10181 ALU chip. For normal arithmetic,
; 1510 ; the AD and ADX are separated unless SPEC/AD LONG or equivalent is given.
; 1511
; 1512
; 1513 AD/=<12:17> ; (EDP3, EXCEPT CARRY IN, ON CTL1)
; 1514 A+1=40,1
; 1515 A+XCRY=00,1
; 1516 ; A+ANDCB=01,1
; 1517 ; A+AND=02,1
; 1518 A*2=03,1
; 1519 A*2+1=43,1
; 1520 ; OR+1=44,1
; 1521 ; OR+ANDCB=05,1
; 1522 A+B=06,1
; 1523 A+B+1=46,1
; 1524 ; A+OR=07,1
; 1525 ORCB+1=50,1
; 1526 A-B-1=11,1
; 1527 A-B=51,1
; 1528 ; AND+ORCB=52,1
; 1529 ; A+ORCB=53,1
; 1530 XCRY-1=54,1
; 1531 ; ANDCB-1=15,1
; 1532 ; AND-1=16,1
; 1533 A-1=17,1
; 1534 ;ADDER LOGICAL FUNCTIONS
; 1535 SETCA=20
; 1536 ORC=21 ;NAND
; 1537 ORCA=22
; 1538 1S=23
; 1539 ANDC=24 ;NOR
; 1540 NOR=24
; 1541 SETCB=25
; 1542 EQV=26
; 1543 ORCB=27
; 1544 ANDCA=30
; 1545 XOR=31
; 1546 B=32
; 1547 OR=33
; 1548 0S=34
; 1549 ANDCB=35
; 1550 AND=36
; 1551 A=37
; 1552 ;BOOLEAN FUNCTIONS FOR WHICH CRY0 IS INTERESTING
; 1553 CRY A EQ -1=60,1 ;GENERATE CRY0 IF A=1S, AD=SETCA
; 1554 CRY A.B#0=36,1 ;CRY 0 IF A&B NON-ZERO, AD=AND
; 1555 CRY A#0=37,1 ;GENERATE CRY0 IF A .NE. 0, AD=A
; 1556 CRY A GE B=71,1 ;CRY0 IF A .GE. B, UNSIGNED; AD=XOR
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 6
; DEFINE.MIC[4,30] 17:12 9-Aug-84 CONTROL RAM DEFINITIONS -- DATA PATH MIXERS
; 1557 .TOC "CONTROL RAM DEFINITIONS -- DATA PATH MIXERS"
; 1558
; 1559 ADA/=<18:20> ; (EDP3)
; 1560 AR=0
; 1561 ARX=1
; 1562 MQ=2
; 1563 PC=3
; 1564 ADA EN/=<18:18> ;ADA ENABLE ALSO ENABLES ADXA (EDP3)
; 1565 EN=0
; 1566 0S=1
; 1567 U21/=<21:21>D,0 ;BIT 21 UNUSED
; 1568 ADB/=<22:23> ;CONTROLS ADB AND ADXB (EDP3)
; 1569 FM=0,,1 ;MUST HAVE TIME FOR PARITY CHECK
; 1570 BR*2=1
; 1571 BR=2
; 1572 AR*4=3
; 1573 U23/=<23:23>D,1 ;PREVENT DEFAULT SELECTION OF FM
; 1574 ;FORCE IT TO TAKE ONE OF THE SHORTER
; 1575 ;PATHS IF FM NOT NEEDED ALSO DISABLES
; 1576 ;PARITY CHECKING LOGIC
; 1577
; 1578 ;REGISTER INPUTS
; 1579
; 1580 AR/=<24:26>D,0 ; (EDP1)
; 1581 AR=0
; 1582 ARMM=0 ;REQUIRES SPECIAL FUNCTION
; 1583 MEM=0 ;[346] MB WAIT will poke to 1 (CACHE) or 2 (AD)
; 1584 CACHE=1 ;ORDINARILY SELECTED BY HWARE
; 1585 AD=2
; 1586 EBUS=3
; 1587 SH=4
; 1588 AD*2=5 ;Low bit from ADX0
; 1589 ADX=6
; 1590 AD*.25=7
; 1591 ARX/=<27:29>D,0 ; (EDP2)
; 1592 ARX=0 ;[345] BY DEFAULT
; 1593 MEM=0 ;[346] Gets poked by MB WAIT to 1 or 2
; 1594 CACHE=1 ;ORDINARILY BY MBOX RESP
; 1595 AD=2
; 1596 MQ=3
; 1597 SH=4
; 1598 ADX*2=5 ;Low bit from MQ0
; 1599 ADX=6
; 1600 ADX*.25=7
; 1601 BR/=<30:30>D,0 ;DEFAULT TO RECIRCULATE (EDP4)
; 1602 AR=1
; 1603 BRX/=<31:31>D,0 ;DEFAULT TO RECIRCULATE (EDP4)
; 1604 ARX=1
; 1605 MQ/=<32:32>D,0 ;DEFAULT TO RECIRCULATE (EDP2)
; 1606 SH=1 ;LOAD FROM SHIFT MATRIX
; 1607 MQ*2=0 ;With SPEC/MQ SHIFT--Low bit from AD CRY -2
; 1608 MQ*.25=1 ;With SPEC/MQ SHIFT--High bits from ADX34, ADX35
; 1609 MQ SEL=0 ;WITH COND/REG CTL
; 1610 MQM SEL=1 ;WITH COND/REG CTL
; 1611
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 7
; DEFINE.MIC[4,30] 17:12 9-Aug-84 CONTROL RAM DEFINITIONS -- DATA PATH MIXERS
; 1612 ;FMADR SELECTS THE SOURCE OF THE FAST MEMORY ADDRESS,
; 1613 ; RATHER THAN PROVIDING THE ADDRESS ITSELF
; 1614
; 1615 FMADR/=<33:35> ; (APR4&APR5)
; 1616 AC0=0 ;IR 9-12
; 1617 AC1=1 ;<IR 9-12>+1 MOD 16
; 1618 XR=2 ;ARX 14-17
; 1619 VMA=3 ;VMA 32-35
; 1620 AC2=4 ;<IR 9-12>+2 MOD 16
; 1621 AC3=5 ;<IR 9-12>+3 MOD 16
;;1622 .IFNOT/MODEL.B
;;1623 AC4=6 ;CURRENT BLOCK, AC+4
;;1624 ac5=7 ;current block, ac+5
; 1625 .IF/MODEL.B
; 1626 AC+#=6 ;CURRENT BLOCK, AC+ MAGIC #
; 1627 .ENDIF/MODEL.B
; 1628 #B#=7 ;BLOCK AND AC SELECTED BY # FIELD
; 1629
; 1630 .TOC "CONTROL RAM DEFINITIONS -- 10-BIT LOGIC"
; 1631
; 1632 SCAD/=<36:38> ; (SCD1)
; 1633 A=0
; 1634 A-B-1=1
; 1635 A+B=2
; 1636 A-1=3
; 1637 A+1=4
; 1638 A-B=5
; 1639 OR=6
; 1640 AND=7
; 1641 SCADA/=<39:41> ; (SCD1)
; 1642 FE=0
; 1643 AR0-5=1 ;BYTE POINTER P FIELD
; 1644 AR EXP=2 ;<AR 01-08> XOR <AR 00>
; 1645 #=3 ;SIGN EXTENDED WITH #00
; 1646 SCADA EN/=<39:39> ; (SCD1)
; 1647 0S=1
; 1648 U42/=<42:42>D,0 ;BIT 42 UNUSED
; 1649 SCADB/=<43:44> ; (SCD1)
; 1650 SC=0
; 1651 AR6-11=1 ;BYTE POINTER S FIELD
; 1652 AR0-8=2
; 1653 #=3 ;NO SIGN EXTENSION
; 1654 U45/=<45:45>D,0 ;BIT 45 UNUSED
; 1655 SC/=<46:46>D,0 ;RECIRCULATE BY DEFAULT (SCD2)
; 1656 FE=0 ;WITH SCM ALT
; 1657 SCAD=1
; 1658 AR SHIFT=1 ;WITH SCM ALT ;AR 18, 28-35
; 1659 FE/=<47:47>D,0 ;RECIRCULATE BY DEFAULT (SCD2)
; 1660 SCAD=1
; 1661 U48/=<48:48>D,0 ;BIT 48 UNUSED
; 1662
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 8
; DEFINE.MIC[4,30] 17:12 9-Aug-84 CONTROL RAM DEFINITIONS -- SHIFT, ARMM, VMA, TIME
; 1663 .TOC "CONTROL RAM DEFINITIONS -- SHIFT, ARMM, VMA, TIME"
; 1664
; 1665 SH/=<49:50> ; (SH1)
; 1666 SHIFT AR!ARX=0 ;LEFT BY (SC)
; 1667 AR=1
; 1668 ARX=2
; 1669 AR SWAP=3 ;HALVES SWAPPED
; 1670 ARMM/=<49:50> ;SAME BITS AS SH CONTROL (SCD3)
; 1671 #=0 ;MAGIC # 0-8 TO AR 0-8
; 1672 EXP_SIGN=1 ;AR1-8 _ AR0
; 1673 SCAD EXP=2 ;AR0-8_SCAD
; 1674 SCAD POS=3 ;AR0-5_SCAD
; 1675 .IF/MODEL.B
; 1676 VMAX/=<49:50> ;SAME BITS AS SH CONTROL (VMA4)
; 1677 VMAX=0 ;VMA SECTION #
; 1678 PC SEC=1 ;PC SECTION #
; 1679 PREV SEC=2 ;PREVIOUS CONTEXT SECT
; 1680 AD12-17=3
; 1681 .ENDIF/MODEL.B
; 1682 U51/=<51:51>D,0 ;BIT 51 UNUSED
; 1683 VMA/=<52:53>D,0 ;ALSO CONTROLLED BY SPECIAL FUNCTIONS
; 1684 VMA=0 ;BY DEFAULT
; 1685 PC=1 ;MAY BE OVERRIDDEN BY MCL LOGIC TO LOAD FROM AD
; 1686 LOAD=1 ; IF WE KNOW IT WILL BE OVERRIDDEN, USE THIS
; 1687 PC+1=2
; 1688 AD=3 ;ENTIRE VMA, INCLUDING SECTION
; 1689 TIME/=<54:55>T ;CONTROLS MINIMUM MICROINSTRUCTION EXECUTION
; 1690 ; TIME, COUNTING MBOX CLOCK TICKS (CLK)
; 1691 ;ASSEMBLER GENERALLY TAKES CARE OF THIS
; 1692 2T=0 ;2 TICKS
; 1693 3T=1 ;3 TICKS
; 1694 4T=2 ;4 TICKS
; 1695 5T=3 ;5 TICKS (COND/DIAG FUNC & #00, --> .5 USEC)
; 1696
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 9
; DEFINE.MIC[4,30] 17:12 9-Aug-84 CONTROL RAM DEFINITIONS -- MEM SPECIAL FUNCTIONS
; 1697 .TOC "CONTROL RAM DEFINITIONS -- MEM SPECIAL FUNCTIONS"
; 1698
; 1699 MEM/=<56:59>D,0 ; (MCL1)
; 1700 ; NOP=0 ;DEFAULT
; 1701 ARL IND=1 ;CONTROL AR LEFT MUX FROM # FIELD
; 1702 MB WAIT=2 ;WAIT FOR MBOX RESP IF PENDING
; 1703 A RD=4 ;OPERAND READ and load PXCT bits (model B)
; 1704 B WRITE=5 ;CONDITIONAL WRITE ON DRAM B 01
; 1705 FETCH=6 ;LOAD NEXT INSTR TO ARX (CONTROL BY #)
; 1706 REG FUNC=7 ;MBOX REGISTER FUNCTIONS
; 1707 LOAD AR=12
; 1708 LOAD ARX=13
; 1709 WRITE=16 ;FROM AR TO MEMORY
; 1710 .IF/MODEL.B
; 1711 RESTORE VMA=3 ;AD FUNC WITHOUT GENERATING A REQUEST
; 1712 AD FUNC=10 ;FUNCTION LOADED FROM AD LEFT
; 1713 EA CALC=11 ;FUNCTION DECODED FROM # FIELD
; 1714 RW=14 ;READ, TEST WRITABILITY
; 1715 RPW=15 ;READ-PAUSE-WRITE
; 1716 IFET=17 ;UNCONDITIONAL FETCH
;;1717 .IFNOT/MODEL.B ;OLD-STYLE MCL BOARD
;;1718 SEC 0=3 ;CLEAR VMAX
;;1719 A IND=10 ;A-TYPE INDIRECT
;;1720 BYTE IND=11 ;BYTE-TYPE INDIRECT
;;1721 AD FUNC=14 ;FUNCTION FROM AD LEFT
;;1722 BYTE RD=15 ;BYTE READ TO BOTH AR AND ARX
;;1723 RPW=17 ;LOAD AR WITH RPW CYCLE
; 1724 .ENDIF/MODEL.B
; 1725
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 10
; DEFINE.MIC[4,30] 17:12 9-Aug-84 CONTROL RAM DEFINITIONS -- SKIP/COND SPECIAL FUNCTIONS
; 1726 .TOC "CONTROL RAM DEFINITIONS -- SKIP/COND SPECIAL FUNCTIONS"
; 1727
; 1728 SKIP/=<60:65>D,0 ;MICRO-PROGRAM SKIPS
; 1729 ; 40-57 DECODED ON (CRA2)
; 1730 ; SPARE=40
; 1731 EVEN PAR=41,,1 ;AR PARITY IS EVEN
; 1732 BR0=42 ;BR BIT 00
; 1733 ARX0=43 ;ARX BIT 00
; 1734 AR18=44 ;AR BIT 18
; 1735 AR0=45 ;AR BIT 00
; 1736 AC#0=46 ;IR9-12 .EQ. 0
; 1737 SC0=47 ;SC BIT 00
;;1738 .IFNOT/MODEL.B
;;1739 SC .LT. 36=50
; 1740 .IF/MODEL.B
; 1741 PC SEC0=50
; 1742 .ENDIF/MODEL.B
; 1743 SCAD0=51,,1 ;SIGN OF SCAD OUTPUT
; 1744 SCAD#0=52,,1 ;SCAD OUTPUT IS NON-ZERO
; 1745 ADX0=53,1 ;ADDER EXTENSION BIT 00
; 1746 AD CRY0=54,1 ;CARRY OUT OF AD BIT -2 (BOOLE IGNORED)
; 1747 AD0=55,1 ;ADDER BIT 00
; 1748 AD#0=56,1 ;AD BITS 00-35 CONTAIN SOME ONES
; 1749 .IF/MODEL.B
; 1750 -LOCAL AC ADDR=57 ;VMA18-31 =0 ON LOCAL REF IN SEC >1
; 1751 .ENDIF/MODEL.B
; 1752 ; 60-77 DECODED ON (CON2)
; 1753 FETCH=60 ;VMA FETCH (LAST CYCLE WAS A FETCH)
; 1754 KERNEL=61 ;PC IS IN KERNEL MODE
; 1755 USER=62 ;PC IS IN USER MODE
; 1756 PUBLIC=63 ;PC IS PUBLIC (INCLUDING SUPER)
; 1757 RPW REF=64 ;MIDDLE OF READ-PAUSE-WRITE CYCLE
; 1758 PI CYCLE=65 ;PI CYCLE IN PROGRESS
; 1759 -EBUS GRANT=66 ;PI HASN'T RELEASED BUS FOR CPU USE
; 1760 -EBUS XFER=67 ;NO TRANSFER RECIEVED FROM DEVICE
; 1761 INTRPT=70 ;AN INTERRUPT REQUEST WAITING FOR SERVICE
; 1762 -START=71 ;NO CONTINUE BUTTON
; 1763 RUN=72 ;PROCESSOR NOT HALTED
; 1764 IO LEGAL=73 ;KERNEL, PI CYCLE, USER IOT, OR DEVICE .GE. 740
; 1765 P!S XCT=74 ;PXCT OR SXCT
; 1766 .IF/MODEL.B
; 1767 -VMA SEC0=75 ;VMA SECTION NUMBER (13-17) IS NOT ZERO
; 1768 .ENDIF/MODEL.B
; 1769 AC REF=76,,1 ;VMA .LT.20 ON READ OR WRITE
; 1770 -MTR REQ=77 ;INTERRUPT REQUEST NOT DUE TO METER
; 1771
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 11
; DEFINE.MIC[4,30] 17:12 9-Aug-84 CONTROL RAM DEFINITIONS -- SKIP/COND SPECIAL FUNCTIONS
; 1772 ;SKIP/COND FIELD CONTINUED
; 1773
; 1774 COND/=<60:65>D,0 ;NON-SKIP SPECIAL FUNCTIONS
; 1775 ;0-7 DECODED ON (CTL2)
; 1776 ; NOP=0 ;BY DEFAULT
; 1777 LD AR0-8=1
; 1778 LD AR9-17=2 ;Gates VMAX into ARMM (see VMA4)
; 1779 LD AR18-35=3
; 1780 AR CLR=4
; 1781 ARX CLR=5
; 1782 ARL IND=6 ;CONTROL AR LEFT, CALL, AND CLEAR BITS FROM #
; 1783 REG CTL=7 ;CONTROL AR LOAD, EXP TST, AND MQ FROM #
; 1784 ; 10-37 DECODED ON (CON1)
; 1785 FM WRITE=10 ;WRITE AR INTO CURRENTLY ADDRESSED FM LOC
; 1786 PCF_#=11 ;SET PC FLAGS FROM # FIELD
; 1787 FE SHRT=12 ;SHIFT FE RIGHT 1
; 1788 AD FLAGS=13 ;SET PC CRY0, CRY1, OVRFLO, TRAP1 AS APPROPRIATE
; 1789 LOAD IR=14 ;LATCH AD OR CACHE DATA INTO IR, load PXCT bits
; 1790 SPEC INSTR=15 ;SET/CLR SXCT, PXCT, PICYC, TRAP INSTR FLAGS
; 1791 SR_#=16 ;CONTROL FOR STATE REGISTER and PXCT bits (CON3, MCL4)
; 1792 SEL VMA=17 ;READ VMA THROUGH ADA/PC
; 1793 DIAG FUNC=20 ;SELECT DIAGNOSTIC INFO ONTO EBUS
; 1794 EBOX STATE=21 ;SET STATE FLOPS
; 1795 EBUS CTL=22 ;I/O FUNCTIONS
; 1796 MBOX CTL=23
; 1797 ; SPARE=24
; 1798 .IF/MODEL.B
; 1799 LONG EN=25 ;THIS WORD CAN BE INTERPRETED AS LONG INDIRECT
; 1800 .ENDIF/MODEL.B
; 1801 ; SPARE=26
; 1802 ; SPARE=27
; 1803 VMA_#=30
; 1804 VMA_#+TRAP=31
; 1805 VMA_#+MODE=32
; 1806 VMA_#+AR32-35=33
; 1807 VMA_#+PI*2=34
; 1808 VMA DEC=35 ;VMA_VMA-1
; 1809 VMA INC=36 ;VMA_VMA+1
; 1810 LD VMA HELD=37 ;HOLD VMA ON SIDE
;;1811 .IFNOT/MODEL.B
;;1812 U66/=<66:66>D,0 ;BIT 66 UNUSED
; 1813 .IF/MODEL.B
; 1814 CALL/=<66:66>D,0 ;CALL FUNCTION
; 1815 CALL=1 ;GOOD TO 15 LEVELS IN MODEL B
; 1816 .ENDIF/MODEL.B
; 1817
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 12
; DEFINE.MIC[4,30] 17:12 9-Aug-84 CONTROL RAM DEFINITIONS -- DISP/SPEC SPECIAL FUNCTIONS
; 1818 .TOC "CONTROL RAM DEFINITIONS -- DISP/SPEC SPECIAL FUNCTIONS"
; 1819
; 1820 DISP/=<67:71>D,10 ;0-7 AND 30-37 ARE DISPATCHES (CRA1&CRA2)
; 1821 DIAG=0
; 1822 DRAM J=1
; 1823 DRAM A RD=2 ;IMPLIES INH CRY18
; 1824 RETURN=3 ;POPJ RETURN
; 1825 PG FAIL=4 ;PAGE FAIL TYPE DISP
; 1826 SR=5 ;16 WAYS ON STATE REGISTER
; 1827 NICOND=6 ;NEXT INSTRUCTION CONDITION (see NEXT for detail)
; 1828 SH0-3=7,,1 ;[337] 16 WAYS ON HIGH-ORDER BITS OF SHIFTER
; 1829 MUL=30 ;FE0*4 + MQ34*2 + MQ35; implies MQ SHIFT, AD LONG
; 1830 DIV=31,,1 ;FE0*4 + BR0*2 + AD CRY0; implies MQ SHIFT, AD LONG
; 1831 SIGNS=32,1 ;ARX0*8 + AR0*4 + BR0*2 + AD0
; 1832 DRAM B=33 ;8 WAYS ON DRAM B FIELD
; 1833 BYTE=34,,1 ;FPD*4 + AR12*2 + SCAD0
; 1834 NORM=35,2 ;See normalization for details. Implies AD LONG
; 1835 EA MOD=36 ;(ARX0 or -LONG EN)*8 + -(LONG EN and ARX1)*4 +
; 1836 ;ARX13*2 + (ARX2-5) or (ARX14-17) non zero; enable
; 1837 ;is (ARX0 or -LONG EN) for second case. If ARX18
; 1838 ;is 0, clear AR left; otherwise, poke ARL select
; 1839 ;to set bit 2 (usually gates AD left into ARL)
;;1840 .IFNOT/MODEL.B
;;1841 EA TYPE=37
; 1842 .ENDIF/MODEL.B
; 1843
; 1844 SPEC/=<67:71>D,10 ;NON-DISPATCH SPECIAL FUNCTIONS (CTL1)
; 1845 ; NOP=10 ;DEFAULT
; 1846 INH CRY18=11
; 1847 MQ SHIFT=12 ;ENABLE MQ*2, MQ SHRT2
; 1848 SCM ALT=13 ;ENABLE FE, ARSHIFT
; 1849 CLR FPD=14
; 1850 LOAD PC=15
; 1851 XCRY AR0=16 ;CARRY INTO AD IS XOR'D WITH AR00
; 1852 GEN CRY18=17
;;1853 .IFNOT/MODEL.B
;;1854 SEC HOLD=20 ;INHIBIT LOADING VMAX
;;1855 CALL=21 ;MAX DEPTH 4, INCLUDING PAGE REFILL
; 1856 .IF/MODEL.B
; 1857 STACK UPDATE=20 ;CONTROL CRY18 IF LOCAL STACK
; 1858 .ENDIF/MODEL.B
; 1859 ARL IND=22 ;# SPECIFIES ARL MIX, ENABLES, & CALL
; 1860 MTR CTL=23 ;# CONTROLS METERS
; 1861 FLAG CTL=24 ;FUNCTION ENCODED IN # FIELD
; 1862 SAVE FLAGS=25 ;TELLS PI CYCLE TO HOLD INTRPT
; 1863 SP MEM CYCLE=26 ;MEM REQUEST IS MODIFIED BY #
; 1864 AD LONG=27 ;AD BECOMES 72 BIT ALU
; 1865
; 1866 U73/=<72:73>D,0 ;BITS 72-73 UNUSED
; 1867
; 1868 MARK/=<74:74>D,0 ;FIELD SERVICE "MARK" BIT
; 1869
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 13
; DEFINE.MIC[4,30] 17:12 9-Aug-84 CONTROL RAM DEFINITIONS -- MAGIC NUMBER FIELD
; 1870 .TOC "CONTROL RAM DEFINITIONS -- MAGIC NUMBER FIELD"
; 1871
; 1872 #/=<75:83>D,0 ;THE INFAMOUS "MAGIC NUMBERS"
; 1873
; 1874 MAJVER/=<75:80> ;[356] Major version number
; 1875 MINVER/=<81:83> ;[356] Minor version number
; 1876
; 1877 ;THE OPTIONS DESIGNATE CERTAIN ASSEMBLIES FROM THE SAME
; 1878 ;MICROCODE SOURCES
; 1879 ;# BIT 0 INDICATES KLPAGING
; 1880 ;# BIT 1 INDICATES EXTENDED ADDRESSING
; 1881 ;# BIT 2 INDICATES NONSTANDARD MICROCODE
; 1882 ;# BIT 3 INDICATES A CPU WITH THE PV KIT. (MODEL B)
; 1883 ;# BIT 8 INDICATES INSTRUCTION STATISTICS GATHERING
; 1884 ; (I.E. TRACKS)
; 1885 ;EACH OPTION BIT IS GIVEN A SEPARATE FIELD DEFINITION
; 1886
; 1887 KLPAGE/=<75:75> ;KLPAGING
; 1888 .IF/KLPAGE
; 1889 OPTIONS=1
;;1890 .IFNOT/KLPAGE
;;1891 OPTIONS=0
; 1892 .ENDIF/KLPAGE
; 1893
; 1894 LONGPC/=<76:76> ;LONG PC FORMAT AS IN EXTENDED ADDRESSING
; 1895 .IF/LONG.PC ; THIS IS A SLIGHTLY BASTARDIZED FORMAT IN
; 1896 OPTIONS=1 ; MODEL A MACHINES DUE TO SPACE LIMITATIONS
;;1897 .IFNOT/LONG.PC
;;1898 OPTIONS=0
; 1899 .ENDIF/LONG.PC
; 1900
; 1901 NONSTD/=<77:77> ;NONSTANDARD MICROCODE (EG DIAGNOSTIC MICROCODE)
;;1902 .IF/NONSTD
;;1903 OPTIONS=1
; 1904 .IFNOT/NONSTD
; 1905 OPTIONS=0
; 1906 .ENDIF/NONSTD
; 1907
; 1908 PV/=<78:78> ;MODEL B - PV CPU
; 1909 .IF/MODEL.B
; 1910 OPTIONS=1
;;1911 .IFNOT/MODEL.B
;;1912 OPTIONS=0
; 1913 .ENDIF/MODEL.B
; 1914
; 1915 ISTAT/=<83:83> ;STATISTICS GATHERING CODE (IE TRACKS)
;;1916 .IF/INSTR.STAT
;;1917 OPTIONS=1
; 1918 .IFNOT/INSTR.STAT
; 1919 OPTIONS=0
; 1920 .ENDIF/INSTR.STAT
; 1921
; 1922 ACB/=<77:79> ;AC block number. Used with FMADR/#B#
; 1923 PAGB=6 ;AC block used for KL paging registers
; 1924 MICROB=7 ;AC block for general microcode scratch
; 1925
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 13-1
; DEFINE.MIC[4,30] 17:12 9-Aug-84 CONTROL RAM DEFINITIONS -- MAGIC NUMBER FIELD
; 1926 AC#/=<80:83> ;AC number used with ACB or AC-OP (below)
; 1927
; 1928 .IF/MODEL.B
; 1929 PXCT/=<75:77> ;(MCL4) Loaded by CON/SR_#, CON/LOAD IR, and MEM/A RD
; 1930 ;Bit 0 enables the VMAX to not come from the AD when
; 1931 ; VMA/AD (allowing local AC refs, for example). Bits
; 1932 ; 1 and 2 select which PXCT bits a memory reference
; 1933 ; will select for possible previous context.
; 1934 ;
; 1935 ; WARNING !!! BECAUSE OF A TIMING PROBLEM IN THE HARDWARE ALL AC-OPS
; 1936 ; MUST HAVE THE NUMBER FIELD THE SAME IN THE PREVIOUS
; 1937 ; MICROINSTRUCTION. THE SYMPTOM WILL BE GARBAGE WRITTEN IN A
; 1938 ; DIFFERENT AC AS THE ADDRESS LINES DON'T MAKE IT IN TIME
; 1939 ; FOR THE WRITE PULSE.
; 1940 ;
; 1941 AC-OP/=<75:79> ;CONTROLS OPERATION ON AC AND AC#
; 1942 AC+#=6
; 1943 #=32 ;JUST AC#
; 1944 OR=33 ;AC <OR> AC#
; 1945 ;ALL AD/ FUNCTIONS <40 WORK
; 1946 .ENDIF/MODEL.B
; 1947
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 14
; DEFINE.MIC[4,30] 17:12 9-Aug-84 CONTROL RAM DEFINITIONS -- MAGIC NUMBER FIELD
; 1948 ;VARIOUS SPECIAL FUNCTIONS ENABLE SPECIAL DECODING OF THE
; 1949 ; "MAGIC #" FIELD, AS FOLLOWS:
; 1950
; 1951 ;SPECIAL DATA PATH CONTROLS
; 1952
;;1953 .IFNOT/MODEL.B
;;1954 CALL/=<75:75> ;ENABLED BY ARL IND (CTL2)
;;1955 CALL=1
; 1956 .ENDIF/MODEL.B
; 1957 AR0-8/=<76:76> ;ENABLED BY ARL IND (CTL2)
; 1958 LOAD=1
; 1959 CLR/=<77:80> ;ENABLED BY ARL IND (CTL2)
; 1960 MQ=10
; 1961 ARX=4
; 1962 ARL=2
; 1963 ARR=1
; 1964 AR=3
; 1965 AR+ARX=7
; 1966 AR+MQ=13
; 1967 ARX+MQ=14
; 1968 AR+ARX+MQ=17
; 1969 ARL+ARX=6
; 1970 ARL+ARX+MQ=16
; 1971 ARR+MQ=11
; 1972 ARL/=<81:83> ;ENABLED BY ARL IND (CTL2)
; 1973 ARL=0
; 1974 ARMM=0 ;REQUIRES SPECIAL FUNCTION
; 1975 CACHE=1 ;ORDINARILY SELECTED BY HWARE
; 1976 AD=2
; 1977 EBUS=3
; 1978 SH=4
; 1979 AD*2=5
; 1980 ADX=6
; 1981 AD*.25=7
; 1982 AR CTL/=<75:77> ;ENABLED BY COND/REG CTL (CTL2)
; 1983 AR0-8 LOAD=4
; 1984 AR9-17 LOAD=2 ;Gates VMAX into ARMM (see VMA4)
; 1985 ARR LOAD=1
; 1986 ARL LOAD=6
; 1987 EXP TST/=<80:80> ;ENABLED BY COND/REG CTL (CTL1)
; 1988 AR_EXP=1
; 1989 MQ CTL/=<82:83> ;ENABLED BY COND/REG CTL (CTL2)
; 1990 ; MQ=0 ;WITH MQ/MQ SEL
; 1991 MQ*2=1 ;WITH MQ/MQ SEL--Low bit is ADX0
; 1992 ; MQ*.5=2 ; " (DROPS BITS 0,6,12,18,24,30)
; 1993 0S=3 ; "
; 1994 SH=0 ;WITH MQ/MQM SEL
; 1995 MQ*.25=1 ;WITH MQ/MQM SEL--High bits are ADX34, ADX35
; 1996 1S=2 ; "
; 1997 AD=3 ; "
; 1998
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 15
; DEFINE.MIC[4,30] 17:12 9-Aug-84 CONTROL RAM DEFINITIONS -- MAGIC NUMBER FIELD
; 1999 ;SPECIAL CONTROL OF EBOX FLAGS & FUNCTIONS
; 2000
; 2001 PC FLAGS/=<75:83> ;ENABLED BY COND/PCF_# (SCD4)
; 2002 AROV=420 ;SET ARITH OVFLO & TRAP1
; 2003 FLOV=620 ;SAME, PLUS FLOATING OVFLO
; 2004 FPD=100 ;SET FIRST PART DONE
; 2005 TRAP2=40 ;SET TRAP2 (PDL OVFLO)
; 2006 TRAP1=20 ;SET TRAP1 (ARITH OVFLO)
; 2007 FXU=630 ;FLOV + EXP UNDERFLOW
; 2008 DIV CHK=424 ;NO DIVIDE + AROV
; 2009 FDV CHK=624 ;FLOATING NO DIVIDE
; 2010 FLAG CTL/=<75:83> ;ENABLED BY SPEC/FLAG CTL (SCD5)
; 2011 RSTR FLAGS=420 ;AS IN JRSTF
; 2012 JFCL=602 ;FORCE PC 00 = AROV
; 2013 JFCL+LD=622 ;SECOND PART OF JFCL -- CLEAR TESTED FLAGS
; 2014 DISMISS=502 ;CLEAR PI CYCLE IF SET (CON5)
; 2015 ; ELSE DISMISS HIGHEST PI HOLD
; 2016 DISMISS+LD=522 ;LOAD FLAGS AND DISMISS
; 2017 HALT=442 ;STOP PROCESSOR IF LEGAL (CON2)
; 2018 SET FLAGS=20 ;AS IN MUUO
; 2019 PORTAL=412 ;CLEAR PUBLIC IF PRIVATE INSTR
; 2020 SPEC INSTR/=<75:83> ;ENABLED BY COND/SPEC INSTR
; 2021 SET PI CYCLE=714; (CON5)
; 2022 KERNEL CYCLE=200;MAKE IO LEGAL, EXEC ADDR SPACE (CON4)
; 2023 INH PC+1=100 ;TO MAKE JSR WORK IN TRAP, INTRPT (CON4)
; 2024 SXCT=40 ;START SECTION XCT (MCL4)
; 2025 PXCT=20 ;START PREV CONTXT XCT (MCL4)
; 2026 INTRPT INH=10 ;INHIBIT INTERRUPTS (CON4)
; 2027 INSTR ABORT=4 ; (CON2)
; 2028 HALTED=302 ;TELL CONSOLE WE'RE HALTED (CON4)
; 2029 CONS XCT=310 ;FLAGS FOR INSTR XCT'D FROM CONSOLE
; 2030 CONT=0 ;RESTORE NORMAL STATE FOR CONTINUE
; 2031 FETCH/=<75:83> ;ENABLED BY MEM/FETCH
; 2032 UNCOND=400
; 2033 ;LOW 2 BITS DECODED ON (IR3)
; 2034 COMP=201,2 ;DEPENDING ON AD AND DRAM B
; 2035 SKIP=202,2
; 2036 TEST=203,1
; 2037 JUMP=502,2 ;AS IN JUMPX, ON AD AND DRAM B
; 2038 JFCL=503,1 ;JUMP ON TEST CONDITION
; 2039
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 16
; DEFINE.MIC[4,30] 17:12 9-Aug-84 CONTROL RAM DEFINITIONS -- MAGIC NUMBER FIELD
; 2040 ;SPECIAL MEMORY REQUEST FUNCTIONS
; 2041
; 2042 .IF/MODEL.B
; 2043 EA CALC/=<75:83> ;SPECIFIC CONTROLS FOR MEM/EA CALC
; 2044 ; LOAD AR=400
; 2045 ; LOAD ARX=200
; 2046 ; PAUSE=100 ;Freeze memory--always use with 040
; 2047 ; WRITE=040 ;SET VMA WRITE
; 2048 ; PREV EN=20 ;PREV CONTXT SELECTED BY SR AND PXCT
; 2049 ; INDIRECT=10 ;PREV CONTXT FOR EA CALC
; 2050 ; EA=2 ;RESTORATION OF ORIGINAL EA CONDITIONS
; 2051 ; STACK=1 ;PREV CONTXT SELECTED BY PXCT B12
; 2052 .IF/XADDR ;JUST TO ARX FOR EXTENDED ADDRESSING
; 2053 A IND=230 ;INDIRECT AT FIRST EA CALC TIME
;;2054 .IFNOT/XADDR ;TO BOTH AR AND ARX AS IN MODEL A
;;2055 A IND=630 ;INDIRECT AT FIRST EA CALC TIME
; 2056 .ENDIF/XADDR
; 2057 BYTE LD=420 ;Read byte data to AR only [337]
; 2058 BYTE RD=620 ;READ BYTE DATA TO AR & ARX
; 2059 BYTE RD PC=621 ;READ BYTE DATA TO AR & ARX WITH PC SECTION
; 2060 BYTE RPW=760 ;Read byte data to AR, ARX, write test, pause [312]
; 2061 BYTE IND=610 ;INDIRECT AT BYTE EA CALC TIME
; 2062 PUSH=041 ;STORE TO STACK
; 2063 POP AR=421 ;READ FROM STACK TO AR
; 2064 POP ARX=221 ;READ FROM STACK TO ARX
; 2065 POP AR-ARX=621 ;POP TO BOTH
; 2066 WRITE(E)=042
; 2067 LD AR(EA)=402 ;LOAD AR GLOBAL/LOCAL AS IN EA
; 2068 LD AR+WR=440 ;LOAD AR, TEST WRITABILITY
; 2069 LD ARX+WR=240 ;LOAD ARX, TEST WRITABILITY
; 2070 .ENDIF/MODEL.B
; 2071
; 2072 SP MEM/=<75:83> ;ENABLED BY SPEC/SP MEM CYCLE
; 2073 FETCH=400 ;LOAD IR WHEN DATA ARRIVES (MCL5)
; 2074 USER=200 ;FORCE USER OR UPT (MCL2)
; 2075 EXEC=100 ;FORCE EXEC OR EPT (MCL3)
; 2076 SEC 0=40 ;CLEAR VMAX (MCL4)
; 2077 UPT EN=20 ;UPT IF USER EN (MCL3)
; 2078 EPT EN=10 ;EPT IF NOT USER EN (MCL3)
; 2079 CACHE INH=2 ; (MCL6)
; 2080 UNCSH+UNPAGE=103;UNCACHED AND UNPAGED
; 2081 UNPAGED+CACHED=101 ;physical reference with cache enabled.
;;2082 .IFNOT/MULTI
;;2083 UNPAGED=101 ; (MCL6)
;;2084 EPT=111
;;2085 EPT CACHE=111 ;[260]
;;2086 EPT FETCH=511
;;2087 UPT=221
;;2088 UPT FETCH=621
;;2089 PT=31
;;2090 PT FETCH=431
; 2091 .IF/MULTI
; 2092 UNPAGED=103 ; (MCL6)
; 2093 EPT=113
; 2094 EPT CACHE=111 ;[260]
; 2095 EPT FETCH=513
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 16-1
; DEFINE.MIC[4,30] 17:12 9-Aug-84 CONTROL RAM DEFINITIONS -- MAGIC NUMBER FIELD
; 2096 UPT=223
; 2097 UPT FETCH=623
; 2098 PT=33
; 2099 PT FETCH=433
; 2100 .ENDIF/MULTI
; 2101
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 17
; DEFINE.MIC[4,30] 17:12 9-Aug-84 CONTROL RAM DEFINITIONS -- MAGIC NUMBER FIELD
; 2102 ;MBOX CONTROLS
; 2103
; 2104 MREG FNC/=<75:83> ;ENABLED BY MEM/REG FUNC (APR6)
; 2105 SBUS DIAG=407 ;PERFORM SBUS DIAGNOSTIC CYCLE
; 2106 READ UBR=502 ;ASK MBOX TO LOAD UBR INTO EBUS REG
; 2107 READ EBR=503 ;PUT EBR INTO EBUS REG
; 2108 READ ERA=504
; 2109 WR REFILL RAM=505 ;DISGUISED AS A "READ REG" FUNCTION
; 2110 .IF/MODEL.B ;THIS GOT CHANGED IN THE GENERAL SPEEDUP (APR6)
; 2111 LOAD CCA=606 ;START A SWEEP
;;2112 .IFNOT/MODEL.B ;HERE IS WHAT IT USED TO BE
;;2113 LOAD CCA=601 ;START A SWEEP
; 2114 .ENDIF/MODEL.B
; 2115 LOAD UBR=602 ;SETUP UBR FROM VMA
; 2116 LOAD EBR=603 ;SETUP EBR FROM VMA
; 2117 MAP=140 ;GET PHYS ADDR CORRESPONDING TO VMA (MCL6)
; 2118 MBOX CTL/=<75:83> ;ENABLED BY COND/MBOX CTL (APR5)
; 2119 SET PAGE FAIL=200
; 2120 SET IO PF ERR=100
; 2121 CLR PT LINE(NK)=61,,1;[333] Clear valid if no Keep bit set
; 2122 PT DIR CLR(NK)=41;Enable clear of PT DIR for non keep entries
; 2123 CLR PT LINE=31,,1;CLEAR VALID FOR 4 ENTRIES (new pager board) [342]
; 2124 PT DIR WR=20,1 ;WRITE PAGE TABLE DIRECTORY
; 2125 PT WR=10,1 ;WRITE PAGE TABLE ENTRY SELECTED BY VMA
; 2126 PT DIR CLR=1 ;SELECT FOR CLEARING PT DIR (PAG3)
; 2127 NORMAL=0 ;RESET PT WR SELECTION
; 2128 MTR CTL/=<81:83> ;FUNCTION DECODING FOR METERS (MTR3)
; 2129 CLR TIME=0 ; USUALLY USED WITH DIAG FUNC
; 2130 CLR PERF=1
; 2131 CLR E CNT=2
; 2132 CLR M CNT=3
; 2133 LD PA LH=4
; 2134 LD PA RH=5
; 2135 CONO MTR=6
; 2136 CONO TIM=7
; 2137
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 18
; DEFINE.MIC[4,30] 17:12 9-Aug-84 CONTROL RAM DEFINITIONS -- MAGIC NUMBER FIELD
; 2138 ;I/O FUNCTIONS
; 2139
; 2140 EBUS CTL/=<75:83> ;ENABLED BY COND/EBUS CTL (APR3)
; 2141 GRAB EEBUS=400 ;"EBUS RETURN" TAKES ECL EBUS FOR EBOX
; 2142 REQ EBUS=200
; 2143 REL EBUS=100 ; (CON3)
; 2144 EBUS DEMAND=60 ;ASSERT DEMAND, KEEP CS, FUNC
; 2145 EBUS NODEMAND=20;DROP DEMAND, KEEP CS, FUNC
; 2146 ; CTL_IR=10 ;SELECT F01 & F02 FROM IR
; 2147 ; DISABLE CS=4 ;TURN OFF CONTROLLER SELECT
; 2148 ; DATAIO=2 ;0 FOR CONI/O
; 2149 ; INPUT=1 ;0 FOR OUTPUT
; 2150 IO INIT=30 ;ENABLE IR3-9 TO EBUS CONTROLLER SELECT,
; 2151 ; IR10-12 (DECODED) TO FUNCTION
; 2152 ; AND AR ONTO EBUS IF FUNCTION IS OUTPUT
; 2153 DATAO=26 ;0'S TO CS, DATAO TO FCN, AND AR TO EBUS
; 2154 DATAI=27 ;0'S TO CS, DATAI TO FCN
; 2155 REL EEBUS=0 ;LEGGO
; 2156 DIAG FUNC/=<75:83> ;ENABLED BY COND/DIAG FUNC (CTL3)
; 2157 .5 USEC=400,3 ;STRETCH CLOCK TO LET EBUS SETTLE (CON?)
; 2158 LD PA LEFT=404,3 ;LH PERF ANAL CONTROLS FROM RH (MTR)
; 2159 LD PA RIGHT=405,3 ;RH PA CONTROLS FROM RH (MTR)
; 2160 CONO MTR=406,3 ;ACCOUNTING CONTROLS (MTR)
; 2161 CONO TIM=407,3 ;INTERVAL TIMER CONTROLS (MTR)
; 2162 CONO APR=414,3 ; (CON3)
; 2163 CONO PI=415,3 ; (CON3)
; 2164 CONO PAG=416,3 ;CACHE & PAGING CTL (CON3)
; 2165 DATAO APR=417,3 ;ADDRESS BREAK (CON3)
; 2166 DATAO PAG=620,3 ;AC BLOCKS & PREV CONTXT (CON3)
; 2167 LD AC BLKS=425,3 ;FORCE LOADING AC BLOCKS
; 2168 LD PCS+CWSX=426,3 ;FORCE LOADING PREV CONTXT SEC, CWSX
; 2169 CONI PI(R)=500,3 ;PI HOLD & ACTIVE TO LH (PI)
; 2170 CONI PI(L)=501,3 ;PI GEN TO LH (PI)
; 2171 CONI APR(R)=510,3 ;APR INTERRUPT & PIA TO LH (APR6)
; 2172 RD TIME=510,3 ;TIME BASE TO RH (MTR5)
; 2173 DATAI PAG(L)=511,3 ;AC BLOCKS, PREV CONTXT TO LH (APR6)
; 2174 RD PERF CNT=511,3 ;PERFORMANCE COUNT TO RH (MTR5)
; 2175 CONI APR(L)=512,3 ;APR INTERRUPT ENABLES TO LH (APR6)
; 2176 RD EBOX CNT=512,3 ;EBOX COUNT TO RH (MTR5)
; 2177 DATAI APR=513,3 ;ADDR BREAK CONDITIONS TO LH (APR6)
; 2178 RD CACHE CNT=513,3 ;CACHE COUNT TO RH (MTR5)
; 2179 RD INTRVL=514,3 ;INTERVAL TIMER TO RH (MTR5)
; 2180 RD PERIOD=515,3 ;PERIOD REGISTER TO RH (MTR5)
; 2181 CONI MTR=516,3 ;CONTROLS & PIA TO RH (MTR5)
; 2182 RD MTR REQ=517,3 ;ENCODED UPDATE REQUEST TO 20-22 (MTR5)
; 2183 CONI PI(PAR)=530,3 ;WRITE EVEN PARITY ENABLES TO RH (CON1)
; 2184 CONI PAG=531,3 ;CACHE & TRAP CTL TO RH (CON1)
; 2185 RD EBUS REG=567,3 ;EBUS REGISTER IN MBOX (MBZ1 & MBC1)
; 2186
; 2187 PARITY/=0,0,0,P ;USE ANY AVAILABLE FIELD FOR PARITY
; 2188
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 19
; DEFINE.MIC[4,30] 17:12 9-Aug-84 DISPATCH RAM DEFINITIONS
; 2189 .TOC "DISPATCH RAM DEFINITIONS"
; 2190 ;FIELDS ARE ARRANGED FOR EASY READING, NOT COMPACTNESS
; 2191
; 2192 .DCODE
; 2193 A/=<0:2> ;OPERAND FETCH MODE
; 2194 IMMED=0 ;IMMEDIATE
; 2195 IMMED-PF=1 ;IMMEDIATE, START PREFETCH
; 2196 .IF/MODEL.B
; 2197 ADDR=2 ;FULL EFFECTIVE ADDRESS
; 2198 .ENDIF/MODEL.B
; 2199 WR-TST=3 ;TEST WRITABILITY
; 2200 READ=4 ;READ ONLY
; 2201 READ-PF=5 ;READ, THEN PREFETCH
; 2202 RD-WR=6 ;READ WRITE (SEPARATE CYCLES)
; 2203 RD-P-WR=7 ;READ PAUSE WRITE
; 2204
; 2205 B/=<3:5> ;STORE RESULTS AT--
; 2206 DBL AC=1 ;DOUBLE RESULT TO AC & AC+1
; 2207 DBL BOTH=2 ;MULB, DIVB, ETC
; 2208 SELF=3 ;SELF MODE INSTRUCTIONS
; 2209 AC=5 ;SINGLE RESULT TO AC, PREFETCH IN PROG
; 2210 MEM=6 ;RESULT TO MEMORY
; 2211 BOTH=7 ;SINGLE RESULT TO MEMORY AND AC
; 2212
; 2213 SJC-=3 ;SKIP JUMP COMPARE CONTROLS
; 2214 SJCL=2
; 2215 SJCE=1
; 2216 SJCLE=0
; 2217 SJCA=7
; 2218 SJCGE=6
; 2219 SJCN=5
; 2220 SJCG=4
; 2221 B0/=<3:3> ;INVERTS VARIOUS TEST, SKIP, AND JUMP CONTROLS
; 2222 CRY0(0)=0 ;TEST TST CAUSES PC SKIP IF CRY0=0
; 2223 CRY0(1)=1 ; SAME IF CRY0=1
; 2224 B1-2/=<4:5> ;FLOATING RESULT STORE MODE
; 2225 AC=1 ;RESULT TO AC
; 2226 MEM=2 ;RESULT JUST TO MEM
; 2227 BOTH=3 ;RESULT TO BOTH
; 2228
; 2229 PARITY/=<11:11>P
; 2230
; 2231 J/=<14:23> ;EXECUTOR (40&20-BITS ALWAYS 0)
; 2232 .UCODE
; 2233
; 2234 .BIN
; 2235
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 1
; MACRO.MIC[4,30] 17:12 9-Aug-84 CRAM Macros--Miscellaneous and A
; 2236 .TOC "CRAM Macros--Miscellaneous and A"
; 2237 .NOBIN
; 2238 ;
; 2239 ; All the CRAM macros have been alphabetized for easy reference. We have
; 2240 ; defined "_" to be alphabetically lower than the alphabet (although its
; 2241 ; ASCII representation makes it higher) so that macros such as AR_AR+1
; 2242 ; will precede ARX_AR+1, for example (this seems more intuitive).
; 2243 ;
; 2244 []_[]*[] "@1/AD, ADA/@2, ADB/@3"
; 2245 []_[]*FM[] "@3, ADA/@2, ADB/FM, @1/AD"
; 2246 []_[]-FM[] "@3, ADA/@2, ADB/FM, @1/AD, AD/A-B"
; 2247 []_#[] "@1_#,#/@2"
; 2248 []_ADA[] "@1/AD, ADA/@2, AD/A"
; 2249 []_ADB[] "@1/AD, ADA EN/0S, ADB/@2, AD/B"
; 2250 []_FM[] "@1/AD, ADA EN/0S, ADB/FM, @2, AD/B"
; 2251
; 2252 (AR+ARX+MQ)*.25 "ADA/AR,AD/A,AR/AD*.25,ARX/ADX*.25,(MQ)*.25"
; 2253 (AR+ARX+MQ)*2 "ADA/AR,AD/A,AR/AD*2,ARX/ADX*2,(MQ)*2"
; 2254 (MQ)*.25 "COND/REG CTL,MQ/MQM SEL,MQ CTL/MQ*.25"
; 2255 (MQ)*2 "COND/REG CTL,MQ/MQ SEL,MQ CTL/MQ*2"
; 2256
; 2257 .IF/MODEL.B
; 2258 A INDRCT "MEM/EA CALC,EA CALC/A IND,VMA/LOAD"
; 2259 A READ "VMA/PC+1,DISP/DRAM A RD,MEM/A RD,#/300,J/0"
;;2260 .IFNOT/MODEL.B
;;2261 A INDRCT "MEM/A IND,VMA/LOAD"
;;2262 A READ "VMA/PC+1,DISP/DRAM A RD,MEM/A RD,#/0,J/0"
; 2263 .ENDIF/MODEL.B
; 2264 ABORT INSTR "COND/SPEC INSTR,SPEC INSTR/INSTR ABORT"
; 2265 AC0 "FMADR/AC0"
; 2266 AC0_AR "FMADR/AC0,COND/FM WRITE"
; 2267 AC1_AR "FMADR/AC1,COND/FM WRITE"
; 2268 AC2_AR "FMADR/AC2,COND/FM WRITE"
; 2269 AC3_AR "FMADR/AC3,COND/FM WRITE"
; 2270 .IF/MODEL.B
; 2271 AC4 "FMADR/AC+#,AC-OP/AC+#,AC#/4"
;;2272 .IFNOT/MODEL.B
;;2273 AC4 "FMADR/AC4"
; 2274 .ENDIF/MODEL.B
; 2275 AC4_AR "AC4,COND/FM WRITE"
; 2276 .IF/MODEL.B
; 2277 AC5 "FMADR/AC+#,AC-OP/AC+#,AC#/5"
;;2278 .IFNOT/MODEL.B
;;2279 AC5 "FMADR/AC5"
; 2280 .ENDIF/MODEL.B
; 2281 AC5_AR "AC5,COND/FM WRITE"
; 2282 AD FLAGS "COND/AD FLAGS"
; 2283 AD LONG "SPEC/AD LONG"
; 2284 ADMSK "R15" ;23 ONES
; 2285
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 2
; MACRO.MIC[4,30] 17:12 9-Aug-84 CRAM Macros--AR
; 2286 .TOC "CRAM Macros--AR"
; 2287
; 2288 AR_[] AND FM[] "ADA/@1,ADB/FM,@2,AD/AND,AR/AD"
; 2289
; 2290 AR_(AR+2BR)*.25 "ADA/AR,ADB/BR*2,AD/A+B,AR/AD*.25"
; 2291 AR_(AR+BR)*.25 "ADA/AR,ADB/BR,AD/A+B,AR/AD*.25"
; 2292 AR_(AR-2BR)*.25 "ADA/AR,ADB/BR*2,AD/A-B,AR/AD*.25"
; 2293 AR_(AR-BR)*.25 "ADA/AR,ADB/BR,AD/A-B,AR/AD*.25"
; 2294 AR_(ARX OR AR*4)*.25 "ADA/ARX,ADB/AR*4,AD/OR,AR/AD*.25"
; 2295 AR_-AC0 "FMADR/AC0,ADB/FM,ADA EN/0S,AD/A-B,AR/AD"
; 2296 AR_-AR "ADA EN/0S,ADB/AR*4,AD/A-B,AR/AD*.25"
; 2297 AR_-AR LONG "GEN -AR LONG,AR_AD*.25 LONG"
; 2298 AR_-BR "ADB/BR,ADA EN/0S,AD/A-B,AR/AD"
; 2299 AR_-BR LONG "ADA EN/0S,ADB/BR,AD/A-B,AR/AD,ARX/ADX,SPEC/AD LONG"
; 2300 AR_-BR*2 LONG "ADA EN/0S,ADB/BR*2,AD/A-B,AR/AD,ARX/ADX,SPEC/AD LONG"
; 2301 AR_-BRX "ADB/BR,ADA EN/0S,AD/A-B,AR/ADX"
; 2302 AR_-DLEN "DLEN,ADB/FM,ADA EN/0S,AD/A-B,AR/AD"
; 2303 AR_-SLEN "SLEN,ADB/FM,ADA EN/0S,AD/A-B,AR/AD"
; 2304 AR_0.C "COND/ARL IND,CLR/AR"
; 2305 AR_0.M "MEM/ARL IND,CLR/AR"
; 2306 AR_0.S "SPEC/ARL IND,CLR/AR"
; 2307 AR_0S "AD/0S,AR/AD"
; 2308 AR_1 "ADA EN/0S,AD/A+1,AR/AD"
; 2309 AR_1 LONG "ADA EN/0S,AD/A+1,AR/AD*.25,ARX/ADX"
; 2310 AR_1S "AD/1S,AR/AD"
; 2311 AR_2 "ADA EN/0S,AD/A+1,AR/AD*2"
; 2312 AR_2(AR*BR) "ADA/AR,ADB/BR,AR/AD*2"
; 2313 AR_2(AR+1) "ADA/AR,AD/A+1,AR/AD*2"
; 2314 AR_2(AR+BR) "AR_2(AR*BR),AD/A+B"
; 2315 AR_2(AR+BR) LONG "AR_2(AR*BR),AD/A+B,ARX/ADX*2,SPEC/AD LONG"
; 2316 AR_2(AR-BR) "AR_2(AR*BR),AD/A-B"
; 2317
; 2318 AR_AC0 "FMADR/AC0,ADB/FM,AD/B,AR/AD"
; 2319 AR_AC0 COMP "FMADR/AC0,ADB/FM,AD/SETCB,AR/AD"
; 2320 AR_AC0+1 "ADA EN/0S,ADB/FM,FMADR/AC0,AD/A+B+1,AR/AD"
; 2321 AR_AC1 "FMADR/AC1,ADB/FM,AD/B,AR/AD"
; 2322 AR_AC1 COMP "FMADR/AC1,ADB/FM,AD/SETCB,AR/AD"
; 2323 AR_AC1*2 "FMADR/AC1,ADB/FM,AD/B,AR/AD*2"
; 2324 AR_AC2 "FMADR/AC2,ADB/FM,AD/B,AR/AD"
; 2325 AR_AC3 "FMADR/AC3,ADB/FM,AD/B,AR/AD"
; 2326 AR_AC3*2 "FMADR/AC3,ADB/FM,AD/B,AR/AD*2"
; 2327 AR_AC4 "AC4,ADB/FM,AD/B,AR/AD"
; 2328 AR_AD*.25 LONG "AR/AD*.25,ARX/ADX*.25,SPEC/AD LONG"
; 2329 AR_ADMSK AND VMA HELD "COND/SEL VMA,ADA/PC,ADB/FM,ADMSK,AD/AND,AR/AD"
; 2330
; 2331 AR_AR AND ADMSK "ADMSK,ADB/FM,ADA/AR,AD/AND,AR/AD"
; 2332 .IF/KLPAGE
; 2333 AR_AR AND CSMSK "CSMSK,ADB/FM,ADA/AR,AD/AND,AR/AD"
; 2334 AR_AR OR PUR "PUR,ADB/FM,ADA/AR,AD/OR,AR/AD"
; 2335 .ENDIF/KLPAGE
; 2336 AR_AR SWAP "SH/AR SWAP,AR/SH"
; 2337
; 2338 AR_AR*.25 "ADA/AR,AD/A,AR/AD*.25"
; 2339 AR_AR*.25 LONG "ADA/AR,AD/A,AR/AD*.25,ARX/ADX*.25"
; 2340 AR_AR*.5 "ADA/AR,AD/A*2,AR/AD*.25"
; 2341 AR_AR*.5 LONG "ADA/AR,AD/A*2,SPEC/AD LONG,AR/AD*.25,ARX/ADX*.25"
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 2-1
; MACRO.MIC[4,30] 17:12 9-Aug-84 CRAM Macros--AR
; 2342 AR_AR*1.25 LONG "ADA/AR,ADB/AR*4,AD/A+B,AR_AD*.25 LONG"
; 2343 AR_AR*10 "ADA/AR,ADB/AR*4,AD/A+B,AR/AD*2"
; 2344 AR_AR*10 LONG "ADA/AR,ADB/AR*4,AD/A+B,AR/AD*2,ARX/ADX*2,SPEC/AD LONG"
; 2345 AR_AR*2 "ADA/AR,AD/A,AR/AD*2"
; 2346 AR_AR*2 LONG "ADA/AR,AD/A,AR/AD*2,ARX/ADX*2"
; 2347 AR_AR*4 "ADB/AR*4,AD/B,AR/AD"
; 2348 AR_AR*4 LONG "ADB/AR*4,AD/B,AR/AD,ARX/ADX"
; 2349 AR_AR*5 LONG "ADA/AR,ADB/AR*4,AD/A+B,AR/AD,ARX/ADX,SPEC/AD LONG"
; 2350 AR_AR*8 "ADB/AR*4,AD/B,AR/AD*2"
; 2351 AR_AR*8 LONG "ADB/AR*4,AD/B,AR/AD*2,ARX/ADX*2"
; 2352 AR_AR*AC0 "FMADR/AC0,ADB/FM,ADA/AR,AR/AD" ;GENERAL BINARY OPERATION
; 2353 AR_AR*AC1 "FMADR/AC1,ADB/FM,ADA/AR,AR/AD"
; 2354 AR_AR*BR "ADA/AR,ADB/BR,AR/AD"
; 2355 AR_AR*EXPMSK "EXPMSK,ADB/FM,ADA/AR,AR/AD" ;[224]
; 2356 AR_AR*MSK "MSK,ADB/FM,ADA/AR,AR/AD"
; 2357 AR_AR*SFLGS "SFLGS,ADB/FM,ADA/AR,AR/AD"
; 2358 AR_AR*SLEN "SLEN,ADB/FM,ADA/AR,AR/AD"
; 2359 AR_AR*T0 "T0,ADB/FM,ADA/AR,AR/AD"
; 2360
; 2361 AR_AR+1 "ADA/AR,AD/A+1,AR/AD"
; 2362 AR_AR+1 LONG "AR_AR+1,ARX/ADX,SPEC/AD LONG"
; 2363 AR_AR+1-AR0 "ADA/AR,AD/A+1,AR/AD,SPEC/XCRY AR0"
; 2364 AR_AR+BR "ADA/AR,ADB/BR,AD/A+B,AR/AD"
; 2365 AR_AR+BR LONG "AR_AR+BR,ARX/ADX,SPEC/AD LONG"
; 2366 AR_AR+E1 "E1,ADB/FM,ADA/AR,AD/A+B,AR/AD"
; 2367 AR_AR+FM[] "ADA/AR,ADB/FM,@1,AD/A+B,AR/AD";[343]
; 2368 .IF/KLPAGE
; 2369 AR_AR+SBR "SBR,ADB/FM,ADA/AR,AD/A+B,AR/AD"
; 2370 .ENDIF/KLPAGE
; 2371 AR_AR+T0 "T0,ADB/FM,ADA/AR,AD/A+B,AR/AD"
; 2372 AR_AR+T1 "T1,ADB/FM,ADA/AR,AD/A+B,AR/AD"
;;2373 .IF/TRXDEF
;;2374 AR_AR+TRB "TRB,ADB/FM,ADA/AR,AD/A+B,AR/AD"
;;2375 AR_AR+TRX "TRX,ADB/FM,ADA/AR,AD/A+B,AR/AD"
; 2376 .ENDIF/TRXDEF
; 2377 AR_AR+XR "GEN AR+XR,AR/AD"
; 2378
; 2379 AR_AR-1 "ADA/AR,AD/A-1,AR/AD"
; 2380 AR_AR-BR "ADA/AR,ADB/BR,AD/A-B,AR/AD"
; 2381 AR_AR-BR LONG "AR_AR-BR,ARX/ADX,SPEC/AD LONG"
; 2382 AR_AR-BR-1 "GEN AR*BR,AD/A-B-1,AR/AD"
; 2383 AR_AR-T0 "T0,ADB/FM,ADA/AR,AD/A-B,AR/AD"
; 2384
; 2385 AR_ARX "SH/ARX,AR/SH"
; 2386 AR_ARX (AD) "ADA/ARX,AD/A,AR/AD"
; 2387 AR_ARX (ADX) "ADA EN/EN,AD/A,AR/ADX"
; 2388 AR_ARX AND ADMSK "ADMSK,ADB/FM,ADA/ARX,AD/AND,AR/AD"
; 2389 AR_ARX ANDC ADMSK "ADMSK,ADB/FM,ADA/ARX,AD/ANDCB,AR/AD"
; 2390 AR_ARX COMP "ADA EN/EN,AD/SETCA,AR/ADX"
; 2391 .IF/KLPAGE
; 2392 AR_ARX OR PUR "PUR,ADB/FM,ADA/ARX,AD/OR,AR/AD"
; 2393 .ENDIF/KLPAGE
; 2394 AR_ARX*.25 "ADA/ARX,AD/A,AR/AD*.25"
; 2395 AR_ARX*.25-AR-1 "ADB/AR*4,ADA/ARX,AD/A-B-1,AR/AD*.25"
; 2396 AR_ARX*2 "ADA/ARX,AD/A,AR/AD*2"
; 2397 AR_ARX*4 "ADB/AR*4,AD/B,AR/ADX"
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 2-2
; MACRO.MIC[4,30] 17:12 9-Aug-84 CRAM Macros--AR
; 2398 AR_ARX*4 COMP "ADB/AR*4,AD/SETCB,AR/ADX"
; 2399 AR_ARX*AC1 "FMADR/AC1,ADB/FM,ADA/ARX,AR/AD"
; 2400 AR_ARX*BR "ADA/ARX,ADB/BR,AR/AD"
; 2401 AR_ARX*BRX "ADA/AR,ADB/BR,AR/ADX"
; 2402 AR_ARX*E1 "E1,ADB/FM,ADA/ARX,AR/AD"
; 2403 AR_ARX+1 (AD) "ADA/ARX,AD/A+1,AR/AD"
; 2404 AR_ARX+AR*4 "ADA/ARX,ADB/AR*4,AD/A+B,AR/AD"
; 2405 AR_ARX+BR "ADA/ARX,ADB/BR,AD/A+B,AR/AD"
; 2406 AR_ARX+BRX+1 "ADA EN/EN,ADB/BR,AD/A+B+1,AR/ADX" ;[343]
; 2407 AR_ARX+XR "GEN ARX+XR,AR/AD"
; 2408 AR_ARX-1 "ADA EN/EN,AD/A-1,AR/ADX"
; 2409 AR_ARX-BR "ADA/ARX,ADB/BR,AD/A-B,AR/AD"
; 2410
; 2411 AR_BR "ADB/BR,AD/B,AR/AD"
; 2412 AR_BR COMP "ADB/BR,AD/SETCB,AR/AD"
; 2413 AR_BR COMP LONG "ADB/BR,AD/SETCB,AR/AD,ARX/ADX"
; 2414 AR_BR LONG "ADB/BR,AD/B,AR/AD,ARX/ADX"
; 2415 AR_BR OR ARX "ADA/ARX,ADB/BR,AD/OR,AR/AD"
; 2416 AR_BR*.5 "ADB/BR*2,AD/B,AR/AD*.25"
; 2417 AR_BR*.5 LONG "ADB/BR*2,AD/B,AR/AD*.25,ARX/ADX*.25"
; 2418 AR_BR*2 "ADB/BR*2,AD/B,AR/AD"
; 2419 AR_BR*2 LONG "ADB/BR*2,AD/B,AR/AD,ARX/ADX"
; 2420 AR_BR*4 "ADB/BR*2,AD/B,AR/AD*2" ;[230]
; 2421 AR_BR*4 LONG "ADB/BR*2,AD/B,AR/AD*2,ARX/ADX*2"
; 2422 AR_BR+1 "ADB/BR,ADA EN/0S,AD/A+B+1,AR/AD"
; 2423 AR_BR+1 LONG "ADA EN/0S,ADB/BR,AD/A+B+1,AR/AD,ARX/ADX,SPEC/AD LONG"
; 2424 AR_BRX "ADB/BR,AD/B,AR/ADX"
; 2425 AR_BRX+1 "ADA EN/0S,ADB/BR,AD/A+B+1,AR/ADX"
; 2426
; 2427 AR_CACHE CNT "DIAG IN,DIAG FUNC/RD CACHE CNT"
; 2428 AR_DLEN "DLEN,AR_FM"
; 2429 AR_DLEN COMP "DLEN,ADB/FM,AD/SETCB,AR/AD"
; 2430 AR_DLEN+1 "DLEN,ADB/FM,ADA EN/0S,AD/A+B+1,AR/AD"
; 2431 AR_DSTP "DSTP,AR_FM"
; 2432 AR_DSTP+1 "DSTP,ADB/FM,ADA EN/0S,AD/A+B+1,AR/AD"
; 2433 AR_DSTP2 "DSTP2,AR_FM"
; 2434 AR_DSTP2+1 "DSTP2,ADB/FM,ADA EN/0S,AD/A+B+1,AR/AD"
; 2435 AR_DSTW "DSTW,AR_FM"
; 2436 AR_E0 "E0,AR_FM"
; 2437 AR_E1 "E1,AR_FM"
; 2438 AR_EBOX CNT "DIAG IN,DIAG FUNC/RD EBOX CNT"
; 2439 AR_EBUS "AR/EBUS,TIME/5T"
; 2440 AR_EBUS REG "DIAG IN,DIAG FUNC/RD EBUS REG"
; 2441 AR_FILL "FILL,AR_FM"
; 2442 AR_FM "ADB/FM,AD/B,AR/AD"
; 2443 AR_FM[] "AR/AD, AD/B, ADB/FM, @1" ;[274]
; 2444 .IF/MODEL.B
; 2445 AR_FM(#) "FMADR/AC+#,AC-OP/AC+#,ADB/FM,AD/B,AR/AD"
; 2446 .ENDIF/MODEL.B
; 2447 AR_FM(VMA) "FMADR/VMA,ADB/FM,AD/B,AR/AD"
; 2448 AR_INTERVAL "DIAG IN,DIAG FUNC/RD INTRVL"
; 2449
; 2450 AR_MEM "MEM/MB WAIT,FMADR/VMA,ADB/FM,AD/B"
; 2451 AR_MQ "ADA/MQ,AD/A,AR/AD"
; 2452 AR_MQ COMP "ADA/MQ,AD/SETCA,AR/AD"
; 2453 AR_MQ*.25 "ADA/MQ,AD/A,AR/AD*.25"
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 2-3
; MACRO.MIC[4,30] 17:12 9-Aug-84 CRAM Macros--AR
; 2454 AR_MQ*2 "ADA/MQ,AD/A,AR/AD*2"
; 2455 AR_MQ*4 "ADA/MQ,AD/A*2,AR/AD*2"
; 2456 AR_MQ*AC1 "FMADR/AC1,ADB/FM,ADA/MQ,AR/AD"
; 2457 AR_MQ*AC2 "FMADR/AC2,ADB/FM,ADA/MQ,AR/AD"
; 2458 AR_MQ*AC3 "FMADR/AC3,ADB/FM,ADA/MQ,AR/AD"
; 2459 AR_MQ+1 "ADA/MQ,AD/A+1,AR/AD"
; 2460 AR_MQ+AC0 "FMADR/AC0,ADB/FM,ADA/MQ,AD/A+B,AR/AD"
; 2461 AR_MQ+BR "ADA/MQ,ADB/BR,AD/A+B,AR/AD" ;[343]
; 2462 AR_MQ-1 "ADA/MQ,AD/A-1,AR/AD"
; 2463 AR_MQ-BR "ADA/MQ,ADB/BR,AD/A-B,AR/AD"
; 2464 AR_MTR REQ "DIAG IN,DIAG FUNC/RD MTR REQ"
; 2465 AR_PC "ADA/PC,AD/A,AR/AD"
; 2466 AR_PC FLAGS "ADMSK,ADB/FM,ADA/PC,AD/ANDCB,AR/AD"
; 2467 AR_PC+1 "ADA/PC,AD/A+1,AR/AD,SPEC/SAVE FLAGS"
; 2468 AR_PERF CNT "DIAG IN,DIAG FUNC/RD PERF CNT"
; 2469 AR_PERIOD "DIAG IN,DIAG FUNC/RD PERIOD"
; 2470 .IF/KLPAGE
; 2471 AR_PUR+AR0 "PUR,ADB/FM,ADA EN/0S,AD/A+B,SPEC/XCRY AR0,AR/AD"
; 2472 .ENDIF/KLPAGE
; 2473
; 2474 AR_SERIAL "AR/ARMM,COND/REG CTL,AR CTL/ARR LOAD"
; 2475 AR_SFLGS "SFLGS,AR_FM"
; 2476 AR_SHIFT "SH/SHIFT AR!ARX,AR/SH"
; 2477 AR_SIGN "AD/XCRY-1,SPEC/XCRY AR0,AR/AD"
; 2478 AR_SLEN "SLEN,AR_FM"
; 2479 AR_SLEN COMP "SLEN,ADB/FM,AD/SETCB,AR/AD"
; 2480 AR_SLEN+1 "SLEN,ADB/FM,ADA EN/0S,AD/A+B+1,AR/AD"
; 2481 AR_SRCP "SRCP,AR_FM"
; 2482 AR_SRCP+1 "SRCP,ADB/FM,ADA EN/0S,AD/A+B+1,AR/AD"
; 2483 AR_SRCP2 "SRCP2,AR_FM"
; 2484 AR_SRCP2+1 "SRCP2,ADB/FM,ADA EN/0S,AD/A+B+1,AR/AD"
; 2485 AR_SV.AR "SV.AR,AR_FM"
; 2486 .IF/KLPAGE
; 2487 AR_SV.ARX "SV.ARX,AR_FM"
; 2488 AR_SV.BR "SV.BR,AR_FM"
; 2489 AR_SV.PFW "SV.PFW,AR_FM"
; 2490 AR_SV.SC "SV.SC,AR_FM"
; 2491 AR_SV.VMA "SV.VMA,AR_FM"
; 2492 .ENDIF/KLPAGE
; 2493 AR_SWD "SWD,AR_FM"
; 2494
; 2495 AR_T0 "T0,AR_FM"
; 2496 AR_T1 "T1,AR_FM"
; 2497 AR_T2 "T2,AR_FM"
; 2498 AR_TIME BASE "DIAG IN,DIAG FUNC/RD TIME"
;;2499 .IF/TRXDEF
;;2500 AR_TRB "TRB,AR_FM"
;;2501 AR_TRX "TRX,AR_FM"
;;2502 AR_TRX+1 "TRX,ADB/FM,ADA EN/0S,AD/A+B+1,AR/AD"
;;2503 AR_TRX1 "TRX1,AR_FM"
;;2504 AR_TRX2 "TRX2,AR_FM"
;;2505 AR_TRX2+1 "TRX2,ADB/FM,ADA EN/0S,AD/A+B+1,AR/AD"
;;2506 AR_TRX3 "TRX3,AR_FM"
;;2507 AR_TRX3+1 "TRX3,ADB/FM,ADA EN/0S,AD/A+B+1,AR/AD"
; 2508 .ENDIF/TRXDEF
; 2509 AR_VMA HELD "COND/SEL VMA,AR_PC"
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 2-4
; MACRO.MIC[4,30] 17:12 9-Aug-84 CRAM Macros--AR
; 2510 AR_XR "FMADR/XR,ADB/FM,AD/B,AR/AD"
; 2511
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 3
; MACRO.MIC[4,30] 17:12 9-Aug-84 CRAM Macros--AR Miscellaneous, ARL, and ARR
; 2512 .TOC "CRAM Macros--AR Miscellaneous, ARL, and ARR"
; 2513
; 2514 AR+ARX+MQ_0.M "MEM/ARL IND,CLR/AR+ARX+MQ"
; 2515 AR+MQ_0.M "MEM/ARL IND,CLR/AR+MQ"
; 2516 AR+MQ_0.S "SPEC/ARL IND,CLR/AR+MQ"
; 2517
; 2518 AR0-3 DISP "SH/AR,DISP/SH0-3"
; 2519 AR0-8_# "COND/LD AR0-8,AR/ARMM,ARMM/#"
; 2520 AR0-8_# AND AR0-8 "SCADA/#,SCADB/AR0-8,SCAD/AND,AR0-8_SCAD#"
; 2521 AR0-8_# OR AR0-8 "SCADA/#,SCADB/AR0-8,SCAD/OR,AR0-8_SCAD#"
; 2522 AR0-8_#+SC "SCADA/#,SCADB/SC,SCAD/A+B,AR0-8_SCAD#"
; 2523 AR0-8_-SC-1 "SCADA EN/0S,SCADB/SC,SCAD/A-B-1,AR0-8_SCAD"
; 2524 AR0-8_FE "SCADA/FE,SCAD/A,AR0-8_SCAD"
; 2525 AR0-8_FE OR # "SCADA/FE,SCADB/#,SCAD/OR,AR0-8_SCAD#"
; 2526 AR0-8_FE OR SC "SCADA/FE,SCADB/SC,SCAD/OR,AR0-8_SCAD.M"
; 2527 AR0-8_FE# "SCADA/FE,SCAD/A,ARMM/SCAD EXP,AR/ARMM,COND/LD AR0-8"
; 2528 AR0-8_FE+# "SCADA/FE,SCADB/#,SCAD/A+B,AR0-8_SCAD#"
; 2529 AR0-8_FE+1 "SCADA/FE,SCAD/A+1,AR0-8_SCAD"
; 2530 AR0-8_FE+SC "SCADA/FE,SCADB/SC,SCAD/A+B,AR0-8_SCAD.M"
; 2531 AR0-8_FE-SC "SCADA/FE,SCADB/SC,SCAD/A-B,AR0-8_SCAD.M"
; 2532 AR0-8_FE.M "SCADA/FE,SCAD/A,AR0-8_SCAD.M"
; 2533 AR0-8_FE.R "GEN FE,AR0-8_SCAD.R"
; 2534 AR0-8_SC "SCADA EN/0S,SCADB/SC,SCAD/A+B,AR0-8_SCAD"
; 2535 AR0-8_SCAD "SPEC/ARL IND,ARL/ARMM,AR0-8/LOAD,ARMM/SCAD EXP"
; 2536 AR0-8_SCAD# "ARMM/SCAD EXP,AR/ARMM,COND/LD AR0-8"
; 2537 AR0-8_SCAD.M "MEM/ARL IND,ARL/ARMM,AR0-8/LOAD,ARMM/SCAD EXP"
; 2538 AR0-8_SCAD.R "ARMM/SCAD EXP,AR/ARMM,COND/REG CTL,AR CTL/AR0-8 LOAD"
; 2539 AR12-17_PC SEC "AR/ARMM,VMAX/PC SEC,COND/LD AR9-17"
; 2540 AR12-17_PREV SEC "AR/ARMM,VMAX/PREV SEC,COND/LD AR9-17"
; 2541 AR18-21 DISP "SH/AR SWAP,DISP/SH0-3"
; 2542
; 2543 ARL_0.C "COND/ARL IND,CLR/ARL"
; 2544 ARL_0.M "MEM/ARL IND,CLR/ARL"
; 2545 ARL_0.S "SPEC/ARL IND,CLR/ARL"
; 2546 ARL_0S "COND/ARL IND,CLR/ARL"
; 2547 ARL_1.M "ADA EN/0S,AD/A+1,SPEC/GEN CRY18,MEM/ARL IND,ARL/AD"
; 2548 ARL_1S "AD/1S,COND/ARL IND,ARL/AD"
; 2549 ARL_1S.M "AD/1S,MEM/ARL IND,ARL/AD"
; 2550 ARL_AC0 "FMADR/AC0,ADB/FM,AD/B,COND/ARL IND,ARL/AD"
; 2551 ARL_ARL "COND/ARL IND,ARL/ARL"
; 2552 ARL_ARL.M "MEM/ARL IND,ARL/ARL"
; 2553 ARL_ARL.S "SPEC/ARL IND,ARL/ARL"
; 2554 ARL_ARR "COND/ARL IND,ARL/SH,SH/AR SWAP"
; 2555 ARL_ARR.M "MEM/ARL IND,ARL/SH,SH/AR SWAP"
; 2556 ARL_ARR.S "SPEC/ARL IND,ARL/SH,SH/AR SWAP"
; 2557 ARL_ARX (ADX) "ADA EN/EN,AD/A,MEM/ARL IND,ARL/ADX"
; 2558 ARL_ARXL "SPEC/ARL IND,SH/ARX,ARL/SH"
; 2559 ARL_ARXL.M "MEM/ARL IND,SH/ARX,ARL/SH"
; 2560 ARL_BRL "ADB/BR,AD/B,COND/ARL IND,ARL/AD"
; 2561 ARL_BRL.M "ADB/BR,AD/B,MEM/ARL IND,ARL/AD"
; 2562 ARL_BRL.S "ADB/BR,AD/B,SPEC/ARL IND,ARL/AD"
; 2563 ARL_SHIFT "MEM/ARL IND,SH/SHIFT AR!ARX,ARL/SH"
; 2564 ARL_SIGN "AD/XCRY-1,SPEC/XCRY AR0,COND/ARL IND,ARL/AD"
; 2565 ARL+ARX+MQ_0.M "MEM/ARL IND,CLR/ARL+ARX+MQ"
; 2566 ARL+ARX_0.M "MEM/ARL IND,CLR/ARL+ARX"
; 2567
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 3-1
; MACRO.MIC[4,30] 17:12 9-Aug-84 CRAM Macros--AR Miscellaneous, ARL, and ARR
; 2568 ARR_0.C "COND/ARL IND,CLR/ARR"
; 2569 ARR_0.M "MEM/ARL IND,CLR/ARR"
; 2570 ARR_0.S "SPEC/ARL IND,CLR/ARR"
; 2571 ARR_0S "AR_0S"
; 2572 ARR_1S "AR_1S"
; 2573 ARR_AC0 "AR_AC0"
; 2574 ARR_AC0.S "SPEC/ARL IND,FMADR/AC0,ADB/FM,AD/B,AR/AD"
; 2575 ARR_AR+1 "AR_AR+1" ;[343]
; 2576 ARR_AR+BR "AR_AR+BR" ;[343]
; 2577 ARR_ARL "SH/AR SWAP,AR/SH"
; 2578 ARR_ARR "AR/AR"
; 2579 ARR_ARX+BR "AR_ARX+BR" ;[343]
; 2580 ARR_BR "ADB/BR,AD/B,COND/ARL IND,AR/AD" ;[252]
; 2581 ARR_PC+1 "ADA/PC,AD/A+1,AR/AD"
; 2582 ARR+MQ_0.S "SPEC/ARL IND,CLR/ARR+MQ"
; 2583
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 4
; MACRO.MIC[4,30] 17:12 9-Aug-84 CRAM Macros--ARX
; 2584 .TOC "CRAM Macros--ARX"
; 2585
; 2586 ARX_-2+MQ0 "AD/1S,ARX/ADX*2" ;[343] -2 if MQ0 = 0
; 2587 ARX_-AC0 "ADA EN/0S,ADB/FM,FMADR/AC0,AD/A-B,ARX/AD"
; 2588 ARX_-BRX "ADB/BR,ADA EN/0S,AD/A-B,ARX/ADX"
; 2589 ARX_-SLEN "SLEN,ADB/FM,ADA EN/0S,AD/A-B,ARX/AD"
; 2590 ARX_0.C "COND/ARL IND,CLR/ARX"
; 2591 ARX_0.M "MEM/ARL IND,CLR/ARX"
; 2592 ARX_0.S "SPEC/ARL IND,CLR/ARX"
; 2593 ARX_0S "AD/0S,ARX/AD"
; 2594 ARX_1 "ADA EN/0S,AD/A+1,ARX/AD"
; 2595 ARX_1B1 "ADA EN/0S,AD/A+1,ARX/ADX*.25"
; 2596 ARX_1B17-1 "ADA EN/0S,AD/A-1,SPEC/GEN CRY18,ARX/AD"
; 2597 ARX_1S "AD/1S,ARX/AD"
; 2598 ARX_2 "ADA EN/0S,AD/A+1,ARX/ADX*2"
; 2599
; 2600 ARX_AC0 "FMADR/AC0,ADB/FM,AD/B,ARX/AD"
; 2601 ARX_AC0 COMP "ADB/FM,FMADR/AC0,AD/SETCB,ARX/AD"
; 2602 ARX_AC0+1 "ADA EN/0S,ADB/FM,FMADR/AC0,AD/A+B+1,ARX/AD"
; 2603 ARX_AC1 "FMADR/AC1,ADB/FM,AD/B,ARX/AD"
; 2604 ARX_AC2 "FMADR/AC2,ADB/FM,AD/B,ARX/AD"
; 2605 ARX_AC3 "FMADR/AC3,ADB/FM,AD/B,ARX/AD"
; 2606 ARX_AC4 "AC4,ADB/FM,AD/B,ARX/AD"
; 2607
; 2608 ARX_AR "SH/AR,ARX/SH"
; 2609 ARX_AR (AD) "ADA/AR,AD/A,ARX/AD"
; 2610 ARX_AR AND ADMSK "ADMSK,ADB/FM,ADA/AR,AD/AND,ARX/AD"
; 2611 ARX_AR ANDCA BR "ADA/AR,ADB/BR,AD/ANDCA,ARX/AD"
; 2612 ARX_AR SIGN "AD/XCRY-1,SPEC/XCRY AR0,ARX/AD"
; 2613 ARX_AR SWAP "SH/AR SWAP,ARX/SH"
; 2614 ARX_AR*2 "ADA/AR,AD/A*2,ARX/AD" ;[343]
; 2615 ARX_AR*4 COMP "ADB/AR*4,AD/SETCB,ARX/AD"
; 2616 ARX_AR*MSK "MSK,ADB/FM,ADA/AR,ARX/AD"
; 2617 ARX_AR+1 "ADA/AR,AD/A+1,ARX/AD"
; 2618 .IF/KLPAGE
; 2619 ARX_AR+CBR "CBR,ADB/FM,ADA/AR,AD/A+B,ARX/AD"
; 2620 .ENDIF/KLPAGE
; 2621 ARX_AR-1 "ADA/AR,AD/A-1,ARX/AD"
; 2622 ARX_AR-BR "ADA/AR,ADB/BR,AD/A-B,ARX/AD" ;[224]
; 2623
; 2624 ARX_ARX AND ADMSK "ADMSK,ADB/FM,ADA/ARX,AD/AND,ARX/AD"
; 2625 ARX_ARX ANDC ADMSK "ADMSK,ADB/FM,ADA/ARX,AD/ANDCB,ARX/AD"
; 2626 ARX_ARX*-6 "ADA EN/EN,ADB/AR*4,AD/A-B,ARX/ADX*2"
; 2627 ARX_ARX*.25 "ADA EN/EN,AD/A,ARX/ADX*.25"
; 2628 ARX_ARX*.5 "ADA EN/EN,AD/A*2,ARX/ADX*.25"
; 2629 ARX_ARX*2 "ADA EN/EN,AD/A,ARX/ADX*2"
; 2630 ARX_ARX*2 COMP "ADA EN/EN,AD/SETCA,ARX/ADX*2"
; 2631 ARX_ARX*4 "ADB/AR*4,AD/B,ARX/ADX"
; 2632 ARX_ARX*4 COMP "ADB/AR*4,AD/SETCB,ARX/ADX"
; 2633 ARX_ARX*8 "ADB/AR*4,AD/B,ARX/ADX*2"
; 2634 ARX_ARX*BRX "ADA/AR,ADB/BR,ARX/ADX"
; 2635 ARX_ARX*EXPMSK "EXPMSK,ADB/FM,ADA/ARX,ARX/AD" ;[224]
; 2636 ARX_ARX+1 "ADA EN/EN,AD/A+1,ARX/ADX"
; 2637 .IF/KLPAGE
; 2638 ARX_ARX+CBR "CBR,ADB/FM,ADA/ARX,AD/A+B,ARX/AD"
; 2639 .ENDIF/KLPAGE
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 4-1
; MACRO.MIC[4,30] 17:12 9-Aug-84 CRAM Macros--ARX
; 2640 ARX_ARX+FM[] "ADA/ARX,ADB/FM,@1,AD/A+B,ARX/AD" ;[343]
; 2641 ARX_ARX-1 "ADA EN/EN,AD/A-1,ARX/ADX"
; 2642 ARX_ARX-1 (AD) "ADA/ARX,AD/A-1,ARX/AD"
; 2643 ARX_ARX-AR*4 "ADA/ARX,ADB/AR*4,AD/A-B,ARX/AD" ;[343]
; 2644
; 2645 ARX_BR "ADB/BR,AD/B,ARX/AD"
; 2646 ARX_BR*2 "ADB/BR*2,AD/B,ARX/AD"
; 2647 ARX_BR+1 "ADB/BR,ADA EN/0S,AD/A+B+1,ARX/AD"
; 2648 ARX_BRX "ADB/BR,AD/B,ARX/ADX"
; 2649 ARX_BRX COMP "ADB/BR,AD/SETCB,ARX/ADX"
; 2650 ARX_BRX+1 "ADA EN/0S,ADB/BR,AD/A+B+1,ARX/ADX"
; 2651 ARX_DSTP "DSTP,ARX_FM"
; 2652 ARX_DSTP2 "DSTP2,ARX_FM"
; 2653 ARX_E1 "E1,ARX_FM"
; 2654 ARX_FILL "FILL,ARX_FM" ;[310]
; 2655 ARX_FM "ADB/FM,AD/B,ARX/AD"
; 2656 ARX_FM[] "ADB/FM,@1,AD/B,ARX/AD" ;[343]
; 2657 ARX_FM(VMA) "FMADR/VMA,ADB/FM,AD/B,ARX/AD"
; 2658 ARX_MEM "MEM/MB WAIT,FMADR/VMA,ADB/FM,AD/B"
; 2659 ARX_MQ-1 "ADA/MQ,AD/A-1,ARX/AD" ;[343]
; 2660
; 2661 ARX_PC "ADA/PC,AD/A,ARX/AD"
; 2662 ARX_PC+1 "ADA/PC,AD/A+1,ARX/AD,SPEC/SAVE FLAGS"
; 2663 ARX_SHIFT "SH/SHIFT AR!ARX,ARX/SH"
; 2664 ARX_SRCP "SRCP,ARX_FM"
; 2665 ARX_SRCP2 "SRCP2,ARX_FM"
; 2666 .IF/KLPAGE
; 2667 ARX_SV.AR "SV.AR,ARX_FM"
; 2668 ARX_SV.ARX "SV.ARX,ARX_FM"
; 2669 ARX_SV.BR "SV.BR,ARX_FM"
; 2670 ARX_SV.VMA "SV.VMA,ARX_FM"
; 2671 .ENDIF/KLPAGE
; 2672 ARX_T0 "T0,ARX_FM"
; 2673 ARX_T2 "T2,ARX_FM"
;;2674 .IF/TRXDEF
;;2675 ARX_TRB "TRB,ARX_FM"
; 2676 .ENDIF/TRXDEF
; 2677 ARX_VMA HELD "COND/SEL VMA,ARX_PC"
; 2678 ARX+MQ_0.M "MEM/ARL IND,CLR/ARX+MQ"
; 2679 ARX+MQ_0.S "SPEC/ARL IND,CLR/ARX+MQ"
; 2680 ARX0_AR35 "ADA/AR,AD/A*2+1,ARX/ADX*.25" ;[337]
; 2681 ARX0_MQ35 "ADA/MQ,AD/A*2+1,ARX/ADX*.25"
; 2682 ARX0-3 DISP "SH/ARX,DISP/SH0-3"
; 2683
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 5
; MACRO.MIC[4,30] 17:12 9-Aug-84 CRAM Macros--B, C, D
; 2684 .TOC "CRAM Macros--B, C, D"
; 2685
; 2686 B DISP "DISP/DRAM B"
; 2687 B WRITE "DISP/DRAM B,MEM/B WRITE"
; 2688 BLKO TIM(L) "SPEC/MTR CTL,DIAG OUT,DIAG FUNC/LD PA LEFT"
; 2689 BLKO TIM(R) "SPEC/MTR CTL,DIAG OUT,DIAG FUNC/LD PA RIGHT"
; 2690 BR_AR LONG "BR/AR,BRX/ARX"
; 2691 BYTE DISP "DISP/BYTE"
;;2692 .IFNOT/MODEL.B
;;2693 BYTE INDRCT "MEM/BYTE IND,VMA/LOAD"
; 2694 .IF/MODEL.B
; 2695 BYTE INDRCT "MEM/EA CALC,EA CALC/BYTE IND,VMA/LOAD"
; 2696 BYTE LOAD "MEM/EA CALC,EA CALC/BYTE LD,VMA/LOAD";[337]
; 2697 .ENDIF/MODEL.B
; 2698 BYTE PREV & CLR SR3 "COND/SR_#,#/640"
; 2699 BYTE PREV & SET SR2 "COND/SR_#,#/622"
; 2700 BYTE PREV & SET SR3 "COND/SR_#,#/641"
; 2701 .IF/MODEL.B
; 2702 BYTE READ "MEM/EA CALC,EA CALC/BYTE RD,VMA/LOAD"
; 2703 BYTE READ PC "MEM/EA CALC,EA CALC/BYTE RD PC,VMA/LOAD"
; 2704 BYTE RPW "MEM/EA CALC,EA CALC/BYTE RPW,VMA/LOAD"
;;2705 .IFNOT/MODEL.B
;;2706 BYTE READ "MEM/BYTE RD,VMA/LOAD"
;;2707 BYTE RPW "MEM/RPW,VMA/AD"
; 2708 .ENDIF/MODEL.B
; 2709
; 2710 .IF/MODEL.B
; 2711 CALL "CALL/CALL"
;;2712 .IFNOT/MODEL.B
;;2713 CALL "SPEC/CALL"
; 2714 .ENDIF/MODEL.B
; 2715 CALL [] "CALL, J/@1"
; 2716 CALL[] "CALL, J/@1"
; 2717 .IF/MODEL.B
; 2718 CALL.C "CALL/CALL"
; 2719 CALL.M "CALL/CALL"
; 2720 CALL.S "CALL/CALL"
;;2721 .IFNOT/MODEL.B
;;2722 CALL.C "COND/ARL IND,CALL/CALL"
;;2723 CALL.M "MEM/ARL IND,CALL/CALL"
;;2724 CALL.S "SPEC/ARL IND,CALL/CALL"
; 2725 .ENDIF/MODEL.B
; 2726 .IF/KLPAGE
; 2727 CBR "P2"
; 2728 .ENDIF/KLPAGE
; 2729 CLR ACC+SET UCODE "COND/EBOX STATE,#/245"
; 2730 CLR ACCOUNT EN "COND/EBOX STATE,#/145"
; 2731 CLR AR "COND/AR CLR"
; 2732 CLR ARX "COND/ARX CLR"
; 2733 CLR EBUS DEMAND "COND/EBUS CTL,EBUS CTL/EBUS NODEMAND"
; 2734 CLR EXP "SCADA EN/0S,SCAD/A,EXP_SCAD"
; 2735 CLR FE "SCADA EN/0S,SCAD/A,FE/SCAD"
; 2736 CLR FPD "SPEC/CLR FPD"
; 2737 CLR MQ "COND/REG CTL,MQ/MQ SEL,MQ CTL/0S"
; 2738 CLR MTR PA EN "COND/EBOX STATE,#/025"
; 2739 CLR P "SCADA EN/0S,SCAD/A,P_SCAD"
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 5-1
; MACRO.MIC[4,30] 17:12 9-Aug-84 CRAM Macros--B, C, D
; 2740 CLR PT LINE "COND/MBOX CTL,MBOX CTL/CLR PT LINE"
; 2741 CLR PT LINE (KEEP) "COND/MBOX CTL,MBOX CTL/CLR PT LINE(NK)"
; 2742 CLR SC "SCADA EN/0S,SCAD/A,SC/SCAD"
; 2743 CLR SPECIAL CYCLE "COND/SPEC INSTR,SPEC INSTR/0"
; 2744 CLR SR2 "COND/SR_#,#/20"
; 2745 CLR SR3 "COND/SR_#,#/40"
; 2746 CLR TRACKS EN "COND/EBOX STATE,#/121"
; 2747 CLR TRK+PA EN "COND/EBOX STATE,#/021"
; 2748 CMS FETCH "VMA/PC+1,MEM/FETCH,FETCH/SKIP"
; 2749 COMP FETCH "AD/XOR,VMA/PC+1,MEM/FETCH,FETCH/COMP"
; 2750 CONI APR(L) "DIAG IN,DIAG FUNC/CONI APR(L)"
; 2751 CONI APR(R) "DIAG IN,DIAG FUNC/CONI APR(R)"
; 2752 CONI MTR "DIAG IN,DIAG FUNC/CONI MTR"
; 2753 CONI PAG "DIAG IN,DIAG FUNC/CONI PAG"
; 2754 CONI PI(L) "DIAG IN,DIAG FUNC/CONI PI(L)"
; 2755 CONI PI(PAR) "DIAG IN,DIAG FUNC/CONI PI(PAR)"
; 2756 CONI PI(R) "DIAG IN,DIAG FUNC/CONI PI(R)"
; 2757 CONO APR "DIAG OUT,DIAG FUNC/CONO APR"
; 2758 CONO MTR "SPEC/MTR CTL,DIAG OUT,DIAG FUNC/CONO MTR"
; 2759 CONO PAG "DIAG OUT,DIAG FUNC/CONO PAG"
; 2760 CONO PI "DIAG OUT,DIAG FUNC/CONO PI"
; 2761 CONO TIM "SPEC/MTR CTL,DIAG OUT,DIAG FUNC/CONO TIM"
; 2762 CONTINUE "COND/SPEC INSTR,SPEC INSTR/CONT"
; 2763 .IF/KLPAGE
; 2764 CSMSK "P0"
; 2765 .ENDIF/KLPAGE
; 2766
; 2767 DATAI APR(L) "DIAG IN,DIAG FUNC/DATAI APR"
; 2768 DATAI PAG(L) "DIAG IN,DIAG FUNC/DATAI PAG(L)"
; 2769 DATAO APR "DIAG OUT,DIAG FUNC/DATAO APR"
; 2770 DATAO PAG(L) "DIAG OUT,DIAG FUNC/DATAO PAG"
; 2771 DIAG IN "COND/DIAG FUNC,TIME/5T,AR/EBUS"
; 2772 DIAG OUT "COND/DIAG FUNC,TIME/5T,ADA/AR,AD/A"
; 2773 DISMISS "SPEC/FLAG CTL,FLAG CTL/DISMISS"
; 2774 DIVIDE "FE_FE-1,DISP/DIV,MQ/MQ*2"
; 2775 DLEN "FMADR/AC3"
; 2776 DLEN_AR "DLEN,FM_AR"
; 2777 DROP EBUS REQ "COND/EBUS CTL,EBUS CTL/0"
; 2778 .IF/MODEL.B
; 2779 DSTP "FMADR/AC+#,AC-OP/AC+#,AC#/4"
;;2780 .IFNOT/MODEL.B
;;2781 DSTP "FMADR/AC4"
; 2782 .ENDIF/MODEL.B
; 2783 DSTP_AR "DSTP,FM_AR"
; 2784 .IF/MODEL.B
; 2785 DSTP2 "FMADR/AC+#,AC-OP/AC+#,AC#/5"
; 2786 .ENDIF/MODEL.B
; 2787 DSTP2_AR "DSTP2,FM_AR"
; 2788 DSTW "R14"
; 2789 DSTW_AR "DSTW,FM_AR"
; 2790
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 6
; MACRO.MIC[4,30] 17:12 9-Aug-84 CRAM Macros--E, F
; 2791 .TOC "CRAM Macros--E, F"
; 2792
; 2793 E0 "R16"
; 2794 E0_AR "E0,FM_AR"
; 2795 E1 "R5"
; 2796 E1_AR "E1,FM_AR"
; 2797 .IF/XADDR
; 2798 EA MOD DISP "DISP/EA MOD,AD/1S"
;;2799 .IFNOT/XADDR
;;2800 EA MOD DISP "DISP/EA MOD"
;;2801 EA TYPE DISP "DISP/EA TYPE"
; 2802 .ENDIF/XADDR
; 2803 EPT FETCH "MEM/LOAD ARX,SPEC/SP MEM CYCLE,SP MEM/EPT FETCH"
; 2804 EPT REF "SPEC/SP MEM CYCLE,SP MEM/EPT"
; 2805 EPT REF CACHE "SPEC/SP MEM CYCLE,SP MEM/EPT CACHE"
; 2806 EXEC REF "SPEC/SP MEM CYCLE,SP MEM/EXEC"
; 2807 EXIT "DISP/DRAM B,MEM/B WRITE,J/ST0"
; 2808 EXIT DBL "MB WAIT,J/ST2AC" ;"I FETCH,J/DSTAC" WHEN TIMING FIXED
; 2809 EXP TEST "COND/REG CTL,EXP TST/AR_EXP"
; 2810 EXP TST "COND/REG CTL,EXP TST/AR_EXP"
; 2811 EXPMSK "R4" ;[224][233]
; 2812 EXP_-SC-1 "SCADA EN/0S,SCADB/SC,SCAD/A-B-1,EXP_SCAD"
; 2813 EXP_-SC-1 TST "SCADA EN/0S,SCADB/SC,SCAD/A-B-1,EXP_SCAD.C,EXP TST"
; 2814 EXP_1 "SCADA EN/0S,SCAD/A+1,EXP_SCAD"
; 2815 EXP_FE TST "SCADA/FE,SCAD/A,EXP_SCAD.C,EXP TST"
; 2816 EXP_SC "SCADA EN/0S,SCADB/SC,SCAD/A+B,EXP_SCAD"
; 2817 EXP_SC.MS "MEM/ARL IND,ARL/ARMM,COND/LD AR0-8,ARMM/SCAD EXP,EXP_SCAD.MS";[224]
; 2818 EXP_SCAD "MEM/ARL IND,ARL/ARMM,AR0-8/LOAD,ARMM/SCAD EXP"
; 2819 EXP_SCAD.C "COND/REG CTL,AR CTL/AR0-8 LOAD,AR/ARMM,ARMM/SCAD EXP"
; 2820 EXP_SCAD.MS "SCADA EN/0S,SCADB/SC,SCAD/A+B"
; 2821 EXP_SIGN "SPEC/ARL IND,ARL/ARMM,AR0-8/LOAD,ARMM/EXP_SIGN"
; 2822 EXP_SIGN.C "COND/ARL IND,ARL/ARMM,AR0-8/LOAD,ARMM/EXP_SIGN"
; 2823 EXP_SIGN.M "MEM/ARL IND,ARL/ARMM,AR0-8/LOAD,ARMM/EXP_SIGN"
; 2824 EXP_SIGN.MS "MEM/ARL IND,ARL/ARMM,COND/LD AR0-8,ARMM/EXP_SIGN";[224]
; 2825 .IF/MODEL.B
; 2826 EXT ADDR "MEM/A RD,#/400,DISP/DRAM B"
; 2827 EXT BYTE READ "MEM/EA CALC,EA CALC/BYTE RD,VMA/LOAD,GLOBAL"
; 2828 EXT BYTE RPW "MEM/EA CALC,EA CALC/BYTE RPW,VMA/LOAD,GLOBAL";[337]
; 2829 EXT INDEX "MEM/A RD,#/400,DISP/DRAM A RD"
; 2830 EXT INDRCT "MEM/EA CALC,EA CALC/A IND,VMA/LOAD"
; 2831 .ENDIF/MODEL.B
; 2832
; 2833 FE_# "SCADA/#,SCAD/A,FE/SCAD"
; 2834 FE_# AND S "SCADA/#,SCADB/AR6-11,SCAD/AND,FE/SCAD"
; 2835 FE_#+AR0-8 "SCADA/#,SCADB/AR0-8,SCAD/A+B,FE/SCAD"
; 2836 FE_#+SC "SCADA/#,SCADB/SC,SCAD/A+B,FE/SCAD"
; 2837 FE_#-SC "SCADA/#,SCADB/SC,SCAD/A-B,FE/SCAD"
; 2838 FE_+# "SCADA EN/0S,SCADB/#,SCAD/A+B,FE/SCAD"
; 2839 FE_-1 "SCADA EN/0S,SCAD/A-1,FE/SCAD"
; 2840 FE_-S "SCADA EN/0S,SCADB/AR6-11,SCAD/A-B,FE/SCAD";[337]
; 2841 FE_-SC-1 "SCADA EN/0S,SCADB/SC,SCAD/A-B-1,FE/SCAD"
; 2842 FE_1 "SCADA EN/0S,SCAD/A+1,FE/SCAD"
; 2843 FE_AR0-8 "SCADA EN/0S,SCADB/AR0-8,SCAD/A+B,FE/SCAD"
; 2844 FE_AR0-8 AND # "SCADA/#,SCADB/AR0-8,SCAD/AND,FE/SCAD"
; 2845 FE_AR0-8 COMP "SCADA EN/0S,SCADB/AR0-8,SCAD/A-B-1,FE/SCAD"
; 2846 FE_EXP "SCADA/AR EXP,SCAD/A,FE/SCAD"
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 6-1
; MACRO.MIC[4,30] 17:12 9-Aug-84 CRAM Macros--E, F
; 2847 FE_EXP+1 "SCADA/AR EXP,SCAD/A+1,FE/SCAD"
; 2848 FE_EXP+SC "SCADA/AR EXP,SCADB/SC,SCAD/A+B,FE/SCAD"
; 2849 FE_EXP-# "SCADA/AR EXP,SCADB/#,SCAD/A-B,FE/SCAD"
; 2850 FE_EXP-1 "SCADA/AR EXP,SCAD/A-1,FE/SCAD"
; 2851 FE_FE AND # "SCADA/FE,SCADB/#,SCAD/AND,FE/SCAD"
; 2852 FE_FE AND AR0-8 "SCADA/FE,SCADB/AR0-8,SCAD/AND,FE/SCAD"
; 2853 FE_FE OR # "SCADA/FE,SCADB/#,SCAD/OR,FE/SCAD"
; 2854 FE_FE OR AR0-8 "SCADA/FE,SCADB/AR0-8,SCAD/OR,FE/SCAD"
; 2855 FE_FE SHRT "COND/FE SHRT,FE/0"
; 2856 FE_FE+# "SCADA/FE,SCADB/#,SCAD/A+B,FE/SCAD"
; 2857 FE_FE+1 "SCADA/FE,SCAD/A+1,FE/SCAD"
; 2858 FE_FE+S "SCADA/FE,SCADB/AR6-11,SCAD/A+B,FE/SCAD"
; 2859 FE_FE+SC "SCADA/FE,SCADB/SC,SCAD/A+B,FE/SCAD"
; 2860 FE_FE-# "SCADA/FE,SCADB/#,SCAD/A-B,FE/SCAD"
; 2861 FE_FE-1 "SCADA/FE,SCAD/A-1,FE/SCAD"
; 2862 FE_FE-S "SCADA/FE,SCADB/AR6-11,SCAD/A-B,FE/SCAD"
; 2863 FE_FE-SC "SCADA/FE,SCADB/SC,SCAD/A-B,FE/SCAD"
; 2864 FE_FE-SC-1 "SCADA/FE,SCADB/SC,SCAD/A-B-1,FE/SCAD" ;[343]
; 2865 FE_P "SCADA/AR0-5,SCAD/A,FE/SCAD"
; 2866 FE_P AND # "SCADA/AR0-5,SCADB/#,SCAD/AND,FE/SCAD"
; 2867 FE_P AND SC "SCADA/AR0-5,SCADB/SC,SCAD/AND,FE/SCAD"
; 2868 FE_P OR # "SCADA/AR0-5,SCADB/#,SCAD/OR,FE/SCAD"
; 2869 FE_P+1 "SCADA/AR0-5,SCAD/A+1,FE/SCAD" ;[343]
; 2870 FE_P+SC "SCADA/AR0-5,SCADB/SC,SCAD/A+B,FE/SCAD"
; 2871 FE_S "SCADA EN/0S,SCADB/AR6-11,SCAD/A+B,FE/SCAD"
; 2872 FE_S+# "SCADA/#,SCADB/AR6-11,SCAD/A+B,FE/SCAD"
; 2873 FE_SC "SCADA EN/0S,SCADB/SC,SCAD/A+B,FE/SCAD"
; 2874
; 2875 .IF/MODEL.B
; 2876 FETCH "MEM/IFET"
; 2877 FETCH+1 "COND/VMA INC,MEM/IFET"
;;2878 .IFNOT/MODEL.B
;;2879 FETCH "MEM/FETCH,FETCH/UNCOND"
;;2880 FETCH+1 "COND/VMA INC,MEM/FETCH,FETCH/UNCOND"
; 2881 .ENDIF/MODEL.B
; 2882 FETCH WAIT "MEM/MB WAIT" ;See edit 111
; 2883 FILL "R13"
; 2884 FILL_AR "FILL,FM_AR"
; 2885 FIN STORE "FMADR/VMA" ;FINISH STOREING
; 2886 FIN XFER "FMADR/VMA,ADB/FM,AD/B" ;FINISH XFER WHILE STARTING ANOTHER
; 2887 FINISH "J/FINI" ;USE INSTEAD OF NXT INSTR IF FM WRITE
; 2888 FM_AR "COND/FM WRITE"
; 2889 FM[]_AR "@1, FM_AR"
; 2890 .IF/MODEL.B
; 2891 FM(#)_AR "FMADR/AC+#,AC-OP/AC+#,COND/FM WRITE"
; 2892 .ENDIF/MODEL.B
; 2893 FORCE AR-ARX "ADB/AR*4,AD/B,AR/AD*.25,ARX/ADX*.25"
; 2894
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 7
; MACRO.MIC[4,30] 17:12 9-Aug-84 CRAM Macros--G, H, I, J, L
; 2895 .TOC "CRAM Macros--G, H, I, J, L"
; 2896
; 2897 GEN # AND AR0-8 "SCADA/#,SCADB/AR0-8,SCAD/AND"
; 2898 GEN #+AR0-8 "SCADA/#,SCADB/AR0-8,SCAD/A+B"
; 2899 GEN #+SC "SCADA/#,SCADB/SC,SCAD/A+B"
; 2900 GEN #-SC "SCADA/#,SCADB/SC,SCAD/A-B"
; 2901 GEN -AR LONG "ADB/AR*4,ADA EN/0S,AD/A-B,SPEC/AD LONG"
; 2902 GEN -SC "SCADB/SC,SCADA EN/0S,SCAD/A-B"
; 2903 GEN -SC-1 "SCADB/SC,SCADA EN/0S,SCAD/A-B-1"
; 2904 GEN 0S "AD/0S"
; 2905 GEN 2AR "ADA/AR, AD/A*2"
; 2906
; 2907 GEN AC0 "FMADR/AC0,ADB/FM,AD/B"
; 2908 GEN AC0+1 "FMADR/AC0,ADB/FM,ADA EN/0S,AD/A+B+1"
; 2909 GEN AR "ADA/AR,AD/A"
; 2910 GEN AR*AC0 "FMADR/AC0,ADB/FM,ADA/AR"
; 2911 GEN AR*BR "ADA/AR,ADB/BR"
; 2912 GEN AR*T0 "T0,ADB/FM,ADA/AR"
; 2913 GEN AR+1 "ADA/AR,AD/A+1"
; 2914 GEN AR+2BR "ADA/AR,ADB/BR*2,AD/A+B"
; 2915 GEN AR+BR "ADA/AR,ADB/BR,AD/A+B"
; 2916 GEN AR+E1 "E1,ADB/FM,ADA/AR,AD/A+B"
; 2917 GEN AR+XR "FMADR/XR,ADB/FM,ADA/AR,AD/A+B"
; 2918 GEN AR-2BR "ADA/AR,ADB/BR*2,AD/A-B"
; 2919 GEN AR-AC3 "FMADR/AC3,ADB/FM,ADA/AR,AD/A-B"
; 2920 GEN AR-BR "ADA/AR,ADB/BR,AD/A-B"
; 2921 GEN AR-BR-1 "GEN AR*BR,AD/A-B-1"
; 2922 GEN AR0-8 "SCADA EN/0S,SCADB/AR0-8,SCAD/OR"
; 2923 GEN ARX "ADA/ARX,AD/A"
; 2924 GEN ARX COMP "ADA/ARX,AD/SETCA"
; 2925 GEN ARX*BR "ADA/ARX,ADB/BR" ;[224]
; 2926 GEN ARX*BRX "ADA EN/EN,ADB/BR"
; 2927 GEN ARX+1 "ADA/ARX,AD/A+1"
; 2928 GEN ARX+XR "FMADR/XR,ADB/FM,ADA/ARX,AD/A+B"
; 2929 GEN ARX-1 "ADA/ARX,AD/A-1"
; 2930
; 2931 GEN BR "ADB/BR,AD/B"
; 2932 GEN BR*2 "ADB/BR*2,AD/B"
; 2933 GEN BR+ARX "ADA/ARX,ADB/BR,AD/A+B" ;[230]
; 2934 GEN BRX+1 "ADA EN/0S,ADB/BR,AD/A+B+1"
; 2935 GEN CRY18 "SPEC/GEN CRY18"
; 2936 GEN E1 "E1, ADB/FM, AD/B"
; 2937 GEN FE "SCADA/FE,SCAD/A"
; 2938 GEN FE AND # "SCADA/FE,SCADB/#,SCAD/AND"
; 2939 GEN FE AND AR0-8 "SCADA/FE,SCADB/AR0-8,SCAD/AND"
; 2940 GEN FE AND S "SCADA/FE,SCADB/AR6-11,SCAD/AND"
; 2941 GEN FE AND SC "SCADA/FE,SCADB/SC,SCAD/AND"
; 2942 GEN FE OR AR0-8 "SCADA/FE,SCADB/AR0-8,SCAD/OR" ;[347]
; 2943 GEN FE+# "SCADA/FE,SCADB/#,SCAD/A+B"
; 2944 GEN FE-# "SCADA/FE,SCADB/#,SCAD/A-B"
; 2945 GEN FE-1 "SCADA/FE,SCAD/A-1"
; 2946 GEN FE-S "SCADA/FE,SCADB/AR6-11,SCAD/A-B"
; 2947 GEN FE-SC "SCADA/FE,SCADB/SC,SCAD/A-B"
; 2948 GEN FE-SC-1 "SCADA/FE,SCADB/SC,SCAD/A-B-1" ; [303] For DPB to top byte
; 2949
; 2950 GEN MQ "ADA/MQ,AD/A"
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 7-1
; MACRO.MIC[4,30] 17:12 9-Aug-84 CRAM Macros--G, H, I, J, L
; 2951 GEN MQ-AR "ADA/MQ,ADB/AR,AD/A-B"
; 2952 GEN P AND # "SCADA/AR0-5,SCADB/#,SCAD/AND"
; 2953 GEN P AND SC "SCADA/AR0-5,SCADB/SC,SCAD/AND"
; 2954 GEN P+SC "SCADA/AR0-5,SCADB/SC,SCAD/A+B"
; 2955 GEN P-# "SCADA/AR0-5,SCADB/#,SCAD/A-B" ;[337]
; 2956 GEN P-S "SCADA/AR0-5,SCADB/AR6-11,SCAD/A-B"
; 2957 GEN P-SC "SCADA/AR0-5,SCADB/SC,SCAD/A-B"
; 2958 GEN SC "SCADB/SC,SCADA EN/0S,SCAD/A+B"
; 2959 GEN SCAD 0S "SCADA EN/0S,SCAD/A"
; 2960 GEN T1 "T1,ADB/FM,AD/B"
; 2961 GEN T2 "T2,ADB/FM,AD/B"
; 2962 GET ECL EBUS "COND/EBUS CTL,EBUS CTL/GRAB EEBUS"
; 2963 GLOBAL "SH/1"
; 2964
; 2965 HALT "SPEC/FLAG CTL,FLAG CTL/HALT"
; 2966
; 2967 .IF/MODEL.B
; 2968 I FETCH "VMA/PC+1,MEM/IFET"
;;2969 .IFNOT/MODEL.B
;;2970 I FETCH "VMA/PC+1,MEM/FETCH,FETCH/UNCOND"
; 2971 .ENDIF/MODEL.B
; 2972 INDEXED "SH/2"
; 2973 INH CRY18 "SPEC/INH CRY18"
; 2974 IO INIT "COND/EBUS CTL,EBUS CTL/IO INIT"
; 2975 IR DISP "DISP/DRAM J"
; 2976
; 2977 JFCL FETCH "VMA/PC+1,MEM/FETCH,FETCH/JFCL"
; 2978 JFCL S "SPEC/FLAG CTL,FLAG CTL/JFCL+LD"
; 2979 JFCL T "SPEC/FLAG CTL,FLAG CTL/JFCL"
; 2980 JUMP FETCH "VMA/PC+1,MEM/FETCH,FETCH/JUMP"
; 2981
; 2982 LD PCS "COND/DIAG FUNC,TIME/5T,DIAG FUNC/LD PCS+CWSX,ADA/ARX,AD/A"
; 2983 LD PREV CTXT "COND/DIAG FUNC,TIME/5T,DIAG FUNC/LD PCS+CWSX,ADA/PC,AD/A"
; 2984 LOAD AR "MEM/LOAD AR"
; 2985 .IF/MODEL.B
; 2986 LOAD AR (WR TST) "MEM/EA CALC,EA CALC/LD AR+WR"
; 2987 .ENDIF/MODEL.B
; 2988 LOAD ARX "MEM/LOAD ARX"
; 2989 .IF/MODEL.B
; 2990 LOAD ARX (WR TST) "MEM/EA CALC,EA CALC/LD ARX+WR"
; 2991 .ENDIF/MODEL.B
; 2992 LOAD EBR "MEM/REG FUNC,MREG FNC/LOAD EBR"
; 2993 .IF/MODEL.B
; 2994 LOAD IR "COND/LOAD IR,#/0"
;;2995 .IFNOT/MODEL.B
;;2996 LOAD IR "COND/LOAD IR"
; 2997 .ENDIF/MODEL.B
; 2998 LOAD UBR "MEM/REG FUNC,MREG FNC/LOAD UBR"
; 2999 .IF/BLT.PXCT
; 3000 LOAD VMA(EA)_ARX+BR "VMA/LOAD,MEM/EA CALC,EA CALC/LD AR(EA),ADA/ARX,ADB/BR,AD/A+B"
;;3001 .IFNOT/BLT.PXCT
;;3002 LOAD VMA(EA)_ARX+BR "ADA/ARX,ADB/BR,AD/A+B,VMA/AD,LOAD AR"
; 3003 .ENDIF/BLT.PXCT
; 3004 .IF/MODEL.B
; 3005 LONG EN "COND/LONG EN"
; 3006 .ENDIF/MODEL.B
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 7-2
; MACRO.MIC[4,30] 17:12 9-Aug-84 CRAM Macros--G, H, I, J, L
; 3007
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 8
; MACRO.MIC[4,30] 17:12 9-Aug-84 CRAM Macros--M, N, O, P
; 3008 .TOC "CRAM Macros--M, N, O, P"
; 3009
; 3010 MAP "MEM/REG FUNC,MREG FNC/MAP"
; 3011 MB WAIT "MEM/MB WAIT"
; 3012 MEM_AR "FMADR/VMA,MEM/MB WAIT"
; 3013
; 3014 MQ_0.C "COND/ARL IND,CLR/MQ"
; 3015 MQ_0.M "MEM/ARL IND,CLR/MQ"
; 3016 MQ_0.S "SPEC/ARL IND,CLR/MQ"
; 3017 MQ_1 "ADA EN/0S,AD/A+1,MQ_AD"
; 3018 MQ_1S "COND/REG CTL,MQ/MQM SEL,MQ CTL/1S"
; 3019 MQ_AD "COND/REG CTL,MQ/MQM SEL,MQ CTL/AD"
; 3020 MQ_AR "SH/AR,MQ/SH"
; 3021 MQ_AR (AD) "ADA/AR,AD/A,MQ_AD"
; 3022 MQ_AR COMP "ADA/AR,AD/SETCA,MQ_AD"
; 3023 MQ_AR SWAP "SH/AR SWAP,MQ/SH"
; 3024 MQ_ARX "SH/ARX,MQ/SH"
; 3025 MQ_ARX COMP "ADA/ARX,AD/SETCA,MQ_AD"
; 3026 MQ_BR "ADB/BR,AD/B,MQ_AD"
; 3027 MQ_BR COMP "ADB/BR,AD/SETCB,MQ_AD"
; 3028 MQ_FM[] "ADB/FM,@1,AD/B,MQ_AD" ;[343]
; 3029 MQ_MQ*.25 "SPEC/MQ SHIFT,MQ/MQ*.25"
; 3030 MQ_MQ*2 "SPEC/MQ SHIFT,MQ/MQ*2"
; 3031 MQ_MQ*BR "ADA/MQ, ADB/BR, MQ_AD"
; 3032 MQ_MQ-1 "ADA/MQ,AD/A-1,MQ_AD" ;[343]
; 3033 MQ_SHIFT "SH/SHIFT AR!ARX,MQ/SH"
; 3034
; 3035 MSK "R7"
; 3036 MSK_AR "MSK,FM_AR"
; 3037 MUL "FE_FE+1,DISP/MUL,MQ/MQ*.25"
; 3038
; 3039
; 3040 NO CRY "AD/SETCA"
; 3041 NORM "DISP/NORM"
; 3042 NORM -AR "ADA EN/0S,ADB/AR*4,AD/A-B,AR/AD*.25,ARX/ADX*.25,DISP/NORM"
; 3043 NORM AR "ADB/AR*4,AD/B,DISP/NORM"
; 3044 NXT INSTR "MEM/MB WAIT,DISP/NICOND,#/0,CLR SC,CLR FE,J/NEXT"
; 3045
; 3046 OPTIONS "ISTAT/OPTIONS,KLPAGE/OPTIONS,LONGPC/OPTIONS,NONSTD/OPTIONS,PV/OPTIONS"
; 3047
; 3048 P_# "SCADA/#,SCAD/A,P_SCAD#"
; 3049 P_#-S "SCADA/#,SCADB/AR6-11,SCAD/A-B,P_SCAD#"
; 3050 P_#-SC "SCADA/#,SCADB/SC,SCAD/A-B,P_SCAD#" ;[343]
; 3051 P_-SC "SCADA EN/0S,SCADB/SC,SCAD/A-B,P_SCAD.M"
; 3052 P_1S "SCADA EN/0S,SCAD/A-1,P_SCAD"
; 3053 P_FE "SCADA/FE,SCAD/A,P_SCAD"
; 3054 P_FE OR SC "SCADA/FE,SCADB/SC,SCAD/OR,P_SCAD"
; 3055 P_FE+SC "SCADA/FE,SCADB/SC,SCAD/A+B,P_SCAD.C"
; 3056 P_FE-S "SCADA/FE,SCADB/AR6-11,SCAD/A-B,P_SCAD.C"
; 3057 P_FE-S.S "SCADA/FE,SCADB/AR6-11,SCAD/A-B,P_SCAD"
; 3058 P_FE.C "SCADA/FE,SCAD/A,P_SCAD#"
; 3059 P_P AND # "SCADA/AR0-5,SCADB/#,SCAD/AND,P_SCAD#"
; 3060 P_P AND SC "SCADA/AR0-5,SCADB/SC,SCAD/AND,P_SCAD.M"
; 3061 P_P OR # "SCADA/AR0-5,SCADB/#,SCAD/OR,P_SCAD#"
; 3062 P_P OR SC "SCADA/AR0-5,SCADB/SC,SCAD/OR,P_SCAD.M"
; 3063 P_P OR SC# "SCADA/AR0-5,SCADB/SC,SCAD/OR,P_SCAD#"
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 8-1
; MACRO.MIC[4,30] 17:12 9-Aug-84 CRAM Macros--M, N, O, P
; 3064 P_P+# "SCADA/AR0-5,SCADB/#,SCAD/A+B,P_SCAD#"
; 3065 P_P+1 "SCADA/AR0-5,SCAD/A+1,P_SCAD#" ;[337]
; 3066 P_P+S "SCADA/AR0-5,SCADB/AR6-11,SCAD/A+B,P_SCAD"
; 3067 P_P+S.C "SCADA/AR0-5,SCADB/AR6-11,SCAD/A+B,P_SCAD#"
; 3068 P_P-S "SCADA/AR0-5,SCADB/AR6-11,SCAD/A-B,P_SCAD.M"
; 3069 P_SC "SCADA EN/0S,SCADB/SC,SCAD/A+B,P_SCAD.M"
; 3070 P_SC# "SCADA EN/0S,SCADB/SC,SCAD/A+B,P_SCAD#"
; 3071 P_SCAD "SPEC/ARL IND,ARL/ARMM,AR0-8/LOAD,ARMM/SCAD POS"
; 3072 P_SCAD# "COND/LD AR0-8,AR/ARMM,ARMM/SCAD POS"
; 3073 P_SCAD.C "COND/ARL IND,ARL/ARMM,AR0-8/LOAD,ARMM/SCAD POS"
; 3074 P_SCAD.M "MEM/ARL IND,ARL/ARMM,AR0-8/LOAD,ARMM/SCAD POS"
; 3075
; 3076 P0 "FMADR/#B#,ACB/PAGB,AC#/0" Paging AC 0
; 3077 P1 "FMADR/#B#,ACB/PAGB,AC#/1"
; 3078 P10 "FMADR/#B#,ACB/PAGB,AC#/10"
; 3079 P11 "FMADR/#B#,ACB/PAGB,AC#/11"
; 3080 P12 "FMADR/#B#,ACB/PAGB,AC#/12"
; 3081 P13 "FMADR/#B#,ACB/PAGB,AC#/13"
; 3082 P14 "FMADR/#B#,ACB/PAGB,AC#/14"
; 3083 P15 "FMADR/#B#,ACB/PAGB,AC#/15"
; 3084 P16 "FMADR/#B#,ACB/PAGB,AC#/16"
; 3085 P17 "FMADR/#B#,ACB/PAGB,AC#/17"
; 3086 P2 "FMADR/#B#,ACB/PAGB,AC#/2"
; 3087 P3 "FMADR/#B#,ACB/PAGB,AC#/3"
; 3088 P4 "FMADR/#B#,ACB/PAGB,AC#/4"
; 3089 P5 "FMADR/#B#,ACB/PAGB,AC#/5"
; 3090 P6 "FMADR/#B#,ACB/PAGB,AC#/6"
; 3091 P7 "FMADR/#B#,ACB/PAGB,AC#/7"
; 3092
; 3093 PC_VMA "SPEC/LOAD PC"
; 3094 PF DISP "DISP/PG FAIL"
; 3095 .IF/KLPAGE
; 3096 PFA "P4"
; 3097 PFA_AR "PFA,COND/FM WRITE"
; 3098 .ENDIF/KLPAGE
; 3099 PHYS REF "SPEC/SP MEM CYCLE,SP MEM/UNPAGED"
; 3100 PHYS REF CACHE "SPEC/SP MEM CYCLE,SP MEM/UNPAGED+CACHED"
; 3101 .IF/MODEL.B
; 3102 POP AR "MEM/EA CALC,EA CALC/POP AR,VMA/LOAD"
; 3103 POP AR-ARX "MEM/EA CALC,EA CALC/POP AR-ARX,VMA/LOAD"
; 3104 POP ARX "MEM/EA CALC,EA CALC/POP ARX,VMA/LOAD"
; 3105 .ENDIF/MODEL.B
; 3106 PORTAL "SPEC/FLAG CTL,FLAG CTL/PORTAL"
; 3107 PT FETCH "MEM/LOAD ARX,SPEC/SP MEM CYCLE,SP MEM/PT FETCH"
; 3108 PT REF "SPEC/SP MEM CYCLE,SP MEM/PT"
; 3109 PT SEL_INVAL "COND/MBOX CTL,MBOX CTL/PT DIR CLR"
; 3110 PT SEL_INVAL (KEEP) "COND/MBOX CTL,MBOX CTL/PT DIR CLR(NK)"
; 3111 PT SEL_NORMAL "COND/MBOX CTL,MBOX CTL/NORMAL"
; 3112 .IF/KLPAGE
; 3113 PUR "P1"
; 3114 .ENDIF/KLPAGE
; 3115 .IF/MODEL.B
; 3116 PUSH "MEM/EA CALC,EA CALC/PUSH,VMA/LOAD,SPEC/STACK UPDATE"
; 3117 .ENDIF/MODEL.B
; 3118
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 9
; MACRO.MIC[4,30] 17:12 9-Aug-84 CRAM Macros--R
; 3119 .TOC "CRAM Macros--R"
; 3120
; 3121 R0 "FMADR/#B#,ACB/MICROB,AC#/0" Scratch register 0
; 3122 R1 "FMADR/#B#,ACB/MICROB,AC#/1" Scratch register 1
; 3123 R10 "FMADR/#B#,ACB/MICROB,AC#/10" Scratch register 10
; 3124 R11 "FMADR/#B#,ACB/MICROB,AC#/11" Scratch register 11
; 3125 R12 "FMADR/#B#,ACB/MICROB,AC#/12" Scratch register 12
; 3126 R13 "FMADR/#B#,ACB/MICROB,AC#/13" Scratch register 13
; 3127 R14 "FMADR/#B#,ACB/MICROB,AC#/14" Scratch register 14
; 3128 R15 "FMADR/#B#,ACB/MICROB,AC#/15" Scratch register 15
; 3129 R16 "FMADR/#B#,ACB/MICROB,AC#/16" Scratch register 16
; 3130 R17 "FMADR/#B#,ACB/MICROB,AC#/17" Scratch register 17
; 3131 R2 "FMADR/#B#,ACB/MICROB,AC#/2" Scratch register 2
; 3132 R3 "FMADR/#B#,ACB/MICROB,AC#/3" Scratch register 3
; 3133 R4 "FMADR/#B#,ACB/MICROB,AC#/4" Scratch register 4
; 3134 R5 "FMADR/#B#,ACB/MICROB,AC#/5" Scratch register 5
; 3135 R6 "FMADR/#B#,ACB/MICROB,AC#/6" Scratch register 6
; 3136 R7 "FMADR/#B#,ACB/MICROB,AC#/7" Scratch register 7
; 3137
; 3138 RD+CLR C CNT "SPEC/MTR CTL,AR_CACHE CNT"
; 3139 RD+CLR E CNT "SPEC/MTR CTL,AR_EBOX CNT"
; 3140 RD+CLR PA "SPEC/MTR CTL,AR_PERF CNT"
; 3141 RD+CLR TB "SPEC/MTR CTL,AR_TIME BASE"
; 3142 .IF/MODEL.B
; 3143 READ BP2 "MEM/EA CALC,EA CALC/BYTE IND,VMA/VMA,COND/VMA INC"
; 3144 .ENDIF/MODEL.B
; 3145 READ EBR "MEM/REG FUNC,MREG FNC/READ EBR"
; 3146 READ ERA "MEM/REG FUNC,MREG FNC/READ ERA"
; 3147 READ UBR "MEM/REG FUNC,MREG FNC/READ UBR"
; 3148 REL EBUS "COND/EBUS CTL,EBUS CTL/REL EBUS"
; 3149 REL ECL EBUS "COND/EBUS CTL,EBUS CTL/REL EEBUS"
; 3150 REQ EBUS "COND/EBUS CTL,EBUS CTL/REQ EBUS"
; 3151 .IF/KLPAGE
; 3152 REQ SV.VMA "SV.VMA,ADB/FM,AD/B,VMA/1,MEM/AD FUNC"
; 3153 REQ VMA HELD "COND/SEL VMA,ADA/PC,AD/A,VMA/1,MEM/AD FUNC"
; 3154 .ENDIF/KLPAGE
; 3155
; 3156 RET[] "DISP/RETURN,J/@1"
; 3157 RETURN0 "DISP/RETURN,J/0"
; 3158 RETURN1 "DISP/RETURN,J/1"
; 3159 RETURN10 "DISP/RETURN,J/10"
; 3160 RETURN12 "DISP/RETURN,J/12"
; 3161 RETURN15 "DISP/RETURN,J/15" ;[343]
; 3162 RETURN16 "DISP/RETURN,J/16" ;[337]
; 3163 RETURN17 "DISP/RETURN,J/17" ;[337]
; 3164 RETURN2 "DISP/RETURN,J/2"
; 3165 RETURN20 "DISP/RETURN,J/20"
; 3166 RETURN3 "DISP/RETURN,J/3"
; 3167 RETURN30 "DISP/RETURN,J/30"
; 3168 RETURN37 "DISP/RETURN,J/37"
; 3169 RETURN4 "DISP/RETURN,J/4"
; 3170 RETURN5 "DISP/RETURN,J/5"
; 3171 RETURN6 "DISP/RETURN,J/6"
; 3172 RETURN7 "DISP/RETURN,J/7"
; 3173 RSTR FLAGS_AR "SPEC/FLAG CTL,FLAG CTL/RSTR FLAGS"
; 3174 .IF/KLPAGE
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 9-1
; MACRO.MIC[4,30] 17:12 9-Aug-84 CRAM Macros--R
; 3175 RSTR VMA_ARX "ADA/ARX,AD/A,VMA/LOAD,MEM/RESTORE VMA"
; 3176 RSTR VMA_MQ "ADA/MQ,AD/A,VMA/LOAD,MEM/RESTORE VMA"
; 3177 RSTR VMA_SV.VMA "SV.VMA,ADB/FM,AD/B,VMA/LOAD,MEM/RESTORE VMA"
; 3178 .ENDIF/KLPAGE
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 10
; MACRO.MIC[4,30] 17:12 9-Aug-84 CRAM Macros--S
; 3179 .TOC "CRAM Macros--S"
; 3180
; 3181 .IF/KLPAGE
; 3182 SBR "P3"
; 3183 .ENDIF/KLPAGE
; 3184 SBUS DIAG "MEM/REG FUNC,MREG FNC/SBUS DIAG"
; 3185
; 3186 SC_# "SCADA/#,SCAD/A,SC/SCAD"
; 3187 SC_# AND AR0-8 "SCADA/#,SCADB/AR0-8,SCAD/AND,SC/SCAD"
; 3188 SC_# AND S "SCADA/#,SCADB/AR6-11,SCAD/AND,SC/SCAD"
; 3189 SC_# OR SC "SCADA/#,SCADB/SC,SCAD/OR,SC/SCAD"
; 3190 SC_#+AR0-8 "SCADA/#,SCADB/AR0-8,SCAD/A+B,SC/SCAD"
; 3191 SC_#+SC "SCADA/#,SCADB/SC,SCAD/A+B,SC/SCAD"
; 3192 SC_#-SC "SCADA/#,SCADB/SC,SCAD/A-B,SC/SCAD"
; 3193 SC_#-SC-1 "SCADA/#,SCADB/SC,SCAD/A-B-1,SC/SCAD"
; 3194 SC_-S "SCADA EN/0S,SCADB/AR6-11,SCAD/A-B,SC/SCAD";[343]
; 3195 SC_-SC "SCADA EN/0S,SCADB/SC,SCAD/A-B,SC/SCAD"
; 3196 SC_-SC-1 "SCADA EN/0S,SCADB/SC,SCAD/A-B-1,SC/SCAD"
; 3197 SC_0 "SCADA EN/0S,SCAD/A,SC/SCAD"
; 3198 SC_1 "SCADA EN/0S,SCAD/A+1,SC/SCAD"
; 3199 SC_1S "SCADA EN/0S,SCAD/A-1,SC/SCAD"
; 3200 SC_AR0-8 "SCADA EN/0S,SCADB/AR0-8,SCAD/A+B,SC/SCAD" ;[231]
; 3201 SC_EA "SPEC/SCM ALT,SC/AR SHIFT"
; 3202 SC_EXP "SCADA/AR EXP,SCAD/A,SC/SCAD"
; 3203 SC_EXP+1 "SCADA/AR EXP,SCAD/A+1,SC/SCAD"
; 3204 SC_EXP+SC "SCADA/AR EXP,SCADB/SC,SCAD/A+B,SC/SCAD"
; 3205 SC_EXP-# "SCADA/AR EXP,SCADB/#,SCAD/A-B,SC/SCAD"
; 3206 SC_EXP-1 "SCADA/AR EXP,SCAD/A-1,SC/SCAD"
; 3207 SC_EXP-SC "SCADA/AR EXP,SCADB/SC,SCAD/A-B,SC/SCAD"
; 3208 SC_FE "SPEC/SCM ALT,SC/FE"
; 3209 SC_FE AND # "SCADA/FE,SCADB/#,SCAD/AND,SC/SCAD"
; 3210 SC_FE# "SCADA/FE,SCAD/A,SC/SCAD" ;[337] If SPEC is in conflict
; 3211 SC_FE+# "SCADA/FE,SCADB/#,SCAD/A+B,SC/SCAD"
; 3212 SC_FE+1 "SCADA/FE,SCAD/A+1,SC/SCAD"
; 3213 SC_FE+SC "SCADA/FE,SCADB/SC,SCAD/A+B,SC/SCAD"
; 3214 SC_FE-# "SCADA/FE,SCADB/#,SCAD/A-B,SC/SCAD"
; 3215 SC_FE-1 "SCADA/FE,SCAD/A-1,SC/SCAD"
; 3216 SC_FE-SC "SCADA/FE,SCADB/SC,SCAD/A-B,SC/SCAD"
; 3217 SC_FE-SC-1 "SCADA/FE,SCADB/SC,SCAD/A-B-1,SC/SCAD"
; 3218 SC_P "SCADA/AR0-5,SCAD/A,SC/SCAD"
; 3219 SC_P AND # "SCADA/AR0-5,SCADB/#,SCAD/AND,SC/SCAD"
; 3220 SC_P AND SC "SCADA/AR0-5,SCADB/SC,SCAD/AND,SC/SCAD"
; 3221 SC_P+1 "SCADA/AR0-5,SCAD/A+1,SC/SCAD" ;[337]
; 3222 SC_P+S "SCADA/AR0-5,SCADB/AR6-11,SCAD/A+B,SC/SCAD";[343]
; 3223 SC_P-# "SCADA/AR0-5,SCADB/#,SCAD/A-B,SC/SCAD"
; 3224 SC_S "SCADB/AR6-11,SCADA EN/0S,SCAD/A+B,SC/SCAD"
; 3225 SC_SC AND # "SCADA/#,SCADB/SC,SCAD/AND,SC/SCAD"
; 3226
; 3227 .IF/MODEL.B
; 3228 SEL AC4 "AC-OP/AC+#,AC#/4"
; 3229 SEL DSTP "AC-OP/AC+#,AC#/4"
; 3230 SEL DSTP2 "AC-OP/AC+#,AC#/5"
; 3231 .ENDIF/MODEL.B
; 3232 SET ACC+CLR UCODE "COND/EBOX STATE,#/005"
; 3233 SET ACCOUNT EN "COND/EBOX STATE,#/105"
; 3234 SET AROV "COND/PCF_#,PC FLAGS/AROV"
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 10-1
; MACRO.MIC[4,30] 17:12 9-Aug-84 CRAM Macros--S
; 3235 SET CONS XCT "COND/SPEC INSTR,SPEC INSTR/CONS XCT"
; 3236 SET DATAI "COND/EBUS CTL,EBUS CTL/DATAI,AD/0S,AR/AD"
; 3237 SET DATAO "COND/EBUS CTL,EBUS CTL/DATAO"
; 3238 SET EBUS DEMAND "COND/EBUS CTL,EBUS CTL/EBUS DEMAND"
; 3239 SET FL NO DIV "COND/PCF_#,PC FLAGS/FDV CHK"
; 3240 SET FLAGS_AR "SPEC/FLAG CTL,FLAG CTL/SET FLAGS"
; 3241 SET FLOV "COND/PCF_#,PC FLAGS/FLOV"
; 3242 SET FPD "COND/PCF_#,PC FLAGS/FPD"
; 3243 SET FXU "COND/PCF_#,PC FLAGS/FXU" ;[224]
; 3244 SET HALTED "COND/SPEC INSTR,SPEC INSTR/HALTED"
; 3245 SET IO PF "COND/MBOX CTL,MBOX CTL/SET IO PF ERR"
; 3246 SET MTR PA EN "COND/EBOX STATE,#/225"
; 3247 SET NO DIVIDE "COND/PCF_#,PC FLAGS/DIV CHK"
; 3248 SET PC+1 INH "COND/SPEC INSTR,SPEC INSTR/INH PC+1"
; 3249 SET PI CYCLE "COND/SPEC INSTR,SPEC INSTR/SET PI CYCLE"
; 3250 SET PXCT "COND/SPEC INSTR,SPEC INSTR/PXCT"
; 3251 SET SR1 "COND/SR_#,#/64"
; 3252 SET SR2 "COND/SR_#,#/62"
; 3253 SET SR3 "COND/SR_#,#/61"
; 3254 SET SXCT "COND/SPEC INSTR,SPEC INSTR/SXCT"
; 3255 SET TRACKS EN "COND/EBOX STATE,#/131"
; 3256 SET TRK+PA EN "COND/EBOX STATE,#/231"
; 3257 SFLGS "FMADR/AC0"
; 3258 SFLGS_AR "SFLGS,FM_AR"
; 3259 SH DISP "SH/SHIFT AR!ARX,DISP/SH0-3"
; 3260 SIGNS DISP "DISP/SIGNS"
; 3261 SKIP FETCH "ADA/AR,AD/A,VMA/PC+1,MEM/FETCH,FETCH/SKIP"
; 3262
; 3263 SKP -EBUS GRANT "SKIP/-EBUS GRANT"
; 3264 SKP -EBUS XFER "SKIP/-EBUS XFER"
; 3265 .IF/MODEL.B
; 3266 SKP -LOCAL AC ADDR "SKIP/-LOCAL AC ADDR"
; 3267 .ENDIF/MODEL.B
; 3268 SKP -START "SKIP/-START"
; 3269 .IF/MODEL.B
; 3270 SKP -VMA SEC0 "SKIP/-VMA SEC0"
; 3271 .ENDIF/MODEL.B
; 3272 SKP AC EQ 0 "SKIP/AC#0" ;[343] More mnemonic than AC#0
; 3273 SKP AC REF "SKIP/AC REF"
; 3274 SKP AC#0 "SKIP/AC#0"
; 3275 SKP AC0+ "FMADR/AC0,ADB/FM,AD/SETCB,SKIP/AD0"
; 3276 SKP AC0- "FMADR/AC0,ADB/FM,AD/B,SKIP/AD0"
; 3277 SKP AD NE "SKIP/AD#0"
; 3278 SKP AD0 "SKIP/AD0"
; 3279 SKP ADX0 "SKIP/ADX0"
; 3280 SKP AR EQ "ADA EN/0S,ADB/AR*4,AD/ORCB+1,SKIP/AD CRY0"
; 3281 SKP AR EQ -1 "ADA/AR,AD/CRY A EQ -1,SKIP/AD CRY0"
; 3282 SKP AR GT BR "ADA/AR,ADB/BR,AD/XOR,SKIP/AD CRY0"
; 3283 SKP AR NE "ADA/AR,AD/CRY A#0,SKIP/AD CRY0"
; 3284 SKP AR NE BR "ADA/AR,ADB/BR,AD/XOR,SKIP/AD#0"
; 3285 SKP AR NZ "ADA/AR,AD/A,SKIP/AD#0" ;[343]
; 3286 SKP AR SIG "ADA/AR,AD/A+XCRY,SPEC/XCRY AR0,SKIP/AD#0"
; 3287 SKP AR0 "SKIP/AR0"
; 3288 SKP AR1 "ADA/AR,AD/A*2,SKIP/AD0"
; 3289 SKP AR18 "SKIP/AR18"
; 3290 SKP AR2 "ADB/AR*4,AD/B,SKIP/AD0"
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 10-2
; MACRO.MIC[4,30] 17:12 9-Aug-84 CRAM Macros--S
; 3291 SKP AR6 "SCADB/AR6-11,SCADA/#,#/40,SCAD/AND,SKIP/SCAD#0"
; 3292 SKP ARX LE BRX "ADA EN/EN,ADB/BR,AD/A-B-1,SKIP/ADX0"
; 3293 SKP ARX LT BRX "ADA EN/EN,ADB/BR,AD/A-B,SKIP/ADX0"
; 3294 SKP ARX NE "ADA/ARX,AD/CRY A#0,SKIP/AD CRY0"
; 3295 SKP ARX NZ "ADA/ARX,AD/A,SKIP/AD#0" ;[343]
; 3296 SKP ARX+MQ NE "ADA/MQ,AD/CRY A#0,SPEC/AD LONG,SKIP/AD CRY0"
; 3297 SKP ARX0 "SKIP/ARX0"
; 3298 SKP ARX2 "ADB/AR*4,AD/B,SKIP/ADX0"
; 3299
; 3300 SKP BR EQ "ADA EN/0S,ADB/BR,AD/CRY A GE B,SKIP/AD CRY0"
; 3301 SKP BR EQ -1 "ADA EN/0S,ADB/BR,AD/A+B+1,SKIP/AD CRY0"
; 3302 SKP BR0 "SKIP/BR0"
; 3303 SKP CRY0 "SKIP/AD CRY0"
; 3304 SKP EVEN PAR "SKIP/EVEN PAR"
; 3305 SKP EXP NE "SCADA/AR EXP,SCAD/A,SKIP/SCAD#0"
; 3306 SKP FE0 "SCADA/FE,SCAD/A,SKIP/SCAD0"
; 3307 SKP FETCH "SKIP/FETCH"
; 3308 SKP INTRPT "SKIP/INTRPT"
; 3309 SKP IO LEGAL "SKIP/IO LEGAL"
; 3310 SKP KERNEL "SKIP/KERNEL"
; 3311 SKP MQ EQ -1 "ADA/MQ,AD/CRY A EQ -1,SKIP/AD CRY0"
; 3312 SKP MQ NE "ADA/MQ,AD/CRY A#0,SKIP/AD CRY0"
; 3313 SKP P NE "SCADA/AR0-5,SCAD/A,SKIP/SCAD#0"
; 3314 SKP P!S XCT "SKIP/P!S XCT"
; 3315 .IF/MODEL.B
; 3316 SKP PC SEC0 "SKIP/PC SEC0"
; 3317 .ENDIF/MODEL.B
; 3318 SKP PI CYCLE "SKIP/PI CYCLE"
; 3319 SKP RPW "SKIP/RPW REF"
; 3320 SKP RUN "SKIP/RUN"
;;3321 .IFNOT/MODEL.B
;;3322 SKP SC LE 36 "SCADB/SC,SCADA/#,#/-36.,SCAD/A+B,SKIP/SCAD0"
; 3323 .ENDIF/MODEL.B
; 3324 SKP SC NE "SCADB/SC,SCADA EN/0S,SCAD/A+B,SKIP/SCAD#0"
; 3325 SKP SC0 "SKIP/SC0"
; 3326 SKP SCAD NE "SKIP/SCAD#0"
; 3327 SKP SCAD NZ "SKIP/SCAD#0" ;[347]
; 3328 SKP SCAD0 "SKIP/SCAD0"
; 3329 SKP USER "SKIP/USER"
; 3330
; 3331 SLEN "R10" ;MUST BE 170
; 3332 SLEN_AR "SLEN,FM_AR"
; 3333 SR DISP "DISP/SR"
; 3334 SR_# "COND/SR_#" ;USED FOR NON-PAGE-FAIL APPLICATIONS
; 3335 SR_0 "COND/SR_#,#/0"
; 3336 SR_1 "COND/SR_#,#/1"
; 3337 SR_2 "COND/SR_#,#/2" ;[224]
; 3338 .IF/MODEL.B
; 3339 SR_BDD "COND/SR_#,#/206" ;B2D AFTER UPDATING DST PTR
; 3340 SR_BDF "COND/SR_#,#/203" ;B2D STORING FILLERS
; 3341 SR_BDT "COND/SR_#,#/010" ;B2D IN TRANSLATION
; 3342 SR_BLT(DST) "COND/SR_#,#/507"
; 3343 .IF/BLT.PXCT
; 3344 SR_BLT(PXCT DST)"COND/SR_#,#/107"
; 3345 SR_BLT(PXCT SRC)"COND/SR_#,#/307" ;SPECIAL FOR PXCT
; 3346 .ENDIF/BLT.PXCT
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 10-3
; MACRO.MIC[4,30] 17:12 9-Aug-84 CRAM Macros--S
; 3347 SR_BLT(SRC) "COND/SR_#,#/707"
; 3348 SR_DB "COND/SR_#,#/102" ;D2B ANYWHERE
; 3349 SR_DST "COND/SR_#,#/212"
; 3350 SR_DSTF "COND/SR_#,#/214"
; 3351 SR_ED(+D) "COND/SR_#,#/224"
; 3352 SR_ED(PAT) "COND/SR_#,#/0" ;PATTERN REF IS EXTENDED
; 3353 SR_ED(S) "COND/SR_#,#/101"
;;3354 .IFNOT/MODEL.B
;;3355 SR_BDD "COND/SR_#,#/6" ;B2D AFTER UPDATING DST PTR
;;3356 SR_BDF "COND/SR_#,#/3" ;B2D STORING FILLERS
;;3357 SR_BDT "COND/SR_#,#/10" ;B2D IN TRANSLATION
;;3358 SR_BLT(DST) "COND/SR_#,#/107" ; BY PXCT 10,4
;;3359 SR_BLT(SRC) "COND/SR_#,#/607" ;CONTEXT CONTROLLED BY PXCT 2,1
;;3360 SR_DB "COND/SR_#,#/2" ;D2B ANYWHERE
;;3361 SR_DST "COND/SR_#,#/12"
;;3362 SR_DSTF "COND/SR_#,#/14"
;;3363 SR_ED(+D) "COND/SR_#,#/24"
;;3364 SR_ED(PAT) "COND/SR_#,#/0"
;;3365 SR_ED(S) "COND/SR_#,#/1"
; 3366 .ENDIF/MODEL.B
; 3367 .IF/KLPAGE
; 3368 SR_MAP "COND/SR_#,#/15" ;CATCH MAP PAGE FAILURES
; 3369 .ENDIF/KLPAGE
; 3370 .IF/MODEL.B
; 3371 SR_SRC "COND/SR_#,#/111"
; 3372 SR_SRC+DST "COND/SR_#,#/213"
;;3373 .IFNOT/MODEL.B
;;3374 SR_SRC "COND/SR_#,#/11"
;;3375 SR_SRC+DST "COND/SR_#,#/13"
; 3376 .ENDIF/MODEL.B
; 3377 SR_WORD "COND/SR_#,#/17" ;WORD MOVES OF STRING INSTRS
; 3378 .IF/MODEL.B
; 3379 .IF/XADDR
; 3380 SR_XBLT(DST) "COND/SR_#,#/316"
; 3381 SR_XBLT(SRC) "COND/SR_#,#/216"
; 3382 .ENDIF/XADDR
; 3383 .ENDIF/MODEL.B
; 3384 SRCP "FMADR/AC1"
; 3385 SRCP_AR "SRCP,FM_AR"
; 3386 SRCP2 "FMADR/AC2"
; 3387 SRCP2_AR "SRCP2,FM_AR"
; 3388
; 3389 .IF/MODEL.B
; 3390 STACK UPDATE "SPEC/STACK UPDATE"
; 3391 .ENDIF/MODEL.B
; 3392 STORE "MEM/WRITE"
; 3393 .IF/BLT.PXCT
; 3394 STORE VMA(EA)_ARX "VMA/LOAD,MEM/EA CALC,EA CALC/WRITE(E),ADA/ARX,AD/A"
;;3395 .IFNOT/BLT.PXCT
;;3396 STORE VMA(EA)_ARX "ADA/ARX,AD/A,VMA/AD,STORE"
; 3397 .ENDIF/BLT.PXCT
; 3398 .IF/KLPAGE
; 3399 SV.AR "P16" ;156 REQUIRED FOR PF.PAR HACK
;;3400 .IFNOT/KLPAGE
;;3401 SV.AR "R0"
; 3402 .ENDIF/KLPAGE
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 10-4
; MACRO.MIC[4,30] 17:12 9-Aug-84 CRAM Macros--S
; 3403 SV.AR_AR "SV.AR,COND/FM WRITE"
; 3404 .IF/KLPAGE
; 3405 SV.ARX "P17" ;157 REQUIRED FOR PF.PAR HACK
;;3406 .IFNOT/KLPAGE
;;3407 SV.ARX "R1"
; 3408 .ENDIF/KLPAGE
; 3409 SV.ARX_AR "SV.ARX,COND/FM WRITE"
; 3410 .IF/KLPAGE
; 3411 SV.BR "P10"
; 3412 SV.BR_AR "SV.BR,COND/FM WRITE"
; 3413 .ENDIF/KLPAGE
; 3414 SV.IOP "R3" ;[233]
; 3415 SV.IOPF "R2"
; 3416 SV.IOPF_AR "SV.IOPF,COND/FM WRITE" ;IO PAGE FAIL WORD
; 3417 .IF/KLPAGE
; 3418 SV.PAR "R0" ;Note not in PAGB block
; 3419 SV.PAR_AR "SV.PAR,COND/FM WRITE"
; 3420 SV.PFW "P12"
; 3421 SV.PFW_AR "SV.PFW,COND/FM WRITE"
; 3422 SV.SC "P11"
; 3423 SV.SC_AR "SV.SC,COND/FM WRITE"
; 3424 SV.VMA "P5"
; 3425 SV.VMA_AR "SV.VMA,COND/FM WRITE"
; 3426 .ENDIF/KLPAGE
; 3427 SWD "R1" ;BUFFER FOR SOURCE BYTE WORD
; 3428 SWD_AR "SWD,FM_AR"
; 3429 SWEEP CACHE "MEM/REG FUNC,MREG FNC/LOAD CCA"
; 3430
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 11
; MACRO.MIC[4,30] 17:12 9-Aug-84 CRAM Macros--T, U, V, W, X
; 3431 .TOC "CRAM Macros--T, U, V, W, X"
; 3432
; 3433 T0 "R6"
; 3434 T0_AR "T0,FM_AR"
; 3435 T1 "R11"
; 3436 T1_AR "T1,FM_AR"
; 3437 T2 "R12"
; 3438 T2_AR "T2,FM_AR"
; 3439 TAKE INTRPT "SKIP/-MTR REQ,J/MTRINT"
; 3440 TEST AR "ADA/AR,AD/CRY A#0"
; 3441 TEST AR.AC0 "FMADR/AC0,ADB/FM,ADA/AR,AD/CRY A.B#0"
; 3442 TEST AR.BR "ADB/BR,ADA/AR,AD/CRY A.B#0"
; 3443 TEST AR.MSK "MSK,ADB/FM,ADA/AR,AD/CRY A.B#0"
; 3444 TEST ARX "ADA/ARX,AD/CRY A#0"
; 3445 TEST ARX.AR*4 "ADA/ARX,ADB/AR*4,AD/CRY A.B#0"
; 3446 TEST BRL "ADA EN/0S,ADB/BR,AD/ORCB+1,GEN CRY18"
; 3447 .IF/KLPAGE
; 3448 TEST CBR "CBR,ADB/FM,AD/B,SKP AD NE" ;[247]
; 3449 .ENDIF/KLPAGE
; 3450 TEST FETCH "VMA/PC+1,MEM/FETCH,FETCH/TEST"
; 3451 TRAP1 "COND/PCF_#,PC FLAGS/TRAP1"
; 3452 TRAP2 "COND/PCF_#,PC FLAGS/TRAP2"
; 3453 TRAP3 "COND/PCF_#,PC FLAGS/TRAP3"
;;3454 .IF/TRXDEF
;;3455 TRB "E0" ;same as E0.
;;3456 TRB_AR "TRB,FM_AR"
;;3457 TRX "R17"
;;3458 TRX_AR "TRX,FM_AR"
;;3459 TRX1 "R2"
;;3460 TRX1_AR "TRX1,FM_AR"
;;3461 TRX2 "R1"
;;3462 TRX2_AR "TRX2,FM_AR"
;;3463 TRX3 "R14"
;;3464 TRX3_AR "TRX3,FM_AR"
; 3465 .ENDIF/TRXDEF
; 3466
; 3467 UNCSH PHYS REF "SPEC/SP MEM CYCLE,SP MEM/UNCSH+UNPAGE"
; 3468 UPT FETCH "MEM/LOAD ARX,SPEC/SP MEM CYCLE,SP MEM/UPT FETCH"
; 3469 UPT REF "SPEC/SP MEM CYCLE,SP MEM/UPT"
; 3470 USER REF "SPEC/SP MEM CYCLE,SP MEM/USER"
; 3471
; 3472 VMA_# "VMA/LOAD,COND/VMA_#"
; 3473 VMA_#+AR32-35 "VMA/LOAD,COND/VMA_#+AR32-35"
; 3474 VMA_40 "VMA/LOAD,COND/VMA_#,#/40"
; 3475 VMA_40+PI*2 "VMA/LOAD,COND/VMA_#+PI*2,#/40"
; 3476 VMA_41 "VMA/LOAD,COND/VMA_#,#/41"
; 3477 VMA_41+PI*2 "VMA/LOAD,COND/VMA_#+PI*2,#/41"
; 3478 VMA_420+TRAP "VMA/LOAD,COND/VMA_#+TRAP,#/420"
; 3479 VMA_430+MODE "VMA/LOAD,COND/VMA_#+MODE,#/430"
; 3480 VMA_AC3 "FMADR/AC3,ADB/FM,AD/B,VMA/AD"
; 3481 VMA_AR "ADA/AR,AD/A,VMA/AD"
; 3482 VMA_AR AND ADMSK "ADMSK,ADB/FM,ADA/AR,AD/AND,VMA/AD"
; 3483 VMA_AR+1 "ADA/AR,AD/A+1,VMA/AD"
; 3484 VMA_AR+BR "ADA/AR,ADB/BR,AD/A+B,VMA/AD"
; 3485 .IF/KLPAGE
; 3486 VMA_AR+CBR "CBR,ADB/FM,ADA/AR,AD/A+B,VMA/AD"
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 11-1
; MACRO.MIC[4,30] 17:12 9-Aug-84 CRAM Macros--T, U, V, W, X
; 3487 .ENDIF/KLPAGE
; 3488 VMA_AR+E0 "E0,ADB/FM,ADA/AR,AD/A+B,VMA/AD"
; 3489 VMA_AR+E0+1 "E0,ADB/FM,ADA/AR,AD/A+B+1,VMA/AD"
; 3490 VMA_AR+E1 "E1,ADB/FM,ADA/AR,AD/A+B,VMA/AD"
; 3491 .IF/KLPAGE
; 3492 VMA_AR+SBR "SBR,ADB/FM,ADA/AR,AD/A+B,VMA/AD"
; 3493 .ENDIF/KLPAGE
;;3494 .IF/TRXDEF
;;3495 VMA_AR+TRB "TRB,ADB/FM,ADA/AR,AD/A+B,VMA/AD"
; 3496 .ENDIF/TRXDEF
; 3497 VMA_AR+XR "GEN AR+XR,VMA/AD"
; 3498 VMA_AR-1 "ADA/AR,AD/A-1,VMA/AD"
; 3499 VMA_ARX "ADA/ARX,AD/A,VMA/AD"
; 3500 VMA_ARX AND ADMSK "ADMSK,ADB/FM,ADA/ARX,AD/AND,VMA/AD"
; 3501 VMA_ARX+1 "ADA/ARX,AD/A+1,VMA/AD"
; 3502 VMA_ARX+BR "ADA/ARX,ADB/BR,AD/A+B,VMA/AD"
; 3503 .IF/KLPAGE
; 3504 VMA_ARX+CBR "CBR,ADB/FM,ADA/ARX,AD/A+B,VMA/AD"
; 3505 .ENDIF/KLPAGE
; 3506 VMA_ARX+XR "GEN ARX+XR,VMA/AD"
; 3507
; 3508 VMA_BR "ADB/BR,AD/B,VMA/AD"
; 3509 VMA_E0+1 "E0,ADB/FM,ADA EN/0S,AD/A+B+1,VMA/AD"
; 3510 VMA_FM[] "ADA EN/0S,ADB/FM,@1,AD/B,VMA/AD";[344]
; 3511 VMA_MQ "ADA/MQ,AD/A,VMA/AD"
; 3512 VMA_MQ+1 "ADA/MQ,AD/A+1,VMA/AD" ;[310]
; 3513 VMA_PC "VMA/PC" ;[252]
; 3514 VMA_PC+1 "VMA/PC+1"
; 3515 .IF/KLPAGE
; 3516 VMA_SV.VMA "SV.VMA,ADB/FM,AD/B,VMA/AD"
; 3517 .ENDIF/KLPAGE
;;3518 .IF/TRXDEF
;;3519 VMA_TRB "TRB,ADB/FM,AD/B,VMA/AD"
; 3520 .ENDIF/TRXDEF
;;3521 .IFNOT/MODEL.B
;;3522 VMA_VMA HELD "COND/SEL VMA,ADA/PC,AD/A,VMA/AD"
; 3523 .IF/MODEL.B
;;3524 .IFNOT/KLPAGE
;;3525 VMA_VMA HELD "COND/SEL VMA,ADA/PC,AD/A,VMA/AD"
; 3526 .IF/KLPAGE
; 3527 VMA_VMA HELD "COND/SEL VMA,ADA/PC,AD/A,VMA/AD,MEM/RESTORE VMA"
; 3528 .ENDIF/KLPAGE
; 3529 .ENDIF/MODEL.B
; 3530 VMA_VMA+1 "VMA/VMA,COND/VMA INC"
; 3531 VMA_VMA-1 "VMA/VMA,COND/VMA DEC"
; 3532
; 3533 WR PT ENTRY "COND/MBOX CTL,MBOX CTL/PT WR"
; 3534 WR REFILL RAM "MEM/REG FUNC,MREG FNC/WR REFILL RAM"
; 3535 .IF/MODEL.B
; 3536 WRITE (E) "MEM/EA CALC,EA CALC/WRITE(E),VMA/LOAD"
; 3537 .ENDIF/MODEL.B
; 3538
; 3539 XR "FMADR/XR"
; 3540
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 12
; MACRO.MIC[4,30] 17:12 9-Aug-84 DRAM Macros
; 3541 .TOC "DRAM Macros"
; 3542
; 3543 .DCODE
; 3544 ;
; 3545 ; These macros have not been sorted alphabetically, as (1) there are
; 3546 ; too few to bother, and (2) no one ever looks at the DRAM anyway!
; 3547 ;
; 3548 ;"A FIELD" MACROS
; 3549 ; DECODED TO TELL WHAT TO DO WITH EFFECTIVE ADDRESS
; 3550 ; AND WHETHER TO PREFETCH FROM PC+1
; 3551
; 3552 I "A/IMMED"
; 3553 I-PF "A/IMMED-PF"
;;3554 .IFNOT/XADDR
;;3555 EA "A/IMMED"
; 3556 .IF/XADDR
; 3557 EA "A/ADDR"
; 3558 .ENDIF/XADDR
; 3559 W "A/WR-TST"
; 3560 R "A/READ"
; 3561 R-PF "A/READ-PF"
; 3562 RW "A/RD-WR"
; 3563 .IF/RPW
; 3564 RPW "A/RD-P-WR"
;;3565 .IFNOT/RPW
;;3566 RPW "A/RD-WR"
; 3567 .ENDIF/RPW
;;3568 .IF/WRTST
;;3569 IW "A/WR-TST"
; 3570 .IFNOT/WRTST
; 3571 IW "A/IMMED"
; 3572 .ENDIF/WRTST
; 3573
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 13
; MACRO.MIC[4,30] 17:12 9-Aug-84 DRAM Macros
; 3574 ;"B FIELD" MACROS
; 3575 ; DECODED BY MOST INSTRUCTIONS TO TELL WHERE TO STORE RESULTS,
; 3576 ; BUT USED BY OTHERS TO HOLD VARIOUS "MODE" INFORMATION
; 3577
; 3578 AC "B/AC"
; 3579 M "B/MEM"
; 3580 S "B/SELF"
; 3581 B "B/BOTH"
; 3582 DBL AC "B/DBL AC"
; 3583 DBL B "B/DBL BOTH"
; 3584 FL-AC "B1-2/AC"
; 3585 FL-MEM "B1-2/MEM"
; 3586 FL-BOTH "B1-2/BOTH"
; 3587
; 3588 TN- "B0/CRY0(1),B1-2/0"
; 3589 TNE "B0/CRY0(0),B1-2/0"
; 3590 TNA "B0/CRY0(0),B1-2/0"
; 3591 TNN "B0/CRY0(1),B1-2/0"
; 3592 TZ- "B0/CRY0(1),B1-2/1"
; 3593 TZE "B0/CRY0(0),B1-2/1"
; 3594 TZA "B0/CRY0(0),B1-2/1"
; 3595 TZN "B0/CRY0(1),B1-2/1"
; 3596 TC- "B0/CRY0(1),B1-2/2"
; 3597 TCE "B0/CRY0(0),B1-2/2"
; 3598 TCA "B0/CRY0(0),B1-2/2"
; 3599 TCN "B0/CRY0(1),B1-2/2"
; 3600 TO- "B0/CRY0(1),B1-2/3"
; 3601 TOE "B0/CRY0(0),B1-2/3"
; 3602 TOA "B0/CRY0(0),B1-2/3"
; 3603 TON "B0/CRY0(1),B1-2/3"
; 3604
; 3605 SJC- "B/SJC-"
; 3606 SJCL "B/SJCL"
; 3607 SJCE "B/SJCE"
; 3608 SJCLE "B/SJCLE"
; 3609 SJCA "B/SJCA"
; 3610 SJCGE "B/SJCGE"
; 3611 SJCN "B/SJCN"
; 3612 SJCG "B/SJCG"
; 3613
; 3614 BLKI "B0/CRY0(0),B1-2/2"
; 3615 BLKO "B0/CRY0(0),B1-2/0"
; 3616 DATAI "B/6"
; 3617 DATAO "B/4"
; 3618 CONI "B/6"
; 3619 CONO "B/4"
; 3620 CONSO "B0/CRY0(1),B1-2/1"
; 3621 CONSZ "B0/CRY0(0),B1-2/1"
; 3622
; 3623 .BIN
; 3624 .UCODE
; 3625
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 1
; BASIC.MIC[4,30] 17:12 9-Aug-84 THE INSTRUCTION LOOP
; 3626 .TOC "THE INSTRUCTION LOOP"
; 3627
; 3628 ; Comments updated [302][344]
; 3629 ;
; 3630 ;INSTRUCTION DECODE, EA COMPUTATION, AND OPERAND FETCH
; 3631 ;
; 3632 ; IN GENERAL, AN INSTRUCTION IS STARTED AT XCTGO.
; 3633 ; AT THIS TIME THE INSTRUCTION IS IN ARX AND IR, AND PC HAS ITS ADDRESS.
; 3634 ; THE DRAM OUTPUTS AND "AC" BITS WILL SETTLE DURING THIS
; 3635 ; MICROINSTRUCTION, AND WILL BE LATCHED BY THE CLOCK WHICH ENDS
; 3636 ; THE CYCLE. XCTGO DISPATCHES ON THE STATE OF THE
; 3637 ; INDIRECT AND INDEX BITS OF THE ARX (EA MOD DISP) TO COMPEA OR
; 3638 ; ONE OF THE THREE LOCATIONS FOLLOWING IT.
; 3639 ; IF INDIRECT IS SPECIFIED, THE INDIRECT POINTER IS FETCHED (AT
; 3640 ; COMPEA+2 OR +3 DEPENDING ON WHETHER INDEXING IS ALSO SPECIFIED).
; 3641 ; WE WAIT FOR IT AT INDRCT, AND THEN LOOP BACK TO COMPEA. WHEN NO
; 3642 ; INDIRECT IS CALLED FOR, WE COMPUTE THE INSTRUCTION'S EFFECTIVE ADDRESS
; 3643 ; (EA) AT COMPEA OR COMPEA+1 (DEPENDING ON WHETHER INDEXING IS CALLED
; 3644 ; FOR), AND PERFORM THE FUNCTION "A READ", WHOSE OPERATION DEPENDS
; 3645 ; ON THE DRAM A FIELD, AS FOLLOWS:
; 3646 ;
; 3647 ; MACRO A-FLD MEM FUNCTION VMA DISPATCH
; 3648 ; I 0 NONE AD(=EA) DRAM J
; 3649 ; I-PF 1 FETCH PC+1 DRAM J
; 3650 ; EA 2 30 BIT EA CALC AD DRAM J
; 3651 ; W 3 WR TST AD 3 (MODEL B) 43 (MODEL A)
; 3652 ; R 4 READ AD 4 44
; 3653 ; R-PF 5 READ AD 5 45
; 3654 ; RW 6 READ/WR TST AD 6 46
; 3655 ; RPW 7 RD-PSE/WR TST AD 7 47
; 3656 ;
; 3657 ; A FIELD VALUES 0 AND 1 ARE USED FOR INSTRUCTIONS WHICH NEITHER
; 3658 ; READ NOR WRITE THE CONTENTS OF EA (IMMEDIATE-MODE INSTRUCTIONS,
; 3659 ; JUMPS, ETC). THESE DISPATCH FROM "A READ" DIRECTLY TO THE MICROCODE
; 3660 ; WHICH HANDLES THE INSTRUCTION. IF THE A FIELD CONTAINS 1, "A READ"
; 3661 ; CAUSES A PREFETCH (FROM PC+1), SO THAT THE MBOX CAN WORK ON GETTING
; 3662 ; THE NEXT INSTRUCTION INTO ARX WHILE THE EBOX PERFORMS THIS ONE.
; 3663 ; IF THE A FIELD CONTAINS A 2, THE EA CALCULATION WILL PROVIDE
; 3664 ; A FULL 30 BIT EFFECTIVE ADDRESS TO THE AD AT THE END. THIS WAS
; 3665 ; INTRODUCED WITH EXTENDED ADDRESSING, TO ALLOW SUCH INSTRUCTIONS AS
; 3666 ; XMOVEI AND XHLLI TO COMPUTE A COMPLETE ADDRESS WITHOUT ACTUALLY
; 3667 ; REFERENCING IT. OTHERWISE, THIS IS SIMILAR TO AN A FIELD OF 0. NOTE
; 3668 ; THAT AN A FIELD OF 0 WILL STILL PROVIDE A 30 BIT ADDRESS TO THE VMA;
; 3669 ; ONLY THE RESULT IN THE AD WILL BE DIFFERENT.
; 3670 ; IF THE A FIELD CONTAINS 3, THE MBOX PERFORMS A PAGING CHECK ON
; 3671 ; EA, AND CAUSES A PAGE FAIL IF THAT LOCATION IS NOT WRITABLE.
; 3672 ; THE MICROCODE GOES TO 3 TO WAIT FOR COMPLETION OF THE PAGE CHECK,
; 3673 ; AND AT THAT LOCATION LOADS AC INTO AR. THE WRITABILITY OF EA IS
; 3674 ; VERIFIED AT THIS TIME TO PREVENT INCORRECTLY SETTING FLAGS OR
; 3675 ; THE PROCESSOR STATE IF THE INSTRUCTION WILL BE ABORTED BY PAGE
; 3676 ; FAILURE. LOCATION 3 THEN DISPATCHES TO THE HANDLER FOR THE
; 3677 ; CURRENT INSTRUCTION.
; 3678 ; A FIELD VALUES 4 TO 7 PERFORM READS FROM EA. 6 AND 7 ALSO TEST
; 3679 ; THE WRITABILITY OF THE LOCATION, AND 7 PERFORMS THE FIRST HALF OF
; 3680 ; A READ-PAUSE-WRITE CYCLE IF EA IS AN UN-CACHED ADDRESS. THE DISPATCH
; 3681 ; IS TO A, WHERE WE WAIT FOR MEMORY DATA TO ARRIVE IN AR. IF THE A
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 1-1
; BASIC.MIC[4,30] 17:12 9-Aug-84 THE INSTRUCTION LOOP
; 3682 ; FIELD WAS 5, WE PREFETCH FROM PC+1 AS SOON AS THE DATA ARRIVES.
; 3683 ; IN ANY CASE, WE DISPATCH ACCORDING TO THE DRAM J FIELD TO THE
; 3684 ; HANDLER FOR THE INSTRUCTION.
; 3685 ; IF A PAGE FAIL OCCURS AT ANY TIME (EITHER IN THIS CODE OR DURING
; 3686 ; INSTRUCTION EXECUTION) THE MICROPROCESSOR TRAPS TO CRAM LOCATION
; 3687 ; 1777 OR 3777, WHERE IT CAUSES A PAGE FAIL TRAP.
; 3688 ;
; 3689 ; MOST INSTRUCTIONS (THE MOVE, HALFWORD, AND BOOLEAN GROUPS,
; 3690 ; PLUS ADD AND SUB) ARE PERFORMED BY HANDLERS CONSISTING OF ONE OR
; 3691 ; TWO MICROINSTRUCTIONS WHICH LEAVE THE RESULT IN AR, AND COMPLETE
; 3692 ; BY INVOKING THE "EXIT" MACRO. EXIT USES THE MEM/B WRITE FUNCTION
; 3693 ; TO BEGIN A STORE TO MEMORY FOR THOSE MODES IN WHICH THE RESULT
; 3694 ; GOES TO MEMORY, AND DISP/DRAM B TO GET TO ONE OF THE MICROINSTRUCTIONS
; 3695 ; FOLLOWING ST0. THIS CODE DEPENDS ON A CERTAIN AMOUNT OF CORRELATION
; 3696 ; BETWEEN THE DRAM A AND B FIELDS. IN PARTICULAR, STAC (STORE AC)
; 3697 ; ASSUMES THAT A PREFETCH HAS OCCURRED, WHILE THE OTHERS ASSUME THAT
; 3698 ; NO PREFETCH HAS OCCURED. THUS NORMAL AND IMMEDIATE MODES, WHOSE
; 3699 ; RESULTS GO ONLY TO AC, MUST PREFETCH IN THE DRAM A FIELD, WHILE
; 3700 ; MEM, BOTH, AND SELF MODES, WHOSE RESULTS GO TO MEMORY, MUST NOT.
; 3701 ; (THIS RESTRICTION IS AVOIDED FOR THOSE INSTRUCTIONS WHICH NEVER
; 3702 ; PREFETCH -- IN MUL, DIV, AND IDIV BY USE OF THE EXIT TO ST2AC,
; 3703 ; AND IN IMUL AND THE SINGLE PRECISION FLOATING POINT
; 3704 ; INSTRUCTIONS BY A RESTRICTED EXIT TO ST6.)
; 3705 ; ANOTHER LARGE SET OF INSTRUCTIONS (SKIP, AOS, SOS, JUMP, AOJ,
; 3706 ; SOJ, AOBJ, CAI, CAM, AND THE TEST GROUP) KNOWS WHERE TO PUT THE
; 3707 ; RESULTS WITHOUT MODE INFORMATION, AND THEY USE THE DRAM B FIELD TO
; 3708 ; DETERMINE WHETHER TO SKIP OR JUMP, AS A FUNCTION OF THEIR OPERANDS.
; 3709 ; SKIP, AOS, AND SOS ARE CONSIDERED SELF-MODE INSTRUCTIONS,
; 3710 ; AND AFTER MAKING THE FETCH DECISION (AND RE-WRITING MEMORY, IN
; 3711 ; THE CASE OF AOS OR SOS), JUMP TO STSELF TO DECIDE WHETHER OR NOT
; 3712 ; TO PUT THE RESULT ALSO IN AC. THE OTHER INSTRUCTIONS OF THIS SET
; 3713 ; JUMP TO STORAC OR NOP AFTER MAKING THE FETCH DECISION, DEPENDING
; 3714 ; ON WHETHER OR NOT THE OPCODE DEFINITION REQUIRES MODIFICATION OF AC.
; 3715 ; (NOTE THE DIFFERENCE BETWEEN STAC AND FINI ON THE ONE HAND,
; 3716 ; AND STORAC AND NOP ON THE OTHER -- STORAC AND NOP MUST BE USED WHEN
; 3717 ; THE NEXT INSTRUCTION FETCH OCCURS ON THE PRECEDING EBOX CYCLE, BECAUSE
; 3718 ; NICOND MUST NOT IMMEDIATELY FOLLOW A FETCH (ONE CYCLE REQUIRED FOR
; 3719 ; VMA AC REF TO MAKE IT THROUGH THE NICOND LOGIC), STAC AND FINI ARE
; 3720 ; USED WHEN THERE HAS BEEN AN INTERVENING CYCLE.)
; 3721
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 2
; BASIC.MIC[4,30] 17:12 9-Aug-84 NEXT INSTRUCTION DISPATCH
; 3722 .TOC "NEXT INSTRUCTION DISPATCH"
; 3723
; 3724 ;START BY PUTTING PC WORD IN AR, JUMP HERE
; 3725 0:
;;3726 .IFNOT/MODEL.B
;;3727 START: SET FLAGS_AR,VMA_AR,MEM/SEC 0, ;LOAD FLAGS, CLEAR VMAX
;;3728 BR/AR,J/SETPC ;THEN JUMP TO ADDR IN AR
; 3729 .IF/MODEL.B
U 0000, 1172,4001,0000,0000,0000,0024,0020 ; 3730 START: SET FLAGS_AR,J/SETPC ;LOAD FLAGS, USE REST AS ADDR
; 3731 .ENDIF/MODEL.B
; 3732 1: ;MUST BE AT START+1
U 0001, 0271,4001,0000,0000,0117,0010,0000 ; 3733 CONT: VMA/PC,FETCH,J/XCTW ;HERE TO CONTINUE FROM PC
; 3734 ;
; 3735 ; Comments updated [321].
; 3736 ;
; 3737 ; DISP/NICOND (THE "NXT INSTR" MACRO) BRINGS US TO ONE OF THE
; 3738 ; LOCATIONS FOLLOWING "NEXT". PC HAS BEEN UPDATED TO ADDRESS THE NEXT
; 3739 ; INSTRUCTION IN THE NORMAL FLOW, AND IF IT IS FROM MEMORY
; 3740 ; (AS OPPOSED TO AC'S), THE INSTRUCTION IS IN ARX AND IR.
; 3741 ; THE NICOND DISPATCH IS PRIORITY ENCODED, AS FOLLOWS:
; 3742 ; [FOR FULL DETAILS, SEE PRINT CON2]
; 3743 ;(1) IF PI CYCLE IS TRUE, GO TO NEXT FOR SECOND HALF
; 3744 ; OF STANDARD OR VECTOR INTERRUPT.
; 3745 ;(2) IF THE RUN FLOP (CON RUN) IS OFF, GO TO NEXT+2, FROM WHICH THE
; 3746 ; MICROCODE WILL ENTER THE HALT LOOP TO WAIT FOR THE CONSOLE TO RESTART
; 3747 ; INSTRUCTION PROCESSING.
; 3748 ;(3) IF THE METER HAS A REQUEST, GO TO NEXT+4 (MTRINT) TO SERVE IT.
; 3749 ;(4) IF THE PI SYSTEM HAS A REQUEST READY, GO TO NEXT+6 (INTRPT)
; 3750 ; TO START A PI CYCLE.
; 3751 ;(5) IF CON UCODE STATE 05 (TRACK EN) IS SET, GO TO NEXT+10 OR 11.
; 3752 ; Normally NEXT+10 will be used; if a trap flag was set by the previous
; 3753 ; instruction, however, NEXT+11 will be reached. This is the only
; 3754 ; way the trap will ever be detected, so be cautious of ignoring it.
; 3755 ; THIS FLOP IS ENTIRELY UNDER CONTROL OF THE MICROCODE, AND IS ONLY
; 3756 ; USED FOR THE SPECIAL STATISTICS-GATHERING MICROCODE.
; 3757 ;(6) IF THE LAST INSTRUCTION SET A TRAP FLAG, GO TO NEXT+13 OR +17,
; 3758 ; IT DOESN'T MATTER WHICH. (NEXT+17 will be reached if VMA contains
; 3759 ; an AC address, probably irrelevant when a trap flag was set.)
; 3760 ;(7) IF VMA CONTAINS AN AC ADDRESS, IMPLYING THAT THE NEXT
; 3761 ; INSTRUCTION IS TO COME OUT OF FAST MEMORY, GO TO NEXT+16 TO GET IT.
; 3762 ;(10) --NORMAL CASE-- THE INSTRUCTION IS IN ARX, READY TO GO, GO
; 3763 ; TO NEXT+12 (XCTGO).
; 3764 ;
; 3765 ; The NICOND dispatch yields the following:
; 3766 ;
; 3767 ; +0 CON PI CYCLE
; 3768 ; +1 Unused
; 3769 ; +2 -CON RUN (i.e. halt)
; 3770 ; +3 Unused
; 3771 ; +4 CON MTR INT REQ (meter interrupt)
; 3772 ; +5 Unused
; 3773 ; +6 CON INT REQ (interrupt)
; 3774 ; +7 Unused
; 3775 ; +10 CON UCODE STATE 05 (tracks enable)
; 3776 ; +11 CON UCODE STATE 05+TRAP REQ (tracks enable+trap)
; 3777 ; +12 -VM AC REF (normal instruction)
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 2-1
; BASIC.MIC[4,30] 17:12 9-Aug-84 NEXT INSTRUCTION DISPATCH
; 3778 ; +13 -VM AC REF+TRAP REQ (normal instruction+trap)
; 3779 ; +14 Unused
; 3780 ; +15 Unused
; 3781 ; +16 -CON PI CYCLE (AC ref)
; 3782 ; +17 -CON PI CYCLE+TRAP REQ (AC ref+trap)
; 3783
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 3
; BASIC.MIC[4,30] 17:12 9-Aug-84 NEXT INSTRUCTION DISPATCH
; 3784 ;NICOND (NXT INSTR) DISPATCH BLOCK
; 3785
; 3786 =11*0000 ;USE LOC'NS INACCESSIBLE TO DRAM
; 3787 NEXT: AR_MQ+1,VMA/AD, ;2ND PART OF INTERRUPT
U 0140, 3347,4023,2000,0000,0320,1510,0714 ; 3788 SET PI CYCLE,J/PICYC2 ;CONTINUE WITH 41+2N
; 3789 =0010 CLR AR,ARX_1S,SC_#,#/23., ;HERE IF RUN FLOP OFF
U 0142, 1630,2341,0200,0302,0000,0450,0027 ; 3790 CALL,J/ROTS ;BUILD ADDR MASK
;;3791 .IFNOT/EXTEXP ;[230]
;;3792 .IFNOT/OWGBP ;[344]
;;3793 ADMSK,FM_AR,AR_AR+1,J/CHALT ;SAVE MASK, GO HALT
;;3794 .IF/OWGBP ;[344]
;;3795 FM[ADMSK]_AR,AR_AR*2,J/EXMSK ;[230] AR HAS 77,,777776
;;3796 .ENDIF/OWGBP ;[344]
; 3797 .IF/EXTEXP ;[230]
U 0143, 0032,3703,5007,0000,0000,1010,0175 ; 3798 FM[ADMSK]_AR,AR_AR*2,J/EXMSK ;[230] AR HAS 77,,777776
; 3799 .ENDIF/EXTEXP ;[230]
; 3800 =0100
U 0144, 3325,0001,0000,0000,0000,2110,0145 ; 3801 MTRINT: CLR ACCOUNT EN,J/MTRREQ ;HERE IF METER REQUEST UP
U 0145, 3344,4001,3000,0302,0060,0010,0002 ; 3802 AR_EBUS,SC_#,#/2,J/PICYC1 ;HERE IF TAKE INTRPT DOESNT FIND
; 3803 =0110 ; A METER REQUEST
U 0146, 3344,4001,3000,0302,0060,0010,0002 ; 3804 INTRPT: AR_EBUS,SC_#,#/2,J/PICYC1 ;HERE IF INTERRUPT PENDING
; 3805 ;
; 3806 ; [321] Even if statistics are enabled, traps should not be lost,
; 3807 ; so override TRACKS and friends when TRAP is set.
; 3808 ;
;;3809 .IF/TRACKS
;;3810 =1000 AR_TRX+1,GEN CRY18,SKP CRY0,J/TRK1;STORE PC BEFORE EXECUTING INSTR
;;3811 VMA_420+TRAP,J/TRAPX ;[321] Don't lose traps!
; 3812 .ENDIF/TRACKS
;;3813 .IF/OP.CNT
;;3814 =1000 SC_#,#/9.,SKP USER,J/OPCT1 ;COUNT THIS INSTR
;;3815 VMA_420+TRAP,J/TRAPX ;[321] Don't lose traps!
; 3816 .ENDIF/OP.CNT
;;3817 .IF/OP.TIME
;;3818 =1000 AR_2,CLR TRK+PA EN,J/OPTM0 ;TIME THIS INSTR
;;3819 VMA_420+TRAP,J/TRAPX ;[321] Don't lose traps!
; 3820 .ENDIF/OP.TIME
;;3821 .IF/SO.CNT
;;3822 =1000
;;3823 TRK0: ARX_TRB,BRX/ARX,SKP AC REF,J/TRK1;GET PREV INSTR HOLD THIS INSTR
;;3824 VMA_420+TRAP,J/TRAPX ;[321] Don't lose traps!
; 3825 .ENDIF/SO.CNT
;;3826 .IF/SO2.CNT
;;3827 =1000
;;3828 TRK0: ARX_TRB,BRX/ARX,SKP AC REF,J/TRK1;GET PREV INSTR HOLD THIS INSTR
;;3829 VMA_420+TRAP,J/TRAPX ;[321] Don't lose traps!
; 3830 .ENDIF/SO2.CNT
; 3831 =1010
; 3832 XCTGO: BRX/ARX,AR_ARX,SET ACCOUNT EN, ;SAVE INSTR, SIGN EXTEND Y,
U 0152, 0174,2341,4022,0000,2000,2136,0105 ; 3833 XR,EA MOD DISP,J/COMPEA ; GO CALCULATE EA
U 0153, 0060,4001,0000,0000,0100,3110,0420 ; 3834 TRAP: VMA_420+TRAP,J/TRAPX ;HERE IF TRAP BITS SET
U 0156, 0152,3240,0203,0000,0020,1410,0000 ; 3835 =1110 ARX_FM(VMA),TIME/3T,LOAD IR,J/XCTGO ;HERE IF INSTR IS IN FM
U 0157, 0060,4001,0000,0000,0100,3110,0420 ; 3836 VMA_420+TRAP,J/TRAPX ;HERE IF TRAP BITS SET
; 3837
; 3838 ;HERE ON TRAPS, VMA SETUP WITH 420+TRAP CODE
; 3839 =11****
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 3-1
; BASIC.MIC[4,30] 17:12 9-Aug-84 NEXT INSTRUCTION DISPATCH
U 0060, 0270,0001,0000,0000,0013,0026,0033 ; 3840 TRAPX: LOAD ARX,PT REF ;GET AND XCT TRAP INSTR
U 0270, 0271,0001,0000,0000,0000,1510,0100 ; 3841 =11**** SET PC+1 INH ;DON'T INCREMENT PC FOR THIS INSTR
; 3842
; 3843 ;HERE AFTER FETCHING INSTR TO BE EXECUTED
; 3844
; 3845 =11****
U 0271, 0152,3240,0003,0000,0022,1410,0000 ; 3846 XCTW: ARX_MEM,LOAD IR,J/XCTGO ;GET INSTR TO XCT
; 3847 .IF/EXTEXP ;[230]
U 0032, 0121,4003,2000,0000,0020,0010,0000 ; 3848 EXMSK: AR_AR+1 ;[230] GIVES 77,,777777
U 0121, 0776,4001,0007,0000,0000,1010,0164 ; 3849 FM[EXPMSK]_AR,J/CHALT ;[230] MASK FOR FORTRAN EXT EXP
;;3850 .IFNOT/EXTEXP ;[344]
;;3851 .IF/OWGBP ;[344]
;;3852 EXMSK: AR_AR+1 ;[230] GIVES 77,,777777
;;3853 FM[EXPMSK]_AR,J/CHALT ;[230] MASK FOR FORTRAN EXT EXP
;;3854 .ENDIF/OWGBP ;[344]
; 3855 .ENDIF/EXTEXP ;[230]
; 3856
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 4
; BASIC.MIC[4,30] 17:12 9-Aug-84 EFFECTIVE ADDRESS COMPUTATION AND OPERAND FETCH
; 3857 .TOC "EFFECTIVE ADDRESS COMPUTATION AND OPERAND FETCH"
; 3858
; 3859 .IF/XADDR
; 3860 =11*0000
; 3861 EFIW: AR_ARX (AD),GLOBAL,A INDRCT, ;LONG EXTENDED ADDR
U 0160, 0070,3713,2000,0000,1111,7010,0230 ; 3862 SKP INTRPT,J/INDRCT ;WITH INDIRECT SET
; 3863 AR_ARX+XR,GLOBAL,A INDRCT,
U 0161, 0070,0610,2002,4000,1131,7010,0230 ; 3864 SKP INTRPT,J/INDRCT
; 3865 AR_ARX (AD),GLOBAL,A INDRCT,
U 0162, 0070,3713,2000,0000,1111,7010,0230 ; 3866 SKP INTRPT,J/INDRCT
; 3867 AR_ARX+XR,GLOBAL,A INDRCT,
U 0163, 0070,0610,2002,4000,1131,7010,0230 ; 3868 SKP INTRPT,J/INDRCT
; 3869
U 0164, 0000,3713,2000,0000,1204,0002,0300 ; 3870 AR_ARX (AD),GLOBAL,A READ ;LONG EXTENDED ADDR
U 0165, 0000,0610,2002,4000,1224,0002,0300 ; 3871 AR_ARX+XR,GLOBAL,A READ ; WITH INDEXING IN 2-5
U 0166, 0000,3713,2000,0000,1204,0002,0300 ; 3872 AR_ARX (AD),GLOBAL,A READ
U 0167, 0000,0610,2002,4000,1224,0002,0300 ; 3873 AR_ARX+XR,GLOBAL,A READ
; 3874
U 0170, 0134,0001,0000,0000,0000,2210,0400 ; 3875 PF24: GET ECL EBUS,J/ILLIND ;[234]ARX BITS 0,1 = 11
U 0171, 0134,0001,0000,0000,0000,2210,0400 ; 3876 GET ECL EBUS,J/ILLIND
U 0172, 0134,0001,0000,0000,0000,2210,0400 ; 3877 GET ECL EBUS,J/ILLIND
U 0173, 0134,0001,0000,0000,0000,2210,0400 ; 3878 GET ECL EBUS,J/ILLIND
; 3879
; 3880 .ENDIF/XADDR
; 3881
; 3882 =11*1100
U 0174, 0000,3701,0000,0000,0204,0002,0300 ; 3883 COMPEA: GEN AR,A READ ;LOCAL
U 0175, 0000,0600,0002,4000,2224,0002,0300 ; 3884 GEN AR+XR,INDEXED,A READ ;LOCAL UNLESS XR>0
; 3885 GEN AR,A INDRCT,
U 0176, 0070,3701,0000,0000,0111,7010,0230 ; 3886 SKP INTRPT,J/INDRCT
; 3887 GEN AR+XR,INDEXED,A INDRCT,
U 0177, 0070,0600,0002,4000,2131,7010,0230 ; 3888 SKP INTRPT,J/INDRCT
;;3889 .IFNOT/MODEL.B
;;3890 =11***0
;;3891 INDRCT: ARX_MEM,EA TYPE DISP,J/INDR1
;;3892 TAKINT: ARX_MEM,TAKE INTRPT
;;3893 =11**01
;;3894 INDR1: AR_ARX,XR,EA MOD DISP,J/COMPEA
;;3895 .IF/SXCT
;;3896 AR_ARX (AD),A READ ;HERE IF SXCT 0,
;;3897 .IFNOT/SXCT
;;3898 =
;;3899 .ENDIF/SXCT
; 3900 .IF/MODEL.B
;;3901 .IFNOT/XADDR
;;3902 =11***0
;;3903 INDRCT: ARX_MEM,J/INDR1
;;3904 TAKINT: ARX_MEM,TAKE INTRPT
;;3905
;;3906 =11****
;;3907 INDR1: AR_ARX,EA MOD DISP,J/COMPEA
; 3908 .IF/XADDR
; 3909 =11***0
U 0070, 0272,3240,0003,0000,0022,2510,0000 ; 3910 INDRCT: ARX_MEM,LONG EN,J/INDR1
U 0071, 0144,3200,0003,0000,0022,7710,0000 ; 3911 TAKINT: ARX_MEM,TAKE INTRPT
; 3912 =11****
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 4-1
; BASIC.MIC[4,30] 17:12 9-Aug-84 EFFECTIVE ADDRESS COMPUTATION AND OPERAND FETCH
; 3913 INDR1: AR_ARX,XR,EA MOD DISP,
U 0272, 0160,2341,4002,0301,2020,0036,0024 ; 3914 FE_#,#/24,TIME/3T,J/EFIW
; 3915
U 0134, 0141,3731,0000,0301,0303,1710,0024 ; 3916 ILLIND: VMA_VMA HELD, FE_#, #/24 ;[234]ILLEGAL INDIRECT PF
U 0141, 0147,4001,0000,0302,0000,0010,0140 ; 3917 SC_#, #/140 ;[234][242]
; 3918 ;[271]MASK TO INSERT PF CODE.
U 0147, 3371,0001,0000,0000,0007,0010,0140 ; 3919 MAP, J/PFPAR2 ;[234]GET MAP INFO, JOIN PF ROUTINE
; 3920 .ENDIF/XADDR
; 3921 .ENDIF/MODEL.B
; 3922
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 5
; BASIC.MIC[4,30] 17:12 9-Aug-84 WAIT FOR (E)
; 3923 .TOC "WAIT FOR (E)"
; 3924
; 3925 ;THE EXECUTE CODE FOR EACH INSTRUCTION IS ENTERED WITH
; 3926 ; THE OPCODE AND AC # IN BRX AND IR, THE LAST INDIRECT WORD
; 3927 ; IN ARX, AND AR AND VMA SETUP AS A FUNCTION OF THE A
; 3928 ; FIELD OF THE DISPATCH RAM. A PREFETCH IS IN PROGRESS IF THE
; 3929 ; DRAM A FIELD WAS 1 OR 5 (OR IF IR CONTAINS "JRST 0,").
; 3930
; 3931 ;ON "A READ", THE HARDWARE DISPATCHES TO THE EXECUTE CODE FOR
; 3932 ; THE INSTRUCTION IF THE DRAM A FIELD IS 0-2. IF THE A FIELD
; 3933 ; CONTAINS 3-7, THE HARDWARE DISPATCHES TO A (MODEL B), OR 40+A
; 3934 ; (MODEL A), BELOW:
; 3935
; 3936 ;COME HERE ON "A READ" FUNCTION IF DRAM A FIELD IS 3
; 3937 ; A "WRITE TST" IS IN PROGRESS
; 3938
; 3939 .IF/MODEL.B
; 3940 3:
;;3941 .IFNOT/MODEL.B
;;3942 43:
; 3943 .ENDIF/MODEL.B
; 3944 BR/AR,AR_AC0,MB WAIT, ;WAIT FOR PERMISSION TO WRITE
U 0003, 0000,3240,2040,0000,0022,0001,0000 ; 3945 TIME/3T,IR DISP,J/0 ;AND GO TO EXECUTE CODE
; 3946
; 3947 ;HERE ON "A READ" FUNCTION IF DRAM A FIELD IS 4
; 3948 ; A "LOAD AR" IS IN PROGRESS. We load FE with 2 for LDB and DPB. [337]
; 3949
; 3950 .IF/MODEL.B
; 3951 4:
;;3952 .IFNOT/MODEL.B
;;3953 44:
; 3954 .ENDIF/MODEL.B
; 3955 BR/AR,AR_MEM,TIME/3T,FE_#,#/2, ;GET OPERAND, set up FE for byte
U 0004, 0000,3200,0043,0301,0022,0001,0002 ; 3956 IR DISP,J/0 ; instructions [337], and go
; 3957
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 6
; BASIC.MIC[4,30] 17:12 9-Aug-84 WAIT FOR (E)
; 3958 ;HERE ON "A READ" IF A FIELD IS 5
; 3959 ; A "LOAD AR" IS IN PROGRESS, AND WE MUST PREFETCH WHEN IT COMPLETES
; 3960
; 3961 .IF/MODEL.B
; 3962 5:
;;3963 .IFNOT/MODEL.B
;;3964 45:
; 3965 .ENDIF/MODEL.B
; 3966 BR/AR,FIN XFER,I FETCH, ;GET OPERAND, PREFETCH,
U 0005, 0000,3200,0043,0000,0237,0001,0000 ; 3967 TIME/3T,IR DISP,J/0 ; & START EXECUTE
; 3968
; 3969 ;HERE ON "A READ" IF A FIELD IS 6
; 3970 ; A "LOAD AR" IS IN PROGRESS, BUT PAGING IS TESTING WRITABILITY
; 3971 ; We load FE with 2 for ILDB and IDPB. [337]
; 3972 .IF/MODEL.B
; 3973 6:
;;3974 .IFNOT/MODEL.B
;;3975 46:
; 3976 .ENDIF/MODEL.B
; 3977 BR/AR,AR_MEM,TIME/3T,FE_#,#/2, ;GET OPERAND, load FE for byte
U 0006, 0000,3200,0043,0301,0022,0001,0002 ; 3978 IR DISP,J/0 ; instructions [337], and go
; 3979
; 3980 ;HERE ON "A READ" IF A FIELD IS 7
; 3981 ; A "READ-PAUSE-WRITE" IS IN PROGRESS
; 3982
; 3983 .IF/MODEL.B
; 3984 7:
;;3985 .IFNOT/MODEL.B
;;3986 47:
; 3987 .ENDIF/MODEL.B
; 3988 BR/AR,AR_MEM,TIME/3T, ;GET OPERAND
U 0007, 0000,3200,0043,0000,0022,0001,0000 ; 3989 IR DISP,J/0 ; START EXECUTE
; 3990
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 7
; BASIC.MIC[4,30] 17:12 9-Aug-84 TERMINATION
; 3991 .TOC "TERMINATION"
; 3992
; 3993 ;DISPATCH HERE WITH THE "EXIT" MACRO,
; 3994 ; OR JUMP DIRECTLY TO ONE OF THESE LOCATIONS.
; 3995
; 3996 =11*000
; 3997 ST0: ;BASE FOR B DISP IN EXIT MACRO
; 3998 =001
U 0061, 0273,5401,2000,0000,0237,1016,0000 ; 3999 ST2AC: AC0_AR,AR_SIGN,I FETCH,J/STD1 ;HERE TO STORE AC0 & AC1
U 0062, 0061,4001,0003,0000,0002,0010,0000 ; 4000 FIN STORE,EXIT DBL ;MULB, DIVB, ETC ...
; 4001 FIN STORE,I FETCH, ;SELF MODE
U 0063, 0074,4001,0003,0000,0217,4610,0000 ; 4002 SKP AC#0,J/STSELF ; RESULT TO AC TOO?
U 0064, 0065,0001,4000,0000,0000,0010,0000 ; 4003 SHFLOD: AR_SHIFT ;[337] Shift byte load result
U 0065, 0140,4001,0000,0403,0002,1006,0000 ; 4004 STAC: AC0_AR,NXT INSTR ;NORMAL AND IMMEDIATE MODES
; 4005 ST6:
; 4006 IFNOP:
U 0066, 0075,4001,0003,0000,0217,0010,0000 ; 4007 STMEM: FIN STORE,I FETCH,J/NOP ;MEM MODE
; 4008 IFSTAC:
U 0067, 0074,0001,0003,0000,0217,0010,0000 ; 4009 STBOTH: FIN STORE,I FETCH,J/STORAC ;BOTH MODE
; 4010 =
; 4011 ;HERE TO FINISH, AFTER FETCHING NEXT INSTRUCTION.
; 4012 ; WE MUST GUARANTEE AT LEAST ONE EBOX CYCLE BETWEEN FETCH AND NICOND,
; 4013 ; TO ALLOW VMA AC REF TO MAKE IT THROUGH THE NICOND LOGIC.
; 4014 =11***0
; 4015 STSELF: ;SKIP, AOS, SOS COME HERE
U 0074, 0065,0001,0000,0000,0000,1610,0000 ; 4016 STORAC: SR_0,J/STAC ;STORE AC, TOO
U 0075, 0222,4001,0000,0000,0000,1610,0000 ; 4017 NOP: SR_0,J/FINI
; 4018
; 4019 =0
U 0020, 0222,4001,0000,0000,0000,0014,0000 ; 4020 CLRFPD: CLR FPD,J/FINI ;CAN'T DO THIS UNTIL STORE COMPLETE
U 0021, 0222,4001,0000,0000,0000,1610,0000 ; 4021 NOP2: SR_0,J/FINI ;THE CODE SEEMS TO WORK WITHOUT THIS
; 4022 ; BUT THE TIMING IS VERY HAIRY AND
; 4023 ; THE HARDWARE PROBABLY ISN'T
; 4024 ; SUPPOSED TO
; 4025
U 0222, 0140,0001,0000,0403,0002,0006,0000 ; 4026 FINI: NXT INSTR ;GET NEXT INSTR IN ARX & IR,
; 4027 ; LOAD PC, TEST PI CYCLE, RUN,
; 4028 ; PI READY, TRAPS
; 4029
; 4030 ;HERE TO STORE ARITHMETIC DOUBLE RESULTS
; 4031
U 0255, 0273,5441,2000,0000,0020,1016,0000 ; 4032 DSTAC: AC0_AR,AR_SIGN ;HERE WITH FETCH STARTED
U 0273, 0136,0001,4000,0000,0000,1610,0000 ; 4033 STD1: AR_SHIFT,SR_0 ;BRING IN LOW PART
; 4034 ;
; 4035 ; [356] The next two locations are fixed at 136 and 137. We don't
; 4036 ; really care where they are, but the front end looks at the # field
; 4037 ; of these to get the microcode major version (# bits 0-5 of 136),
; 4038 ; minor version (# bits 6-8 of 136), and edit number (# bits 0-8 of
; 4039 ; 137).
; 4040 ;
; 4041 136: ;[357]
; 4042 STAC1: AC1_AR,FINISH, ;GO DO NEXT INSTRUCTION
U 0136, 0222,4001,0001,0000,0000,1010,0010 ; 4043 MAJVER/MAJOR,MINVER/MINOR;[356]
; 4044 ;
; 4045 ;HERE TO GET MICRO-CODE VERSION #. FIXED LOC'N SO SOFTWARE CAN FIND IT
; 4046 ;
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 7-1
; BASIC.MIC[4,30] 17:12 9-Aug-84 TERMINATION
; 4047 137:
U 0137, 3354,4001,0040,0000,0000,0110,0357 ; 4048 UVERS: BR/AR,AR0-8_#,#/EDIT,J/GTAR08 ;COPY VERSION TO AR
; 4049
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 8
; BASIC.MIC[4,30] 17:12 9-Aug-84 MOVE GROUP, EXCH, BLT
; 4050 .TOC "MOVE GROUP, EXCH, BLT"
; 4051
; 4052 .DCODE
D 0200, 5500,0100 ; 4053 200: R-PF, AC, J/MOVE ;BASIC MOVE
D 0201, 1501,0100 ; 4054 I-PF, AC, J/MOVE
;;4055 .IF/WRTST
;;4056 W, M, J/MOVE
; 4057 .IFNOT/WRTST
D 0202, 0101,0103 ; 4058 I, B/1, J/MOVEM
; 4059 .ENDIF/WRTST
D 0203, 7301,0100 ; 4060 RPW, S, J/MOVE
; 4061
D 0204, 5500,0002 ; 4062 204: R-PF, AC, J/MOVS
D 0205, 1501,0002 ; 4063 I-PF, AC, J/MOVS
D 0206, 3600,0002 ; 4064 W, M, J/MOVS
D 0207, 7301,0002 ; 4065 RPW, S, J/MOVS
; 4066
D 0210, 5501,0201 ; 4067 210: R-PF, AC, J/MOVN
D 0211, 1500,0201 ; 4068 I-PF, AC, J/MOVN
D 0212, 3601,0201 ; 4069 W, M, J/MOVN
D 0213, 7300,0201 ; 4070 RPW, S, J/MOVN
; 4071
D 0214, 5500,0112 ; 4072 214: R-PF, AC, J/MOVM
D 0215, 1501,0112 ; 4073 I-PF, AC, J/MOVM
D 0216, 3600,0112 ; 4074 W, M, J/MOVM
D 0217, 7301,0112 ; 4075 RPW, S, J/MOVM
; 4076 .UCODE
; 4077
; 4078 ; ENTER WITH 0,E, (E), OR (AC) IN AR
; 4079 =0****00****
U 0002, 0060,4001,4000,0000,3005,0033,0000 ; 4080 MOVS: AR_AR SWAP,EXIT ;ALSO USED BY HALFWORD GROUP
; 4081 =
; 4082 =0****00****
U 0112, 0100,0001,0040,0000,0000,4510,0000 ; 4083 MOVM: BR/AR,SKP AR0,J/MOVE ;FORCE POSITIVE
; 4084 =
; 4085 =0****00****
U 0201, 0101,0001,0040,0000,0000,0010,0000 ; 4086 MOVN: BR/AR,J/MOVNEG ;GET NEGATIVE
; 4087 =
; 4088 100:
U 0100, 0060,0001,0000,0000,0005,0033,0000 ; 4089 MOVE: EXIT ;STORE AS IS FROM AR
; 4090 101:
U 0101, 0100,5142,2000,0000,0022,1310,0000 ; 4091 MOVNEG: AR_-BR,AD FLAGS,FETCH WAIT,J/MOVE
; 4092
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 9
; BASIC.MIC[4,30] 17:12 9-Aug-84 XMOVEI, XHLLI, MOVEM, EXCH, BLT
; 4093 .TOC "XMOVEI, XHLLI, MOVEM, EXCH, BLT"
; 4094
; 4095 ;HERE FOR XMOVEI (=SETMI), WITH 36-BIT ADDRESS IN VMA AND AR
; 4096
; 4097 .IF/XADDR
; 4098 102:
U 0102, 0334,0001,0000,0000,0217,5710,0000 ; 4099 XMOVEI: SKP -LOCAL AC ADDR,I FETCH
; 4100 =0
U 0334, 0065,4061,0000,0000,0021,0017,0002 ; 4101 XMOVEI1:ARL_1.M,ARR_ARR,J/STAC ;AC IN NON-ZERO SECTION
U 0335, 0065,0001,0000,0400,3000,0022,0200 ; 4102 CLR P,J/STAC ;RETURN 30-BIT ADDRESS
; 4103
; 4104 ;HERE FOR XHLLI (=HLLI), WITH 36-BIT ADDRESS IN VMA AND AR
; 4105 107:
; 4106 XHLLI: SKP -LOCAL AC ADDR,I FETCH,
U 0107, 0334,3240,2000,0000,0237,5722,0000 ; 4107 ARR_AC0.S,ARL_ARL.S,J/XMOVEI1
; 4108 .ENDIF/XADDR
; 4109
; 4110 ;EXCH, BLT
; 4111
; 4112 .DCODE
D 0250, 7001,0103 ; 4113 250: RPW, B/0, J/EXCH
D 0251, 2000,0104 ; 4114 EA, J/BLT
; 4115 .UCODE
; 4116
; 4117 103:
; 4118 MOVEM: ;LIKE EXCH, EXCEPT NO STORE AC
U 0103, 1330,3240,2400,0000,1036,0010,0000 ; 4119 EXCH: ARX_AR,AR_AC0,STORE,J/STMAC ;PUT AC AT E, THEN STORE AC
; 4120 104:
; 4121 BLT: MQ_AR,ARX_AR, ;END ADDR TO MQ & ARX
U 0104, 3252,3200,2410,0000,1020,0610,0000 ; 4122 ARR_AC0,ARL_ARL,J/BLT1 ;FIRST DEST ADDR TO AR
; 4123
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 10
; BASIC.MIC[4,30] 17:12 9-Aug-84 HALFWORD GROUP
; 4124 .TOC "HALFWORD GROUP"
; 4125 ; DESTINATION LEFT HALF
; 4126
; 4127 .DCODE
D 0500, 5500,0106 ; 4128 500: R-PF, AC, J/HLL
; 4129 .IF/XADDR
D 0501, 2500,0107 ; 4130 EA, AC, J/XHLLI ;GET 36 BIT ADDRESS IN AR AND VMA
;;4131 .IFNOT/XADDR
;;4132 I-PF, AC, J/HLL
; 4133 .ENDIF/XADDR
D 0502, 7601,0105 ; 4134 RPW, M, J/HRR ;HLLM = HRR EXCEPT FOR STORE
D 0503, 7301,0100 ; 4135 RPW, S, J/MOVE ;HLLS = MOVES
; 4136
D 0504, 5500,0205 ; 4137 R-PF, AC, J/HRL
D 0505, 1501,0205 ; 4138 I-PF, AC, J/HRL
D 0506, 7601,0114 ; 4139 RPW, M, J/HRLM
D 0507, 7300,0115 ; 4140 RPW, S, J/HRLS
; 4141
D 0510, 5500,0414 ; 4142 510: R-PF, AC, J/HLLZ
D 0511, 1501,0414 ; 4143 I-PF, AC, J/HLLZ
D 0512, 3600,0414 ; 4144 W, M, J/HLLZ
D 0513, 7301,0414 ; 4145 RPW, S, J/HLLZ
; 4146
D 0514, 5501,0300 ; 4147 R-PF, AC, J/HRLZ
D 0515, 1500,0300 ; 4148 I-PF, AC, J/HRLZ
D 0516, 3601,0300 ; 4149 W, M, J/HRLZ
D 0517, 7300,0300 ; 4150 RPW, S, J/HRLZ
; 4151
D 0520, 5501,0415 ; 4152 520: R-PF, AC, J/HLLO
D 0521, 1500,0415 ; 4153 I-PF, AC, J/HLLO
D 0522, 3601,0415 ; 4154 W, M, J/HLLO
D 0523, 7300,0415 ; 4155 RPW, S, J/HLLO
; 4156
D 0524, 5500,0301 ; 4157 R-PF, AC, J/HRLO
D 0525, 1501,0301 ; 4158 I-PF, AC, J/HRLO
D 0526, 3600,0301 ; 4159 W, M, J/HRLO
D 0527, 7301,0301 ; 4160 RPW, S, J/HRLO
; 4161
D 0530, 5501,0701 ; 4162 530: R-PF, AC, J/HLLE
D 0531, 1500,0701 ; 4163 I-PF, AC, J/HLLE
D 0532, 3601,0701 ; 4164 W, M, J/HLLE
D 0533, 7300,0701 ; 4165 RPW, S, J/HLLE
; 4166
D 0534, 5501,0506 ; 4167 R-PF, AC, J/HRLE
D 0535, 1500,0506 ; 4168 I-PF, AC, J/HRLE
D 0536, 3601,0506 ; 4169 W, M, J/HRLE
D 0537, 7300,0506 ; 4170 RPW, S, J/HRLE
; 4171
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 11
; BASIC.MIC[4,30] 17:12 9-Aug-84 HALFWORD GROUP
; 4172 ; DESTINATION RIGHT HALF
; 4173
D 0540, 5500,0105 ; 4174 540: R-PF, AC, J/HRR
D 0541, 1501,0105 ; 4175 I-PF, AC, J/HRR
D 0542, 7601,0106 ; 4176 RPW, M, J/HLL ;HRRM = HLL EXCEPT FOR STORE
D 0543, 7301,0100 ; 4177 RPW, S, J/MOVE ;HRRS = MOVES
; 4178
D 0544, 5501,0306 ; 4179 R-PF, AC, J/HLR
D 0545, 1500,0306 ; 4180 I-PF, AC, J/HLR
D 0546, 7600,0202 ; 4181 RPW, M, J/HLRM
D 0547, 7301,0203 ; 4182 RPW, S, J/HLRS
; 4183
D 0550, 5500,0214 ; 4184 550: R-PF, AC, J/HRRZ
D 0551, 1501,0214 ; 4185 I-PF, AC, J/HRRZ
D 0552, 3600,0214 ; 4186 W, M, J/HRRZ
D 0553, 7301,0214 ; 4187 RPW, S, J/HRRZ
; 4188
D 0554, 5500,0304 ; 4189 R-PF, AC, J/HLRZ
D 0555, 1501,0304 ; 4190 I-PF, AC, J/HLRZ
D 0556, 3600,0304 ; 4191 W, M, J/HLRZ
D 0557, 7301,0304 ; 4192 RPW, S, J/HLRZ
; 4193
D 0560, 5501,0215 ; 4194 560: R-PF, AC, J/HRRO
D 0561, 1500,0215 ; 4195 I-PF, AC, J/HRRO
D 0562, 3601,0215 ; 4196 W, M, J/HRRO
D 0563, 7300,0215 ; 4197 RPW, S, J/HRRO
; 4198
D 0564, 5501,0305 ; 4199 R-PF, AC, J/HLRO
D 0565, 1500,0305 ; 4200 I-PF, AC, J/HLRO
D 0566, 3601,0305 ; 4201 W, M, J/HLRO
D 0567, 7300,0305 ; 4202 RPW, S, J/HLRO
; 4203
D 0570, 5501,0413 ; 4204 570: R-PF, AC, J/HRRE
D 0571, 1500,0413 ; 4205 I-PF, AC, J/HRRE
D 0572, 3601,0413 ; 4206 W, M, J/HRRE
D 0573, 7300,0413 ; 4207 RPW, S, J/HRRE
; 4208
D 0574, 5500,0516 ; 4209 R-PF, AC, J/HLRE
D 0575, 1501,0516 ; 4210 I-PF, AC, J/HLRE
D 0576, 3600,0516 ; 4211 W, M, J/HLRE
D 0577, 7301,0516 ; 4212 RPW, S, J/HLRE
; 4213
; 4214 .UCODE
; 4215
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 12
; BASIC.MIC[4,30] 17:12 9-Aug-84 HALFWORD GROUP
; 4216 ;FIRST, THE 16 OPS WHICH DO NOT AFFECT THE "OTHER" HALF.
; 4217 ;THESE MUST BE TREATED SEPARATELY, BECAUSE THEY COMBINE MEMORY DATA
; 4218 ;IN AR WITH DATA FROM THE FM. ENTER WITH 0,E OR (E) IN AR.
; 4219
; 4220 105:
U 0105, 0060,3200,0000,0000,0025,0633,0002 ; 4221 HRR: ARL_AC0,ARR_ARR,EXIT ;HRR, HRRI, HLLM
; 4222 106:
U 0106, 0060,3200,2000,0000,0025,0633,0000 ; 4223 HLL: ARR_AC0,ARL_ARL,EXIT ;HLL, HLLI, HRRM
; 4224 ;HRRS, HLLS ARE BOTH EQUIVALENT TO MOVES
; 4225 =0****00****
U 0205, 0060,3240,2000,0000,3025,0633,0004 ; 4226 HRL: ARL_ARR,ARR_AC0,EXIT ;HRL, HRLI
; 4227 =
; 4228 =0****00****
U 0306, 0060,3240,4000,0000,3025,0633,0002 ; 4229 HLR: ARR_ARL,ARL_AC0,EXIT ;HLR, HLRI
; 4230 =
; 4231 =0****00***0
U 0114, 0002,3240,2000,0000,3020,0610,0004 ; 4232 HRLM: ARL_ARR,ARR_AC0,J/MOVS ;HRLM
U 0115, 0060,4001,0000,0000,3005,0633,0004 ; 4233 HRLS: ARL_ARR,ARR_ARR,EXIT ;HRLS
; 4234 =
; 4235 =0****00***0
U 0202, 0002,3240,4000,0000,3020,0610,0002 ; 4236 HLRM: ARR_ARL,ARL_AC0,J/MOVS ;HLRM
U 0203, 0060,4001,4000,0000,3005,0633,0000 ; 4237 HLRS: ARR_ARL,ARL_ARL,EXIT ;HLRS
; 4238 =
; 4239 ;NOW THE HALFWORD OPS WHICH CONTROL THE "OTHER" HALF
; 4240 ; ENTER WITH 0,E, (E), OR (AC) IN AR
; 4241
; 4242 =0****00****
U 0413, 0214,0001,0000,0000,0000,4410,0000 ; 4243 HRRE: SKP AR18 ;SELECT HRRZ OR HRRO ON SIGN
; 4244 =
; 4245 =0****00***0
U 0214, 0060,4001,0000,0000,0005,0633,0020 ; 4246 HRRZ: ARL_0S,ARR_ARR,EXIT
U 0215, 0060,2301,0000,0000,0005,0633,0002 ; 4247 HRRO: ARL_1S,ARR_ARR,EXIT
; 4248 =
; 4249 =0****00****
U 0506, 0300,4001,0000,0000,0000,4410,0000 ; 4250 HRLE: SKP AR18
; 4251 =
; 4252 =0****00***0
U 0300, 0060,3441,2000,0000,3005,0633,0004 ; 4253 HRLZ: ARL_ARR,ARR_0S,EXIT
U 0301, 0060,2341,2000,0000,3005,0633,0004 ; 4254 HRLO: ARL_ARR,ARR_1S,EXIT
; 4255 =
; 4256 =0****00****
U 0516, 0304,4001,0000,0000,0000,4510,0000 ; 4257 HLRE: SKP AR0
; 4258 =
; 4259 =0****00***0
U 0304, 0060,0001,4000,0000,3005,0633,0020 ; 4260 HLRZ: ARR_ARL,ARL_0S,EXIT
U 0305, 0060,2341,4000,0000,3005,0633,0002 ; 4261 HLRO: ARR_ARL,ARL_1S,EXIT
; 4262 =
; 4263 =0****00****
U 0701, 0414,4001,0000,0000,0000,4510,0000 ; 4264 HLLE: SKP AR0
; 4265 =
; 4266 =0****00***0
U 0414, 0060,3401,2000,0000,0005,0633,0000 ; 4267 HLLZ: ARR_0S,ARL_ARL,EXIT
U 0415, 0060,2301,2000,0000,0005,0633,0000 ; 4268 HLLO: ARR_1S,ARL_ARL,EXIT
; 4269 =
; 4270
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 13
; BASIC.MIC[4,30] 17:12 9-Aug-84 DMOVE, DMOVN, DMOVEM, DMOVNM
; 4271 .TOC "DMOVE, DMOVN, DMOVEM, DMOVNM"
; 4272 ;DOUBLE-WORD MOVES
; 4273
; 4274 .DCODE
D 0120, 4001,0711 ; 4275 120: R, B/0, J/DMOVE
D 0121, 4100,0711 ; 4276 R, B/1, J/DMOVN
; 4277 .UCODE
; 4278
; 4279 ; ENTER WITH (E) IN AR
; 4280 =0****00****
; 4281 DMOVN:
U 0711, 0030,4001,0000,0000,0013,3633,0000 ; 4282 DMOVE: VMA_VMA+1,LOAD ARX,B DISP ;PICK UP (E+1)
; 4283 =
; 4284 =00
U 0030, 2111,3240,0003,0000,0022,0010,0000 ; 4285 DLOAD: ARX_MEM,J/STDAC ;[343] GO STORE DOUBLE AC
U 0031, 0371,3200,0003,0000,0022,0062,0100 ; 4286 ARX_MEM,MQ_0.S,CALL.S,J/GTDBR ;LOAD BR WITH DOUBLE OPERAND
; 4287 =11 AR_-BR LONG,AD FLAGS, ;NEGATE DOUBLE OPERAND
U 0033, 0331,5142,2600,0302,0020,1327,0043 ; 4288 SC_#,#/35. ;& STORE RESULT
U 0331, 0273,3441,2000,0000,0217,1010,0000 ; 4289 DBLST: AC0_AR,AR_0S,I FETCH,J/STD1 ;STORE HIGH WORD, READY LOW
; 4290
; 4291
; 4292 ;DOUBLE MOVES TO MEMORY
; 4293
; 4294 .DCODE
D 0124, 3001,0110 ; 4295 124: W, J/DMOVEM
D 0125, 3000,0111 ; 4296 W, J/DMOVNM
; 4297 .UCODE
; 4298
; 4299 ;ENTER WITH (AC) IN AR
; 4300 =0****00**00
U 0110, 0352,3240,0201,0302,0036,0010,0044 ; 4301 DMOVEM: ARX_AC1,STORE,SC_#,#/36.,J/DMVM1
U 0111, 0371,3240,0201,0000,0020,0062,0100 ; 4302 DMOVNM: ARX_AC1,MQ_0.S,CALL.S,J/GTDBR ;HIGH WORD IS ALREADY IN AR
; 4303 =11 AR_-BR LONG,AD FLAGS, ;NEGATE
U 0113, 0352,5162,2600,0302,0036,1327,0043 ; 4304 STORE,SC_#,#/35. ; & STORE
; 4305 =
U 0352, 0361,3441,2003,0000,0002,3610,0000 ; 4306 DMVM1: MEM_AR,VMA_VMA+1,AR_0S
U 0361, 0066,4001,4000,0000,0016,0010,0000 ; 4307 AR_SHIFT,STORE,J/STMEM
; 4308
U 0371, 0375,3721,0500,0000,0000,0010,0000 ; 4309 GTDBR: ARX_ARX*2 ;SHIFT OUT LOW SIGN
U 0375, 0003,0001,0060,0000,0000,0003,0000 ; 4310 LDBRL: BR_AR LONG,RETURN3 ;COPY TO BR LONG
; 4311
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 14
; BASIC.MIC[4,30] 17:12 9-Aug-84 BOOLEAN GROUP
; 4312 .TOC "BOOLEAN GROUP"
; 4313 .DCODE
D 0400, 1501,0712 ; 4314 400: I-PF, AC, J/SETZ
D 0401, 1501,0712 ; 4315 I-PF, AC, J/SETZ
D 0402, 0600,0712 ; 4316 IW, M, J/SETZ
D 0403, 0701,0712 ; 4317 IW, B, J/SETZ
; 4318 .UCODE
; 4319
; 4320 =0****00****
U 0712, 0060,3401,2000,0000,0005,0033,0000 ; 4321 SETZ: AR_0S,EXIT
; 4322 =
; 4323 .DCODE
D 0404, 5501,0715 ; 4324 404: R-PF, AC, J/AND
D 0405, 1500,0715 ; 4325 I-PF, AC, J/AND
D 0406, 7600,0715 ; 4326 RPW, M, J/AND
D 0407, 7701,0715 ; 4327 RPW, B, J/AND
; 4328 .UCODE
; 4329
; 4330 =0****00****
U 0715, 0060,3600,2000,4000,0025,0033,0000 ; 4331 AND: AR_AR*AC0,AD/AND,EXIT
; 4332 =
; 4333 .DCODE
D 0410, 5501,0716 ; 4334 410: R-PF, AC, J/ANDCA
D 0411, 1500,0716 ; 4335 I-PF, AC, J/ANDCA
D 0412, 7600,0716 ; 4336 RPW, M, J/ANDCA
D 0413, 7701,0716 ; 4337 RPW, B, J/ANDCA
; 4338 .UCODE
; 4339
; 4340 =0****00****
U 0716, 0060,3500,2000,4000,0025,0033,0000 ; 4341 ANDCA: AR_AR*AC0,AD/ANDCB,EXIT
; 4342 =
; 4343 .DCODE
D 0414, 5500,0100 ; 4344 414: R-PF, AC, J/MOVE ;SETM = MOVE
; 4345 .IF/XADDR
D 0415, 2500,0102 ; 4346 EA, AC, J/XMOVEI ;XMOVEI <=> SETMI
;;4347 .IFNOT/XADDR
;;4348 I-PF, AC, J/MOVE
; 4349 .ENDIF/XADDR
D 0416, 7601,0100 ; 4350 RPW, M, J/MOVE ;SETMM = NOP THAT WRITES MEMORY
D 0417, 7700,0100 ; 4351 RPW, B, J/MOVE ;SETMB = MOVE THAT WRITES MEMORY
; 4352
D 0420, 5501,1001 ; 4353 420: R-PF, AC, J/ANDCM
D 0421, 1500,1001 ; 4354 I-PF, AC, J/ANDCM
D 0422, 7600,1001 ; 4355 RPW, M, J/ANDCM
D 0423, 7701,1001 ; 4356 RPW, B, J/ANDCM
; 4357 .UCODE
; 4358
; 4359 =0****00****
U 1001, 0060,3000,2000,4000,0025,0033,0000 ; 4360 ANDCM: AR_AR*AC0,AD/ANDCA,EXIT
; 4361 =
; 4362 .DCODE
D 0424, 5001,0014 ; 4363 424: R-PF, J/TDN ;SETA = NOP
D 0425, 1000,0014 ; 4364 I-PF, J/TDN ;SETAI IS, TOO
D 0426, 3600,0100 ; 4365 W, M, J/MOVE ;SETAM = MOVEM
D 0427, 3600,0100 ; 4366 W, M, J/MOVE ;SETAB, TOO
; 4367
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 15
; BASIC.MIC[4,30] 17:12 9-Aug-84 BOOLEAN GROUP
; 4368 .DCODE
D 0430, 5501,1007 ; 4369 430: R-PF, AC, J/XOR
D 0431, 1500,1007 ; 4370 I-PF, AC, J/XOR
D 0432, 7600,1007 ; 4371 RPW, M, J/XOR
D 0433, 7701,1007 ; 4372 RPW, B, J/XOR
; 4373 .UCODE
; 4374
; 4375 =0****00****
U 1007, 0060,3100,2000,0000,0025,0033,0000 ; 4376 XOR: AR_AR*AC0,AD/XOR,EXIT
; 4377 =
; 4378 .DCODE
D 0434, 5500,1116 ; 4379 434: R-PF, AC, J/IOR
D 0435, 1501,1116 ; 4380 I-PF, AC, J/IOR
D 0436, 7601,1116 ; 4381 RPW, M, J/IOR
D 0437, 7700,1116 ; 4382 RPW, B, J/IOR
; 4383 .UCODE
; 4384
; 4385 =0****00****
U 1116, 0060,3300,2000,4000,0025,0033,0000 ; 4386 IOR: AR_AR*AC0,AD/OR,EXIT
; 4387 =
; 4388 .DCODE
D 0440, 5500,1311 ; 4389 440: R-PF, AC, J/ANDCB
D 0441, 1501,1311 ; 4390 I-PF, AC, J/ANDCB
D 0442, 7601,1311 ; 4391 RPW, M, J/ANDCB
D 0443, 7700,1311 ; 4392 RPW, B, J/ANDCB
; 4393 .UCODE
; 4394
; 4395 =0****00****
U 1311, 0060,2400,2000,4000,0025,0033,0000 ; 4396 ANDCB: AR_AR*AC0,AD/ANDC,EXIT
; 4397 =
; 4398 .DCODE
D 0444, 5501,1510 ; 4399 444: R-PF, AC, J/EQV
D 0445, 1500,1510 ; 4400 I-PF, AC, J/EQV
D 0446, 7600,1510 ; 4401 RPW, M, J/EQV
D 0447, 7701,1510 ; 4402 RPW, B, J/EQV
; 4403 .UCODE
; 4404
; 4405 =0****00****
U 1510, 0060,2600,2000,0000,0025,0033,0000 ; 4406 EQV: AR_AR*AC0,AD/EQV,EXIT
; 4407 =
; 4408 .DCODE
D 0450, 1501,1511 ; 4409 450: I-PF, AC, J/SETCA
D 0451, 1501,1511 ; 4410 I-PF, AC, J/SETCA
D 0452, 0600,1511 ; 4411 IW, M, J/SETCA
D 0453, 0701,1511 ; 4412 IW, B, J/SETCA
; 4413 .UCODE
; 4414
; 4415 =0****00****
U 1511, 0060,2500,2000,0000,0025,0033,0000 ; 4416 SETCA: AR_AR*AC0,AD/SETCB,EXIT
; 4417 =
; 4418
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 16
; BASIC.MIC[4,30] 17:12 9-Aug-84 BOOLEAN GROUP
; 4419 .DCODE
D 0454, 5500,1512 ; 4420 454: R-PF, AC, J/ORCA
D 0455, 1501,1512 ; 4421 I-PF, AC, J/ORCA
D 0456, 7601,1512 ; 4422 RPW, M, J/ORCA
D 0457, 7700,1512 ; 4423 RPW, B, J/ORCA
; 4424 .UCODE
; 4425
; 4426 =0****00****
U 1512, 0060,2700,2000,4000,0025,0033,0000 ; 4427 ORCA: AR_AR*AC0,AD/ORCB,EXIT
; 4428 =
; 4429 .DCODE
D 0460, 5501,1513 ; 4430 460: R-PF, AC, J/SETCM
D 0461, 1500,1513 ; 4431 I-PF, AC, J/SETCM
D 0462, 7600,1513 ; 4432 RPW, M, J/SETCM
D 0463, 7701,1513 ; 4433 RPW, B, J/SETCM
; 4434 .UCODE
; 4435
; 4436 =0****00****
U 1513, 0060,2001,2000,0000,0005,0033,0000 ; 4437 SETCM: ADA/AR,AD/SETCA,AR/AD,EXIT
; 4438 =
; 4439 .DCODE
D 0464, 5500,1514 ; 4440 464: R-PF, AC, J/ORCM
D 0465, 1501,1514 ; 4441 I-PF, AC, J/ORCM
D 0466, 7601,1514 ; 4442 RPW, M, J/ORCM
D 0467, 7700,1514 ; 4443 RPW, B, J/ORCM
; 4444 .UCODE
; 4445
; 4446 =0****00****
U 1514, 0060,2200,2000,4000,0025,0033,0000 ; 4447 ORCM: AR_AR*AC0,AD/ORCA,EXIT
; 4448 =
; 4449 .DCODE
D 0470, 5501,1515 ; 4450 470: R-PF, AC, J/ORCB
D 0471, 1500,1515 ; 4451 I-PF, AC, J/ORCB
D 0472, 7600,1515 ; 4452 RPW, M, J/ORCB
D 0473, 7701,1515 ; 4453 RPW, B, J/ORCB
; 4454 .UCODE
; 4455
; 4456 =0****00****
U 1515, 0060,2100,2000,4000,0025,0033,0000 ; 4457 ORCB: AR_AR*AC0,AD/ORC,EXIT
; 4458 =
; 4459 .DCODE
D 0474, 1500,1516 ; 4460 474: I-PF, AC, J/SETO
D 0475, 1500,1516 ; 4461 I-PF, AC, J/SETO
D 0476, 0601,1516 ; 4462 IW, M, J/SETO
D 0477, 0700,1516 ; 4463 IW, B, J/SETO
; 4464 .UCODE
; 4465
; 4466 =0****00****
U 1516, 0060,2301,2000,0000,0005,0033,0000 ; 4467 SETO: AR_1S,EXIT
; 4468 =
; 4469
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 1
; SKPJMP.MIC[4,30] 17:12 9-Aug-84 TEST GROUP
; 4470 .TOC "TEST GROUP"
; 4471 .DCODE
D 0600, 1000,0014 ; 4472 600: I-PF, J/TDN ;TRN- IS NOP
D 0601, 1000,0014 ; 4473 I-PF, J/TDN ;SO IS TLN-
D 0602, 0000,0013 ; 4474 I, TNE, J/TDXX
D 0603, 0001,0012 ; 4475 I, TNE, J/TSXX
D 0604, 0000,0010 ; 4476 I, TNA, J/TDX
D 0605, 0001,0011 ; 4477 I, TNA, J/TSX
D 0606, 0401,0013 ; 4478 I, TNN, J/TDXX
D 0607, 0400,0012 ; 4479 I, TNN, J/TSXX
; 4480
D 0610, 1000,0014 ; 4481 610: I-PF, J/TDN ;TDN- IS A NOP
D 0611, 1000,0014 ; 4482 I-PF, J/TDN ;TSN- ALSO
D 0612, 4001,0013 ; 4483 R, TNE, J/TDXX
D 0613, 4000,0012 ; 4484 R, TNE, J/TSXX
D 0614, 4001,0010 ; 4485 R, TNA, J/TDX
D 0615, 4000,0011 ; 4486 R, TNA, J/TSX
D 0616, 4400,0013 ; 4487 R, TNN, J/TDXX
D 0617, 4401,0012 ; 4488 R, TNN, J/TSXX
; 4489
D 0620, 0500,0010 ; 4490 620: I, TZ-, J/TDX
D 0621, 0501,0011 ; 4491 I, TZ-, J/TSX
D 0622, 0101,0013 ; 4492 I, TZE, J/TDXX
D 0623, 0100,0012 ; 4493 I, TZE, J/TSXX
D 0624, 0101,0010 ; 4494 I, TZA, J/TDX
D 0625, 0100,0011 ; 4495 I, TZA, J/TSX
D 0626, 0500,0013 ; 4496 I, TZN, J/TDXX
D 0627, 0501,0012 ; 4497 I, TZN, J/TSXX
; 4498
D 0630, 4501,0010 ; 4499 630: R, TZ-, J/TDX
D 0631, 4500,0011 ; 4500 R, TZ-, J/TSX
D 0632, 4100,0013 ; 4501 R, TZE, J/TDXX
D 0633, 4101,0012 ; 4502 R, TZE, J/TSXX
D 0634, 4100,0010 ; 4503 R, TZA, J/TDX
D 0635, 4101,0011 ; 4504 R, TZA, J/TSX
D 0636, 4501,0013 ; 4505 R, TZN, J/TDXX
D 0637, 4500,0012 ; 4506 R, TZN, J/TSXX
; 4507
D 0640, 0600,0010 ; 4508 640: I, TC-, J/TDX
D 0641, 0601,0011 ; 4509 I, TC-, J/TSX
D 0642, 0201,0013 ; 4510 I, TCE, J/TDXX
D 0643, 0200,0012 ; 4511 I, TCE, J/TSXX
D 0644, 0201,0010 ; 4512 I, TCA, J/TDX
D 0645, 0200,0011 ; 4513 I, TCA, J/TSX
D 0646, 0600,0013 ; 4514 I, TCN, J/TDXX
D 0647, 0601,0012 ; 4515 I, TCN, J/TSXX
; 4516
D 0650, 4601,0010 ; 4517 650: R, TC-, J/TDX
D 0651, 4600,0011 ; 4518 R, TC-, J/TSX
D 0652, 4200,0013 ; 4519 R, TCE, J/TDXX
D 0653, 4201,0012 ; 4520 R, TCE, J/TSXX
D 0654, 4200,0010 ; 4521 R, TCA, J/TDX
D 0655, 4201,0011 ; 4522 R, TCA, J/TSX
D 0656, 4601,0013 ; 4523 R, TCN, J/TDXX
D 0657, 4600,0012 ; 4524 R, TCN, J/TSXX
; 4525
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 2
; SKPJMP.MIC[4,30] 17:12 9-Aug-84 TEST GROUP
D 0660, 0701,0010 ; 4526 660: I, TO-, J/TDX
D 0661, 0700,0011 ; 4527 I, TO-, J/TSX
D 0662, 0300,0013 ; 4528 I, TOE, J/TDXX
D 0663, 0301,0012 ; 4529 I, TOE, J/TSXX
D 0664, 0300,0010 ; 4530 I, TOA, J/TDX
D 0665, 0301,0011 ; 4531 I, TOA, J/TSX
D 0666, 0701,0013 ; 4532 I, TON, J/TDXX
D 0667, 0700,0012 ; 4533 I, TON, J/TSXX
; 4534
D 0670, 4700,0010 ; 4535 670: R, TO-, J/TDX
D 0671, 4701,0011 ; 4536 R, TO-, J/TSX
D 0672, 4301,0013 ; 4537 R, TOE, J/TDXX
D 0673, 4300,0012 ; 4538 R, TOE, J/TSXX
D 0674, 4301,0010 ; 4539 R, TOA, J/TDX
D 0675, 4300,0011 ; 4540 R, TOA, J/TSX
D 0676, 4700,0013 ; 4541 R, TON, J/TDXX
D 0677, 4701,0012 ; 4542 R, TON, J/TSXX
; 4543 .UCODE
; 4544
; 4545 ;THESE 64 INSTRUCTIONS ARE DECODED BY MASK MODE (IMMEDIATE OR MEMORY)
; 4546 ; IN THE A FIELD, DISPATCH TO HERE ON THE J FIELD, AND RE-DISPATCH
; 4547 ; FOR THE MODIFICATION ON THE B FIELD.
; 4548
; 4549 ; ENTER WITH 0,E OR (E) IN AR, B FIELD BITS 1 AND 2 AS FOLLOWS:
; 4550 ; 0 0 NO MODIFICATION
; 4551 ; 0 1 ZEROS
; 4552 ; 1 0 COMPLEMENT
; 4553 ; 1 1 ONES
; 4554 ; THIS ORDER HAS NO SIGNIFICANCE EXCEPT THAT IT CORRESPONDS TO THE
; 4555 ; ORDER OF INSTRUCTIONS AT TGROUP.
; 4556
; 4557 ;THE HIGH ORDER BIT OF THE B FIELD (B0) IS XOR'D WITH AD CRY0 TO
; 4558 ; DETERMINE THE SENSE OF THE SKIP:
; 4559 ; 0 SKIP IF CRY0=1 (TXX- AND TXXN)
; 4560 ; 1 SKIP IF CRY0=0 (TXXA AND TXXE)
; 4561
; 4562 =0****00*000
; 4563 TDX: TEST FETCH,NO CRY, ;TDXA AND TRXA
U 0010, 0014,2001,0000,0000,0226,0033,0203 ; 4564 B DISP,J/TDN
; 4565
; 4566 TSX: AR_AR SWAP,TEST FETCH,NO CRY, ;TSX, TSXA, TLX, AND TLXA
U 0011, 0014,2041,4000,0000,3226,0033,0203 ; 4567 B DISP,J/TDN
; 4568
U 0012, 0013,4001,4000,0000,3000,0010,0000 ; 4569 TSXX: AR_AR SWAP ;TSXE, TSXN, TLXE, AND TLXN
; 4570
U 0013, 0014,3600,0000,0000,0246,0033,0203 ; 4571 TDXX: TEST AR.AC0,TEST FETCH,B DISP ;TDXE, TDXN, TRXE, AND TRXN
; 4572
U 0014, 0222,0001,0000,0000,0000,0010,0000 ; 4573 TDN: J/FINI ;NO MODIFICATION
U 0015, 0065,3000,2000,4000,0000,0010,0000 ; 4574 TDZ: AR_AR*AC0,AD/ANDCA,TIME/2T,J/STAC ;ZEROS
U 0016, 0065,3100,2000,0000,0000,0010,0000 ; 4575 TDC: AR_AR*AC0,AD/XOR,TIME/2T,J/STAC ;COMP
U 0017, 0065,3300,2000,4000,0000,0010,0000 ; 4576 TDO: AR_AR*AC0,AD/OR,TIME/2T,J/STAC ;ONES
; 4577 =
; 4578
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 3
; SKPJMP.MIC[4,30] 17:12 9-Aug-84 COMPARE -- CAI, CAM
; 4579 .TOC "COMPARE -- CAI, CAM"
; 4580
; 4581 .DCODE
D 0300, 0300,1517 ; 4582 300: I, SJC-, J/CAIM ;CAI
D 0301, 0201,1517 ; 4583 I, SJCL, J/CAIM
D 0302, 0101,1517 ; 4584 I, SJCE, J/CAIM
D 0303, 0000,1517 ; 4585 I, SJCLE, J/CAIM
D 0304, 0701,1517 ; 4586 I, SJCA, J/CAIM
D 0305, 0600,1517 ; 4587 I, SJCGE, J/CAIM
D 0306, 0500,1517 ; 4588 I, SJCN, J/CAIM
D 0307, 0401,1517 ; 4589 I, SJCG, J/CAIM
; 4590
D 0310, 4301,1517 ; 4591 310: R, SJC-, J/CAIM ;CAM
D 0311, 4200,1517 ; 4592 R, SJCL, J/CAIM
D 0312, 4100,1517 ; 4593 R, SJCE, J/CAIM
D 0313, 4001,1517 ; 4594 R, SJCLE, J/CAIM
D 0314, 4700,1517 ; 4595 R, SJCA, J/CAIM
D 0315, 4601,1517 ; 4596 R, SJCGE, J/CAIM
D 0316, 4501,1517 ; 4597 R, SJCN, J/CAIM
D 0317, 4400,1517 ; 4598 R, SJCG, J/CAIM
; 4599 .UCODE
; 4600
; 4601 =0****00****
U 1517, 0075,3100,0000,0000,0246,0010,0201 ; 4602 CAIM: GEN AR*AC0,COMP FETCH,J/NOP
; 4603 =
; 4604
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 4
; SKPJMP.MIC[4,30] 17:12 9-Aug-84 ARITHMETIC SKIPS -- AOS, SOS, SKIP
; 4605 .TOC "ARITHMETIC SKIPS -- AOS, SOS, SKIP"
; 4606 ;ENTER WITH (E) IN AR
; 4607
; 4608 .DCODE
D 0330, 4301,1600 ; 4609 330: R, SJC-, J/SKIP ;NOT A NOP IF AC .NE. 0
D 0331, 4200,1600 ; 4610 R, SJCL, J/SKIP
D 0332, 4100,1600 ; 4611 R, SJCE, J/SKIP
D 0333, 4001,1600 ; 4612 R, SJCLE, J/SKIP
D 0334, 4700,1600 ; 4613 R, SJCA, J/SKIP
D 0335, 4601,1600 ; 4614 R, SJCGE, J/SKIP
D 0336, 4501,1600 ; 4615 R, SJCN, J/SKIP
D 0337, 4400,1600 ; 4616 R, SJCG, J/SKIP
; 4617 .UCODE
; 4618
; 4619 =0****00****
; 4620 SKIP: FIN STORE,SKIP FETCH,
U 1600, 0074,3703,0003,0000,0246,4610,0202 ; 4621 SKP AC#0,J/STSELF ;STORE IN SELF MODE
; 4622 =
; 4623
; 4624 .DCODE
D 0350, 7300,1601 ; 4625 350: RPW, SJC-, J/AOS
D 0351, 7201,1601 ; 4626 RPW, SJCL, J/AOS
D 0352, 7101,1601 ; 4627 RPW, SJCE, J/AOS
D 0353, 7000,1601 ; 4628 RPW, SJCLE, J/AOS
D 0354, 7701,1601 ; 4629 RPW, SJCA, J/AOS
D 0355, 7600,1601 ; 4630 RPW, SJCGE, J/AOS
D 0356, 7500,1601 ; 4631 RPW, SJCN, J/AOS
D 0357, 7401,1601 ; 4632 RPW, SJCG, J/AOS
; 4633 .UCODE
; 4634
; 4635 =0****00****
U 1601, 1600,4003,2000,0000,0036,1310,0000 ; 4636 AOS: AR_AR+1,AD FLAGS,STORE,J/SKIP
; 4637 =
; 4638
; 4639 .DCODE
D 0370, 7300,1602 ; 4640 370: RPW, SJC-, J/SOS
D 0371, 7201,1602 ; 4641 RPW, SJCL, J/SOS
D 0372, 7101,1602 ; 4642 RPW, SJCE, J/SOS
D 0373, 7000,1602 ; 4643 RPW, SJCLE, J/SOS
D 0374, 7701,1602 ; 4644 RPW, SJCA, J/SOS
D 0375, 7600,1602 ; 4645 RPW, SJCGE, J/SOS
D 0376, 7500,1602 ; 4646 RPW, SJCN, J/SOS
D 0377, 7401,1602 ; 4647 RPW, SJCG, J/SOS
; 4648 .UCODE
; 4649
; 4650 =0****00****
U 1602, 1600,1701,2000,0000,0036,1310,0000 ; 4651 SOS: AR_AR-1,AD FLAGS,STORE,J/SKIP
; 4652 =
; 4653
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 5
; SKPJMP.MIC[4,30] 17:12 9-Aug-84 CONDITIONAL JUMPS -- JUMP, AOJ, SOJ, AOBJ
; 4654 .TOC "CONDITIONAL JUMPS -- JUMP, AOJ, SOJ, AOBJ"
; 4655
; 4656 .DCODE
D 0320, 0300,1603 ; 4657 320: I, SJC-, J/JUMP
D 0321, 0201,1603 ; 4658 I, SJCL, J/JUMP
D 0322, 0101,1603 ; 4659 I, SJCE, J/JUMP
D 0323, 0000,1603 ; 4660 I, SJCLE, J/JUMP
D 0324, 0701,1603 ; 4661 I, SJCA, J/JUMP
D 0325, 0600,1603 ; 4662 I, SJCGE, J/JUMP
D 0326, 0500,1603 ; 4663 I, SJCN, J/JUMP
D 0327, 0401,1603 ; 4664 I, SJCG, J/JUMP
; 4665 .UCODE
; 4666
; 4667 =0****00****
U 1603, 0075,3200,2000,0000,0246,0010,0502 ; 4668 JUMP: AR_AC0,JUMP FETCH,J/NOP ; E IS IN VMA (HERE AND BELOW)
; 4669 =
; 4670
; 4671 .DCODE
D 0340, 0301,1604 ; 4672 340: I, SJC-, J/AOJ
D 0341, 0200,1604 ; 4673 I, SJCL, J/AOJ
D 0342, 0100,1604 ; 4674 I, SJCE, J/AOJ
D 0343, 0001,1604 ; 4675 I, SJCLE, J/AOJ
D 0344, 0700,1604 ; 4676 I, SJCA, J/AOJ
D 0345, 0601,1604 ; 4677 I, SJCGE, J/AOJ
D 0346, 0501,1604 ; 4678 I, SJCN, J/AOJ
D 0347, 0400,1604 ; 4679 I, SJCG, J/AOJ
; 4680 .UCODE
; 4681
; 4682 =0****00****
U 1604, 0074,4640,2000,0000,0266,1310,0502 ; 4683 AOJ: AR_AC0+1,AD FLAGS,JUMP FETCH,J/STORAC
; 4684 =
; 4685
; 4686 .DCODE
D 0360, 0300,1605 ; 4687 360: I, SJC-, J/SOJ
D 0361, 0201,1605 ; 4688 I, SJCL, J/SOJ
D 0362, 0101,1605 ; 4689 I, SJCE, J/SOJ
D 0363, 0000,1605 ; 4690 I, SJCLE, J/SOJ
D 0364, 0701,1605 ; 4691 I, SJCA, J/SOJ
D 0365, 0600,1605 ; 4692 I, SJCGE, J/SOJ
D 0366, 0500,1605 ; 4693 I, SJCN, J/SOJ
D 0367, 0401,1605 ; 4694 I, SJCG, J/SOJ
; 4695 .UCODE
; 4696
; 4697 =0****00****
U 1605, 0432,3240,2000,0000,0020,0010,0000 ; 4698 SOJ: AR_AC0
U 0432, 0074,1703,2000,0000,0266,1310,0502 ; 4699 = AR_AR-1,AD FLAGS,JUMP FETCH,J/STORAC
; 4700
; 4701 .DCODE
D 0252, 0600,1606 ; 4702 252: I, SJCGE, J/AOBJ
D 0253, 0201,1606 ; 4703 I, SJCL, J/AOBJ
; 4704 .UCODE
; 4705
; 4706 =0****00****
U 1606, 0074,4640,2000,0000,0266,0017,0502 ; 4707 AOBJ: AR_AC0+1,GEN CRY18,JUMP FETCH,J/STORAC
; 4708 =
; 4709
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 6
; SKPJMP.MIC[4,30] 17:12 9-Aug-84 AC DECODE JUMPS -- JRST, JFCL
; 4710 .TOC "AC DECODE JUMPS -- JRST, JFCL"
; 4711
; 4712 .DCODE
D 0254, 2000,0600 ; 4713 254: EA, J/JRST ;DISPATCHES TO 1 OF 16 ON AC BITS
D 0255, 0401,0700 ; 4714 I,TNN, J/JFCL
; 4715 .UCODE
; 4716
; 4717 ;A READ DETECTS JRST, AND DISPATCHES TO ONE OF 16 LOC'NS ON AC BITS
; 4718
; 4719 600: ;DRAM REQUIRES JRST AT MULTIPLE OF 200
U 0600, 0222,0001,0000,0000,0000,0010,0000 ; 4720 JRST: J/FINI ;(0) A READ PREFETCHES ON JRST 0,
U 0601, 0630,0001,0040,0000,0000,0024,0412 ; 4721 601: PORTAL,BR/AR,J/BRJMP ;(1) PORTAL
; 4722 602:
U 0602, 0036,2301,0040,0000,0000,0036,0000 ; 4723 JRST2: EA MOD DISP,BR/AR,J/JRSTF ;(2) JRSTF
U 0603, 1002,4001,0000,0000,0000,0010,0000 ; 4724 603: J/UUO ;(3)
U 0604, 1016,0001,0000,0000,0000,6110,0000 ; 4725 604: SKP KERNEL,J/IHALT ;(4) HALT
; 4726 .IF/LONG.PC
U 0605, 0554,0001,0000,0000,0012,0010,0000 ; 4727 605: LOAD AR,J/XJRSTF1 ;(5) XJRSTF -- VALID ANYWHERE
U 0606, 0604,4001,0000,0000,0000,7310,0000 ; 4728 606: SKP IO LEGAL,J/604 ;(6) XJEN -- TRAP IF USER
U 0607, 0544,4033,0200,0000,0020,7325,0000 ; 4729 607: SKP IO LEGAL,ARX_PC+1,J/XPCW1 ;(7) XPCW -- TRAP IF USER
;;4730 .IFNOT/LONG.PC
;;4731 605: J/UUO ;(5)
;;4732 606: J/UUO ;(6)
;;4733 607: J/UUO ;(7)
; 4734 .ENDIF/LONG.PC
U 0610, 0444,4001,0000,0000,0000,7310,0000 ; 4735 610: SKP IO LEGAL,J/DISM ;(10) JRST 10, DISMISS ONLY
U 0611, 1002,4001,0000,0000,0000,0010,0000 ; 4736 611: J/UUO ;(11)
U 0612, 0444,4001,0000,0000,0000,7310,0000 ; 4737 612: SKP IO LEGAL,J/DISM ;(12) JEN
U 0613, 1002,4001,0000,0000,0000,0010,0000 ; 4738 613: J/UUO ;(13)
; 4739 .IF/LONG.PC
U 0614, 0455,4033,0200,0000,0020,0625,0030 ; 4740 614: AR_0.C,ARX_PC+1,J/XSFM1 ;(14) XSFM [331]
U 0615, 0635,4001,0000,0000,0012,0010,0000 ; 4741 615: LOAD AR,J/PCA ;(15) XJRST [301]
;;4742 .IFNOT/LONG.PC
;;4743 614: J/UUO ;(14)
;;4744 615: J/UUO ;(15)
; 4745 .ENDIF/LONG.PC
U 0616, 1002,4001,0000,0000,0000,0010,0000 ; 4746 616: J/UUO ;(16)
U 0617, 1002,4001,0000,0000,0000,0010,0000 ; 4747 617: J/UUO ;(17)
; 4748
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 7
; SKPJMP.MIC[4,30] 17:12 9-Aug-84 AC DECODE JUMPS -- JRST, JFCL
; 4749 ;HERE TO FINISH THE MORE COMPLEX FORMS OF JRST
; 4750
;;4751 .IFNOT/XADDR
;;4752 =1110
;;4753 JRSTF: AR_ARX,J/RSTF ;NO XR, RESTORE FROM INDIRECT WORD
;;4754 AR_XR,J/RSTF ;INDEXED, RESTORE FROM REGISTER
; 4755 .IF/XADDR
; 4756 =1110
U 0036, 0364,0001,4000,0000,2000,5010,0000 ; 4757 JRSTF: AR_ARX,SKP PC SEC0,J/RSTF0 ;NO XR, RESTORE FROM INDIRECT WORD
U 0037, 0364,3240,2002,0000,0020,5010,0000 ; 4758 AR_XR,SKP PC SEC0 ;INDEXED, RESTORE FROM REGISTER
; 4759 =0
U 0364, 1002,4001,0000,0000,0000,0010,0000 ; 4760 RSTF0: J/UUO
; 4761 .ENDIF/XADDR
U 0365, 0630,0001,0000,0000,0000,0024,0420 ; 4762 RSTF: RSTR FLAGS_AR,J/BRJMP
; 4763
; 4764 =0
U 0444, 1002,4001,0000,0000,0000,0010,0000 ; 4765 DISM: J/UUO ;ATTEMPT TO DISMISS FROM USER
U 0445, 0441,4001,0040,0000,0000,0024,0502 ; 4766 DISMISS,BR/AR
U 0441, 0020,0001,0000,0000,0000,0001,0000 ; 4767 IR DISP,J/20 ;SPLIT OUT AGAIN
; 4768 630: ;JRST 10,
U 0630, 0075,3242,0000,0000,0317,0010,0000 ; 4769 BRJMP: VMA_BR,FETCH,J/NOP ;RELOAD VMA WITH NEW FLAGS
U 0632, 0036,2341,0000,0000,0000,0036,0000 ; 4770 632: EA MOD DISP,J/JRSTF ;JEN, MUST RESTORE FLAGS
; 4771
; 4772 .IF/LONG.PC
U 0455, 0474,3510,0207,0000,0020,6210,0175 ; 4773 XSFM1: ARX_ARX ANDC ADMSK,SKP USER ;[331] XSFM now legal everywhere
U 0474, 0732,0001,0000,0000,2000,0250,0000 ; 4774 =0 AR12-17_PREV SEC,CALL [ARSWAP] ;[334] SAVE PCS IN AR
; 4775 ARL_ARXL,ARR_ARR, ;STORE FLAG WORD
U 0475, 0634,0001,0000,0000,2016,0022,0004 ; 4776 STORE,J/XSFM2
; 4777 ; ;[334]
; 4778
;;4779 .IFNOT/XADDR
;;4780 =0
;;4781 XPCW1: J/UUO ;BAD USE OF XPCW
;;4782 AR_ARX ANDC ADMSK,STORE, ;STORE FLAGS WORD
;;4783 BRX/ARX,ARX/AD,
;;4784 IR DISP,J/20 ;IS THIS XSFM OR XPCW
; 4785 .IF/XADDR
; 4786 =0
U 0544, 1002,4001,0000,0000,0000,0010,0000 ; 4787 XPCW1: J/UUO ;BAD USE OF XPCW
; 4788 AR_ARX ANDC ADMSK,BRX/ARX, ;SAVE FLAGS,PC IN BRX AND
U 0545, 0541,3510,2227,0000,0020,0010,0175 ; 4789 ARX/AD ;FLAGS IN ARX
U 0541, 0754,0001,0040,0000,0000,6222,0030 ; 4790 AR_0.S,BR/AR,SKP USER
U 0754, 0732,0001,0000,0000,2000,0250,0000 ; 4791 =0 AR12-17_PREV SEC,CALL [ARSWAP] ;[334] SAVE PCS IN AR
; 4792 ARL_BRL,ARR_ARR,STORE, ;STORE FLAGS WORD
U 0755, 0020,3242,0000,0000,0016,0601,0002 ; 4793 IR DISP,J/20 ;IS THIS XSFM, OR XPCW?
; 4794 .ENDIF/XADDR
; 4795 627: FIN STORE,AR_ARX*BRX,AD/ANDCA, ;XPCW. GET ADDRESS TO AR
U 0627, 0574,3002,6003,0000,0016,3610,0000 ; 4796 VMA_VMA+1,STORE,J/XPCW2
; 4797 634:
U 0634, 0075,4001,0003,0000,0217,0010,0000 ; 4798 XSFM2: FIN STORE,I FETCH,J/NOP ;XSFM. DONE.
; 4799
; 4800 XJRSTF1:FIN XFER,VMA_VMA+1,LOAD AR, ;GETS TO 625 OR 626 FOR XJRSTF
U 0554, 0020,3240,0003,0000,0032,3601,0000 ; 4801 IR DISP,J/20 ; OR XJEN
; 4802
;;4803 .IFNOT/XADDR
;;4804 XPCW2: FIN STORE,VMA_VMA+1,LOAD AR ;STORE PC ADDR, GET NEW FLAGS
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 7-1
; SKPJMP.MIC[4,30] 17:12 9-Aug-84 AC DECODE JUMPS -- JRST, JFCL
;;4805 FIN XFER,VMA_VMA+1,LOAD AR ;GOT FLAGS GET PC ADDRESS
;;4806 625: RSTR FLAGS_AR,AR_MEM,J/ARJMP ;XJRSTF WINDS UP HERE
;;4807 626: RSTR FLAGS_AR,AR_MEM ;XJEN WINDS UP HERE
;;4808 DISMISS,J/ARJMP
; 4809 .IF/XADDR
U 0574, 0621,4001,0003,0000,0012,3610,0000 ; 4810 XPCW2: FIN STORE,VMA_VMA+1,LOAD AR ;STORE PC ADDR, GET NEW FLAGS
U 0621, 0624,3200,0003,0000,0032,3610,0000 ; 4811 FIN XFER,VMA_VMA+1,LOAD AR ;GOT FLAGS, GET PC ADDRESS
U 0624, 1045,3200,0003,0000,0022,0024,0420 ; 4812 RSTR FLAGS_AR,AR_MEM,J/ARJMP
; 4813 625: RSTR FLAGS_AR,AR_MEM, ;XJRSTF WINDS UP HERE
; 4814 ARX_AR SWAP, ;SAVE PCS,FLAGS IN ARX
U 0625, 1020,3200,0403,0000,3022,6224,0420 ; 4815 SKP USER,J/XJRSTF2
; 4816 626: RSTR FLAGS_AR,AR_MEM,SKP USER, ;XJEN WINDS UP HERE
U 0626, 0774,3240,0403,0000,3022,6224,0420 ; 4817 ARX_AR SWAP ;SAVE PCS,FLAGS IN ARX
U 0774, 1020,4001,0000,0000,0000,0024,0502 ; 4818 =0 DISMISS,J/XJRSTF2
U 0775, 1045,4001,0000,0000,0000,0024,0502 ; 4819 DISMISS,J/ARJMP
; 4820 =0
U 1020, 1044,4001,0000,0000,0000,6210,0000 ; 4821 XJRSTF2:SKP USER,J/XJRSTF3
U 1021, 0075,3703,0000,0000,0317,0010,0000 ; 4822 VMA_AR,FETCH,J/NOP
; 4823 =0
U 1044, 0662,4001,0000,0000,0000,0050,0000 ; 4824 XJRSTF3:CALL,J/LDPCS ;RESTORE PCS FROM FLAGS WORD
; 4825 .ENDIF/XADDR
U 1045, 0075,3703,0000,0000,0317,0010,0000 ; 4826 ARJMP: VMA_AR,FETCH,J/NOP ;DONE
; 4827 .IF/XADDR
U 0635, 1045,3200,0003,0000,0022,1610,0000 ; 4828 PCA: AR_MEM,SR_0,J/ARJMP ;[301] End of LUUO and XJRST
; 4829 ;
U 0662, 0672,0001,0000,0000,0000,2210,0400 ; 4830 LDPCS: GET ECL EBUS
U 0672, 0723,3711,0000,0000,0060,2010,0426 ; 4831 LD PCS
; 4832 COND/EBUS CTL,EBUS CTL/2, ;RELEASE ECL BUS
U 0723, 0001,0001,0000,0000,0000,2203,0002 ; 4833 RETURN1
; 4834 .ENDIF/XADDR
; 4835 .ENDIF/LONG.PC
; 4836 ;
; 4837 ; [334] Subroutine to swap AR halves. Used in a couple of places.
; 4838 ;
U 0732, 0001,0001,4000,0000,3000,0003,0000 ; 4839 ARSWAP: AR_AR SWAP,RETURN1 ;[334] Rearrange things
; 4840 ;
; 4841 700: ;JFCL MUST BE AT JRST+100
U 0700, 0124,3242,0600,0302,0000,0010,0015 ; 4842 JFCL: ARX_BRX,SC_#,#/13. ;GET BACK AC FIELD
; 4843 =0* AR_SHIFT,ARX_0S, ;MOVE AC TO AR32-35
U 0124, 2450,3441,4200,0302,0000,0050,0040 ; 4844 SC_#,#/32.,CALL,J/SHIFT ;SHIFTER WILL MOVE TO 0-3
U 0126, 0746,3731,2040,0000,0000,0024,0602 ; 4845 BR/AR,AR_PC,JFCL T ;GET PC FLAGS INTO AR
U 0746, 0756,3602,0000,0000,0246,0010,0503 ; 4846 TEST AR.BR,JFCL FETCH ;JUMP IF TEST SATISFIED
U 0756, 0770,3502,2000,0000,0000,0010,0000 ; 4847 AR_AR*BR,AD/ANDCB ;CLEAR TESTED FLAGS IN AR
U 0770, 0222,4001,0000,0000,0000,0024,0622 ; 4848 JFCL S,J/FINI ;SET PC FROM THEM
; 4849
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 8
; SKPJMP.MIC[4,30] 17:12 9-Aug-84 HALT LOOP
; 4850 .TOC "HALT LOOP"
; 4851 ;HERE WHILE PROCESSOR IS "HALTED"
; 4852
; 4853 1016:
; 4854 UUO107: ;OP 107 COMES HERE
U 1016, 1002,4001,0000,0000,0000,0010,0000 ; 4855 IHALT: J/UUO ;HERE IF HALT NOT IN KERNEL
U 1017, 0776,4001,0000,0000,0000,0024,0442 ; 4856 1017: HALT
; 4857
; 4858 CHALT: AR_0S,CLR SC,CLR FE,SET HALTED, ;KERNEL OR CONSOLE HALT
U 0776, 1054,3441,2000,0403,0100,1515,0302 ; 4859 VMA/PC,PC_VMA ; IF JRST 4, COPY EA TO PC
;;4860 .IF/PAGCNT ;[327] PFH, DATAO PAG bit 2 counts
;;4861 TRX2_AR ;[327] Zero count registers
;;4862 TRX3_AR
; 4863 .ENDIF/PAGCNT ;[327]
; 4864 =0
; 4865 HALT1: SKP -START,TIME/3T, ;CHECK FOR CONTINUE BUTTON
U 1054, 1164,4001,0400,2421,1020,7110,0000 ; 4866 FE_AR0-8,ARX_AR,J/HALT2 ;PICK UP OPCODE IN CASE XCT
U 1055, 0144,0001,0000,0000,0000,7710,0000 ; 4867 TAKE INTRPT ;HERE IF EXAMINE/DEPOSIT UP
; 4868 =0
U 1164, 0226,4001,0000,3000,0020,1534,0000 ; 4869 HALT2: GEN FE-1,BYTE DISP,CONTINUE,J/UNHALT ;INSTR FROM SWITCHES?
U 1165, 1054,0001,0000,0000,0000,7010,0000 ; 4870 SKP INTRPT,TIME/2T,J/HALT1 ;HALT LOOP MUST BE AN ODD
; 4871 ; NUMBER OF TICKS TO ALLOW
; 4872 ; DIAGNOSTICS TO SYNCRONIZE
; 4873 ; EBOX WITH E & SBUS CLK PHASES.
; 4874 =110
U 0226, 1775,0001,0000,0401,0000,1510,0310 ; 4875 UNHALT: SET CONS XCT,CLR FE,J/UXCT ;XCT ONE FROM "SWITCHES"
U 0227, 0000,5063,0000,0000,0040,5410,0000 ; 4876 SKP AR EQ,J/START ;NOT AN INSTR. START, OR CONT?
; 4877
; 4878
; 4879 .TOC "MAP, XCT"
; 4880
; 4881 .DCODE
D 0256, 4001,0504 ; 4882 256: R, J/XCT ;OPERAND FETCHED AS DATA
D 0257, 0501,0505 ; 4883 I, AC, J/MAP
; 4884 .UCODE
; 4885
; 4886 =0****00***0
U 0504, 1764,4001,0000,0000,0000,7010,0000 ; 4887 XCT: SKP INTRPT,J/XCT1 ;CHECK FOR XCT . LOOP
; 4888
U 0505, 1003,0001,0040,0000,0007,0010,0140 ; 4889 MAP: MAP,BR/AR ;MAP E, GO READ BACK EBRG
; 4890 =
; 4891 .IF/KLPAGE ;IN KL PAGING MODE,
U 1003, 1254,0001,0000,0000,0000,1610,0015 ; 4892 SR_MAP ;MAP CAN PAGE FAIL
; 4893 .ENDIF/KLPAGE
; 4894 =0
; 4895 RDEBRG: AR_0S,SKP IO LEGAL,MB WAIT, ;FINISH READ REG FUNC
U 1254, 2540,3401,2000,0000,0002,7350,0000 ; 4896 CALL,J/GETEEB ;AND GET EBUS
U 1255, 1015,4001,3000,0000,0060,2010,0567 ; 4897 AR_EBUS REG ;READ DATA
U 1015, 0066,0001,0000,0000,0005,2233,0000 ; 4898 REL ECL EBUS,B WRITE,J/ST6 ;GIVE IT TO USER
; 4899 .IF/KLPAGE
; 4900 =0
U 1270, 1002,0001,0000,0000,0000,1610,0000 ; 4901 MAP2: SR_0,J/UUO ;NO MAPS IN USER MODE
U 1271, 1274,0001,0000,0000,0000,7010,0000 ; 4902 SKP INTRPT ;DO NOT BUM THIS CODE OUT
; 4903 =0 ;IT IS NECESSARY TO DO NOTHING
U 1274, 0074,0001,0000,0000,0217,0010,0000 ; 4904 I FETCH,J/STORAC ;INTERESTING AFTER A MAP IF
U 1275, 0071,0001,0000,0000,0000,2110,0105 ; 4905 SET ACCOUNT EN,J/TAKINT ;AN INTERRUPT IS PENDING
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 8-1
; SKPJMP.MIC[4,30] 17:12 9-Aug-84 MAP, XCT
; 4906 .ENDIF/KLPAGE
; 4907
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 9
; SKPJMP.MIC[4,30] 17:12 9-Aug-84 STACK INSTRUCTIONS -- PUSHJ, PUSH, POP, POPJ
; 4908 .TOC "STACK INSTRUCTIONS -- PUSHJ, PUSH, POP, POPJ"
; 4909
; 4910 .DCODE
D 0260, 2001,0703 ; 4911 260: EA, J/PUSHJ
D 0261, 4000,0702 ; 4912 R, B/0, J/PUSH
D 0262, 2000,1114 ; 4913 EA, B/0, J/POP
D 0263, 0000,1115 ; 4914 I, J/POPJ
; 4915 .UCODE
; 4916
; 4917 ;PUSHJ
; 4918 ; ENTER WITH E IN AR
; 4919 ;PUSH
; 4920 ; ENTER WITH (E) IN AR
; 4921
; 4922 =0****00***0
;;4923 .IFNOT/MODEL.B
;;4924 PUSH: ARX_AC0+1,GEN CRY18,SKP CRY0, ;BUMP BOTH HALVES OF AC,
;;4925 VMA/AD,STORE,J/STMAC ;PUT AR ONTO LIST
;;4926
;;4927 PUSHJ: BR/AR,AR_PC+1 ;SAVE JUMP ADDR, GET PC
;;4928 = ARX_AC0+1,GEN CRY18,SKP CRY0, ;COMPUTE STACK ADDRESS
;;4929 VMA/AD,STORE,J/JSTAC ;AND PREPARE TO STORE PC
; 4930 .IF/MODEL.B ;COULD SIMPLIFY IFNOT XADDR
U 0702, 1330,4660,0200,0000,0151,5420,0041 ; 4931 PUSH: ARX_AC0+1,PUSH,SKP CRY0,J/STMAC ;BUMP AC ACCORDING TO FORMAT
; 4932 ; AND SECTION NUMBER
U 0703, 1320,4033,2040,0000,0020,5025,0000 ; 4933 PUSHJ: BR/AR,AR_PC+1,SKP PC SEC0 ;GET PC WITH FLAGS
; 4934 =
U 1320, 1321,3600,2007,0000,0020,0010,0175 ; 4935 =0 AR_AR AND ADMSK ;STRIP OFF FLAGS IF NOT SEC0
U 1321, 0122,4660,0200,0000,0151,5420,0041 ; 4936 ARX_AC0+1,PUSH,SKP CRY0,J/JSTAC ;UPDATE STACK POINTER, STORE
; 4937 .ENDIF/MODEL.B
; 4938 =00
U 0120, 1023,3701,0000,0000,0313,0050,0000 ; 4939 JRA1: VMA_AR,LOAD ARX,CALL,J/XFERW ;GET SAVED AC
; 4940 =10
; 4941 JSTAC: FIN STORE,VMA_BR,FETCH, ;STORE PC, JUMP ADDR TO VMA
U 0122, 0074,3202,4003,0000,2317,0010,0000 ; 4942 AR_ARX,J/STORAC ;PREPARE TO STORE AC VALUE
U 0123, 0122,0001,0003,0000,0002,1110,0040 ; 4943 TRAP2,MEM_AR,J/JSTAC ;CAUSE PDL OVRFLO
; 4944
; 4945 =0
; 4946 STMAC: FIN STORE,I FETCH, ;STORE RESULT, GET NEXT INSTR
U 1330, 0074,4001,4003,0000,2217,0033,0000 ; 4947 AR_ARX,B DISP,J/STSELF ;STORE AC IF B=0
; 4948 MEM_AR,TRAP2, ;PDL OVFLO, CAUSE TRAP
U 1331, 0067,0001,4003,0000,2002,1110,0040 ; 4949 AR_ARX,J/IFSTAC ;UPDATE AC BEFORE TRAPPING
; 4950 ;
; 4951 ; A one line subroutine to wait for a memory fetch (either AR
; 4952 ; or ARX) and return. Used by all sorts of things.
; 4953 ;
U 1023, 0002,3240,0003,0000,0022,0003,0000 ; 4954 XFERW: AR_MEM,ARX_MEM,TIME/3T,RETURN2 ; Cross reference both macros [313]
; 4955
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 10
; SKPJMP.MIC[4,30] 17:12 9-Aug-84 STACK INSTRUCTIONS -- PUSHJ, PUSH, POP, POPJ
; 4956 ;POP, POPJ
; 4957 ;ENTER WITH E IN AR
; 4958
;;4959 .IFNOT/MODEL.B
;;4960 =0****00***0
;;4961 POP: BR/AR,AR_AC0,VMA/AD, ;GET PUSHDOWN POINTER
;;4962 LOAD AR,J/POP1 ;BEGIN DATA FETCH FROM STACK
;;4963
;;4964 POPJ: AR_AC0,VMA/AD,LOAD ARX ;START FETCH FROM STACK
;;4965 = AR_AR-1,INH CRY18,SKP CRY0 ;DECR STACK POINTER, CHECK UNDERFLOW
;;4966 =0 ARX_MEM,TRAP2,J/POPJ1 ;UNDERFLOW OCCURRED
;;4967 ARX_MEM ;GET STACK WORD
;;4968 POPJ1: AC0_AR,VMA_ARX,FETCH,J/NOP ;SET NEW AC VALUE, JUMP
;;4969
;;4970
;;4971 POP1: ARX_AR-1,INH CRY18,SKP CRY0 ;ADJUST POINTER, CHECK TRAP
;;4972 =0 AR_MEM,TRAP2 ;PDL OVFLO, CAUSE TRAP
;;4973 AR_MEM,SR_#,#/100 ;SET DEST CONTEXT FLAG
;;4974 VMA_BR,STORE,SR_0,J/STMAC ;PUT RESULT AWAY, THEN AC
; 4975 .IF/MODEL.B ;COULD SIMPLIFY IFNOT XADDR
; 4976 =0****00***0
U 1114, 1056,3240,2040,0000,0131,0010,0421 ; 4977 POP: BR/AR,AR_AC0,POP AR,J/POP2 ;GET FROM STACK
; 4978
U 1115, 1032,3200,2000,0000,0131,0010,0621 ; 4979 POPJ: AR_AC0,POP AR-ARX ;GET STACK TO AR AND ARX
; 4980 = AR_AR-1,TIME/3T, ;BACK OFF POINTER
U 1032, 1334,1701,2000,0000,0020,5420,0000 ; 4981 AC0,STACK UPDATE,SKP CRY0 ; UNDERFLOW?
; 4982 =0 BR/AR,AR_MEM,ARL_0.S, ;AC TO BR, HALFWORD PC TO AR
; 4983 ARX_MEM,TIME/3T, ;FULL PC TO ARX.
U 1334, 1442,3200,0043,0000,0022,5022,0020 ; 4984 SKP PC SEC0,J/POPJT ; GO SET TRAP
; 4985 BR/AR,AR_MEM,ARL_0.S, ;AC TO BR, HALFWORD PC TO AR
; 4986 ARX_MEM,TIME/3T, ;FULL PC TO ARX.
U 1335, 1374,3240,0043,0000,0022,5022,0020 ; 4987 SKP PC SEC0 ;EXTENDED FORM?
; 4988 =0
U 1374, 1046,3713,0000,0000,0317,0010,0000 ; 4989 POPJ2: VMA_ARX,FETCH,J/POPJ4 ;YES. LOAD ENTIRE ADDR
U 1375, 1046,3701,0000,0000,0317,0010,0000 ; 4990 POPJ3: VMA_AR,FETCH ;NO, LOAD HALFWORD ADDRESS
U 1046, 0065,3242,2000,0000,0000,0010,0000 ; 4991 POPJ4: AR_BR,J/STAC ;GET AC BACK, GO STUFF IT
; 4992
; 4993 ;HERE IF POPJ GETS STACK UNDERFLOW
; 4994 ; SKIP IF PC SECTION 0
; 4995 =0
U 1442, 1374,4001,0000,0000,0000,1110,0040 ; 4996 POPJT: TRAP2,J/POPJ2
U 1443, 1375,0001,0000,0000,0000,1110,0040 ; 4997 TRAP2,J/POPJ3
; 4998
; 4999 POP2: ARX_AR-1,AC0,STACK UPDATE, ;BACK UP POINTER
U 1056, 1454,1703,0200,0000,0040,5420,0000 ; 5000 SKP CRY0
U 1454, 1061,3200,0003,0000,0022,1110,0040 ; 5001 =0 AR_MEM,TRAP2,J/POP3
U 1455, 1061,3240,0003,0000,0022,0010,0000 ; 5002 AR_MEM
U 1061, 1330,3202,0000,0000,0111,0010,0042 ; 5003 POP3: GEN BR,WRITE (E),J/STMAC ;STORE RESULT & AC
; 5004 .ENDIF/MODEL.B
; 5005
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 11
; SKPJMP.MIC[4,30] 17:12 9-Aug-84 SUBROUTINE CALL/RETURN -- JSR, JSP, JSA, JRA
; 5006 .TOC "SUBROUTINE CALL/RETURN -- JSR, JSP, JSA, JRA"
; 5007
; 5008 .DCODE
D 0264, 2000,1315 ; 5009 264: EA, J/JSR ; [301] Make sure these can cross
D 0265, 2001,1314 ; 5010 EA, J/JSP ; section boundaries
D 0266, 0001,1316 ; 5011 I, J/JSA
D 0267, 0000,1317 ; 5012 I, J/JRA
; 5013 .UCODE
; 5014
; 5015 =0****00***0
;;5016 .IFNOT/XADDR
;;5017 JSP: AR_PC+1,FETCH,J/STORAC
;;5018
;;5019 JSR: AR_PC+1,STORE
;;5020 = FIN STORE,VMA_VMA+1,FETCH,J/NOP
; 5021 .IF/XADDR
U 1314, 1574,4033,2000,0000,0037,5025,0000 ; 5022 JSP: AR_PC+1,FETCH,SKP PC SEC0,J/JSP1
; 5023
U 1315, 1570,4031,2000,0000,0020,5025,0000 ; 5024 JSR: AR_PC+1,SKP PC SEC0
; 5025 =
U 1570, 1065,3600,2007,4000,0036,0010,0175 ; 5026 =0 AR_AR AND ADMSK,STORE,J/JSR1
U 1571, 1065,4001,0000,0000,0016,0010,0000 ; 5027 STORE ;IN SECT 0, SAVE FLAGS, TOO
U 1065, 0075,0001,0003,0000,0017,3610,0000 ; 5028 JSR1: FIN STORE,VMA_VMA+1,FETCH,J/NOP
; 5029
; 5030 =0
U 1574, 0065,3600,2007,4000,0020,0010,0175 ; 5031 JSP1: AR_AR AND ADMSK,J/STAC ;NON-ZERO SEC, NO FLAGS
U 1575, 0222,4001,0000,0000,0000,1010,0000 ; 5032 AC0_AR,J/FINI
; 5033 .ENDIF/XADDR
; 5034
; 5035
; 5036 =0****00***0
U 1316, 1122,3240,2400,0000,3036,0010,0000 ; 5037 JSA: ARX_AR SWAP,AR_AC0,STORE,J/JSA1 ;SAVE E IN ARX LEFT, GET AC
; 5038
; 5039 JRA:
;;5040 .IFNOT/XADDR ;[235]
;;5041 BR/AR, AR_AC0 ;get AC, save jump address.
;;5042 =
;;5043 ARR_ARL, ARL_0.M, J/JRA1 ;E to ARR.
; 5044 .IF/XADDR ;[235]
U 1317, 1072,0001,0000,0000,1000,0210,0000 ; 5045 AR12-17_PC SEC ;[235] put section in jump address.
; 5046 =
U 1072, 1614,3240,2040,0000,0020,5010,0000 ; 5047 BR/AR, AR_AC0, SKP PC SEC0 ;[235] save jump address, get AC.
U 1614, 1117,0001,4000,0000,3001,0010,0020 ; 5048 =0 ARR_ARL, ARL_0.M, J/JRAB ;[235] in section part to ARR.
U 1615, 0120,0001,4000,0000,3001,0010,0020 ; 5049 ARR_ARL, ARL_0.M, J/JRA1 ;[235] E to ARR.
U 1117, 0120,4001,0000,0000,1000,0210,0000 ; 5050 JRAB: AR12-17_PC SEC, J/JRA1 ;[235] section to ARL.
; 5051 .ENDIF/XADDR ;[235]
; 5052
U 1122, 1124,4001,0003,0000,0017,3610,0000 ; 5053 JSA1: FIN STORE,VMA_VMA+1,FETCH ;JUMP TO E+1
U 1124, 0065,4033,2000,0000,2020,0022,0004 ; 5054 ARR_PC+1,ARL_ARXL,J/STAC ;PC+1,,E GOES TO AC
; 5055
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 12
; SKPJMP.MIC[4,30] 17:12 9-Aug-84 UUO'S
; 5056 .TOC "UUO'S"
; 5057 ;LUUO'S TRAP TO CURRENT CONTEXT
; 5058 ; EXTENDED INSTRUCTION SET IS "HIDDEN" BENEATH LUUO OPCODES
; 5059 ;
; 5060 ; WARNING: use extreme caution if E1 for MOVSRJ or CMPSE should
; 5061 ; ever be used for anything, as they are sign smeared if they are
; 5062 ; > 377777 (they fall in with MOVSO and friends at EXT2). [301]
; 5063 ; Use similar caution if new EXTEND codes are created which
; 5064 ; must have the DCODE B field be 1 or 3.
; 5065 ;
; 5066 .DCODE
D 0000, 2000,1002 ; 5067 000: EA, J/UUO
D 0001, 2200,1005 ; 5068 EA, SJCL, J/L-CMS ;CMSX HIDDEN BENEATH LUUO
D 0002, 2100,1005 ; 5069 EA, SJCE, J/L-CMS
D 0003, 2001,1005 ; 5070 EA, SJCLE, J/L-CMS
; 5071
D 0004, 2200,1006 ; 5072 004: EA, B/2, J/L-EDIT ;EDIT
D 0005, 2601,1005 ; 5073 EA, SJCGE, J/L-CMS
D 0006, 2501,1005 ; 5074 EA, SJCN, J/L-CMS
D 0007, 2400,1005 ; 5075 EA, SJCG, J/L-CMS
; 5076
D 0010, 2101,1010 ; 5077 010: EA, B/1, J/L-DBIN ;CVTDBO
D 0011, 2401,1010 ; 5078 EA, B/4, J/L-DBIN ;CVTDBT
D 0012, 2100,1011 ; 5079 EA, B/1, J/L-BDEC ;CVTBDO
D 0013, 2001,1011 ; 5080 EA, B/0, J/L-BDEC ;CVTBDT
; 5081
D 0014, 2100,1012 ; 5082 014: EA, B/1, J/L-MVS ;MOVSO
D 0015, 2001,1012 ; 5083 EA, B/0, J/L-MVS ;MOVST
D 0016, 2200,1012 ; 5084 EA, B/2, J/L-MVS ;MOVSLJ
D 0017, 2301,1012 ; 5085 EA, B/3, J/L-MVS ;MOVSRJ
; 5086
; 5087 020:
D 0020, 2000,1013 ; 5088 EA, J/L-XBLT ;XBLT
D 0021, 2501,1014 ; 5089 EA, AC, J/L-GTPI ;GSNGL
; 5090 .IF/EXTEXP ;[337]
D 0022, 2001,1104 ; 5091 EA, J/L-SFTE ;GDBLE
D 0023, 2000,1105 ; 5092 EA, B/0, J/L-GTDI ;DGFIX
D 0024, 2201,1106 ; 5093 024: EA, B/2, J/L-GTSI ;GFIX
D 0025, 2400,1107 ; 5094 EA, B/4, J/L-GTDR ;DGFIXR
D 0026, 2601,1110 ; 5095 EA, B/6, J/L-GTSR ;GFIXR
D 0027, 2000,1111 ; 5096 EA, J/L-DITE ;DGFLTR
D 0030, 2000,1112 ; 5097 030: EA, J/L-SITE ;GFLTR
D 0031, 2001,1113 ; 5098 EA, J/L-EFSC ;GFSC
;;5099 .IFNOT/EXTEXP
;;5100 EA, J/LUUO
;;5101 EA, J/LUUO
;;5102 024: EA, J/LUUO
;;5103 EA, J/LUUO
;;5104 EA, J/LUUO
;;5105 EA, J/LUUO
;;5106 030: EA, J/LUUO
;;5107 EA, J/LUUO
; 5108 .ENDIF/EXTEXP
D 0032, 2001,1006 ; 5109 EA, J/LUUO ;These are reserved to Cobol.
D 0033, 2001,1006 ; 5110 EA, J/LUUO
D 0034, 2001,1006 ; 5111 EA, J/LUUO
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 12-1
; SKPJMP.MIC[4,30] 17:12 9-Aug-84 UUO'S
D 0035, 2001,1006 ; 5112 EA, J/LUUO
D 0036, 2001,1006 ; 5113 EA, J/LUUO
D 0037, 2001,1006 ; 5114 EA, J/LUUO
; 5115
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 13
; SKPJMP.MIC[4,30] 17:12 9-Aug-84 UUO'S
; 5116 ;MONITOR UUO'S -- TRAP TO EXEC
; 5117
D 0040, 2000,1002 ; 5118 040: EA, J/MUUO ;CALL
D 0041, 2000,1002 ; 5119 EA, J/MUUO ;INIT
D 0042, 2000,1002 ; 5120 EA, J/MUUO
D 0043, 2000,1002 ; 5121 EA, J/MUUO
D 0044, 2000,1002 ; 5122 EA, J/MUUO
D 0045, 2000,1002 ; 5123 EA, J/MUUO
D 0046, 2000,1002 ; 5124 EA, J/MUUO
D 0047, 2000,1002 ; 5125 EA, J/MUUO ;CALLI
D 0050, 2000,1002 ; 5126 EA, J/MUUO ;OPEN
D 0051, 2000,1002 ; 5127 EA, J/MUUO ;TTCALL
D 0052, 2000,1002 ; 5128 EA, J/MUUO
D 0053, 2000,1002 ; 5129 EA, J/MUUO
D 0054, 2000,1002 ; 5130 EA, J/MUUO
D 0055, 2000,1002 ; 5131 EA, J/MUUO ;RENAME
D 0056, 2000,1002 ; 5132 EA, J/MUUO ;IN
D 0057, 2000,1002 ; 5133 EA, J/MUUO ;OUT
D 0060, 2000,1002 ; 5134 EA, J/MUUO ;SETSTS
D 0061, 2000,1002 ; 5135 EA, J/MUUO ;STATO
D 0062, 2000,1002 ; 5136 EA, J/MUUO ;GETSTS
D 0063, 2000,1002 ; 5137 EA, J/MUUO ;STATZ
D 0064, 2000,1002 ; 5138 EA, J/MUUO ;INBUF
D 0065, 2000,1002 ; 5139 EA, J/MUUO ;OUTBUF
D 0066, 2000,1002 ; 5140 EA, J/MUUO ;INPUT
D 0067, 2000,1002 ; 5141 EA, J/MUUO ;OUTPUT
D 0070, 2000,1002 ; 5142 EA, J/MUUO ;CLOSE
D 0071, 2000,1002 ; 5143 EA, J/MUUO ;RELEAS
D 0072, 2000,1002 ; 5144 EA, J/MUUO ;MTAPE
D 0073, 2000,1002 ; 5145 EA, J/MUUO ;UGETF
D 0074, 2000,1002 ; 5146 EA, J/MUUO ;USETI
D 0075, 2000,1002 ; 5147 EA, J/MUUO ;USETO
D 0076, 2000,1002 ; 5148 EA, J/MUUO ;LOOKUP
D 0077, 2000,1002 ; 5149 EA, J/MUUO ;ENTER
; 5150
; 5151 ;EXPANSION OPCODES
; 5152
D 0100, 2000,1002 ; 5153 100: EA, J/UUO ;UJEN
D 0101, 2000,1002 ; 5154 EA, J/UUO
;;5155 .IFNOT/EXTEXP
;;5156 102: EA, J/UUO
;;5157 EA, J/UUO
; 5158 .ENDIF/EXTEXP
; 5159 .UCODE
; 5160
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 14
; SKPJMP.MIC[4,30] 17:12 9-Aug-84 UUO'S
; 5161 ;HERE FOR UNDEFINED OPS (UUO'S) AND ILLEGAL INSTRUCTIONS
; 5162 ;E IS IN AR, OPCODE AND AC IN BRX
; 5163
; 5164 ;HERE ON LUUO'S
; 5165 ; E IN AR, INSTR IN BRX
; 5166 1005:
U 1005, 1006,0001,0000,0000,0000,0010,0000 ; 5167 L-CMS: J/LUUO ;LOC FOR HIDING STRING COMPARE
; 5168 1006:
; 5169 L-EDIT: ;HIDE EDIT HERE
;;5170 .IFNOT/XADDR
;;5171 LUUO: ARX_BRX,SC_#,#/13.,
;;5172 SKP INTRPT,CALL,J/ROTS ;COMBINE E WITH UUO
;;5173 1007: AR_SHIFT,VMA_40,STORE ;STORE OPCODE ETC AT 40
;;5174 FIN STORE,VMA_41,
;;5175 LOAD ARX,J/XCTW ;GO PERFORM 41
; 5176 .IF/XADDR
U 1006, 0340,3242,0600,0000,0000,5010,0000 ; 5177 LUUO: ARX_BRX,SKP PC SEC0,J/LUUO1 ;WHICH KIND OF UUO?
; 5178 =0***0
U 0340, 1662,4001,0000,0000,0000,5750,0000 ; 5179 LUUO1: SKP -LOCAL AC ADDR,CALL,J/UUOCOM ;EXTENDED. DO IT
; 5180 BR/AR,AR_ARX ANDC ADMSK, ;COMPATABLE. ADDR TO BR
U 0341, 1624,3510,2047,4000,0020,7010,0175 ; 5181 SKP INTRPT,J/LUUO2 ; DO IT THE OLD WAY
U 0360, 0130,4001,0000,0000,0100,3010,0420 ; 5182 VMA_#,#/420 ;PT LOC FOR LUUO BLOCK POINTER
; 5183 =
U 0130, 1023,4001,0000,0000,0013,0066,0033 ; 5184 =00 LOAD ARX,PT REF,CALL,J/XFERW ;GET LUUO BLOCK ADDRESS
U 0132, 1336,3711,0000,0000,0316,0050,0000 ; 5185 =10 VMA_ARX,STORE,CALL,J/UUOC2 ;STORE UUO OPCODE AND FLAGS
; 5186 FIN STORE,VMA_VMA+1,LOAD AR, ;NOW GET A NEW PC
U 0133, 0635,4001,0003,0000,0012,3610,0000 ; 5187 J/PCA ; [301]
; 5188
; 5189 ;HERE FOR COMPATIBLE UUO
; 5190 =0
; 5191 LUUO2: AR_AR*BR,AD/OR,VMA_#,#/40, ;SAVE OPCODE AND EA
U 1624, 1131,3302,2000,0000,0116,3010,0040 ; 5192 STORE,J/LUUO3 ;THEN GET INSTR FROM 41
U 1625, 0144,0001,0000,0000,0000,7710,0000 ; 5193 TAKE INTRPT ;ONE MOMENT, PLEASE
U 1131, 0271,4001,0003,0000,0013,3610,0000 ; 5194 LUUO3: FIN STORE,VMA_VMA+1,LOAD ARX,J/XCTW
; 5195 .ENDIF/XADDR
; 5196
; 5197 1010:
U 1010, 1006,0001,0000,0000,0000,0010,0000 ; 5198 L-DBIN: J/LUUO ;DBIN AT 2010
; 5199 1011:
U 1011, 1006,0001,0000,0000,0000,0010,0000 ; 5200 L-BDEC: J/LUUO ;BDEC AT 2011
; 5201 1012:
U 1012, 1006,0001,0000,0000,0000,0010,0000 ; 5202 L-MVS: J/LUUO ;MOVE STRING AT 2012
; 5203
; 5204 ;ROTATE SUBROUTINE
; 5205
; 5206 =0
U 1630, 0003,4001,4400,5302,0000,0003,0044 ; 5207 ROTS: AR_SHIFT,ARX_SHIFT,SC_#-SC,#/36.,RETURN3
U 1631, 0144,0001,0000,0000,0000,7710,0000 ; 5208 TAKE INTRPT
; 5209
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 15
; SKPJMP.MIC[4,30] 17:12 9-Aug-84 UUO'S
; 5210 ;HERE ON MUUO'S
; 5211 ; E IN AR, OP AND AC IN BRX
;;5212 .IFNOT/XADDR
;;5213 1002: ;FIXED ADDRESS TO COOPERATE
;;5214 ;WITH EXTEND AND OTHER OPS
;;5215 UUO: ;UNDEFINED OP'S .GE. 100
;;5216 MUUO: ARX_BRX,SC_#,#/13.,
;;5217 SKP INTRPT,CALL,J/ROTS
;;5218 .IFNOT/SHIFT.MUUO
;;5219 1003: AR_SHIFT,VMA_#,#/424
;;5220 .IF/SHIFT.MUUO
;;5221 1003: AR_SHIFT,VMA_#,#/425
;;5222 .ENDIF/SHIFT.MUUO
;;5223 STORE,UPT REF ;FIRST, STORE INSTRUCTION
;;5224 FIN STORE,AR_PC+1,VMA_VMA+1,STORE ;NEXT, PC
;;5225 =100 MEM_AR,VMA_VMA+1,SC_#,#/60,
;;5226 CALL,J/GTEEB1
;;5227 DATAI PAG(L),CALL,J/PCTXT ;GET PROCESS CONTEXT VARIABLES
;;5228 =11 LD PREV CTXT ;PCS FROM PC, CWSX FROM SXCT
;;5229 AR_SHIFT,ARL_BRL.S, ;COMBINE UBR WITH AC BLKS, CWSX
;;5230 STORE, ; STORE THAT AT 426 (XADDR =427)
;;5231 COND/EBUS CTL,EBUS CTL/2; & RELEASE ECL EBUS
;;5232 MEM_AR,VMA_430+MODE ;NOW READY TO GET NEW PC
;;5233 LOAD AR,UPT REF ;FETCH NEW PC
;;5234 NEWPC: AR_MEM,SR_0,J/START ;USE IT
;;5235 .IF/MODEL.B
;;5236 SETPC: VMA_AR AND ADMSK,FETCH,J/NOP ;USE LOW AR AS ADDRESS
;;5237 .IFNOT/MODEL.B
;;5238 SETPC: PC_VMA,J/BRJMP ;LOAD PC, INCLUDING SECTION
;;5239 .ENDIF/MODEL.B
; 5240 .IF/XADDR
; 5241 1002:
; 5242 UUO: ;A PEDANTIC DISTINCTION...
; 5243 MUUO: ARX_BRX,SKP -LOCAL AC ADDR, ;PULL TOGETHER PIECES OF UUO
U 1002, 1662,3202,0600,0000,0000,5750,0000 ; 5244 CALL,J/UUOCOM
U 1022, 1141,0001,0000,0000,0100,3210,0430 ; 5245 1022: VMA_430+MODE ;GET NEW PC
U 1141, 1145,4001,0000,0000,0013,0026,0223 ; 5246 LOAD ARX,UPT REF
U 1145, 1634,3240,0003,0000,0122,3010,0424 ; 5247 ARX_MEM,VMA_#,#/424 ;LOC'N OF MUUO DATA BLOCK
; 5248 =0 BRX/ARX,STORE,UPT REF, ;STORE OPCODE, FLAGS
U 1634, 1336,4001,0020,0000,0016,0066,0223 ; 5249 CALL,J/UUOC2 ;NOW RETURN TO COMMON CODE
U 1635, 0220,3731,2003,0302,0002,0010,0004 ; 5250 MEM_AR,AR_PC,SC_#,#/4 ;READY TO SETUP NEW FLAGS
; 5251 =00 VMA_VMA+1,SC_#,#/60, ;SET UP FOR CONTEXT WORD
; 5252 SH DISP,AR_0S, ;TEST USER AND PUBLIC FLAGS
U 0220, 0072,3401,2000,0302,0020,3647,0060 ; 5253 CALL,J/MUUOF ;SET NEW PREV FLAGS, GET EBUS
; 5254 DATAI PAG(L),ARX_1B17-1, ;GO COLLECT DATAI PAG INFO
U 0221, 3306,1741,3200,0000,0060,2057,0511 ; 5255 CALL,J/PCTXT
U 0223, 1152,3731,0000,0000,0060,2010,0426 ; 5256 =11 LD PREV CTXT ;PCS FROM PC, CWSX FROM SXCT
; 5257 AR_SHIFT,ARL_BRL.S, ;COMBINE UBR WITH AC BLKS, CWSX
; 5258 STORE, ; STORE THAT AT 426 (XADDR =427)
U 1152, 1161,3242,4000,0000,0016,2222,0002 ; 5259 COND/EBUS CTL,EBUS CTL/2; & RELEASE ECL EBUS
U 1161, 1172,3202,6003,0000,0002,1610,0000 ; 5260 MEM_AR,AR_BRX,SR_0 ;NOW GET NEW PC
U 1172, 0075,3600,0007,4000,0337,0010,0175 ; 5261 SETPC: VMA_AR AND ADMSK,FETCH,J/NOP
; 5262
; 5263 =0
U 1662, 1251,4041,0000,0000,0021,0017,0002 ; 5264 UUOCOM: ARL_1.M,J/UUOC1 ;FORCE AC ADDRESS
U 1663, 1251,4001,0000,0400,3000,0022,0200 ; 5265 CLR P ;NOT AC, GET CLEAN SECT #
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 15-1
; SKPJMP.MIC[4,30] 17:12 9-Aug-84 UUO'S
U 1251, 1262,3510,2017,4000,1020,0010,0175 ; 5266 UUOC1: MQ_AR,AR_ARX ANDC ADMSK ;SAVE ADDR IN MQ. GET OPCODE
U 1262, 1672,4001,0040,0000,0000,6222,0030 ; 5267 BR/AR,AR_0.S,SKP USER ;SAVE OPCODE IN BR
U 1672, 1673,4001,0000,0000,2000,0210,0000 ; 5268 =0 AR12-17_PREV SEC ;GET PCS
U 1673, 1324,3302,2004,0000,0000,0010,0000 ; 5269 AR_AR*BR,AD/OR ;OPCODE/PCS COMBINED
U 1324, 1332,3530,2407,0000,3020,0010,0175 ; 5270 ARX_AR SWAP,AR_PC FLAGS ;GET FLAGS FROM PC
U 1332, 0020,4001,4000,0000,2000,0603,0000 ; 5271 ARL_ARL,AR_ARX,RETURN20 ;FLAGS AND OPCODE COMBINED
; 5272 ;GO BACK TO CALLER TO STORE
U 1336, 1342,4031,0203,0000,0022,0025,0000 ; 5273 UUOC2: MEM_AR,ARX_PC+1 ;FINISH STORE
; 5274 AR_ARX AND ADMSK, ;PC+1 ADDRESS TO AR
U 1342, 1353,3610,2307,0000,0036,3610,0175 ; 5275 VMA_VMA+1,STORE,ARX/MQ ;PUT PC AWAY, GET EFFECTIVE ADDR
; 5276 FIN STORE,AR_ARX,
U 1353, 0001,0001,4003,0000,2016,3603,0000 ; 5277 VMA_VMA+1,STORE,RETURN1 ;PUT EA AWAY.
; 5278
; 5279 =1010 ;HERE TO SETUP NEW FLAGS
U 0072, 2541,0001,0000,0000,0000,0024,0020 ; 5280 MUUOF: SET FLAGS_AR,J/GTEEB1 ;GO GET ECL EBUS
U 0073, 0072,4001,0000,0000,0000,0110,0400 ; 5281 AR0-8_#,#/400,J/MUUOF ;PREV CTXT SUPERVISOR
U 0076, 0072,4001,0000,0000,0000,0110,0004 ; 5282 AR0-8_#,#/004,J/MUUOF ; USER/CONCEALED
U 0077, 0072,0001,0000,0000,0000,0110,0404 ; 5283 AR0-8_#,#/404,J/MUUOF ; USER/PUBLIC
; 5284 .ENDIF/XADDR
; 5285
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 16
; SKPJMP.MIC[4,30] 17:12 9-Aug-84 JSYS, ADJSP
; 5286 .TOC "JSYS, ADJSP"
;;5287 .IF/DIAG.INST
;;5288 .DCODE
;;5289 104: EA, J/DIADISP ;DIAG
;;5290 I, B/0, J/ADJSP
;;5291 .UCODE
;;5292
;;5293 ;HERE FOR DIAG INSTRUCTION
;;5294
;;5295 1001:
;;5296 DIADISP: J/DIAGINSTR
;;5297
; 5298 .IFNOT/DIAG.INST
; 5299 .DCODE
D 0104, 2000,1002 ; 5300 104: EA, J/UUO ;JSYS
D 0105, 0000,1000 ; 5301 I, B/0, J/ADJSP
; 5302 .UCODE
; 5303 .ENDIF/DIAG.INST
; 5304
; 5305 ;HERE FOR ADJSP INSTRUCTION
; 5306 ; ENTER WITH E IN AR, PREFETCH IN PROGRESS
; 5307
; 5308 1000: ;PUT ADJSP NEXT TO UUO
;;5309 .IFNOT/XADDR
;;5310 ADJSP: ARL_ARR,ARR_ARR ;PUT E IN BOTH HALVES
;;5311 AR_AR*AC0,AD/A+B,INH CRY18, ;ADJUST POINTER,
;;5312 ARX/AD,SKP AR0 ;SKIP IF NEGATIVE
; 5313 .IF/XADDR
U 1000, 1354,4041,0200,0000,3020,0610,0004 ; 5314 ADJSP: ARX_1,ARL_ARR,ARR_ARR ;MUST TEST FOR SHORT STACK
; 5315 AC0,STACK UPDATE, ;MCL SHORT STACK ENABLES CRY18
U 1354, 1710,1713,0000,0000,0040,5420,0000 ; 5316 GEN ARX-1,SKP CRY0 ; THUS CRY IFF LONG POINTER
; 5317 =0 AR_AR*AC0,AD/A+B,INH CRY18, ;ADJUST POINTER,
U 1710, 1754,0600,2200,0000,0020,4511,0000 ; 5318 ARX/AD,SKP AR0,J/ADJSP1 ;SKIP IF NEGATIVE
U 1711, 1441,5441,0000,0000,0237,0616,0002 ; 5319 ARL_SIGN,ARR_ARR,I FETCH ;LONG: SIGN EXTEND E
U 1441, 0065,0600,2000,0000,0020,0010,0000 ; 5320 AR_AR*AC0,AD/A+B,J/STAC ;DONE
; 5321 .ENDIF/XADDR
; 5322 =0
; 5323 ADJSP1: GEN AR*AC0,AD/ANDCA, ;TEST FOR - TO + CHANGE
U 1754, 1330,3000,0000,0000,0020,5510,0000 ; 5324 SKP AD0,J/STMAC
; 5325 GEN AR*AC0,AD/ANDCB, ;TEST FOR + TO - CHANGE
U 1755, 1330,3500,0000,0000,0020,5510,0000 ; 5326 SKP AD0,J/STMAC
; 5327
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 17
; SKPJMP.MIC[4,30] 17:12 9-Aug-84 XCT, PXCT, SXCT
; 5328 .TOC "XCT, PXCT, SXCT"
; 5329 ;HERE FOR EXTENDED ADDRESSING INSTRUCTIONS
; 5330
; 5331 =0
U 1764, 1774,0001,0000,0000,0000,6210,0000 ; 5332 XCT1: SKP USER,J/PXCT ;HERE ON XCT, NO INTERRUPT
U 1765, 0144,0001,0000,0000,0000,7710,0000 ; 5333 TAKE INTRPT ;GET OUT OF LONG XCT CHAIN
; 5334 =0
U 1774, 1775,0001,0000,0000,0000,1510,0020 ; 5335 PXCT: SET PXCT ;SETUP PXCT CONTROLS FROM 9-12
U 1775, 0152,3703,0200,0000,0000,1410,0000 ; 5336 UXCT: ARX_AR (AD),LOAD IR,#/0,J/XCTGO ;COPY INSTR TO ARX, IR
; 5337
; 5338 .DCODE
; 5339 .IFNOT/SXCT
;;5340 .IF/DIAG.INST
;;5341 106: R, J/DIAGXCT ;DIAG MODEL B SXCT = XCT
;;5342 EA, J/XCTUUO
;;5343 .UCODE
;;5344 ;UNSUPPORTED FEATURE
;;5345 ;SEPERATE FROM XCT BECAUSE OF DRAM CONSTRAINTS
;;5346 =0****00***0
;;5347 DIAGXCT: SKP INTRPT,J/XCT1 ;CHECK FOR XCT . LOOP
;;5348 XCTUUO: J/UUO ;INST PAIR FOR XCT
;;5349 =
; 5350 .IFNOT/DIAG.INST
;;5351 .IFNOT/EXTEXP
;;5352 .IFNOT/PUSHM
;;5353 106: EA, J/UUO
;;5354 EA, J/UUO
;;5355 .UCODE
;;5356 .IF/PUSHM
;;5357 106: R, J/PUSHM ;PUSH MULTIPLE
;;5358 107: EA, J/POPM ;POP MULTIPLE
;;5359 .UCODE
;;5360 .ENDIF/PUSHM
; 5361 .ENDIF/EXTEXP
; 5362 .ENDIF/DIAG.INST
; 5363
;;5364 .IF/SXCT ;NOTE: THE SXCT INSTRUCTION IS A TEMPORARY MECHANISM
;;5365 106: R, J/SXCT ;INTENDED FOR DIAGNOSTICS ONLY
;;5366 EA, J/UUO107
;;5367 .UCODE
;;5368
;;5369 1014: ;PUT NEXT TO UUO107
;;5370 SXCT: SKP KERNEL,CALL,J/IOCHK ;LEGAL IN KERNEL MODE ONLY
;;5371 1015: BR/AR,ARX_AR,AR_AC0, ;SHUFFLE INSTR TO GET BASE REG
;;5372 SET SXCT ;SETUP HARDWARE FLAGS
;;5373 SKP AC#0 ;CHOOSE LOOP FOR EA CALC
;;5374 =0 BR/AR,AR_BR,LOAD IR, ;AC0 IS BASE INDEX
;;5375 BRX/ARX,ARL_0.M,
;;5376 EA MOD DISP,J/SXCTB
;;5377 AR_BR,LOAD IR,ARL_0.M, ;GET EXT ADDR FROM XR OR INDRCT
;;5378 BRX/ARX,J/XIND2
;;5379 =00
;;5380 PXLOOP: GEN AR,A READ ;GO DO INSTR
;;5381 AR_AR+XR,A READ
;;5382 GEN AR,A INDRCT,SKP INTRPT,J/XIND1
;;5383 GEN AR+XR,A INDRCT,SKP INTRPT
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 17-1
; SKPJMP.MIC[4,30] 17:12 9-Aug-84 XCT, PXCT, SXCT
;;5384
;;5385 =0
;;5386 XIND1: AR_MEM,ARX_MEM,EA TYPE DISP,J/XIND2
;;5387 MB WAIT,TAKE INTRPT
;;5388 =00
;;5389 XIND2: EA MOD DISP,J/PXLOOP ;CURRENT OR PREV WITHOUT CWSX
;;5390 AR_ARX (AD),A READ ;PREV AND CWSX
;;5391 AR_ARX (AD),A READ ;SXCT 0,
;;5392 EA MOD DISP,J/SXCTB ;SXCT B,
;;5393
;;5394 =00
;;5395 SXCTB: AR_AR+BR,A READ ;GO
;;5396 AR_AR+XR,ARL_0.C,J/SXCTB ;NO MORE INDIRECTS
;;5397 GEN AR,A INDRCT, ;FOLLOW INDRCT POINTER
;;5398 SKP INTRPT,J/XIND1
;;5399 GEN AR+XR,A INDRCT,
;;5400 SKP INTRPT,J/XIND1
; 5401 .ENDIF/SXCT
; 5402
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 1
; SHIFT.MIC[4,30] 17:12 9-Aug-84 ROTATES AND LOGICAL SHIFTS -- ROT, LSH, JFFO
; 5403 .TOC "ROTATES AND LOGICAL SHIFTS -- ROT, LSH, JFFO"
; 5404
; 5405 .DCODE
D 0240, 0000,1402 ; 5406 240: I, B/0, J/ASH
D 0241, 0001,1403 ; 5407 I, B/0, J/ROT
D 0242, 0200,1400 ; 5408 I, B/2, J/LSH
D 0243, 0000,1401 ; 5409 I, J/JFFO
D 0244, 0101,1404 ; 5410 I, B/1, J/ASHC
D 0245, 0001,1405 ; 5411 I, J/ROTC
D 0246, 0001,1004 ; 5412 I, J/LSHC
D 0247, 2000,1002 ; 5413 EA, J/UUO
; 5414 .UCODE
; 5415
; 5416 ;ENTER WITH 0,E IN AR
; 5417 ; NOTE THAT VALUES OF SC GREATER THAN 36
; 5418 ; CAUSE THE SHIFTER TO SELECT ARX.
; 5419
; 5420 =0****00***0
; 5421 LSH: AR_AC0,ARL/AD,ARX_0.M,SC_EA,
U 1400, 0230,3200,2000,0002,0021,4413,0042 ; 5422 SKP AR18,J/SHR1
; 5423
U 1401, 2004,3200,2000,0302,0020,5610,0006 ; 5424 JFFO: AR_AC0,SKP AD NE,SC_#,#/6
; 5425 =
U 2004, 0075,4001,0001,0000,0217,1010,0000 ; 5426 =0 AC1_AR,I FETCH,J/NOP ;AC WAS ZERO, NO JUMP
; 5427 ARX+MQ_0.M,FE_P,SKP SCAD NE, ;TEST FIRST 6 BITS
U 2005, 2032,0001,4000,0101,0021,5210,0144 ; 5428 AR_SHIFT,ARL/SH ;DISCARD THEM
; 5429 =0
; 5430 JFFO1: AR_SHIFT,FE_P,SKP SCAD NE, ;TEST NEXT 6 BITS
U 2032, 2032,1701,4600,0101,0020,5210,0000 ; 5431 ARX_ARX-1,J/JFFO1 ;LOOP, COUNTING, TILL NE
; 5432 P_FE,ARR_0.S, ;RESTORE 6 NON-ZERO BITS
U 2033, 2040,5123,0500,0000,3020,0022,0210 ; 5433 ARX_ARX*-6 ;GET POS GROUP COUNT*6
; 5434 =0
; 5435 JFFO2: SKP AR0,AR_2(AR+1), ;LOOP TO FIND A 1
U 2040, 2040,4001,5600,0000,0040,4510,0000 ; 5436 ARX_ARX+1,J/JFFO2 ;COUNTING AS WE GO
U 2041, 1753,1701,6000,0000,0037,0010,0000 ; 5437 AR_ARX-1,FETCH,J/STRAC1
; 5438
; 5439 =0****00***0
; 5440 ASH: SC_EA,SKP AR18, ;GET SHIFT AMOUNT
U 1402, 2120,3441,2000,0002,0000,4413,0000 ; 5441 AR_0S,J/ASHL ;SET LOW PART = 0
U 1403, 0230,3200,2200,0002,0040,4413,0000 ; 5442 ROT: AR_AC0,ARX_AC0,SC_EA,SKP AR18
; 5443 =
; 5444 ;SINGLE-WORD LSH/ROT
; 5445 ; FOR ROT, B=0, AR AND ARX BOTH CONTAIN AC
; 5446 ; FOR LSH, B=2, AR HAS AC, ARX IS ZERO
; 5447
; 5448 =00
; 5449 SHR1: AR_SHIFT,SC_#+SC,#/-36., ;DO POS (LEFT) SHIFT, CHK RANGE
U 0230, 0232,0001,4000,2302,0020,5110,0734 ; 5450 SKP SCAD0,J/SHR2
; 5451 ARX_AR (AD),AR_ARX (ADX),
; 5452 SC_#+SC,#/36.,
U 0231, 0230,3703,6200,2302,0020,5133,0044 ; 5453 B DISP,SKP SCAD0,J/SHR1 ;MAKE NEG SHIFT TO EQUIV POS
; 5454 SHR2: AR_SHIFT,SC_#+SC,#/-36.,
U 0232, 0232,0001,4000,2302,0020,5110,0734 ; 5455 SKP SCAD0,J/SHR2 ;BRING SC INTO RANGE
U 0233, 0075,0001,0000,0000,0217,1010,0000 ; 5456 AC0_AR,I FETCH,J/NOP ;DONE
; 5457
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 2
; SHIFT.MIC[4,30] 17:12 9-Aug-84 ROTATE AND LOGICAL SHIFT COMBINED -- ROTC, LSHC
; 5458 .TOC "ROTATE AND LOGICAL SHIFT COMBINED -- ROTC, LSHC"
; 5459
; 5460 =0****00***0
; 5461 ASHC: SC_EA,SKP AR18, ;SETUP SHIFT COUNT
U 1404, 2120,3240,5001,0002,0020,4413,0000 ; 5462 AR_AC1*2,J/ASHL ;GET LOW WORD
U 1405, 1445,3240,0201,0000,0020,0010,0000 ; 5463 ROTC: ARX_AC1
U 1445, 2044,3240,2000,0002,0020,4413,0000 ; 5464 = AR_AC0,SC_EA,SKP AR18 ;SETUP BOTH AC'S
; 5465 =0
; 5466 ROT3: MQ_SHIFT,ARX_AR (AD),
U 2044, 1452,3703,6210,0000,0000,0010,0000 ; 5467 AR_ARX (ADX),J/ROT4
; 5468 ARX_AR (AD),AR_ARX (ADX),
U 2045, 2044,3701,6200,2302,0020,5110,0044 ; 5469 SC_#+SC,#/36.,SKP SCAD0,J/ROT3
; 5470
; 5471 ROT4: AR_MQ,ARX_SHIFT,
U 1452, 2110,3721,2400,2302,0020,5110,0734 ; 5472 SC_#+SC,#/-36.,SKP SCAD0
; 5473 =0 MQ_SHIFT,ARX_AR (AD),
U 2110, 1452,3703,6210,0000,0000,0010,0000 ; 5474 AR_ARX (ADX),J/ROT4
U 2111, 1753,4001,4000,0000,2217,1010,0000 ; 5475 STDAC: AC0_AR,AR_ARX,I FETCH,J/STRAC1
; 5476
; 5477
; 5478 1004: ;NEXT TO UUO
U 1004, 1461,3240,0201,0000,0021,0010,0100 ; 5479 LSHC: ARX_AC1,MQ_0.M
U 1461, 2112,3240,2000,0303,0020,4413,0044 ; 5480 LSH1: AR_AC0,SC_EA,FE_#,#/36.,SKP AR18
; 5481 =0
; 5482 LSH2: MQ_SHIFT,AR_ARX (ADX),
U 2112, 1462,3721,6310,0301,0000,0010,0734 ; 5483 ARX/MQ,FE_#,#/-36.,J/LSH3
; 5484 ARX_AR (AD),AR_0.M,MQ_ARX,
U 2113, 2112,3701,0210,2002,2021,5110,0030 ; 5485 SC_FE+SC,SKP SCAD0,J/LSH2
; 5486
; 5487 LSH3: AR_MQ,ARL/AD,ARX_SHIFT,MQ_0.M,
U 1462, 2114,3721,2400,2002,0021,5110,0102 ; 5488 SC_FE+SC,SKP SCAD0
U 2114, 1462,3701,6310,0000,0000,0010,0000 ; 5489 =0 MQ_SHIFT,AR_ARX (ADX),ARX/MQ,J/LSH3
U 2115, 1753,4001,4000,0000,2217,1010,0000 ; 5490 AC0_AR,AR_ARX,I FETCH,J/STRAC1
; 5491
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 3
; SHIFT.MIC[4,30] 17:12 9-Aug-84 ARITHMETIC SHIFTS -- ASH, ASHC
; 5492 .TOC "ARITHMETIC SHIFTS -- ASH, ASHC"
; 5493
; 5494 ;COMMON CODE FOR ARITHMETIC SHIFTS
; 5495
; 5496 =0
; 5497 ASHL: ARX_AR,AR_AC0, ;INPUT NOW IN AR LONG
U 2120, 2124,3200,2400,2400,1040,5210,0000 ; 5498 SKP SC NE,J/ASHL1 ;CHECK FOR NULL SHIFT
; 5499 ARX_AR,AR_AC0, ;HERE IF RIGHT SHIFT
U 2121, 2122,3200,2400,2302,1040,5110,0044 ; 5500 SC_#+SC,#/36.,SKP SCAD0 ;CHECK FOR LONG ONE
; 5501 =0
U 2122, 1472,5401,2440,0000,0020,0016,0000 ; 5502 ASHR1: BR/AR,ARX_SHIFT,AR_SIGN,J/ASHR2 ;LOW OUTPUT TO ARX
; 5503 ARX_AR,AR_SIGN, ;HERE IF SHIFT COUNT .GT. 36
; 5504 SC_#+SC,#/36., ;BRING COUNT UP BY 36
U 2123, 2122,5441,2400,2302,1020,5116,0044 ; 5505 SKP SCAD0,J/ASHR1 ;LOOP TILL COUNT REASONABLE
; 5506
; 5507 ASHR2: BRX/ARX,ARX_BR, ;HIGH INPUT TO ARX
U 1472, 2142,3242,0220,0000,0000,0033,0000 ; 5508 B DISP,J/ASHX
; 5509
; 5510 ;HERE FOR LEFT ARITHMETIC SHIFT
; 5511
; 5512 =0
U 2124, 0075,4001,0000,0000,0217,0010,0000 ; 5513 ASHL1: I FETCH,J/NOP ;SHIFT 0 IS A NOP
U 2125, 1522,5441,2060,0000,0020,0016,0000 ; 5514 BR_AR LONG,AR_SIGN ;SAVE INPUT, GEN SIGN WORD
U 1522, 0274,3241,2640,0000,0000,0010,0000 ; 5515 BR/AR,AR_BR*2 LONG ;SAVE SIGN, GET MAGNITUDE BITS
; 5516 =0*
; 5517 ASHL2: BRX/ARX,ARX_AR,AR_BR, ;HI IN TO ARX, LOW TO BRX
U 0274, 2450,3242,2420,0000,1000,0050,0000 ; 5518 CALL,J/SHIFT ;CALL SHIFTER TO GET BITS LOST
U 0276, 2130,3102,0004,0000,0020,5610,0000 ; 5519 SKP AR NE BR ;ANY BITS DIFFERENT FROM SIGN?
; 5520 =0
; 5521 ASHL3: AR_ARX,ARX_BRX, ;RESTORE HI TO AR, LOW TO ARX
U 2130, 2134,3202,4600,2300,2020,5110,0734 ; 5522 GEN #+SC,#/-36.,SKP SCAD0,J/ASHL4
U 2131, 2130,4001,0000,0000,0000,1110,0420 ; 5523 SET AROV,J/ASHL3 ;BITS SHIFTED OUT NE SIGN
; 5524 =0
; 5525 ASHL4: AR_ARX,ARX_0S, ;HERE IF E .GT. 36
U 2134, 0274,3401,4200,2302,2000,0010,0734 ; 5526 SC_#+SC,#/-36.,J/ASHL2 ;SHIFT 36 PLACES, TRY AGAIN
; 5527 MQ_SHIFT,AR_BRX,CLR ARX, ;HIGH OUTPUT TO MQ,
U 2135, 2140,3202,6010,2302,0000,0533,0777 ; 5528 SC_#+SC,#/-1,B DISP ;COMPENSATE FOR EXTRA SHIFT
; 5529 =0
; 5530 ASHL5: AR_BR,BRX/ARX,ARX/MQ, ;SIGN TO AR, HIGH OUT TO ARX
; 5531 SC_#,#/35., ;READY TO COMBINE THEM
U 2140, 2142,3242,2320,0302,0000,0033,0043 ; 5532 B DISP,J/ASHX ;STORE AS APPROPRIATE
U 2141, 2140,4001,0400,0000,0000,0010,0000 ; 5533 ARX_SHIFT,J/ASHL5 ;LOW OUTPUT TO ARX
; 5534
; 5535 ;HERE TO GET FINAL RESULTS.
; 5536
; 5537 =0
U 2142, 0074,4001,4000,0000,0217,0010,0000 ; 5538 ASHX: AR_SHIFT,I FETCH,J/STORAC ;HERE AFTER ASH
; 5539 AR_SHIFT,ARX_BRX, ;HERE AFTER ASHC
U 2143, 0061,3202,4600,0302,0000,0010,0043 ; 5540 SC_#,#/35.,J/ST2AC
; 5541
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 1
; ARITH.MIC[4,30] 17:12 9-Aug-84 ADD, SUB
; 5542 .TOC "ADD, SUB"
; 5543
; 5544 .DCODE
D 0270, 5501,1607 ; 5545 270: R-PF, AC, J/ADD
D 0271, 1500,1607 ; 5546 I-PF, AC, J/ADD
D 0272, 7600,1607 ; 5547 RPW, M, J/ADD
D 0273, 7701,1607 ; 5548 RPW, B, J/ADD
; 5549 .UCODE
; 5550
; 5551 =0****00****
U 1607, 0060,0600,2000,0000,0025,1333,0000 ; 5552 ADD: AR_AR*AC0,AD/A+B,AD FLAGS,EXIT
; 5553 =
; 5554
; 5555
; 5556 .DCODE
D 0274, 5501,1610 ; 5557 274: R-PF, AC, J/SUB
D 0275, 1500,1610 ; 5558 I-PF, AC, J/SUB
D 0276, 7600,1610 ; 5559 RPW, M, J/SUB
D 0277, 7701,1610 ; 5560 RPW, B, J/SUB
; 5561 .UCODE
; 5562
; 5563 =0****00****
U 1610, 1532,3200,2040,0000,0020,0010,0000 ; 5564 SUB: AR_AC0,BR/AR
U 1532, 0060,5102,2000,0000,0025,1333,0000 ; 5565 = AR_AR-BR,AD FLAGS,EXIT
; 5566
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 2
; ARITH.MIC[4,30] 17:12 9-Aug-84 MUL, IMUL
; 5567 .TOC "MUL, IMUL"
; 5568
; 5569 .DCODE
D 0220, 4500,0503 ; 5570 220: R, AC, J/IMUL
D 0221, 0501,0503 ; 5571 I, AC, J/IMULI
D 0222, 6601,0503 ; 5572 RW, M, J/IMUL
D 0223, 6700,0503 ; 5573 RW, B, J/IMUL
; 5574 .UCODE
; 5575
; 5576 .IFNOT/IMULI.OPT
; 5577 =0****00*01*
; 5578 IMULI:
;;5579 .IF/IMULI.OPT
;;5580 =0****00*000
;;5581 IMULI: SKP AR18,GEN AC0,SIGNS DISP, ;OPTIMIZE SPECIAL CASE
;;5582 TIME/3T,SC_#,#/17.
;;5583 =010 MQ_AR,AR_AC0, ;HERE FOR IMULI OF + BY +
;;5584 CLR ARX,FE_#,#/-9., ; 9 STEPS WILL DO
;;5585 CALL,J/MULSUB
; 5586 .ENDIF/IMULI.OPT
; 5587 IMUL: MQ_AR,AR_AC0, ;M'IER TO MQ, M'CAND TO AR
; 5588 CLR ARX,FE_#,#/-18.,
U 0503, 1544,3240,2010,0301,1020,0550,0756 ; 5589 CALL,J/MULSUB ;CALL MULTIPLY SUBROUTINE
;;5590 .IF/IMULI.OPT
;;5591 =110 AR_SHIFT,SKP AR NE,INH CRY18, ;HERE FROM IMULI
;;5592 I FETCH,J/MUL1 ; AFTER SHORT MULTIPLY
; 5593 .ENDIF/IMULI.OPT
U 0507, 2144,0001,0000,0302,0040,5616,0043 ; 5594 SC_#,#/35.,SKP AR SIG ;CHECK OVERFLOW AND STORE
; 5595 =
; 5596 =0
U 2144, 0066,4001,4000,0000,0005,0033,0000 ; 5597 IMUL2: AR_SHIFT,B WRITE,J/ST6 ;STORE LOW WORD OF PRODUCT
U 2145, 2144,5401,2000,0000,0020,1116,0420 ; 5598 SET AROV,AR_SIGN,J/IMUL2 ;NOTE OVERFLOW...
; 5599
; 5600
; 5601 .DCODE
D 0224, 4100,0200 ; 5602 224: R, DBL AC, J/MUL
D 0225, 0101,0200 ; 5603 I, DBL AC, J/MUL
D 0226, 6600,0200 ; 5604 RW, M, J/MUL
D 0227, 6201,0200 ; 5605 RW, DBL B, J/MUL
; 5606 .UCODE
; 5607
; 5608 =0****00*000
; 5609 MUL: MQ_AR,CLR ARX, ;MULTIPLIER TO MQ
; 5610 AR_AC0,FE_#,#/-18., ;SETUP MULTIPLICAND AND STEP CNT
U 0200, 1544,3240,2010,0301,1020,0550,0756 ; 5611 CALL,J/MULSUB ;AND GO TO SUBROUTINE
U 0204, 0206,3602,0004,0000,0020,5510,0000 ; 5612 =100 GEN AR*BR,AD/AND,SKP AD0 ;M'IER NEG, CHECK M'CAND & PROD TOO
; 5613 =110
U 0206, 0060,0001,0000,0302,0005,0033,0043 ; 5614 MUL1: SC_#,#/35.,EXIT ;STORE DOUBLE RESULT
U 0207, 0206,0001,0000,0000,0000,1110,0420 ; 5615 SET AROV,J/MUL1 ;MUST HAVE SQUARED 400000,,0
; 5616 =
; 5617
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 3
; ARITH.MIC[4,30] 17:12 9-Aug-84 MULTIPLY SUBROUTINE
; 5618 .TOC "MULTIPLY SUBROUTINE"
; 5619 ; ENTER WITH MULTIPLIER IN MQ,
; 5620 ; MULTIPLICAND IN AR!ARX, MINUS STEP COUNT IN FE
; 5621 ; RETURNS PRODUCT IN AR!ARX!MQ.
; 5622 ; RETURN 4, 6 TELLS SIGN OF MULTIPLIER
; 5623 ; 4 AND 6 ARE USED SO CALLER CAN IGNORE
; 5624 ; DIFFERENCE BY ALIGNMENT OF CALL LOC'N
; 5625 ;[TIME=4+2(-FE)+(# OF ARITH STEPS)] ... IF FE=-18, 40-58.
; 5626 ;
; 5627 ;Recall:
; 5628 ; MUL "FE_FE+1,DISP/MUL,MQ/MQ*.25"
; 5629 ;
; 5630
; 5631 MULSUB: BR_AR LONG,AR_0S,ARX_0S, ;M'CAND TO BR LONG, CLEAR PROD
U 1544, 0260,3441,2270,4001,0000,0030,0000 ; 5632 MUL,J/MULP ;START THE MULTIPLICATION
; 5633 =000 ;GRAB AN 8-WORD BLOCK
; 5634 MULP:
; 5635 .IF/MODEL.B
U 0260, 0006,3701,5500,2401,0000,0703,0001 ; 5636 (AR+ARX+MQ)*2,FE_SC,RETURN6 ;XADDR MACHINE HAS
U 0261, 0006,3701,5500,2401,0000,0703,0001 ; 5637 (AR+ARX+MQ)*2,FE_SC,RETURN6 ; NO "CRA MUL DONE"
U 0262, 0006,3701,5500,2401,0000,0703,0001 ; 5638 (AR+ARX+MQ)*2,FE_SC,RETURN6
; 5639 .ENDIF/MODEL.B
U 0263, 0006,3701,5500,2401,0000,0703,0001 ; 5640 =011 (AR+ARX+MQ)*2,FE_SC,RETURN6 ;DISCARD REDUNDANT SIGN BIT
; 5641
U 0264, 0260,3703,7710,4001,0000,0030,0000 ; 5642 =100 AR_AR*.25 LONG,MUL,J/MULP ;M'IER BITS 00 AFTER POS STEP
; 5643 AR_(AR+BR)*.25,ARX/ADX*.25, ;01 AFTER +
U 0265, 0260,0602,7714,4001,0020,0030,0000 ; 5644 MUL,J/MULP
; 5645 AR_(AR-2BR)*.25,ARX/ADX*.25, ;10 AFTER +
U 0266, 0320,5101,7710,4001,0020,0030,0000 ; 5646 MUL,J/MULM
; 5647 AR_(AR-BR)*.25,ARX/ADX*.25,
U 0267, 0320,5102,7710,4001,0020,0030,0000 ; 5648 MUL,J/MULM ;11 AFTER +
; 5649
; 5650 =000 ;ANOTHER 8-WORD BLOCK FOR
; 5651 MULM: ; AFTER SUBTRACTION STEPS
; 5652 .IF/MODEL.B
U 0320, 0004,3703,5500,2401,0000,0703,0001 ; 5653 (AR+ARX+MQ)*2,FE_SC,RETURN4
U 0321, 0004,3703,5500,2401,0000,0703,0001 ; 5654 (AR+ARX+MQ)*2,FE_SC,RETURN4
U 0322, 0004,3703,5500,2401,0000,0703,0001 ; 5655 (AR+ARX+MQ)*2,FE_SC,RETURN4
; 5656 .ENDIF/MODEL.B
U 0323, 0004,3703,5500,2401,0000,0703,0001 ; 5657 =011 (AR+ARX+MQ)*2,FE_SC,RETURN4 ;M'IER WAS NEGATIVE
; 5658
; 5659 =100 AR_(AR+BR)*.25,ARX/ADX*.25, ;M'IER BITS 00 AFTER NEG STEP
U 0324, 0260,0602,7714,4001,0020,0030,0000 ; 5660 MUL,J/MULP
; 5661 AR_(AR+2BR)*.25,ARX/ADX*.25, ;01 AFTER -
U 0325, 0260,0601,7714,4001,0020,0030,0000 ; 5662 MUL,J/MULP
; 5663 AR_(AR-BR)*.25,ARX/ADX*.25, ;10 AFTER -
U 0326, 0320,5102,7710,4001,0020,0030,0000 ; 5664 MUL,J/MULM
U 0327, 0320,3703,7710,4001,0000,0030,0000 ; 5665 AR_AR*.25 LONG,MUL,J/MULM ;11 AFTER -
; 5666
; 5667 ;HERE TO CONTINUE A LONG MULTIPLICATION
; 5668 ; WITH PARTIAL PRODUCT IN AR LONG
; 5669
U 1546, 0260,3441,0010,4001,0000,0030,0000 ; 5670 MULREE: AD/0S,MUL,J/MULP ;DIVE IN WITHOUT CLOBBERING AR
; 5671
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 4
; ARITH.MIC[4,30] 17:12 9-Aug-84 DIV, IDIV
; 5672 .TOC "DIV, IDIV"
; 5673
; 5674 .DCODE
D 0230, 4100,0211 ; 5675 230: R, DBL AC, J/IDIV
D 0231, 0101,0211 ; 5676 I, DBL AC, J/IDIV
D 0232, 6600,0211 ; 5677 RW, M, J/IDIV
D 0233, 6201,0211 ; 5678 RW, DBL B, J/IDIV
; 5679
D 0234, 4101,0210 ; 5680 234: R, DBL AC, J/DIV
D 0235, 0100,0210 ; 5681 I, DBL AC, J/DIV
D 0236, 6601,0210 ; 5682 RW, M, J/DIV
D 0237, 6200,0210 ; 5683 RW, DBL B, J/DIV
; 5684 .UCODE
; 5685
; 5686 =0****00*000
; 5687 DIV: BR/AR,ARX+MQ_0.M, ;DIVISOR TO BR
; 5688 AR_AC1*2,ARL/AD*2, ;LOW DIVIDEND TO AR
U 0210, 1552,3200,5041,0000,0021,0050,0145 ; 5689 CALL.M,J/DIV1 ;GET HIGH DIVIDEND
; 5690 .IF/MODEL.B
U 0211, 1550,4061,2040,0000,0020,0010,0000 ; 5691 IDIV: BR/AR, AR_1, J/IDIV2 ;[236]
; 5692 IDIV1: BR/AR,ARX+MQ_0.M,SC_1, ;DIVISOR TO BR
; 5693 AR_AC0,ARL/AD,CALL.M, ;DIVIDEND TO AR
U 0212, 2160,3240,2040,4402,0021,4550,0142 ; 5694 SKP AR0,J/DIV2 ;TEST DIVISOR SIGN
;;5695 .IFNOT/MODEL.B
;;5696 =10
;;5697 IDIV: BR/AR,ARX+MQ_0.M,SC_1, ;DIVISOR TO BR
;;5698 AR_AC0,ARL/AD,CALL.M, ;DIVIDEND TO AR
;;5699 SKP AR0,J/DIV2 ;TEST DIVISOR SIGN
; 5700 .ENDIF/MODEL.B
; 5701 =011
U 0213, 0075,4001,0000,0000,0000,1110,0424 ; 5702 NODIVD: SET NO DIVIDE,J/NOP ;HERE IF DIVIDE IMPOSSIBLE
; 5703
; 5704 =110 ARX_AR,AR_-BRX, ;REMAIN TO ARX, GET CORRECT QUOTIENT
U 0216, 0060,5142,6400,0302,1025,0033,0044 ; 5705 SC_#,#/36.,EXIT
; 5706 ARX_AR,AR_BRX, ;HERE FOR POS QUOTIENT
U 0217, 0060,3202,6400,0302,1005,0033,0044 ; 5707 SC_#,#/36.,EXIT
; 5708 =
; 5709 .IF/MODEL.B
U 1550, 2156,5102,0004,0000,0040,5610,0000 ; 5710 IDIV2: GEN AR-BR, SKP AD NE ;[236] IS DIVISOR = 1?
; 5711 =0 AR_AC0, CLR ARX, SC_#, #/36., ;[236] YES, ANSWER IS AC0.
U 2156, 0060,3240,2000,0302,0025,0533,0044 ; 5712 EXIT ;[236]
U 2157, 0212,3202,2000,0000,0000,0010,0000 ; 5713 AR_BR, J/IDIV1 ;
; 5714 .ENDIF/MODEL.B
; 5715 ;HERE ON DIVIDE TO SET UP DIVIDEND
; 5716
; 5717 DIV1: BRX/ARX,ARX_AR,AR_AC0, ;CLR BRX, DIVIDEND IN AR LONG
; 5718 FE_#,#/33.,TIME/3T, ;SETUP ITERATION COUNT
U 1552, 0234,3240,2420,0301,1020,0032,0041 ; 5719 SIGNS DISP,J/DIVS1 ;ENTER SUBR
; 5720
; 5721 ;HERE ON IDIV TO SET UP DIVIDEND. SKIP IF DIVISOR NEG
; 5722 ; ALSO CALLED BY ADJBP
; 5723 =0
; 5724 DIV2: BRX/ARX,ARX_SHIFT,AR_SIGN, ;CLR BRX, DIVIDEND TO AR LONG
; 5725 FE_#,#/33., ;SETUP LOOP COUNT
U 2160, 0234,5401,2420,0301,0020,4516,0041 ; 5726 SKP AR0,J/DIVS1 ;ENTER SUBR ACCORDING TO SIGNS
; 5727 BRX/ARX,ARX_SHIFT,AR_SIGN, ;CLR BRX, DIVIDEND TO AR LONG
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 4-1
; ARITH.MIC[4,30] 17:12 9-Aug-84 DIV, IDIV
; 5728 FE_#,#/33., ;SETUP LOOP COUNT
U 2161, 0236,5441,2420,0301,0020,4516,0041 ; 5729 SKP AR0,J/DIVS2 ;ENTER SUBR ACCORDING TO SIGNS
; 5730
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 5
; ARITH.MIC[4,30] 17:12 9-Aug-84 INTEGER DIVIDE SUBROUTINE
; 5731 .TOC "INTEGER DIVIDE SUBROUTINE"
; 5732 ; ENTER WITH SIGNS DISPATCH OF DIVISOR AND DIVIDEND,
; 5733 ; DIVISOR IN BR, BRX CLR; DIVIDEND IN AR!ARX
; 5734 ; STEP COUNT IN FE (# OF QUOTIENT BITS -2)
; 5735 ; IF NO DIVIDE, RETURN 3 WITH IFETCH STARTED
; 5736 ; OTHERWISE, RETURN WITH SIGNED REMAINDER IN AR,
; 5737 ; POSITIVE QUOTIENT IN BRX AND MQ.
; 5738 ; RETURN 6 IF QUOTIENT SHOULD BE NEGATIVE,
; 5739 ; RETURN 7 IF QUOTIENT SHOULD BE POSITIVE.
; 5740 ;[TIME=14+3(FE)+3(D'END NEG)+3(RESTORE REQ'D)+1(REMAINDER NEG)]
; 5741 ; ... IF FE=33, 113-120
; 5742 ;
; 5743 ;Recall:
; 5744 ; DIVIDE "FE_FE-1,DISP/DIV,MQ/MQ*2"
; 5745 ;
; 5746 =1100
; 5747 DIVS1: DIVIDE,AR_2(AR-BR),
U 0234, 0342,5102,5500,3001,0020,0031,0000 ; 5748 ARX/ADX*2,J/DIVS3 ;BOTH D'END AND D'SOR POS
U 0235, 0234,5143,7700,0000,0020,0027,0000 ; 5749 AR_-AR LONG,J/DIVS1 ;MAKE POS DIVIDEND, THEN CHK
; 5750 DIVS2: DIVIDE,AR_2(AR+BR),
U 0236, 0422,0602,5500,3001,0020,0031,0000 ; 5751 ARX/ADX*2,J/DIVS4 ;D'END POS, D'SOR NEG
U 0237, 0236,5163,7700,0000,0020,0027,0000 ; 5752 AR_-AR LONG,J/DIVS2
; 5753
; 5754 =010
; 5755 DIVS3: DIVIDE,AR_2(AR+BR),ARX/ADX*2,
U 0342, 0460,0602,5504,3001,0020,0071,0005 ; 5756 ARL/AD*2,CALL.M,J/DIVLP ;START DIVIDING
U 0343, 0003,4001,0000,0000,0217,0003,0000 ; 5757 I FETCH,RETURN3 ;RETURN TO CALLER WITH NO DIVIDE
; 5758
U 0346, 0006,5162,2020,0000,0020,0003,0000 ; 5759 AR_-BR,BRX/ARX,RETURN6 ;D'END NEG, SO NEGATE QUO & REM
U 0347, 0007,0001,0020,0000,0000,0003,0000 ; 5760 BRX/ARX,RETURN7 ;EVERYTHING POSITIVE
; 5761
; 5762
; 5763 =010
; 5764 DIVS4: DIVIDE,AR_2(AR-BR),ARX/ADX*2,
U 0422, 0460,5102,5500,3001,0020,0071,0005 ; 5765 ARL/AD*2,CALL.M,J/DIVLP ;BEGIN DIVISION FOR REAL BITS
U 0423, 0003,4001,0000,0000,0217,0003,0000 ; 5766 I FETCH,RETURN3 ;ABORT FOR IMPOSSIBLE DIVISION
; 5767
U 0426, 0006,4001,0020,0000,0000,0003,0000 ; 5768 BRX/ARX,RETURN6 ;NEGATE QUO
U 0427, 0007,5142,2020,0000,0020,0003,0000 ; 5769 AR_-BR,BRX/ARX,RETURN7 ;NEGATE REM
; 5770
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 6
; ARITH.MIC[4,30] 17:12 9-Aug-84 BASIC DIVIDE LOOP
; 5771 .TOC "BASIC DIVIDE LOOP"
; 5772 ; THE LOOP ITSELF IS AN INNER SUBROUTINE, TO MAKE IT SUITABLE
; 5773 ; FOR USE IN DOUBLE-LENGTH DIVISION.
; 5774 ; THE DOUBLE LENGTH REMAINDER IS RETURNED IN BR!BRX (RESTORED)
; 5775 ; THE SINGLE LENGTH QUOTIENT (LOW PART IF DBL-LEN DIVISION) IN ARX
; 5776 ; RETURN 6 IF QUOTIENT (REALLY AC0.XOR.BR) NEGATIVE, OR 7 IF POSITIVE
; 5777 ;[TIME=12+3(FE)+3(RESTORE REQ'D)] ... IF FE=33, 111-114.
; 5778
; 5779 =000
U 0460, 0460,0602,5500,3001,0020,0031,0000 ; 5780 DIVLP: DIVIDE,AR_2(AR+BR),ARX/ADX*2,J/DIVLP
U 0461, 0460,5102,5504,3001,0020,0031,0000 ; 5781 DIVIDE,AR_2(AR-BR),ARX/ADX*2,J/DIVLP
U 0462, 0460,5102,5504,3001,0020,0031,0000 ; 5782 DIV-: DIVIDE,AR_2(AR-BR),ARX/ADX*2,J/DIVLP
U 0463, 0460,0602,5500,3001,0020,0031,0000 ; 5783 DIV+: DIVIDE,AR_2(AR+BR),ARX/ADX*2,J/DIVLP
U 0464, 0564,0602,2604,3001,0020,0031,0000 ; 5784 DIVIDE,AR_AR+BR,ARX/ADX,J/DIVX
U 0465, 0564,5102,2600,3001,0020,0031,0000 ; 5785 DIVIDE,AR_AR-BR,ARX/ADX,J/DIVX
U 0466, 0564,5102,2600,3001,0020,0031,0000 ; 5786 DIVIDE,AR_AR-BR,ARX/ADX,J/DIVX ;NO SHIFT ON FINAL STEP
U 0467, 0564,0602,2604,3001,0020,0031,0000 ; 5787 DIVIDE,AR_AR+BR,ARX/ADX,J/DIVX
; 5788
; 5789 ;HERE AFTER FINAL DIVIDE STEP
; 5790 ; MQ HAS POSITIVE FORM QUOTIENT
; 5791 ; AR!ARX HAS REMAINDER, EXCEPT THAT IT MUST BE RESTORED IF IT IS
; 5792 ; NEGATIVE (IT'S NEGATIVE IF THERE WAS NO CARRY ON FINAL STEP)
; 5793 ; THE ORIGINAL DIVIDEND IS STILL IN AC0, SO WE CHECK ITS SIGN
; 5794 ; TO DETERMINE WHETHER TO NEGATE THE (RESTORED) REMAINDER.
; 5795
; 5796 =100
U 0564, 0565,0602,2600,0000,0020,0027,0000 ; 5797 DIVX: AR_AR+BR LONG ;RESTORE REMAIN WITH POS D'SOR
; 5798 BR_AR LONG,ARX/MQ,FE_SC, ;LONG REMAIN TO BR, QUO TO ARX
U 0565, 0006,2500,0360,2401,0020,5503,0000 ; 5799 SKP AC0+,RETURN6 ;RETURN TESTING D'END SIGN
U 0566, 0567,5102,2600,0000,0020,0027,0000 ; 5800 AR_AR-BR LONG ;RESTORE REMAIN WITH NEG D'SOR
; 5801 BR_AR LONG,ARX/MQ,FE_SC,
U 0567, 0006,3200,0360,2401,0020,5503,0000 ; 5802 SKP AC0-,RETURN6
; 5803
; 5804
; 5805 ;SUBROUTINE FOR FIRST PART OF LONG DIVISIONS
; 5806 ; ENTER AT DDVSUB WITH SKP BR0
; 5807 ; RETURN3 IF SHOULD RESUME WITH ADD STEP
; 5808 ; RETURN5 IF SHOULD RESUME WITH SUBTRACT
; 5809
; 5810 =000
U 0640, 0640,0602,5500,3001,0020,0031,0000 ; 5811 DDVLP: AR_2(AR+BR),ARX/ADX*2,DIVIDE,J/DDVLP
U 0641, 0640,5102,5504,3001,0020,0031,0000 ; 5812 AR_2(AR-BR),ARX/ADX*2,DIVIDE,J/DDVLP
U 0642, 0640,5102,5504,3001,0020,0031,0000 ; 5813 DDVSUB: AR_2(AR-BR),ARX/ADX*2,DIVIDE,J/DDVLP
U 0643, 0640,0602,5500,3001,0020,0031,0000 ; 5814 AR_2(AR+BR),ARX/ADX*2,DIVIDE,J/DDVLP
U 0644, 0003,3723,2010,0301,1000,0003,0040 ; 5815 AR_MQ,MQ_AR,FE_#,#/32.,RETURN3
U 0645, 0005,3723,2010,0301,1000,0003,0040 ; 5816 AR_MQ,MQ_AR,FE_#,#/32.,RETURN5
U 0646, 0005,3723,2010,0301,1000,0003,0040 ; 5817 AR_MQ,MQ_AR,FE_#,#/32.,RETURN5
U 0647, 0003,3723,2010,0301,1000,0003,0040 ; 5818 AR_MQ,MQ_AR,FE_#,#/32.,RETURN3
; 5819
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 7
; ARITH.MIC[4,30] 17:12 9-Aug-84 DOUBLE INTEGER ARITHMETIC -- DADD, DSUB, DMUL, DDIV
; 5820 .TOC "DOUBLE INTEGER ARITHMETIC -- DADD, DSUB, DMUL, DDIV"
; 5821
; 5822 .DCODE
;;5823 .IFNOT/DBL.INT
;;5824 114: EA, J/UUO
;;5825 EA, J/UUO
;;5826 EA, J/UUO
;;5827 EA, J/UUO
; 5828 .IF/DBL.INT
D 0114, 4001,0515 ; 5829 114: R, B/0, J/DASMD ;DADD
D 0115, 4200,0515 ; 5830 R, B/2, J/DASMD ;DSUB
D 0116, 4400,0515 ; 5831 R, B/4, J/DASMD ;DMUL
D 0117, 4000,0514 ; 5832 R, J/DDIV
; 5833 .UCODE
; 5834
; 5835 ;HERE FOR DOUBLE WORD ADD, SUBTRACT, MULTIPLY, OR DIVIDE
; 5836 ;ENTER WITH (E) IN AR, E IN VMA
; 5837
; 5838 =0****00**00
U 0514, 1632,3200,0205,0000,0020,0710,0003 ; 5839 DDIV: ARX_AC3,CLR MQ,J/DDIV0 ;GET LOWEST PART OF D'END
; 5840
; 5841 DASMD: BR/AR,AR_AC1*2,ARL/AD*2, ;HIGH MEM WORD TO BR
; 5842 VMA_VMA+1,LOAD ARX, ;ASK FOR LOW WORD
U 0515, 1023,3200,5041,0000,0033,3662,0105 ; 5843 MQ_0.S,CALL.S,J/XFERW ;AND WAIT FOR IT
U 0517, 1554,3701,0500,0000,0000,0010,0000 ; 5844 =11 ARX_ARX*2 ;SHIFT LOW MEM WORD LEFT
; 5845 = BRX/ARX,ARX_AR,AR_AC0, ;ALL DATA IN PLACE
U 1554, 0250,3200,2420,0302,1020,0033,0043 ; 5846 SC_#,#/35.,B DISP ;DO THE OPERATION
; 5847
; 5848 ;HERE WITH (E) IN BR, (E+1)*2 IN BRX
; 5849 ; (AC) IN AR, (AC+1)*2 IN ARX
; 5850
U 0250, 0061,0602,2604,0000,0022,1327,0000 ; 5851 =00* AR_AR+BR LONG,AD FLAGS,EXIT DBL ;DADD
; 5852
U 0252, 0061,5102,2600,0000,0022,1327,0000 ; 5853 AR_AR-BR LONG,AD FLAGS,EXIT DBL ;DSUB
; 5854
; 5855 MQ_SHIFT,AR_0S,ARX_0S, ;DMUL, USE AC1 AS INITIAL M'IER
U 0254, 0350,3441,2210,0301,0000,0010,0756 ; 5856 FE_#,#/-18.,J/DMULT ;SETUP STEP COUNT
; 5857 =
; 5858
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 8
; ARITH.MIC[4,30] 17:12 9-Aug-84 DOUBLE INTEGER ARITHMETIC -- DADD, DSUB, DMUL, DDIV
; 5859 ;HERE FOR DOUBLE WORD MULTIPLY
; 5860
; 5861 =00*
U 0350, 0260,3401,0010,4001,0000,0070,0000 ; 5862 DMULT: AD/0S,MUL,CALL.M,J/MULP ;BEGIN MULTIPLY
U 0354, 0356,0602,2600,0000,0020,0027,0000 ; 5863 =10* AR_AR+BR LONG ;CANCEL EFFECTS OF LOW BIT 0
U 0356, 1556,3723,2010,0000,1000,0010,0000 ; 5864 MQ_AR,AR_MQ ;EXCH HI AND LOW PRODUCT WORDS
; 5865
; 5866 ;HERE AFTER 1ST CALL ON MPY SUBR. SAVE LOW WORD OF PROD, GET HIGH M'IER
; 5867
U 1556, 1572,4001,0005,0000,0000,1010,0000 ; 5868 AC3_AR ;LOW WORD OF PRODUCT
U 1572, 1060,3200,2000,0000,0020,0010,0000 ; 5869 AR_AC0 ;GET HIGH M'IER WORD
; 5870 =000 MQ_AR,AR_MQ,CALL, ;DIVE IN AGAIN
U 1060, 1546,3723,2010,0301,1000,0050,0756 ; 5871 FE_#,#/-18.,J/MULREE ;CONTINUE THE MULTIPLY
U 1064, 1066,3602,0004,0000,0020,5510,0000 ; 5872 =100 GEN AR*BR,AD/AND,SKP AD0 ;SKP IF M'IER, M'CAND, & PROD NEG
; 5873 =110
; 5874 DMUL1: AC0_AR,AR_SIGN,
U 1066, 1576,5441,2000,0302,0020,1016,0043 ; 5875 SC_#,#/35.,J/DMUL2 ;STORE HIGH WORD OF PRODUCT
U 1067, 1066,0001,0000,0000,0000,1110,0420 ; 5876 SET AROV,J/DMUL1
; 5877
; 5878 ;MULTIPLY NOW COMPLETE, STORE RESULTS WITH PROPER SIGN IN BIT 0
; 5879
U 1576, 1611,0001,4040,0000,0000,0010,0000 ; 5880 DMUL2: BR/AR,AR_SHIFT ;GET 2ND WITH SIGN, SAVE SIGN
U 1611, 1612,0001,4301,0000,2000,1010,0000 ; 5881 AC1_AR,AR_ARX,ARX/MQ ;READY TO BUILD 3RD WORD
U 1612, 1616,3242,2400,0000,0000,0012,0000 ; 5882 ARX_SHIFT,AR_BR,MQ_MQ*2 ;SIGNIFICANT BITS TO ARX, SIGN TO AR
; 5883 AR_SHIFT,ARX_AC3, ;3RD WORD IN AR, GET LOW
U 1616, 1622,3240,4215,0000,0020,0012,0000 ; 5884 MQ_MQ*.25 ;EXTRA PROD BIT TO MQ 35
U 1622, 0560,3721,2004,0000,0000,1010,0000 ; 5885 AC2_AR,AR_MQ ;,I FETCH WHEN TIMING FIXED
; 5886 =0* ARX_SHIFT,AR_BR,I FETCH, ;LOW WORD AND SIGN READY
U 0560, 2450,3202,2400,0000,0217,0050,0000 ; 5887 CALL,J/SHIFT ; GET LOW WORD TO AR
U 0562, 0222,4001,0005,0000,0000,1010,0000 ; 5888 STRAC3: AC3_AR,FINISH ;GANZ GETAN
; 5889
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 9
; ARITH.MIC[4,30] 17:12 9-Aug-84 DOUBLE INTEGER ARITHMETIC -- DADD, DSUB, DMUL, DDIV
; 5890 ;HERE FOR DOUBLE INTEGER DIVISION
; 5891 ;AR HAS (E), ARX HAS (AC3), AND MQ IS CLEAR
; 5892
U 1632, 1636,3203,4507,4402,2000,1010,0166 ; 5893 DDIV0: T0_AR,AR_ARX,ARX_ARX*8,SC_1 ;SAVE (E) IN T0
; 5894 BRX/ARX,ARX_SHIFT, ;AC3 3-35 TO BRX, 1-2 TO ARX
U 1636, 1640,3200,2424,0302,0020,0010,0002 ; 5895 AR_AC2,SC_#,#/2 ;GET AC2 READY
; 5896 AR_SHIFT,BR/AR, ;AC2 BITS 2-35 WITH AC3 1-2
U 1640, 1642,3240,4241,0000,0020,3610,0000 ; 5897 ARX_AC1,VMA_VMA+1 ;READY TO GET (E+1)
; 5898 BR/AR,AR_ARX,ARX_BR*2, ;LOW DOUBLE WORD NOW IN BR LONG
U 1642, 1644,3241,4240,4403,2000,0010,0000 ; 5899 SC_1,FE_1
U 1644, 2162,3240,2400,0000,0020,5510,0000 ; 5900 ARX_SHIFT,AR_AC0,SKP AD0 ;HIGH DOUBLEWORD IN AR LONG
; 5901 =0
; 5902 DDIV1: BR_AR LONG,AR_BRX,ARX_BR, ;HI POS D'END TO BR
U 2162, 0724,3202,6260,0000,0012,0010,0000 ; 5903 LOAD AR,J/DDIV2 ;GET LOW D'SOR READY
; 5904 BR_AR LONG,AR_-BR LONG, ;NEGATE LOW D'END
U 2163, 2174,5162,2660,3401,0040,5427,0000 ; 5905 FE_-1,SKP CRY0 ;TEST FOR CARRY PROPAGATION
U 2174, 2162,2502,2660,0000,0000,0010,0000 ; 5906 =0 BR_AR LONG,AR_BR COMP LONG,J/DDIV1
U 2175, 2162,5162,2660,0000,0020,0027,0000 ; 5907 BR_AR LONG,AR_-BR LONG,J/DDIV1 ;FINISH NEGATION OF D'END
; 5908 =0*
; 5909 DDIV2: T1_AR,MQ_ARX,ARX_0S, ;LOWEST D'END TO T1, NEXT TO MQ
U 0724, 1023,3441,0217,0000,2000,1050,0171 ; 5910 CALL,J/XFERW ; WAIT FOR (E+1)
U 0726, 2200,3240,2407,0000,0040,5110,0166 ; 5911 ARX_SHIFT,AR_T0,SKP FE0 ;DIVISOR NOW IN AR LONG
; 5912 =0 AR_BR LONG,BR_AR LONG, ;PUT OPERANDS IN PLACE FOR DIV
U 2200, 0253,3242,2660,0000,0020,0032,0000 ; 5913 SIGNS DISP,J/DDIV3 ;TEST D'SOR SIGN
; 5914 AR_BR LONG,BR_AR LONG,SET SR2, ;NOTE D'END NEGATIVE
U 2201, 0253,3242,2660,0000,0020,1632,0062 ; 5915 SIGNS DISP,J/DDIV3
; 5916
; 5917 ;HERE WITH THE DIVISOR IN BR LONG,
; 5918 ; THE HIGH PART OF THE MAGNITUDE OF THE DIVIDEND IN AR LONG,
; 5919 ; AND THE LOW PART OF THE MAGNITUDE OF THE DIVIDEND IN MQ AND T1
; 5920 ; SKIP IF DIVISOR NEGATIVE, & CHECK FOR NO-DIVIDE.
; 5921 =1011
; 5922 DDIV3: AR_2(AR-BR),ARX/ADX*2,MQ_MQ*2, ;SEE IF FIRST DIVIDE STEP
U 0253, 1120,5102,5500,0000,0040,5412,0000 ; 5923 SKP CRY0,J/DDIV4 ; GENERATES A 1
U 0257, 1120,0602,5504,0000,0040,5412,0000 ; 5924 AR_2(AR+BR),ARX/ADX*2,MQ_MQ*2,SKP CRY0
; 5925 =000
U 1120, 0640,0001,0000,0301,0000,4250,0041 ; 5926 DDIV4: FE_#,#/33.,SKP BR0,CALL,J/DDVLP ;GO DO FIRST HALF OF DIVIDE
U 1121, 0213,0001,0000,0000,0217,0010,0000 ; 5927 I FETCH,J/NODIVD ;TOO MANY QUOTIENT BITS
U 1123, 1646,4001,0001,0402,0000,1010,0000 ; 5928 =011 AC1_AR,CLR SC,J/DDIV6 ;SAVE HI QUOTIENT IN AC1
U 1125, 1646,4001,0001,3402,0000,1010,0000 ; 5929 =101 AC1_AR,SC_1S ;SET FLAG FOR RESUMPTION
; 5930 =
U 1646, 1144,3240,2007,0000,0020,0010,0171 ; 5931 DDIV6: AR_T1 ;GET LOWEST DIVIDEND BITS
; 5932 =100 MQ_AR,AR_MQ,CALL, ;FINISH DIVISION, GENERATING
U 1144, 0460,3721,2010,0000,1000,4750,0000 ; 5933 SKP SC0,J/DIVLP ; 35 MORE QUOTIENT BITS
U 1146, 0275,3240,2001,0000,0020,1605,0061 ; 5934 =110 AR_AC1,SR DISP,SET SR3,J/DDVX1 ;QUOTIENT NEGATIVE. NOTE
U 1147, 0275,3240,2001,0000,0020,0005,0000 ; 5935 AR_AC1,SR DISP ;HERE'S HIGH PART OF QUOTIENT
; 5936 =1101
U 0275, 1650,3202,2660,0000,0000,0010,0000 ; 5937 DDVX1: BR_AR LONG,AR_BR LONG,J/DDVX2 ;POS REMAINDER. GO STORE
U 0277, 1650,5162,2660,0000,0020,0027,0000 ; 5938 BR_AR LONG,AR_-BR LONG,J/DDVX2 ;NEGATE REMAINDER
U 1650, 1652,5401,2004,0302,0020,1016,0043 ; 5939 DDVX2: AC2_AR,AR_SIGN,SC_#,#/35.
U 1652, 0116,4001,4000,0000,0000,0005,0000 ; 5940 AR_SHIFT,SR DISP ;GET LOW WORD OF REM. TEST QUO SIGN
U 0116, 0061,3202,2505,0000,0002,1010,0000 ; 5941 =1110 AC3_AR,AR_BR,ARX/ADX*2,EXIT DBL ;GET QUOTIENT, SQUEEZE OUT HOLE
; 5942 AC3_AR,AR_-BR,ARX/ADX*2,AD LONG,;GET NEGATIVE QUOTIENT
U 0117, 0061,5162,2505,0000,0022,1027,0000 ; 5943 EXIT DBL
; 5944 .ENDIF/DBL.INT
; 5945
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 1
; FP.MIC[4,30] 17:13 9-Aug-84 SINGLE FLOATING ADD & SUB -- FAD, FADR, FSB, FSBR
; 5946 .TOC "SINGLE FLOATING ADD & SUB -- FAD, FADR, FSB, FSBR"
; 5947
; 5948 .DCODE
; 5949 .IFNOT/FPLONG
D 0130, 2000,1002 ; 5950 130: EA, J/UUO ;UFA
D 0131, 2000,1002 ; 5951 EA, J/UUO ;DFN
; 5952 .ENDIF/FPLONG
; 5953
D 0140, 4101,0704 ; 5954 140: R, FL-AC, B0/0, J/FAD
D 0141, 4000,0707 ; 5955 R, B0/0, J/FPNO
D 0142, 6200,0704 ; 5956 RW, FL-MEM, B0/0, J/FAD
D 0143, 6301,0704 ; 5957 RW, FL-BOTH,B0/0, J/FAD
; 5958
D 0144, 4101,0303 ; 5959 R, FL-AC, J/FADR
D 0145, 0101,0302 ; 5960 I, FL-AC, B0/0, J/FADRI
D 0146, 6200,0303 ; 5961 RW, FL-MEM, J/FADR
D 0147, 6301,0303 ; 5962 RW, FL-BOTH, J/FADR
; 5963
D 0150, 4500,0704 ; 5964 150: R, FL-AC, B0/1, J/FSB
D 0151, 4401,0707 ; 5965 R, B0/1, J/FPNO
D 0152, 6601,0704 ; 5966 RW, FL-MEM, B0/1, J/FSB
D 0153, 6700,0704 ; 5967 RW, FL-BOTH,B0/1, J/FSB
; 5968
D 0154, 4100,0307 ; 5969 R, FL-AC, J/FSBR
D 0155, 0500,0302 ; 5970 I, FL-AC, B0/1, J/FSBRI
D 0156, 6201,0307 ; 5971 RW, FL-MEM, J/FSBR
D 0157, 6300,0307 ; 5972 RW, FL-BOTH, J/FSBR
; 5973 .UCODE
; 5974
; 5975 .IFNOT/FPLONG
; 5976 =0****00**00
; 5977 FAD:
U 0704, 0303,0001,0000,0000,0000,1633,0001 ; 5978 FSB: SR_#,#/1,B DISP,J/FADR ;FLAG NO ROUND, GO FAD/FSB
U 0705, 1407,0001,0000,0000,0000,1610,0001 ; 5979 FMP: SR_#,#/1,J/FMPR
U 0706, 1411,4001,0000,0000,0000,1610,0001 ; 5980 FDV: SR_#,#/1,J/FDVR
U 0707, 1002,3242,2000,0000,0000,0010,0000 ; 5981 FPNO: AR_BR,J/UUO
; 5982 =
;;5983 .IF/FPLONG
;;5984 =0****00***0
;;5985 FAD:
;;5986 FSB: SR_#,#/1,B DISP,J/FADR ;FLAG TRUNCATE MODE, GO FAD
;;5987 FADL:
;;5988 FSBL: SR_#,#/2,B DISP,J/FADR ;FLAG LONG MODE
; 5989 .ENDIF/FPLONG
; 5990 =
; 5991 =0****00*010
; 5992 FADRI:
U 0302, 0303,4001,4000,0000,3000,0033,0000 ; 5993 FSBRI: AR_AR SWAP,B DISP
; 5994 FADR: FE_EXP,EXP_SIGN,SC/SCAD,
U 0303, 1656,3401,0200,0203,1000,0022,0200 ; 5995 ARX_0S,J/FAS
; 5996 =111
U 0307, 1654,3441,0200,0203,1000,0022,0200 ; 5997 FSBR: FE_EXP,SC/SCAD,EXP_SIGN,ARX_0S
U 1654, 1656,5163,7000,0000,0020,0010,0000 ; 5998 = AR_-AR,J/FAS ;NEGATE SUBTRAHEND
; 5999
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 2
; FP.MIC[4,30] 17:13 9-Aug-84 SINGLE FLOATING ADD & SUB -- FAD, FADR, FSB, FSBR
; 6000 ;FIND OPERAND WITH LARGER EXP, LEAVING IT IN BR,
; 6001 ; AND ITS EXP-1 IN FE. THE SMALLER OPERAND IS LEFT IN AR,
; 6002 ; SHIFTED RIGHT BY THE DIFFERENCE BETWEEN THE EXPONENTS -1
; 6003
U 1656, 1661,3240,2060,0000,0020,0010,0000 ; 6004 FAS: BR/AR,BRX/ARX,AR_AC0 ;SAVE MEM OP IN BR, GET AC
U 1661, 2202,4001,0000,5202,1020,5122,0200 ; 6005 SC_EXP-SC,EXP_SIGN,SKP SCAD0 ;FIND LARGER OPERAND
U 2202, 1666,3241,2040,2001,0000,0010,0000 ; 6006 =0 FE_FE+SC,BR/AR,AR_BR*2,J/FAS1 ;AC EXP .GE. MEM
; 6007 MQ_AR,SC_#+SC,#/37., ;MEM OP LARGER, SHIFT AC OP
U 2203, 2210,4001,0010,2302,1020,5110,0045 ; 6008 SKP SCAD0,J/FAS2 ;COMPUTE SHIFT AMOUNT
; 6009
U 1666, 2210,4001,0010,5302,1020,5110,0044 ; 6010 FAS1: MQ_AR,SC_#-SC,#/36.,SKP SCAD0 ;CHECK SHIFT AMOUNT
; 6011 =0
U 2210, 1671,5401,2310,0000,0020,0016,0000 ; 6012 FAS2: MQ_SHIFT,ARX/MQ,AR_SIGN,J/FAS3 ;LOW TO MQ, READY TO GET HI
; 6013 AR_SIGN,ARX_AR, ;HERE IF EXP DIFF .GT. 36
U 2211, 2212,5441,2400,2302,1020,5116,0044 ; 6014 SC_#+SC,#/36.,SKP SCAD0 ; .GT. 72?
U 2212, 1676,0001,0400,4001,0001,0010,0100 ; 6015 =0 ARX_SHIFT,MQ_0.M,FE_FE+1,J/FAS5
U 2213, 1676,4001,0400,4001,1001,0010,0100 ; 6016 ARX_AR,MQ_0.M,FE_FE+1,J/FAS5 ;SHIFTED CLEAR OUT
; 6017
; 6018 FAS3: AR_SHIFT,ARL/SH,ARX/MQ,
U 1671, 1676,4001,4300,4001,0001,0010,0104 ; 6019 MQ_0.M,FE_FE+1 ;READY TO ADD
; 6020
; 6021 FAS5: AR_(AR+2BR)*.25,ARX/ADX*.25, ;HERE FOR ADD OR SUB
U 1676, 1240,0601,7704,0000,0060,0035,0000 ; 6022 NORM,J/SNORM
; 6023
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 3
; FP.MIC[4,30] 17:13 9-Aug-84 SINGLE FLOATING MULTIPLY -- FMP, FMPR
; 6024 .TOC "SINGLE FLOATING MULTIPLY -- FMP, FMPR"
; 6025
; 6026 .DCODE
D 0160, 4100,0705 ; 6027 160: R, FL-AC, J/FMP
D 0161, 4000,0707 ; 6028 R, J/FPNO
D 0162, 6201,0705 ; 6029 RW, FL-MEM, J/FMP
D 0163, 6300,0705 ; 6030 RW, FL-BOTH,J/FMP
; 6031
D 0164, 4100,1407 ; 6032 R, FL-AC, J/FMPR
D 0165, 0100,1406 ; 6033 I, FL-AC, J/FMPRI
D 0166, 6201,1407 ; 6034 RW, FL-MEM, J/FMPR
D 0167, 6300,1407 ; 6035 RW, FL-BOTH,J/FMPR
; 6036 .UCODE
;;6037 .IF/FPLONG
;;6038 =0****00***0
;;6039 FMP: SR_#,#/1,J/FMPR ;FLAG TRUNCATE MODE
;;6040 FMPL: SR_#,#/2,J/FMPR ;LONG MODE
;;6041 =
; 6042 .ENDIF/FPLONG
; 6043 =0****00***0
U 1406, 1407,4001,4000,0000,3000,0010,0000 ; 6044 FMPRI: AR_AR SWAP
U 1407, 1712,3401,0200,0202,1000,0022,0200 ; 6045 FMPR: SC_EXP,EXP_SIGN,ARX_0S ;PREPARE M'IER FRACTION
; 6046
U 1712, 0362,3240,2010,0301,1020,0010,0762 ; 6047 = MQ_AR,AR_AC0,FE_#,#/-14. ;M'IER TO MQ, GET M'CAND
; 6048 =01* SC_EXP+SC,EXP_SIGN, ;SEPARATE M'CAND FRACTION FROM EXP
U 0362, 1544,4001,0000,2202,1000,0062,0200 ; 6049 CALL.S,J/MULSUB ;AND BEGIN MULTIPLY
U 0366, 1240,3203,0000,2301,0040,0035,0600 ; 6050 =11* FE_#+SC,#/-200,NORM AR,J/SNORM
; 6051 =
; 6052
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 4
; FP.MIC[4,30] 17:13 9-Aug-84 SINGLE FLOATING DIVIDE -- FDV, FDVR
; 6053 .TOC "SINGLE FLOATING DIVIDE -- FDV, FDVR"
; 6054
; 6055 .DCODE
D 0170, 4100,0706 ; 6056 170: R, FL-AC, J/FDV
D 0171, 4101,0707 ; 6057 R, FL-AC, J/FPNO
D 0172, 6201,0706 ; 6058 RW, FL-MEM, J/FDV
D 0173, 6300,0706 ; 6059 RW, FL-BOTH,J/FDV
; 6060
D 0174, 4101,1411 ; 6061 R, FL-AC, J/FDVR
D 0175, 0101,1410 ; 6062 I, FL-AC, J/FDVRI
D 0176, 6200,1411 ; 6063 RW, FL-MEM, J/FDVR
D 0177, 6301,1411 ; 6064 RW, FL-BOTH,J/FDVR
; 6065 .UCODE
;;6066 .IF/FPLONG
;;6067 =0****00***0
;;6068 FDVL: FE_EXP-1,EXP_SIGN,ARX+MQ_0.S,J/FDVL1
;;6069 FDV: SR_#,#/1,J/FDVR ;FLAG TRUNCATE MODE
;;6070 =
; 6071 .ENDIF/FPLONG
; 6072 =0****00***0
U 1410, 1411,0001,4000,0000,3000,0010,0000 ; 6073 FDVRI: AR_AR SWAP
U 1411, 1160,4001,0000,4202,1000,0022,0340 ; 6074 FDVR: SC_EXP+1,EXP_SIGN,ARX+MQ_0.S ;SETUP DIVISOR
; 6075 =
; 6076 =000 BR/AR,BRX/ARX, ;DIVISOR TO BR, CLR BRX
; 6077 AR_AC0,FE_#,#/27., ;GET DIVIDEND, STEP COUNT
U 1160, 2222,3240,2060,0301,0020,5550,0033 ; 6078 SKP AD0,CALL,J/FDVCHK
; 6079
U 1162, 0462,0001,0000,0000,0000,4250,0000 ; 6080 =10 SKP BR0,CALL,J/DIV- ;OK, BEGIN DIVISION
U 1163, 0066,4001,0000,0000,0000,1110,0624 ; 6081 SET FL NO DIV,J/IFNOP ;NO DIVIDE, SORRY
; 6082
; 6083 ;RETURN HERE WITH QUOTIENT IN ARX. WE TOOK 29 DIVIDE STEPS, TO
; 6084 ; GUARANTEE HAVING A ROUNDING BIT EVEN IF THE FIRST STEP GENERATES
; 6085 ; A QUOTIENT BIT OF ZERO. THEREFORE, THE MSB OF QUOTIENT IS EITHER
; 6086 ; IN BIT 7 OR 8, AND NORM WILL FIND IT IN ONE STEP.
; 6087
; 6088 =110 AR_ARX,FE_FE+#,#/2, ;NEGATIVE QUOTIENT
U 1166, 2220,7142,4000,2031,2040,5410,0002 ; 6089 SKP BR EQ,J/FDVNEG ;CHECK FOR MORE QUO TO COME
; 6090 AR_ARX*.25,ARX_ARX*.25,NORM, ;JUNK IS 36 BITS AWAY FROM MSB
U 1167, 1240,3713,7700,2031,0040,0035,0002 ; 6091 FE_FE+#,#/2,J/SNORM ;POS QUOTIENT, NORMALIZE
; 6092 =
; 6093 ;HERE IF QUOTIENT SHOULD BE NEGATIVE, WITH POSITIVE FORM IN
; 6094 ; AR AND ARX. SKIP IF REMAINDER (IN BR) IS ZERO. IN THIS CASE,
; 6095 ; WE CLEAR ARX, BECAUSE AR CONTAINS THE ENTIRE QUOTIENT.
; 6096 ; IF, HOWEVER, THE REMAINDER IS NOT ZERO, WE INFER
; 6097 ; THAT AN INFINITE PRECISION DIVISION WOULD GENERATE MORE ONES
; 6098 ; IN THE QUOTIENT. IF THAT IS THE CASE, WE LEAVE ARX WITH THE
; 6099 ; QUOTIENT, SO THE NEGATION PROCESS WILL WORK CORRECTLY TO RETURN
; 6100 ; THE HIGH ORDER PART OF THE INFINITE-PRECISION NEGATIVE QUOTIENT.
; 6101 =0
U 2220, 1240,3703,7700,0000,0040,1635,0064 ; 6102 FDVNEG: SET SR1,AR_AR*.25 LONG,NORM,J/SNORM
U 2221, 2220,3401,0200,0000,0000,0010,0000 ; 6103 ARX_0S,J/FDVNEG ;REMAINDER WENT TO ZERO
; 6104
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 5
; FP.MIC[4,30] 17:13 9-Aug-84 SINGLE FLOATING DIVIDE -- FDV, FDVR
; 6105 ;HERE FOR FDVL
; 6106
;;6107 .IF/FPLONG
;;6108
;;6109 ;FDVL: FE_EXP-1,EXP_SIGN,CLR ARX+MQ
;;6110 =000
;;6111 FDVL1: AR_AC1,BR_AR LONG, ;SAVE DIVISOR IN BR LONG
;;6112 SC_#,#/9.,CALL ;READY TO SHIFT LOW DIVIDEND
;;6113 ARX_SHIFT,AR_AC0, ;DIVIDEND IN PLACE
;;6114 SC_FE,FE_#,#/24., ;EXP TO SC, STEP COUNT TO FE
;;6115 SKP AD0,J/FDVCHK ;GO CHECK FOR NO DIVIDE
;;6116 =010 CALL,SKP BR0,J/FDVL2 ;GO BEGIN DIVIDE
;;6117 SET FL NO DIV,J/IFNOP ;CAN'T DIVIDE, ABORT
;;6118
;;6119 =110 AR_AC0,SR_#,#/5, ;NEG QUO, FLAG TRUNCATE MODE
;;6120 SR DISP,J/FDVL4 ; WAS IT 26 OR 27 STEPS?
;;6121 AR_AC0,SR_#,#/1, ;POS QUO
;;6122 SR DISP,J/FDVL4
;;6123 =
;;6124
;;6125
;;6126 ;COME HERE TO START THE DIVISION. ON THE FIRST STEP, WE CHECK
;;6127 ; TO SEE WHETHER A 1 HAS BEEN GENERATED IN THE QUOTIENT. IF SO,
;;6128 ; 26 ADDITIONAL STEPS WILL GENERATE THE FULL 27 SIGNIFICANT BITS
;;6129 ; OF THE QUOTIENT. IF NOT, 27 STEPS ARE REQUIRED.
;;6130
;;6131 =0
;;6132 FDVL2: DIVIDE,AR_2(AR-BR),ARX/ADX*2,J/FDVL3 ;FIRST DIVIDE STEP
;;6133 DIVIDE,AR_2(AR+BR),ARX/ADX*2 ; DOES IT GENERATE A 1?
;;6134 =00
;;6135 FDVL3: DISP/DIV,MQ/MQ*2, ;NO, TAKE AN EXTRA DIVIDE STEP
;;6136 AR_2(AR+BR),ARX/ADX*2,J/DIVLP ; WITHOUT COUNTING FE
;;6137 SR_1,SC_#+SC,#/1,J/DIV- ;YES, 27 STEPS WILL NORMALIZE QUO
;;6138 DISP/DIV,MQ/MQ*2,AR_2(AR-BR),ARX/ADX*2,J/DIVLP
;;6139 SR_1,SC_#+SC,#/1,J/DIV+
;;6140
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 6
; FP.MIC[4,30] 17:13 9-Aug-84 SINGLE FLOATING DIVIDE -- FDV, FDVR
;;6141 ;WE COME HERE AFTER DOING THE DIVISION, EITHER 26 OR 27 STEPS
;;6142 ; AS REQUIRED TO GENERATE A NORMALIZED QUOTIENT FROM NORMALIZED
;;6143 ; OPERANDS. NOW FIGURE OUT WHAT EXPONENT THE REMAINDER SHOULD HAVE.
;;6144
;;6145 =0
;;6146 FDVL4: SC_EXP-#,#/27., ;DIVIDEND EXP-27
;;6147 AR_BR,SKP AR0,J/FDVL6 ;GET REMAINDER, TEST D'END SIGN
;;6148 SC_EXP-#,#/26., ;D'END EXP-26
;;6149 AR_BR,SKP AR0
;;6150
;;6151 ;HERE WITH REMAINDER IN AR, ITS EXP IN SC
;;6152 ; SKIP IF D'END (AND THEREFORE REM) NEGATIVE.
;;6153
;;6154 =0
;;6155 FDVL6: EXP_SC,BYTE DISP, ;TEST FOR UNDERFLOW
;;6156 SKP AR EQ,J/FDVL7 ; OR REM =0
;;6157 AR_-BR,SKP CRY0, ;NEGATE REM, CHECK =0
;;6158 GEN SC,BYTE DISP ; AND LOOK FOR EXP UFLO
;;6159 =110 EXP_-SC-1,J/FDVL7 ;ONE'S COMPLEMENT EXP
;;6160 AR_0S ;REM =0 OR EXP UFLO
;;6161 =110
;;6162 FDVL7: AC1_AR,ARX+MQ_0.M, ;SAVE REMAINDER
;;6163 AR_MQ,ARL/AD,J/SNR2 ;GO NORMALIZE QUOTIENT
;;6164 AR_0S,J/FDVL7
; 6165 .ENDIF/FPLONG
; 6166
; 6167
; 6168 ;SUBR TO CHECK FOR FLOATING NO DIVIDE
; 6169 ; ENTER WITH SKP ON DIVIDEND SIGN, IN AR LONG, WITH
; 6170 ; DIVISOR EXP IN SC, DIVISOR IN BR
; 6171
; 6172 =0
U 2222, 2240,4001,0000,5202,1000,4222,0200 ; 6173 FDVCHK: SC_EXP-SC,EXP_SIGN,SKP BR0,J/FDVCK1
U 2223, 2222,5143,7700,0000,0020,0027,0000 ; 6174 AR_-AR LONG,J/FDVCHK ;GET POSITIVE DIVIDEND
; 6175 =0
; 6176 FDVCK1: GEN AR-2BR,SKP CRY0, ;TEST FOR NO DIVIDE
U 2240, 0002,5101,0004,2302,0040,5403,0177 ; 6177 SC_#+SC,#/177,RETURN2 ;AND CORRECT EXP
; 6178 GEN AR+2BR,SKP CRY0, ;SAME TEST, NEG DIVISOR
U 2241, 0002,0601,0000,2302,0040,5403,0177 ; 6179 SC_#+SC,#/177,RETURN2 ;AND SAME EXP CORRECTION
; 6180
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 7
; FP.MIC[4,30] 17:13 9-Aug-84 UFA, DFN, FSC, IBP
; 6181 .TOC "UFA, DFN, FSC, IBP"
; 6182 ;ENTER WITH (E) IN AR
;;6183 .IF/FPLONG
;;6184 .DCODE
;;6185 130: R, J/UFA
;;6186 RPW, J/DFN
;;6187 .UCODE
;;6188 =0****00***0
;;6189 DFN: FE_AR0-8,AR0-8_#,#/0, ;SAVE LOW EXP, CLR SO CAN
;;6190 ARX_0S,J/DFN1 ; DETECT FRACTION = 0
;;6191 UFA: FE_EXP,SC/SCAD,EXP_SIGN,ARX_0S
;;6192 =
;;6193 =000 BR_AR LONG,AR_AC0,CALL,J/EXPD
;;6194 =100 ARX_AR,AR_SIGN,ARL/AD, ;READY TO UNNORMALIZE SMALLER OP
;;6195 CALL.M,J/SHIFT
;;6196 AR_SIGN,ARX/AD ;LOST SMALLER OP, USE ITS SIGN
;;6197 AR_AR+BR,SKP AD NE, ;IS RESULT SIGNIFICANT?
;;6198 SC_FE,I FETCH
;;6199 =
;;6200 =0 AC1_AR,J/FINI ;NO, CLEAR RESULT AC
;;6201 SKP EXP NE,BR/AR ;IS RIGHT SHIFT REQ'D?
;;6202 =0 SKP AR0,FETCH WAIT,J/UFA4 ;NO, IS RESULT NEG?
;;6203 AR_BR*.5,GEN FE-#,#/377,SKP SCAD NE,FETCH WAIT
;;6204 =0 FE_-1,SET FLOV
;;6205 FE_FE+1,SC/SCAD,SKP AR0
;;6206 =0
;;6207 UFA4: AR0-8_SC,J/STAC1 ;POS, PUT IN EXP STRAIGHT
;;6208 AR0-8_-SC-1,J/STAC1 ;NEG, USE COMPLEMENT OF EXP
;;6209
;;6210
;;6211 DFN1: AR_-AR,SKP CRY0 ; LOW FRACTION =0?
;;6212 =0 AR0-8_FE,STORE, ;STORE LOW WORD BACK TO MEM
;;6213 ARX_AC0 COMP,J/STMAC ; GET COMPLEMENTED HIGH WORD
;;6214 AR0-8_FE,STORE, ;LOW WORD WAS ZERO, INSTALL EXP
;;6215 ARX_-AC0,J/STMAC ; GET NEGATED HIGH WORD
; 6216 .ENDIF/FPLONG
; 6217
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 8
; FP.MIC[4,30] 17:13 9-Aug-84 UFA, DFN, FSC, IBP
; 6218 .DCODE
D 0132, 0101,1413 ; 6219 132: I, FL-AC, J/FSC
D 0133, 4600,1412 ; 6220 R, B/6, J/IBP ;ADJBP IF AC .NE. 0
; 6221 .UCODE
; 6222 =0****00***0
; 6223 .IF/ADJBP
; 6224 .IF/OWGBP
U 1412, 2242,4001,0000,0000,0000,5010,0000 ; 6225 IBP: SKP PC SEC0,J/IBP0 ;[251] CAN IT BE A OWGBP ?
;;6226 .IFNOT/OWGBP
;;6227 IBP: SKP AC#0,J/IBP1 ;IS IT IBP, OR ADJBP?
; 6228 .ENDIF/OWGBP
;;6229 .IFNOT/ADJBP
;;6230 IBP: J/IBP2
; 6231 .ENDIF/ADJBP
; 6232
; 6233
; 6234 ;FSC
; 6235 ;ENTER WITH E IN AR
; 6236 =0****00****
; 6237 FSC: SC_EA,ARX+MQ_0.M,
U 1413, 1724,3200,2000,0002,0021,0013,0142 ; 6238 AR_AC0,ARL/AD
U 1724, 1242,4001,0000,2201,1000,0022,0200 ; 6239 = FE_EXP+SC,EXP_SIGN,J/SNR2 ;NORMALIZE SCALED RESULT
; 6240
; 6241 .IF/OWGBP
; 6242 =0
U 2242, 2250,0001,0000,5132,0020,5110,0045 ; 6243 IBP0: SC_P-#,#/45,SKP SCAD0,J/IBP3 ;TREAT THIS AS A OWGBP ?
U 2243, 1720,4001,0000,0000,0000,4610,0000 ; 6244 SKP AC#0,J/IBP1 ;IS IT IBP, OR ADJBP?
; 6245 =0
U 2250, 2462,0001,0040,0000,0000,4610,0000 ; 6246 IBP3: BR/AR,SKP AC#0,J/GIBP ;YES, CHECK FOR ADJBP
U 2251, 1720,4001,0000,0000,0000,4610,0000 ; 6247 SKP AC#0,J/IBP1 ;NO, TREAT AS BEFORE, ADJBP?
; 6248 .ENDIF/OWGBP
; 6249
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 9
; FP.MIC[4,30] 17:13 9-Aug-84 FIX, FIXR, FLTR, EXTEND
; 6250 .TOC "FIX, FIXR, FLTR, EXTEND"
; 6251
; 6252 .DCODE
D 0122, 4001,1416 ; 6253 122: R, J/FIX ;UNROUNDED
D 0123, 4000,1417 ; 6254 R, J/EXTEND ;EXTENDED INSTRUCTION SET
; 6255
D 0126, 4001,1415 ; 6256 126: R, J/FIXR ;ROUNDED
D 0127, 4101,1414 ; 6257 R, FL-AC, J/FLTR
; 6258 .UCODE
; 6259 ;FLTR
; 6260 ;ENTER WITH (E) IN AR
; 6261 =0****00***0
; 6262 FLTR: FE_#,#/277,ARX_AR,SKP AR0, ;BINARY POINT TO RIGHT OF ARX
U 1414, 1240,5401,2400,0301,1020,4516,0277 ; 6263 AR_SIGN,J/SNORM ; SIGN EXTENDED. GO NORMALIZE
; 6264
; 6265 ;FIX AND FIXR
; 6266 ;ENTER WITH (E) IN AR
; 6267 ; FIX AND FIXR DIFFER ONLY IN THE ROUNDING CRITERION:
; 6268 ;FIXR ADDS 1 TO THE INTEGER PART IF THE FRACTION PART IS ONE-HALF
; 6269 ;OR GREATER. FIX DROPS THE FRACTION PART OF POSITIVE NUMBERS, BUT ADDS
; 6270 ;1 TO THE INTEGER PART OF NEGATIVE NUMBERS IF THE FRACTION PART IS NOT
; 6271 ;ALL ZERO.
; 6272 ; THIS IS IMPLEMENTED BY CHOOSING A FRACTION (THE ROUNDING
; 6273 ;CONSTANT) TO ADD TO THE INPUT, SUCH THAT A CARRY WILL OCCUR INTO THE
; 6274 ;INTEGER PART UNDER THE APPROPRIATE CONDITIONS. FOR FIXR, THE ROUNDING
; 6275 ;CONSTANT IS EXACTLY ONE-HALF. FOR FIX, IT IS ZERO ON POSITIVE INPUT,
; 6276 ;OR THE LARGEST POSSIBLE FRACTION (ALL 1S) ON NEGATIVE INPUT.
; 6277
; 6278 =0****00****
; 6279 FIXR: FE_EXP-#,#/244,SKP SCAD0, ;GET BINARY POINT POSITION
U 1415, 2252,4041,0700,5231,0020,5110,0244 ; 6280 ARX_1B1,J/FIX1 ;GET ROUNDING CONSTANT
; 6281 =
; 6282 =0****00***0
; 6283 FIX: FE_EXP-#,#/244,SKP SCAD0, ;GET BINARY POINT POSITION
U 1416, 2252,5441,0200,5231,0020,5116,0244 ; 6284 ARX_AR SIGN,J/FIX1 ;SET ROUNDING CONSTANT, GO FIX
; 6285
; 6286 .IF/EXTEND
;;6287 .IFNOT/XADDR
;;6288 .IF/MODEL.B ;[246]
;;6289 EXTEND: FE_#+AR0-8,#/-32,SKP SCAD0, ;VALID EXTENDED OPERATION?
;;6290 ARX_AR,AR_BRX,J/EXT1 ; OPR TO ARX, AC TO AR
;;6291 .IFNOT/MODEL.B
;;6292 EXTEND: FE_#+AR0-8,#/-20,SKP SCAD0, ;[246] VALID EXTENDED OPERATION?
;;6293 ARX_AR,AR_BRX,J/EXT1 ;[246] OPR TO ARX, AC TO AR
;;6294 .ENDIF/MODEL.B ;[246]
; 6295 .IF/XADDR
; 6296 EXTEND: SC_#+AR0-8,#/-32,SKP SCAD0, ;VALID EXTENDED OPERATION?
U 1417, 2634,3202,2400,2322,1020,5110,0746 ; 6297 ARX_AR,AR_BR,J/EXTF1 ; OPR TO ARX, AC TO AR
; 6298 .ENDIF/XADDR
;;6299 .IFNOT/EXTEND
;;6300 EXTEND: AR_BR,J/UUO
; 6301 .ENDIF/EXTEND
; 6302 =
; 6303
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 10
; FP.MIC[4,30] 17:13 9-Aug-84 FIX, FIXR, FLTR, EXTEND
; 6304 ;HERE FOR FIX. CONVERT FLOATING TO INTEGER
; 6305
; 6306 =0
U 2252, 0066,4001,0000,0000,0000,1110,0420 ; 6307 FIX1: SET AROV,J/IFNOP ;CAN'T DO IT, GIVE UP
U 2253, 1726,3721,0540,0000,0000,0410,0000 ; 6308 BR/AR,CLR AR,ARX_ARX*2 ;ROUNDING CONSTANT READY IN ARX
; 6309 BR_AR LONG,AR_BR,CLR ARX, ;MANTISSA TO AR LONG
U 1726, 1731,3242,2060,0302,0000,0510,0011 ; 6310 SC_#,#/9. ;READY TO SHIFT OFF EXPONENT
; 6311 ARX_SHIFT,AR_SIGN, ;MANTISSA LEFT ALIGNED IN ARX
U 1731, 2270,5441,2400,2032,0020,5116,0044 ; 6312 SC_FE+#,#/36.,SKP SCAD0 ;ANY INTEGER BITS?
; 6313 =0 MQ_SHIFT, ;YES, PUT THEM IN MQ
; 6314 AR_ARX (ADX),CLR ARX, ;SHIFT MANTISSA LEFT 36 PLACES
U 2270, 1735,3701,6010,0000,0217,0510,0000 ; 6315 I FETCH,J/FIX2 ;AND PREFETCH NEXT
U 2271, 0074,3401,2000,0000,0217,0010,0000 ; 6316 AR_0S,I FETCH,J/STORAC ;ALL SIGNIFICANCE LOST
U 1735, 1742,3723,2400,0000,0000,0010,0000 ; 6317 FIX2: ARX_SHIFT,AR_MQ ;INTEGER IN AR, FRACTION IN ARX
U 1742, 0065,0602,2000,0000,0020,0027,0000 ; 6318 AR_AR+BR,AD LONG,J/STAC ;ROUND AND STORE
; 6319
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 11
; FP.MIC[4,30] 17:13 9-Aug-84 SINGLE PRECISION FLOATING NORMALIZATION
; 6320 .TOC "SINGLE PRECISION FLOATING NORMALIZATION"
; 6321
; 6322 ;HERE TO NORMALIZE SINGLE PRECISION RESULTS
; 6323 ;SR2-3 TELL HOW TO STORE RESULTS:
; 6324 ;XX00 ... ROUND, SINGLE PRECISION
; 6325 ;XX01 ... TRUNCATE, SINGLE PRECISION
; 6326 ;XX10 ... LONG MODE (IMPLIES TRUNCATION)
; 6327 ;IN ADDITION, THIS CODE SETS SR 1 IF ANSWER IS NEGATIVE, SO X1YZ
; 6328 ; CORRESPONDS TO X0YZ EXCEPT THAT THE RESULT MUST BE NEGATED.
; 6329
; 6330 ;DISPATCH TO SNORM WITH "DISP/NORM,AR/AD*.25"
; 6331 ; THUS THE 8 POSSIBILITIES ARE:
; 6332 ;SNORM AD=0 AR=0 EITHER ANSWER IS ZERO, OR MSB IS IN ARX
; 6333 ;SNORM+1 AD0 AR NEG RESULT IS NEG. MAKE POS, TRY AGAIN
; 6334 ;SNORM+2 AD1-6 AR3-8 MSB TOO FAR LEFT, SHIFT RIGHT & RETRY
; 6335 ;SNORM+3 AD7 AR9 RESULT IS CORRECTLY NORMALIZED
; 6336 ;SNORM+4 AD8 AR10 SHIFT LEFT ONCE FOR NORMALIZATION
; 6337 ;SNORM+5 AD9 AR11 SHIFT LEFT 2 PLACES
; 6338 ;SNORM+6 AD10 AR12 SHIFT LEFT THRICE
; 6339 ;SNORM+7 AD11-35 AR13-35 SHIFT LEFT A LOT, TRY AGAIN
; 6340
; 6341 =000
; 6342 SNORM: AR_ARX,ARL/SH,SKP ARX NE, ;AR IS ZERO, GET ARX
U 1240, 2300,3713,4000,0000,2041,5410,0044 ; 6343 ARX_0.M,J/SNZERO
U 1241, 1240,5143,7700,0000,0060,1635,0064 ; 6344 NORM -AR,SET SR1,J/SNORM ;REMEMBER NEGATIVE, GO POSITIVE
; 6345 SNR2: AR_AR*.25 LONG,FE_FE+#,#/2, ;SHIFT RIGHT,
U 1242, 1240,3701,7700,2031,0040,0035,0002 ; 6346 NORM,J/SNORM ;TRY AGAIN
U 1243, 0024,0001,0000,0000,0000,0005,0000 ; 6347 SR DISP,J/SROUND ;AD7 -> AR9, IS ROUND REQ'D?
; 6348 AR_AR*2 LONG,FE_FE-1, ;AD8 -> AR10, ONCE LEFT AND DONE
U 1244, 0024,3701,5500,3001,0000,0005,0000 ; 6349 SR DISP,J/SROUND
; 6350 AR_AR*4 LONG,FE_FE-#,#/2, ;AD9 -> AR11
U 1245, 0024,3243,2600,5031,0000,0005,0002 ; 6351 SR DISP,J/SROUND
; 6352 AR_AR*8 LONG,FE_FE-#,#/3, ;AD10 -> AR12
U 1246, 0024,3243,5500,5031,0000,0005,0003 ; 6353 SR DISP,J/SROUND
;;6354 .IFNOT/SNORM.OPT
;;6355 SKP AR NE,INH CRY18,SC_#,#/7 ;LOOK FOR AR13-17
;;6356 =0 SC_#,#/13. ;LH IS 0. SHIFT FARTHER
;;6357 MQ_SHIFT,AR_ARX (ADX),CLR ARX, ;HIGH TO MQ, GET READY FOR LOW
;;6358 FE_FE-SC ; ADJUST EXPONENT
;;6359 ARX_SHIFT,AR_MQ,J/SNR2 ;FRACTION REPOSITIONED. GO AGAIN
;;6360
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 12
; FP.MIC[4,30] 17:13 9-Aug-84 SINGLE PRECISION FLOATING NORMALIZATION
;;6361 ;HERE IS THE FASTER VERSION OF LONG NORMALIZATION SHIFTS,
;;6362 ; WHICH TAKES FOUR WORDS MORE BUT IS A BIT QUICKER IN THE
;;6363 ; INTERMEDIATE NORMALIZATION CASES.
;;6364
; 6365 .IF/SNORM.OPT
; 6366 ADA EN/0S,ADB/AR*4,AD/ANDCA, ;GENERATE AR*4
; 6367 AR/AD*2,ARX/ADX*2, ; AR_AR*8 LONG
; 6368 SC_#,#/12., ;READY TO SHIFT FARTHER
U 1247, 2272,3063,5500,0302,0020,5417,0014 ; 6369 GEN CRY18,SKP CRY0 ; TEST AR0-19 FOR ZERO
; 6370
; 6371 =0 AR_AR*8 LONG,BR_AR LONG, ;IT WAS IN AR13-19
U 2272, 1264,3243,5560,5031,0040,0035,0006 ; 6372 FE_FE-#,#/6,NORM,J/SN1 ; NOW IN AR10-16, AD8-14
; 6373 MQ_SHIFT,AR_ARX (ADX), ;13-19=0, SHIFT TO TRY 20-35
U 2273, 1751,3721,6010,0302,0000,0510,0012 ; 6374 CLR ARX,SC_#,#/10.
; 6375 ARX_SHIFT,AR_MQ*.25, ;REPOSITION FRACTION IN AR LONG
; 6376 FE_FE-#,#/13., ;COMPENSATE EXPONENT
U 1751, 1240,3721,7400,5031,0040,0035,0015 ; 6377 NORM,J/SNORM
; 6378 =100
; 6379 SN1: AR_BR*2 LONG,FE_FE+#,#/2, ;MSB IN AD8, SO IN BR10
U 1264, 0024,3241,2600,2031,0000,0005,0002 ; 6380 SR DISP,J/SROUND
; 6381 AR_BR*4 LONG,FE_FE+1, ;MSB IN AD9, THUS IN BR11
U 1265, 0024,3241,5500,4001,0000,0005,0000 ; 6382 SR DISP,J/SROUND
U 1266, 0024,0001,0000,0000,0000,0005,0000 ; 6383 SR DISP,J/SROUND ;AD10 -> AR9, A LUCKY GUESS
; 6384 AR_AR*8 LONG,BR_AR LONG, ;TRY SHIFTING 3 MORE
U 1267, 1264,3243,5560,5031,0040,0035,0003 ; 6385 FE_FE-#,#/3,NORM,J/SN1
; 6386 .ENDIF/SNORM.OPT
; 6387
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 13
; FP.MIC[4,30] 17:13 9-Aug-84 SINGLE PRECISION FLOATING NORMALIZATION
; 6388 ;HERE WHEN AD ENTIRELY ZERO ON NORMALIZE ATTEMPT. SKIP IF ARX
; 6389 ; IS NOT ZERO, HAVING COPIED IT TO AR (IE, LEFT SHIFT 36 PLACES).
; 6390 ; OTHERWISE, THE ENTIRE RESULT IS ZERO, SO WE STORE THAT.
; 6391 =0
; 6392 SNZERO: CLR FE,AR+ARX+MQ_0.M, ;RESULT = 0
U 2300, 0151,4001,0000,0401,0001,0005,0170 ; 6393 SR DISP,J/SRND5
; 6394 AR_AR*.25 LONG,FE_FE-#,#/34., ;HAVE MOVED LEFT 36, GO RIGHT 2
U 2301, 1240,3701,7700,5031,0040,0035,0042 ; 6395 NORM,J/SNORM ;AND TRY THAT
; 6396
; 6397
; 6398 ;WE GET HERE WITH A NORMALIZED POSITIVE FRACTION IN AR'ARX,
; 6399 ; THE CORRECTED EXPONENT IN FE, AND SR INDICATES THE PROPER SIGN
; 6400 ; FOR THE RESULT AND WHETHER THE ANSWER SHOULD BE ROUNDED,
; 6401 ; TRUNCATED, OR LONG.
; 6402
;;6403 .IF/FPLONG
;;6404 =100
; 6405 .IFNOT/FPLONG
; 6406 =1*0
; 6407 .ENDIF/FPLONG
U 0024, 0135,3401,2060,0000,0000,0010,0000 ; 6408 SROUND: BR_AR LONG,AR_0S,J/SRND2 ;PREPARE TO ROUND BY ADDING THE
; 6409 ; PART OF THE FRACTION WE WILL
; 6410 ; DISCARD (CARRY IF ARX0)
; 6411 BR_AR LONG,CLR AR,ARX_1S, ;TRUNCATE MODE
U 0025, 0131,2341,0260,0000,0000,0405,0000 ; 6412 SR DISP,J/STRNC ; HANDLING DEPENDS ON SIGN
;;6413 .IF/FPLONG
;;6414 BR_AR LONG,CLR AR,ARX_1S, ;LONG MODE
;;6415 SC_#,#/9.
;;6416 = ARX_SHIFT,SR DISP ;MASK = 0,,000777 TO ARX
;;6417 =01*
;;6418 BR_AR LONG,AR_BR LONG,J/SRND4 ;POS, TRUNCATE BY ANDING
;;6419 AR_AR+BR,ARX/ADX,BR_AR LONG, ;NEG, MUST DIDDLE
;;6420 NORM,J/SRND3 ; NORM FORCES LONG ARITH
; 6421 .ENDIF/FPLONG
; 6422
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 14
; FP.MIC[4,30] 17:13 9-Aug-84 SINGLE PRECISION FLOATING NORMALIZATION
; 6423 ;HERE TO PERFORM ROUNDING OR TRUNCATION OF SINGLE-PRECISION RESULTS,
; 6424 ; AND CHECK FOR CARRY INTO EXPONENT FIELD REQUIRING RENORMALIZATION
; 6425
; 6426 =0*1
U 0131, 0035,3242,2000,0000,0000,0510,0000 ; 6427 STRNC: AR_BR,CLR ARX,J/SRND4 ;POS TRUNCATE, GO STUFF IN EXP
U 0135, 0034,0602,2000,0000,0060,0535,0000 ; 6428 SRND2: AR_AR+BR,NORM,CLR ARX ;NORM FORCES LONG ARITH
; 6429 ; SO THIS ADDS ARX TO BR'BRX
; 6430 =1*0
U 0034, 0035,0303,7000,4001,0020,0010,0000 ; 6431 SRND3: AR_AR*.5,FE_FE+1 ;RENORMALIZE
; 6432 SRND4: EXP_FE TST,SR DISP, ;STUFF EXP, CHECK NEG OR LONG
U 0035, 0151,3502,0600,0000,2000,0705,0410 ; 6433 ARX_ARX*BRX,AD/ANDCB ;CLEAR TRUNCATED FRACTION
; 6434
; 6435 ;HERE TO STORE RESULT AS A FUNCTION OF SINGLE OR LONG PRECISION
; 6436 ; AND POSITIVE OR NEGATIVE...
;;6437 .IF/FPLONG
;;6438 =001
; 6439 .IFNOT/FPLONG
; 6440 =0*1
; 6441 .ENDIF/FPLONG
U 0151, 0066,4001,0000,0000,0005,1633,0000 ; 6442 SRND5: SR_0,B WRITE,J/ST6 ;POS & NOT LONG
;;6443 .IF/FPLONG
;;6444 SLNG3: AC0_AR,AR_0S,SC_#,#/27.,J/SLNG4 ;STORE HIGH PART OF LONG ANS
; 6445 .ENDIF/FPLONG
U 0155, 0066,5143,7000,0000,0025,1633,0000 ; 6446 AR_-AR,SR_0,B WRITE,J/ST6 ;NEG & NOT LONG
;;6447 .IF/FPLONG
;;6448 AR_-AR LONG,J/SLNG3 ;LONG NEG, MAKE IT SO
;;6449
;;6450 SLNG4: AR_SHIFT,I FETCH
;;6451 AR0-8_FE-SC,BYTE DISP, ;TEST FOR EXP UNDERFLOW
;;6452 SKP AR EQ ; OR LOW WORD ZERO
;;6453
;;6454 =110
; 6455 .ENDIF/FPLONG
U 1753, 0136,4001,0000,0000,0000,1610,0000 ; 6456 STRAC1: SR_0,J/STAC1 ;PUT AWAY LOW WORD OF LONG RESULT
;;6457 .IF/FPLONG
;;6458 AR_0S,SR_0,J/STAC1 ;CLEAR LOW WORD IN AC1
; 6459 .ENDIF/FPLONG
; 6460
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 15
; FP.MIC[4,30] 17:13 9-Aug-84 DOUBLE FLOATING ARITHMETIC -- DFAD, DFSB, DFMP, DFDV
; 6461 .TOC "DOUBLE FLOATING ARITHMETIC -- DFAD, DFSB, DFMP, DFDV"
; 6462
; 6463 .DCODE
D 0110, 4001,1500 ; 6464 110: R, B/0, J/DFLOAT ;DFAD
D 0111, 4200,1500 ; 6465 R, B/2, J/DFLOAT ;DFSB
D 0112, 4400,1500 ; 6466 R, B/4, J/DFLOAT ;DFMP
D 0113, 4601,1500 ; 6467 R, B/6, J/DFLOAT ;DFDV
; 6468 .UCODE
; 6469
; 6470 =0****00**0*
; 6471 DFLOAT: FE_EXP,EXP_SIGN,SC/SCAD,MQ_0.S,
; 6472 VMA_VMA+1,LOAD ARX,
U 1500, 1023,0001,0000,0203,1013,3662,0300 ; 6473 CALL.S,J/XFERW ;GET LOW WORD
U 1502, 0370,3701,0500,0000,0000,0033,0000 ; 6474 ARX_ARX*2,B DISP ;LOW BIT 0 IGNORED
; 6475 =
; 6476 =00*
U 0370, 0240,3240,5061,0000,0020,0010,0000 ; 6477 DFAS: BR_AR LONG,AR_AC1*2,J/DFAS1 ;MEM OP READY, GET AC OP
; 6478
U 0372, 0370,5163,7700,0000,0020,0027,0000 ; 6479 AR_-AR LONG,J/DFAS ;DFSB, NEGATE AND ADD
; 6480
; 6481 .IF/MODEL.B
; 6482 BR_AR LONG,GEN ARX,SKP AD NE, ;[241]HERE FOR DOUBLE FLT MUL
U 0374, 2316,3711,0060,0301,0020,5610,0756 ; 6483 FE_#,#/-18.,J/DFMP ;[241]BEGIN TEST FOR STICKY BIT
;;6484 .IFNOT/MODEL.B
;;6485 AR_AC1,BR_AR LONG, ;HERE FOR DBL FLOATING MUL
;;6486 FE_#,#/-18.,J/DFMP
; 6487 .ENDIF/MODEL.B
; 6488
; 6489 GEN AR*AC0,AD/XOR,SKP AD0, ;DFDV. WILL QUO BE NEG?
; 6490 BR_AR LONG, ;SAVE D'SOR IN BR, BRX
U 0376, 1340,3100,0060,3022,0020,5510,0000 ; 6491 SC_FE-1,J/DFDV
; 6492
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 16
; FP.MIC[4,30] 17:13 9-Aug-84 DOUBLE FLOATING ARITHMETIC -- DFAD, DFSB, DFMP, DFDV
; 6493 ;HERE FOR DFAD AND DFSB
; 6494 ; MEM OPERAND IS IN BR (NEGATED IF DFSB)
; 6495 ; FE AND SC HAVE ITS EXPONENT
; 6496
; 6497 =0*0
U 0240, 2036,3240,2400,0000,1020,0050,0000 ; 6498 DFAS1: ARX_AR,AR_AC0,CALL,J/EXPD ;AC OPERAND IN PLACE
; 6499 =1*0
; 6500 DFAS2: ARX_AR,AR_SIGN, ;GET SHIFTED HIGH WORD
; 6501 GEN #+SC,#/-36., ;IS ANY SHIFT REQUIRED?
U 0244, 2310,5401,2400,2300,1020,5116,0734 ; 6502 SKP SCAD0,J/DFAS3
; 6503 ARX_AR,AR_SIGN, ;DIFF IS > 36
U 0245, 2302,5441,2400,2302,1020,5116,0044 ; 6504 SC_#+SC,#/36.,SKP SCAD0 ;CHECK FOR >72
; 6505 .IF/MODEL.B
; 6506 =0 AC0_AR,MQ_SHIFT,AR_ARX (ADX),
U 2302, 2015,3701,6310,0000,0000,1010,0000 ; 6507 ARX/MQ,J/DFAS6 ;[241]36 < DIFF < 72
;;6508 .IFNOT/MODEL.B
;;6509 =0 AC0_AR,MQ_SHIFT,AR_ARX (ADX),
;;6510 ARX/MQ,J/DFAS4 ;36 < DIFF < 72
; 6511 .ENDIF/MODEL.B
; 6512 AR_BR,ARL/AD,ARX_BRX, ;DIFF >72
U 2303, 1326,3202,2600,0000,0001,0010,0102 ; 6513 MQ_0.M,J/DNTRY ;NORMALIZE LARGER OP
; 6514 =0
; 6515 DFAS3: AR_ARX,ARL/SH,ARX/MQ, ;NO SHIFT REQUIRED
U 2310, 2002,0001,4300,0000,2001,0010,0104 ; 6516 MQ_0.M,J/DFAS5
U 2311, 1761,4001,4000,0000,0000,0010,0000 ; 6517 AR_SHIFT ;BEGIN SHIFTING SMALLER OP
U 1761, 1772,0001,4300,0000,2000,1010,0000 ; 6518 AC0_AR,AR_ARX,ARX/MQ ;HI PART TO AC
; 6519 MQ_SHIFT,AR_ARX (ADX), ;MID PART TO MQ
U 1772, 1776,3701,6010,0000,0000,0510,0000 ; 6520 CLR ARX ;SHIFT ZEROS IN FROM RIGHT
U 1776, 2002,3200,2310,0000,0020,0010,0000 ; 6521 DFAS4: MQ_SHIFT,ARX/MQ,AR_AC0 ;ALL PIECES NOW IN PLACE
; 6522 DFAS5: AR_AR+BR,ARX/ADX,SC_#,#/4, ;HERE WHEN OPERANDS ALIGNED
U 2002, 1360,0602,2600,0302,0060,0035,0004 ; 6523 NORM,J/DNORM ;ADD, AND NORMALIZE RESULT
; 6524 .IF/MODEL.B
U 2015, 2022,3721,2010,0000,0000,0010,0000 ; 6525 DFAS6: MQ_SHIFT,AR_MQ ;[241]GET H,L, PUT S,H IN AR
U 2022, 2026,3441,4201,0000,2000,1010,0000 ; 6526 AC1_AR,AR_ARX,ARX_0S ;[241]STORE S,H
U 2026, 2031,3240,4201,0000,0020,0010,0000 ; 6527 ARX_AC1,AR_SHIFT ;[241]GET L,0, GET S,H BACK
U 2031, 2312,3701,0000,0000,0020,5610,0000 ; 6528 GEN AR,SKP AD NE ;[241]TEST FOR 0'S,
U 2312, 2002,3240,2000,0000,0020,1610,0040 ; 6529 =0 CLR SR3,AR_AC0,J/DFAS5 ;[241]DO 2'S COMP, ALL IN PLACE
U 2313, 2002,3240,2000,0000,0020,1610,0061 ; 6530 SET SR3,AR_AC0,J/DFAS5 ;[241]DO 1'S COMP, ALL IN PLACE
; 6531 .ENDIF/MODEL.B
; 6532
; 6533 ;SUBROUTINE TO CHOOSE OPERAND WITH SMALLER EXPONENT, AND
; 6534 ; PREPARE FOR SHIFTING IT.
; 6535 ; ENTER WITH ONE OPERAND FRACTION IN BR, ITS EXPONENT IN FE & SC,
; 6536 ; THE OTHER OP IN AR WITH ITS EXPONENT IN AR0-8
; 6537 ; RETURN THE LARGER EXPONENT IN FE, AND 36-(MAGNITUDE OF DIFFERENCE)
; 6538 ; IN SC. RETURN 4 IF SC POSITIVE, 5 IF NEGATIVE.
; 6539
U 2036, 2314,4001,0000,5202,1020,5122,0200 ; 6540 EXPD: SC_EXP-SC,EXP_SIGN,SKP SCAD0 ;COMPARE MAGNITUDES
; 6541 =0 AR_BR,ARX_BRX,BR/AR,BRX/ARX, ;AC OP IS LARGER MAGNITUDE
U 2314, 2062,3242,2660,2001,0000,0010,0000 ; 6542 FE_FE+SC,J/EXPD1 ;ITS EXP TO FE
; 6543 MQ_ARX,SC_#+SC,#/36., ;CHECK FOR EXP DIFF > 36
U 2315, 0004,4001,0010,2302,2020,5103,0044 ; 6544 SKP SCAD0,RETURN4
; 6545 EXPD1: MQ_ARX,SC_#-SC,#/36., ;AC EXP .GE. MEM
U 2062, 0004,0001,0010,5302,2020,5103,0044 ; 6546 SKP SCAD0,RETURN4 ;SHIFT MEM OP
; 6547
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 17
; FP.MIC[4,30] 17:13 9-Aug-84 DOUBLE FLOATING ARITHMETIC -- DFAD, DFSB, DFMP, DFDV
; 6548 ;DFMP
; 6549 ; DO TESTS FOR STICKY BITS FIRST THEN
; 6550 ; GET HERE WITH MEM OPERAND (M'CAND) IN BR!BRX
; 6551 ; AR HAS (AC1), LOW HALF OF M'IER
; 6552
; 6553 .IF/MODEL.B
; 6554 =0
U 2316, 0430,3240,2001,0000,0020,0010,0000 ; 6555 DFMP: AR_AC1,J/DFMP1 ;NO STICKY BIT
U 2317, 2320,3200,2001,0000,0020,5610,0000 ; 6556 AR_AC1,SKP AD NE ;GET AC LOW AND TEST
U 2320, 0430,0001,0000,0000,0000,0010,0000 ; 6557 =0 J/DFMP1 ;NO STICKY BIT
U 2321, 0430,0001,0000,0000,0000,1610,0061 ; 6558 SET SR3 ;WORRY ABOUT IT IN NORM
; 6559 =00*
; 6560 DFMP1: MQ_AR,AR_0S,ARX_0S, ;SETUP LOW M'IER
; 6561 SC_#+SC,#/-200, ;CORRECT EXPONENT
U 0430, 1546,3441,2210,2302,1000,0050,0600 ; 6562 CALL,J/MULREE ;MULTIPLY BY THE LOW PART
;;6563 .IFNOT/MODEL.B
;;6564 =00*
;;6565 DFMP: MQ_AR,AR_0S,ARX_0S, ;SETUP LOW M'IER
;;6566 SC_#+SC,#/-200, ;CORRECT EXPONENT
;;6567 CALL,J/MULREE ;MULTIPLY BY THE LOW PART
; 6568 .ENDIF/MODEL.B
U 0434, 0436,0602,2604,0000,0020,0027,0000 ; 6569 =10* AR_AR+BR LONG ;OOPS, LOW SIGN WAS SET
U 0436, 2072,3240,2010,0301,1020,0010,0762 ; 6570 MQ_AR,AR_AC0,FE_#,#/-14. ;READY TO CONTINUE WITH HIGH PART
; 6571
; 6572 ;HERE TO USE HIGH MULTIPLIER
; 6573
; 6574 SC_EXP+SC,EXP_SIGN.M, ;EXTRACT EXP FROM HIGH WORD
U 2072, 1322,4001,0000,2202,1001,4510,0200 ; 6575 SKP AR0 ;CHECK FOR NEG M'IER
; 6576 =010
U 1322, 1546,3723,2010,0000,1000,0050,0000 ; 6577 DFMP2: MQ_AR,AR_MQ,CALL,J/MULREE ;GO BACK IN FOR HIGH PART
U 1323, 1322,4001,0000,4400,2001,0010,0200 ; 6578 EXP_1,J/DFMP2 ;OOPS, NEG, MOVE SIGN TO BIT 8
; 6579 =110
U 1326, 1360,3703,0000,0302,0040,0035,0004 ; 6580 DNTRY: SC_#,#/4,GEN AR,NORM,J/DNORM ;NORMALIZE THE ANSWER
; 6581 =
; 6582
; 6583
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 18
; FP.MIC[4,30] 17:13 9-Aug-84 DOUBLE FLOATING ARITHMETIC -- DFAD, DFSB, DFMP, DFDV
; 6584
; 6585 ;DFDV
; 6586 ; GET HERE WITH DIVISOR IN BR!BRX, ITS EXP-1 IN SC
; 6587 ; SKIP IF D'SOR AND D'END SIGNS DIFFER
; 6588
; 6589 =000
U 1340, 0330,3200,5001,0000,0020,0050,0000 ; 6590 DFDV: AR_AC1*2,CALL,J/DFDV1 ;GET LOW D'END, GO START DIVIDE
; 6591 .IF/MODEL.B
U 1341, 0330,3200,5001,0000,0020,1650,0062 ; 6592 SET SR2,AR_AC1*2,CALL,J/DFDV1 ;NOTE NEG QUO
;;6593 .IFNOT/MODEL.B
;;6594 SR_1,AR_AC1*2,CALL,J/DFDV1 ;NOTE NEG QUO
; 6595 .ENDIF/MODEL.B
; 6596
; 6597 =011 AC1_AR,AR_MQ,ARL/AD,FE_FE+1, ;HERE FROM DDVSUB. NEW STEP CNT
U 1343, 0463,3723,2001,4001,0001,1050,0102 ; 6598 MQ_0.M,CALL.M,J/DIV+ ; SAVE HIGH QUO, RESUME
; 6599 =101 AC1_AR,AR_MQ,ARL/AD,FE_FE+1,
U 1345, 0462,3721,2001,4001,0001,1050,0102 ; 6600 MQ_0.M,CALL.M,J/DIV-
; 6601
; 6602 =111 AR_AC1,ARX/MQ,SC_#,#/4, ;POSITIVE QUOTIENT TO AR LONG
U 1347, 1360,3200,2301,0302,0040,0035,0004 ; 6603 NORM,J/DNORM ;NORMALIZE AND ROUND
; 6604
; 6605 =00
; 6606 DFDV1: ARX_AR,AR_AC0,SKP AD0, ;TEST DIVIDEND SIGN
; 6607 FE_#,#/26., ;SETUP COUNT FOR HIGH QUO
U 0330, 2222,3200,2400,0301,1020,5550,0032 ; 6608 CALL,J/FDVCHK ;GO CHECK DIVIDABILITY
U 0332, 0642,4001,0000,0000,0000,4210,0000 ; 6609 =10 SKP BR0,J/DDVSUB ;BEGIN DIVISION (RETURN ABOVE)
U 0333, 0066,4001,0000,0000,0000,1110,0624 ; 6610 SET FL NO DIV,J/IFNOP ;ABORT THE DIVISION
; 6611
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 19
; FP.MIC[4,30] 17:13 9-Aug-84 DOUBLE PRECISION NORMALIZATION
; 6612 .TOC "DOUBLE PRECISION NORMALIZATION"
; 6613
; 6614 =000
U 1360, 2324,3723,0000,0302,0040,5427,0043 ; 6615 DNORM: SKP ARX+MQ NE,SC_#,#/35.,J/DNZERO ;AR=0
; 6616 .IF/MODEL.B
; 6617 BR/AR,BRX/ARX,AR_MQ COMP, ;RESULT NEG, MAKE POS
U 1361, 2154,2023,2060,0000,0000,1610,0062 ; 6618 SET SR2,J/DNNEG ;[241]FLAG NEGATIVE
;;6619 .IFNOT/MODEL.B
;;6620 BR/AR,BRX/ARX,AR_MQ COMP, ;RESULT NEG, MAKE POS
;;6621 SR_1,J/DNNEG ;FLAG NEGATIVE
; 6622 .ENDIF/MODEL.B
; 6623 AR_AR*.25 LONG,MQ_MQ*.25,
U 1362, 2167,3701,7710,2031,0000,0012,0004 ; 6624 FE_FE+#,#/4,J/DNHI ;MSB IN AR 1-6
; 6625 AR_AR*.25 LONG,
U 1363, 1365,3701,7700,2031,0000,0010,0002 ; 6626 FE_FE+#,#/2,J/DROUND ;MSB IN AR7
U 1364, 1365,0301,7700,4001,0020,0027,0000 ; 6627 AR_AR*.5 LONG,FE_FE+1 ;MSB IN AR8
; 6628 DROUND: AR_AR+1,ARX/ADX,NORM, ;MSB IS AR9, RIGHT ON
U 1365, 1126,4003,2600,0302,0060,0035,0043 ; 6629 SC_#,#/35.,J/DRND1
U 1366, 1365,3701,5500,3001,0000,0710,0001 ; 6630 (AR+ARX+MQ)*2,FE_FE-1,J/DROUND ;MSB IN AR10
U 1367, 2103,4001,4000,5001,0000,0010,0000 ; 6631 AR_SHIFT,FE_FE-SC ;SOMEWHERE IN AR 11-35
; 6632
U 2103, 2104,4001,4340,0000,2000,0010,0000 ; 6633 DNSHFT: BR/AR,AR_ARX,ARX/MQ ;SHIFT THE WHOLE THING
U 2104, 2152,3701,6010,0000,0000,0510,0000 ; 6634 MQ_SHIFT,AR_ARX (ADX),CLR ARX
; 6635 MQ_SHIFT,ARX/MQ,AR_BR,SC_#,#/10.,
U 2152, 1360,3202,2310,0302,0040,0035,0012 ; 6636 NORM,J/DNORM ;GIVE IT ANOTHER GO
; 6637
; 6638 .IF/MODEL.B
U 2154, 0336,0001,0000,0000,0000,0005,0000 ; 6639 DNNEG: SR DISP ;[241]TEST FOR 1'S COMP
U 0336, 2322,4001,2000,0000,0040,5410,0000 ; 6640 =1110 AR_AR+1,SKP CRY0,J/DNNEG1 ;[241]COMPLETE NEGATION OF MQ
; 6641 MQ_AR,AR_BR COMP,ARX_BRX COMP,
U 0337, 1360,2502,2610,0000,1040,0035,0000 ; 6642 NORM,J/DNORM ;NORMALIZE THE POS FORM
; 6643 =0
; 6644 DNNEG1: MQ_AR,AR_BR COMP,ARX_BRX COMP,
U 2322, 1360,2502,2610,0000,1040,0035,0000 ; 6645 NORM,J/DNORM ;NORMALIZE THE POS FORM
U 2323, 1360,5142,2610,0000,1060,0035,0000 ; 6646 MQ_AR,AR_-BR,ARX/ADX,NORM,J/DNORM
;;6647 .IFNOT/MODEL.B
;;6648 DNNEG: AR_AR+1,SKP CRY0 ;COMPLETE NEGATION OF MQ
;;6649 =0 MQ_AR,AR_BR COMP,ARX_BRX COMP,
;;6650 NORM,J/DNORM ;NORMALIZE THE POS FORM
;;6651 MQ_AR,AR_-BR,ARX/ADX,NORM,J/DNORM
; 6652 .ENDIF/MODEL.B
; 6653
U 2167, 1326,3703,7710,0000,0000,0710,0001 ; 6654 DNHI: (AR+ARX+MQ)*.25,J/DNTRY ;GO TRY AGAIN
; 6655
; 6656 =0
U 2324, 0331,3401,2200,0000,0000,1610,0000 ; 6657 DNZERO: SR_0,AR_0S,ARX_0S,J/DBLST ;RESULT = 0, STORE THAT
U 2325, 2103,4001,4000,5001,0000,0010,0000 ; 6658 AR_SHIFT,FE_FE-SC,J/DNSHFT ;NOT ZERO, SHIFT AND TRY AGAIN
; 6659
; 6660 =110
U 1126, 1127,0303,7700,4001,0020,0027,0000 ; 6661 DRND1: AR_AR*.5 LONG,FE_FE+1 ;ROUNDING BLEW THE NORM, GO RIGHT
; 6662 EXP_FE TST,SR DISP,CLR MQ, ;STUFF EXP IN, CHECK RESULT SIGN
U 1127, 0355,4061,0220,0000,2020,0705,0413 ; 6663 BRX/ARX,ARX_1 ;READY IF NEGATION NECESSARY
; 6664
; 6665 .IF/MODEL.B
; 6666 =1101 ;[241]
;;6667 .IFNOT/MODEL.B
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 19-1
; FP.MIC[4,30] 17:13 9-Aug-84 DOUBLE PRECISION NORMALIZATION
;;6668 =0
; 6669 .ENDIF/MODEL.B
; 6670 AC0_AR,AR_SHIFT,ARX_BRX, ;STORE HIGH WORD, READY LOW
U 0355, 0273,3242,4600,0000,0217,1010,0000 ; 6671 I FETCH,J/STD1
U 0357, 2173,3002,0604,0000,0000,1610,0000 ; 6672 ARX_ARX*BRX,AD/ANDCA,SR_0 ;CLEAR ROUNDING BIT
U 2173, 0331,5163,7700,0000,0020,0027,0000 ; 6673 CDBLST: AR_-AR LONG,J/DBLST ;[345] NEGATE RESULT AND STORE
; 6674
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 1
; EXTEXP.MIC[4,30] 17:12 9-Aug-84 GFLT DOUBLE PRECISION ARITHMETIC
; 6675 .TOC "GFLT DOUBLE PRECISION ARITHMETIC"
; 6676
; 6677 .IF/MODEL.B
; 6678 .IF/EXTEXP
; 6679
; 6680 .DCODE
D 0102, 4000,1501 ; 6681 102: R, B/0, J/EDFLOT ;EFAD
D 0103, 4201,1501 ; 6682 103: R, B/2, J/EDFLOT ;EFSB
D 0106, 4401,1501 ; 6683 106: R, B/4, J/EDFLOT ;EFMP
D 0107, 4600,1501 ; 6684 107: R, B/6, J/EDFLOT ;EFDV
; 6685 .UCODE
; 6686
; 6687 =0****00**0*
; 6688 EDFLOT: VMA_VMA+1, LOAD ARX,
U 1501, 1023,4001,0000,0000,0013,3662,0100 ; 6689 MQ_0.S, CALL [XFERW]
U 1503, 1420,3701,0507,0000,0000,1033,0176 ; 6690 FM[E0]_AR, ARX_ARX*2, B DISP ;mem high to E0, do instruction
; 6691 =
; 6692
; 6693 =000
U 1420, 2376,4001,0000,0000,0000,4550,0000 ; 6694 EDFL1: SKP AR0, CALL [ISOEXP] ;save mem high word in E0.
U 1421, 2326,0001,0007,0000,0000,1010,0172 ; 6695 FM[T2]_AR, J/EF1 ;save mem exp in T2.
U 1422, 1423,5163,7700,0000,0020,0027,0000 ; 6696 AR_-AR LONG ;subtract now same as add.
U 1423, 1420,0001,0007,0000,0000,1010,0176 ; 6697 FM[E0]_AR, J/EDFL1 ;save "positive" exponent
U 1424, 2376,4001,0000,0000,0000,4550,0000 ; 6698 =100 SKP AR0, CALL [ISOEXP] ;isolate mem exp in AR.
; 6699 BR/AR, GEN ARX, SKP AD NE, ;start test for sticky bits.
U 1425, 2342,3711,0040,0000,0020,5610,0000 ; 6700 J/EFMP
; 6701 =110 BR/AR, GEN AR, SKP AD0, ;save mem high in br.
U 1426, 2376,3703,0040,0000,0020,5550,0000 ; 6702 CALL [ISOEXP] ;get mem exp
U 1427, 3021,3401,2007,0000,0000,1010,0172 ; 6703 FM[T2]_AR, AR_0S, J/EFDV0 ;save mem exp in T2. No sticky bits.
; 6704 =0
U 2326, 2376,3200,2000,0000,0020,5550,0000 ; 6705 EF1: AR_AC0, SKP AD0, CALL [ISOEXP] ;get AC op
U 2327, 2236,4001,0047,0000,0000,1010,0165 ; 6706 FM[E1]_AR, BR/AR ;save AC exp in E1
; 6707
; 6708 ;Now have positive mem exponent in T2, pos AC exp in E1.
; 6709 ;Save larger exp in T2 and exp diff if less than 340 in SC.
; 6710 [AR]_[AR]*FM[T2], AD/A-B, ;AR gets exp diff.
U 2236, 0470,5100,2007,4000,0040,5510,0172 ; 6711 SKP AD0 ;AR get exp diff, BRX gets exp.
U 0470, 2756,4001,0000,0302,0000,0050,0003 ; 6712 =00 SC_#, #/3, CALL [EXPDIF] ;test for exp diff >72.
U 0471, 0540,4001,0040,0000,0000,0010,0000 ; 6713 BR/AR, J/EF3A ;mem op larger.
U 0472, 2306,3202,2000,0000,0000,0010,0000 ; 6714 AR_BR, J/EF5 ;restore exp to AR.
U 0473, 3031,3260,2007,0401,0020,0010,0165 ; 6715 [AR]_FM[E1], CLR FE, J/ACNORM ;exp diff too large, norm AC op.
; 6716 =00
U 0540, 2756,5162,2000,0302,0020,0050,0003 ; 6717 EF3A: AR_-BR, SC_#, #/3, CALL [EXPDIF];mem larger, get positive diff.
U 0542, 2244,3242,2000,0000,0000,0010,0000 ; 6718 =10 AR_BR, J/EF3B ;restore exponent to AR.
U 0543, 3027,3240,2007,0401,0020,0010,0172 ; 6719 [AR]_FM[T2], CLR FE, J/MEMNRM ;exp diff > 72. norm mem op.
U 2244, 2246,3203,5000,0000,0000,0010,0000 ; 6720 EF3B: AR_AR*8 ;move exp difference into AR0-8.
; 6721 FE_AR0-8, ;mem larger, op doable.
U 2246, 2330,3200,2000,2421,0020,0010,0000 ; 6722 AR_AC0 ;save smaller AC op in T0,T1
U 2330, 2755,4001,0007,0000,0000,1050,0166 ; 6723 =0 FM[T0]_AR, CALL [EF5B]
U 2331, 2254,4001,0007,0000,0000,1010,0171 ; 6724 FM[T1]_AR
U 2254, 2256,3260,2007,0000,0020,0010,0176 ; 6725 [AR]_FM[E0] ;save larger mem op in AC0,AC1
U 2256, 2261,4001,4000,0000,2000,1010,0000 ; 6726 AC0_AR, AR_ARX
U 2261, 2334,4001,0001,0000,0000,1010,0000 ; 6727 AC1_AR, J/EF5A ;all set to shift and add.
; 6728
U 2306, 2621,3203,5000,0000,0000,0010,0000 ; 6729 EF5: AR_AR*8 ;move exp difference into AR0-8.
U 2621, 2752,3240,2007,2421,0020,0010,0176 ; 6730 FE_AR0-8, [AR]_FM[E0] ;smaller mem op to T0,T1
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 1-1
; EXTEXP.MIC[4,30] 17:12 9-Aug-84 GFLT DOUBLE PRECISION ARITHMETIC
U 2752, 2332,0001,4007,0000,2000,1010,0166 ; 6731 FM[T0]_AR, AR_ARX
U 2332, 2755,4001,0007,0000,0000,1050,0171 ; 6732 =0 FM[T1]_AR, CALL [EF5B]
U 2333, 2753,4001,0001,0000,0000,1010,0000 ; 6733 AC1_AR ;we expect AC1*2 to be saved.
U 2753, 2754,3260,2007,0000,0020,0010,0165 ; 6734 [AR]_FM[E1] ;save larger AC exp in T2
U 2754, 2334,0001,0007,0000,0000,1010,0172 ; 6735 FM[T2]_AR, J/EF5A
; 6736
U 2755, 0001,3240,5001,0000,0020,0003,0000 ; 6737 EF5B: AR_AC1*2, RETURN1
; 6738
; 6739 ;EXPDIF determines if the exponent difference is too large-ie >110 oct.
; 6740 ;The largest allowed value for shifting is 72 decimal. This is 110 octal.
; 6741 ;Since the exponent is in AR1-11, 110 octal has the value 11 in AR1-8.
; 6742 ;It expects the exponent difference in AR0-8.
; 6743 ;It uses AR0-8 and the BR.
; 6744 ;Returns 2 if the difference is ok (<=110).
; 6745 ;Returns 3 if the difference is too large (>110).
U 2756, 2757,0001,0040,0000,0000,0410,0000 ; 6746 EXPDIF: BR/AR, CLR AR ;zero all of those bits.
U 2757, 2760,4001,0000,0000,0000,0110,0010 ; 6747 AR0-8_#, #/10 ;put in 100 in AR0-11.
U 2760, 0002,5102,0004,0000,0040,5503,0000 ; 6748 GEN AR-BR, SKP AD0, RETURN2 ;<max diff>-<actual diff>
; 6749
; 6750 ;We now have:
; 6751 ; AC0 / larger op high
; 6752 ; AC1 / larger op low
; 6753 ; T0 / smaller op high
; 6754 ; T1 / smaller op low
; 6755 ; T2 / larger exponent
; 6756 ; FE / exp difference
; 6757 ;We must now sign extend both high ops.
; 6758 =0
U 2334, 2400,3200,2000,0000,0020,5550,0000 ; 6759 EF5A: AR_AC0, SKP AD0, CALL [SGNEXT] ;get larger high op
U 2335, 2336,4001,0000,0000,0000,1010,0000 ; 6760 AC0_AR ;save larger extended op in AC0
; 6761 =0 [AR]_FM[T0], SKP AD0, ;get smaller high op
U 2336, 2400,3260,2007,0000,0020,5550,0166 ; 6762 CALL [SGNEXT] ; and sign extend into AR1-11.
U 2337, 2761,4001,0007,0000,0000,1010,0166 ; 6763 FM[T0]_AR ;save smaller extended op in T0
; 6764 ;We are now set to shift the smaller op to align it with the larger op.
U 2761, 2762,3260,2007,0000,0020,0010,0171 ; 6765 [AR]_FM[T1]
U 2762, 2763,3240,2407,0000,1020,0013,0166 ; 6766 [AR]_FM[T0], ARX_AR, SC_FE ;move diff to SC for next line.
U 2763, 2340,0001,0000,5302,0020,5110,0044 ; 6767 SC_#-SC, #/36., SKP SCAD0
U 2340, 2770,5441,2400,0000,1020,0016,0000 ; 6768 =0 ARX_AR, AR_SIGN, J/EF10 ;FE < 37.
U 2341, 2764,0001,0060,0000,0000,0013,0000 ; 6769 BR/AR, BRX/ARX, SC_FE
U 2764, 2765,5401,2400,0000,1020,0016,0000 ; 6770 AR_SIGN, ARX_AR
U 2765, 2766,0001,0000,5302,0000,0010,0110 ; 6771 SC_#-SC, #/72.
U 2766, 0351,4001,0400,0000,0000,0010,0000 ; 6772 ARX_SHIFT ;high is sign, low is sign,,high.
; 6773 =01 AR_BR LONG, BR/AR, BRX/ARX, ;save new stuff in BR long.
U 0351, 2777,3202,2660,0000,0000,0050,0000 ; 6774 CALL [EF12] ;MQ gets lowest word.
U 0353, 2767,4001,0007,0000,0000,1010,0165 ; 6775 FM[E1]_AR ;save sticky bits.
U 2767, 2775,3240,2001,0000,0020,0010,0000 ; 6776 AR_AC1, J/EF11 ;now prepare to add.
U 2770, 2771,3260,4207,0000,0020,0010,0171 ; 6777 EF10: AR_SHIFT, [ARX]_FM[T1] ;shift high op, load low word.
U 2771, 2772,3260,2047,0000,0020,0010,0166 ; 6778 BR/AR, [AR]_FM[T0] ;shift low op, load high word.
U 2772, 0431,3713,2400,0000,0000,0010,0000 ; 6779 AR_ARX (AD), ARX_SHIFT ;get shifted low word into ARX.
U 0431, 2777,4001,0020,0000,0000,0550,0000 ; 6780 =01 BRX/ARX, CLR ARX, CALL [EF12] ;save low word, shift end bits.
U 0433, 2773,4001,0007,0000,0000,1010,0165 ; 6781 FM[E1]_AR ;save sticky bits. (word 4 of sum).
U 2773, 2775,3240,2001,0000,0020,0010,0000 ; 6782 AR_AC1, J/EF11 ;prepare to add.
U 2774, 2775,3240,2061,0000,0020,0010,0000 ; 6783 BR/AR, BRX/ARX, AR_AC1 ;get larger op in AR,ARX
U 2775, 2776,3240,2400,0301,1020,0010,0000 ; 6784 EF11: ARX_AR, AR_AC0, FE_#, #/0 ;smaller op in BR,BRX
; 6785 AR_AR+BR, ARX/ADX, SC_#, #/3, ;operation done, now normalize.
U 2776, 1560,0602,2604,0302,0060,0035,0003 ; 6786 NORM, J/ENORM
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 1-2
; EXTEXP.MIC[4,30] 17:12 9-Aug-84 GFLT DOUBLE PRECISION ARITHMETIC
; 6787
U 2777, 2450,3713,2010,0000,0000,0510,0000 ; 6788 EF12: MQ_SHIFT, AR_ARX (AD), CLR ARX,J/SHIFT
;;6789 .IF/GFTCNV ;[273]
;;6790 EF12A: AR_SHIFT, RETURN10
; 6791 .ENDIF/GFTCNV ;[273]
; 6792 .ENDIF/EXTEXP
; 6793
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 2
; EXTEXP.MIC[4,30] 17:12 9-Aug-84 GFLT MULTIPLY
; 6794 .TOC "GFLT MULTIPLY"
; 6795 .IF/EXTEXP
; 6796 =0
U 2342, 2345,0001,0000,0000,0000,0410,0000 ; 6797 EFMP: CLR AR, J/EFMP1 ;mem low op is zero, no sticky bits.
U 2343, 2344,3200,5001,0000,0020,5610,0000 ; 6798 AR_AC1*2, SKP AD NE ;is AC low op non-zero as well ?
U 2344, 2345,0001,0000,0000,0000,0410,0000 ; 6799 =0 CLR AR ;yes, no sticky bits today.
U 2345, 3000,3401,2007,0000,0000,1010,0165 ; 6800 EFMP1: FM[E1]_AR, AR_0S ;set sticky bits.
U 3000, 3001,0001,0000,0000,0000,0110,0200 ; 6801 AR0-8_#, #/200 ;subtract 200.
U 3001, 3004,3242,2040,0000,0000,0010,0000 ; 6802 BR/AR, AR_BR ;swap around exp and 2000.
U 3004, 2346,5102,2000,0402,0020,0010,0000 ; 6803 AR_AR-BR, CLR SC ;done, and SC is cleared.
; 6804 =0 BR/AR, AR_AC0, SKP AD0, ;save exp-2000 in BR.
U 2346, 2376,3240,2040,0000,0020,5550,0000 ; 6805 CALL [ISOEXP] ;get AC high and isolate exp.
U 2347, 3007,0602,2000,0000,0020,0010,0000 ; 6806 AR_AR+BR ;add exponents together.
U 3007, 2350,4001,0007,0000,0000,1010,0172 ; 6807 FM[T2]_AR ;and store the sum in T2.
; 6808 =0 [AR]_FM[E0], SKP AD0, ;get mem high op sign extended.
U 2350, 2400,3240,2007,0000,0020,5550,0176 ; 6809 CALL [SGNEXT]
U 2351, 3015,0001,0000,0301,0000,0010,0756 ; 6810 FE_#, #/-18. ;
U 3015, 1440,3240,2061,0000,0020,0010,0000 ; 6811 BR/AR, BRX/ARX, AR_AC1 ;move mem ops to BR!BRX.
; 6812 =000 MQ_AR, AR_0S, ARX_0S, ;multiply by low word.
U 1440, 1546,3441,2210,0000,1000,0050,0000 ; 6813 CALL [MULREE]
U 1444, 1446,0602,2604,0000,0020,0027,0000 ; 6814 =100 AR_AR+BR LONG ;low sign was set, add results.
; 6815 =110 MQ_AR, AR_AC0, FE_#, #/-13., ;now continue with high part.
U 1446, 2400,3200,2010,0301,1020,5550,0763 ; 6816 SKP AD0, CALL [SGNEXT] ;sign extend the ac high op.
U 1447, 2352,0001,0007,0000,0000,1010,0166 ; 6817 FM[T0]_AR ;save sign extended AC op.
; 6818 ; SKP AR0 ;test sign bit to adjust FE.
; 6819 =0
U 2352, 1460,3721,2010,0000,1000,0010,0000 ; 6820 EFMPP1: MQ_AR, AR_MQ, J/EFMPP2 ;swap AR+MQ.
U 2353, 2352,4001,0000,4001,0000,0010,0000 ; 6821 FE_FE+1, J/EFMPP1 ;inc the FE if number is neg.
; 6822 =000
; 6823 EFMPP2: AD/0S, FE_FE+1, DISP/MUL, ;now multiply by the high word.
U 1460, 0260,3401,0010,4001,0000,0070,0000 ; 6824 MQ/MQ*.25, CALL [MULP]
; 6825 ;Since our last multiply step used 2 signs bits instead of a sign bit
; 6826 ;and the MSB, our answer is too low by a power of two for positive numbers
; 6827 ;and too low by a power of 4 for negative numbers.
U 1464, 3016,3703,5500,0000,0000,0710,0001 ; 6828 =100 (AR+ARX+MQ)*2, J/EFMPP3 ;try this correction factor.
U 1465, 3016,3701,7710,0000,0000,0710,0001 ; 6829 =101 (AR+ARX+MQ)*.25, J/EFMPP3 ;shouldn't ever get here.
U 1466, 3016,3703,5500,0000,0000,0710,0001 ; 6830 =110 (AR+ARX+MQ)*2 ;and this for postive numbers.
; 6831 =
U 3016, 0561,2301,0260,0000,0000,0610,0030 ; 6832 EFMPP3: BR_AR LONG, AR_0.C, ARX_1S ;result to BR!BRX. Build mask.
; 6833 =01 SC_#, #/10., ;load SC with shift count.
U 0561, 2450,4001,0000,0302,0000,0050,0012 ; 6834 CALL [SHIFT] ;Now have mask of 0,,1777
U 0563, 3017,3242,2660,0000,0000,0010,0000 ; 6835 AR_BR LONG, BR_AR LONG ;mask to BR, result TO AR!ARX.
U 3017, 3020,3522,0014,0000,0000,0710,0003 ; 6836 MQ_MQ*BR, AD/ANDCB ;clear the last 10 MQ bits.
; 6837 GEN AR, SC_#, #/3, ;generate NORM bits.
U 3020, 1560,3701,0000,0302,0040,0035,0003 ; 6838 NORM, J/ENORM ;conditions set for EE norm.
; 6839 .ENDIF/EXTEXP
; 6840
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 3
; EXTEXP.MIC[4,30] 17:12 9-Aug-84 GFLT DIVIDE
; 6841 .TOC "GFLT DIVIDE"
; 6842 .IF/EXTEXP
U 3021, 2354,0001,0007,0000,0000,1010,0165 ; 6843 EFDV0: FM[E1]_AR ;no sticky bits on divide.
U 2354, 2400,3242,2000,0000,0020,5550,0000 ; 6844 =0 AR_BR, SKP AD0, CALL [SGNEXT] ;sign extend mem high.
; 6845 GEN AR*AC0, AD/XOR, SKP AD0, ;determine sign of result.
U 2355, 1520,3100,0060,0000,0020,5510,0000 ; 6846 BR_AR LONG ;mem op to BR!BRX.
U 1520, 0620,3240,5001,0000,0020,0050,0000 ; 6847 =000 AR_AC1*2, CALL [EFDV1] ;start division.
U 1521, 0620,3240,5001,0000,0020,1650,0001 ; 6848 SR_1, AR_AC1*2, CALL [EFDV1] ;note result if negative.
; 6849
; 6850 =011 AC1_AR, AR_MQ, ARL/AD, FE_FE+1, ;set step count to 35-2.
U 1523, 0463,3723,2001,4001,0001,1050,0102 ; 6851 MQ_0.M, CALL [DIV+]
; 6852 =101 AC1_AR, AR_MQ, ARL/AD, FE_FE+1,
U 1525, 0462,3721,2001,4001,0001,1050,0102 ; 6853 MQ_0.M, CALL [DIV-]
U 1527, 3022,0001,0000,0401,0000,0410,0000 ; 6854 =111 CLR AR, CLR FE ;exp must be adjusted-
U 3022, 3023,0001,0000,0000,0000,0110,0200 ; 6855 AR0-8_#, #/200 ; it is currently 2000 too low
U 3023, 3024,0600,2007,0000,0020,0010,0172 ; 6856 [AR]_[AR]*FM[T2], AD/A+B ;add in the correction.
U 3024, 3026,4001,0007,0000,0000,1010,0172 ; 6857 FM[T2]_AR ;store the corrected exp in T2.
; 6858 AR_AC1, ARX/MQ, SC_#, #/3, ;get answer ready for norm.
U 3026, 1560,3240,2301,0302,0040,0035,0003 ; 6859 NORM, J/ENORM
; 6860
; 6861 =00
; 6862 EFDV1: ARX_AR, AR_AC0, SKP AD0, FE_#, ;AC low*2 to ARX, AC high to AR.
U 0620, 2356,3200,2400,0301,1020,5550,0027 ; 6863 #/23., CALL [EDVCHK]
U 0622, 0642,4001,0000,0000,0000,4210,0000 ; 6864 =10 SKP BR0, J/DDVSUB
U 0623, 0066,4001,0000,0000,0000,1110,0624 ; 6865 SET FL NO DIV, J/IFNOP ;no division this time.
; 6866
; 6867 =0
U 2356, 2360,0001,0010,0000,1000,0010,0000 ; 6868 EDVCHK: MQ_AR, J/EDVCH1 ;go to an even address.
U 2357, 2356,5163,7700,0000,0020,0027,0000 ; 6869 AR_-AR LONG, J/EDVCHK ;make ac op positive.
; 6870
; 6871 =0
U 2360, 2376,4001,0000,0000,0000,4550,0000 ; 6872 EDVCH1: SKP AR0, CALL [ISOEXP] ;op saved in MQ, get exp in AR.
; 6873 [AR]_[AR]*FM[T2], AD/A-B, ;subtract exponents.
U 2361, 2362,5100,2007,4000,0040,5510,0172 ; 6874 SKP AD0 ;did this cause an underflow ?
; 6875 =0
U 2362, 2363,0001,0000,0000,0000,1610,0062 ; 6876 SET SR2 ;no, let SR2 denote this.
U 2363, 2364,0001,0007,0000,0000,1010,0172 ; 6877 EDVCH2: FM[T2]_AR ;yes, save exponent in T2 for ENORM.
; 6878
; 6879 =0
U 2364, 2400,3721,2000,0000,0020,5550,0000 ; 6880 EDVCH3: AR_MQ, SKP AD0, CALL [SGNEXT] ;now sign extend the op.
U 2365, 2240,0001,0000,0000,0001,4210,0100 ; 6881 SKP BR0, MQ_0.M, J/FDVCK1
; 6882 .ENDIF/EXTEXP
; 6883
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 4
; EXTEXP.MIC[4,30] 17:12 9-Aug-84 GFLT NORMALIZATION
; 6884 .TOC "GFLT NORMALIZATION"
; 6885 .IF/EXTEXP
; 6886 ;Normalization is done here.
; 6887 ; The are 8 addresses the can be reached when doing a
; 6888 ; NORM dispatch. The following table describes the
; 6889 ; dispatching and how to normalize the fraction and
; 6890 ; exponent.
; 6891 ;
; 6892 ; =000 AR=0 AR is zero, check ARX,MQ
; 6893 ; =001 AR00=1 sign bit on, complement
; 6894 ; =010 MSB in AR 1-6 shf 4 rt.(a guess)
; 6895 ; =011 MSB in AR07 sht 2 rt.
; 6896 ; =100 MSB in AR08 sht 3 rt.
; 6897 ; =101 MSB in AR09 right on!
; 6898 ; =110 MSB in AR10 sht 1 lf.
; 6899 ; =111 MSB in AR 11-35 sht 4 lf.(a guess)
; 6900 ;
; 6901 ;The normalization routine for double precision assumes that
; 6902 ; the exponent can be found in the FE. As it goes through
; 6903 ; the normalization process, it adjusts the fraction and
; 6904 ; the FE by the correct amounts to normalize the number.
; 6905 ; In GFLT numbers, the exponent may not fit
; 6906 ; into the FE, so it has to be saved in an accumulator.
; 6907 ; However, if one assumes initially that the exponent is
; 6908 ; zero and that it is in the FE, then the same normalization
; 6909 ; algorithm can be used as in double precision numbers
; 6910 ; with the realization that at the end of the normalization
; 6911 ; process the FE contains the correction (EC) that must be
; 6912 ; added into the saved exponent (ES) to produce a 'bit-9'
; 6913 ; normalized number. Once this correction value is obtained,
; 6914 ; the 'bit-12' normalized exponent (EN) is given by
; 6915 ; EN = ES + EC + 3
; 6916
U 3027, 3030,0001,0007,0000,0000,1010,0172 ; 6917 MEMNRM: FM[T2]_AR ;save larger exponent.
U 3030, 2366,3240,2007,0000,0020,5510,0176 ; 6918 [AR]_FM[E0], SKP AD0, J/ACNRM1 ;get high word, sign extend it
; 6919
U 3031, 3033,0001,0007,0000,0000,1010,0172 ; 6920 ACNORM: FM[T2]_AR ;save larger exponent.
U 3033, 3034,3200,5001,0401,0020,0010,0000 ; 6921 AR_AC1*2, CLR FE ;get low word*2 into AR.
U 3034, 2366,3200,2400,0000,1020,5510,0000 ; 6922 ARX_AR, AR_AC0, SKP AD0 ;get high word, sign extend it.
; 6923 =0
; 6924 ACNRM1: [AR]_[AR]*FM[EXPMSK], AD/AND, ;sign extend with 0's.
U 2366, 1560,3600,2007,4000,0040,0035,0164 ; 6925 NORM, J/ENORM
; 6926 [AR]_[AR]*FM[EXPMSK], AD/ORCB, ;sign extend with 1's.
U 2367, 1560,2700,2007,4000,0040,0035,0164 ; 6927 NORM ;fall into the normalize routine.
; 6928
; 6929 =000
; 6930 ENORM: SKP ARX+MQ NE, SC_#, #/35., ;AR=0,check ARX,+MQ.
U 1560, 2374,3723,0000,0302,0040,5427,0043 ; 6931 J/ENZERO
; 6932 BR/AR, BRX/ARX, AR_MQ COMP, ;result neg, complement.
U 1561, 3041,2021,2060,0000,0000,1610,0061 ; 6933 SET SR3, J/ENNEG ;flag negative seen.
; 6934 AR_AR*.25 LONG, MQ_MQ*.25, ;MSB in AR 1-6.
U 1562, 3042,3703,7710,2031,0000,0012,0004 ; 6935 FE_FE+#, #/4, J/ENHI
; 6936 AR_AR*.25 LONG, FE_FE+#, ;MSB in AR07.
U 1563, 1565,3701,7700,2031,0000,0010,0002 ; 6937 #/2, J/EROUND ;
U 1564, 1565,0301,7700,4001,0020,0027,0000 ; 6938 AR_AR*.5 LONG, FE_FE+1 ;MSB in AR08.
; 6939 EROUND: BR_AR LONG, AR+MQ_0.S, ;MSB in AR09, where we want it.
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 4-1
; EXTEXP.MIC[4,30] 17:12 9-Aug-84 GFLT NORMALIZATION
U 1565, 3043,0001,0060,0000,0000,0022,0130 ; 6940 J/ERND1 ;put result in BR!BRX.
; 6941 (AR+ARX+MQ)*2, FE_FE-1, ;MSB in AR10.
U 1566, 1565,3701,5500,3001,0000,0710,0001 ; 6942 J/EROUND
U 1567, 3036,4001,4000,5001,0000,0010,0000 ; 6943 AR_SHIFT, FE_FE-SC ;MSB somewhere in AR 11-35.
; 6944
U 3036, 3037,4001,4340,0000,2000,0010,0000 ; 6945 ENSHFT: BR/AR, AR_ARX, ARX/MQ ;shift everyone.
U 3037, 3040,3701,6010,0000,0000,0510,0000 ; 6946 MQ_SHIFT, AR_ARX (ADX), CLR ARX
; 6947 MQ_SHIFT, ARX/MQ, AR_BR, ;go aroung again.
; 6948 SC_#, #/10.,
U 3040, 1560,3202,2310,0302,0040,0035,0012 ; 6949 NORM, J/ENORM
; 6950
U 3041, 2370,3200,0007,0000,0020,5610,0165 ; 6951 ENNEG: GEN E1, SKP AD NE ;any sticky bits left around?
U 2370, 2372,4001,2000,0000,0040,5410,0000 ; 6952 =0 AR_AR+1, SKP CRY0, J/ENNEG1 ;no, 2's comp MQ.
; 6953 MQ_AR, AR_BR COMP, ARX_BRX COMP,
U 2371, 1560,2502,2610,0000,1040,0035,0000 ; 6954 NORM, J/ENORM ;one's complement to finish.
; 6955 =0
; 6956 ENNEG1: MQ_AR, AR_BR COMP, ARX_BRX COMP,
U 2372, 1560,2502,2610,0000,1040,0035,0000 ; 6957 NORM, J/ENORM ;one's complement to finish.
; 6958 MQ_AR, AR_-BR, ARX/ADX, ;carry happened, do two's comp.
U 2373, 1560,5142,2610,0000,1060,0035,0000 ; 6959 NORM, J/ENORM
; 6960
U 3042, 3064,3701,7710,0000,0000,0710,0001 ; 6961 ENHI: (AR+ARX+MQ)*.25, J/ENTRY ;go try again after setting SC.
; 6962 =0
U 2374, 0331,3401,2200,0000,0000,1610,0000 ; 6963 ENZERO: SR_0, AR_0S, ARX_0S, J/DBLST ;result = 0, store in AC,AC+1.
U 2375, 3036,4001,4000,5001,0000,0010,0000 ; 6964 AR_SHIFT, FE_FE-SC, J/ENSHFT ;not zero, try next 35 bits.
; 6965
U 3043, 3044,4041,0500,0000,0020,0010,0000 ; 6966 ERND1: ARX_2 ;build rounding constant.
U 3044, 3045,3203,0600,0000,0000,0010,0000 ; 6967 ARX_ARX*4 ;gen a 10 in the ARX for rounding.
U 3045, 1626,0602,2604,0000,0060,0035,0000 ; 6968 AR_AR+BR, ARX/ADX, NORM ;do the rounding and test norm.
U 1626, 1627,0301,7700,4001,0020,0027,0000 ; 6969 =110 AR_AR*.5 LONG, FE_FE+1 ;rounding blew norm, correct it.
; 6970
; 6971 ; When we get here the number is 'bit-9' normalized
; 6972 ; in the AR,ARX. Add the FE + 3 to the exponent
; 6973 ; saved in T2.
; 6974 ; At this point the Extended Exponent must be put
; 6975 ; into the AR after everything is shifted right 3 bits.
; 6976 ; The double precision norm routine does this by:
; 6977 ; EXP_FE TST, SR DISP, CLR MQ, BRX/ARX, ARX_1
; 6978
; 6979
; 6980 ERND2: AR_AR*.25 LONG, ;shift everything 2 bits right.
; 6981 MQ_MQ*.25, ; " " "
U 1627, 3046,3701,7710,0302,0000,0012,0003 ; 6982 SC_#, #/3 ;add in correction to FE.
; 6983 AR_AR*.5 LONG, ;now shift the final bit position.
U 3046, 3047,0303,7700,2002,0020,0027,0000 ; 6984 SC_FE+SC ;total exponent correction.
U 3047, 3050,0001,0060,0000,0000,0410,0000 ; 6985 BR/AR, BRX/ARX, CLR AR ;save answer in BR,BRX.
U 3050, 3051,4001,0000,2400,2001,0110,0000 ; 6986 EXP_SC.MS ;get exp corr in AR.
; 6987 ARX_AR, AR_SIGN, ;get exp into ARX 1-8.
U 3051, 3052,5401,2400,0302,1020,0016,0041 ; 6988 SC_#,#/33. ;prepare to shift 3 places.
; 6989 ARX_SHIFT, ;move exponent into ARX 1-11.
U 3052, 3053,3240,2407,0000,0020,0010,0164 ; 6990 [AR]_FM[EXPMSK] ;prepare to build mask in AR.
U 3053, 3054,0001,0000,0000,0000,0110,0400 ; 6991 AR0-8_#, #/400 ;include AR00 in EXPMSK==>400077,,-1
; 6992 AR_AR*BR, AD/AND, ;zero AR1-11 to make room for exp.
U 3054, 3055,3602,2000,0302,0000,0010,0043 ; 6993 SC_#, #/35.
; 6994
; 6995 ; I am sure a few lines of code can be saved around here.
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 4-2
; EXTEXP.MIC[4,30] 17:12 9-Aug-84 GFLT NORMALIZATION
; 6996
U 3055, 3056,3260,2047,0000,0020,0010,0172 ; 6997 [AR]_FM[T2], BR/AR ;save high word in BR, load larger exp.
U 3056, 3057,3242,2040,0000,0000,0010,0000 ; 6998 AR_BR, BR/AR ;swap around so we can add.
; 6999 AR_ARX+BR, BR/AR, ;have final exponent, check for problems.
U 3057, 3060,0612,2040,0302,0020,0010,0000 ; 7000 SC_#,#/0
U 3060, 0363,0001,0000,0000,0020,0007,0000 ; 7001 SH DISP ;any exponent problems ?
; 7002 =0011 ARX_AR, SC_#, #/35., ; no problems.
U 0363, 3062,0001,0400,0302,1000,0010,0043 ; 7003 J/ENFNL1
; 7004 ENFNL0: ARX_AR, SC_#, #/35., ; no problems.
U 0367, 3062,0001,0400,0302,1000,0010,0043 ; 7005 J/ENFNL1
U 0373, 3061,4001,0000,0000,0000,1110,0620 ; 7006 SET FLOV, J/EEOV ; an overflow occurred.
; 7007
U 0377, 0435,4001,0000,0000,0000,0005,0000 ; 7008 SR DISP ;floating underflow - is it real ?
; 7009 =1101 ;test SR2.
U 0435, 3061,0001,0000,0000,0000,1110,0630 ; 7010 SET FXU, J/EEOV ;yes, it is a real underflow.
U 0437, 3061,4001,0000,0000,0000,1110,0620 ; 7011 SET FLOV ;no, GFDV saw an overflow before.
; 7012
; 7013 EEOV: P_P AND #, #/37, ;turn off AR00.
U 3061, 0367,0001,0000,7130,3000,0110,0037 ; 7014 J/ENFNL0
; 7015
U 3062, 3063,3312,2004,0000,0000,0010,0000 ; 7016 ENFNL1: AR_ARX*BR, AD/OR ;AR now has high word, BRX has low.
U 3063, 0552,4061,0200,0000,0021,0005,0100 ; 7017 ARX_1, MQ_0.M, SR DISP ;incase negation of lower word needed.
; 7018 =10 AC0_AR, AR_SHIFT, ;store high word,
; 7019 ARX_BRX, ;move low word to ARX.
U 0552, 0273,3242,4600,0000,0217,1010,0000 ; 7020 I FETCH, J/STD1 ;prepare to store low word and exit.
; 7021 ARX_ARX*BRX, AD/ANDCA, ; clear rounding bit.
U 0553, 2173,3002,0604,0000,0000,1610,0000 ; 7022 SR_0,J/CDBLST ;negate result and store double result.
; 7023
U 3064, 1560,3701,0000,0302,0040,0035,0003 ; 7024 ENTRY: SC_#, #/3, GEN AR, NORM, J/ENORM; go normalize again.
; 7025 .ENDIF/EXTEXP
; 7026
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 5
; EXTEXP.MIC[4,30] 17:12 9-Aug-84 GFLT TO INTEGER CONVERSION
; 7027 .TOC "GFLT TO INTEGER CONVERSION"
; 7028 .IF/EXTEXP
;;7029 .IF/GFTCNV ;[273]
;;7030
;;7031 ;ETXIX routine is used when converting extended exponent data to
;;7032 ;single/double precision integers with rounding/truncation.
;;7033 ;This routine assumes that the AR/ARX contain the extended exponent
;;7034 ;data. It also assumes that the maximum exponent value + 1 of either
;;7035 ;36 or 70 (decimal) are already in the FE. This is the positive exponent
;;7036 ;maximum; the code adjusts for the fact that a negative number can have
;;7037 ;an exponent one greater than a positive number.
;;7038 ;It uses all of the registers in the EBOX and returns 4 if the
;;7039 ;result is positive and returns 5 if the result is negative
;;7040 ;with the AR/ARX containing the double word integer. It is the
;;7041 ;responsibility of the calling routine to determine whether
;;7042 ;rounding or truncation should be performed and how many words
;;7043 ;to store.
;;7044
;;7045 ETXIX: ARX_ARX*2 ;get low word*2 into ARX.
;;7046 =0 MQ_AR, SKP AR0, ; get a positive exp in AR.
;;7047 CALL [ISOEXP]
;;7048 CLR AR, BR/AR ;clear extraneous bits, save exp.
;;7049 AR0-8_#, #/200 ;test for positive exp.
;;7050 GEN AR+BR, SKP AD0, ;skip on positive exponent(sum has AD0 on).
;;7051 AR_0.M ;so exponent test has a clean register.
;;7052 =0 MEM/ARL IND, CLR/AR+ARX,;exponent must be positive.
;;7053 RETURN4 ;return to caller.
;;7054 AR0-8_#, #/212, J/ET1 ;start range check of positive exponent
;;7055
;;7056 ;At this point the exponent is in BR 1-11 and it is positive.
;;7057 ;Now we must determine if it is a small enough positive number
;;7058 ;to make the conversion to integer meaningful.
;;7059 ET1: GEN AR-BR, SKP AD0 ;do the exponent test.
;;7060 =0 AR_BR*4, J/ET2 ;exp fits in AR0-8, now for final test!
;;7061 SET AROV, I FETCH, J/NOP;exponent out of range.
;;7062 ET2: AR_AR*2 ;finish moving exponent into AR0-8.
;;7063 SC_AR0-8, GEN MQ, ;exponent to SC.
;;7064 SKP AD0 ;max neg exponent is 1 gtr than max pos exp.
;;7065 =0
;;7066 ET2A: AR_MQ, GEN FE-SC, ;shift low word into ARX00-34, caller
;;7067 SKP SCAD0, ;put max exponent+1 in FE. range check.
;;7068 J/ET2B
;;7069 FE_FE+1, J/ET2A ;max neg exp is 1 gtr than max pos exp.
;;7070 =0
;;7071 ET2B: FE_SC, J/ET3 ;save exp in FE.
;;7072 SET AROV, I FETCH, J/NOP;exponent is too large.
;;7073 ET3: SC_#, #/12. ;prepare to map AR12 into AR00.
;;7074
;;7075 ;We now have the high word in the AR and
;;7076 ;the low word*2 in the ARX. The SC has 12 (dec) to let the
;;7077 ;shifter strip off the sign and exponent of the high word.
;;7078 AR_SIGN, MQ_SHIFT ;put high 36 integer bits into MQ.
;;7079 AR_ARX, BR/AR, CLR ARX ;generate low 36 integer bits and
;;7080 AR_BR, ARX/MQ, MQ_SHIFT,; put in MQ. High bits to ARX.
;;7081 SC_FE-#, #/36., ;check the size of the exponent.
;;7082 SKP SCAD0 ;if exp<36. then high result is sign.
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 5-1
; EXTEXP.MIC[4,30] 17:12 9-Aug-84 GFLT TO INTEGER CONVERSION
;;7083 =0 GEN SC, SKP SCAD NE, ;is exponent gtr or geq to 36 ?
;;7084 J/ET3A
;;7085 SC_#+SC, #/37., J/ET5 ;exponent less than 36.
;;7086 =0
;;7087 ET3A: (AR+ARX+MQ)*2, J/ET3B ;must shift left 1 bit.
;;7088 BRX/ARX, SC_#+SC, #/1, ;adjust exp, save low word in BRX.
;;7089 J/ET4
;;7090 ET3B: BR_AR LONG, AR_ARX, ;high and low to BR!BRX
;;7091 SC_#, #/35., ;get a good exponent for final shifting.
;;7092 ARX/MQ, J/ET4A ;rest of fraction to ARX.
;;7093 ET4: AR_ARX (AD), ARX/MQ, ;exp gtr 36. High result has integer bits.
;;7094 MQ_SHIFT ;high result to MQ.
;;7095 AR_MQ, ARX_SHIFT ;put integer bits into ARX.
;;7096 BR_AR LONG, AR_ARX (AD),;now compute fraction.
;;7097 CLR ARX ;low integer to AR, pad with zeros in ARX.
;;7098 ET4A: AR_BR LONG, MQ_SHIFT, ;restore integer to AR!ARX, fraction to MQ.
;;7099 SC_#, #/35., ;low word must have bit 0 same as high.
;;7100 SKP AD0, RET[4] ; and return on sign of integer.
;;7101 =01
;;7102 ET5: FM[T0]_AR, AR_ARX (AD), ;sign is high 36 bit result. Save in T0.
;;7103 ARX/MQ, ;high 36 bits of frac to AR, low 23 to ARX.
;;7104 MQ_SHIFT, ;low integer result to MQ.
;;7105 CALL [SHIFT] ;high half of fraction to AR.
;;7106
;;7107 ;Now we have the high 36 bits of mantissa in AR, the low 23 bits if mantissa
;;7108 ;in the ARX, the high 36 bit result (the sign bits) in T0 and the low 36 bit
;;7109 ;result in the MQ. Now we compute the fraction to store.
;;7110 BR/AR, AR_ARX, CLR ARX ;high frac to BR. Now gen low fraction bits.
;;7111 ARX_SHIFT, ;low fraction bits to ARX.
;;7112 SC_#, #/35. ;low word must have same sign as high.
;;7113 GEN ARX*BR, AD/OR, ;gen composite OR of fraction into 1 word.
;;7114 MQ_AD, ;put this funny fraction in the MQ.
;;7115 ARX/MQ ;low integer result to ARX.
;;7116 [AR]_FM[T0], SKP AD0, ;get high result (Sign) back in AR.
;;7117 RET[4] ;and return to caller.
; 7118 .ENDIF/GFTCNV ;[273]
; 7119
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 6
; EXTEXP.MIC[4,30] 17:12 9-Aug-84 GFLT TO INTEGER CONVERSION
; 7120
; 7121 ;ISOEXP will isolate the exponent in an extended exponent data word.
; 7122 ;It will return the positive representation of the exponent.
; 7123 ;Call with AR containing high order word with "SKP AR0" to do
; 7124 ;correct things with one's complemented exponent in negative numbers.
; 7125 ;It returns 1 with the positive exponent in the AR.
; 7126 =0
U 2376, 0001,3500,2007,4000,0020,0003,0164 ; 7127 ISOEXP: [AR]_[AR]*FM[EXPMSK],AD/ANDCB,RET[1] ;isolate pos exp in AR1-11.
U 2377, 0001,2400,2007,4000,0020,0003,0164 ; 7128 [AR]_[AR]*FM[EXPMSK],AD/NOR,RET[1] ;isolate neg exp in AR1-11.
; 7129
; 7130 ;SGNEXT will extend the sign bit of the AR into AR1-11. Call with
; 7131 ;SKP AR0 so the correct actions are taken for negative numbers.
; 7132 ;It will do a return 1 with either ones or zeroes in AR1-11.
; 7133 =0
U 2400, 0001,3600,2007,4000,0020,0003,0164 ; 7134 SGNEXT: [AR]_[AR]*FM[EXPMSK], AD/AND, RET[1] ;extend 0s into AR1-11.
U 2401, 0001,2700,2007,4000,0020,0003,0164 ; 7135 [AR]_[AR]*FM[EXPMSK], AD/ORCB, RET[1] ;extend ones into AR1-11.
; 7136
; 7137 ;OVTEST will determine if the high order word of a double integer,
; 7138 ;as stored in the AR is all sign bits, ie either it is all zeroes
; 7139 ;or all ones. The call is via "GEN AR, SKP AD NE, J/OVTEST".
; 7140 ;It assumes that the double integer is in the AR/ARX and the SC
; 7141 ;contains 35 decimal.
; 7142 ;OVTEST will store the ARX*.5 and exit if the AR is all sign bits.
; 7143 ;It will set AROV and jump to NOP if it finds some data bits.
U 3065, 2402,3721,2000,0000,0020,5610,0000 ; 7144 OVTST1: AR_MQ, SKP AD NE ;get the sign bits from the MQ.
; 7145 =0
U 2402, 3066,4001,4000,0000,0217,0010,0000 ; 7146 OVTEST: AR_SHIFT, I FETCH, J/OVTST2 ;the high word is all zeros - ok.
U 2403, 2404,4001,0000,0000,0040,5610,0000 ; 7147 GEN AR+1, SKP AD NE ;check to see if it is all ones.
U 2404, 3066,4001,4000,0000,0217,0010,0000 ; 7148 =0 AR_SHIFT, I FETCH, J/OVTST2 ;this is simply a negative number.
U 2405, 0075,4001,0000,0000,0217,1110,0420 ; 7149 SET AROV, I FETCH, J/NOP ;sorry, we found some data bits.
U 3066, 0075,4001,0000,0000,0000,1010,0000 ; 7150 OVTST2: AC0_AR, J/NOP ;finish the store.
; 7151 .ENDIF/EXTEXP
; 7152
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 7
; EXTEXP.MIC[4,30] 17:12 9-Aug-84 GFLT DATA CONVERSION INSTRUCTIONS
; 7153 .TOC "GFLT DATA CONVERSION INSTRUCTIONS"
; 7154
; 7155 1013:
U 1013, 1006,0001,0000,0000,0000,0010,0000 ; 7156 L-XBLT: J/LUUO
; 7157 1014:
U 1014, 1006,0001,0000,0000,0000,0010,0000 ; 7158 L-GTPI: J/LUUO
; 7159 .IF/EXTEXP ;[337]
; 7160 1104:
U 1104, 1006,0001,0000,0000,0000,0010,0000 ; 7161 L-SFTE: J/LUUO
; 7162 1105:
U 1105, 1006,0001,0000,0000,0000,0010,0000 ; 7163 L-GTDI: J/LUUO
; 7164 1106:
U 1106, 1006,0001,0000,0000,0000,0010,0000 ; 7165 L-GTSI: J/LUUO
; 7166 1107:
U 1107, 1006,0001,0000,0000,0000,0010,0000 ; 7167 L-GTDR: J/LUUO
; 7168 1110:
U 1110, 1006,0001,0000,0000,0000,0010,0000 ; 7169 L-GTSR: J/LUUO
; 7170 1111:
U 1111, 1006,0001,0000,0000,0000,0010,0000 ; 7171 L-DITE: J/LUUO
; 7172 1112:
U 1112, 1006,0001,0000,0000,0000,0010,0000 ; 7173 L-SITE: J/LUUO
; 7174 1113:
U 1113, 1006,0001,0000,0000,0000,0010,0000 ; 7175 L-EFSC: J/LUUO
; 7176 .ENDIF/EXTEXP ;[337]
; 7177 .IF/XADDR
U 3013, 3241,3240,0204,0000,0020,0010,0000 ; 7178 3013: ARX_AC2, J/XBLT ; -20- XBLT
; 7179 .ENDIF/XADDR
;;7180 .IFNOT/EXTEXP ;[337]
;;7181 3014: J/MUUO ;[337] No GSNGL if no G floating
; 7182 .IF/EXTEXP ;[337]
U 3014, 3067,3260,2007,0000,0020,0010,0165 ; 7183 3014: [AR]_FM[E1], J/L-GTSP ; -21- GSNGL
U 3104, 3115,3240,2007,0000,0020,0010,0165 ; 7184 3104: [AR]_FM[E1], J/L-EDBL ; -22- GDBLE
; 7185 .IFNOT/GFTCNV ;[273]
U 3105, 1002,4001,0000,0000,0000,0010,0000 ; 7186 3105: J/MUUO ; -23- DGFIX ;[273]
U 3106, 1002,4001,0000,0000,0000,0010,0000 ; 7187 3106: J/MUUO ; -24- GFIX ;[273]
U 3107, 1002,4001,0000,0000,0000,0010,0000 ; 7188 3107: J/MUUO ; -25- DGFIXR ;[273]
U 3110, 1002,4001,0000,0000,0000,0010,0000 ; 7189 3110: J/MUUO ; -26- GFIXR ;[273]
;;7190 .IF/GFTCNV ;[273]
;;7191 3105: [AR]_FM[E1], J/L-GTIN ; -23- DGFIX
;;7192 3106: [AR]_FM[E1], J/L-GTIN ; -24- GFIX
;;7193 3107: [AR]_FM[E1], J/L-GTIN ; -25- DGFIXR
;;7194 3110: [AR]_FM[E1], J/L-GTIN ; -26- GFIXR
; 7195 .ENDIF/GFTCNV ;[273]
U 3111, 3132,3240,2007,0000,0020,0010,0165 ; 7196 3111: [AR]_FM[E1], J/L-FLTR ; -27- DGFLTR
U 3112, 3141,3260,2007,0000,0020,0010,0165 ; 7197 3112: [AR]_FM[E1], J/L-DFLT ; -30- GFLTR
U 3113, 2422,3240,2007,0000,0020,0010,0165 ; 7198 3113: [AR]_FM[E1], J/L-DFSC ; -31- GFSC
; 7199
; 7200
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 8
; EXTEXP.MIC[4,30] 17:12 9-Aug-84 GFLT DATA CONVERSION INSTRUCTIONS
U 3067, 3070,3703,0000,0000,0312,0010,0000 ; 7201 L-GTSP: VMA_AR, LOAD AR ;-21- GSNGL EDPFP TO SPFP
U 3070, 3071,3240,0003,0000,0022,0022,0100 ; 7202 AR_MEM, MQ_0.S ;load high word into AR.
U 3071, 2406,3703,0000,0000,0020,5610,0000 ; 7203 GEN AR, SKP AD NE ;check for zeroes.
U 2406, 0074,0001,0000,0000,0217,0010,0000 ; 7204 =0 I FETCH, J/STORAC ;high word zero, store it.
U 2407, 2410,0001,0000,0000,0000,3610,0000 ; 7205 VMA_VMA+1 ;point to mem low word.
; 7206 =0 ARX_AR, SKP AR0, ;save high word in ARX.
U 2410, 2376,4001,0400,0000,1000,4550,0000 ; 7207 CALL [ISOEXP] ;get the excess-2000 exponent.
U 2411, 3072,4001,0040,0000,0000,0410,0000 ; 7208 CLR AR, BR/AR ;exp to BR.
U 3072, 3073,4001,0000,0000,0000,0110,0220 ; 7209 AR0-8_#, #/220 ;largest exponent allowed is 2200.
U 3073, 2412,1102,0000,0000,0040,5510,0000 ; 7210 GEN AR-BR-1, SKP AD0 ;range check exponent.
U 2412, 3074,0001,0000,0000,0000,0110,0157 ; 7211 =0 AR0-8_#, #/157, J/L-GTS1;do lower range check now.(actually too low)
U 2413, 0075,0001,0000,0000,0217,1110,0620 ; 7212 SET FLOV, I FETCH, J/NOP;tough
U 3074, 3075,3242,2040,0000,0000,0010,0000 ; 7213 L-GTS1: BR/AR, AR_BR ;swap values around for next subtract.
U 3075, 2414,5102,0004,0000,0040,5510,0000 ; 7214 GEN AR-BR, SKP AD0 ;do lower range check.
U 2414, 3076,0001,0040,0000,0000,0410,0000 ; 7215 =0 BR/AR, CLR AR, J/L-GTS6 ;passed. 10 bit path to do last checks.
U 2415, 0075,4001,0000,0000,0217,1110,0630 ; 7216 SET FXU, I FETCH, J/NOP ;too low.
U 3076, 3100,0001,0000,0000,0000,0110,0160 ; 7217 L-GTS6: AR0-8_#, #/160 ;subtract 1600 to get excess 200 exp.
U 3100, 3101,3202,2040,0000,0000,0010,0000 ; 7218 AR_BR, BR/AR ;swap around to do subtract.
U 3101, 3102,5102,2000,0000,0020,0010,0000 ; 7219 AR_AR-BR ;got it.
U 3102, 3103,3203,5000,0000,0000,0010,0000 ; 7220 AR_AR*8 ;move excess-200 exponent over.
; 7221 FE_AR0-8, AR_ARX, ;put some exponent in FE. High word to AR.
U 3103, 3114,4001,4000,2421,2013,0010,0000 ; 7222 LOAD ARX ;low word to ARX.
; 7223 ;This next test determines the relative size of the exponent. If the expo-
; 7224 ;nent is less than 401 then it is a positive exponent and all will be well.
; 7225 ;If the exponent is greater than 400 (actually 700), then the exponent is
; 7226 ;really negative but bit 0 of the FE is off. To correct the sign of the
; 7227 ;exponent and to prevent undeserved FXU later because of the incorrect sign
; 7228 ;bit, we must examine the value of the exponent so as to always get the
; 7229 ;correct sign during normalization.
; 7230 ARX_MEM, GEN FE-#, ;undeserved FXU happens when FE00 should be
U 3114, 2416,3240,0003,5030,0042,5110,0500 ; 7231 #/500, SKP SCAD0;set from previous subtract of 1600.
; 7232 =0 FE_FE+#, #/777, ;set FE00. Later add will clear it.
; 7233 ARX_ARX*2, ;low word * 2.
U 2416, 2420,3701,0500,2031,0000,0010,0777 ; 7234 J/L-GTS7 ;continue.
U 2417, 2420,3701,0500,3001,0000,0010,0000 ; 7235 FE_FE-1, ARX_ARX*2 ;adjust FE so later add gets right exp.
; 7236 =0
U 2420, 2400,4001,0000,0000,0000,4550,0000 ; 7237 L-GTS7: SKP AR0, CALL [SGNEXT] ;sign extend high word.
; 7238 AR_AR*.25 LONG, ;prepare for normalization
; 7239 FE_FE+#, #/6, ;adjust exponent.
U 2421, 1240,3703,7700,2031,0040,0035,0006 ; 7240 NORM, J/SNORM ;finish up.
; 7241
U 3115, 3116,3701,0000,0000,0312,0010,0000 ; 7242 L-EDBL: VMA_AR, LOAD AR ;-22- GDBLE SPFP to EXTENDED EXPONENT
U 3116, 3117,3240,0003,0000,0022,0710,0003 ; 7243 AR_MEM, CLR MQ
U 3117, 3120,0001,0400,0202,1000,0410,0000 ; 7244 SC_EXP, ARX_AR, CLR AR ;correct the expoent, save a copy in the ARX
U 3120, 3121,4001,0007,0000,0000,1010,0165 ; 7245 FM[E1]_AR ;no sticky bits here.
U 3121, 3122,4001,0000,2400,2001,0010,0200 ; 7246 EXP_SC ;put the "positive" exponent back IN THE AR.
U 3122, 3123,0303,7000,0000,0020,0010,0000 ; 7247 AR_AR*.5 ;must move exponent into AR4-11
U 3123, 3124,3701,7000,0000,0000,0010,0000 ; 7248 AR_AR*.25 ; done.
U 3124, 3125,4001,0040,0000,0000,0410,0000 ; 7249 BR/AR, CLR AR ;exp to BR.
U 3125, 3126,4001,0000,0000,0000,0110,0160 ; 7250 AR0-8_#, #/160 ;put 1600 in the AR for exp conversion
U 3126, 3127,0602,2004,0301,0020,0010,0775 ; 7251 AR_AR+BR, FE_#, #/-3 ;convert exp, set initial exp correction
U 3127, 3130,4001,4007,0000,2000,1010,0172 ; 7252 FM[T2]_AR, AR_ARX ;save exp for ENORM, frac to AR
U 3130, 3131,4001,0000,0000,1001,0610,0240 ; 7253 EXP_SIGN.C, ARX_0.M ;get rid of exp, clear low word
; 7254 GEN AR, SC_#, #/3, NORM,;normalize an extended exponent number
U 3131, 1560,3701,0000,0302,0040,0035,0003 ; 7255 J/ENORM
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 9
; EXTEXP.MIC[4,30] 17:12 9-Aug-84 GFLT DATA CONVERSION INSTRUCTIONS
; 7256
;;7257 .IF/GFTCNV ;[273]
;;7258 L-GTIN: VMA_AR, LOAD AR ;23-26. fetch high word.
;;7259 AR_MEM, MQ_0.S, ;word in AR, init MQ.
;;7260 VMA_VMA+1 ;prepare to fetch low word.
;;7261 GEN AR, SKP AD NE ;is high word all zeroes ?
;;7262 =0 CLR ARX, EXIT DBL ;high word zero, store zeroes.
;;7263 LOAD ARX, B DISP ;fetch low word, call appropriate routine.
;;7264
;;7265 =000 ARX_MEM, J/L-G23 ;do GDP to DP integer, truncate.
;;7266 =010 ARX_MEM, J/L-G24 ;do GDP to SP integer, truncate.
;;7267 =100 ARX_MEM, J/L-G25 ;do GDP to DP integer, rounded.
;;7268 =110 ARX_MEM, J/L-G26 ;do GDP to SP integer, rounded.
;;7269 = ;terminate this dispatch block.
;;7270
;;7271 ;DGFIX needs the sticky bit fix.
;;7272 =0010
;;7273 L-G23: FE_#, #/70., ;-23- DGFIX GDP to double integer, truncate.
;;7274 CALL [ETXIX] ;do the conversion
;;7275 =0110 EXIT DBL ;store results.
;;7276 =0111 BR_AR LONG, AR_ARX, ;save high 2 words in BR!BRX, MSB of
;;7277 ARX/MQ, ;fraction to AR35. Rest of fraction to ARX.
;;7278 SC_#, #/35., ;get fraction all together.
;;7279 CALL [EF12A]
;;7280 =1111 GEN AR, SKP AD NE, ;any fraction bits on ?
;;7281 MQ_0.S ;[240]CLEAR MQ00 FOR ARX_2 MACRO.
;;7282 =0 AR_BR LONG, J/ST2AC ;no, leave answer alone.
;;7283 CLR AR, ARX_2 ;yes, add 1 to integer part.
;;7284 AR_AR+BR LONG, J/ST2AC ;store result.
;;7285
;;7286 ;GFIX needs the sticky bit fix.
;;7287 =0010
;;7288 L-G24: FE_#, #/35., ;-24- GFIX GDP to single integer, truncate.
;;7289 CALL [ETXIX] ;do the conversion
;;7290 =0110
;;7291 L-GTS2: SKP AR NE, J/OVTEST ;test for sign bits in AR and store.
;;7292 =0111 BR_AR LONG, AR_ARX, ;save in BR!BRX.
;;7293 ARX/MQ, ;add one to integer part of negative number
;;7294 SC_#, #/35., ;if fraction is not zero.
;;7295 CALL [EF12A]
;;7296 =1111 GEN AR, SKP AD NE, ;is fraction zero ?
;;7297 MQ_0.S ;[240]CLEAR MQ00 FOR ARX_2 MACRO.
;;7298 =0 AR_BR LONG, SKP AD NE, ;yes, try to store the result.
;;7299 J/OVTEST
;;7300 CLR AR, ARX_2 ;no, add one to integer part.
;;7301 AR_AR+BR LONG, SKP AD NE,; do the add and test that the high
;;7302 J/OVTEST ;word is all sign bits.
;;7303
;;7304 =011
;;7305 L-G25: FE_#, #/70., ;-25- DGFIXR GDP to double integer, rounded.
;;7306 CALL [ETXIX] ;do the conversion
;;7307 =111 BR_AR LONG, CLR AR, ;save in BR!BRX, round by adding one half
;;7308 ARX_1, ;to result. Remember that the MSB of the
;;7309 SC_#, #/35. ;store routine expects this.
;;7310 AR_AR+BR LONG, AD FLAGS ;fraction is on ARX35. Do the rounding and
;;7311 ;=0 ; replace SKP CRY0 with AD FLAGS. Eliminates extra word.
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 9-1
; EXTEXP.MIC[4,30] 17:12 9-Aug-84 GFLT DATA CONVERSION INSTRUCTIONS
;;7312 EXIT DBL ; store the double result.
;;7313 ; SET AROV, I FETCH, J/NOP;rounding caused an overflow - too bad!
;;7314
;;7315 =011
;;7316 L-G26: FE_#, #/35., ;-26- GFIXR GDP to single integer, rounded.
;;7317 CALL [ETXIX] ;do the conversion.
;;7318 =111 BR_AR LONG, CLR AR, ;save in CR!BRX, round by adding one half
;;7319 ARX_1, ;to result. MSB of the fraction is in ARX35.
;;7320 SC_#, #/35. ;store routine expects this.
;;7321 AR_AR+BR LONG, SKP AD NE,;do the rounding.
;;7322 J/OVTEST ;figure out what, if any, to store.
; 7323 .ENDIF/GFTCNV ;[273]
; 7324 L-FLTR: VMA_AR, LOAD AR, ;-27- DGFLTR DP INTEGER to EDPFP
U 3132, 3133,3701,0000,0301,0312,0010,0137 ; 7325 FE_#, #/137 ;inital fugde factor for exp
U 3133, 0734,3240,0003,0000,0022,0022,0100 ; 7326 AR_MEM, MQ_0.S ;get high word into the AR.
; 7327 =0* VMA_VMA+1, LOAD ARX, ;get the low word into the ARX,
U 0734, 1023,0001,0040,0000,0013,3650,0000 ; 7328 BR/AR, CALL [XFERW]; and save the high word in the BR.
U 0736, 3134,3721,0500,0000,0000,0410,0000 ; 7329 =1* ARX_ARX*2, CLR AR ;ignore the sign copy.
U 3134, 3135,4001,0007,0000,0000,1010,0165 ; 7330 FM[E1]_AR ;no sticky bits here.
U 3135, 3136,0001,0000,0000,0000,0110,0200 ; 7331 AR0-8_#, #/200 ;ENORM expects the exponent in T2.
; 7332 FM[T2]_AR, AR_BR, ;and save it in T2.
U 3136, 3137,3242,2217,0000,2000,1010,0172 ; 7333 ARX/AD, MQ_ARX ;sign to AR, high to ARX, low to MQ.
U 3137, 3140,5401,2000,0000,0020,0016,0000 ; 7334 AR_SIGN ;
U 3140, 1560,3703,0000,0000,0040,0035,0000 ; 7335 GEN AR, NORM, J/ENORM ;restore high word and normalize.
; 7336
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 10
; EXTEXP.MIC[4,30] 17:12 9-Aug-84 GFLT DATA CONVERSION INSTRUCTIONS
; 7337
; 7338 L-DFLT: VMA_AR, LOAD AR, ;-30- GFLTRSP INTEGER to EDPFP
U 3141, 3142,3703,0000,0301,0312,0010,0004 ; 7339 FE_#, #/4 ;initial fudge factor for exp.
U 3142, 3143,3200,0003,0000,0022,0710,0003 ; 7340 AR_MEM, CLR MQ ;get the single precision op.
U 3143, 3144,5441,2400,0000,1020,0016,0000 ; 7341 AR_SIGN, ARX_AR ;build a dummy high word of all sign.
U 3144, 3145,4001,0040,0000,0000,0410,0000 ; 7342 BR/AR, CLR AR ;save sign, prepare for exponent.
U 3145, 3146,0001,0007,0000,0000,1010,0165 ; 7343 FM[E1]_AR ;no sticky bits here.
U 3146, 3147,4001,0000,0000,0000,0110,0207 ; 7344 AR0-8_#, #/207 ;build an initial exp of 207 for ENORM
; 7345 FM[T2]_AR, AR_BR, ;save exp for ENORM, restore sign word.
U 3147, 1560,3242,2007,0000,0040,1035,0172 ; 7346 NORM, J/ENORM ;and normalize it.
; 7347
; 7348 =0
; 7349 L-DFSC: AR_AC0, BR/AR, SKP AD0, ;-31- GFSC EDPFP SCALE
U 2422, 2376,3240,2040,0000,0020,5550,0000 ; 7350 CALL [ISOEXP] ;get the exponent into the AR.
U 2423, 3150,3242,2040,0000,0000,0010,0000 ; 7351 BR/AR, AR_BR ;put exp in BR, scale factor to AR.
; 7352 AR_AR SWAP, GEN AC0, ;put scale in left half of AR.
U 3150, 2424,3240,4000,0000,3020,5610,0000 ; 7353 SKP AD NE ;is high word zero ?
U 2424, 0061,4001,0000,0000,0001,0010,0170 ; 7354 =0 AR+ARX+MQ_0.M, J/ST2AC ;yes, store zero as double result.
; 7355 AR_SIGN, ARX_AR, SC_#, ;no, move sign and scale factor together.
U 2425, 3151,5441,2400,0302,1020,0016,0042 ; 7356 #/34.
U 3151, 3152,0001,4000,0401,0000,0010,0000 ; 7357 AR_SHIFT, CLR FE ;sign now in AR00, scale in AR 9-19.
U 3152, 3153,4001,0000,0000,1000,0022,0200 ; 7358 EXP_SIGN ;scale sign is in AR00; extend it.
U 3153, 3154,4001,0000,0302,0000,0010,0010 ; 7359 SC_#, #/8. ;move scale factor into AR 1-11 and
U 3154, 3155,3200,4201,0000,0020,0010,0000 ; 7360 AR_SHIFT, ARX_AC1 ; put the sign to left of scale factor.
U 3155, 3156,0602,2004,0000,0020,0710,0003 ; 7361 AR_AR+BR, CLR MQ ;add exponent and scale factor.
U 3156, 0443,4001,0000,0000,1020,0007,0000 ; 7362 SH/AR, DISP/SH0-3 ;check for over and under flovs.
; 7363 =0011
; 7364 L-FSC2: [AR]_[AR]*FM[EXPMSK], ;clear out non-exponent bits.
; 7365 AD/ANDCB, ;and AR00 in the over or under flow case.
U 0443, 3157,3500,2007,4000,0020,0010,0164 ; 7366 J/L-FSC3 ; and continue
; 7367 =0111 [AR]_[AR]*FM[EXPMSK], ;clear out non-exponent bits.
; 7368 AD/ANDCB, ;
U 0447, 3157,3500,2007,4000,0020,0010,0164 ; 7369 J/L-FSC3 ; and continue
U 0453, 0443,0001,0000,0000,0000,1110,0620 ; 7370 =1011 SET FLOV, J/L-FSC2 ;you lose
U 0457, 0443,4001,0000,0000,0000,1110,0630 ; 7371 =1111 SET FXU, J/L-FSC2 ;ditto
; 7372
U 3157, 2426,3701,0507,0000,0000,1010,0172 ; 7373 L-FSC3: FM[T2]_AR, ARX_ARX*2 ;save new exponent fofr ENORM.
; 7374 =0 AR_AC0, SKP AD0, ;get the high word.
; 7375 SC_#, #/3, ;for ENORM.
U 2426, 2400,3240,2000,0302,0020,5550,0003 ; 7376 CALL [SGNEXT] ;and sign extend it for ENORM as well.
U 2427, 1560,3703,0000,0000,0040,0035,0000 ; 7377 GEN AR, NORM, J/ENORM ;put the result back together.
; 7378
; 7379 .ENDIF/EXTEXP
; 7380 .ENDIF/MODEL.B
; 7381
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 1
; BYTE.MIC[4,30] 17:12 9-Aug-84 BYTE GROUP -- IBP, ILDB, LDB, IDPB, DPB
; 7382 .TOC "BYTE GROUP -- IBP, ILDB, LDB, IDPB, DPB"
; 7383
; 7384 .DCODE
; 7385 ;133: R, J/IBP ;OR ADJBP
D 0134, 6000,0310 ; 7386 134: RW, J/ILDB ;CAN'T USE RPW BECAUSE OF FPD
D 0135, 4000,0314 ; 7387 R, J/LDB ;
D 0136, 6000,0400 ; 7388 RW, J/IDPB ;
D 0137, 4000,0404 ; 7389 R, J/DPB ;
; 7390 .UCODE
; 7391
; 7392 ;ALL FIVE INSTRUCTIONS OF THIS GROUP ARE CALLED WITH THE BYTE POINTER
; 7393 ;IN THE AR. ALL INSTRUCTIONS SHARE COMMON SUBROUTINES, SO THAT
; 7394 ;THE 10/11 INTERFACE AND STRING MAY ALSO USE THESE SUBROUTINES
; 7395
; 7396 =0****00*000
;;7397 .IFNOT/OWGBP
;;7398 ILDB: BR/AR,P_P-S,BYTE DISP, ;START IBP
;;7399 CALL.M,J/IBPS ;AND CALL SUBR
;;7400 =100
;;7401 .IFNOT/XADDR
;;7402 LDB: ARX_AR,SC_P,CALL,J/BYTEA ;BEGIN EA COMPUTATION
;;7403 .IF/XADDR
;;7404 LDB: ARX_AR,SC_P,BYTE DISP,
;;7405 CALL,J/BYTEA ;BEGIN EA COMPUTATION
;;7406 .ENDIF/XADDR
;;7407 SC_FE+SC,CALL,J/LDB1 ;SC_P+S WHILE LOADING AR
;;7408 =111 AC0_AR,CLR FPD,I FETCH,J/NOP ;DONE
;;7409 =
; 7410 .IF/OWGBP ;[265][251]
U 0310, 2432,4001,0000,0000,0000,5050,0000 ; 7411 ILDB: SKP PC SEC0,CALL,J/GTST ;TEST FOR NOT SEC 0 AND OWGBP [266]
U 0311, 1660,4001,0040,0000,0000,0010,0000 ; 7412 BR/AR,J/ILDB0 ; NO, CONTINUE
; 7413 BYTE PREV & CLR SR3,
U 0312, 2430,0001,0000,0000,0000,1650,0640 ; 7414 CALL [GBYTE] ;[255]YES, ENA PREVIOUS
; 7415 GEN AR, EXT BYTE READ, ;GET BYTE
U 0313, 1665,3703,0000,0000,1111,1610,0620 ; 7416 SR_#, J/LDB01 ;[255]ALLOW PREVIOUS ENABLE.
; 7417 =100
U 0314, 2432,4001,0000,0000,0000,5050,0000 ; 7418 LDB: SKP PC SEC0,CALL,J/GTST ;TEST FOR NOT SEC 0 AND OWGBP [266]
U 0315, 1664,0001,0440,0000,1000,0010,0000 ; 7419 ARX_AR,BR/AR,J/LDB0 ;NO, CONTINUE
; 7420 BYTE PREV & SET SR3,
U 0316, 2430,4001,0000,0000,0000,1650,0641 ; 7421 CALL [GBYTE] ;[255]YES, ENA PREVIOUS
; 7422 GEN AR,EXT BYTE READ, ;GET BYTE
U 0317, 1665,3703,0000,0000,1111,1610,0620 ; 7423 SR_#, J/LDB01 ;[255]ALLOW PREVIOUS ENABLE.
; 7424 =
; 7425 =000
; 7426 ILDB0: P_P-S,BYTE DISP,
U 1660, 1700,4001,0000,5110,3021,0074,0200 ; 7427 CALL.M,J/IBPS ;START IBP
; 7428 =100
; 7429 LDB0: ARX_AR,SC_P,BYTE DISP,
U 1664, 1714,4001,0400,0102,1020,0074,0000 ; 7430 CALL,J/BYTEA ;DO EA COMP
U 1665, 2444,0001,0000,2002,0000,0050,0000 ; 7431 LDB01: SC_FE+SC,CALL,J/LDB1 ;SC_P+S WHILE LOAD AR
U 1667, 0075,4001,0000,0000,0217,1014,0000 ; 7432 =111 AC0_AR,CLR FPD,I FETCH,J/NOP ;DONE
; 7433
; 7434
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 2
; BYTE.MIC[4,30] 17:12 9-Aug-84 BYTE GROUP -- IBP, ILDB, LDB, IDPB, DPB
; 7435
; 7436 =0
U 2430, 3226,4001,0040,0000,0000,0050,0000 ; 7437 GBYTE: BR/AR,CALL,J/CNV2WD ;CONVERT TO A 2WD FORMAT
U 2431, 0476,0001,0000,0102,0000,0005,0000 ; 7438 SC_P,SR DISP ;SAVE P, INC POINTER ?
U 0476, 0571,3242,2000,0000,0020,0074,0000 ; 7439 =1110 AR_BR,BYTE DISP,CALL,J/INC2WD ;YES, (INC ADDR) AND STORE
U 0477, 0001,3202,2000,0000,0000,1603,0300 ; 7440 AR_BR,SR_#,#/300,RETURN1 ;[335][353] GET whole ADDRESS and
; 7441 ; reset memory state
; 7442 =0
U 2432, 2434,4001,0000,5132,0020,5110,0045 ; 7443 GTST: SC_P-#,#/45, SKP SCAD0,J/GTST1 ;TEST FOR ONE WORD GLOBAL [265]
U 2433, 0001,4001,0000,0000,0000,0003,0000 ; 7444 RETURN1 ;NOT IN SEC 0
; 7445 =0
U 2434, 0002,0001,0040,0000,0000,0003,0000 ; 7446 GTST1: BR/AR,RETURN2 ;DO OWG CODE
U 2435, 0001,4001,0000,0000,0000,0003,0000 ; 7447 RETURN1 ;NOT OWG
; 7448 .ENDIF/OWGBP ;[265][251]
; 7449 =
; 7450
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 3
; BYTE.MIC[4,30] 17:12 9-Aug-84 BYTE GROUP -- IBP, ILDB, LDB, IDPB, DPB
; 7451
; 7452 =0****00*000
;;7453 .IFNOT/OWGBP ;[265]
;;7454 IDPB: BR/AR,P_P-S,BYTE DISP, ;START IBP
;;7455 CALL.M,J/IBPS
;;7456 =100
;;7457 .IFNOT/XADDR
;;7458 .IFNOT/SMP
;;7459 DPB: ARX_AR,SC_P,CALL,J/BYTEA ;COMPUTE EFFECTIVE BYTE ADDR
;;7460 .IF/SMP
;;7461 DPB: ARX_AR,SC_P,CALL,J/BYTEAP ;COMPUTE EFFECTIVE BYTE ADDR
;;7462 .ENDIF/SMP
;;7463 .IF/XADDR
;;7464 .IFNOT/SMP ;[324]
;;7465 DPB: ARX_AR,SC_P,BYTE DISP,
;;7466 CALL,J/BYTEA ;COMPUTE EFFECTIVE BYTE ADDR
;;7467 .IF/SMP ;[324]
;;7468 DPB: ARX_AR,SC_P,BYTE DISP, ;[324] SMP. Must interlock
;;7469 CALL,J/BYTEAP ;COMPUTE EFFECTIVE BYTE ADDR
;;7470 .ENDIF/SMP ;[324]
;;7471 .ENDIF/XADDR
;;7472 =101
;;7473 AR_AC0,TIME/3T,SC_#-SC,#/36., ;COMPUTE 36-P
;;7474 CALL,SKP SCAD0,J/DPB1 ;CALL DEPOSITOR
;;7475 =111
;;7476 BFIN: FIN STORE,I FETCH,J/CLRFPD ;DONE
; 7477 .IF/OWGBP ;[265][251]
U 0400, 2432,4001,0000,0000,0000,5050,0000 ; 7478 IDPB: SKP PC SEC0,CALL,J/GTST ;TEST FOR NOT SEC 0 AND OWGBP [266]
U 0401, 1670,0001,0040,0000,0000,0010,0000 ; 7479 BR/AR,J/IDPB0 ; NO, CONTINUE
; 7480 BYTE PREV & CLR SR3,
U 0402, 2430,0001,0000,0000,0000,1650,0640 ; 7481 CALL [GBYTE] ;[255]YES, ENA PREVIOUS
; 7482 GEN AR, EXT BYTE READ, ;GET BYTE
U 0403, 1675,3703,0000,0000,1111,0010,0620 ; 7483 J/DPB01
; 7484 =100
U 0404, 2432,4001,0000,0000,0000,5050,0000 ; 7485 DPB: SKP PC SEC0,CALL,J/GTST ;TEST FOR NOT SEC 0 AND OWGBP [266]
U 0405, 1674,4001,0440,0000,1000,0010,0000 ; 7486 ARX_AR,BR/AR,J/DPB0 ;NO, CONTINUE
; 7487 BYTE PREV & SET SR3,
U 0406, 2430,4001,0000,0000,0000,1650,0641 ; 7488 CALL [GBYTE] ;[255]YES, ENA PREVIOUS
; 7489 GEN AR,EXT BYTE READ, ;GET BYTE
U 0407, 1675,3703,0000,0000,1111,0010,0620 ; 7490 J/DPB01 ;[256]
; 7491 =
; 7492 =000
; 7493 IDPB0: P_P-S,BYTE DISP, ;START IBP
U 1670, 1700,4001,0000,5110,3021,0074,0200 ; 7494 CALL.M,J/IBPS
; 7495 =100
;;7496 .IF/SMP
;;7497 DPB0: ARX_AR,SC_P,BYTE DISP,
;;7498 CALL,J/BYTEAP ;DO EA COMP
; 7499 .IFNOT/SMP
; 7500 DPB0: ARX_AR,SC_P,BYTE DISP,
U 1674, 1714,4001,0400,0102,1020,0074,0000 ; 7501 CALL,J/BYTEA ;DO EA COMP
; 7502 .ENDIF/SMP
; 7503 DPB01: AR_AC0,TIME/3T,SC_#-SC,#/36., ;COMPUTE 36-P
U 1675, 2452,3240,2000,5302,0020,5150,0044 ; 7504 CALL,SKP SCAD0,J/DPB1 ;CALL DEPOSITOR
; 7505 =111
U 1677, 0020,4001,0003,0000,0217,0010,0000 ; 7506 BFIN: FIN STORE,I FETCH,J/CLRFPD ;DONE
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 3-1
; BYTE.MIC[4,30] 17:12 9-Aug-84 BYTE GROUP -- IBP, ILDB, LDB, IDPB, DPB
; 7507 .ENDIF/OWGBP ;[265][251]
; 7508 =
; 7509
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 4
; BYTE.MIC[4,30] 17:12 9-Aug-84 INCREMENT BYTE POINTER SUBROUTINE
; 7510 .TOC "INCREMENT BYTE POINTER SUBROUTINE"
; 7511
; 7512 ;THIS SUBROUTINE IS CALLED BY THE INSTRUCTIONS ILDB, IDPB AS
; 7513 ;WELL AS THE MICROCODED 10/11 INTERFACE HANDLER.
; 7514 ;CALL WITH BYTE DISP TESTING FPD AND SIGN OF P-S
; 7515 ;[TIME=2+2(BP OVFLO)]
; 7516
;;7517 .IFNOT/XADDR
;;7518 =010 ;BR12 IRELEVANT
;;7519 IBPS: STORE,RETURN4 ;SIMPLE, NO OVERFLOW
;;7520 FE_#,#/36.,GEN AR+1,TIME/2T, ;HERE IF OVRFLO OF WORD
;;7521 ARX_AR,J/NXTWRD
;;7522 AR_BR,RETURN4 ;FPD WAS SET, RESTORE AR
;;7523 AR_BR,RETURN4 ; AND CONVERT TO LDB OR DPB
;;7524 ;TEST BR12 ONLY
;;7525 NXTWRD: AR_AR+1,P_FE-S,STORE,
;;7526 TIME/2T,RETURN4
;;7527
;;7528
;;7529 .TOC "BYTE EFFECTIVE ADDRESS EVALUATOR - NO XADDR"
;;7530
;;7531 ;ENTER WITH POINTER IN AR, ARX, AND BR
;;7532 ;RETURN1 WITH (EA) LOADING INTO AR AND ARX,
;;7533 ;FPD SET, P IN SC, AND S IN FE
;;7534 ;[TIME=4+1(INDEXED)+?(INDIRECT)]
;;7535
;;7536 BYTEA: MEM_AR,FE_S,SET FPD, ;PUT AWAY UPDATED POINTER
;;7537 EA MOD DISP ;EVAL BP ADDR
;;7538 =1100
;;7539 BFETCH: GEN ARX,BYTE READ,RETURN1 ;START DATA FETCH
;;7540 GEN ARX+XR,BYTE READ,RETURN1 ;ADDRESS IS INDEXED
;;7541 GEN ARX,BYTE INDRCT,J/BYTEI ;DO INDIRECT
;;7542 GEN ARX+XR,BYTE INDRCT,J/BYTEI ;INDIRECT INDEXED!!!
;;7543
;;7544 BYTEI: ARX_MEM,SKP INTRPT ;WAIT FOR INDIRECT WORD
;;7545 =0 EA MOD DISP,J/BFETCH ;PROCEED IN ADDR EVAL
;;7546 SR DISP,J/CLEAN ;INTERRUPTED, CLEAN UP AS REQ'D
;;7547 .IF/SMP
;;7548 BYTEAP: MEM_AR,FE_S,SET FPD, ;PUT AWAY UPDATED POINTER
;;7549 EA MOD DISP ;EVAL BP ADR
;;7550
;;7551 =1100
;;7552 BFETCHP:GEN ARX,BYTE RPW,RETURN1 ;START DATA FETCH. RPW CYCLE
;;7553 GEN ARX+XR,BYTE RPW,RETURN1 ;ADDRESS IS INDEXED
;;7554 GEN ARX,BYTE INDRCT,J/BYTEIP ;DO INDIRECT
;;7555 GEN ARX+XR,BYTE INDRCT,J/BYTEIP ;INDIRECT INDEXED!!!
;;7556
;;7557 BYTEIP: ARX_MEM,SKP INTRPT ;WAIT FOR INDIRECT WORD
;;7558 =0 EA MOD DISP,J/BFETCHP ;[231] PROCEED IN ADR EVAL
;;7559 SR DISP,J/CLEAN ;INTERRUPTED. CLEAN UP AS REQ'D
;;7560 .ENDIF/SMP
; 7561 .IF/XADDR
; 7562
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 5
; BYTE.MIC[4,30] 17:12 9-Aug-84 INCREMENT BYTE POINTER SUBROUTINE
; 7563 ;IBP SUBROUTINE
; 7564 ; CALL WITH BP IN AR, P_P-S, BYTE DISP
; 7565
; 7566 =000
U 1700, 0004,0001,0000,0000,0016,0003,0000 ; 7567 IBPS: STORE,RETURN4 ;SIMPLE CASE
; 7568 FE_#,#/36.,GEN AR+1,TIME/2T, ;POINTER OVERFLOW, B12=0
U 1701, 2436,4003,0000,0301,0000,0010,0044 ; 7569 J/NXTWRD
U 1702, 0004,0001,0000,0000,0016,0003,0000 ; 7570 STORE,RETURN4 ;B12=1 BUT NO OVERFLOW
; 7571 FE_#,#/36.,GEN AR+1,TIME/2T, ;OVERFLOW, B12=1
U 1703, 2436,4001,0000,0301,0000,7510,0044 ; 7572 SKP -VMA SEC0,J/NXTWRD
U 1704, 0004,3242,2000,0000,0000,0003,0000 ; 7573 AR_BR,RETURN4
U 1705, 0004,3242,2000,0000,0000,0003,0000 ; 7574 AR_BR,RETURN4
U 1706, 0004,3242,2000,0000,0000,0003,0000 ; 7575 AR_BR,RETURN4
U 1707, 0004,3242,2000,0000,0000,0003,0000 ; 7576 AR_BR,RETURN4
; 7577 =0
; 7578 NXTWRD: P_FE-S,AR_AR+1,TIME/2T, ;SINGLE WORD BP
U 2436, 0004,4001,2000,5010,3016,0603,0200 ; 7579 STORE,RETURN4
U 2437, 3160,4001,0000,5010,3012,3622,0200 ; 7580 VMA_VMA+1,LOAD AR,P_FE-S.S ;DOUBLE... GET OTHER HALF
U 3160, 3161,3240,0403,0000,1022,0010,0000 ; 7581 ARX_AR,AR_MEM
U 3161, 2440,4003,2040,0102,0020,4510,0000 ; 7582 SC_P,SKP AR0,BR/AR,AR_AR+1 ;IFIW OR EFIW?
U 2440, 3162,4001,0000,2400,3016,0110,0000 ; 7583 =0 P_SC#,STORE,J/NXTW2 ;EFIW, CARRY STOPS AT B6
U 2441, 3162,3202,0000,0000,0016,0610,0002 ; 7584 ARL_BRL,STORE ;IFIW, CARRY STOPS AT B18
; 7585 NXTW2: FIN STORE,AR_ARX,
U 3162, 0004,0001,4003,0000,2016,3503,0000 ; 7586 VMA_VMA-1,STORE,RETURN4
; 7587
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 6
; BYTE.MIC[4,30] 17:12 9-Aug-84 INCREMENT BYTE POINTER SUBROUTINE
; 7588 ;HERE TO EVALUATE EFFECTIVE ADDRESS OF BYTE POINTER.
; 7589 ; ENTER AT BYTEA WITH BYTE DISP (SCAD0=0), EXCEPT FOR EXTENDED
; 7590 ; INSTRUCTION SET, WHICH MUST GET SECOND PART OF POINTER FROM
; 7591 ; AC AND MUST NOT SET FPD, AND THEREFORE ENTERS AT BFETCH (FOR
; 7592 ; SINGLE-WORD POINTERS) OR BYTEI (FOR LONG POINTERS).
; 7593
; 7594 =100
; 7595 BYTEA: MEM_AR,FE_S,SET FPD,
U 1714, 0534,2301,0003,2411,0002,1136,0100 ; 7596 EA MOD DISP,J/BFETCH
U 1715, 3163,4001,0000,2411,0011,3610,0610 ; 7597 READ BP2,FE_S,J/BPART2 ;GET SECOND WORD
U 1716, 1714,4001,0003,0000,0002,7510,0000 ; 7598 MEM_AR,SKP -VMA SEC0,J/BYTEA ;B12=1. OBEY IF NOT SEC0
; 7599 =
; 7600 =0000
; 7601 BXA: GEN ARX,GLOBAL,BYTE INDRCT,
U 0520, 2442,3713,0000,0000,1111,7010,0610 ; 7602 SKP INTRPT,J/BYTEI
; 7603 GEN ARX+XR,GLOBAL,BYTE INDRCT,
U 0521, 2442,0610,0002,4000,1131,7010,0610 ; 7604 SKP INTRPT,J/BYTEI
; 7605 GEN ARX,GLOBAL,BYTE INDRCT,
U 0522, 2442,3713,0000,0000,1111,7010,0610 ; 7606 SKP INTRPT,J/BYTEI
; 7607 GEN ARX+XR,GLOBAL,BYTE INDRCT,
U 0523, 2442,0610,0002,4000,1131,7010,0610 ; 7608 SKP INTRPT,J/BYTEI
; 7609
U 0524, 0001,3711,0000,0000,1111,0003,0620 ; 7610 GEN ARX,GLOBAL,BYTE READ,RETURN1
U 0525, 0001,0610,0002,0000,1131,0003,0620 ; 7611 GEN ARX+XR,GLOBAL,BYTE READ,RETURN1
U 0526, 0001,3711,0000,0000,1111,0003,0620 ; 7612 GEN ARX,GLOBAL,BYTE READ,RETURN1
U 0527, 0001,0610,0002,0000,1131,0003,0620 ; 7613 GEN ARX+XR,GLOBAL,BYTE READ,RETURN1
; 7614
U 0530, 0170,0001,0000,0301,0000,0010,0024 ; 7615 FE_#,#/24,J/PF24 ;ILLEGAL FORMAT INDIRECT WORD
U 0531, 0170,0001,0000,0301,0000,0010,0024 ; 7616 FE_#,#/24,J/PF24
U 0532, 0170,0001,0000,0301,0000,0010,0024 ; 7617 FE_#,#/24,J/PF24
U 0533, 0170,0001,0000,0301,0000,0010,0024 ; 7618 FE_#,#/24,J/PF24
; 7619
; 7620 BFETCH:
U 0534, 0001,3701,0000,0000,0111,0003,0620 ; 7621 GEN AR,BYTE READ,RETURN1
U 0535, 0001,0600,0002,4000,2131,0003,0620 ; 7622 GEN AR+XR,INDEXED,BYTE READ,RETURN1
; 7623 GEN AR,BYTE INDRCT,
U 0536, 2442,3703,0000,0000,0111,7010,0610 ; 7624 SKP INTRPT,J/BYTEI
; 7625 GEN AR+XR,INDEXED,BYTE INDRCT,
U 0537, 2442,0600,0002,0000,2131,7010,0610 ; 7626 SKP INTRPT,J/BYTEI
; 7627
U 3163, 2442,0001,0000,0000,0000,1110,0100 ; 7628 BPART2: SET FPD ;SET BEFORE FAULTING
; 7629 =0
U 2442, 3164,3200,0003,0000,0022,2510,0000 ; 7630 BYTEI: ARX_MEM,LONG EN,J/BYTEI2
U 2443, 0144,3200,0003,0000,0022,7710,0000 ; 7631 ARX_MEM,TAKE INTRPT
U 3164, 0520,2301,4002,0000,2020,0036,0000 ; 7632 BYTEI2: AR_ARX,XR,EA MOD DISP,TIME/3T,J/BXA
; 7633
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 7
; BYTE.MIC[4,30] 17:12 9-Aug-84 BYTE EFFECTIVE ADDRESS EVALUATOR FOR XADDR SMP LDB
; 7634 .TOC "BYTE EFFECTIVE ADDRESS EVALUATOR FOR XADDR SMP LDB"
; 7635
; 7636 ;
; 7637 ; The following code segment is virtually identical to the preceding
; 7638 ; hunk. Unfortunately, in order to make DPB do an RPW interlock and
; 7639 ; allow extended addressing, it is necessary to completely duplicate
; 7640 ; the effective address evaluation code (as it exits from a 16 word
; 7641 ; dispatch block). Thus we waste gross amounts of microstore. Ugh.
; 7642 ;
;;7643 .IF/SMP ; [303]
;;7644 =100
;;7645 BYTEAP: MEM_AR,FE_S,SET FPD,
;;7646 EA MOD DISP,J/BFETCHP
;;7647 READ BP2,FE_S,J/BPART2P ;GET SECOND WORD
;;7648 MEM_AR,SKP -VMA SEC0,J/BYTEAP ;B12=1. OBEY IF NOT SEC0
;;7649 =
;;7650 =0000
;;7651 BXAP: GEN ARX,GLOBAL,BYTE INDRCT,
;;7652 SKP INTRPT,J/BYTEIP
;;7653 GEN ARX+XR,GLOBAL,BYTE INDRCT,
;;7654 SKP INTRPT,J/BYTEIP
;;7655 GEN ARX,GLOBAL,BYTE INDRCT,
;;7656 SKP INTRPT,J/BYTEIP
;;7657 GEN ARX+XR,GLOBAL,BYTE INDRCT,
;;7658 SKP INTRPT,J/BYTEIP
;;7659
;;7660 GEN ARX,GLOBAL,BYTE RPW,RETURN1 ; [303] Interlock for SMP
;;7661 GEN ARX+XR,GLOBAL,BYTE RPW,RETURN1
;;7662 GEN ARX,GLOBAL,BYTE RPW,RETURN1
;;7663 GEN ARX+XR,GLOBAL,BYTE RPW,RETURN1
;;7664
;;7665 FE_#,#/24,J/PF24 ;ILLEGAL FORMAT INDIRECT WORD
;;7666 FE_#,#/24,J/PF24
;;7667 FE_#,#/24,J/PF24
;;7668 FE_#,#/24,J/PF24
;;7669
;;7670 BFETCHP: GEN AR,BYTE RPW,RETURN1
;;7671 GEN AR+XR,INDEXED,BYTE RPW,RETURN1
;;7672 GEN AR,BYTE INDRCT,
;;7673 SKP INTRPT,J/BYTEIP
;;7674 GEN AR+XR,INDEXED,BYTE INDRCT,
;;7675 SKP INTRPT,J/BYTEIP
;;7676
;;7677 BPART2P: SET FPD ;SET BEFORE FAULTING
;;7678 =0
;;7679 BYTEIP: ARX_MEM,LONG EN,J/BYTEI2P
;;7680 ARX_MEM,TAKE INTRPT
;;7681 BYTEI2P: AR_ARX,XR,EA MOD DISP,TIME/3T,J/BXAP
; 7682 .ENDIF/SMP
; 7683 .ENDIF/XADDR
; 7684
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 8
; BYTE.MIC[4,30] 17:12 9-Aug-84 LOAD BYTE SUBROUTINE
; 7685 .TOC "LOAD BYTE SUBROUTINE"
; 7686 ;ENTER WITH S IN FE, P+S IN SC, AND AR LOAD IN PROGRESS
; 7687 ;SKP INTERRUPT AT ENTRY IS OPTIONAL
; 7688 ;RETURN2 WITH BYTE RIGHT JUSTIFIED IN AR
; 7689 ;[TIME=7]
; 7690 =0
; 7691 LDB1: AR_MEM,SC_#-SC,#/36.,SKP SCAD0, ;36-(P+S)
U 2444, 2446,3200,0003,5302,0022,5110,0044 ; 7692 TIME/3T,J/LDB2
U 2445, 0040,3240,0003,0000,0022,0005,0000 ; 7693 AR_MEM,SR DISP,J/CLEAN ;HERE IF INTERRUPT PENDING
; 7694
; 7695 =0
U 2446, 2450,3401,2400,0000,0000,0013,0000 ; 7696 LDB2: ARX_SHIFT,AR_0S,SC_FE,J/SHIFT ;BYTE IN ARX HI, READY TO SHIFT
; 7697 ARX_AR,AR_0S, ;P+S > 36, PUT BYTE IN ARX HI
U 2447, 2450,3441,2400,2002,1020,5110,0000 ; 7698 SC_FE+SC,SKP SCAD0 ;ADJUST S AND SHIFT BYTE
; 7699
; 7700 ;PUT BYTE INTO AR RIGHT-JUSTIFIED
; 7701 ; THIS INSTRUCTION ALSO CALLED ALONE AS A SUBROUTINE
; 7702
; 7703 =0
U 2450, 0002,0001,4000,0000,0000,0003,0000 ; 7704 SHIFT: AR_SHIFT,RETURN2 ;RETURN WITH BYTE IN AR
U 2451, 0002,4001,0000,0000,0000,0003,0000 ; 7705 RETURN2 ;BYTE WAS OFF THE END, RETURN AR=0
; 7706
; 7707
; 7708 .TOC "DEPOSIT BYTE SUBROUTINE"
; 7709 ;ENTER WITH BYTE RIGHT JUSTIFIED IN AR, POINTER IN BR,
; 7710 ; S IN FE, 36-P IN SC, AND LOAD AR-ARX STARTED
; 7711 ; SKP IF P>36
; 7712 ;RETURN3 WITH FINAL STORE IN PROGRESS
; 7713 ;[TIME=11]
; 7714
; 7715 =0
; 7716 DPB1: MQ_AR,AR_MEM,ARX_MEM, ;GET WORD TO ROTATE 36-P
; 7717 GEN FE-SC-1,TIME/3T, ; [303] COMPUTE S-(36-P)-1
U 2452, 2454,3200,0013,1000,1022,5110,0000 ; 7718 SKP SCAD0,J/DPB2 ;CHECK THAT P+S<=36
; 7719 .IFNOT/SMP ;[335]
U 2453, 0003,3200,0003,0000,0022,0003,0000 ; 7720 AR_MEM,RETURN3 ;[226]P>36, STORE NOTHING
;;7721 .IF/SMP ;[335]
;;7722 AR_MEM,SC_0,J/RELMEM ;[335] Must release memory if RPW
; 7723 .ENDIF/SMP
; 7724
; 7725 =0
U 2454, 2455,0001,0000,2401,0000,0010,0000 ; 7726 DPB2: FE_SC ;P+S>36, S_36-P
;;7727 .IFNOT/MODEL.B
;;7728 .IF/SMP
;;7729 ARX_AR ;WORD TO ROTATE TO ARX
;;7730 .ENDIF/SMP
; 7731 .ENDIF/MODEL.B
; 7732 ARX_SHIFT,AR_MQ,SC_FE, ;ARX HAS P,X,S
U 2455, 3165,3723,2400,5301,0000,0013,0110 ; 7733 FE_#-SC,#/72. ;SC_S, FE_72-(36-P)=36+P
U 3165, 3166,4001,0000,5302,0000,0010,0044 ; 7734 SC_#-SC,#/36. ;SC_36-S (KNOWN .LE. P)
; 7735 AR_SHIFT,ARX_SHIFT, ;S,P,X
U 3166, 3167,0001,4400,5002,0000,0010,0000 ; 7736 SC_FE-SC ;SC_(36+P)-(36-S)=P+S
U 3167, 0003,0001,4000,0000,0016,0003,0000 ; 7737 RELMEM: AR_SHIFT,STORE,RETURN3 ;[335] DONE, STORE IT BACK
; 7738
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 9
; BYTE.MIC[4,30] 17:12 9-Aug-84 IBP, ADJBP
; 7739 .TOC "IBP, ADJBP"
; 7740
; 7741 ;IBP OR ADJBP
; 7742 ;IBP IF AC#0, ADJBP OTHERWISE
; 7743 ; HERE WITH THE BASE POINTER IN AR
; 7744
; 7745 ;IBP: SKP AC#0 ;IS THIS IBP OR ADJBP?
; 7746 .IF/ADJBP
; 7747 =000
;;7748 .IFNOT/XADDR
;;7749 IBP1: T0_AR,BR/AR, ;SAVE POINTER FOR ADJBP
;;7750 SC_S,AR_0S,CALL,J/GETSC ; GET BYTE SIZE
; 7751 .IF/XADDR
; 7752 IBP1: T0_AR,BR/AR,BYTE DISP, ;SAVE POINTER, TEST B12
U 1720, 1325,3441,2047,2412,0020,1074,0166 ; 7753 SC_S,AR_0S,CALL,J/GETSC ;GET SIZE, SECOND WORD IF NEEDED
; 7754 .ENDIF/XADDR
; 7755 .ENDIF/ADJBP
; 7756 =001
; 7757 IBP2: BR/AR,P_P-S,CALL.M, ;NEW P UNLESS OVERFLOW
U 1721, 1700,0001,0040,5110,3021,0074,0200 ; 7758 BYTE DISP,J/IBPS ;[245]
; 7759 .IF/ADJBP
U 1722, 3170,3202,2040,0000,0000,0010,0000 ; 7760 BR/AR,AR_BR,J/ADJBP ;HOLD S IN BR
; 7761 .ENDIF/ADJBP
U 1725, 0075,4001,0003,0000,0217,0010,0000 ; 7762 =101 FIN STORE,I FETCH,J/NOP ;IBP DONE
; 7763 =
; 7764
; 7765 ;HERE FOR ADJUST BYTE POINTER (IBP WITH NON-ZERO AC)
; 7766 ; BYTE SIZE (S) IS RIGHT ADJUSTED IN BR AND MQ
; 7767 ; FULL POINTER IS IN AR, AND SAVED IN T0
; 7768
; 7769 .IF/ADJBP
; 7770
; 7771 ADJBP: SC_P,AR+ARX+MQ_0.M, ;GET P
U 3170, 0720,7162,0000,0102,0041,5410,0170 ; 7772 SKP BR EQ ;CHECK SIZE IS NON-ZERO
; 7773
U 0720, 3225,4001,0020,2400,3001,0050,0200 ; 7774 =00 BRX/ARX,P_SC,CALL.M,J/SIXDIV ;DIVIDE P BY S
U 0721, 0067,3200,2007,0000,0020,0010,0166 ; 7775 AR_T0,J/IFSTAC ;OOPS, S=0, RETURN UNALTERED POINTER
; 7776 T1_AR,AR_0S,ARX_0S, ;SAVE P/S
U 0722, 0764,3401,2207,5002,0000,1010,0171 ; 7777 SC_FE-SC ;36-P IN SC
; 7778 =
U 0764, 3225,4001,0000,2400,3001,0050,0300 ; 7779 =0* P_SC,MQ_0.M,CALL.M,J/SIXDIV ;36-P IN AR0-5
U 0766, 2456,0600,2007,0000,0040,5610,0171 ; 7780 AR_AR+T1,SKP AD NE ;(P/S)+(36-P/S)=BYTES/WORD
U 2456, 0213,0001,0000,0000,0217,0010,0000 ; 7781 =0 I FETCH,J/NODIVD ;ABORT, BYTES/WORD=0
U 2457, 3171,0001,4047,0000,2000,1010,0171 ; 7782 T1_AR,BR/AR,AR_ARX ;SAVE BYTES/WORD, READY TO
; 7783 ; DIVIDE BY IT
U 3171, 3172,3721,2007,0000,0000,1010,0172 ; 7784 T2_AR,AR_MQ ;SAVE REMAIN(36-P/S), GET (36-P)/S
; 7785 AR_AR*AC0,AD/A+B,ARL/AD, ;ADJUSTMENT IN AR
U 3172, 1734,0600,2000,4000,0021,0010,0142 ; 7786 ARX+MQ_0.M
; 7787
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 10
; BYTE.MIC[4,30] 17:12 9-Aug-84 IBP, ADJBP
; 7788 ;COMPUTE QUOTIENT Q AND REMAINDER R OF ADJUSTMENT/(BYTES/WORD)
; 7789 ; SUCH THAT ADJUSTMENT=Q*(BYTES/WORD)+R, 1 .LE. R .LE. (BYTES/WORD)
; 7790 ; SINCE ADJUSTMENT IS CALCULATED RELATIVE TO LEFT-MOST BYTE OF
; 7791 ; A WORD, THIS GIVES Q AS THE NUMBER OF WORDS BY WHICH TO INDEX THE
; 7792 ; BYTE POINTER, AND R AS THE NUMBER OF BYTES FROM THE LEFT OF THE
; 7793 ; WORD. MULTIPLYING R BY THE BYTE SIZE WILL GIVE THE NUMBER OF BITS
; 7794 ; FROM THE LEFTMOST BYTE, AND ADDING REMAIN(36-P/S) WILL GIVE NUMBER
; 7795 ; OF BITS FROM BIT 0. FINALLY, WE MUST SUBTRACT THIS FROM 36 TO GET
; 7796 ; THE CORRECT P FIELD, WHICH IS ALWAYS RELATIVE TO THE RIGHT EDGE OF
; 7797 ; THE WORD.
; 7798 ;
; 7799 ; SR1 = 1 DON'T DO FETCH OF NEXT INST (ADJBP WITH OWGBP)
; 7800
U 1734, 2160,0001,0000,4402,0000,1050,0000 ; 7801 =100 AC0_AR,SC_1,CALL,J/DIV2 ;DO THE BASIC DIVIDE
; 7802 =110 ARX_-BRX,FE_#,#/-4, ;NEG QUO ==> NEG REMAIN
U 1736, 1744,5162,0600,0301,0020,0005,0774 ; 7803 SR DISP,J/ADJD1 ;TEST FOR DOUBLE-WORD POINTER
; 7804 ARX/MQ,SKP AR NE,FE_#,#/-4, ;POS QUO. IS REMAIN .GT. 0?
U 1737, 1744,3703,0300,0301,0040,5405,0774 ; 7805 SR DISP
;;7806 .IFNOT/XADDR
;;7807 =10
; 7808 .IF/XADDR
; 7809 =100
; 7810 .ENDIF/XADDR
U 1744, 3202,0600,2007,0000,0020,0010,0171 ; 7811 ADJD1: AR_AR+T1,J/ADJD2 ;INCREASE REM TO MEET CONSTRAINT
; 7812 BR/AR,AR_ARX (ADX), ;REMAIN IN RANGE,
U 1745, 3203,3721,6040,0000,0001,0010,0060 ; 7813 ARL+ARX_0.M,J/ADJD3 ; QUOTIENT TO ARR
; 7814 .IF/XADDR
U 1746, 3173,0600,2007,0000,0020,0010,0171 ; 7815 AR_AR+T1,J/ADJX2 ;INCREASE REMAIN & DECR QUO
; 7816 .IF/OWGBP
U 1747, 1463,4001,4040,0000,2000,0005,0000 ; 7817 ADJX3: BR/AR,AR_ARX,SR DISP ;[251] REM TO BR, OWGBP ?
U 1463, 2460,3200,2001,0000,0020,5510,0000 ; 7818 =011 AR_AC1,SKP AD0,J/ADJX4 ; NO, WD2 EFIW OR IFIW?
U 1467, 3174,0600,2007,4000,0020,0010,0166 ; 7819 AR_AR+T0,J/ADJX1 ; YES, INC ADDRESS
;;7820 .IFNOT/OWGBP
;;7821 ADJX3: BR/AR,AR_AC1,SKP AD0,J/ADJX4 ;REM TO BR, WD2 EFIW OR IFIW?
; 7822 .ENDIF/OWGBP
U 3173, 1747,1701,0600,0000,0020,0010,0000 ; 7823 ADJX2: ARX_ARX-1,J/ADJX3
; 7824 .IF/OWGBP
U 3174, 3175,3401,0207,0000,0000,1010,0166 ; 7825 ADJX1: T0_AR,ARX_0S ;SAVE NEW ADDRESS
U 3175, 0440,3240,2027,0000,0020,0010,0176 ; 7826 AR_E0,BRX/ARX,J/ADJD4 ;GET P,S, CLEAR BRX
; 7827 .ENDIF/OWGBP
; 7828 =0
; 7829 .IF/OWGBP
U 2460, 1713,4001,0000,0102,0000,0005,0000 ; 7830 ADJX4: SC_P,SR DISP,J/ADJX7 ;[251] EFIW, SAVE 0-5, OWGBP ?
;;7831 .IFNOT/OWGBP
;;7832 ADJX4: SC_P,AR_ARX*AC1,AD/A+B,J/ADJX5 ;EFIW, SAVE 0-5
; 7833 .ENDIF/OWGBP
U 2461, 3200,0610,2001,4000,0020,0610,0000 ; 7834 ARL_ARL,AR_ARX*AC1,AD/A+B,J/ADJX6
U 3176, 3200,0001,0000,2400,3001,0010,0200 ; 7835 ADJX5: P_SC ;ADJUSTMENT MUSTN'T TOUCH @,XR
U 3200, 3201,3441,0201,0000,0000,1010,0000 ; 7836 ADJX6: AC1_AR,ARX_0S
U 3201, 0440,3200,2027,0000,0020,0010,0166 ; 7837 AR_T0,BRX/ARX,J/ADJD4
; 7838 .IF/OWGBP
; 7839 =011
U 1713, 3176,0610,2001,0000,0020,0010,0000 ; 7840 ADJX7: AR_ARX*AC1,AD/A+B,J/ADJX5 ;[251] NO, EFIW
U 1717, 3176,0610,2007,4000,0020,0010,0165 ; 7841 AR_ARX*E1,AD/A+B,J/ADJX5 ;[251] YES, EFIW
; 7842 .ENDIF/OWGBP
; 7843 .ENDIF/XADDR
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 10-1
; BYTE.MIC[4,30] 17:12 9-Aug-84 IBP, ADJBP
; 7844
; 7845 ADJD2: BR/AR,AR_ARX-1, ;HOLD UPDATED REMAINDER,
U 3202, 3203,1721,6040,0000,0021,0010,0060 ; 7846 ARL+ARX_0.M ; GET CORRESPONDING QUOTIENT
; 7847 ADJD3: AR_AR+T0,INH CRY18, ;ADD Q TO Y OF POINTER,
U 3203, 0440,0600,2027,0000,0020,0011,0166 ; 7848 BRX/ARX,J/ADJD4 ;CLR BRX
; 7849
; 7850 ;HERE WITH ADDRESS PART OF POINTER UPDATED, P AND S IN AR, AND
; 7851 ; THE REMAINDER IN BR. COMPUTE 36-[ R*S + REMAIN(36-P/S) ].
; 7852
; 7853 =00*
U 0440, 1325,3441,2000,2412,0000,1050,0000 ; 7854 ADJD4: AC0_AR,AR_0S,SC_S,CALL,J/GETSC ;SAVE UPDATED Y, GET SIZE
; 7855 MQ_AR,AR_T2,CLR ARX, ;M'IER IS S, GET REMAIN(36-P/S)
U 0442, 1546,3200,2017,0000,1020,0550,0172 ; 7856 CALL,J/MULREE ;COMPUTE (R*S)+REMAIN(36-P/S)
; 7857 =11*
; 7858 .IF/OWGBP
U 0446, 1723,3713,5000,0000,0000,0005,0000 ; 7859 AR_ARX*2,SR DISP ;[251] OWGBP ?
U 1723, 3205,0001,0000,0000,0217,1610,0000 ; 7860 =011 SR_0,I FETCH,J/ADJD5 ; [301] NO, FOLLOW FLOW
U 1727, 3204,3240,2000,5132,0020,0010,0044 ; 7861 SC_P-#,#/36.,AR_AC0
U 3204, 3212,4001,0000,5400,3001,0010,0200 ; 7862 P_-SC,J/GADJ1 ;[251] YES, THAT'S NEW P, DONE
U 3205, 3206,3200,2000,5132,0020,0010,0044 ; 7863 ADJD5: SC_P-#,#/36.,AR_AC0
U 3206, 0065,0001,0000,5400,3001,0010,0200 ; 7864 P_-SC,J/STAC ;NO, THAT'S NEW P, DONE
;;7865 .IFNOT/OWGBP
;;7866 AR_ARX*2,SR_0,I FETCH ; [301] PUT THAT IN AR0-5
;;7867 SC_P-#,#/36.,AR_AC0
;;7868 P_-SC,J/STAC ; [301] THAT'S NEW P, DONE
; 7869 .ENDIF/OWGBP
; 7870
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 11
; BYTE.MIC[4,30] 17:12 9-Aug-84 IBP, ADJBP
; 7871 ;[251]
; 7872 ;HERE IF WE ARE DOING IBP OR ADJBP ON A ONE WORD GLOBAL BYTE POINTER.
; 7873
; 7874 .IF/OWGBP
; 7875 =0
U 2462, 2466,4001,0000,0000,0000,0010,0000 ; 7876 GIBP: J/GADJBP ;GO DO ADJBP
U 2463, 2464,0001,0000,0000,0000,1610,0640 ; 7877 BYTE PREV & CLR SR3 ;[256] ENA PREVIOUS
U 2464, 2430,0001,0000,0000,0000,0050,0000 ; 7878 =0 CALL,J/GBYTE ;INC POINTER AND STORE
U 2465, 0075,0001,0000,0000,0217,0014,0000 ; 7879 I FETCH,CLR FPD,J/NOP ;[263]DONE IBP
; 7880 =0
; 7881 GADJBP: BYTE PREV & SET SR2,
U 2466, 3226,4001,0000,0000,0000,1650,0622 ; 7882 CALL [CNV2WD] ;[256] ENA PREVIOUS
U 2467, 3207,3500,2007,4000,0020,0010,0164 ; 7883 [AR]_[AR]*FM[EXPMSK],AD/ANDCB ;SAVE P,S AND CLEAR REST
U 3207, 3210,4001,0000,0000,0000,1610,0064 ; 7884 SET SR1 ;USE E1 INSTEAD OF AC1 IN ADJBP
U 3210, 0631,3242,2027,2412,0000,1010,0176 ; 7885 E0_AR,SC_S,AR_BR,BRX/ARX ;SAVE S, ADDRESS TO AR
U 0631, 1325,3441,2007,0000,0000,1050,0166 ; 7886 =01 T0_AR,AR_0S,CALL,J/GETSC ;GET BYTE SIZE IN AR,SAVE ADDR
U 0633, 3211,3242,2040,0000,0100,3010,0722 ; 7887 BR/AR,AR_BR,VMA_#,#/722 ;ADDR, P,S IN PLACE, EPT ADDR TO VMA
U 3211, 3170,3242,6007,0000,0000,1010,0165 ; 7888 E1_AR,AR_BRX,J/ADJBP ;SAVE ADDR, GO ADJ
; 7889
U 3212, 2470,0001,0000,2311,0020,5110,0756 ; 7890 GADJ1: FE_S+#,#/-18.,SKP SCAD0 ;BYTE SIZE 18 ?
; 7891 =0
U 2470, 3214,4001,0000,0000,0012,0026,0111 ; 7892 GADJLD: LOAD AR,EPT REF CACHE,J/GADJ2 ;GET DECODE WORD AND CACHE IT [260]
U 2471, 3213,4001,0000,0302,0000,0010,0010 ; 7893 SC_#,#/8. ;SET UP FOR DISP
U 3213, 0540,4001,0000,0000,0020,0007,0000 ; 7894 SH DISP,J/GADJL0 ;DISPATCH ON SIZE 6-9 [253]
; 7895 =0000
; 7896 GADJL0: ;[253]
U 0546, 2470,4001,0000,0000,0100,3010,0716 ; 7897 =0110 VMA_#,#/716,J/GADJLD ;6
U 0547, 2470,0001,0000,0000,0100,3010,0717 ; 7898 =0111 VMA_#,#/717,J/GADJLD ;7
U 0550, 2470,4001,0000,0000,0100,3010,0720 ; 7899 =1000 VMA_#,#/720,J/GADJLD ;8
U 0551, 2470,0001,0000,0000,0100,3010,0721 ; 7900 =1001 VMA_#,#/721,J/GADJLD ;9
; 7901 =
U 3214, 3215,4001,0000,0302,0002,0010,0036 ; 7902 GADJ2: MB WAIT,SC_#,#/30. ;BYTE # TO AR 0-5
U 3215, 3216,3202,2040,0000,0001,0010,0040 ; 7903 BR/AR,AR_BR,ARX_0.M ;DATA TO AR,CLEAR ARX
U 3216, 3217,0001,4000,0302,0000,0010,0006 ; 7904 AR_SHIFT,SC_#,#/6 ;SHIFT IT
U 3217, 3220,3242,2000,0101,0000,0010,0000 ; 7905 FE_P,AR_BR ;SAVE COUNT,DECODE TO AR
U 3220, 2472,0001,0000,3001,0020,5210,0000 ; 7906 GADJ3: FE_FE-1,SKP SCAD NE ;DEC DECODE, SKIP TO SHIFT
U 2472, 3221,3200,0207,0000,0020,0010,0166 ; 7907 =0 ARX_T0,J/GADJ4 ;GET ADDRESS, NEW P IN AR0-4
U 2473, 3220,0001,4000,0000,0000,0010,0000 ; 7908 AR_SHIFT,J/GADJ3 ;SHIFT AND TRY AGAIN
U 3221, 3222,0001,4000,0101,2000,0010,0000 ; 7909 GADJ4: AR_ARX,FE_P ;GET ADDRESS, SAVE P
U 3222, 3223,4001,0000,0000,3000,0022,0200 ; 7910 P_FE ;NEW P
U 3223, 0075,0001,0000,0000,0217,1010,0000 ; 7911 AC0_AR,I FETCH,J/NOP ;DONE !
; 7912 .ENDIF/ADJBP
; 7913 .ENDIF/OWGBP
; 7914 ;[251]
; 7915
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 12
; BYTE.MIC[4,30] 17:12 9-Aug-84 IBP, ADJBP
; 7916 ;SUBROUTINE TO GET CONTENTS OF SC RIGHT ALIGNED IN AR
; 7917 ; CALLED BY ADJBP WITH BYTE DISP TO GET SECOND PART OF POINTER, TOO.
; 7918 ;[TIME=6]
; 7919
; 7920 =101
U 1325, 0730,4001,0000,2400,2000,0022,0200 ; 7921 GETSC: AR0-8_SC,J/GETEXP ;PUT SC INTO AR
; 7922 .IF/XADDR
U 1327, 0730,0001,0000,2400,2000,7522,0200 ; 7923 AR0-8_SC,SKP -VMA SEC0 ;BIT 12=1. GET 2ND PART OF PTR
; 7924 =00
; 7925 .ENDIF/XADDR
U 0730, 2450,0001,0400,0302,1000,0010,0011 ; 7926 GETEXP: ARX_AR,SC_#,#/9.,J/SHIFT ;HERE WITH DATA IN AR0-8
; 7927 .IF/XADDR
; 7928 VMA_VMA+1,LOAD ARX,SC_#,#/9., ;LONG POINTER, GET PART 2
U 0731, 1023,0001,0000,0302,0013,3650,0011 ; 7929 CALL,J/XFERW
U 0733, 3224,3701,4200,0000,2000,1610,0002 ; 7930 =11 ARX_AR (AD),AR_ARX,SR_#,#/2 ;READY TO PUT IT AWAY
U 3224, 2450,3441,2001,0000,0000,1010,0000 ; 7931 AC1_AR,AR_0S,J/SHIFT ;PUT AWAY, FINISH GETTING S
; 7932 .ENDIF/XADDR
; 7933
; 7934
; 7935 ;SUBROUTINE FOR SHORT DIVISION, BR KNOWN POSITIVE
; 7936 ; CALL WITH MQ CLEAR, DIVISOR RIGHT-ALIGNED IN BR, AND DIVIDEND
; 7937 ; IN AR0-5 (OR LEFT-ALIGNED IN ARX IF ENTERING AT SDIV)
; 7938 ; RETURN QUOTIENT IN AR AND MQ, REMAIN IN ARX
; 7939 ;[TIME=22+3(RESTORE REQ'D)]
; 7940
; 7941 ;TO IMPROVE ADJBP PERFORMANCE, INSERT THE INSTRUCTION SHOWN BELOW
; 7942 ; (SIXDZ), AND CHANGE THE CALLS TO SIXDIV TO "SKP SCAD NE,J/SIXDZ"
; 7943 ;=0
; 7944 ;SIXDZ: AR_0S,ARX_0S,FE_#,#/36.,RETURN2 ;HERE IF DIVIDEND IS ZERO
; 7945
U 3225, 0421,3401,2400,0301,1000,0010,0004 ; 7946 SIXDIV: ARX_AR,AR_0S,FE_#,#/4,J/SDIV-
; 7947 =0*0
U 0420, 0420,0602,5504,3001,0020,0031,0000 ; 7948 SDIV: DIVIDE,AR_2(AR+BR),ARX/ADX*2,J/SDIV
U 0421, 0420,5102,5500,3001,0020,0031,0000 ; 7949 SDIV-: DIVIDE,AR_2(AR-BR),ARX/ADX*2,J/SDIV
U 0424, 0224,0602,2004,3001,0020,0031,0000 ; 7950 DIVIDE,AR_AR+BR,J/SDIVR ;NO SHIFT ON FINAL STEP
U 0425, 0224,5102,2000,3001,0020,0031,0000 ; 7951 DIVIDE,AR_AR-BR
; 7952 =1*0
U 0224, 0225,0602,2004,0000,0020,0010,0000 ; 7953 SDIVR: AR_AR+BR ;NO CRY0 MEANS RESTORE REQ'D
; 7954 ARX_AR,AR_MQ, ;RETURN QUO IN AR, REMAIN IN ARX
U 0225, 0002,3723,2400,0301,1000,0003,0044 ; 7955 FE_#,#/36.,RETURN2
; 7956
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 13
; BYTE.MIC[4,30] 17:12 9-Aug-84 IBP, ADJBP
; 7957 .IF/OWGBP
; 7958 ;CNV2WD -- ROUTINE TO CALCULATE NEW P FIELD OF ONE WORD GLOBAL BYTE
; 7959 ;POINTER AND STORE NEW POINTER. A TABLE IS IN THE EPT STARTING AT 700
; 7960 ;AND THIS IS USED TO CONVERT THE OWGBP TO A TWO WORD GLOBAL POINTER
; 7961 ;AND TO CALCULATE THE NEW P FOR THE STORE.
; 7962 ;
; 7963 ;ENTER WITH P-45 IN SC
; 7964 ; BYTE POINTER IN BR
; 7965 ;
; 7966
U 3226, 3227,3731,2000,0000,0000,1710,0000 ; 7967 CNV2WD: AR_VMA HELD ;[326] GET FULL VMA FOR WRITE
U 3227, 3230,0001,0010,0000,1000,0010,0000 ; 7968 MQ_AR ;SAVE FOR WRITE BACK
U 3230, 1024,4001,0000,2400,2000,0022,0200 ; 7969 AR0-8_SC ;P-45 IN AR
; 7970 =0* AR_ARX (AD),ARX_AR,SC_#,#/9., ;SWAP AROUND FOR SHIFT
U 1024, 2450,3711,2400,0302,1000,0050,0011 ; 7971 CALL [SHIFT] ;NOW SHIFT IT TO BIT 35
U 1026, 3231,0303,7700,0000,0020,0027,0000 ; 7972 AR_AR*.5 LONG ;MAKE IT AN OFFSET, LSB IN ARX0
U 3231, 3232,4001,0000,0000,0100,3310,0700 ; 7973 VMA_#+AR32-35,#/700 ;POINT TO RIGHT WORD
U 3232, 3233,4001,0000,0000,0012,0026,0111 ; 7974 LOAD AR,EPT REF CACHE ;GET AND CACHE DATA FROM EPT [260]
U 3233, 2474,3713,0000,0000,0022,5510,0000 ; 7975 MB WAIT,GEN ARX,SKP AD0 ;TEST FOR EVEN/ODD
; 7976 =0
U 2474, 3234,4001,0400,2411,1000,0010,0000 ; 7977 CNV01: FE_S,ARX_AR,J/CNV02 ;SKIP SWAP
U 2475, 2474,0001,4000,0000,3000,0010,0000 ; 7978 AR_AR SWAP,J/CNV01 ;SWAP HALVES FOR ODD
U 3234, 2476,3703,0020,0000,0020,5610,0000 ; 7979 CNV02: BRX/ARX,GEN AR,SKP AD NE ;DID WE GET 0 DATA ?
U 2476, 1002,0001,0040,0000,0000,0010,0000 ; 7980 =0 BR/AR,J/UUO ;P=77 OR EPT NOT SET UP
U 2477, 0001,3721,0000,0000,0103,0003,0000 ; 7981 RSTR VMA_MQ,RETURN1 ;[307][326]NO, RESTORE VMA AND EXIT
; 7982
; 7983
; 7984 =1001 ;[254]
U 0571, 3235,4001,0000,0302,0000,0010,0006 ; 7985 INC2WD: SC_#,#/6,J/INC01 ;DON'T INC, SET SHIFT
U 0573, 3235,4662,2000,0302,0020,0010,0006 ; 7986 AR_BR+1,SC_#,#/6,J/INC01 ;INC ADDRESS, SET SHIFT
U 0575, 2500,3242,6000,0000,0000,0010,0000 ; 7987 AR_BRX,J/INC02 ;FPD SET. DON'T [254]
U 0577, 2500,3242,6000,0000,0000,0010,0000 ; 7988 AR_BRX,J/INC02 ;TOUCH POINTER [254]
U 3235, 1034,3202,6400,0000,0000,1610,0500 ; 7989 INC01: ARX_SHIFT,AR_BRX,SR_#,#/500 ;[256][270]ADDR TO 0-29 IN ARX
; 7990 ;NEW P TO AR
; 7991 =0* AR_AR SWAP,SC_#,#/30., ;GET NEW P,LOAD SHIFT
U 1034, 2450,0001,4000,0302,3000,0050,0036 ; 7992 CALL [SHIFT] ;NEW POINTER
; 7993 ;
; 7994 ; [320] Because of the SR_# above, we must restore the VMA again.
; 7995 ; [326] Make sure we do a full restore (i.e., include local/global
; 7996 ; information) so that we distinguish the ACs from shadow memory.
; 7997 ;
U 1036, 3236,3721,0000,6130,3103,0110,0040 ; 7998 RSTR VMA_MQ,P_P OR #,#/40 ;[326] SET BIT 0
U 3236, 3237,4001,0040,0000,0016,0010,0000 ; 7999 BR/AR,STORE ;[320] STORE NEW POINTER
U 3237, 3240,3242,6003,0000,0002,1610,0200 ; 8000 MEM_AR, AR_BRX, SR_#, #/200 ;GET DECODE ALLOW PREVIOUS
U 3240, 2500,0001,0000,5110,3021,5110,0200 ; 8001 P_P-S,SKP SCAD0 ;SET UP FOR EXIT
; 8002 =0
U 2500, 0001,3202,2000,0102,0000,1103,0100 ; 8003 INC02: SC_P,SET FPD,AR_BR,RETURN1 ;DONT ADD
U 2501, 2500,0001,0000,5310,3000,0110,0044 ; 8004 P_#-S,#/44,J/INC02 ;FIX FOR OVERFLOW
; 8005 .ENDIF/OWGBP
; 8006
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 1
; BLT.MIC[4,30] 17:12 9-Aug-84 XBLT
; 8007 .TOC "XBLT"
; 8008
; 8009 ;HERE FROM EXTEND, ARX CONTAINS AC2
; 8010 .IF/XADDR
; 8011
U 3241, 3242,3200,2001,0000,0020,1610,0216 ; 8012 XBLT: AR_AC1,SR_XBLT(SRC) ;[262] IN CASE OF INTERRUPT
; 8013 BR/AR,BRX/ARX,MQ_AR, ;SRC ADDR TO BR, DST TO BRX
U 3242, 2502,3240,2070,0000,1020,5510,0000 ; 8014 AR_AC0,SKP AD0,J/XBLT3 ;GET LENGTH, TEST DIRECTION
; 8015 =0
U 2502, 2510,3701,0010,0000,1040,5410,0000 ; 8016 XBLT3: SKP AR NE,MQ_AR,J/XBLT4
; 8017 AR_MQ-1,ARX_ARX-1, ;DECR SRC & DST ADDR'S FOR DOWN
U 2503, 3243,1721,2600,0000,0352,0010,0000 ; 8018 VMA/AD,LOAD AR ;GET FIRST WORD
; 8019
; 8020 ;HERE IS MAIN LOOP FOR XBLT, DOWNWARDS
; 8021
U 3243, 3244,3200,0013,0000,1022,1610,0316 ; 8022 XBLTDN: MQ_AR,AR_MEM,SR_XBLT(DST) ;WAIT FOR SOURCE WORD
U 3244, 3245,3713,0000,0000,0316,1610,0216 ; 8023 VMA_ARX,STORE,SR_XBLT(SRC) ;STORE IT IN DESTINATION
U 3245, 2504,3721,2003,0000,0002,7010,0000 ; 8024 MEM_AR,AR_MQ,SKP INTRPT ;WAIT, CHECK FOR INTRPT
; 8025 =0 BR/AR,BRX/ARX, ;PUT DECREMENTED ADDR'S IN BR,X
U 2504, 2506,4640,2060,0000,0040,5410,0000 ; 8026 AR_AC0+1,SKP CRY0,J/XBLTD1 ;COUNT OFF LENGTH
U 2505, 3464,4640,2060,0000,0020,0010,0000 ; 8027 BR/AR,BRX/ARX,AR_AC0+1,J/PGFAC0 ;CLEANUP AND TAKE INTERRUPT
; 8028 =0
; 8029 XBLTD1: AC0_AR,AR_MQ-1,ARX_ARX-1, ;STORE NEW LENGTH, GET NEXT ADDR
U 2506, 3243,1723,2600,0000,0352,1010,0000 ; 8030 VMA/AD,LOAD AR,J/XBLTDN ; AND READ SRC WORD
; 8031 AC0_AR,AR_ARX,ARX/MQ, ;DONE! PUT ALL AWAY
U 2507, 3246,4001,4300,0000,2217,1010,0000 ; 8032 I FETCH
U 3246, 1753,4001,4004,0000,2000,1010,0000 ; 8033 XBLTX: AC2_AR,AR_ARX,J/STRAC1
; 8034
; 8035 ;HERE FOR UPWARD BLT, TESTING FOR NON-ZERO LENGTH
; 8036
; 8037 =0
U 2510, 0075,0001,0000,0000,0217,1610,0000 ; 8038 XBLT4: I FETCH,SR_0,J/NOP ;DO NOTHING IF AC =0
; 8039 VMA_BR,LOAD AR, ;ELSE START RIGHT IN
U 2511, 3251,3202,0000,0000,0312,1610,0316 ; 8040 SR_XBLT(DST),J/XBLTU1
; 8041
; 8042 ;HERE IS MAIN LOOP FOR XBLT, UPWARDS
; 8043
U 3247, 2512,1721,2003,0000,0042,5610,0000 ; 8044 XBLTUP: MEM_AR,AR_MQ-1,SKP AD NE ;COUNT EXHAUSTED?
; 8045 =0 AC0_AR,ARX_BR+1,AR_BRX+1, ;YES. GET FINAL ADDRESSES
U 2512, 3246,4662,6200,0000,0257,1010,0000 ; 8046 I FETCH,J/XBLTX ; READY TO STORE
; 8047 AC0_AR,MQ_AR,AR_BR+1,ARX_BRX+1,
U 2513, 3250,4662,2610,0000,1352,1010,0000 ; 8048 VMA/AD,LOAD AR ;GET SOURCE WORD
U 3250, 3251,4001,0060,0000,0000,1610,0316 ; 8049 BR/AR,BRX/ARX,SR_XBLT(DST) ;MUST BE SAVED PRIOR TO MBWAIT
U 3251, 2514,3240,0003,0000,0022,7010,0000 ; 8050 XBLTU1: AR_MEM,SKP INTRPT ;WAIT FOR SRC, TEST INTRPT
; 8051 =0 VMA_ARX,STORE, ;COPY TO DST
U 2514, 3247,3711,0000,0000,0316,1610,0216 ; 8052 SR_XBLT(SRC),J/XBLTUP ;LOOP
U 2515, 3465,3242,2600,0000,0000,1610,0000 ; 8053 AR_BR LONG,SR_0,J/XBLTPF ;TAKE INTERRUPT
; 8054
; 8055 .ENDIF/XADDR
; 8056
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 2
; BLT.MIC[4,30] 17:12 9-Aug-84 BLT
; 8057 .TOC "BLT"
; 8058 ; ENTER WITH 0,E IN AR
; 8059
; 8060 ;IN THE LOOP, ARX CONTAINS THE CURRENT DESTINATION ADDRESS,
; 8061 ; BRX CONTAINS THE TERMINAL ADDRESS, AND BR CONTAINS THE DIFFERENCE
; 8062 ; BETWEEN THE SOURCE AND DESTINATION ADDRESSES.
; 8063
; 8064 ;UNLIKE EARLIER -10 PROCESSORS, THIS CODE CHECKS FOR THE CASE IN WHICH
; 8065 ; THE DESTINATION ADDRESS IN RH(AC) IS GREATER THAN E, AND RATHER THAN
; 8066 ; STOPPING AFTER ONE WORD, COPIES DOWNWARD (EFFECTIVELY DECREMENTING
; 8067 ; AC BY 1,,1 ON EACH STEP, RATHER THAN INCREMENTING).
; 8068
; 8069 ;THIS CODE ALSO PROVIDES A GUARANTEED RESULT IN AC ON COMPLETION OF
; 8070 ; THE TRANSFER (EXCEPT IN THE CASE AC IS PART OF BUT NOT THE LAST WORD
; 8071 ; OF THE DESTINATION BLOCK). WHEN AC IS NOT PART OF THE DESTINATION
; 8072 ; BLOCK, IT IS LEFT CONTAINING THE ADDRESSES OF THE FIRST WORD FOLLOWING
; 8073 ; THE SOURCE BLOCK (IN THE LH), AND THE FIRST WORD FOLLOWING THE DEST-
; 8074 ; INATION BLOCK (IN THE RH). IF AC IS THE LAST WORD OF THE DESTINATION
; 8075 ; BLOCK, IT WILL BE A COPY OF THE LAST WORD OF THE SOURCE BLOCK.
; 8076
; 8077 ;IN ADDITION, A SPECIAL-CASE CHECK IS MADE FOR THE CASE IN WHICH EACH
; 8078 ; WORD STORED IS USED AS THE SOURCE OF THE NEXT TRANSFER. IN THIS CASE,
; 8079 ; ONLY ONE READ NEED BE PERFORMED, AND THAT DATA MAY BE STORED FOR EACH
; 8080 ; TRANSFER. THUS THE COMMON USE OF BLT TO CLEAR CORE IS SPEEDED UP.
; 8081
; 8082 ;BLT: ARX_AR,MQ_AR,ARR_AC0,ARL_ARL ;END TO ARX & MQ, DEST TO AR
; 8083 BLT1: BR/AR,ARX_AR,BRX/ARX, ;DST TO BR & ARX, END TO BRX
U 3252, 3253,3200,2460,0000,1020,0010,0000 ; 8084 AR_AC0 ;SRC TO ARL
;;8085 .IFNOT/BLT.PXCT
;;8086 ARR_ARL,ARL_BRL ;SRC TO ARR (SAME SECTION AS E)
;;8087 AR_AR-BR ;SRC-DST TO ARR
; 8088 .IF/BLT.PXCT
U 3253, 2516,3242,4000,0000,3001,7410,0002 ; 8089 ARR_ARL,ARL_BRL.M,SKP P!S XCT ;SRC TO ARR (SAME SECTION AS E)
U 2516, 1074,5102,2004,0000,0020,0010,0000 ; 8090 =0 AR_AR-BR,J/BLT2 ;SRC-DST TO ARR
U 2517, 1134,5102,2004,0000,0020,0010,0000 ; 8091 AR_AR-BR,J/BLTPXCT ;TREAT PXCT OF BLT SPECIAL
; 8092 .ENDIF/BLT.PXCT
;;8093 .IF/BACK.BLT
;;8094 BR/AR,SKP ARX LE BRX ;SRC-DST TO BR. UP OR DOWN?
;;8095 =00 AR_MQ-1,CALL,J/BLTAC ;DOWN, READY WITH E-1
;;8096 AR_MQ+1,CALL,J/BLTAC ;UP, PUT E+1 IN AR FOR AC
;;8097 DOWN: LOAD VMA(EA)_ARX+BR,J/DN1 ;DOWN, START THE LOOP
; 8098 .IFNOT/BACK.BLT
; 8099 =0*
U 1074, 3254,4023,2040,0000,0020,0050,0000 ; 8100 BLT2: BR/AR,AR_MQ+1,CALL,J/BLTAC ;SRC-DST TO BR, E+1 IN AR
; 8101 .ENDIF/BACK.BLT
U 1076, 2520,4662,0000,0000,0040,5410,0000 ; 8102 SKP BR EQ -1,J/UP ;IS THIS CORE CLEARING CASE?
; 8103
; 8104
; 8105 ;HERE TO SETUP FINAL AC
; 8106
U 3254, 3255,0602,2004,0000,3020,0610,0004 ; 8107 BLTAC: ARL_ARR,AR_AR+BR ;FINAL DEST TO LH, SRC TO RH
U 3255, 3256,0001,4000,0000,3000,1610,0707 ; 8108 AR_AR SWAP,SR_BLT(SRC)
U 3256, 0002,0001,0000,0000,0000,1003,0000 ; 8109 ACSETU: AC0_AR,RETURN2 ;[334] Used below as well
; 8110
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 3
; BLT.MIC[4,30] 17:12 9-Aug-84 BLT
; 8111 ;HERE FOR UPWARD BLT (AC RH .LE. E)
; 8112 =0
U 2520, 0751,0612,0000,0000,0131,0010,0402 ; 8113 UP: LOAD VMA(EA)_ARX+BR,J/UP1 ;NOT CLEAR CORE
U 2521, 0750,0612,0004,0000,0131,7410,0402 ; 8114 SKP P!S XCT,LOAD VMA(EA)_ARX+BR ;DO NOT OPTIMIZE UNDER EXT ADDR
; 8115
; 8116 ;USE EVEN LOC'NS OF THIS BLOCK OF 4 IN SPECIAL "CLEAR CORE" CASE
; 8117
U 0750, 3257,3200,0003,0000,0022,1650,0507 ; 8118 =00 AR_MEM,CALL,SR_BLT(DST),J/UP2 ;GET THE WORD TO STORE IN ALL
U 0751, 3257,3200,0003,0000,0022,1650,0507 ; 8119 UP1: AR_MEM,CALL,SR_BLT(DST),J/UP2 ;GET SOURCE WORD
U 0752, 3257,0001,0000,0000,0000,1650,0507 ; 8120 CALL,SR_BLT(DST),J/UP2 ;HERE TO STORE SAME SRC AGAIN
U 0753, 0751,0612,0000,0000,0131,0010,0402 ; 8121 LOAD VMA(EA)_ARX+BR,J/UP1 ;HERE TO GET NEXT SRC
; 8122
U 3257, 2522,3711,0000,0000,0111,7010,0042 ; 8123 UP2: STORE VMA(EA)_ARX,SKP INTRPT ;OK, GET DST ADDRESS
; 8124 =0
U 2522, 2524,5102,0000,0000,0040,5310,0000 ; 8125 UP3: SKP ARX LT BRX,J/UP4 ;CHECK FOR LAST TRANSFER
U 2523, 3462,0001,0003,0000,0002,0010,0000 ; 8126 MEM_AR,J/BLTPF ;FINISH THIS, GO SERVE INTRPT
; 8127 =0
U 2524, 0075,4001,0003,0000,0217,0010,0000 ; 8128 UP4: FIN STORE,I FETCH,J/NOP ;THAT'S ALL, FOLKS
; 8129 MEM_AR,ARX_ARX+1, ;STORE DST,
U 2525, 0002,4021,0603,0000,0022,1603,0707 ; 8130 SR_BLT(SRC),RETURN2 ; CONTINUE
; 8131
; 8132 ;BLT CONTINUED - HERE FOR DOWNWARD BLT (AC RH .GT. E)
;;8133 .IF/BACK.BLT
;;8134
;;8135 DN1: AR_MEM,SR_BLT(DST) ;WAIT FOR SOURCE DATA
;;8136 VMA_ARX,STORE,SKP INTRPT ;OK, START DST REF
;;8137 =0 SKP ARX LE BRX,J/DN3 ;CHECK FOR END CONDITION
;;8138 MEM_AR,J/BLTPF ;FINISH STORE, TAKE INTRPT
;;8139 =0
;;8140 DN3: MEM_AR,ARX_ARX-1, ;NOT END, LOOP
;;8141 SR_BLT(SRC),J/DOWN
;;8142 FIN STORE,I FETCH,J/NOP ;END
; 8143 .ENDIF/BACK.BLT
; 8144
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 4
; BLT.MIC[4,30] 17:12 9-Aug-84 EXTENDED ADDRESSING CODE FOR PXCT OF BLT
; 8145 .TOC "EXTENDED ADDRESSING CODE FOR PXCT OF BLT"
; 8146
; 8147 ;THIS MUST BE SEPERATE CODE TO MAKE PXCT WORK NOTE THAT PXCT ONLY CAN
; 8148 ;BE USED IN SECTION 0 AND IN FACT WILL EVENTUALLY BE REMOVED FROM THERE
; 8149 ;HOPEFULLY THIS CODE CAN GO AWAY THE SPEC IS THAT PXCT OF BLT IS NOT DEFINED
; 8150 ;AND WILL NOT BE USED ON EXTENDED ADDRESSING MACHINES.
; 8151
; 8152 .IF/BLT.PXCT
; 8153 =0*
U 1134, 3260,4021,2040,0000,0020,0050,0000 ; 8154 BLTPXCT:BR/AR,AR_MQ+1,CALL,J/BLTPX1 ;SRC-DST TO BR, E+1 IN AR
U 1136, 0771,0612,0000,0000,0332,0010,0000 ; 8155 UPPX: VMA_ARX+BR,LOAD AR,J/UP1PX ;NOT CLEAR CORE
; 8156 ;CORE CLEARING NOT LEGAL
; 8157
; 8158
; 8159 ;HERE TO SETUP FINAL AC
; 8160
U 3260, 3261,0602,2000,0000,3020,0610,0004 ; 8161 BLTPX1: ARL_ARR,AR_AR+BR ;FINAL DEST TO LH, SRC TO RH
; 8162 AR_AR SWAP,SR_BLT(PXCT SRC),
U 3261, 3256,4001,4000,0000,3000,1610,0307 ; 8163 J/ACSETU ;[334] Use common return above
; 8164
; 8165 ;USE EVEN LOC'NS OF THIS BLOCK OF 4 IN SPECIAL "CLEAR CORE" CASE
; 8166
; 8167 =00
; 8168 =01
U 0771, 3262,3240,0003,0000,0022,1650,0107 ; 8169 UP1PX: AR_MEM,CALL,SR_BLT(PXCT DST),J/UP2PX ;GET SOURCE WORD
U 0772, 3262,4001,0000,0000,0000,1650,0107 ; 8170 CALL,SR_BLT(PXCT DST),J/UP2PX ;HERE TO STORE SAME SRC AGAIN
U 0773, 0771,0612,0000,0000,0332,0010,0000 ; 8171 VMA_ARX+BR,LOAD AR,J/UP1PX ;HERE TO GET NEXT SRC
; 8172
U 3262, 2526,3713,0000,0000,0316,7010,0000 ; 8173 UP2PX: VMA_ARX,STORE,SKP INTRPT ;OK, GET DST ADDRESS
; 8174 =0
U 2526, 2530,5102,0000,0000,0040,5310,0000 ; 8175 UP3PX: SKP ARX LT BRX,J/UP4PX ;CHECK FOR LAST TRANSFER
U 2527, 3462,0001,0003,0000,0002,0010,0000 ; 8176 MEM_AR,J/BLTPF ;FINISH THIS, GO SERVE INTRPT
; 8177 =0
U 2530, 0075,4001,0003,0000,0217,0010,0000 ; 8178 UP4PX: FIN STORE,I FETCH,J/NOP ;THAT'S ALL, FOLKS
; 8179 MEM_AR,ARX_ARX+1, ;STORE DST,
U 2531, 0002,4001,0603,0000,0022,1603,0307 ; 8180 SR_BLT(PXCT SRC),RETURN2 ; CONTINUE
; 8181 .ENDIF/BLT.PXCT
; 8182
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 1
; IO.MIC[4,30] 17:12 9-Aug-84 I/O INSTRUCTIONS
; 8183 .TOC "I/O INSTRUCTIONS"
; 8184
; 8185 ; BITS 10-12 OF INSTRUCTION GET MAPPED TO IR 7-9 FOR I/O INSTRUCTIONS
; 8186 ; THE DEVICE ADDRESS IS BROKEN DOWN AS ONE OF THE FIRST 7, OR ALL OTHERS
; 8187 .DCODE
; 8188
; 8189 ;DEVICE 000 (APR)
; 8190
D 0700, 3000,0502 ; 8191 700: W, J/APRBI ;APRID (BLKI APR,) OPTIONS, SERIAL #
D 0701, 3601,0500 ; 8192 W, DATAI, J/APRDI ;DATAI APR, ADDRESS COMPARE
D 0702, 0000,1102 ; 8193 I, J/APRBO ;WRFIL (BLKO APR,) REFILL RAM
D 0703, 4401,1100 ; 8194 R, DATAO, J/APRDO ;DATAO APR, ADDRESS COMPARE
D 0704, 0400,1200 ; 8195 I, CONO, J/APRCO ;CONO APR, APR FLAGS
D 0705, 0600,1202 ; 8196 I, CONI, J/APRCI ;CONI APR,
D 0706, 0101,1202 ; 8197 I, CONSZ, J/APRCI ;CONSZ APR,
D 0707, 0500,1202 ; 8198 I, CONSO, J/APRCI ;CONSO APR,
; 8199
; 8200 ;DEVICE 004 (PI)
; 8201
D 0710, 3601,0511 ; 8202 710: W, M, J/PIBI ;RDERA (BLKI PI,) READ ERA
D 0711, 3300,0510 ; 8203 W, B/3, J/PIDI ;DATAI PI, Stats, or not used
D 0712, 4000,0512 ; 8204 R, J/PIBO ;SBDIAG (BLKO PI,) SBUS DIAGNOSTIC
D 0713, 4001,0510 ; 8205 R, B/0, J/PIDO ;DATAO PI, More statistics
D 0714, 0400,0710 ; 8206 I, CONO, J/PICO ;CONO PI, PI SYSTEM CONTROL
D 0715, 0600,0714 ; 8207 I, CONI, J/PICI ;CONI PI, IN PROGRESS, ENABLE
D 0716, 0101,0714 ; 8208 I, CONSZ, J/PICI
D 0717, 0500,0714 ; 8209 I, CONSO, J/PICI
; 8210
; 8211 ;DEVICE 010 (PAG)
; 8212
D 0720, 6200,1212 ; 8213 720: RW, BLKI, J/PAGBI ;BLKI PAG, UNASSIGNED
D 0721, 3600,1210 ; 8214 W, DATAI, J/PAGDI ;DATAI PAG, USER CONTEXT
D 0722, 0000,1204 ; 8215 I, J/PAGBO ;CLRPT (BLKO PAG,) INVAL PAGE TABLE
D 0723, 4401,1206 ; 8216 R, DATAO, J/PAGDO ;DATAO PAG, USER CONTEXT
D 0724, 0400,1214 ; 8217 I, CONO, J/PAGCO ;CONO PAG, EXEC CONTEXT
D 0725, 0600,1216 ; 8218 I, CONI, J/PAGCI ;CONI PAG,
D 0726, 0101,1216 ; 8219 I, CONSZ, J/PAGCI
D 0727, 0500,1216 ; 8220 I, CONSO, J/PAGCI
; 8221
; 8222 ;DEVICE 014 (CCA)
; 8223
D 0730, 0001,1504 ; 8224 730: I, J/SWEEP ;BLKI CCA, 8 FUNCTIONS TO SWEEP THE CACHE
D 0731, 0001,1504 ; 8225 I, J/SWEEP ;SWPIA (DATAI CCA,)INVALIDATE CACHE, NO CORE UPDATE
D 0732, 0001,1504 ; 8226 I, J/SWEEP ;SWPVA (BLKO CCA,)VALIDATE CORE, LEAVE CACHE VALID
D 0733, 0001,1504 ; 8227 I, J/SWEEP ;SWPUA (DATAO CCA,)UNLOAD CACHE TO CORE, CLEAR CACHE
D 0734, 0001,1504 ; 8228 I, J/SWEEP ;CONO CCA,
D 0735, 0001,1504 ; 8229 I, J/SWEEP ;SWPIO (CONI CCA,)INVALIDATE ONE PAGE
D 0736, 0001,1504 ; 8230 I, J/SWEEP ;SWPVO (CONSZ CCA,)VALIDATE ONE PAGE
D 0737, 0001,1504 ; 8231 I, J/SWEEP ;SWPUO (CONSO CCA,)UNLOAD ONE PAGE
; 8232
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 2
; IO.MIC[4,30] 17:12 9-Aug-84 I/O INSTRUCTIONS
; 8233 ;I/O CONT'D
; 8234
; 8235 ;DEVICE 020 (TIM)
; 8236
D 0740, 3101,1506 ; 8237 740: W, B/1, J/RDMTR ;RDPERF (BLKI TIM,) PERF CNT
D 0741, 3000,1506 ; 8238 W, B/0, J/RDMTR ;RDTIME (DATAI TIM,) TIME BASE
D 0742, 4400,1312 ; 8239 R, DATAO, J/TIMBO ;WRPAE (BLKO TIM,) PA ENABLES
D 0743, 4401,1310 ; 8240 R, DATAO, J/TIMDO ;DATAO TIM, UNDEFINED
D 0744, 0401,1300 ; 8241 I, CONO, J/TIMCO ;CONO TIM, SETUP INTERVAL TIMER
D 0745, 0601,1302 ; 8242 I, CONI, J/TIMCI ;CONI TIM, RD INTERVAL & PERIOD
D 0746, 0100,1302 ; 8243 I, CONSZ, J/TIMCI
D 0747, 0501,1302 ; 8244 I, CONSO, J/TIMCI
; 8245
; 8246 ;DEVICE 024 (MTR)
; 8247
; 8248
D 0750, 3300,1506 ; 8249 750: W, B/3, J/RDMTR ;RDMACT (BLKI MTR,) CACHE CNT
D 0751, 3201,1506 ; 8250 W, B/2, J/RDMTR ;RDEACT (DATAI MTR,) EBOX CNT
D 0752, 0001,1002 ; 8251 I, J/UUO ;BLKO MTR, UNDEFINED
D 0753, 0001,1002 ; 8252 I, J/UUO ;DATAO MTR, UNDEFINED
D 0754, 0400,1304 ; 8253 I, CONO, J/MTRCO ;WRTIME (CONO MTR,) ACCT & TB CTL
D 0755, 0600,1306 ; 8254 I, CONI, J/MTRCI ;CONI MTR, SAME
D 0756, 0101,1306 ; 8255 I, CONSZ, J/MTRCI
D 0757, 0500,1306 ; 8256 I, CONSO, J/MTRCI
; 8257
; 8258 ;DEVICE 030
; 8259
D 0760, 6200,0410 ; 8260 760: RW, BLKI, J/BLKIO
D 0761, 3601,0416 ; 8261 W, DATAI, J/IO
D 0762, 6001,0410 ; 8262 RW, BLKO, J/BLKIO
D 0763, 4401,0416 ; 8263 R, DATAO, J/IO
D 0764, 0401,0412 ; 8264 I, CONO, J/CONO
D 0765, 3601,0416 ; 8265 W, CONI, J/IO
D 0766, 0101,0412 ; 8266 I, CONSZ, J/CONS
D 0767, 0500,0412 ; 8267 I, CONSO, J/CONS
; 8268
; 8269 ;DEVICES 034-774 (ALL OTHERS)
; 8270
D 0770, 6200,0410 ; 8271 770: RW, BLKI, J/BLKIO
D 0771, 3601,0416 ; 8272 W, DATAI, J/IO
D 0772, 6001,0410 ; 8273 RW, BLKO, J/BLKIO
D 0773, 4401,0416 ; 8274 R, DATAO, J/IO
D 0774, 0401,0412 ; 8275 I, CONO, J/CONO
D 0775, 3601,0416 ; 8276 W, CONI, J/IO
D 0776, 0101,0412 ; 8277 I, CONSZ, J/CONS
D 0777, 0500,0412 ; 8278 I, CONSO, J/CONS
; 8279
; 8280 .UCODE
; 8281
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 3
; IO.MIC[4,30] 17:12 9-Aug-84 EXTERNAL DEVICE I/O INSTRUCTIONS
; 8282 .TOC "EXTERNAL DEVICE I/O INSTRUCTIONS"
; 8283
; 8284 =0****00*000
U 0410, 3002,0001,0000,0000,0000,7350,0000 ; 8285 BLKIO: SKP IO LEGAL,CALL,J/IOCHK ;FIRST VERIFY INSTR VALIDITY
U 0411, 0243,0001,0000,0000,0020,0034,0000 ; 8286 BYTE DISP,J/BLK1 ;TEST FPD
; 8287 CONS: ;HERE FOR CONSO, CONSZ TO LOAD
; 8288 ; BR IN CASE OF UUO
U 0412, 0416,4001,0040,0000,3000,0610,0004 ; 8289 CONO: BR/AR,ARL_ARR,ARR_ARR ;CONDITIONS TO BOTH HALVES
; 8290 =10
U 0416, 1030,3200,0003,0000,0022,7350,0000 ; 8291 IO: AR_MEM,SKP IO LEGAL,CALL,J/GTEBUS;WAIT FOR MBOX IF BLKI/O
U 0417, 0022,0001,0000,0000,0005,2233,0000 ; 8292 RELEEB: REL ECL EBUS,B WRITE ;XFER DONE, WHAT TO DO?
; 8293 =
; 8294 =1*010
U 0022, 3263,4001,0003,0000,0002,0010,0000 ; 8295 IOTEND: FIN STORE,MB WAIT,J/BLK4 ;BLKI/BLKO
U 0023, 0075,3602,0004,0000,0246,0010,0203 ; 8296 TEST AR.BR,TEST FETCH,J/NOP ;CONSZ
U 0026, 0344,0001,0003,0000,0002,6510,0000 ; 8297 MEM_AR,SKP PI CYCLE,J/IOFET ;DATA/CON I/O
U 0027, 0075,3602,0004,0000,0246,0010,0203 ; 8298 TEST AR.BR,TEST FETCH,J/NOP ;CONSO
; 8299 ;BLKI/BLKO SCREWED AROUND WITH TO TRY TO STOP PI LOSSAGE
U 3263, 0020,5062,0000,0000,0246,6517,0203 ; 8300 BLK4: TEST BRL,TEST FETCH,SKP PI CYCLE,J/CLRFPD
; 8301
; 8302 =1****0
U 0344, 0075,4001,0000,0000,0217,0010,0000 ; 8303 IOFET: I FETCH,J/NOP ;HERE IF NOT PI CYCLE
U 0345, 0744,0001,0000,0000,0000,0024,0502 ; 8304 DISMISS,J/PIFET ;DISMISS INTRPT AFTER DATA/CON I/O
; 8305
; 8306 =1**010
U 0242, 0125,4001,0043,0000,0002,0633,0020 ; 8307 BLK2: MEM_AR,BR/AR,ARL_0.C,B DISP,J/BLK3
U 0243, 0242,4003,2000,0000,0036,0017,0000 ; 8308 BLK1: AR_AR+1,GEN CRY18,STORE,J/BLK2 ;UPDATE POINTER WORD
U 0247, 0242,0001,0000,0000,0000,6510,0000 ; 8309 =111 SKP PI CYCLE,J/BLK2 ;IF FPD & NOT PI, DON'T INCREMENT
; 8310 =1*101 ;DO DATAI OR DATAO
U 0125, 0416,3703,0000,0000,0312,1110,0100 ; 8311 BLK3: VMA_AR,LOAD AR,SET FPD,J/IO ;GET DATA TO OUTPUT
U 0127, 0416,3703,0000,0000,0300,1110,0100 ; 8312 VMA_AR,SET FPD,J/IO ;INPUT DO BEFORE MEM
; 8313
; 8314 ;;;NOTE NOTE NOTE SET FPD INHIBITED BY HARDWARE IF PI CYCLE (SCD5)
; 8315
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 4
; IO.MIC[4,30] 17:12 9-Aug-84 EXTERNAL DEVICE I/O INSTRUCTIONS
; 8316 ;SUBROUTINES TO HANDLE EBUS
; 8317 ;CALL WITH "SKP IO LEGAL"
; 8318 ;ENTER AFTER LOADING AR IF OUTPUT FUNCTION
; 8319
; 8320 =00
U 1030, 1002,3242,2000,0000,0000,0010,0000 ; 8321 GTEBUS: AR_BR,J/UUO ;HERE IF IO ILLEGAL IN THIS MODE
U 1031, 2534,4001,0000,0000,0000,2250,0200 ; 8322 REQ EBUS,CALL,J/WGRANT ;ASK PI SYSTEM FOR BUS
; 8323 =11 ;RETURN TO TRANSFER ROUTINE
; 8324
; 8325 ;SUBROUTINE TO PERFORM EBUS TRANSFER
; 8326 ;SETUP CONTROLLER SELECT AND FUNCTION LINES BEFORE CALL
; 8327 ;IF OUTPUT, ALSO PUT AR ONTO EBUS DATA LINES
; 8328
; 8329 EBUSX: GEN AR,TIME/5T, ;WAIT AFTER ASSERTING FUNCTION
U 1033, 2533,3703,0000,0000,0060,2210,0060 ; 8330 SET EBUS DEMAND,J/WXFER ; AFTER 300 NS, ASSERT DEMAND
; 8331 =0
; 8332 EBUSW: AR_EBUS,GEN AR,
U 2532, 3264,3703,3000,0000,0060,2210,0020 ; 8333 CLR EBUS DEMAND,J/RELEB ;STROBE DATA AND DROP DEMAND
U 2533, 2532,3703,0000,0000,0000,6710,0000 ; 8334 WXFER: GEN AR,SKP -EBUS XFER,J/EBUSW ;WAIT FOR TRANSFER
; 8335
; 8336 RELEB: GEN AR,REL EBUS,TIME/5T, ;DROP DATA, CS, AND FCN
U 3264, 0003,3701,0000,0000,0060,2203,0100 ; 8337 RETURN3 ;AFTER 150 NS, THEN RELEASE BUS
; 8338
; 8339
; 8340 ;SUBROUTINE TO WAIT FOR PI SYSTEM TO GRANT EBUS
; 8341 ; IT WILL EITHER SEND EBUS GRANT, OR PI READY
; 8342
; 8343 =0
U 2534, 2536,0001,0000,0000,0000,6610,0000 ; 8344 WGRANT: SKP -EBUS GRANT,J/WGRNT1 ;GOT IT?
U 2535, 0071,4001,0000,0000,0000,2210,0000 ; 8345 DROP EBUS REQ,J/TAKINT
; 8346 =0
U 2536, 3265,3703,0000,0000,0000,2210,0030 ; 8347 WGRNT1: IO INIT,GEN AR,J/WGRNT2 ;GOT IT, SETUP CS, FCN, AND DATA
U 2537, 2534,0001,0000,0000,0000,7010,0000 ; 8348 SKP INTRPT,J/WGRANT ;DIDN'T GET IT, TEST FOR INTERUPT
; 8349 WGRNT2: GEN AR,TIME/5T, ;JUST WAIT
U 3265, 0003,3703,0000,0000,0060,0003,0030 ; 8350 EBUS CTL/IO INIT,RETURN3
; 8351
; 8352 ;HERE TO START PI CYCLE TRANSFER. HOLD EBUS CTL SELECTION
; 8353
U 3266, 1033,0001,0000,0000,0060,0010,0027 ; 8354 EBUSI: TIME/5T,EBUS CTL/DATAI,J/EBUSX
U 3267, 1033,3701,0000,0000,0060,0010,0026 ; 8355 EBUSO: GEN AR,TIME/5T,EBUS CTL/DATAO,J/EBUSX
; 8356
; 8357 ;SUBROUTINES TO CHECK IO LEGALITY FOR INTERNAL I/O INSTRUCTIONS
; 8358
; 8359 .IF/MODEL.B
; 8360 3002:
;;8361 .IFNOT/MODEL.B
;;8362 2002: ;ACCESSIBLE ON EXTEND [0]
; 8363 .ENDIF/MODEL.B
U 3002, 1002,3242,2000,0000,0000,0010,0000 ; 8364 IOCHK: AR_BR,J/UUO ;NAUGHTY, MUST'NT DO
; 8365 .IF/MODEL.B
; 8366 3003:
;;8367 .IFNOT/MODEL.B
;;8368 2003:
; 8369 .ENDIF/MODEL.B
U 3003, 0001,4001,0000,0000,0000,0003,0000 ; 8370 RET1: RETURN1 ;ONE-CYCLE NULL ROUTINE
; 8371
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 4-1
; IO.MIC[4,30] 17:12 9-Aug-84 EXTERNAL DEVICE I/O INSTRUCTIONS
; 8372 =0
U 2540, 1002,3242,2000,0000,0000,0010,0000 ; 8373 GETEEB: AR_BR,J/UUO ;IO ILLEGAL IN THIS MODE
U 2541, 0001,0001,0000,0000,0000,2203,0400 ; 8374 GTEEB1: GET ECL EBUS,RETURN1
; 8375
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 5
; IO.MIC[4,30] 17:12 9-Aug-84 INTERNAL DEVICE FUNCTIONS -- APR, CCA
; 8376 .TOC "INTERNAL DEVICE FUNCTIONS -- APR, CCA"
; 8377
; 8378 =0****00***0
; 8379 SWEEP: BR/AR,SC_#,#/9.,CALL,
U 1504, 3002,0001,0040,0302,0000,7350,0011 ; 8380 SKP IO LEGAL,J/IOCHK ;ALLOWED?
U 1505, 3270,0001,4000,0000,0000,0010,0000 ; 8381 AR_SHIFT ;MOVE PAGE # TO PLACE
U 3270, 3271,3701,0000,0000,0307,0010,0606 ; 8382 = VMA_AR,SWEEP CACHE ;START A SWEEP
U 3271, 0066,0001,0000,0000,0002,0010,0000 ; 8383 MBREL: MB WAIT,J/IFNOP ;COMPLETE REG FUNC BEFORE FETCH
; 8384
; 8385
; 8386 =0****00**00
U 1100, 2540,4001,0000,0000,0000,7350,0000 ; 8387 APRDO: CALL,SKP IO LEGAL,J/GETEEB ;SET ADDR BREAK
U 1101, 0417,3703,0000,0000,0060,2010,0417 ; 8388 DATAO APR,J/RELEEB
U 1102, 3002,4001,0040,0000,0000,7350,0000 ; 8389 APRBO: BR/AR,CALL,SKP IO LEGAL,J/IOCHK ;SET CACHE REFILL ALGORITHM
U 1103, 3271,4001,0000,0000,0007,0010,0505 ; 8390 WR REFILL RAM,J/MBREL ;INFO ALREADY IN VMA
; 8391 =
; 8392
; 8393 =0****00*000
U 0500, 2540,4001,0000,0000,0000,7350,0000 ; 8394 APRDI: CALL,SKP IO LEGAL,J/GETEEB ;READ ADDR BREAK
U 0501, 0417,0001,3000,0000,0060,2010,0513 ; 8395 DATAI APR(L),J/RELEEB
; 8396 =010
;;8397 .IFNOT/DDT.BUG ;[346] Normal code
;;8398 APRBI: CALL,SKP IO LEGAL,J/IOCHK ;RETURN MICRO VERSION, SERIAL #
;;8399 AR_SERIAL,TIME/3T, ;READ SERIAL NUMBER
;;8400 CALL,J/UVERS ;GET MICRO-CODE VERSION IN AR
;;8401 =111 ARL_ARR.S,AR_BR ;COMB SERIAL WITH VERSION
;;8402 = AR0-8_#,STORE,OPTIONS, ;SET OPTION FLAGS
;;8403 J/STMEM
; 8404 .IF/DDT.BUG ;[346] Gross hack to make EDDT work
U 0502, 2542,4001,0000,0000,0020,0710,0100 ; 8405 APRBI: AR_SERIAL,TIME/3T ;[346] Get hardware serial number
; 8406 =
; 8407 =0 AR_AR SWAP,FE_#,OPTIONS, ;Set to test bit 23
U 2542, 3002,4001,4000,0301,3000,7350,0640 ; 8408 SKP IO LEGAL,CALL [IOCHK]; Is this a legal instruction here?
U 2543, 0450,4001,0000,7130,0020,5210,0001 ; 8409 GEN P AND #,#/1,SKP SCAD NZ ;Was bit 23 set?
; 8410 =0*0
U 0450, 0137,4001,4000,0000,3000,0050,0000 ; 8411 SEROK: AR_AR SWAP,CALL [UVERS] ;Maybe not. Get microcode version
U 0451, 3273,4001,0000,7130,3000,0110,0076 ; 8412 P_P AND #,#/76,J/SERFIX ;Yes. Clean it and move it
U 0454, 3272,3242,2000,0000,3000,0610,0004 ; 8413 ARL_ARR,ARR_BR ;It's fixed. Shuffle version to spot
U 3272, 0066,4001,0000,0000,2016,0022,0200 ; 8414 = AR0-8_FE,STORE,J/STMEM ;Move in options and store result
; 8415 ;
U 3273, 0450,4001,0000,2031,0000,0010,0010 ; 8416 SERFIX: FE_FE+#,#/10,J/SEROK ;OR in bit 5 for option
; 8417 .ENDIF/DDT.BUG ;[346] All this code is GROSS!!
; 8418
; 8419 =0****00**00
; 8420 APRCO: BR/AR,ARL_ARR.M,ARR_ARR,CALL.M, ;SET APR FLAGS
U 1200, 2540,0001,0040,0000,3001,7350,0004 ; 8421 SKP IO LEGAL,J/GETEEB
U 1201, 3276,3701,0000,0000,0060,2010,0414 ; 8422 CONO APR, J/APRCO7 ;[272]
; 8423 APRCI: BR/AR,CALL,
U 1202, 2540,0001,0040,0000,0000,7350,0000 ; 8424 SKP IO LEGAL,J/GETEEB ;READ APR FLAGS
U 1203, 3274,0001,3000,0000,0060,2010,0510 ; 8425 CONI APR(R) ;GET RIGHT HALF OF APR CONDITIONS
U 3274, 3275,4001,3400,0000,3060,2010,0512 ; 8426 = ARX_AR SWAP,CONI APR(L) ;NOW LH COND TO AR LEFT
U 3275, 0417,0001,4000,0000,2000,0610,0000 ; 8427 AR_ARX,ARL_ARL,J/RELEEB ;COMBINE HALVES
U 3276, 0417,3703,0000,0000,0060,2010,0414 ; 8428 APRCO7: CONO APR,J/RELEEB ;[272]
; 8429
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 6
; IO.MIC[4,30] 17:12 9-Aug-84 INTERNAL DEVICE FUNCTIONS -- PI
; 8430 .TOC "INTERNAL DEVICE FUNCTIONS -- PI"
; 8431
; 8432 =0****00*000
; 8433 .IFNOT/INSTR.STAT
; 8434 PIDO:
U 0510, 1002,3242,2000,0000,0000,0010,0000 ; 8435 PIDI: AR_BR,J/UUO ;DATAI/O PI, UNASSIGNED
; 8436
;;8437 .IF/INSTR.STAT
;;8438 ;DATAO PI, SETS UP BUFFER POINTERS FOR TRACKS
;;8439 ;DATAI PI, READS CURRENT BUFFER POINTER
;;8440
;;8441 PIDI:
;;8442 PIDO: BR/AR,ARL+ARX_0.M,CALL.M, ;CHECK IO LEGALITY
;;8443 SKP IO LEGAL,J/IOCHK
;;8444 SC_#,#/9.,B DISP,SKP BR0,J/PIDX ;NOW, WHAT TO DO?
; 8445 .ENDIF/INSTR.STAT
; 8446
U 0511, 1254,0001,0000,0000,0007,0010,0504 ; 8447 PIBI: READ ERA,J/RDEBRG ;GET AND STORE
; 8448 =0
; 8449 PIBO: FE_#,#/7,CALL, ;NUMBER OF TIMES TO TRY
U 0512, 3002,0001,0000,0301,0000,7350,0007 ; 8450 SKP IO LEGAL,J/IOCHK ;SBUS DIAGNOSTIC
U 0513, 3277,0001,0040,0000,0007,0010,0407 ; 8451 DODIAG: SBUS DIAG,BR/AR ;SEND THE DIAG FUNCTION FROM AR
; 8452 =
; 8453 .DEFAULT/MOS=0
; 8454 .IFNOT/MOS
U 3277, 0066,4001,1000,0000,0016,3610,0000 ; 8455 AR/CACHE,VMA_VMA+1,STORE,J/STMEM ;STORE THE RESPONSE
;;8456 .IF/MOS
;;8457 AR/CACHE,MB WAIT ;[225]GET THE DATA.
;;8458 GEN AR+1,SKP AD NE ;IF MEMORY RETURNED -1 TRY AGAIN
;;8459 =0
;;8460 FE_FE-1,SKP SCAD0,J/SDTEST ;IT IS SEE IF TOO MANY TRIES
;;8461 SDONE: VMA_VMA+1,STORE,J/STMEM ;STORE THE RESPONSE
;;8462 =0
;;8463 SDTEST: AR_BR,J/DIAG1 ;[225]RECOVER THE FUNC AND RETRY.
;;8464 AR_0S,J/SDONE ;TOO MANY TRIES QUIT RETURNING 0
; 8465 .ENDIF/MOS
; 8466
; 8467 =0****00*000
; 8468 PICO: BR/AR,ARL_ARR.M,ARR_ARR,
U 0710, 2544,4001,0040,0000,3001,7350,0004 ; 8469 CALL.M,SKP IO LEGAL,J/PICOM1
U 0713, 3303,3703,0000,0000,0060,2010,0415 ; 8470 =11 CONO PI,J/PICOM2 ;SEND THE DATA
; 8471 =0****00*100
U 0714, 2544,4001,0040,0000,0000,7350,0000 ; 8472 PICI: BR/AR,CALL,SKP IO LEGAL,J/PICOM1
U 0717, 3300,0001,3000,0000,0060,2010,0500 ; 8473 =11 CONI PI(R) ;READ RH TO AR LEFT
; 8474 = ARX_AR SWAP, ;RH COND TO ARX RH
U 3300, 3301,0001,3400,0000,3060,2010,0530 ; 8475 CONI PI(PAR) ; AND PARITY ENABLES TO RH
; 8476 BRX/ARX,ARX_AR, ;READY TO COMB RH PARTS
U 3301, 3302,4001,3420,0000,1060,2010,0501 ; 8477 CONI PI(L) ; AND LH TO AR LEFT
U 3302, 3303,3302,6004,0000,0000,0610,0000 ; 8478 AR_ARX*BRX,AD/OR,ARL_ARL ;COMBINE THEM
U 3303, 0022,3701,0000,0000,0005,2233,0100 ; 8479 PICOM2: REL EBUS,GEN AR,B WRITE,J/IOTEND
; 8480
; 8481 =0
U 2544, 1002,3242,2000,0000,0000,0010,0000 ; 8482 PICOM1: AR_BR,J/UUO ;LOSE
U 2545, 2534,0001,0000,0000,0000,2210,0200 ; 8483 REQ EBUS,J/WGRANT ;OK, WAIT TO GET FULL EBUS
; 8484
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 7
; IO.MIC[4,30] 17:12 9-Aug-84 TRACKS SUPPORT
; 8485 .TOC "TRACKS SUPPORT"
; 8486 ;
; 8487 ; According to the University of Essex, when TRACKS is used with
; 8488 ; address break enabled, the monitor cannot disable address break
; 8489 ; for the actual execution of the instruction unless we include
; 8490 ; "ABORT INSTR" as part of the TRACKS loop. Accordingly, this is
; 8491 ; now done for all the different flavors of TRACKS. Thanks, folks.
; 8492 ;
; 8493 ;[317] During an attempt to implement uncounting of doubly counted op
; 8494 ; codes for the OP.CNT conditional, we learned: (1) EA
; 8495 ; calculation requires that VMA be initialized to the instruction
; 8496 ; location (usually PC) for the local/global stuff to work properly.
; 8497 ; Beware! (This is important if you try to do something after
; 8498 ; fetching an instruction but before you EA calc it.) (2) NICOND
; 8499 ; clears the trap enable flag. If INSTR.STAT is on, this will force
; 8500 ; the dispatch to the statistics logic without taking the trap,
; 8501 ; which will thus be lost and gone forever. This is a hardware bug,
; 8502 ; but it's rather impossible to ECO it at this late date.
; 8503 ;
; 8504 ;[321] The solution to this is to ignore the statistics flag if a trap
; 8505 ; is ready. See the block at NEXT for details. (It's not really
; 8506 ; a hardware bug after all.)
; 8507 ;
;;8508 .IF/INSTR.STAT
;;8509 =00
;;8510 PIDX: CLR TRACKS EN,J/IFNOP ;TURN TRACKS OFF
;;8511 .IF/TRACKS
;;8512 ARX_SHIFT,ARL_BRL,ARR_0.S,J/PIDO2
;;8513 .IFNOT/TRACKS
;;8514 ARX_SHIFT,AR_2,J/PIDX1 ;[315] Turn statistics on
;;8515 .ENDIF/TRACKS
;;8516 =11 AR_TRX ;READ BACK POINTER
;;8517 ARL_0.M ;GET INDEX PART
;;8518 AR_AR+TRB,STORE,J/STMEM ;DONE WITH DATAI
;;8519
;;8520 .IFNOT/TRACKS
;;8521 PIDX1: AR_ARX+AR*4 ;SAVE PAGE NUMBERS IN TRX REGISTERS
;;8522 TRB_AR ;INITIAL GARBAGE HERE
;;8523 VMA_ARX,LOAD AR,PHYS REF
;;8524 AR_MEM
;;8525 VMA_ARX+1,LOAD AR,PHYS REF
;;8526 TRX_AR,ARX_ARX+1 ;[315] Must wait one cycle for
;;8527 AR_MEM ;parity check before writing AC
;;8528 VMA_ARX+1,LOAD AR,PHYS REF
;;8529 TRX1_AR,ARX_ARX+1 ;[315] Note that this will always
;;8530 AR_MEM ;make it before AR is smashed
;;8531 VMA_ARX+1,LOAD AR,PHYS REF
;;8532 TRX2_AR
;;8533 AR_MEM
;;8534 SET TRACKS EN ;[315] Might as well do this now
;;8535 TRX3_AR,I FETCH,J/NOP ;SAVE TABLE PAGE #, TURN ON
;;8536 .ENDIF/TRACKS
;;8537
;;8538 PIDO2: TRX_AR,AR_ARX ;SET UP INDEX
;;8539 TRB_AR ;AND BASE
;;8540 SET TRACKS EN,J/IFNOP ;TURN TRACKS ON
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 7-1
; IO.MIC[4,30] 17:12 9-Aug-84 TRACKS SUPPORT
;;8541
;;8542 .IF/TRACKS
;;8543 ;HERE WHEN NICOND FINDS TRACKS ENABLED
;;8544 =0
;;8545 TRK1: TRX_AR,J/TRK2 ;PUT BACK UPDATED INDEX
;;8546 AR_AR SWAP ;END OF BUFFER. RESET
;;8547 AR_-AR,J/TRK1 ; ORIGINAL INDEX
;;8548
;;8549 TRK2: ARL_0.M
;;8550 AR_AR+TRB ;ADDRESS TRACKS BUFFER
;;8551 VMA_AR,PHYS REF ;TO MAKE MODEL A WORK
;;8552 AR_PC,STORE,PHYS REF ; PUT PC THERE
;;8553 MEM_AR,VMA/PC,CLR TRACKS EN ;PREVENT NICOND SEEING TRACKS...
;;8554 ABORT INSTR ;[306] Make address break work by
;;8555 ; copying AD BRK CYC to AD FAIL INH
;;8556 SET TRACKS EN ;...UNTIL NEXT TIME
;;8557 DISP/NICOND,J/NEXT ;GO DO NEXT INSTR
;;8558 .ENDIF/TRACKS
;;8559
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 8
; IO.MIC[4,30] 17:12 9-Aug-84 TRACKS SUPPORT
;;8560 .IF/OP.CNT
;;8561 ;HERE WHEN NICOND FINDS OPCODE COUNTING ENABLED
;;8562 ; SKIP IF USER MODE
;;8563 ;[316] Make this register usage compatible with timing version below by
;;8564 ; making it use TRX2 (for exec mode counts pointer) and TRX3 (for user mode
;;8565 ; counts pointer) instead of TRX and TRX+1.
;;8566 ;[317] A massive attempt to uncount doubly counted instructions when an
;;8567 ; interrupt was detected has been backed off. See INSTR.STAT dispatch logic
;;8568 ; above for commentary.
;;8569 ;
;;8570 =0
;;8571 OPCT1: AR_TRX2,SKP AC REF,J/OPCT2 ;[316] TRX HAS PAGE # FOR EXEC TABLE
;;8572 AR_TRX3,SKP AC REF ;[316] NEXT PAGE IS FOR USER
;;8573 =0
;;8574 OPCT2: AR_SHIFT,MQ_SHIFT, ;[317] Save VMA of increment
;;8575 CLR TRACKS EN,J/OPCT3 ;OPCODE INDEXES INTO TABLE
;;8576 ARX_FM(VMA),J/OPCT2 ;GET INSTR FROM FM
;;8577 ;
;;8578 OPCT3: VMA_AR,LOAD AR,PHYS REF ;GET TABLE ENTRY
;;8579 AR_MEM ;[306] Make address break work
;;8580 BR/AR,AR_AR+1,STORE ;ADD THIS OCCURANCE TO IT, keep old
;;8581 MEM_AR,VMA/PC
;;8582 SET TRACKS EN ;LET US GET BACK NEXT NICOND
;;8583 DISP/NICOND ;DO INSTR IN ARX
;;8584 ;
;;8585 ; In an attempt to prevent an interrupt after counting an instruction,
;;8586 ; we now fake the second NICOND in line.
;;8587 ;
;;8588 =0000 AR_BR,CLR TRACKS EN,J/OPFIX ;Some kind of odd condition.
;;8589 =0010 AR_BR,CLR TRACKS EN,J/OPFIX ; Uncount the instruction
;;8590 AR_BR,CLR TRACKS EN,J/OPFIX
;;8591 AR_BR,CLR TRACKS EN,J/OPFIX
;;8592 AR_BR,CLR TRACKS EN,J/OPFIX
;;8593 AR_BR,CLR TRACKS EN,J/OPFIX
;;8594 =1010 BRX/ARX,AR_ARX,SET ACCOUNT EN, ;The usual case
;;8595 XR,EA MOD DISP,J/COMPEA
;;8596 AR_BR,CLR TRACKS EN,J/OPFIX
;;8597 =1110 GEN ARX,LOAD IR,#/0,J/XCTGO ;Instruction in registers
;;8598 AR_BR,CLR TRACKS EN
;;8599 ;
;;8600 OPFIX: VMA_MQ,STORE,PHYS REF ;Restore old count
;;8601 MEM_AR,VMA/PC
;;8602 SET TRACKS EN ;Turn TRACKS back on
;;8603 DISP/NICOND,J/NEXT ; and do it yet again
;;8604 .ENDIF/OP.CNT
;;8605
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 9
; IO.MIC[4,30] 17:12 9-Aug-84 TRACKS SUPPORT
;;8606 .IF/OP.TIME
;;8607 ;HERE TO ADD UP TIME SPENT IN INSTR'S
;;8608
;;8609 OPTM0: SC_#,#/9.,SKP USER,J/OPTM1
;;8610 =0
;;8611 OPTM1: BR_AR LONG,AR_TRX2,SKP AC REF, ;INSTR IN ARX PAGE IN AR
;;8612 J/OPTM2
;;8613 BR_AR LONG,AR_TRX3,SKP AC REF, ;INSTR IN ARX PAGE IN AR
;;8614 J/OPTM2
;;8615 =0
;;8616 OPTM2: AR_SHIFT,ABORT INSTR,J/OPTM3 ;[306] GENERATE ADDR TO INCREMENT
;;8617 ;NEXT GET ADDR FOR THIS
;;8618 ARX_FM(VMA),J/OPTM2 ;GET NEXT INSTR FROM FM
;;8619 OPTM3: VMA_AR,LOAD AR,UNCSH PHYS REF ;BUMP COUNT LOCATION
;;8620 AR_MEM
;;8621 AR_AR+1,STORE
;;8622 MEM_AR,SKP USER
;;8623 =0 AR_TRX,J/OPTM4
;;8624 AR_TRX1
;;8625 OPTM4: AR_SHIFT,ARX_TRB
;;8626 TRB_AR ;SAVE NEXT LOC TO BUMP
;;8627 RD+CLR PA ;TIME TO AR
;;8628 MTR CTL/CLR PERF
;;8629 VMA_ARX,LOAD ARX,UNCSH PHYS REF ;GET TABLE ENTRY
;;8630 AR_AR-BR,ARL_0.S ;COMPENSATE TIME FOR THIS CODE
;;8631 BR/AR,ARX_MEM,SKP AR18 ;IF THIS WAS AN ENABLED STATE,
;;8632 =0 AR_ARX+BR,STORE ;WRITE IT BACK
;;8633 MEM_AR,VMA/PC ;NOW SETUP NEXT INSTR AGAIN
;;8634 ARX_BRX,SET TRK+PA EN ;RESTORE STATISTICS FLAGS
;;8635 DISP/NICOND,J/NEXT
;;8636 .ENDIF/OP.TIME
;;8637
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 10
; IO.MIC[4,30] 17:12 9-Aug-84 TRACKS SUPPORT
;;8638 ;THIS IS THE SECOND ORDER STATISTICS GATHERING CODE
;;8639 .IFNOT/SO2.CNT
;;8640 .IF/SO.CNT
;;8641 ;THIS IS NON DEBUGED CODE THAT IS IN A VERY PRIMATIVE STATE
;;8642 ;IT WAS ABANDONED BETWEEN EDITS AS THE MONITOR NEEDED SOMETHING
;;8643 ;SLIGHTLY DIFFERENT
;;8644 ;THIS IS CODE TO DO A SECOND ORDER STATISTIC IN THE SECOND 128K
;;8645 ;EACH ENTRY IS A HALF WORD
;;8646 ;THE LOW ORDER BIT OF <LAST OPCODE><THIS OPCODE> CONCATENATION
;;8647 ;DETERMINES WHICH HALFWORD IS INCREMENTED. OFF IS HIGH
;;8648 ;IF A HALFWORD OVERFLOWS THE CODE TURNS ITSELF OFF AND WRITES -1
;;8649 ;AT LOCATION 400000
;;8650 ;TRX HIDES THE LOCATION PRESENTED TRB THE LAST OPCODE
;;8651
;;8652 ; THIS IS IN THE NEXT LOOP COMMENTED HERE FOR DOCUMENTATION
;;8653 ;TRK0: ARX_TRB,BRX/ARX,SKP AC REF,J/TRK1;GET PREV INSTR HIDE THIS ONE
;;8654
;;8655 =0
;;8656 TRK1: AR_1,SC_#,#/9.,J/TRK2 ;SHIFT IN FIRST OPCODE
;;8657 ARX_FM(VMA),AR_ARX ;GET THE INSTRUCTION FROM FM
;;8658 BRX/ARX,AR_1,SC_#,#/9.,ARX_AR ; WHEN IT HIDES THERE
;;8659 TRK2: AR_SHIFT,SC_#,#/8.,ARX_BRX ;SETUP TO DO THE NEXT OPCODE
;;8660 AR_SHIFT,CLR TRACKS EN ;CONVIENT TO SHUT OFF TRACKS
;;8661 VMA_AR,LOAD ARX,PHYS REF,AR_ARX ;LOW BIT OF INSTR WHERE CAN TEST
;;8662 ARX_SHIFT,TRB_AR ;LOW BIT OF INSTR TO HIGH BIT
;;8663 ARL_0.S,ARR_1S,SKP ARX0 ;SEE WHICH HALFWORD TO INC
;;8664 ; ALSO SETTING UP FOR TEST IN
;;8665 ; LOW INCREMENT
;;8666 =0 ARL_1.M,ARR_0.M,J/TRK3 ;INC HIGH
;;8667 ARX_MEM ;INC LOW
;;8668 BR/AR,ARX_ARX+1,AR/ADX,STORE ;INCREMENT LOW HALF AND STORE IT
;;8669 TEST AR.BR,SKP CRY0 ;USING AND-1 HACK TO TEST OVFLOW
;;8670 =0 AR_0S,J/TRKLOS ;OVERFLOWED FIXUP TO LOSE
;;8671 MEM_AR,ARX_BRX,VMA/PC,AR_BRX ;NO OVERFLOW GET OUT ALSO
;;8672 TRKN1: SET TRACKS EN ; SAVE AWAY THIS OPCODE
;;8673 TRKND: DISP/NICOND,J/NEXT ;AND DO NEXT INSTR
;;8674
;;8675 TRK3: ARX_MEM,BR/AR ;GET WORD TO INC
;;8676 AR_ARX+BR,STORE,SKP CRY0 ;COMPUTE AND CHECK FOR OVERFLOW
;;8677 =0 ARX_BRX,VMA/PC,MEM_AR,AR_BRX, ;SAVE AWAY THIS INSTR
;;8678 J/TRKN1 ; AND GET OUT
;;8679 AR_0.C,ARX_BRX,MEM_AR,J/TRKLOS ;SHUT DOWN TRACKS ON OVERFLOW
;;8680
;;8681
;;8682 TRKLOS: AR_1,SC_#,#/17. ;WHEN LOSS PUT -1 IN 400000
;;8683 AR_SHIFT
;;8684 GEN AR,VMA/AD,PHYS REF ;SHUT OFF TRACKS AND QUIT
;;8685 AR_TRB,STORE
;;8686 MEM_AR,VMA/AD
;;8687 J/TRKND
;;8688
;;8689 .ENDIF/SO.CNT
;;8690
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 11
; IO.MIC[4,30] 17:12 9-Aug-84 TRACKS SUPPORT
;;8691
;;8692 .IF/SO2.CNT
;;8693 ;THIS ONE DOES THE COUNTING IN 128K STARTING AT AN ADDRESS PRESENTED IT
;;8694 ;THIS IS CODE TO DO A SECOND ORDER STATISTIC IN THE SECOND 128K
;;8695 ;EACH ENTRY IS A HALF WORD
;;8696 ;THE LOW ORDER BIT OF <LAST OPCODE><THIS OPCODE> CONCATENATION
;;8697 ;DETERMINES WHICH HALFWORD IS INCREMENTED. OFF IS HIGH
;;8698 ;IF A HALFWORD OVERFLOWS THE CODE TURNS ITSELF OFF AND WRITES -1
;;8699 ;AT LOCATION PRESENTED
;;8700 ;TRX HIDES THE LOCATION PRESENTED TRB THE LAST OPCODE
;;8701
;;8702 ; THIS IS IN THE NEXT LOOP COMMENTED HERE FOR DOCUMENTATION
;;8703 ;TRK0: ARX_TRB,BRX/ARX,SKP AC REF,J/TRK1;GET PREV INSTR HIDE THIS ONE
;;8704
;;8705 =0
;;8706 TRK1: AR_0S,SC_#,#/9.,J/TRK2 ;SHIFT IN FIRST OPCODE
;;8707 ARX_FM(VMA),AR_ARX ;GET THE INSTRUCTION FROM FM
;;8708 BRX/ARX,AR_0S,SC_#,#/9.,ARX_AR ; WHEN IT HIDES THERE
;;8709 TRK2: AR_SHIFT,SC_#,#/8.,ARX_BRX ;SETUP TO DO THE NEXT OPCODE
;;8710 AR_SHIFT,CLR TRACKS EN ;CONVIENT TO SHUT OFF TRACKS
;;8711 AR_AR+TRX ;BUMPS BY NUMBER FED IT
;;8712 VMA_AR,LOAD ARX,PHYS REF,AR_ARX ;LOW BIT OF INSTR WHERE CAN TEST
;;8713 ARX_SHIFT,TRB_AR ;LOW BIT OF INSTR TO HIGH BIT
;;8714 ARL_0.S,ARR_1S,SKP ARX0 ;SEE WHICH HALFWORD TO INC
;;8715 ; ALSO SETTING UP FOR TEST IN
;;8716 ; LOW INCREMENT
;;8717 =0 ARL_1.M,ARR_0.M,J/TRK3 ;INC HIGH
;;8718 ARX_MEM,ABORT INSTR ;[306] INC LOW
;;8719 BR/AR,ARX_ARX+1,AR/ADX,STORE ;INCREMENT LOW HALF AND STORE IT
;;8720 TEST AR.BR,SKP CRY0 ;USING AND-1 HACK TO TEST OVFLOW
;;8721 =0 AR_0S,J/TRKLOS ;OVERFLOWED FIXUP TO LOSE
;;8722 MEM_AR,ARX_BRX,VMA/PC,AR_BRX ;NO OVERFLOW GET OUT ALSO
;;8723 TRKN1: SET TRACKS EN ; SAVE AWAY THIS OPCODE
;;8724 TRKND: DISP/NICOND,J/NEXT ;AND DO NEXT INSTR
;;8725
;;8726 TRK3: ARX_MEM,BR/AR,ABORT INSTR ;[306] GET WORD TO INC
;;8727 AR_ARX+BR,STORE,SKP CRY0 ;COMPUTE AND CHECK FOR OVERFLOW
;;8728 =0 ARX_BRX,VMA/PC,MEM_AR,AR_BRX, ;SAVE AWAY THIS INSTR
;;8729 J/TRKN1 ; AND GET OUT
;;8730 AR_0.C,ARX_BRX,MEM_AR,J/TRKLOS ;SHUT DOWN TRACKS ON OVERFLOW
;;8731
;;8732
;;8733 TRKLOS: AR_TRX
;;8734 GEN AR,VMA/AD,PHYS REF ;WRITE -1 IN PRESENTED LOCATION
;;8735 AR_TRB,STORE
;;8736 MEM_AR,VMA/PC ;NEED AN INSTRUCTION TO GIVE
;;8737 J/TRKND ;TIME TO NICOND AFTER VMA/PC
;;8738
;;8739 .ENDIF/SO2.CNT
; 8740 .ENDIF/INSTR.STAT
; 8741
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 12
; IO.MIC[4,30] 17:12 9-Aug-84 INTERNAL DEVICE FUNCTIONS -- PAG
; 8742 .TOC "INTERNAL DEVICE FUNCTIONS -- PAG"
; 8743
; 8744 =0****00**00
;;8745 .IFNOT/KLPAGE
;;8746 PAGBO: BR/AR,CLR FE,CALL, ;INVALIDATE ONE PAGE TABLE LINE
;;8747 SKP IO LEGAL,J/IOCHK
;;8748 PAGBO1: PT SEL_INVAL,J/PTLOOP ;SETUP INITIAL PT WR SELECT
; 8749 .IF/KLPAGE
; 8750 PAGBO: AR_0S,BR/AR,CALL, ;CLEAR ONE PAGE TABLE ENTRY
U 1204, 3002,3441,2040,0000,0000,7350,0000 ; 8751 SKP IO LEGAL,J/IOCHK
U 1205, 0066,0001,0000,0000,0020,2310,0010 ; 8752 WR PT ENTRY,J/IFNOP
; 8753 .ENDIF/KLPAGE
; 8754 PAGDO: ARX_AR (AD),ARR_ARL,ARL_ARL.M, ;SETUP USER CONTEXT
U 1206, 2540,3703,4200,0000,3001,7350,0000 ; 8755 CALL.M,SKP IO LEGAL,J/GETEEB
U 1207, 3304,3703,4000,0000,2060,2010,0620 ; 8756 DATAO PAG(L),AR_ARX ;SETUP AC BLOCKS, PREV CTXT
U 3304, 2546,3243,0000,0302,0020,5510,0011 ; 8757 = SKP AR2,SC_#,#/9.
; 8758 =0
U 2546, 0417,4001,0000,0000,0000,0010,0007 ; 8759 TIMCO1: MTR CTL/CONO TIM,J/RELEEB ;DO NOT CHANGE UBR
;;8760 .IF/PAGCNT ;[327] Count DATAO PAG with bit 2
;;8761 MQ_AR,AR_TRX3+1 ;[327] Do the count
;;8762 TRX3_AR,AR_MQ
; 8763 .ENDIF/PAGCNT ;[327]
; 8764 FE_P AND #,#/4,MQ_SHIFT, ;[333] Save bit 3 for keep test
U 2547, 0660,3401,2010,7131,0000,4410,0004 ; 8765 SKP AR18,AR_0S ;STORE ACCT?
U 0660, 2550,4001,0000,0000,0000,0150,0100 ; 8766 =0*0 AR0-8_#,#/100,CALL,J/PAGD2 ;YES, START WITH EBOX CNT
U 0661, 3315,3723,0000,0000,0307,0050,0602 ; 8767 VMA_MQ,LOAD UBR,CALL [CLRPT] ;[333] No. Set for page table clear
; 8768 .IF/BIG.PT ;[333]
U 0665, 1756,4001,0000,2400,0020,5210,0000 ; 8769 =1*1 SKP SC NE,J/KEEPME ;[333] Might keep keep me bits
;;8770 .IFNOT/BIG.PT
;;8771 =1*1 PT SEL_INVAL,J/PTLOOP ;SETUP INITIAL PT WR SELECT
; 8772 .ENDIF/BIG.PT ;[333]
; 8773 ;
; 8774 ; PAGD2 is set up as a subroutine for addressing convenience only.
; 8775 ;
; 8776 =0
U 2550, 2012,4001,0400,0302,1000,0050,0015 ; 8777 PAGD2: ARX_AR,SC_#,#/13.,CALL,J/EMTR ;UPDATE THE EBOX ACCT
U 2551, 3305,4001,0000,0000,0002,0110,0140 ; 8778 MB WAIT,AR0-8_#,#/140 ;READY TO GET CACHE ACCT
U 3305, 2013,4001,0400,0302,1000,0010,0015 ; 8779 ARX_AR,SC_#,#/13.,J/CMTR ;RETURN ABOVE TO CLR PT
; 8780
; 8781
; 8782 =0****00**00
; 8783 PAGDI: SC_#,#/70,SKP IO LEGAL,
U 1210, 2540,4001,0000,0302,0000,7350,0070 ; 8784 CALL,J/GETEEB
;;8785 .IFNOT/MODEL.B
;;8786 DATAI PAG(L),CALL,J/PCTXT ;FIRST GET AC BLOCKS & CWSX
; 8787 .IF/MODEL.B
; 8788 DATAI PAG(L),ARX_1B17-1, ;PUT AC BLKS IN AR,
U 1211, 3306,1741,3200,0000,0060,2057,0511 ; 8789 CALL,J/PCTXT ; [0,,-1] IN ARX
; 8790 .ENDIF/MODEL.B
U 1212, 1002,3242,2000,0000,0000,0010,0000 ; 8791 PAGBI: AR_BR,J/UUO ;BLKI PAG, IS UNASSIGNED
U 1213, 0417,3242,4000,0000,0000,0610,0002 ; 8792 AR_SHIFT,ARL_BRL,J/RELEEB ;COMBINE UBR WITH AC BLKS, CWSX
; 8793 =
;;8794 .IFNOT/MODEL.B
;;8795 PCTXT: P_SC ;PLUG IN LOAD-ENABLE BITS
;;8796 =0* BR/AR,AR_0S,READ UBR, ;ASK MBOX FOR UBR LOC'N
;;8797 CALL,J/XFERW ;NOW READ IT
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 12-1
; IO.MIC[4,30] 17:12 9-Aug-84 INTERNAL DEVICE FUNCTIONS -- PAG
;;8798 AR_EBUS REG
; 8799 .IF/MODEL.B
U 3306, 3307,3203,0500,2400,3001,0010,0200 ; 8800 PCTXT: P_SC,ARX_ARX*8 ;STUFF IN LOAD EN, ARX=7,,-10
U 3307, 3310,3243,0540,0000,2000,0210,0000 ; 8801 BR/AR,AR12-17_PREV SEC,ARX_ARX*8
U 3310, 1154,3012,2044,0000,0000,0010,0000 ; 8802 BR/AR,AR_ARX*BR,AD/ANDCA ;PCS TO BR, LD EN, AC BLKS TO AR
; 8803 =0* AR_AR*BR,AD/OR,READ UBR, ;LH READY IN AR. GET UBR
U 1154, 1023,3302,2004,0000,0007,0050,0502 ; 8804 CALL,J/XFERW
U 1156, 3311,0001,3040,0000,0060,2010,0567 ; 8805 BR/AR,AR_EBUS REG ;LH TO BR. READ UBR ADDRESS
; 8806 .ENDIF/MODEL.B
; 8807 ARX_AR,AR_0S,SC_#,#/27., ;READY TO MOVE INTO POSITION
U 3311, 0003,3441,2400,0302,1000,0003,0033 ; 8808 RETURN3
; 8809
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 13
; IO.MIC[4,30] 17:12 9-Aug-84 INTERNAL DEVICE FUNCTIONS -- PAG
; 8810 ;CONI/O PAG,
; 8811
; 8812 =0****00**00
; 8813 PAGCO: BR/AR,ARL_ARR.M,ARR_ARR,ARX_0S, ;SET EXEC CONTEXT
U 1214, 2540,3401,0240,0000,3001,7350,0004 ; 8814 SKP IO LEGAL,CALL.M,J/GETEEB
U 1215, 1750,3703,0000,0000,0060,2010,0416 ; 8815 CONO PAG,J/SETEBR ;SET CACHE, SEC, TRAP EN FLAGS
; 8816
; 8817 PAGCI: BR/AR,AR_0S,CALL,SKP IO LEGAL, ;READ EXEC CONTEXT
U 1216, 2540,3441,2040,0302,0000,7350,0011 ; 8818 SC_#,#/9.,J/GETEEB
U 1217, 1174,4001,3000,0000,0060,2010,0531 ; 8819 CONI PAG ;READ CACHE, SEC, TRAP EN
; 8820 =
; 8821 =0* ARX_AR SWAP,AR_0S,READ EBR, ;SETUP EPT LOC'N TO READ
U 1174, 1023,3401,2400,0000,3007,0050,0503 ; 8822 CALL,J/XFERW
; 8823 AR_EBUS REG, ;GET EBR IN AR
U 1176, 3312,3401,3220,0000,0060,2010,0567 ; 8824 BRX/ARX,ARX_0S ;SAVE FLAGS IN LH OF BRX
U 3312, 3313,4001,0400,0000,0000,2210,0000 ; 8825 ARX_SHIFT,REL ECL EBUS ;MOVE EBR LOC LEFT
U 3313, 3314,3322,0000,0000,0001,0010,0016 ; 8826 ARR_0.M,ADB/BR,ADA EN/EN,AD/OR,ARL/ADX ;COMBINE, THEN PUT IN RH
U 3314, 0022,4001,4000,0000,3005,0033,0000 ; 8827 AR_AR SWAP,B WRITE,J/IOTEND ;STORE THE RESULT
; 8828
; 8829 ;HERE TO FINISH CONO PAG,
; 8830
; 8831 =000 ;[342]
U 1750, 2450,4001,0000,0302,0000,0050,0011 ; 8832 SETEBR: SC_#,#/9.,CALL,J/SHIFT ;MOVE EBR LOC'N TO POSITION
U 1752, 3315,3703,0000,0000,0307,0050,0603 ; 8833 =010 VMA_AR,LOAD EBR,CALL [CLRPT] ;[333]SETUP EBR
; 8834 =110 ;[342]SETUP INITIAL PT WR SELECT
U 1756, 1766,4001,0000,0000,0000,2310,0001 ; 8835 KEEPME: PT SEL_INVAL,J/PTLOOP ;[342] FOR NON KLPAGE THIS CAN SEND
; 8836 ; THE USER TO PAGBO1 AND SAVE 1
; 8837 ; UCODE LOCATION
; 8838 .IF/BIG.PT ;[333] Entry from DATAO
U 1757, 2006,4001,0000,0000,0000,2310,0041 ; 8839 PT SEL_INVAL (KEEP),J/KEEPCL ;[342] Hang on to KEEP pages
; 8840 .ENDIF/BIG.PT ;[333]
; 8841 =
; 8842 =110
; 8843 PTLOOP: AR_AR+BR,VMA/AD,FE_FE-1, ;SELECT A LINE OF PT
; 8844 CLR PT LINE,TIME/3T, ;DO THE WORK
U 1766, 1766,0602,2000,3001,0320,2334,0031 ; 8845 BYTE DISP,J/PTLOOP ;LOOP TO CLEAR ALL
U 1767, 0066,0001,0000,0000,0000,2310,0000 ; 8846 PT SEL_NORMAL,J/IFNOP ;RESET PT WR SELECTION
; 8847 .IF/BIG.PT ;[333]
; 8848 =110
; 8849 KEEPCL: AR_AR+BR,VMA/AD,FE_FE-1,TIME/3T,;SELECT A LINE OF PT
; 8850 CLR PT LINE (KEEP), ;DO THE WORK
U 2006, 2006,0602,2004,3001,0320,2334,0061 ; 8851 BYTE DISP,J/KEEPCL ;Hang onto lines with KEEP ME set
U 2007, 0066,0001,0000,0000,0000,2310,0000 ; 8852 PT SEL_NORMAL,J/IFNOP ;RESET PT WR SELECTION
; 8853 .ENDIF/BIG.PT ;[333]
; 8854 ;
; 8855 ; [333] Set up to clear hardware page table after setting EBR or
; 8856 ; UBR. KEEP ME pages may or may not be cleared, depending upon the
; 8857 ; setting of DATAO PAG bit 3. (Clear everything for CONO PAG.)
; 8858 ;
U 3315, 2552,3401,2200,0000,0000,2210,0000 ; 8859 CLRPT: AR_0S,ARX_0S,REL ECL EBUS ;[334]DON'T HANG UP BUS FOR THIS
; 8860 =0 AR0-8_#,#/10,MB WAIT, ;WAIT FOR U/E BR LOAD
U 2552, 0732,4001,0000,0000,0002,0153,0010 ; 8861 SC_FE,CALL [ARSWAP] ;[334]GET 1B23
; 8862 BR/AR,AR_0S,VMA/AD, ;[333][334] START CLEARING AT ZERO
U 2553, 0004,3441,2040,0301,0300,0003,0077 ; 8863 FE_#,#/63.,RETURN4 ;SETUP LOOP COUNT
; 8864
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 14
; IO.MIC[4,30] 17:12 9-Aug-84 INTERNAL DEVICE FUNCTIONS -- TIM & MTR
; 8865 .TOC "INTERNAL DEVICE FUNCTIONS -- TIM & MTR"
; 8866
; 8867 =0****00***0
; 8868 RDMTR: AR_BR,CALL, ;GET E TO AR
U 1506, 2540,3242,2000,0000,0000,7350,0000 ; 8869 SKP IO LEGAL,J/GETEEB ;GRAB CONTROL OF EBUS
; 8870 MQ_AR,AR_0S, ;SAVE E IN MQ
U 1507, 1040,3401,2010,0302,1000,0033,0015 ; 8871 SC_#,#/13.,B DISP ;WHICH COUNTER?
; 8872 =
U 1040, 2554,4001,3000,0000,0060,2010,0510 ; 8873 =00 AR_TIME BASE,J/RDMTR1 ;DATAI TIM,
U 1041, 2554,0001,3000,0000,0060,2010,0511 ; 8874 AR_PERF CNT,J/RDMTR1 ;BLKI TIM,
U 1042, 2554,0001,3000,0000,0060,2010,0512 ; 8875 AR_EBOX CNT,J/RDMTR1 ;DATAI MTR,
U 1043, 2554,4001,3000,0000,0060,2010,0513 ; 8876 AR_CACHE CNT,J/RDMTR1 ;BLKI MTR,
; 8877
; 8878 =0
; 8879 RDMTR1: ARL+ARX_0.M,B DISP, ;SHIFT COUNT INTO POSITION
U 2554, 1050,4001,0000,0000,0001,0073,0060 ; 8880 CALL.M,J/MTRDBL ;ADD DOUBLE WORD FROM PT
U 2555, 3316,0602,2604,0000,0020,2227,0000 ; 8881 AR_AR+BR LONG,REL ECL EBUS
U 3316, 0352,3723,0000,0302,0316,0010,0043 ; 8882 VMA_MQ,STORE,SC_#,#/35.,J/DMVM1 ;STORE TOTAL AT E & E+1
; 8883
; 8884 =0****00**00
U 1300, 2540,0001,0040,0000,0000,7350,0000 ; 8885 TIMCO: BR/AR,CALL,SKP IO LEGAL,J/GETEEB
U 1301, 2546,3703,0000,0000,0060,2023,0407 ; 8886 CONO TIM,J/TIMCO1
; 8887 TIMCI: BR/AR,AR_0S,CALL,
U 1302, 2540,3401,2040,0000,0000,7350,0000 ; 8888 SKP IO LEGAL,J/GETEEB
U 1303, 3317,0001,3000,0000,0060,2010,0514 ; 8889 AR_INTERVAL ;INTERVAL GOES TO LH
U 3317, 3320,3441,2400,0000,3000,0010,0000 ; 8890 = ARX_AR SWAP,AR_0S
U 3320, 3321,4001,3000,0000,0060,2010,0515 ; 8891 AR_PERIOD ;PERIOD TO RH
; 8892 TIMBO1: MTR CTL/LD PA LH, ;KEEP MTR DECODE FOR TIMBO
U 3321, 0417,4001,0000,0000,2000,0022,0004 ; 8893 ARL_ARXL,J/RELEEB ;COMBINE PERIOD WITH INTERVAL
; 8894
; 8895 =0****00**00
; 8896 MTRCO: BR/AR,ARL_ARR.M,ARR_ARR,
U 1304, 2540,0001,0040,0000,3001,7350,0004 ; 8897 CALL.M,SKP IO LEGAL,J/GETEEB
U 1305, 3322,3701,0000,0000,0060,2023,0406 ; 8898 CONO MTR,J/MTRCO1
; 8899 MTRCI: BR/AR,AR_0S,CALL,
U 1306, 2540,3401,2040,0000,0000,7350,0000 ; 8900 SKP IO LEGAL,J/GETEEB
U 1307, 3322,4001,3000,0000,0060,2010,0516 ; 8901 CONI MTR ;READ BACK CONDITIONS
; 8902 =
U 3322, 0417,0001,0000,0000,0000,0022,0026 ; 8903 MTRCO1: ARL_0.S,MTR CTL/CONO MTR,J/RELEEB
; 8904
; 8905 =0****00**00
U 1310, 1002,3242,2000,0000,0000,0010,0000 ; 8906 TIMDO: AR_BR,J/UUO ;DATAO TIM, UNDEFINED
; 8907 =10
; 8908 TIMBO: ARX_AR,AR_0S,CALL, ;SAVE ENABLES, CLEAR AR
U 1312, 2540,3441,2400,0000,1000,7350,0000 ; 8909 SKP IO LEGAL,J/GETEEB ;CHECK LEGALITY, GET BUS
U 1313, 3323,3701,4000,0000,2060,2023,0404 ; 8910 BLKO TIM(L),AR_ARX ;TURN OFF BY CLEARING LH ENABLES
U 3323, 3324,3703,4000,0000,3060,2023,0405 ; 8911 = BLKO TIM(R),AR_AR SWAP ;SEND RH
U 3324, 3321,3703,0000,0000,0060,2023,0404 ; 8912 BLKO TIM(L),J/TIMBO1 ;SEND LH, TURNING ON AGAIN
; 8913
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 15
; IO.MIC[4,30] 17:12 9-Aug-84 INTERNAL DEVICE FUNCTIONS -- TIM & MTR
; 8914 ;HERE WHEN METER INCREMENT REQUEST DETECTED
; 8915
U 3325, 3326,4001,0000,0000,0000,2210,0400 ; 8916 MTRREQ: GET ECL EBUS ;TAKE CONTROL OF BUS
U 3326, 2556,4001,3000,0000,0060,2010,0517 ; 8917 AR_MTR REQ ;WHAT TYPE REQUEST?
; 8918 =0 MQ_AR,AR_AR*2,CALL, ;GET READY TO DISP
U 2556, 3330,3701,5010,0000,1100,3050,0514 ; 8919 VMA_#,#/514,J/MTRRQ0
U 2557, 3327,4001,0000,0000,0000,2210,0000 ; 8920 REL ECL EBUS ;DONE
U 3327, 0744,0001,0000,0000,0002,2110,0105 ; 8921 MB WAIT,SET ACCOUNT EN,J/PIFET ;FETCH NEXT INSTR
; 8922
; 8923 MTRRQ0: ARX_AR SWAP,DISP/SH0-3,AR_0S, ;DISPATCH ON REQUEST TYPE
U 3330, 2010,3441,2400,0302,3020,0007,0015 ; 8924 SC_#,#/13.
; 8925 =000
U 2010, 3333,4001,3000,0000,0060,2023,0510 ; 8926 RD+CLR TB,J/TMTR1 ;TIME BASE
U 2011, 3334,4001,3000,0000,0060,2023,0511 ; 8927 RD+CLR PA,J/PMTR1 ;PERF ANALYSIS CNT
U 2012, 3335,0001,3000,0000,0060,2023,0512 ; 8928 EMTR: RD+CLR E CNT,J/EMTR1 ;EBOX CNT
U 2013, 3336,4001,3000,0000,0060,2023,0513 ; 8929 CMTR: RD+CLR C CNT,J/CMTR1 ;CACHE CNT
U 2014, 3331,0001,0000,0000,0000,2210,0000 ; 8930 REL ECL EBUS ;INTERVAL -- VECTOR INTERRUPT
U 3331, 3332,0001,0000,0000,0000,1510,0714 ; 8931 = SET PI CYCLE
U 3332, 0663,0001,0000,0000,0000,2110,0105 ; 8932 SET ACCOUNT EN,J/PIINST
; 8933
U 3333, 3337,0001,0000,0000,0000,0010,0000 ; 8934 TMTR1: MTR CTL/CLR TIME,J/MTRRQ1 ;HOLD SELECTS FOR
U 3334, 3337,4001,0000,0000,0000,0010,0001 ; 8935 PMTR1: MTR CTL/CLR PERF,J/MTRRQ1 ;MTR CTL FUNCTION
U 3335, 3337,4001,0000,0000,0000,0010,0002 ; 8936 EMTR1: MTR CTL/CLR E CNT,J/MTRRQ1 ; TO PREVENT RACE
U 3336, 3337,0001,0000,0000,0000,0010,0003 ; 8937 CMTR1: MTR CTL/CLR M CNT,J/MTRRQ1 ; AND POSSIBLE GLITCHES
; 8938
; 8939 ;HERE WITH RELEVANT COUNT IN ARR, GARBAGE IN ARL
; 8940
U 3337, 2560,0001,0000,0000,0000,1510,0004 ; 8941 MTRRQ1: ABORT INSTR
; 8942 =0 ARL+ARX_0.M,ARX0-3 DISP, ;CLEAR GARBAGE & RE-DISPATCH
U 2560, 1050,0001,0000,0000,2021,0047,0060 ; 8943 CALL.M,J/MTRDBL ; TO ADD DOUBLE COUNTER FROM PT
; 8944 AR_AR+BR LONG,SC_#,#/35.,
U 2561, 3340,0602,2600,0302,0036,3527,0043 ; 8945 VMA_VMA-1,STORE ;STORE BACK IN PROCESS TABLE
U 3340, 3341,3401,2003,0000,0002,0010,0000 ; 8946 MEM_AR,AR_0S ;HI PART TO MEM
U 3341, 0001,4001,4000,0000,0016,3603,0000 ; 8947 AR_SHIFT,VMA_VMA+1,STORE,RETURN1
; 8948
; 8949 ;HERE TO PICK UP DOUBLEWORD FROM PROCESS TABLE
; 8950 ; AND ADD CURRENT CONTENTS OF APPROPRIATE METER
; 8951
; 8952 =00
; 8953 MTRDBL: AR_0S,ARX_SHIFT,
U 1050, 3342,3401,2400,0000,0100,3010,0510 ; 8954 VMA_#,#/510,J/RDEMTR ;TIME BASE IN EPT 510-511
; 8955 AR_0S,ARX_SHIFT,
U 1051, 3342,3441,2400,0000,0100,3010,0512 ; 8956 VMA_#,#/512,J/RDEMTR ;PERF CNT IN EPT 512-513
; 8957 AR_0S,ARX_SHIFT,
U 1052, 3343,3441,2400,0000,0100,3010,0504 ; 8958 VMA_#,#/504,J/RDUMTR ;EBOX ACCT IN UPT 504-505
; 8959 AR_0S,ARX_SHIFT,
U 1053, 3343,3401,2400,0000,0100,3010,0506 ; 8960 VMA_#,#/506,J/RDUMTR ;CACHE ACCT IN UPT 506-507
; 8961
; 8962 RDEMTR: BR_AR LONG, ;SAVE COUNT IN BR!BRX
U 3342, 1344,0001,0060,0000,0012,0026,0113 ; 8963 LOAD AR,EPT REF,J/RDMTR2;GET HIGH WORD FROM EPT
U 3343, 1344,0001,0060,0000,0012,0026,0223 ; 8964 RDUMTR: BR_AR LONG,LOAD AR,UPT REF ; OR UPT AS APPROP
; 8965 =0*
; 8966 RDMTR2: FIN XFER,VMA_VMA+1,LOAD ARX, ;NOW GET LOW WORD
U 1344, 1023,3200,0003,0000,0033,3650,0000 ; 8967 CALL,J/XFERW ;GO WAIT FOR IT
U 1346, 0001,3701,0500,0000,0000,0003,0000 ; 8968 ARX_ARX*2,RETURN1
; 8969
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 16
; IO.MIC[4,30] 17:12 9-Aug-84 PRIORITY INTERRUPT PROCESSING
; 8970 .TOC "PRIORITY INTERRUPT PROCESSING"
; 8971 ;HERE WHEN PRIORITY INTERRUPT REQUEST DETECTED
; 8972 ;PI LOGIC HAS DONE HANDSHAKE TO BRING FUNCTION WORD IN ON EBUS
; 8973 ; FUNCTION WORD IS NOW IN AR, SC=2
; 8974
; 8975 ;THE FORMAT OF THE FUNCTION WORD IS --
; 8976 ; 0-2 ADDRESS SPACE FOR THE FUNCTION
; 8977 ; 0=EPT
; 8978 ; 1=EXEC VIRTUAL
; 8979 ; 4=PHYSICAL
; 8980 ; OTHERS UNDEFINED
; 8981 ; 3-5 FUNCTION TO PERFORM (SEE LIST BELOW AT PIDISP)
; 8982 ; 6 FUNCTION QUALIFIER
; 8983 ; 7-10 PHYSICAL DEVICE # ON EBUS
; 8984 ; 11-12 UNDEFINED
; 8985 ; 13-35 ADDRESS FOR FUNCTION
; 8986
U 3344, 3345,0001,0010,0000,1000,1510,0714 ; 8987 PICYC1: SET PI CYCLE,MQ_AR ;START PI CYCLE
U 3345, 3346,4001,0007,0000,0000,1010,0163 ; 8988 FM[SV.IOP]_AR ;[234] save IOP function word
; 8989 ; in AC3.
U 3346, 0650,3600,0207,4000,0340,0007,0175 ; 8990 VMA_AR AND ADMSK,ARX/AD,SH DISP ;EXTRACT ADDR, DISP ON FCN
; 8991 =1000 ;3-5 IS FUNCTION TO PERFORM
U 0650, 0663,0001,0000,0000,0100,3410,0040 ; 8992 PIDISP: VMA_40+PI*2,J/PIINST ;(0) STANDARD INTERRUPT
U 0651, 0663,0001,0000,0000,0100,3410,0040 ; 8993 VMA_40+PI*2,J/PIINST ;(1) DITTO
U 0652, 3350,3243,2000,0302,0000,0010,0005 ; 8994 AR_AR*4,SC_#,#/5,J/PIVECT ;(2) VECTOR
U 0653, 0737,4001,0000,0000,0012,0010,0000 ; 8995 LOAD AR,J/PIINCR ;(3) INCREMENT
U 0654, 0740,0001,0000,7310,0020,5210,0040 ; 8996 SKP AR6,J/PIDATO ;(4) DATAO
U 0655, 0762,0001,0020,0000,0060,0010,0000 ; 8997 BRX/ARX,TIME/5T,J/PIDATI ;(5) DATAI
U 0656, 2020,3243,2000,7310,0020,5210,0040 ; 8998 AR_AR*4,SKP AR6,J/PIBYTE ;(6) BYTE TRANSFER
;;8999 .IFNOT/IPA20 ;[265]
;;9000 VMA_40+PI*2,J/PIINST ;(7) UNDEFINED
; 9001 .IF/IPA20 ;[265]
U 0657, 3357,3600,0007,4000,0320,0010,0175 ; 9002 VMA_AR AND ADMSK, J/PHYS0 ;(7) KLIPA [265]
; 9003 .ENDIF/IPA20
; 9004
U 3347, 0663,4001,0000,0000,0100,3410,0041 ; 9005 PICYC2: VMA_41+PI*2,J/PIINST ;2ND PART OF STD INT
; 9006
U 3350, 0663,3441,2000,7311,0020,0007,0030 ; 9007 PIVECT: FE_# AND S,#/30,AR_0S,SH DISP ;WHAT KIND OF DEVICE?
; 9008 =0011
U 0663, 0271,0001,0000,0000,0013,0026,0513 ; 9009 PIINST: EPT FETCH,J/XCTW ;CHAN 0-3
U 0667, 0271,0001,0000,0000,0013,0026,0513 ; 9010 EPT FETCH,J/XCTW ;CHAN 4-7
U 0673, 1434,0001,0000,2030,2000,0110,0142 ; 9011 AR0-8_FE+#,#/142,J/DTEVEC ;DTE 0-3
U 0677, 0271,4001,0000,0000,0013,0010,0000 ; 9012 LOAD ARX,J/XCTW ;EXTERNAL DEVICE
; 9013 =0*
U 1434, 2450,3441,2400,0302,1000,0050,0011 ; 9014 DTEVEC: ARX_AR,AR_0S,SC_#,#/9.,CALL,J/SHIFT
U 1436, 0271,3703,0000,0000,0313,0026,0513 ; 9015 VMA_AR,EPT FETCH,J/XCTW
; 9016
; 9017 =0101
U 0725, 1023,4001,0000,0000,0012,0026,0113 ; 9018 PILD: LOAD AR,EPT REF,J/XFERW ;GET DATUM FROM EPT
U 0727, 1023,4001,0000,0000,0012,0010,0000 ; 9019 LOAD AR,J/XFERW ; OR EXEC VIRTUAL ADDR SPACE
;;9020 .IFNOT/MODEL.B
;;9021 VMA_ARX,LOAD AR,
;;9022 PHYS REF,J/XFERW ; OR PHYSICAL MEMORY, AS REQUESTED
; 9023 .IF/MODEL.B
U 0735, 1140,3610,0207,4000,0320,0010,0175 ; 9024 VMA_ARX AND ADMSK,ARX/AD,J/PHYS2;FORCE AC'S FOR 0-17
; 9025 .ENDIF/MODEL.B
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 16-1
; IO.MIC[4,30] 17:12 9-Aug-84 PRIORITY INTERRUPT PROCESSING
;;9026 .IFNOT/MODEL.B ;[224]
;;9027 IOPFIN: SET ACCOUNT EN,J/PIDONE ;IN CASE OF EBUS PROBLEMS
; 9028 .ENDIF/MODEL.B ;[224]
; 9029
; 9030 ;HERE TO PERFORM INCREMENT FUNCTION
; 9031
U 0737, 2562,3240,0003,7310,0042,5210,0040 ; 9032 PIINCR: AR_MEM,SKP AR6 ;GET WORD, INCR OR DECR?
U 2562, 0743,4003,2000,0000,0036,0010,0000 ; 9033 =0 AR_AR+1,STORE,J/PIDONE
U 2563, 0743,1701,2000,0000,0036,0010,0000 ; 9034 AR_AR-1,STORE,J/PIDONE
; 9035
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 17
; IO.MIC[4,30] 17:12 9-Aug-84 PRIORITY INTERRUPT PROCESSING
; 9036 ;HERE FOR DATAO (EXAMINE) FUNCTION
; 9037
; 9038 =0000
U 0740, 0725,0001,0000,0000,1020,0047,0000 ; 9039 PIDATO: AR0-3 DISP,CALL.M,J/PILD ;GET DATA FROM REQUESTED ADR SPC
U 0741, 3352,3203,2000,0000,0000,0050,0000 ; 9040 AR_AR*4,CALL,J/RDEX ;RESTRICTED EXAMINE
U 0742, 3267,3240,0003,0000,0022,2250,0026 ; 9041 PIOUT: AR_MEM,SET DATAO,CALL,J/EBUSO ;SEND DATA
U 0743, 0744,4001,0003,0000,0002,0024,0502 ; 9042 PIDONE: MEM_AR,DISMISS ;DONE, DISMISS & RESUME NORMAL
U 0744, 0075,4001,0000,0000,0117,0010,0000 ; 9043 PIFET: VMA/PC,FETCH,J/NOP ;RESUME AS BEFORE
U 0745, 1474,1703,0000,0000,0320,0050,0000 ; 9044 =0101 VMA_AR-1,CALL,J/DEXCHK ;GO PROT/RELOC THIS EXAM
;;9045 .IFNOT/MODEL.B
;;9046 =0111 VMA_ARX,LOAD AR,PHYS REF,J/PIOUT;PROTECTED PHYSICAL
; 9047 .IF/MODEL.B
U 0747, 1130,3610,0207,0000,0320,0010,0175 ; 9048 =0111 VMA_ARX AND ADMSK,ARX/AD,J/PHYS1;FORCE AC'S FOR 0-17
; 9049 .ENDIF/MODEL.B
U 0757, 0742,0001,0000,0000,0000,0010,0000 ; 9050 =1111 J/PIOUT ;PROT VIOLATION. SEND 0
; 9051
; 9052 ;HERE FOR DATAI (DEPOSIT) FUNCTION
; 9053
; 9054 =10
U 0762, 3266,3441,2000,0000,0060,2250,0027 ; 9055 PIDATI: SET DATAI,TIME/5T,CALL,J/EBUSI ;READ THE DATA
U 0763, 3351,3723,2400,0000,1000,0010,0000 ; 9056 ARX_AR,AR_MQ ;DATUM TO ARX, GET FCN WORD
U 3351, 0760,3242,0620,7310,0020,5210,0040 ; 9057 BRX/ARX,ARX_BRX,SKP AR6 ;RESTRICTED?
U 0760, 1025,3202,6000,0000,1020,0007,0000 ; 9058 =0000 AR0-3 DISP,AR_BRX,J/PIST ;NO, STORE AS REQUESTED
U 0761, 3352,3203,2000,0000,0000,0050,0000 ; 9059 AR_AR*4,CALL,J/RDEX ;YES, GET PROT/RELOC ADDR
U 0765, 1474,4001,0000,0000,0320,0050,0000 ; 9060 =0101 VMA_AR+1,CALL,J/DEXCHK ;VERIFY LEGALITY
U 0767, 1035,3242,6000,0000,0000,0010,0000 ; 9061 =0111 AR_BRX,J/PSTOR ;DATA IN AR, ADDR IN ARX. STORE PHYS
U 0777, 0743,4001,0000,0000,0000,0010,0000 ; 9062 =1111 J/PIDONE ;PROT VIOLATION, STORE NOTHING
; 9063
; 9064 =0101
U 1025, 0743,0001,0000,0000,0016,0026,0113 ; 9065 PIST: STORE,EPT REF,J/PIDONE
U 1027, 0743,0001,0000,0000,0016,0010,0000 ; 9066 STORE,J/PIDONE
;;9067 .IFNOT/MODEL.B
;;9068 PSTOR: VMA_ARX,STORE,PHYS REF,J/PIDONE
; 9069 .IF/MODEL.B
U 1035, 1250,3610,0207,0000,0320,0010,0175 ; 9070 PSTOR: VMA_ARX AND ADMSK,ARX/AD,J/PHYS3;FORCE AC'S FOR 0-17
; 9071 .ENDIF/MODEL.B
U 1037, 0743,4001,0000,0000,0000,0010,0000 ; 9072 J/PIDONE
; 9073
U 3352, 3353,0001,4000,7311,2000,0010,0030 ; 9074 RDEX: FE_# AND S,#/30,AR_ARX ;DTE# *8 TO FE, ADDR TO AR
U 3353, 3354,0001,0040,2030,2000,0110,0145 ; 9075 BR/AR,AR0-8_FE+#,#/145 ;SAVE ADDR TO BR, GET EPT LOC
U 3354, 3355,3401,2400,0302,1000,0010,0011 ; 9076 GTAR08: ARX_AR,AR_0S,SC_#,#/9.
U 3355, 0004,0001,4000,0000,0000,0003,0000 ; 9077 AR_SHIFT,RETURN4
; 9078
; 9079 =0*
U 1474, 0725,0001,0000,0000,0000,0050,0000 ; 9080 DEXCHK: CALL,J/PILD ;PROTECTION WORD FROM EPT
U 1476, 1070,3102,0000,0000,0020,5410,0000 ; 9081 SKP AR GT BR ;ALLOWED?
U 1070, 0012,3401,2000,0000,0000,0003,0000 ; 9082 =00 AR_0S,RETURN12 ;NO, SEND 0, STORE NOTHING
U 1071, 0725,0001,0000,0000,0000,3650,0000 ; 9083 VMA_VMA+1,CALL,J/PILD ;YES, GET RELOCATION WORD
U 1073, 3356,0602,2004,0000,0020,0010,0000 ; 9084 =11 AR_AR+BR ;RELOCATE TO PHYSICAL ADDR
U 3356, 0002,3600,0207,4000,0020,0003,0175 ; 9085 ARX_AR AND ADMSK,RETURN2 ;STRIP TO 23 BITS
; 9086
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 18
; IO.MIC[4,30] 17:12 9-Aug-84 PRIORITY INTERRUPT PROCESSING
; 9087 .IF/IPA20
; 9088 ;BEGIN EDIT [265]
U 3357, 3360,4001,0000,0000,0012,0026,0101 ; 9089 PHYS0: LOAD AR, PHYS REF CACHE ;[311]START READ
U 3360, 1062,3240,0003,0000,0022,0010,0000 ; 9090 AR_MEM ;FINISH READ
; 9091 =10 AR_AR+1, SET DATAO, ;INCREMENT THE LOCATION
U 1062, 3267,4001,2000,0000,0020,2250,0026 ; 9092 CALL [EBUSO] ;AND SEND DATA OVER THE EBUS
; 9093 STORE, PHYS REF CACHE, ;[311]UPDATE MEMORY
U 1063, 0743,0001,0000,0000,0016,0026,0101 ; 9094 J/PIDONE ;FINISH MEMORY CYCLE
; 9095 .ENDIF/IPA20 ;END EDIT [265]
; 9096 ;FORCE AC'S FOR 0-17
; 9097
; 9098 .IF/MODEL.B
; 9099 =00
U 1130, 3361,4001,0000,0302,0000,0050,0040 ; 9100 PHYS1: SC_#,#/32.,CALL,J/CHKAC ;DATAO (EXAMINE)
U 1132, 0742,0001,0000,0000,0012,0010,0000 ; 9101 =10 LOAD AR,J/PIOUT ;AC REF DONT USE PHYS REF
U 1133, 0742,4001,0000,0000,0012,0026,0103 ; 9102 LOAD AR,PHYS REF,J/PIOUT ;NOT AC'S GET PHYSICAL MEMORY
; 9103
; 9104 =00
U 1140, 3361,4001,0000,0302,0000,0050,0040 ; 9105 PHYS2: SC_#,#/32.,CALL,J/CHKAC ;DATAO (EXAMINE)
U 1142, 1023,4001,0000,0000,0012,0010,0000 ; 9106 =10 LOAD AR,J/XFERW
U 1143, 1023,0001,0000,0000,0012,0026,0103 ; 9107 LOAD AR,PHYS REF,J/XFERW ;NOT AC'S GET PHYSICAL MEMORY
; 9108
; 9109 =00
U 1250, 3361,4001,0000,0302,0000,0050,0040 ; 9110 PHYS3: SC_#,#/32.,CALL,J/CHKAC
U 1252, 0743,0001,0000,0000,0016,0010,0000 ; 9111 =10 STORE,J/PIDONE
U 1253, 0743,4001,0000,0000,0016,0026,0103 ; 9112 STORE,PHYS REF,J/PIDONE
; 9113
U 3361, 3362,4001,0400,0000,0000,0010,0000 ; 9114 CHKAC: ARX_SHIFT ;GET ADDRESS WITHOUT 32-35
; 9115 ARX_ARX AND ADMSK, ;FLUSH GARBAGE IN 0-3
U 3362, 0002,3610,0207,0000,0020,5603,0175 ; 9116 SKP AD NE,RETURN2 ;AND MAKE THE TEST
; 9117 .ENDIF/MODEL.B
; 9118
; 9119
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 19
; IO.MIC[4,30] 17:12 9-Aug-84 PRIORITY INTERRUPT PROCESSING
; 9120 ;HERE FOR BYTE TRANSFERS
; 9121
; 9122 =000
U 2020, 3363,4001,0000,7311,0000,0050,0030 ; 9123 PIBYTE: FE_# AND S,#/30,CALL,J/PIBPA ;OUT... GET BP ADDR
U 2021, 3266,3441,2000,0000,0000,2250,0027 ; 9124 SET DATAI,CALL,J/EBUSI ;IN ... FIRST READ THE DATA
U 2023, 2030,0321,5400,0000,1020,0010,0000 ; 9125 =011 ARX_AR,AR_MQ*4,J/PIDPB ;GOT IT, GO DEPOSIT IT
; 9126
U 2024, 0570,3701,0000,0000,0300,0050,0000 ; 9127 =100 VMA_AR,CALL,J/PIIBP ;GO INCREMENT OUTPUT BP
U 2025, 2444,0001,0000,2002,0000,0050,0000 ; 9128 SC_FE+SC,CALL,J/LDB1 ;GO LOAD BYTE FROM IT
U 2027, 0742,0001,0000,0000,0000,0010,0000 ; 9129 =111 J/PIOUT ;THEN SEND BYTE
; 9130
; 9131 =000
; 9132 PIDPB: BRX/ARX,FE_# AND S,#/30, ;HERE WITH INPUT DATA
U 2030, 3363,0001,0020,7311,0000,0050,0030 ; 9133 CALL,J/PIBPA
U 2034, 0570,4003,0000,0000,0320,0050,0000 ; 9134 =100 VMA_AR+1,CALL,J/PIIBP ;GO INCREMENT INPUT BYTE PTR
; 9135 AR_BRX,SC_#-SC,#/36., ;STORE BYTE WITH IT
U 2035, 2452,3242,6000,5302,0020,5150,0044 ; 9136 SKP SCAD0,CALL,J/DPB1
U 2037, 0743,4001,0000,0000,0000,0010,0000 ; 9137 =111 J/PIDONE
; 9138
U 3363, 3354,4001,0000,2030,2000,0110,0140 ; 9139 PIBPA: AR0-8_FE+#,#/140,J/GTAR08
; 9140
; 9141 =00*
U 0570, 0725,0001,0000,0000,0000,0050,0000 ; 9142 PIIBP: CALL,J/PILD ;GET POINTER FROM EPT
U 0572, 1700,0001,0000,5110,3021,5150,0200 ; 9143 P_P-S,SKP SCAD0,CALL.M,J/IBPS ;INCREMENT IT
U 0576, 1714,4001,0400,0102,1000,0010,0000 ; 9144 =11* ARX_AR,SC_P,J/BYTEA ;NOW EVALUATE ITS ADDR
; 9145
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 20
; IO.MIC[4,30] 17:12 9-Aug-84 KL-MODE PAGE REFILL LOGIC
; 9146 .TOC "KL-MODE PAGE REFILL LOGIC"
; 9147
; 9148 .IF/KLPAGE
; 9149 ;HERE ON ANY PAGE FAILURE
; 9150 ;THE POSSIBLE CAUSES ARE --
; 9151 ; 1: A PARITY ERROR WAS DETECTED IN AR OR ARX FOLLOWING A READ
; 9152 ; REFERENCE. IN THIS CASE WE SAVE THE BAD WORD IN A RESERVED
; 9153 ; LOCATION IN FAST MEMORY BLOCK 7, AND RETURN A PAGE FAIL CODE
; 9154 ; INDICATING THE ERROR.
; 9155 ; 2: THE MBOX DETECTED A PROPRIETARY VIOLATION OR PAGE TABLE PARITY
; 9156 ; ERROR, OR THE EBOX FOUND THE SELECTED ADDRESS BREAK CONDITION.
; 9157 ; IN THIS CASE, WE RETURN THE PAGE FAIL CODE GENERATED BY THE
; 9158 ; MBOX (SEE PRINT PAG4).
; 9159 ; 3: A REFERENCE OCCURRED FOR A VIRTUAL PAGE FOR WHICH THE HARDWARE
; 9160 ; PAGE TABLE DIRECTORY HAD NO VALID MATCH. IN THIS CASE, WE
; 9161 ; WRITE THE PAGE TABLE DIRECTORY FROM THE VMA, AND CLEAR THE
; 9162 ; ACCESS BITS FOR ALL PAGE ENTRIES CONTROLLED BY THE SELECTED
; 9163 ; DIRECTORY ENTRY. WE THEN JOIN THE REFILL CODE, BELOW.
; 9164 ; 4: A REFERENCE OCCURRED FOR A VIRTUAL PAGE FOR WHICH THE ACCESS BIT
; 9165 ; IN THE HARDWARE PAGE TABLE WAS OFF, OR A WRITE OCCURRED TO A
; 9166 ; PAGE WHOSE WRITABLE BIT WAS OFF. IN THIS CASE, WE EVALUATE THE
; 9167 ; PAGING POINTERS IN CORE TO DETERMINE WHETHER THE ACCESS SHOULD
; 9168 ; BE ALLOWED, AND IF SO, THE PHYSICAL PAGE TO WHICH IT SHOULD BE
; 9169 ; TRANSLATED. WE THEN EITHER PAGE FAIL, OR WRITE A PAGE ENTRY
; 9170 ; INTO THE HARDWARE PAGE TABLE AND RESTART THE REFERENCE.
; 9171 ;
; 9172 ; [322] Note that in the latter case, if a page should be accessible
; 9173 ; but not writable, it is the microcode's responsibility to turn on
; 9174 ; bit 2 of the page fail word (the Accessible bit) if a write
; 9175 ; reference is attempted to such a page. Currently, this is done only
; 9176 ; if no CST is present (TOPS-10 operating mode), since TOPS-20
; 9177 ; retraces the page map from scratch and thus generates the correct
; 9178 ; information. The bit can be made correct for the CST present case
; 9179 ; (see code near NOTWR), but since we are now quite tight on control
; 9180 ; store, we have chosen not to implement this.
; 9181 ;
; 9182 ; If you are looking at this code for the first time, be aware that
; 9183 ; only AR, ARX, SC, and FE are saved and restored here; thus BRX and
; 9184 ; MQ are strictly off limits for this code.
; 9185 ;
;;9186 .IFNOT/MODEL.B
;;9187 2377: CLR ACCOUNT EN,FORCE AR-ARX,J/PF1
; 9188 .IF/MODEL.B
U 3777, 3364,3203,7700,0000,0000,2110,0145 ; 9189 3777: CLR ACCOUNT EN,FORCE AR-ARX,J/PF1
; 9190 .ENDIF/MODEL.B
U 1777, 3364,3203,7700,0000,0000,2110,0145 ; 9191 1777: CLR ACCOUNT EN,FORCE AR-ARX
U 3364, 3365,3701,4207,0000,2000,1010,0156 ; 9192 PF1: SV.AR_AR,AR_ARX,ARX_AR (AD) ;SAVE CURRENT AR
U 3365, 3366,3703,4207,0000,2000,1010,0157 ; 9193 SV.ARX_AR,AR_ARX,ARX_AR (AD) ; AND ARX
;;9194 .IF/PAGCNT ;[327] Page fault counting
;;9195 AR_TRX2+1 ;[327] Count this page fault
;;9196 TRX2_AR
;;9197 AR_SV.AR ;[346] Don't lose initial AR
; 9198 .ENDIF/PAGCNT ;[327]
U 3366, 0554,4001,0000,0000,0000,2204,0400 ; 9199 GET ECL EBUS,PF DISP,J/PF2 ;PARITY ERROR?
; 9200 =1100
; 9201 PF2:
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 20-1
; IO.MIC[4,30] 17:12 9-Aug-84 KL-MODE PAGE REFILL LOGIC
; 9202 .IFNOT/PAGCNT ;[327]
U 0555, 2564,4001,0000,0301,0000,6410,0036 ; 9203 =1101 FE_#,#/36,SKP RPW,J/PFPAR ;YES. AR PARITY ERROR, CODE 36
; 9204 ;CHECK FOR MIDDLE OF RPW CYCLE
;;9205 .IF/PAGCNT
;;9206 =1101 AR_SV.AR,J/ARPAR ;[327] AR parity error. Get back
; 9207 .ENDIF/PAGCNT ;[327] saved AR
U 0556, 2564,0001,4000,0301,2000,6410,0037 ; 9208 AR_ARX,FE_#,#/37,SKP RPW,J/PFPAR;[307] YES, ARX PARITY. COULD BE RPW
U 0557, 3367,4001,3000,0000,0062,2010,0567 ; 9209 AR_EBUS REG,MB WAIT ;NO. GET PAGE FAIL WORD
U 3367, 1047,0001,0000,0000,0000,2204,0000 ; 9210 REL ECL EBUS,PF DISP,J/PF4 ;EBOX HANDLING REQUIRED?
; 9211 ;
;;9212 .IF/PAGCNT ;[327]
;;9213 ARPAR: FE_#,#/36,SKP RPW,J/PFPAR ;Set code 36 and check for RPW
; 9214 .ENDIF/PAGCNT
; 9215
; 9216 ;HERE ON ANY PARITY ERROR
; 9217 ;SKIP IF MIDDLE OF READ-PAUSE-WRITE CYCLE, IN WHICH CASE WE
; 9218 ; MUST WRITEBACK THE DATA TO PREVENT INCOMPLETE CYCLE
; 9219 =0
U 2564, 3370,3733,0000,0000,0303,1710,0000 ; 9220 PFPAR: VMA_VMA HELD,J/PFPAR1 ;MAY HAVE CHANGED AT MBWAIT
U 2565, 3370,4001,0000,0000,0016,0010,0000 ; 9221 STORE ;WRITEBACK WITH GOOD PARITY
U 3370, 3371,4001,0000,0302,0007,0010,0140 ; 9222 PFPAR1: MAP,SC_#,#/140 ;GET MAP INFO ON REF
U 3371, 3372,4001,0007,0000,0002,1010,0160 ; 9223 PFPAR2: SV.PAR_AR,MB WAIT ;[234]SAVE WORD WITH BAD PARITY
U 3372, 3373,0001,3000,0000,0060,2010,0567 ; 9224 AR_EBUS REG ;READ MAP INFO
U 3373, 3374,0001,0000,7102,0000,2210,0000 ; 9225 REL ECL EBUS,SC_P AND SC ;GET USER BIT FROM MAP WORD
U 3374, 1047,0001,0000,6000,3000,0022,0200 ; 9226 P_FE OR SC,J/PF4 ;STUFF IN PARITY ERROR CODE
; 9227
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 21
; IO.MIC[4,30] 17:12 9-Aug-84 KL-MODE PAGE REFILL LOGIC
; 9228 ;HERE WITH PAGE FAIL WORD IN AR
; 9229 ; TESTING FOR EBOX HANDLING REQUIRED.
; 9230
; 9231 =0111
U 1047, 0040,4001,0007,0000,0000,1005,0152 ; 9232 PF4: SV.PFW_AR,SR DISP,J/CLEAN ;NO, GO CLEAN UP
U 1057, 3375,3242,2047,0000,0000,1010,0152 ; 9233 SV.PFW_AR,AR_BR,BR/AR ;YES, GET BR TOO
U 3375, 3376,3441,2007,0000,0000,1010,0150 ; 9234 SV.BR_AR,AR_0S ;SAVE BR
U 3376, 3377,0001,0000,0000,2000,0022,0200 ; 9235 AR0-8_FE ;NOW SAVE 10-BIT REGS
U 3377, 3400,3703,0200,2400,2000,0022,0200 ; 9236 ARX_AR (AD),AR0-8_SC ;FE TO ARX, SC TO AR
; 9237 ARR_ARL,ARL_ARX (ADX), ;FE IN ARL, SC IN ARR
U 3400, 3401,3733,4200,0000,3001,1710,0006 ; 9238 ARX_VMA HELD ;GET VMA WHICH FAILED
; 9239 SV.SC_AR,AR_ARX, ;HOLD SC & FE
U 3401, 0636,3241,4007,0000,2020,1032,0151 ; 9240 GEN BR*2,SIGNS DISP ;TEST FOR PT DIR MATCH
; 9241 =1110
; 9242 PGRF1: SV.VMA_AR,ARX_AR SWAP,ARR_ARL, ;GET SEC # TO AR32-35
U 0636, 1075,0001,4407,0000,3000,1036,0145 ; 9243 DISP/EA MOD,J/PGRF2 ; SEC < 20?
; 9244
; 9245 ; HERE TO WRITE PT DIR, & CLR 4 PAGE ENTRIES. If the expanded
; 9246 ; page table ECO has been installed, this will only clear two entries
; 9247 ; (since they go in pairs for that case), but in either case the
; 9248 ; right thing will happen. [333]
; 9249 ;
; 9250 AR_0S,COND/MBOX CTL,MBOX CTL/2, ;READY TO CLEAR EVEN PAIR
U 0637, 3402,3441,2000,7133,0000,2310,0002 ; 9251 FE_P AND #,#/2,SC/SCAD ;GET WRITE REF BIT TO FE & SC
; 9252 COND/MBOX CTL,MBOX CTL/33, ;CLR EVEN, WR DIR, SEL ODD
U 3402, 3403,4001,0000,2003,0020,2310,0033 ; 9253 TIME/3T,FE_FE+SC,SC/SCAD; WR REF = 4 NOW
; 9254 COND/MBOX CTL,MBOX CTL/10, ;CLR ODD, RESET NORMAL SELECT
U 3403, 3404,3202,2000,2001,0020,2310,0010 ; 9255 TIME/3T,FE_FE+SC,AR_BR ;GET PFW BACK, WR REF = 10
U 3404, 3405,4001,0000,7322,0000,0010,0401 ; 9256 SC_# AND AR0-8,#/401 ;GET USER & PAGED REF BITS
U 3405, 3406,4001,0000,6000,2001,0010,0200 ; 9257 AR0-8_FE OR SC ;COMBINE WITH WR REF BIT
U 3406, 0636,0001,4047,0000,2000,1010,0152 ; 9258 SV.PFW_AR,BR/AR,AR_ARX,J/PGRF1 ;REJOIN MAIN PATH
; 9259
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 22
; IO.MIC[4,30] 17:12 9-Aug-84 KL-MODE PAGE REFILL LOGIC
; 9260 ; HERE TO TRACE PAGE POINTERS FOR THIS ADDRESS
; 9261 ; VMA WHICH FAILED IS IN ARX AND AR WITH THE HALVES SWAPPED
; 9262 ; PAGE FAIL WORD IS IN BR
; 9263 ; [333] Bit 5 of all access pointers is implemented as "Keep" for
; 9264 ; pages which should not be swept from the page map on DATAO PAG
; 9265 ; UBR reload unless bit 3 is also set.
; 9266 ;
; 9267
;;9268 .IFNOT/EPT540
;;9269 =1101
;;9270 PGRF2: VMA_#+AR32-35,#/440, ;YES.
;;9271 SIGNS DISP,J/PGRF3 ; USER REF?
;;9272 VMA_#+AR32-35,#/460, ;NO
;;9273 SIGNS DISP,J/PGRF3
; 9274 .IF/EPT540
; 9275 =1101
; 9276 PGRF2: VMA_#+AR32-35,#/540, ;YES.
U 1075, 1135,0001,0000,0000,0120,3332,0540 ; 9277 SIGNS DISP,J/PGRF3 ; USER REF?
; 9278 VMA_#+AR32-35,#/560, ;NO
U 1077, 1135,4001,0000,0000,0120,3332,0560 ; 9279 SIGNS DISP,J/PGRF3
; 9280 .ENDIF/EPT540
; 9281 =1101
U 1135, 3407,4001,0000,3401,0012,0026,0113 ; 9282 PGRF3: LOAD AR,EPT REF,FE_-1,J/SECPTR ;Initialize APWKC bits, get section
U 1137, 3407,4001,0000,3401,0012,0026,0223 ; 9283 LOAD AR,UPT REF,FE_-1 ; pointer from EPT or UPT
; 9284
; 9285 ;HERE TO FIND PAGE MAP WITH SECTION POINTER
; 9286
U 3407, 1150,3240,0003,0302,0022,7010,0011 ; 9287 SECPTR: AR_MEM,SC_#,#/9,SKP INTRPT ;GET SECTION POINTER
; 9288 =1000 FE_FE AND AR0-8,BR/AR, ;COMBINE ACCESS BITS
U 1150, 1151,0001,0040,7021,1020,0007,0000 ; 9289 AR0-3 DISP ;SPT INDEX IN ARR, DISP ON TYPE
U 1151, 3445,3240,2007,0000,0020,0010,0150 ; 9290 =1001 AR_SV.BR,J/PFT ;NO ACCESS TO SECTION (OR INTRPT)
; 9291 =1011
U 1153, 3417,4001,0400,0000,0001,0010,0020 ; 9292 SECIMM: ARX_SHIFT,ARL_0.M,J/PGRF5 ;IMMEDIATE
U 1155, 2570,4001,0000,0000,0001,0010,0020 ; 9293 =1101 ARL_0.M,J/LDIND ;SHARED
U 1157, 3410,4001,0000,0000,0001,0010,0020 ; 9294 =1111 ARL_0.M ;INDIRECT SECTION POINTER
; 9295 ;
; 9296 ; WARNING: do not use the technique at LDIND to allow
; 9297 ; interrupts out of section pointer loops, as that will have
; 9298 ; adverse effects on byte transfers and console executes.
; 9299 ;
U 3410, 3411,0600,4007,4000,2320,0010,0143 ; 9300 VMA_AR+SBR,AR_ARX ;LOOK IN SPT
U 3411, 3412,3202,2040,0000,0012,0026,0103 ; 9301 BR/AR,AR_BR,LOAD AR,PHYS REF ;CALL FOR SPT ENTRY
U 3412, 3413,3200,0403,0000,0022,0010,0000 ; 9302 ARX_SHIFT,AR_MEM ;SEC PTR INDEX TO ARX0-8
U 3413, 3414,3242,4200,0000,0000,0010,0000 ; 9303 AR_SHIFT,ARX_BR ;NEW SEC PTR ADDR TO AR
; 9304 GEN # AND AR0-8,#/77,SKP SCAD NE,
U 3414, 2566,3703,0000,7320,0320,5210,0077 ; 9305 VMA_AR
U 2566, 3407,0001,0000,0000,0012,0026,0103 ; 9306 =0 LOAD AR,PHYS REF,J/SECPTR
U 2567, 3445,3240,2007,0000,0020,0010,0150 ; 9307 AR_SV.BR,J/PFT ;TRAP, SEC MAP NOT IN CORE
; 9308 ;
; 9309 ; We must turn off special cycle for indirect pointers so that
; 9310 ; we can take an interrupt. However, we can't do it if PXCT or
; 9311 ; SXCT might be active. Thus, a kernel mode program can get into
; 9312 ; a page fail loop that the microcode cannot exit.
; 9313 ;
; 9314 =0
U 2570, 3415,0600,0007,0000,0320,0010,0143 ; 9315 LDIND: VMA_AR+SBR,J/LDIND1 ;FOR INDIRECT PAGE POINTERS
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 22-1
; IO.MIC[4,30] 17:12 9-Aug-84 KL-MODE PAGE REFILL LOGIC
U 2571, 2570,0001,0000,0000,0000,1510,0000 ; 9316 CLR SPECIAL CYCLE,J/LDIND
; 9317 ;
; 9318 ; This fixes the glitch that INSTR FETCH (NICOND) doesn't
; 9319 ; clear 'CON4 INT DISABLE L' before fetching user's instruction.
; 9320 ; ;SHARED SEC = INDRCT PAG
U 3415, 3416,0001,0000,0000,0012,0026,0103 ; 9321 LDIND1: LOAD AR,PHYS REF ;GET PAGE MAP ADDR
U 3416, 1153,3240,0003,0000,0022,0010,0000 ; 9322 AR_MEM,J/SECIMM
; 9323
; 9324
; 9325 ;HERE WITH PAGE NO OF PAGE MAP IN AR,
; 9326 ; VIRTUAL PAGE NO WITHIN SECTION IN ARX0-8
; 9327
; 9328 .IF/NOCST
U 3417, 2572,3240,0007,0000,0020,5610,0142 ; 9329 PGRF5: TEST CBR ;[247] CBR = 0 MEANS NO CST UPDATE
; 9330 .IF/BIG.PT ;[346]
; 9331 =0 AR_ARX,FE_FE AND #,#/174, ;[247][333] NO CST UPDATE
U 2572, 3424,4001,4000,7031,2000,0010,0174 ; 9332 J/NO.CST ;[247]
;;9333 .IFNOT/BIG.PT ;[346]
;;9334 =0 AR_ARX,FE_FE AND #,#/164, ;[247] NO CST UPDATE. Eat bit 5
;;9335 J/NO.CST ;[247] if no big page table
; 9336 .ENDIF/BIG.PT ;[346]
;;9337 .IFNOT/NOCST ;[247]
;;9338 PGRF5:
; 9339 .ENDIF/NOCST ;[247]
U 2573, 3420,0600,4007,4000,2320,0010,0142 ; 9340 VMA_AR+CBR,AR_ARX ;GENERATE CST ADDRESS
; 9341 GEN # AND AR0-8,#/77, ;IS PAGE MAP IN CORE?
U 3420, 2574,0001,0000,7320,0020,5210,0077 ; 9342 SKP SCAD NE
; 9343 =0 LOAD AR,PHYS REF, ;GET CST ENTRY FOR PAGE MAP
U 2574, 3421,0001,0040,0000,0012,0026,0103 ; 9344 BR/AR,J/PGRF6 ;SAVE PAGE PTR ADDR IN BR
U 2575, 3445,3240,2007,0000,0020,0010,0150 ; 9345 AR_SV.BR,J/PFT ;NOT IN CORE, PAGE FAIL TRAP
; 9346 ;
; 9347 .IF/BIG.PT ;[346]
U 3421, 3422,3240,0003,7031,0022,0010,0174 ; 9348 PGRF6: AR_MEM,FE_FE AND #,#/174 ;[333]HERE IF CST FOR PAGE MAP
;;9349 .IFNOT/BIG.PT ;[346]
;;9350 PGRF6: AR_MEM,FE_FE AND #,#/164 ;HERE IF CST FOR PAGE MAP. No K bit
; 9351 .ENDIF/BIG.PT ;[346] if no big page table
U 3422, 2576,3600,2007,0120,0040,5210,0140 ; 9352 AR_AR AND CSMSK,SKP P NE ;BEGIN CST UPDATE
U 2576, 3445,3240,2007,0000,0020,0010,0150 ; 9353 =0 AR_SV.BR,J/PFT ;AGE TRAP, MAP BEING SWAPPED
U 2577, 3423,3300,2007,4000,0036,0010,0141 ; 9354 AR_AR OR PUR,STORE ;PUT CST WORD BACK
;;9355 .IFNOT/NOCST ;[247]
;;9356 MEM_AR,VMA_BR,PHYS REF ;PHYS REF MAKES MODEL.A LOAD
;;9357 ;LONG VMA
;;9358 LOAD AR,PHYS REF ;GET PAGE MAP ENTRY
;;9359 AR_MEM,FE_FE OR #,#/100, ;PAGE POINTER
;;9360 SKP INTRPT ;CHECK FOR LONG INDIRECT
;;9361 ;POINTER
; 9362 .IF/NOCST ;[247]
U 3423, 2600,3242,0003,0000,0302,0026,0103 ; 9363 MEM_AR,VMA_BR,PHYS REF,J/NOCST0 ;PHYS REF MAKES MODEL.A LOAD
; 9364 ;LONG VMA
; 9365 NO.CST: GEN # AND AR0-8, #/77, ;[247] page map in core ?
U 3424, 2600,3703,0000,7320,0320,5210,0077 ; 9366 VMA_AR,SKP SCAD NE ;[247]
; 9367 =0
U 2600, 3425,0001,0000,0000,0012,0026,0103 ; 9368 NOCST0: LOAD AR,PHYS REF, J/NOCST1 ;[247] GET PAGE MAP ENTRY
U 2601, 3445,3240,2007,0000,0020,0010,0150 ; 9369 AR_SV.BR, J/PFT ;[247] not in core, pf trap
; 9370 NOCST1: AR_MEM,FE_FE OR #,#/100, ;[247] PAGE POINTER
U 3425, 1170,3240,0003,6031,0022,7010,0100 ; 9371 SKP INTRPT ;[247] CHECK FOR LONG INDIRECT
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 22-2
; IO.MIC[4,30] 17:12 9-Aug-84 KL-MODE PAGE REFILL LOGIC
; 9372 .ENDIF/NOCST ;[247] POINTER
; 9373 ;
; 9374 ; HERE WITH PAGE MAP ENTRY IN AR
; 9375 ; FE HAS ACCUMULATED ACCESS BITS -- APWKC*4
; 9376 ; SC CONTAINS 9.
; 9377 ;
; 9378 =1000 FE_FE AND AR0-8,AR0-3 DISP, ;COMBINE PWKC, DISP ON TYPE
U 1170, 1171,3200,0207,7021,1020,0007,0145 ; 9379 ARX_SV.VMA,TIME/3T ;[346] GET BACK SAVED VMA
U 1171, 3445,3240,2007,0000,0020,0010,0150 ; 9380 =1001 AR_SV.BR,J/PFT ;0=NO ACCESS (OR HERE ON INTRPT)
; 9381 =1011
; 9382 LDIMM: ARL_SHIFT,FE_FE SHRT, ;1=IMMEDIATE, LOAD PT
; 9383 ARX_ARX*2 COMP, ; GET -WR REF TO ARX03
U 1173, 3431,2021,0500,0302,0001,1210,0004 ; 9384 SC_#,#/4,J/LDPT ;[333] Set to move K bit
U 1175, 3426,4001,0000,0000,0001,0010,0020 ; 9385 =1101 ARL_0.M,J/LDSHR ;2=SHARED, GET SPT ENTRY
; 9386 =1111 ARL_0.M,ARX_SHIFT,SKP USER, ;3=INDIRECT, LOOP
U 1177, 2570,4001,0400,0000,0001,6210,0020 ; 9387 J/LDIND
; 9388 ;
; 9389 ; HERE TO GET SHARED PAGE POINTER OUT OF SPT
; 9390 ;
U 3426, 3427,0600,0007,4000,0320,0010,0143 ; 9391 LDSHR: VMA_AR+SBR ;ADDRESS OF SPT ENTRY
U 3427, 3430,4001,0000,0000,0012,0026,0103 ; 9392 LOAD AR,PHYS REF
U 3430, 1173,3200,0003,6031,0022,0010,0100 ; 9393 AR_MEM,FE_FE OR #,#/100,J/LDIMM ;TREAT SPT ENTRY AS IMMED
; 9394
; 9395 ;
; 9396 ; HERE WITH IMMEDIATE PAGE NO IN AR TO LOAD INTO PT
; 9397 ;
; 9398
U 3431, 2602,4001,0000,7320,0020,5210,0077 ; 9399 LDPT: GEN # AND AR0-8,#/77,SKP SCAD NE;Test storage medium
; 9400 .IF/BIG.PT ;[333]
; 9401 =0 ARL_0.M,GEN FE AND SC, ;[333]In core. Is Keep bit set?
U 2602, 2604,0001,0000,7000,0021,5210,0020 ; 9402 SKP SCAD NE,J/LDPT1
;;9403 .IFNOT/BIG.PT
;;9404 =0 ARL_0S,J/LDPT1
; 9405 .ENDIF/BIG.PT ;[333]
U 2603, 3445,3240,2007,0000,0020,0010,0150 ; 9406 AR_SV.BR,J/PFT ;PAGE NOT IN CORE
; 9407 ;
; 9408 .IF/BIG.PT ;[333]
; 9409 =0
; 9410 .ENDIF/BIG.PT
U 2604, 3432,3713,7400,4402,1000,0010,0000 ; 9411 LDPT1: ARX_AR,AR_ARX*.25,SC_1,J/KMOVED ;[333]No K. GET -WR REF TO AR05
; 9412 .IF/BIG.PT
U 2605, 2604,0001,0000,5001,0000,0110,0010 ; 9413 AR0-8_#,#/10,FE_FE-SC,J/LDPT1 ;[333]K set. Move to bit 5 for now
; 9414 .ENDIF/BIG.PT
; 9415 ;
; 9416 .IF/NOCST ;[247]
U 3432, 2606,3200,0007,7102,0020,5610,0142 ; 9417 KMOVED: TEST CBR, SC_P AND SC ;[247][333]CBR = 0? (-WR REF TO SC)
; 9418 =0 SC_-SC,AR_ARX,ARX_AR (AD),
U 2606, 3436,3701,4200,5402,2000,0010,0000 ; 9419 J/NOUPDT ;[247] YES, SKIP SOME
;;9420 .IFNOT/NOCST ;[333]
;;9421 KMOVED: ;[333]
; 9422 .ENDIF/NOCST ;[247]
U 2607, 3433,0610,4007,7102,2320,0010,0142 ; 9423 VMA_ARX+CBR,AR_ARX,SC_P AND SC ;PAGE IN CORE. SC_-WR REF
; 9424 ;
; 9425 ; NOW GET CST ENTRY FOR THIS PAGE.
; 9426 ;
; 9427 GTCST: LOAD AR,PHYS REF,ARX_AR SWAP, ;Shuffle K over to bit 23
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 22-3
; IO.MIC[4,30] 17:12 9-Aug-84 KL-MODE PAGE REFILL LOGIC
U 3433, 3434,4061,2400,5402,3032,0026,0103 ; 9428 SC_-SC,AR_1 ;SC=0 IF WR REF, ELSE -1
; 9429 GEN FE AND #,#/10,SKP SCAD NE, ;SKIP IF WRITABLE
U 3434, 2610,4001,0040,7030,0022,5210,0010 ; 9430 BR/AR,MB WAIT ;GET CST ENTRY & BIT FOR TESTING
; 9431 =0 GEN P AND SC,SKP SCAD NE, ;FAIL IF WRITING OR AGE=0
U 2610, 2612,3600,2007,7100,2040,5210,0140 ; 9432 AR_AR AND CSMSK,J/NOTWR ;STRIP OLD AGE FROM CST
; 9433 ;
; 9434 ; [303] Looks like it's writable. Make one final check by looking
; 9435 ; at bit 18 of the CST entry, and abort if it's not set.
; 9436 ;
; 9437 TEST AR.BR,SKP CRY0, ;POSSIBLY WRITABLE--SKIP IF CST
U 2611, 2016,3602,0000,5300,0040,5434,0777 ; 9438 GEN #-SC,#/-1,BYTE DISP ; WRITTEN OR THIS IS WRITE REF
U 2016, 3435,0001,0000,5031,0000,0010,0004 ; 9439 =110 FE_FE-#,#/4,J/STCST ;[305] TEMPORARILY UNWRITABLE, SET S
;;9440 .IF/CST.WRITE ;[314]
;;9441 AR_AR*BR,AD/OR,FE_FE OR #,#/4, ;SET CST WRITTEN AND SOFT BITS
;;9442 SKP AR18 ;IS IT REALLY WRITABLE? [303]
;;9443 =0 AR_SV.BR,J/PFT ;NOT REALLY. BAIL OUT
; 9444 .IFNOT/CST.WRITE ;[314]
U 2017, 3435,3302,2004,6031,0000,0010,0004 ; 9445 AR_AR*BR,AD/OR,FE_FE OR #,#/4 ;[314] Set CST written and soft bits
; 9446 .ENDIF/CST.WRITE ;[314]
U 3435, 2612,3600,2007,0100,0040,5210,0140 ; 9447 STCST: AR_AR AND CSMSK,SKP P NE ;[305] WRITABLE. CLEAR, TEST OLD AGE
; 9448 ;
; 9449 ; [322] At this point we should check whether we got here as a result
; 9450 ; of an age trap (in which case we just take the page failure) or not,
; 9451 ; in which case the failure was due to a write reference and we should
; 9452 ; set bit 2 (the A bit) in the PFW. This is not currently done
; 9453 ; because (1) nobody needs it now, and (2) we are very short on CRAM
; 9454 ; space.
; 9455 ;
; 9456 =0
U 2612, 3445,3240,2007,0000,0020,0010,0150 ; 9457 NOTWR: AR_SV.BR,J/PFT ;WRITE OR AGE TRAP
;;9458 .IFNOT/NOCST ;[247]
;;9459 AR_AR OR PUR,STORE ;SET USE BITS, STORE BACK CST
;;9460 MB WAIT,VMA_SV.VMA, ;RELOAD VMA FOR ORIGINAL REF
;;9461 AR_SV.VMA,SC_1 ;READY TO TEST VMA USER
;;9462 GEN P AND SC,SKP SCAD NE, ;TEST VMA USER, copy page # to ARL,
;;9463 AR_ARX, ;[333] K to AR bit 23, APMWC0 TO SC
;;9464 SC_FE,ARX_AR (AD) ; MAP BIT TO ARX
;;9465 =0 P_P OR SC#,EXEC REF,J/WRHPT ;BUILD PT ENTRY, CLEAR VMA USER
;;9466 P_P OR SC#,USER REF ; OR SET USER, AS NECESSARY
;;9467 WRHPT: WR PT ENTRY,FE_#,#/10,AR_ARX*4 ;UPDATE HARDWARE TABLE
; 9468 .IF/NOCST
U 2613, 2617,3300,2007,0000,0036,0010,0141 ; 9469 AR_AR OR PUR,STORE,J/WRHPT ;[247]SET USE BITS,
; 9470 ; STORE BACK CST
; 9471 ;
; 9472 NOUPDT: GEN FE AND #, #/10, ARX_AR SWAP,
U 3436, 2614,3711,2400,7030,3020,5210,0010 ; 9473 AR_ARX (AD),SKP SCAD NE ;[247] SKIP IF WRITABLE
; 9474 =0 AR_SV.PFW,GEN P AND SC, ;[322] Get saved PFW and
U 2614, 2616,3240,2007,7100,0040,5210,0152 ; 9475 SKP SCAD NE,J/NOT.WR ;[247]FAIL IF WRITING
U 2615, 2617,0001,0000,6031,0000,0010,0004 ; 9476 FE_FE OR #, #/4, J/WRHPT ;[247]SET WRITABLE BIT
; 9477 ;
U 3437, 2612,0001,0007,0000,0000,1010,0152 ; 9478 WRFAIL: SV.PFW_AR,J/NOTWR ;[322]Restore PFW and page fail
; 9479 ;
; 9480 =0 ;[323]
U 2616, 3437,4001,0000,6320,2000,0110,0100 ; 9481 NOT.WR: AR0-8_# OR AR0-8,#/100,J/WRFAIL ;[322]Write failure. Set A in PFW
U 2617, 3440,3200,4007,0000,2123,0013,0145 ; 9482 WRHPT: RSTR VMA_SV.VMA,AR_ARX,SC_FE ;RELOAD ORIGINAL VMA
U 3440, 3441,4001,0000,6100,3001,0010,0200 ; 9483 P_P OR SC ;[333]COMBINE APMWC WITH PAGE #, K
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 22-4
; IO.MIC[4,30] 17:12 9-Aug-84 KL-MODE PAGE REFILL LOGIC
U 3441, 3442,4001,0000,0000,0020,2310,0010 ; 9484 WR PT ENTRY ;UPDATE HARDWARE PAGE TABLE
; 9485 .ENDIF/NOCST
; 9486
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 23
; IO.MIC[4,30] 17:12 9-Aug-84 KL-MODE PAGE REFILL LOGIC
; 9487 ;HERE WHEN MAP INFO WRITTEN INTO HARDWARE PAGE TABLE
; 9488 ; WE NOW NEED ONLY RESTORE THE REGISTERS WE HAVE USED, AND RESTART THE
; 9489 ; MEMORY REFERENCE WHICH FAILED, RETURNING TO THE MICROINSTRUCTION
; 9490 ; WHICH WAITS FOR ITS COMPLETION. (EXCEPT FOR MAP)
; 9491
;;9492 .IFNOT/MODEL.B
;;9493 GEN FE AND S,SKP SCAD NE, ;TEST FOR MAP INSTR
;;9494 AR_SV.SC
; 9495 .IF/MODEL.B
U 3442, 2620,3200,2007,0000,0020,0010,0151 ; 9496 AR_SV.SC
; 9497 .ENDIF/MODEL.B
; 9498
; 9499 ;HERE TO RESTORE REGISTERS AND RESTART REFERENCE WHICH FAILED
; 9500
; 9501 =0 SC_EXP,FE_EXP,SKP AR0, ;RESTORE FE
U 2620, 2622,3240,4207,0203,3020,4510,0150 ; 9502 AR_AR SWAP,ARX_SV.BR,J/PGRST1
;;9503 .IFNOT/MODEL.B
;;9504 AR_SV.VMA,ARX_SV.VMA,J/COMPEA ;*MAP* RESTART FROM AREAD
; 9505 .IF/MODEL.B
; 9506 =
; 9507 .ENDIF/MODEL.B
; 9508 =0
; 9509 PGRST1: SC_EXP,SKP AR0, ;RESTORE SC
U 2622, 2624,3240,4207,0202,2020,4510,0156 ; 9510 AR_ARX,ARX_SV.AR,J/PGRST2
U 2623, 2622,4001,0000,1401,0000,0010,0000 ; 9511 FE_-SC-1,J/PGRST1 ;MAKE FE NEG
; 9512 =0
; 9513 PGRST2: BR/AR,AR_ARX, ;RESTORE BR AND AR
U 2624, 3443,3240,4247,0000,2020,0010,0157 ; 9514 ARX_SV.ARX,J/PGRST3 ; AND ARX
; 9515 SC_-SC-1,BR/AR,AR_ARX, ;NEGATE SC
U 2625, 3443,3200,4247,1402,2020,0010,0157 ; 9516 ARX_SV.ARX
; 9517
; 9518 ;HERE RETURN TO POINT OF FAULT. THERE MUST BE EXACTLY ONE MICRO-
; 9519 ; INSTRUCTION, OF 2 OR 3 TICKS, BETWEEN THE REQUEST AND THE RETURN.
; 9520 ; AT LEAST ONE IS REQUIRED TO GET NICOND LOGIC SET UP CORRECTLY IN
; 9521 ; CASE THIS IS A FETCH, BUT THERE MUST NOT BE TIME FOR A READ TO
; 9522 ; READ REFERENCE TO COMPLETE, BECAUSE THE MB WAIT INSTRUCTION TO WHICH
; 9523 ; WE RETURN MAY EXPECT TO GET SOMETHING OUT OF AR OR ARX BEFORE THE
; 9524 ; MBOX RESPONSE. SEE DPB1.
; 9525
U 3443, 3444,3200,0007,0000,0130,0010,0145 ; 9526 PGRST3: REQ SV.VMA ;RESTART FAULTED REQUEST
U 3444, 0000,4001,0000,0000,0000,2103,0105 ; 9527 SET ACCOUNT EN,RETURN0 ;RETURN TO POINT OF FAILURE
; 9528
; 9529
; 9530 ;HERE ON A TRAP CONDITION DETECTED BY REFILL LOGIC
; 9531 ;AR CONTAINS SAVED BR
; 9532
; 9533 PFT: BR/AR,VMA_SV.VMA, ;RESTORE BR & VMA
U 3445, 0040,3200,0047,0000,0320,0005,0145 ; 9534 SR DISP,J/CLEAN ;TAKE TRAP
; 9535
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 24
; IO.MIC[4,30] 17:12 9-Aug-84 KI-MODE PAGE FAIL HANDLING
; 9536 .TOC "KI-MODE PAGE FAIL HANDLING"
; 9537
;;9538 .IFNOT/KLPAGE
;;9539 .IFNOT/MODEL.B
;;9540 2377: CLR ACCOUNT EN,FORCE AR-ARX,J/PFSAVE
;;9541 .IF/MODEL.B
;;9542 3777: CLR ACCOUNT EN,FORCE AR-ARX,J/PFSAVE
;;9543 .ENDIF/MODEL.B
;;9544 1777: CLR ACCOUNT EN,FORCE AR-ARX ;DON'T CHARGE PAGE FAIL TO USER
;;9545 PFSAVE: SV.AR_AR,AR_ARX ;PRESERVE AR, ARX
;;9546 SV.ARX_AR,SR DISP,J/CLEAN ;NOW CHECK FOR CLEANUP REQUIRED
;;9547
; 9548 .ENDIF/KLPAGE
; 9549 ;HERE ON PAGE FAIL OR INTERRUPT WHICH REQUIRES CLEANUP IN ORDER
; 9550 ; TO BE CORRECTLY RESTARTABLE AFTER SERVICE...
; 9551
; 9552 =1*0000
U 0040, 2626,0001,0000,0301,0000,7010,0037 ; 9553 CLEAN: FE_#,#/37,SKP INTRPT,J/PGF1 ;HERE FOR INTRPT OR PGF?
; 9554
; 9555 ;(1) HERE ON EDIT SOURCE FAIL
; 9556
U 0041, 3467,3240,2001,0000,0020,1610,0000 ; 9557 AR_SRCP,SR_0,J/BACKS ;BACK UP SRC POINTER
; 9558
; 9559 ;(2) HERE ON ANY FAILURE IN DECIMAL TO BINARY
; 9560
U 0042, 3474,3202,2600,0000,0000,1610,0001 ; 9561 AR_BR LONG,SR_1,J/D2BPF ;GET ACCUMULATED BINARY
; 9562
; 9563 ;(3) HERE ON DST FAIL IN BINARY TO DECIMAL FILL
; 9564
U 0043, 3500,2540,2005,0000,0020,1610,0004 ; 9565 AR_DLEN COMP,SR_#,#/4,J/B2DFPF
; 9566
; 9567 ;(4) HERE ON EDIT DST FAIL WITH NO SRC POINTER UPDATE
; 9568
U 0044, 3471,4001,0000,0000,0000,1610,0000 ; 9569 SR_0,J/BACKD ;BACK UP DST POINTER ONLY
; 9570
; 9571 ;(5) HERE ON EDIT DST FAIL AFTER UPDATING SRC POINTER
; 9572
U 0045, 3471,0001,0000,0000,0000,1610,0001 ; 9573 SR_1,J/BACKD ;BACK UP DST, THEN SRC
; 9574
; 9575 ;(6) HERE ON DESTINATION FAILURE IN BINARY TO DECIMAL
; 9576
U 0046, 3471,0001,0000,0000,0000,1610,0010 ; 9577 SR_BDT,J/BACKD ;BACK UP DST, THEN SAVE FRACTION
; 9578
; 9579 ;(7) HERE ON BLT FAILURE
; 9580 .IF/KLPAGE
U 0047, 3462,3200,0207,0000,0020,0010,0157 ; 9581 ARX_SV.ARX,J/BLTPF ;GET DEST ADDR AGAIN
;;9582 .IFNOT/KLPAGE
;;9583 BLTPF: AR_ARX+BR,SR_0,J/BLTPF1 ;CURRENT SRC ADDR
; 9584 .ENDIF/KLPAGE
; 9585
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 25
; IO.MIC[4,30] 17:12 9-Aug-84 KI-MODE PAGE FAIL HANDLING
; 9586 ;(10) HERE ON TRANSLATION FAILURE IN BINARY TO DECIMAL
; 9587
U 0050, 3501,3242,2600,0000,0000,1610,0000 ; 9588 AR_BR LONG,SR_0,J/B2DPF ;GET BINARY FRACTION
; 9589
; 9590 ;(11) HERE ON SRC FAILURE IN COMPARE OR MOVE STRING
; 9591
U 0051, 3505,3240,2005,0000,0020,1610,0001 ; 9592 AR_DLEN,SR_1,J/STRPF ;PUT LENGTHS BACK, THEN BACK SRC
; 9593
; 9594 ;(12) HERE ON DST FAILURE IN COMPARE OR MOVE STRING
; 9595
U 0052, 3505,3240,2005,0000,0020,1610,0004 ; 9596 AR_DLEN,SR_#,#/4,J/STRPF
; 9597
; 9598 ;(13) HERE ON DST FAILURE AFTER UPDATING SRC IN COMPARE OR MOVE
; 9599
U 0053, 3471,0001,0000,0000,0000,1610,0111 ; 9600 SR_SRC,J/BACKD ;BACK DST, THEN HANDLE AS SRC FAIL
; 9601
; 9602 ;(14) HERE ON DST FILL FAILURE IN MOVRJ
; 9603
U 0054, 3511,3240,2005,0000,0020,1610,0004 ; 9604 AR_DLEN,SR_#,#/4,J/STRPF4
; 9605 .IF/KLPAGE
; 9606 ;(15) HERE ON PAGE FAILURE IN MAP INSTRUCTION. RETURN PAGE FAIL WORD
; 9607
U 0055, 1270,3200,2007,0000,0020,7310,0152 ; 9608 AR_SV.PFW,SKP IO LEGAL,J/MAP2 ;RETURN PFW IN AC
; 9609 .ENDIF/KLPAGE
; 9610 .IF/XADDR
; 9611 ;(16) HERE ON PAGE FAIL IN XBLT
; 9612
U 0056, 3465,3242,2600,0000,0000,1610,0000 ; 9613 AR_BR LONG,SR_0,J/XBLTPF
; 9614 .ENDIF/XADDR
; 9615 .IF/MODEL.B
; 9616 ;(17) HERE ON FAILURE IN WORD MOVE STRING
; 9617
U 0057, 3511,3200,2005,0000,0020,1610,0000 ; 9618 AR_DLEN,SR_0,J/STRPF4
; 9619 .ENDIF/MODEL.B
; 9620 =
; 9621
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 26
; IO.MIC[4,30] 17:12 9-Aug-84 KI-MODE PAGE FAIL HANDLING
; 9622 ;HERE ON ANY PAGE FAILURE OR PI REQUEST IN LONG INSTRUCTIONS
; 9623 ; SKIP IF PI REQUEST, WHICH TAKES PRIORITY
; 9624
; 9625 .IF/KLPAGE
; 9626 =0
; 9627 .IFNOT/SHIFT.MUUO
U 2626, 3446,4001,0000,0000,0102,3010,0500 ; 9628 PGF1: MB WAIT,VMA_#,#/500,J/PGF2
;;9629 .IF/SHIFT.MUUO
;;9630 PGF1: MB WAIT,VMA_#,#/501,J/PGF2 ;SHIFT TO CLOSER MATCH XADDR FORM
; 9631 .ENDIF/SHIFT.MUUO
U 2627, 0071,0001,0000,0000,0000,2110,0105 ; 9632 SET ACCOUNT EN,J/TAKINT ;CLEANUP DONE, SERVE INTRPT
U 3446, 1260,3200,2007,0000,0020,6510,0152 ; 9633 PGF2: AR_SV.PFW,SKP PI CYCLE,J/PGF4 ;GET BACK PAGE FAIL WORD
;;9634 .IFNOT/KLPAGE
;;9635 =0
;;9636 PGF1: GET ECL EBUS,CLR SC,
;;9637 PF DISP,J/PGF2
;;9638 SET ACCOUNT EN,J/TAKINT ;HERE TO SERVE INTRPT, DO IT
;;9639 =1100
;;9640 PGF2:
;;9641 =01 AR_SV.AR,FE_FE-1, ;AR PARITY ERROR
;;9642 SKP RPW,J/PGF6 ;DO WE NEED TO RESTART RPW?
;;9643 =10 VMA_VMA HELD,MAP,SC_FE ;ARX PARITY ERROR, PF CODE 37
;;9644 PGF3: MB WAIT,VMA_#,#/500
;;9645 AR_EBUS REG ;READ PAGE FAIL WORD
;;9646 REL ECL EBUS
;;9647 P_P OR SC,SKP PI CYCLE ;STUFF ERROR CODE IF PARITY
; 9648 .ENDIF/KLPAGE
; 9649 =00
; 9650 PGF4: ARX_AR,AR_VMA HELD,SC_#,#/13., ;READY TO COMBINE PF WORD
U 1260, 1630,3733,2400,0302,1000,1750,0015 ; 9651 CALL,J/ROTS ; WITH ADDRESS
; 9652 ARX_AR,AR_VMA HELD,SC_#,#/13., ;READY TO COMBINE PF WORD
U 1261, 3456,3731,2400,0302,1000,1710,0015 ; 9653 J/IOPGF ; WITH ADDRESS
U 1263, 3447,4001,4000,0000,0000,1510,0004 ; 9654 =11 AR_SHIFT,ABORT INSTR ;RECOVER TRAP FLAGS, IF ANY
;;9655 .IFNOT/XADDR
;;9656 STORE,UPT REF ;PUT PAGE FAIL WORD AT 500
;;9657 FIN STORE,AR_PC,
;;9658 VMA_VMA+1,STORE ;STORE OLD PC AT 501 OR 502
;;9659 FIN STORE,AR_0S,
;;9660 VMA_VMA+1,LOAD AR ;GET NEW PC FROM 502 OR 503
;;9661 SET ACCOUNT EN,J/NEWPC
; 9662 .IF/XADDR
U 3447, 3450,3733,0200,0000,0016,0026,0223 ; 9663 STORE,UPT REF,ARX_PC ;PAGE FAULT WORD TO 500
; 9664 AR_ARX ANDC ADMSK,MB WAIT, ;GET PC FLAGS FOR STORING
U 3450, 3451,3510,2227,4000,0022,0010,0175 ; 9665 BRX/ARX,ARX/AD ;FULL PC IN BRX, FLAGS IN ARX
U 3451, 2630,0001,0000,0000,0000,6222,0030 ; 9666 AR_0.S,SKP USER
U 2630, 0732,0001,0000,0000,2000,0250,0000 ; 9667 =0 AR12-17_PREV SEC,CALL [ARSWAP] ;[334] GET PCS IF EXEC MODE
; 9668 ARL_ARXL,ARR_ARR, ;FLAGS WORD IN AR
U 2631, 3452,4001,0000,0000,2016,3622,0004 ; 9669 VMA_VMA+1,STORE ;STORE FLAGS WORD IN 501
; 9670 AR_ARX*BRX,AD/ANDCA, ;GET PC ADDRESS
U 3452, 3453,3002,6004,0000,0016,3610,0000 ; 9671 VMA_VMA+1,STORE ; STORE IT IN 502
U 3453, 3454,3441,2000,0000,0012,3610,0000 ; 9672 AR_0S,VMA_VMA+1,LOAD AR ;GET NEW PC ADDRESS FROM 503
U 3454, 3455,0001,0000,0000,0000,0024,0020 ; 9673 SET FLAGS_AR ;CLEAR ALL FLAGS
U 3455, 1045,3200,0003,0000,0022,2110,0105 ; 9674 AR_MEM,SET ACCOUNT EN,J/ARJMP ;NEW ADDRESS FOR PC
; 9675 .ENDIF/XADDR
; 9676
;;9677 .IFNOT/KLPAGE
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 26-1
; IO.MIC[4,30] 17:12 9-Aug-84 KI-MODE PAGE FAIL HANDLING
;;9678
;;9679 ;HERE ON PARITY ERROR IN AR. SKIP IF READ-PAUSE-WRITE IN PROGRESS
;;9680 =0
;;9681 PGF6: VMA_VMA HELD,MAP, ;AR PARITY ERROR
;;9682 SC_FE,J/PGF3 ;PF CODE 36
;;9683 STORE,J/PGF6 ;COMPLETE CYCLE, WITH GOOD PAR
; 9684 .ENDIF/KLPAGE
; 9685
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 27
; IO.MIC[4,30] 17:12 9-Aug-84 PAGE FAIL/INTERRUPT CLEANUP FOR SPECIAL INSTRUCTIONS
; 9686 .TOC "PAGE FAIL/INTERRUPT CLEANUP FOR SPECIAL INSTRUCTIONS"
; 9687
; 9688 ;HERE ON PAGE FAIL DURING PI CYCLE
; 9689
;;9690 .IFNOT/MODEL.B ;[224][274]
;;9691 IOPGF: AR_SHIFT,ARX_SHIFT,SC_#-SC, ;TROUBLE... CREATE PAGE FAIL WORD
;;9692 #/36.
;;9693 AR_SHIFT,SET IO PF
;;9694 SV.IOPF_AR,J/IOPFIN ;FINISH IOPF ROUTINE
; 9695 .IF/MODEL.B ;[224] DO FANCY STUFF FOR DTE.
U 3456, 3457,3240,2007,0000,0020,0010,0163 ; 9696 IOPGF: AR_FM[SV.IOP] ;[274] GET THE SAVED API WORD
U 3457, 3460,0001,0007,0000,0000,1010,0162 ; 9697 SV.IOPF_AR ;[224] SAVE IT IN AC BLK 7.
U 3460, 3461,3200,2047,0000,0020,0010,0156 ; 9698 BR/AR,AR_SV.AR ;[224] KEEP IOPF WORD AROUND,
U 3461, 1272,4001,0000,0000,0000,2310,0100 ; 9699 SET IO PF ;[224][274] HANDLE DTE.
; 9700
; 9701 ;[223] THIS RESTARTS THE DTE'S CLOCK TO PREVENT A DEX FAILURE.
U 1272, 3267,4001,0000,0000,0000,2250,0026 ; 9702 =10 SET DATAO,CALL,J/EBUSO ;[223] SEND THE DATA TO THE DTE.
U 1273, 0743,3202,2000,0000,0000,2110,0105 ; 9703 AR_BR,SET ACCOUNT EN,J/PIDONE ;[223] AND FINISH THE INTRPT.
; 9704 .ENDIF/MODEL.B ;[224]
; 9705
; 9706
; 9707 ;HERE ON BLT PAGE FAIL
; 9708
; 9709 .IF/KLPAGE
U 3462, 3463,0612,2000,0000,0020,1610,0000 ; 9710 BLTPF: AR_ARX+BR,SR_0 ;CURRENT SRC ADDR
; 9711 .ENDIF/KLPAGE
U 3463, 3464,3713,2000,0000,3000,0610,0004 ; 9712 BLTPF1: AR_ARX (AD),ARL_ARR
U 3464, 0040,0001,0000,0000,0000,1005,0000 ; 9713 PGFAC0: AC0_AR,SR DISP,J/CLEAN ;BEGIN NORMAL PF WORK
; 9714
; 9715 ;HERE ON XBLT PAGE FAIL OR INTERRUPT
; 9716 .IF/XADDR
; 9717
U 3465, 3466,0001,4001,0000,2000,1010,0000 ; 9718 XBLTPF: AC1_AR,AR_ARX
U 3466, 0040,0001,0004,0000,0000,1010,0000 ; 9719 AC2_AR,J/CLEAN
; 9720 .ENDIF/XADDR
; 9721
; 9722 ;HERE ON VARIOUS CASES OF STRING/EDIT FAILURE
; 9723
U 3467, 3470,0001,0000,2110,3000,0022,0200 ; 9724 BACKS: P_P+S
U 3470, 0040,4001,0001,0000,0000,1005,0000 ; 9725 SRCP_AR,SR DISP,J/CLEAN ;RE-DISPATCH FOR MORE
; 9726
U 3471, 3472,3240,2006,0000,0020,0010,0144 ; 9727 BACKD: AR_DSTP
; 9728 .IF/MODEL.B
U 3472, 3473,0001,0000,2110,3000,0110,0144 ; 9729 P_P+S.C,SEL DSTP ;PRESEL NUM FIELD FOR HARDW GLITCH
;;9730 .IFNOT/MODEL.B
;;9731 P_P+S
; 9732 .ENDIF/MODEL.B
U 3473, 0040,4001,0006,0000,0000,1005,0144 ; 9733 DSTP_AR,SR DISP,J/CLEAN
; 9734
U 3474, 3475,3401,2005,0302,0000,1010,0043 ; 9735 D2BPF: AC3_AR,AR_0S,SC_#,#/35. ;PUT AWAY HIGH BINARY
U 3475, 3476,5140,4207,0000,0020,0010,0170 ; 9736 AR_SHIFT,ARX_-SLEN ;LOW TO AR, REMAINING LEN TO ARX
; 9737 .IF/MODEL.B
U 3476, 3477,4001,0000,0000,0000,0010,0144 ; 9738 SEL DSTP ;PRESEL NUM FIELD FOR HARDW GLITCH
; 9739 .ENDIF/MODEL.B
U 3477, 3510,0001,4006,0000,2000,1010,0144 ; 9740 AC4_AR,AR_ARX,J/STRPF2 ;PUT LOW AWAY
; 9741
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 27-1
; IO.MIC[4,30] 17:12 9-Aug-84 PAGE FAIL/INTERRUPT CLEANUP FOR SPECIAL INSTRUCTIONS
U 3500, 3504,3300,2007,4000,0020,0010,0166 ; 9742 B2DFPF: AR_AR*T0,AD/OR,J/B2DPF2
; 9743
U 3501, 3502,4001,4000,0000,2000,1010,0000 ; 9744 B2DPF: AC0_AR,AR_ARX ;HIGH FRACTION TO AC
U 3502, 3503,4001,0001,0000,0000,1010,0000 ; 9745 AC1_AR ;LOW TO AC1
U 3503, 3504,3200,2005,0000,0020,0010,0000 ; 9746 AR_AC3 ;GET FLAGS
U 3504, 3507,5100,2007,4000,0020,0010,0170 ; 9747 B2DPF2: AR_AR*SLEN,AD/A-B,J/STRPF3 ;REBUILD FLAGS+LEN
; 9748
U 3505, 2632,5160,2047,0000,0020,4510,0170 ; 9749 STRPF: BR/AR,AR_-SLEN,SKP AR0 ;WHICH IS LONGER?
; 9750 =0
U 2632, 3510,0602,2005,4000,0020,1010,0000 ; 9751 STRPF1: AC3_AR,AR_AR+BR,J/STRPF2 ;SRC LONGER
U 2633, 3506,3300,2400,0000,1020,0010,0000 ; 9752 ARX_AR,AR_AR*SFLGS,AD/OR ;DST. BUILD SRC LEN+FLAGS
U 3506, 3507,5112,2000,4000,0020,1010,0000 ; 9753 AC0_AR,AR_ARX-BR ;THAT'S AWAY, MAKE DST LEN
U 3507, 0040,0001,0005,0000,0000,1005,0000 ; 9754 STRPF3: AC3_AR,SR DISP,J/CLEAN ;OK, NOW BACK UP SRC IF REQ'D
; 9755
U 3510, 3464,3300,2000,0000,0020,0010,0000 ; 9756 STRPF2: AR_AR*SFLGS,AD/OR,J/PGFAC0
; 9757
U 3511, 2632,2500,2047,0000,0020,4510,0170 ; 9758 STRPF4: BR/AR,AR_SLEN COMP,SKP AR0,J/STRPF1
; 9759
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 1
; EIS.MIC[4,30] 17:12 9-Aug-84 EXTENDED INSTRUCTION SET DECODING
; 9760 .TOC "EXTENDED INSTRUCTION SET DECODING"
; 9761
; 9762 .IF/EXTEND
; 9763 ;GET HERE WITH E0 IN BR, (E0) IN AR
; 9764 ; (E0) IS THE OPERATION WORD, AND HAS THE NORMAL -10 INSTRUCTION
; 9765 ; FORMAT -- BITS 0-8 ARE OPCODE, 9-12 IGNORED, 13 @, 14-17 XR,
; 9766 ; AND 18-35 Y. THE AC USED COMES FROM THE EXTEND INSTRUCTION.
; 9767 ; COMPUTE E1 FROM 13-35
; 9768
;;9769 .IFNOT/XADDR
;;9770 ;EXTEND:FE_#+AR0-8,#/-32,SKP SCAD0, ;CHECK LEGAL OPERATION
;;9771 ; ARX_AR,AR_BRX ;OPR TO ARX, GET AC FROM BRX
;;9772 =0
;;9773 EXT1: AR_BR,J/UUO ;OPCODE > 17 or 31
;;9774 .IF/MODEL.B ;[246]
;;9775 AR0-8_FE+#,#/32 ;PLUG OPR INTO EXTEND AC
;;9776 GEN AR,LOAD IR,AR_ARX
;;9777 ARL_0.M,EA MOD DISP,J/EXT2
;;9778 =1100
;;9779 .IFNOT/MODEL.B ;[246]
;;9780 AR0-8_FE+#,#/20 ;PLUG OPR INTO EXTEND AC
;;9781 GEN AR,LOAD IR,AR_ARX,ARL_0.M,
;;9782 EA MOD DISP
;;9783 =00
;;9784 .ENDIF/MODEL.B
;;9785 EXT2: E1_AR,B DISP,J/EXT5 ;SAVE E1, READY TO SAVE E0
;;9786 ARL_0.M,AR_ARX+XR,J/EXT2
;;9787 GEN ARX,A INDRCT,SKP INTRPT,J/EXT3
;;9788 GEN ARX+XR,A INDRCT,
;;9789 SKP INTRPT,J/EXT3
;;9790 =0
;;9791 EXT3: AR_MEM,ARX_MEM,J/EXT4
;;9792 AR_MEM,TAKE INTRPT
;;9793 EXT4: ARL_0.M,EA MOD DISP,J/EXT2
;;9794
;;9795 =110
;;9796 EXT5: AR_BR,J/EXT6 ;TRANSLATE MODE, DO NOT EXTEND
;;9797 ARL_1S.M,SKP AR18 ;SIGN EXTEND E1 IF NEGATIVE
;;9798 =0 AR_BR,J/EXT6 ;POS, ALREADY OK
;;9799 E1_AR,AR_BR ;PUT NEG RESULT IN E1
;;9800 EXT6: E0_AR,VMA_AR+1,IR DISP,J/2000 ;ENTER EXTENDED INSTR HANDLER
;;9801
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 2
; EIS.MIC[4,30] 17:12 9-Aug-84 EXTENDED INSTRUCTION SET DECODING
;;9802 ;HERE FOR EXTENDED INSTRUCTION SET DECODING UNDER XADDR
; 9803 .IF/XADDR
; 9804 ;EXTEND: SC_#+AR0-8,#/-32,SKP SCAD0, ;VALID EXTENDED OPERATION?
; 9805 ; ARX_AR,AR_BR,J/EXTF1 ; OPR TO ARX, AC TO AR
; 9806 =0
U 2634, 1002,3242,2000,0000,0000,0010,0000 ; 9807 EXTF1: AR_BR,J/UUO ;Opcode is too large.
U 2635, 3512,3202,6017,0000,1000,1010,0176 ; 9808 E0_AR,MQ_AR,AR_BRX ;SAVE E0. GET AC FROM EXTEND
U 3512, 3513,4001,0000,2302,2000,0110,0032 ; 9809 AR0-8_#+SC,#/32,SC/SCAD ;COMBINE EXT OP <32 WITH AC
U 3513, 2636,0001,0000,2400,0020,5210,0000 ; 9810 GEN SC,SKP SCAD NE ;TEST OP CODE
U 2636, 1002,3242,2000,0000,0000,0010,0000 ; 9811 =0 AR_BR,J/UUO ;OP CODE = 0 (UUO) [217][251]
U 2637, 3514,3701,0000,0000,0000,1410,0000 ; 9812 GEN AR,LOAD IR ;MAP THIS OVER THE LUUO SPACE
U 3514, 1234,2301,4000,0000,2000,0036,0000 ; 9813 EXTF2: AR_ARX,EA MOD DISP,J/EXTLA ;GO EVALUATE E1
; 9814 =0000
U 1220, 2640,3713,0000,0000,1111,7010,0230 ; 9815 EXTXA: GEN ARX,GLOBAL,EXT INDRCT,SKP INTRPT,J/EXTI
U 1221, 2640,0610,0002,4000,1131,7010,0230 ; 9816 GEN ARX+XR,GLOBAL,EXT INDRCT,SKP INTRPT,J/EXTI
U 1222, 2640,3713,0000,0000,1111,7010,0230 ; 9817 GEN ARX,GLOBAL,EXT INDRCT,SKP INTRPT,J/EXTI
U 1223, 2640,0610,0002,4000,1131,7010,0230 ; 9818 GEN ARX+XR,GLOBAL,EXT INDRCT,SKP INTRPT,J/EXTI
; 9819
U 1224, 3077,3711,0300,0000,1004,0002,0400 ; 9820 GEN ARX,GLOBAL,EXT INDEX,ARX/MQ,J/3077
U 1225, 3077,0610,0302,0000,1024,0002,0400 ; 9821 GEN ARX+XR,GLOBAL,EXT INDEX,ARX/MQ,J/3077
U 1226, 3077,3711,0300,0000,1004,0002,0400 ; 9822 GEN ARX,GLOBAL,EXT INDEX,ARX/MQ,J/3077
U 1227, 3077,0610,0302,0000,1024,0002,0400 ; 9823 GEN ARX+XR,GLOBAL,EXT INDEX,ARX/MQ,J/3077
; 9824
U 1230, 0134,0001,0000,0000,0000,2210,0400 ; 9825 GET ECL EBUS,J/ILLIND ;[234] illegal indirect word
U 1231, 0134,0001,0000,0000,0000,2210,0400 ; 9826 GET ECL EBUS,J/ILLIND ;[234] illegal indirect word
U 1232, 0134,0001,0000,0000,0000,2210,0400 ; 9827 GET ECL EBUS,J/ILLIND ;[234] illegal indirect word
U 1233, 0134,0001,0000,0000,0000,2210,0400 ; 9828 GET ECL EBUS,J/ILLIND ;[234] illegal indirect word
; 9829 ;
; 9830 ; [325]
; 9831 ; The effective address dispatch logic is quite arcane. It appears
; 9832 ; that MEM/A RD,DISP/DRAM A RD, and SH/2 interact to get the section
; 9833 ; number from either AD (if the AC > 777777) or from VMA section, but
; 9834 ; in order for that to work, we must do something with the VMA, even
; 9835 ; though we don't actually use it here if the address computation
; 9836 ; is complete. Thus the VMA/LOAD has been added for the index case.
; 9837 ;
U 1234, 2042,3701,0300,0000,0004,0033,0400 ; 9838 EXTLA: GEN AR,EXT ADDR,ARX/MQ,J/EXT2
U 1235, 3077,0600,0302,0000,2124,0002,0400 ; 9839 GEN AR+XR,INDEXED,EXT INDEX,ARX/MQ,VMA/LOAD,J/3077 ;[325]
U 1236, 2640,3703,0000,0000,0111,7010,0230 ; 9840 GEN AR,EXT INDRCT,SKP INTRPT,J/EXTI
U 1237, 2640,0600,0002,0000,2131,7010,0230 ; 9841 GEN AR+XR,INDEXED,EXT INDRCT,SKP INTRPT,J/EXTI
; 9842
; 9843 =0
U 2640, 3515,3240,0003,0000,0022,2510,0000 ; 9844 EXTI: ARX_MEM,LONG EN,J/EXTI2
U 2641, 0144,3200,0003,0000,0022,7710,0000 ; 9845 ARX_MEM,TAKE INTRPT
; 9846 EXTI2: AR_ARX,XR,EA MOD DISP,
U 3515, 1220,2341,4002,0301,2020,0036,0024 ; 9847 FE_#,#/24,TIME/3T,J/EXTXA
; 9848
; 9849 =010
; 9850 EXT2: E1_AR,AR_ARX,VMA_ARX+1, ;ESTABLISH E1
U 2042, 2000,4011,4007,0000,2320,1001,0165 ; 9851 IR DISP,J/2000 ;GO TO SPECIFIC HANDLER
U 2043, 2642,0001,0000,0000,0001,4410,0020 ; 9852 ARL_0.M,SKP AR18,J/EXT3 ;OFFSET MODE. EXTEND E1
; 9853 E1_AR,AR_ARX,VMA_ARX+1, ;[301] Duplicate these to
U 2046, 2000,4011,4007,0000,2320,1001,0165 ; 9854 IR DISP,J/2000 ; distinguish GSNGL (B=5) from
; 9855 E1_AR,AR_ARX,VMA_ARX+1, ; offset instructions (B=1)
U 2047, 2000,4011,4007,0000,2320,1001,0165 ; 9856 IR DISP,J/2000
; 9857 =0
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 2-1
; EIS.MIC[4,30] 17:12 9-Aug-84 EXTENDED INSTRUCTION SET DECODING
; 9858 EXT3: E1_AR,AR_ARX,VMA_ARX+1, ;ESTABLISH E1
U 2642, 2000,4011,4007,0000,2320,1001,0165 ; 9859 IR DISP,J/2000 ;GO TO SPECIFIC HANDLER
U 2643, 2642,2301,0000,0000,0000,0610,0002 ; 9860 ARL_1S,J/EXT3 ;NEGATIVE OFFSET
; 9861 .ENDIF/XADDR
; 9862
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 3
; EIS.MIC[4,30] 17:12 9-Aug-84 EXTENDED INSTRUCTION SET DECODING
; 9863 ; By using "IR DISP,J/2000" we can use the same DRAM for LUUOs as
; 9864 ; for the EXTEND instructions with like opcodes. The LUUOs dispatch
; 9865 ; to addresses in the range 1000-1017; by dispatching with J/2000,
; 9866 ; the EXTEND ops go to 3000-3017 (model B) or 2000-20017 (model A).
;;9867 .IFNOT/MODEL.B
;;9868 2005: AR_AC3,J/CMPS ;HIDDEN BEHIND L-CMS
;;9869 2006: CLR AR,ARX_1S,SC_#,#/15.,J/EDIT ;HIDDEN BEHIND L-EDIT
;;9870 2010: AR_AC0 COMP,J/DBIN ;HIDDEN BEHIND L-DBIN
;;9871 2011: AR_AC1,ARL/AD,SC_1,ARX+MQ_0.M,
;;9872 BYTE DISP,J/BDEC ;HIDDEN BEHIND L-BDEC
;;9873 2012: AR_AC3,LOAD AR,J/MVST ;HIDDEN BEHIND L-MVS
; 9874 .IF/MODEL.B
;;9875 .IFNOT/XADDR
;;9876 3005: AR_AC3,J/CMPS ;HIDDEN BEHIND L-CMS
;;9877 3006: CLR AR,ARX_1S,SC_#,#/15.,J/EDIT ;HIDDEN BEHIND L-EDIT
;;9878 3010: AR_AC0 COMP,J/DBIN ;HIDDEN BEHIND L-DBIN
;;9879 3011: AR_AC1,ARL/AD,SC_1,ARX+MQ_0.M,
;;9880 BYTE DISP,J/BDEC ;HIDDEN BEHIND L-BDEC
;;9881 3012: AR_AC3,LOAD AR,J/MVST ;HIDDEN BEHIND L-MVS
; 9882 .IF/XADDR
;;9883 .IFNOT/OWGBP ;[265]
;;9884 3005: AR_AC3,J/CMPS ;HIDDEN BEHIND L-CMS
;;9885 3006: CLR AR,ARX_1S,SC_#,#/15.,J/EDIT ;HIDDEN BEHIND L-EDIT
;;9886 3010: AR_AC0 COMP,J/DBIN ;HIDDEN BEHIND L-DBIN
;;9887 3011: AR_AC1,ARL/AD,SC_1,ARX+MQ_0.M,
;;9888 BYTE DISP,J/BDEC ;HIDDEN BEHIND L-BDEC
;;9889 3012: AR_AC3,LOAD AR,J/MVST ;HIDDEN BEHIND L-MVS
; 9890 .IF/OWGBP ;[265]
; 9891 ;
; 9892 ; [347] CMPS dispatch rewritten to test bad high length bits first.
; 9893 ;
U 3005, 3516,3240,2000,0301,0020,0050,0777 ; 9894 3005: AR_AC0,FE_#,#/777,CALL [FLGTST] ;[347] Any illegal high bits in len?
U 3025, 2050,4001,0007,0000,0000,1050,0173 ; 9895 3025: FILL_AR,CALL [EXT2WD] ;[310][347] Save fill VMA, test OWG
U 3035, 3546,3200,2015,0000,2020,0010,0000 ; 9896 3035: AR_AC3,MQ_ARX,J/CMPS ;[310][347] Get dest length and go
; 9897 ;
U 3006, 0246,4001,0000,0000,0000,0010,0000 ; 9898 3006: J/EDIT ;HIDDEN BEHIND L-EDIT
U 3010, 2670,4001,0000,0000,0000,0010,0000 ; 9899 3010: J/DBIN ;HIDDEN BEHIND L-DBIN
U 3011, 0241,4011,2000,0000,0020,0010,0000 ; 9900 3011: AR_ARX+1 (AD),J/BDEC ;[344] HIDDEN BEHIND L-BDEC
; 9901 ;
U 3012, 3516,3200,2000,0301,0020,0050,0077 ; 9902 3012: AR_AC0,FE_#,#/77,CALL [FLGTST] ;[347] MVST. Watch out for illegal
U 3032, 0664,0001,0000,0000,0012,0010,0000 ; 9903 3032: LOAD AR,J/MVST ; flags first.
; 9904 ;
; 9905 ; Subroutine to check for bits set that are not allowed to be.
; 9906 ; Enter with AR containing AC0 and FE with relevant bit mask.
; 9907 ; Return 20 if none set; sideways exit to UUO if any are. Note
; 9908 ; that BRX must still contain the EXTEND for this to work.
; 9909 ;
U 3516, 3517,3200,2005,7021,0020,0010,0000 ; 9910 FLGTST: AR_AC3,FE_FE AND AR0-8 ;[347] Get dest length
U 3517, 2644,4001,0000,6020,0020,5210,0000 ; 9911 GEN FE OR AR0-8,SKP SCAD NZ ;[347] Are any high bits set?
U 2644, 0020,4013,2000,0000,0020,0003,0000 ; 9912 =0 AR_ARX+1 (AD),RETURN20 ;[347] No. Start saving fill VMA
U 2645, 1002,3242,2000,0000,0000,0010,0000 ; 9913 AR_BR,J/UUO ;[347] Yes. Blow out of the water
; 9914 .ENDIF/OWGBP ;[265]
; 9915 ;3042: AR_BR,J/UUO ;[217] INDEXING ON ILL. EXTEND OP.
; 9916 ;
; 9917 ; As first written, locations 3044, 3045, 3046, 3050, 3051, 3052,
; 9918 ; 3144, 3145, 3146, 3147, 3150, 3151, 3152, 3153, and 3154 all were
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 3-1
; EIS.MIC[4,30] 17:12 9-Aug-84 EXTENDED INSTRUCTION SET DECODING
; 9919 ; B DISP,J/EXT2. The comment: these are index cases because index
; 9920 ; must do AREAD with the DISP function in order to get the correct
; 9921 ; index value for E1.
; 9922 ;
U 3077, 2042,4001,0000,0000,0000,0033,0000 ; 9923 3077: B DISP, J/EXT2 ;[251]
U 3177, 2042,4001,0000,0000,0000,0033,0000 ; 9924 3177: B DISP, J/EXT2 ;[251]
; 9925 .ENDIF/XADDR
; 9926 .ENDIF/MODEL.B
; 9927 .ENDIF/EXTEND
; 9928
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 4
; EIS.MIC[4,30] 17:12 9-Aug-84 ONE WORD GLOBAL BYTE POINTER SUBROUTINES FOR EXTEND
; 9929 .TOC "ONE WORD GLOBAL BYTE POINTER SUBROUTINES FOR EXTEND"
; 9930 ;
; 9931 ; HERE FOR MVST, EDIT AND CMPS INSTRUCTIONS
; 9932 ; MUST CHECK BOTH AC1 AND AC4 FOR OWGBP
; 9933 ; AND CONVERT TO TWO WORD GLOBAL POINTERS.
; 9934 ; There is also a hack in here for the CMPSx instructions. In
; 9935 ; order to find their fill characters in the right place, we must
; 9936 ; fetch FILL (saved as E0+1) into ARX. [310]
; 9937 ; BDEC ENTERS AT EXT01 FOR AC4 ONLY
; 9938 .IF/EXTEND
; 9939 .IF/OWGBP ;[265]
; 9940 =000
U 2050, 1430,3240,2001,0000,0020,0050,0000 ; 9941 EXT2WD: AR_AC1,CALL [TST2WD] ;AC1 OWGBP ?
U 2051, 3525,4001,0000,0000,0000,0050,0000 ; 9942 CALL [STR2WD] ;YES, CONVERT DONE, STORE
U 2052, 2054,4001,0000,0000,0000,0010,0000 ; 9943 J/EXT01 ;NO, TRY AC4
U 2053, 3523,3312,2004,0000,0000,1010,0000 ; 9944 AC2_AR,AR_BR OR ARX,J/EXT02 ;ADDRESS STORE
U 2054, 1430,3240,2006,0000,0020,0050,0144 ; 9945 EXT01: AR_AC4,CALL [TST2WD] ;AC4 OWGBP ?
U 2055, 3525,3200,0207,0000,0020,0050,0173 ; 9946 ARX_FILL,CALL [STR2WD] ;[310] YES, CONVERT DONE, STORE
U 2056, 0010,3200,0207,0000,0020,0003,0173 ; 9947 ARX_FILL,RETURN10 ;[310][347] NO, CAN'T DO NO MORE
U 2057, 3520,0001,0000,0000,0000,0010,0145 ; 9948 SEL DSTP2 ;[310] DON'T GLITCH ON AC5 STORE
U 3520, 3521,3312,2006,0000,0000,1010,0145 ; 9949 AC5_AR,AR_BR OR ARX ; (See second edit #210)
U 3521, 3522,3242,0600,0000,0000,0010,0144 ; 9950 ARX_BRX,SEL AC4 ;[310] RESTORE ARX AND SELECT AC4
U 3522, 0010,4001,0006,0000,0000,1003,0144 ; 9951 AC4_AR,RETURN10 ;[347] P,S,BIT 12 = 1 TO AC4
; 9952
U 3523, 2054,4001,0001,0000,0000,1010,0000 ; 9953 EXT02: AC1_AR,J/EXT01 ;P,S,BIT 12 = 1 TO AC1
; 9954
; 9955 ; HERE FOR DBIN
; 9956
; 9957 =00
U 1370, 1430,3240,2001,0000,0020,0050,0000 ; 9958 DB2WD: AR_AC1,CALL [TST2WD] ;AC1 OWGBP ?
U 1371, 3525,4001,0000,0000,0000,0050,0000 ; 9959 CALL [STR2WD] ;YES, CONVRT DONE, STORE
U 1372, 0001,4001,0000,0000,0000,0003,0000 ; 9960 RETURN1 ;NO, GET OUT
U 1373, 3524,3312,2001,4000,0000,1010,0000 ; 9961 AC1_AR,AR_BR OR ARX ;P,S,BIT 12 = 1 TO AC1
U 3524, 0001,4001,0004,0000,0000,1003,0000 ; 9962 AC2_AR,RETURN1 ;ADDRESS TO AC2, DONE
; 9963
; 9964 ; HERE TO TEST FOR OWGBP IN THE AR AND
; 9965 ; TO CONVERT IT IF IT'S OK
; 9966
; 9967 =00
U 1430, 2432,4001,0000,0000,0000,5050,0000 ; 9968 TST2WD: SKP PC SEC0,CALL,J/GTST ;TEST FOR NOT SEC 0 AND OWGBP [266]
U 1431, 0002,4001,0000,0000,0000,0003,0000 ; 9969 RET2: RETURN2 ;[260]NOT TODAY
U 1432, 3226,0001,0000,0000,0000,0050,0000 ; 9970 CALL [CNV2WD] ;YES, CONVERT
U 1433, 0001,3202,0010,0000,0000,0703,0003 ; 9971 MQ_BR,RETURN1 ;GET OUT
; 9972
; 9973 ; HERE TO GET P,S,BIT 12 = 1 AND A GOOD ADDRESS
; 9974 ; SOME VERY TRICKY STUFF GOING ON HERE
; 9975
U 3525, 3526,3240,2067,0000,0020,0010,0164 ; 9976 STR2WD: [AR]_FM[EXPMSK], BR/AR,BRX/ARX ;[310] P,S,JUNK TO BR, SAVE ARX
U 3526, 3527,3002,0200,0000,0000,0010,0000 ; 9977 ARX_AR ANDCA BR ;P,S,0 TO ARX
U 3527, 3530,5100,2007,0000,0020,0010,0175 ; 9978 [AR]_[AR]-FM[ADMSK] ;BIT 12 = 1 TO AR
; 9979 AR_[MQ] AND FM[ADMSK], ;0,ADDRESS TO AR
U 3530, 0002,3620,2047,4000,0020,0003,0175 ; 9980 BR/AR,RETURN2 ;BIT 12=1 TO BR
; 9981 .ENDIF/OWGBP ;[265]
; 9982 .ENDIF/EXTEND
; 9983
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 5
; EIS.MIC[4,30] 17:12 9-Aug-84 EIS -- STRING MOVE
; 9984 .TOC "EIS -- STRING MOVE"
; 9985 .IF/EXTEND
; 9986 ; HERE FOR MOVE STRING, CHECK FOR OWGBP FIRST
; 9987 ;SLEN IS THE COMPLEMENT OF THE SHORTER STRING LENGTH
; 9988 ;DLEN IS <SRC LEN>-<DST LEN>
; 9989
; 9990 .IF/OWGBP
; 9991 =0*0* ;[347]
U 0664, 1431,3240,0003,0000,0022,0050,0000 ; 9992 MVST: AR_MEM,CALL [RET2] ;[260]GET FILL, WAIT FOR PARITY
U 0666, 2050,4001,0007,0000,0000,1050,0173 ; 9993 FILL_AR,CALL [EXT2WD] ;SAVE FILL, CHECK FOR OWGBP
U 0676, 3531,3200,2005,0000,0020,0010,0000 ; 9994 =1*1* AR_AC3 ;[347] GET DLEN
U 3531, 3532,3240,2040,0000,0020,0010,0000 ; 9995 BR/AR,AR_AC0 ;[347] Copy for length compare
;;9996 .IFNOT/OWGBP
;;9997 MVST: BR/AR,AR_MEM, ;HOLD AC3, WAIT FOR FILLER
;;9998 FE_AR0-8,SKP SCAD NE ;CHECK FOR FLAGS IN DEST LEN
;;9999 =0 ARX_AC0,J/MVST1 ;GET SRC LEN, FLAGS
;;10000 NOLENS: AR_E0,J/UUO ;NO FLAGS ALLOWED IN DST LEN
;;10001 MVST1: FILL_AR,AR_ARX ;SAVE FILL CHAR
; 10002 .ENDIF/OWGBP
U 3532, 3533,0001,0000,2421,0000,0110,0000 ; 10003 FE_AR0-8,AR0-8_#,#/0 ;SEPARATE FLAGS OFF
U 3533, 2646,5102,2400,0000,1040,5510,0000 ; 10004 ARX_AR,AR_AR-BR,SKP AD0 ;COMPUTE SRC-DST LEN
U 2646, 3534,2542,2005,0000,0000,1010,0000 ; 10005 =0 DLEN_AR,AR_BR COMP,J/MVST2 ;SRC LONGER
U 2647, 3534,2001,6005,0000,0000,1010,0000 ; 10006 DLEN_AR,AR_ARX COMP ;DST LONGER
U 3534, 3535,3401,2417,0000,1000,1010,0170 ; 10007 MVST2: SLEN_AR,ARX_AR,MQ_AR,AR_0S ;-SHORT LEN -1 TO MQ
U 3535, 3536,4001,0020,0000,2000,0022,0200 ; 10008 AR0-8_FE,BRX/ARX ; AND BRX
U 3536, 2064,4001,0000,0000,0000,1033,0000 ; 10009 SFLGS_AR,B DISP
U 2064, 3540,2301,0200,0302,0000,0410,0014 ; 10010 =100 CLR AR,ARX_1S,SC_#,#/12.,J/MOVS2;[220]TRANSLATE, BUILD MASK
U 2065, 3537,3240,2006,0000,0020,0010,0144 ; 10011 AR_DSTP,J/MVSO3 ;OFFSET, MASK DEPENDS ON S
U 2066, 2100,4642,6600,0000,0020,1610,0111 ; 10012 ARX_BRX+1,AR/ADX,SR_SRC,J/MOVST1 ;LEFT JUSTIFY
U 2067, 1450,3240,2005,0000,0020,5510,0000 ; 10013 AR_DLEN,SKP AD0,J/MOVRJ ;RIGHT JUSTIFY
; 10014
U 3537, 3540,2301,2000,2412,0000,0510,0000 ; 10015 MVSO3: SC_S,CLR ARX,AR_1S ;PREPARE TO BUILD MASK
U 3540, 3541,0001,4000,0000,0000,1610,0111 ; 10016 MOVS2: AR_SHIFT,SR_SRC
U 3541, 2070,4001,0007,0000,0000,1010,0167 ; 10017 MSK_AR
; 10018 =000
U 2070, 2170,4660,2007,0000,0020,0050,0170 ; 10019 MOVELP: AR_SLEN+1,CALL,J/SRCMOD ;PICK UP SOURCE BYTE
U 2071, 2101,3200,2005,0000,0020,0010,0000 ; 10020 AR_DLEN,J/MOVSTX ;(1) LENGTH EXHAUSTED
; 10021 =100
U 2074, 1740,0001,0000,0000,0000,1650,0213 ; 10022 MOVPUT: SR_SRC+DST,CALL,J/PUTDST ;(4) NORMAL, STORE DST BYTE
U 2075, 3542,3200,2005,0000,0237,0010,0000 ; 10023 I FETCH,AR_DLEN,J/MVABT ;(5) ABORT
U 2076, 2070,4001,0000,0000,0000,1610,0111 ; 10024 =110 SR_SRC,J/MOVELP ;(6) DPB DONE
; 10025 =
; 10026 ;HERE TO ABORT A STRING MOVE DUE TO TRANSLATE OR OFFSET FAILURE
; 10027
U 3542, 2650,5140,2047,0000,0020,4510,0170 ; 10028 MVABT: BR/AR,AR_-SLEN,SKP AR0 ;WHICH STRING LONGER?
; 10029 =0
U 2650, 3543,0001,0005,0000,0002,1010,0000 ; 10030 MVABT1: AC3_AR,FETCH WAIT,J/MVABT2 ;PUT AWAY DEST LEN
U 2651, 2650,5102,2004,0000,0020,0010,0000 ; 10031 AR_AR-BR,J/MVABT1 ;DEST LEN WAS GREATER
; 10032
U 3543, 2652,2500,2007,0000,0020,4210,0170 ; 10033 MVABT2: AR_SLEN COMP,SKP BR0 ;GET UNDECREMENTED SLEN
U 2652, 2653,0602,2000,0000,0020,0010,0000 ; 10034 =0 AR_AR+BR ;SRC LONGER BY (DLEN)
U 2653, 0065,3300,2000,4000,0020,1610,0000 ; 10035 MVEND: AR_AR*SFLGS,AD/OR,SR_0,J/STAC ;PUT BACK REMAINING LENGTH
; 10036
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 6
; EIS.MIC[4,30] 17:12 9-Aug-84 EIS -- STRING MOVE
; 10037 ;HERE TO BEGIN RIGHT-JUSTIFIED MOVE
; 10038
; 10039 =00
U 1450, 2654,3200,2401,0000,1020,1610,0111 ; 10040 MOVRJ: ARX_AR,AR_SRCP,SR_SRC,J/MVSKP ;SRC LONGER, SKIP OVER SOME
U 1451, 0452,0001,0000,0000,0000,1650,0214 ; 10041 SR_DSTF,CALL,J/MOVF1 ;DST LONGER, FILL IT
U 1453, 2100,4642,6600,0000,0020,1610,0111 ; 10042 =11 ARX_BRX+1,AR/ADX,SR_SRC,J/MOVST1 ;DONE FILLING
; 10043
; 10044 =0
; 10045 MVSKP: ARX_ARX-1 (AD),FE_#,#/36.,
U 2654, 1256,1711,0200,0301,0040,7032,0044 ; 10046 SIGNS DISP,SKP INTRPT,J/MVSK1
U 2655, 2654,4001,2000,5010,3020,0610,0200 ; 10047 P_FE-S,AR_AR+1,J/MVSKP
; 10048 =1110
U 1256, 2654,4001,0000,5110,3021,5110,0200 ; 10049 MVSK1: P_P-S,SKP SCAD0,J/MVSKP ;BUMP POINTER
U 1257, 1276,3711,0001,0000,0021,1032,0030 ; 10050 SRCP_AR,GEN ARX,SIGNS DISP,AR_0.M
U 1276, 3544,2500,2227,0000,0020,0010,0170 ; 10051 =1110 BRX/ARX,AR_SLEN COMP,ARX/AD,J/MVSK3 ;INTERRUPTED
U 1277, 2106,0001,0005,0000,0000,1010,0000 ; 10052 DLEN_AR,J/MVSK4 ;DONE FILLING
; 10053
U 3544, 3545,4602,6005,4000,0020,1010,0000 ; 10054 MVSK3: AC3_AR,AR_ARX*BRX,AD/A+B+1 ;DEST HAS SHORT LEN
U 3545, 3510,4001,0000,0000,0000,1610,0000 ; 10055 SR_0,J/STRPF2 ;FIX UP AC0, SERVE INTRPT
; 10056
; 10057 ;HERE FOR NO-MODIFICATION STRING MOVES
; 10058
; 10059 ;[266] Remove edit 244
; 10060 ;;[244] THIS ADDRESS MUST REMAIN SET FOR THE PROBLEM
; 10061 ;; OF THE S FIELD OF THE SOURCE POINTER BEING > 36.
; 10062 ;;
; 10063 ;.IF/MODEL.B
; 10064 ;1300: ;[244]
; 10065 ;MOVST1: SLEN_AR,BRX/ARX, ;PUT UPDATED LEN AWAY
; 10066 ; AR+ARX+MQ_0.M,CALL.M,
; 10067 ; SIGNS DISP,J/GSRC
; 10068 ;1301:
; 10069 ;MOVSTX: SKP AR0,ARX_AR,AR_0S,J/MOVST2 ;SHORT LEN EXHAUSTED
; 10070 ;1302: SR_SRC+DST,CALL,J/PUTDST
; 10071 ;1306:
; 10072 ;MVSK4: ARX_BRX+1,AR/ADX,SR_SRC,J/MOVST1
; 10073 ;.IFNOT/MODEL.B ;[244][266]
; 10074 =000
; 10075 MOVST1: SLEN_AR,BRX/ARX, ;PUT UPDATED LEN AWAY
; 10076 AR+ARX+MQ_0.M,CALL.M,
U 2100, 1633,0001,0027,0000,0021,1072,0170 ; 10077 SIGNS DISP,J/GSRC
U 2101, 1470,3441,2400,0000,1000,4510,0000 ; 10078 MOVSTX: SKP AR0,ARX_AR,AR_0S,J/MOVST2 ;SHORT LEN EXHAUSTED
U 2102, 1740,0001,0000,0000,0000,1650,0213 ; 10079 =010 SR_SRC+DST,CALL,J/PUTDST
; 10080 =110
U 2106, 2100,4642,6600,0000,0020,1610,0111 ; 10081 MVSK4: ARX_BRX+1,AR/ADX,SR_SRC,J/MOVST1
; 10082 =
; 10083 ;.ENDIF/MODEL.B ;[244][266]
; 10084 =00
; 10085 MOVST2: TEST ARX,TEST FETCH, ;SKIP IF BOTH LENGTHS =0
U 1470, 2653,3711,4005,0000,2246,1010,0203 ; 10086 AC3_AR,AR_ARX,J/MVEND ;CLEAR DEST LEN, REBUILD SRC
U 1471, 0452,0001,0000,0000,0000,1650,0212 ; 10087 SR_DST,CALL,J/MOVF1 ;SOURCE GONE, FILL OUT DST
U 1473, 3641,3200,2000,0000,0220,0010,0000 ; 10088 =11 AR_SFLGS,VMA_PC+1,J/SFET1 ;DONE FILLING
; 10089
; 10090 ;NOTE -- IT AIN'T AS EASY AS IT LOOKS TO BUM A CYCLE OUT OF THIS
; 10091 ; ROUTINE, BECAUSE AN INTERRUPT, IF ANY, HAS TO BE TAKEN AFTER THE
; 10092 ; POINTER UPDATE AND BEFORE THE LENGTH UPDATE. GOOD HUNTING!
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 6-1
; EIS.MIC[4,30] 17:12 9-Aug-84 EIS -- STRING MOVE
; 10093 =01*
U 0452, 1740,3200,2007,0000,0020,0050,0173 ; 10094 MOVF1: AR_FILL,CALL,J/PUTDST
U 0456, 2656,4640,2005,0000,0020,7010,0000 ; 10095 AR_DLEN+1,SKP INTRPT,J/MOVF2
; 10096 =0
U 2656, 1333,0001,0005,0000,0020,1032,0000 ; 10097 MOVF2: DLEN_AR,SIGNS DISP,J/MOVF3 ;DONE?
U 2657, 0040,4001,0000,0000,0000,0005,0000 ; 10098 SR DISP,J/CLEAN ;BREAK OUT FOR INTERRUPT
; 10099 =1011
U 1333, 0002,4001,0000,0000,0000,0003,0000 ; 10100 MOVF3: RETURN2 ;YES, DONE
U 1337, 0452,4001,0000,0000,0000,0010,0000 ; 10101 J/MOVF1 ;NO, DO ANOTHER
; 10102 .ENDIF/EXTEND
; 10103
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 7
; EIS.MIC[4,30] 17:12 9-Aug-84 EIS -- STRING COMPARE
; 10104 .TOC "EIS -- STRING COMPARE"
; 10105 .IF/EXTEND
; 10106
; 10107 ;HERE FOR CMPS, CHECK FOR OWGBP FIRST
; 10108 ; [310] E0+1 will be saved in FILL during OWG checking. We restore it
; 10109 ; from ARX to MQ here. This keeps us from fetching bogus fill characters.
; 10110
; 10111 .IF/OWGBP
U 3546, 3547,3200,2440,0000,1020,0010,0000 ; 10112 CMPS: BR/AR,ARX_AR,AR_AC0 ;[347]DEST LEN TO BR, GET SRC LEN
U 3547, 2660,3102,0004,0000,0020,5410,0000 ; 10113 SKP AR GT BR ;[347] Which string is longer?
U 2660, 3550,3723,0000,0000,0300,0010,0000 ; 10114 =0 VMA_MQ,J/CMPS1 ;[310] Source shorter
U 2661, 3550,4021,0000,0000,0320,0010,0000 ; 10115 VMA_MQ+1 ;[310] SRC LONGER, GET DST FILLER
U 3550, 3551,1701,6200,0000,0032,0010,0000 ; 10116 CMPS1: LOAD AR,AR_ARX-1,ARX_AR-1,TIME/3T;[347] Decrement lengths, get fill
U 3551, 2663,3200,0063,0000,0022,0010,0000 ; 10117 AR_MEM,BR/AR,BRX/ARX,J/CMPS4 ;DECREMENTED LEN'S TO BR'S
; 10118
;;10119 .IFNOT/OWGBP ;[347]
;;10120 CMPS: BR/AR,ARX_AR,FE_AR0-8,AR_AC0 ;DEST LEN TO BR, GET SRC LEN
;;10121 FE_FE OR AR0-8, ;GATHER HIGH BITS OF LEN'S
;;10122 SKP AR GT BR ;WHICH STRING LONGER?
;;10123 =0 ;[347]
;;10124 CMPS1: LOAD AR,AR_ARX-1,ARX_AR-1, ;SRC SHORTER
;;10125 GEN FE,SKP SCAD NE,J/CMPS2 ;CHECK LEN'S PURE
;;10126 VMA_VMA+1,J/CMPS1 ;SRC LONGER, GET DST FILLER
;;10127 =0
;;10128 CMPS2: AR_MEM,BR/AR,BRX/ARX,J/CMPS4 ;DECREMENTED LEN'S TO BR'S
;;10129 AR_MEM,J/NOLENS ;[275] ILLEGAL BITS IN LEN'S
; 10130 .ENDIF/OWGBP
; 10131
; 10132 ;HERE IS THE COMPARE LOOP.
; 10133 ; MQ CONTAINS THE FILL CHARACTER FOR THE SHORTER STRING,
; 10134 ; BR CONTAINS THE REMAINING DESTINATION LENGTH,
; 10135 ; BRX CONTAINS THE REMAINING SOURCE LENGTH
; 10136 =0
U 2662, 1356,4321,0700,0000,0020,0010,0000 ; 10137 CMPS3: ARX0_MQ35,J/CMPSX ;WE GOT INEQUALITY. GET SIGN
; 10138 CMPS4: MQ_AR,ARX_AR,FE_#,#/36., ;FILL TO MQ & ARX
U 2663, 1350,3242,2410,0301,1000,4310,0044 ; 10139 AR_BR,SKP ARX0 ;MORE CHARS IN SRC STRING?
; 10140 =1000 AR_SRCP,ARX_SRCP, ;READY WITH SRC POINTER
U 1350, 2714,3240,2201,0000,0040,1650,0101 ; 10141 SR_ED(S),CALL,J/GSRC1 ;GO GET SRC BYTE
U 1351, 1352,3441,4200,0000,2020,1632,0000 ; 10142 AR_ARX,ARX_0S,SR_0,SIGNS DISP ;SRC DONE. TEST DEST LEN
U 1352, 1355,3723,2007,0000,0020,1032,0166 ; 10143 =1010 T0_AR,AR_MQ,SIGNS DISP,J/CMPS5 ;SRC (OR SRC FILL) TO T0,
; 10144 =1110 ;TEST FOR END OF DEST STRING
U 1356, 0075,3711,0000,0000,0246,0010,0202 ; 10145 CMPSX: GEN ARX,CMS FETCH,J/NOP ;QUIT WITH COMPARE COND IN ARX
; 10146 =
; 10147 ;HERE TO GET DESTINATION BYTE. SRC IS IN T0, FILL CHAR IN AR
; 10148 ;HERE WITH SIGNS DISP, TO AVOID CALL ON CMPDST IF DST LEN EXHAUSTED
; 10149
; 10150 =1101
U 1355, 2666,4001,0000,0000,0000,1650,0224 ; 10151 CMPS5: SR_ED(+D),CALL,J/CMPDST ;GO FOR DESTINATION BYTE
; 10152 AR_AR*T0,AD/XOR, ;AR ZERO IF EQUAL
U 1357, 3552,3100,2307,4000,0020,0012,0166 ; 10153 ARX/MQ,MQ_MQ*2 ;FILL TO ARX, CRY TO MQ35
; 10154 BR/AR,BRX/ARX, ;EQUALITY TO BR, FILL TO BRX
U 3552, 2664,3242,2660,0000,0000,4210,0000 ; 10155 AR_BR,ARX_BRX,SKP BR0 ;LENGTHS TO AR, ARX
; 10156 =0 AC3_AR,ARX_AR,AR_ARX (AD), ;UPDATE DEST LEN IN AC3
U 2664, 1376,3711,2405,0000,1020,1032,0000 ; 10157 SIGNS DISP,J/CMPS6 ;TEST SRC LEN
U 2665, 1376,3711,2400,0000,1000,0010,0000 ; 10158 ARX_AR,AR_ARX (AD) ;DEST LEN EXHAUSTED
; 10159 =1110
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 7-1
; EIS.MIC[4,30] 17:12 9-Aug-84 EIS -- STRING COMPARE
U 1376, 3553,1701,6200,0000,0040,1010,0000 ; 10160 CMPS6: AC0_AR,AR_ARX-1,ARX_AR-1,J/CMPS7 ;UPDATE SRC LEN IN AC0
U 1377, 3553,1703,6200,0000,0040,0010,0000 ; 10161 AR_ARX-1,ARX_AR-1 ;SRC EXHAUSTED PREVIOUSLY
; 10162
; 10163 CMPS7: BR/AR,BRX/ARX, ;LENGTHS TO BR'S
U 3553, 2662,7142,6060,0000,0040,5410,0000 ; 10164 SKP BR EQ,AR/ADX,J/CMPS3 ;CHECK FOR EQUALITY
; 10165
; 10166 =0
;;10167 .IFNOT/MODEL.B
;;10168 CMPDST: AR_DSTP,ARX_DSTP,FE_#,#/36., ;GET DEST BYTE FOR COMPARE
;;10169 CALL,J/IDST ;UPDATE DEST POINTER
; 10170 .IF/MODEL.B
; 10171 CMPDST: AR_DSTP,ARX_DSTP, ;GET DEST BYTE FOR COMPARE
U 2666, 3624,3200,2206,0000,0040,0050,0144 ; 10172 CALL,J/IDST ;UPDATE DEST POINTER
; 10173 .ENDIF/MODEL.B
U 2667, 2444,0001,0000,2002,0000,7010,0000 ; 10174 SC_FE+SC,SKP INTRPT,J/LDB1 ;GET DEST BYTE
; 10175 .ENDIF/EXTEND
; 10176
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 8
; EIS.MIC[4,30] 17:12 9-Aug-84 EIS -- DECIMAL TO BINARY CONVERSION
; 10177 .TOC "EIS -- DECIMAL TO BINARY CONVERSION"
; 10178 .IF/EXTEND
; 10179 ; HERE WITH AC0 (SRC LEN) IN AR COMPLEMENTED
; 10180 ; IN THE LOOP, AC3 CONTAINS 10 (DECIMAL), BR'BRX HAS ACCUMULATED BINARY
; 10181
; 10182 .IF/OWGBP
; 10183 =0
U 2670, 1370,0001,0000,0000,0000,0050,0000 ; 10184 DBIN: CALL [DB2WD] ;CHECK FOR OWGBP
U 2671, 3554,2500,2000,0000,0020,0010,0000 ; 10185 AR_AC0 COMP ;FLAGS TO AR
U 3554, 3555,0001,0040,1421,0000,0110,0777 ; 10186 BR/AR,FE_AR0-8 COMP,AR0-8_#,#/-1 ;FORCE OUT FLAGS
;;10187 .IFNOT/OWGBP
;;10188 DBIN: BR/AR,FE_AR0-8 COMP,AR0-8_#,#/-1 ;FORCE OUT FLAGS
; 10189 .ENDIF/OWGBP
U 3555, 1435,3441,2207,0000,0020,1032,0170 ; 10190 SLEN_AR,AR_0S,ARX_0S,SIGNS DISP
U 1435, 3557,3200,0216,0000,2020,0110,0144 ; 10191 =1101 AR0-8_FE#,MQ_ARX,ARX_AC4,J/DBS1 ;BUILD SFLGS
U 1437, 2116,4001,0000,0000,0000,0033,0000 ; 10192 B DISP ;OFFSET OR TRANSLATE?
U 2116, 3556,0001,0000,0000,2000,0022,0200 ; 10193 =110 AR0-8_FE,J/DBST ;TRANSLATE, LET S FLAG SET LATER
U 2117, 3556,0001,0000,6030,2000,0110,0400 ; 10194 AR0-8_FE OR #,#/400 ;OFFSET, SET S FLAG
U 3556, 3561,3401,2200,0000,0000,1010,0000 ; 10195 DBST: SFLGS_AR,AR_0S,ARX_0S,J/DBS2 ;CLEAR BINARY
; 10196
U 3557, 3560,3721,0500,0000,0000,1010,0000 ; 10197 DBS1: SFLGS_AR,ARX_ARX*2 ;HERE WHEN SIG ALREADY ON
U 3560, 3561,3200,2005,0000,0020,0010,0000 ; 10198 AR_AC3 ;ACCUMULATED BINARY IN AR
U 3561, 3562,4041,2060,0000,0020,0510,0000 ; 10199 DBS2: BR_AR LONG,AR_1,CLR ARX
U 3562, 2126,0603,5004,0302,0020,0033,0004 ; 10200 AR_AR*10,B DISP,SC_#,#/4 ;GET CONSTANT 10 FOR COMPARE
U 2126, 3563,2301,4205,0000,2000,1010,0000 ; 10201 =110 AC3_AR,AR_ARX,ARX_1S,J/DBS3 ;PREPARE TO BUILD MASK
U 2127, 3563,2301,2005,0000,0000,1010,0000 ; 10202 AC3_AR,AR_1S ;OFFSET
U 3563, 3564,0001,4000,0000,0000,1610,0102 ; 10203 DBS3: AR_SHIFT,SR_DB
U 3564, 0670,3202,2607,0000,0000,1010,0167 ; 10204 MSK_AR,AR_BR LONG ;SAVE MASK, GET INITIAL INPUT
; 10205
; 10206 =0*0
; 10207 DBINLP: BR_AR LONG,AR_SLEN+1, ;BINARY BACK TO BR, COUNT LENGTH
U 0670, 2170,4660,2067,0000,0020,0050,0170 ; 10208 CALL,J/SRCMOD ;PICK UP A DIGIT
U 0671, 2674,3203,0000,0000,0220,5510,0000 ; 10209 SKP AR2,VMA_PC+1,J/DBXIT ;(1) DONE, TEST M FLAG
; 10210 ARX_AR,AR+MQ_0.M,GEN AR-AC3, ;(4) NORMAL, ADD IN DIGIT
U 0674, 2672,5100,0405,0000,1041,5410,0130 ; 10211 SKP CRY0,J/DBIN2 ;TEST FOR DIGIT >9
U 0675, 3567,2540,2007,0000,0020,0010,0170 ; 10212 AR_SLEN COMP,J/DBABT ;(5) ABORT
; 10213
; 10214 ;HERE TO ADD IN A DIGIT
; 10215
; 10216 =0
U 2672, 3565,3242,2660,0000,0000,0010,0000 ; 10217 DBIN2: BR_AR LONG,AR_BR LONG,J/DBIN3 ;DIGIT TO BR LONG, BINARY TO AR LONG
U 2673, 3567,2540,2007,0000,0020,0010,0170 ; 10218 AR_SLEN COMP,J/DBABT ;DIGIT >9, ABORT
; 10219
U 3565, 3566,0603,2604,0000,0020,0027,0000 ; 10220 DBIN3: AR_AR*5 LONG ;ALREADY HAVE BINARY *2
U 3566, 0670,0602,5500,0000,0020,0027,0000 ; 10221 AR_2(AR+BR) LONG,J/DBINLP ;ADD IN DIGIT, SHIFT LEFT
; 10222
; 10223 ;HERE ON ABORT
; 10224
U 3567, 3570,3300,2000,4000,0020,0010,0000 ; 10225 DBABT: AR_AR*SFLGS,AD/OR ;[230][221]FLAGS +LEN REMAINING
; 10226 AC0_AR,AR_BR LONG,SC_#,#/35., ;PUT BACK UNUSED LENGTH
U 3570, 3571,3242,2600,0302,0200,1010,0043 ; 10227 VMA_PC+1,J/STOR34 ;END WITH NO SKIP
; 10228
; 10229 ;HERE AT END
; 10230
; 10231 =0
; 10232 DBXIT: AR_BR LONG,VMA_VMA+1, ; M FLAG=0
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 8-1
; EIS.MIC[4,30] 17:12 9-Aug-84 EIS -- DECIMAL TO BINARY CONVERSION
U 2674, 3571,3242,2600,0302,0000,3610,0043 ; 10233 SC_#,#/35.,J/STOR34 ;GO FOR NEXT INSTR
; 10234 AR_-BR LONG,VMA_VMA+1, ;NEGATE
U 2675, 3571,5142,2600,0302,0020,3627,0043 ; 10235 SC_#,#/35.
U 3571, 3572,5441,2005,0000,0037,1016,0000 ; 10236 STOR34: AC3_AR,AR_SIGN,FETCH ;STORE HIGH PART
U 3572, 3573,0001,4000,0000,0000,1610,0000 ; 10237 AR_SHIFT,SR_0 ;GET LOW READY
; 10238 .IF/MODEL.B
U 3573, 3574,0001,0000,0000,0000,0010,0144 ; 10239 SEL AC4 ;PRESEL NUMBER TO FIX HARDW GLITCH
; 10240 .ENDIF/MODEL.B
U 3574, 0222,0001,0006,0000,0000,1010,0144 ; 10241 STAC4: AC4_AR,FINISH
; 10242 .ENDIF/EXTEND
; 10243
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 9
; EIS.MIC[4,30] 17:12 9-Aug-84 EIS -- BINARY TO DECIMAL CONVERSION
; 10244 .TOC "EIS -- BINARY TO DECIMAL CONVERSION"
; 10245 .IF/EXTEND
; 10246 ; AC0,AC1 = BINARY INTEGER INPUT
; 10247 ; AC3 = FLAGS, MAX LENGTH OF DECIMAL STRING
; 10248 ; AC4 = DESTINATION STRING POINTER
; 10249 ; TEMPS ARE USED AS FOLLOWS:
; 10250 ; FILL = VMA of fill character (to preserve through OWGBP check) [344]
; 10251 ; SLEN= # OF SIGNIFICANT DIGITS
; 10252 ; T1,2= 10.**(SLEN) THE LOWEST POWER OF TEN LARGER THAN BINARY
; 10253 ;
; 10254 ;FPD IS SET IF THE INSTRUCTION WAS INTERRUPTED AFTER CONVERSION OF THE
; 10255 ; BINARY INTEGER TO FRACTION FORM (AFTER STORING FILL, IF NEEDED).
; 10256
; 10257 .IF/OWGBP
; 10258 =0*** ;[347]
U 0241, 2054,0001,0007,0000,0000,1050,0173 ; 10259 BDEC: FILL_AR,CALL [EXT01] ;[344] Save fill VMA, check OWGBP
; 10260 AR_AC1,ARL/AD,SC_1,ARX+MQ_0.M,
U 0251, 2073,3240,2001,4402,0041,0034,0142 ; 10261 BYTE DISP ;GET BIN INTEGER
; 10262 =011 ARX_SHIFT,AR_AC0,SKP AD0, ;BINARY INTEGER NOW IN AR LONG
U 2073, 2676,3200,2400,0302,0020,5510,0020 ; 10263 SC_#,#/20,J/BD1 ;IS IT NEGATIVE?
;;10264 .IFNOT/OWGBP
;;10265 =011
;;10266 BDEC: ARX_SHIFT,AR_AC0,SKP AD0, ;BINARY INTEGER NOW IN AR LONG
;;10267 SC_#,#/20,J/BD1 ;IS IT NEGATIVE?
; 10268 .ENDIF/OWGBP
U 2077, 3575,3200,2405,0000,1020,1610,0010 ; 10269 BDDR1: ARX_AR,AR_AC3,SR_BDT ;RESUME WITH FRACTION IN AR LONG
; 10270 BR/AR,CLR EXP, ;SEPARATE FLAGS & LENGTH
U 3575, 3576,3200,0260,0400,2021,0010,0200 ; 10271 BRX/ARX,ARX_AC0 ;LOW FRAC TO BRX, HI TO ARX
U 3576, 3577,3002,2044,0000,0000,0010,0000 ; 10272 AR_AR*BR,AD/ANDCA,BR/AR ;JUST FLAGS TO AR, JUST LEN TO BR
U 3577, 3600,0001,4005,0000,2000,1010,0000 ; 10273 AC3_AR,AR_ARX ;GET HI FRAC TO AR
; 10274 BR/AR,VMA_PC+1, ;FRAC TO BR LONG, GET VMA READY
U 3600, 2702,5162,2040,0000,0240,5410,0000 ; 10275 AR_-BR,SKP CRY0,J/BDDR4 ;CHECK FOR MORE TO GO
; 10276
; 10277 =0
U 2676, 1530,3701,0000,0000,0040,5427,0000 ; 10278 BD1: SKP AR NE,AD LONG,J/BD2 ;TEST FOR ZERO LONG
U 2677, 1531,5163,7700,0302,0020,0027,0030 ; 10279 AR_-AR LONG,SC_#,#/30,J/BD3 ;MAKE POSITIVE, SET N&M FLAGS
; 10280 =00
; 10281 BD2: BR_AR LONG,AR_1 LONG, ;BINARY RIGHT-ALIGNED IN BR,
U 1530, 2132,4041,7660,0303,0020,0010,0024 ; 10282 SC_#,FE_#,#/20.,J/BD4 ;LOOK FOR LARGER POWER OF TEN
; 10283 BD3: BR_AR LONG,AR_AC3, ;SAVE POS BINARY, GET AC FLAGS
U 1531, 3662,3240,2065,0000,0020,0050,0000 ; 10284 CALL,J/SETFLG ; SET FLAGS AS NEEDED
U 1533, 1530,3201,7705,0000,0000,1010,0000 ; 10285 =11 AC3_AR,AR_BR*.5 LONG,J/BD2 ;SAVE NEW FLAGS, SHIFT BINARY RIGHT
; 10286
; 10287 ;HERE TO FIND THE SMALLEST POWER OF TEN LARGER THAN THE BINARY INTEGER.
; 10288 ;BINARY IS IN BR LONG, AND POSITIVE UNLESS IT WAS 1B0. IN THIS CASE THE
; 10289 ;COMPARISON WILL NEVER FIND A LARGER POWER OF TEN, BUT THE COUNT IN FE
; 10290 ;WILL RUN OUT, AND WE WILL CORRECTLY COMPUTE 22 DIGITS REQUIRED.
; 10291
; 10292 =010 ;IGNORE BR SIGN
U 2132, 3601,0603,5500,3001,0020,0027,0000 ; 10293 BD4: AR_AR*10 LONG,FE_FE-1,J/BD6 ;THIS POWER IS TOO SMALL
U 2133, 1524,4001,4007,1002,2000,1010,0171 ; 10294 SC_FE-SC-1,T1_AR,AR_ARX,J/BD7 ;THIS POWER IS BIG ENOUGH
U 2136, 2137,4001,0000,3001,0000,0010,0000 ; 10295 FE_FE-1 ;10.**21 IS TOO SMALL, USE 22
U 2137, 1524,4001,4007,1002,2000,1010,0171 ; 10296 SC_FE-SC-1,T1_AR,AR_ARX,J/BD7 ;10.**21 IS BIG ENOUGH
; 10297
U 3601, 2132,1102,0004,0000,0020,0031,0000 ; 10298 BD6: GEN AR-BR-1,DISP/DIV,J/BD4 ;COMPARE BINARY TO 10**N
; 10299
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 10
; EIS.MIC[4,30] 17:12 9-Aug-84 EIS -- BINARY TO DECIMAL CONVERSION
; 10300 ;HERE HAVING FOUND THE NUMBER OF DIGITS REQUIRED TO REPRESENT THE
; 10301 ; GIVEN INTEGER. THE ONE'S COMPLEMENT OF THE NUMBER OF DIGITS IS NOW
; 10302 ; IN SC, AND T1/T2 IS GETTING A POWER OF TEN LARGER THAN THE INPUT.
; 10303
; 10304 =0*
U 1524, 1325,2341,2007,0000,0000,1050,0172 ; 10305 BD7: T2_AR,AR_1S,CALL,J/GETSC ;SAVE (10**N), GET -# OF DIGITS
U 1526, 3602,2543,0207,0000,0000,1010,0170 ; 10306 SLEN_AR,ARX_AR*4 COMP ;-# OF SIGNIFICANT DIGITS-1
U 3602, 3603,3240,2005,0000,0020,0010,0000 ; 10307 AR_AC3 ;GET FLAGS, LENGTH
U 3603, 3604,4001,0000,2421,0000,0110,0000 ; 10308 FE_AR0-8,AR0-8_#,#/0 ;LEN IN AR, FLAGS IN FE
; 10309 AR_ARX*.25-AR-1,SKP CRY0, ;-# OF FILL CHARS -1
U 3604, 2700,1113,7000,5032,0040,5410,0400 ; 10310 SC_FE-#,#/400 ;SC0 SET IF S FLAG =0
U 2700, 3605,4003,0200,0000,0021,0010,0030 ; 10311 =0 ARX_AR+1,AR_0.M,J/BD8 ;ENOUGH SPACE. -FILL CNT TO ARX
U 2701, 0075,4001,0000,0000,0217,0010,0000 ; 10312 I FETCH,J/NOP ;OVERFLOW
; 10313 BD8: AR0-8_FE.M,SKP SC0, ;FLAGS TO AR. S FLAG =0?
U 3605, 1456,2013,0000,0000,2021,4732,0200 ; 10314 GEN ARX COMP,SIGNS DISP ; OR EXACT LENGTH?
U 1456, 3606,3240,0007,0000,0332,0010,0173 ; 10315 =1110 VMA_FM[FILL],LOAD AR,J/BDF1 ;[344] Must fill. GET FILLER
U 1457, 3607,4001,0005,0000,0000,1010,0000 ; 10316 BD9: AC3_AR,J/BDDV1 ;NO FILL. FLAGS TO AC3
; 10317
U 3606, 1620,0001,0007,0000,0000,1010,0166 ; 10318 BDF1: T0_AR ;[344] Save flags in T0
U 1620, 3003,3200,0003,0000,0022,1650,0203 ; 10319 =00 AR_MEM,SR_BDF,CALL,J/RET1 ;GET FILLER, GO WAIT FOR PARITY
U 1621, 2656,4001,4007,0000,2000,1050,0173 ; 10320 FILL_AR,AR_ARX,CALL,J/MOVF2 ;FILL AS REQUIRED
U 1623, 1457,3200,2007,0000,0020,0010,0166 ; 10321 =11 AR_T0,J/BD9 ;GET FLAGS BACK
; 10322
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 11
; EIS.MIC[4,30] 17:12 9-Aug-84 EIS -- BINARY TO DECIMAL CONVERSION
; 10323 ;SETUP FOR LONG DIVISION OF BINARY BY 10**N
; 10324 ;BR STILL HAS BINARY RIGHT ALIGNED (IE, LOW SIGN SQUEEZED OUT BY
; 10325 ; SHIFTING HIGH WORD RIGHT). BR IS POSITIVE UNLESS INPUT INTEGER WAS
; 10326 ; 1B0, IN WHICH CASE BR IS -1B1. T1,T2 HAS LARGER POWER OF TEN, UNLESS
; 10327 ; BINARY EXCEEDS 10**21, IN WHICH CASE T1,T2 CONTAINS 10**21. SINCE
; 10328 ; BINARY CANNOT BE AS LARGE AS 2 * 10**21, THE FIRST DIVIDE STEP
; 10329 ; IS GUARANTEED TO GENERATE A 1 IN THIS CASE ONLY, AND TO REDUCE THE
; 10330 ; BINARY TO LESS THAN 10**21.
; 10331
U 3607, 2146,3240,0207,0000,0020,0410,0172 ; 10332 BDDV1: ARX_T2,CLR AR ;FILL DONE. GET 10**N
; 10333 =110 AR_T1,MQ_AR, ;D'SOR SET IN AR, MQ CLR
U 2146, 2150,3200,2017,0000,1020,4250,0171 ; 10334 SKP BR0,CALL,J/BDDV2 ; CHK D'END SIGN
U 2147, 3610,3240,2400,0000,1020,1110,0100 ; 10335 ARX_AR,AR_AC0,SET FPD ;DONE, GET FULL QUO IN AR LONG
U 3610, 3611,4003,2600,0000,0020,1627,0010 ; 10336 AR_AR+1 LONG,SR_BDT,J/BDD1 ;PREVENT 9'S DISEASE
; 10337
; 10338 =000
; 10339 BDDV2: AR_BR LONG,BR_AR LONG, ;BEGIN LONG DIVISION
; 10340 SC_#,FE_#,#/34., ;STEP COUNTS FOR BOTH PARTS
U 2150, 0642,3202,2660,0303,0000,0050,0042 ; 10341 CALL,J/DDVSUB
; 10342 AR_-BR,ARX/ADX,BR_AR LONG, ;HERE IF BINARY WAS 1B0
; 10343 SC_#,FE_#,#/34., ; IT'S NOW 1B1
U 2151, 0642,5142,2660,0303,0020,0050,0042 ; 10344 CALL,J/DDVSUB
; 10345 =011 AC0_AR,AR_MQ,ARL/AD,MQ_0.M, ;HALF DONE WITH DIVISION
U 2153, 0640,3721,2000,2401,0001,1010,0102 ; 10346 FE_SC,J/DDVLP ;RESUME WITH ADD STEP
; 10347 =101 AC0_AR,AR_MQ,ARL/AD,MQ_0.M,
U 2155, 0642,3723,2000,2401,0001,1010,0102 ; 10348 FE_SC,J/DDVSUB ;RESUME WITH SUBTRACT STEP
; 10349 =
; 10350
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 12
; EIS.MIC[4,30] 17:12 9-Aug-84 EIS -- BINARY TO DECIMAL CONVERSION
; 10351 ;HERE WITH QUOTIENT OF <INPUT INTEGER>/<10**N> IN AR LONG, WITH THE
; 10352 ; BINARY POINT BETWEEN BITS 0 AND 1 OF AR. THUS, BIT 0 WILL BE SET
; 10353 ; IFF THE INPUT INTEGER WAS GREATER THAN OR EQUAL TO 10**21.
; 10354 ; SINCE THIS IS A TRUNCATED FRACTION, IT IS NOT GREATER THAN THE TRUE
; 10355 ; QUOTIENT, AND THE ERROR IS LESS THAN 2**-71. WE ADD 2**-71, TO
; 10356 ; GUARANTEE THAT OUR FRACTION IS GREATER THAN THE TRUE QUOTIENT,
; 10357 ; WITH AN ERROR NO GREATER THAN 2**-71. WE WILL THEN MULTIPLY THIS
; 10358 ; FRACTION BY 10 N TIMES, REMOVING THE INTEGER PART AT EACH STEP
; 10359 ; TO EXTRACT THE N DIGITS. SINCE N IS AT MOST 21, THIS IS A MULTIPLI-
; 10360 ; CATION BY AT MOST 10**21, SO THE ERROR IS AT MOST (2**-71)*(10**21).
; 10361 ; SINCE THIS IS LESS THAN ONE, THE ERROR DOES NOT INTRUDE INTO THE
; 10362 ; OUTPUT DIGIT STRING.
; 10363
; 10364 ;HERE IS LOOP TO EXTRACT DIGITS FROM FRACTION IN AC0,AC1
; 10365
; 10366 BDD1: BR_AR LONG,VMA_PC+1, ;START NEXT LOOP ITERATION
U 3611, 2702,4640,2067,0000,0240,5410,0170 ; 10367 AR_SLEN+1,SKP CRY0 ;ANY MORE DIGITS?
; 10368 =0 ;HERE TO RESUME AFTER INTERRUPT
; 10369 BDDR4: SLEN_AR,MQ_AR,SC_1, ;YES, SAVE LENGTH REMAINING
; 10370 AR_BR LONG, ; AND GET FRACTION
U 2702, 1475,3202,2617,4402,1020,1032,0170 ; 10371 SIGNS DISP,J/BDD2 ;CHECK FOR 1ST DIGIT OF 10**21
; 10372 AR_0S,ARX_0S,CLR FPD, ;NO, DONE. CLEAR AC0 & AC1
U 2703, 3612,3441,2200,0000,0000,3614,0000 ; 10373 VMA_VMA+1
U 3612, 1753,0001,0000,0000,0017,1010,0000 ; 10374 AC0_AR,FETCH,J/STRAC1 ;MOVE FETCH WHEN TIMING FIXED
; 10375 =1101 ;LOOK AT BR0 ONLY
U 1475, 1477,0603,7700,0302,0020,0027,0004 ; 10376 BDD2: AR_AR*1.25 LONG,SC_#,#/4 ;NEXT DIGIT TO AR0-3
U 1477, 2704,3441,2400,0000,1000,7010,0000 ; 10377 ARX_AR,AR_0S,SKP INTRPT ;READY TO SHIFT IN DIGIT
U 2704, 2706,4001,4000,0000,0000,0033,0000 ; 10378 =0 AR_SHIFT,B DISP,J/BDD3 ;STORE IT
U 2705, 3501,3242,2600,0000,0000,1610,0000 ; 10379 AR_BR LONG,SR_0,J/B2DPF ;UPDATE REGS & QUIT
; 10380
; 10381 ;HERE TO STORE DIGIT IN AR FOR BDEC
; 10382 =0
U 2706, 3613,0600,0007,0000,0332,0010,0165 ; 10383 BDD3: VMA_AR+E1,LOAD AR,J/BDD4 ;TRANSLATE: GET TABLE ENTRY
U 2707, 2164,0600,2007,4000,0020,0010,0165 ; 10384 AR_AR+E1,J/BDD7 ;OFFSET AR AND STORE IT
; 10385
U 3613, 2710,6023,0000,0000,0021,5410,0040 ; 10386 BDD4: SKP MQ EQ -1,TIME/3T,ARX_0.M ;LAST DIGIT?
; 10387 =0
U 2710, 3614,3240,0003,0000,0022,0010,0000 ; 10388 BDD5: AR_MEM,J/BDD6 ;NO, STORE RH (POS DIGIT)
U 2711, 2710,3200,0205,0000,0020,0010,0000 ; 10389 ARX_AC3,J/BDD5 ;YES, LOOK AT M FLAG
U 3614, 2164,3203,0400,0000,3021,5310,0020 ; 10390 BDD6: SKP ARX2,ARX_AR SWAP,ARL_0.M
; 10391 =100
U 2164, 1740,4001,0000,0000,0000,1650,0206 ; 10392 BDD7: SR_BDD,CALL,J/PUTDST
U 2165, 2164,0001,4000,0000,2001,0010,0020 ; 10393 AR_ARX,ARL_0.M,J/BDD7 ;M SET ON LAST DIGIT, USE LH
; 10394
; 10395 AR_BR LONG,SR_BDT, ;GET FRACTION BACK
U 2166, 1535,3242,2600,0000,0020,1632,0010 ; 10396 SIGNS DISP ;CHECK BR0 FOR INTEGER PART
; 10397 =
U 1535, 1537,0603,5500,0000,0020,0027,0000 ; 10398 =1101 AR_AR*10 LONG ;DISCARD PREVIOUS DIGIT
U 1537, 3611,4001,0000,7130,3000,0110,0037 ; 10399 P_P AND #,#/37,J/BDD1 ;CLEAR AR0, GO FOR NEXT
; 10400 .ENDIF/EXTEND
; 10401
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 13
; EIS.MIC[4,30] 17:12 9-Aug-84 EIS -- SRCMOD SUBROUTINE TO GET MODIFIED SOURCE BYTE
; 10402 .TOC "EIS -- SRCMOD SUBROUTINE TO GET MODIFIED SOURCE BYTE"
; 10403 .IF/EXTEND
; 10404
; 10405 ;SLEN = COMPLEMENT OF LENGTH
; 10406 ;MSK = MASK
; 10407 ;E1 = EFFECTIVE ADDRESS OF OPERATION WORD (SIGN EXTENDED IF OFFSET)
; 10408
; 10409 ;CALL WITH: AR_SLEN+1,CALL,J/SRCMOD
; 10410 ;RETURNS: 1 LENGTH EXHAUSTED: FLAGS IN AR
; 10411 ; 2 (EDIT ONLY) NO SIGNIFICANCE: FLAGS IN FE
; 10412 ; 3 (EDIT ONLY) SIGNIFICANCE START: BYTE IN AR, FLAGS IN FE
; 10413 ; 4 NORMAL: BYTE IN AR
; 10414 ; 5 ABORT: OUT OF RANGE OR TRANSLATE FAILURE
; 10415 ; BR, BRX, PRESERVED.
; 10416 ; B=0 IF TRANSLATE, =1 IF OFFSET MODE, =2 IF EDIT, =4 IF CVTDBT
; 10417
; 10418 ;[266] Remove edit 244
; 10419 ;;[244] THIS ADDRESS MUST REMAIN FOR THE PROBLEM OF THE
; 10420 ;; S FIELD OF THE SOURCE POINTER BEING GREATER THAT 36.
; 10421 ;
; 10422 ;.IF/MODEL.B
; 10423 ;1200: ;[244]
; 10424 ;SRCMOD: SLEN_AR,AR+ARX+MQ_0.M,CALL.M, ;PUT LENGTH AWAY, GET BYTE
; 10425 ; SIGNS DISP,J/GSRC ;CHECK FOR LENGTH EXHAUSTION
; 10426 ;1201: AR_SFLGS,SR_0,RETURN1 ;LEN =0, DONE
; 10427 ;1202: E1,TIME/2T,B DISP ;BYTE IN AR
; 10428 ;1206: AR_AR*.5 LONG,E1,J/XLATE ;LOW BIT TO ARX0, BYTE/2 TO AR LOW
; 10429 ;1207: AR_AR+E1,TIME/3T ;OFFSET, ADD OFFSET, TEST MASK
; 10430 ; TEST AR.MSK,SKP CRY0,RETURN4 ;RETURN 4 IF OK, 5 OUT OF RANGE
; 10431 ;.IFNOT/MODEL.B ;[244][266]
; 10432 =000
; 10433 SRCMOD: SLEN_AR,AR+ARX+MQ_0.M,CALL.M, ;PUT LENGTH AWAY, GET BYTE
U 2170, 1633,4001,0007,0000,0021,1072,0170 ; 10434 SIGNS DISP,J/GSRC ;CHECK FOR LENGTH EXHAUSTION
U 2171, 0001,3200,2000,0000,0020,1603,0000 ; 10435 AR_SFLGS,SR_0,RETURN1 ;LEN =0, DONE
U 2172, 2176,4001,0007,0000,0000,0033,0165 ; 10436 E1,TIME/2T,B DISP ;BYTE IN AR
U 2176, 3616,0301,7707,0000,0020,0027,0165 ; 10437 =110 AR_AR*.5 LONG,E1,J/XLATE ;LOW BIT TO ARX0, BYTE/2 TO AR LOW
U 2177, 3615,0600,2007,4000,0020,0010,0165 ; 10438 AR_AR+E1,TIME/3T ;OFFSET, ADD OFFSET, TEST MASK
U 3615, 0004,3600,0007,4000,0040,5403,0167 ; 10439 TEST AR.MSK,SKP CRY0,RETURN4 ;RETURN 4 IF OK, 5 OUT OF RANGE
; 10440 ;.ENDIF/MODEL.B ;[244][266]
; 10441
; 10442 ;HERE ON TRANSLATE-MODE OPERATIONS, WITH THE BYTE/2 IN AR, AND
; 10443 ; THE LEAST SIGNIFICANT BIT OF THE BYTE IN ARX0. PERFORM THE
; 10444 ; TABLE LOOKUP, AND OPERATE AS CONTROLLED BY THE HIGH THREE BITS
; 10445 ; OF THE TABLE ENTRY.
; 10446
U 3616, 3617,0600,0007,4000,0332,0010,0165 ; 10447 XLATE: VMA_AR+E1,LOAD AR ;GET FUNCTION FROM TABLE
; 10448
U 3617, 2712,3240,0003,0302,0022,4310,0022 ; 10449 TRNAR: AR_MEM,SKP ARX0,SC_#,#/18. ;WHICH HALF?
; 10450 =0 ARX_AR,AR0-3 DISP, ;LH, MOVE TO ARX LEFT
U 2712, 1541,3200,2400,0000,1040,0007,0000 ; 10451 AR_SFLGS,J/TRNFNC
; 10452 ARX_AR SWAP,AR18-21 DISP, ;RH, MOVE THAT TO ARX LEFT
U 2713, 1541,3240,2400,0000,3040,0007,0000 ; 10453 AR_SFLGS,J/TRNFNC
; 10454
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 14
; EIS.MIC[4,30] 17:12 9-Aug-84 EIS -- SRCMOD SUBROUTINE TO GET MODIFIED SOURCE BYTE
; 10455 ;HERE ON TRANSLATE OPERATION TO PERFORM FUNCTIONS REQUIRED BY
; 10456 ; THE 3 HIGH ORDER BITS OF THE TRANSLATE FUNCTION HALFWORD.
; 10457 ; WE HAVE DISPATCHED ON THOSE THREE BITS, WITH THE FUNCTION
; 10458 ; HALFWORD IN LH(ARX), AND THE FLAGS FROM AC0 IN AR.
; 10459
; 10460 =0001
; 10461 TRNFNC: SFLGS_AR,FE_P,AR_SHIFT, ;SAVE FLAGS, GET FCN IN AR RIGHT
U 1541, 1573,0001,4000,0101,0020,1032,0000 ; 10462 SIGNS DISP,J/TRNRET ;WAS S FLAG ALREADY SET?
U 1543, 0005,0001,0000,7131,0000,1003,0003 ; 10463 TRNABT: SFLGS_AR,FE_P AND #,#/3,RETURN5 ;ABORT
U 1545, 1541,0001,0000,7130,3000,0110,0067 ; 10464 P_P AND #,#/67,J/TRNFNC ;CLEAR M FLAG
U 1547, 1541,4001,0000,6130,3000,0110,0010 ; 10465 P_P OR #,#/10,J/TRNFNC ;SET M FLAG
U 1551, 1541,4001,0000,6130,3000,0110,0020 ; 10466 TRNSIG: P_P OR #,#/20,J/TRNFNC ;SET N FLAG
U 1553, 1543,0001,0000,6130,3000,0110,0020 ; 10467 P_P OR #,#/20,J/TRNABT ;SET N AND ABORT
U 1555, 1551,4001,0000,7130,3000,0110,0067 ; 10468 P_P AND #,#/67,J/TRNSIG ;CLEAR M, THEN SET N
U 1557, 1541,0001,0000,6130,3000,0110,0030 ; 10469 P_P OR #,#/30,J/TRNFNC ;SET N AND M
; 10470
; 10471 =1011
; 10472 TRNRET: ARX_AR*MSK,AD/AND, ;S FLAG IS 0, GET BYTE IN AR
U 1573, 2204,3600,0207,4000,0020,4433,0167 ; 10473 SKP AR18,B DISP,J/TRNSS ;IS THIS EDIT?
U 1577, 0004,3600,2007,4000,0020,0003,0167 ; 10474 AR_AR*MSK,AD/AND,RETURN4 ;RETURN NORMAL SINCE S FLAG SET
; 10475
; 10476 =100
U 2204, 0150,3240,2005,0000,0020,0033,0000 ; 10477 TRNSS: AR_DLEN,B DISP,J/TRNNS1 ;NO SIG ON MOVE OR D2B
U 2205, 3621,3240,2000,0302,0020,0010,0040 ; 10478 AR_SFLGS,SC_#,#/40,J/TRNSS1 ;SIG START, SET FLAG
U 2206, 0002,4640,0007,0000,0332,0003,0176 ; 10479 VMA_E0+1,LOAD AR,RETURN2 ;EDIT NO SIG. GET FILL
;;10480 .IFNOT/MODEL.B
;;10481 AR_DSTP,FE_#,#/36.,RETURN3 ;EDIT SIG START
; 10482 .IF/MODEL.B
U 2207, 0003,3200,2006,0301,0020,0003,0144 ; 10483 AR_DSTP,FE_#,#/144,RETURN3 ;EDIT SIG START
; 10484 .ENDIF/MODEL.B
; 10485
; 10486 =0**
U 0150, 3620,1701,2000,0000,0020,0010,0000 ; 10487 TRNNS1: AR_AR-1,J/TRNNS2 ;COMPENSATE FOR IGNORING SRC
U 0154, 2170,4640,2007,0000,0020,0010,0170 ; 10488 AR_SLEN+1,J/SRCMOD ;D2B HAS NO DEST LENGTH
U 3620, 1613,4001,0005,0000,0020,1032,0000 ; 10489 TRNNS2: DLEN_AR,SIGNS DISP
U 1613, 2170,3240,2007,0000,0020,0010,0170 ; 10490 =1011 AR_SLEN,J/SRCMOD ;SLEN = DST LEN, DON'T CHANGE IT
U 1617, 2170,4640,2007,0000,0020,0010,0170 ; 10491 AR_SLEN+1,J/SRCMOD ;SLEN REFLECTS SRC LENGTH
; 10492 ; COUNT DOWN FOR BYTE SKIPPED
U 3621, 3622,0001,0000,6100,3001,0010,0200 ; 10493 TRNSS1: P_P OR SC
U 3622, 0004,0001,4000,0000,2000,1003,0000 ; 10494 SFLGS_AR,AR_ARX,RETURN4 ;RETURN WITH SIG SET
; 10495
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 15
; EIS.MIC[4,30] 17:12 9-Aug-84 EIS -- SRCMOD SUBROUTINE TO GET MODIFIED SOURCE BYTE
; 10496 ;SUBROUTINE TO GET BYTE FROM SOURCE STRING
; 10497 ; CALL GSRC WITH SIGNS DISP TO CHECK FOR LENGTH EXHAUSTION
; 10498 ; [TIME = 17 + 3(BP OVERFLOW)]
; 10499
; 10500 =1011
U 1633, 0001,3240,2005,0000,0020,0003,0000 ; 10501 GSRC: AR_DLEN,RETURN1 ;LEN RAN OUT
U 1637, 2714,3200,2201,0301,0040,0010,0044 ; 10502 GETSRC: AR_SRCP,ARX_SRCP,FE_#,#/36.
; 10503 ;[266] Remove edit 244
; 10504 ;.IF/MODEL.B
; 10505 ; GEN FE-S,SKP SCAD0 ;[244] IS S > 36 ?
; 10506 ;=0 J/GSRC1 ;[244] NO, GO BELOW
; 10507 ; DISP/RETURN,J/501 ;[244] YES, TRICKY WAY TO
; 10508 ; ;[244] GET OUT
; 10509 ;;[244] THIS IS DONE THIS WAY SO THAT WE CAN TAKE THE ERROR
; 10510 ;; RETURN OF THE EXTEND INSTRUCTION. THE TWO PLACES THAT
; 10511 ;; CALL GSRC ARE SET SO THAT A RETURN WITH J FIELD OF 500
; 10512 ;; WILL GO TO HERE.
; 10513 ;1701: RETURN5 ;[244] ERROR RETURN
; 10514 ;.ENDIF/MODEL.B ;[244][266]
; 10515 =0
; 10516 GSRC1: P_P-S,SC/SCAD,CALL.M, ;UPDATE POINTER
U 2714, 2214,0001,0000,5112,3021,0074,0200 ; 10517 BYTE DISP,J/GSRC2 ;TEST FOR WORD OVERFLOW
U 2715, 2444,0001,0000,2002,0000,7010,0000 ; 10518 SC_FE+SC,SKP INTRPT,J/LDB1 ;GET BYTE & RETURN TO CALLER
;;10519 .IFNOT/XADDR
;;10520 =110
; 10521 .IF/XADDR
; 10522 =100
; 10523 .ENDIF/XADDR
; 10524 GSRC2: SRCP_AR,ARX_AR,FE_S,VMA_PC, ;STORE POINTER,
U 2214, 0534,2341,0401,2411,1100,1036,0000 ; 10525 EA MOD DISP,J/BFETCH ; GO EVALUATE THE ADDRESS
U 2215, 2214,4003,2000,5012,3020,0610,0200 ; 10526 GSRC3: AR_AR+1,P_FE-S,SC/SCAD,J/GSRC2
; 10527 .IF/XADDR
U 2216, 1732,3240,0204,0000,0020,5010,0000 ; 10528 ARX_SRCP2,SKP PC SEC0,J/GSRC4 ;GET ADDR PART OF POINTER
U 2217, 2716,3240,2404,0000,1020,5010,0000 ; 10529 ARX_AR,AR_SRCP2,SKP PC SEC0
U 2716, 2720,4001,2000,0101,0020,4516,0000 ; 10530 =0 FE_P,AR_AR+1-AR0,SKP AR0,J/GSRC5
U 2717, 2215,0001,4000,0000,2000,0010,0000 ; 10531 AR_ARX,J/GSRC3 ;OOPS, SEC 0 IS COMPATABLE
; 10532 =0
U 2720, 1730,4001,0000,0000,3000,0022,0200 ; 10533 GSRC5: P_FE,J/GSRC6 ;EFIW, INCR ALL BUT 0-5
U 2721, 1730,4003,2000,0000,0020,0011,0000 ; 10534 AR_AR+1,INH CRY18 ;IFIW, INCR RIGHT HALF ONLY
; 10535 =00
; 10536 GSRC6: SRCP2_AR,AR_ARX,ARX_AR (AD), ;SAVE ADDR PART
U 1730, 3623,3703,4204,0000,2000,1050,0000 ; 10537 CALL,J/RESETP ;GO SET P TO 36-S
; 10538 =10
U 1732, 2442,0001,0001,2411,0100,1010,0000 ; 10539 GSRC4: SRCP_AR,FE_S,VMA_PC,J/BYTEI ;GO EVALUATE LONG POINTER
U 1733, 0534,2301,0401,2411,1000,1036,0000 ; 10540 SRCP_AR,ARX_AR,FE_S,EA MOD DISP,J/BFETCH
; 10541
; 10542 ;SUBROUTINE TO LOAD P FROM 36-S
; 10543
U 3623, 0002,0001,0000,5312,3000,0103,0044 ; 10544 RESETP: P_#-S,#/36.,SC/SCAD,RETURN2 ;START P BACK AT LEFT EDGE
; 10545 .ENDIF/XADDR
; 10546
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 16
; EIS.MIC[4,30] 17:12 9-Aug-84 EIS -- SRCMOD SUBROUTINE TO GET MODIFIED SOURCE BYTE
; 10547 ;SUBR TO STORE AR IN DEST STRING
; 10548 ; [TIME = 24 + 3(BP OVERFLOW)]
; 10549
; 10550 =00
;;10551 .IFNOT/MODEL.B
;;10552 PUTDST: MQ_AR,AR_DSTP,ARX_DSTP,
;;10553 FE_#,#/36.,CALL,J/IDST
; 10554 .IF/MODEL.B
U 1740, 3624,3200,2216,0000,1040,0050,0144 ; 10555 PUTDST: MQ_AR,AR_DSTP,ARX_DSTP,CALL,J/IDST
; 10556 .ENDIF/MODEL.B
; 10557 AR_MQ,SC_#-SC,#/36.,SKP SCAD0,
U 1741, 2452,3723,2000,5302,0020,5150,0044 ; 10558 CALL,J/DPB1
U 1743, 0006,4001,0003,0000,0002,0003,0000 ; 10559 =11 MEM_AR,RETURN6
; 10560
; 10561 ;SUBROUTINES TO UPDATE STRING POINTERS
; 10562
; 10563 IDST: P_P-S,SC/SCAD,BYTE DISP, ;TEST FOR WORD OVERFLOW
U 3624, 2224,4001,0000,5112,3021,0034,0200 ; 10564 J/IDST2
;;10565 .IFNOT/XADDR
;;10566 .IFNOT/MODEL.B
;;10567 =110
;;10568 IDST2: DSTP_AR,ARX_AR,FE_S, ;STORE POINTER,
;;10569 EA MOD DISP,J/BFETCH ; GO GET THE WORD ADDRESSED
;;10570 AR_AR+1,P_FE-S,SC/SCAD,J/IDST2
;;10571 .IF/MODEL.B
;;10572 =110
;;10573 IDST2: SEL DSTP,J/IDST2B ;PRESEL # TO FIX HARDW GLITCH
;;10574 IDST2A: FE_#,#/36. ;COULDN'T LOAD FE EARLIER
;;10575 AR_AR+1,P_FE-S,SC/SCAD,J/IDST2
;;10576 IDST2B: DSTP_AR,ARX_AR,FE_S,VMA_PC, ;STORE POINTER,
;;10577 EA MOD DISP,J/BFETCH ; GO GET THE WORD ADDRESSED
;;10578 .ENDIF/MODEL.B
; 10579 .IF/XADDR
; 10580 =100
U 2224, 3630,0001,0006,0000,0000,0010,0144 ; 10581 IDST2: DSTP,J/IDST2B ;PRESEL # TO FIX HARDW GLITCH
U 2225, 3625,4001,2000,0000,0020,0011,0000 ; 10582 AR_AR+1,INH CRY18,J/IDST3
U 2226, 1762,3200,0206,0000,0020,5010,0145 ; 10583 ARX_DSTP2,SKP PC SEC0,J/IDST4 ;GET ADDR PART OF POINTER
U 2227, 2722,3240,2406,0000,1020,5010,0145 ; 10584 ARX_AR,AR_DSTP2,SKP PC SEC0
U 2722, 2724,4003,2000,0101,0020,4516,0000 ; 10585 =0 FE_P,AR_AR+1-AR0,SKP AR0,J/IDST5
U 2723, 3625,4013,2000,0000,0020,0011,0000 ; 10586 AR_ARX+1 (AD),INH CRY18
U 3625, 2224,0001,0000,5312,3000,0110,0044 ; 10587 IDST3: P_#-S,#/36.,SC/SCAD,J/IDST2 ;GO STORE SHORT POINTER AWAY
; 10588 =0
U 2724, 1760,0001,0000,0000,3000,0110,0145 ; 10589 IDST5: P_FE.C,SEL DSTP2,J/IDST6 ;PRESEL # TO FIX HARDW GLITCH
U 2725, 1760,4003,2000,0000,0020,0011,0145 ; 10590 AR_AR+1,INH CRY18,SEL DSTP2
; 10591 =00
; 10592 IDST6: DSTP2_AR,AR_ARX,ARX_AR (AD), ;INCR ADDR PART
U 1760, 3623,3701,4206,0000,2000,1050,0145 ; 10593 CALL,J/RESETP ;GET P BACK TO 36-S
; 10594 =10
U 1762, 3626,4001,0000,0000,0000,0010,0144 ; 10595 IDST4: SEL DSTP,J/IDST7 ;PRESEL # TO PREVENT HARDW GLITCH
U 1763, 3627,0001,0000,0000,0000,0010,0144 ; 10596 SEL DSTP,J/IDST8 ;PRESEL # TO PREVENT HARDW GLITCH
; 10597
U 3626, 2442,4001,0006,2411,0000,1010,0144 ; 10598 IDST7: DSTP_AR,FE_S,J/BYTEI
; 10599 IDST8: DSTP_AR,ARX_AR,FE_S,VMA_PC, ;[300]
U 3627, 0534,2341,0406,2411,1100,1036,0144 ; 10600 EA MOD DISP,J/BFETCH
; 10601
; 10602 IDST2B: DSTP_AR,ARX_AR,FE_S,VMA_PC, ;[300]STORE POINTER,
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 16-1
; EIS.MIC[4,30] 17:12 9-Aug-84 EIS -- SRCMOD SUBROUTINE TO GET MODIFIED SOURCE BYTE
U 3630, 0534,2341,0406,2411,1100,1036,0144 ; 10603 EA MOD DISP,J/BFETCH ; GO GET THE WORD ADDRESSED
; 10604 .ENDIF/XADDR
; 10605 .ENDIF/EXTEND
; 10606
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 17
; EIS.MIC[4,30] 17:12 9-Aug-84 EIS -- EDIT FUNCTION
; 10607 .TOC "EIS -- EDIT FUNCTION"
; 10608 .IF/EXTEND
; 10609 ; HERE WITH E0, E1 SETUP, 0 IN AR, -1 IN ARX, AND 15 IN SC
; 10610
; 10611 .IF/OWGBP
; 10612 =0*** ;[347]
U 0246, 2050,4001,0000,0000,0000,0050,0000 ; 10613 EDIT: CALL [EXT2WD] ;CHECK FOR OWGBP
U 0256, 3631,2301,0200,0302,0000,0410,0017 ; 10614 CLR AR,ARX_1S,SC_#,#/15. ;SETUP FOR SHIFT
U 3631, 3632,3200,4200,0000,0020,1610,0000 ; 10615 AR_SHIFT,ARX_AC0,SR_ED(PAT) ;MASK TO AR, FLAGS ETC TO ARX
;;10616 .IFNOT/OWGBP
;;10617 EDIT: AR_SHIFT,ARX_AC0,SR_ED(PAT) ;MASK TO AR, FLAGS ETC TO ARX
; 10618 .ENDIF/OWGBP
;;10619 .IFNOT/MODEL.B
;;10620 =1*0 MSK_AR,AR_ARX (AD), ;SAVE MASK, GET FLAGS IN AR
;;10621 VMA_ARX,LOAD AR, ;GET FIRST PATTERN OPERATOR
;;10622 CALL,J/TRNABT ;GET PBN INTO FE
; 10623 .IF/MODEL.B
U 3632, 3633,4001,0007,0000,0000,1010,0167 ; 10624 MSK_AR ;SAVE MASK FOR TRAN FUNC
U 3633, 2726,0001,4000,0000,2001,5010,0020 ; 10625 AR_ARX,ARL_0.M,SKP PC SEC0 ;DO WE ALLOW SECTION #?
U 2726, 3634,3711,4000,0000,2312,0010,0000 ; 10626 =0 VMA_ARX,LOAD AR,AR_ARX,J/EDIT1 ;YES. PROVIDE IT
U 2727, 3634,3703,4000,0000,2312,0010,0000 ; 10627 VMA_AR,LOAD AR,AR_ARX ;NO, GIVE 0
U 3634, 3635,0001,0000,7131,0000,0010,0003 ; 10628 EDIT1: FE_P AND #,#/3 ;GET PBN IN FE
; 10629 .ENDIF/MODEL.B
; 10630 EDITLP: SC_# AND AR0-8,#/30, ;PBN*8 IN SC
U 3635, 3636,4001,0400,7322,1000,1010,0030 ; 10631 SFLGS_AR,ARX_AR ;UPDATED AC NOW IN AC AND ARX
U 3636, 3637,3200,0003,2002,0022,0010,0000 ; 10632 AR_MEM,SC_FE+SC ;PATTERN IN AR, PBN*9 IN SC
U 3637, 1641,4001,4000,0302,0020,0007,0005 ; 10633 AR_SHIFT,SH DISP,SC_#,#/5 ;PATTERN BYTE TO AR0-8,
; 10634 =0001 ; DISP ON HIGH 3 BITS
; 10635 EDDISP: GEN #+AR0-8,#/-5,
U 1641, 2730,4001,0000,2320,0020,5110,0773 ; 10636 SKP SCAD0,J/EDOPR ;(0XX) OPERATE GROUP
U 1643, 2000,3243,5000,0000,0000,4310,0000 ; 10637 AR_AR*8,SKP ARX0,J/EDMSG ;(1XX) MESSAGE
U 1645, 2734,0001,0000,0000,0000,0010,0000 ; 10638 J/EDNOP ;(2XX) UNDEFINED
U 1647, 2734,0001,0000,0000,0000,0010,0000 ; 10639 J/EDNOP ;(3XX) UNDEFINED
U 1651, 2734,0001,0000,0000,0000,0010,0000 ; 10640 J/EDNOP ;(4XX) UNDEFINED
; 10641 MQ_ARX,ARX_ARX*4,
U 1653, 3642,3243,0610,4002,2000,0010,0000 ; 10642 SC_FE+1,J/EDSKPT ;(5XX) SKIP IF MINUS
; 10643 MQ_ARX,ARX_ARX*2,
U 1655, 3642,3701,0510,4002,2000,0010,0000 ; 10644 SC_FE+1,J/EDSKPT ;(6XX) SKIP IF NON-ZERO
U 1657, 2735,3243,5000,4002,0000,0010,0000 ; 10645 AR_AR*8,SC_FE+1,J/EDSKP ;(7XX) SKIP ALWAYS
; 10646
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 18
; EIS.MIC[4,30] 17:12 9-Aug-84 EIS -- EDIT FUNCTION
; 10647 ;HERE TO DECODE OPERATE GROUP
; 10648 =0
U 2730, 2734,0001,0000,0000,0000,0010,0000 ; 10649 EDOPR: J/EDNOP ;OPR .GE. 005 UNDEFINED
U 2731, 2230,0001,0000,0000,0020,0007,0000 ; 10650 SH DISP,J/OPDISP ;(00X), DISP ON LOW 3 BITS
; 10651 =000
; 10652 OPDISP: AR_ARX,SC_#,#/-4, ;(000) STOP
U 2230, 3640,4001,4000,0302,2200,0010,0774 ; 10653 VMA_PC+1,J/EDSTOP
U 2231, 1534,0001,0000,0000,0000,1610,0101 ; 10654 SR_ED(S),J/EDSEL ;(001) SELECT
U 2232, 1770,3200,2006,0000,0020,4310,0144 ; 10655 AR_DSTP,SKP ARX0,J/EDSSIG ;(002) START SIGNIFICANCE
U 2233, 3646,0001,4000,0000,2000,0010,0000 ; 10656 AR_ARX,J/EDFLDS ;(003) FIELD SEPARATOR
;;10657 .IFNOT/MODEL.B
;;10658 VMA_AC3,LOAD ARX, ;(004) EXCH MARK AND DEST
;;10659 MQ_ARX,J/EDEXMD
; 10660 .IF/MODEL.B
;;10661 .IFNOT/XADDR
;;10662 AR_DSTP,MQ_ARX,J/EDEXMD ;(004) EXMD
; 10663 .IF/XADDR
; 10664 AR_DSTP,ARX/AD,MQ_ARX, ;(004) EXMD
U 2234, 2746,3200,2216,0000,2020,5010,0144 ; 10665 SKP PC SEC0,J/EDEX0
; 10666 .ENDIF/XADDR
; 10667 .ENDIF/MODEL.B
; 10668 =
; 10669 ;HERE TO TERMINATE EDIT INSTRUCTION
; 10670 ; SC HAS -4, FE HAS CURRENT PBN, VMA HAS PC IF ABORT, PC+1 IF DONE
; 10671
U 3640, 2732,4001,0000,5031,0020,5110,0003 ; 10672 EDSTOP: FE_FE-#,#/3,SKP SCAD0
; 10673 =0 AR_AR+1,INH CRY18,
U 2732, 3641,4003,2000,7100,3021,0011,0200 ; 10674 P_P AND SC,J/SFET1
U 2733, 3641,0001,0000,4100,3000,0110,0000 ; 10675 P_P+1
U 3641, 0074,4001,0000,0000,0017,3610,0000 ; 10676 SFET1: FETCH+1,J/STORAC
; 10677
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 19
; EIS.MIC[4,30] 17:12 9-Aug-84 EIS -- EDIT FUNCTION
; 10678 ;HERE FOR SKPM & SKPN, WITH APPROPRIATE BIT IN ARX0
; 10679
U 3642, 2734,3243,5300,0000,0000,4310,0000 ; 10680 EDSKPT: AR_AR*8,SKP ARX0,ARX/MQ ;SKIP DISTANCE TO AR0-5
; 10681
; 10682 ;HERE AT END OF OPERATION TO UPDATE PBN
; 10683 =0
; 10684 EDNOP: FE_FE-#,#/3,SKP SCAD0, ;END OF PATTERN WORD?
U 2734, 2736,0001,4000,5031,2020,5110,0003 ; 10685 AR_ARX,J/EDNXT1
U 2735, 2734,4001,0000,2101,0000,0010,0000 ; 10686 EDSKP: FE_P+SC,J/EDNOP ;ADD SKIP DISTANCE
; 10687 =0
;;10688 .IFNOT/XADDR
;;10689 EDNXT1: AR_AR+1,INH CRY18, ;BUMP TO NEXT WORD
;;10690 FE_FE-#,#/4, ;REDUCE PBN
;;10691 SKP SCAD0,J/EDNXT1
;;10692 SR_ED(PAT)
;;10693 FE_FE+#,#/4 ;RESTORE PBN POS, INCR IT
;;10694 SC_P AND #,#/74,VMA_AR,LOAD AR, ;FLAGS & EDIT BIT TO SC, GET PATTERN
;;10695 SKP INTRPT,J/EDNXT3
; 10696 .IF/XADDR
U 2736, 2742,4001,0000,0000,0000,5010,0000 ; 10697 EDNXT1: SKP PC SEC0,J/EDNXT2
U 2737, 3643,4001,0000,0000,0000,1610,0000 ; 10698 SR_ED(PAT)
U 3643, 2740,4001,0000,2031,0000,5010,0004 ; 10699 FE_FE+#,#/4,SKP PC SEC0 ;RESTORE PBN POS, INCR IT
; 10700 =0 SC_P AND #,#/74,VMA_AR,LOAD AR, ;FLAGS & EDIT BIT TO SC,
U 2740, 2744,3701,0000,7132,0312,7010,0074 ; 10701 SKP INTRPT,J/EDNXT3 ; GET PATTERN
U 2741, 3644,0001,0000,7132,0000,0010,0074 ; 10702 SC_P AND #,#/74 ;IN SEC0, MUST NOT LOAD FULL SEC
U 3644, 3645,0001,0400,0000,1001,0010,0020 ; 10703 ARX_AR,ARL_0.M ;CLEAR SEC #
; 10704 VMA_AR,LOAD AR,AR_ARX, ;GET PATTERN
U 3645, 2744,3703,4000,0000,2312,7010,0000 ; 10705 SKP INTRPT,J/EDNXT3
; 10706
; 10707 =0
; 10708 EDNXT2: AR_AR+1,FE_FE-#,#/4, ;REDUCE PBN
U 2742, 2736,4003,2000,5031,0020,5110,0004 ; 10709 SKP SCAD0,J/EDNXT1
; 10710 AR_AR+1,INH CRY18, ;BUMP TO NEXT WORD
; 10711 FE_FE-#,#/4, ;REDUCE PBN
U 2743, 2736,4001,2000,5031,0020,5111,0004 ; 10712 SKP SCAD0,J/EDNXT1
; 10713 .ENDIF/XADDR
; 10714 =0
U 2744, 3635,4001,0000,6000,3000,0022,0200 ; 10715 EDNXT3: P_FE OR SC,J/EDITLP ;SET NEW PBN, GO DO NEXT PATTERN
U 2745, 3464,4001,0000,6000,3000,0022,0200 ; 10716 P_FE OR SC,J/PGFAC0 ;GO RESTORE THINGS AND TAKE
; 10717 ; THE INTERUPT
; 10718
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 20
; EIS.MIC[4,30] 17:12 9-Aug-84 EIS -- EDIT FUNCTION
; 10719 ;HERE FOR FIELD SEPARATOR (CLEAR FLAGS IN AC 0-2)
; 10720
U 3646, 1773,0001,0000,7130,3000,0110,0007 ; 10721 EDFLDS: P_P AND #,#/7,J/EDSEND ;EASY ENOUGH
; 10722
; 10723 ;HERE FOR SIG START
; 10724
; 10725 =00
;;10726 .IFNOT/XADDR
;;10727 EDSSIG: VMA_AC3,STORE,CALL,J/EDFLT1 ;SAVE MARK, GET FLOAT
; 10728 .IF/XADDR
; 10729 EDSSIG: ARX_AR,VMA_AC3,AR/AD,ARL_0.M,
; 10730 BYTE DISP,SCADA EN/0S,SCAD/A,
U 1770, 2274,3240,2405,0400,1341,5074,0020 ; 10731 CALL,SKP PC SEC0,J/EDFLT
; 10732 .ENDIF/XADDR
; 10733 FE_FE-#,#/3,SKP SCAD0, ;S FLAG ALREADY SET, NOP
U 1771, 2736,0001,4000,5031,2020,5110,0003 ; 10734 AR_ARX,J/EDNXT1
; 10735 =11
U 1773, 2734,4001,0400,7131,1000,0010,0003 ; 10736 EDSEND: FE_P AND #,#/3,ARX_AR,J/EDNOP ;READY TO DO NEXT OP
; 10737
; 10738 ;HERE FOR MESSAGE CHAR
; 10739
; 10740 =00
U 2000, 2262,4660,0007,0000,0332,0010,0176 ; 10741 EDMSG: VMA_E0+1,LOAD AR,J/EDSFIL ;NO SIG, PUT FILLER
U 2001, 1325,3401,2000,0102,0000,0050,0000 ; 10742 SC_P,AR_0S,CALL,J/GETSC ;GET MESSAGE SELECT IN AR
U 2003, 2267,4600,0007,0000,0332,0010,0176 ; 10743 =11 VMA_AR+E0+1,LOAD AR,J/EDMPUT ;STORE MESSAGE
; 10744
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 21
; EIS.MIC[4,30] 17:12 9-Aug-84 EIS -- EDIT FUNCTION
; 10745 ;HERE TO EXCHANGE MARK AND DESTINATION POINTERS
; 10746
;;10747 .IFNOT/MODEL.B ;EASY CASE
;;10748 EDEXMD: AR_DSTP ;READY TO STORE DEST PTR
;;10749 FIN XFER,STORE ;WAIT FOR MARK, STORE DSTP
;;10750 MEM_AR,AR_ARX ;READY TO UPDATE DSTP
;;10751 DSTP_AR,ARX/MQ,J/EDNOP ;DONE, GET NEXT OPR
; 10752 .IF/MODEL.B
; 10753 .IF/XADDR
; 10754 =0
; 10755 EDEX0: VMA_AC3,LOAD AR (WR TST), ;GET MARK POINTER
U 2746, 3651,3240,0065,0000,0331,0010,0440 ; 10756 BR/AR,BRX/ARX,J/EDEX2 ;DSTP IN BR & BRX,
; 10757 .ENDIF/XADDR
U 2747, 3647,3200,2045,0000,0021,0010,0020 ; 10758 EDEXMD: BR/AR,AR_AC3,ARL_0.M
U 3647, 3650,3701,0000,0000,0311,0010,0440 ; 10759 VMA_AR,LOAD AR (WR TST) ;GET MARK FROM SECT 0
U 3650, 2105,3240,0003,0000,0022,0010,0000 ; 10760 AR_MEM
;;10761 .IFNOT/XADDR
;;10762 BR/AR,AR_BR,STORE ;STORE DEST POINTER
;;10763 MEM_AR,AR_BR,SEL DSTP ;DONE. GET MARK AGAIN
;;10764 ;PRESELECT # TO FIX HARDWARE GLITCH
;;10765 DSTP_AR,ARX/MQ,J/EDNOP ;MARK BECOMES DEST. GET NEXT PAT
; 10766 .IF/XADDR
; 10767 =101
U 2105, 3654,3202,2040,0000,0016,0010,0000 ; 10768 EDDSNG: BR/AR,AR_BR,STORE,J/EDEXX ;NEITHER POINTER IS DOUBLE
U 2107, 1002,4001,0000,0000,0000,0010,0000 ; 10769 J/UUO ;SHORT DSTP, LONG MARK ILLEGAL
; 10770 ;;;FLUSH WHEN SURE THIS IS RIGHT
; 10771 ; BR/AR,AR_BR, ;DSTP TO AR, MARK TO BR
; 10772 ; VMA_VMA+1,LOAD ARX ;GET MARK2
; 10773 ; FIN XFER,VMA_VMA-1,STORE,J/EDEXX;NOW STORE DSTP AS NEW MARK
; 10774
U 3651, 2235,3240,0003,0000,0042,0034,0000 ; 10775 EDEX2: AR_MEM,BYTE DISP ;WAIT FOR MARK, TEST DESTP
U 2235, 2105,0001,0000,0000,0020,0034,0000 ; 10776 =101 BYTE DISP,J/EDDSNG ;NO, CHECK MARK
U 2237, 2245,3200,0206,0000,0040,0034,0145 ; 10777 ARX_DSTP2,BYTE DISP ;YES, CHECK MARK
U 2245, 1002,4001,0000,0000,0000,0010,0000 ; 10778 =101 J/UUO ;LONG DSTP SHORT MARK ABORT
; 10779 ;;;FLUSH WHEN SURE THE UUO IS RIGHT
; 10780 ; BR/AR,AR_ARX, ;MARK TO BR, DSTP2 TO AR
; 10781 ; VMA_VMA+1,STORE,J/EDEXM4 ; STORE DSTP2
; 10782 BR/AR,AR_ARX,
U 2247, 3652,4001,4040,0000,2011,3610,0240 ; 10783 VMA_VMA+1,LOAD ARX (WR TST) ;GET MARK2
U 3652, 3653,3240,0003,0000,0036,0010,0000 ; 10784 FIN XFER,STORE ;PUT BACK DSTP2
; 10785 ;EDEXM4:
; 10786 FIN STORE,AR_BRX, ;GET DSTP FROM BRX
U 3653, 3654,3202,6003,0000,0016,3510,0000 ; 10787 VMA_VMA-1,STORE ;PUT THAT DOWN
; 10788 EDEXX: MEM_AR,AR_BR,SEL DSTP, ;PRESELECT # TO FIX HARDWARE GLITCH
U 3654, 2750,3242,2003,0000,0002,5010,0144 ; 10789 SKP PC SEC0 ;GET MARK FOR NEW DSTP
U 2750, 2255,0001,4006,0000,2020,1034,0144 ; 10790 =0 DSTP_AR,AR_ARX,BYTE DISP,J/EDEX1
U 2751, 2255,4001,0006,0000,0000,1010,0144 ; 10791 DSTP_AR
; 10792 =101
; 10793 EDEX1: FE_FE-#,#/3,SKP SCAD0,
U 2255, 2736,3723,2000,5031,0020,5110,0003 ; 10794 AR_MQ,J/EDNXT1
U 2257, 3655,4001,0000,0000,0000,0010,0145 ; 10795 SEL DSTP2 ;PRESELECT # TO FIX HARDWARE GLITCH
U 3655, 2255,0001,0006,0000,0000,1010,0145 ; 10796 DSTP2_AR,J/EDEX1 ;PUT OLD MARK2 AS DSTP2
; 10797 .ENDIF/XADDR
; 10798 .ENDIF/MODEL.B
; 10799
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 22
; EIS.MIC[4,30] 17:12 9-Aug-84 EIS -- EDIT FUNCTION
; 10800 ;HERE FOR SELECT
; 10801
; 10802 =0*
; 10803 EDSEL: AR_SRCP,ARX_SRCP,FE_#,#/36.,
U 1534, 2714,3240,2201,0301,0040,0050,0044 ; 10804 CALL,J/GSRC1 ;GO GET SRC BYTE
U 1536, 2260,0303,7707,0000,0020,0027,0165 ; 10805 AR_AR*.5 LONG,E1 ;GOT IT, DIVIDE BY 2
U 2260, 3617,0600,0007,0000,0332,0050,0165 ; 10806 =000 VMA_AR+E1,LOAD AR,CALL,J/TRNAR ;GO TRANSLATE BY HALFWORDS
; 10807 =010
U 2262, 3656,3240,0003,0000,0022,0010,0000 ; 10808 EDSFIL: AR_MEM,J/EDSF1 ;(2) NO SIGNIFICANCE, STORE FILL
U 2263, 2060,4001,0020,5110,0020,5110,0000 ; 10809 GEN P-S,SKP SCAD0,BRX/ARX,J/EDSFLT ;(3) SIG START, DO FLOAT CHAR
U 2264, 1740,4001,0000,0000,0000,1650,0224 ; 10810 EDSPUT: SR_ED(+D),CALL,J/PUTDST ;(4) NORMAL, STORE AT DST
U 2265, 3640,4001,0000,0302,0100,0010,0774 ; 10811 VMA/PC,SC_#,#/-4,J/EDSTOP ;(5) ABORT
U 2266, 1773,3200,2000,0000,0020,0010,0000 ; 10812 EDFPUT: AR_SFLGS,J/EDSEND ;(6) BUMP PBN AND GO TO NEXT
U 2267, 2264,3200,0003,0000,0022,0010,0000 ; 10813 EDMPUT: AR_MEM,J/EDSPUT ;FILL OR MSG IN AR, STORE IT
; 10814
; 10815
; 10816 ;HERE WHEN TIME TO STORE FILL CHAR
; 10817
U 3656, 2266,3701,0000,0000,0040,5410,0000 ; 10818 EDSF1: SKP AR NE,J/EDFPUT ;IS THERE ONE?
; 10819
; 10820 ;HERE WHEN SELECT STARTS SIGNIFICANCE
; 10821
; 10822 =00
;;10823 .IFNOT/MODEL.B
;;10824 EDSFLT: VMA_AC3,STORE,CALL,J/EDFLT ;STORE DEST AT MARK ADDR
; 10825 .IF/MODEL.B
;;10826 .IFNOT/XADDR
;;10827 EDSFLT: ARX_AR,AR_AC3,ARL_0.M,CALL,J/EDFLT
; 10828 .IF/XADDR
; 10829 EDSFLT: ARX_AR,VMA_AC3,AR/AD,ARL_0.M,
; 10830 BYTE DISP,SCADA EN/0S,SCAD/A,
U 2060, 2274,3240,2405,0400,1341,5074,0020 ; 10831 CALL,SKP PC SEC0,J/EDFLT
; 10832 .ENDIF/XADDR
; 10833 .ENDIF/MODEL.B
U 2061, 2060,4003,2000,0000,3020,0022,0200 ; 10834 P_FE,AR_AR+1,J/EDSFLT ;FORCE STANDARD POINTER FORM
U 2063, 2264,3202,6000,0000,0000,1010,0000 ; 10835 =11 SFLGS_AR,AR_BRX,J/EDSPUT ;SET S FLAG, GET BYTE, STORE IT
; 10836
; 10837 ;HERE IS SUBROUTINE TO STORE FLOAT CHAR
; 10838
; 10839 .IF/MODEL.B
;;10840 .IFNOT/XADDR
;;10841 EDFLT: VMA_AR,AR_ARX,STORE,J/EDFLT1
; 10842 .IF/XADDR
; 10843 =100
U 2274, 3661,4001,4000,0000,2016,0010,0000 ; 10844 EDFLT: AR_ARX,STORE,J/EDFLT1 ;SHORT POINTER. STORE IT
U 2275, 3661,3701,4000,0000,2316,0010,0000 ; 10845 VMA_AR,AR_ARX,STORE,J/EDFLT1 ; LIKEWISE. FORCE SECTION 0
U 2276, 3657,4001,4000,0000,2016,0010,0000 ; 10846 AR_ARX,STORE,J/EDFLTX ;LONG POINTER, DO MORE
U 2277, 3661,3701,4000,0000,2316,0010,0000 ; 10847 VMA_AR,AR_ARX,STORE,J/EDFLT1 ; IN SECTION 0, KEEP THERE
; 10848
U 3657, 3660,0001,0003,0000,0002,0010,0000 ; 10849 EDFLTX: MEM_AR ;FINISH STORE OF 1ST PART
U 3660, 3661,3240,2006,0000,0036,3610,0145 ; 10850 AR_DSTP2,VMA_VMA+1,STORE ;NOW DO SECOND PART
; 10851 .ENDIF/XADDR
;;10852 .IFNOT/MODEL.B
;;10853
;;10854 EDFLT:
; 10855 .ENDIF/MODEL.B
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page 22-1
; EIS.MIC[4,30] 17:12 9-Aug-84 EIS -- EDIT FUNCTION
; 10856
U 3661, 1540,4061,5003,0000,0022,0010,0000 ; 10857 EDFLT1: MEM_AR,AR_2 ;MARK STORED, READY FOR FLOAT
U 1540, 1023,0600,0007,4000,0332,0050,0176 ; 10858 =0* VMA_AR+E0,LOAD AR,CALL,J/XFERW
U 1542, 2304,3701,0000,0000,0040,5410,0000 ; 10859 SKP AR NE
U 2304, 3662,3200,2000,0302,0020,0010,0040 ; 10860 =100 AR_SFLGS,SC_#,#/40,J/SETFLG ;NO FLOAT CHR, SET S FLAG
U 2305, 1740,4001,0000,0000,0000,1650,0224 ; 10861 SR_ED(+D),CALL,J/PUTDST ;STORE FLOAT CHR IN DST
U 2307, 3662,3200,2000,0302,0020,0010,0040 ; 10862 =111 AR_SFLGS,SC_#,#/40 ;SET S FLAG AND RETURN
U 3662, 0003,4001,0000,6100,3001,0003,0200 ; 10863 SETFLG: P_P OR SC,RETURN3 ;NO FLOAT CHR, SET S FLAG
; 10864
; 10865 .ENDIF/EXTEND
; 10866
; Number of microwords used:
; D words= 512
; U words= 1972, Highest= 2047
END
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-1
; Cross Reference Listing
(D) A 2193 #
ADDR 2197 # 4114 4130 4346 4713 4911 4913 5009 5010 5067 5068 5069
5070 5072 5073 5074 5075 5077 5078 5079 5080 5082 5083 5084
5085 5088 5089 5091 5092 5093 5094 5095 5096 5097 5098 5109
5110 5111 5112 5113 5114 5118 5119 5120 5121 5122 5123 5124
5125 5126 5127 5128 5129 5130 5131 5132 5133 5134 5135 5136
5137 5138 5139 5140 5141 5142 5143 5144 5145 5146 5147 5148
5149 5153 5154 5300 5413 5950 5951
IMMED 2194 # 4058 4316 4317 4411 4412 4462 4463 4474 4475 4476 4477
4478 4479 4490 4491 4492 4493 4494 4495 4496 4497 4508 4509
4510 4511 4512 4513 4514 4515 4526 4527 4528 4529 4530 4531
4532 4533 4582 4583 4584 4585 4586 4587 4588 4589 4657 4658
4659 4660 4661 4662 4663 4664 4672 4673 4674 4675 4676 4677
4678 4679 4687 4688 4689 4690 4691 4692 4693 4694 4702 4703
4714 4883 4914 5011 5012 5301 5406 5407 5408 5409 5410 5411
5412 5571 5603 5676 5681 5960 5970 6033 6062 6219 8193 8195
8196 8197 8198 8206 8207 8208 8209 8215 8217 8218 8219 8220
8224 8225 8226 8227 8228 8229 8230 8231 8241 8242 8243 8244
8251 8252 8253 8254 8255 8256 8264 8266 8267 8275 8277 8278
IMMED-PF 2195 # 4054 4063 4068 4073 4138 4143 4148 4153 4158 4163 4168
4175 4180 4185 4190 4195 4200 4205 4210 4314 4315 4325 4335
4354 4364 4370 4380 4390 4400 4409 4410 4421 4431 4441 4451
4460 4461 4472 4473 4481 4482 5546 5558
RD-P-WR 2203 # 4060 4065 4070 4075 4113 4134 4135 4139 4140 4145 4150
4155 4160 4165 4170 4176 4177 4181 4182 4187 4192 4197 4202
4207 4212 4326 4327 4336 4337 4350 4351 4355 4356 4371 4372
4381 4382 4391 4392 4401 4402 4422 4423 4432 4433 4442 4443
4452 4453 4625 4626 4627 4628 4629 4630 4631 4632 4640 4641
4642 4643 4644 4645 4646 4647 5547 5548 5559 5560
RD-WR 2202 # 5572 5573 5604 5605 5677 5678 5682 5683 5956 5957 5961
5962 5966 5967 5971 5972 6029 6030 6034 6035 6058 6059 6063
6064 7386 7388 8213 8260 8262 8271 8273
READ 2200 # 4275 4276 4483 4484 4485 4486 4487 4488 4499 4500 4501
4502 4503 4504 4505 4506 4517 4518 4519 4520 4521 4522 4523
4524 4535 4536 4537 4538 4539 4540 4541 4542 4591 4592 4593
4594 4595 4596 4597 4598 4609 4610 4611 4612 4613 4614 4615
4616 4882 4912 5570 5602 5675 5680 5829 5830 5831 5832 5954
5955 5959 5964 5965 5969 6027 6028 6032 6056 6057 6061 6220
6253 6254 6256 6257 6464 6465 6466 6467 6681 6682 6683 6684
7387 7389 8194 8204 8205 8216 8239 8240 8263 8274
READ-PF 2201 # 4053 4062 4067 4072 4128 4137 4142 4147 4152 4157 4162
4167 4174 4179 4184 4189 4194 4199 4204 4209 4324 4334 4344
4353 4363 4369 4379 4389 4399 4420 4430 4440 4450 5545 5557
WR-TST 2199 # 4064 4069 4074 4144 4149 4154 4159 4164 4169 4186 4191
4196 4201 4206 4211 4295 4296 4365 4366 8191 8192 8202 8203
8214 8237 8238 8249 8250 8261 8265 8272 8276
(U) AC# 1926 # 3798 3849 4773 4788 4935 5026 5031 5180 5261 5266 5270
5274 5893 5909 5911 5931 6690 6695 6697 6703 6706 6710 6715
6719 6723 6724 6725 6730 6731 6732 6734 6735 6761 6763 6765
6766 6775 6777 6778 6781 6800 6807 6808 6817 6843 6856 6857
6873 6877 6917 6918 6920 6924 6926 6951 6990 6997 7127 7128
7134 7135 7183 7184 7196 7197 7198 7245 7252 7330 7332 7343
7345 7364 7367 7373 7752 7775 7776 7780 7782 7784 7811 7815
7819 7825 7826 7837 7841 7847 7855 7883 7885 7886 7888 7907
8988 8990 9002 9024 9048 9070 9085 9115 9192 9193 9223 9232
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-2
; Cross Reference Listing
9233 9234 9239 9242 9258 9290 9300 9307 9315 9329 9340 9345
9352 9353 9354 9369 9379 9380 9391 9406 9417 9423 9432 9447
9457 9469 9474 9478 9482 9496 9502 9510 9514 9516 9526 9533
9581 9608 9633 9664 9696 9697 9698 9727 9729 9733 9736 9738
9740 9742 9747 9749 9758 9808 9850 9853 9855 9858 9895 9945
9946 9947 9948 9949 9950 9951 9976 9978 9979 9993 10007 10011
10017 10019 10028 10033 10051 10075 10094 10143 10152 10171 10171 10190
10191 10204 10207 10212 10218 10239 10241 10259 10294 10296 10305 10306
10315 10318 10320 10321 10332 10333 10367 10369 10383 10384 10433 10436
10437 10438 10439 10447 10472 10474 10479 10483 10488 10490 10491 10555
10555 10581 10583 10584 10589 10590 10592 10595 10596 10598 10599 10602
10624 10655 10664 10741 10743 10777 10788 10790 10791 10795 10796 10805
10806 10850 10858
(U) AC-OP 1941 #
AC+# 1942 # 9727 9729 9733 9738 9740 9945 9948 9949 9950 9951 10011
10171 10171 10191 10239 10241 10483 10555 10555 10581 10583 10584 10589
10590 10592 10595 10596 10598 10599 10602 10655 10664 10777 10788 10790
10791 10795 10796 10850
OR 1944 #
# 1943 #
(U) ACB 1922 #
MICROB 1924 # 3798 3849 4773 4788 4935 5026 5031 5180 5261 5266 5270
5274 5893 5909 5911 5931 6690 6695 6697 6703 6706 6710 6715
6719 6723 6724 6725 6730 6731 6732 6734 6735 6761 6763 6765
6766 6775 6777 6778 6781 6800 6807 6808 6817 6843 6856 6857
6873 6877 6917 6918 6920 6924 6926 6951 6990 6997 7127 7128
7134 7135 7183 7184 7196 7197 7198 7245 7252 7330 7332 7343
7345 7364 7367 7373 7752 7775 7776 7780 7782 7784 7811 7815
7819 7825 7826 7837 7841 7847 7855 7883 7885 7886 7888 7907
8988 8990 9002 9024 9048 9070 9085 9115 9223 9664 9696 9697
9736 9742 9747 9749 9758 9808 9850 9853 9855 9858 9895 9946
9947 9976 9978 9979 9993 10007 10017 10019 10028 10033 10051 10075
10094 10143 10152 10190 10204 10207 10212 10218 10259 10294 10296 10305
10306 10315 10318 10320 10321 10332 10333 10367 10369 10383 10384 10433
10436 10437 10438 10439 10447 10472 10474 10479 10488 10490 10491 10624
10741 10743 10805 10806 10858
PAGB 1923 # 9192 9193 9232 9233 9234 9239 9242 9258 9290 9300 9307
9315 9329 9340 9345 9352 9353 9354 9369 9379 9380 9391 9406
9417 9423 9432 9447 9457 9469 9474 9478 9482 9496 9502 9510
9514 9516 9526 9533 9581 9608 9633 9698
(U) AD 1513 #
A 1551 # 3798 3861 3865 3870 3872 3883 3885 3916 4309 4620 4822
4826 4831 4845 4939 4989 4990 5185 5250 5256 5336 5451 5451
5466 5467 5468 5468 5471 5473 5474 5482 5484 5487 5489 5636
5637 5638 5640 5642 5653 5654 5655 5657 5665 5815 5816 5817
5818 5844 5864 5870 5885 5932 6090 6090 6102 6308 6314 6317
6345 6348 6373 6375 6394 6474 6482 6506 6519 6525 6528 6577
6580 6597 6599 6623 6625 6630 6634 6654 6690 6699 6701 6779
6788 6820 6828 6829 6830 6837 6850 6852 6880 6934 6936 6941
6946 6961 6980 7024 7144 7201 7203 7233 7235 7238 7242 7248
7254 7324 7329 7335 7338 7373 7377 7415 7422 7482 7489 7601
7605 7610 7612 7621 7623 7732 7784 7812 7859 7930 7954 7967
7970 7975 7979 7981 7998 8023 8024 8051 8123 8173 8311 8312
8329 8332 8334 8336 8347 8349 8355 8382 8388 8422 8428 8470
8479 8754 8756 8767 8815 8833 8882 8886 8898 8910 8911 8912
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-3
; Cross Reference Listing
8918 8968 9015 9056 9127 9192 9193 9220 9236 9237 9238 9305
9366 9411 9418 9473 9650 9652 9663 9712 9812 9815 9817 9820
9822 9838 9840 10050 10114 10143 10145 10156 10158 10197 10345 10347
10536 10557 10592 10626 10627 10643 10700 10704 10759 10794 10845 10847
A*2 1518 # 6431 6627 6661 6938 6969 6983 7247 7972 9125 10437 10805
A*2+1 1519 # 10137
A+1 1514 # 3787 3848 4101 4636 4729 4740 4933 5022 5024 5054 5264
5273 5314 5435 5436 5691 6280 6628 6640 6663 6952 6966 7017
7147 7568 7571 7578 7582 8100 8129 8154 8179 8308 9033 9060
9091 9134 9428 9850 9853 9855 9858 9900 9912 10047 10115 10199
10281 10311 10336 10526 10530 10534 10582 10585 10586 10590 10673 10708
10710 10834 10857
A+B 1522 # 3863 3867 3871 3873 3884 3887 5317 5320 5552 5643 5659
5661 5750 5755 5780 5783 5784 5787 5797 5811 5814 5851 5863
5924 6021 6178 6318 6428 6522 6569 6785 6806 6814 6856 6968
6999 7251 7361 7603 7607 7611 7613 7622 7625 7780 7785 7811
7815 7819 7834 7840 7841 7847 7948 7950 7953 8107 8113 8114
8121 8155 8161 8171 8843 8849 8881 8944 9084 9300 9315 9340
9391 9423 9710 9751 9816 9818 9821 9823 9839 9841 10034 10200
10220 10221 10293 10376 10383 10384 10398 10438 10447 10806 10858
A+B+1 1523 # 4683 4707 4931 4936 7986 8026 8027 8045 8045 8047 8047
8102 10012 10019 10042 10054 10081 10095 10207 10367 10479 10488 10491
10741 10743
A+XCRY 1515 # 5594
A-1 1533 # 4651 4699 4980 4999 5254 5316 5431 5437 7823 7845 8017
8017 8029 8029 8044 8788 9034 9044 10045 10116 10116 10160 10160
10161 10161 10487
A-B 1527 # 4091 4287 4303 5433 5565 5645 5647 5663 5704 5710 5747
5749 5752 5759 5764 5769 5781 5782 5785 5786 5800 5812 5813
5853 5904 5907 5922 5938 5942 5998 6174 6176 6344 6446 6479
6646 6673 6696 6710 6717 6748 6803 6869 6873 6958 7214 7219
7802 7949 7951 8090 8091 8125 8175 9736 9747 9749 9753 9978
10004 10028 10031 10210 10234 10275 10279 10342
A-B-1 1526 # 7210 10298 10309
AND 1550 # 4331 4935 5026 5031 5261 5274 5612 5872 6924 6992 7134
8990 9002 9024 9048 9070 9085 9115 9352 9432 9447 9979 10472
10474
ANDC 1539 # 4396
ANDCA 1544 # 4360 4574 4795 5323 6366 6672 7021 8802 9670 9977 10272
ANDCB 1549 # 4341 4773 4788 4847 5180 5266 5270 5325 6433 6836 7127
7365 7368 7883 9664
B 1546 # 3835 3846 3910 3911 3944 3955 3966 3977 3988 4107 4119
4122 4221 4223 4226 4229 4232 4236 4285 4286 4301 4302 4668
4698 4758 4769 4792 4800 4811 4812 4813 4816 4828 4842 4941
4954 4954 4977 4979 4982 4983 4985 4986 4991 5001 5002 5003
5037 5047 5177 5243 5247 5257 5260 5421 5424 5442 5442 5462
5463 5464 5479 5480 5497 5499 5507 5515 5517 5521 5527 5530
5539 5564 5587 5610 5688 5693 5706 5711 5713 5717 5802 5839
5841 5845 5869 5882 5883 5886 5893 5895 5897 5898 5900 5902
5902 5911 5912 5914 5931 5934 5935 5937 5941 5981 6004 6006
6047 6050 6077 6238 6297 6309 6350 6352 6371 6379 6381 6384
6427 6477 6498 6512 6512 6521 6527 6529 6530 6541 6541 6555
6556 6570 6590 6592 6602 6606 6635 6670 6705 6714 6715 6718
6719 6720 6722 6725 6729 6730 6734 6737 6759 6761 6765 6766
6773 6776 6777 6778 6782 6783 6784 6798 6802 6804 6808 6811
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-4
; Cross Reference Listing
6815 6835 6844 6847 6848 6858 6862 6918 6921 6922 6947 6951
6967 6990 6997 6998 7019 7178 7183 7184 7196 7197 7198 7202
7213 7218 7220 7230 7243 7326 7332 7340 7345 7349 7351 7352
7360 7374 7439 7440 7503 7573 7574 7575 7576 7581 7584 7630
7631 7691 7693 7716 7716 7720 7760 7775 7818 7826 7837 7855
7861 7863 7885 7887 7888 7903 7905 7907 7987 7988 7989 8000
8003 8012 8014 8022 8039 8050 8053 8084 8089 8118 8119 8169
8291 8321 8364 8373 8413 8435 8482 8757 8791 8792 8800 8801
8868 8906 8966 8994 8998 9032 9040 9041 9057 9058 9059 9061
9090 9135 9189 9191 9233 9240 9255 9287 9290 9301 9302 9303
9307 9322 9329 9345 9348 9353 9363 9369 9370 9379 9380 9393
9406 9417 9457 9474 9482 9496 9502 9510 9514 9516 9526 9533
9557 9561 9581 9588 9592 9596 9604 9608 9613 9618 9633 9674
9696 9698 9703 9727 9746 9807 9808 9811 9844 9845 9894 9896
9902 9910 9913 9941 9945 9946 9947 9950 9958 9971 9976 9992
9994 9995 10011 10013 10020 10023 10040 10088 10094 10112 10117 10139
10140 10140 10155 10155 10171 10171 10191 10198 10204 10209 10217 10226
10232 10260 10262 10269 10271 10283 10285 10307 10315 10319 10321 10332
10333 10335 10339 10370 10379 10388 10389 10390 10395 10435 10449 10451
10453 10477 10478 10483 10490 10501 10502 10502 10528 10529 10555 10555
10583 10584 10615 10632 10637 10641 10645 10655 10664 10680 10729 10755
10758 10760 10768 10775 10777 10784 10786 10788 10803 10803 10808 10812
10813 10829 10835 10850 10860 10862
CRY A EQ -1 1553 # 10386
CRY A GE B 1556 # 6089 7772 10164
CRY A#0 1555 # 6342 6615 6930 7804 8016 10085 10278 10818 10859
CRY A.B#0 1554 # 4571 4846 8296 8298 9437 10439
EQV 1542 # 4406
NOR 1540 # 7128
OR 1547 # 4386 4576 5191 5269 7016 8478 8803 8826 9354 9445 9469
9742 9752 9756 9944 9949 9961 10035 10225
ORC 1536 # 4457
ORCA 1537 # 4447
ORCB 1543 # 4427 6926 7135
ORCB+1 1525 # 4876 8300
SETCA 1535 # 4437 4563 4566 6617 6932 9383 10006 10314
SETCB 1541 # 4416 5799 5906 6641 6641 6644 6644 6953 6953 6956 6956
9565 9758 10005 10033 10051 10185 10212 10218 10306
XCRY-1 1530 # 3999 4032 5319 5502 5503 5514 5598 5724 5727 5874 5939
6012 6013 6263 6284 6311 6500 6503 6768 6770 6987 7334 7341
7355 10236
XOR 1545 # 4376 4575 4602 5519 6489 6845 9081 10113 10152
0S 1548 # 4253 4267 4289 4306 4321 4843 4858 4895 5252 5441 5525
5631 5631 5670 5855 5855 5862 5909 5995 5997 6045 6103 6316
6408 6526 6560 6560 6657 6657 6703 6800 6812 6812 6823 6963
6963 7696 7697 7753 7776 7776 7825 7836 7854 7886 7931 7946
8750 8765 8807 8813 8817 8821 8824 8859 8859 8862 8870 8887
8890 8899 8908 8923 8946 8953 8955 8957 8959 9007 9014 9055
9076 9082 9124 9234 9250 9672 9735 10007 10078 10142 10190 10190
10195 10195 10372 10372 10377 10742
1S 1538 # 3789 3833 3913 4247 4254 4261 4268 4467 4723 4770 6411
6832 7596 7632 9813 9846 9860 10010 10015 10201 10202 10305 10525
10540 10600 10603 10614
(U) ADA 1559 #
AR 1560 # 3798 3848 3883 3884 3885 3887 4331 4341 4360 4376 4386
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-5
; Cross Reference Listing
4396 4406 4416 4427 4437 4447 4457 4571 4574 4575 4576 4602
4620 4636 4651 4699 4795 4822 4826 4846 4847 4935 4939 4980
4990 4999 5026 5031 5191 5261 5269 5317 5320 5323 5325 5336
5435 5451 5466 5468 5473 5484 5519 5552 5565 5594 5612 5636
5637 5638 5640 5642 5643 5645 5647 5653 5654 5655 5657 5659
5661 5663 5665 5710 5747 5750 5755 5764 5780 5781 5782 5783
5784 5785 5786 5787 5797 5800 5811 5812 5813 5814 5851 5853
5863 5872 5922 5924 6021 6102 6176 6178 6318 6345 6348 6394
6428 6431 6433 6489 6522 6528 6569 6580 6623 6625 6627 6628
6630 6640 6654 6661 6672 6701 6710 6748 6785 6803 6806 6814
6828 6829 6830 6837 6845 6856 6873 6924 6926 6934 6936 6938
6941 6952 6961 6968 6969 6980 6983 6992 7021 7024 7127 7128
7134 7135 7147 7201 7203 7210 7214 7219 7238 7242 7247 7248
7251 7254 7324 7335 7338 7361 7364 7367 7377 7415 7422 7482
7489 7568 7571 7578 7582 7621 7622 7623 7625 7780 7785 7804
7811 7815 7819 7847 7883 7930 7948 7949 7950 7951 7953 7972
7979 8016 8090 8091 8107 8161 8296 8298 8308 8311 8312 8329
8332 8334 8336 8347 8349 8355 8382 8388 8422 8428 8470 8478
8479 8754 8756 8803 8815 8833 8843 8849 8881 8886 8898 8910
8911 8912 8918 8944 8990 9002 9015 9033 9034 9044 9060 9081
9084 9085 9091 9127 9134 9192 9193 9236 9300 9305 9315 9340
9352 9354 9366 9391 9418 9432 9437 9445 9447 9469 9670 9742
9747 9751 9752 9756 9812 9838 9839 9840 9841 9977 9978 10004
10031 10034 10035 10047 10054 10113 10116 10152 10160 10161 10200 10210
10220 10221 10225 10272 10278 10293 10298 10311 10336 10376 10383 10384
10398 10437 10438 10439 10447 10472 10474 10487 10526 10530 10534 10536
10582 10585 10590 10592 10627 10673 10700 10704 10708 10710 10743 10759
10805 10806 10818 10834 10845 10847 10858 10859
ARX 1561 # 3861 3863 3865 3867 3870 3871 3872 3873 4773 4788 4831
4989 5180 5185 5266 5274 5316 6090 6342 6482 6699 6779 6788
6999 7016 7601 7603 7605 7607 7610 7611 7612 7613 7834 7840
7841 7859 7970 7975 8023 8051 8113 8114 8121 8123 8155 8171
8173 8802 9024 9048 9070 9115 9411 9423 9473 9664 9710 9712
9753 9815 9816 9817 9818 9820 9821 9822 9823 9850 9853 9855
9858 9900 9912 9944 9949 9961 10045 10050 10085 10145 10156 10158
10309 10314 10586 10626
MQ 1562 # 3787 5471 5487 5815 5816 5817 5818 5864 5870 5885 5932
6317 6375 6525 6577 6597 6599 6615 6617 6820 6836 6850 6852
6880 6930 6932 7144 7732 7784 7954 7981 7998 8017 8024 8029
8044 8100 8154 8767 8882 9056 9125 9979 10114 10115 10137 10143
10345 10347 10386 10557 10794
PC 1563 # 3916 4729 4740 4845 4933 5022 5024 5054 5250 5256 5270
5273 7967 9220 9238 9650 9652 9663
(U) ADA EN 1564 #
EN 1565 # 4309 5431 5433 5436 5437 5451 5467 5468 5474 5482 5489
5844 6090 6308 6314 6373 6474 6506 6519 6634 6690 6946 7233
7235 7329 7373 7812 7823 7845 8017 8029 8125 8129 8175 8179
8826 8968 9237 9383 10006 10116 10160 10161 10197 10643
0S 1566 # 4091 4101 4287 4303 4683 4707 4876 4931 4936 5254 5264
5314 5691 5704 5749 5752 5759 5769 5904 5907 5938 5942 5998
6089 6174 6280 6344 6366 6446 6479 6646 6663 6673 6696 6715
6717 6719 6725 6730 6734 6761 6765 6766 6777 6778 6808 6869
6918 6958 6966 6990 6997 7017 7183 7184 7196 7197 7198 7772
7802 7986 8026 8027 8045 8045 8047 8047 8102 8300 8788 9428
9736 9749 9976 10012 10019 10028 10042 10081 10095 10164 10199 10207
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-6
; Cross Reference Listing
10234 10275 10279 10281 10315 10342 10367 10479 10488 10491 10741 10857
(U) ADB 1568 #
AR*4 1572 # 4876 5433 5749 5752 5893 5998 6050 6174 6344 6350 6352
6366 6371 6384 6446 6479 6673 6696 6720 6729 6869 6967 7220
8757 8800 8801 8994 8998 9040 9059 9189 9191 10200 10209 10220
10279 10293 10306 10309 10376 10390 10398 10637 10641 10645 10680
BR 1571 # 4091 4287 4303 4769 4792 4795 4842 4846 4847 4941 4991
5003 5177 5191 5243 5257 5260 5269 5507 5517 5519 5521 5527
5530 5539 5565 5612 5643 5647 5659 5663 5704 5706 5710 5713
5747 5750 5755 5759 5764 5769 5780 5781 5782 5783 5784 5785
5786 5787 5797 5800 5811 5812 5813 5814 5851 5853 5863 5872
5882 5886 5902 5902 5904 5906 5907 5912 5914 5922 5924 5937
5938 5941 5942 5981 6089 6297 6309 6318 6427 6428 6433 6512
6512 6522 6541 6541 6569 6635 6641 6641 6644 6644 6646 6670
6672 6714 6717 6718 6748 6773 6785 6802 6803 6806 6814 6835
6836 6844 6947 6953 6953 6956 6956 6958 6968 6992 6998 6999
7016 7019 7021 7210 7213 7214 7218 7219 7251 7332 7345 7351
7361 7439 7440 7573 7574 7575 7576 7584 7760 7772 7802 7885
7887 7888 7903 7905 7948 7949 7950 7951 7953 7986 7987 7988
7989 8000 8003 8039 8045 8045 8047 8047 8053 8089 8090 8091
8102 8107 8113 8114 8121 8125 8155 8161 8171 8175 8296 8298
8300 8321 8364 8373 8413 8435 8478 8482 8791 8792 8802 8803
8826 8843 8849 8868 8881 8906 8944 9057 9058 9061 9081 9084
9135 9233 9255 9301 9303 9363 9437 9445 9561 9588 9613 9670
9703 9710 9751 9753 9807 9808 9811 9913 9944 9949 9950 9961
9971 9977 10004 10005 10012 10031 10034 10042 10054 10081 10113 10139
10155 10155 10164 10204 10217 10221 10226 10232 10234 10272 10275 10298
10339 10342 10370 10379 10395 10768 10786 10788 10835
BR*2 1570 # 5515 5645 5661 5898 6006 6021 6176 6178 6379 6381 9240
10285
FM 1569 # 3835 3846 3863 3867 3871 3873 3884 3887 3910 3911 3944
3955 3966 3977 3988 4107 4119 4122 4221 4223 4226 4229 4232
4236 4285 4286 4301 4302 4331 4341 4360 4376 4386 4396 4406
4416 4427 4447 4457 4571 4574 4575 4576 4602 4668 4683 4698
4707 4758 4773 4788 4800 4811 4812 4813 4816 4828 4931 4935
4936 4954 4954 4977 4979 4982 4983 4985 4986 5001 5002 5026
5031 5037 5047 5180 5247 5261 5266 5270 5274 5317 5320 5323
5325 5421 5424 5442 5442 5462 5463 5464 5479 5480 5497 5499
5552 5564 5587 5610 5688 5693 5711 5717 5799 5802 5839 5841
5845 5869 5883 5895 5897 5900 5911 5931 5934 5935 6004 6047
6077 6238 6477 6489 6498 6521 6527 6529 6530 6555 6556 6570
6590 6592 6602 6606 6705 6710 6715 6719 6722 6725 6730 6734
6737 6759 6761 6765 6766 6776 6777 6778 6782 6783 6784 6798
6804 6808 6811 6815 6845 6847 6848 6856 6858 6862 6873 6918
6921 6922 6924 6926 6951 6990 6997 7127 7128 7134 7135 7178
7183 7184 7196 7197 7198 7202 7230 7243 7326 7340 7349 7352
7360 7364 7367 7374 7503 7581 7603 7607 7611 7613 7622 7625
7630 7631 7691 7693 7716 7716 7720 7775 7780 7785 7811 7815
7818 7819 7826 7834 7837 7840 7841 7847 7855 7861 7863 7883
7907 8012 8014 8022 8026 8027 8050 8084 8118 8119 8169 8291
8966 8990 9002 9024 9032 9041 9048 9070 9085 9090 9115 9287
9290 9300 9302 9307 9315 9322 9329 9340 9345 9348 9352 9353
9354 9369 9370 9379 9380 9391 9393 9406 9417 9423 9432 9447
9457 9469 9474 9482 9496 9502 9510 9514 9516 9526 9533 9557
9565 9581 9592 9596 9604 9608 9618 9633 9664 9674 9696 9698
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-7
; Cross Reference Listing
9727 9736 9742 9746 9747 9749 9752 9756 9758 9816 9818 9821
9823 9839 9841 9844 9845 9894 9896 9902 9910 9941 9945 9946
9947 9958 9976 9978 9979 9992 9994 9995 10011 10013 10019 10020
10023 10028 10033 10035 10040 10051 10088 10094 10095 10112 10117 10140
10140 10152 10171 10171 10185 10191 10198 10207 10210 10212 10218 10225
10260 10262 10269 10271 10283 10307 10315 10319 10321 10332 10333 10335
10367 10383 10384 10388 10389 10435 10438 10439 10447 10449 10451 10453
10472 10474 10477 10478 10479 10483 10488 10490 10491 10501 10502 10502
10528 10529 10555 10555 10583 10584 10615 10632 10655 10664 10729 10741
10743 10755 10758 10760 10775 10777 10784 10803 10803 10806 10808 10812
10813 10829 10850 10858 10860 10862
(U) AR 1580 #
AD 1585 # 3787 3848 3861 3863 3865 3867 3870 3871 3872 3873 3944
3999 4032 4091 4107 4119 4122 4223 4226 4232 4253 4254 4267
4268 4287 4289 4303 4306 4321 4331 4341 4360 4376 4386 4396
4406 4416 4427 4437 4447 4457 4467 4574 4575 4576 4636 4651
4668 4683 4698 4699 4707 4758 4788 4845 4847 4858 4895 4933
4935 4977 4979 4980 4991 5022 5024 5026 5031 5037 5047 5054
5180 5191 5250 5252 5266 5269 5270 5274 5317 5320 5421 5424
5441 5442 5464 5471 5480 5487 5497 5499 5502 5503 5514 5515
5517 5530 5552 5564 5565 5587 5598 5610 5631 5691 5693 5711
5713 5717 5724 5727 5759 5769 5784 5785 5786 5787 5797 5800
5815 5816 5817 5818 5845 5851 5853 5855 5863 5864 5869 5870
5874 5882 5885 5886 5895 5900 5904 5906 5907 5911 5912 5914
5931 5932 5934 5935 5937 5938 5939 5941 5942 5981 6004 6006
6012 6013 6047 6077 6238 6263 6297 6309 6311 6316 6317 6318
6350 6379 6408 6427 6428 6498 6500 6503 6512 6521 6522 6525
6529 6530 6541 6555 6556 6560 6569 6570 6577 6597 6599 6602
6606 6617 6628 6635 6640 6641 6644 6646 6657 6703 6705 6710
6714 6715 6717 6718 6719 6722 6725 6730 6734 6759 6761 6765
6766 6768 6770 6773 6776 6778 6779 6782 6783 6784 6785 6788
6800 6802 6803 6804 6806 6808 6811 6812 6814 6815 6820 6835
6844 6850 6852 6856 6858 6862 6873 6880 6918 6922 6924 6926
6932 6947 6952 6953 6956 6958 6963 6968 6987 6990 6992 6997
6998 6999 7016 7127 7128 7134 7135 7144 7183 7184 7196 7197
7198 7213 7218 7219 7251 7332 7334 7341 7345 7349 7351 7355
7361 7364 7367 7374 7439 7440 7503 7573 7574 7575 7576 7578
7582 7696 7697 7732 7753 7760 7775 7776 7780 7784 7785 7811
7815 7818 7819 7826 7834 7837 7840 7841 7847 7854 7855 7861
7863 7883 7885 7886 7887 7903 7905 7931 7946 7950 7951 7953
7954 7967 7970 7986 8003 8012 8014 8017 8024 8026 8027 8029
8044 8047 8053 8084 8090 8091 8100 8107 8154 8161 8308 8321
8364 8373 8413 8435 8482 8750 8765 8791 8802 8803 8807 8817
8821 8843 8849 8859 8862 8868 8870 8881 8887 8890 8899 8906
8908 8923 8944 8946 8953 8955 8957 8959 8994 8998 9007 9014
9033 9034 9040 9055 9056 9059 9076 9082 9084 9091 9124 9233
9234 9250 9255 9290 9301 9307 9345 9352 9353 9354 9369 9380
9406 9428 9432 9445 9447 9457 9469 9473 9474 9496 9557 9561
9565 9588 9592 9596 9604 9608 9613 9618 9633 9650 9652 9664
9672 9696 9698 9703 9710 9712 9727 9735 9742 9746 9747 9749
9751 9752 9753 9756 9758 9807 9811 9894 9896 9900 9902 9910
9912 9913 9941 9944 9945 9949 9958 9961 9976 9978 9979 9994
9995 10004 10005 10007 10011 10013 10015 10019 10020 10023 10028 10031
10033 10034 10035 10040 10047 10051 10078 10088 10094 10095 10112 10139
10140 10143 10152 10155 10156 10158 10171 10185 10190 10195 10198 10199
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-8
; Cross Reference Listing
10202 10204 10207 10212 10217 10218 10220 10225 10226 10232 10234 10236
10260 10262 10269 10272 10275 10283 10305 10307 10321 10333 10335 10336
10339 10342 10345 10347 10367 10370 10372 10377 10379 10384 10395 10435
10438 10451 10453 10474 10477 10478 10483 10487 10488 10490 10491 10501
10502 10526 10529 10530 10534 10555 10557 10582 10584 10585 10586 10590
10655 10664 10673 10708 10710 10729 10742 10758 10768 10788 10794 10803
10812 10829 10834 10850 10860 10862
AD*.25 1590 # 5642 5643 5645 5647 5659 5661 5663 5665 5749 5752 5998
6021 6090 6102 6174 6344 6345 6375 6394 6431 6446 6479 6623
6625 6627 6654 6661 6673 6696 6829 6869 6934 6936 6938 6961
6969 6980 6983 7238 7247 7248 7972 9189 9191 9411 10279 10281
10285 10309 10376 10437 10805
AD*2 1588 # 3798 5435 5462 5636 5637 5638 5640 5653 5654 5655 5657
5688 5747 5750 5755 5764 5780 5781 5782 5783 5811 5812 5813
5814 5841 5922 5924 6348 6352 6367 6371 6381 6384 6477 6590
6592 6630 6720 6729 6737 6798 6828 6830 6847 6848 6921 6941
7220 7859 7948 7949 8918 9125 10200 10221 10293 10398 10637 10645
10680 10857
ADX 1589 # 4795 5260 5437 5451 5467 5468 5474 5482 5489 5527 5704
5706 5902 6314 6373 6506 6519 6634 6946 7812 7845 7888 7987
7988 7989 8000 8045 8478 9058 9061 9135 9670 9808 10006 10012
10042 10054 10081 10116 10160 10161 10164 10786 10835
AR 1581 # 4101 4221 4233 4246 4247 4775 4792 5314 5319 8289 8420
8468 8813 8896 9668
ARMM 1582 # 4048 4774 4791 5045 5050 5268 5281 5282 5283 6432 6662
6747 6801 6855 6991 7013 7209 7211 7217 7250 7331 7344 7583
7998 8004 8405 8412 8766 8778 8801 8860 9011 9075 9139 9413
9481 9667 9729 9809 10003 10186 10191 10194 10308 10399 10464 10465
10466 10467 10468 10469 10544 10587 10589 10675 10721
CACHE 1584 # 8455
EBUS 1586 # 3802 3804 4897 5254 8332 8395 8425 8426 8473 8475 8477
8788 8805 8819 8823 8873 8874 8875 8876 8889 8891 8901 8917
8926 8927 8928 8929 9209 9224
MEM 1583 #
SH 1587 # 3832 3913 4003 4033 4080 4229 4236 4237 4260 4261 4307
4566 4569 4757 4839 4843 4942 4947 4949 5048 5049 5207 5257
5271 5276 5428 5430 5449 5454 5475 5490 5521 5525 5538 5539
5597 5880 5881 5883 5893 5896 5898 5940 5993 6018 6044 6073
6088 6342 6515 6517 6518 6526 6527 6631 6633 6658 6670 6726
6731 6777 6943 6945 6964 7018 7146 7148 7221 7252 7352 7357
7360 7585 7632 7704 7735 7737 7782 7817 7904 7908 7909 7930
7978 7991 8031 8033 8089 8108 8162 8381 8407 8411 8427 8754
8756 8792 8827 8910 8911 8947 9074 9077 9192 9193 9208 9237
9239 9242 9258 9300 9303 9331 9340 9418 9423 9482 9502 9510
9513 9515 9654 9718 9736 9740 9744 9813 9846 9850 9853 9855
9858 10016 10086 10142 10201 10203 10237 10273 10294 10296 10320 10378
10393 10461 10494 10531 10536 10592 10615 10625 10626 10627 10633 10652
10656 10685 10704 10734 10782 10790 10844 10845 10846 10847
(U) AR CTL 1982 #
AR0-8 LOAD 1983 # 6432 6662
AR9-17 LOAD 1984 #
ARL LOAD 1986 #
ARR LOAD 1985 # 8405
(U) AR0-8 1957 #
LOAD 1958 # 4102 5265 5432 5994 5997 6005 6045 6048 6074 6173 6239
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-9
; Cross Reference Listing
6471 6540 6574 6578 7246 7253 7358 7426 7493 7578 7580 7757
7774 7779 7835 7862 7864 7910 7921 7923 7969 8001 8414 8800
9143 9226 9235 9236 9257 9483 9724 10008 10047 10049 10193 10270
10313 10493 10516 10526 10533 10563 10674 10715 10716 10834 10863
(U) ARL 1972 #
AD 1976 # 4101 4221 4229 4236 4247 4261 4792 5257 5264 5319 5421
5487 5693 6238 6512 6597 6599 6850 6852 7584 7785 8089 8792
9860 10260 10345 10347
AD*.25 1981 #
AD*2 1979 # 5688 5756 5765 5841
ADX 1980 # 8826 9237
ARL 1973 # 4107 4122 4223 4237 4267 4268 5271 7834 8427 8478 8754
ARMM 1974 # 4102 5265 5432 5994 5997 6005 6045 6048 6074 6173 6239
6471 6540 6574 6578 6986 7246 7253 7358 7426 7493 7578 7580
7757 7774 7779 7835 7862 7864 7910 7921 7923 7969 8001 8414
8800 9143 9226 9235 9236 9257 9483 9724 10008 10047 10049 10193
10270 10313 10493 10516 10526 10533 10563 10674 10715 10716 10834 10863
CACHE 1975 #
EBUS 1977 #
SH 1978 # 4226 4232 4233 4253 4254 4775 5054 5314 5428 6018 6342
6515 8107 8161 8289 8413 8420 8468 8813 8893 8896 9382 9668
9712
(U) ARMM 1670 #
EXP_SIGN 1672 # 5994 5997 6005 6045 6048 6074 6173 6239 6471 6540 6574
7253 7358
SCAD EXP 1673 # 6432 6578 6662 6986 7246 7921 7923 7969 8414 9011 9075
9139 9235 9236 9257 9481 9809 10008 10191 10193 10194 10270 10313
SCAD POS 1674 # 4102 5265 5432 7013 7426 7493 7578 7580 7583 7757 7774
7779 7835 7862 7864 7910 7998 8001 8004 8412 8800 9143 9226
9483 9724 9729 10047 10049 10399 10464 10465 10466 10467 10468 10469
10493 10516 10526 10533 10544 10563 10587 10589 10674 10675 10715 10716
10721 10834 10863
# 1671 # 4048 5281 5282 5283 6747 6801 6855 6991 7209 7211 7217
7250 7331 7344 8766 8778 8860 9413 10003 10186 10308
(U) ARX 1591 #
AD 1595 # 3789 3835 4301 4302 4729 4740 4773 4789 4843 4931 4936
4999 5254 5273 5314 5318 5336 5442 5451 5463 5466 5468 5473
5479 5484 5507 5525 5631 5839 5855 5883 5897 5898 5902 5909
5995 5997 6045 6103 6284 6411 6526 6527 6560 6657 6663 6777
6812 6832 6963 7017 7178 7333 7360 7776 7825 7836 7907 7930
8045 8754 8788 8813 8824 8859 8990 9024 9048 9070 9085 9115
9192 9193 9236 9238 9303 9379 9418 9502 9510 9514 9516 9581
9663 9665 9736 9946 9947 9977 10010 10045 10051 10116 10140 10142
10160 10161 10171 10190 10191 10195 10201 10271 10306 10311 10332 10372
10389 10472 10502 10528 10536 10555 10583 10592 10614 10615 10664 10777
10803
ADX 1599 # 4287 4303 4842 5177 5243 5431 5436 5515 5521 5539 5784
5785 5786 5787 5797 5800 5851 5853 5863 5904 5906 5907 5912
5914 5937 5938 6350 6379 6433 6512 6522 6541 6569 6628 6641
6644 6646 6670 6672 6773 6785 6814 6835 6953 6956 6958 6967
6968 7019 7021 7802 7823 8017 8029 8047 8053 8129 8179 8881
8944 9057 9561 9588 9613 9950 10012 10042 10081 10155 10204 10217
10220 10226 10232 10234 10281 10336 10339 10342 10370 10379 10395 10641
ADX*.25 1600 # 5642 5643 5645 5647 5659 5661 5663 5665 5749 5752 6021
6090 6102 6174 6280 6344 6345 6394 6479 6623 6625 6627 6654
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-10
; Cross Reference Listing
6661 6673 6696 6829 6869 6934 6936 6938 6961 6969 6980 6983
7238 7972 9189 9191 10137 10279 10285 10376 10437 10805
ADX*2 1598 # 4309 5433 5636 5637 5638 5640 5653 5654 5655 5657 5748
5751 5755 5764 5780 5781 5782 5783 5811 5812 5813 5814 5844
5893 5922 5924 5941 5942 6308 6348 6352 6367 6371 6381 6384
6474 6630 6690 6828 6830 6941 6966 7233 7235 7329 7373 7948
7949 8800 8801 8968 9383 10197 10221 10293 10398 10643
ARX 1592 #
CACHE 1594 #
MEM 1593 #
MQ 1596 # 5275 5483 5489 5530 5798 5801 5881 6012 6018 6507 6515
6518 6521 6602 6633 6635 6858 6945 6947 7804 8031 9820 9821
9822 9823 9838 9839 10153 10680
SH 1597 # 4119 4121 4814 4817 4866 5037 5207 5270 5471 5487 5497
5499 5502 5503 5517 5533 5704 5706 5717 5724 5727 5845 5882
5886 5894 5900 5911 6013 6015 6016 6262 6297 6311 6317 6375
6498 6500 6503 6606 6766 6768 6770 6772 6779 6784 6862 6922
6987 6989 7002 7004 7206 7244 7341 7355 7419 7429 7486 7500
7581 7696 7697 7732 7735 7926 7946 7954 7970 7977 7989 8083
8426 8474 8476 8777 8779 8807 8821 8825 8890 8908 8923 8953
8955 8957 8959 9014 9056 9076 9114 9125 9144 9242 9292 9302
9386 9411 9427 9472 9650 9652 9752 10004 10007 10040 10078 10112
10138 10156 10158 10210 10262 10269 10335 10377 10390 10450 10452 10524
10529 10540 10584 10599 10602 10631 10703 10729 10736 10829
(D) B 2205 # 4058 4113 4275 4276 4912 4913 5072 5077 5078 5079 5080
5082 5083 5084 5085 5092 5093 5094 5095 5301 5406 5407 5408
5410 5829 5830 5831 6220 6464 6465 6466 6467 6681 6682 6683
6684 8192 8194 8195 8196 8203 8205 8206 8207 8214 8216 8217
8218 8237 8238 8239 8240 8241 8242 8249 8250 8253 8254 8261
8263 8264 8265 8272 8274 8275 8276
AC 2209 # 4053 4054 4062 4063 4067 4068 4072 4073 4128 4130 4137
4138 4142 4143 4147 4148 4152 4153 4157 4158 4162 4163 4167
4168 4174 4175 4179 4180 4184 4185 4189 4190 4194 4195 4199
4200 4204 4205 4209 4210 4314 4315 4324 4325 4334 4335 4344
4346 4353 4354 4369 4370 4379 4380 4389 4390 4399 4400 4409
4410 4420 4421 4430 4431 4440 4441 4450 4451 4460 4461 4883
5089 5545 5546 5557 5558 5570 5571
BOTH 2211 # 4317 4327 4337 4351 4356 4372 4382 4392 4402 4412 4423
4433 4443 4453 4463 5548 5560 5573
DBL AC 2206 # 5602 5603 5675 5676 5680 5681
DBL BOTH 2207 # 5605 5678 5683
MEM 2210 # 4064 4069 4074 4134 4139 4144 4149 4154 4159 4164 4169
4176 4181 4186 4191 4196 4201 4206 4211 4316 4326 4336 4350
4355 4365 4366 4371 4381 4391 4401 4411 4422 4432 4442 4452
4462 5547 5559 5572 5604 5677 5682 8202
SELF 2208 # 4060 4065 4070 4075 4135 4140 4145 4150 4155 4160 4165
4170 4177 4182 4187 4192 4197 4202 4207 4212
SJC- 2213 # 4582 4591 4609 4625 4640 4657 4672 4687
SJCA 2217 # 4586 4595 4613 4629 4644 4661 4676 4691
SJCE 2215 # 4584 4593 4611 4627 4642 4659 4674 4689 5069
SJCG 2220 # 4589 4598 4616 4632 4647 4664 4679 4694 5075
SJCGE 2218 # 4587 4596 4614 4630 4645 4662 4677 4692 4702 5073
SJCL 2214 # 4583 4592 4610 4626 4641 4658 4673 4688 4703 5068
SJCLE 2216 # 4585 4594 4612 4628 4643 4660 4675 4690 5070
SJCN 2219 # 4588 4597 4615 4631 4646 4663 4678 4693 5074
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-11
; Cross Reference Listing
(D) B0 2221 # 5954 5955 5956 5957 5960 5964 5965 5966 5967 5970
CRY0(0) 2222 # 4474 4475 4476 4477 4483 4484 4485 4486 4492 4493 4494
4495 4501 4502 4503 4504 4510 4511 4512 4513 4519 4520 4521
4522 4528 4529 4530 4531 4537 4538 4539 4540 8197 8208 8213
8219 8243 8255 8260 8262 8266 8271 8273 8277
CRY0(1) 2223 # 4478 4479 4487 4488 4490 4491 4496 4497 4499 4500 4505
4506 4508 4509 4514 4515 4517 4518 4523 4524 4526 4527 4532
4533 4535 4536 4541 4542 4714 8198 8209 8220 8244 8256 8267
8278
(D) B1-2 2224 # 4474 4475 4476 4477 4478 4479 4483 4484 4485 4486 4487
4488 4490 4491 4492 4493 4494 4495 4496 4497 4499 4500 4501
4502 4503 4504 4505 4506 4508 4509 4510 4511 4512 4513 4514
4515 4517 4518 4519 4520 4521 4522 4523 4524 4526 4527 4528
4529 4530 4531 4532 4533 4535 4536 4537 4538 4539 4540 4541
4542 4714 8197 8198 8208 8209 8213 8219 8220 8243 8244 8255
8256 8260 8262 8266 8267 8271 8273 8277 8278
AC 2225 # 5954 5959 5960 5964 5969 5970 6027 6032 6033 6056 6057
6061 6062 6219 6257
BOTH 2227 # 5957 5962 5967 5972 6030 6035 6059 6064
MEM 2226 # 5956 5961 5966 5971 6029 6034 6058 6063
(U) BR 1601 #
AR 1602 # 3944 3955 3966 3977 3988 4048 4083 4086 4310 4721 4723
4766 4790 4845 4889 4933 4977 4982 4985 5047 5180 5267 5502
5514 5515 5564 5631 5687 5691 5692 5798 5801 5841 5880 5896
5898 5902 5904 5906 5907 5912 5914 5937 5938 6004 6006 6076
6246 6308 6309 6371 6384 6408 6411 6477 6482 6490 6541 6617
6633 6699 6701 6706 6713 6746 6769 6773 6778 6783 6802 6804
6811 6832 6835 6846 6932 6939 6945 6985 6997 6998 6999 7208
7213 7215 7218 7249 7328 7342 7349 7351 7412 7419 7437 7446
7479 7486 7582 7752 7757 7760 7782 7812 7817 7845 7887 7903
7980 7999 8013 8025 8027 8049 8083 8100 8154 8289 8307 8379
8389 8420 8423 8451 8468 8472 8750 8801 8802 8805 8813 8817
8862 8885 8887 8896 8899 8962 8964 9075 9233 9258 9288 9301
9344 9430 9513 9515 9533 9698 9749 9758 9976 9980 9995 10028
10112 10117 10154 10163 10186 10199 10207 10217 10270 10272 10274 10281
10283 10339 10342 10366 10756 10758 10768 10782
(U) BRX 1603 #
ARX 1604 # 3832 4310 4788 5248 5507 5514 5517 5530 5631 5717 5724
5727 5759 5760 5768 5769 5798 5801 5845 5894 5902 5904 5906
5907 5912 5914 5937 5938 6004 6076 6309 6371 6384 6408 6411
6477 6482 6490 6541 6617 6663 6769 6773 6780 6783 6811 6832
6835 6846 6932 6939 6985 7774 7826 7837 7848 7885 7979 8013
8025 8027 8049 8083 8476 8824 8962 8964 8997 9057 9132 9665
9976 10008 10051 10075 10117 10154 10163 10199 10207 10217 10271 10281
10283 10339 10342 10366 10756 10809
(U) CALL 1814 #
CALL 1815 # 3790 4286 4302 4774 4791 4824 4844 4896 4939 5179 5184
5185 5244 5249 5253 5255 5518 5589 5611 5689 5693 5756 5765
5843 5862 5870 5887 5910 5926 5932 6049 6078 6080 6473 6498
6562 6577 6590 6592 6598 6600 6608 6689 6694 6698 6702 6705
6712 6717 6723 6732 6759 6762 6774 6780 6805 6809 6813 6816
6824 6834 6844 6847 6848 6851 6853 6863 6872 6880 7207 7237
7328 7350 7376 7411 7414 7418 7421 7427 7430 7431 7437 7439
7478 7481 7485 7488 7494 7501 7504 7753 7757 7774 7779 7801
7854 7856 7878 7882 7886 7929 7971 7992 8100 8118 8119 8120
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-12
; Cross Reference Listing
8154 8169 8170 8285 8291 8322 8379 8387 8389 8394 8408 8411
8420 8423 8449 8469 8472 8750 8755 8766 8767 8777 8784 8789
8804 8814 8817 8822 8832 8833 8861 8868 8880 8885 8887 8897
8899 8908 8918 8943 8967 9014 9039 9040 9041 9044 9055 9059
9060 9080 9083 9092 9100 9105 9110 9123 9124 9127 9128 9133
9134 9136 9142 9143 9651 9667 9702 9894 9895 9902 9941 9942
9945 9946 9958 9959 9968 9970 9992 9993 10019 10022 10041 10076
10079 10087 10094 10141 10151 10172 10184 10208 10259 10284 10305 10319
10320 10334 10341 10344 10392 10433 10516 10537 10555 10558 10593 10613
10731 10742 10804 10806 10810 10831 10858 10861
(U) CLR 1959 #
AR 1964 # 4740 4790 5267 5484 6832 9666 10050 10311
AR+ARX 1965 #
AR+ARX+MQ 1968 # 6392 7354 7771 10076 10433
AR+MQ 1966 # 6939 10210
ARL 1962 # 4246 4260 4982 4985 5048 5049 8307 8903 9292 9293 9294
9385 9386 9401 9852 10390 10393 10625 10703 10729 10758 10829
ARL+ARX 1969 # 7813 7846 8879 8942
ARL+ARX+MQ 1970 #
ARR 1963 # 5432 8826
ARR+MQ 1971 #
ARX 1961 # 5421 6343 7253 7903 10386
ARX+MQ 1967 # 5427 5687 5692 6074 6237 7786 10260
MQ 1960 # 4286 4302 5479 5487 5843 6015 6016 6019 6471 6513 6516
6598 6600 6689 6851 6853 6881 7017 7202 7326 7779 10345 10347
(U) COND 1774 #
AD FLAGS 1788 # 4091 4287 4303 4636 4651 4683 4699 5552 5565 5851 5853
AR CLR 1780 # 3789 6308 6411 6746 6797 6799 6854 6985 7208 7215 7244
7249 7329 7342 10010 10332 10614
ARL IND 1782 # 4122 4221 4223 4226 4229 4232 4233 4236 4237 4246 4247
4253 4254 4260 4261 4267 4268 4740 4792 5271 5314 5319 6832
7253 7578 7584 7834 8107 8161 8289 8307 8413 8413 8427 8478
8792 9712 9860 10047 10526
ARX CLR 1781 # 5527 5588 5609 5711 6309 6314 6374 6427 6428 6520 6634
6780 6788 6946 7855 10015 10199
DIAG FUNC 1793 # 4831 4897 5254 5256 8388 8395 8422 8425 8426 8428 8470
8473 8475 8477 8756 8788 8805 8815 8819 8823 8873 8874 8875
8876 8886 8889 8891 8898 8901 8910 8911 8912 8917 8926 8927
8928 8929 9209 9224
EBOX STATE 1794 # 3801 3832 4905 8921 8932 9189 9191 9527 9632 9674 9703
EBUS CTL 1795 # 3875 3876 3877 3878 4830 4832 4898 5259 8292 8322 8330
8333 8336 8345 8347 8374 8479 8483 8825 8859 8881 8916 8920
8930 9041 9055 9091 9124 9199 9210 9225 9702 9825 9826 9827
9828
FE SHRT 1787 # 9382
FM WRITE 1785 # 3798 3849 3999 4004 4032 4042 4289 5032 5426 5456 5475
5490 5868 5874 5881 5885 5888 5893 5909 5928 5929 5939 5941
5942 6506 6518 6526 6597 6599 6670 6690 6695 6697 6703 6706
6723 6724 6726 6727 6731 6732 6733 6735 6760 6763 6775 6781
6800 6807 6817 6843 6850 6852 6857 6877 6917 6920 7018 7150
7245 7252 7330 7332 7343 7345 7373 7432 7752 7776 7782 7784
7801 7825 7836 7854 7885 7886 7888 7911 7931 8029 8031 8033
8045 8047 8109 8988 9192 9193 9223 9232 9233 9234 9239 9242
9258 9478 9697 9713 9718 9719 9725 9733 9735 9740 9744 9745
9751 9753 9754 9808 9850 9853 9855 9858 9895 9944 9949 9951
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-13
; Cross Reference Listing
9953 9961 9962 9993 10005 10006 10007 10009 10017 10030 10050 10052
10054 10075 10086 10097 10143 10156 10160 10190 10195 10197 10201 10202
10204 10226 10236 10241 10259 10273 10285 10294 10296 10305 10306 10316
10318 10320 10345 10347 10369 10374 10433 10461 10463 10489 10494 10524
10536 10539 10540 10592 10598 10599 10602 10624 10631 10790 10791 10796
10835
LD AR0-8 1777 # 4048 5281 5282 5283 6747 6801 6855 6986 6991 7013 7209
7211 7217 7250 7331 7344 7583 7998 8004 8412 8766 8778 8860
9011 9075 9139 9413 9481 9729 9809 10003 10186 10191 10194 10308
10399 10464 10465 10466 10467 10468 10469 10544 10587 10589 10675 10721
LD AR18-35 1779 #
LD AR9-17 1778 # 4774 4791 5045 5050 5268 8801 9667
LD VMA HELD 1810 #
LOAD IR 1789 # 3835 3846 5336 9812
LONG EN 1799 # 3910 7630 9844
MBOX CTL 1796 # 8752 8835 8839 8844 8846 8850 8852 9250 9252 9254 9484
9699
PCF_# 1786 # 4943 4948 4996 4997 5001 5523 5598 5615 5702 5876 6081
6307 6610 6865 7006 7010 7011 7149 7212 7216 7370 7371 7595
7628 8003 8311 8312 10335
REG CTL 1783 # 5636 5637 5638 5640 5653 5654 5655 5657 5839 6432 6432
6630 6654 6662 6662 6662 6828 6829 6830 6836 6941 6961 7243
7340 7361 8405 9971
SEL VMA 1792 # 3916 7967 9220 9238 9650 9652
SPEC INSTR 1790 # 3788 3841 4858 4869 4875 5335 8931 8941 8987 9316 9654
SR_# 1791 # 4016 4017 4021 4033 4828 4892 4901 5260 5914 5934 5978
5979 5980 6102 6344 6442 6446 6456 6529 6530 6558 6592 6618
6657 6672 6848 6876 6933 6963 7022 7413 7416 7420 7423 7440
7480 7487 7860 7877 7881 7884 7930 7989 8000 8012 8022 8023
8038 8040 8049 8052 8053 8108 8118 8119 8120 8130 8162 8169
8170 8180 9557 9561 9565 9569 9573 9577 9588 9592 9596 9600
9604 9613 9618 9710 10012 10016 10022 10024 10035 10040 10041 10042
10055 10079 10081 10087 10141 10142 10151 10203 10237 10269 10319 10336
10379 10392 10395 10435 10615 10654 10698 10810 10861
VMA DEC 1808 # 7586 8945 10787
VMA INC 1809 # 4282 4306 4796 4800 4810 4811 5028 5053 5186 5194 5251
5275 5277 5842 5897 6472 6688 7205 7327 7580 7597 7928 8455
8947 8966 9083 9669 9671 9672 10232 10234 10373 10676 10783 10850
VMA_# 1803 # 5182 5191 5247 7887 7897 7898 7899 7900 8919 8954 8956
8958 8960 9628
VMA_#+AR32-35 1806 # 7973 9276 9278
VMA_#+MODE 1805 # 5245
VMA_#+PI*2 1807 # 8992 8993 9005
VMA_#+TRAP 1804 # 3834 3836
(U) DIAG FUNC 2156 #
CONI APR(L) 2175 # 8426
CONI APR(R) 2171 # 8425
CONI MTR 2181 # 8901
CONI PAG 2184 # 8819
CONI PI(L) 2170 # 8477
CONI PI(PAR) 2183 # 8475
CONI PI(R) 2169 # 8473
CONO APR 2162 # 8422 8428
CONO MTR 2160 # 8898
CONO PAG 2164 # 8815
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-14
; Cross Reference Listing
CONO PI 2163 # 8470
CONO TIM 2161 # 8886
DATAI APR 2177 # 8395
DATAI PAG(L) 2173 # 5254 8788
DATAO APR 2165 # 8388
DATAO PAG 2166 # 8756
LD AC BLKS 2167 #
LD PA LEFT 2158 # 8910 8912
LD PA RIGHT 2159 # 8911
LD PCS+CWSX 2168 # 4831 5256
RD CACHE CNT 2178 # 8876 8929
RD EBOX CNT 2176 # 8875 8928
RD EBUS REG 2185 # 4897 8805 8823 9209 9224
RD INTRVL 2179 # 8889
RD MTR REQ 2182 # 8917
RD PERF CNT 2174 # 8874 8927
RD PERIOD 2180 # 8891
RD TIME 2172 # 8873 8926
.5 USEC 2157 #
(U) DISP 1820 #
BYTE 1833 # 4869 7426 7429 7439 7493 7500 7752 7758 8286 8845 8851
9438 10261 10517 10563 10730 10775 10776 10777 10790 10830
DIAG 1821 #
DIV 1830 # 5747 5750 5755 5764 5780 5781 5782 5783 5784 5785 5786
5787 5811 5812 5813 5814 7948 7949 7950 7951 10298
DRAM A RD 1823 # 3870 3871 3872 3873 3883 3884 9820 9821 9822 9823 9839
DRAM B 1832 # 4080 4089 4221 4223 4226 4229 4233 4237 4246 4247 4253
4254 4260 4261 4267 4268 4282 4321 4331 4341 4360 4376 4386
4396 4406 4416 4427 4437 4447 4457 4467 4564 4567 4571 4898
4947 5453 5508 5528 5532 5552 5565 5597 5614 5705 5707 5712
5846 5978 5993 6442 6446 6474 6690 8292 8307 8479 8827 8871
8879 9838 9923 9924 10009 10192 10200 10378 10436 10473 10477
DRAM J 1822 # 3945 3956 3967 3978 3989 4767 4793 4801 9851 9854 9856
9859
EA MOD 1835 # 3833 3913 4723 4770 7596 7632 9243 9813 9846 10525 10540
10600 10603
MUL 1829 # 5632 5642 5644 5646 5648 5660 5662 5664 5665 5670 5862
6823
NICOND 1827 # 4004 4026
NORM 1834 # 6022 6050 6090 6102 6344 6346 6372 6377 6385 6395 6428
6523 6580 6603 6628 6636 6642 6645 6646 6786 6838 6859 6925
6927 6949 6954 6957 6959 6968 7024 7240 7254 7335 7346 7377
PG FAIL 1825 # 9199 9210
RETURN 1824 # 4310 4833 4839 4954 5207 5271 5277 5636 5637 5638 5640
5653 5654 5655 5657 5757 5759 5760 5766 5768 5769 5799 5802
5815 5816 5817 5818 6177 6179 6544 6546 6737 6748 7127 7128
7134 7135 7440 7444 7446 7447 7567 7570 7573 7574 7575 7576
7579 7586 7610 7611 7612 7613 7621 7622 7704 7705 7720 7737
7955 7981 8003 8109 8130 8180 8337 8350 8370 8374 8808 8863
8947 8968 9077 9082 9085 9116 9527 9912 9947 9951 9960 9962
9969 9971 9980 10100 10435 10439 10463 10474 10479 10483 10494 10501
10544 10559 10863
SH0-3 1828 # 5252 7001 7362 7894 8923 8942 8990 9007 9039 9058 9289
9378 10450 10452 10633 10650
SIGNS 1831 # 5719 5913 5915 9240 9277 9279 10046 10050 10077 10097 10142
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-15
; Cross Reference Listing
10143 10157 10190 10314 10371 10396 10434 10462 10489
SR 1826 # 5934 5935 5940 6347 6349 6351 6353 6380 6382 6383 6393
6412 6432 6639 6662 7008 7017 7438 7693 7803 7805 7817 7830
7859 9232 9534 9713 9725 9733 9754 10098
(U) EA CALC 2043 #
A IND 2053 # 3861 3863 3865 3867 3885 3887 9815 9816 9817 9818 9840
9841
BYTE IND 2061 # 7597 7601 7603 7605 7607 7623 7625
BYTE LD 2057 #
BYTE RD 2058 # 7415 7422 7482 7489 7610 7611 7612 7613 7621 7622
BYTE RD PC 2059 #
BYTE RPW 2060 #
LD ARX+WR 2069 # 10783
LD AR(EA) 2067 # 8113 8114 8121
LD AR+WR 2068 # 10755 10759
POP AR 2063 # 4977
POP AR-ARX 2065 # 4979
POP ARX 2064 #
PUSH 2062 # 4931 4936
WRITE(E) 2066 # 5003 8123
(U) EBUS CTL 2140 # 4832 5259 8345
DATAI 2154 # 8354 9055 9124
DATAO 2153 # 8355 9041 9091 9702
EBUS DEMAND 2144 # 8330
EBUS NODEMAND 2145 # 8333
GRAB EEBUS 2141 # 3875 3876 3877 3878 4830 8374 8916 9199 9825 9826 9827
9828
IO INIT 2150 # 8347 8350
REL EBUS 2143 # 8336 8479
REL EEBUS 2155 # 4898 8292 8825 8859 8881 8920 8930 9210 9225
REQ EBUS 2142 # 8322 8483
(U) EXP TST 1987 #
AR_EXP 1988 # 6432 6662
(U) FE 1659 # 9382
SCAD 1660 # 3914 3916 3955 3977 4004 4026 4858 4866 4875 5427 5430
5480 5483 5588 5610 5632 5636 5637 5638 5640 5642 5644 5646
5648 5653 5654 5655 5657 5660 5662 5664 5665 5670 5718 5725
5728 5747 5750 5755 5764 5780 5781 5782 5783 5784 5785 5786
5787 5798 5801 5811 5812 5813 5814 5815 5816 5817 5818 5856
5862 5871 5899 5905 5926 5994 5997 6006 6015 6016 6019 6047
6050 6077 6088 6091 6239 6262 6279 6283 6345 6348 6350 6352
6372 6376 6379 6381 6385 6392 6394 6431 6471 6483 6542 6570
6597 6599 6607 6624 6626 6627 6630 6631 6658 6661 6715 6719
6721 6730 6784 6810 6815 6821 6823 6850 6852 6854 6862 6921
6935 6936 6938 6941 6943 6964 6969 7221 7232 7235 7239 7251
7325 7339 7357 7568 7571 7595 7597 7615 7616 7617 7618 7726
7733 7802 7804 7890 7905 7906 7909 7946 7948 7949 7950 7951
7955 7977 8407 8416 8449 8764 8843 8849 8863 9007 9074 9123
9132 9203 9208 9251 9253 9255 9282 9283 9288 9331 9348 9370
9378 9393 9413 9439 9445 9476 9501 9511 9553 9847 9894 9902
9910 10003 10045 10138 10186 10282 10293 10295 10308 10340 10343 10346
10348 10461 10463 10483 10502 10524 10530 10539 10540 10585 10598 10599
10602 10628 10672 10684 10686 10699 10708 10711 10733 10736 10793 10803
(U) FETCH 2031 #
COMP 2034 # 4602
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-16
; Cross Reference Listing
JFCL 2038 # 4846
JUMP 2037 # 4668 4683 4699 4707
SKIP 2035 # 4620 10145
TEST 2036 # 4563 4566 4571 8296 8298 8300 10085
UNCOND 2032 #
(U) FLAG CTL 2010 #
DISMISS 2014 # 4766 4818 4819 8304 9042
DISMISS+LD 2016 #
HALT 2017 # 4856
JFCL 2012 # 4845
JFCL+LD 2013 # 4848
PORTAL 2019 # 4721
RSTR FLAGS 2011 # 4762 4812 4813 4816
SET FLAGS 2018 # 3730 5280 9673
(U) FMADR 1615 #
AC+# 1626 # 9727 9733 9740 9945 9949 9951 10011 10171 10171 10191 10241
10483 10555 10555 10581 10583 10584 10592 10598 10599 10602 10655 10664
10777 10790 10791 10796 10850
AC0 1616 # 3944 3999 4004 4032 4107 4119 4122 4221 4223 4226 4229
4232 4236 4289 4331 4341 4360 4376 4386 4396 4406 4416 4427
4447 4457 4571 4574 4575 4576 4602 4668 4683 4698 4707 4931
4936 4977 4979 4981 4999 5032 5037 5047 5315 5317 5320 5323
5325 5421 5424 5442 5442 5456 5464 5475 5480 5490 5497 5499
5552 5564 5587 5610 5693 5711 5717 5799 5802 5845 5869 5874
5900 6004 6047 6077 6238 6489 6498 6506 6518 6521 6529 6530
6570 6606 6670 6705 6722 6726 6759 6760 6784 6804 6815 6845
6862 6922 7018 7150 7349 7352 7374 7432 7503 7785 7801 7854
7861 7863 7911 8014 8026 8027 8029 8031 8045 8047 8084 8109
9713 9744 9752 9753 9756 9894 9902 9995 10009 10035 10088 10112
10160 10185 10195 10197 10225 10226 10262 10271 10335 10345 10347 10374
10435 10451 10453 10461 10463 10478 10494 10615 10631 10812 10835 10860
10862
AC1 1617 # 4042 4301 4302 5426 5462 5463 5479 5688 5841 5881 5897
5928 5929 5934 5935 6477 6526 6527 6555 6556 6590 6592 6597
6599 6602 6727 6733 6737 6776 6782 6783 6798 6811 6847 6848
6850 6852 6858 6921 7360 7818 7834 7836 7840 7931 8012 9557
9718 9725 9745 9941 9953 9958 9961 10040 10050 10140 10140 10260
10502 10502 10524 10539 10540 10803 10803
AC2 1620 # 5885 5895 5939 7178 8033 9719 9944 9962 10528 10529 10536
AC3 1621 # 5839 5868 5883 5888 5941 5942 9565 9592 9596 9604 9618
9735 9746 9751 9754 9896 9910 9994 10005 10006 10013 10020 10023
10030 10052 10054 10086 10095 10097 10156 10198 10201 10202 10210 10236
10269 10273 10283 10285 10307 10316 10389 10477 10489 10501 10729 10755
10758 10829
VMA 1619 # 3835 3846 3910 3911 3955 3966 3977 3988 4000 4001 4007
4009 4285 4286 4306 4620 4795 4798 4800 4810 4811 4812 4813
4816 4828 4941 4943 4946 4948 4954 4954 4982 4983 4985 4986
5001 5002 5028 5053 5186 5194 5247 5250 5260 5273 5276 7202
7230 7243 7326 7340 7506 7581 7585 7595 7598 7630 7631 7691
7693 7716 7716 7720 7762 8000 8022 8024 8044 8050 8118 8119
8126 8128 8129 8169 8176 8178 8179 8291 8295 8297 8307 8946
8966 9032 9041 9042 9090 9287 9302 9322 9348 9363 9370 9393
9674 9844 9845 9992 10117 10319 10388 10449 10559 10632 10760 10775
10784 10786 10788 10808 10813 10849 10857
XR 1618 # 3833 3863 3867 3871 3873 3884 3887 3913 4758 7603 7607
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-17
; Cross Reference Listing
7611 7613 7622 7625 7632 9816 9818 9821 9823 9839 9841 9846
#B# 1628 # 3798 3849 4773 4788 4935 5026 5031 5180 5261 5266 5270
5274 5893 5909 5911 5931 6690 6695 6697 6703 6706 6710 6715
6719 6723 6724 6725 6730 6731 6732 6734 6735 6761 6763 6765
6766 6775 6777 6778 6781 6800 6807 6808 6817 6843 6856 6857
6873 6877 6917 6918 6920 6924 6926 6951 6990 6997 7127 7128
7134 7135 7183 7184 7196 7197 7198 7245 7252 7330 7332 7343
7345 7364 7367 7373 7752 7775 7776 7780 7782 7784 7811 7815
7819 7825 7826 7837 7841 7847 7855 7883 7885 7886 7888 7907
8988 8990 9002 9024 9048 9070 9085 9115 9192 9193 9223 9232
9233 9234 9239 9242 9258 9290 9300 9307 9315 9329 9340 9345
9352 9353 9354 9369 9379 9380 9391 9406 9417 9423 9432 9447
9457 9469 9474 9478 9482 9496 9502 9510 9514 9516 9526 9533
9581 9608 9633 9664 9696 9697 9698 9736 9742 9747 9749 9758
9808 9850 9853 9855 9858 9895 9946 9947 9976 9978 9979 9993
10007 10017 10019 10028 10033 10051 10075 10094 10143 10152 10190 10204
10207 10212 10218 10259 10294 10296 10305 10306 10315 10318 10320 10321
10332 10333 10367 10369 10383 10384 10433 10436 10437 10438 10439 10447
10472 10474 10479 10488 10490 10491 10624 10741 10743 10805 10806 10858
(U) ISTAT 1915 #
OPTIONS 1919 # 8407
(U) J 1506 # 3870 3871 3872 3873 3883 3884 3945 3956 3967 3978 3989
4310 4728 4767 4793 4801 4833 4839 4954 5207 5271 5277 5636
5637 5638 5640 5653 5654 5655 5657 5757 5759 5760 5766 5768
5769 5799 5802 5815 5816 5817 5818 6177 6179 6544 6546 6737
6748 7127 7128 7134 7135 7440 7444 7446 7447 7567 7570 7573
7574 7575 7576 7579 7586 7610 7611 7612 7613 7621 7622 7704
7705 7720 7737 7955 7981 8003 8109 8130 8180 8337 8350 8370
8374 8808 8863 8947 8968 9077 9082 9085 9116 9527 9820 9821
9822 9823 9839 9851 9854 9856 9859 9912 9947 9951 9960 9962
9969 9971 9980 10100 10435 10439 10463 10474 10479 10483 10494 10501
10544 10559 10863
ACNORM 6920 # 6715
ACNRM1 6924 # 6918
ACSETU 8109 # 8163
ADD 5552 # 5545 5546 5547 5548
ADJBP 7771 # 7760 7888
ADJD1 7811 # 7803
ADJD2 7845 # 7811
ADJD3 7847 # 7813
ADJD4 7854 # 7826 7837 7848
ADJD5 7863 # 7860
ADJSP 5314 # 5301
ADJSP1 5323 # 5318
ADJX1 7825 # 7819
ADJX2 7823 # 7815
ADJX3 7817 # 7823
ADJX4 7830 # 7818
ADJX5 7835 # 7840 7841
ADJX6 7836 # 7834
ADJX7 7840 # 7830
AND 4331 # 4324 4325 4326 4327
ANDCA 4341 # 4334 4335 4336 4337
ANDCB 4396 # 4389 4390 4391 4392
ANDCM 4360 # 4353 4354 4355 4356
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-18
; Cross Reference Listing
AOBJ 4707 # 4702 4703
AOJ 4683 # 4672 4673 4674 4675 4676 4677 4678 4679
AOS 4636 # 4625 4626 4627 4628 4629 4630 4631 4632
APRBI 8405 # 8191
APRBO 8389 # 8193
APRCI 8423 # 8196 8197 8198
APRCO 8420 # 8195
APRCO7 8428 # 8422
APRDI 8394 # 8192
APRDO 8387 # 8194
ARJMP 4826 # 4812 4819 4828 9674
ARSWAP 4839 # 4774 4791 8861 9667
ASH 5440 # 5406
ASHC 5461 # 5410
ASHL 5497 # 5441 5462
ASHL1 5513 # 5498
ASHL2 5517 # 5526
ASHL3 5521 # 5523
ASHL4 5525 # 5522
ASHL5 5530 # 5533
ASHR1 5502 # 5505
ASHR2 5507 # 5502
ASHX 5538 # 5508 5532
B2DFPF 9742 # 9565
B2DPF 9744 # 9588 10379
B2DPF2 9747 # 9742
BACKD 9727 # 9569 9573 9577 9600
BACKS 9724 # 9557
BD1 10278 # 10263
BD2 10281 # 10278 10285
BD3 10283 # 10279
BD4 10293 # 10282 10298
BD6 10298 # 10293
BD7 10305 # 10294 10296
BD8 10313 # 10311
BD9 10316 # 10321
BDD1 10366 # 10336 10399
BDD2 10376 # 10371
BDD3 10383 # 10378
BDD4 10386 # 10383
BDD5 10388 # 10389
BDD6 10390 # 10388
BDD7 10392 # 10384 10393
BDDR1 10269 #
BDDR4 10369 # 10275
BDDV1 10332 # 10316
BDDV2 10339 # 10334
BDEC 10259 # 9900
BDF1 10318 # 10315
BFETCH 7620 # 7596 10525 10540 10600 10603
BFIN 7506 #
BLK1 8308 # 8286
BLK2 8307 # 8308 8309
BLK3 8311 # 8307
BLK4 8300 # 8295
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-19
; Cross Reference Listing
BLKIO 8285 # 8260 8262 8271 8273
BLT 4121 # 4114
BLT1 8083 # 4122
BLT2 8100 # 8090
BLTAC 8107 # 8100
BLTPF 9710 # 8126 8176 9581
BLTPF1 9712 #
BLTPXCT 8154 # 8091
BLTPX1 8161 # 8154
BPART2 7628 # 7597
BRJMP 4769 # 4721 4762
BXA 7601 # 7632
BYTEA 7595 # 7430 7501 7598 9144
BYTEI 7630 # 7602 7604 7606 7608 7624 7626 10539 10598
BYTEI2 7632 # 7630
CAIM 4602 # 4582 4583 4584 4585 4586 4587 4588 4589 4591 4592 4593
4594 4595 4596 4597 4598
CDBLST 6673 # 7022
CHALT 4858 # 3849
CHKAC 9114 # 9100 9105 9110
CLEAN 9553 # 7693 9232 9534 9713 9719 9725 9733 9754 10098
CLRFPD 4020 # 7506 8300
CLRPT 8859 # 8767 8833
CMPDST 10171 # 10151
CMPS 10112 # 9896
CMPS1 10116 # 10114
CMPS3 10137 # 10164
CMPS4 10138 # 10117
CMPS5 10151 # 10143
CMPS6 10160 # 10157
CMPS7 10163 # 10160
CMPSX 10145 # 10137
CMTR 8929 # 8779
CMTR1 8937 # 8929
CNV01 7977 # 7978
CNV02 7979 # 7977
CNV2WD 7967 # 7437 7882 9970
COMPEA 3883 # 3833
CONO 8289 # 8264 8275
CONS 8287 # 8266 8267 8277 8278
CONT 3733 #
D2BPF 9735 # 9561
DASMD 5841 # 5829 5830 5831
DB2WD 9958 # 10184
DBABT 10225 # 10212 10218
DBIN 10184 # 9899
DBIN2 10217 # 10211
DBIN3 10220 # 10217
DBINLP 10207 # 10221
DBLST 4289 # 6657 6673 6963
DBS1 10197 # 10191
DBS2 10199 # 10195
DBS3 10203 # 10201
DBST 10195 # 10193
DBXIT 10232 # 10209
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-20
; Cross Reference Listing
DDIV 5839 # 5832
DDIV0 5893 # 5839
DDIV1 5902 # 5906 5907
DDIV2 5909 # 5903
DDIV3 5922 # 5913 5915
DDIV4 5926 # 5923
DDIV6 5931 # 5928
DDVLP 5811 # 5811 5812 5813 5814 5926 10346
DDVSUB 5813 # 6609 6864 10341 10344 10348
DDVX1 5937 # 5934
DDVX2 5939 # 5937 5938
DEXCHK 9080 # 9044 9060
DFAS 6477 # 6479
DFAS1 6498 # 6477
DFAS2 6500 #
DFAS3 6515 # 6502
DFAS4 6521 #
DFAS5 6522 # 6516 6529 6530
DFAS6 6525 # 6507
DFDV 6590 # 6491
DFDV1 6606 # 6590 6592
DFLOAT 6471 # 6464 6465 6466 6467
DFMP 6555 # 6483
DFMP1 6560 # 6555 6557
DFMP2 6577 # 6578
DISM 4765 # 4735 4737
DIV 5687 # 5680 5681 5682 5683
DIV+ 5783 # 6598 6851
DIV- 5782 # 6080 6600 6853
DIV1 5717 # 5689
DIV2 5724 # 5694 7801
DIVLP 5780 # 5756 5765 5780 5781 5782 5783 5933
DIVS1 5747 # 5719 5726 5749
DIVS2 5750 # 5729 5752
DIVS3 5755 # 5748
DIVS4 5764 # 5751
DIVX 5797 # 5784 5785 5786 5787
DLOAD 4285 #
DMOVEM 4301 # 4295
DMOVE 4282 # 4275
DMOVNM 4302 # 4296
DMOVN 4281 # 4276
DMUL1 5874 # 5876
DMUL2 5880 # 5875
DMULT 5862 # 5856
DMVM1 4306 # 4301 8882
DNHI 6654 # 6624
DNNEG 6639 # 6618
DNNEG1 6644 # 6640
DNORM 6615 # 6523 6580 6603 6636 6642 6645 6646
DNSHFT 6633 # 6658
DNTRY 6580 # 6513 6654
DNZERO 6657 # 6615
DODIAG 8451 #
DPB 7485 # 7389
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-21
; Cross Reference Listing
DPB0 7500 # 7486
DPB01 7503 # 7483 7490
DPB1 7716 # 7504 9136 10558
DPB2 7726 # 7718
DRND1 6661 # 6629
DROUND 6628 # 6626 6630
DSTAC 4032 #
DTEVEC 9014 # 9011
EBUSI 8354 # 9055 9124
EBUSO 8355 # 9041 9092 9702
EBUSW 8332 # 8334
EBUSX 8329 # 8354 8355
EDDISP 10635 #
EDDSNG 10768 # 10776
EDEX0 10755 # 10665
EDEX1 10793 # 10790 10796
EDEX2 10775 # 10756
EDEXMD 10758 #
EDEXX 10788 # 10768
EDFL1 6694 # 6697
EDFLDS 10721 # 10656
EDFLOT 6688 # 6681 6682 6683 6684
EDFLTX 10849 # 10846
EDFLT 10844 # 10731 10831
EDFLT1 10857 # 10844 10845 10847
EDFPUT 10812 # 10818
EDIT 10613 # 9898
EDIT1 10628 # 10626
EDITLP 10630 # 10715
EDMPUT 10813 # 10743
EDMSG 10741 # 10637
EDNOP 10684 # 10638 10639 10640 10649 10686 10736
EDNXT1 10697 # 10685 10709 10712 10734 10794
EDNXT2 10708 # 10697
EDNXT3 10715 # 10701 10705
EDOPR 10649 # 10636
EDSEL 10803 # 10654
EDSEND 10736 # 10721 10812
EDSF1 10818 # 10808
EDSFIL 10808 # 10741
EDSFLT 10829 # 10809 10834
EDSKPT 10680 # 10642 10644
EDSKP 10686 # 10645
EDSPUT 10810 # 10813 10835
EDSSIG 10729 # 10655
EDSTOP 10672 # 10653 10811
EDVCHK 6868 # 6863 6869
EDVCH1 6872 # 6868
EDVCH2 6877 #
EDVCH3 6880 #
EEOV 7013 # 7006 7010
EF1 6705 # 6695
EF10 6777 # 6768
EF11 6784 # 6776 6782
EF12 6788 # 6774 6780
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-22
; Cross Reference Listing
EF3A 6717 # 6713
EF3B 6720 # 6718
EF5 6729 # 6714
EF5A 6759 # 6727 6735
EF5B 6737 # 6723 6732
EFDV0 6843 # 6703
EFDV1 6862 # 6847 6848
EFIW 3861 # 3914
EFMP 6797 # 6700
EFMP1 6800 # 6797
EFMPP1 6820 # 6821
EFMPP2 6823 # 6820
EFMPP3 6832 # 6828 6829
EMTR 8928 # 8777
EMTR1 8936 # 8928
ENFNL0 7004 # 7014
ENFNL1 7016 # 7003 7005
ENHI 6961 # 6935
ENNEG 6951 # 6933
ENNEG1 6956 # 6952
ENORM 6930 # 6786 6838 6859 6925 6949 6954 6957 6959 7024 7255 7335
7346 7377
ENSHFT 6945 # 6964
ENTRY 7024 # 6961
ENZERO 6963 # 6931
EQV 4406 # 4399 4400 4401 4402
ERND1 6966 # 6940
ERND2 6980 #
EROUND 6939 # 6937 6942
EXCH 4119 # 4113
EXMSK 3848 # 3798
EXPD 6540 # 6498
EXPD1 6545 # 6542
EXPDIF 6746 # 6712 6717
EXT01 9945 # 9943 9953 10259
EXT02 9953 # 9944
EXT2 9850 # 9838 9923 9924
EXT2WD 9941 # 9895 9993 10613
EXT3 9858 # 9852 9860
EXTEND 6296 # 6254
EXTF1 9807 # 6297
EXTF2 9813 #
EXTI 9844 # 9815 9816 9817 9818 9840 9841
EXTI2 9846 # 9844
EXTLA 9838 # 9813
EXTXA 9815 # 9847
FAD 5977 # 5954 5956 5957
FADR 5994 # 5959 5961 5962 5978
FADRI 5992 # 5960
FAS 6004 # 5995 5998
FAS1 6010 # 6006
FAS2 6012 # 6008
FAS3 6018 # 6012
FAS5 6021 # 6015 6016
FDV 5980 # 6056 6058 6059
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-23
; Cross Reference Listing
FDVCHK 6173 # 6078 6174 6608
FDVCK1 6176 # 6173 6881
FDVNEG 6102 # 6089 6103
FDVR 6074 # 5980 6061 6063 6064
FDVRI 6073 # 6062
FINI 4026 # 4017 4020 4021 4042 4573 4720 4848 5032 5888 10241
FIX 6283 # 6253
FIX1 6307 # 6280 6284
FIX2 6317 # 6315
FIXR 6279 # 6256
FLGTST 9910 # 9894 9902
FLTR 6262 # 6257
FMP 5979 # 6027 6029 6030
FMPR 6045 # 5979 6032 6034 6035
FMPRI 6044 # 6033
FPNO 5981 # 5955 5965 6028 6057
FSB 5978 # 5964 5966 5967
FSBR 5997 # 5969 5971 5972
FSBRI 5993 # 5970
FSC 6237 # 6219
GADJ1 7890 # 7862
GADJ2 7902 # 7892
GADJ3 7906 # 7908
GADJ4 7909 # 7907
GADJBP 7881 # 7876
GADJLD 7892 # 7897 7898 7899 7900
GADJL0 7896 # 7894
GBYTE 7437 # 7414 7421 7481 7488 7878
GETEEB 8373 # 4896 8387 8394 8421 8424 8755 8784 8814 8818 8869 8885
8888 8897 8900 8909
GETEXP 7926 # 7921
GETSC 7921 # 7753 7854 7886 10305 10742
GETSRC 10502 #
GIBP 7876 # 6246
GSRC 10501 # 10077 10434
GSRC1 10516 # 10141 10804
GSRC2 10524 # 10517 10526
GSRC3 10526 # 10531
GSRC4 10539 # 10528
GSRC5 10533 # 10530
GSRC6 10536 # 10533
GTAR08 9076 # 4048 9139
GTCST 9427 #
GTDBR 4309 # 4286 4302
GTEBUS 8321 # 8291
GTEEB1 8374 # 5280
GTST 7443 # 7411 7418 7478 7485 9968
GTST1 7446 # 7443
HALT1 4865 # 4870
HALT2 4869 # 4866
HLL 4223 # 4128 4176
HLLE 4264 # 4162 4163 4164 4165
HLLO 4268 # 4152 4153 4154 4155
HLLZ 4267 # 4142 4143 4144 4145
HLR 4229 # 4179 4180
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-24
; Cross Reference Listing
HLRE 4257 # 4209 4210 4211 4212
HLRM 4236 # 4181
HLRO 4261 # 4199 4200 4201 4202
HLRS 4237 # 4182
HLRZ 4260 # 4189 4190 4191 4192
HRL 4226 # 4137 4138
HRLE 4250 # 4167 4168 4169 4170
HRLM 4232 # 4139
HRLO 4254 # 4157 4158 4159 4160
HRLS 4233 # 4140
HRLZ 4253 # 4147 4148 4149 4150
HRR 4221 # 4134 4174 4175
HRRE 4243 # 4204 4205 4206 4207
HRRO 4247 # 4194 4195 4196 4197
HRRZ 4246 # 4184 4185 4186 4187
IBP 6225 # 6220
IBP0 6243 # 6225
IBP1 7752 # 6244 6247
IBP2 7757 #
IBP3 6246 # 6243
IBPS 7567 # 7427 7494 7758 9143
IDIV 5691 # 5675 5676 5677 5678
IDIV1 5692 # 5713
IDIV2 5710 # 5691
IDPB 7478 # 7388
IDPB0 7493 # 7479
IDST 10563 # 10172 10555
IDST2B 10602 # 10581
IDST2 10581 # 10564 10587
IDST3 10587 # 10582
IDST4 10595 # 10583
IDST5 10589 # 10585
IDST6 10592 # 10589
IDST7 10598 # 10595
IDST8 10599 # 10596
IFNOP 4006 # 6081 6307 6610 6865 8383 8752 8846 8852
IFSTAC 4008 # 4949 7775
IHALT 4855 # 4725
ILDB 7411 # 7386
ILDB0 7426 # 7412
ILLIND 3916 # 3875 3876 3877 3878 9825 9826 9827 9828
IMUL 5587 # 5570 5572 5573
IMUL2 5597 # 5598
IMULI 5578 # 5571
INC01 7989 # 7985 7986
INC02 8003 # 7987 7988 8004
INC2WD 7985 # 7439
INDR1 3913 # 3910
INDRCT 3910 # 3862 3864 3866 3868 3886 3888
INTRPT 3804 #
IO 8291 # 8261 8263 8265 8272 8274 8276 8311 8312
IOCHK 8364 # 8285 8380 8389 8408 8450 8751
IOFET 8303 # 8297
IOPGF 9696 # 9653
IOR 4386 # 4379 4380 4381 4382
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-25
; Cross Reference Listing
IOTEND 8295 # 8479 8827
ISOEXP 7127 # 6694 6698 6702 6705 6805 6872 7207 7350
JFCL 4842 # 4714
JFFO 5424 # 5409
JFFO1 5430 # 5431
JFFO2 5435 # 5436
JRA 5039 # 5012
JRA1 4939 # 5049 5050
JRAB 5050 # 5048
JRST 4720 # 4713
JRST2 4723 #
JRSTF 4757 # 4723 4770
JSA 5037 # 5011
JSA1 5053 # 5037
JSP 5022 # 5010
JSP1 5031 # 5022
JSR 5024 # 5009
JSR1 5028 # 5026
JSTAC 4941 # 4936 4943
JUMP 4668 # 4657 4658 4659 4660 4661 4662 4663 4664
KEEPCL 8849 # 8839 8851
KEEPME 8835 # 8769
KMOVED 9417 # 9411
L-BDEC 5200 # 5079 5080
L-CMS 5167 # 5068 5069 5070 5073 5074 5075
L-DBIN 5198 # 5077 5078
L-DFLT 7338 # 7197
L-DFSC 7349 # 7198
L-DITE 7171 # 5096
L-EDBL 7242 # 7184
L-EDIT 5169 # 5072
L-EFSC 7175 # 5098
L-FLTR 7324 # 7196
L-FSC2 7364 # 7370 7371
L-FSC3 7373 # 7366 7369
L-GTDI 7163 # 5092
L-GTDR 7167 # 5094
L-GTPI 7158 # 5089
L-GTSI 7165 # 5093
L-GTSP 7201 # 7183
L-GTSR 7169 # 5095
L-GTS1 7213 # 7211
L-GTS6 7217 # 7215
L-GTS7 7237 # 7234
L-MVS 5202 # 5082 5083 5084 5085
L-SFTE 7161 # 5091
L-SITE 7173 # 5097
L-XBLT 7156 # 5088
LDB 7418 # 7387
LDB0 7429 # 7419
LDB01 7431 # 7416 7423
LDB1 7691 # 7431 9128 10174 10518
LDB2 7696 # 7692
LDBRL 4310 #
LDIMM 9382 # 9393
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-26
; Cross Reference Listing
LDIND 9315 # 9293 9316 9387
LDIND1 9321 # 9315
LDPCS 4830 # 4824
LDPT 9399 # 9384
LDPT1 9411 # 9402 9413
LDSHR 9391 # 9385
LSH 5421 # 5408
LSH1 5480 #
LSH2 5482 # 5485
LSH3 5487 # 5483 5489
LSHC 5479 # 5412
LUUO 5177 # 5109 5110 5111 5112 5113 5114 5167 5198 5200 5202 7156
7158 7161 7163 7165 7167 7169 7171 7173 7175
LUUO1 5179 # 5177
LUUO2 5191 # 5181
LUUO3 5194 # 5192
MAP 4889 # 4883
MAP2 4901 # 9608
MBREL 8383 # 8390
MEMNRM 6917 # 6719
MOVE 4089 # 4053 4054 4060 4083 4091 4135 4177 4344 4350 4351 4365
4366
MOVELP 10019 # 10024
MOVEM 4118 # 4058
MOVF1 10094 # 10041 10087 10101
MOVF2 10097 # 10095 10320
MOVF3 10100 # 10097
MOVM 4083 # 4072 4073 4074 4075
MOVN 4086 # 4067 4068 4069 4070
MOVNEG 4091 # 4086
MOVPUT 10022 #
MOVRJ 10040 # 10013
MOVS 4080 # 4062 4063 4064 4065 4232 4236
MOVS2 10016 # 10010
MOVSTX 10078 # 10020
MOVST1 10075 # 10012 10042 10081
MOVST2 10085 # 10078
MTRCI 8899 # 8254 8255 8256
MTRCO 8896 # 8253
MTRCO1 8903 # 8898
MTRDBL 8953 # 8880 8943
MTRINT 3801 # 3911 4867 5193 5208 5333 7631 9845
MTRREQ 8916 # 3801
MTRRQ0 8923 # 8919
MTRRQ1 8941 # 8934 8935 8936 8937
MUL 5609 # 5602 5603 5604 5605
MUL1 5614 # 5615
MULM 5651 # 5646 5648 5664 5665
MULP 5634 # 5632 5642 5644 5660 5662 5670 5862 6824
MULREE 5670 # 5871 6562 6577 6813 7856
MULSUB 5631 # 5589 5611 6049
MUUO 5243 # 5118 5119 5120 5121 5122 5123 5124 5125 5126 5127 5128
5129 5130 5131 5132 5133 5134 5135 5136 5137 5138 5139 5140
5141 5142 5143 5144 5145 5146 5147 5148 5149 7186 7187 7188
7189
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-27
; Cross Reference Listing
MUUOF 5280 # 5253 5281 5282 5283
MVABT 10028 # 10023
MVABT1 10030 # 10031
MVABT2 10033 # 10030
MVEND 10035 # 10086
MVSK1 10049 # 10046
MVSK3 10054 # 10051
MVSK4 10081 # 10052
MVSKP 10045 # 10040 10047 10049
MVSO3 10015 # 10011
MVST 9992 # 9903
MVST2 10007 # 10005
NEXT 3787 # 4004 4026
NO.CST 9365 # 9332
NOCST0 9368 # 9363
NOCST1 9370 # 9368
NODIVD 5702 # 5927 7781
NOP 4017 # 4007 4602 4668 4769 4798 4822 4826 5028 5261 5426 5456
5513 5702 7149 7150 7212 7216 7432 7762 7879 7911 8038 8128
8178 8296 8298 8303 9043 10145 10312
NOP2 4021 #
NOT.WR 9481 # 9475
NOTWR 9457 # 9432 9478
NOUPDT 9472 # 9419
NXTW2 7585 # 7583
NXTWRD 7578 # 7569 7572
OPDISP 10652 # 10650
ORCA 4427 # 4420 4421 4422 4423
ORCB 4457 # 4450 4451 4452 4453
ORCM 4447 # 4440 4441 4442 4443
OVTEST 7146 #
OVTST1 7144 #
OVTST2 7150 # 7146 7148
PAGBI 8791 # 8213
PAGBO 8750 # 8215
PAGCI 8817 # 8218 8219 8220
PAGCO 8813 # 8217
PAGD2 8777 # 8766
PAGDI 8783 # 8214
PAGDO 8754 # 8216
PCA 4828 # 4741 5187
PCTXT 8800 # 5255 8789
PF1 9192 # 9189
PF2 9201 # 9199
PF24 3875 # 7615 7616 7617 7618
PF4 9232 # 9210 9226
PFPAR 9220 # 9203 9208
PFPAR1 9222 # 9220
PFPAR2 9223 # 3919
PFT 9533 # 9290 9307 9345 9353 9369 9380 9406 9457
PGF1 9628 # 9553
PGF2 9633 # 9628
PGF4 9650 # 9633
PGFAC0 9713 # 8027 9756 10716
PGRF1 9242 # 9258
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-28
; Cross Reference Listing
PGRF2 9276 # 9243
PGRF3 9282 # 9277 9279
PGRF5 9329 # 9292
PGRF6 9348 # 9344
PGRST1 9509 # 9502 9511
PGRST2 9513 # 9510
PGRST3 9526 # 9514
PHYS0 9089 # 9002
PHYS1 9100 # 9048
PHYS2 9105 # 9024
PHYS3 9110 # 9070
PIBI 8447 # 8202
PIBO 8449 # 8204
PIBPA 9139 # 9123 9133
PIBYTE 9123 # 8998
PICI 8472 # 8207 8208 8209
PICO 8468 # 8206
PICOM1 8482 # 8469 8472
PICOM2 8479 # 8470
PICYC1 8987 # 3802 3804
PICYC2 9005 # 3788
PIDATI 9055 # 8997
PIDATO 9039 # 8996
PIDI 8435 # 8203
PIDISP 8992 #
PIDO 8434 # 8205
PIDONE 9042 # 9033 9034 9062 9065 9066 9072 9094 9111 9112 9137 9703
PIDPB 9132 # 9125
PIFET 9043 # 8304 8921
PIIBP 9142 # 9127 9134
PIINCR 9032 # 8995
PIINST 9009 # 8932 8992 8993 9005
PILD 9018 # 9039 9080 9083 9142
PIOUT 9041 # 9050 9101 9102 9129
PIST 9065 # 9058
PIVECT 9007 # 8994
PMTR1 8935 # 8927
POP 4977 # 4913
POP2 4999 # 4977
POP3 5003 # 5001
POPJ 4979 # 4914
POPJ2 4989 # 4996
POPJ3 4990 # 4997
POPJ4 4991 # 4989
POPJT 4996 # 4984
PSTOR 9070 # 9061
PTLOOP 8843 # 8835 8845
PUSH 4931 # 4912
PUSHJ 4933 # 4911
PUTDST 10555 # 10022 10079 10094 10392 10810 10861
PXCT 5335 # 5332
RDEBRG 4895 # 8447
RDEMTR 8962 # 8954 8956
RDEX 9074 # 9040 9059
RDMTR 8868 # 8237 8238 8249 8250
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-29
; Cross Reference Listing
RDMTR1 8879 # 8873 8874 8875 8876
RDMTR2 8966 # 8963
RDUMTR 8964 # 8958 8960
RELEB 8336 # 8333
RELEEB 8292 # 8388 8395 8427 8428 8759 8792 8893 8903
RELMEM 7737 #
RESETP 10544 # 10537 10593
RET1 8370 # 10319
RET2 9969 # 9992
ROT 5442 # 5407
ROT3 5466 # 5469
ROT4 5471 # 5467 5474
ROTC 5463 # 5411
ROTS 5207 # 3790 9651
RSTF 4762 #
RSTF0 4760 # 4757
SDIV 7948 # 7948 7949
SDIV- 7949 # 7946
SDIVR 7953 # 7950
SECIMM 9292 # 9322
SECPTR 9287 # 9282 9306
SERFIX 8416 # 8412
SEROK 8411 # 8416
SETCA 4416 # 4409 4410 4411 4412
SETCM 4437 # 4430 4431 4432 4433
SETEBR 8832 # 8815
SETFLG 10863 # 10284 10860
SETO 4467 # 4460 4461 4462 4463
SETPC 5261 # 3730
SETZ 4321 # 4314 4315 4316 4317
SFET1 10676 # 10088 10674
SGNEXT 7134 # 6759 6762 6809 6816 6844 6880 7237 7376
SHFLOD 4003 #
SHIFT 7704 # 4844 5518 5887 6788 6834 7696 7926 7931 7971 7992 8832
9014
SHR1 5449 # 5422 5453
SHR2 5454 # 5450 5455
SIXDIV 7946 # 7774 7779
SKIP 4620 # 4609 4610 4611 4612 4613 4614 4615 4616 4636 4651
SN1 6379 # 6372 6385
SNORM 6342 # 6022 6050 6091 6102 6263 6344 6346 6377 6395 7240
SNR2 6345 # 6239
SNZERO 6392 # 6343
SOJ 4698 # 4687 4688 4689 4690 4691 4692 4693 4694
SOS 4651 # 4640 4641 4642 4643 4644 4645 4646 4647
SRCMOD 10433 # 10019 10208 10488 10490 10491
SRND2 6428 # 6408
SRND3 6431 #
SRND4 6432 # 6427
SRND5 6442 # 6393
SROUND 6408 # 6347 6349 6351 6353 6380 6382 6383
ST0 3997 # 4080 4089 4221 4223 4226 4229 4233 4237 4246 4247 4253
4254 4260 4261 4267 4268 4321 4331 4341 4360 4376 4386 4396
4406 4416 4427 4437 4447 4457 4467 5552 5565 5614 5705 5707
5712
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-30
; Cross Reference Listing
ST2AC 3999 # 4000 5540 5851 5853 5941 5943 7354
ST6 4005 # 4898 5597 6442 6446
STAC 4004 # 4016 4101 4102 4574 4575 4576 4991 5031 5054 5320 6318
7864 10035
STAC1 4042 # 6456
STAC4 10241 #
START 3730 # 4876
STBOTH 4009 #
STCST 9447 # 9439
STD1 4033 # 3999 4289 6671 7020
STDAC 5475 # 4285
STMAC 4946 # 4119 4931 5003 5324 5326
STMEM 4007 # 4307 8414 8455
STOR34 10236 # 10227 10233
STORAC 4016 # 4009 4683 4699 4707 4904 4942 5538 6316 7204 10676
STR2WD 9976 # 9942 9946 9959
STRAC1 6456 # 5437 5475 5490 8033 10374
STRAC3 5888 #
STRNC 6427 # 6412
STRPF 9749 # 9592 9596
STRPF1 9751 # 9758
STRPF2 9756 # 9740 9751 10055
STRPF3 9754 # 9747
STRPF4 9758 # 9604 9618
STSELF 4015 # 4002 4621 4947
SUB 5564 # 5557 5558 5559 5560
SWEEP 8379 # 8224 8225 8226 8227 8228 8229 8230 8231
TAKINT 3911 # 4905 8345 9632
TDC 4575 #
TDN 4573 # 4363 4364 4472 4473 4481 4482 4564 4567
TDO 4576 #
TDX 4563 # 4476 4485 4490 4494 4499 4503 4508 4512 4517 4521 4526
4530 4535 4539
TDXX 4571 # 4474 4478 4483 4487 4492 4496 4501 4505 4510 4514 4519
4523 4528 4532 4537 4541
TDZ 4574 #
TIMBO 8908 # 8239
TIMBO1 8892 # 8912
TIMCI 8887 # 8242 8243 8244
TIMCO 8885 # 8241
TIMCO1 8759 # 8886
TIMDO 8906 # 8240
TMTR1 8934 # 8926
TRAP 3834 #
TRAPX 3840 # 3834 3836
TRNABT 10463 # 10467
TRNAR 10449 # 10806
TRNFNC 10461 # 10451 10453 10464 10465 10466 10469
TRNNS1 10487 # 10477
TRNNS2 10489 # 10487
TRNRET 10472 # 10462
TRNSIG 10466 # 10468
TRNSS 10477 # 10473
TRNSS1 10493 # 10478
TST2WD 9968 # 9941 9945 9958
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-31
; Cross Reference Listing
TSX 4566 # 4477 4486 4491 4495 4500 4504 4509 4513 4518 4522 4527
4531 4536 4540
TSXX 4569 # 4475 4479 4484 4488 4493 4497 4502 4506 4511 4515 4520
4524 4529 4533 4538 4542
UNHALT 4875 # 4869
UP 8113 # 8102
UP1 8119 # 8113 8121
UP1PX 8169 # 8155 8171
UP2 8123 # 8118 8119 8120
UP2PX 8173 # 8169 8170
UP3 8125 #
UP3PX 8175 #
UP4 8128 # 8125
UP4PX 8178 # 8175
UPPX 8155 #
UUO 5242 # 4724 4736 4738 4746 4747 4760 4765 4787 4855 4901 5067
5153 5154 5300 5413 5950 5951 5981 7980 8251 8252 8321 8364
8373 8435 8482 8791 8906 9807 9811 9913 10769 10778
UUO107 4854 #
UUOC1 5266 # 5264
UUOC2 5273 # 5185 5249
UUOCOM 5264 # 5179 5244
UVERS 4048 # 8411
UXCT 5336 # 4875
WGRANT 8344 # 8322 8348 8483
WGRNT1 8347 # 8344
WGRNT2 8349 # 8347
WRFAIL 9478 # 9481
WRHPT 9482 # 9469 9476
WXFER 8334 # 8330
XBLT 8012 # 7178
XBLT3 8016 # 8014
XBLT4 8038 # 8016
XBLTDN 8022 # 8030
XBLTD1 8029 # 8026
XBLTPF 9718 # 8053 9613
XBLTUP 8044 # 8052
XBLTU1 8050 # 8040
XBLTX 8033 # 8046
XCT 4887 # 4882
XCT1 5332 # 4887
XCTGO 3832 # 3835 3846 5336
XCTW 3846 # 3733 5194 9009 9010 9012 9015
XFERW 4954 # 4939 5184 5843 5910 6473 6689 7328 7929 8804 8822 8967
9018 9019 9106 9107 10858
XHLLI 4106 # 4130
XJRSTF1 4800 # 4727
XJRSTF2 4821 # 4815 4818
XJRSTF3 4824 # 4821
XLATE 10447 # 10437
XMOVEI 4099 # 4346
XMOVEI1 4101 # 4107
XOR 4376 # 4369 4370 4371 4372
XPCW1 4787 # 4729
XPCW2 4810 # 4796
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-32
; Cross Reference Listing
XSFM1 4773 # 4740
XSFM2 4798 # 4776
(D) J 2231 #
(U) KLPAGE 1887 #
OPTIONS 1889 # 8407
(U) LONGPC 1894 #
OPTIONS 1896 # 8407
(U) MACRO%
A INDRCT 2258 # 3861 3863 3865 3867 3885 3887
A READ 2259 # 3870 3871 3872 3873 3883 3884
ABORT INSTR 2264 # 8941 9654
AC0 2265 # 4981 4999 5315
AC0_AR 2266 # 3999 4004 4032 4289 5032 5456 5475 5490 5874 6506 6518
6670 6726 6760 7018 7150 7432 7801 7854 7911 8029 8031 8045
8047 8109 9713 9744 9753 10160 10226 10345 10347 10374
AC1_AR 2267 # 4042 5426 5881 5928 5929 6526 6597 6599 6727 6733 6850
6852 7836 7931 9718 9745 9953 9961
AC2_AR 2268 # 5885 5939 8033 9719 9944 9962
AC3_AR 2269 # 5868 5888 5941 5942 9735 9751 9754 10030 10054 10086 10156
10201 10202 10236 10273 10285 10316
AC4 2271 # 9740 9945 9951 10191 10241
AC4_AR 2275 # 9740 9951 10241
AC5 2277 # 9949
AC5_AR 2281 # 9949
AD FLAGS 2282 # 4091 4287 4303 4636 4651 4683 4699 5552 5565 5851 5853
AD LONG 2283 # 5942 6318 10278
ADMSK 2284 # 3798 4773 4788 4935 5026 5031 5180 5261 5266 5270 5274
8990 9002 9024 9048 9070 9085 9115 9664 9978 9979
AR+ARX+MQ_0.M 2514 # 6392 7354 7771 10076 10433
AR+MQ_0.M 2515 # 10210
AR+MQ_0.S 2516 # 6939
AR0-3 DISP 2518 # 9039 9058 9289 9378 10450
AR0-8_# 2519 # 4048 5281 5282 5283 6747 6801 6855 6991 7209 7211 7217
7250 7331 7344 8766 8778 8860 9413 10003 10186 10308
AR0-8_# AND AR0-8 2520 #
AR0-8_# OR AR0-8 2521 # 9481
AR0-8_#+SC 2522 # 9809
AR0-8_-SC-1 2523 #
AR0-8_FE 2524 # 8414 9235 10008 10193
AR0-8_FE OR # 2525 # 10194
AR0-8_FE OR SC 2526 # 9257
AR0-8_FE# 2527 # 10191
AR0-8_FE+# 2528 # 9011 9075 9139
AR0-8_FE+1 2529 #
AR0-8_FE+SC 2530 #
AR0-8_FE-SC 2531 #
AR0-8_FE.M 2532 # 10313
AR0-8_FE.R 2533 #
AR0-8_SC 2534 # 7921 7923 7969 9236
AR0-8_SCAD 2535 # 7921 7923 7969 8414 9235 9236 10008 10193
AR0-8_SCAD# 2536 # 9011 9075 9139 9481 9809 10194
AR0-8_SCAD.M 2537 # 9257 10313
AR0-8_SCAD.R 2538 #
AR12-17_PC SEC 2539 # 5045 5050
AR12-17_PREV SEC 2540 # 4774 4791 5268 8801 9667
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-33
; Cross Reference Listing
AR18-21 DISP 2541 # 10452
ARL+ARX+MQ_0.M 2565 #
ARL+ARX_0.M 2566 # 7813 7846 8879 8942
ARL_0S 2546 # 4246 4260
ARL_0.C 2543 # 8307
ARL_0.M 2544 # 5048 5049 9292 9293 9294 9385 9386 9401 9852 10390 10393
10625 10703 10729 10758 10829
ARL_0.S 2545 # 4982 4985 8903
ARL_1S 2548 # 4247 4261 9860
ARL_1S.M 2549 #
ARL_1.M 2547 # 4101 5264
ARL_AC0 2550 # 4221 4229 4236
ARL_ARL 2551 # 4122 4223 4237 4267 4268 5271 7834 8427 8478
ARL_ARL.M 2552 # 8754
ARL_ARL.S 2553 # 4107
ARL_ARR 2554 # 4226 4232 4233 4253 4254 5314 8107 8161 8289 8413 9712
ARL_ARR.M 2555 # 8420 8468 8813 8896
ARL_ARR.S 2556 #
ARL_ARX (ADX) 2557 # 9237
ARL_ARXL 2558 # 4775 5054 8893 9668
ARL_ARXL.M 2559 #
ARL_BRL 2560 # 4792 7584 8792
ARL_BRL.M 2561 # 8089
ARL_BRL.S 2562 # 5257
ARL_SHIFT 2563 # 9382
ARL_SIGN 2564 # 5319
ARR+MQ_0.S 2582 #
ARR_0S 2571 # 4253 4267
ARR_0.C 2568 #
ARR_0.M 2569 # 8826
ARR_0.S 2570 # 5432
ARR_1S 2572 # 4254 4268
ARR_AC0 2573 # 4122 4223 4226 4232
ARR_AC0.S 2574 # 4107
ARR_AR+1 2575 #
ARR_AR+BR 2576 #
ARR_ARL 2577 # 4229 4236 4237 4260 4261 5048 5049 8089 8754 9237 9242
ARR_ARR 2578 # 4101 4221 4233 4246 4247 4775 4792 5314 5319 8289 8420
8468 8813 8896 9668
ARR_ARX+BR 2579 #
ARR_BR 2580 # 8413
ARR_PC+1 2581 # 5054
ARX+MQ_0.M 2678 # 5427 5687 5692 6237 7786 10260
ARX+MQ_0.S 2679 # 6074
ARX0-3 DISP 2682 # 8942
ARX0_AR35 2680 #
ARX0_MQ35 2681 # 10137
ARX_-AC0 2587 #
ARX_-BRX 2588 # 7802
ARX_-SLEN 2589 # 9736
ARX_-2+MQ0 2586 #
ARX_0S 2593 # 4843 5525 5631 5855 5909 5995 5997 6045 6103 6526 6560
6657 6812 6963 7776 7825 7836 8813 8824 8859 10142 10190 10195
10372
ARX_0.C 2590 #
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-34
; Cross Reference Listing
ARX_0.M 2591 # 5421 6343 7253 7903 10386
ARX_0.S 2592 #
ARX_1B1 2595 # 6280
ARX_1B17-1 2596 # 5254 8788
ARX_1S 2597 # 3789 6411 6832 10010 10201 10614
ARX_1 2594 # 5314 6663 7017
ARX_2 2598 # 6966
ARX_AC0 2600 # 5442 10271 10615
ARX_AC0 COMP 2601 #
ARX_AC0+1 2602 # 4931 4936
ARX_AC1 2603 # 4301 4302 5463 5479 5897 6527 7360
ARX_AC2 2604 # 7178
ARX_AC3 2605 # 5839 5883 10389
ARX_AC4 2606 # 10191
ARX_AR 2608 # 4119 4121 4866 5497 5499 5503 5517 5704 5706 5717 5845
6013 6016 6262 6297 6498 6500 6503 6606 6766 6768 6770 6784
6862 6922 6987 7002 7004 7206 7244 7341 7355 7419 7429 7486
7500 7581 7697 7926 7946 7954 7970 7977 8083 8476 8777 8779
8807 8908 9014 9056 9076 9125 9144 9411 9650 9652 9752 10004
10007 10040 10078 10112 10138 10156 10158 10210 10269 10335 10377 10450
10524 10529 10540 10584 10599 10602 10631 10703 10729 10736 10829
ARX_AR (AD) 2609 # 5336 5451 5466 5468 5473 5484 7930 8754 9192 9193 9236
9418 10536 10592
ARX_AR ANDCA BR 2611 # 9977
ARX_AR AND ADMSK 2610 # 9085
ARX_AR SIGN 2612 # 6284
ARX_AR SWAP 2613 # 4814 4817 5037 5270 8426 8474 8821 8890 8923 9242 9427
9472 10390 10452
ARX_AR*2 2614 #
ARX_AR*4 COMP 2615 # 10306
ARX_AR*MSK 2616 # 10472
ARX_AR+1 2617 # 10311
ARX_AR+CBR 2619 #
ARX_AR-1 2621 # 4999 10116 10160 10161
ARX_AR-BR 2622 #
ARX_ARX AND ADMSK 2624 # 9115
ARX_ARX ANDC ADMSK 2625 # 4773
ARX_ARX*-6 2626 # 5433
ARX_ARX*.25 2627 # 6090
ARX_ARX*.5 2628 #
ARX_ARX*2 2629 # 4309 5844 6308 6474 6690 7233 7235 7329 7373 8968 10197
10643
ARX_ARX*2 COMP 2630 # 9383
ARX_ARX*4 2631 # 6967 10641
ARX_ARX*4 COMP 2632 #
ARX_ARX*8 2633 # 5893 8800 8801
ARX_ARX*BRX 2634 # 6433 6672 7021
ARX_ARX*EXPMSK 2635 #
ARX_ARX+1 2636 # 5436 8129 8179
ARX_ARX+CBR 2638 #
ARX_ARX+FM[] 2640 #
ARX_ARX-1 2641 # 5431 7823 8017 8029
ARX_ARX-1 (AD) 2642 # 10045
ARX_ARX-AR*4 2643 #
ARX_BR 2645 # 5507 5902 9303
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-35
; Cross Reference Listing
ARX_BR*2 2646 # 5898
ARX_BR+1 2647 # 8045
ARX_BRX 2648 # 4842 5177 5243 5521 5539 6512 6541 6670 7019 9057 9950
10155
ARX_BRX COMP 2649 # 6641 6644 6953 6956
ARX_BRX+1 2650 # 8047 10012 10042 10081
ARX_DSTP 2651 # 10171 10555
ARX_DSTP2 2652 # 10583 10777
ARX_E1 2653 #
ARX_FILL 2654 # 9946 9947
ARX_FM 2655 # 7907 9379 9502 9510 9514 9516 9581 9946 9947 10140 10171
10332 10502 10528 10555 10583 10777 10803
ARX_FM(VMA) 2657 # 3835
ARX_FM[] 2656 #
ARX_MEM 2658 # 3846 3910 3911 4285 4286 4954 4983 4986 5247 7230 7630
7631 7716 9844 9845
ARX_MQ-1 2659 #
ARX_PC 2661 # 9238 9663
ARX_PC+1 2662 # 4729 4740 5273
ARX_SHIFT 2663 # 5207 5471 5487 5502 5533 5724 5727 5882 5886 5894 5900
5911 6015 6311 6317 6375 6772 6779 6989 7696 7732 7735 7989
8825 8953 8955 8957 8959 9114 9292 9302 9386 10262
ARX_SRCP 2664 # 10140 10502 10803
ARX_SRCP2 2665 # 10528
ARX_SV.AR 2667 # 9510
ARX_SV.ARX 2668 # 9514 9516 9581
ARX_SV.BR 2669 # 9502
ARX_SV.VMA 2670 # 9379
ARX_T0 2672 # 7907
ARX_T2 2673 # 10332
ARX_VMA HELD 2677 # 9238
AR_(AR+2BR)*.25 2290 # 5661 6021
AR_(AR+BR)*.25 2291 # 5643 5659
AR_(AR-2BR)*.25 2292 # 5645
AR_(AR-BR)*.25 2293 # 5647 5663
AR_(ARX OR AR*4)*.25 2294 #
AR_-AC0 2295 #
AR_-AR 2296 # 5998 6446
AR_-AR LONG 2297 # 5749 5752 6174 6479 6673 6696 6869 10279
AR_-BR 2298 # 4091 5759 5769 5942 6646 6717 6958 10275 10342
AR_-BR LONG 2299 # 4287 4303 5904 5907 5938 10234
AR_-BR*2 LONG 2300 #
AR_-BRX 2301 # 5704
AR_-DLEN 2302 #
AR_-SLEN 2303 # 9749 10028
AR_0.C 2304 # 4740 6832
AR_0.M 2305 # 5484 10050 10311
AR_0.S 2306 # 4790 5267 9666
AR_0S 2307 # 4253 4267 4289 4306 4321 4858 4895 5252 5441 5631 5855
6316 6408 6560 6657 6703 6800 6812 6963 7696 7697 7753 7776
7854 7886 7931 7946 8750 8765 8807 8817 8821 8859 8862 8870
8887 8890 8899 8908 8923 8946 8953 8955 8957 8959 9007 9014
9076 9082 9234 9250 9672 9735 10007 10078 10190 10195 10372 10377
10742
AR_1 2308 # 5691 9428 10199
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-36
; Cross Reference Listing
AR_1 LONG 2309 # 10281
AR_1S 2310 # 4254 4268 4467 10015 10202 10305
AR_2 2311 # 10857
AR_2(AR*BR) 2312 # 5747 5750 5755 5764 5780 5781 5782 5783 5811 5812 5813
5814 5922 5924 7948 7949 10221
AR_2(AR+1) 2313 # 5435
AR_2(AR+BR) 2314 # 5750 5755 5780 5783 5811 5814 5924 7948
AR_2(AR+BR) LONG 2315 # 10221
AR_2(AR-BR) 2316 # 5747 5764 5781 5782 5812 5813 5922 7949
AR_AC0 2318 # 3944 4119 4122 4223 4226 4232 4668 4698 4977 4979 5037
5047 5421 5424 5442 5464 5480 5497 5499 5564 5587 5610 5693
5711 5717 5845 5869 5900 6004 6047 6077 6238 6498 6521 6529
6530 6570 6606 6705 6722 6759 6784 6804 6815 6862 6922 7349
7374 7503 7861 7863 8014 8084 9894 9902 9995 10112 10262 10335
AR_AC0 COMP 2319 # 10185
AR_AC0+1 2320 # 4683 4707 8026 8027
AR_AC1 2321 # 5934 5935 6555 6556 6602 6776 6782 6783 6811 6858 7818
8012 9941 9958 10260
AR_AC1 COMP 2322 #
AR_AC1*2 2323 # 5462 5688 5841 6477 6590 6592 6737 6798 6847 6848 6921
AR_AC2 2324 # 5895
AR_AC3 2325 # 9746 9896 9910 9994 10198 10269 10283 10307 10758
AR_AC3*2 2326 #
AR_AC4 2327 # 9945
AR_ADMSK AND VMA HEL 2329 #
AR_AD*.25 LONG 2328 # 5749 5752 6174 6479 6673 6696 6869 10279 10376
AR_ARX 2385 # 3832 3913 4757 4942 4947 4949 5271 5276 5475 5490 5521
5525 5881 5893 5898 6088 6342 6515 6518 6526 6633 6726 6731
6945 7221 7252 7585 7632 7782 7817 7909 7930 8031 8033 8427
8756 8910 9074 9192 9193 9208 9239 9258 9300 9331 9340 9418
9423 9482 9510 9513 9515 9718 9740 9744 9813 9846 9850 9853
9855 9858 10086 10142 10201 10273 10294 10296 10320 10393 10494 10531
10536 10592 10625 10626 10627 10652 10656 10685 10704 10734 10782 10790
10844 10845 10846 10847
AR_ARX (ADX) 2387 # 5451 5467 5468 5474 5482 5489 6314 6373 6506 6519 6634
6946 7812
AR_ARX (AD) 2386 # 3861 3865 3870 3872 6779 6788 7970 9473 9712 10156 10158
AR_ARX ANDC ADMSK 2389 # 4788 5180 5266 9664
AR_ARX AND ADMSK 2388 # 5274
AR_ARX COMP 2390 # 10006
AR_ARX OR PUR 2392 #
AR_ARX*.25 2394 # 6090 9411
AR_ARX*.25-AR-1 2395 # 10309
AR_ARX*2 2396 # 7859
AR_ARX*4 2397 #
AR_ARX*4 COMP 2398 #
AR_ARX*AC1 2399 # 7834 7840
AR_ARX*BR 2400 # 7016 8802
AR_ARX*BRX 2401 # 4795 8478 9670 10054
AR_ARX*E1 2402 # 7841
AR_ARX+1 (AD) 2403 # 9900 9912 10586
AR_ARX+AR*4 2404 #
AR_ARX+BR 2405 # 6999 9710
AR_ARX+BRX+1 2406 #
AR_ARX+XR 2407 # 3863 3867 3871 3873
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-37
; Cross Reference Listing
AR_ARX-1 2408 # 5437 7845 10116 10160 10161
AR_ARX-BR 2409 # 9753
AR_AR AND ADMSK 2331 # 4935 5026 5031
AR_AR AND CSMSK 2333 # 9352 9432 9447
AR_AR OR PUR 2334 # 9354 9469
AR_AR SWAP 2336 # 4080 4566 4569 4839 5993 6044 6073 7352 7978 7991 8108
8162 8407 8411 8827 8911 9502
AR_AR*.25 2338 # 7248
AR_AR*.25 LONG 2339 # 5642 5665 6102 6345 6394 6623 6625 6934 6936 6980 7238
AR_AR*.5 2340 # 6431 7247
AR_AR*.5 LONG 2341 # 6627 6661 6938 6969 6983 7972 10437 10805
AR_AR*1.25 LONG 2342 # 10376
AR_AR*10 2343 # 10200
AR_AR*10 LONG 2344 # 10293 10398
AR_AR*2 2345 # 3798 8918
AR_AR*2 LONG 2346 # 6348
AR_AR*4 2347 # 8994 8998 9040 9059
AR_AR*4 LONG 2348 # 6350
AR_AR*5 LONG 2349 # 10220
AR_AR*8 2350 # 6720 6729 7220 10637 10645 10680
AR_AR*8 LONG 2351 # 6352 6371 6384
AR_AR*AC0 2352 # 4331 4341 4360 4376 4386 4396 4406 4416 4427 4447 4457
4574 4575 4576 5317 5320 5552 7785
AR_AR*AC1 2353 #
AR_AR*BR 2354 # 4847 5191 5269 6992 8803 9445 10272
AR_AR*EXPMSK 2355 #
AR_AR*MSK 2356 # 10474
AR_AR*SFLGS 2357 # 9752 9756 10035 10225
AR_AR*SLEN 2358 # 9747
AR_AR*T0 2359 # 9742 10152
AR_AR+1 2361 # 3848 4636 6628 6640 6952 7578 7582 8308 9033 9091 10047
10336 10526 10534 10582 10590 10673 10708 10710 10834
AR_AR+1 LONG 2362 # 10336
AR_AR+1-AR0 2363 # 10530 10585
AR_AR+BR 2364 # 5784 5787 5797 5851 5863 6318 6428 6522 6569 6785 6806
6814 6968 7251 7361 7950 7953 8107 8161 8843 8849 8881 8944
9084 9751 10034
AR_AR+BR LONG 2365 # 5797 5851 5863 6569 6814 8881 8944
AR_AR+E1 2366 # 10384 10438
AR_AR+FM[] 2367 #
AR_AR+SBR 2369 #
AR_AR+T0 2371 # 7819 7847
AR_AR+T1 2372 # 7780 7811 7815
AR_AR+XR 2377 #
AR_AR-1 2379 # 4651 4699 4980 9034 10487
AR_AR-BR 2380 # 5565 5785 5786 5800 5853 6803 7219 7951 8090 8091 10004
10031
AR_AR-BR LONG 2381 # 5800 5853
AR_AR-BR-1 2382 #
AR_AR-T0 2383 #
AR_BRX 2424 # 5260 5527 5706 5902 7888 7987 7988 7989 8000 9058 9061
9135 9808 10786 10835
AR_BRX+1 2425 # 8045
AR_BR 2411 # 4991 5517 5530 5713 5882 5886 5941 5981 6297 6309 6427
6512 6541 6635 6714 6718 6802 6844 6947 6998 7213 7218 7332
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-38
; Cross Reference Listing
7345 7351 7439 7440 7573 7574 7575 7576 7760 7885 7887 7903
7905 8003 8321 8364 8373 8435 8482 8791 8868 8906 9233 9255
9301 9703 9807 9811 9913 10139 10155 10768 10788
AR_BR COMP 2412 # 6641 6644 6953 6956 10005
AR_BR COMP LONG 2413 # 5906
AR_BR LONG 2414 # 5912 5914 5937 6773 6835 8053 9561 9588 9613 10204 10217
10226 10232 10339 10370 10379 10395
AR_BR OR ARX 2415 # 9944 9949 9961
AR_BR*.5 2416 #
AR_BR*.5 LONG 2417 # 10285
AR_BR*2 2418 # 6006
AR_BR*2 LONG 2419 # 5515 6379
AR_BR*4 2420 #
AR_BR*4 LONG 2421 # 6381
AR_BR+1 2422 # 7986 8047
AR_BR+1 LONG 2423 #
AR_CACHE CNT 2427 # 8876 8929
AR_DLEN 2428 # 9592 9596 9604 9618 10013 10020 10023 10477 10501
AR_DLEN COMP 2429 # 9565
AR_DLEN+1 2430 # 10095
AR_DSTP 2431 # 9727 10011 10171 10483 10555 10655 10664
AR_DSTP+1 2432 #
AR_DSTP2 2433 # 10584 10850
AR_DSTP2+1 2434 #
AR_DSTW 2435 #
AR_E0 2436 # 7826
AR_E1 2437 #
AR_EBOX CNT 2438 # 8875 8928
AR_EBUS 2439 # 3802 3804 8332
AR_EBUS REG 2440 # 4897 8805 8823 9209 9224
AR_FILL 2441 # 10094
AR_FM[] 2443 # 9696
AR_FM 2442 # 5911 5931 7775 7826 7837 7855 9290 9307 9345 9353 9369
9380 9406 9457 9474 9496 9557 9592 9596 9604 9608 9618 9633
9698 9727 10011 10013 10020 10023 10040 10088 10094 10140 10171 10321
10333 10435 10451 10453 10477 10478 10483 10490 10501 10502 10529 10555
10584 10655 10664 10803 10812 10850 10860 10862
AR_FM(#) 2445 #
AR_FM(VMA) 2447 #
AR_INTERVAL 2448 # 8889
AR_MEM 2450 # 3955 3977 3988 4812 4813 4816 4828 4954 4982 4985 5001
5002 7202 7243 7326 7340 7581 7691 7693 7716 7720 8022 8050
8118 8119 8169 8291 9032 9041 9090 9287 9302 9322 9348 9370
9393 9674 9992 10117 10319 10388 10449 10632 10760 10775 10808 10813
AR_MQ 2451 # 5471 5487 5815 5816 5817 5818 5864 5870 5885 5932 6317
6525 6577 6597 6599 6820 6850 6852 6880 7144 7732 7784 7954
8024 9056 10143 10345 10347 10557 10794
AR_MQ COMP 2452 # 6617 6932
AR_MQ*.25 2453 # 6375
AR_MQ*2 2454 #
AR_MQ*4 2455 # 9125
AR_MQ*AC1 2456 #
AR_MQ*AC2 2457 #
AR_MQ*AC3 2458 #
AR_MQ+1 2459 # 3787 8100 8154
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-39
; Cross Reference Listing
AR_MQ+AC0 2460 #
AR_MQ+BR 2461 #
AR_MQ-1 2462 # 8017 8029 8044
AR_MQ-BR 2463 #
AR_MTR REQ 2464 # 8917
AR_PC 2465 # 4845 5250 7967 9650 9652
AR_PC FLAGS 2466 # 5270
AR_PC+1 2467 # 4933 5022 5024
AR_PERF CNT 2468 # 8874 8927
AR_PERIOD 2469 # 8891
AR_PUR+AR0 2471 #
AR_SERIAL 2474 # 8405
AR_SFLGS 2475 # 10088 10435 10451 10453 10478 10812 10860 10862
AR_SHIFT 2476 # 4003 4033 4307 4843 5207 5257 5428 5430 5449 5454 5538
5539 5597 5880 5883 5896 5940 6018 6517 6527 6631 6658 6670
6777 6943 6964 7018 7146 7148 7357 7360 7704 7735 7737 7904
7908 8381 8792 8947 9077 9303 9654 9736 10016 10203 10237 10378
10461 10615 10633
AR_SIGN 2477 # 3999 4032 5502 5503 5514 5598 5724 5727 5874 5939 6012
6013 6263 6311 6500 6503 6768 6770 6987 7334 7341 7355 10236
AR_SLEN 2478 # 10490
AR_SLEN COMP 2479 # 9758 10033 10051 10212 10218
AR_SLEN+1 2480 # 10019 10207 10367 10488 10491
AR_SRCP 2481 # 9557 10040 10140 10502 10803
AR_SRCP+1 2482 #
AR_SRCP2 2483 # 10529
AR_SRCP2+1 2484 #
AR_SV.AR 2485 # 9698
AR_SV.ARX 2487 #
AR_SV.BR 2488 # 9290 9307 9345 9353 9369 9380 9406 9457
AR_SV.PFW 2489 # 9474 9608 9633
AR_SV.SC 2490 # 9496
AR_SV.VMA 2491 #
AR_SWD 2493 #
AR_T0 2495 # 5911 7775 7837 10321
AR_T1 2496 # 5931 10333
AR_T2 2497 # 7855
AR_TIME BASE 2498 # 8873 8926
AR_VMA HELD 2509 # 7967 9650 9652
AR_XR 2510 # 4758
AR_[] AND FM[] 2288 # 9979
B DISP 2686 # 4282 4564 4567 4571 4947 5453 5508 5528 5532 5846 5978
5993 6474 6690 8307 8871 8879 9923 9924 10009 10192 10200 10378
10436 10473 10477
B WRITE 2687 # 4898 5597 6442 6446 8292 8479 8827
BLKO TIM(L) 2688 # 8910 8912
BLKO TIM(R) 2689 # 8911
BR_AR LONG 2690 # 4310 5514 5631 5798 5801 5902 5904 5906 5907 5912 5914
5937 5938 6309 6371 6384 6408 6411 6477 6482 6490 6832 6835
6846 6939 8962 8964 10199 10207 10217 10281 10283 10339 10342 10366
BYTE DISP 2691 # 4869 7426 7429 7439 7493 7500 7752 7758 8286 8845 8851
9438 10261 10517 10563 10730 10775 10776 10777 10790 10830
BYTE INDRCT 2695 # 7601 7603 7605 7607 7623 7625
BYTE LOAD 2696 #
BYTE PREV & CLR SR3 2698 # 7413 7480 7877
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-40
; Cross Reference Listing
BYTE PREV & SET SR2 2699 # 7881
BYTE PREV & SET SR3 2700 # 7420 7487
BYTE READ 2702 # 7610 7611 7612 7613 7621 7622
BYTE READ PC 2703 #
BYTE RPW 2704 #
CALL 2711 # 3790 4774 4791 4824 4844 4896 4939 5179 5184 5185 5244
5249 5253 5255 5518 5589 5611 5870 5887 5910 5926 5932 6078
6080 6498 6562 6577 6590 6592 6608 6689 6694 6698 6702 6705
6712 6717 6723 6732 6759 6762 6774 6780 6805 6809 6813 6816
6824 6834 6844 6847 6848 6851 6853 6863 6872 6880 7207 7237
7328 7350 7376 7411 7414 7418 7421 7430 7431 7437 7439 7478
7481 7485 7488 7501 7504 7753 7801 7854 7856 7878 7882 7886
7929 7971 7992 8100 8118 8119 8120 8154 8169 8170 8285 8291
8322 8379 8387 8389 8394 8408 8411 8423 8449 8472 8750 8766
8767 8777 8784 8789 8804 8817 8822 8832 8833 8861 8868 8885
8887 8899 8908 8918 8967 9014 9040 9041 9044 9055 9059 9060
9080 9083 9092 9100 9105 9110 9123 9124 9127 9128 9133 9134
9136 9142 9651 9667 9702 9894 9895 9902 9941 9942 9945 9946
9958 9959 9968 9970 9992 9993 10019 10022 10041 10079 10087 10094
10141 10151 10172 10184 10208 10259 10284 10305 10319 10320 10334 10341
10344 10392 10537 10555 10558 10593 10613 10731 10742 10804 10806 10810
10831 10858 10861
CALL [] 2715 # 4774 4791 6689 6694 6698 6702 6705 6712 6717 6723 6732
6759 6762 6774 6780 6805 6809 6813 6816 6824 6834 6844 6847
6848 6851 6853 6863 6872 6880 7207 7237 7328 7350 7376 7414
7421 7481 7488 7882 7971 7992 8408 8411 8767 8833 8861 9092
9667 9894 9895 9902 9941 9942 9945 9946 9958 9959 9970 9992
9993 10184 10259 10613
CALL.C 2718 #
CALL.M 2719 # 5689 5693 5756 5765 5862 6598 6600 7427 7494 7757 7774
7779 8420 8469 8755 8814 8880 8897 8943 9039 9143 10076 10433
10516
CALL.S 2720 # 4286 4302 5843 6049 6473
CALL[] 2716 #
CBR 2727 # 9329 9340 9417 9423
CLR ACC+SET UCODE 2729 #
CLR ACCOUNT EN 2730 # 3801 9189 9191
CLR AR 2731 # 3789 6308 6411 6746 6797 6799 6854 6985 7208 7215 7244
7249 7329 7342 10010 10332 10614
CLR ARX 2732 # 5527 5588 5609 5711 6309 6314 6374 6427 6428 6520 6634
6780 6788 6946 7855 10015 10199
CLR EBUS DEMAND 2733 # 8333
CLR EXP 2734 # 10270
CLR FE 2735 # 4004 4026 4858 4875 6392 6715 6719 6854 6921 7357
CLR FPD 2736 # 4020 7432 7879 10372
CLR MQ 2737 # 5839 6662 7243 7340 7361
CLR MTR PA EN 2738 #
CLR PT LINE 2740 # 8844
CLR PT LINE (KEEP) 2741 # 8850
CLR P 2739 # 4102 5265
CLR SC 2742 # 4004 4026 4858 5928 6803
CLR SPECIAL CYCLE 2743 # 9316
CLR SR2 2744 #
CLR SR3 2745 # 6529
CLR TRACKS EN 2746 #
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-41
; Cross Reference Listing
CLR TRK+PA EN 2747 #
CMS FETCH 2748 # 10145
COMP FETCH 2749 # 4602
CONI APR(L) 2750 # 8426
CONI APR(R) 2751 # 8425
CONI MTR 2752 # 8901
CONI PAG 2753 # 8819
CONI PI(L) 2754 # 8477
CONI PI(PAR) 2755 # 8475
CONI PI(R) 2756 # 8473
CONO APR 2757 # 8422 8428
CONO MTR 2758 # 8898
CONO PAG 2759 # 8815
CONO PI 2760 # 8470
CONO TIM 2761 # 8886
CONTINUE 2762 # 4869
CSMSK 2764 # 9352 9432 9447
DATAI APR(L) 2767 # 8395
DATAI PAG(L) 2768 # 5254 8788
DATAO APR 2769 # 8388
DATAO PAG(L) 2770 # 8756
DIAG IN 2771 # 4897 5254 8395 8425 8426 8473 8475 8477 8788 8805 8819
8823 8873 8874 8875 8876 8889 8891 8901 8917 8926 8927 8928
8929 9209 9224
DIAG OUT 2772 # 8388 8422 8428 8470 8756 8815 8886 8898 8910 8911 8912
DISMISS 2773 # 4766 4818 4819 8304 9042
DIVIDE 2774 # 5747 5750 5755 5764 5780 5781 5782 5783 5784 5785 5786
5787 5811 5812 5813 5814 7948 7949 7950 7951
DLEN 2775 # 9565 9592 9596 9604 9618 10005 10006 10013 10020 10023 10052
10095 10097 10477 10489 10501
DLEN_AR 2776 # 10005 10006 10052 10097 10489
DROP EBUS REQ 2777 # 8345
DSTP 2779 # 9727 9733 10011 10171 10171 10483 10555 10555 10581 10598 10599
10602 10655 10664 10790 10791
DSTP2_AR 2787 # 10592 10796
DSTP2 2785 # 10583 10584 10592 10777 10796 10850
DSTP_AR 2783 # 9733 10598 10599 10602 10790 10791
DSTW 2788 #
DSTW_AR 2789 #
E0 2793 # 6690 6697 6725 6730 6808 6918 7826 7885 9808 10479 10741
10743 10858
E0_AR 2794 # 7885 9808
E1 2795 # 6706 6715 6734 6775 6781 6800 6843 6951 7183 7184 7196
7197 7198 7245 7330 7343 7841 7888 9850 9853 9855 9858 10383
10384 10436 10437 10438 10447 10805 10806
E1_AR 2796 # 7888 9850 9853 9855 9858
EA MOD DISP 2798 # 3833 3913 4723 4770 7596 7632 9813 9846 10525 10540 10600
10603
EPT FETCH 2803 # 9009 9010 9015
EPT REF 2804 # 8963 9018 9065 9282
EPT REF CACHE 2805 # 7892 7974
EXEC REF 2806 #
EXIT 2807 # 4080 4089 4221 4223 4226 4229 4233 4237 4246 4247 4253
4254 4260 4261 4267 4268 4321 4331 4341 4360 4376 4386 4396
4406 4416 4427 4437 4447 4457 4467 5552 5565 5614 5705 5707
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-42
; Cross Reference Listing
5712
EXIT DBL 2808 # 4000 5851 5853 5941 5943
EXP TEST 2809 #
EXP TST 2810 # 6432 6662
EXPMSK 2811 # 3849 6924 6926 6990 7127 7128 7134 7135 7364 7367 7883
9976
EXP_-SC-1 2812 #
EXP_-SC-1 TST 2813 #
EXP_1 2814 # 6578
EXP_FE TST 2815 # 6432 6662
EXP_SC 2816 # 7246
EXP_SC.MS 2817 # 6986
EXP_SCAD 2818 # 6578 7246 10270
EXP_SCAD.C 2819 # 6432 6662
EXP_SCAD.MS 2820 # 6986
EXP_SIGN 2821 # 5994 5997 6005 6045 6048 6074 6173 6239 6471 6540 7358
EXP_SIGN.C 2822 # 7253
EXP_SIGN.MS 2824 #
EXP_SIGN.M 2823 # 6574
EXT ADDR 2826 # 9838
EXT BYTE READ 2827 # 7415 7422 7482 7489
EXT BYTE RPW 2828 #
EXT INDEX 2829 # 9820 9821 9822 9823 9839
EXT INDRCT 2830 # 9815 9816 9817 9818 9840 9841
FETCH 2876 # 3733 4769 4822 4826 4941 4989 4990 5022 5028 5053 5261
5437 9043 10236 10374
FETCH WAIT 2882 # 4091 10030
FETCH+1 2877 # 10676
FE_# 2833 # 3914 3916 3955 3977 5480 5483 5588 5610 5718 5725 5728
5815 5816 5817 5818 5856 5871 5926 6047 6077 6262 6483 6570
6607 6784 6810 6815 6862 7251 7325 7339 7568 7571 7615 7616
7617 7618 7802 7804 7946 7955 8407 8449 8863 9203 9208 9553
9847 9894 9902 10045 10138 10282 10340 10343 10483 10502 10803
FE_# AND S 2834 # 9007 9074 9123 9132
FE_#+AR0-8 2835 #
FE_#+SC 2836 # 6050
FE_#-SC 2837 # 7733
FE_+# 2838 #
FE_-1 2839 # 5905 9282 9283
FE_-SC-1 2841 # 9511
FE_-S 2840 #
FE_1 2842 # 5899
FE_AR0-8 2843 # 4866 6721 6730 7221 10003 10308
FE_AR0-8 AND # 2844 #
FE_AR0-8 COMP 2845 # 10186
FE_EXP 2846 # 5994 5997 6471 9501
FE_EXP+1 2847 #
FE_EXP+SC 2848 # 6239
FE_EXP-# 2849 # 6279 6283
FE_EXP-1 2850 #
FE_FE AND AR0-8 2852 # 9288 9378 9910
FE_FE AND # 2851 # 9331 9348
FE_FE OR # 2853 # 9370 9393 9445 9476
FE_FE OR AR0-8 2854 #
FE_FE SHRT 2855 # 9382
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-43
; Cross Reference Listing
FE_FE+# 2856 # 6088 6091 6345 6379 6624 6626 6935 6936 7232 7239 8416
10699
FE_FE+1 2857 # 5632 5642 5644 5646 5648 5660 5662 5664 5665 5670 5862
6015 6016 6019 6381 6431 6597 6599 6627 6661 6821 6823 6850
6852 6938 6969
FE_FE+S 2858 #
FE_FE+SC 2859 # 6006 6542 9253 9255
FE_FE-# 2860 # 6350 6352 6372 6376 6385 6394 9439 10672 10684 10708 10711
10733 10793
FE_FE-1 2861 # 5747 5750 5755 5764 5780 5781 5782 5783 5784 5785 5786
5787 5811 5812 5813 5814 6348 6630 6941 7235 7906 7948 7949
7950 7951 8843 8849 10293 10295
FE_FE-S 2862 #
FE_FE-SC 2863 # 6631 6658 6943 6964 9413
FE_FE-SC-1 2864 #
FE_P 2865 # 5427 5430 7905 7909 10461 10530 10585
FE_P AND # 2866 # 8764 9251 10463 10628 10736
FE_P AND SC 2867 #
FE_P OR # 2868 #
FE_P+SC 2870 # 10686
FE_P+1 2869 #
FE_S 2871 # 7595 7597 7977 10524 10539 10540 10598 10599 10602
FE_S+# 2872 # 7890
FE_SC 2873 # 5636 5637 5638 5640 5653 5654 5655 5657 5798 5801 7726
10346 10348
FILL 2883 # 9895 9946 9947 9993 10094 10259 10315 10320
FILL_AR 2884 # 9895 9993 10259 10320
FIN STORE 2885 # 4000 4001 4007 4009 4620 4795 4798 4810 4941 4946 5028
5053 5186 5194 5276 7506 7585 7762 8128 8178 8295 10786
FIN XFER 2886 # 3966 4800 4811 8966 10784
FINISH 2887 # 4042 5888 10241
FM(#)_AR 2891 #
FM[]_AR 2889 # 3798 3849 6690 6695 6697 6703 6706 6723 6724 6731 6732
6735 6763 6775 6781 6800 6807 6817 6843 6857 6877 6917 6920
7245 7252 7330 7332 7343 7345 7373 8988
FM_AR 2888 # 3798 3849 5893 5909 6690 6695 6697 6703 6706 6723 6724
6731 6732 6735 6763 6775 6781 6800 6807 6817 6843 6857 6877
6917 6920 7245 7252 7330 7332 7343 7345 7373 7752 7776 7782
7784 7825 7885 7886 7888 8988 9725 9733 9808 9850 9853 9855
9858 9895 9993 10005 10006 10007 10009 10017 10050 10052 10075 10097
10143 10190 10195 10197 10204 10259 10294 10296 10305 10306 10318 10320
10369 10433 10461 10463 10489 10494 10524 10536 10539 10540 10592 10598
10599 10602 10624 10631 10790 10791 10796 10835
FORCE AR-ARX 2893 # 9189 9191
GEN # AND AR0-8 2897 # 9304 9341 9365 9399
GEN #+AR0-8 2898 # 10635
GEN #+SC 2899 # 5522 6501
GEN #-SC 2900 # 9438
GEN -AR LONG 2901 # 5749 5752 6174 6479 6673 6696 6869 10279
GEN -SC 2902 #
GEN -SC-1 2903 #
GEN 0S 2904 #
GEN 2AR 2905 #
GEN AC0 2907 # 7352
GEN AC0+1 2908 #
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-44
; Cross Reference Listing
GEN AR 2909 # 3883 3885 6528 6580 6701 6837 7024 7203 7254 7335 7377
7415 7422 7482 7489 7621 7623 7979 8329 8332 8334 8336 8347
8349 8355 8479 9812 9838 9840
GEN AR*AC0 2910 # 4602 5323 5325 6489 6845
GEN AR*BR 2911 # 5612 5872 7210 10298
GEN AR*T0 2912 #
GEN AR+1 2913 # 7147 7568 7571
GEN AR+2BR 2914 # 6178
GEN AR+BR 2915 #
GEN AR+E1 2916 #
GEN AR+XR 2917 # 3884 3887 7622 7625 9839 9841
GEN AR-2BR 2918 # 6176
GEN AR-AC3 2919 # 10210
GEN AR-BR 2920 # 5710 6748 7214
GEN AR-BR-1 2921 # 7210 10298
GEN AR0-8 2922 #
GEN ARX 2923 # 6482 6699 7601 7605 7610 7612 7975 9815 9817 9820 9822
10050 10145
GEN ARX COMP 2924 # 10314
GEN ARX*BRX 2926 #
GEN ARX*BR 2925 #
GEN ARX+1 2927 #
GEN ARX+XR 2928 # 3863 3867 3871 3873 7603 7607 7611 7613 9816 9818 9821
9823
GEN ARX-1 2929 # 5316
GEN BR 2931 # 5003
GEN BR*2 2932 # 9240
GEN BR+ARX 2933 #
GEN BRX+1 2934 #
GEN CRY18 2935 # 4707 6369 8300 8308
GEN E1 2936 # 6951
GEN FE 2937 #
GEN FE AND # 2938 # 9429 9472
GEN FE AND AR0-8 2939 #
GEN FE AND S 2940 #
GEN FE AND SC 2941 # 9401
GEN FE OR AR0-8 2942 # 9911
GEN FE+# 2943 #
GEN FE-# 2944 # 7230
GEN FE-1 2945 # 4869
GEN FE-S 2946 #
GEN FE-SC 2947 #
GEN FE-SC-1 2948 # 7717
GEN MQ 2950 #
GEN MQ-AR 2951 #
GEN P AND SC 2953 # 9431 9474
GEN P AND # 2952 # 8409
GEN P+SC 2954 #
GEN P-# 2955 #
GEN P-S 2956 # 10809
GEN P-SC 2957 #
GEN SC 2958 # 9810
GEN SCAD 0S 2959 #
GEN T1 2960 #
GEN T2 2961 #
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-45
; Cross Reference Listing
GET ECL EBUS 2962 # 3875 3876 3877 3878 4830 8374 8916 9199 9825 9826 9827
9828
GLOBAL 2963 # 3861 3863 3865 3867 3870 3871 3872 3873 7415 7422 7482
7489 7601 7603 7605 7607 7610 7611 7612 7613 9815 9816 9817
9818 9820 9821 9822 9823
HALT 2965 # 4856
I FETCH 2968 # 3966 3999 4001 4007 4009 4099 4106 4289 4798 4904 4946
5319 5426 5456 5475 5490 5513 5538 5757 5766 5886 5927 6315
6316 6671 7020 7146 7148 7149 7204 7212 7216 7432 7506 7762
7781 7860 7879 7911 8032 8038 8046 8128 8178 8303 10023 10312
INDEXED 2972 # 3884 3887 7622 7625 9839 9841
INH CRY18 2973 # 5317 7847 10534 10582 10586 10590 10673 10710
IO INIT 2974 # 8347
IR DISP 2975 # 3945 3956 3967 3978 3989 4767 4793 4801 9851 9854 9856
9859
JFCL FETCH 2977 # 4846
JFCL S 2978 # 4848
JFCL T 2979 # 4845
JUMP FETCH 2980 # 4668 4683 4699 4707
LD PCS 2982 # 4831
LD PREV CTXT 2983 # 5256
LOAD AR 2984 # 4727 4741 4800 4810 4811 5186 5903 7201 7242 7324 7338
7580 7892 7974 8018 8030 8039 8048 8155 8171 8311 8963 8964
8995 9018 9019 9089 9101 9102 9106 9107 9282 9283 9301 9306
9321 9343 9368 9392 9427 9672 9903 10116 10315 10383 10447 10479
10626 10627 10700 10704 10741 10743 10806 10858
LOAD AR (WR TST) 2986 # 10755 10759
LOAD ARX 2988 # 3840 4282 4939 5184 5194 5246 5842 6472 6688 7222 7327
7928 8966 9012
LOAD ARX (WR TST) 2990 # 10783
LOAD EBR 2992 # 8833
LOAD IR 2994 # 3835 3846 5336 9812
LOAD UBR 2998 # 8767
LOAD VMA(EA)_ARX+BR 3000 # 8113 8114 8121
LONG EN 3005 # 3910 7630 9844
MAP 3010 # 3919 4889 9222
MB WAIT 3011 # 3944 4000 4895 5851 5853 5941 5943 7902 7975 8295 8383
8778 8860 8921 9209 9223 9430 9628 9664
MEM_AR 3012 # 4306 4943 4948 5250 5260 5273 7595 7598 8000 8024 8044
8126 8129 8176 8179 8297 8307 8946 9042 9363 10559 10788 10849
10857
MQ_0.C 3014 #
MQ_0.M 3015 # 5479 5487 6015 6016 6019 6513 6516 6598 6600 6851 6853
6881 7017 7779 10345 10347
MQ_0.S 3016 # 4286 4302 5843 6471 6689 7202 7326
MQ_1 3017 #
MQ_1S 3018 #
MQ_AD 3019 # 6836 9971
MQ_ARX 3024 # 5484 5909 6543 6545 7333 9896 10191 10641 10643 10664
MQ_ARX COMP 3025 #
MQ_AR 3020 # 4121 5266 5587 5609 5815 5816 5817 5818 5864 5870 5932
6007 6010 6047 6560 6570 6577 6641 6644 6646 6812 6815 6820
6868 6953 6956 6958 7716 7855 7968 8013 8016 8022 8047 8870
8918 8987 9808 10007 10138 10333 10369 10555
MQ_AR (AD) 3021 #
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-46
; Cross Reference Listing
MQ_AR COMP 3022 #
MQ_AR SWAP 3023 #
MQ_BR 3026 # 9971
MQ_BR COMP 3027 #
MQ_FM[] 3028 #
MQ_MQ*.25 3029 # 5884 6623 6934 6981
MQ_MQ*2 3030 # 5882 5922 5924 10153
MQ_MQ*BR 3031 # 6836
MQ_MQ-1 3032 #
MQ_SHIFT 3033 # 5466 5473 5482 5489 5527 5855 6012 6313 6373 6506 6519
6521 6525 6634 6635 6788 6946 6947 8764
MSK 3035 # 10017 10204 10439 10472 10474 10624
MSK_AR 3036 # 10017 10204 10624
MUL 3037 # 5632 5642 5644 5646 5648 5660 5662 5664 5665 5670 5862
NO CRY 3040 # 4563 4566
NORM 3041 # 6022 6090 6102 6346 6372 6377 6385 6395 6428 6523 6580
6603 6628 6636 6642 6645 6646 6786 6838 6859 6925 6927 6949
6954 6957 6959 6968 7024 7240 7254 7335 7346 7377
NORM AR 3043 # 6050
NORM -AR 3042 # 6344
NXT INSTR 3044 # 4004 4026
OPTIONS 3046 # 8407
P0 3076 # 9352 9432 9447
P1 3077 # 9354 9469
P10 3078 # 9234 9290 9307 9345 9353 9369 9380 9406 9457 9502
P11 3079 # 9239 9496
P12 3080 # 9232 9233 9258 9474 9478 9608 9633
P13 3081 #
P14 3082 #
P15 3083 #
P16 3084 # 9192 9510 9698
P17 3085 # 9193 9514 9516 9581
P2 3086 # 9329 9340 9417 9423
P3 3087 # 9300 9315 9391
P4 3088 #
P5 3089 # 9242 9379 9482 9526 9533
P6 3090 #
P7 3091 #
PC_VMA 3093 # 4859
PF DISP 3094 # 9199 9210
PFA 3096 #
PFA_AR 3097 #
PHYS REF 3099 # 9102 9107 9112 9301 9306 9321 9343 9363 9368 9392 9427
PHYS REF CACHE 3100 # 9089 9093
POP AR 3102 # 4977
POP AR-ARX 3103 # 4979
POP ARX 3104 #
PORTAL 3106 # 4721
PT FETCH 3107 #
PT REF 3108 # 3840 5184
PT SEL_INVAL 3109 # 8835
PT SEL_INVAL (KEEP) 3110 # 8839
PT SEL_NORMAL 3111 # 8846 8852
PUR 3113 # 9354 9469
PUSH 3116 # 4931 4936
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-47
; Cross Reference Listing
P_# 3048 #
P_#-SC 3050 #
P_#-S 3049 # 8004 10544 10587
P_-SC 3051 # 7862 7864
P_1S 3052 #
P_FE 3053 # 5432 7910 10533 10834
P_FE OR SC 3054 # 9226 10715 10716
P_FE+SC 3055 #
P_FE-S 3056 # 7578 10047 10526
P_FE-S.S 3057 # 7580
P_FE.C 3058 # 10589
P_P AND # 3059 # 7013 8412 10399 10464 10468 10721
P_P AND SC 3060 # 10674
P_P OR # 3061 # 7998 10465 10466 10467 10469
P_P OR SC 3062 # 9483 10493 10863
P_P OR SC# 3063 #
P_P+# 3064 #
P_P+1 3065 # 10675
P_P+S 3066 # 9724
P_P+S.C 3067 # 9729
P_P-S 3068 # 7426 7493 7757 8001 9143 10049 10516 10563
P_SC 3069 # 7774 7779 7835 8800
P_SC# 3070 # 7583
P_SCAD 3071 # 4102 5265 5432 7580 7910 9226 9724 10533 10715 10716 10834
P_SCAD# 3072 # 7013 7583 7998 8004 8412 9729 10399 10464 10465 10466 10467
10468 10469 10544 10587 10589 10675 10721
P_SCAD.C 3073 # 7578 10047 10526
P_SCAD.M 3074 # 7426 7493 7757 7774 7779 7835 7862 7864 8001 8800 9143
9483 10049 10493 10516 10563 10674 10863
R0 3121 # 9223
R1 3122 #
R10 3123 # 9736 9747 9749 9758 10007 10019 10028 10033 10051 10075 10190
10207 10212 10218 10306 10367 10369 10433 10488 10490 10491
R11 3124 # 5909 5931 6724 6732 6765 6777 7776 7780 7782 7811 7815
10294 10296 10333
R12 3125 # 6695 6703 6710 6719 6735 6807 6856 6857 6873 6877 6917
6920 6997 7252 7332 7345 7373 7784 7855 10305 10332
R13 3126 # 9895 9946 9947 9993 10094 10259 10315 10320
R14 3127 #
R15 3128 # 3798 4773 4788 4935 5026 5031 5180 5261 5266 5270 5274
8990 9002 9024 9048 9070 9085 9115 9664 9978 9979
R16 3129 # 6690 6697 6725 6730 6808 6918 7826 7885 9808 10479 10741
10743 10858
R17 3130 #
R2 3131 # 9697
R3 3132 # 8988 9696
R4 3133 # 3849 6924 6926 6990 7127 7128 7134 7135 7364 7367 7883
9976
R5 3134 # 6706 6715 6734 6775 6781 6800 6843 6951 7183 7184 7196
7197 7198 7245 7330 7343 7841 7888 9850 9853 9855 9858 10383
10384 10436 10437 10438 10447 10805 10806
R6 3135 # 5893 5911 6723 6731 6761 6763 6766 6778 6817 7752 7775
7819 7825 7837 7847 7886 7907 9742 10143 10152 10318 10321
R7 3136 # 10017 10204 10439 10472 10474 10624
RD+CLR C CNT 3138 # 8929
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-48
; Cross Reference Listing
RD+CLR E CNT 3139 # 8928
RD+CLR PA 3140 # 8927
RD+CLR TB 3141 # 8926
READ BP2 3143 # 7597
READ EBR 3145 # 8821
READ ERA 3146 # 8447
READ UBR 3147 # 8803
REL EBUS 3148 # 8336 8479
REL ECL EBUS 3149 # 4898 8292 8825 8859 8881 8920 8930 9210 9225
REQ EBUS 3150 # 8322 8483
REQ SV.VMA 3152 # 9526
REQ VMA HELD 3153 #
RETURN0 3157 # 9527
RETURN1 3158 # 4833 4839 5277 6737 7440 7444 7447 7610 7611 7612 7613
7621 7622 7981 8003 8370 8374 8947 8968 9960 9962 9971 10435
10501
RETURN10 3159 # 9947 9951
RETURN12 3160 # 9082
RETURN15 3161 #
RETURN16 3162 #
RETURN17 3163 #
RETURN2 3164 # 4954 6177 6179 6748 7446 7704 7705 7955 8109 8130 8180
9085 9116 9969 9980 10100 10479 10544
RETURN20 3165 # 5271 9912
RETURN3 3166 # 4310 5207 5757 5766 5815 5818 7720 7737 8337 8350 8808
10483 10863
RETURN30 3167 #
RETURN37 3168 #
RETURN4 3169 # 5653 5654 5655 5657 6544 6546 7567 7570 7573 7574 7575
7576 7579 7586 8863 9077 10439 10474 10494
RETURN5 3170 # 5816 5817 10463
RETURN6 3171 # 5636 5637 5638 5640 5759 5768 5799 5802 10559
RETURN7 3172 # 5760 5769
RET[] 3156 # 7127 7128 7134 7135
RSTR FLAGS_AR 3173 # 4762 4812 4813 4816
RSTR VMA_ARX 3175 #
RSTR VMA_MQ 3176 # 7981 7998
RSTR VMA_SV.VMA 3177 # 9482
SBR 3182 # 9300 9315 9391
SBUS DIAG 3184 # 8451
SC_# 3186 # 3789 3802 3804 3917 4288 4301 4304 4842 4844 5250 5251
5424 5531 5540 5594 5614 5705 5707 5711 5846 5875 5895 5939
6310 6368 6374 6522 6580 6602 6615 6629 6635 6712 6717 6785
6833 6837 6858 6930 6948 6982 6988 6993 7000 7002 7004 7024
7254 7355 7359 7375 7893 7902 7904 7926 7928 7970 7985 7986
7991 8379 8757 8777 8779 8783 8807 8818 8832 8871 8882 8924
8944 8994 9014 9076 9100 9105 9110 9222 9287 9384 9650 9652
9735 10010 10200 10226 10233 10235 10263 10279 10282 10340 10343 10376
10449 10478 10614 10633 10652 10811 10860 10862
SC_# AND AR0-8 3187 # 9256 10630
SC_# AND S 3188 #
SC_# OR SC 3189 #
SC_#+AR0-8 3190 # 6296
SC_#+SC 3191 # 5449 5452 5454 5469 5472 5500 5504 5526 5528 6007 6014
6177 6179 6504 6543 6561
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-49
; Cross Reference Listing
SC_#-SC 3192 # 5207 6010 6545 6767 6771 7503 7691 7734 9135 10557
SC_#-SC-1 3193 #
SC_-SC 3195 # 9418 9428
SC_-SC-1 3196 # 9515
SC_-S 3194 #
SC_0 3197 #
SC_1 3198 # 5692 5893 5899 7801 9411 10260 10369
SC_1S 3199 # 5929
SC_AR0-8 3200 #
SC_EA 3201 # 5421 5440 5442 5461 5464 5480 6237
SC_EXP 3202 # 6045 7244 9501 9509
SC_EXP+1 3203 # 6074
SC_EXP+SC 3204 # 6048 6574
SC_EXP-# 3205 #
SC_EXP-1 3206 #
SC_EXP-SC 3207 # 6005 6173 6540
SC_FE 3208 # 6766 6769 7696 7732 8861 9482
SC_FE AND # 3209 #
SC_FE# 3210 #
SC_FE+# 3211 # 6312
SC_FE+1 3212 # 10642 10644 10645
SC_FE+SC 3213 # 5485 5488 6984 7431 7698 9128 10174 10518 10632
SC_FE-# 3214 # 10310
SC_FE-1 3215 # 6491
SC_FE-SC 3216 # 7736 7777
SC_FE-SC-1 3217 # 10294 10296
SC_P 3218 # 7429 7438 7500 7582 7771 7830 8003 9144 10742
SC_P AND # 3219 # 10700 10702
SC_P AND SC 3220 # 9225 9417 9423
SC_P+S 3222 #
SC_P+1 3221 #
SC_P-# 3223 # 6243 7443 7861 7863
SC_S 3224 # 7753 7854 7885 10015
SC_SC AND # 3225 #
SEL AC4 3228 # 9950 10239
SEL DSTP 3229 # 9729 9738 10595 10596 10788
SEL DSTP2 3230 # 9948 10589 10590 10795
SET ACC+CLR UCODE 3232 #
SET ACCOUNT EN 3233 # 3832 4905 8921 8932 9527 9632 9674 9703
SET AROV 3234 # 5523 5598 5615 5876 6307 7149
SET CONS XCT 3235 # 4875
SET DATAI 3236 # 9055 9124
SET DATAO 3237 # 9041 9091 9702
SET EBUS DEMAND 3238 # 8330
SET FL NO DIV 3239 # 6081 6610 6865
SET FLAGS_AR 3240 # 3730 5280 9673
SET FLOV 3241 # 7006 7011 7212 7370
SET FPD 3242 # 7595 7628 8003 8311 8312 10335
SET FXU 3243 # 7010 7216 7371
SET HALTED 3244 # 4858
SET IO PF 3245 # 9699
SET MTR PA EN 3246 #
SET NO DIVIDE 3247 # 5702
SET PC+1 INH 3248 # 3841
SET PI CYCLE 3249 # 3788 8931 8987
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-50
; Cross Reference Listing
SET PXCT 3250 # 5335
SET SR1 3251 # 6102 6344 7884
SET SR2 3252 # 5914 6592 6618 6876
SET SR3 3253 # 5934 6530 6558 6933
SET SXCT 3254 #
SET TRACKS EN 3255 #
SET TRK+PA EN 3256 #
SFLGS_AR 3258 # 10009 10195 10197 10461 10463 10494 10631 10835
SFLGS 3257 # 9752 9756 10009 10035 10088 10195 10197 10225 10435 10451 10453
10461 10463 10478 10494 10631 10812 10835 10860 10862
SH DISP 3259 # 5252 7001 7894 8990 9007 10633 10650
SIGNS DISP 3260 # 5719 5913 5915 9240 9277 9279 10046 10050 10077 10097 10142
10143 10157 10190 10314 10371 10396 10434 10462 10489
SKIP FETCH 3261 # 4620
SKP -EBUS GRANT 3263 # 8344
SKP -EBUS XFER 3264 # 8334
SKP -LOCAL AC ADDR 3266 # 4099 4106 5179 5243
SKP -START 3268 # 4865
SKP -VMA SEC0 3270 # 7572 7598 7923
SKP AC EQ 0 3272 #
SKP AC REF 3273 #
SKP AC#0 3274 # 4002 4621 6244 6246 6247
SKP AC0+ 3275 # 5799
SKP AC0- 3276 # 5802
SKP AD NE 3277 # 5424 5710 6482 6528 6556 6699 6798 6951 7144 7147 7203
7353 7780 7979 8044 9116 9329 9417
SKP AD0 3278 # 5324 5326 5612 5872 5900 6078 6489 6606 6701 6705 6711
6748 6759 6761 6804 6808 6816 6844 6845 6862 6874 6880 6918
6922 7210 7214 7349 7374 7818 7975 8014 10004 10013 10262
SKP ADX0 3279 #
SKP AR EQ 3280 # 4876
SKP AR EQ -1 3281 #
SKP AR GT BR 3282 # 9081 10113
SKP AR NE 3283 # 7804 8016 10278 10818 10859
SKP AR NE BR 3284 # 5519
SKP AR NZ 3285 #
SKP AR SIG 3286 # 5594
SKP AR0 3287 # 4083 4257 4264 5318 5435 5694 5726 5729 6262 6575 6694
6698 6872 7206 7237 7582 9501 9509 9749 9758 10028 10078 10530
10585
SKP AR1 3288 #
SKP AR18 3289 # 4243 4250 5422 5440 5442 5461 5464 5480 8765 9852 10473
SKP AR2 3290 # 8757 10209
SKP AR6 3291 # 8996 8998 9032 9057
SKP ARX LE BRX 3292 #
SKP ARX LT BRX 3293 # 8125 8175
SKP ARX NE 3294 # 6342
SKP ARX NZ 3295 #
SKP ARX+MQ NE 3296 # 6615 6930
SKP ARX0 3297 # 10139 10449 10637 10655 10680
SKP ARX2 3298 # 10390
SKP BR EQ 3300 # 6089 7772 10164
SKP BR EQ -1 3301 # 8102
SKP BR0 3302 # 5926 6080 6173 6609 6864 6881 10033 10155 10334
SKP CRY0 3303 # 4931 4936 4981 5000 5316 5905 5923 5924 6176 6178 6369
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-51
; Cross Reference Listing
6640 6952 8026 9437 10211 10275 10309 10367 10439
SKP EVEN PAR 3304 #
SKP EXP NE 3305 #
SKP FE0 3306 # 5911
SKP FETCH 3307 #
SKP INTRPT 3308 # 3862 3864 3866 3868 3886 3888 4870 4887 4902 5181 7602
7604 7606 7608 7624 7626 8024 8050 8123 8173 8348 9287 9371
9553 9815 9816 9817 9818 9840 9841 10046 10095 10174 10377 10518
10701 10705
SKP IO LEGAL 3309 # 4728 4729 4735 4737 4895 8285 8291 8380 8387 8389 8394
8408 8421 8424 8450 8469 8472 8751 8755 8783 8814 8817 8869
8885 8888 8897 8900 8909 9608
SKP KERNEL 3310 # 4725
SKP MQ EQ -1 3311 # 10386
SKP MQ NE 3312 #
SKP PC SEC0 3316 # 4757 4758 4933 4984 4987 5022 5024 5047 5177 6225 7411
7418 7478 7485 9968 10528 10529 10583 10584 10625 10665 10697 10699
10731 10789 10831
SKP PI CYCLE 3318 # 8297 8300 8309 9633
SKP P NE 3313 # 9352 9447
SKP P!S XCT 3314 # 8089 8114
SKP RPW 3319 # 9203 9208
SKP RUN 3320 #
SKP SC NE 3324 # 5498 8769
SKP SC0 3325 # 5933 10313
SKP SCAD NE 3326 # 5427 5430 7906 9304 9342 9366 9399 9402 9429 9431 9473
9475 9810
SKP SCAD NZ 3327 # 8409 9911
SKP SCAD0 3328 # 5450 5453 5455 5469 5472 5485 5488 5500 5505 5522 6005
6008 6010 6014 6243 6279 6283 6296 6312 6502 6504 6540 6544
6546 6767 7231 7443 7504 7691 7698 7718 7890 8001 9136 9143
10049 10557 10636 10672 10684 10709 10712 10733 10793 10809
SKP USER 3329 # 4773 4790 4815 4816 4821 5267 5332 9386 9666
SLEN 3331 # 9736 9747 9749 9758 10007 10019 10028 10033 10051 10075 10190
10207 10212 10218 10306 10367 10369 10433 10488 10490 10491
SLEN_AR 3332 # 10007 10075 10190 10306 10369 10433
SR DISP 3333 # 5934 5935 5940 6347 6349 6351 6353 6380 6382 6383 6393
6412 6432 6639 6662 7008 7017 7438 7693 7803 7805 7817 7830
7859 9232 9534 9713 9725 9733 9754 10098
SRCP 3384 # 9557 9725 10040 10050 10140 10140 10502 10502 10524 10539 10540
10803 10803
SRCP2_AR 3387 # 10536
SRCP2 3386 # 10528 10529 10536
SRCP_AR 3385 # 9725 10050 10524 10539 10540
SR_# 3334 # 5978 5979 5980 7416 7423 7440 7930 7989 8000 9565 9596
9604
SR_0 3335 # 4016 4017 4021 4033 4828 4901 5260 6442 6446 6456 6657
6672 6963 7022 7860 8038 8053 9557 9569 9588 9613 9618 9710
10035 10055 10142 10237 10379 10435
SR_1 3336 # 6848 9561 9573 9592
SR_2 3337 #
SR_BDD 3339 # 10392
SR_BDF 3340 # 10319
SR_BDT 3341 # 9577 10269 10336 10395
SR_BLT(DST) 3342 # 8118 8119 8120
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-52
; Cross Reference Listing
SR_BLT(PXCT DST) 3344 # 8169 8170
SR_BLT(PXCT SRC) 3345 # 8162 8180
SR_BLT(SRC) 3347 # 8108 8130
SR_DB 3348 # 10203
SR_DST 3349 # 10087
SR_DSTF 3350 # 10041
SR_ED(+D) 3351 # 10151 10810 10861
SR_ED(PAT) 3352 # 10615 10698
SR_ED(S) 3353 # 10141 10654
SR_MAP 3368 # 4892
SR_SRC 3371 # 9600 10012 10016 10024 10040 10042 10081
SR_SRC+DST 3372 # 10022 10079
SR_WORD 3377 #
SR_XBLT(DST) 3380 # 8022 8040 8049
SR_XBLT(SRC) 3381 # 8012 8023 8052
STACK UPDATE 3390 # 4981 4999 5315
STORE 3392 # 4119 4301 4304 4307 4636 4651 4776 4792 4796 5026 5027
5037 5185 5192 5248 5258 5275 5277 7567 7570 7579 7583 7584
7586 7737 7999 8023 8051 8173 8308 8414 8455 8882 8945 8947
9033 9034 9065 9066 9093 9111 9112 9221 9354 9469 9663 9669
9671 10768 10784 10787 10844 10845 10846 10847 10850
STORE VMA(EA)_ARX 3394 # 8123
SV.ARX 3405 # 9193 9514 9516 9581
SV.ARX_AR 3409 # 9193
SV.AR_AR 3403 # 9192
SV.AR 3399 # 9192 9510 9698
SV.BR_AR 3412 # 9234
SV.BR 3411 # 9234 9290 9307 9345 9353 9369 9380 9406 9457 9502
SV.IOP 3414 # 8988 9696
SV.IOPF 3415 # 9697
SV.IOPF_AR 3416 # 9697
SV.PAR 3418 # 9223
SV.PAR_AR 3419 # 9223
SV.PFW 3420 # 9232 9233 9258 9474 9478 9608 9633
SV.PFW_AR 3421 # 9232 9233 9258 9478
SV.SC_AR 3423 # 9239
SV.SC 3422 # 9239 9496
SV.VMA 3424 # 9242 9379 9482 9526 9533
SV.VMA_AR 3425 # 9242
SWD 3427 #
SWD_AR 3428 #
SWEEP CACHE 3429 # 8382
T0 3433 # 5893 5911 6723 6731 6761 6763 6766 6778 6817 7752 7775
7819 7825 7837 7847 7886 7907 9742 10143 10152 10318 10321
T0_AR 3434 # 5893 7752 7825 7886 10143 10318
T1 3435 # 5909 5931 6724 6732 6765 6777 7776 7780 7782 7811 7815
10294 10296 10333
T1_AR 3436 # 5909 7776 7782 10294 10296
T2 3437 # 6695 6703 6710 6719 6735 6807 6856 6857 6873 6877 6917
6920 6997 7252 7332 7345 7373 7784 7855 10305 10332
T2_AR 3438 # 7784 10305
TAKE INTRPT 3439 # 3911 4867 5193 5208 5333 7631 9845
TEST AR 3440 #
TEST AR.AC0 3441 # 4571
TEST AR.BR 3442 # 4846 8296 8298 9437
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-53
; Cross Reference Listing
TEST AR.MSK 3443 # 10439
TEST ARX 3444 # 10085
TEST ARX.AR*4 3445 #
TEST BRL 3446 # 8300
TEST CBR 3448 # 9329 9417
TEST FETCH 3450 # 4563 4566 4571 8296 8298 8300 10085
TRAP1 3451 #
TRAP2 3452 # 4943 4948 4996 4997 5001
TRAP3 3453 #
UNCSH PHYS REF 3467 #
UPT FETCH 3468 #
UPT REF 3469 # 5246 5248 8964 9283 9663
USER REF 3470 #
VMA_# 3472 # 5182 5191 5247 7887 7897 7898 7899 7900 8919 8954 8956
8958 8960 9628
VMA_#+AR32-35 3473 # 7973 9276 9278
VMA_40 3474 #
VMA_40+PI*2 3475 # 8992 8993
VMA_41 3476 #
VMA_41+PI*2 3477 # 9005
VMA_420+TRAP 3478 # 3834 3836
VMA_430+MODE 3479 # 5245
VMA_AC3 3480 # 10729 10755 10829
VMA_AR 3481 # 4822 4826 4939 4990 7201 7242 7324 7338 8311 8312 8382
8833 9015 9127 9305 9366 10627 10700 10704 10759 10845 10847
VMA_AR AND ADMSK 3482 # 5261 8990 9002
VMA_AR+1 3483 # 9060 9134
VMA_AR+BR 3484 #
VMA_AR+CBR 3486 # 9340
VMA_AR+E0 3488 # 10858
VMA_AR+E0+1 3489 # 10743
VMA_AR+E1 3490 # 10383 10447 10806
VMA_AR+SBR 3492 # 9300 9315 9391
VMA_AR+XR 3497 #
VMA_AR-1 3498 # 9044
VMA_ARX 3499 # 4989 5185 8023 8051 8173 10626
VMA_ARX AND ADMSK 3500 # 9024 9048 9070
VMA_ARX+1 3501 # 9850 9853 9855 9858
VMA_ARX+BR 3502 # 8155 8171
VMA_ARX+CBR 3504 # 9423
VMA_ARX+XR 3506 #
VMA_BR 3508 # 4769 4941 8039 9363
VMA_E0+1 3509 # 10479 10741
VMA_FM[] 3510 # 10315
VMA_MQ 3511 # 8767 8882 10114
VMA_MQ+1 3512 # 10115
VMA_PC 3513 # 10524 10539 10599 10602
VMA_PC+1 3514 # 10088 10209 10227 10274 10366 10653
VMA_SV.VMA 3516 # 9533
VMA_VMA HELD 3527 # 3916 9220
VMA_VMA+1 3530 # 4282 4306 4796 4800 4810 4811 5028 5053 5186 5194 5251
5275 5277 5842 5897 6472 6688 7205 7327 7580 7928 8455 8947
8966 9083 9669 9671 9672 10232 10234 10373 10783 10850
VMA_VMA-1 3531 # 7586 8945 10787
WR PT ENTRY 3533 # 8752 9484
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-54
; Cross Reference Listing
WR REFILL RAM 3534 # 8390
WRITE (E) 3536 # 5003
XR 3539 # 3833 3913 7632 9846
[]_#[] 2247 #
[]_ADA[] 2248 #
[]_ADB[] 2249 #
[]_FM[] 2250 # 6715 6719 6725 6730 6734 6761 6765 6766 6777 6778 6808
6918 6990 6997 7183 7184 7196 7197 7198 9976
[]_[]*FM[] 2245 # 6710 6856 6873 6924 6926 7127 7128 7134 7135 7364 7367
7883
[]_[]*[] 2244 #
[]_[]-FM[] 2246 # 9978
(AR+ARX+MQ)*.25 2252 # 6654 6829 6961
(AR+ARX+MQ)*2 2253 # 5636 5637 5638 5640 5653 5654 5655 5657 6630 6828 6830
6941
(MQ)*.25 2254 # 6654 6829 6961
(MQ)*2 2255 # 5636 5637 5638 5640 5653 5654 5655 5657 6630 6828 6830
6941
(D) MACRO%
AC 3578 # 4053 4054 4062 4063 4067 4068 4072 4073 4128 4130 4137
4138 4142 4143 4147 4148 4152 4153 4157 4158 4162 4163 4167
4168 4174 4175 4179 4180 4184 4185 4189 4190 4194 4195 4199
4200 4204 4205 4209 4210 4314 4315 4324 4325 4334 4335 4344
4346 4353 4354 4369 4370 4379 4380 4389 4390 4399 4400 4409
4410 4420 4421 4430 4431 4440 4441 4450 4451 4460 4461 4883
5089 5545 5546 5557 5558 5570 5571
B 3581 # 4317 4327 4337 4351 4356 4372 4382 4392 4402 4412 4423
4433 4443 4453 4463 5548 5560 5573
BLKI 3614 # 8213 8260 8271
BLKO 3615 # 8262 8273
CONI 3618 # 8196 8207 8218 8242 8254 8265 8276
CONO 3619 # 8195 8206 8217 8241 8253 8264 8275
CONSO 3620 # 8198 8209 8220 8244 8256 8267 8278
CONSZ 3621 # 8197 8208 8219 8243 8255 8266 8277
DATAI 3616 # 8192 8214 8261 8272
DATAO 3617 # 8194 8216 8239 8240 8263 8274
DBL AC 3582 # 5602 5603 5675 5676 5680 5681
DBL B 3583 # 5605 5678 5683
EA 3557 # 4114 4130 4346 4713 4911 4913 5009 5010 5067 5068 5069
5070 5072 5073 5074 5075 5077 5078 5079 5080 5082 5083 5084
5085 5088 5089 5091 5092 5093 5094 5095 5096 5097 5098 5109
5110 5111 5112 5113 5114 5118 5119 5120 5121 5122 5123 5124
5125 5126 5127 5128 5129 5130 5131 5132 5133 5134 5135 5136
5137 5138 5139 5140 5141 5142 5143 5144 5145 5146 5147 5148
5149 5153 5154 5300 5413 5950 5951
FL-AC 3584 # 5954 5959 5960 5964 5969 5970 6027 6032 6033 6056 6057
6061 6062 6219 6257
FL-BOTH 3586 # 5957 5962 5967 5972 6030 6035 6059 6064
FL-MEM 3585 # 5956 5961 5966 5971 6029 6034 6058 6063
I 3552 # 4058 4474 4475 4476 4477 4478 4479 4490 4491 4492 4493
4494 4495 4496 4497 4508 4509 4510 4511 4512 4513 4514 4515
4526 4527 4528 4529 4530 4531 4532 4533 4582 4583 4584 4585
4586 4587 4588 4589 4657 4658 4659 4660 4661 4662 4663 4664
4672 4673 4674 4675 4676 4677 4678 4679 4687 4688 4689 4690
4691 4692 4693 4694 4702 4703 4714 4883 4914 5011 5012 5301
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-55
; Cross Reference Listing
5406 5407 5408 5409 5410 5411 5412 5571 5603 5676 5681 5960
5970 6033 6062 6219 8193 8195 8196 8197 8198 8206 8207 8208
8209 8215 8217 8218 8219 8220 8224 8225 8226 8227 8228 8229
8230 8231 8241 8242 8243 8244 8251 8252 8253 8254 8255 8256
8264 8266 8267 8275 8277 8278
I-PF 3553 # 4054 4063 4068 4073 4138 4143 4148 4153 4158 4163 4168
4175 4180 4185 4190 4195 4200 4205 4210 4314 4315 4325 4335
4354 4364 4370 4380 4390 4400 4409 4410 4421 4431 4441 4451
4460 4461 4472 4473 4481 4482 5546 5558
IW 3571 # 4316 4317 4411 4412 4462 4463
M 3579 # 4064 4069 4074 4134 4139 4144 4149 4154 4159 4164 4169
4176 4181 4186 4191 4196 4201 4206 4211 4316 4326 4336 4350
4355 4365 4366 4371 4381 4391 4401 4411 4422 4432 4442 4452
4462 5547 5559 5572 5604 5677 5682 8202
R 3560 # 4275 4276 4483 4484 4485 4486 4487 4488 4499 4500 4501
4502 4503 4504 4505 4506 4517 4518 4519 4520 4521 4522 4523
4524 4535 4536 4537 4538 4539 4540 4541 4542 4591 4592 4593
4594 4595 4596 4597 4598 4609 4610 4611 4612 4613 4614 4615
4616 4882 4912 5570 5602 5675 5680 5829 5830 5831 5832 5954
5955 5959 5964 5965 5969 6027 6028 6032 6056 6057 6061 6220
6253 6254 6256 6257 6464 6465 6466 6467 6681 6682 6683 6684
7387 7389 8194 8204 8205 8216 8239 8240 8263 8274
R-PF 3561 # 4053 4062 4067 4072 4128 4137 4142 4147 4152 4157 4162
4167 4174 4179 4184 4189 4194 4199 4204 4209 4324 4334 4344
4353 4363 4369 4379 4389 4399 4420 4430 4440 4450 5545 5557
RPW 3564 # 4060 4065 4070 4075 4113 4134 4135 4139 4140 4145 4150
4155 4160 4165 4170 4176 4177 4181 4182 4187 4192 4197 4202
4207 4212 4326 4327 4336 4337 4350 4351 4355 4356 4371 4372
4381 4382 4391 4392 4401 4402 4422 4423 4432 4433 4442 4443
4452 4453 4625 4626 4627 4628 4629 4630 4631 4632 4640 4641
4642 4643 4644 4645 4646 4647 5547 5548 5559 5560
RW 3562 # 5572 5573 5604 5605 5677 5678 5682 5683 5956 5957 5961
5962 5966 5967 5971 5972 6029 6030 6034 6035 6058 6059 6063
6064 7386 7388 8213 8260 8262 8271 8273
S 3580 # 4060 4065 4070 4075 4135 4140 4145 4150 4155 4160 4165
4170 4177 4182 4187 4192 4197 4202 4207 4212
SJC- 3605 # 4582 4591 4609 4625 4640 4657 4672 4687
SJCA 3609 # 4586 4595 4613 4629 4644 4661 4676 4691
SJCE 3607 # 4584 4593 4611 4627 4642 4659 4674 4689 5069
SJCG 3612 # 4589 4598 4616 4632 4647 4664 4679 4694 5075
SJCGE 3610 # 4587 4596 4614 4630 4645 4662 4677 4692 4702 5073
SJCL 3606 # 4583 4592 4610 4626 4641 4658 4673 4688 4703 5068
SJCLE 3608 # 4585 4594 4612 4628 4643 4660 4675 4690 5070
SJCN 3611 # 4588 4597 4615 4631 4646 4663 4678 4693 5074
TC- 3596 # 4508 4509 4517 4518
TCA 3598 # 4512 4513 4521 4522
TCE 3597 # 4510 4511 4519 4520
TCN 3599 # 4514 4515 4523 4524
TN- 3588 #
TNA 3590 # 4476 4477 4485 4486
TNE 3589 # 4474 4475 4483 4484
TNN 3591 # 4478 4479 4487 4488 4714
TO- 3600 # 4526 4527 4535 4536
TOA 3602 # 4530 4531 4539 4540
TOE 3601 # 4528 4529 4537 4538
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-56
; Cross Reference Listing
TON 3603 # 4532 4533 4541 4542
TZ- 3592 # 4490 4491 4499 4500
TZA 3594 # 4494 4495 4503 4504
TZE 3593 # 4492 4493 4501 4502
TZN 3595 # 4496 4497 4505 4506
W 3559 # 4064 4069 4074 4144 4149 4154 4159 4164 4169 4186 4191
4196 4201 4206 4211 4295 4296 4365 4366 8191 8192 8202 8203
8214 8237 8238 8249 8250 8261 8265 8272 8276
(U) MAJVER 1874 #
(U) MARK 1868 #
(U) MBOX CTL 2118 # 9250 9252 9254
CLR PT LINE 2123 # 8844
CLR PT LINE(NK) 2121 # 8850
NORMAL 2127 # 8846 8852
PT DIR CLR 2126 # 8835
PT DIR CLR(NK) 2122 # 8839
PT DIR WR 2124 #
PT WR 2125 # 8752 9484
SET IO PF ERR 2120 # 9699
SET PAGE FAIL 2119 #
(U) MEM 1699 #
A RD 1703 # 3870 3871 3872 3873 3883 3884 9820 9821 9822 9823 9838
9839
AD FUNC 1712 # 9526
ARL IND 1701 # 4101 5048 5049 5264 5421 5427 5479 5484 5487 5687 5692
6015 6016 6019 6237 6343 6392 6513 6516 6574 6578 6598 6600
6851 6853 6881 6986 7017 7246 7253 7354 7426 7493 7757 7771
7774 7779 7779 7786 7813 7835 7846 7862 7864 7903 8001 8089
8420 8468 8754 8800 8813 8826 8879 8896 8942 9143 9237 9257
9292 9293 9294 9382 9385 9386 9401 9483 9852 10049 10050 10076
10210 10260 10270 10311 10313 10345 10347 10386 10390 10393 10433 10493
10516 10563 10625 10674 10703 10729 10758 10829 10863
B WRITE 1704 # 4080 4089 4221 4223 4226 4229 4233 4237 4246 4247 4253
4254 4260 4261 4267 4268 4321 4331 4341 4360 4376 4386 4396
4406 4416 4427 4437 4447 4457 4467 4898 5552 5565 5597 5614
5705 5707 5712 6442 6446 8292 8479 8827
EA CALC 1713 # 3861 3863 3865 3867 3885 3887 4931 4936 4977 4979 5003
7415 7422 7482 7489 7597 7601 7603 7605 7607 7610 7611 7612
7613 7621 7622 7623 7625 8113 8114 8121 8123 9815 9816 9817
9818 9840 9841 10755 10759 10783
FETCH 1705 # 4563 4566 4571 4602 4620 4668 4683 4699 4707 4846 8296
8298 8300 10085 10145
IFET 1716 # 3733 3966 3999 4001 4007 4009 4099 4106 4289 4769 4798
4822 4826 4904 4941 4946 4989 4990 5022 5028 5053 5261 5319
5426 5437 5456 5475 5490 5513 5538 5757 5766 5886 5927 6315
6316 6671 7020 7146 7148 7149 7204 7212 7216 7432 7506 7762
7781 7860 7879 7911 8032 8038 8046 8128 8178 8303 9043 10023
10236 10312 10374 10676
LOAD AR 1707 # 4727 4741 4800 4810 4811 5186 5903 7201 7242 7324 7338
7580 7892 7974 8018 8030 8039 8048 8155 8171 8311 8963 8964
8995 9018 9019 9089 9101 9102 9106 9107 9282 9283 9301 9306
9321 9343 9368 9392 9427 9672 9903 10116 10315 10383 10447 10479
10626 10627 10700 10704 10741 10743 10806 10858
LOAD ARX 1708 # 3840 4282 4939 5184 5194 5246 5842 6472 6688 7222 7327
7928 8966 9009 9010 9012 9015
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-57
; Cross Reference Listing
MB WAIT 1702 # 3846 3910 3911 3944 3955 3977 3988 4000 4004 4026 4091
4285 4286 4306 4812 4813 4816 4828 4895 4943 4948 4954 4954
4982 4983 4985 4986 5001 5002 5247 5250 5260 5273 5851 5853
5941 5943 7202 7230 7243 7326 7340 7581 7595 7598 7630 7631
7691 7693 7716 7716 7720 7902 7975 8000 8022 8024 8044 8050
8118 8119 8126 8129 8169 8176 8179 8291 8295 8297 8307 8383
8778 8860 8921 8946 9032 9041 9042 9090 9209 9223 9287 9302
9322 9348 9363 9370 9393 9430 9628 9664 9674 9844 9845 9992
10030 10117 10319 10388 10449 10559 10632 10760 10775 10788 10808 10813
10849 10857
REG FUNC 1706 # 3919 4889 8382 8390 8447 8451 8767 8803 8821 8833 9222
RESTORE VMA 1711 # 3916 7981 7998 9220 9482
RPW 1715 #
RW 1714 #
WRITE 1709 # 4119 4301 4304 4307 4636 4651 4776 4792 4796 5026 5027
5037 5185 5192 5248 5258 5275 5277 7567 7570 7579 7583 7584
7586 7737 7999 8023 8051 8173 8308 8414 8455 8882 8945 8947
9033 9034 9065 9066 9093 9111 9112 9221 9354 9469 9663 9669
9671 10768 10784 10787 10844 10845 10846 10847 10850
(U) MINVER 1875 #
(U) MQ 1605 #
MQ SEL 1609 # 5636 5637 5638 5640 5653 5654 5655 5657 5839 6630 6662
6828 6830 6941 7243 7340 7361
MQ*.25 1608 # 5632 5642 5644 5646 5648 5660 5662 5664 5665 5670 5862
5884 6623 6824 6934 6981
MQ*2 1607 # 5747 5750 5755 5764 5780 5781 5782 5783 5784 5785 5786
5787 5811 5812 5813 5814 5882 5922 5924 7948 7949 7950 7951
10153
MQM SEL 1610 # 6654 6829 6836 6961 9971
SH 1606 # 4121 5266 5466 5473 5482 5484 5489 5527 5587 5609 5815
5816 5817 5818 5855 5864 5870 5909 5932 6007 6010 6012 6047
6313 6373 6506 6519 6521 6525 6543 6545 6560 6570 6577 6634
6635 6641 6644 6646 6788 6812 6815 6820 6868 6946 6947 6953
6956 6958 7333 7716 7855 7968 8013 8016 8022 8047 8764 8870
8918 8987 9808 9896 10007 10138 10191 10333 10369 10555 10641 10643
10664
(U) MQ CTL 1989 #
AD 1997 # 6836 9971
MQ*.25 1995 # 6654 6829 6961
MQ*2 1991 # 5636 5637 5638 5640 5653 5654 5655 5657 6630 6828 6830
6941
SH 1994 #
0S 1993 # 5839 6662 7243 7340 7361
1S 1996 #
(U) MREG FNC 2104 #
LOAD CCA 2111 # 8382
LOAD EBR 2116 # 8833
LOAD UBR 2115 # 8767
MAP 2117 # 3919 4889 9222
READ EBR 2107 # 8821
READ ERA 2108 # 8447
READ UBR 2106 # 8803
SBUS DIAG 2105 # 8451
WR REFILL RAM 2109 # 8390
(U) MTR CTL 2128 #
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-58
; Cross Reference Listing
CLR E CNT 2131 # 8936
CLR M CNT 2132 # 8937
CLR PERF 2130 # 8935
CLR TIME 2129 # 8934
CONO MTR 2135 # 8903
CONO TIM 2136 # 8759
LD PA LH 2133 # 8892
LD PA RH 2134 #
(U) NONSTD 1901 #
OPTIONS 1905 # 8407
(U) PARITY 2187 #
(D) PARITY 2229 #
(U) PC FLAGS 2001 #
AROV 2002 # 5523 5598 5615 5876 6307 7149
DIV CHK 2008 # 5702
FDV CHK 2009 # 6081 6610 6865
FLOV 2003 # 7006 7011 7212 7370
FPD 2004 # 7595 7628 8003 8311 8312 10335
FXU 2007 # 7010 7216 7371
TRAP1 2006 #
TRAP2 2005 # 4943 4948 4996 4997 5001
(U) PV 1908 #
OPTIONS 1910 # 8407
(U) PXCT 1929 #
(U) SC 1655 #
AR SHIFT 1658 # 5421 5440 5442 5461 5464 5480 6237
FE 1656 # 6766 6769 7696 7732 8861 9482
SCAD 1657 # 3789 3802 3804 3917 4004 4026 4288 4301 4304 4842 4844
4858 5207 5250 5251 5424 5449 5452 5454 5469 5472 5485 5488
5500 5504 5526 5528 5531 5540 5594 5614 5692 5705 5707 5711
5846 5875 5893 5895 5899 5928 5929 5939 5994 5997 6005 6007
6010 6014 6045 6048 6074 6173 6177 6179 6243 6296 6310 6312
6368 6374 6471 6491 6504 6522 6540 6543 6545 6561 6574 6580
6602 6615 6629 6635 6712 6717 6767 6771 6785 6803 6833 6837
6858 6930 6948 6982 6984 6988 6993 7000 7002 7004 7024 7244
7254 7355 7359 7375 7429 7431 7438 7443 7500 7503 7582 7691
7698 7734 7736 7753 7771 7777 7801 7830 7854 7861 7863 7885
7893 7902 7904 7926 7928 7970 7985 7986 7991 8003 8379 8757
8777 8779 8783 8807 8818 8832 8871 8882 8924 8944 8994 9014
9076 9100 9105 9110 9128 9135 9144 9222 9225 9251 9253 9256
9287 9384 9411 9417 9418 9423 9428 9501 9509 9515 9650 9652
9735 9809 10010 10015 10174 10200 10226 10233 10235 10260 10263 10279
10282 10294 10296 10310 10340 10343 10369 10376 10449 10478 10516 10518
10526 10544 10557 10563 10587 10614 10630 10632 10633 10642 10644 10645
10652 10700 10702 10742 10811 10860 10862
(U) SCAD 1632 #
A 1633 # 3789 3802 3804 3914 3916 3917 3955 3977 4004 4004 4026
4026 4102 4288 4301 4304 4842 4844 4858 4858 4875 5250 5251
5265 5424 5427 5430 5432 5480 5483 5531 5540 5588 5594 5610
5614 5705 5707 5711 5718 5725 5728 5815 5816 5817 5818 5846
5856 5871 5875 5895 5911 5926 5928 5939 5994 5997 6045 6047
6077 6262 6310 6368 6374 6392 6432 6471 6483 6522 6570 6580
6602 6607 6615 6629 6635 6662 6712 6715 6717 6719 6784 6785
6803 6810 6815 6833 6837 6854 6858 6862 6921 6930 6948 6982
6988 6993 7000 7002 7004 7024 7244 7251 7254 7325 7339 7355
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-59
; Cross Reference Listing
7357 7359 7375 7429 7438 7500 7568 7571 7582 7615 7616 7617
7618 7771 7802 7804 7830 7893 7902 7904 7905 7909 7910 7926
7928 7946 7955 7970 7985 7986 7991 8003 8379 8407 8414 8449
8757 8777 8779 8783 8807 8818 8832 8863 8871 8882 8924 8944
8994 9014 9076 9100 9105 9110 9144 9203 9208 9222 9235 9287
9352 9384 9447 9501 9501 9509 9553 9650 9652 9735 9847 9894
9902 10008 10010 10045 10138 10191 10193 10200 10226 10233 10235 10263
10270 10279 10282 10282 10313 10340 10340 10343 10343 10376 10449 10461
10478 10483 10502 10530 10533 10585 10589 10614 10633 10652 10730 10742
10803 10811 10830 10834 10860 10862
A+1 1637 # 5632 5642 5644 5646 5648 5660 5662 5664 5665 5670 5692
5862 5893 5899 5899 6015 6016 6019 6074 6381 6431 6578 6597
6599 6627 6661 6821 6823 6850 6852 6938 6969 7801 9411 10260
10369 10642 10644 10645 10675
A+B 1635 # 4866 5449 5452 5454 5469 5472 5485 5488 5498 5500 5504
5522 5526 5528 5636 5637 5638 5640 5653 5654 5655 5657 5798
5801 6006 6007 6014 6048 6050 6088 6091 6177 6179 6239 6296
6312 6345 6379 6501 6504 6542 6543 6561 6574 6624 6626 6721
6730 6935 6936 6984 6986 7221 7232 7239 7246 7431 7583 7595
7597 7698 7726 7753 7774 7779 7835 7854 7885 7890 7921 7923
7969 7977 8416 8769 8800 9011 9075 9128 9139 9236 9253 9255
9724 9729 9809 9810 10003 10015 10174 10308 10346 10348 10518 10524
10539 10540 10598 10599 10602 10632 10635 10686 10699
A-1 1636 # 4869 5747 5750 5755 5764 5780 5781 5782 5783 5784 5785
5786 5787 5811 5812 5813 5814 5905 5929 6348 6491 6630 6941
7235 7906 7948 7949 7950 7951 8843 8849 9282 9283 10293 10295
A-B 1638 # 5207 6005 6010 6173 6243 6279 6283 6350 6352 6372 6376
6385 6394 6540 6545 6631 6658 6767 6771 6943 6964 7230 7426
7443 7493 7503 7578 7580 7691 7733 7734 7736 7757 7777 7861
7862 7863 7864 8001 8004 9135 9143 9413 9418 9428 9438 9439
10047 10049 10310 10516 10526 10544 10557 10563 10587 10672 10684 10708
10711 10733 10793 10809
A-B-1 1634 # 7717 9511 9515 10186 10294 10296
AND 1640 # 7013 8409 8412 8764 8996 8998 9007 9032 9057 9074 9123
9132 9225 9251 9256 9288 9304 9331 9341 9348 9365 9378 9399
9401 9417 9423 9429 9431 9472 9474 9910 10399 10463 10464 10468
10628 10630 10674 10700 10702 10721 10736
OR 1639 # 7998 9226 9257 9370 9393 9445 9476 9481 9483 9911 10194
10465 10466 10467 10469 10493 10715 10716 10863
(U) SCADA 1641 #
AR EXP 1644 # 5994 5997 6005 6045 6048 6074 6173 6239 6279 6283 6471
6540 6574 7244 9501 9501 9509
AR0-5 1643 # 5427 5430 6243 7013 7426 7429 7438 7443 7493 7500 7582
7757 7771 7830 7861 7863 7905 7909 7998 8001 8003 8409 8412
8764 9143 9144 9225 9251 9352 9417 9423 9431 9447 9474 9483
9724 9729 10049 10399 10461 10463 10464 10465 10466 10467 10468 10469
10493 10516 10530 10563 10585 10628 10674 10675 10686 10700 10702 10721
10736 10742 10809 10863
FE 1642 # 4869 5432 5485 5488 5632 5642 5644 5646 5648 5660 5662
5664 5665 5670 5747 5750 5755 5764 5780 5781 5782 5783 5784
5785 5786 5787 5811 5812 5813 5814 5862 5911 6006 6015 6016
6019 6088 6091 6312 6345 6348 6350 6352 6372 6376 6379 6381
6385 6394 6431 6432 6491 6542 6597 6599 6624 6626 6627 6630
6631 6658 6661 6662 6821 6823 6850 6852 6935 6936 6938 6941
6943 6964 6969 6984 7230 7232 7235 7239 7431 7578 7580 7698
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-60
; Cross Reference Listing
7717 7736 7777 7906 7910 7948 7949 7950 7951 8414 8416 8843
8849 9011 9075 9128 9139 9226 9235 9253 9255 9257 9288 9331
9348 9370 9378 9393 9401 9413 9429 9439 9445 9472 9476 9910
9911 10008 10047 10174 10191 10193 10194 10293 10294 10295 10296 10310
10313 10518 10526 10533 10589 10632 10642 10644 10645 10672 10684 10699
10708 10711 10715 10716 10733 10793 10834
# 1645 # 3789 3802 3804 3914 3916 3917 3955 3977 4288 4301 4304
4842 4844 5207 5250 5251 5424 5449 5452 5454 5469 5472 5480
5483 5500 5504 5522 5526 5528 5531 5540 5588 5594 5610 5614
5705 5707 5711 5718 5725 5728 5815 5816 5817 5818 5846 5856
5871 5875 5895 5926 5939 6007 6010 6014 6047 6050 6077 6177
6179 6262 6296 6310 6368 6374 6483 6501 6504 6522 6543 6545
6561 6570 6580 6602 6607 6615 6629 6635 6712 6717 6767 6771
6784 6785 6810 6815 6833 6837 6858 6862 6930 6948 6982 6988
6993 7000 7002 7004 7024 7251 7254 7325 7339 7355 7359 7375
7503 7568 7571 7615 7616 7617 7618 7691 7733 7734 7802 7804
7890 7893 7902 7904 7926 7928 7946 7955 7970 7985 7986 7991
8004 8379 8407 8449 8757 8777 8779 8783 8807 8818 8832 8863
8871 8882 8924 8944 8994 8996 8998 9007 9014 9032 9057 9074
9076 9100 9105 9110 9123 9132 9135 9203 9208 9222 9256 9287
9304 9341 9365 9384 9399 9438 9481 9553 9650 9652 9735 9809
9847 9894 9902 10010 10045 10138 10200 10226 10233 10235 10263 10279
10282 10282 10340 10340 10343 10343 10376 10449 10478 10483 10502 10544
10557 10587 10614 10630 10633 10635 10652 10803 10811 10860 10862
(U) SCADA EN 1646 #
0S 1647 # 4004 4004 4026 4026 4102 4858 4858 4866 4875 5265 5498
5636 5637 5638 5640 5653 5654 5655 5657 5692 5798 5801 5893
5899 5899 5905 5928 5929 6392 6578 6715 6719 6721 6730 6803
6854 6921 6986 7221 7246 7357 7583 7595 7597 7726 7753 7774
7779 7801 7835 7854 7862 7864 7885 7921 7923 7969 7977 8769
8800 9236 9282 9283 9411 9418 9428 9511 9515 9810 10003 10015
10186 10260 10270 10308 10346 10348 10369 10524 10539 10540 10598 10599
10602 10730 10830
(U) SCADB 1649 #
AR0-8 1652 # 4866 6296 6721 6730 7221 9256 9288 9304 9341 9365 9378
9399 9481 9910 9911 10003 10186 10308 10630 10635
AR6-11 1651 # 7426 7493 7578 7580 7595 7597 7753 7757 7854 7885 7890
7977 8001 8004 8996 8998 9007 9032 9057 9074 9123 9132 9143
9724 9729 10015 10047 10049 10516 10524 10526 10539 10540 10544 10563
10587 10598 10599 10602 10809
SC 1650 # 5207 5449 5452 5454 5469 5472 5485 5488 5498 5500 5504
5522 5526 5528 5636 5637 5638 5640 5653 5654 5655 5657 5798
5801 6005 6006 6007 6010 6014 6048 6050 6173 6177 6179 6239
6501 6504 6540 6542 6543 6545 6561 6574 6631 6658 6767 6771
6943 6964 6984 6986 7246 7431 7503 7583 7691 7698 7717 7726
7733 7734 7736 7774 7777 7779 7835 7862 7864 7921 7923 7969
8769 8800 9128 9135 9225 9226 9236 9253 9255 9257 9401 9413
9417 9418 9423 9428 9431 9438 9474 9483 9511 9515 9809 9810
10174 10294 10296 10346 10348 10493 10518 10557 10632 10674 10686 10715
10716 10863
# 1653 # 6088 6091 6243 6279 6283 6312 6345 6350 6352 6372 6376
6379 6385 6394 6624 6626 6935 6936 7013 7230 7232 7239 7443
7861 7863 7998 8409 8412 8416 8764 9011 9075 9139 9251 9331
9348 9370 9393 9429 9439 9445 9472 9476 10194 10310 10399 10463
10464 10465 10466 10467 10468 10469 10628 10672 10684 10699 10700 10702
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-61
; Cross Reference Listing
10708 10711 10721 10733 10736 10793
(U) SH 1665 # 3861 3863 3865 3867 3870 3871 3872 3873 3884 3887 7415
7422 7482 7489 7601 7603 7605 7607 7610 7611 7612 7613 7622
7625 9815 9816 9817 9818 9820 9821 9822 9823 9839 9841
AR 1667 # 4119 4121 4121 4866 5266 5497 5499 5503 5517 5587 5609
5704 5706 5717 5815 5816 5817 5818 5845 5864 5870 5932 6007
6010 6013 6016 6047 6262 6297 6498 6500 6503 6560 6570 6577
6606 6641 6644 6646 6766 6768 6770 6784 6812 6815 6820 6862
6868 6922 6953 6956 6958 6987 7002 7004 7206 7244 7341 7355
7362 7419 7429 7486 7500 7581 7697 7716 7855 7926 7946 7954
7968 7970 7977 8013 8016 8022 8047 8083 8476 8777 8779 8807
8870 8908 8918 8987 9014 9039 9056 9058 9076 9125 9144 9289
9378 9411 9650 9652 9752 9808 10004 10007 10007 10040 10078 10112
10138 10138 10156 10158 10210 10269 10333 10335 10369 10377 10450 10450
10524 10529 10540 10555 10584 10599 10602 10631 10703 10729 10736 10829
AR SWAP 1669 # 4080 4226 4229 4232 4233 4236 4237 4253 4254 4260 4261
4566 4569 4814 4817 4839 5037 5048 5049 5270 5314 5993 6044
6073 7352 7978 7991 8089 8107 8108 8161 8162 8289 8407 8411
8413 8420 8426 8468 8474 8754 8813 8821 8827 8890 8896 8911
8923 9237 9242 9242 9427 9472 9502 9712 10390 10452 10452
ARX 1668 # 3832 3913 4757 4775 4942 4947 4949 5054 5271 5276 5475
5484 5490 5521 5525 5881 5893 5898 5909 6088 6342 6515 6518
6526 6543 6545 6633 6726 6731 6945 7221 7252 7333 7585 7632
7782 7817 7909 7930 8031 8033 8427 8756 8893 8910 8942 9074
9192 9193 9208 9239 9258 9300 9331 9340 9418 9423 9482 9510
9513 9515 9668 9718 9740 9744 9813 9846 9850 9853 9855 9858
9896 10086 10142 10191 10201 10273 10294 10296 10320 10393 10494 10531
10536 10592 10625 10626 10627 10641 10643 10652 10656 10664 10685 10704
10734 10782 10790 10844 10845 10846 10847
SHIFT AR!ARX 1666 # 4003 4033 4307 4843 5207 5207 5252 5257 5428 5430 5449
5454 5466 5471 5473 5482 5487 5489 5502 5527 5533 5538 5539
5597 5724 5727 5855 5880 5882 5883 5886 5894 5896 5900 5911
5940 6012 6015 6018 6311 6313 6317 6373 6375 6506 6517 6519
6521 6525 6527 6631 6634 6635 6658 6670 6772 6777 6779 6788
6943 6946 6947 6964 6989 7001 7018 7146 7148 7357 7360 7696
7704 7732 7735 7735 7737 7894 7904 7908 7989 8381 8764 8792
8825 8947 8953 8955 8957 8959 8990 9007 9077 9114 9292 9302
9303 9382 9386 9654 9736 10016 10203 10237 10262 10378 10461 10615
10633 10633 10650
(U) SKIP 1728 #
AC REF 1769 #
AC#0 1736 # 4002 4621 6244 6246 6247
AD CRY0 1746 # 4876 4931 4936 4981 5000 5316 5905 5923 5924 6089 6176
6178 6342 6369 6615 6640 6930 6952 7772 7804 8016 8026 8102
9081 9437 10113 10164 10211 10275 10278 10309 10367 10386 10439 10818
10859
AD#0 1748 # 5424 5519 5594 5710 6482 6528 6556 6699 6798 6951 7144
7147 7203 7353 7780 7979 8044 9116 9329 9417
AD0 1747 # 5324 5326 5612 5799 5802 5872 5900 6078 6489 6606 6701
6705 6711 6748 6759 6761 6804 6808 6816 6844 6845 6862 6874
6880 6918 6922 7210 7214 7349 7374 7818 7975 8014 8757 10004
10013 10209 10262
ADX0 1745 # 8125 8175 10390
AR0 1735 # 4083 4257 4264 5318 5435 5694 5726 5729 6262 6575 6694
6698 6872 7206 7237 7582 9501 9509 9749 9758 10028 10078 10530
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-62
; Cross Reference Listing
10585
AR18 1734 # 4243 4250 5422 5440 5442 5461 5464 5480 8765 9852 10473
ARX0 1733 # 10139 10449 10637 10655 10680
BR0 1732 # 5926 6080 6173 6609 6864 6881 10033 10155 10334
EVEN PAR 1731 #
FETCH 1753 #
INTRPT 1761 # 3862 3864 3866 3868 3886 3888 4870 4887 4902 5181 7602
7604 7606 7608 7624 7626 8024 8050 8123 8173 8348 9287 9371
9553 9815 9816 9817 9818 9840 9841 10046 10095 10174 10377 10518
10701 10705
IO LEGAL 1764 # 4728 4729 4735 4737 4895 8285 8291 8380 8387 8389 8394
8408 8421 8424 8450 8469 8472 8751 8755 8783 8814 8817 8869
8885 8888 8897 8900 8909 9608
KERNEL 1754 # 4725
P!S XCT 1765 # 8089 8114
PC SEC0 1741 # 4757 4758 4933 4984 4987 5022 5024 5047 5177 6225 7411
7418 7478 7485 9968 10528 10529 10583 10584 10625 10665 10697 10699
10731 10789 10831
PI CYCLE 1758 # 8297 8300 8309 9633
PUBLIC 1756 #
RPW REF 1757 # 9203 9208
RUN 1763 #
SC0 1737 # 5933 10313
SCAD#0 1744 # 5427 5430 5498 7906 8409 8769 8996 8998 9032 9057 9304
9342 9352 9366 9399 9402 9429 9431 9447 9473 9475 9810 9911
SCAD0 1743 # 5450 5453 5455 5469 5472 5485 5488 5500 5505 5522 5911
6005 6008 6010 6014 6243 6279 6283 6296 6312 6502 6504 6540
6544 6546 6767 7231 7443 7504 7691 7698 7718 7890 8001 9136
9143 10049 10557 10636 10672 10684 10709 10712 10733 10793 10809
USER 1755 # 4773 4790 4815 4816 4821 5267 5332 9386 9666
-EBUS GRANT 1759 # 8344
-EBUS XFER 1760 # 8334
-LOCAL AC ADDR 1750 # 4099 4106 5179 5243
-MTR REQ 1770 # 3911 4867 5193 5208 5333 7631 9845
-START 1762 # 4865
-VMA SEC0 1767 # 7572 7598 7923
(U) SP MEM 2072 #
CACHE INH 2079 #
EPT 2093 # 8963 9018 9065 9282
EPT CACHE 2094 # 7892 7974
EPT EN 2078 #
EPT FETCH 2095 # 9009 9010 9015
EXEC 2075 #
FETCH 2073 #
PT 2098 # 3840 5184
PT FETCH 2099 #
SEC 0 2076 #
UNCSH+UNPAGE 2080 #
UNPAGED 2092 # 9102 9107 9112 9301 9306 9321 9343 9363 9368 9392 9427
UNPAGED+CACHED 2081 # 9089 9093
UPT 2096 # 5246 5248 8964 9283 9663
UPT EN 2077 #
UPT FETCH 2097 #
USER 2074 #
(U) SPEC 1844 #
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-63
; Cross Reference Listing
AD LONG 1864 # 4287 4303 5749 5749 5752 5752 5797 5800 5851 5853 5863
5904 5907 5938 5942 6174 6174 6318 6479 6479 6569 6615 6627
6661 6673 6673 6696 6696 6814 6869 6869 6930 6938 6969 6983
7972 8881 8944 10220 10221 10234 10278 10279 10279 10293 10336 10376
10398 10437 10805
ARL IND 1859 # 4102 4107 4107 4286 4302 4775 4790 4982 4985 5054 5257
5265 5267 5432 5432 5843 5994 5997 6005 6045 6048 6074 6074
6173 6239 6471 6471 6540 6689 6939 7202 7326 7358 7580 7910
7921 7923 7969 8414 8893 8903 9226 9235 9236 9666 9668 9724
10008 10193 10533 10715 10716 10834
CLR FPD 1849 # 4020 7432 7879 10372
FLAG CTL 1861 # 3730 4721 4762 4766 4812 4813 4816 4818 4819 4845 4848
4856 5280 8304 9042 9673
GEN CRY18 1852 # 4101 4707 5254 5264 6369 8300 8308 8788
INH CRY18 1846 # 5317 7847 10534 10582 10586 10590 10673 10710
LOAD PC 1850 # 4859
MQ SHIFT 1847 # 5882 5884 5922 5924 6623 6934 6981 10153
MTR CTL 1860 # 8886 8898 8910 8911 8912 8926 8927 8928 8929
SAVE FLAGS 1862 # 4729 4740 4933 5022 5024 5273
SCM ALT 1848 # 5421 5440 5442 5461 5464 5480 6237 6766 6769 7696 7732
8861 9482
SP MEM CYCLE 1863 # 3840 5184 5246 5248 7892 7974 8963 8964 9009 9010 9015
9018 9065 9089 9093 9102 9107 9112 9282 9283 9301 9306 9321
9343 9363 9368 9392 9427 9663
STACK UPDATE 1857 # 4931 4936 4981 4999 5315
XCRY AR0 1851 # 3999 4032 5319 5502 5503 5514 5594 5598 5724 5727 5874
5939 6012 6013 6263 6284 6311 6500 6503 6768 6770 6987 7334
7341 7355 10236 10530 10585
(U) SPEC INSTR 2020 # 9316
CONS XCT 2029 # 4875
CONT 2030 # 4869
HALTED 2028 # 4858
INH PC+1 2023 # 3841
INSTR ABORT 2027 # 8941 9654
INTRPT INH 2026 #
KERNEL CYCLE 2022 #
PXCT 2025 # 5335
SET PI CYCLE 2021 # 3788 8931 8987
SXCT 2024 #
(U) SWITCH%
ADJBP 1119 6223 6229 6231 7746 7755 7759 7761 7769 7912
BACK.BLT 1129 8093 8098 8101 8133 8143
BIG.PT 1187 8768 8770 8772 8838 8840 8847 8853 9330 9333 9336 9347
9349 9351 9400 9403 9405 9408 9410 9412 9414
BLT.PXCT 11 1076 2999 3001 3003 3343 3346 3393 3395 3397 8085 8088
8092 8152 8181
CST.WRITE 20 1186 9440 9444 9446
DBL.INT 1116 5823 5828 5944
DDT.BUG 21 1188 8397 8404 8417
DIAG.INST 1172 1174 1176 5287 5298 5303 5340 5350 5362
EPT540 6 1169 9268 9274 9280
EXTEND 1113 6286 6299 6301 9762 9927 9938 9982 9985 10102 10105 10175
10178 10242 10245 10400 10403 10605 10608 10865
EXTEXP 13 3791 3797 3799 3847 3850 3855 5090 5099 5108 5155 5158
5351 5361 6678 6792 6795 6839 6842 6882 6885 7025 7028 7151
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-64
; Cross Reference Listing
7159 7176 7180 7182 7379
FPLONG 10 1058 5949 5952 5975 5983 5989 6037 6042 6066 6071 6107
6165 6183 6216 6403 6405 6407 6413 6421 6437 6439 6441 6443
6445 6447 6455 6457 6459
GFTCNV 18 1189 6789 6791 7029 7118 7185 7190 7195 7257 7323
IMULI.OPT 1092 5576 5579 5586 5590 5593
INSTR.STAT 1153 1155 1158 1916 1918 1920 8433 8437 8445 8508 8740
IPA20 17 1184 8999 9001 9003 9087 9095
KLPAGE 9 1065 1082 1088 1090 1888 1890 1892 2332 2335 2368 2370
2391 2393 2470 2472 2486 2492 2618 2620 2637 2639 2666 2671
2726 2728 2763 2765 3095 3098 3112 3114 3151 3154 3174 3178
3181 3183 3367 3369 3398 3400 3402 3404 3406 3408 3410 3413
3417 3426 3447 3449 3485 3487 3491 3493 3503 3505 3515 3517
3524 3526 3528 4891 4893 4899 4906 8745 8749 8753 9148 9538
9548 9580 9582 9584 9605 9609 9625 9634 9648 9677 9684 9709
9711
LONG.PC 7 1167 1895 1897 1899 4726 4730 4734 4739 4742 4745 4772
4835
MODEL.B 8 1072 1083 1086 1095 1098 1107 1109 1622 1625 1627 1675
1681 1710 1717 1724 1738 1740 1742 1749 1751 1766 1768 1798
1800 1811 1813 1816 1840 1842 1853 1856 1858 1909 1911 1913
1928 1946 1953 1956 2042 2070 2110 2112 2114 2196 2198 2257
2260 2263 2270 2272 2274 2276 2278 2280 2444 2446 2692 2694
2697 2701 2705 2708 2710 2712 2714 2717 2721 2725 2778 2780
2782 2784 2786 2825 2831 2875 2878 2881 2890 2892 2967 2969
2971 2985 2987 2989 2991 2993 2995 2997 3004 3006 3101 3105
3115 3117 3142 3144 3227 3231 3265 3267 3269 3271 3315 3317
3321 3323 3338 3354 3366 3370 3373 3376 3378 3383 3389 3391
3521 3523 3529 3535 3537 3726 3729 3731 3889 3900 3921 3939
3941 3943 3950 3952 3954 3961 3963 3965 3972 3974 3976 3983
3985 3987 4923 4930 4937 4959 4975 5004 5235 5237 5239 5635
5639 5652 5656 5690 5695 5700 5709 5714 6288 6291 6294 6481
6484 6487 6505 6508 6511 6524 6531 6553 6563 6568 6591 6593
6595 6616 6619 6622 6638 6647 6652 6665 6667 6669 6677 7380
7727 7731 8359 8361 8363 8365 8367 8369 8785 8787 8790 8794
8799 8806 9020 9023 9025 9026 9028 9045 9047 9049 9067 9069
9071 9098 9117 9186 9188 9190 9492 9495 9497 9503 9505 9507
9539 9541 9543 9615 9619 9690 9695 9704 9728 9730 9732 9737
9739 9774 9779 9784 9867 9874 9926 10167 10170 10173 10238 10240
10480 10482 10484 10551 10554 10556 10566 10571 10578 10619 10623 10629
10657 10660 10667 10747 10752 10798 10823 10825 10833 10839 10852 10855
MOS 8453 8454 8456 8465
MULTI 14 1062 2082 2091 2100
NOCST 15 1185 9328 9337 9339 9355 9362 9372 9416 9420 9422 9458
9468 9485
NONSTD 1178 1902 1904 1906
OP.CNT 1040 1137 1139 3813 3816 8560 8604
OP.TIME 1043 1141 1143 3817 3820 8606 8636
OWGBP 16 1183 3792 3794 3796 3851 3854 6224 6226 6228 6241 6248
7397 7410 7448 7453 7477 7507 7816 7820 7822 7824 7827 7829
7831 7833 7838 7842 7858 7865 7869 7874 7913 7957 8005 9883
9890 9914 9939 9981 9990 9996 10002 10111 10119 10130 10182 10187
10189 10257 10264 10268 10611 10616 10618
PAGCNT 1054 1160 1163 4860 4863 8760 8763 9194 9198 9202 9205 9207
9212 9214
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-65
; Cross Reference Listing
PUSHM 1111 5352 5356 5360
RPW 1122 3563 3565 3567
SHIFT.MUUO 1067 5218 5220 5222 9627 9629 9631
SMP 12 1179 7458 7460 7462 7464 7467 7470 7496 7499 7502 7547
7560 7643 7682 7719 7721 7723 7728 7730
SNORM.OPT 4 1103 6354 6365 6386
SO.CNT 1046 1145 1147 3821 3825 8640 8689
SO2.CNT 1049 1149 1151 3826 3830 8639 8692 8739
SXCT 1096 1099 3895 3897 3899 5339 5364 5401
TRACKS 1036 1133 1135 3809 3812 8511 8513 8515 8520 8536 8542 8558
TRXDEF 1165 2373 2376 2499 2508 2674 2676 3454 3465 3494 3496 3518
3520
WRTST 1126 3568 3570 3572 4055 4057 4059
XADDR 5 2052 2054 2056 2797 2799 2802 3379 3382 3554 3556 3558
3859 3880 3901 3908 3920 4097 4108 4129 4131 4133 4345 4347
4349 4751 4755 4761 4779 4785 4794 4803 4809 4825 4827 4834
5016 5021 5033 5040 5044 5051 5170 5176 5195 5212 5240 5284
5309 5313 5321 6287 6295 6298 7177 7179 7401 7403 7406 7457
7463 7471 7517 7561 7683 7748 7751 7754 7806 7808 7810 7814
7843 7922 7925 7927 7932 8010 8055 9610 9614 9655 9662 9675
9716 9720 9769 9803 9861 9875 9882 9925 10519 10521 10523 10527
10545 10565 10579 10604 10661 10663 10666 10688 10696 10713 10726 10728
10732 10753 10757 10761 10766 10797 10826 10828 10832 10840 10842 10851
(U) TIME 1689 #
2T 1692 # 4574 4575 4576 4870 7568 7571 7578 10436
3T 1693 # 3835 3914 3945 3955 3967 3977 3988 4865 4954 4980 4983
4986 5718 7503 7632 7692 7717 8405 8844 8849 9253 9255 9379
9847 10116 10386 10438
4T 1694 #
5T 1695 # 3802 3804 4831 4897 5254 5256 8329 8332 8336 8349 8354
8355 8388 8395 8422 8425 8426 8428 8470 8473 8475 8477 8756
8788 8805 8815 8819 8823 8873 8874 8875 8876 8886 8889 8891
8898 8901 8910 8911 8912 8917 8926 8927 8928 8929 8997 9055
9209 9224
(U) U0 1505 #
(U) U21 1567 #
(U) U23 1573 #
(U) U42 1648 #
(U) U45 1654 #
(U) U48 1661 #
(U) U51 1682 #
(U) U73 1866 #
(U) VMA 1683 # 9526
AD 1688 # 3787 3916 4769 4822 4826 4939 4941 4989 4990 5185 5261
7201 7242 7324 7338 8018 8023 8030 8039 8048 8051 8155 8171
8173 8311 8312 8382 8767 8833 8843 8849 8862 8882 8990 9002
9015 9024 9044 9048 9060 9070 9127 9134 9220 9300 9305 9315
9340 9363 9366 9391 9423 9533 9850 9853 9855 9858 10114 10115
10315 10383 10447 10479 10626 10627 10700 10704 10729 10741 10743 10755
10759 10806 10829 10845 10847 10858
LOAD 1686 # 3834 3836 3861 3863 3865 3867 3885 3887 4931 4936 4977
4979 5003 5182 5191 5245 5247 7415 7422 7482 7489 7601 7603
7605 7607 7610 7611 7612 7613 7621 7622 7623 7625 7887 7897
7898 7899 7900 7973 7981 7998 8113 8114 8121 8123 8919 8954
8956 8958 8960 8992 8993 9005 9276 9278 9482 9628 9815 9816
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-66
; Cross Reference Listing
9817 9818 9839 9840 9841
PC 1685 # 3733 4859 9043 10524 10539 10599 10602 10811
PC+1 1687 # 3870 3871 3872 3873 3883 3884 3966 3999 4001 4007 4009
4099 4106 4289 4563 4566 4571 4602 4620 4668 4683 4699 4707
4798 4846 4904 4946 5319 5426 5456 5475 5490 5513 5538 5757
5766 5886 5927 6315 6316 6671 7020 7146 7148 7149 7204 7212
7216 7432 7506 7762 7781 7860 7879 7911 8032 8038 8046 8128
8178 8296 8298 8300 8303 10023 10085 10088 10145 10209 10227 10274
10312 10366 10653
VMA 1684 # 4282 4306 4796 4800 4810 4811 5028 5053 5186 5194 5251
5275 5277 5842 5897 6472 6688 7205 7327 7580 7586 7597 7928
8455 8945 8947 8966 9083 9669 9671 9672 10232 10234 10373 10783
10787 10850
(U) VMAX 1676 #
AD12-17 1680 #
PC SEC 1678 # 5045 5050
PREV SEC 1679 # 4774 4791 5268 8801 9667
VMAX 1677 #
(U) # 1872 # 3789 3801 3802 3804 3832 3834 3835 3836 3846 3870 3871
3872 3873 3883 3884 3914 3916 3917 3955 3977 4004 4016 4017
4021 4026 4033 4288 4301 4304 4828 4842 4844 4892 4901 4905
5182 5191 5207 5245 5247 5250 5251 5260 5281 5282 5283 5336
5336 5424 5449 5452 5454 5469 5472 5480 5483 5500 5504 5522
5526 5528 5531 5540 5588 5594 5610 5614 5705 5707 5711 5718
5725 5728 5815 5816 5817 5818 5846 5856 5871 5875 5895 5914
5926 5934 5939 5978 5979 5980 6007 6010 6014 6047 6050 6077
6088 6091 6102 6177 6179 6243 6262 6279 6283 6296 6310 6312
6344 6345 6350 6352 6368 6372 6374 6376 6379 6385 6394 6442
6446 6456 6483 6501 6504 6522 6529 6530 6543 6545 6558 6561
6570 6580 6592 6602 6607 6615 6618 6624 6626 6629 6635 6657
6672 6712 6717 6747 6767 6771 6784 6785 6801 6810 6815 6833
6837 6848 6855 6858 6863 6876 6930 6933 6935 6937 6948 6963
6982 6988 6991 6993 7000 7002 7004 7013 7022 7024 7209 7211
7217 7231 7232 7239 7250 7251 7254 7325 7331 7339 7344 7356
7359 7375 7413 7420 7440 7443 7480 7487 7503 7568 7571 7615
7616 7617 7618 7691 7733 7734 7802 7804 7860 7861 7863 7877
7881 7884 7887 7890 7893 7897 7898 7899 7900 7902 7904 7926
7928 7930 7946 7955 7970 7973 7985 7986 7989 7991 7998 8000
8004 8012 8022 8023 8038 8040 8049 8052 8053 8108 8118 8119
8120 8130 8162 8169 8170 8180 8379 8409 8412 8416 8449 8757
8764 8766 8777 8778 8779 8783 8807 8818 8832 8860 8863 8871
8882 8919 8921 8924 8932 8944 8954 8956 8958 8960 8992 8993
8994 8996 8998 9005 9007 9011 9014 9032 9057 9074 9075 9076
9100 9105 9110 9123 9132 9135 9139 9189 9191 9203 9208 9222
9251 9256 9276 9278 9287 9304 9331 9341 9348 9365 9370 9384
9393 9399 9413 9429 9438 9439 9445 9472 9476 9481 9527 9553
9557 9561 9565 9569 9573 9577 9588 9592 9596 9600 9604 9613
9618 9628 9632 9650 9652 9674 9703 9710 9735 9809 9812 9820
9821 9822 9823 9838 9839 9847 9894 9902 10003 10010 10012 10016
10022 10024 10035 10040 10041 10042 10045 10055 10079 10081 10087 10138
10141 10142 10151 10186 10194 10200 10203 10226 10233 10235 10237 10263
10269 10279 10282 10308 10310 10319 10336 10340 10343 10376 10379 10392
10395 10399 10435 10449 10463 10464 10465 10466 10467 10468 10469 10478
10483 10502 10544 10557 10587 10614 10615 10628 10630 10633 10635 10652
10654 10672 10684 10698 10699 10700 10702 10708 10711 10721 10733 10736
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page CRF-67
; Cross Reference Listing
10793 10803 10810 10811 10860 10861 10862
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page LLD-1
; Location / Line Number Index
; Dcode Loc'n 0 1 2 3 4 5 6 7
D 0000 5067 5068 5069 5070 5072 5073 5074 5075
D 0010 5077 5078 5079 5080 5082 5083 5084 5085
D 0020 5088 5089 5091 5092 5093 5094 5095 5096
D 0030 5097 5098 5109 5110 5111 5112 5113 5114
D 0040 5118 5119 5120 5121 5122 5123 5124 5125
D 0050 5126 5127 5128 5129 5130 5131 5132 5133
D 0060 5134 5135 5136 5137 5138 5139 5140 5141
D 0070 5142 5143 5144 5145 5146 5147 5148 5149
D 0100 5153 5154 6681 6682 5300 5301 6683 6684
D 0110 6464 6465 6466 6467 5829 5830 5831 5832
D 0120 4275 4276 6253 6254 4295 4296 6256 6257
D 0130 5950 5951 6219 6220 7386 7387 7388 7389
D 0140 5954 5955 5956 5957 5959 5960 5961 5962
D 0150 5964 5965 5966 5967 5969 5970 5971 5972
D 0160 6027 6028 6029 6030 6032 6033 6034 6035
D 0170 6056 6057 6058 6059 6061 6062 6063 6064
D 0200 4053 4054 4058 4060 4062 4063 4064 4065
D 0210 4067 4068 4069 4070 4072 4073 4074 4075
D 0220 5570 5571 5572 5573 5602 5603 5604 5605
D 0230 5675 5676 5677 5678 5680 5681 5682 5683
D 0240 5406 5407 5408 5409 5410 5411 5412 5413
D 0250 4113 4114 4702 4703 4713 4714 4882 4883
D 0260 4911 4912 4913 4914 5009 5010 5011 5012
D 0270 5545 5546 5547 5548 5557 5558 5559 5560
D 0300 4582 4583 4584 4585 4586 4587 4588 4589
D 0310 4591 4592 4593 4594 4595 4596 4597 4598
D 0320 4657 4658 4659 4660 4661 4662 4663 4664
D 0330 4609 4610 4611 4612 4613 4614 4615 4616
D 0340 4672 4673 4674 4675 4676 4677 4678 4679
D 0350 4625 4626 4627 4628 4629 4630 4631 4632
D 0360 4687 4688 4689 4690 4691 4692 4693 4694
D 0370 4640 4641 4642 4643 4644 4645 4646 4647
D 0400 4314 4315 4316 4317 4324 4325 4326 4327
D 0410 4334 4335 4336 4337 4344 4346 4350 4351
D 0420 4353 4354 4355 4356 4363 4364 4365 4366
D 0430 4369 4370 4371 4372 4379 4380 4381 4382
D 0440 4389 4390 4391 4392 4399 4400 4401 4402
D 0450 4409 4410 4411 4412 4420 4421 4422 4423
D 0460 4430 4431 4432 4433 4440 4441 4442 4443
D 0470 4450 4451 4452 4453 4460 4461 4462 4463
D 0500 4128 4130 4134 4135 4137 4138 4139 4140
D 0510 4142 4143 4144 4145 4147 4148 4149 4150
D 0520 4152 4153 4154 4155 4157 4158 4159 4160
D 0530 4162 4163 4164 4165 4167 4168 4169 4170
D 0540 4174 4175 4176 4177 4179 4180 4181 4182
D 0550 4184 4185 4186 4187 4189 4190 4191 4192
D 0560 4194 4195 4196 4197 4199 4200 4201 4202
D 0570 4204 4205 4206 4207 4209 4210 4211 4212
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page LLD-2
; Location / Line Number Index
; Dcode Loc'n 0 1 2 3 4 5 6 7
D 0600 4472 4473 4474 4475 4476 4477 4478 4479
D 0610 4481 4482 4483 4484 4485 4486 4487 4488
D 0620 4490 4491 4492 4493 4494 4495 4496 4497
D 0630 4499 4500 4501 4502 4503 4504 4505 4506
D 0640 4508 4509 4510 4511 4512 4513 4514 4515
D 0650 4517 4518 4519 4520 4521 4522 4523 4524
D 0660 4526 4527 4528 4529 4530 4531 4532 4533
D 0670 4535 4536 4537 4538 4539 4540 4541 4542
D 0700 8191 8192 8193 8194 8195 8196 8197 8198
D 0710 8202 8203 8204 8205 8206 8207 8208 8209
D 0720 8213 8214 8215 8216 8217 8218 8219 8220
D 0730 8224 8225 8226 8227 8228 8229 8230 8231
D 0740 8237 8238 8239 8240 8241 8242 8243 8244
D 0750 8249 8250 8251 8252 8253 8254 8255 8256
D 0760 8260 8261 8262 8263 8264 8265 8266 8267
D 0770 8271 8272 8273 8274 8275 8276 8277 8278
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page LLU-1
; Location / Line Number Index
; Ucode Loc'n 0 1 2 3 4 5 6 7
U 0000 3730: 3733: 4080= 3945: 3956: 3967: 3978: 3989:
U 0010 4564= 4567= 4569= 4571= 4573= 4574= 4575= 4576=
U 0020 4020= 4021= 8295= 8296= 6408= 6412= 8297= 8298=
U 0030 4285= 4286= 3848 4288= 6431= 6433= 4757= 4758=
U 0040 9553= 9557= 9561= 9565= 9569= 9573= 9577= 9581=
U 0050 9588= 9592= 9596= 9600= 9604= 9608= 9613= 9618=
U 0060 3840= 3999= 4000= 4002= 4003= 4004= 4007= 4009=
U 0070 3910= 3911= 5280= 5281= 4016= 4017= 5282= 5283=
U 0100 4089: 4091: 4099: 4119: 4122: 4221: 4223: 4107:
U 0110 4301= 4302= 4083= 4304= 4232= 4233= 5941= 5943=
U 0120 4939= 3849 4942= 4943= 4844= 8311= 4845= 8312=
U 0130 5184= 6427= 5185= 5187= 3916 6428= 4043: 4048:
U 0140 3788= 3917 3790= 3798= 3801= 3802= 3804= 3919
U 0150 10487= 6442= 3833= 3834= 10488= 6446= 3835= 3836=
U 0160 3862= 3864= 3866= 3868= 3870= 3871= 3872= 3873=
U 0170 3875= 3876= 3877= 3878= 3883= 3884= 3886= 3888=
U 0200 5611= 4086= 4236= 4237= 5612= 4226= 5614= 5615=
U 0210 5689= 5691= 5694= 5702= 4246= 4247= 5705= 5707=
U 0220 5253= 5255= 4026 5256= 7953= 7955= 4875= 4876=
U 0230 5450= 5453= 5455= 5456= 5748= 5749= 5751= 5752=
U 0240 6498= 10259= 8307= 8308= 6502= 6504= 10613= 8309=
U 0250 5851= 10261= 5853= 5923= 5856= 4032 10614= 5924=
U 0260 5636= 5637= 5638= 5640= 5642= 5644= 5646= 5648=
U 0270 3841= 3846= 3914= 4033 5518= 5937= 5519= 5938=
U 0300 4253= 4254= 5993= 5995= 4260= 4261= 4229= 5997=
U 0310 7411= 7412= 7414= 7416= 7418= 7419= 7421= 7423=
U 0320 5653= 5654= 5655= 5657= 5660= 5662= 5664= 5665=
U 0330 6608= 4289 6609= 6610= 4101= 4102= 6640= 6642=
U 0340 5179= 5181= 5756= 5757= 8303= 8304= 5759= 5760=
U 0350 5862= 6774= 4306 6775= 5863= 6671= 5864= 6672=
U 0360 5182= 4307 6049= 7003= 4760= 4762= 6050= 7005=
U 0370 6477= 4309 6479= 7006= 6483= 4310 6491= 7008=
U 0400 7478= 7479= 7481= 7483= 7485= 7486= 7488= 7490=
U 0410 8285= 8286= 8289= 4243= 4267= 4268= 8291= 8292=
U 0420 7948= 7949= 5765= 5766= 7950= 7951= 5768= 5769=
U 0430 6562= 6780= 4699 6781= 6569= 7010= 6570= 7011=
U 0440 7854= 4767 7856= 7366= 4765= 4766= 7859= 7369=
U 0450 8411= 8412= 10094= 7370= 8413= 4773 10095= 7371=
U 0460 5780= 5781= 5782= 5783= 5784= 5785= 5786= 5787=
U 0470 6712= 6713= 6714= 6715= 4774= 4776= 7439= 7440=
U 0500 8394= 8395= 8405= 5589= 4887= 4889= 4250= 5594=
U 0510 8435= 8447= 8450= 8451= 5839= 5843= 4257= 5844=
U 0520 7602= 7604= 7606= 7608= 7610= 7611= 7612= 7613=
U 0530 7615= 7616= 7617= 7618= 7621= 7622= 7624= 7626=
U 0540 6717= 4790 6718= 6719= 4787= 4789= 7897= 7898=
U 0550 7899= 7900= 7020= 7022= 4801 9203= 9208= 9209=
U 0560 5887= 6834= 5888= 6835= 5797= 5799= 5800= 5802=
U 0570 9142= 7985= 9143= 7986= 4810 7987= 9144= 7988=
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page LLU-2
; Location / Line Number Index
; Ucode Loc'n 0 1 2 3 4 5 6 7
U 0600 4720: 4721: 4723: 4724: 4725: 4727: 4728: 4729:
U 0610 4735: 4736: 4737: 4738: 4740: 4741: 4746: 4747:
U 0620 6863= 4811 6864= 6865= 4812 4815: 4817: 4796:
U 0630 4769: 7886= 4770: 7887= 4798: 4828 9243= 9251=
U 0640 5811= 5812= 5813= 5814= 5815= 5816= 5817= 5818=
U 0650 8992= 8993= 8994= 8995= 8996= 8997= 8998= 9002=
U 0660 8766= 8767= 4830 9009= 9992= 8769= 9993= 9010=
U 0670 10208= 10209= 4831 9011= 10211= 10212= 9994= 9012=
U 0700 4842: 4264= 4931= 4933= 5978= 5979= 5980= 5981=
U 0710 8469= 4282= 4321= 8470= 8472= 4331= 4341= 8473=
U 0720 7774= 7775= 7777= 4833 5910= 9018= 5911= 9019=
U 0730 7926= 7929= 4839 7930= 7328= 9024= 7329= 9032=
U 0740 9039= 9040= 9041= 9042= 9043= 9044= 4846 9048=
U 0750 8118= 8119= 8120= 8121= 4791= 4793= 4847 9050=
U 0760 9058= 9059= 9055= 9056= 7779= 9060= 7780= 9061=
U 0770 4848 8169= 8170= 8171= 4818= 4819= 4859 9062=
U 1000 5314: 4360= 5244: 4892 5479: 5167: 5177: 4376=
U 1010 5198: 5200: 5202: 7156: 7158: 4898 4855: 4856:
U 1020 4821= 4822= 5245: 4954 7971= 9065= 7972= 9066=
U 1030 8321= 8322= 4981 8330= 7992= 9070= 7998= 9072=
U 1040 8873= 8874= 8875= 8876= 4824= 4826= 4991 9232=
U 1050 8954= 8956= 8958= 8960= 4866= 4867= 5000 9233=
U 1060 5871= 5003 9092= 9094= 5872= 5028 5875= 5876=
U 1070 9082= 9083= 5047 9084= 8100= 9277= 8102= 9279=
U 1100 8387= 8388= 8389= 8390= 7161: 7163: 7165: 7167:
U 1110 7169: 7171: 7173: 7175: 4977= 4979= 4386= 5050
U 1120 5926= 5927= 5053 5928= 5054 5929= 6661= 6663=
U 1130 9100= 5194 9101= 9102= 8154= 9282= 8155= 9283=
U 1140 9105= 5246 9106= 9107= 5933= 5247 5934= 5935=
U 1150 9289= 9290= 5259 9292= 8804= 9293= 8805= 9294=
U 1160 6078= 5260 6080= 6081= 4869= 4870= 6089= 6091=
U 1170 9379= 9380= 5261 9384= 8822= 9385= 8824= 9387=
U 1200 8421= 8422= 8424= 8425= 8751= 8752= 8755= 8756=
U 1210 8784= 8789= 8791= 8792= 8814= 8815= 8818= 8819=
U 1220 9815= 9816= 9817= 9818= 9820= 9821= 9822= 9823=
U 1230 9825= 9826= 9827= 9828= 9838= 9839= 9840= 9841=
U 1240 6343= 6344= 6346= 6347= 6349= 6351= 6353= 6369=
U 1250 9110= 5266 9111= 9112= 4896= 4897= 10049= 10050=
U 1260 9651= 9653= 5267 9654= 6380= 6382= 6383= 6385=
U 1270 4901= 4902= 9702= 9703= 4904= 4905= 10051= 10052=
U 1300 8885= 8886= 8888= 8889= 8897= 8898= 8900= 8901=
U 1310 8906= 4396= 8909= 8910= 5022= 5024= 5037= 5045=
U 1320 4935= 4936= 6577= 6578= 5270 7921= 6580= 7923=
U 1330 4947= 4949= 5271 10100= 4984= 4987= 5273 10101=
U 1340 6590= 6592= 5275 6598= 8967= 6600= 8968= 6603=
U 1350 10141= 10142= 10143= 5277 5316 10151= 10145= 10153=
U 1360 6615= 6618= 6624= 6626= 6627= 6629= 6630= 6631=
U 1370 9958= 9959= 9960= 9961= 4989= 4990= 10160= 10161=
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page LLU-3
; Location / Line Number Index
; Ucode Loc'n 0 1 2 3 4 5 6 7
U 1400 5422= 5424= 5441= 5442= 5462= 5463= 6044= 6045=
U 1410 6073= 6074= 6225= 6238= 6263= 6280= 6284= 6297=
U 1420 6694= 6695= 6696= 6697= 6698= 6700= 6702= 6703=
U 1430 9968= 9969= 9970= 9971= 9014= 10191= 9015= 10192=
U 1440 6813= 5320 4996= 4997= 6814= 5464 6816= 6817=
U 1450 10040= 10041= 5472 10042= 5001= 5002= 10315= 10316=
U 1460 6824= 5480 5488 7818= 6828= 6829= 6830= 7819=
U 1470 10086= 10087= 5508 10088= 9080= 10376= 9081= 10377=
U 1500 6473= 6689= 6474= 6690= 8380= 8381= 8869= 8871=
U 1510 4406= 4416= 4427= 4437= 4447= 4457= 4467= 4602=
U 1520 6847= 6848= 5515 6851= 10305= 6853= 10306= 6854=
U 1530 10282= 10284= 5565 10285= 10804= 10398= 10805= 10399=
U 1540 10858= 10462= 10859= 10463= 5632 10464= 5670 10465=
U 1550 5710 10466= 5719 10467= 5846 10468= 5868 10469=
U 1560 6931= 6933= 6935= 6937= 6938= 6940= 6942= 6943=
U 1570 5026= 5027= 5869 10473= 5031= 5032= 5880 10474=
U 1600 4621= 4636= 4651= 4668= 4683= 4698= 4707= 5552=
U 1610 5564= 5881 5882 10490= 5048= 5049= 5884 10491=
U 1620 10319= 10320= 5885 10321= 5192= 5193= 6969= 6982=
U 1630 5207= 5208= 5893 10501= 5249= 5250= 5895 10502=
U 1640 5897 10636= 5899 10637= 5900 10638= 5931 10639=
U 1650 5939 10640= 5940 10642= 5998 10644= 6004 10645=
U 1660 7427= 6005 5264= 5265= 7430= 7431= 6010 7432=
U 1670 7494= 6019 5268= 5269= 7501= 7504= 6022 7506=
U 1700 7567= 7569= 7570= 7572= 7573= 7574= 7575= 7576=
U 1710 5318= 5319= 6047 7840= 7596= 7597= 7598= 7841=
U 1720 7753= 7758= 7760= 7860= 6239 7762= 6310 7861=
U 1730 10537= 6312 10539= 10540= 7801= 6317 7803= 7805=
U 1740 10555= 10558= 6318 10559= 7811= 7813= 7815= 7817=
U 1750 8832= 6377 8833= 6456 5324= 5326= 8835= 8839=
U 1760 10593= 6518 10595= 10596= 5332= 5333= 8845= 8846=
U 1770 10731= 10734= 6520 10736= 5335= 5336= 6521 9191:
U 2000 10741= 10742= 6523 10743= 5426= 5428= 8851= 8852=
U 2010 8926= 8927= 8928= 8929= 8930= 6525 9439= 9445=
U 2020 9123= 9124= 6526 9125= 9127= 9128= 6527 9129=
U 2030 9133= 6528 5431= 5433= 9134= 9136= 6540 9137=
U 2040 5436= 5437= 9851= 9852= 5467= 5469= 9854= 9856=
U 2050 9941= 9942= 9943= 9944= 9945= 9946= 9947= 9948=
U 2060 10831= 10834= 6546 10835= 10010= 10011= 10012= 10013=
U 2070 10019= 10020= 6575 10263= 10022= 10023= 10024= 10269=
U 2100 10077= 10078= 10079= 6633 6634 10768= 10081= 10769=
U 2110 5474= 5475= 5483= 5485= 5489= 5490= 10193= 10194=
U 2120 5498= 5500= 5502= 5505= 5513= 5514= 10201= 10202=
U 2130 5522= 5523= 10293= 10294= 5526= 5528= 10295= 10296=
U 2140 5532= 5533= 5538= 5540= 5597= 5598= 10334= 10335=
U 2150 10341= 10344= 6636 10346= 6639 10348= 5712= 5713=
U 2160 5726= 5729= 5903= 5905= 10392= 10393= 10396= 6654
U 2170 10434= 10435= 10436= 6673 5906= 5907= 10437= 10438=
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page LLU-4
; Location / Line Number Index
; Ucode Loc'n 0 1 2 3 4 5 6 7
U 2200 5913= 5915= 6006= 6008= 10477= 10478= 10479= 10483=
U 2210 6012= 6014= 6015= 6016= 10525= 10526= 10528= 10529=
U 2220 6102= 6103= 6173= 6174= 10581= 10582= 10583= 10584=
U 2230 10653= 10654= 10655= 10656= 10665= 10776= 6711 10777=
U 2240 6177= 6179= 6243= 6244= 6720 10778= 6722 10783=
U 2250 6246= 6247= 6307= 6308= 6725 10794= 6726 10795=
U 2260 10806= 6727 10808= 10809= 10810= 10811= 10812= 10813=
U 2270 6315= 6316= 6372= 6374= 10844= 10845= 10846= 10847=
U 2300 6393= 6395= 6507= 6513= 10860= 10861= 6729 10862=
U 2310 6516= 6517= 6529= 6530= 6542= 6544= 6555= 6556=
U 2320 6557= 6558= 6645= 6646= 6657= 6658= 6705= 6706=
U 2330 6723= 6724= 6732= 6733= 6759= 6760= 6762= 6763=
U 2340 6768= 6769= 6797= 6798= 6799= 6800= 6805= 6806=
U 2350 6809= 6810= 6820= 6821= 6844= 6846= 6868= 6869=
U 2360 6872= 6874= 6876= 6877= 6880= 6881= 6925= 6927=
U 2370 6952= 6954= 6957= 6959= 6963= 6964= 7127= 7128=
U 2400 7134= 7135= 7146= 7147= 7148= 7149= 7204= 7205=
U 2410 7207= 7208= 7211= 7212= 7215= 7216= 7234= 7235=
U 2420 7237= 7240= 7350= 7351= 7354= 7356= 7376= 7377=
U 2430 7437= 7438= 7443= 7444= 7446= 7447= 7579= 7580=
U 2440 7583= 7584= 7630= 7631= 7692= 7693= 7696= 7698=
U 2450 7704= 7705= 7718= 7720= 7726= 7733= 7781= 7782=
U 2460 7830= 7834= 7876= 7877= 7878= 7879= 7882= 7883=
U 2470 7892= 7893= 7907= 7908= 7977= 7978= 7980= 7981=
U 2500 8003= 8004= 8016= 8018= 8026= 8027= 8030= 8032=
U 2510 8038= 8040= 8046= 8048= 8052= 8053= 8090= 8091=
U 2520 8113= 8114= 8125= 8126= 8128= 8130= 8175= 8176=
U 2530 8178= 8180= 8333= 8334= 8344= 8345= 8347= 8348=
U 2540 8373= 8374= 8408= 8409= 8482= 8483= 8759= 8765=
U 2550 8777= 8778= 8861= 8863= 8880= 8881= 8919= 8920=
U 2560 8943= 8945= 9033= 9034= 9220= 9221= 9306= 9307=
U 2570 9315= 9316= 9332= 9340= 9344= 9345= 9353= 9354=
U 2600 9368= 9369= 9402= 9406= 9411= 9413= 9419= 9423=
U 2610 9432= 9438= 9457= 9469= 9475= 9476= 9481= 9482=
U 2620 9502= 6730 9510= 9511= 9514= 9516= 9628= 9632=
U 2630 9667= 9669= 9751= 9752= 9807= 9808= 9811= 9812=
U 2640 9844= 9845= 9859= 9860= 9912= 9913= 10005= 10006=
U 2650 10030= 10031= 10034= 10035= 10046= 10047= 10097= 10098=
U 2660 10114= 10115= 10137= 10139= 10157= 10158= 10172= 10174=
U 2670 10184= 10185= 10217= 10218= 10233= 10235= 10278= 10279=
U 2700 10311= 10312= 10371= 10373= 10378= 10379= 10383= 10384=
U 2710 10388= 10389= 10451= 10453= 10517= 10518= 10530= 10531=
U 2720 10533= 10534= 10585= 10586= 10589= 10590= 10626= 10627=
U 2730 10649= 10650= 10674= 10675= 10685= 10686= 10697= 10698=
U 2740 10701= 10702= 10709= 10712= 10715= 10716= 10756= 10758=
U 2750 10790= 10791= 6731 6734 6735 6737 6746 6747
U 2760 6748 6765 6766 6767 6770 6771 6772 6776
U 2770 6777 6778 6779 6782 6783 6784 6786 6788
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page LLU-5
; Location / Line Number Index
; Ucode Loc'n 0 1 2 3 4 5 6 7
U 3000 6801 6802 8364: 8370: 6803 9894: 9898: 6807
U 3010 9899: 9900: 9902: 7178: 7183: 6811 6832 6836
U 3020 6838 6843 6855 6856 6857 9895: 6859 6917
U 3030 6918 6920 9903: 6921 6922 9896: 6945 6946
U 3040 6949 6951 6961 6966 6967 6968 6984 6985
U 3050 6986 6988 6990 6991 6993 6997 6998 7000
U 3060 7001 7014 7016 7017 7024 7144 7150 7201
U 3070 7202 7203 7209 7210 7213 7214 7217 9923:
U 3100 7218 7219 7220 7222 7184: 7186: 7187: 7188:
U 3110 7189: 7196: 7197: 7198: 7231 7242 7243 7244
U 3120 7245 7246 7247 7248 7249 7250 7251 7252
U 3130 7253 7255 7325 7326 7330 7331 7333 7334
U 3140 7335 7339 7340 7341 7342 7343 7344 7346
U 3150 7353 7357 7358 7359 7360 7361 7362 7373
U 3160 7581 7582 7586 7628 7632 7734 7736 7737
U 3170 7772 7784 7786 7823 7825 7826 7835 9924:
U 3200 7836 7837 7846 7848 7862 7863 7864 7884
U 3210 7885 7888 7890 7894 7902 7903 7904 7905
U 3220 7906 7909 7910 7911 7931 7946 7967 7968
U 3230 7969 7973 7974 7975 7979 7989 7999 8000
U 3240 8001 8012 8014 8022 8023 8024 8033 8044
U 3250 8049 8050 8084 8089 8107 8108 8109 8123
U 3260 8161 8163 8173 8300 8337 8350 8354 8355
U 3270 8382 8383 8414 8416 8426 8427 8428 8455
U 3300 8475 8477 8478 8479 8757 8779 8800 8801
U 3310 8802 8808 8825 8826 8827 8859 8882 8890
U 3320 8891 8893 8903 8911 8912 8916 8917 8921
U 3330 8924 8931 8932 8934 8935 8936 8937 8941
U 3340 8946 8947 8963 8964 8987 8988 8990 9005
U 3350 9007 9057 9074 9075 9076 9077 9085 9089
U 3360 9090 9114 9116 9139 9192 9193 9199 9210
U 3370 9222 9223 9224 9225 9226 9234 9235 9236
U 3400 9238 9240 9253 9255 9256 9257 9258 9287
U 3410 9300 9301 9302 9303 9305 9321 9322 9329
U 3420 9342 9348 9352 9363 9366 9371 9391 9392
U 3430 9393 9399 9417 9428 9430 9447 9473 9478
U 3440 9483 9484 9496 9526 9527 9534 9633 9663
U 3450 9665 9666 9671 9672 9673 9674 9696 9697
U 3460 9698 9699 9710 9712 9713 9718 9719 9724
U 3470 9725 9727 9729 9733 9735 9736 9738 9740
U 3500 9742 9744 9745 9746 9747 9749 9753 9754
U 3510 9756 9758 9809 9810 9813 9847 9910 9911
U 3520 9949 9950 9951 9953 9962 9976 9977 9978
U 3530 9980 9995 10003 10004 10007 10008 10009 10015
U 3540 10016 10017 10028 10033 10054 10055 10112 10113
U 3550 10116 10117 10155 10164 10186 10190 10195 10197
U 3560 10198 10199 10200 10203 10204 10220 10221 10225
U 3570 10227 10236 10237 10239 10241 10271 10272 10273
; KL10 Microcode for TOPS-20 4 February 1985 V1(357) MICRO %34(270) Page LLU-6
; Location / Line Number Index
; Ucode Loc'n 0 1 2 3 4 5 6 7
U 3600 10275 10298 10307 10308 10310 10314 10318 10332
U 3610 10336 10367 10374 10386 10390 10439 10447 10449
U 3620 10489 10493 10494 10544 10564 10587 10598 10600
U 3630 10603 10615 10624 10625 10628 10631 10632 10633
U 3640 10672 10676 10680 10699 10703 10705 10721 10759
U 3650 10760 10775 10784 10787 10789 10796 10818 10849
U 3660 10850 10857 10863
U 3670 - 3767 Unused
U 3770 9189:
No errors detected
End of microcode assembly
331 pages of listing
Used 56.10 in 01:10.11
Memory used: 124P
Symbol table: 41P
Text strings: 13P
Loc'n assignment: 18P
Cross reference: 46P