http://neil.franklin.ch/Projects/PDP-10/pdp10.lf - design of control, instr decoder, state machine random logic functions automatically grep-ed from pdp10.java, last generation 2001.12.29 control ClkE-Mem = ...|atestClkE-Mem|logClkE-Mem|... buffer MAM-Mux=PC = insMAM-Mux=PC buffer MAM-Mux=IR.X = insMAM-Mux=IR.X control MAM-Mux=MA = insMAM-Mux=MA|.. ..|atestMAM-Mux=MA|logMAM-Mux=MA|... control MAM-Mux=IR.AC = ...|atestMAM-Mux=IR.AC|logMAM-Mux=IR.AC|... control PC-Mux=PC+1 = insPC-Mux=PC+1|..|atestPC-Mux=PC+1|... control PCcarry-in = PC-Mux=PC+1 control ClkE-PC = insClkE-PC|..|atestClkE-PC|... buffer IR-MuxselIdx = insindex control IR-MuxselInd = (~insindex)&IR.I control ClkE-IR+MA = insget|insexec&(insindex|IR.I) control subpart insMAM-Mux=PC = insget control subpart insMAM-Mux=IR.X = insexec&insindex control subpart insMAM-Mux=MA = insexec&(~insindex)&IR.I control subpart insPC-Mux=PC+1 = insget control subpart insClkE-PC = insget state insget = ...|atestinsget|loginsget|... detect insacc = IR.AC.0|IR.AC.1|IR.AC.2|IR.AC.3 detect insindex = IR.X.0|IR.X.1|IR.X.2|IR.X.3 state insexec = insget|insexec&(insindex|IR.I) detect insdecode = insexec&(~insindex)&(~IR.I) control ClkE-AR = ...|atestClkE-AR|logClkE-AR|... control Imm-Mux=E = ...|atestImm-Mux=E|logImm-Mux=E|... buffer MDM-Muxsel1 = IR.OP.2 buffer MDM-Muxsel2 = IR.OP.1 buffer MDM-Muxsel4 = IR.OP.0 buffer atest-Funct1 = IR.OP.4 buffer atest-Funct0 = IR.OP.3 control atest-carry = ~atest-Funct1 control ClkE-atestAR = atestskip&insacc|atestasoj|atestasos control subpart atestClkE-Mem = atestwracc|atestwrmem control subpart atestMAM-Mux=MA = atestcam|atestskip|atestasos|atestwrmem control subpart atestMAM-Mux=IR.AC = atestcai|atestjump|atestasoj|atestcam2|atestwracc control subpart atestPC-Mux=PC+1 = atestcai|atestskip|atestasos|atestcam2 control subpart atestClkE-PC = atestPC-Mux=PC+1|atestjump|atestasoj control test atestcond = negative&IR.OP.8|zero&IR.OP.7 control test atestdoit = (arithcond^IR.OP.6)&atestClkE-PC control subpart atestClkE-AR = atestcam control subpart atestImm-Mux=E = atestcai decode atestinstr = insdecode&(~IR.OP.0)&IR.OP.1&IR.OP.2 decode atestcai = atestinstr&(~IR.OP.3)&(~IR.OP.4)&(~IR.OP.5) decode atestcam = atestinstr&(~IR.OP.3)&(~IR.OP.4)&IR.OP.5 state atestcam2 = atestcam decode atestjump = atestinstr&(~IR.OP.3)&IR.OP.4&(~IR.OP.5) decode atestskip = atestinstr&(~IR.OP.3)&IR.OP.4&IR.OP.5 decode atestasoj = atestinstr&IR.OP.3&(~IR.OP.5) decode atestasos = atestinstr&IR.OP.3&IR.OP.5 state atestwrmem = atestasos state atestwracc = atestskip&insacc|atestasoj|atestwrmem&insacc state subpart atestinsget = atestcai|atestcam2|atestjump| atestskip&(~insacc)|atestwracc|atestwrmem&(~insacc) buffer log-Funct3 = IR.OP.6 buffer log-Funct2 = IR.OP.5 buffer log-Funct1 = IR.OP.4 buffer log-Funct0 = IR.OP.3 control ClkE-logAR = lognon2|logimmed control subpart logClkE-Mem = logstoac|logstomem control subpart logMAM-Mux=MA = lognonimm|logstomem control subpart logMAM-Mux=IR.AC = lognon2|logimmed|logstoac control subpart logClkE-AR = lognonimm control subpart logImm-Mux=E = logimmed decode loginstr = insdecode&IR.OP.0&(~IR.OP.1)&(~IR.OP.2) decode logimmed = loginstr&(~IR.OP.7)&IR.OP.8 decode lognonimm = loginstr&(~((~IR.OP.7)&IR.OP.8)) state lognon2 = lognonimm state logstoac = logimmed|lognon2&(~(IR.OP.7&(~IR.OP.8))) state logstomem = lognon2&IR.OP.7&(~IR.OP.8)|logstoac&IR.OP.7&IR.OP.8 state subpart loginsget = logstoac&(~(IR.OP.7&IR.OP.8))|logstomem