mirror of
https://github.com/TomHarte/CLK.git
synced 2025-12-19 14:18:05 +00:00
Merge branch 'T' into EXOSDirect
This commit is contained in:
@@ -108,7 +108,11 @@ enum class Error: uint8_t {
|
|||||||
InvalidColourPassedToINKOrPAPER = 0xdb, // VCOLR
|
InvalidColourPassedToINKOrPAPER = 0xdb, // VCOLR
|
||||||
InvalidXOrYSizeToOPEN = 0xda, // VSIZE
|
InvalidXOrYSizeToOPEN = 0xda, // VSIZE
|
||||||
InvalidVideoModeToOPEN = 0xd9, // VMODE
|
InvalidVideoModeToOPEN = 0xd9, // VMODE
|
||||||
|
<<<<<<< HEAD
|
||||||
BadParameterToDISPLAY = 0xdb // VDISP, and officially 'naff' rather than 'bad'
|
BadParameterToDISPLAY = 0xdb // VDISP, and officially 'naff' rather than 'bad'
|
||||||
|
=======
|
||||||
|
BadParameterToDISPLAY = 0xdb, // VDISP, and officially 'naff' rather than 'bad'
|
||||||
|
>>>>>>> T
|
||||||
NotEnoughRowsInPageToDISPLAY = 0xd7, // VDSP2
|
NotEnoughRowsInPageToDISPLAY = 0xd7, // VDSP2
|
||||||
AttemptToMoveBeamOffPage = 0xd6, // VBEAM
|
AttemptToMoveBeamOffPage = 0xd6, // VBEAM
|
||||||
LineStyleTooBig = 0xd5, // VLSTY
|
LineStyleTooBig = 0xd5, // VLSTY
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
|
|
||||||
#include "Dave.hpp"
|
#include "Dave.hpp"
|
||||||
#include "EXDos.hpp"
|
#include "EXDos.hpp"
|
||||||
|
#include "HostFSHandler.hpp"
|
||||||
#include "Keyboard.hpp"
|
#include "Keyboard.hpp"
|
||||||
#include "Nick.hpp"
|
#include "Nick.hpp"
|
||||||
|
|
||||||
@@ -23,6 +24,8 @@
|
|||||||
#include "Outputs/Speaker/Implementation/LowpassSpeaker.hpp"
|
#include "Outputs/Speaker/Implementation/LowpassSpeaker.hpp"
|
||||||
#include "Processors/Z80/Z80.hpp"
|
#include "Processors/Z80/Z80.hpp"
|
||||||
|
|
||||||
|
#include <unordered_set>
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
using Logger = Log::Logger<Log::Source::Enterprise>;
|
using Logger = Log::Logger<Log::Source::Enterprise>;
|
||||||
}
|
}
|
||||||
@@ -584,6 +587,7 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
// MARK: - Memory layout
|
// MARK: - Memory layout
|
||||||
|
|
||||||
std::array<uint8_t, 256 * 1024> ram_{};
|
std::array<uint8_t, 256 * 1024> ram_{};
|
||||||
std::array<uint8_t, 64 * 1024> exos_;
|
std::array<uint8_t, 64 * 1024> exos_;
|
||||||
std::array<uint8_t, 16 * 1024> basic_;
|
std::array<uint8_t, 16 * 1024> basic_;
|
||||||
@@ -669,6 +673,7 @@ private:
|
|||||||
bool is_video_[4]{};
|
bool is_video_[4]{};
|
||||||
|
|
||||||
// MARK: - ScanProducer
|
// MARK: - ScanProducer
|
||||||
|
|
||||||
void set_scan_target(Outputs::Display::ScanTarget *const scan_target) override {
|
void set_scan_target(Outputs::Display::ScanTarget *const scan_target) override {
|
||||||
nick_.last_valid()->set_scan_target(scan_target);
|
nick_.last_valid()->set_scan_target(scan_target);
|
||||||
}
|
}
|
||||||
@@ -779,9 +784,17 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - EXDos card.
|
// MARK: - EXDos card.
|
||||||
|
|
||||||
EXDos exdos_;
|
EXDos exdos_;
|
||||||
|
|
||||||
|
// MARK: - Host FS.
|
||||||
|
|
||||||
|
HostFSHandler host_fs_;
|
||||||
|
std::unordered_set<uint16_t> trap_locations_;
|
||||||
|
bool test_host_fs_traps_ = false;
|
||||||
|
|
||||||
// MARK: - Activity Source
|
// MARK: - Activity Source
|
||||||
|
|
||||||
void set_activity_observer([[maybe_unused]] Activity::Observer *const observer) final {
|
void set_activity_observer([[maybe_unused]] Activity::Observer *const observer) final {
|
||||||
if constexpr (has_disk_controller) {
|
if constexpr (has_disk_controller) {
|
||||||
exdos_.set_activity_observer(observer);
|
exdos_.set_activity_observer(observer);
|
||||||
@@ -789,6 +802,7 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - Configuration options.
|
// MARK: - Configuration options.
|
||||||
|
|
||||||
std::unique_ptr<Reflection::Struct> get_options() const final {
|
std::unique_ptr<Reflection::Struct> get_options() const final {
|
||||||
auto options = std::make_unique<Options>(Configurable::OptionsType::UserFriendly);
|
auto options = std::make_unique<Options>(Configurable::OptionsType::UserFriendly);
|
||||||
options->output = get_video_signal_configurable();
|
options->output = get_video_signal_configurable();
|
||||||
|
|||||||
21
Machines/Enterprise/HostFSHandler.cpp
Normal file
21
Machines/Enterprise/HostFSHandler.cpp
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
//
|
||||||
|
// HostFSHandler.cpp
|
||||||
|
// Clock Signal
|
||||||
|
//
|
||||||
|
// Created by Thomas Harte on 20/11/2025.
|
||||||
|
// Copyright © 2025 Thomas Harte. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "HostFSHandler.hpp"
|
||||||
|
#include "EXOSCodes.hpp"
|
||||||
|
|
||||||
|
using namespace Enterprise;
|
||||||
|
|
||||||
|
HostFSHandler::HostFSHandler(uint8_t *ram) : ram_(ram) {}
|
||||||
|
|
||||||
|
void HostFSHandler::perform(uint8_t function, uint8_t &a, uint16_t &bc, uint16_t &de) {
|
||||||
|
(void)function;
|
||||||
|
(void)a;
|
||||||
|
(void)bc;
|
||||||
|
(void)de;
|
||||||
|
}
|
||||||
23
Machines/Enterprise/HostFSHandler.hpp
Normal file
23
Machines/Enterprise/HostFSHandler.hpp
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
//
|
||||||
|
// HostFSHandler.hpp
|
||||||
|
// Clock Signal
|
||||||
|
//
|
||||||
|
// Created by Thomas Harte on 20/11/2025.
|
||||||
|
// Copyright © 2025 Thomas Harte. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
|
namespace Enterprise {
|
||||||
|
|
||||||
|
struct HostFSHandler {
|
||||||
|
HostFSHandler(uint8_t *ram);
|
||||||
|
void perform(uint8_t function, uint8_t &a, uint16_t &bc, uint16_t &de);
|
||||||
|
|
||||||
|
private:
|
||||||
|
uint8_t *ram_;
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
@@ -1151,6 +1151,9 @@
|
|||||||
4BCF1ACF2ECE759000109999 /* FileBundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BCF1ACD2ECE759000109999 /* FileBundle.cpp */; };
|
4BCF1ACF2ECE759000109999 /* FileBundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BCF1ACD2ECE759000109999 /* FileBundle.cpp */; };
|
||||||
4BCF1AD02ECE759000109999 /* FileBundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BCF1ACD2ECE759000109999 /* FileBundle.cpp */; };
|
4BCF1AD02ECE759000109999 /* FileBundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BCF1ACD2ECE759000109999 /* FileBundle.cpp */; };
|
||||||
4BCF1AD12ECE759000109999 /* FileBundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BCF1ACD2ECE759000109999 /* FileBundle.cpp */; };
|
4BCF1AD12ECE759000109999 /* FileBundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BCF1ACD2ECE759000109999 /* FileBundle.cpp */; };
|
||||||
|
4BCF1AD52ECF884100109999 /* HostFSHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BCF1AD42ECF884100109999 /* HostFSHandler.cpp */; };
|
||||||
|
4BCF1AD62ECF884100109999 /* HostFSHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BCF1AD42ECF884100109999 /* HostFSHandler.cpp */; };
|
||||||
|
4BCF1AD72ECF884100109999 /* HostFSHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BCF1AD42ECF884100109999 /* HostFSHandler.cpp */; };
|
||||||
4BCF1FA41DADC3DD0039D2E7 /* Oric.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BCF1FA21DADC3DD0039D2E7 /* Oric.cpp */; };
|
4BCF1FA41DADC3DD0039D2E7 /* Oric.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BCF1FA21DADC3DD0039D2E7 /* Oric.cpp */; };
|
||||||
4BD0FBC3233706A200148981 /* CSApplication.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BD0FBC2233706A200148981 /* CSApplication.m */; };
|
4BD0FBC3233706A200148981 /* CSApplication.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BD0FBC2233706A200148981 /* CSApplication.m */; };
|
||||||
4BD191F52191180E0042E144 /* ScanTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BD191F22191180E0042E144 /* ScanTarget.cpp */; };
|
4BD191F52191180E0042E144 /* ScanTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BD191F22191180E0042E144 /* ScanTarget.cpp */; };
|
||||||
@@ -2432,6 +2435,8 @@
|
|||||||
4BCF1ACC2ECE759000109999 /* FileBundle.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = FileBundle.hpp; sourceTree = "<group>"; };
|
4BCF1ACC2ECE759000109999 /* FileBundle.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = FileBundle.hpp; sourceTree = "<group>"; };
|
||||||
4BCF1ACD2ECE759000109999 /* FileBundle.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FileBundle.cpp; sourceTree = "<group>"; };
|
4BCF1ACD2ECE759000109999 /* FileBundle.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FileBundle.cpp; sourceTree = "<group>"; };
|
||||||
4BCF1AD22ECF743500109999 /* EXOSCodes.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = EXOSCodes.hpp; sourceTree = "<group>"; };
|
4BCF1AD22ECF743500109999 /* EXOSCodes.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = EXOSCodes.hpp; sourceTree = "<group>"; };
|
||||||
|
4BCF1AD32ECF884100109999 /* HostFSHandler.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = HostFSHandler.hpp; sourceTree = "<group>"; };
|
||||||
|
4BCF1AD42ECF884100109999 /* HostFSHandler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = HostFSHandler.cpp; sourceTree = "<group>"; };
|
||||||
4BCF1FA21DADC3DD0039D2E7 /* Oric.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Oric.cpp; sourceTree = "<group>"; };
|
4BCF1FA21DADC3DD0039D2E7 /* Oric.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Oric.cpp; sourceTree = "<group>"; };
|
||||||
4BCF1FA31DADC3DD0039D2E7 /* Oric.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Oric.hpp; sourceTree = "<group>"; };
|
4BCF1FA31DADC3DD0039D2E7 /* Oric.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Oric.hpp; sourceTree = "<group>"; };
|
||||||
4BD060A51FE49D3C006E14BE /* Speaker.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Speaker.hpp; sourceTree = "<group>"; };
|
4BD060A51FE49D3C006E14BE /* Speaker.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Speaker.hpp; sourceTree = "<group>"; };
|
||||||
@@ -2707,12 +2712,15 @@
|
|||||||
4BFEA2ED2682A7B900EBF94C /* Dave.cpp */,
|
4BFEA2ED2682A7B900EBF94C /* Dave.cpp */,
|
||||||
4B051CA12676F52200CA44E8 /* Enterprise.cpp */,
|
4B051CA12676F52200CA44E8 /* Enterprise.cpp */,
|
||||||
4B051CB42680158600CA44E8 /* EXDos.cpp */,
|
4B051CB42680158600CA44E8 /* EXDos.cpp */,
|
||||||
|
4BCF1AD42ECF884100109999 /* HostFSHandler.cpp */,
|
||||||
4B051CAE267C1CA200CA44E8 /* Keyboard.cpp */,
|
4B051CAE267C1CA200CA44E8 /* Keyboard.cpp */,
|
||||||
4B051CAA26783E2000CA44E8 /* Nick.cpp */,
|
4B051CAA26783E2000CA44E8 /* Nick.cpp */,
|
||||||
4BFEA2EE2682A7B900EBF94C /* Dave.hpp */,
|
4BFEA2EE2682A7B900EBF94C /* Dave.hpp */,
|
||||||
4B051CA02676F52200CA44E8 /* Enterprise.hpp */,
|
4B051CA02676F52200CA44E8 /* Enterprise.hpp */,
|
||||||
4B051CB52680158600CA44E8 /* EXDos.hpp */,
|
4B051CB52680158600CA44E8 /* EXDos.hpp */,
|
||||||
4B3583DB2DB965FA00A24128 /* HostFS.hpp */,
|
4B3583DB2DB965FA00A24128 /* HostFS.hpp */,
|
||||||
|
4BCF1AD22ECF743500109999 /* EXOSCodes.hpp */,
|
||||||
|
4BCF1AD32ECF884100109999 /* HostFSHandler.hpp */,
|
||||||
4B051CAF267C1CA200CA44E8 /* Keyboard.hpp */,
|
4B051CAF267C1CA200CA44E8 /* Keyboard.hpp */,
|
||||||
4B051CAB26783E2000CA44E8 /* Nick.hpp */,
|
4B051CAB26783E2000CA44E8 /* Nick.hpp */,
|
||||||
4BCF1AD22ECF743500109999 /* EXOSCodes.hpp */,
|
4BCF1AD22ECF743500109999 /* EXOSCodes.hpp */,
|
||||||
@@ -6359,6 +6367,7 @@
|
|||||||
4B055AC41FAE9AE80060FFFF /* Keyboard.cpp in Sources */,
|
4B055AC41FAE9AE80060FFFF /* Keyboard.cpp in Sources */,
|
||||||
4B8DF506254E3C9D00F3433C /* ADB.cpp in Sources */,
|
4B8DF506254E3C9D00F3433C /* ADB.cpp in Sources */,
|
||||||
4B055A941FAE85B50060FFFF /* CommodoreROM.cpp in Sources */,
|
4B055A941FAE85B50060FFFF /* CommodoreROM.cpp in Sources */,
|
||||||
|
4BCF1AD72ECF884100109999 /* HostFSHandler.cpp in Sources */,
|
||||||
4BBB70A5202011C2002FE009 /* MultiMediaTarget.cpp in Sources */,
|
4BBB70A5202011C2002FE009 /* MultiMediaTarget.cpp in Sources */,
|
||||||
4B8318BC22D3E588006DB630 /* DisplayMetrics.cpp in Sources */,
|
4B8318BC22D3E588006DB630 /* DisplayMetrics.cpp in Sources */,
|
||||||
4BEDA40E25B2844B000C2DBD /* Decoder.cpp in Sources */,
|
4BEDA40E25B2844B000C2DBD /* Decoder.cpp in Sources */,
|
||||||
@@ -6452,6 +6461,7 @@
|
|||||||
4B1082C42C1F5E7D00B07C5D /* CSL.cpp in Sources */,
|
4B1082C42C1F5E7D00B07C5D /* CSL.cpp in Sources */,
|
||||||
4B0ACC3023775819008902D0 /* TIASound.cpp in Sources */,
|
4B0ACC3023775819008902D0 /* TIASound.cpp in Sources */,
|
||||||
4B7136861F78724F008B8ED9 /* Encoder.cpp in Sources */,
|
4B7136861F78724F008B8ED9 /* Encoder.cpp in Sources */,
|
||||||
|
4BCF1AD62ECF884100109999 /* HostFSHandler.cpp in Sources */,
|
||||||
4B0E04EA1FC9E5DA00F43484 /* CAS.cpp in Sources */,
|
4B0E04EA1FC9E5DA00F43484 /* CAS.cpp in Sources */,
|
||||||
4B7A90ED20410A85008514A2 /* StaticAnalyser.cpp in Sources */,
|
4B7A90ED20410A85008514A2 /* StaticAnalyser.cpp in Sources */,
|
||||||
4B58601E1F806AB200AEE2E3 /* MFMSectorDump.cpp in Sources */,
|
4B58601E1F806AB200AEE2E3 /* MFMSectorDump.cpp in Sources */,
|
||||||
@@ -6881,6 +6891,7 @@
|
|||||||
4BCF1AD02ECE759000109999 /* FileBundle.cpp in Sources */,
|
4BCF1AD02ECE759000109999 /* FileBundle.cpp in Sources */,
|
||||||
4B06AAF72C64606E0034D014 /* DiskII.cpp in Sources */,
|
4B06AAF72C64606E0034D014 /* DiskII.cpp in Sources */,
|
||||||
4B778EFB23A5EB7E0000D260 /* HFE.cpp in Sources */,
|
4B778EFB23A5EB7E0000D260 /* HFE.cpp in Sources */,
|
||||||
|
4BCF1AD52ECF884100109999 /* HostFSHandler.cpp in Sources */,
|
||||||
4BC751B21D157E61006C31D9 /* 6522Tests.swift in Sources */,
|
4BC751B21D157E61006C31D9 /* 6522Tests.swift in Sources */,
|
||||||
4B0DA67D282DCDF300C12F17 /* Instruction.cpp in Sources */,
|
4B0DA67D282DCDF300C12F17 /* Instruction.cpp in Sources */,
|
||||||
4B06AAE12C645F8B0034D014 /* Video.cpp in Sources */,
|
4B06AAE12C645F8B0034D014 /* Video.cpp in Sources */,
|
||||||
|
|||||||
Reference in New Issue
Block a user