diff --git a/emulator/B5500CentralControl.js b/emulator/B5500CentralControl.js index dfe6fc0..1885255 100644 --- a/emulator/B5500CentralControl.js +++ b/emulator/B5500CentralControl.js @@ -64,10 +64,10 @@ function B5500CentralControl(global) { /**************************************/ /* Global constants */ -B5500CentralControl.version = "0.15"; +B5500CentralControl.version = "0.16"; -B5500CentralControl.memReadCycles = 1.8; // assume 2 µs memory read cycle time (the other option was 3 µs) -B5500CentralControl.memWriteCycles = 2.5; // assume 4 µs memory write cycle time (the other option was 6 µs) +B5500CentralControl.memReadCycles = 2; // assume 2 µs memory read cycle time (the other option was 3 µs) +B5500CentralControl.memWriteCycles = 3; // assume 4 µs memory write cycle time (the other option was 6 µs) B5500CentralControl.rtcTick = 1000/60; // Real-time clock period, milliseconds B5500CentralControl.pow2 = [ // powers of 2 from 0 to 52 diff --git a/emulator/B5500IOUnit.js b/emulator/B5500IOUnit.js index 961d5d5..260f1aa 100644 --- a/emulator/B5500IOUnit.js +++ b/emulator/B5500IOUnit.js @@ -780,14 +780,13 @@ B5500IOUnit.prototype.finishDatacomRead = function finishDatacomRead(errorMask, var bufExhausted = (errorMask & 0x080) >>> 7; var tuBuf = (errorMask%0x10000000000 - errorMask%0x40000000)/0x40000000; // get TU/buf # - if (length > 0) { - if (bufExhausted || (tuBuf & 0x10)) { - this.storeBuffer(length, 0, 1, 56); - } else { - this.storeBufferWithGM(length, 0, 1, 56); - } - this.Daddress += (length+7) >>> 3; + if (bufExhausted || (tuBuf & 0x10)) { + this.storeBuffer(length, 0, 1, 56); + } else { + this.storeBufferWithGM(length, 0, 1, 56); } + this.Daddress += (length+7) >>> 3; + // Decode the additional datacom status/error bits this.D25F = bufExhausted; this.D24F = (errorMask & 0x100) >>> 8; @@ -802,9 +801,10 @@ B5500IOUnit.prototype.finishDatacomWrite = function finishDatacomWrite(errorMask var bufExhausted = (errorMask & 0x080) >>> 7; var tuBuf = (errorMask%0x10000000000 - errorMask%0x40000000)/0x40000000; // get TU/buf # - if (length > 0) { - this.Daddress += (length+7) >>> 3; + if (!(bufExhausted || (this.DwordCount & 0x10))) { + length++; // account for the terminating Group Mark } + this.Daddress += (length+7) >>> 3; // Decode the additional datacom status/error bits this.D25F = bufExhausted; diff --git a/webUI/B5500CardReader.js b/webUI/B5500CardReader.js index b9bdb4f..38375d5 100644 --- a/webUI/B5500CardReader.js +++ b/webUI/B5500CardReader.js @@ -184,6 +184,7 @@ B5500CardReader.prototype.CRProgressBar_onclick = function CRProgressBar_onclick this.bufLength = 0; this.bufIndex = 0; this.progressBar.value = 0; + this.$$("CRFileSelector").value = null; // reset the control while (this.outHopper.childNodes.length > 0) { this.outHopper.removeChild(this.outHopper.firstChild); } diff --git a/webUI/B5500DatacomUnit.css b/webUI/B5500DatacomUnit.css index 592c385..f663e13 100644 --- a/webUI/B5500DatacomUnit.css +++ b/webUI/B5500DatacomUnit.css @@ -44,6 +44,7 @@ BUTTON.greenButton { border-radius: 4px} BUTTON.greenLit { + color: black; background-color: #0F0} BUTTON.blackBorder { diff --git a/webUI/B5500DatacomUnit.js b/webUI/B5500DatacomUnit.js index 6f2b633..eafc428 100644 --- a/webUI/B5500DatacomUnit.js +++ b/webUI/B5500DatacomUnit.js @@ -29,7 +29,7 @@ function B5500DatacomUnit(mnemonic, unitIndex, designate, statusChange, signal) this.maxScrollLines = 1500; // Maximum amount of printer scrollback this.charPeriod = 100; // Printer speed, milliseconds per character - this.bufferSize = 112; // 4 B487 buffer segments + this.bufferSize = 112; // 4 28-character B487 buffer segments this.mnemonic = mnemonic; // Unit mnemonic this.unitIndex = unitIndex; // Ready-mask bit number @@ -247,14 +247,13 @@ B5500DatacomUnit.prototype.appendEmptyLine = function appendEmptyLine() { /* Removes excess lines already printed, then appends a new
 element
     to the