diff --git a/SYMBOL/DCMCP.esp_m b/SYMBOL/DCMCP.esp_m index 0564fd7..2e3bad3 100644 --- a/SYMBOL/DCMCP.esp_m +++ b/SYMBOL/DCMCP.esp_m @@ -19976,3 +19976,119 @@ NEWSTART: 24042950 IF (POLISH=63) OR (CNTRS ~ CNTRS+SIZE)=100 THEN 24141000 BEGIN CNTRS ~ 0; SEG ~ FINDSEG END; 24142000 LOC[INDEX] ~ T&SEG[9:45:3]&CNTRS[2:41:7]; 24143000 + FINAL: IF (DISKSPACE ~ POLISH)!0 THEN 24144000 + BEGIN IF SEG=5 THEN INDEX ~ 0; 24145000 + LOC[0] ~ LIMIT&INDEX[CTF]; 24146000 + GO TO EXIT; 24147000 + END END FIND; 24148000 + $ SET OMIT = NOT(AUXMEM) 24148999 + P(DALOCROW[MIX]); 24150000 + SIZE ~ (WORDS+29) DIV 30; 24151000 + IF (LIMIT := LOC[0].[CF])=0 THEN GO TO BADEXIT; 24152000 + IF (INDEX ~ LOC[0].[FF])!0 THEN FIND; 24153000 + INDEX ~ 2; 24154000 + DO FIND UNTIL (INDEX := INDEX+2)>LIMIT; 24155000 + BADEXIT: 24155500 + DISKSPACE ~ -1; 24156000 + EXIT: 24157000 + $ SET OMIT = NOT(STATISTICS) 24157199 + STREAM(A~0:L~LIMIT.[41:6],T~[LOC[1]]); 24158000 + BEGIN SI~T; DI~A; 24159000 + L(SI~SI+11; 24160000 + 5(IF SC="0" THEN DI~DI+8; SI~SI+1)); 24161000 + A~DI; 24162000 + END STREAM; 24163000 + IF (POLISH", "}", + "+", "A", "B", "C", "D", "E", "F", "G", + "H", "I", ".", "[", "&", "(", "<", "~", + "|", "J", "K", "L", "M", "N", "O", "P", + "Q", "R", "$", "*", "-", ")", ";", "{", + " ", "/", "S", "T", "U", "V", "W", "X", + "Y", "Z", ",", "%", "!", "=", "]", "\""]; + function $$(id) { return document.getElementById(id); } @@ -137,7 +147,27 @@ function displayNumber(id, value) { setText(id, (Math.pow(8, e)*(s ? -m : m)).toPrecision(12)); } -function displayMemWord(e, addr, valueID) { +function displayBIC(id, value) { + /* Converts the "value" as a B5500 word to an eight character string and inserts it + as the text content of node "id" */ + var c; // current character + var s = ""; // working string value + var w = value; // working word value + var x; // character counter + + for (x=0; x<8; x++) { + c = w % 64; + w = (w-c)/64; + if (c == 0x30) { // 0x30 = @60 = BIC space + s = "_" + s; + } else { + s = BICtoANSI[c] + s; + } + } + setText(id, s); +} + +function displayMemWord(e, addr, bicID, valueID) { /* Displays the contents of the memory word at "addr" as the value of element "e" */ setText(valueID, ""); @@ -156,6 +186,7 @@ function displayMemWord(e, addr, valueID) { } else { e.style.backgroundColor = ""; displayOctal(e.id, accessor.word, 16); + displayBIC(bicID, accessor.word); displayNumber(valueID, accessor.word); } } @@ -163,15 +194,18 @@ function displayMemWord(e, addr, valueID) { function displayStack() { /* Displays the A and B registers, plus the top 8 words of the memory stack */ var addr; + var bicID; var e; var valueID; var x; displayOctal("AReg", cc.P1.A, 16); + displayBIC("ARegBIC", cc.P1.A); displayNumber("ARegValue", cc.P1.A); $$("AROF").checked = (cc.P1.AROF != 0); displayOctal("BReg", cc.P1.B, 16); + displayBIC("BRegBIC", cc.P1.B); displayNumber("BRegValue", cc.P1.B); $$("BROF").checked = (cc.P1.BROF != 0); @@ -179,14 +213,16 @@ function displayStack() { addr = cc.P1.S - x; setText("SAddr" + x, padOctal(addr, 5)); e = $$("SWord" + x); + bicID = e.getAttribute("data-b55sd-bicID"); valueID = e.getAttribute("data-b55sd-valueID"); - displayMemWord(e, addr, valueID); + displayMemWord(e, addr, bicID, valueID); } } function displayMemory() { /* Displays the words surrounding "memAddr" */ var addr; + var bicID; var e; var suffix; var valueID; @@ -201,8 +237,9 @@ function displayMemory() { setText("MAddr" + suffix, padOctal(addr, 5)); } e = $$("MWord" + suffix); + bicID = e.getAttribute("data-b55sd-bicID"); valueID = e.getAttribute("data-b55sd-valueID"); - displayMemWord(e, addr, valueID); + displayMemWord(e, addr, bicID, valueID); } } @@ -232,6 +269,7 @@ function displayRegisters() { displayOctal("NReg", cc.P1.N, 2); $$("NCSF").checked = (cc.P1.NCSF != 0); $$("CWMF").checked = (cc.P1.CWMF != 0); + $$("MSFF").checked = (cc.P1.MSFF != 0); $$("SALF").checked = (cc.P1.SALF != 0); $$("VARF").checked = (cc.P1.VARF != 0); } @@ -287,6 +325,7 @@ function word_onChange(ev) { var addr; var e = ev.target; var value; + var bicID = e.getAttribute("data-b55sd-bicID"); var valueID = e.getAttribute("data-b55sd-valueID"); value = e.getAttribute("data-b55sd-addr"); @@ -303,7 +342,7 @@ function word_onChange(ev) { accessor.addr = addr; accessor.word = value; cc.store(accessor); - displayMemWord(e, addr, valueID); + displayMemWord(e, addr, bicID, valueID); } } return value; @@ -331,7 +370,7 @@ function ff_onChange(ev) { return (e.checked ? 1 : 0); } -function tos_onChange(ev, valueID, origID) { +function tos_onChange(ev, bicID, valueID, origID) { /* Normalizes and displays the value of a register when changed */ var e = ev.target; var value; @@ -342,6 +381,7 @@ function tos_onChange(ev, valueID, origID) { } else { e.style.backgroundColor = ""; displayOctal(e.id, value, 16); + displayBIC(bicID, value); displayNumber(valueID, value); } return value; @@ -354,7 +394,7 @@ window.onload = function() { }; $$("AReg").onchange = function(ev) { - cc.P1.A = tos_onChange(ev, "ARegValue", "ARegOrig"); + cc.P1.A = tos_onChange(ev, "ARegBIC", "ARegValue", "ARegOrig"); cc.P1.AROF = 1; $$("AROF").checked = true; }; @@ -362,7 +402,7 @@ window.onload = function() { cc.P1.AROF = ff_onChange(ev); }; $$("BReg").onchange = function(ev) { - cc.P1.B = tos_onChange(ev, "BRegValue", "BRegOrig"); + cc.P1.B = tos_onChange(ev, "BRegBIC", "BRegValue", "BRegOrig"); cc.P1.BROF = 1; $$("BROF").checked = true; }; @@ -521,6 +561,7 @@ window.onload = function() { Reg Addr Current (octal) + BIC FP Value Original (octal) @@ -532,7 +573,8 @@ window.onload = function() { + data-b55sd-bicID=ARegBIC data-b55sd-valueID=ARegValue data-b55sd-origID=ARegOrig> + @@ -541,7 +583,8 @@ window.onload = function() { + data-b55sd-bicID=BRegBIC data-b55sd-valueID=BRegValue data-b55sd-origID=BRegOrig> + @@ -549,7 +592,8 @@ window.onload = function() { 00000 + data-b55sd-bicID=SBIC0 data-b55sd-valueID=SValue0 data-b55sd-origID=SOrig0> + @@ -557,7 +601,8 @@ window.onload = function() { 11111 + data-b55sd-bicID=SBIC1 data-b55sd-valueID=SValue1 data-b55sd-origID=SOrig1> + @@ -565,7 +610,8 @@ window.onload = function() { 22222 + data-b55sd-bicID=SBIC2 data-b55sd-valueID=SValue2 data-b55sd-origID=SOrig2> + @@ -573,7 +619,8 @@ window.onload = function() { 33333 + data-b55sd-bicID=SBIC3 data-b55sd-valueID=SValue3 data-b55sd-origID=SOrig3> + @@ -581,7 +628,8 @@ window.onload = function() { 44444 + data-b55sd-bicID=SBIC4 data-b55sd-valueID=SValue4 data-b55sd-origID=SOrig4> + @@ -589,7 +637,8 @@ window.onload = function() { 55555 + data-b55sd-bicID=SBIC5 data-b55sd-valueID=SValue5 data-b55sd-origID=SOrig5> + @@ -597,7 +646,8 @@ window.onload = function() { 66666 + data-b55sd-bicID=SBIC6 data-b55sd-valueID=SValue6 data-b55sd-origID=SOrig6> + @@ -605,7 +655,8 @@ window.onload = function() { 77777 + data-b55sd-bicID=SBIC7 data-b55sd-valueID=SValue7 data-b55sd-origID=SOrig7> + @@ -617,7 +668,8 @@ window.onload = function() { 44444 + data-b55sd-bicID=MBICP4 data-b55sd-valueID=MValueP4 data-b55sd-origID=MOrigP4> + @@ -625,7 +677,8 @@ window.onload = function() { 33333 + data-b55sd-bicID=MBICP3 data-b55sd-valueID=MValueP3 data-b55sd-origID=MOrigP3> + @@ -633,7 +686,8 @@ window.onload = function() { 22222 + data-b55sd-bicID=MBICP2 data-b55sd-valueID=MValueP2 data-b55sd-origID=MOrigP2> + @@ -641,7 +695,8 @@ window.onload = function() { 11111 + data-b55sd-bicID=MBICP1 data-b55sd-valueID=MValueP1 data-b55sd-origID=MOrigP1> + @@ -650,7 +705,8 @@ window.onload = function() { + data-b55sd-bicID=MBICP0 data-b55sd-valueID=MValueP0 data-b55sd-origID=MOrigP0> + @@ -658,7 +714,8 @@ window.onload = function() { 11111 + data-b55sd-bicID=MBICM1 data-b55sd-valueID=MValueM1 data-b55sd-origID=MOrigM1> + @@ -666,7 +723,8 @@ window.onload = function() { 22222 + data-b55sd-bicID=MBICM2 data-b55sd-valueID=MValueM2 data-b55sd-origID=MOrigM2> + @@ -674,7 +732,8 @@ window.onload = function() { 33333 + data-b55sd-bicID=MBICM3 data-b55sd-valueID=MValueM3 data-b55sd-origID=MOrigM3> + @@ -682,7 +741,8 @@ window.onload = function() { 44444 + data-b55sd-bicID=MBICM4 data-b55sd-valueID=MValueM4 data-b55sd-origID=MOrigM4> +