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} - +