diff --git a/SYMBOL/DCMCP.esp_m b/SYMBOL/DCMCP.esp_m
index f6ac2b8..77671f1 100644
--- a/SYMBOL/DCMCP.esp_m
+++ b/SYMBOL/DCMCP.esp_m
@@ -4017,3 +4017,82 @@ PROB: 04683350
ELSE IOD ~ OIOD & SECREC[CTC]; 04684050
% STANDARD LENGTH 04684100
DOIONOW; 04684150
+ % WRITE SECOND RECORD. 04684200
+ IF RESULT.[28:1] THEN GO PROB; 04684250
+ IOD ~ OIOD; 04684300
+ % ORIGINAL BAD IO ON NEW UNIT 04684350
+ DOIONOW; 04684400
+ IF RESULT.[28:1] THEN GO PROB; 04684450
+KAPUT: 04684500
+ IF NOT DSED THEN 04684550
+ BEGIN 04684600
+ MODE ~ 0; 04684650
+ STARTIMING(FNUM,U); 04684700
+ END; 04684750
+ % CHANGE OVER SUCCESSFUL. 04684800
+ FIB[15].[24:6] ~ U; 04684850
+ % NEW LUN INTO FIB. 04684900
+ OLDU ~ TINU[U].[3:5]; 04684950
+ % OLDU LOADED WITH NEW PHYSICAL UNIT NUMBER. 04685000
+ IF NOT RC THEN 04685050
+ BEGIN 04685100
+RESETUNITS: 04685150
+ IOQUE[S] ~ (*P(DUP)) & OLDU[3:43:5]; 04685200
+ FINALQUE[S] ~ (*P(DUP)) & OLDU[3:43:5]; 04685250
+ LOCATQUE[S] ~ (*P(DUP)) & U[12:42:6]; 04685300
+ % RESET DESCRIPTORS IN IOQUE. 04685350
+ IF (S ~ LOCATQUE[S].[FF]!@77777 THEN GO RESETUNITS; 04685400
+ END; 04685450
+ FIB[16] ~ (*P(DUP)) & OLDU[3:43:5]; 04685500
+ FIB[19] ~ (*P(DUP)) & OLDU[3:43:5]; 04685550
+ % CHANGE UNIT FIELD OF DESCRIPTORS IN FIB. 04685600
+ FIB[6] ~ ((RC=0)|2)+HOLDCT; 04685650
+ % LOAD NEW BLOCK COUNT INTO FIB 04685700
+ FIB[7] ~ (((RC=0)|2) | NUMRECS)+HOLDCT | NUMRECS+LOGICLRC; 04685750
+ % LOAD NEW RECORD COUNT 04685800
+ TINU[U].[24:6] ~ 0; 04685850
+ UNIT[U].[5:10] ~ 0; 04685900
+ % RESET ERROR FLAGS. 04685950
+ IF NOT DSED THEN 04686000
+ BEGIN 04686050
+ STREAM(A~TINU[U], T~T2~SPACE(4)); 04686100
+ BEGIN 04686150
+ DS ~ 26 LIT"#REEL SWITCH COMPLETED ON "; 04686200
+ SI ~ LOC A; SI ~ SI+5; DS ~ 3 CHR; DS ~ LIT"~"; 04686250
+ END; 04686300
+ SPOUTER(T2,UNITNO,1); 04686350
+ END; 04686400
+ TOPIOD ~ TEMP ~ (IF RC THEN FIB[19] ELSE OIOD).[CF]-2; 04686450
+ % MUST RESET LUN IN I/O BUFFER FOR PROGRAM RELEASE 04686500
+ARN: M[TEMP] ~ (*P(DUP)) & U[12:42:6]; 04686550
+ IF M[TEMP].[FF]-2!TOPIOD THEN 04686600
+ BEGIN 04686650
+ TEMP ~ M[TEMP].[FF]-2; 04686700
+ GO ARN; 04686750
+ END; 04686800
+ GO EXIT; 04686850
+ERROROUT: 04686900
+ STREAM(T~T2~SPACE(3)); 04686950
+ DS ~ 21 LIT"#REEL SWITCH ABORTED~"; 04687000
+ SPOUTER(T2,UNITNO,1); 04687050
+ IF U < 0 THEN % JOB BEING DS-ED AT MT REQ 04687100
+ BEGIN 04687150
+ U ~ TEMP; 04687200
+ % SET U TO LAST UNIT. 04687250
+ IF U=SAVEU THEN GO EXIT; 04687300
+ DSED ~ 1; 04687350
+ GO KAPUT; 04687400
+ % GO TO KAPUT TO COUNTINUE HOUSE-KEEPING 04687450
+ END; 04687500
+EXIT: 04687550
+ P1MIX ~ 0; 04687600
+ IF FIRSTREC!0 THEN 04687650
+ BEGIN 04687700
+ FORGETSPACE(FIRSTREC-2); 04687750
+ FORGETSPACE(SECREC-2); 04687800
+ END; 04687850
+ IF NOT NORMALPROCESS THEN NOPROCESSTOG ~ NOPROCESSTOG-1; 04687900
+ % WAS UNABLE TO FREE NORMAL PROCESS DUE TO UNFILLED BUFFERS. 04687950
+ % THIS SITUATION MAY NEVER OCCUR, BUT JUST IN CASE 04688000
+ WRITEPARITYREELSWITCH ~ UNIT[U] & MODE[5:40:8]; 04688050
+END WRITEPARITYREELSWITCH; 04688100
diff --git a/emulator/B5500CentralControl.js b/emulator/B5500CentralControl.js
index c668d8d..4d62682 100644
--- a/emulator/B5500CentralControl.js
+++ b/emulator/B5500CentralControl.js
@@ -155,18 +155,18 @@ B5500CentralControl.prototype.bit = function(word, bit) {
B5500CentralControl.prototype.bitSet = function(word, bit) {
/* Sets the specified bit in word and returns the updated word */
- return this.insert(word, bit, 1, 1);
+ return this.fieldInsert(word, bit, 1, 1);
}
/**************************************/
B5500CentralControl.prototype.bitReset = function(word, bit) {
/* Resets the specified bit in word and returns the updated word */
- return this.insert(word, bit, 1, 0);
+ return this.fieldInsert(word, bit, 1, 0);
}
/**************************************/
-B5500CentralControl.prototype.isolate = function(word, start, width) {
+B5500CentralControl.prototype.fieldIsolate = function(word, start, width) {
/* Extracts a bit field [start:width] from word and returns the field */
var ue = 48-start; // upper power exponent
var le = ue-width; // lower power exponent
@@ -175,8 +175,8 @@ B5500CentralControl.prototype.isolate = function(word, start, width) {
}
/**************************************/
-B5500CentralControl.prototype.insert = function(word, start, width, value) {
- /* Inserts a value into word.[start:width] and returns the updated word */
+B5500CentralControl.prototype.fieldInsert = function(word, start, width, value) {
+ /* Inserts a bit field into word.[start:width] and returns the updated word */
var ue = 48-start; // upper power exponent
var le = ue-width; // lower power exponent
var bpower = 1; // bottom portion power of 2
@@ -428,7 +428,7 @@ B5500CentralControl.prototype.tock = function tock() {
} else {
that.TM = 0;
that.CCI03F = 1; // set timer interrupt
- // for now // that.signalInterrupt();
+ // inhibit for now // that.signalInterrupt();
}
that.nextTimeStamp += that.rtcTick;
that.timer = setTimeout(function() {that.tock()},
@@ -441,23 +441,24 @@ B5500CentralControl.prototype.initiateP2 = function() {
memory location @10. If P2 is busy or not present, sets the P2 busy
interrupt. Otherwise, loads the INCW into P2's A register and initiates
the processor. */
+ var p2 = this.P2;
if (!this.P2 || this.P2BF) {
this.CCI12F = 1; // set P2 busy interrupt
this.signalInterrupt();
} else {
- this.P2.M = 8; // Now have P2 pick up the INCW
- this.P2.access(0x04); // A = [M]
- this.P2.AROF = 1;
- this.P2.T = 0x849; // inject 4111=IP1 into P2's T register
- this.P2.TROF = 1;
- this.P2.NCSF = 0; // make sure P2 is in control state
+ p2.M = 8; // Now have P2 pick up the INCW
+ p2.access(0x04); // A = [M]
+ p2.AROF = 1;
+ p2.T = 0x849; // inject 4111=IP1 into P2's T register
+ p2.TROF = 1;
+ p2.NCSF = 0; // make sure P2 is in control state
this.P2BF = 1;
this.HP2F = 0;
// Now start scheduling P2 on the Javascript thread
- this.P2.procTime = new Date().getTime()*1000;
- this.P2.scheduler = setTimeout(this.P2.schedule, 0);
+ p2.procTime = new Date().getTime()*1000;
+ p2.scheduler = setTimeout(p2.schedule, 0);
}
}
diff --git a/emulator/B5500DDPanel.js b/emulator/B5500DDPanel.js
deleted file mode 100644
index a24416a..0000000
--- a/emulator/B5500DDPanel.js
+++ /dev/null
@@ -1,98 +0,0 @@
-/***********************************************************************
-* retro-b5500/emulator B5500DDPanel.js
-************************************************************************
-* Copyright (c) 2012, Nigel Williams and Paul Kimpel.
-* Licensed under the MIT License, see http://www.opensource.org/licenses/mit-license.php
-************************************************************************
-* JavaScript object definition for the B5500 Distribution & Display panel
-* utility constructors.
-************************************************************************
-* 2012-06-18 P.Kimpel
-* Original version, from thin air.
-***********************************************************************/
-
-/***********************************************************************
-* Panel Lamp *
-***********************************************************************/
-function B5500DDLamp(x, y) {
- /* Constructor for the lamp objects used within D&D. x & y are the
- coordinates of the lamp within its containing element */
-
- this.state = 0; // current lamp state, 0=off
-
- // visible DOM element
- this.element = document.createElement("div");
- this.element.className = "ddLamp";
- this.element.style.left = String(x) + "px";
- this.element.style.top = String(y) + "px";
-}
-
-/**************************************/
-
-B5500DDLamp.prototype.onColor = "#FF9900";
-B5500DDLamp.prototype.offColor = "#999999";
-
-/**************************************/
-B5500DDLamp.prototype.set = function(v) {
- /* Changes the visible state of the lamp according to the low-order
- bit of "v". */
- newState = v & 1;
-
- if (this.state ^ newState) { // the state has changed
- this.element.backgroundColor = (v & 1 ? this.onColor : this.offColor);
- this.state = newState;
- }
-}
-
-
-/***********************************************************************
-* Panel Register *
-***********************************************************************/
-function B5500DDRegister(bits, x, y, rows, caption) {
- /* Constructor for the register objects used within D&D:
- bits: number of bits in register
- x: horizontal coordinate of upper-left corner [hSpacing increments]
- y: vertical coordinate of upper-left corner [vSpacing increments]
- rows: number of rows used to display the bit lamps
- */
- var cols = Math.floor((bits+rows-1)/rows);
- var height = rows*this.vSpacing;
- var width = cols*this.hSpacing;
- var b;
- var cx = Math.floor((x-0.25)*this.hSpacing);
- var cy = Math.floor((y-0.25)*this.vSpacing);
- var lamp;
-
- this.bits = bits; // number of bits in the register
- this.left = cx; // horizontal offset relative to container
- this.top = cy; // vertical offset relative to container
- this.caption = caption; // panel caption
- this.lamps = new Array(bits+1); // bit lamps
-
- // visible DOM element
- this.element = document.createElement("div");
- this.element.className = "ddRegister";
- this.element.style.left = String(cx) + "px";
- this.element.style.top = String(cy) + "px";
- this.element.style.width = width;
- this.element.style.height = height;
-
- cx = Math.floor((cols+0.25)*this.hSpacing);
- for (b=1; b<=bits; b++) {
- if ((b-1)%rows == 0) {
- cy = Math.floor((rows-0.75)*this.vSpacing);
- cx -= this.hSpacing;
- } else {
- cy -= this.vSpacing;
- }
- lamp = new B5500DDLamp(cx, cy);
- this.lamps[b] = lamp;
- this.element.appendChild(lamp.element);
- }
-}
-
-/**************************************/
-
-B5500DDRegister.prototype.hSpacing = 24; // horizontal lamp spacing, pixels
-B5500DDRegister.prototype.vSpacing = 24; // vertical lamp spacing, pixels
-
diff --git a/emulator/B5500Processor.js b/emulator/B5500Processor.js
index 6a4e632..61ac426 100644
--- a/emulator/B5500Processor.js
+++ b/emulator/B5500Processor.js
@@ -1075,7 +1075,7 @@ B5500Processor.prototype.run = function() {
variant = 48-t2;
}
if (variant > 0) {
- this.B = cc.insert(this.B, t2, variant, cc.isolate(this.A, t1, variant));
+ this.B = cc.fieldInsert(this.B, t2, variant, cc.fieldIsolate(this.A, t1, variant));
}
this.AROF = 0;
this.cycleCount += variant + this.G + this.K; // approximate the shift counts
@@ -1092,7 +1092,7 @@ B5500Processor.prototype.run = function() {
if (t2+variant > 48) {
variant = 48-t2;
}
- if (variant > 0 && cc.isolate(this.B, t2, variant) < cc.isolate(this.A, t1, variant)) {
+ if (variant > 0 && cc.fieldIsolate(this.B, t2, variant) < cc.fieldIsolate(this.A, t1, variant)) {
this.A = 1;
} else {
this.A = 0;
@@ -1111,7 +1111,7 @@ B5500Processor.prototype.run = function() {
if (t2+variant > 48) {
variant = 48-t2;
}
- if (variant > 0 && cc.isolate(this.B, t2, variant) == cc.isolate(this.A, t1, variant)) {
+ if (variant > 0 && cc.fieldIsolate(this.B, t2, variant) == cc.fieldIsolate(this.A, t1, variant)) {
this.A = 1;
} else {
this.A = 0;
diff --git a/emulator/B5500ProcessorPanel.html b/emulator/B5500ProcessorPanel.html
deleted file mode 100644
index 32c6e33..0000000
--- a/emulator/B5500ProcessorPanel.html
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-B5500 Distribution & Display Processor Panel
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/emulator/B5500ProcessorPanel.js b/emulator/B5500ProcessorPanel.js
deleted file mode 100644
index 3f03f98..0000000
--- a/emulator/B5500ProcessorPanel.js
+++ /dev/null
@@ -1,24 +0,0 @@
-/***********************************************************************
-* retro-b5500/emulator B5500ProcessorPanel.js
-************************************************************************
-* Copyright (c) 2012, Nigel Williams and Paul Kimpel.
-* Licensed under the MIT License, see http://www.opensource.org/licenses/mit-license.php
-************************************************************************
-* JavaScript object definition for the B5500 D&D Processor panels.
-************************************************************************
-* 2012-06-18 P.Kimpel
-* Original version, from thin air.
-***********************************************************************/
-
-/**************************************/
-function B5500ProcessorPanel(win) {
- /* Constructor for the B5500 D&D Processor Panel object. Creates the
- panel UI on window "win" */
- var body = win.document.body;
-
- this.X = new B5500DDRegister(39, 1, 1, 3, "X REG");
- body.appendChild(this.X.element);
-
- this.J = new B5500DDRegister(4, 14, 1, 3, "J REG");
- body.appendChild(this.J.element);
-}
diff --git a/emulator/B5500-Logo.jpg b/webUI/B5500-Logo.jpg
similarity index 100%
rename from emulator/B5500-Logo.jpg
rename to webUI/B5500-Logo.jpg
diff --git a/emulator/B5500Console.html b/webUI/B5500Console.html
similarity index 100%
rename from emulator/B5500Console.html
rename to webUI/B5500Console.html
diff --git a/webUI/B5500DDPanel.js b/webUI/B5500DDPanel.js
new file mode 100644
index 0000000..ab04d43
--- /dev/null
+++ b/webUI/B5500DDPanel.js
@@ -0,0 +1,158 @@
+/***********************************************************************
+* retro-b5500/emulator B5500DDPanel.js
+************************************************************************
+* Copyright (c) 2012, Nigel Williams and Paul Kimpel.
+* Licensed under the MIT License, see http://www.opensource.org/licenses/mit-license.php
+************************************************************************
+* JavaScript object definition for the B5500 Distribution & Display panel
+* utility constructors.
+************************************************************************
+* 2012-06-18 P.Kimpel
+* Original version, from thin air.
+***********************************************************************/
+
+/***********************************************************************
+* Panel Lamp *
+***********************************************************************/
+function B5500DDLamp(x, y) {
+ /* Constructor for the lamp objects used within D&D. x & y are the
+ coordinates of the lamp within its containing element */
+
+ this.state = 0; // current lamp state, 0=off
+
+ // visible DOM element
+ this.element = document.createElement("div");
+ this.element.className = "ddLamp";
+ this.element.style.left = String(x) + "px";
+ this.element.style.top = String(y) + "px";
+}
+
+/**************************************/
+
+B5500DDLamp.onColor = "#FFCC33";
+B5500DDLamp.offColor = "#999999";
+
+/**************************************/
+B5500DDLamp.prototype.set = function(v) {
+ /* Changes the visible state of the lamp according to the low-order
+ bit of "v". */
+ var newState = v & 1;
+
+ if (this.state ^ newState) { // the state has changed
+ this.element.backgroundColor = (newState ? B5500DDLamp.onColor : B5500DDLamp.offColor);
+ this.state = newState;
+ }
+}
+
+/**************************************/
+B5500DDLamp.prototype.flip = function() {
+ /* Complements the visible state of the lamp */
+ var newState = this.state ^ 1;
+
+ this.element.backgroundColor = (newState ? B5500DDLamp.onColor : B5500DDLamp.offColor);
+ this.state = newState;
+}
+
+/**************************************/
+B5500DDLamp.prototype.setCaption = function(caption) {
+ /* Establishes an optional caption for a single lamp */
+ var e = document.createElement("div");
+
+ e.className = "ddLampCaption";
+ e.appendChild(document.createTextNode(caption));
+ this.element.appendChild(e);
+}
+
+
+/***********************************************************************
+* Panel Register *
+***********************************************************************/
+function B5500DDRegister(bits, x, y, rows, caption) {
+ /* Constructor for the register objects used within D&D:
+ bits: number of bits in register
+ x: horizontal coordinate of upper-left corner [hSpacing increments]
+ y: vertical coordinate of upper-left corner [vSpacing increments]
+ rows: number of rows used to display the bit lamps
+ */
+ var cols = Math.floor((bits+rows-1)/rows);
+ var height = rows*B5500DDRegister.vSpacing;
+ var width = cols*B5500DDRegister.hSpacing;
+ var b;
+ var cx = Math.floor((x-0.25)*B5500DDRegister.hSpacing);
+ var cy = Math.floor((y-0.25)*B5500DDRegister.vSpacing);
+ var lamp;
+
+ this.bits = bits; // number of bits in the register
+ this.left = cx; // horizontal offset relative to container
+ this.top = cy; // vertical offset relative to container
+ this.caption = caption || ""; // panel caption
+ this.lastValue = 0; // prior register value
+ this.lamps = new Array(bits+1); // bit lamps
+
+ // visible DOM element
+ this.element = document.createElement("div");
+ this.element.className = "ddRegister";
+ this.element.style.left = String(cx) + "px";
+ this.element.style.top = String(cy) + "px";
+ this.element.style.width = String(width) + "px";
+ this.element.style.height = String(height) + "px";
+
+ cx = cols*B5500DDRegister.hSpacing + B5500DDRegister.hOffset;
+ for (b=1; b<=bits; b++) {
+ if ((b-1)%rows == 0) {
+ cy = (rows-1)*B5500DDRegister.vSpacing + B5500DDRegister.vOffset;
+ cx -= B5500DDRegister.hSpacing;
+ } else {
+ cy -= B5500DDRegister.vSpacing;
+ }
+ lamp = new B5500DDLamp(cx, cy);
+ this.lamps[b] = lamp;
+ this.element.appendChild(lamp.element);
+ }
+
+ this.captionDiv = document.createElement("div");
+ this.captionDiv.className = "ddRegCaption";
+ this.captionDiv.style.left = "2px";
+ this.captionDiv.style.right = "2px";
+ this.captionDiv.style.top = String(-B5500DDRegister.vOffset) + "px";
+ if (caption) {
+ lamp = document.createElement("span");
+ lamp.className = "ddRegSpan";
+ lamp.appendChild(document.createTextNode(caption));
+ this.captionDiv.appendChild(lamp);
+ }
+ this.element.appendChild(this.captionDiv);
+
+}
+
+/**************************************/
+
+B5500DDRegister.hSpacing = 24; // horizontal lamp spacing, pixels
+B5500DDRegister.hOffset = 5; // horizontal lamp offset within container
+B5500DDRegister.vSpacing = 24; // vertical lamp spacing, pixels
+B5500DDRegister.vOffset = 5; // vertical lamp offset within container
+
+/**************************************/
+B5500DDRegister.prototype.update = function(value) {
+ /* Update the register lamps from the value of the parameter */
+ var bitNr = 0;
+ var low = (this.lastValue % 0x1000000) ^ (value % 0x1000000);
+ var high = (Math.floor(this.lastValue / 0x1000000) % 0x1000000) ^ (Math.floor(value / 0x1000000) % 0x1000000);
+
+ while (low) {
+ bitNr++;
+ if (low & 1) {
+ this.lamps[bitNr].flip();
+ }
+ low >>>= 1;
+ }
+ bitNr = 23;
+ while (high) {
+ bitNr++;
+ if (high & 1) {
+ this.lamps[bitNr].flip();
+ }
+ high >>>= 1;
+ }
+ this.lastValue = value;
+}
\ No newline at end of file
diff --git a/emulator/B5500DistributionAndDisplay.css b/webUI/B5500DistributionAndDisplay.css
similarity index 75%
rename from emulator/B5500DistributionAndDisplay.css
rename to webUI/B5500DistributionAndDisplay.css
index ba0c0cf..c89ffcc 100644
--- a/emulator/B5500DistributionAndDisplay.css
+++ b/webUI/B5500DistributionAndDisplay.css
@@ -14,6 +14,10 @@ BODY.consoleBody {
background-color: #666666;
margin: 4px}
+BODY.panelBody {
+ background-color: #EEEEEE;
+ margin: 4px}
+
DIV#BurroughsLogo {
background-color: black;
position: absolute;
@@ -78,15 +82,40 @@ DIV.ddLamp {
width: 12px;
height: 12px;
font-size: 4px;
- background-color: #FF9900;
+ background-color: #FFCC33;
border-radius: 8px;
border: 1px solid black}
+DIV.ddLampCaption {
+ position: absolute;
+ width: 16px;
+ top: 14px;
+ left: -3px;
+ font-size: 6px;
+ text-align: center}
+
DIV.ddRegister {
position: absolute;
- border: 1px solid black;
font-size: 6px}
+DIV.ddRegCaption {
+ position: absolute;
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: 10px;
+ font-weight: bold;
+ text-align: center;
+ height: 10px;
+ border-top: 1px solid black;
+ border-left: 1px solid black;
+ border-right: 1px solid black}
+
+SPAN.ddRegSpan {
+ position: relative;
+ top: -7px;
+ padding-left: 2px;
+ padding-right: 2px;
+ background-color: #EEEEEE}
+
IMG#BurroughsLogoImage {
width: 150px;
text-align: center;
diff --git a/webUI/B5500ProcessorPanel.html b/webUI/B5500ProcessorPanel.html
new file mode 100644
index 0000000..ec3080f
--- /dev/null
+++ b/webUI/B5500ProcessorPanel.html
@@ -0,0 +1,55 @@
+
+
+B5500 Distribution & Display Processor Panel
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Idle:
+
+
+
diff --git a/webUI/B5500ProcessorPanel.js b/webUI/B5500ProcessorPanel.js
new file mode 100644
index 0000000..cf7fdb1
--- /dev/null
+++ b/webUI/B5500ProcessorPanel.js
@@ -0,0 +1,145 @@
+/***********************************************************************
+* retro-b5500/emulator B5500ProcessorPanel.js
+************************************************************************
+* Copyright (c) 2012, Nigel Williams and Paul Kimpel.
+* Licensed under the MIT License, see http://www.opensource.org/licenses/mit-license.php
+************************************************************************
+* JavaScript object definition for the B5500 D&D Processor panels.
+************************************************************************
+* 2012-06-18 P.Kimpel
+* Original version, from thin air.
+***********************************************************************/
+
+/**************************************/
+function B5500ProcessorPanel(win) {
+ /* Constructor for the B5500 D&D Processor Panel object. Creates the
+ panel UI on window "win" */
+ var body = win.document.body;
+
+ // Row 1
+
+ this.X = new B5500DDRegister(39, 1, 1, 3, "X REG");
+ body.appendChild(this.X.element);
+
+ this.J = new B5500DDRegister(4, 14, 1, 3, "J REG");
+ body.appendChild(this.J.element);
+ this.J.lamps[1].setCaption("1");
+ this.J.lamps[2].setCaption("2");
+ this.J.lamps[3].setCaption("4");
+ this.J.lamps[4].setCaption("8");
+ // adjust the weird position of the "8" bit
+ this.J.lamps[4].element.style.top = String(B5500DDRegister.vOffset) + "px";
+
+ this.Q = new B5500DDRegister(21, 16, 1, 3, "Q REG");
+ body.appendChild(this.Q.element);
+ this.Q.lamps[2].setCaption("CCCF");
+ this.Q.lamps[3].setCaption("VARF");
+ this.Q.lamps[4].setCaption("1");
+ this.Q.lamps[5].setCaption("2");
+ this.Q.lamps[6].setCaption("3");
+ this.Q.lamps[7].setCaption("4");
+ this.Q.lamps[8].setCaption("5");
+ this.Q.lamps[9].setCaption("6");
+ this.Q.lamps[10].setCaption("7");
+ this.Q.lamps[11].setCaption("8");
+ this.Q.lamps[12].setCaption("9");
+ this.Q.lamps[13].setCaption("12");
+ this.Q.lamps[14].setCaption("MRAF");
+ this.Q.lamps[15].setCaption("MROF");
+ this.Q.lamps[16].setCaption("HLTF");
+ this.Q.lamps[17].setCaption("EIHF");
+ this.Q.lamps[18].setCaption("MWOF");
+ this.Q.lamps[19].setCaption("NCSF");
+ this.Q.lamps[20].setCaption("SALF");
+ this.Q.lamps[21].setCaption("CWMF");
+
+ this.R = new B5500DDRegister(9, 23, 1, 3, "R REG");
+ body.appendChild(this.R.element);
+
+ // Row 2
+
+ this.A = new B5500DDRegister(48, 1, 5, 3, "A REG");
+ body.appendChild(this.A.element);
+
+ this.AROF = new B5500DDRegister(1, 17, 5, 1, null);
+ body.appendChild(this.AROF.element);
+ this.AROF.lamps[1].setCaption("AROF");
+
+ this.G = new B5500DDRegister(3, 18, 5, 3, "G");
+ body.appendChild(this.G.element);
+
+ this.H = new B5500DDRegister(3, 19, 5, 3, "H");
+ body.appendChild(this.H.element);
+
+ this.Y = new B5500DDRegister(6, 21, 5, 6, "Y");
+ body.appendChild(this.Y.element);
+
+ this.Z = new B5500DDRegister(6, 22, 5, 6, "Z");
+ body.appendChild(this.Z.element);
+
+ this.M = new B5500DDRegister(15, 23, 5, 3, "M REG");
+ body.appendChild(this.M.element);
+
+ // Row 3
+
+ this.B = new B5500DDRegister(48, 1, 9, 3, "B REG");
+ body.appendChild(this.B.element);
+
+ this.BROF = new B5500DDRegister(1, 17, 9, 1, null);
+ body.appendChild(this.BROF.element);
+ this.BROF.lamps[1].setCaption("BROF");
+
+ this.K = new B5500DDRegister(3, 18, 9, 3, "K");
+ body.appendChild(this.K.element);
+
+ this.V = new B5500DDRegister(3, 19, 9, 3, "V");
+ body.appendChild(this.V.element);
+
+ this.N = new B5500DDRegister(4, 20, 8, 4, "N");
+ body.appendChild(this.N.element);
+
+ this.S = new B5500DDRegister(15, 23, 9, 3, "S REG");
+ body.appendChild(this.S.element);
+
+ // Row 4
+
+ this.P = new B5500DDRegister(48, 1, 13, 3, "P REG");
+ body.appendChild(this.P.element);
+
+ this.PROF = new B5500DDRegister(3, 17, 13, 3, null);
+ body.appendChild(this.PROF.element);
+ this.PROF.lamps[1].setCaption("L1");
+ this.PROF.lamps[2].setCaption("L2");
+ this.PROF.lamps[3].setCaption("PROF");
+
+ this.T = new B5500DDRegister(12, 18, 13, 3, "T REG");
+ body.appendChild(this.T.element);
+
+ this.TROF = new B5500DDRegister(1, 22, 13, 1, null);
+ body.appendChild(this.TROF.element);
+ this.TROF.lamps[1].setCaption("TROF");
+
+ this.C = new B5500DDRegister(15, 23, 13, 3, "C REG");
+ body.appendChild(this.C.element);
+
+ // Row 5
+
+ this.I = new B5500DDRegister(9, 3, 17, 1, "I REG");
+ body.appendChild(this.I.element);
+
+ this.TM = new B5500DDRegister(9, 3, 19, 1, "TM REG");
+ body.appendChild(this.TM.element);
+
+ this.E = new B5500DDRegister(6, 17, 17, 1, "E REG");
+ body.appendChild(this.E.element);
+
+ this.F = new B5500DDRegister(15, 23, 17, 3, "F REG");
+ body.appendChild(this.F.element);
+}
+
+/**************************************/
+B5500ProcessorPanel.prototype.updateDisplay = function() {
+ /* Update the processor panel lamps.
+ For now, just supply random values */
+
+}
\ No newline at end of file
diff --git a/emulator/Burroughs-Logo-Neg.jpg b/webUI/Burroughs-Logo-Neg.jpg
similarity index 100%
rename from emulator/Burroughs-Logo-Neg.jpg
rename to webUI/Burroughs-Logo-Neg.jpg
diff --git a/emulator/Burroughs-Logo.jpg b/webUI/Burroughs-Logo.jpg
similarity index 100%
rename from emulator/Burroughs-Logo.jpg
rename to webUI/Burroughs-Logo.jpg
diff --git a/emulator/Burroughs-Logo.png b/webUI/Burroughs-Logo.png
similarity index 100%
rename from emulator/Burroughs-Logo.png
rename to webUI/Burroughs-Logo.png
diff --git a/emulator/PanelTest.html b/webUI/PanelTest.html
similarity index 92%
rename from emulator/PanelTest.html
rename to webUI/PanelTest.html
index 9ceb079..87f373d 100644
--- a/emulator/PanelTest.html
+++ b/webUI/PanelTest.html
@@ -13,7 +13,7 @@ TD {
border-radius: 8px}
-
+