summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/cpu/scmp/scmp.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/cpu/scmp/scmp.c')
-rw-r--r--src/emu/cpu/scmp/scmp.c180
1 files changed, 90 insertions, 90 deletions
diff --git a/src/emu/cpu/scmp/scmp.c b/src/emu/cpu/scmp/scmp.c
index 2d7a72e655a..48b44a5c608 100644
--- a/src/emu/cpu/scmp/scmp.c
+++ b/src/emu/cpu/scmp/scmp.c
@@ -22,27 +22,27 @@
struct scmp_state
{
- scmp_config config;
- PAIR PC;
- PAIR P1;
- PAIR P2;
- PAIR P3;
- UINT8 AC;
- UINT8 ER;
- UINT8 SR;
+ scmp_config config;
+ PAIR PC;
+ PAIR P1;
+ PAIR P2;
+ PAIR P3;
+ UINT8 AC;
+ UINT8 ER;
+ UINT8 SR;
legacy_cpu_device *device;
address_space *program;
direct_read_data *direct;
address_space *io;
- int icount;
-
- devcb_resolved_write8 flag_out_func;
- devcb_resolved_write_line sout_func;
- devcb_resolved_read_line sin_func;
- devcb_resolved_read_line sensea_func;
- devcb_resolved_read_line senseb_func;
- devcb_resolved_write_line halt_func;
+ int icount;
+
+ devcb_resolved_write8 flag_out_func;
+ devcb_resolved_write_line sout_func;
+ devcb_resolved_read_line sin_func;
+ devcb_resolved_read_line sensea_func;
+ devcb_resolved_read_line senseb_func;
+ devcb_resolved_write_line halt_func;
};
/***************************************************************************
@@ -308,13 +308,13 @@ static void execute_one(scmp_state *cpustate, int opcode)
}
break;
// Double-Byte Miscellaneous Instructions
- case 0x8f: // DLY
+ case 0x8f: // DLY
tmp = ARG(cpustate);
cpustate->icount -= 13 + (cpustate->AC * 2) + (((UINT32)tmp) << 1) + (((UINT32)tmp) << 9);
cpustate->AC = 0xff;
break;
// Others are illegal
- default : cpustate->icount -= 1;
+ default : cpustate->icount -= 1;
illegal (cpustate,opcode);
break;
}
@@ -323,55 +323,55 @@ static void execute_one(scmp_state *cpustate, int opcode)
switch (opcode)
{
// Extension Register Instructions
- case 0x40: // LDE
+ case 0x40: // LDE
cpustate->icount -= 6;
cpustate->AC = cpustate->ER;
break;
- case 0x01: // XAE
+ case 0x01: // XAE
cpustate->icount -= 7;
tmp = cpustate->AC;
cpustate->AC = cpustate->ER;
cpustate->ER = tmp;
break;
- case 0x50: // ANE
+ case 0x50: // ANE
cpustate->icount -= 6;
cpustate->AC &= cpustate->ER;
break;
- case 0x58: // ORE
+ case 0x58: // ORE
cpustate->icount -= 6;
cpustate->AC |= cpustate->ER;
break;
- case 0x60: // XRE
+ case 0x60: // XRE
cpustate->icount -= 6;
cpustate->AC ^= cpustate->ER;
break;
- case 0x68: // DAE
+ case 0x68: // DAE
cpustate->icount -= 11;
DEC_ADD(cpustate,cpustate->ER);
break;
- case 0x70: // ADE
+ case 0x70: // ADE
cpustate->icount -= 7;
BIN_ADD(cpustate,cpustate->ER);
break;
- case 0x78: // CAE
+ case 0x78: // CAE
cpustate->icount -= 8;
BIN_ADD(cpustate,~cpustate->ER);
break;
// Pointer Register Move Instructions
- case 0x30: case 0x31: case 0x32: case 0x33: // XPAL
+ case 0x30: case 0x31: case 0x32: case 0x33: // XPAL
cpustate->icount -= 8;
tmp = cpustate->AC;
cpustate->AC = GET_PTR_REG(cpustate,ptr)->b.l;
GET_PTR_REG(cpustate,ptr)->b.l = tmp;
break;
- case 0x34: case 0x35 :case 0x36: case 0x37:
+ case 0x34: case 0x35 :case 0x36: case 0x37:
// XPAH
cpustate->icount -= 8;
tmp = cpustate->AC;
cpustate->AC = GET_PTR_REG(cpustate,ptr)->b.h;
GET_PTR_REG(cpustate,ptr)->b.h = tmp;
break;
- case 0x3c: case 0x3d :case 0x3e: case 0x3f:
+ case 0x3c: case 0x3d :case 0x3e: case 0x3f:
// XPPC
{
UINT16 tmp16 = ADD12(cpustate->PC.w.l,-1); // Since PC is incremented we need to fix it
@@ -383,70 +383,70 @@ static void execute_one(scmp_state *cpustate, int opcode)
}
break;
// Shift, Rotate, Serial I/O Instructions
- case 0x19: // SIO
+ case 0x19: // SIO
cpustate->icount -= 5;
cpustate->sout_func(cpustate->ER & 0x01);
cpustate->ER >>= 1;
cpustate->ER |= cpustate->sin_func() ? 0x80 : 0x00;
break;
- case 0x1c: // SR
+ case 0x1c: // SR
cpustate->icount -= 5;
cpustate->AC >>= 1;
break;
- case 0x1d: // SRL
+ case 0x1d: // SRL
cpustate->icount -= 5;
cpustate->AC >>= 1;
cpustate->AC |= cpustate->SR & 0x80; // add C/L flag
break;
- case 0x1e: // RR
+ case 0x1e: // RR
cpustate->icount -= 5;
cpustate->AC = (cpustate->AC >> 1) | ((cpustate->AC & 0x01) << 7);
break;
- case 0x1f: // RRL
+ case 0x1f: // RRL
cpustate->icount -= 5;
tmp = (cpustate->AC & 0x01) << 7;
cpustate->AC = (cpustate->AC >> 1) | (cpustate->SR & 0x80);
cpustate->SR = (cpustate->SR & 0x7f) | tmp;
break;
// Single Byte Miscellaneous Instructions
- case 0x00: // HALT
+ case 0x00: // HALT
cpustate->icount -= 8;
cpustate->halt_func(1);
cpustate->halt_func(0);
break;
- case 0x02: // CCL
+ case 0x02: // CCL
cpustate->icount -= 5;
cpustate->SR &= 0x7f;
break;
- case 0x03: // SCL
+ case 0x03: // SCL
cpustate->icount -= 5;
cpustate->SR |= 0x80;
break;
- case 0x04: // DINT
+ case 0x04: // DINT
cpustate->icount -= 6;
cpustate->SR &= 0xf7;
break;
- case 0x05: // IEN
+ case 0x05: // IEN
cpustate->icount -= 6;
cpustate->SR |= 0x08;
break;
- case 0x06: // CSA
+ case 0x06: // CSA
cpustate->icount -= 5;
cpustate->SR &= 0xcf; // clear SA and SB flags
cpustate->SR |= cpustate->sensea_func() ? 0x10 : 0x00;
cpustate->SR |= cpustate->senseb_func() ? 0x20 : 0x00;
cpustate->AC = cpustate->SR;
break;
- case 0x07: // CAS
+ case 0x07: // CAS
cpustate->icount -= 6;
cpustate->SR = cpustate->AC;
cpustate->flag_out_func(0, cpustate->SR & 0x07);
break;
- case 0x08: // NOP
+ case 0x08: // NOP
cpustate->icount -= 5;
break;
// Others are illegal
- default : cpustate->icount -= 1;
+ default : cpustate->icount -= 1;
illegal (cpustate,opcode);
break;
}
@@ -574,14 +574,14 @@ static CPU_EXPORT_STRING( scmp )
{
case STATE_GENFLAGS:
string.printf("%c%c%c%c%c%c%c%c",
- (cpustate->SR & 0x80) ? 'C' : '.',
- (cpustate->SR & 0x40) ? 'V' : '.',
- (cpustate->SR & 0x20) ? 'B' : '.',
- (cpustate->SR & 0x10) ? 'A' : '.',
- (cpustate->SR & 0x08) ? 'I' : '.',
- (cpustate->SR & 0x04) ? '2' : '.',
- (cpustate->SR & 0x02) ? '1' : '.',
- (cpustate->SR & 0x01) ? '0' : '.');
+ (cpustate->SR & 0x80) ? 'C' : '.',
+ (cpustate->SR & 0x40) ? 'V' : '.',
+ (cpustate->SR & 0x20) ? 'B' : '.',
+ (cpustate->SR & 0x10) ? 'A' : '.',
+ (cpustate->SR & 0x08) ? 'I' : '.',
+ (cpustate->SR & 0x04) ? '2' : '.',
+ (cpustate->SR & 0x02) ? '1' : '.',
+ (cpustate->SR & 0x01) ? '0' : '.');
break;
}
}
@@ -603,48 +603,48 @@ CPU_GET_INFO( scmp )
switch (state)
{
/* --- the following bits of info are returned as 64-bit signed integers --- */
- case CPUINFO_INT_CONTEXT_SIZE: info->i = sizeof(scmp_state); break;
- case CPUINFO_INT_INPUT_LINES: info->i = 0; break;
- case CPUINFO_INT_DEFAULT_IRQ_VECTOR: info->i = 0; break;
- case CPUINFO_INT_ENDIANNESS: info->i = ENDIANNESS_LITTLE; break;
- case CPUINFO_INT_CLOCK_MULTIPLIER: info->i = 1; break;
- case CPUINFO_INT_CLOCK_DIVIDER: info->i = 1; break;
- case CPUINFO_INT_MIN_INSTRUCTION_BYTES: info->i = 1; break;
- case CPUINFO_INT_MAX_INSTRUCTION_BYTES: info->i = 2; break;
- case CPUINFO_INT_MIN_CYCLES: info->i = 5; break;
- case CPUINFO_INT_MAX_CYCLES: info->i = 131593; break; // DLY instruction max time
-
- case CPUINFO_INT_DATABUS_WIDTH + AS_PROGRAM: info->i = 8; break;
- case CPUINFO_INT_ADDRBUS_WIDTH + AS_PROGRAM: info->i = 16; break;
- case CPUINFO_INT_ADDRBUS_SHIFT + AS_PROGRAM: info->i = 0; break;
-
- case CPUINFO_INT_DATABUS_WIDTH + AS_DATA: info->i = 0; break;
- case CPUINFO_INT_ADDRBUS_WIDTH + AS_DATA: info->i = 0; break;
- case CPUINFO_INT_ADDRBUS_SHIFT + AS_DATA: info->i = 0; break;
-
- case CPUINFO_INT_DATABUS_WIDTH + AS_IO: info->i = 0; break;
- case CPUINFO_INT_ADDRBUS_WIDTH + AS_IO: info->i = 0; break;
- case CPUINFO_INT_ADDRBUS_SHIFT + AS_IO: info->i = 0; break;
+ case CPUINFO_INT_CONTEXT_SIZE: info->i = sizeof(scmp_state); break;
+ case CPUINFO_INT_INPUT_LINES: info->i = 0; break;
+ case CPUINFO_INT_DEFAULT_IRQ_VECTOR: info->i = 0; break;
+ case CPUINFO_INT_ENDIANNESS: info->i = ENDIANNESS_LITTLE; break;
+ case CPUINFO_INT_CLOCK_MULTIPLIER: info->i = 1; break;
+ case CPUINFO_INT_CLOCK_DIVIDER: info->i = 1; break;
+ case CPUINFO_INT_MIN_INSTRUCTION_BYTES: info->i = 1; break;
+ case CPUINFO_INT_MAX_INSTRUCTION_BYTES: info->i = 2; break;
+ case CPUINFO_INT_MIN_CYCLES: info->i = 5; break;
+ case CPUINFO_INT_MAX_CYCLES: info->i = 131593; break; // DLY instruction max time
+
+ case CPUINFO_INT_DATABUS_WIDTH + AS_PROGRAM: info->i = 8; break;
+ case CPUINFO_INT_ADDRBUS_WIDTH + AS_PROGRAM: info->i = 16; break;
+ case CPUINFO_INT_ADDRBUS_SHIFT + AS_PROGRAM: info->i = 0; break;
+
+ case CPUINFO_INT_DATABUS_WIDTH + AS_DATA: info->i = 0; break;
+ case CPUINFO_INT_ADDRBUS_WIDTH + AS_DATA: info->i = 0; break;
+ case CPUINFO_INT_ADDRBUS_SHIFT + AS_DATA: info->i = 0; break;
+
+ case CPUINFO_INT_DATABUS_WIDTH + AS_IO: info->i = 0; break;
+ case CPUINFO_INT_ADDRBUS_WIDTH + AS_IO: info->i = 0; break;
+ case CPUINFO_INT_ADDRBUS_SHIFT + AS_IO: info->i = 0; break;
/* --- the following bits of info are returned as pointers to functions --- */
- case CPUINFO_FCT_SET_INFO: info->setinfo = CPU_SET_INFO_NAME(scmp); break;
- case CPUINFO_FCT_INIT: info->init = CPU_INIT_NAME(scmp); break;
- case CPUINFO_FCT_RESET: info->reset = CPU_RESET_NAME(scmp); break;
- case CPUINFO_FCT_EXECUTE: info->execute = CPU_EXECUTE_NAME(scmp); break;
- case CPUINFO_FCT_DISASSEMBLE: info->disassemble = CPU_DISASSEMBLE_NAME(scmp); break;
- case CPUINFO_FCT_IMPORT_STATE: info->import_state = CPU_IMPORT_STATE_NAME(scmp); break;
- case CPUINFO_FCT_EXPORT_STATE: info->export_state = CPU_EXPORT_STATE_NAME(scmp); break;
- case CPUINFO_FCT_EXPORT_STRING: info->export_string = CPU_EXPORT_STRING_NAME(scmp); break;
+ case CPUINFO_FCT_SET_INFO: info->setinfo = CPU_SET_INFO_NAME(scmp); break;
+ case CPUINFO_FCT_INIT: info->init = CPU_INIT_NAME(scmp); break;
+ case CPUINFO_FCT_RESET: info->reset = CPU_RESET_NAME(scmp); break;
+ case CPUINFO_FCT_EXECUTE: info->execute = CPU_EXECUTE_NAME(scmp); break;
+ case CPUINFO_FCT_DISASSEMBLE: info->disassemble = CPU_DISASSEMBLE_NAME(scmp); break;
+ case CPUINFO_FCT_IMPORT_STATE: info->import_state = CPU_IMPORT_STATE_NAME(scmp); break;
+ case CPUINFO_FCT_EXPORT_STATE: info->export_state = CPU_EXPORT_STATE_NAME(scmp); break;
+ case CPUINFO_FCT_EXPORT_STRING: info->export_string = CPU_EXPORT_STRING_NAME(scmp); break;
/* --- the following bits of info are returned as pointers --- */
- case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &cpustate->icount; break;
+ case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &cpustate->icount; break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
- case CPUINFO_STR_NAME: strcpy(info->s, "INS 8050 SC/MP"); break;
- case CPUINFO_STR_FAMILY: strcpy(info->s, "National Semiconductor SC/MP"); break;
- case CPUINFO_STR_VERSION: strcpy(info->s, "1.0"); break;
- case CPUINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
- case CPUINFO_STR_CREDITS: strcpy(info->s, "Copyright Miodrag Milanovic"); break;
+ case CPUINFO_STR_NAME: strcpy(info->s, "INS 8050 SC/MP"); break;
+ case CPUINFO_STR_FAMILY: strcpy(info->s, "National Semiconductor SC/MP"); break;
+ case CPUINFO_STR_VERSION: strcpy(info->s, "1.0"); break;
+ case CPUINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
+ case CPUINFO_STR_CREDITS: strcpy(info->s, "Copyright Miodrag Milanovic"); break;
}
}
@@ -656,12 +656,12 @@ CPU_GET_INFO( ins8060 )
switch (state)
{
/* --- the following bits of info are returned as pointers to data or functions --- */
- case CPUINFO_INT_CLOCK_DIVIDER: info->i = 2; break;
+ case CPUINFO_INT_CLOCK_DIVIDER: info->i = 2; break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
- case CPUINFO_STR_NAME: strcpy(info->s, "INS 8060 SC/MP II"); break;
+ case CPUINFO_STR_NAME: strcpy(info->s, "INS 8060 SC/MP II"); break;
- default: CPU_GET_INFO_CALL(scmp); break;
+ default: CPU_GET_INFO_CALL(scmp); break;
}
}