From 2200940efe93d08cb6bcc2d3f724109c21c88554 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Fri, 19 Jan 2024 14:22:23 -0500 Subject: [PATCH] Update logging. --- .../Dynamic/MultiMachine/MultiMachine.cpp | 19 ++++++---- Components/68901/MFP68901.cpp | 35 ++++++++++--------- Outputs/Log.hpp | 14 ++++++-- Storage/Disk/Track/PCMTrack.cpp | 8 ++++- 4 files changed, 49 insertions(+), 27 deletions(-) diff --git a/Analyser/Dynamic/MultiMachine/MultiMachine.cpp b/Analyser/Dynamic/MultiMachine/MultiMachine.cpp index 8f96498cc..2f20b4a30 100644 --- a/Analyser/Dynamic/MultiMachine/MultiMachine.cpp +++ b/Analyser/Dynamic/MultiMachine/MultiMachine.cpp @@ -11,6 +11,12 @@ #include +namespace { + +Log::Logger logger; + +} + using namespace Analyser::Dynamic; MultiMachine::MultiMachine(std::vector> &&machines) : @@ -61,13 +67,14 @@ bool MultiMachine::would_collapse(const std::vectortimed_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(), diff --git a/Components/68901/MFP68901.cpp b/Components/68901/MFP68901.cpp index d1dcd782b..02ef79588 100644 --- a/Components/68901/MFP68901.cpp +++ b/Components/68901/MFP68901.cpp @@ -11,13 +11,14 @@ #include #include -#ifndef NDEBUG -#define NDEBUG -#endif - -#define LOG_PREFIX "[MFP] " #include "../../Outputs/Log.hpp" +namespace { + +Log::Logger 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); } diff --git a/Outputs/Log.hpp b/Outputs/Log.hpp index e44207e4a..08e947525 100644 --- a/Outputs/Log.hpp +++ b/Outputs/Log.hpp @@ -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 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); diff --git a/Storage/Disk/Track/PCMTrack.cpp b/Storage/Disk/Track/PCMTrack.cpp index a32c439a9..3fb87d535 100644 --- a/Storage/Disk/Track/PCMTrack.cpp +++ b/Storage/Disk/Track/PCMTrack.cpp @@ -9,6 +9,12 @@ #include "PCMTrack.hpp" #include "../../../Outputs/Log.hpp" +namespace { + +Log::Logger 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; }