diff --git a/modules/pdp10/lib/cpuops.js b/modules/pdp10/lib/cpuops.js new file mode 100644 index 000000000..0a58ea825 --- /dev/null +++ b/modules/pdp10/lib/cpuops.js @@ -0,0 +1,3683 @@ +/** + * @fileoverview Implements PDP-10 opcode handlers. + * @author Jeff Parsons + * @copyright © Jeff Parsons 2012-2017 + * + * This file is part of PCjs, a computer emulation software project at . + * + * PCjs is free software: you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * PCjs is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without + * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with PCjs. If not, + * see . + * + * You are required to include the above copyright notice in every modified copy of this work + * and to display that copyright notice when the software starts running; see COPYRIGHT in + * . + * + * Some PCjs files also attempt to load external resource files, such as character-image files, + * ROM files, and disk image files. Those external resource files are not considered part of PCjs + * for purposes of the GNU General Public License, and the author does not claim any copyright + * as to their contents. + */ + +"use strict"; + +if (NODE) { + var PDP10 = require("./defines"); +} + +/** + * opUUO(000000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opUUO = function(opCode) +{ +}; + +/** + * opUFA(130000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opUFA = function(opCode) +{ +}; + +/** + * opDFN(131000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opDFN = function(opCode) +{ +}; + +/** + * opFSC(132000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opFSC = function(opCode) +{ +}; + +/** + * opIBP(133000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opIBP = function(opCode) +{ +}; + +/** + * opILDB(134000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opILDB = function(opCode) +{ +}; + +/** + * opLDB(135000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opLDB = function(opCode) +{ +}; + +/** + * opIDPB(136000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opIDPB = function(opCode) +{ +}; + +/** + * opDPB(137000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opDPB = function(opCode) +{ +}; + +/** + * opFAD(140000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opFAD = function(opCode) +{ +}; + +/** + * opFADI(141000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opFADI = function(opCode) +{ +}; + +/** + * opFADM(142000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opFADM = function(opCode) +{ +}; + +/** + * opFADB(143000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opFADB = function(opCode) +{ +}; + +/** + * opFADR(144000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opFADR = function(opCode) +{ +}; + +/** + * opFADRI(145000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opFADRI = function(opCode) +{ +}; + +/** + * opFADRM(146000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opFADRM = function(opCode) +{ +}; + +/** + * opFADRB(147000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opFADRB = function(opCode) +{ +}; + +/** + * opFSB(150000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opFSB = function(opCode) +{ +}; + +/** + * opFSBI(151000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opFSBI = function(opCode) +{ +}; + +/** + * opFSBM(152000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opFSBM = function(opCode) +{ +}; + +/** + * opFSBB(153000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opFSBB = function(opCode) +{ +}; + +/** + * opFSBR(154000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opFSBR = function(opCode) +{ +}; + +/** + * opFSBRI(155000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opFSBRI = function(opCode) +{ +}; + +/** + * opFSBRM(156000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opFSBRM = function(opCode) +{ +}; + +/** + * opFSBRB(157000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opFSBRB = function(opCode) +{ +}; + +/** + * opFMP(160000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opFMP = function(opCode) +{ +}; + +/** + * opFMPI(161000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opFMPI = function(opCode) +{ +}; + +/** + * opFMPM(162000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opFMPM = function(opCode) +{ +}; + +/** + * opFMPB(163000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opFMPB = function(opCode) +{ +}; + +/** + * opFMPR(164000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opFMPR = function(opCode) +{ +}; + +/** + * opFMPRI(165000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opFMPRI = function(opCode) +{ +}; + +/** + * opFMPRM(166000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opFMPRM = function(opCode) +{ +}; + +/** + * opFMPRB(167000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opFMPRB = function(opCode) +{ +}; + +/** + * opFDV(170000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opFDV = function(opCode) +{ +}; + +/** + * opFDVI(171000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opFDVI = function(opCode) +{ +}; + +/** + * opFDVM(172000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opFDVM = function(opCode) +{ +}; + +/** + * opFDVB(173000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opFDVB = function(opCode) +{ +}; + +/** + * opFDVR(174000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opFDVR = function(opCode) +{ +}; + +/** + * opFDVRI(175000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opFDVRI = function(opCode) +{ +}; + +/** + * opFDVRM(176000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opFDVRM = function(opCode) +{ +}; + +/** + * opFDVRB(177000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opFDVRB = function(opCode) +{ +}; + +/** + * opMOV(200000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opMOV = function(opCode) +{ +}; + +/** + * opMOVI(201000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opMOVI = function(opCode) +{ +}; + +/** + * opMOVM(200000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opMOVM = function(opCode) +{ +}; + +/** + * opMOVS(200000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opMOVS = function(opCode) +{ +}; + +/** + * opMOVSI(205000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opMOVSI = function(opCode) +{ +}; + +/** + * opMOVSM(206000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opMOVSM = function(opCode) +{ +}; + +/** + * opMOVSS(207000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opMOVSS = function(opCode) +{ +}; + +/** + * opMOVN(210000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opMOVN = function(opCode) +{ +}; + +/** + * opMOVNI(211000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opMOVNI = function(opCode) +{ +}; + +/** + * opMOVNM(212000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opMOVNM = function(opCode) +{ +}; + +/** + * opMOVNS(213000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opMOVNS = function(opCode) +{ +}; + +/** + * opMOVMI(215000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opMOVMI = function(opCode) +{ +}; + +/** + * opMOVMM(216000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opMOVMM = function(opCode) +{ +}; + +/** + * opMOVMS(217000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opMOVMS = function(opCode) +{ +}; + +/** + * opIMUL(220000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opIMUL = function(opCode) +{ +}; + +/** + * opIMULI(221000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opIMULI = function(opCode) +{ +}; + +/** + * opIMULM(222000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opIMULM = function(opCode) +{ +}; + +/** + * opIMULB(223000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opIMULB = function(opCode) +{ +}; + +/** + * opMUL(224000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opMUL = function(opCode) +{ +}; + +/** + * opMULI(225000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opMULI = function(opCode) +{ +}; + +/** + * opMULM(226000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opMULM = function(opCode) +{ +}; + +/** + * opMULB(227000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opMULB = function(opCode) +{ +}; + +/** + * opIDIV(230000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opIDIV = function(opCode) +{ +}; + +/** + * opIDIVI(231000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opIDIVI = function(opCode) +{ +}; + +/** + * opIDIVM(232000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opIDIVM = function(opCode) +{ +}; + +/** + * opIDIVB(233000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opIDIVB = function(opCode) +{ +}; + +/** + * opDIV(234000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opDIV = function(opCode) +{ +}; + +/** + * opDIVI(235000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opDIVI = function(opCode) +{ +}; + +/** + * opDIVM(236000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opDIVM = function(opCode) +{ +}; + +/** + * opDIVB(237000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opDIVB = function(opCode) +{ +}; + +/** + * opASH(240000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opASH = function(opCode) +{ +}; + +/** + * opROT(241000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opROT = function(opCode) +{ +}; + +/** + * opLSH(242000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opLSH = function(opCode) +{ +}; + +/** + * opJFFO(243000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opJFFO = function(opCode) +{ +}; + +/** + * opASHC(244000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opASHC = function(opCode) +{ +}; + +/** + * opROTC(245000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opROTC = function(opCode) +{ +}; + +/** + * opLSHC(246000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opLSHC = function(opCode) +{ +}; + +/** + * opEXCH(250000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opEXCH = function(opCode) +{ +}; + +/** + * opBLT(251000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opBLT = function(opCode) +{ +}; + +/** + * opAOBJP(252000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opAOBJP = function(opCode) +{ +}; + +/** + * opAOBJN(253000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opAOBJN = function(opCode) +{ +}; + +/** + * opJRST(254000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opJRST = function(opCode) +{ +}; + +/** + * opJFCL(255000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opJFCL = function(opCode) +{ +}; + +/** + * opXCT(256000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opXCT = function(opCode) +{ +}; + +/** + * opPUSHJ(260000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opPUSHJ = function(opCode) +{ +}; + +/** + * opPUSH(261000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opPUSH = function(opCode) +{ +}; + +/** + * opPOP(262000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opPOP = function(opCode) +{ +}; + +/** + * opPOPJ(263000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opPOPJ = function(opCode) +{ +}; + +/** + * opJSR(264000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opJSR = function(opCode) +{ +}; + +/** + * opJSP(265000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opJSP = function(opCode) +{ +}; + +/** + * opJSA(266000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opJSA = function(opCode) +{ +}; + +/** + * opJRA(267000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opJRA = function(opCode) +{ +}; + +/** + * opADD(270000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opADD = function(opCode) +{ +}; + +/** + * opADDI(271000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opADDI = function(opCode) +{ +}; + +/** + * opADDM(272000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opADDM = function(opCode) +{ +}; + +/** + * opADDB(273000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opADDB = function(opCode) +{ +}; + +/** + * opSUB(274000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSUB = function(opCode) +{ +}; + +/** + * opSUBI(275000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSUBI = function(opCode) +{ +}; + +/** + * opSUBM(276000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSUBM = function(opCode) +{ +}; + +/** + * opSUBB(277000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSUBB = function(opCode) +{ +}; + +/** + * opCAI(300000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opCAI = function(opCode) +{ +}; + +/** + * opCAIL(301000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opCAIL = function(opCode) +{ +}; + +/** + * opCAIE(302000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opCAIE = function(opCode) +{ +}; + +/** + * opCAILE(303000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opCAILE = function(opCode) +{ +}; + +/** + * opCAIA(304000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opCAIA = function(opCode) +{ +}; + +/** + * opCAIGE(305000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opCAIGE = function(opCode) +{ +}; + +/** + * opCAIN(306000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opCAIN = function(opCode) +{ +}; + +/** + * opCAIG(307000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opCAIG = function(opCode) +{ +}; + +/** + * opCA(310000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opCA = function(opCode) +{ +}; + +/** + * opCAL(311000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opCAL = function(opCode) +{ +}; + +/** + * opCAE(312000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opCAE = function(opCode) +{ +}; + +/** + * opCALE(313000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opCALE = function(opCode) +{ +}; + +/** + * opCAA(314000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opCAA = function(opCode) +{ +}; + +/** + * opCAGE(315000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opCAGE = function(opCode) +{ +}; + +/** + * opCAN(316000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opCAN = function(opCode) +{ +}; + +/** + * opCAG(317000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opCAG = function(opCode) +{ +}; + +/** + * opJUMP(320000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opJUMP = function(opCode) +{ +}; + +/** + * opJUMPL(321000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opJUMPL = function(opCode) +{ +}; + +/** + * opJUMPE(322000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opJUMPE = function(opCode) +{ +}; + +/** + * opJUMPLE(323000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opJUMPLE = function(opCode) +{ +}; + +/** + * opJUMPA(324000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opJUMPA = function(opCode) +{ +}; + +/** + * opJUMPGE(325000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opJUMPGE = function(opCode) +{ +}; + +/** + * opJUMPN(326000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opJUMPN = function(opCode) +{ +}; + +/** + * opJUMPG(327000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opJUMPG = function(opCode) +{ +}; + +/** + * opSKIP(330000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSKIP = function(opCode) +{ +}; + +/** + * opSKIPL(331000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSKIPL = function(opCode) +{ +}; + +/** + * opSKIPE(332000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSKIPE = function(opCode) +{ +}; + +/** + * opSKIPLE(333000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSKIPLE = function(opCode) +{ +}; + +/** + * opSKIPA(334000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSKIPA = function(opCode) +{ +}; + +/** + * opSKIPGE(335000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSKIPGE = function(opCode) +{ +}; + +/** + * opSKIPN(336000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSKIPN = function(opCode) +{ +}; + +/** + * opSKIPG(337000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSKIPG = function(opCode) +{ +}; + +/** + * opAOJ(340000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opAOJ = function(opCode) +{ +}; + +/** + * opAOJL(341000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opAOJL = function(opCode) +{ +}; + +/** + * opAOJE(342000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opAOJE = function(opCode) +{ +}; + +/** + * opAOJLE(343000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opAOJLE = function(opCode) +{ +}; + +/** + * opAOJA(344000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opAOJA = function(opCode) +{ +}; + +/** + * opAOJGE(345000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opAOJGE = function(opCode) +{ +}; + +/** + * opAOJN(346000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opAOJN = function(opCode) +{ +}; + +/** + * opAOJG(347000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opAOJG = function(opCode) +{ +}; + +/** + * opAOS(350000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opAOS = function(opCode) +{ +}; + +/** + * opAOSL(351000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opAOSL = function(opCode) +{ +}; + +/** + * opAOSE(352000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opAOSE = function(opCode) +{ +}; + +/** + * opAOSLE(353000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opAOSLE = function(opCode) +{ +}; + +/** + * opAOSA(354000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opAOSA = function(opCode) +{ +}; + +/** + * opAOSGE(355000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opAOSGE = function(opCode) +{ +}; + +/** + * opAOSN(356000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opAOSN = function(opCode) +{ +}; + +/** + * opAOSG(357000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opAOSG = function(opCode) +{ +}; + +/** + * opSOJ(360000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSOJ = function(opCode) +{ +}; + +/** + * opSOJL(361000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSOJL = function(opCode) +{ +}; + +/** + * opSOJE(362000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSOJE = function(opCode) +{ +}; + +/** + * opSOJLE(363000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSOJLE = function(opCode) +{ +}; + +/** + * opSOJA(364000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSOJA = function(opCode) +{ +}; + +/** + * opSOJGE(365000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSOJGE = function(opCode) +{ +}; + +/** + * opSOJN(366000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSOJN = function(opCode) +{ +}; + +/** + * opSOJG(367000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSOJG = function(opCode) +{ +}; + +/** + * opSOS(370000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSOS = function(opCode) +{ +}; + +/** + * opSOSL(371000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSOSL = function(opCode) +{ +}; + +/** + * opSOSE(372000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSOSE = function(opCode) +{ +}; + +/** + * opSOSLE(373000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSOSLE = function(opCode) +{ +}; + +/** + * opSOSA(374000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSOSA = function(opCode) +{ +}; + +/** + * opSOSGE(375000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSOSGE = function(opCode) +{ +}; + +/** + * opSOSN(376000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSOSN = function(opCode) +{ +}; + +/** + * opSOSG(377000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSOSG = function(opCode) +{ +}; + +/** + * opSETZ(400000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSETZ = function(opCode) +{ +}; + +/** + * opSETZI(401000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSETZI = function(opCode) +{ +}; + +/** + * opSETZM(402000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSETZM = function(opCode) +{ +}; + +/** + * opSETZB(403000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSETZB = function(opCode) +{ +}; + +/** + * opAND(404000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opAND = function(opCode) +{ +}; + +/** + * opANDI(405000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opANDI = function(opCode) +{ +}; + +/** + * opANDM(406000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opANDM = function(opCode) +{ +}; + +/** + * opANDB(407000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opANDB = function(opCode) +{ +}; + +/** + * opANDCA(410000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opANDCA = function(opCode) +{ +}; + +/** + * opANDCAI(411000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opANDCAI = function(opCode) +{ +}; + +/** + * opANDCAM(412000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opANDCAM = function(opCode) +{ +}; + +/** + * opANDCAB(413000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opANDCAB = function(opCode) +{ +}; + +/** + * opSETM(414000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSETM = function(opCode) +{ +}; + +/** + * opSETMI(415000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSETMI = function(opCode) +{ +}; + +/** + * opSETMM(416000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSETMM = function(opCode) +{ +}; + +/** + * opSETMB(417000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSETMB = function(opCode) +{ +}; + +/** + * opANDCM(420000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opANDCM = function(opCode) +{ +}; + +/** + * opANDCMI(421000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opANDCMI = function(opCode) +{ +}; + +/** + * opANDCMM(422000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opANDCMM = function(opCode) +{ +}; + +/** + * opANDCMB(423000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opANDCMB = function(opCode) +{ +}; + +/** + * opSETA(424000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSETA = function(opCode) +{ +}; + +/** + * opSETAI(425000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSETAI = function(opCode) +{ +}; + +/** + * opSETAM(426000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSETAM = function(opCode) +{ +}; + +/** + * opSETAB(427000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSETAB = function(opCode) +{ +}; + +/** + * opXOR(430000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opXOR = function(opCode) +{ +}; + +/** + * opXORI(431000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opXORI = function(opCode) +{ +}; + +/** + * opXORM(432000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opXORM = function(opCode) +{ +}; + +/** + * opXORB(433000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opXORB = function(opCode) +{ +}; + +/** + * opIOR(434000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opIOR = function(opCode) +{ +}; + +/** + * opIORI(435000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opIORI = function(opCode) +{ +}; + +/** + * opIORM(436000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opIORM = function(opCode) +{ +}; + +/** + * opIORB(437000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opIORB = function(opCode) +{ +}; + +/** + * opANDCB(440000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opANDCB = function(opCode) +{ +}; + +/** + * opANDCBI(441000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opANDCBI = function(opCode) +{ +}; + +/** + * opANDCBM(442000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opANDCBM = function(opCode) +{ +}; + +/** + * opANDCBB(443000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opANDCBB = function(opCode) +{ +}; + +/** + * opEQV(444000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opEQV = function(opCode) +{ +}; + +/** + * opEQVI(445000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opEQVI = function(opCode) +{ +}; + +/** + * opEQVM(446000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opEQVM = function(opCode) +{ +}; + +/** + * opEQVB(447000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opEQVB = function(opCode) +{ +}; + +/** + * opSETCA(450000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSETCA = function(opCode) +{ +}; + +/** + * opSETCAI(451000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSETCAI = function(opCode) +{ +}; + +/** + * opSETCAM(452000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSETCAM = function(opCode) +{ +}; + +/** + * opSETCAB(453000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSETCAB = function(opCode) +{ +}; + +/** + * opORCA(454000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opORCA = function(opCode) +{ +}; + +/** + * opORCAI(455000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opORCAI = function(opCode) +{ +}; + +/** + * opORCAM(456000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opORCAM = function(opCode) +{ +}; + +/** + * opORCAB(457000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opORCAB = function(opCode) +{ +}; + +/** + * opSETCM(460000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSETCM = function(opCode) +{ +}; + +/** + * opSETCMI(461000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSETCMI = function(opCode) +{ +}; + +/** + * opSETCMM(462000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSETCMM = function(opCode) +{ +}; + +/** + * opSETCMB(463000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSETCMB = function(opCode) +{ +}; + +/** + * opORCM(464000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opORCM = function(opCode) +{ +}; + +/** + * opORCMI(465000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opORCMI = function(opCode) +{ +}; + +/** + * opORCMM(466000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opORCMM = function(opCode) +{ +}; + +/** + * opORCMB(467000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opORCMB = function(opCode) +{ +}; + +/** + * opORCB(470000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opORCB = function(opCode) +{ +}; + +/** + * opORCBI(471000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opORCBI = function(opCode) +{ +}; + +/** + * opORCBM(472000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opORCBM = function(opCode) +{ +}; + +/** + * opORCBB(473000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opORCBB = function(opCode) +{ +}; + +/** + * opSETO(474000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSETO = function(opCode) +{ +}; + +/** + * opSETOI(475000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSETOI = function(opCode) +{ +}; + +/** + * opSETOM(476000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSETOM = function(opCode) +{ +}; + +/** + * opSETOB(477000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opSETOB = function(opCode) +{ +}; + +/** + * opHLL(500000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHLL = function(opCode) +{ +}; + +/** + * opHLLI(501000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHLLI = function(opCode) +{ +}; + +/** + * opHLLM(502000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHLLM = function(opCode) +{ +}; + +/** + * opHLLS(503000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHLLS = function(opCode) +{ +}; + +/** + * opHRL(504000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHRL = function(opCode) +{ +}; + +/** + * opHRLI(505000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHRLI = function(opCode) +{ +}; + +/** + * opHRLM(506000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHRLM = function(opCode) +{ +}; + +/** + * opHRLS(507000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHRLS = function(opCode) +{ +}; + +/** + * opHLLZ(510000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHLLZ = function(opCode) +{ +}; + +/** + * opHLLZI(511000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHLLZI = function(opCode) +{ +}; + +/** + * opHLLZM(512000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHLLZM = function(opCode) +{ +}; + +/** + * opHLLZS(513000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHLLZS = function(opCode) +{ +}; + +/** + * opHRLZ(514000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHRLZ = function(opCode) +{ +}; + +/** + * opHRLZI(515000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHRLZI = function(opCode) +{ +}; + +/** + * opHRLZM(516000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHRLZM = function(opCode) +{ +}; + +/** + * opHRLZS(517000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHRLZS = function(opCode) +{ +}; + +/** + * opHLLO(520000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHLLO = function(opCode) +{ +}; + +/** + * opHLLOI(521000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHLLOI = function(opCode) +{ +}; + +/** + * opHLLOM(522000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHLLOM = function(opCode) +{ +}; + +/** + * opHLLOS(523000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHLLOS = function(opCode) +{ +}; + +/** + * opHRLO(524000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHRLO = function(opCode) +{ +}; + +/** + * opHRLOI(525000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHRLOI = function(opCode) +{ +}; + +/** + * opHRLOM(526000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHRLOM = function(opCode) +{ +}; + +/** + * opHRLOS(527000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHRLOS = function(opCode) +{ +}; + +/** + * opHLLE(530000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHLLE = function(opCode) +{ +}; + +/** + * opHLLEI(531000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHLLEI = function(opCode) +{ +}; + +/** + * opHLLEM(532000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHLLEM = function(opCode) +{ +}; + +/** + * opHLLES(533000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHLLES = function(opCode) +{ +}; + +/** + * opHRLE(534000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHRLE = function(opCode) +{ +}; + +/** + * opHRLEI(535000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHRLEI = function(opCode) +{ +}; + +/** + * opHRLEM(536000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHRLEM = function(opCode) +{ +}; + +/** + * opHRLES(537000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHRLES = function(opCode) +{ +}; + +/** + * opHRR(540000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHRR = function(opCode) +{ +}; + +/** + * opHRRI(541000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHRRI = function(opCode) +{ +}; + +/** + * opHRRM(542000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHRRM = function(opCode) +{ +}; + +/** + * opHRRS(543000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHRRS = function(opCode) +{ +}; + +/** + * opHLR(544000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHLR = function(opCode) +{ +}; + +/** + * opHLRI(545000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHLRI = function(opCode) +{ +}; + +/** + * opHLRM(546000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHLRM = function(opCode) +{ +}; + +/** + * opHLRS(547000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHLRS = function(opCode) +{ +}; + +/** + * opHRRZ(550000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHRRZ = function(opCode) +{ +}; + +/** + * opHRRZI(551000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHRRZI = function(opCode) +{ +}; + +/** + * opHRRZM(552000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHRRZM = function(opCode) +{ +}; + +/** + * opHRRZS(553000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHRRZS = function(opCode) +{ +}; + +/** + * opHLRZ(554000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHLRZ = function(opCode) +{ +}; + +/** + * opHLRZI(555000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHLRZI = function(opCode) +{ +}; + +/** + * opHLRZM(556000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHLRZM = function(opCode) +{ +}; + +/** + * opHLRZS(557000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHLRZS = function(opCode) +{ +}; + +/** + * opHRRO(560000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHRRO = function(opCode) +{ +}; + +/** + * opHRROI(561000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHRROI = function(opCode) +{ +}; + +/** + * opHRROM(562000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHRROM = function(opCode) +{ +}; + +/** + * opHRROS(563000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHRROS = function(opCode) +{ +}; + +/** + * opHLRO(564000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHLRO = function(opCode) +{ +}; + +/** + * opHLROI(565000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHLROI = function(opCode) +{ +}; + +/** + * opHLROM(566000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHLROM = function(opCode) +{ +}; + +/** + * opHLROS(567000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHLROS = function(opCode) +{ +}; + +/** + * opHRRE(570000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHRRE = function(opCode) +{ +}; + +/** + * opHRREI(571000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHRREI = function(opCode) +{ +}; + +/** + * opHRREM(572000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHRREM = function(opCode) +{ +}; + +/** + * opHRRES(573000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHRRES = function(opCode) +{ +}; + +/** + * opHLRE(574000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHLRE = function(opCode) +{ +}; + +/** + * opHLREI(575000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHLREI = function(opCode) +{ +}; + +/** + * opHLREM(576000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHLREM = function(opCode) +{ +}; + +/** + * opHLRES(577000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opHLRES = function(opCode) +{ +}; + +/** + * opTRN(600000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTRN = function(opCode) +{ +}; + +/** + * opTLN(601000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTLN = function(opCode) +{ +}; + +/** + * opTRNE(602000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTRNE = function(opCode) +{ +}; + +/** + * opTLNE(603000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTLNE = function(opCode) +{ +}; + +/** + * opTRNA(604000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTRNA = function(opCode) +{ +}; + +/** + * opTLNA(605000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTLNA = function(opCode) +{ +}; + +/** + * opTRNN(606000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTRNN = function(opCode) +{ +}; + +/** + * opTLNN(607000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTLNN = function(opCode) +{ +}; + +/** + * opTDN(610000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTDN = function(opCode) +{ +}; + +/** + * opTSN(611000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTSN = function(opCode) +{ +}; + +/** + * opTDNE(612000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTDNE = function(opCode) +{ +}; + +/** + * opTSNE(613000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTSNE = function(opCode) +{ +}; + +/** + * opTDNA(614000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTDNA = function(opCode) +{ +}; + +/** + * opTSNA(615000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTSNA = function(opCode) +{ +}; + +/** + * opTDNN(616000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTDNN = function(opCode) +{ +}; + +/** + * opTSNN(617000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTSNN = function(opCode) +{ +}; + +/** + * opTRZ(620000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTRZ = function(opCode) +{ +}; + +/** + * opTLZ(621000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTLZ = function(opCode) +{ +}; + +/** + * opTRZE(622000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTRZE = function(opCode) +{ +}; + +/** + * opTLZE(623000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTLZE = function(opCode) +{ +}; + +/** + * opTRZA(624000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTRZA = function(opCode) +{ +}; + +/** + * opTLZA(625000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTLZA = function(opCode) +{ +}; + +/** + * opTRZN(626000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTRZN = function(opCode) +{ +}; + +/** + * opTLZN(627000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTLZN = function(opCode) +{ +}; + +/** + * opTDZ(630000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTDZ = function(opCode) +{ +}; + +/** + * opTSZ(631000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTSZ = function(opCode) +{ +}; + +/** + * opTDZE(632000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTDZE = function(opCode) +{ +}; + +/** + * opTSZE(633000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTSZE = function(opCode) +{ +}; + +/** + * opTDZA(634000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTDZA = function(opCode) +{ +}; + +/** + * opTSZA(635000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTSZA = function(opCode) +{ +}; + +/** + * opTDZN(636000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTDZN = function(opCode) +{ +}; + +/** + * opTSZN(637000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTSZN = function(opCode) +{ +}; + +/** + * opTRC(640000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTRC = function(opCode) +{ +}; + +/** + * opTLC(641000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTLC = function(opCode) +{ +}; + +/** + * opTRCE(642000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTRCE = function(opCode) +{ +}; + +/** + * opTLCE(643000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTLCE = function(opCode) +{ +}; + +/** + * opTRCA(644000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTRCA = function(opCode) +{ +}; + +/** + * opTLCA(645000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTLCA = function(opCode) +{ +}; + +/** + * opTRCN(646000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTRCN = function(opCode) +{ +}; + +/** + * opTLCN(647000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTLCN = function(opCode) +{ +}; + +/** + * opTDC(650000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTDC = function(opCode) +{ +}; + +/** + * opTSC(651000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTSC = function(opCode) +{ +}; + +/** + * opTDCE(652000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTDCE = function(opCode) +{ +}; + +/** + * opTSCE(653000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTSCE = function(opCode) +{ +}; + +/** + * opTDCA(654000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTDCA = function(opCode) +{ +}; + +/** + * opTSCA(655000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTSCA = function(opCode) +{ +}; + +/** + * opTDCN(656000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTDCN = function(opCode) +{ +}; + +/** + * opTSCN(657000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTSCN = function(opCode) +{ +}; + +/** + * opTRO(660000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTRO = function(opCode) +{ +}; + +/** + * opTLO(661000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTLO = function(opCode) +{ +}; + +/** + * opTROE(662000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTROE = function(opCode) +{ +}; + +/** + * opTLOE(663000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTLOE = function(opCode) +{ +}; + +/** + * opTROA(664000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTROA = function(opCode) +{ +}; + +/** + * opTLOA(665000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTLOA = function(opCode) +{ +}; + +/** + * opTRON(666000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTRON = function(opCode) +{ +}; + +/** + * opTLON(667000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTLON = function(opCode) +{ +}; + +/** + * opTDO(670000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTDO = function(opCode) +{ +}; + +/** + * opTSO(671000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTSO = function(opCode) +{ +}; + +/** + * opTDOE(672000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTDOE = function(opCode) +{ +}; + +/** + * opTSOE(673000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTSOE = function(opCode) +{ +}; + +/** + * opTDOA(674000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTDOA = function(opCode) +{ +}; + +/** + * opTSOA(675000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTSOA = function(opCode) +{ +}; + +/** + * opTDON(676000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTDON = function(opCode) +{ +}; + +/** + * opTSON(677000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opTSON = function(opCode) +{ +}; + +/** + * opBLKI(700000 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opBLKI = function(opCode) +{ +}; + +/** + * opDATAI(700040 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opDATAI = function(opCode) +{ +}; + +/** + * opBLKO(700100 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opBLKO = function(opCode) +{ +}; + +/** + * opDATAO(700140 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opDATAO = function(opCode) +{ +}; + +/** + * opCONO(700200 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opCONO = function(opCode) +{ +}; + +/** + * opCONI(700240 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opCONI = function(opCode) +{ +}; + +/** + * opCONSZ(700300 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opCONSZ = function(opCode) +{ +}; + +/** + * opCONSO(700340 000000) + * + * @this {CPUStatePDP10} + * @param {number} opCode + */ +PDP10.opCONSO = function(opCode) +{ +}; diff --git a/modules/pdp10/lib/debugger.js b/modules/pdp10/lib/debugger.js index c4d2ba277..aba9f472a 100644 --- a/modules/pdp10/lib/debugger.js +++ b/modules/pdp10/lib/debugger.js @@ -1365,23 +1365,16 @@ class DebuggerPDP10 extends Debugger { } /** - * getInstruction(dbgAddr, sComment, nSequence) - * - * Get the next instruction, by decoding the opcode and any operands. + * findInstruction(opCode, fOperands) * * @this {DebuggerPDP10} - * @param {DbgAddrPDP10} dbgAddr - * @param {string} [sComment] is an associated comment - * @param {number|null} [nSequence] is an associated sequence number, undefined if none - * @return {string} (and dbgAddr is updated to the next instruction) + * @param {number} opCode + * @param {boolean} [fOperands] (optional; default is true) + * @return {string} */ - getInstruction(dbgAddr, sComment, nSequence) + findInstruction(opCode, fOperands = true) { - var opNames = DebuggerPDP10.OPNAMES; - var dbgAddrOp = this.newAddr(dbgAddr.addr); - var opNum, opMask, aModes, iMode = 0; - var opCode = this.getWord(dbgAddr, 1); var op = (opCode / PDP10.OPCODE.OPSHIFT)|0; for (var mask in DebuggerPDP10.OPTABLE) { @@ -1392,7 +1385,7 @@ class DebuggerPDP10 extends Debugger { /* * When we extracted op from opCode using OPSHIFT, we included 6 additional bits * to help distinguish OPIO instructions from non-OPIO instructions. But for the - * following tests, we don't need those bits, so we get rid of them now. + * following tests, we don't need those bits, so we get rid of them now. */ op >>= 6; switch(opMask) { @@ -1413,25 +1406,48 @@ class DebuggerPDP10 extends Debugger { } } - var sOperands = ""; var sMode = aModes && aModes[iMode] || ""; if (sMode == "S" && opNum > DebuggerPDP10.OPS.MOVM) sMode = "B"; + var sOperation = DebuggerPDP10.OPNAMES[opNum || 0] + sMode; - var sOpName = opNames[opNum] + sMode; - if (!opNum) { - sOperands = this.toStrWord(opCode); + if (!fOperands) { + if (!opNum) sOperation = ""; } else { - if (opMask == PDP10.OPCODE.OPIO) { - sOperands = this.toStrBase((opCode / PDP10.OPCODE.IOSHIFT) & PDP10.OPCODE.IOMASK, -1); + sOperation = Str.pad(sOperation, 8); + if (!opNum) { + sOperation += this.toStrWord(opCode); } else { - sOperands = this.toStrBase((opCode >> PDP10.OPCODE.FNSHIFT) & PDP10.OPCODE.FNMASK, -1); + if (opMask == PDP10.OPCODE.OPIO) { + sOperation += this.toStrBase((opCode / PDP10.OPCODE.IOSHIFT) & PDP10.OPCODE.IOMASK, -1); + } else { + sOperation += this.toStrBase((opCode >> PDP10.OPCODE.FNSHIFT) & PDP10.OPCODE.FNMASK, -1); + } + sOperation += ','; + if (opCode & PDP10.OPCODE.I_BIT) sOperation += '@'; + sOperation += this.toStrBase(opCode & PDP10.OPCODE.Y_MASK, -1); + var i = (opCode >> PDP10.OPCODE.X_SHIFT) & PDP10.OPCODE.X_MASK; + if (i) sOperation += '(' + this.toStrBase(i, -1) + ')'; } - if (sOperands) sOperands += ','; - if (opCode & PDP10.OPCODE.I_BIT) sOperands += '@'; - sOperands += this.toStrBase(opCode & PDP10.OPCODE.Y_MASK, -1); - var i = (opCode >> PDP10.OPCODE.X_SHIFT) & PDP10.OPCODE.X_MASK; - if (i) sOperands += '(' + this.toStrBase(i, -1) + ')'; } + return sOperation; + } + + /** + * getInstruction(dbgAddr, sComment, nSequence) + * + * Get the next instruction, by decoding the opcode and any operands. + * + * @this {DebuggerPDP10} + * @param {DbgAddrPDP10} dbgAddr + * @param {string} [sComment] is an associated comment + * @param {number|null} [nSequence] is an associated sequence number, undefined if none + * @return {string} (and dbgAddr is updated to the next instruction) + */ + getInstruction(dbgAddr, sComment, nSequence) + { + var dbgAddrOp = this.newAddr(dbgAddr.addr); + var opCode = this.getWord(dbgAddr, 1); + var sOperation = this.findInstruction(opCode); var sOpCodes = ""; var sLine = this.toStrAddr(dbgAddrOp) + ":"; @@ -1443,9 +1459,7 @@ class DebuggerPDP10 extends Debugger { } while (dbgAddrOp.addr != dbgAddr.addr); } - sLine += Str.pad(sOpCodes, 16); - sLine += Str.pad(sOpName, 5); - if (sOperands) sLine += ' ' + sOperands; + sLine += Str.pad(sOpCodes, 16) + sOperation; if (sComment) { sLine = Str.pad(sLine, 60) + ';' + (sComment || ""); @@ -3268,6 +3282,10 @@ class DebuggerPDP10 extends Debugger { var result = true; try { + if (DEBUG && sCmd == "test") { + this.doTest(); + return true; + } if (!sCmd.length || sCmd == "end") { if (this.fAssemble) { this.println("ended assemble at " + this.toStrAddr(this.dbgAddrAssemble)); @@ -3435,6 +3453,40 @@ class DebuggerPDP10 extends Debugger { return true; } + /** + * doTest() + * + * @this {DebuggerPDP10} + */ + doTest() + { + var aOps = {}; + var sOperation; + for (var op = 0o00000; op <= 0o77774; op += 4) { + var opCode = op * Math.pow(2, 21); + sOperation = this.findInstruction(opCode, false); + if (!sOperation) continue; + if (aOps[sOperation] === undefined) { + aOps[sOperation] = op; + } else { + aOps[sOperation] &= op; + } + } + for (sOperation in aOps) { + if (sOperation == null) continue; + this.println(sOperation + ": " + this.toStrWord(aOps[sOperation] * Math.pow(2, 21))); + // this.println("/**"); + // this.println(" * op" + sOperation + "(" + this.toStrWord(aOps[sOperation] * Math.pow(2, 21)) + ")"); + // this.println(" *"); + // this.println(" * @this {CPUStatePDP10}"); + // this.println(" * @param {number} opCode"); + // this.println(" */"); + // this.println("PDP10.op" + sOperation + " = function(opCode)"); + // this.println("{"); + // this.println("};\n"); + } + } + /** * DebuggerPDP10.init() * @@ -3579,7 +3631,7 @@ if (DEBUGGER) { * 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 * O O O O O O O M M A A A A I X X X X Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y * - * where OOOOOOOMM represents the operation, with MM (if used) represents the mode: + * where OOOOOOOMM represents the operation, and MM (if used) represents the mode: * * Mode Suffix Source Destination * ---- ------ ----- ----------- @@ -3600,7 +3652,7 @@ if (DEBUGGER) { * we're done; otherwise, we must set set R to [E] and repeat the process. */ DebuggerPDP10.OPTABLE = { - [PDP10.OPCODE.OPMASK]: { + [PDP10.OPCODE.OPMASK]: { // 0o77700 0o13000: DebuggerPDP10.OPS.UFA, 0o13100: DebuggerPDP10.OPS.DFN, 0o13200: DebuggerPDP10.OPS.FSC, @@ -3632,7 +3684,7 @@ if (DEBUGGER) { 0o26600: DebuggerPDP10.OPS.JSA, 0o26700: DebuggerPDP10.OPS.JRA, }, - [PDP10.OPCODE.OPMODE]: { + [PDP10.OPCODE.OPMODE]: { // 0o77400 0o14000: DebuggerPDP10.OPS.FAD, 0o14400: DebuggerPDP10.OPS.FADR, 0o15000: DebuggerPDP10.OPS.FSB, @@ -3684,7 +3736,7 @@ if (DEBUGGER) { 0o57000: DebuggerPDP10.OPS.HRRE, 0o57400: DebuggerPDP10.OPS.HLRE }, - [PDP10.OPCODE.OPCOMP]: { + [PDP10.OPCODE.OPCOMP]: { // 0o77000 0o30000: DebuggerPDP10.OPS.CAI, 0o31000: DebuggerPDP10.OPS.CA, 0o32000: DebuggerPDP10.OPS.JUMP, @@ -3694,13 +3746,13 @@ if (DEBUGGER) { 0o36000: DebuggerPDP10.OPS.SOJ, 0o37000: DebuggerPDP10.OPS.SOS, }, - [PDP10.OPCODE.OPTEST]: { + [PDP10.OPCODE.OPTEST]: { // 0o71100 0o60000: DebuggerPDP10.OPS.TR, 0o60100: DebuggerPDP10.OPS.TL, 0o61000: DebuggerPDP10.OPS.TD, 0o61100: DebuggerPDP10.OPS.TS, }, - [PDP10.OPCODE.OPIO]: { + [PDP10.OPCODE.OPIO]: { // 0o70034 0o70000: DebuggerPDP10.OPS.BLKI, 0o70004: DebuggerPDP10.OPS.DATAI, 0o70010: DebuggerPDP10.OPS.BLKO, @@ -3710,7 +3762,7 @@ if (DEBUGGER) { 0o70030: DebuggerPDP10.OPS.CONSZ, 0o70034: DebuggerPDP10.OPS.CONSO }, - [PDP10.OPCODE.OPUUO]: { + [PDP10.OPCODE.OPUUO]: { // 0o70000 0o00000: DebuggerPDP10.OPS.UUO } }; diff --git a/package.json b/package.json index bb05a9ad1..3ee29dc80 100644 --- a/package.json +++ b/package.json @@ -194,6 +194,7 @@ "./modules/pdp10/lib/memory.js", "./modules/pdp10/lib/cpu.js", "./modules/pdp10/lib/cpustate.js", + "./modules/pdp10/lib/cpuops.js", "./modules/pdp10/lib/rom.js", "./modules/pdp10/lib/ram.js", "./modules/pdp10/lib/serial.js", diff --git a/versions/pdpjs/1.34.0/pdp10-dbg.js b/versions/pdpjs/1.34.0/pdp10-dbg.js index ef0b7bab3..2e508274a 100644 --- a/versions/pdpjs/1.34.0/pdp10-dbg.js +++ b/versions/pdpjs/1.34.0/pdp10-dbg.js @@ -23,6 +23,7 @@ http://pcjs.org/modules/pdp10/lib/memory.js (C) Jeff Parsons 2012-2017 http://pcjs.org/modules/pdp10/lib/cpu.js (C) Jeff Parsons 2012-2017 http://pcjs.org/modules/pdp10/lib/cpustate.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/cpuops.js (C) Jeff Parsons 2012-2017 http://pcjs.org/modules/pdp10/lib/serial.js (C) Jeff Parsons 2012-2017 http://pcjs.org/modules/shared/lib/debugger.js (C) Jeff Parsons 2012-2017 http://pcjs.org/modules/pdp10/lib/debugger.js (C) Jeff Parsons 2012-2017 @@ -36,9 +37,9 @@ Ec:82,Fc:83,Gc:84,Hc:85,Ic:86,Jc:87,Kc:88,Lc:89,ob:90,"[":91,"\\":92,"]":93,"^": function u(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.Ya=b.comment;this.nb=b;this.exports={};this.F=this.bindings={};a=this.id.indexOf(".");0>a?this.Ja=this.id:(this.Ka=this.id.substr(0,a),this.Ja=this.id.substr(a+1));this.i={ready:!1,Da:!1,Qa:!1,T:!1,error:!1};this.Ma=null;this.i.error=!1;this.V=c||0;this.A=this.b=this.C=this.D=this.ja=null;v.push(this)}function ta(a,b,c){ua[a]&&b&&(ua[a][b]=c)}function va(){return Date.now()||+new Date} function x(a){window&&window.alert(a)}function wa(a){var b=!1;window&&(b=window.confirm(a));return b}function y(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;ba&&-1>=3;return(c?"0o":"")+d} +function Pa(a,b){var c;if(a){b||(b=10);var d=a.charAt(0),e=0a&&-1>=3;return(c?"0o":"")+d} function H(a,b,c){var d="";b?8a&&-1=e?48:55),d=String.fromCharCode(e)+d;a>>=4}return(c?"0x":"")+d}function I(a){return H(a,4,!0)}function Ra(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0"']/g,function(a){return Wa[a]})}function Xa(a,b){return(a+" ").slice(0,b)}function Ya(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}var Wa={"&":"&","<":"<",">":">",'"':""","'":"'"}; -function gb(a,b,c){var d=0,e=a.length,g=0;for(c||(c=function(a,b){return a>b?1:a>1,h;h=c(b,a[f]);0a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())} -function J(a,b,c,d){c=void 0===c?!1:c;var e=0,g=null,f=null;if("object"==typeof resources&&(g=resources[a]))return d&&d(a,g,e),[g,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),f;var h=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(h.onreadystatechange=function(){4===h.readyState&&(g=h.responseText,200==h.status||!h.status&&g.length&&"file:"==(window?window.location.protocol:"file:")||(e=h.status||-1),d&&d(a, -g,e))});if(b&&"object"==typeof b){var k="",m;for(m in b)b.hasOwnProperty(m)&&(k&&(k+="&"),k+=m+"="+encodeURIComponent(b[m]));k=k.replace(/%20/g,"+");h.open("POST",a,c);h.setRequestHeader("Content-type","application/x-www-form-urlencoded");h.send(k)}else h.open("GET",a,c),"bytes"==b&&h.overrideMimeType("text/plain; charset=x-user-defined"),h.send();c||(g=h.responseText,200!=h.status&&(e=h.status||-1),d&&d(a,g,e),f=[g,e]);return f} -function ib(a,b){var c,d={W:null,S:null,ia:null,ha:null};if("["==b.charAt(0)||"{"==b.charAt(0))try{var e,g,f;if("<"==b.substr(0,1))throw Error(b);f=0>b.indexOf("0x")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.ia=f.load;d.ha=f.exec;if(e=f.bytes)d.W=e;else if(e=f.words)for(d.W=Array(2*e.length),g=c=0;c>8&255;else if(e=f.data)for(d.W=Array(4*e.length),g=c=0;c>8&255,d.W[g++]=e[c]>>16&255,d.W[g++]=e[c]>>24&255;else d.W=f;d.S=f.symbols;d.W.length?1==d.W.length&&(x(d.W[0]),d=null):(x("Empty resource: "+a),d=null)}catch(h){x("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;cb?1:a>1,h;h=c(b,a[g]);0a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())} +function J(a,b,c,d){c=void 0===c?!1:c;var e=0,f=null,g=null;if("object"==typeof resources&&(f=resources[a]))return d&&d(a,f,e),[f,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),g;var h=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(h.onreadystatechange=function(){4===h.readyState&&(f=h.responseText,200==h.status||!h.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=h.status||-1),d&&d(a, +f,e))});if(b&&"object"==typeof b){var k="",m;for(m in b)b.hasOwnProperty(m)&&(k&&(k+="&"),k+=m+"="+encodeURIComponent(b[m]));k=k.replace(/%20/g,"+");h.open("POST",a,c);h.setRequestHeader("Content-type","application/x-www-form-urlencoded");h.send(k)}else h.open("GET",a,c),"bytes"==b&&h.overrideMimeType("text/plain; charset=x-user-defined"),h.send();c||(f=h.responseText,200!=h.status&&(e=h.status||-1),d&&d(a,f,e),g=[f,e]);return g} +function ib(a,b){var c,d={W:null,S:null,ia:null,ha:null};if("["==b.charAt(0)||"{"==b.charAt(0))try{var e,f,g;if("<"==b.substr(0,1))throw Error(b);g=0>b.indexOf("0x")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.ia=g.load;d.ha=g.exec;if(e=g.bytes)d.W=e;else if(e=g.words)for(d.W=Array(2*e.length),f=c=0;c>8&255;else if(e=g.data)for(d.W=Array(4*e.length),f=c=0;c>8&255,d.W[f++]=e[c]>>16&255,d.W[f++]=e[c]>>24&255;else d.W=g;d.S=g.symbols;d.W.length?1==d.W.length&&(x(d.W[0]),d=null):(x("Empty resource: "+a),d=null)}catch(h){x("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;ca;a++)this.g["S"+a]=[0,0,!1,!1,this.Ab,a];this.A=this.b=this.C=this.D=null;this.exports={hold:this.sb,toggle:this.Nb,reset:this.Jb, @@ -71,17 +72,17 @@ l.sb=function(a,b,c){if(Nb(this,b)){if(c){var d=this;setTimeout(function(){Ob(d, function Ob(a,b){var c=a.g[b];c&&(c[2]&&c[3]&&(Vb(a,b,c[1]=c[0]),c[4]&&c[4].call(a,c[1],c[5])),c[3]=!1)}l.Bb=function(a){a||this.b.i.J||(this.b.g=this.j%Gb,this.g[Zb]&&this.g[Zb][1]&&$b(this.b))};l.Cb=function(){};l.wb=function(a){a||this.b.R()}; l.ub=function(a){if(!a&&!this.b.i.J)if(this.g[Zb]&&this.g[Zb][1])$b(this.b);else{if((a=this.A)&&!Ma(a,!0))Na(a,!0),ac(a,0,null),Na(a,!1);else try{var b=this.b.Ia(1);0c;c++){var d=a,e="A"+c,g=b&1<c;c++){var d=a,e="D"+c,g=b&1<b;b++)a.g["S"+b][1]=a.u&1<c;c++){var d=a,e="A"+c,f=b&1<c;c++){var d=a,e="D"+c,f=b&1<b;b++)a.g["S"+b][1]=a.u&1<d.length){for(var e=0,g=Array(4096),f=0;f>>a.j;0g&&(m=g);if(h&&h.size){if(h.type==d){if(e+g<=h.v)return h.Ga+=h.v-e,h.v=e,!0;if(e>=h.v+h.Ga){m=h.size-(e-k);m>g&&(m=g);h.Ga=e-h.v+m;e=k+16384;g-=m;f++;continue}}return lc(mc,e,g)}e=new V(a,e,m,16384,d);ic(e,a.A,h);a.g[f++]=e;e=k+16384;g-=m}return 0>=g?(a.status("Added "+(c>>10)+"Kb "+nc[d]+" at "+Qa(b)),!0):lc(oc,b,c)} -function gc(a,b){var c=a.g[(b&a.u)>>>a.j];a.w++;b=c.j(b&16383,b);a.w--;return b}function fc(a,b,c){var d=a.g[(b&a.u)>>>a.j];a.w++;d.F(c,b&16383,b);a.w--}function jc(a){for(var b=0,c=[],d=0;dd.length){for(var e=0,f=Array(4096),g=0;g>>a.j;0f&&(m=f);if(h&&h.size){if(h.type==d){if(e+f<=h.v)return h.Ga+=h.v-e,h.v=e,!0;if(e>=h.v+h.Ga){m=h.size-(e-k);m>f&&(m=f);h.Ga=e-h.v+m;e=k+16384;f-=m;g++;continue}}return lc(mc,e,f)}e=new V(a,e,m,16384,d);ic(e,a.A,h);a.g[g++]=e;e=k+16384;f-=m}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+nc[d]+" at "+Qa(b)),!0):lc(oc,b,c)} +function gc(a,b){var c=a.g[(b&a.u)>>>a.j];a.w++;b=c.j(b&16383,b);a.w--;return b}function fc(a,b,c){var d=a.g[(b&a.u)>>>a.j];a.w++;d.F(c,b&16383,b);a.w--}function jc(a){for(var b=0,c=[],d=0;d=c+d?a>>c&(1<>>b.j].ta(a&16383,a)};l.Tb=function(a,b){var c=this.C;a=this.ea=a;c.g[(a&c.u)>>>c.j].Ha(b,a&16383,a)}; l.Ia=function(a){this.i.complete=!0;var b=this.A?jd(this.A)?1:this.i.Pa?-1:0:0,c=a?this.i.Pa?0:1:-1;this.i.Pa=!1;this.H=this.I=a;this.j=this.j&-5|(b?4:0);do{if(this.j){if(this.j&4){if(kd(this.A,this.g,c)){this.R();break}++b||(this.j&=-5);c||c++}if(a=this.j&11)this.j&2?this.fa||(this.j&=-3):this.j&1&&this.j++,a=!1;if(a){if(this.j&4&&kd(this.A,this.g,c)){this.R();break}if(0>c)break}}this.j&=15;a=this.pa=this.g;this.ta(a);this.g=(a+1)%Gb}while(0>>g.j;0>>= -g.j;0>>f.j;0>>= +f.j;0>>a.j;0f&&f>=sa&&(f+=ra);f=Math.trunc(Math.abs(f))%ra;void 0===g&&(g=e.size);for(h=d;g--&&h=b.length){G(a,"invalid block at offset "+I(n),4096);break}for(var k=k+2,p=b[k++]&255|(b[k++]&255)<<8,q=b[k++]&255|(b[k++]&255)<<8,m=m+((p&255)+(p>>8)+(q&255)+(q>>8)),K=k,Aa=p-=6;0=b.length){G(a,"insufficient data for block at offset "+I(n),4096);break}m+= -b[k++]&255;if(m&255){G(a,"invalid checksum ("+H(m,2,!0)+") for block at offset "+I(n),4096);break}if(Aa)for(G(a,"loading "+I(Aa)+" bytes at "+I(q)+"-"+I(q+Aa),4096);Aa--;)fc(a.C,q++,b[K++]);else q&1?f=!0:null==d&&(d=q),null!=d&&G(a,"starting address: "+I(d),4096);h=!0}else k++;else k+=2}if(!h&&(null==c&&(c=e),null!=c)){for(h=0;h>>a.j;0g&&g>=sa&&(g+=ra);g=Math.trunc(Math.abs(g))%ra;void 0===f&&(f=e.size);for(h=d;f--&&h=b.length){G(a,"invalid block at offset "+I(n),4096);break}for(var k=k+2,p=b[k++]&255|(b[k++]&255)<<8,q=b[k++]&255|(b[k++]&255)<<8,m=m+((p&255)+(p>>8)+(q&255)+(q>>8)),K=k,Aa=p-=6;0=b.length){G(a,"insufficient data for block at offset "+I(n),4096);break}m+= +b[k++]&255;if(m&255){G(a,"invalid checksum ("+H(m,2,!0)+") for block at offset "+I(n),4096);break}if(Aa)for(G(a,"loading "+I(Aa)+" bytes at "+I(q)+"-"+I(q+Aa),4096);Aa--;)fc(a.C,q++,b[K++]);else q&1?g=!0:null==d&&(d=q),null!=d&&G(a,"starting address: "+I(d),4096);h=!0}else k++;else k+=2}if(!h&&(null==c&&(c=e),null!=c)){for(h=0;h=t.Ta&&c<=t.ob&&(b=c-(t.Ta-t.jb));b&&(a.preventDefault&&a.preventDefault(),d.Na(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==t.lb&&(b=t.kb);d.Na(b);a.preventDefault&&a.preventDefault()}return!0},c.onpaste=function(a){a.stopPropagation&&a.stopPropagation(); a.preventDefault&&a.preventDefault();(a=a.clipboardData||window.clipboardData)&&d.Na(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};l.sa=function(a,b,c,d){this.D=a;this.C=b;this.b=c;this.A=d;E(this)}; -l.ib=function(a){if(!this.g){var b=Tc(this.D,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Ya(c[0]);if(d!=this.Ja)return;c=Ya(c[1]);if(this.g=xa(c)){var e=this.g.exports;if(e){var g=e.connect;g&&g.call(this.g,this.u);if(this.B=e.receiveData){this.u=a;this.status("Connected "+this.Ka+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};l.la=function(a,b){if(!b)if(this.ib(this.u),!a)this.reset();else if(!this.restore(a))return!1;return!0}; +l.ib=function(a){if(!this.g){var b=Tc(this.D,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Ya(c[0]);if(d!=this.Ja)return;c=Ya(c[1]);if(this.g=xa(c)){var e=this.g.exports;if(e){var f=e.connect;f&&f.call(this.g,this.u);if(this.B=e.receiveData){this.u=a;this.status("Connected "+this.Ka+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};l.la=function(a,b){if(!b)if(this.ib(this.u),!a)this.reset();else if(!this.restore(a))return!1;return!0}; l.ca=function(a){return a?this.save():!0};l.reset=function(){};l.save=function(){var a=new O(this);a.set(0,[]);return a.data()};l.restore=function(){return!0};l.Na=function(a){if("number"==typeof a)this.j.push(a);else if("string"==typeof a)for(var b=0,c,d=0;da.w&&a.u.length&&(a.w=0);if(0>a.w||b!=a.u[a.w])a.u.splice(0,0,b),a.w=0;a.w--}else a.O?b="end":b=a.u[a.w+1];a=[];if(b){b=b.replace(/""/g,"'");c=0;var e=null;d=d||";";for(var g=0;g<=b.length;g++){var f=b.charAt(g);if('"'==f||"'"==f)e?f==e&&(e=null):e=f;else if(f==d&&!e||!f)a.push(Ya(b.substring(c,g))),c=g+1}}return a} -function vd(a,b,c){for(c=c||-1;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e=a.pop(),g=a.pop();switch(d){case "*":d=g*e;break;case "/":if(!e)return!1;d=g/e;break;case "%":if(!e)return!1;d=g%e;break;case "+":d=g+e;break;case "-":d=g-e;break;case "<<":d=g<>":d=g>>e;break;case ">>>":d=g>>>e;break;case "<":d=g":d=g>e?1:0;break;case ">=":d=g>=e?1:0;break;case "==":d=g==e?1:0;break;case "!=":d=g!=e?1:0;break;case "&":d=g&e;break; -case "^":d=g^e;break;case "|":d=g|e;break;case "&&":d=g&&e?1:0;break;case "||":d=g||e?1:0;break;default:return!1}a.push(d|0)}return!0} -function wd(a,b,c){var d;if(b){b=xd(a,b);for(var e=0,g=!1,f=b,h=[],k=[],m=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);ea.w&&a.u.length&&(a.w=0);if(0>a.w||b!=a.u[a.w])a.u.splice(0,0,b),a.w=0;a.w--}else a.O?b="end":b=a.u[a.w+1];a=[];if(b){b=b.replace(/""/g,"'");c=0;var e=null;d=d||";";for(var f=0;f<=b.length;f++){var g=b.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==d&&!e||!g)a.push(Ya(b.substring(c,f))),c=f+1}}return a} +function vd(a,b,c){for(c=c||-1;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e=a.pop(),f=a.pop();switch(d){case "*":d=f*e;break;case "/":if(!e)return!1;d=f/e;break;case "%":if(!e)return!1;d=f%e;break;case "+":d=f+e;break;case "-":d=f-e;break;case "<<":d=f<>":d=f>>e;break;case ">>>":d=f>>>e;break;case "<":d=f":d=f>e?1:0;break;case ">=":d=f>=e?1:0;break;case "==":d=f==e?1:0;break;case "!=":d=f!=e?1:0;break;case "&":d=f&e;break; +case "^":d=f^e;break;case "|":d=f|e;break;case "&&":d=f&&e?1:0;break;case "||":d=f||e?1:0;break;default:return!1}a.push(d|0)}return!0} +function wd(a,b,c){var d;if(b){b=xd(a,b);for(var e=0,f=!1,g=b,h=[],k=[],m=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e>=1,K--;f=p+f;d>>=8}d=H(c,0,!0)+" "+c+". "+Qa(c,0,!0)+" "+("0b"+f);32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'")}a.f((null!=b?b+": ":"")+d);return e} +function Ad(a,b,c){var d,e=!1;if(void 0!==c){e=!0;d=c;var f=4,g="";if(!f||4>=1,K--;g=p+g;d>>=8}d=H(c,0,!0)+" "+c+". "+Qa(c,0,!0)+" "+("0b"+g);32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'")}a.f((null!=b?b+": ":"")+d);return e} function Bd(a,b){if(b)return Ad(a,b,a.Z[b]);var c=0;for(b in a.Z)Ad(a,b,a.Z[b]),c++;return 0a&&-1>2:0)}0>c?c=a.replace(/^0+([0-9A-F]+)$/i,"$1"):c=a;return c} var zd={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9}; function Cd(a){td.call(this,a);this.ya=!1;this.ma=!0;this.I=X();this.xa=X();this.N=X();this.H=[];this.g=this.K=this.G=[];Dd(this);this.P=this.ga=0;this.j=[];this.pa=void 0;Ed(this);this.A=this;this.na={};this.V=this.cb=0;this.U=null;this.M=[];Fd(this,a.messages);this.ra=a.commands;this.L=0;this.Ba=this.qa=null;this.B=this.Aa=this.za=this.fa=this.oa=0;this.ea=this.aa=null;var b=this;window?void 0===window[C]&&(window[C]=function(a){return Yc(b,a)}):void 0===global[C]&&(global[C]=function(a){return Yc(b, @@ -131,76 +132,76 @@ l.sa=function(a,b,c,d){this.C=b;this.D=a;this.b=c;this.ea=a.u;(a=Tc(a,"messages" I(n.size)+" "+m),c!=Hc&&(c=-1),m=0);a+=16384;e++}}});E(this)}; l.da=function(a,b,c){var d=this;switch(b){case "debugInput":return this.aa=this.F[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",Yc(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?(b=null,d.wd&&(d+=b.length);0>d&&(d=0);for(var e=b.length;d>23&&a.b.pa==b)){b=a.b;var e=b.g;b.g=(e+1)%Gb;b=e}if(0d&&(d=a.b.ta(b)),0<=d&&(c=a.j[a.P],c.v=b,c.ka=!1,c.ba=void 0,++a.P==a.j.length&&(a.P=0)));return!1} -function ve(a,b,c,d){var e=X(b.v),g,f,h,k=0,m=a.wa(b,1),n=m/Ib|0,p;for(p in we)if(g=we[p][n&p]){f=+p;n>>=6;switch(f){case 32512:h=xe;k=n&3;break;case 32256:h=ye;k=n&7;break;case 29248:h=ze,k=(n&48)>>2|(n&6)>>1}break}h=h&&h[k]||"";"S"==h&&g>Ae&&(h="B");h=Be[g]+h;g?((g=28700==f?W(a,m/Jb&127,-1):W(a,m>>23&15,-1))&&(g+=","),m&4194304&&(g+="@"),g+=W(a,m&262143,-1),(m=m>>18&15)&&(g+="("+W(a,m,-1)+")")):g=Kd(m);m="";f=W(a,e.v)+":";if(-1!==e.v&&-1!==b.v){do if(k=a.wa(e,1),m+=" "+Kd(k),null==e.v)break;while(e.v!= -b.v)}f+=Xa(m,16);f+=Xa(h,5);g&&(f+=" "+g);c&&(f=Xa(f,60)+";"+(c||""),f=a.b.i.Ca?f+("cycles="+Zc(a.b).toString()+" cs="+H(a.b.ma)):f+(null!=d?"="+d.toString():""));return f}function Dd(a){var b,c;a.g=["bp"];if(a.K)for(b=1;b>>d.j],!1)}a.K=["br"];if(a.G)for(b=1;b>>d.j],!0);a.G=["bw"];a.oa=0;a.ga=0} -l.va=function(a,b,c){var d=!0;c||Ce(this,a,b,!1,!0);if(a!=this.g){var e=Y(b);if(-1===e)this.f("invalid address: "+W(this,b.v)),d=!1;else{var g=this.C;g.g[e>>>g.j].va(e&16383,a==this.G)}}d&&(a.push(b),c?b.ka=!0:(De(this,a,a.length-1,"set"),Ed(this)));return d};function Ce(a,b,c,d,e){var g=!1;c=Y(c);for(var f=1;f>>d.j],b==a.G));h.ka||Ed(a);break}}return g} +function ve(a,b,c,d){var e=X(b.v),f=a.wa(b,1),g,h,k,m=0,n=f/Ib|0,p;for(p in we)if(g=we[p][n&p]){h=+p;n>>=6;switch(h){case 32512:k=xe;m=n&3;break;case 32256:k=ye;m=n&7;break;case 29248:k=ze,m=(n&48)>>2|(n&6)>>1}break}k=k&&k[m]||"";"S"==k&&g>Ae&&(k="B");k=Be[g||0]+k;k=Xa(k,8);g?(k=28700==h?k+W(a,f/Jb&127,-1):k+W(a,f>>23&15,-1),k+=",",f&4194304&&(k+="@"),k+=W(a,f&262143,-1),(f=f>>18&15)&&(k+="("+W(a,f,-1)+")")):k+=Kd(f);f=k;g="";h=W(a,e.v)+":";if(-1!==e.v&&-1!==b.v){do if(k=a.wa(e,1),g+=" "+Kd(k),null== +e.v)break;while(e.v!=b.v)}h+=Xa(g,16)+f;c&&(h=Xa(h,60)+";"+(c||""),h=a.b.i.Ca?h+("cycles="+Zc(a.b).toString()+" cs="+H(a.b.ma)):h+(null!=d?"="+d.toString():""));return h}function Dd(a){var b,c;a.g=["bp"];if(a.K)for(b=1;b>>d.j],!1)}a.K=["br"];if(a.G)for(b=1;b>>d.j],!0);a.G=["bw"];a.oa=0;a.ga=0} +l.va=function(a,b,c){var d=!0;c||Ce(this,a,b,!1,!0);if(a!=this.g){var e=Y(b);if(-1===e)this.f("invalid address: "+W(this,b.v)),d=!1;else{var f=this.C;f.g[e>>>f.j].va(e&16383,a==this.G)}}d&&(a.push(b),c?b.ka=!0:(De(this,a,a.length-1,"set"),Ed(this)));return d};function Ce(a,b,c,d,e){var f=!1;c=Y(c);for(var g=1;g>>d.j],b==a.G));h.ka||Ed(a);break}}return f} function Ee(a,b){for(var c=1;cb[0]?1:a[0]>>0,f],p=gb(n,k,a.eb);0>p&&n.splice(-(p+1),0,k)}m&&(h.a=m.replace(/''/g,'"'))}a.H.push({Yc:b,v:c,tb:d,S:e,bb:g})}function Ge(a,b,c){var d=[],e=Y(b)>>>0;for(b=0;b>>0,h=g.tb;if(e>=f&&eb[0]?1:a[0]>>0,g],p=gb(n,k,a.eb);0>p&&n.splice(-(p+1),0,k)}m&&(h.a=m.replace(/''/g,'"'))}a.H.push({Yc:b,v:c,tb:d,S:e,bb:f})}function Ge(a,b,c){var d=[],e=Y(b)>>>0;for(b=0;b>>0,h=f.tb;if(e>=g&&eh[0].indexOf("+"))){var m=h[0]+":";h[2]&&(m+=" "+h[2]);a.f(m)}h[3]&&(f=h[3],g=null);g=ve(a,b,f,g);a.f(g);a.I=b;e-=b.v-k;c++}}} -function Fe(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.f(Qd+b):(a.O&&(a.f("ended assemble at "+W(a,a.N.v)),a.I=a.N,a.O=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.U=null;if(La(a)&&0n||"z"h[0].indexOf("+"))){var m=h[0]+":";h[2]&&(m+=" "+h[2]);a.f(m)}h[3]&&(g=h[3],f=null);f=ve(a,b,g,f);a.f(f);a.I=b;e-=b.v-k;c++}}} +function Fe(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.f(Qd+b):(a.O&&(a.f("ended assemble at "+W(a,a.N.v)),a.I=a.N,a.O=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.U=null;if(La(a)&&0n||"z"S.length&&(a.f("note: only "+S.length+" available"),L=S.length);P-=L;0>P&&(null==S[S.length-1].v?(L=P+L,P=0):P+=S.length);var tc=[];"call"==Yd&&(Za=1E5,tc=["CALL"]);for(void 0!==Xd&&a.f(L+" instructions earlier:");0=S.length&&(P=0);a.pa=L;$d++;Za--}}$d||(a.f("no "+Zd+"history available"), a.pa=void 0)}else{var ka=Z(a,R);if(ka){var la=0,ce="ds"==Ea;if(ca){if("l"==ca.charAt(0))ca=ca.substr(1)||of,la=yd(a,ca);else{var de=Z(a,ca);de&&(la=de.v-ka.v)}0>la&&(la=0);65536he;he++)fe+=String.fromCharCode((Bb%64|0)+32), -Bb/=64}ma&&(ma+="\n");ma=ce?ma+(na+","):ma+(R+": "+na+(0>ge?" "+fe:""))}ma&&a.f(ma);a.xa=ka;a.ba=qf}}}}break;case "e":if("else"==f[0])break;var ie,je,ke=f[0],wc=f[1];"e"==ke||"ew"==ke?(ie=a.wa,je=a.Va):wc=null;if(null==wc)a.f("edit memory commands:"),a.f("\tew [a] [...] edit words at address a");else{var Cb=Z(a,wc);if(Cb)for(var Db=2;Dbge?" "+fe:""))}ma&&a.f(ma);a.xa=ka;a.ba=qf}}}}break;case "e":if("else"==g[0])break;var ie,je,ke=g[0],wc=g[1];"e"==ke||"ew"==ke?(ie=a.wa,je=a.Va):wc=null;if(null==wc)a.f("edit memory commands:"),a.f("\tew [a] [...] edit words at address a");else{var Cb=Z(a,wc);if(Cb)for(var Db=2;DbAc;){for(var oa=null,uf=256;65536>bb.v>>>0;){Bc.v=a.wa(bb,2);if(null==bb.v||!uf--)break;if(!(Bc.v&1)){for(var vf=a,Eb=Bc,me=null,cb=Eb.v,ne=cb,Cc=1;6>=Cc&&cb;Cc++){if(2> ";M(function(){for(var a=D(document,C,"debugger"),b=0;b\nLicense: GPL version 3 or later ");for(b=0;b\nLicense: GPL version 3 or later ");for(b=0;bSe){if(Te(d,this.K)){this.B=new O(this,"1.34.0",bf);Te(this.B)&&(cf(this,d),a=df,ef(this.B));this.B.set(Ze,hb());ff(this.B);var e=this.g&&!this.I;if(a==$e||wa("Click OK to restore the previous "+Ab+" machine state, or CANCEL to reset the machine.")){if(c=Ye(d)){var g=d.get("code"),f=d.get("data");g&&("ok"==g?Te(d,f):("error"==g&&"no machine state"!= -f?(this.Y("Error: "+f),"unable to verify user"==f&&(mb(gf,""),this.j=null)):this.f(g+": "+f),ef(d),Te(d)?(c=Ye(d),e=!0):c=!1))}e&&We(this,c?d:null)}else a==df&&d.clear()}else We(this);delete this.K;delete this.H}e=y(this.id);for(g=0;gSe){if(Te(d,this.K)){this.B=new O(this,"1.34.0",bf);Te(this.B)&&(cf(this,d),a=df,ef(this.B));this.B.set(Ze,hb());ff(this.B);var e=this.g&&!this.I;if(a==$e||wa("Click OK to restore the previous "+Ab+" machine state, or CANCEL to reset the machine.")){if(c=Ye(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?Te(d,g):("error"==f&&"no machine state"!= +g?(this.Y("Error: "+g),"unable to verify user"==g&&(mb(gf,""),this.j=null)):this.f(f+": "+g),ef(d),Te(d)?(c=Ye(d),e=!0):c=!1))}e&&We(this,c?d:null)}else a==df&&d.clear()}else We(this);delete this.K;delete this.H}e=y(this.id);for(f=0;fa[1];a=a[2];this.P=!0;this.i.T=!0;var d=this.F.power;d&&(d.textContent="Shutdown");this.b&&(hf(this,this.b,b,c,a),Q(this,-2),this.b.X());this.N&&(cf(this,b),b.clear());!c&&this.B&&(this.B.clear(),delete this.B);this.w=0}; function cf(a,b){if(wa("There may be a problem with your "+Ab+" machine.\n\nTo help us diagnose it, click OK to send this "+Ab+" machine state to http://www.pcjs.org.")){var c=a.aa;a=a.j||"";b=b.toString();var d={};d.app=Ab;d.ver="1.34.0";d.url=c;d.user=a;d.type="bug";d.data=b;J("http://www.pcjs.org/api/v1/report",d,!0)}} -function Me(a,b,c){var d,e="none";if(a.w)return null;a.w--;var g=new O(a,"1.34.0"),f=new O(a,"1.34.0",Xe),h=hb();f.set(Ze,h);g.set(Ze,h);g.set(jf,"1.34.0");g.set(kf,window?window.location.href:null);g.set(lf,window?window.navigator.userAgent:"");a.b&&a.b.ca&&(c&&(b&&(a.b.i.X=a.b.i.J),a.b.R()),d=a.b.ca(b,c),"object"===typeof d&&g.set(a.b.id,d),c&&(a.b.i.T=!1,!1===d&&(e=null)));for(var h=y(a.id),k=0;k=d||30<=(c.xa+=d))&&(e.textContent=c.i.J?c.L.toFixed(2)+"Mhz":"Stopped",c.xa=0)}if(a.u&&(a=a.u,b=b||0,a.K)){c=a.b.i.J;d=!!(a.b.j&8);if(0>=b||60<=(a.I+=b)){e=a.b.g;if(a.F.PC){var g=a.A&&a.A.ba||8,e=e||0,e=8==g?Qa(e,void 0):H(e,void 0);a.F.PC.textContent!=e&&(a.F.PC.textContent=e)}a.I=0}-1>b?a.j=a.b.g:0=d||30<=(c.xa+=d))&&(e.textContent=c.i.J?c.L.toFixed(2)+"Mhz":"Stopped",c.xa=0)}if(a.u&&(a=a.u,b=b||0,a.K)){c=a.b.i.J;d=!!(a.b.j&8);if(0>=b||60<=(a.I+=b)){e=a.b.g;if(a.F.PC){var f=a.A&&a.A.ba||8,e=e||0,e=8==f?Qa(e,void 0):H(e,void 0);a.F.PC.textContent!=e&&(a.F.PC.textContent=e)}a.I=0}-1>b?a.j=a.b.g:0f.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(f=window.location.pathname+f),e?"}"==e.slice(-1)?(e=e.slice(0,-1),1]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(e?" parms='"+e+"'":"")+(f?' url="'+f+'"':"")));g||(a=a.replace(/().*?(<\/xsl:variable>)/,"$1PDPjs$2"), -a=a.replace(/().*?(<\/xsl:variable>)/,"$1"+d+"$2"));f=null;if("<"==a.charAt(0))try{g||(a=a.replace(/\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(f=new window.ActiveXObject("Microsoft.XMLDOM"),f.async=!1,f.loadXML(a)):f=(new window.DOMParser).parseFromString(a,"text/xml")}catch(p){f=null,a=p.message}else a="unrecognized XML: "+(255/g.exec(a)){var e=d[2];b("Loading "+e+"...");J(e,null,!0,function(g,f,h){if(h||!f)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(g=d[3])if(h=f.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],m,n=/( [a-z]+=)(['"])(.*?)\2/g;m=n.exec(g);)k=0>k.indexOf(m[1])?k.replace(">",m[0]+">"):k.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=k&&(f=f.replace(h[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}f=f.replace(/<\?xml[^>]*>[\r\n]*/, -"");a=a.replace(d[0],f);Gf(a,b,c)}})}else c(a,null)} -function Hf(a,b,c,d,e){function g(a){if(void 0===k){var b=h&&D(h,"machine-warning");k=b&&b[0]||h}k&&(k.innerHTML=Va(a))}function f(a){g("Error: "+a);m&&(--Df||wb(!0));m=!1}var h,k,m=!0;Df++;ua[b]={};try{if(h=document.getElementById(b)){var n;if("object"==typeof resources&&(n=resources.css)){var p=document.head||document.getElementsByTagName("head")[0],q=document.createElement("style");q.type="text/css";q.styleSheet?q.styleSheet.cssText=n:q.appendChild(document.createTextNode(n));p.appendChild(q)}d|| -(n=a,"pdp"==a.substr(0,3)&&(n="pdpjs"),d="/versions/"+n+"/1.34.0/components.xsl");n=function(e,k){k?Ef(d,null,a,null,!1,g,function(a,e){e?(ta(b,d,a),g("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=k.transformNode(e))?(h.outerHTML=e,--Df||wb(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(a=new XSLTProcessor,a.importStylesheet(e),(e=a.transformToFragment(k,document))?h.parentNode?(h.parentNode.replaceChild(e,h),--Df|| -wb(!0)):f("invalid machine element: "+b):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(a)}):f(e)};"<"!=c.charAt(0)?Ef(c,b,a,e,!0,g,n):Ff(c,null,b,a,e,!1,g,n)}else f("missing machine element: "+b)}catch(K){f(K.message)}return m}window.embedPDP10=function(a,b,c,d){wb(!1);return Hf("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){wb(!1);return Hf("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return z(b,a+".machine")}; -window.processMachineScript=function(a,b){var c=!1;a+=".machine";if("string"==typeof b&&!za[a]){for(var c=!0,d=za,e=a,g=b.length,f=[],h=[],k="",m=null,n=0;ng.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g),e?"}"==e.slice(-1)?(e=e.slice(0,-1),1]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(e?" parms='"+e+"'":"")+(g?' url="'+g+'"':"")));f||(a=a.replace(/().*?(<\/xsl:variable>)/,"$1PDPjs$2"), +a=a.replace(/().*?(<\/xsl:variable>)/,"$1"+d+"$2"));g=null;if("<"==a.charAt(0))try{f||(a=a.replace(/\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(p){g=null,a=p.message}else a="unrecognized XML: "+(255/g.exec(a)){var e=d[2];b("Loading "+e+"...");J(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],m,n=/( [a-z]+=)(['"])(.*?)\2/g;m=n.exec(f);)k=0>k.indexOf(m[1])?k.replace(">",m[0]+">"):k.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/, +"");a=a.replace(d[0],g);Gf(a,b,c)}})}else c(a,null)} +function Hf(a,b,c,d,e){function f(a){if(void 0===k){var b=h&&D(h,"machine-warning");k=b&&b[0]||h}k&&(k.innerHTML=Va(a))}function g(a){f("Error: "+a);m&&(--Df||wb(!0));m=!1}var h,k,m=!0;Df++;ua[b]={};try{if(h=document.getElementById(b)){var n;if("object"==typeof resources&&(n=resources.css)){var p=document.head||document.getElementsByTagName("head")[0],q=document.createElement("style");q.type="text/css";q.styleSheet?q.styleSheet.cssText=n:q.appendChild(document.createTextNode(n));p.appendChild(q)}d|| +(n=a,"pdp"==a.substr(0,3)&&(n="pdpjs"),d="/versions/"+n+"/1.34.0/components.xsl");n=function(e,k){k?Ef(d,null,a,null,!1,f,function(a,e){e?(ta(b,d,a),f("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=k.transformNode(e))?(h.outerHTML=e,--Df||wb(!0)):g("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(a=new XSLTProcessor,a.importStylesheet(e),(e=a.transformToFragment(k,document))?h.parentNode?(h.parentNode.replaceChild(e,h),--Df|| +wb(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?Ef(c,b,a,e,!0,f,n):Ff(c,null,b,a,e,!1,f,n)}else g("missing machine element: "+b)}catch(K){g(K.message)}return m}window.embedPDP10=function(a,b,c,d){wb(!1);return Hf("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){wb(!1);return Hf("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return z(b,a+".machine")}; +window.processMachineScript=function(a,b){var c=!1;a+=".machine";if("string"==typeof b&&!za[a]){for(var c=!0,d=za,e=a,f=b.length,g=[],h=[],k="",m=null,n=0;n