2 * Common definition of FM-7 [FM7_COMMON]
10 #define _FM7_COMMON_H_
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
31 FM7_MAINMEM_EXTRAM, // 192KB EXTRAM of FM-77, or 77AV40 768KB max. of 77AV40.
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
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,
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
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
64 #define FM7_DIPSW_Z80_IRQ_ON 0x00001000
65 #define FM7_DIPSW_Z80_FIRQ_ON 0x00002000
66 #define FM7_DIPSW_Z80_NMI_ON 0x00004000
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 #define FM7_DIPSW_FRAMESKIP 0x30000000
75 #define FM7_DIPSW_SYNC_TO_HSYNC 0x80000000
78 #define MAINCLOCK_NORMAL 1798000
79 #define MAINCLOCK_MMR 1565000
80 #define MAINCLOCK_FAST_MMR 2016000
81 #define MAINCLOCK_SLOW 1095000
83 #define SUBCLOCK_NORMAL 2000000
84 #define SUBCLOCK_SLOW 999000
86 #define JCOMMCARD_CLOCK 1228000
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
96 FM7_MONITOR_STANDARD = 0,
108 EVENT_FD_MOTOR_ON_2HD,
109 EVENT_FD_MOTOR_OFF_2HD,
110 EVENT_FM7MAINIO_ATTENTION,
111 EVENT_FM7MAINIO_SUBBUSY_SET,
112 EVENT_FM7MAINIO_SUBBUSY_RESET,
116 EVENT_FM7SUB_DISPLAY_NMI = 32,
117 EVENT_FM7SUB_DISPLAY_NMI_OFF,
123 EVENT_FM7SUB_DELAY_BUSY,
124 EVENT_FM7SUB_CLR_CRTFLAG,
126 EVENT_FM7SUB_CURSOR_BLINK,
127 EVENT_FM7SUB_TEXT_BLINK,
128 EVENT_PRINTER_RESET_COMPLETED,
129 EVENT_FM7MAINMEM_WAIT_START,
130 EVENT_FM7MAINMEM_WAIT_STOP,
131 EVENT_FM7SUB_CLEAR_DELAY,
136 FM7_SUBMEM_VRAMBANK_0 = 0, // $0000-$BFFF #1
137 FM7_SUBMEM_CONSOLERAM, // $C000-$CFFF
138 FM7_SUBMEM_WORKRAM, // $D000-$D37F
139 FM7_SUBMEM_SHAREDRAM, // $D380-$D3FF
140 FM7_SUBMEM_MMIO, // $D400-$D7FF
141 FM7_SUBMEM_MONITOR_C, // $D800-#FFFF #1
145 FM7_SUBMEM_VRAMBANK_1, // $0000-$BFFF #2
146 FM7_SUBMEM_AV_HIDDEN_RAM, // $D500-$D7FF
147 // 77AV : $E000-$FFFF
148 FM7_SUBMEM_MONITOR_A,
149 FM7_SUBMEM_MONITOR_B,
150 FM7_SUBMEM_MONITOR_CG,
151 FM7_SUBMEM_CGROM, // 77AV: CGROM #2($D800-$DFFF)
153 FM7_SUBMEM_VRAMBANK_2, // $0000-$BFFF #3
154 FM7_SUBMEM_MONITOR_RAM, // $E000-$DFFF
155 FM7_SUBMEM_CGRAM, // $D800-$DFFF
157 FM7_SUBMEM_77_WORKRAM,
159 FM7_SUBMEM_77_TEXTRAM,
160 FM7_SUBMEM_77_SUBMONITOR,
167 FM7_MAINCLOCK_SLOW = 0,
169 FM7_MAINCLOCK_MMRSLOW,
170 FM7_MAINCLOCK_MMRHIGH
176 FM7_MAINIO_IS_BASICROM = 0x200000,
178 FM7_MAINIO_BOOTRAM_RW,
179 FM7_MAINIO_READ_FD0F,
180 FM7_MAINIO_PUSH_FD0F,
181 FM7_MAINIO_CLOCKMODE,
182 FM7_MAINIO_INITROM_ENABLED,
187 FM7_MAINIO_SUBMONITOR_ROM,
188 FM7_MAINIO_SUBMONITOR_RAM,
190 FM7_MAINIO_MMR_ENABLED,
191 FM7_MAINIO_FASTMMR_ENABLED,
192 FM7_MAINIO_WINDOW_ENABLED,
193 FM7_MAINIO_WINDOW_OFFSET,
194 FM7_MAINIO_MMR_SEGMENT,
195 FM7_MAINIO_MMR_EXTENDED,
196 FM7_MAINIO_WINDOW_FAST,
197 FM7_MAINIO_MEM_REFRESH_FAST,
199 FM7_MAINIO_UART0_SYNDET,
200 FM7_MAINIO_UART0_RXRDY,
201 FM7_MAINIO_UART0_TXRDY,
202 FM7_MAINIO_UART0_DCD,
203 FM7_MAINIO_MODEM_SYNDET,
204 FM7_MAINIO_MODEM_RXRDY,
205 FM7_MAINIO_MODEM_TXRDY,
206 FM7_MAINIO_MIDI_SYNDET,
207 FM7_MAINIO_MIDI_RXRDY,
208 FM7_MAINIO_MIDI_TXRDY,
210 FM7_JCOMMCARD_BUS_HALT,
212 FM7_MAINIO_MMR_BANK = 0x200100,
217 FM7_MAINIO_CMT_RECV = 0x1000, // Input data changed
218 FM7_MAINIO_CMT_INVERT, // Set / reset invert cmt data.
219 FM7_MAINIO_TIMERIRQ, // Timer from SUB.
222 FM7_MAINIO_LPT_ERROR,
224 FM7_MAINIO_LPT_PAPER_EMPTY,
227 FM7_MAINIO_KEYBOARDIRQ,
228 FM7_MAINIO_KEYBOARDIRQ_MASK,
229 FM7_MAINIO_PUSH_KEYBOARD,
230 FM7_MAINIO_PUSH_BREAK, // FIRQ
231 FM7_MAINIO_SUB_ATTENTION, // FIRQ
232 FM7_MAINIO_SUB_BUSY, // SUB is BUSY.
233 FM7_MAINIO_SUB_CANCEL, // SUB is BUSY.
235 FM7_MAINIO_BEEP, // BEEP From sub
240 FM7_MAINIO_JOYPORTA_CHANGED, // Joystick
241 FM7_MAINIO_JOYPORTB_CHANGED, // Joystick
244 FM7_MAINIO_KANJI1_ADDR_HIGH,
245 FM7_MAINIO_KANJI1_ADDR_LOW,
246 FM7_MAINIO_KANJI2_ADDR_HIGH,
247 FM7_MAINIO_KANJI2_ADDR_LOW,
248 FM7_MAINIO_HOT_RESET,
253 FM7_JOYSTICK_EMULATE_MOUSE_0,
254 FM7_JOYSTICK_EMULATE_MOUSE_1,
255 FM7_JOYSTICK_MOUSE_STROBE,
257 FM7_MAINIO_FDC_DRQ_2HD,
258 FM7_MAINIO_FDC_IRQ_2HD,
263 SIG_DISPLAY_VBLANK = 0x4000,
268 SIG_DISPLAY_DIGITAL_PALETTE,
269 SIG_DISPLAY_ANALOG_PALETTE,
272 SIG_DISPLAY_CHANGE_MODE,
273 SIG_DISPLAY_MULTIPAGE,
274 SIG_DISPLAY_MODE_IS_400LINE,
277 SIG_DISPLAY_Y_HEIGHT,
278 SIG_DISPLAY_EXTRA_MODE,
279 SIG_DISPLAY_STATREG_FD12,
281 SIG_DISPLAY_BANK_OFFSET,
285 DISPLAY_MODE_8_200L = 0,
293 DISPLAY_ADDR_MULTIPAGE = 0,
294 DISPLAY_ADDR_OFFSET_H,
295 DISPLAY_ADDR_OFFSET_L,
296 DISPLAY_ADDR_DPALETTE,
297 DISPLAY_ADDR_APALETTE_B = 0x10000000,
298 DISPLAY_ADDR_APALETTE_R = 0x20000000,
299 DISPLAY_ADDR_APALETTE_G = 0x30000000,
300 DISPLAY_VRAM_DIRECT_ACCESS = 0x80000000
304 SIG_FM7_SUB_HALT = 0x2000,
307 SIG_FM7_SUB_KEY_FIRQ,
308 SIG_FM7_SUB_KEY_MASK,
309 //SIG_FM7_SUB_USE_CLR
314 SIG_FM7KEY_KEY_UP = 0x800,
316 SIG_FM7KEY_READ, // D400 = high , D401 = low
317 SIG_FM7KEY_SET_INSLED, // D40D: Write = OFF / Read = ON
318 SIG_FM7KEY_SET_KANALED, //
319 SIG_FM7KEY_SET_CAPSLED, //
321 SIG_FM7KEY_ACK, // D431
322 SIG_FM7KEY_BREAK_KEY,
323 SIG_FM7KEY_PUSH_TO_ENCODER,
324 SIG_FM7KEY_LED_STATUS,
325 SIG_FM7KEY_OVERRIDE_PRESS_BREAK,
329 KEYMODE_STANDARD = 0,
335 KANJIROM_ADDR_HI = 0x10000,
340 KANJIROM_DIRECTADDR = 0x20000,
343 #define ROM_KANJI_CLASS1_FALLBACK "KANJI.ROM"
344 #define ROM_KANJI_CLASS1 "KANJI1.ROM"
345 #define ROM_KANJI_CLASS2 "KANJI2.ROM"
347 #define ROM_FM8_SUBSYSTEM "SUBSYS_8.ROM"
348 #define ROM_FM7_SUBSYSTEM_TYPE_A "SUBSYS_A.ROM"
349 #define ROM_FM7_SUBSYSTEM_TYPE_B "SUBSYS_B.ROM"
350 #define ROM_FM7_SUBSYSTEM_TYPE_C "SUBSYS_C.ROM"
351 #define ROM_FM7_SUBSYSTEM_CG "SUBSYSCG.ROM"
353 // Support more BOOT ROMS for FM-8.See http://www.mindspring.com/~thasegaw/rpcg/fm8_boot.html .
355 * BOOT ORDER for FM-8:
359 * 3/7: 8Inch SFD(SM11-15) or DEBUG(SM11-14).
361 * Read SM11_15.ROM to BANK 0 to 3.
362 * Read SM11_14.ROM to BANK 4 to 7.
363 * If not read above, load some boot roms.
366 #define ROM_FM8_BOOT_BASIC "BOOT_BAS8.ROM"
367 #define ROM_FM8_BOOT_DOS "BOOT_DOS8.ROM"
368 #define ROM_FM8_BOOT_BUBBLE "BOOT_BBL8.ROM"
369 #define ROM_FM8_BOOT_BUBBLE_128K "BOOT_B128.ROM"
370 #define ROM_FM8_BOOT_DOS_FD8 "BOOT_SFD8.ROM"
371 #define ROM_FM8_BOOT_DEBUG "BOOT_DEBUG8.ROM"
372 #define ROM_FM8_SM11_14 "BOOT_SM11_14.ROM"
373 #define ROM_FM8_SM11_15 "BOOT_SM11_15.ROM"
375 #define ROM_FM8_FBASICV10 "FBASIC10.ROM"
378 * BOOT ORDER for FM-7:
382 * 3: RESERVE (TL11-1x only).
384 * With eFMNEW7, if BOOT_TL11_12.ROM exists, load first this.
385 * If not load, try to load BOOT_TL11_11.ROM (for eFM7/eFMNEW7).
386 * If not load above, try to load boot roms.
389 // See http://www.mindspring.com/~thasegaw/rpcg/fm7rom.html .
390 #define ROM_FM7_BOOT_BASIC "BOOT_BAS.ROM"
391 #define ROM_FM7_BOOT_DOS "BOOT_DOS.ROM"
392 #define ROM_FM7_BOOT_MMR "BOOT_MMR.ROM"
393 #define ROM_FM7_BOOT_BUBBLE_7 "BOOTBBL7.ROM"
394 #define ROM_FM7_BOOT_2HD "BOOT_1MB.ROM"
395 #define ROM_FM7_BOOT_TL11_11 "BOOT_TL11_11.ROM"
396 #define ROM_FM7_BOOT_TL11_12 "BOOT_TL11_12.ROM"
399 * BOOT ORDER for FM-77:
409 * If BOOT_WB_11_12.ROM exists, load first this.
412 #define ROM_FM77_BOOT_BUBBLE_128K "BOOT_B12.ROM"
413 #define ROM_FM77_BOOT_WB11_12 "BOOT_WB11_12.ROM"
415 #define ROM_FM7_FBASICV30 "FBASIC30.ROM"
416 #define ROM_FM7_FBASICV30L00 "FBASIC300.ROM"
417 #define ROM_FM7_FBASICV30L10 "FBASIC301.ROM"
418 #define ROM_FM7_FBASICV30L20 "FBASIC302.ROM"
420 #define ROM_FM77_400LINE_SUBSYS "SUBSYSL4.ROM"
421 #define ROM_FM77_400LINE_ANKCG "ANKCG16.ROM"
423 #define ROM_FM77AV_INITIATOR "INITIATE.ROM"
424 #define ROM_FM77AV_DICTIONARY "DICROM.ROM"
425 #define ROM_FM77AV40EX_EXTSUB "EXTSUB.ROM"
427 #define ROM_JCOMM_FIRMWARE "JSUBMON.ROM"
428 #define ROM_JCOMM_DICTIONARY "DICROM.ROM"
429 #define ROM_JCOMM_KANJI "JSUBKANJI.ROM"
432 #define RAM_JCOMM_BACKUP "JCOMMCARD.bin"
433 #define RAM_FM77AV_DIC_BACKUP "USERDIC.DAT"
435 #endif // _FM7_COMMON_H_