1
0
mirror of https://github.com/pkimpel/retro-b5500.git synced 2026-05-04 15:16:53 +00:00

Release emulator version 0.16:

1. Fix zero-length datacom message read in IOUnit.
2. Insert additional delay at end-of-message for B5500DatacomUnit.
3. Fix minor behavioral problems in B5500MagTapeDrive.
4. Minor wiki corrections and enhancements.
This commit is contained in:
paul.kimpel@digm.com
2013-11-21 04:31:13 +00:00
parent 2e13aedbb6
commit 3da0844cc7
8 changed files with 78 additions and 141 deletions

View File

@@ -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

View File

@@ -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;