OSDN Git Service

[VM][FM77] Add initial support of 2HD (for FM-77).
[csp-qt/common_source_project-fm7.git] / source / src / vm / fm7 / fm7_common.h
1 /*
2  * Common definition of FM-7 [FM7_COMMON]
3  *  Author: K.Ohta
4  *  Date  : 2015.01.01-
5  *
6  */
7
8
9 #ifndef _FM7_COMMON_H_
10 #define _FM7_COMMON_H_
11
12 enum {
13         FM7_MAINMEM_OMOTE = 0, // $0000-$7FFF
14         FM7_MAINMEM_URA,       // $8000-$FBFF #1
15         FM7_MAINMEM_BASICROM,  // $8000-$FBFF #2
16         FM7_MAINMEM_BIOSWORK,  // $FC00-$FC7F
17         FM7_MAINMEM_SHAREDRAM, // $FC80-$FCFF
18         FM7_MAINMEM_MMIO, // $FD00-$FDFF
19         FM7_MAINMEM_BOOTROM_BAS,  // $FE00-$FFEF #1
20         FM7_MAINMEM_BOOTROM_DOS,  // $FE00-$FFEF #2
21         FM7_MAINMEM_BOOTROM_MMR, // $FE00-$FFEF #3
22         FM7_MAINMEM_BOOTROM_EXTRA,  // $FE00-$FFEF #4
23         FM7_MAINMEM_BOOTROM_RAM,  // $FE00-$FFEF #5
24         FM7_MAINMEM_VECTOR, // $FFF0-$FFFD
25         FM7_MAINMEM_RESET_VECTOR, // $FFF0-$FFFD
26         FM7_MAINMEM_NULL, // NULL
27         FM7_MAINMEM_ZERO, // ZERO
28         FM7_MAINMEM_KANJI_LEVEL1,
29         FM7_MAINMEM_SHADOWRAM, // FM77
30         
31         FM7_MAINMEM_EXTRAM, //  192KB EXTRAM of FM-77, or 77AV40 768KB max. of 77AV40.
32         
33         FM7_MAINMEM_AV_PAGE0, // $00000-$0ffff
34         FM7_MAINMEM_AV_PAGE2, // $20000-$2ffff
35         FM7_MAINMEM_AV_DIRECTACCESS, // $10000-$1ffff
36         FM7_MAINMEM_INITROM, // Initiator ROM, $06000 - $07fff
37         // 77AV40
38         FM7_MAINMEM_BACKUPED_RAM, // DICTIONARY CARD, Backuped
39         FM7_MAINMEM_DICTROM,      // DICTIONARY CARD, ROM
40         FM7_MAINMEM_77AV40_EXTRAROM,     // DICTIONARY CARD, Extra sub ROM
41         FM7_MAINMEM_KANJI_LEVEL2,
42         FM7_MAINMEM_KANJI_DUMMYADDR,
43         FM7_MAINMEM_END
44 };
45
46 #define FM7_BOOTMODE_BASIC 0
47 #define FM7_BOOTMODE_DOS   1
48 #define FM7_BOOTMODE_MMR   2
49 #define FM7_BOOTMODE_ROM4  3
50 #define FM7_BOOTMODE_RAM   4
51
52 #define FM7_DIPSW_CYCLESTEAL         0x00000001
53 #define FM7_DIPSW_EXTRAM             0x00000002
54 #define FM7_DIPSW_EXTRAM_AV          0x00000004
55 #define FM7_DIPSW_DICTROM_AV         0x00000008
56 #define FM7_DIPSW_FM8_PROTECT_FD0F   0x00000010
57 #define FM7_DIPSW_CONNECT_KANJIROM   0x00000020
58 #define FM7_DIPSW_CONNECT_320KFDC    0x00000040
59 #define FM7_DIPSW_CONNECT_1MFDC      0x00000080
60 // '1' is Auto 5 Key, '0' is Auto 8 Key
61 #define FM7_DIPSW_SELECT_5_OR_8KEY   0x00000100 
62 #define FM7_DIPSW_AUTO_5_OR_8KEY     0x00000200
63
64 #define FM7_DIPSW_Z80_IRQ_ON         0x00001000
65 #define FM7_DIPSW_Z80_FIRQ_ON        0x00002000
66 #define FM7_DIPSW_Z80_NMI_ON         0x00004000
67 #define FM7_DIPSW_JIS78EMU_ON        0x00008000
68 #define FM7_DIPSW_JSUBCARD_ON        0x00010000
69 #define FM7_DIPSW_Z80CARD_ON         0x00020000
70 #define FM7_DIPSW_RS232C_ON          0x00040000
71 #define FM7_DIPSW_MODEM_ON           0x00080000
72 #define FM7_DIPSW_MIDI_ON            0x00100000
73
74 #define FM7_DIPSW_FRAMESKIP          0x30000000
75 #define FM7_DIPSW_SYNC_TO_HSYNC      0x80000000
76
77
78 #define MAINCLOCK_NORMAL    1798000
79 #define MAINCLOCK_MMR       1565000
80 #define MAINCLOCK_FAST_MMR  2016000
81 #define MAINCLOCK_SLOW      1095000
82
83 #define SUBCLOCK_NORMAL     2000000
84 #define SUBCLOCK_SLOW        999000
85
86 #define JCOMMCARD_CLOCK     1228000
87
88 #define FM7_SUBMEM_OFFSET_DPALETTE    0x0100000
89 #define FM7_SUBMEM_OFFSET_APALETTE_B  0x0200000
90 #define FM7_SUBMEM_OFFSET_APALETTE_R  0x0300000
91 #define FM7_SUBMEM_OFFSET_APALETTE_G  0x0400000
92 #define FM7_SUBMEM_OFFSET_APALETTE_HI 0x0500000
93 #define FM7_SUBMEM_OFFSET_APALETTE_LO 0x0500001
94
95 enum {
96         EVENT_BEEP_OFF = 0,
97         EVENT_BEEP_CYCLE,
98         EVENT_UP_BREAK,
99         EVENT_TIMERIRQ_ON,
100         EVENT_TIMERIRQ_OFF,
101         EVENT_FD_MOTOR_ON,
102         EVENT_FD_MOTOR_OFF,
103         EVENT_FD_MOTOR_ON_2HD,
104         EVENT_FD_MOTOR_OFF_2HD,
105         EVENT_FM7MAINIO_ATTENTION,
106         EVENT_FM7MAINIO_SUBBUSY_SET,
107         EVENT_FM7MAINIO_SUBBUSY_RESET,
108         EVENT_MOUSE_TIMEOUT,
109         EVENT_FM7SUB_DISPLAY_NMI = 32,
110         EVENT_FM7SUB_DISPLAY_NMI_OFF,
111         EVENT_FM7SUB_HDISP,
112         EVENT_FM7SUB_HBLANK,
113         EVENT_FM7SUB_VSTART,
114         EVENT_FM7SUB_VSYNC,
115         EVENT_FM7SUB_HALT,
116         EVENT_FM7SUB_CLR_BUSY,
117         EVENT_FM7SUB_CLR_CRTFLAG,
118         EVENT_FM7SUB_PROC,
119         EVENT_PRINTER_RESET_COMPLETED,
120 };
121
122
123 enum {
124         FM7_SUBMEM_VRAMBANK_0 = 0,      // $0000-$BFFF #1
125         FM7_SUBMEM_CONSOLERAM,          // $C000-$CFFF
126         FM7_SUBMEM_WORKRAM,             // $D000-$D37F
127         FM7_SUBMEM_SHAREDRAM,           // $D380-$D3FF
128         FM7_SUBMEM_MMIO,                // $D400-$D7FF
129         FM7_SUBMEM_MONITOR_C,           // $D800-#FFFF #1
130         FM7_SUBMEM_NULL,
131         FM7_SUBMEM_ZERO,
132         // 77AV
133         FM7_SUBMEM_VRAMBANK_1,  // $0000-$BFFF #2
134         FM7_SUBMEM_AV_HIDDEN_RAM, // $D500-$D7FF
135         // 77AV : $E000-$FFFF
136         FM7_SUBMEM_MONITOR_A,
137         FM7_SUBMEM_MONITOR_B,
138         FM7_SUBMEM_MONITOR_CG,
139         FM7_SUBMEM_CGROM,               // 77AV: CGROM #2($D800-$DFFF)
140         // 77AV40 
141         FM7_SUBMEM_VRAMBANK_2,          // $0000-$BFFF #3
142         FM7_SUBMEM_MONITOR_RAM,         // $E000-$DFFF
143         FM7_SUBMEM_CGRAM,               // $D800-$DFFF
144         // 77(L4)
145         FM7_SUBMEM_77_WORKRAM,
146         FM7_SUBMEM_77_GVRAM,
147         FM7_SUBMEM_77_TEXTRAM,
148         FM7_SUBMEM_77_SUBMONITOR,
149         FM7_SUBMEM_END
150 };
151
152 // SIGNALS
153 // MAIN
154 enum {
155         FM7_MAINCLOCK_SLOW = 0,
156         FM7_MAINCLOCK_HIGH,
157         FM7_MAINCLOCK_MMRSLOW,
158         FM7_MAINCLOCK_MMRHIGH
159 };
160 enum {
161 };
162
163 enum {
164         FM7_MAINIO_IS_BASICROM = 0x200000,
165         FM7_MAINIO_BOOTMODE,
166         FM7_MAINIO_BOOTRAM_RW,
167         FM7_MAINIO_READ_FD0F,
168         FM7_MAINIO_PUSH_FD0F,
169         FM7_MAINIO_CLOCKMODE,
170         FM7_MAINIO_INITROM_ENABLED,
171         FM7_MAINIO_EXTBANK,
172         FM7_MAINIO_EXTROM,
173         FM7_MAINIO_MODE320,
174         
175         FM7_MAINIO_SUBMONITOR_ROM,
176         FM7_MAINIO_SUBMONITOR_RAM,
177         
178         FM7_MAINIO_MMR_ENABLED,
179         FM7_MAINIO_FASTMMR_ENABLED,
180         FM7_MAINIO_WINDOW_ENABLED,
181         FM7_MAINIO_WINDOW_OFFSET,
182         FM7_MAINIO_MMR_SEGMENT,
183         FM7_MAINIO_MMR_EXTENDED,
184         FM7_MAINIO_WINDOW_FAST,
185         FM7_MAINIO_MEM_REFRESH_FAST,
186         
187         FM7_MAINIO_UART0_SYNDET,
188         FM7_MAINIO_UART0_RXRDY,
189         FM7_MAINIO_UART0_TXRDY,
190         FM7_MAINIO_UART0_DCD,
191         FM7_MAINIO_MODEM_SYNDET,
192         FM7_MAINIO_MODEM_RXRDY,
193         FM7_MAINIO_MODEM_TXRDY,
194         FM7_MAINIO_MIDI_SYNDET,
195         FM7_MAINIO_MIDI_RXRDY,
196         FM7_MAINIO_MIDI_TXRDY,
197         
198         FM7_JCOMMCARD_BUS_HALT,
199         
200         FM7_MAINIO_MMR_BANK = 0x200100,
201
202 };
203
204 enum {
205         FM7_MAINIO_CMT_RECV = 0x1000, // Input data changed
206         FM7_MAINIO_CMT_INVERT, // Set / reset invert cmt data.
207         FM7_MAINIO_TIMERIRQ, // Timer from SUB.
208         FM7_MAINIO_LPTIRQ,
209         FM7_MAINIO_LPT_BUSY,
210         FM7_MAINIO_LPT_ERROR,
211         FM7_MAINIO_LPT_ACK,
212         FM7_MAINIO_LPT_PAPER_EMPTY,
213         FM7_MAINIO_LPT_DET1,
214         FM7_MAINIO_LPT_DET2,
215         FM7_MAINIO_KEYBOARDIRQ, 
216         FM7_MAINIO_KEYBOARDIRQ_MASK,
217         FM7_MAINIO_PUSH_KEYBOARD,
218         FM7_MAINIO_PUSH_BREAK, // FIRQ
219         FM7_MAINIO_SUB_ATTENTION, // FIRQ
220         FM7_MAINIO_SUB_BUSY, // SUB is BUSY.
221         FM7_MAINIO_SUB_CANCEL, // SUB is BUSY.
222         FM7_MAINIO_EXTDET,
223         FM7_MAINIO_BEEP, // BEEP From sub
224         FM7_MAINIO_PSG_IRQ,
225         FM7_MAINIO_OPN_IRQ,
226         FM7_MAINIO_WHG_IRQ,
227         FM7_MAINIO_THG_IRQ,
228         FM7_MAINIO_JOYPORTA_CHANGED, // Joystick
229         FM7_MAINIO_JOYPORTB_CHANGED, // Joystick
230         FM7_MAINIO_FDC_DRQ,
231         FM7_MAINIO_FDC_IRQ,
232         FM7_MAINIO_KANJI1_ADDR_HIGH,
233         FM7_MAINIO_KANJI1_ADDR_LOW,
234         FM7_MAINIO_KANJI2_ADDR_HIGH,
235         FM7_MAINIO_KANJI2_ADDR_LOW,
236         FM7_MAINIO_HOT_RESET,
237         FM7_MAINIO_DMA_INT,
238         FM7_MAINIO_RUN_Z80,
239         FM7_MAINIO_RUN_6809,
240         
241         FM7_JOYSTICK_EMULATE_MOUSE_0,
242         FM7_JOYSTICK_EMULATE_MOUSE_1,
243         FM7_JOYSTICK_MOUSE_STROBE,
244
245         FM7_MAINIO_FDC_DRQ_2HD,
246         FM7_MAINIO_FDC_IRQ_2HD,
247         
248 };
249 // SUB
250 enum {
251         SIG_DISPLAY_VBLANK = 0x4000,
252         SIG_DISPLAY_HBLANK,
253         SIG_DISPLAY_VSYNC,
254         SIG_DISPLAY_DISPLAY,
255         SIG_DISPLAY_CLOCK,
256         SIG_DISPLAY_DIGITAL_PALETTE,
257         SIG_DISPLAY_ANALOG_PALETTE,
258         SIG_DISPLAY_HALT,
259         SIG_DISPLAY_BUSY,
260         SIG_DISPLAY_CHANGE_MODE,
261         SIG_DISPLAY_MULTIPAGE,
262         SIG_DISPLAY_MODE_IS_400LINE,
263         SIG_DISPLAY_PLANES,
264         SIG_DISPLAY_X_WIDTH,
265         SIG_DISPLAY_Y_HEIGHT,
266         SIG_DISPLAY_EXTRA_MODE,
267         SIG_DISPLAY_STATREG_FD12,
268         SIG_DISPLAY_MODE320,
269         SIG_DISPLAY_BANK_OFFSET,
270 };
271
272 enum {
273         DISPLAY_MODE_8_200L = 0,
274         DISPLAY_MODE_8_400L,
275         DISPLAY_MODE_8_200L_TEXT,
276         DISPLAY_MODE_8_400L_TEXT,
277         DISPLAY_MODE_4096,
278         DISPLAY_MODE_256k
279 };
280
281 enum {
282         DISPLAY_ADDR_MULTIPAGE = 0,
283         DISPLAY_ADDR_OFFSET_H,
284         DISPLAY_ADDR_OFFSET_L,
285         DISPLAY_ADDR_DPALETTE,
286         DISPLAY_ADDR_APALETTE_B = 0x10000000,
287         DISPLAY_ADDR_APALETTE_R = 0x20000000,
288         DISPLAY_ADDR_APALETTE_G = 0x30000000,
289         DISPLAY_VRAM_DIRECT_ACCESS = 0x80000000
290 };
291
292 enum {
293         SIG_FM7_SUB_HALT = 0x2000,
294         SIG_FM7_SUB_CANCEL,
295         SIG_FM7_SUB_BANK,
296         SIG_FM7_SUB_KEY_FIRQ,
297         SIG_FM7_SUB_KEY_MASK,
298         SIG_FM7_SUB_USE_CLR
299 };
300
301 // KEYBOARD
302 enum {
303         SIG_FM7KEY_KEY_UP = 0x800,
304         SIG_FM7KEY_KEY_DOWN,
305         SIG_FM7KEY_READ, // D400 = high , D401 = low
306         SIG_FM7KEY_SET_INSLED, // D40D: Write = OFF / Read = ON
307         SIG_FM7KEY_SET_KANALED, //
308         SIG_FM7KEY_SET_CAPSLED, //
309         SIG_FM7KEY_RXRDY,
310         SIG_FM7KEY_ACK,         // D431
311         SIG_FM7KEY_BREAK_KEY,
312         SIG_FM7KEY_PUSH_TO_ENCODER,
313         SIG_FM7KEY_LED_STATUS,
314         SIG_FM7KEY_OVERRIDE_PRESS_BREAK,
315 };
316
317 enum {
318         KEYMODE_STANDARD = 0,
319         KEYMODE_16BETA,
320         KEYMODE_SCAN
321 };
322 // KANJIROM
323 enum {
324         KANJIROM_ADDR_HI = 0x10000,
325         KANJIROM_ADDR_LO,
326         KANJIROM_DATA_HI,
327         KANJIROM_DATA_LO,
328         KANJIROM_READSTAT,
329         KANJIROM_DIRECTADDR = 0x20000,
330 };
331
332 #define ROM_KANJI_CLASS1_FALLBACK "KANJI.ROM"
333 #define ROM_KANJI_CLASS1          "KANJI1.ROM"
334 #define ROM_KANJI_CLASS2          "KANJI2.ROM"
335
336 #define ROM_FM8_SUBSYSTEM         "SUBSYS_8.ROM"
337 #define ROM_FM7_SUBSYSTEM_TYPE_A  "SUBSYS_A.ROM"
338 #define ROM_FM7_SUBSYSTEM_TYPE_B  "SUBSYS_B.ROM"
339 #define ROM_FM7_SUBSYSTEM_TYPE_C  "SUBSYS_C.ROM"
340 #define ROM_FM7_SUBSYSTEM_CG      "SUBSYSCG.ROM"
341
342 #define ROM_FM8_BOOT_BASIC        "BOOT_BAS8.ROM"
343 #define ROM_FM8_BOOT_DOS          "BOOT_DOS8.ROM"
344 #define ROM_FM8_BOOT_BUBBLE       "BOOT_BBL8.ROM"
345 #define ROM_FM8_BOOT_BUBBLE_128K  "BOOT_B128.ROM"
346 #define ROM_FM8_BOOT_DOS_FD8      "BOOT_SFD8.ROM"
347 #define ROM_FM8_FBASICV10         "FBASIC10.ROM"
348
349 #define ROM_FM7_BOOT_BASIC        "BOOT_BAS.ROM"
350 #define ROM_FM7_BOOT_DOS          "BOOT_DOS.ROM"
351 #define ROM_FM7_BOOT_MMR          "BOOT_MMR.ROM"
352 #define ROM_FM7_BOOT_BUBBLE_7     "BOOTBBL7.ROM"
353 #define ROM_FM7_BOOT_2HD          "BOOT_1MB.ROM"
354 #define ROM_FM77_BOOT_BUBBLE_128K "BOOT_B12.ROM"
355
356 #define ROM_FM7_FBASICV30          "FBASIC30.ROM"
357 #define ROM_FM7_FBASICV30L00       "FBASIC300.ROM"
358 #define ROM_FM7_FBASICV30L10       "FBASIC301.ROM"
359 #define ROM_FM7_FBASICV30L20       "FBASIC302.ROM"
360
361 #define ROM_FM77_400LINE_SUBSYS    "SUBSYSL4.ROM"
362 #define ROM_FM77_400LINE_ANKCG     "ANKCG16.ROM"
363
364 #define ROM_FM77AV_INITIATOR       "INITIATE.ROM"
365 #define ROM_FM77AV_DICTIONARY      "DICROM.ROM"
366 #define ROM_FM77AV40EX_EXTSUB      "EXTSUB.ROM"
367
368 #define ROM_JCOMM_FIRMWARE         "JSUBMON.ROM"
369 #define ROM_JCOMM_DICTIONARY       "DICROM.ROM"
370 #define ROM_JCOMM_KANJI            "JSUBKANJI.ROM"
371
372
373 #define RAM_JCOMM_BACKUP           "JCOMMCARD.bin"
374 #define RAM_FM77AV_DIC_BACKUP      "USERDIC.DAT"
375
376
377 #endif // _FM7_COMMON_H_