--- nono/vm/mpu680x0.cpp 2026/04/29 17:04:59 1.1.1.10 +++ nono/vm/mpu680x0.cpp 2026/04/29 17:05:06 1.1.1.12 @@ -357,23 +357,17 @@ MPU680x0Device::MonitorUpdateReg(Monitor ".DBL", ".???", }; - static const char * const rmstr[] = { - "Near", - "Zero", - "Minus", - "Plus", - }; uint32 fpcr = reg.fpframe.fpf_fpcr; screen.Print(x, y++, "FPCR:%04x", fpcr); - screen.Print(x + 2, y++, "%s %s %s %s %s %s %s %s", - (fpcr & 0x8000) ? "BS" : "--", - (fpcr & 0x4000) ? "SN" : "--", - (fpcr & 0x2000) ? "OP" : "--", - (fpcr & 0x1000) ? "OV" : "--", - (fpcr & 0x0800) ? "UF" : "--", - (fpcr & 0x0400) ? "DZ" : "--", - (fpcr & 0x0200) ? "I2" : "--", - (fpcr & 0x0100) ? "I1" : "--"); + screen.Puts(x + 2, y, TA::OnOff(fpcr & 0x8000), "BS"); + screen.Puts(x + 5, y, TA::OnOff(fpcr & 0x4000), "SN"); + screen.Puts(x + 8, y, TA::OnOff(fpcr & 0x2000), "OP"); + screen.Puts(x + 11, y, TA::OnOff(fpcr & 0x1000), "OV"); + screen.Puts(x + 14, y, TA::OnOff(fpcr & 0x0800), "UF"); + screen.Puts(x + 17, y, TA::OnOff(fpcr & 0x0400), "DZ"); + screen.Puts(x + 20, y, TA::OnOff(fpcr & 0x0200), "I2"); + screen.Puts(x + 23, y, TA::OnOff(fpcr & 0x0100), "I1"); + y++; screen.Print(x + 2, y++, "RP=%s RM=%s", rpstr[(fpcr >> 6) & 3], rmstr[(fpcr >> 4) & 3]); @@ -382,27 +376,27 @@ MPU680x0Device::MonitorUpdateReg(Monitor uint32 fpsr = reg.fpframe.fpf_fpsr; uint32 cc = fpsr >> 24; screen.Print(x, y++, "FPSR:%08x", fpsr); - screen.Print(x + 2, y++, "%c %c %s %s Q=$%02x", - (cc & 0x08) ? 'N' : '-', - (cc & 0x04) ? 'Z' : '-', - (cc & 0x02) ? "Inf" : "---", - (cc & 0x01) ? "NAN" : "---", - (fpsr >> 16) & 0xff); - screen.Print(x + 2, y++, "%s %s %s %s %s %s %s %s", - (fpsr & 0x8000) ? "BS" : "--", - (fpsr & 0x4000) ? "SN" : "--", - (fpsr & 0x2000) ? "OP" : "--", - (fpsr & 0x1000) ? "OV" : "--", - (fpsr & 0x0800) ? "UF" : "--", - (fpsr & 0x0400) ? "DZ" : "--", - (fpsr & 0x0200) ? "I2" : "--", - (fpsr & 0x0100) ? "I1" : "--"); - screen.Print(x + 2, y++, "%s %s %s %s %s", - (fpsr & 0x80) ? "IOP" : "---", - (fpsr & 0x40) ? "OVFL" : "----", - (fpsr & 0x20) ? "UNFL" : "----", - (fpsr & 0x10) ? "DZ" : "--", - (fpsr & 0x08) ? "INEX" : "----"); + screen.Puts(x + 2, y, TA::OnOff(cc & 0x08), "N"); + screen.Puts(x + 4, y, TA::OnOff(cc & 0x04), "Z"); + screen.Puts(x + 6, y, TA::OnOff(cc & 0x02), "Inf"); + screen.Puts(x + 10, y, TA::OnOff(cc & 0x01), "NAN"); + screen.Print(x + 14, y, "Q=$%02x", (fpsr >> 16) & 0xff); + y++; + screen.Puts(x + 2, y, TA::OnOff(fpsr & 0x8000), "BS"); + screen.Puts(x + 5, y, TA::OnOff(fpsr & 0x4000), "SN"); + screen.Puts(x + 8, y, TA::OnOff(fpsr & 0x2000), "OP"); + screen.Puts(x + 11, y, TA::OnOff(fpsr & 0x1000), "OV"); + screen.Puts(x + 14, y, TA::OnOff(fpsr & 0x0800), "UF"); + screen.Puts(x + 17, y, TA::OnOff(fpsr & 0x0400), "DZ"); + screen.Puts(x + 20, y, TA::OnOff(fpsr & 0x0200), "I2"); + screen.Puts(x + 23, y, TA::OnOff(fpsr & 0x0100), "I1"); + y++; + screen.Puts(x + 2, y, TA::OnOff(fpsr & 0x80), "IOP"); + screen.Puts(x + 6, y, TA::OnOff(fpsr & 0x80), "OVFL"); + screen.Puts(x + 11, y, TA::OnOff(fpsr & 0x80), "UNFL"); + screen.Puts(x + 16, y, TA::OnOff(fpsr & 0x80), "DZ"); + screen.Puts(x + 19, y, TA::OnOff(fpsr & 0x80), "INEX"); + y++; // FPIAR screen.Print(x, y++, "FPIAR:%08x", reg.fpframe.fpf_fpiar);