diff options
author | 2017-12-15 22:32:31 +0100 | |
---|---|---|
committer | 2017-12-15 22:32:31 +0100 | |
commit | 9434fb20a30c2c5b020e296117a02ecd32aed7c7 (patch) | |
tree | 50273f4c55f2ce121b250fba61e72c5df8a46d18 /src/devices/machine/wd_fdc.cpp | |
parent | 479a9c81238c5fdbddd9bc3d8f4db2a6d18f5a07 (diff) |
wd_fdc.cpp: updated debug printouts to use logmacro.h LOG messages, feel free to revert if not for the better
Diffstat (limited to 'src/devices/machine/wd_fdc.cpp')
-rw-r--r-- | src/devices/machine/wd_fdc.cpp | 256 |
1 files changed, 140 insertions, 116 deletions
diff --git a/src/devices/machine/wd_fdc.cpp b/src/devices/machine/wd_fdc.cpp index 8baeff7edf0..9e4c5738ebb 100644 --- a/src/devices/machine/wd_fdc.cpp +++ b/src/devices/machine/wd_fdc.cpp @@ -5,6 +5,44 @@ #include "debugger.h" +//#define LOG_GENERAL (1U << 0) //defined in logmacro.h already +#define LOG_SETUP (1U << 1) // Shows register setup +#define LOG_SHIFT (1U << 2) // Shows shift register contents +#define LOG_COMP (1U << 3) // Shows operations on the CPU side +#define LOG_COMMAND (1U << 4) // Shows command invocation +#define LOG_SYNC (1U << 5) // Shows sync actions +#define LOG_LINES (1U << 6) // Show control lines +#define LOG_EVENT (1U << 7) // Show events +#define LOG_MATCH (1U << 8) // Show sector match operation +#define LOG_DESC (1U << 9) // Show track description +#define LOG_WRITE (1U << 10) // Show write operation on image +#define LOG_TRANSITION (1U << 11) // Show transitions +#define LOG_STATE (1U << 12) // Show state machine + +//#define VERBOSE (LOG_GENERAL | LOG_SETUP| LOG_COMMAND | LOG_STATE | LOG_LINES ) +//#define LOG_OUTPUT_STREAM std::cout + +#include "logmacro.h" + +#define LOGSETUP(...) LOGMASKED(LOG_SETUP, __VA_ARGS__) +#define LOGSHIFT(...) LOGMASKED(LOG_SHIFT, __VA_ARGS__) +#define LOGCOMP(...) LOGMASKED(LOG_COMP, __VA_ARGS__) +#define LOGCOMMAND(...) LOGMASKED(LOG_COMMAND, __VA_ARGS__) +#define LOGSYNC(...) LOGMASKED(LOG_SYNC, __VA_ARGS__) +#define LOGLINES(...) LOGMASKED(LOG_LINES, __VA_ARGS__) +#define LOGEVENT(...) LOGMASKED(LOG_EVENT, __VA_ARGS__) +#define LOGMATCH(...) LOGMASKED(LOG_MATCH, __VA_ARGS__) +#define LOGDESC(...) LOGMASKED(LOG_DESC, __VA_ARGS__) +#define LOGWRITE(...) LOGMASKED(LOG_WRITE, __VA_ARGS__) +#define LOGTRANSITION(...) LOGMASKED(LOG_TRANSITION, __VA_ARGS__) +#define LOGSTATE(...) LOGMASKED(LOG_STATE, __VA_ARGS__) + +#ifdef _MSC_VER +#define FUNCNAME __func__ +#else +#define FUNCNAME __PRETTY_FUNCTION__ +#endif + DEFINE_DEVICE_TYPE(FD1771, fd1771_device, "fd1771", "FD1771 FDC") DEFINE_DEVICE_TYPE(FD1781, fd1781_device, "fd1781", "FD1781 FDC") @@ -35,43 +73,6 @@ DEFINE_DEVICE_TYPE(WD1770, wd1770_device, "wd1770", "Western Digital DEFINE_DEVICE_TYPE(WD1772, wd1772_device, "wd1772", "Western Digital WD1772 FDC") DEFINE_DEVICE_TYPE(WD1773, wd1773_device, "wd1773", "Western Digital WD1773 FDC") -/* - Debugging flags. Set to 0 or 1. -*/ - -// Shows shift register contents -#define TRACE_SHIFT 0 - -// Shows operations on the CPU side -#define TRACE_COMP 0 - -// Shows command invocation -#define TRACE_COMMAND 0 - -// Shows sync actions -#define TRACE_SYNC 0 - -// Show control lines -#define TRACE_LINES 0 - -// Show events -#define TRACE_EVENT 0 - -// Show sector match operation -#define TRACE_MATCH 0 - -// Show track description -#define TRACE_DESC 0 - -// Show write operation on image -#define TRACE_WRITE 0 - -// Show transitions -#define TRACE_TRANSITION 0 - -// Show state machine -#define TRACE_STATE 0 - wd_fdc_device_base::wd_fdc_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, type, tag, owner, clock), intrq_cb(*this), @@ -209,7 +210,7 @@ WRITE_LINE_MEMBER(wd_fdc_device_base::dden_w) if(dden != bool(state)) { dden = bool(state); - if (TRACE_LINES) logerror("select %s\n", dden ? "fm" : "mfm"); + LOGLINES("select %s\n", dden ? "fm" : "mfm"); } } @@ -228,7 +229,7 @@ std::string wd_fdc_device_base::ttsn() void wd_fdc_device_base::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) { - if (TRACE_EVENT) logerror("Event fired for timer %s\n", (id==TM_GEN)? "TM_GEN" : (id==TM_CMD)? "TM_CMD" : (id==TM_TRACK)? "TM_TRACK" : "TM_SECTOR"); + LOGEVENT("Event fired for timer %s\n", (id==TM_GEN)? "TM_GEN" : (id==TM_CMD)? "TM_CMD" : (id==TM_TRACK)? "TM_TRACK" : "TM_SECTOR"); live_sync(); switch(id) { @@ -243,6 +244,7 @@ void wd_fdc_device_base::device_timer(emu_timer &timer, device_timer_id id, int void wd_fdc_device_base::command_end() { + LOGCOMMAND("%s\n", FUNCNAME); main_state = sub_state = IDLE; motor_timeout = 0; @@ -256,7 +258,7 @@ void wd_fdc_device_base::command_end() void wd_fdc_device_base::seek_start(int state) { - if (TRACE_COMMAND) logerror("cmd: seek %d %x (track=%d)\n", state, data, track); + LOGCOMMAND("cmd: seek %d %x (track=%d)\n", state, data, track); main_state = state; status &= ~(S_CRC|S_RNF|S_SPIN); if(head_control) { @@ -276,7 +278,7 @@ void wd_fdc_device_base::seek_continue() for(;;) { switch(sub_state) { case SPINUP: - if (TRACE_STATE) logerror("SPINUP\n"); + LOGSTATE("SPINUP\n"); if(!(status & S_MON)) { spinup(); return; @@ -287,11 +289,11 @@ void wd_fdc_device_base::seek_continue() break; case SPINUP_WAIT: - if (TRACE_STATE) logerror("SPINUP_WAIT\n"); + LOGSTATE("SPINUP_WAIT\n"); return; case SPINUP_DONE: - if (TRACE_STATE) logerror("SPINUP_DONE\n"); + LOGSTATE("SPINUP_DONE\n"); if(main_state == RESTORE && floppy && !floppy->trk00_r()) { sub_state = SEEK_WAIT_STEP_TIME; delay_cycles(t_gen, step_times[command & 3]); @@ -309,7 +311,7 @@ void wd_fdc_device_base::seek_continue() break; case SEEK_MOVE: - if (TRACE_STATE) logerror("SEEK_MOVE\n"); + LOGSTATE("SEEK_MOVE\n"); if(floppy) { floppy->dir_w(last_dir); floppy->stp_w(0); @@ -325,11 +327,11 @@ void wd_fdc_device_base::seek_continue() return; case SEEK_WAIT_STEP_TIME: - if (TRACE_STATE) logerror("SEEK_WAIT_STEP_TIME\n"); + LOGSTATE("SEEK_WAIT_STEP_TIME\n"); return; case SEEK_WAIT_STEP_TIME_DONE: { - if (TRACE_STATE) logerror("SEEK_WAIT_STEP_TIME_DONE\n"); + LOGSTATE("SEEK_WAIT_STEP_TIME_DONE\n"); bool done = false; switch(main_state) { case RESTORE: @@ -362,16 +364,16 @@ void wd_fdc_device_base::seek_continue() } case SEEK_WAIT_STABILIZATION_TIME: - if (TRACE_STATE) logerror("SEEK_WAIT_STABILIZATION_TIME\n"); + LOGSTATE("SEEK_WAIT_STABILIZATION_TIME\n"); return; case SEEK_WAIT_STABILIZATION_TIME_DONE: - if (TRACE_STATE) logerror("SEEK_WAIT_STABILIZATION_TIME_DONE\n"); + LOGSTATE("SEEK_WAIT_STABILIZATION_TIME_DONE\n"); sub_state = SEEK_DONE; break; case SEEK_DONE: - if (TRACE_STATE) logerror("SEEK_DONE\n"); + LOGSTATE("SEEK_DONE\n"); status |= S_HLD; hld = true; if (!hld_cb.isnull()) @@ -391,7 +393,7 @@ void wd_fdc_device_base::seek_continue() return; case SCAN_ID: - if (TRACE_STATE) logerror("SCAN_ID\n"); + LOGSTATE("SCAN_ID\n"); if(cur_live.idbuf[0] != track) { live_start(SEARCH_ADDRESS_MARK_HEADER); return; @@ -405,7 +407,7 @@ void wd_fdc_device_base::seek_continue() return; case SCAN_ID_FAILED: - if (TRACE_STATE) logerror("SCAN_ID_FAILED\n"); + LOGSTATE("SCAN_ID_FAILED\n"); status |= S_RNF; command_end(); return; @@ -419,8 +421,7 @@ void wd_fdc_device_base::seek_continue() bool wd_fdc_device_base::sector_matches() const { - if(TRACE_MATCH) - logerror("matching read T=%02x H=%02x S=%02x L=%02x - searched T=%02x S=%02x\n", + LOGMATCH("matching read T=%02x H=%02x S=%02x L=%02x - searched T=%02x S=%02x\n", cur_live.idbuf[0], cur_live.idbuf[1], cur_live.idbuf[2], cur_live.idbuf[3], track, sector); @@ -441,7 +442,7 @@ bool wd_fdc_device_base::is_ready() void wd_fdc_device_base::read_sector_start() { - if (TRACE_COMMAND) logerror("cmd: read sector%s (c=%02x) t=%d, s=%d\n", command & 0x10 ? " multiple" : "", command, track, sector); + LOGCOMMAND("cmd: read sector%s (c=%02x) t=%d, s=%d\n", command & 0x10 ? " multiple" : "", command, track, sector); if(!is_ready()) { command_end(); return; @@ -462,7 +463,7 @@ void wd_fdc_device_base::read_sector_continue() for(;;) { switch(sub_state) { case SPINUP: - if (TRACE_STATE) logerror("SPINUP\n"); + LOGSTATE("SPINUP\n"); if(!(status & S_MON)) { spinup(); return; @@ -471,11 +472,11 @@ void wd_fdc_device_base::read_sector_continue() break; case SPINUP_WAIT: - if (TRACE_STATE) logerror("SPINUP_WAIT\n"); + LOGSTATE("SPINUP_WAIT\n"); return; case SPINUP_DONE: - if (TRACE_STATE) logerror("SPINUP_DONE\n"); + LOGSTATE("SPINUP_DONE\n"); if(command & 4) { sub_state = SETTLE_WAIT; delay_cycles(t_gen, settle_time()); @@ -486,18 +487,18 @@ void wd_fdc_device_base::read_sector_continue() } case SETTLE_WAIT: - if (TRACE_STATE) logerror("SETTLE_WAIT\n"); + LOGSTATE("SETTLE_WAIT\n"); return; case SETTLE_DONE: - if (TRACE_STATE) logerror("SETTLE_DONE\n"); + LOGSTATE("SETTLE_DONE\n"); sub_state = SCAN_ID; counter = 0; live_start(SEARCH_ADDRESS_MARK_HEADER); return; case SCAN_ID: - if (TRACE_STATE) logerror("SCAN_ID\n"); + LOGSTATE("SCAN_ID\n"); if(!sector_matches()) { live_start(SEARCH_ADDRESS_MARK_HEADER); return; @@ -513,13 +514,13 @@ void wd_fdc_device_base::read_sector_continue() return; case SCAN_ID_FAILED: - if (TRACE_STATE) logerror("SCAN_ID_FAILED\n"); + LOGSTATE("SCAN_ID_FAILED\n"); status |= S_RNF; command_end(); return; case SECTOR_READ: - if (TRACE_STATE) logerror("SECTOR_READ\n"); + LOGSTATE("SECTOR_READ\n"); if(cur_live.crc) status |= S_CRC; @@ -541,7 +542,7 @@ void wd_fdc_device_base::read_sector_continue() void wd_fdc_device_base::read_track_start() { - if (TRACE_COMMAND) logerror("cmd: read track (c=%02x) t=%d\n", command, track); + LOGCOMMAND("cmd: read track (c=%02x) t=%d\n", command, track); if(!is_ready()) { command_end(); @@ -563,7 +564,7 @@ void wd_fdc_device_base::read_track_continue() for(;;) { switch(sub_state) { case SPINUP: - if (TRACE_STATE) logerror("SPINUP\n"); + LOGSTATE("SPINUP\n"); if(!(status & S_MON)) { spinup(); return; @@ -572,11 +573,11 @@ void wd_fdc_device_base::read_track_continue() break; case SPINUP_WAIT: - if (TRACE_STATE) logerror("SPINUP_WAIT\n"); + LOGSTATE("SPINUP_WAIT\n"); return; case SPINUP_DONE: - if (TRACE_STATE) logerror("SPINUP_DONE\n"); + LOGSTATE("SPINUP_DONE\n"); if(command & 4) { sub_state = SETTLE_WAIT; delay_cycles(t_gen, settle_time()); @@ -588,26 +589,26 @@ void wd_fdc_device_base::read_track_continue() } case SETTLE_WAIT: - if (TRACE_STATE) logerror("SETTLE_WAIT\n"); + LOGSTATE("SETTLE_WAIT\n"); return; case SETTLE_DONE: - if (TRACE_STATE) logerror("SETTLE_DONE\n"); + LOGSTATE("SETTLE_DONE\n"); sub_state = WAIT_INDEX; return; case WAIT_INDEX: - if (TRACE_STATE) logerror("WAIT_INDEX\n"); + LOGSTATE("WAIT_INDEX\n"); return; case WAIT_INDEX_DONE: - if (TRACE_STATE) logerror("WAIT_INDEX_DONE\n"); + LOGSTATE("WAIT_INDEX_DONE\n"); sub_state = TRACK_DONE; live_start(READ_TRACK_DATA); return; case TRACK_DONE: - if (TRACE_STATE) logerror("TRACK_DONE\n"); + LOGSTATE("TRACK_DONE\n"); command_end(); return; @@ -620,8 +621,9 @@ void wd_fdc_device_base::read_track_continue() void wd_fdc_device_base::read_id_start() { - if (TRACE_COMMAND) logerror("cmd: read id (c=%02x)\n", command); + LOGCOMMAND("cmd: read id (c=%02x)\n", command); if(!is_ready()) { + LOGCOMMAND("cmd: - not ready!"); command_end(); return; } @@ -638,10 +640,11 @@ void wd_fdc_device_base::read_id_start() void wd_fdc_device_base::read_id_continue() { + LOG("%s\n", FUNCNAME); for(;;) { switch(sub_state) { case SPINUP: - if (TRACE_STATE) logerror("SPINUP\n"); + LOGSTATE("SPINUP\n"); if(!(status & S_MON)) { spinup(); return; @@ -650,11 +653,11 @@ void wd_fdc_device_base::read_id_continue() break; case SPINUP_WAIT: - if (TRACE_STATE) logerror("SPINUP_WAIT\n"); + LOGSTATE("SPINUP_WAIT\n"); return; case SPINUP_DONE: - if (TRACE_STATE) logerror("SPINUP_DONE\n"); + LOGSTATE("SPINUP_DONE\n"); if(command & 4) { sub_state = SETTLE_WAIT; delay_cycles(t_gen, settle_time()); @@ -665,23 +668,23 @@ void wd_fdc_device_base::read_id_continue() } case SETTLE_WAIT: - if (TRACE_STATE) logerror("SETTLE_WAIT\n"); + LOGSTATE("SETTLE_WAIT\n"); return; case SETTLE_DONE: - if (TRACE_STATE) logerror("SETTLE_DONE\n"); + LOGSTATE("SETTLE_DONE\n"); sub_state = SCAN_ID; counter = 0; live_start(SEARCH_ADDRESS_MARK_HEADER); return; case SCAN_ID: - if (TRACE_STATE) logerror("SCAN_ID\n"); + LOGSTATE("SCAN_ID\n"); command_end(); return; case SCAN_ID_FAILED: - if (TRACE_STATE) logerror("SCAN_ID_FAILED\n"); + LOGSTATE("SCAN_ID_FAILED\n"); status |= S_RNF; command_end(); return; @@ -695,7 +698,7 @@ void wd_fdc_device_base::read_id_continue() void wd_fdc_device_base::write_track_start() { - if (TRACE_COMMAND) logerror("cmd: write track (c=%02x) t=%d\n", command, track); + LOGCOMMAND("cmd: write track (c=%02x) t=%d\n", command, track); if(!is_ready()) { command_end(); @@ -722,7 +725,7 @@ void wd_fdc_device_base::write_track_continue() for(;;) { switch(sub_state) { case SPINUP: - if (TRACE_STATE) logerror("SPINUP\n"); + LOGSTATE("SPINUP\n"); if(!(status & S_MON)) { spinup(); return; @@ -731,11 +734,11 @@ void wd_fdc_device_base::write_track_continue() break; case SPINUP_WAIT: - if (TRACE_STATE) logerror("SPINUP_WAIT\n"); + LOGSTATE("SPINUP_WAIT\n"); return; case SPINUP_DONE: - if (TRACE_STATE) logerror("SPINUP_DONE\n"); + LOGSTATE("SPINUP_DONE\n"); if(command & 4) { sub_state = SETTLE_WAIT; delay_cycles(t_gen, settle_time()); @@ -746,22 +749,22 @@ void wd_fdc_device_base::write_track_continue() } case SETTLE_WAIT: - if (TRACE_STATE) logerror("SETTLE_WAIT\n"); + LOGSTATE("SETTLE_WAIT\n"); return; case SETTLE_DONE: - if (TRACE_STATE) logerror("SETTLE_DONE\n"); + LOGSTATE("SETTLE_DONE\n"); set_drq(); sub_state = DATA_LOAD_WAIT; delay_cycles(t_gen, 192); return; case DATA_LOAD_WAIT: - if (TRACE_STATE) logerror("DATA_LOAD_WAIT\n"); + LOGSTATE("DATA_LOAD_WAIT\n"); return; case DATA_LOAD_WAIT_DONE: - if (TRACE_STATE) logerror("DATA_LOAD_WAIT_DONE\n"); + LOGSTATE("DATA_LOAD_WAIT_DONE\n"); if(drq) { status |= S_LOST; drop_drq(); @@ -772,18 +775,18 @@ void wd_fdc_device_base::write_track_continue() break; case WAIT_INDEX: - if (TRACE_STATE) logerror("WAIT_INDEX\n"); + LOGSTATE("WAIT_INDEX\n"); return; case WAIT_INDEX_DONE: - if (TRACE_STATE) logerror("WAIT_INDEX_DONE\n"); + LOGSTATE("WAIT_INDEX_DONE\n"); sub_state = TRACK_DONE; live_start(WRITE_TRACK_DATA); pll_start_writing(machine().time()); return; case TRACK_DONE: - if (TRACE_STATE) logerror("TRACK_DONE\n"); + LOGSTATE("TRACK_DONE\n"); if(format_last_byte_count) { char buf[32]; if(format_last_byte_count > 1) @@ -792,7 +795,7 @@ void wd_fdc_device_base::write_track_continue() sprintf(buf, "%02x", format_last_byte); format_description_string += buf; } - if (TRACE_DESC) logerror("track description %s\n", format_description_string.c_str()); + LOGDESC("track description %s\n", format_description_string.c_str()); command_end(); return; @@ -806,7 +809,7 @@ void wd_fdc_device_base::write_track_continue() void wd_fdc_device_base::write_sector_start() { - if (TRACE_COMMAND) logerror("cmd: write sector%s (c=%02x) t=%d, s=%d\n", command & 0x10 ? " multiple" : "", command, track, sector); + LOGCOMMAND("cmd: write sector%s (c=%02x) t=%d, s=%d\n", command & 0x10 ? " multiple" : "", command, track, sector); if(!is_ready()) { command_end(); @@ -828,7 +831,7 @@ void wd_fdc_device_base::write_sector_continue() for(;;) { switch(sub_state) { case SPINUP: - if (TRACE_STATE) logerror("SPINUP\n"); + LOGSTATE("SPINUP\n"); if(!(status & S_MON)) { spinup(); return; @@ -837,11 +840,11 @@ void wd_fdc_device_base::write_sector_continue() break; case SPINUP_WAIT: - if (TRACE_STATE) logerror("SPINUP_WAIT\n"); + LOGSTATE("SPINUP_WAIT\n"); return; case SPINUP_DONE: - if (TRACE_STATE) logerror("SPINUP_DONE\n"); + LOGSTATE("SPINUP_DONE\n"); if(command & 4) { sub_state = SETTLE_WAIT; delay_cycles(t_gen, settle_time()); @@ -852,18 +855,18 @@ void wd_fdc_device_base::write_sector_continue() } case SETTLE_WAIT: - if (TRACE_STATE) logerror("SETTLE_WAIT\n"); + LOGSTATE("SETTLE_WAIT\n"); return; case SETTLE_DONE: - if (TRACE_STATE) logerror("SETTLE_DONE\n"); + LOGSTATE("SETTLE_DONE\n"); sub_state = SCAN_ID; counter = 0; live_start(SEARCH_ADDRESS_MARK_HEADER); return; case SCAN_ID: - if (TRACE_STATE) logerror("SCAN_ID\n"); + LOGSTATE("SCAN_ID\n"); if(!sector_matches()) { live_start(SEARCH_ADDRESS_MARK_HEADER); return; @@ -879,13 +882,13 @@ void wd_fdc_device_base::write_sector_continue() return; case SCAN_ID_FAILED: - if (TRACE_STATE) logerror("SCAN_ID_FAILED\n"); + LOGSTATE("SCAN_ID_FAILED\n"); status |= S_RNF; command_end(); return; case SECTOR_WRITE: - if (TRACE_STATE) logerror("SECTOR_WRITE\n"); + LOGSTATE("SECTOR_WRITE\n"); if(command & 0x10) { sector++; sub_state = SPINUP_DONE; @@ -904,7 +907,7 @@ void wd_fdc_device_base::write_sector_continue() void wd_fdc_device_base::interrupt_start() { - if (TRACE_COMMAND) logerror("cmd: forced interrupt (c=%02x)\n", command); + LOGCOMMAND("cmd: forced interrupt (c=%02x)\n", command); if(status & S_BUSY) { main_state = sub_state = cur_live.state = IDLE; @@ -946,6 +949,7 @@ void wd_fdc_device_base::interrupt_start() void wd_fdc_device_base::general_continue() { + LOG("%s\n", FUNCNAME); if(cur_live.state != IDLE) { live_run(); if(cur_live.state != IDLE) @@ -1025,6 +1029,10 @@ void wd_fdc_device_base::do_cmd_w() command = cmd_buffer; cmd_buffer = -1; + LOGCOMMAND("%s %02x: %s\n", FUNCNAME, cmd_buffer, std::array<char const *, 16> + {{"RESTORE", "SEEK", "STEP", "STEP", "STEP", "STEP", "STEP", "STEP", + "READ sector start", "READ sector start", "WRITE sector start", "WRITE sector start", + "READ ID start", "INTERRUPT start", "READ track start", "WRITE track start"}}[(command >> 4) & 0x0f]); switch(command & 0xf0) { case 0x00: last_dir = 1; @@ -1073,8 +1081,8 @@ void wd_fdc_device_base::do_cmd_w() void wd_fdc_device_base::cmd_w(uint8_t val) { - if (TRACE_COMP) logerror("Initiating command %02x\n", val); if (inverted_bus) val ^= 0xff; + LOGCOMP("Initiating command %02x\n", val); if(intrq && !(intrq_cond & I_IMM)) { intrq = false; @@ -1222,6 +1230,7 @@ uint8_t wd_fdc_device_base::data_r() void wd_fdc_device_base::gen_w(int reg, uint8_t val) { + LOGSETUP("%s %02x: %02x\n", FUNCNAME, reg, val); switch(reg) { case 0: cmd_w(val); break; case 1: track_w(val); break; @@ -1395,6 +1404,7 @@ READ_LINE_MEMBER(wd_fdc_device_base::enp_r) void wd_fdc_device_base::live_start(int state) { + LOG("%s\n", FUNCNAME); cur_live.tm = machine().time(); cur_live.state = state; cur_live.next_state = -1; @@ -1419,6 +1429,7 @@ void wd_fdc_device_base::live_start(int state) void wd_fdc_device_base::checkpoint() { + LOG("%s\n", FUNCNAME); pll_commit(floppy, cur_live.tm); checkpoint_live = cur_live; pll_save_checkpoint(); @@ -1440,12 +1451,12 @@ void wd_fdc_device_base::live_sync() { if(!cur_live.tm.is_never()) { if(cur_live.tm > machine().time()) { - if (TRACE_SYNC) logerror("%s: Rolling back and replaying (%s)\n", ttsn().c_str(), tts(cur_live.tm).c_str()); + LOGSYNC("%s: Rolling back and replaying (%s)\n", ttsn().c_str(), tts(cur_live.tm).c_str()); rollback(); live_run(machine().time()); pll_commit(floppy, cur_live.tm); } else { - if (TRACE_SYNC) logerror("%s: Committing (%s)\n", ttsn().c_str(), tts(cur_live.tm).c_str()); + LOGSYNC("%s: Committing (%s)\n", ttsn().c_str(), tts(cur_live.tm).c_str()); pll_commit(floppy, cur_live.tm); if(cur_live.next_state != -1) { cur_live.state = cur_live.next_state; @@ -1510,7 +1521,7 @@ bool wd_fdc_device_base::write_one_bit(const attotime &limit) void wd_fdc_device_base::live_write_raw(uint16_t raw) { - if (TRACE_WRITE) logerror("write raw %04x, CRC=%04x\n", raw, cur_live.crc); + LOGWRITE("write raw %04x, CRC=%04x\n", raw, cur_live.crc); cur_live.shift_reg = raw; cur_live.data_bit_context = raw & 1; } @@ -1529,7 +1540,7 @@ void wd_fdc_device_base::live_write_mfm(uint8_t mfm) } cur_live.shift_reg = raw; cur_live.data_bit_context = context; - if (TRACE_WRITE) logerror("live_write_mfm byte=%02x, raw=%04x, CRC=%04x\n", mfm, raw, cur_live.crc); + LOGWRITE("live_write_mfm byte=%02x, raw=%04x, CRC=%04x\n", mfm, raw, cur_live.crc); } @@ -1542,11 +1553,12 @@ void wd_fdc_device_base::live_write_fm(uint8_t fm) cur_live.data_reg = fm; cur_live.shift_reg = raw; cur_live.data_bit_context = fm & 1; - if (TRACE_WRITE) logerror("live_write_fm byte=%02x, raw=%04x, CRC=%04x\n", fm, raw, cur_live.crc); + LOGWRITE("live_write_fm byte=%02x, raw=%04x, CRC=%04x\n", fm, raw, cur_live.crc); } void wd_fdc_device_base::live_run(attotime limit) { + // LOG("%s\n", FUNCNAME); if(cur_live.state == IDLE || cur_live.next_state != -1) return; @@ -1570,10 +1582,11 @@ void wd_fdc_device_base::live_run(attotime limit) for(;;) { switch(cur_live.state) { case SEARCH_ADDRESS_MARK_HEADER: + //LOG("%s - SEARCH_ADDRESS_MARK_HEADER\n", FUNCNAME); if(read_one_bit(limit)) return; - if (TRACE_SHIFT) logerror("%s: shift = %04x data=%02x c=%d\n", tts(cur_live.tm).c_str(), cur_live.shift_reg, + LOGSHIFT("%s: shift = %04x data=%02x c=%d\n", tts(cur_live.tm).c_str(), cur_live.shift_reg, (cur_live.shift_reg & 0x4000 ? 0x80 : 0x00) | (cur_live.shift_reg & 0x1000 ? 0x40 : 0x00) | (cur_live.shift_reg & 0x0400 ? 0x20 : 0x00) | @@ -1603,10 +1616,11 @@ void wd_fdc_device_base::live_run(attotime limit) break; case READ_HEADER_BLOCK_HEADER: { + LOG("%s - READ_HEADER_BLOCK_HEADER\n", FUNCNAME); if(read_one_bit(limit)) return; - if (TRACE_SHIFT) logerror("%s: shift = %04x data=%02x counter=%d\n", tts(cur_live.tm).c_str(), cur_live.shift_reg, + LOGSHIFT("%s: shift = %04x data=%02x counter=%d\n", tts(cur_live.tm).c_str(), cur_live.shift_reg, (cur_live.shift_reg & 0x4000 ? 0x80 : 0x00) | (cur_live.shift_reg & 0x1000 ? 0x40 : 0x00) | (cur_live.shift_reg & 0x0400 ? 0x20 : 0x00) | @@ -1643,6 +1657,7 @@ void wd_fdc_device_base::live_run(attotime limit) } case READ_ID_BLOCK_TO_LOCAL: { + LOG("%s - READ_ID_BLOCK_TO_LOCAL\n", FUNCNAME); if(read_one_bit(limit)) return; if(cur_live.bit_counter & 15) @@ -1658,6 +1673,7 @@ void wd_fdc_device_base::live_run(attotime limit) } case READ_ID_BLOCK_TO_DMA: + LOG("%s - READ_ID_BLOCK_TO_DMA\n", FUNCNAME); if(read_one_bit(limit)) return; if(cur_live.bit_counter & 15) @@ -1666,6 +1682,7 @@ void wd_fdc_device_base::live_run(attotime limit) return; case READ_ID_BLOCK_TO_DMA_BYTE: + LOG("%s - READ_ID_BLOCK_TO_DMA_BYTE\n", FUNCNAME); data = cur_live.data_reg; if(cur_live.bit_counter == 16) sector = data; @@ -1686,10 +1703,11 @@ void wd_fdc_device_base::live_run(attotime limit) break; case SEARCH_ADDRESS_MARK_DATA: + LOG("%s - SEARCH_ADDRESS_MARK_DATA\n", FUNCNAME); if(read_one_bit(limit)) return; - if (TRACE_SHIFT) logerror("%s: shift = %04x data=%02x c=%d.%x\n", tts(cur_live.tm).c_str(), cur_live.shift_reg, + LOGSHIFT("%s: shift = %04x data=%02x c=%d.%x\n", tts(cur_live.tm).c_str(), cur_live.shift_reg, (cur_live.shift_reg & 0x4000 ? 0x80 : 0x00) | (cur_live.shift_reg & 0x1000 ? 0x40 : 0x00) | (cur_live.shift_reg & 0x0400 ? 0x20 : 0x00) | @@ -1737,10 +1755,11 @@ void wd_fdc_device_base::live_run(attotime limit) break; case READ_DATA_BLOCK_HEADER: { + LOG("%s - READ_DATA_BLOCK_HEADER\n", FUNCNAME); if(read_one_bit(limit)) return; - if (TRACE_SHIFT) logerror("%s: shift = %04x data=%02x counter=%d\n", tts(cur_live.tm).c_str(), cur_live.shift_reg, + LOGSHIFT("%s: shift = %04x data=%02x counter=%d\n", tts(cur_live.tm).c_str(), cur_live.shift_reg, (cur_live.shift_reg & 0x4000 ? 0x80 : 0x00) | (cur_live.shift_reg & 0x1000 ? 0x40 : 0x00) | (cur_live.shift_reg & 0x0400 ? 0x20 : 0x00) | @@ -1776,11 +1795,13 @@ void wd_fdc_device_base::live_run(attotime limit) } case SEARCH_ADDRESS_MARK_DATA_FAILED: + LOG("%s - SEARCH_ADDRESS_MARK_DATA_FAILED\n", FUNCNAME); status |= S_RNF; cur_live.state = IDLE; return; case READ_SECTOR_DATA: { + LOG("%s - READ_SECTOR_DATA\n", FUNCNAME); if(read_one_bit(limit)) return; if(cur_live.bit_counter & 15) @@ -1802,6 +1823,7 @@ void wd_fdc_device_base::live_run(attotime limit) } case READ_SECTOR_DATA_BYTE: + LOG("%s - READ_SECTOR_DATA_BYTE\n", FUNCNAME); data = cur_live.data_reg; set_drq(); cur_live.state = READ_SECTOR_DATA; @@ -1809,6 +1831,7 @@ void wd_fdc_device_base::live_run(attotime limit) break; case READ_TRACK_DATA: { + LOG("%s - READ_TRACK_DATA\n", FUNCNAME); if(read_one_bit(limit)) return; if(cur_live.bit_counter != 16 @@ -1838,6 +1861,7 @@ void wd_fdc_device_base::live_run(attotime limit) } case READ_TRACK_DATA_BYTE: + LOG("%s - READ_TRACK_DATA_BYTE\n", FUNCNAME); data = cur_live.data_reg; set_drq(); cur_live.state = READ_TRACK_DATA; @@ -2278,14 +2302,14 @@ int wd_fdc_digital_device_base::digital_pll_t::get_next_bit(attotime &tm, floppy { attotime when = floppy ? floppy->get_next_transition(ctime) : attotime::never; - /* if (TRACE_TRANSITION) + /* if(!when.is_never()) - logerror("transition_time=%s\n", tts(when).c_str()); + LOGTRANSITION("transition_time=%s\n", tts(when).c_str()); */ for(;;) { - // if (TRACE_TRANSITION) logerror("slot=%2d, counter=%03x\n", slot, counter); + // LOGTRANSITION)("slot=%2d, counter=%03x\n", slot, counter); attotime etime = ctime+delays[slot]; - // if (TRACE_TRANSITION) logerror("etime=%s\n", tts(etime).c_str()); + // LOGTRANSITION("etime=%s\n", tts(etime).c_str()); if(etime > limit) return -1; if(transition_time == 0xffff && !when.is_never() && etime >= when) @@ -2311,7 +2335,7 @@ int wd_fdc_digital_device_base::digital_pll_t::get_next_bit(attotime &tm, floppy if(counter & 0x800) break; } - //if (TRACE_TRANSITION) logerror("first transition, time=%03x, inc=%3d\n", transition_time, increment); + //LOGTRANSITION("first transition, time=%03x, inc=%3d\n", transition_time, increment); int bit = transition_time != 0xffff; if(transition_time != 0xffff) { |