OSDN Git Service

[VM] TRY:Use namespace {VMNAME} to separate around VMs. This feature still apply...
[csp-qt/common_source_project-fm7.git] / source / src / vm / fm7 / fm7_common.h
index a583637..dc28b48 100644 (file)
@@ -26,6 +26,7 @@ enum {
        FM7_MAINMEM_NULL, // NULL
        FM7_MAINMEM_ZERO, // ZERO
        FM7_MAINMEM_KANJI_LEVEL1,
+       FM7_MAINMEM_SHADOWRAM, // FM77
        
        FM7_MAINMEM_EXTRAM, //  192KB EXTRAM of FM-77, or 77AV40 768KB max. of 77AV40.
        
@@ -38,7 +39,7 @@ enum {
        FM7_MAINMEM_DICTROM,      // DICTIONARY CARD, ROM
        FM7_MAINMEM_77AV40_EXTRAROM,     // DICTIONARY CARD, Extra sub ROM
        FM7_MAINMEM_KANJI_LEVEL2,
-       
+       FM7_MAINMEM_KANJI_DUMMYADDR,
        FM7_MAINMEM_END
 };
 
@@ -48,11 +49,33 @@ enum {
 #define FM7_BOOTMODE_ROM4  3
 #define FM7_BOOTMODE_RAM   4
 
-#define FM7_DIPSW_CYCLESTEAL 0x00000001
-#define FM7_DIPSW_EXTRAM_AV  0x00000002
-#define FM7_DIPSW_DICTROM_AV 0x00000004
+#define FM7_DIPSW_CYCLESTEAL         0x00000001
+#define FM7_DIPSW_EXTRAM             0x00000002
+#define FM7_DIPSW_EXTRAM_AV          0x00000004
+#define FM7_DIPSW_DICTROM_AV         0x00000008
+#define FM7_DIPSW_FM8_PROTECT_FD0F   0x00000010
+#define FM7_DIPSW_CONNECT_KANJIROM   0x00000020
+#define FM7_DIPSW_CONNECT_320KFDC    0x00000040
+#define FM7_DIPSW_CONNECT_1MFDC      0x00000080
+// '1' is Auto 5 Key, '0' is Auto 8 Key
+#define FM7_DIPSW_SELECT_5_OR_8KEY   0x00000100 
+#define FM7_DIPSW_AUTO_5_OR_8KEY     0x00000200
+
+#define FM7_DIPSW_Z80_IRQ_ON         0x00001000
+#define FM7_DIPSW_Z80_FIRQ_ON        0x00002000
+#define FM7_DIPSW_Z80_NMI_ON         0x00004000
+
+#define FM7_DIPSW_JSUBCARD_ON        0x00010000
+#define FM7_DIPSW_Z80CARD_ON         0x00020000
+#define FM7_DIPSW_RS232C_ON          0x00040000
+#define FM7_DIPSW_MODEM_ON           0x00080000
+#define FM7_DIPSW_MIDI_ON            0x00100000
+#define FM7_DIPSW_FRAMESKIP          0x30000000
 
-#define MAINCLOCK_NORMAL    1794000
+#define FM7_DIPSW_SYNC_TO_HSYNC      0x80000000
+
+
+#define MAINCLOCK_NORMAL    1798000
 #define MAINCLOCK_MMR       1565000
 #define MAINCLOCK_FAST_MMR  2016000
 #define MAINCLOCK_SLOW      1095000
@@ -60,6 +83,7 @@ enum {
 #define SUBCLOCK_NORMAL     2000000
 #define SUBCLOCK_SLOW        999000
 
+#define JCOMMCARD_CLOCK     1228000
 
 #define FM7_SUBMEM_OFFSET_DPALETTE    0x0100000
 #define FM7_SUBMEM_OFFSET_APALETTE_B  0x0200000
@@ -67,10 +91,11 @@ enum {
 #define FM7_SUBMEM_OFFSET_APALETTE_G  0x0400000
 #define FM7_SUBMEM_OFFSET_APALETTE_HI 0x0500000
 #define FM7_SUBMEM_OFFSET_APALETTE_LO 0x0500001
-#define FM7_SUBMEM_VRAM_BANK0         0x1000000
-#define FM7_SUBMEM_VRAM_BANK1         0x2000000
-#define FM7_SUBMEM_VRAM_BANK2         0x3000000
-#define FM7_SUBMEM_VRAM_BANK3         0x4000000
+
+enum {
+       FM7_MONITOR_STANDARD = 0,
+       FM7_MONITOR_GREEN,
+};
 
 enum {
        EVENT_BEEP_OFF = 0,
@@ -80,6 +105,14 @@ enum {
        EVENT_TIMERIRQ_OFF,
        EVENT_FD_MOTOR_ON,
        EVENT_FD_MOTOR_OFF,
+       EVENT_FD_MOTOR_ON_2HD,
+       EVENT_FD_MOTOR_OFF_2HD,
+       EVENT_FM7MAINIO_ATTENTION,
+       EVENT_FM7MAINIO_SUBBUSY_SET,
+       EVENT_FM7MAINIO_SUBBUSY_RESET,
+       EVENT_MOUSE_TIMEOUT,
+       EVENT_FD_NMI_2HD,
+       
        EVENT_FM7SUB_DISPLAY_NMI = 32,
        EVENT_FM7SUB_DISPLAY_NMI_OFF,
        EVENT_FM7SUB_HDISP,
@@ -87,13 +120,15 @@ enum {
        EVENT_FM7SUB_VSTART,
        EVENT_FM7SUB_VSYNC,
        EVENT_FM7SUB_HALT,
-       EVENT_FM7SUB_CLR,
-       ID_KEYBOARD_RXRDY_OK = 64,
-       ID_KEYBOARD_RXRDY_BUSY,
-       ID_KEYBOARD_ACK,
-       ID_KEYBOARD_RTC_COUNTUP,
-       ID_KEYBOARD_AUTOREPEAT_FIRST = 0x200,
-       ID_KEYBOARD_AUTOREPEAT = 0x400
+       EVENT_FM7SUB_DELAY_BUSY,
+       EVENT_FM7SUB_CLR_CRTFLAG,
+       EVENT_FM7SUB_PROC,
+       EVENT_FM7SUB_CURSOR_BLINK,
+       EVENT_FM7SUB_TEXT_BLINK,
+       EVENT_PRINTER_RESET_COMPLETED,
+       EVENT_FM7MAINMEM_WAIT_START,
+       EVENT_FM7MAINMEM_WAIT_STOP,
+       EVENT_FM7SUB_CLEAR_DELAY,
 };
 
 
@@ -108,6 +143,7 @@ enum {
        FM7_SUBMEM_ZERO,
        // 77AV
        FM7_SUBMEM_VRAMBANK_1,  // $0000-$BFFF #2
+       FM7_SUBMEM_AV_HIDDEN_RAM, // $D500-$D7FF
        // 77AV : $E000-$FFFF
        FM7_SUBMEM_MONITOR_A,
        FM7_SUBMEM_MONITOR_B,
@@ -133,24 +169,48 @@ enum {
        FM7_MAINCLOCK_MMRSLOW,
        FM7_MAINCLOCK_MMRHIGH
 };
+enum {
+};
 
 enum {
-       FM7_MAINIO_IS_BASICROM = 0x100000,
+       FM7_MAINIO_IS_BASICROM = 0x200000,
        FM7_MAINIO_BOOTMODE,
+       FM7_MAINIO_BOOTRAM_RW,
        FM7_MAINIO_READ_FD0F,
+       FM7_MAINIO_PUSH_FD0F,
        FM7_MAINIO_CLOCKMODE,
        FM7_MAINIO_INITROM_ENABLED,
        FM7_MAINIO_EXTBANK,
        FM7_MAINIO_EXTROM,
        FM7_MAINIO_MODE320,
+       
        FM7_MAINIO_SUBMONITOR_ROM,
        FM7_MAINIO_SUBMONITOR_RAM,
+       
        FM7_MAINIO_MMR_ENABLED,
        FM7_MAINIO_FASTMMR_ENABLED,
        FM7_MAINIO_WINDOW_ENABLED,
        FM7_MAINIO_WINDOW_OFFSET,
        FM7_MAINIO_MMR_SEGMENT,
-       FM7_MAINIO_MMR_BANK = 0x100080,
+       FM7_MAINIO_MMR_EXTENDED,
+       FM7_MAINIO_WINDOW_FAST,
+       FM7_MAINIO_MEM_REFRESH_FAST,
+       
+       FM7_MAINIO_UART0_SYNDET,
+       FM7_MAINIO_UART0_RXRDY,
+       FM7_MAINIO_UART0_TXRDY,
+       FM7_MAINIO_UART0_DCD,
+       FM7_MAINIO_MODEM_SYNDET,
+       FM7_MAINIO_MODEM_RXRDY,
+       FM7_MAINIO_MODEM_TXRDY,
+       FM7_MAINIO_MIDI_SYNDET,
+       FM7_MAINIO_MIDI_RXRDY,
+       FM7_MAINIO_MIDI_TXRDY,
+       
+       FM7_JCOMMCARD_BUS_HALT,
+       
+       FM7_MAINIO_MMR_BANK = 0x200100,
+
 };
 
 enum {
@@ -158,7 +218,14 @@ enum {
        FM7_MAINIO_CMT_INVERT, // Set / reset invert cmt data.
        FM7_MAINIO_TIMERIRQ, // Timer from SUB.
        FM7_MAINIO_LPTIRQ,
+       FM7_MAINIO_LPT_BUSY,
+       FM7_MAINIO_LPT_ERROR,
+       FM7_MAINIO_LPT_ACK,
+       FM7_MAINIO_LPT_PAPER_EMPTY,
+       FM7_MAINIO_LPT_DET1,
+       FM7_MAINIO_LPT_DET2,
        FM7_MAINIO_KEYBOARDIRQ, 
+       FM7_MAINIO_KEYBOARDIRQ_MASK,
        FM7_MAINIO_PUSH_KEYBOARD,
        FM7_MAINIO_PUSH_BREAK, // FIRQ
        FM7_MAINIO_SUB_ATTENTION, // FIRQ
@@ -174,6 +241,22 @@ enum {
        FM7_MAINIO_JOYPORTB_CHANGED, // Joystick
        FM7_MAINIO_FDC_DRQ,
        FM7_MAINIO_FDC_IRQ,
+       FM7_MAINIO_KANJI1_ADDR_HIGH,
+       FM7_MAINIO_KANJI1_ADDR_LOW,
+       FM7_MAINIO_KANJI2_ADDR_HIGH,
+       FM7_MAINIO_KANJI2_ADDR_LOW,
+       FM7_MAINIO_HOT_RESET,
+       FM7_MAINIO_DMA_INT,
+       FM7_MAINIO_RUN_Z80,
+       FM7_MAINIO_RUN_6809,
+       
+       FM7_JOYSTICK_EMULATE_MOUSE_0,
+       FM7_JOYSTICK_EMULATE_MOUSE_1,
+       FM7_JOYSTICK_MOUSE_STROBE,
+
+       FM7_MAINIO_FDC_DRQ_2HD,
+       FM7_MAINIO_FDC_IRQ_2HD,
+       
 };
 // SUB
 enum {
@@ -181,6 +264,7 @@ enum {
        SIG_DISPLAY_HBLANK,
        SIG_DISPLAY_VSYNC,
        SIG_DISPLAY_DISPLAY,
+       SIG_DISPLAY_CLOCK,
        SIG_DISPLAY_DIGITAL_PALETTE,
        SIG_DISPLAY_ANALOG_PALETTE,
        SIG_DISPLAY_HALT,
@@ -192,17 +276,17 @@ enum {
        SIG_DISPLAY_X_WIDTH,
        SIG_DISPLAY_Y_HEIGHT,
        SIG_DISPLAY_EXTRA_MODE,
+       SIG_DISPLAY_STATREG_FD12,
        SIG_DISPLAY_MODE320,
-       SIG_DISPLAY_BANK_OFFSET
+       SIG_DISPLAY_BANK_OFFSET,
 };
 
 enum {
        DISPLAY_MODE_8_200L = 0,
        DISPLAY_MODE_8_400L,
-       DISPLAY_MODE_8_200L_TEXT,
-       DISPLAY_MODE_8_400L_TEXT,
        DISPLAY_MODE_4096,
-       DISPLAY_MODE_256k
+       DISPLAY_MODE_256k,
+       DISPLAY_MODE_1_400L,
 };
 
 enum {
@@ -220,9 +304,9 @@ enum {
        SIG_FM7_SUB_HALT = 0x2000,
        SIG_FM7_SUB_CANCEL,
        SIG_FM7_SUB_BANK,
-       SIG_FM7_SUB_MULTIPAGE,
        SIG_FM7_SUB_KEY_FIRQ,
-       SIG_FM7_SUB_USE_CLR
+       SIG_FM7_SUB_KEY_MASK,
+       //SIG_FM7_SUB_USE_CLR
 };
 
 // KEYBOARD
@@ -234,9 +318,11 @@ enum {
        SIG_FM7KEY_SET_KANALED, //
        SIG_FM7KEY_SET_CAPSLED, //
        SIG_FM7KEY_RXRDY,
-       SIG_FM7KEY_ACK,
-       // D431
-       SIG_FM7KEY_PUSH_TO_ENCODER
+       SIG_FM7KEY_ACK,         // D431
+       SIG_FM7KEY_BREAK_KEY,
+       SIG_FM7KEY_PUSH_TO_ENCODER,
+       SIG_FM7KEY_LED_STATUS,
+       SIG_FM7KEY_OVERRIDE_PRESS_BREAK,
 };
 
 enum {
@@ -244,5 +330,106 @@ enum {
        KEYMODE_16BETA,
        KEYMODE_SCAN
 };
+// KANJIROM
+enum {
+       KANJIROM_ADDR_HI = 0x10000,
+       KANJIROM_ADDR_LO,
+       KANJIROM_DATA_HI,
+       KANJIROM_DATA_LO,
+       KANJIROM_READSTAT,
+       KANJIROM_DIRECTADDR = 0x20000,
+};
+
+#define ROM_KANJI_CLASS1_FALLBACK "KANJI.ROM"
+#define ROM_KANJI_CLASS1          "KANJI1.ROM"
+#define ROM_KANJI_CLASS2          "KANJI2.ROM"
+
+#define ROM_FM8_SUBSYSTEM         "SUBSYS_8.ROM"
+#define ROM_FM7_SUBSYSTEM_TYPE_A  "SUBSYS_A.ROM"
+#define ROM_FM7_SUBSYSTEM_TYPE_B  "SUBSYS_B.ROM"
+#define ROM_FM7_SUBSYSTEM_TYPE_C  "SUBSYS_C.ROM"
+#define ROM_FM7_SUBSYSTEM_CG      "SUBSYSCG.ROM"
+
+// Support more BOOT ROMS for FM-8.See http://www.mindspring.com/~thasegaw/rpcg/fm8_boot.html .
+/*
+ * BOOT ORDER for FM-8:
+ * 0/4: BASIC
+ * 1/5: DOS 320K
+ * 2/6: BUBBLE
+ * 3/7: 8Inch SFD(SM11-15) or DEBUG(SM11-14).
+ * Note:
+ * Read SM11_15.ROM to BANK 0 to 3.
+ * Read SM11_14.ROM to BANK 4 to 7.
+ * If not read above, load some boot roms.
+ */
+
+#define ROM_FM8_BOOT_BASIC        "BOOT_BAS8.ROM"
+#define ROM_FM8_BOOT_DOS          "BOOT_DOS8.ROM"
+#define ROM_FM8_BOOT_BUBBLE       "BOOT_BBL8.ROM"
+#define ROM_FM8_BOOT_BUBBLE_128K  "BOOT_B128.ROM"
+#define ROM_FM8_BOOT_DOS_FD8      "BOOT_SFD8.ROM"
+#define ROM_FM8_BOOT_DEBUG        "BOOT_DEBUG8.ROM"
+#define ROM_FM8_SM11_14           "BOOT_SM11_14.ROM"
+#define ROM_FM8_SM11_15           "BOOT_SM11_15.ROM"
+
+#define ROM_FM8_FBASICV10         "FBASIC10.ROM"
+
+/*
+ * BOOT ORDER for FM-7:
+ * 0: BASIC
+ * 1: DOS 320K
+ * 2: BUBBLE
+ * 3: RESERVE (TL11-1x only).
+ * Note:
+ *  With eFMNEW7, if BOOT_TL11_12.ROM exists, load first this.
+ *  If not load, try to load BOOT_TL11_11.ROM (for eFM7/eFMNEW7).
+ *  If not load above, try to load boot roms.
+ */
+
+// See http://www.mindspring.com/~thasegaw/rpcg/fm7rom.html .
+#define ROM_FM7_BOOT_BASIC        "BOOT_BAS.ROM"
+#define ROM_FM7_BOOT_DOS          "BOOT_DOS.ROM"
+#define ROM_FM7_BOOT_MMR          "BOOT_MMR.ROM"
+#define ROM_FM7_BOOT_BUBBLE_7     "BOOTBBL7.ROM"
+#define ROM_FM7_BOOT_2HD          "BOOT_1MB.ROM"
+#define ROM_FM7_BOOT_TL11_11      "BOOT_TL11_11.ROM"
+#define ROM_FM7_BOOT_TL11_12      "BOOT_TL11_12.ROM"
+
+/*
+ * BOOT ORDER for FM-77:
+ * 0: BASIC
+ * 1: DOS 320K
+ * 2: BASIC MMR
+ * 3: DOS 1MB 2HD
+ * 4: RESERVE 1
+ * 5: BUBBLE 128K
+ * 6: BUBBLE 32K
+ * 7: RESERVE 2
+ * Note:
+ *  If BOOT_WB_11_12.ROM exists, load first this.
+ */
+
+#define ROM_FM77_BOOT_BUBBLE_128K "BOOT_B12.ROM"
+#define ROM_FM77_BOOT_WB11_12     "BOOT_WB11_12.ROM"
+
+#define ROM_FM7_FBASICV30          "FBASIC30.ROM"
+#define ROM_FM7_FBASICV30L00       "FBASIC300.ROM"
+#define ROM_FM7_FBASICV30L10       "FBASIC301.ROM"
+#define ROM_FM7_FBASICV30L20       "FBASIC302.ROM"
+
+#define ROM_FM77_400LINE_SUBSYS    "SUBSYSL4.ROM"
+#define ROM_FM77_400LINE_ANKCG     "ANKCG16.ROM"
+
+#define ROM_FM77AV_INITIATOR       "INITIATE.ROM"
+#define ROM_FM77AV_DICTIONARY      "DICROM.ROM"
+#define ROM_FM77AV40EX_EXTSUB      "EXTSUB.ROM"
+
+#define ROM_JCOMM_FIRMWARE         "JSUBMON.ROM"
+#define ROM_JCOMM_DICTIONARY       "DICROM.ROM"
+#define ROM_JCOMM_KANJI            "JSUBKANJI.ROM"
+
+
+#define RAM_JCOMM_BACKUP           "JCOMMCARD.bin"
+#define RAM_FM77AV_DIC_BACKUP      "USERDIC.DAT"
 
 #endif // _FM7_COMMON_H_