More register refactoring (no logic changes, so hopefully nothing broken)
This commit is contained in:
parent
6a18abda51
commit
f8bc528de3
5 changed files with 495 additions and 495 deletions
|
|
@ -817,13 +817,13 @@ RK11.prototype.initController = function(data)
|
|||
{
|
||||
var i = 0;
|
||||
if (!data) data = [];
|
||||
this.dsr = data[i++] || (PDP11.RK11.RKDS.RK05 | PDP11.RK11.RKDS.SOK | PDP11.RK11.RKDS.DRDY | PDP11.RK11.RKDS.RRDY);
|
||||
this.err = data[i++] || 0;
|
||||
this.csr = data[i++] || (PDP11.RK11.RKCS.CRDY);
|
||||
this.wcr = data[i++] || 0;
|
||||
this.bar = data[i++] || 0;
|
||||
this.dar = data[i++] || 0;
|
||||
this.dbr = data[i] || 0; // TODO: Determine if there's anything we should be doing to the RKDB register
|
||||
this.regRKDS = data[i++] || (PDP11.RK11.RKDS.RK05 | PDP11.RK11.RKDS.SOK | PDP11.RK11.RKDS.DRDY | PDP11.RK11.RKDS.RRDY);
|
||||
this.regRKER = data[i++] || 0;
|
||||
this.regRKCS = data[i++] || (PDP11.RK11.RKCS.CRDY);
|
||||
this.regRKWC = data[i++] || 0;
|
||||
this.regRKBA = data[i++] || 0;
|
||||
this.regRKDA = data[i++] || 0;
|
||||
this.regRKDB = data[i] || 0; // TODO: Determine if there's anything we should be doing to the RKDB register
|
||||
|
||||
var fSuccess = true;
|
||||
for (var iDrive = 0; iDrive < this.aDrives.length; iDrive++) {
|
||||
|
|
@ -901,19 +901,19 @@ RK11.prototype.processCommand = function()
|
|||
{
|
||||
var fnReadWrite;
|
||||
var fInterrupt = true;
|
||||
var iDrive = (this.dar & PDP11.RK11.RKDA.DS) >> PDP11.RK11.RKDA.SHIFT.DS;
|
||||
var iDrive = (this.regRKDA & PDP11.RK11.RKDA.DS) >> PDP11.RK11.RKDA.SHIFT.DS;
|
||||
var drive = this.aDrives[iDrive];
|
||||
var iCylinder, iHead, iSector, nWords, addr;
|
||||
|
||||
this.csr &= ~PDP11.RK11.RKCS.CRDY;
|
||||
this.regRKCS &= ~PDP11.RK11.RKCS.CRDY;
|
||||
|
||||
switch(this.csr & PDP11.RK11.RKCS.FUNC) {
|
||||
switch(this.regRKCS & PDP11.RK11.RKCS.FUNC) {
|
||||
|
||||
case PDP11.RK11.FUNC.CRESET:
|
||||
this.dsr = drive.status;
|
||||
this.err = 0;
|
||||
this.csr = PDP11.RK11.RKCS.CRDY;
|
||||
this.dar = 0;
|
||||
this.regRKDS = drive.status;
|
||||
this.regRKER = 0;
|
||||
this.regRKCS = PDP11.RK11.RKCS.CRDY;
|
||||
this.regRKDA = 0;
|
||||
break;
|
||||
|
||||
case PDP11.RK11.FUNC.READ:
|
||||
|
|
@ -922,21 +922,21 @@ RK11.prototype.processCommand = function()
|
|||
|
||||
case PDP11.RK11.FUNC.WRITE:
|
||||
if (!fnReadWrite) fnReadWrite = this.writeData;
|
||||
iCylinder = (this.dar & PDP11.RK11.RKDA.CA) >> PDP11.RK11.RKDA.SHIFT.CA;
|
||||
iHead = (this.dar & PDP11.RK11.RKDA.HS) >> PDP11.RK11.RKDA.SHIFT.HS;
|
||||
iSector = this.dar & PDP11.RK11.RKDA.SA;
|
||||
iCylinder = (this.regRKDA & PDP11.RK11.RKDA.CA) >> PDP11.RK11.RKDA.SHIFT.CA;
|
||||
iHead = (this.regRKDA & PDP11.RK11.RKDA.HS) >> PDP11.RK11.RKDA.SHIFT.HS;
|
||||
iSector = this.regRKDA & PDP11.RK11.RKDA.SA;
|
||||
if (iCylinder >= drive.nCylinders) {
|
||||
this.err |= PDP11.RK11.RKER.DRE | PDP11.RK11.RKER.NXC;
|
||||
this.csr |= PDP11.RK11.RKCS.HE | PDP11.RK11.RKCS.ERR;
|
||||
this.regRKER |= PDP11.RK11.RKER.DRE | PDP11.RK11.RKER.NXC;
|
||||
this.regRKCS |= PDP11.RK11.RKCS.HE | PDP11.RK11.RKCS.ERR;
|
||||
break;
|
||||
}
|
||||
if (iSector >= drive.nSectors) {
|
||||
this.err |= PDP11.RK11.RKER.DRE | PDP11.RK11.RKER.NXS;
|
||||
this.csr |= PDP11.RK11.RKCS.HE | PDP11.RK11.RKCS.ERR;
|
||||
this.regRKER |= PDP11.RK11.RKER.DRE | PDP11.RK11.RKER.NXS;
|
||||
this.regRKCS |= PDP11.RK11.RKCS.HE | PDP11.RK11.RKCS.ERR;
|
||||
break;
|
||||
}
|
||||
addr = (((this.csr & PDP11.RK11.RKCS.MEX)) << (16 - PDP11.RK11.RKCS.SHIFT.MEX)) | this.bar;
|
||||
nWords = (0x10000 - this.wcr) & 0xffff;
|
||||
addr = (((this.regRKCS & PDP11.RK11.RKCS.MEX)) << (16 - PDP11.RK11.RKCS.SHIFT.MEX)) | this.regRKBA;
|
||||
nWords = (0x10000 - this.regRKWC) & 0xffff;
|
||||
if (DEBUG && (this.messageEnabled(MessagesPDP11.READ) || this.messageEnabled(MessagesPDP11.WRITE))) {
|
||||
var pos = ((((iCylinder << 1) + iHead) * drive.nSectors) + iSector) * 256;
|
||||
console.log((fnReadWrite == this.readData? "readData" : "writeData") + "(pos=" + pos + ",addr=" + str.toOct(addr) + ",bytes=" + (nWords * 2) + ")");
|
||||
|
|
@ -949,14 +949,14 @@ RK11.prototype.processCommand = function()
|
|||
}
|
||||
|
||||
/*
|
||||
* TODO: Determine what's up with the "dar % 9"....
|
||||
* TODO: Determine what's up with the "regRKDA % 9"....
|
||||
*/
|
||||
this.dsr = drive.status | (iDrive << PDP11.RK11.RKDS.SHIFT.ID) | ((this.dar % 9) & PDP11.RK11.RKDS.SC);
|
||||
this.regRKDS = drive.status | (iDrive << PDP11.RK11.RKDS.SHIFT.ID) | ((this.regRKDA % 9) & PDP11.RK11.RKDS.SC);
|
||||
|
||||
if (fInterrupt) {
|
||||
this.csr &= ~PDP11.RK11.RKCS.GO;
|
||||
this.csr |= PDP11.RK11.RKCS.CRDY;
|
||||
if (this.csr & PDP11.RK11.RKCS.IE) this.cpu.setIRQ(this.irq);
|
||||
this.regRKCS &= ~PDP11.RK11.RKCS.GO;
|
||||
this.regRKCS |= PDP11.RK11.RKCS.CRDY;
|
||||
if (this.regRKCS & PDP11.RK11.RKCS.IE) this.cpu.setIRQ(this.irq);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -974,12 +974,12 @@ RK11.prototype.processCommand = function()
|
|||
*/
|
||||
RK11.prototype.endReadWrite = function(err, iCylinder, iHead, iSector, nWords, addr)
|
||||
{
|
||||
this.bar = addr & 0xffff;
|
||||
this.csr = (this.csr & ~PDP11.RK11.RKCS.MEX) | ((addr >> (16 - PDP11.RK11.RKCS.SHIFT.MEX)) & PDP11.RK11.RKCS.MEX);
|
||||
this.wcr = (0x10000 - nWords) & 0xffff;
|
||||
this.regRKBA = addr & 0xffff;
|
||||
this.regRKCS = (this.regRKCS & ~PDP11.RK11.RKCS.MEX) | ((addr >> (16 - PDP11.RK11.RKCS.SHIFT.MEX)) & PDP11.RK11.RKCS.MEX);
|
||||
this.regRKWC = (0x10000 - nWords) & 0xffff;
|
||||
if (err) {
|
||||
this.err |= err | PDP11.RK11.RKER.DRE;
|
||||
this.csr |= PDP11.RK11.RKCS.HE | PDP11.RK11.RKCS.ERR;
|
||||
this.regRKER |= err | PDP11.RK11.RKER.DRE;
|
||||
this.regRKCS |= PDP11.RK11.RKCS.HE | PDP11.RK11.RKCS.ERR;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
|
@ -1123,7 +1123,7 @@ RK11.prototype.writeData = function(drive, iCylinder, iHead, iSector, nWords, ad
|
|||
*/
|
||||
RK11.prototype.readRKDS = function(addr)
|
||||
{
|
||||
return this.dsr;
|
||||
return this.regRKDS;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -1149,7 +1149,7 @@ RK11.prototype.writeRKDS = function(data, addr)
|
|||
*/
|
||||
RK11.prototype.readRKER = function(addr)
|
||||
{
|
||||
return this.err;
|
||||
return this.regRKER;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -1175,7 +1175,7 @@ RK11.prototype.writeRKER = function(data, addr)
|
|||
*/
|
||||
RK11.prototype.readRKCS = function(addr)
|
||||
{
|
||||
return this.csr & PDP11.RK11.RKCS.RMASK;
|
||||
return this.regRKCS & PDP11.RK11.RKCS.RMASK;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -1187,9 +1187,9 @@ RK11.prototype.readRKCS = function(addr)
|
|||
*/
|
||||
RK11.prototype.writeRKCS = function(data, addr)
|
||||
{
|
||||
this.csr = (this.csr & ~PDP11.RK11.RKCS.WMASK) | (data & PDP11.RK11.RKCS.WMASK);
|
||||
this.regRKCS = (this.regRKCS & ~PDP11.RK11.RKCS.WMASK) | (data & PDP11.RK11.RKCS.WMASK);
|
||||
|
||||
if (this.csr & PDP11.RK11.RKCS.GO) this.processCommand();
|
||||
if (this.regRKCS & PDP11.RK11.RKCS.GO) this.processCommand();
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -1201,7 +1201,7 @@ RK11.prototype.writeRKCS = function(data, addr)
|
|||
*/
|
||||
RK11.prototype.readRKWC = function(addr)
|
||||
{
|
||||
return this.wcr;
|
||||
return this.regRKWC;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -1213,7 +1213,7 @@ RK11.prototype.readRKWC = function(addr)
|
|||
*/
|
||||
RK11.prototype.writeRKWC = function(data, addr)
|
||||
{
|
||||
this.wcr = data;
|
||||
this.regRKWC = data;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -1225,7 +1225,7 @@ RK11.prototype.writeRKWC = function(data, addr)
|
|||
*/
|
||||
RK11.prototype.readRKBA = function(addr)
|
||||
{
|
||||
return this.bar;
|
||||
return this.regRKBA;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -1237,7 +1237,7 @@ RK11.prototype.readRKBA = function(addr)
|
|||
*/
|
||||
RK11.prototype.writeRKBA = function(data, addr)
|
||||
{
|
||||
this.bar = data;
|
||||
this.regRKBA = data;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -1249,7 +1249,7 @@ RK11.prototype.writeRKBA = function(data, addr)
|
|||
*/
|
||||
RK11.prototype.readRKDA = function(addr)
|
||||
{
|
||||
return this.dar;
|
||||
return this.regRKDA;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -1261,7 +1261,7 @@ RK11.prototype.readRKDA = function(addr)
|
|||
*/
|
||||
RK11.prototype.writeRKDA = function(data, addr)
|
||||
{
|
||||
this.dar = data;
|
||||
this.regRKDA = data;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -1273,7 +1273,7 @@ RK11.prototype.writeRKDA = function(data, addr)
|
|||
*/
|
||||
RK11.prototype.readRKDB = function(addr)
|
||||
{
|
||||
return this.dbr;
|
||||
return this.regRKDB;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -1285,7 +1285,7 @@ RK11.prototype.readRKDB = function(addr)
|
|||
*/
|
||||
RK11.prototype.writeRKDB = function(data, addr)
|
||||
{
|
||||
this.dbr = data;
|
||||
this.regRKDB = data;
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
|
|||
Loading…
Reference in a new issue