* 620/F EMULATION MICROPROGRAM 001 * 002 * REGISTERS USED: 003 * 0 = 620 A REGISTER 004 * 1 = 620 B REGISTER 005 * 2 = 620 X REGISTER 006 * 3 = I/O DEVICE SELECTION REGISTER (LOW ORDER 6 BITS) 007 * 4 = USED BY HALT LOOP TO HOLD INSTRUCTION REGISTER. THE 008 * CONSOLE IS WIRED TO REQUEST DISPLAY OF REGISTER 4 WHEN 009 * THE INSTRUCTION REGISTER KEY IS PRESSED. 010 * E = USED FREELY AS WORKING SPACE, AND REQUIRED BY MULTIPLY 011 * AND DIVIDE INSTRUCTIONS. 012 * F = USED FREELY AS WORKING SPACE, AND REQUIRED BY MULTIPLY 013 * AND DIVIDE INSTRUCTIONS. 014 * 015 * ENTER AT X'1D FOR TESTING PURPOSES IN PAGE 1. 016 * 017 * HEXADECIMAL CONSTANTS. 018 * 019 A EQU X'A 020 B EQU X'B 021 C EQU X'C 022 D EQU X'D 023 E EQU X'E 024 F EQU X'F 025 * 026 * SPECIAL REGISTERS. 027 * 028 DR EQU 3 I/O DEVICE REGISTER 029 IH EQU 4 INSTRUCTION REGISTER (HALT LOOP) 030 S1 EQU E 031 S2 EQU F 032 * 033 * INTERRUPT MASKS. 034 * 035 M EQU E ALLOW I/O ONLY IF M/P 036 I EQU F ALLOW I/O ALWAYS 037 N EQU C DO NOT ALLOW I/O 038 * 039 * 040 * MACROS 041 * 042 * ORIGIN AT NEXT MULTIPLE OF P(1). 043 * 044 MORG MAC 045 ORG *+P(1)-1 046 ORG */P(1)*P(1) 047 EMAC 048 * 049 * ILLEGAL INSTRUCTIONS 050 * 051 ILLAD EQU 2 ILLEGAL INSTRUCTION INTERRUPT 052 ILLOP MAC 053 GMSK /N(ILLOP1),LA1,LB3,RF1,FF9,MK1 P-2->P 054 EMAC 055 EJEC 056 * SINGLE WORD ADDRESSING INSTRUCTIONS. 057 * PART OF DOUBLE-WORD EXTENDED INSTRUCTIONS. 058 * 059 MORG 32 REF BY FSEL(15-13) 060 LDA1 GEN /N(LDB),SF1,AB3,IM8,RF4,BB1,AA0 INCP,IF(P),SET AA&BB 061 ELDA1 GEN /N(IWAIT),1(M),GF5,LB1,FFA,MF1, IBR->I,DEC,INTRPT, FREE 062 CWR1,BB1,AA0 MIL->A 063 MORG 2 LDB,LDX REF BY FSEL(12) 064 LDB GEN /N(IWAIT),1(I),GF5,IM6,LB1,FFA, IBR->I,DEC,INTRPT, 065 CMF1,WR1,BB1,AA1 SEL&RESET CINTF,MIL->B 066 ELDB1 GEN /N(IWAIT),1(M),GF5,LB1,FFA,MF1, IBR->I,DEC,INTRPT, FREE 067 CWR1,BB1,AA1 MIL->B 068 ORG LDA1+4 069 SWA31 GEN /F(LDB),2(4),FSE,SF1,IM8,RF4 FSEL(12),IF(P),INCP 070 ELDX1 GEN /N(IWAIT),1(M),GF5,LB1,FFA,MF1, IBR->I,DEC,INTRPT, FREE 071 CWR1,BB1,AA2 MIL->X 072 ORG LDB+4 073 LDX GEN /N(IWAIT),1(I),GF5,IM6,LB1,FFA, IBR->I,DEC,INTRPT, 074 CMF1,WR1,BB1,AA2 SEL&RESET CINTF,MIL->X 075 EINR1 GEN /N(INR2),GF8,LB1,FF9,CF3,SH1,BB1 MIL+1->ALU,SAMPLE OVFL FREE 076 ORG SWA31+4 077 INR1 GEN /N(EINR1),SF1,IM6,LB1,FFA,MF1 OS(ALU),DOR->ALU 078 INR2 GEN /F(SS3M),2(8),FSF,SF1,IM8,RF4, FSEL(14),MIL+1->ALU, FREE 079 CLB1,FF9,CF3,SH1,BB1 INCP,IF(P) 080 MORG 2 SUB,ANA REF BY FSEL(12) 081 SUB GEN /N(IWAIT),1(I),GFD,IM6,LB1,FF6, IBR->I,DECODE,EN INT, 082 CCF3,WR1,BB1,AA0 SAMPLE OVFL,A-MIL->A 083 ESUB1 GEN /N(IWAIT),1(M),GFD,LB1,FF6,CF3, IBR->I,DEC,INTRPT, FREE 084 CWR1,BB1,AA0 A-MIL->A,SAMPLE OVFL 085 ORG SUB+2 086 ANA GEN /N(IWAIT),1(I),GF5,IM6,LB1,FFB, IBR->I,DECODE,EN INT, 087 CMF1,WR1,BB1,AA0 A&MIL->A 088 EANA1 GEN /N(IWAIT),1(M),GF5,LB1,FFB,MF1, IBR->I,DEC,INTRPT, FREE 089 CWR1,BB1,AA0 A&MIL->A 090 MORG 2 /S(LDA1,SWA26) 091 SWA26 GEN /N(SWA22),SF1,IMD,RF5 OF(MIL),INCS 092 EORA1 GEN /N(IWAIT),1(M),GF5,LB1,FFE,MF1, IBR->I,DEC,INTRPT, FREE 093 CWR1,BB1,AA0 A V MIL -> A 094 ORG INR1+8 095 ORA1 GEN /N(ORA2),SF1,IM8,RF4 IF(P),INCP 096 ORA2 GEN /N(IWAIT),1(I),GF5,IM6,LB1,FFE, IBR->I,DEC,INTRPT, FREE 097 CMF1,WR1,BB1,AA0 A V MIL -> A 098 MORG 2 ADD, ERA REF BY F.SEL(12) 099 ADD GEN /N(IWAIT),1(I),GFD,IM6,LB1,FF9, IBR->I,DECODE,EN INT, 100 CWR1,BB1,AA0 SAMPLE OVFL,A+MIL->A 101 EADD1 GEN /N(IWAIT),1(M),GFD,LB1,FF9,WR1, IBR->I,DEC,INTRPT, FREE 102 CBB1,AA0 A+MIL->A,SAMPLE OVFL 103 ORG ORA1+4 104 SWA35 GEN /F(ADD),2(4),FSE,SF1,IM8,RF4 FSEL(12),IF(P),INCP 105 SWA22 GEN /S(LDA1,SWA26),2(C),MT1,FSF,TF3, C.FSEL(15-13)(MIL15=0),FREE 106 CGFB,LB1,RF3,FFA,MF1,BB1 MIL->OPR 107 ORG ADD+4 MORG 16 WITH ADD 108 ERA GEN /N(IWAIT),1(I),GF5,IM6,LB1,FF6, IBR->I,DECODE,EN INT, 109 CMF1,WR1,BB1,AA0 A XOR MIL -> A 110 EERA1 GEN /N(IWAIT),1(M),GF5,LB1,FF6,MF1, IBR->I,DEC,INTRPT, FREE 111 CWR1,BB1,AA0 A XOR MIL -> A 112 ORG SWA35+4 113 SWA36 GEN /F(SUB),2(2),FSF,SF1,IM8,RF4 FSEL(12),IF(P),INCP 114 SWA21 GEN /N(SWA22),SF1,IMD OF(MIL) FREE 115 MORG 2 REF BY FSEL(12) 116 MUL0 GEN /N(MUL),LB1,FFA,MF1,WR1,BB1,AAF MIL->S2 117 MUL GMSK /T(MUL4,MUL1),TF2,GFD,LB3,RF2, R0SIGN=>MUL4,15->SC FREE 118 CFFA,MK000E 119 ORG SWA36+4 120 SWA37 GEN /F(MUL0),2(4),FSE,IM1 FSEL(12),WAIT(M) 121 ENTER GEN /N(SS3MI),SF1,IM8,RF4 IF(P),INCP 122 ORG MUL0+4 MORG 16 WITH MUL0 123 DIV0 GEN /N(DIV),LB1,FFA,MF1,WR1,WF1,BB1, MIL->S2,MIL15->QS 124 C24(S2) 125 DIV GEN /T(DIV2,DIV1),TF3,GFF,VF1,AA0 QS=>DIV1,R0(15)->DSB FREE 126 EJEC 127 * DOUBLE-WORD EXTENDED INSTRUCTIONS. NOTE THAT THESE INSTRUCTIONS 128 * ARE DIFFERENT FROM VARIAN'S SINCE AN M-FIELD EQUAL TO ZERO OR 8 129 * DOES NOT CAUSE UNPREDICTABLE RESULTS. 130 * 131 MORG 32 ELDA ETC REF BY CND FSEL, FAIL TO DEIND 132 EXTBAS EQU * 133 DL GEN /N(DL1),SF1,IM5,LB1,RF4,FF9,CF3, OF(ALU), DOR+1->ALU, 134 CSH1,BB0 INCP 135 ELDA GEN /N(ELDA1),SF1,IM4,RF1,FF0,CF3,AAE IF(A),S1+1->P 136 ELDB GEN /N(ELDB1),SF1,IM4,RF1,FF0,CF3,AAE IF(A),S1+1->P 137 ELDX GEN /N(ELDX1),SF1,IM4,RF1,FF0,CF3,AAE IF(A),S1+1->P 138 EINR GEN /N(EINR1),SF1,IM6,LB1,RF4,FFA,MF1 OS(A),DOR->ALU,INCP 139 ESTA GEN /N(SS2M),SF1,IM2,AB3,RF4,AA0 OVR(OS),A->AA,INCP 140 ESTB GEN /N(SS2M),SF1,IM2,AB3,RF4,AA1 OVR(OS),B->AA,INCP 141 ESTX GEN /N(SS2M),SF1,IM2,AB3,RF4,AA2 OVR(OS),X->AA,INCP 142 DS GEN /N(DS1),SF1,IM2,AA0 OVR(OS), A->ALU 143 EORA GEN /N(EORA1),SF1,IM4,RF1,FF0,CF3,AAE IF(A),S1+1->P 144 EADD GEN /N(EADD1),SF1,IM4,RF1,FF0,CF3,AAE IF(A),S1+1->P 145 EERA GEN /N(EERA1),SF1,IM4,RF1,FF0,CF3,AAE IF(A),S1+1->P 146 ESUB GEN /N(ESUB1),SF1,IM4,RF1,FF0,CF3,AAE IF(A),S1+1->P 147 EANA GEN /N(EANA1),SF1,IM4,RF1,FF0,CF3,AAE IF(A),S1+1->P 148 EMUL GEN /N(MUL0),IM1,RF4 WAIT(M),INCP 149 EDIV GEN /N(DIV0),IM1,RF4 WAIT(M),INCP 150 MORG 16 REF BY CND FSEL, FAIL TO DEIND 151 DERL GEN /S(EXTBAS,DEIND),2(F),FS7,TF3, C.FSEL(6-3) (QS=0), 152 CSF1,GFF,IM5,LA1,LB1,RF3,FF9,BB0 OF(A),P+DOR->DOR 153 DEIX GEN /S(EXTBAS,DEIND),2(F),FS7,TF3, C.FSEL(6-3) (QS=0), 154 CSF1,GFF,IM5,LB1,RF3,FF9,BB0,AA2 OF(A),X+DOR->DOR 155 DEIB GEN /S(EXTBAS,DEIND),2(F),FS7,TF3, C.FSEL(6-3) (QS=0), 156 CSF1,GFF,IM5,LB1,RF3,FF9,BB0,AA1 OF(A),B+DOR->DOR 157 DENI GEN /S(EXTBAS,DEIND),2(F),FS7,TF3, C.FSEL(6-3) (QS=0), 158 CSF1,GFF,IM5,LB1,FFA,MF1,BB0 OF(A),DOR->ALU 159 MORG 2 REF BY FSEL(7) 160 DEPRE GEN /F(DERL),2(3),FS4,LB1,RF3, FSEL(1,0), 161 CFFA,MF1,WF1,BB1 MIL->DOR,MIL15->QS 162 DEPOST GEN /S(DERL,DEPST1),2(3),FS4,TF3, C.FSEL(1,0) (MIL15=0), 163 CGFB,LB1,RF3,FFA,MF1,BB1 MIL->DOR 164 MORG 2 /T(DEPSTI,DEIND1) 165 DEIND1 GEN /S(EXTBAS,DEIND),2(F),FS7,TF3, C.FSEL(6-3) (MIL15=0), 166 CSF1,GFB,IM5,LB1,RF3,FFA,MF1,BB1 OF(A),MIL->DOR 167 DEPSTI GEN /S(DERL,DEIND),2(3),FS4,TF3,SF3, C.FSEL(1,0) (MIL15=0), 168 CGFB,IM5,LB1,RF3,FFA,MF1,BB1 CND(MIL15=1) OF(ALU), 169 * MIL->DOR 170 MORG 2 /S(EXTBAS,DEIND) 171 DEIND GEN /T(DEPSTI,DEIND1),TF3,GFF,IM1,RF5 WAIT(M),QS=>DEIND1,INCS 172 DL1 GEN /N(ELDB1),SF1,IM8,LB1,RF4,FFA, IF(P),INCP,MIL->A FREE 173 CMF1,WR1,BB1,AA0 174 MORG 2 /S(DERL,DEPST1) 175 DEPST1 GEN /N(DEIND),SF1,IM5,LB1,FFA,MF1,BB0 OF(ALU),DOR->ALU 176 EJEC 177 * SKIP IF REGISTER EQUAL. THIS CODE IS SOMEWHAT DIFFERENT FROM 178 * VARIAN'S SINCE SETTING OF MORE THAN ONE OF THE A, B OR X BITS 179 * DOES NOT CAUSE UNPREDICTABLE RESULTS. 180 * 181 SRE5X GEN /N(SRE60),IM1,LA1,RF1,FF1,BB0 WAIT(M),P V A -> P FREE 182 MORG 4 REF BY FSEL(1-0) 183 SRE20 GEN /S(SRE50,SRE30),2(7),FS7,TF3,SF2, CND(MIL15=0) FSEL(5-3), 184 CGFB,IM5,LB1,LA1,FF9,BB1 CND(MIL15=0) OF(ALU), 185 * P+MIL->ALU 186 SRE21 GEN /S(SRE50,SRE30),2(7),FS7,TF3,SF2, CND(MIL15=0) FSEL(5-3), 187 CGFB,IM5,LB1,FF9,BB1,AA2 CND(MIL15=0) OF(ALU), 188 * X+MIL->ALU 189 SRE22 GEN /S(SRE50,SRE30),2(7),FS7,TF3,SF2, CND(MIL15=0) FSEL(5-3), 190 CGFB,IM5,LB1,FF9,BB1,AA1 CND(MIL15=0) OF(ALU), 191 * B+MIL->ALU 192 SRE23 GEN /S(SRE50,SRE30),2(7),FS7,TF3,SF1, CND(MIL15=0) FSEL(5-3), 193 CGFB,IMD OF(MIL) 194 MORG 16 SRE5+ REF BY CND FSEL 195 SRE50 GEN /N(SRE60),IM1,RF1,SH1 WAIT(M),0->P 196 SRE51 GEN /N(SRE60),IM1,RF1,AA0 WAIT(M),A->P 197 SRE52 GEN /N(SRE60),IM1,RF1,AA1 WAIT(M),B->P 198 SRE53 GEN /N(SRE60),IM1,RF1,FF1,BB1,AA0 WAIT(M),A V B -> P 199 SRE54 GEN /N(SRE60),IM1,RF1,AA2 WAIT(M),X->P 200 SRE55 GEN /N(SRE60),IM1,RF1,FF1,BB2,AA0 WAIT(M),A V X -> P 201 SRE56 GEN /N(SRE60),IM1,RF1,FF1,BB2,AA1 WAIT(M),B V X -> P 202 SRE57 GEN /N(SRE5X),RF1,FF1,BB2,AA1 B V X -> P 203 MORG 2 MORG 32 WITH SRE50 204 SRE30 GEN /N(SRE40),SF1,IMD OF(MIL) 205 SRE60 GEN /N(SRE70),GF2,LB1,LA1,FF6,MF1,BB1 MIL XOR P, SAMPLE FREE 206 MORG 2 MORG 32 WITH SRE50 207 SRE40 GEN /F(SRE20),2(3),FS4,IM1,RF5 FSEL(1-0),WAIT(M),INCS 208 SRE70 GEN /T(SRE80,SS2M),TF2,SF2,GF9,IM4, CND(NO ALUZ) IF(ALU), FREE 209 CLB1,RF1,BB0 DOR->P 210 EJEC 211 * REGISTER - TO - REGISTER TRANSFER INSTRUCTIONS. 212 * 213 REG30 GEN /F(REG20),2(7),FS4,SF1,IM8,LB1,RF3,FFE,MF1 214 REG41 GEN /N(REG20),SF1,GF6,IM8,LB1,FF9,WR1,SH5 FREE 215 REG42 GEN /N(REG20),SF1,GF6,IM8,LB1,FF9,WR1,SH5,AA1 FREE 216 REG43 GEN /N(REG21),SF1,GF6,IM8,LB1,FF9,WR1,SH5,AA1 FREE 217 MORG 16 REF BY CND FSEL(2-0) 218 REG20 GEN /N(IWAIT),1(I),GF5,IM6 219 REG21 GEN /N(IWAIT),1(I),GFD,IM6,LB1,FF9,WR1,SH5 220 REG22 GEN /N(IWAIT),1(I),GFD,IM6,LB1,FF9,WR1,SH5,AA1 221 REG23 GEN /N(REG41),SF1,GF6,IM1,LB1,FF9,WR1,SH5,AA1 222 REG24 GEN /N(IWAIT),1(I),GFD,IM6,LB1,FF9,WR1,SH5,AA2 223 REG25 GEN /N(REG41),SF1,GF6,IM1,LB1,FF9,WR1,SH5,AA2 224 REG26 GEN /N(REG42),SF1,GF6,IM1,LB1,FF9,WR1,SH5,AA2 225 REG27 GEN /N(REG43),SF1,GF6,IM1,LB1,FF9,WR1,SH5,AA2 226 ************************** D E C O D E R *************************** 227 ORG X'58 DECODER REFERENCES NEXT 8 INSTRUCTIONS * 228 REG18 GEN /S(REG20,REG20),2(7),FS4,TF2,SF1,IM8,RF7,SH1 * 229 REG1A GEN /S(REG20,REG20),2(7),FS4,TF2,SF1,IM8,RF7,AA1 * 230 REG1C GEN /S(REG20,REG20),2(7),FS4,TF2,SF1,IM8,RF7,AA2 * 231 REG1E GEN /S(REG20,REG20),2(7),FS4,TF2,SF1,IM8,RF7,FFE, * 232 CMF1,BB2,AA1 * 233 REG19 GEN /S(REG20,REG20),2(7),FS4,TF2,SF1,IM8,RF7 * 234 REG1B GEN /S(REG20,REG20),2(7),FS4,TF2,SF1,IM8,RF7,FFE, * 235 CMF1,BB1 * 236 REG1D GEN /S(REG20,REG20),2(7),FS4,TF2,SF1,IM8,RF7,FFE, * 237 CMF1,BB2 * 238 REG1F GEN /T(REG30,REG20),TF2,SF2,IM8,RF7,FFE,MF1,BB2,AA1 * 239 ************************************************************************ 24 EJEC 241 * HALT LOOP PROCESSING. CONTROL GETS HERE VIA HALT OR ILLEGAL 242 * INSTRUCTIONS, VIA THE RESET KEY AND VIA THE STEP KEY. 243 * 244 MORG 16 REF BY FSEL(5-4), (5-4)=11 IMPOSSIBLE, REG FLD SELECT 245 HREN1 GEN /N(HMEM) NOP (CAN'T CHANGE STAT) 246 HREN2 GEN /N(HMEM),LB1,RF1,FFA,MF1 DOR->P 247 HREN3 GEN /N(HMEM),LB1,FFA,MF1,WR1 DOR->R** 248 * HMDP1 IS NOT REFERENCED BY FSEL. 249 HMDP1 GEN /N(HRDP1),IM1,RF4,AB3,BB1 WAIT(M),INCP,"MIL"->BB FREE 250 MORG 4 REF BY FSEL(7-6), (7-6)=10 IMPOSSIBLE 251 HREN GEN /F(HREN1),1(0),2(3),FS8,AB2,MR1 FSEL(5-4),(3-0)->AA 252 HMEMA GEN /N(HLT1),1(4),GF4,IMC SAMPLE INTERRUPTS 253 * HMEN4 IS NOT REFERENCED BY FSEL 254 HMEN4 GEN /N(HMEM),LB1,RF4,FFA,MF1 WAIT(M),INCP,DOR->ALU FREE 255 HMEN3 GEN /N(HMEN4),SF1,IMA OS(P) 256 ************************** D E C O D E R *************************** 257 ORG X'68 DECODER REFERENCES NEXT 8 INSTRUCTIONS. * 258 IMMREL GEN /F(IMPRE),2(1),FSB,SF1,IM4,LA1, P+1->S1,IF(A),0->QS, * 259 CFF0,CF3,WR1,WF1,24(S1) FSEL(7) * 260 IMMIX GEN /F(IMPRE),2(1),FSB,SF1,IM4,LA1, P+1->S1,IF(A),0->QS, * 261 CFF0,CF3,WR1,WF1,24(S1) FSEL(7) * 262 IMMIB GEN /F(IMPRE),2(1),FSB,SF1,IM4,LA1, P+1>S1,IF(A),0->QS, * 263 CFF0,CF3,WR1,WF1,24(S1) FSEL(7) * 264 IMMNI GEN /N(IMNI),SF1,IM4,LA1,FF0,CF3, P+1->S1,IF(A) * 265 CWR1,24(S1) * 266 DE#1 GEN /F(DEPRE),2(1),FSB,SF1,IM4,LA1, P+1->S1,IF(A),0->QS, * 267 CFF0,CF3,WR1,WF1,XF1,AAE FSEL(7),0->CINTF * 268 DE#2 GEN /F(DEPRE),2(1),FSB,SF1,IM4,LA1, P+1->S1,IF(A),0->QS, * 269 CFF0,CF3,WR1,WF1,XF1,AAE FSEL(7),0->CINTF * 270 DE#3 GEN /F(DEPRE),2(1),FSB,SF1,IM4,LA1, P+1->S1,IF(A),0->QS, * 271 CFF0,CF3,WR1,WF1,XF1,AAE FSEL(7),0->CINTF * 272 DE#4 GEN /F(DEPRE),2(1),FSB,SF1,IM4,LA1, P+1->S1,IF(A),0->QS, * 273 CFF0,CF3,WR1,WF1,XF1,AAE FSEL(7),0->CINTF * 274 ************************************************************************ 27 MORG 16 REF BY FSEL(5-4), (5-4)=11 IMPOSSIBLE, REG FLD SELECT 276 HRDP1 GEN /N(HFPT),LB1,RF3,FFA,MF1 STATUS->DOR 277 HRDP2 GEN /N(HFPT),LA1,RF3 P->DOR 278 HRDP3 GEN /N(HFPT),RF3 R**->DOR 279 * HFPT IS NOT REFERENCED BY FSEL. 280 HFPT GMSK /N(HFPT1),1(7),AB2,IMF,LB3,FFA, START IO @ X'1E FREE 281 CMKBFC0 X'403F->ALU (DTO) 282 MORG 2 /T(HSTT6,HSTT2) 283 HSTT2 GEN /F(SS2),2(1),FS3,SF1,IM8 FSEL(STEP),IF(P) 284 HSTT6 GEN /N(HSTT7),IM4,24(IH) IH->IBR,MIL 285 HSTT1 GEN /T(HSTT6,HSTT2),TF3,GF9 ALUZ=>HSTT2 FREE 286 HSTT5 GEN /N(HLT),GF1 IBR->I FREE 287 MORG 8 REF BY FSEL(8-6) 288 HRDP GEN /F(HRDP1),1(0),2(3),FS8,MR1,AB2, FSEL(5-4), (3-0)->AA 289 CBB3 STATUS->BB 290 HMEM GEN /N(HLT1),1(4),GF4,IMC SAMPLE INTERRUPTS 291 HSTT GMSK /N(HSTT1),GF2,LB3,FFB,MK01FF, IH&X'FE00,SAMPLE ALU 292 C16(IH) (WAS IT A HALT INST?) 293 HMEN GMSK /N(HMEN1),1(3),AB2,IMF,LB3,FFA, START IO @ X'E, 294 CMKDFC0 X'203F->ALU (DTI) 295 ABL10 GMSK /N(ABL20),SF1,GF4,IM6,LB3,RF1, OS(ALU),X'80->P, 296 CFFA,MKFF7F RESET OVERFLOW 297 HMDP GEN /N(HMDP1),SF1,IM9 OF(P) 298 ABL11 GMSK /N(ABL21),SF1,GF2,IM6,LB3,RF1, OS(ALU),X'80->P 299 CFFA,MKFF7F SET OVERFLOW 300 ABL30 GMSK /N(ABL31),SF1,IM6,LB3,RF1,FFA, OS(ALU),X'258->P 301 CMKFDA7 302 ************************** D E C O D E R *************************** 303 ORG X'80 DECODER REFERENCES 'HLT' * 304 HLT GEN /F(HLT8),2(1),FS1 FSEL(CINTF) * 305 ************************************************************************ 30 HLT2 GMSK /N(HLT3),LB3,RF3,FFA,MKFFC0 O'77->DOR FREE 307 HLT3 GEN /N(HLT4),IM2,LB1,FFB,MF1,WR1,BB0, WAIT(IO),DOR&DR->DR FREE 308 C24(DR) 309 HLT4 GEN /N(HLT5),IM4,LB1,RF3,FFA,MF1,BB2 IOR->DOR,ALU->IBR FREE 310 HLT5 GEN /N(HLT6),GF1,LB1,FFA,MF1,BB0 DOR->ALU,IBR->IR FREE 311 HLT6 GEN /F(HRDP),2(7),FSA FSEL(8-6) FREE 312 HSTT7 GEN /N(HSTT8),GF1,24(IH) IH->ALU,IBR->IR FREE 313 HSTT8 GEN /N(HSTT9),SF1,IM8 IF(P) FREE 314 HSTT9 GEN /N(IWAIT),1(4),GF5 IBR->I,DECODE,ETC FREE 315 HFPT1 GEN /N(HMEN),IM2,LB1,FFA,MF1 WAIT(IO),DOR->ALU FREE 316 HMEN1 GEN /N(HMEN2),IM2 WAIT(IO) FREE 317 HMEN2 GEN /F(HREN),2(3),FSA,LB1,RF3,FFA, FSEL(7-6),IOR->DOR FREE 318 CMF1,BB2 319 EJEC 320 * DIVIDE INSTRUCTION. 321 * 322 ************************** D E C O D E R *************************** 323 ORG X'90 DECODER REFERENCES 'JMP' * 324 JMP GEN /T(JMP1,SS1M),TF2,SF3,GF5,IMC, 620=>JMP1,RESET CINTF,* 325 CRF4,XF1 CND(620) IF(MIL), INCP* 326 ************************************************************************ 32 DIV5 GEN /N(DIV6),GF2,RF3,FF2,CF3,SH1,BB1 -B->DOR,SAMPLE FREE 328 MORG 2 /T(DIV2,DIV1) 329 DIV1 GEN /N(DIV2),FF6,CF3,WR1,SH1,BBF,AAF -RF->RF 330 DIV2 GEN /T(DIV4,DIV3),TF2,GFA,FF2,CF3, DSB=>DIV4,-RF->RE 331 CWR1,SH1,BBF,AAE 332 MORG 4 BE CAREFUL: /S(DIV13&DIV14,DIV12) SELECTS DSB 333 DIV13 GEN /S(SS3M,DIV15),2(8),FSF,TF3,SF2, FSEL(15) IF NO QS 334 CGFF,IM8,RF4 IF(P) IF NO QS, INCP 335 DIV6 GEN /N(DIV7),FF2,CF1,WR1,SC1,WF1,SH1 DOR(RT),CARRY-A->A FREE 336 ORG DIV13+2 REF BY FSEL(DSB) 337 DIV14 GEN /S(SS3M,DIV15),2(8),FSF,TF2,SF3, FSEL(15) IF QS, 338 CGFF,IM8,RF4,FF6,CF3,WR1,SH1,BB0, IF(P) IF QS, INCP 339 CAA0 -A->A 340 DIV7 GEN /N(DIV8),GF2,FF9,WR1,SC1,XF2,BBE FIRST DIVIDE STEP FREE 341 MORG 2 /S(DIV13,DIV12) 342 DIV12 GEN /T(DIV14,DIV13),TF2,GFA,FF9,WR1, DSB=>DIV14,A+RF->A 343 CBBF,AA0 344 DIV8 GMSK /T(DIV9,DIV10),TF3,GFD,LB3,RF2, R0(15)=>DIV10,-14->SC FREE 345 CFFA,MKE 346 MORG 2 /T(DIV4,DIV3) 347 DIV3 GEN /N(DIV7),RF3,AA1 B->DOR 348 DIV4 GEN /N(DIV5),LA2,WR1,AA1 B(L)->B,0->DLA0 349 MORG 2 /T(DIV9,DIV10), /T(DIV11,DIV10) 350 DIV10 GEN /T(DIV11,*),TF2,GFC,MR1,LA2,RF5, DIVIDE STEP 351 CFF9,WR1,SC1,XF2,SH2,BBF 352 DIV11 GEN /S(DIV13,DIV12),2(6),FS2,TF3,GFD, FSEL(DSB) IF R0(15)=0 353 CLB1,FFA,MF1,WR1,BB0,AA1 DOR->B 354 DIV9 GEN /N(DIV10),SF1,GF2 SET OVERFLOW 355 EJEC 356 * JUMP AND MARK INSTRUCTION. 357 * 358 ************************** D E C O D E R *************************** 359 ORG X'A0 DECODER REFERENCES 'JMRK' * 360 JMRK GEN /T(JMRK1,JMRK5),TF2,SF3,GF5,IMD, 620=>JMRK1, * 361 CXF1 CND(620) OF(MIL) * 362 ************************************************************************ 36 JMRK3 GEN /N(SS2M),SF1,IM4,LB1,RF1,FF9,CF3, IF(ALU),MIL+1->P FREE 364 CSH1,BB1 365 MORG 2 /T(JMRK1,JMRK5) 366 JMRK5 GEN /N(SS2M),SF1,IM8,RF4 IF(P),INCP 367 JMRK1 GEN /T(JMRK2,JMRK4),TF3,SF2,GFB,IM2, MIL15=>JMRK4,P+1->ALU, 368 CLA1,CF3 CND(MIL15=0) OS(MIL) 369 MORG 2 /T(JMRK2,JMRK4) 370 JMRK4 GEN /N(JMRK1),SF1,IMD,RF5 OF(MIL),INC SC 371 JMRK2 GEN /N(JMRK3),IM1,LA1,CF3 WAIT(M),P+1->ALU 372 EJEC 373 * EXECUTE REMOTE INSTRUCTION. 374 * 375 ************************** D E C O D E R *************************** 376 ORG X'B0 DECODER REFERENCES 'XEC' * 377 XEC GEN /T(XEC1,XEC3),TF2,SF3,GF5,IMC,XF1 620=>XEC1,RESET CINTF,* 378 * CND(620) IF(MIL) * 379 ************************************************************************ 38 XEC2 GEN /N(XEC1),SF1,IMC,RF5 IF(MIL),INC SC 381 MORG 2 /T(XEC1,XEC3) 382 XEC3 GEN /N(SS2),SF1,IM8,RF4 IF(P),INCP 383 XEC1 GEN /T(XEC2,SS2),TF2,GFB MIL15=>XEC2 384 MORG 2 /T(XEC2,SS2), FSEL(STEP) 385 SS2 GEN /N(SS3),SF1,IM8,RF4 IF(P),INCP 386 HSTT4 GEN /N(HSTT5),IM1,RF4 WAIT(M),INCP 387 SS3 GEN /N(IWAIT),1(N),GF5,IM6 DECODE, EN INTS, ETC FREE 388 EJEC 389 * SINGLE WORD ADDRESSING STORE INSTRUCTIONS. 390 * 391 DORTOP GEN /N(RESET),RF1,LB1,FFA,MF1,BB0 DOR->P FOR DEBUGGING FREE 392 MORG 8 REF BY FSEL(13-12), 00 NOT POSSIBLE. 393 STABX1 EQU * 394 DS1 GEN /N(DS2),IM1,AA0 WAIT(M), A->ALU FREE 395 DS2 GEN /N(ESTB),SF1,IM6,LB1,FF9,CF3,SH1, OS(ALU),DOR+1->ALU FREE 396 CBB0 397 ORG STABX1+2 398 STA1 GEN /T(SWA50,SS2MI),TF2,SF3,GFB,AB3, A->ALU,SET AA,INCS 399 CIM1,RF5,AA0 MIL15=>OVR(OF),->SWA50 400 ORG STA1+2 401 STB1 GEN /T(SWA50,SS2MI),TF2,SF3,GFB,AB3, B->ALU,SET AA,INCS 402 CIM1,RF5,AA1 MIL15=>OVR(OF),->SWA50 403 ORG STB1+2 404 STX1 GEN /T(SWA50,SS2MI),TF2,SF3,GFB,AB3, X->ALU,SET AA,INCS 405 CIM1,RF5,AA2 MIL15=>OVR(OF),->SWA50 406 MORG 8 REF BY FSEL(13-12), 00 NOT POSSIBLE. 407 STABX2 EQU * 408 ************************** D E C O D E R *************************** 409 ORG X'C0 DECODER REFERENCES 'SHFT' * 410 SHFT GMSK /N(SHFT1),GF2,LB2,RF7,FFA,MKFFE0 I(4-0)->DOR,INCP,SAMPL* 411 ************************************************************************ 41 ORG STABX2+2 413 STA2 GEN /N(SS2MI),AB3,AA0 A->ALU,SET AA 414 ORG STA2+2 415 STB2 GEN /N(SS2MI),AB3,AA1 B->ALU,SET AA 416 ORG STB2+2 417 STX2 GEN /N(SS2MI),AB3,AA2 X->ALU,SET AA 418 EJEC 419 * INTERRUPT SERVICE. 420 * THE STATES WHICH ENABLE THE DECODER ALSO ENABLE INTERRUPTS. IF 421 * A SINGLE WORD INSTRUCTION WAS AT THE INTERRUPT ADDRESS, THE NEXT 422 * WORD IS IN THE INSTRUCTION BUFFER BUT SHOULD NOT BE PROCESSED. 423 * PROCESSING OF THIS WORD IS INHIBITED BY TRANSFERRING TO INTBAS 424 * IF CINTF=1 AND IM=6. IF CINTF=0 AND NO INTERRUPT IS PENDING, THE 425 * INSTRUCTION IS DECODED. IF AN INTERRUPT IS PENDING AND CINTF=0 426 * OR IM NOT =6, CONTROL GOES TO INTBAS+7, WHERE THE INTERRUPT 427 * MICROPROGRAM IN I/OCS IS INITIATED. IF THE INTERRUPT WASN'T 428 * REALLY AN INTERRUPT, BUT INSTEAD WAS A DMA REQUEST, INTERRUPT 429 * PROCESSING MUST BE ABORTED AND THE PIPELINE RESTARTED. IF IT 430 * REALLY IS AN INTERRUPT, CONTROL GOES TO INTBAS+1 WHERE INTERRUPT 431 * SERVICING IS COMPLETED. 432 * 433 ILLOP1 GMSK /N(ILLOP2),SF1,IM4,LB3,RF3, ILLAD->DOR, IF(ALU) 434 C15(-1-ILLAD) 435 ILLOP2 GEN /N(INT4),SF1,IM4,LB1,FF9,CF3,WR1, DOR+1->RF, IF(ALU) 436 CSH1,BB0,AAF 437 INT2 GEN /N(INT3),SF1,IM4,LB1,FFA,MF1, IF(ALU),IOR->RF FREE 438 CWR1,BB2,AAF 439 INT3 GEN /N(INT4),SF1,IM4,CF3,WR1,AAF IF(ALU),RF+1->RF FREE 440 INT4 GEN GF5,IM7,FFA,MF1,WR1,BBF,AAE IBR->I,DECODE, FREE 441 * 1->CINTF,S2->S1 442 MORG 16 INTERRUPT HARDWARE USES INTBAS, INTBAS+1, INTBAS+7 443 INTBAS EQU * 444 MORG 2 /T(SWA50,SS2MI) 445 SS2MI GEN /N(SS3MI),SF1,IM8,RF4 (AA)->ALU,IF(P),INCP 446 ORG INTBAS+1 INTERRUPT SECOND TRY COMES HERE 447 INT1 GEN /N(INT2),IM2,RF1,FFF,AAE WAIT(IO),RE-1->P 448 SWA50 GEN /F(STA1-2),2(6),FSF,SF1,IME FSEL(13-12),OS(MIL) 449 ABORT GMSK /N(ABORT1),IM4,LB2,FFA,MK0 I->IBR 450 ABORT1 GMSK /N(SS2MI),IM4,LB2,FFA,MK0 I->IBR FREE 451 * HLT1 AND HLT7 ARE REFERENCED WITH INTERRUPTS ENABLED. 452 HLT1 GMSK /N(HLT2),1(3),AB2,IM4,LB3,FFA, START I/O AT X'E, 453 CMKEFC0 X'103F->ALU 454 HLT7 GEN /N(HLT1),LB1,FFA,MF1,WR1,24(IH) DOR->IH 455 ORG INTBAS+7 INTERRUPT FIRST TRY COMES HERE 456 IWAIT GEN 2(ABORT),1(7),MT1,GF4,MR1,IME, ENABLE INTERRUPTS, 457 CLA1,RF1,FFF,WR1,AAE DISABLE DEC, START IO, P-1->P,RE 458 ************************** D E C O D E R *************************** 459 ORG X'D8 DECODER REFERENCES NEXT 8 INSTRUCTIONS * 460 REG10 GEN /F(REG20),2(7),FS4,SF1,IM8,RF7,SH1 * 461 REG12 GEN /F(REG20),2(7),FS4,SF1,IM8,RF7,AA1 * 462 REG14 GEN /F(REG20),2(7),FS4,SF1,IM8,RF7,AA2 * 463 REG16 GEN /F(REG20),2(7),FS4,SF1,IM8,RF7,FFE,BB2,AA1,MF1 * 464 REG11 GEN /F(REG20),2(7),FS4,SF1,IM8,RF7 * 465 REG13 GEN /F(REG20),2(7),FS4,SF1,IM8,RF7,FFE,BB1,MF1 * 466 REG15 GEN /F(REG20),2(7),FS4,SF1,IM8,RF7,FFE,BB2,MF1 * 467 REG17 GEN /N(REG30),RF7,FFE,BB2,AA1,MF1 * 468 ************************************************************************ 46 EJEC 470 * JUMP TO SUBROUTINE, SOME OF BIT TEST, SOME OF SKIP IF REGISTER 471 * EQUAL, SOME OF TRANSFER SWITCHES TO A. 472 * 473 MORG 16 JSR40,JSR41 REF BY CND FSEL, FAIL TO JSR30 474 JSR40 GEN /N(SS3M),SF1,IM8,LB1,FFA,MF1,WR1, IF(P),DOR->X 475 CBB0,AA2 476 JSR41 GEN /N(SS3M),SF1,IM8,LB1,FFA,MF1,WR1, IF(P),DOR->B 477 CBB0,AA1 478 MORG 2 FAIL OF CND FSEL TO JSR40,JSR41 479 JSR30 GEN /N(JSR20),SF1,IMC,RF5 IF(MIL),INCSC 480 ************************** D E C O D E R *************************** 481 ORG X'E3 DECODER REFERENCES 'BT10' * 482 BT10 GEN /F(BT20),2(F),FS4,RF4,XF1 FSEL(3-0),INCP, * 483 * RESET CINTF * 484 ************************************************************************ 48 MORG 2 /T(BT51,BT52) 486 BT52 GEN /N(SS3M),SF1,IM8 IF(P) 487 BT51 GEN /N(BT50),SF1,IMC,RF5 IF(MIL),INCSC 488 JSR20 GEN /S(JSR40,JSR30),2(1),FS5,TF3,GFB, MIL=>JSR30,FSEL(1), FREE 489 CLB1,RF1,FF9,CF3,XF2,SH1,BB1 MIL+1->P,JUMP SIGNAL 490 ************************** D E C O D E R *************************** 491 ORG X'E7 DECODER REFERENCES 'JSR10' * 492 JSR10 GEN /N(JSR20),SF1,IMC,LA1,RF3,CF3,XF1 IF(MIL),P+1->DOR, * 493 * RESET CINTF * 494 ************************************************************************ 49 TSA1 GEN /N(TSA2),IM2 WAIT(IO) FREE 496 TSA2 GEN /N(SS3MI),SF1,IM8,LB1,RF4,FFA, IF(P),INCP,IOR->A FREE 497 CMF1,WR1,BB2,AA0 498 SRE81 GEN /N(SS2M),SF1,IM8,RF4,XF2 IF(P),INCP,J-SIG FREE 499 ************************** D E C O D E R *************************** 500 ORG X'EB DECODER REFERENCES 'SRE10' * 501 SRE10 GEN /F(SRE20),2(3),FS4,IM1,LA1,RF3, F.SEL(1-0),WAIT(M), * 502 CCF3,XF1 P+1->DOR,0->CINTF * 503 ************************************************************************ 50 EJEC 505 * INDEXED JUMP INSTRUCTION. 506 * NOTE THAT THIS VERSION OF IJMP DIFFERS FROM VARIAN'S VERSION 507 * SINCE BIT 2 MAY BE USED TO INDICATE PRE- OR POST-INDEXING, AS MAY 508 * BE DONE USING BIT 7 WITH OTHER EXTENDED ADDRESSING INSTRUCTIONS. 509 * ALSO, BITS 4&3 HAVE THE FOLLOWING MEANING: 510 * 00 - JUMP 511 * 10 - XEC 512 * 01 - JSR,X 513 * 11 - JSR,B 514 MORG 2 REF BY FSEL(2) 515 IJPRE GEN /F(IJRL),2(3),FS4,LB1,RF3, FSEL(1-0), 516 CFFA,MF1,WF1,BB1 MIL->DOR,MIL15->QS 517 IJPOST GEN /S(IJRL,IJIND),2(3),FS4,TF3,SF3, C.FSEL(1-0) (MIL15=0), 518 CGFB,IM5,LB1,RF3,FFA,MF1,BB1 C.OF(ALU) (MIL15=1), 519 * MIL->DOR 520 ************************** D E C O D E R *************************** 521 ORG X'EF DECODER REFERENCES 'IJMP' * 522 IJMP GEN /F(IJPRE),2(1),FS6,IM1,FF0,WF1, FSEL(2),0->QS, * 523 CXF1,SH1 0->CINTF * 524 ************************************************************************ 52 * IJRL,IJIX,IJIB,IJNI,IJIND1 ALL DO CND FSEL (6,4,3) BUT BIT 6 = 1. 526 MORG 16 REF BY CND FSEL(1-0) 527 IJRL GEN /S(IJXIT,IJIND),2(B),FS7,TF3,SF1, QS=>IJIND,P+DOR->DOR, 528 CGFF,IM4,LA1,LB1,RF3,FF9,XF2,BB0 IF(A),EN JUMP SIGNAL 529 IJIX GEN /S(IJXIT,IJIND),2(B),FS7,TF3,SF1, QS=>IJIND,X+DOR->DOR, 530 CGFF,IM4,LB1,RF3,FF9,XF2,BB0,AA2 IF(A),EN JUMP SIGNAL 531 IJIB GEN /S(IJXIT,IJIND),2(B),FS7,TF3,SF1, QS=>IJIND,B+DOR->DOR 532 CGFF,IM4,LB1,RF3,FF9,XF2,BB0,AA1 IF(A),EN JUMP SIGNAL 533 IJNI GEN /S(IJXIT,IJIND),2(B),FS7,TF3,SF1, QS=>IJIND,DOR->ALU, 534 CGFF,IM4,LB1,FFA,MF1,XF2,BB0 IF(A),EN JUMP SIGNAL 535 MORG 2 /T(IJPOST,IJIND1) 536 IJIND1 GEN /S(IJXIT,IJIND),2(B),FS7,TF3,SF1, MIL15=>IJIND,MIL->DOR, 537 CGFB,IM4,LB1,RF3,FFA,MF1,WF1,XF2, MIL15->QS,J-SIG,IF(A) 538 CBB1 539 Record 187 is not column binary 0074 0172 0067 0171 0100 0100 0116 0003 0124 0001 0021 0002 0077 0000 0152 0051 0075 0147 0156 0020 0156 0063 0123 0111 0063 0021 0051 0124 0054 0021 0062 0021 0046 0031 0043 0023 0000 0146 0041 0114 0057 0013 0115 0060 0100 0003 0124 0101 0022 0143 0163 0021 0042 0020 0103 0124 0063 0021 0100 0140 0051 0060 0003 0147 0156 0070 0156 0051 0070 0164 0114 0041 0114 0046 0014 0146 0114 0162 0114 0141