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 ¢ronics(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 ¢_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 ¢_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 ¢ronics(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 ¢_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 ¢_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 ¢ronics(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 ¢_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 ¢_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