$Id: ks-ucode,v 1.6 2008/11/03 02:33:14 phil Exp $ Phil Budne From ks10.mic v130 DESIGNED AND WRITTEN BY: DONALD A. LEWINE MAINTAINED AND ENHANCED BY: DONALD D. DOSSA SEAN KEENAN TIMOTHE LITT 1 START KS10 MICROCODE BASED ON SM10 MICROCODE VERSION 510 2 UPDATE TO KS10 VERSION 512 3 FIX SOME DEFAULTS 4 CHANGE HARDWARE TO MATCH ECO #215 5 START TO UPDATE IO MICROCODE 6 MORE WORK ON IO 7 MAKE INTERRUPT THE 8080 BE A PULSE. 10 ADD NEW RDIO AND WRIO 11 FIX PROBLEMS IN MUUO CODE & CORRECT T-FIELDS 12 FIX PROBLEMS IN DDIV 13 FIX UP PROBLEMS IN PI 14 TURN ON WRITE FOR FL-EXIT 15 FIX UP MAP INSTRUCTION 16 MORE WORK ON KI-STYLE MAP 17 INVERT HOLD RIGHT AND HOLD LEFT BITS 20 FIXUP WRIO & RDIO EFFECTIVE ADDRESS CALC. 21 FIX EDIT 15 22 HAVE LSH USE FAST SHIFT HARDWARE 23 FIX T-FIELD VALUES FOR PRODUCTION HARDWARE 24 REMOVE WRITE TEST FROM IO READS & WRITES 25 REWRITE MUL & MULI TO BE FASTER AND SMALLER. ALSO MAKE ADJBP USE NEW MULSUB 26 MAKE BYTES USE FAST SHIFT ECO. 27 MAKE SURE VMA FETCH IS CORRECT 30 MORE OF 25 (FORGOT FMP) 31 FIX SOME PROBLEMS WITH TRAPS 32 SPEED UP EFFECTIVE ADDRESS CALCULATION 33 MORE OF 32 34 SPEED UP ASH & ROT 35 FIX UP RDTIM SO THAT TIME DOES NOT GO BACKWARDS 36 MORE OF 35 37 FIX UP PROBLEMS WITH INTERRUPTS AND DOUBLE F.P. 40 IMPROVE LISTING FORMAT 41 SPEEDUP KL-MODE PAGE REFILL 42 FIX UP DDIV 43 STILL MORE DDIV STUFF 44 CORRECT PROBLEMS IN D.P. PARITY STUFF 45 CORRECT THE BLT CLEAR-CORE CASE TO INTERRUPT CORRECTLY 46 MORE OF 45 47 DO NOT ALLOW SOFTWARE INTERRUPTS IF THE PI LEVEL IS NOT ACTIVE. 50 MAKE FDV WORK THE SAME AS THE KL10 51 FIX INTERRUPT IN CVTBDX. MAKE ABORT WORK LIKE SPEC. 52 FIX BUG IN HALT LOOP 53 FIX IOEA TO WORK IF NO @ OR INDEXING 54 EDIT 47 BROKE JEN 55 FIX FLAGS IN MULTIPLY. ALSO CODE BUMS 56 MORE CODE BUMS 57 CORRECT OVERFLOW TRAPS WHICH DO MUUOS TO NOT STORE THE TRAP FLAGS. 60 CORRECT TRAPS SO THAT DSKEA RUNS RIGHT 61 MORE OF 60. NOTE: MICROCODE REQUIRES ECO #299!! 62 ONE MORE TRY AT EDIT 60. 63 CORRECT TOPS-10 STYLE PAGING SO THAT A WRITE VIOLATION SETS BIT 2 IN THE PAGE FAIL WORD (ACCESS ALLOWED). 64 EDIT 63 BROKE HARD PAGE FAILS. (NXM, BAD DATA, AND IO NXM) 65 INTERRUPTS OUT OF MOVSRJ INSTRUCTIONS DO STRANGE THINGS. 66 IO NXM PAGE FAIL FOR MISSING UBA GIVES PC+1 IN PAGE FAIL BLOCK. 67 ON A BAD DATA ERROR, STORE THE BAD WORD IN AC BLOCK 7 WORD 0 AND 1 70 FIX A BUG WHICH CAUSED INTERRUPTS OUT OF CVTBDT TO GENERATE A BAD ANSWER. 71 CLEANUP SOME THINGS TO MAKE LIFE EASIER FOR FIELD SERVICE 72 LOOK FOR 1-MS TRAP ON @ PAGE POINTERS AND ABORT REFILL IF SET. 73 CORRECT EDIT 72. 74 EDIT 67 GENERATES A DATA PATH PARITY ERROR BECAUSE OF THE BAD DATA. CORRECT TO NOT CHECK PARITY. ALSO CHANGE POP TO TIE UP BUS LESS. 75 EDIT 60 BROKE TRAPS. MISSING =0 AT TRAP:. 76 CORRECT BUG IN DFAD AND DFSB 77 FIX PROBLEM SEEN IN SOME (ALL BUT ENGINEERING?) MACHINES CAUSED BY EDIT 76 100 CHANGE DFAD/DFSB TO HAVE 2 MORE GUARD BITS. THIS SHOULD PRODUCE KL10 ANSWERS FOR ALL NORMALIZED INPUTS ALSO FIX A BUG IN CVTBDX PAGE FAIL LOGIC. 101 DFDV OF 0.0 / -0.5 HANGS THE MACHINE 102 FIX CHOPPED FLOATING POINT INSTRUCTIONS 103 CORRECT DFDV ROUNDING BUG. 104 CORRECT PROBLEMS IN DFMP 105 RDTIME SOMETIMES GIVES WRONG ANSWER. CARRY BETWEEN WORDS GETS LOST SOMETIME. 106 MOVEM (ALSO, SETZM, SETOM, ETC.) SOMETIMES DOES NOT GENERATE A WRITE-TRAP IN 100% OF THE CASES THAT IT SHOULD. 107 PXCT 14, DOES NOT GET THE INDEX REGISTER IN THE PREVIOUS CONTEXT ALL THE TIME. 110 FIX TYPO IN EDIT 103 111 63. BIT BYTES DO NOT WORK CORRECTLY. DSKDA FAILS BECAUSE OF THIS PROBLEM. ******* VERSION 111 WENT OUT WITH SYSTEM REV 2 ******* 112 FIX COMMENT IN TEST INSTRUCTIONS 113 CORRECT IOEA TO COMPUTE CORRECT ADDRESS IF JUST LOCAL INDEXING IS USED. 114 CORRECT INTERRUPT BUG IN DMUL 115 CORRECT COMMENTS HALT STATUS BLOCK 116 CORRECT PROBLEM WHERE CST MODIFIED BIT GETS SET BY MISTAKE. 117 RDINT INSTRUCTION DOES NOT WORK AT ALL. IT STORES RANDOM TRASH IN THE WRONG PLACE. NEED TO LOAD BR NOT AR. 120 FLOATING POINT OPERATIONS SOMETIMES GET THE WRONG RESULT WITH INPUTS OF UNNORMALIZED ZEROS. THIS SHOULD NEVER HAPPEN WITH FORTRAN OR ANY OTHER DEC LANGUAGE. 121 PREVENT KEEP-ALIVE CRASHES FROM OCCURRING BECAUSE THE MOVSRJ INSTRUCTION CAN LOCK OUT THE 1MS TIMER INTERRUPTS FROM BEING HANDLED. THIS CAUSES THE OPERATING SYSTEM TO LOSE TRACK OF THE PASSAGE OF TIME. 122 DFAD FOLLOWED BY A FSC OF -5 CAUSES THE FSC TO GET WRONG ANSWER. HAD TO CLEAR FLAG WORD AT EXIT OF DFAD TO FIX PROBLEM 123 MORE CODE FOR EDIT 121. ADDED ANOTHER DISPATCH ADDRESS FOR PAGE FAIL CODE AT PFD:. ***** 123 released?? 124 ADD ASSEMBLY OPTIONS FOR NOCST AND INHIBIT CST UPDATE. ADD BLTUB/BLTBU TO GET UBA STYLE BYTES SWAPPED TO/FROM ILDB FORM. ADD ASSEMBLY OPTIONS FOR KI/KL PAGE. NEED THE SPACE FOR BLTUB/BU. 125 SUPPORT THE "MAJOR/MINOR VERSION IN 136" UCODE STANDARD. FIX BAD CONSTRAINT FOR INHCST ASSEMBLIES (NOT CURRENTLY USED) 126 FIX NON-TRIVIAL CASES OF RDUBR,WRUBR, AND PROCESS CONTEXT WORD. 127 JSR IN A TRAP CYCLE STORES E+1 SOMETIMES. TRAP CYCLE WAS NOT BEING CLEARED (BY NICOND) BEFORE STARTING THE NEXT MEMORY READ. 130 FIX UCODE HANG WITH STOPPPED CLOCKS ON WR (KL-PAGING REGISTER) IF PAGING IS ON. IDEALLY, WE WOULD REMOVE WRITE TEST FROM THE DROM FIELD, BUT IT'S TOO LATE TO ECO THE ROMS. RESTRICTION: WRITE KLPAGE REGISTER LOCATION MUST BE WRITABLE. **** 130 released 2/86 support for TOPS-10 7.03 (on KL paging) v2(130) BB-JF16A-SB_1986 7-Feb-86 NEW: BLTUB (717), BLTBU (716) ignore CST if zero