mirror of
https://github.com/pkimpel/retro-220.git
synced 2026-01-11 23:52:46 +00:00
1. Rework Processor internal timing and throttling mechanism during I/O. 2. Revise Console statistics display, add instruction counter. 3. Correct (again) CFA/CFR instruction when sign is included in field. 4. Correct B-register modification of words during Cardatron and magnetic tape input. 5. Clear Processor alarms on Reset/Transfer. 6. Add links to wiki on index and home pages. 7. Eliminate B220Util CSS class functions in favor of DOM classList methods. 8. Attempt to reproduce "Sundland Beige" color for the panels. 9. Correct formatting of tab stops for B220ConsolePrinter. 10. Reduce Whippet printer speed from 5000 to 1000 cps. 11. Reduce Console update frequency from every 50 to 100 ms; increase lamp glow update factor from 0.25 to 0.75. 12. Allow click of white button below console register lamps in addition to clicking the lamps themselves to toggle the lamp state. 13. Rework the way that white vertical bars are drawn on registers. 14. Allow B220PaperTapeReader to properly send sign-2 alphanumeric words with trailing spaces if the tape image file has been space-trimmed on the right. 15. Clear the paper tape reader view window when loading new tapes. 16. Revise yet again the setCallback() delay deviation adjustment algorithm.
136 lines
4.9 KiB
HTML
136 lines
4.9 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
|
<title>retro-220 Emulator Diagnostic Panel</title>
|
|
<!--
|
|
/***********************************************************************
|
|
* retro-220/webUI B220DiagMonitor.html
|
|
************************************************************************
|
|
* Copyright (c) 2017, Paul Kimpel.
|
|
* Licensed under the MIT License, see
|
|
* http://www.opensource.org/licenses/mit-license.php
|
|
************************************************************************
|
|
* Burroughs 220 emulator diagnostic monitoring panel.
|
|
************************************************************************
|
|
* 2017-05-13 P.Kimpel
|
|
* Original version, from retro-205 D205DiagMonitor.html.
|
|
***********************************************************************/
|
|
-->
|
|
<meta name="Author" content="Paul Kimpel">
|
|
<meta http-equiv="Content-Script-Type" content="text/javascript">
|
|
<meta http-equiv="Content-Style-Type" content="text/css">
|
|
<link id=defaultStyleSheet rel=stylesheet type="text/css" href="B220Common.css">
|
|
<link id=diagStyleSheet rel=stylesheet type="text/css" href="B220.css">
|
|
|
|
<script>
|
|
window.addEventListener("load", function(ev) {
|
|
var body = document.getElementById("DiagBody");
|
|
var delayDevNodes = {};
|
|
var getCallbackState = window.global.getCallbackState;
|
|
var intervalPeriod = 300; // milliseconds
|
|
var intervalToken = 0;
|
|
|
|
var p = null; // the Processor object
|
|
var delayDeltaNode = document.getElementById("DelayDeltaAvg").firstChild;
|
|
var execClockNode = document.getElementById("ExecClock").firstChild;
|
|
var lastDelayNode = document.getElementById("Delay").firstChild;
|
|
var procRunNode = document.getElementById("ProcRunAvg").firstChild;
|
|
var procSlackNode = document.getElementById("ProcSlackAvg").firstChild;
|
|
var procTimeNode = document.getElementById("ProcTime").firstChild;
|
|
var stampDeltaNode = document.getElementById("StampDelta").firstChild;
|
|
var timeStampNode = document.getElementById("TimeStamp").firstChild;
|
|
|
|
function clockIn(stamp, val) {
|
|
/* Clocks in a clocked-out timer */
|
|
var t = val;
|
|
|
|
while (t < 0) {
|
|
t += stamp;
|
|
}
|
|
|
|
return t;
|
|
}
|
|
|
|
function refreshStats() {
|
|
/* Obtains the current "delayDev" has from the SetCallback mechanism and
|
|
formats the data to DiagBody */
|
|
var cat = "";
|
|
var cell;
|
|
var textNode;
|
|
var delayDev;
|
|
var e;
|
|
var row;
|
|
var stamp = performance.now();
|
|
var state;
|
|
|
|
if (!p) {
|
|
p = window.global.B220Processor.instance;
|
|
} else {
|
|
timeStampNode.nodeValue = p.runStamp.toFixed(2);
|
|
execClockNode.nodeValue = p.execClock.toFixed(2);
|
|
stampDeltaNode.nodeValue = (p.execClock-p.runStamp).toFixed(2);
|
|
lastDelayNode.nodeValue = p.delayRequested.toFixed(2);
|
|
procTimeNode.nodeValue = clockIn(stamp, p.procTime).toFixed(2);
|
|
delayDeltaNode.nodeValue = p.delayDeltaAvg.toFixed(2);
|
|
procSlackNode.nodeValue = p.procSlackAvg.toFixed(2);
|
|
procRunNode.nodeValue = p.procRunAvg.toFixed(4);
|
|
}
|
|
|
|
state = getCallbackState(0x01); // get delayDev hash only
|
|
delayDev = state.delayDev;
|
|
for (cat in delayDev) {
|
|
textNode = delayDevNodes[cat];
|
|
if (!textNode) {
|
|
row = document.createElement("tr");
|
|
cell = document.createElement("td");
|
|
cell.className = "rj";
|
|
textNode = document.createTextNode("");
|
|
delayDevNodes[cat] = textNode;
|
|
cell.appendChild(textNode);
|
|
row.appendChild(cell);
|
|
cell = document.createElement("td");
|
|
cell.appendChild(document.createTextNode(cat));
|
|
row.appendChild(cell);
|
|
body.appendChild(row);
|
|
}
|
|
|
|
textNode.nodeValue = delayDev[cat].toFixed(2);
|
|
} // for cat
|
|
}
|
|
|
|
window.resizeTo(300, 500);
|
|
window.moveTo(0, screen.availHeight-500);
|
|
intervalToken = setInterval(refreshStats, intervalPeriod);
|
|
window.addEventListener("unload", function(ev) {
|
|
if (intervalToken) {
|
|
clearInterval(intervalToken);
|
|
}
|
|
});
|
|
});
|
|
</script>
|
|
</head>
|
|
|
|
<body>
|
|
<h3>retro-220<br>Diagnostic Monitor</h1>
|
|
<hr>
|
|
<table id=DiagTable border=1 cellpadding=1 cellspacing=0>
|
|
<colgoup>
|
|
<col style="width:7em">
|
|
<col style="width:12em">
|
|
</colgroup>
|
|
<thead>
|
|
<tr>
|
|
<th>Delta (ms)<th>Category
|
|
<tbody id=DiagBody>
|
|
<tr><td id=TimeStamp class=rj> <td>Time Stamp
|
|
<tr><td id=ExecClock class=rj> <td>Exec Clock
|
|
<tr><td id=StampDelta class=rj> <td>Stamp Delta
|
|
<tr><td id=Delay class=rj> <td>Last delay
|
|
<tr><td id=ProcTime class=rj> <td>Proc Time
|
|
<tr><td id=DelayDeltaAvg class=rj> <td>Delay Delta Avg
|
|
<tr><td id=ProcSlackAvg class=rj> <td>Proc Slack Avg
|
|
<tr><td id=ProcRunAvg class=rj> <td>Proc Run Avg
|
|
</table>
|
|
</body>
|
|
</html> |