--- nono/vm/printer.cpp 2026/04/29 17:05:18 1.1.1.8 +++ nono/vm/printer.cpp 2026/04/29 17:05:25 1.1.1.9 @@ -11,6 +11,9 @@ #include "printer.h" #include "mpu.h" +// InsideOut p.135 +static const busdata wait = busdata::Wait(7 * 40_nsec); + // コンストラクタ PrinterDevice::PrinterDevice() : inherited(OBJ_PRINTER) @@ -22,50 +25,56 @@ PrinterDevice::~PrinterDevice() { } -uint64 +busdata PrinterDevice::Read8(uint32 addr) { // 書き込み専用 - mpu->AddCycle(7); // InsideOut p.135 - return (uint64)-1; + busdata data = busdata::BusErr; + data |= wait; + return data; } -uint64 +busdata PrinterDevice::Read16(uint32 addr) { // 書き込み専用 - mpu->AddCycle(7); // InsideOut p.135 - return (uint64)-1; + busdata data = busdata::BusErr; + data |= wait; + return data; } -uint64 +busdata PrinterDevice::Write8(uint32 addr, uint32 data) { - mpu->AddCycle(7); // InsideOut p.135 - uint32 offset = addr - baseaddr; + busdata r; + switch (offset) { case 0: // データ書き込み putlog(0, "Write Data (NOT IMPLEMENTED)"); + r.SetBusErr(); break; case 3: // ストローブ書き込み putlog(0, "Write Strobe (NOT IMPLEMENTED)"); - return 0; + r = 0; + break; default: break; } - return (uint64)-1; + + r |= wait; + return r; } -uint64 +busdata PrinterDevice::Write16(uint32 addr, uint32 data) { return Write8(addr + 1, data); } -uint64 +busdata PrinterDevice::Peek8(uint32 addr) { // XXX