mirror of
https://github.com/TomHarte/CLK.git
synced 2025-02-01 09:33:20 +00:00
Update logging.
This commit is contained in:
parent
7e47329e2a
commit
2200940efe
@ -11,6 +11,12 @@
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
namespace {
|
||||
|
||||
Log::Logger<Log::Source::MultiMachine> logger;
|
||||
|
||||
}
|
||||
|
||||
using namespace Analyser::Dynamic;
|
||||
|
||||
MultiMachine::MultiMachine(std::vector<std::unique_ptr<DynamicMachine>> &&machines) :
|
||||
@ -61,13 +67,14 @@ bool MultiMachine::would_collapse(const std::vector<std::unique_ptr<DynamicMachi
|
||||
|
||||
void MultiMachine::did_run_machines(MultiTimedMachine *) {
|
||||
std::lock_guard machines_lock(machines_mutex_);
|
||||
#ifndef NDEBUG
|
||||
for(const auto &machine: machines_) {
|
||||
auto timed_machine = machine->timed_machine();
|
||||
LOGNBR(PADHEX(2) << timed_machine->get_confidence() << " " << timed_machine->debug_type() << "; ");
|
||||
|
||||
if constexpr (logger.enabled) {
|
||||
auto line = logger.info();
|
||||
for(const auto &machine: machines_) {
|
||||
auto timed_machine = machine->timed_machine();
|
||||
line.append("%0.4f %s; ", timed_machine->get_confidence(), timed_machine->debug_type().c_str());
|
||||
}
|
||||
}
|
||||
LOGNBR(std::endl);
|
||||
#endif
|
||||
|
||||
DynamicMachine *front = machines_.front().get();
|
||||
std::stable_sort(machines_.begin(), machines_.end(),
|
||||
|
@ -11,13 +11,14 @@
|
||||
#include <algorithm>
|
||||
#include <cstring>
|
||||
|
||||
#ifndef NDEBUG
|
||||
#define NDEBUG
|
||||
#endif
|
||||
|
||||
#define LOG_PREFIX "[MFP] "
|
||||
#include "../../Outputs/Log.hpp"
|
||||
|
||||
namespace {
|
||||
|
||||
Log::Logger<Log::Source::MFP68901> logger;
|
||||
|
||||
}
|
||||
|
||||
using namespace Motorola::MFP68901;
|
||||
|
||||
ClockingHint::Preference MFP68901::preferred_clocking() const {
|
||||
@ -64,11 +65,11 @@ uint8_t MFP68901::read(int address) {
|
||||
case 0x11: case 0x12: return get_timer_data(address - 0xf);
|
||||
|
||||
// USART block: TODO.
|
||||
case 0x13: LOG("Read: sync character generator"); break;
|
||||
case 0x14: LOG("Read: USART control"); break;
|
||||
case 0x15: LOG("Read: receiver status"); break;
|
||||
case 0x16: LOG("Read: transmitter status"); break;
|
||||
case 0x17: LOG("Read: USART data"); break;
|
||||
case 0x13: logger.error().append("Read: sync character generator"); break;
|
||||
case 0x14: logger.error().append("Read: USART control"); break;
|
||||
case 0x15: logger.error().append("Read: receiver status"); break;
|
||||
case 0x16: logger.error().append("Read: transmitter status"); break;
|
||||
case 0x17: logger.error().append("Read: USART data"); break;
|
||||
}
|
||||
return 0x00;
|
||||
}
|
||||
@ -169,11 +170,11 @@ void MFP68901::write(int address, uint8_t value) {
|
||||
break;
|
||||
|
||||
// USART block: TODO.
|
||||
case 0x13: LOG("Write: sync character generator"); break;
|
||||
case 0x14: LOG("Write: USART control"); break;
|
||||
case 0x15: LOG("Write: receiver status"); break;
|
||||
case 0x16: LOG("Write: transmitter status"); break;
|
||||
case 0x17: LOG("Write: USART data"); break;
|
||||
case 0x13: logger.error().append("Write: sync character generator"); break;
|
||||
case 0x14: logger.error().append("Write: USART control"); break;
|
||||
case 0x15: logger.error().append("Write: receiver status"); break;
|
||||
case 0x16: logger.error().append("Write: transmitter status"); break;
|
||||
case 0x17: logger.error().append("Write: USART data"); break;
|
||||
}
|
||||
|
||||
update_clocking_observer();
|
||||
@ -220,7 +221,7 @@ HalfCycles MFP68901::next_sequence_point() {
|
||||
// MARK: - Timers
|
||||
|
||||
void MFP68901::set_timer_mode(int timer, TimerMode mode, int prescale, bool reset_timer) {
|
||||
LOG("Timer " << timer << " mode set: " << int(mode) << "; prescale: " << prescale);
|
||||
logger.error().append("Timer %d mode set: %d; prescale: %d", timer, mode, prescale);
|
||||
timers_[timer].mode = mode;
|
||||
if(reset_timer) {
|
||||
timers_[timer].prescale_count = 0;
|
||||
@ -398,7 +399,7 @@ int MFP68901::acknowledge_interrupt() {
|
||||
|
||||
int selected = 0;
|
||||
while((1 << selected) != mask) ++selected;
|
||||
// LOG("Interrupt acknowledged: " << selected);
|
||||
// logger.error().append("Interrupt acknowledged: %d", selected);
|
||||
return (interrupt_vector_ & 0xf0) | uint8_t(selected);
|
||||
}
|
||||
|
||||
|
@ -29,10 +29,12 @@ enum class Source {
|
||||
M50740,
|
||||
Macintosh,
|
||||
MasterSystem,
|
||||
MultiMachine,
|
||||
MFP68901,
|
||||
MSX,
|
||||
NCR5380,
|
||||
OpenGL,
|
||||
PCMTrack,
|
||||
SCC,
|
||||
SCSI,
|
||||
SZX,
|
||||
@ -52,6 +54,7 @@ constexpr bool is_enabled(Source source) {
|
||||
default: return true;
|
||||
|
||||
// The following are all things I'm not actively working on.
|
||||
case Source::MFP68901:
|
||||
case Source::NCR5380:
|
||||
case Source::SCC: return false;
|
||||
}
|
||||
@ -65,7 +68,10 @@ constexpr const char *prefix(Source source) {
|
||||
case Source::AtariST: return "AtariST";
|
||||
case Source::CommodoreStaticAnalyser: return "Commodore StaticAnalyser";
|
||||
case Source::i8272: return "i8272";
|
||||
case Source::MFP68901: return "MFP68901";
|
||||
case Source::MultiMachine: return "Multi machine";
|
||||
case Source::NCR5380: return "5380";
|
||||
case Source::PCMTrack: return "PCM Track";
|
||||
case Source::SCSI: return "SCSI";
|
||||
case Source::SCC: return "SCC";
|
||||
case Source::SZX: return "SZX";
|
||||
@ -81,12 +87,14 @@ constexpr const char *prefix(Source source) {
|
||||
template <Source source>
|
||||
class Logger {
|
||||
public:
|
||||
static constexpr bool enabled = is_enabled(source);
|
||||
|
||||
Logger() {}
|
||||
|
||||
struct LogLine {
|
||||
public:
|
||||
LogLine(FILE *stream) : stream_(stream) {
|
||||
if constexpr (!is_enabled(source)) return;
|
||||
if constexpr (!enabled) return;
|
||||
|
||||
const auto source_prefix = prefix(source);
|
||||
if(source_prefix) {
|
||||
@ -95,12 +103,12 @@ class Logger {
|
||||
}
|
||||
|
||||
~LogLine() {
|
||||
if constexpr (!is_enabled(source)) return;
|
||||
if constexpr (!enabled) return;
|
||||
fprintf(stream_, "\n");
|
||||
}
|
||||
|
||||
void append(const char *format, ...) {
|
||||
if constexpr (!is_enabled(source)) return;
|
||||
if constexpr (!enabled) return;
|
||||
va_list args;
|
||||
va_start(args, format);
|
||||
vfprintf(stream_, format, args);
|
||||
|
@ -9,6 +9,12 @@
|
||||
#include "PCMTrack.hpp"
|
||||
#include "../../../Outputs/Log.hpp"
|
||||
|
||||
namespace {
|
||||
|
||||
Log::Logger<Log::Source::PCMTrack> logger;
|
||||
|
||||
}
|
||||
|
||||
using namespace Storage::Disk;
|
||||
|
||||
PCMTrack::PCMTrack() : segment_pointer_(0) {}
|
||||
@ -60,7 +66,7 @@ PCMTrack *PCMTrack::resampled_clone(Track *original, size_t bits_per_track) {
|
||||
return pcm_original->resampled_clone(bits_per_track);
|
||||
}
|
||||
|
||||
ERROR("NOT IMPLEMENTED: resampling non-PCMTracks");
|
||||
logger.error().append("NOT IMPLEMENTED: resampling non-PCMTracks");
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user