OSDN Git Service

[VM][General] Merge Upstream 2017-03-30.
authorK.Ohta <whatisthis.sowhat@gmail.com>
Sat, 8 Apr 2017 15:01:21 +0000 (00:01 +0900)
committerK.Ohta <whatisthis.sowhat@gmail.com>
Sat, 8 Apr 2017 15:01:21 +0000 (00:01 +0900)
[General][BUILD] Use -D_UNICODE to build.

61 files changed:
source/build-cmake/cmake/config_commonsource.cmake
source/build-cmake/cmake/config_sharedlibs.cmake
source/history.txt
source/src/common.cpp
source/src/common.h
source/src/debugger.cpp
source/src/fileio.cpp
source/src/fileio.h
source/src/qt/emuutils/CMakeLists.txt
source/src/res/babbage2nd.rc
source/src/res/familybasic.rc
source/src/res/ys6464a.rc
source/src/vm/babbage2nd/babbage2nd.cpp
source/src/vm/babbage2nd/babbage2nd.h
source/src/vm/babbage2nd/display.cpp
source/src/vm/babbage2nd/display.h
source/src/vm/familybasic/familybasic.cpp
source/src/vm/familybasic/familybasic.h
source/src/vm/fm7/display.cpp
source/src/vm/fm7/dummydevice.cpp
source/src/vm/fm7/fm7_mainio.cpp
source/src/vm/fm7/fm7_mainmem.cpp
source/src/vm/fm7/fm_bubblecasette.cpp
source/src/vm/fm7/hd6844.cpp
source/src/vm/fm7/joystick.cpp
source/src/vm/fm7/kanjirom.cpp
source/src/vm/fm7/keyboard.cpp
source/src/vm/fm7/mb61vh010.cpp
source/src/vm/fmr30/fmr30.cpp
source/src/vm/fmr50/fmr50.cpp
source/src/vm/huc6280.cpp
source/src/vm/i8080.cpp
source/src/vm/libcpu_newdev/mcs48.cpp
source/src/vm/libcpu_newdev/mcs48.h
source/src/vm/libcpu_newdev/mcs48_base.cpp
source/src/vm/libcpu_newdev/mcs48_base.h
source/src/vm/m6502.cpp
source/src/vm/m6502.h
source/src/vm/mame/emu/cpu/h6280/6280dasm.c
source/src/vm/mame/emu/cpu/m6502/6502dasm.c [new file with mode: 0644]
source/src/vm/mame/emu/cpu/m6502/readme_takeda.txt [new file with mode: 0644]
source/src/vm/mame/emu/cpu/tms9900/9900dasm.c
source/src/vm/mame/emu/cpu/upd7810/7810dasm.c
source/src/vm/mcs48.cpp
source/src/vm/upd7801.cpp
source/src/vm/upd7810.cpp
source/src/vm/ys6464a/display.cpp
source/src/vm/ys6464a/display.h
source/src/vm/ys6464a/ys6464a.cpp
source/src/vm/ys6464a/ys6464a.h
source/src/win32/osd.h
source/src/win32/winmain.cpp
source/vc++2008/babbage2nd.vcproj
source/vc++2008/familybasic.vcproj
source/vc++2008/ys6464a.vcproj
source/vc++2013/babbage2nd.vcxproj
source/vc++2013/babbage2nd.vcxproj.filters
source/vc++2013/familybasic.vcxproj
source/vc++2013/pc2001 - âRâsü[.vcxproj [new file with mode: 0644]
source/vc++2013/ys6464a.vcxproj
source/vc++2013/ys6464a.vcxproj.filters

index 1e7ddb6..cc6566e 100644 (file)
@@ -89,6 +89,7 @@ else()
 endif()
 
 add_definitions(-D_USE_QT5)
+add_definitions(-D_UNICODE)
 
 if(USE_QT5_4_APIS)
   add_definitions(-D_USE_QT_5_4)
index 9959d3a..439dd1b 100644 (file)
@@ -50,6 +50,7 @@ else()
 endif()
 
 add_definitions(-D_USE_QT5)
+add_definitions(-D_UNICODE)
 
 if(USE_QT5_4_APIS)
   add_definitions(-D_USE_QT_5_4)
index 8157a8f..f47ccc2 100644 (file)
@@ -1,3 +1,25 @@
+3/30/2017
+
+[COMMON] add functions to convert char, wchar_t, and _TCHAR to each other
+[COMMON] add _fgetts, _ftprintf, my_ftprintf_s, and my_swprintf_s
+[COMMON/FILEIO] add Fgetts and Ftprintf for _TCHAR
+[COMMON/FILEIO] fix functions using ZLIB for _UNICODE case
+[EMU/DEBUGGER] fix for _UNICODE case
+[WINMAIN] improve to update status only when status is changed
+
+[VM/HUC6280] improve disassembler to support symbols (thanks Mr.Kei Moroboshi)
+[VM/I8080] improve disassembler to support symbols
+[VM/M6502] support debugger and disassembler (thanks MAME)
+[VM/MCS48] improve disassembler to support symbols
+[VM/TMS9995] fix disassembler for _UNICODE case
+[VM/UPD7810] improve disassembler to support symbols
+[VM/UPD7810] fix disassembler for _UNICODE case
+
+[BABBAGE2ND] support debugger and save/load state
+[FAMILYBASIC] support debugger
+[YS6464A] support debugger and save/load state
+
+
 3/28/2017
 
 [COMMON] add _tcscat and my_tcscat_s
index b875d97..e1c2092 100644 (file)
@@ -162,6 +162,15 @@ int DLL_PREFIX my_sprintf_s(char *buffer, size_t sizeOfBuffer, const char *forma
        return result;
 }
 
+int DLL_PREFIX my_swprintf_s(wchar_t *buffer, size_t sizeOfBuffer, const wchar_t *format, ...)
+{
+       va_list ap;
+       va_start(ap, format);
+       int result = vswprintf(buffer, format, ap);
+       va_end(ap);
+       return result;
+}
+
 int DLL_PREFIX my_stprintf_s(_TCHAR *buffer, size_t sizeOfBuffer, const _TCHAR *format, ...)
 {
        va_list ap;
@@ -578,6 +587,80 @@ const _TCHAR* DLL_PREFIX get_parent_dir(const _TCHAR* file)
        return path[output_index];
 }
 
+const wchar_t *DLL_PREFIX char_to_wchar(const char *cs)
+{
+       // char to wchar_t
+       static wchar_t ws[4096];
+       
+#ifdef _WIN32
+       mbstowcs(ws, cs, strlen(cs));
+#elif defined(_USE_QT)
+       mbstowcs(ws, cs, strlen(cs));
+#else
+       // write code for your environment
+#endif
+       return ws;
+}
+
+const char *DLL_PREFIX wchar_to_char(const wchar_t *ws)
+{
+       // wchar_t to char
+       static char cs[4096];
+       
+#ifdef _WIN32
+       wcstombs(cs, ws, wcslen(ws));
+#elif defined(_USE_QT)
+       wcstombs(cs, ws, wcslen(ws));
+#else
+       // write code for your environment
+#endif
+       return cs;
+}
+
+const _TCHAR *DLL_PREFIX char_to_tchar(const char *cs)
+{
+#if defined(_UNICODE) && defined(SUPPORT_TCHAR_TYPE)
+       // char to wchar_t
+       return char_to_wchar(cs);
+#else
+       // char to char
+       return cs;
+#endif
+}
+
+const char *DLL_PREFIX tchar_to_char(const _TCHAR *ts)
+{
+#if defined(_UNICODE) && defined(SUPPORT_TCHAR_TYPE)
+       // wchar_t to char
+       return wchar_to_char(ts);
+#else
+       // char to char
+       return ts;
+#endif
+}
+
+const _TCHAR *DLL_PREFIX wchar_to_tchar(const wchar_t *ws)
+{
+#if defined(_UNICODE) && defined(SUPPORT_TCHAR_TYPE)
+       // wchar_t to wchar_t
+       return ws;
+#else
+       // wchar_t to char
+       return wchar_to_char(ws);
+#endif
+}
+
+const wchar_t *DLL_PREFIX tchar_to_wchar(const _TCHAR *ts)
+{
+#if defined(_UNICODE) && defined(SUPPORT_TCHAR_TYPE)
+       // wchar_t to wchar_t
+       return ts;
+#else
+       // char to wchar_t
+       return char_to_wchar(ts);
+#endif
+}
+
 const _TCHAR *DLL_PREFIX create_string(const _TCHAR* format, ...)
 {
        static _TCHAR buffer[8][1024];
index 5c5c080..a47aa7e 100644 (file)
@@ -342,6 +342,12 @@ uint16_t DLL_PREFIX EndianToLittle_WORD(uint16_t x);
 #endif
 
 #ifndef SUPPORT_TCHAR_TYPE
+       #ifndef _fgetts
+               #define _fgetts fgets
+       #endif
+       #ifndef _ftprintf
+               #define _ftprintf printf
+       #endif
        #ifndef _tfopen
                #define _tfopen fopen
        #endif
@@ -423,7 +429,9 @@ uint16_t DLL_PREFIX EndianToLittle_WORD(uint16_t x);
        char * DLL_PREFIX my_strtok_s(char *strToken, const char *strDelimit, char **context);
        _TCHAR * DLL_PREFIX my_tcstok_s(_TCHAR *strToken, const char *strDelimit, _TCHAR **context);
        #define my_fprintf_s fprintf
+       #define my_ftprintf_s fprintf
        int DLL_PREFIX my_sprintf_s(char *buffer, size_t sizeOfBuffer, const char *format, ...);
+       int DLL_PREFIX my_swprintf_s(wchar_t *buffer, size_t sizeOfBuffer, const wchar_t *format, ...);
        int DLL_PREFIX my_stprintf_s(_TCHAR *buffer, size_t sizeOfBuffer, const _TCHAR *format, ...);
        int DLL_PREFIX my_vsprintf_s(char *buffer, size_t numberOfElements, const char *format, va_list argptr);
        int DLL_PREFIX my_vstprintf_s(_TCHAR *buffer, size_t numberOfElements, const _TCHAR *format, va_list argptr);
@@ -437,7 +445,9 @@ uint16_t DLL_PREFIX EndianToLittle_WORD(uint16_t x);
        #define my_strtok_s strtok_s
        #define my_tcstok_s _tcstok_s
        #define my_fprintf_s fprintf_s
+       #define my_ftprintf_s _ftprintf_s
        #define my_sprintf_s sprintf_s
+       #define my_swprintf_s swprintf_s
        #define my_stprintf_s _stprintf_s
        #define my_vsprintf_s vsprintf_s
        #define my_vstprintf_s _vstprintf_s
@@ -513,8 +523,16 @@ const _TCHAR *get_file_path_without_extensiton(const _TCHAR *file_path);
 void get_long_full_path_name(const _TCHAR* src, _TCHAR* dst, size_t dst_len);
 const _TCHAR* get_parent_dir(const _TCHAR* file);
 
+// string
+const _TCHAR *DLL_PREFIX create_string(const _TCHAR* format, ...);
+const wchar_t *DLL_PREFIX char_to_wchar(const char *cs);
+const char *DLL_PREFIX wchar_to_char(const wchar_t *ws);
+const _TCHAR *DLL_PREFIX char_to_tchar(const char *cs);
+const char *DLL_PREFIX tchar_to_char(const _TCHAR *ts);
+const _TCHAR *DLL_PREFIX wchar_to_tchar(const wchar_t *ws);
+const wchar_t *DLL_PREFIX tchar_to_wchar(const _TCHAR *ts);
+
 // misc
-const _TCHAR * DLL_PREFIX create_string(const _TCHAR* format, ...);
 uint32_t DLL_PREFIX get_crc32(uint8_t data[], int size);
 uint16_t DLL_PREFIX jis_to_sjis(uint16_t jis);
 
@@ -528,6 +546,7 @@ int32_t DLL_PREFIX apply_volume(int32_t sample, int volume);
 #define TO_BCD_LO(v)   ((v) % 10)
 #define TO_BCD_HI(v)   (int)(((v) % 100) / 10)
 
+// time
 #define LEAP_YEAR(y)   (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0))
 
 #define dll_cur_time_t DLL_PREFIX_I struct cur_time_s
@@ -549,7 +568,6 @@ typedef DLL_PREFIX struct cur_time_s {
 void DLL_PREFIX get_host_time(cur_time_t* cur_time);
 
 // symbol
-
 typedef struct symbol_s {
        uint32_t addr;
        _TCHAR *name;
index 4e5ac3b..81387f7 100644 (file)
@@ -70,7 +70,7 @@ uint32_t my_hexatoi(symbol_t *first_symbol, const _TCHAR *str)
        my_tcscpy_s(tmp, 1024, str);
        
        for(symbol_t* symbol = first_symbol; symbol; symbol = symbol->next_symbol) {
-               if(stricmp(symbol->name, str) == 0) {
+               if(_tcsicmp(symbol->name, str) == 0) {
                        return symbol->addr;
                }
        }
@@ -189,7 +189,7 @@ void* debugger_thread(void *lpx)
                
                while(!p->request_terminate && !enter_done) {
                        if(cmdfile != NULL) {
-                               if(cmdfile->Fgets(command, array_length(command)) != NULL) {
+                               if(cmdfile->Fgetts(command, array_length(command)) != NULL) {
                                        while(_tcslen(command) > 0 && (command[_tcslen(command) - 1] == 0x0d || command[_tcslen(command) - 1] == 0x0a)) {
                                                command[_tcslen(command) - 1] = _T('\0');
                                        }
@@ -491,25 +491,25 @@ void* debugger_thread(void *lpx)
                                if(check_file_extension(debugger->file_path, _T(".sym"))) {
                                        if(fio->Fopen(debugger->file_path, FILEIO_READ_ASCII)) {
                                                debugger->release_symbols();
-                                               char line[1024];
-                                               while(fio->Fgets(line, sizeof(line)) != NULL) {
-                                                       char *next = NULL;
-                                                       char *addr = my_strtok_s(line, "\t #$*,;", &next);
+                                               _TCHAR line[1024];
+                                               while(fio->Fgetts(line, array_length(line)) != NULL) {
+                                                       _TCHAR *next = NULL;
+                                                       _TCHAR *addr = my_tcstok_s(line, _T("\t #$*,;"), &next);
                                                        while(addr != NULL) {
-                                                               if(strlen(addr) > 0) {
-                                                                       char *name = my_strtok_s(NULL, "\t #$*,;", &next);
+                                                               if(_tcslen(addr) > 0) {
+                                                                       _TCHAR *name = my_tcstok_s(NULL, _T("\t #$*,;"), &next);
                                                                        while(name != NULL) {
-                                                                               while(strlen(name) > 0 && (name[strlen(name) - 1] == 0x0d || name[strlen(name) - 1] == 0x0a)) {
-                                                                                       name[strlen(name) - 1] = _T('\0');
+                                                                               while(_tcslen(name) > 0 && (name[_tcslen(name) - 1] == 0x0d || name[_tcslen(name) - 1] == 0x0a)) {
+                                                                                       name[_tcslen(name) - 1] = _T('\0');
                                                                                }
-                                                                               if(strlen(name) > 0) {
+                                                                               if(_tcslen(name) > 0) {
                                                                                        debugger->add_symbol(my_hexatoi(NULL, addr), name);
                                                                                        break;
                                                                                }
-                                                                               name = my_strtok_s(NULL, "\t #$*,;", &next);
+                                                                               name = my_tcstok_s(NULL, _T("\t #$*,;"), &next);
                                                                        }
                                                                }
-                                                               addr = my_strtok_s(NULL, "\t #$*,;", &next);
+                                                               addr = my_tcstok_s(NULL, _T("\t #$*,;"), &next);
                                                        }
                                                }
                                                fio->Fclose();
index ca33b6b..c9ee032 100644 (file)
@@ -209,7 +209,7 @@ bool FILEIO::Fopen(const _TCHAR *file_path, int mode)
                case FILEIO_READ_BINARY:
                        {
                                //memset(path, 0x00, _MAX_PATH);
-                               gz = gzopen(file_path, _T("rb"));
+                               gz = gzopen(tchar_to_char(file_path), _T("rb"));
                                if(gz != NULL) {
                                        my_tcscpy_s(path, _MAX_PATH, get_file_path_without_extensiton(file_path));
                                        return true;
@@ -220,14 +220,14 @@ bool FILEIO::Fopen(const _TCHAR *file_path, int mode)
                        }
                        break;
 //             case FILEIO_WRITE_BINARY:
-//                     return ((gz = gzopen(file_path, _T("wb"))) != NULL);
+//                     return ((gz = gzopen(tchar_to_char(file_path), _T("wb"))) != NULL);
 //             case FILEIO_READ_WRITE_BINARY:
-//                     return ((gz = gzopen(file_path, _T("r+b"))) != NULL);
+//                     return ((gz = gzopen(tchar_to_char(file_path), _T("r+b"))) != NULL);
 //             case FILEIO_READ_WRITE_NEW_BINARY:
-//                     return ((gz = gzopen(file_path, _T("w+b"))) != NULL);
+//                     return ((gz = gzopen(tchar_to_char(file_path), _T("w+b"))) != NULL);
                case FILEIO_READ_ASCII:
                        {
-                               gz = gzopen(file_path, _T("r"));
+                               gz = gzopen(tchar_to_char(file_path), _T("r"));
                                if(gz != NULL) {
                                        my_tcscpy_s(path, _MAX_PATH, get_file_path_without_extensiton(file_path));
                                        return true;
@@ -238,15 +238,15 @@ bool FILEIO::Fopen(const _TCHAR *file_path, int mode)
                        }
                        break;
 //             case FILEIO_WRITE_ASCII:
-//                     return ((gz = gzopen(file_path, _T("w"))) != NULL);
+//                     return ((gz = gzopen(tchar_to_char(file_path), _T("w"))) != NULL);
 //             case FILEIO_WRITE_APPEND_ASCII:
-//                     return ((gz = gzopen(file_path, _T("a"))) != NULL);
+//                     return ((gz = gzopen(tchar_to_char(file_path), _T("a"))) != NULL);
 //             case FILEIO_READ_WRITE_ASCII:
-//                     return ((gz = gzopen(file_path, _T("r+"))) != NULL);
+//                     return ((gz = gzopen(tchar_to_char(file_path), _T("r+"))) != NULL);
 //             case FILEIO_READ_WRITE_NEW_ASCII:
-//                     return ((gz = gzopen(file_path, _T("w+"))) != NULL);
+//                     return ((gz = gzopen(tchar_to_char(file_path), _T("w+"))) != NULL);
 //             case FILEIO_READ_WRITE_APPEND_ASCII:
-//                     return ((gz = gzopen(file_path, _T("a+"))) != NULL);
+//                     return ((gz = gzopen(tchar_to_char(file_path), _T("a+"))) != NULL);
                }
        } else
 #endif
@@ -758,6 +758,24 @@ char *FILEIO::Fgets(char *str, int n)
        }
 }
 
+_TCHAR *FILEIO::Fgetts(_TCHAR *str, int n)
+{
+#ifdef USE_ZLIB
+       if(gz != NULL) {
+#if defined(_UNICODE) && defined(SUPPORT_TCHAR_TYPE)
+               char *str_mb = (char *)calloc(sizeof(char), n + 1);
+               gzgets(gz, str_mb, n);
+               my_swprintf_s(str, n, L"%s", char_to_wchar(str_mb));
+               free(str_mb);
+               return str;
+#else
+               return gzgets(gz, str, n);
+#endif
+       } else
+#endif
+       return _fgetts(str, n, fp);
+}
+
 int FILEIO::Fprintf(const char* format, ...)
 {
        va_list ap;
@@ -781,6 +799,23 @@ int FILEIO::Fprintf(const char* format, ...)
        }
 }
 
+int FILEIO::Ftprintf(const _TCHAR* format, ...)
+{
+       va_list ap;
+       _TCHAR buffer[1024];
+       
+       va_start(ap, format);
+       my_vstprintf_s(buffer, 1024, format, ap);
+       va_end(ap);
+       
+#ifdef USE_ZLIB
+       if(gz != NULL) {
+               return gzprintf(gz, "%s", tchar_to_char(buffer));
+       } else
+#endif
+       return my_ftprintf_s(fp, _T("%s"), buffer);
+}
+
 size_t FILEIO::Fread(void* buffer, size_t size, size_t count)
 {
 #ifdef USE_ZLIB
index c2c3415..9a9bd53 100644 (file)
@@ -120,7 +120,9 @@ public:
        int Fgetc();
        int Fputc(int c);
        char *Fgets(char *str, int n);
+       _TCHAR *Fgetts(_TCHAR *str, int n);
        int Fprintf(const char* format, ...);
+       int Ftprintf(const _TCHAR* format, ...);
        
        size_t Fread(void* buffer, size_t size, size_t count);
        size_t Fwrite(void* buffer, size_t size, size_t count);
index 2793b23..91a1928 100644 (file)
@@ -41,8 +41,8 @@ add_library(CSPemu_utils SHARED
 )
 
 set_target_properties(CSPemu_utils PROPERTIES 
-                            SOVERSION 2.4.0
-                            VERSION 2.4.0
+                            SOVERSION 2.4.1
+                            VERSION 2.4.1
                             )
 INSTALL(TARGETS CSPemu_utils DESTINATION ${LIBCSP_INSTALL_DIR})
 endif()
index b5c5bb7..b8bc44b 100644 (file)
@@ -87,6 +87,12 @@ BEGIN
         MENUITEM "CPU x8",                      ID_CPU_POWER3
         MENUITEM "CPU x16",                     ID_CPU_POWER4
         MENUITEM SEPARATOR
+        MENUITEM "Save State",                  ID_SAVE_STATE
+        MENUITEM "Load State",                  ID_LOAD_STATE
+        MENUITEM SEPARATOR
+        MENUITEM "Debug Main CPU",              ID_OPEN_DEBUGGER0
+        MENUITEM "Close Debugger",              ID_CLOSE_DEBUGGER
+        MENUITEM SEPARATOR
         MENUITEM "Exit",                        ID_EXIT
     END
     POPUP "RAM"
index 2ec0274..91fd685 100644 (file)
@@ -100,6 +100,9 @@ BEGIN
         MENUITEM "Save State",                  ID_SAVE_STATE
         MENUITEM "Load State",                  ID_LOAD_STATE
         MENUITEM SEPARATOR
+        MENUITEM "Debug Main CPU",              ID_OPEN_DEBUGGER0
+        MENUITEM "Close Debugger",              ID_CLOSE_DEBUGGER
+        MENUITEM SEPARATOR
         MENUITEM "Exit",                        ID_EXIT
     END
     POPUP "CMT"
index 0f2a6ae..1203d0b 100644 (file)
@@ -87,6 +87,12 @@ BEGIN
         MENUITEM "CPU x8",                      ID_CPU_POWER3
         MENUITEM "CPU x16",                     ID_CPU_POWER4
         MENUITEM SEPARATOR
+        MENUITEM "Save State",                  ID_SAVE_STATE
+        MENUITEM "Load State",                  ID_LOAD_STATE
+        MENUITEM SEPARATOR
+        MENUITEM "Debug Main CPU",              ID_OPEN_DEBUGGER0
+        MENUITEM "Close Debugger",              ID_CLOSE_DEBUGGER
+        MENUITEM SEPARATOR
         MENUITEM "Exit",                        ID_EXIT
     END
     POPUP "RAM"
index 2b11181..f634e38 100644 (file)
 #include "../z80ctc.h"
 #include "../z80pio.h"
 
+#ifdef USE_DEBUGGER
+#include "../debugger.h"
+#endif
+
 #include "display.h"
 #include "keyboard.h"
 
@@ -71,6 +75,9 @@ VM::VM(EMU* parent_emu) : emu(parent_emu)
        cpu->set_context_mem(memory);
        cpu->set_context_io(io);
        cpu->set_context_intr(ctc);
+#ifdef USE_DEBUGGER
+       cpu->set_context_debugger(new DEBUGGER(this, emu));
+#endif
        
        // z80 family daisy chain
        ctc->set_context_intr(cpu, 0);
@@ -138,6 +145,20 @@ void VM::run()
 }
 
 // ----------------------------------------------------------------------------
+// debugger
+// ----------------------------------------------------------------------------
+
+#ifdef USE_DEBUGGER
+DEVICE *VM::get_cpu(int index)
+{
+       if(index == 0) {
+               return cpu;
+       }
+       return NULL;
+}
+#endif
+
+// ----------------------------------------------------------------------------
 // draw screen
 // ----------------------------------------------------------------------------
 
@@ -210,3 +231,29 @@ void VM::update_config()
        }
 }
 
+#define STATE_VERSION  1
+
+void VM::save_state(FILEIO* state_fio)
+{
+       state_fio->FputUint32(STATE_VERSION);
+       
+       for(DEVICE* device = first_device; device; device = device->next_device) {
+               device->save_state(state_fio);
+       }
+       state_fio->Fwrite(ram, sizeof(ram), 1);
+}
+
+bool VM::load_state(FILEIO* state_fio)
+{
+       if(state_fio->FgetUint32() != STATE_VERSION) {
+               return false;
+       }
+       for(DEVICE* device = first_device; device; device = device->next_device) {
+               if(!device->load_state(state_fio)) {
+                       return false;
+               }
+       }
+       state_fio->Fread(ram, sizeof(ram), 1);
+       return true;
+}
+
index 0c77bb1..2dfc704 100644 (file)
@@ -28,6 +28,8 @@
 #define MAX_DRAW_RANGES                14
 #define USE_BINARY_FILE1
 #define NOTIFY_KEY_DOWN
+#define USE_DEBUGGER
+#define USE_STATE
 
 #include "../../common.h"
 #include "../../fileio.h"
@@ -130,6 +132,11 @@ public:
        void reset();
        void run();
        
+#ifdef USE_DEBUGGER
+       // debugger
+       DEVICE *get_cpu(int index);
+#endif
+       
        // draw screen
        void draw_screen();
        
@@ -148,6 +155,8 @@ public:
        bool is_frame_skippable();
        
        void update_config();
+       void save_state(FILEIO* state_fio);
+       bool load_state(FILEIO* state_fio);
        
        // ----------------------------------------
        // for each device
index 7e1fd34..2a9b710 100644 (file)
@@ -160,3 +160,31 @@ void DISPLAY::draw_screen()
        }
 }
 
+#define STATE_VERSION  1
+
+void DISPLAY::save_state(FILEIO* state_fio)
+{
+       state_fio->FputUint32(STATE_VERSION);
+       state_fio->FputInt32(this_device_id);
+       
+       state_fio->Fwrite(seg, sizeof(seg), 1);
+       state_fio->FputUint8(ls373);
+       state_fio->FputUint8(pio_7seg);
+       state_fio->FputUint8(pio_8bit);
+}
+
+bool DISPLAY::load_state(FILEIO* state_fio)
+{
+       if(state_fio->FgetUint32() != STATE_VERSION) {
+               return false;
+       }
+       if(state_fio->FgetInt32() != this_device_id) {
+               return false;
+       }
+       state_fio->Fread(seg, sizeof(seg), 1);
+       ls373 = state_fio->FgetUint8();
+       pio_7seg = state_fio->FgetUint8();
+       pio_8bit = state_fio->FgetUint8();
+       return true;
+}
+
index 7259e71..661828b 100644 (file)
@@ -38,6 +38,8 @@ public:
        void initialize();
        void write_signal(int id, uint32_t data, uint32_t mask);
        void event_vline(int v, int clock);
+       void save_state(FILEIO* state_fio);
+       bool load_state(FILEIO* state_fio);
        
        // unique function
        void draw_screen();
index 336b264..4df1ce1 100644 (file)
 #include "../noise.h"
 #include "../ym2413.h"
 
+#ifdef USE_DEBUGGER
+#include "../debugger.h"
+#endif
+
 #include "memory.h"
 #include "apu.h"
 #include "ppu.h"
@@ -78,6 +82,9 @@ VM::VM(EMU* parent_emu) : emu(parent_emu)
        // cpu bus
        cpu->set_context_mem(memory);
        cpu->set_context_intr(dummy);
+#ifdef USE_DEBUGGER
+       cpu->set_context_debugger(new DEBUGGER(this, emu));
+#endif
        
        // initialize all devices
        for(DEVICE* device = first_device; device; device = device->next_device) {
@@ -151,6 +158,20 @@ void VM::run()
 }
 
 // ----------------------------------------------------------------------------
+// debugger
+// ----------------------------------------------------------------------------
+
+#ifdef USE_DEBUGGER
+DEVICE *VM::get_cpu(int index)
+{
+       if(index == 0) {
+               return cpu;
+       }
+       return NULL;
+}
+#endif
+
+// ----------------------------------------------------------------------------
 // draw screen
 // ----------------------------------------------------------------------------
 
@@ -267,7 +288,7 @@ void VM::update_config()
        }
 }
 
-#define STATE_VERSION  3
+#define STATE_VERSION  4
 
 void VM::save_state(FILEIO* state_fio)
 {
index 32dd490..c1637c5 100644 (file)
@@ -36,6 +36,7 @@
 #define USE_SOUND_VOLUME       4
 #define USE_JOYSTICK
 #define USE_JOY_BUTTON_CAPTIONS
+#define USE_DEBUGGER
 #define USE_STATE
 
 #include "../../common.h"
@@ -128,6 +129,11 @@ public:
        void reset();
        void run();
        
+#ifdef USE_DEBUGGER
+       // debugger
+       DEVICE *get_cpu(int index);
+#endif
+       
        // draw screen
        void draw_screen();
        
index 2db4822..b24123b 100644 (file)
@@ -2724,7 +2724,7 @@ void DISPLAY::save_state(FILEIO *state_fio)
 {
        state_fio->FputUint32_BE(STATE_VERSION);
        state_fio->FputInt32_BE(this_device_id);
-       this->out_debug_log("Save State: DISPLAY : id=%d ver=%d\n", this_device_id, STATE_VERSION);
+       this->out_debug_log(_T("Save State: DISPLAY : id=%d ver=%d\n"), this_device_id, STATE_VERSION);
 
        {
                int i;
@@ -2867,7 +2867,7 @@ bool DISPLAY::load_state(FILEIO *state_fio)
        if(this_device_id != state_fio->FgetInt32_BE()) {
                return false;
        }
-       this->out_debug_log("Load State: DISPLAY : id=%d ver=%d\n", this_device_id, version);
+       this->out_debug_log(_T("Load State: DISPLAY : id=%d ver=%d\n"), this_device_id, version);
    
        if(version >= 1) {
                int addr;
index e22ca46..41ed78a 100644 (file)
@@ -65,7 +65,7 @@ void DUMMYDEVICE::save_state(FILEIO *state_fio)
 {
        state_fio->FputUint32_BE(STATE_VERSION);
        state_fio->FputInt32_BE(this_device_id);
-       this->out_debug_log("Save State: id=%d ver=%d\n", this_device_id, STATE_VERSION);
+       this->out_debug_log(_T("Save State: id=%d ver=%d\n"), this_device_id, STATE_VERSION);
        // Version 1
        {
                state_fio->FputUint32_BE(status);
@@ -78,7 +78,7 @@ bool DUMMYDEVICE::load_state(FILEIO *state_fio)
 {
        uint32_t version;
        version = state_fio->FgetUint32_BE();
-       this->out_debug_log("Load State: id=%d ver=%d\n", this_device_id, version);
+       this->out_debug_log(_T("Load State: id=%d ver=%d\n"), this_device_id, version);
        if(this_device_id != state_fio->FgetInt32_BE()) return false;
        // Version 1
        {
index 31018f5..e438b95 100644 (file)
@@ -1639,7 +1639,7 @@ void FM7_MAINIO::save_state(FILEIO *state_fio)
        int addr;
        state_fio->FputUint32_BE(STATE_VERSION);
        state_fio->FputInt32_BE(this_device_id);
-       this->out_debug_log("Save State: MAINIO: id=%d ver=%d\n", this_device_id, STATE_VERSION);
+       this->out_debug_log(_T("Save State: MAINIO: id=%d ver=%d\n"), this_device_id, STATE_VERSION);
 
        // Version 1
        {
@@ -1800,7 +1800,7 @@ bool FM7_MAINIO::load_state(FILEIO *state_fio)
        
        version = state_fio->FgetUint32_BE();
        if(this_device_id != state_fio->FgetInt32_BE()) return false;
-       this->out_debug_log("Load State: MAINIO: id=%d ver=%d\n", this_device_id, version);
+       this->out_debug_log(_T("Load State: MAINIO: id=%d ver=%d\n"), this_device_id, version);
 
        if(version >= 1) {
                for(addr = 0; addr < 0x100; addr++) io_w_latch[addr] = state_fio->FgetUint8();
index 7ec2741..bd23c00 100644 (file)
@@ -491,7 +491,7 @@ void FM7_MAINMEM::save_state(FILEIO *state_fio)
 {
        state_fio->FputUint32_BE(STATE_VERSION);
        state_fio->FputInt32_BE(this_device_id);
-       this->out_debug_log("Save State: MAINMEM: id=%d ver=%d\n", this_device_id, STATE_VERSION);
+       this->out_debug_log(_T("Save State: MAINMEM: id=%d ver=%d\n"), this_device_id, STATE_VERSION);
 
        // V1
        state_fio->FputBool(ioaccess_wait);
@@ -596,7 +596,7 @@ bool FM7_MAINMEM::load_state(FILEIO *state_fio)
        uint32_t version;
        version = state_fio->FgetUint32_BE();
        if(this_device_id != state_fio->FgetInt32_BE()) return false;
-       this->out_debug_log("Load State: MAINMEM: id=%d ver=%d\n", this_device_id, version);
+       this->out_debug_log(_T("Load State: MAINMEM: id=%d ver=%d\n"), this_device_id, version);
        if(version >= 1) {
                // V1
                ioaccess_wait = state_fio->FgetBool();
index 0719dfa..61d900f 100644 (file)
@@ -368,7 +368,7 @@ void BUBBLECASETTE::open(_TCHAR* file_path, int bank)
        fio = new FILEIO;
        if(fio == NULL) return;
        memset(image_path, 0x00, _MAX_PATH * sizeof(_TCHAR));
-       strncpy(image_path, file_path, _MAX_PATH);
+       _tcsncpy(image_path, file_path, _MAX_PATH);
        
        if(fio->IsFileExisting(file_path)) {
                fio->Fopen(file_path, FILEIO_READ_WRITE_BINARY);
@@ -640,7 +640,7 @@ void BUBBLECASETTE::save_state(FILEIO *state_fio)
        int i, j;
        state_fio->FputUint32_BE(STATE_VERSION);
        state_fio->FputInt32_BE(this_device_id);
-       this->out_debug_log("Save State: BUBBLE: id=%d ver=%d\n", this_device_id, STATE_VERSION);
+       this->out_debug_log(_T("Save State: BUBBLE: id=%d ver=%d\n"), this_device_id, STATE_VERSION);
 
        // Attributes
        state_fio->FputUint32_BE(file_length);
@@ -699,7 +699,7 @@ bool BUBBLECASETTE::load_state(FILEIO *state_fio)
        int i, j;
        if(state_fio->FgetUint32_BE() != STATE_VERSION) return false;
        if(state_fio->FgetInt32_BE() != this_device_id) return false;
-       this->out_debug_log("Load State: BUBBLE: id=%d ver=%d\n", this_device_id, STATE_VERSION);
+       this->out_debug_log(_T("Load State: BUBBLE: id=%d ver=%d\n"), this_device_id, STATE_VERSION);
 
        // Attributes
        file_length = state_fio->FgetUint32_BE();
@@ -741,7 +741,7 @@ bool BUBBLECASETTE::load_state(FILEIO *state_fio)
        header_changed = false;
        
        if(state_fio->Fread(image_path, _MAX_PATH * sizeof(_TCHAR), 1) != (_MAX_PATH * sizeof(_TCHAR))) return false;
-       if(strlen(image_path) > 0) {
+       if(_tcslen(image_path) > 0) {
                this->open(image_path, (int)media_num);
        }
        return true;
index 7a76732..360b3a4 100644 (file)
@@ -401,7 +401,7 @@ void HD6844::save_state(FILEIO *state_fio)
        int i;
        state_fio->FputUint32_BE(STATE_VERSION);
        state_fio->FputInt32_BE(this_device_id);
-       this->out_debug_log("Save State: HD6844: id=%d ver=%d\n", this_device_id, STATE_VERSION);
+       this->out_debug_log(_T("Save State: HD6844: id=%d ver=%d\n"), this_device_id, STATE_VERSION);
        { // V1
                for(i = 0; i < 4; i++) {
                        state_fio->FputUint32_BE(addr_reg[i]);
@@ -431,7 +431,7 @@ bool HD6844::load_state(FILEIO *state_fio)
        int i;
        version = state_fio->FgetUint32_BE();
        if(this_device_id != state_fio->FgetInt32_BE()) return false;
-       this->out_debug_log("Load State: HD6844: id=%d ver=%d\n", this_device_id, version);
+       this->out_debug_log(_T("Load State: HD6844: id=%d ver=%d\n"), this_device_id, version);
        if(version >= 1) {
                for(i = 0; i < 4; i++) {
                        addr_reg[i] = state_fio->FgetUint32_BE();
index 6d43fe1..c1c5923 100644 (file)
@@ -289,7 +289,7 @@ void JOYSTICK::save_state(FILEIO *state_fio)
        int ch;
        state_fio->FputUint32_BE(STATE_VERSION);
        state_fio->FputInt32_BE(this_device_id);
-       this->out_debug_log("Save State: JOYSTICK: id=%d ver=%d\n", this_device_id, STATE_VERSION);
+       this->out_debug_log(_T("Save State: JOYSTICK: id=%d ver=%d\n"), this_device_id, STATE_VERSION);
        // Version 1
        for(ch = 0; ch < 2; ch++) {
 #if !defined(_FM8)
@@ -321,7 +321,7 @@ bool JOYSTICK::load_state(FILEIO *state_fio)
        int32_t devid = state_fio->FgetInt32_BE();
        bool stat = false;
        int ch;
-       this->out_debug_log("Load State: JOYSTICK: id=%d ver=%d\n", devid, version);
+       this->out_debug_log(_T("Load State: JOYSTICK: id=%d ver=%d\n"), devid, version);
        if(devid != this_device_id) return stat;
        if(version >= 1) {
                for(ch = 0; ch < 2; ch++) {
index bbe126a..44e6e48 100644 (file)
@@ -101,7 +101,7 @@ void KANJIROM::save_state(FILEIO *state_fio)
 {
        state_fio->FputUint32_BE(STATE_VERSION);
        state_fio->FputInt32_BE(this_device_id);
-       this->out_debug_log("Save State: KANJIROM: id=%d ver=%d\n", this_device_id, STATE_VERSION);
+       this->out_debug_log(_T("Save State: KANJIROM: id=%d ver=%d\n"), this_device_id, STATE_VERSION);
 
        state_fio->FputBool(class2);
        state_fio->FputBool(read_ok);
@@ -114,7 +114,7 @@ bool KANJIROM::load_state(FILEIO *state_fio)
        uint32_t version;
        version = state_fio->FgetUint32_BE();
        if(this_device_id != state_fio->FgetInt32_BE()) return false;
-       this->out_debug_log("Load State: KANJIROM: id=%d ver=%d\n", this_device_id, version);
+       this->out_debug_log(_T("Load State: KANJIROM: id=%d ver=%d\n"), this_device_id, version);
 
        if(version >= 1) {
                class2 = state_fio->FgetBool();
index 0189ed3..2413186 100644 (file)
@@ -1220,7 +1220,7 @@ void KEYBOARD::save_state(FILEIO *state_fio)
 {
        state_fio->FputUint32_BE(STATE_VERSION);
        state_fio->FputInt32_BE(this_device_id);
-       this->out_debug_log("Save State: KEYBOARD: id=%d ver=%d\n", this_device_id, STATE_VERSION);
+       this->out_debug_log(_T("Save State: KEYBOARD: id=%d ver=%d\n"), this_device_id, STATE_VERSION);
 
        // Version 1
        {
@@ -1299,7 +1299,7 @@ bool KEYBOARD::load_state(FILEIO *state_fio)
        
        version = state_fio->FgetUint32_BE();
        if(this_device_id != state_fio->FgetInt32_BE()) return false;
-       this->out_debug_log("Load State: KEYBOARD: id=%d ver=%d\n", this_device_id, version);
+       this->out_debug_log(_T("Load State: KEYBOARD: id=%d ver=%d\n"), this_device_id, version);
 
        if(version >= 1) {
                keycode_7 = state_fio->FgetUint32_BE();
index 493b221..6cdafd5 100644 (file)
@@ -462,7 +462,7 @@ void MB61VH010::do_line(void)
        }
        xcount = abs(ax);
        ycount = abs(ay);
-       //this->out_debug_log("LINE: (%d,%d)-(%d,%d) CMD=%02x STYLE=%04x, \n", x_begin, y_begin, x_end , y_end, command_reg, line_style.w.l); 
+       //this->out_debug_log(_T("LINE: (%d,%d)-(%d,%d) CMD=%02x STYLE=%04x, \n"), x_begin, y_begin, x_end , y_end, command_reg, line_style.w.l); 
        if(ycount == 0) {
                if((cpy_t < 0) || (cpy_t >= 512)) goto _finish;
                if(xcount == 0) {
@@ -745,7 +745,7 @@ inline bool MB61VH010::put_dot8(int x, int y)
 
 void MB61VH010::write_data8(uint32_t id, uint32_t data)
 {
-       //this->out_debug_log("ALU: ADDR=%02x DATA=%02x\n", id, data);
+       //this->out_debug_log(_T("ALU: ADDR=%02x DATA=%02x\n"), id, data);
        if(id == ALU_CMDREG) {
                command_reg = data;
                return;
@@ -975,7 +975,7 @@ void MB61VH010::save_state(FILEIO *state_fio)
        int i;
        state_fio->FputUint32(STATE_VERSION);
        state_fio->FputInt32(this_device_id);
-       this->out_debug_log("Save State: MB61VH010 : id=%d ver=%d\n", this_device_id, STATE_VERSION);
+       this->out_debug_log(_T("Save State: MB61VH010 : id=%d ver=%d\n"), this_device_id, STATE_VERSION);
 
        { // V1
                state_fio->FputUint8(command_reg);
@@ -1015,7 +1015,7 @@ bool MB61VH010::load_state(FILEIO *state_fio)
 {
        uint32_t version = state_fio->FgetUint32();
        int i;
-       this->out_debug_log("Load State: MB61VH010 : id=%d ver=%d\n", this_device_id, version);
+       this->out_debug_log(_T("Load State: MB61VH010 : id=%d ver=%d\n"), this_device_id, version);
        if(this_device_id != state_fio->FgetInt32()) return false;
        if(version >= 1) {
                command_reg = state_fio->FgetUint8();
index 228105d..ca8c8d6 100644 (file)
@@ -82,7 +82,7 @@ VM::VM(EMU* parent_emu) : emu(parent_emu)
        for(int i = 0; i < 7; i++) {
                if(FILEIO::IsFileExisting(create_local_path(_T("SCSI%d.DAT"), i))) {
                        scsi_hdd[i] = new SCSI_HDD(this, emu);
-                       scsi_hdd[i]->set_device_name("SCSI Hard Disk Drive #%d", i + 1);
+                       scsi_hdd[i]->set_device_name(_T("SCSI Hard Disk Drive #%d"), i + 1);
                        scsi_hdd[i]->scsi_id = i;
                        scsi_hdd[i]->set_context_interface(scsi_host);
                        scsi_host->set_context_target(scsi_hdd[i]);
index 04cdab6..47543d6 100644 (file)
@@ -149,7 +149,7 @@ VM::VM(EMU* parent_emu) : emu(parent_emu)
        for(int i = 0; i < 7; i++) {
                if(FILEIO::IsFileExisting(create_local_path(_T("SCSI%d.DAT"), i))) {
                        scsi_hdd[i] = new SCSI_HDD(this, emu);
-                       scsi_hdd[i]->set_device_name("SCSI Hard Disk Drive #%d", i + 1);
+                       scsi_hdd[i]->set_device_name(_T("SCSI Hard Disk Drive #%d"), i + 1);
                        scsi_hdd[i]->scsi_id = i;
                        scsi_hdd[i]->set_context_interface(scsi_host);
                        scsi_host->set_context_target(scsi_hdd[i]);
index d5ad1b1..f357c3a 100644 (file)
@@ -38,8 +38,8 @@
 #define CPU_EXECUTE_CALL(name)                 CPU_EXECUTE_NAME(name)(cpustate)
 
 #define CPU_DISASSEMBLE_NAME(name)             cpu_disassemble_##name
-#define CPU_DISASSEMBLE(name)                  int CPU_DISASSEMBLE_NAME(name)(_TCHAR *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram)
-#define CPU_DISASSEMBLE_CALL(name)             CPU_DISASSEMBLE_NAME(name)(buffer, pc, oprom, oprom)
+#define CPU_DISASSEMBLE(name)                  int CPU_DISASSEMBLE_NAME(name)(_TCHAR *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, symbol_t *first_symbol)
+#define CPU_DISASSEMBLE_CALL(name)             CPU_DISASSEMBLE_NAME(name)(buffer, pc, oprom, oprom, d_debugger->first_symbol)
 
 #define READ8_HANDLER(name)                    UINT8 name(h6280_Regs *cpustate, offs_t offset)
 #define WRITE8_HANDLER(name)                   void name(h6280_Regs *cpustate, offs_t offset, UINT8 data)
index 4e923c5..68bd576 100644 (file)
@@ -1639,7 +1639,7 @@ int I8080::debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
        switch(ops[ptr++])
        {
                case 0x00: my_stprintf_s(buffer, buffer_len, _T("nop")); break;
-               case 0x01: my_stprintf_s(buffer, buffer_len, _T("lxi  b,$%04x"), ops[ptr] | (ops[ptr + 1] << 8)); ptr += 2; break;
+               case 0x01: my_stprintf_s(buffer, buffer_len, _T("lxi  b,%s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
                case 0x02: my_stprintf_s(buffer, buffer_len, _T("stax b")); break;
                case 0x03: my_stprintf_s(buffer, buffer_len, _T("inx  b")); break;
                case 0x04: my_stprintf_s(buffer, buffer_len, _T("inr  b")); break;
@@ -1655,7 +1655,7 @@ int I8080::debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
                case 0x0e: my_stprintf_s(buffer, buffer_len, _T("mvi  c,$%02x"), ops[ptr++]); break;
                case 0x0f: my_stprintf_s(buffer, buffer_len, _T("rrc")); break;
                case 0x10: my_stprintf_s(buffer, buffer_len, _T("asrh (*)")); break;
-               case 0x11: my_stprintf_s(buffer, buffer_len, _T("lxi  d,$%04x"), ops[ptr] | (ops[ptr + 1] << 8)); ptr += 2; break;
+               case 0x11: my_stprintf_s(buffer, buffer_len, _T("lxi  d,%s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
                case 0x12: my_stprintf_s(buffer, buffer_len, _T("stax d")); break;
                case 0x13: my_stprintf_s(buffer, buffer_len, _T("inx  d")); break;
                case 0x14: my_stprintf_s(buffer, buffer_len, _T("inr  d")); break;
@@ -1671,8 +1671,8 @@ int I8080::debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
                case 0x1e: my_stprintf_s(buffer, buffer_len, _T("mvi  e,$%02x"), ops[ptr++]); break;
                case 0x1f: my_stprintf_s(buffer, buffer_len, _T("rar")); break;
                case 0x20: my_stprintf_s(buffer, buffer_len, _T("rim")); break;
-               case 0x21: my_stprintf_s(buffer, buffer_len, _T("lxi  h,$%04x"), ops[ptr] | (ops[ptr + 1] << 8)); ptr += 2; break;
-               case 0x22: my_stprintf_s(buffer, buffer_len, _T("shld $%04x"), ops[ptr] | (ops[ptr + 1] << 8)); ptr += 2; break;
+               case 0x21: my_stprintf_s(buffer, buffer_len, _T("lxi  h,%s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
+               case 0x22: my_stprintf_s(buffer, buffer_len, _T("shld %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
                case 0x23: my_stprintf_s(buffer, buffer_len, _T("inx  h")); break;
                case 0x24: my_stprintf_s(buffer, buffer_len, _T("inr  h")); break;
                case 0x25: my_stprintf_s(buffer, buffer_len, _T("dcr  h")); break;
@@ -1680,15 +1680,15 @@ int I8080::debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
                case 0x27: my_stprintf_s(buffer, buffer_len, _T("daa")); break;
                case 0x28: my_stprintf_s(buffer, buffer_len, _T("ldeh $%02x (*)"), ops[ptr++]); break;
                case 0x29: my_stprintf_s(buffer, buffer_len, _T("dad  h")); break;
-               case 0x2a: my_stprintf_s(buffer, buffer_len, _T("lhld $%04x"), ops[ptr] | (ops[ptr + 1] << 8)); ptr += 2; break;
+               case 0x2a: my_stprintf_s(buffer, buffer_len, _T("lhld %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
                case 0x2b: my_stprintf_s(buffer, buffer_len, _T("dcx  h")); break;
                case 0x2c: my_stprintf_s(buffer, buffer_len, _T("inr  l")); break;
                case 0x2d: my_stprintf_s(buffer, buffer_len, _T("dcr  l")); break;
                case 0x2e: my_stprintf_s(buffer, buffer_len, _T("mvi  l,$%02x"), ops[ptr++]); break;
                case 0x2f: my_stprintf_s(buffer, buffer_len, _T("cma")); break;
                case 0x30: my_stprintf_s(buffer, buffer_len, _T("sim")); break;
-               case 0x31: my_stprintf_s(buffer, buffer_len, _T("lxi  sp,$%04x"), ops[ptr] | (ops[ptr + 1] << 8)); ptr += 2; break;
-               case 0x32: my_stprintf_s(buffer, buffer_len, _T("stax $%04x"), ops[ptr] | (ops[ptr + 1] << 8)); ptr += 2; break;
+               case 0x31: my_stprintf_s(buffer, buffer_len, _T("lxi  sp,%s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
+               case 0x32: my_stprintf_s(buffer, buffer_len, _T("stax %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
                case 0x33: my_stprintf_s(buffer, buffer_len, _T("inx  sp")); break;
                case 0x34: my_stprintf_s(buffer, buffer_len, _T("inr  m")); break;
                case 0x35: my_stprintf_s(buffer, buffer_len, _T("dcr  m")); break;
@@ -1696,7 +1696,7 @@ int I8080::debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
                case 0x37: my_stprintf_s(buffer, buffer_len, _T("stc")); break;
                case 0x38: my_stprintf_s(buffer, buffer_len, _T("ldes $%02x"), ops[ptr++]); break;
                case 0x39: my_stprintf_s(buffer, buffer_len, _T("dad sp")); break;
-               case 0x3a: my_stprintf_s(buffer, buffer_len, _T("ldax $%04x"), ops[ptr] | (ops[ptr + 1] << 8)); ptr += 2; break;
+               case 0x3a: my_stprintf_s(buffer, buffer_len, _T("ldax %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
                case 0x3b: my_stprintf_s(buffer, buffer_len, _T("dcx  sp")); break;
                case 0x3c: my_stprintf_s(buffer, buffer_len, _T("inr  a")); break;
                case 0x3d: my_stprintf_s(buffer, buffer_len, _T("dcr  a")); break;
@@ -1832,66 +1832,66 @@ int I8080::debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
                case 0xbf: my_stprintf_s(buffer, buffer_len, _T("cmp  a")); break;
                case 0xc0: my_stprintf_s(buffer, buffer_len, _T("rnz")); break;
                case 0xc1: my_stprintf_s(buffer, buffer_len, _T("pop  b")); break;
-               case 0xc2: my_stprintf_s(buffer, buffer_len, _T("jnz  $%04x"), ops[ptr] | (ops[ptr + 1] << 8)); ptr += 2; break;
-               case 0xc3: my_stprintf_s(buffer, buffer_len, _T("jmp  $%04x"), ops[ptr] | (ops[ptr + 1] << 8)); ptr += 2; break;
-               case 0xc4: my_stprintf_s(buffer, buffer_len, _T("cnz  $%04x"), ops[ptr] | (ops[ptr + 1] << 8)); ptr += 2; break;
+               case 0xc2: my_stprintf_s(buffer, buffer_len, _T("jnz  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
+               case 0xc3: my_stprintf_s(buffer, buffer_len, _T("jmp  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
+               case 0xc4: my_stprintf_s(buffer, buffer_len, _T("cnz  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
                case 0xc5: my_stprintf_s(buffer, buffer_len, _T("push b")); break;
                case 0xc6: my_stprintf_s(buffer, buffer_len, _T("adi  $%02x"), ops[ptr++]); break;
                case 0xc7: my_stprintf_s(buffer, buffer_len, _T("rst  0")); break;
                case 0xc8: my_stprintf_s(buffer, buffer_len, _T("rz")); break;
                case 0xc9: my_stprintf_s(buffer, buffer_len, _T("ret")); break;
-               case 0xca: my_stprintf_s(buffer, buffer_len, _T("jz   $%04x"), ops[ptr] | (ops[ptr + 1] << 8)); ptr += 2; break;
+               case 0xca: my_stprintf_s(buffer, buffer_len, _T("jz   %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
                case 0xcb: my_stprintf_s(buffer, buffer_len, _T("rstv 8 (*)")); break;
-               case 0xcc: my_stprintf_s(buffer, buffer_len, _T("cz   $%04x"), ops[ptr] | (ops[ptr + 1] << 8)); ptr += 2; break;
-               case 0xcd: my_stprintf_s(buffer, buffer_len, _T("call $%04x"), ops[ptr] | (ops[ptr + 1] << 8)); ptr += 2; break;
+               case 0xcc: my_stprintf_s(buffer, buffer_len, _T("cz   %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
+               case 0xcd: my_stprintf_s(buffer, buffer_len, _T("call %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
                case 0xce: my_stprintf_s(buffer, buffer_len, _T("aci  $%02x"), ops[ptr++]); break;
                case 0xcf: my_stprintf_s(buffer, buffer_len, _T("rst  1")); break;
                case 0xd0: my_stprintf_s(buffer, buffer_len, _T("rnc")); break;
                case 0xd1: my_stprintf_s(buffer, buffer_len, _T("pop  d")); break;
-               case 0xd2: my_stprintf_s(buffer, buffer_len, _T("jnc  $%04x"), ops[ptr] | (ops[ptr + 1] << 8)); ptr += 2; break;
+               case 0xd2: my_stprintf_s(buffer, buffer_len, _T("jnc  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
                case 0xd3: my_stprintf_s(buffer, buffer_len, _T("out  $%02x"), ops[ptr++]); break;
-               case 0xd4: my_stprintf_s(buffer, buffer_len, _T("cnc  $%04x"), ops[ptr] | (ops[ptr + 1] << 8)); ptr += 2; break;
+               case 0xd4: my_stprintf_s(buffer, buffer_len, _T("cnc  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
                case 0xd5: my_stprintf_s(buffer, buffer_len, _T("push d")); break;
                case 0xd6: my_stprintf_s(buffer, buffer_len, _T("sui  $%02x"), ops[ptr++]); break;
                case 0xd7: my_stprintf_s(buffer, buffer_len, _T("rst  2")); break;
                case 0xd8: my_stprintf_s(buffer, buffer_len, _T("rc")); break;
                case 0xd9: my_stprintf_s(buffer, buffer_len, _T("shlx d (*)")); break;
-               case 0xda: my_stprintf_s(buffer, buffer_len, _T("jc   $%04x"), ops[ptr] | (ops[ptr + 1] << 8)); ptr += 2; break;
+               case 0xda: my_stprintf_s(buffer, buffer_len, _T("jc   %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
                case 0xdb: my_stprintf_s(buffer, buffer_len, _T("in   $%02x"), ops[ptr++]); break;
-               case 0xdc: my_stprintf_s(buffer, buffer_len, _T("cc   $%04x"), ops[ptr] | (ops[ptr + 1] << 8)); ptr += 2; break;
-               case 0xdd: my_stprintf_s(buffer, buffer_len, _T("jnx  $%04x (*)"), ops[ptr] | (ops[ptr + 1] << 8)); ptr += 2; break;
+               case 0xdc: my_stprintf_s(buffer, buffer_len, _T("cc   %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
+               case 0xdd: my_stprintf_s(buffer, buffer_len, _T("jnx  %s (*)"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
                case 0xde: my_stprintf_s(buffer, buffer_len, _T("sbi  $%02x"), ops[ptr++]); break;
                case 0xdf: my_stprintf_s(buffer, buffer_len, _T("rst  3")); break;
                case 0xe0: my_stprintf_s(buffer, buffer_len, _T("rpo")); break;
                case 0xe1: my_stprintf_s(buffer, buffer_len, _T("pop  h")); break;
-               case 0xe2: my_stprintf_s(buffer, buffer_len, _T("jpo  $%04x"), ops[ptr] | (ops[ptr + 1] << 8)); ptr += 2; break;
+               case 0xe2: my_stprintf_s(buffer, buffer_len, _T("jpo  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
                case 0xe3: my_stprintf_s(buffer, buffer_len, _T("xthl")); break;
-               case 0xe4: my_stprintf_s(buffer, buffer_len, _T("cpo  $%04x"), ops[ptr] | (ops[ptr + 1] << 8)); ptr += 2; break;
+               case 0xe4: my_stprintf_s(buffer, buffer_len, _T("cpo  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
                case 0xe5: my_stprintf_s(buffer, buffer_len, _T("push h")); break;
                case 0xe6: my_stprintf_s(buffer, buffer_len, _T("ani  $%02x"), ops[ptr++]); break;
                case 0xe7: my_stprintf_s(buffer, buffer_len, _T("rst  4")); break;
                case 0xe8: my_stprintf_s(buffer, buffer_len, _T("rpe")); break;
                case 0xe9: my_stprintf_s(buffer, buffer_len, _T("PChl")); break;
-               case 0xea: my_stprintf_s(buffer, buffer_len, _T("jpe  $%04x"), ops[ptr] | (ops[ptr + 1] << 8)); ptr += 2; break;
+               case 0xea: my_stprintf_s(buffer, buffer_len, _T("jpe  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
                case 0xeb: my_stprintf_s(buffer, buffer_len, _T("xchg")); break;
-               case 0xec: my_stprintf_s(buffer, buffer_len, _T("cpe  $%04x"), ops[ptr] | (ops[ptr + 1] << 8)); ptr += 2; break;
+               case 0xec: my_stprintf_s(buffer, buffer_len, _T("cpe  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
                case 0xed: my_stprintf_s(buffer, buffer_len, _T("lhlx d (*)")); break;
                case 0xee: my_stprintf_s(buffer, buffer_len, _T("xri  $%02x"), ops[ptr++]); break;
                case 0xef: my_stprintf_s(buffer, buffer_len, _T("rst  5")); break;
                case 0xf0: my_stprintf_s(buffer, buffer_len, _T("rp")); break;
                case 0xf1: my_stprintf_s(buffer, buffer_len, _T("pop  a")); break;
-               case 0xf2: my_stprintf_s(buffer, buffer_len, _T("jp   $%04x"), ops[ptr] | (ops[ptr + 1] << 8)); ptr += 2; break;
+               case 0xf2: my_stprintf_s(buffer, buffer_len, _T("jp   %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
                case 0xf3: my_stprintf_s(buffer, buffer_len, _T("di")); break;
-               case 0xf4: my_stprintf_s(buffer, buffer_len, _T("cp   $%04x"), ops[ptr] | (ops[ptr + 1] << 8)); ptr += 2; break;
+               case 0xf4: my_stprintf_s(buffer, buffer_len, _T("cp   %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
                case 0xf5: my_stprintf_s(buffer, buffer_len, _T("push a")); break;
                case 0xf6: my_stprintf_s(buffer, buffer_len, _T("ori  $%02x"), ops[ptr++]); break;
                case 0xf7: my_stprintf_s(buffer, buffer_len, _T("rst  6")); break;
                case 0xf8: my_stprintf_s(buffer, buffer_len, _T("rm")); break;
                case 0xf9: my_stprintf_s(buffer, buffer_len, _T("sphl")); break;
-               case 0xfa: my_stprintf_s(buffer, buffer_len, _T("jm   $%04x"), ops[ptr] | (ops[ptr + 1] << 8)); ptr += 2; break;
+               case 0xfa: my_stprintf_s(buffer, buffer_len, _T("jm   %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
                case 0xfb: my_stprintf_s(buffer, buffer_len, _T("ei")); break;
-               case 0xfc: my_stprintf_s(buffer, buffer_len, _T("cm   $%04x"), ops[ptr] | (ops[ptr + 1] << 8)); ptr += 2; break;
-               case 0xfd: my_stprintf_s(buffer, buffer_len, _T("jx   $%04x (*)"), ops[ptr] | (ops[ptr + 1] << 8)); ptr += 2; break;
+               case 0xfc: my_stprintf_s(buffer, buffer_len, _T("cm   %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
+               case 0xfd: my_stprintf_s(buffer, buffer_len, _T("jx   %s (*)"), get_value_or_symbol(d_debugger->first_symbol, _T("$%04x"), ops[ptr] | (ops[ptr + 1] << 8))); ptr += 2; break;
                case 0xfe: my_stprintf_s(buffer, buffer_len, _T("cpi  $%02x"), ops[ptr++]); break;
                case 0xff: my_stprintf_s(buffer, buffer_len, _T("rst  7")); break;
        }
index d68874e..66806b5 100644 (file)
@@ -248,3 +248,297 @@ int MCS48::run(int icount)
        return base_icount - cpustate->icount;
 }
 
+
+int MCS48::debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
+{
+       mcs48_state *cpustate = (mcs48_state *)opaque;
+       uint32_t ptr = pc;
+       
+       #define upi41 false
+#ifdef USE_DEBUGGER
+       switch (program_r(ptr++))
+       {
+               case 0x00:      my_stprintf_s(buffer, buffer_len, _T("nop"));                                                                                                       break;
+               case 0x02:  if (!upi41)
+                               my_stprintf_s(buffer, buffer_len, _T("out  bus,a"));
+                           else
+                               my_stprintf_s(buffer, buffer_len, _T("out  dbb,a"));                                                                                                break;
+               case 0x03:      my_stprintf_s(buffer, buffer_len, _T("add  a,#$%02X"), program_r(ptr++));                                                                           break;
+               case 0x04:      my_stprintf_s(buffer, buffer_len, _T("jmp  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), 0x000 | program_r(ptr++)));             break;
+               case 0x05:      my_stprintf_s(buffer, buffer_len, _T("en   i"));                                                                                                    break;
+               case 0x07:      my_stprintf_s(buffer, buffer_len, _T("dec  a"));                                                                                                    break;
+               case 0x08:  if (!upi41)
+                               my_stprintf_s(buffer, buffer_len, _T("in   a,bus"));
+                           else
+                               my_stprintf_s(buffer, buffer_len, _T("illegal"));                                                                                                   break;
+               case 0x09:      my_stprintf_s(buffer, buffer_len, _T("in   a,p1"));                                                                                                 break;
+               case 0x0a:      my_stprintf_s(buffer, buffer_len, _T("in   a,p2"));                                                                                                 break;
+               case 0x0c:      my_stprintf_s(buffer, buffer_len, _T("movd a,p4"));                                                                                                 break;
+               case 0x0d:      my_stprintf_s(buffer, buffer_len, _T("movd a,p5"));                                                                                                 break;
+               case 0x0e:      my_stprintf_s(buffer, buffer_len, _T("movd a,p6"));                                                                                                 break;
+               case 0x0f:      my_stprintf_s(buffer, buffer_len, _T("movd a,p7"));                                                                                                 break;
+               case 0x10:      my_stprintf_s(buffer, buffer_len, _T("inc  @r0"));                                                                                                  break;
+               case 0x11:      my_stprintf_s(buffer, buffer_len, _T("inc  @r1"));                                                                                                  break;
+               case 0x12:      my_stprintf_s(buffer, buffer_len, _T("jb0  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));      break;
+               case 0x13:      my_stprintf_s(buffer, buffer_len, _T("addc a,#$%02X"), program_r(ptr++));                                                                           break;
+               case 0x14:      my_stprintf_s(buffer, buffer_len, _T("call %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), 0x000 | program_r(ptr++)));             break;
+               case 0x15:      my_stprintf_s(buffer, buffer_len, _T("dis  i"));                                                                                                    break;
+               case 0x16:      my_stprintf_s(buffer, buffer_len, _T("jtf  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));      break;
+               case 0x17:      my_stprintf_s(buffer, buffer_len, _T("inc  a"));                                                                                                    break;
+               case 0x18:      my_stprintf_s(buffer, buffer_len, _T("inc  r0"));                                                                                                   break;
+               case 0x19:      my_stprintf_s(buffer, buffer_len, _T("inc  r1"));                                                                                                   break;
+               case 0x1a:      my_stprintf_s(buffer, buffer_len, _T("inc  r2"));                                                                                                   break;
+               case 0x1b:      my_stprintf_s(buffer, buffer_len, _T("inc  r3"));                                                                                                   break;
+               case 0x1c:      my_stprintf_s(buffer, buffer_len, _T("inc  r4"));                                                                                                   break;
+               case 0x1d:      my_stprintf_s(buffer, buffer_len, _T("inc  r5"));                                                                                                   break;
+               case 0x1e:      my_stprintf_s(buffer, buffer_len, _T("inc  r6"));                                                                                                   break;
+               case 0x1f:      my_stprintf_s(buffer, buffer_len, _T("inc  r7"));                                                                                                   break;
+               case 0x20:      my_stprintf_s(buffer, buffer_len, _T("xch  a,@r0"));                                                                                                break;
+               case 0x21:      my_stprintf_s(buffer, buffer_len, _T("xch  a,@r1"));                                                                                                break;
+               case 0x22:  if (!upi41)
+                               my_stprintf_s(buffer, buffer_len, _T("illegal"));
+                           else
+                               my_stprintf_s(buffer, buffer_len, _T("in   a,dbb"));                                                                                                break;
+               case 0x23:      my_stprintf_s(buffer, buffer_len, _T("mov  a,#$%02X"), program_r(ptr++));                                                                           break;
+               case 0x24:      my_stprintf_s(buffer, buffer_len, _T("jmp  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), 0x100 | program_r(ptr++)));             break;
+               case 0x25:      my_stprintf_s(buffer, buffer_len, _T("en   tcnti"));                                                                                                break;
+               case 0x26:      my_stprintf_s(buffer, buffer_len, _T("jnt0 %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));      break;
+               case 0x27:      my_stprintf_s(buffer, buffer_len, _T("clr  a"));                                                                                                    break;
+               case 0x28:      my_stprintf_s(buffer, buffer_len, _T("xch  a,r0"));                                                                                                 break;
+               case 0x29:      my_stprintf_s(buffer, buffer_len, _T("xch  a,r1"));                                                                                                 break;
+               case 0x2a:      my_stprintf_s(buffer, buffer_len, _T("xch  a,r2"));                                                                                                 break;
+               case 0x2b:      my_stprintf_s(buffer, buffer_len, _T("xch  a,r3"));                                                                                                 break;
+               case 0x2c:      my_stprintf_s(buffer, buffer_len, _T("xch  a,r4"));                                                                                                 break;
+               case 0x2d:      my_stprintf_s(buffer, buffer_len, _T("xch  a,r5"));                                                                                                 break;
+               case 0x2e:      my_stprintf_s(buffer, buffer_len, _T("xch  a,r6"));                                                                                                 break;
+               case 0x2f:      my_stprintf_s(buffer, buffer_len, _T("xch  a,r7"));                                                                                                 break;
+               case 0x30:      my_stprintf_s(buffer, buffer_len, _T("xchd a,@r0"));                                                                                                break;
+               case 0x31:      my_stprintf_s(buffer, buffer_len, _T("xchd a,@r1"));                                                                                                break;
+               case 0x32:      my_stprintf_s(buffer, buffer_len, _T("jb1  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));      break;
+               case 0x34:      my_stprintf_s(buffer, buffer_len, _T("call %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), 0x100 | program_r(ptr++)));             break;
+               case 0x35:      my_stprintf_s(buffer, buffer_len, _T("dis  tcnti"));                                                                                                break;
+               case 0x36:      my_stprintf_s(buffer, buffer_len, _T("jt0  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));      break;
+               case 0x37:      my_stprintf_s(buffer, buffer_len, _T("cpl  a"));                                                                                                    break;
+               case 0x39:      my_stprintf_s(buffer, buffer_len, _T("outl p1,a"));                                                                                                 break;
+               case 0x3a:      my_stprintf_s(buffer, buffer_len, _T("outl p2,a"));                                                                                                 break;
+               case 0x3c:      my_stprintf_s(buffer, buffer_len, _T("movd p4,a"));                                                                                                 break;
+               case 0x3d:      my_stprintf_s(buffer, buffer_len, _T("movd p5,a"));                                                                                                 break;
+               case 0x3e:      my_stprintf_s(buffer, buffer_len, _T("movd p6,a"));                                                                                                 break;
+               case 0x3f:      my_stprintf_s(buffer, buffer_len, _T("movd p7,a"));                                                                                                 break;
+               case 0x40:      my_stprintf_s(buffer, buffer_len, _T("orl  a,@r0"));                                                                                                break;
+               case 0x41:      my_stprintf_s(buffer, buffer_len, _T("orl  a,@r1"));                                                                                                break;
+               case 0x42:      my_stprintf_s(buffer, buffer_len, _T("mov  a,t"));                                                                                                  break;
+               case 0x43:      my_stprintf_s(buffer, buffer_len, _T("orl  a,#$%02X"), program_r(ptr++));                                                                           break;
+               case 0x44:      my_stprintf_s(buffer, buffer_len, _T("jmp  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), 0x200 | program_r(ptr++)));             break;
+               case 0x45:      my_stprintf_s(buffer, buffer_len, _T("strt cnt"));                                                                                                  break;
+               case 0x46:      my_stprintf_s(buffer, buffer_len, _T("jnt1 %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));      break;
+               case 0x47:      my_stprintf_s(buffer, buffer_len, _T("swap a"));                                                                                                    break;
+               case 0x48:      my_stprintf_s(buffer, buffer_len, _T("orl  a,r0"));                                                                                                 break;
+               case 0x49:      my_stprintf_s(buffer, buffer_len, _T("orl  a,r1"));                                                                                                 break;
+               case 0x4a:      my_stprintf_s(buffer, buffer_len, _T("orl  a,r2"));                                                                                                 break;
+               case 0x4b:      my_stprintf_s(buffer, buffer_len, _T("orl  a,r3"));                                                                                                 break;
+               case 0x4c:      my_stprintf_s(buffer, buffer_len, _T("orl  a,r4"));                                                                                                 break;
+               case 0x4d:      my_stprintf_s(buffer, buffer_len, _T("orl  a,r5"));                                                                                                 break;
+               case 0x4e:      my_stprintf_s(buffer, buffer_len, _T("orl  a,r6"));                                                                                                 break;
+               case 0x4f:      my_stprintf_s(buffer, buffer_len, _T("orl  a,r7"));                                                                                                 break;
+               case 0x50:      my_stprintf_s(buffer, buffer_len, _T("anl  a,@r0"));                                                                                                break;
+               case 0x51:      my_stprintf_s(buffer, buffer_len, _T("anl  a,@r1"));                                                                                                break;
+               case 0x52:      my_stprintf_s(buffer, buffer_len, _T("jb2  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));      break;
+               case 0x53:      my_stprintf_s(buffer, buffer_len, _T("anl  a,#$%02X"), program_r(ptr++));                                                                           break;
+               case 0x54:      my_stprintf_s(buffer, buffer_len, _T("call %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), 0x200 | program_r(ptr++)));             break;
+               case 0x55:      my_stprintf_s(buffer, buffer_len, _T("strt t"));                                                                                                    break;
+               case 0x56:      my_stprintf_s(buffer, buffer_len, _T("jt1  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));      break;
+               case 0x57:      my_stprintf_s(buffer, buffer_len, _T("da   a"));                                                                                                    break;
+               case 0x58:      my_stprintf_s(buffer, buffer_len, _T("anl  a,r0"));                                                                                                 break;
+               case 0x59:      my_stprintf_s(buffer, buffer_len, _T("anl  a,r1"));                                                                                                 break;
+               case 0x5a:      my_stprintf_s(buffer, buffer_len, _T("anl  a,r2"));                                                                                                 break;
+               case 0x5b:      my_stprintf_s(buffer, buffer_len, _T("anl  a,r3"));                                                                                                 break;
+               case 0x5c:      my_stprintf_s(buffer, buffer_len, _T("anl  a,r4"));                                                                                                 break;
+               case 0x5d:      my_stprintf_s(buffer, buffer_len, _T("anl  a,r5"));                                                                                                 break;
+               case 0x5e:      my_stprintf_s(buffer, buffer_len, _T("anl  a,r6"));                                                                                                 break;
+               case 0x5f:      my_stprintf_s(buffer, buffer_len, _T("anl  a,r7"));                                                                                                 break;
+               case 0x60:      my_stprintf_s(buffer, buffer_len, _T("add  a,@r0"));                                                                                                break;
+               case 0x61:      my_stprintf_s(buffer, buffer_len, _T("add  a,@r1"));                                                                                                break;
+               case 0x62:      my_stprintf_s(buffer, buffer_len, _T("mov  t,a"));                                                                                                  break;
+               case 0x64:      my_stprintf_s(buffer, buffer_len, _T("jmp  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), 0x300 | program_r(ptr++)));             break;
+               case 0x65:      my_stprintf_s(buffer, buffer_len, _T("stop tcnt"));                                                                                                 break;
+               case 0x67:      my_stprintf_s(buffer, buffer_len, _T("rrc  a"));                                                                                                    break;
+               case 0x68:      my_stprintf_s(buffer, buffer_len, _T("add  a,r0"));                                                                                                 break;
+               case 0x69:      my_stprintf_s(buffer, buffer_len, _T("add  a,r1"));                                                                                                 break;
+               case 0x6a:      my_stprintf_s(buffer, buffer_len, _T("add  a,r2"));                                                                                                 break;
+               case 0x6b:      my_stprintf_s(buffer, buffer_len, _T("add  a,r3"));                                                                                                 break;
+               case 0x6c:      my_stprintf_s(buffer, buffer_len, _T("add  a,r4"));                                                                                                 break;
+               case 0x6d:      my_stprintf_s(buffer, buffer_len, _T("add  a,r5"));                                                                                                 break;
+               case 0x6e:      my_stprintf_s(buffer, buffer_len, _T("add  a,r6"));                                                                                                 break;
+               case 0x6f:      my_stprintf_s(buffer, buffer_len, _T("add  a,r7"));                                                                                                 break;
+               case 0x70:      my_stprintf_s(buffer, buffer_len, _T("addc a,@r0"));                                                                                                break;
+               case 0x71:      my_stprintf_s(buffer, buffer_len, _T("addc a,@r1"));                                                                                                break;
+               case 0x72:      my_stprintf_s(buffer, buffer_len, _T("jb3  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));      break;
+               case 0x74:      my_stprintf_s(buffer, buffer_len, _T("call %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), 0x300 | program_r(ptr++)));             break;
+               case 0x75:  if (!upi41)
+                               my_stprintf_s(buffer, buffer_len, _T("ent0 clk"));
+                           else
+                               my_stprintf_s(buffer, buffer_len, _T("illegal"));                                                                                                   break;
+               case 0x76:      my_stprintf_s(buffer, buffer_len, _T("jf1  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));      break;
+               case 0x77:      my_stprintf_s(buffer, buffer_len, _T("rr   a"));                                                                                                    break;
+               case 0x78:      my_stprintf_s(buffer, buffer_len, _T("addc a,r0"));                                                                                                 break;
+               case 0x79:      my_stprintf_s(buffer, buffer_len, _T("addc a,r1"));                                                                                                 break;
+               case 0x7a:      my_stprintf_s(buffer, buffer_len, _T("addc a,r2"));                                                                                                 break;
+               case 0x7b:      my_stprintf_s(buffer, buffer_len, _T("addc a,r3"));                                                                                                 break;
+               case 0x7c:      my_stprintf_s(buffer, buffer_len, _T("addc a,r4"));                                                                                                 break;
+               case 0x7d:      my_stprintf_s(buffer, buffer_len, _T("addc a,r5"));                                                                                                 break;
+               case 0x7e:      my_stprintf_s(buffer, buffer_len, _T("addc a,r6"));                                                                                                 break;
+               case 0x7f:      my_stprintf_s(buffer, buffer_len, _T("addc a,r7"));                                                                                                 break;
+               case 0x80:  if (!upi41)
+                               my_stprintf_s(buffer, buffer_len, _T("movx a,@r0"));
+                           else
+                               my_stprintf_s(buffer, buffer_len, _T("illegal"));                                                                                                   break;
+               case 0x81:  if (!upi41)
+                               my_stprintf_s(buffer, buffer_len, _T("movx a,@r1"));
+                           else
+                               my_stprintf_s(buffer, buffer_len, _T("illegal"));                                                                                                   break;
+               case 0x83:      my_stprintf_s(buffer, buffer_len, _T("ret"));                                                                                                       break;
+               case 0x84:      my_stprintf_s(buffer, buffer_len, _T("jmp  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), 0x400 | program_r(ptr++)));             break;
+               case 0x85:      my_stprintf_s(buffer, buffer_len, _T("clr  f0"));                                                                                                   break;
+               case 0x86:  if (!upi41)
+                               my_stprintf_s(buffer, buffer_len, _T("jni  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));
+                           else
+                               my_stprintf_s(buffer, buffer_len, _T("jobf %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));      break;
+               case 0x88:  if (!upi41)
+                               my_stprintf_s(buffer, buffer_len, _T("orl  bus,#$%02X"), program_r(ptr++));
+                           else
+                               my_stprintf_s(buffer, buffer_len, _T("illegal"));                                                                                                   break;
+               case 0x89:      my_stprintf_s(buffer, buffer_len, _T("orl  p1,#$%02X"), program_r(ptr++));                                                                          break;
+               case 0x8a:      my_stprintf_s(buffer, buffer_len, _T("orl  p2,#$%02X"), program_r(ptr++));                                                                          break;
+               case 0x8c:      my_stprintf_s(buffer, buffer_len, _T("orld p4,a"));                                                                                                 break;
+               case 0x8d:      my_stprintf_s(buffer, buffer_len, _T("orld p5,a"));                                                                                                 break;
+               case 0x8e:      my_stprintf_s(buffer, buffer_len, _T("orld p6,a"));                                                                                                 break;
+               case 0x8f:      my_stprintf_s(buffer, buffer_len, _T("orld p7,a"));                                                                                                 break;
+               case 0x90:  if (!upi41)
+                               my_stprintf_s(buffer, buffer_len, _T("movx @r0,a"));
+                           else
+                               my_stprintf_s(buffer, buffer_len, _T("mov  sts,a"));                                                                                                break;
+               case 0x91:  if (!upi41)
+                               my_stprintf_s(buffer, buffer_len, _T("movx @r1,a"));
+                           else
+                               my_stprintf_s(buffer, buffer_len, _T("illegal"));                                                                                                   break;
+               case 0x92:      my_stprintf_s(buffer, buffer_len, _T("jb4  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));      break;
+               case 0x93:      my_stprintf_s(buffer, buffer_len, _T("retr"));                                                                                                      break;
+               case 0x94:      my_stprintf_s(buffer, buffer_len, _T("call %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), 0x400 | program_r(ptr++)));             break;
+               case 0x95:      my_stprintf_s(buffer, buffer_len, _T("cpl  f0"));                                                                                                   break;
+               case 0x96:      my_stprintf_s(buffer, buffer_len, _T("jnz  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));      break;
+               case 0x97:      my_stprintf_s(buffer, buffer_len, _T("clr  c"));                                                                                                    break;
+               case 0x98:  if (!upi41)
+                               my_stprintf_s(buffer, buffer_len, _T("anl  bus,#$%02X"), program_r(ptr++));
+                           else
+                               my_stprintf_s(buffer, buffer_len, _T("illegal"));                                                                                                   break;
+               case 0x99:      my_stprintf_s(buffer, buffer_len, _T("anl  p1,#$%02X"), program_r(ptr++));                                                                          break;
+               case 0x9a:      my_stprintf_s(buffer, buffer_len, _T("anl  p2,#$%02X"), program_r(ptr++));                                                                          break;
+               case 0x9c:      my_stprintf_s(buffer, buffer_len, _T("anld p4,a"));                                                                                                 break;
+               case 0x9d:      my_stprintf_s(buffer, buffer_len, _T("anld p5,a"));                                                                                                 break;
+               case 0x9e:      my_stprintf_s(buffer, buffer_len, _T("anld p6,a"));                                                                                                 break;
+               case 0x9f:      my_stprintf_s(buffer, buffer_len, _T("anld p7,a"));                                                                                                 break;
+               case 0xa0:      my_stprintf_s(buffer, buffer_len, _T("mov  @r0,a"));                                                                                                break;
+               case 0xa1:      my_stprintf_s(buffer, buffer_len, _T("mov  @r1,a"));                                                                                                break;
+               case 0xa3:      my_stprintf_s(buffer, buffer_len, _T("movp a,@a"));                                                                                                 break;
+               case 0xa4:      my_stprintf_s(buffer, buffer_len, _T("jmp  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), 0x500 | program_r(ptr++)));             break;
+               case 0xa5:      my_stprintf_s(buffer, buffer_len, _T("clr  f1"));                                                                                                   break;
+               case 0xa7:      my_stprintf_s(buffer, buffer_len, _T("cpl  c"));                                                                                                    break;
+               case 0xa8:      my_stprintf_s(buffer, buffer_len, _T("mov  r0,a"));                                                                                                 break;
+               case 0xa9:      my_stprintf_s(buffer, buffer_len, _T("mov  r1,a"));                                                                                                 break;
+               case 0xaa:      my_stprintf_s(buffer, buffer_len, _T("mov  r2,a"));                                                                                                 break;
+               case 0xab:      my_stprintf_s(buffer, buffer_len, _T("mov  r3,a"));                                                                                                 break;
+               case 0xac:      my_stprintf_s(buffer, buffer_len, _T("mov  r4,a"));                                                                                                 break;
+               case 0xad:      my_stprintf_s(buffer, buffer_len, _T("mov  r5,a"));                                                                                                 break;
+               case 0xae:      my_stprintf_s(buffer, buffer_len, _T("mov  r6,a"));                                                                                                 break;
+               case 0xaf:      my_stprintf_s(buffer, buffer_len, _T("mov  r7,a"));                                                                                                 break;
+               case 0xb0:      my_stprintf_s(buffer, buffer_len, _T("mov  @r0,#$%02X"), program_r(ptr++));                                                                         break;
+               case 0xb1:      my_stprintf_s(buffer, buffer_len, _T("mov  @r1,#$%02X"), program_r(ptr++));                                                                         break;
+               case 0xb2:      my_stprintf_s(buffer, buffer_len, _T("jb5  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));      break;
+               case 0xb3:      my_stprintf_s(buffer, buffer_len, _T("jmpp @a"));                                                                                                   break;
+               case 0xb4:      my_stprintf_s(buffer, buffer_len, _T("call %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), 0x500 | program_r(ptr++)));             break;
+               case 0xb5:      my_stprintf_s(buffer, buffer_len, _T("cpl  f1"));                                                                                                   break;
+               case 0xb6:      my_stprintf_s(buffer, buffer_len, _T("jf0  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));      break;
+               case 0xb8:      my_stprintf_s(buffer, buffer_len, _T("mov  r0,#$%02X"), program_r(ptr++));                                                                          break;
+               case 0xb9:      my_stprintf_s(buffer, buffer_len, _T("mov  r1,#$%02X"), program_r(ptr++));                                                                          break;
+               case 0xba:      my_stprintf_s(buffer, buffer_len, _T("mov  r2,#$%02X"), program_r(ptr++));                                                                          break;
+               case 0xbb:      my_stprintf_s(buffer, buffer_len, _T("mov  r3,#$%02X"), program_r(ptr++));                                                                          break;
+               case 0xbc:      my_stprintf_s(buffer, buffer_len, _T("mov  r4,#$%02X"), program_r(ptr++));                                                                          break;
+               case 0xbd:      my_stprintf_s(buffer, buffer_len, _T("mov  r5,#$%02X"), program_r(ptr++));                                                                          break;
+               case 0xbe:      my_stprintf_s(buffer, buffer_len, _T("mov  r6,#$%02X"), program_r(ptr++));                                                                          break;
+               case 0xbf:      my_stprintf_s(buffer, buffer_len, _T("mov  r7,#$%02X"), program_r(ptr++));                                                                          break;
+               case 0xc4:      my_stprintf_s(buffer, buffer_len, _T("jmp  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), 0x600 | program_r(ptr++)));             break;
+               case 0xc5:      my_stprintf_s(buffer, buffer_len, _T("sel  rb0"));                                                                                                  break;
+               case 0xc6:      my_stprintf_s(buffer, buffer_len, _T("jz   %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));      break;
+               case 0xc7:      my_stprintf_s(buffer, buffer_len, _T("mov  a,psw"));                                                                                                break;
+               case 0xc8:      my_stprintf_s(buffer, buffer_len, _T("dec  r0"));                                                                                                   break;
+               case 0xc9:      my_stprintf_s(buffer, buffer_len, _T("dec  r1"));                                                                                                   break;
+               case 0xca:      my_stprintf_s(buffer, buffer_len, _T("dec  r2"));                                                                                                   break;
+               case 0xcb:      my_stprintf_s(buffer, buffer_len, _T("dec  r3"));                                                                                                   break;
+               case 0xcc:      my_stprintf_s(buffer, buffer_len, _T("dec  r4"));                                                                                                   break;
+               case 0xcd:      my_stprintf_s(buffer, buffer_len, _T("dec  r5"));                                                                                                   break;
+               case 0xce:      my_stprintf_s(buffer, buffer_len, _T("dec  r6"));                                                                                                   break;
+               case 0xcf:      my_stprintf_s(buffer, buffer_len, _T("dec  r7"));                                                                                                   break;
+               case 0xd0:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,@r0"));                                                                                                break;
+               case 0xd1:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,@r1"));                                                                                                break;
+               case 0xd2:      my_stprintf_s(buffer, buffer_len, _T("jb6  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));      break;
+               case 0xd3:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,#$%02X"), program_r(ptr++));                                                                           break;
+               case 0xd4:      my_stprintf_s(buffer, buffer_len, _T("call %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), 0x600 | program_r(ptr++)));             break;
+               case 0xd5:      my_stprintf_s(buffer, buffer_len, _T("sel  rb1"));                                                                                                  break;
+               case 0xd6:  if (!upi41)
+                               my_stprintf_s(buffer, buffer_len, _T("illegal"));
+                           else
+                               my_stprintf_s(buffer, buffer_len, _T("jnibf %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));     break;
+               case 0xd7:      my_stprintf_s(buffer, buffer_len, _T("mov  psw,a"));                                                                                                break;
+               case 0xd8:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,r0"));                                                                                                 break;
+               case 0xd9:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,r1"));                                                                                                 break;
+               case 0xda:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,r2"));                                                                                                 break;
+               case 0xdb:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,r3"));                                                                                                 break;
+               case 0xdc:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,r4"));                                                                                                 break;
+               case 0xdd:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,r5"));                                                                                                 break;
+               case 0xde:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,r6"));                                                                                                 break;
+               case 0xdf:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,r7"));                                                                                                 break;
+               case 0xe3:      my_stprintf_s(buffer, buffer_len, _T("movp3 a,@a"));                                                                                                break;
+               case 0xe4:      my_stprintf_s(buffer, buffer_len, _T("jmp  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), 0x700 | program_r(ptr++)));             break;
+               case 0xe5:  if (!upi41)
+                               my_stprintf_s(buffer, buffer_len, _T("sel  mb0"));
+                           else
+                               my_stprintf_s(buffer, buffer_len, _T("en   dma"));                                                                                                  break;
+               case 0xe6:      my_stprintf_s(buffer, buffer_len, _T("jnc  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));      break;
+               case 0xe7:      my_stprintf_s(buffer, buffer_len, _T("rl   a"));                                                                                                    break;
+               case 0xe8:      my_stprintf_s(buffer, buffer_len, _T("djnz r0,%s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));   break;
+               case 0xe9:      my_stprintf_s(buffer, buffer_len, _T("djnz r1,%s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));   break;
+               case 0xea:      my_stprintf_s(buffer, buffer_len, _T("djnz r2,%s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));   break;
+               case 0xeb:      my_stprintf_s(buffer, buffer_len, _T("djnz r3,%s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));   break;
+               case 0xec:      my_stprintf_s(buffer, buffer_len, _T("djnz r4,%s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));   break;
+               case 0xed:      my_stprintf_s(buffer, buffer_len, _T("djnz r5,%s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));   break;
+               case 0xee:      my_stprintf_s(buffer, buffer_len, _T("djnz r6,%s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));   break;
+               case 0xef:      my_stprintf_s(buffer, buffer_len, _T("djnz r7,%s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));   break;
+               case 0xf0:      my_stprintf_s(buffer, buffer_len, _T("mov  a,@r0"));                                                                                                break;
+               case 0xf1:      my_stprintf_s(buffer, buffer_len, _T("mov  a,@r1"));                                                                                                break;
+               case 0xf2:      my_stprintf_s(buffer, buffer_len, _T("jb7  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));      break;
+               case 0xf4:      my_stprintf_s(buffer, buffer_len, _T("call %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), 0x700 | program_r(ptr++)));             break;
+               case 0xf5:  if (!upi41)
+                               my_stprintf_s(buffer, buffer_len, _T("sel  mb1"));
+                           else
+                               my_stprintf_s(buffer, buffer_len, _T("en   flags"));                                                                                                break;
+               case 0xf6:      my_stprintf_s(buffer, buffer_len, _T("jc   %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));      break;
+               case 0xf7:      my_stprintf_s(buffer, buffer_len, _T("rlc  a"));                                                                                                    break;
+               case 0xf8:      my_stprintf_s(buffer, buffer_len, _T("mov  a,r0"));                                                                                                 break;
+               case 0xf9:      my_stprintf_s(buffer, buffer_len, _T("mov  a,r1"));                                                                                                 break;
+               case 0xfa:      my_stprintf_s(buffer, buffer_len, _T("mov  a,r2"));                                                                                                 break;
+               case 0xfb:      my_stprintf_s(buffer, buffer_len, _T("mov  a,r3"));                                                                                                 break;
+               case 0xfc:      my_stprintf_s(buffer, buffer_len, _T("mov  a,r4"));                                                                                                 break;
+               case 0xfd:      my_stprintf_s(buffer, buffer_len, _T("mov  a,r5"));                                                                                                 break;
+               case 0xfe:      my_stprintf_s(buffer, buffer_len, _T("mov  a,r6"));                                                                                                 break;
+               case 0xff:      my_stprintf_s(buffer, buffer_len, _T("mov  a,r7"));                                                                                                 break;
+               default:        my_stprintf_s(buffer, buffer_len, _T("illegal"));                                                                                                   break;
+
+       }
+#else
+       my_stprintf_s(buffer, buffer_len, _T("**OP $%02x"), program_r(ptr++));
+#endif 
+       return ptr - pc;
+}
+//#endif
+
index 4bfc236..2d69035 100644 (file)
@@ -65,7 +65,7 @@ public:
                return 0xff;
        }
 #endif
-       
+       int debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len);
        // unique functions
 #ifdef USE_DEBUGGER
        void set_context_debugger(DEBUGGER* device)
index 6b6c84e..8464dfd 100644 (file)
@@ -922,285 +922,7 @@ int MCS48_BASE::debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
        uint32_t ptr = pc;
        
        #define upi41 false
-       
-       switch (program_r(ptr++))
-       {
-               case 0x00:      my_stprintf_s(buffer, buffer_len, _T("nop"));                                                 break;
-               case 0x02:  if (!upi41)
-                               my_stprintf_s(buffer, buffer_len, _T("out  bus,a"));
-                           else
-                               my_stprintf_s(buffer, buffer_len, _T("out  dbb,a"));                                          break;
-               case 0x03:      my_stprintf_s(buffer, buffer_len, _T("add  a,#$%02X"), program_r(ptr++));                     break;
-               case 0x04:      my_stprintf_s(buffer, buffer_len, _T("jmp  $0%02X"), program_r(ptr++));                       break;
-               case 0x05:      my_stprintf_s(buffer, buffer_len, _T("en   i"));                                              break;
-               case 0x07:      my_stprintf_s(buffer, buffer_len, _T("dec  a"));                                              break;
-               case 0x08:  if (!upi41)
-                               my_stprintf_s(buffer, buffer_len, _T("in   a,bus"));
-                           else
-                               my_stprintf_s(buffer, buffer_len, _T("illegal"));                                             break;
-               case 0x09:      my_stprintf_s(buffer, buffer_len, _T("in   a,p1"));                                           break;
-               case 0x0a:      my_stprintf_s(buffer, buffer_len, _T("in   a,p2"));                                           break;
-               case 0x0c:      my_stprintf_s(buffer, buffer_len, _T("movd a,p4"));                                           break;
-               case 0x0d:      my_stprintf_s(buffer, buffer_len, _T("movd a,p5"));                                           break;
-               case 0x0e:      my_stprintf_s(buffer, buffer_len, _T("movd a,p6"));                                           break;
-               case 0x0f:      my_stprintf_s(buffer, buffer_len, _T("movd a,p7"));                                           break;
-               case 0x10:      my_stprintf_s(buffer, buffer_len, _T("inc  @r0"));                                            break;
-               case 0x11:      my_stprintf_s(buffer, buffer_len, _T("inc  @r1"));                                            break;
-               case 0x12:      my_stprintf_s(buffer, buffer_len, _T("jb0  $%03X"), (pc & 0xf00) | program_r(ptr++));         break;
-               case 0x13:      my_stprintf_s(buffer, buffer_len, _T("addc a,#$%02X"), program_r(ptr++));                     break;
-               case 0x14:      my_stprintf_s(buffer, buffer_len, _T("call $0%02X"), program_r(ptr++));                       break;
-               case 0x15:      my_stprintf_s(buffer, buffer_len, _T("dis  i"));                                              break;
-               case 0x16:      my_stprintf_s(buffer, buffer_len, _T("jtf  $%03X"), (pc & 0xf00) | program_r(ptr++));         break;
-               case 0x17:      my_stprintf_s(buffer, buffer_len, _T("inc  a"));                                              break;
-               case 0x18:      my_stprintf_s(buffer, buffer_len, _T("inc  r0"));                                             break;
-               case 0x19:      my_stprintf_s(buffer, buffer_len, _T("inc  r1"));                                             break;
-               case 0x1a:      my_stprintf_s(buffer, buffer_len, _T("inc  r2"));                                             break;
-               case 0x1b:      my_stprintf_s(buffer, buffer_len, _T("inc  r3"));                                             break;
-               case 0x1c:      my_stprintf_s(buffer, buffer_len, _T("inc  r4"));                                             break;
-               case 0x1d:      my_stprintf_s(buffer, buffer_len, _T("inc  r5"));                                             break;
-               case 0x1e:      my_stprintf_s(buffer, buffer_len, _T("inc  r6"));                                             break;
-               case 0x1f:      my_stprintf_s(buffer, buffer_len, _T("inc  r7"));                                             break;
-               case 0x20:      my_stprintf_s(buffer, buffer_len, _T("xch  a,@r0"));                                          break;
-               case 0x21:      my_stprintf_s(buffer, buffer_len, _T("xch  a,@r1"));                                          break;
-               case 0x22:  if (!upi41)
-                               my_stprintf_s(buffer, buffer_len, _T("illegal"));
-                           else
-                               my_stprintf_s(buffer, buffer_len, _T("in   a,dbb"));                                          break;
-               case 0x23:      my_stprintf_s(buffer, buffer_len, _T("mov  a,#$%02X"), program_r(ptr++));                     break;
-               case 0x24:      my_stprintf_s(buffer, buffer_len, _T("jmp  $1%02X"), program_r(ptr++));                       break;
-               case 0x25:      my_stprintf_s(buffer, buffer_len, _T("en   tcnti"));                                          break;
-               case 0x26:      my_stprintf_s(buffer, buffer_len, _T("jnt0 $%03X"), (pc & 0xf00) | program_r(ptr++));         break;
-               case 0x27:      my_stprintf_s(buffer, buffer_len, _T("clr  a"));                                              break;
-               case 0x28:      my_stprintf_s(buffer, buffer_len, _T("xch  a,r0"));                                           break;
-               case 0x29:      my_stprintf_s(buffer, buffer_len, _T("xch  a,r1"));                                           break;
-               case 0x2a:      my_stprintf_s(buffer, buffer_len, _T("xch  a,r2"));                                           break;
-               case 0x2b:      my_stprintf_s(buffer, buffer_len, _T("xch  a,r3"));                                           break;
-               case 0x2c:      my_stprintf_s(buffer, buffer_len, _T("xch  a,r4"));                                           break;
-               case 0x2d:      my_stprintf_s(buffer, buffer_len, _T("xch  a,r5"));                                           break;
-               case 0x2e:      my_stprintf_s(buffer, buffer_len, _T("xch  a,r6"));                                           break;
-               case 0x2f:      my_stprintf_s(buffer, buffer_len, _T("xch  a,r7"));                                           break;
-               case 0x30:      my_stprintf_s(buffer, buffer_len, _T("xchd a,@r0"));                                          break;
-               case 0x31:      my_stprintf_s(buffer, buffer_len, _T("xchd a,@r1"));                                          break;
-               case 0x32:      my_stprintf_s(buffer, buffer_len, _T("jb1  $%03X"), (pc & 0xf00) | program_r(ptr++));         break;
-               case 0x34:      my_stprintf_s(buffer, buffer_len, _T("call $1%02X"), program_r(ptr++));                       break;
-               case 0x35:      my_stprintf_s(buffer, buffer_len, _T("dis  tcnti"));                                          break;
-               case 0x36:      my_stprintf_s(buffer, buffer_len, _T("jt0  $%03X"), (pc & 0xf00) | program_r(ptr++));         break;
-               case 0x37:      my_stprintf_s(buffer, buffer_len, _T("cpl  a"));                                              break;
-               case 0x39:      my_stprintf_s(buffer, buffer_len, _T("outl p1,a"));                                           break;
-               case 0x3a:      my_stprintf_s(buffer, buffer_len, _T("outl p2,a"));                                           break;
-               case 0x3c:      my_stprintf_s(buffer, buffer_len, _T("movd p4,a"));                                           break;
-               case 0x3d:      my_stprintf_s(buffer, buffer_len, _T("movd p5,a"));                                           break;
-               case 0x3e:      my_stprintf_s(buffer, buffer_len, _T("movd p6,a"));                                           break;
-               case 0x3f:      my_stprintf_s(buffer, buffer_len, _T("movd p7,a"));                                           break;
-               case 0x40:      my_stprintf_s(buffer, buffer_len, _T("orl  a,@r0"));                                          break;
-               case 0x41:      my_stprintf_s(buffer, buffer_len, _T("orl  a,@r1"));                                          break;
-               case 0x42:      my_stprintf_s(buffer, buffer_len, _T("mov  a,t"));                                            break;
-               case 0x43:      my_stprintf_s(buffer, buffer_len, _T("orl  a,#$%02X"), program_r(ptr++));                     break;
-               case 0x44:      my_stprintf_s(buffer, buffer_len, _T("jmp  $2%02X"), program_r(ptr++));                       break;
-               case 0x45:      my_stprintf_s(buffer, buffer_len, _T("strt cnt"));                                            break;
-               case 0x46:      my_stprintf_s(buffer, buffer_len, _T("jnt1 $%03X"), (pc & 0xf00) | program_r(ptr++));         break;
-               case 0x47:      my_stprintf_s(buffer, buffer_len, _T("swap a"));                                              break;
-               case 0x48:      my_stprintf_s(buffer, buffer_len, _T("orl  a,r0"));                                           break;
-               case 0x49:      my_stprintf_s(buffer, buffer_len, _T("orl  a,r1"));                                           break;
-               case 0x4a:      my_stprintf_s(buffer, buffer_len, _T("orl  a,r2"));                                           break;
-               case 0x4b:      my_stprintf_s(buffer, buffer_len, _T("orl  a,r3"));                                           break;
-               case 0x4c:      my_stprintf_s(buffer, buffer_len, _T("orl  a,r4"));                                           break;
-               case 0x4d:      my_stprintf_s(buffer, buffer_len, _T("orl  a,r5"));                                           break;
-               case 0x4e:      my_stprintf_s(buffer, buffer_len, _T("orl  a,r6"));                                           break;
-               case 0x4f:      my_stprintf_s(buffer, buffer_len, _T("orl  a,r7"));                                           break;
-               case 0x50:      my_stprintf_s(buffer, buffer_len, _T("anl  a,@r0"));                                          break;
-               case 0x51:      my_stprintf_s(buffer, buffer_len, _T("anl  a,@r1"));                                          break;
-               case 0x52:      my_stprintf_s(buffer, buffer_len, _T("jb2  $%03X"), (pc & 0xf00) | program_r(ptr++));         break;
-               case 0x53:      my_stprintf_s(buffer, buffer_len, _T("anl  a,#$%02X"), program_r(ptr++));                     break;
-               case 0x54:      my_stprintf_s(buffer, buffer_len, _T("call $2%02X"), program_r(ptr++));                       break;
-               case 0x55:      my_stprintf_s(buffer, buffer_len, _T("strt t"));                                              break;
-               case 0x56:      my_stprintf_s(buffer, buffer_len, _T("jt1  $%03X"), (pc & 0xf00) | program_r(ptr++));         break;
-               case 0x57:      my_stprintf_s(buffer, buffer_len, _T("da   a"));                                              break;
-               case 0x58:      my_stprintf_s(buffer, buffer_len, _T("anl  a,r0"));                                           break;
-               case 0x59:      my_stprintf_s(buffer, buffer_len, _T("anl  a,r1"));                                           break;
-               case 0x5a:      my_stprintf_s(buffer, buffer_len, _T("anl  a,r2"));                                           break;
-               case 0x5b:      my_stprintf_s(buffer, buffer_len, _T("anl  a,r3"));                                           break;
-               case 0x5c:      my_stprintf_s(buffer, buffer_len, _T("anl  a,r4"));                                           break;
-               case 0x5d:      my_stprintf_s(buffer, buffer_len, _T("anl  a,r5"));                                           break;
-               case 0x5e:      my_stprintf_s(buffer, buffer_len, _T("anl  a,r6"));                                           break;
-               case 0x5f:      my_stprintf_s(buffer, buffer_len, _T("anl  a,r7"));                                           break;
-               case 0x60:      my_stprintf_s(buffer, buffer_len, _T("add  a,@r0"));                                          break;
-               case 0x61:      my_stprintf_s(buffer, buffer_len, _T("add  a,@r1"));                                          break;
-               case 0x62:      my_stprintf_s(buffer, buffer_len, _T("mov  t,a"));                                            break;
-               case 0x64:      my_stprintf_s(buffer, buffer_len, _T("jmp  $3%02X"), program_r(ptr++));                       break;
-               case 0x65:      my_stprintf_s(buffer, buffer_len, _T("stop tcnt"));                                           break;
-               case 0x67:      my_stprintf_s(buffer, buffer_len, _T("rrc  a"));                                              break;
-               case 0x68:      my_stprintf_s(buffer, buffer_len, _T("add  a,r0"));                                           break;
-               case 0x69:      my_stprintf_s(buffer, buffer_len, _T("add  a,r1"));                                           break;
-               case 0x6a:      my_stprintf_s(buffer, buffer_len, _T("add  a,r2"));                                           break;
-               case 0x6b:      my_stprintf_s(buffer, buffer_len, _T("add  a,r3"));                                           break;
-               case 0x6c:      my_stprintf_s(buffer, buffer_len, _T("add  a,r4"));                                           break;
-               case 0x6d:      my_stprintf_s(buffer, buffer_len, _T("add  a,r5"));                                           break;
-               case 0x6e:      my_stprintf_s(buffer, buffer_len, _T("add  a,r6"));                                           break;
-               case 0x6f:      my_stprintf_s(buffer, buffer_len, _T("add  a,r7"));                                           break;
-               case 0x70:      my_stprintf_s(buffer, buffer_len, _T("addc a,@r0"));                                          break;
-               case 0x71:      my_stprintf_s(buffer, buffer_len, _T("addc a,@r1"));                                          break;
-               case 0x72:      my_stprintf_s(buffer, buffer_len, _T("jb3  $%03X"), (pc & 0xf00) | program_r(ptr++));         break;
-               case 0x74:      my_stprintf_s(buffer, buffer_len, _T("call $3%02X"), program_r(ptr++));                       break;
-               case 0x75:  if (!upi41)
-                               my_stprintf_s(buffer, buffer_len, _T("ent0 clk"));
-                           else
-                               my_stprintf_s(buffer, buffer_len, _T("illegal"));                                             break;
-               case 0x76:      my_stprintf_s(buffer, buffer_len, _T("jf1  $%03X"), (pc & 0xf00) | program_r(ptr++));         break;
-               case 0x77:      my_stprintf_s(buffer, buffer_len, _T("rr   a"));                                              break;
-               case 0x78:      my_stprintf_s(buffer, buffer_len, _T("addc a,r0"));                                           break;
-               case 0x79:      my_stprintf_s(buffer, buffer_len, _T("addc a,r1"));                                           break;
-               case 0x7a:      my_stprintf_s(buffer, buffer_len, _T("addc a,r2"));                                           break;
-               case 0x7b:      my_stprintf_s(buffer, buffer_len, _T("addc a,r3"));                                           break;
-               case 0x7c:      my_stprintf_s(buffer, buffer_len, _T("addc a,r4"));                                           break;
-               case 0x7d:      my_stprintf_s(buffer, buffer_len, _T("addc a,r5"));                                           break;
-               case 0x7e:      my_stprintf_s(buffer, buffer_len, _T("addc a,r6"));                                           break;
-               case 0x7f:      my_stprintf_s(buffer, buffer_len, _T("addc a,r7"));                                           break;
-               case 0x80:  if (!upi41)
-                               my_stprintf_s(buffer, buffer_len, _T("movx a,@r0"));
-                           else
-                               my_stprintf_s(buffer, buffer_len, _T("illegal"));                                             break;
-               case 0x81:  if (!upi41)
-                               my_stprintf_s(buffer, buffer_len, _T("movx a,@r1"));
-                           else
-                               my_stprintf_s(buffer, buffer_len, _T("illegal"));                                             break;
-               case 0x83:      my_stprintf_s(buffer, buffer_len, _T("ret"));                                                 break;
-               case 0x84:      my_stprintf_s(buffer, buffer_len, _T("jmp  $4%02X"), program_r(ptr++));                       break;
-               case 0x85:      my_stprintf_s(buffer, buffer_len, _T("clr  f0"));                                             break;
-               case 0x86:  if (!upi41)
-                               my_stprintf_s(buffer, buffer_len, _T("jni  $%03X"), (pc & 0xf00) | program_r(ptr++));
-                           else
-                               my_stprintf_s(buffer, buffer_len, _T("jobf $%03X"), (pc & 0xf00) | program_r(ptr++));         break;
-               case 0x88:  if (!upi41)
-                               my_stprintf_s(buffer, buffer_len, _T("orl  bus,#$%02X"), program_r(ptr++));
-                           else
-                               my_stprintf_s(buffer, buffer_len, _T("illegal"));                                             break;
-               case 0x89:      my_stprintf_s(buffer, buffer_len, _T("orl  p1,#$%02X"), program_r(ptr++));                    break;
-               case 0x8a:      my_stprintf_s(buffer, buffer_len, _T("orl  p2,#$%02X"), program_r(ptr++));                    break;
-               case 0x8c:      my_stprintf_s(buffer, buffer_len, _T("orld p4,a"));                                           break;
-               case 0x8d:      my_stprintf_s(buffer, buffer_len, _T("orld p5,a"));                                           break;
-               case 0x8e:      my_stprintf_s(buffer, buffer_len, _T("orld p6,a"));                                           break;
-               case 0x8f:      my_stprintf_s(buffer, buffer_len, _T("orld p7,a"));                                           break;
-               case 0x90:  if (!upi41)
-                               my_stprintf_s(buffer, buffer_len, _T("movx @r0,a"));
-                           else
-                               my_stprintf_s(buffer, buffer_len, _T("mov  sts,a"));                                          break;
-               case 0x91:  if (!upi41)
-                               my_stprintf_s(buffer, buffer_len, _T("movx @r1,a"));
-                           else
-                               my_stprintf_s(buffer, buffer_len, _T("illegal"));                                             break;
-               case 0x92:      my_stprintf_s(buffer, buffer_len, _T("jb4  $%03X"), (pc & 0xf00) | program_r(ptr++));         break;
-               case 0x93:      my_stprintf_s(buffer, buffer_len, _T("retr"));                                                break;
-               case 0x94:      my_stprintf_s(buffer, buffer_len, _T("call $4%02X"), program_r(ptr++));                       break;
-               case 0x95:      my_stprintf_s(buffer, buffer_len, _T("cpl  f0"));                                             break;
-               case 0x96:      my_stprintf_s(buffer, buffer_len, _T("jnz  $%03X"), (pc & 0xf00) | program_r(ptr++));         break;
-               case 0x97:      my_stprintf_s(buffer, buffer_len, _T("clr  c"));                                              break;
-               case 0x98:  if (!upi41)
-                               my_stprintf_s(buffer, buffer_len, _T("anl  bus,#$%02X"), program_r(ptr++));
-                           else
-                               my_stprintf_s(buffer, buffer_len, _T("illegal"));                                             break;
-               case 0x99:      my_stprintf_s(buffer, buffer_len, _T("anl  p1,#$%02X"), program_r(ptr++));                    break;
-               case 0x9a:      my_stprintf_s(buffer, buffer_len, _T("anl  p2,#$%02X"), program_r(ptr++));                    break;
-               case 0x9c:      my_stprintf_s(buffer, buffer_len, _T("anld p4,a"));                                           break;
-               case 0x9d:      my_stprintf_s(buffer, buffer_len, _T("anld p5,a"));                                           break;
-               case 0x9e:      my_stprintf_s(buffer, buffer_len, _T("anld p6,a"));                                           break;
-               case 0x9f:      my_stprintf_s(buffer, buffer_len, _T("anld p7,a"));                                           break;
-               case 0xa0:      my_stprintf_s(buffer, buffer_len, _T("mov  @r0,a"));                                          break;
-               case 0xa1:      my_stprintf_s(buffer, buffer_len, _T("mov  @r1,a"));                                          break;
-               case 0xa3:      my_stprintf_s(buffer, buffer_len, _T("movp a,@a"));                                           break;
-               case 0xa4:      my_stprintf_s(buffer, buffer_len, _T("jmp  $5%02X"), program_r(ptr++));                       break;
-               case 0xa5:      my_stprintf_s(buffer, buffer_len, _T("clr  f1"));                                             break;
-               case 0xa7:      my_stprintf_s(buffer, buffer_len, _T("cpl  c"));                                              break;
-               case 0xa8:      my_stprintf_s(buffer, buffer_len, _T("mov  r0,a"));                                           break;
-               case 0xa9:      my_stprintf_s(buffer, buffer_len, _T("mov  r1,a"));                                           break;
-               case 0xaa:      my_stprintf_s(buffer, buffer_len, _T("mov  r2,a"));                                           break;
-               case 0xab:      my_stprintf_s(buffer, buffer_len, _T("mov  r3,a"));                                           break;
-               case 0xac:      my_stprintf_s(buffer, buffer_len, _T("mov  r4,a"));                                           break;
-               case 0xad:      my_stprintf_s(buffer, buffer_len, _T("mov  r5,a"));                                           break;
-               case 0xae:      my_stprintf_s(buffer, buffer_len, _T("mov  r6,a"));                                           break;
-               case 0xaf:      my_stprintf_s(buffer, buffer_len, _T("mov  r7,a"));                                           break;
-               case 0xb0:      my_stprintf_s(buffer, buffer_len, _T("mov  @r0,#$%02X"), program_r(ptr++));                   break;
-               case 0xb1:      my_stprintf_s(buffer, buffer_len, _T("mov  @r1,#$%02X"), program_r(ptr++));                   break;
-               case 0xb2:      my_stprintf_s(buffer, buffer_len, _T("jb5  $%03X"), (pc & 0xf00) | program_r(ptr++));         break;
-               case 0xb3:      my_stprintf_s(buffer, buffer_len, _T("jmpp @a"));                                             break;
-               case 0xb4:      my_stprintf_s(buffer, buffer_len, _T("call $5%02X"), program_r(ptr++));                       break;
-               case 0xb5:      my_stprintf_s(buffer, buffer_len, _T("cpl  f1"));                                             break;
-               case 0xb6:      my_stprintf_s(buffer, buffer_len, _T("jf0  $%03X"), (pc & 0xf00) | program_r(ptr++));         break;
-               case 0xb8:      my_stprintf_s(buffer, buffer_len, _T("mov  r0,#$%02X"), program_r(ptr++));                    break;
-               case 0xb9:      my_stprintf_s(buffer, buffer_len, _T("mov  r1,#$%02X"), program_r(ptr++));                    break;
-               case 0xba:      my_stprintf_s(buffer, buffer_len, _T("mov  r2,#$%02X"), program_r(ptr++));                    break;
-               case 0xbb:      my_stprintf_s(buffer, buffer_len, _T("mov  r3,#$%02X"), program_r(ptr++));                    break;
-               case 0xbc:      my_stprintf_s(buffer, buffer_len, _T("mov  r4,#$%02X"), program_r(ptr++));                    break;
-               case 0xbd:      my_stprintf_s(buffer, buffer_len, _T("mov  r5,#$%02X"), program_r(ptr++));                    break;
-               case 0xbe:      my_stprintf_s(buffer, buffer_len, _T("mov  r6,#$%02X"), program_r(ptr++));                    break;
-               case 0xbf:      my_stprintf_s(buffer, buffer_len, _T("mov  r7,#$%02X"), program_r(ptr++));                    break;
-               case 0xc4:      my_stprintf_s(buffer, buffer_len, _T("jmp  $6%02X"), program_r(ptr++));                       break;
-               case 0xc5:      my_stprintf_s(buffer, buffer_len, _T("sel  rb0"));                                            break;
-               case 0xc6:      my_stprintf_s(buffer, buffer_len, _T("jz   $%03X"), (pc & 0xf00) | program_r(ptr++));         break;
-               case 0xc7:      my_stprintf_s(buffer, buffer_len, _T("mov  a,psw"));                                          break;
-               case 0xc8:      my_stprintf_s(buffer, buffer_len, _T("dec  r0"));                                             break;
-               case 0xc9:      my_stprintf_s(buffer, buffer_len, _T("dec  r1"));                                             break;
-               case 0xca:      my_stprintf_s(buffer, buffer_len, _T("dec  r2"));                                             break;
-               case 0xcb:      my_stprintf_s(buffer, buffer_len, _T("dec  r3"));                                             break;
-               case 0xcc:      my_stprintf_s(buffer, buffer_len, _T("dec  r4"));                                             break;
-               case 0xcd:      my_stprintf_s(buffer, buffer_len, _T("dec  r5"));                                             break;
-               case 0xce:      my_stprintf_s(buffer, buffer_len, _T("dec  r6"));                                             break;
-               case 0xcf:      my_stprintf_s(buffer, buffer_len, _T("dec  r7"));                                             break;
-               case 0xd0:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,@r0"));                                          break;
-               case 0xd1:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,@r1"));                                          break;
-               case 0xd2:      my_stprintf_s(buffer, buffer_len, _T("jb6  $%03X"), (pc & 0xf00) | program_r(ptr++));         break;
-               case 0xd3:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,#$%02X"), program_r(ptr++));                     break;
-               case 0xd4:      my_stprintf_s(buffer, buffer_len, _T("call $6%02X"), program_r(ptr++));                       break;
-               case 0xd5:      my_stprintf_s(buffer, buffer_len, _T("sel  rb1"));                                            break;
-               case 0xd6:  if (!upi41)
-                               my_stprintf_s(buffer, buffer_len, _T("illegal"));
-                           else
-                               my_stprintf_s(buffer, buffer_len, _T("jnibf $%03X"), (pc & 0xf00) | program_r(ptr++));        break;
-               case 0xd7:      my_stprintf_s(buffer, buffer_len, _T("mov  psw,a"));                                          break;
-               case 0xd8:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,r0"));                                           break;
-               case 0xd9:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,r1"));                                           break;
-               case 0xda:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,r2"));                                           break;
-               case 0xdb:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,r3"));                                           break;
-               case 0xdc:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,r4"));                                           break;
-               case 0xdd:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,r5"));                                           break;
-               case 0xde:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,r6"));                                           break;
-               case 0xdf:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,r7"));                                           break;
-               case 0xe3:      my_stprintf_s(buffer, buffer_len, _T("movp3 a,@a"));                                          break;
-               case 0xe4:      my_stprintf_s(buffer, buffer_len, _T("jmp  $7%02X"), program_r(ptr++));                       break;
-               case 0xe5:  if (!upi41)
-                               my_stprintf_s(buffer, buffer_len, _T("sel  mb0"));
-                           else
-                               my_stprintf_s(buffer, buffer_len, _T("en   dma"));                                            break;
-               case 0xe6:      my_stprintf_s(buffer, buffer_len, _T("jnc  $%03X"), (pc & 0xf00) | program_r(ptr++));         break;
-               case 0xe7:      my_stprintf_s(buffer, buffer_len, _T("rl   a"));                                              break;
-               case 0xe8:      my_stprintf_s(buffer, buffer_len, _T("djnz r0,$%03X"), (pc & 0xf00) | program_r(ptr++));      break;
-               case 0xe9:      my_stprintf_s(buffer, buffer_len, _T("djnz r1,$%03X"), (pc & 0xf00) | program_r(ptr++));      break;
-               case 0xea:      my_stprintf_s(buffer, buffer_len, _T("djnz r2,$%03X"), (pc & 0xf00) | program_r(ptr++));      break;
-               case 0xeb:      my_stprintf_s(buffer, buffer_len, _T("djnz r3,$%03X"), (pc & 0xf00) | program_r(ptr++));      break;
-               case 0xec:      my_stprintf_s(buffer, buffer_len, _T("djnz r4,$%03X"), (pc & 0xf00) | program_r(ptr++));      break;
-               case 0xed:      my_stprintf_s(buffer, buffer_len, _T("djnz r5,$%03X"), (pc & 0xf00) | program_r(ptr++));      break;
-               case 0xee:      my_stprintf_s(buffer, buffer_len, _T("djnz r6,$%03X"), (pc & 0xf00) | program_r(ptr++));      break;
-               case 0xef:      my_stprintf_s(buffer, buffer_len, _T("djnz r7,$%03X"), (pc & 0xf00) | program_r(ptr++));      break;
-               case 0xf0:      my_stprintf_s(buffer, buffer_len, _T("mov  a,@r0"));                                          break;
-               case 0xf1:      my_stprintf_s(buffer, buffer_len, _T("mov  a,@r1"));                                          break;
-               case 0xf2:      my_stprintf_s(buffer, buffer_len, _T("jb7  $%03X"), (pc & 0xf00) | program_r(ptr++));         break;
-               case 0xf4:      my_stprintf_s(buffer, buffer_len, _T("call $7%02X"), program_r(ptr++));                       break;
-               case 0xf5:  if (!upi41)
-                               my_stprintf_s(buffer, buffer_len, _T("sel  mb1"));
-                           else
-                               my_stprintf_s(buffer, buffer_len, _T("en   flags"));                                          break;
-               case 0xf6:      my_stprintf_s(buffer, buffer_len, _T("jc   $%03X"), (pc & 0xf00) | program_r(ptr++));         break;
-               case 0xf7:      my_stprintf_s(buffer, buffer_len, _T("rlc  a"));                                              break;
-               case 0xf8:      my_stprintf_s(buffer, buffer_len, _T("mov  a,r0"));                                           break;
-               case 0xf9:      my_stprintf_s(buffer, buffer_len, _T("mov  a,r1"));                                           break;
-               case 0xfa:      my_stprintf_s(buffer, buffer_len, _T("mov  a,r2"));                                           break;
-               case 0xfb:      my_stprintf_s(buffer, buffer_len, _T("mov  a,r3"));                                           break;
-               case 0xfc:      my_stprintf_s(buffer, buffer_len, _T("mov  a,r4"));                                           break;
-               case 0xfd:      my_stprintf_s(buffer, buffer_len, _T("mov  a,r5"));                                           break;
-               case 0xfe:      my_stprintf_s(buffer, buffer_len, _T("mov  a,r6"));                                           break;
-               case 0xff:      my_stprintf_s(buffer, buffer_len, _T("mov  a,r7"));                                           break;
-               default:        my_stprintf_s(buffer, buffer_len, _T("illegal"));                                             break;
-       }
+       my_stprintf_s(buffer, buffer_len, _T("**OP $%02x"), program_r(ptr++));
        return ptr - pc;
 }
 //#endif
index 1c1ff17..0f2b4c1 100644 (file)
@@ -127,7 +127,7 @@ public:
        uint32_t read_debug_io8(uint32_t addr);
        bool write_debug_reg(const _TCHAR *reg, uint32_t data);
        void get_debug_regs_info(_TCHAR *buffer, size_t buffer_len);
-       int debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len);
+       virtual int debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len);
 
        void save_state(FILEIO* state_state_fio);
        bool load_state(FILEIO* state_state_fio);
index 40322ae..ff6d3a2 100644 (file)
@@ -9,6 +9,9 @@
 */
 
 #include "m6502.h"
+#ifdef USE_DEBUGGER
+#include "debugger.h"
+#endif
 
 // vectors
 #define NMI_VEC        0xfffa
@@ -988,6 +991,10 @@ void M6502::initialize()
 {
        A = X = Y = P = 0;
        SPD = EAD = ZPD = PCD = 0;
+#ifdef USE_DEBUGGER
+       d_mem_stored = d_mem;
+       d_debugger->set_context_mem(d_mem);
+#endif
 }
 
 void M6502::reset()
@@ -1011,7 +1018,36 @@ int M6502::run(int clock)
                } else {
                        // run only one opcode
                        icount = 0;
-                       run_one_opecode();
+#ifdef USE_DEBUGGER
+                       bool now_debugging = d_debugger->now_debugging;
+                       if(now_debugging) {
+                               d_debugger->check_break_points(PCW);
+                               if(d_debugger->now_suspended) {
+                                       emu->mute_sound();
+                                       while(d_debugger->now_debugging && d_debugger->now_suspended) {
+                                               emu->sleep(10);
+                                       }
+                               }
+                               if(d_debugger->now_debugging) {
+                                       d_mem = d_debugger;
+                               } else {
+                                       now_debugging = false;
+                               }
+                               
+                               run_one_opecode();
+                               
+                               if(now_debugging) {
+                                       if(!d_debugger->now_going) {
+                                               d_debugger->now_suspended = true;
+                                       }
+                                       d_mem = d_mem_stored;
+                               }
+                       } else {
+#endif
+                               run_one_opecode();
+#ifdef USE_DEBUGGER
+                       }
+#endif
                        return -icount;
                }
        } else {
@@ -1020,7 +1056,36 @@ int M6502::run(int clock)
                
                // run cpu while given clocks
                while(icount > 0 && !busreq) {
-                       run_one_opecode();
+#ifdef USE_DEBUGGER
+                       bool now_debugging = d_debugger->now_debugging;
+                       if(now_debugging) {
+                               d_debugger->check_break_points(PCW);
+                               if(d_debugger->now_suspended) {
+                                       emu->mute_sound();
+                                       while(d_debugger->now_debugging && d_debugger->now_suspended) {
+                                               emu->sleep(10);
+                                       }
+                               }
+                               if(d_debugger->now_debugging) {
+                                       d_mem = d_debugger;
+                               } else {
+                                       now_debugging = false;
+                               }
+                               
+                               run_one_opecode();
+                               
+                               if(now_debugging) {
+                                       if(!d_debugger->now_going) {
+                                               d_debugger->now_suspended = true;
+                                       }
+                                       d_mem = d_mem_stored;
+                               }
+                       } else {
+#endif
+                               run_one_opecode();
+#ifdef USE_DEBUGGER
+                       }
+#endif
                }
                // if busreq is raised, spin cpu while remained clock
                if(icount > 0 && busreq) {
@@ -1046,7 +1111,7 @@ void M6502::run_one_opecode()
        } else if(pending_irq) {
                update_irq();
        }
-       prev_pc = pc.w.l;
+       prev_pc = PCW;
        uint8_t code = RDOP();
        OP(code);
        
@@ -1082,6 +1147,86 @@ void M6502::write_signal(int id, uint32_t data, uint32_t mask)
        }
 }
 
+#ifdef USE_DEBUGGER
+void M6502::write_debug_data8(uint32_t addr, uint32_t data)
+{
+       int wait;
+       d_mem_stored->write_data8w(addr, data, &wait);
+}
+
+uint32_t M6502::read_debug_data8(uint32_t addr)
+{
+       int wait;
+       return d_mem_stored->read_data8w(addr, &wait);
+}
+
+bool M6502::write_debug_reg(const _TCHAR *reg, uint32_t data)
+{
+       if(_tcsicmp(reg, _T("PC")) == 0) {
+               PCW = data;
+       } else if(_tcsicmp(reg, _T("A")) == 0) {
+               A = data;
+       } else if(_tcsicmp(reg, _T("X")) == 0) {
+               X = data;
+       } else if(_tcsicmp(reg, _T("Y")) == 0) {
+               Y = data;
+       } else if(_tcsicmp(reg, _T("S")) == 0) {
+               S = data;
+       } else if(_tcsicmp(reg, _T("P")) == 0) {
+               P = data;
+       } else {
+               return false;
+       }
+       return true;
+}
+
+void M6502::get_debug_regs_info(_TCHAR *buffer, size_t buffer_len)
+{
+       my_stprintf_s(buffer, buffer_len,
+       _T("PC = %04X  A = %02X  X = %02X  Y = %02X  S = %02X  P = %02X [%c%c%c%c%c%c%c%c]"),
+       PCW, A, X, Y, S, P,
+       (P & F_N) ? _T('N') : _T('-'), (P & F_V) ? _T('V') : _T('-'), (P & F_T) ? _T('T') : _T('-'), (P & F_B) ? _T('B') : _T('-'), 
+       (P & F_D) ? _T('D') : _T('-'), (P & F_I) ? _T('I') : _T('-'), (P & F_Z) ? _T('Z') : _T('-'), (P & F_C) ? _T('C') : _T('-'));
+}
+
+// disassembler
+
+#define offs_t UINT16
+
+/*****************************************************************************/
+/* src/emu/devcpu.h */
+
+// CPU interface functions
+#define CPU_DISASSEMBLE_NAME(name)             cpu_disassemble_##name
+#define CPU_DISASSEMBLE(name)                  int CPU_DISASSEMBLE_NAME(name)(_TCHAR *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, symbol_t *first_symbol)
+#define CPU_DISASSEMBLE_CALL(name)             CPU_DISASSEMBLE_NAME(name)(buffer, pc, oprom, oprom, d_debugger->first_symbol)
+
+/*****************************************************************************/
+/* src/emu/didisasm.h */
+
+// Disassembler constants
+const UINT32 DASMFLAG_SUPPORTED     = 0x80000000;   // are disassembly flags supported?
+const UINT32 DASMFLAG_STEP_OUT      = 0x40000000;   // this instruction should be the end of a step out sequence
+const UINT32 DASMFLAG_STEP_OVER     = 0x20000000;   // this instruction should be stepped over by setting a breakpoint afterwards
+const UINT32 DASMFLAG_OVERINSTMASK  = 0x18000000;   // number of extra instructions to skip when stepping over
+const UINT32 DASMFLAG_OVERINSTSHIFT = 27;           // bits to shift after masking to get the value
+const UINT32 DASMFLAG_LENGTHMASK    = 0x0000ffff;   // the low 16-bits contain the actual length
+
+#include "mame/emu/cpu/m6502/6502dasm.c"
+
+int M6502::debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
+{
+       uint8_t oprom[4];
+       uint8_t *opram = oprom;
+       
+       for(int i = 0; i < 4; i++) {
+               int wait;
+               oprom[i] = d_mem->read_data8w(pc + i, &wait);
+       }
+       return CPU_DISASSEMBLE_CALL(m6502) & DASMFLAG_LENGTHMASK;
+}
+#endif
+
 #define STATE_VERSION  1
 
 void M6502::save_state(FILEIO* state_fio)
index 64eb627..5c4b091 100644 (file)
 
 #define SIG_M6502_OVERFLOW     0
 
+#ifdef USE_DEBUGGER
+class DEBUGGER;
+#endif
+
 class M6502 : public DEVICE
 {
 private:
        DEVICE *d_mem, *d_pic;
+#ifdef USE_DEBUGGER
+       DEBUGGER *d_debugger;
+       DEVICE *d_mem_stored;
+#endif
        
        pair_t pc, sp, zp, ea;
        uint16_t prev_pc;
@@ -55,6 +63,29 @@ public:
        {
                return prev_pc;
        }
+       uint32_t get_next_pc()
+       {
+               return pc.w.l;
+       }
+#ifdef USE_DEBUGGER
+       void *get_debugger()
+       {
+               return d_debugger;
+       }
+       uint32_t get_debug_prog_addr_mask()
+       {
+               return 0xffff;
+       }
+       uint32_t get_debug_data_addr_mask()
+       {
+               return 0xffff;
+       }
+       void write_debug_data8(uint32_t addr, uint32_t data);
+       uint32_t read_debug_data8(uint32_t addr);
+       bool write_debug_reg(const _TCHAR *reg, uint32_t data);
+       void get_debug_regs_info(_TCHAR *buffer, size_t buffer_len);
+       int debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len);
+#endif
        void save_state(FILEIO* state_fio);
        bool load_state(FILEIO* state_fio);
        
@@ -67,6 +98,12 @@ public:
        {
                d_pic = device;
        }
+#ifdef USE_DEBUGGER
+       void set_context_debugger(DEBUGGER* device)
+       {
+               d_debugger = device;
+       }
+#endif
 };
 
 #endif
index b0a7b55..733c0f7 100644 (file)
@@ -149,12 +149,12 @@ CPU_DISASSEMBLE( h6280 )
        PC++;
 
        opc = op6280[OP];
-    arg = op6280[OP+1];
+       arg = op6280[OP+1];
 
-    if (opc == _jsr || opc == _bsr)
-       flags = DASMFLAG_STEP_OVER;
-    else if (opc == _rts)
-       flags = DASMFLAG_STEP_OUT;
+       if (opc == _jsr || opc == _bsr)
+               flags = DASMFLAG_STEP_OVER;
+       else if (opc == _rts)
+               flags = DASMFLAG_STEP_OUT;
 
        switch(arg)
        {
@@ -165,7 +165,7 @@ CPU_DISASSEMBLE( h6280 )
                        _stprintf(buffer,_T("%s"), token[opc]);
                        break;
                case _rel:
-                       _stprintf(buffer,_T("%-5s$%04X"), token[opc], (PC + 1 + (signed char)_RDBYTE(PC)) & 0xffff);
+                       _stprintf(buffer,_T("%-5s%s"), token[opc], get_value_or_symbol(first_symbol, _T("$%04X"), (PC + 1 + (signed char)_RDBYTE(PC)) & 0xffff));
                        PC+=1;
                        break;
                case _imm:
@@ -194,34 +194,34 @@ CPU_DISASSEMBLE( h6280 )
                        break;
                case _zpi:
                        _stprintf(buffer,_T("%-5s($%02X)"), token[opc], _RDBYTE(PC));
-            PC+=1;
-            break;
+                       PC+=1;
+                       break;
                case _abs:
-                       _stprintf(buffer,_T("%-5s$%04X"), token[opc], _RDWORD(PC));
+                       _stprintf(buffer,_T("%-5s%s"), token[opc], get_value_or_symbol(first_symbol, _T("$%04X"), _RDWORD(PC)));
                        PC+=2;
                        break;
                case _abx:
-                       _stprintf(buffer,_T("%-5s$%04X,x"), token[opc], _RDWORD(PC));
+                       _stprintf(buffer,_T("%-5s%s,x"), token[opc], get_value_or_symbol(first_symbol, _T("$%04X"), _RDWORD(PC)));
                        PC+=2;
                        break;
                case _aby:
-                       _stprintf(buffer,_T("%-5s$%04X,y"), token[opc], _RDWORD(PC));
+                       _stprintf(buffer,_T("%-5s%s,y"), token[opc], get_value_or_symbol(first_symbol, _T("$%04X"), _RDWORD(PC)));
                        PC+=2;
                        break;
                case _ind:
-                       _stprintf(buffer,_T("%-5s($%04X)"), token[opc], _RDWORD(PC));
+                       _stprintf(buffer,_T("%-5s(%s)"), token[opc], get_value_or_symbol(first_symbol, _T("$%04X"), _RDWORD(PC)));
                        PC+=2;
                        break;
                case _iax:
-                       _stprintf(buffer,_T("%-5s($%04X),X"), token[opc], _RDWORD(PC));
+                       _stprintf(buffer,_T("%-5s(%s),X"), token[opc], get_value_or_symbol(first_symbol, _T("$%04X"), _RDWORD(PC)));
                        PC+=2;
-            break;
+                       break;
                case _blk:
-                       _stprintf(buffer,_T("%-5s$%04X $%04X $%04X"), token[opc], _RDWORD(PC), _RDWORD(PC+2), _RDWORD(PC+4));
+                       _stprintf(buffer,_T("%-5s%s %s %s"), token[opc], get_value_or_symbol(first_symbol, _T("$%04X"), _RDWORD(PC)), get_value_or_symbol(first_symbol, _T("$%04X"), _RDWORD(PC+2)), get_value_or_symbol(first_symbol, _T("$%04X"), _RDWORD(PC+4)));
                        PC+=6;
-            break;
+                       break;
                case _zrl:
-                       _stprintf(buffer,_T("%-5s$%02X $%04X"), token[opc], _RDBYTE(PC), (PC + 2 + (signed char)_RDBYTE(PC+1)) & 0xffff);
+                       _stprintf(buffer,_T("%-5s$%02X %s"), token[opc], _RDBYTE(PC), get_value_or_symbol(first_symbol, _T("$%04X"), (PC + 2 + (signed char)_RDBYTE(PC+1)) & 0xffff));
                        PC+=2;
                        break;
                case _imz:
@@ -233,11 +233,11 @@ CPU_DISASSEMBLE( h6280 )
                        PC+=2;
                        break;
                case _ima:
-                       _stprintf(buffer,_T("%-5s#$%02X $%04X"), token[opc], _RDBYTE(PC), _RDWORD(PC+1));
+                       _stprintf(buffer,_T("%-5s#$%02X %s"), token[opc], _RDBYTE(PC), get_value_or_symbol(first_symbol, _T("$%04X"), _RDWORD(PC+1)));
                        PC+=3;
                        break;
                case _imx:
-                       _stprintf(buffer,_T("%-5s#$%02X $%04X,x"), token[opc], _RDBYTE(PC), _RDWORD(PC+1));
+                       _stprintf(buffer,_T("%-5s#$%02X %s,x"), token[opc], _RDBYTE(PC), get_value_or_symbol(first_symbol, _T("$%04X"), _RDWORD(PC+1)));
                        PC+=3;
                        break;
 
diff --git a/source/src/vm/mame/emu/cpu/m6502/6502dasm.c b/source/src/vm/mame/emu/cpu/m6502/6502dasm.c
new file mode 100644 (file)
index 0000000..72d0348
--- /dev/null
@@ -0,0 +1,767 @@
+/*****************************************************************************
+ *
+ *  6502dasm.c
+ *  6502/65c02/6510 disassembler
+ *
+ *  Copyright Juergen Buchmueller, all rights reserved.
+ *
+ *  - This source code is released as freeware for non-commercial purposes.
+ *  - You are free to use and redistribute this code in modified or
+ *    unmodified form, provided you list me in the credits.
+ *  - If you modify this source code, you must add a notice to each modified
+ *    source file that it has been changed.  If you're a nice person, you
+ *    will clearly mark each change too.  :)
+ *  - If you wish to use this for commercial purposes, please contact me at
+ *    pullmoll@t-online.de
+ *  - The author of this copywritten work reserves the right to change the
+ *     terms of its usage and license at any time, including retroactively
+ *   - This entire notice must remain in the source code.
+ *
+ *****************************************************************************/
+/* 2. February 2000 PeT added support for 65sc02 subtype */
+/* 2. February 2000 PeT added support for 65ce02 variant */
+/* 3. February 2000 PeT bbr bbs displayment */
+/* 4. February 2000 PeT ply inw dew */
+/* 4. February 2000 PeT fixed relative word operand */
+/* 9. May 2000 PeT added m4510 */
+/* 18.April 2008 Roberto Fresca fixed bbr, bbs, rmb & smb displayment,
+   showing the correct bit to operate */
+
+//#include "emu.h"
+//#include "debugger.h"
+//#include "m6502.h"
+//#include "m65ce02.h"
+//#include "m6509.h"
+//#include "m4510.h"
+
+enum addr_mode {
+       non,    /* no additional arguments */
+       imp,    /* implicit */
+       acc,    /* accumulator */
+       imm,    /* immediate */
+       iw2,    /* immediate word (65ce02) */
+       iw3,    /* augment (65ce02) */
+       adr,    /* absolute address (jmp,jsr) */
+       aba,    /* absolute */
+       zpg,    /* zero page */
+       zpx,    /* zero page + X */
+       zpy,    /* zero page + Y */
+       zpi,    /* zero page indirect (65c02) */
+       zpb,    /* zero page and branch (65c02 bbr,bbs) */
+       abx,    /* absolute + X */
+       aby,    /* absolute + Y */
+       rel,    /* relative */
+       rw2,    /* relative word (65cs02, 65ce02) */
+       idx,    /* zero page pre indexed */
+       idy,    /* zero page post indexed */
+       idz,    /* zero page post indexed (65ce02) */
+       isy,    /* zero page pre indexed sp and post indexed y (65ce02) */
+       ind,    /* indirect (jmp) */
+       iax             /* indirect + X (65c02 jmp) */
+};
+
+enum opcodes {
+       adc,  and_,asl,  bcc,  bcs,  beq,  bit,  bmi,
+       bne,  bpl, m6502_brk,  bvc,  bvs,  clc,  cld,  cli,
+       clv,  cmp, cpx,  cpy,  dec,  dex,  dey,  eor,
+       inc,  inx, iny,  jmp,  jsr,  lda,  ldx,  ldy,
+       lsr,  nop, ora,  pha,  php,  pla,  plp,  rol,
+       ror,  rti, rts,  sbc,  sec,  sed,  sei,  sta,
+       stx,  sty, tax,  tay,  tsx,  txa,  txs,  tya,
+       ill,
+/* 65c02 (only) mnemonics */
+       bbr,  bbs, bra,  rmb,  smb,  stz,  trb,  tsb,
+/* 65sc02 (only) mnemonics */
+       bsr,
+/* 6510 + 65c02 mnemonics */
+       anc,  asr, ast,  arr,  asx,  axa,  dcp,  dea,
+       dop,  ina, isb,  lax,  phx,  phy,  plx,  ply,
+       rla,  rra, sax,  slo,  sre,  sah,  say,  ssh,
+       sxh,  syh, top,  oal,  kil,
+/* 65ce02 mnemonics */
+       cle,  see,  rtn,  aug,
+       tab,  tba,      taz,  tza, tys, tsy,
+       ldz,  stz2/* real register store */,
+       dez,  inz,      cpz,  phz,      plz,
+       neg,  asr2/* arithmetic shift right */,
+       asw,  row,      dew,  inw,      phw,
+/* 4510 mnemonics */
+       map,
+
+/* Deco CPU16 mnemonics */
+       vbl,  u13,  u8F,  uAB,  u87,  u0B,  uA3,  u4B,
+       u3F,  uBB,  u23
+};
+
+
+static const _TCHAR *const token[]=
+{
+       _T("adc"), _T("and"), _T("asl"), _T("bcc"), _T("bcs"), _T("beq"), _T("bit"), _T("bmi"),
+       _T("bne"), _T("bpl"), _T("brk"), _T("bvc"), _T("bvs"), _T("clc"), _T("cld"), _T("cli"),
+       _T("clv"), _T("cmp"), _T("cpx"), _T("cpy"), _T("dec"), _T("dex"), _T("dey"), _T("eor"),
+       _T("inc"), _T("inx"), _T("iny"), _T("jmp"), _T("jsr"), _T("lda"), _T("ldx"), _T("ldy"),
+       _T("lsr"), _T("nop"), _T("ora"), _T("pha"), _T("php"), _T("pla"), _T("plp"), _T("rol"),
+       _T("ror"), _T("rti"), _T("rts"), _T("sbc"), _T("sec"), _T("sed"), _T("sei"), _T("sta"),
+       _T("stx"), _T("sty"), _T("tax"), _T("tay"), _T("tsx"), _T("txa"), _T("txs"), _T("tya"),
+       _T("ill"),
+/* 65c02 mnemonics */
+       _T("bbr"), _T("bbs"), _T("bra"), _T("rmb"), _T("smb"), _T("stz"), _T("trb"), _T("tsb"),
+/* 65sc02 mnemonics */
+       _T("bsr"),
+/* 6510 mnemonics */
+       _T("anc"), _T("asr"), _T("ast"), _T("arr"), _T("asx"), _T("axa"), _T("dcp"), _T("dea"),
+       _T("dop"), _T("ina"), _T("isb"), _T("lax"), _T("phx"), _T("phy"), _T("plx"), _T("ply"),
+       _T("rla"), _T("rra"), _T("sax"), _T("slo"), _T("sre"), _T("sah"), _T("say"), _T("ssh"),
+       _T("sxh"), _T("syh"), _T("top"), _T("oal"), _T("kil"),
+/* 65ce02 mnemonics */
+       _T("cle"), _T("see"), _T("rtn"), _T("aug"),
+       _T("tab"), _T("tba"), _T("taz"), _T("tza"), _T("tys"), _T("tsy"),
+       _T("ldz"), _T("stz"),
+       _T("dez"), _T("inz"), _T("cpz"), _T("phz"), _T("plz"),
+       _T("neg"), _T("asr"),
+       _T("asw"), _T("row"), _T("dew"), _T("inw"), _T("phw"),
+/* 4510 mnemonics */
+       _T("map"),
+
+/* Deco CPU16 mnemonics */
+       _T("VBL"), _T("u13"), _T("u8F"), _T("uAB"), _T("u87"), _T("u0B"), _T("uA3"), _T("u4B"),
+       _T("u3F"), _T("uBB"), _T("u23")
+};
+
+struct op6502_info
+{
+       UINT8 opc;
+       UINT8 arg;
+};
+
+static const struct op6502_info op6502[256] = {
+       {m6502_brk,imm},{ora,idx},{kil,non},{slo,idx},/* 00 */
+       {nop,zpg},{ora,zpg},{asl,zpg},{slo,zpg},
+       {php,imp},{ora,imm},{asl,acc},{anc,imm},
+       {nop,aba},{ora,aba},{asl,aba},{slo,aba},
+       {bpl,rel},{ora,idy},{kil,non},{slo,idy},/* 10 */
+       {nop,zpx},{ora,zpx},{asl,zpx},{slo,zpx},
+       {clc,imp},{ora,aby},{nop,imp},{slo,aby},
+       {nop,abx},{ora,abx},{asl,abx},{slo,abx},
+       {jsr,adr},{and_,idx},{kil,non},{rla,idx},/* 20 */
+       {bit,zpg},{and_,zpg},{rol,zpg},{rla,zpg},
+       {plp,imp},{and_,imm},{rol,acc},{anc,imm},
+       {bit,aba},{and_,aba},{rol,aba},{rla,aba},
+       {bmi,rel},{and_,idy},{kil,non},{rla,idy},/* 30 */
+       {nop,zpx},{and_,zpx},{rol,zpx},{rla,zpx},
+       {sec,imp},{and_,aby},{nop,imp},{rla,aby},
+       {nop,abx},{and_,abx},{rol,abx},{rla,abx},
+       {rti,imp},{eor,idx},{kil,non},{sre,idx},/* 40 */
+       {nop,zpg},{eor,zpg},{lsr,zpg},{sre,zpg},
+       {pha,imp},{eor,imm},{lsr,acc},{asr,imm},
+       {jmp,adr},{eor,aba},{lsr,aba},{sre,aba},
+       {bvc,rel},{eor,idy},{kil,non},{sre,idy},/* 50 */
+       {nop,zpx},{eor,zpx},{lsr,zpx},{sre,zpx},
+       {cli,imp},{eor,aby},{nop,imp},{sre,aby},
+       {nop,abx},{eor,abx},{lsr,abx},{sre,abx},
+       {rts,imp},{adc,idx},{kil,non},{rra,idx},/* 60 */
+       {nop,zpg},{adc,zpg},{ror,zpg},{rra,zpg},
+       {pla,imp},{adc,imm},{ror,acc},{arr,imm},
+       {jmp,ind},{adc,aba},{ror,aba},{rra,aba},
+       {bvs,rel},{adc,idy},{kil,non},{rra,idy},/* 70 */
+       {nop,zpx},{adc,zpx},{ror,zpx},{rra,zpx},
+       {sei,imp},{adc,aby},{nop,imp},{rra,aby},
+       {nop,abx},{adc,abx},{ror,abx},{rra,abx},
+       {nop,imm},{sta,idx},{nop,imm},{sax,idx},/* 80 */
+       {sty,zpg},{sta,zpg},{stx,zpg},{sax,zpg},
+       {dey,imp},{nop,imm},{txa,imp},{axa,imm},
+       {sty,aba},{sta,aba},{stx,aba},{sax,aba},
+       {bcc,rel},{sta,idy},{kil,non},{say,idy},/* 90 */
+       {sty,zpx},{sta,zpx},{stx,zpy},{sax,zpy},
+       {tya,imp},{sta,aby},{txs,imp},{ssh,aby},
+       {syh,abx},{sta,abx},{sxh,aby},{sah,aby},
+       {ldy,imm},{lda,idx},{ldx,imm},{lax,idx},/* a0 */
+       {ldy,zpg},{lda,zpg},{ldx,zpg},{lax,zpg},
+       {tay,imp},{lda,imm},{tax,imp},{oal,imm},
+       {ldy,aba},{lda,aba},{ldx,aba},{lax,aba},
+       {bcs,rel},{lda,idy},{kil,non},{lax,idy},/* b0 */
+       {ldy,zpx},{lda,zpx},{ldx,zpy},{lax,zpy},
+       {clv,imp},{lda,aby},{tsx,imp},{ast,aby},
+       {ldy,abx},{lda,abx},{ldx,aby},{lax,aby},
+       {cpy,imm},{cmp,idx},{nop,imm},{dcp,idx},/* c0 */
+       {cpy,zpg},{cmp,zpg},{dec,zpg},{dcp,zpg},
+       {iny,imp},{cmp,imm},{dex,imp},{asx,imm},
+       {cpy,aba},{cmp,aba},{dec,aba},{dcp,aba},
+       {bne,rel},{cmp,idy},{kil,non},{dcp,idy},/* d0 */
+       {nop,zpx},{cmp,zpx},{dec,zpx},{dcp,zpx},
+       {cld,imp},{cmp,aby},{nop,imp},{dcp,aby},
+       {nop,abx},{cmp,abx},{dec,abx},{dcp,abx},
+       {cpx,imm},{sbc,idx},{nop,imm},{isb,idx},/* e0 */
+       {cpx,zpg},{sbc,zpg},{inc,zpg},{isb,zpg},
+       {inx,imp},{sbc,imm},{nop,imp},{sbc,imm},
+       {cpx,aba},{sbc,aba},{inc,aba},{isb,aba},
+       {beq,rel},{sbc,idy},{kil,non},{isb,idy},/* f0 */
+       {nop,zpx},{sbc,zpx},{inc,zpx},{isb,zpx},
+       {sed,imp},{sbc,aby},{nop,imp},{isb,aby},
+       {nop,abx},{sbc,abx},{inc,abx},{isb,abx}
+};
+
+static const struct op6502_info op65c02[256] = {
+       {m6502_brk,imm},{ora,idx},{ill,non},{ill,non},/* 00 */
+       {tsb,zpg},{ora,zpg},{asl,zpg},{rmb,zpg},
+       {php,imp},{ora,imm},{asl,acc},{ill,non},
+       {tsb,aba},{ora,aba},{asl,aba},{bbr,zpb},
+       {bpl,rel},{ora,idy},{ora,zpi},{ill,non},/* 10 */
+       {trb,zpg},{ora,zpx},{asl,zpx},{rmb,zpg},
+       {clc,imp},{ora,aby},{ina,imp},{ill,non},
+       {trb,aba},{ora,abx},{asl,abx},{bbr,zpb},
+       {jsr,adr},{and_,idx},{ill,non},{ill,non},/* 20 */
+       {bit,zpg},{and_,zpg},{rol,zpg},{rmb,zpg},
+       {plp,imp},{and_,imm},{rol,acc},{ill,non},
+       {bit,aba},{and_,aba},{rol,aba},{bbr,zpb},
+       {bmi,rel},{and_,idy},{and_,zpi},{ill,non},/* 30 */
+       {bit,zpx},{and_,zpx},{rol,zpx},{rmb,zpg},
+       {sec,imp},{and_,aby},{dea,imp},{ill,non},
+       {bit,abx},{and_,abx},{rol,abx},{bbr,zpb},
+       {rti,imp},{eor,idx},{ill,non},{ill,non},/* 40 */
+       {ill,non},{eor,zpg},{lsr,zpg},{rmb,zpg},
+       {pha,imp},{eor,imm},{lsr,acc},{ill,non},
+       {jmp,adr},{eor,aba},{lsr,aba},{bbr,zpb},
+       {bvc,rel},{eor,idy},{eor,zpi},{ill,non},/* 50 */
+       {ill,non},{eor,zpx},{lsr,zpx},{rmb,zpg},
+       {cli,imp},{eor,aby},{phy,imp},{ill,non},
+       {ill,non},{eor,abx},{lsr,abx},{bbr,zpb},
+       {rts,imp},{adc,idx},{ill,non},{ill,non},/* 60 */
+       {stz,zpg},{adc,zpg},{ror,zpg},{rmb,zpg},
+       {pla,imp},{adc,imm},{ror,acc},{ill,non},
+       {jmp,ind},{adc,aba},{ror,aba},{bbr,zpb},
+       {bvs,rel},{adc,idy},{adc,zpi},{ill,non},/* 70 */
+       {stz,zpx},{adc,zpx},{ror,zpx},{rmb,zpg},
+       {sei,imp},{adc,aby},{ply,imp},{ill,non},
+       {jmp,iax},{adc,abx},{ror,abx},{bbr,zpb},
+       {bra,rel},{sta,idx},{ill,non},{ill,non},/* 80 */
+       {sty,zpg},{sta,zpg},{stx,zpg},{smb,zpg},
+       {dey,imp},{bit,imm},{txa,imp},{ill,non},
+       {sty,aba},{sta,aba},{stx,aba},{bbs,zpb},
+       {bcc,rel},{sta,idy},{sta,zpi},{ill,non},/* 90 */
+       {sty,zpx},{sta,zpx},{stx,zpy},{smb,zpg},
+       {tya,imp},{sta,aby},{txs,imp},{ill,non},
+       {stz,aba},{sta,abx},{stz,abx},{bbs,zpb},
+       {ldy,imm},{lda,idx},{ldx,imm},{ill,non},/* a0 */
+       {ldy,zpg},{lda,zpg},{ldx,zpg},{smb,zpg},
+       {tay,imp},{lda,imm},{tax,imp},{ill,non},
+       {ldy,aba},{lda,aba},{ldx,aba},{bbs,zpb},
+       {bcs,rel},{lda,idy},{lda,zpi},{ill,non},/* b0 */
+       {ldy,zpx},{lda,zpx},{ldx,zpy},{smb,zpg},
+       {clv,imp},{lda,aby},{tsx,imp},{ill,non},
+       {ldy,abx},{lda,abx},{ldx,aby},{bbs,zpb},
+       {cpy,imm},{cmp,idx},{ill,non},{ill,non},/* c0 */
+       {cpy,zpg},{cmp,zpg},{dec,zpg},{smb,zpg},
+       {iny,imp},{cmp,imm},{dex,imp},{ill,non},
+       {cpy,aba},{cmp,aba},{dec,aba},{bbs,zpb},
+       {bne,rel},{cmp,idy},{cmp,zpi},{ill,non},/* d0 */
+       {ill,non},{cmp,zpx},{dec,zpx},{smb,zpg},
+       {cld,imp},{cmp,aby},{phx,imp},{ill,non},
+       {ill,non},{cmp,abx},{dec,abx},{bbs,zpb},
+       {cpx,imm},{sbc,idx},{ill,non},{ill,non},/* e0 */
+       {cpx,zpg},{sbc,zpg},{inc,zpg},{smb,zpg},
+       {inx,imp},{sbc,imm},{nop,imp},{ill,non},
+       {cpx,aba},{sbc,aba},{inc,aba},{bbs,zpb},
+       {beq,rel},{sbc,idy},{sbc,zpi},{ill,non},/* f0 */
+       {ill,non},{sbc,zpx},{inc,zpx},{smb,zpg},
+       {sed,imp},{sbc,aby},{plx,imp},{ill,non},
+       {ill,non},{sbc,abx},{inc,abx},{bbs,zpb}
+};
+
+/* only bsr additional to 65c02 yet */
+static const struct op6502_info op65sc02[256] = {
+       {m6502_brk,imm},{ora,idx},{ill,non},{ill,non},/* 00 */
+       {tsb,zpg},{ora,zpg},{asl,zpg},{rmb,zpg},
+       {php,imp},{ora,imm},{asl,acc},{ill,non},
+       {tsb,aba},{ora,aba},{asl,aba},{bbr,zpb},
+       {bpl,rel},{ora,idy},{ora,zpi},{ill,non},/* 10 */
+       {trb,zpg},{ora,zpx},{asl,zpx},{rmb,zpg},
+       {clc,imp},{ora,aby},{ina,imp},{ill,non},
+       {trb,aba},{ora,abx},{asl,abx},{bbr,zpb},
+       {jsr,adr},{and_,idx},{ill,non},{ill,non},/* 20 */
+       {bit,zpg},{and_,zpg},{rol,zpg},{rmb,zpg},
+       {plp,imp},{and_,imm},{rol,acc},{ill,non},
+       {bit,aba},{and_,aba},{rol,aba},{bbr,zpb},
+       {bmi,rel},{and_,idy},{and_,zpi},{ill,non},/* 30 */
+       {bit,zpx},{and_,zpx},{rol,zpx},{rmb,zpg},
+       {sec,imp},{and_,aby},{dea,imp},{ill,non},
+       {bit,abx},{and_,abx},{rol,abx},{bbr,zpb},
+       {rti,imp},{eor,idx},{ill,non},{ill,non},/* 40 */
+       {ill,non},{eor,zpg},{lsr,zpg},{rmb,zpg},
+       {pha,imp},{eor,imm},{lsr,acc},{ill,non},
+       {jmp,adr},{eor,aba},{lsr,aba},{bbr,zpb},
+       {bvc,rel},{eor,idy},{eor,zpi},{ill,non},/* 50 */
+       {ill,non},{eor,zpx},{lsr,zpx},{rmb,zpg},
+       {cli,imp},{eor,aby},{phy,imp},{ill,non},
+       {ill,non},{eor,abx},{lsr,abx},{bbr,zpb},
+       {rts,imp},{adc,idx},{ill,non},{bsr,rw2},/* 60 */
+       {stz,zpg},{adc,zpg},{ror,zpg},{rmb,zpg},
+       {pla,imp},{adc,imm},{ror,acc},{ill,non},
+       {jmp,ind},{adc,aba},{ror,aba},{bbr,zpb},
+       {bvs,rel},{adc,idy},{adc,zpi},{ill,non},/* 70 */
+       {stz,zpx},{adc,zpx},{ror,zpx},{rmb,zpg},
+       {sei,imp},{adc,aby},{ply,imp},{ill,non},
+       {jmp,iax},{adc,abx},{ror,abx},{bbr,zpb},
+       {bra,rel},{sta,idx},{ill,non},{ill,non},/* 80 */
+       {sty,zpg},{sta,zpg},{stx,zpg},{smb,zpg},
+       {dey,imp},{bit,imm},{txa,imp},{ill,non},
+       {sty,aba},{sta,aba},{stx,aba},{bbs,zpb},
+       {bcc,rel},{sta,idy},{sta,zpi},{ill,non},/* 90 */
+       {sty,zpx},{sta,zpx},{stx,zpy},{smb,zpg},
+       {tya,imp},{sta,aby},{txs,imp},{ill,non},
+       {stz,aba},{sta,abx},{stz,abx},{bbs,zpb},
+       {ldy,imm},{lda,idx},{ldx,imm},{ill,non},/* a0 */
+       {ldy,zpg},{lda,zpg},{ldx,zpg},{smb,zpg},
+       {tay,imp},{lda,imm},{tax,imp},{ill,non},
+       {ldy,aba},{lda,aba},{ldx,aba},{bbs,zpb},
+       {bcs,rel},{lda,idy},{lda,zpi},{ill,non},/* b0 */
+       {ldy,zpx},{lda,zpx},{ldx,zpy},{smb,zpg},
+       {clv,imp},{lda,aby},{tsx,imp},{ill,non},
+       {ldy,abx},{lda,abx},{ldx,aby},{bbs,zpb},
+       {cpy,imm},{cmp,idx},{ill,non},{ill,non},/* c0 */
+       {cpy,zpg},{cmp,zpg},{dec,zpg},{smb,zpg},
+       {iny,imp},{cmp,imm},{dex,imp},{ill,non},
+       {cpy,aba},{cmp,aba},{dec,aba},{bbs,zpb},
+       {bne,rel},{cmp,idy},{cmp,zpi},{ill,non},/* d0 */
+       {ill,non},{cmp,zpx},{dec,zpx},{smb,zpg},
+       {cld,imp},{cmp,aby},{phx,imp},{ill,non},
+       {ill,non},{cmp,abx},{dec,abx},{bbs,zpb},
+       {cpx,imm},{sbc,idx},{ill,non},{ill,non},/* e0 */
+       {cpx,zpg},{sbc,zpg},{inc,zpg},{smb,zpg},
+       {inx,imp},{sbc,imm},{nop,imp},{ill,non},
+       {cpx,aba},{sbc,aba},{inc,aba},{bbs,zpb},
+       {beq,rel},{sbc,idy},{sbc,zpi},{ill,non},/* f0 */
+       {ill,non},{sbc,zpx},{inc,zpx},{smb,zpg},
+       {sed,imp},{sbc,aby},{plx,imp},{ill,non},
+       {ill,non},{sbc,abx},{inc,abx},{bbs,zpb}
+};
+
+static const struct op6502_info op65ce02[256] = {
+       {m6502_brk,imm},{ora,idx},{cle,imp},{see,imp},/* 00 */
+       {tsb,zpg},{ora,zpg},{asl,zpg},{rmb,zpg},
+       {php,imp},{ora,imm},{asl,acc},{tsy,imp},
+       {tsb,aba},{ora,aba},{asl,aba},{bbr,zpb},
+       {bpl,rel},{ora,idy},{ora,idz},{bpl,rw2},/* 10 */
+       {trb,zpg},{ora,zpx},{asl,zpx},{rmb,zpg},
+       {clc,imp},{ora,aby},{ina,imp},{inz,imp},
+       {trb,aba},{ora,abx},{asl,abx},{bbr,zpb},
+       {jsr,adr},{and_,idx},{jsr,ind},{jsr,iax},/* 20 */
+       {bit,zpg},{and_,zpg},{rol,zpg},{rmb,zpg},
+       {plp,imp},{and_,imm},{rol,acc},{tys,imp},
+       {bit,aba},{and_,aba},{rol,aba},{bbr,zpb},
+       {bmi,rel},{and_,idz},{and_,zpi},{bmi,rw2},/* 30 */
+       {bit,zpx},{and_,zpx},{rol,zpx},{rmb,zpg},
+       {sec,imp},{and_,aby},{dea,imp},{dez,imp},
+       {bit,abx},{and_,abx},{rol,abx},{bbr,zpb},
+       {rti,imp},{eor,idx},{neg,imp},{asr2,imp},/* 40 */
+       {asr2,zpg},{eor,zpg},{lsr,zpg},{rmb,zpg},
+       {pha,imp},{eor,imm},{lsr,acc},{taz,imp},
+       {jmp,adr},{eor,aba},{lsr,aba},{bbr,zpb},
+       {bvc,rel},{eor,idy},{eor,idz},{bvc,rw2},/* 50 */
+       {asr2,zpx},{eor,zpx},{lsr,zpx},{rmb,zpg},
+       {cli,imp},{eor,aby},{phy,imp},{tab,imp},
+       {aug,iw3},{eor,abx},{lsr,abx},{bbr,zpb},
+       {rts,imp},{adc,idx},{rtn,imm},{bsr,rw2},/* 60 */
+       {stz2,zpg},{adc,zpg},{ror,zpg},{rmb,zpg},
+       {pla,imp},{adc,imm},{ror,acc},{tza,imp},
+       {jmp,ind},{adc,aba},{ror,aba},{bbr,zpb},
+       {bvs,rel},{adc,idy},{adc,zpi},{bvs,rw2},/* 70 */
+       {stz2,zpx},{adc,zpx},{ror,zpx},{rmb,zpg},
+       {sei,imp},{adc,aby},{ply,imp},{tba,imp},
+       {jmp,iax},{adc,abx},{ror,abx},{bbr,zpb},
+       {bra,rel},{sta,idx},{sta,isy},{bra,rw2},/* 80 */
+       {sty,zpg},{sta,zpg},{stx,zpg},{smb,zpg},
+       {dey,imp},{bit,imm},{txa,imp},{sty,abx},
+       {sty,aba},{sta,aba},{stx,aba},{bbs,zpb},
+       {bcc,rel},{sta,idy},{sta,inz},{bcc,rw2},/* 90 */
+       {sty,zpx},{sta,zpx},{stx,zpy},{smb,zpg},
+       {tya,imp},{sta,aby},{txs,imp},{stx,aby},
+       {stz2,aba},{sta,abx},{stz2,abx},{bbs,zpb},
+       {ldy,imm},{lda,idx},{ldx,imm},{ldz,imm},/* a0 */
+       {ldy,zpg},{lda,zpg},{ldx,zpg},{smb,zpg},
+       {tay,imp},{lda,imm},{tax,imp},{ldz,aba},
+       {ldy,aba},{lda,aba},{ldx,aba},{bbs,zpb},
+       {bcs,rel},{lda,idy},{lda,inz},{bcs,rw2},/* b0 */
+       {ldy,zpx},{lda,zpx},{ldx,zpy},{smb,zpg},
+       {clv,imp},{lda,aby},{tsx,imp},{ldz,abx},
+       {ldy,abx},{lda,abx},{ldx,aby},{bbs,zpb},
+       {cpy,imm},{cmp,idx},{cpz,imm},{dew,zpg},/* c0 */
+       {cpy,zpg},{cmp,zpg},{dec,zpg},{smb,zpg},
+       {iny,imp},{cmp,imm},{dex,imp},{asw,aba},
+       {cpy,aba},{cmp,aba},{dec,aba},{bbs,zpb},
+       {bne,rel},{cmp,idy},{cmp,idz},{bne,rw2},/* d0 */
+       {cpz,zpg},{cmp,zpx},{dec,zpx},{smb,zpg},
+       {cld,imp},{cmp,aby},{phx,imp},{phz,imp},
+       {cpz,aba},{cmp,abx},{dec,abx},{bbs,zpb},
+       {cpx,imm},{sbc,idx},{lda,isy},{inw,zpg},/* e0 */
+       {cpx,zpg},{sbc,zpg},{inc,zpg},{smb,zpg},
+       {inx,imp},{sbc,imm},{nop,imp},{row,aba},
+       {cpx,aba},{sbc,aba},{inc,aba},{bbs,zpb},
+       {beq,rel},{sbc,idy},{sbc,idz},{beq,rw2},/* f0 */
+       {phw,iw2},{sbc,zpx},{inc,zpx},{smb,zpg},
+       {sed,imp},{sbc,aby},{plx,imp},{plz,imp},
+       {phw,aba},{sbc,abx},{inc,abx},{bbs,zpb}
+};
+
+// only map instead of aug and 20 bit memory management
+static const struct op6502_info op4510[256] = {
+       {m6502_brk,imm},{ora,idx},{cle,imp},{see,imp},/* 00 */
+       {tsb,zpg},{ora,zpg},{asl,zpg},{rmb,zpg},
+       {php,imp},{ora,imm},{asl,acc},{tsy,imp},
+       {tsb,aba},{ora,aba},{asl,aba},{bbr,zpb},
+       {bpl,rel},{ora,idy},{ora,idz},{bpl,rw2},/* 10 */
+       {trb,zpg},{ora,zpx},{asl,zpx},{rmb,zpg},
+       {clc,imp},{ora,aby},{ina,imp},{inz,imp},
+       {trb,aba},{ora,abx},{asl,abx},{bbr,zpb},
+       {jsr,adr},{and_,idx},{jsr,ind},{jsr,iax},/* 20 */
+       {bit,zpg},{and_,zpg},{rol,zpg},{rmb,zpg},
+       {plp,imp},{and_,imm},{rol,acc},{tys,imp},
+       {bit,aba},{and_,aba},{rol,aba},{bbr,zpb},
+       {bmi,rel},{and_,idz},{and_,zpi},{bmi,rw2},/* 30 */
+       {bit,zpx},{and_,zpx},{rol,zpx},{rmb,zpg},
+       {sec,imp},{and_,aby},{dea,imp},{dez,imp},
+       {bit,abx},{and_,abx},{rol,abx},{bbr,zpb},
+       {rti,imp},{eor,idx},{neg,imp},{asr2,imp},/* 40 */
+       {asr2,zpg},{eor,zpg},{lsr,zpg},{rmb,zpg},
+       {pha,imp},{eor,imm},{lsr,acc},{taz,imp},
+       {jmp,adr},{eor,aba},{lsr,aba},{bbr,zpb},
+       {bvc,rel},{eor,idy},{eor,idz},{bvc,rw2},/* 50 */
+       {asr2,zpx},{eor,zpx},{lsr,zpx},{rmb,zpg},
+       {cli,imp},{eor,aby},{phy,imp},{tab,imp},
+       {map,imp},{eor,abx},{lsr,abx},{bbr,zpb},
+       {rts,imp},{adc,idx},{rtn,imm},{bsr,rw2},/* 60 */
+       {stz2,zpg},{adc,zpg},{ror,zpg},{rmb,zpg},
+       {pla,imp},{adc,imm},{ror,acc},{tza,imp},
+       {jmp,ind},{adc,aba},{ror,aba},{bbr,zpb},
+       {bvs,rel},{adc,idy},{adc,zpi},{bvs,rw2},/* 70 */
+       {stz2,zpx},{adc,zpx},{ror,zpx},{rmb,zpg},
+       {sei,imp},{adc,aby},{ply,imp},{tba,imp},
+       {jmp,iax},{adc,abx},{ror,abx},{bbr,zpb},
+       {bra,rel},{sta,idx},{sta,isy},{bra,rw2},/* 80 */
+       {sty,zpg},{sta,zpg},{stx,zpg},{smb,zpg},
+       {dey,imp},{bit,imm},{txa,imp},{sty,abx},
+       {sty,aba},{sta,aba},{stx,aba},{bbs,zpb},
+       {bcc,rel},{sta,idy},{sta,inz},{bcc,rw2},/* 90 */
+       {sty,zpx},{sta,zpx},{stx,zpy},{smb,zpg},
+       {tya,imp},{sta,aby},{txs,imp},{stx,aby},
+       {stz2,aba},{sta,abx},{stz2,abx},{bbs,zpb},
+       {ldy,imm},{lda,idx},{ldx,imm},{ldz,imm},/* a0 */
+       {ldy,zpg},{lda,zpg},{ldx,zpg},{smb,zpg},
+       {tay,imp},{lda,imm},{tax,imp},{ldz,aba},
+       {ldy,aba},{lda,aba},{ldx,aba},{bbs,zpb},
+       {bcs,rel},{lda,idy},{lda,inz},{bcs,rw2},/* b0 */
+       {ldy,zpx},{lda,zpx},{ldx,zpy},{smb,zpg},
+       {clv,imp},{lda,aby},{tsx,imp},{ldz,abx},
+       {ldy,abx},{lda,abx},{ldx,aby},{bbs,zpb},
+       {cpy,imm},{cmp,idx},{cpz,imm},{dew,zpg},/* c0 */
+       {cpy,zpg},{cmp,zpg},{dec,zpg},{smb,zpg},
+       {iny,imp},{cmp,imm},{dex,imp},{asw,aba},
+       {cpy,aba},{cmp,aba},{dec,aba},{bbs,zpb},
+       {bne,rel},{cmp,idy},{cmp,idz},{bne,rw2},/* d0 */
+       {cpz,zpg},{cmp,zpx},{dec,zpx},{smb,zpg},
+       {cld,imp},{cmp,aby},{phx,imp},{phz,imp},
+       {cpz,aba},{cmp,abx},{dec,abx},{bbs,zpb},
+       {cpx,imm},{sbc,idx},{lda,isy},{inw,zpg},/* e0 */
+       {cpx,zpg},{sbc,zpg},{inc,zpg},{smb,zpg},
+       {inx,imp},{sbc,imm},{nop,imp},{row,aba},
+       {cpx,aba},{sbc,aba},{inc,aba},{bbs,zpb},
+       {beq,rel},{sbc,idy},{sbc,idz},{beq,rw2},/* f0 */
+       {phw,iw2},{sbc,zpx},{inc,zpx},{smb,zpg},
+       {sed,imp},{sbc,aby},{plx,imp},{plz,imp},
+       {phw,aba},{sbc,abx},{inc,abx},{bbs,zpb}
+};
+
+static const struct op6502_info opdeco16[256] =
+{
+       {m6502_brk,imp},{ora,idx},{ill,non},{ill,non},/* 00 */
+       {ill,non},{ora,zpg},{asl,zpg},{ill,non},
+       {php,imp},{ora,imm},{asl,acc},{u0B,zpg},
+       {ill,non},{ora,aba},{asl,aba},{ill,non},
+       {bpl,rel},{ora,idy},{ill,non},{u13,zpg},/* 10 */
+       {ill,non},{ora,zpx},{asl,zpx},{ill,non},
+       {clc,imp},{ora,aby},{ill,non},{ill,non},
+       {ill,non},{ora,abx},{asl,abx},{ill,non},
+       {jsr,adr},{and_,idx},{ill,non},{u23,zpg},/* 20 */
+       {bit,zpg},{and_,zpg},{rol,zpg},{ill,non},
+       {plp,imp},{and_,imm},{rol,acc},{ill,non},
+       {bit,aba},{and_,aba},{rol,aba},{ill,non},
+       {bmi,rel},{and_,idy},{ill,non},{ill,non},/* 30 */
+       {ill,non},{and_,zpx},{rol,zpx},{ill,non},
+       {sec,imp},{and_,aby},{ill,non},{ill,non},
+       {ill,non},{and_,abx},{rol,abx},{u3F,zpg},
+       {rti,imp},{eor,idx},{ill,non},{ill,non},/* 40 */
+       {ill,non},{eor,zpg},{lsr,zpg},{ill,non},
+       {pha,imp},{eor,imm},{lsr,acc},{u4B,zpg},
+       {jmp,adr},{eor,aba},{lsr,aba},{ill,non},
+       {bvc,rel},{eor,idy},{ill,non},{ill,non},/* 50 */
+       {ill,non},{eor,zpx},{lsr,zpx},{ill,non},
+       {cli,imp},{eor,aby},{ill,non},{ill,non},
+       {ill,non},{eor,abx},{lsr,abx},{ill,non},
+       {rts,imp},{adc,idx},{ill,non},{ill,non},/* 60 */
+       {ill,non},{adc,zpg},{ror,zpg},{vbl,zpg},                // MISH
+       {pla,imp},{adc,imm},{ror,acc},{ill,non},
+       {jmp,ind},{adc,aba},{ror,aba},{ill,non},
+       {bvs,rel},{adc,idy},{ill,non},{ill,non},/* 70 */
+       {ill,non},{adc,zpx},{ror,zpx},{ill,non},
+       {sei,imp},{adc,aby},{ill,non},{ill,non},
+       {ill,non},{adc,abx},{ror,abx},{ill,non},
+       {ill,non},{sta,idx},{ill,non},{ill,non},/* 80 */
+       {sty,zpg},{sta,zpg},{stx,zpg},{u87,zpg},
+       {dey,imp},{ill,non},{txa,imp},{ill,non},
+       {sty,aba},{sta,aba},{stx,aba},{u8F,zpg},
+       {bcc,rel},{sta,idy},{ill,non},{ill,non},/* 90 */
+       {sty,zpx},{sta,zpx},{stx,zpy},{ill,non},
+       {tya,imp},{sta,aby},{txs,imp},{ill,non},
+       {ill,non},{sta,abx},{ill,non},{ill,non},
+       {ldy,imm},{lda,idx},{ldx,imm},{uA3,zpg},/* a0 */
+       {ldy,zpg},{lda,zpg},{ldx,zpg},{ill,non},
+       {tay,imp},{lda,imm},{tax,imp},{uAB,zpg},
+       {ldy,aba},{lda,aba},{ldx,aba},{ill,non},
+       {bcs,rel},{lda,idy},{ill,non},{ill,non},/* b0 */
+       {ldy,zpx},{lda,zpx},{ldx,zpy},{ill,non},
+       {clv,imp},{lda,aby},{tsx,imp},{uBB,zpg},
+       {ldy,abx},{lda,abx},{ldx,aby},{ill,non},
+       {cpy,imm},{cmp,idx},{ill,non},{ill,non},/* c0 */
+       {cpy,zpg},{cmp,zpg},{dec,zpg},{ill,non},
+       {iny,imp},{cmp,imm},{dex,imp},{ill,non},
+       {cpy,aba},{cmp,aba},{dec,aba},{ill,non},
+       {bne,rel},{cmp,idy},{ill,non},{ill,non},/* d0 */
+       {ill,non},{cmp,zpx},{dec,zpx},{ill,non},
+       {cld,imp},{cmp,aby},{ill,non},{ill,non},
+       {ill,non},{cmp,abx},{dec,abx},{ill,non},
+       {cpx,imm},{sbc,idx},{ill,non},{ill,non},/* e0 */
+       {cpx,zpg},{sbc,zpg},{inc,zpg},{ill,non},
+       {inx,imp},{sbc,imm},{nop,imp},{ill,non},
+       {cpx,aba},{sbc,aba},{inc,aba},{ill,non},
+       {beq,rel},{sbc,idy},{ill,non},{ill,non},/* f0 */
+       {ill,non},{sbc,zpx},{inc,zpx},{ill,non},
+       {sed,imp},{sbc,aby},{ill,non},{ill,non},
+       {ill,non},{sbc,abx},{inc,abx},{ill,non}
+};
+
+/*****************************************************************************
+ * Disassemble a single opcode starting at pc
+ *****************************************************************************/
+static unsigned internal_m6502_dasm(const struct op6502_info *opinfo, _TCHAR *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, symbol_t *first_symbol)
+{
+       _TCHAR *dst = buffer;
+       INT8 offset;
+       INT16 offset16;
+       unsigned PC = pc;
+       UINT16 addr;
+       UINT8 op, opc, arg, value;
+       UINT32 flags;
+       int pos = 0;
+
+       op = oprom[pos++];
+       pc++;
+
+       opc = opinfo[op].opc;
+       arg = opinfo[op].arg;
+
+       /* determine dasmflags */
+       switch(opc)
+       {
+               case jsr:
+               case bsr:
+                       flags = DASMFLAG_SUPPORTED | DASMFLAG_STEP_OVER;
+                       break;
+
+               case rts:
+               case rti:
+               case rtn:
+                       flags = DASMFLAG_SUPPORTED | DASMFLAG_STEP_OUT;
+                       break;
+
+               default:
+                       flags = DASMFLAG_SUPPORTED;
+                       break;
+       }
+
+       dst += _stprintf(dst, _T("%-5s"), token[opc]);
+       if( opc == bbr || opc == bbs || opc == rmb || opc == smb )
+               dst += _stprintf(dst, _T("%d,"), (op >> 4) & 7);
+
+       switch(arg)
+       {
+       case imp:
+               break;
+
+       case acc:
+               dst += _stprintf(dst, _T("a"));
+               break;
+
+       case rel:
+               offset = (INT8) opram[pos++];
+               pc++;
+               dst += _stprintf(dst, _T("%s"), get_value_or_symbol(first_symbol, _T("$%04X"), (pc + offset) & 0xFFFF));
+               break;
+
+       case rw2:
+               offset16 = (opram[pos] | (opram[pos+1] << 8)) -1;
+               pos += 2;
+               pc += 2;
+               dst += _stprintf(dst, _T("%s"), get_value_or_symbol(first_symbol, _T("$%04X"), (pc + offset16) & 0xFFFF));
+               break;
+
+       case imm:
+               value = opram[pos++];
+               pc++;
+               dst += _stprintf(dst, _T("#$%02X"), value);
+               break;
+
+       case zpg:
+               addr = opram[pos++];
+               pc++;
+               dst += _stprintf(dst, _T("$%02X"), addr);
+               break;
+
+       case zpx:
+               addr = opram[pos++];
+               pc++;
+               dst += _stprintf(dst, _T("$%02X,x"), addr);
+               break;
+
+       case zpy:
+               addr = opram[pos++];
+               pc++;
+               dst += _stprintf(dst, _T("$%02X,y"), addr);
+               break;
+
+       case idx:
+               addr = opram[pos++];
+               pc++;
+               dst += _stprintf(dst, _T("($%02X,x)"), addr);
+               break;
+
+       case idy:
+               addr = opram[pos++];
+               pc++;
+               dst += _stprintf(dst, _T("($%02X),y"), addr);
+               break;
+
+       case zpi:
+               addr = opram[pos++];
+               pc++;
+               dst += _stprintf(dst, _T("($%02X)"), addr);
+               break;
+
+       case zpb:
+               addr = opram[pos++];
+               pc++;
+               dst += _stprintf(dst, _T("$%02X"), addr);
+               offset = (INT8) opram[pos++];
+               pc++;
+               dst += _stprintf(dst, _T(",%s"), get_value_or_symbol(first_symbol, _T("$%04X"), pc + offset));
+               break;
+
+       case adr:
+               addr = (opram[pos] | (opram[pos+1] << 8));
+               pos += 2;
+               pc += 2;
+               dst += _stprintf(dst, _T("%s"), get_value_or_symbol(first_symbol, _T("$%04X"), addr));
+               break;
+
+       case aba:
+               addr = (opram[pos] | (opram[pos+1] << 8));
+               pos += 2;
+               pc += 2;
+               dst += _stprintf(dst, _T("%s"), get_value_or_symbol(first_symbol, _T("$%04X"), addr));
+               break;
+
+       case abx:
+               addr = (opram[pos] | (opram[pos+1] << 8));
+               pos += 2;
+               pc += 2;
+               dst += _stprintf(dst, _T("%s,x"), get_value_or_symbol(first_symbol, _T("$%04X"), addr));
+               break;
+
+       case aby:
+               addr = (opram[pos] | (opram[pos+1] << 8));
+               pos += 2;
+               pc += 2;
+               dst += _stprintf(dst, _T("%s,y"), get_value_or_symbol(first_symbol, _T("$%04X"), addr));
+               break;
+
+       case ind:
+               addr = (opram[pos] | (opram[pos+1] << 8));
+               pos += 2;
+               pc += 2;
+               dst += _stprintf(dst, _T("(%s)"), get_value_or_symbol(first_symbol, _T("$%04X"), addr));
+               break;
+
+       case iax:
+               addr = (opram[pos] | (opram[pos+1] << 8));
+               pos += 2;
+               pc += 2;
+               dst += _stprintf(dst, _T("(%s),X"), get_value_or_symbol(first_symbol, _T("$%04X"), addr));
+               break;
+
+       case iw2:
+               addr = (opram[pos] | (opram[pos+1] << 8));
+               pos += 2;
+               pc += 2;
+               dst += _stprintf(dst, _T("%s"), get_value_or_symbol(first_symbol, _T("$%04X"), addr));
+               break;
+
+       case iw3:
+               addr = (opram[pos] | (opram[pos+1] << 8) | (opram[pos+2] << 16));
+               pos += 3;
+               pc += 3;
+               dst += _stprintf(dst, _T("#%s"), get_value_or_symbol(first_symbol, _T("$%06X"), addr));
+               break;
+
+       case idz:
+               addr = (INT8) opram[pos++];
+               pc++;
+               dst += _stprintf(dst, _T("($%02X),z"), addr);
+               break;
+
+       case isy:
+               op = opram[pos++];
+               pc++;
+               addr = op;
+               dst += _stprintf(dst, _T("(s,$%02X),y"), addr);
+               break;
+
+       default:
+               dst += _stprintf(dst, _T("$%02X"), op);
+               break;
+       }
+       return (pc - PC) | flags;
+}
+
+CPU_DISASSEMBLE( m6502 )
+{
+       return internal_m6502_dasm(op6502, buffer, pc, oprom, opram, first_symbol);
+}
+
+CPU_DISASSEMBLE( m65sc02 )
+{
+       return internal_m6502_dasm(op65sc02, buffer, pc, oprom, opram, first_symbol);
+}
+
+CPU_DISASSEMBLE( m65c02 )
+{
+       return internal_m6502_dasm(op65c02, buffer, pc, oprom, opram, first_symbol);
+}
+
+CPU_DISASSEMBLE( m65ce02 )
+{
+       return internal_m6502_dasm(op65ce02, buffer, pc, oprom, opram, first_symbol);
+}
+
+CPU_DISASSEMBLE( m6510 )
+{
+       return internal_m6502_dasm(op6502, buffer, pc, oprom, opram, first_symbol);
+}
+
+CPU_DISASSEMBLE( deco16 )
+{
+       return internal_m6502_dasm(opdeco16, buffer, pc, oprom, opram, first_symbol);
+}
+
+CPU_DISASSEMBLE( m4510 )
+{
+       return internal_m6502_dasm(op4510, buffer, pc, oprom, opram, first_symbol);
+}
diff --git a/source/src/vm/mame/emu/cpu/m6502/readme_takeda.txt b/source/src/vm/mame/emu/cpu/m6502/readme_takeda.txt
new file mode 100644 (file)
index 0000000..c819b15
--- /dev/null
@@ -0,0 +1 @@
+Based on MAME 0.147.
index ed7100a..d6aaeb0 100644 (file)
@@ -77,7 +77,7 @@ enum
 
 struct description_t
 {
-       const char *mnemonic;
+       const _TCHAR *mnemonic;
        format_t format;
        int flags;
 };
@@ -122,96 +122,96 @@ enum opcodes {
 static const description_t descriptions[144+3+1] =
 {
        /* basic instruction set */
-       { "a",      format_1,   ps_any },           { "ab",     format_1,   ps_any },
-       { "c",      format_1,   ps_any },           { "cb",     format_1,   ps_any },
-       { "s",      format_1,   ps_any },           { "sb",     format_1,   ps_any },
-       { "soc",    format_1,   ps_any },           { "socb",   format_1,   ps_any },
-       { "szc",    format_1,   ps_any },           { "szcb",   format_1,   ps_any },
-       { "mov",    format_1,   ps_any },           { "movb",   format_1,   ps_any },
-       { "coc",    format_3_9, ps_any },           { "czc",    format_3_9, ps_any },
-       { "xor",    format_3_9, ps_any },           { "mpy",    format_3_9, ps_any },
-       { "div",    format_3_9, ps_any },           { "xop",    format_9,   ps_any },
-       { "b",      format_6,   ps_any },           { "bl",     format_6,   ps_any },
-       { "blwp",   format_6,   ps_any },           { "clr",    format_6,   ps_any },
-       { "seto",   format_6,   ps_any },           { "inv",    format_6,   ps_any },
-       { "neg",    format_6,   ps_any },           { "abs",    format_6,   ps_any },
-       { "swpb",   format_6,   ps_any },           { "inc",    format_6,   ps_any },
-       { "inct",   format_6,   ps_any },           { "dec",    format_6,   ps_any },
-       { "dect",   format_6,   ps_any },           { "x",      format_6,   ps_any },
-       { "ldcr",   format_4,   ps_any },           { "stcr",   format_4,   ps_any },
-       { "sbo",    format_2b,  ps_any },           { "sbz",    format_2b,  ps_any },
-       { "tb",     format_2b,  ps_any },           { "jeq",    format_2a,  ps_any },
-       { "jgt",    format_2a,  ps_any },           { "jh",     format_2a,  ps_any },
-       { "jhe",    format_2a,  ps_any },           { "jl",     format_2a,  ps_any },
-       { "jle",    format_2a,  ps_any },           { "jlt",    format_2a,  ps_any },
-       { "jmp",    format_2a,  ps_any },           { "jnc",    format_2a,  ps_any },
-       { "jne",    format_2a,  ps_any },           { "jno",    format_2a,  ps_any },
-       { "joc",    format_2a,  ps_any },           { "jop",    format_2a,  ps_any },
-       { "sla",    format_5,   ps_any },           { "sra",    format_5,   ps_any },
-       { "src",    format_5,   ps_any },           { "srl",    format_5,   ps_any },
-       { "ai",     format_8a,  ps_any|sd_11 },     { "andi",   format_8a,  ps_any|sd_11 },
-       { "ci",     format_8a,  ps_any|sd_11 },     { "li",     format_8a,  ps_any|sd_11 },
-       { "ori",    format_8a,  ps_any|sd_11 },     { "lwpi",   format_8b,  ps_any|sd_11|sd_11_15 },
-       { "limi",   format_8b,  ps_any|sd_11|sd_11_15 },    { "stst",   format_18,  ps_any|sd_11 },
-       { "stwp",   format_18,  ps_any|sd_11 },     { "rtwp",   format_7,   ps_any|sd_11|sd_11_15 },
-       { "idle",   format_7,   ps_any|sd_11|sd_11_15 },    { "rset",   format_7,   ps_any|sd_11|sd_11_15 },
-       { "ckof",   format_7,   ps_any|sd_11|sd_11_15 },    { "ckon",   format_7,   ps_any|sd_11|sd_11_15 },
-       { "lrex",   format_7,   ps_any|sd_11|sd_11_15 },
+       { _T("a"),      format_1,   ps_any },           { _T("ab"),     format_1,   ps_any },
+       { _T("c"),      format_1,   ps_any },           { _T("cb"),     format_1,   ps_any },
+       { _T("s"),      format_1,   ps_any },           { _T("sb"),     format_1,   ps_any },
+       { _T("soc"),    format_1,   ps_any },           { _T("socb"),   format_1,   ps_any },
+       { _T("szc"),    format_1,   ps_any },           { _T("szcb"),   format_1,   ps_any },
+       { _T("mov"),    format_1,   ps_any },           { _T("movb"),   format_1,   ps_any },
+       { _T("coc"),    format_3_9, ps_any },           { _T("czc"),    format_3_9, ps_any },
+       { _T("xor"),    format_3_9, ps_any },           { _T("mpy"),    format_3_9, ps_any },
+       { _T("div"),    format_3_9, ps_any },           { _T("xop"),    format_9,   ps_any },
+       { _T("b"),      format_6,   ps_any },           { _T("bl"),     format_6,   ps_any },
+       { _T("blwp"),   format_6,   ps_any },           { _T("clr"),    format_6,   ps_any },
+       { _T("seto"),   format_6,   ps_any },           { _T("inv"),    format_6,   ps_any },
+       { _T("neg"),    format_6,   ps_any },           { _T("abs"),    format_6,   ps_any },
+       { _T("swpb"),   format_6,   ps_any },           { _T("inc"),    format_6,   ps_any },
+       { _T("inct"),   format_6,   ps_any },           { _T("dec"),    format_6,   ps_any },
+       { _T("dect"),   format_6,   ps_any },           { _T("x"),      format_6,   ps_any },
+       { _T("ldcr"),   format_4,   ps_any },           { _T("stcr"),   format_4,   ps_any },
+       { _T("sbo"),    format_2b,  ps_any },           { _T("sbz"),    format_2b,  ps_any },
+       { _T("tb"),     format_2b,  ps_any },           { _T("jeq"),    format_2a,  ps_any },
+       { _T("jgt"),    format_2a,  ps_any },           { _T("jh"),     format_2a,  ps_any },
+       { _T("jhe"),    format_2a,  ps_any },           { _T("jl"),     format_2a,  ps_any },
+       { _T("jle"),    format_2a,  ps_any },           { _T("jlt"),    format_2a,  ps_any },
+       { _T("jmp"),    format_2a,  ps_any },           { _T("jnc"),    format_2a,  ps_any },
+       { _T("jne"),    format_2a,  ps_any },           { _T("jno"),    format_2a,  ps_any },
+       { _T("joc"),    format_2a,  ps_any },           { _T("jop"),    format_2a,  ps_any },
+       { _T("sla"),    format_5,   ps_any },           { _T("sra"),    format_5,   ps_any },
+       { _T("src"),    format_5,   ps_any },           { _T("srl"),    format_5,   ps_any },
+       { _T("ai"),     format_8a,  ps_any|sd_11 },     { _T("andi"),   format_8a,  ps_any|sd_11 },
+       { _T("ci"),     format_8a,  ps_any|sd_11 },     { _T("li"),     format_8a,  ps_any|sd_11 },
+       { _T("ori"),    format_8a,  ps_any|sd_11 },     { _T("lwpi"),   format_8b,  ps_any|sd_11|sd_11_15 },
+       { _T("limi"),   format_8b,  ps_any|sd_11|sd_11_15 },    { _T("stst"),   format_18,  ps_any|sd_11 },
+       { _T("stwp"),   format_18,  ps_any|sd_11 },     { _T("rtwp"),   format_7,   ps_any|sd_11|sd_11_15 },
+       { _T("idle"),   format_7,   ps_any|sd_11|sd_11_15 },    { _T("rset"),   format_7,   ps_any|sd_11|sd_11_15 },
+       { _T("ckof"),   format_7,   ps_any|sd_11|sd_11_15 },    { _T("ckon"),   format_7,   ps_any|sd_11|sd_11_15 },
+       { _T("lrex"),   format_7,   ps_any|sd_11|sd_11_15 },
 
        /* mapper instruction set */
-       { "lds",    format_6,   ps_mapper },        { "ldd",    format_6,   ps_mapper },
-       { "lmf",    format_10,  ps_mapper },
+       { _T("lds"),    format_6,   ps_mapper },        { _T("ldd"),    format_6,   ps_mapper },
+       { _T("lmf"),    format_10,  ps_mapper },
 
        /* tms9995 instruction set */
-       { "divs",   format_6,   ps_tms9995 },       { "mpys",   format_6,   ps_tms9995 },
-       { "lst",    format_18,  ps_tms9995 },       { "lwp",    format_18,  ps_tms9995 },
+       { _T("divs"),   format_6,   ps_tms9995 },       { _T("mpys"),   format_6,   ps_tms9995 },
+       { _T("lst"),    format_18,  ps_tms9995 },       { _T("lwp"),    format_18,  ps_tms9995 },
 
        /* tms99000 instruction set */
-       { "bind",   format_6,   ps_tms99000 },
+       { _T("bind"),   format_6,   ps_tms99000 },
 
        /* ti990/12 instruction set */
-       { "sram",   format_13,  ps_ti990_12 },      { "slam",   format_13,  ps_ti990_12 },
-       { "rto",    format_11,  ps_ti990_12 },      { "lto",    format_11,  ps_ti990_12 },
-       { "cnto",   format_11,  ps_ti990_12 },      { "slsl",   format_20,  ps_ti990_12 },
-       { "slsp",   format_20,  ps_ti990_12 },      { "bdc",    format_11,  ps_ti990_12 },
-       { "dbc",    format_11,  ps_ti990_12 },      { "swpm",   format_11,  ps_ti990_12 },
-       { "xorm",   format_11,  ps_ti990_12 },      { "orm",    format_11,  ps_ti990_12 },
-       { "andm",   format_11,  ps_ti990_12 },      { "sm",     format_11,  ps_ti990_12 },
-       { "am",     format_11,  ps_ti990_12 },      { "mova",   format_19,  ps_ti990_12 },
-       { "emd",    format_7,   ps_ti990_12 },      { "eint",   format_7,   ps_ti990_12 },
-       { "dint",   format_7,   ps_ti990_12 },      { "stpc",   format_18,  ps_ti990_12 },
-       { "cs",     format_12,  ps_ti990_12 },      { "seqb",   format_12,  ps_ti990_12 },
-       { "movs",   format_12,  ps_ti990_12 },      { "lim",    format_18,  ps_ti990_12 },
-       { "lcs",    format_18,  ps_ti990_12 },      { "blsk",   format_8a,  ps_ti990_12 },
-       { "mvsr",   format_12,  ps_ti990_12 },      { "mvsk",   format_12,  ps_ti990_12 },
-       { "pops",   format_12,  ps_ti990_12 },      { "pshs",   format_12,  ps_ti990_12 },
-       { "cri",    format_7,   ps_ti990_12 },      { "cdi",    format_7,   ps_ti990_12 },
-       { "negr",   format_7,   ps_ti990_12 },      { "negd",   format_7,   ps_ti990_12 },
-       { "cre",    format_7,   ps_ti990_12 },      { "cde",    format_7,   ps_ti990_12 },
-       { "cer",    format_7,   ps_ti990_12 },      { "ced",    format_7,   ps_ti990_12 },
-       { "nrm",    format_11,  ps_ti990_12 },      { "tmb",    format_14,  ps_ti990_12 },
-       { "tcmb",   format_14,  ps_ti990_12 },      { "tsmb",   format_14,  ps_ti990_12 },
-       { "srj",    format_17,  ps_ti990_12 },      { "arj",    format_17,  ps_ti990_12 },
-       { "xit",    format_7,   ps_ti990_12 },      { "insf",   format_16,  ps_ti990_12 },
-       { "xv",     format_16,  ps_ti990_12 },      { "xf",     format_16,  ps_ti990_12 },
-       { "ar",     format_6,   ps_ti990_12 },      { "cir",    format_6,   ps_ti990_12 },
-       { "sr",     format_6,   ps_ti990_12 },      { "mr",     format_6,   ps_ti990_12 },
-       { "dr",     format_6,   ps_ti990_12 },      { "lr",     format_6,   ps_ti990_12 },
-       { "str",    format_6,   ps_ti990_12 },      { "iof",    format_15,  ps_ti990_12 },
-       { "sneb",   format_12,  ps_ti990_12 },      { "crc",    format_12,  ps_ti990_12 },
-       { "ts",     format_12,  ps_ti990_12 },      { "ad",     format_6,   ps_ti990_12 },
-       { "cid",    format_6,   ps_ti990_12 },      { "sd",     format_6,   ps_ti990_12 },
-       { "md",     format_6,   ps_ti990_12 },      { "dd",     format_6,   ps_ti990_12 },
-       { "ld",     format_6,   ps_ti990_12 },      { "std",    format_6,   ps_ti990_12 },
-       { "ep",     format_21,  ps_ti990_12 },
+       { _T("sram"),   format_13,  ps_ti990_12 },      { _T("slam"),   format_13,  ps_ti990_12 },
+       { _T("rto"),    format_11,  ps_ti990_12 },      { _T("lto"),    format_11,  ps_ti990_12 },
+       { _T("cnto"),   format_11,  ps_ti990_12 },      { _T("slsl"),   format_20,  ps_ti990_12 },
+       { _T("slsp"),   format_20,  ps_ti990_12 },      { _T("bdc"),    format_11,  ps_ti990_12 },
+       { _T("dbc"),    format_11,  ps_ti990_12 },      { _T("swpm"),   format_11,  ps_ti990_12 },
+       { _T("xorm"),   format_11,  ps_ti990_12 },      { _T("orm"),    format_11,  ps_ti990_12 },
+       { _T("andm"),   format_11,  ps_ti990_12 },      { _T("sm"),     format_11,  ps_ti990_12 },
+       { _T("am"),     format_11,  ps_ti990_12 },      { _T("mova"),   format_19,  ps_ti990_12 },
+       { _T("emd"),    format_7,   ps_ti990_12 },      { _T("eint"),   format_7,   ps_ti990_12 },
+       { _T("dint"),   format_7,   ps_ti990_12 },      { _T("stpc"),   format_18,  ps_ti990_12 },
+       { _T("cs"),     format_12,  ps_ti990_12 },      { _T("seqb"),   format_12,  ps_ti990_12 },
+       { _T("movs"),   format_12,  ps_ti990_12 },      { _T("lim"),    format_18,  ps_ti990_12 },
+       { _T("lcs"),    format_18,  ps_ti990_12 },      { _T("blsk"),   format_8a,  ps_ti990_12 },
+       { _T("mvsr"),   format_12,  ps_ti990_12 },      { _T("mvsk"),   format_12,  ps_ti990_12 },
+       { _T("pops"),   format_12,  ps_ti990_12 },      { _T("pshs"),   format_12,  ps_ti990_12 },
+       { _T("cri"),    format_7,   ps_ti990_12 },      { _T("cdi"),    format_7,   ps_ti990_12 },
+       { _T("negr"),   format_7,   ps_ti990_12 },      { _T("negd"),   format_7,   ps_ti990_12 },
+       { _T("cre"),    format_7,   ps_ti990_12 },      { _T("cde"),    format_7,   ps_ti990_12 },
+       { _T("cer"),    format_7,   ps_ti990_12 },      { _T("ced"),    format_7,   ps_ti990_12 },
+       { _T("nrm"),    format_11,  ps_ti990_12 },      { _T("tmb"),    format_14,  ps_ti990_12 },
+       { _T("tcmb"),   format_14,  ps_ti990_12 },      { _T("tsmb"),   format_14,  ps_ti990_12 },
+       { _T("srj"),    format_17,  ps_ti990_12 },      { _T("arj"),    format_17,  ps_ti990_12 },
+       { _T("xit"),    format_7,   ps_ti990_12 },      { _T("insf"),   format_16,  ps_ti990_12 },
+       { _T("xv"),     format_16,  ps_ti990_12 },      { _T("xf"),     format_16,  ps_ti990_12 },
+       { _T("ar"),     format_6,   ps_ti990_12 },      { _T("cir"),    format_6,   ps_ti990_12 },
+       { _T("sr"),     format_6,   ps_ti990_12 },      { _T("mr"),     format_6,   ps_ti990_12 },
+       { _T("dr"),     format_6,   ps_ti990_12 },      { _T("lr"),     format_6,   ps_ti990_12 },
+       { _T("str"),    format_6,   ps_ti990_12 },      { _T("iof"),    format_15,  ps_ti990_12 },
+       { _T("sneb"),   format_12,  ps_ti990_12 },      { _T("crc"),    format_12,  ps_ti990_12 },
+       { _T("ts"),     format_12,  ps_ti990_12 },      { _T("ad"),     format_6,   ps_ti990_12 },
+       { _T("cid"),    format_6,   ps_ti990_12 },      { _T("sd"),     format_6,   ps_ti990_12 },
+       { _T("md"),     format_6,   ps_ti990_12 },      { _T("dd"),     format_6,   ps_ti990_12 },
+       { _T("ld"),     format_6,   ps_ti990_12 },      { _T("std"),    format_6,   ps_ti990_12 },
+       { _T("ep"),     format_21,  ps_ti990_12 },
 
        /* tms9940-only instruction set */
        /* these instructions are said to be format 9 (xop), but since the xop
        level is interpreted as part of the opcode, dca and dcs should be handled
        like format 6.  liim looks like format 18, but slightly different,
        therefore it is handled like a special format. */
-       { "liim",   format_liim,/*ps_tms9940*/0 },  { "dca",    format_6,   /*ps_tms9940*/0 },
-       { "dcs",    format_6,   /*ps_tms9940*/0 },
+       { _T("liim"),   format_liim,/*ps_tms9940*/0 },  { _T("dca"),    format_6,   /*ps_tms9940*/0 },
+       { _T("dcs"),    format_6,   /*ps_tms9940*/0 },
 
        { NULL,     illegal,    ps_any }
 };
@@ -320,24 +320,24 @@ INLINE UINT16 readop_arg(const UINT8 *opram, unsigned pc)
        return result | opram[PC++ - pc];
 }
 
-static int print_arg (char *dest, int mode, int arg, const UINT8 *opram, unsigned pc, symbol_t *first_symbol)
+static int print_arg (_TCHAR *dest, int mode, int arg, const UINT8 *opram, unsigned pc, symbol_t *first_symbol)
 {
        int base;
 
        switch (mode)
        {
                case 0x0:   /* workspace register */
-                       return sprintf (dest, "R%d", arg);
+                       return _stprintf (dest, _T("R%d"), arg);
                case 0x1:   /* workspace register indirect */
-                       return sprintf (dest, "*R%d", arg);
+                       return _stprintf (dest, _T("*R%d"), arg);
                case 0x2:   /* symbolic|indexed */
                        base = readop_arg(opram, pc);
                        if (arg)    /* indexed */
-                               return sprintf (dest, "@>%s(R%d)", get_value_or_symbol(first_symbol, "%04x", base), arg);
+                               return _stprintf (dest, _T("@>%s(R%d)"), get_value_or_symbol(first_symbol, _T("%04x"), base), arg);
                        else        /* symbolic (direct) */
-                               return sprintf (dest, "@>%s", get_value_or_symbol(first_symbol, "%04x", base));
+                               return _stprintf (dest, _T("@>%s"), get_value_or_symbol(first_symbol, _T("%04x"), base));
                case 0x3:   /* workspace register indirect auto increment */
-                       return sprintf (dest, "*R%d+", arg);
+                       return _stprintf (dest, _T("*R%d+"), arg);
        }
 
        return 0;
@@ -347,7 +347,7 @@ static int print_arg (char *dest, int mode, int arg, const UINT8 *opram, unsigne
 /*****************************************************************************
  *  Disassemble a single command and return the number of bytes it uses.
  *****************************************************************************/
-unsigned Dasm9900 (char *buffer, unsigned pc, int model_id, const UINT8 *oprom, const UINT8 *opram, symbol_t *first_symbol)
+unsigned Dasm9900 (_TCHAR *buffer, unsigned pc, int model_id, const UINT8 *oprom, const UINT8 *opram, symbol_t *first_symbol)
 {
        int OP, OP2, opc;
        int sarg, darg, smode, dmode;
@@ -356,7 +356,7 @@ unsigned Dasm9900 (char *buffer, unsigned pc, int model_id, const UINT8 *oprom,
        int bit_position, bit_width;
        unsigned dasmflags = 0;
 
-       const char *mnemonic;
+       const _TCHAR *mnemonic;
        format_t format;
        int flags;
 
@@ -484,11 +484,11 @@ unsigned Dasm9900 (char *buffer, unsigned pc, int model_id, const UINT8 *oprom,
        format = descriptions[opc].format;
 
        /* bl and blwp instructions are subroutines */
-       if (mnemonic != NULL && mnemonic[0] == 'b' && mnemonic[1] == 'l')
+       if (mnemonic != NULL && mnemonic[0] == _T('b') && mnemonic[1] == _T('l'))
                dasmflags = DASMFLAG_STEP_OVER;
 
        /* b *r11 and rtwp are returns */
-       else if (opc == 0x045b || (mnemonic != NULL && strcmp(mnemonic, "rtwp") == 0))
+       else if (opc == 0x045b || (mnemonic != NULL && _tcscmp(mnemonic, _T("rtwp")) == 0))
                dasmflags = DASMFLAG_STEP_OUT;
 
        switch (format)
@@ -499,20 +499,20 @@ unsigned Dasm9900 (char *buffer, unsigned pc, int model_id, const UINT8 *oprom,
                dmode = BITS(OP,4,5);
                darg = BITS(OP,6,9);
 
-               buffer += sprintf (buffer, "%-4s ", mnemonic);
+               buffer += _stprintf (buffer, _T("%-4s "), mnemonic);
                buffer += print_arg (buffer, smode, sarg, opram, pc, first_symbol);
-               buffer += sprintf (buffer, ",");
+               buffer += _stprintf (buffer, _T(","));
                buffer += print_arg (buffer, dmode, darg, opram, pc, first_symbol);
                break;
 
        case format_2a:     /* jump instructions */
                displacement = (signed char)BITS(OP,8,15);
-               sprintf (buffer, "%-4s >%s", mnemonic, get_value_or_symbol(first_symbol, "%04x", 0xffff & (PC + displacement * 2)));
+               _stprintf (buffer, _T("%-4s >%s"), mnemonic, get_value_or_symbol(first_symbol, _T("%04x"), 0xffff & (PC + displacement * 2)));
                break;
 
        case format_2b:     /* bit I/O instructions */
                displacement = (signed char)BITS(OP,8,15);
-               sprintf (buffer, "%-4s >%04x", mnemonic, 0xffff & displacement);
+               _stprintf (buffer, _T("%-4s >%04x"), mnemonic, 0xffff & displacement);
                break;
 
        case format_3_9:    /* logical, multiply, and divide instructions */
@@ -527,15 +527,15 @@ unsigned Dasm9900 (char *buffer, unsigned pc, int model_id, const UINT8 *oprom,
 
                if (format == format_3_9)
                {
-                       buffer += sprintf (buffer, "%-4s ", mnemonic);
+                       buffer += _stprintf (buffer, _T("%-4s "), mnemonic);
                        buffer += print_arg (buffer, smode, sarg, opram, pc, first_symbol);
-                       buffer += sprintf (buffer, ",R%d", darg);
+                       buffer += _stprintf (buffer, _T(",R%d"), darg);
                }
                else
                {
-                       buffer += sprintf (buffer, "%-4s ", mnemonic);
+                       buffer += _stprintf (buffer, _T("%-4s "), mnemonic);
                        buffer += print_arg (buffer, smode, sarg, opram, pc, first_symbol);
-                       buffer += sprintf (buffer, ",%d", darg);
+                       buffer += _stprintf (buffer, _T(",%d"), darg);
                }
                break;
 
@@ -543,39 +543,39 @@ unsigned Dasm9900 (char *buffer, unsigned pc, int model_id, const UINT8 *oprom,
                sarg = BITS(OP,12,15);
                darg = BITS(OP,8,11);
 
-               sprintf (buffer, darg ? "%-4s R%d,%d" : "%-4s R%d,R%d", mnemonic, sarg, darg);
+               _stprintf (buffer, darg ? _T("%-4s R%d,%d") : _T("%-4s R%d,R%d"), mnemonic, sarg, darg);
                break;
 
        case format_6:      /* single address instructions */
                smode = BITS(OP,10,11);
                sarg = BITS(OP,12,15);
 
-               buffer += sprintf (buffer, "%-4s ", mnemonic);
+               buffer += _stprintf (buffer, _T("%-4s "), mnemonic);
                buffer += print_arg (buffer, smode, sarg, opram, pc, first_symbol);
                break;
 
        case format_7:      /* instructions without operands */
-               sprintf (buffer, "%s", mnemonic);
+               _stprintf (buffer, _T("%s"), mnemonic);
                break;
 
        case format_8a:     /* immediate instructions (destination register) */
                darg = BITS(OP,12,15);
                sarg = readop_arg(opram, pc);
 
-               sprintf (buffer, "%-4s R%d,>%s", mnemonic, darg, get_value_or_symbol(first_symbol, "%04x", sarg));
+               _stprintf (buffer, _T("%-4s R%d,>%s"), mnemonic, darg, get_value_or_symbol(first_symbol, _T("%04x"), sarg));
                break;
 
        case format_8b:     /* immediate instructions (no destination register) */
                sarg = readop_arg(opram, pc);
 
-               sprintf (buffer, "%-4s >%s", mnemonic, get_value_or_symbol(first_symbol, "%04x", sarg));
+               _stprintf (buffer, _T("%-4s >%s"), mnemonic, get_value_or_symbol(first_symbol, _T("%04x"), sarg));
                break;
 
        case format_10:     /* memory map file instruction */
                sarg = BITS(OP,12,15);
                darg = BITS(OP,11,11);
 
-               sprintf (buffer, "%-4s R%d,%d", mnemonic, sarg, darg);
+               _stprintf (buffer, _T("%-4s R%d,%d"), mnemonic, sarg, darg);
                break;
 
        case format_11:     /* multiple precision instructions */
@@ -587,11 +587,11 @@ unsigned Dasm9900 (char *buffer, unsigned pc, int model_id, const UINT8 *oprom,
                darg = BITS(OP2,6,9);
                byte_count = BITS(OP2,0,3);
 
-               buffer += sprintf (buffer, "%-4s ", mnemonic);
+               buffer += _stprintf (buffer, _T("%-4s "), mnemonic);
                buffer += print_arg (buffer, smode, sarg, opram, pc, first_symbol);
-               buffer += sprintf (buffer, ",");
+               buffer += _stprintf (buffer, _T(","));
                buffer += print_arg (buffer, dmode, darg, opram, pc, first_symbol);
-               buffer += sprintf (buffer, byte_count ? ",%d" : ",R%d", byte_count);
+               buffer += _stprintf (buffer, byte_count ? _T(",%d") : _T(",R%d"), byte_count);
                break;
 
        case format_12:     /* string instructions */
@@ -604,11 +604,11 @@ unsigned Dasm9900 (char *buffer, unsigned pc, int model_id, const UINT8 *oprom,
                byte_count = BITS(OP2,0,3);
                checkpoint = BITS(OP,12,15);
 
-               buffer += sprintf (buffer, "%-4s ", mnemonic);
+               buffer += _stprintf (buffer, _T("%-4s "), mnemonic);
                buffer += print_arg (buffer, smode, sarg, opram, pc, first_symbol);
-               buffer += sprintf (buffer, ",");
+               buffer += _stprintf (buffer, _T(","));
                buffer += print_arg (buffer, dmode, darg, opram, pc, first_symbol);
-               buffer += sprintf (buffer, byte_count ? ",%d,R%d" : ",R%d,R%d", byte_count, checkpoint);
+               buffer += _stprintf (buffer, byte_count ? _T(",%d,R%d") : _T(",R%d,R%d"), byte_count, checkpoint);
                break;
 
        case format_13:     /* multiple precision shift instructions */
@@ -619,10 +619,10 @@ unsigned Dasm9900 (char *buffer, unsigned pc, int model_id, const UINT8 *oprom,
                darg = BITS(OP2,6,9);
                byte_count = BITS(OP2,0,3);
 
-               buffer += sprintf (buffer, "%-4s ", mnemonic);
+               buffer += _stprintf (buffer, _T("%-4s "), mnemonic);
                buffer += print_arg (buffer, smode, sarg, opram, pc, first_symbol);
-               buffer += sprintf (buffer, byte_count ? ",%d" : ",R%d", byte_count);
-               buffer += sprintf (buffer, darg ? ",%d" : ",R%d", darg);
+               buffer += _stprintf (buffer, byte_count ? _T(",%d") : _T(",R%d"), byte_count);
+               buffer += _stprintf (buffer, darg ? _T(",%d") : _T(",R%d"), darg);
                break;
 
        case format_14:     /* bit testing instructions */
@@ -632,12 +632,12 @@ unsigned Dasm9900 (char *buffer, unsigned pc, int model_id, const UINT8 *oprom,
                sarg = BITS(OP2,12,15);
                darg = BITS(OP2,0,9);
 
-               buffer += sprintf (buffer, "%-4s ", mnemonic);
+               buffer += _stprintf (buffer, _T("%-4s "), mnemonic);
                buffer += print_arg (buffer, smode, sarg, opram, pc, first_symbol);
                if (darg == 0x3ff)
-                       buffer += sprintf (buffer, ",R0");
+                       buffer += _stprintf (buffer, _T(",R0"));
                else
-                       buffer += sprintf (buffer, ",%d", darg);
+                       buffer += _stprintf (buffer, _T(",%d"), darg);
                break;
 
        case format_15:     /* invert order of field instruction */
@@ -648,10 +648,10 @@ unsigned Dasm9900 (char *buffer, unsigned pc, int model_id, const UINT8 *oprom,
                bit_position = BITS(OP2,0,3);
                bit_width = BITS(OP,12,15);
 
-               buffer += sprintf (buffer, "%-4s ", mnemonic);
+               buffer += _stprintf (buffer, _T("%-4s "), mnemonic);
                buffer += print_arg (buffer, smode, sarg, opram, pc, first_symbol);
-               buffer += sprintf (buffer, bit_position ? ",(%d," : ",(R%d,", bit_position);
-               buffer += sprintf (buffer, bit_width ? "%d)" : "R%d)", bit_width);
+               buffer += _stprintf (buffer, bit_position ? _T(",(%d,") : _T(",(R%d,"), bit_position);
+               buffer += _stprintf (buffer, bit_width ? _T("%d)") : _T("R%d)"), bit_width);
                break;
 
        case format_16:     /* field instructions */
@@ -664,12 +664,12 @@ unsigned Dasm9900 (char *buffer, unsigned pc, int model_id, const UINT8 *oprom,
                bit_position = BITS(OP2,0,3);
                bit_width = BITS(OP,12,15);
 
-               buffer += sprintf (buffer, "%-4s ", mnemonic);
+               buffer += _stprintf (buffer, _T("%-4s "), mnemonic);
                buffer += print_arg (buffer, smode, sarg, opram, pc, first_symbol);
-               buffer += sprintf (buffer, ",");
+               buffer += _stprintf (buffer, _T(","));
                buffer += print_arg (buffer, dmode, darg, opram, pc, first_symbol);
-               buffer += sprintf (buffer, bit_position ? ",(%d," : ",(%d,", bit_position);
-               buffer += sprintf (buffer, bit_width ? "%d)" : "R%d)", bit_width);
+               buffer += _stprintf (buffer, bit_position ? _T(",(%d,") : _T(",(%d,"), bit_position);
+               buffer += _stprintf (buffer, bit_width ? _T("%d)") : _T("R%d)"), bit_width);
                break;
 
        case format_17:     /* alter register and jump instructions */
@@ -679,20 +679,20 @@ unsigned Dasm9900 (char *buffer, unsigned pc, int model_id, const UINT8 *oprom,
                sarg = BITS(OP2,4,7);
                darg = BITS(OP2,0,3);
                if (darg)
-               sprintf (buffer, darg ? "%-4s >%s,%d,R%d" : "%-4s >%s,R%d,R%d",
-                                                       mnemonic, get_value_or_symbol(first_symbol, "%04x", 0xffff & (PC + displacement * 2)), sarg, darg);
+               _stprintf (buffer, darg ? _T("%-4s >%s,%d,R%d") : _T("%-4s >%s,R%d,R%d"),
+                                                       mnemonic, get_value_or_symbol(first_symbol, _T("%04x"), 0xffff & (PC + displacement * 2)), sarg, darg);
                break;
 
        case format_18:     /* single register operand instructions */
                sarg = BITS(OP,12,15);
 
-               sprintf (buffer, "%-4s R%d", mnemonic, sarg);
+               _stprintf (buffer, _T("%-4s R%d"), mnemonic, sarg);
                                break;
 
        case format_liim:   /* liim instruction */
                sarg = BITS(OP,14,15);
 
-               sprintf (buffer, "%-4s %d", mnemonic, sarg);
+               _stprintf (buffer, _T("%-4s %d"), mnemonic, sarg);
                break;
 
        case format_19:     /* move address instruction */
@@ -703,15 +703,15 @@ unsigned Dasm9900 (char *buffer, unsigned pc, int model_id, const UINT8 *oprom,
                dmode = BITS(OP2,4,5);
                darg = BITS(OP2,6,9);
 
-               buffer += sprintf (buffer, "%-4s ", mnemonic);
+               buffer += _stprintf (buffer, _T("%-4s "), mnemonic);
                buffer += print_arg (buffer, smode, sarg, opram, pc, first_symbol);
-               buffer += sprintf (buffer, ",");
+               buffer += _stprintf (buffer, _T(","));
                buffer += print_arg (buffer, dmode, darg, opram, pc, first_symbol);
                                break;
 
        case format_20:     /* list search instructions */
        {
-                       const char *condition_code;
+                       const _TCHAR *condition_code;
 
                        OP2 = readop_arg(opram, pc);
 
@@ -723,43 +723,43 @@ unsigned Dasm9900 (char *buffer, unsigned pc, int model_id, const UINT8 *oprom,
                        switch (BITS(OP2,0,3))
                        {
                        case 0:
-                               condition_code = "eq";
+                               condition_code = _T("eq");
                                break;
                        case 1:
-                               condition_code = "ne";
+                               condition_code = _T("ne");
                                break;
                        case 2:
-                               condition_code = "he";
+                               condition_code = _T("he");
                                break;
                        case 3:
-                               condition_code = "l";
+                               condition_code = _T("l");
                                break;
                        case 4:
-                               condition_code = "ge";
+                               condition_code = _T("ge");
                                break;
                        case 5:
-                               condition_code = "lt";
+                               condition_code = _T("lt");
                                break;
                        case 6:
-                               condition_code = "le";
+                               condition_code = _T("le");
                                break;
                        case 7:
-                               condition_code = "h";
+                               condition_code = _T("h");
                                break;
                        case 8:
-                               condition_code = "lte";
+                               condition_code = _T("lte");
                                break;
                        case 9:
-                               condition_code = "gt";
+                               condition_code = _T("gt");
                                break;
                        default:
-                               condition_code = "??";
+                               condition_code = _T("??");
                                break;
                        }
 
-                       buffer += sprintf (buffer, "%-4s %s,", mnemonic, condition_code);
+                       buffer += _stprintf (buffer, _T("%-4s %s,"), mnemonic, condition_code);
                        buffer += print_arg (buffer, smode, sarg, opram, pc, first_symbol);
-                       buffer += sprintf (buffer, ",");
+                       buffer += _stprintf (buffer, _T(","));
                        buffer += print_arg (buffer, dmode, darg, opram, pc, first_symbol);
                        break;
        }
@@ -777,19 +777,19 @@ unsigned Dasm9900 (char *buffer, unsigned pc, int model_id, const UINT8 *oprom,
                byte_count = BITS(OP2,0,3);
                dest_byte_count = BITS(OP,12,15);
 
-               buffer += sprintf (buffer, "%-4s ", mnemonic);
+               buffer += _stprintf (buffer, _T("%-4s "), mnemonic);
                buffer += print_arg (buffer, smode, sarg, opram, pc, first_symbol);
-               buffer += sprintf (buffer, ",");
+               buffer += _stprintf (buffer, _T(","));
                buffer += print_arg (buffer, dmode, darg, opram, pc, first_symbol);
-               buffer += sprintf (buffer, byte_count ? ",%d" : ",R%d", byte_count);
-               buffer += sprintf (buffer, dest_byte_count ? ",%d" : ",R%d", dest_byte_count);
+               buffer += _stprintf (buffer, byte_count ? _T(",%d") : _T(",R%d"), byte_count);
+               buffer += _stprintf (buffer, dest_byte_count ? _T(",%d") : _T(",R%d"), dest_byte_count);
                break;
        }
 
        default:
-               logerror("debbugger internal error, file %s, line %d\n", __FILE__, __LINE__);
+               logerror(_T("debbugger internal error, file %s, line %d\n"), __FILE__, __LINE__);
        case illegal:
-               sprintf (buffer, "data >%04x", OP);
+               _stprintf (buffer, _T("data >%04x"), OP);
                break;
        }
 
index fe5b7ba..5932fc7 100644 (file)
@@ -4596,7 +4596,7 @@ static const struct dasm_s dasmXX_7801[256] = {
 
        { _illegal, 0 },     { _DCR, "A" },       { _DCR, "B" },       { _DCR, "C" },
        { _JMP, "%w" },      { _OFFIW, "%a,%b" }, { _ACI, "A,%b" },    { _OFFI, "A,%b" },
-       { _BIT, "0,%a" },    { _BIT, "1,%a" },    { _BIT,2,%a" },    { _BIT, "3,%a" },
+       { _BIT, "0,%a" },    { _BIT, "1,%a" },    { _BIT, "2,%a" },    { _BIT, "3,%a" },
        { _BIT, "4,%a" },    { _BIT, "5,%a" },    { _BIT, "6,%a" },    { _BIT, "7,%a" },
 
        { 0, dasm60_7801 }, { _DAA, 0 },         { _RETI, 0 },        { _CALB, 0 },
@@ -6054,13 +6054,14 @@ static const char *const regname[32] =
        "illegal", "TMM",     "PT",      "illegal"
 };
 
-static offs_t Dasm( char *buffer, offs_t pc, const struct dasm_s *dasmXX, const UINT8 *oprom, const UINT8 *opram, int is_7810 )
+static offs_t Dasm( _TCHAR *buffer, offs_t pc, const struct dasm_s *dasmXX, const UINT8 *oprom, const UINT8 *opram, int is_7810, symbol_t *first_symbol )
 {
        int idx = 0;
        UINT8 op = oprom[idx++], op2, t;
        int offset;
        UINT16 ea;
        const char *a;
+       char c2t[2] = {0};
        UINT32 flags = 0;
 
        t = dasmXX[op].token;
@@ -6076,7 +6077,7 @@ static offs_t Dasm( char *buffer, offs_t pc, const struct dasm_s *dasmXX, const
                a = (const char *)p_dasm[op2].args;
        }
 
-       buffer += sprintf(buffer, "%-8.8s", token[t]);
+       buffer += _stprintf(buffer, _T("%-8.8s"), char_to_tchar(token[t]));
 
        if (t == _CALB || t == _CALF || t == _CALL || t == _CALT)
                flags = DASMFLAG_STEP_OVER;
@@ -6092,72 +6093,78 @@ static offs_t Dasm( char *buffer, offs_t pc, const struct dasm_s *dasmXX, const
                        {
                        case 'a':   /* address V * 256 + offset */
                                op2 = opram[idx++];
-                               buffer += sprintf(buffer, "VV:%02X", op2);
+                               buffer += _stprintf(buffer, _T("VV:%02X"), op2);
                                break;
                        case 'b':   /* immediate byte */
-                               buffer += sprintf(buffer, "$%02X", opram[idx++]);
+                               buffer += _stprintf(buffer, _T("$%02X"), opram[idx++]);
                                break;
                        case 'w':   /* immediate word */
                                ea = opram[idx++];
                                ea += opram[idx++] << 8;
-                               buffer += sprintf(buffer, "$%04X", ea);
+                               buffer += _stprintf(buffer, _T("%s"), get_value_or_symbol(first_symbol, _T("$%04X"), ea));
                                break;
                        case 'd':   /* JRE address */
                                op2 = oprom[idx++];
                                offset = (op & 1) ? -(256 - op2): + op2;
-                               buffer += sprintf(buffer, "$%04X", ( pc + idx + offset ) & 0xFFFF );
+                               buffer += _stprintf(buffer, _T("%s"), get_value_or_symbol(first_symbol, _T("$%04X"), ( pc + idx + offset ) & 0xFFFF));
                                break;
                        case 't':   /* CALT address */
                                ea = 0x80 + 2 * (op & (is_7810 ? 0x1f : 0x3f));
-                               buffer += sprintf(buffer, "($%04X)", ea);
+                               buffer += _stprintf(buffer, _T("(%s)"), get_value_or_symbol(first_symbol, _T("$%04X"), ea));
                                break;
                        case 'f':   /* CALF address */
                                op2 = oprom[idx++];
                                ea = 0x800 + 0x100 * (op & 0x07) + op2;
-                               buffer += sprintf(buffer, "$%04X", ea);
+                               buffer += _stprintf(buffer, _T("%s"), get_value_or_symbol(first_symbol, _T("$%04X"), ea));
                                break;
                        case 'o':   /* JR offset */
                                offset = ( ( op & 0x20 ) ? -0x20 : 0 ) + ( op & 0x1F );
-                               buffer += sprintf(buffer, "$%04X", ( pc + idx + offset ) & 0xFFFF );
+                               buffer += _stprintf(buffer, _T("%s"), get_value_or_symbol(first_symbol, _T("$%04X"), ( pc + idx + offset ) & 0xFFFF));
                                break;
                        case 'i':   /* bit manipulation */
                                op2 = oprom[idx++];
-                               buffer += sprintf(buffer, "%s,%d", regname[op2 & 0x1f], op2 >> 5);
+                               buffer += _stprintf(buffer, _T("%s,%d"), char_to_tchar(regname[op2 & 0x1f]), op2 >> 5);
                                break;
                        default:
-                               *buffer++ = *a;
+//                             *buffer++ = *a;
+                               c2t[0] = *a;
+                               *buffer++ = char_to_tchar(c2t)[0];
                        }
                }
                else
-                       *buffer++ = *a;
+               {
+//                     *buffer++ = *a;
+                       c2t[0] = *a;
+                       *buffer++ = char_to_tchar(c2t)[0];
+               }
                a++;
        }
-       *buffer = '\0';
+       *buffer = _T('\0');
 
        return idx | flags | DASMFLAG_SUPPORTED;
 }
 
 CPU_DISASSEMBLE( upd7810 )
 {
-       return Dasm( buffer, pc, dasmXX_7810, oprom, opram, 1 );
+       return Dasm( buffer, pc, dasmXX_7810, oprom, opram, 1, first_symbol );
 }
 
 CPU_DISASSEMBLE( upd7807 )
 {
-       return Dasm( buffer, pc, dasmXX_7807, oprom, opram, 1 );
+       return Dasm( buffer, pc, dasmXX_7807, oprom, opram, 1, first_symbol );
 }
 
 CPU_DISASSEMBLE( upd7801 )
 {
-       return Dasm( buffer, pc, dasmXX_7801, oprom, opram, 0 );
+       return Dasm( buffer, pc, dasmXX_7801, oprom, opram, 0, first_symbol );
 }
 
 CPU_DISASSEMBLE( upd78c05 )
 {
-       return Dasm( buffer, pc, dasmXX_78c05, oprom, opram, 0 );
+       return Dasm( buffer, pc, dasmXX_78c05, oprom, opram, 0, first_symbol );
 }
 
 CPU_DISASSEMBLE( upd7907 )
 {
-       return Dasm( buffer, pc, dasmXX_7907, oprom, opram, 0 );
+       return Dasm( buffer, pc, dasmXX_7907, oprom, opram, 0, first_symbol );
 }
index 38fe608..c2fc446 100644 (file)
@@ -1013,281 +1013,282 @@ int MCS48::debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
        
        switch (program_r(ptr++))
        {
-               case 0x00:      my_stprintf_s(buffer, buffer_len, _T("nop"));                                                 break;
+               case 0x00:      my_stprintf_s(buffer, buffer_len, _T("nop"));                                                                                                       break;
                case 0x02:  if (!upi41)
                                my_stprintf_s(buffer, buffer_len, _T("out  bus,a"));
                            else
-                               my_stprintf_s(buffer, buffer_len, _T("out  dbb,a"));                                          break;
-               case 0x03:      my_stprintf_s(buffer, buffer_len, _T("add  a,#$%02X"), program_r(ptr++));                     break;
-               case 0x04:      my_stprintf_s(buffer, buffer_len, _T("jmp  $0%02X"), program_r(ptr++));                       break;
-               case 0x05:      my_stprintf_s(buffer, buffer_len, _T("en   i"));                                              break;
-               case 0x07:      my_stprintf_s(buffer, buffer_len, _T("dec  a"));                                              break;
+                               my_stprintf_s(buffer, buffer_len, _T("out  dbb,a"));                                                                                                break;
+               case 0x03:      my_stprintf_s(buffer, buffer_len, _T("add  a,#$%02X"), program_r(ptr++));                                                                           break;
+               case 0x04:      my_stprintf_s(buffer, buffer_len, _T("jmp  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), 0x000 | program_r(ptr++)));             break;
+               case 0x05:      my_stprintf_s(buffer, buffer_len, _T("en   i"));                                                                                                    break;
+               case 0x07:      my_stprintf_s(buffer, buffer_len, _T("dec  a"));                                                                                                    break;
                case 0x08:  if (!upi41)
                                my_stprintf_s(buffer, buffer_len, _T("in   a,bus"));
                            else
-                               my_stprintf_s(buffer, buffer_len, _T("illegal"));                                             break;
-               case 0x09:      my_stprintf_s(buffer, buffer_len, _T("in   a,p1"));                                           break;
-               case 0x0a:      my_stprintf_s(buffer, buffer_len, _T("in   a,p2"));                                           break;
-               case 0x0c:      my_stprintf_s(buffer, buffer_len, _T("movd a,p4"));                                           break;
-               case 0x0d:      my_stprintf_s(buffer, buffer_len, _T("movd a,p5"));                                           break;
-               case 0x0e:      my_stprintf_s(buffer, buffer_len, _T("movd a,p6"));                                           break;
-               case 0x0f:      my_stprintf_s(buffer, buffer_len, _T("movd a,p7"));                                           break;
-               case 0x10:      my_stprintf_s(buffer, buffer_len, _T("inc  @r0"));                                            break;
-               case 0x11:      my_stprintf_s(buffer, buffer_len, _T("inc  @r1"));                                            break;
-               case 0x12:      my_stprintf_s(buffer, buffer_len, _T("jb0  $%03X"), (pc & 0xf00) | program_r(ptr++));         break;
-               case 0x13:      my_stprintf_s(buffer, buffer_len, _T("addc a,#$%02X"), program_r(ptr++));                     break;
-               case 0x14:      my_stprintf_s(buffer, buffer_len, _T("call $0%02X"), program_r(ptr++));                       break;
-               case 0x15:      my_stprintf_s(buffer, buffer_len, _T("dis  i"));                                              break;
-               case 0x16:      my_stprintf_s(buffer, buffer_len, _T("jtf  $%03X"), (pc & 0xf00) | program_r(ptr++));         break;
-               case 0x17:      my_stprintf_s(buffer, buffer_len, _T("inc  a"));                                              break;
-               case 0x18:      my_stprintf_s(buffer, buffer_len, _T("inc  r0"));                                             break;
-               case 0x19:      my_stprintf_s(buffer, buffer_len, _T("inc  r1"));                                             break;
-               case 0x1a:      my_stprintf_s(buffer, buffer_len, _T("inc  r2"));                                             break;
-               case 0x1b:      my_stprintf_s(buffer, buffer_len, _T("inc  r3"));                                             break;
-               case 0x1c:      my_stprintf_s(buffer, buffer_len, _T("inc  r4"));                                             break;
-               case 0x1d:      my_stprintf_s(buffer, buffer_len, _T("inc  r5"));                                             break;
-               case 0x1e:      my_stprintf_s(buffer, buffer_len, _T("inc  r6"));                                             break;
-               case 0x1f:      my_stprintf_s(buffer, buffer_len, _T("inc  r7"));                                             break;
-               case 0x20:      my_stprintf_s(buffer, buffer_len, _T("xch  a,@r0"));                                          break;
-               case 0x21:      my_stprintf_s(buffer, buffer_len, _T("xch  a,@r1"));                                          break;
+                               my_stprintf_s(buffer, buffer_len, _T("illegal"));                                                                                                   break;
+               case 0x09:      my_stprintf_s(buffer, buffer_len, _T("in   a,p1"));                                                                                                 break;
+               case 0x0a:      my_stprintf_s(buffer, buffer_len, _T("in   a,p2"));                                                                                                 break;
+               case 0x0c:      my_stprintf_s(buffer, buffer_len, _T("movd a,p4"));                                                                                                 break;
+               case 0x0d:      my_stprintf_s(buffer, buffer_len, _T("movd a,p5"));                                                                                                 break;
+               case 0x0e:      my_stprintf_s(buffer, buffer_len, _T("movd a,p6"));                                                                                                 break;
+               case 0x0f:      my_stprintf_s(buffer, buffer_len, _T("movd a,p7"));                                                                                                 break;
+               case 0x10:      my_stprintf_s(buffer, buffer_len, _T("inc  @r0"));                                                                                                  break;
+               case 0x11:      my_stprintf_s(buffer, buffer_len, _T("inc  @r1"));                                                                                                  break;
+               case 0x12:      my_stprintf_s(buffer, buffer_len, _T("jb0  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));      break;
+               case 0x13:      my_stprintf_s(buffer, buffer_len, _T("addc a,#$%02X"), program_r(ptr++));                                                                           break;
+               case 0x14:      my_stprintf_s(buffer, buffer_len, _T("call %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), 0x000 | program_r(ptr++)));             break;
+               case 0x15:      my_stprintf_s(buffer, buffer_len, _T("dis  i"));                                                                                                    break;
+               case 0x16:      my_stprintf_s(buffer, buffer_len, _T("jtf  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));      break;
+               case 0x17:      my_stprintf_s(buffer, buffer_len, _T("inc  a"));                                                                                                    break;
+               case 0x18:      my_stprintf_s(buffer, buffer_len, _T("inc  r0"));                                                                                                   break;
+               case 0x19:      my_stprintf_s(buffer, buffer_len, _T("inc  r1"));                                                                                                   break;
+               case 0x1a:      my_stprintf_s(buffer, buffer_len, _T("inc  r2"));                                                                                                   break;
+               case 0x1b:      my_stprintf_s(buffer, buffer_len, _T("inc  r3"));                                                                                                   break;
+               case 0x1c:      my_stprintf_s(buffer, buffer_len, _T("inc  r4"));                                                                                                   break;
+               case 0x1d:      my_stprintf_s(buffer, buffer_len, _T("inc  r5"));                                                                                                   break;
+               case 0x1e:      my_stprintf_s(buffer, buffer_len, _T("inc  r6"));                                                                                                   break;
+               case 0x1f:      my_stprintf_s(buffer, buffer_len, _T("inc  r7"));                                                                                                   break;
+               case 0x20:      my_stprintf_s(buffer, buffer_len, _T("xch  a,@r0"));                                                                                                break;
+               case 0x21:      my_stprintf_s(buffer, buffer_len, _T("xch  a,@r1"));                                                                                                break;
                case 0x22:  if (!upi41)
                                my_stprintf_s(buffer, buffer_len, _T("illegal"));
                            else
-                               my_stprintf_s(buffer, buffer_len, _T("in   a,dbb"));                                          break;
-               case 0x23:      my_stprintf_s(buffer, buffer_len, _T("mov  a,#$%02X"), program_r(ptr++));                     break;
-               case 0x24:      my_stprintf_s(buffer, buffer_len, _T("jmp  $1%02X"), program_r(ptr++));                       break;
-               case 0x25:      my_stprintf_s(buffer, buffer_len, _T("en   tcnti"));                                          break;
-               case 0x26:      my_stprintf_s(buffer, buffer_len, _T("jnt0 $%03X"), (pc & 0xf00) | program_r(ptr++));         break;
-               case 0x27:      my_stprintf_s(buffer, buffer_len, _T("clr  a"));                                              break;
-               case 0x28:      my_stprintf_s(buffer, buffer_len, _T("xch  a,r0"));                                           break;
-               case 0x29:      my_stprintf_s(buffer, buffer_len, _T("xch  a,r1"));                                           break;
-               case 0x2a:      my_stprintf_s(buffer, buffer_len, _T("xch  a,r2"));                                           break;
-               case 0x2b:      my_stprintf_s(buffer, buffer_len, _T("xch  a,r3"));                                           break;
-               case 0x2c:      my_stprintf_s(buffer, buffer_len, _T("xch  a,r4"));                                           break;
-               case 0x2d:      my_stprintf_s(buffer, buffer_len, _T("xch  a,r5"));                                           break;
-               case 0x2e:      my_stprintf_s(buffer, buffer_len, _T("xch  a,r6"));                                           break;
-               case 0x2f:      my_stprintf_s(buffer, buffer_len, _T("xch  a,r7"));                                           break;
-               case 0x30:      my_stprintf_s(buffer, buffer_len, _T("xchd a,@r0"));                                          break;
-               case 0x31:      my_stprintf_s(buffer, buffer_len, _T("xchd a,@r1"));                                          break;
-               case 0x32:      my_stprintf_s(buffer, buffer_len, _T("jb1  $%03X"), (pc & 0xf00) | program_r(ptr++));         break;
-               case 0x34:      my_stprintf_s(buffer, buffer_len, _T("call $1%02X"), program_r(ptr++));                       break;
-               case 0x35:      my_stprintf_s(buffer, buffer_len, _T("dis  tcnti"));                                          break;
-               case 0x36:      my_stprintf_s(buffer, buffer_len, _T("jt0  $%03X"), (pc & 0xf00) | program_r(ptr++));         break;
-               case 0x37:      my_stprintf_s(buffer, buffer_len, _T("cpl  a"));                                              break;
-               case 0x39:      my_stprintf_s(buffer, buffer_len, _T("outl p1,a"));                                           break;
-               case 0x3a:      my_stprintf_s(buffer, buffer_len, _T("outl p2,a"));                                           break;
-               case 0x3c:      my_stprintf_s(buffer, buffer_len, _T("movd p4,a"));                                           break;
-               case 0x3d:      my_stprintf_s(buffer, buffer_len, _T("movd p5,a"));                                           break;
-               case 0x3e:      my_stprintf_s(buffer, buffer_len, _T("movd p6,a"));                                           break;
-               case 0x3f:      my_stprintf_s(buffer, buffer_len, _T("movd p7,a"));                                           break;
-               case 0x40:      my_stprintf_s(buffer, buffer_len, _T("orl  a,@r0"));                                          break;
-               case 0x41:      my_stprintf_s(buffer, buffer_len, _T("orl  a,@r1"));                                          break;
-               case 0x42:      my_stprintf_s(buffer, buffer_len, _T("mov  a,t"));                                            break;
-               case 0x43:      my_stprintf_s(buffer, buffer_len, _T("orl  a,#$%02X"), program_r(ptr++));                     break;
-               case 0x44:      my_stprintf_s(buffer, buffer_len, _T("jmp  $2%02X"), program_r(ptr++));                       break;
-               case 0x45:      my_stprintf_s(buffer, buffer_len, _T("strt cnt"));                                            break;
-               case 0x46:      my_stprintf_s(buffer, buffer_len, _T("jnt1 $%03X"), (pc & 0xf00) | program_r(ptr++));         break;
-               case 0x47:      my_stprintf_s(buffer, buffer_len, _T("swap a"));                                              break;
-               case 0x48:      my_stprintf_s(buffer, buffer_len, _T("orl  a,r0"));                                           break;
-               case 0x49:      my_stprintf_s(buffer, buffer_len, _T("orl  a,r1"));                                           break;
-               case 0x4a:      my_stprintf_s(buffer, buffer_len, _T("orl  a,r2"));                                           break;
-               case 0x4b:      my_stprintf_s(buffer, buffer_len, _T("orl  a,r3"));                                           break;
-               case 0x4c:      my_stprintf_s(buffer, buffer_len, _T("orl  a,r4"));                                           break;
-               case 0x4d:      my_stprintf_s(buffer, buffer_len, _T("orl  a,r5"));                                           break;
-               case 0x4e:      my_stprintf_s(buffer, buffer_len, _T("orl  a,r6"));                                           break;
-               case 0x4f:      my_stprintf_s(buffer, buffer_len, _T("orl  a,r7"));                                           break;
-               case 0x50:      my_stprintf_s(buffer, buffer_len, _T("anl  a,@r0"));                                          break;
-               case 0x51:      my_stprintf_s(buffer, buffer_len, _T("anl  a,@r1"));                                          break;
-               case 0x52:      my_stprintf_s(buffer, buffer_len, _T("jb2  $%03X"), (pc & 0xf00) | program_r(ptr++));         break;
-               case 0x53:      my_stprintf_s(buffer, buffer_len, _T("anl  a,#$%02X"), program_r(ptr++));                     break;
-               case 0x54:      my_stprintf_s(buffer, buffer_len, _T("call $2%02X"), program_r(ptr++));                       break;
-               case 0x55:      my_stprintf_s(buffer, buffer_len, _T("strt t"));                                              break;
-               case 0x56:      my_stprintf_s(buffer, buffer_len, _T("jt1  $%03X"), (pc & 0xf00) | program_r(ptr++));         break;
-               case 0x57:      my_stprintf_s(buffer, buffer_len, _T("da   a"));                                              break;
-               case 0x58:      my_stprintf_s(buffer, buffer_len, _T("anl  a,r0"));                                           break;
-               case 0x59:      my_stprintf_s(buffer, buffer_len, _T("anl  a,r1"));                                           break;
-               case 0x5a:      my_stprintf_s(buffer, buffer_len, _T("anl  a,r2"));                                           break;
-               case 0x5b:      my_stprintf_s(buffer, buffer_len, _T("anl  a,r3"));                                           break;
-               case 0x5c:      my_stprintf_s(buffer, buffer_len, _T("anl  a,r4"));                                           break;
-               case 0x5d:      my_stprintf_s(buffer, buffer_len, _T("anl  a,r5"));                                           break;
-               case 0x5e:      my_stprintf_s(buffer, buffer_len, _T("anl  a,r6"));                                           break;
-               case 0x5f:      my_stprintf_s(buffer, buffer_len, _T("anl  a,r7"));                                           break;
-               case 0x60:      my_stprintf_s(buffer, buffer_len, _T("add  a,@r0"));                                          break;
-               case 0x61:      my_stprintf_s(buffer, buffer_len, _T("add  a,@r1"));                                          break;
-               case 0x62:      my_stprintf_s(buffer, buffer_len, _T("mov  t,a"));                                            break;
-               case 0x64:      my_stprintf_s(buffer, buffer_len, _T("jmp  $3%02X"), program_r(ptr++));                       break;
-               case 0x65:      my_stprintf_s(buffer, buffer_len, _T("stop tcnt"));                                           break;
-               case 0x67:      my_stprintf_s(buffer, buffer_len, _T("rrc  a"));                                              break;
-               case 0x68:      my_stprintf_s(buffer, buffer_len, _T("add  a,r0"));                                           break;
-               case 0x69:      my_stprintf_s(buffer, buffer_len, _T("add  a,r1"));                                           break;
-               case 0x6a:      my_stprintf_s(buffer, buffer_len, _T("add  a,r2"));                                           break;
-               case 0x6b:      my_stprintf_s(buffer, buffer_len, _T("add  a,r3"));                                           break;
-               case 0x6c:      my_stprintf_s(buffer, buffer_len, _T("add  a,r4"));                                           break;
-               case 0x6d:      my_stprintf_s(buffer, buffer_len, _T("add  a,r5"));                                           break;
-               case 0x6e:      my_stprintf_s(buffer, buffer_len, _T("add  a,r6"));                                           break;
-               case 0x6f:      my_stprintf_s(buffer, buffer_len, _T("add  a,r7"));                                           break;
-               case 0x70:      my_stprintf_s(buffer, buffer_len, _T("addc a,@r0"));                                          break;
-               case 0x71:      my_stprintf_s(buffer, buffer_len, _T("addc a,@r1"));                                          break;
-               case 0x72:      my_stprintf_s(buffer, buffer_len, _T("jb3  $%03X"), (pc & 0xf00) | program_r(ptr++));         break;
-               case 0x74:      my_stprintf_s(buffer, buffer_len, _T("call $3%02X"), program_r(ptr++));                       break;
+                               my_stprintf_s(buffer, buffer_len, _T("in   a,dbb"));                                                                                                break;
+               case 0x23:      my_stprintf_s(buffer, buffer_len, _T("mov  a,#$%02X"), program_r(ptr++));                                                                           break;
+               case 0x24:      my_stprintf_s(buffer, buffer_len, _T("jmp  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), 0x100 | program_r(ptr++)));             break;
+               case 0x25:      my_stprintf_s(buffer, buffer_len, _T("en   tcnti"));                                                                                                break;
+               case 0x26:      my_stprintf_s(buffer, buffer_len, _T("jnt0 %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));      break;
+               case 0x27:      my_stprintf_s(buffer, buffer_len, _T("clr  a"));                                                                                                    break;
+               case 0x28:      my_stprintf_s(buffer, buffer_len, _T("xch  a,r0"));                                                                                                 break;
+               case 0x29:      my_stprintf_s(buffer, buffer_len, _T("xch  a,r1"));                                                                                                 break;
+               case 0x2a:      my_stprintf_s(buffer, buffer_len, _T("xch  a,r2"));                                                                                                 break;
+               case 0x2b:      my_stprintf_s(buffer, buffer_len, _T("xch  a,r3"));                                                                                                 break;
+               case 0x2c:      my_stprintf_s(buffer, buffer_len, _T("xch  a,r4"));                                                                                                 break;
+               case 0x2d:      my_stprintf_s(buffer, buffer_len, _T("xch  a,r5"));                                                                                                 break;
+               case 0x2e:      my_stprintf_s(buffer, buffer_len, _T("xch  a,r6"));                                                                                                 break;
+               case 0x2f:      my_stprintf_s(buffer, buffer_len, _T("xch  a,r7"));                                                                                                 break;
+               case 0x30:      my_stprintf_s(buffer, buffer_len, _T("xchd a,@r0"));                                                                                                break;
+               case 0x31:      my_stprintf_s(buffer, buffer_len, _T("xchd a,@r1"));                                                                                                break;
+               case 0x32:      my_stprintf_s(buffer, buffer_len, _T("jb1  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));      break;
+               case 0x34:      my_stprintf_s(buffer, buffer_len, _T("call %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), 0x100 | program_r(ptr++)));             break;
+               case 0x35:      my_stprintf_s(buffer, buffer_len, _T("dis  tcnti"));                                                                                                break;
+               case 0x36:      my_stprintf_s(buffer, buffer_len, _T("jt0  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));      break;
+               case 0x37:      my_stprintf_s(buffer, buffer_len, _T("cpl  a"));                                                                                                    break;
+               case 0x39:      my_stprintf_s(buffer, buffer_len, _T("outl p1,a"));                                                                                                 break;
+               case 0x3a:      my_stprintf_s(buffer, buffer_len, _T("outl p2,a"));                                                                                                 break;
+               case 0x3c:      my_stprintf_s(buffer, buffer_len, _T("movd p4,a"));                                                                                                 break;
+               case 0x3d:      my_stprintf_s(buffer, buffer_len, _T("movd p5,a"));                                                                                                 break;
+               case 0x3e:      my_stprintf_s(buffer, buffer_len, _T("movd p6,a"));                                                                                                 break;
+               case 0x3f:      my_stprintf_s(buffer, buffer_len, _T("movd p7,a"));                                                                                                 break;
+               case 0x40:      my_stprintf_s(buffer, buffer_len, _T("orl  a,@r0"));                                                                                                break;
+               case 0x41:      my_stprintf_s(buffer, buffer_len, _T("orl  a,@r1"));                                                                                                break;
+               case 0x42:      my_stprintf_s(buffer, buffer_len, _T("mov  a,t"));                                                                                                  break;
+               case 0x43:      my_stprintf_s(buffer, buffer_len, _T("orl  a,#$%02X"), program_r(ptr++));                                                                           break;
+               case 0x44:      my_stprintf_s(buffer, buffer_len, _T("jmp  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), 0x200 | program_r(ptr++)));             break;
+               case 0x45:      my_stprintf_s(buffer, buffer_len, _T("strt cnt"));                                                                                                  break;
+               case 0x46:      my_stprintf_s(buffer, buffer_len, _T("jnt1 %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));      break;
+               case 0x47:      my_stprintf_s(buffer, buffer_len, _T("swap a"));                                                                                                    break;
+               case 0x48:      my_stprintf_s(buffer, buffer_len, _T("orl  a,r0"));                                                                                                 break;
+               case 0x49:      my_stprintf_s(buffer, buffer_len, _T("orl  a,r1"));                                                                                                 break;
+               case 0x4a:      my_stprintf_s(buffer, buffer_len, _T("orl  a,r2"));                                                                                                 break;
+               case 0x4b:      my_stprintf_s(buffer, buffer_len, _T("orl  a,r3"));                                                                                                 break;
+               case 0x4c:      my_stprintf_s(buffer, buffer_len, _T("orl  a,r4"));                                                                                                 break;
+               case 0x4d:      my_stprintf_s(buffer, buffer_len, _T("orl  a,r5"));                                                                                                 break;
+               case 0x4e:      my_stprintf_s(buffer, buffer_len, _T("orl  a,r6"));                                                                                                 break;
+               case 0x4f:      my_stprintf_s(buffer, buffer_len, _T("orl  a,r7"));                                                                                                 break;
+               case 0x50:      my_stprintf_s(buffer, buffer_len, _T("anl  a,@r0"));                                                                                                break;
+               case 0x51:      my_stprintf_s(buffer, buffer_len, _T("anl  a,@r1"));                                                                                                break;
+               case 0x52:      my_stprintf_s(buffer, buffer_len, _T("jb2  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));      break;
+               case 0x53:      my_stprintf_s(buffer, buffer_len, _T("anl  a,#$%02X"), program_r(ptr++));                                                                           break;
+               case 0x54:      my_stprintf_s(buffer, buffer_len, _T("call %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), 0x200 | program_r(ptr++)));             break;
+               case 0x55:      my_stprintf_s(buffer, buffer_len, _T("strt t"));                                                                                                    break;
+               case 0x56:      my_stprintf_s(buffer, buffer_len, _T("jt1  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));      break;
+               case 0x57:      my_stprintf_s(buffer, buffer_len, _T("da   a"));                                                                                                    break;
+               case 0x58:      my_stprintf_s(buffer, buffer_len, _T("anl  a,r0"));                                                                                                 break;
+               case 0x59:      my_stprintf_s(buffer, buffer_len, _T("anl  a,r1"));                                                                                                 break;
+               case 0x5a:      my_stprintf_s(buffer, buffer_len, _T("anl  a,r2"));                                                                                                 break;
+               case 0x5b:      my_stprintf_s(buffer, buffer_len, _T("anl  a,r3"));                                                                                                 break;
+               case 0x5c:      my_stprintf_s(buffer, buffer_len, _T("anl  a,r4"));                                                                                                 break;
+               case 0x5d:      my_stprintf_s(buffer, buffer_len, _T("anl  a,r5"));                                                                                                 break;
+               case 0x5e:      my_stprintf_s(buffer, buffer_len, _T("anl  a,r6"));                                                                                                 break;
+               case 0x5f:      my_stprintf_s(buffer, buffer_len, _T("anl  a,r7"));                                                                                                 break;
+               case 0x60:      my_stprintf_s(buffer, buffer_len, _T("add  a,@r0"));                                                                                                break;
+               case 0x61:      my_stprintf_s(buffer, buffer_len, _T("add  a,@r1"));                                                                                                break;
+               case 0x62:      my_stprintf_s(buffer, buffer_len, _T("mov  t,a"));                                                                                                  break;
+               case 0x64:      my_stprintf_s(buffer, buffer_len, _T("jmp  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), 0x300 | program_r(ptr++)));             break;
+               case 0x65:      my_stprintf_s(buffer, buffer_len, _T("stop tcnt"));                                                                                                 break;
+               case 0x67:      my_stprintf_s(buffer, buffer_len, _T("rrc  a"));                                                                                                    break;
+               case 0x68:      my_stprintf_s(buffer, buffer_len, _T("add  a,r0"));                                                                                                 break;
+               case 0x69:      my_stprintf_s(buffer, buffer_len, _T("add  a,r1"));                                                                                                 break;
+               case 0x6a:      my_stprintf_s(buffer, buffer_len, _T("add  a,r2"));                                                                                                 break;
+               case 0x6b:      my_stprintf_s(buffer, buffer_len, _T("add  a,r3"));                                                                                                 break;
+               case 0x6c:      my_stprintf_s(buffer, buffer_len, _T("add  a,r4"));                                                                                                 break;
+               case 0x6d:      my_stprintf_s(buffer, buffer_len, _T("add  a,r5"));                                                                                                 break;
+               case 0x6e:      my_stprintf_s(buffer, buffer_len, _T("add  a,r6"));                                                                                                 break;
+               case 0x6f:      my_stprintf_s(buffer, buffer_len, _T("add  a,r7"));                                                                                                 break;
+               case 0x70:      my_stprintf_s(buffer, buffer_len, _T("addc a,@r0"));                                                                                                break;
+               case 0x71:      my_stprintf_s(buffer, buffer_len, _T("addc a,@r1"));                                                                                                break;
+               case 0x72:      my_stprintf_s(buffer, buffer_len, _T("jb3  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));      break;
+               case 0x74:      my_stprintf_s(buffer, buffer_len, _T("call %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), 0x300 | program_r(ptr++)));             break;
                case 0x75:  if (!upi41)
                                my_stprintf_s(buffer, buffer_len, _T("ent0 clk"));
                            else
-                               my_stprintf_s(buffer, buffer_len, _T("illegal"));                                             break;
-               case 0x76:      my_stprintf_s(buffer, buffer_len, _T("jf1  $%03X"), (pc & 0xf00) | program_r(ptr++));         break;
-               case 0x77:      my_stprintf_s(buffer, buffer_len, _T("rr   a"));                                              break;
-               case 0x78:      my_stprintf_s(buffer, buffer_len, _T("addc a,r0"));                                           break;
-               case 0x79:      my_stprintf_s(buffer, buffer_len, _T("addc a,r1"));                                           break;
-               case 0x7a:      my_stprintf_s(buffer, buffer_len, _T("addc a,r2"));                                           break;
-               case 0x7b:      my_stprintf_s(buffer, buffer_len, _T("addc a,r3"));                                           break;
-               case 0x7c:      my_stprintf_s(buffer, buffer_len, _T("addc a,r4"));                                           break;
-               case 0x7d:      my_stprintf_s(buffer, buffer_len, _T("addc a,r5"));                                           break;
-               case 0x7e:      my_stprintf_s(buffer, buffer_len, _T("addc a,r6"));                                           break;
-               case 0x7f:      my_stprintf_s(buffer, buffer_len, _T("addc a,r7"));                                           break;
+                               my_stprintf_s(buffer, buffer_len, _T("illegal"));                                                                                                   break;
+               case 0x76:      my_stprintf_s(buffer, buffer_len, _T("jf1  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));      break;
+               case 0x77:      my_stprintf_s(buffer, buffer_len, _T("rr   a"));                                                                                                    break;
+               case 0x78:      my_stprintf_s(buffer, buffer_len, _T("addc a,r0"));                                                                                                 break;
+               case 0x79:      my_stprintf_s(buffer, buffer_len, _T("addc a,r1"));                                                                                                 break;
+               case 0x7a:      my_stprintf_s(buffer, buffer_len, _T("addc a,r2"));                                                                                                 break;
+               case 0x7b:      my_stprintf_s(buffer, buffer_len, _T("addc a,r3"));                                                                                                 break;
+               case 0x7c:      my_stprintf_s(buffer, buffer_len, _T("addc a,r4"));                                                                                                 break;
+               case 0x7d:      my_stprintf_s(buffer, buffer_len, _T("addc a,r5"));                                                                                                 break;
+               case 0x7e:      my_stprintf_s(buffer, buffer_len, _T("addc a,r6"));                                                                                                 break;
+               case 0x7f:      my_stprintf_s(buffer, buffer_len, _T("addc a,r7"));                                                                                                 break;
                case 0x80:  if (!upi41)
                                my_stprintf_s(buffer, buffer_len, _T("movx a,@r0"));
                            else
-                               my_stprintf_s(buffer, buffer_len, _T("illegal"));                                             break;
+                               my_stprintf_s(buffer, buffer_len, _T("illegal"));                                                                                                   break;
                case 0x81:  if (!upi41)
                                my_stprintf_s(buffer, buffer_len, _T("movx a,@r1"));
                            else
-                               my_stprintf_s(buffer, buffer_len, _T("illegal"));                                             break;
-               case 0x83:      my_stprintf_s(buffer, buffer_len, _T("ret"));                                                 break;
-               case 0x84:      my_stprintf_s(buffer, buffer_len, _T("jmp  $4%02X"), program_r(ptr++));                       break;
-               case 0x85:      my_stprintf_s(buffer, buffer_len, _T("clr  f0"));                                             break;
+                               my_stprintf_s(buffer, buffer_len, _T("illegal"));                                                                                                   break;
+               case 0x83:      my_stprintf_s(buffer, buffer_len, _T("ret"));                                                                                                       break;
+               case 0x84:      my_stprintf_s(buffer, buffer_len, _T("jmp  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), 0x400 | program_r(ptr++)));             break;
+               case 0x85:      my_stprintf_s(buffer, buffer_len, _T("clr  f0"));                                                                                                   break;
                case 0x86:  if (!upi41)
-                               my_stprintf_s(buffer, buffer_len, _T("jni  $%03X"), (pc & 0xf00) | program_r(ptr++));
+                               my_stprintf_s(buffer, buffer_len, _T("jni  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));
                            else
-                               my_stprintf_s(buffer, buffer_len, _T("jobf $%03X"), (pc & 0xf00) | program_r(ptr++));         break;
+                               my_stprintf_s(buffer, buffer_len, _T("jobf %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));      break;
                case 0x88:  if (!upi41)
                                my_stprintf_s(buffer, buffer_len, _T("orl  bus,#$%02X"), program_r(ptr++));
                            else
-                               my_stprintf_s(buffer, buffer_len, _T("illegal"));                                             break;
-               case 0x89:      my_stprintf_s(buffer, buffer_len, _T("orl  p1,#$%02X"), program_r(ptr++));                    break;
-               case 0x8a:      my_stprintf_s(buffer, buffer_len, _T("orl  p2,#$%02X"), program_r(ptr++));                    break;
-               case 0x8c:      my_stprintf_s(buffer, buffer_len, _T("orld p4,a"));                                           break;
-               case 0x8d:      my_stprintf_s(buffer, buffer_len, _T("orld p5,a"));                                           break;
-               case 0x8e:      my_stprintf_s(buffer, buffer_len, _T("orld p6,a"));                                           break;
-               case 0x8f:      my_stprintf_s(buffer, buffer_len, _T("orld p7,a"));                                           break;
+                               my_stprintf_s(buffer, buffer_len, _T("illegal"));                                                                                                   break;
+               case 0x89:      my_stprintf_s(buffer, buffer_len, _T("orl  p1,#$%02X"), program_r(ptr++));                                                                          break;
+               case 0x8a:      my_stprintf_s(buffer, buffer_len, _T("orl  p2,#$%02X"), program_r(ptr++));                                                                          break;
+               case 0x8c:      my_stprintf_s(buffer, buffer_len, _T("orld p4,a"));                                                                                                 break;
+               case 0x8d:      my_stprintf_s(buffer, buffer_len, _T("orld p5,a"));                                                                                                 break;
+               case 0x8e:      my_stprintf_s(buffer, buffer_len, _T("orld p6,a"));                                                                                                 break;
+               case 0x8f:      my_stprintf_s(buffer, buffer_len, _T("orld p7,a"));                                                                                                 break;
                case 0x90:  if (!upi41)
                                my_stprintf_s(buffer, buffer_len, _T("movx @r0,a"));
                            else
-                               my_stprintf_s(buffer, buffer_len, _T("mov  sts,a"));                                          break;
+                               my_stprintf_s(buffer, buffer_len, _T("mov  sts,a"));                                                                                                break;
                case 0x91:  if (!upi41)
                                my_stprintf_s(buffer, buffer_len, _T("movx @r1,a"));
                            else
-                               my_stprintf_s(buffer, buffer_len, _T("illegal"));                                             break;
-               case 0x92:      my_stprintf_s(buffer, buffer_len, _T("jb4  $%03X"), (pc & 0xf00) | program_r(ptr++));         break;
-               case 0x93:      my_stprintf_s(buffer, buffer_len, _T("retr"));                                                break;
-               case 0x94:      my_stprintf_s(buffer, buffer_len, _T("call $4%02X"), program_r(ptr++));                       break;
-               case 0x95:      my_stprintf_s(buffer, buffer_len, _T("cpl  f0"));                                             break;
-               case 0x96:      my_stprintf_s(buffer, buffer_len, _T("jnz  $%03X"), (pc & 0xf00) | program_r(ptr++));         break;
-               case 0x97:      my_stprintf_s(buffer, buffer_len, _T("clr  c"));                                              break;
+                               my_stprintf_s(buffer, buffer_len, _T("illegal"));                                                                                                   break;
+               case 0x92:      my_stprintf_s(buffer, buffer_len, _T("jb4  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));      break;
+               case 0x93:      my_stprintf_s(buffer, buffer_len, _T("retr"));                                                                                                      break;
+               case 0x94:      my_stprintf_s(buffer, buffer_len, _T("call %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), 0x400 | program_r(ptr++)));             break;
+               case 0x95:      my_stprintf_s(buffer, buffer_len, _T("cpl  f0"));                                                                                                   break;
+               case 0x96:      my_stprintf_s(buffer, buffer_len, _T("jnz  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));      break;
+               case 0x97:      my_stprintf_s(buffer, buffer_len, _T("clr  c"));                                                                                                    break;
                case 0x98:  if (!upi41)
                                my_stprintf_s(buffer, buffer_len, _T("anl  bus,#$%02X"), program_r(ptr++));
                            else
-                               my_stprintf_s(buffer, buffer_len, _T("illegal"));                                             break;
-               case 0x99:      my_stprintf_s(buffer, buffer_len, _T("anl  p1,#$%02X"), program_r(ptr++));                    break;
-               case 0x9a:      my_stprintf_s(buffer, buffer_len, _T("anl  p2,#$%02X"), program_r(ptr++));                    break;
-               case 0x9c:      my_stprintf_s(buffer, buffer_len, _T("anld p4,a"));                                           break;
-               case 0x9d:      my_stprintf_s(buffer, buffer_len, _T("anld p5,a"));                                           break;
-               case 0x9e:      my_stprintf_s(buffer, buffer_len, _T("anld p6,a"));                                           break;
-               case 0x9f:      my_stprintf_s(buffer, buffer_len, _T("anld p7,a"));                                           break;
-               case 0xa0:      my_stprintf_s(buffer, buffer_len, _T("mov  @r0,a"));                                          break;
-               case 0xa1:      my_stprintf_s(buffer, buffer_len, _T("mov  @r1,a"));                                          break;
-               case 0xa3:      my_stprintf_s(buffer, buffer_len, _T("movp a,@a"));                                           break;
-               case 0xa4:      my_stprintf_s(buffer, buffer_len, _T("jmp  $5%02X"), program_r(ptr++));                       break;
-               case 0xa5:      my_stprintf_s(buffer, buffer_len, _T("clr  f1"));                                             break;
-               case 0xa7:      my_stprintf_s(buffer, buffer_len, _T("cpl  c"));                                              break;
-               case 0xa8:      my_stprintf_s(buffer, buffer_len, _T("mov  r0,a"));                                           break;
-               case 0xa9:      my_stprintf_s(buffer, buffer_len, _T("mov  r1,a"));                                           break;
-               case 0xaa:      my_stprintf_s(buffer, buffer_len, _T("mov  r2,a"));                                           break;
-               case 0xab:      my_stprintf_s(buffer, buffer_len, _T("mov  r3,a"));                                           break;
-               case 0xac:      my_stprintf_s(buffer, buffer_len, _T("mov  r4,a"));                                           break;
-               case 0xad:      my_stprintf_s(buffer, buffer_len, _T("mov  r5,a"));                                           break;
-               case 0xae:      my_stprintf_s(buffer, buffer_len, _T("mov  r6,a"));                                           break;
-               case 0xaf:      my_stprintf_s(buffer, buffer_len, _T("mov  r7,a"));                                           break;
-               case 0xb0:      my_stprintf_s(buffer, buffer_len, _T("mov  @r0,#$%02X"), program_r(ptr++));                   break;
-               case 0xb1:      my_stprintf_s(buffer, buffer_len, _T("mov  @r1,#$%02X"), program_r(ptr++));                   break;
-               case 0xb2:      my_stprintf_s(buffer, buffer_len, _T("jb5  $%03X"), (pc & 0xf00) | program_r(ptr++));         break;
-               case 0xb3:      my_stprintf_s(buffer, buffer_len, _T("jmpp @a"));                                             break;
-               case 0xb4:      my_stprintf_s(buffer, buffer_len, _T("call $5%02X"), program_r(ptr++));                       break;
-               case 0xb5:      my_stprintf_s(buffer, buffer_len, _T("cpl  f1"));                                             break;
-               case 0xb6:      my_stprintf_s(buffer, buffer_len, _T("jf0  $%03X"), (pc & 0xf00) | program_r(ptr++));         break;
-               case 0xb8:      my_stprintf_s(buffer, buffer_len, _T("mov  r0,#$%02X"), program_r(ptr++));                    break;
-               case 0xb9:      my_stprintf_s(buffer, buffer_len, _T("mov  r1,#$%02X"), program_r(ptr++));                    break;
-               case 0xba:      my_stprintf_s(buffer, buffer_len, _T("mov  r2,#$%02X"), program_r(ptr++));                    break;
-               case 0xbb:      my_stprintf_s(buffer, buffer_len, _T("mov  r3,#$%02X"), program_r(ptr++));                    break;
-               case 0xbc:      my_stprintf_s(buffer, buffer_len, _T("mov  r4,#$%02X"), program_r(ptr++));                    break;
-               case 0xbd:      my_stprintf_s(buffer, buffer_len, _T("mov  r5,#$%02X"), program_r(ptr++));                    break;
-               case 0xbe:      my_stprintf_s(buffer, buffer_len, _T("mov  r6,#$%02X"), program_r(ptr++));                    break;
-               case 0xbf:      my_stprintf_s(buffer, buffer_len, _T("mov  r7,#$%02X"), program_r(ptr++));                    break;
-               case 0xc4:      my_stprintf_s(buffer, buffer_len, _T("jmp  $6%02X"), program_r(ptr++));                       break;
-               case 0xc5:      my_stprintf_s(buffer, buffer_len, _T("sel  rb0"));                                            break;
-               case 0xc6:      my_stprintf_s(buffer, buffer_len, _T("jz   $%03X"), (pc & 0xf00) | program_r(ptr++));         break;
-               case 0xc7:      my_stprintf_s(buffer, buffer_len, _T("mov  a,psw"));                                          break;
-               case 0xc8:      my_stprintf_s(buffer, buffer_len, _T("dec  r0"));                                             break;
-               case 0xc9:      my_stprintf_s(buffer, buffer_len, _T("dec  r1"));                                             break;
-               case 0xca:      my_stprintf_s(buffer, buffer_len, _T("dec  r2"));                                             break;
-               case 0xcb:      my_stprintf_s(buffer, buffer_len, _T("dec  r3"));                                             break;
-               case 0xcc:      my_stprintf_s(buffer, buffer_len, _T("dec  r4"));                                             break;
-               case 0xcd:      my_stprintf_s(buffer, buffer_len, _T("dec  r5"));                                             break;
-               case 0xce:      my_stprintf_s(buffer, buffer_len, _T("dec  r6"));                                             break;
-               case 0xcf:      my_stprintf_s(buffer, buffer_len, _T("dec  r7"));                                             break;
-               case 0xd0:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,@r0"));                                          break;
-               case 0xd1:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,@r1"));                                          break;
-               case 0xd2:      my_stprintf_s(buffer, buffer_len, _T("jb6  $%03X"), (pc & 0xf00) | program_r(ptr++));         break;
-               case 0xd3:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,#$%02X"), program_r(ptr++));                     break;
-               case 0xd4:      my_stprintf_s(buffer, buffer_len, _T("call $6%02X"), program_r(ptr++));                       break;
-               case 0xd5:      my_stprintf_s(buffer, buffer_len, _T("sel  rb1"));                                            break;
+                               my_stprintf_s(buffer, buffer_len, _T("illegal"));                                                                                                   break;
+               case 0x99:      my_stprintf_s(buffer, buffer_len, _T("anl  p1,#$%02X"), program_r(ptr++));                                                                          break;
+               case 0x9a:      my_stprintf_s(buffer, buffer_len, _T("anl  p2,#$%02X"), program_r(ptr++));                                                                          break;
+               case 0x9c:      my_stprintf_s(buffer, buffer_len, _T("anld p4,a"));                                                                                                 break;
+               case 0x9d:      my_stprintf_s(buffer, buffer_len, _T("anld p5,a"));                                                                                                 break;
+               case 0x9e:      my_stprintf_s(buffer, buffer_len, _T("anld p6,a"));                                                                                                 break;
+               case 0x9f:      my_stprintf_s(buffer, buffer_len, _T("anld p7,a"));                                                                                                 break;
+               case 0xa0:      my_stprintf_s(buffer, buffer_len, _T("mov  @r0,a"));                                                                                                break;
+               case 0xa1:      my_stprintf_s(buffer, buffer_len, _T("mov  @r1,a"));                                                                                                break;
+               case 0xa3:      my_stprintf_s(buffer, buffer_len, _T("movp a,@a"));                                                                                                 break;
+               case 0xa4:      my_stprintf_s(buffer, buffer_len, _T("jmp  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), 0x500 | program_r(ptr++)));             break;
+               case 0xa5:      my_stprintf_s(buffer, buffer_len, _T("clr  f1"));                                                                                                   break;
+               case 0xa7:      my_stprintf_s(buffer, buffer_len, _T("cpl  c"));                                                                                                    break;
+               case 0xa8:      my_stprintf_s(buffer, buffer_len, _T("mov  r0,a"));                                                                                                 break;
+               case 0xa9:      my_stprintf_s(buffer, buffer_len, _T("mov  r1,a"));                                                                                                 break;
+               case 0xaa:      my_stprintf_s(buffer, buffer_len, _T("mov  r2,a"));                                                                                                 break;
+               case 0xab:      my_stprintf_s(buffer, buffer_len, _T("mov  r3,a"));                                                                                                 break;
+               case 0xac:      my_stprintf_s(buffer, buffer_len, _T("mov  r4,a"));                                                                                                 break;
+               case 0xad:      my_stprintf_s(buffer, buffer_len, _T("mov  r5,a"));                                                                                                 break;
+               case 0xae:      my_stprintf_s(buffer, buffer_len, _T("mov  r6,a"));                                                                                                 break;
+               case 0xaf:      my_stprintf_s(buffer, buffer_len, _T("mov  r7,a"));                                                                                                 break;
+               case 0xb0:      my_stprintf_s(buffer, buffer_len, _T("mov  @r0,#$%02X"), program_r(ptr++));                                                                         break;
+               case 0xb1:      my_stprintf_s(buffer, buffer_len, _T("mov  @r1,#$%02X"), program_r(ptr++));                                                                         break;
+               case 0xb2:      my_stprintf_s(buffer, buffer_len, _T("jb5  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));      break;
+               case 0xb3:      my_stprintf_s(buffer, buffer_len, _T("jmpp @a"));                                                                                                   break;
+               case 0xb4:      my_stprintf_s(buffer, buffer_len, _T("call %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), 0x500 | program_r(ptr++)));             break;
+               case 0xb5:      my_stprintf_s(buffer, buffer_len, _T("cpl  f1"));                                                                                                   break;
+               case 0xb6:      my_stprintf_s(buffer, buffer_len, _T("jf0  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));      break;
+               case 0xb8:      my_stprintf_s(buffer, buffer_len, _T("mov  r0,#$%02X"), program_r(ptr++));                                                                          break;
+               case 0xb9:      my_stprintf_s(buffer, buffer_len, _T("mov  r1,#$%02X"), program_r(ptr++));                                                                          break;
+               case 0xba:      my_stprintf_s(buffer, buffer_len, _T("mov  r2,#$%02X"), program_r(ptr++));                                                                          break;
+               case 0xbb:      my_stprintf_s(buffer, buffer_len, _T("mov  r3,#$%02X"), program_r(ptr++));                                                                          break;
+               case 0xbc:      my_stprintf_s(buffer, buffer_len, _T("mov  r4,#$%02X"), program_r(ptr++));                                                                          break;
+               case 0xbd:      my_stprintf_s(buffer, buffer_len, _T("mov  r5,#$%02X"), program_r(ptr++));                                                                          break;
+               case 0xbe:      my_stprintf_s(buffer, buffer_len, _T("mov  r6,#$%02X"), program_r(ptr++));                                                                          break;
+               case 0xbf:      my_stprintf_s(buffer, buffer_len, _T("mov  r7,#$%02X"), program_r(ptr++));                                                                          break;
+               case 0xc4:      my_stprintf_s(buffer, buffer_len, _T("jmp  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), 0x600 | program_r(ptr++)));             break;
+               case 0xc5:      my_stprintf_s(buffer, buffer_len, _T("sel  rb0"));                                                                                                  break;
+               case 0xc6:      my_stprintf_s(buffer, buffer_len, _T("jz   %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));      break;
+               case 0xc7:      my_stprintf_s(buffer, buffer_len, _T("mov  a,psw"));                                                                                                break;
+               case 0xc8:      my_stprintf_s(buffer, buffer_len, _T("dec  r0"));                                                                                                   break;
+               case 0xc9:      my_stprintf_s(buffer, buffer_len, _T("dec  r1"));                                                                                                   break;
+               case 0xca:      my_stprintf_s(buffer, buffer_len, _T("dec  r2"));                                                                                                   break;
+               case 0xcb:      my_stprintf_s(buffer, buffer_len, _T("dec  r3"));                                                                                                   break;
+               case 0xcc:      my_stprintf_s(buffer, buffer_len, _T("dec  r4"));                                                                                                   break;
+               case 0xcd:      my_stprintf_s(buffer, buffer_len, _T("dec  r5"));                                                                                                   break;
+               case 0xce:      my_stprintf_s(buffer, buffer_len, _T("dec  r6"));                                                                                                   break;
+               case 0xcf:      my_stprintf_s(buffer, buffer_len, _T("dec  r7"));                                                                                                   break;
+               case 0xd0:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,@r0"));                                                                                                break;
+               case 0xd1:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,@r1"));                                                                                                break;
+               case 0xd2:      my_stprintf_s(buffer, buffer_len, _T("jb6  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));      break;
+               case 0xd3:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,#$%02X"), program_r(ptr++));                                                                           break;
+               case 0xd4:      my_stprintf_s(buffer, buffer_len, _T("call %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), 0x600 | program_r(ptr++)));             break;
+               case 0xd5:      my_stprintf_s(buffer, buffer_len, _T("sel  rb1"));                                                                                                  break;
                case 0xd6:  if (!upi41)
                                my_stprintf_s(buffer, buffer_len, _T("illegal"));
                            else
-                               my_stprintf_s(buffer, buffer_len, _T("jnibf $%03X"), (pc & 0xf00) | program_r(ptr++));        break;
-               case 0xd7:      my_stprintf_s(buffer, buffer_len, _T("mov  psw,a"));                                          break;
-               case 0xd8:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,r0"));                                           break;
-               case 0xd9:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,r1"));                                           break;
-               case 0xda:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,r2"));                                           break;
-               case 0xdb:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,r3"));                                           break;
-               case 0xdc:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,r4"));                                           break;
-               case 0xdd:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,r5"));                                           break;
-               case 0xde:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,r6"));                                           break;
-               case 0xdf:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,r7"));                                           break;
-               case 0xe3:      my_stprintf_s(buffer, buffer_len, _T("movp3 a,@a"));                                          break;
-               case 0xe4:      my_stprintf_s(buffer, buffer_len, _T("jmp  $7%02X"), program_r(ptr++));                       break;
+                               my_stprintf_s(buffer, buffer_len, _T("jnibf %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));     break;
+               case 0xd7:      my_stprintf_s(buffer, buffer_len, _T("mov  psw,a"));                                                                                                break;
+               case 0xd8:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,r0"));                                                                                                 break;
+               case 0xd9:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,r1"));                                                                                                 break;
+               case 0xda:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,r2"));                                                                                                 break;
+               case 0xdb:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,r3"));                                                                                                 break;
+               case 0xdc:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,r4"));                                                                                                 break;
+               case 0xdd:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,r5"));                                                                                                 break;
+               case 0xde:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,r6"));                                                                                                 break;
+               case 0xdf:      my_stprintf_s(buffer, buffer_len, _T("xrl  a,r7"));                                                                                                 break;
+               case 0xe3:      my_stprintf_s(buffer, buffer_len, _T("movp3 a,@a"));                                                                                                break;
+               case 0xe4:      my_stprintf_s(buffer, buffer_len, _T("jmp  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), 0x700 | program_r(ptr++)));             break;
                case 0xe5:  if (!upi41)
                                my_stprintf_s(buffer, buffer_len, _T("sel  mb0"));
                            else
-                               my_stprintf_s(buffer, buffer_len, _T("en   dma"));                                            break;
-               case 0xe6:      my_stprintf_s(buffer, buffer_len, _T("jnc  $%03X"), (pc & 0xf00) | program_r(ptr++));         break;
-               case 0xe7:      my_stprintf_s(buffer, buffer_len, _T("rl   a"));                                              break;
-               case 0xe8:      my_stprintf_s(buffer, buffer_len, _T("djnz r0,$%03X"), (pc & 0xf00) | program_r(ptr++));      break;
-               case 0xe9:      my_stprintf_s(buffer, buffer_len, _T("djnz r1,$%03X"), (pc & 0xf00) | program_r(ptr++));      break;
-               case 0xea:      my_stprintf_s(buffer, buffer_len, _T("djnz r2,$%03X"), (pc & 0xf00) | program_r(ptr++));      break;
-               case 0xeb:      my_stprintf_s(buffer, buffer_len, _T("djnz r3,$%03X"), (pc & 0xf00) | program_r(ptr++));      break;
-               case 0xec:      my_stprintf_s(buffer, buffer_len, _T("djnz r4,$%03X"), (pc & 0xf00) | program_r(ptr++));      break;
-               case 0xed:      my_stprintf_s(buffer, buffer_len, _T("djnz r5,$%03X"), (pc & 0xf00) | program_r(ptr++));      break;
-               case 0xee:      my_stprintf_s(buffer, buffer_len, _T("djnz r6,$%03X"), (pc & 0xf00) | program_r(ptr++));      break;
-               case 0xef:      my_stprintf_s(buffer, buffer_len, _T("djnz r7,$%03X"), (pc & 0xf00) | program_r(ptr++));      break;
-               case 0xf0:      my_stprintf_s(buffer, buffer_len, _T("mov  a,@r0"));                                          break;
-               case 0xf1:      my_stprintf_s(buffer, buffer_len, _T("mov  a,@r1"));                                          break;
-               case 0xf2:      my_stprintf_s(buffer, buffer_len, _T("jb7  $%03X"), (pc & 0xf00) | program_r(ptr++));         break;
-               case 0xf4:      my_stprintf_s(buffer, buffer_len, _T("call $7%02X"), program_r(ptr++));                       break;
+                               my_stprintf_s(buffer, buffer_len, _T("en   dma"));                                                                                                  break;
+               case 0xe6:      my_stprintf_s(buffer, buffer_len, _T("jnc  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));      break;
+               case 0xe7:      my_stprintf_s(buffer, buffer_len, _T("rl   a"));                                                                                                    break;
+               case 0xe8:      my_stprintf_s(buffer, buffer_len, _T("djnz r0,%s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));   break;
+               case 0xe9:      my_stprintf_s(buffer, buffer_len, _T("djnz r1,%s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));   break;
+               case 0xea:      my_stprintf_s(buffer, buffer_len, _T("djnz r2,%s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));   break;
+               case 0xeb:      my_stprintf_s(buffer, buffer_len, _T("djnz r3,%s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));   break;
+               case 0xec:      my_stprintf_s(buffer, buffer_len, _T("djnz r4,%s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));   break;
+               case 0xed:      my_stprintf_s(buffer, buffer_len, _T("djnz r5,%s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));   break;
+               case 0xee:      my_stprintf_s(buffer, buffer_len, _T("djnz r6,%s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));   break;
+               case 0xef:      my_stprintf_s(buffer, buffer_len, _T("djnz r7,%s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));   break;
+               case 0xf0:      my_stprintf_s(buffer, buffer_len, _T("mov  a,@r0"));                                                                                                break;
+               case 0xf1:      my_stprintf_s(buffer, buffer_len, _T("mov  a,@r1"));                                                                                                break;
+               case 0xf2:      my_stprintf_s(buffer, buffer_len, _T("jb7  %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));      break;
+               case 0xf4:      my_stprintf_s(buffer, buffer_len, _T("call %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), 0x700 | program_r(ptr++)));             break;
                case 0xf5:  if (!upi41)
                                my_stprintf_s(buffer, buffer_len, _T("sel  mb1"));
                            else
-                               my_stprintf_s(buffer, buffer_len, _T("en   flags"));                                          break;
-               case 0xf6:      my_stprintf_s(buffer, buffer_len, _T("jc   $%03X"), (pc & 0xf00) | program_r(ptr++));         break;
-               case 0xf7:      my_stprintf_s(buffer, buffer_len, _T("rlc  a"));                                              break;
-               case 0xf8:      my_stprintf_s(buffer, buffer_len, _T("mov  a,r0"));                                           break;
-               case 0xf9:      my_stprintf_s(buffer, buffer_len, _T("mov  a,r1"));                                           break;
-               case 0xfa:      my_stprintf_s(buffer, buffer_len, _T("mov  a,r2"));                                           break;
-               case 0xfb:      my_stprintf_s(buffer, buffer_len, _T("mov  a,r3"));                                           break;
-               case 0xfc:      my_stprintf_s(buffer, buffer_len, _T("mov  a,r4"));                                           break;
-               case 0xfd:      my_stprintf_s(buffer, buffer_len, _T("mov  a,r5"));                                           break;
-               case 0xfe:      my_stprintf_s(buffer, buffer_len, _T("mov  a,r6"));                                           break;
-               case 0xff:      my_stprintf_s(buffer, buffer_len, _T("mov  a,r7"));                                           break;
-               default:        my_stprintf_s(buffer, buffer_len, _T("illegal"));                                             break;
+                               my_stprintf_s(buffer, buffer_len, _T("en   flags"));                                                                                                break;
+               case 0xf6:      my_stprintf_s(buffer, buffer_len, _T("jc   %s"), get_value_or_symbol(d_debugger->first_symbol, _T("$%03X"), (pc & 0xf00) | program_r(ptr++)));      break;
+               case 0xf7:      my_stprintf_s(buffer, buffer_len, _T("rlc  a"));                                                                                                    break;
+               case 0xf8:      my_stprintf_s(buffer, buffer_len, _T("mov  a,r0"));                                                                                                 break;
+               case 0xf9:      my_stprintf_s(buffer, buffer_len, _T("mov  a,r1"));                                                                                                 break;
+               case 0xfa:      my_stprintf_s(buffer, buffer_len, _T("mov  a,r2"));                                                                                                 break;
+               case 0xfb:      my_stprintf_s(buffer, buffer_len, _T("mov  a,r3"));                                                                                                 break;
+               case 0xfc:      my_stprintf_s(buffer, buffer_len, _T("mov  a,r4"));                                                                                                 break;
+               case 0xfd:      my_stprintf_s(buffer, buffer_len, _T("mov  a,r5"));                                                                                                 break;
+               case 0xfe:      my_stprintf_s(buffer, buffer_len, _T("mov  a,r6"));                                                                                                 break;
+               case 0xff:      my_stprintf_s(buffer, buffer_len, _T("mov  a,r7"));                                                                                                 break;
+               default:        my_stprintf_s(buffer, buffer_len, _T("illegal"));                                                                                                   break;
+
        }
        return ptr - pc;
 }
index ac189aa..5e62a7c 100644 (file)
@@ -1382,44 +1382,44 @@ int UPD7801::debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
        case 0x01: my_stprintf_s(buffer, buffer_len, _T("hlt")); break;
        case 0x02: my_stprintf_s(buffer, buffer_len, _T("inx sp")); break;
        case 0x03: my_stprintf_s(buffer, buffer_len, _T("dcx sp")); break;
-       case 0x04: my_stprintf_s(buffer, buffer_len, _T("lxi sp, %s"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
-       case 0x05: wa = getwa(); my_stprintf_s(buffer, buffer_len, _T("aniw v.%02xh, %02xh"), wa, getb()); break;
+       case 0x04: my_stprintf_s(buffer, buffer_len, _T("lxi sp,%s"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
+       case 0x05: wa = getwa(); my_stprintf_s(buffer, buffer_len, _T("aniw v.%02xh,%02xh"), wa, getb()); break;
 //     case 0x06:
-       case 0x07: my_stprintf_s(buffer, buffer_len, _T("ani a, %02xh"), getb()); break;
+       case 0x07: my_stprintf_s(buffer, buffer_len, _T("ani a,%02xh"), getb()); break;
        case 0x08: my_stprintf_s(buffer, buffer_len, _T("ret")); break;
        case 0x09: my_stprintf_s(buffer, buffer_len, _T("sio")); break;
-       case 0x0a: my_stprintf_s(buffer, buffer_len, _T("mov a, b")); break;
-       case 0x0b: my_stprintf_s(buffer, buffer_len, _T("mov a, c")); break;
-       case 0x0c: my_stprintf_s(buffer, buffer_len, _T("mov a, d")); break;
-       case 0x0d: my_stprintf_s(buffer, buffer_len, _T("mov a, e")); break;
-       case 0x0e: my_stprintf_s(buffer, buffer_len, _T("mov a, h")); break;
-       case 0x0f: my_stprintf_s(buffer, buffer_len, _T("mov a, l")); break;
+       case 0x0a: my_stprintf_s(buffer, buffer_len, _T("mov a,b")); break;
+       case 0x0b: my_stprintf_s(buffer, buffer_len, _T("mov a,c")); break;
+       case 0x0c: my_stprintf_s(buffer, buffer_len, _T("mov a,d")); break;
+       case 0x0d: my_stprintf_s(buffer, buffer_len, _T("mov a,e")); break;
+       case 0x0e: my_stprintf_s(buffer, buffer_len, _T("mov a,h")); break;
+       case 0x0f: my_stprintf_s(buffer, buffer_len, _T("mov a,l")); break;
        
        case 0x10: my_stprintf_s(buffer, buffer_len, _T("ex")); break;
        case 0x11: my_stprintf_s(buffer, buffer_len, _T("exx")); break;
        case 0x12: my_stprintf_s(buffer, buffer_len, _T("inx b")); break;
        case 0x13: my_stprintf_s(buffer, buffer_len, _T("dcx b")); break;
-       case 0x14: my_stprintf_s(buffer, buffer_len, _T("lxi b, %s"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
-       case 0x15: wa = getwa(); my_stprintf_s(buffer, buffer_len, _T("oriw v.%02xh, %02xh"), wa, getb()); break;
-       case 0x16: my_stprintf_s(buffer, buffer_len, _T("xri a, %02xh"), getb()); break;
-       case 0x17: my_stprintf_s(buffer, buffer_len, _T("ori a, %02xh"), getb()); break;
+       case 0x14: my_stprintf_s(buffer, buffer_len, _T("lxi b,%s"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
+       case 0x15: wa = getwa(); my_stprintf_s(buffer, buffer_len, _T("oriw v.%02xh,%02xh"), wa, getb()); break;
+       case 0x16: my_stprintf_s(buffer, buffer_len, _T("xri a,%02xh"), getb()); break;
+       case 0x17: my_stprintf_s(buffer, buffer_len, _T("ori a,%02xh"), getb()); break;
        case 0x18: my_stprintf_s(buffer, buffer_len, _T("rets")); break;
        case 0x19: my_stprintf_s(buffer, buffer_len, _T("stm")); break;
-       case 0x1a: my_stprintf_s(buffer, buffer_len, _T("mov b, a")); break;
-       case 0x1b: my_stprintf_s(buffer, buffer_len, _T("mov c, a")); break;
-       case 0x1c: my_stprintf_s(buffer, buffer_len, _T("mov d, a")); break;
-       case 0x1d: my_stprintf_s(buffer, buffer_len, _T("mov e, a")); break;
-       case 0x1e: my_stprintf_s(buffer, buffer_len, _T("mov h, a")); break;
-       case 0x1f: my_stprintf_s(buffer, buffer_len, _T("mov l, a")); break;
+       case 0x1a: my_stprintf_s(buffer, buffer_len, _T("mov b,a")); break;
+       case 0x1b: my_stprintf_s(buffer, buffer_len, _T("mov c,a")); break;
+       case 0x1c: my_stprintf_s(buffer, buffer_len, _T("mov d,a")); break;
+       case 0x1d: my_stprintf_s(buffer, buffer_len, _T("mov e,a")); break;
+       case 0x1e: my_stprintf_s(buffer, buffer_len, _T("mov h,a")); break;
+       case 0x1f: my_stprintf_s(buffer, buffer_len, _T("mov l,a")); break;
        
        case 0x20: my_stprintf_s(buffer, buffer_len, _T("inrw v.%02xh"), getwa()); break;
        case 0x21: my_stprintf_s(buffer, buffer_len, _T("table")); break;
        case 0x22: my_stprintf_s(buffer, buffer_len, _T("inx d")); break;
        case 0x23: my_stprintf_s(buffer, buffer_len, _T("dcx d")); break;
-       case 0x24: my_stprintf_s(buffer, buffer_len, _T("lxi d, %s"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
-       case 0x25: wa = getwa(); my_stprintf_s(buffer, buffer_len, _T("gtiw v.%02xh, %02xh"), wa, getb()); break;
-       case 0x26: my_stprintf_s(buffer, buffer_len, _T("adinc a, %02xh"), getb()); break;
-       case 0x27: my_stprintf_s(buffer, buffer_len, _T("gti a, %02xh"), getb()); break;
+       case 0x24: my_stprintf_s(buffer, buffer_len, _T("lxi d,%s"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
+       case 0x25: wa = getwa(); my_stprintf_s(buffer, buffer_len, _T("gtiw v.%02xh,%02xh"), wa, getb()); break;
+       case 0x26: my_stprintf_s(buffer, buffer_len, _T("adinc a,%02xh"), getb()); break;
+       case 0x27: my_stprintf_s(buffer, buffer_len, _T("gti a,%02xh"), getb()); break;
        case 0x28: my_stprintf_s(buffer, buffer_len, _T("ldaw v.%02xh"), getwa()); break;
        case 0x29: my_stprintf_s(buffer, buffer_len, _T("ldax b")); break;
        case 0x2a: my_stprintf_s(buffer, buffer_len, _T("ldax d")); break;
@@ -1433,10 +1433,10 @@ int UPD7801::debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
        case 0x31: my_stprintf_s(buffer, buffer_len, _T("block")); break;
        case 0x32: my_stprintf_s(buffer, buffer_len, _T("inx h")); break;
        case 0x33: my_stprintf_s(buffer, buffer_len, _T("dcx h")); break;
-       case 0x34: my_stprintf_s(buffer, buffer_len, _T("lxi h, %s"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
-       case 0x35: wa = getwa(); my_stprintf_s(buffer, buffer_len, _T("ltiw v.%02xh, %02xh"), wa, getb()); break;
-       case 0x36: my_stprintf_s(buffer, buffer_len, _T("suinb a, %02xh"), getb()); break;
-       case 0x37: my_stprintf_s(buffer, buffer_len, _T("lti a, %02xh"), getb()); break;
+       case 0x34: my_stprintf_s(buffer, buffer_len, _T("lxi h,%s"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
+       case 0x35: wa = getwa(); my_stprintf_s(buffer, buffer_len, _T("ltiw v.%02xh,%02xh"), wa, getb()); break;
+       case 0x36: my_stprintf_s(buffer, buffer_len, _T("suinb a,%02xh"), getb()); break;
+       case 0x37: my_stprintf_s(buffer, buffer_len, _T("lti a,%02xh"), getb()); break;
        case 0x38: my_stprintf_s(buffer, buffer_len, _T("staw v.%02xh"), getwa()); break;
        case 0x39: my_stprintf_s(buffer, buffer_len, _T("stax b")); break;
        case 0x3a: my_stprintf_s(buffer, buffer_len, _T("stax d")); break;
@@ -1451,9 +1451,9 @@ int UPD7801::debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
        case 0x42: my_stprintf_s(buffer, buffer_len, _T("inr b")); break;
        case 0x43: my_stprintf_s(buffer, buffer_len, _T("inr c")); break;
        case 0x44: my_stprintf_s(buffer, buffer_len, _T("call %s"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
-       case 0x45: wa = getwa(); my_stprintf_s(buffer, buffer_len, _T("oniw v.%02xh, %02xh"), wa, getb()); break;
-       case 0x46: my_stprintf_s(buffer, buffer_len, _T("adi a, %02xh"), getb()); break;
-       case 0x47: my_stprintf_s(buffer, buffer_len, _T("oni a, %02xh"), getb()); break;
+       case 0x45: wa = getwa(); my_stprintf_s(buffer, buffer_len, _T("oniw v.%02xh,%02xh"), wa, getb()); break;
+       case 0x46: my_stprintf_s(buffer, buffer_len, _T("adi a,%02xh"), getb()); break;
+       case 0x47: my_stprintf_s(buffer, buffer_len, _T("oni a,%02xh"), getb()); break;
        case 0x48:
                switch(b = getb()) {
                case 0x00: my_stprintf_s(buffer, buffer_len, _T("skit intf0")); break;
@@ -1495,46 +1495,46 @@ int UPD7801::debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
                case 0x3c: my_stprintf_s(buffer, buffer_len, _T("per")); break;
                case 0x3e: my_stprintf_s(buffer, buffer_len, _T("push h")); break;
                case 0x3f: my_stprintf_s(buffer, buffer_len, _T("pop h")); break;
-               default: my_stprintf_s(buffer, buffer_len, _T("db 48h, %02xh"), b);
+               default: my_stprintf_s(buffer, buffer_len, _T("db 48h,%02xh"), b);
                }
                break;
-       case 0x49: my_stprintf_s(buffer, buffer_len, _T("mvix b, %02xh"), getb()); break;
-       case 0x4a: my_stprintf_s(buffer, buffer_len, _T("mvix d, %02xh"), getb()); break;
-       case 0x4b: my_stprintf_s(buffer, buffer_len, _T("mvix h, %02xh"), getb()); break;
+       case 0x49: my_stprintf_s(buffer, buffer_len, _T("mvix b,%02xh"), getb()); break;
+       case 0x4a: my_stprintf_s(buffer, buffer_len, _T("mvix d,%02xh"), getb()); break;
+       case 0x4b: my_stprintf_s(buffer, buffer_len, _T("mvix h,%02xh"), getb()); break;
        case 0x4c:
                switch(b = getb()) {
-               case 0xc0: my_stprintf_s(buffer, buffer_len, _T("mov a, pa")); break;
-               case 0xc1: my_stprintf_s(buffer, buffer_len, _T("mov a, pb")); break;
-               case 0xc2: my_stprintf_s(buffer, buffer_len, _T("mov a, pc")); break;
-               case 0xc3: my_stprintf_s(buffer, buffer_len, _T("mov a, mk")); break;
-               case 0xc4: my_stprintf_s(buffer, buffer_len, _T("mov a, mb")); break;   // \96¢\92è\8b`?
-               case 0xc5: my_stprintf_s(buffer, buffer_len, _T("mov a, mc")); break;   // \96¢\92è\8b`?
-               case 0xc6: my_stprintf_s(buffer, buffer_len, _T("mov a, tm0")); break;  // \96¢\92è\8b`?
-               case 0xc7: my_stprintf_s(buffer, buffer_len, _T("mov a, tm1")); break;  // \96¢\92è\8b`?
-               case 0xc8: my_stprintf_s(buffer, buffer_len, _T("mov a, s")); break;
+               case 0xc0: my_stprintf_s(buffer, buffer_len, _T("mov a,pa")); break;
+               case 0xc1: my_stprintf_s(buffer, buffer_len, _T("mov a,pb")); break;
+               case 0xc2: my_stprintf_s(buffer, buffer_len, _T("mov a,pc")); break;
+               case 0xc3: my_stprintf_s(buffer, buffer_len, _T("mov a,mk")); break;
+               case 0xc4: my_stprintf_s(buffer, buffer_len, _T("mov a,mb")); break;    // \96¢\92è\8b`?
+               case 0xc5: my_stprintf_s(buffer, buffer_len, _T("mov a,mc")); break;    // \96¢\92è\8b`?
+               case 0xc6: my_stprintf_s(buffer, buffer_len, _T("mov a,tm0")); break;   // \96¢\92è\8b`?
+               case 0xc7: my_stprintf_s(buffer, buffer_len, _T("mov a,tm1")); break;   // \96¢\92è\8b`?
+               case 0xc8: my_stprintf_s(buffer, buffer_len, _T("mov a,s")); break;
                default:
                        if(b < 0xc0) {
                                my_stprintf_s(buffer, buffer_len, _T("in %02xh"), getb()); break;
                        }
-                       my_stprintf_s(buffer, buffer_len, _T("db 4ch, %02xh"), b);
+                       my_stprintf_s(buffer, buffer_len, _T("db 4ch,%02xh"), b);
                }
                break;
        case 0x4d:
                switch(b = getb()) {
-               case 0xc0: my_stprintf_s(buffer, buffer_len, _T("mov pa, a")); break;
-               case 0xc1: my_stprintf_s(buffer, buffer_len, _T("mov pb, a")); break;
-               case 0xc2: my_stprintf_s(buffer, buffer_len, _T("mov pc, a")); break;
-               case 0xc3: my_stprintf_s(buffer, buffer_len, _T("mov mk, a")); break;
-               case 0xc4: my_stprintf_s(buffer, buffer_len, _T("mov mb, a")); break;
-               case 0xc5: my_stprintf_s(buffer, buffer_len, _T("mov mc, a")); break;
-               case 0xc6: my_stprintf_s(buffer, buffer_len, _T("mov tm0, a")); break;
-               case 0xc7: my_stprintf_s(buffer, buffer_len, _T("mov tm1, a")); break;
-               case 0xc8: my_stprintf_s(buffer, buffer_len, _T("mov s, a")); break;
+               case 0xc0: my_stprintf_s(buffer, buffer_len, _T("mov pa,a")); break;
+               case 0xc1: my_stprintf_s(buffer, buffer_len, _T("mov pb,a")); break;
+               case 0xc2: my_stprintf_s(buffer, buffer_len, _T("mov pc,a")); break;
+               case 0xc3: my_stprintf_s(buffer, buffer_len, _T("mov mk,a")); break;
+               case 0xc4: my_stprintf_s(buffer, buffer_len, _T("mov mb,a")); break;
+               case 0xc5: my_stprintf_s(buffer, buffer_len, _T("mov mc,a")); break;
+               case 0xc6: my_stprintf_s(buffer, buffer_len, _T("mov tm0,a")); break;
+               case 0xc7: my_stprintf_s(buffer, buffer_len, _T("mov tm1,a")); break;
+               case 0xc8: my_stprintf_s(buffer, buffer_len, _T("mov s,a")); break;
                default:
                        if(b < 0xc0) {
                                my_stprintf_s(buffer, buffer_len, _T("out %02xh"), getb()); break;
                        }
-                       my_stprintf_s(buffer, buffer_len, _T("db 4dh, %02xh"), b);
+                       my_stprintf_s(buffer, buffer_len, _T("db 4dh,%02xh"), b);
                }
                break;
        case 0x4e: b = getb(); my_stprintf_s(buffer, buffer_len, _T("jre %s"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), pc + upd7801_dasm_ptr + b)); break;
@@ -1545,245 +1545,245 @@ int UPD7801::debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
        case 0x52: my_stprintf_s(buffer, buffer_len, _T("dcr b")); break;
        case 0x53: my_stprintf_s(buffer, buffer_len, _T("dcr c")); break;
        case 0x54: my_stprintf_s(buffer, buffer_len, _T("jmp %s"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
-       case 0x55: wa = getwa(); my_stprintf_s(buffer, buffer_len, _T("offiw v.%02xh, %02xh"), wa, getb()); break;
-       case 0x56: my_stprintf_s(buffer, buffer_len, _T("aci a, %02xh"), getb()); break;
-       case 0x57: my_stprintf_s(buffer, buffer_len, _T("offi a, %02xh"), getb()); break;
-       case 0x58: my_stprintf_s(buffer, buffer_len, _T("bit 0, v.%02xh"), getwa()); break;
-       case 0x59: my_stprintf_s(buffer, buffer_len, _T("bit 1, v.%02xh"), getwa()); break;
-       case 0x5a: my_stprintf_s(buffer, buffer_len, _T("bit 2, v.%02xh"), getwa()); break;
-       case 0x5b: my_stprintf_s(buffer, buffer_len, _T("bit 3, v.%02xh"), getwa()); break;
-       case 0x5c: my_stprintf_s(buffer, buffer_len, _T("bit 4, v.%02xh"), getwa()); break;
-       case 0x5d: my_stprintf_s(buffer, buffer_len, _T("bit 5, v.%02xh"), getwa()); break;
-       case 0x5e: my_stprintf_s(buffer, buffer_len, _T("bit 6, v.%02xh"), getwa()); break;
-       case 0x5f: my_stprintf_s(buffer, buffer_len, _T("bit 7, v.%02xh"), getwa()); break;
+       case 0x55: wa = getwa(); my_stprintf_s(buffer, buffer_len, _T("offiw v.%02xh,%02xh"), wa, getb()); break;
+       case 0x56: my_stprintf_s(buffer, buffer_len, _T("aci a,%02xh"), getb()); break;
+       case 0x57: my_stprintf_s(buffer, buffer_len, _T("offi a,%02xh"), getb()); break;
+       case 0x58: my_stprintf_s(buffer, buffer_len, _T("bit 0,v.%02xh"), getwa()); break;
+       case 0x59: my_stprintf_s(buffer, buffer_len, _T("bit 1,v.%02xh"), getwa()); break;
+       case 0x5a: my_stprintf_s(buffer, buffer_len, _T("bit 2,v.%02xh"), getwa()); break;
+       case 0x5b: my_stprintf_s(buffer, buffer_len, _T("bit 3,v.%02xh"), getwa()); break;
+       case 0x5c: my_stprintf_s(buffer, buffer_len, _T("bit 4,v.%02xh"), getwa()); break;
+       case 0x5d: my_stprintf_s(buffer, buffer_len, _T("bit 5,v.%02xh"), getwa()); break;
+       case 0x5e: my_stprintf_s(buffer, buffer_len, _T("bit 6,v.%02xh"), getwa()); break;
+       case 0x5f: my_stprintf_s(buffer, buffer_len, _T("bit 7,v.%02xh"), getwa()); break;
        
        case 0x60:
                switch(b = getb()) {
-               case 0x08: my_stprintf_s(buffer, buffer_len, _T("ana v, a")); break;
-               case 0x09: my_stprintf_s(buffer, buffer_len, _T("ana a, a")); break;
-               case 0x0a: my_stprintf_s(buffer, buffer_len, _T("ana b, a")); break;
-               case 0x0b: my_stprintf_s(buffer, buffer_len, _T("ana c, a")); break;
-               case 0x0c: my_stprintf_s(buffer, buffer_len, _T("ana d, a")); break;
-               case 0x0d: my_stprintf_s(buffer, buffer_len, _T("ana e, a")); break;
-               case 0x0e: my_stprintf_s(buffer, buffer_len, _T("ana h, a")); break;
-               case 0x0f: my_stprintf_s(buffer, buffer_len, _T("ana l, a")); break;
-               case 0x10: my_stprintf_s(buffer, buffer_len, _T("xra v, a")); break;
-               case 0x11: my_stprintf_s(buffer, buffer_len, _T("xra a, a")); break;
-               case 0x12: my_stprintf_s(buffer, buffer_len, _T("xra b, a")); break;
-               case 0x13: my_stprintf_s(buffer, buffer_len, _T("xra c, a")); break;
-               case 0x14: my_stprintf_s(buffer, buffer_len, _T("xra d, a")); break;
-               case 0x15: my_stprintf_s(buffer, buffer_len, _T("xra e, a")); break;
-               case 0x16: my_stprintf_s(buffer, buffer_len, _T("xra h, a")); break;
-               case 0x17: my_stprintf_s(buffer, buffer_len, _T("xra l, a")); break;
-               case 0x18: my_stprintf_s(buffer, buffer_len, _T("ora v, a")); break;
-               case 0x19: my_stprintf_s(buffer, buffer_len, _T("ora a, a")); break;
-               case 0x1a: my_stprintf_s(buffer, buffer_len, _T("ora b, a")); break;
-               case 0x1b: my_stprintf_s(buffer, buffer_len, _T("ora c, a")); break;
-               case 0x1c: my_stprintf_s(buffer, buffer_len, _T("ora d, a")); break;
-               case 0x1d: my_stprintf_s(buffer, buffer_len, _T("ora e, a")); break;
-               case 0x1e: my_stprintf_s(buffer, buffer_len, _T("ora h, a")); break;
-               case 0x1f: my_stprintf_s(buffer, buffer_len, _T("ora l, a")); break;
-               case 0x20: my_stprintf_s(buffer, buffer_len, _T("addnc v, a")); break;
-               case 0x21: my_stprintf_s(buffer, buffer_len, _T("addnc a, a")); break;
-               case 0x22: my_stprintf_s(buffer, buffer_len, _T("addnc b, a")); break;
-               case 0x23: my_stprintf_s(buffer, buffer_len, _T("addnc c, a")); break;
-               case 0x24: my_stprintf_s(buffer, buffer_len, _T("addnc d, a")); break;
-               case 0x25: my_stprintf_s(buffer, buffer_len, _T("addnc e, a")); break;
-               case 0x26: my_stprintf_s(buffer, buffer_len, _T("addnc h, a")); break;
-               case 0x27: my_stprintf_s(buffer, buffer_len, _T("addnc l, a")); break;
-               case 0x28: my_stprintf_s(buffer, buffer_len, _T("gta v, a")); break;
-               case 0x29: my_stprintf_s(buffer, buffer_len, _T("gta a, a")); break;
-               case 0x2a: my_stprintf_s(buffer, buffer_len, _T("gta b, a")); break;
-               case 0x2b: my_stprintf_s(buffer, buffer_len, _T("gta c, a")); break;
-               case 0x2c: my_stprintf_s(buffer, buffer_len, _T("gta d, a")); break;
-               case 0x2d: my_stprintf_s(buffer, buffer_len, _T("gta e, a")); break;
-               case 0x2e: my_stprintf_s(buffer, buffer_len, _T("gta h, a")); break;
-               case 0x2f: my_stprintf_s(buffer, buffer_len, _T("gta l, a")); break;
-               case 0x30: my_stprintf_s(buffer, buffer_len, _T("subnb v, a")); break;
-               case 0x31: my_stprintf_s(buffer, buffer_len, _T("subnb a, a")); break;
-               case 0x32: my_stprintf_s(buffer, buffer_len, _T("subnb b, a")); break;
-               case 0x33: my_stprintf_s(buffer, buffer_len, _T("subnb c, a")); break;
-               case 0x34: my_stprintf_s(buffer, buffer_len, _T("subnb d, a")); break;
-               case 0x35: my_stprintf_s(buffer, buffer_len, _T("subnb e, a")); break;
-               case 0x36: my_stprintf_s(buffer, buffer_len, _T("subnb h, a")); break;
-               case 0x37: my_stprintf_s(buffer, buffer_len, _T("subnb l, a")); break;
-               case 0x38: my_stprintf_s(buffer, buffer_len, _T("lta v, a")); break;
-               case 0x39: my_stprintf_s(buffer, buffer_len, _T("lta a, a")); break;
-               case 0x3a: my_stprintf_s(buffer, buffer_len, _T("lta b, a")); break;
-               case 0x3b: my_stprintf_s(buffer, buffer_len, _T("lta c, a")); break;
-               case 0x3c: my_stprintf_s(buffer, buffer_len, _T("lta d, a")); break;
-               case 0x3d: my_stprintf_s(buffer, buffer_len, _T("lta e, a")); break;
-               case 0x3e: my_stprintf_s(buffer, buffer_len, _T("lta h, a")); break;
-               case 0x3f: my_stprintf_s(buffer, buffer_len, _T("lta l, a")); break;
-               case 0x40: my_stprintf_s(buffer, buffer_len, _T("add v, a")); break;
-               case 0x41: my_stprintf_s(buffer, buffer_len, _T("add a, a")); break;
-               case 0x42: my_stprintf_s(buffer, buffer_len, _T("add b, a")); break;
-               case 0x43: my_stprintf_s(buffer, buffer_len, _T("add c, a")); break;
-               case 0x44: my_stprintf_s(buffer, buffer_len, _T("add d, a")); break;
-               case 0x45: my_stprintf_s(buffer, buffer_len, _T("add e, a")); break;
-               case 0x46: my_stprintf_s(buffer, buffer_len, _T("add h, a")); break;
-               case 0x47: my_stprintf_s(buffer, buffer_len, _T("add l, a")); break;
-               case 0x50: my_stprintf_s(buffer, buffer_len, _T("adc v, a")); break;
-               case 0x51: my_stprintf_s(buffer, buffer_len, _T("adc a, a")); break;
-               case 0x52: my_stprintf_s(buffer, buffer_len, _T("adc b, a")); break;
-               case 0x53: my_stprintf_s(buffer, buffer_len, _T("adc c, a")); break;
-               case 0x54: my_stprintf_s(buffer, buffer_len, _T("adc d, a")); break;
-               case 0x55: my_stprintf_s(buffer, buffer_len, _T("adc e, a")); break;
-               case 0x56: my_stprintf_s(buffer, buffer_len, _T("adc h, a")); break;
-               case 0x57: my_stprintf_s(buffer, buffer_len, _T("adc l, a")); break;
-               case 0x60: my_stprintf_s(buffer, buffer_len, _T("sub v, a")); break;
-               case 0x61: my_stprintf_s(buffer, buffer_len, _T("sub a, a")); break;
-               case 0x62: my_stprintf_s(buffer, buffer_len, _T("sub b, a")); break;
-               case 0x63: my_stprintf_s(buffer, buffer_len, _T("sub c, a")); break;
-               case 0x64: my_stprintf_s(buffer, buffer_len, _T("sub d, a")); break;
-               case 0x65: my_stprintf_s(buffer, buffer_len, _T("sub e, a")); break;
-               case 0x66: my_stprintf_s(buffer, buffer_len, _T("sub h, a")); break;
-               case 0x67: my_stprintf_s(buffer, buffer_len, _T("sub l, a")); break;
-               case 0x68: my_stprintf_s(buffer, buffer_len, _T("nea v, a")); break;
-               case 0x69: my_stprintf_s(buffer, buffer_len, _T("nea a, a")); break;
-               case 0x6a: my_stprintf_s(buffer, buffer_len, _T("nea b, a")); break;
-               case 0x6b: my_stprintf_s(buffer, buffer_len, _T("nea c, a")); break;
-               case 0x6c: my_stprintf_s(buffer, buffer_len, _T("nea d, a")); break;
-               case 0x6d: my_stprintf_s(buffer, buffer_len, _T("nea e, a")); break;
-               case 0x6e: my_stprintf_s(buffer, buffer_len, _T("nea h, a")); break;
-               case 0x6f: my_stprintf_s(buffer, buffer_len, _T("nea l, a")); break;
-               case 0x70: my_stprintf_s(buffer, buffer_len, _T("sbb v, a")); break;
-               case 0x71: my_stprintf_s(buffer, buffer_len, _T("sbb a, a")); break;
-               case 0x72: my_stprintf_s(buffer, buffer_len, _T("sbb b, a")); break;
-               case 0x73: my_stprintf_s(buffer, buffer_len, _T("sbb c, a")); break;
-               case 0x74: my_stprintf_s(buffer, buffer_len, _T("sbb d, a")); break;
-               case 0x75: my_stprintf_s(buffer, buffer_len, _T("sbb e, a")); break;
-               case 0x76: my_stprintf_s(buffer, buffer_len, _T("sbb h, a")); break;
-               case 0x77: my_stprintf_s(buffer, buffer_len, _T("sbb l, a")); break;
-               case 0x78: my_stprintf_s(buffer, buffer_len, _T("eqa v, a")); break;
-               case 0x79: my_stprintf_s(buffer, buffer_len, _T("eqa a, a")); break;
-               case 0x7a: my_stprintf_s(buffer, buffer_len, _T("eqa b, a")); break;
-               case 0x7b: my_stprintf_s(buffer, buffer_len, _T("eqa c, a")); break;
-               case 0x7c: my_stprintf_s(buffer, buffer_len, _T("eqa d, a")); break;
-               case 0x7d: my_stprintf_s(buffer, buffer_len, _T("eqa e, a")); break;
-               case 0x7e: my_stprintf_s(buffer, buffer_len, _T("eqa h, a")); break;
-               case 0x7f: my_stprintf_s(buffer, buffer_len, _T("eqa l, a")); break;
-               case 0x88: my_stprintf_s(buffer, buffer_len, _T("ana a, v")); break;
-               case 0x89: my_stprintf_s(buffer, buffer_len, _T("ana a, a")); break;
-               case 0x8a: my_stprintf_s(buffer, buffer_len, _T("ana a, b")); break;
-               case 0x8b: my_stprintf_s(buffer, buffer_len, _T("ana a, c")); break;
-               case 0x8c: my_stprintf_s(buffer, buffer_len, _T("ana a, d")); break;
-               case 0x8d: my_stprintf_s(buffer, buffer_len, _T("ana a, e")); break;
-               case 0x8e: my_stprintf_s(buffer, buffer_len, _T("ana a, h")); break;
-               case 0x8f: my_stprintf_s(buffer, buffer_len, _T("ana a, l")); break;
-               case 0x90: my_stprintf_s(buffer, buffer_len, _T("xra a, v")); break;
-               case 0x91: my_stprintf_s(buffer, buffer_len, _T("xra a, a")); break;
-               case 0x92: my_stprintf_s(buffer, buffer_len, _T("xra a, b")); break;
-               case 0x93: my_stprintf_s(buffer, buffer_len, _T("xra a, c")); break;
-               case 0x94: my_stprintf_s(buffer, buffer_len, _T("xra a, d")); break;
-               case 0x95: my_stprintf_s(buffer, buffer_len, _T("xra a, e")); break;
-               case 0x96: my_stprintf_s(buffer, buffer_len, _T("xra a, h")); break;
-               case 0x97: my_stprintf_s(buffer, buffer_len, _T("xra a, l")); break;
-               case 0x98: my_stprintf_s(buffer, buffer_len, _T("ora a, v")); break;
-               case 0x99: my_stprintf_s(buffer, buffer_len, _T("ora a, a")); break;
-               case 0x9a: my_stprintf_s(buffer, buffer_len, _T("ora a, b")); break;
-               case 0x9b: my_stprintf_s(buffer, buffer_len, _T("ora a, c")); break;
-               case 0x9c: my_stprintf_s(buffer, buffer_len, _T("ora a, d")); break;
-               case 0x9d: my_stprintf_s(buffer, buffer_len, _T("ora a, e")); break;
-               case 0x9e: my_stprintf_s(buffer, buffer_len, _T("ora a, h")); break;
-               case 0x9f: my_stprintf_s(buffer, buffer_len, _T("ora a, l")); break;
-               case 0xa0: my_stprintf_s(buffer, buffer_len, _T("addnc a, v")); break;
-               case 0xa1: my_stprintf_s(buffer, buffer_len, _T("addnc a, a")); break;
-               case 0xa2: my_stprintf_s(buffer, buffer_len, _T("addnc a, b")); break;
-               case 0xa3: my_stprintf_s(buffer, buffer_len, _T("addnc a, c")); break;
-               case 0xa4: my_stprintf_s(buffer, buffer_len, _T("addnc a, d")); break;
-               case 0xa5: my_stprintf_s(buffer, buffer_len, _T("addnc a, e")); break;
-               case 0xa6: my_stprintf_s(buffer, buffer_len, _T("addnc a, h")); break;
-               case 0xa7: my_stprintf_s(buffer, buffer_len, _T("addnc a, l")); break;
-               case 0xa8: my_stprintf_s(buffer, buffer_len, _T("gta a, v")); break;
-               case 0xa9: my_stprintf_s(buffer, buffer_len, _T("gta a, a")); break;
-               case 0xaa: my_stprintf_s(buffer, buffer_len, _T("gta a, b")); break;
-               case 0xab: my_stprintf_s(buffer, buffer_len, _T("gta a, c")); break;
-               case 0xac: my_stprintf_s(buffer, buffer_len, _T("gta a, d")); break;
-               case 0xad: my_stprintf_s(buffer, buffer_len, _T("gta a, e")); break;
-               case 0xae: my_stprintf_s(buffer, buffer_len, _T("gta a, h")); break;
-               case 0xaf: my_stprintf_s(buffer, buffer_len, _T("gta a, l")); break;
-               case 0xb0: my_stprintf_s(buffer, buffer_len, _T("subnb a, v")); break;
-               case 0xb1: my_stprintf_s(buffer, buffer_len, _T("subnb a, a")); break;
-               case 0xb2: my_stprintf_s(buffer, buffer_len, _T("subnb a, b")); break;
-               case 0xb3: my_stprintf_s(buffer, buffer_len, _T("subnb a, c")); break;
-               case 0xb4: my_stprintf_s(buffer, buffer_len, _T("subnb a, d")); break;
-               case 0xb5: my_stprintf_s(buffer, buffer_len, _T("subnb a, e")); break;
-               case 0xb6: my_stprintf_s(buffer, buffer_len, _T("subnb a, h")); break;
-               case 0xb7: my_stprintf_s(buffer, buffer_len, _T("subnb a, l")); break;
-               case 0xb8: my_stprintf_s(buffer, buffer_len, _T("lta a, v")); break;
-               case 0xb9: my_stprintf_s(buffer, buffer_len, _T("lta a, a")); break;
-               case 0xba: my_stprintf_s(buffer, buffer_len, _T("lta a, b")); break;
-               case 0xbb: my_stprintf_s(buffer, buffer_len, _T("lta a, c")); break;
-               case 0xbc: my_stprintf_s(buffer, buffer_len, _T("lta a, d")); break;
-               case 0xbd: my_stprintf_s(buffer, buffer_len, _T("lta a, e")); break;
-               case 0xbe: my_stprintf_s(buffer, buffer_len, _T("lta a, h")); break;
-               case 0xbf: my_stprintf_s(buffer, buffer_len, _T("lta a, l")); break;
-               case 0xc0: my_stprintf_s(buffer, buffer_len, _T("add a, v")); break;
-               case 0xc1: my_stprintf_s(buffer, buffer_len, _T("add a, a")); break;
-               case 0xc2: my_stprintf_s(buffer, buffer_len, _T("add a, b")); break;
-               case 0xc3: my_stprintf_s(buffer, buffer_len, _T("add a, c")); break;
-               case 0xc4: my_stprintf_s(buffer, buffer_len, _T("add a, d")); break;
-               case 0xc5: my_stprintf_s(buffer, buffer_len, _T("add a, e")); break;
-               case 0xc6: my_stprintf_s(buffer, buffer_len, _T("add a, h")); break;
-               case 0xc7: my_stprintf_s(buffer, buffer_len, _T("add a, l")); break;
-               case 0xc8: my_stprintf_s(buffer, buffer_len, _T("ona a, v")); break;
-               case 0xc9: my_stprintf_s(buffer, buffer_len, _T("ona a, a")); break;
-               case 0xca: my_stprintf_s(buffer, buffer_len, _T("ona a, b")); break;
-               case 0xcb: my_stprintf_s(buffer, buffer_len, _T("ona a, c")); break;
-               case 0xcc: my_stprintf_s(buffer, buffer_len, _T("ona a, d")); break;
-               case 0xcd: my_stprintf_s(buffer, buffer_len, _T("ona a, e")); break;
-               case 0xce: my_stprintf_s(buffer, buffer_len, _T("ona a, h")); break;
-               case 0xcf: my_stprintf_s(buffer, buffer_len, _T("ona a, l")); break;
-               case 0xd0: my_stprintf_s(buffer, buffer_len, _T("adc a, v")); break;
-               case 0xd1: my_stprintf_s(buffer, buffer_len, _T("adc a, a")); break;
-               case 0xd2: my_stprintf_s(buffer, buffer_len, _T("adc a, b")); break;
-               case 0xd3: my_stprintf_s(buffer, buffer_len, _T("adc a, c")); break;
-               case 0xd4: my_stprintf_s(buffer, buffer_len, _T("adc a, d")); break;
-               case 0xd5: my_stprintf_s(buffer, buffer_len, _T("adc a, e")); break;
-               case 0xd6: my_stprintf_s(buffer, buffer_len, _T("adc a, h")); break;
-               case 0xd7: my_stprintf_s(buffer, buffer_len, _T("adc a, l")); break;
-               case 0xd8: my_stprintf_s(buffer, buffer_len, _T("offa a, v")); break;
-               case 0xd9: my_stprintf_s(buffer, buffer_len, _T("offa a, a")); break;
-               case 0xda: my_stprintf_s(buffer, buffer_len, _T("offa a, b")); break;
-               case 0xdb: my_stprintf_s(buffer, buffer_len, _T("offa a, c")); break;
-               case 0xdc: my_stprintf_s(buffer, buffer_len, _T("offa a, d")); break;
-               case 0xdd: my_stprintf_s(buffer, buffer_len, _T("offa a, e")); break;
-               case 0xde: my_stprintf_s(buffer, buffer_len, _T("offa a, h")); break;
-               case 0xdf: my_stprintf_s(buffer, buffer_len, _T("offa a, l")); break;
-               case 0xe0: my_stprintf_s(buffer, buffer_len, _T("sub a, v")); break;
-               case 0xe1: my_stprintf_s(buffer, buffer_len, _T("sub a, a")); break;
-               case 0xe2: my_stprintf_s(buffer, buffer_len, _T("sub a, b")); break;
-               case 0xe3: my_stprintf_s(buffer, buffer_len, _T("sub a, c")); break;
-               case 0xe4: my_stprintf_s(buffer, buffer_len, _T("sub a, d")); break;
-               case 0xe5: my_stprintf_s(buffer, buffer_len, _T("sub a, e")); break;
-               case 0xe6: my_stprintf_s(buffer, buffer_len, _T("sub a, h")); break;
-               case 0xe7: my_stprintf_s(buffer, buffer_len, _T("sub a, l")); break;
-               case 0xe8: my_stprintf_s(buffer, buffer_len, _T("nea a, v")); break;
-               case 0xe9: my_stprintf_s(buffer, buffer_len, _T("nea a, a")); break;
-               case 0xea: my_stprintf_s(buffer, buffer_len, _T("nea a, b")); break;
-               case 0xeb: my_stprintf_s(buffer, buffer_len, _T("nea a, c")); break;
-               case 0xec: my_stprintf_s(buffer, buffer_len, _T("nea a, d")); break;
-               case 0xed: my_stprintf_s(buffer, buffer_len, _T("nea a, e")); break;
-               case 0xee: my_stprintf_s(buffer, buffer_len, _T("nea a, h")); break;
-               case 0xef: my_stprintf_s(buffer, buffer_len, _T("nea a, l")); break;
-               case 0xf0: my_stprintf_s(buffer, buffer_len, _T("sbb a, v")); break;
-               case 0xf1: my_stprintf_s(buffer, buffer_len, _T("sbb a, a")); break;
-               case 0xf2: my_stprintf_s(buffer, buffer_len, _T("sbb a, b")); break;
-               case 0xf3: my_stprintf_s(buffer, buffer_len, _T("sbb a, c")); break;
-               case 0xf4: my_stprintf_s(buffer, buffer_len, _T("sbb a, d")); break;
-               case 0xf5: my_stprintf_s(buffer, buffer_len, _T("sbb a, e")); break;
-               case 0xf6: my_stprintf_s(buffer, buffer_len, _T("sbb a, h")); break;
-               case 0xf7: my_stprintf_s(buffer, buffer_len, _T("sbb a, l")); break;
-               case 0xf8: my_stprintf_s(buffer, buffer_len, _T("eqa a, v")); break;
-               case 0xf9: my_stprintf_s(buffer, buffer_len, _T("eqa a, a")); break;
-               case 0xfa: my_stprintf_s(buffer, buffer_len, _T("eqa a, b")); break;
-               case 0xfb: my_stprintf_s(buffer, buffer_len, _T("eqa a, c")); break;
-               case 0xfc: my_stprintf_s(buffer, buffer_len, _T("eqa a, d")); break;
-               case 0xfd: my_stprintf_s(buffer, buffer_len, _T("eqa a, e")); break;
-               case 0xfe: my_stprintf_s(buffer, buffer_len, _T("eqa a, h")); break;
-               case 0xff: my_stprintf_s(buffer, buffer_len, _T("eqa a, l")); break;
-               default: my_stprintf_s(buffer, buffer_len, _T("db 60h, %02xh"), b);
+               case 0x08: my_stprintf_s(buffer, buffer_len, _T("ana v,a")); break;
+               case 0x09: my_stprintf_s(buffer, buffer_len, _T("ana a,a")); break;
+               case 0x0a: my_stprintf_s(buffer, buffer_len, _T("ana b,a")); break;
+               case 0x0b: my_stprintf_s(buffer, buffer_len, _T("ana c,a")); break;
+               case 0x0c: my_stprintf_s(buffer, buffer_len, _T("ana d,a")); break;
+               case 0x0d: my_stprintf_s(buffer, buffer_len, _T("ana e,a")); break;
+               case 0x0e: my_stprintf_s(buffer, buffer_len, _T("ana h,a")); break;
+               case 0x0f: my_stprintf_s(buffer, buffer_len, _T("ana l,a")); break;
+               case 0x10: my_stprintf_s(buffer, buffer_len, _T("xra v,a")); break;
+               case 0x11: my_stprintf_s(buffer, buffer_len, _T("xra a,a")); break;
+               case 0x12: my_stprintf_s(buffer, buffer_len, _T("xra b,a")); break;
+               case 0x13: my_stprintf_s(buffer, buffer_len, _T("xra c,a")); break;
+               case 0x14: my_stprintf_s(buffer, buffer_len, _T("xra d,a")); break;
+               case 0x15: my_stprintf_s(buffer, buffer_len, _T("xra e,a")); break;
+               case 0x16: my_stprintf_s(buffer, buffer_len, _T("xra h,a")); break;
+               case 0x17: my_stprintf_s(buffer, buffer_len, _T("xra l,a")); break;
+               case 0x18: my_stprintf_s(buffer, buffer_len, _T("ora v,a")); break;
+               case 0x19: my_stprintf_s(buffer, buffer_len, _T("ora a,a")); break;
+               case 0x1a: my_stprintf_s(buffer, buffer_len, _T("ora b,a")); break;
+               case 0x1b: my_stprintf_s(buffer, buffer_len, _T("ora c,a")); break;
+               case 0x1c: my_stprintf_s(buffer, buffer_len, _T("ora d,a")); break;
+               case 0x1d: my_stprintf_s(buffer, buffer_len, _T("ora e,a")); break;
+               case 0x1e: my_stprintf_s(buffer, buffer_len, _T("ora h,a")); break;
+               case 0x1f: my_stprintf_s(buffer, buffer_len, _T("ora l,a")); break;
+               case 0x20: my_stprintf_s(buffer, buffer_len, _T("addnc v,a")); break;
+               case 0x21: my_stprintf_s(buffer, buffer_len, _T("addnc a,a")); break;
+               case 0x22: my_stprintf_s(buffer, buffer_len, _T("addnc b,a")); break;
+               case 0x23: my_stprintf_s(buffer, buffer_len, _T("addnc c,a")); break;
+               case 0x24: my_stprintf_s(buffer, buffer_len, _T("addnc d,a")); break;
+               case 0x25: my_stprintf_s(buffer, buffer_len, _T("addnc e,a")); break;
+               case 0x26: my_stprintf_s(buffer, buffer_len, _T("addnc h,a")); break;
+               case 0x27: my_stprintf_s(buffer, buffer_len, _T("addnc l,a")); break;
+               case 0x28: my_stprintf_s(buffer, buffer_len, _T("gta v,a")); break;
+               case 0x29: my_stprintf_s(buffer, buffer_len, _T("gta a,a")); break;
+               case 0x2a: my_stprintf_s(buffer, buffer_len, _T("gta b,a")); break;
+               case 0x2b: my_stprintf_s(buffer, buffer_len, _T("gta c,a")); break;
+               case 0x2c: my_stprintf_s(buffer, buffer_len, _T("gta d,a")); break;
+               case 0x2d: my_stprintf_s(buffer, buffer_len, _T("gta e,a")); break;
+               case 0x2e: my_stprintf_s(buffer, buffer_len, _T("gta h,a")); break;
+               case 0x2f: my_stprintf_s(buffer, buffer_len, _T("gta l,a")); break;
+               case 0x30: my_stprintf_s(buffer, buffer_len, _T("subnb v,a")); break;
+               case 0x31: my_stprintf_s(buffer, buffer_len, _T("subnb a,a")); break;
+               case 0x32: my_stprintf_s(buffer, buffer_len, _T("subnb b,a")); break;
+               case 0x33: my_stprintf_s(buffer, buffer_len, _T("subnb c,a")); break;
+               case 0x34: my_stprintf_s(buffer, buffer_len, _T("subnb d,a")); break;
+               case 0x35: my_stprintf_s(buffer, buffer_len, _T("subnb e,a")); break;
+               case 0x36: my_stprintf_s(buffer, buffer_len, _T("subnb h,a")); break;
+               case 0x37: my_stprintf_s(buffer, buffer_len, _T("subnb l,a")); break;
+               case 0x38: my_stprintf_s(buffer, buffer_len, _T("lta v,a")); break;
+               case 0x39: my_stprintf_s(buffer, buffer_len, _T("lta a,a")); break;
+               case 0x3a: my_stprintf_s(buffer, buffer_len, _T("lta b,a")); break;
+               case 0x3b: my_stprintf_s(buffer, buffer_len, _T("lta c,a")); break;
+               case 0x3c: my_stprintf_s(buffer, buffer_len, _T("lta d,a")); break;
+               case 0x3d: my_stprintf_s(buffer, buffer_len, _T("lta e,a")); break;
+               case 0x3e: my_stprintf_s(buffer, buffer_len, _T("lta h,a")); break;
+               case 0x3f: my_stprintf_s(buffer, buffer_len, _T("lta l,a")); break;
+               case 0x40: my_stprintf_s(buffer, buffer_len, _T("add v,a")); break;
+               case 0x41: my_stprintf_s(buffer, buffer_len, _T("add a,a")); break;
+               case 0x42: my_stprintf_s(buffer, buffer_len, _T("add b,a")); break;
+               case 0x43: my_stprintf_s(buffer, buffer_len, _T("add c,a")); break;
+               case 0x44: my_stprintf_s(buffer, buffer_len, _T("add d,a")); break;
+               case 0x45: my_stprintf_s(buffer, buffer_len, _T("add e,a")); break;
+               case 0x46: my_stprintf_s(buffer, buffer_len, _T("add h,a")); break;
+               case 0x47: my_stprintf_s(buffer, buffer_len, _T("add l,a")); break;
+               case 0x50: my_stprintf_s(buffer, buffer_len, _T("adc v,a")); break;
+               case 0x51: my_stprintf_s(buffer, buffer_len, _T("adc a,a")); break;
+               case 0x52: my_stprintf_s(buffer, buffer_len, _T("adc b,a")); break;
+               case 0x53: my_stprintf_s(buffer, buffer_len, _T("adc c,a")); break;
+               case 0x54: my_stprintf_s(buffer, buffer_len, _T("adc d,a")); break;
+               case 0x55: my_stprintf_s(buffer, buffer_len, _T("adc e,a")); break;
+               case 0x56: my_stprintf_s(buffer, buffer_len, _T("adc h,a")); break;
+               case 0x57: my_stprintf_s(buffer, buffer_len, _T("adc l,a")); break;
+               case 0x60: my_stprintf_s(buffer, buffer_len, _T("sub v,a")); break;
+               case 0x61: my_stprintf_s(buffer, buffer_len, _T("sub a,a")); break;
+               case 0x62: my_stprintf_s(buffer, buffer_len, _T("sub b,a")); break;
+               case 0x63: my_stprintf_s(buffer, buffer_len, _T("sub c,a")); break;
+               case 0x64: my_stprintf_s(buffer, buffer_len, _T("sub d,a")); break;
+               case 0x65: my_stprintf_s(buffer, buffer_len, _T("sub e,a")); break;
+               case 0x66: my_stprintf_s(buffer, buffer_len, _T("sub h,a")); break;
+               case 0x67: my_stprintf_s(buffer, buffer_len, _T("sub l,a")); break;
+               case 0x68: my_stprintf_s(buffer, buffer_len, _T("nea v,a")); break;
+               case 0x69: my_stprintf_s(buffer, buffer_len, _T("nea a,a")); break;
+               case 0x6a: my_stprintf_s(buffer, buffer_len, _T("nea b,a")); break;
+               case 0x6b: my_stprintf_s(buffer, buffer_len, _T("nea c,a")); break;
+               case 0x6c: my_stprintf_s(buffer, buffer_len, _T("nea d,a")); break;
+               case 0x6d: my_stprintf_s(buffer, buffer_len, _T("nea e,a")); break;
+               case 0x6e: my_stprintf_s(buffer, buffer_len, _T("nea h,a")); break;
+               case 0x6f: my_stprintf_s(buffer, buffer_len, _T("nea l,a")); break;
+               case 0x70: my_stprintf_s(buffer, buffer_len, _T("sbb v,a")); break;
+               case 0x71: my_stprintf_s(buffer, buffer_len, _T("sbb a,a")); break;
+               case 0x72: my_stprintf_s(buffer, buffer_len, _T("sbb b,a")); break;
+               case 0x73: my_stprintf_s(buffer, buffer_len, _T("sbb c,a")); break;
+               case 0x74: my_stprintf_s(buffer, buffer_len, _T("sbb d,a")); break;
+               case 0x75: my_stprintf_s(buffer, buffer_len, _T("sbb e,a")); break;
+               case 0x76: my_stprintf_s(buffer, buffer_len, _T("sbb h,a")); break;
+               case 0x77: my_stprintf_s(buffer, buffer_len, _T("sbb l,a")); break;
+               case 0x78: my_stprintf_s(buffer, buffer_len, _T("eqa v,a")); break;
+               case 0x79: my_stprintf_s(buffer, buffer_len, _T("eqa a,a")); break;
+               case 0x7a: my_stprintf_s(buffer, buffer_len, _T("eqa b,a")); break;
+               case 0x7b: my_stprintf_s(buffer, buffer_len, _T("eqa c,a")); break;
+               case 0x7c: my_stprintf_s(buffer, buffer_len, _T("eqa d,a")); break;
+               case 0x7d: my_stprintf_s(buffer, buffer_len, _T("eqa e,a")); break;
+               case 0x7e: my_stprintf_s(buffer, buffer_len, _T("eqa h,a")); break;
+               case 0x7f: my_stprintf_s(buffer, buffer_len, _T("eqa l,a")); break;
+               case 0x88: my_stprintf_s(buffer, buffer_len, _T("ana a,v")); break;
+               case 0x89: my_stprintf_s(buffer, buffer_len, _T("ana a,a")); break;
+               case 0x8a: my_stprintf_s(buffer, buffer_len, _T("ana a,b")); break;
+               case 0x8b: my_stprintf_s(buffer, buffer_len, _T("ana a,c")); break;
+               case 0x8c: my_stprintf_s(buffer, buffer_len, _T("ana a,d")); break;
+               case 0x8d: my_stprintf_s(buffer, buffer_len, _T("ana a,e")); break;
+               case 0x8e: my_stprintf_s(buffer, buffer_len, _T("ana a,h")); break;
+               case 0x8f: my_stprintf_s(buffer, buffer_len, _T("ana a,l")); break;
+               case 0x90: my_stprintf_s(buffer, buffer_len, _T("xra a,v")); break;
+               case 0x91: my_stprintf_s(buffer, buffer_len, _T("xra a,a")); break;
+               case 0x92: my_stprintf_s(buffer, buffer_len, _T("xra a,b")); break;
+               case 0x93: my_stprintf_s(buffer, buffer_len, _T("xra a,c")); break;
+               case 0x94: my_stprintf_s(buffer, buffer_len, _T("xra a,d")); break;
+               case 0x95: my_stprintf_s(buffer, buffer_len, _T("xra a,e")); break;
+               case 0x96: my_stprintf_s(buffer, buffer_len, _T("xra a,h")); break;
+               case 0x97: my_stprintf_s(buffer, buffer_len, _T("xra a,l")); break;
+               case 0x98: my_stprintf_s(buffer, buffer_len, _T("ora a,v")); break;
+               case 0x99: my_stprintf_s(buffer, buffer_len, _T("ora a,a")); break;
+               case 0x9a: my_stprintf_s(buffer, buffer_len, _T("ora a,b")); break;
+               case 0x9b: my_stprintf_s(buffer, buffer_len, _T("ora a,c")); break;
+               case 0x9c: my_stprintf_s(buffer, buffer_len, _T("ora a,d")); break;
+               case 0x9d: my_stprintf_s(buffer, buffer_len, _T("ora a,e")); break;
+               case 0x9e: my_stprintf_s(buffer, buffer_len, _T("ora a,h")); break;
+               case 0x9f: my_stprintf_s(buffer, buffer_len, _T("ora a,l")); break;
+               case 0xa0: my_stprintf_s(buffer, buffer_len, _T("addnc a,v")); break;
+               case 0xa1: my_stprintf_s(buffer, buffer_len, _T("addnc a,a")); break;
+               case 0xa2: my_stprintf_s(buffer, buffer_len, _T("addnc a,b")); break;
+               case 0xa3: my_stprintf_s(buffer, buffer_len, _T("addnc a,c")); break;
+               case 0xa4: my_stprintf_s(buffer, buffer_len, _T("addnc a,d")); break;
+               case 0xa5: my_stprintf_s(buffer, buffer_len, _T("addnc a,e")); break;
+               case 0xa6: my_stprintf_s(buffer, buffer_len, _T("addnc a,h")); break;
+               case 0xa7: my_stprintf_s(buffer, buffer_len, _T("addnc a,l")); break;
+               case 0xa8: my_stprintf_s(buffer, buffer_len, _T("gta a,v")); break;
+               case 0xa9: my_stprintf_s(buffer, buffer_len, _T("gta a,a")); break;
+               case 0xaa: my_stprintf_s(buffer, buffer_len, _T("gta a,b")); break;
+               case 0xab: my_stprintf_s(buffer, buffer_len, _T("gta a,c")); break;
+               case 0xac: my_stprintf_s(buffer, buffer_len, _T("gta a,d")); break;
+               case 0xad: my_stprintf_s(buffer, buffer_len, _T("gta a,e")); break;
+               case 0xae: my_stprintf_s(buffer, buffer_len, _T("gta a,h")); break;
+               case 0xaf: my_stprintf_s(buffer, buffer_len, _T("gta a,l")); break;
+               case 0xb0: my_stprintf_s(buffer, buffer_len, _T("subnb a,v")); break;
+               case 0xb1: my_stprintf_s(buffer, buffer_len, _T("subnb a,a")); break;
+               case 0xb2: my_stprintf_s(buffer, buffer_len, _T("subnb a,b")); break;
+               case 0xb3: my_stprintf_s(buffer, buffer_len, _T("subnb a,c")); break;
+               case 0xb4: my_stprintf_s(buffer, buffer_len, _T("subnb a,d")); break;
+               case 0xb5: my_stprintf_s(buffer, buffer_len, _T("subnb a,e")); break;
+               case 0xb6: my_stprintf_s(buffer, buffer_len, _T("subnb a,h")); break;
+               case 0xb7: my_stprintf_s(buffer, buffer_len, _T("subnb a,l")); break;
+               case 0xb8: my_stprintf_s(buffer, buffer_len, _T("lta a,v")); break;
+               case 0xb9: my_stprintf_s(buffer, buffer_len, _T("lta a,a")); break;
+               case 0xba: my_stprintf_s(buffer, buffer_len, _T("lta a,b")); break;
+               case 0xbb: my_stprintf_s(buffer, buffer_len, _T("lta a,c")); break;
+               case 0xbc: my_stprintf_s(buffer, buffer_len, _T("lta a,d")); break;
+               case 0xbd: my_stprintf_s(buffer, buffer_len, _T("lta a,e")); break;
+               case 0xbe: my_stprintf_s(buffer, buffer_len, _T("lta a,h")); break;
+               case 0xbf: my_stprintf_s(buffer, buffer_len, _T("lta a,l")); break;
+               case 0xc0: my_stprintf_s(buffer, buffer_len, _T("add a,v")); break;
+               case 0xc1: my_stprintf_s(buffer, buffer_len, _T("add a,a")); break;
+               case 0xc2: my_stprintf_s(buffer, buffer_len, _T("add a,b")); break;
+               case 0xc3: my_stprintf_s(buffer, buffer_len, _T("add a,c")); break;
+               case 0xc4: my_stprintf_s(buffer, buffer_len, _T("add a,d")); break;
+               case 0xc5: my_stprintf_s(buffer, buffer_len, _T("add a,e")); break;
+               case 0xc6: my_stprintf_s(buffer, buffer_len, _T("add a,h")); break;
+               case 0xc7: my_stprintf_s(buffer, buffer_len, _T("add a,l")); break;
+               case 0xc8: my_stprintf_s(buffer, buffer_len, _T("ona a,v")); break;
+               case 0xc9: my_stprintf_s(buffer, buffer_len, _T("ona a,a")); break;
+               case 0xca: my_stprintf_s(buffer, buffer_len, _T("ona a,b")); break;
+               case 0xcb: my_stprintf_s(buffer, buffer_len, _T("ona a,c")); break;
+               case 0xcc: my_stprintf_s(buffer, buffer_len, _T("ona a,d")); break;
+               case 0xcd: my_stprintf_s(buffer, buffer_len, _T("ona a,e")); break;
+               case 0xce: my_stprintf_s(buffer, buffer_len, _T("ona a,h")); break;
+               case 0xcf: my_stprintf_s(buffer, buffer_len, _T("ona a,l")); break;
+               case 0xd0: my_stprintf_s(buffer, buffer_len, _T("adc a,v")); break;
+               case 0xd1: my_stprintf_s(buffer, buffer_len, _T("adc a,a")); break;
+               case 0xd2: my_stprintf_s(buffer, buffer_len, _T("adc a,b")); break;
+               case 0xd3: my_stprintf_s(buffer, buffer_len, _T("adc a,c")); break;
+               case 0xd4: my_stprintf_s(buffer, buffer_len, _T("adc a,d")); break;
+               case 0xd5: my_stprintf_s(buffer, buffer_len, _T("adc a,e")); break;
+               case 0xd6: my_stprintf_s(buffer, buffer_len, _T("adc a,h")); break;
+               case 0xd7: my_stprintf_s(buffer, buffer_len, _T("adc a,l")); break;
+               case 0xd8: my_stprintf_s(buffer, buffer_len, _T("offa a,v")); break;
+               case 0xd9: my_stprintf_s(buffer, buffer_len, _T("offa a,a")); break;
+               case 0xda: my_stprintf_s(buffer, buffer_len, _T("offa a,b")); break;
+               case 0xdb: my_stprintf_s(buffer, buffer_len, _T("offa a,c")); break;
+               case 0xdc: my_stprintf_s(buffer, buffer_len, _T("offa a,d")); break;
+               case 0xdd: my_stprintf_s(buffer, buffer_len, _T("offa a,e")); break;
+               case 0xde: my_stprintf_s(buffer, buffer_len, _T("offa a,h")); break;
+               case 0xdf: my_stprintf_s(buffer, buffer_len, _T("offa a,l")); break;
+               case 0xe0: my_stprintf_s(buffer, buffer_len, _T("sub a,v")); break;
+               case 0xe1: my_stprintf_s(buffer, buffer_len, _T("sub a,a")); break;
+               case 0xe2: my_stprintf_s(buffer, buffer_len, _T("sub a,b")); break;
+               case 0xe3: my_stprintf_s(buffer, buffer_len, _T("sub a,c")); break;
+               case 0xe4: my_stprintf_s(buffer, buffer_len, _T("sub a,d")); break;
+               case 0xe5: my_stprintf_s(buffer, buffer_len, _T("sub a,e")); break;
+               case 0xe6: my_stprintf_s(buffer, buffer_len, _T("sub a,h")); break;
+               case 0xe7: my_stprintf_s(buffer, buffer_len, _T("sub a,l")); break;
+               case 0xe8: my_stprintf_s(buffer, buffer_len, _T("nea a,v")); break;
+               case 0xe9: my_stprintf_s(buffer, buffer_len, _T("nea a,a")); break;
+               case 0xea: my_stprintf_s(buffer, buffer_len, _T("nea a,b")); break;
+               case 0xeb: my_stprintf_s(buffer, buffer_len, _T("nea a,c")); break;
+               case 0xec: my_stprintf_s(buffer, buffer_len, _T("nea a,d")); break;
+               case 0xed: my_stprintf_s(buffer, buffer_len, _T("nea a,e")); break;
+               case 0xee: my_stprintf_s(buffer, buffer_len, _T("nea a,h")); break;
+               case 0xef: my_stprintf_s(buffer, buffer_len, _T("nea a,l")); break;
+               case 0xf0: my_stprintf_s(buffer, buffer_len, _T("sbb a,v")); break;
+               case 0xf1: my_stprintf_s(buffer, buffer_len, _T("sbb a,a")); break;
+               case 0xf2: my_stprintf_s(buffer, buffer_len, _T("sbb a,b")); break;
+               case 0xf3: my_stprintf_s(buffer, buffer_len, _T("sbb a,c")); break;
+               case 0xf4: my_stprintf_s(buffer, buffer_len, _T("sbb a,d")); break;
+               case 0xf5: my_stprintf_s(buffer, buffer_len, _T("sbb a,e")); break;
+               case 0xf6: my_stprintf_s(buffer, buffer_len, _T("sbb a,h")); break;
+               case 0xf7: my_stprintf_s(buffer, buffer_len, _T("sbb a,l")); break;
+               case 0xf8: my_stprintf_s(buffer, buffer_len, _T("eqa a,v")); break;
+               case 0xf9: my_stprintf_s(buffer, buffer_len, _T("eqa a,a")); break;
+               case 0xfa: my_stprintf_s(buffer, buffer_len, _T("eqa a,b")); break;
+               case 0xfb: my_stprintf_s(buffer, buffer_len, _T("eqa a,c")); break;
+               case 0xfc: my_stprintf_s(buffer, buffer_len, _T("eqa a,d")); break;
+               case 0xfd: my_stprintf_s(buffer, buffer_len, _T("eqa a,e")); break;
+               case 0xfe: my_stprintf_s(buffer, buffer_len, _T("eqa a,h")); break;
+               case 0xff: my_stprintf_s(buffer, buffer_len, _T("eqa a,l")); break;
+               default: my_stprintf_s(buffer, buffer_len, _T("db 60h,%02xh"), b);
                }
                break;
        case 0x61: my_stprintf_s(buffer, buffer_len, _T("daa")); break;
@@ -1791,200 +1791,200 @@ int UPD7801::debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
        case 0x63: my_stprintf_s(buffer, buffer_len, _T("calb")); break;
        case 0x64:
                switch(b = getb()) {
-               case 0x08: my_stprintf_s(buffer, buffer_len, _T("ani v, %02xh"), getb()); break;
-               case 0x09: my_stprintf_s(buffer, buffer_len, _T("ani a, %02xh"), getb()); break;
-               case 0x0a: my_stprintf_s(buffer, buffer_len, _T("ani b, %02xh"), getb()); break;
-               case 0x0b: my_stprintf_s(buffer, buffer_len, _T("ani c, %02xh"), getb()); break;
-               case 0x0c: my_stprintf_s(buffer, buffer_len, _T("ani d, %02xh"), getb()); break;
-               case 0x0d: my_stprintf_s(buffer, buffer_len, _T("ani e, %02xh"), getb()); break;
-               case 0x0e: my_stprintf_s(buffer, buffer_len, _T("ani h, %02xh"), getb()); break;
-               case 0x0f: my_stprintf_s(buffer, buffer_len, _T("ani l, %02xh"), getb()); break;
-               case 0x10: my_stprintf_s(buffer, buffer_len, _T("xri v, %02xh"), getb()); break;
-               case 0x11: my_stprintf_s(buffer, buffer_len, _T("xri a, %02xh"), getb()); break;
-               case 0x12: my_stprintf_s(buffer, buffer_len, _T("xri b, %02xh"), getb()); break;
-               case 0x13: my_stprintf_s(buffer, buffer_len, _T("xri c, %02xh"), getb()); break;
-               case 0x14: my_stprintf_s(buffer, buffer_len, _T("xri d, %02xh"), getb()); break;
-               case 0x15: my_stprintf_s(buffer, buffer_len, _T("xri e, %02xh"), getb()); break;
-               case 0x16: my_stprintf_s(buffer, buffer_len, _T("xri h, %02xh"), getb()); break;
-               case 0x17: my_stprintf_s(buffer, buffer_len, _T("xri l, %02xh"), getb()); break;
-               case 0x18: my_stprintf_s(buffer, buffer_len, _T("ori v, %02xh"), getb()); break;
-               case 0x19: my_stprintf_s(buffer, buffer_len, _T("ori a, %02xh"), getb()); break;
-               case 0x1a: my_stprintf_s(buffer, buffer_len, _T("ori b, %02xh"), getb()); break;
-               case 0x1b: my_stprintf_s(buffer, buffer_len, _T("ori c, %02xh"), getb()); break;
-               case 0x1c: my_stprintf_s(buffer, buffer_len, _T("ori d, %02xh"), getb()); break;
-               case 0x1d: my_stprintf_s(buffer, buffer_len, _T("ori e, %02xh"), getb()); break;
-               case 0x1e: my_stprintf_s(buffer, buffer_len, _T("ori h, %02xh"), getb()); break;
-               case 0x1f: my_stprintf_s(buffer, buffer_len, _T("ori l, %02xh"), getb()); break;
-               case 0x20: my_stprintf_s(buffer, buffer_len, _T("adinc v, %02xh"), getb()); break;
-               case 0x21: my_stprintf_s(buffer, buffer_len, _T("adinc a, %02xh"), getb()); break;
-               case 0x22: my_stprintf_s(buffer, buffer_len, _T("adinc b, %02xh"), getb()); break;
-               case 0x23: my_stprintf_s(buffer, buffer_len, _T("adinc c, %02xh"), getb()); break;
-               case 0x24: my_stprintf_s(buffer, buffer_len, _T("adinc d, %02xh"), getb()); break;
-               case 0x25: my_stprintf_s(buffer, buffer_len, _T("adinc e, %02xh"), getb()); break;
-               case 0x26: my_stprintf_s(buffer, buffer_len, _T("adinc h, %02xh"), getb()); break;
-               case 0x27: my_stprintf_s(buffer, buffer_len, _T("adinc l, %02xh"), getb()); break;
-               case 0x28: my_stprintf_s(buffer, buffer_len, _T("gti v, %02xh"), getb()); break;
-               case 0x29: my_stprintf_s(buffer, buffer_len, _T("gti a, %02xh"), getb()); break;
-               case 0x2a: my_stprintf_s(buffer, buffer_len, _T("gti b, %02xh"), getb()); break;
-               case 0x2b: my_stprintf_s(buffer, buffer_len, _T("gti c, %02xh"), getb()); break;
-               case 0x2c: my_stprintf_s(buffer, buffer_len, _T("gti d, %02xh"), getb()); break;
-               case 0x2d: my_stprintf_s(buffer, buffer_len, _T("gti e, %02xh"), getb()); break;
-               case 0x2e: my_stprintf_s(buffer, buffer_len, _T("gti h, %02xh"), getb()); break;
-               case 0x2f: my_stprintf_s(buffer, buffer_len, _T("gti l, %02xh"), getb()); break;
-               case 0x30: my_stprintf_s(buffer, buffer_len, _T("suinb v, %02xh"), getb()); break;
-               case 0x31: my_stprintf_s(buffer, buffer_len, _T("suinb a, %02xh"), getb()); break;
-               case 0x32: my_stprintf_s(buffer, buffer_len, _T("suinb b, %02xh"), getb()); break;
-               case 0x33: my_stprintf_s(buffer, buffer_len, _T("suinb c, %02xh"), getb()); break;
-               case 0x34: my_stprintf_s(buffer, buffer_len, _T("suinb d, %02xh"), getb()); break;
-               case 0x35: my_stprintf_s(buffer, buffer_len, _T("suinb e, %02xh"), getb()); break;
-               case 0x36: my_stprintf_s(buffer, buffer_len, _T("suinb h, %02xh"), getb()); break;
-               case 0x37: my_stprintf_s(buffer, buffer_len, _T("suinb l, %02xh"), getb()); break;
-               case 0x38: my_stprintf_s(buffer, buffer_len, _T("lti v, %02xh"), getb()); break;
-               case 0x39: my_stprintf_s(buffer, buffer_len, _T("lti a, %02xh"), getb()); break;
-               case 0x3a: my_stprintf_s(buffer, buffer_len, _T("lti b, %02xh"), getb()); break;
-               case 0x3b: my_stprintf_s(buffer, buffer_len, _T("lti c, %02xh"), getb()); break;
-               case 0x3c: my_stprintf_s(buffer, buffer_len, _T("lti d, %02xh"), getb()); break;
-               case 0x3d: my_stprintf_s(buffer, buffer_len, _T("lti e, %02xh"), getb()); break;
-               case 0x3e: my_stprintf_s(buffer, buffer_len, _T("lti h, %02xh"), getb()); break;
-               case 0x3f: my_stprintf_s(buffer, buffer_len, _T("lti l, %02xh"), getb()); break;
-               case 0x40: my_stprintf_s(buffer, buffer_len, _T("adi v, %02xh"), getb()); break;
-               case 0x41: my_stprintf_s(buffer, buffer_len, _T("adi a, %02xh"), getb()); break;
-               case 0x42: my_stprintf_s(buffer, buffer_len, _T("adi b, %02xh"), getb()); break;
-               case 0x43: my_stprintf_s(buffer, buffer_len, _T("adi c, %02xh"), getb()); break;
-               case 0x44: my_stprintf_s(buffer, buffer_len, _T("adi d, %02xh"), getb()); break;
-               case 0x45: my_stprintf_s(buffer, buffer_len, _T("adi e, %02xh"), getb()); break;
-               case 0x46: my_stprintf_s(buffer, buffer_len, _T("adi h, %02xh"), getb()); break;
-               case 0x47: my_stprintf_s(buffer, buffer_len, _T("adi l, %02xh"), getb()); break;
-               case 0x48: my_stprintf_s(buffer, buffer_len, _T("oni v, %02xh"), getb()); break;
-               case 0x49: my_stprintf_s(buffer, buffer_len, _T("oni a, %02xh"), getb()); break;
-               case 0x4a: my_stprintf_s(buffer, buffer_len, _T("oni b, %02xh"), getb()); break;
-               case 0x4b: my_stprintf_s(buffer, buffer_len, _T("oni c, %02xh"), getb()); break;
-               case 0x4c: my_stprintf_s(buffer, buffer_len, _T("oni d, %02xh"), getb()); break;
-               case 0x4d: my_stprintf_s(buffer, buffer_len, _T("oni e, %02xh"), getb()); break;
-               case 0x4e: my_stprintf_s(buffer, buffer_len, _T("oni h, %02xh"), getb()); break;
-               case 0x4f: my_stprintf_s(buffer, buffer_len, _T("oni l, %02xh"), getb()); break;
-               case 0x50: my_stprintf_s(buffer, buffer_len, _T("aci v, %02xh"), getb()); break;
-               case 0x51: my_stprintf_s(buffer, buffer_len, _T("aci a, %02xh"), getb()); break;
-               case 0x52: my_stprintf_s(buffer, buffer_len, _T("aci b, %02xh"), getb()); break;
-               case 0x53: my_stprintf_s(buffer, buffer_len, _T("aci c, %02xh"), getb()); break;
-               case 0x54: my_stprintf_s(buffer, buffer_len, _T("aci d, %02xh"), getb()); break;
-               case 0x55: my_stprintf_s(buffer, buffer_len, _T("aci e, %02xh"), getb()); break;
-               case 0x56: my_stprintf_s(buffer, buffer_len, _T("aci h, %02xh"), getb()); break;
-               case 0x57: my_stprintf_s(buffer, buffer_len, _T("aci l, %02xh"), getb()); break;
-               case 0x58: my_stprintf_s(buffer, buffer_len, _T("offi v, %02xh"), getb()); break;
-               case 0x59: my_stprintf_s(buffer, buffer_len, _T("offi a, %02xh"), getb()); break;
-               case 0x5a: my_stprintf_s(buffer, buffer_len, _T("offi b, %02xh"), getb()); break;
-               case 0x5b: my_stprintf_s(buffer, buffer_len, _T("offi c, %02xh"), getb()); break;
-               case 0x5c: my_stprintf_s(buffer, buffer_len, _T("offi d, %02xh"), getb()); break;
-               case 0x5d: my_stprintf_s(buffer, buffer_len, _T("offi e, %02xh"), getb()); break;
-               case 0x5e: my_stprintf_s(buffer, buffer_len, _T("offi h, %02xh"), getb()); break;
-               case 0x5f: my_stprintf_s(buffer, buffer_len, _T("offi l, %02xh"), getb()); break;
-               case 0x60: my_stprintf_s(buffer, buffer_len, _T("sui v, %02xh"), getb()); break;
-               case 0x61: my_stprintf_s(buffer, buffer_len, _T("sui a, %02xh"), getb()); break;
-               case 0x62: my_stprintf_s(buffer, buffer_len, _T("sui b, %02xh"), getb()); break;
-               case 0x63: my_stprintf_s(buffer, buffer_len, _T("sui c, %02xh"), getb()); break;
-               case 0x64: my_stprintf_s(buffer, buffer_len, _T("sui d, %02xh"), getb()); break;
-               case 0x65: my_stprintf_s(buffer, buffer_len, _T("sui e, %02xh"), getb()); break;
-               case 0x66: my_stprintf_s(buffer, buffer_len, _T("sui h, %02xh"), getb()); break;
-               case 0x67: my_stprintf_s(buffer, buffer_len, _T("sui l, %02xh"), getb()); break;
-               case 0x68: my_stprintf_s(buffer, buffer_len, _T("nei v, %02xh"), getb()); break;
-               case 0x69: my_stprintf_s(buffer, buffer_len, _T("nei a, %02xh"), getb()); break;
-               case 0x6a: my_stprintf_s(buffer, buffer_len, _T("nei b, %02xh"), getb()); break;
-               case 0x6b: my_stprintf_s(buffer, buffer_len, _T("nei c, %02xh"), getb()); break;
-               case 0x6c: my_stprintf_s(buffer, buffer_len, _T("nei d, %02xh"), getb()); break;
-               case 0x6d: my_stprintf_s(buffer, buffer_len, _T("nei e, %02xh"), getb()); break;
-               case 0x6e: my_stprintf_s(buffer, buffer_len, _T("nei h, %02xh"), getb()); break;
-               case 0x6f: my_stprintf_s(buffer, buffer_len, _T("nei l, %02xh"), getb()); break;
-               case 0x70: my_stprintf_s(buffer, buffer_len, _T("sbi v, %02xh"), getb()); break;
-               case 0x71: my_stprintf_s(buffer, buffer_len, _T("sbi a, %02xh"), getb()); break;
-               case 0x72: my_stprintf_s(buffer, buffer_len, _T("sbi b, %02xh"), getb()); break;
-               case 0x73: my_stprintf_s(buffer, buffer_len, _T("sbi c, %02xh"), getb()); break;
-               case 0x74: my_stprintf_s(buffer, buffer_len, _T("sbi d, %02xh"), getb()); break;
-               case 0x75: my_stprintf_s(buffer, buffer_len, _T("sbi e, %02xh"), getb()); break;
-               case 0x76: my_stprintf_s(buffer, buffer_len, _T("sbi h, %02xh"), getb()); break;
-               case 0x77: my_stprintf_s(buffer, buffer_len, _T("sbi l, %02xh"), getb()); break;
-               case 0x78: my_stprintf_s(buffer, buffer_len, _T("eqi v, %02xh"), getb()); break;
-               case 0x79: my_stprintf_s(buffer, buffer_len, _T("eqi a, %02xh"), getb()); break;
-               case 0x7a: my_stprintf_s(buffer, buffer_len, _T("eqi b, %02xh"), getb()); break;
-               case 0x7b: my_stprintf_s(buffer, buffer_len, _T("eqi c, %02xh"), getb()); break;
-               case 0x7c: my_stprintf_s(buffer, buffer_len, _T("eqi d, %02xh"), getb()); break;
-               case 0x7d: my_stprintf_s(buffer, buffer_len, _T("eqi e, %02xh"), getb()); break;
-               case 0x7e: my_stprintf_s(buffer, buffer_len, _T("eqi h, %02xh"), getb()); break;
-               case 0x7f: my_stprintf_s(buffer, buffer_len, _T("eqi l, %02xh"), getb()); break;
-               case 0x88: my_stprintf_s(buffer, buffer_len, _T("ani pa, %02xh"), getb()); break;
-               case 0x89: my_stprintf_s(buffer, buffer_len, _T("ani pb, %02xh"), getb()); break;
-               case 0x8a: my_stprintf_s(buffer, buffer_len, _T("ani pc, %02xh"), getb()); break;
-               case 0x8b: my_stprintf_s(buffer, buffer_len, _T("ani mk, %02xh"), getb()); break;
-               case 0x90: my_stprintf_s(buffer, buffer_len, _T("xri pa, %02xh"), getb()); break;
-               case 0x91: my_stprintf_s(buffer, buffer_len, _T("xri pb, %02xh"), getb()); break;
-               case 0x92: my_stprintf_s(buffer, buffer_len, _T("xri pc, %02xh"), getb()); break;
-               case 0x93: my_stprintf_s(buffer, buffer_len, _T("xri mk, %02xh"), getb()); break;
-               case 0x98: my_stprintf_s(buffer, buffer_len, _T("ori pa, %02xh"), getb()); break;
-               case 0x99: my_stprintf_s(buffer, buffer_len, _T("ori pb, %02xh"), getb()); break;
-               case 0x9a: my_stprintf_s(buffer, buffer_len, _T("ori pc, %02xh"), getb()); break;
-               case 0x9b: my_stprintf_s(buffer, buffer_len, _T("ori mk, %02xh"), getb()); break;
-               case 0xa0: my_stprintf_s(buffer, buffer_len, _T("adinc pa, %02xh"), getb()); break;
-               case 0xa1: my_stprintf_s(buffer, buffer_len, _T("adinc pb, %02xh"), getb()); break;
-               case 0xa2: my_stprintf_s(buffer, buffer_len, _T("adinc pc, %02xh"), getb()); break;
-               case 0xa3: my_stprintf_s(buffer, buffer_len, _T("adinc mk, %02xh"), getb()); break;
-               case 0xa8: my_stprintf_s(buffer, buffer_len, _T("gti pa, %02xh"), getb()); break;
-               case 0xa9: my_stprintf_s(buffer, buffer_len, _T("gti pb, %02xh"), getb()); break;
-               case 0xaa: my_stprintf_s(buffer, buffer_len, _T("gti pc, %02xh"), getb()); break;
-               case 0xab: my_stprintf_s(buffer, buffer_len, _T("gti mk, %02xh"), getb()); break;
-               case 0xb0: my_stprintf_s(buffer, buffer_len, _T("suinb pa, %02xh"), getb()); break;
-               case 0xb1: my_stprintf_s(buffer, buffer_len, _T("suinb pb, %02xh"), getb()); break;
-               case 0xb2: my_stprintf_s(buffer, buffer_len, _T("suinb pc, %02xh"), getb()); break;
-               case 0xb3: my_stprintf_s(buffer, buffer_len, _T("suinb mk, %02xh"), getb()); break;
-               case 0xb8: my_stprintf_s(buffer, buffer_len, _T("lti pa, %02xh"), getb()); break;
-               case 0xb9: my_stprintf_s(buffer, buffer_len, _T("lti pb, %02xh"), getb()); break;
-               case 0xba: my_stprintf_s(buffer, buffer_len, _T("lti pc, %02xh"), getb()); break;
-               case 0xbb: my_stprintf_s(buffer, buffer_len, _T("lti mk, %02xh"), getb()); break;
-               case 0xc0: my_stprintf_s(buffer, buffer_len, _T("adi pa, %02xh"), getb()); break;
-               case 0xc1: my_stprintf_s(buffer, buffer_len, _T("adi pb, %02xh"), getb()); break;
-               case 0xc2: my_stprintf_s(buffer, buffer_len, _T("adi pc, %02xh"), getb()); break;
-               case 0xc3: my_stprintf_s(buffer, buffer_len, _T("adi mk, %02xh"), getb()); break;
-               case 0xc8: my_stprintf_s(buffer, buffer_len, _T("oni pa, %02xh"), getb()); break;
-               case 0xc9: my_stprintf_s(buffer, buffer_len, _T("oni pb, %02xh"), getb()); break;
-               case 0xca: my_stprintf_s(buffer, buffer_len, _T("oni pc, %02xh"), getb()); break;
-               case 0xcb: my_stprintf_s(buffer, buffer_len, _T("oni mk, %02xh"), getb()); break;
-               case 0xd0: my_stprintf_s(buffer, buffer_len, _T("aci pa, %02xh"), getb()); break;
-               case 0xd1: my_stprintf_s(buffer, buffer_len, _T("aci pb, %02xh"), getb()); break;
-               case 0xd2: my_stprintf_s(buffer, buffer_len, _T("aci pc, %02xh"), getb()); break;
-               case 0xd3: my_stprintf_s(buffer, buffer_len, _T("aci mk, %02xh"), getb()); break;
-               case 0xd8: my_stprintf_s(buffer, buffer_len, _T("offi pa, %02xh"), getb()); break;
-               case 0xd9: my_stprintf_s(buffer, buffer_len, _T("offi pb, %02xh"), getb()); break;
-               case 0xda: my_stprintf_s(buffer, buffer_len, _T("offi pc, %02xh"), getb()); break;
-               case 0xdb: my_stprintf_s(buffer, buffer_len, _T("offi mk, %02xh"), getb()); break;
-               case 0xe0: my_stprintf_s(buffer, buffer_len, _T("sui pa, %02xh"), getb()); break;
-               case 0xe1: my_stprintf_s(buffer, buffer_len, _T("sui pb, %02xh"), getb()); break;
-               case 0xe2: my_stprintf_s(buffer, buffer_len, _T("sui pc, %02xh"), getb()); break;
-               case 0xe3: my_stprintf_s(buffer, buffer_len, _T("sui mk, %02xh"), getb()); break;
-               case 0xe8: my_stprintf_s(buffer, buffer_len, _T("nei pa, %02xh"), getb()); break;
-               case 0xe9: my_stprintf_s(buffer, buffer_len, _T("nei pb, %02xh"), getb()); break;
-               case 0xea: my_stprintf_s(buffer, buffer_len, _T("nei pc, %02xh"), getb()); break;
-               case 0xeb: my_stprintf_s(buffer, buffer_len, _T("nei mk, %02xh"), getb()); break;
-               case 0xf0: my_stprintf_s(buffer, buffer_len, _T("sbi pa, %02xh"), getb()); break;
-               case 0xf1: my_stprintf_s(buffer, buffer_len, _T("sbi pb, %02xh"), getb()); break;
-               case 0xf2: my_stprintf_s(buffer, buffer_len, _T("sbi pc, %02xh"), getb()); break;
-               case 0xf3: my_stprintf_s(buffer, buffer_len, _T("sbi mk, %02xh"), getb()); break;
-               case 0xf8: my_stprintf_s(buffer, buffer_len, _T("eqi pa, %02xh"), getb()); break;
-               case 0xf9: my_stprintf_s(buffer, buffer_len, _T("eqi pb, %02xh"), getb()); break;
-               case 0xfa: my_stprintf_s(buffer, buffer_len, _T("eqi pc, %02xh"), getb()); break;
-               case 0xfb: my_stprintf_s(buffer, buffer_len, _T("eqi mk, %02xh"), getb()); break;
-               default: my_stprintf_s(buffer, buffer_len, _T("db 64h, %02xh"), b);
+               case 0x08: my_stprintf_s(buffer, buffer_len, _T("ani v,%02xh"), getb()); break;
+               case 0x09: my_stprintf_s(buffer, buffer_len, _T("ani a,%02xh"), getb()); break;
+               case 0x0a: my_stprintf_s(buffer, buffer_len, _T("ani b,%02xh"), getb()); break;
+               case 0x0b: my_stprintf_s(buffer, buffer_len, _T("ani c,%02xh"), getb()); break;
+               case 0x0c: my_stprintf_s(buffer, buffer_len, _T("ani d,%02xh"), getb()); break;
+               case 0x0d: my_stprintf_s(buffer, buffer_len, _T("ani e,%02xh"), getb()); break;
+               case 0x0e: my_stprintf_s(buffer, buffer_len, _T("ani h,%02xh"), getb()); break;
+               case 0x0f: my_stprintf_s(buffer, buffer_len, _T("ani l,%02xh"), getb()); break;
+               case 0x10: my_stprintf_s(buffer, buffer_len, _T("xri v,%02xh"), getb()); break;
+               case 0x11: my_stprintf_s(buffer, buffer_len, _T("xri a,%02xh"), getb()); break;
+               case 0x12: my_stprintf_s(buffer, buffer_len, _T("xri b,%02xh"), getb()); break;
+               case 0x13: my_stprintf_s(buffer, buffer_len, _T("xri c,%02xh"), getb()); break;
+               case 0x14: my_stprintf_s(buffer, buffer_len, _T("xri d,%02xh"), getb()); break;
+               case 0x15: my_stprintf_s(buffer, buffer_len, _T("xri e,%02xh"), getb()); break;
+               case 0x16: my_stprintf_s(buffer, buffer_len, _T("xri h,%02xh"), getb()); break;
+               case 0x17: my_stprintf_s(buffer, buffer_len, _T("xri l,%02xh"), getb()); break;
+               case 0x18: my_stprintf_s(buffer, buffer_len, _T("ori v,%02xh"), getb()); break;
+               case 0x19: my_stprintf_s(buffer, buffer_len, _T("ori a,%02xh"), getb()); break;
+               case 0x1a: my_stprintf_s(buffer, buffer_len, _T("ori b,%02xh"), getb()); break;
+               case 0x1b: my_stprintf_s(buffer, buffer_len, _T("ori c,%02xh"), getb()); break;
+               case 0x1c: my_stprintf_s(buffer, buffer_len, _T("ori d,%02xh"), getb()); break;
+               case 0x1d: my_stprintf_s(buffer, buffer_len, _T("ori e,%02xh"), getb()); break;
+               case 0x1e: my_stprintf_s(buffer, buffer_len, _T("ori h,%02xh"), getb()); break;
+               case 0x1f: my_stprintf_s(buffer, buffer_len, _T("ori l,%02xh"), getb()); break;
+               case 0x20: my_stprintf_s(buffer, buffer_len, _T("adinc v,%02xh"), getb()); break;
+               case 0x21: my_stprintf_s(buffer, buffer_len, _T("adinc a,%02xh"), getb()); break;
+               case 0x22: my_stprintf_s(buffer, buffer_len, _T("adinc b,%02xh"), getb()); break;
+               case 0x23: my_stprintf_s(buffer, buffer_len, _T("adinc c,%02xh"), getb()); break;
+               case 0x24: my_stprintf_s(buffer, buffer_len, _T("adinc d,%02xh"), getb()); break;
+               case 0x25: my_stprintf_s(buffer, buffer_len, _T("adinc e,%02xh"), getb()); break;
+               case 0x26: my_stprintf_s(buffer, buffer_len, _T("adinc h,%02xh"), getb()); break;
+               case 0x27: my_stprintf_s(buffer, buffer_len, _T("adinc l,%02xh"), getb()); break;
+               case 0x28: my_stprintf_s(buffer, buffer_len, _T("gti v,%02xh"), getb()); break;
+               case 0x29: my_stprintf_s(buffer, buffer_len, _T("gti a,%02xh"), getb()); break;
+               case 0x2a: my_stprintf_s(buffer, buffer_len, _T("gti b,%02xh"), getb()); break;
+               case 0x2b: my_stprintf_s(buffer, buffer_len, _T("gti c,%02xh"), getb()); break;
+               case 0x2c: my_stprintf_s(buffer, buffer_len, _T("gti d,%02xh"), getb()); break;
+               case 0x2d: my_stprintf_s(buffer, buffer_len, _T("gti e,%02xh"), getb()); break;
+               case 0x2e: my_stprintf_s(buffer, buffer_len, _T("gti h,%02xh"), getb()); break;
+               case 0x2f: my_stprintf_s(buffer, buffer_len, _T("gti l,%02xh"), getb()); break;
+               case 0x30: my_stprintf_s(buffer, buffer_len, _T("suinb v,%02xh"), getb()); break;
+               case 0x31: my_stprintf_s(buffer, buffer_len, _T("suinb a,%02xh"), getb()); break;
+               case 0x32: my_stprintf_s(buffer, buffer_len, _T("suinb b,%02xh"), getb()); break;
+               case 0x33: my_stprintf_s(buffer, buffer_len, _T("suinb c,%02xh"), getb()); break;
+               case 0x34: my_stprintf_s(buffer, buffer_len, _T("suinb d,%02xh"), getb()); break;
+               case 0x35: my_stprintf_s(buffer, buffer_len, _T("suinb e,%02xh"), getb()); break;
+               case 0x36: my_stprintf_s(buffer, buffer_len, _T("suinb h,%02xh"), getb()); break;
+               case 0x37: my_stprintf_s(buffer, buffer_len, _T("suinb l,%02xh"), getb()); break;
+               case 0x38: my_stprintf_s(buffer, buffer_len, _T("lti v,%02xh"), getb()); break;
+               case 0x39: my_stprintf_s(buffer, buffer_len, _T("lti a,%02xh"), getb()); break;
+               case 0x3a: my_stprintf_s(buffer, buffer_len, _T("lti b,%02xh"), getb()); break;
+               case 0x3b: my_stprintf_s(buffer, buffer_len, _T("lti c,%02xh"), getb()); break;
+               case 0x3c: my_stprintf_s(buffer, buffer_len, _T("lti d,%02xh"), getb()); break;
+               case 0x3d: my_stprintf_s(buffer, buffer_len, _T("lti e,%02xh"), getb()); break;
+               case 0x3e: my_stprintf_s(buffer, buffer_len, _T("lti h,%02xh"), getb()); break;
+               case 0x3f: my_stprintf_s(buffer, buffer_len, _T("lti l,%02xh"), getb()); break;
+               case 0x40: my_stprintf_s(buffer, buffer_len, _T("adi v,%02xh"), getb()); break;
+               case 0x41: my_stprintf_s(buffer, buffer_len, _T("adi a,%02xh"), getb()); break;
+               case 0x42: my_stprintf_s(buffer, buffer_len, _T("adi b,%02xh"), getb()); break;
+               case 0x43: my_stprintf_s(buffer, buffer_len, _T("adi c,%02xh"), getb()); break;
+               case 0x44: my_stprintf_s(buffer, buffer_len, _T("adi d,%02xh"), getb()); break;
+               case 0x45: my_stprintf_s(buffer, buffer_len, _T("adi e,%02xh"), getb()); break;
+               case 0x46: my_stprintf_s(buffer, buffer_len, _T("adi h,%02xh"), getb()); break;
+               case 0x47: my_stprintf_s(buffer, buffer_len, _T("adi l,%02xh"), getb()); break;
+               case 0x48: my_stprintf_s(buffer, buffer_len, _T("oni v,%02xh"), getb()); break;
+               case 0x49: my_stprintf_s(buffer, buffer_len, _T("oni a,%02xh"), getb()); break;
+               case 0x4a: my_stprintf_s(buffer, buffer_len, _T("oni b,%02xh"), getb()); break;
+               case 0x4b: my_stprintf_s(buffer, buffer_len, _T("oni c,%02xh"), getb()); break;
+               case 0x4c: my_stprintf_s(buffer, buffer_len, _T("oni d,%02xh"), getb()); break;
+               case 0x4d: my_stprintf_s(buffer, buffer_len, _T("oni e,%02xh"), getb()); break;
+               case 0x4e: my_stprintf_s(buffer, buffer_len, _T("oni h,%02xh"), getb()); break;
+               case 0x4f: my_stprintf_s(buffer, buffer_len, _T("oni l,%02xh"), getb()); break;
+               case 0x50: my_stprintf_s(buffer, buffer_len, _T("aci v,%02xh"), getb()); break;
+               case 0x51: my_stprintf_s(buffer, buffer_len, _T("aci a,%02xh"), getb()); break;
+               case 0x52: my_stprintf_s(buffer, buffer_len, _T("aci b,%02xh"), getb()); break;
+               case 0x53: my_stprintf_s(buffer, buffer_len, _T("aci c,%02xh"), getb()); break;
+               case 0x54: my_stprintf_s(buffer, buffer_len, _T("aci d,%02xh"), getb()); break;
+               case 0x55: my_stprintf_s(buffer, buffer_len, _T("aci e,%02xh"), getb()); break;
+               case 0x56: my_stprintf_s(buffer, buffer_len, _T("aci h,%02xh"), getb()); break;
+               case 0x57: my_stprintf_s(buffer, buffer_len, _T("aci l,%02xh"), getb()); break;
+               case 0x58: my_stprintf_s(buffer, buffer_len, _T("offi v,%02xh"), getb()); break;
+               case 0x59: my_stprintf_s(buffer, buffer_len, _T("offi a,%02xh"), getb()); break;
+               case 0x5a: my_stprintf_s(buffer, buffer_len, _T("offi b,%02xh"), getb()); break;
+               case 0x5b: my_stprintf_s(buffer, buffer_len, _T("offi c,%02xh"), getb()); break;
+               case 0x5c: my_stprintf_s(buffer, buffer_len, _T("offi d,%02xh"), getb()); break;
+               case 0x5d: my_stprintf_s(buffer, buffer_len, _T("offi e,%02xh"), getb()); break;
+               case 0x5e: my_stprintf_s(buffer, buffer_len, _T("offi h,%02xh"), getb()); break;
+               case 0x5f: my_stprintf_s(buffer, buffer_len, _T("offi l,%02xh"), getb()); break;
+               case 0x60: my_stprintf_s(buffer, buffer_len, _T("sui v,%02xh"), getb()); break;
+               case 0x61: my_stprintf_s(buffer, buffer_len, _T("sui a,%02xh"), getb()); break;
+               case 0x62: my_stprintf_s(buffer, buffer_len, _T("sui b,%02xh"), getb()); break;
+               case 0x63: my_stprintf_s(buffer, buffer_len, _T("sui c,%02xh"), getb()); break;
+               case 0x64: my_stprintf_s(buffer, buffer_len, _T("sui d,%02xh"), getb()); break;
+               case 0x65: my_stprintf_s(buffer, buffer_len, _T("sui e,%02xh"), getb()); break;
+               case 0x66: my_stprintf_s(buffer, buffer_len, _T("sui h,%02xh"), getb()); break;
+               case 0x67: my_stprintf_s(buffer, buffer_len, _T("sui l,%02xh"), getb()); break;
+               case 0x68: my_stprintf_s(buffer, buffer_len, _T("nei v,%02xh"), getb()); break;
+               case 0x69: my_stprintf_s(buffer, buffer_len, _T("nei a,%02xh"), getb()); break;
+               case 0x6a: my_stprintf_s(buffer, buffer_len, _T("nei b,%02xh"), getb()); break;
+               case 0x6b: my_stprintf_s(buffer, buffer_len, _T("nei c,%02xh"), getb()); break;
+               case 0x6c: my_stprintf_s(buffer, buffer_len, _T("nei d,%02xh"), getb()); break;
+               case 0x6d: my_stprintf_s(buffer, buffer_len, _T("nei e,%02xh"), getb()); break;
+               case 0x6e: my_stprintf_s(buffer, buffer_len, _T("nei h,%02xh"), getb()); break;
+               case 0x6f: my_stprintf_s(buffer, buffer_len, _T("nei l,%02xh"), getb()); break;
+               case 0x70: my_stprintf_s(buffer, buffer_len, _T("sbi v,%02xh"), getb()); break;
+               case 0x71: my_stprintf_s(buffer, buffer_len, _T("sbi a,%02xh"), getb()); break;
+               case 0x72: my_stprintf_s(buffer, buffer_len, _T("sbi b,%02xh"), getb()); break;
+               case 0x73: my_stprintf_s(buffer, buffer_len, _T("sbi c,%02xh"), getb()); break;
+               case 0x74: my_stprintf_s(buffer, buffer_len, _T("sbi d,%02xh"), getb()); break;
+               case 0x75: my_stprintf_s(buffer, buffer_len, _T("sbi e,%02xh"), getb()); break;
+               case 0x76: my_stprintf_s(buffer, buffer_len, _T("sbi h,%02xh"), getb()); break;
+               case 0x77: my_stprintf_s(buffer, buffer_len, _T("sbi l,%02xh"), getb()); break;
+               case 0x78: my_stprintf_s(buffer, buffer_len, _T("eqi v,%02xh"), getb()); break;
+               case 0x79: my_stprintf_s(buffer, buffer_len, _T("eqi a,%02xh"), getb()); break;
+               case 0x7a: my_stprintf_s(buffer, buffer_len, _T("eqi b,%02xh"), getb()); break;
+               case 0x7b: my_stprintf_s(buffer, buffer_len, _T("eqi c,%02xh"), getb()); break;
+               case 0x7c: my_stprintf_s(buffer, buffer_len, _T("eqi d,%02xh"), getb()); break;
+               case 0x7d: my_stprintf_s(buffer, buffer_len, _T("eqi e,%02xh"), getb()); break;
+               case 0x7e: my_stprintf_s(buffer, buffer_len, _T("eqi h,%02xh"), getb()); break;
+               case 0x7f: my_stprintf_s(buffer, buffer_len, _T("eqi l,%02xh"), getb()); break;
+               case 0x88: my_stprintf_s(buffer, buffer_len, _T("ani pa,%02xh"), getb()); break;
+               case 0x89: my_stprintf_s(buffer, buffer_len, _T("ani pb,%02xh"), getb()); break;
+               case 0x8a: my_stprintf_s(buffer, buffer_len, _T("ani pc,%02xh"), getb()); break;
+               case 0x8b: my_stprintf_s(buffer, buffer_len, _T("ani mk,%02xh"), getb()); break;
+               case 0x90: my_stprintf_s(buffer, buffer_len, _T("xri pa,%02xh"), getb()); break;
+               case 0x91: my_stprintf_s(buffer, buffer_len, _T("xri pb,%02xh"), getb()); break;
+               case 0x92: my_stprintf_s(buffer, buffer_len, _T("xri pc,%02xh"), getb()); break;
+               case 0x93: my_stprintf_s(buffer, buffer_len, _T("xri mk,%02xh"), getb()); break;
+               case 0x98: my_stprintf_s(buffer, buffer_len, _T("ori pa,%02xh"), getb()); break;
+               case 0x99: my_stprintf_s(buffer, buffer_len, _T("ori pb,%02xh"), getb()); break;
+               case 0x9a: my_stprintf_s(buffer, buffer_len, _T("ori pc,%02xh"), getb()); break;
+               case 0x9b: my_stprintf_s(buffer, buffer_len, _T("ori mk,%02xh"), getb()); break;
+               case 0xa0: my_stprintf_s(buffer, buffer_len, _T("adinc pa,%02xh"), getb()); break;
+               case 0xa1: my_stprintf_s(buffer, buffer_len, _T("adinc pb,%02xh"), getb()); break;
+               case 0xa2: my_stprintf_s(buffer, buffer_len, _T("adinc pc,%02xh"), getb()); break;
+               case 0xa3: my_stprintf_s(buffer, buffer_len, _T("adinc mk,%02xh"), getb()); break;
+               case 0xa8: my_stprintf_s(buffer, buffer_len, _T("gti pa,%02xh"), getb()); break;
+               case 0xa9: my_stprintf_s(buffer, buffer_len, _T("gti pb,%02xh"), getb()); break;
+               case 0xaa: my_stprintf_s(buffer, buffer_len, _T("gti pc,%02xh"), getb()); break;
+               case 0xab: my_stprintf_s(buffer, buffer_len, _T("gti mk,%02xh"), getb()); break;
+               case 0xb0: my_stprintf_s(buffer, buffer_len, _T("suinb pa,%02xh"), getb()); break;
+               case 0xb1: my_stprintf_s(buffer, buffer_len, _T("suinb pb,%02xh"), getb()); break;
+               case 0xb2: my_stprintf_s(buffer, buffer_len, _T("suinb pc,%02xh"), getb()); break;
+               case 0xb3: my_stprintf_s(buffer, buffer_len, _T("suinb mk,%02xh"), getb()); break;
+               case 0xb8: my_stprintf_s(buffer, buffer_len, _T("lti pa,%02xh"), getb()); break;
+               case 0xb9: my_stprintf_s(buffer, buffer_len, _T("lti pb,%02xh"), getb()); break;
+               case 0xba: my_stprintf_s(buffer, buffer_len, _T("lti pc,%02xh"), getb()); break;
+               case 0xbb: my_stprintf_s(buffer, buffer_len, _T("lti mk,%02xh"), getb()); break;
+               case 0xc0: my_stprintf_s(buffer, buffer_len, _T("adi pa,%02xh"), getb()); break;
+               case 0xc1: my_stprintf_s(buffer, buffer_len, _T("adi pb,%02xh"), getb()); break;
+               case 0xc2: my_stprintf_s(buffer, buffer_len, _T("adi pc,%02xh"), getb()); break;
+               case 0xc3: my_stprintf_s(buffer, buffer_len, _T("adi mk,%02xh"), getb()); break;
+               case 0xc8: my_stprintf_s(buffer, buffer_len, _T("oni pa,%02xh"), getb()); break;
+               case 0xc9: my_stprintf_s(buffer, buffer_len, _T("oni pb,%02xh"), getb()); break;
+               case 0xca: my_stprintf_s(buffer, buffer_len, _T("oni pc,%02xh"), getb()); break;
+               case 0xcb: my_stprintf_s(buffer, buffer_len, _T("oni mk,%02xh"), getb()); break;
+               case 0xd0: my_stprintf_s(buffer, buffer_len, _T("aci pa,%02xh"), getb()); break;
+               case 0xd1: my_stprintf_s(buffer, buffer_len, _T("aci pb,%02xh"), getb()); break;
+               case 0xd2: my_stprintf_s(buffer, buffer_len, _T("aci pc,%02xh"), getb()); break;
+               case 0xd3: my_stprintf_s(buffer, buffer_len, _T("aci mk,%02xh"), getb()); break;
+               case 0xd8: my_stprintf_s(buffer, buffer_len, _T("offi pa,%02xh"), getb()); break;
+               case 0xd9: my_stprintf_s(buffer, buffer_len, _T("offi pb,%02xh"), getb()); break;
+               case 0xda: my_stprintf_s(buffer, buffer_len, _T("offi pc,%02xh"), getb()); break;
+               case 0xdb: my_stprintf_s(buffer, buffer_len, _T("offi mk,%02xh"), getb()); break;
+               case 0xe0: my_stprintf_s(buffer, buffer_len, _T("sui pa,%02xh"), getb()); break;
+               case 0xe1: my_stprintf_s(buffer, buffer_len, _T("sui pb,%02xh"), getb()); break;
+               case 0xe2: my_stprintf_s(buffer, buffer_len, _T("sui pc,%02xh"), getb()); break;
+               case 0xe3: my_stprintf_s(buffer, buffer_len, _T("sui mk,%02xh"), getb()); break;
+               case 0xe8: my_stprintf_s(buffer, buffer_len, _T("nei pa,%02xh"), getb()); break;
+               case 0xe9: my_stprintf_s(buffer, buffer_len, _T("nei pb,%02xh"), getb()); break;
+               case 0xea: my_stprintf_s(buffer, buffer_len, _T("nei pc,%02xh"), getb()); break;
+               case 0xeb: my_stprintf_s(buffer, buffer_len, _T("nei mk,%02xh"), getb()); break;
+               case 0xf0: my_stprintf_s(buffer, buffer_len, _T("sbi pa,%02xh"), getb()); break;
+               case 0xf1: my_stprintf_s(buffer, buffer_len, _T("sbi pb,%02xh"), getb()); break;
+               case 0xf2: my_stprintf_s(buffer, buffer_len, _T("sbi pc,%02xh"), getb()); break;
+               case 0xf3: my_stprintf_s(buffer, buffer_len, _T("sbi mk,%02xh"), getb()); break;
+               case 0xf8: my_stprintf_s(buffer, buffer_len, _T("eqi pa,%02xh"), getb()); break;
+               case 0xf9: my_stprintf_s(buffer, buffer_len, _T("eqi pb,%02xh"), getb()); break;
+               case 0xfa: my_stprintf_s(buffer, buffer_len, _T("eqi pc,%02xh"), getb()); break;
+               case 0xfb: my_stprintf_s(buffer, buffer_len, _T("eqi mk,%02xh"), getb()); break;
+               default: my_stprintf_s(buffer, buffer_len, _T("db 64h,%02xh"), b);
                }
                break;
-       case 0x65: wa = getwa(); my_stprintf_s(buffer, buffer_len, _T("neiw v.%02xh, %02xh"), wa, getb()); break;
-       case 0x66: my_stprintf_s(buffer, buffer_len, _T("sui a, %02xh"), getb()); break;
-       case 0x67: my_stprintf_s(buffer, buffer_len, _T("nei a, %02xh"), getb()); break;
-       case 0x68: my_stprintf_s(buffer, buffer_len, _T("mvi v, %02xh"), getb()); break;
-       case 0x69: my_stprintf_s(buffer, buffer_len, _T("mvi a, %02xh"), getb()); break;
-       case 0x6a: my_stprintf_s(buffer, buffer_len, _T("mvi b, %02xh"), getb()); break;
-       case 0x6b: my_stprintf_s(buffer, buffer_len, _T("mvi c, %02xh"), getb()); break;
-       case 0x6c: my_stprintf_s(buffer, buffer_len, _T("mvi d, %02xh"), getb()); break;
-       case 0x6d: my_stprintf_s(buffer, buffer_len, _T("mvi e, %02xh"), getb()); break;
-       case 0x6e: my_stprintf_s(buffer, buffer_len, _T("mvi h, %02xh"), getb()); break;
-       case 0x6f: my_stprintf_s(buffer, buffer_len, _T("mvi l, %02xh"), getb()); break;
+       case 0x65: wa = getwa(); my_stprintf_s(buffer, buffer_len, _T("neiw v.%02xh,%02xh"), wa, getb()); break;
+       case 0x66: my_stprintf_s(buffer, buffer_len, _T("sui a,%02xh"), getb()); break;
+       case 0x67: my_stprintf_s(buffer, buffer_len, _T("nei a,%02xh"), getb()); break;
+       case 0x68: my_stprintf_s(buffer, buffer_len, _T("mvi v,%02xh"), getb()); break;
+       case 0x69: my_stprintf_s(buffer, buffer_len, _T("mvi a,%02xh"), getb()); break;
+       case 0x6a: my_stprintf_s(buffer, buffer_len, _T("mvi b,%02xh"), getb()); break;
+       case 0x6b: my_stprintf_s(buffer, buffer_len, _T("mvi c,%02xh"), getb()); break;
+       case 0x6c: my_stprintf_s(buffer, buffer_len, _T("mvi d,%02xh"), getb()); break;
+       case 0x6d: my_stprintf_s(buffer, buffer_len, _T("mvi e,%02xh"), getb()); break;
+       case 0x6e: my_stprintf_s(buffer, buffer_len, _T("mvi h,%02xh"), getb()); break;
+       case 0x6f: my_stprintf_s(buffer, buffer_len, _T("mvi l,%02xh"), getb()); break;
        
        case 0x70:
                switch(b = getb()) {
@@ -1996,22 +1996,22 @@ int UPD7801::debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
                case 0x2f: my_stprintf_s(buffer, buffer_len, _T("lded %s"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
                case 0x3e: my_stprintf_s(buffer, buffer_len, _T("shld %s"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
                case 0x3f: my_stprintf_s(buffer, buffer_len, _T("lhld %s"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
-               case 0x68: my_stprintf_s(buffer, buffer_len, _T("mov v, %s"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
-               case 0x69: my_stprintf_s(buffer, buffer_len, _T("mov a, %s"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
-               case 0x6a: my_stprintf_s(buffer, buffer_len, _T("mov b, %s"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
-               case 0x6b: my_stprintf_s(buffer, buffer_len, _T("mov c, %s"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
-               case 0x6c: my_stprintf_s(buffer, buffer_len, _T("mov d, %s"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
-               case 0x6d: my_stprintf_s(buffer, buffer_len, _T("mov e, %s"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
-               case 0x6e: my_stprintf_s(buffer, buffer_len, _T("mov h, %s"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
-               case 0x6f: my_stprintf_s(buffer, buffer_len, _T("mov l, %s"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
-               case 0x78: my_stprintf_s(buffer, buffer_len, _T("mov %s, v"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
-               case 0x79: my_stprintf_s(buffer, buffer_len, _T("mov %s, a"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
-               case 0x7a: my_stprintf_s(buffer, buffer_len, _T("mov %s, b"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
-               case 0x7b: my_stprintf_s(buffer, buffer_len, _T("mov %s, c"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
-               case 0x7c: my_stprintf_s(buffer, buffer_len, _T("mov %s, d"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
-               case 0x7d: my_stprintf_s(buffer, buffer_len, _T("mov %s, e"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
-               case 0x7e: my_stprintf_s(buffer, buffer_len, _T("mov %s, h"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
-               case 0x7f: my_stprintf_s(buffer, buffer_len, _T("mov %s, l"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
+               case 0x68: my_stprintf_s(buffer, buffer_len, _T("mov v,%s"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
+               case 0x69: my_stprintf_s(buffer, buffer_len, _T("mov a,%s"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
+               case 0x6a: my_stprintf_s(buffer, buffer_len, _T("mov b,%s"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
+               case 0x6b: my_stprintf_s(buffer, buffer_len, _T("mov c,%s"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
+               case 0x6c: my_stprintf_s(buffer, buffer_len, _T("mov d,%s"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
+               case 0x6d: my_stprintf_s(buffer, buffer_len, _T("mov e,%s"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
+               case 0x6e: my_stprintf_s(buffer, buffer_len, _T("mov h,%s"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
+               case 0x6f: my_stprintf_s(buffer, buffer_len, _T("mov l,%s"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
+               case 0x78: my_stprintf_s(buffer, buffer_len, _T("mov %s,v"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
+               case 0x79: my_stprintf_s(buffer, buffer_len, _T("mov %s,a"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
+               case 0x7a: my_stprintf_s(buffer, buffer_len, _T("mov %s,b"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
+               case 0x7b: my_stprintf_s(buffer, buffer_len, _T("mov %s,c"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
+               case 0x7c: my_stprintf_s(buffer, buffer_len, _T("mov %s,d"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
+               case 0x7d: my_stprintf_s(buffer, buffer_len, _T("mov %s,e"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
+               case 0x7e: my_stprintf_s(buffer, buffer_len, _T("mov %s,h"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
+               case 0x7f: my_stprintf_s(buffer, buffer_len, _T("mov %s,l"), get_value_or_symbol(d_debugger->first_symbol, _T("%04xh"), getw())); break;
                case 0x89: my_stprintf_s(buffer, buffer_len, _T("anax b")); break;
                case 0x8a: my_stprintf_s(buffer, buffer_len, _T("anax d")); break;
                case 0x8b: my_stprintf_s(buffer, buffer_len, _T("anax h")); break;
@@ -2117,10 +2117,10 @@ int UPD7801::debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
                case 0xfd: my_stprintf_s(buffer, buffer_len, _T("eqax h+")); break;
                case 0xfe: my_stprintf_s(buffer, buffer_len, _T("eqax d-")); break;
                case 0xff: my_stprintf_s(buffer, buffer_len, _T("eqax h-")); break;
-               default: my_stprintf_s(buffer, buffer_len, _T("db 70h, %02xh"), b);
+               default: my_stprintf_s(buffer, buffer_len, _T("db 70h,%02xh"), b);
                }
                break;
-       case 0x71: wa = getwa(); my_stprintf_s(buffer, buffer_len, _T("mviw v.%02xh, %02xh"), wa, getb()); break;
+       case 0x71: wa = getwa(); my_stprintf_s(buffer, buffer_len, _T("mviw v.%02xh,%02xh"), wa, getb()); break;
        case 0x72: my_stprintf_s(buffer, buffer_len, _T("softi")); break;
        case 0x73: my_stprintf_s(buffer, buffer_len, _T("jb")); break;
        case 0x74:
@@ -2140,12 +2140,12 @@ int UPD7801::debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len)
                case 0xe8: my_stprintf_s(buffer, buffer_len, _T("neaw v.%02xh"), getwa()); break;
                case 0xf0: my_stprintf_s(buffer, buffer_len, _T("sbbw v.%02xh"), getwa()); break;
                case 0xf8: my_stprintf_s(buffer, buffer_len, _T("eqaw v.%02xh"), getwa()); break;
-               default: my_stprintf_s(buffer, buffer_len, _T("db 74h, %02xh"), b);
+               default: my_stprintf_s(buffer, buffer_len, _T("db 74h,%02xh"), b);
                }
                break;
-       case 0x75: wa = getwa(); my_stprintf_s(buffer, buffer_len, _T("eqiw v.%02xh, %02xh"), wa, getb()); break;
-       case 0x76: my_stprintf_s(buffer, buffer_len, _T("sbi a, %02xh"), getb()); break;
-       case 0x77: my_stprintf_s(buffer, buffer_len, _T("eqi a, %02xh"), getb()); break;
+       case 0x75: wa = getwa(); my_stprintf_s(buffer, buffer_len, _T("eqiw v.%02xh,%02xh"), wa, getb()); break;
+       case 0x76: my_stprintf_s(buffer, buffer_len, _T("sbi a,%02xh"), getb()); break;
+       case 0x77: my_stprintf_s(buffer, buffer_len, _T("eqi a,%02xh"), getb()); break;
        case 0x78: case 0x79: case 0x7a: case 0x7b: case 0x7c: case 0x7d: case 0x7e: case 0x7f:
                my_stprintf_s(buffer, buffer_len, _T("calf %3x"), 0x800 | ((b & 7) << 8) | getb()); break;
        
index f34eb02..4a462ec 100644 (file)
@@ -51,8 +51,8 @@
 #define CPU_EXECUTE_CALL(name)                 CPU_EXECUTE_NAME(name)(cpustate)
 
 #define CPU_DISASSEMBLE_NAME(name)             cpu_disassemble_##name
-#define CPU_DISASSEMBLE(name)                  int CPU_DISASSEMBLE_NAME(name)(_TCHAR *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram)
-#define CPU_DISASSEMBLE_CALL(name)             CPU_DISASSEMBLE_NAME(name)(buffer, pc, oprom, oprom)
+#define CPU_DISASSEMBLE(name)                  int CPU_DISASSEMBLE_NAME(name)(_TCHAR *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, symbol_t *first_symbol)
+#define CPU_DISASSEMBLE_CALL(name)             CPU_DISASSEMBLE_NAME(name)(buffer, pc, oprom, oprom, d_debugger->first_symbol)
 
 /*****************************************************************************/
 /* src/emu/didisasm.h */
index 9be1874..9279923 100644 (file)
@@ -114,3 +114,29 @@ void DISPLAY::draw_screen()
        }
 }
 
+#define STATE_VERSION  1
+
+void DISPLAY::save_state(FILEIO* state_fio)
+{
+       state_fio->FputUint32(STATE_VERSION);
+       state_fio->FputInt32(this_device_id);
+       
+       state_fio->Fwrite(seg, sizeof(seg), 1);
+       state_fio->FputUint8(pb);
+       state_fio->FputUint8(pc);
+}
+
+bool DISPLAY::load_state(FILEIO* state_fio)
+{
+       if(state_fio->FgetUint32() != STATE_VERSION) {
+               return false;
+       }
+       if(state_fio->FgetInt32() != this_device_id) {
+               return false;
+       }
+       state_fio->Fread(seg, sizeof(seg), 1);
+       pb = state_fio->FgetUint8();
+       pc = state_fio->FgetUint8();
+       return true;
+}
+
index b1d0585..335a1ee 100644 (file)
@@ -34,6 +34,8 @@ public:
        void initialize();
        void write_signal(int id, uint32_t data, uint32_t mask);
        void event_vline(int v, int clock);
+       void save_state(FILEIO* state_fio);
+       bool load_state(FILEIO* state_fio);
        
        // unique function
        void draw_screen();
index 8b34130..553b842 100644 (file)
 #include "../pcm1bit.h"
 #include "../z80.h"
 
+#ifdef USE_DEBUGGER
+#include "../debugger.h"
+#endif
+
 #include "display.h"
 #include "keyboard.h"
 
@@ -55,6 +59,9 @@ VM::VM(EMU* parent_emu) : emu(parent_emu)
        cpu->set_context_mem(memory);
        cpu->set_context_io(io);
        cpu->set_context_intr(dummy);
+#ifdef USE_DEBUGGER
+       cpu->set_context_debugger(new DEBUGGER(this, emu));
+#endif
        
        // memory bus
        memset(ram, 0, sizeof(ram));
@@ -120,6 +127,20 @@ void VM::run()
 }
 
 // ----------------------------------------------------------------------------
+// debugger
+// ----------------------------------------------------------------------------
+
+#ifdef USE_DEBUGGER
+DEVICE *VM::get_cpu(int index)
+{
+       if(index == 0) {
+               return cpu;
+       }
+       return NULL;
+}
+#endif
+
+// ----------------------------------------------------------------------------
 // draw screen
 // ----------------------------------------------------------------------------
 
@@ -181,3 +202,29 @@ void VM::update_config()
        }
 }
 
+#define STATE_VERSION  1
+
+void VM::save_state(FILEIO* state_fio)
+{
+       state_fio->FputUint32(STATE_VERSION);
+       
+       for(DEVICE* device = first_device; device; device = device->next_device) {
+               device->save_state(state_fio);
+       }
+       state_fio->Fwrite(ram, sizeof(ram), 1);
+}
+
+bool VM::load_state(FILEIO* state_fio)
+{
+       if(state_fio->FgetUint32() != STATE_VERSION) {
+               return false;
+       }
+       for(DEVICE* device = first_device; device; device = device->next_device) {
+               if(!device->load_state(state_fio)) {
+                       return false;
+               }
+       }
+       state_fio->Fread(ram, sizeof(ram), 1);
+       return true;
+}
+
index 40440c3..c5481eb 100644 (file)
@@ -27,6 +27,8 @@
 #define MAX_BUTTONS            21
 #define MAX_DRAW_RANGES                6
 #define USE_BINARY_FILE1
+#define USE_DEBUGGER
+#define USE_STATE
 
 #include "../../common.h"
 #include "../../fileio.h"
@@ -120,6 +122,11 @@ public:
        void reset();
        void run();
        
+#ifdef USE_DEBUGGER
+       // debugger
+       DEVICE *get_cpu(int index);
+#endif
+       
        // draw screen
        void draw_screen();
        
@@ -134,6 +141,8 @@ public:
        bool is_frame_skippable();
        
        void update_config();
+       void save_state(FILEIO* state_fio);
+       bool load_state(FILEIO* state_fio);
        
        // ----------------------------------------
        // for each device
index bd80ba4..1966121 100644 (file)
@@ -14,8 +14,8 @@
 #define DIRECT3D_VERSION       0x900
 // XXX: if your DirectX 9.0 SDK is newer and does not contain dinput.lib,
 // please change the definition of DIRECTINPUT_VERSION from 0x500 to 0x800
-#define DIRECTINPUT_VERSION    0x500
-//#define DIRECTINPUT_VERSION  0x800
+//#define DIRECTINPUT_VERSION  0x500
+#define DIRECTINPUT_VERSION    0x800
 
 #include <windows.h>
 #include <windowsx.h>
index c541570..d8c2eaa 100644 (file)
@@ -47,9 +47,29 @@ void hide_menu_bar(HWND hWnd);
 HWND hStatus = NULL;
 bool status_bar_visible = false;
 
+#ifdef USE_FD1
+uint32_t fd_status = 0x80000000;
+#endif
+#ifdef USE_QD1
+uint32_t qd_status = 0x80000000;
+#endif
+#ifdef USE_HARD_DISK
+uint32_t hd_status = 0x80000000;
+#endif
+#ifdef USE_COMPACT_DISC
+uint32_t cd_status = 0x80000000;
+#endif
+#ifdef USE_LASER_DISC
+uint32_t ld_status = 0x80000000;
+#endif
+#if defined(USE_TAPE1) && !defined(TAPE_BINARY_ONLY)
+_TCHAR tape_status[1024] = _T("uninitialized");
+#endif
+
 void show_status_bar(HWND hWnd);
 void hide_status_bar(HWND hWnd);
 int get_status_bar_height();
+bool get_status_bar_updated();
 void update_status_bar(HINSTANCE hInstance, LPDRAWITEMSTRUCT lpDrawItem);
 
 // file
@@ -369,10 +389,12 @@ int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR szCmdL
                        // update status bar
                        if(update_status_bar_time <= current_time) {
                                if(hStatus != NULL && status_bar_visible) {
-                                       SendMessage(hStatus, SB_SETTEXT, (WPARAM)0 | SBT_OWNERDRAW, (LPARAM)NULL);
-//                                     InvalidateRect(hStatus, NULL, FALSE);
+                                       if(get_status_bar_updated()) {
+                                               SendMessage(hStatus, SB_SETTEXT, (WPARAM)0 | SBT_OWNERDRAW, (LPARAM)NULL);
+//                                             InvalidateRect(hStatus, NULL, FALSE);
+                                       }
                                }
-                               update_status_bar_time = current_time + 500;
+                               update_status_bar_time = current_time + 200;
                        }
                        
                        // disable screen saver
@@ -1813,6 +1835,62 @@ int get_status_bar_height()
        return 0;
 }
 
+bool get_status_bar_updated()
+{
+       bool updated = false;
+       
+#ifdef USE_FD1
+       uint32_t new_fd_status = emu->is_floppy_disk_accessed();
+       if(fd_status != new_fd_status) {
+               updated = true;
+               fd_status = new_fd_status;
+       }
+#endif
+#ifdef USE_QD1
+       uint32_t new_qd_status = emu->is_quick_disk_accessed();
+       if(qd_status != new_qd_status) {
+               updated = true;
+               qd_status = new_qd_status;
+       }
+#endif
+#ifdef USE_HARD_DISK
+       uint32_t new_hd_status = emu->is_hard_disk_accessed();
+       if(hd_status != new_hd_status) {
+               updated = true;
+               hd_status = new_hd_status;
+       }
+#endif
+#ifdef USE_COMPACT_DISC
+       uint32_t new_cd_status = emu->is_compact_disc_accessed();
+       if(cd_status != new_cd_status) {
+               updated = true;
+               cd_status = new_cd_status;
+       }
+#endif
+#ifdef USE_LASER_DISC
+       uint32_t new_ld_status = emu->is_laser_disc_accessed();
+       if(ld_status != new_ld_status) {
+               updated = true;
+               ld_status = new_ld_status;
+       }
+#endif
+#if defined(USE_TAPE1) && !defined(TAPE_BINARY_ONLY)
+       _TCHAR new_tape_status[array_length(tape_status)] = {0};
+       for(int drv = 0; drv < MAX_TAPE; drv++) {
+               const _TCHAR* message = emu->get_tape_message(drv);
+               if(message != NULL) {
+                       my_tcscpy_s(new_tape_status, array_length(new_tape_status), message);
+                       break;
+               }
+       }
+       if(_tcsicmp(tape_status, new_tape_status) != 0) {
+               updated = true;
+               my_tcscpy_s(tape_status, array_length(tape_status), new_tape_status);
+       }
+#endif
+       return updated;
+}
+
 void update_status_bar(HINSTANCE hInstance, LPDRAWITEMSTRUCT lpDrawItem)
 {
        TEXTMETRIC tm;
@@ -1845,7 +1923,6 @@ void update_status_bar(HINSTANCE hInstance, LPDRAWITEMSTRUCT lpDrawItem)
                                GetTextExtentPoint32(lpDrawItem->hDC, _T("FD:"), 3, &size);
                                draw_left += size.cx + 4;
                                
-                               uint32_t fd_status = emu->is_floppy_disk_accessed();
                                for(int i = 0; i < MAX_FD; i++) {
                                        int idx = (fd_status >> i) & 1;
                                        SelectObject(hdcMem, hBitmap[idx]);
@@ -1859,7 +1936,6 @@ void update_status_bar(HINSTANCE hInstance, LPDRAWITEMSTRUCT lpDrawItem)
                                GetTextExtentPoint32(lpDrawItem->hDC, _T("QD:"), 3, &size);
                                draw_left += size.cx + 4;
                                
-                               uint32_t qd_status = emu->is_quick_disk_accessed();
                                for(int i = 0; i < MAX_QD; i++) {
                                        int idx = (qd_status >> i) & 1;
                                        SelectObject(hdcMem, hBitmap[idx]);
@@ -1873,7 +1949,6 @@ void update_status_bar(HINSTANCE hInstance, LPDRAWITEMSTRUCT lpDrawItem)
                                GetTextExtentPoint32(lpDrawItem->hDC, _T("HD:"), 3, &size);
                                draw_left += size.cx + 4;
                                
-                               uint32_t hd_status = emu->is_hard_disk_accessed();
                                for (int i = 0; i < USE_HARD_DISK; i++) {
                                        int idx = (hd_status >> i) & 1;
                                        SelectObject(hdcMem, hBitmap[idx]);
@@ -1887,7 +1962,6 @@ void update_status_bar(HINSTANCE hInstance, LPDRAWITEMSTRUCT lpDrawItem)
                                GetTextExtentPoint32(lpDrawItem->hDC, _T("CD:"), 3, &size);
                                draw_left += size.cx + 4;
                                
-                               uint32_t cd_status = emu->is_compact_disc_accessed();
                                for (int i = 0; i < 1; i++) {
                                        int idx = (cd_status >> i) & 1;
                                        SelectObject(hdcMem, hBitmap[idx]);
@@ -1901,7 +1975,6 @@ void update_status_bar(HINSTANCE hInstance, LPDRAWITEMSTRUCT lpDrawItem)
                                GetTextExtentPoint32(lpDrawItem->hDC, _T("LD:"), 3, &size);
                                draw_left += size.cx + 4;
                                
-                               uint32_t ld_status = emu->is_laser_disc_accessed();
                                for (int i = 0; i < 1; i++) {
                                        int idx = (ld_status >> i) & 1;
                                        SelectObject(hdcMem, hBitmap[idx]);
@@ -1922,18 +1995,12 @@ void update_status_bar(HINSTANCE hInstance, LPDRAWITEMSTRUCT lpDrawItem)
        #endif
        #if defined(USE_TAPE1) && !defined(TAPE_BINARY_ONLY)
        {
-               for(int drv = 0; drv < MAX_TAPE; drv++) {
-                       const _TCHAR* message = emu->get_tape_message(drv);
-                       SIZE size;
-                       
-                       if(message != NULL) {
-                               TextOut(lpDrawItem->hDC, draw_left, text_top, _T("CMT:"), 4);
-                               GetTextExtentPoint32(lpDrawItem->hDC, _T("CMT:"), 4, &size);
-                               draw_left += size.cx + 4;
-                               TextOut(lpDrawItem->hDC, draw_left, text_top, message, _tcslen(message));
-                               break;
-                       }
-               }
+               SIZE size;
+               
+               TextOut(lpDrawItem->hDC, draw_left, text_top, _T("CMT:"), 4);
+               GetTextExtentPoint32(lpDrawItem->hDC, _T("CMT:"), 4, &size);
+               draw_left += size.cx + 4;
+               TextOut(lpDrawItem->hDC, draw_left, text_top, tape_status, _tcslen(tape_status));
        }
        #endif
 }
index 993adc0..3b55d57 100644 (file)
                                Filter="h"
                                >
                                <File
+                                       RelativePath="..\src\vm\debugger.h"
+                                       >
+                               </File>
+                               <File
                                        RelativePath="..\src\vm\device.h"
                                        >
                                </File>
index 4bf4321..851457a 100644 (file)
                                        >
                                </File>
                                <File
+                                       RelativePath="..\src\vm\debugger.h"
+                                       >
+                               </File>
+                               <File
                                        RelativePath="..\src\vm\device.h"
                                        >
                                </File>
index 2fbfdfe..097eeff 100644 (file)
                                Filter="h"
                                >
                                <File
+                                       RelativePath="..\src\vm\debugger.h"
+                                       >
+                               </File>
+                               <File
                                        RelativePath="..\src\vm\device.h"
                                        >
                                </File>
index e499287..a84c7fd 100644 (file)
     <ClInclude Include="..\src\fileio.h" />
     <ClInclude Include="..\src\emu.h" />
     <ClInclude Include="..\src\win32\osd.h" />
+    <ClInclude Include="..\src\vm\debugger.h" />
     <ClInclude Include="..\src\vm\device.h" />
     <ClInclude Include="..\src\vm\event.h" />
     <ClInclude Include="..\src\vm\io.h" />
index 275f872..af9eb19 100644 (file)
     <ClInclude Include="..\src\win32\osd.h">
       <Filter>Header Files\OSD Header Files</Filter>
     </ClInclude>
+    <ClInclude Include="..\src\vm\debugger.h">
+      <Filter>Header Files\VM Common Header Files</Filter>
+    </ClInclude>
     <ClInclude Include="..\src\vm\device.h">
       <Filter>Header Files\VM Common Header Files</Filter>
     </ClInclude>
index a7558a8..e003aa8 100644 (file)
     <ClInclude Include="..\src\emu.h" />
     <ClInclude Include="..\src\win32\osd.h" />
     <ClInclude Include="..\src\vm\datarec.h" />
+    <ClInclude Include="..\src\vm\debugger.h" />
     <ClInclude Include="..\src\vm\device.h" />
     <ClInclude Include="..\src\vm\event.h" />
     <ClInclude Include="..\src\vm\m6502.h" />
diff --git a/source/vc++2013/pc2001 - âRâsü[.vcxproj b/source/vc++2013/pc2001 - âRâsü[.vcxproj
new file mode 100644 (file)
index 0000000..f78c7c7
--- /dev/null
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{E189B8CC-341D-4715-9266-08610C61015A}</ProjectGuid>
+    <RootNamespace>pc2001</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <PlatformToolset>v120_xp</PlatformToolset>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <PlatformToolset>v120_xp</PlatformToolset>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>12.0.21005.1</_ProjectFileVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <OutDir>.\Debug\</OutDir>
+    <IntDir>.\Debug\</IntDir>
+    <LinkIncremental>true</LinkIncremental>
+    <IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);$(DXSDK_DIR)Include</IncludePath>
+    <LibraryPath>$(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86);$(DXSDK_DIR)Lib\x86</LibraryPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <OutDir>.\Release\</OutDir>
+    <IntDir>.\Release\</IntDir>
+    <LinkIncremental>false</LinkIncremental>
+    <IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);$(DXSDK_DIR)Include</IncludePath>
+    <LibraryPath>$(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86);$(DXSDK_DIR)Lib\x86</LibraryPath>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>Win32</TargetEnvironment>
+      <TypeLibraryName>.\Debug/pc2001.tlb</TypeLibraryName>
+      <HeaderFileName />
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_PC2001;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <PrecompiledHeaderOutputFile>.\Debug/pc2001.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\Debug/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0411</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>odbc32.lib;odbccp32.lib;winmm.lib;imm32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\Debug/pc2001.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\Debug/pc2001.pdb</ProgramDatabaseFile>
+      <SubSystem>Windows</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention />
+      <TargetMachine>MachineX86</TargetMachine>
+      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+      <IgnoreSpecificDefaultLibraries>Libcmtd.lib</IgnoreSpecificDefaultLibraries>
+    </Link>
+    <Bscmake>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <OutputFile>.\Debug/pc2001.bsc</OutputFile>
+    </Bscmake>
+    <Manifest>
+      <AdditionalManifestFiles>..\src\res\vista.manifest</AdditionalManifestFiles>
+    </Manifest>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>Win32</TargetEnvironment>
+      <TypeLibraryName>.\Release/pc2001.tlb</TypeLibraryName>
+      <HeaderFileName />
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_PC2001;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+      <PrecompiledHeaderOutputFile>.\Release/pc2001.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\Release/</ProgramDataBaseFileName>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>odbc32.lib;odbccp32.lib;winmm.lib;imm32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>.\Release/pc2001.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ProgramDatabaseFile>.\Release/pc2001.pdb</ProgramDatabaseFile>
+      <SubSystem>Windows</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention />
+      <TargetMachine>MachineX86</TargetMachine>
+      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+    </Link>
+    <Bscmake>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <OutputFile>.\Release/pc2001.bsc</OutputFile>
+    </Bscmake>
+    <Manifest>
+      <AdditionalManifestFiles>..\src\res\vista.manifest</AdditionalManifestFiles>
+    </Manifest>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\src\common.cpp" />
+    <ClCompile Include="..\src\config.cpp" />
+    <ClCompile Include="..\src\fifo.cpp" />
+    <ClCompile Include="..\src\fileio.cpp" />
+    <ClCompile Include="..\src\debugger.cpp" />
+    <ClCompile Include="..\src\emu.cpp" />
+    <ClCompile Include="..\src\win32\osd.cpp" />
+    <ClCompile Include="..\src\win32\osd_console.cpp" />
+    <ClCompile Include="..\src\win32\osd_input.cpp" />
+    <ClCompile Include="..\src\win32\osd_screen.cpp" />
+    <ClCompile Include="..\src\win32\osd_sound.cpp" />
+    <ClCompile Include="..\src\win32\winmain.cpp" />
+    <ClCompile Include="..\src\vm\datarec.cpp" />
+    <ClCompile Include="..\src\vm\event.cpp" />
+    <ClCompile Include="..\src\vm\memory.cpp" />
+    <ClCompile Include="..\src\vm\noise.cpp" />
+    <ClCompile Include="..\src\vm\pcm1bit.cpp" />
+    <ClCompile Include="..\src\vm\upd16434.cpp" />
+    <ClCompile Include="..\src\vm\upd1990a.cpp" />
+    <ClCompile Include="..\src\vm\upd7810.cpp" />
+    <ClCompile Include="..\src\vm\pc2001\io.cpp" />
+    <ClCompile Include="..\src\vm\pc2001\pc2001.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\src\common.h" />
+    <ClInclude Include="..\src\config.h" />
+    <ClInclude Include="..\src\fifo.h" />
+    <ClInclude Include="..\src\fileio.h" />
+    <ClInclude Include="..\src\emu.h" />
+    <ClInclude Include="..\src\win32\osd.h" />
+    <ClInclude Include="..\src\vm\atarec.h" />
+    <ClInclude Include="..\src\vm\debugger.h" />
+    <ClInclude Include="..\src\vm\device.h" />
+    <ClInclude Include="..\src\vm\event.h" />
+    <ClInclude Include="..\src\vm\memory.h" />
+    <ClInclude Include="..\src\vm\noise.h" />
+    <ClInclude Include="..\src\vm\pcm1bit.h" />
+    <ClInclude Include="..\src\vm\vm.h" />
+    <ClInclude Include="..\src\vm\upd16434.h" />
+    <ClInclude Include="..\src\vm\upd1990a.h" />
+    <ClInclude Include="..\src\vm\upd7810.h" />
+    <ClInclude Include="..\src\vm\pc2001\io.h" />
+    <ClInclude Include="..\src\vm\pc2001\pc2001.h" />
+    <ClInclude Include="..\src\res\resource.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <Image Include="..\src\res\pc2001.ico" />
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="..\src\res\pc2001.rc">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\src\res;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\src\res;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ResourceCompile>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
index eee9dba..5f40ac7 100644 (file)
     <ClInclude Include="..\src\fileio.h" />
     <ClInclude Include="..\src\emu.h" />
     <ClInclude Include="..\src\win32\osd.h" />
+    <ClInclude Include="..\src\vm\debugger.h" />
     <ClInclude Include="..\src\vm\device.h" />
     <ClInclude Include="..\src\vm\event.h" />
     <ClInclude Include="..\src\vm\i8255.h" />
index 51dfe08..5c6afa5 100644 (file)
     <ClInclude Include="..\src\win32\osd.h">
       <Filter>Header Files\OSD Header Files</Filter>
     </ClInclude>
+    <ClInclude Include="..\src\vm\debugger.h">
+      <Filter>Header Files\VM Common Header Files</Filter>
+    </ClInclude>
     <ClInclude Include="..\src\vm\device.h">
       <Filter>Header Files\VM Common Header Files</Filter>
     </ClInclude>