mirror of
https://github.com/TomHarte/CLK.git
synced 2025-04-09 15:39:08 +00:00
commit
64bec0cc3d
@ -82,6 +82,8 @@ template <typename PortHandlerT, Personality personality> class MOS6526:
|
||||
void advance_counters(int);
|
||||
|
||||
bool serial_line_did_produce_bit(Serial::Line<true> *line, int bit) final;
|
||||
|
||||
Log::Logger<Log::Source::MOS6526> log;
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -8,9 +8,6 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <cassert>
|
||||
#include <cstdio>
|
||||
|
||||
namespace MOS::MOS6526 {
|
||||
|
||||
enum Interrupts: uint8_t {
|
||||
@ -132,13 +129,11 @@ void MOS6526<BusHandlerT, personality>::write(int address, uint8_t value) {
|
||||
|
||||
// Shift control.
|
||||
case 12:
|
||||
printf("TODO: write to shift register\n");
|
||||
log.error().append("TODO: write to shift register");
|
||||
break;
|
||||
|
||||
default:
|
||||
printf("Unhandled 6526 write: %02x to %d\n", value, address);
|
||||
assert(false);
|
||||
break;
|
||||
// Logically unreachable.
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -179,10 +174,8 @@ uint8_t MOS6526<BusHandlerT, personality>::read(int address) {
|
||||
// Shift register.
|
||||
case 12: return shift_data_;
|
||||
|
||||
default:
|
||||
printf("Unhandled 6526 read from %d\n", address);
|
||||
assert(false);
|
||||
break;
|
||||
// Logically unreachable.
|
||||
default: break;
|
||||
}
|
||||
return 0xff;
|
||||
}
|
||||
|
@ -11,6 +11,7 @@
|
||||
#include <array>
|
||||
|
||||
#include "../../../ClockReceiver/ClockReceiver.hpp"
|
||||
#include "../../../Outputs/Log.hpp"
|
||||
|
||||
namespace MOS::MOS6526 {
|
||||
|
||||
@ -220,7 +221,8 @@ struct MOS6526Storage {
|
||||
control = v;
|
||||
|
||||
if(v&2) {
|
||||
printf("UNIMPLEMENTED: PB strobe\n");
|
||||
Log::Logger<Log::Source::MOS6526> log;
|
||||
log.error().append("UNIMPLEMENTED: PB strobe");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -55,10 +55,6 @@ uint8_t IWM::read(int address) {
|
||||
logger.info().append("Invalid read\n");
|
||||
return 0xff;
|
||||
|
||||
// "Read all 1s".
|
||||
// printf("Reading all 1s\n");
|
||||
// return 0xff;
|
||||
|
||||
case 0:
|
||||
case ENABLE: { /* Read data register. Zeroing afterwards is a guess. */
|
||||
const auto result = data_register_;
|
||||
|
@ -30,7 +30,6 @@ DoubleDensityDrive::DoubleDensityDrive(int input_clock_rate, bool is_800k) :
|
||||
// MARK: - Speed Selection
|
||||
|
||||
void DoubleDensityDrive::did_step(Storage::Disk::HeadPosition to_position) {
|
||||
// printf("At track %d\n", to_position.as_int());
|
||||
// The 800kb drive automatically selects rotation speed as a function of
|
||||
// head position; the 400kb drive doesn't do so.
|
||||
if(is_800k_) {
|
||||
|
@ -125,13 +125,13 @@ void SCSICard::perform_bus_operation(Select select, bool is_read, uint16_t addre
|
||||
|
||||
case 0xb:
|
||||
if(!is_read) {
|
||||
printf("TODO: NCR reset\n");
|
||||
logger_.error().append("TODO: NCR reset");
|
||||
}
|
||||
break;
|
||||
|
||||
case 0xd:
|
||||
if(!is_read) {
|
||||
printf("TODO: Enable PDMA\n");
|
||||
logger_.error().append("TODO: Enable PDMA");
|
||||
}
|
||||
break;
|
||||
|
||||
@ -143,7 +143,7 @@ void SCSICard::perform_bus_operation(Select select, bool is_read, uint16_t addre
|
||||
break;
|
||||
|
||||
default:
|
||||
printf("Unhandled: %04x %c %02x\n", address, is_read ? 'r' : 'w', *value);
|
||||
logger_.error().append("Unhandled: %04x %c %02x\n", address, is_read ? 'r' : 'w', *value);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
@ -17,6 +17,8 @@
|
||||
#include "../../../Storage/MassStorage/SCSI/DirectAccessDevice.hpp"
|
||||
#include "../../../Storage/MassStorage/MassStorageDevice.hpp"
|
||||
|
||||
#include "../../../Outputs/Log.hpp"
|
||||
|
||||
#include <array>
|
||||
#include <memory>
|
||||
|
||||
@ -47,6 +49,7 @@ class SCSICard: public Card {
|
||||
SCSI::Bus scsi_bus_;
|
||||
NCR::NCR5380::NCR5380 ncr5380_;
|
||||
SCSI::Target::Target<SCSI::DirectAccessDevice> storage_;
|
||||
Log::Logger<Log::Source::AppleIISCSICard> logger_;
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -16,7 +16,7 @@ using namespace Atari::ST;
|
||||
|
||||
namespace {
|
||||
|
||||
Log::Logger<Log::Source::AtariSTDMAController> logger;
|
||||
[[maybe_unused]] Log::Logger<Log::Source::AtariSTDMAController> logger;
|
||||
|
||||
enum Control: uint16_t {
|
||||
Direction = 0x100,
|
||||
|
@ -28,7 +28,6 @@ void BD500::write(int address, uint8_t value) {
|
||||
access(address);
|
||||
|
||||
if(address >= 0x0320 && address <= 0x0323) {
|
||||
// if(address == 0x320) printf("Command %02x\n", value);
|
||||
WD::WD1770::write(address, value);
|
||||
}
|
||||
|
||||
@ -69,9 +68,7 @@ void BD500::access(int address) {
|
||||
case 0x314: enable_overlay_ram_ = true; break;
|
||||
case 0x317: disable_basic_rom_ = false; break;
|
||||
|
||||
default:
|
||||
// printf("Switch %04x???\n", address);
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
select_paged_item();
|
||||
|
@ -23,6 +23,7 @@ enum class Source {
|
||||
AmigaCopper,
|
||||
AmigaChipset,
|
||||
AmigaBlitter,
|
||||
AppleIISCSICard,
|
||||
AtariST,
|
||||
AtariSTDMAController,
|
||||
CommodoreStaticAnalyser,
|
||||
@ -36,6 +37,7 @@ enum class Source {
|
||||
MasterSystem,
|
||||
MultiMachine,
|
||||
MFP68901,
|
||||
MOS6526,
|
||||
MSX,
|
||||
NCR5380,
|
||||
OpenGL,
|
||||
@ -64,10 +66,13 @@ constexpr bool is_enabled(Source source) {
|
||||
case Source::AmigaChipset:
|
||||
case Source::AmigaCopper:
|
||||
case Source::AmigaDisk:
|
||||
case Source::DirectAccessDevice:
|
||||
case Source::IWM:
|
||||
case Source::MFP68901:
|
||||
case Source::NCR5380:
|
||||
case Source::SCC: return false;
|
||||
case Source::SCC:
|
||||
case Source::SCSI:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@ -81,9 +86,11 @@ constexpr const char *prefix(Source source) {
|
||||
case Source::AmigaChipset: return "Chipset";
|
||||
case Source::AmigaCopper: return "Copper";
|
||||
case Source::AmigaDisk: return "Disk";
|
||||
case Source::AppleIISCSICard: return "SCSI card";
|
||||
case Source::AtariST: return "AtariST";
|
||||
case Source::AtariSTDMAController: return "DMA";
|
||||
case Source::CommodoreStaticAnalyser: return "Commodore Static Analyser";
|
||||
case Source::DirectAccessDevice: return "Direct Access Device";
|
||||
case Source::Enterprise: return "Enterprise";
|
||||
case Source::i8272: return "i8272";
|
||||
case Source::IntelligentKeyboard: return "IKYB";
|
||||
@ -91,6 +98,7 @@ constexpr const char *prefix(Source source) {
|
||||
case Source::M50740: return "M50740";
|
||||
case Source::Macintosh: return "Macintosh";
|
||||
case Source::MasterSystem: return "SMS";
|
||||
case Source::MOS6526: return "MOS6526";
|
||||
case Source::MFP68901: return "MFP68901";
|
||||
case Source::MultiMachine: return "Multi-machine";
|
||||
case Source::MSX: return "MSX";
|
||||
@ -112,8 +120,6 @@ class Logger {
|
||||
public:
|
||||
static constexpr bool enabled = is_enabled(source);
|
||||
|
||||
Logger() {}
|
||||
|
||||
struct LogLine {
|
||||
public:
|
||||
LogLine(FILE *stream) : stream_(stream) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user