예제 #1
0
void alpha8201_cpu_device::state_export(const device_state_entry &entry)
{
	switch (entry.index())
	{
		case ALPHA8201_SP:
			m_sp = M_RDMEM(0x001);
			break;

		case ALPHA8201_R0:
			m_R[0] = RD_REG(0);
			break;

		case ALPHA8201_R1:
			m_R[1] = RD_REG(1);
			break;

		case ALPHA8201_R2:
			m_R[2] = RD_REG(2);
			break;

		case ALPHA8201_R3:
			m_R[3] = RD_REG(3);
			break;

		case ALPHA8201_R4:
			m_R[4] = RD_REG(4);
			break;

		case ALPHA8201_R5:
			m_R[5] = RD_REG(5);
			break;

		case ALPHA8201_R6:
			m_R[6] = RD_REG(6);
			break;

		case ALPHA8201_R7:
			m_R[7] = RD_REG(7);
			break;
	}
}
예제 #2
0
void alpha8201_cpu_device::state_import(const device_state_entry &entry)
{
	switch (entry.index())
	{
		case ALPHA8201_SP:
			M_WRMEM(0x001, m_sp);
			break;

		case ALPHA8201_R0:
			WR_REG(0, m_R[0]);
			break;

		case ALPHA8201_R1:
			WR_REG(1, m_R[1]);
			break;

		case ALPHA8201_R2:
			WR_REG(2, m_R[2]);
			break;

		case ALPHA8201_R3:
			WR_REG(3, m_R[3]);
			break;

		case ALPHA8201_R4:
			WR_REG(4, m_R[4]);
			break;

		case ALPHA8201_R5:
			WR_REG(5, m_R[5]);
			break;

		case ALPHA8201_R6:
			WR_REG(6, m_R[6]);
			break;

		case ALPHA8201_R7:
			WR_REG(7, m_R[7]);
			break;
	}
}
예제 #3
0
void pic16c62x_device::state_export(const device_state_entry &entry)
{
	switch (entry.index())
	{
		case PIC16C62x_STR:
			m_debugger_temp = STATUS;
			break;
		case PIC16C62x_TMR0:
			m_debugger_temp = TMR0;
			break;
		case PIC16C62x_PRTA:
			m_debugger_temp = PORTA & 0x1f;
			break;
		case PIC16C62x_PRTB:
			m_debugger_temp = PORTB;
			break;
		case PIC16C62x_FSR:
			m_debugger_temp = ((FSR) & m_picRAMmask) | (UINT8)(~m_picRAMmask);
			break;
	}
}
예제 #4
0
// disasm
void melps4_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
{
	switch (entry.index())
	{
		// obviously not from a single flags register, letters are made up
		case STATE_GENFLAGS:
			strprintf(str, "%c%c%c%c%c %c%c%c",
				m_intp ? 'P':'p',
				m_inte ? 'I':'i',
				m_sm   ? 'S':'s',
				m_cps  ? 'D':'d',
				m_cy   ? 'C':'c',
				m_irqflag[0] ? 'X':'.', // exf
				m_irqflag[1] ? '1':'.', // 1f
				m_irqflag[2] ? '2':'.'  // 2f
			);
			break;

		default: break;
	}
}
예제 #5
0
파일: nec.cpp 프로젝트: RalfVB/mame
void nec_common_device::state_import(const device_state_entry &entry)
{
	switch (entry.index())
	{
		case NEC_PC:
			if( m_debugger_temp - (Sreg(PS)<<4) < 0x10000 )
			{
				m_ip = m_debugger_temp - (Sreg(PS)<<4);
			}
			else
			{
				Sreg(PS) = m_debugger_temp >> 4;
				m_ip = m_debugger_temp & 0x0000f;
			}
			break;

		case NEC_FLAGS:
			ExpandFlags(m_debugger_temp);
			break;
	}
}
예제 #6
0
파일: i860.cpp 프로젝트: Ashura-X/mame
void i860_cpu_device::state_export(const device_state_entry &entry)
{
#define I860_GET_INFO_F(fnum) m_freg[fnum] = m_frg[0+(4*fnum)] | ( m_frg[1+(4*fnum)] << 8 ) | ( m_frg[2+(4*fnum)] << 16 ) | ( m_frg[3+(4*fnum)] << 24)

	switch (entry.index())
	{
		case I860_F0:  I860_GET_INFO_F(0);  break;
		case I860_F1:  I860_GET_INFO_F(1);  break;
		case I860_F2:  I860_GET_INFO_F(2);  break;
		case I860_F3:  I860_GET_INFO_F(3);  break;
		case I860_F4:  I860_GET_INFO_F(4);  break;
		case I860_F5:  I860_GET_INFO_F(5);  break;
		case I860_F6:  I860_GET_INFO_F(6);  break;
		case I860_F7:  I860_GET_INFO_F(7);  break;
		case I860_F8:  I860_GET_INFO_F(8);  break;
		case I860_F9:  I860_GET_INFO_F(9);  break;
		case I860_F10: I860_GET_INFO_F(10); break;
		case I860_F11: I860_GET_INFO_F(11); break;
		case I860_F12: I860_GET_INFO_F(12); break;
		case I860_F13: I860_GET_INFO_F(13); break;
		case I860_F14: I860_GET_INFO_F(14); break;
		case I860_F15: I860_GET_INFO_F(15); break;
		case I860_F16: I860_GET_INFO_F(16); break;
		case I860_F17: I860_GET_INFO_F(17); break;
		case I860_F18: I860_GET_INFO_F(18); break;
		case I860_F19: I860_GET_INFO_F(19); break;
		case I860_F20: I860_GET_INFO_F(20); break;
		case I860_F21: I860_GET_INFO_F(21); break;
		case I860_F22: I860_GET_INFO_F(22); break;
		case I860_F23: I860_GET_INFO_F(23); break;
		case I860_F24: I860_GET_INFO_F(24); break;
		case I860_F25: I860_GET_INFO_F(25); break;
		case I860_F26: I860_GET_INFO_F(26); break;
		case I860_F27: I860_GET_INFO_F(27); break;
		case I860_F28: I860_GET_INFO_F(28); break;
		case I860_F29: I860_GET_INFO_F(29); break;
		case I860_F30: I860_GET_INFO_F(30); break;
		case I860_F31: I860_GET_INFO_F(31); break;
	}
}
예제 #7
0
void minx_cpu_device::state_string_export(const device_state_entry &entry, astring &string)
{
	switch (entry.index())
	{
		case STATE_GENFLAGS:
			string.printf( "%c%c%c%c%c%c%c%c-%c%c%c%c%c",
				m_F & FLAG_I ? 'I' : '.',
				m_F & FLAG_D ? 'D' : '.',
				m_F & FLAG_L ? 'L' : '.',
				m_F & FLAG_B ? 'B' : '.',
				m_F & FLAG_S ? 'S' : '.',
				m_F & FLAG_O ? 'O' : '.',
				m_F & FLAG_C ? 'C' : '.',
				m_F & FLAG_Z ? 'Z' : '.',
				m_E & EXEC_X0 ? '0' : '.',
				m_E & EXEC_X1 ? '1' : '.',
				m_E & EXEC_X2 ? '2' : '.',
				m_E & EXEC_DZ ? 'z' : '.',
				m_E & EXEC_EN ? 'E' : '.' );
			break;
	}
}
예제 #8
0
void pic16c62x_device::state_string_export(const device_state_entry &entry, std::string &str)
{
	switch (entry.index())
	{
		case PIC16C62x_PSCL:
			strprintf(str, "%c%02X", ((m_OPTION & 0x08) ? 'W' : 'T'), m_prescaler);
			break;

		case STATE_GENFLAGS:
			strprintf(str, "%01x%c%c%c%c%c %c%c%c%03x",
				(STATUS & 0xe0) >> 5,
				STATUS & 0x10 ? '.':'O',      /* WDT Overflow */
				STATUS & 0x08 ? 'P':'D',      /* Power/Down */
				STATUS & 0x04 ? 'Z':'.',      /* Zero */
				STATUS & 0x02 ? 'c':'b',      /* Nibble Carry/Borrow */
				STATUS & 0x01 ? 'C':'B',      /* Carry/Borrow */

				m_OPTION & 0x20 ? 'C':'T',      /* Counter/Timer */
				m_OPTION & 0x10 ? 'N':'P',      /* Negative/Positive */
				m_OPTION & 0x08 ? 'W':'T',      /* WatchDog/Timer */
				m_OPTION & 0x08 ? (1<<(m_OPTION&7)) : (2<<(m_OPTION&7)) );
			break;
	}
}
예제 #9
0
void pic16c62x_device::state_import(const device_state_entry &entry)
{
	switch (entry.index())
	{
		case PIC16C62x_STR:
			STATUS = m_debugger_temp;
			break;
		case PIC16C62x_TMR0:
			TMR0 = m_debugger_temp;
			break;
		case PIC16C62x_PRTA:
			PORTA = m_debugger_temp;
			break;
		case PIC16C62x_PRTB:
			PORTB = m_debugger_temp;
			break;
		case PIC16C62x_FSR:
			FSR = ((m_debugger_temp & m_picRAMmask) | (UINT8)(~m_picRAMmask));
			break;
		case PIC16C62x_PSCL:
			m_prescaler = m_debugger_temp;
			break;
	}
}
예제 #10
0
파일: dsp32.c 프로젝트: pinchyCZN/mameppk
void dsp32c_device::state_string_export(const device_state_entry &entry, astring &string)
{
	switch (entry.index())
	{
		case STATE_GENFLAGS:
			string.printf("%c%c%c%c%c%c%c%c",
				NFLAG ? 'N':'.',
				ZFLAG ? 'Z':'.',
                UFLAG ? 'U':'.',
                VFLAG ? 'V':'.',
                nFLAG ? 'n':'.',
                zFLAG ? 'z':'.',
                cFLAG ? 'c':'.',
                vFLAG ? 'v':'.');
			break;

		case DSP32_A0:
		case DSP32_A1:
		case DSP32_A2:
		case DSP32_A3:
			string.printf("%8g", *(double *)entry.dataptr());
			break;
	}
}
예제 #11
0
파일: dsp32.c 프로젝트: BrandoCommando/mame
void dsp32c_device::state_export(const device_state_entry &entry)
{
	switch (entry.index())
	{
		case STATE_GENFLAGS:
			// no actual flags register, so just make something up
			m_iotemp =  ((zFLAG != 0) << 0) |
						((nFLAG != 0) << 1) |
						((cFLAG != 0) << 2) |
						((vFLAG != 0) << 3) |
						((ZFLAG != 0) << 4) |
						((NFLAG != 0) << 5) |
						((UFLAG != 0) << 6) |
						((VFLAG != 0) << 7);
			break;

		case DSP32_PCR:
			m_iotemp = m_pcr;
			break;

		default:
			fatalerror("dsp32c_device::state_export called for unexpected value\n");
	}
}
예제 #12
0
파일: mcs96.cpp 프로젝트: motoschifo/mame
void mcs96_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
    switch(entry.index()) {
    case STATE_GENFLAGS:
    case MCS96_PSW:
        str = string_format("%c%c%c%c%c%c%c %c%c%c%c%c%c%c%c",
                            PSW & F_Z  ? 'Z' : '.',
                            PSW & F_N  ? 'N' : '.',
                            PSW & F_V  ? 'V' : '.',
                            PSW & F_VT ? 'v' : '.',
                            PSW & F_C  ? 'C' : '.',
                            PSW & F_I  ? 'I' : '.',
                            PSW & F_ST ? 'S' : '.',
                            PSW & 0x80 ? '7' : '.',
                            PSW & 0x40 ? '6' : '.',
                            PSW & 0x20 ? '5' : '.',
                            PSW & 0x10 ? '4' : '.',
                            PSW & 0x08 ? '3' : '.',
                            PSW & 0x04 ? '2' : '.',
                            PSW & 0x02 ? '1' : '.',
                            PSW & 0x01 ? '0' : '.');
        break;
    }
}
예제 #13
0
파일: dsp32.cpp 프로젝트: robsonfr/mame
void dsp32c_device::state_export(const device_state_entry &entry)
{
	switch (entry.index())
	{
		case STATE_GENFLAGS:
			// no actual flags register, so just make something up
			m_iotemp =  (zFLAG ? 0x01 : 0) |
						(nFLAG ? 0x02 : 0) |
						(cFLAG ? 0x04 : 0) |
						(vFLAG ? 0x08 : 0) |
						(ZFLAG ? 0x10 : 0) |
						(NFLAG ? 0x20 : 0) |
						(UFLAG ? 0x40 : 0) |
						(VFLAG ? 0x80 : 0);
			break;

		case DSP32_PCR:
			m_iotemp = m_pcr;
			break;

		default:
			fatalerror("dsp32c_device::state_export called for unexpected value\n");
	}
}
예제 #14
0
void dsp16_device::state_string_export(const device_state_entry &entry, astring &string)
{
	switch (entry.index())
	{
		case STATE_GENFLAGS:
		string.printf("(below)");
			break;

		case DSP16_AUC:
		{
			astring alignString;
			const UINT8 align = m_auc & 0x03;
			switch (align)
			{
				case 0x00: alignString.printf("xy"); break;
				case 0x01: alignString.printf("/4"); break;
				case 0x02: alignString.printf("x4"); break;
				case 0x03: alignString.printf(",,"); break;
			}
			string.printf("%c%c%c%c%c%s",
							m_auc & 0x40 ? 'Y':'.',
							m_auc & 0x20 ? '1':'.',
							m_auc & 0x10 ? '0':'.',
							m_auc & 0x08 ? '1':'.',
							m_auc & 0x04 ? '0':'.',
							alignString.cstr());
			break;
		}

		case DSP16_PSW:
			string.printf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",
							m_psw & 0x8000 ? 'M':'.',
							m_psw & 0x4000 ? 'E':'.',
							m_psw & 0x2000 ? 'L':'.',
							m_psw & 0x1000 ? 'V':'.',
							m_psw & 0x0800 ? ',':',',
							m_psw & 0x0400 ? ',':',',
							m_psw & 0x0200 ? 'O':'.',
							m_psw & 0x0100 ? '1':'.',
							m_psw & 0x0080 ? '1':'.',
							m_psw & 0x0040 ? '1':'.',
							m_psw & 0x0020 ? '1':'.',
							m_psw & 0x0010 ? 'O':'.',
							m_psw & 0x0008 ? '1':'.',
							m_psw & 0x0004 ? '1':'.',
							m_psw & 0x0002 ? '1':'.',
							m_psw & 0x0001 ? '1':'.');
			break;

		case DSP16_PIOC:
		{
			astring strobeString;
			const UINT8 strobe = (m_pioc & 0x6000) >> 13;
			switch (strobe)
			{
				case 0x00: strobeString.printf("1T"); break;
				case 0x01: strobeString.printf("2T"); break;
				case 0x02: strobeString.printf("3T"); break;
				case 0x03: strobeString.printf("4T"); break;
			}
			string.printf("%c%s%c%c%c%c%c%c%c%c%c%c%c%c%c",
							m_pioc & 0x8000 ? 'I':'.',
							strobeString.cstr(),
							m_pioc & 0x1000 ? 'O':'I',
							m_pioc & 0x0800 ? 'O':'I',
							m_pioc & 0x0400 ? 'S':'.',
							m_pioc & 0x0200 ? 'I':'.',
							m_pioc & 0x0100 ? 'O':'.',
							m_pioc & 0x0080 ? 'P':'.',
							m_pioc & 0x0040 ? 'P':'.',
							m_pioc & 0x0020 ? 'I':'.',
							m_pioc & 0x0010 ? 'I':'.',
							m_pioc & 0x0008 ? 'O':'.',
							m_pioc & 0x0004 ? 'P':'.',
							m_pioc & 0x0002 ? 'P':'.',
							m_pioc & 0x0001 ? 'I':'.');
			break;
		}

		// Placeholder for a better view later (TODO)
		case DSP16_SIOC:
		{
			astring clkString;
			const UINT8 clk = (m_sioc & 0x0180) >> 7;
			switch (clk)
			{
				case 0x00: clkString.printf("/4"); break;
				case 0x01: clkString.printf("12"); break;
				case 0x02: clkString.printf("16"); break;
				case 0x03: clkString.printf("20"); break;
			}
			string.printf("%c%s%c%c%c%c%c%c%c",
							m_sioc & 0x0200 ? 'I':'O',
							clkString.cstr(),
							m_sioc & 0x0040 ? 'L':'M',
							m_sioc & 0x0020 ? 'I':'O',
							m_sioc & 0x0010 ? 'I':'O',
							m_sioc & 0x0008 ? 'I':'O',
							m_sioc & 0x0004 ? 'I':'O',
							m_sioc & 0x0002 ? '2':'1',
							m_sioc & 0x0001 ? '2':'1');
			break;
		}
	}
}
예제 #15
0
void hcd62121_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
{
	switch (entry.index())
	{
		case STATE_GENPC:
			strprintf(str, "%06X", (m_cseg << 16) | m_ip);
			break;

		case STATE_GENFLAGS:
			strprintf(str, "%s-%s-%s-%c-%c",
				m_f & _FLAG_ZH ? "ZH":"__",
				m_f & _FLAG_CL ? "CL":"__",
				m_f & _FLAG_ZL ? "ZL":"__",
				m_f & _FLAG_C ? 'C':'_',
				m_f & _FLAG_Z ? 'Z':'_'
			);

			break;

		case HCD62121_R00:
			strprintf(str, "%02X%02X%02X%02X", m_reg[0x00], m_reg[0x01], m_reg[0x02], m_reg[0x03]);
			break;
		case HCD62121_R04:
			strprintf(str, "%02X%02X%02X%02X", m_reg[0x04], m_reg[0x05], m_reg[0x06], m_reg[0x07]);
			break;
		case HCD62121_R08:
			strprintf(str, "%02X%02X%02X%02X", m_reg[0x08], m_reg[0x09], m_reg[0x0A], m_reg[0x0B]);
			break;
		case HCD62121_R0C:
			strprintf(str, "%02X%02X%02X%02X", m_reg[0x0C], m_reg[0x0D], m_reg[0x0E], m_reg[0x0F]);
			break;
		case HCD62121_R10:
			strprintf(str, "%02X%02X%02X%02X", m_reg[0x10], m_reg[0x11], m_reg[0x12], m_reg[0x13]);
			break;
		case HCD62121_R14:
			strprintf(str, "%02X%02X%02X%02X", m_reg[0x14], m_reg[0x15], m_reg[0x16], m_reg[0x17]);
			break;
		case HCD62121_R18:
			strprintf(str, "%02X%02X%02X%02X", m_reg[0x18], m_reg[0x19], m_reg[0x1A], m_reg[0x1B]);
			break;
		case HCD62121_R1C:
			strprintf(str, "%02X%02X%02X%02X", m_reg[0x1C], m_reg[0x1D], m_reg[0x1E], m_reg[0x1F]);
			break;
		case HCD62121_R20:
			strprintf(str, "%02X%02X%02X%02X", m_reg[0x20], m_reg[0x21], m_reg[0x22], m_reg[0x23]);
			break;
		case HCD62121_R24:
			strprintf(str, "%02X%02X%02X%02X", m_reg[0x24], m_reg[0x25], m_reg[0x26], m_reg[0x27]);
			break;
		case HCD62121_R28:
			strprintf(str, "%02X%02X%02X%02X", m_reg[0x28], m_reg[0x29], m_reg[0x2A], m_reg[0x2B]);
			break;
		case HCD62121_R2C:
			strprintf(str, "%02X%02X%02X%02X", m_reg[0x2C], m_reg[0x2D], m_reg[0x2E], m_reg[0x2F]);
			break;
		case HCD62121_R30:
			strprintf(str, "%02X%02X%02X%02X", m_reg[0x30], m_reg[0x31], m_reg[0x32], m_reg[0x33]);
			break;
		case HCD62121_R34:
			strprintf(str, "%02X%02X%02X%02X", m_reg[0x34], m_reg[0x35], m_reg[0x36], m_reg[0x37]);
			break;
		case HCD62121_R38:
			strprintf(str, "%02X%02X%02X%02X", m_reg[0x38], m_reg[0x39], m_reg[0x3A], m_reg[0x3B]);
			break;
		case HCD62121_R3C:
			strprintf(str, "%02X%02X%02X%02X", m_reg[0x3C], m_reg[0x3D], m_reg[0x3E], m_reg[0x3F]);
			break;
		case HCD62121_R40:
			strprintf(str, "%02X%02X%02X%02X", m_reg[0x40], m_reg[0x41], m_reg[0x42], m_reg[0x43]);
			break;
		case HCD62121_R44:
			strprintf(str, "%02X%02X%02X%02X", m_reg[0x44], m_reg[0x45], m_reg[0x46], m_reg[0x47]);
			break;
		case HCD62121_R48:
			strprintf(str, "%02X%02X%02X%02X", m_reg[0x48], m_reg[0x49], m_reg[0x4A], m_reg[0x4B]);
			break;
		case HCD62121_R4C:
			strprintf(str, "%02X%02X%02X%02X", m_reg[0x4C], m_reg[0x4D], m_reg[0x4E], m_reg[0x4F]);
			break;
		case HCD62121_R50:
			strprintf(str, "%02X%02X%02X%02X", m_reg[0x50], m_reg[0x51], m_reg[0x52], m_reg[0x53]);
			break;
		case HCD62121_R54:
			strprintf(str, "%02X%02X%02X%02X", m_reg[0x54], m_reg[0x55], m_reg[0x56], m_reg[0x57]);
			break;
		case HCD62121_R58:
			strprintf(str, "%02X%02X%02X%02X", m_reg[0x58], m_reg[0x59], m_reg[0x5A], m_reg[0x5B]);
			break;
		case HCD62121_R5C:
			strprintf(str, "%02X%02X%02X%02X", m_reg[0x5C], m_reg[0x5D], m_reg[0x5E], m_reg[0x5F]);
			break;
		case HCD62121_R60:
			strprintf(str, "%02X%02X%02X%02X", m_reg[0x60], m_reg[0x61], m_reg[0x62], m_reg[0x63]);
			break;
		case HCD62121_R64:
			strprintf(str, "%02X%02X%02X%02X", m_reg[0x64], m_reg[0x65], m_reg[0x66], m_reg[0x67]);
			break;
		case HCD62121_R68:
			strprintf(str, "%02X%02X%02X%02X", m_reg[0x68], m_reg[0x69], m_reg[0x6A], m_reg[0x6B]);
			break;
		case HCD62121_R6C:
			strprintf(str, "%02X%02X%02X%02X", m_reg[0x6C], m_reg[0x6D], m_reg[0x6E], m_reg[0x6F]);
			break;
		case HCD62121_R70:
			strprintf(str, "%02X%02X%02X%02X", m_reg[0x70], m_reg[0x71], m_reg[0x72], m_reg[0x73]);
			break;
		case HCD62121_R74:
			strprintf(str, "%02X%02X%02X%02X", m_reg[0x74], m_reg[0x75], m_reg[0x76], m_reg[0x77]);
			break;
		case HCD62121_R78:
			strprintf(str, "%02X%02X%02X%02X", m_reg[0x78], m_reg[0x79], m_reg[0x7A], m_reg[0x7B]);
			break;
		case HCD62121_R7C:
			strprintf(str, "%02X%02X%02X%02X", m_reg[0x7C], m_reg[0x7D], m_reg[0x7E], m_reg[0x7F]);
			break;
	}
}
예제 #16
0
파일: dsp16.cpp 프로젝트: Tauwasser/mame
void dsp16_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
	switch (entry.index())
	{
	case STATE_GENFLAGS:
		str = "(below)";
		break;

	case DSP16_AUC:
		{
			std::string alignString;
			const uint8_t align = m_auc & 0x03;
			switch (align)
			{
			case 0x00: alignString = "xy"; break;
			case 0x01: alignString = "/4"; break;
			case 0x02: alignString = "x4"; break;
			case 0x03: alignString = ",,"; break;
			}
			str = string_format("%c%c%c%c%c%s",
					m_auc & 0x40 ? 'Y':'.',
					m_auc & 0x20 ? '1':'.',
					m_auc & 0x10 ? '0':'.',
					m_auc & 0x08 ? '1':'.',
					m_auc & 0x04 ? '0':'.',
					alignString);
		}
		break;

	case DSP16_PSW:
		str = string_format("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",
				m_psw & 0x8000 ? 'M':'.',
				m_psw & 0x4000 ? 'E':'.',
				m_psw & 0x2000 ? 'L':'.',
				m_psw & 0x1000 ? 'V':'.',
				m_psw & 0x0800 ? ',':',',
				m_psw & 0x0400 ? ',':',',
				m_psw & 0x0200 ? 'O':'.',
				m_psw & 0x0100 ? '1':'.',
				m_psw & 0x0080 ? '1':'.',
				m_psw & 0x0040 ? '1':'.',
				m_psw & 0x0020 ? '1':'.',
				m_psw & 0x0010 ? 'O':'.',
				m_psw & 0x0008 ? '1':'.',
				m_psw & 0x0004 ? '1':'.',
				m_psw & 0x0002 ? '1':'.',
				m_psw & 0x0001 ? '1':'.');
		break;

	case DSP16_PIOC:
		{
			std::string strobeString;
			const uint8_t strobe = (m_pioc & 0x6000) >> 13;
			switch (strobe)
			{
			case 0x00: strobeString = "1T"; break;
			case 0x01: strobeString = "2T"; break;
			case 0x02: strobeString = "3T"; break;
			case 0x03: strobeString = "4T"; break;
			}
			str = string_format("%c%s%c%c%c%c%c%c%c%c%c%c%c%c%c",
					m_pioc & 0x8000 ? 'I':'.',
					strobeString,
					m_pioc & 0x1000 ? 'O':'I',
					m_pioc & 0x0800 ? 'O':'I',
					m_pioc & 0x0400 ? 'S':'.',
					m_pioc & 0x0200 ? 'I':'.',
					m_pioc & 0x0100 ? 'O':'.',
					m_pioc & 0x0080 ? 'P':'.',
					m_pioc & 0x0040 ? 'P':'.',
					m_pioc & 0x0020 ? 'I':'.',
					m_pioc & 0x0010 ? 'I':'.',
					m_pioc & 0x0008 ? 'O':'.',
					m_pioc & 0x0004 ? 'P':'.',
					m_pioc & 0x0002 ? 'P':'.',
					m_pioc & 0x0001 ? 'I':'.');
		}
		break;

	// Placeholder for a better view later (TODO)
	case DSP16_SIOC:
		{
			std::string clkString;
			const uint8_t clk = (m_sioc & 0x0180) >> 7;
			switch (clk)
			{
				case 0x00: clkString = "/4"; break;
				case 0x01: clkString = "12"; break;
				case 0x02: clkString = "16"; break;
				case 0x03: clkString = "20"; break;
			}
			str = string_format("%c%s%c%c%c%c%c%c%c",
					m_sioc & 0x0200 ? 'I':'O',
					clkString,
					m_sioc & 0x0040 ? 'L':'M',
					m_sioc & 0x0020 ? 'I':'O',
					m_sioc & 0x0010 ? 'I':'O',
					m_sioc & 0x0008 ? 'I':'O',
					m_sioc & 0x0004 ? 'I':'O',
					m_sioc & 0x0002 ? '2':'1',
					m_sioc & 0x0001 ? '2':'1');
		}
		break;
	}
}