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:
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user