Added preliminary first-order opcode dispatch table

This commit is contained in:
Jeff Parsons 2017-02-25 16:21:21 -08:00 committed by Jeff Parsons
commit cb4d054ead
4 changed files with 665 additions and 22 deletions

View file

@ -33,7 +33,26 @@ if (NODE) {
}
/**
* opUUO(000000 000000)
* opUUO(0xx000 000000): Unimplemented User Operation
*
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-64:
*
* Store the instruction code, A and the effective address E in bits 0-8, 9-12 and 18-35 respectively of
* location 40; clear bits 13-17. Execute the instruction contained in location 41. The original contents
* of location 40 are lost.
*
* All of these codes are equivalent when they occur in the Monitor or when time sharing is not in effect.
* But when a UUO appears in a user program, a code in the range 001-037 uses relocated locations 40 and 41
* (ie 40 and 41 in the user's block) and is thus entirely a part of and under control of the user program.
*
* A code in the range 040-077 on the other hand uses unrelocated 40 and 41, and the instruction in the latter
* location is under control of the Monitor; these codes are thus specifically for user communication with
* the Monitor, which interprets them (refer to the Monitor manual for the meanings of the various codes).
*
* The code 000 executes in the same way as 040-077 but is not a standard communication code: it is included
* so that control returns to the Monitor should a user program wipe itself out.
*
* For a second processor connected to the same memory, the UUO trap is locations 140-141 instead of 40-41.
*
* @this {CPUStatePDP10}
* @param {number} opCode
@ -43,7 +62,22 @@ PDP10.opUUO = function(opCode)
};
/**
* opUFA(130000 000000)
* opUFA(130000 000000): Unnormalized Floating Add
*
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-37:
*
* Floating add the contents of location E to AC. If the double length fraction in the sum is zero, clear
* accumulator A+1. Otherwise normalize the sum only if the magnitude of its fractional part is >= 1, and place
* the high order part of the result in AC A+1. The original contents of AC and E are unaffected.
*
* NOTE: The result is placed in accumulator A+1. T his is the only arithmetic instruction that stores the result
* in a second accumulator, leaving the original operands intact.
*
* If the exponent of the sum following the one-step normalization is > 127, set Overflow and Floating Overflow;
* the result stored has an exponent 256 less than the correct one.
*
* SIDEBAR: The exponent of the sum is equal to that of the larger summand unless addition of the fractions
* overflows, in which case it is greater by 1. Exponent overflow can occur only in the latter case.
*
* @this {CPUStatePDP10}
* @param {number} opCode
@ -53,7 +87,15 @@ PDP10.opUFA = function(opCode)
};
/**
* opDFN(131000 000000)
* opDFN(131000 000000): Double Floating Negate
*
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-37:
*
* Negate the double length floating point number composed of the contents of AC and location E with AC on the left.
* Do this by taking the twos complement of the number whose sign is AC bit 0, whose exponent is in AC bits 1-8, and
* whose fraction is the 54-bit string in bits 9-35 of AC and location E. Place the high order word of the result
* in AC; place the low order part of the fraction in bits 9-35 of location E without altering the original contents
* of bits 0-8 of that location.
*
* @this {CPUStatePDP10}
* @param {number} opCode
@ -63,7 +105,28 @@ PDP10.opDFN = function(opCode)
};
/**
* opFSC(132000 000000)
* opFSC(132000 000000): Floating Scale
*
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-34:
*
* If the fractional part of AC is zero, clear AC. Otherwise add the scale factor given by E to the exponent part
* of AC (thus multiplying AC by 2^E), normalize the resulting word bringing 0s into bit positions vacated at the
* right, and place the result back in AC.
*
* NOTE: A negative E is represented in standard twos complement notation, but the hardware compensates for this
* when scaling the exponent.
*
* If the exponent after normalization is > 127, set Overflow and Floating Overflow; the result stored has an
* exponent 256 less than the correct one. If < -128, set Overflow, Floating Overflow and Floating Underflow;
* the result stored has an exponent 256 greater than the correct one.
*
* SIDEBAR: This instruction can be used to float a fixed number with 27 or fewer significant bits. To float an
* integer contained within AC bits 9-35,
*
* FSC AC,233
*
* inserts the correct exponent to move the binary point from the right end to the left of bit 9 and then normalizes
* (233(base 8) = 155(base 10) = 128 + 27).
*
* @this {CPUStatePDP10}
* @param {number} opCode
@ -73,7 +136,23 @@ PDP10.opFSC = function(opCode)
};
/**
* opIBP(133000 000000)
* opIBP(133000 000000): Increment Byte Pointer
*
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-16:
*
* Increment the byte pointer in location E as explained above.
*
* FROM ABOVE: To facilitate processing a series of bytes, several of the byte instructions increment the pointer,
* ie, modify it so that it points to the next byte position in a set of memory locations. Bytes are processed from
* left to right in a word, so incrementing merely replaces the current value of P by P - S, unless there is
* insufficient space in the present location for another byte of the specified size (P - S < 0). In this case Y is
* increased by one to point to the next consecutive location, and P is set to 36 - S to point to the first byte at
* the left in the new location.
*
* CAUTION: Do not allow Y to reach maximum value. The whole pointer is incremented, so if Y is 2^18 - 1 it becomes
* zero and X is also incremented. The address calculation for the pointer uses the original X, but if a priority
* interrupt should occur before the calculation is complete, the incremented X is used when the instruction is
* repeated.
*
* @this {CPUStatePDP10}
* @param {number} opCode
@ -3681,3 +3760,551 @@ PDP10.opCONSZ = function(opCode)
PDP10.opCONSO = function(opCode)
{
};
/**
* opIO(opCode)
*
* @this {CPUStatePDP10}
* @param {number} opCode
*/
PDP10.opIO = function(opCode)
{
PDP10.opUndefined.call(this, opCode);
};
/**
* opUndefined()
*
* @this {CPUStatePDP10}
* @param {number} opCode
*/
PDP10.opUndefined = function(opCode)
{
};
/**
* opKA10(opCode)
*
* @this {CPUStatePDP10}
* @param {number} opCode
*/
PDP10.opKA10 = function(opCode)
{
var op = (opCode / PDP10.OPCODE.SHIFT)|0;
PDP10.aOpXXX_KA10[op].call(this, opCode);
};
PDP10.aOpXXX_KA10 = [
PDP10.opUUO, // 0o000xxx yyyyyy
PDP10.opUUO, // 0o001xxx yyyyyy
PDP10.opUUO, // 0o002xxx yyyyyy
PDP10.opUUO, // 0o003xxx yyyyyy
PDP10.opUUO, // 0o004xxx yyyyyy
PDP10.opUUO, // 0o005xxx yyyyyy
PDP10.opUUO, // 0o006xxx yyyyyy
PDP10.opUUO, // 0o007xxx yyyyyy
PDP10.opUUO, // 0o010xxx yyyyyy
PDP10.opUUO, // 0o011xxx yyyyyy
PDP10.opUUO, // 0o012xxx yyyyyy
PDP10.opUUO, // 0o013xxx yyyyyy
PDP10.opUUO, // 0o014xxx yyyyyy
PDP10.opUUO, // 0o015xxx yyyyyy
PDP10.opUUO, // 0o016xxx yyyyyy
PDP10.opUUO, // 0o017xxx yyyyyy
PDP10.opUUO, // 0o020xxx yyyyyy
PDP10.opUUO, // 0o021xxx yyyyyy
PDP10.opUUO, // 0o022xxx yyyyyy
PDP10.opUUO, // 0o023xxx yyyyyy
PDP10.opUUO, // 0o024xxx yyyyyy
PDP10.opUUO, // 0o025xxx yyyyyy
PDP10.opUUO, // 0o026xxx yyyyyy
PDP10.opUUO, // 0o027xxx yyyyyy
PDP10.opUUO, // 0o030xxx yyyyyy
PDP10.opUUO, // 0o031xxx yyyyyy
PDP10.opUUO, // 0o032xxx yyyyyy
PDP10.opUUO, // 0o033xxx yyyyyy
PDP10.opUUO, // 0o034xxx yyyyyy
PDP10.opUUO, // 0o035xxx yyyyyy
PDP10.opUUO, // 0o036xxx yyyyyy
PDP10.opUUO, // 0o037xxx yyyyyy
PDP10.opUUO, // 0o040xxx yyyyyy
PDP10.opUUO, // 0o041xxx yyyyyy
PDP10.opUUO, // 0o042xxx yyyyyy
PDP10.opUUO, // 0o043xxx yyyyyy
PDP10.opUUO, // 0o044xxx yyyyyy
PDP10.opUUO, // 0o045xxx yyyyyy
PDP10.opUUO, // 0o046xxx yyyyyy
PDP10.opUUO, // 0o047xxx yyyyyy
PDP10.opUUO, // 0o050xxx yyyyyy
PDP10.opUUO, // 0o051xxx yyyyyy
PDP10.opUUO, // 0o052xxx yyyyyy
PDP10.opUUO, // 0o053xxx yyyyyy
PDP10.opUUO, // 0o054xxx yyyyyy
PDP10.opUUO, // 0o055xxx yyyyyy
PDP10.opUUO, // 0o056xxx yyyyyy
PDP10.opUUO, // 0o057xxx yyyyyy
PDP10.opUUO, // 0o060xxx yyyyyy
PDP10.opUUO, // 0o061xxx yyyyyy
PDP10.opUUO, // 0o062xxx yyyyyy
PDP10.opUUO, // 0o063xxx yyyyyy
PDP10.opUUO, // 0o064xxx yyyyyy
PDP10.opUUO, // 0o065xxx yyyyyy
PDP10.opUUO, // 0o066xxx yyyyyy
PDP10.opUUO, // 0o067xxx yyyyyy
PDP10.opUUO, // 0o070xxx yyyyyy
PDP10.opUUO, // 0o071xxx yyyyyy
PDP10.opUUO, // 0o072xxx yyyyyy
PDP10.opUUO, // 0o073xxx yyyyyy
PDP10.opUUO, // 0o074xxx yyyyyy
PDP10.opUUO, // 0o075xxx yyyyyy
PDP10.opUUO, // 0o076xxx yyyyyy
PDP10.opUUO, // 0o077xxx yyyyyy
PDP10.opUndefined, // 0o100xxx yyyyyy
PDP10.opUndefined, // 0o101xxx yyyyyy
PDP10.opUndefined, // 0o102xxx yyyyyy
PDP10.opUndefined, // 0o103xxx yyyyyy
PDP10.opUndefined, // 0o104xxx yyyyyy
PDP10.opUndefined, // 0o105xxx yyyyyy
PDP10.opUndefined, // 0o106xxx yyyyyy
PDP10.opUndefined, // 0o107xxx yyyyyy
PDP10.opUndefined, // 0o110xxx yyyyyy
PDP10.opUndefined, // 0o111xxx yyyyyy
PDP10.opUndefined, // 0o112xxx yyyyyy
PDP10.opUndefined, // 0o113xxx yyyyyy
PDP10.opUndefined, // 0o114xxx yyyyyy
PDP10.opUndefined, // 0o115xxx yyyyyy
PDP10.opUndefined, // 0o116xxx yyyyyy
PDP10.opUndefined, // 0o117xxx yyyyyy
PDP10.opUndefined, // 0o120xxx yyyyyy
PDP10.opUndefined, // 0o121xxx yyyyyy
PDP10.opUndefined, // 0o122xxx yyyyyy
PDP10.opUndefined, // 0o123xxx yyyyyy
PDP10.opUndefined, // 0o124xxx yyyyyy
PDP10.opUndefined, // 0o125xxx yyyyyy
PDP10.opUndefined, // 0o126xxx yyyyyy
PDP10.opUndefined, // 0o127xxx yyyyyy
PDP10.opUFA, // 0o130xxx yyyyyy
PDP10.opDFN, // 0o131xxx yyyyyy
PDP10.opFSC, // 0o132xxx yyyyyy
PDP10.opIBP, // 0o133xxx yyyyyy
PDP10.opILDB, // 0o134xxx yyyyyy
PDP10.opLDB, // 0o135xxx yyyyyy
PDP10.opIDPB, // 0o136xxx yyyyyy
PDP10.opDPB, // 0o137xxx yyyyyy
PDP10.opFAD, // 0o140xxx yyyyyy
PDP10.opFADI, // 0o141xxx yyyyyy
PDP10.opFADM, // 0o142xxx yyyyyy
PDP10.opFADB, // 0o143xxx yyyyyy
PDP10.opFADR, // 0o144xxx yyyyyy
PDP10.opFADRI, // 0o145xxx yyyyyy
PDP10.opFADRM, // 0o146xxx yyyyyy
PDP10.opFADRB, // 0o147xxx yyyyyy
PDP10.opFSB, // 0o150xxx yyyyyy
PDP10.opFSBI, // 0o151xxx yyyyyy
PDP10.opFSBM, // 0o152xxx yyyyyy
PDP10.opFSBB, // 0o153xxx yyyyyy
PDP10.opFSBR, // 0o154xxx yyyyyy
PDP10.opFSBRI, // 0o155xxx yyyyyy
PDP10.opFSBRM, // 0o156xxx yyyyyy
PDP10.opFSBRB, // 0o157xxx yyyyyy
PDP10.opFMP, // 0o160xxx yyyyyy
PDP10.opFMPI, // 0o161xxx yyyyyy
PDP10.opFMPM, // 0o162xxx yyyyyy
PDP10.opFMPB, // 0o163xxx yyyyyy
PDP10.opFMPR, // 0o164xxx yyyyyy
PDP10.opFMPRI, // 0o165xxx yyyyyy
PDP10.opFMPRM, // 0o166xxx yyyyyy
PDP10.opFMPRB, // 0o167xxx yyyyyy
PDP10.opFDV, // 0o170xxx yyyyyy
PDP10.opFDVI, // 0o171xxx yyyyyy
PDP10.opFDVM, // 0o172xxx yyyyyy
PDP10.opFDVB, // 0o173xxx yyyyyy
PDP10.opFDVR, // 0o174xxx yyyyyy
PDP10.opFDVRI, // 0o175xxx yyyyyy
PDP10.opFDVRM, // 0o176xxx yyyyyy
PDP10.opFDVRB, // 0o177xxx yyyyyy
PDP10.opMOV, // 0o200xxx yyyyyy
PDP10.opMOVI, // 0o201xxx yyyyyy
PDP10.opMOVM, // 0o202xxx yyyyyy
PDP10.opMOVS, // 0o203xxx yyyyyy
PDP10.opMOVS, // 0o204xxx yyyyyy
PDP10.opMOVSI, // 0o205xxx yyyyyy
PDP10.opMOVSM, // 0o206xxx yyyyyy
PDP10.opMOVSS, // 0o207xxx yyyyyy
PDP10.opMOVN, // 0o210xxx yyyyyy
PDP10.opMOVNI, // 0o211xxx yyyyyy
PDP10.opMOVNM, // 0o212xxx yyyyyy
PDP10.opMOVNS, // 0o213xxx yyyyyy
PDP10.opMOVM, // 0o214xxx yyyyyy
PDP10.opMOVMI, // 0o215xxx yyyyyy
PDP10.opMOVMM, // 0o216xxx yyyyyy
PDP10.opMOVMS, // 0o217xxx yyyyyy
PDP10.opIMUL, // 0o220xxx yyyyyy
PDP10.opIMULI, // 0o221xxx yyyyyy
PDP10.opIMULM, // 0o222xxx yyyyyy
PDP10.opIMULB, // 0o223xxx yyyyyy
PDP10.opMUL, // 0o224xxx yyyyyy
PDP10.opMULI, // 0o225xxx yyyyyy
PDP10.opMULM, // 0o226xxx yyyyyy
PDP10.opMULB, // 0o227xxx yyyyyy
PDP10.opIDIV, // 0o230xxx yyyyyy
PDP10.opIDIVI, // 0o231xxx yyyyyy
PDP10.opIDIVM, // 0o232xxx yyyyyy
PDP10.opIDIVB, // 0o233xxx yyyyyy
PDP10.opDIV, // 0o234xxx yyyyyy
PDP10.opDIVI, // 0o235xxx yyyyyy
PDP10.opDIVM, // 0o236xxx yyyyyy
PDP10.opDIVB, // 0o237xxx yyyyyy
PDP10.opASH, // 0o240xxx yyyyyy
PDP10.opROT, // 0o241xxx yyyyyy
PDP10.opLSH, // 0o242xxx yyyyyy
PDP10.opJFFO, // 0o243xxx yyyyyy
PDP10.opASHC, // 0o244xxx yyyyyy
PDP10.opROTC, // 0o245xxx yyyyyy
PDP10.opLSHC, // 0o246xxx yyyyyy
PDP10.opUndefined, // 0o247xxx yyyyyy
PDP10.opEXCH, // 0o250xxx yyyyyy
PDP10.opBLT, // 0o251xxx yyyyyy
PDP10.opAOBJP, // 0o252xxx yyyyyy
PDP10.opAOBJN, // 0o253xxx yyyyyy
PDP10.opJRST, // 0o254xxx yyyyyy
PDP10.opJFCL, // 0o255xxx yyyyyy
PDP10.opXCT, // 0o256xxx yyyyyy
PDP10.opUndefined, // 0o257xxx yyyyyy
PDP10.opPUSHJ, // 0o260xxx yyyyyy
PDP10.opPUSH, // 0o261xxx yyyyyy
PDP10.opPOP, // 0o262xxx yyyyyy
PDP10.opPOPJ, // 0o263xxx yyyyyy
PDP10.opJSR, // 0o264xxx yyyyyy
PDP10.opJSP, // 0o265xxx yyyyyy
PDP10.opJSA, // 0o266xxx yyyyyy
PDP10.opJRA, // 0o267xxx yyyyyy
PDP10.opADD, // 0o270xxx yyyyyy
PDP10.opADDI, // 0o271xxx yyyyyy
PDP10.opADDM, // 0o272xxx yyyyyy
PDP10.opADDB, // 0o273xxx yyyyyy
PDP10.opSUB, // 0o274xxx yyyyyy
PDP10.opSUBI, // 0o275xxx yyyyyy
PDP10.opSUBM, // 0o276xxx yyyyyy
PDP10.opSUBB, // 0o277xxx yyyyyy
PDP10.opCAI, // 0o300xxx yyyyyy
PDP10.opCAIL, // 0o301xxx yyyyyy
PDP10.opCAIE, // 0o302xxx yyyyyy
PDP10.opCAILE, // 0o303xxx yyyyyy
PDP10.opCAIA, // 0o304xxx yyyyyy
PDP10.opCAIGE, // 0o305xxx yyyyyy
PDP10.opCAIN, // 0o306xxx yyyyyy
PDP10.opCAIG, // 0o307xxx yyyyyy
PDP10.opCA, // 0o310xxx yyyyyy
PDP10.opCAL, // 0o311xxx yyyyyy
PDP10.opCAE, // 0o312xxx yyyyyy
PDP10.opCALE, // 0o313xxx yyyyyy
PDP10.opCAA, // 0o314xxx yyyyyy
PDP10.opCAGE, // 0o315xxx yyyyyy
PDP10.opCAN, // 0o316xxx yyyyyy
PDP10.opCAG, // 0o317xxx yyyyyy
PDP10.opJUMP, // 0o320xxx yyyyyy
PDP10.opJUMPL, // 0o321xxx yyyyyy
PDP10.opJUMPE, // 0o322xxx yyyyyy
PDP10.opJUMPLE, // 0o323xxx yyyyyy
PDP10.opJUMPA, // 0o324xxx yyyyyy
PDP10.opJUMPGE, // 0o325xxx yyyyyy
PDP10.opJUMPN, // 0o326xxx yyyyyy
PDP10.opJUMPG, // 0o327xxx yyyyyy
PDP10.opSKIP, // 0o330xxx yyyyyy
PDP10.opSKIPL, // 0o331xxx yyyyyy
PDP10.opSKIPE, // 0o332xxx yyyyyy
PDP10.opSKIPLE, // 0o333xxx yyyyyy
PDP10.opSKIPA, // 0o334xxx yyyyyy
PDP10.opSKIPGE, // 0o335xxx yyyyyy
PDP10.opSKIPN, // 0o336xxx yyyyyy
PDP10.opSKIPG, // 0o337xxx yyyyyy
PDP10.opAOJ, // 0o340xxx yyyyyy
PDP10.opAOJL, // 0o341xxx yyyyyy
PDP10.opAOJE, // 0o342xxx yyyyyy
PDP10.opAOJLE, // 0o343xxx yyyyyy
PDP10.opAOJA, // 0o344xxx yyyyyy
PDP10.opAOJGE, // 0o345xxx yyyyyy
PDP10.opAOJN, // 0o346xxx yyyyyy
PDP10.opAOJG, // 0o347xxx yyyyyy
PDP10.opAOS, // 0o350xxx yyyyyy
PDP10.opAOSL, // 0o351xxx yyyyyy
PDP10.opAOSE, // 0o352xxx yyyyyy
PDP10.opAOSLE, // 0o353xxx yyyyyy
PDP10.opAOSA, // 0o354xxx yyyyyy
PDP10.opAOSGE, // 0o355xxx yyyyyy
PDP10.opAOSN, // 0o356xxx yyyyyy
PDP10.opAOSG, // 0o357xxx yyyyyy
PDP10.opSOJ, // 0o360xxx yyyyyy
PDP10.opSOJL, // 0o361xxx yyyyyy
PDP10.opSOJE, // 0o362xxx yyyyyy
PDP10.opSOJLE, // 0o363xxx yyyyyy
PDP10.opSOJA, // 0o364xxx yyyyyy
PDP10.opSOJGE, // 0o365xxx yyyyyy
PDP10.opSOJN, // 0o366xxx yyyyyy
PDP10.opSOJG, // 0o367xxx yyyyyy
PDP10.opSOS, // 0o370xxx yyyyyy
PDP10.opSOSL, // 0o371xxx yyyyyy
PDP10.opSOSE, // 0o372xxx yyyyyy
PDP10.opSOSLE, // 0o373xxx yyyyyy
PDP10.opSOSA, // 0o374xxx yyyyyy
PDP10.opSOSGE, // 0o375xxx yyyyyy
PDP10.opSOSN, // 0o376xxx yyyyyy
PDP10.opSOSG, // 0o377xxx yyyyyy
PDP10.opSETZ, // 0o400xxx yyyyyy
PDP10.opSETZI, // 0o401xxx yyyyyy
PDP10.opSETZM, // 0o402xxx yyyyyy
PDP10.opSETZB, // 0o403xxx yyyyyy
PDP10.opAND, // 0o404xxx yyyyyy
PDP10.opANDI, // 0o405xxx yyyyyy
PDP10.opANDM, // 0o406xxx yyyyyy
PDP10.opANDB, // 0o407xxx yyyyyy
PDP10.opANDCA, // 0o410xxx yyyyyy
PDP10.opANDCAI, // 0o411xxx yyyyyy
PDP10.opANDCAM, // 0o412xxx yyyyyy
PDP10.opANDCAB, // 0o413xxx yyyyyy
PDP10.opSETM, // 0o414xxx yyyyyy
PDP10.opSETMI, // 0o415xxx yyyyyy
PDP10.opSETMM, // 0o416xxx yyyyyy
PDP10.opSETMB, // 0o417xxx yyyyyy
PDP10.opANDCM, // 0o420xxx yyyyyy
PDP10.opANDCMI, // 0o421xxx yyyyyy
PDP10.opANDCMM, // 0o422xxx yyyyyy
PDP10.opANDCMB, // 0o423xxx yyyyyy
PDP10.opSETA, // 0o424xxx yyyyyy
PDP10.opSETAI, // 0o425xxx yyyyyy
PDP10.opSETAM, // 0o426xxx yyyyyy
PDP10.opSETAB, // 0o427xxx yyyyyy
PDP10.opXOR, // 0o430xxx yyyyyy
PDP10.opXORI, // 0o431xxx yyyyyy
PDP10.opXORM, // 0o432xxx yyyyyy
PDP10.opXORB, // 0o433xxx yyyyyy
PDP10.opIOR, // 0o434xxx yyyyyy
PDP10.opIORI, // 0o435xxx yyyyyy
PDP10.opIORM, // 0o436xxx yyyyyy
PDP10.opIORB, // 0o437xxx yyyyyy
PDP10.opANDCB, // 0o440xxx yyyyyy
PDP10.opANDCBI, // 0o441xxx yyyyyy
PDP10.opANDCBM, // 0o442xxx yyyyyy
PDP10.opANDCBB, // 0o443xxx yyyyyy
PDP10.opEQV, // 0o444xxx yyyyyy
PDP10.opEQVI, // 0o445xxx yyyyyy
PDP10.opEQVM, // 0o446xxx yyyyyy
PDP10.opEQVB, // 0o447xxx yyyyyy
PDP10.opSETCA, // 0o450xxx yyyyyy
PDP10.opSETCAI, // 0o451xxx yyyyyy
PDP10.opSETCAM, // 0o452xxx yyyyyy
PDP10.opSETCAB, // 0o453xxx yyyyyy
PDP10.opORCA, // 0o454xxx yyyyyy
PDP10.opORCAI, // 0o455xxx yyyyyy
PDP10.opORCAM, // 0o456xxx yyyyyy
PDP10.opORCAB, // 0o457xxx yyyyyy
PDP10.opSETCM, // 0o460xxx yyyyyy
PDP10.opSETCMI, // 0o461xxx yyyyyy
PDP10.opSETCMM, // 0o462xxx yyyyyy
PDP10.opSETCMB, // 0o463xxx yyyyyy
PDP10.opORCM, // 0o464xxx yyyyyy
PDP10.opORCMI, // 0o465xxx yyyyyy
PDP10.opORCMM, // 0o466xxx yyyyyy
PDP10.opORCMB, // 0o467xxx yyyyyy
PDP10.opORCB, // 0o470xxx yyyyyy
PDP10.opORCBI, // 0o471xxx yyyyyy
PDP10.opORCBM, // 0o472xxx yyyyyy
PDP10.opORCBB, // 0o473xxx yyyyyy
PDP10.opSETO, // 0o474xxx yyyyyy
PDP10.opSETOI, // 0o475xxx yyyyyy
PDP10.opSETOM, // 0o476xxx yyyyyy
PDP10.opSETOB, // 0o477xxx yyyyyy
PDP10.opHLL, // 0o500xxx yyyyyy
PDP10.opHLLI, // 0o501xxx yyyyyy
PDP10.opHLLM, // 0o502xxx yyyyyy
PDP10.opHLLS, // 0o503xxx yyyyyy
PDP10.opHRL, // 0o504xxx yyyyyy
PDP10.opHRLI, // 0o505xxx yyyyyy
PDP10.opHRLM, // 0o506xxx yyyyyy
PDP10.opHRLS, // 0o507xxx yyyyyy
PDP10.opHLLZ, // 0o510xxx yyyyyy
PDP10.opHLLZI, // 0o511xxx yyyyyy
PDP10.opHLLZM, // 0o512xxx yyyyyy
PDP10.opHLLZS, // 0o513xxx yyyyyy
PDP10.opHRLZ, // 0o514xxx yyyyyy
PDP10.opHRLZI, // 0o515xxx yyyyyy
PDP10.opHRLZM, // 0o516xxx yyyyyy
PDP10.opHRLZS, // 0o517xxx yyyyyy
PDP10.opHLLO, // 0o520xxx yyyyyy
PDP10.opHLLOI, // 0o521xxx yyyyyy
PDP10.opHLLOM, // 0o522xxx yyyyyy
PDP10.opHLLOS, // 0o523xxx yyyyyy
PDP10.opHRLO, // 0o524xxx yyyyyy
PDP10.opHRLOI, // 0o525xxx yyyyyy
PDP10.opHRLOM, // 0o526xxx yyyyyy
PDP10.opHRLOS, // 0o527xxx yyyyyy
PDP10.opHLLE, // 0o530xxx yyyyyy
PDP10.opHLLEI, // 0o531xxx yyyyyy
PDP10.opHLLEM, // 0o532xxx yyyyyy
PDP10.opHLLES, // 0o533xxx yyyyyy
PDP10.opHRLE, // 0o534xxx yyyyyy
PDP10.opHRLEI, // 0o535xxx yyyyyy
PDP10.opHRLEM, // 0o536xxx yyyyyy
PDP10.opHRLES, // 0o537xxx yyyyyy
PDP10.opHRR, // 0o540xxx yyyyyy
PDP10.opHRRI, // 0o541xxx yyyyyy
PDP10.opHRRM, // 0o542xxx yyyyyy
PDP10.opHRRS, // 0o543xxx yyyyyy
PDP10.opHLR, // 0o544xxx yyyyyy
PDP10.opHLRI, // 0o545xxx yyyyyy
PDP10.opHLRM, // 0o546xxx yyyyyy
PDP10.opHLRS, // 0o547xxx yyyyyy
PDP10.opHRRZ, // 0o550xxx yyyyyy
PDP10.opHRRZI, // 0o551xxx yyyyyy
PDP10.opHRRZM, // 0o552xxx yyyyyy
PDP10.opHRRZS, // 0o553xxx yyyyyy
PDP10.opHLRZ, // 0o554xxx yyyyyy
PDP10.opHLRZI, // 0o555xxx yyyyyy
PDP10.opHLRZM, // 0o556xxx yyyyyy
PDP10.opHLRZS, // 0o557xxx yyyyyy
PDP10.opHRRO, // 0o560xxx yyyyyy
PDP10.opHRROI, // 0o561xxx yyyyyy
PDP10.opHRROM, // 0o562xxx yyyyyy
PDP10.opHRROS, // 0o563xxx yyyyyy
PDP10.opHLRO, // 0o564xxx yyyyyy
PDP10.opHLROI, // 0o565xxx yyyyyy
PDP10.opHLROM, // 0o566xxx yyyyyy
PDP10.opHLROS, // 0o567xxx yyyyyy
PDP10.opHRRE, // 0o570xxx yyyyyy
PDP10.opHRREI, // 0o571xxx yyyyyy
PDP10.opHRREM, // 0o572xxx yyyyyy
PDP10.opHRRES, // 0o573xxx yyyyyy
PDP10.opHLRE, // 0o574xxx yyyyyy
PDP10.opHLREI, // 0o575xxx yyyyyy
PDP10.opHLREM, // 0o576xxx yyyyyy
PDP10.opHLRES, // 0o577xxx yyyyyy
PDP10.opTRN, // 0o600xxx yyyyyy
PDP10.opTLN, // 0o601xxx yyyyyy
PDP10.opTRNE, // 0o602xxx yyyyyy
PDP10.opTLNE, // 0o603xxx yyyyyy
PDP10.opTRNA, // 0o604xxx yyyyyy
PDP10.opTLNA, // 0o605xxx yyyyyy
PDP10.opTRNN, // 0o606xxx yyyyyy
PDP10.opTLNN, // 0o607xxx yyyyyy
PDP10.opTDN, // 0o610xxx yyyyyy
PDP10.opTSN, // 0o611xxx yyyyyy
PDP10.opTDNE, // 0o612xxx yyyyyy
PDP10.opTSNE, // 0o613xxx yyyyyy
PDP10.opTDNA, // 0o614xxx yyyyyy
PDP10.opTSNA, // 0o615xxx yyyyyy
PDP10.opTDNN, // 0o616xxx yyyyyy
PDP10.opTSNN, // 0o617xxx yyyyyy
PDP10.opTRZ, // 0o620xxx yyyyyy
PDP10.opTLZ, // 0o621xxx yyyyyy
PDP10.opTRZE, // 0o622xxx yyyyyy
PDP10.opTLZE, // 0o623xxx yyyyyy
PDP10.opTRZA, // 0o624xxx yyyyyy
PDP10.opTLZA, // 0o625xxx yyyyyy
PDP10.opTRZN, // 0o626xxx yyyyyy
PDP10.opTLZN, // 0o627xxx yyyyyy
PDP10.opTDZ, // 0o630xxx yyyyyy
PDP10.opTSZ, // 0o631xxx yyyyyy
PDP10.opTDZE, // 0o632xxx yyyyyy
PDP10.opTSZE, // 0o633xxx yyyyyy
PDP10.opTDZA, // 0o634xxx yyyyyy
PDP10.opTSZA, // 0o635xxx yyyyyy
PDP10.opTDZN, // 0o636xxx yyyyyy
PDP10.opTSZN, // 0o637xxx yyyyyy
PDP10.opTRC, // 0o640xxx yyyyyy
PDP10.opTLC, // 0o641xxx yyyyyy
PDP10.opTRCE, // 0o642xxx yyyyyy
PDP10.opTLCE, // 0o643xxx yyyyyy
PDP10.opTRCA, // 0o644xxx yyyyyy
PDP10.opTLCA, // 0o645xxx yyyyyy
PDP10.opTRCN, // 0o646xxx yyyyyy
PDP10.opTLCN, // 0o647xxx yyyyyy
PDP10.opTDC, // 0o650xxx yyyyyy
PDP10.opTSC, // 0o651xxx yyyyyy
PDP10.opTDCE, // 0o652xxx yyyyyy
PDP10.opTSCE, // 0o653xxx yyyyyy
PDP10.opTDCA, // 0o654xxx yyyyyy
PDP10.opTSCA, // 0o655xxx yyyyyy
PDP10.opTDCN, // 0o656xxx yyyyyy
PDP10.opTSCN, // 0o657xxx yyyyyy
PDP10.opTRO, // 0o660xxx yyyyyy
PDP10.opTLO, // 0o661xxx yyyyyy
PDP10.opTROE, // 0o662xxx yyyyyy
PDP10.opTLOE, // 0o663xxx yyyyyy
PDP10.opTROA, // 0o664xxx yyyyyy
PDP10.opTLOA, // 0o665xxx yyyyyy
PDP10.opTRON, // 0o666xxx yyyyyy
PDP10.opTLON, // 0o667xxx yyyyyy
PDP10.opTDO, // 0o670xxx yyyyyy
PDP10.opTSO, // 0o671xxx yyyyyy
PDP10.opTDOE, // 0o672xxx yyyyyy
PDP10.opTSOE, // 0o673xxx yyyyyy
PDP10.opTDOA, // 0o674xxx yyyyyy
PDP10.opTSOA, // 0o675xxx yyyyyy
PDP10.opTDON, // 0o676xxx yyyyyy
PDP10.opTSON, // 0o677xxx yyyyyy
PDP10.opIO, // 0o700xxx yyyyyy
PDP10.opIO, // 0o701xxx yyyyyy
PDP10.opIO, // 0o702xxx yyyyyy
PDP10.opIO, // 0o703xxx yyyyyy
PDP10.opIO, // 0o704xxx yyyyyy
PDP10.opIO, // 0o705xxx yyyyyy
PDP10.opIO, // 0o706xxx yyyyyy
PDP10.opIO, // 0o707xxx yyyyyy
PDP10.opIO, // 0o710xxx yyyyyy
PDP10.opIO, // 0o711xxx yyyyyy
PDP10.opIO, // 0o712xxx yyyyyy
PDP10.opIO, // 0o713xxx yyyyyy
PDP10.opIO, // 0o714xxx yyyyyy
PDP10.opIO, // 0o715xxx yyyyyy
PDP10.opIO, // 0o716xxx yyyyyy
PDP10.opIO, // 0o717xxx yyyyyy
PDP10.opIO, // 0o720xxx yyyyyy
PDP10.opIO, // 0o721xxx yyyyyy
PDP10.opIO, // 0o722xxx yyyyyy
PDP10.opIO, // 0o723xxx yyyyyy
PDP10.opIO, // 0o724xxx yyyyyy
PDP10.opIO, // 0o725xxx yyyyyy
PDP10.opIO, // 0o726xxx yyyyyy
PDP10.opIO, // 0o727xxx yyyyyy
PDP10.opIO, // 0o730xxx yyyyyy
PDP10.opIO, // 0o731xxx yyyyyy
PDP10.opIO, // 0o732xxx yyyyyy
PDP10.opIO, // 0o733xxx yyyyyy
PDP10.opIO, // 0o734xxx yyyyyy
PDP10.opIO, // 0o735xxx yyyyyy
PDP10.opIO, // 0o736xxx yyyyyy
PDP10.opIO, // 0o737xxx yyyyyy
PDP10.opIO, // 0o740xxx yyyyyy
PDP10.opIO, // 0o741xxx yyyyyy
PDP10.opIO, // 0o742xxx yyyyyy
PDP10.opIO, // 0o743xxx yyyyyy
PDP10.opIO, // 0o744xxx yyyyyy
PDP10.opIO, // 0o745xxx yyyyyy
PDP10.opIO, // 0o746xxx yyyyyy
PDP10.opIO, // 0o747xxx yyyyyy
PDP10.opIO, // 0o750xxx yyyyyy
PDP10.opIO, // 0o751xxx yyyyyy
PDP10.opIO, // 0o752xxx yyyyyy
PDP10.opIO, // 0o753xxx yyyyyy
PDP10.opIO, // 0o754xxx yyyyyy
PDP10.opIO, // 0o755xxx yyyyyy
PDP10.opIO, // 0o756xxx yyyyyy
PDP10.opIO, // 0o757xxx yyyyyy
PDP10.opIO, // 0o760xxx yyyyyy
PDP10.opIO, // 0o761xxx yyyyyy
PDP10.opIO, // 0o762xxx yyyyyy
PDP10.opIO, // 0o763xxx yyyyyy
PDP10.opIO, // 0o764xxx yyyyyy
PDP10.opIO, // 0o765xxx yyyyyy
PDP10.opIO, // 0o766xxx yyyyyy
PDP10.opIO, // 0o767xxx yyyyyy
PDP10.opIO, // 0o770xxx yyyyyy
PDP10.opIO, // 0o771xxx yyyyyy
PDP10.opIO, // 0o772xxx yyyyyy
PDP10.opIO, // 0o773xxx yyyyyy
PDP10.opIO, // 0o774xxx yyyyyy
PDP10.opIO, // 0o775xxx yyyyyy
PDP10.opIO, // 0o776xxx yyyyyy
PDP10.opIO // 0o777xxx yyyyyy
];

View file

@ -3460,23 +3460,29 @@ class DebuggerPDP10 extends Debugger {
*/
doTest()
{
var aOps = {};
var sOperation;
for (var op = 0o00000; op <= 0o77774; op += 4) {
var opCode = op * Math.pow(2, 21);
var ops = {}, aOpXXX = [];
var op, opXXX, opCode, sOperation;
for (op = 0o00000; op <= 0o77774; op += 4) {
opCode = op * Math.pow(2, 21);
sOperation = this.findInstruction(opCode, false);
if (!sOperation) continue;
if (aOps[sOperation] === undefined) {
aOps[sOperation] = op;
if (ops[sOperation] === undefined) {
ops[sOperation] = op;
} else {
aOps[sOperation] &= op;
ops[sOperation] &= op;
}
opXXX = op >> 6;
if (!aOpXXX[opXXX]) {
aOpXXX[opXXX] = sOperation;
} else if (aOpXXX[opXXX] != sOperation) {
aOpXXX[opXXX] = "XXX";
}
}
for (sOperation in aOps) {
if (sOperation == null) continue;
this.println(sOperation + ": " + this.toStrWord(aOps[sOperation] * Math.pow(2, 21)));
for (sOperation in ops) {
op = ops[sOperation];
this.println(sOperation + ": " + this.toStrWord(op * Math.pow(2, 21)));
// this.println("/**");
// this.println(" * op" + sOperation + "(" + this.toStrWord(aOps[sOperation] * Math.pow(2, 21)) + ")");
// this.println(" * op" + sOperation + "(" + this.toStrWord(op * Math.pow(2, 21)) + ")");
// this.println(" *");
// this.println(" * @this {CPUStatePDP10}");
// this.println(" * @param {number} opCode");
@ -3485,6 +3491,15 @@ class DebuggerPDP10 extends Debugger {
// this.println("{");
// this.println("};\n");
}
// this.println("PDP10.aOpXXX = [");
// for (opXXX = 0o000; opXXX <= 0o777; opXXX++) {
// sOperation = aOpXXX[opXXX];
// sOperation = sOperation? (" PDP10.op" + sOperation + ",") : " PDP10.opUndefined,";
// sOperation = Str.pad(sOperation, 32);
// sOperation += "// " + Str.toOct(opXXX, 3, true) + "xxx yyyyyy";
// this.println(sOperation);
// }
// this.println("];");
}
/**
@ -3652,6 +3667,9 @@ if (DEBUGGER) {
* we're done; otherwise, we must set set R to [E] and repeat the process.
*/
DebuggerPDP10.OPTABLE = {
[PDP10.OPCODE.OPUUO]: { // 0o70000
0o00000: DebuggerPDP10.OPS.UUO
},
[PDP10.OPCODE.OPMASK]: { // 0o77700
0o13000: DebuggerPDP10.OPS.UFA,
0o13100: DebuggerPDP10.OPS.DFN,
@ -3761,9 +3779,6 @@ if (DEBUGGER) {
0o70024: DebuggerPDP10.OPS.CONI,
0o70030: DebuggerPDP10.OPS.CONSZ,
0o70034: DebuggerPDP10.OPS.CONSO
},
[PDP10.OPCODE.OPUUO]: { // 0o70000
0o00000: DebuggerPDP10.OPS.UUO
}
};

View file

@ -108,13 +108,14 @@ var PDP10 = {
OPMODE: 0o77400, // operation with mode
OPCOMP: 0o77000, // operation with compare
OPTEST: 0o71100, // operation with test
OPIO: 0o70034, // input-output instructions
OPIO: 0o70034, // input-output operation
OPUUO: 0o70000, // unimplemented user operation (UUO) mask
OPSHIFT: Math.pow(2, 21), // operation shift
FNSHIFT: 23, // accumulator/function shift
FNMASK: 0o17, // accumulator/function mask (after shift)
IOSHIFT: Math.pow(2, 26), // input-output device code shift
IOMASK: 0o177, // input-output device code mask (after shift)
SHIFT: Math.pow(2, 27), // operation code shift
Y_MASK: 0o777777,
X_SHIFT: 18,
X_MASK: 0o17,

View file

@ -170,8 +170,8 @@ a.ba);break;case "cs":var fb;void 0!==g[3]&&(fb=+g[3]);switch(g[2]){case "int":a
a.f("\tbase #\t\tset default base to #"),a.f("\tcs int #\tset checksum cycle interval to #"),a.f("\tcs start #\tset checksum cycle start count to #"),a.f("\tcs stop #\tset checksum cycle stop count to #"),a.f("\tsp #\t\tset speed multiplier to #")}break;case "t":Le(a,g[0],g[1]);break;case "u":Sd(a,g[1],g[2],8);break;case "v":if("var"==g[0]){Ie(a,b.substr(3))||(d=!1);break}if("ver"==g[0]){a.f((Ab||"PDP10")+" version 1.34.0 ("+a.b.Za+",RELEASE)");a.f(window?window.navigator.userAgent:"");break}f=!0;
break;case "?":if(g[1]){Ke(a,b.substr(1));break}var Dc="commands:",Ec;for(Ec in Ne)Dc+="\n"+Xa(Ec,9)+Ne[Ec];jd(a)||(Dc+="\nnote: history disabled if no exec breakpoints");a.f(Dc);break;default:f=!0}f&&(a.f("unknown command: "+b),d=!1)}}catch(ue){a.f("debugger error: "+(ue.stack||ue.message)),d=!1}return d}function Yc(a,b,c){b=ud(a,b,c);for(var d in b)if(!Fe(a,b[+d]))return!1;return!0}
var Ne={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory","g [#]":"go [to #]",h:"halt","if":"eval expression","int [#]":"request interrupt",k:"stack trace",ln:"list nearest symbol(s)",m:"messages",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine",s:"set options","t [#]":"trace","u [#]":"unassemble","var":"assign variable",ver:"print version"},Ae=20,Be=".WORD HLL HLLZ HLLO HLLE HRL HRLZ HRLO HRLE HRR HRRZ HRRO HRRE HLR HLRZ HLRO HLRE MOV MOVS MOVN MOVM EXCH BLT PUSH POP LDB DPB IBP ILDB IDPB SETZ SETO SETA SETCA SETM SETCM AND ANDCA ANDCM ANDCB IOR ORCA ORCM ORCB XOR EQV LSH LSHC ROT ROTC ADD SUB MUL IMUL DIV IDIV ASH ASHC FSC FADR FSBR FMPR FDVR DFN UFA FAD FSB FMP FDV AOBJP AOBJN CAI CA JUMP SKIP AOJ AOS SOJ SOS TR TL TD TS XCT JFFO JFCL JSR JSP JRST JSA JRA PUSHJ POPJ BLKI DATAI BLKO DATAO CONO CONI CONSZ CONSO UUO".split(" "),
Md=0,Ld=["PC"],Oe={},we=(Oe[32704]={5632:64,5696:63,5760:58,5824:27,5888:28,5952:25,6016:29,6080:26,10240:56,10304:48,10368:46,10432:84,10496:57,10560:49,10624:47,10752:21,10816:22,10880:69,10944:70,11008:88,11072:85,11136:83,11264:91,11328:23,11392:24,11456:92,11520:86,11584:87,11648:89,11712:90},Oe[32512]={6144:65,6400:59,6656:66,6912:60,7168:67,7424:61,7680:68,7936:62,8192:17,8448:18,8704:19,8960:Ae,9216:53,9472:52,9728:55,9984:54,11776:50,12032:51,16384:30,16640:36,16896:37,17152:34,17408:38,
17664:32,17920:44,18176:40,18432:39,18688:45,18944:33,19200:41,19456:35,19712:42,19968:43,20224:31,20480:1,20736:5,20992:2,21248:6,21504:3,21760:7,22016:4,22272:8,22528:9,22784:13,23040:10,23296:14,23552:11,23808:15,24064:12,24320:16},Oe[32256]={12288:71,12800:72,13312:73,13824:74,14336:75,14848:76,15360:77,15872:78},Oe[29248]={24576:79,24640:80,25088:81,25152:82},Oe[28700]={28672:93,28676:94,28680:95,28684:96,28688:97,28692:98,28696:99,28700:100},Oe[28672]={0:101},Oe),xe=["","I","M","S"],ye=" L E LE A GE N G".split(" "),
Md=0,Ld=["PC"],Oe={},we=(Oe[28672]={0:101},Oe[32704]={5632:64,5696:63,5760:58,5824:27,5888:28,5952:25,6016:29,6080:26,10240:56,10304:48,10368:46,10432:84,10496:57,10560:49,10624:47,10752:21,10816:22,10880:69,10944:70,11008:88,11072:85,11136:83,11264:91,11328:23,11392:24,11456:92,11520:86,11584:87,11648:89,11712:90},Oe[32512]={6144:65,6400:59,6656:66,6912:60,7168:67,7424:61,7680:68,7936:62,8192:17,8448:18,8704:19,8960:Ae,9216:53,9472:52,9728:55,9984:54,11776:50,12032:51,16384:30,16640:36,16896:37,
17152:34,17408:38,17664:32,17920:44,18176:40,18432:39,18688:45,18944:33,19200:41,19456:35,19712:42,19968:43,20224:31,20480:1,20736:5,20992:2,21248:6,21504:3,21760:7,22016:4,22272:8,22528:9,22784:13,23040:10,23296:14,23552:11,23808:15,24064:12,24320:16},Oe[32256]={12288:71,12800:72,13312:73,13824:74,14336:75,14848:76,15360:77,15872:78},Oe[29248]={24576:79,24640:80,25088:81,25152:82},Oe[28700]={28672:93,28676:94,28680:95,28684:96,28688:97,28692:98,28696:99,28700:100},Oe),xe=["","I","M","S"],ye=" L E LE A GE N G".split(" "),
ze="N NE NA NN Z ZE ZA ZN C CE CA CN O OE OA ON".split(" "),Nd=1E3,Qd=">> ";M(function(){for(var a=D(document,C,"debugger"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new Cd(d);B(d,c)}});
function Pe(a,b,c){u.call(this,"Computer",a,33554432);this.i.T=!1;this.O=null;Qe(this,b);this.M=Tc(this,"autoPower",a,6);this.w=0;this.Z=+a.busWidth||+a.buswidth;this.K=this.G=this.L=null;this.I=this.U=!1;this.H=this.B=null;this.P=this.N=!1;this.aa=Tc(this,"url")||"";(Math.random()+.1).toString(36);this.j=Re(this);if(this.b=z("CPU",this.id)){this.A=z("Debugger",this.id);this.C=new hc({id:this.Ka+".bus",busWidth:this.Z},this.b,this.A);var d,e=y(this.id);if((this.u=z("Panel",this.id))&&this.u.ja)for(b=
0;b<e.length;b++)d=e[b],d.Y=this.u.Y,d.f=this.u.f,d.ja=this.u.ja;this.f(Ab+" v1.34.0\nCopyright \u00a9 2012-2017 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");for(b=0;b<e.length;b++)d=e[b],d.sa&&d.sa(this,this.C,this.b,this.A);b=null;d=Tc(this,"resume",a);void 0!==d&&(1<d.length?b=this.G=d:this.g=parseInt(d,10));var f;if(a=Tc(this,"state")||(f=!0,a.state))this.L=b=a,f||(this.I=!0,this.g=Se),this.g&&(this.H=new O(this,"1.34.0"),Te(this.H)?b=null: