Refer to all 11/45+ instructions as 11/45, rather than 11/70, since the 11/70 doesn't appear to have added any instructions to the 11/45's set
This commit is contained in:
parent
1e080e720e
commit
2ce661e141
4 changed files with 48 additions and 48 deletions
|
|
@ -107,7 +107,7 @@ function BusPDP11(parmsBus, cpu, dbg)
|
|||
|
||||
/*
|
||||
* WARNING: Instead of dynamically calculating nBlockShift based on nBusWidth, as described above, we
|
||||
* now force nBlockSize to IOPAGE_LENGTH, because that's what our IOController functions currently require.
|
||||
* now force nBlockSize to IOPAGE_LENGTH, because that's what our IOController functions currently assume.
|
||||
*
|
||||
* this.nBlockShift = (this.nBusWidth >> 1) + 2;
|
||||
* if (this.nBlockShift < 10) this.nBlockShift = 10;
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ if (NODE) {
|
|||
}
|
||||
|
||||
/*
|
||||
* Decoding starts at the bottom of this file, in op1120() and op1170().
|
||||
* Decoding starts at the bottom of this file, in op1120() and op1145().
|
||||
*
|
||||
* The basic decoding approach is to dispatch on the top 4 bits of the opcode, and if further
|
||||
* decoding is required, the dispatched function will dispatch on the next 4 bits, and so on
|
||||
|
|
@ -2088,103 +2088,103 @@ PDP11.aOp8CXn_1120 = [
|
|||
];
|
||||
|
||||
/**
|
||||
* op1170(opCode)
|
||||
* op1145(opCode)
|
||||
*
|
||||
* @this {CPUStatePDP11}
|
||||
* @param {number} opCode
|
||||
*/
|
||||
PDP11.op1170 = function(opCode)
|
||||
PDP11.op1145 = function(opCode)
|
||||
{
|
||||
PDP11.aOpXnnn_1170[opCode >> 12].call(this, opCode);
|
||||
PDP11.aOpXnnn_1145[opCode >> 12].call(this, opCode);
|
||||
};
|
||||
|
||||
/**
|
||||
* op0Xnn_1170(opCode)
|
||||
* op0Xnn_1145(opCode)
|
||||
*
|
||||
* @this {CPUStatePDP11}
|
||||
* @param {number} opCode
|
||||
*/
|
||||
PDP11.op0Xnn_1170 = function(opCode)
|
||||
PDP11.op0Xnn_1145 = function(opCode)
|
||||
{
|
||||
PDP11.aOp0Xnn_1170[(opCode >> 8) & 0xf].call(this, opCode);
|
||||
PDP11.aOp0Xnn_1145[(opCode >> 8) & 0xf].call(this, opCode);
|
||||
};
|
||||
|
||||
/**
|
||||
* op0DXn_1170(opCode)
|
||||
* op0DXn_1145(opCode)
|
||||
*
|
||||
* @this {CPUStatePDP11}
|
||||
* @param {number} opCode
|
||||
*/
|
||||
PDP11.op0DXn_1170 = function(opCode)
|
||||
PDP11.op0DXn_1145 = function(opCode)
|
||||
{
|
||||
PDP11.aOp0DXn_1170[(opCode >> 6) & 0x3].call(this, opCode);
|
||||
PDP11.aOp0DXn_1145[(opCode >> 6) & 0x3].call(this, opCode);
|
||||
};
|
||||
|
||||
/**
|
||||
* op00Xn_1170(opCode)
|
||||
* op00Xn_1145(opCode)
|
||||
*
|
||||
* @this {CPUStatePDP11}
|
||||
* @param {number} opCode
|
||||
*/
|
||||
PDP11.op00Xn_1170 = function(opCode)
|
||||
PDP11.op00Xn_1145 = function(opCode)
|
||||
{
|
||||
PDP11.aOp00Xn_1170[(opCode >> 4) & 0xf].call(this, opCode);
|
||||
PDP11.aOp00Xn_1145[(opCode >> 4) & 0xf].call(this, opCode);
|
||||
};
|
||||
|
||||
/**
|
||||
* op000X_1170(opCode)
|
||||
* op000X_1145(opCode)
|
||||
*
|
||||
* @this {CPUStatePDP11}
|
||||
* @param {number} opCode
|
||||
*/
|
||||
PDP11.op000X_1170 = function(opCode)
|
||||
PDP11.op000X_1145 = function(opCode)
|
||||
{
|
||||
PDP11.aOp000X_1170[opCode & 0xf].call(this, opCode);
|
||||
PDP11.aOp000X_1145[opCode & 0xf].call(this, opCode);
|
||||
};
|
||||
|
||||
/**
|
||||
* op7Xnn_1170(opCode)
|
||||
* op7Xnn_1145(opCode)
|
||||
*
|
||||
* @this {CPUStatePDP11}
|
||||
* @param {number} opCode
|
||||
*/
|
||||
PDP11.op7Xnn_1170 = function(opCode)
|
||||
PDP11.op7Xnn_1145 = function(opCode)
|
||||
{
|
||||
PDP11.aOp7Xnn_1170[(opCode >> 8) & 0xf].call(this, opCode);
|
||||
PDP11.aOp7Xnn_1145[(opCode >> 8) & 0xf].call(this, opCode);
|
||||
};
|
||||
|
||||
/**
|
||||
* op8Xnn_1170(opCode)
|
||||
* op8Xnn_1145(opCode)
|
||||
*
|
||||
* @this {CPUStatePDP11}
|
||||
* @param {number} opCode
|
||||
*/
|
||||
PDP11.op8Xnn_1170 = function(opCode)
|
||||
PDP11.op8Xnn_1145 = function(opCode)
|
||||
{
|
||||
PDP11.aOp8Xnn_1170[(opCode >> 8) & 0xf].call(this, opCode);
|
||||
PDP11.aOp8Xnn_1145[(opCode >> 8) & 0xf].call(this, opCode);
|
||||
};
|
||||
|
||||
/**
|
||||
* op8DXn_1170(opCode)
|
||||
* op8DXn_1145(opCode)
|
||||
*
|
||||
* @this {CPUStatePDP11}
|
||||
* @param {number} opCode
|
||||
*/
|
||||
PDP11.op8DXn_1170 = function(opCode)
|
||||
PDP11.op8DXn_1145 = function(opCode)
|
||||
{
|
||||
PDP11.aOp8DXn_1170[(opCode >> 6) & 0x3].call(this, opCode);
|
||||
PDP11.aOp8DXn_1145[(opCode >> 6) & 0x3].call(this, opCode);
|
||||
};
|
||||
|
||||
PDP11.aOpXnnn_1170 = [
|
||||
PDP11.op0Xnn_1170, // 0x0nnn
|
||||
PDP11.aOpXnnn_1145 = [
|
||||
PDP11.op0Xnn_1145, // 0x0nnn
|
||||
PDP11.opMOV, // 0x1nnn 01SSDD 11/20+ 2.3
|
||||
PDP11.opCMP, // 0x2nnn 02SSDD 11/20+ 2.3*
|
||||
PDP11.opBIT, // 0x3nnn 03SSDD 11/20+ 2.9*
|
||||
PDP11.opBIC, // 0x4nnn 04SSDD 11/20+ 2.9
|
||||
PDP11.opBIS, // 0x5nnn 05SSDD 11/20+ 2.3
|
||||
PDP11.opADD, // 0x6nnn 06SSDD 11/20+ 2.3
|
||||
PDP11.op7Xnn_1170, // 0x7nnn
|
||||
PDP11.op8Xnn_1170, // 0x8nnn
|
||||
PDP11.op7Xnn_1145, // 0x7nnn
|
||||
PDP11.op8Xnn_1145, // 0x8nnn
|
||||
PDP11.opMOVB, // 0x9nnn 11SSDD 11/20+ 2.3
|
||||
PDP11.opCMPB, // 0xAnnn 12SSDD 11/20+ 2.3
|
||||
PDP11.opBITB, // 0xBnnn 13SSDD 11/20+ 2.9
|
||||
|
|
@ -2194,8 +2194,8 @@ PDP11.aOpXnnn_1170 = [
|
|||
PDP11.opUndefined // 0xFnnn
|
||||
];
|
||||
|
||||
PDP11.aOp0Xnn_1170 = [
|
||||
PDP11.op00Xn_1170, // 0x00nn
|
||||
PDP11.aOp0Xnn_1145 = [
|
||||
PDP11.op00Xn_1145, // 0x00nn
|
||||
PDP11.opBR, // 0x01nn 0004XX 11/20+ 2.6
|
||||
PDP11.opBNE, // 0x02nn 0010XX 11/20+ 2.6**
|
||||
PDP11.opBEQ, // 0x03nn 0014XX 11/20+ 2.6**
|
||||
|
|
@ -2208,20 +2208,20 @@ PDP11.aOp0Xnn_1170 = [
|
|||
PDP11.op0AXn_1120, // 0x0Ann
|
||||
PDP11.op0BXn_1120, // 0x0Bnn
|
||||
PDP11.op0CXn_1120, // 0x0Cnn
|
||||
PDP11.op0DXn_1170, // 0x0Dnn
|
||||
PDP11.op0DXn_1145, // 0x0Dnn
|
||||
PDP11.opUndefined, // 0x0Enn
|
||||
PDP11.opUndefined // 0x0Fnn
|
||||
];
|
||||
|
||||
PDP11.aOp0DXn_1170 = [
|
||||
PDP11.aOp0DXn_1145 = [
|
||||
PDP11.opMARK, // 0x0D0n 11/45+
|
||||
PDP11.opMFPI, // 0x0D4n 11/45+
|
||||
PDP11.opMTPI, // 0x0D8n 11/45+
|
||||
PDP11.opSXT // 0x0DCn 11/45+
|
||||
];
|
||||
|
||||
PDP11.aOp00Xn_1170 = [
|
||||
PDP11.op000X_1170, // 0x000n 000000-000017
|
||||
PDP11.aOp00Xn_1145 = [
|
||||
PDP11.op000X_1145, // 0x000n 000000-000017
|
||||
PDP11.opUndefined, // 0x001n 000020-000037
|
||||
PDP11.opUndefined, // 0x002n 000040-000057
|
||||
PDP11.opUndefined, // 0x003n 000060-000077
|
||||
|
|
@ -2239,7 +2239,7 @@ PDP11.aOp00Xn_1170 = [
|
|||
PDP11.opSWAB // 0x00Fn 0003DD 11/20+ 2.3
|
||||
];
|
||||
|
||||
PDP11.aOp000X_1170 = [
|
||||
PDP11.aOp000X_1145 = [
|
||||
PDP11.opHALT, // 0x0000 000000 11/20+ 1.8
|
||||
PDP11.opWAIT, // 0x0001 000001 11/20+ 1.8
|
||||
PDP11.opRTI, // 0x0002 000002 11/20+ 4.8
|
||||
|
|
@ -2258,7 +2258,7 @@ PDP11.aOp000X_1170 = [
|
|||
PDP11.opUndefined // 0x000F
|
||||
];
|
||||
|
||||
PDP11.aOp7Xnn_1170 = [
|
||||
PDP11.aOp7Xnn_1145 = [
|
||||
PDP11.opMUL, // 0x70nn 11/45+
|
||||
PDP11.opMUL, // 0x71nn 11/45+
|
||||
PDP11.opDIV, // 0x72nn 11/45+
|
||||
|
|
@ -2277,7 +2277,7 @@ PDP11.aOp7Xnn_1170 = [
|
|||
PDP11.opSOB // 0x7Fnn 11/45+
|
||||
];
|
||||
|
||||
PDP11.aOp8Xnn_1170 = [
|
||||
PDP11.aOp8Xnn_1145 = [
|
||||
PDP11.opBPL, // 0x80nn 1000XX 11/20+ 2.6**
|
||||
PDP11.opBMI, // 0x81nn 1004XX 11/20+ 2.6**
|
||||
PDP11.opBHI, // 0x82nn 1010XX 11/20+ 2.6**
|
||||
|
|
@ -2291,12 +2291,12 @@ PDP11.aOp8Xnn_1170 = [
|
|||
PDP11.op8AXn_1120, // 0x8Ann
|
||||
PDP11.op8BXn_1120, // 0x8Bnn
|
||||
PDP11.op8CXn_1120, // 0x8Cnn
|
||||
PDP11.op8DXn_1170, // 0x8Dnn
|
||||
PDP11.op8DXn_1145, // 0x8Dnn
|
||||
PDP11.opUndefined, // 0x8Enn
|
||||
PDP11.opUndefined // 0x8Fnn
|
||||
];
|
||||
|
||||
PDP11.aOp8DXn_1170 = [
|
||||
PDP11.aOp8DXn_1145 = [
|
||||
PDP11.opUndefined, // 0x8D0n
|
||||
PDP11.opMFPD, // 0x8D4n 11/45+
|
||||
PDP11.opMTPD, // 0x8D8n 11/45+
|
||||
|
|
|
|||
|
|
@ -126,7 +126,7 @@ CPUStatePDP11.prototype.initProcessor = function()
|
|||
if (this.model == PDP11.MODEL_1120) {
|
||||
this.decode = PDP11.op1120.bind(this);
|
||||
} else {
|
||||
this.decode = PDP11.op1170.bind(this);
|
||||
this.decode = PDP11.op1145.bind(this);
|
||||
}
|
||||
|
||||
this.initRegs();
|
||||
|
|
|
|||
Loading…
Reference in a new issue