Fixed some sloppy coding (my bad)

This commit is contained in:
Jeff 2016-09-23 13:45:01 -07:00 committed by Jeff Parsons
commit b5a7525ad2
5 changed files with 449 additions and 329 deletions

View file

@ -34,9 +34,7 @@
"use strict";
if (NODE) {
var str = require("../../shared/lib/strlib");
var PDP11 = require("./defines");
var MessagesPDP11 = require("./messages");
}
/**
@ -69,6 +67,21 @@ PDP11.fnBIC = function(src, dst)
return result;
};
/**
* fnBICB(dst, src)
*
* @this {CPUStatePDP11}
* @param {number} src
* @param {number} dst
* @return {number} (~src & dst)
*/
PDP11.fnBICB = function(src, dst)
{
var result = ~src & dst;
this.updateNZFlags(result << 8);
return result;
};
/**
* fnBIS(dst, src)
*
@ -84,6 +97,21 @@ PDP11.fnBIS = function(src, dst)
return result;
};
/**
* fnBISB(dst, src)
*
* @this {CPUStatePDP11}
* @param {number} src
* @param {number} dst
* @return {number} (src | dst)
*/
PDP11.fnBISB = function(src, dst)
{
var result = src | dst;
this.updateNZFlags(result << 8);
return result;
};
/**
* fnSUB(dst, src)
*
@ -99,28 +127,6 @@ PDP11.fnSUB = function(src, dst)
return result & 0xffff;
};
/**
* op1170(opCode)
*
* @this {CPUStatePDP11}
* @param {number} opCode
*/
PDP11.op1170 = function(opCode)
{
PDP11.aOpsF000_1170[opCode >> 12].call(this, opCode);
};
/**
* op0XXX_1170(opCode)
*
* @this {CPUStatePDP11}
* @param {number} opCode
*/
PDP11.op0XXX_1170 = function(opCode)
{
// PDP11.aOpsF000_1170[opCode >> 12].call(this, opCode);
};
/**
* opADD(opCode)
*
@ -145,6 +151,18 @@ PDP11.opBIC = function(opCode)
this.nStepCycles -= 1;
};
/**
* opBICB(opCode)
*
* @this {CPUStatePDP11}
* @param {number} opCode
*/
PDP11.opBICB = function(opCode)
{
this.updateByteByMode(opCode, this.readByteByMode(opCode >> PDP11.SRCMODE.SHIFT), PDP11.fnBICB);
this.nStepCycles -= 1;
};
/**
* opBIS(opCode)
*
@ -157,6 +175,18 @@ PDP11.opBIS = function(opCode)
this.nStepCycles -= 1;
};
/**
* opBISB(opCode)
*
* @this {CPUStatePDP11}
* @param {number} opCode
*/
PDP11.opBISB = function(opCode)
{
this.updateByteByMode(opCode, this.readByteByMode(opCode >> PDP11.SRCMODE.SHIFT), PDP11.fnBISB);
this.nStepCycles -= 1;
};
/**
* opBIT(opCode)
*
@ -169,6 +199,18 @@ PDP11.opBIT = function(opCode)
this.nStepCycles -= 1;
};
/**
* opBITB(opCode)
*
* @this {CPUStatePDP11}
* @param {number} opCode
*/
PDP11.opBITB = function(opCode)
{
this.updateNZFlags((this.readByteByMode(opCode >> PDP11.SRCMODE.SHIFT) & this.readByteByMode(opCode)) << 8);
this.nStepCycles -= 1;
};
/**
* opCMP(opCode)
*
@ -188,6 +230,25 @@ PDP11.opCMP = function(opCode)
this.nStepCycles -= 1;
};
/**
* opCMPB(opCode)
*
* @this {CPUStatePDP11}
* @param {number} opCode
*/
PDP11.opCMPB = function(opCode)
{
var src = this.readByteByMode(opCode >> PDP11.SRCMODE.SHIFT) << 8;
var dst = this.readByteByMode(opCode) << 8;
var result = src - dst;
/*
* NOTE: CMP calculates (src - dst) rather than (dst - src), so when we call updateSubFlags(),
* we must reverse the order of the src and dst parameters.
*/
this.updateSubFlags(result, dst, src);
this.nStepCycles -= 1;
};
/**
* opMOV(opCode)
*
@ -212,7 +273,7 @@ PDP11.opMOVB = function(opCode)
/*
* When dst is a register, data must be sign-extended; otherwise, sign-extension is unnecessary (but harmless).
*/
this.updateNZFlags(this.writeByteByMode(opCode, (data & 0x80)? data | 0xff00 : data));
this.updateNZFlags(this.writeByteByMode(opCode, (data & 0x80)? data | 0xff00 : data) << 8);
this.nStepCycles -= 1;
};
@ -239,6 +300,28 @@ PDP11.opSUB = function(opCode)
this.nStepCycles -= 1;
};
/**
* op1170(opCode)
*
* @this {CPUStatePDP11}
* @param {number} opCode
*/
PDP11.op1170 = function(opCode)
{
PDP11.aOpsF000_1170[opCode >> 12].call(this, opCode);
};
/**
* op0XXX_1170(opCode)
*
* @this {CPUStatePDP11}
* @param {number} opCode
*/
PDP11.op0XXX_1170 = function(opCode)
{
// PDP11.aOpsF000_1170[opCode >> 12].call(this, opCode);
};
PDP11.aOpsF000_1170 = [
PDP11.op0XXX_1170,
PDP11.opMOV, // MOV 01SSDD
@ -250,10 +333,10 @@ PDP11.aOpsF000_1170 = [
PDP11.opNOP, // 0x7XXX
PDP11.opNOP, // 0x8XXX
PDP11.opMOVB, // MOVB 11SSDD
PDP11.opNOP, // 0xAXXX
PDP11.opNOP, // 0xBXXX
PDP11.opNOP, // 0xCXXX
PDP11.opNOP, // 0xDXXX
PDP11.opCMPB, // CMPB 12SSDD
PDP11.opBITB, // BITB 13SSDD
PDP11.opBICB, // BICB 14SSDD
PDP11.opBISB, // BISB 15SSDD
PDP11.opSUB, // SUB 16SSDD
PDP11.opNOP // 0xFXXX
];