1
0
mirror of https://github.com/livingcomputermuseum/ContrAlto.git synced 2026-04-17 16:43:16 +00:00

Minor bugfixes, introduced a new timing infrastructure and moved DiskController over to it. Minor performance improvements; now running at 110% speed. Display timing is still too slow.

This commit is contained in:
Josh Dersch
2015-11-17 16:09:50 -08:00
parent 03661fc90b
commit cbcfd2b47e
33 changed files with 591 additions and 436 deletions

View File

@@ -1,11 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Contralto.Memory;
using Contralto.Logging;
namespace Contralto.CPU
{
@@ -31,7 +24,17 @@ namespace Contralto.CPU
protected override bool ExecuteInstruction(MicroInstruction instruction)
{
bool task = base.ExecuteInstruction(instruction);
bool task = base.ExecuteInstruction(instruction);
// Deal with SECLATE semantics: If the Disk Sector task wakes up and runs before
// the Disk Controller hits the SECLATE trigger time, then SECLATE remains false.
// Otherwise, when the trigger time is hit SECLATE is raised until
// the beginning of the next sector.
if (_taskType == TaskType.DiskSector)
{
// Sector task is running; clear enable for seclate signal
_cpu._system.DiskController.DisableSeclate();
}
return task;
}
@@ -190,6 +193,19 @@ namespace Contralto.CPU
}
}
protected override void ExecuteBlock()
{
//
// Update the WDINIT signal; this is based on WDALLOW (!_wdInhib) which sets WDINIT (this is done
// in KCOM way above).
// WDINIT is reset when BLOCK (a BLOCK F1 is being executed) and WDTSKACT (the disk word task is running) are 1.
//
if (_taskType == TaskType.DiskWord)
{
_cpu._system.DiskController.WDINIT = false;
}
}
/// <summary>
/// The status of the INIT flag
/// </summary>