OSDN Git Service

[VM][PC8801][PC9801][UI][I8251][UPD765A] Merge upstream 2022-11-14 .
authorK.Ohta <whatisthis.sowhat@gmail.com>
Fri, 10 Mar 2023 16:37:55 +0000 (01:37 +0900)
committerK.Ohta <whatisthis.sowhat@gmail.com>
Fri, 10 Mar 2023 16:37:55 +0000 (01:37 +0900)
27 files changed:
doc/VMs/mz700.txt
doc/VMs/mz80b.txt
doc/VMs/pc8801.txt
doc/VMs/readme.txt
source/history.txt
source/src/qt/machines/pc6001/pc6001.ja_JP.ts
source/src/qt/machines/pc8801/MainWindow.cpp
source/src/qt/machines/pc8801/menuclasses.h
source/src/qt/machines/pc8801/pc8801.ja_JP.ts
source/src/res/i18n/ja/pc8801.ja_JP.qm
source/src/res/pc8801.rc
source/src/res/pc8801mk2.rc
source/src/vm/i8255.cpp
source/src/vm/pc8801/pc88.cpp
source/src/vm/pc8801/pc88.h
source/src/vm/pc8801/pc8801.cpp
source/src/vm/pc8801/pc8801.h
source/src/vm/pc9801/pc9801.cpp
source/src/vm/pc9801/pc9801.h
source/src/vm/upd765a.cpp
source/src/win32/winmain.cpp
source/vc++2008/pc8801.vcproj
source/vc++2008/pc8801mk2.vcproj
source/vc++2017/pc8801.vcxproj
source/vc++2017/pc8801.vcxproj.filters
source/vc++2017/pc8801mk2.vcxproj
source/vc++2017/pc8801mk2.vcxproj.filters

index bb450e0..3bff29d 100644 (file)
@@ -1,9 +1,12 @@
 "EmuZ-700" - SHARP MZ-700 emulator for Win32
-                                                               6/11/2008
+                                                               8/27/2022
 
 --- Internal ROM image
 
        IPL.ROM         $0000-$0FFF
+       MZ1E14.ROM      $E800-$EFFF
+       MZ1R12.ROM      $E800-$EFFF
+       MZ1E05.ROM      $F000-$FFFF
        FONT.ROM        8x8 dots font image
 
 --- Key maps
index 7a1ab7b..7d30b9a 100644 (file)
@@ -1,6 +1,6 @@
 "EmuZ-80B" - SHARP MZ-80B emulator for Win32
 "EmuZ-2200" - SHARP MZ-2200 emulator for Win32
-                                                               4/14/2013
+                                                               8/30/2022
 
 --- Internal ROM images
 
@@ -26,6 +26,7 @@
        HELP            F11
        INST/DEL        DELETE
        KANA            KATAKANA/HIRAGANA
+       SFTLOCK         CTRL
 
 ----------------------------------------
 TAKEDA, toshiya
index 92b9bc2..27b37c2 100644 (file)
@@ -4,7 +4,7 @@
 "ePC-8001" - NEC PC-8001 emulator for Win32
 "ePC-8001mkII" - NEC PC-8001mkII emulator for Win32
 "ePC-8001mkIISR" - NEC PC-8001mkIISR emulator for Win32
-                                                               12/18/2020
+                                                               11/14/2022
 
 --- Internal ROM images
 
@@ -19,6 +19,8 @@
        KANJI2.ROM      Kanji ROM
        JISYO.ROM       Dictionary ROM
        CDBIOS.ROM      CD-ROM BIOS ROM
+       PC-8801-16_I86.ROM
+       PC-8801-16_Z80.ROM
        ---
        N80_1.ROM       PC-8001
        N80_2.ROM       PC-8001mkII
index 941ba59..d2851a1 100644 (file)
@@ -1,5 +1,5 @@
 Binary archive of retro pc emulator common source code
-                                                               2/7/2021
+                                                               7/3/2022
 
 --- What's this ?
 
@@ -17,10 +17,13 @@ This archive includes the binaries of the emulators listed below:
        CASIO
                eFP-200         FP-200
                eFP-1100        FP-1100
+               eFX-9000P       FX-9000P
                ePV-1000        PV-1000
                EmuGaki         PV-2000
        COLECO
                yaCOLECOVISION  ColecoVision
+       Computer Research
+               eCRC-80         CRC-80
        EPOCH
                eSCV            Super Cassette Vision
        EPSON
@@ -28,6 +31,8 @@ This archive includes the binaries of the emulators listed below:
                eHC-40          HC-40/PX-4
                eHC-80          HC-80/PX-8/Geneva
                eQC-10          QC-10 / QX-10
+       ESP
+               eTRNJunior      eTRNJunior
        FUJITSU
                eFM8            FM-8 (by Mr.Artane.)
                eFM7            FM-7 (by Mr.Artane.)
@@ -136,6 +141,7 @@ This archive includes the binaries of the emulators listed below:
                eSMC-777        SMC-777
        SORD
                Emu5            m5
+               Emu23           M23
        SPECTRAVIDEO
                yaSVI-3x8       SVI-3x8 (by Mr.tanam)
        Systems Formulate
@@ -143,7 +149,7 @@ This archive includes the binaries of the emulators listed below:
        TOMY
                ePyuTa          PyuTa/PyuTa Jr.
        TOSHIBA
-               eEX-80          EX-80
+               eEX-80BS        EX-80BS
                yayaHX-20+      HX-20 + FDD (by Mr.umaiboux)
                EmuPIA          PASOPIA/PASOPIA5
                EmuPIA7         PASOPIA7
@@ -496,7 +502,7 @@ Save/Load State info:
        MESS PC-8801 driver
 - vm/pc9801/display.*
        Neko Project 2 by Mr.Yui
-       Improved for EGC by Mr.Ryuji Okamoto (qemu/9821改造版)
+       Improved for EGC by Mr.Ryuji Okamoto (qemu/9821\89ü\91¢\94Å)
 - vm/pcengine/pce.*
        Ootake (joypad)
        xpce (psg)
index 585aa55..a2d409e 100644 (file)
@@ -1,3 +1,13 @@
+11/14/2022
+
+[VM/I8255] fix mode #1
+
+[PC8801] support PC-8801-16 (16bit board)
+
+[PC9801] fix to always enable 2HD FDD I/F on first PC-9801
+[PC9801] improve default dipswitch value
+
+
 11/12/2022
 
 [PC8801] fix crash issue when 5inch drives are disconnected
index 5e03ded..b489161 100644 (file)
 <context>
     <name>MenuPC6001</name>
     <message>
-        <location filename="MainWindow.cpp" line="25"/>
+        <location filename="MainWindow.cpp" line="27"/>
         <source>Main CPU</source>
         <translation>メインCPU</translation>
     </message>
     <message>
-        <location filename="MainWindow.cpp" line="26"/>
+        <location filename="MainWindow.cpp" line="28"/>
         <source>Sub  CPU</source>
         <translation>サブCPU</translation>
     </message>
     <message>
-        <location filename="MainWindow.cpp" line="27"/>
+        <location filename="MainWindow.cpp" line="29"/>
         <source>PC-80S31K</source>
         <translation>PC-80S31K(外付けドライブ)のCPU</translation>
     </message>
     <message>
-        <location filename="MainWindow.cpp" line="35"/>
+        <location filename="MainWindow.cpp" line="37"/>
         <source>NEC PC-PR201 kanji serial printer.</source>
         <translation>NEC PC-PR201漢字シリアルプリンタ</translation>
     </message>
index 14dc6c8..7b16177 100644 (file)
@@ -186,8 +186,12 @@ void META_MainWindow::retranslateUi(void)
 #endif
        actionDebugger[0]->setVisible(true);
        actionDebugger[1]->setVisible(true);
-
+#if defined(SUPPORT_PC88_16BIT)
+       actionDebugger[2]->setText(QApplication::translate("MenuPC88", "PC-8801-16", 0));
+       actionDebugger[2]->setVisible(true);
+#else
        actionDebugger[2]->setVisible(false);
+#endif
        actionDebugger[3]->setVisible(false);
 #endif
 #if defined(USE_JOYSTICK_TYPE)
@@ -232,6 +236,10 @@ void META_MainWindow::retranslateUi(void)
        actionFDD_8Inch->setText(QApplication::translate("MenuPC88", "8Inch FDD(Need to restart)", 0));
        actionFDD_8Inch->setToolTip(QApplication::translate("MenuPC88", "Enable 8 inch FDDs for 3: and 4:.\nThis effects only after restarting this emulator.", 0));
 #endif
+#if defined(SUPPORT_PC88_16BIT)
+       action16bit->setText(QApplication::translate("MenuPC88", "PC-8801-16(Need to restart)", 0));
+       action16bit->setToolTip(QApplication::translate("MenuPC88", "Enable PC-8801-16 16bit extra CPU card.\nThis effects only after restarting this emulator.", 0));
+#endif
 #if defined(SUPPORT_M88_DISKDRV)
        actionM88DRV->setText(QApplication::translate("MenuPC88", "M88 DiskDrv(Need to restart)", 0));
        actionM88DRV->setToolTip(QApplication::translate("MenuPC88", "Enable M88 stile Disk Drives.\nThis effects only after restarting this emulator.", 0));
@@ -282,7 +290,11 @@ void META_MainWindow::setupUI_Emu(void)
 
        menuMachine->addAction(actionPalette);
        menuMachine->addSeparator();
-
+#if defined(SUPPORT_PC88_16BIT)
+       SET_ACTION_SINGLE_DIPSWITCH_CONNECT(action16bit, DIPSWITCH_16BIT, p_config->dipswitch, SIGNAL(toggled(bool)), SLOT(do_set_single_dipswitch(bool)));
+       menuMachine->addAction(action16bit);
+       menuMachine->addSeparator();
+#endif
 #if defined(SUPPORT_M88_DISKDRV)
        SET_ACTION_SINGLE_DIPSWITCH_CONNECT(actionM88DRV, DIPSWITCH_M88_DISKDRV, p_config->dipswitch, SIGNAL(toggled(bool)), SLOT(do_set_single_dipswitch(bool)));
        menuMachine->addAction(actionM88DRV);
index fa839e6..9c0f4a1 100644 (file)
@@ -5,7 +5,7 @@
 #include "commonclasses.h"
 #include "mainwidget.h"
 // This extends class CSP_MainWindow as Ui_MainWindow.
-// You may use this as 
+// You may use this as
 QT_BEGIN_NAMESPACE
 class Ui_SoundDialog;
 class USING_FLAGS;
@@ -21,16 +21,18 @@ protected:
        Action_Control *actionHMB20; //
        Action_Control *actionGSX8800; //
        Action_Control *actionPCG8100; //
-       
+
        Action_Control *actionCMD_Sing; //
        Action_Control *actionPalette; //
-       
+
        Action_Control *actionFDD_5Inch; //
        Action_Control *actionFDD_8Inch; //
-       
+
+       Action_Control *action16bit; //
+
        Action_Control *actionM88DRV; //
        Action_Control *actionQuasiS88CMT; //
-       
+
        void setupUI_Emu(void);
        void retranslateUi(void);
 public:
index 0d6032d..3198243 100644 (file)
@@ -412,5 +412,19 @@ This effects only after restarting this emulator.</source>
         <source>Use JAST SOUND : PCM sound unit.</source>
         <translation>ジャストサウンド(PCM音源)をプリンタポートにつなぎます。</translation>
     </message>
+    <message>
+        <source>PC-8801-16</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>PC-8801-16(Need to restart)</source>
+        <translation>PC-8801-16(再起動が必要)</translation>
+    </message>
+    <message>
+        <source>Enable PC-8801-16 16bit extra CPU card.
+This effects only after restarting this emulator.</source>
+        <translation>PC-8801-16 16ビット拡張CPUカードを有効にします。
+エミュレータの再起動が必要です。</translation>
+    </message>
 </context>
 </TS>
index c014e4b..b507c86 100644 (file)
Binary files a/source/src/res/i18n/ja/pc8801.ja_JP.qm and b/source/src/res/i18n/ja/pc8801.ja_JP.qm differ
index f87600e..7754608 100644 (file)
@@ -27,18 +27,18 @@ LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
 // TEXTINCLUDE\r
 //\r
 \r
-1 TEXTINCLUDE DISCARDABLE\r
+1 TEXTINCLUDE DISCARDABLE \r
 BEGIN\r
     "resource.h\0"\r
 END\r
 \r
-2 TEXTINCLUDE DISCARDABLE\r
+2 TEXTINCLUDE DISCARDABLE \r
 BEGIN\r
     "#include ""afxres.h""\r\n"\r
     "\0"\r
 END\r
 \r
-3 TEXTINCLUDE DISCARDABLE\r
+3 TEXTINCLUDE DISCARDABLE \r
 BEGIN\r
     "\r\n"\r
     "\0"\r
@@ -64,7 +64,7 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
 // Accelerator\r
 //\r
 \r
-IDR_ACCELERATOR1 ACCELERATORS DISCARDABLE\r
+IDR_ACCELERATOR1 ACCELERATORS DISCARDABLE \r
 BEGIN\r
     VK_RETURN,      ID_ACCEL_MOUSE,         VIRTKEY, CONTROL, NOINVERT\r
     VK_RETURN,      ID_ACCEL_SCREEN,        VIRTKEY, ALT, NOINVERT\r
@@ -78,7 +78,7 @@ END
 // Menu\r
 //\r
 \r
-IDR_MENU1 MENU DISCARDABLE\r
+IDR_MENU1 MENU DISCARDABLE \r
 BEGIN\r
     POPUP "Control"\r
     BEGIN\r
@@ -125,6 +125,7 @@ BEGIN
         MENUITEM SEPARATOR\r
         MENUITEM "Debug Main CPU",              ID_OPEN_DEBUGGER0\r
         MENUITEM "Debug PC-80S31K CPU",         ID_OPEN_DEBUGGER1\r
+        MENUITEM "Debug PC-8801-16 CPU",        ID_OPEN_DEBUGGER2\r
         MENUITEM "Close Debugger",              ID_CLOSE_DEBUGGER\r
         MENUITEM SEPARATOR\r
         MENUITEM "Exit",                        ID_EXIT\r
@@ -191,6 +192,8 @@ BEGIN
         BEGIN\r
             MENUITEM "N88 mode"                     ID_VM_BOOT_MODE0\r
             MENUITEM "N mode"                       ID_VM_BOOT_MODE3\r
+            MENUITEM SEPARATOR\r
+            MENUITEM "PC-8801-16",                  ID_VM_DIPSWITCH10\r
         END\r
         POPUP "Floppy Drive"\r
         BEGIN\r
@@ -417,3 +420,4 @@ END
 \r
 /////////////////////////////////////////////////////////////////////////////\r
 #endif    // not APSTUDIO_INVOKED\r
+\r
index 63b60fd..c0844ab 100644 (file)
@@ -27,18 +27,18 @@ LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
 // TEXTINCLUDE\r
 //\r
 \r
-1 TEXTINCLUDE DISCARDABLE\r
+1 TEXTINCLUDE DISCARDABLE \r
 BEGIN\r
     "resource.h\0"\r
 END\r
 \r
-2 TEXTINCLUDE DISCARDABLE\r
+2 TEXTINCLUDE DISCARDABLE \r
 BEGIN\r
     "#include ""afxres.h""\r\n"\r
     "\0"\r
 END\r
 \r
-3 TEXTINCLUDE DISCARDABLE\r
+3 TEXTINCLUDE DISCARDABLE \r
 BEGIN\r
     "\r\n"\r
     "\0"\r
@@ -64,7 +64,7 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
 // Accelerator\r
 //\r
 \r
-IDR_ACCELERATOR1 ACCELERATORS DISCARDABLE\r
+IDR_ACCELERATOR1 ACCELERATORS DISCARDABLE \r
 BEGIN\r
     VK_RETURN,      ID_ACCEL_MOUSE,         VIRTKEY, CONTROL, NOINVERT\r
     VK_RETURN,      ID_ACCEL_SCREEN,        VIRTKEY, ALT, NOINVERT\r
@@ -78,7 +78,7 @@ END
 // Menu\r
 //\r
 \r
-IDR_MENU1 MENU DISCARDABLE\r
+IDR_MENU1 MENU DISCARDABLE \r
 BEGIN\r
     POPUP "Control"\r
     BEGIN\r
@@ -125,6 +125,7 @@ BEGIN
         MENUITEM SEPARATOR\r
         MENUITEM "Debug Main CPU",              ID_OPEN_DEBUGGER0\r
         MENUITEM "Debug PC-80S31K CPU",         ID_OPEN_DEBUGGER1\r
+        MENUITEM "Debug PC-8801-16 CPU",        ID_OPEN_DEBUGGER2\r
         MENUITEM "Close Debugger",              ID_CLOSE_DEBUGGER\r
         MENUITEM SEPARATOR\r
         MENUITEM "Exit",                        ID_EXIT\r
@@ -191,6 +192,8 @@ BEGIN
         BEGIN\r
             MENUITEM "N88 mode"                     ID_VM_BOOT_MODE0\r
             MENUITEM "N mode"                       ID_VM_BOOT_MODE3\r
+            MENUITEM SEPARATOR\r
+            MENUITEM "PC-8801-16",                  ID_VM_DIPSWITCH10\r
         END\r
         POPUP "Floppy Drive"\r
         BEGIN\r
@@ -423,3 +426,4 @@ END
 \r
 /////////////////////////////////////////////////////////////////////////////\r
 #endif    // not APSTUDIO_INVOKED\r
+\r
index 7a041b6..be1bcd5 100644 (file)
@@ -41,7 +41,7 @@ void I8255::reset()
 void I8255::write_io8(uint32_t addr, uint32_t data)
 {
        int ch = addr & 3;
-       
+
        switch(ch) {
        case 0:
        case 1:
@@ -93,7 +93,7 @@ void I8255::write_io8(uint32_t addr, uint32_t data)
                                        val &= ~BIT_INTR_A;
                                }
                                if(port[1].mode == 1) {
-                                       if(port[1].mode == 0xff) {
+                                       if(port[1].rmask == 0xff) {
                                                val &= ~BIT_IBF_B;
                                        } else {
                                                val |= BIT_OBF_B;
@@ -119,7 +119,7 @@ void I8255::write_io8(uint32_t addr, uint32_t data)
 uint32_t I8255::read_io8(uint32_t addr)
 {
        int ch = addr & 3;
-       
+
        switch(ch) {
        case 0:
        case 1:
@@ -199,7 +199,7 @@ void I8255::write_signal(int id, uint32_t data, uint32_t mask)
                                }
                        }
                        if(port[1].mode == 1) {
-                               if(port[0].rmask == 0xff) {
+                               if(port[1].rmask == 0xff) {
                                        if(mask & BIT_STB_B) {
                                                if((port[2].rreg & BIT_STB_B) && !(data & BIT_STB_B)) {
                                                        write_io8(2, port[2].wreg | BIT_IBF_B);
index 371f208..5a16a78 100644 (file)
 #include "../scsi_host.h"
 #endif
 
+#ifdef SUPPORT_PC88_16BIT
+#include "../i8255.h"
+#endif
+
 #define DEVICE_JOYSTICK        0
 #define DEVICE_MOUSE   1
 #define DEVICE_JOYMOUSE        2       // not supported yet
@@ -143,6 +147,10 @@ namespace PC88DEV
 #define Port53_G5DS    (port[0x53] & 0x40)     // PC-8001
 #endif
 
+#ifdef SUPPORT_PC88_16BIT
+#define Port82_BOOT16  (!(port[0x82] & 0x01))
+#endif
+
 #if defined(PC8801_VARIANT)
 #define Port70_TEXTWND port[0x70]
 #endif
@@ -307,6 +315,10 @@ void PC88::initialize()
        memset(cdbios, 0xff, sizeof(cdbios));
        cdbios_loaded = false;
 #endif
+#ifdef SUPPORT_PC88_16BIT
+       memset(boot_16bit, 0xff, sizeof(boot_16bit));
+       boot_16bit_loaded = false;
+#endif
 #endif
 
        // load rom images
@@ -462,6 +474,15 @@ void PC88::initialize()
                cdbios_loaded = true;
        }
 #endif
+#ifdef SUPPORT_PC88_16BIT
+       if(config.dipswitch & DIPSWITCH_16BIT) {
+               if(fio->Fopen(create_local_path(_T("PC-8801-16_Z80.ROM")), FILEIO_READ_BINARY)) {
+                       fio->Fread(boot_16bit, 0x2000, 1);
+                       fio->Fclose();
+                       boot_16bit_loaded = true;
+               }
+       }
+#endif
 #endif
        delete fio;
 
@@ -729,6 +750,10 @@ void PC88::reset()
        cdda_volume = 100.0;
        d_scsi_cdrom->set_volume((int)cdda_volume);
 #endif
+#ifdef SUPPORT_PC88_16BIT
+       porta_16bit = 0;
+       portc_16bit = 0x80; // OBF_A(PC7)=1, IBF_B(PC1)=0
+#endif
 #ifdef NIPPY_PATCH
        // dirty patch for NIPPY
        nippy_patch = false;
@@ -1286,6 +1311,22 @@ void PC88::write_io8(uint32_t addr, uint32_t data)
        case 0x78:
                Port70_TEXTWND++;
                break;
+#ifdef SUPPORT_PC88_16BIT
+       case 0x80:
+               if(d_pio_16bit != NULL) {
+                       d_pio_16bit->write_signal(SIG_I8255_PORT_C, 0x04, 0x04); // STB_B(PC2): H->L->H
+                       d_pio_16bit->write_signal(SIG_I8255_PORT_B, data, 0xff);
+                       d_pio_16bit->write_signal(SIG_I8255_PORT_C, 0x00, 0x04);
+                       d_pio_16bit->write_signal(SIG_I8255_PORT_C, 0x04, 0x04);
+               }
+               break;
+       case 0x82:
+               if(boot_16bit_loaded && (mod & 0x01)) {
+                       update_low_write();
+                       update_low_read();
+               }
+               break;
+#endif
 #ifdef SUPPORT_PC88_HMB20
        case 0x88:
        case 0x89:
@@ -1599,6 +1640,15 @@ uint32_t PC88::read_io8_debug(uint32_t addr)
                if(addr == 0x0e) {
                        val &= ~0x80; // http://www.maroon.dti.ne.jp/youkan/pc88/iomap.html
                }
+/*
+#ifdef SUPPORT_PC88_16BIT
+               if(boot_16bit_loaded && Port82_BOOT16) {
+                       if(addr == 0x08 && d_cpu->get_pc() == 0x0004) {
+                               val &= ~0x10;
+                       }
+               }
+#endif
+*/
                return val;
        case 0x20:
        case 0x21:
@@ -1733,6 +1783,24 @@ uint32_t PC88::read_io8_debug(uint32_t addr)
        case 0x71:
                return port[0x71];
 #endif
+#ifdef SUPPORT_PC88_16BIT
+       case 0x80:
+               if(d_pio_16bit != NULL) {
+                       d_pio_16bit->write_signal(SIG_I8255_PORT_C, 0x40, 0x40); // ACK_A(PC6): H->L->H
+                       val = porta_16bit;
+                       d_pio_16bit->write_signal(SIG_I8255_PORT_C, 0x00, 0x40);
+                       d_pio_16bit->write_signal(SIG_I8255_PORT_C, 0x40, 0x40);
+                       return val;
+               }
+               break;
+       case 0x81:
+               if(d_pio_16bit != NULL) {
+                       // bit0: OBF_A(PC7)
+                       // bit1: IBF_B(PC1)
+                       return ((portc_16bit >> 7) & 0x01) | (portc_16bit & 0x02);
+               }
+               break;
+#endif
 #ifdef SUPPORT_PC88_HMB20
 //     case 0x88:
        case 0x89:
@@ -2228,6 +2296,16 @@ void PC88::update_n80_read()
 #else
 void PC88::update_low_read()
 {
+       update_low_read_sub();
+#ifdef SUPPORT_PC88_16BIT
+       if(boot_16bit_loaded && Port82_BOOT16) {
+               SET_BANK_R(0x0000, 0x1fff, boot_16bit);
+       }
+#endif
+}
+
+void PC88::update_low_read_sub()
+{
 #if defined(PC88_EXRAM_BANKS)
        if(PortE2_RDEN) {
                if(PortE3_ERAMSL < PC88_EXRAM_BANKS) {
@@ -2274,6 +2352,16 @@ void PC88::update_low_read()
 
 void PC88::update_low_write()
 {
+       update_low_write_sub();
+#ifdef SUPPORT_PC88_16BIT
+       if(boot_16bit_loaded && Port82_BOOT16) {
+               SET_BANK_W(0x0000, 0x1fff, wdmy);
+       }
+#endif
+}
+
+void PC88::update_low_write_sub()
+{
 #if defined(PC88_EXRAM_BANKS)
        if(PortE2_WREN) {
                if(PortE3_ERAMSL < PC88_EXRAM_BANKS) {
@@ -2288,6 +2376,7 @@ void PC88::update_low_write()
        SET_BANK_W(0x0000, 0x7fff, ram);
 }
 
+
 #if defined(PC8801SR_VARIANT)
 void PC88::update_tvram_memmap()
 {
@@ -2369,6 +2458,12 @@ void PC88::write_signal(int id, uint32_t data, uint32_t mask)
                } else {
                        // send to rs-232c
                }
+#ifdef SUPPORT_PC88_16BIT
+       } else if(id == SIG_PC88_16BIT_PORTA) {
+               porta_16bit = (data & mask) | (porta_16bit & ~mask);
+       } else if(id == SIG_PC88_16BIT_PORTC) {
+               portc_16bit = (data & mask) | (portc_16bit & ~mask);
+#endif
        }
 }
 
@@ -4103,7 +4198,7 @@ void pc88_dmac_t::finish(int c)
        }
 }
 
-#define STATE_VERSION  13
+#define STATE_VERSION  14
 
 bool PC88::process_state(FILEIO* state_fio, bool loading)
 {
@@ -4280,6 +4375,10 @@ bool PC88::process_state(FILEIO* state_fio, bool loading)
        state_fio->StateValue(cdda_register_id);
        state_fio->StateValue(cdda_volume);
 #endif
+#ifdef SUPPORT_PC88_16BIT
+       state_fio->StateValue(porta_16bit);
+       state_fio->StateValue(portc_16bit);
+#endif
 #ifdef NIPPY_PATCH
        state_fio->StateValue(nippy_patch);
 #endif
index 84fe1a8..d106f74 100644 (file)
 #define SIG_PC88_GSX_IRQ       6
 #endif
 #define SIG_PC88_USART_OUT     7
+#ifdef SUPPORT_PC88_16BIT
+#define SIG_PC88_16BIT_PORTA   8
+#define SIG_PC88_16BIT_PORTC   9
+#endif
 
 #define CMT_BUFFER_SIZE                0x40000
 
@@ -152,6 +156,9 @@ private:
 #ifdef SUPPORT_PC88_PCG8100
        DEVICE *d_pcg_pit, *d_pcg_pcm1, *d_pcg_pcm2, *d_pcg_pcm3;
 #endif
+#ifdef SUPPORT_PC88_16BIT
+       DEVICE *d_pio_16bit;
+#endif
 #ifdef SUPPORT_M88_DISKDRV
        DEVICE *d_diskio;
 #endif
@@ -202,6 +209,10 @@ private:
        uint8_t cdbios[0x10000];
        bool cdbios_loaded;
 #endif
+#ifdef SUPPORT_PC88_16BIT
+       uint8_t boot_16bit[0x2000];
+       bool boot_16bit_loaded;
+#endif
 
        // i/o port
        uint8_t port[256];
@@ -234,7 +245,9 @@ private:
        void update_n80_read();
 #else
        void update_low_write();
+       void update_low_write_sub();
        void update_low_read();
+       void update_low_read_sub();
 #if defined(PC8801SR_VARIANT)
        void update_tvram_memmap();
 #endif
@@ -356,6 +369,11 @@ private:
        double cdda_volume;
 #endif
 
+#ifdef SUPPORT_PC88_16BIT
+       uint8_t porta_16bit;
+       uint8_t portc_16bit;
+#endif
+
 #ifdef NIPPY_PATCH
        // dirty patch for NIPPY
        bool nippy_patch;
@@ -388,6 +406,9 @@ public:
                d_pcg_pcm2 = NULL;
                d_pcg_pcm3 = NULL;
 #endif
+#ifdef SUPPORT_PC88_16BIT
+               d_pio_16bit = NULL;
+#endif
 #ifdef SUPPORT_M88_DISKDRV
                d_diskio = NULL;
 #endif
@@ -530,6 +551,12 @@ public:
                d_pcg_pcm3 = device;
        }
 #endif
+#ifdef SUPPORT_PC88_16BIT
+       void set_context_pio_16bit(DEVICE* device)
+       {
+               d_pio_16bit = device;
+       }
+#endif
 #ifdef SUPPORT_M88_DISKDRV
        void set_context_diskio(DEVICE* device)
        {
index 4576d02..b47b2aa 100644 (file)
@@ -51,7 +51,7 @@
 #include "../ay_3_891x.h"
 #endif
 
-#if defined(SUPPORT_PC88_GSX8800) || defined(SUPPORT_PC88_PCG8100)
+#if defined(SUPPORT_PC88_GSX8800) || defined(SUPPORT_PC88_PCG8100) || defined(SUPPORT_PC88_16BIT)
 #include "../i8253.h"
 #endif
 
 #include "../pcm8bit.h"
 #endif
 
+#if defined(SUPPORT_PC88_16BIT)
+#include "../i8259.h"
+#include "../i86.h"
+#include "../io.h"
+#include "../memory.h"
+#endif
+
 #ifdef SUPPORT_M88_DISKDRV
 #include "diskio.h"
 #endif
@@ -319,6 +326,19 @@ VM::VM(EMU_TEMPLATE* parent_emu) : VM_TEMPLATE(parent_emu)
                pc88pcg_pcm1 = pc88pcg_pcm2 = pc88pcg_pcm3 = NULL;
        }
 #endif
+#ifdef SUPPORT_PC88_16BIT
+       if(config.dipswitch & DIPSWITCH_16BIT) {
+               pc88pit_16bit = new I8253(this, emu);
+               pc88pio_16bit = new I8255(this, emu);
+               pc88pic_16bit = new I8259(this, emu);
+               pc88cpu_16bit = new I86(this, emu);
+               pc88cpu_16bit->device_model = INTEL_8086;
+               pc88io_16bit = new IO(this, emu);
+               pc88mem_16bit = new MEMORY(this, emu);
+       } else {
+               pc88cpu_16bit = NULL;
+       }
+#endif
 #ifdef SUPPORT_M88_DISKDRV
        if(config.dipswitch & DIPSWITCH_M88_DISKDRV) {
                pc88diskio = new DiskIO(this, emu);
@@ -337,6 +357,11 @@ VM::VM(EMU_TEMPLATE* parent_emu) : VM_TEMPLATE(parent_emu)
        if(pc88cpu_sub != NULL) {
                pc88event->set_context_cpu(pc88cpu_sub, 3993624);
        }
+#ifdef SUPPORT_PC88_16BIT
+       if(pc88cpu_16bit != NULL) {
+               pc88event->set_context_cpu(pc88cpu_16bit, 7987248);
+       }
+#endif
 
        // set sound device contexts
        pc88event->set_context_sound(pc88pcm);
@@ -439,6 +464,11 @@ VM::VM(EMU_TEMPLATE* parent_emu) : VM_TEMPLATE(parent_emu)
                pc88->set_context_pcg_pcm3(pc88pcg_pcm3);
        }
 #endif
+#ifdef SUPPORT_PC88_16BIT
+       if(config.dipswitch & DIPSWITCH_16BIT) {
+               pc88->set_context_pio_16bit(pc88pio_16bit);
+       }
+#endif
 #ifdef SUPPORT_M88_DISKDRV
        if(config.dipswitch & DIPSWITCH_M88_DISKDRV) {
                pc88->set_context_diskio(pc88diskio);
@@ -522,6 +552,51 @@ VM::VM(EMU_TEMPLATE* parent_emu) : VM_TEMPLATE(parent_emu)
                pc88pcg_pit->set_constant_clock(2, 3993624);
        }
 #endif
+#ifdef SUPPORT_PC88_16BIT
+       if(config.dipswitch & DIPSWITCH_16BIT) {
+               memset(pc88rom_16bit, 0xff, sizeof(pc88rom_16bit));
+               memset(pc88ram_16bit, 0x00, sizeof(pc88ram_16bit));
+
+               FILEIO* fio = new FILEIO();
+               if(fio->Fopen(create_local_path(_T("PC-8801-16_I86.ROM")), FILEIO_READ_BINARY)) {
+                       fio->Fread(pc88rom_16bit, sizeof(pc88rom_16bit), 1);
+                       fio->Fclose();
+               }
+               delete fio;
+
+               pc88mem_16bit->set_memory_rw(0, sizeof(pc88ram_16bit) - 1, pc88ram_16bit);
+               pc88mem_16bit->set_memory_r(0xff000, 0xfffff, pc88rom_16bit);
+
+               pc88io_16bit->set_iomap_alias_rw(0x00, pc88pit_16bit, 0);
+               pc88io_16bit->set_iomap_alias_rw(0x02, pc88pit_16bit, 1);
+               pc88io_16bit->set_iomap_alias_rw(0x04, pc88pit_16bit, 2);
+               pc88io_16bit->set_iomap_alias_w (0x06, pc88pit_16bit, 3);
+               pc88io_16bit->set_iomap_alias_rw(0x10, pc88pio_16bit, 0);
+               pc88io_16bit->set_iomap_alias_rw(0x12, pc88pio_16bit, 1);
+               pc88io_16bit->set_iomap_alias_rw(0x14, pc88pio_16bit, 2);
+               pc88io_16bit->set_iomap_alias_w (0x16, pc88pio_16bit, 3);
+               pc88io_16bit->set_iomap_alias_rw(0x20, pc88pic_16bit, 0);
+               pc88io_16bit->set_iomap_alias_rw(0x22, pc88pic_16bit, 1);
+
+               pc88pit_16bit->set_context_ch0(pc88pic_16bit, SIG_I8259_IR0, 1);
+               pc88pit_16bit->set_context_ch1(pc88pit_16bit, SIG_I8253_CLOCK_2, 1);
+               pc88pit_16bit->set_context_ch2(pc88pic_16bit, SIG_I8259_IR7, 1);
+               pc88pit_16bit->set_constant_clock(0, 2995218);
+               pc88pit_16bit->set_constant_clock(1, 2995218);
+               pc88pio_16bit->set_context_port_a(pc88, SIG_PC88_16BIT_PORTA, 0xff, 0);
+               pc88pio_16bit->set_context_port_c(pc88, SIG_PC88_16BIT_PORTC, 0x82, 0); // PC7+PC1
+               pc88pio_16bit->set_context_port_c(pc88pic_16bit, SIG_I8259_IR1, 0x01, 0); // PC0
+               pc88pio_16bit->set_context_port_c(pc88pic_16bit, SIG_I8259_IR2, 0x08, 0); // PC3
+               pc88pic_16bit->set_context_cpu(pc88cpu_16bit);
+               pc88cpu_16bit->set_context_mem(pc88mem_16bit);
+               pc88cpu_16bit->set_context_io(pc88io_16bit);
+               pc88cpu_16bit->set_context_intr(pc88pic_16bit);
+#ifdef USE_DEBUGGER
+               pc88cpu_16bit->set_context_debugger(new DEBUGGER(this, emu));
+#endif
+
+       }
+#endif
 
        // initialize all devices
 #if defined(__GIT_REPO_VERSION)
@@ -602,6 +677,10 @@ DEVICE *VM::get_cpu(int index)
                return pc88cpu;
        } else if(index == 1) {
                return pc88cpu_sub;
+#ifdef SUPPORT_PC88_16BIT
+       } else if(index == 2) {
+               return pc88cpu_16bit;
+#endif
        }
        return NULL;
 }
@@ -1026,7 +1105,7 @@ uint64_t VM::get_current_clock_uint64()
        return pc88event->get_current_clock_uint64();
 }
 
-#define STATE_VERSION  12
+#define STATE_VERSION  13
 
 bool VM::process_state(FILEIO* state_fio, bool loading)
 {
@@ -1034,6 +1113,9 @@ bool VM::process_state(FILEIO* state_fio, bool loading)
                return false;
        }
        // Machine specified.
+#ifdef SUPPORT_PC88_16BIT
+       state_fio->StateArray(pc88ram_16bit, sizeof(pc88ram_16bit), 1);
+#endif
        state_fio->StateValue(boot_mode);
        return true;
 }
index 6954c83..eb01ae6 100644 (file)
@@ -87,6 +87,7 @@
        #define SUPPORT_PC88_OPN2
        #define SUPPORT_PC88_JAST
        #define SUPPORT_PC88_FDD_8INCH
+       #define SUPPORT_PC88_16BIT
        #define SUPPORT_M88_DISKDRV
 #elif defined(_PC8801)
        #define SUPPORT_PC88_KANJI1
@@ -94,6 +95,7 @@
        #define SUPPORT_PC88_OPN2
        #define SUPPORT_PC88_JAST
        #define SUPPORT_PC88_FDD_8INCH
+       #define SUPPORT_PC88_16BIT
        #define SUPPORT_M88_DISKDRV
 #elif defined(_PC8001SR)
        #define SUPPORT_PC88_KANJI1
 #define SCREEN_HEIGHT          400
 #define WINDOW_HEIGHT_ASPECT   480
 #define MAX_DRIVE              2
+#if defined(SUPPORT_PC88_16BIT)
+#define I8259_MAX_CHIPS                1
+#define IO_ADDR_MAX            0x100
+#define MEMORY_ADDR_MAX                0x100000
+#endif
 #define UPD765A_NO_ST1_EN_OR_FOR_RESULT7
 #if defined(_PC8801MA)
 #define PC80S31K_NO_WAIT
 #define DIPSWITCH_FDD_8INCH    0x80
 #define DIPSWITCH_M88_DISKDRV  0x100
 #define DIPSWITCH_QUASIS88_CMT 0x200
+#define DIPSWITCH_16BIT                0x400
 #define DIPSWITCH_DEFAULT      (DIPSWITCH_HMB20 + DIPSWITCH_GSX8800 + DIPSWITCH_PCG8100 + DIPSWITCH_CMDSING + DIPSWITCH_FDD_5INCH)
 #define USE_JOYSTICK_TYPE      2
 #if defined(SUPPORT_PC88_FDD_8INCH)
@@ -330,9 +338,16 @@ class YM2151;
 class AY_3_891X;
 #endif
 
-#if defined(SUPPORT_PC88_GSX8800) || defined(SUPPORT_PC88_PCG8100)
+#if defined(SUPPORT_PC88_GSX8800) || defined(SUPPORT_PC88_PCG8100) || defined(SUPPORT_PC88_16BIT)
 class I8253;
 #endif
+
+#if defined(SUPPORT_PC88_16BIT)
+class I8259;
+class I86;
+class IO;
+class MEMORY;
+#endif
 namespace PC88DEV {
        class PC88;
        #ifdef SUPPORT_M88_DISKDRV
@@ -344,10 +359,10 @@ class VM : public VM_TEMPLATE
 protected:
        //EMU* emu;
        //csp_state_utils* state_entry;
-       
+
        // devices
        EVENT* pc88event;
-       
+
        DEVICE* pc88prn;
        I8251* pc88sio;
        I8255* pc88pio;
@@ -361,7 +376,7 @@ protected:
 #endif
        DEVICE* dummycpu;
        Z80* pc88cpu;
-       
+
        PC80S31K* pc88sub;
        I8255* pc88pio_sub;
        UPD765A* pc88fdc_sub;
@@ -384,7 +399,7 @@ protected:
 #ifdef SUPPORT_PC88_HMB20
        YM2151* pc88opm;
 #endif
-       
+
 #ifdef SUPPORT_PC88_GSX8800
 //     I8253* pc88gsx_pit;
        AY_3_891X* pc88gsx_psg1;
@@ -392,50 +407,61 @@ protected:
        AY_3_891X* pc88gsx_psg3;
        AY_3_891X* pc88gsx_psg4;
 #endif
-       
+
 #ifdef SUPPORT_PC88_PCG8100
        I8253* pc88pcg_pit;
        PCM1BIT* pc88pcg_pcm1;
        PCM1BIT* pc88pcg_pcm2;
        PCM1BIT* pc88pcg_pcm3;
 #endif
-       
+
+#ifdef SUPPORT_PC88_16BIT
+       I8253* pc88pit_16bit;
+       I8255* pc88pio_16bit;
+       I8259* pc88pic_16bit;
+       I86* pc88cpu_16bit;
+       IO* pc88io_16bit;
+       MEMORY* pc88mem_16bit;
+       uint8_t pc88rom_16bit[0x1000];
+       uint8_t pc88ram_16bit[0x20000];
+#endif
+
 #ifdef SUPPORT_M88_DISKDRV
        PC88DEV::DiskIO* pc88diskio;
 #endif
-       
+
        PC88DEV::PC88* pc88;
-       
+
        int boot_mode;
-       
+
        // drives
        UPD765A *get_floppy_disk_controller(int drv);
        DISK *get_floppy_disk_handler(int drv);
-       
+
 public:
        // ----------------------------------------
        // initialize
        // ----------------------------------------
-       
+
        VM(EMU_TEMPLATE* parent_emu);
        ~VM();
-       
+
        // ----------------------------------------
        // for emulation class
        // ----------------------------------------
-       
+
        // drive virtual machine
        void reset() override;
        void run() override;
        double get_frame_rate() override;
-       
+
 #ifdef USE_DEBUGGER
        // debugger
        DEVICE *get_cpu(int index) override;
 #endif
        // draw screen
        void draw_screen() override;
-       
+
        // sound generation
        void initialize_sound(int rate, int samples) override;
        uint16_t* create_sound(int* extra_frames) override;
@@ -443,13 +469,13 @@ public:
 #ifdef USE_SOUND_VOLUME
        void set_sound_device_volume(int ch, int decibel_l, int decibel_r) override;
 #endif
-       
+
        // notify key
        void key_down(int code, bool repeat) override;
        void key_up(int code) override;
        bool get_caps_locked() override;
        bool get_kana_locked() override;
-       
+
        // user interface
        void open_floppy_disk(int drv, const _TCHAR* file_path, int bank) override;
        void close_floppy_disk(int drv) override;
@@ -470,17 +496,17 @@ public:
        uint32_t is_compact_disc_accessed() override;
 #endif
        bool is_frame_skippable() override;
-       
+
        double get_current_usec() override;
        uint64_t get_current_clock_uint64() override;
-       
+
        void update_config() override;
        bool process_state(FILEIO* state_fio, bool loading);
-       
+
        // ----------------------------------------
        // for each device
        // ----------------------------------------
-       
+
        // devices
        //DEVICE* get_device(int id) override;
        //DEVICE* dummy;
index 028d006..8f0499a 100644 (file)
@@ -250,12 +250,12 @@ VM::VM(EMU_TEMPLATE* parent_emu) : VM_TEMPLATE(parent_emu)
 #endif
        rtc = new UPD1990A(this, emu);
 #if defined(SUPPORT_2HD_FDD_IF)
-#if defined(_PC9801) || defined(_PC9801E)
+#if /*defined(_PC9801) || */ defined(_PC9801E)
        if((config.dipswitch & DIPSWITCH_2HD) && FILEIO::IsFileExisting(create_local_path(_T("2HDIF.ROM")))) {
 #endif
                fdc_2hd = new UPD765A(this, emu);
                fdc_2hd->set_device_name(_T("uPD765A FDC (2HD I/F)"));
-#if defined(_PC9801) || defined(_PC9801E)
+#if /*defined(_PC9801) || */ defined(_PC9801E)
        } else {
                fdc_2hd = NULL;
        }
index 0d9cb65..eeada7b 100644 (file)
 #endif
 
 #define USE_DIPSWITCH
-#define DIPSWITCH_DEFAULT_HI   (4 | 8)
+#define DIPSWITCH_DEFAULT_HI   (4 | 8 | 16)
 #define DIPSWITCH_DEFAULT      (DIPSWITCH_DEFAULT_LO | (DIPSWITCH_DEFAULT_HI << 16))
 
 #if defined(SUPPORT_SASI_IF) || defined(SUPPORT_SCSI_IF) || defined(SUPPORT_IDE_IF)
index 17fb52a..0527a7c 100644 (file)
@@ -139,7 +139,7 @@ void UPD765A::initialize()
        }
        //_fdc_debug_log = osd->check_feature(_T("_FDC_DEBUG_LOG"));
        _fdc_debug_log = config.special_debug_fdc;
-       
+
        _upd765a_dma_mode = osd->check_feature(_T("UPD765A_DMA_MODE"));
        _upd765a_ext_drvsel = osd->check_feature(_T("UPD765A_EXT_DRVSEL"));
        _upd765a_sence_intstat_result = osd->check_feature(_T("UPD765A_SENCE_INTSTAT_RESULT"));
@@ -147,13 +147,13 @@ void UPD765A::initialize()
        _upd765a_no_st0_at_for_seek = osd->check_feature(_T("UPD765A_NO_ST0_AT_FOR_SEEK"));
        _upd765a_wait_result7 = osd->check_feature(_T("UPD765A_WAIT_RESULT7"));
        _upd765a_no_st1_en_or_for_result7 = osd->check_feature(_T("UPD765A_NO_ST1_EN_OR_FOR_RESULT7"));
-       
+
        // initialize d88 handler
        for(int i = 0; i < 4; i++) {
                disk[i] = new DISK(emu);
                disk[i]->set_device_name(_T("%s/Disk #%d"), this_device_name, i + 1);
        }
-       
+
        // initialize noise
        if(d_noise_seek != NULL) {
                d_noise_seek->set_device_name(_T("Noise Player (FDD Seek)"));
@@ -174,11 +174,11 @@ void UPD765A::initialize()
                d_noise_head_up->load_wav_file(_T("HEADUP.WAV"));
                d_noise_head_up->set_mute(!config.sound_noise_fdd);
        }
-       
+
        // initialize fdc
        memset(fdc, 0, sizeof(fdc));
        memset(buffer, 0, sizeof(buffer));
-       
+
        phase = prevphase = PHASE_IDLE;
        status = S_RQM;
        seekstat = 0;
@@ -195,7 +195,7 @@ void UPD765A::initialize()
 //#ifdef UPD765A_DMA_MODE
        dma_data_lost = false;
 //#endif
-       
+
        set_irq(false);
        set_drq(false);
 //#ifdef UPD765A_EXT_DRVSEL
@@ -206,7 +206,7 @@ void UPD765A::initialize()
                set_hdu(0);
        }
 //#endif
-       
+
        // index hole event
        if(outputs_index.count) {
                register_event(this, EVENT_INDEX, 4, true, NULL);
@@ -243,7 +243,7 @@ void UPD765A::reset()
 static const _TCHAR* get_command_name(uint8_t data)
 {
        static _TCHAR name[16];
-       
+
        switch(data & 0x1f) {
        case 0x02:
                my_stprintf_s(name, 16, _T("RD DIAGNOSTIC"));
@@ -295,7 +295,7 @@ void UPD765A::write_io8(uint32_t addr, uint32_t data)
                // fdc data
                if((status & (S_RQM | S_DIO)) == S_RQM) {
                        status &= ~S_RQM;
-                       
+
                        switch(phase) {
                        case PHASE_IDLE:
 //#ifdef _FDC_DEBUG_LOG
@@ -317,7 +317,7 @@ void UPD765A::write_io8(uint32_t addr, uint32_t data)
                                        process_cmd(command & 0x1f);
                                }
                                break;
-                               
+
                        case PHASE_WRITE:
 //#ifdef _FDC_DEBUG_LOG
                                if(_fdc_debug_log) this->force_out_debug_log(_T("FDC: WRITE=%2x\n"), data); // emu->force_out_debug_log()
@@ -331,7 +331,7 @@ void UPD765A::write_io8(uint32_t addr, uint32_t data)
                                }
                                fdc[hdu & DRIVE_MASK].access = true;
                                break;
-                               
+
                        case PHASE_SCAN:
                                if(data != 0xff) {
                                        if(((command & 0x1f) == 0x11 && *bufptr != data) ||
@@ -361,7 +361,7 @@ uint32_t UPD765A::read_io8(uint32_t addr)
                if((status & (S_RQM | S_DIO)) == (S_RQM | S_DIO)) {
                        uint8_t data;
                        status &= ~S_RQM;
-                       
+
                        switch(phase) {
                        case PHASE_RESULT:
                                data = *bufptr++;
@@ -387,7 +387,7 @@ uint32_t UPD765A::read_io8(uint32_t addr)
                                        shift_to_idle();
                                }
                                return data;
-                               
+
                        case PHASE_READ:
                                data = *bufptr++;
 //#ifdef _FDC_DEBUG_LOG
@@ -516,7 +516,7 @@ void UPD765A::event_callback(int event_id, int err)
        } else if(event_id == EVENT_DRQ) {
                drq_id = -1;
                status |= S_RQM;
-               
+
                int drv = hdu & DRIVE_MASK;
                fdc[drv].cur_position = (fdc[drv].cur_position + 1) % disk[drv]->get_track_size();
                fdc[drv].prev_clock = prev_drq_clock = get_current_clock();
@@ -778,7 +778,7 @@ void UPD765A::seek(int drv, int trk)
                steptime /= 2;
        }
        int seektime = (trk == fdc[drv].track) ? 120 : steptime * abs(trk - fdc[drv].track) + 500; // usec
-       
+
        if(drv >= _max_drive) {
                // invalid drive number
                fdc[drv].result = (drv & DRIVE_MASK) | ST0_SE | ST0_NR | ST0_AT;
@@ -815,7 +815,7 @@ void UPD765A::seek(int drv, int trk)
 void UPD765A::seek_event(int drv)
 {
        int trk = fdc[drv].track;
-       
+
        if(drv >= _max_drive) {
                fdc[drv].result = (drv & DRIVE_MASK) | ST0_SE | ST0_NR | ST0_AT;
        } else if(force_ready || disk[drv]->inserted) {
@@ -833,7 +833,7 @@ void UPD765A::seek_event(int drv)
        }
        set_irq(true);
        seekstat &= ~(1 << drv);
-       
+
        // reset dsch flag
        disk[drv]->changed = false;
 }
@@ -1079,7 +1079,7 @@ void UPD765A::read_diagnostic()
        int drv = hdu & DRIVE_MASK;
        int trk = fdc[drv].track;
        int side = (hdu >> 2) & 1;
-       
+
        result = check_cond(false);
        if(result & ST1_MA) {
                REGISTER_PHASE_EVENT(PHASE_EXEC, 10000);
@@ -1110,13 +1110,13 @@ void UPD765A::read_diagnostic()
                        result = ST1_ND;
                }
        }
-       
+
        // FIXME: we need to consider the case that the first sector does not have a data field
        // start reading at the first sector data
        memcpy(buffer, disk[drv]->track + disk[drv]->data_position[0], disk[drv]->get_track_size() - disk[drv]->data_position[0]);
        memcpy(buffer + disk[drv]->get_track_size() - disk[drv]->data_position[0], disk[drv]->track, disk[drv]->data_position[0]);
        fdc[drv].next_trans_position = disk[drv]->data_position[0];
-       
+
        shift_to_read(0x80 << min(id[3], (uint8_t)7));
        return;
 }
@@ -1126,7 +1126,7 @@ uint32_t UPD765A::read_sector()
        int drv = hdu & DRIVE_MASK;
        int trk = fdc[drv].track;
        int side = (hdu >> 2) & 1;
-       
+
        // get sector counts in the current track
        if(!disk[drv]->make_track(trk, side)) {
 //#ifdef _FDC_DEBUG_LOG
@@ -1173,7 +1173,7 @@ uint32_t UPD765A::read_sector()
                        memcpy(buffer + disk[drv]->get_track_size() - disk[drv]->data_position[i], disk[drv]->track, disk[drv]->data_position[i]);
                }
                fdc[drv].next_trans_position = disk[drv]->data_position[i];
-               
+
                if((disk[drv]->addr_crc_error || disk[drv]->data_crc_error) && !disk[drv]->ignore_crc()) {
                        return ST0_AT | ST1_DE | (disk[drv]->data_crc_error ? ST2_DD : 0);
                }
@@ -1200,7 +1200,7 @@ uint32_t UPD765A::write_sector(bool deleted)
        int drv = hdu & DRIVE_MASK;
        int trk = fdc[drv].track;
        int side = (hdu >> 2) & 1;
-       
+
        if(disk[drv]->write_protected) {
                return ST0_AT | ST1_NW;
        }
@@ -1245,7 +1245,7 @@ uint32_t UPD765A::find_id()
        int drv = hdu & DRIVE_MASK;
        int trk = fdc[drv].track;
        int side = (hdu >> 2) & 1;
-       
+
        // get sector counts in the current track
        if(!disk[drv]->get_track(trk, side)) {
                return ST0_AT | ST1_MA;
@@ -1422,7 +1422,7 @@ uint32_t UPD765A::read_id()
        int drv = hdu & DRIVE_MASK;
        int trk = fdc[drv].track;
        int side = (hdu >> 2) & 1;
-       
+
        // get sector counts in the current track
        if(!disk[drv]->get_track(trk, side)) {
                return ST0_AT | ST1_MA;
@@ -1434,7 +1434,7 @@ uint32_t UPD765A::read_id()
        if(!secnum) {
                return ST0_AT | ST1_MA;
        }
-       
+
        // first found sector
        int position = get_cur_position(drv), first_sector = 0;
        if(position > disk[drv]->sync_position[secnum - 1]) {
@@ -1466,17 +1466,17 @@ uint32_t UPD765A::write_id()
        int trk = fdc[drv].track;
        int side = (hdu >> 2) & 1;
        int length = 0x80 << min(id[3], (uint8_t)7);
-       
+
        if((result = check_cond(true)) != 0) {
                return result;
        }
        if(disk[drv]->write_protected) {
                return ST0_AT | ST1_NW;
        }
-       
+
        disk[drv]->format_track(trk, side);
        disk[drv]->track_mfm = ((command & 0x40) != 0);
-       
+
        for(int i = 0; i < eot && i < 256; i++) {
                for(int j = 0; j < 4; j++) {
                        id[j] = buffer[4 * i + j];
@@ -1497,7 +1497,7 @@ void UPD765A::cmd_specify()
                head_unload_time = buffer[1] >> 1;
                no_dma_mode = ((buffer[1] & 1) != 0);
                shift_to_idle();
-               status = 0x80;//0xff;
+               status = S_RQM;//0xff;
                break;
        }
 }
@@ -1534,7 +1534,7 @@ void UPD765A::shift_to_read(int length)
        status = S_RQM | S_DIO | S_NDM | S_CB;
        bufptr = buffer;
        count = length;
-       
+
        int drv = hdu & DRIVE_MASK;
        fdc[drv].cur_position = fdc[drv].next_trans_position;
        fdc[drv].prev_clock = prev_drq_clock = get_current_clock();
@@ -1547,7 +1547,7 @@ void UPD765A::shift_to_write(int length)
        status = S_RQM | S_NDM | S_CB;
        bufptr = buffer;
        count = length;
-       
+
        int drv = hdu & DRIVE_MASK;
        fdc[drv].cur_position = fdc[drv].next_trans_position;
        fdc[drv].prev_clock = prev_drq_clock = get_current_clock();
@@ -1561,7 +1561,7 @@ void UPD765A::shift_to_scan(int length)
        result = ST2_SH;
        bufptr = buffer;
        count = length;
-       
+
        int drv = hdu & DRIVE_MASK;
        fdc[drv].cur_position = fdc[drv].next_trans_position;
        fdc[drv].prev_clock = prev_drq_clock = get_current_clock();
@@ -1592,7 +1592,7 @@ void UPD765A::shift_to_result7()
                }
        } else {
                shift_to_result7_event();
-       }               
+       }
        finish_transfer();
 }
 
@@ -1616,7 +1616,7 @@ void UPD765A::shift_to_result7_event()
 void UPD765A::start_transfer()
 {
        int drv = hdu & DRIVE_MASK;
-       
+
        if(head_unload_id[drv] != -1) {
                cancel_event(this, head_unload_id[drv]);
                head_unload_id[drv] = -1;
@@ -1630,7 +1630,7 @@ void UPD765A::start_transfer()
 void UPD765A::finish_transfer()
 {
        int drv = hdu & DRIVE_MASK;
-       
+
        if(fdc[drv].head_load) {
                if(head_unload_id[drv] != -1) {
                        cancel_event(this, head_unload_id[drv]);
@@ -1657,17 +1657,17 @@ double UPD765A::get_usec_to_exec_phase()
        int drv = hdu & DRIVE_MASK;
        int trk = fdc[drv].track;
        int side = (hdu >> 2) & 1;
-       
+
        if(/*disk[drv]->no_skew &&*/ !disk[drv]->correct_timing()) {
                // XXX: this image may be a standard image or coverted from a standard image and skew may be incorrect,
                // so use the constant period to go to exec phase
                return 100;
        }
-       
+
        // search target sector
        int position = get_cur_position(drv);
        int trans_position = -1, sync_position;
-       
+
        if(disk[drv]->get_track(trk, side) && disk[drv]->sector_num.sd != 0) {
                if((command & 0x1f) == 0x02) {
                        // read diagnotics
@@ -1692,7 +1692,7 @@ double UPD765A::get_usec_to_exec_phase()
                // sector not found
                return 100;
        }
-       
+
        // get current position
        int bytes = trans_position - position;
        if(sync_position < position) {
@@ -1839,14 +1839,14 @@ bool UPD765A::get_debug_regs_info(_TCHAR *buffer, size_t buffer_len)
        int drv = hdu & DRIVE_MASK;
        int side = (hdu >> 2) & 1;
        int position = get_cur_position(drv);
-       
+
        my_stprintf_s(buffer, buffer_len,
        _T("CMD=%02X (%s) HDU=%02X C=%02X H=%02X R=%02X N=%02X EOT=%02X GPL=%02X DTL=%02X\n")
        _T("UNIT: DRIVE=%d TRACK=%2d(%2d) SIDE=%d POSITION=%5d/%d"),
        command, get_command_name(command), hdu,id[0], id[1], id[2], id[3], eot, gpl, dtl,
        drv, fdc[drv].track, fdc[drv].cur_track, side,
        position, disk[drv]->get_track_size());
-       
+
        for(int i = 0; i < disk[drv]->sector_num.sd; i++) {
                uint8_t c, h, r, n;
                int length;
@@ -1930,4 +1930,3 @@ bool UPD765A::process_state(FILEIO* state_fio, bool loading)
        state_fio->StateValue(prev_drq_clock);
        return true;
 }
-
index 10bfbd2..1dbe431 100644 (file)
@@ -2391,9 +2391,15 @@ void update_popup_menu(HWND hWnd, HMENU hMenu)
        }
 #endif
 #endif
-#ifdef USE_BOOT_MODE
+#if defined(USE_BOOT_MODE) || defined(USE_DIPSWITCH)
        else if(id >= ID_VM_BOOT_MENU_START && id <= ID_VM_BOOT_MENU_END) {
-               update_vm_boot_menu(hMenu);
+               #ifdef USE_BOOT_MODE
+                       update_vm_boot_menu(hMenu);
+               #endif
+               #ifdef USE_DIPSWITCH
+                       // dipswitch may be in sound menu
+                       update_vm_dipswitch_menu(hMenu);
+               #endif
        }
 #endif
 #ifdef USE_CPU_TYPE
index 2994ba4..1fc79bd 100644 (file)
                                        </FileConfiguration>\r
                                </File>\r
                                <File\r
+                                       RelativePath="..\src\vm\i386_dasm.cpp"\r
+                                       >\r
+                                       <FileConfiguration\r
+                                               Name="Debug|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration\r
+                                               Name="Release|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File\r
                                        RelativePath="..\src\vm\i8251.cpp"\r
                                        >\r
                                        <FileConfiguration\r
                                        </FileConfiguration>\r
                                </File>\r
                                <File\r
+                                       RelativePath="..\src\vm\i8259.cpp"\r
+                                       >\r
+                                       <FileConfiguration\r
+                                               Name="Debug|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration\r
+                                               Name="Release|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\src\vm\i86.cpp"\r
+                                       >\r
+                                       <FileConfiguration\r
+                                               Name="Debug|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration\r
+                                               Name="Release|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\src\vm\io.cpp"\r
+                                       >\r
+                                       <FileConfiguration\r
+                                               Name="Debug|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration\r
+                                               Name="Release|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\src\vm\memory.cpp"\r
+                                       >\r
+                                       <FileConfiguration\r
+                                               Name="Debug|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration\r
+                                               Name="Release|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File\r
                                        RelativePath="..\src\vm\noise.cpp"\r
                                        >\r
                                        <FileConfiguration\r
                                        </FileConfiguration>\r
                                </File>\r
                                <File\r
+                                       RelativePath="..\src\vm\v30_dasm.cpp"\r
+                                       >\r
+                                       <FileConfiguration\r
+                                               Name="Debug|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration\r
+                                               Name="Release|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File\r
                                        RelativePath="..\src\vm\ym2203.cpp"\r
                                        >\r
                                        <FileConfiguration\r
                                        >\r
                                </File>\r
                                <File\r
+                                       RelativePath="..\src\vm\i386_dasm.h"\r
+                                       >\r
+                               </File>\r
+                               <File\r
                                        RelativePath="..\src\vm\i8251.h"\r
                                        >\r
                                </File>\r
                                        >\r
                                </File>\r
                                <File\r
+                                       RelativePath="..\src\vm\i8259.h"\r
+                                       >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\src\vm\i86.h"\r
+                                       >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\src\vm\io.h"\r
+                                       >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\src\vm\memory.h"\r
+                                       >\r
+                               </File>\r
+                               <File\r
                                        RelativePath="..\src\vm\noise.h"\r
                                        >\r
                                </File>\r
                                        >\r
                                </File>\r
                                <File\r
+                                       RelativePath="..\src\vm\v30_dasm.h"\r
+                                       >\r
+                               </File>\r
+                               <File\r
                                        RelativePath="..\src\vm\vm.h"\r
                                        >\r
                                </File>\r
index a7d2d66..51725e8 100644 (file)
                                        </FileConfiguration>\r
                                </File>\r
                                <File\r
+                                       RelativePath="..\src\vm\i386_dasm.cpp"\r
+                                       >\r
+                                       <FileConfiguration\r
+                                               Name="Debug|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration\r
+                                               Name="Release|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File\r
                                        RelativePath="..\src\vm\i8251.cpp"\r
                                        >\r
                                        <FileConfiguration\r
                                        </FileConfiguration>\r
                                </File>\r
                                <File\r
+                                       RelativePath="..\src\vm\i8259.cpp"\r
+                                       >\r
+                                       <FileConfiguration\r
+                                               Name="Debug|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration\r
+                                               Name="Release|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\src\vm\i86.cpp"\r
+                                       >\r
+                                       <FileConfiguration\r
+                                               Name="Debug|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration\r
+                                               Name="Release|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\src\vm\io.cpp"\r
+                                       >\r
+                                       <FileConfiguration\r
+                                               Name="Debug|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration\r
+                                               Name="Release|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\src\vm\memory.cpp"\r
+                                       >\r
+                                       <FileConfiguration\r
+                                               Name="Debug|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration\r
+                                               Name="Release|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File\r
                                        RelativePath="..\src\vm\noise.cpp"\r
                                        >\r
                                        <FileConfiguration\r
                                        </FileConfiguration>\r
                                </File>\r
                                <File\r
+                                       RelativePath="..\src\vm\v30_dasm.cpp"\r
+                                       >\r
+                                       <FileConfiguration\r
+                                               Name="Debug|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration\r
+                                               Name="Release|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File\r
                                        RelativePath="..\src\vm\ym2203.cpp"\r
                                        >\r
                                        <FileConfiguration\r
                                        >\r
                                </File>\r
                                <File\r
+                                       RelativePath="..\src\vm\i386_dasm.h"\r
+                                       >\r
+                               </File>\r
+                               <File\r
                                        RelativePath="..\src\vm\i8251.h"\r
                                        >\r
                                </File>\r
                                        >\r
                                </File>\r
                                <File\r
+                                       RelativePath="..\src\vm\i8259.h"\r
+                                       >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\src\vm\i86.h"\r
+                                       >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\src\vm\io.h"\r
+                                       >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\src\vm\memory.h"\r
+                                       >\r
+                               </File>\r
+                               <File\r
                                        RelativePath="..\src\vm\noise.h"\r
                                        >\r
                                </File>\r
                                        >\r
                                </File>\r
                                <File\r
+                                       RelativePath="..\src\vm\v30_dasm.h"\r
+                                       >\r
+                               </File>\r
+                               <File\r
                                        RelativePath="..\src\vm\vm.h"\r
                                        >\r
                                </File>\r
index da7ae11..d2132b5 100644 (file)
     <ClCompile Include="..\src\vm\fmgen\fmtimer.cpp" />\r
     <ClCompile Include="..\src\vm\fmgen\opna.cpp" />\r
     <ClCompile Include="..\src\vm\fmgen\psg.cpp" />\r
+    <ClCompile Include="..\src\vm\i386_dasm.cpp" />\r
     <ClCompile Include="..\src\vm\i8251.cpp" />\r
     <ClCompile Include="..\src\vm\i8253.cpp" />\r
     <ClCompile Include="..\src\vm\i8255.cpp" />\r
+    <ClCompile Include="..\src\vm\i8259.cpp" />\r
+    <ClCompile Include="..\src\vm\i86.cpp" />\r
+    <ClCompile Include="..\src\vm\io.cpp" />\r
+    <ClCompile Include="..\src\vm\memory.cpp" />\r
     <ClCompile Include="..\src\vm\noise.cpp" />\r
     <ClCompile Include="..\src\vm\pc80s31k.cpp" />\r
     <ClCompile Include="..\src\vm\pc8801\diskio.cpp" />\r
     <ClCompile Include="..\src\vm\prnfile.cpp" />\r
     <ClCompile Include="..\src\vm\upd1990a.cpp" />\r
     <ClCompile Include="..\src\vm\upd765a.cpp" />\r
+    <ClCompile Include="..\src\vm\v30_dasm.cpp" />\r
     <ClCompile Include="..\src\vm\ym2203.cpp" />\r
     <ClCompile Include="..\src\vm\z80.cpp" />\r
     <ClCompile Include="..\src\win32\osd.cpp" />\r
     <ClInclude Include="..\src\vm\fmgen\misc.h" />\r
     <ClInclude Include="..\src\vm\fmgen\opna.h" />\r
     <ClInclude Include="..\src\vm\fmgen\psg.h" />\r
+    <ClInclude Include="..\src\vm\i386_dasm.h" />\r
     <ClInclude Include="..\src\vm\i8251.h" />\r
     <ClInclude Include="..\src\vm\i8253.h" />\r
     <ClInclude Include="..\src\vm\i8255.h" />\r
+    <ClInclude Include="..\src\vm\i8259.h" />\r
+    <ClInclude Include="..\src\vm\i86.h" />\r
+    <ClInclude Include="..\src\vm\io.h" />\r
+    <ClInclude Include="..\src\vm\memory.h" />\r
     <ClInclude Include="..\src\vm\noise.h" />\r
     <ClInclude Include="..\src\vm\pc80s31k.h" />\r
     <ClInclude Include="..\src\vm\pc8801\diskio.h" />\r
     <ClInclude Include="..\src\vm\prnfile.h" />\r
     <ClInclude Include="..\src\vm\upd1990a.h" />\r
     <ClInclude Include="..\src\vm\upd765a.h" />\r
+    <ClInclude Include="..\src\vm\v30_dasm.h" />\r
     <ClInclude Include="..\src\vm\vm.h" />\r
     <ClInclude Include="..\src\vm\vm_template.h" />\r
     <ClInclude Include="..\src\vm\ym2203.h" />\r
index 5147bd6..c36c033 100644 (file)
     <ClCompile Include="..\src\vm\i8251.cpp">\r
       <Filter>Source Files\VM Common Source Files</Filter>\r
     </ClCompile>\r
+    <ClCompile Include="..\src\vm\i386_dasm.cpp">\r
+      <Filter>Source Files\VM Common Source Files</Filter>\r
+    </ClCompile>\r
     <ClCompile Include="..\src\vm\i8253.cpp">\r
       <Filter>Source Files\VM Common Source Files</Filter>\r
     </ClCompile>\r
     <ClCompile Include="..\src\vm\i8255.cpp">\r
       <Filter>Source Files\VM Common Source Files</Filter>\r
     </ClCompile>\r
+    <ClCompile Include="..\src\vm\i8259.cpp">\r
+      <Filter>Source Files\VM Common Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\src\vm\i86.cpp">\r
+      <Filter>Source Files\VM Common Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\src\vm\io.cpp">\r
+      <Filter>Source Files\VM Common Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\src\vm\memory.cpp">\r
+      <Filter>Source Files\VM Common Source Files</Filter>\r
+    </ClCompile>\r
     <ClCompile Include="..\src\vm\noise.cpp">\r
       <Filter>Source Files\VM Common Source Files</Filter>\r
     </ClCompile>\r
     <ClCompile Include="..\src\vm\upd765a.cpp">\r
       <Filter>Source Files\VM Common Source Files</Filter>\r
     </ClCompile>\r
+    <ClCompile Include="..\src\vm\v30_dasm.cpp">\r
+      <Filter>Source Files\VM Common Source Files</Filter>\r
+    </ClCompile>\r
     <ClCompile Include="..\src\vm\ym2203.cpp">\r
       <Filter>Source Files\VM Common Source Files</Filter>\r
     </ClCompile>\r
     <ClInclude Include="..\src\vm\event.h">\r
       <Filter>Header Files\VM Common Header Files</Filter>\r
     </ClInclude>\r
+    <ClInclude Include="..\src\vm\i386_dasm.h">\r
+      <Filter>Header Files\VM Common Header Files</Filter>\r
+    </ClInclude>\r
     <ClInclude Include="..\src\vm\i8251.h">\r
       <Filter>Header Files\VM Common Header Files</Filter>\r
     </ClInclude>\r
     <ClInclude Include="..\src\vm\i8255.h">\r
       <Filter>Header Files\VM Common Header Files</Filter>\r
     </ClInclude>\r
+    <ClInclude Include="..\src\vm\i8259.h">\r
+      <Filter>Header Files\VM Common Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\src\vm\i86.h">\r
+      <Filter>Header Files\VM Common Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\src\vm\io.h">\r
+      <Filter>Header Files\VM Common Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\src\vm\memory.h">\r
+      <Filter>Header Files\VM Common Header Files</Filter>\r
+    </ClInclude>\r
     <ClInclude Include="..\src\vm\noise.h">\r
       <Filter>Header Files\VM Common Header Files</Filter>\r
     </ClInclude>\r
     <ClInclude Include="..\src\vm\upd765a.h">\r
       <Filter>Header Files\VM Common Header Files</Filter>\r
     </ClInclude>\r
+    <ClInclude Include="..\src\vm\v30_dasm.h">\r
+      <Filter>Header Files\VM Common Header Files</Filter>\r
+    </ClInclude>\r
     <ClInclude Include="..\src\vm\vm.h">\r
       <Filter>Header Files\VM Common Header Files</Filter>\r
     </ClInclude>\r
index 463ace8..e1f9f84 100644 (file)
     <ClCompile Include="..\src\vm\fmgen\fmtimer.cpp" />\r
     <ClCompile Include="..\src\vm\fmgen\opna.cpp" />\r
     <ClCompile Include="..\src\vm\fmgen\psg.cpp" />\r
+    <ClCompile Include="..\src\vm\i386_dasm.cpp" />\r
     <ClCompile Include="..\src\vm\i8251.cpp" />\r
     <ClCompile Include="..\src\vm\i8253.cpp" />\r
     <ClCompile Include="..\src\vm\i8255.cpp" />\r
+    <ClCompile Include="..\src\vm\i8259.cpp" />\r
+    <ClCompile Include="..\src\vm\i86.cpp" />\r
+    <ClCompile Include="..\src\vm\io.cpp" />\r
+    <ClCompile Include="..\src\vm\memory.cpp" />\r
     <ClCompile Include="..\src\vm\noise.cpp" />\r
     <ClCompile Include="..\src\vm\pc80s31k.cpp" />\r
     <ClCompile Include="..\src\vm\pc8801\diskio.cpp" />\r
     <ClCompile Include="..\src\vm\prnfile.cpp" />\r
     <ClCompile Include="..\src\vm\upd1990a.cpp" />\r
     <ClCompile Include="..\src\vm\upd765a.cpp" />\r
+    <ClCompile Include="..\src\vm\v30_dasm.cpp" />\r
     <ClCompile Include="..\src\vm\ym2203.cpp" />\r
     <ClCompile Include="..\src\vm\z80.cpp" />\r
     <ClCompile Include="..\src\win32\osd.cpp" />\r
     <ClInclude Include="..\src\vm\fmgen\misc.h" />\r
     <ClInclude Include="..\src\vm\fmgen\opna.h" />\r
     <ClInclude Include="..\src\vm\fmgen\psg.h" />\r
+    <ClInclude Include="..\src\vm\i386_dasm.h" />\r
     <ClInclude Include="..\src\vm\i8251.h" />\r
     <ClInclude Include="..\src\vm\i8253.h" />\r
     <ClInclude Include="..\src\vm\i8255.h" />\r
+    <ClInclude Include="..\src\vm\i8259.h" />\r
+    <ClInclude Include="..\src\vm\i86.h" />\r
+    <ClInclude Include="..\src\vm\io.h" />\r
+    <ClInclude Include="..\src\vm\memory.h" />\r
     <ClInclude Include="..\src\vm\noise.h" />\r
     <ClInclude Include="..\src\vm\pc80s31k.h" />\r
     <ClInclude Include="..\src\vm\pc8801\diskio.h" />\r
     <ClInclude Include="..\src\vm\prnfile.h" />\r
     <ClInclude Include="..\src\vm\upd1990a.h" />\r
     <ClInclude Include="..\src\vm\upd765a.h" />\r
+    <ClInclude Include="..\src\vm\v30_dasm.h" />\r
     <ClInclude Include="..\src\vm\vm.h" />\r
     <ClInclude Include="..\src\vm\vm_template.h" />\r
     <ClInclude Include="..\src\vm\ym2203.h" />\r
index 3eb61b3..76198e8 100644 (file)
     <ClCompile Include="..\src\vm\i8251.cpp">\r
       <Filter>Source Files\VM Common Source Files</Filter>\r
     </ClCompile>\r
+    <ClCompile Include="..\src\vm\i386_dasm.cpp">\r
+      <Filter>Source Files\VM Common Source Files</Filter>\r
+    </ClCompile>\r
     <ClCompile Include="..\src\vm\i8253.cpp">\r
       <Filter>Source Files\VM Common Source Files</Filter>\r
     </ClCompile>\r
     <ClCompile Include="..\src\vm\i8255.cpp">\r
       <Filter>Source Files\VM Common Source Files</Filter>\r
     </ClCompile>\r
+    <ClCompile Include="..\src\vm\i8259.cpp">\r
+      <Filter>Source Files\VM Common Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\src\vm\i86.cpp">\r
+      <Filter>Source Files\VM Common Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\src\vm\io.cpp">\r
+      <Filter>Source Files\VM Common Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\src\vm\memory.cpp">\r
+      <Filter>Source Files\VM Common Source Files</Filter>\r
+    </ClCompile>\r
     <ClCompile Include="..\src\vm\noise.cpp">\r
       <Filter>Source Files\VM Common Source Files</Filter>\r
     </ClCompile>\r
     <ClCompile Include="..\src\vm\upd765a.cpp">\r
       <Filter>Source Files\VM Common Source Files</Filter>\r
     </ClCompile>\r
+    <ClCompile Include="..\src\vm\v30_dasm.cpp">\r
+      <Filter>Source Files\VM Common Source Files</Filter>\r
+    </ClCompile>\r
     <ClCompile Include="..\src\vm\ym2203.cpp">\r
       <Filter>Source Files\VM Common Source Files</Filter>\r
     </ClCompile>\r
     <ClInclude Include="..\src\vm\event.h">\r
       <Filter>Header Files\VM Common Header Files</Filter>\r
     </ClInclude>\r
+    <ClInclude Include="..\src\vm\i386_dasm.h">\r
+      <Filter>Header Files\VM Common Header Files</Filter>\r
+    </ClInclude>\r
     <ClInclude Include="..\src\vm\i8251.h">\r
       <Filter>Header Files\VM Common Header Files</Filter>\r
     </ClInclude>\r
     <ClInclude Include="..\src\vm\i8255.h">\r
       <Filter>Header Files\VM Common Header Files</Filter>\r
     </ClInclude>\r
+    <ClInclude Include="..\src\vm\i8259.h">\r
+      <Filter>Header Files\VM Common Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\src\vm\i86.h">\r
+      <Filter>Header Files\VM Common Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\src\vm\io.h">\r
+      <Filter>Header Files\VM Common Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\src\vm\memory.h">\r
+      <Filter>Header Files\VM Common Header Files</Filter>\r
+    </ClInclude>\r
     <ClInclude Include="..\src\vm\noise.h">\r
       <Filter>Header Files\VM Common Header Files</Filter>\r
     </ClInclude>\r
     <ClInclude Include="..\src\vm\upd765a.h">\r
       <Filter>Header Files\VM Common Header Files</Filter>\r
     </ClInclude>\r
+    <ClInclude Include="..\src\vm\v30_dasm.h">\r
+      <Filter>Header Files\VM Common Header Files</Filter>\r
+    </ClInclude>\r
     <ClInclude Include="..\src\vm\vm.h">\r
       <Filter>Header Files\VM Common Header Files</Filter>\r
     </ClInclude>\r