-
Notifications
You must be signed in to change notification settings - Fork 0
/
ks10.47
2255 lines (1980 loc) · 79.2 KB
/
ks10.47
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
;;;-*-Fundamental-*-
.NOBIN
.TITLE "KS10 MICROCODE FOR ITS"
;FROM KS10 MICROCODE V117, 12 JANUARY 1979 -- DON LEWINE
.TOC "MIT REVISION HISTORY"
;;; 1/16/87 Merge in DEC versions 120-130 inclusive (see comments below)
;;; Change floating-point code to keep its hands off flag bits
;;; other than FLG.SN, so it doesn't interfere with one-proceed.
;;; 8/1/86 262. Try T/4T at XCTGO, see if one-proc in ACs works.
;;; Afraid not, foo. Took T/4T back out.
;;; +++ microcode 261 released +++
;;; 6/8/86 Still 261. Fix XCTR BLT bug, addresses same, spaces different.
;;; 5/86 261. One-proceed more or less works, fix page age bug.
;;; 5/28/85 Version 261. Started on one-proceed feature.
;;; 5/4/85 Version 260. Added ITS I/O instructions.
;;; 11/24/84 Flushed PCLSRing hack. More trouble than it was worth.
;;; Also moved main program level page fail words back to the
;;; EPT.
;;; 11/21/84 Fixed last bug in PCLSRing hack: The PC stored in the MUUO
;;; old PC location needed to be incremented.
;;; 11/20/84 OK, I gave in and made the PCLSRing hack obtain the new PC
;;; from a new location as well.
;;; 11/19/84 Fixed PCLSRing hack to also store context word. Fixed
;;; RDUBR and WRUBR to deal in addresses rather than in page
;;; numbers.
;;; 11/16/84 Added special PCLSRing hack to page fail trapping. When
;;; page fault occurs in user mode, a duplicate copy of the old
;;; PC is stashed in the MUUO old PC location.
;;; 11/2/84 Fixed quantum counter to count in same units as other
;;; timers. Time spent at PI level is only approximately
;;; accounted for.
;;; 10/25/84 Added quantum counter. Moved main program level page
;;; fail words back to UPT. Moved all page fail words down
;;; to 440 to compact UPT and EPT.
;;; 10/18/84 Fixed interval timer to keep more accurate time on the
;;; average.
;;; 10/17/84 Finishing touches on ITS paging.
;;; 9/29/84 CIRC instruction. Version 259.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; ;;;
;;; ;;;
;;; COPYRIGHT (C) 1976, 1977, 1978, 1979, DIGITAL ;;;
;;; EQUIPMENT CORP., MAYNARD, MASS. ;;;
;;; ;;;
;;; THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ;;;
;;; ONLY ON A SINGLE COMPUTER SYSTEM AND MAY BE COPIED ;;;
;;; ONLY WITH THE INCLUSION OF THE ABOVE COPYRIGHT ;;;
;;; NOTICE. THIS SOFTWARE, OR ANY OTHER COPIES THEREOF, ;;;
;;; MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ;;;
;;; ANY OTHER PERSON EXCEPT FOR USE ON SUCH SYSTEM AND ;;;
;;; TO ONE WHO AGREES TO THESE LICENSE TERMS. TITLE TO ;;;
;;; AND OWNERSHIP OF THE SOFTWARE SHALL AT ALL TIMES ;;;
;;; REMAIN IN DEC. ;;;
;;; ;;;
;;; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO ;;;
;;; CHANGE WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED AS ;;;
;;; A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION. ;;;
;;; ;;;
;;; DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR ;;;
;;; RELIABILITY OF ITS SOFTWARE IN EQUIPMENT WHICH IS ;;;
;;; NOT SUPPLIED BY DEC. ;;;
;;; ;;;
;;; DESIGNED AND WRITTEN BY: ;;;
;;; DONALD A. LEWINE ;;;
;;; DIGITAL EQUIPMENT CORP. ;;;
;;; MARLBORO, MASS. ;;;
;;; MR1-2/E47 X6430 ;;;
;;; ;;;
;;; MAINTAINED BY: ;;;
;;; DONALD A. LEWINE ;;;
;;; DIGITAL EQUIPMENT CORP. ;;;
;;; MARLBORO, MASS. ;;;
;;; MR1-2/E47 X6430 ;;;
;;; ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.TOC "DEC REVISION HISTORY"
;REV WHY
;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.
;DEC changes after MIT version 261, merged in where relevant
;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:.
;124 ADD ASSEMBLY OPTIONS FOR NOCST AND INHIBIT CST UPDATE. (not in MIT ucode)
; 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. (not in MIT ucode)
;125 SUPPORT THE "MAJOR/MINOR VERSION IN 136" UCODE STANDARD. (not in MIT ucode)
; FIX BAD CONSTRAINT FOR INHCST ASSEMBLIES (NOT CURRENTLY USED) (not in MIT ucode)
;126 FIX NON-TRIVIAL CASES OF RDUBR,WRUBR, AND PROCESS CONTEXT WORD. (not in MIT ucode)
;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 (not in MIT ucode)
; 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.
.TOC "HOW TO READ THE MICROCODE"
;
;
; 1.0 FIELD DEFINITIONS
;
; THESE OCCUR AT THE BEGINNING OF THE LISTING, IN THE SOURCE FILE KS10.MIC
; (CONTROL AND DISPATCH RAM DEFINITIONS). THEY HAVE THE FORM:
;
; SYMBOL/=<L:R>M,J
;
; THE PARAMETER (J) IS MEANINGFUL WHEN "D" IS SPECIFIED AS THE DEFAULT MECHANISM,
; AND IN THAT CASE, GIVES THE DEFAULT VALUE OF THE FIELD IN OCTAL. WHEN "F" IS
; SPECIFIED AS THE DEFAULT MECHANISM, (J) IS THE NAME OF A FIELD WHICH CONTAINS
; THE DEFAULT VALUE FOR THIS FIELD.
;
; THE PARAMETER (L) GIVES THE BIT POSITION OF THE LEFTMOST BIT IN THE FIELD. THE
; SAME METHOD IS USED AS FOR (R) BELOW.
;
; THE PARAMETER (R) GIVES THE FIELD POSITION IN DECIMAL AS THE BIT NUMBER OF THE
; RIGHTMOST BIT OF THE FIELD. BITS ARE NUMBERED FROM 0 ON THE LEFT. NOTE THAT
; THE POSITION OF BITS IN THE MICROWORD SHOWN IN THE LISTING BEARS NO RELATION TO
; THE ORDERING OF BITS IN THE HARDWARE MICROWORD, WHERE FIELDS ARE OFTEN BROKEN UP
; AND SCATTERED.
;
; THE PARAMETER (M) IS OPTIONAL, AND SELECTS A DEFAULT MECHANISM FOR THE FIELD.
; THE LEGAL VALUES OF THIS PARAMETER ARE THE CHARACTERS "D", "F", "T", "P", OR
; "+".
;
; "D" MEANS (J) IS THE DEFAULT VALUE OF THE FIELD IF NO EXPLICIT VALUE IS
; SPECIFIED.
;
; "F" IS USED TO CAUSE THIS FIELD TO DEFAULT TO SOME OTHER FIELD.
;
; "T" IS USED ON THE TIME FIELD TO SPECIFY THAT THE VALUE OF THE FIELD
; DEPENDS ON THE TIME PARAMETERS SELECTED FOR OTHER FIELDS. "T" IS NOT
; USED IN THE KS10.
;
; "P" IS USED ON THE PARITY FIELD TO SPECIFY THAT THE VALUE OF THE FIELD
; SHOULD DEFAULT SUCH THAT PARITY OF THE ENTIRE WORD IS ODD. "P" IS NOT
; USED ON THE KS10.
;
; "+" IS USED ON THE JUMP ADDRESS FIELD TO SPECIFY THAT THE DEFAULT JUMP
; ADDRESS IS THE ADDRESS OF THE NEXT INSTRUCTION ASSEMBLED (NOT, IN
; GENERAL, THE CURRENT LOCATION +1).
;
; IN GENERAL, A FIELD CORRESPONDS TO THE SET OF BITS WHICH PROVIDE SELECT INPUTS
; FOR MIXERS OR DECODERS, OR CONTROLS FOR ALU'S.
;
;
; 2.0 VALUE DEFINITIONS
;
; FOLLOWING A FIELD DEFINITION, SYMBOLS MAY BE CREATED IN THAT FIELD TO CORRESPOND
; TO VALUES OF THE FIELD. THE FORM IS:
;
; SYMBOL=N
;
; "N" IS, IN OCTAL, THE VALUE OF SYMBOL WHEN USED IN THE FIELD.
;
;
;
; 3.0 LABEL DEFINITIONS
;
; A MICRO INSTRUCTION MAY BE LABELLED BY A SYMBOL FOLLOWED BY COLON PRECEDING THE
; MICROINSTRUCTION DEFINITION. THE ADDRESS OF THE MICROINSTRUCTION BECOMES THE
; VALUE OF THE SYMBOL IN THE FIELD NAMED "J". EXAMPLE:
;
; FOO: J/FOO
;
; THIS IS A MICROINSTRUCTION WHOSE "J" FIELD (JUMP ADDRESS) CONTAINS THE VALUE
; "FOO". IT ALSO DEFINES THE SYMBOL "FOO" TO BE THE ADDRESS OF ITSELF.
; THEREFORE, IF EXECUTED BY THE MICROPROCESSOR, IT WOULD LOOP ON ITSELF.
;
;
;
; 4.0 COMMENTS
;
; A SEMICOLON ANYWHERE ON A LINE CAUSES THE REST OF THE LINE TO BE IGNORED BY THE
; ASSEMBLER. THIS TEXT IS AN EXAMPLE OF COMMENTS.
;
;
;
; 5.0 MICROINSTRUCTION DEFINITION
;
; A WORD OF MICROCODE IS DEFINED BY SPECIFYING A FIELD NAME, FOLLOWED BY SLASH
; (/), FOLLOWED BY A VALUE. THE VALUE MAY BE A SYMBOL DEFINED FOR THAT FIELD, AN
; OCTAL DIGIT STRING, OR A DECIMAL DIGIT STRING (DISTINGUISHED BY THE FACT THAT IT
; CONTAINS "8" AND/OR "9" AND/OR IS TERMINATED BY A PERIOD). SEVERAL FIELDS MAY
; BE SPECIFIED IN ONE MICROINSTRUCTION BY SEPARATING FIELD/VALUE SPECIFICATIONS
; WITH COMMAS. EXAMPLE:
;
; AD/ZERO,RAMADR/AC*#,ACALU/AC+N,ACN/1,DBUS/DP
;
;
; 6.0 CONTINUATION
;
; THE DEFINITION OF A MICROINSTRUCTION MAY CONTINUED ONTO TWO OR MORE LINES BY
; BREAKING IT AFTER ANY COMMA. IN OTHER WORDS, IF THE LAST NON-BLANK, NON-COMMENT
; CHARACTER ON A LINE IS A COMMA, THE INSTRUCTION SPECIFICATION IS CONTINUED ON
; THE FOLLOWING LINE. EXAMPLE:
; READ [AR], ;LOOK AT EFFECTIVE ADDRESS
; SKIP DP18, ;SEE IF RIGHT OR LEFT SHIFT
; SC_SHIFT-1, ;PUT NUMBER OF PLACE TO
; ;SHIFT IN SC
; LOAD FE, ; AND IN FE
; INST DISP ;GO DO THE SHIFT
;
;
;
; 7.0 MACROS
;
; A MACRO IS A SYMBOL WHOSE VALUE IS ONE OR MORE FIELD/VALUE SPECIFICATIONS AND/OR
; MACROS. A MACRO DEFINITION IS A LINE CONTAINING THE MACRO NAME FOLLOWED BY A
; QUOTED STRING WHICH IS THE VALUE OF THE MACRO. EXAMPLE:
;
; LOAD VMA "MEM/1, LDVMA/1
;
; THE APPEARANCE OF A MACRO IN A MICROINSTRUCTION DEFINITION IS EQUIVALENT TO THE
; APPEARANCE OF ITS VALUE.
;
; MACRO MAY HAVE PARAMETERS ENCLOSED IN []. FOR EXAMPLE,
;
; []_[] "AD/A,A/@2,DEST/AD,B/@1"
;
; THE @1 GETS REPLACED BY WHAT IS WRITTEN IN THE FIRST SET OF [] AND @2 IS
; REPLACED BY WHAT IS WRITTEN IN THE SECOND SET OF []. THUS
;
; [AR]_[ARX]
;
; HAS THE SAME EFFECT AS SAYING
;
; AD/A,A/ARX,DEST/AD,B/AR
;
;
; SEE DESCRIPTION OF RULES FOR MACRO NAMES.
;
; 8.0 PSEUDO OPS
;
; THE MICRO ASSEMBLER HAS 13 PSEUDO-OPERATORS:
;
; .DCODE AND .UCODE SELECT THE RAM INTO WHICH SUBSEQUENT MICROCODE WILL BE
; LOADED, AND THEREFORE THE FIELD DEFINITIONS AND MACROS WHICH ARE
; MEANINGFUL IN SUBSEQUENT MICROCODE
; .TITLE DEFINES A STRING OF TEXT TO APPEAR IN THE PAGE HEADER, AND
; .TOC DEFINES AN ENTRY FOR THE TABLE OF CONTENTS AT THE BEGINNING.
; .SET DEFINES THE VALUE OF A CONDITIONAL ASSEMBLY PARAMETER,
; .CHANGE REDEFINES A CONDITIONAL ASSEMBLY PARAMETER,
; .DEFAULT ASSIGNS A VALUE TO AN UNDEFINED PARAMETER.
; .IF ENABLES ASSEMBLY IF THE VALUE OF THE PARAMETER IS NOT ZERO,
; .IFNOT ENABLES ASSEMBLY IF THE PARAMETER VALUE IS ZERO, AND
; .ENDIF RE-ENABLES ASSEMBLY IF SUPPRESSED BY THE PARAMETER NAMED.
; .NOBIN TURNS OFF THE BINARY A GETS RID OF THE SPACE USED TO LIST IT,
; .BIN TURN BINARY BACK ON AGAIN.
; .WIDTH CONTROLS THE NUMBER OF BITS IN THE CRAM
; 9.0 LOCATION CONTROL
;
; A MICROINSTRUCTION "LABELLED" WITH A NUMBER IS ASSIGNED TO THAT ADDRESS.
;
; THE CHARACTER "=" AT THE BEGINNING OF A LINE, FOLLOWED BY A STRING OF 0'S, 1'S,
; AND/OR *'S, SPECIFIES A CONSTRAINT ON THE ADDRESS OF FOLLOWING
; MICROINSTRUCTIONS. THE NUMBER OF CHARACTERS IN THE CONSTRAINT STRING (EXCLUDING
; THE "=") IS THE NUMBER OF LOW-ORDER BITS CONSTRAINED IN THE ADDRESS. THE
; MICROASSEMBLER ATTEMPTS TO FIND AN UNUSED LOCATION WHOSE ADDRESS HAS 0 BITS IN
; THE POSITIONS CORRESPONDING TO 0'S IN THE CONSTRAINT STRING AND 1 BITS WHERE THE
; CONSTRAINT HAS 1'S. ASTERISKS DENOTE "DON'T CARE" BIT POSITIONS.
;
; IF THERE ARE ANY 0'S IN THE CONSTRAINT STRING, THE CONSTRAINT IMPLIES A BLOCK OF
; <2**N> MICROWORDS, WHERE N IS THE NUMBER OF 0'S IN THE STRING. ALL LOCATIONS IN
; THE BLOCK WILL HAVE 1'S IN THE ADDRESS BITS CORRESPONDING TO 1'S IN THE STRING,
; AND BIT POSITIONS DENOTED BY *'S WILL BE THE SAME IN ALL LOCATIONS OF THE BLOCK.
;
; IN SUCH A CONSTRAINT BLOCK, THE DEFAULT ADDRESS PROGRESSION IS COUNTING IN THE
; "0" POSITIONS OF THE CONSTRAINT STRING, BUT A NEW CONSTRAINT STRING OCCURING
; WITHIN A BLOCK MAY FORCE SKIPPING OVER SOME LOCATIONS OF THE BLOCK. WITHIN A
; BLOCK, A NEW CONSTRAINT STRING DOES NOT CHANGE THE PATTERN OF DEFAULT ADDRESS
; PROGRESSION, IT MERELY ADVANCES THE LOCATION COUNTER OVER THOSE LOCATIONS. THE
; MICROASSEMBLER WILL LATER FILL THEM IN.
;
; A NULL CONSTRAINT STRING ("=" FOLLOWED BY ANYTHING BUT "0", "1", OR "*") SERVES
; TO TERMINATE A CONSTRAINT BLOCK. EXAMPLES:
;
; =0
;
; THIS SPECIFIES THAT THE LOW-ORDER ADDRESS BIT MUST BE ZERO-- THE MICROASSEMBLER
; FINDS AN EVEN-ODD PAIR OF LOCATIONS, AND PUTS THE NEXT TWO MICROINSTRUCTIONS
; INTO THEM.
;
; =11
; THIS SPECIFIES THAT THE TWO LOW-ORDER BITS OF THE ADDRESS MUST BOTH BE ONES.
; SINCE THERE ARE NO 0'S IN THIS CONSTRAINT, THE ASSEMBLER FINDS ONLY ONE LOCATION
; MEETING THE CONSTRAINT.
;
; =0*****
;
; THIS SPECIFIES AN ADDRESS IN WHICH THE "40" BIT IS ZERO. DUE TO THE
; IMPLEMENTATION OF THIS FEATURE IN THE ASSEMBLER, THE DEFAULT ADDRESS PROGRESSION
; APPLIES ONLY TO THE LOW-ORDER 5 BITS, SO THIS CONSTRAINT FINDS ONE WORD IN WHICH
; THE "40" BIT IS ZERO, AND DOES NOT ATTEMPT TO FIND ONE IN WHICH THAT BIT IS A
; ONE. THIS LIMITATION HAS BEEN CHANGED WITH NEWER ASSEMBLER VERSIONS. HOWEVER
; NONE OF THE LOCATIONS IN THE MICROCODE REQUIRE ANYTHING BUT THE CONSTRAINT
; MENTIONED ABOVE.
.TOC "CONDITIONAL ASSEMBLY DEFINITIONS"
.DEFAULT/SIM=0 ;0=RUN ON REAL HARDWARE
;1=RUN UNDER SIMULATOR
.DEFAULT/FULL=1 ;0=INCLUDE ONLY BASIC INSTRUCTIONS
;1=INCLUDE FULL INSTRUCTION SET
.DEFAULT/CIRC=0 ;1=Assemble the CIRC instruction.
.DEFAULT/ITS=0 ;0=DEC style microcode.
;1=ITS style microcode.
.DEFAULT/JPC=0 ;1=Assemble JPC feature.
.DEFAULT/1PROC=0 ;1=Assemble one-proceed feature.
.DEFAULT/PCST=0 ;1=Assemble PC sampling feature.
.DEFAULT/ITSIO=0 ;1=Assemble ITS I/O instructions.
.DEFAULT/TEST=0 ;1=Assemble some temporary experimental feature.
.WIDTH/108 ;ONLY FIELDS BETWEEN BITS 0 AND 107 EVER
; GET LOADED INTO THE CRAM. OTHER FIELDS
; ARE USED FOR DEFAULTING PROCESS.
;THIS IS USELESS AND BRAIN DAMAGED
;STUFF IS KEPT OUT OF DROM SPACE BY MORE GENERAL MECHANISMS
;.REGION/0,1377/2000,3777/1400,1777
; ;TRY AND KEEP STUFF OUT OF DROM SPACE
;WRITE A RAM FILE WITH THE FIELDS REARRANGED SO THE 8080 CAN HACK THEM
;The RAM file format appears to be:
;
;4000 sequential CRAM locations starting at 0.
;Each location is 96 bits expressed as 8 12-bit bytes and one
;padding byte packed into three words. Bytes are in right to
;left order within 36-bit words, and also within the 96-bit
;words. Thus RAM SRC through MARK are in the right 12 bits of
;the first 36-bit word and J is in the middle 12 bits of the
;third 36-bit word. Parity is even parity, computed separately
;for the two halves of the word packaged on different boards.
;
;.RAMFILE takes the fields in left-to-right (pdp10) order,
;thus the 8080's eight 12-bit bytes are given in order 2,1,0,5,4,3,pad,7,6
;One parity bit is for 0-4, the other is for 5-7.
.RAMFILE/ AD,RSRC,DBM,DBUS,A,CLKL,CLKR,B, ;WORDS 2-1 RAMADR,DEST,LOADSC,LOADFE,CHKL,CHKR, OD
.TOC "2901 REGISTER USAGE"
; !=========================================================================!
;0: ! MAG (ONES IN BITS 1-36, REST ZERO) !
; !-------------------------------------------------------------------------!
;1: ! PC (ADDRESS OF CURRENT INSTRUCTION + 1) !
; !-------------------------------------------------------------------------!
;2: ! HR (CURRENT INSTRUCTION) !
; !-------------------------------------------------------------------------!
;3: ! AR (TEMP -- MEM OP AT INST START) !
; !-------------------------------------------------------------------------!
;4: ! ARX (TEMP -- LOW ORDER HALF OF DOUBLE PREC) !
; !-------------------------------------------------------------------------!
;5: ! BR (TEMP) !
; !-------------------------------------------------------------------------!
;6: ! BRX (TEMP -- LOW ORDER HALF OF DOUBLE PREC BR!BRX) !
; !-------------------------------------------------------------------------!
;7: ! ONE (THE CONSTANT 1) !
; !-------------------------------------------------------------------------!
;10: ! EBR (EXEC BASE REGISTER) !
; !-------------------------------------------------------------------------!
;11: ! UBR (USER BASE REGISTER) !
; !-------------------------------------------------------------------------!
;12: ! MASK (ONES IN BITS 0-35, ZERO IN -1, -2, 36 AND 37) !
; !-------------------------------------------------------------------------!
;13: ! FLG (FLAG BITS) ! PAGE FAIL CODE !
; !-------------------------------------------------------------------------!
;14: ! PI (PI SYSTEM STATUS REGISTER [RDPI]) !
; !-------------------------------------------------------------------------!
;15: ! XWD1 (1 IN EACH HALF WORD) !
; !-------------------------------------------------------------------------!
;16: ! T0 (TEMP) !
; !-------------------------------------------------------------------------!
;17: ! T1 (TEMP) !
; !=========================================================================!
.TOC "MICROCODE FIELDS -- LISTING FORMAT"
1561:
SUB: [AR]_AC-[AR],
AD FLAGS, 3T,
EXIT
; [--] [--] !!!! [][] !!![-][][-][]! !!! [----]
; ! ! !!!! ! ! !!!! ! ! ! ! !!! !
; ! ! !!!! ! ! !!!! ! ! ! ! !!! +---- # (MAGIC NUMBER)
; ! ! !!!! ! ! !!!! ! ! ! ! !!!
; ! ! !!!! ! ! !!!! ! ! ! ! !!+------------- MULTI PREC, MULTI SHIFT, CALL
; ! ! !!!! ! ! !!!! ! ! ! ! !! (4S, 2S, 1S)
; ! ! !!!! ! ! !!!! ! ! ! ! !+-------------- FM WRITE, MEM, DIVIDE
; ! ! !!!! ! ! !!!! ! ! ! ! ! (4S, 2S, 1S)
; ! ! !!!! ! ! !!!! ! ! ! ! +--------------- CRY38, LOAD SC, LOAD FE
; ! ! !!!! ! ! !!!! ! ! ! ! (4S, 2S, 1S)
; ! ! !!!! ! ! !!!! ! ! ! +----------------- T
; ! ! !!!! ! ! !!!! ! ! !
; ! ! !!!! ! ! !!!! ! ! +------------------- SKIP
; ! ! !!!! ! ! !!!! ! !
; ! ! !!!! ! ! !!!! ! +---------------------- DISP
; ! ! !!!! ! ! !!!! !
; ! ! !!!! ! ! !!!! +------------------------ SPEC
; ! ! !!!! ! ! !!!!
; ! ! !!!! ! ! !!!+--------------------------- CLOCKS & PARITY
; ! ! !!!! ! ! !!! (CLKR, GENR, CHKR, CLKL, GENL, CHKL)
; ! ! !!!! ! ! !!+---------------------------- DBM
; ! ! !!!! ! ! !!
; ! ! !!!! ! ! !+----------------------------- DBUS
; ! ! !!!! ! ! !
; ! ! !!!! ! ! +------------------------------ RAM ADDRESS
; ! ! !!!! ! !
; ! ! !!!! ! +--------------------------------- B
; ! ! !!!! !
; ! ! !!!! +----------------------------------- A
; ! ! !!!!
; ! ! !!!+------------------------------------- DEST
; ! ! !!!
; ! ! !!+-------------------------------------- RSRC
; ! ! !!
; ! ! !+--------------------------------------- LSRC ]
; ! ! ! ] - AD
; ! ! +---------------------------------------- ALU ]
; ! !
; ! +--------------------------------------------- J
; !
; LOCATION OF THIS MICRO WORD
.TOC "MICROCODE FIELDS -- DATAPATH CHIP"
J/=<0:11>+ ;CRA1
;NEXT MICROCODE ADDRESS
;ALU FUNCTIONS
;NOTE: THE AD FIELD IS A 2 DIGIT FIELD. THE LEFT DIGIT IS THE
; 2901 ALU FUNCTION. THE RIGHT DIGIT IS THE 2901 SRC CODE FOR
; THE LEFT HALF. NORMALY THE RIGHT HALF SRC CODE IS THE SAME AS
; THE LEFT HALF.
AD/=<12:17>D,44 ;DPE1 & DPE2
A+Q=00
A+B=01
0+Q=02
0+B=03
0+A=04
D+A=05
D+Q=06
0+D=07
Q-A-.25=10
B-A-.25=11
Q-.25=12
B-.25=13
A-.25=14
A-D-.25=15
Q-D-.25=16
-D-.25=17
A-Q-.25=20
A-B-.25=21
-Q-.25=22
-B-.25=23
-A-.25=24
D-A-.25=25
D-Q-.25=26
D-.25=27
A.OR.Q=30
A.OR.B=31
Q=32
B=33
A=34
D.OR.A=35
D.OR.Q=36
D=37
A.AND.Q=40
A.AND.B=41
;MORE ALU FUNCTIONS
ZERO=42
; ZERO=43
; ZERO=44
D.AND.A=45
D.AND.Q=46
; ZERO=47
.NOT.A.AND.Q=50
.NOT.A.AND.B=51
; Q=52
; B=53
; A=54
.NOT.D.AND.A=55
.NOT.D.AND.Q=56
; ZERO=57
A.XOR.Q=60
A.XOR.B=61
; Q=62
; B=63
; A=64
D.XOR.A=65
D.XOR.Q=66
; D=67
A.EQV.Q=70
A.EQV.B=71
.NOT.Q=72
.NOT.B=73
.NOT.A=74
D.EQV.A=75
D.EQV.Q=76
.NOT.D=77
;THIS FIELD IS THE RIGHTMOST 3 BITS OF THE
; AD FIELD. IT IS USED ONLY TO DEFAULT THE RSRC
; FIELD.
LSRC/=<15:17> ;DPE1
;THIS IS THE SOURCE FOR THE RIGHT HALF OF THE
; DATA PATH. IT LETS US MAKE THE RIGHT AND LEFT
; HALF WORDS DO SLIGHTLY DIFFERENT THINGS.
RSRC/=<18:20>F,LSRC ;DPE2
AQ=0 ;A Q
AB=1 ;A B
0Q=2 ;0 Q
0B=3 ;0 B
0A=4 ;0 A
DA=5 ;D A
DQ=6 ;D Q
D0=7 ;D 0
;DESTINATION CONTROL
;SEE DPE1 AND DPE2 (2'S WEIGHT IS INVERTED ON DPE5)
DEST/=<21:23>D,3 ;DPE1 & DPE2
A=0 ;A REG IS CHIP OUTPUT, AD IS WRITTEN
; INTO REG FILE
AD=1 ;REG FILE GETS AD
Q_AD=2 ;REG FILE IS NOT LOADED
PASS=3 ;AD OUTPUT IS CHIP OUTPUT
; Q AND REG FILE LEFT ALONE
Q_Q*2=4 ;ALSO REG FILE GETS AD*2
AD*2=5 ;AND Q IS LEFT ALONE
Q_Q*.5=6 ;ALSO REG FILE GETS AD*.5
AD*.5=7 ;AND Q IS LEFT ALONE
; <24:25> ;UNUSED
A/=<26:29> ;DPE1 & DPE2
MAG=0
PC=1
HR=2
AR=3
ARX=4
BR=5
BRX=6
ONE=7
EBR=10
UBR=11
MASK=12
FLG=13
PI=14
XWD1=15
T0=16
T1=17
; <30:31> ;UNUSED
B/=<32:35>D,0 ;DPE1 & DPE2
MAG=0
PC=1
HR=2
AR=3
ARX=4
BR=5
BRX=6
ONE=7
EBR=10
UBR=11
MASK=12
FLG=13
PI=14
XWD1=15
T0=16
T1=17
.TOC "MICROCODE FIELDS -- RAM FILE ADDRESS AND D-BUS"
RAMADR/=<36:38>D,4 ;DPE6
AC#=0 ;AC NUMBER
AC*#=1 ;AC .FN. #
XR#=2 ;INDEX REGISTER
VMA=4 ;VIRTUAL MEMORY REFERENCE
RAM=6 ;VMA SUPPLIES 10-BIT RAM ADDRESS
#=7 ;ABSOLUTE RAM FILE REFERENCE
; <39:39>
;LEFT HALF ON DPE3 AND RIGHT HALF ON DPE4
DBUS/=<40:41>D,1 ;DPE3 & DPE4
PC FLAGS=0 ;PC FLAGS IN LEFT HALF
PI NEW=0 ;NEW PI LEVEL IN BITS 19-21
; VMA=0 ;VMA IN BITS 27-35
DP=1 ;DATA PATH
RAM=2 ;CACHE, AC'S AND WORKSPACE
DBM=3 ;DBM MIXER
;LEFT HALF ON DPM1 AND RIGHT HALF ON DPM2
DBM/=<42:44>D,7 ;DPM1 & DPM2
SCAD DIAG=0 ;(LH) SCAD DIAGNOSTIC
PF DISP=0 ;PAGE FAIL DISP IN BITS 18-21
APR FLAGS=0 ;APR FLAGS IN BITS 22-35
BYTES=1 ;5 COPIES OF SCAD 1-7
EXP=2 ;LH=EXPONENT, RH=TIME FRACTION
DP=3 ;DATA PATH
DP SWAP=4 ;DATA PATH SWAPPED
VMA=5 ;VMA FLAGS,,VMA
MEM=6 ;MEMORY BUFFER
#=7 ;NUMBER FIELD IN BOTH HALVES
.TOC "MICROCODE FIELDS -- PARITY GENERATION & HALF WORD CONTROL"
AD PARITY OK/=<108>D,0 ;**NOT STORED IN CRAM**
;THIS BIT IS A 1 IF THE ALU IS DOING
; SOMETHING WHICH DOES NOT INVALIDATE
; PARITY. IT DOES NOT APPEAR IN THE
; REAL MACHINE. WE JUST USE IT TO SET
; THE DEFAULT FOR GENR & GENL
CLKL/=<45:45>D,1 ;DPE5
;CLOCK THE LEFT HALF OF THE MACHINE
GENL/=<46:46>F,AD PARITY OK ;DPE4 FROM CRM2 PARITY EN LEFT H
;STORE PARITY FOR 2901 LEFT
CHKL/=<47:47> ;DPE4 FROM CRM2 PARITY CHK LEFT H
;CHECK LEFT HALF DBUS PARITY
CLKR/=<48:48>D,1 ;DPE5
;CLOCK THE RIGHT HALF OF THE MACHINE
GENR/=<49:49>F,AD PARITY OK ;DPE4 FROM CRM2 PARITY EN RIGHT H
;STORE PARITY FOR 2901 RIGHT
CHKR/=<50:50> ;DPE4 FROM CRM2 PARITY CHK RIGHT H
;CHECK RIGHT HALF DBUS PARITY
.TOC "MICROCODE FIELDS -- SPEC"
;
;THE FOLLOWING SPECIAL FUNCTION ARE DECODED ON DPE1, DPE5, AND DPMA:
; !=========================================================================!
; !S! EFFECT ! CRA6 SPEC ! CRA6 SPEC ! CRA6 SPEC !
; !P! ON SHIFT ! EN 40 ! EN 20 ! EN 10 !
; !E! PATHS ! E102 ON DPE5 ! E101 ON DPE5 ! E410 ON DPMA !
; !C! (SEE DPE1) ! ! E411 ON DPMA ! E113 ON CRA2 !
; !=========================================================================!
; !0! NORMAL ! CRY 18 INH ! PREVIOUS ! # !
; !-------------------------------------------------------------------------!
; !1! ZERO ! IR LOAD ! XR LOAD ! CLR 1 MSEC !
; !-------------------------------------------------------------------------!
; !2! ONES ! <SPARE> ! <SPARE> ! CLR IO LATCH !
; !-------------------------------------------------------------------------!
; !3! ROT ! PI LOAD ! APR FLAGS ! CLR IO BUSY !
; !-------------------------------------------------------------------------!
; !4! ASHC ! ASH TEST ! SET SWEEP ! PAGE WRITE !
; !-------------------------------------------------------------------------!
; !5! LSHC ! EXP TEST ! APR EN ! NICOND !
; !-------------------------------------------------------------------------!
; !6! DIV ! PC FLAGS ! PXCT OFF ! PXCT EN !
; !-------------------------------------------------------------------------!
; !7! ROTC ! AC BLOCKS EN ! MEM CLR ! MEM WAIT !
; !=========================================================================!
; THE DPM BOARD USES THE SPEC FIELD TO CONTROL THE
; DBM MIXER, AS FOLLOWS:
;
; !=====================================!
; ! S ! !
; ! P ! ACTION WHEN DBM !
; ! E ! SELECTS DP !
; ! C ! GET DP BITS ! GET SCAD 1-7 !
; !=====================================!
; ! 0 ! ALL ! NONE !
; !-------------------------------------!
; ! 1 ! 7-35 ! 0-6 !
; !-------------------------------------!
; ! 2 !0-6 AND 14-35 ! 7-13 !
; !-------------------------------------!
; ! 3 !0-13 AND 21-35! 14-20 !
; !-------------------------------------!
; ! 4 !0-20 AND 28-35! 21-27 !
; !-------------------------------------!
; ! 5 ! 0-27 AND 35 ! 28-34 !
; !-------------------------------------!
; ! 6 ! SAME AS ZERO !
; !-------------------------------------!
; ! 7 ! SAME AS ZERO !
; !=====================================!
;THE SPEC FIELD IS DEFINED AS A 6-BIT FIELD. THE TOP 3 BITS
; ARE SPEC SEL A, SPEC SEL B, AND SPEC SEL C. THE LOW 3 BITS ARE
; THE SELECT CODE.
SPEC/=<51:56>D,0 ;DPE1 & DPE5 & DPM1 & DPMA
#=10 ;DECODE # BITS
CLRCLK=11 ;CLEAR 1MS NICOND FLAG
CLR IO LATCH=12 ;CLEAR IO LATCH
CLR IO BUSY=13 ;CLEAR IO BUSY
LDPAGE=14 ;WRITE PAGE TABLE
NICOND=15 ;DOING NICOND DISPATCH
LDPXCT=16 ;LOAD PXCT FLAGS
WAIT=17 ;MEM WAIT
PREV=20 ;FORCE PREVIOUS CONTEXT
LOADXR=21 ;LOAD XR #, USES PXCT FIELD TO SELECT
; CORRECT AC BLOCK
APR FLAGS=23 ;LOAD APR FLAGS
CLRCSH=24 ;CLEAR CACHE
APR EN=25 ;SET APR ENABLES
MEMCLR=27 ;CLEAR PAGE FAULT CONDITION
SWEEP=34 ;SET SWEEP
PXCT OFF=36 ;TURN OFF THE EFFECT OF PXCT
INHCRY18=40 ;INHIBIT CARRY INTO LEFT HALF
LOADIR=41 ;LOAD THE IR
LDPI=43 ;LOAD PI SYSTEM
ASHOV=44 ;TEST RESULT OF ASH
EXPTST=45 ;TEST RESULT OF FLOATING POINT
FLAGS=46 ;CHANGE PC FLAGS
LDACBLK=47 ;LOAD AC BLOCK NUMBERS
LDINST=61 ;LOAD INSTRUCTION
;THE SPEC FIELD IS REDEFINED WHEN USED FOR BYTE MODE STUFF
BYTE/=<54:56> ;DPM1 (SPEC SEL)
BYTE1=1
BYTE2=2
BYTE3=3
BYTE4=4
BYTE5=5
;THE SPEC FIELD IS REDEFINED WHEN USED TO CONTROL SHIFT PATHS
SHSTYLE/=<54:56> ;DPE1 (SPEC SEL)
NORM=0 ;2 40-BIT REGISTERS
ZERO=1 ;SHIFT ZERO INTO 36 BITS (ASH TOP 2901)
ONES=2 ;SHIFT IN ONES
ROT=3 ;ROTATE
ASHC=4 ;ASHC
LSHC=5 ;LSHC
DIV=6 ;SPECIAL DIVIDE
ROTC=7 ;ROTATE DOUBLE
.TOC "MICROCODE FIELDS -- DISPATCH"
; !=======================================================!
; ! D ! CRA1 ! CRA1 ! DPEA !
; ! I ! DISP ! DISP ! DISP !
; ! S ! 10 ! 20 ! 40 !
; ! P ! ! ! !
; !=======================================================!
; ! 0 ! DIAG ADR ! DIAG ADR ! 0 !
; !-------------------------------------------------------!
; ! 1 ! RETURN ! RETURN ! DP 18-21 !
; !-------------------------------------------------------!
; ! 2 ! MULTIPLY ! J ! J !
; !-------------------------------------------------------!
; ! 3 ! PAGE FAIL ! AREAD ! AREAD !
; !-------------------------------------------------------!
; ! 4 ! NICOND ! NOT USABLE ! NORM !
; !-------------------------------------------------------!
; ! 5 ! BYTE ! NOT USABLE ! DP 32-35 !
; !-------------------------------------------------------!
; ! 6 ! EA MODE ! NOT USABLE ! DROM A !
; !-------------------------------------------------------!
; ! 7 ! SCAD ! NOT USABLE ! DROM B !
; !=======================================================!
;NOTE: DISP EN 40 & DISP EN 10 ONLY CONTROL THE LOW 4 BITS OF THE
; JUMP ADDRESS. DISP EN 20 ONLY CONTROLS THE HI 7 BITS. TO DO
; SOMETHING TO ALL 11 BITS BOTH 20 & 40 OR 20 & 10 MUST BE ENABLED.
DISP/=<57:62>D,70 ;CRA1 & DPEA
CONSOLE=00 ;CONSOLE DISPATCH
DROM=12 ;DROM
AREAD=13 ;AREAD
DP LEFT=31 ;DP 18-21
NORM=34 ;NORMALIZE
DP=35 ;DP 32-35
ADISP=36 ;DROM A FIELD
BDISP=37 ;DROM B FIELD
RETURN=41 ;RETURN
MUL=62 ;MULTIPLY
PAGE FAIL=63 ;PAGE FAIL
NICOND=64 ;NEXT INSTRUCTION DISPATCH
BYTE=65 ;BYTE SIZE AND POSITION
EAMODE=66 ;EFFECTIVE ADDRESS MODE
SCAD0=67 ;J!2 IF SCAD BIT 0 = 1
.TOC "MICROCODE FIELDS -- SKIP"
; !=======================================================!
; ! S ! CRA2 ! DPEA ! DPEA !
; ! K ! SKIP ! SKIP ! SKIP !
; ! I ! 10 ! 20 ! 40 !
; ! P ! ! ! !
; !=======================================================!
; ! 0 ! 0 ! 0 ! 0 !
; !-------------------------------------------------------!
; ! 1 ! TRAP CYCLE ! CRY 02 ! CARRY OUT !
; !-------------------------------------------------------!
; ! 2 ! AD=0 ! ADL SIGN ! ADL=0 !
; !-------------------------------------------------------!
; ! 3 ! SC SIGN ! ADR SIGN ! ADR=0 !
; !-------------------------------------------------------!
; ! 4 ! EXECUTE ! USER IOT ! -USER !
; !-------------------------------------------------------!
; ! 5 ! -BUS IO BUSY ! JFCL SKIP ! FPD FLAG !
; !-------------------------------------------------------!
; ! 6 ! -CONTINUE ! CRY 01 ! AC # IS ZERO !
; !-------------------------------------------------------!
; ! 7 ! -1 MSEC ! TXXX ! INTERRUPT REQ !
; !=======================================================!
SKIP/=<63:68>D,70 ;CRA2 & DPEA
IOLGL=04 ;(.NOT.USER)!(USER IOT)!(CONSOLE EXECUTE MODE)
LLE=12 ;AD LEFT .LE. 0
CRY0=31 ;AD CRY -2
ADLEQ0=32 ;ADDER LEFT = 0
ADREQ0=33 ;ADDER RIGHT = 0
KERNEL=34 ;.NOT. USER
FPD=35 ;FIRST PART DONE
AC0=36 ;AC NUMBER IS ZERO
INT=37 ;INTERRUPT REQUEST
LE=42 ;(AD SIGN)!(AD.EQ.0)
CRY2=51 ;AD CRY 02
DP0=52 ;AD SIGN
DP18=53 ;AD BIT 18
IOT=54 ;USER IOT
JFCL=55 ;JFCL SKIP
CRY1=56 ;AD CRY 1
TXXX=57 ;TEST INSTRUCTION SHOULD SKIP
TRAP CYCLE=61 ;THIS INSTRUCTION IS THE RESULT OF A
; TRAP 1, 2, OR 3
ADEQ0=62 ;AD.EQ.0
SC=63 ;SC SIGN BIT
EXECUTE=64 ;CONSOLE EXECUTE MODE
-IO BUSY=65 ;.NOT. I/O LATCH
-CONTINUE=66 ;.NOT. CONTINUE
-1 MS=67 ;.NOT. 1 MS. TIMER
.TOC "MICROCODE FIELDS -- TIME CONTROL"
DT/=<109:111>D,0 ;**NOT STORED IN CRAM**
;DEFAULT TIME FIELD (USED IN MACROS)
; CAN BE OVERRIDDEN IN MACRO CALL
2T=0
3T=1
4T=2
5T=3
T/=<70:71>F,DT ;CSL5 (E601)
;CLOCK TICKS MINUS TWO REQUIRED TO
; DO A MICRO INSTRUCTION
2T=0 ;TWO TICKS
3T=1 ;THREE TICKS
4T=2 ;FOUR TICKS
5T=3 ;FIVE TICKS