summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/scudsp/scudspdasm.c
diff options
context:
space:
mode:
author Miodrag Milanovic <mmicko@gmail.com>2015-11-08 12:56:12 +0100
committer Miodrag Milanovic <mmicko@gmail.com>2015-11-08 12:56:12 +0100
commit7c19aac60e12d6f5ea301bdb34d7826a01e0b06f (patch)
treef310d86aa2c6bfc19d115307dedde4eb0cd52dad /src/devices/cpu/scudsp/scudspdasm.c
parenta57b46ae933badd7441ce1644711dbb851e2b504 (diff)
Rename *.c -> *.cpp in our source (nw)
Diffstat (limited to 'src/devices/cpu/scudsp/scudspdasm.c')
-rw-r--r--src/devices/cpu/scudsp/scudspdasm.c364
1 files changed, 0 insertions, 364 deletions
diff --git a/src/devices/cpu/scudsp/scudspdasm.c b/src/devices/cpu/scudsp/scudspdasm.c
deleted file mode 100644
index d5e79a2cbd7..00000000000
--- a/src/devices/cpu/scudsp/scudspdasm.c
+++ /dev/null
@@ -1,364 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Angelo Salese, Mariusz Wojcieszek
-#include "emu.h"
-#include "debugger.h"
-#include "scudsp.h"
-
-static const char *const ALU_Commands[] =
-{
- " ", /* 0000 */
- "AND ", /* 0001 */
- "OR ", /* 0010 */
- "XOR ", /* 0011 */
- "ADD ", /* 0100 */
- "SUB ", /* 0101 */
- "AD2 ", /* 0110 */
- "ALU?", /* 0111 */
- "SR ", /* 1000 */
- "RR ", /* 1001 */
- "SL ", /* 1010 */
- "RL ", /* 1011 */
- "ALU?", /* 1100 */
- "ALU?", /* 1101 */
- "ALU?", /* 1110 */
- "RL8 ", /* 1111 */
-};
-
-static const char *const X_Commands[] =
-{
- "", /* 000 */
- "", /* 001 */ /* NOP? check instruction @ 0x0B */
- "MOV MUL,P", /* 010 */
- "MOV %s,P", /* 011 */
- "MOV %s,X", /* 100 */
-};
-
-static const char *const Y_Commands[] =
-{
- "", /* 000 */
- "CLR A", /* 001 */
- "MOV ALU,A", /* 010 */
- "MOV %s,A", /* 011 */
- "MOV %s,Y", /* 100 */
-};
-
-static const char *const D1_Commands[] =
-{
- "", /* 00 */
- "MOV %I8,%d", /* 01 */
- "???", /* 10 */
- "MOV %S,%d", /* 11 */
-};
-
-static const char *const SourceMemory[] =
-{
- "M0", /* 000 */
- "M1", /* 001 */
- "M2", /* 010 */
- "M3", /* 011 */
- "MC0", /* 100 */
- "MC1", /* 101 */
- "MC2", /* 110 */
- "MC3", /* 111 */
-};
-
-static const char *const SourceMemory2[] =
-{
- "M0", /* 0000 */
- "M1", /* 0001 */
- "M2", /* 0010 */
- "M3", /* 0011 */
- "MC0", /* 0100 */
- "MC1", /* 0101 */
- "MC2", /* 0110 */
- "MC3", /* 0111 */
- "???", /* 1000 */
- "ALL", /* 1001 */
- "ALH", /* 1010 */
- "???", /* 1011 */
- "???", /* 1100 */
- "???", /* 1101 */
- "???", /* 1110 */
- "???", /* 1111 */
-};
-
-static const char *const DestMemory[] =
-{
- "MC0", /* 0000 */
- "MC1", /* 0001 */
- "MC2", /* 0010 */
- "MC3", /* 0011 */
- "RX", /* 0100 */
- "PL", /* 0101 */
- "RA0", /* 0110 */
- "WA0", /* 0111 */
- "???", /* 1000 */
- "???", /* 1001 */
- "LOP", /* 1010 */
- "TOP", /* 1011 */
- "CT0", /* 1100 */
- "CT1", /* 1101 */
- "CT2", /* 1110 */
- "CT3", /* 1111 */
-};
-
-static const char *const DestDMAMemory[] =
-{
- "M0", /* 000 */
- "M1", /* 001 */
- "M2", /* 010 */
- "M3", /* 011 */
- "PRG", /* 100 */
- "???", /* 101 */
- "???", /* 110 */
- "???", /* 111 */
-};
-
-static const char *const MVI_Command[] =
-{
- "MVI %I,%d", /* 0 */
- "MVI %I,%d,%f", /* 1 */
-};
-
-static const char *const JMP_Command[] =
-{
- "JMP %IA",
- "JMP %f,%IA",
-};
-
-static const char *const DMA_Command[] =
-{
- "DMA%H%A D0,%M,%I",
- "DMA%H%A %s,D0,%I",
- "DMA%H%A D0,%M,%s",
- "DMA%H%A %s,D0,%s",
-};
-
-
-static void scudsp_dasm_prefix( const char* format, char* buffer, UINT32 *data )
-{
- for ( ; *format; format++ )
- {
- if ( *format == '%' )
- {
- switch( *++format )
- {
- case 'H':
- if ( *data )
- {
- strcpy( buffer, "H" );
- }
- else
- {
- *buffer = 0;
- }
- break;
- case 'A':
- if ( *data == 0 )
- {
- strcpy( buffer, "0" );
- }
- else if ( *data == 1 )
- {
- *buffer = 0;
- }
- else
- {
- sprintf( buffer, "%d", 1 << (*data - 1) );
- }
- break;
- case 's':
- strcpy( buffer, SourceMemory[ *data & 0x7 ] );
- break;
- case 'd':
- strcpy( buffer, DestMemory[ *data & 0xf ] );
- break;
- case 'S':
- strcpy( buffer, SourceMemory2[ *data & 0xf ] );
- break;
- case 'I':
- ++format;
- if ( *format == '8' )
- {
- sprintf( buffer, "#$%x", *data );
- }
- else if ( *format == 'A' )
- {
- sprintf( buffer, "$%X", *data );
- }
- else
- {
- --format;
- sprintf( buffer, "#$%X", *data );
- }
- break;
- case 'f':
- if ( !(*data & 0x20) )
- {
- strcpy( buffer, "N" );
- buffer++;
- }
- switch( *data & 0xf )
- {
- case 0x3:
- strcpy( buffer, "ZS" );
- break;
- case 0x2:
- strcpy( buffer, "S" );
- break;
- case 0x4:
- strcpy( buffer, "C" );
- break;
- case 0x8:
- strcpy( buffer, "T0" );
- break;
- case 0x1:
- strcpy( buffer, "Z" );
- break;
- default:
- strcpy( buffer, "?" );
- break;
- }
- break;
- case 'M':
- strcpy( buffer, DestDMAMemory[ *data ] );
- break;
-
- }
- data++;
- buffer += strlen( buffer );
- }
- else
- {
- *buffer++ = *format;
- }
- }
- *buffer = 0;
-}
-
-
-CPU_DISASSEMBLE( scudsp )
-{
- UINT32 op = oprom[0]<<24|oprom[1]<<16|oprom[2]<<8|oprom[3]<<0;
- unsigned size = 1;
-// const char *sym, *sym2;
- char *my_buffer = buffer;
- char temp_buffer[64];
- UINT32 data[4];
-
- switch( op >> 30 )
- {
- case 0:
- if ( (op & 0x3F8E3000) == 0 )
- {
- sprintf( buffer, "%-10s", "NOP" );
- break;
- }
-
- /* ALU */
- sprintf(my_buffer, "%s", ALU_Commands[ (op & 0x3c000000) >> 26] );
- my_buffer += strlen( my_buffer );
-
- /* X-Bus */
- data[0] = (op & 0x700000) >> 20;
- if ( op & 0x2000000 )
- {
- scudsp_dasm_prefix( X_Commands[ 4 ], temp_buffer, data );
- }
- else
- {
- *temp_buffer = 0;
- }
- sprintf( my_buffer, "%s", temp_buffer );
- my_buffer += strlen( my_buffer );
-
- scudsp_dasm_prefix( X_Commands[ (op & 0x1800000) >> 23 ], temp_buffer, data );
- sprintf( my_buffer, "%s", temp_buffer );
- my_buffer += strlen( my_buffer );
-
- data[0] = (op & 0x1C000 ) >> 14 ;
- if ( op & 0x80000 )
- {
- scudsp_dasm_prefix( Y_Commands[4], temp_buffer, data );
- }
- else
- {
- *temp_buffer = 0;
- }
- sprintf( my_buffer, "%s", temp_buffer );
- my_buffer += strlen( my_buffer );
-
- scudsp_dasm_prefix( Y_Commands[ (op & 0x60000) >> 17 ], temp_buffer, data );
- sprintf( my_buffer, "%s", temp_buffer );
- my_buffer += strlen( my_buffer );
-
- /* D1-Bus */
- switch( (op & 0x3000) >> 12 )
- {
- case 0x1:
- data[0] = (op & 0xFF);
- data[1] = ((op & 0xF00) >> 8);
- break;
- case 0x3:
- data[0] = (op & 0xF);
- data[1] = ((op & 0xF00) >> 8);
- break;
- }
-
- scudsp_dasm_prefix( D1_Commands[ (op & 0x3000) >> 12 ], temp_buffer, data );
- sprintf( my_buffer, "%s", temp_buffer );
- break;
- case 2:
- if ( (op & 0x2000000) )
- {
- data[0] = op & 0x7FFFF;
- data[1] = (op & 0x3C000000) >> 26;
- data[2] = (op & 0x3F80000 ) >> 19;
- scudsp_dasm_prefix( MVI_Command[1], buffer, data ); /* TODO: bad mem*/
- }
- else
- {
- data[0] = op & 0x1FFFFFF;
- data[1] = (op & 0x3C000000) >> 26;
- scudsp_dasm_prefix( MVI_Command[0], buffer, data ); /* TODO: bad mem*/
- }
- break;
- case 3:
- switch((op >> 28) & 3)
- {
- case 0:
- data[0] = (op & 0x4000) >> 14; /* H */
- data[1] = (op & 0x38000) >> 15; /* A */
- data[2] = (op & 0x700) >> 8; /* Mem */
- data[3] = (op & 0xff);
- scudsp_dasm_prefix( DMA_Command[(op & 0x3000) >> 12], buffer, data );
- break;
- case 1:
- if ( op & 0x3F80000 )
- {
- data[0] = (op & 0x3F80000) >> 19;
- data[1] = op & 0xff;
- scudsp_dasm_prefix( JMP_Command[1], buffer, data );
- }
- else
- {
- data[0] = op & 0xff;
- scudsp_dasm_prefix( JMP_Command[0], buffer, data );
- }
- break;
- case 2:
- sprintf(buffer, op & 0x8000000 ? "LPS" : "BTM");
- break;
- case 3:
- sprintf(buffer, op & 0x8000000 ? "ENDI" : "END");
- break;
- }
- break;
-
- default:
- sprintf(buffer, "???");
- break;
- }
-
- return size;
-}