OSDN Git Service

[VM][FM7][FM77AV] Set sub clock.
[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         
30         FM7_MAINMEM_EXTRAM, //  192KB EXTRAM of FM-77, or 77AV40 768KB max. of 77AV40.
31         
32         FM7_MAINMEM_AV_PAGE0, // $00000-$0ffff
33         FM7_MAINMEM_AV_PAGE2, // $20000-$2ffff
34         FM7_MAINMEM_AV_DIRECTACCESS, // $10000-$1ffff
35         FM7_MAINMEM_INITROM, // Initiator ROM, $06000 - $07fff
36         // 77AV40
37         FM7_MAINMEM_BACKUPED_RAM, // DICTIONARY CARD, Backuped
38         FM7_MAINMEM_DICTROM,      // DICTIONARY CARD, ROM
39         FM7_MAINMEM_77AV40_EXTRAROM,     // DICTIONARY CARD, Extra sub ROM
40         FM7_MAINMEM_KANJI_LEVEL2,
41         
42         FM7_MAINMEM_END
43 };
44
45 #define FM7_BOOTMODE_BASIC 0
46 #define FM7_BOOTMODE_DOS   1
47 #define FM7_BOOTMODE_MMR   2
48 #define FM7_BOOTMODE_ROM4  3
49 #define FM7_BOOTMODE_RAM   4
50
51 #define FM7_DIPSW_CYCLESTEAL 0x00000001
52 #define FM7_DIPSW_EXTRAM_AV  0x00000002
53 #define FM7_DIPSW_DICTROM_AV 0x00000004
54
55 #define MAINCLOCK_NORMAL    1794000
56 #define MAINCLOCK_MMR       1565000
57 #define MAINCLOCK_FAST_MMR  2016000
58 #define MAINCLOCK_SLOW      1095000
59
60 #define SUBCLOCK_NORMAL     2000000
61 #define SUBCLOCK_SLOW        999000
62
63
64 #define FM7_SUBMEM_OFFSET_DPALETTE    0x0100000
65 #define FM7_SUBMEM_OFFSET_APALETTE_B  0x0200000
66 #define FM7_SUBMEM_OFFSET_APALETTE_R  0x0300000
67 #define FM7_SUBMEM_OFFSET_APALETTE_G  0x0400000
68 #define FM7_SUBMEM_OFFSET_APALETTE_HI 0x0500000
69 #define FM7_SUBMEM_OFFSET_APALETTE_LO 0x0500001
70 #define FM7_SUBMEM_VRAM_BANK0         0x1000000
71 #define FM7_SUBMEM_VRAM_BANK1         0x2000000
72 #define FM7_SUBMEM_VRAM_BANK2         0x3000000
73 #define FM7_SUBMEM_VRAM_BANK3         0x4000000
74
75 enum {
76         EVENT_BEEP_OFF = 0,
77         EVENT_BEEP_CYCLE,
78         EVENT_UP_BREAK,
79         EVENT_TIMERIRQ_ON,
80         EVENT_TIMERIRQ_OFF,
81         EVENT_FD_MOTOR_ON,
82         EVENT_FD_MOTOR_OFF,
83         EVENT_FM7SUB_DISPLAY_NMI = 32,
84         EVENT_FM7SUB_DISPLAY_NMI_OFF,
85         EVENT_FM7SUB_HDISP,
86         EVENT_FM7SUB_HBLANK,
87         EVENT_FM7SUB_VSTART,
88         EVENT_FM7SUB_VSYNC,
89         EVENT_FM7SUB_HALT,
90         EVENT_FM7SUB_CLR,
91         ID_KEYBOARD_RXRDY_OK = 64,
92         ID_KEYBOARD_RXRDY_BUSY,
93         ID_KEYBOARD_ACK,
94         ID_KEYBOARD_RTC_COUNTUP,
95         ID_KEYBOARD_AUTOREPEAT_FIRST = 0x200,
96         ID_KEYBOARD_AUTOREPEAT = 0x400
97 };
98
99
100 enum {
101         FM7_SUBMEM_VRAMBANK_0 = 0,      // $0000-$BFFF #1
102         FM7_SUBMEM_CONSOLERAM,          // $C000-$CFFF
103         FM7_SUBMEM_WORKRAM,             // $D000-$D37F
104         FM7_SUBMEM_SHAREDRAM,           // $D380-$D3FF
105         FM7_SUBMEM_MMIO,                // $D400-$D7FF
106         FM7_SUBMEM_MONITOR_C,           // $D800-#FFFF #1
107         FM7_SUBMEM_NULL,
108         FM7_SUBMEM_ZERO,
109         // 77AV
110         FM7_SUBMEM_VRAMBANK_1,  // $0000-$BFFF #2
111         // 77AV : $E000-$FFFF
112         FM7_SUBMEM_MONITOR_A,
113         FM7_SUBMEM_MONITOR_B,
114         FM7_SUBMEM_MONITOR_CG,
115         FM7_SUBMEM_CGROM,               // 77AV: CGROM #2($D800-$DFFF)
116         // 77AV40 
117         FM7_SUBMEM_VRAMBANK_2,          // $0000-$BFFF #3
118         FM7_SUBMEM_MONITOR_RAM,         // $E000-$DFFF
119         FM7_SUBMEM_CGRAM,               // $D800-$DFFF
120         // 77(L4)
121         FM7_SUBMEM_77_WORKRAM,
122         FM7_SUBMEM_77_GVRAM,
123         FM7_SUBMEM_77_TEXTRAM,
124         FM7_SUBMEM_77_SUBMONITOR,
125         FM7_SUBMEM_END
126 };
127
128 // SIGNALS
129 // MAIN
130 enum {
131         FM7_MAINCLOCK_SLOW = 0,
132         FM7_MAINCLOCK_HIGH,
133         FM7_MAINCLOCK_MMRSLOW,
134         FM7_MAINCLOCK_MMRHIGH
135 };
136
137 enum {
138         FM7_MAINIO_IS_BASICROM = 0x100000,
139         FM7_MAINIO_BOOTMODE,
140         FM7_MAINIO_READ_FD0F,
141         FM7_MAINIO_CLOCKMODE,
142         FM7_MAINIO_INITROM_ENABLED,
143         FM7_MAINIO_EXTBANK,
144         FM7_MAINIO_EXTROM,
145         FM7_MAINIO_MODE320,
146         FM7_MAINIO_SUBMONITOR_ROM,
147         FM7_MAINIO_SUBMONITOR_RAM,
148         FM7_MAINIO_MMR_ENABLED,
149         FM7_MAINIO_FASTMMR_ENABLED,
150         FM7_MAINIO_WINDOW_ENABLED,
151         FM7_MAINIO_WINDOW_OFFSET,
152         FM7_MAINIO_MMR_SEGMENT,
153         FM7_MAINIO_MMR_BANK = 0x100080,
154 };
155
156 enum {
157         FM7_MAINIO_CMT_RECV = 0x1000, // Input data changed
158         FM7_MAINIO_CMT_INVERT, // Set / reset invert cmt data.
159         FM7_MAINIO_TIMERIRQ, // Timer from SUB.
160         FM7_MAINIO_LPTIRQ,
161         FM7_MAINIO_KEYBOARDIRQ, 
162         FM7_MAINIO_PUSH_KEYBOARD,
163         FM7_MAINIO_PUSH_BREAK, // FIRQ
164         FM7_MAINIO_SUB_ATTENTION, // FIRQ
165         FM7_MAINIO_SUB_BUSY, // SUB is BUSY.
166         FM7_MAINIO_SUB_CANCEL, // SUB is BUSY.
167         FM7_MAINIO_EXTDET,
168         FM7_MAINIO_BEEP, // BEEP From sub
169         FM7_MAINIO_PSG_IRQ,
170         FM7_MAINIO_OPN_IRQ,
171         FM7_MAINIO_WHG_IRQ,
172         FM7_MAINIO_THG_IRQ,
173         FM7_MAINIO_JOYPORTA_CHANGED, // Joystick
174         FM7_MAINIO_JOYPORTB_CHANGED, // Joystick
175         FM7_MAINIO_FDC_DRQ,
176         FM7_MAINIO_FDC_IRQ,
177         FM7_MAINIO_KANJI1_ADDR_HIGH,
178         FM7_MAINIO_KANJI1_ADDR_LOW,
179         FM7_MAINIO_KANJI2_ADDR_HIGH,
180         FM7_MAINIO_KANJI2_ADDR_LOW,
181 };
182 // SUB
183 enum {
184         SIG_DISPLAY_VBLANK = 0x4000,
185         SIG_DISPLAY_HBLANK,
186         SIG_DISPLAY_VSYNC,
187         SIG_DISPLAY_DISPLAY,
188         SIG_DISPLAY_CLOCK,
189         SIG_DISPLAY_DIGITAL_PALETTE,
190         SIG_DISPLAY_ANALOG_PALETTE,
191         SIG_DISPLAY_HALT,
192         SIG_DISPLAY_BUSY,
193         SIG_DISPLAY_CHANGE_MODE,
194         SIG_DISPLAY_MULTIPAGE,
195         SIG_DISPLAY_MODE_IS_400LINE,
196         SIG_DISPLAY_PLANES,
197         SIG_DISPLAY_X_WIDTH,
198         SIG_DISPLAY_Y_HEIGHT,
199         SIG_DISPLAY_EXTRA_MODE,
200         SIG_DISPLAY_MODE320,
201         SIG_DISPLAY_BANK_OFFSET
202 };
203
204 enum {
205         DISPLAY_MODE_8_200L = 0,
206         DISPLAY_MODE_8_400L,
207         DISPLAY_MODE_8_200L_TEXT,
208         DISPLAY_MODE_8_400L_TEXT,
209         DISPLAY_MODE_4096,
210         DISPLAY_MODE_256k
211 };
212
213 enum {
214         DISPLAY_ADDR_MULTIPAGE = 0,
215         DISPLAY_ADDR_OFFSET_H,
216         DISPLAY_ADDR_OFFSET_L,
217         DISPLAY_ADDR_DPALETTE,
218         DISPLAY_ADDR_APALETTE_B = 0x10000000,
219         DISPLAY_ADDR_APALETTE_R = 0x20000000,
220         DISPLAY_ADDR_APALETTE_G = 0x30000000,
221         DISPLAY_VRAM_DIRECT_ACCESS = 0x80000000
222 };
223
224 enum {
225         SIG_FM7_SUB_HALT = 0x2000,
226         SIG_FM7_SUB_CANCEL,
227         SIG_FM7_SUB_BANK,
228         SIG_FM7_SUB_MULTIPAGE,
229         SIG_FM7_SUB_KEY_FIRQ,
230         SIG_FM7_SUB_USE_CLR
231 };
232
233 // KEYBOARD
234 enum {
235         SIG_FM7KEY_KEY_UP = 0x800,
236         SIG_FM7KEY_KEY_DOWN,
237         SIG_FM7KEY_READ, // D400 = high , D401 = low
238         SIG_FM7KEY_SET_INSLED, // D40D: Write = OFF / Read = ON
239         SIG_FM7KEY_SET_KANALED, //
240         SIG_FM7KEY_SET_CAPSLED, //
241         SIG_FM7KEY_RXRDY,
242         SIG_FM7KEY_ACK,
243         // D431
244         SIG_FM7KEY_PUSH_TO_ENCODER
245 };
246
247 enum {
248         KEYMODE_STANDARD = 0,
249         KEYMODE_16BETA,
250         KEYMODE_SCAN
251 };
252
253 #endif // _FM7_COMMON_H_