1 // license:BSD-3-Clause
2 // copyright-holders:Wilbert Pol
3 /*
4 ** msx.cpp : driver for MSX
5 **
6 ** cpc300:
7 **  To get out of the MSX Tutor press the SELECT key. Entering SET SYSTEM 1 should
8 **  disable the MSX Tutor on next boot and SET SYSTEM 0 should enable.
9 **
10 ** tpp311:
11 **  This machine is supposed to boot into logo; it was made to only run logo.
12 **
13 ** tps312:
14 **  - To get into MSX-WRITE type: CALL WRITE
15 **  - To get into MSX-PLAN type: CALL MSXPLAN
16 **
17 **
18 ** There really were a lot of different MSX systems released by quite a few
19 ** manufacturers. Until we have identified all the unique characteristics of
20 ** each machine the machines will stay listed separately. After that
21 ** de-duplication of machine descriptions and rom sets may happen.
22 **
23 **
24 ** Todo/known issues:
25 ** - piopx7/piopx7uk/piopxv60: Pioneer System Remote (home entertainment/Laserdisc control) not implemented
26 ** - piopx7: Dump is from a PAL (EU/AU) machine, we have no known good dumps from JP or US NTSC machines
27 ** - spc800: Haven't been able to test operation of the han rom yet
28 ** - svi728: Expansion slot not emulated
29 ** - svi738: v9938 not emulated
30 ** - svi738: rs232c not emulated
31 ** - hx10: Expansion slot not emulated (hx10s also??)
32 ** - y503iir: Keyboard not responding correctly
33 ** - y503iir, y503iir2: RTC not emulated
34 ** - y503iir, y503iir2: Net not emulated
35 ** - y503iir, y503iir2: Floppy support broken
36 ** - cpc300: Config for MSX Tutor ON/OFF is not saved
37 ** - fs4600: Kanji12 not emulated; how to trigger usage of kanji12??
38 ** - fsa1fm: Firmware not emulated
39 ** - fsa1fm: kanji12 not emulated
40 ** - fsa1fm: Modem not emulated
41 ** - nms8280, nms8280g: Digitizer functionality not emulated
42 ** - vg8230j: Floppy support broken?
43 ** - hbf1: Does not boot. This seems to be caused by a race condition between setting the VBlank bit in the
44 **         VDP status register and the z80 taking the interrupt. Currently the interrupt gets taken before the
45 **         bit can be read, so the code goes into an infinite loop.
46 ** - hbf12: Does not boot; see hbf1.
47 ** - tpc310: Floppy support broken
48 **           7fbb <- c7  => seek 199???
49 ** - hx23f: The builtin word processor displays white squares instead of text
50 ** - expert3i: IDE not emulated
51 ** - expert3t: Turbo not emulated
52 ** - expertac: Does not boot
53 ** - fsa1gt: Add Turbo-R support
54 ** - fsa1st: Add Turbo-R support
55 ** - canonv20e/f/g/s: Investigate different keyboard layouts
56 ** - canonv30: Mapper RAM size unknown
57 ** - mx101: External antenna not emulated
58 ** - pv7: Add support for KB-7 (8KB ram + 2 cartslots)
59 ** - cpc50a/cpc50b: Remove keyboard; and add an external keyboard??
60 ** - cpc51/cpc61: Remove keyboard and add a keyboard connector
61 ** - cpc50a/cpc50b/cpc51: Boot to a black screen, is this correct?
62 ** - mbh2: speed controller not implemented
63 ** - mbh70: Verify firmware operation
64 ** - kmc5000: Floppy support broken
65 ** - mlg3: rs232c not emulated
66 ** - perfect1: Firmware broken
67 ** - mpc2500f: Fix keyboard layout?
68 ** - nms8260: HDD not emulated
69 ** - mpc27: Light pen not emulated
70 ** - phc77: firmware not emulated
71 ** - phc77: printer not emulated
72 ** - hx21, hx22: Hook up kanji rom
73 ** - hx21, hx22: Does not start firmware
74 ** - victhc90/95/95a: Turbo/2nd cpu not supported.
75 ** - victhc90/95/95a: Firmware not working.
76 ** - y503iiir/e: Fix keyboard support
77 ** - y503iiir/e: Floppy support broken
78 ** - y805*: Floppy support broken
79 ** - y8805128r2/e: Firmware not working
80 ** - cpg120: Remove ports
81 ** - cpg120: Add V9958
82 **
83 ** TODO:
84 ** - Add T6950 support. T6950 is selectable between pal and ntsc by a pin.
85 **
86 ** Possibly missing machines:
87 ** - Sanyo MPC-1 (T6950)
88 ** - Toshibo HX-51i (T7937)
89 ** - Sony HB-101 (TMS9118)
90 ************************************************************************
91 
92 This following list is probably incomplete. Corrections are welcome.
93 Entries marked with * still need to be processed.
94 
95 Al Alamiah AX-150 - MSX1 - ax150
96 Al Alamiah AX-170 - MSX1 - ax170
97 Al Alamiah AX-350II - MSX2 - ax350
98 Al Alamiah AX-370 - MSX2 - ax370
99 *Ascii MSXPLAYer 2003
100 *Ascii One Chip MSX
101 Canon V-8 - MSX1 - canonv8
102 Canon V-10 - MSX1 - canonv10
103 Canon V-20 - MSX1 - canonv20
104 Canon V-20E - MSX1 - canonv20e
105 Canon V-20F - MSX1 - canonv20f
106 Canon V-20G - MSX1 - canonv20g
107 Canon V-20S - MSX1 - canonv20s
108 Canon V-25 - MSX2 - canonv25
109 Canon V-30 - MSX2 - canonv30
110 Canon V-30F - MSX2 - canonv30f
111 Casio MX-10 - MSX1 - mx10
112 Casio MX-15 - MSX1 - mx15
113 Casio MX-101 - MSX1 - mx101
114 Casio PV-7 - MSX1 - pv7
115 *Casio PV-7 + KB-7
116 Casio PV-16 - MSX1 - pv16
117 Ciel Expert 3 IDE - MSX2+ - expert3i
118 Ciel Expert 3 Turbo = MSX2+ - expert3t
119 ======================================
120 This one is a full motherboard by CIEL (not an upgrade kit), created to replace the motherboard of a Gradiente Expert (which means that only the case, the analog boards and the keyboard remains Gradiente). This new motherboard has the following built-in features:
121 
122 1) MSX2+
123 2) Support either 3.57MHz or 7.14MHz natively, switched either by software (*1) or by a hardware-switch on the front panel. Turbo-led included.
124 3) Up to 4MB of Memory Mapper (1MB is the most common configuration)
125 4) MSX-Music
126 5) 4 expansion slots (two external on the front panel, two internal)
127 6) Stereo sound (YM2413 channels 0-6 on right, PSG+YM2413 channels 7-9 on left)
128 7) Support the V9938 instead of the V9958 by switching some jumpers
129 8) The main-ram can be placed on slot 2 or slot 3, using jumpers (slot 2 is the default)
130 
131 
132 *1: A routine hidden inside the BIOS frame-0 is used to switch the turbo.
133 
134 Daewoo CPC-88 - MSX1 - cpc88
135 Daewoo CPC-300 - MSX2 - cpc300
136 Daewoo CPC-300E - MSX2 - cpc300e
137 Daewoo CPC-330K - MSX2 - cpc330k
138 Daewoo CPC-400 - MSX2 - cpc400
139 Daewoo CPC-400S - MSX2 cpc400s
140 Daewoo DPC-100 - MSX1 - dpc100
141 Daewoo DPC-180 - MSX1 - dpc180
142 Daewoo DPC-200 - MSX1 - dpc200
143 Daewoo DPC-200E - MSX1 - dpc200e
144 Daewoo Zemmix CPC-50A - MSX1 - cpc50a
145 Daewoo Zemmix CPC-50B - MSX1 - cpc50b
146 Daewoo Zemmix CPC-51 - MSX1 - cpc51
147 Daewoo Zemmix CPC-61 - MSX2 - cpc61
148 Daewoo Zemmix CPG-120 Normal (no clock chip, no printer port) - MSX2 - cpg120
149 *Daewoo Zemmix CPG-120 Turbo - MSX2 - cpg120t
150 Fenner DPC-200 - MSX1 - fdpc200
151 Fenner FPC-500 - MSX1 - fpc500
152 Fenner FPC-900 - MSX2 - fpc900
153 Fenner SPC-800 - MSX1 - fspc800
154 Frael Bruc 100-1 - MSX1 - bruc100
155 Fujitsu FM-X - MSX1 - fmx
156 Goldstar FC-80U - MSX1 - gsfc80u
157 Goldstar FC-200 - MSX1 - gsfc200
158 Goldstar GFC-1080 - MSX1 - gfc1080
159 Goldstar GFC-1080A - MSX1 - gfc1080a
160 Gradiente Expert 1.0 - MSX1 - expert10
161 Gradiente Expert 1.1 - MSX1 - expert11
162 Gradiente Expert 1.3 - MSX1 - expert13
163 Gradiente Expert 2.0 - MSX2 - expert20
164 Gradiente Expert AC88+ - MSX2+ - expertac
165 Gradiente Expert DDPlus - MSX1 - expertdp
166 Gradiente Expert DDX+ - MSX2+ - expertdx
167 Gradiente Expert Plus - MSX1 - expertpl
168 *Haesung Virtual Console
169 *Hitachi MB-H1
170 *Hitachi MB-H1E
171 Hitachi MB-H2 - MSX1 - mbh2
172 *Hitachi MB-H3 - MSX2 (64KB VRAM)
173 *Hitachi MB-H21 - MSX1
174 Hitachi MB-H25 - MSX1 - mbh25
175 Hitachi MB-H50 - MSX1 - mbh50
176 Hitachi MB-H70 - MSX2 - mbh70
177 *Hitachi MB-H80 - MSX1
178 JVC HC-7GB - MSX1 -jvchc7gb
179 Kawai KMC-5000 - MSX2 - kmc5000
180 Mitsubishi ML-F48 - MSX1 - mlf48
181 Mitsubishi ML-F80 - MSX1 - mlf80
182 Mitsubishi ML-F110 - MSX1 - mlf110
183 Mitsubishi ML-F120 - MSX1 - mlf120
184 Mitsubishi ML-FX1 - MSX1 - mlfx1
185 Mitsubishi ML-G1 - MSX2 - mlg1
186 Mitsubishi ML-G3 - MSX2 - mlg3
187 Mitsubishi ML-G10 - MSX2 - mlg10
188 Mitsubishi ML-G30 Model 1 - MSX2 - mlg30
189 Mitsubishi ML-G30 Model 2 - MSX2 - See Mitsubishi ML-G30 Model 1
190 National CF-1200 - MSX1 - cf1200
191 National CF-2000 - MSX1 - cf2000
192 National CF-2700 - MSX1 - cf2700
193 National CF-3000 - MSX1 - cf3000
194 National CF-3300 - MSX1 - cf3300
195 National FS-1300 - MSX1 - fs1300
196 National FS-4000 - MSX1 - fs4000
197 National FS-4000 (alt) - MSX1 - fs4000a
198 National FS-4500 - MSX2 - fs4500
199 National FS-4600 - MSX2 - fs4600
200 National FS-4700 - MSX2 - fs4700
201 National FS-5000F2 - MSX2 - fs5000
202 National FS-5500F1 - MSX2 - fs5500
203 National FS-5500F2 - MSX2 - fs5500
204 Olympia PHC-2 - MSX1 - phc2
205 Olympia PHC-28 - MSX1 - phc28
206 Panasonic CF-2700G - MSX1 - cf2700g
207 Panasonic FS-A1 - MSX2 - fsa1 / fsa1a
208 Panasonic FS-A1 MK2 - MSX2 - fsa1mk2
209 Panasonic FS-A1F - MSX2 - fsa1f
210 Panasonic FS-A1FM - MSX2 - fsa1fm
211 Panasonic FS-A1FX - MSX2+ - fsa1fx
212 Panasonic FS-A1GT - MSX Turbo-R - fsa1gt
213 Panasonic FS-A1ST - MSX Turbo-R - fsa1st
214 Panasonic FS-A1WSX - MSX2+ - fsa1wsx
215 Panasonic FS-A1WX - MSX2+ - fsa1wx / fsa1wxa
216 Perfect Perfect1 - MSX1 - perfect1
217 *Perfect Perfect2 - MSX2
218 Philips NMS-801 - MSX1 - nms801
219 Philips NMS-8220 - MSX2 - nms8220 / nms8220a
220 Philips NMS-8245 - MSX2 - nms8245
221 Philips NMS-8245F - MSX2 - nms8245f
222 Philips NMS-8250 - MSX2 - nms8250
223 Philips NMS-8250F - MSX2 - nms8250f
224 Philips NMS-8250J - MSX2 - nms8250j
225 Philips NMS-8255 - MSX2 - nms8255
226 Philips NMS-8255F - MSX2 - nms8255f
227 Philips NMS-8260 - MSX2 - nms8260
228 Philips NMS-8270 - MSX2 - nms8270 - not confirmed to exist yet
229 Philips NMS-8280 - MSX2 - nms8280
230 Philips NMS-8280F - MSX2 - nms8280f
231 Philips NMS-8280G - MSX2 - nms8280g
232 *Philips PTC MSX PC
233 Philips VG-8000 - MSX1 - vg8000
234 Philips VG-8010 - MSX1 - vg8010
235 Philips VG-8010F - MSX1 - vg8010f
236 Philips VG-8020-00 - MSX1 - vg802000
237 Philips VG-8020-20 - MSX1 - vg802020
238 *Philips VG-8020-40 - MSX1 -
239 Philips VG-8020F - MSX1 - vg8020f
240 Philips VG-8230 - MSX2 - vg8230
241 Philips VG-8230J - MSX2 - vg8230j
242 Philips VG-8235 - MSX2 - vg8235
243 Philips VG-8235F - MSX2 - vg8235f
244 Philips VG-8240 - MSX2 - vg8240
245 ===============================
246 
247 PCB Layout missing
248 
249 
250 Pioneer PX-7 - MSX1 - piopx7
251 ============================
252 
253 |---------------------------------------|
254 |  CN1     CN2                          |
255 |                                       |
256 |                                       |
257 |  IC33                                 |---------------------------------|
258 |                                                      CN3                |
259 |   IC32   IC34            IC38  IC40                                     |
260 |                                                               IC20      |
261 |   IC15   IC18  IC43      IC8   IC35   IC6     |----IC3---|              |
262 |                                               |----------|    IC21      |
263 |   IC16   IC19  |---IC13---|    IC7    IC10                              |
264 |                |----------|                   IC36  IC29      ---       |
265 |   IC17   IC14                                     X2          | |       |
266 |                |--IC12---|     |----IC1-----|       IC37      |I|       |
267 |   IC28   IC11  |---------|     |------------|   X1            |C|       |
268 |                                                               |2|       |
269 |  |----IC4----| |----IC5----|   IC39  IC9      IC42  IC44      | |       |
270 |  |-----------| |-----------|                                  ---       |
271 |                                                                         |
272 |       IC45   IC31    IC30      IC41                                     |
273 |                                                                         |
274 |  CN4 CN5  CN6  CN7                                  CN8                 |
275 |-------------------------------------------------------------------------|
276 
277 Notes:
278   X1 - 3.579MHz
279   X2 - 500kHz
280   IC1 - Sharp LH0080A Z80A-CPU-D
281   IC2 - TMS91289NL
282   IC3 - MB111S112  Z10 (500kHz)
283   IC4  - M5L8255AP-5
284   IC5  - YM2149F
285   IC6,IC7,IC8,IC10,IC45 - SN74LS367AN
286   IC9 - SN74LS245N
287   IC11,IC34 - SN74LS139N
288   IC12 - YM2301-23908 / 53 18 85 A (might indicate a version)
289   IC13 - Pioneer PD5031 2364-213 514100 (M5L2764-213)
290   IC14,IC17,IC30,IC31 - SN74LS157N
291   IC15-IC19 - MB81416-12
292   IC20,IC21 - TMS4416-I5NL
293   IC28 - SN74LS153N
294   IC29 - SN74LS02N
295   IC32 - SN74LS374N
296   IC33 - M5218P
297   IC35 - SN74LS74AN
298   IC36 - SN74LS30N
299   IC37-IC39 - SN74LS04N
300   IC40,IC41 - SN74LS05N
301   IC42 - SN74LS08N
302   IC43,IC44 - SN74LS32N
303   CN1 - Printer
304   CN2 - Cassette recorder
305   CN3 - Expansion slot
306   CN4 - Keyboard
307   CN5 - Keyboard
308   CN6 - Controller #1
309   CN7 - Controller #2
310   CN8 - Expansion slot
311 
312 
313 Pioneer PX-7UK - MSX1 - piopx7uk
314 Pioneer PX-V60 - MSX1 - piopxv60
315 Samsung SPC-800 MSX1 - spc800
316 Sanyo MPC-64 - MSX1 - mpc64
317 Sanyo MPC-100 - MSX1 - mpc100
318 Sanyo MPC-200 - MSX1 - mpc200
319 Sanyo MPC-200SP - MSX1 - mpc200sp
320 Sanyo MPC-2300 - MSX2 - mpc2300
321 Sanyo MPC-2500FD - MSX2 - mpc2500f
322 Sanyo PHC-28L - MSX1 - phc28l
323 Sanyo PHC-28S - MSX1 - phc28s
324 Sanyo Wavy MPC-10 - MSX1 - mpc10
325 Sanyo Wavy MPC-25FD - MSX2 - mpc25fd
326 Sanyo Wavy MPC-27 - MSX2 - mpc27
327 Sanyo Wavy PHC-23 - MSX2 - phc23
328 Sanyo Wavy PHC-35J - MSX2+ - phc35j
329 Sanyo Wavy PHC-55FD2 - MSX2 - phc55fd2
330 Sanyo Wavy PHC-70FD1 - MSX2+ - phc70fd
331 Sanyo Wavy PHC-70FD2 - MSX2+ - phc70fd2
332 Sanyo Wavy PHC-77 - MSX2 - phc77
333 Sharp Epcom HotBit 1.1 - MSX1 - hotbit11
334 Sharp Epcom HotBit 1.2 - MSX1 - hotbit12
335 Sharp Epcom HotBit 1.3b - MSX1 - hotbi13b
336 Sharp Epcom HotBit 1.3p - MSX1 - hotbi13p
337 Sharp Epcom HotBit 2.0 - MSX2 - hotbit20
338 Sony HB-10 - MSX1 - hb10
339 *Sony HB-10D - MSX1
340 Sony HB-10P - MSX1 - hb10p
341 Sony HB-20P - MSX1 - hb20p
342 Sony HB-55 Version 1 - MSX1 - hb55
343 Sony HB-55D - MSX1 - hb55d
344 Sony HB-55P - MSX1 - hb55p
345 Sony HB-75D - MSX1 - hb75d
346 Sony HB-75P - MSX1 - hb75p
347 *Sony HB-101 - MSX1
348 Sony HB-101P - MSX1 - hb101p
349 Sony HB-201 - MSX1 - hp201
350 Sony HB-201P - MSX1 - hb201p
351 Sony HB-501P - MSX1 - hb501p
352 Sony HB-701FD - MSX1 - hb701fd
353 Sony HB-F1 - MSX2 - hbf1
354 Sony HB-F1II - MSX2 - hbf12
355 Sony HB-F1XD - MSX2 - hbf1xd
356 Sony HB-F1XD MK2 - MSX2 - hbf1xdm2
357 Sony HB-F1XDJ - MSX2+ - hbf1xdj
358 Sony HB-F1XV - MSX2+ - hbf1xv
359 Sony HB-F5 - MSX2 - hbf5
360 Sony HB-F500 - MSX2 - hbf500
361 Sony HB-F500F - MSX2 - hbf500f
362 Sony HB-F500P - MSX2 - hbf500p
363 Sony HB-F700D - MSX2 - hbf700d
364 Sony HB-F700F - MSX2 - hbf700f
365 Sony HB-F700P - MSX2 - hbf700p
366 Sony HB-F700S - MSX2 - hbf700s
367 *Sony HB-F750+
368 Sony HB-F900 - MSX2 - hbf900 / hbf900a
369 Sony HB-F9P - MSX2 - hbf9p
370 Sony HB-F9P Russian - MSX2 - hbf9pr
371 Sony HB-F9S - MSX2 - hbf9s
372 Sony HB-F9S+ - MSX2+ - hbf9sp
373 Sony HB-G900AP - MSX2 - hbg900ap
374 Sony HB-G900P - MSX2 - hbg900p
375 *Sony HB-T7
376 Spectravideo SVI-728 - MSX1 - svi728
377 Spectravideo SVI-738 - MSX1 - svi738
378 Spectravideo SVI-738 Arabic - MSX1 - svi738ar
379 Spectravideo SVI-738 Danish - MSX1 - svi738dk
380 Spectravideo SVI-738 Polish - MSX1 - svi738pl
381 Spectravideo SVI-738 Spanish - MSX1 - svi738sp
382 Spectravideo SVI-738 Swedish - MSX1 - svi738sw
383 Talent DPC-200 - MSX1 - tadpc200
384 Talent DPC-200A - MSX1 - tadpc20a
385 Talent TPC-310 - MSX2 - tpc310
386 Talent TPP-311 - MSX2 - tpp311
387 Talent TPS-312 - MSX2 - tps312
388 ==============================
389 
390 PCB Layouts missing
391 
392 
393 Toshiba HX-10 - MSX1 - hx10
394 ===========================
395 
396 Code on PCB: MSX TUK
397         |---------------------------|-------------------|-------------|
398         |   CN1  CN2  CN3  CN4               CN5                      |
399         |                        |---------------------------|        |
400         |                        |---------------------------|        |
401         |                                    CN6                      |
402         |                        IC40                                 |
403         |                                                         CN7 |
404         |                      IC38     IC32     IC33     IC37        |
405         |                                                             |
406         |                      Q2       IC31     IC34     IC35        |
407         |    Q1                                                   CN8 |
408         |                                                 IC39        |
409         |   |--IC15------| |--IC2----|   |----IC1-----|               |
410         |   |------------| |---------|   |------------|               |
411         |                                                 IC30        |
412         |                 IC3    IC4                              CN9 |
413         |                               |-----IC15-------|            |
414         |  IC17   IC18    IC7    IC8    |----------------|            |
415         |                                                 IC27        |
416         |  IC19   IC20    IC9    IC10   |----IC25------|              |
417 |----|  |                               |--------------|  IC26        |
418 | Q  |  |  IC21   IC22    IC11   IC12                                 |
419 |    |  |                                                             |
420 | S  |  |  IC23   IC24    IC13   IC14    IC29             IC28        |
421 |  L |  |                                                             |
422 |    |  |                                 CN11   CN10                 |
423 |----|  |-------------------------------------------------------------|
424 
425 Notes:
426   Mainboard components:
427    IC1               - Sharp LH0080A Z80A-CPU-D
428    IC2               - MB83256
429    IC3,IC4,IC27,IC28 - Texas Instruments SN74LS157N
430    IC7-IC14          - HM4864AP
431    IC15              - Toshiba TCX-1007 (64pin custom chip)
432    IC16              - 40pin chip covered with some kind of heatsink(?), probably TMS9929A
433    IC17-IC24         - 4116-3
434    IC25              - AY-3-8910A
435    IC26              - SN74LS09N
436    IC29              - HD74LS145P
437    IC30-IC34         - M74LS367AP
438    IC35              - MB74LS74A
439    IC37              - HD74LS373P
440    IC38              - Toshiba TC74HCU04P
441    IC39              - HD74LS08P
442    IC40              - TA75559P
443    Q1                - 10687.5
444    Q2                - 3579545
445    CN1               - Cassette connector
446    CN2               - RF connector
447    CN3               - Audio connector
448    CN4               - Video connector
449    CN5               - Expansion connector
450    CN6               - Cartridge connector
451    CN7               - Printer connector
452    CN8               - Joystick 2 connector
453    CN9               - Joystick 1 connector
454    CN10              - Keyboard connector 1
455    CN11              - Keyboard connector 2
456 
457   Extra pcb (video related?) components::
458    Q - 4.433619
459    S - 74LS04
460    L - LVA510
461 
462 
463 Toshiba HX-10D - MSX1 - hx10d
464 Toshiba HX-10DP - MSX1 - hx10dp
465 Toshiba HX-10E - MSX1 - hx10e
466 Toshiba HX-10F - MSX1 - hx10f
467 Toshiba HX-10S - MSX1 - hx10s
468 Toshiba HX-10SA - MSX1 - hx10sa
469 Toshiba HX-20 - MSX1 - hx20
470 Toshiba HX-20I - MSX1 - hx20i
471 Toshiba HX-21 - MXS1 - -hx21
472 Toshiba HX-21I - MSX1 - hx21i
473 Toshiba HX-22 - MSX1 - hx22
474 Toshiba HX-22I - MSX1 - hx22i
475 Toshiba HX-23 - MSX2 - hx23
476 Toshiba HX-23F - MSX2 - hx23f
477 Toshiba HX-23I - HSX2 - hx23i
478 Toshiba HX-33 - MSX2 - hx33
479 Toshiba HX-34 - MSX2 - hx34
480 Toshiba HX-34I - MSX2 - hx34i
481 Toshiba FS-TM1 - MSX2 - fstm1
482 Victor HC-5 - MSX1 - hc5
483 Victor HC-6 - MSX1 - hc6
484 *Victor HC-6AV - MSX1
485 Victor HC-7 - MSX1 - hc7
486 *Victor HC-7E - MSX1
487 *Victor HC-7GB - MSX1
488 *Victor HC-9S - MSX2
489 *Victor HC-80 - MSX2
490 Victor HC-90 - MSX2 - victhc90
491 Victor HC-95 - MSX2 - victhc95
492 Victor HC-95A - MSX2 - victhc95a
493 *Victor HC-95T - MSX2
494 *Victor HC-95V - MSX2
495 Yamaha CX5F-1 - MSX1 - cx5f1
496 Yamaha CX5F-2 - MSX1 - cx5f
497 Yamaha CX5M - MSX1 - cx5m
498 Yamaha CX5MII-128 - MSX1 - cx5m128
499 Yamaha CX5MII - MSX1 - cx5m2
500 Yamaha CX7M - MSX2 - cx7m
501 Yamaha CX7M/128 - MSX2 - cx7m128
502 Yamaha YIS-303 - MSX1 - yis303
503 Yamaha YIS-503 - MSX1 - yis503
504 Yamaha YIS-503F - MSX1 - yis503f
505 Yamaha YIS-503II - MSX1 - yis503ii
506 Yamaha YIS-503IIR (Russian) - MSX1 - y503iir
507 Yamaha YIS-503IIR (Estonian) - MSX1 - y503iir2
508 Yamaha YIS-503M - MSX1 - yis503m
509 Yamaha YIS-503IIIR - MSX2 - y503iiir
510 Yamaha YIS-503IIIR Estonian - MSX2 - y503iiire
511 Yamaha YIS604 - MSX2 - yis60464
512 Yamaha YIS604-128 - MSX2 - yis604
513 Yamaha YIS805-128 - MSX2 - y805128
514 Yamaha YIS805-128R2 - MSX2 - y805128r2
515 Yamaha YIS805-128R2 Estonian - MSX2 - y805128r2e
516 Yamaha YIS805-256 - MSX2 - y805256
517 *Yamaha YIS805-256 2+ - MSX2+ - was this a real machine?
518 Yashica YC-64 - MSX1 - yc64
519 Yeno DPC-64 (same bios as Olympia PHC-2)
520 Yeno MX64 - MSX1 - mx64
521 =============
522 
523 PCB Layouts missing
524 
525 
526 */
527 
528 
529 #include "emu.h"
530 #include "includes/msx.h"
531 #include "formats/dsk_dsk.h"
532 #include "formats/dmk_dsk.h"
533 #include "machine/msx_matsushita.h"
534 #include "machine/msx_s1985.h"
535 #include "machine/msx_systemflags.h"
536 #include "screen.h"
537 #include "softlist.h"
538 #include "speaker.h"
539 
540 
msx_memory_map(address_map & map)541 void msx_state::msx_memory_map(address_map &map)
542 {
543 	map(0x0000, 0xfffe).rw(FUNC(msx_state::msx_mem_read), FUNC(msx_state::msx_mem_write));
544 	map(0xffff, 0xffff).rw(FUNC(msx_state::msx_sec_slot_r), FUNC(msx_state::msx_sec_slot_w));
545 }
546 
547 
msx_io_map(address_map & map)548 void msx_state::msx_io_map(address_map &map)
549 {
550 	map.unmap_value_high();
551 	map.global_mask(0xff);
552 	// 0x7c - 0x7d : MSX-MUSIC/FM-PAC write port. Handlers will be installed if MSX-MUSIC is present in a system
553 	map(0x90, 0x90).r("cent_status_in", FUNC(input_buffer_device::read));
554 	map(0x90, 0x90).w("cent_ctrl_out", FUNC(output_latch_device::write));
555 	map(0x91, 0x91).w("cent_data_out", FUNC(output_latch_device::write));
556 	map(0xa0, 0xa7).rw(m_ay8910, FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w));
557 	map(0xa8, 0xab).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
558 	map(0x98, 0x99).rw("tms9928a", FUNC(tms9928a_device::read), FUNC(tms9928a_device::write));
559 	map(0xd8, 0xd9).rw(FUNC(msx_state::msx_kanji_r), FUNC(msx_state::msx_kanji_w));
560 	// 0xfc - 0xff : Memory mapper I/O ports. I/O handlers will be installed if a memory mapper is present in a system
561 }
562 
563 
msx2_io_map(address_map & map)564 void msx2_state::msx2_io_map(address_map &map)
565 {
566 	map.unmap_value_high();
567 	map.global_mask(0xff);
568 	map(0x40, 0x4f).rw(FUNC(msx2_state::msx_switched_r), FUNC(msx2_state::msx_switched_w));
569 	// 0x7c - 0x7d : MSX-MUSIC/FM-PAC write port. Handlers will be installed if MSX-MUSIC is present in a system
570 	map(0x90, 0x90).r("cent_status_in", FUNC(input_buffer_device::read));
571 	map(0x90, 0x90).w("cent_ctrl_out", FUNC(output_latch_device::write));
572 	map(0x91, 0x91).w("cent_data_out", FUNC(output_latch_device::write));
573 	map(0xa0, 0xa7).rw(m_ay8910, FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w));
574 	map(0xa8, 0xab).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
575 	map(0x98, 0x9b).rw(m_v9938, FUNC(v9938_device::read), FUNC(v9938_device::write));
576 	map(0xb4, 0xb4).w(FUNC(msx2_state::msx_rtc_latch_w));
577 	map(0xb5, 0xb5).rw(FUNC(msx2_state::msx_rtc_reg_r), FUNC(msx2_state::msx_rtc_reg_w));
578 	map(0xd8, 0xd9).rw(FUNC(msx2_state::msx_kanji_r), FUNC(msx2_state::msx_kanji_w));
579 	// 0xfc - 0xff : Memory mapper I/O ports. I/O handlers will be installed if a memory mapper is present in a system
580 }
581 
582 
msx2p_io_map(address_map & map)583 void msx2_state::msx2p_io_map(address_map &map)
584 {
585 	map.unmap_value_high();
586 	map.global_mask(0xff);
587 	map(0x40, 0x4f).rw(FUNC(msx2_state::msx_switched_r), FUNC(msx2_state::msx_switched_w));
588 	// 0x7c - 0x7d : MSX-MUSIC/FM-PAC write port. Handlers will be installed if MSX-MUSIC is present in a system
589 	map(0x90, 0x90).r("cent_status_in", FUNC(input_buffer_device::read));
590 	map(0x90, 0x90).w("cent_ctrl_out", FUNC(output_latch_device::write));
591 	map(0x91, 0x91).w("cent_data_out", FUNC(output_latch_device::write));
592 	map(0xa0, 0xa7).rw(m_ay8910, FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w));
593 	map(0xa8, 0xab).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
594 	map(0x98, 0x9b).rw(m_v9958, FUNC(v9958_device::read), FUNC(v9958_device::write));
595 	map(0xb4, 0xb4).w(FUNC(msx2_state::msx_rtc_latch_w));
596 	map(0xb5, 0xb5).rw(FUNC(msx2_state::msx_rtc_reg_r), FUNC(msx2_state::msx_rtc_reg_w));
597 	map(0xd8, 0xd9).rw(FUNC(msx2_state::msx_kanji_r), FUNC(msx2_state::msx_kanji_w));
598 	// 0xfc - 0xff : Memory mapper I/O ports. I/O handlers will be installed if a memory mapper is present in a system
599 }
600 
601 
602 static INPUT_PORTS_START( msx_dips )
603 	PORT_START("JOY0")
604 	PORT_BIT (0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP)
605 	PORT_BIT (0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN)
606 	PORT_BIT (0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT)
607 	PORT_BIT (0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT)
608 	PORT_BIT (0x10, IP_ACTIVE_LOW, IPT_BUTTON1)
609 	PORT_BIT (0x20, IP_ACTIVE_LOW, IPT_BUTTON2)
610 	PORT_BIT (0x40, IP_ACTIVE_LOW, IPT_UNUSED)
611 	PORT_DIPNAME( 0x80, 0, "Game port 1")
DEF_STR(Joystick)612 	PORT_DIPSETTING(    0x00, DEF_STR( Joystick ))
613 	PORT_DIPSETTING(    0x80, "Mouse")
614 
615 	PORT_START("JOY1")
616 	PORT_BIT (0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP)     PORT_PLAYER(2)
617 	PORT_BIT (0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN)     PORT_PLAYER(2)
618 	PORT_BIT (0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT)     PORT_PLAYER(2)
619 	PORT_BIT (0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT)     PORT_PLAYER(2)
620 	PORT_BIT (0x10, IP_ACTIVE_LOW, IPT_BUTTON1)     PORT_PLAYER(2)
621 	PORT_BIT (0x20, IP_ACTIVE_LOW, IPT_BUTTON2)     PORT_PLAYER(2)
622 	PORT_BIT (0x40, IP_ACTIVE_LOW, IPT_UNUSED)
623 	PORT_DIPNAME( 0x80, 0, "Game port 2")
624 	PORT_DIPSETTING( 0x00, DEF_STR( Joystick ))
625 	PORT_DIPSETTING( 0x80, "Mouse")
626 
627 	PORT_START("DSW")
628 	PORT_DIPNAME( 0x40, 0, "Swap game port 1 and 2")
629 	PORT_DIPSETTING( 0, DEF_STR( No ) )
630 	PORT_DIPSETTING( 0x40, DEF_STR( Yes ) )
631 
632 	PORT_START("MOUSE0")
633 	PORT_BIT( 0xff00, 0x00, IPT_TRACKBALL_X) PORT_SENSITIVITY(100) PORT_KEYDELTA(0) PORT_PLAYER(1)
634 	PORT_BIT( 0x00ff, 0x00, IPT_TRACKBALL_Y) PORT_SENSITIVITY(100) PORT_KEYDELTA(0) PORT_PLAYER(1)
635 
636 	PORT_START("MOUSE1")
637 	PORT_BIT( 0xff00, 0x00, IPT_TRACKBALL_X) PORT_SENSITIVITY(100) PORT_KEYDELTA(0) PORT_PLAYER(2)
638 	PORT_BIT( 0x00ff, 0x00, IPT_TRACKBALL_Y) PORT_SENSITIVITY(100) PORT_KEYDELTA(0) PORT_PLAYER(2)
639 INPUT_PORTS_END
640 
641 
642 /* 2008-05 FP: About keyboards
643 
644 Even if some later Philips (and maybe others) models started to use a layout similar to current
645 PC keyboards, common MSX keyboards have a couple of keys which do not fit usual mapping
646 - the key in the 1st row before 'Backspace', 3rd key from '0', here re-mapped to KEYCODE_BACKSLASH2
647 - the last key in the 4th row, 4th key from 'M' (not counting Shift), here re-mapped to KEYCODE_TILDE
648 
649 These keys corresponds to the following symbols
650 
651     input_port  | msx   | msxuk | msxjp | msxkr |hotbit |expert |
652     -------------------------------------------------------------
653     BACKSLASH2  |  \ |  |  \ |  |  ? |  | won | |  \ ^  |  { }  |
654     -------------------------------------------------------------
655     TILDE       |  DK*  |  DK*  |  _    |  _    |  < >  |  / ?  |
656 
657 * DK = "Dead Key"
658 Notice that 'expert' input_ports covers both versions 1.0 and 1.1.
659 msx2 input_ports have the same symbols as their msx counterparts.
660 
661 TO DO:
662 - check Expert 1.0 layout with the real thing
663 - check Korean layout
664 - fix natural support in systems using msx inputs but with different mapping
665 (these systems could have different uses for keys mapped at the following
666 locations: COLON, QUOTE, BACKSLASH, OPENBRACE, CLOSEBRACE, BACKSLASH2, TILDE.
667 The corresponding symbols would not work properly in -natural mode).
668 
669 Additional note about natural keyboard support: currently,
670 - "Graph" is mapped to 'F6' (this key could be labeled "L Graph")
671 - "Code" is mapped to 'F7' (this key could be labeled "R Graph", "Kana" or "Hangul")
672 - "Stop" is mapped to 'F8'
673 - "Select" is mapped to 'F9'
674 */
675 
676 #define KEYB_ROW0   \
677 	PORT_BIT (0x0001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR(')')   \
678 	PORT_BIT (0x0002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')   \
679 	PORT_BIT (0x0004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('@')   \
680 	PORT_BIT (0x0008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')   \
681 	PORT_BIT (0x0010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')   \
682 	PORT_BIT (0x0020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')   \
683 	PORT_BIT (0x0040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('^')   \
684 	PORT_BIT (0x0080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('&')
685 
686 #define KEYB_EXPERT11_ROW0   \
687 	PORT_BIT (0x0001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR(')')   \
688 	PORT_BIT (0x0002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')   \
689 	PORT_BIT (0x0004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('"')   \
690 	PORT_BIT (0x0008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')   \
691 	PORT_BIT (0x0010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')   \
692 	PORT_BIT (0x0020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')   \
693 	PORT_BIT (0x0040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('^')   \
694 	PORT_BIT (0x0080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('&')
695 
696 #define KEYB_HOTBIT_ROW0     \
697 	PORT_BIT (0x0001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR(')')   \
698 	PORT_BIT (0x0002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')   \
699 	PORT_BIT (0x0004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('@')   \
700 	PORT_BIT (0x0008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')   \
701 	PORT_BIT (0x0010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')   \
702 	PORT_BIT (0x0020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')   \
703 	PORT_BIT (0x0040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('"')   \
704 	PORT_BIT (0x0080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('&')
705 
706 #define KEYB_ROW1   \
707 	PORT_BIT (0x0100, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_8)             PORT_CHAR('8') PORT_CHAR('*')   \
708 	PORT_BIT (0x0200, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_9)             PORT_CHAR('9') PORT_CHAR('(')   \
709 	PORT_BIT (0x0400, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS)         PORT_CHAR('-') PORT_CHAR('_')   \
710 	PORT_BIT (0x0800, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_EQUALS)        PORT_CHAR('=') PORT_CHAR('+')   \
711 	PORT_BIT (0x1000, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH2)    PORT_CHAR('\\') PORT_CHAR('|')  \
712 	PORT_BIT (0x2000, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE)     PORT_CHAR('[') PORT_CHAR('{')   \
713 	PORT_BIT (0x4000, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_CLOSEBRACE)    PORT_CHAR(']') PORT_CHAR('}')   \
714 	PORT_BIT (0x8000, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON)         PORT_CHAR(';') PORT_CHAR(':')
715 
716 #define KEYB_HOTBIT_ROW1     \
717 	PORT_BIT (0x0100, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_8)             PORT_CHAR('8') PORT_CHAR('*')   \
718 	PORT_BIT (0x0200, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_9)             PORT_CHAR('9') PORT_CHAR('(')   \
719 	PORT_BIT (0x0400, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS)         PORT_CHAR('-') PORT_CHAR('_')   \
720 	PORT_BIT (0x0800, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_EQUALS)        PORT_CHAR('=') PORT_CHAR('+')   \
721 	PORT_BIT (0x1000, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH2)    PORT_CHAR('\\') PORT_CHAR('^')  \
722 	PORT_BIT (0x2000, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE)     PORT_CHAR('\'') PORT_CHAR('`')  \
723 	PORT_BIT (0x4000, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_CLOSEBRACE)    PORT_CHAR('"') PORT_CHAR('`')   \
724 	PORT_BIT (0x8000, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON)         PORT_CHAR(0xC7) PORT_CHAR(0xE7)
725 
726 #define KEYB_EXPERT11_ROW1   \
727 	PORT_BIT (0x0100, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_8)             PORT_CHAR('8') PORT_CHAR('\'')  \
728 	PORT_BIT (0x0200, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_9)             PORT_CHAR('9') PORT_CHAR('(')   \
729 	PORT_BIT (0x0400, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS)         PORT_CHAR('-') PORT_CHAR('_')   \
730 	PORT_BIT (0x0800, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_EQUALS)        PORT_CHAR('=') PORT_CHAR('+')   \
731 	PORT_BIT (0x1000, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH2)    PORT_CHAR('{') PORT_CHAR('}')   \
732 	PORT_BIT (0x2000, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE)     PORT_CHAR('\'') PORT_CHAR('`')  \
733 	PORT_BIT (0x4000, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_CLOSEBRACE)    PORT_CHAR('[') PORT_CHAR(']')   \
734 	PORT_BIT (0x8000, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_QUOTE)         PORT_CHAR('~') PORT_CHAR('^')
735 
736 #define KEYB_ROW2   \
737 	PORT_BIT (0x0001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_QUOTE)     PORT_CHAR('\'') PORT_CHAR('"')  \
738 	PORT_BIT (0x0002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('`') PORT_CHAR('~')   \
739 	PORT_BIT (0x0004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA)     PORT_CHAR(',') PORT_CHAR('<')   \
740 	PORT_BIT (0x0008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP)      PORT_CHAR('.') PORT_CHAR('>')   \
741 	PORT_BIT (0x0010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH)     PORT_CHAR('/') PORT_CHAR('?')   \
742 	PORT_BIT (0x0020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Dead Key") PORT_CODE(KEYCODE_TILDE)               \
743 	PORT_BIT (0x0040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_A)         PORT_CHAR('a') PORT_CHAR('A')   \
744 	PORT_BIT (0x0080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_B)         PORT_CHAR('b') PORT_CHAR('B')
745 
746 #define KEYB_HOTBIT_ROW2     \
747 	PORT_BIT (0x0001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_QUOTE)         PORT_CHAR('~') PORT_CHAR('^')   \
748 	PORT_BIT (0x0002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH)     PORT_CHAR('[') PORT_CHAR(']')   \
749 	PORT_BIT (0x0004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA)         PORT_CHAR(',') PORT_CHAR(';')   \
750 	PORT_BIT (0x0008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP)          PORT_CHAR('.') PORT_CHAR(':')   \
751 	PORT_BIT (0x0010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH)         PORT_CHAR('/') PORT_CHAR('?')   \
752 	PORT_BIT (0x0020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_TILDE)         PORT_CHAR('<') PORT_CHAR('>')   \
753 	PORT_BIT (0x0040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_A)             PORT_CHAR('a') PORT_CHAR('A')   \
754 	PORT_BIT (0x0080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_B)             PORT_CHAR('b') PORT_CHAR('B')
755 
756 #define KEYB_EXPERT10_ROW2   \
757 	PORT_BIT (0x0001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_QUOTE)     PORT_CHAR('\'') PORT_CHAR('"')  \
758 	PORT_BIT (0x0002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR(0xC7) PORT_CHAR(0xE7) \
759 	PORT_BIT (0x0004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA)     PORT_CHAR(',') PORT_CHAR('<')   \
760 	PORT_BIT (0x0008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP)      PORT_CHAR('.') PORT_CHAR('>')   \
761 	PORT_BIT (0x0010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH)     PORT_CHAR('/') PORT_CHAR('?')   \
762 	PORT_BIT (0x0020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Dead Key") PORT_CODE(KEYCODE_TILDE)               \
763 	PORT_BIT (0x0040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_A)         PORT_CHAR('a') PORT_CHAR('A')   \
764 	PORT_BIT (0x0080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_B)         PORT_CHAR('b') PORT_CHAR('B')
765 
766 #define KEYB_EXPERT11_ROW2   \
767 	PORT_BIT (0x0001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('*') PORT_CHAR('@')   \
768 	PORT_BIT (0x0002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON)     PORT_CHAR(0xC7) PORT_CHAR(0xE7) \
769 	PORT_BIT (0x0004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA)     PORT_CHAR(',') PORT_CHAR('<')   \
770 	PORT_BIT (0x0008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP)      PORT_CHAR('.') PORT_CHAR('>')   \
771 	PORT_BIT (0x0010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_TILDE)     PORT_CHAR('/') PORT_CHAR('?')   \
772 	PORT_BIT (0x0020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH)     PORT_CHAR(';') PORT_CHAR(':')   \
773 	PORT_BIT (0x0040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_A)         PORT_CHAR('a') PORT_CHAR('A')   \
774 	PORT_BIT (0x0080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_B)         PORT_CHAR('b') PORT_CHAR('B')
775 
776 #define KEYB_ROW3   \
777 	PORT_BIT (0x0100, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C')   \
778 	PORT_BIT (0x0200, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D')   \
779 	PORT_BIT (0x0400, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E')   \
780 	PORT_BIT (0x0800, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F')   \
781 	PORT_BIT (0x1000, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G')   \
782 	PORT_BIT (0x2000, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H')   \
783 	PORT_BIT (0x4000, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I')   \
784 	PORT_BIT (0x8000, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J')
785 
786 #define KEYB_ROW4   \
787 	PORT_BIT (0x0001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K')   \
788 	PORT_BIT (0x0002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L')   \
789 	PORT_BIT (0x0004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M')   \
790 	PORT_BIT (0x0008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N')   \
791 	PORT_BIT (0x0010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O')   \
792 	PORT_BIT (0x0020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P')   \
793 	PORT_BIT (0x0040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q')   \
794 	PORT_BIT (0x0080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R')
795 
796 #define KEYB_ROW5   \
797 	PORT_BIT (0x0100, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S')   \
798 	PORT_BIT (0x0200, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T')   \
799 	PORT_BIT (0x0400, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U')   \
800 	PORT_BIT (0x0800, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V')   \
801 	PORT_BIT (0x1000, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W')   \
802 	PORT_BIT (0x2000, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X')   \
803 	PORT_BIT (0x4000, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y')   \
804 	PORT_BIT (0x8000, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z')
805 
806 #define KEYB_ROW6   \
807 	PORT_BIT (0x0001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LSHIFT)                        PORT_CHAR(UCHAR_SHIFT_1)            \
808 	PORT_BIT (0x0002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LCONTROL)                      PORT_CHAR(UCHAR_SHIFT_2)            \
809 	PORT_BIT (0x0004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("GRAPH") PORT_CODE(KEYCODE_PGUP)       PORT_CHAR(UCHAR_MAMEKEY(F6))        \
810 	PORT_BIT (0x0008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("CAPS") PORT_CODE(KEYCODE_CAPSLOCK)    PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK))  \
811 	PORT_BIT (0x0010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("CODE") PORT_CODE(KEYCODE_PGDN)        PORT_CHAR(UCHAR_MAMEKEY(F7))        \
812 	PORT_BIT (0x0020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F1  F6") PORT_CODE(KEYCODE_F1)        PORT_CHAR(UCHAR_MAMEKEY(F1))        \
813 	PORT_BIT (0x0040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F2  F7") PORT_CODE(KEYCODE_F2)        PORT_CHAR(UCHAR_MAMEKEY(F2))        \
814 	PORT_BIT (0x0080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F3  F8") PORT_CODE(KEYCODE_F3)        PORT_CHAR(UCHAR_MAMEKEY(F3))
815 
816 #define KEYB_EXPERT11_ROW6   \
817 	PORT_BIT (0x0001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LSHIFT)                            PORT_CHAR(UCHAR_SHIFT_1)            \
818 	PORT_BIT (0x0002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("CONTROL") PORT_CODE(KEYCODE_LCONTROL)     PORT_CHAR(UCHAR_SHIFT_2)            \
819 	PORT_BIT (0x0004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("L GRA") PORT_CODE(KEYCODE_PGUP)           PORT_CHAR(UCHAR_MAMEKEY(F6))        \
820 	PORT_BIT (0x0008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("CAPS LOCK") PORT_CODE(KEYCODE_CAPSLOCK)   PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK))  \
821 	PORT_BIT (0x0010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("R GRA") PORT_CODE(KEYCODE_PGDN)           PORT_CHAR(UCHAR_MAMEKEY(F7))        \
822 	PORT_BIT (0x0020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F1  F6") PORT_CODE(KEYCODE_F1)            PORT_CHAR(UCHAR_MAMEKEY(F1))        \
823 	PORT_BIT (0x0040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F2  F7") PORT_CODE(KEYCODE_F2)            PORT_CHAR(UCHAR_MAMEKEY(F2))        \
824 	PORT_BIT (0x0080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F3  F8") PORT_CODE(KEYCODE_F3)            PORT_CHAR(UCHAR_MAMEKEY(F3))
825 
826 #define KEYB_ROW7   \
827 	PORT_BIT (0x0100, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F4  F9") PORT_CODE(KEYCODE_F4)        PORT_CHAR(UCHAR_MAMEKEY(F4))    \
828 	PORT_BIT (0x0200, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F5  F10") PORT_CODE(KEYCODE_F5)       PORT_CHAR(UCHAR_MAMEKEY(F5))    \
829 	PORT_BIT (0x0400, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_ESC)                           PORT_CHAR(UCHAR_MAMEKEY(ESC))   \
830 	PORT_BIT (0x0800, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_TAB)                           PORT_CHAR('\t')                 \
831 	PORT_BIT (0x1000, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("STOP") PORT_CODE(KEYCODE_RCONTROL)    PORT_CHAR(UCHAR_MAMEKEY(F8))    \
832 	PORT_BIT (0x2000, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSPACE)                     PORT_CHAR(8)                    \
833 	PORT_BIT (0x4000, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("SELECT") PORT_CODE(KEYCODE_END)       PORT_CHAR(UCHAR_MAMEKEY(F9))    \
834 	PORT_BIT (0x8000, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_ENTER)                         PORT_CHAR(13)
835 
836 #define KEYB_ROW8   \
837 	PORT_BIT (0x0001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_SPACE)                 PORT_CHAR(' ')                  \
838 	PORT_BIT (0x0002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_HOME)                  PORT_CHAR(UCHAR_MAMEKEY(HOME))  \
839 	PORT_BIT (0x0004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_INSERT)                PORT_CHAR(UCHAR_MAMEKEY(INSERT))\
840 	PORT_BIT (0x0008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("DEL") PORT_CODE(KEYCODE_DEL)  PORT_CHAR(UCHAR_MAMEKEY(DEL))   \
841 	PORT_BIT (0x0010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LEFT)                  PORT_CHAR(UCHAR_MAMEKEY(LEFT))  \
842 	PORT_BIT (0x0020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_UP)                    PORT_CHAR(UCHAR_MAMEKEY(UP))    \
843 	PORT_BIT (0x0040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_DOWN)                  PORT_CHAR(UCHAR_MAMEKEY(DOWN))  \
844 	PORT_BIT (0x0080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_RIGHT)                 PORT_CHAR(UCHAR_MAMEKEY(RIGHT))
845 
846 #define KEYB_ROW9   \
847 	PORT_BIT (0x0100, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_ASTERISK)  PORT_CHAR(UCHAR_MAMEKEY(ASTERISK))  \
848 	PORT_BIT (0x0200, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_PLUS_PAD)  PORT_CHAR(UCHAR_MAMEKEY(PLUS_PAD))  \
849 	PORT_BIT (0x0400, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH_PAD) PORT_CHAR(UCHAR_MAMEKEY(SLASH_PAD)) \
850 	PORT_BIT (0x0800, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_0_PAD)     PORT_CHAR(UCHAR_MAMEKEY(0_PAD))     \
851 	PORT_BIT (0x1000, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_1_PAD)     PORT_CHAR(UCHAR_MAMEKEY(1_PAD))     \
852 	PORT_BIT (0x2000, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_2_PAD)     PORT_CHAR(UCHAR_MAMEKEY(2_PAD))     \
853 	PORT_BIT (0x4000, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_3_PAD)     PORT_CHAR(UCHAR_MAMEKEY(3_PAD))     \
854 	PORT_BIT (0x8000, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_4_PAD)     PORT_CHAR(UCHAR_MAMEKEY(4_PAD))
855 
856 #define KEYB_ROW10  \
857 	PORT_BIT (0x0001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_5_PAD)     PORT_CHAR(UCHAR_MAMEKEY(5_PAD))     \
858 	PORT_BIT (0x0002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_6_PAD)     PORT_CHAR(UCHAR_MAMEKEY(6_PAD))     \
859 	PORT_BIT (0x0004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_7_PAD)     PORT_CHAR(UCHAR_MAMEKEY(7_PAD))     \
860 	PORT_BIT (0x0008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_8_PAD)     PORT_CHAR(UCHAR_MAMEKEY(8_PAD))     \
861 	PORT_BIT (0x0010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_9_PAD)     PORT_CHAR(UCHAR_MAMEKEY(9_PAD))     \
862 	PORT_BIT (0x0020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(MINUS_PAD)) \
863 	PORT_BIT (0x0040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_ENTER_PAD) PORT_CHAR(UCHAR_MAMEKEY(COMMA_PAD)) \
864 	PORT_BIT (0x0080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_DEL_PAD)   PORT_CHAR(UCHAR_MAMEKEY(DEL_PAD))
865 
866 static INPUT_PORTS_START( msx )
867 	PORT_START("KEY0")
868 	KEYB_ROW0
869 	KEYB_ROW1
870 
871 	PORT_START("KEY1")
872 	KEYB_ROW2
873 	KEYB_ROW3
874 
875 	PORT_START("KEY2")
876 	KEYB_ROW4
877 	KEYB_ROW5
878 
879 	PORT_START("KEY3")
880 	KEYB_ROW6
881 	KEYB_ROW7
882 
883 	PORT_START("KEY4")
884 	KEYB_ROW8
885 	PORT_BIT (0xff00, IP_ACTIVE_LOW, IPT_UNUSED)
886 
887 	PORT_START("KEY5")
888 	PORT_BIT (0xffff, IP_ACTIVE_LOW, IPT_UNUSED)
889 
890 	PORT_INCLUDE( msx_dips )
891 INPUT_PORTS_END
892 
893 #ifdef UNREFERENCED_CODE
894 static INPUT_PORTS_START( msxuk )
895 	PORT_START("KEY0")
896 	KEYB_ROW0
897 	KEYB_ROW1
898 
899 	PORT_START("KEY1")
900 	PORT_BIT (0x0001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_QUOTE)         PORT_CHAR('\'') PORT_CHAR('"')
901 	PORT_BIT (0x0002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH)     PORT_CHAR(0xA3) PORT_CHAR('~')
902 	PORT_BIT (0x0004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA)         PORT_CHAR(',') PORT_CHAR('<')
903 	PORT_BIT (0x0008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP)          PORT_CHAR('.') PORT_CHAR('>')
904 	PORT_BIT (0x0010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH)         PORT_CHAR('/') PORT_CHAR('?')
905 	PORT_BIT (0x0020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Dead Key") PORT_CODE(KEYCODE_TILDE)
906 	PORT_BIT (0x0040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_A)             PORT_CHAR('a') PORT_CHAR('A')
907 	PORT_BIT (0x0080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_B)             PORT_CHAR('b') PORT_CHAR('B')
908 	KEYB_ROW3
909 
910 	PORT_START("KEY2")
911 	KEYB_ROW4
912 	KEYB_ROW5
913 
914 	PORT_START("KEY3")
915 	KEYB_ROW6
916 	KEYB_ROW7
917 
918 	PORT_START("KEY4")
919 	KEYB_ROW8
920 	PORT_BIT (0xff00, IP_ACTIVE_LOW, IPT_UNUSED)
921 
922 	PORT_START("KEY5")
923 	PORT_BIT (0xffff, IP_ACTIVE_LOW, IPT_UNUSED)
924 
925 	PORT_INCLUDE( msx_dips )
926 INPUT_PORTS_END
927 #endif
928 
929 #define KEYB_JAP_ROW0   \
930 	PORT_BIT (0x0001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR('0')                  \
931 	PORT_BIT (0x0002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')   \
932 	PORT_BIT (0x0004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('"')   \
933 	PORT_BIT (0x0008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')   \
934 	PORT_BIT (0x0010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')   \
935 	PORT_BIT (0x0020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')   \
936 	PORT_BIT (0x0040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&')   \
937 	PORT_BIT (0x0080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'')
938 
939 #define KEYB_JAP_ROW1   \
940 	PORT_BIT (0x0100, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_8)             PORT_CHAR('8') PORT_CHAR('(')   \
941 	PORT_BIT (0x0200, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_9)             PORT_CHAR('9') PORT_CHAR(')')   \
942 	PORT_BIT (0x0400, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS)         PORT_CHAR('-') PORT_CHAR('=')   \
943 	PORT_BIT (0x0800, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_EQUALS)        PORT_CHAR('^') PORT_CHAR('~')   \
944 	PORT_BIT (0x1000, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH2)    PORT_CHAR(0xA5) PORT_CHAR('|')\
945 	PORT_BIT (0x2000, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE)     PORT_CHAR('@') PORT_CHAR('`')   \
946 	PORT_BIT (0x4000, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_CLOSEBRACE)    PORT_CHAR('[') PORT_CHAR('{')   \
947 	PORT_BIT (0x8000, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON)         PORT_CHAR(';') PORT_CHAR('+')
948 
949 #define KEYB_KOR_ROW1   \
950 	PORT_BIT (0x0100, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_8)             PORT_CHAR('8') PORT_CHAR('(')   \
951 	PORT_BIT (0x0200, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_9)             PORT_CHAR('9') PORT_CHAR(')')   \
952 	PORT_BIT (0x0400, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS)         PORT_CHAR('-') PORT_CHAR('=')   \
953 	PORT_BIT (0x0800, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_EQUALS)        PORT_CHAR('^') PORT_CHAR('~')   \
954 	PORT_BIT (0x1000, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xE2\x82\xA9 |") PORT_CODE(KEYCODE_BACKSLASH2) PORT_CHAR(0xffe6) PORT_CHAR('|') \
955 	PORT_BIT (0x2000, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE)     PORT_CHAR('@') PORT_CHAR('`')   \
956 	PORT_BIT (0x4000, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_CLOSEBRACE)    PORT_CHAR('[') PORT_CHAR('{')   \
957 	PORT_BIT (0x8000, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON)         PORT_CHAR(';') PORT_CHAR('+')
958 
959 #define KEYB_JAP_ROW2   \
960 	PORT_BIT (0x0001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_QUOTE)     PORT_CHAR(':') PORT_CHAR('*')   \
961 	PORT_BIT (0x0002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR(']') PORT_CHAR('}')   \
962 	PORT_BIT (0x0004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA)     PORT_CHAR(',') PORT_CHAR('<')   \
963 	PORT_BIT (0x0008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP)      PORT_CHAR('.') PORT_CHAR('>')   \
964 	PORT_BIT (0x0010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH)     PORT_CHAR('/') PORT_CHAR('?')   \
965 	PORT_BIT (0x0020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("_") PORT_CODE(KEYCODE_TILDE) PORT_CHAR('_')       \
966 	PORT_BIT (0x0040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_A)         PORT_CHAR('a') PORT_CHAR('A')   \
967 	PORT_BIT (0x0080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_B)         PORT_CHAR('b') PORT_CHAR('B')
968 
969 static INPUT_PORTS_START( msxjp )
970 	PORT_START("KEY0")
971 	KEYB_JAP_ROW0
972 	KEYB_JAP_ROW1
973 
974 	PORT_START("KEY1")
975 	KEYB_JAP_ROW2
976 	KEYB_ROW3
977 
978 	PORT_START("KEY2")
979 	KEYB_ROW4
980 	KEYB_ROW5
981 
982 	PORT_START("KEY3")
983 	PORT_BIT (0x0001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LSHIFT)                        PORT_CHAR(UCHAR_SHIFT_1)
984 	PORT_BIT (0x0002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LCONTROL)                      PORT_CHAR(UCHAR_SHIFT_2)
985 	PORT_BIT (0x0004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("GRAPH") PORT_CODE(KEYCODE_PGUP)       PORT_CHAR(UCHAR_MAMEKEY(F6))
986 	PORT_BIT (0x0008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("CAPS") PORT_CODE(KEYCODE_CAPSLOCK)    PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK))
987 	PORT_BIT (0x0010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("KANA") PORT_CODE(KEYCODE_PGDN)        PORT_CHAR(UCHAR_MAMEKEY(F7))
988 	PORT_BIT (0x0020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F1  F6") PORT_CODE(KEYCODE_F1)        PORT_CHAR(UCHAR_MAMEKEY(F1))
989 	PORT_BIT (0x0040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F2  F7") PORT_CODE(KEYCODE_F2)        PORT_CHAR(UCHAR_MAMEKEY(F2))
990 	PORT_BIT (0x0080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F3  F8") PORT_CODE(KEYCODE_F3)        PORT_CHAR(UCHAR_MAMEKEY(F3))
991 	KEYB_ROW7
992 
993 	PORT_START("KEY4")
994 	KEYB_ROW8
995 	PORT_BIT (0xff00, IP_ACTIVE_LOW, IPT_UNUSED)
996 
997 	PORT_START("KEY5")
998 	PORT_BIT (0xffff, IP_ACTIVE_LOW, IPT_UNUSED)
999 
1000 	PORT_INCLUDE( msx_dips )
1001 INPUT_PORTS_END
1002 
1003 static INPUT_PORTS_START( msxkr )
1004 	PORT_START("KEY0")
1005 	KEYB_JAP_ROW0
1006 	KEYB_KOR_ROW1
1007 
1008 	PORT_START("KEY1")
1009 	KEYB_JAP_ROW2
1010 	KEYB_ROW3
1011 
1012 	PORT_START("KEY2")
1013 	KEYB_ROW4
1014 	KEYB_ROW5
1015 
1016 	PORT_START("KEY3")
1017 	PORT_BIT (0x0001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LSHIFT)                        PORT_CHAR(UCHAR_SHIFT_1)
1018 	PORT_BIT (0x0002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LCONTROL)                      PORT_CHAR(UCHAR_SHIFT_2)
1019 	PORT_BIT (0x0004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("GRAPH") PORT_CODE(KEYCODE_PGUP)       PORT_CHAR(UCHAR_MAMEKEY(F6))
1020 	PORT_BIT (0x0008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("CAPS") PORT_CODE(KEYCODE_CAPSLOCK)    PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK))
1021 	PORT_BIT (0x0010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Hangul") PORT_CODE(KEYCODE_PGDN)      PORT_CHAR(UCHAR_MAMEKEY(F7))
1022 	PORT_BIT (0x0020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F1  F6") PORT_CODE(KEYCODE_F1)        PORT_CHAR(UCHAR_MAMEKEY(F1))
1023 	PORT_BIT (0x0040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F2  F7") PORT_CODE(KEYCODE_F2)        PORT_CHAR(UCHAR_MAMEKEY(F2))
1024 	PORT_BIT (0x0080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F3  F8") PORT_CODE(KEYCODE_F3)        PORT_CHAR(UCHAR_MAMEKEY(F3))
1025 	KEYB_ROW7
1026 
1027 	PORT_START("KEY4")
1028 	KEYB_ROW8
1029 	PORT_BIT (0xff00, IP_ACTIVE_LOW, IPT_UNUSED)
1030 
1031 	PORT_START("KEY5")
1032 	PORT_BIT (0xffff, IP_ACTIVE_LOW, IPT_UNUSED)
1033 
1034 	PORT_INCLUDE( msx_dips )
1035 INPUT_PORTS_END
1036 
1037 static INPUT_PORTS_START( hotbit )
1038 	PORT_START("KEY0")
1039 	KEYB_HOTBIT_ROW0
1040 	KEYB_HOTBIT_ROW1
1041 
1042 	PORT_START("KEY1")
1043 	KEYB_HOTBIT_ROW2
1044 	KEYB_ROW3
1045 
1046 	PORT_START("KEY2")
1047 	KEYB_ROW4
1048 	KEYB_ROW5
1049 
1050 	PORT_START("KEY3")
1051 	KEYB_ROW6
1052 	KEYB_ROW7
1053 
1054 	PORT_START("KEY4")
1055 	KEYB_ROW8
1056 	PORT_BIT (0xff00, IP_ACTIVE_LOW, IPT_UNUSED)
1057 
1058 	PORT_START("KEY5")
1059 	PORT_BIT (0xffff, IP_ACTIVE_LOW, IPT_UNUSED)
1060 
1061 	PORT_INCLUDE( msx_dips )
1062 INPUT_PORTS_END
1063 
1064 /* 2008-05 FP: I guess these belong to the keypad */
1065 #define KEYB_EXPERT11_ROW9  \
1066 	PORT_BIT (0x0100, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_PLUS_PAD)      PORT_CHAR(UCHAR_MAMEKEY(PLUS_PAD))  \
1067 	PORT_BIT (0x0200, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS_PAD)     PORT_CHAR(UCHAR_MAMEKEY(MINUS_PAD)) \
1068 	PORT_BIT (0x0400, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_ASTERISK)      PORT_CHAR(UCHAR_MAMEKEY(ASTERISK))  \
1069 	PORT_BIT (0x0800, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH_PAD)     PORT_CHAR(UCHAR_MAMEKEY(SLASH_PAD)) \
1070 	PORT_BIT (0xf000, IP_ACTIVE_LOW, IPT_UNUSED)
1071 static INPUT_PORTS_START( expert11 )
1072 	PORT_START("KEY0")
1073 	KEYB_EXPERT11_ROW0
1074 	KEYB_EXPERT11_ROW1
1075 
1076 	PORT_START("KEY1")
1077 	KEYB_EXPERT11_ROW2
1078 	KEYB_ROW3
1079 
1080 	PORT_START("KEY2")
1081 	KEYB_ROW4
1082 	KEYB_ROW5
1083 
1084 	PORT_START("KEY3")
1085 	KEYB_EXPERT11_ROW6
1086 	KEYB_ROW7
1087 
1088 	PORT_START("KEY4")
1089 	KEYB_ROW8
1090 	KEYB_EXPERT11_ROW9
1091 
1092 	PORT_START("KEY5")
1093 	PORT_BIT (0xffff, IP_ACTIVE_LOW, IPT_UNUSED)
1094 
1095 	PORT_INCLUDE( msx_dips )
1096 INPUT_PORTS_END
1097 
1098 static INPUT_PORTS_START( expert10 )
1099 	PORT_START("KEY0")
1100 	KEYB_ROW0
1101 	KEYB_ROW1
1102 
1103 	PORT_START("KEY1")
1104 	KEYB_EXPERT10_ROW2
1105 	KEYB_ROW3
1106 
1107 	PORT_START("KEY2")
1108 	KEYB_ROW4
1109 	KEYB_ROW5
1110 
1111 	PORT_START("KEY3")
1112 	KEYB_EXPERT11_ROW6
1113 	KEYB_ROW7
1114 
1115 	PORT_START("KEY4")
1116 	KEYB_ROW8
1117 	KEYB_EXPERT11_ROW9
1118 
1119 	PORT_START("KEY5")
1120 	PORT_BIT (0xffff, IP_ACTIVE_LOW, IPT_UNUSED)
1121 
1122 	PORT_INCLUDE( msx_dips )
1123 INPUT_PORTS_END
1124 
1125 static INPUT_PORTS_START( msx2 )
1126 	PORT_START("KEY0")
1127 	KEYB_ROW0
1128 	KEYB_ROW1
1129 
1130 	PORT_START("KEY1")
1131 	KEYB_ROW2
1132 	KEYB_ROW3
1133 
1134 	PORT_START("KEY2")
1135 	KEYB_ROW4
1136 	KEYB_ROW5
1137 
1138 	PORT_START("KEY3")
1139 	KEYB_ROW6
1140 	KEYB_ROW7
1141 
1142 	PORT_START("KEY4")
1143 	KEYB_ROW8
1144 	KEYB_ROW9
1145 
1146 	PORT_START("KEY5")
1147 	KEYB_ROW10
1148 
1149 	PORT_INCLUDE( msx_dips )
1150 INPUT_PORTS_END
1151 
1152 static INPUT_PORTS_START( msx2jp )
1153 	PORT_START("KEY0")
1154 	KEYB_JAP_ROW0
1155 	KEYB_JAP_ROW1
1156 
1157 	PORT_START("KEY1")
1158 	KEYB_JAP_ROW2
1159 	KEYB_ROW3
1160 
1161 	PORT_START("KEY2")
1162 	KEYB_ROW4
1163 	KEYB_ROW5
1164 
1165 	PORT_START("KEY3")
1166 	PORT_BIT (0x0001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LSHIFT)                        PORT_CHAR(UCHAR_SHIFT_1)
1167 	PORT_BIT (0x0002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LCONTROL)                      PORT_CHAR(UCHAR_SHIFT_2)
1168 	PORT_BIT (0x0004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("GRAPH") PORT_CODE(KEYCODE_PGUP)       PORT_CHAR(UCHAR_MAMEKEY(F6))
1169 	PORT_BIT (0x0008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("CAPS") PORT_CODE(KEYCODE_CAPSLOCK)    PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK))
1170 	PORT_BIT (0x0010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("KANA") PORT_CODE(KEYCODE_PGDN)        PORT_CHAR(UCHAR_MAMEKEY(F7))
1171 	PORT_BIT (0x0020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F1  F6") PORT_CODE(KEYCODE_F1)        PORT_CHAR(UCHAR_MAMEKEY(F1))
1172 	PORT_BIT (0x0040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F2  F7") PORT_CODE(KEYCODE_F2)        PORT_CHAR(UCHAR_MAMEKEY(F2))
1173 	PORT_BIT (0x0080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F3  F8") PORT_CODE(KEYCODE_F3)        PORT_CHAR(UCHAR_MAMEKEY(F3))
1174 	KEYB_ROW7
1175 
1176 	PORT_START("KEY4")
1177 	KEYB_ROW8
1178 	KEYB_ROW9
1179 
1180 	PORT_START("KEY5")
1181 	KEYB_ROW10
1182 
1183 	PORT_INCLUDE( msx_dips )
1184 INPUT_PORTS_END
1185 
1186 static INPUT_PORTS_START( msx2kr )
1187 	PORT_START("KEY0")
1188 	KEYB_JAP_ROW0
1189 	KEYB_KOR_ROW1
1190 
1191 	PORT_START("KEY1")
1192 	KEYB_JAP_ROW2
1193 	KEYB_ROW3
1194 
1195 	PORT_START("KEY2")
1196 	KEYB_ROW4
1197 	KEYB_ROW5
1198 
1199 	PORT_START("KEY3")
1200 	PORT_BIT (0x0001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LSHIFT)                        PORT_CHAR(UCHAR_SHIFT_1)
1201 	PORT_BIT (0x0002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LCONTROL)                      PORT_CHAR(UCHAR_SHIFT_2)
1202 	PORT_BIT (0x0004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("GRAPH") PORT_CODE(KEYCODE_PGUP)       PORT_CHAR(UCHAR_MAMEKEY(F6))
1203 	PORT_BIT (0x0008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("CAPS") PORT_CODE(KEYCODE_CAPSLOCK)    PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK))
1204 	PORT_BIT (0x0010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Hangul") PORT_CODE(KEYCODE_PGDN)      PORT_CHAR(UCHAR_MAMEKEY(F7))
1205 	PORT_BIT (0x0020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F1  F6") PORT_CODE(KEYCODE_F1)        PORT_CHAR(UCHAR_MAMEKEY(F1))
1206 	PORT_BIT (0x0040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F2  F7") PORT_CODE(KEYCODE_F2)        PORT_CHAR(UCHAR_MAMEKEY(F2))
1207 	PORT_BIT (0x0080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F3  F8") PORT_CODE(KEYCODE_F3)        PORT_CHAR(UCHAR_MAMEKEY(F3))
1208 	KEYB_ROW7
1209 
1210 	PORT_START("KEY4")
1211 	KEYB_ROW8
1212 	PORT_BIT (0xff00, IP_ACTIVE_LOW, IPT_UNUSED)
1213 
1214 	PORT_START("KEY5")
1215 	PORT_BIT (0xffff, IP_ACTIVE_LOW, IPT_UNUSED)
1216 
1217 	PORT_INCLUDE( msx_dips )
1218 INPUT_PORTS_END
1219 
1220 
1221 // Some MSX2+ can switch the z80 clock between 3.5 and 5.3 MHz
1222 WRITE_LINE_MEMBER(msx2_state::turbo_w)
1223 {
1224 	// 0 - 5.369317 MHz
1225 	// 1 - 3.579545 MHz
1226 	m_maincpu->set_unscaled_clock(21.477272_MHz_XTAL / (state ? 6 : 4));
1227 }
1228 
1229 
1230 #define MSX_XBORDER_PIXELS      15
1231 #define MSX_YBORDER_PIXELS      27
1232 #define MSX_TOTAL_XRES_PIXELS       256 + (MSX_XBORDER_PIXELS * 2)
1233 #define MSX_TOTAL_YRES_PIXELS       192 + (MSX_YBORDER_PIXELS * 2)
1234 #define MSX_VISIBLE_XBORDER_PIXELS  8
1235 #define MSX_VISIBLE_YBORDER_PIXELS  24
1236 
1237 
msx1_cartlist(machine_config & config)1238 void msx_state::msx1_cartlist(machine_config &config)
1239 {
1240 	SOFTWARE_LIST(config, "cart_list").set_original("msx1_cart");
1241 }
1242 
msx1_floplist(machine_config & config)1243 void msx_state::msx1_floplist(machine_config &config)
1244 {
1245 	SOFTWARE_LIST(config, "flop_list").set_original("msx1_flop");
1246 }
1247 
msx2_cartlist(machine_config & config)1248 void msx2_state::msx2_cartlist(machine_config &config)
1249 {
1250 	SOFTWARE_LIST(config, "cart_list").set_original("msx2_cart");
1251 	SOFTWARE_LIST(config, "msx1_crt_l").set_compatible("msx1_cart");
1252 }
1253 
msx2_floplist(machine_config & config)1254 void msx2_state::msx2_floplist(machine_config &config)
1255 {
1256 	SOFTWARE_LIST(config, "flop_list").set_original("msx2_flop");
1257 	SOFTWARE_LIST(config, "msx1_flp_l").set_compatible("msx1_flop");
1258 }
1259 
msx2p_floplist(machine_config & config)1260 void msx2_state::msx2p_floplist(machine_config &config)
1261 {
1262 	SOFTWARE_LIST(config, "flop_list").set_original("msx2p_flop");
1263 	SOFTWARE_LIST(config, "msx2_flp_l").set_compatible("msx2_flop");
1264 	SOFTWARE_LIST(config, "msx1_flp_l").set_compatible("msx1_flop");    // maybe not?
1265 }
1266 
msxr_floplist(machine_config & config)1267 void msx2_state::msxr_floplist(machine_config &config)
1268 {
1269 	SOFTWARE_LIST(config, "flop_list").set_original("msxr_flop");
1270 	SOFTWARE_LIST(config, "msx2p_flp_l").set_compatible("msx2p_flop");
1271 	SOFTWARE_LIST(config, "msx2_flp_l").set_compatible("msx2_flop");    // maybe not?
1272 	SOFTWARE_LIST(config, "msx1_flp_l").set_compatible("msx1_flop");    // maybe not?
1273 }
1274 
FLOPPY_FORMATS_MEMBER(msx_state::floppy_formats)1275 FLOPPY_FORMATS_MEMBER( msx_state::floppy_formats )
1276 	FLOPPY_MSX_FORMAT,
1277 	FLOPPY_DMK_FORMAT
1278 FLOPPY_FORMATS_END
1279 
1280 static void msx_floppies(device_slot_interface &device)
1281 {
1282 	device.option_add("35dd", FLOPPY_35_DD);
1283 	device.option_add("35ssdd", FLOPPY_35_SSDD);
1284 }
1285 
msx_fd1793(machine_config & config)1286 void msx_state::msx_fd1793(machine_config &config)
1287 {
1288 	fd1793_device& fdc(FD1793(config, "fdc", 4_MHz_XTAL / 4));
1289 	fdc.set_force_ready(true);
1290 }
1291 
msx_wd2793_force_ready(machine_config & config)1292 void msx_state::msx_wd2793_force_ready(machine_config &config)
1293 {
1294 	// From NMS8245 schematics:
1295 	// READY + HLT - pulled high
1296 	// SSO/-ENMF + -DDEN + ENP + -5/8 - pulled low
1297 	wd2793_device& fdc(WD2793(config, "fdc", 4_MHz_XTAL / 4));
1298 	fdc.set_force_ready(true);
1299 }
1300 
msx_wd2793(machine_config & config)1301 void msx_state::msx_wd2793(machine_config &config)
1302 {
1303 	WD2793(config, "fdc", 4_MHz_XTAL / 4);
1304 }
1305 
msx_mb8877a(machine_config & config)1306 void msx_state::msx_mb8877a(machine_config & config)
1307 {
1308 	// From CF-3300 FDC schematic:
1309 	// READY + HLT - pulled high
1310 	// -DDEN - pulled low
1311 	mb8877_device& fdc(MB8877(config, "fdc", 4_MHz_XTAL / 4));
1312 	fdc.set_force_ready(true);
1313 }
1314 
msx_tc8566af(machine_config & config)1315 void msx_state::msx_tc8566af(machine_config &config)
1316 {
1317 	TC8566AF(config, "fdc", 16'000'000);
1318 }
1319 
msx_microsol(machine_config & config)1320 void msx_state::msx_microsol(machine_config &config)
1321 {
1322 	wd2793_device& fdc(WD2793(config, "fdc", 4_MHz_XTAL / 4));
1323 	fdc.set_force_ready(true);
1324 }
1325 
msx_1_35_ssdd_drive(machine_config & config)1326 void msx_state::msx_1_35_ssdd_drive(machine_config &config)
1327 {
1328 	FLOPPY_CONNECTOR(config, "fdc:0", msx_floppies, "35ssdd", msx_state::floppy_formats);
1329 }
1330 
msx_1_35_dd_drive(machine_config & config)1331 void msx_state::msx_1_35_dd_drive(machine_config &config)
1332 {
1333 	FLOPPY_CONNECTOR(config, "fdc:0", msx_floppies, "35dd", msx_state::floppy_formats);
1334 }
1335 
msx_2_35_dd_drive(machine_config & config)1336 void msx_state::msx_2_35_dd_drive(machine_config &config)
1337 {
1338 	FLOPPY_CONNECTOR(config, "fdc:0", msx_floppies, "35dd", msx_state::floppy_formats);
1339 	FLOPPY_CONNECTOR(config, "fdc:1", msx_floppies, "35dd", msx_state::floppy_formats);
1340 }
1341 
msx_ym2413(machine_config & config)1342 void msx2_state::msx_ym2413(machine_config &config)
1343 {
1344 	YM2413(config, "ym2413", 21.477272_MHz_XTAL / 6).add_route(ALL_OUTPUTS, "speaker", 0.4);
1345 }
1346 
msx2_64kb_vram(machine_config & config)1347 void msx2_state::msx2_64kb_vram(machine_config &config)
1348 {
1349 	m_v9938->set_vram_size(0x10000);
1350 }
1351 
msx(machine_config & config)1352 void msx_state::msx(machine_config &config)
1353 {
1354 	/* basic machine hardware */
1355 	Z80(config, m_maincpu, 10.738635_MHz_XTAL / 3);         /* 3.579545 MHz */
1356 	m_maincpu->set_addrmap(AS_PROGRAM, &msx_state::msx_memory_map);
1357 	m_maincpu->set_addrmap(AS_IO, &msx_state::msx_io_map);
1358 	m_maincpu->set_vblank_int("screen", FUNC(msx_state::msx_interrupt)); /* Needed for mouse updates */
1359 	config.set_maximum_quantum(attotime::from_hz(60));
1360 
1361 	INPUT_MERGER_ANY_HIGH(config, "mainirq").output_handler().set_inputline("maincpu", INPUT_LINE_IRQ0);
1362 
1363 	i8255_device &ppi(I8255(config, "ppi8255"));
1364 	ppi.out_pa_callback().set(FUNC(msx_state::msx_ppi_port_a_w));
1365 	ppi.in_pb_callback().set(FUNC(msx_state::msx_ppi_port_b_r));
1366 	ppi.out_pc_callback().set(FUNC(msx_state::msx_ppi_port_c_w));
1367 
1368 	/* sound hardware */
1369 	SPEAKER(config, "speaker").front_center();
1370 	DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.1);
1371 
1372 	AY8910(config, m_ay8910, 10.738635_MHz_XTAL / 3 / 2);
1373 	m_ay8910->set_flags(AY8910_SINGLE_OUTPUT);
1374 	m_ay8910->port_a_read_callback().set(FUNC(msx_state::msx_psg_port_a_r));
1375 	m_ay8910->port_b_read_callback().set(FUNC(msx_state::msx_psg_port_b_r));
1376 	m_ay8910->port_a_write_callback().set(FUNC(msx_state::msx_psg_port_a_w));
1377 	m_ay8910->port_b_write_callback().set(FUNC(msx_state::msx_psg_port_b_w));
1378 	m_ay8910->add_route(ALL_OUTPUTS, "speaker", 0.3);
1379 
1380 	/* printer */
1381 	centronics_device &centronics(CENTRONICS(config, "centronics", centronics_devices, "printer"));
1382 	centronics.busy_handler().set("cent_status_in", FUNC(input_buffer_device::write_bit1));
1383 
1384 	output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
1385 	centronics.set_output_latch(cent_data_out);
1386 	INPUT_BUFFER(config, "cent_status_in");
1387 
1388 	output_latch_device &cent_ctrl_out(OUTPUT_LATCH(config, "cent_ctrl_out"));
1389 	cent_ctrl_out.bit_handler<1>().set(centronics, FUNC(centronics_device::write_strobe));
1390 
1391 	/* cassette */
1392 	CASSETTE(config, m_cassette);
1393 	m_cassette->set_formats(fmsx_cassette_formats);
1394 	m_cassette->set_default_state(CASSETTE_PLAY);
1395 	m_cassette->add_route(ALL_OUTPUTS, "speaker", 0.05);
1396 	m_cassette->set_interface("msx_cass");
1397 
1398 	/* Software lists */
1399 	SOFTWARE_LIST(config, "cass_list").set_original("msx1_cass");
1400 }
1401 
1402 
1403 template<typename VDPType>
msx1(VDPType & vdp_type,machine_config & config)1404 void msx_state::msx1(VDPType &vdp_type, machine_config &config)
1405 {
1406 	msx(config);
1407 	/* Video hardware */
1408 	SCREEN(config, "screen", SCREEN_TYPE_RASTER);
1409 	tms9928a_device &vdp(vdp_type(config, "tms9928a", 10.738635_MHz_XTAL));
1410 	vdp.set_screen("screen");
1411 	vdp.set_vram_size(0x4000);
1412 	vdp.int_callback().set("mainirq", FUNC(input_merger_device::in_w<0>));
1413 }
1414 
1415 
msx2(machine_config & config)1416 void msx2_state::msx2(machine_config &config)
1417 {
1418 	/* basic machine hardware */
1419 	Z80(config, m_maincpu, 21.477272_MHz_XTAL / 6);       /* 3.579545 MHz */
1420 	m_maincpu->set_addrmap(AS_PROGRAM, &msx2_state::msx_memory_map);
1421 	m_maincpu->set_addrmap(AS_IO, &msx2_state::msx2_io_map);
1422 	config.set_maximum_quantum(attotime::from_hz(60));
1423 
1424 	INPUT_MERGER_ANY_HIGH(config, "mainirq").output_handler().set_inputline("maincpu", INPUT_LINE_IRQ0);
1425 
1426 	i8255_device &ppi(I8255(config, "ppi8255"));
1427 	ppi.out_pa_callback().set(FUNC(msx2_state::msx_ppi_port_a_w));
1428 	ppi.in_pb_callback().set(FUNC(msx2_state::msx_ppi_port_b_r));
1429 	ppi.out_pc_callback().set(FUNC(msx2_state::msx_ppi_port_c_w));
1430 
1431 	/* video hardware */
1432 	V9938(config, m_v9938, 21.477272_MHz_XTAL);
1433 	m_v9938->set_screen_ntsc("screen");
1434 	m_v9938->set_vram_size(0x20000);
1435 	m_v9938->int_cb().set("mainirq", FUNC(input_merger_device::in_w<0>));
1436 	SCREEN(config, "screen", SCREEN_TYPE_RASTER);
1437 
1438 	/* sound hardware */
1439 	SPEAKER(config, "speaker").front_center();
1440 	DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.1);
1441 
1442 	AY8910(config, m_ay8910, 21.477272_MHz_XTAL / 6 / 2);
1443 	m_ay8910->set_flags(AY8910_SINGLE_OUTPUT);
1444 	m_ay8910->port_a_read_callback().set(FUNC(msx2_state::msx_psg_port_a_r));
1445 	m_ay8910->port_b_read_callback().set(FUNC(msx2_state::msx_psg_port_b_r));
1446 	m_ay8910->port_a_write_callback().set(FUNC(msx2_state::msx_psg_port_a_w));
1447 	m_ay8910->port_b_write_callback().set(FUNC(msx2_state::msx_psg_port_b_w));
1448 	m_ay8910->add_route(ALL_OUTPUTS, "speaker", 0.3);
1449 
1450 	/* printer */
1451 	centronics_device &centronics(CENTRONICS(config, "centronics", centronics_devices, "printer"));
1452 	centronics.busy_handler().set("cent_status_in", FUNC(input_buffer_device::write_bit1));
1453 
1454 	output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
1455 	centronics.set_output_latch(cent_data_out);
1456 	INPUT_BUFFER(config, "cent_status_in");
1457 
1458 	output_latch_device &cent_ctrl_out(OUTPUT_LATCH(config, "cent_ctrl_out"));
1459 	cent_ctrl_out.bit_handler<1>().set(centronics, FUNC(centronics_device::write_strobe));
1460 
1461 	/* cassette */
1462 	CASSETTE(config, m_cassette);
1463 	m_cassette->set_formats(fmsx_cassette_formats);
1464 	m_cassette->set_default_state(CASSETTE_PLAY);
1465 	m_cassette->add_route(ALL_OUTPUTS, "speaker", 0.05);
1466 	m_cassette->set_interface("msx_cass");
1467 
1468 	/* real time clock */
1469 	RP5C01(config, m_rtc, 32.768_kHz_XTAL);
1470 
1471 	/* Software lists */
1472 	SOFTWARE_LIST(config, "cass_list").set_original("msx2_cass");
1473 	SOFTWARE_LIST(config, "msx1_cas_l").set_compatible("msx1_cass");
1474 }
1475 
1476 
msx2p(machine_config & config)1477 void msx2_state::msx2p(machine_config &config)
1478 {
1479 	/* basic machine hardware */
1480 	Z80(config, m_maincpu, 21.477272_MHz_XTAL / 6);       /* 3.579545 MHz */
1481 	m_maincpu->set_addrmap(AS_PROGRAM, &msx2_state::msx_memory_map);
1482 	m_maincpu->set_addrmap(AS_IO, &msx2_state::msx2p_io_map);
1483 	config.set_maximum_quantum(attotime::from_hz(60));
1484 
1485 	INPUT_MERGER_ANY_HIGH(config, "mainirq").output_handler().set_inputline("maincpu", INPUT_LINE_IRQ0);
1486 
1487 	i8255_device &ppi(I8255(config, "ppi8255"));
1488 	ppi.out_pa_callback().set(FUNC(msx2_state::msx_ppi_port_a_w));
1489 	ppi.in_pb_callback().set(FUNC(msx2_state::msx_ppi_port_b_r));
1490 	ppi.out_pc_callback().set(FUNC(msx2_state::msx_ppi_port_c_w));
1491 
1492 	/* video hardware */
1493 	V9958(config, m_v9958, 21.477272_MHz_XTAL);
1494 	m_v9958->set_screen_ntsc("screen");
1495 	m_v9958->set_vram_size(0x20000);
1496 	m_v9958->int_cb().set("mainirq", FUNC(input_merger_device::in_w<0>));
1497 	SCREEN(config, "screen", SCREEN_TYPE_RASTER);
1498 
1499 	/* sound hardware */
1500 	SPEAKER(config, "speaker").front_center();
1501 	DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.1);
1502 
1503 	AY8910(config, m_ay8910, 21.477272_MHz_XTAL / 6 / 2);
1504 	m_ay8910->set_flags(AY8910_SINGLE_OUTPUT);
1505 	m_ay8910->port_a_read_callback().set(FUNC(msx2_state::msx_psg_port_a_r));
1506 	m_ay8910->port_b_read_callback().set(FUNC(msx2_state::msx_psg_port_b_r));
1507 	m_ay8910->port_a_write_callback().set(FUNC(msx2_state::msx_psg_port_a_w));
1508 	m_ay8910->port_b_write_callback().set(FUNC(msx2_state::msx_psg_port_b_w));
1509 	m_ay8910->add_route(ALL_OUTPUTS, "speaker", 0.3);
1510 
1511 	/* printer */
1512 	centronics_device &centronics(CENTRONICS(config, "centronics", centronics_devices, "printer"));
1513 	centronics.busy_handler().set("cent_status_in", FUNC(input_buffer_device::write_bit1));
1514 
1515 	output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
1516 	centronics.set_output_latch(cent_data_out);
1517 	INPUT_BUFFER(config, "cent_status_in");
1518 
1519 	output_latch_device &cent_ctrl_out(OUTPUT_LATCH(config, "cent_ctrl_out"));
1520 	cent_ctrl_out.bit_handler<1>().set(centronics, FUNC(centronics_device::write_strobe));
1521 
1522 	/* cassette */
1523 	CASSETTE(config, m_cassette);
1524 	m_cassette->set_formats(fmsx_cassette_formats);
1525 	m_cassette->set_default_state(CASSETTE_PLAY);
1526 	m_cassette->add_route(ALL_OUTPUTS, "speaker", 0.05);
1527 	m_cassette->set_interface("msx_cass");
1528 
1529 	/* real time clock */
1530 	RP5C01(config, m_rtc, 32.768_kHz_XTAL);
1531 
1532 	/* Software lists */
1533 	SOFTWARE_LIST(config, "cass_list").set_original("msx2_cass");
1534 	SOFTWARE_LIST(config, "msx1_cas_l").set_compatible("msx1_cass");
1535 	}
1536 
1537 
msx2_pal(machine_config & config)1538 void msx2_state::msx2_pal(machine_config &config)
1539 {
1540 	msx2(config);
1541 	m_v9938->set_screen_pal("screen");
1542 }
1543 
1544 
1545 /***************************************************************************
1546 
1547   Game driver(s)
1548 
1549 ***************************************************************************/
1550 
1551 /********************************  MSX 1 **********************************/
1552 
1553 /* MSX - Al Alamiah AX-150 */
1554 
1555 ROM_START(ax150)
1556 	ROM_REGION (0x10000, "maincpu", 0)
CRC(bd95c436)1557 	ROM_LOAD ("ax150bios.rom", 0x0000, 0x8000, CRC(bd95c436) SHA1(5e094fca95ab8e91873ee372a3f1239b9a48a48d))
1558 	ROM_LOAD ("ax150arab.rom", 0x8000, 0x8000, CRC(339cd1aa) SHA1(0287b2ec897b9196788cd9f10c99e1487d7adbbb))
1559 ROM_END
1560 
1561 void msx_state::ax150(machine_config &config)
1562 {
1563 	msx1(TMS9929A, config);
1564 	// AY8910/YM2149?
1565 	// FDC: None, 0 drives
1566 	// 2 Cartridge slots
1567 
1568 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
1569 	add_internal_slot(config, MSX_SLOT_ROM, "arab", 1, 0, 1, 2, "maincpu", 0x8000);
1570 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
1571 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
1572 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 2, 2, 2); /* 32KB RAM */
1573 
1574 	msx1_cartlist(config);
1575 }
1576 
1577 /* MSX - Al Alamiah AX-170 */
1578 
1579 ROM_START (ax170)
1580 	ROM_REGION (0x10000, "maincpu", 0)
CRC(bd95c436)1581 	ROM_LOAD ("ax170bios.rom", 0x0000, 0x8000, CRC(bd95c436) SHA1(5e094fca95ab8e91873ee372a3f1239b9a48a48d))
1582 	ROM_LOAD ("ax170arab.rom", 0x8000, 0x8000, CRC(339cd1aa) SHA1(0287b2ec897b9196788cd9f10c99e1487d7adbbb))
1583 ROM_END
1584 
1585 
1586 void msx_state::ax170(machine_config &config)
1587 {
1588 	msx1(TMS9929A, config);
1589 	// AY8910/YM2149?
1590 	// FDC: None, 0 drives
1591 	// 2 Cartridge slots
1592 	// T7937 (in ax170mk2)
1593 
1594 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
1595 	add_internal_slot(config, MSX_SLOT_ROM, "arab", 1, 0, 1, 2, "maincpu", 0x8000);
1596 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
1597 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
1598 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 2, 0, 4); /* 64KB RAM */
1599 
1600 	msx1_cartlist(config);
1601 }
1602 
1603 /* MSX - Canon V-8 */
1604 
1605 ROM_START (canonv8)
1606 	ROM_REGION (0x8000, "maincpu", 0)
CRC(ee229390)1607 	ROM_LOAD ("v8bios.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
1608 ROM_END
1609 
1610 void msx_state::canonv8(machine_config &config)
1611 {
1612 	msx1(TMS9928A, config);
1613 	// AY8910/YM2149??
1614 	// FDC: None, 0 drives
1615 	// 2 Cartridge slots
1616 
1617 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
1618 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
1619 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 3, 1).force_start_address(0xe000);   /* 8KB RAM */
1620 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
1621 
1622 	msx1_cartlist(config);
1623 }
1624 
1625 /* MSX - Canon V-10 */
1626 
1627 ROM_START (canonv10)
1628 	ROM_REGION (0x8000, "maincpu", 0)
CRC(e9ccd789)1629 	ROM_LOAD ("v10bios.rom", 0x0000, 0x8000, CRC(e9ccd789) SHA1(8963fc041975f31dc2ab1019cfdd4967999de53e))
1630 ROM_END
1631 
1632 void msx_state::canonv10(machine_config &config)
1633 {
1634 	msx1(TMS9929A, config);
1635 	// AY8910/YM2149?
1636 	// FDC: None, 0 drives
1637 	// 2 Cartridge slots
1638 
1639 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
1640 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
1641 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 3, 1);   /* 16KB RAM */
1642 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
1643 
1644 	msx1_cartlist(config);
1645 }
1646 
1647 /* MSX - Canon V-20 */
1648 
1649 ROM_START (canonv20)
1650 	ROM_REGION (0x8000, "maincpu", 0)
CRC(e9ccd789)1651 	ROM_LOAD ("v20bios.rom", 0x0000, 0x8000, CRC(e9ccd789) SHA1(8963fc041975f31dc2ab1019cfdd4967999de53e))
1652 ROM_END
1653 
1654 void msx_state::canonv20(machine_config &config)
1655 {
1656 	msx1(TMS9929A, config);
1657 	// XTAL: 1431818(Z80/PSG) + 10.6875(VDP)
1658 	// YM2149
1659 	// TMS9929ANL
1660 	// FDC: None, 0 drives
1661 	// 2 Cartridge slots
1662 
1663 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
1664 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
1665 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4);  /* 64KB RAM */
1666 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
1667 
1668 	msx1_cartlist(config);
1669 }
1670 
1671 /* MSX - Canon V-20E */
1672 
1673 ROM_START (canonv20e)
1674 	ROM_REGION (0x8000, "maincpu", 0)
CRC(e9ccd789)1675 	ROM_LOAD ("v20ebios.rom", 0x0000, 0x8000, CRC(e9ccd789) SHA1(8963fc041975f31dc2ab1019cfdd4967999de53e))
1676 ROM_END
1677 
1678 /* MSX - Canon V-20F */
1679 
1680 ROM_START (canonv20f)
1681 	ROM_REGION (0x8000, "maincpu", 0)
1682 	ROM_LOAD ("v20fbios.rom", 0x0000, 0x8000, CRC(e0e894b7) SHA1(d99eebded5db5fce1e072d08e642c0909bc7efdd))
1683 ROM_END
1684 
1685 /* MSX - Canon V-20G */
1686 
1687 ROM_START (canonv20g)
1688 	ROM_REGION (0x8000, "maincpu", 0)
1689 	ROM_LOAD ("v20gbios.rom", 0x0000, 0x8000, CRC(d6e704ad) SHA1(d67be6d7d56d7229418f4e122f2ec27990db7d19))
1690 ROM_END
1691 
1692 /* MSX - Canon V-20S */
1693 
1694 ROM_START (canonv20s)
1695 	ROM_REGION (0x8000, "maincpu", 0)
1696 	ROM_LOAD ("v20sbios.rom", 0x0000, 0x8000, CRC(c72b186e) SHA1(9fb289ea5c11d497ee00703f64e82575d1c59923))
1697 ROM_END
1698 
1699 /* MSX - Casio MX-10 */
1700 
1701 ROM_START (mx10)
1702 	ROM_REGION(0x8000, "maincpu", 0)
1703 	ROM_LOAD( "mx10bios.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
1704 ROM_END
1705 
1706 void msx_state::mx10(machine_config &config)
1707 {
1708 	msx1(TMS9918, config);
1709 	// FDC: None, 0 drives
1710 	// 2? Cartridge slots
1711 	// Z80: uPD780C-1
1712 
1713 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
1714 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 0, 0, 3, 1); // 16KB RAM
1715 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
1716 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
1717 
1718 	msx1_cartlist(config);
1719 }
1720 
1721 /* MSX - Casio MX-15 */
1722 
1723 ROM_START (mx15)
1724 	ROM_REGION(0x8000, "maincpu", 0)
CRC(ee229390)1725 	ROM_LOAD( "mx15bios.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
1726 ROM_END
1727 
1728 void msx_state::mx15(machine_config &config)
1729 {
1730 	msx1(TMS9928A, config);
1731 	// FDC: None, 0 drives
1732 	// 3 Cartridge slots
1733 	// T6950
1734 
1735 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
1736 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 0, 0, 3, 1); // 16KB RAM
1737 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
1738 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
1739 	add_cartridge_slot<3>(config, MSX_SLOT_CARTRIDGE, "cartslot3", 3, 0, msx_cart, nullptr);
1740 
1741 	msx1_cartlist(config);
1742 }
1743 
1744 /* MSX - Casio MX-101 */
1745 
1746 ROM_START (mx101)
1747 	ROM_REGION(0x8000, "maincpu", 0)
CRC(ee229390)1748 	ROM_LOAD( "mx101bios.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
1749 ROM_END
1750 
1751 void msx_state::mx101(machine_config &config)
1752 {
1753 	msx1(TMS9928A, config);
1754 	// FDC: None, 0 drives
1755 	// 2? Cartridge slots
1756 
1757 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
1758 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 0, 0, 3, 1); // 16KB RAM
1759 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
1760 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
1761 
1762 	msx1_cartlist(config);
1763 }
1764 
1765 /* MSX - Casio PV-7 */
1766 
1767 ROM_START (pv7)
1768 	ROM_REGION(0x8000, "maincpu", 0)
CRC(ee229390)1769 	ROM_LOAD("pv7bios.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
1770 ROM_END
1771 
1772 void msx_state::pv7(machine_config &config)
1773 {
1774 	msx1(TMS9918, config);
1775 	// AY8910?
1776 	// FDC: None, 0 drives
1777 	// 1 Cartridge slot + expansion slot, or 2 cartridge slots?
1778 	// By adding a Casio KB-7 2 additional cartridge slots become available and 8KB extra RAM?
1779 	// No cassette port
1780 	// No printer port
1781 	// Z80: uPD780C-1
1782 
1783 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
1784 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 0, 0, 3, 1).force_start_address(0xe000);   /* 8KB RAM */
1785 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
1786 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
1787 
1788 	msx1_cartlist(config);
1789 }
1790 
1791 /* MSX - Casio PV-16 */
1792 
1793 ROM_START (pv16)
1794 	ROM_REGION(0x8000, "maincpu", 0)
CRC(ee229390)1795 	ROM_LOAD("pv16.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
1796 ROM_END
1797 
1798 void msx_state::pv16(machine_config &config)
1799 {
1800 	msx1(TMS9918, config);
1801 	// AY8910
1802 	// FDC: None, 0 drives
1803 	// 1 Cartridge slot
1804 	// No printer port
1805 
1806 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
1807 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 0, 0, 3, 1);   /* 16KB RAM */
1808 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
1809 
1810 	msx1_cartlist(config);
1811 }
1812 
1813 /* MSX - Daewoo CPC-88 */
1814 
1815 ROM_START (cpc88)
1816 	ROM_REGION (0xc000, "maincpu", 0)
1817 	ROM_LOAD ("88bios.rom", 0x0000, 0x8000, CRC(3ab0cd3b) SHA1(171b587bd5a947a13f3114120b6e7baca3b57d78))
1818 	ROM_LOAD ("88han.rom", 0x8000, 0x2000, CRC(938db440) SHA1(d41676fde0a3047792f93c4a41509b8749e55e74))
1819 	ROM_RELOAD (0xa000, 0x2000)
1820 ROM_END
1821 
cpc88(machine_config & config)1822 void msx_state::cpc88(machine_config &config)
1823 {
1824 	msx1(TMS9928A, config);
1825 	// AY8910/YM2149?
1826 	// FDC: None, 0 drives
1827 	// 2? Cartridge slots
1828 
1829 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
1830 	add_internal_slot(config, MSX_SLOT_ROM, "han", 0, 0, 2, 1, "maincpu", 0x8000);
1831 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
1832 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4);   /* 64KB RAM */
1833 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
1834 
1835 	msx1_cartlist(config);
1836 }
1837 
1838 /* MSX - Daewoo DPC-100 */
1839 
1840 ROM_START (dpc100)
1841 	ROM_REGION (0xc000, "maincpu", 0)
1842 	ROM_LOAD ("100bios.rom", 0x0000, 0x8000, CRC(3ab0cd3b) SHA1(171b587bd5a947a13f3114120b6e7baca3b57d78))
1843 	ROM_LOAD ("100han.rom",  0x8000, 0x4000, CRC(97478efb) SHA1(4421fa2504cbce18f7c84b5ea97f04e017007f07))
1844 ROM_END
1845 
dpc100(machine_config & config)1846 void msx_state::dpc100(machine_config &config)
1847 {
1848 	msx1(TMS9928A, config);
1849 	// AY8910/YM2149?
1850 	// FDC: None, 0 drives
1851 	// 2 Cartridge slots
1852 
1853 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
1854 	add_internal_slot(config, MSX_SLOT_ROM, "han", 0, 0, 2, 1, "maincpu", 0x8000);
1855 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
1856 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 3, 1);   /* 16KB RAM */
1857 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
1858 
1859 	msx1_cartlist(config);
1860 }
1861 
1862 /* MSX - Daewoo DPC-180 */
1863 
1864 ROM_START (dpc180)
1865 	ROM_REGION (0xc000, "maincpu", 0)
1866 	ROM_LOAD ("180bios.rom", 0x0000, 0x8000, CRC(3ab0cd3b) SHA1(171b587bd5a947a13f3114120b6e7baca3b57d78))
1867 	ROM_LOAD ("180han.rom",  0x8000, 0x4000, CRC(97478efb) SHA1(4421fa2504cbce18f7c84b5ea97f04e017007f07))
1868 ROM_END
1869 
dpc180(machine_config & config)1870 void msx_state::dpc180(machine_config &config)
1871 {
1872 	msx1(TMS9928A, config);
1873 	// AY8910/YM2149?
1874 	// FDC: None, 0 drives
1875 	// 2 Cartridge slots
1876 
1877 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
1878 	add_internal_slot(config, MSX_SLOT_ROM, "han", 0, 0, 2, 1, "maincpu", 0x8000);
1879 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
1880 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 2, 2);   /* 32KB RAM */
1881 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
1882 
1883 	msx1_cartlist(config);
1884 }
1885 
1886 /* MSX - Daewoo DPC-200 */
1887 
1888 ROM_START (dpc200)
1889 	ROM_REGION (0xc000, "maincpu", 0)
1890 	ROM_LOAD ("200bios.rom", 0x0000, 0x8000, CRC(3ab0cd3b) SHA1(171b587bd5a947a13f3114120b6e7baca3b57d78))
1891 	ROM_LOAD ("200han.rom",  0x8000, 0x4000, CRC(97478efb) SHA1(4421fa2504cbce18f7c84b5ea97f04e017007f07))
1892 ROM_END
1893 
dpc200(machine_config & config)1894 void msx_state::dpc200(machine_config &config)
1895 {
1896 	msx1(TMS9928A, config);
1897 	// AY8910/YM2149?
1898 	// FDC: None, 0 drives
1899 	// 2 Cartridge slots
1900 
1901 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
1902 	add_internal_slot(config, MSX_SLOT_ROM, "han", 0, 0, 2, 1, "maincpu", 0x8000);
1903 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
1904 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4);  /* 64KB RAM */
1905 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
1906 
1907 	msx1_cartlist(config);
1908 }
1909 
1910 /* MSX - Daewoo DPC-200E */
1911 
1912 ROM_START (dpc200e)
1913 	ROM_REGION (0x8000, "maincpu", 0)
1914 	ROM_LOAD ("dpc200ebios.rom", 0x0000, 0x8000, CRC(8205795e) SHA1(829c00c3114f25b3dae5157c0a238b52a3ac37db))
1915 ROM_END
1916 
dpc200e(machine_config & config)1917 void msx_state::dpc200e(machine_config &config)
1918 {
1919 	msx1(TMS9929A, config);
1920 	// AY8910
1921 	// FDC: None, 0 drives
1922 	// 2 Cartridge slots
1923 
1924 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
1925 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 1, 0, 0, 4);  /* 64KB RAM */
1926 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
1927 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
1928 
1929 	msx1_cartlist(config);
1930 }
1931 
1932 /* MSX - Daewoo Zemmix CPC-50A */
1933 
1934 ROM_START (cpc50a)
1935 	ROM_REGION (0x8000, "maincpu", 0)
CRC(c3a868ef)1936 	ROM_LOAD ("50abios.rom", 0x0000, 0x8000, CRC(c3a868ef) SHA1(a08a940aa87313509e00bc5ac7494d53d8e03492))
1937 ROM_END
1938 
1939 void msx_state::cpc50a(machine_config &config)
1940 {
1941 	msx1(TMS9918, config);
1942 	// AY8910/YM2149?
1943 	// FDC: None, 0 drives
1944 	// 1? Cartridge slot
1945 	// No keyboard?
1946 	// No cassette port?
1947 	// No printer port?
1948 
1949 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
1950 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
1951 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 3, 1).force_start_address(0xe000);  /* 8KB RAM */
1952 
1953 	msx1_cartlist(config);
1954 }
1955 
1956 /* MSX - Daewoo Zemmix CPC-50B */
1957 
1958 ROM_START (cpc50b)
1959 	ROM_REGION (0x8000, "maincpu", 0)
CRC(c3a868ef)1960 	ROM_LOAD ("50bbios.rom", 0x0000, 0x8000, CRC(c3a868ef) SHA1(a08a940aa87313509e00bc5ac7494d53d8e03492))
1961 ROM_END
1962 
1963 void msx_state::cpc50b(machine_config &config)
1964 {
1965 	msx1(TMS9918, config);
1966 	// AY8910/YM2149?
1967 	// FDC: None, 0 drives
1968 	// 1? Cartridge slot
1969 	// No keyboard?
1970 	// No cassette port?
1971 	// No printer port?
1972 
1973 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
1974 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
1975 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 3, 1);  /* 16KB RAM */
1976 
1977 	msx1_cartlist(config);
1978 }
1979 
1980 /* MSX - Daewoo Zemmix CPC-51 */
1981 
1982 ROM_START (cpc51)
1983 	ROM_REGION (0x8000, "maincpu", 0)
CRC(c3a868ef)1984 	ROM_LOAD ("51bios.rom", 0x0000, 0x8000, CRC(c3a868ef) SHA1(a08a940aa87313509e00bc5ac7494d53d8e03492))
1985 ROM_END
1986 
1987 void msx_state::cpc51(machine_config &config)
1988 {
1989 	msx1(TMS9918, config);
1990 	// AY8910/YM2149?
1991 	// FDC: None, 0 drives
1992 	// 1 Cartridge slot
1993 	// No keyboard, just a keyboard connector
1994 	// No cassette port
1995 	// No printer port
1996 
1997 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
1998 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
1999 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4);  /* 64KB RAM */
2000 
2001 	msx1_cartlist(config);
2002 }
2003 
2004 /* MSX - Dragon MSX-64 */
2005 
2006 ROM_START(dgnmsx)
2007 	ROM_REGION(0x8000, "maincpu", 0)
2008 	ROM_LOAD("uk1msx048.ic37", 0x0000, 0x4000, CRC(24c198be) SHA1(7f8c94cb8913db32a696dec80ffc78e46693f1b7))
CRC(e516e7e5)2009 	ROM_LOAD("uk2msx058.ic6",  0x4000, 0x4000, CRC(e516e7e5) SHA1(05fedd4b9bfcf4949020c79d32c4c3f03a54fb62))
2010 ROM_END
2011 
2012 void msx_state::dgnmsx(machine_config &config)
2013 {
2014 	msx1(TMS9929A, config);
2015 	// AY8910
2016 	// FDC: None, 0 drives
2017 	// 2 Cartridge slots
2018 
2019 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
2020 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
2021 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4);  /* 64KB RAM */
2022 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
2023 
2024 	msx1_cartlist(config);
2025 }
2026 
2027 /* MSX - Fenner DPC-200 */
2028 
2029 ROM_START (fdpc200)
2030 	ROM_REGION (0x8000, "maincpu", 0)
2031 	ROM_LOAD ("dpc200bios.rom", 0x0000, 0x8000, CRC(8205795e) SHA1(829c00c3114f25b3dae5157c0a238b52a3ac37db))
2032 ROM_END
2033 
fdpc200(machine_config & config)2034 void msx_state::fdpc200(machine_config &config)
2035 {
2036 	msx1(TMS9929A, config);
2037 	// AY8910
2038 	// FDC: None, 0 drives
2039 	// 2 Cartridge slots
2040 
2041 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
2042 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 1, 0, 0, 4);  /* 64KB RAM */
2043 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
2044 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
2045 
2046 	msx1_cartlist(config);
2047 }
2048 
2049 /* MSX - Fenner FPC-500 */
2050 
2051 ROM_START (fpc500)
2052 	ROM_REGION (0x8000, "maincpu", 0)
2053 	ROM_LOAD ("fpc500bios.rom", 0x0000, 0x8000, CRC(8205795e) SHA1(829c00c3114f25b3dae5157c0a238b52a3ac37db))
2054 ROM_END
2055 
fpc500(machine_config & config)2056 void msx_state::fpc500(machine_config &config)
2057 {
2058 	msx1(TMS9929A, config);
2059 	// AY8910?
2060 	// FDC: None, 0 drives
2061 	// 2 Cartridge slots
2062 
2063 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
2064 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 1, 0, 0, 4);  /* 64KB RAM */
2065 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
2066 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
2067 
2068 	msx1_cartlist(config);
2069 }
2070 
2071 /* MSX - Fenner SPC-800 */
2072 
2073 ROM_START (fspc800)
2074 	ROM_REGION (0x8000, "maincpu", 0)
2075 	ROM_LOAD ("spc800bios.rom", 0x0000, 0x8000, CRC(8205795e) SHA1(829c00c3114f25b3dae5157c0a238b52a3ac37db))
2076 ROM_END
2077 
fspc800(machine_config & config)2078 void msx_state::fspc800(machine_config &config)
2079 {
2080 	msx1(TMS9929A, config);
2081 	// AY8910?
2082 	// FDC: None, 0 drives
2083 	// 2 Cartridge slots
2084 	// Z80: GSS Z8400APS
2085 
2086 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
2087 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 1, 0, 0, 4);  /* 64KB RAM */
2088 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
2089 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
2090 
2091 	msx1_cartlist(config);
2092 }
2093 
2094 /* MSX - Frael Bruc 100-1 */
2095 
2096 ROM_START (bruc100)
2097 	ROM_REGION (0x8000, "maincpu",0)
CRC(c7bc4298)2098 	ROM_LOAD("bruc100-1bios.rom", 0x0000, 0x8000, CRC(c7bc4298) SHA1(3abca440cba16ac5e162b602557d30169f77adab))
2099 ROM_END
2100 
2101 void msx_state::bruc100(machine_config &config)
2102 {
2103 	msx1(TMS9929A, config);
2104 	// AY8910/YM2149?
2105 	// FDC: None, 0 drives
2106 	// 2 Cartridge slots?
2107 
2108 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
2109 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
2110 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
2111 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000);   /* 64KB RAM */
2112 
2113 	msx1_cartlist(config);
2114 }
2115 
2116 /* MSX - Fujitsu FM-X */
2117 
2118 ROM_START (fmx)
2119 	ROM_REGION (0x8000, "maincpu", 0)
CRC(ee229390)2120 	ROM_LOAD ("fmxbios.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
2121 ROM_END
2122 
2123 void msx_state::fmx(machine_config &config)
2124 {
2125 	msx1(TMS9928A, config);
2126 	// AY8910/YM2149?
2127 	// FDC: None, 0 drives
2128 	// 1 Cartridge slot, 2 "Fujistu expansion slots
2129 
2130 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
2131 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 0, 0, 3, 1); // 16KB RAM
2132 	// Fujitsu expansion slot #1 in slot 1
2133 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
2134 	// Fijutsu expansion slot #2 in slot 3
2135 
2136 	msx1_cartlist(config);
2137 }
2138 
2139 /* MSX - Goldstar FC-80U */
2140 
2141 ROM_START (gsfc80u)
2142 	ROM_REGION (0xc000, "maincpu", 0)
2143 	ROM_LOAD ("fc80ubios.rom", 0x0000, 0x8000, CRC(3ab0cd3b) SHA1(171b587bd5a947a13f3114120b6e7baca3b57d78))
2144 	ROM_LOAD ("fc80uhan.rom", 0x8000, 0x2000, CRC(0cdb8501) SHA1(58dbe73ae80c2c409e766c3ace730ecd7bec89d0))
2145 	ROM_RELOAD (0xa000, 0x2000)
2146 ROM_END
2147 
gsfc80u(machine_config & config)2148 void msx_state::gsfc80u(machine_config &config)
2149 {
2150 	msx1(TMS9928A, config);
2151 	// AY8910/YM2149?
2152 	// FDC: None, 0 drives
2153 	// 2 Cartridge slots
2154 
2155 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
2156 	add_internal_slot(config, MSX_SLOT_ROM, "han", 0, 0, 2, 1, "maincpu", 0x8000);
2157 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
2158 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4);  /* 64KB RAM */
2159 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
2160 
2161 	msx1_cartlist(config);
2162 }
2163 
2164 /* MSX - Goldstar FC-200 */
2165 
2166 ROM_START (gsfc200)
2167 	ROM_REGION (0x8000, "maincpu", 0)
2168 	ROM_LOAD ("fc200bios.rom.u5a", 0x0000, 0x4000, CRC(61f473fb) SHA1(c425750bbb2ae1d278216b45029d303e37d8df2f))
2169 	ROM_LOAD ("fc200bios.rom.u5b", 0x4000, 0x4000, CRC(1a99b1a1) SHA1(e18f72271b64693a2a2bc226e1b9ebd0448e07c0))
2170 ROM_END
2171 
gsfc200(machine_config & config)2172 void msx_state::gsfc200(machine_config &config)
2173 {
2174 	msx1(TMS9129, config);
2175 	// AY8910/YM2149?
2176 	// FDC: None, 0 drives
2177 	// 2 Cartridge slots
2178 
2179 	add_internal_slot(config, MSX_SLOT_ROM, "rom", 0, 0, 0, 2, "maincpu", 0x0000);
2180 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
2181 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4);  /* 64KB RAM */
2182 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
2183 
2184 	msx1_cartlist(config);
2185 }
2186 
2187 /* MSX - Goldstar GFC-1080 */
2188 
2189 ROM_START (gfc1080)
2190 	ROM_REGION (0x10000, "maincpu", 0)
CRC(d9cdd4a6)2191 	ROM_LOAD ("gfc1080bios.rom", 0x0000, 0x8000, CRC(d9cdd4a6) SHA1(6b0be712b9c95c1e912252ab5703e1c0bc457d9e))
2192 	ROM_LOAD ("gfc1080han.rom", 0x8000, 0x4000, CRC(f209448c) SHA1(141b44212ba28e7d03e0b54126fedd9e0807dc42))
2193 	ROM_LOAD ("gfc1080pasocalc.rom", 0xC000, 0x4000, CRC(4014f7ea) SHA1(a5581fa3ce10f90f15ba3dc53d57b02d6e4af172))
2194 ROM_END
2195 
2196 void msx_state::gfc1080(machine_config &config)
2197 {
2198 	msx1(TMS9928A, config);
2199 	// AY8910/YM2149?
2200 	// FDC: None, 0 drives
2201 	// 2 Cartridge slots?
2202 
2203 	add_internal_slot(config, MSX_SLOT_ROM, "rom", 0, 0, 0, 4, "maincpu", 0x0000);
2204 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
2205 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4); // 64KB RAM
2206 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
2207 
2208 	msx1_cartlist(config);
2209 }
2210 
2211 /* MSX - Goldstar GFC-1080A */
2212 
2213 ROM_START (gfc1080a)
2214 	ROM_REGION (0xc000, "maincpu", 0)
2215 	ROM_LOAD ("gfc1080abios.rom", 0x0000, 0x8000, CRC(3ab0cd3b) SHA1(171b587bd5a947a13f3114120b6e7baca3b57d78))
2216 	ROM_LOAD ("gfc1080ahan.rom", 0x8000, 0x2000, CRC(0cdb8501) SHA1(58dbe73ae80c2c409e766c3ace730ecd7bec89d0))
2217 	ROM_RELOAD (0xa000, 0x2000)
2218 ROM_END
2219 
gfc1080a(machine_config & config)2220 void msx_state::gfc1080a(machine_config &config)
2221 {
2222 	msx1(TMS9928A, config);
2223 	// AY8910/YM2149?
2224 	// FDC: None, 0 drives
2225 	// 2 Cartridge slots?
2226 
2227 	add_internal_slot(config, MSX_SLOT_ROM, "rom", 0, 0, 0, 3, "maincpu", 0x0000);
2228 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
2229 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4); // 64KB RAM
2230 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
2231 
2232 	msx1_cartlist(config);
2233 }
2234 
2235 /* MSX - Gradiente Expert 1.0 */
2236 
2237 ROM_START (expert10)
2238 	ROM_REGION (0x8000, "maincpu",0)
2239 	ROM_LOAD ("expbios.rom", 0x0000, 0x8000, CRC(07610d77) SHA1(ef3e010eb57e4476700a3bbff9d2119ab3acdf62))
2240 ROM_END
2241 
expert10(machine_config & config)2242 void msx_state::expert10(machine_config &config)
2243 {
2244 	msx1(TMS9128, config);
2245 	// AY8910/YM2149?
2246 	// FDC: None, 0 drives
2247 	// 2 Cartridge slots
2248 
2249 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
2250 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
2251 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4);  /* 64KB RAM */
2252 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
2253 
2254 	msx1_cartlist(config);
2255 }
2256 
2257 /* MSX - Gradiente Expert 1.1 */
2258 ROM_START (expert11)
2259 	ROM_REGION (0x8000, "maincpu",0)
CRC(efb4b972)2260 	ROM_LOAD ("expbios11.rom", 0x0000, 0x8000, CRC(efb4b972) SHA1(d6720845928ee848cfa88a86accb067397685f02))
2261 ROM_END
2262 
2263 void msx_state::expert11(machine_config &config)
2264 {
2265 	msx1(TMS9128, config);
2266 	// AY8910/YM2149?
2267 	// FDC: None, 0 drives
2268 	// 2 Cartridge slots
2269 
2270 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
2271 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
2272 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4);  /* 64KB RAM */
2273 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
2274 
2275 	msx1_cartlist(config);
2276 }
2277 
2278 /* MSX - Gradiente Expert 1.3 */
2279 ROM_START (expert13)
2280 	ROM_REGION (0x8000, "maincpu",0)
2281 	ROM_LOAD ("expbios13.rom", 0x0000, 0x8000, CRC(5638bc38) SHA1(605f5af3f358c6811f54e0173bad908614a198c0))
2282 ROM_END
2283 
expert13(machine_config & config)2284 void msx_state::expert13(machine_config &config)
2285 {
2286 	msx1(TMS9928A, config);
2287 	// AY8910/YM2149?
2288 	// FDC: None, 0 drives
2289 	// 2 Cartridge slots?
2290 
2291 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
2292 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
2293 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 2, 0, 0, 4).set_total_size(0x10000);   /* 64KB Mapper RAM */
2294 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
2295 
2296 	msx1_cartlist(config);
2297 }
2298 
2299 /* MSX - Gradiente Expert DDPlus */
2300 ROM_START (expertdp)
2301 	ROM_REGION (0xc000, "maincpu",0)
CRC(efb4b972)2302 	ROM_LOAD ("eddpbios.rom", 0x0000, 0x8000, CRC(efb4b972) SHA1(d6720845928ee848cfa88a86accb067397685f02))
2303 	ROM_LOAD ("eddpdisk.rom", 0x8000, 0x4000, CRC(549f1d90) SHA1(f1525de4e0b60a6687156c2a96f8a8b2044b6c56))
2304 ROM_END
2305 
2306 void msx_state::expertdp(machine_config &config)
2307 {
2308 	msx1(TMS9928A, config);
2309 	// AY8910/YM2149?
2310 	// FDC: mb8877a, 1 3.5" DSDD drive
2311 	// 2 Cartridge slots
2312 	// MSX Engine T7937A (also VDP)
2313 
2314 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
2315 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
2316 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
2317 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4);  /* 64KB RAM */
2318 	add_internal_slot_mirrored(config, MSX_SLOT_DISK2, "disk", 3, 3, 1, 2, "maincpu", 0x8000).set_tags("fdc", "fdc:0", "fdc:1");
2319 
2320 	msx_mb8877a(config);
2321 	msx_1_35_dd_drive(config);
2322 	msx1_floplist(config);
2323 
2324 	msx1_cartlist(config);
2325 }
2326 
2327 /* MSX - Gradiente Expert Plus */
2328 
2329 ROM_START (expertpl)
2330 	ROM_REGION (0xc000, "maincpu",0)
CRC(efb4b972)2331 	ROM_LOAD ("exppbios.rom", 0x0000, 0x8000, CRC(efb4b972) SHA1(d6720845928ee848cfa88a86accb067397685f02))
2332 	ROM_LOAD ("exppdemo.rom", 0x8000, 0x4000, CRC(a9bbef64) SHA1(d4cea8c815f3eeabe0c6a1c845f902ec4318bf6b))
2333 ROM_END
2334 
2335 void msx_state::expertpl(machine_config &config)
2336 {
2337 	msx1(TMS9928A, config);
2338 	// AY8910/YM2149?
2339 	// FDC: None, 0 drives
2340 	// 2 Cartridge slots
2341 	// MSX Engine T7937A
2342 
2343 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
2344 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
2345 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
2346 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4);  /* 64KB RAM */
2347 	add_internal_slot(config, MSX_SLOT_ROM, "demo", 3, 3, 2, 1, "maincpu", 0x8000);
2348 
2349 	msx1_cartlist(config);
2350 }
2351 
2352 /* MSX - Hitachi MB-H2 */
2353 
2354 ROM_START (mbh2)
2355 	ROM_REGION (0xc000, "maincpu", 0)
CRC(ee229390)2356 	ROM_LOAD ("mbh2bios.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
2357 	ROM_LOAD ("mbh2firm.rom", 0x8000, 0x4000, CRC(4f03c947) SHA1(e2140fa2e8e59090ecccf55b62323ea9dcc66d0b))
2358 ROM_END
2359 
2360 void msx_state::mbh2(machine_config &config)
2361 {
2362 	msx1(TMS9928A, config);
2363 	// AY8910/YM2149?
2364 	// FDC: None, 0 drives
2365 	// 2 Cartridge slots
2366 	// Builtin cassette player
2367 	// Speed controller (normal, slow 1, slow 2)
2368 
2369 	add_internal_slot(config, MSX_SLOT_ROM, "rom", 0, 0, 0, 3, "maincpu", 0x0000);
2370 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
2371 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
2372 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4); // 64KB RAM
2373 
2374 	msx1_cartlist(config);
2375 }
2376 
2377 /* MSX - Hitachi MB-H25 */
2378 
2379 ROM_START (mbh25)
2380 	ROM_REGION (0x8000, "maincpu", 0)
CRC(ee229390)2381 	ROM_LOAD ("mbh25bios.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
2382 ROM_END
2383 
2384 void msx_state::mbh25(machine_config &config)
2385 {
2386 	msx1(TMS9928A, config);
2387 	// AY8910/YM2149?
2388 	// FDC: None, 0 drives
2389 	// 2 Cartridge slots
2390 
2391 	add_internal_slot(config, MSX_SLOT_ROM, "rom", 0, 0, 0, 2, "maincpu", 0x0000);
2392 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
2393 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
2394 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 2, 2); // 32KB RAM
2395 
2396 	msx1_cartlist(config);
2397 }
2398 
2399 /* MSX - Hitachi MB-H50 */
2400 
2401 ROM_START (mbh50)
2402 	ROM_REGION (0x8000, "maincpu", 0)
CRC(ee229390)2403 	ROM_LOAD ("mbh50bios.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
2404 ROM_END
2405 
2406 void msx_state::mbh50(machine_config &config)
2407 {
2408 	msx1(TMS9928A, config);
2409 	// AY8910/YM2149?
2410 	// FDC: None, 0 drives
2411 	// 2 Cartridge slots
2412 	// T6950
2413 
2414 	add_internal_slot(config, MSX_SLOT_ROM, "rom", 0, 0, 0, 2, "maincpu", 0x0000);
2415 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
2416 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
2417 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4); // 64KB RAM
2418 
2419 	msx1_cartlist(config);
2420 }
2421 
2422 /* MSX - JVC HC-7GB */
2423 
2424 ROM_START (jvchc7gb)
2425 	ROM_REGION (0x8000, "maincpu", 0)
CRC(e9ccd789)2426 	ROM_LOAD ("hc7gbbios.rom", 0x0000, 0x8000, CRC(e9ccd789) SHA1(8963fc041975f31dc2ab1019cfdd4967999de53e))
2427 ROM_END
2428 
2429 void msx_state::jvchc7gb(machine_config &config)
2430 {
2431 	msx1(TMS9929A, config);
2432 	// AY8910/YM2149?
2433 	// FDC: None, 0 drives
2434 	// 2 Cartridge slots
2435 
2436 	add_internal_slot(config, MSX_SLOT_ROM, "rom", 0, 0, 0, 2, "maincpu", 0x0000);
2437 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
2438 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4);  /* 64KB RAM */
2439 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
2440 
2441 	msx1_cartlist(config);
2442 }
2443 
2444 /* MSX - Mitsubishi ML-F48 */
2445 
2446 ROM_START (mlf48)
2447 	ROM_REGION (0x8000, "maincpu", 0)
CRC(e9ccd789)2448 	ROM_LOAD ("mlf48bios.rom", 0x0000, 0x8000, CRC(e9ccd789) SHA1(8963fc041975f31dc2ab1019cfdd4967999de53e))
2449 ROM_END
2450 
2451 void msx_state::mlf48(machine_config &config)
2452 {
2453 	msx1(TMS9929A, config);
2454 	// AY8910/YM2149?
2455 	// FDC: None, 0 drives
2456 	// 2 Cartridge slots
2457 
2458 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
2459 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 1, 0, 2, 2); // 32KB RAM
2460 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
2461 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
2462 
2463 	msx1_cartlist(config);
2464 }
2465 
2466 /* MSX - Mitsubishi ML-F80 */
2467 
2468 ROM_START (mlf80)
2469 	ROM_REGION (0x8000, "maincpu", 0)
CRC(e9ccd789)2470 	ROM_LOAD ("mlf80bios.rom", 0x0000, 0x8000, CRC(e9ccd789) SHA1(8963fc041975f31dc2ab1019cfdd4967999de53e))
2471 ROM_END
2472 
2473 void msx_state::mlf80(machine_config &config)
2474 {
2475 	msx1(TMS9929A, config);
2476 	// AY8910/YM2149?
2477 	// FDC: None, 0 drives
2478 	// 2 Cartridge slots
2479 
2480 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
2481 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 1, 0, 0, 4);  /* 64KB RAM */
2482 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
2483 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
2484 
2485 	msx1_cartlist(config);
2486 }
2487 
2488 /* MSX - Mitsubishi ML-F110 */
2489 
2490 ROM_START (mlf110)
2491 	ROM_REGION (0x8000, "maincpu", 0)
CRC(ee229390)2492 	ROM_LOAD ("mlf110bios.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
2493 ROM_END
2494 
2495 void msx_state::mlf110(machine_config &config)
2496 {
2497 	msx1(TMS9928A, config);
2498 	// AY8910/YM2149?
2499 	// FDC: None, 0 drives
2500 	// 2 Cartridge slots
2501 
2502 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
2503 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 1, 0, 3, 1); // 16KB RAM
2504 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
2505 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
2506 
2507 	msx1_cartlist(config);
2508 }
2509 
2510 /* MSX - Mitsubishi ML-F120 */
2511 
2512 ROM_START (mlf120)
2513 	ROM_REGION (0xc000, "maincpu", 0)
CRC(ee229390)2514 	ROM_LOAD ("mlf120bios.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
2515 	ROM_LOAD ("mlf120firm.rom", 0x8000, 0x4000, CRC(4b5f3173) SHA1(21a9f60cb6370d0617ce54c42bb7d8e40a4ab560))
2516 ROM_END
2517 
2518 void msx_state::mlf120(machine_config &config)
2519 {
2520 	msx1(TMS9928A, config);
2521 	// AY8910/YM2149?
2522 	// FDC: None, 0 drives
2523 	// 2? Cartridge slots
2524 
2525 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
2526 	add_internal_slot(config, MSX_SLOT_ROM, "firm", 1, 0, 1, 1, "maincpu", 0x8000);
2527 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 1, 0, 2, 2); // 32KB RAM
2528 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
2529 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
2530 
2531 	msx1_cartlist(config);
2532 }
2533 
2534 /* MSX - Mitsubishi ML-FX1 */
2535 
2536 ROM_START (mlfx1)
2537 	ROM_REGION (0x8000, "maincpu", 0)
2538 	ROM_LOAD ("mlfx1bios.rom", 0x0000, 0x8000, CRC(62867dce) SHA1(0cbe0df4af45e8f531e9c761403ac9e71808f20c))
2539 ROM_END
2540 
mlfx1(machine_config & config)2541 void msx_state::mlfx1(machine_config &config)
2542 {
2543 	msx1(TMS9929A, config);
2544 	// AY8910/YM2149?
2545 	// FDC: None, 0 drives
2546 	// 2 Cartridge slots
2547 
2548 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
2549 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
2550 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
2551 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 2, 0, 4);  /* 64KB RAM */
2552 
2553 	msx1_cartlist(config);
2554 }
2555 
2556 /* MSX - National CF-1200 */
2557 
2558 ROM_START (cf1200)
2559 	ROM_REGION (0x8000, "maincpu", 0)
2560 	ROM_LOAD ("1200bios.rom", 0x0000, 0x8000, CRC(5ad03407) SHA1(c7a2c5baee6a9f0e1c6ee7d76944c0ab1886796c))
2561 ROM_END
2562 
cf1200(machine_config & config)2563 void msx_state::cf1200(machine_config &config)
2564 {
2565 	msx1(TMS9918A, config);
2566 	// AY8910
2567 	// FDC: None, 0 drives
2568 	// 2 Cartridge slots
2569 
2570 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
2571 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 0, 0, 3, 1);   /* 16KB RAM */
2572 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
2573 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
2574 
2575 	msx1_cartlist(config);
2576 }
2577 
2578 /* MSX - National CF-2000 */
2579 
2580 ROM_START (cf2000)
2581 	ROM_REGION (0x8000, "maincpu", 0)
CRC(ee229390)2582 	ROM_LOAD ("2000bios.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
2583 ROM_END
2584 
2585 void msx_state::cf2000(machine_config &config)
2586 {
2587 	msx1(TMS9928A, config);
2588 	// AY8910/YM2149?
2589 	// FDC: None, 0 drives
2590 	// 2 Cartridge slots
2591 
2592 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
2593 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 0, 0, 3, 1);   /* 16KB RAM */
2594 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
2595 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
2596 
2597 	msx1_cartlist(config);
2598 }
2599 
2600 /* MSX - National CF-2700 */
2601 ROM_START (cf2700)
2602 	ROM_REGION (0x8000, "maincpu", 0)
2603 	ROM_LOAD ("2700bios.rom.ic32", 0x0000, 0x8000, CRC(5ad03407) SHA1(c7a2c5baee6a9f0e1c6ee7d76944c0ab1886796c))
2604 ROM_END
2605 
cf2700(machine_config & config)2606 void msx_state::cf2700(machine_config &config)
2607 {
2608 	msx1(TMS9928A, config);
2609 	// AY8910/YM2149?
2610 	// FDC: None, 0 drives
2611 	// 2 Cartridge slots
2612 
2613 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
2614 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 0, 0, 2, 2);   /* 32KB RAM */
2615 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
2616 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
2617 
2618 	msx1_cartlist(config);
2619 }
2620 
2621 /* MSX - National CF-3000 */
2622 
2623 ROM_START (cf3000)
2624 	ROM_REGION (0x8000, "maincpu", 0)
2625 	ROM_LOAD ("3000bios.rom", 0x0000, 0x8000, CRC(5ad03407) SHA1(c7a2c5baee6a9f0e1c6ee7d76944c0ab1886796c))
2626 ROM_END
2627 
cf3000(machine_config & config)2628 void msx_state::cf3000(machine_config &config)
2629 {
2630 	msx1(TMS9928A, config);
2631 	// AY8910/YM2149?
2632 	// FDC: None, 0 drives
2633 	// 2 Cartridge slots
2634 
2635 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
2636 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 1, 0, 0, 4);  /* 64KB RAM */
2637 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
2638 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
2639 
2640 	msx1_cartlist(config);
2641 }
2642 
2643 /* MSX - National CF-3300 */
2644 ROM_START (cf3300)
2645 	ROM_REGION (0xc000, "maincpu", 0)
2646 	ROM_LOAD ("3300bios.rom", 0x0000, 0x8000, CRC(5ad03407) SHA1(c7a2c5baee6a9f0e1c6ee7d76944c0ab1886796c))
2647 	ROM_LOAD ("3300disk.rom", 0x8000, 0x4000, CRC(549f1d90) SHA1(f1525de4e0b60a6687156c2a96f8a8b2044b6c56))
2648 ROM_END
2649 
cf3300(machine_config & config)2650 void msx_state::cf3300(machine_config &config)
2651 {
2652 	msx1(TMS9928A, config);
2653 	// AY8910/YM2149?
2654 	// FDC: mb8877a, 1 3.5" SSDD drive
2655 	// 2 Cartridge slots
2656 
2657 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
2658 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
2659 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
2660 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4);  /* 64KB RAM */
2661 	add_internal_slot_mirrored(config, MSX_SLOT_DISK2, "disk", 3, 1, 1, 2, "maincpu", 0x8000).set_tags("fdc", "fdc:0", "fdc:1");
2662 
2663 	msx_mb8877a(config);
2664 	msx_1_35_ssdd_drive(config);
2665 	msx1_floplist(config);
2666 
2667 	msx1_cartlist(config);
2668 }
2669 
2670 /* MSX - National FS-1300 */
2671 
2672 ROM_START (fs1300)
2673 	ROM_REGION (0x8000, "maincpu", 0)
2674 	ROM_LOAD ("1300bios.rom", 0x0000, 0x8000, CRC(5ad03407) SHA1(c7a2c5baee6a9f0e1c6ee7d76944c0ab1886796c))
2675 ROM_END
2676 
fs1300(machine_config & config)2677 void msx_state::fs1300(machine_config &config)
2678 {
2679 	msx1(TMS9928A, config);
2680 	// AY8910/YM2149?
2681 	// FDC: None, 0 drives
2682 	// 2 Cartridge slots
2683 
2684 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
2685 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
2686 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
2687 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4);  /* 64KB RAM */
2688 
2689 	msx1_cartlist(config);
2690 }
2691 
2692 /* MSX - National FS-4000 */
2693 
2694 ROM_START (fs4000)
2695 	ROM_REGION (0x18000 ,"maincpu", 0)
2696 	ROM_LOAD ("4000bios.rom", 0x0000, 0x8000, CRC(071135e0) SHA1(df48902f5f12af8867ae1a87f255145f0e5e0774))
2697 	ROM_LOAD ("4000word.rom", 0x8000, 0x8000, CRC(950b6c87) SHA1(931d6318774bd495a32ec3dabf8d0edfc9913324))
CRC(ebaa5a1e)2698 	ROM_LOAD ("4000kdr.rom", 0x10000, 0x8000, CRC(ebaa5a1e) SHA1(77bd67d5d10d459d343e79eafcd8e17eb0f209dd))
2699 
2700 	ROM_REGION(0x20000, "kanji", 0)
2701 	ROM_LOAD ("4000kfn.rom", 0, 0x20000, CRC(956dc96d) SHA1(9ed3ab6d893632b9246e91b412cd5db519e7586b))
2702 ROM_END
2703 
2704 void msx_state::fs4000(machine_config &config)
2705 {
2706 	msx1(TMS9128, config);
2707 	// AY8910/YM2149?
2708 	// FDC: None, 0 drives
2709 	// 2 Cartridge slots
2710 
2711 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
2712 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
2713 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
2714 	add_internal_slot(config, MSX_SLOT_ROM, "word", 3, 0, 0, 2, "maincpu", 0x8000);
2715 	add_internal_slot(config, MSX_SLOT_ROM, "kdr", 3, 1, 1, 2, "maincpu", 0x10000);
2716 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 2, 0, 4);  /* 64KB RAM */
2717 
2718 	msx1_cartlist(config);
2719 }
2720 
2721 /* MSX - National FS-4000 (Alt) */
2722 
2723 ROM_START (fs4000a)
2724 	ROM_REGION (0x18000 ,"maincpu", 0)
2725 	ROM_LOAD ("4000bios.rom",  0x0000, 0x8000, CRC(071135e0) SHA1(df48902f5f12af8867ae1a87f255145f0e5e0774))
2726 	ROM_LOAD ("4000wora.rom",  0x8000, 0x8000, CRC(52f4cdf7) SHA1(acbac3cb5b700254bed2cacc19fa54f1950f371d))
CRC(b2db6bf5)2727 	ROM_LOAD ("4000kdra.rom", 0x10000, 0x8000, CRC(b2db6bf5) SHA1(3a9a942ed888dd641cddf8deada1879c454df3c6))
2728 
2729 	ROM_REGION(0x20000, "kanji", 0)
2730 	ROM_LOAD ("4000kfn.rom", 0, 0x20000, CRC(956dc96d) SHA1(9ed3ab6d893632b9246e91b412cd5db519e7586b))
2731 ROM_END
2732 
2733 void msx_state::fs4000a(machine_config &config)
2734 {
2735 	msx1(TMS9128, config);
2736 	// AY8910/YM2149?
2737 	// FDC: None, 0 drives
2738 	// 2 Cartridge slots
2739 
2740 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
2741 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
2742 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
2743 	add_internal_slot(config, MSX_SLOT_ROM, "word", 3, 0, 0, 2, "maincpu", 0x8000);
2744 	add_internal_slot(config, MSX_SLOT_ROM, "kdr", 3, 1, 1, 2, "maincpu", 0x10000);
2745 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 2, 0, 4);  /* 64KB RAM */
2746 
2747 	msx1_cartlist(config);
2748 }
2749 
2750 /*MSX - Olympia PHC-2*/
2751 
2752 ROM_START (phc2)
2753 	ROM_REGION (0x8000, "maincpu", 0)
2754 	ROM_LOAD ("phc2bios.rom", 0x0000, 0x8000, CRC(4f7bb04b) SHA1(ab0177624d46dd77ab4f50ffcb983c3ba88223f4))
2755 ROM_END
2756 
phc2(machine_config & config)2757 void msx_state::phc2(machine_config &config)
2758 {
2759 	msx1(TMS9929A, config);
2760 	// AY8910/YM2149?
2761 	// FDC: None, 0 drives
2762 	// 2 Cartridge slots?
2763 
2764 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
2765 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
2766 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
2767 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4);  /* 64KB RAM */
2768 
2769 	msx1_cartlist(config);
2770 }
2771 
2772 /* MSX - Olympia PHC-28 */
2773 
2774 ROM_START (phc28)
2775 	ROM_REGION (0x8000, "maincpu", 0)
CRC(eceb2802)2776 	ROM_LOAD ("phc28bios.rom", 0x0000, 0x8000, CRC(eceb2802) SHA1(195950173701abeb460a1a070d83466f3f53b337))
2777 ROM_END
2778 
2779 void msx_state::phc28(machine_config &config)
2780 {
2781 	msx1(TMS9929A, config);
2782 	// AY8910/YM2149?
2783 	// FDC: None, 0 drives
2784 	// 2 Cartridge slots?
2785 
2786 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
2787 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
2788 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
2789 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 2, 2);   /* 32KB RAM */
2790 
2791 	msx1_cartlist(config);
2792 }
2793 
2794 /* MSX - Panasonic CF-2700G */
2795 
2796 ROM_START (cf2700g)
2797 	ROM_REGION (0x8000, "maincpu", 0)
2798 	ROM_LOAD ("cf2700g.rom", 0x0000, 0x8000, CRC(4aa194f4) SHA1(69bf27b610e11437dad1f7a1c37a63179a293d12))
2799 ROM_END
2800 
cf2700g(machine_config & config)2801 void msx_state::cf2700g(machine_config &config)
2802 {
2803 	msx1(TMS9929A, config);
2804 	// AY8910
2805 	// FDC: None, 0 drives
2806 	// 2 Cartridge slots
2807 
2808 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
2809 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 1, 0, 0, 4);  /* 64KB?? RAM */
2810 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
2811 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
2812 
2813 	msx1_cartlist(config);
2814 }
2815 
2816 /* MSX - Perfect Perfect1 */
2817 
2818 ROM_START (perfect1)
2819 	ROM_REGION (0x18000, "maincpu", 0)
CRC(a317e6b4)2820 	ROM_LOAD ("perfect1bios.rom", 0x0000, 0x8000, CRC(a317e6b4) SHA1(e998f0c441f4f1800ef44e42cd1659150206cf79))
2821 	ROM_LOAD ("perfect1arab.rom", 0x8000, 0x8000, CRC(6db04a4d) SHA1(01012a0e2738708861f66b6921b2e2108f2edb54))
2822 	ROM_RELOAD (0x10000, 0x8000)
2823 ROM_END
2824 
2825 void msx_state::perfect1(machine_config &config)
2826 {
2827 	msx1(TMS9929A, config);
2828 	// AY8910/YM2149?
2829 	// FDC: None, 0 dribes
2830 	// 1 Cartridge slot
2831 
2832 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
2833 	add_internal_slot(config, MSX_SLOT_ROM, "arab", 0, 1, 0, 4, "maincpu", 0x8000);
2834 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 0, 2, 0, 4); // 64KB RAM
2835 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
2836 
2837 	msx1_cartlist(config);
2838 }
2839 
2840 /* MSX - Philips NMS-801 */
2841 
2842 ROM_START (nms801)
2843 	ROM_REGION (0x8000, "maincpu", 0)
CRC(fa089461)2844 	ROM_LOAD ("801bios.rom", 0x0000, 0x8000, CRC(fa089461) SHA1(21329398c0f350e330b353f45f21aa7ba338fc8d))
2845 ROM_END
2846 
2847 void msx_state::nms801(machine_config &config)
2848 {
2849 	msx1(TMS9929A, config);
2850 	// AY8910
2851 	// FDC: None, 0 drives
2852 	// 0 Cartridge slots
2853 	// No printer port
2854 
2855 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
2856 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4);  /* 64KB RAM */
2857 }
2858 
2859 /* MSX - Philips VG-8000 */
2860 
2861 ROM_START (vg8000)
2862 	ROM_REGION (0x8000, "maincpu", 0)
CRC(efd970b0)2863 	ROM_LOAD ("8000bios.rom", 0x0000, 0x8000, CRC(efd970b0) SHA1(42252cf87deeb58181a7bfec7c874190a1351779))
2864 ROM_END
2865 
2866 void msx_state::vg8000(machine_config &config)
2867 {
2868 	msx1(TMS9129, config);
2869 	// AY8910
2870 	// FDC: None, 0 drives
2871 	// 2 Cartridge slots
2872 	// No printer port
2873 
2874 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
2875 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
2876 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
2877 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 3, 1);   /* 16KB RAM */
2878 
2879 	msx1_cartlist(config);
2880 }
2881 
2882 /* MSX - Philips VG-8010 */
2883 
2884 ROM_START (vg8010)
2885 	ROM_REGION (0x8000, "maincpu", 0)
CRC(efd970b0)2886 	ROM_LOAD ("8010bios.rom", 0x0000, 0x8000, CRC(efd970b0) SHA1(42252cf87deeb58181a7bfec7c874190a1351779))
2887 ROM_END
2888 
2889 void msx_state::vg8010(machine_config &config)
2890 {
2891 	msx1(TMS9129, config);
2892 	// AY8910
2893 	// FDC: None, 0 drives
2894 	// 2 Cartridge slots
2895 	// No printer port
2896 
2897 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
2898 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
2899 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
2900 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 2, 2);   /* 32KB RAM */
2901 
2902 	msx1_cartlist(config);
2903 }
2904 
2905 /* MSX - Philips VG-8010F */
2906 
2907 ROM_START (vg8010f)
2908 	ROM_REGION (0x8000, "maincpu", 0)
CRC(df57c9ca)2909 	ROM_LOAD ("8010fbios.rom", 0x0000, 0x8000, CRC(df57c9ca) SHA1(898630ad1497dc9a329580c682ee55c4bcb9c30c))
2910 ROM_END
2911 
2912 void msx_state::vg8010f(machine_config &config)
2913 {
2914 	msx1(TMS9129, config);
2915 	// AY8910/YM2149?
2916 	// FDC: None, 0 drives
2917 	// 2 Cartridge slots
2918 	// No printer port
2919 
2920 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
2921 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
2922 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
2923 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 2, 2);   /* 32KB RAM */
2924 
2925 	msx1_cartlist(config);
2926 }
2927 
2928 /* MSX - Philips VG-8020-00 */
2929 
2930 ROM_START (vg802000)
2931 	ROM_REGION (0x8000, "maincpu", 0)
2932 	ROM_LOAD ("8020-00bios.rom", 0x0000, 0x8000, CRC(8205795e) SHA1(829c00c3114f25b3dae5157c0a238b52a3ac37db))
2933 ROM_END
2934 
vg802000(machine_config & config)2935 void msx_state::vg802000(machine_config &config)
2936 {
2937 	msx1(TMS9929A, config);
2938 	// YM2149
2939 	// FDC: None, 0 drives
2940 	// 2 Cartridge slots
2941 
2942 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
2943 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
2944 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
2945 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4);  /* 64KB RAM */
2946 
2947 	msx1_cartlist(config);
2948 }
2949 
2950 /* MSX - Philips VG-8020-20 */
2951 
2952 ROM_START (vg802020)
2953 	ROM_REGION (0x8000, "maincpu", 0)
CRC(a317e6b4)2954 	ROM_LOAD ("8020-20bios.rom", 0x0000, 0x8000, CRC(a317e6b4) SHA1(e998f0c441f4f1800ef44e42cd1659150206cf79))
2955 ROM_END
2956 
2957 void msx_state::vg802020(machine_config &config)
2958 {
2959 	msx1(TMS9129, config);
2960 	// YM2149 (in S-3527 MSX Engine)
2961 	// FDC: None, 0 drives
2962 	// 2 Cartridge slots
2963 	// S-3527 MSX Engine
2964 
2965 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
2966 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
2967 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
2968 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x10000);   /* 64KB Mapper RAM */
2969 
2970 	msx1_cartlist(config);
2971 }
2972 
2973 /* MSX - Philips VG-8020F */
2974 
2975 ROM_START (vg8020f)
2976 	ROM_REGION (0x8000, "maincpu", 0)
2977 	ROM_LOAD ("vg8020f.rom", 0x0000, 0x8000, CRC(6e692fa1) SHA1(9eaad185efc8e224368d1db4949eb9659c26fb2c))
2978 ROM_END
2979 
vg8020f(machine_config & config)2980 void msx_state::vg8020f(machine_config &config)
2981 {
2982 	msx1(TMS9929A, config);
2983 	// YM2149 (in S-3527 MSX Engine)
2984 	// FDC: None, 0 drives
2985 	// 2 Cartridge slots
2986 	// S-3527 MSX Engine
2987 
2988 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
2989 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
2990 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
2991 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 2, 0, 4);  /* 64KB?? RAM */
2992 
2993 	msx1_cartlist(config);
2994 }
2995 
2996 /* MSX - Pioneer PX-7 */
2997 
2998 ROM_START (piopx7)
2999 	ROM_REGION (0xc000, "maincpu", 0)
CRC(e9ccd789)3000 	ROM_LOAD ("ym2301.ic12", 0x0000, 0x8000, CRC(e9ccd789) SHA1(8963fc041975f31dc2ab1019cfdd4967999de53e))
3001 	ROM_LOAD ("pd5031.ic13", 0x8000, 0x2000, CRC(91e0df72) SHA1(4f0102cdc27216fd9bcdb9663db728d2ccd8ca6d))
3002 	ROM_FILL( 0xa000, 0x2000, 0x6E )
3003 ROM_END
3004 
3005 void msx_state::piopx7(machine_config &config)
3006 {
3007 	msx1(TMS9929A, config);
3008 	// TMS9129NL VDP with sync/overlay interface
3009 	// AY-3-8910 PSG
3010 	// Pioneer System Remote (SR) system control interface
3011 	// FDC: None, 0 drives
3012 	// 2 Cartridge slots
3013 
3014 	// Line-level stereo audio input can be mixed with sound output, balance controlled with slider on front panel
3015 	// Front-panel switch allows audio input to be passed through bypassing the mixing circuit
3016 	// Line input can be muted under software control, e.g. when loading data from Laserdisc
3017 	// Right channel of line input is additionally routed via some signal processing to the cassette input for loading data from Laserdisc
3018 
3019 	// PSG port B bits 0-5 can be used to drive controller pins 1-6, 1-7, 2-6, 2-7, 1-8 and 2-8 low if 0 is written
3020 
3021 	// Slot #2 7FFE is the SR control register LCON
3022 	// Bit 7 R = /ACK (significant with acknowledge 1->0 with respect to remote control signal transmission)
3023 	// Bit 0 R = RMCLK (clock produced by dividing CLK1/CLK2 frequency by 128)
3024 	// Bit 0 W = /REM (high output with bit serial data output generated in synchronisation with RMCLK)
3025 
3026 	// Slot #2 7FFF is the video overlay control register VCON
3027 	// Bit 7 R = /EXTV (low when external video input available; high when not available)
3028 	// Bit 7 W = Mute (line input signal muting)
3029 	// Bit 0 R = INTEXV (interrupt available when external video signal OFF, reset on read)
3030 	// Bit 0 W = /OVERLAY (0 = superimpose, 1 = non-superimpose)
3031 
3032 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
3033 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 0, 0, 2, 2);   /* 32KB RAM */
3034 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
3035 	add_internal_slot(config, MSX_SLOT_ROM, "rom2", 2, 0, 1, 1, "maincpu", 0x8000);
3036 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
3037 
3038 	msx1_cartlist(config);
3039 }
3040 
3041 /* MSX - Pioneer PX-7UK */
3042 
3043 ROM_START (piopx7uk)
3044 	ROM_REGION (0x14000, "maincpu", 0)
CRC(e9ccd789)3045 	ROM_LOAD ("px7ukbios.rom",   0x0000, 0x8000, CRC(e9ccd789) SHA1(8963fc041975f31dc2ab1019cfdd4967999de53e))
3046 	ROM_LOAD ("px7ukpbasic.rom", 0x8000, 0x2000, CRC(91e0df72) SHA1(4f0102cdc27216fd9bcdb9663db728d2ccd8ca6d))
3047 	ROM_FILL( 0xa000, 0x2000, 0x6E )
3048 	ROM_LOAD ("videoart.rom",    0xc000, 0x8000, CRC(0ba148dc) SHA1(b7b4e4cd40a856bb071976e6cf0f5e546fc86a78))
3049 ROM_END
3050 
3051 void msx_state::piopx7uk(machine_config &config)
3052 {
3053 	msx1(TMS9129, config);
3054 	// AY8910/YM2149?
3055 	// FDC: None, 0 drives
3056 	// 2 Cartridge slots
3057 
3058 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
3059 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 0, 0, 2, 2);   /* 32KB RAM */
3060 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
3061 	add_internal_slot(config, MSX_SLOT_ROM, "rom2", 2, 0, 1, 1, "maincpu", 0x8000);
3062 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
3063 
3064 	msx1_cartlist(config);
3065 }
3066 
3067 /* MSX - Pioneer PX-V60 */
3068 
3069 ROM_START (piopxv60)
3070 	ROM_REGION (0xc000, "maincpu", 0)
CRC(ee229390)3071 	ROM_LOAD ("pxv60bios.rom",   0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
3072 	ROM_LOAD ("pxv60pbasic.rom", 0x8000, 0x2000, CRC(91e0df72) SHA1(4f0102cdc27216fd9bcdb9663db728d2ccd8ca6d))
3073 	ROM_FILL( 0xa000, 0x2000, 0x6E )
3074 ROM_END
3075 
3076 void msx_state::piopxv60(machine_config &config)
3077 {
3078 	msx1(TMS9128, config);
3079 	// AY8910/YM2149?
3080 	// FDC: None, 0 drives
3081 	// 2 Cartridge slots
3082 
3083 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
3084 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 0, 0, 2, 2);   /* 32KB RAM */
3085 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
3086 	add_internal_slot(config, MSX_SLOT_ROM, "rom2", 2, 0, 1, 1, "maincpu", 0x8000);
3087 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
3088 
3089 	msx1_cartlist(config);
3090 }
3091 
3092 /* MSX - Samsung SPC-800 */
3093 
3094 ROM_START (spc800)
3095 	ROM_REGION (0xc000, "maincpu", 0)
3096 	ROM_LOAD ("spc800bios.rom", 0x0000, 0x8000, CRC(3ab0cd3b) SHA1(171b587bd5a947a13f3114120b6e7baca3b57d78))
3097 	ROM_LOAD ("spc800han.rom",  0x8000, 0x4000, CRC(5ae2b013) SHA1(1e7616261a203580c1044205ad8766d104f1d874))
3098 ROM_END
3099 
spc800(machine_config & config)3100 void msx_state::spc800(machine_config &config)
3101 {
3102 	msx1(TMS9928A, config);
3103 	// AY8910/YM2149?
3104 	// FDC: None, 0 drives
3105 	// 2 Cartridge slots?
3106 
3107 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
3108 	add_internal_slot(config, MSX_SLOT_ROM, "han", 0, 0, 4, 1, "maincpu", 0x8000);
3109 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
3110 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4);  /* 64KB?? RAM */
3111 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
3112 
3113 	msx1_cartlist(config);
3114 }
3115 
3116 /* MSX - Sanyo MPC-64 */
3117 
3118 ROM_START (mpc64)
3119 	ROM_REGION (0x8000, "maincpu", 0)
CRC(d6e704ad)3120 	ROM_LOAD ("mpc64bios.rom", 0x0000, 0x8000, CRC(d6e704ad) SHA1(d67be6d7d56d7229418f4e122f2ec27990db7d19))
3121 ROM_END
3122 
3123 void msx_state::mpc64(machine_config &config)
3124 {
3125 	msx1(TMS9928A, config);
3126 	// AY8910/YM2149?
3127 	// FDC: None, 0 drives
3128 	// 2 Cartridge slots?
3129 
3130 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
3131 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
3132 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
3133 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4);  /* 64KB RAM */
3134 
3135 	msx1_cartlist(config);
3136 }
3137 
3138 /* MSX - Sanyo MPC-100 */
3139 
3140 ROM_START (mpc100)
3141 	ROM_REGION (0x8000, "maincpu", 0)
CRC(e9ccd789)3142 	ROM_LOAD ("mpc100bios.rom", 0x0000, 0x8000, CRC(e9ccd789) SHA1(8963fc041975f31dc2ab1019cfdd4967999de53e))
3143 ROM_END
3144 
3145 void msx_state::mpc100(machine_config &config)
3146 {
3147 	msx1(TMS9929A, config);
3148 	// AY8910/YM2149?
3149 	// FDC: None, 0 drives
3150 	// 2 Cartridge slots
3151 
3152 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
3153 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
3154 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
3155 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4);  /* 64KB RAM */
3156 
3157 	msx1_cartlist(config);
3158 }
3159 
3160 /* MSX - Sanyo MPC-200 */
3161 
3162 ROM_START (mpc200)
3163 	ROM_REGION (0x8000, "maincpu", 0)
CRC(e9ccd789)3164 	ROM_LOAD ("mpc200bios.rom", 0x0000, 0x8000, CRC(e9ccd789) SHA1(8963fc041975f31dc2ab1019cfdd4967999de53e))
3165 ROM_END
3166 
3167 void msx_state::mpc200(machine_config &config)
3168 {
3169 	msx1(TMS9929A, config);
3170 	// AY8910/YM2149?
3171 	// FDC: None, 0 drives
3172 	// 2? Cartridge slots
3173 	// T6950
3174 	// T7775 MSX Engine
3175 
3176 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
3177 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
3178 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
3179 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4); // 64KB RAM
3180 
3181 	msx1_cartlist(config);
3182 }
3183 
3184 /* MSX - Sanyo MPC-200SP */
3185 
3186 ROM_START (mpc200sp)
3187 	ROM_REGION (0x8000, "maincpu", 0)
CRC(bcd79900)3188 	ROM_LOAD ("mpcsp200bios.rom", 0x0000, 0x8000, CRC(bcd79900) SHA1(fc8c2b69351e60dc902add232032c2d69f00e41e))
3189 ROM_END
3190 
3191 void msx_state::mpc200sp(machine_config &config)
3192 {
3193 	msx1(TMS9929A, config);
3194 	// AY8910/YM2149?
3195 	// FDC: None, 0 drives
3196 	// 2? Cartridge slots
3197 
3198 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
3199 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
3200 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
3201 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4); // 64KB RAM
3202 
3203 	msx1_cartlist(config);
3204 }
3205 
3206 /* MSX - Sanyo PHC-28L */
3207 
3208 ROM_START (phc28l)
3209 	ROM_REGION( 0x8000, "maincpu", 0)
CRC(d2110d66)3210 	ROM_LOAD ("28lbios.rom", 0x0000, 0x8000, CRC(d2110d66) SHA1(d3af963e2529662eae63f04a2530454685a1989f))
3211 ROM_END
3212 
3213 void msx_state::phc28l(machine_config &config)
3214 {
3215 	msx1(TMS9929A, config);
3216 	// YM2149
3217 	// FDC: None, 0 drives
3218 	// 2 Cartridge slots
3219 
3220 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
3221 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
3222 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
3223 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4);  /* 64KB RAM */
3224 
3225 	msx1_cartlist(config);
3226 }
3227 
3228 /* MSX - Sanyo PHC-28S */
3229 
3230 ROM_START (phc28s)
3231 	ROM_REGION (0x8000, "maincpu", 0)
CRC(e5cf6b3c)3232 	ROM_LOAD ("28sbios.rom", 0x0000, 0x8000, CRC(e5cf6b3c) SHA1(b1cce60ef61c058f5e42ef7ac635018d1a431168))
3233 ROM_END
3234 
3235 void msx_state::phc28s(machine_config &config)
3236 {
3237 	msx1(TMS9929A, config);
3238 	// AY8910/YM2149?
3239 	// FDC: None, 0 drives
3240 	// 2 Cartridge slots?
3241 
3242 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
3243 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
3244 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
3245 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 2, 2);   /* 32KB RAM */
3246 
3247 	msx1_cartlist(config);
3248 }
3249 
3250 /* MSX - Sanyo Wavy MPC-10 */
3251 
3252 ROM_START (mpc10)
3253 	ROM_REGION (0x8000, "maincpu", 0)
CRC(e9ccd789)3254 	ROM_LOAD ("mpc10.rom", 0x0000, 0x8000, CRC(e9ccd789) SHA1(8963fc041975f31dc2ab1019cfdd4967999de53e))
3255 ROM_END
3256 
3257 void msx_state::mpc10(machine_config &config)
3258 {
3259 	msx1(TMS9929A, config);
3260 	// AY8910/YM2149?
3261 	// FDC: None, 0 drives
3262 	// 2 Cartridge slots?
3263 
3264 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
3265 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
3266 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
3267 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 2, 2);   /* 32KB RAM */
3268 
3269 	msx1_cartlist(config);
3270 }
3271 
3272 /* MSX - Sharp Epcom HotBit 1.1 */
3273 
3274 ROM_START (hotbit11)
3275 	ROM_REGION (0x8000, "maincpu",0)
CRC(b6942694)3276 	ROM_LOAD ("hotbit11.rom", 0x0000, 0x8000, CRC(b6942694) SHA1(663f8c512d04d213fa616b0db5eefe3774012a4b))
3277 ROM_END
3278 
3279 void msx_state::hotbit11(machine_config &config)
3280 {
3281 	msx1(TMS9128, config);
3282 	// AY8910/YM2149?
3283 	// FDC: None, 0 drives
3284 	// 2 Cartridge slots
3285 
3286 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
3287 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
3288 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
3289 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4);  /* 64KB RAM */
3290 
3291 	msx1_cartlist(config);
3292 }
3293 
3294 /* MSX - Sharp Epcom HotBit 1.2 */
3295 
3296 ROM_START (hotbit12)
3297 	ROM_REGION (0x8000, "maincpu",0)
CRC(f59a4a0c)3298 	ROM_LOAD ("hotbit12.rom", 0x0000, 0x8000, CRC(f59a4a0c) SHA1(9425815446d468058705bae545ffa13646744a87))
3299 ROM_END
3300 
3301 void msx_state::hotbit12(machine_config &config)
3302 {
3303 	msx1(TMS9128, config);
3304 	// AY8910/YM2149?
3305 	// FDC: None, 0 drives
3306 	// 2 Cartridge slots
3307 
3308 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
3309 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
3310 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
3311 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4);  /* 64KB RAM */
3312 
3313 	msx1_cartlist(config);
3314 }
3315 
3316 /* MSX - Sharp Epcom HotBit 1.3b */
3317 
3318 ROM_START (hotbi13b)
3319 	ROM_REGION (0x8000, "maincpu",0)
3320 	ROM_LOAD ("hotbit13b.rom", 0x0000, 0x8000, CRC(7a19820e) SHA1(e0c2bfb078562d15acabc5831020a2370ea87052))
3321 ROM_END
3322 
hotbi13b(machine_config & config)3323 void msx_state::hotbi13b(machine_config &config)
3324 {
3325 	msx1(TMS9928A, config);
3326 	// AY8910/YM2149?
3327 	// FDC: None, 0 drives
3328 	// 2 Cartridge slots?
3329 
3330 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
3331 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
3332 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
3333 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000);   /* 64KB Mapper RAM */
3334 
3335 	msx1_cartlist(config);
3336 }
3337 
3338 /* MSX - Sharp Epcom HotBit 1.3p */
3339 
3340 ROM_START (hotbi13p)
3341 	ROM_REGION (0x8000, "maincpu",0)
3342 	ROM_LOAD ("hotbit13p.rom", 0x0000, 0x8000, CRC(150e239c) SHA1(942f9507d206cd8156f15601fe8032fcf0e3875b))
3343 ROM_END
3344 
hotbi13p(machine_config & config)3345 void msx_state::hotbi13p(machine_config &config)
3346 {
3347 	msx1(TMS9928A, config);
3348 	// AY8910/YM2149?
3349 	// FDC: None, 0 drives
3350 	// 2 Cartridge slots?
3351 
3352 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
3353 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
3354 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
3355 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000);   /* 64KB Mapper RAM */
3356 
3357 	msx1_cartlist(config);
3358 }
3359 
3360 /* MSX - Sony HB-10 */
3361 
3362 ROM_START (hb10)
3363 	ROM_REGION (0x8000, "maincpu", 0)
CRC(ee229390)3364 	ROM_LOAD ("hb10bios.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
3365 ROM_END
3366 
3367 void msx_state::hb10(machine_config &config)
3368 {
3369 	msx1(TMS9928A, config);
3370 	// YM2149 (in S-1985 MSX-Engine)
3371 	// FDC: None, 0 drives
3372 	// 2 Cartridge slots
3373 	// S-1985 MSX-Engine
3374 
3375 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
3376 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
3377 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
3378 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 3, 1);  /* 16KB? RAM */
3379 
3380 	MSX_S1985(config, "s1985", 0);
3381 
3382 	msx1_cartlist(config);
3383 }
3384 
3385 /* MSX - Sony HB-10P */
3386 
3387 ROM_START (hb10p)
3388 	ROM_REGION (0x8000, "maincpu", 0)
3389 	ROM_LOAD ("10pbios.rom", 0x0000, 0x8000, CRC(0f488dd8) SHA1(5e7c8eab238712d1e18b0219c0f4d4dae180420d))
3390 ROM_END
3391 
hb10p(machine_config & config)3392 void msx_state::hb10p(machine_config &config)
3393 {
3394 	msx1(TMS9929A, config);
3395 	// XTAL: 3.579545 + 22.168(VDP)
3396 	// YM2149 (in S3527 MSX-Engine)
3397 	// FDC: None, 0 drives
3398 	// 2 Cartridge slots
3399 	// T6950
3400 
3401 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
3402 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
3403 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
3404 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4);  /* 64KB RAM */
3405 
3406 	msx1_cartlist(config);
3407 }
3408 
3409 /* MSX - Sony HB-20P */
3410 
3411 ROM_START (hb20p)
3412 	ROM_REGION (0x8000, "maincpu", 0)
3413 	ROM_LOAD ("20pbios.rom", 0x0000, 0x8000, CRC(21af423f) SHA1(365c93d7652c9f727221689bcc348652832a7b7a))
3414 ROM_END
3415 
hb20p(machine_config & config)3416 void msx_state::hb20p(machine_config &config)
3417 {
3418 	msx1(TMS9929A, config);
3419 	// AY8910/YM2149?
3420 	// FDC: None, 0 drives
3421 	// 2 Cartridge slots
3422 	// T6950
3423 
3424 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
3425 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
3426 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
3427 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4);  /* 64KB RAM */
3428 
3429 	msx1_cartlist(config);
3430 }
3431 
3432 /* MSX - Sony HB-201 */
3433 
3434 ROM_START (hb201)
3435 	ROM_REGION (0x10000, "maincpu", 0)
CRC(ee229390)3436 	ROM_LOAD ("201bios.rom.ic9", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
3437 	ROM_LOAD ("201note.rom.ic8", 0x8000, 0x4000, CRC(74567244) SHA1(0f4f09f1a6ef7535b243afabfb44a3a0eb0498d9))
3438 	ROM_FILL( 0xc000, 0x4000, 0xff )
3439 ROM_END
3440 
3441 void msx_state::hb201(machine_config &config)
3442 {
3443 	msx1(TMS9928A, config);
3444 	// AY8910/YM2149?
3445 	// FDC: None, 0 drives
3446 	// 2 Cartridge slots?
3447 
3448 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
3449 	add_internal_slot(config, MSX_SLOT_ROM, "note", 0, 0, 2, 2, "maincpu", 0x8000);
3450 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
3451 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
3452 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4);  /* 64KB RAM */
3453 
3454 	msx1_cartlist(config);
3455 }
3456 
3457 /* MSX - Sony HB-201P */
3458 
3459 ROM_START (hb201p)
3460 	ROM_REGION (0xc000, "maincpu", 0)
3461 	ROM_LOAD ("201pbios.rom.ic9", 0x0000, 0x8000, CRC(0f488dd8) SHA1(5e7c8eab238712d1e18b0219c0f4d4dae180420d))
3462 	ROM_LOAD ("201pnote.rom.ic8", 0x8000, 0x4000, CRC(1ff9b6ec) SHA1(e84d3ec7a595ee36b50e979683c84105c1871857))
3463 ROM_END
3464 
hb201p(machine_config & config)3465 void msx_state::hb201p(machine_config &config)
3466 {
3467 	msx1(TMS9929A, config);
3468 	// YM2149
3469 	// FDC: None, 0 drives
3470 	// 2 Cartridge slots
3471 
3472 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
3473 	add_internal_slot(config, MSX_SLOT_ROM, "note", 0, 0, 2, 1, "maincpu", 0x8000);
3474 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
3475 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
3476 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4);  /* 64KB RAM */
3477 
3478 	msx1_cartlist(config);
3479 }
3480 
3481 /* MSX - Sony HB-501P */
3482 
3483 ROM_START (hb501p)
3484 	ROM_REGION (0x8000, "maincpu", 0)
3485 	ROM_LOAD ("501pbios.rom", 0x0000, 0x8000, CRC(0f488dd8) SHA1(5e7c8eab238712d1e18b0219c0f4d4dae180420d))
3486 ROM_END
3487 
hb501p(machine_config & config)3488 void msx_state::hb501p(machine_config &config)
3489 {
3490 	msx1(TMS9929A, config);
3491 	// AY8910/YM2149?
3492 	// FDC: None, 0 drives
3493 	// 2 Cartridge slots
3494 
3495 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
3496 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
3497 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
3498 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4);  /* 64KB RAM */
3499 
3500 	msx1_cartlist(config);
3501 }
3502 
3503 /* MSX - Sony HB-55 (Version 1) */
3504 
3505 ROM_START (hb55)
3506 	ROM_REGION (0xc000, "maincpu", 0)
CRC(ee229390)3507 	ROM_LOAD ("hb55bios.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
3508 	ROM_LOAD ("hb55note.rom", 0x8000, 0x2000, CRC(5743ab55) SHA1(b9179db93608c4da649532e704f072e0a3ea1b22))
3509 ROM_END
3510 
3511 void msx_state::hb55(machine_config &config)
3512 {
3513 	msx1(TMS9928A, config);
3514 	// AY8910/YM2149?
3515 	// FDC: None, 0 drives
3516 	// 2 Cartridge slots?
3517 
3518 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
3519 	add_internal_slot(config, MSX_SLOT_ROM, "note", 0, 0, 2, 1, "maincpu", 0x8000);
3520 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 0, 0, 3, 1);   /* 16KB RAM */
3521 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
3522 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
3523 
3524 	msx1_cartlist(config);
3525 }
3526 
3527 /* MSX - Sony HB-55D */
3528 
3529 ROM_START (hb55d)
3530 	ROM_REGION (0xc000, "maincpu", 0)
3531 	ROM_LOAD ("55dbios.rom", 0x0000, 0x8000, CRC(7e2b32dd) SHA1(38a645febd0e0fe86d594f27c2d14be995acc730))
3532 	ROM_LOAD ("55dnote.rom", 0x8000, 0x4000, CRC(8aae0494) SHA1(97ce59892573cac3c440efff6d74c8a1c29a5ad3))
3533 ROM_END
3534 
hb55d(machine_config & config)3535 void msx_state::hb55d(machine_config &config)
3536 {
3537 	msx1(TMS9929A, config);
3538 	// AY8910/YM2149?
3539 	// FDC: None, 0 drives
3540 	// 2 Cartridge slots?
3541 
3542 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
3543 	add_internal_slot(config, MSX_SLOT_ROM, "note", 0, 0, 2, 1, "maincpu", 0x8000);
3544 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
3545 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 3, 1);   /* 16KB RAM */
3546 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
3547 
3548 	msx1_cartlist(config);
3549 }
3550 
3551 /* MSX - Sony HB-55P */
3552 
3553 ROM_START (hb55p)
3554 	ROM_REGION (0xc000, "maincpu", 0)
3555 	ROM_LOAD ("55pbios.ic42", 0x0000, 0x4000, CRC(24c198be) SHA1(7f8c94cb8913db32a696dec80ffc78e46693f1b7))
CRC(e516e7e5)3556 	ROM_LOAD ("55pbios.ic43", 0x4000, 0x4000, CRC(e516e7e5) SHA1(05fedd4b9bfcf4949020c79d32c4c3f03a54fb62))
3557 	ROM_LOAD ("55pnote.ic44", 0x8000, 0x4000, CRC(492b12f8) SHA1(b262aedc71b445303f84efe5e865cbb71fd7d952))
3558 ROM_END
3559 
3560 void msx_state::hb55p(machine_config &config)
3561 {
3562 	msx1(TMS9929A, config);
3563 	// AY8910
3564 	// FDC: None, 0 drives
3565 	// 2 Cartridge slots
3566 
3567 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
3568 	add_internal_slot(config, MSX_SLOT_ROM, "note", 0, 0, 2, 1, "maincpu", 0x8000);
3569 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
3570 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 3, 1);   /* 16KB RAM */
3571 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
3572 
3573 	msx1_cartlist(config);
3574 }
3575 
3576 /* MSX - Sony HB-75D */
3577 
3578 ROM_START (hb75d)
3579 	ROM_REGION (0xc000, "maincpu", 0)
3580 	ROM_LOAD ("75dbios.rom", 0x0000, 0x8000, CRC(7e2b32dd) SHA1(38a645febd0e0fe86d594f27c2d14be995acc730))
3581 	ROM_LOAD ("75dnote.rom", 0x8000, 0x4000, CRC(8aae0494) SHA1(97ce59892573cac3c440efff6d74c8a1c29a5ad3))
3582 ROM_END
3583 
hb75d(machine_config & config)3584 void msx_state::hb75d(machine_config &config)
3585 {
3586 	msx1(TMS9929A, config);
3587 	// AY8910/YM2149?
3588 	// FDC: None, 0 drives
3589 	// 2 Cartridge slots?
3590 
3591 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
3592 	add_internal_slot(config, MSX_SLOT_ROM, "note", 0, 0, 2, 1, "maincpu", 0x8000);
3593 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
3594 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4);  /* 64KB RAM */
3595 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
3596 
3597 	msx1_cartlist(config);
3598 }
3599 
3600 /* MSX - Sony HB-75P */
3601 
3602 ROM_START (hb75p)
3603 	ROM_REGION (0xc000, "maincpu", 0)
3604 	ROM_LOAD ("75pbios.ic42", 0x0000, 0x4000, CRC(24c198be) SHA1(7f8c94cb8913db32a696dec80ffc78e46693f1b7))
CRC(e516e7e5)3605 	ROM_LOAD ("75pbios.ic43", 0x4000, 0x4000, CRC(e516e7e5) SHA1(05fedd4b9bfcf4949020c79d32c4c3f03a54fb62))
3606 	ROM_LOAD ("75pnote.ic44", 0x8000, 0x4000, CRC(492b12f8) SHA1(b262aedc71b445303f84efe5e865cbb71fd7d952))
3607 ROM_END
3608 
3609 void msx_state::hb75p(machine_config &config)
3610 {
3611 	msx1(TMS9929A, config);
3612 	// AY8910
3613 	// FDC: None, 0 drives
3614 	// 2 Cartridge slots?
3615 
3616 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
3617 	add_internal_slot(config, MSX_SLOT_ROM, "note", 0, 0, 2, 1, "maincpu", 0x8000);
3618 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
3619 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4);  /* 64KB RAM */
3620 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
3621 
3622 	msx1_cartlist(config);
3623 }
3624 
3625 /* MSX - Sony HB-101P */
3626 
3627 ROM_START (hb101p)
3628 	ROM_REGION (0xc000, "maincpu", 0)
3629 	ROM_LOAD ("101pbios.rom", 0x0000, 0x8000, CRC(0f488dd8) SHA1(5e7c8eab238712d1e18b0219c0f4d4dae180420d))
3630 	ROM_LOAD ("101pnote.rom", 0x8000, 0x4000, CRC(525017c2) SHA1(8ffc24677fd9d2606a79718764261cdf02434f0a))
3631 ROM_END
3632 
hb101p(machine_config & config)3633 void msx_state::hb101p(machine_config &config)
3634 {
3635 	msx1(TMS9929A, config);
3636 	// AY8910/YM2149?
3637 	// FDC: None, 0 drives
3638 	// 2 Cartridge slots
3639 
3640 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
3641 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 0, 0, 2, 2);   /* 32KB RAM */
3642 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
3643 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
3644 	add_internal_slot(config, MSX_SLOT_ROM, "note", 3, 0, 1, 1, "maincpu", 0x8000);
3645 
3646 	msx1_cartlist(config);
3647 }
3648 
3649 /* MSX - Sony HB-701FD */
3650 
3651 ROM_START (hb701fd)
3652 	ROM_REGION (0xc000, "maincpu", 0)
CRC(ee229390)3653 	ROM_LOAD ("hb701fdbios.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
3654 	ROM_LOAD ("hb701fddisk.rom", 0x8000, 0x4000, CRC(71961d9d) SHA1(2144036d6573d666143e890e5413956bfe8f66c5))
3655 ROM_END
3656 
3657 void msx_state::hb701fd(machine_config &config)
3658 {
3659 	msx1(TMS9928A, config);
3660 	// YM2149 (in S-1985)
3661 	// FDC: WD2793?, 1 3.5" SSDD drive
3662 	// 2 Cartridge slots
3663 	// S-1985 MSX Engine
3664 
3665 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
3666 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
3667 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
3668 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4);  /* 64KB RAM */
3669 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 1, 1, 2, "maincpu", 0x8000).set_tags("fdc", "fdc:0", "fdc:1"); // Is this correct??
3670 
3671 	msx_wd2793_force_ready(config);
3672 	msx_1_35_ssdd_drive(config);
3673 	msx1_floplist(config);
3674 
3675 	msx1_cartlist(config);
3676 }
3677 
3678 /* MSX - Spectravideo SVI-728 */
3679 
3680 ROM_START (svi728)
3681 	ROM_REGION (0xc000, "maincpu", 0)
3682 	ROM_LOAD ("728bios.rom", 0x0000, 0x8000, CRC(1ce9246c) SHA1(ea6a82cf8c6e65eb30b98755c8577cde8d9186c0))
3683 //  ROM_LOAD ("707disk.rom", 0x8000, 0x4000, CRC(f9978853) SHA1(6aa856cc56eb98863c9da7a566571605682b5c6b))
3684 ROM_END
3685 
svi728(machine_config & config)3686 void msx_state::svi728(machine_config &config)
3687 {
3688 	msx1(TMS9129, config);
3689 	// AY8910
3690 	// FDC: None, 0 drives
3691 	// 1 Cartridge slots, 1 Expansion slot (eg for SVI-707)
3692 
3693 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
3694 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 1, 0, 0, 4);  /* 64KB RAM */
3695 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot", 2, 0, msx_cart, nullptr);
3696 //  MSX_LAYOUT_SLOT (3, 0, 1, 1, DISK_ROM2, 0x4000, 0x8000)
3697 //  MSX_LAYOUT_SLOT (3, 1, 0, 4, CARTRIDGE2, 0x0000, 0x0000)
3698 
3699 	msx1_cartlist(config);
3700 }
3701 
3702 /* MSX - Spectravideo SVI-738 */
3703 
3704 ROM_START (svi738)
3705 	ROM_REGION (0x10000, "maincpu", 0)
CRC(ad007d62)3706 	ROM_LOAD ("738bios.rom", 0x0000, 0x8000, CRC(ad007d62) SHA1(c53b3f2c00f31683914f7452f3f4d94ae2929c0d))
3707 	ROM_LOAD ("738disk.rom", 0x8000, 0x4000, CRC(acd27a36) SHA1(99a40266bc296cef1d432cb0caa8df1a7e570be4))
3708 	ROM_LOAD ("738232c.rom", 0xc000, 0x2000, CRC(3353dcc6) SHA1(4e9384c9d137f0ab65ffc5a78f04cd8c9df6c8b7))
3709 	ROM_FILL (0xe000, 0x2000, 0xff)
3710 ROM_END
3711 
3712 void msx_state::svi738(machine_config &config)
3713 {
3714 	msx1(TMS9929A, config);
3715 	// AY8910
3716 	// FDC: wd1793, 1 3.5" SSDD drive
3717 	// 2 Cartridge slots
3718 	// builtin 80 columns card (V9938)
3719 	// RS-232C interface
3720 
3721 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
3722 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 1, 0, 0, 4);  /* 64KB RAM */
3723 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
3724 	add_internal_slot(config, MSX_SLOT_ROM, "rs232", 3, 0, 1, 1, "maincpu", 0xc000);
3725 	add_internal_slot_mirrored(config, MSX_SLOT_DISK2, "disk", 3, 1, 1, 2, "maincpu", 0x8000).set_tags("fdc", "fdc:0", "fdc:1");
3726 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 2, msx_cart, nullptr);
3727 
3728 	msx_fd1793(config);
3729 	msx_1_35_ssdd_drive(config);
3730 	msx1_floplist(config);
3731 
3732 	msx1_cartlist(config);
3733 }
3734 
3735 /* MSX - Spectravideo SVI-738 Arabic */
3736 
3737 ROM_START (svi738ar)
3738 	ROM_REGION (0x18000, "maincpu", 0)
CRC(ad007d62)3739 	ROM_LOAD ("738arbios.rom", 0x0000, 0x8000, CRC(ad007d62) SHA1(c53b3f2c00f31683914f7452f3f4d94ae2929c0d))
3740 	ROM_LOAD ("738ardisk.rom", 0x8000, 0x4000, CRC(acd27a36) SHA1(99a40266bc296cef1d432cb0caa8df1a7e570be4))
3741 	ROM_LOAD ("738ar232c.rom", 0xc000, 0x2000, CRC(3353dcc6) SHA1(4e9384c9d137f0ab65ffc5a78f04cd8c9df6c8b7))
3742 	ROM_FILL (0xe000, 0x2000, 0xff)
3743 	ROM_LOAD ("738arab.rom",  0x10000, 0x8000, CRC(339cd1aa) SHA1(0287b2ec897b9196788cd9f10c99e1487d7adbbb))
3744 ROM_END
3745 
3746 void msx_state::svi738ar(machine_config &config)
3747 {
3748 	msx1(TMS9929A, config);
3749 	// AY8910
3750 	// FDC: wd2793, 1 3.5" SSDD drive
3751 	// 2 Cartridge slots
3752 	// builtin 80 columns card (V9938)
3753 	// RS-232C interface
3754 
3755 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
3756 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 1, 0, 0, 4);  /* 64KB RAM */
3757 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
3758 	add_internal_slot(config, MSX_SLOT_ROM, "rs232", 3, 0, 1, 1, "maincpu", 0xc000);
3759 	add_internal_slot_mirrored(config, MSX_SLOT_DISK2, "disk", 3, 1, 1, 2, "maincpu", 0x8000).set_tags("fdc", "fdc:0", "fdc:1");
3760 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 2, msx_cart, nullptr);
3761 	add_internal_slot(config, MSX_SLOT_ROM, "arab", 3, 3, 1, 2, "maincpu", 0x10000);
3762 
3763 	msx_wd2793_force_ready(config);
3764 	msx_1_35_ssdd_drive(config);
3765 	msx1_floplist(config);
3766 
3767 	msx1_cartlist(config);
3768 }
3769 
3770 /* MSX - Spectravideo SVI-738 Danish */
3771 
3772 ROM_START (svi738dk)
3773 	ROM_REGION (0x10000, "maincpu", 0)
3774 	ROM_LOAD ("738dkbios.rom", 0x0000, 0x8000, CRC(88720320) SHA1(1bda5af20cb86565bdc1ebd1e59a691fed7f9256))
CRC(fb884df4)3775 	ROM_LOAD ("738dkdisk.rom", 0x8000, 0x4000, CRC(fb884df4) SHA1(6d3a530ae822ec91f6444c681c9b08b9efadc7e7))
3776 	ROM_LOAD ("738dk232c.rom", 0xc000, 0x2000, CRC(3353dcc6) SHA1(4e9384c9d137f0ab65ffc5a78f04cd8c9df6c8b7))
3777 	ROM_FILL (0xe000, 0x2000, 0xff)
3778 ROM_END
3779 
3780 void msx_state::svi738dk(machine_config &config)
3781 {
3782 	msx1(TMS9929A, config);
3783 	// AY8910
3784 	// FDC: wd2793, 1 3.5" SSDD drive
3785 	// 2 Cartridge slots
3786 	// builtin 80 columns card (V9938)
3787 	// RS-232C interface
3788 
3789 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
3790 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 1, 0, 0, 4);  /* 64KB RAM */
3791 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
3792 	add_internal_slot(config, MSX_SLOT_ROM, "rs232", 3, 0, 1, 1, "maincpu", 0xc000);
3793 	add_internal_slot_mirrored(config, MSX_SLOT_DISK2, "disk", 3, 1, 1, 2, "maincpu", 0x8000).set_tags("fdc", "fdc:0", "fdc:1");
3794 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 2, msx_cart, nullptr);
3795 
3796 	msx_wd2793_force_ready(config);
3797 	msx_1_35_ssdd_drive(config);
3798 	msx1_floplist(config);
3799 
3800 	msx1_cartlist(config);
3801 }
3802 
3803 /* MSX - Spectravideo SVI-738 Spanish */
3804 
3805 ROM_START (svi738sp)
3806 	ROM_REGION (0x10000, "maincpu", 0)
CRC(f0c0cbb9)3807 	ROM_LOAD ("738spbios.rom", 0x0000, 0x8000, CRC(f0c0cbb9) SHA1(5f04d5799ed72ea4993e7c4302a1dd55ac1ea8cd))
3808 	ROM_LOAD ("738spdisk.rom", 0x8000, 0x4000, CRC(fb884df4) SHA1(6d3a530ae822ec91f6444c681c9b08b9efadc7e7))
3809 	ROM_LOAD ("738sp232c.rom", 0xc000, 0x2000, CRC(3353dcc6) SHA1(4e9384c9d137f0ab65ffc5a78f04cd8c9df6c8b7))
3810 	ROM_FILL (0xe000, 0x2000, 0xff)
3811 ROM_END
3812 
3813 void msx_state::svi738sp(machine_config &config)
3814 {
3815 	msx1(TMS9929A, config);
3816 	// AY8910
3817 	// FDC: wd2793, 1 3.5" SSDD drive
3818 	// 2 Cartridge slots
3819 	// builtin 80 columns card (V9938)
3820 	// RS-232C interface
3821 
3822 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
3823 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 1, 0, 0, 4);  /* 64KB RAM */
3824 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
3825 	add_internal_slot(config, MSX_SLOT_ROM, "rs232", 3, 0, 1, 1, "maincpu", 0xc000);
3826 	add_internal_slot_mirrored(config, MSX_SLOT_DISK2, "disk", 3, 1, 1, 2, "maincpu", 0x8000).set_tags("fdc", "fdc:0", "fdc:1");
3827 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 2, msx_cart, nullptr);
3828 
3829 	msx_wd2793_force_ready(config);
3830 	msx_1_35_ssdd_drive(config);
3831 	msx1_floplist(config);
3832 
3833 	msx1_cartlist(config);
3834 }
3835 
3836 /* MSX - Spectravideo SVI-738 Swedish */
3837 
3838 ROM_START (svi738sw)
3839 	ROM_REGION (0x10000, "maincpu", 0)
CRC(c8ccdaa0)3840 	ROM_LOAD ("738sebios.rom", 0x0000, 0x8000, CRC(c8ccdaa0) SHA1(87f4d0fa58cfe9cef818a3185df2735e6da6168c))
3841 	ROM_LOAD ("738sedisk.rom", 0x8000, 0x4000, CRC(fb884df4) SHA1(6d3a530ae822ec91f6444c681c9b08b9efadc7e7))
3842 	ROM_LOAD ("738se232c.rom", 0xc000, 0x2000, CRC(3353dcc6) SHA1(4e9384c9d137f0ab65ffc5a78f04cd8c9df6c8b7))
3843 	ROM_FILL (0xe000, 0x2000, 0xff)
3844 ROM_END
3845 
3846 void msx_state::svi738sw(machine_config &config)
3847 {
3848 	msx1(TMS9929A, config);
3849 	// AY8910
3850 	// FDC: wd2793, 1 3.5" SSDD drive
3851 	// 2 Cartridge slots
3852 	// builtin 80 columns card (V9938)
3853 	// RS-232C interface
3854 
3855 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
3856 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 1, 0, 0, 4);  /* 64KB RAM */
3857 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
3858 	add_internal_slot(config, MSX_SLOT_ROM, "rs232", 3, 0, 1, 1, "maincpu", 0xc000);
3859 	add_internal_slot_mirrored(config, MSX_SLOT_DISK2, "disk", 3, 1, 1, 2, "maincpu", 0x8000).set_tags("fdc", "fdc:0", "fdc:1");
3860 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 2, msx_cart, nullptr);
3861 
3862 	msx_wd2793_force_ready(config);
3863 	msx_1_35_ssdd_drive(config);
3864 	msx1_floplist(config);
3865 
3866 	msx1_cartlist(config);
3867 }
3868 
3869 /* MSX - Spectravideo SVI-738 Poland*/
3870 
3871 ROM_START (svi738pl)
3872 	ROM_REGION (0x10000, "maincpu", 0)
3873 	ROM_LOAD ("738plbios.rom", 0x0000, 0x8000, CRC(431b8bf5) SHA1(c90077ed84133a947841e07856e71133ba779da6)) // IC51 on board
CRC(acd27a36)3874 	ROM_LOAD ("738disk.rom",   0x8000, 0x4000, CRC(acd27a36) SHA1(99a40266bc296cef1d432cb0caa8df1a7e570be4))
3875 	ROM_LOAD ("738232c.rom",   0xc000, 0x2000, CRC(3353dcc6) SHA1(4e9384c9d137f0ab65ffc5a78f04cd8c9df6c8b7))
3876 	ROM_FILL (0xe000, 0x2000, 0xff)
3877 ROM_END
3878 
3879 void msx_state::svi738pl(machine_config &config)
3880 {
3881 	msx1(TMS9929A, config);
3882 	// AY8910
3883 	// FDC: wd2793, 1 3.5" SSDD drive
3884 	// 2 Cartridge slots
3885 	// builtin 80 columns card (V9938)
3886 	// RS-232C interface
3887 
3888 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
3889 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 1, 0, 0, 4);  /* 64KB RAM */
3890 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
3891 	add_internal_slot(config, MSX_SLOT_ROM, "rs232", 3, 0, 1, 1, "maincpu", 0xc000);
3892 	add_internal_slot_mirrored(config, MSX_SLOT_DISK2, "disk", 3, 1, 1, 2, "maincpu", 0x8000).set_tags("fdc", "fdc:0", "fdc:1");
3893 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 2, msx_cart, nullptr);
3894 
3895 	msx_wd2793_force_ready(config);
3896 	msx_1_35_ssdd_drive(config);
3897 	msx1_floplist(config);
3898 
3899 	msx1_cartlist(config);
3900 }
3901 
3902 /* MSX - Talent DPC-200 */
3903 
3904 ROM_START (tadpc200)
3905 	ROM_REGION (0x8000, "maincpu", 0)
3906 	ROM_LOAD ("dpc200bios.rom", 0x0000, 0x8000, CRC(8205795e) SHA1(829c00c3114f25b3dae5157c0a238b52a3ac37db))
3907 ROM_END
3908 
tadpc200(machine_config & config)3909 void msx_state::tadpc200(machine_config &config)
3910 {
3911 	msx1(TMS9129, config);
3912 	// AY8910
3913 	// FDC: None, 0 drives
3914 	// 2 Cartridge slots
3915 
3916 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
3917 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 1, 0, 0, 4);  /* 64KB RAM */
3918 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
3919 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
3920 
3921 	msx1_cartlist(config);
3922 }
3923 
3924 /* MSX - Talent DPC-200A */
3925 
3926 ROM_START (tadpc20a)
3927 	ROM_REGION (0x8000, "maincpu", 0)
3928 	ROM_LOAD ("dpc200abios.rom", 0x0000, 0x8000, CRC(8205795e) SHA1(829c00c3114f25b3dae5157c0a238b52a3ac37db))
3929 ROM_END
3930 
tadpc20a(machine_config & config)3931 void msx_state::tadpc20a(machine_config &config)
3932 {
3933 	msx1(TMS9929A, config);
3934 	// AY8910/YM2149?
3935 	// FDC: None, 0 drives
3936 	// 2 Cartridge slots?
3937 
3938 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
3939 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 1, 0, 0, 4);  /* 64KB RAM */
3940 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
3941 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
3942 
3943 	msx1_cartlist(config);
3944 }
3945 
3946 /* MSX - Toshiba HX-10 */
3947 /* The BIOS on the Toshiba HX-10 is inside a big 64pin Toshiba chip label TCX-1007 */
3948 
3949 ROM_START (hx10)
3950 	ROM_REGION (0x8000, "maincpu",0)
3951 	ROM_LOAD ("tcx-1007.ic15", 0x0000, 0x8000, CRC(5486b711) SHA1(4dad9de7c28b452351cc12910849b51bd9a37ab3))
3952 ROM_END
3953 
hx10(machine_config & config)3954 void msx_state::hx10(machine_config &config)
3955 {
3956 	msx1(TMS9929A, config);
3957 	// AY8910
3958 	// FDC: None, 0 drives
3959 	// 1 Cartridge slot, 1 Toshiba Expension slot
3960 
3961 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
3962 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot", 1, 0, msx_cart, nullptr);
3963 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4);  /* 64KB RAM */
3964 	//MSX_LAYOUT_SLOT (3, 0, 0, 4, CARTRIDGE2, 0x0000, 0x0000)    // Expansion slot
3965 
3966 	msx1_cartlist(config);
3967 }
3968 
3969 /* MSX - Toshiba HX-10D */
3970 
3971 ROM_START (hx10d)
3972 	ROM_REGION (0x8000, "maincpu",0)
CRC(ee229390)3973 	ROM_LOAD ("hx10dbios.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
3974 ROM_END
3975 
3976 void msx_state::hx10d(machine_config &config)
3977 {
3978 	msx1(TMS9928A, config);
3979 	// AY8910/YM2149?
3980 	// FDC: None, 0 drives
3981 	// 2 Cartridge slots?
3982 
3983 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
3984 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
3985 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4);   /* 64KB RAM */
3986 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
3987 
3988 	msx1_cartlist(config);
3989 }
3990 
3991 /* MSX - Toshiba HX-10DP */
3992 
3993 ROM_START (hx10dp)
3994 	ROM_REGION (0x8000, "maincpu",0)
CRC(ee229390)3995 	ROM_LOAD ("hx10dpbios.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
3996 ROM_END
3997 
3998 void msx_state::hx10dp(machine_config &config)
3999 {
4000 	msx1(TMS9928A, config);
4001 	// AY8910/YM2149?
4002 	// FDC: None, 0 drives
4003 	// 2 Cartridge slots?
4004 
4005 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
4006 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
4007 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4);   /* 64KB RAM */
4008 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
4009 
4010 	msx1_cartlist(config);
4011 }
4012 
4013 /* MSX - Toshiba HX-10E */
4014 
4015 ROM_START (hx10e)
4016 	ROM_REGION (0x8000, "maincpu",0)
4017 	ROM_LOAD ("hx10ebios.rom", 0x0000, 0x8000, CRC(5486b711) SHA1(4dad9de7c28b452351cc12910849b51bd9a37ab3))
4018 ROM_END
4019 
hx10e(machine_config & config)4020 void msx_state::hx10e(machine_config &config)
4021 {
4022 	msx1(TMS9929A, config);
4023 	// AY8910/YM2149?
4024 	// FDC: None, 0 drives
4025 	// 2 Cartridge slots?
4026 
4027 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
4028 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
4029 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4);   /* 64KB RAM */
4030 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
4031 
4032 	msx1_cartlist(config);
4033 }
4034 
4035 /* MSX - Toshiba HX-10F */
4036 
4037 ROM_START (hx10f)
4038 	ROM_REGION (0x8000, "maincpu",0)
CRC(e0e894b7)4039 	ROM_LOAD ("hx10fbios.rom", 0x0000, 0x8000, CRC(e0e894b7) SHA1(d99eebded5db5fce1e072d08e642c0909bc7efdd))
4040 ROM_END
4041 
4042 void msx_state::hx10f(machine_config &config)
4043 {
4044 	msx1(TMS9929A, config);
4045 	// AY8910/YM2149?
4046 	// FDC: None, 0 drives
4047 	// 2 Cartridge slots?
4048 
4049 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
4050 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
4051 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4);   /* 64KB RAM */
4052 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
4053 
4054 	msx1_cartlist(config);
4055 }
4056 
4057 /* MSX - Toshiba HX-10S */
4058 
4059 ROM_START (hx10s)
4060 	ROM_REGION (0x8000, "maincpu",0)
4061 	ROM_LOAD ("hx10sbios.rom", 0x0000, 0x8000, CRC(5486b711) SHA1(4dad9de7c28b452351cc12910849b51bd9a37ab3))
4062 ROM_END
4063 
hx10s(machine_config & config)4064 void msx_state::hx10s(machine_config &config)
4065 {
4066 	msx1(TMS9929A, config);
4067 	// AY8910/YM2149?
4068 	// FDC: None, 0 drives
4069 	// 2 Cartridge slots?
4070 
4071 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
4072 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
4073 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 3, 1);   /* 16KB RAM */
4074 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
4075 
4076 	msx1_cartlist(config);
4077 }
4078 
4079 /* MSX - Toshiba HX-10SA */
4080 
4081 ROM_START (hx10sa)
4082 	ROM_REGION (0x8000, "maincpu",0)
CRC(ee229390)4083 	ROM_LOAD ("hx10sabios.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
4084 ROM_END
4085 
4086 void msx_state::hx10sa(machine_config &config)
4087 {
4088 	msx1(TMS9928A, config);
4089 	// AY8910/YM2149?
4090 	// FDC: None, 0 drives
4091 	// 2 Cartridge slots?
4092 
4093 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
4094 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
4095 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4);   /* 64KB RAM */
4096 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
4097 
4098 	msx1_cartlist(config);
4099 }
4100 
4101 /* MSX - Toshiba HX-20 */
4102 
4103 ROM_START (hx20)
4104 	ROM_REGION (0x10000, "maincpu",0)
4105 	ROM_LOAD ("hx20bios.rom", 0x0000, 0x8000, CRC(8205795e) SHA1(829c00c3114f25b3dae5157c0a238b52a3ac37db))
4106 	ROM_LOAD ("hx20word.rom", 0x8000, 0x8000, CRC(39b3e1c0) SHA1(9f7cfa932bd7dfd0d9ecaadc51655fb557c2e125))
4107 ROM_END
4108 
hx20(machine_config & config)4109 void msx_state::hx20(machine_config &config)
4110 {
4111 	msx1(TMS9129, config);
4112 	// AY8910/YM2149?
4113 	// FDC: None, 0 drives
4114 	// 2 Cartridge slots
4115 	// T6950
4116 
4117 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
4118 	add_internal_slot(config, MSX_SLOT_RAM, "ram1", 0, 0, 2, 2);   /* 32KB RAM */
4119 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
4120 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
4121 	add_internal_slot(config, MSX_SLOT_RAM, "ram2", 3, 0, 2, 2);   /* 32KB RAM */
4122 	add_internal_slot(config, MSX_SLOT_ROM, "word", 3, 3, 1, 2, "maincpu", 0x8000);
4123 
4124 	msx1_cartlist(config);
4125 }
4126 
4127 /* MSX - Toshiba HX-20I */
4128 
4129 ROM_START (hx20i)
4130 	ROM_REGION (0x10000, "maincpu",0)
4131 	ROM_LOAD ("hx20ibios.rom", 0x0000, 0x8000, CRC(8205795e) SHA1(829c00c3114f25b3dae5157c0a238b52a3ac37db))
4132 	ROM_LOAD ("hx20iword.rom", 0x8000, 0x8000, CRC(39b3e1c0) SHA1(9f7cfa932bd7dfd0d9ecaadc51655fb557c2e125))
4133 ROM_END
4134 
hx20i(machine_config & config)4135 void msx_state::hx20i(machine_config &config)
4136 {
4137 	msx1(TMS9129, config);
4138 	// AY8910/YM2149?
4139 	// FDC: None, 0 drives
4140 	// 2 Cartridge slots
4141 	// T6950 VDP instead of TMS9928A
4142 
4143 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
4144 	add_internal_slot(config, MSX_SLOT_RAM, "ram1", 0, 0, 2, 2);   /* 32KB RAM */
4145 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
4146 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
4147 	add_internal_slot(config, MSX_SLOT_RAM, "ram2", 3, 0, 2, 2);   /* 32KB RAM */
4148 	add_internal_slot(config, MSX_SLOT_ROM, "word", 3, 3, 1, 2, "maincpu", 0x8000);
4149 
4150 	msx1_cartlist(config);
4151 }
4152 
4153 /* MSX - Toshiba HX-21 */
4154 
4155 ROM_START (hx21)
4156 	ROM_REGION (0x10000, "maincpu", 0)
4157 	ROM_LOAD ("hx21bios.rom", 0x0000, 0x8000, CRC(83ba6fde) SHA1(01600d06d83072d4e757b29728555efde2c79705))
4158 	ROM_LOAD ("hx21word.rom", 0x8000, 0x8000, CRC(87508e78) SHA1(4e2ec9c0294a18a3ab463f182f9333d2af68cdca))
4159 
4160 	ROM_REGION (0x20000, "kanji", 0)
CRC(d23d4d2d)4161 	ROM_LOAD ("hx21kfn.rom", 0x0000, 0x20000, CRC(d23d4d2d) SHA1(db03211b7db46899df41db2b1dfbec972109a967))
4162 ROM_END
4163 
4164 void msx_state::hx21(machine_config &config)
4165 {
4166 	msx1(TMS9928A, config);
4167 	// AY8910/YM2149?
4168 	// FDC: None, 0 drives
4169 	// 2 Cartridge slots
4170 
4171 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
4172 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
4173 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
4174 	add_internal_slot(config, MSX_SLOT_RAM, "ram2", 3, 0, 0, 4);   /* 64KB RAM */
4175 	add_internal_slot(config, MSX_SLOT_ROM, "word", 3, 3, 1, 2, "maincpu", 0x8000);
4176 
4177 	msx1_cartlist(config);
4178 }
4179 
4180 /* MSX - Toshiba HX-21I */
4181 
4182 ROM_START (hx21i)
4183 	ROM_REGION (0x10000, "maincpu", 0)
4184 	ROM_LOAD ("hx21ibios.rom", 0x0000, 0x8000, CRC(8205795e) SHA1(829c00c3114f25b3dae5157c0a238b52a3ac37db))
CRC(f9e29c66)4185 	ROM_LOAD ("hx21iword.rom", 0x8000, 0x8000, CRC(f9e29c66) SHA1(3289336b2c12161fd926a7e5ce865770ae7038af))
4186 ROM_END
4187 
4188 void msx_state::hx21i(machine_config &config)
4189 {
4190 	msx1(TMS9929A, config);
4191 	// AY8910/YM2149?
4192 	// FDC: None, 0 drives
4193 	// 2 Cartridge slots
4194 
4195 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
4196 	add_internal_slot(config, MSX_SLOT_RAM, "ram1", 0, 0, 2, 2);   /* 32KB RAM */
4197 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
4198 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
4199 	add_internal_slot(config, MSX_SLOT_RAM, "ram2", 3, 0, 2, 2);   /* 32KB RAM */
4200 	add_internal_slot(config, MSX_SLOT_ROM, "word", 3, 3, 1, 2, "maincpu", 0x8000);
4201 
4202 	msx1_cartlist(config);
4203 }
4204 
4205 /* MSX - Toshiba HX-22 */
4206 
4207 ROM_START (hx22)
4208 	ROM_REGION (0x10000, "maincpu", 0)
CRC(ee229390)4209 	ROM_LOAD ("hx22bios.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
4210 	ROM_LOAD ("hx22word.rom", 0x8000, 0x8000, CRC(87508e78) SHA1(4e2ec9c0294a18a3ab463f182f9333d2af68cdca))
4211 
4212 	ROM_REGION (0x20000, "kanji", 0)
4213 	ROM_LOAD ("hx22kfn.rom", 0x0000, 0x20000, CRC(d23d4d2d) SHA1(db03211b7db46899df41db2b1dfbec972109a967))
4214 ROM_END
4215 
4216 void msx_state::hx22(machine_config &config)
4217 {
4218 	msx1(TMS9928A, config);
4219 	// AY8910/YM2149?
4220 	// FDC: None, 0 drives
4221 	// 2 Cartridge slots
4222 	// RS232C builtin?
4223 
4224 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
4225 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
4226 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
4227 	add_internal_slot(config, MSX_SLOT_RAM, "ram2", 3, 0, 0, 4);   /* 64KB RAM */
4228 	add_internal_slot(config, MSX_SLOT_ROM, "word", 3, 3, 1, 2, "maincpu", 0x8000);
4229 
4230 	msx1_cartlist(config);
4231 }
4232 
4233 /* MSX - Toshiba HX-22I */
4234 
4235 ROM_START (hx22i)
4236 	ROM_REGION (0x10000, "maincpu", 0)
4237 	ROM_LOAD ("hx22ibios.rom", 0x0000, 0x8000, CRC(8205795e) SHA1(829c00c3114f25b3dae5157c0a238b52a3ac37db))
CRC(f9e29c66)4238 	ROM_LOAD ("hx22iword.rom", 0x8000, 0x8000, CRC(f9e29c66) SHA1(3289336b2c12161fd926a7e5ce865770ae7038af))
4239 ROM_END
4240 
4241 void msx_state::hx22i(machine_config &config)
4242 {
4243 	msx1(TMS9929A, config);
4244 	// AY8910/YM2149?
4245 	// FDC: None, 0 drives
4246 	// 2 Cartridge slots
4247 	// RS232C builtin?
4248 	// Z80: LH0080A
4249 
4250 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
4251 	add_internal_slot(config, MSX_SLOT_RAM, "ram1", 0, 0, 2, 2);   /* 32KB RAM */
4252 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
4253 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
4254 	add_internal_slot(config, MSX_SLOT_RAM, "ram2", 3, 0, 2, 2);   /* 32KB RAM */
4255 	add_internal_slot(config, MSX_SLOT_ROM, "word", 3, 3, 1, 2, "maincpu", 0x8000);
4256 
4257 	msx1_cartlist(config);
4258 }
4259 
4260 /* MSX - Victor HC-5 */
4261 
4262 ROM_START (hc5)
4263 	ROM_REGION (0x8000, "maincpu", 0)
CRC(ee229390)4264 	ROM_LOAD ("hc5bios.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
4265 ROM_END
4266 
4267 void msx_state::hc5(machine_config &config)
4268 {
4269 	msx1(TMS9928A, config);
4270 	// AY8910/YM2149?
4271 	// FDC: None, 0 drives,
4272 	// 2 Cartridge slots?
4273 
4274 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
4275 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
4276 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 3, 1); // 16KB or 32KB RAM ?
4277 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
4278 
4279 	msx1_cartlist(config);
4280 }
4281 
4282 /* MSX - Victor HC-6 */
4283 
4284 ROM_START (hc6)
4285 	ROM_REGION (0x8000, "maincpu", 0)
CRC(ee229390)4286 	ROM_LOAD ("hc6bios.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
4287 ROM_END
4288 
4289 void msx_state::hc6(machine_config &config)
4290 {
4291 	msx1(TMS9928A, config);
4292 	// AY8910/YM2149?
4293 	// FDC: None, 0 drives,
4294 	// 2 Cartridge slots?
4295 
4296 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
4297 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
4298 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 2, 2); // 32KB RAM
4299 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
4300 
4301 	msx1_cartlist(config);
4302 }
4303 
4304 /* MSX - Victor HC-7 */
4305 
4306 ROM_START (hc7)
4307 	ROM_REGION (0x8000, "maincpu", 0)
CRC(ee229390)4308 	ROM_LOAD ("hc7bios.rom", 0x0000, 0x8000, CRC(ee229390) SHA1(302afb5d8be26c758309ca3df611ae69cced2821))
4309 ROM_END
4310 
4311 void msx_state::hc7(machine_config &config)
4312 {
4313 	msx1(TMS9928A, config);
4314 	// AY8910/YM2149?
4315 	// FDC: None, 0 drives,
4316 	// 2 Cartridge slots?
4317 
4318 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
4319 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
4320 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4); // 64KB RAM
4321 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
4322 
4323 	msx1_cartlist(config);
4324 }
4325 
4326 /* MSX - Yamaha CX5F (with SFG01) */
4327 
4328 ROM_START (cx5f1)
4329 	ROM_REGION (0x8000, "maincpu", 0)
CRC(dc662057)4330 	ROM_LOAD ("cx5fbios.rom", 0x0000, 0x8000, CRC(dc662057) SHA1(36d77d357a5fd15af2ab266ee66e5091ba4770a3))
4331 ROM_END
4332 
4333 void msx_state::cx5f1(machine_config &config)
4334 {
4335 	msx1(TMS9928A, config);
4336 	// AY8910/YM2149?
4337 	// FDC: None, 0 drives
4338 	// 1 Cartridge slot?
4339 	// 1 Yamaha expansion slot?
4340 	// S-5327 MSX Engine
4341 
4342 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
4343 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 0, 0, 2, 2); // 32KB RAM
4344 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot", 1, 0, msx_cart, nullptr);
4345 	add_cartridge_slot<2>(config, MSX_SLOT_YAMAHA_EXPANSION, "expansion", 2, 0, msx_yamaha_60pin, "sfg01");
4346 
4347 	msx1_cartlist(config);
4348 }
4349 
4350 /* MSX - Yamaha CX5F (with SFG05) */
4351 
4352 ROM_START (cx5f)
4353 	ROM_REGION (0x8000, "maincpu", 0)
CRC(dc662057)4354 	ROM_LOAD ("cx5fbios.rom", 0x0000, 0x8000, CRC(dc662057) SHA1(36d77d357a5fd15af2ab266ee66e5091ba4770a3))
4355 ROM_END
4356 
4357 void msx_state::cx5f(machine_config &config)
4358 {
4359 	msx1(TMS9928A, config);
4360 	// AY8910/YM2149?
4361 	// FDC: None, 0 drives
4362 	// 1 Cartridge slot?
4363 	// 1 Yamaha expansion slot?
4364 	// S-5327 MSX Engine
4365 
4366 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
4367 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
4368 	add_cartridge_slot<2>(config, MSX_SLOT_YAMAHA_EXPANSION, "expansion", 3, 0, msx_yamaha_60pin, "sfg05");
4369 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 2, 2); // 32KB RAM
4370 
4371 	msx1_cartlist(config);
4372 }
4373 
4374 /* MSX - Yamaha CX5M / Yamaha CX5M-2 */
4375 
4376 ROM_START (cx5m)
4377 	ROM_REGION (0x8000, "maincpu",0)
CRC(e2242b53)4378 	ROM_LOAD ("cx5mbios.rom", 0x0000, 0x8000, CRC(e2242b53) SHA1(706dd67036baeec7127e4ccd8c8db8f6ce7d0e4c))
4379 ROM_END
4380 
4381 void msx_state::cx5m(machine_config &config)
4382 {
4383 	msx1(TMS9929A, config);
4384 	// YM2149
4385 	// FDC: None, 0 drives
4386 	// 2 Cartridge slots
4387 	// 1 Expansion slot (60 pins interface instead of regular 50 pin cartridge interface)
4388 
4389 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
4390 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 0, 0, 2, 2);   /* 32KB RAM */
4391 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
4392 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
4393 	add_cartridge_slot<3>(config, MSX_SLOT_YAMAHA_EXPANSION, "expansion", 3, 0, msx_yamaha_60pin, "sfg01");
4394 
4395 	msx1_cartlist(config);
4396 }
4397 
4398 /* MSX - Yamaha CX5M-128 */
4399 
4400 ROM_START (cx5m128)
4401 	ROM_REGION (0x18000, "maincpu",0)
4402 	ROM_LOAD ("cx5m128bios.rom", 0x0000, 0x8000, CRC(507b2caa) SHA1(0dde59e8d98fa524961cd37b0e100dbfb42cf576))
CRC(feada82e)4403 	ROM_LOAD ("cx5m128ext.rom",  0x8000, 0x4000, CRC(feada82e) SHA1(48b0c2ff1f1e407cc44394219f7b3878efaa919f))
4404 	ROM_LOAD ("yrm502.rom",     0x14000, 0x4000, CRC(5330fe21) SHA1(7b1798561ee1844a7d6432924fbee9b4fc591c19))
4405 ROM_END
4406 
4407 void msx_state::cx5m128(machine_config &config)
4408 {
4409 	msx1(TMS9929A, config);
4410 	// AY8910/YM2149?
4411 	// FDC: None, 0 drives
4412 	// 2 Cartridge slots?
4413 
4414 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
4415 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
4416 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
4417 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 1, 1, "maincpu", 0x8000);
4418 	add_internal_slot(config, MSX_SLOT_ROM, "yrm", 3, 1, 1, 1, "maincpu", 0x14000); /* YRM-502 */
4419 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000);   /* 128KB Mapper RAM */
4420 	add_cartridge_slot<3>(config, MSX_SLOT_YAMAHA_EXPANSION, "expansion", 3, 3, msx_yamaha_60pin, "sfg05");
4421 
4422 	msx1_cartlist(config);
4423 }
4424 
4425 /* MSX - Yamaha CX5MII */
4426 
4427 ROM_START (cx5m2)
4428 	ROM_REGION (0x14000, "maincpu",0)
4429 	ROM_LOAD ("cx5m2bios.rom", 0x0000, 0x8000, CRC(507b2caa) SHA1(0dde59e8d98fa524961cd37b0e100dbfb42cf576))
CRC(feada82e)4430 	ROM_LOAD ("cx5m2ext.rom",  0x8000, 0x4000, CRC(feada82e) SHA1(48b0c2ff1f1e407cc44394219f7b3878efaa919f))
4431 ROM_END
4432 
4433 void msx_state::cx5m2(machine_config &config)
4434 {
4435 	msx1(TMS9929A, config);
4436 	// AY8910/YM2149?
4437 	// FDC: None, 0 drives
4438 	// 2 Cartridge slots?
4439 
4440 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
4441 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
4442 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
4443 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 1, 1, "maincpu", 0x8000);
4444 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x10000);   /* 64KB Mapper RAM */
4445 	add_cartridge_slot<3>(config, MSX_SLOT_YAMAHA_EXPANSION, "expansion", 3, 3, msx_yamaha_60pin, "sfg05");
4446 
4447 	msx1_cartlist(config);
4448 }
4449 
4450 /* MSX - Yamaha YIS303 */
4451 
4452 ROM_START (yis303)
4453 	ROM_REGION (0x14000, "maincpu",0)
CRC(e2242b53)4454 	ROM_LOAD ("yis303bios.rom", 0x0000, 0x8000, CRC(e2242b53) SHA1(706dd67036baeec7127e4ccd8c8db8f6ce7d0e4c))
4455 	ROM_FILL( 0x8000, 0xc000, 0xff )
4456 ROM_END
4457 
4458 void msx_state::yis303(machine_config &config)
4459 {
4460 	msx1(TMS9929A, config);
4461 	// AY8910/YM2149?
4462 	// FDC: None, 0 drives
4463 	// 2 Cartridge slots?
4464 
4465 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
4466 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
4467 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
4468 	add_internal_slot(config, MSX_SLOT_ROM, "fillff", 3, 0, 0, 3, "maincpu", 0x0000);   /* Fill FF */
4469 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 3, 1);   /* 16KB RAM */
4470 
4471 	msx1_cartlist(config);
4472 }
4473 
4474 /* MSX - Yamaha YIS503 */
4475 
4476 ROM_START (yis503)
4477 	ROM_REGION (0x14000, "maincpu",0)
CRC(e2242b53)4478 	ROM_LOAD ("yis503bios.rom", 0x0000, 0x8000, CRC(e2242b53) SHA1(706dd67036baeec7127e4ccd8c8db8f6ce7d0e4c))
4479 	ROM_FILL( 0x8000, 0xc000, 0xff )
4480 ROM_END
4481 
4482 void msx_state::yis503(machine_config &config)
4483 {
4484 	msx1(TMS9929A, config);
4485 	// AY8910/YM2149?
4486 	// FDC: None, 0 drives
4487 	// 2 Cartridge slots?
4488 
4489 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
4490 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
4491 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
4492 	add_internal_slot(config, MSX_SLOT_ROM, "fillff", 3, 0, 0, 3, "maincpu", 0x0000);   /* Fill FF */
4493 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 2, 2);   /* 32KB RAM */
4494 
4495 	msx1_cartlist(config);
4496 }
4497 
4498 /* MSX - Yamaha YIS503F */
4499 
4500 ROM_START (yis503f)
4501 	ROM_REGION (0x8000, "maincpu", 0)
CRC(e9ccd789)4502 	ROM_LOAD ("yis503f.rom", 0x0000, 0x8000, CRC(e9ccd789) SHA1(8963fc041975f31dc2ab1019cfdd4967999de53e))
4503 ROM_END
4504 
4505 void msx_state::yis503f(machine_config &config)
4506 {
4507 	msx1(TMS9929A, config);
4508 	// YM2149
4509 	// FDC: None, 0 drives
4510 	// 2 Cartridge slots
4511 
4512 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
4513 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
4514 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
4515 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4);  /* 64KB?? RAM */
4516 
4517 	msx1_cartlist(config);
4518 }
4519 
4520 /* MSX - Yamaha YIS503II */
4521 
4522 ROM_START (yis503ii)
4523 	ROM_REGION (0x8000, "maincpu",0)
CRC(e2242b53)4524 	ROM_LOAD ("yis503iibios.rom", 0x0000, 0x8000, CRC(e2242b53) SHA1(706dd67036baeec7127e4ccd8c8db8f6ce7d0e4c))
4525 ROM_END
4526 
4527 void msx_state::yis503ii(machine_config &config)
4528 {
4529 	msx1(TMS9929A, config);
4530 	// AY8910/YM2149?
4531 	// FDC: None, 0 drives
4532 	// 2 Cartridge slots?
4533 
4534 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
4535 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
4536 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
4537 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4);  /* 64KB RAM */
4538 
4539 	msx1_cartlist(config);
4540 }
4541 
4542 /* MSX - Yamaha YIS503IIR Russian */
4543 
4544 ROM_START (y503iir)
4545 	ROM_REGION (0x10000, "maincpu",0)
4546 	ROM_LOAD ("yis503iirbios.rom", 0x0000, 0x8000, CRC(225a4f9e) SHA1(5173ac403e26c462f904f85c9ef5e7b1e19253e7))
4547 	ROM_LOAD ("yis503iirdisk.rom", 0x8000, 0x4000, CRC(9eb7e24d) SHA1(3a481c7b7e4f0406a55952bc5b9f8cf9d699376c))
4548 	ROM_LOAD ("yis503iirnet.rom",  0xc000, 0x2000, CRC(0731db3f) SHA1(264fbb2de69fdb03f87dc5413428f6aa19511a7f))
4549 ROM_END
4550 
y503iir(machine_config & config)4551 void msx_state::y503iir(machine_config &config)
4552 {
4553 	msx1(TMS9929A, config);
4554 	// YM2149 (in S-3527 MSX Engine)
4555 	// FDC: wd2793/mb8877?, 1 3.5" DSDD drive
4556 	// 2 Cartridge slots
4557 	// S-3527 MSX Engine
4558 	// RTC
4559 	// V9938 VDP
4560 
4561 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
4562 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
4563 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
4564 	add_internal_slot_mirrored(config, MSX_SLOT_DISK2, "disk", 3, 1, 1, 2, "maincpu", 0x8000).set_tags("fdc", "fdc:0", "fdc:1"); /* National disk */
4565 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 2, 0, 4);  /* 64KB RAM */
4566 	add_internal_slot(config, MSX_SLOT_ROM, "net", 3, 3, 1, 1, "maincpu", 0xc000);   /* Net */
4567 
4568 	msx_wd2793_force_ready(config);
4569 	msx_1_35_dd_drive(config);
4570 	msx1_floplist(config);
4571 
4572 	msx1_cartlist(config);
4573 }
4574 
4575 /* MSX - Yamaha YIS503IIR Estonian */
4576 
4577 ROM_START (y503iir2)
4578 	ROM_REGION (0x10000, "maincpu",0)
4579 	ROM_LOAD ("yis503ii2bios.rom", 0x0000, 0x8000, CRC(1548cee3) SHA1(42c7fff25b1bd90776ac0aea971241aedce8947d))
4580 	ROM_LOAD ("yis503iirdisk.rom", 0x8000, 0x4000, CRC(9eb7e24d) SHA1(3a481c7b7e4f0406a55952bc5b9f8cf9d699376c))
4581 	ROM_LOAD ("yis503iirnet.rom",  0xc000, 0x2000, CRC(0731db3f) SHA1(264fbb2de69fdb03f87dc5413428f6aa19511a7f))
4582 ROM_END
4583 
y503iir2(machine_config & config)4584 void msx_state::y503iir2(machine_config &config)
4585 {
4586 	msx1(TMS9929A, config);
4587 	// AY8910/YM2149?
4588 	// FDC: wd2793/mb8877?, 1 3.5" DSDD drive?
4589 	// 2 Cartridge slots?
4590 
4591 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
4592 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
4593 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
4594 	add_internal_slot_mirrored(config, MSX_SLOT_DISK2, "disk", 3, 1, 1, 2, "maincpu", 0x8000).set_tags("fdc", "fdc:0", "fdc:1"); /* National disk */
4595 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 2, 0, 4);  /* 64KB RAM */
4596 	add_internal_slot(config, MSX_SLOT_ROM, "net", 3, 3, 1, 1, "maincpu", 0xc000);   /* Net */
4597 
4598 	msx_wd2793_force_ready(config);
4599 	msx_1_35_dd_drive(config);
4600 	msx1_floplist(config);
4601 
4602 	msx1_cartlist(config);
4603 }
4604 
4605 /* MSX - Yamaha YIS503M */
4606 
4607 ROM_START (yis503m)
4608 	ROM_REGION (0x8000, "maincpu",0)
CRC(e2242b53)4609 	ROM_LOAD ("yis503mbios.rom", 0x0000, 0x8000, CRC(e2242b53) SHA1(706dd67036baeec7127e4ccd8c8db8f6ce7d0e4c))
4610 ROM_END
4611 
4612 void msx_state::yis503m(machine_config &config)
4613 {
4614 	msx1(TMS9929A, config);
4615 	// AY8910/YM2149?
4616 	// FDC: None, 0 drives
4617 	// 2 Cartridge slots?
4618 
4619 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
4620 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
4621 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
4622 	add_cartridge_slot<3>(config, MSX_SLOT_YAMAHA_EXPANSION, "expansion", 3, 0, msx_yamaha_60pin, "sfg05");
4623 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 2, 2);   /* 32KB RAM */
4624 
4625 	msx1_cartlist(config);
4626 }
4627 
4628 /* MSX - Yashica YC-64 */
4629 
4630 ROM_START (yc64)
4631 	ROM_REGION (0x8000, "maincpu",0)
CRC(e9ccd789)4632 	ROM_LOAD ("yc64bios.rom", 0x0000, 0x8000, CRC(e9ccd789) SHA1(8963fc041975f31dc2ab1019cfdd4967999de53e))
4633 ROM_END
4634 
4635 void msx_state::yc64(machine_config &config)
4636 {
4637 	msx1(TMS9929A, config);
4638 	// YM2149
4639 	// FDC: None, 0 drives
4640 	// 1 Cartridge slot (slot 1)
4641 
4642 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
4643 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot", 1, 0, msx_cart, nullptr);
4644 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4);  /* 64KB RAM */
4645 
4646 	msx1_cartlist(config);
4647 }
4648 
4649 /* MSX - Yeno MX64 */
4650 
4651 ROM_START (mx64)
4652 	ROM_REGION (0x8000, "maincpu",0)
CRC(e0e894b7)4653 	ROM_LOAD ("mx64bios.rom", 0x0000, 0x8000, CRC(e0e894b7) SHA1(d99eebded5db5fce1e072d08e642c0909bc7efdd))
4654 ROM_END
4655 
4656 void msx_state::mx64(machine_config &config)
4657 {
4658 	msx1(TMS9928A, config);
4659 	// AY8910/YM2149?
4660 	// FDC: None, 0 drives
4661 	// 2 Cartridge slots?
4662 
4663 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
4664 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
4665 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 2, 0, 0, 4);  /* 64KB RAM */
4666 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
4667 
4668 	msx1_cartlist(config);
4669 }
4670 
4671 
4672 /********************************  MSX 2 **********************************/
4673 
4674 /* MSX2 - Al Alamiah AX-350 */
4675 
4676 ROM_START (ax350)
4677 	ROM_REGION (0x30000, "maincpu", 0)
CRC(ea306155)4678 	ROM_LOAD ("ax350bios.rom", 0x00000,  0x8000, CRC(ea306155) SHA1(35195ab67c289a0b470883464df66bc6ea5b00d3))
4679 	ROM_LOAD ("ax350ext.rom",  0x08000,  0x4000, CRC(7c7540b7) SHA1(ebb76f9061e875365023523607db610f2eda1d26))
4680 	ROM_LOAD ("ax350arab.rom", 0x0c000,  0x8000, CRC(c0d8fc85) SHA1(2c9600c6e0025fee10d249e97448ecaa37e38c42))
4681 	ROM_LOAD ("ax350swp.rom",  0x14000,  0x8000, CRC(076f40fc) SHA1(4b4508131dca6d811694ae6379f41364c477de58))
4682 	ROM_LOAD ("ax350paint.rom",0x1c000, 0x10000, CRC(18956e3a) SHA1(ace202e87337fbc54fea21e22c0b3af0abe6f4ae))
4683 	ROM_LOAD ("ax350disk.rom", 0x2c000,  0x4000, CRC(1e7d6512) SHA1(78cd7f847e77fd8cd51a647efb2725ba93f4c471))
4684 ROM_END
4685 
4686 void msx2_state::ax350(machine_config &config)
4687 {
4688 	msx2_pal(config);
4689 	// AY8910/YM2149?
4690 	// FDC: wd2793/tc8566af?, 1 3.5" DSDD drive
4691 	// 2 Cartridge slots?
4692 
4693 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);  /* Bios */
4694 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 1, 0, 1, "maincpu", 0x8000);  /* Ext */
4695 	add_internal_slot(config, MSX_SLOT_ROM, "arab", 0, 1, 1, 2, "maincpu", 0xc000);  /* Arab */
4696 	add_internal_slot(config, MSX_SLOT_ROM, "swp", 0, 2, 1, 2, "maincpu", 0x14000); /* SWP */
4697 	add_internal_slot(config, MSX_SLOT_ROM, "paint", 0, 3, 0, 4, "maincpu", 0x1c000);  /* Paint */
4698 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
4699 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
4700 	add_internal_slot_mirrored(config, MSX_SLOT_DISK2, "disk", 3, 1, 1, 2, "maincpu", 0x2c000).set_tags("fdc", "fdc:0", "fdc:1"); /* Disk */
4701 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0xf8);   /* 128KB Mapper RAM */
4702 
4703 	msx_wd2793_force_ready(config);
4704 	msx_1_35_dd_drive(config);
4705 	msx2_floplist(config);
4706 
4707 	msx2_cartlist(config);
4708 }
4709 
4710 /* MSX2 - Al Alamiah AX-370 */
4711 
4712 ROM_START (ax370)
4713 	ROM_REGION (0x30000, "maincpu", 0)
CRC(ea306155)4714 	ROM_LOAD ("ax370bios.rom",  0x0000,  0x8000, CRC(ea306155) SHA1(35195ab67c289a0b470883464df66bc6ea5b00d3))
4715 	ROM_LOAD ("ax370ext.rom",   0x8000,  0x4000, CRC(7c7540b7) SHA1(ebb76f9061e875365023523607db610f2eda1d26))
4716 	ROM_LOAD ("ax370arab.rom",  0xc000,  0x8000, CRC(c0d8fc85) SHA1(2c9600c6e0025fee10d249e97448ecaa37e38c42))
4717 	ROM_LOAD ("ax370swp.rom",  0x14000,  0x8000, CRC(076f40fc) SHA1(4b4508131dca6d811694ae6379f41364c477de58))
4718 	ROM_LOAD ("ax370paint.rom",0x1c000, 0x10000, CRC(18956e3a) SHA1(ace202e87337fbc54fea21e22c0b3af0abe6f4ae))
4719 	ROM_LOAD ("ax370disk.rom", 0x2c000,  0x4000, CRC(60f8baba) SHA1(95de8809d2758fc0a743390ea5085b602e59e101))
4720 ROM_END
4721 
4722 void msx2_state::ax370(machine_config &config)
4723 {
4724 	msx2_pal(config);
4725 	// AY8910/YM2149?
4726 	// FDC: tc8566af, 1 3.5" DSDD drive
4727 	// 2 Cartridge slots?
4728 
4729 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);  /* Bios */
4730 	add_internal_slot(config, MSX_SLOT_ROM, "swp", 0, 2, 1, 2, "maincpu", 0x14000); /* SWP */
4731 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
4732 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
4733 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x20000).set_ramio_bits(0xf8);   /* 128KB Mapper RAM */
4734 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);  /* Ext */
4735 	add_internal_slot(config, MSX_SLOT_ROM, "arab", 3, 1, 1, 2, "maincpu", 0xc000);  /* Arab */
4736 	add_internal_slot(config, MSX_SLOT_DISK3, "disk", 3, 2, 1, 1, "maincpu", 0x2c000).set_tags("fdc", "fdc:0", "fdc:1");
4737 	add_internal_slot(config, MSX_SLOT_ROM, "paint", 3, 3, 0, 4, "maincpu", 0x1c000);  /* Paint */
4738 
4739 	msx_tc8566af(config);
4740 	msx_1_35_dd_drive(config);
4741 	msx2_floplist(config);
4742 
4743 	msx2_cartlist(config);
4744 }
4745 
4746 /* MSX2 - Canon V-25 */
4747 
4748 ROM_START (canonv25)
4749 	ROM_REGION (0xc000, "maincpu", 0)
4750 	ROM_LOAD ("v25bios.rom", 0x0000, 0x8000, CRC(9b3e7b97) SHA1(0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd))
4751 	ROM_LOAD ("v25ext.rom", 0x8000, 0x4000, CRC(4a48779c) SHA1(b8e30d604d319d511cbfbc61e5d8c38fbb9c5a33))
4752 ROM_END
4753 
canonv25(machine_config & config)4754 void msx2_state::canonv25(machine_config &config)
4755 {
4756 	msx2(config);
4757 	// YM2149 (in S-1985 MSX Engine)
4758 	// FDC: None, 0 drives
4759 	// 2 Cartridge slots
4760 	// S-1985 MSX Engine
4761 	// 64KB VRAM
4762 
4763 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000); // BIOS
4764 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
4765 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
4766 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000); // EXT
4767 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x10000); // 64KB Mapper RAM
4768 
4769 	MSX_S1985(config, "s1985", 0);
4770 
4771 	msx2_64kb_vram(config);
4772 
4773 	msx2_cartlist(config);
4774 }
4775 
4776 /* MSX2 - Canon V-30 */
4777 
4778 ROM_START (canonv30)
4779 	ROM_REGION (0x10000, "maincpu", 0)
4780 	ROM_LOAD ("v30bios.rom", 0x0000, 0x8000, CRC(9b3e7b97) SHA1(0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd))
4781 	ROM_LOAD ("v30ext.rom", 0x8000, 0x4000, CRC(4a48779c) SHA1(b8e30d604d319d511cbfbc61e5d8c38fbb9c5a33))
4782 	ROM_LOAD ("v30disk.rom", 0xc000, 0x4000, CRC(54c73ad6) SHA1(12f2cc79b3d09723840bae774be48c0d721ec1c6))
4783 ROM_END
4784 
canonv30(machine_config & config)4785 void msx2_state::canonv30(machine_config &config)
4786 {
4787 	msx2(config);
4788 	// YM2149 (in S-1985 MSX Engine)
4789 	// FDC: ??, 2 3.5" DSDD drive
4790 	// 2 Cartridge slots
4791 	// S-1985 MSX Engine
4792 
4793 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000); // BIOS
4794 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
4795 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
4796 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000); // EXT
4797 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 1, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1"); // DISK
4798 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x10000); // 64KB?? Mapper RAM
4799 
4800 	MSX_S1985(config, "s1985", 0);
4801 
4802 	msx_wd2793(config);
4803 	msx_2_35_dd_drive(config);
4804 	msx2_floplist(config);
4805 
4806 	msx2_cartlist(config);
4807 }
4808 
4809 /* MSX2 - Canon V-30F */
4810 
4811 ROM_START (canonv30f)
4812 	ROM_REGION (0x10000, "maincpu", 0)
4813 	ROM_LOAD ("v30fbios.rom", 0x0000, 0x8000, CRC(9b3e7b97) SHA1(0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd))
4814 	ROM_LOAD ("v30fext.rom", 0x8000, 0x4000, CRC(4a48779c) SHA1(b8e30d604d319d511cbfbc61e5d8c38fbb9c5a33))
4815 	ROM_LOAD ("v30fdisk.rom", 0xc000, 0x4000, CRC(54c73ad6) SHA1(12f2cc79b3d09723840bae774be48c0d721ec1c6))
4816 ROM_END
4817 
canonv30f(machine_config & config)4818 void msx2_state::canonv30f(machine_config &config)
4819 {
4820 	msx2(config);
4821 	// YM2149 (in S-1985 MSX Engine)
4822 	// FDC: ??, 2 3.5" DSDD drive
4823 	// 2 Cartridge slots
4824 	// S-1985 MSX Engine
4825 
4826 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000); // BIOS
4827 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
4828 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
4829 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000); // EXT
4830 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 1, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1"); // DISK
4831 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000); // 128KB Mapper RAM
4832 
4833 	MSX_S1985(config, "s1985", 0);
4834 
4835 	msx_wd2793(config);
4836 	msx_2_35_dd_drive(config);
4837 	msx2_floplist(config);
4838 
4839 	msx2_cartlist(config);
4840 }
4841 
4842 /* MSX2 - Daewoo CPC-300 */
4843 
4844 ROM_START (cpc300)
4845 	ROM_REGION (0x18000, "maincpu", 0)
4846 	ROM_LOAD ("300bios.rom", 0x0000, 0x8000, CRC(53850907) SHA1(affa3c5cd8db79a1450ad8a7f405a425b251653d))
CRC(d64da39c)4847 	ROM_LOAD ("300ext.rom",  0x8000, 0x8000, CRC(d64da39c) SHA1(fb51c505adfbc174df94289fa894ef969f5357bc))
4848 	ROM_LOAD ("300han.rom", 0x10000, 0x8000, CRC(e78cd87f) SHA1(47a9d9a24e4fc6f9467c6e7d61a02d45f5a753ef))
4849 ROM_END
4850 
4851 void msx2_state::cpc300(machine_config &config)
4852 {
4853 	msx2(config);
4854 	// YM2149 (in S-1985 MSX Engine)
4855 	// FDC: None, 0 drives
4856 	// 2 Cartridge slots
4857 	// S-1985 MSX Engine
4858 
4859 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
4860 	add_internal_slot(config, MSX_SLOT_ROM, "han", 0, 1, 1, 2, "maincpu", 0x10000);
4861 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 0, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0x80);   /* 128KB Mapper RAM */
4862 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 3, 0, 2, "maincpu", 0x8000);
4863 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
4864 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
4865 
4866 	MSX_S1985(config, "s1985", 0);
4867 
4868 	msx2_cartlist(config);
4869 }
4870 
4871 /* MSX2 - Daewoo CPC-300E */
4872 
4873 // These roms apparently came from a hacked set, see: http://www.vik.cc/bluemsx/blueforum/viewtopic.php?t=1569&start=75
4874 ROM_START (cpc300e)
4875 	ROM_REGION (0x14000, "maincpu", 0)
4876 	ROM_LOAD ("300ebios.rom", 0x0000, 0x8000, BAD_DUMP CRC(53850907) SHA1(affa3c5cd8db79a1450ad8a7f405a425b251653d))
4877 	ROM_LOAD ("300eext.rom",  0x8000, 0x8000, BAD_DUMP CRC(d64da39c) SHA1(fb51c505adfbc174df94289fa894ef969f5357bc))
4878 	ROM_LOAD ("300ehan.rom", 0x10000, 0x4000, BAD_DUMP CRC(5afea78d) SHA1(f08c91f8c78d681e1f02eaaaaafb87ad81112b60))
4879 ROM_END
4880 
cpc300e(machine_config & config)4881 void msx2_state::cpc300e(machine_config &config)
4882 {
4883 	msx2(config);
4884 	// AY8910/YM2149?
4885 	// FDC: None, 0 drives
4886 	// 2 Cartridge slots?
4887 	// No clockchip
4888 	// No joystick port??
4889 
4890 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
4891 	add_internal_slot(config, MSX_SLOT_ROM, "han", 0, 1, 1, 1, "maincpu", 0x10000);
4892 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 0, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0x80);   /* 128KB Mapper RAM */
4893 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 3, 0, 2, "maincpu", 0x8000);
4894 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
4895 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
4896 
4897 	msx2_cartlist(config);
4898 }
4899 
4900 /* MSX2 - Daewoo CPC-330K */
4901 
4902 ROM_START (cpc330k)
4903 	ROM_REGION (0x14000, "maincpu", 0)
4904 	ROM_LOAD ("330kbios.rom", 0x0000, 0x8000, CRC(53850907) SHA1(affa3c5cd8db79a1450ad8a7f405a425b251653d))
4905 	ROM_LOAD ("330kext.rom",  0x8000, 0x8000, CRC(5d685cca) SHA1(97afbadd8fe34ab658cce8222a27cdbe19bcef39))
4906 	ROM_LOAD ("330khan.rom", 0x10000, 0x4000, CRC(3d6dd335) SHA1(d2b058989a700ca772b9591f42c01ed0f45f74d6))
4907 ROM_END
4908 
cpc330k(machine_config & config)4909 void msx2_state::cpc330k(machine_config &config)
4910 {
4911 	msx2(config);
4912 	// YM2149 (in S-1985 MSX Engine)
4913 	// FDC: None, 0 drives
4914 	// 2 Cartridge slots
4915 	// S-1985 MSX Engine
4916 	// Ergonomic keyboard, 2 builtin game controllers
4917 	// builtin FM?? builtin SCC??
4918 
4919 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
4920 	add_internal_slot(config, MSX_SLOT_ROM, "han", 0, 1, 1, 1, "maincpu", 0x10000);
4921 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 0, 2, 0, 4).set_total_size(0x20000);   /* 128KB Mapper RAM */
4922 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 3, 0, 2, "maincpu", 0x8000);
4923 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
4924 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
4925 
4926 	MSX_S1985(config, "s1985", 0);
4927 
4928 	msx2_cartlist(config);
4929 }
4930 
4931 /* MSX2 - Daewoo CPC-400 */
4932 
4933 ROM_START (cpc400)
4934 	ROM_REGION (0x1c000, "maincpu", 0)
4935 	ROM_LOAD ("400bios.rom", 0x0000, 0x8000, CRC(53850907) SHA1(affa3c5cd8db79a1450ad8a7f405a425b251653d))
4936 	ROM_LOAD ("400disk.rom", 0x8000, 0x4000, CRC(5fa517df) SHA1(914f6ccb25d78621186001f2f5e2aaa2d628cd0c))
4937 	ROM_LOAD ("400ext.rom",  0xc000, 0x8000, CRC(2ba104a3) SHA1(b6d3649a6647fa9f6bd61efc317485a20901128f))
CRC(a8ead5e3)4938 	ROM_LOAD ("400han.rom", 0x14000, 0x8000, CRC(a8ead5e3) SHA1(87936f808423dddfd00629056d6807b4be1dc63e))
4939 
4940 	ROM_REGION(0x20000, "kanji", 0)
4941 	ROM_LOAD ("400kfn.rom", 0, 0x20000, CRC(b663c605) SHA1(965f4982790f1817bcbabbb38c8777183b231a55))
4942 ROM_END
4943 
4944 void msx2_state::cpc400(machine_config &config)
4945 {
4946 	msx2(config);
4947 	// AY8910/YM2149?
4948 	// FDC: mb8877a, 1 3.5" DS?DD drive
4949 	// 2 Cartridge slots?
4950 
4951 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
4952 	add_internal_slot(config, MSX_SLOT_ROM, "han", 0, 1, 1, 2, "maincpu", 0x14000);
4953 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 0, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0x80);   /* 128KB Mapper RAM */
4954 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 3, 0, 2, "maincpu", 0xc000);
4955 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
4956 	add_internal_slot_mirrored(config, MSX_SLOT_DISK2, "disk", 2, 0, 1, 2, "maincpu", 0x8000).set_tags("fdc", "fdc:0", "fdc:1");
4957 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
4958 
4959 	msx_mb8877a(config);
4960 	msx_1_35_dd_drive(config);
4961 	msx2_floplist(config);
4962 
4963 	msx2_cartlist(config);
4964 }
4965 
4966 /* MSX2 - Daewoo CPC-400S */
4967 
4968 ROM_START (cpc400s)
4969 	ROM_REGION (0x1c000, "maincpu", 0)
4970 	ROM_LOAD ("400sbios.rom", 0x0000, 0x8000, CRC(53850907) SHA1(affa3c5cd8db79a1450ad8a7f405a425b251653d))
4971 	ROM_LOAD ("400sdisk.rom", 0x8000, 0x4000, CRC(5fa517df) SHA1(914f6ccb25d78621186001f2f5e2aaa2d628cd0c))
4972 	ROM_LOAD ("400sext.rom",  0xc000, 0x8000, CRC(2ba104a3) SHA1(b6d3649a6647fa9f6bd61efc317485a20901128f))
4973 	ROM_LOAD ("400shan.rom", 0x14000, 0x8000, CRC(975e7a31) SHA1(6a50295ea35e720ba6f4ba5616c3441128b384ed))
4974 
4975 	ROM_REGION(0x20000, "kanji", 0)
CRC(fa85368c)4976 	ROM_LOAD ("400skfn.rom", 0, 0x20000, CRC(fa85368c) SHA1(30fff22e3e3d464993707488442721a5e56a9707))
4977 ROM_END
4978 
4979 void msx2_state::cpc400s(machine_config &config)
4980 {
4981 	msx2(config);
4982 	// YM2149 (in S-1985 MSX Engine)
4983 	// FDC: mb8877a, 1 3.5" DS?DD drive
4984 	// 2 Cartridge slots
4985 	// S-1985 MSX Engine
4986 
4987 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
4988 	add_internal_slot(config, MSX_SLOT_ROM, "han", 0, 1, 1, 2, "maincpu", 0x14000);
4989 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 0, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0x80);   /* 128KB Mapper RAM */
4990 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 3, 0, 2, "maincpu", 0xc000);
4991 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
4992 	add_internal_slot_mirrored(config, MSX_SLOT_DISK2, "disk", 2, 0, 1, 2, "maincpu", 0x8000).set_tags("fdc", "fdc:0", "fdc:1");
4993 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
4994 
4995 	MSX_S1985(config, "s1985", 0);
4996 
4997 	msx_mb8877a(config);
4998 	msx_1_35_dd_drive(config);
4999 	msx2_floplist(config);
5000 
5001 	msx2_cartlist(config);
5002 }
5003 
5004 /* MSX2 - Daewoo Zemmix CPC-61 */
5005 
5006 ROM_START (cpc61)
5007 	ROM_REGION (0x10000, "maincpu", 0)
CRC(b80c8e45)5008 	ROM_LOAD ("61bios.rom", 0x0000, 0x8000, CRC(b80c8e45) SHA1(310a02a9746bc062834e0cf2fabf7f3e0f7e829e))
5009 	ROM_LOAD ("61ext.rom", 0x8000, 0x8000, CRC(b3d740b4) SHA1(7121c3c5ee6e4931fceda14a06f4c0e3b8eda437))
5010 
5011 	ROM_REGION(0x40000, "kanji", 0)
5012 	ROM_LOAD ("61kfn.rom", 0x00000, 0x40000, CRC(9a3cf67c) SHA1(22d5f4e522250dc5eb17e15b68f4a51bb752cba1))
5013 ROM_END
5014 
5015 void msx2_state::cpc61(machine_config &config)
5016 {
5017 	msx2(config);
5018 	// YM2149 (in S-1985 MSX Engine)
5019 	// FDC: None, 0 drives
5020 	// 1 Cartridge slot
5021 	// S-1985 MSX Engine
5022 	// No clock chip
5023 	// No keyboard, but a keyboard connector
5024 	// No printer port
5025 	// No cassette port?
5026 
5027 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
5028 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 0, 2, 0, 4).set_total_size(0x10000); // 64KB Mapper RAM?
5029 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 3, 0, 2, "maincpu", 0x8000);
5030 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
5031 
5032 	MSX_S1985(config, "s1985", 0);
5033 
5034 	msx2_cartlist(config);
5035 }
5036 
5037 /* MSX2 - Daewoo Zemmix CPG-120 Normal */
5038 
5039 ROM_START (cpg120)
5040 	ROM_REGION (0x14000, "maincpu", 0)
CRC(b80c8e45)5041 	ROM_LOAD ("cpg120bios.rom", 0x0000, 0x8000, CRC(b80c8e45) SHA1(310a02a9746bc062834e0cf2fabf7f3e0f7e829e))
5042 	ROM_LOAD ("cpg120ext.rom",  0x8000, 0x8000, CRC(b3d740b4) SHA1(7121c3c5ee6e4931fceda14a06f4c0e3b8eda437))
5043 	ROM_LOAD ("cpg128music.rom", 0x10000, 0x4000, CRC(73491999) SHA1(b9ee4f30a36e283a2b1b9a28a70ab9b9831570c6))
5044 
5045 	ROM_REGION (0x40000, "kanji", 0)
5046 	ROM_LOAD ("cpg120kfn.rom", 0x0000, 0x40000, CRC(9a3cf67c) SHA1(22d5f4e522250dc5eb17e15b68f4a51bb752cba1))
5047 ROM_END
5048 
5049 void msx2_state::cpg120(machine_config &config)
5050 {
5051 	msx2(config);
5052 	// YM2149 (in S1985)
5053 	// FDC: None, 0 drives
5054 	// 2 Cartridge slots?
5055 	// S-1985 MSX Engine
5056 	// V9958 VDP
5057 	// FM built in
5058 	// No keyboard, bot a keyboard connector?
5059 	// No clock chip
5060 	// No printer port
5061 
5062 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
5063 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 0, 2, 0, 4).set_total_size(0x20000); // 128KB Mapper RAM
5064 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 3, 0, 2, "maincpu", 0x8000);
5065 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
5066 	add_internal_slot(config, MSX_SLOT_MUSIC, "mus", 2, 0, 1, 1, "maincpu", 0x10000).set_ym2413_tag("ym2413");
5067 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
5068 
5069 	MSX_S1985(config, "s1985", 0);
5070 
5071 	msx_ym2413(config);
5072 
5073 	msx2_cartlist(config);
5074 }
5075 
5076 /* MSX2 - Daewoo Zemmic CPG-120 Turbo */
5077 /* Same as normal CPG-120 but with CPU running at 5.369317 MHz */
5078 
5079 /* MSX2 - Fenner FPC-900 */
5080 
5081 ROM_START (fpc900)
5082 	ROM_REGION (0x10000, "maincpu", 0)
5083 	ROM_LOAD ("fpc900bios.rom", 0x0000, 0x8000, CRC(6cdaf3a5) SHA1(6103b39f1e38d1aa2d84b1c3219c44f1abb5436e))
5084 	ROM_LOAD ("fpc900ext.rom", 0x8000, 0x4000, CRC(66237ecf) SHA1(5c1f9c7fb655e43d38e5dd1fcc6b942b2ff68b02))
CRC(ca3307d3)5085 	ROM_LOAD ("fpc900disk.rom", 0xc000, 0x4000, CRC(ca3307d3) SHA1(c3efedda7ab947a06d9345f7b8261076fa7ceeef))
5086 ROM_END
5087 
5088 void msx2_state::fpc900(machine_config &config)
5089 {
5090 	msx2_pal(config);
5091 	// YM2149 (in S-3527 MSX Engine)
5092 	// FDC: WD2793?, 1 3.5" DSDD drive
5093 	// 2? Cartridge slots
5094 	// S-3527 MSX Engine
5095 	// 256KB?? VRAM
5096 
5097 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
5098 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
5099 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
5100 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
5101 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x40000); // 256KB? Mapper RAM
5102 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
5103 
5104 	msx_wd2793_force_ready(config);
5105 	msx_1_35_dd_drive(config);
5106 	msx2_floplist(config);
5107 
5108 	msx2_cartlist(config);
5109 }
5110 
5111 /* MSX2 - Gradiente Expert 2.0 */
5112 
5113 ROM_START (expert20)
5114 	ROM_REGION (0x14000, "maincpu", 0)
5115 	ROM_LOAD ("exp20bios.rom",     0x0000, 0x8000, CRC(6bacdce4) SHA1(9c43106dba3ae2829e9a11dffa9d000ed6d6454c))
5116 	ROM_LOAD ("exp20ext.rom",      0x8000, 0x4000, CRC(08ced880) SHA1(4f2a7e0172f0214f025f23845f6e053d0ffd28e8))
5117 	ROM_LOAD ("xbasic2.rom",       0xc000, 0x4000, CRC(2825b1a0) SHA1(47370bec7ca1f0615a54eda548b07fbc0c7ef398))
5118 	ROM_LOAD ("microsoldisk.rom", 0x10000, 0x4000, CRC(6704ef81) SHA1(a3028515ed829e900cc8deb403e17b09a38bf9b0))
5119 ROM_END
5120 
expert20(machine_config & config)5121 void msx2_state::expert20(machine_config &config)
5122 {
5123 	msx2_pal(config);
5124 	// AY8910/YM2149?
5125 	// FDC: microsol, 1? 3.5"? DS?DD drive
5126 	// 2 Cartridge slots?
5127 
5128 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
5129 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
5130 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 1, 1, 0, 1, "maincpu", 0x8000); /* EXT */
5131 	add_internal_slot(config, MSX_SLOT_ROM, "xbasic", 1, 1, 1, 1, "maincpu", 0xc000); /* XBASIC */
5132 	add_internal_slot(config, MSX_SLOT_DISK5, "disk", 1, 3, 1, 1, "maincpu", 0x10000).set_tags("fdc", "fdc:0", "fdc:1", "fdc:2", "fdc:3"); /* Microsol controller */
5133 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 2, 0, 0, 4).set_total_size(0x20000).set_ramio_bits(0x80);   /* 128KB Mapper RAM */
5134 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
5135 
5136 	msx_microsol(config);
5137 	msx_1_35_dd_drive(config);
5138 	msx2_floplist(config);
5139 
5140 	msx2_cartlist(config);
5141 }
5142 
5143 /* MSX2 - Hitachi MB-H70 */
5144 
5145 ROM_START (mbh70)
5146 	ROM_REGION (0x110000, "maincpu", 0)
CRC(a27c563d)5147 	ROM_LOAD ("mbh70bios.rom"    , 0x0000,   0x8000, CRC(a27c563d) SHA1(c1e46c00f1e38fc9e0ab487bf0513bd93ce61f3f))
5148 	ROM_LOAD ("mbh70ext.rom",      0x8000,   0x4000, CRC(4a48779c) SHA1(b8e30d604d319d511cbfbc61e5d8c38fbb9c5a33))
5149 	ROM_LOAD ("mbh70disk.rom",     0xc000,   0x4000, CRC(05661a3f) SHA1(e695fc0c917577a3183901a08ca9e5f9c60b8317))
5150 	ROM_LOAD ("mbh70halnote.rom", 0x10000, 0x100000, CRC(40313fec) SHA1(1af617bfd11b10a71936c606174a80019762ea71))
5151 
5152 	ROM_REGION(0x20000, "kanji", 0)
5153 	ROM_LOAD ("mbh70kfn.rom", 0x0000, 0x20000, CRC(d23d4d2d) SHA1(db03211b7db46899df41db2b1dfbec972109a967))
5154 ROM_END
5155 
5156 void msx2_state::mbh70(machine_config &config)
5157 {
5158 	msx2(config);
5159 	// YM2149 (in S-1985)
5160 	// FDC: WD2793?, 1? 3.5" DSDD drive
5161 	// S-1985 MSX Engine
5162 	// 2? Cartridge slots
5163 
5164 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
5165 	add_internal_slot(config, MSX_SLOT_SONY08, "firm", 0, 3, 0, 4, "maincpu", 0x10000);
5166 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
5167 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
5168 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
5169 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 0, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
5170 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000); // 128KB Mapper RAM
5171 
5172 	MSX_S1985(config, "s1985", 0);
5173 
5174 	msx_wd2793(config);
5175 	msx_1_35_dd_drive(config);
5176 	msx2_floplist(config);
5177 
5178 	msx2_cartlist(config);
5179 }
5180 
5181 /* MSX2 - Kawai KMC-5000 */
5182 
5183 ROM_START (kmc5000)
5184 	ROM_REGION (0x18000, "maincpu", 0)
5185 	ROM_LOAD ("kmc5000bios.rom",  0x0000, 0x8000, CRC(9b3e7b97) SHA1(0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd))
5186 	ROM_LOAD ("kmc5000ext.rom",   0x8000, 0x4000, CRC(43e7a7fc) SHA1(0fbd45ef3dd7bb82d4c31f1947884f411f1ca344))
CRC(e25cacca)5187 	ROM_LOAD ("kmc5000disk.rom",  0xc000, 0x4000, CRC(e25cacca) SHA1(607cfca605eaf82e3efa33459d6583efb7ecc13b))
5188 	ROM_LOAD ("kmc5000kdr.rom",  0x10000, 0x8000, CRC(2dbea5ec) SHA1(ea35cc2cad9cfdf56cae224d8ee41579de37f000))
5189 
5190 	ROM_REGION (0x20000, "kanji", 0)
5191 	ROM_LOAD ("kmc5000kfn.rom", 0, 0x20000, CRC(c61ddc5d) SHA1(5e872d5853698731a0ed22fb72dbcdfd59cd19c3))
5192 ROM_END
5193 
5194 void msx2_state::kmc5000(machine_config &config)
5195 {
5196 	msx2(config);
5197 	// YM2149 (in S-1985)
5198 	// FDC: TC8566AF?, 1? 3.5" DSDD drive
5199 	// S-1985 MSX Engine
5200 	// 2? Cartridge slots
5201 
5202 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
5203 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
5204 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
5205 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000);
5206 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
5207 	add_internal_slot(config, MSX_SLOT_ROM, "kdr", 3, 1, 1, 2, "maincpu", 0x10000);
5208 	add_internal_slot(config, MSX_SLOT_DISK3, "disk", 3, 2, 1, 1, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
5209 
5210 	MSX_S1985(config, "s1985", 0);
5211 
5212 	msx_tc8566af(config);
5213 	msx_1_35_dd_drive(config);
5214 	msx2_floplist(config);
5215 
5216 	msx2_cartlist(config);
5217 }
5218 
5219 /* MSX2 - Mitsubishi ML-G1 */
5220 
5221 ROM_START (mlg1)
5222 	ROM_REGION (0x14000, "maincpu", 0)
5223 	ROM_LOAD ("mlg1bios.rom",  0x0000, 0x8000, CRC(0cc7f817) SHA1(e4fdf518a8b9c8ab4290c21b83be2c347965fc24))
CRC(dc0951bd)5224 	ROM_LOAD ("mlg1ext.rom",   0x8000, 0x4000, CRC(dc0951bd) SHA1(1e9a955943aeea9b1807ddf1250ba6436d8dd276))
5225 	ROM_LOAD ("mlg1paint.rom", 0xc000, 0x8000, CRC(64df1750) SHA1(5cf0abca6dbcf940bc33c433ecb4e4ada02fbfe6))
5226 ROM_END
5227 
5228 void msx2_state::mlg1(machine_config &config)
5229 {
5230 	msx2_pal(config);
5231 	// YM2149 (in S-1985)
5232 	// FDC: None, 0 drives
5233 	// S-1985 MSX Engine
5234 	// 2 Cartridge slots
5235 
5236 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
5237 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
5238 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
5239 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
5240 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000); // 64KB or 128KB Mapper RAM ?
5241 	add_internal_slot(config, MSX_SLOT_ROM, "paint", 3, 3, 0, 2, "maincpu", 0xc000);
5242 
5243 	MSX_S1985(config, "s1985", 0);
5244 
5245 	msx2_cartlist(config);
5246 }
5247 
5248 /* MSX2 - Mitsubishi ML-G3 */
5249 
5250 ROM_START (mlg3)
5251 	ROM_REGION (0x14000, "maincpu", 0)
5252 	ROM_LOAD ("mlg3bios.rom",    0x0000, 0x8000, CRC(0cc7f817) SHA1(e4fdf518a8b9c8ab4290c21b83be2c347965fc24))
CRC(dc0951bd)5253 	ROM_LOAD ("mlg3ext.rom",     0x8000, 0x4000, CRC(dc0951bd) SHA1(1e9a955943aeea9b1807ddf1250ba6436d8dd276))
5254 	ROM_LOAD ("mlg3disk.rom",    0xc000, 0x4000, CRC(b94ebc7a) SHA1(30ba1144c872a0bb1c91768e75a2c28ab1f4e3c6))
5255 	ROM_LOAD ("mlg3rs232c.rom", 0x10000, 0x4000, CRC(90b8a114) SHA1(dc50f2c9db233e505b0981c244ff3de553ac9d68))
5256 ROM_END
5257 
5258 void msx2_state::mlg3(machine_config &config)
5259 {
5260 	msx2_pal(config);
5261 	// YM2149 (in S-1985)
5262 	// FDC: wd2793?, 1 3.5" DSDD drive
5263 	// S-1985 MSX Engine
5264 	// 2 Cartridge slots
5265 
5266 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
5267 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
5268 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
5269 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
5270 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 0, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
5271 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000); // 64KB or 128KB Mapper RAM?
5272 	//add_internal_slot(config, MSX_SLOT_ROM, "rs232c", 3, 3, 1, 1, "maincpu", 0x10000);
5273 
5274 	MSX_S1985(config, "s1985", 0);
5275 
5276 	msx_wd2793(config);
5277 	msx_1_35_dd_drive(config);
5278 	msx2_floplist(config);
5279 
5280 	msx2_cartlist(config);
5281 }
5282 
5283 /* MSX2 - Mitsubishi ML-G10 */
5284 
5285 ROM_START (mlg10)
5286 	ROM_REGION (0xc000, "maincpu", 0)
CRC(a27c563d)5287 	ROM_LOAD ("mlg10bios.rom", 0x0000, 0x8000, CRC(a27c563d) SHA1(c1e46c00f1e38fc9e0ab487bf0513bd93ce61f3f))
5288 	ROM_LOAD ("mlg10ext.rom",  0x8000, 0x4000, CRC(4a48779c) SHA1(b8e30d604d319d511cbfbc61e5d8c38fbb9c5a33))
5289 
5290 	ROM_REGION (0x20000, "kanji", 0)
5291 	ROM_LOAD ("mlg10kfn.rom", 0, 0x20000, CRC(d23d4d2d) SHA1(db03211b7db46899df41db2b1dfbec972109a967))
5292 ROM_END
5293 
5294 void msx2_state::mlg10(machine_config &config)
5295 {
5296 	msx2(config);
5297 	// YM2149 (in S-1985)
5298 	// FDC: None, 0 drives
5299 	// S-1985 MSX Engine
5300 	// 2 Cartridge slots
5301 
5302 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
5303 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
5304 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
5305 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
5306 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000); // 64KB or 128KB Mapper RAM?
5307 
5308 	MSX_S1985(config, "s1985", 0);
5309 
5310 	msx2_cartlist(config);
5311 }
5312 
5313 /* MSX2 - Mitsubishi ML-G30 Model 1/Model 2 */
5314 
5315 ROM_START (mlg30)
5316 	ROM_REGION (0x10000, "maincpu", 0)
CRC(a27c563d)5317 	ROM_LOAD ("g30bios.rom", 0x0000, 0x8000, CRC(a27c563d) SHA1(c1e46c00f1e38fc9e0ab487bf0513bd93ce61f3f))
5318 	ROM_LOAD ("g30ext.rom",  0x8000, 0x4000, CRC(4a48779c) SHA1(b8e30d604d319d511cbfbc61e5d8c38fbb9c5a33))
5319 	ROM_LOAD ("g30disk.rom", 0xc000, 0x4000, CRC(05661a3f) SHA1(e695fc0c917577a3183901a08ca9e5f9c60b8317))
5320 
5321 	ROM_REGION(0x20000, "kanji", 0)
5322 	ROM_LOAD ("g30kfn.rom", 0x0000, 0x20000, CRC(d23d4d2d) SHA1(db03211b7db46899df41db2b1dfbec972109a967))
5323 ROM_END
5324 
5325 void msx2_state::mlg30(machine_config &config)
5326 {
5327 	msx2(config);
5328 	// AY8910/YM2149?
5329 	// FDC: wd2793/tc8566af?, 1 or 2? 3.5" DSDD drives
5330 	// 2 Cartridge slots?
5331 
5332 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
5333 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
5334 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);    /* Slot 2 subslot 0 */
5335 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
5336 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 0, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
5337 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x10000);   /* 64KB Mapper RAM */
5338 
5339 	msx_wd2793_force_ready(config);
5340 	msx_1_35_dd_drive(config);
5341 	msx2_floplist(config);
5342 
5343 	msx2_cartlist(config);
5344 }
5345 
5346 /* MSX2 - National FS-4500 */
5347 
5348 ROM_START (fs4500)
5349 	ROM_REGION (0x40000, "maincpu",0)
5350 	ROM_LOAD ("4500bios.rom",  0x0000, 0x8000, CRC(9b3e7b97) SHA1(0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd))
5351 	ROM_LOAD ("4500ext.rom",   0x8000, 0x4000, CRC(4a48779c) SHA1(b8e30d604d319d511cbfbc61e5d8c38fbb9c5a33))
5352 	ROM_LOAD ("4500font.rom",  0xc000, 0x4000, CRC(4bd54f95) SHA1(3ce8e35790eb4689b21e14c7ecdd4b63943ee158))
CRC(c9398e11)5353 	ROM_LOAD ("4500buns.rom", 0x10000, 0x8000, CRC(c9398e11) SHA1(e89ea1e8e583392e2dd9debb8a4b6a162f58ba91))
5354 	ROM_LOAD ("4500jush.rom", 0x18000, 0x8000, CRC(4debfd2d) SHA1(6442c1c5cece64c6dae90cc6ae3675f070d93e06))
5355 	ROM_LOAD ("4500wor1.rom", 0x20000, 0xc000, CRC(0c8b5cfb) SHA1(3f047469b62d93904005a0ea29092e892724ce0b))
5356 	ROM_LOAD ("4500wor2.rom", 0x2c000, 0xc000, CRC(d9909451) SHA1(4c8ea05c09b40c41888fa18db065575a317fda16))
5357 	ROM_LOAD ("4500kdr1.rom", 0x38000, 0x4000, CRC(f8c7f0db) SHA1(df07e89fa0b1c7874f9cdf184c136f964fea4ff4))
5358 	ROM_LOAD ("4500kdr2.rom", 0x3c000, 0x4000, CRC(69e87c31) SHA1(c63db26660da96af56f8a7d3ea18544b9ae5a37c))
5359 
5360 	ROM_REGION(0x20000, "kanji", 0)
5361 	ROM_LOAD ("4500kfn.rom", 0, 0x20000, CRC(956dc96d) SHA1(9ed3ab6d893632b9246e91b412cd5db519e7586b))
5362 
5363 	/* Matsushita Bunsetsu Henkan ROM must be emulated */
5364 	ROM_REGION(0x20000, "bunsetsu", 0)
5365 	ROM_LOAD ("4500budi.rom", 0, 0x20000, CRC(f94590f8) SHA1(1ebb06062428fcdc66808a03761818db2bba3c73))
5366 ROM_END
5367 
5368 void msx2_state::fs4500(machine_config &config)
5369 {
5370 	msx2(config);
5371 	// YM2149 (in S-1985 MSX Engine)
5372 	// FDC: None, 0 drives
5373 	// 2 Cartridge slots
5374 	// S-1985 MSX Engine
5375 	// Matsushita switched device
5376 
5377 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
5378 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 1, 0, 1, "maincpu", 0x8000);
5379 	add_internal_slot(config, MSX_SLOT_ROM, "font", 0, 2, 0, 1, "maincpu", 0xc000);
5380 	add_internal_slot(config, MSX_SLOT_BUNSETSU, "buns", 0, 2, 1, 2, "maincpu", 0x10000).set_bunsetsu_region_tag("bunsetsu");
5381 	add_internal_slot(config, MSX_SLOT_ROM, "jush", 0, 3, 1, 2, "maincpu", 0x18000);
5382 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
5383 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
5384 	add_internal_slot(config, MSX_SLOT_ROM, "wor1", 3, 0, 0, 3, "maincpu", 0x20000);
5385 	add_internal_slot(config, MSX_SLOT_ROM, "kdr1", 3, 0, 3, 1, "maincpu", 0x38000);
5386 	add_internal_slot(config, MSX_SLOT_ROM, "wor2", 3, 1, 0, 3, "maincpu", 0x2c000);
5387 	add_internal_slot(config, MSX_SLOT_ROM, "kdr2", 3, 1, 3, 1, "maincpu", 0x3c000);
5388 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 2, 0, 4);  /* 64KB RAM */
5389 
5390 	MSX_S1985(config, "s1985", 0);
5391 
5392 	MSX_MATSUSHITA(config, "matsushita", 0);
5393 
5394 	msx2_cartlist(config);
5395 }
5396 
5397 /* MSX2 - National FS-4600 */
5398 
5399 ROM_START (fs4600)
5400 	ROM_REGION (0x120000, "maincpu",0)
5401 	ROM_LOAD ("4600bios.rom",  0x0000,   0x8000, CRC(9b3e7b97) SHA1(0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd))
5402 	ROM_LOAD ("4600ext.rom",   0x8000,   0x4000, CRC(43e7a7fc) SHA1(0fbd45ef3dd7bb82d4c31f1947884f411f1ca344))
CRC(ae4e65b7)5403 	ROM_LOAD ("4600disk.rom",  0xc000,   0x4000, CRC(ae4e65b7) SHA1(073feb8bb645d935e099afaf61e6f04f52adee42))
5404 	ROM_LOAD ("4600fon1.rom", 0x10000,   0x4000, CRC(7391389b) SHA1(31292b9ca9fe7d1d8833530f44c0a5671bfefe4e))
5405 	ROM_LOAD ("4600fon2.rom", 0x14000,   0x4000, CRC(c3a6b445) SHA1(02155fc25c9bd23e1654fe81c74486351e1ecc28))
5406 	ROM_LOAD ("4600kdr.rom",  0x18000,   0x8000, CRC(b2db6bf5) SHA1(3a9a942ed888dd641cddf8deada1879c454df3c6))
5407 	ROM_LOAD ("4600firm.rom", 0x20000, 0x100000, CRC(1df57472) SHA1(005794c10a4237de3907ba4a44d436078d3c06c2))
5408 
5409 	ROM_REGION(0x20000, "kanji", 0)
5410 	ROM_LOAD ("4600kfn.rom", 0, 0x20000, CRC(c61ddc5d) SHA1(5e872d5853698731a0ed22fb72dbcdfd59cd19c3))
5411 
5412 	/* Matsushita 12 dots Kanji ROM must be emulated */
5413 	ROM_REGION(0x20000, "kanji12", 0)
5414 	ROM_LOAD ("4600kf12.rom", 0, 0x20000, CRC(340d1ef7) SHA1(a7a23dc01314e88381eee88b4878b39931ab4818))
5415 ROM_END
5416 
5417 void msx2_state::fs4600(machine_config &config)
5418 {
5419 	msx2(config);
5420 	// YM2149 (in S-1985 MSX Engine)
5421 	// FDC: mb8877a, 1 3.5" DSDD drive
5422 	// 2 Cartridge slots
5423 	// S-1985 MSX Engine
5424 
5425 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
5426 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 1, 0, 1, "maincpu", 0x8000);
5427 	add_internal_slot(config, MSX_SLOT_ROM, "fon1", 0, 2, 0, 1, "maincpu", 0x10000);
5428 	add_internal_slot(config, MSX_SLOT_ROM, "kdr", 0, 2, 1, 2, "maincpu", 0x18000);
5429 	add_internal_slot(config, MSX_SLOT_ROM, "fon2", 0, 3, 0, 1, "maincpu", 0x14000);
5430 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
5431 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
5432 	add_internal_slot(config, MSX_SLOT_FS4600, "firm", 3, 1, 0, 4, "maincpu", 0x20000);
5433 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0x80);   /* 128KB Mapper RAM */
5434 	add_internal_slot_mirrored(config, MSX_SLOT_DISK2, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
5435 
5436 	MSX_S1985(config, "s1985", 0);
5437 
5438 	msx_mb8877a(config);
5439 	msx_1_35_dd_drive(config);
5440 	msx2_floplist(config);
5441 
5442 	msx2_cartlist(config);
5443 }
5444 
5445 /* MSX2 - National FS-4700 */
5446 
5447 ROM_START (fs4700)
5448 	ROM_REGION (0x44000, "maincpu",0)
5449 	ROM_LOAD ("4700bios.rom",  0x0000, 0x8000, CRC(9b3e7b97) SHA1(0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd))
5450 	ROM_LOAD ("4700ext.rom",   0x8000, 0x4000, CRC(4a48779c) SHA1(b8e30d604d319d511cbfbc61e5d8c38fbb9c5a33))
5451 	ROM_LOAD ("4700disk.rom",  0xc000, 0x4000, CRC(1e7d6512) SHA1(78cd7f847e77fd8cd51a647efb2725ba93f4c471))
5452 	ROM_LOAD ("4700font.rom", 0x10000, 0x4000, CRC(4bd54f95) SHA1(3ce8e35790eb4689b21e14c7ecdd4b63943ee158))
CRC(c9398e11)5453 	ROM_LOAD ("4700buns.rom", 0x14000, 0x8000, CRC(c9398e11) SHA1(e89ea1e8e583392e2dd9debb8a4b6a162f58ba91))
5454 	ROM_LOAD ("4700jush.rom", 0x1c000, 0x8000, CRC(4debfd2d) SHA1(6442c1c5cece64c6dae90cc6ae3675f070d93e06))
5455 	ROM_LOAD ("4700wor1.rom", 0x24000, 0xc000, CRC(5f39a727) SHA1(f5af1d2a8bcf247f78847e1a9d995e581df87e8e))
5456 	ROM_LOAD ("4700wor2.rom", 0x30000, 0xc000, CRC(d9909451) SHA1(4c8ea05c09b40c41888fa18db065575a317fda16))
5457 	ROM_LOAD ("4700kdr1.rom", 0x3c000, 0x4000, CRC(f8c7f0db) SHA1(df07e89fa0b1c7874f9cdf184c136f964fea4ff4))
5458 	ROM_LOAD ("4700kdr2.rom", 0x40000, 0x4000, CRC(69e87c31) SHA1(c63db26660da96af56f8a7d3ea18544b9ae5a37c))
5459 
5460 	ROM_REGION(0x20000, "kanji", 0)
5461 	ROM_LOAD ("4700kfn.rom", 0, 0x20000, CRC(956dc96d) SHA1(9ed3ab6d893632b9246e91b412cd5db519e7586b))
5462 
5463 	/* Matsushita Bunsetsu Henkan ROM must be emulated */
5464 	ROM_REGION(0x20000, "bunsetsu", 0)
5465 	ROM_LOAD ("4700budi.rom", 0, 0x20000, CRC(f94590f8) SHA1(1ebb06062428fcdc66808a03761818db2bba3c73))
5466 ROM_END
5467 
5468 void msx2_state::fs4700(machine_config &config)
5469 {
5470 	msx2(config);
5471 	// YM2149 (in S-1985 MSX Engine)
5472 	// FDC: mb8877a, 1 3.5" DSDD drive
5473 	// 2 Cartridge slots
5474 	// S-1985 MSX Engine
5475 	// Matsushita switched device
5476 
5477 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
5478 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 1, 0, 1, "maincpu", 0x8000);
5479 	add_internal_slot(config, MSX_SLOT_ROM, "font", 0, 2, 0, 1, "maincpu", 0x10000);
5480 	add_internal_slot(config, MSX_SLOT_BUNSETSU, "buns", 0, 2, 1, 2, "maincpu", 0x14000).set_bunsetsu_region_tag("bunsetsu");
5481 	add_internal_slot(config, MSX_SLOT_ROM, "jush", 0, 3, 1, 2, "maincpu", 0x1c000);
5482 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
5483 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
5484 	add_internal_slot(config, MSX_SLOT_ROM, "wor1", 3, 0, 0, 3, "maincpu", 0x24000);
5485 	add_internal_slot(config, MSX_SLOT_ROM, "kdr1", 3, 0, 3, 1, "maincpu", 0x3c000);
5486 	add_internal_slot(config, MSX_SLOT_ROM, "wor2", 3, 1, 0, 3, "maincpu", 0x30000);
5487 	add_internal_slot(config, MSX_SLOT_ROM, "kdr2", 3, 1, 3, 1, "maincpu", 0x40000);
5488 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 2, 0, 4);  /* 64KB RAM */
5489 	add_internal_slot_mirrored(config, MSX_SLOT_DISK2, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
5490 
5491 	MSX_S1985(config, "s1985", 0);
5492 
5493 	MSX_MATSUSHITA(config, "matsushita", 0);
5494 
5495 	msx_mb8877a(config);
5496 	msx_1_35_dd_drive(config);
5497 	msx2_floplist(config);
5498 
5499 	msx2_cartlist(config);
5500 }
5501 
5502 /* MSX2 - National FS-5000 */
5503 
5504 ROM_START (fs5000)
5505 	ROM_REGION (0x30000, "maincpu",0)
CRC(a44ea707)5506 	ROM_LOAD ("5000bios.rom", 0x0000, 0x8000, CRC(a44ea707) SHA1(59967765d6e9328909dee4dac1cbe4cf9d47d315))
5507 	ROM_LOAD ("5000ext.rom",  0x8000, 0x4000, CRC(43e7a7fc) SHA1(0fbd45ef3dd7bb82d4c31f1947884f411f1ca344))
5508 	ROM_LOAD ("5000disk.rom", 0xc000, 0x4000, CRC(ae4e65b7) SHA1(073feb8bb645d935e099afaf61e6f04f52adee42))
5509 	ROM_LOAD ("5000rtc.rom", 0x10000, 0x8000, CRC(03351598) SHA1(98bbfa3ab07b7a5cad55d7ddf7cbd9440caa2a86))
5510 	ROM_LOAD ("5000kdr.rom", 0x18000, 0x8000, CRC(b2db6bf5) SHA1(3a9a942ed888dd641cddf8deada1879c454df3c6))
5511 	ROM_FILL (0x20000, 0x10000, 0xff)
5512 
5513 	ROM_REGION(0x20000, "kanji", 0)
5514 	ROM_LOAD ("5000kfn.rom", 0, 0x20000, CRC(c61ddc5d) SHA1(5e872d5853698731a0ed22fb72dbcdfd59cd19c3))
5515 ROM_END
5516 
5517 void msx2_state::fs5000(machine_config &config)
5518 {
5519 	msx2(config);
5520 	// YM2149 (in S-1985 MSX Engine)
5521 	// FDC: wd2793, 2 3.5" DSDD drives
5522 	// 2 Cartridge slots
5523 	// S-1985 MSX Engine
5524 
5525 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
5526 	add_internal_slot(config, MSX_SLOT_ROM, "empty1", 0, 1, 0, 4, "maincpu", 0x20000);
5527 	add_internal_slot(config, MSX_SLOT_ROM, "empty2", 0, 2, 0, 4, "maincpu", 0x20000);
5528 	add_internal_slot(config, MSX_SLOT_ROM, "empty3", 0, 3, 0, 4, "maincpu", 0x20000);
5529 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
5530 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
5531 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
5532 	add_internal_slot(config, MSX_SLOT_ROM, "kdr", 3, 0, 1, 2, "maincpu", 0x18000);
5533 	add_internal_slot(config, MSX_SLOT_ROM, "rtcrom", 3, 1, 1, 2, "maincpu", 0x10000);
5534 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0x80);   /* 128KB Mapper RAM */
5535 	add_internal_slot_mirrored(config, MSX_SLOT_DISK2, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
5536 
5537 	MSX_S1985(config, "s1985", 0);
5538 
5539 	msx_wd2793_force_ready(config);
5540 	msx_2_35_dd_drive(config);
5541 	msx2_floplist(config);
5542 
5543 	msx2_cartlist(config);
5544 }
5545 
5546 /* MSX2 - National FS-5500F2*/
5547 /* The National FS-5500 had two versions: */
5548 /* F1 has 1 floppy drive */
5549 /* F2 has 2 floppy drives */
5550 
5551 ROM_START (fs5500f1)
5552 	ROM_REGION (0x30000, "maincpu",0)
5553 	ROM_LOAD ("5500bios.rom", 0x0000, 0x8000, CRC(5bf38e13) SHA1(44e0dd215b2a9f0770dd76fb49187c05b083eed9))
5554 	ROM_LOAD ("5500ext.rom",  0x8000, 0x4000, CRC(3c42c367) SHA1(4be8371f3b03e70ddaca495958345f3c4f8e2d36))
5555 	ROM_LOAD ("5500disk.rom", 0xc000, 0x4000, CRC(1e7d6512) SHA1(78cd7f847e77fd8cd51a647efb2725ba93f4c471))
5556 	ROM_LOAD ("5500imp.rom", 0x10000, 0x8000, CRC(6173a88c) SHA1(b677a861b67e8763a11d5dcf52416b42493ade57))
CRC(b2db6bf5)5557 	ROM_LOAD ("5500kdr.rom", 0x18000, 0x8000, CRC(b2db6bf5) SHA1(3a9a942ed888dd641cddf8deada1879c454df3c6))
5558 	ROM_FILL (0x20000, 0x10000, 0xff)
5559 
5560 	ROM_REGION(0x20000, "kanji", 0)
5561 	ROM_LOAD ("5500kfn.rom", 0, 0x20000, CRC(956dc96d) SHA1(9ed3ab6d893632b9246e91b412cd5db519e7586b))
5562 ROM_END
5563 
5564 void msx2_state::fs5500f1(machine_config &config)
5565 {
5566 	msx2(config);
5567 	// YM2149 in (S-1985 MSX Engine)
5568 	// FDC: mb8877a, 1 3.5" DSDD drive
5569 	// 2 Cartridge slots
5570 	// S-1985 MSX Engine
5571 	// Matsushita switched device
5572 
5573 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
5574 	add_internal_slot(config, MSX_SLOT_ROM, "empty1", 0, 1, 0, 4, "maincpu", 0x20000);
5575 	add_internal_slot(config, MSX_SLOT_ROM, "empty2", 0, 2, 0, 4, "maincpu", 0x20000);
5576 	add_internal_slot(config, MSX_SLOT_ROM, "empty3", 0, 3, 0, 4, "maincpu", 0x20000);
5577 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
5578 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
5579 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
5580 	add_internal_slot(config, MSX_SLOT_ROM, "kdr", 3, 0, 1, 2, "maincpu", 0x18000);
5581 	add_internal_slot(config, MSX_SLOT_ROM, "imp", 3, 1, 1, 2, "maincpu", 0x10000);
5582 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 2, 0, 4);  /* 64KB RAM */
5583 	add_internal_slot_mirrored(config, MSX_SLOT_DISK2, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
5584 
5585 	MSX_S1985(config, "s1985", 0);
5586 
5587 	MSX_MATSUSHITA(config, "matsushita", 0);
5588 
5589 	msx_mb8877a(config);
5590 	msx_1_35_dd_drive(config);
5591 	msx2_floplist(config);
5592 
5593 	msx2_cartlist(config);
5594 }
5595 
5596 /* MSX2 - National FS-5500F2*/
5597 /* The National FS-5500 had two versions: */
5598 /* F1 has 1 floppy drive */
5599 /* F2 has 2 floppy drives */
5600 
5601 ROM_START (fs5500f2)
5602 	ROM_REGION (0x30000, "maincpu",0)
5603 	ROM_LOAD ("5500bios.rom", 0x0000, 0x8000, CRC(5bf38e13) SHA1(44e0dd215b2a9f0770dd76fb49187c05b083eed9))
5604 	ROM_LOAD ("5500ext.rom",  0x8000, 0x4000, CRC(3c42c367) SHA1(4be8371f3b03e70ddaca495958345f3c4f8e2d36))
5605 	ROM_LOAD ("5500disk.rom", 0xc000, 0x4000, CRC(1e7d6512) SHA1(78cd7f847e77fd8cd51a647efb2725ba93f4c471))
5606 	ROM_LOAD ("5500imp.rom", 0x10000, 0x8000, CRC(6173a88c) SHA1(b677a861b67e8763a11d5dcf52416b42493ade57))
CRC(b2db6bf5)5607 	ROM_LOAD ("5500kdr.rom", 0x18000, 0x8000, CRC(b2db6bf5) SHA1(3a9a942ed888dd641cddf8deada1879c454df3c6))
5608 	ROM_FILL (0x20000, 0x10000, 0xff)
5609 
5610 	ROM_REGION(0x20000, "kanji", 0)
5611 	ROM_LOAD ("5500kfn.rom", 0, 0x20000, CRC(956dc96d) SHA1(9ed3ab6d893632b9246e91b412cd5db519e7586b))
5612 ROM_END
5613 
5614 void msx2_state::fs5500f2(machine_config &config)
5615 {
5616 	msx2(config);
5617 	// YM2149 in (S-1985 MSX Engine)
5618 	// FDC: mb8877a, 2 3.5" DSDD drive
5619 	// 2 Cartridge slots
5620 	// S-1985 MSX Engine
5621 	// Matsushita switched device
5622 
5623 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
5624 	add_internal_slot(config, MSX_SLOT_ROM, "empty1", 0, 1, 0, 4, "maincpu", 0x20000);
5625 	add_internal_slot(config, MSX_SLOT_ROM, "empty2", 0, 2, 0, 4, "maincpu", 0x20000);
5626 	add_internal_slot(config, MSX_SLOT_ROM, "empty3", 0, 3, 0, 4, "maincpu", 0x20000);
5627 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
5628 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
5629 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
5630 	add_internal_slot(config, MSX_SLOT_ROM, "kdr", 3, 0, 1, 2, "maincpu", 0x18000);
5631 	add_internal_slot(config, MSX_SLOT_ROM, "imp", 3, 1, 1, 2, "maincpu", 0x10000);
5632 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 2, 0, 4);  /* 64KB RAM */
5633 	add_internal_slot_mirrored(config, MSX_SLOT_DISK2, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
5634 
5635 	MSX_S1985(config, "s1985", 0);
5636 
5637 	MSX_MATSUSHITA(config, "matsushita", 0);
5638 
5639 	msx_mb8877a(config);
5640 	msx_2_35_dd_drive(config);
5641 	msx2_floplist(config);
5642 
5643 	msx2_cartlist(config);
5644 }
5645 
5646 /* MSX2 - Panasonic FS-A1 */
5647 
5648 ROM_START (fsa1)
5649 	ROM_REGION (0x20000, "maincpu",0)
5650 	ROM_LOAD ("a1bios.rom",   0x0000, 0x8000, CRC(9b3e7b97) SHA1(0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd))
5651 	ROM_LOAD ("a1ext.rom",    0x8000, 0x4000, CRC(43e7a7fc) SHA1(0fbd45ef3dd7bb82d4c31f1947884f411f1ca344))
5652 	ROM_LOAD ("a1desk1.rom", 0x10000, 0x8000, CRC(99c48147) SHA1(63098f27beac9eca6b39d837d2a552395df33fe1))
5653 	ROM_LOAD ("a1desk2.rom", 0x18000, 0x8000, CRC(7f6f4aa1) SHA1(7f5b76605e3d898cc4b5aacf1d7682b82fe84353))
5654 ROM_END
5655 
fsa1(machine_config & config)5656 void msx2_state::fsa1(machine_config &config)
5657 {
5658 	msx2(config);
5659 	// AY8910/YM2149?
5660 	// FDC: None, 0 drives
5661 	// 2 Cartridge slots
5662 
5663 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
5664 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
5665 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
5666 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4);  /* 64 KB RAM */
5667 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
5668 	add_internal_slot(config, MSX_SLOT_ROM, "desk1", 3, 2, 1, 2, "maincpu", 0x10000);
5669 	add_internal_slot(config, MSX_SLOT_ROM, "desk2", 3, 3, 1, 2, "maincpu", 0x18000);
5670 
5671 	msx2_cartlist(config);
5672 }
5673 
5674 /* MSX2 - Panasonic FS-A1 (a) */
5675 
5676 ROM_START (fsa1a)
5677 	ROM_REGION (0x1c000, "maincpu",0)
5678 	ROM_LOAD ("a1bios.rom",   0x0000, 0x8000, CRC(9b3e7b97) SHA1(0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd))
5679 	ROM_LOAD ("a1ext.rom",    0x8000, 0x4000, CRC(43e7a7fc) SHA1(0fbd45ef3dd7bb82d4c31f1947884f411f1ca344))
5680 	ROM_LOAD ("a1desk1a.rom", 0xc000, 0x8000, CRC(25b5b170) SHA1(d9307bfdaab1312d25e38af7c0d3a7671a9f716b))
5681 	ROM_LOAD ("a1desk2.rom", 0x14000, 0x8000, CRC(7f6f4aa1) SHA1(7f5b76605e3d898cc4b5aacf1d7682b82fe84353))
5682 ROM_END
5683 
fsa1a(machine_config & config)5684 void msx2_state::fsa1a(machine_config &config)
5685 {
5686 	msx2(config);
5687 	// AY8910/YM2149?
5688 	// FDC: None, 0 drives
5689 	// 2 Cartridge slots
5690 
5691 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
5692 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
5693 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
5694 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4);  /* 64KB RAM */
5695 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
5696 	add_internal_slot(config, MSX_SLOT_ROM, "desk1", 3, 2, 1, 2, "maincpu", 0xc000);
5697 	add_internal_slot(config, MSX_SLOT_ROM, "desk2", 3, 3, 1, 2, "maincpu", 0x14000);
5698 
5699 	msx2_cartlist(config);
5700 }
5701 
5702 /* MSX2 - Panasonic FS-A1F */
5703 
5704 ROM_START (fsa1f)
5705 	ROM_REGION (0x20000, "maincpu",0)
5706 	ROM_LOAD ("a1fbios.rom",  0x0000, 0x8000, CRC(9b3e7b97) SHA1(0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd))
5707 	ROM_LOAD ("a1fext.rom",   0x8000, 0x4000, CRC(43e7a7fc) SHA1(0fbd45ef3dd7bb82d4c31f1947884f411f1ca344))
CRC(e25cacca)5708 	ROM_LOAD ("a1fdisk.rom",  0xc000, 0x4000, CRC(e25cacca) SHA1(607cfca605eaf82e3efa33459d6583efb7ecc13b))
5709 	ROM_LOAD ("a1fkdr.rom",  0x10000, 0x8000, CRC(2dbea5ec) SHA1(ea35cc2cad9cfdf56cae224d8ee41579de37f000))
5710 	ROM_LOAD ("a1fcock.rom", 0x18000, 0x8000, CRC(5c2948cd) SHA1(4a99f2444f29c2b642efd6f084081d6fd96bfa9b))
5711 
5712 	ROM_REGION(0x20000, "kanji", 0)
5713 	ROM_LOAD ("a1fkfn.rom", 0, 0x20000, CRC(c61ddc5d) SHA1(5e872d5853698731a0ed22fb72dbcdfd59cd19c3))
5714 ROM_END
5715 
5716 void msx2_state::fsa1f(machine_config &config)
5717 {
5718 	msx2(config);
5719 	// AY8910/YM2149?
5720 	// FDC: tc8566af, 1 3.5" DSDD drive
5721 	// 2 Cartridge slots
5722 
5723 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
5724 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
5725 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
5726 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000).set_ramio_bits(0x80);   /* 64KB Mapper RAM */
5727 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
5728 	add_internal_slot(config, MSX_SLOT_ROM, "fkdr", 3, 1, 1, 2, "maincpu", 0x10000);
5729 	add_internal_slot(config, MSX_SLOT_DISK3, "disk", 3, 2, 1, 1, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
5730 	add_internal_slot(config, MSX_SLOT_ROM, "fcock", 3, 3, 1, 2, "maincpu", 0x18000);
5731 
5732 	msx_tc8566af(config);
5733 	msx_1_35_dd_drive(config);
5734 	msx2_floplist(config);
5735 
5736 	msx2_cartlist(config);
5737 }
5738 
5739 /* MSX2 - Panasonic FS-A1FM */
5740 
5741 ROM_START (fsa1fm)
5742 	ROM_REGION (0x110000, "maincpu",0)
5743 	ROM_LOAD ("a1fmbios.rom",  0x0000,   0x8000, CRC(9b3e7b97) SHA1(0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd))
CRC(ad295b5d)5744 	ROM_LOAD ("a1fmext.rom",   0x8000,   0x4000, CRC(ad295b5d) SHA1(d552319a19814494e3016de4b8f010e8f7b97e02))
5745 	ROM_LOAD ("a1fmdisk.rom",  0xc000,   0x4000, CRC(e25cacca) SHA1(607cfca605eaf82e3efa33459d6583efb7ecc13b))
5746 	ROM_LOAD ("a1fmfirm.rom", 0x10000, 0x100000, CRC(8ce0ece7) SHA1(f89e3d8f3b6855c29d71d3149cc762e0f6918ad5))
5747 
5748 	ROM_REGION(0x20000, "kanji", 0)
5749 	ROM_LOAD ("a1fmkfn.rom", 0, 0x20000, CRC(c61ddc5d) SHA1(5e872d5853698731a0ed22fb72dbcdfd59cd19c3))
5750 
5751 	/* Matsushita 12 dots Kanji ROM must be emulated */
5752 	ROM_REGION(0x20000, "kanji12", 0)
5753 	ROM_LOAD ("a1fmkf12.rom", 0, 0x20000, CRC(340d1ef7) SHA1(a7a23dc01314e88381eee88b4878b39931ab4818))
5754 ROM_END
5755 
5756 void msx2_state::fsa1fm(machine_config &config)
5757 {
5758 	msx2(config);
5759 	// AY8910/YM2149?
5760 	// FDC: tc8566af, 1 3.5" DSDD drive
5761 	// 2 Cartridge slots
5762 	// Integrated 1200baud modem
5763 
5764 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
5765 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
5766 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
5767 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000).set_ramio_bits(0x80);   /* 64KB Mapper RAM */
5768 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
5769 /*  MSX_LAYOUT_SLOT (3, 1, 1, 4, MODEM_ROM, 0x20000, 0x10000) */ /* Modem Mapper of FS-CM1/A1FM must be emulated */
5770 	add_internal_slot(config, MSX_SLOT_DISK3, "disk", 3, 2, 1, 1, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
5771 /*  MSX_LAYOUT_SLOT (3, 3, 0, 4, FSA1FM_ROM, 0x100000, 0x10000) */ /* Panasonic FS-A1FM Mapper must be emulated */
5772 
5773 	msx_tc8566af(config);
5774 	msx_1_35_dd_drive(config);
5775 	msx2_floplist(config);
5776 
5777 	msx2_cartlist(config);
5778 }
5779 
5780 /* MSX2 - Panasonic FS-A1MK2 */
5781 
5782 ROM_START (fsa1mk2)
5783 	ROM_REGION (0x20000, "maincpu",0)
5784 	ROM_LOAD ("a1mkbios.rom",  0x0000, 0x8000, CRC(9b3e7b97) SHA1(0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd))
5785 	ROM_LOAD ("a1mk2ext.rom",  0x8000, 0x4000, CRC(43e7a7fc) SHA1(0fbd45ef3dd7bb82d4c31f1947884f411f1ca344))
5786 	ROM_LOAD ("a1mkcoc1.rom",  0xc000, 0x8000, CRC(0eda3f57) SHA1(2752cd89754c05abdf7c23cba132d38e3ef0f27d))
5787 	ROM_LOAD ("a1mkcoc2.rom", 0x14000, 0x4000, CRC(756d7128) SHA1(e194d290ebfa4595ce0349ea2fc15442508485b0))
CRC(c1945676)5788 	ROM_LOAD ("a1mkcoc3.rom", 0x18000, 0x8000, CRC(c1945676) SHA1(a3f4e2e4934074925d775afe30ac72f150ede543))
5789 ROM_END
5790 
5791 void msx2_state::fsa1mk2(machine_config &config)
5792 {
5793 	msx2(config);
5794 	// AY8910/YM2149?
5795 	// FDC: None, 0 drives
5796 	// 2 Cartridge slots
5797 
5798 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
5799 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
5800 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
5801 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000).set_ramio_bits(0x80);   /* 64 KB Mapper RAM */
5802 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
5803 	add_internal_slot(config, MSX_SLOT_ROM, "coc1", 3, 1, 1, 2, "maincpu", 0xc000);
5804 	add_internal_slot(config, MSX_SLOT_ROM, "coc2", 3, 2, 1, 1, "maincpu", 0x14000);
5805 	add_internal_slot(config, MSX_SLOT_ROM, "coc3", 3, 3, 1, 2, "maincpu", 0x18000);
5806 
5807 	msx2_cartlist(config);
5808 }
5809 
5810 /* MSX2 - Philips NMS-8220 - 2 possible sets (/00 /16) */
5811 
5812 ROM_START (nms8220)
5813 	ROM_REGION (0x10000, "maincpu", 0)
5814 	ROM_LOAD ("8220bios.rom.u14", 0x0000, 0x8000, BAD_DUMP CRC(6cdaf3a5) SHA1(6103b39f1e38d1aa2d84b1c3219c44f1abb5436e))
5815 	ROM_LOAD ("8220ext.rom.u14",  0x8000, 0x4000, BAD_DUMP CRC(06e4f5e6) SHA1(f5eb0a396097572589f2a6efeed045044e9425e4))
5816 	ROM_LOAD ("8220pen.rom.u13",  0xc000, 0x4000, CRC(3d38c53e) SHA1(cb754aed85b3e97a7d3c5894310df7ca18f89f41))
5817 ROM_END
5818 
nms8220(machine_config & config)5819 void msx2_state::nms8220(machine_config &config)
5820 {
5821 	msx2_pal(config);
5822 	// YM2149 (in S-3527 MSX Engine)
5823 	// FDC: None, 0 drives
5824 	// 2 Cartridge slots
5825 	// S-3527 MSX Engine
5826 
5827 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
5828 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
5829 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
5830 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
5831 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x10000).set_ramio_bits(0xf8);   /* 64KB Mapper RAM */
5832 	add_internal_slot(config, MSX_SLOT_ROM, "pen", 3, 3, 1, 1, "maincpu", 0xc000);
5833 
5834 	msx2_cartlist(config);
5835 }
5836 
5837 /* MSX2 - Philips NMS-8220 (a) */
5838 
5839 ROM_START (nms8220a)
5840 	ROM_REGION (0x10000, "maincpu", 0)
5841 	ROM_LOAD ("8220bios.rom.u14", 0x0000, 0x8000, BAD_DUMP CRC(6cdaf3a5) SHA1(6103b39f1e38d1aa2d84b1c3219c44f1abb5436e))
5842 	ROM_LOAD ("8220ext.rom.u14",  0x8000, 0x4000, BAD_DUMP CRC(06e4f5e6) SHA1(f5eb0a396097572589f2a6efeed045044e9425e4))
5843 	ROM_LOAD ("8220pena.rom.u13", 0xc000, 0x4000, CRC(17817b5a) SHA1(5df95d033ae70b107697b69470126ce1b7ae9eb5))
5844 ROM_END
5845 
nms8220a(machine_config & config)5846 void msx2_state::nms8220a(machine_config &config)
5847 {
5848 	msx2_pal(config);
5849 	// YM2149 (in S-3527 MSX Engine)
5850 	// FDC: None, 0 drives
5851 	// 2 Cartridge slots
5852 	// S-3527 MSX Engine
5853 
5854 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
5855 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
5856 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
5857 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
5858 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x10000).set_ramio_bits(0xf8);   /* 64KB Mapper RAM */
5859 	add_internal_slot(config, MSX_SLOT_ROM, "pen", 3, 3, 1, 1, "maincpu", 0xc000);
5860 
5861 	msx2_cartlist(config);
5862 }
5863 
5864 /* MSX2 - Philips NMS-8245 - 2 possible sets (/00 /16) */
5865 /* /00 - A16 = 0 */
5866 /* /16 - A16 = 1 */
5867 /* /19 - Azerty keyboard */
5868 
5869 ROM_START (nms8245)
5870 	ROM_REGION (0x20000, "maincpu", 0)
5871 	ROM_LOAD ("nms8245.u7", 0x0000, 0x20000, BAD_DUMP CRC(0c827d5f) SHA1(064e706cb1f12b99b329944ceeedc0efc3b2d9be))
5872 ROM_END
5873 
nms8245(machine_config & config)5874 void msx2_state::nms8245(machine_config &config)
5875 {
5876 	msx2_pal(config);
5877 	// XTAL: 21328.1 (different from default)
5878 	// YM2149 (in S-3527 MSX Engine)
5879 	// FDC: wd2793, 1 3.5" DSDD drive
5880 	// 2 Cartridge slots
5881 	// S-3527 MSX Engine
5882 
5883 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
5884 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
5885 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
5886 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
5887 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0xf8);   /* 128KB Mapper RAM */
5888 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
5889 
5890 	msx_wd2793_force_ready(config);
5891 	msx_1_35_dd_drive(config);
5892 	msx2_floplist(config);
5893 
5894 	msx2_cartlist(config);
5895 }
5896 
5897 /* MSX2 - Philips NMS-8245F */
5898 /* NMS-8245/19? */
5899 
5900 ROM_START (nms8245f)
5901 	ROM_REGION (0x20000, "maincpu", 0)
5902 	ROM_LOAD ("nms8245.u7", 0x0000, 0x20000, BAD_DUMP CRC(0c827d5f) SHA1(064e706cb1f12b99b329944ceeedc0efc3b2d9be))
5903 ROM_END
5904 
nms8245f(machine_config & config)5905 void msx2_state::nms8245f(machine_config &config)
5906 {
5907 	msx2_pal(config);
5908 	// YM2149 (in S-3527 MSX Engine)
5909 	// FDC: wd2793, 1 3.5" DSDD drive
5910 	// 2 Cartridge slots
5911 	// S-3527 MSX Engine
5912 
5913 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x10000);
5914 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
5915 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
5916 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x18000);
5917 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0xf8);   /* 128KB Mapper RAM */
5918 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 3, 1, 2, "maincpu", 0x1c000).set_tags("fdc", "fdc:0", "fdc:1");
5919 
5920 	msx_wd2793_force_ready(config);
5921 	msx_1_35_dd_drive(config);
5922 	msx2_floplist(config);
5923 
5924 	msx2_cartlist(config);
5925 }
5926 
5927 /* MSX2 - Philips NMS-8250 */
5928 /* Labels taken from an NMS-8250/00 */
5929 
5930 ROM_START (nms8250)
5931 	ROM_REGION (0x10000, "maincpu", 0)
5932 	ROM_LOAD ("d23c256eac.ic119", 0x0000, 0x8000, CRC(6cdaf3a5) SHA1(6103b39f1e38d1aa2d84b1c3219c44f1abb5436e))
5933 	ROM_LOAD ("d23128ec.ic118",   0x8000, 0x4000, CRC(66237ecf) SHA1(5c1f9c7fb655e43d38e5dd1fcc6b942b2ff68b02))
CRC(ca3307d3)5934 	ROM_LOAD ("jq00014.ic117",    0xc000, 0x4000, CRC(ca3307d3) SHA1(c3efedda7ab947a06d9345f7b8261076fa7ceeef))
5935 ROM_END
5936 
5937 void msx2_state::nms8250(machine_config &config)
5938 {
5939 	msx2_pal(config);
5940 	// YM2149 (in S-3527 MSX Engine)
5941 	// FDC: wd2793, 1 3.5" DSDD drive
5942 	// 2 Cartridge slots
5943 	// S-3527 MSX Engine
5944 
5945 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
5946 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
5947 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
5948 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
5949 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0xf8);   /* 128KB Mapper RAM */
5950 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
5951 
5952 	msx_wd2793_force_ready(config);
5953 	msx_1_35_dd_drive(config);
5954 	msx2_floplist(config);
5955 
5956 	msx2_cartlist(config);
5957 }
5958 
5959 /* MSX2 - Philips NMS-8250F */
5960 
5961 ROM_START (nms8250f)
5962 	ROM_REGION (0x10000, "maincpu", 0)
5963 	ROM_LOAD ("nms8250fbios.rom", 0x0000, 0x8000, CRC(5cd35ced) SHA1(b034764e6a8978db60b1d652917f5e24a66a7925))
5964 	ROM_LOAD ("nms8250fext.rom",  0x8000, 0x4000, CRC(781ba055) SHA1(fd4bcc81a8160a1dea06036c5f79d200f948f4d6))
5965 	ROM_LOAD ("nms8250fdisk.rom", 0xc000, 0x4000, CRC(13b60725) SHA1(58ba1887e8fd21c912b6859cae6514bd874ffcca))
5966 ROM_END
5967 
nms8250f(machine_config & config)5968 void msx2_state::nms8250f(machine_config &config)
5969 {
5970 	msx2_pal(config);
5971 	// YM2149 (in S-3527 MSX Engine)
5972 	// FDC: wd2793, 1 3.5" DSDD drive
5973 	// 2 Cartridge slots
5974 	// S-3527 MSX Engine
5975 
5976 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
5977 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
5978 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
5979 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
5980 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0xf8);   /* 128KB Mapper RAM */
5981 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
5982 
5983 	msx_wd2793_force_ready(config);
5984 	msx_1_35_dd_drive(config);
5985 	msx2_floplist(config);
5986 
5987 	msx2_cartlist(config);
5988 }
5989 
5990 /* MSX2 - Philips NMS-8250J */
5991 
5992 ROM_START (nms8250j)
5993 	ROM_REGION (0x10000, "maincpu", 0)
5994 	ROM_LOAD ("8250jbios.rom", 0x0000, 0x8000, CRC(9b3e7b97) SHA1(0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd))
5995 	ROM_LOAD ("8250jext.rom",  0x8000, 0x4000, CRC(4a48779c) SHA1(b8e30d604d319d511cbfbc61e5d8c38fbb9c5a33))
CRC(ca3307d3)5996 	ROM_LOAD ("8250jdisk.rom", 0xc000, 0x4000, CRC(ca3307d3) SHA1(c3efedda7ab947a06d9345f7b8261076fa7ceeef))
5997 
5998 	ROM_REGION(0x20000, "kanji", 0)
5999 	ROM_LOAD ("8250jkfn.rom", 0x00000, 0x20000, CRC(5a59926e) SHA1(6acaf2eeb57f65f7408235d5e07b7563229de799))
6000 ROM_END
6001 
6002 void msx2_state::nms8250j(machine_config &config)
6003 {
6004 	msx2(config);
6005 	// AY8910/YM2149?
6006 	// FDC: wd2793?, 1 3.5" DSDD drive
6007 	// 2 Cartridge slots?
6008 
6009 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
6010 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
6011 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
6012 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
6013 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000);   /* 128KB Mapper RAM */
6014 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
6015 
6016 	msx_wd2793_force_ready(config);
6017 	msx_1_35_dd_drive(config);
6018 	msx2_floplist(config);
6019 
6020 	msx2_cartlist(config);
6021 }
6022 
6023 /* MSX2 - Philips NMS-8255 */
6024 
6025 ROM_START (nms8255)
6026 	ROM_REGION (0x10000, "maincpu", 0)
6027 	ROM_LOAD ("8255bios.rom.ic119", 0x0000, 0x8000, CRC(6cdaf3a5) SHA1(6103b39f1e38d1aa2d84b1c3219c44f1abb5436e))
6028 	ROM_LOAD ("8255ext.rom.ic118",  0x8000, 0x4000, CRC(66237ecf) SHA1(5c1f9c7fb655e43d38e5dd1fcc6b942b2ff68b02))
CRC(ca3307d3)6029 	ROM_LOAD ("8255disk.rom.ic117", 0xc000, 0x4000, CRC(ca3307d3) SHA1(c3efedda7ab947a06d9345f7b8261076fa7ceeef))
6030 ROM_END
6031 
6032 void msx2_state::nms8255(machine_config &config)
6033 {
6034 	msx2_pal(config);
6035 	// YM2149 (in S-3527 MSX Engine)
6036 	// FDC: wd2793, 2 3.5" DSDD drives
6037 	// 2 Cartridge slots
6038 	// S-3527 MSX Engine
6039 
6040 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
6041 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
6042 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
6043 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
6044 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0xf8);   /* 128KB Mapper RAM */
6045 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
6046 
6047 	msx_wd2793_force_ready(config);
6048 	msx_2_35_dd_drive(config);
6049 	msx2_floplist(config);
6050 
6051 	msx2_cartlist(config);
6052 }
6053 
6054 /* MSX2 - Philips NMS-8255F */
6055 
6056 ROM_START (nms8255f)
6057 	ROM_REGION (0x10000, "maincpu", 0)
6058 	ROM_LOAD ("nms8255fbios.rom", 0x0000, 0x8000, CRC(5cd35ced) SHA1(b034764e6a8978db60b1d652917f5e24a66a7925))
6059 	ROM_LOAD ("nms8255fext.rom",  0x8000, 0x4000, CRC(781ba055) SHA1(fd4bcc81a8160a1dea06036c5f79d200f948f4d6))
6060 	ROM_LOAD ("nms8255fdisk.rom", 0xc000, 0x4000, CRC(13b60725) SHA1(58ba1887e8fd21c912b6859cae6514bd874ffcca))
6061 ROM_END
6062 
nms8255f(machine_config & config)6063 void msx2_state::nms8255f(machine_config &config)
6064 {
6065 	msx2_pal(config);
6066 	// YM2149 (in S-3527 MSX Engine)
6067 	// FDC: wd2793, 2 3.5" DSDD drives
6068 	// 2 Cartridge slots
6069 	// S-3527 MSX Engine
6070 
6071 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
6072 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
6073 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
6074 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
6075 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0xf8);   /* 128KB Mapper RAM */
6076 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
6077 
6078 	msx_wd2793_force_ready(config);
6079 	msx_2_35_dd_drive(config);
6080 	msx2_floplist(config);
6081 
6082 	msx2_cartlist(config);
6083 }
6084 
6085 /* MSX2 - Philips NMS-8260 */
6086 /* Prototype created by JVC for Philips. Based on an NMS-8250 with the floppy drive removed and replaced with a 20MB JVC harddisk */
6087 
6088 ROM_START (nms8260)
6089 	ROM_REGION (0x14000, "maincpu", 0)
6090 	ROM_LOAD ("nms8260bios.rom", 0x0000, 0x8000, CRC(6cdaf3a5) SHA1(6103b39f1e38d1aa2d84b1c3219c44f1abb5436e))
6091 	ROM_LOAD ("nms8260ext.rom",  0x8000, 0x4000, CRC(66237ecf) SHA1(5c1f9c7fb655e43d38e5dd1fcc6b942b2ff68b02))
CRC(ca3307d3)6092 	ROM_LOAD ("nms8260disk.rom", 0xc000, 0x4000, CRC(ca3307d3) SHA1(c3efedda7ab947a06d9345f7b8261076fa7ceeef))
6093 	ROM_LOAD ("nms8260hdd.rom", 0x10000, 0x4000, CRC(0051afc3) SHA1(77f9fe964f6d8cb8c4af3b5fe63ce6591d5288e6))
6094 ROM_END
6095 
6096 void msx2_state::nms8260(machine_config &config)
6097 {
6098 	msx2_pal(config);
6099 	// YM2149 (in S-3527 MSX Engine)
6100 	// FDC: wd2793, 1 3.5" DSDD drives
6101 	// 2 Cartridge slots
6102 	// S-3527 MSX Engine
6103 
6104 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
6105 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
6106 	add_internal_slot(config, MSX_SLOT_ROM, "hdd", 2, 0, 1, 1, "maincpu", 0x10000);
6107 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
6108 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0xf8);   /* 128KB Mapper RAM */
6109 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
6110 
6111 	// There is actually only an FDC inside the real thing. With a floppy controller to attach an external floppy drive
6112 	msx_wd2793_force_ready(config);
6113 	msx_1_35_dd_drive(config);
6114 	msx2_floplist(config);
6115 
6116 	msx2_cartlist(config);
6117 }
6118 
6119 /* MSX2 - Philips NMS-8270 - Not confirmed to exist yet */
6120 
6121 /* MSX2 - Philips NMS-8280 - 2 possible sets (/00 /16) */
6122 
6123 ROM_START (nms8280)
6124 	ROM_REGION (0x10000, "maincpu", 0)
6125 	ROM_LOAD ("8280bios.rom.ic119", 0x0000, 0x8000, CRC(6cdaf3a5) SHA1(6103b39f1e38d1aa2d84b1c3219c44f1abb5436e))
6126 	ROM_LOAD ("8280ext.rom.ic118",  0x8000, 0x4000, CRC(66237ecf) SHA1(5c1f9c7fb655e43d38e5dd1fcc6b942b2ff68b02))
CRC(ca3307d3)6127 	ROM_LOAD ("8280disk.rom.ic117", 0xc000, 0x4000, CRC(ca3307d3) SHA1(c3efedda7ab947a06d9345f7b8261076fa7ceeef))
6128 ROM_END
6129 
6130 void msx2_state::nms8280(machine_config &config)
6131 {
6132 	msx2_pal(config);
6133 	// AY8910/YM2149?
6134 	// FDC: wd2793, 2 3.5" DSDD drives
6135 	// 2 Cartridge slots
6136 
6137 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
6138 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
6139 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
6140 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
6141 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0xf8);   /* 128KB Mapper RAM */
6142 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
6143 
6144 	msx_wd2793_force_ready(config);
6145 	msx_2_35_dd_drive(config);
6146 	msx2_floplist(config);
6147 
6148 	msx2_cartlist(config);
6149 }
6150 
6151 /* MSX2 - Philips NMS-8280F */
6152 
6153 ROM_START (nms8280f)
6154 	ROM_REGION (0x10000, "maincpu", 0)
6155 	ROM_LOAD ("8280fbios.rom", 0x0000, 0x8000, CRC(5cd35ced) SHA1(b034764e6a8978db60b1d652917f5e24a66a7925))
6156 	ROM_LOAD ("8280fext.rom",  0x8000, 0x4000, CRC(781ba055) SHA1(fd4bcc81a8160a1dea06036c5f79d200f948f4d6))
6157 	ROM_LOAD ("8280fdisk.rom", 0xc000, 0x4000, CRC(13b60725) SHA1(58ba1887e8fd21c912b6859cae6514bd874ffcca))
6158 ROM_END
6159 
nms8280f(machine_config & config)6160 void msx2_state::nms8280f(machine_config &config)
6161 {
6162 	msx2_pal(config);
6163 	// AY8910/YM2149?
6164 	// FDC: wd2793, 2 3.5" DSDD drives
6165 	// 2 Cartridge slots
6166 
6167 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
6168 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
6169 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
6170 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
6171 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0xf8);   /* 128KB Mapper RAM */
6172 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
6173 
6174 	msx_wd2793_force_ready(config);
6175 	msx_2_35_dd_drive(config);
6176 	msx2_floplist(config);
6177 
6178 	msx2_cartlist(config);
6179 }
6180 
6181 /* MSX2 - Philips NMS-8280G */
6182 
6183 ROM_START (nms8280g)
6184 	ROM_REGION (0x10000, "maincpu", 0)
6185 	ROM_LOAD ("8280gbios.rom.ic119", 0x0000, 0x8000, CRC(8fa060e2) SHA1(b17d9bea0eb16a1aa2d0ccbd7c9488da9f57698e))
6186 	ROM_LOAD ("8280gext.rom.ic118",  0x8000, 0x4000, CRC(41e36d03) SHA1(4ab7b2030d022f5486abaab22aaeaf8aa23e05f3))
CRC(d0beebb8)6187 	ROM_LOAD ("8280gdisk.rom.ic117", 0xc000, 0x4000, CRC(d0beebb8) SHA1(d1001f93c87ff7fb389e418e33bf7bc81bdbb65f))
6188 ROM_END
6189 
6190 void msx2_state::nms8280g(machine_config &config)
6191 {
6192 	msx2_pal(config);
6193 	// AY8910/YM2149?
6194 	// FDC: wd2793, 2 3.5" DSDD drives
6195 	// 2 Cartridge slots
6196 
6197 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
6198 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
6199 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
6200 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
6201 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0xf8);   /* 128KB Mapper RAM */
6202 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
6203 
6204 	msx_wd2793_force_ready(config);
6205 	msx_2_35_dd_drive(config);
6206 	msx2_floplist(config);
6207 
6208 	msx2_cartlist(config);
6209 }
6210 
6211 /* MSX2 - Philips VG-8230 (u11 - exp, u12 - basic, u13 - disk */
6212 
6213 ROM_START (vg8230)
6214 	ROM_REGION (0x10000, "maincpu", 0)
CRC(b31c851d)6215 	ROM_LOAD ("8230bios.rom.u12", 0x0000, 0x8000, CRC(b31c851d) SHA1(0de3c802057560560a03d7965fcc4cff69f8575c))
6216 	ROM_LOAD ("8230ext.rom.u11",  0x8000, 0x4000, CRC(8f84f783) SHA1(3288894e1be6af705871499b23c85732dbc40993))
6217 	ROM_LOAD ("8230disk.rom.u13", 0xc000, 0x4000, CRC(77c4e5bc) SHA1(849f93867ff7846b27f84d0be418569faf058ac2))
6218 ROM_END
6219 
6220 void msx2_state::vg8230(machine_config &config)
6221 {
6222 	msx2_pal(config);
6223 	// YM2149 (in S-3527 MSX Engine)
6224 	// FDC: wd2793, 1 3.5" SSDD drive
6225 	// 2 Cartridge slots
6226 	// S-3527 MSX Engine
6227 
6228 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
6229 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
6230 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
6231 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
6232 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x10000).set_ramio_bits(0xf8);   /* 64KB Mapper RAM */
6233 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
6234 
6235 	msx_wd2793_force_ready(config);
6236 	msx_1_35_ssdd_drive(config);
6237 	msx2_floplist(config);
6238 
6239 	msx2_cartlist(config);
6240 }
6241 
6242 /* MSX2 - Philips VG-8230J */
6243 
6244 ROM_START (vg8230j)
6245 	ROM_REGION (0x10000, "maincpu", 0)
6246 	ROM_LOAD ("8230jbios.rom", 0x0000, 0x8000, CRC(9b3e7b97) SHA1(0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd))
6247 	ROM_LOAD ("8230jext.rom",  0x8000, 0x4000, CRC(4a48779c) SHA1(b8e30d604d319d511cbfbc61e5d8c38fbb9c5a33))
6248 	ROM_LOAD ("8230jdisk.rom", 0xc000, 0x4000, CRC(7639758a) SHA1(0f5798850d11b316a4254b222ca08cc4ad6d4da2))
6249 
6250 	ROM_REGION(0x20000, "kanji", 0)
6251 	ROM_LOAD ("8230jkfn.rom", 0x00000, 0x20000, CRC(5a59926e) SHA1(6acaf2eeb57f65f7408235d5e07b7563229de799))
6252 ROM_END
6253 
vg8230j(machine_config & config)6254 void msx2_state::vg8230j(machine_config &config)
6255 {
6256 	msx2(config);
6257 	// AY8910/YM2149?
6258 	// FDC: wd2793?, 1 3.5" SSDD drive?
6259 	// 2 Cartridge slots?
6260 
6261 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
6262 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
6263 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
6264 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
6265 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000);   /* 128KB Mapper RAM */
6266 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
6267 
6268 	msx_wd2793_force_ready(config);
6269 	msx_1_35_ssdd_drive(config);
6270 	msx2_floplist(config);
6271 
6272 	msx2_cartlist(config);
6273 }
6274 
6275 /* MSX2 - Philips VG-8235 3 psosible basic and ext roms (/00 /02 /19) */
6276 
6277 ROM_START (vg8235)
6278 	ROM_REGION (0x10000, "maincpu", 0)
6279 	ROM_LOAD ("8235bios.rom.u48", 0x0000, 0x8000, CRC(6cdaf3a5) SHA1(6103b39f1e38d1aa2d84b1c3219c44f1abb5436e))
6280 	ROM_LOAD ("8235ext.rom.u49",  0x8000, 0x4000, CRC(66237ecf) SHA1(5c1f9c7fb655e43d38e5dd1fcc6b942b2ff68b02))
6281 	ROM_LOAD ("8235disk.rom.u50", 0xc000, 0x4000, CRC(51daeb25) SHA1(8954e59aa79310c7b719ecf0cde1e82fb731dcd1))
6282 ROM_END
6283 
vg8235(machine_config & config)6284 void msx2_state::vg8235(machine_config &config)
6285 {
6286 	msx2_pal(config);
6287 	// YM2149 (in S-3527 MSX Engine)
6288 	// FDC: wd2793, 1 3.5" SSDD drive
6289 	// 2 Cartridge slots
6290 	// S-3527 MSX Engine
6291 
6292 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
6293 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
6294 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
6295 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
6296 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0xf8);   /* 128KB Mapper RAM */
6297 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
6298 
6299 	msx_wd2793_force_ready(config);
6300 	msx_1_35_ssdd_drive(config);
6301 	msx2_floplist(config);
6302 
6303 	msx2_cartlist(config);
6304 }
6305 
6306 /* MSX2 - Philips VG-8235F */
6307 
6308 ROM_START (vg8235f)
6309 	ROM_REGION (0x10000, "maincpu", 0)
CRC(c0577a50)6310 	ROM_LOAD ("8235fbios.rom.u48", 0x0000, 0x8000, CRC(c0577a50) SHA1(3926cdd91fa89657a811463e48cfbdb350676e51))
6311 	ROM_LOAD ("8235fext.rom.u49",  0x8000, 0x4000, CRC(e235d5c8) SHA1(792e6b2814ab783d06c7576c1e3ccd6a9bbac34a))
6312 	ROM_LOAD ("8235fdisk.rom.u50", 0xc000, 0x4000, CRC(77c4e5bc) SHA1(849f93867ff7846b27f84d0be418569faf058ac2))
6313 ROM_END
6314 
6315 void msx2_state::vg8235f(machine_config &config)
6316 {
6317 	msx2_pal(config);
6318 	// YM2149 (in S-3527 MSX Engine)
6319 	// FDC: wd2793, 1 3.5" SSDD drive
6320 	// 2 Cartridge slots
6321 	// S-3527 MSX Engine
6322 
6323 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
6324 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
6325 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
6326 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
6327 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0xf8);   /* 128KB Mapper RAM */
6328 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
6329 
6330 	msx_wd2793_force_ready(config);
6331 	msx_1_35_ssdd_drive(config);
6332 	msx2_floplist(config);
6333 
6334 	msx2_cartlist(config);
6335 }
6336 
6337 /* MSX2 - Philips VG-8240 */
6338 
6339 ROM_START (vg8240)
6340 	ROM_REGION (0x10000, "maincpu", 0)
6341 	ROM_LOAD ("8240bios.rom", 0x0000, 0x8000, CRC(6cdaf3a5) SHA1(6103b39f1e38d1aa2d84b1c3219c44f1abb5436e))
6342 	ROM_LOAD ("8240ext.rom",  0x8000, 0x4000, CRC(66237ecf) SHA1(5c1f9c7fb655e43d38e5dd1fcc6b942b2ff68b02))
CRC(ca3307d3)6343 	ROM_LOAD ("8240disk.rom", 0xc000, 0x4000, CRC(ca3307d3) SHA1(c3efedda7ab947a06d9345f7b8261076fa7ceeef))
6344 ROM_END
6345 
6346 void msx2_state::vg8240(machine_config &config)
6347 {
6348 	msx2_pal(config);
6349 	// AY8910/YM2149?
6350 	// FDC: wd2793, 1 3.5" DSDD drive
6351 	// 2 Cartridge slots?
6352 
6353 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
6354 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
6355 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
6356 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
6357 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x10000).set_ramio_bits(0xf8);   /* 64KB Mapper RAM */
6358 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
6359 
6360 	msx_wd2793_force_ready(config);
6361 	msx_1_35_dd_drive(config);
6362 	msx2_floplist(config);
6363 
6364 	msx2_cartlist(config);
6365 }
6366 
6367 /* MSX2 - Sanyo MPC-2300 */
6368 
6369 ROM_START (mpc2300)
6370 	ROM_REGION (0xc000, "maincpu", 0)
CRC(e7d08e29)6371 	ROM_LOAD ("2300bios.rom", 0x0000, 0x8000, CRC(e7d08e29) SHA1(0f851ee7a1cf79819f61cc89e9948ee72a413802))
6372 	ROM_LOAD ("2300ext.rom",  0x8000, 0x4000, CRC(3d7dc718) SHA1(e1f834b28c3ee7c9f79fe6fbf2b23c8a0617892b))
6373 ROM_END
6374 
6375 void msx2_state::mpc2300(machine_config &config)
6376 {
6377 	msx2(config);
6378 	// AY8910/YM2149?
6379 	// FDC: None, 0 drives
6380 	// 2 Cartridge slots?
6381 
6382 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
6383 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
6384 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
6385 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x20000);   /* 128KB?? Mapper RAM */
6386 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
6387 
6388 	msx2_cartlist(config);
6389 }
6390 
6391 /* MSX2 - Sanyo MPC-2500FD */
6392 
6393 ROM_START (mpc2500f)
6394 	ROM_REGION (0x10000, "maincpu", 0)
CRC(e7d08e29)6395 	ROM_LOAD ("mpc2500fdbios.rom", 0x0000, 0x8000, CRC(e7d08e29) SHA1(0f851ee7a1cf79819f61cc89e9948ee72a413802))
6396 	ROM_LOAD ("mpc2500fdext.rom",  0x8000, 0x4000, CRC(3d7dc718) SHA1(e1f834b28c3ee7c9f79fe6fbf2b23c8a0617892b))
6397 	ROM_LOAD ("mpc2500fddisk.rom", 0xc000, 0x4000, CRC(38454059) SHA1(58ac78bba29a06645ca8d6a94ef2ac68b743ad32))
6398 ROM_END
6399 
6400 void msx2_state::mpc2500f(machine_config &config)
6401 {
6402 	msx2(config);
6403 	// YM2149
6404 	// FDC: wd2793?, 1? 3.5" DSDD drive?
6405 	// 2 Cartridge slots?
6406 	// S-3527 MSX Eninge
6407 
6408 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
6409 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
6410 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
6411 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 2, 3, 0, 1, "maincpu", 0x8000);
6412 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 1, 1, 2, "maincpu", 0xC000).set_tags("fdc", "fdc:0", "fdc:1");
6413 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x10000);   /* 64KB?? Mapper RAM */
6414 
6415 	msx_wd2793_force_ready(config);
6416 	msx_1_35_dd_drive(config);
6417 	msx2_floplist(config);
6418 
6419 	msx2_cartlist(config);
6420 }
6421 
6422 /* MSX2 - Sanyo Wavy MPC-25FD */
6423 
6424 ROM_START (mpc25fd)
6425 	ROM_REGION (0x10000, "maincpu", 0)
6426 	ROM_LOAD ("25fdbios.rom", 0x0000, 0x8000, CRC(9b3e7b97) SHA1(0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd))
6427 	ROM_LOAD ("25fdext.rom",  0x8000, 0x4000, CRC(4a48779c) SHA1(b8e30d604d319d511cbfbc61e5d8c38fbb9c5a33))
6428 	ROM_LOAD ("25fddisk.rom", 0xc000, 0x4000, CRC(38454059) SHA1(58ac78bba29a06645ca8d6a94ef2ac68b743ad32))
6429 ROM_END
6430 
mpc25fd(machine_config & config)6431 void msx2_state::mpc25fd(machine_config &config)
6432 {
6433 	msx2(config);
6434 	// YM2149 (in S-3527 MSX Engine)
6435 	// FDC: wd2793, 1 drive
6436 	// 1 Cartridge slot (slot 1)
6437 	// S-3527 MSX Engine
6438 
6439 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
6440 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot", 1, 0, msx_cart, nullptr);
6441 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 2, 3, 0, 1, "maincpu", 0x8000);
6442 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 1, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
6443 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000);   /* 128KB?? RAM */
6444 
6445 	msx_wd2793_force_ready(config);
6446 	msx_1_35_dd_drive(config);
6447 	msx2_floplist(config);
6448 
6449 	msx2_cartlist(config);
6450 }
6451 
6452 /* MSX2 - Sanyo Wavy MPC-27 */
6453 
6454 ROM_START (mpc27)
6455 	ROM_REGION (0x14000, "maincpu", 0)
CRC(ba81b3dd)6456 	ROM_LOAD ("mpc27bios.rom", 0x0000, 0x8000, CRC(ba81b3dd) SHA1(4ce41fcc1a603411ec4e99556409c442078f0ecf))
6457 	ROM_LOAD ("mpc27ext.rom",  0x8000, 0x4000, CRC(90ca25b5) SHA1(fd9fa78bac25aa3c0792425b21d14e364cf7eea4))
6458 	ROM_LOAD ("mpc27disk.rom", 0xc000, 0x4000, CRC(38454059) SHA1(58ac78bba29a06645ca8d6a94ef2ac68b743ad32))
6459 	ROM_LOAD ("mlp27.rom",    0x10000, 0x2000, CRC(8f9e6ba0) SHA1(c3a47480c9dd2235f40f9a53dab68e3c48adca01))
6460 	ROM_RELOAD (0x12000, 0x2000)
6461 ROM_END
6462 
6463 void msx2_state::mpc27(machine_config &config)
6464 {
6465 	msx2(config);
6466 	// YM2149 (in S-3527 MSX Engine)
6467 	// FDC: wd2793?, 1 drive
6468 	// 2 Cartridge slots?
6469 	// S-3527 MSX Engine
6470 
6471 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
6472 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
6473 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
6474 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x20000);   /* 128KB?? RAM */
6475 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
6476 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 2, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
6477 	add_internal_slot(config, MSX_SLOT_ROM, "lpen", 3, 3, 1, 1, "maincpu", 0x10000);
6478 
6479 	msx_wd2793_force_ready(config);
6480 	msx_1_35_dd_drive(config);
6481 	msx2_floplist(config);
6482 
6483 	msx2_cartlist(config);
6484 }
6485 
6486 /* MSX2 - Sanyo Wavy PHC-23 = PHC-23J(B)*/
6487 
6488 ROM_START (phc23)
6489 	ROM_REGION (0xc000, "maincpu",0)
CRC(ba81b3dd)6490 	ROM_LOAD ("23bios.rom", 0x0000, 0x8000, CRC(ba81b3dd) SHA1(4ce41fcc1a603411ec4e99556409c442078f0ecf))
6491 	ROM_LOAD ("23ext.rom",  0x8000, 0x4000, CRC(90ca25b5) SHA1(fd9fa78bac25aa3c0792425b21d14e364cf7eea4))
6492 ROM_END
6493 
6494 void msx2_state::phc23(machine_config &config)
6495 {
6496 	msx2(config);
6497 	// YM2149 (in S-1985 MSX Engine)
6498 	// FDC: None, 0 drives
6499 	// 2 Cartridge slots
6500 	// S-1985 MSX Engine
6501 
6502 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
6503 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
6504 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
6505 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
6506 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 2, 0, 4);  /* 64KB RAM */
6507 
6508 	MSX_S1985(config, "s1985", 0);
6509 
6510 	msx2_cartlist(config);
6511 }
6512 
6513 /* MSX2 - Sanyo Wavy PHC-55FD2 */
6514 
6515 ROM_START (phc55fd2)
6516 	ROM_REGION (0x10000, "maincpu", 0)
CRC(ba81b3dd)6517 	ROM_LOAD ("phc55fd2bios.rom", 0x0000, 0x8000, CRC(ba81b3dd) SHA1(4ce41fcc1a603411ec4e99556409c442078f0ecf))
6518 	ROM_LOAD ("phc55fd2ext.rom",  0x8000, 0x4000, CRC(90ca25b5) SHA1(fd9fa78bac25aa3c0792425b21d14e364cf7eea4))
6519 	ROM_LOAD ("phc55fd2disk.rom", 0xc000, 0x4000, CRC(38454059) SHA1(58ac78bba29a06645ca8d6a94ef2ac68b743ad32))
6520 ROM_END
6521 
6522 void msx2_state::phc55fd2(machine_config &config)
6523 {
6524 	msx2(config);
6525 	// YM2149 (in S-1985 MSX Engine)
6526 	// FDC: wd2793?, 2 3.5" DSDD drives
6527 	// 2 Cartridge slots
6528 	// S-1985 MSX Engine
6529 
6530 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
6531 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
6532 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
6533 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x20000);   /* 128KB RAM */
6534 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
6535 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 2, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
6536 
6537 	MSX_S1985(config, "s1985", 0);
6538 
6539 	msx_wd2793_force_ready(config);
6540 	msx_2_35_dd_drive(config);
6541 	msx2_floplist(config);
6542 
6543 	msx2_cartlist(config);
6544 }
6545 
6546 /* MSX2 - Sanyo Wavy PHC-77 */
6547 
6548 ROM_START (phc77)
6549 	ROM_REGION (0x90000, "maincpu", 0)
CRC(ba81b3dd)6550 	ROM_LOAD ("phc77bios.rom",      0x0000,  0x8000, CRC(ba81b3dd) SHA1(4ce41fcc1a603411ec4e99556409c442078f0ecf))
6551 	ROM_LOAD ("phc77ext.rom",       0x8000,  0x4000, CRC(90ca25b5) SHA1(fd9fa78bac25aa3c0792425b21d14e364cf7eea4))
6552 	ROM_LOAD ("phc77disk.rom",      0xc000,  0x4000, CRC(38454059) SHA1(58ac78bba29a06645ca8d6a94ef2ac68b743ad32))
6553 	ROM_LOAD ("phc77msxwrite.rom", 0x10000, 0x80000, CRC(ef02e4f3) SHA1(4180544158a57c99162269e33e4f2c77c9fce84e))
6554 
6555 	ROM_REGION (0x20000, "kanji", 0)
6556 	ROM_LOAD ("phc77kfn.rom", 0x0000, 0x20000, CRC(3b8fdf44) SHA1(fc71561a64f73da0e0043d256f67fd18d7fc3a7f))
6557 ROM_END
6558 
6559 void msx2_state::phc77(machine_config &config)
6560 {
6561 	msx2(config);
6562 	// YM2149 (in S-1985 MSX Engine)
6563 	// FDC: wd2793?, 1 drive
6564 	// 2 Cartridge slots
6565 	// S-1985 MSX Engine
6566 	// Builtin printer
6567 
6568 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
6569 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
6570 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
6571 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000);   /* 64KB RAM */
6572 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
6573 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 2, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
6574 	add_internal_slot(config, MSX_SLOT_ROM, "write", 3, 3, 1, 2, "maincpu", 0x10000);
6575 
6576 	MSX_S1985(config, "s1985", 0);
6577 
6578 	msx_wd2793_force_ready(config);
6579 	msx_1_35_dd_drive(config);
6580 	msx2_floplist(config);
6581 
6582 	msx2_cartlist(config);
6583 }
6584 
6585 /* MSX2 - Sharp Epcom HotBit 2.0 */
6586 
6587 ROM_START (hotbit20)
6588 	ROM_REGION (0x14000, "maincpu", 0)
6589 	ROM_LOAD ("hb2bios.rom",       0x0000, 0x8000, CRC(0160e8c9) SHA1(d0cfc35f22b150a1cb10decae4841dfe63b78251))
6590 	ROM_LOAD ("hb2ext.rom",        0x8000, 0x4000, CRC(08ced880) SHA1(4f2a7e0172f0214f025f23845f6e053d0ffd28e8))
6591 	ROM_LOAD ("xbasic2.rom",       0xc000, 0x4000, CRC(2825b1a0) SHA1(47370bec7ca1f0615a54eda548b07fbc0c7ef398))
6592 	ROM_LOAD ("microsoldisk.rom", 0x10000, 0x4000, CRC(6704ef81) SHA1(a3028515ed829e900cc8deb403e17b09a38bf9b0))
6593 ROM_END
6594 
hotbit20(machine_config & config)6595 void msx2_state::hotbit20(machine_config &config)
6596 {
6597 	msx2_pal(config);
6598 	// AY8910/YM2149?
6599 	// FDC: microsol, 1 or 2 drives?
6600 	// 2 Cartridge slots?
6601 
6602 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
6603 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
6604 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 1, 1, 0, 1, "maincpu", 0x8000); /* EXT */
6605 	add_internal_slot(config, MSX_SLOT_ROM, "xbasic", 1, 1, 1, 1, "maincpu", 0xc000); /* XBASIC */
6606 	add_internal_slot(config, MSX_SLOT_DISK5, "disk", 1, 3, 1, 1, "maincpu", 0x10000).set_tags("fdc", "fdc:0", "fdc:1", "fdc:2", "fdc:3"); /* Microsol controller */
6607 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 2, 0, 0, 4).set_total_size(0x20000).set_ramio_bits(0x80);   /* 128KB Mapper RAM */
6608 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
6609 
6610 	msx_microsol(config);
6611 	msx_1_35_dd_drive(config);
6612 	msx2_floplist(config);
6613 
6614 	msx2_cartlist(config);
6615 }
6616 
6617 /* MSX2 - Sony HB-F1 */
6618 
6619 ROM_START (hbf1)
6620 	ROM_REGION (0x20000, "maincpu",0)
6621 	ROM_LOAD ("f1bios.rom",   0x0000, 0x8000, CRC(9b3e7b97) SHA1(0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd))
6622 	ROM_LOAD ("f1ext.rom",    0x8000, 0x4000, CRC(4a48779c) SHA1(b8e30d604d319d511cbfbc61e5d8c38fbb9c5a33))
6623 	ROM_LOAD ("f1note1.rom",  0xc000, 0x4000, CRC(84810ea8) SHA1(9db72bb78792595a12499c821048504dc96ef848))
CRC(e32e5ee0)6624 	ROM_LOAD ("f1note2.rom", 0x10000, 0x8000, CRC(e32e5ee0) SHA1(aa78fc9bcd2343f84cf790310a768ee47f90c841))
6625 	ROM_LOAD ("f1note3.rom", 0x18000, 0x8000, CRC(73eb9329) SHA1(58accf41a90693874b86ce98d8d43c27beb8b6dc))
6626 ROM_END
6627 
6628 void msx2_state::hbf1(machine_config &config)
6629 {
6630 	msx2(config);
6631 	// AY8910/YM2149?
6632 	// FDC: None, 0 drives
6633 	// 2 Cartridge slots
6634 
6635 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
6636 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
6637 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
6638 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
6639 	add_internal_slot(config, MSX_SLOT_ROM, "note1", 3, 0, 1, 1, "maincpu", 0xc000);
6640 	add_internal_slot(config, MSX_SLOT_ROM, "note2", 3, 1, 1, 2, "maincpu", 0x10000);
6641 	add_internal_slot(config, MSX_SLOT_ROM, "note3", 3, 2, 1, 2, "maincpu", 0x18000);
6642 	add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 3, 0, 4);  /* 64KB RAM */
6643 
6644 	msx2_cartlist(config);
6645 }
6646 
6647 /* MSX2 - Sony HB-F1II */
6648 
6649 ROM_START (hbf12)
6650 	ROM_REGION (0x20000, "maincpu",0)
6651 	ROM_LOAD ("f12bios.rom",   0x0000, 0x8000, CRC(9b3e7b97) SHA1(0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd))
6652 	ROM_LOAD ("f12ext.rom",    0x8000, 0x4000, CRC(43e7a7fc) SHA1(0fbd45ef3dd7bb82d4c31f1947884f411f1ca344))
CRC(dcacf970)6653 	ROM_LOAD ("f12note1.rom",  0xc000, 0x4000, CRC(dcacf970) SHA1(30d914cda2180889a40a3328e0a0c1327f4eaa10))
6654 	ROM_LOAD ("f12note2.rom", 0x10000, 0x8000, CRC(b0241a61) SHA1(ed2fea5c2a3c2e58d4f69f9d636e08574486a2b1))
6655 	ROM_LOAD ("f12note3.rom", 0x18000, 0x8000, CRC(44a10e6a) SHA1(917d1c079e03c4a44de864f123d03c4e32c8daae))
6656 ROM_END
6657 
6658 void msx2_state::hbf12(machine_config &config)
6659 {
6660 	msx2(config);
6661 	// AY8910/YM2149?
6662 	// FDC: None, 0 drives
6663 	// 2 Cartridge slots
6664 
6665 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
6666 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
6667 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
6668 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
6669 	add_internal_slot(config, MSX_SLOT_ROM, "note1", 3, 0, 1, 1, "maincpu", 0xc000);
6670 	add_internal_slot(config, MSX_SLOT_ROM, "note2", 3, 1, 1, 2, "maincpu", 0x10000);
6671 	add_internal_slot(config, MSX_SLOT_ROM, "note3", 3, 2, 1, 2, "maincpu", 0x18000);
6672 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 3, 0, 4).set_total_size(0x10000).set_ramio_bits(0x80);   /* 64KB Mapper RAM */
6673 
6674 	msx2_cartlist(config);
6675 }
6676 
6677 /* MSX2 - Sony HB-F1XD */
6678 
6679 ROM_START (hbf1xd)
6680 	ROM_REGION (0x10000, "maincpu",0)
6681 	ROM_LOAD ("f1xdbios.rom.ic27", 0x0000, 0x8000, BAD_DUMP CRC(ba81b3dd) SHA1(4ce41fcc1a603411ec4e99556409c442078f0ecf))
6682 	ROM_LOAD ("f1xdext.rom.ic27",  0x8000, 0x4000, BAD_DUMP CRC(43e7a7fc) SHA1(0fbd45ef3dd7bb82d4c31f1947884f411f1ca344))
6683 	ROM_LOAD ("f1xddisk.rom.ic27", 0xc000, 0x4000, BAD_DUMP CRC(54c73ad6) SHA1(12f2cc79b3d09723840bae774be48c0d721ec1c6))
6684 ROM_END
6685 
hbf1xd(machine_config & config)6686 void msx2_state::hbf1xd(machine_config &config)
6687 {
6688 	msx2(config);
6689 	// YM2149 (in S-1895 MSX Engine)
6690 	// FDC: wd2793, 1 3.5" DSDD drive
6691 	// 2 Cartridge slots
6692 	// S-1985 MSX Engine
6693 
6694 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
6695 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
6696 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
6697 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
6698 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 0, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
6699 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 3, 0, 4).set_total_size(0x10000).set_ramio_bits(0x80);   /* 64KB Mapper RAM */
6700 
6701 	MSX_S1985(config, "s1985", 0);
6702 
6703 	msx_wd2793(config);
6704 	msx_1_35_dd_drive(config);
6705 	msx2_floplist(config);
6706 
6707 	msx2_cartlist(config);
6708 }
6709 
6710 /* MSX2 - Sony HB-F1XDMK2 */
6711 
6712 ROM_START (hbf1xdm2)
6713 	ROM_REGION (0x10000, "maincpu",0)
6714 	ROM_LOAD ("f1m2bios.rom.ic27", 0x0000, 0x8000, BAD_DUMP CRC(ba81b3dd) SHA1(4ce41fcc1a603411ec4e99556409c442078f0ecf))
6715 	ROM_LOAD ("f1m2ext.rom.ic27",  0x8000, 0x4000, BAD_DUMP CRC(43e7a7fc) SHA1(0fbd45ef3dd7bb82d4c31f1947884f411f1ca344))
6716 	ROM_LOAD ("f1m2disk.rom.ic27", 0xc000, 0x4000, BAD_DUMP CRC(54c73ad6) SHA1(12f2cc79b3d09723840bae774be48c0d721ec1c6))
6717 ROM_END
6718 
hbf1xdm2(machine_config & config)6719 void msx2_state::hbf1xdm2(machine_config &config)
6720 {
6721 	msx2(config);
6722 	// AY8910/YM2149?
6723 	// FDC: wd2793, 1 3.5" DSDD drive
6724 	// 2 Cartridge slots?
6725 
6726 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
6727 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
6728 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
6729 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
6730 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 0, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
6731 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 3, 0, 4).set_total_size(0x10000).set_ramio_bits(0x80);   /* 64KB Mapper RAM */
6732 
6733 	msx_wd2793(config);
6734 	msx_1_35_dd_drive(config);
6735 	msx2_floplist(config);
6736 
6737 	msx2_cartlist(config);
6738 }
6739 
6740 /* MSX2 - Sony HB-F5 */
6741 
6742 ROM_START (hbf5)
6743 	ROM_REGION (0x10000, "maincpu", 0)
6744 	ROM_LOAD ("hbf5bios.rom", 0x0000, 0x8000, CRC(9b3e7b97) SHA1(0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd))
6745 	ROM_LOAD ("hbf5ext.rom",  0x8000, 0x4000, CRC(4a48779c) SHA1(b8e30d604d319d511cbfbc61e5d8c38fbb9c5a33))
6746 	ROM_LOAD ("hbf5note.rom", 0xc000, 0x4000, CRC(0cdc0777) SHA1(06ba91d6732ee8a2ecd5dcc38b0ce42403d86708))
6747 ROM_END
6748 
hbf5(machine_config & config)6749 void msx2_state::hbf5(machine_config &config)
6750 {
6751 	msx2_pal(config);
6752 	// YM2149
6753 	// FDC: None, 0 drives
6754 	// 2 Cartridge slots
6755 
6756 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
6757 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 1, 0, 1, "maincpu", 0x8000);
6758 	add_internal_slot(config, MSX_SLOT_ROM, "note", 0, 1, 1, 1, "maincpu", 0xc000);
6759 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 0, 2, 0, 4).set_total_size(0x10000);   /* 64KB?? Mapper RAM */
6760 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
6761 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
6762 
6763 	msx2_cartlist(config);
6764 }
6765 
6766 /* MSX2 - Sony HB-F500 */
6767 
6768 ROM_START (hbf500)
6769 	ROM_REGION (0x10000, "maincpu", 0)
6770 	ROM_LOAD ("f500bios.rom", 0x0000, 0x8000, CRC(9b3e7b97) SHA1(0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd))
6771 	ROM_LOAD ("f500ext.rom",  0x8000, 0x4000, CRC(4a48779c) SHA1(b8e30d604d319d511cbfbc61e5d8c38fbb9c5a33))
CRC(f7f5b0ea)6772 	ROM_LOAD ("f500disk.rom", 0xc000, 0x4000, CRC(f7f5b0ea) SHA1(e93b8da1e8dddbb3742292b0e5e58731b90e9313))
6773 
6774 	ROM_REGION(0x20000, "kanji", 0)
6775 	ROM_LOAD ("f500kfn.rom", 0, 0x20000, CRC(5a59926e) SHA1(6acaf2eeb57f65f7408235d5e07b7563229de799))
6776 ROM_END
6777 
6778 void msx2_state::hbf500(machine_config &config)
6779 {
6780 	msx2(config);
6781 	// AY8910/YM2149?
6782 	// FDC: wd2793, 1 3.5" DSDD drive
6783 	// 2 Cartridge slots?
6784 
6785 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
6786 	add_internal_slot(config, MSX_SLOT_RAM, "ram1", 0, 0, 2, 2);   /* 32KB RAM */
6787 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 1, 0, 1, "maincpu", 0x8000);
6788 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 0, 1, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
6789 	add_internal_slot(config, MSX_SLOT_RAM, "ram2", 0, 2, 0, 2);   /* 32KB RAM */
6790 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
6791 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
6792 
6793 	msx_wd2793_force_ready(config);
6794 	msx_1_35_dd_drive(config);
6795 	msx2_floplist(config);
6796 
6797 	msx2_cartlist(config);
6798 }
6799 
6800 /* MSX2 - Sony HB-F500F */
6801 
6802 ROM_START (hbf500f)
6803 	ROM_REGION (0x10000, "maincpu", 0)
6804 	ROM_LOAD ("hbf500fbios.rom", 0x0000, 0x8000, CRC(440dae3c) SHA1(fedd9b682d056ddd1e9b3d281723e12f859b2e69))
CRC(e235d5c8)6805 	ROM_LOAD ("hbf500fext.rom",  0x8000, 0x4000, CRC(e235d5c8) SHA1(792e6b2814ab783d06c7576c1e3ccd6a9bbac34a))
6806 	ROM_LOAD ("hbf500fdisk.rom", 0xc000, 0x4000, CRC(6e718f5c) SHA1(0e081572f84555dc13bdb0c7044a19d6c164d985))
6807 ROM_END
6808 
6809 void msx2_state::hbf500f(machine_config &config)
6810 {
6811 	msx2_pal(config);
6812 	// AY8910/YM2149?
6813 	// FDC: wd2793, 1 3.5" DSDD drive
6814 	// 3 Cartridge slots or 2 Cartridge slots and 1 expansion slot ?
6815 
6816 	msx_wd2793(config);
6817 	msx_1_35_dd_drive(config);
6818 	msx2_floplist(config);
6819 
6820 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
6821 	add_internal_slot(config, MSX_SLOT_RAM, "ram1", 0, 0, 2, 2);   /* 32KB RAM */
6822 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 1, 0, 1, "maincpu", 0x8000);
6823 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 0, 1, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
6824 	add_internal_slot(config, MSX_SLOT_RAM, "ram2", 0, 2, 0, 2);   /* 32KB RAM */
6825 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
6826 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
6827 
6828 	msx2_cartlist(config);
6829 }
6830 
6831 /* MSX2 - Sony HB-F500P */
6832 
6833 ROM_START (hbf500p)
6834 	ROM_REGION (0x1c000, "maincpu", 0)
CRC(b31c851d)6835 	ROM_LOAD ("500pbios.rom.ic41", 0x0000, 0x8000, CRC(b31c851d) SHA1(0de3c802057560560a03d7965fcc4cff69f8575c))
6836 	ROM_LOAD ("500pext.ic47",      0x8000, 0x8000, CRC(cdd4824a) SHA1(505031f1e8396a6e0cb11c1540e6e7f6999d1191))
6837 	ROM_FILL (0x10000, 0xc000, 0xFF)
6838 ROM_END
6839 
6840 void msx2_state::hbf500p(machine_config &config)
6841 {
6842 	msx2_pal(config);
6843 	// AY8910/YM2149?
6844 	// FDC: wd2793, 1 3.5" DSDD drive
6845 	// 3 Cartridge slots or 2 Cartridge slots and 1 expansion slot ?
6846 
6847 	msx_wd2793(config);
6848 	msx_1_35_dd_drive(config);
6849 	msx2_floplist(config);
6850 
6851 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
6852 	add_internal_slot(config, MSX_SLOT_RAM, "ram1", 0, 0, 2, 2);   /* 32KB RAM */
6853 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 1, 0, 1, "maincpu", 0x8000);
6854 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 0, 1, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
6855 	add_internal_slot(config, MSX_SLOT_RAM, "ram2", 0, 2, 0, 2);   /* 32KB RAM */
6856 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
6857 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
6858 	add_internal_slot(config, MSX_SLOT_ROM, "empty", 3, 0, 0, 4, "maincpu", 0xc000);     // Empty? or is this the 3rd cartridge/expansion slot ?
6859 
6860 	msx2_cartlist(config);
6861 }
6862 
6863 /* MSX2 - Sony HB-F700D */
6864 
6865 ROM_START (hbf700d)
6866 	ROM_REGION (0x10000, "maincpu", 0)
CRC(e975aa79)6867 	ROM_LOAD ("700dbios.rom.ic5", 0x0000, 0x8000, CRC(e975aa79) SHA1(cef16eb95502ba6ab2265fcafcedde470a101541))
6868 	ROM_LOAD ("700dext.ic6",      0x8000, 0x8000, CRC(100cf756) SHA1(317722fa36c2ed31c07c5218b43490fd5badf1f8))
6869 ROM_END
6870 
6871 void msx2_state::hbf700d(machine_config &config)
6872 {
6873 	msx2_pal(config);
6874 	// YM2149 (in S-1985 MSX Engine)
6875 	// FDC: wd2793, 1 3.5" DSDD drive
6876 	// 2 Cartridge slots
6877 	// S-1985 MSX Engine
6878 
6879 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
6880 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
6881 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
6882 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
6883 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 0, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
6884 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 3, 0, 4).set_total_size(0x40000).set_ramio_bits(0x80);   /* 256KB Mapper RAM */
6885 
6886 	MSX_S1985(config, "s1985", 0);
6887 
6888 	msx_wd2793(config);
6889 	msx_1_35_dd_drive(config);
6890 	msx2_floplist(config);
6891 
6892 	msx2_cartlist(config);
6893 }
6894 
6895 /* MSX2 - Sony HB-F700F */
6896 
6897 ROM_START (hbf700f)
6898 	ROM_REGION (0x10000, "maincpu", 0)
6899 	ROM_LOAD ("700fbios.ic5", 0x0000, 0x8000, CRC(440dae3c) SHA1(fedd9b682d056ddd1e9b3d281723e12f859b2e69))
6900 	ROM_LOAD ("700fext.ic6",  0x8000, 0x8000, CRC(7c8b07b1) SHA1(ecacb20ba0a9bbd25e8c0f128d64dd66f8cd8bee))
6901 ROM_END
6902 
hbf700f(machine_config & config)6903 void msx2_state::hbf700f(machine_config &config)
6904 {
6905 	msx2_pal(config);
6906 	// AY8910/YM2149?
6907 	// FDC: wd2793, 1 3.5" DSDD drive
6908 	// 2 Cartridge slots
6909 
6910 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
6911 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
6912 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
6913 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
6914 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 0, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
6915 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 3, 0, 4).set_total_size(0x40000).set_ramio_bits(0x80);   /* 256KB Mapper RAM */
6916 
6917 	msx_wd2793(config);
6918 	msx_1_35_dd_drive(config);
6919 	msx2_floplist(config);
6920 
6921 	msx2_cartlist(config);
6922 }
6923 
6924 /* MSX2 - Sony HB-F700P */
6925 
6926 ROM_START (hbf700p)
6927 	ROM_REGION (0x10000, "maincpu", 0)
CRC(b31c851d)6928 	ROM_LOAD ("700pbios.rom.ic5", 0x0000, 0x8000, CRC(b31c851d) SHA1(0de3c802057560560a03d7965fcc4cff69f8575c))
6929 	ROM_LOAD ("700pext.ic6",      0x8000, 0x8000, CRC(63e1bffc) SHA1(496698a60432490dc1306c8cc1d4a6ded275261a))
6930 ROM_END
6931 
6932 void msx2_state::hbf700p(machine_config &config)
6933 {
6934 	msx2_pal(config);
6935 	// YM2149 (in S-1985 MSX Engine)
6936 	// FDC: wd2793, 1 3.5" DSDD drive
6937 	// 2 Cartridge slots
6938 	// S-1985 MSX Engine
6939 
6940 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
6941 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
6942 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
6943 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
6944 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 0, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
6945 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 3, 0, 4).set_total_size(0x40000).set_ramio_bits(0x80);   /* 256KB Mapper RAM */
6946 
6947 	MSX_S1985(config, "s1985", 0);
6948 
6949 	msx_wd2793_force_ready(config);
6950 	msx_1_35_dd_drive(config);
6951 	msx2_floplist(config);
6952 
6953 	msx2_cartlist(config);
6954 }
6955 
6956 /* MSX2 - Sony HB-F700S */
6957 
6958 ROM_START (hbf700s)
6959 	ROM_REGION (0x10000, "maincpu", 0)
CRC(c2b889a5)6960 	ROM_LOAD ("700sbios.rom.ic5", 0x0000, 0x8000, CRC(c2b889a5) SHA1(4811956f878c3e03da46317f787cdc4bebc86f47))
6961 	ROM_LOAD ("700sext.ic6",      0x8000, 0x8000, CRC(28d1badf) SHA1(ae3ed88a2d7034178e08f7bdf5409f462bf67fc9))
6962 ROM_END
6963 
6964 void msx2_state::hbf700s(machine_config &config)
6965 {
6966 	msx2_pal(config);
6967 	// AY8910/YM2149?
6968 	// FDC: wd2793, 1 3.5" DSDD drive
6969 	// 2 Cartridge slots
6970 
6971 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
6972 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
6973 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
6974 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
6975 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 0, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
6976 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 3, 0, 4).set_total_size(0x40000).set_ramio_bits(0x80);   /* 256KB Mapper RAM */
6977 
6978 	msx_wd2793_force_ready(config);
6979 	msx_1_35_dd_drive(config);
6980 	msx2_floplist(config);
6981 
6982 	msx2_cartlist(config);
6983 }
6984 
6985 /* MSX2 - Sony HB-F900 */
6986 ROM_START (hbf900)
6987 	ROM_REGION (0x18000, "maincpu", 0)
6988 	ROM_LOAD ("f900bios.rom",  0x0000, 0x8000, CRC(9b3e7b97) SHA1(0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd))
6989 	ROM_LOAD ("f900ext.rom",   0x8000, 0x4000, CRC(43e7a7fc) SHA1(0fbd45ef3dd7bb82d4c31f1947884f411f1ca344))
CRC(f83d0ea6)6990 	ROM_LOAD ("f900disk.rom",  0xc000, 0x4000, CRC(f83d0ea6) SHA1(fc760d1d7b16370abc7eea39955f230b95b37df6))
6991 	ROM_LOAD ("f900util.rom", 0x10000, 0x4000, CRC(bc6c7c66) SHA1(558b7383544542cf7333700ff90c3efbf93ba2a3))
6992 	ROM_FILL (0x14000, 0x4000, 0x00)
6993 
6994 	ROM_REGION(0x20000, "kanji", 0)
6995 	ROM_LOAD ("f900kfn.rom", 0, 0x20000, CRC(5a59926e) SHA1(6acaf2eeb57f65f7408235d5e07b7563229de799))
6996 ROM_END
6997 
6998 void msx2_state::hbf900(machine_config &config)
6999 {
7000 	msx2(config);
7001 	// AY8910/YM2149?
7002 	// FDC: wd2793, 2 3.5" DSDD drives
7003 	// 2 Cartridge slots
7004 
7005 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
7006 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
7007 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
7008 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
7009 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 0, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
7010 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 1, 0, 4).set_total_size(0x40000).set_ramio_bits(0x80);   /* 256KB Mapper RAM */
7011 	add_internal_slot(config, MSX_SLOT_ROM, "empty", 3, 3, 1, 1, "maincpu", 0x14000);    // Empty/unknown, optional fmpac rom used to be loaded here, or should the util rom be loaded?
7012 
7013 	msx_wd2793_force_ready(config);
7014 	msx_2_35_dd_drive(config);
7015 	msx2_floplist(config);
7016 
7017 	msx2_cartlist(config);
7018 }
7019 
7020 /* MSX2 - Sony HB-F900 (a) */
7021 ROM_START (hbf900a)
7022 	ROM_REGION (0x18000, "maincpu", 0)
7023 	ROM_LOAD ("f900bios.rom",  0x0000, 0x8000, CRC(9b3e7b97) SHA1(0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd))
7024 	ROM_LOAD ("f900ext.rom",   0x8000, 0x4000, CRC(43e7a7fc) SHA1(0fbd45ef3dd7bb82d4c31f1947884f411f1ca344))
7025 	ROM_LOAD ("f900disa.rom",  0xc000, 0x4000, CRC(54c73ad6) SHA1(12f2cc79b3d09723840bae774be48c0d721ec1c6))
CRC(bc6c7c66)7026 	ROM_LOAD ("f900util.rom", 0x10000, 0x4000, CRC(bc6c7c66) SHA1(558b7383544542cf7333700ff90c3efbf93ba2a3))
7027 	ROM_FILL (0x14000, 0x4000, 0x00)
7028 
7029 	ROM_REGION(0x20000, "kanji", 0)
7030 	ROM_LOAD ("f900kfn.rom", 0, 0x20000, CRC(5a59926e) SHA1(6acaf2eeb57f65f7408235d5e07b7563229de799))
7031 ROM_END
7032 
7033 void msx2_state::hbf900a(machine_config &config)
7034 {
7035 	msx2(config);
7036 	// AY8910/YM2149?
7037 	// FDC: wd2793, 2 3.5" DSDD drives
7038 	// 2 Cartridge slots
7039 
7040 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
7041 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
7042 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
7043 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
7044 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 0, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
7045 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 1, 0, 4).set_total_size(0x40000).set_ramio_bits(0x80);   /* 256KB Mapper RAM */
7046 	add_internal_slot(config, MSX_SLOT_ROM, "empty", 3, 3, 1, 1, "maincpu", 0x14000);    // Empty/unknown, optional fmpac rom used to be loaded here, or should the util rom be loaded?
7047 
7048 	msx_wd2793(config);
7049 	msx_2_35_dd_drive(config);
7050 	msx2_floplist(config);
7051 
7052 	msx2_cartlist(config);
7053 }
7054 
7055 /* MSX2 - Sony HB-F9P */
7056 
7057 ROM_START (hbf9p)
7058 	ROM_REGION (0x18000, "maincpu", 0)
CRC(b31c851d)7059 	ROM_LOAD ("f9pbios.rom.ic11",   0x0000, 0x8000, CRC(b31c851d) SHA1(0de3c802057560560a03d7965fcc4cff69f8575c))
7060 	ROM_LOAD ("f9pfirm1.ic12",      0x8000, 0x8000, CRC(524f67aa) SHA1(41a186afced50ca6312cb5b6c4adb684faca6232))
7061 	ROM_LOAD ("f9pfirm2.rom.ic13", 0x10000, 0x8000, CRC(ea97069f) SHA1(2d1880d1f5a6944fcb1b198b997a3d90ecd1903d))
7062 ROM_END
7063 
7064 void msx2_state::hbf9p(machine_config &config)
7065 {
7066 	msx2_pal(config);
7067 	// YM2149 (in S-1985 MSX Engine)
7068 	// FDC: None, 0 drives
7069 	// 2 Cartridge slots
7070 	// S-1985 MSX Engine
7071 
7072 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
7073 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
7074 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
7075 	add_internal_slot(config, MSX_SLOT_ROM, "firm1", 3, 0, 0, 2, "maincpu", 0x8000);
7076 	add_internal_slot(config, MSX_SLOT_ROM, "firm2", 3, 1, 1, 2, "maincpu", 0x10000);
7077 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0x80);   /* 128KB Mapper RAM */
7078 
7079 	MSX_S1985(config, "s1985", 0);
7080 
7081 	msx2_cartlist(config);
7082 }
7083 
7084 /* MSX2 - Sony HB-F9P Russian */
7085 
7086 ROM_START (hbf9pr)
7087 	ROM_REGION (0xc000, "maincpu", 0)
7088 	ROM_LOAD ("f9prbios.rom", 0x0000, 0x8000, CRC(39d7674a) SHA1(47642bb0a2c46a82100543dc3970d0a49fc53b69))
7089 	ROM_LOAD ("f9prext.rom",  0x8000, 0x4000, CRC(8b966f50) SHA1(65253cb38ab11084f355a2d4ad78fa6c64cbe660))
7090 ROM_END
7091 
hbf9pr(machine_config & config)7092 void msx2_state::hbf9pr(machine_config &config)
7093 {
7094 	msx2_pal(config);
7095 	// YM2149 (in S-1985 MSX Engine)
7096 	// FDC: None, 0 drives
7097 	// 2 Cartridge slots
7098 	// S-1985 MSX Engine
7099 
7100 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
7101 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
7102 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
7103 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
7104 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000);   /* 128KB Mapper RAM */
7105 
7106 	MSX_S1985(config, "s1985", 0);
7107 
7108 	msx2_cartlist(config);
7109 }
7110 
7111 /* MSX2 - Sony HB-F9S */
7112 
7113 ROM_START (hbf9s)
7114 	ROM_REGION (0x18000, "maincpu", 0)
CRC(c2b889a5)7115 	ROM_LOAD ("f9sbios.ic11",   0x0000, 0x8000, CRC(c2b889a5) SHA1(4811956f878c3e03da46317f787cdc4bebc86f47))
7116 	ROM_LOAD ("f9sfirm1.ic12",  0x8000, 0x8000, CRC(cf39620b) SHA1(1166a93d7185ba024bdf2bfa9a30e1c447fb6db1))
7117 	ROM_LOAD ("f9sfirm2.ic13", 0x10000, 0x8000, CRC(ea97069f) SHA1(2d1880d1f5a6944fcb1b198b997a3d90ecd1903d))
7118 ROM_END
7119 
7120 void msx2_state::hbf9s(machine_config &config)
7121 {
7122 	msx2_pal(config);
7123 	// YM2149 (in S-1985 MSX Engine)
7124 	// FDC: None, 0 drives
7125 	// 2 Cartridge slots
7126 	// S-1985 MSX Engine
7127 
7128 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
7129 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
7130 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
7131 	add_internal_slot(config, MSX_SLOT_ROM, "firm1", 3, 0, 0, 2, "maincpu", 0x8000);
7132 	add_internal_slot(config, MSX_SLOT_ROM, "firm2", 3, 1, 1, 2, "maincpu", 0x10000);
7133 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0x80);   /* 128KB Mapper RAM */
7134 
7135 	MSX_S1985(config, "s1985", 0);
7136 
7137 	msx2_cartlist(config);
7138 }
7139 
7140 /* MSX2 - Sony HB-G900AP */
7141 
7142 /* IC109 - 32KB Basic ROM SLOT#00 0000-7FFF */
7143 /* IC112 - 16KB Basic ROM SLOT#01 0000-3FFF */
7144 /* IC117 - 16KB Disk ROM SLOT#01 4000-7FFF */
7145 /* IC123 - 32KB ROM RS232C ROM SLOT#02 4000-7FFF / Video Utility ROM SLOT#03 4000-7FFF */
7146 
7147 /* MSX2 - Sony HB-G900AP */
7148 ROM_START (hbg900ap)
7149 	ROM_REGION (0x18000, "maincpu", 0)
CRC(b31c851d)7150 	ROM_LOAD ("g900bios.rom",  0x0000, 0x8000, CRC(b31c851d) SHA1(0de3c802057560560a03d7965fcc4cff69f8575c))
7151 	ROM_LOAD ("g900ext.rom",   0x8000, 0x4000, CRC(8f84f783) SHA1(3288894e1be6af705871499b23c85732dbc40993))
7152 	ROM_LOAD ("g900disk.rom",  0xc000, 0x4000, CRC(54c73ad6) SHA1(12f2cc79b3d09723840bae774be48c0d721ec1c6))
7153 	ROM_LOAD ("g900232c.rom", 0x10000, 0x4000, CRC(06cf1da6) SHA1(373aa82d0426830880a7344ef98f7309d93814c7))
7154 	ROM_LOAD ("g900util.rom", 0x14000, 0x4000, CRC(d0417c20) SHA1(8779b004e7605a3c419825f0373a5d8fa84e1d5b))
7155 ROM_END
7156 
7157 void msx2_state::hbg900ap(machine_config &config)
7158 {
7159 	msx2_pal(config);
7160 	// AY8910/YM2149?
7161 	// FDC: wd2793, 1 3.5" DSDD drive
7162 	// 2 Cartridge slots?
7163 
7164 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
7165 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 1, 0, 1, "maincpu", 0x8000);
7166 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 0, 1, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
7167 /*  MSX_LAYOUT_SLOT ("rs232c", 0, 2, 1, 1, "maincpu", 0x10000) */ /* RS232C must be emulated */
7168 	add_internal_slot(config, MSX_SLOT_ROM, "util", 0, 3, 1, 1, "maincpu", 0x14000);
7169 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
7170 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
7171 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x80000).set_ramio_bits(0x80);   /* 512KB Mapper RAM */
7172 
7173 	msx_wd2793(config);
7174 	msx_1_35_dd_drive(config);
7175 	msx2_floplist(config);
7176 
7177 	msx2_cartlist(config);
7178 }
7179 
7180 /* MSX2 - Sony HB-G900P - 3x 32KB ROMs */
7181 
7182 ROM_START (hbg900p)
7183 	ROM_REGION (0x18000, "maincpu", 0)
CRC(b31c851d)7184 	ROM_LOAD ("g900bios.rom",  0x0000, 0x8000, CRC(b31c851d) SHA1(0de3c802057560560a03d7965fcc4cff69f8575c))
7185 	ROM_LOAD ("g900ext.rom",   0x8000, 0x4000, CRC(8f84f783) SHA1(3288894e1be6af705871499b23c85732dbc40993))
7186 	ROM_LOAD ("g900disk.rom",  0xc000, 0x4000, CRC(54c73ad6) SHA1(12f2cc79b3d09723840bae774be48c0d721ec1c6))
7187 	ROM_LOAD ("g900232c.rom", 0x10000, 0x4000, CRC(06cf1da6) SHA1(373aa82d0426830880a7344ef98f7309d93814c7))
7188 	ROM_LOAD ("g900util.rom", 0x14000, 0x4000, CRC(d0417c20) SHA1(8779b004e7605a3c419825f0373a5d8fa84e1d5b))
7189 ROM_END
7190 
7191 void msx2_state::hbg900p(machine_config &config)
7192 {
7193 	msx2_pal(config);
7194 	// AY8910/YM2149?
7195 	// FDC: wd2793, 1 3.5" DSDD drive
7196 	// 2 Cartridge slots?
7197 
7198 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
7199 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 1, 0, 1, "maincpu", 0x8000);
7200 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 0, 1, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
7201 /*  MSX_LAYOUT_SLOT ("rs232c", 0, 2, 1, 1, "maincpu", 0x10000) */ /* RS232C must be emulated */
7202 	add_internal_slot(config, MSX_SLOT_ROM, "util", 0, 3, 1, 1, "maincpu", 0x14000);
7203 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
7204 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
7205 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000).set_ramio_bits(0x80);   /* 64KB Mapper RAM */
7206 
7207 	msx_wd2793(config);
7208 	msx_1_35_dd_drive(config);
7209 	msx2_floplist(config);
7210 
7211 	msx2_cartlist(config);
7212 }
7213 
7214 /* MSX2 - Talent TPC-310 */
7215 ROM_START (tpc310)
7216 	ROM_REGION (0x1c000, "maincpu", 0)
7217 	ROM_LOAD ("tpc310bios.rom",   0x0000, 0x8000, CRC(8cd3e845) SHA1(7bba23669b7abfb6a142f9e1735b847d6e4e8267))
7218 	ROM_LOAD ("tpc310ext.rom",    0x8000, 0x4000, CRC(094a9e7a) SHA1(39dfc46260f99b670916b1e55f67a5d4136e6e54))
7219 	ROM_LOAD ("dpf550disk.rom",   0xc000, 0x4000, CRC(347b1b44) SHA1(c1d83c559e1e6a6da961eafa55aab105681c634c))
7220 	ROM_LOAD ("tpc310turbo.rom", 0x10000, 0x4000, CRC(0ea62a4d) SHA1(181bf58da7184e128cd419da3109b93344a543cf))
7221 	ROM_LOAD ("tpc310acc.rom",   0x14000, 0x8000, CRC(4fb8fab3) SHA1(cdeb0ed8adecaaadb78d5a5364fd603238591685))
7222 ROM_END
7223 
tpc310(machine_config & config)7224 void msx2_state::tpc310(machine_config &config)
7225 {
7226 	msx2_pal(config);
7227 	// YM2149 (in S-1985 MSX Engine)
7228 	// FDC: mb8877a?, 1 3.5" DSDD drive
7229 	// 1 Cartridge slot (slot 2)
7230 	// S-1985 MSX Engine
7231 
7232 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
7233 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 1, 0, 0, 4).set_total_size(0x20000).set_ramio_bits(0x80);   /* 128KB Mapper RAM */
7234 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot", 2, 0, msx_cart, nullptr);
7235 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
7236 	add_internal_slot(config, MSX_SLOT_ROM, "turbo", 3, 0, 1, 1, "maincpu", 0x10000);
7237 	add_internal_slot(config, MSX_SLOT_ROM, "acc", 3, 1, 1, 2, "maincpu", 0x14000);
7238 	add_internal_slot_mirrored(config, MSX_SLOT_DISK2, "disk", 3, 2, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
7239 
7240 	MSX_S1985(config, "s1985", 0);
7241 
7242 	msx_mb8877a(config);
7243 	msx_1_35_dd_drive(config);
7244 	msx2_floplist(config);
7245 
7246 	msx2_cartlist(config);
7247 }
7248 
7249 /* MSX2 - Talent TPP-311 */
7250 
7251 ROM_START (tpp311)
7252 	ROM_REGION (0x14000, "maincpu", 0)
7253 	ROM_LOAD ("311bios.rom", 0x0000, 0x8000, CRC(8cd3e845) SHA1(7bba23669b7abfb6a142f9e1735b847d6e4e8267))
7254 	ROM_LOAD ("311ext.rom",  0x8000, 0x4000, CRC(094a9e7a) SHA1(39dfc46260f99b670916b1e55f67a5d4136e6e54))
7255 	ROM_LOAD ("311logo.rom", 0xc000, 0x8000, CRC(0e6ecb9f) SHA1(e45ddc5bf1a1e63756d11fb43fc50276ca35cab0))
7256 ROM_END
7257 
tpp311(machine_config & config)7258 void msx2_state::tpp311(machine_config &config)
7259 {
7260 	msx2_pal(config);
7261 	// AY8910/YM2149?
7262 	// FDC: None, 0 drives
7263 	// 0 Cartridge slots?
7264 	// 64KB VRAM
7265 
7266 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
7267 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 1, 0, 0, 4).set_total_size(0x10000);   /* 64KB?? Mapper RAM */
7268 	add_internal_slot(config, MSX_SLOT_ROM, "logo", 2, 0, 1, 2, "maincpu", 0xc000);
7269 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
7270 
7271 	msx2_64kb_vram(config);
7272 }
7273 
7274 /* MSX2 - Talent TPS-312 */
7275 
7276 ROM_START (tps312)
7277 	ROM_REGION (0x18000, "maincpu", 0)
7278 	ROM_LOAD ("312bios.rom",   0x0000, 0x8000, CRC(8cd3e845) SHA1(7bba23669b7abfb6a142f9e1735b847d6e4e8267))
7279 	ROM_LOAD ("312ext.rom",    0x8000, 0x4000, CRC(094a9e7a) SHA1(39dfc46260f99b670916b1e55f67a5d4136e6e54))
CRC(b3a6aaf6)7280 	ROM_LOAD ("312plan.rom",   0xc000, 0x8000, CRC(b3a6aaf6) SHA1(6de80e863cdd7856ab7aac4c238224a5352bda3b))
7281 	ROM_LOAD ("312write.rom", 0x14000, 0x4000, CRC(63c6992f) SHA1(93682f5baba7697c40088e26f99ee065c78e83b8))
7282 ROM_END
7283 
7284 void msx2_state::tps312(machine_config &config)
7285 {
7286 	msx2_pal(config);
7287 	// AY8910/YM2149?
7288 	// FDC: None, 0 drives
7289 	// 2 Cartridge slots?
7290 	// 64KB VRAM
7291 
7292 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
7293 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 1, 0, 0, 4).set_total_size(0x20000);   /* 128KB?? Mapper RAM */
7294 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 2, 0, msx_cart, nullptr);
7295 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
7296 	add_internal_slot(config, MSX_SLOT_ROM, "write", 3, 1, 1, 1, "maincpu", 0x14000);
7297 	add_internal_slot(config, MSX_SLOT_ROM, "plan", 3, 2, 1, 1, "maincpu", 0xc000);
7298 	add_internal_slot(config, MSX_SLOT_ROM, "planlow", 3, 2, 0, 1, "maincpu", 0x10000);
7299 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 3, msx_cart, nullptr);
7300 
7301 	msx2_cartlist(config);
7302 
7303 	msx2_64kb_vram(config);
7304 }
7305 
7306 /* MSX2 - Toshiba HX-23 */
7307 
7308 ROM_START (hx23)
7309 	ROM_REGION (0x14000, "maincpu", 0)
7310 	ROM_LOAD ("hx23bios.rom", 0x0000, 0x8000, CRC(6cdaf3a5) SHA1(6103b39f1e38d1aa2d84b1c3219c44f1abb5436e))
7311 	ROM_LOAD ("hx23ext.rom",  0x8000, 0x4000, CRC(06e4f5e6) SHA1(f5eb0a396097572589f2a6efeed045044e9425e4))
7312 	ROM_LOAD ("hx23word.rom", 0xc000, 0x8000, CRC(39b3e1c0) SHA1(9f7cfa932bd7dfd0d9ecaadc51655fb557c2e125))
7313 ROM_END
7314 
hx23(machine_config & config)7315 void msx2_state::hx23(machine_config &config)
7316 {
7317 	msx2_pal(config);
7318 	// AY8910/YM2149?
7319 	// FDC: None, 0 drives
7320 	// 2 Cartridge slots?
7321 	// 64KB VRAM
7322 
7323 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
7324 	add_internal_slot(config, MSX_SLOT_RAM, "ram1", 0, 0, 2, 2);   /* 32KB RAM */
7325 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
7326 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
7327 	add_internal_slot(config, MSX_SLOT_RAM, "ram2", 3, 0, 0, 2);   /* 32KB RAM */
7328 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
7329 	add_internal_slot(config, MSX_SLOT_ROM, "word", 3, 3, 1, 2, "maincpu", 0xc000);
7330 
7331 	msx2_cartlist(config);
7332 
7333 	msx2_64kb_vram(config);
7334 }
7335 
7336 /* MSX2 - Toshiba HX-23F */
7337 
7338 ROM_START (hx23f)
7339 	ROM_REGION (0x14000, "maincpu", 0)
7340 	ROM_LOAD ("hx23fbios.rom", 0x0000, 0x8000, CRC(6cdaf3a5) SHA1(6103b39f1e38d1aa2d84b1c3219c44f1abb5436e))
7341 	ROM_LOAD ("hx23fext.rom",  0x8000, 0x4000, CRC(06e4f5e6) SHA1(f5eb0a396097572589f2a6efeed045044e9425e4))
7342 	ROM_LOAD ("hx23fword.rom", 0xc000, 0x8000, CRC(39b3e1c0) SHA1(9f7cfa932bd7dfd0d9ecaadc51655fb557c2e125))
7343 ROM_END
7344 
hx23f(machine_config & config)7345 void msx2_state::hx23f(machine_config &config)
7346 {
7347 	msx2_pal(config);
7348 	// AY8910/YM2149?
7349 	// FDC: None, 0 drives
7350 	// 2 Cartridge slots?
7351 
7352 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
7353 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
7354 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
7355 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x20000).set_ramio_bits(0x80);   /* 128KB Mapper RAM */
7356 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
7357 	add_internal_slot(config, MSX_SLOT_ROM, "word", 3, 3, 1, 2, "maincpu", 0xc000);
7358 
7359 	msx2_cartlist(config);
7360 }
7361 
7362 /* MSX2 - Toshiba HX-23I */
7363 
7364 ROM_START (hx23i)
7365 	ROM_REGION (0x14000, "maincpu", 0)
7366 	ROM_LOAD ("hx23ibios.rom", 0x0000, 0x8000, CRC(6cdaf3a5) SHA1(6103b39f1e38d1aa2d84b1c3219c44f1abb5436e))
7367 	ROM_LOAD ("hx23iext.rom",  0x8000, 0x4000, CRC(06e4f5e6) SHA1(f5eb0a396097572589f2a6efeed045044e9425e4))
CRC(d50db5b4)7368 	ROM_LOAD ("hx23iword.rom", 0xc000, 0x8000, CRC(d50db5b4) SHA1(64cf27a6be1393b1da9f8d5d43df617c9f22fbd2))
7369 ROM_END
7370 
7371 void msx2_state::hx23i(machine_config &config)
7372 {
7373 	msx2_pal(config);
7374 	// YM2149 (in S-1985)
7375 	// FDC: None, 0 drives
7376 	// 2 Cartridge slots?
7377 	// S-1985 MSX Engine
7378 
7379 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
7380 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
7381 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
7382 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x20000);   /* 128KB Mapper RAM */
7383 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
7384 	add_internal_slot(config, MSX_SLOT_ROM, "word", 3, 3, 1, 2, "maincpu", 0xc000);
7385 
7386 	MSX_S1985(config, "s1985", 0);
7387 
7388 	msx2_cartlist(config);
7389 }
7390 
7391 /* MSX@ - Toshiba HX-33 */
7392 
7393 ROM_START (hx33)
7394 	ROM_REGION (0x14000, "maincpu", 0)
7395 	ROM_LOAD ("hx33bios.rom", 0x0000, 0x8000, CRC(3891e0f7) SHA1(7dfb18262d48e559fffb4199acbe29d9b4bee9db))
7396 	ROM_LOAD ("hx33ext.rom",  0x8000, 0x4000, CRC(4a48779c) SHA1(b8e30d604d319d511cbfbc61e5d8c38fbb9c5a33))
CRC(d05b5ca6)7397 	ROM_LOAD ("hx33firm.rom", 0xc000, 0x8000, CRC(d05b5ca6) SHA1(7eea205044af48cfde9b7fff277d961704c4d45c))
7398 
7399 	ROM_REGION (0x20000, "kanji", 0)
7400 	ROM_LOAD ("hx33kfn.rom", 0x0000, 0x20000, CRC(d23d4d2d) SHA1(db03211b7db46899df41db2b1dfbec972109a967))
7401 ROM_END
7402 
7403 void msx2_state::hx33(machine_config &config)
7404 {
7405 	msx2(config);
7406 	// YM2149 (in S-1985)
7407 	// FDC: None, 0, drives
7408 	// 2 Cartridge slots?
7409 	// RS232C builtin?
7410 	// S-1985 MSX Engine
7411 
7412 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
7413 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
7414 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
7415 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000); // 64KB Mapper RAM
7416 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
7417 	add_internal_slot(config, MSX_SLOT_ROM, "firm", 3, 2, 1, 2, "maincpu", 0xc000);
7418 
7419 	MSX_S1985(config, "s1985", 0);
7420 
7421 	msx2_64kb_vram(config);
7422 
7423 	msx2_cartlist(config);
7424 }
7425 
7426 /* MSX@ - Toshiba HX-34 */
7427 
7428 ROM_START (hx34)
7429 ROM_REGION (0x18000, "maincpu", 0)
7430 	ROM_LOAD ("hx34bios.rom",  0x0000, 0x8000, CRC(3891e0f7) SHA1(7dfb18262d48e559fffb4199acbe29d9b4bee9db))
7431 	ROM_LOAD ("hx34ext.rom",   0x8000, 0x4000, CRC(4a48779c) SHA1(b8e30d604d319d511cbfbc61e5d8c38fbb9c5a33))
7432 	// hx34disk.rom has contents of floppy registers at offset 3ff0-3ff7 and mirrored at 3ff8-3fff
7433 	ROM_LOAD ("hx34disk.rom",  0xc000, 0x4000, BAD_DUMP CRC(b6203bc8) SHA1(d31236e8b2491bca678d905546b365e9d365b072))
CRC(d05b5ca6)7434 	ROM_LOAD ("hx34firm.rom", 0x10000, 0x8000, CRC(d05b5ca6) SHA1(7eea205044af48cfde9b7fff277d961704c4d45c))
7435 
7436 	ROM_REGION (0x20000, "kanji", 0)
7437 	ROM_LOAD ("hx34kfn.rom", 0x0000, 0x20000, CRC(d23d4d2d) SHA1(db03211b7db46899df41db2b1dfbec972109a967))
7438 ROM_END
7439 
7440 void msx2_state::hx34(machine_config &config)
7441 {
7442 	msx2(config);
7443 	// YM2149 (in S-1985)
7444 	// FDC: wd2793??, 1 3.5" DSDD drive
7445 	// 2 Cartridge slots?
7446 	// RS232C builtin?
7447 	// S-1985 MSX Engine
7448 
7449 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
7450 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
7451 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
7452 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000); // 64KB Mapper RAM
7453 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
7454 	add_internal_slot(config, MSX_SLOT_DISK6, "disk", 3, 2, 1, 1, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
7455 	add_internal_slot(config, MSX_SLOT_ROM, "firm", 3, 3, 1, 2, "maincpu", 0x10000);
7456 
7457 	MSX_S1985(config, "s1985", 0);
7458 
7459 	msx_wd2793(config);
7460 	msx_1_35_dd_drive(config);
7461 	msx2_floplist(config);
7462 
7463 	msx2_cartlist(config);
7464 }
7465 
7466 /* MSX@ - Toshiba HX-34I */
7467 
7468 ROM_START (hx34i)
7469 	ROM_REGION (0x18000, "maincpu", 0)
7470 	ROM_LOAD ("hx34ibios.rom",  0x0000, 0x8000, CRC(6cdaf3a5) SHA1(6103b39f1e38d1aa2d84b1c3219c44f1abb5436e))
7471 	ROM_LOAD ("hx34iext.rom",   0x8000, 0x4000, CRC(06e4f5e6) SHA1(f5eb0a396097572589f2a6efeed045044e9425e4))
7472 	// hx34idisk.rom has contents of floppy registers at offset 3ff0-3ff7 and mirrored at 3ff8-3fff
7473 	ROM_LOAD ("hx34idisk.rom",  0xc000, 0x4000, BAD_DUMP CRC(b6203bc8) SHA1(d31236e8b2491bca678d905546b365e9d365b072))
CRC(f9e29c66)7474 	ROM_LOAD ("hx34ifirm.rom", 0x10000, 0x8000, CRC(f9e29c66) SHA1(3289336b2c12161fd926a7e5ce865770ae7038af))
7475 ROM_END
7476 
7477 void msx2_state::hx34i(machine_config &config)
7478 {
7479 	msx2_pal(config);
7480 	// YM2149 (in S-1985)
7481 	// FDC: wd2793??, 1 3.5" DSDD drive
7482 	// 2 Cartridge slots?
7483 	// RS232C builtin?
7484 	// S-1985 MSX Engine
7485 
7486 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
7487 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
7488 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
7489 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000); // 64KB Mapper RAM
7490 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
7491 	add_internal_slot(config, MSX_SLOT_DISK6, "disk", 3, 2, 1, 1, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
7492 	add_internal_slot(config, MSX_SLOT_ROM, "firm", 3, 3, 1, 2, "maincpu", 0x10000);
7493 
7494 	MSX_S1985(config, "s1985", 0);
7495 
7496 	msx_wd2793(config);
7497 	msx_1_35_dd_drive(config);
7498 	msx2_floplist(config);
7499 
7500 	msx2_cartlist(config);
7501 }
7502 
7503 /* MSX2 - Toshiba FS-TM1 */
7504 
7505 ROM_START (fstm1)
7506 	ROM_REGION (0x1c000, "maincpu", 0)
CRC(d1e11d52)7507 	ROM_LOAD ("fstm1bios.rom",   0x0000, 0x8000, CRC(d1e11d52) SHA1(7a69e9b9595f3b0060155f4b419c915d4d9d8ca1))
7508 	ROM_LOAD ("fstm1ext.rom",    0x8000, 0x4000, CRC(4eebe9b1) SHA1(a4bdbdb20bf9fd3c492a890fbf541bf092eaa8e1))
7509 	ROM_LOAD ("fstm1desk1.rom",  0xc000, 0x8000, CRC(8b802086) SHA1(30737040d90c136d34dd409fe579bc4cca11c469))
7510 	ROM_LOAD ("fstm1desk2.rom", 0x14000, 0x8000, CRC(304820ea) SHA1(ff6e07d3976b0874164fae680ae028d598752049))
7511 ROM_END
7512 
7513 void msx2_state::fstm1(machine_config &config)
7514 {
7515 	msx2_pal(config);
7516 	// YM2149 (in S-1985)
7517 	// FDC: None, 0 drives
7518 	// 2 Cartridge slots
7519 	// S-1985 MSX Engine
7520 
7521 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
7522 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
7523 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
7524 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000); // 64KB Mapper RAM
7525 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
7526 	add_internal_slot(config, MSX_SLOT_ROM, "desk1", 3, 2, 1, 2, "maincpu", 0xc000);
7527 	add_internal_slot(config, MSX_SLOT_ROM, "desk2", 3, 3, 1, 2, "maincpu", 0x14000);
7528 
7529 	MSX_S1985(config, "s1985", 0);
7530 
7531 	msx2_cartlist(config);
7532 }
7533 
7534 /* MSX2 - Victor HC-90 */
7535 
7536 ROM_START (victhc90)
7537 	ROM_REGION (0x14000, "maincpu", 0)
7538 	ROM_LOAD ("hc90bios.rom",  0x0000, 0x8000, CRC(9b3e7b97) SHA1(0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd))
7539 	ROM_LOAD ("hc90ext.rom",   0x8000, 0x4000, CRC(4a48779c) SHA1(b8e30d604d319d511cbfbc61e5d8c38fbb9c5a33))
7540 	ROM_LOAD ("hc90disk.rom",  0xc000, 0x4000, CRC(11bca2ed) SHA1(a7a34671bddb48fa6c74182e2977f9129558ec32))
7541 	ROM_LOAD ("hc90firm.rom", 0x10000, 0x4000, CRC(53791d91) SHA1(caeffdd654394726c8c0824b21af7ff51c0b1031))
7542 
7543 	ROM_REGION (0x20000, "kanji", 0)
CRC(d23d4d2d)7544 	ROM_LOAD ("hc90kfn.rom", 0x0000, 0x20000, CRC(d23d4d2d) SHA1(db03211b7db46899df41db2b1dfbec972109a967))
7545 ROM_END
7546 
7547 void msx2_state::victhc90(machine_config &config)
7548 {
7549 	msx2(config);
7550 	// YM2149 (in S-1985)
7551 	// FDC: wd2793?, 1 3.5" DSDD drive
7552 	// RS232C builtin
7553 	// 2nd CPU HD-64B180 @ 6.144 MHz
7554 	// 1 Cartridge slot (slot 1 or 2?)
7555 	// S-1985 MSX Engine
7556 
7557 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
7558 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 1, 0, 1, "maincpu", 0x8000);
7559 	add_internal_slot(config, MSX_SLOT_ROM, "firm", 0, 1, 1, 1, "maincpu", 0x10000);
7560 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 0, 2, 0, 4).set_total_size(0x10000); // 64KB Mapper RAM
7561 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot", 1, 0, msx_cart, nullptr);
7562 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 0, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
7563 
7564 	MSX_S1985(config, "s1985", 0);
7565 
7566 	msx_wd2793_force_ready(config);
7567 	msx_1_35_dd_drive(config);
7568 	msx2_floplist(config);
7569 
7570 	msx2_cartlist(config);
7571 }
7572 
7573 /* MSX2 - Victor HC-95 */
7574 
7575 ROM_START (victhc95)
7576 	ROM_REGION (0x14000, "maincpu", 0)
7577 	ROM_LOAD ("hc95bios.rom",  0x0000, 0x8000, CRC(9b3e7b97) SHA1(0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd))
7578 	ROM_LOAD ("hc95ext.rom",   0x8000, 0x4000, CRC(4a48779c) SHA1(b8e30d604d319d511cbfbc61e5d8c38fbb9c5a33))
7579 	ROM_LOAD ("hc95disk.rom",  0xc000, 0x4000, CRC(11bca2ed) SHA1(a7a34671bddb48fa6c74182e2977f9129558ec32))
7580 	ROM_LOAD ("hc95firm.rom", 0x10000, 0x4000, CRC(53791d91) SHA1(caeffdd654394726c8c0824b21af7ff51c0b1031))
7581 
7582 	ROM_REGION (0x20000, "kanji", 0)
CRC(d23d4d2d)7583 	ROM_LOAD ("hc95kfn.rom", 0x0000, 0x20000, CRC(d23d4d2d) SHA1(db03211b7db46899df41db2b1dfbec972109a967))
7584 ROM_END
7585 
7586 void msx2_state::victhc95(machine_config &config)
7587 {
7588 	msx2(config);
7589 	// YM2149 (in S-1985)
7590 	// FDC: wd2793?, 2 3.5" DSDD drive
7591 	// RS232C builtin
7592 	// 2nd CPU HD-64B180 @ 6.144 MHz
7593 	// 1 Cartridge slot (slot 1 or 2?)
7594 	// S-1985 MSX Engine
7595 
7596 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
7597 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 1, 0, 1, "maincpu", 0x8000);
7598 	add_internal_slot(config, MSX_SLOT_ROM, "firm", 0, 1, 1, 1, "maincpu", 0x10000);
7599 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 0, 2, 0, 4).set_total_size(0x10000); // 64KB Mapper RAM
7600 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot", 1, 0, msx_cart, nullptr);
7601 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 0, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
7602 
7603 	MSX_S1985(config, "s1985", 0);
7604 
7605 	msx_wd2793_force_ready(config);
7606 	msx_2_35_dd_drive(config);
7607 	msx2_floplist(config);
7608 
7609 	msx2_cartlist(config);
7610 }
7611 
7612 /* MSX2 - Victor HC-95A */
7613 
7614 ROM_START (victhc95a)
7615 	ROM_REGION (0x14000, "maincpu", 0)
7616 	ROM_LOAD ("hc95abios.rom",  0x0000, 0x8000, CRC(9b3e7b97) SHA1(0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd))
7617 	ROM_LOAD ("hc95aext.rom",   0x8000, 0x4000, CRC(4a48779c) SHA1(b8e30d604d319d511cbfbc61e5d8c38fbb9c5a33))
7618 	ROM_LOAD ("hc95adisk.rom",  0xc000, 0x4000, CRC(11bca2ed) SHA1(a7a34671bddb48fa6c74182e2977f9129558ec32))
7619 	ROM_LOAD ("hc95afirm.rom", 0x10000, 0x4000, CRC(53791d91) SHA1(caeffdd654394726c8c0824b21af7ff51c0b1031))
7620 
7621 	ROM_REGION (0x20000, "kanji", 0)
CRC(d23d4d2d)7622 	ROM_LOAD ("hc95akfn.rom", 0x0000, 0x20000, CRC(d23d4d2d) SHA1(db03211b7db46899df41db2b1dfbec972109a967))
7623 ROM_END
7624 
7625 void msx2_state::victhc95a(machine_config &config)
7626 {
7627 	msx2(config);
7628 	// YM2149 (in S-1985)
7629 	// FDC: wd2793?, 2 3.5" DSDD drive
7630 	// RS232C builtin
7631 	// 2nd CPU HD-64B180 @ 6.144 MHz
7632 	// 1 Cartridge slot (slot 1 or 2?)
7633 	// S-1985 MSX Engine
7634 	// V9958 VDP
7635 
7636 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
7637 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 1, 0, 1, "maincpu", 0x8000);
7638 	add_internal_slot(config, MSX_SLOT_ROM, "firm", 0, 1, 1, 1, "maincpu", 0x10000);
7639 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 0, 2, 0, 4).set_total_size(0x40000); // 256KB Mapper RAM
7640 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot", 1, 0, msx_cart, nullptr);
7641 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 0, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
7642 
7643 	MSX_S1985(config, "s1985", 0);
7644 
7645 	msx_wd2793_force_ready(config);
7646 	msx_2_35_dd_drive(config);
7647 	msx2_floplist(config);
7648 
7649 	msx2_cartlist(config);
7650 }
7651 
7652 /* MSX2 - Yamaha CX7M */
7653 
7654 ROM_START (cx7m)
7655 	ROM_REGION (0xc000, "maincpu", 0)
7656 	ROM_LOAD ("cx7mbios.rom", 0x0000, 0x8000, CRC(6cdaf3a5) SHA1(6103b39f1e38d1aa2d84b1c3219c44f1abb5436e))
7657 	ROM_LOAD ("cx7mext.rom",  0x8000, 0x4000, CRC(66237ecf) SHA1(5c1f9c7fb655e43d38e5dd1fcc6b942b2ff68b02))
7658 ROM_END
7659 
cx7m(machine_config & config)7660 void msx2_state::cx7m(machine_config &config)
7661 {
7662 	msx2_pal(config);
7663 	// AY8910/YM2149?
7664 	// FDC: None, 0 drives
7665 	// 2 Cartridge slots?
7666 
7667 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
7668 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 1, 0, 1, "maincpu", 0x8000);
7669 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
7670 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
7671 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x10000).set_ramio_bits(0x80);   /* 64KB Mapper RAM */
7672 	add_cartridge_slot<3>(config, MSX_SLOT_YAMAHA_EXPANSION, "expansion", 3, 3, msx_yamaha_60pin, "sfg05");
7673 
7674 	msx2_cartlist(config);
7675 }
7676 
7677 /* MSX2 - Yamaha CX7M/128 */
7678 
7679 ROM_START (cx7m128)
7680 	ROM_REGION (0x10000, "maincpu", 0)
7681 	ROM_LOAD ("cx7mbios.rom", 0x0000, 0x8000, CRC(6cdaf3a5) SHA1(6103b39f1e38d1aa2d84b1c3219c44f1abb5436e))
7682 	ROM_LOAD ("cx7mext.rom",  0x8000, 0x4000, CRC(66237ecf) SHA1(5c1f9c7fb655e43d38e5dd1fcc6b942b2ff68b02))
7683 	ROM_LOAD ("yrm502.rom",   0xc000, 0x4000, CRC(51f7ddd1) SHA1(2a4b4a4657e3077df8a88f98210b76883d3702b1))
7684 ROM_END
7685 
cx7m128(machine_config & config)7686 void msx2_state::cx7m128(machine_config &config)
7687 {
7688 	msx2_pal(config);
7689 	// AY8910/YM2149?
7690 	// FDC: None, 0 drives
7691 	// 2 Cartridge slots?
7692 
7693 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
7694 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 1, 0, 1, "maincpu", 0x8000);
7695 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
7696 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
7697 	add_internal_slot(config, MSX_SLOT_ROM, "yrm502", 3, 1, 1, 1, "maincpu", 0xc000);
7698 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000).set_ramio_bits(0x80);   /* 128KB Mapper RAM */
7699 	add_cartridge_slot<3>(config, MSX_SLOT_YAMAHA_EXPANSION, "expansion", 3, 3, msx_yamaha_60pin, "sfg05");
7700 
7701 	msx2_cartlist(config);
7702 }
7703 
7704 /* MSX2 - Yamaha YIS-503 III R */
7705 
7706 ROM_START (y503iiir)
7707 	ROM_REGION (0x1c000, "maincpu", 0)
CRC(e7d08e29)7708 	ROM_LOAD ("yis503iiirbios.rom", 0x0000, 0x8000, CRC(e7d08e29) SHA1(0f851ee7a1cf79819f61cc89e9948ee72a413802))
7709 	ROM_LOAD ("yis503iiirext.rom",  0x8000, 0x4000, CRC(34d21778) SHA1(03bf6d2ac86f5c9ab618e155442787c700f99fed))
7710 	ROM_LOAD ("yis503iiircpm.rom",  0xc000, 0x4000, CRC(417bf00e) SHA1(f4f7a54cdf5a9dd6c59f7cb219c2c5eb0a00fa8a))
7711 	ROM_LOAD ("yis503iiirnet.rom", 0x10000, 33121,  CRC(b10fb61c) SHA1(af2b7004a8888d7a72eee937783fccaca0f38621))  // Very odd size for a rom...
7712 ROM_END
7713 
7714 void msx2_state::y503iiir(machine_config &config)
7715 {
7716 	msx2_pal(config);
7717 	// YM2149 (in S-3527)
7718 	// FDC: wd2793?, 1 3.5" DSDD drive
7719 	// 2 Cartridge slots
7720 	// Networking builtin
7721 	// S-3527 MSX Engine
7722 
7723 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
7724 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
7725 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
7726 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
7727 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "cpm", 3, 0, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
7728 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000); // 128KB Mapper RAM
7729 	add_internal_slot(config, MSX_SLOT_ROM, "net", 3, 3, 0, 3, "maincpu", 0x10000);
7730 
7731 	msx_wd2793_force_ready(config);
7732 	msx_1_35_dd_drive(config);
7733 	msx2_floplist(config);
7734 
7735 	msx2_cartlist(config);
7736 }
7737 
7738 /* MSX2 - Yamaha YIS-503 III R Estonian */
7739 
7740 ROM_START (y503iiire)
7741 	ROM_REGION (0x1c000, "maincpu", 0)
CRC(d0c20f54)7742 	ROM_LOAD ("yis503iiirebios.rom", 0x0000, 0x8000, CRC(d0c20f54) SHA1(ebb7eb540a390509edfd36c84288ba85e63f2d1f))
7743 	ROM_LOAD ("yis503iiireext.rom",  0x8000, 0x4000, CRC(34d21778) SHA1(03bf6d2ac86f5c9ab618e155442787c700f99fed))
7744 	ROM_LOAD ("yis503iiirecpm.rom",  0xc000, 0x4000, CRC(417bf00e) SHA1(f4f7a54cdf5a9dd6c59f7cb219c2c5eb0a00fa8a))
7745 	ROM_LOAD ("yis503iiirenet.rom", 0x10000, 33121,  CRC(b10fb61c) SHA1(af2b7004a8888d7a72eee937783fccaca0f38621))  // Very odd size for a rom...
7746 ROM_END
7747 
7748 void msx2_state::y503iiire(machine_config &config)
7749 {
7750 	msx2_pal(config);
7751 	// YM2149 (in S-3527)
7752 	// FDC: wd2793?, 1 3.5" DSDD drive
7753 	// 2 Cartridge slots
7754 	// Networking builtin
7755 	// S-3527 MSX Engine
7756 
7757 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
7758 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
7759 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
7760 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
7761 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "cpm", 3, 0, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
7762 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000); // 128KB Mapper RAM
7763 	add_internal_slot(config, MSX_SLOT_ROM, "net", 3, 3, 0, 3, "maincpu", 0x10000);
7764 
7765 	msx_wd2793_force_ready(config);
7766 	msx_1_35_dd_drive(config);
7767 	msx2_floplist(config);
7768 
7769 	msx2_cartlist(config);
7770 }
7771 
7772 /* MSX2 - Yamaha YIS604 */
7773 
7774 ROM_START (yis60464)
7775 	ROM_REGION (0xc000, "maincpu", 0)
7776 	ROM_LOAD ("yis604bios.rom", 0x0000, 0x8000, CRC(9b3e7b97) SHA1(0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd))
7777 	ROM_LOAD ("yis604ext.rom",  0x8000, 0x4000, CRC(43e7a7fc) SHA1(0fbd45ef3dd7bb82d4c31f1947884f411f1ca344))
7778 
7779 	ROM_REGION (0x20000, "kanji", 0)
7780 	ROM_LOAD ("yis604kfn.rom", 0x0000, 0x20000, CRC(5a59926e) SHA1(6acaf2eeb57f65f7408235d5e07b7563229de799))
7781 ROM_END
7782 
yis60464(machine_config & config)7783 void msx2_state::yis60464(machine_config &config)
7784 {
7785 	msx2(config);
7786 	// YM2149 (in S-3527)
7787 	// FDC: None, 0 drives
7788 	// 2 Cartridge slots
7789 	// S-3527 MSX Engine
7790 
7791 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
7792 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 1, 0, 1, "maincpu", 0x8000);
7793 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
7794 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
7795 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x10000); // 64KB Mapper RAM
7796 	add_cartridge_slot<3>(config, MSX_SLOT_YAMAHA_EXPANSION, "expansion", 3, 3, msx_yamaha_60pin, "sfg05");
7797 
7798 	msx2_cartlist(config);
7799 }
7800 
7801 /* MSX2 - Yamaha YIS604/128 */
7802 
7803 ROM_START (yis604)
7804 	ROM_REGION (0x10000, "maincpu", 0)
7805 	ROM_LOAD ("yis604bios.rom", 0x0000, 0x8000, CRC(9b3e7b97) SHA1(0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd))
7806 	ROM_LOAD ("yis604ext.rom",  0x8000, 0x4000, CRC(43e7a7fc) SHA1(0fbd45ef3dd7bb82d4c31f1947884f411f1ca344))
7807 	ROM_LOAD ("yrm502.rom",     0xc000, 0x4000, CRC(51f7ddd1) SHA1(2a4b4a4657e3077df8a88f98210b76883d3702b1))
7808 
7809 	ROM_REGION (0x20000, "kanji", 0)
7810 	ROM_LOAD ("yis604kfn.rom", 0x0000, 0x20000, CRC(5a59926e) SHA1(6acaf2eeb57f65f7408235d5e07b7563229de799))
7811 ROM_END
7812 
yis604(machine_config & config)7813 void msx2_state::yis604(machine_config &config)
7814 {
7815 	msx2(config);
7816 	// YM2149 (in S-3527)
7817 	// FDC: None, 0 drives
7818 	// 2 Cartridge slots
7819 	// S-3527 MSX Engine
7820 
7821 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
7822 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 1, 0, 1, "maincpu", 0x8000);
7823 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
7824 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
7825 	add_internal_slot(config, MSX_SLOT_ROM, "yrm502", 3, 1, 1, 1, "maincpu", 0xc000);
7826 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x10000); // 64KB Mapper RAM
7827 	add_cartridge_slot<3>(config, MSX_SLOT_YAMAHA_EXPANSION, "expansion", 3, 3, msx_yamaha_60pin, "sfg05");
7828 
7829 	msx2_cartlist(config);
7830 }
7831 
7832 /* MSX2 - Yamaha YIS-805/128 */
7833 
7834 ROM_START (y805128)
7835 	ROM_REGION (0x14000, "maincpu", 0)
7836 	ROM_LOAD ("yis805128bios.rom", 0x0000, 0x8000, CRC(9b3e7b97) SHA1(0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd))
7837 	ROM_LOAD ("yis805128ext.rom",  0x8000, 0x4000, CRC(43e7a7fc) SHA1(0fbd45ef3dd7bb82d4c31f1947884f411f1ca344))
CRC(ab94a273)7838 	ROM_LOAD ("yis805128disk.rom", 0xc000, 0x4000, CRC(ab94a273) SHA1(4b08a057e5863ade179dcf8bc9377e90940e6d61))
7839 	ROM_LOAD ("yrm502.rom",       0x10000, 0x4000, CRC(51f7ddd1) SHA1(2a4b4a4657e3077df8a88f98210b76883d3702b1))
7840 
7841 	ROM_REGION (0x20000, "kanji", 0)
7842 	ROM_LOAD ("yis805128kfn.rom", 0x0000, 0x20000, CRC(5a59926e) SHA1(6acaf2eeb57f65f7408235d5e07b7563229de799))
7843 ROM_END
7844 
7845 void msx2_state::y805128(machine_config &config)
7846 {
7847 	msx2(config);
7848 	// YM2149 (in S-3527)
7849 	// FDC: wd2793?, 1 3.5" DSDD drive
7850 	// 2 Cartridge slots
7851 	// S-3527 MSX Engine
7852 
7853 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
7854 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 1, 0, 1, "maincpu", 0x8000);
7855 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
7856 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
7857 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 0, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
7858 	add_internal_slot(config, MSX_SLOT_ROM, "yrm502", 3, 1, 1, 1, "maincpu", 0x10000);
7859 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000); // 128KB Mapper RAM
7860 	add_cartridge_slot<3>(config, MSX_SLOT_YAMAHA_EXPANSION, "expansion", 3, 3, msx_yamaha_60pin, "sfg05");
7861 
7862 	msx_wd2793_force_ready(config);
7863 	msx_1_35_dd_drive(config);
7864 	msx2_floplist(config);
7865 
7866 	msx2_cartlist(config);
7867 }
7868 
7869 /* MSX2 - Yamaha YIS-805R2/128 */
7870 
7871 ROM_START (y805128r2)
7872 	ROM_REGION (0x28000, "maincpu", 0)
CRC(e7d08e29)7873 	ROM_LOAD ("yis805128r2bios.rom",   0x0000,  0x8000, CRC(e7d08e29) SHA1(0f851ee7a1cf79819f61cc89e9948ee72a413802))
7874 	ROM_LOAD ("yis805128r2ext.rom",    0x8000,  0x4000, CRC(34d21778) SHA1(03bf6d2ac86f5c9ab618e155442787c700f99fed))
7875 	ROM_LOAD ("yis805128r2disk.rom",   0xc000,  0x4000, CRC(9eb7e24d) SHA1(3a481c7b7e4f0406a55952bc5b9f8cf9d699376c))
7876 	ROM_LOAD ("yis805128r2net.rom",   0x10000,  0x8000, CRC(0e345b43) SHA1(e8fd2bbc1bdab12c73a0fec178a190f9063547bb))
7877 	ROM_LOAD ("yis805128r2paint.rom", 0x18000, 0x10000, CRC(1bda68a3) SHA1(7fd2a28c4fdaeb140f3c8c8fb90271b1472c97b9))
7878 ROM_END
7879 
7880 void msx2_state::y805128r2(machine_config &config)
7881 {
7882 	msx2_pal(config);
7883 	// YM2149 (in S-3527)
7884 	// FDC: wd2793?, 1 3.5" DSDD drive
7885 	// 2 Cartridge slots
7886 	// S-3527 MSX Engine
7887 	// Networking built in
7888 
7889 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
7890 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
7891 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
7892 	add_internal_slot(config, MSX_SLOT_ROM, "paint", 3, 0, 0, 4, "maincpu", 0x18000);
7893 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
7894 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 1, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
7895 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000); // 128KB Mapper RAM
7896 	add_internal_slot(config, MSX_SLOT_ROM, "net", 3, 3, 0, 2, "maincpu", 0x10000);
7897 
7898 	msx_wd2793_force_ready(config);
7899 	msx_1_35_dd_drive(config);
7900 	msx2_floplist(config);
7901 
7902 	msx2_cartlist(config);
7903 }
7904 
7905 /* MSX2 - Yamaha YIS-805R2/128 Estonian */
7906 
7907 ROM_START (y805128r2e)
7908 	ROM_REGION (0x28000, "maincpu", 0)
CRC(d0c20f54)7909 	ROM_LOAD ("yis805128r2ebios.rom",   0x0000,  0x8000, CRC(d0c20f54) SHA1(ebb7eb540a390509edfd36c84288ba85e63f2d1f))
7910 	ROM_LOAD ("yis805128r2eext.rom",    0x8000,  0x4000, CRC(34d21778) SHA1(03bf6d2ac86f5c9ab618e155442787c700f99fed))
7911 	ROM_LOAD ("yis805128r2edisk.rom",   0xc000,  0x4000, CRC(9eb7e24d) SHA1(3a481c7b7e4f0406a55952bc5b9f8cf9d699376c))
7912 	ROM_LOAD ("yis805128r2enet.rom",   0x10000,  0x8000, CRC(0e345b43) SHA1(e8fd2bbc1bdab12c73a0fec178a190f9063547bb))
7913 	ROM_LOAD ("yis805128r2epaint.rom", 0x18000, 0x10000, CRC(1bda68a3) SHA1(7fd2a28c4fdaeb140f3c8c8fb90271b1472c97b9))
7914 ROM_END
7915 
7916 void msx2_state::y805128r2e(machine_config &config)
7917 {
7918 	msx2_pal(config);
7919 	// YM2149 (in S-3527)
7920 	// FDC: wd2793?, 1 3.5" DSDD drive
7921 	// 2 Cartridge slots
7922 	// S-3527 MSX Engine
7923 	// Networking built in
7924 
7925 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
7926 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
7927 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
7928 	add_internal_slot(config, MSX_SLOT_ROM, "paint", 3, 0, 0, 4, "maincpu", 0x18000);
7929 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
7930 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 1, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
7931 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x20000); // 128KB Mapper RAM
7932 	add_internal_slot(config, MSX_SLOT_ROM, "net", 3, 3, 0, 2, "maincpu", 0x10000);
7933 
7934 	msx_wd2793_force_ready(config);
7935 	msx_1_35_dd_drive(config);
7936 	msx2_floplist(config);
7937 
7938 	msx2_cartlist(config);
7939 }
7940 
7941 /* MSX2 - Yamaha YIS-805/256 */
7942 
7943 ROM_START (y805256)
7944 	ROM_REGION (0x14000, "maincpu", 0)
7945 	ROM_LOAD ("yis805256bios.rom", 0x0000, 0x8000, CRC(9b3e7b97) SHA1(0081ea0d25bc5cd8d70b60ad8cfdc7307812c0fd))
7946 	ROM_LOAD ("yis805256ext.rom",  0x8000, 0x4000, CRC(43e7a7fc) SHA1(0fbd45ef3dd7bb82d4c31f1947884f411f1ca344))
CRC(ab94a273)7947 	ROM_LOAD ("yis805256disk.rom", 0xc000, 0x4000, CRC(ab94a273) SHA1(4b08a057e5863ade179dcf8bc9377e90940e6d61))
7948 	ROM_LOAD ("yrm502.rom",       0x10000, 0x4000, CRC(51f7ddd1) SHA1(2a4b4a4657e3077df8a88f98210b76883d3702b1))
7949 
7950 	ROM_REGION (0x20000, "kanji", 0)
7951 	ROM_LOAD ("yis805256kfn.rom", 0x0000, 0x20000, CRC(5a59926e) SHA1(6acaf2eeb57f65f7408235d5e07b7563229de799))
7952 ROM_END
7953 
7954 void msx2_state::y805256(machine_config &config)
7955 {
7956 	msx2(config);
7957 	// YM2149 (in S-3527)
7958 	// FDC: wd2793?, 1 3.5" DSDD drive
7959 	// 2 Cartridge slots
7960 	// S-3527 MSX Engine
7961 
7962 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
7963 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 0, 1, 0, 1, "maincpu", 0x8000);
7964 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
7965 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
7966 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 0, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
7967 	add_internal_slot(config, MSX_SLOT_ROM, "yrm502", 3, 1, 1, 1, "maincpu", 0x10000);
7968 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x40000); // 256KB Mapper RAM
7969 	add_cartridge_slot<3>(config, MSX_SLOT_YAMAHA_EXPANSION, "expansion", 3, 3, msx_yamaha_60pin, "sfg05");
7970 
7971 	msx_wd2793_force_ready(config);
7972 	msx_1_35_dd_drive(config);
7973 	msx2_floplist(config);
7974 
7975 	msx2_cartlist(config);
7976 }
7977 
7978 /********************************  MSX 2+ **********************************/
7979 
7980 /* MSX2+ - Ciel Expert 3 IDE */
7981 
7982 ROM_START (expert3i )
7983 	ROM_REGION (0x24000, "maincpu", 0)
CRC(a10bb1ce)7984 	ROM_LOAD ("exp30bios.rom", 0x0000,  0x8000, CRC(a10bb1ce) SHA1(5029cf47031b22bd5d1f68ebfd3be6d6da56dfe9))
7985 	ROM_LOAD ("exp30ext.rom",  0x8000,  0x4000, CRC(6bcf4100) SHA1(cc1744c6c513d6409a142b4fb42fbe70a95d9b7f))
7986 	ROM_LOAD ("cieldisk.rom",  0xc000,  0x4000, CRC(bb550b09) SHA1(0274dd9b5096065a7f4ed019101124c9bd1d56b8))
7987 	ROM_LOAD ("exp30mus.rom", 0x10000,  0x4000, CRC(9881b3fd) SHA1(befebc916bfdb5e8057040f0ae82b5517a7750db))
7988 	ROM_LOAD ("ide240a.rom",  0x14000, 0x10000, CRC(7adf857f) SHA1(8a919dbeed92db8c06a611279efaed8552810239))
7989 ROM_END
7990 
7991 void msx2_state::expert3i(machine_config &config)
7992 {
7993 	msx2p(config);
7994 	// AY8910/YM2149?
7995 	// FDC: wd2793, 1 or 2? drives
7996 	// 2 Cartridge slots?
7997 
7998 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
7999 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
8000 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 1, 1, 0, 1, "maincpu", 0x8000);
8001 	add_internal_slot(config, MSX_SLOT_MUSIC, "mus", 1, 1, 1, 1, "maincpu", 0x10000).set_ym2413_tag("ym2413");
8002 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 1, 2, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
8003 	add_internal_slot(config, MSX_SLOT_ROM, "ide", 1, 3, 0, 4, "maincpu", 0x14000);         /* IDE hardware needs to be emulated */
8004 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 2, 0, 0, 4).set_total_size(0x40000);       /* 256KB?? Mapper RAM */
8005 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
8006 
8007 	msx_ym2413(config);
8008 
8009 	msx_wd2793_force_ready(config);
8010 	msx_1_35_dd_drive(config);
8011 	msx2p_floplist(config);
8012 
8013 	msx2_cartlist(config);
8014 }
8015 
8016 /* MSX2+ - Ciel Expert 3 Turbo */
8017 
8018 /* Uses a Z84C0010 - CMOS processor working at 7 MHz */
8019 ROM_START (expert3t )
8020 	ROM_REGION (0x18000, "maincpu",0)
CRC(a10bb1ce)8021 	ROM_LOAD ("exp30bios.rom", 0x0000, 0x8000, CRC(a10bb1ce) SHA1(5029cf47031b22bd5d1f68ebfd3be6d6da56dfe9))
8022 	ROM_LOAD ("exp30ext.rom",  0x8000, 0x4000, CRC(6bcf4100) SHA1(cc1744c6c513d6409a142b4fb42fbe70a95d9b7f))
8023 	ROM_LOAD ("cieldisk.rom",  0xc000, 0x4000, CRC(bb550b09) SHA1(0274dd9b5096065a7f4ed019101124c9bd1d56b8))
8024 	ROM_LOAD ("exp30mus.rom", 0x10000, 0x4000, CRC(9881b3fd) SHA1(befebc916bfdb5e8057040f0ae82b5517a7750db))
8025 	ROM_LOAD ("turbo.rom",    0x14000, 0x4000, CRC(ab528416) SHA1(d468604269ae7664ac739ea9f922a05e14ffa3d1))
8026 ROM_END
8027 
8028 void msx2_state::expert3t(machine_config &config)
8029 {
8030 	msx2p(config);
8031 	// AY8910
8032 	// FDC: wd2793?, 1 or 2? drives
8033 	// 4 Cartridge/Expansion slots?
8034 	// FM/YM2413 built-in
8035 
8036 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
8037 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
8038 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 1, 1, 0, 1, "maincpu", 0x8000);
8039 	add_internal_slot(config, MSX_SLOT_MUSIC, "mus", 1, 1, 1, 1, "maincpu", 0x10000).set_ym2413_tag("ym2413");
8040 	add_internal_slot(config, MSX_SLOT_ROM, "turbo", 1, 2, 1, 1, "maincpu", 0x14000);          /* Turbo hardware needs to be emulated */
8041 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 1, 3, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
8042 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 2, 0, 0, 4).set_total_size(0x40000);       /* 256KB Mapper RAM */
8043 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
8044 
8045 	msx_ym2413(config);
8046 
8047 	msx_wd2793_force_ready(config);
8048 	msx_1_35_dd_drive(config);
8049 	msx2p_floplist(config);
8050 
8051 	msx2_cartlist(config);
8052 }
8053 
8054 /* MSX2+ - Gradiente Expert AC88+ */
8055 
8056 ROM_START (expertac)
8057 	ROM_REGION(0x18000, "maincpu", 0)
8058 	ROM_LOAD ("ac88bios.rom", 0x0000, 0x8000, CRC(9ce0da44) SHA1(1fc2306911ab6e1ebdf7cb8c3c34a7f116414e88))
CRC(c74c005c)8059 	ROM_LOAD ("ac88ext.rom",  0x8000, 0x4000, CRC(c74c005c) SHA1(d5528825c7eea2cfeadd64db1dbdbe1344478fc6))
8060 	ROM_LOAD ("panadisk.rom", 0xc000, 0x4000, CRC(17fa392b) SHA1(7ed7c55e0359737ac5e68d38cb6903f9e5d7c2b6))
8061 	ROM_LOAD ("ac88asm.rom", 0x10000, 0x4000, CRC(a8a955ae) SHA1(91e522473a8470511584df3ee5b325ea5e2b81ef))
8062 	ROM_LOAD ("xbasic2.rom", 0x14000, 0x4000, CRC(2825b1a0) SHA1(47370bec7ca1f0615a54eda548b07fbc0c7ef398))
8063 ROM_END
8064 
8065 void msx2_state::expertac(machine_config &config)
8066 {
8067 	msx2p(config);
8068 	// AY8910/YM2149?
8069 	// FDC: wd2793?, 1 or 2? drives
8070 	// 2 Cartridge slots?
8071 
8072 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
8073 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
8074 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
8075 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000);   /* 64KB Mapper RAM?? */
8076 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
8077 	add_internal_slot(config, MSX_SLOT_ROM, "asm", 3, 1, 1, 1, "maincpu", 0x10000);
8078 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 2, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
8079 	add_internal_slot(config, MSX_SLOT_ROM, "xbasic", 3, 3, 1, 1, "maincpu", 0x14000);
8080 
8081 	msx_wd2793_force_ready(config);
8082 	msx_1_35_dd_drive(config);
8083 	msx2p_floplist(config);
8084 
8085 	msx2_cartlist(config);
8086 }
8087 
8088 /* MSX2+ - Gradiente Expert DDX+ */
8089 
8090 ROM_START (expertdx)
8091 	ROM_REGION(0x1c000, "maincpu", 0)
CRC(e00af3dc)8092 	ROM_LOAD ("ddxbios.rom",  0x0000, 0x8000, CRC(e00af3dc) SHA1(5c463dd990582e677c8206f61035a7c54d8c67f0))
8093 	ROM_LOAD ("ddxext.rom",   0x8000, 0x4000, CRC(b8ba44d3) SHA1(fe0254cbfc11405b79e7c86c7769bd6322b04995))
8094 	ROM_LOAD ("panadisk.rom", 0xc000, 0x4000, CRC(17fa392b) SHA1(7ed7c55e0359737ac5e68d38cb6903f9e5d7c2b6))
8095 	ROM_LOAD ("xbasic2.rom", 0x10000, 0x4000, CRC(2825b1a0) SHA1(47370bec7ca1f0615a54eda548b07fbc0c7ef398))
8096 	ROM_LOAD ("kanji.rom",   0x14000, 0x8000, CRC(b4fc574d) SHA1(dcc3a67732aa01c4f2ee8d1ad886444a4dbafe06))
8097 ROM_END
8098 
8099 void msx2_state::expertdx(machine_config &config)
8100 {
8101 	msx2p(config);
8102 	// AY8910/YM2149?
8103 	// FDC: tc8566af, 1 3.5" DSDD drive?
8104 	// 2 Cartridge slots?
8105 
8106 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
8107 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
8108 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 1, 1, 0, 1, "maincpu", 0x8000);
8109 	add_internal_slot(config, MSX_SLOT_ROM, "xbasic", 1, 2, 1, 1, "maincpu", 0x10000);
8110 	add_internal_slot(config, MSX_SLOT_DISK3, "disk", 1, 3, 1, 1, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
8111 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 2, 0, 0, 4).set_total_size(0x10000);   /* 64KB Mapper RAM?? */
8112 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 3, 0, msx_cart, nullptr);
8113 	/* Kanji? */
8114 
8115 	msx_tc8566af(config);
8116 	msx_1_35_dd_drive(config);
8117 	msx2p_floplist(config);
8118 
8119 	msx2_cartlist(config);
8120 }
8121 
8122 /* MSX2+ - Panasonic FS-A1FX */
8123 
8124 ROM_START (fsa1fx)
8125 	ROM_REGION (0x20000, "maincpu",0)
8126 	ROM_LOAD ("a1fxbios.rom",  0x0000, 0x8000, CRC(19771608) SHA1(e90f80a61d94c617850c415e12ad70ac41e66bb7))
CRC(b8ba44d3)8127 	ROM_LOAD ("a1fxext.rom",   0x8000, 0x4000, CRC(b8ba44d3) SHA1(fe0254cbfc11405b79e7c86c7769bd6322b04995))
8128 	ROM_LOAD ("a1fxdisk.rom",  0xc000, 0x4000, CRC(2bda0184) SHA1(2a0d228afde36ac7c5d3c2aac9c7c664dd071a8c))
8129 	ROM_LOAD ("a1fxkdr.rom",  0x10000, 0x8000, CRC(a068cba9) SHA1(1ef3956f7f918873fb9b031339bba45d1e5e5878))
8130 	ROM_LOAD ("a1fxcock.rom", 0x18000, 0x8000, CRC(f662e6eb) SHA1(9d67fab55b85f4ac4f5924323a70020eb8589057))
8131 
8132 	ROM_REGION(0x20000, "kanji", 0)
8133 	ROM_LOAD ("a1fxkfn.rom", 0, 0x20000, CRC(b244f6cf) SHA1(e0e99cd91e88ce2676445663f832c835d74d6fd4))
8134 ROM_END
8135 
8136 void msx2_state::fsa1fx(machine_config &config)
8137 {
8138 	msx2p(config);
8139 	// AY8910/YM2149?
8140 	// FDC: tc8566af, 1 3.5" DSDD drive
8141 	// 2 Cartridge slots?
8142 
8143 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
8144 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
8145 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
8146 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000).set_ramio_bits(0x80);   /* 64KB Mapper RAM */
8147 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
8148 	add_internal_slot(config, MSX_SLOT_ROM, "kdr", 3, 1, 1, 2, "maincpu", 0x10000);
8149 	add_internal_slot(config, MSX_SLOT_DISK3, "disk", 3, 2, 1, 1, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
8150 	add_internal_slot(config, MSX_SLOT_ROM, "cock", 3, 3, 1, 2, "maincpu", 0x18000);
8151 
8152 	msx_matsushita_device &matsushita(MSX_MATSUSHITA(config, "matsushita", 0));
8153 	matsushita.turbo_callback().set(FUNC(msx2_state::turbo_w));
8154 
8155 	MSX_SYSTEMFLAGS(config, "sysflags", m_maincpu, 0xff);
8156 
8157 	msx_tc8566af(config);
8158 	msx_1_35_dd_drive(config);
8159 	msx2p_floplist(config);
8160 
8161 	msx2_cartlist(config);
8162 }
8163 
8164 /* MSX2+ - Panasonic FS-A1WSX */
8165 
8166 ROM_START (fsa1wsx)
8167 	ROM_REGION (0x21c000, "maincpu",0)
8168 	ROM_LOAD ("a1wsbios.rom",  0x0000,   0x8000, CRC(358ec547) SHA1(f4433752d3bf876bfefb363c749d4d2e08a218b6))
CRC(b8ba44d3)8169 	ROM_LOAD ("a1wsext.rom",   0x8000,   0x4000, CRC(b8ba44d3) SHA1(fe0254cbfc11405b79e7c86c7769bd6322b04995))
8170 	ROM_LOAD ("a1wsdisk.rom",  0xc000,   0x4000, CRC(ac7d92b4) SHA1(b7068e2aab02072852ca249596b7550ac632c4c2))
8171 	ROM_LOAD ("a1wskdr.rom",  0x10000,   0x8000, CRC(b4fc574d) SHA1(dcc3a67732aa01c4f2ee8d1ad886444a4dbafe06))
8172 	ROM_LOAD ("a1wsmusp.rom", 0x18000,   0x4000, CRC(456e494e) SHA1(6354ccc5c100b1c558c9395fa8c00784d2e9b0a3))
8173 	ROM_LOAD ("a1wsfirm.rom", 0x1c000, 0x200000, CRC(e363595d) SHA1(3330d9b6b76e3c4ccb7cf252496ed15d08b95d3f))
8174 
8175 	ROM_REGION(0x40000, "kanji", 0)
8176 	ROM_LOAD ("a1wskfn.rom", 0, 0x40000, CRC(1f6406fb) SHA1(5aff2d9b6efc723bc395b0f96f0adfa83cc54a49))
8177 ROM_END
8178 
8179 void msx2_state::fsa1wsx(machine_config &config)
8180 {
8181 	msx2p(config);
8182 	// AY8910/YM2149?
8183 	// FDC: tc8566af, 1 3.5" DSDD drive
8184 	// 2 Cartridge slots
8185 	// FM built-in
8186 	// No cassette port
8187 
8188 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
8189 	add_internal_slot(config, MSX_SLOT_MUSIC, "mus", 0, 2, 1, 1, "maincpu", 0x18000).set_ym2413_tag("ym2413");
8190 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
8191 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
8192 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000).set_ramio_bits(0x80);   /* 64KB Mapper RAM */
8193 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
8194 	add_internal_slot(config, MSX_SLOT_ROM, "kdr", 3, 1, 1, 2, "maincpu", 0x10000);
8195 	add_internal_slot(config, MSX_SLOT_DISK3, "disk", 3, 2, 1, 1, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
8196 	add_internal_slot(config, MSX_SLOT_PANASONIC08, "firm", 3, 3, 0, 4, "maincpu", 0x1c000);
8197 
8198 	msx_matsushita_device &matsushita(MSX_MATSUSHITA(config, "matsushita", 0));
8199 	matsushita.turbo_callback().set(FUNC(msx2_state::turbo_w));
8200 
8201 	MSX_SYSTEMFLAGS(config, "sysflags", m_maincpu, 0xff);
8202 
8203 	msx_ym2413(config);
8204 
8205 	msx_tc8566af(config);
8206 	msx_1_35_dd_drive(config);
8207 	msx2p_floplist(config);
8208 
8209 	msx2_cartlist(config);
8210 }
8211 
8212 /* MSX2+ - Panasonic FS-A1WX */
8213 
8214 ROM_START (fsa1wx)
8215 	ROM_REGION (0x21c000, "maincpu",0)
8216 	ROM_LOAD ("a1wxbios.rom",  0x0000,   0x8000, CRC(19771608) SHA1(e90f80a61d94c617850c415e12ad70ac41e66bb7))
CRC(b8ba44d3)8217 	ROM_LOAD ("a1wxext.rom",   0x8000,   0x4000, CRC(b8ba44d3) SHA1(fe0254cbfc11405b79e7c86c7769bd6322b04995))
8218 	ROM_LOAD ("a1wxdisk.rom",  0xc000,   0x4000, CRC(2bda0184) SHA1(2a0d228afde36ac7c5d3c2aac9c7c664dd071a8c))
8219 	ROM_LOAD ("a1wxkdr.rom",  0x10000,   0x8000, CRC(a068cba9) SHA1(1ef3956f7f918873fb9b031339bba45d1e5e5878))
8220 	ROM_LOAD ("a1wxmusp.rom", 0x18000,   0x4000, CRC(456e494e) SHA1(6354ccc5c100b1c558c9395fa8c00784d2e9b0a3))
8221 	ROM_LOAD ("a1wxfirm.rom", 0x1c000, 0x200000, CRC(283f3250) SHA1(d37ab4bd2bfddd8c97476cbe7347ae581a6f2972))
8222 
8223 	ROM_REGION(0x40000, "kanji", 0)
8224 	ROM_LOAD ("a1wxkfn.rom", 0, 0x40000, CRC(1f6406fb) SHA1(5aff2d9b6efc723bc395b0f96f0adfa83cc54a49))
8225 ROM_END
8226 
8227 void msx2_state::fsa1wx(machine_config &config)
8228 {
8229 	msx2p(config);
8230 	// AY8910/YM2149?
8231 	// FDC: tc8566af, 1 3.5" DSDD drive
8232 	// 2 Cartridge slots
8233 	// FM built-in
8234 	// MSX Engine T9769A
8235 
8236 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
8237 	add_internal_slot(config, MSX_SLOT_MUSIC, "mus", 0, 2, 1, 1, "maincpu", 0x18000).set_ym2413_tag("ym2413");
8238 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
8239 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
8240 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000).set_ramio_bits(0x80);   /* 64KB Mapper RAM */
8241 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
8242 	add_internal_slot(config, MSX_SLOT_ROM, "kdr", 3, 1, 1, 2, "maincpu", 0x10000);
8243 	add_internal_slot(config, MSX_SLOT_DISK3, "disk", 3, 2, 1, 1, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
8244 	add_internal_slot(config, MSX_SLOT_PANASONIC08, "firm", 3, 3, 0, 4, "maincpu", 0x1c000);
8245 
8246 	msx_matsushita_device &matsushita(MSX_MATSUSHITA(config, "matsushita", 0));
8247 	matsushita.turbo_callback().set(FUNC(msx2_state::turbo_w));
8248 
8249 	MSX_SYSTEMFLAGS(config, "sysflags", m_maincpu, 0xff);
8250 
8251 	msx_ym2413(config);
8252 
8253 	msx_tc8566af(config);
8254 	msx_1_35_dd_drive(config);
8255 	msx2p_floplist(config);
8256 
8257 	msx2_cartlist(config);
8258 }
8259 
8260 /* MSX2+ - Panasonic FS-A1WX (a) */
8261 ROM_START (fsa1wxa)
8262 	ROM_REGION (0x21c000, "maincpu",0)
8263 	ROM_LOAD ("a1wxbios.rom",  0x0000,   0x8000, CRC(19771608) SHA1(e90f80a61d94c617850c415e12ad70ac41e66bb7))
CRC(b8ba44d3)8264 	ROM_LOAD ("a1wxext.rom",   0x8000,   0x4000, CRC(b8ba44d3) SHA1(fe0254cbfc11405b79e7c86c7769bd6322b04995))
8265 	ROM_LOAD ("a1wxdisk.rom",  0xc000,   0x4000, CRC(2bda0184) SHA1(2a0d228afde36ac7c5d3c2aac9c7c664dd071a8c))
8266 	ROM_LOAD ("a1wxkdr.rom",  0x10000,   0x8000, CRC(a068cba9) SHA1(1ef3956f7f918873fb9b031339bba45d1e5e5878))
8267 	ROM_LOAD ("a1wxmusp.rom", 0x18000,   0x4000, CRC(456e494e) SHA1(6354ccc5c100b1c558c9395fa8c00784d2e9b0a3))
8268 	ROM_LOAD ("a1wxfira.rom", 0x1c000, 0x200000, CRC(58440a8e) SHA1(8e0d4a77e7d5736e8225c2df4701509363eb230f))
8269 
8270 	ROM_REGION(0x40000, "kanji", 0)
8271 	ROM_LOAD ("a1wxkfn.rom", 0, 0x40000, CRC(1f6406fb) SHA1(5aff2d9b6efc723bc395b0f96f0adfa83cc54a49))
8272 ROM_END
8273 
8274 void msx2_state::fsa1wxa(machine_config &config)
8275 {
8276 	msx2p(config);
8277 	// AY8910/YM2149?
8278 	// FDC: tc8566af, 1 3.5" DSDD drive
8279 	// 2 Cartridge slots?
8280 	// FM built-in
8281 
8282 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
8283 	add_internal_slot(config, MSX_SLOT_MUSIC, "mus", 0, 2, 1, 1, "maincpu", 0x18000).set_ym2413_tag("ym2413");
8284 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
8285 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
8286 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000).set_ramio_bits(0x80);   /* 64KB Mapper RAM */
8287 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
8288 	add_internal_slot(config, MSX_SLOT_ROM, "kdr", 3, 1, 1, 2, "maincpu", 0x10000);
8289 	add_internal_slot(config, MSX_SLOT_DISK3, "disk", 3, 2, 1, 1, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
8290 	add_internal_slot(config, MSX_SLOT_PANASONIC08, "firm", 3, 3, 0, 4, "maincpu", 0x1c000);
8291 
8292 	msx_matsushita_device &matsushita(MSX_MATSUSHITA(config, "matsushita", 0));
8293 	matsushita.turbo_callback().set(FUNC(msx2_state::turbo_w));
8294 
8295 	MSX_SYSTEMFLAGS(config, "sysflags", m_maincpu, 0xff);
8296 
8297 	msx_ym2413(config);
8298 
8299 	msx_tc8566af(config);
8300 	msx_1_35_dd_drive(config);
8301 	msx2p_floplist(config);
8302 
8303 	msx2_cartlist(config);
8304 }
8305 
8306 /* MSX2+ - Sanyo Wavy PHC-35J */
8307 
8308 ROM_START (phc35j)
8309 	ROM_REGION (0x14000, "maincpu",0)
8310 	ROM_LOAD ("35jbios.rom", 0x0000, 0x8000, CRC(358ec547) SHA1(f4433752d3bf876bfefb363c749d4d2e08a218b6))
CRC(b8ba44d3)8311 	ROM_LOAD ("35jext.rom",  0x8000, 0x4000, CRC(b8ba44d3) SHA1(fe0254cbfc11405b79e7c86c7769bd6322b04995))
8312 	ROM_LOAD ("35jkdr.rom",  0xc000, 0x8000, CRC(b4fc574d) SHA1(dcc3a67732aa01c4f2ee8d1ad886444a4dbafe06))
8313 
8314 	ROM_REGION(0x20000, "kanji", 0)
8315 	ROM_LOAD ("35jkfn.rom", 0, 0x20000, CRC(c9651b32) SHA1(84a645becec0a25d3ab7a909cde1b242699a8662))
8316 ROM_END
8317 
8318 void msx2_state::phc35j(machine_config &config)
8319 {
8320 	msx2p(config);
8321 	// AY8910/YM2149?
8322 	// FDC: None, 0 drives
8323 	// 2 Cartridge slots
8324 
8325 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
8326 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
8327 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
8328 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000).set_ramio_bits(0x80);   /* 64KB Mapper RAM */
8329 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
8330 	add_internal_slot(config, MSX_SLOT_ROM, "kdr", 3, 1, 1, 2, "maincpu", 0xc000);
8331 
8332 	MSX_SYSTEMFLAGS(config, "sysflags", m_maincpu, 0xff);
8333 
8334 	msx2_cartlist(config);
8335 }
8336 
8337 /* MSX2+ - Sanyo Wavy PHC-70FD1 */
8338 
8339 ROM_START (phc70fd)
8340 	ROM_REGION (0x20000, "maincpu",0)
8341 	ROM_LOAD ("70fdbios.rom", 0x0000, 0x8000, CRC(19771608) SHA1(e90f80a61d94c617850c415e12ad70ac41e66bb7))
CRC(b8ba44d3)8342 	ROM_LOAD ("70fdext.rom",  0x8000, 0x4000, CRC(b8ba44d3) SHA1(fe0254cbfc11405b79e7c86c7769bd6322b04995))
8343 	ROM_LOAD ("70fddisk.rom", 0xc000, 0x4000, CRC(db7f1125) SHA1(9efa744be8355675e7bfdd3976bbbfaf85d62e1d))
8344 	ROM_LOAD ("70fdkdr.rom", 0x10000, 0x8000, CRC(a068cba9) SHA1(1ef3956f7f918873fb9b031339bba45d1e5e5878))
8345 	ROM_LOAD ("70fdmus.rom", 0x18000, 0x4000, CRC(5c32eb29) SHA1(aad42ba4289b33d8eed225d42cea930b7fc5c228))
8346 	ROM_LOAD ("70fdbas.rom", 0x1c000, 0x4000, CRC(da7be246) SHA1(22b3191d865010264001b9d896186a9818478a6b))
8347 
8348 	ROM_REGION(0x20000, "kanji", 0)
8349 	ROM_LOAD ("70fdkfn.rom", 0, 0x20000, CRC(c9651b32) SHA1(84a645becec0a25d3ab7a909cde1b242699a8662))
8350 ROM_END
8351 
8352 void msx2_state::phc70fd(machine_config &config)
8353 {
8354 	msx2p(config);
8355 	// AY8910/YM2149?
8356 	// FDC: tc8566af, 1 3.5" DSDD drive
8357 	// 2 Cartridge slots
8358 	// FM built-in
8359 
8360 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
8361 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
8362 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
8363 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000).set_ramio_bits(0x80);   /* 64KB Mapper RAM */
8364 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
8365 	add_internal_slot(config, MSX_SLOT_ROM, "kdr", 3, 1, 1, 2, "maincpu", 0x10000);
8366 	add_internal_slot(config, MSX_SLOT_DISK3, "disk", 3, 2, 1, 1, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
8367 	add_internal_slot(config, MSX_SLOT_MUSIC, "mus", 3, 3, 1, 1, "maincpu", 0x18000).set_ym2413_tag("ym2413");
8368 	add_internal_slot(config, MSX_SLOT_ROM, "bas", 3, 3, 2, 1, "maincpu", 0x1c000);
8369 
8370 	MSX_SYSTEMFLAGS(config, "sysflags", m_maincpu, 0xff);
8371 
8372 	msx_ym2413(config);
8373 
8374 	msx_tc8566af(config);
8375 	msx_1_35_dd_drive(config);
8376 	msx2p_floplist(config);
8377 
8378 	msx2_cartlist(config);
8379 }
8380 
8381 /* MSX2+ - Sanyo Wavy PHC-70FD2 */
8382 ROM_START (phc70fd2)
8383 	ROM_REGION (0x20000, "maincpu",0)
8384 	ROM_LOAD ("70f2bios.rom", 0x0000, 0x8000, CRC(19771608) SHA1(e90f80a61d94c617850c415e12ad70ac41e66bb7))
CRC(b8ba44d3)8385 	ROM_LOAD ("70f2ext.rom",  0x8000, 0x4000, CRC(b8ba44d3) SHA1(fe0254cbfc11405b79e7c86c7769bd6322b04995))
8386 	ROM_LOAD ("70f2disk.rom", 0xc000, 0x4000, CRC(db7f1125) SHA1(9efa744be8355675e7bfdd3976bbbfaf85d62e1d))
8387 	ROM_LOAD ("70f2kdr.rom", 0x10000, 0x8000, CRC(a068cba9) SHA1(1ef3956f7f918873fb9b031339bba45d1e5e5878))
8388 	ROM_LOAD ("70f2mus.rom", 0x18000, 0x4000, CRC(5c32eb29) SHA1(aad42ba4289b33d8eed225d42cea930b7fc5c228))
8389 	ROM_LOAD ("70f2bas.rom", 0x1c000, 0x4000, CRC(da7be246) SHA1(22b3191d865010264001b9d896186a9818478a6b))
8390 
8391 	ROM_REGION(0x40000, "kanji", 0)
8392 	ROM_LOAD ("70f2kfn.rom", 0, 0x40000, CRC(9a850db9) SHA1(bcdb4dae303dfe5234f372d70a5e0271d3202c36))
8393 ROM_END
8394 
8395 void msx2_state::phc70fd2(machine_config &config)
8396 {
8397 	msx2p(config);
8398 	// AY8910/YM2149?
8399 	// FDC: tc8566af, 2 3.5" DSDD drives
8400 	// 2 Cartridge slots
8401 	// FM built-in
8402 
8403 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
8404 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
8405 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
8406 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000).set_ramio_bits(0x80);   /* 64KB Mapper RAM */
8407 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
8408 	add_internal_slot(config, MSX_SLOT_ROM, "kdr", 3, 1, 1, 2, "maincpu", 0x10000);
8409 	add_internal_slot(config, MSX_SLOT_DISK3, "disk", 3, 2, 1, 1, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
8410 	add_internal_slot(config, MSX_SLOT_MUSIC, "mus", 3, 3, 1, 1, "maincpu", 0x18000).set_ym2413_tag("ym2413");
8411 	add_internal_slot(config, MSX_SLOT_ROM, "bas", 3, 3, 2, 1, "maincpu", 0x1c000);
8412 
8413 	MSX_SYSTEMFLAGS(config, "sysflags", m_maincpu, 0xff);
8414 
8415 	msx_ym2413(config);
8416 
8417 	msx_tc8566af(config);
8418 	msx_2_35_dd_drive(config);
8419 	msx2p_floplist(config);
8420 
8421 	msx2_cartlist(config);
8422 }
8423 
8424 /* MSX2+ - Sony HB-F1XDJ */
8425 
8426 ROM_START (hbf1xdj)
8427 	ROM_REGION (0x11c000, "maincpu",0)
8428 	ROM_LOAD ("f1xjbios.rom",  0x0000,   0x8000, CRC(00870134) SHA1(e2fbd56e42da637609d23ae9df9efd1b4241b18a))
CRC(b8ba44d3)8429 	ROM_LOAD ("f1xjext.rom",   0x8000,   0x4000, CRC(b8ba44d3) SHA1(fe0254cbfc11405b79e7c86c7769bd6322b04995))
8430 	ROM_LOAD ("f1xjdisk.rom",  0xc000,   0x4000, CRC(a21f5266) SHA1(c1bb307a570ab833e3bfcc4a58a4f4e12dc1df0f))
8431 	ROM_LOAD ("f1xjkdr.rom",  0x10000,   0x8000, CRC(a068cba9) SHA1(1ef3956f7f918873fb9b031339bba45d1e5e5878))
8432 	ROM_LOAD ("f1xjmus.rom",  0x18000,   0x4000, CRC(5c32eb29) SHA1(aad42ba4289b33d8eed225d42cea930b7fc5c228))
8433 	ROM_LOAD ("f1xjfirm.rom", 0x1c000, 0x100000, CRC(77be583f) SHA1(ade0c5ba5574f8114d7079050317099b4519e88f))
8434 
8435 	ROM_REGION(0x40000, "kanji", 0)
8436 	ROM_LOAD ("f1xjkfn.rom", 0, 0x40000, CRC(7016dfd0) SHA1(218d91eb6df2823c924d3774a9f455492a10aecb))
8437 ROM_END
8438 
8439 void msx2_state::hbf1xdj(machine_config &config)
8440 {
8441 	msx2p(config);
8442 	// YM2149 (in S-1985 MSX Engine)
8443 	// FDC: wd2793, 1 3.5" DSDD drive
8444 	// 2 Cartridge slots
8445 	// FM built-in
8446 	// S-1985 MSX Engine
8447 
8448 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
8449 	add_internal_slot(config, MSX_SLOT_SONY08, "firm", 0, 3, 0, 4, "maincpu", 0x1c000);
8450 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
8451 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
8452 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000).set_ramio_bits(0x80);   /* 64KB Mapper RAM */
8453 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
8454 	add_internal_slot(config, MSX_SLOT_ROM, "kdr", 3, 1, 1, 2, "maincpu", 0x10000);
8455 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 2, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
8456 	add_internal_slot(config, MSX_SLOT_MUSIC, "mus", 3, 3, 1, 1, "maincpu", 0x18000).set_ym2413_tag("ym2413");
8457 
8458 	MSX_SYSTEMFLAGS(config, "sysflags", m_maincpu, 0x00);
8459 
8460 	MSX_S1985(config, "s1985", 0);
8461 
8462 	msx_ym2413(config);
8463 
8464 	msx_wd2793(config);
8465 	msx_1_35_dd_drive(config);
8466 	msx2p_floplist(config);
8467 
8468 	msx2_cartlist(config);
8469 }
8470 
8471 /* MSX2+ - Sony HB-F1XV */
8472 
8473 ROM_START (hbf1xv)
8474 	ROM_REGION (0x11c000, "maincpu",0)
8475 	ROM_LOAD ("f1xvbios.rom",  0x0000,   0x8000, CRC(2c7ed27b) SHA1(174c9254f09d99361ff7607630248ff9d7d8d4d6))
CRC(b8ba44d3)8476 	ROM_LOAD ("f1xvext.rom",   0x8000,   0x4000, CRC(b8ba44d3) SHA1(fe0254cbfc11405b79e7c86c7769bd6322b04995))
8477 	ROM_LOAD ("f1xvdisk.rom",  0xc000,   0x4000, CRC(04e4e533) SHA1(5a4e7dbbfb759109c7d2a3b38bda9c60bf6ffef5))
8478 	ROM_LOAD ("f1xvkdr.rom",  0x10000,   0x8000, CRC(b4fc574d) SHA1(dcc3a67732aa01c4f2ee8d1ad886444a4dbafe06))
8479 	ROM_LOAD ("f1xvmus.rom",  0x18000,   0x4000, CRC(5c32eb29) SHA1(aad42ba4289b33d8eed225d42cea930b7fc5c228))
8480 	ROM_LOAD ("f1xvfirm.rom", 0x1c000, 0x100000, CRC(77be583f) SHA1(ade0c5ba5574f8114d7079050317099b4519e88f))
8481 
8482 	ROM_REGION(0x40000, "kanji", 0)
8483 	ROM_LOAD ("f1xvkfn.rom", 0, 0x40000, CRC(7016dfd0) SHA1(218d91eb6df2823c924d3774a9f455492a10aecb))
8484 ROM_END
8485 
8486 void msx2_state::hbf1xv(machine_config &config)
8487 {
8488 	msx2p(config);
8489 	// YM2149 (in S-1985 MSX Engine)
8490 	// FDC: wd2793, 1 3.5" DSDD drives
8491 	// 2 Cartridge slots
8492 	// FM built-in
8493 	// S-1985 MSX Engine
8494 
8495 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
8496 	add_internal_slot(config, MSX_SLOT_SONY08, "firm", 0, 3, 0, 4, "maincpu", 0x1c000);
8497 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
8498 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
8499 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x10000).set_ramio_bits(0x80);   /* 64KB Mapper RAM */
8500 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
8501 	add_internal_slot(config, MSX_SLOT_ROM, "kdr", 3, 1, 1, 2, "maincpu", 0x10000);
8502 	add_internal_slot_mirrored(config, MSX_SLOT_DISK1, "disk", 3, 2, 1, 2, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
8503 	add_internal_slot(config, MSX_SLOT_MUSIC, "mus", 3, 3, 1, 1, "maincpu", 0x18000).set_ym2413_tag("ym2413");
8504 
8505 	MSX_SYSTEMFLAGS(config, "sysflags", m_maincpu, 0x00);
8506 
8507 	MSX_S1985(config, "s1985", 0);
8508 
8509 	msx_ym2413(config);
8510 
8511 	msx_wd2793(config);
8512 	msx_1_35_dd_drive(config);
8513 	msx2p_floplist(config);
8514 
8515 	msx2_cartlist(config);
8516 }
8517 
8518 /* MSX2+ - Sony HB-F9S+ */
8519 
8520 ROM_START (hbf9sp)
8521 	ROM_REGION (0x18000, "maincpu", 0)
8522 	ROM_LOAD ("f9spbios.rom",  0x0000, 0x8000, CRC(994d3a80) SHA1(03556d380a9bd413faf1b9e3cbd7da47c7238775))
CRC(b8ba44d3)8523 	ROM_LOAD ("f9spext.rom",   0x8000, 0x4000, CRC(b8ba44d3) SHA1(fe0254cbfc11405b79e7c86c7769bd6322b04995))
8524 	ROM_LOAD ("f9psfrm1.rom",  0xc000, 0x4000, CRC(43d4cef1) SHA1(8948704bad9ff27873fa9ccd0ef89868e2bd6479))
8525 	ROM_LOAD ("f9spfrm2.rom", 0x10000, 0x8000, CRC(ea97069f) SHA1(2d1880d1f5a6944fcb1b198b997a3d90ecd1903d))
8526 ROM_END
8527 
8528 void msx2_state::hbf9sp(machine_config &config)
8529 {
8530 	msx2p(config);
8531 	// AY8910/YM2149?
8532 	// FDC: None, 0 drives
8533 	// 2 Cartridge slots?
8534 
8535 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
8536 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
8537 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
8538 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 0, 0, 1, "maincpu", 0x8000);
8539 	add_internal_slot(config, MSX_SLOT_ROM, "firm1", 3, 0, 1, 1, "maincpu", 0xc000);
8540 	add_internal_slot(config, MSX_SLOT_ROM, "firm2", 3, 1, 1, 2, "maincpu", 0x10000);
8541 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 2, 0, 4).set_total_size(0x10000);   /* 64KB?? Mapper RAM */
8542 
8543 	MSX_SYSTEMFLAGS(config, "sysflags", m_maincpu, 0x00);
8544 
8545 	msx2_cartlist(config);
8546 }
8547 
8548 /* MSX Turbo-R - Panasonic FS-A1GT */
8549 
8550 ROM_START (fsa1gt)
8551 	ROM_REGION (0x46c000, "maincpu", 0)
8552 	ROM_LOAD ("a1gtbios.rom",  0x0000,   0x8000, CRC(937c8dbb) SHA1(242e73d8284a012b275c0a266844ebbc4269d787))
8553 	ROM_LOAD ("a1gtext.rom",   0x8000,   0x4000, CRC(70aea0fe) SHA1(018d7a5222f28514908fb1b1513286a6558a6d05))
CRC(bb2a0eae)8554 	ROM_LOAD ("a1gtdos.rom",   0xc000,  0x10000, CRC(bb2a0eae) SHA1(4880bf34f1c86fff5456ec2b4cf70d02339e2caa))
8555 	ROM_LOAD ("a1gtkdr.rom",  0x1c000,   0x8000, CRC(eaf0d125) SHA1(5b39c1ccd3a213b78e02927f56a9abc72cd8c28d))
8556 	ROM_LOAD ("a1gtmus.rom",  0x24000,   0x4000, CRC(f5f93437) SHA1(6aea1aef5ec31c1826c22edf580525f93baad425))
8557 	ROM_LOAD ("a1gtopt.rom",  0x28000,   0x4000, CRC(50d11f60) SHA1(b4433a3975c57dd440d6bf12dbd28b2ac1b90ef4))
8558 	ROM_LOAD ("a1gtkfn.rom",  0x2c000,  0x40000, CRC(1f6406fb) SHA1(5aff2d9b6efc723bc395b0f96f0adfa83cc54a49))
8559 	ROM_LOAD ("a1gtfirm.rom", 0x6c000, 0x400000, CRC(feefeadc) SHA1(e779c338eb91a7dea3ff75f3fde76b8af22c4a3a))
8560 ROM_END
8561 
8562 void msx2_state::fsa1gt(machine_config &config)
8563 {
8564 	msx2(config);
8565 	// AY8910/YM2149?
8566 	// FDC: tc8566af, 1 3.5" DSDD drive
8567 	// 2 Cartridge slots
8568 	// FM built-in
8569 	// MIDI
8570 
8571 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
8572 	add_internal_slot(config, MSX_SLOT_MUSIC, "mus", 0, 2, 1, 1, "maincpu", 0x24000).set_ym2413_tag("ym2413");
8573 	add_internal_slot(config, MSX_SLOT_ROM, "opt", 0, 3, 1, 1, "maincpu", 0x28000);
8574 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
8575 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 2, 0, msx_cart, nullptr);
8576 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x20000);   /* 128KB?? Mapper RAM */
8577 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
8578 	add_internal_slot(config, MSX_SLOT_ROM, "kdr", 3, 1, 1, 2, "maincpu", 0x1c000);
8579 	add_internal_slot(config, MSX_SLOT_DISK4, "dos", 3, 2, 1, 3, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
8580 	add_internal_slot(config, MSX_SLOT_ROM, "firm", 3, 3, 0, 4, "maincpu", 0x6c000);
8581 
8582 	MSX_SYSTEMFLAGS(config, "sysflags", m_maincpu, 0x00);
8583 
8584 	msx_ym2413(config);
8585 
8586 	msx_tc8566af(config);
8587 	msx_1_35_dd_drive(config);
8588 	msxr_floplist(config);
8589 
8590 	msx2_cartlist(config);
8591 }
8592 
8593 /* MSX Turbo-R - Panasonic FS-A1ST */
8594 
8595 ROM_START (fsa1st)
8596 	ROM_REGION (0x46c000, "maincpu", 0)
8597 	ROM_LOAD ("a1stbios.rom",  0x0000,   0x8000, CRC(77b94ae0) SHA1(f078b5ec56884bfb81481d45c7151418770bff5a))
8598 	ROM_LOAD ("a1stext.rom",   0x8000,   0x4000, CRC(2c2c77a4) SHA1(373412f9c32762de1c3a7e27fc3d80614e0a0c8e))
8599 	ROM_LOAD ("a1stdos.rom",   0xc000,  0x10000, CRC(1fc71407) SHA1(5d2186658adcf4ce0c2d3232384b5712341108e5))
CRC(eaf0d125)8600 	ROM_LOAD ("a1stkdr.rom",  0x1c000,   0x8000, CRC(eaf0d125) SHA1(5b39c1ccd3a213b78e02927f56a9abc72cd8c28d))
8601 	ROM_LOAD ("a1stmus.rom",  0x24000,   0x4000, CRC(fd7dec41) SHA1(e002a9b426732e6c2d31e548c40cf7c122348ce3))
8602 	ROM_LOAD ("a1stopt.rom",  0x28000,   0x4000, CRC(c6a4a2a1) SHA1(cb06dea7b025745f9d2b87dcf03ded615287ead3))
8603 	ROM_LOAD ("a1stkfn.rom",  0x2c000,  0x40000, CRC(1f6406fb) SHA1(5aff2d9b6efc723bc395b0f96f0adfa83cc54a49))
8604 	ROM_LOAD ("a1stfirm.rom", 0x6c000, 0x400000, CRC(139ac99c) SHA1(c212b11fda13f83dafed688c54d098e7e47ab225))
8605 ROM_END
8606 
8607 void msx2_state::fsa1st(machine_config &config)
8608 {
8609 	msx2(config);
8610 	// AY8910/YM2149?
8611 	// FDC: tc8566af, 1 3.5" DSDD drive
8612 	// 2 Cartridge slots
8613 	// FM built-in
8614 
8615 	add_internal_slot(config, MSX_SLOT_ROM, "bios", 0, 0, 0, 2, "maincpu", 0x0000);
8616 	add_internal_slot(config, MSX_SLOT_MUSIC, "mus", 0, 2, 1, 1, "maincpu", 0x24000).set_ym2413_tag("ym2413");
8617 	add_internal_slot(config, MSX_SLOT_ROM, "opt", 0, 3, 1, 1, "maincpu", 0x28000);
8618 	add_cartridge_slot<1>(config, MSX_SLOT_CARTRIDGE, "cartslot1", 1, 0, msx_cart, nullptr);
8619 	add_cartridge_slot<2>(config, MSX_SLOT_CARTRIDGE, "cartslot2", 1, 0, msx_cart, nullptr);
8620 	add_internal_slot(config, MSX_SLOT_RAM_MM, "ram_mm", 3, 0, 0, 4).set_total_size(0x20000);   /* 128KB?? Mapper RAM */
8621 	add_internal_slot(config, MSX_SLOT_ROM, "ext", 3, 1, 0, 1, "maincpu", 0x8000);
8622 	add_internal_slot(config, MSX_SLOT_ROM, "kdr", 3, 1, 1, 2, "maincpu", 0x1c000);
8623 	add_internal_slot(config, MSX_SLOT_DISK4, "dos", 3, 2, 1, 3, "maincpu", 0xc000).set_tags("fdc", "fdc:0", "fdc:1");
8624 	add_internal_slot(config, MSX_SLOT_ROM, "firm", 3, 3, 0, 4, "maincpu", 0x6c000);
8625 
8626 	MSX_SYSTEMFLAGS(config, "sysflags", m_maincpu, 0x00);
8627 
8628 	msx_ym2413(config);
8629 
8630 	msx_tc8566af(config);
8631 	msx_1_35_dd_drive(config);
8632 	msxr_floplist(config);
8633 
8634 	msx2_cartlist(config);
8635 }
8636 
8637 
8638 /*   YEAR  NAME        PARENT    COMPAT MACHINE     INPUT     CLASS      INIT        COMPANY       FULLNAME */
8639 /* MSX1 */
8640 COMP(1986, ax150,      0,        0,     ax150,      msx,      msx_state, empty_init, "Al Alamiah", "AX-150 (Arabic) (MSX1)", 0)
8641 COMP(1986, ax170,      0,        0,     ax170,      msx,      msx_state, empty_init, "Al Alamiah", "AX-170 (Arabic) (MSX1)", 0)
8642 COMP(1983, canonv8,    0,        0,     canonv8,    msx,      msx_state, empty_init, "Canon", "V-8 (MSX1)", 0)
8643 COMP(1983, canonv10,   canonv20, 0,     canonv10,   msx,      msx_state, empty_init, "Canon", "V-10 (MSX1)", 0)
8644 COMP(1983, canonv20,   0,        0,     canonv20,   msx,      msx_state, empty_init, "Canon", "V-20 (MSX1)", 0)
8645 COMP(1983, canonv20e,  canonv20, 0,     canonv20,   msx,      msx_state, empty_init, "Canon", "V-20E (MSX1)", 0) // Different Euro keyboard layout?
8646 COMP(1983, canonv20f,  canonv20, 0,     canonv20,   msx,      msx_state, empty_init, "Canon", "V-20F (MSX1)", 0) // Different French keyboard layout?
8647 COMP(1983, canonv20g,  canonv20, 0,     canonv20,   msx,      msx_state, empty_init, "Canon", "V-20G (MSX1)", 0) // Different German keyboard layout?
8648 COMP(1983, canonv20s,  canonv20, 0,     canonv20,   msx,      msx_state, empty_init, "Canon", "V-20S (MSX1)", 0) // Different Spanish keyboard layout?
8649 COMP(1984, mx10,       0,        0,     mx10,       msx,      msx_state, empty_init, "Casio", "MX-10 (MSX1)", 0)
8650 COMP(1984, mx101,      mx10,     0,     mx101,      msx,      msx_state, empty_init, "Casio", "MX-101 (MSX1)", 0)
8651 COMP(1984, mx15,       mx10,     0,     mx15,       msx,      msx_state, empty_init, "Casio", "MX-15 (MSX1)", 0)
8652 COMP(1984, pv7,        0,        0,     pv7,        msx,      msx_state, empty_init, "Casio", "PV-7 (MSX1)", 0)
8653 COMP(1984, pv16,       0,        0,     pv16,       msx,      msx_state, empty_init, "Casio", "PV-16 (MSX1)", 0)
8654 COMP(198?, cpc88,      0,        0,     cpc88,      msxkr,    msx_state, empty_init, "Daewoo", "CPC-88 (Korea) (MSX1)", 0)
8655 COMP(1984, dpc100,     dpc200,   0,     dpc100,     msxkr,    msx_state, empty_init, "Daewoo", "IQ-1000 DPC-100 (Korea) (MSX1)", 0)
8656 COMP(1984, dpc180,     dpc200,   0,     dpc180,     msxkr,    msx_state, empty_init, "Daewoo", "IQ-1000 DPC-180 (Korea) (MSX1)", 0)
8657 COMP(1984, dpc200,     0,        0,     dpc200,     msxkr,    msx_state, empty_init, "Daewoo", "IQ-1000 DPC-200 (Korea) (MSX1)", 0)
8658 COMP(1985, dpc200e,    0,        0,     dpc200e,    msx,      msx_state, empty_init, "Daewoo", "DPC-200E (MSX1)", 0)
8659 COMP(1983, cpc50a,     cpc51,    0,     cpc50a,     msxkr,    msx_state, empty_init, "Daewoo", "Zemmix CPC-50A (Korea) (MSX1)", 0)
8660 COMP(1983, cpc50b,     cpc51,    0,     cpc50b,     msxkr,    msx_state, empty_init, "Daewoo", "Zemmix CPC-50B (Korea) (MSX1)", 0)
8661 COMP(1986, cpc51,      0,        0,     cpc51,      msxkr,    msx_state, empty_init, "Daewoo", "Zemmix CPC-51 (Korea) (MSX1)", 0)
8662 COMP(1985, dgnmsx,     0,        0,     dgnmsx,     msx,      msx_state, empty_init, "Eurohard S.A.", "Dragon MSX-64 (MSX1)", 0)
8663 COMP(1983, fdpc200,    0,        0,     fdpc200,    msx,      msx_state, empty_init, "Fenner", "DPC-200 (Italy) (MSX1)", 0)
8664 COMP(1984, fpc500,     0,        0,     fpc500,     msx,      msx_state, empty_init, "Fenner", "FPC-500 (Italy) (MSX1)", 0)
8665 COMP(1986, fspc800,    0,        0,     fspc800,    msx,      msx_state, empty_init, "Fenner", "SPC-800 (Italy) (MSX1)", 0)
8666 COMP(1984, bruc100,    0,        0,     bruc100,    msx,      msx_state, empty_init, "Frael", "Bruc 100-1 (MSX1)", 0)
8667 COMP(1983, fmx,        0,        0,     fmx,        msxjp,    msx_state, empty_init, "Fujitsu", "FM-X (MSX1)", 0)
8668 COMP(1984, gsfc80u,    0,        0,     gsfc80u,    msxkr,    msx_state, empty_init, "Goldstar", "FC-80U (MSX1)", 0)
8669 COMP(1983, gsfc200,    0,        0,     gsfc200,    msx,      msx_state, empty_init, "Goldstar", "FC-200 (MSX1)", 0)
8670 COMP(198?, gfc1080,    0,        0,     gfc1080,    msxkr,    msx_state, empty_init, "Goldstar", "GFC-1080 (MSX1)", 0)
8671 COMP(198?, gfc1080a,   0,        0,     gfc1080a,   msxkr,    msx_state, empty_init, "Goldstar", "GFC-1080A (MSX1)", 0)
8672 COMP(1983, expert10,   expert13, 0,     expert10,   expert10, msx_state, empty_init, "Gradiente", "Expert 1.0 (Brazil) (MSX1)", 0)
8673 COMP(1984, expert11,   expert13, 0,     expert11,   expert11, msx_state, empty_init, "Gradiente", "Expert 1.1 (Brazil) (MSX1)", 0)
8674 COMP(1984, expert13,   0,        0,     expert13,   expert11, msx_state, empty_init, "Gradiente", "Expert 1.3 (Brazil) (MSX1)", 0)
8675 COMP(1985, expertdp,   0,        0,     expertdp,   expert11, msx_state, empty_init, "Gradiente", "Expert DDPlus (Brazil) (MSX1)", 0)
8676 COMP(1984, expertpl,   0,        0,     expertpl,   expert11, msx_state, empty_init, "Gradiente", "Expert Plus (Brazil) (MSX1)", 0)
8677 COMP(1984, mbh2,       0,        0,     mbh2,       msxjp,    msx_state, empty_init, "Hitachi", "MB-H2 (MSX1)", 0)
8678 COMP(1984, mbh25,      0,        0,     mbh25,      msxjp,    msx_state, empty_init, "Hitachi", "MB-H25 (MSX1)", 0)
8679 COMP(1983, mbh50,      0,        0,     mbh50,      msxjp,    msx_state, empty_init, "Hitachi", "MB-H50 (MSX1)", 0)
8680 COMP(1983, jvchc7gb,   0,        0,     jvchc7gb,   msx,      msx_state, empty_init, "JVC", "HC-7GB (MSX1)", 0)
8681 COMP(198?, mlf48,      0,        0,     mlf48,      msx,      msx_state, empty_init, "Mitsubishi", "ML-F48 (MSX1)", 0)
8682 COMP(1983, mlf80,      0,        0,     mlf80,      msx,      msx_state, empty_init, "Mitsubishi", "ML-F80 (MSX1)", 0)
8683 COMP(1984, mlf110,     0,        0,     mlf110,     msxjp,    msx_state, empty_init, "Mitsubishi", "ML-F110 (MSX1)", 0)
8684 COMP(1984, mlf120,     0,        0,     mlf120,     msxjp,    msx_state, empty_init, "Mitsubishi", "ML-F120 (MSX1)", 0)
8685 COMP(1983, mlfx1,      0,        0,     mlfx1,      msx,      msx_state, empty_init, "Mitsubishi", "ML-FX1 (MSX1)", 0)
8686 COMP(1984, cf1200,     0,        0,     cf1200,     msxjp,    msx_state, empty_init, "National / Matsushita", "CF-1200 (Japan) (MSX1)", 0)
8687 COMP(1983, cf2000,     0,        0,     cf2000,     msxjp,    msx_state, empty_init, "National / Matsushita", "CF-2000 (Japan) (MSX1)", 0)
8688 COMP(1984, cf2700,     0,        0,     cf2700,     msxjp,    msx_state, empty_init, "National / Matsushita", "CF-2700 (Japan) (MSX1)", 0)
8689 COMP(1984, cf3000,     0,        0,     cf3000,     msxjp,    msx_state, empty_init, "National / Matsushita", "CF-3000 (Japan) (MSX1)", 0)
8690 COMP(1985, cf3300,     0,        0,     cf3300,     msxjp,    msx_state, empty_init, "National / Matsushita", "CF-3300 (Japan) (MSX1)", 0)
8691 COMP(1985, fs1300,     0,        0,     fs1300,     msxjp,    msx_state, empty_init, "National / Matsushita", "FS-1300 (Japan) (MSX1)", 0)
8692 COMP(1985, fs4000,     0,        0,     fs4000,     msxjp,    msx_state, empty_init, "National / Matsushita", "FS-4000 (Japan) (MSX1)", 0)
8693 COMP(1985, fs4000a,    fs4000,   0,     fs4000a,    msxjp,    msx_state, empty_init, "National / Matsushita", "FS-4000 (alt) (Japan) (MSX1)", 0)
8694 COMP(1983, phc2,       0,        0,     phc2,       msx,      msx_state, empty_init, "Olympia", "PHC-2 (MSX1)" , 0)
8695 COMP(19??, phc28,      0,        0,     phc28,      msx,      msx_state, empty_init, "Olympia", "PHC-28 (MSX1)", 0)
8696 COMP(1984, cf2700g,    0,        0,     cf2700g,    msx,      msx_state, empty_init, "Panasonic", "CF-2700G (Germany) (MSX1)", 0)
8697 COMP(198?, perfect1,   0,        0,     perfect1,   msx,      msx_state, empty_init, "Perfect", "Perfect1 (MSX1)", MACHINE_NOT_WORKING)
8698 COMP(1983, nms801,     0,        0,     nms801,     msx,      msx_state, empty_init, "Philips", "NMS-801 (MSX1)", 0)
8699 COMP(1984, vg8000,     vg8010,   0,     vg8000,     msx,      msx_state, empty_init, "Philips", "VG-8000 (MSX1)", 0)
8700 COMP(1984, vg8010,     0,        0,     vg8010,     msx,      msx_state, empty_init, "Philips", "VG-8010 (MSX1)", 0)
8701 COMP(1984, vg8010f,    vg8010,   0,     vg8010f,    msx,      msx_state, empty_init, "Philips", "VG-8010F (MSX1)" , 0)
8702 COMP(1985, vg802000,   vg802020, 0,     vg802000,   msx,      msx_state, empty_init, "Philips", "VG-8020-00 (MSX1)", 0)
8703 COMP(1985, vg802020,   0,        0,     vg802020,   msx,      msx_state, empty_init, "Philips", "VG-8020-20 (MSX1)", 0)
8704 COMP(19??, vg8020f,    vg802020, 0,     vg8020f,    msx,      msx_state, empty_init, "Philips", "VG-8020F (MSX1)", 0)
8705 COMP(1985, piopx7,     0,        0,     piopx7,     msx,      msx_state, empty_init, "Pioneer", "PX-07 Palcom (MSX1)", 0)
8706 COMP(1985, piopx7uk,   piopx7,   0,     piopx7uk,   msx,      msx_state, empty_init, "Pioneer", "PX-07UK Palcom (MSX1)", 0)
8707 COMP(1984, piopxv60,   piopx7,   0,     piopxv60,   msxjp,    msx_state, empty_init, "Pioneer", "PX-V60 (MSX1)", 0)
8708 COMP(19??, spc800,     0,        0,     spc800,     msx,      msx_state, empty_init, "Samsung", "SPC-800 (MSX1)", 0)
8709 COMP(1985, mpc64,      0,        0,     mpc64,      msxjp,    msx_state, empty_init, "Sanyo", "MPC-64 (MSX1)", 0)
8710 COMP(1985, mpc100,     0,        0,     mpc100,     msx,      msx_state, empty_init, "Sanyo", "MPC-100 (MSX1)", 0)
8711 COMP(1983, mpc200,     0,        0,     mpc200,     msx,      msx_state, empty_init, "Sanyo", "MPC-200 (MSX1)", 0)
8712 COMP(1983, mpc200sp,   mpc200,   0,     mpc200sp,   msx,      msx_state, empty_init, "Sanyo", "MPC-200SP (MSX1)", 0) // Spanish keyboard?
8713 COMP(1983, phc28l,     0,        0,     phc28l,     msx,      msx_state, empty_init, "Sanyo", "PHC-28L (MSX1)", 0)
8714 COMP(1983, phc28s,     0,        0,     phc28s,     msx,      msx_state, empty_init, "Sanyo", "PHC-28S (MSX1)", 0)
8715 COMP(19??, mpc10,      0,        0,     mpc10,      msx,      msx_state, empty_init, "Sanyo", "Wavy MPC-10 (MSX1)", 0)
8716 COMP(1985, hotbit11,   hotbi13p, 0,     hotbit11,   hotbit,   msx_state, empty_init, "Sharp / Epcom", "HB-8000 Hotbit 1.1 (MSX1)", 0)
8717 COMP(1985, hotbit12,   hotbi13p, 0,     hotbit12,   hotbit,   msx_state, empty_init, "Sharp / Epcom", "HB-8000 Hotbit 1.2 (MSX1)", 0)
8718 COMP(1985, hotbi13b,   hotbi13p, 0,     hotbi13b,   hotbit,   msx_state, empty_init, "Sharp / Epcom", "HB-8000 Hotbit 1.3b (MSX1)", 0)
8719 COMP(1985, hotbi13p,   0,        0,     hotbi13p,   hotbit,   msx_state, empty_init, "Sharp / Epcom", "HB-8000 Hotbit 1.3p (MSX1)", 0)
8720 COMP(198?, hb10,       hb10p,    0,     hb10,       msxjp,    msx_state, empty_init, "Sony", "HB-10 (MSX1)", 0)
8721 COMP(1985, hb10p,      0,        0,     hb10p,      msx,      msx_state, empty_init, "Sony", "HB-10P (MSX1)", 0)
8722 COMP(1984, hb101p,     0,        0,     hb101p,     msx,      msx_state, empty_init, "Sony", "HB-101P (MSX1)", 0)
8723 COMP(1985, hb20p,      0,        0,     hb20p,      msx,      msx_state, empty_init, "Sony", "HB-20P (Spanish) (MSX1)", 0)
8724 COMP(1985, hb201,      hb201p,   0,     hb201,      msxjp,    msx_state, empty_init, "Sony", "HB-201 (Japan) (MSX1)", 0)
8725 COMP(1985, hb201p,     0,        0,     hb201p,     msx,      msx_state, empty_init, "Sony", "HB-201P (MSX1)", 0)
8726 COMP(1984, hb501p,     0,        0,     hb501p,     msx,      msx_state, empty_init, "Sony", "HB-501P (MSX1)", 0)
8727 COMP(1983, hb55,       hb55p,    0,     hb55,       msxjp,    msx_state, empty_init, "Sony", "HB-55 (MSX1)", 0)
8728 COMP(1983, hb55d,      hb55p,    0,     hb55d,      msx,      msx_state, empty_init, "Sony", "HB-55D (Germany) (MSX1)", 0)
8729 COMP(1983, hb55p,      0,        0,     hb55p,      msx,      msx_state, empty_init, "Sony", "HB-55P (MSX1)", 0)
8730 COMP(1984, hb701fd,    0,        0,     hb701fd,    msxjp,    msx_state, empty_init, "Sony", "HB-701FD (MSX1)", 0)
8731 COMP(1983, hb75d,      hb75p,    0,     hb75d,      msx,      msx_state, empty_init, "Sony", "HB-75D (Germany) (MSX1)", 0)
8732 COMP(1983, hb75p,      0,        0,     hb75p,      msx,      msx_state, empty_init, "Sony", "HB-75P (MSX1)", 0)
8733 COMP(1985, svi728,     0,        0,     svi728,     msx,      msx_state, empty_init, "Spectravideo", "SVI-728 (MSX1)", 0)
8734 COMP(1985, svi738,     0,        0,     svi738,     msx,      msx_state, empty_init, "Spectravideo", "SVI-738 (MSX1)", 0)
8735 COMP(1983, svi738ar,   svi738,   0,     svi738ar,   msx,      msx_state, empty_init, "Spectravideo", "SVI-738 (Arabic) (MSX1)", 0)
8736 COMP(1983, svi738dk,   svi738,   0,     svi738dk,   msx,      msx_state, empty_init, "Spectravideo", "SVI-738 (Denmark) (MSX1)", 0)
8737 COMP(1983, svi738sp,   svi738,   0,     svi738sp,   msx,      msx_state, empty_init, "Spectravideo", "SVI-738 (Spain) (MSX1)", 0)
8738 COMP(1983, svi738sw,   svi738,   0,     svi738sw,   msx,      msx_state, empty_init, "Spectravideo", "SVI-738 (Swedish) (MSX1)", 0)
8739 COMP(1983, svi738pl,   svi738,   0,     svi738pl,   msx,      msx_state, empty_init, "Spectravideo", "SVI-738 (Poland) (MSX1)", 0)
8740 COMP(1983, tadpc200,   dpc200,   0,     tadpc200,   msx,      msx_state, empty_init, "Talent", "DPC-200 (MSX1)", 0)
8741 COMP(1983, tadpc20a,   dpc200,   0,     tadpc20a,   msx,      msx_state, empty_init, "Talent", "DPC-200A (MSX1)", 0)
8742 COMP(1984, hx10,       0,        0,     hx10,       msx,      msx_state, empty_init, "Toshiba", "HX-10 (MSX1)", 0)
8743 COMP(1984, hx10d,      hx10,     0,     hx10d,      msxjp,    msx_state, empty_init, "Toshiba", "HX-10D (MSX1)", 0)
8744 COMP(1984, hx10dp,     hx10,     0,     hx10dp,     msxjp,    msx_state, empty_init, "Toshiba", "HX-10DP (MSX1)", 0)
8745 COMP(1984, hx10e,      hx10,     0,     hx10e,      msx,      msx_state, empty_init, "Toshiba", "HX-10E (MSX1)", 0)
8746 COMP(1984, hx10f,      hx10,     0,     hx10f,      msx,      msx_state, empty_init, "Toshiba", "HX-10F (MSX1)", 0)
8747 COMP(1984, hx10s,      hx10,     0,     hx10s,      msx,      msx_state, empty_init, "Toshiba", "HX-10S (MSX1)", 0)
8748 COMP(1984, hx10sa,     hx10,     0,     hx10sa,     msxjp,    msx_state, empty_init, "Toshiba", "HX-10SA (MSX1)", 0)
8749 COMP(1984, hx20,       0,        0,     hx20,       msx,      msx_state, empty_init, "Toshiba", "HX-20 (MSX1)", 0)
8750 COMP(1984, hx20i,      hx20,     0,     hx20i,      msx,      msx_state, empty_init, "Toshiba", "HX-20I (MSX1)", 0)
8751 COMP(1984, hx21,       0,        0,     hx21,       msxjp,    msx_state, empty_init, "Toshiba", "HX-21 (MSX1)", MACHINE_NOT_WORKING) // Does not go into firmware
8752 COMP(1984, hx21i,      hx21,     0,     hx21i,      msx,      msx_state, empty_init, "Toshiba", "HX-21I (MSX1)", 0)
8753 COMP(1984, hx22,       0,        0,     hx22,       msxjp,    msx_state, empty_init, "Toshiba", "HX-22 (MSX1)", MACHINE_NOT_WORKING) // Does not go into firmware
8754 COMP(1984, hx22i,      hx22,     0,     hx22i,      msx,      msx_state, empty_init, "Toshiba", "HX-22I (MSX1)", 0)
8755 COMP(198?, hc5,        hc7,      0,     hc5,        msxjp,    msx_state, empty_init, "Victor", "HC-5 (MSX1)", 0)
8756 COMP(198?, hc6,        hc7,      0,     hc6,        msxjp,    msx_state, empty_init, "Victor", "HC-6 (MSX1)", 0)
8757 COMP(198?, hc7,        0,        0,     hc7,        msxjp,    msx_state, empty_init, "Victor", "HC-7 (MSX1)", 0)
8758 COMP(1984, cx5f1,      cx5f,     0,     cx5f1,      msxjp,    msx_state, empty_init, "Yamaha", "CX5F (w/SFG01) (MSX1)", 0)
8759 COMP(1984, cx5f,       0,        0,     cx5f,       msxjp,    msx_state, empty_init, "Yamaha", "CX5F (w/SFG05) (MSX1)", 0)
8760 COMP(1984, cx5m,       cx5m128,  0,     cx5m,       msx,      msx_state, empty_init, "Yamaha", "CX5M (MSX1)", 0)
8761 COMP(1984, cx5m128,    0,        0,     cx5m128,    msx,      msx_state, empty_init, "Yamaha", "CX5M-128 (MSX1)", 0)
8762 COMP(1984, cx5m2,      cx5m128,  0,     cx5m2,      msx,      msx_state, empty_init, "Yamaha", "CX5MII (MSX1)", 0)
8763 COMP(1984, yis303,     0,        0,     yis303,     msx,      msx_state, empty_init, "Yamaha", "YIS303 (MSX1)", 0)
8764 COMP(1984, yis503,     0,        0,     yis503,     msx,      msx_state, empty_init, "Yamaha", "YIS503 (MSX1)", 0)
8765 COMP(19??, yis503f,    yis503,   0,     yis503f,    msx,      msx_state, empty_init, "Yamaha", "YIS503F (MSX1)", 0)
8766 COMP(1984, yis503ii,   yis503,   0,     yis503ii,   msx,      msx_state, empty_init, "Yamaha", "YIS503II (MSX1)", 0)
8767 COMP(1986, y503iir,    yis503,   0,     y503iir,    msx,      msx_state, empty_init, "Yamaha", "YIS503IIR (Russian) (MSX1)", 0)
8768 COMP(1986, y503iir2,   yis503,   0,     y503iir2,   msx,      msx_state, empty_init, "Yamaha", "YIS503IIR (Estonian) (MSX1)", 0)
8769 COMP(1984, yis503m,    yis503,   0,     yis503m,    msx,      msx_state, empty_init, "Yamaha", "YIS503M (MSX1)", 0)
8770 COMP(1984, yc64,       0,        0,     yc64,       msx,      msx_state, empty_init, "Yashica", "YC-64 (MSX1)", 0)
8771 COMP(1984, mx64,       0,        0,     mx64,       msxkr,    msx_state, empty_init, "Yeno", "MX64 (MSX1)", 0)
8772 
8773 /* MSX2 */
8774 COMP(1986, ax350,      0,        0,     ax350,      msx2,     msx2_state, empty_init, "Al Alamiah", "AX-350 (Arabic) (MSX2)", 0)
8775 COMP(1986, ax370,      0,        0,     ax370,      msx2,     msx2_state, empty_init, "Al Alamiah", "AX-370 (Arabic) (MSX2)", 0)
8776 COMP(1985, canonv25,   0,        0,     canonv25,   msx2,     msx2_state, empty_init, "Canon", "V-25 (MSX2)", 0)
8777 COMP(1985, canonv30,   0,        0,     canonv30,   msx2,     msx2_state, empty_init, "Canon", "V-30 (MSX2)", 0)
8778 COMP(1985, canonv30f,  canonv30, 0,     canonv30f,  msx2,     msx2_state, empty_init, "Canon", "V-30F (MSX2)", 0)
8779 COMP(1986, cpc300,     0,        0,     cpc300,     msx2kr,   msx2_state, empty_init, "Daewoo", "IQ-2000 CPC-300 (Korea) (MSX2)", 0)
8780 COMP(1986, cpc300e,    0,        0,     cpc300e,    msx2kr,   msx2_state, empty_init, "Daewoo", "IQ-2000 CPC-300E (Korea) (MSX2)", 0)
8781 COMP(1985, cpc330k,    0,        0,     cpc330k,    msx2kr,   msx2_state, empty_init, "Daewoo", "CPC-330K KOBO (Korea) (MSX2)", 0)
8782 COMP(1988, cpc400,     0,        0,     cpc400,     msx2kr,   msx2_state, empty_init, "Daewoo", "X-II CPC-400 (Korea) (MSX2)", 0)
8783 COMP(1988, cpc400s,    0,        0,     cpc400s,    msx2kr,   msx2_state, empty_init, "Daewoo", "X-II CPC-400S (Korea) (MSX2)", 0)
8784 COMP(1990, cpc61,      0,        0,     cpc61,      msx2kr,   msx2_state, empty_init, "Daewoo", "Zemmix CPC-61 (Korea) (MSX2)", 0)
8785 COMP(1991, cpg120,     0,        0,     cpg120,     msx2kr,   msx2_state, empty_init, "Daewoo", "Zemmix CPG-120 Normal (Korea) (MSX2)", MACHINE_NOT_WORKING) // v9958 not added
8786 COMP(198?, fpc900,     0,        0,     fpc900,     msx2,     msx2_state, empty_init, "Fenner", "FPC-900 (MSX2)", 0)
8787 COMP(1986, expert20,   0,        0,     expert20,   msx2,     msx2_state, empty_init, "Gradiente", "Expert 2.0 (Brazil) (MSX2)", 0)
8788 COMP(198?, mbh70,      0,        0,     mbh70,      msx2jp,   msx2_state, empty_init, "Hitachi", "MB-H70 (MSX2)", MACHINE_NOT_WORKING) // Firmware not working
8789 COMP(1987, kmc5000,    0,        0,     kmc5000,    msx2jp,   msx2_state, empty_init, "Kawai", "KMC-5000 (MSX2)", 0)
8790 COMP(1985, mlg1,       0,        0,     mlg1,       msx2,     msx2_state, empty_init, "Mitsubishi", "ML-G1 (MSX2)", 0)
8791 COMP(198?, mlg3,       0,        0,     mlg3,       msx2,     msx2_state, empty_init, "Mitsubishi", "ML-G3 (MSX2)", 0)
8792 COMP(1985, mlg10,      0,        0,     mlg10,      msx2jp,   msx2_state, empty_init, "Mitsubishi", "ML-G10 (MSX2)", 0)
8793 COMP(1983, mlg30,      0,        0,     mlg30,      msx2,     msx2_state, empty_init, "Mitsubishi", "ML-G30 (MSX2)", 0)
8794 COMP(1985, fs5500f1,   fs5500f2, 0,     fs5500f1,   msx2jp,   msx2_state, empty_init, "National / Matsushita", "FS-5500F1 (Japan) (MSX2)", 0)
8795 COMP(1985, fs5500f2,   0,        0,     fs5500f2,   msx2jp,   msx2_state, empty_init, "National / Matsushita", "FS-5500F2 (Japan) (MSX2)", 0)
8796 COMP(1986, fs4500,     0,        0,     fs4500,     msx2jp,   msx2_state, empty_init, "National / Matsushita", "FS-4500 (Japan) (MSX2)", 0)
8797 COMP(1986, fs4700,     0,        0,     fs4700,     msx2jp,   msx2_state, empty_init, "National / Matsushita", "FS-4700 (Japan) (MSX2)", 0)
8798 COMP(1986, fs5000,     0,        0,     fs5000,     msx2jp,   msx2_state, empty_init, "National / Matsushita", "FS-5000F2 (Japan) (MSX2)", 0)
8799 COMP(1986, fs4600,     0,        0,     fs4600,     msx2jp,   msx2_state, empty_init, "National / Matsushita", "FS-4600 (Japan) (MSX2)", 0)
8800 COMP(1986, fsa1,       fsa1a,    0,     fsa1,       msx2jp,   msx2_state, empty_init, "Panasonic / Matsushita", "FS-A1 / 1st released version (Japan) (MSX2)", 0)
8801 COMP(1986, fsa1a,      0,        0,     fsa1a,      msx2jp,   msx2_state, empty_init, "Panasonic / Matsushita", "FS-A1 / 2nd released version (Japan) (MSX2)", 0)
8802 COMP(1987, fsa1mk2,    0,        0,     fsa1mk2,    msx2jp,   msx2_state, empty_init, "Panasonic / Matsushita", "FS-A1MK2 (Japan) (MSX2)", 0)
8803 COMP(1987, fsa1f,      0,        0,     fsa1f,      msx2jp,   msx2_state, empty_init, "Panasonic / Matsushita", "FS-A1F (Japan) (MSX2)", 0)
8804 COMP(1987, fsa1fm,     0,        0,     fsa1fm,     msx2jp,   msx2_state, empty_init, "Panasonic / Matsushita", "FS-A1FM (Japan) (MSX2)", 0)
8805 COMP(1986, nms8220,    nms8220a, 0,     nms8220,    msx2,     msx2_state, empty_init, "Philips", "NMS-8220 (12-jun-1986) (MSX2)", 0)
8806 COMP(1986, nms8220a,   0,        0,     nms8220a,   msx2,     msx2_state, empty_init, "Philips", "NMS-8220 (13-aug-1986) (MSX2)", 0)
8807 COMP(1986, vg8230,     0,        0,     vg8230,     msx2,     msx2_state, empty_init, "Philips", "VG-8230 (MSX2)", 0)
8808 COMP(19??, vg8230j,    vg8230,   0,     vg8230j,    msx2jp,   msx2_state, empty_init, "Philips", "VG-8230J (MSX2)", MACHINE_NOT_WORKING) // Screen flashes a few times before going into basic
8809 COMP(1986, vg8235,     0,        0,     vg8235,     msx2,     msx2_state, empty_init, "Philips", "VG-8235 (MSX2)", 0)
8810 COMP(1986, vg8235f,    vg8235,   0,     vg8235f,    msx2,     msx2_state, empty_init, "Philips", "VG-8235F (MSX2)", 0)
8811 COMP(1986, vg8240,     0,        0,     vg8240,     msx2,     msx2_state, empty_init, "Philips", "VG-8240 (MSX2)", 0)
8812 COMP(1986, nms8245,    0,        0,     nms8245,    msx2,     msx2_state, empty_init, "Philips", "NMS-8245 (MSX2)", 0)
8813 COMP(1986, nms8245f,   nms8245,  0,     nms8245f,   msx2,     msx2_state, empty_init, "Philips", "NMS-8245F (MSX2)", 0)
8814 COMP(1986, nms8250,    nms8255,  0,     nms8250,    msx2,     msx2_state, empty_init, "Philips", "NMS-8250 (MSX2)", 0)
8815 COMP(1986, nms8250f,   nms8255,  0,     nms8250f,   msx2,     msx2_state, empty_init, "Philips", "NMS-8250F (MSX2)", 0) // French keyboard
8816 COMP(19??, nms8250j,   nms8255,  0,     nms8250j,   msx2jp,   msx2_state, empty_init, "Philips", "NMS-8250J (MSX2)", 0)
8817 COMP(1986, nms8255,    0,        0,     nms8255,    msx2,     msx2_state, empty_init, "Philips", "NMS-8255 (MSX2)", 0)
8818 COMP(1986, nms8255f,   nms8255,  0,     nms8255f,   msx2,     msx2_state, empty_init, "Philips", "NMS-8255F (MSX2)", 0) // French keyboard
8819 COMP(1986, nms8260,    0,        0,     nms8260,    msx2,     msx2_state, empty_init, "Philips", "NMS-8260 (Prototype) (MSX2)", MACHINE_NOT_WORKING)
8820 COMP(1986, nms8280,    0,        0,     nms8280,    msx2,     msx2_state, empty_init, "Philips", "NMS-8280 (MSX2)", 0)
8821 COMP(1986, nms8280f,   nms8280,  0,     nms8280f,   msx2,     msx2_state, empty_init, "Philips", "NMS-8280F (MSX2)", 0) // French keyboard
8822 COMP(1986, nms8280g,   nms8280,  0,     nms8280g,   msx2,     msx2_state, empty_init, "Philips", "NMS-8280G (MSX2)", 0)
8823 COMP(19??, mpc2300,    0,        0,     mpc2300,    msx2,     msx2_state, empty_init, "Sanyo", "MPC-2300 (MSX2)", MACHINE_NOT_WORKING) // Keyboard responds differently
8824 COMP(198?, mpc2500f,   0,        0,     mpc2500f,   msx2,     msx2_state, empty_init, "Sanyo", "MPC-2500FD (MSX2)", MACHINE_NOT_WORKING) // Russian keyboard?
8825 COMP(19??, mpc25fd,    0,        0,     mpc25fd,    msx2,     msx2_state, empty_init, "Sanyo", "Wavy MPC-25FD (MSX2)", 0)
8826 COMP(198?, mpc27,      0,        0,     mpc27,      msx2jp,   msx2_state, empty_init, "Sanyo", "Wavy MPC-27 (MSX2)", MACHINE_NOT_WORKING) // Light pen not emulated
8827 COMP(1988, phc23,      0,        0,     phc23,      msx2jp,   msx2_state, empty_init, "Sanyo", "Wavy PHC-23 (Japan) (MSX2)", 0)
8828 COMP(198?, phc55fd2,   0,        0,     phc55fd2,   msx2jp,   msx2_state, empty_init, "Sanyo", "Wavy PHC-55FD2 (MSX2)", 0)
8829 COMP(198?, phc77,      0,        0,     phc77,      msx2jp,   msx2_state, empty_init, "Sanyo", "Wavy PHC-77 (MSX2)", MACHINE_NOT_WORKING) // Firmware not emulated
8830 COMP(1986, hbf1,       0,        0,     hbf1,       msx2jp,   msx2_state, empty_init, "Sony", "HB-F1 (Japan) (MSX2)", MACHINE_NOT_WORKING ) // Screen stays a single color after a while
8831 COMP(1987, hbf12,      0,        0,     hbf12,      msx2jp,   msx2_state, empty_init, "Sony", "HB-F1II (Japan) (MSX2)", MACHINE_NOT_WORKING ) // Screen stays a single color after a while
8832 COMP(1987, hbf1xd,     0,        0,     hbf1xd,     msx2jp,   msx2_state, empty_init, "Sony", "HB-F1XD (Japan) (MSX2)", 0)
8833 COMP(1988, hbf1xdm2,   0,        0,     hbf1xdm2,   msx2jp,   msx2_state, empty_init, "Sony", "HB-F1XDMK2 (Japan) (MSX2)", 0)
8834 COMP(19??, hbf5,       0,        0,     hbf5,       msx2,     msx2_state, empty_init, "Sony", "HB-F5 (MSX2)", 0)
8835 COMP(1985, hbf9p,      0,        0,     hbf9p,      msx2,     msx2_state, empty_init, "Sony", "HB-F9P (MSX2)", 0)
8836 COMP(19??, hbf9pr,     hbf9p,    0,     hbf9pr,     msx2,     msx2_state, empty_init, "Sony", "HB-F9P Russion (MSX2)", MACHINE_NOT_WORKING) // Keyboard responds differently
8837 COMP(1985, hbf9s,      hbf9p,    0,     hbf9s,      msx2,     msx2_state, empty_init, "Sony", "HB-F9S (MSX2)", 0)
8838 COMP(1986, hbf500,     hbf500p,  0,     hbf500,     msx2jp,   msx2_state, empty_init, "Sony", "HB-F500 (Japan) (MSX2)", 0)
8839 COMP(198?, hbf500f,    hbf500p,  0,     hbf500f,    msx2,     msx2_state, empty_init, "Sony", "HB-F500F (MSX2)", 0) // French keyboard?
8840 COMP(1985, hbf500p,    0,        0,     hbf500p,    msx2,     msx2_state, empty_init, "Sony", "HB-F500P (MSX2)", 0)
8841 COMP(1985, hbf700d,    hbf700p,  0,     hbf700d,    msx2,     msx2_state, empty_init, "Sony", "HB-F700D (Germany) (MSX2)", 0)
8842 COMP(1985, hbf700f,    hbf700p,  0,     hbf700f,    msx2,     msx2_state, empty_init, "Sony", "HB-F700F (MSX2)", 0)
8843 COMP(1985, hbf700p,    0,        0,     hbf700p,    msx2,     msx2_state, empty_init, "Sony", "HB-F700P (MSX2)", 0)
8844 COMP(1985, hbf700s,    hbf700p,  0,     hbf700s,    msx2,     msx2_state, empty_init, "Sony", "HB-F700S (Spain) (MSX2)", 0)
8845 COMP(1986, hbf900,     hbf900a,  0,     hbf900,     msx2jp,   msx2_state, empty_init, "Sony", "HB-F900 / 1st released version (Japan) (MSX2)", 0)
8846 COMP(1986, hbf900a,    0,        0,     hbf900a,    msx2jp,   msx2_state, empty_init, "Sony", "HB-F900 / 2nd released version (Japan) (MSX2)", 0)
8847 COMP(1986, hbg900ap,   hbg900p,  0,     hbg900ap,   msx2,     msx2_state, empty_init, "Sony", "HB-G900AP (MSX2)", 0 )
8848 COMP(1986, hbg900p,    0,        0,     hbg900p,    msx2,     msx2_state, empty_init, "Sony", "HB-G900P (MSX2)", 0 )
8849 COMP(1986, hotbit20,   0,        0,     hotbit20,   msx2,     msx2_state, empty_init, "Sharp / Epcom", "HB-8000 Hotbit 2.0 (MSX2)", 0) // Black screen
8850 COMP(1986, tpc310,     0,        0,     tpc310,     msx2,     msx2_state, empty_init, "Talent", "TPC-310 (MSX2)", 0)
8851 COMP(19??, tpp311,     0,        0,     tpp311,     msx2,     msx2_state, empty_init, "Talent", "TPP-311 (MSX2)", 0)
8852 COMP(19??, tps312,     0,        0,     tps312,     msx2,     msx2_state, empty_init, "Talent", "TPS-312 (MSX2)", 0)
8853 COMP(1986, hx23,       hx23i,    0,     hx23,       msx2,     msx2_state, empty_init, "Toshiba", "HX-23 (MSX2)", 0)
8854 COMP(1986, hx23f,      hx23i,    0,     hx23f,      msx2,     msx2_state, empty_init, "Toshiba", "HX-23F (MSX2)", 0)
8855 COMP(19??, hx23i,      0,        0,     hx23i,      msx2,     msx2_state, empty_init, "Toshiba", "HX-23I (MSX2)", 0)
8856 COMP(1985, hx33,       0,        0,     hx33,       msx2jp,   msx2_state, empty_init, "Toshiba", "HX-33 (MSX2)", 0)
8857 COMP(1985, hx34,       hx34i,    0,     hx34,       msx2jp,   msx2_state, empty_init, "Toshiba", "HX-34 (MSX2)", 0)
8858 COMP(1985, hx34i,      0,        0,     hx34i,      msx,      msx2_state, empty_init, "Toshiba", "HX-34I (MSX2)", 0)
8859 COMP(1985, fstm1,      0,        0,     fstm1,      msx,      msx2_state, empty_init, "Toshiba", "FS-TM1 (MSX2)", 0)
8860 COMP(198?, victhc90,   victhc95, 0,     victhc90,   msxjp,    msx2_state, empty_init, "Victor", "HC-90 (MSX2)", MACHINE_NOT_WORKING) // 2nd cpu/turbo not emulated, firmware won't start
8861 COMP(1986, victhc95,   0,        0,     victhc95,   msxjp,    msx2_state, empty_init, "Victor", "HC-95 (MSX2)", MACHINE_NOT_WORKING) // 2nd cpu/turbo not emulated, firmware won't start
8862 COMP(1986, victhc95a,  victhc95, 0,     victhc95a,  msxjp,    msx2_state, empty_init, "Victor", "HC-95A (MSX2)", MACHINE_NOT_WORKING) // 2nd cpu/turbo not emulated, firmware won't start
8863 COMP(1986, cx7m,       cx7m128,  0,     cx7m,       msx2,     msx2_state, empty_init, "Yamaha", "CX7M (MSX2)", 0)
8864 COMP(1986, cx7m128,    0,        0,     cx7m128,    msx2,     msx2_state, empty_init, "Yamaha", "CX7M/128 (MSX2)", 0)
8865 COMP(198?, y503iiir,   0,        0,     y503iiir,   msx2,     msx2_state, empty_init, "Yamaha", "YIS-503 III R (Russian) (MSX2)", MACHINE_NOT_WORKING) // Russian keyboard, floppy support broken
8866 COMP(198?, y503iiire,  y503iiir, 0,     y503iiire,  msx2,     msx2_state, empty_init, "Yamaha", "YIS-503 III R (Estonian) (MSX2)", MACHINE_NOT_WORKING) // Russian/Estonian keyboard, floppy support broken
8867 COMP(1985, yis60464,   yis604,   0,     yis60464,   msx2jp,   msx2_state, empty_init, "Yamaha", "YIS604 (64KB) (MSX2)", 0)
8868 COMP(1985, yis604,     0,        0,     yis604,     msx2jp,   msx2_state, empty_init, "Yamaha", "YIS604 (128KB) (MSX2)", 0)
8869 COMP(198?, y805128,    y805256,  0,     y805128,    msx2jp,   msx2_state, empty_init, "Yamaha", "YIS805/128 (Russian) (MSX2)", MACHINE_NOT_WORKING) // Floppy support broken
8870 COMP(198?, y805128r2,  y805256,  0,     y805128r2,  msx2jp,   msx2_state, empty_init, "Yamaha", "YIS805R2/128 (Russian) (MSX2)", MACHINE_NOT_WORKING) // Floppy support broken
8871 COMP(198?, y805128r2e, y805256,  0,     y805128r2e, msx2jp,   msx2_state, empty_init, "Yamaha", "YIS805R2/128 (Estonian) (MSX2)", MACHINE_NOT_WORKING) // Floppy support broken
8872 COMP(198?, y805256,    0,        0,     y805256,    msx2jp,   msx2_state, empty_init, "Yamaha", "YIS805/256 (Russian) (MSX2)", MACHINE_NOT_WORKING) // Floppy support broken
8873 
8874 /* MSX2+ */
8875 COMP(19??, expert3i,   0,        0,     expert3i,   msx2,     msx2_state, empty_init, "Ciel", "Expert 3 IDE (MSX2+)", MACHINE_NOT_WORKING ) // Some hardware not emulated
8876 COMP(1996, expert3t,   0,        0,     expert3t,   msx2,     msx2_state, empty_init, "Ciel", "Expert 3 Turbo (MSX2+)", MACHINE_NOT_WORKING ) // Some hardware not emulated
8877 COMP(19??, expertac,   0,        0,     expertac,   msx2,     msx2_state, empty_init, "Gradiente", "Expert AC88+ (MSX2+)", MACHINE_NOT_WORKING ) // Some hardware not emulated
8878 COMP(19??, expertdx,   0,        0,     expertdx,   msx2,     msx2_state, empty_init, "Gradiente", "Expert DDX+ (MSX2+)", MACHINE_NOT_WORKING ) // Some hardware not emulated
8879 COMP(1988, fsa1fx,     0,        0,     fsa1fx,     msx2jp,   msx2_state, empty_init, "Panasonic / Matsushita", "FS-A1FX (Japan) (MSX2+)", 0 )
8880 COMP(1988, fsa1wx,     fsa1wxa,  0,     fsa1wx,     msx2jp,   msx2_state, empty_init, "Panasonic / Matsushita", "FS-A1WX / 1st released version (Japan) (MSX2+)", 0 )
8881 COMP(1988, fsa1wxa,    0,        0,     fsa1wxa,    msx2jp,   msx2_state, empty_init, "Panasonic / Matsushita", "FS-A1WX / 2nd released version (Japan) (MSX2+)", 0 )
8882 COMP(1989, fsa1wsx,    0,        0,     fsa1wsx,    msx2jp,   msx2_state, empty_init, "Panasonic / Matsushita", "FS-A1WSX (Japan) (MSX2+)", 0 )
8883 COMP(1988, hbf1xdj,    0,        0,     hbf1xdj,    msx2jp,   msx2_state, empty_init, "Sony", "HB-F1XDJ (Japan) (MSX2+)", 0 )
8884 COMP(1989, hbf1xv,     0,        0,     hbf1xv,     msx2jp,   msx2_state, empty_init, "Sony", "HB-F1XV (Japan) (MSX2+)", 0 )
8885 COMP(1988, phc70fd,    phc70fd2, 0,     phc70fd,    msx2jp,   msx2_state, empty_init, "Sanyo", "WAVY PHC-70FD (Japan) (MSX2+)", 0 )
8886 COMP(1988, phc70fd2,   0,        0,     phc70fd2,   msx2jp,   msx2_state, empty_init, "Sanyo", "WAVY PHC-70FD2 (Japan) (MSX2+)", 0 )
8887 COMP(1989, phc35j,     0,        0,     phc35j,     msx2jp,   msx2_state, empty_init, "Sanyo", "WAVY PHC-35J (Japan) (MSX2+)", 0)
8888 COMP(19??, hbf9sp,     0,        0,     hbf9sp,     msx2jp,   msx2_state, empty_init, "Sony", "HB-F9S+ (MSX2+)", 0)
8889 
8890 /* MSX Turbo-R */
8891 /* Temporary placeholders, Turbo-R hardware is not supported yet */
8892 COMP(19??, fsa1gt,     0,        0,     fsa1gt,     msx2jp,   msx2_state, empty_init, "Panasonic", "FS-A1GT (MSX Turbo-R)", MACHINE_NOT_WORKING)
8893 COMP(19??, fsa1st,     0,        0,     fsa1st,     msx2jp,   msx2_state, empty_init, "Panasonic", "FS-A1ST (MSX Turbo-R)", MACHINE_NOT_WORKING)
8894