Previous 199869 Revisions Next

r40632 Monday 7th September, 2015 at 08:49:14 UTC by Nigel Barnes
bbc: clones, floppy formats, softlists, and cleanups.
- Added clone bbcb1770, bbcb now 8271 only.
- Added clone pro128s, Olivetti Prodest PC 128S.
- Added clones Acorn Business Computers and Cambridge Workstation.
- Added clone reutapm, Reuters APM board.
- Improved floppy formats, added dsd and double density formats for ADFS.
- Added speech PHROMs, not yet hooked up correctly.
- Added softlists bbcb_de_cass, bbcb_us_flop and bbcmc_flop.
- Added S11 links (dipswitch) to specify Econet ID.
- Address map cleanups.
[hash]bbcb_cass.xml bbcb_de_cass.xml* bbcb_us_flop.xml* bbcmc_flop.xml* pro128_cart.xml* tutor.xml
[src/lib/formats]bbc_dsk.c bbc_dsk.h
[src/mame]arcade.lst mess.lst
[src/mame/drivers]segaxbd.c
[src/mess/drivers]apple2.c bbc.c
[src/mess/includes]bbc.h
[src/mess/machine]bbc.c
[src/mess/video]bbc.c

trunk/hash/bbcb_cass.xml
r249143r249144
33243324      <publisher>Visions</publisher>
33253325      <info name="usage" value="Load with *RUN" />
33263326      <part name="cass1" interface="bbc_cass">
3327         <dataarea name="cass" size="9339">
3328            <rom name="demolator_infinitelives_run(visions).uef" size="9339" crc="8c638151" sha1="85aced0345aec14e7750c5daa290f1cb642b1961" offset="0" />
3327         <dataarea name="cass" size="9319">
3328            <rom name="demolator_run(visions).uef" size="9319" crc="5dc43e5b" sha1="d7d88ca1b651926104c0833e257e967e0d47dfc2" offset="0" />
33293329         </dataarea>
33303330      </part>
33313331      <part name="cass2" interface="bbc_cass">
3332         <dataarea name="cass" size="9319">
3333            <rom name="demolator_run(visions).uef" size="9319" crc="5dc43e5b" sha1="d7d88ca1b651926104c0833e257e967e0d47dfc2" offset="0" />
3332         <dataarea name="cass" size="9339">
3333            <rom name="demolator_infinitelives_run(visions).uef" size="9339" crc="8c638151" sha1="85aced0345aec14e7750c5daa290f1cb642b1961" offset="0" />
33343334         </dataarea>
33353335      </part>
33363336   </software>
r249143r249144
57105710      </part>
57115711   </software>
57125712
5713   <software name="hopperg" cloneof="hopper">
5714      <description>Hopper (Ger)</description>
5715      <year>1983</year>
5716      <publisher>Acornsoft</publisher>
5717      <part name="cass" interface="bbc_cass">
5718         <dataarea name="cass" size="8112">
5719            <rom name="hopper-german(1983)(acornsoft)(g23).uef" size="8112" crc="3972b897" sha1="b5f7897dcad92b758d0473ac840f2b41e8049ef4" offset="0" />
5720         </dataarea>
5721      </part>
5722   </software>
5723
57245713   <software name="hopper21" cloneof="hopper">
57255714      <description>Hopper v2.1</description>
57265715      <year>1983</year>
r249143r249144
74307419      </part>
74317420   </software>
74327421
7433   <software name="meteorsg" cloneof="meteors">
7434      <description>Meteors (Ger)</description>
7435      <year>1982</year>
7436      <publisher>Acornsoft</publisher>
7437      <part name="cass" interface="bbc_cass">
7438         <dataarea name="cass" size="6610">
7439            <rom name="meteors-german(1982)(acornsoft)(g13).uef" size="6610" crc="0bb65e55" sha1="238ba733b0094942dd477ca49754249284741c40" offset="0" />
7440         </dataarea>
7441      </part>
7442   </software>
7443
74447422   <software name="meteorssc" cloneof="meteors">
74457423      <description>Meteors (The Acornsoft Hits Vol.2)</description>
74467424      <year>1987</year>
r249143r249144
77457723      </part>
77467724   </software>
77477725
7748   <software name="monstersg" cloneof="monsters">
7749      <description>Monsters (Ger)</description>
7750      <year>1982</year>
7751      <publisher>Acornsoft</publisher>
7752      <part name="cass" interface="bbc_cass">
7753         <dataarea name="cass" size="7890">
7754            <rom name="monsters-german(1982)(acornsoft)(g03).uef" size="7890" crc="37838358" sha1="c3c698a8174d0b67d6ee563bcecb9a42354ae3fc" offset="0" />
7755         </dataarea>
7756      </part>
7757   </software>
7758
77597726   <software name="monsterspias" cloneof="monsters">
77607727      <description>Monsters (Play It Again Sam 11)</description>
77617728      <year>1989</year>
r249143r249144
88898856      </part>
88908857   </software>
88918858
8892   <software name="planetoidg" cloneof="plantoid">
8893      <description>Planetoid (Ger)</description>
8894      <year>1982</year>
8895      <publisher>Acornsoft</publisher>
8896      <part name="cass" interface="bbc_cass">
8897         <dataarea name="cass" size="8515">
8898            <rom name="planetoid-german(1982)(acornsoft)(g15).uef" size="8515" crc="bfaa94f8" sha1="fc8cb246c19cd717f7684074979ea5cb6d98e4fb" offset="0" />
8899         </dataarea>
8900      </part>
8901   </software>
8902
89038859   <software name="plantoidsc" cloneof="plantoid">
89048860      <description>Planetoid (The Acornsoft Hits Vol.1)</description>
89058861      <year>1987</year>
r249143r249144
98289784      </part>
98299785   </software>
98309786
9831   <software name="rocketrag" cloneof="rocketra">
9832      <description>Rocket Raid (Ger)</description>
9833      <year>1982</year>
9834      <publisher>Acornsoft</publisher>
9835      <part name="cass" interface="bbc_cass">
9836         <dataarea name="cass" size="7747">
9837            <rom name="rocketraid-german(1982)(acornsoft)(g05).uef" size="7747" crc="3a6ccbd0" sha1="afd7318589bb419606b25b575c7488369acf2c9b" offset="0" />
9838         </dataarea>
9839      </part>
9840   </software>
9841
98429787   <software name="rocketrasc" cloneof="rocketra">
98439788      <description>Rocket Raid (The Acornsoft Hits Vol.1)</description>
98449789      <year>1987</year>
r249143r249144
1072110666      </part>
1072210667   </software>
1072310668
10724   <software name="snapperg" cloneof="snapper">
10725      <description>Snapper (Ger)</description>
10726      <year>1982</year>
10727      <publisher>Acornsoft</publisher>
10728      <part name="cass" interface="bbc_cass">
10729         <dataarea name="cass" size="7174">
10730            <rom name="snapper-german(1982)(acornsoft)(g04).uef" size="7174" crc="6ffbe578" sha1="0cc295dba1b771475ae8e71340b6ce4f885040e9" offset="0" />
10731         </dataarea>
10732      </part>
10733   </software>
10734
1073510669   <software name="snapperpias" cloneof="snapper">
1073610670      <description>Snapper (Play It Again Sam 7)</description>
1073710671      <year>1988</year>
r249143r249144
1190211836      </part>
1190311837   </software>
1190411838
11905   <software name="superinvg" cloneof="superinv">
11906      <description>Super Invaders (Ger)</description>
11907      <year>1982</year>
11908      <publisher>Acornsoft</publisher>
11909      <part name="cass" interface="bbc_cass">
11910         <dataarea name="cass" size="7812">
11911            <rom name="superinvaders-german(1982)(acornsoft)(g16).uef" size="7812" crc="382b3412" sha1="4361fba1203b07fb05f62273ac02db403a3f38ce" offset="0" />
11912         </dataarea>
11913      </part>
11914   </software>
11915
1191611839   <software name="superinv">
1191711840      <description>Super Invaders</description>
1191811841      <year>1982</year>
r249143r249144
1349413417      </part>
1349513418   </software>
1349613419
13497   <software name="welcomeg" cloneof="welcome">
13498      <description>Welcome (Ger)</description>
13499      <year>1981</year>
13500      <publisher>BBC Soft</publisher>
13501      <part name="cass" interface="bbc_cass">
13502         <dataarea name="cass" size="48009">
13503            <rom name="welcome-german(1981)(bbc).uef" size="48009" crc="a2d78451" sha1="b0ff9fd8a51412dee878e763fe0aa54deef2c962" offset="0" />
13504         </dataarea>
13505      </part>
13506   </software>
13507
1350813420   <software name="welcome">
1350913421      <description>Welcome</description>
1351013422      <year>1981</year>
r249143r249144
1409914011      </part>
1410014012   </software>
1410114013
14102   <software name="dskdiaryg" cloneof="dskdiary">
14103      <description>Desk Diary (Ger)</description>
14104      <year>198?</year>
14105      <publisher>Acornsoft</publisher>
14106      <part name="cass" interface="bbc_cass">
14107         <dataarea name="cass" size="9739">
14108            <rom name="deskdiary-german(198x)(acornsoft)(b01).uef" size="9739" crc="7ef32892" sha1="ec3910be9c7b5c1729586ba88a88173d08dcf34b" offset="0" />
14109         </dataarea>
14110      </part>
14111   </software>
14112
1411314014   <software name="dskdiary">
1411414015      <description>Desk Diary</description>
1411514016      <year>198?</year>
r249143r249144
1475314654      </part>
1475414655   </software>
1475514656
14756   <software name="numberbag" cloneof="numberba">
14757      <description>Number Balance (Ger)</description>
14758      <year>198?</year>
14759      <publisher>Acornsoft/ESM</publisher>
14760      <part name="cass" interface="bbc_cass">
14761         <dataarea name="cass" size="7727">
14762            <rom name="numberbalance-german(acornsoftesm).uef" size="7727" crc="2461e7a8" sha1="7b2ce801a3213fcac582b173d65aaa347555a2c4" offset="0" />
14763         </dataarea>
14764      </part>
14765   </software>
14766
1476714657   <software name="numberba">
1476814658      <description>Number Balance</description>
1476914659      <year>198?</year>
r249143r249144
1485214742      </part>
1485314743   </software>
1485414744
14855   <software name="sentseqg" cloneof="sentseq">
14856      <description>Sentence Sequencing (Ger)</description>
14857      <year>198?</year>
14858      <publisher>Acornsoft</publisher>
14859      <part name="cass" interface="bbc_cass">
14860         <dataarea name="cass" size="10769">
14861            <rom name="sentencesequencing-german(198x)(acornsoft)(e07).uef" size="10769" crc="28955bf7" sha1="f6422764589cbe5d1acefca2d90f288b95e84280" offset="0" />
14862         </dataarea>
14863      </part>
14864   </software>
14865
1486614745   <software name="sentseq">
1486714746      <description>Sentence Sequencing</description>
1486814747      <year>198?</year>
r249143r249144
1496714846      </part>
1496814847   </software>
1496914848
14970   <software name="treeknowg" cloneof="treeknow">
14971      <description>Tree Of Knowledge (Ger)</description>
14972      <year>198?</year>
14973      <publisher>Acornsoft</publisher>
14974      <part name="cass" interface="bbc_cass">
14975         <dataarea name="cass" size="11319">
14976            <rom name="treeofknowledge-german(198x)(acornsoft)(e04).uef" size="11319" crc="c1b66b33" sha1="53bd97ccc48c5b00a1e57728800e786b6a9d30d9" offset="0" />
14977         </dataarea>
14978      </part>
14979   </software>
14980
1498114849   <software name="treeknow">
1498214850      <description>Tree Of Knowledge</description>
1498314851      <year>198?</year>
r249143r249144
1507714945      </part>
1507814946   </software>
1507914947
15080   <software name="jars">
15081      <description>Jars (Ger)</description>
15082      <year>198?</year>
15083      <publisher>Acornsoft</publisher>
15084      <part name="cass" interface="bbc_cass">
15085         <dataarea name="cass" size="8325">
15086            <rom name="jars-german(198x)(acornsoft)(e15).uef" size="8325" crc="943ba245" sha1="5a911796040eb708926d5c9e1aecb3d0e7ea546b" offset="0" />
15087         </dataarea>
15088      </part>
15089   </software>
15090
1509114948   <software name="spooky">
1509214949      <description>Spooky Manor</description>
1509314950      <year>198?</year>
trunk/hash/bbcb_de_cass.xml
r0r249144
1<?xml version="1.0"?>
2<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3
4<!-- BBC Micro Model B (German) Tapes -->
5
6<!-- I believe all the Cassette images here are original, so some require the manuals for additional copy protection -->
7
8<!-- Loading Instructions:
9
10      If the system has a disk drive (which the BBC Model B does by default in MESS) you must type *TAPE, then use the relevant command to load the software, usually CHAIN"" or *RUN, though some earlier titles from Micro Power require *LOAD.
11
12      To start/stop the tape you must use the MESS menus, so you'll have to turn full keyboard mode off with Scroll Lock, then navigate the menus, turning Scroll Lock back on when you're finished.
13-->
14
15<softwarelist name="bbcb_de_cass" description="BBC Micro Model B (German) cassettes">
16
17   <!-- Games -->
18
19   <software name="hopperg">
20      <description>Hopper (Ger)</description>
21      <year>1983</year>
22      <publisher>Acornsoft</publisher>
23      <part name="cass" interface="bbc_cass">
24         <dataarea name="cass" size="8112">
25            <rom name="hopper-german(1983)(acornsoft)(g23).uef" size="8112" crc="3972b897" sha1="b5f7897dcad92b758d0473ac840f2b41e8049ef4" offset="0" />
26         </dataarea>
27      </part>
28   </software>
29
30   <software name="meteorsg">
31      <description>Meteors (Ger)</description>
32      <year>1982</year>
33      <publisher>Acornsoft</publisher>
34      <part name="cass" interface="bbc_cass">
35         <dataarea name="cass" size="6610">
36            <rom name="meteors-german(1982)(acornsoft)(g13).uef" size="6610" crc="0bb65e55" sha1="238ba733b0094942dd477ca49754249284741c40" offset="0" />
37         </dataarea>
38      </part>
39   </software>
40
41   <software name="monstersg">
42      <description>Monsters (Ger)</description>
43      <year>1982</year>
44      <publisher>Acornsoft</publisher>
45      <part name="cass" interface="bbc_cass">
46         <dataarea name="cass" size="7890">
47            <rom name="monsters-german(1982)(acornsoft)(g03).uef" size="7890" crc="37838358" sha1="c3c698a8174d0b67d6ee563bcecb9a42354ae3fc" offset="0" />
48         </dataarea>
49      </part>
50   </software>
51
52   <software name="planetoidg">
53      <description>Planetoid (Ger)</description>
54      <year>1982</year>
55      <publisher>Acornsoft</publisher>
56      <part name="cass" interface="bbc_cass">
57         <dataarea name="cass" size="8515">
58            <rom name="planetoid-german(1982)(acornsoft)(g15).uef" size="8515" crc="bfaa94f8" sha1="fc8cb246c19cd717f7684074979ea5cb6d98e4fb" offset="0" />
59         </dataarea>
60      </part>
61   </software>
62
63   <software name="rocketrag">
64      <description>Rocket Raid (Ger)</description>
65      <year>1982</year>
66      <publisher>Acornsoft</publisher>
67      <part name="cass" interface="bbc_cass">
68         <dataarea name="cass" size="7747">
69            <rom name="rocketraid-german(1982)(acornsoft)(g05).uef" size="7747" crc="3a6ccbd0" sha1="afd7318589bb419606b25b575c7488369acf2c9b" offset="0" />
70         </dataarea>
71      </part>
72   </software>
73
74   <software name="snapperg">
75      <description>Snapper (Ger)</description>
76      <year>1982</year>
77      <publisher>Acornsoft</publisher>
78      <part name="cass" interface="bbc_cass">
79         <dataarea name="cass" size="7174">
80            <rom name="snapper-german(1982)(acornsoft)(g04).uef" size="7174" crc="6ffbe578" sha1="0cc295dba1b771475ae8e71340b6ce4f885040e9" offset="0" />
81         </dataarea>
82      </part>
83   </software>
84
85   <software name="superinvg">
86      <description>Super Invaders (Ger)</description>
87      <year>1982</year>
88      <publisher>Acornsoft</publisher>
89      <part name="cass" interface="bbc_cass">
90         <dataarea name="cass" size="7812">
91            <rom name="superinvaders-german(1982)(acornsoft)(g16).uef" size="7812" crc="382b3412" sha1="4361fba1203b07fb05f62273ac02db403a3f38ce" offset="0" />
92         </dataarea>
93      </part>
94   </software>
95
96   <software name="welcomeg">
97      <description>Welcome (Ger)</description>
98      <year>1981</year>
99      <publisher>BBC Soft</publisher>
100      <part name="cass" interface="bbc_cass">
101         <dataarea name="cass" size="48009">
102            <rom name="welcome-german(1981)(bbc).uef" size="48009" crc="a2d78451" sha1="b0ff9fd8a51412dee878e763fe0aa54deef2c962" offset="0" />
103         </dataarea>
104      </part>
105   </software>
106
107   <!-- Business -->
108
109   <software name="dskdiaryg">
110      <description>Desk Diary (Ger)</description>
111      <year>198?</year>
112      <publisher>Acornsoft</publisher>
113      <part name="cass" interface="bbc_cass">
114         <dataarea name="cass" size="9739">
115            <rom name="deskdiary-german(198x)(acornsoft)(b01).uef" size="9739" crc="7ef32892" sha1="ec3910be9c7b5c1729586ba88a88173d08dcf34b" offset="0" />
116         </dataarea>
117      </part>
118   </software>
119
120   <!-- Educational -->
121
122   <software name="numberbag">
123      <description>Number Balance (Ger)</description>
124      <year>198?</year>
125      <publisher>Acornsoft/ESM</publisher>
126      <part name="cass" interface="bbc_cass">
127         <dataarea name="cass" size="7727">
128            <rom name="numberbalance-german(acornsoftesm).uef" size="7727" crc="2461e7a8" sha1="7b2ce801a3213fcac582b173d65aaa347555a2c4" offset="0" />
129         </dataarea>
130      </part>
131   </software>
132
133   <software name="sentseqg">
134      <description>Sentence Sequencing (Ger)</description>
135      <year>198?</year>
136      <publisher>Acornsoft</publisher>
137      <part name="cass" interface="bbc_cass">
138         <dataarea name="cass" size="10769">
139            <rom name="sentencesequencing-german(198x)(acornsoft)(e07).uef" size="10769" crc="28955bf7" sha1="f6422764589cbe5d1acefca2d90f288b95e84280" offset="0" />
140         </dataarea>
141      </part>
142   </software>
143
144   <software name="treeknowg">
145      <description>Tree Of Knowledge (Ger)</description>
146      <year>198?</year>
147      <publisher>Acornsoft</publisher>
148      <part name="cass" interface="bbc_cass">
149         <dataarea name="cass" size="11319">
150            <rom name="treeofknowledge-german(198x)(acornsoft)(e04).uef" size="11319" crc="c1b66b33" sha1="53bd97ccc48c5b00a1e57728800e786b6a9d30d9" offset="0" />
151         </dataarea>
152      </part>
153   </software>
154
155   <software name="jars">
156      <description>Jars (Ger)</description>
157      <year>198?</year>
158      <publisher>Acornsoft</publisher>
159      <part name="cass" interface="bbc_cass">
160         <dataarea name="cass" size="8325">
161            <rom name="jars-german(198x)(acornsoft)(e15).uef" size="8325" crc="943ba245" sha1="5a911796040eb708926d5c9e1aecb3d0e7ea546b" offset="0" />
162         </dataarea>
163      </part>
164   </software>
165
166</softwarelist>
trunk/hash/bbcb_us_flop.xml
r0r249144
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3
4<!-- BBC Micro Model B (US) Disks -->
5
6<!-- Loading Instructions:
7
8      Hold down the SHIFT key and press and release the BREAK key.
9-->
10
11<softwarelist name="bbcb_us_flop" description="BBC Micro Model B (US) disks">
12
13   <software name="intrutil">
14      <description>Introductory and Utilities Disk</description>
15      <year>1983</year>
16      <publisher>Acorn</publisher>
17      <info name="protection" value="none" />
18      <part name="flop1" interface="floppy_5_25">
19         <dataarea name="flop" size="204800">
20            <rom name="introductory_utils(1983)(acorn).ssd" size="204800" crc="60612fc2" sha1="037f7c3499547d5ac5f88e812d7765ccaf27d6e1" offset="0" />
21         </dataarea>
22      </part>
23   </software>
24
25</softwarelist>
trunk/hash/bbcmc_flop.xml
r0r249144
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3
4<!-- BBC Master Compact Disks -->
5
6<!-- Loading Instructions:
7
8      Hold down the SHIFT key and press and release the BREAK key.
9-->
10
11<softwarelist name="bbcmc_flop" description="BBC Master Compact disks">
12
13   <software name="welcome">
14      <description>BBC Master Compact Welcome Disc</description>
15      <year>1986</year>
16      <publisher>Acorn</publisher>
17      <info name="protection" value="none" />
18      <part name="flop1" interface="floppy_3_5">
19         <dataarea name="flop" size="655360">
20            <rom name="welcome_compact.adl" size="655360" crc="9d747205" sha1="04cfd6d1e08e8f695befb2948e27d63fd7842b8f" offset="0" />
21         </dataarea>
22      </part>
23   </software>
24
25</softwarelist>
trunk/hash/pro128_cart.xml
r0r249144
1<?xml version="1.0"?>
2<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3<softwarelist name="pro128_cart" description="Prodest PC 128 cartridges">
4
5
6   <software name="agenda">
7      <description>Agenda</description>
8      <year>1984</year>
9      <publisher>Answare</publisher>
10
11      <part name="cart" interface="mo5_cart">
12         <dataarea name="rom" size="16384">
13            <rom name="agenda (1984)(answare)(fr).m5" size="16384" crc="a4460761" sha1="5a77e3709b90f430c0b4c2c282916095e60ee22b" offset="0x0000" />
14         </dataarea>
15      </part>
16   </software>
17
18   <software name="clrpaint">
19      <description>Colorpaint</description>
20      <year>1985</year>
21      <publisher>Thomson</publisher>
22
23      <part name="cart" interface="mo5_cart">
24         <dataarea name="rom" size="32768">
25            <rom name="colorpaint (1985)(thomson)(it).m5" size="32768" crc="8fa1493b" sha1="d27c6db21adb29dc76df33d7a3855f8532d8cc57" offset="0x0000" />
26         </dataarea>
27      </part>
28   </software>
29
30   <software name="logo">
31      <description>LOGO v1.0</description>
32      <year>1984</year>
33      <publisher>Soli</publisher>
34
35      <part name="cart" interface="mo5_cart">
36         <dataarea name="rom" size="16384">
37            <rom name="logo v1.0 (1984)(soli)(fr).m5" size="16384" crc="6e997494" sha1="039f460f00973da9e192691061b37b493028bc35" offset="0x0000" />
38         </dataarea>
39      </part>
40   </software>
41
42   <software name="scriptor">
43      <description>Scriptor</description>
44      <year>1986</year>
45      <publisher>To Tek</publisher>
46
47      <part name="cart" interface="mo5_cart">
48         <dataarea name="rom" size="16384">
49            <rom name="scriptor (1986)(to tek)(it).m5" size="16384" crc="3bb553c9" sha1="b8b4b7618684e0c9331e8759fe13b07d22340fbe" offset="0x0000" />
50         </dataarea>
51      </part>
52   </software>
53
54
55</softwarelist>
trunk/hash/tutor.xml
r249143r249144
291291      <info name="alt_title" value="Mr.DO!"/>
292292      <info name="serial" value="019E"/>
293293      <part name="cart" interface="tutor_cart">
294         <dataarea name="rom" size="16384">
295            <rom name="tomy 3l1.ic1.bin" size="16384" crc="1dfa3f4b" sha1="93d1c17c5edd44f27c28cde88a68f609b77feb0c" offset="0" />
294         <dataarea name="rom" size="8192">
295            <rom name="tomy 3l1.ic1.bin" size="8192" crc="1dfa3f4b" sha1="93d1c17c5edd44f27c28cde88a68f609b77feb0c" offset="0" />
296296         </dataarea>
297297      </part>
298298   </software>
trunk/src/lib/formats/bbc_dsk.c
r249143r249144
11// license:GPL-2.0+
2// copyright-holders:Dirk Best
2// copyright-holders:Dirk Best, Nigel Barnes
33/***************************************************************************
44
55    BBC Micro
66
7    Disk image format
7    Disk image formats
88
99***************************************************************************/
1010
1111#include "bbc_dsk.h"
12#include "basicdsk.h"
1213
13bbc_format::bbc_format() : wd177x_format(formats)
14LEGACY_FLOPPY_OPTIONS_START(bbc)
15   LEGACY_FLOPPY_OPTION( ssd40, "bbc,img,ssd", "BBC 40t SSD disk image", basicdsk_identify_default, basicdsk_construct_default, NULL,
16      HEADS([1])
17      TRACKS([40])
18      SECTORS([10])
19      SECTOR_LENGTH([256])
20      FIRST_SECTOR_ID([0]))
21   LEGACY_FLOPPY_OPTION( ssd80, "bbc,img,ssd", "BBC 80t SSD disk image", basicdsk_identify_default, basicdsk_construct_default, NULL,
22      HEADS([1])
23      TRACKS([80])
24      SECTORS([10])
25      SECTOR_LENGTH([256])
26      FIRST_SECTOR_ID([0]))
27   LEGACY_FLOPPY_OPTION( dsd40, "dsd", "BBC 40t DSD disk image", basicdsk_identify_default, basicdsk_construct_default, NULL,
28      HEADS([2])
29      TRACKS([40])
30      SECTORS([10])
31      SECTOR_LENGTH([256])
32      INTERLEAVE([0])
33      FIRST_SECTOR_ID([0]))
34   LEGACY_FLOPPY_OPTION( dsd80, "dsd", "BBC 80t DSD disk image", basicdsk_identify_default, basicdsk_construct_default, NULL,
35      HEADS([2])
36      TRACKS([80])
37      SECTORS([10])
38      SECTOR_LENGTH([256])
39      INTERLEAVE([0])
40      FIRST_SECTOR_ID([0]))
41LEGACY_FLOPPY_OPTIONS_END
42
43/********************************************************************/
44
45bbc_ssd_525_format::bbc_ssd_525_format() : wd177x_format(formats)
1446{
1547}
1648
17const char *bbc_format::name() const
49const char *bbc_ssd_525_format::name() const
1850{
19   return "bbc";
51   return "ssd";
2052}
2153
22const char *bbc_format::description() const
54const char *bbc_ssd_525_format::description() const
2355{
24   return "BBC Micro disk image";
56   return "BBC Micro 5.25\" disk image";
2557}
2658
27const char *bbc_format::extensions() const
59const char *bbc_ssd_525_format::extensions() const
2860{
29   return "bbc,img,ssd,dsd";
61   return "bbc,img,ssd";
3062}
3163
32const bbc_format::format bbc_format::formats[] =
64int bbc_ssd_525_format::find_size(io_generic *io, UINT32 form_factor)
3365{
34   {   // 100k single sided single density
66   char cat[8];
67   io_generic_read(io, cat, 256, 8);
68   UINT64 sectors = ((cat[6] & 3) << 8) + cat[7]; // sector count from catalogue
69   UINT64 size = io_generic_size(io);
70   for(int i=0; formats[i].form_factor; i++) {
71      const format &f = formats[i];
72      if(form_factor != floppy_image::FF_UNKNOWN && form_factor != f.form_factor)
73         continue;
74
75      if((size <= (UINT64)compute_track_size(f) * f.track_count * f.head_count) && (sectors == f.track_count * f.sector_count))
76         return i;
77   }
78   return -1;
79}
80
81const bbc_ssd_525_format::format bbc_ssd_525_format::formats[] =
82{
83   { // 100k 40 track single sided single density
3584      floppy_image::FF_525, floppy_image::SSSD, floppy_image::FM,
36      4000, 10, 40, 1, 256, {}, 0, {}, 16, 11, 19
85      4000, 10, 40, 1, 256, {}, 0, {}, 40, 10, 10
3786   },
38   {   // 200k double sided single density
87   { // 200k 80 track single sided single density
88      floppy_image::FF_525, floppy_image::SSQD, floppy_image::FM,
89      4000, 10, 80, 1, 256, {}, 0, {}, 40, 10, 10
90   },
91   { // 200k 40 track double sided single density
3992      floppy_image::FF_525, floppy_image::DSSD, floppy_image::FM,
40      4000, 10, 40, 2, 256, {}, 0, {}, 16, 11, 19
93      4000, 10, 40, 2, 256, {}, 0, {}, 40, 10, 10
4194   },
42   {   // 200k single sided double density
43      floppy_image::FF_525, floppy_image::SSQD, floppy_image::FM,
44      4000, 10, 80, 1, 256, {}, 0, {}, 16, 11, 19
95   { // 400k 80 track double sided single density
96      floppy_image::FF_525, floppy_image::DSQD, floppy_image::FM,
97      4000, 10, 80, 2, 256, {}, 0, {}, 40, 10, 10
4598   },
46   {   // 400k double sided double density
99   {}
100};
101
102
103bbc_dsd_525_format::bbc_dsd_525_format() : wd177x_format(formats)
104{
105}
106
107const char *bbc_dsd_525_format::name() const
108{
109   return "dsd";
110}
111
112const char *bbc_dsd_525_format::description() const
113{
114   return "BBC Micro 5.25\" disk image";
115}
116
117const char *bbc_dsd_525_format::extensions() const
118{
119   return "dsd";
120}
121
122int bbc_dsd_525_format::find_size(io_generic *io, UINT32 form_factor)
123{
124   char cat[8];
125   io_generic_read(io, cat, 256, 8);
126   UINT64 sectors = ((cat[6] & 3) << 8) + cat[7]; // sector count from catalogue
127   UINT64 size = io_generic_size(io);
128   for(int i=0; formats[i].form_factor; i++) {
129      const format &f = formats[i];
130      if(form_factor != floppy_image::FF_UNKNOWN && form_factor != f.form_factor)
131         continue;
132
133      if((size <= (UINT64)compute_track_size(f) * f.track_count * f.head_count) && (sectors == f.track_count * f.sector_count))
134         return i;
135   }
136   return -1;
137}
138
139const bbc_dsd_525_format::format bbc_dsd_525_format::formats[] =
140{
141   { // 200k 40 track double sided single density
47142      floppy_image::FF_525, floppy_image::DSQD, floppy_image::FM,
48      4000, 10, 80, 2, 256, {}, 0, {}, 16, 11, 19
143      4000, 10, 40, 2, 256, {}, -1, { 0,1,2,3,4,5,6,7,8,9 }, 40, 10, 10
49144   },
145   { // 400k 80 track double sided single density
146      floppy_image::FF_525, floppy_image::DSQD, floppy_image::FM,
147      4000, 10, 80, 2, 256, {}, -1, { 0,1,2,3,4,5,6,7,8,9 }, 40, 10, 10
148   },
50149   {}
51150};
52151
53const floppy_format_type FLOPPY_BBC_FORMAT = &floppy_image_format_creator<bbc_format>;
152
153bbc_adf_525_format::bbc_adf_525_format() : wd177x_format(formats)
154{
155}
156
157const char *bbc_adf_525_format::name() const
158{
159   return "adf";
160}
161
162const char *bbc_adf_525_format::description() const
163{
164   return "BBC Micro 5.25\" ADFS disk image";
165}
166
167const char *bbc_adf_525_format::extensions() const
168{
169   return "adf,ads,adm,adl,img";
170}
171
172const bbc_adf_525_format::format bbc_adf_525_format::formats[] =
173{
174   { // 160K 40 track single sided double density
175      floppy_image::FF_525, floppy_image::SSDD, floppy_image::MFM,
176      2000, 16, 40, 1, 256, {}, 0, {}, 60, 22, 43
177   },
178   { // 320K 80 track single sided double density
179      floppy_image::FF_525, floppy_image::SSDD, floppy_image::MFM,
180      2000, 16, 80, 1, 256, {}, 0, {}, 60, 22, 43
181   },
182   { // 640K 80 track double sided double density
183      floppy_image::FF_525, floppy_image::DSDD, floppy_image::MFM,
184      2000, 16, 80, 2, 256, {}, -1, { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 }, 60, 22, 43
185   },
186   {}
187};
188
189
190bbc_adf_35_format::bbc_adf_35_format() : wd177x_format(formats)
191{
192}
193
194const char *bbc_adf_35_format::name() const
195{
196   return "adf";
197}
198
199const char *bbc_adf_35_format::description() const
200{
201   return "BBC Micro 3.5\" ADFS disk image";
202}
203
204const char *bbc_adf_35_format::extensions() const
205{
206   return "adf,ads,adm,adl,img";
207}
208
209const bbc_adf_35_format::format bbc_adf_35_format::formats[] = {
210   { // 160K 3 1/2 inch 40 track single sided double density
211      floppy_image::FF_35, floppy_image::SSDD, floppy_image::MFM,
212      2000, 16, 40, 1, 256, {}, 0, {}, 60, 22, 43
213   },
214   { // 320K 3 1/2 inch 80 track single sided double density
215      floppy_image::FF_35, floppy_image::SSQD, floppy_image::MFM,
216      2000, 16, 80, 1, 256, {}, 0, {}, 60, 22, 43
217   },
218   { // 640K 3 1/2 inch 80 track double sided double density
219      floppy_image::FF_35, floppy_image::DSQD, floppy_image::MFM,
220      2000, 16, 80, 2, 256, {}, -1, { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 }, 60, 22, 43
221   },
222   {}
223};
224
225
226const floppy_format_type FLOPPY_BBC_SSD_525_FORMAT = &floppy_image_format_creator<bbc_ssd_525_format>;
227const floppy_format_type FLOPPY_BBC_DSD_525_FORMAT = &floppy_image_format_creator<bbc_dsd_525_format>;
228const floppy_format_type FLOPPY_BBC_ADF_525_FORMAT = &floppy_image_format_creator<bbc_adf_525_format>;
229const floppy_format_type FLOPPY_BBC_ADF_35_FORMAT = &floppy_image_format_creator<bbc_adf_35_format>;
trunk/src/lib/formats/bbc_dsk.h
r249143r249144
11// license:GPL-2.0+
2// copyright-holders:Dirk Best
2// copyright-holders:Dirk Best, Nigel Barnes
33/***************************************************************************
44
55    BBC Micro
66
7    Disk image format
7    Disk image formats
88
99***************************************************************************/
1010
r249143r249144
1313#ifndef __BBC_DSK_H__
1414#define __BBC_DSK_H__
1515
16#include "flopimg.h"
1617#include "wd177x_dsk.h"
1718
18class bbc_format : public wd177x_format
19/**************************************************************************/
20
21LEGACY_FLOPPY_OPTIONS_EXTERN(bbc);
22
23/**************************************************************************/
24
25class bbc_ssd_525_format : public wd177x_format
1926{
2027public:
21   bbc_format();
28   bbc_ssd_525_format();
2229
30   virtual int find_size(io_generic *io, UINT32 form_factor);
2331   virtual const char *name() const;
2432   virtual const char *description() const;
2533   virtual const char *extensions() const;
r249143r249144
2836   static const format formats[];
2937};
3038
31extern const floppy_format_type FLOPPY_BBC_FORMAT;
39class bbc_dsd_525_format : public wd177x_format
40{
41public:
42   bbc_dsd_525_format();
3243
44   virtual int find_size(io_generic *io, UINT32 form_factor);
45   virtual const char *name() const;
46   virtual const char *description() const;
47   virtual const char *extensions() const;
48
49private:
50   static const format formats[];
51};
52
53class bbc_adf_525_format : public wd177x_format
54{
55public:
56   bbc_adf_525_format();
57
58   virtual const char *name() const;
59   virtual const char *description() const;
60   virtual const char *extensions() const;
61
62private:
63   static const format formats[];
64};
65
66class bbc_adf_35_format : public wd177x_format
67{
68public:
69   bbc_adf_35_format();
70
71   virtual const char *name() const;
72   virtual const char *description() const;
73   virtual const char *extensions() const;
74
75private:
76   static const format formats[];
77};
78
79
80extern const floppy_format_type FLOPPY_BBC_SSD_525_FORMAT;
81extern const floppy_format_type FLOPPY_BBC_DSD_525_FORMAT;
82extern const floppy_format_type FLOPPY_BBC_ADF_525_FORMAT;
83extern const floppy_format_type FLOPPY_BBC_ADF_35_FORMAT;
84
3385#endif // __BBC_DSK_H__
trunk/src/mame/arcade.lst
r249143r249144
48024802rachero         // 1990.?? Racing Hero (World, FD1094)
48034803abcop           // 1990.?? A.B.Cop (World, FD1094)
48044804abcopj          // 1991.01 A.B.Cop (Japan, FD1094)
4805gpriderjs       // 1990.10 GP Rider (Japan, FD1094)
4806gpriderj      // as above
4807gpriders        // 1990.?? GP Rider (World, FD1094)
4808gprider          // as above
4809gpriderus       // 1990.12 GP Rider (US, FD1094)
4810gprideru       // as above
4805gpriderj        // 1990.10 GP Rider (Japan, FD1094)
4806gprider         // 1990.?? GP Rider (World, FD1094)
4807gpridert      // as above
4808gprideru        // 1990.12 GP Rider (US, FD1094)
48114809rascot          // 1991.?? Royal Ascot (Japan)
48124810
48134811
trunk/src/mame/drivers/segaxbd.c
r249143r249144
33883388//  Custom Chip 315-5304 (IC 127)
33893389//  IC BD Number: 834-7626-03 (roms are "MPR") / 834-7626-05 (roms are "EPR")
33903390//
3391ROM_START( gpriders )
3391ROM_START( gprider )
33923392   ROM_REGION( 0x80000, "mainpcb:maincpu", 0 ) // 68000 code
33933393   ROM_LOAD16_BYTE( "epr-13409.ic58", 0x00000, 0x20000, CRC(9abb81b6) SHA1(f6308f3ec99ee66677e86f6a915e4dff8557d25f) )
33943394   ROM_LOAD16_BYTE( "epr-13408.ic63", 0x00001, 0x20000, CRC(8e410e97) SHA1(2021d738064e57d175b59ba053d9ee35ed4516c8) )
r249143r249144
34383438ROM_END
34393439
34403440// Twin setup
3441ROM_START( gprider )
3441ROM_START( gpridert )
34423442   ROM_REGION( 0x80000, "mainpcb:maincpu", 0 ) // 68000 code
34433443   ROM_LOAD16_BYTE( "epr-13409.ic58", 0x00000, 0x20000, CRC(9abb81b6) SHA1(f6308f3ec99ee66677e86f6a915e4dff8557d25f) )
34443444   ROM_LOAD16_BYTE( "epr-13408.ic63", 0x00001, 0x20000, CRC(8e410e97) SHA1(2021d738064e57d175b59ba053d9ee35ed4516c8) )
r249143r249144
35413541//  Custom Chip 315-5304 (IC 127)
35423542//  IC BD Number: 834-7626-01 (roms are "MPR") / 834-7626-04 (roms are "EPR")
35433543//
3544ROM_START( gpriderus )
3545   ROM_REGION( 0x80000, "mainpcb:maincpu", 0 ) // 68000 code
3546   ROM_LOAD16_BYTE( "epr-13407.ic58", 0x00000, 0x20000, CRC(03553ebd) SHA1(041a71a2dce2ad56360f500cb11e29a629020160) )
3547   ROM_LOAD16_BYTE( "epr-13406.ic63", 0x00001, 0x20000, CRC(122c711f) SHA1(2bcc51347e771a7e7f770e68b24d82497d24aa2e) )
3548
3549   ROM_REGION( 0x2000, "mainpcb:maincpu:key", 0 )  // decryption key
3550   ROM_LOAD( "317-0162.key", 0x0000, 0x2000, CRC(8067de53) SHA1(e8cd1dfbad94856c6bd51569557667e72f0a5dd4) )
3551
3552   ROM_REGION( 0x80000, "mainpcb:subcpu", 0 ) // 2nd 68000 code
3553   ROM_LOAD16_BYTE( "epr-13395.ic20", 0x00000, 0x20000,CRC(d6ccfac7) SHA1(9287ab08600163a0d9bd33618c629f99391316bd) )
3554   ROM_LOAD16_BYTE( "epr-13394.ic29", 0x00001, 0x20000,CRC(914a55ec) SHA1(84fe1df12478990418b46b6800425e5599e9eff9) )
3555   ROM_LOAD16_BYTE( "epr-13393.ic21", 0x40000, 0x20000,CRC(08d023cc) SHA1(d008d57e494f484a1a84896065d53fb9b1d8d60e) )
3556   ROM_LOAD16_BYTE( "epr-13392.ic30", 0x40001, 0x20000,CRC(f927cd42) SHA1(67eab328c1fb878fe3d086d0639f5051b135a037) )
3557
3558   ROM_REGION( 0x30000, "mainpcb:gfx1", 0 ) // tiles
3559   ROM_LOAD( "epr-13383.ic154", 0x00000, 0x10000, CRC(24f897a7) SHA1(68ba17067d90f07bb5a549017be4773b33ae81d0) )
3560   ROM_LOAD( "epr-13384.ic153", 0x10000, 0x10000, CRC(fe8238bd) SHA1(601910bd86536e6b08f5308b298c8f01fa60f233) )
3561   ROM_LOAD( "epr-13385.ic152", 0x20000, 0x10000, CRC(6df1b995) SHA1(5aab19b87a9ef162c30ccf5974cb795e37dba91f) )
3562
3563   ROM_REGION32_LE( 0x200000, "mainpcb:sprites", 0 ) // sprites
3564   ROM_LOAD32_BYTE( "epr-13382.ic90",  0x000000, 0x20000, CRC(01dac209) SHA1(4c6b03308193c472f6cdbcede306f8ce6db0cc4b) )
3565   ROM_LOAD32_BYTE( "epr-13381.ic94",  0x000001, 0x20000, CRC(3a50d931) SHA1(9d9cb1793f3b8f562ce0ea49f2afeef099f20859) )
3566   ROM_LOAD32_BYTE( "epr-13380.ic98",  0x000002, 0x20000, CRC(ad1024c8) SHA1(86e941424b2e2e00940886e5daed640a78ed7403) )
3567   ROM_LOAD32_BYTE( "epr-13379.ic102", 0x000003, 0x20000, CRC(1ac17625) SHA1(7aefd382041dd3f97936ecb8738a3f2c9780c58f) )
3568   ROM_LOAD32_BYTE( "epr-13378.ic91",  0x080000, 0x20000, CRC(50c9b867) SHA1(dd9702b369ea8abd50da22ce721b7040428e9d4b) )
3569   ROM_LOAD32_BYTE( "epr-13377.ic95",  0x080001, 0x20000, CRC(9b12f5c0) SHA1(2060420611b3354974c49bc80f556f945512570b) )
3570   ROM_LOAD32_BYTE( "epr-13376.ic99",  0x080002, 0x20000, CRC(449ac518) SHA1(0438a72e53a7889d39ea7e2530e49a2594d97e90) )
3571   ROM_LOAD32_BYTE( "epr-13375.ic103", 0x080003, 0x20000, CRC(5489a9ff) SHA1(c458cb55d957edae340535f54189438296f3ec2f) )
3572   ROM_LOAD32_BYTE( "epr-13374.ic92",  0x100000, 0x20000, CRC(6a319e4f) SHA1(d9f92b15f4baa14745048073205add35b7d42d27) )
3573   ROM_LOAD32_BYTE( "epr-13373.ic96",  0x100001, 0x20000, CRC(eca5588b) SHA1(11def0c293868193d457958fe7459fd8c31dbd2b) )
3574   ROM_LOAD32_BYTE( "epr-13372.ic100", 0x100002, 0x20000, CRC(0b45a433) SHA1(82fa2b208eaf70b70524681fbc3ec70085e70d83) )
3575   ROM_LOAD32_BYTE( "epr-13371.ic104", 0x100003, 0x20000, CRC(b68f4cff) SHA1(166f2a685cbc230c098fdc1646b6e632dd2b09dd) )
3576   ROM_LOAD32_BYTE( "epr-13370.ic93",  0x180000, 0x20000, CRC(78276620) SHA1(2c4505c57a1e765f9cfd48fb1637d67d199a2f1d) )
3577   ROM_LOAD32_BYTE( "epr-13369.ic97",  0x180001, 0x20000, CRC(8625bf0f) SHA1(0ae70bc0d54e25eecf4a11cf0600225dca35914d) )
3578   ROM_LOAD32_BYTE( "epr-13368.ic101", 0x180002, 0x20000, CRC(0f50716c) SHA1(eb4c7f47e11c58fe0d58f67e6dafabc6291eabb8) )
3579   ROM_LOAD32_BYTE( "epr-13367.ic105", 0x180003, 0x20000, CRC(4b1bb51f) SHA1(17fd5ac9e18dd6097a015e9d7b6815826f9c53f1) )
3580
3581   ROM_REGION( 0x10000, "mainpcb:gfx3", ROMREGION_ERASE00 ) // road gfx
3582   // none??
3583
3584   ROM_REGION( 0x10000, "mainpcb:soundcpu", 0 ) // sound CPU
3585   ROM_LOAD( "epr-13388.ic17",    0x00000, 0x10000, CRC(706581e4) SHA1(51c9dbf2bf0d6b8826de24cd33596f5c95136870) )
3586
3587   ROM_REGION( 0x80000, "mainpcb:pcm", ROMREGION_ERASEFF ) // Sega PCM sound data
3588   ROM_LOAD( "epr-13391.ic11",    0x00000, 0x20000, CRC(8c30c867) SHA1(0d735291b1311890938f8a1143fae6af9feb2a69) )
3589   ROM_LOAD( "epr-13390.ic12",    0x20000, 0x20000, CRC(8c93cd05) SHA1(bb08094abac6c104eddf14f634e9791f03122946) )
3590   ROM_LOAD( "epr-13389.ic13",    0x40000, 0x20000, CRC(4e4c758e) SHA1(181750dfcdd6d5b28b063c980c251991163d9474) )
3591ROM_END
3592
3593// twin setup
35943544ROM_START( gprideru )
35953545   ROM_REGION( 0x80000, "mainpcb:maincpu", 0 ) // 68000 code
35963546   ROM_LOAD16_BYTE( "epr-13407.ic58", 0x00000, 0x20000, CRC(03553ebd) SHA1(041a71a2dce2ad56360f500cb11e29a629020160) )
r249143r249144
36383588   ROM_LOAD( "epr-13391.ic11",    0x00000, 0x20000, CRC(8c30c867) SHA1(0d735291b1311890938f8a1143fae6af9feb2a69) )
36393589   ROM_LOAD( "epr-13390.ic12",    0x20000, 0x20000, CRC(8c93cd05) SHA1(bb08094abac6c104eddf14f634e9791f03122946) )
36403590   ROM_LOAD( "epr-13389.ic13",    0x40000, 0x20000, CRC(4e4c758e) SHA1(181750dfcdd6d5b28b063c980c251991163d9474) )
3641
3642   ROM_REGION( 0x80000, "subpcb:maincpu", 0 ) // 68000 code
3643   ROM_LOAD16_BYTE( "epr-13407.ic58", 0x00000, 0x20000, CRC(03553ebd) SHA1(041a71a2dce2ad56360f500cb11e29a629020160) )
3644   ROM_LOAD16_BYTE( "epr-13406.ic63", 0x00001, 0x20000, CRC(122c711f) SHA1(2bcc51347e771a7e7f770e68b24d82497d24aa2e) )
3645
3646   ROM_REGION( 0x2000, "subpcb:maincpu:key", 0 )  // decryption key
3647   ROM_LOAD( "317-0162.key", 0x0000, 0x2000, CRC(8067de53) SHA1(e8cd1dfbad94856c6bd51569557667e72f0a5dd4) )
3648
3649   ROM_REGION( 0x80000, "subpcb:subcpu", 0 ) // 2nd 68000 code
3650   ROM_LOAD16_BYTE( "epr-13395.ic20", 0x00000, 0x20000,CRC(d6ccfac7) SHA1(9287ab08600163a0d9bd33618c629f99391316bd) )
3651   ROM_LOAD16_BYTE( "epr-13394.ic29", 0x00001, 0x20000,CRC(914a55ec) SHA1(84fe1df12478990418b46b6800425e5599e9eff9) )
3652   ROM_LOAD16_BYTE( "epr-13393.ic21", 0x40000, 0x20000,CRC(08d023cc) SHA1(d008d57e494f484a1a84896065d53fb9b1d8d60e) )
3653   ROM_LOAD16_BYTE( "epr-13392.ic30", 0x40001, 0x20000,CRC(f927cd42) SHA1(67eab328c1fb878fe3d086d0639f5051b135a037) )
3654
3655   ROM_REGION( 0x30000, "subpcb:gfx1", 0 ) // tiles
3656   ROM_LOAD( "epr-13383.ic154", 0x00000, 0x10000, CRC(24f897a7) SHA1(68ba17067d90f07bb5a549017be4773b33ae81d0) )
3657   ROM_LOAD( "epr-13384.ic153", 0x10000, 0x10000, CRC(fe8238bd) SHA1(601910bd86536e6b08f5308b298c8f01fa60f233) )
3658   ROM_LOAD( "epr-13385.ic152", 0x20000, 0x10000, CRC(6df1b995) SHA1(5aab19b87a9ef162c30ccf5974cb795e37dba91f) )
3659
3660   ROM_REGION32_LE( 0x200000, "subpcb:sprites", 0 ) // sprites
3661   ROM_LOAD32_BYTE( "epr-13382.ic90",  0x000000, 0x20000, CRC(01dac209) SHA1(4c6b03308193c472f6cdbcede306f8ce6db0cc4b) )
3662   ROM_LOAD32_BYTE( "epr-13381.ic94",  0x000001, 0x20000, CRC(3a50d931) SHA1(9d9cb1793f3b8f562ce0ea49f2afeef099f20859) )
3663   ROM_LOAD32_BYTE( "epr-13380.ic98",  0x000002, 0x20000, CRC(ad1024c8) SHA1(86e941424b2e2e00940886e5daed640a78ed7403) )
3664   ROM_LOAD32_BYTE( "epr-13379.ic102", 0x000003, 0x20000, CRC(1ac17625) SHA1(7aefd382041dd3f97936ecb8738a3f2c9780c58f) )
3665   ROM_LOAD32_BYTE( "epr-13378.ic91",  0x080000, 0x20000, CRC(50c9b867) SHA1(dd9702b369ea8abd50da22ce721b7040428e9d4b) )
3666   ROM_LOAD32_BYTE( "epr-13377.ic95",  0x080001, 0x20000, CRC(9b12f5c0) SHA1(2060420611b3354974c49bc80f556f945512570b) )
3667   ROM_LOAD32_BYTE( "epr-13376.ic99",  0x080002, 0x20000, CRC(449ac518) SHA1(0438a72e53a7889d39ea7e2530e49a2594d97e90) )
3668   ROM_LOAD32_BYTE( "epr-13375.ic103", 0x080003, 0x20000, CRC(5489a9ff) SHA1(c458cb55d957edae340535f54189438296f3ec2f) )
3669   ROM_LOAD32_BYTE( "epr-13374.ic92",  0x100000, 0x20000, CRC(6a319e4f) SHA1(d9f92b15f4baa14745048073205add35b7d42d27) )
3670   ROM_LOAD32_BYTE( "epr-13373.ic96",  0x100001, 0x20000, CRC(eca5588b) SHA1(11def0c293868193d457958fe7459fd8c31dbd2b) )
3671   ROM_LOAD32_BYTE( "epr-13372.ic100", 0x100002, 0x20000, CRC(0b45a433) SHA1(82fa2b208eaf70b70524681fbc3ec70085e70d83) )
3672   ROM_LOAD32_BYTE( "epr-13371.ic104", 0x100003, 0x20000, CRC(b68f4cff) SHA1(166f2a685cbc230c098fdc1646b6e632dd2b09dd) )
3673   ROM_LOAD32_BYTE( "epr-13370.ic93",  0x180000, 0x20000, CRC(78276620) SHA1(2c4505c57a1e765f9cfd48fb1637d67d199a2f1d) )
3674   ROM_LOAD32_BYTE( "epr-13369.ic97",  0x180001, 0x20000, CRC(8625bf0f) SHA1(0ae70bc0d54e25eecf4a11cf0600225dca35914d) )
3675   ROM_LOAD32_BYTE( "epr-13368.ic101", 0x180002, 0x20000, CRC(0f50716c) SHA1(eb4c7f47e11c58fe0d58f67e6dafabc6291eabb8) )
3676   ROM_LOAD32_BYTE( "epr-13367.ic105", 0x180003, 0x20000, CRC(4b1bb51f) SHA1(17fd5ac9e18dd6097a015e9d7b6815826f9c53f1) )
3677
3678   ROM_REGION( 0x10000, "subpcb:gfx3", ROMREGION_ERASE00 ) // road gfx
3679   // none??
3680
3681   ROM_REGION( 0x10000, "subpcb:soundcpu", 0 ) // sound CPU
3682   ROM_LOAD( "epr-13388.ic17",    0x00000, 0x10000, CRC(706581e4) SHA1(51c9dbf2bf0d6b8826de24cd33596f5c95136870) )
3683
3684   ROM_REGION( 0x80000, "subpcb:pcm", ROMREGION_ERASEFF ) // Sega PCM sound data
3685   ROM_LOAD( "epr-13391.ic11",    0x00000, 0x20000, CRC(8c30c867) SHA1(0d735291b1311890938f8a1143fae6af9feb2a69) )
3686   ROM_LOAD( "epr-13390.ic12",    0x20000, 0x20000, CRC(8c93cd05) SHA1(bb08094abac6c104eddf14f634e9791f03122946) )
3687   ROM_LOAD( "epr-13389.ic13",    0x40000, 0x20000, CRC(4e4c758e) SHA1(181750dfcdd6d5b28b063c980c251991163d9474) )
36883591ROM_END
36893592
36903593//*************************************************************************************************************************
r249143r249144
36933596//  Custom Chip 315-5304 (IC 127)
36943597//  IC BD Number: 834-7626-01 (roms are "MPR") / 834-7626-04 (roms are "EPR")
36953598//
3696ROM_START( gpriderjs )
3697   ROM_REGION( 0x80000, "mainpcb:maincpu", 0 ) // 68000 code
3698   ROM_LOAD16_BYTE( "epr-13387.ic58", 0x00000, 0x20000, CRC(a1e8b2c5) SHA1(22b70a9074263af808bb9dffee29cbcff7e304e3) )
3699   ROM_LOAD16_BYTE( "epr-13386.ic63", 0x00001, 0x20000, CRC(d8be9e66) SHA1(d81c03b08fd6b971554b94e0adac131a1dcf3248) )
3700
3701   ROM_REGION( 0x2000, "mainpcb:maincpu:key", 0 )  // decryption key
3702   ROM_LOAD( "317-0161.key", 0x0000, 0x2000, CRC(e38ddc16) SHA1(d1f7f261320cbc605b4f7e5a9c28f49af5471d87) )
3703
3704   ROM_REGION( 0x80000, "mainpcb:subcpu", 0 ) // 2nd 68000 code
3705   ROM_LOAD16_BYTE( "epr-13395.ic20", 0x00000, 0x20000,CRC(d6ccfac7) SHA1(9287ab08600163a0d9bd33618c629f99391316bd) )
3706   ROM_LOAD16_BYTE( "epr-13394.ic29", 0x00001, 0x20000,CRC(914a55ec) SHA1(84fe1df12478990418b46b6800425e5599e9eff9) )
3707   ROM_LOAD16_BYTE( "epr-13393.ic21", 0x40000, 0x20000,CRC(08d023cc) SHA1(d008d57e494f484a1a84896065d53fb9b1d8d60e) )
3708   ROM_LOAD16_BYTE( "epr-13392.ic30", 0x40001, 0x20000,CRC(f927cd42) SHA1(67eab328c1fb878fe3d086d0639f5051b135a037) )
3709
3710   ROM_REGION( 0x30000, "mainpcb:gfx1", 0 ) // tiles
3711   ROM_LOAD( "epr-13383.ic154", 0x00000, 0x10000, CRC(24f897a7) SHA1(68ba17067d90f07bb5a549017be4773b33ae81d0) )
3712   ROM_LOAD( "epr-13384.ic153", 0x10000, 0x10000, CRC(fe8238bd) SHA1(601910bd86536e6b08f5308b298c8f01fa60f233) )
3713   ROM_LOAD( "epr-13385.ic152", 0x20000, 0x10000, CRC(6df1b995) SHA1(5aab19b87a9ef162c30ccf5974cb795e37dba91f) )
3714
3715   ROM_REGION32_LE( 0x200000, "mainpcb:sprites", 0 ) // sprites
3716   ROM_LOAD32_BYTE( "epr-13382.ic90",  0x000000, 0x20000, CRC(01dac209) SHA1(4c6b03308193c472f6cdbcede306f8ce6db0cc4b) )
3717   ROM_LOAD32_BYTE( "epr-13381.ic94",  0x000001, 0x20000, CRC(3a50d931) SHA1(9d9cb1793f3b8f562ce0ea49f2afeef099f20859) )
3718   ROM_LOAD32_BYTE( "epr-13380.ic98",  0x000002, 0x20000, CRC(ad1024c8) SHA1(86e941424b2e2e00940886e5daed640a78ed7403) )
3719   ROM_LOAD32_BYTE( "epr-13379.ic102", 0x000003, 0x20000, CRC(1ac17625) SHA1(7aefd382041dd3f97936ecb8738a3f2c9780c58f) )
3720   ROM_LOAD32_BYTE( "epr-13378.ic91",  0x080000, 0x20000, CRC(50c9b867) SHA1(dd9702b369ea8abd50da22ce721b7040428e9d4b) )
3721   ROM_LOAD32_BYTE( "epr-13377.ic95",  0x080001, 0x20000, CRC(9b12f5c0) SHA1(2060420611b3354974c49bc80f556f945512570b) )
3722   ROM_LOAD32_BYTE( "epr-13376.ic99",  0x080002, 0x20000, CRC(449ac518) SHA1(0438a72e53a7889d39ea7e2530e49a2594d97e90) )
3723   ROM_LOAD32_BYTE( "epr-13375.ic103", 0x080003, 0x20000, CRC(5489a9ff) SHA1(c458cb55d957edae340535f54189438296f3ec2f) )
3724   ROM_LOAD32_BYTE( "epr-13374.ic92",  0x100000, 0x20000, CRC(6a319e4f) SHA1(d9f92b15f4baa14745048073205add35b7d42d27) )
3725   ROM_LOAD32_BYTE( "epr-13373.ic96",  0x100001, 0x20000, CRC(eca5588b) SHA1(11def0c293868193d457958fe7459fd8c31dbd2b) )
3726   ROM_LOAD32_BYTE( "epr-13372.ic100", 0x100002, 0x20000, CRC(0b45a433) SHA1(82fa2b208eaf70b70524681fbc3ec70085e70d83) )
3727   ROM_LOAD32_BYTE( "epr-13371.ic104", 0x100003, 0x20000, CRC(b68f4cff) SHA1(166f2a685cbc230c098fdc1646b6e632dd2b09dd) )
3728   ROM_LOAD32_BYTE( "epr-13370.ic93",  0x180000, 0x20000, CRC(78276620) SHA1(2c4505c57a1e765f9cfd48fb1637d67d199a2f1d) )
3729   ROM_LOAD32_BYTE( "epr-13369.ic97",  0x180001, 0x20000, CRC(8625bf0f) SHA1(0ae70bc0d54e25eecf4a11cf0600225dca35914d) )
3730   ROM_LOAD32_BYTE( "epr-13368.ic101", 0x180002, 0x20000, CRC(0f50716c) SHA1(eb4c7f47e11c58fe0d58f67e6dafabc6291eabb8) )
3731   ROM_LOAD32_BYTE( "epr-13367.ic105", 0x180003, 0x20000, CRC(4b1bb51f) SHA1(17fd5ac9e18dd6097a015e9d7b6815826f9c53f1) )
3732
3733   ROM_REGION( 0x10000, "mainpcb:gfx3", ROMREGION_ERASE00 ) // road gfx
3734   // none??
3735
3736   ROM_REGION( 0x10000, "mainpcb:soundcpu", 0 ) // sound CPU
3737   ROM_LOAD( "epr-13388.ic17",    0x00000, 0x10000, CRC(706581e4) SHA1(51c9dbf2bf0d6b8826de24cd33596f5c95136870) )
3738
3739   ROM_REGION( 0x80000, "mainpcb:pcm", ROMREGION_ERASEFF ) // Sega PCM sound data
3740   ROM_LOAD( "epr-13391.ic11",    0x00000, 0x20000, CRC(8c30c867) SHA1(0d735291b1311890938f8a1143fae6af9feb2a69) )
3741   ROM_LOAD( "epr-13390.ic12",    0x20000, 0x20000, CRC(8c93cd05) SHA1(bb08094abac6c104eddf14f634e9791f03122946) )
3742   ROM_LOAD( "epr-13389.ic13",    0x40000, 0x20000, CRC(4e4c758e) SHA1(181750dfcdd6d5b28b063c980c251991163d9474) )
3743ROM_END
3744
3745// twin setup
37463599ROM_START( gpriderj )
37473600   ROM_REGION( 0x80000, "mainpcb:maincpu", 0 ) // 68000 code
37483601   ROM_LOAD16_BYTE( "epr-13387.ic58", 0x00000, 0x20000, CRC(a1e8b2c5) SHA1(22b70a9074263af808bb9dffee29cbcff7e304e3) )
r249143r249144
37903643   ROM_LOAD( "epr-13391.ic11",    0x00000, 0x20000, CRC(8c30c867) SHA1(0d735291b1311890938f8a1143fae6af9feb2a69) )
37913644   ROM_LOAD( "epr-13390.ic12",    0x20000, 0x20000, CRC(8c93cd05) SHA1(bb08094abac6c104eddf14f634e9791f03122946) )
37923645   ROM_LOAD( "epr-13389.ic13",    0x40000, 0x20000, CRC(4e4c758e) SHA1(181750dfcdd6d5b28b063c980c251991163d9474) )
3793
3794   ROM_REGION( 0x80000, "subpcb:maincpu", 0 ) // 68000 code
3795   ROM_LOAD16_BYTE( "epr-13387.ic58", 0x00000, 0x20000, CRC(a1e8b2c5) SHA1(22b70a9074263af808bb9dffee29cbcff7e304e3) )
3796   ROM_LOAD16_BYTE( "epr-13386.ic63", 0x00001, 0x20000, CRC(d8be9e66) SHA1(d81c03b08fd6b971554b94e0adac131a1dcf3248) )
3797
3798   ROM_REGION( 0x2000, "subpcb:maincpu:key", 0 )  // decryption key
3799   ROM_LOAD( "317-0161.key", 0x0000, 0x2000, CRC(e38ddc16) SHA1(d1f7f261320cbc605b4f7e5a9c28f49af5471d87) )
3800
3801   ROM_REGION( 0x80000, "subpcb:subcpu", 0 ) // 2nd 68000 code
3802   ROM_LOAD16_BYTE( "epr-13395.ic20", 0x00000, 0x20000,CRC(d6ccfac7) SHA1(9287ab08600163a0d9bd33618c629f99391316bd) )
3803   ROM_LOAD16_BYTE( "epr-13394.ic29", 0x00001, 0x20000,CRC(914a55ec) SHA1(84fe1df12478990418b46b6800425e5599e9eff9) )
3804   ROM_LOAD16_BYTE( "epr-13393.ic21", 0x40000, 0x20000,CRC(08d023cc) SHA1(d008d57e494f484a1a84896065d53fb9b1d8d60e) )
3805   ROM_LOAD16_BYTE( "epr-13392.ic30", 0x40001, 0x20000,CRC(f927cd42) SHA1(67eab328c1fb878fe3d086d0639f5051b135a037) )
3806
3807   ROM_REGION( 0x30000, "subpcb:gfx1", 0 ) // tiles
3808   ROM_LOAD( "epr-13383.ic154", 0x00000, 0x10000, CRC(24f897a7) SHA1(68ba17067d90f07bb5a549017be4773b33ae81d0) )
3809   ROM_LOAD( "epr-13384.ic153", 0x10000, 0x10000, CRC(fe8238bd) SHA1(601910bd86536e6b08f5308b298c8f01fa60f233) )
3810   ROM_LOAD( "epr-13385.ic152", 0x20000, 0x10000, CRC(6df1b995) SHA1(5aab19b87a9ef162c30ccf5974cb795e37dba91f) )
3811
3812   ROM_REGION32_LE( 0x200000, "subpcb:sprites", 0 ) // sprites
3813   ROM_LOAD32_BYTE( "epr-13382.ic90",  0x000000, 0x20000, CRC(01dac209) SHA1(4c6b03308193c472f6cdbcede306f8ce6db0cc4b) )
3814   ROM_LOAD32_BYTE( "epr-13381.ic94",  0x000001, 0x20000, CRC(3a50d931) SHA1(9d9cb1793f3b8f562ce0ea49f2afeef099f20859) )
3815   ROM_LOAD32_BYTE( "epr-13380.ic98",  0x000002, 0x20000, CRC(ad1024c8) SHA1(86e941424b2e2e00940886e5daed640a78ed7403) )
3816   ROM_LOAD32_BYTE( "epr-13379.ic102", 0x000003, 0x20000, CRC(1ac17625) SHA1(7aefd382041dd3f97936ecb8738a3f2c9780c58f) )
3817   ROM_LOAD32_BYTE( "epr-13378.ic91",  0x080000, 0x20000, CRC(50c9b867) SHA1(dd9702b369ea8abd50da22ce721b7040428e9d4b) )
3818   ROM_LOAD32_BYTE( "epr-13377.ic95",  0x080001, 0x20000, CRC(9b12f5c0) SHA1(2060420611b3354974c49bc80f556f945512570b) )
3819   ROM_LOAD32_BYTE( "epr-13376.ic99",  0x080002, 0x20000, CRC(449ac518) SHA1(0438a72e53a7889d39ea7e2530e49a2594d97e90) )
3820   ROM_LOAD32_BYTE( "epr-13375.ic103", 0x080003, 0x20000, CRC(5489a9ff) SHA1(c458cb55d957edae340535f54189438296f3ec2f) )
3821   ROM_LOAD32_BYTE( "epr-13374.ic92",  0x100000, 0x20000, CRC(6a319e4f) SHA1(d9f92b15f4baa14745048073205add35b7d42d27) )
3822   ROM_LOAD32_BYTE( "epr-13373.ic96",  0x100001, 0x20000, CRC(eca5588b) SHA1(11def0c293868193d457958fe7459fd8c31dbd2b) )
3823   ROM_LOAD32_BYTE( "epr-13372.ic100", 0x100002, 0x20000, CRC(0b45a433) SHA1(82fa2b208eaf70b70524681fbc3ec70085e70d83) )
3824   ROM_LOAD32_BYTE( "epr-13371.ic104", 0x100003, 0x20000, CRC(b68f4cff) SHA1(166f2a685cbc230c098fdc1646b6e632dd2b09dd) )
3825   ROM_LOAD32_BYTE( "epr-13370.ic93",  0x180000, 0x20000, CRC(78276620) SHA1(2c4505c57a1e765f9cfd48fb1637d67d199a2f1d) )
3826   ROM_LOAD32_BYTE( "epr-13369.ic97",  0x180001, 0x20000, CRC(8625bf0f) SHA1(0ae70bc0d54e25eecf4a11cf0600225dca35914d) )
3827   ROM_LOAD32_BYTE( "epr-13368.ic101", 0x180002, 0x20000, CRC(0f50716c) SHA1(eb4c7f47e11c58fe0d58f67e6dafabc6291eabb8) )
3828   ROM_LOAD32_BYTE( "epr-13367.ic105", 0x180003, 0x20000, CRC(4b1bb51f) SHA1(17fd5ac9e18dd6097a015e9d7b6815826f9c53f1) )
3829
3830   ROM_REGION( 0x10000, "subpcb:gfx3", ROMREGION_ERASE00 ) // road gfx
3831   // none??
3832
3833   ROM_REGION( 0x10000, "subpcb:soundcpu", 0 ) // sound CPU
3834   ROM_LOAD( "epr-13388.ic17",    0x00000, 0x10000, CRC(706581e4) SHA1(51c9dbf2bf0d6b8826de24cd33596f5c95136870) )
3835
3836   ROM_REGION( 0x80000, "subpcb:pcm", ROMREGION_ERASEFF ) // Sega PCM sound data
3837   ROM_LOAD( "epr-13391.ic11",    0x00000, 0x20000, CRC(8c30c867) SHA1(0d735291b1311890938f8a1143fae6af9feb2a69) )
3838   ROM_LOAD( "epr-13390.ic12",    0x20000, 0x20000, CRC(8c93cd05) SHA1(bb08094abac6c104eddf14f634e9791f03122946) )
3839   ROM_LOAD( "epr-13389.ic13",    0x40000, 0x20000, CRC(4e4c758e) SHA1(181750dfcdd6d5b28b063c980c251991163d9474) )
38403646ROM_END
38413647
3648
38423649//*************************************************************************************************************************
38433650//*************************************************************************************************************************
38443651//*************************************************************************************************************************
r249143r249144
39993806GAME( 1989, smgpja,   smgp,     sega_smgp_fd1094,    smgp,     segaxbd_new_state, smgp,     ROT0,   "Sega", "Super Monaco GP (Japan, Rev A, FD1094 317-0124a)", 0 )
40003807GAME( 1990, abcop,    0,        sega_xboard_fd1094,  abcop,    driver_device,     0,  ROT0,   "Sega", "A.B. Cop (World, FD1094 317-0169b)", 0 )
40013808GAME( 1990, abcopj,   abcop,    sega_xboard_fd1094,  abcop,    driver_device,     0,  ROT0,   "Sega", "A.B. Cop (Japan, FD1094 317-0169b)", 0 )
4002// wasn't officially available as a single PCB setup, but runs anyway albeit with messages suggesting you can compete against a rival that doesn't exist?
4003GAME( 1990, gpriders, gprider,  sega_xboard_fd1094,  gprider, segaxbd_new_state, gprider,  ROT0,   "Sega", "GP Rider (World, FD1094 317-0163)", 0 )
4004GAME( 1990, gpriderus,gprider,  sega_xboard_fd1094,  gprider, segaxbd_new_state, gprider,  ROT0,   "Sega", "GP Rider (US, FD1094 317-0162)", 0 )
4005GAME( 1990, gpriderjs,gprider,  sega_xboard_fd1094,  gprider, segaxbd_new_state, gprider,  ROT0,   "Sega", "GP Rider (Japan, FD1094 317-0161)", 0 )
3809GAME( 1990, gprider,  0,        sega_xboard_fd1094,  gprider, segaxbd_new_state, gprider,  ROT0,   "Sega", "GP Rider (World, FD1094 317-0163)", 0 )
3810GAME( 1990, gprideru, gprider,  sega_xboard_fd1094,  gprider, segaxbd_new_state, gprider,  ROT0,   "Sega", "GP Rider (US, FD1094 317-0162)", 0 )
3811GAME( 1990, gpriderj, gprider,  sega_xboard_fd1094,  gprider, segaxbd_new_state, gprider,  ROT0,   "Sega", "GP Rider (Japan, FD1094 317-0161)", 0 )
40063812
4007// multi X-Board (2 stacks directly connected, shared RAM on bridge PCB - not networked)
4008GAME( 1990, gprider, 0,        sega_xboard_fd1094_double, gprider_double,  segaxbd_new_state_double, gprider_double,  ROT0,   "Sega", "GP Rider (World, FD1094 317-0163) (Twin setup)", 0 )
4009GAME( 1990, gprideru,gprider,  sega_xboard_fd1094_double, gprider_double,  segaxbd_new_state_double, gprider_double,  ROT0,   "Sega", "GP Rider (US, FD1094 317-0162) (Twin setup)", 0 )
4010GAME( 1990, gpriderj,gprider,  sega_xboard_fd1094_double, gprider_double,  segaxbd_new_state_double, gprider_double,  ROT0,   "Sega", "GP Rider (Japan, FD1094 317-0161) (Twin setup)", 0 )
3813// multi X-Board (2 stacks directly connected, shared RAM on bridge PCB?)
3814GAME( 1990, gpridert, gprider,  sega_xboard_fd1094_double, gprider_double,  segaxbd_new_state_double, gprider_double,  ROT0,   "Sega", "GP Rider (World, FD1094 317-0163) (master-slave setup)", MACHINE_NOT_WORKING ) // communication breaks down
40113815
40123816// X-Board + other boards?
40133817GAME( 1991, rascot,   0,        sega_rascot,         rascot,   segaxbd_new_state, rascot,   ROT0,   "Sega", "Royal Ascot (Japan, terminal?)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
trunk/src/mame/mess.lst
r249143r249144
342342atombb    // 1979 Acorn Atom
343343//prophet2
344344bbca      // 1981 BBC Micro Model A
345bbcb      // 1981 BBC Micro Model B
345bbcb      // 1981 BBC Micro Model B w/8271 FDC
346346bbcb_de   // 1981 BBC Micro Model B (German)
347bbcb_us   // 1981 BBC Micro Model B (US)
347bbcb_us   // 1983 BBC Micro Model B (US)
348348electron  // 1983 Acorn Electron
349bbcb1770  // 1985 BBC Micro Model B w/1770 FDC
349350bbcbp     // 1985 BBC Micro Model B+ 64K
350351bbcbp128  // 1985 BBC Micro Model B+ 128K
352abc110    // 1985 ABC 110
353abc210    // 1985 ABC 210/Cambridge Workstation
354abc310    // 1985 ABC 310
355reutapm   // 1985 Reuters APM Board
351356bbcm      // 1986 BBC Master 128
352357bbcmt     // 1986 BBC Master Turbo
353358bbcmaiv   // 1986 BBC Master AIV
r249143r249144
355360bbcm512   // 1986 BBC Master 512
356361bbcmarm   // 1986 ARM Evaluation System
357362bbcmc     // 1986 BBC Master Compact
358bbcmc_ar  // 1986 BBC Master Comapact (Arabic)
363bbcmc_ar  // 1986 BBC Master Compact (Arabic)
364pro128s   // 1987 Olivetti Prodest PC 128S
359365bbcbc     // 1985 BBC Bridge Companion
360366a310      // 1988 Acorn Archimedes 310
361367a3010     // 1988 Acorn Archimedes 3010
trunk/src/mess/drivers/apple2.c
r249143r249144
14481448   ROM_LOAD ( "unitron.f0"   , 0x3000, 0x1000, CRC(8e047c4a) SHA1(78c57c0e00dfce7fdec9437fe2b4c25def447e5d))
14491449ROM_END
14501450
1451ROM_START(uniap2ti) /* "Teclado Inteligente" means "smart keyboard" in brazilian portuguese */
1451ROM_START(uniap2ti)
14521452   ROM_REGION(0x1000,"gfx1",0)
14531453   ROM_LOAD ( "unitron.chr", 0x0000, 0x1000, CRC(7fdd1af6) SHA1(2f4f90d90f2f3a8c1fbea304e1072780fb22e698))
14541454
r249143r249144
14581458   ROM_LOAD ( "unitron.f0"   , 0x3000, 0x1000, CRC(8e047c4a) SHA1(78c57c0e00dfce7fdec9437fe2b4c25def447e5d))
14591459
14601460   ROM_REGION(0x4000,"keyboard",0)
1461   ROM_LOAD ( "unitron_apii+_keyboard.ic3", 0x0800, 0x0800, CRC(edc43205) SHA1(220cc21d86f1ab63a301ae7a9c5ff0f3f6cddb70))
1461   ROM_LOAD ( "unitron_apii_keyboard.ic3", 0x1000, 0x1000, CRC(311beae6) SHA1(f6379aba9ac982850edc314c93a393844a3349ef))
14621462ROM_END
14631463
14641464
r249143r249144
16031603COMP( 1982, ace100,   apple2,   0,        apple2,      apple2p, driver_device,  0,        "Franklin Computer", "Franklin Ace 100", MACHINE_SUPPORTS_SAVE )
16041604COMP( 1982, uniap2en, apple2,   0,        apple2p,     apple2p, driver_device,  0,        "Unitron Eletronica", "Unitron AP II (in English)", MACHINE_SUPPORTS_SAVE )
16051605COMP( 1982, uniap2pt, apple2,   0,        apple2p,     apple2p, driver_device,  0,        "Unitron Eletronica", "Unitron AP II (in Brazilian Portuguese)", MACHINE_SUPPORTS_SAVE )
1606COMP( 1984, uniap2ti, apple2,   0,        apple2p,     apple2p, driver_device,  0,        "Unitron Eletronica", "Unitron AP II+ (Teclado Inteligente)", MACHINE_SUPPORTS_SAVE )
1606COMP( 198?, uniap2ti, apple2,   0,        apple2p,     apple2p, driver_device,  0,        "Unitron Eletronica", "Unitron AP II+", MACHINE_SUPPORTS_SAVE )
16071607COMP( 1983, agat7,    apple2,   0,        apple2p,     apple2p, driver_device,  0,        "Agat",              "Agat-7", MACHINE_NOT_WORKING) // disk controller ROM JSRs to $FCA8 which is a delay on apple II, illegal instruction crash here :(
16081608// reverse font direction -\/
16091609COMP( 1984, ivelultr, apple2,   0,        apple2p,     apple2p, driver_device,  0,        "Ivasim",            "Ivel Ultra", MACHINE_SUPPORTS_SAVE )
trunk/src/mess/drivers/bbc.c
r249143r249144
4848#include "cpu/m6502/m6502.h"
4949#include "cpu/m6502/m65sc02.h"
5050#include "machine/6522via.h"
51#include "machine/mc146818.h"       /* RTC & CMOS RAM */
5251#include "bus/centronics/ctronics.h"
5352#include "bus/econet/econet.h"
5453#include "sound/tms5220.h"          /* Speech */
r249143r249144
5857/* Devices */
5958#include "imagedev/flopdrv.h"
6059#include "formats/bbc_dsk.h"
61#include "formats/basicdsk.h"
6260#include "imagedev/cassette.h"
6361#include "formats/uef_cas.h"
6462#include "formats/csw_cas.h"
r249143r249144
138136}
139137
140138static ADDRESS_MAP_START( bbca_mem, AS_PROGRAM, 8, bbc_state )
141   ADDRESS_MAP_UNMAP_HIGH                                                                      /*  Hardware marked with a # is not present in a Model A        */
139   ADDRESS_MAP_UNMAP_HIGH                                                                                      /*  Hardware marked with a # is not present in a Model A        */
142140
143   AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorya1_w)                     /*    0000-3fff                 Regular Ram                     */
144   AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank3") AM_WRITE(bbc_memoryb3_w)                     /*    4000-7fff                 Repeat of the Regular Ram       */
145   AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank4")                                              /*    8000-bfff                 Paged ROM                       */
146   AM_RANGE(0xc000, 0xfbff) AM_READ_BANK("bank7")                                              /*    c000-fbff                 OS ROM                          */
147   AM_RANGE(0xfc00, 0xfdff) AM_NOP                                                             /*    fc00-fdff                 FRED & JIM Pages                */
148                                                                        /*    fe00-feff                 Shiela Address Page             */
149   AM_RANGE(0xfe00, 0xfe07) AM_READWRITE(bbc_6845_r, bbc_6845_w)                               /*    fe00-fe07  6845 CRTC      Video controller                */
150   AM_RANGE(0xfe08, 0xfe08) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, status_r, control_w)
141   AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorya1_w)                                     /*    0000-3fff                 Regular Ram                     */
142   AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank3") AM_WRITE(bbc_memoryb3_w)                                     /*    4000-7fff                 Repeat of the Regular Ram       */
143   AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank4") AM_WRITE(bbc_memoryb4_w)                                     /*    8000-bfff                 Paged ROM                       */
144   AM_RANGE(0xc000, 0xfbff) AM_READ_BANK("bank7")                                                              /*    c000-fbff                 OS ROM                          */
145   AM_RANGE(0xfc00, 0xfdff) AM_NOP                                                                             /*    fc00-fdff                 FRED & JIM Pages                */
146                                                                                                               /*    fe00-feff                 SHEILA Address Page             */
147   AM_RANGE(0xfe00, 0xfe00) AM_MIRROR(0x06) AM_DEVREADWRITE("mc6845", mc6845_device, status_r, address_w)      /*    fe00-fe07  6845 CRTC      Video controller                */
148   AM_RANGE(0xfe01, 0xfe01) AM_MIRROR(0x06) AM_DEVREADWRITE("mc6845", mc6845_device, register_r, register_w)
149   AM_RANGE(0xfe08, 0xfe08) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, status_r, control_w)  /*    fe08-fe0F  6850 ACIA      Serial controller               */
151150   AM_RANGE(0xfe09, 0xfe09) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, data_r, data_w)
152   AM_RANGE(0xfe10, 0xfe17) AM_READWRITE(bbc_fe_r, bbc_SerialULA_w)                            /*    fe10-fe17  Serial ULA     Serial system chip              */
153   AM_RANGE(0xfe18, 0xfe1f) AM_NOP                                                             /*    fe18-fe1f  INTOFF/STATID  # ECONET Interrupt Off / ID No. */
154   AM_RANGE(0xfe20, 0xfe2f) AM_WRITE(bbc_videoULA_w)                                           /* R: fe20-fe2f  INTON          # ECONET Interrupt On           */
155                                                                        /* W: fe20-fe2f  Video ULA      Video system chip               */
156   AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selecta_w)                         /* R: fe30-fe3f  NC             Not Connected                   */
157                                                                        /* W: fe30-fe3f  84LS161        Paged ROM selector              */
158   AM_RANGE(0xfe40, 0xfe5f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write)          /*    fe40-fe5f  6522 VIA       SYSTEM VIA                      */
159   AM_RANGE(0xfe60, 0xfe7f) AM_NOP                                                             /*    fe60-fe7f  6522 VIA       # USER VIA                      */
160   AM_RANGE(0xfe80, 0xfe9f) AM_NOP                                                             /*    fe80-fe9f  8271/1770 FDC  # Floppy disc controller        */
161   AM_RANGE(0xfea0, 0xfebf) AM_READ(bbc_fe_r)                                                  /*    fea0-febf  68B54 ADLC     # ECONET controller             */
162   AM_RANGE(0xfec0, 0xfedf) AM_NOP                                                             /*    fec0-fedf  uPD7002        # Analogue to digital converter */
163   AM_RANGE(0xfee0, 0xfeff) AM_READ(bbc_fe_r)                                                  /*    fee0-feff  Tube ULA       # Tube system interface         */
164   AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("os", 0x3f00)                                 /*    ff00-ffff                 OS Rom (continued)              */
151   AM_RANGE(0xfe10, 0xfe17) AM_READWRITE(bbc_fe_r, bbc_SerialULA_w)                                            /*    fe10-fe17  Serial ULA     Serial system chip              */
152   AM_RANGE(0xfe18, 0xfe1f) AM_NOP                                                                             /*    fe18-fe1f  INTOFF/STATID  # ECONET Interrupt Off / ID No. */
153   AM_RANGE(0xfe20, 0xfe2f) AM_WRITE(bbc_videoULA_w)                                                           /* R: fe20-fe2f  INTON          # ECONET Interrupt On           */
154                                                                                                               /* W: fe20-fe2f  Video ULA      Video system chip               */
155   AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selecta_w)                                         /* R: fe30-fe3f  NC             Not Connected                   */
156                                                                                                               /* W: fe30-fe3f  84LS161        Paged ROM selector              */
157   AM_RANGE(0xfe40, 0xfe5f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write)                          /*    fe40-fe5f  6522 VIA       SYSTEM VIA                      */
158   AM_RANGE(0xfe60, 0xfe7f) AM_NOP                                                                             /*    fe60-fe7f  6522 VIA       # USER VIA                      */
159   AM_RANGE(0xfe80, 0xfe9f) AM_NOP                                                                             /*    fe80-fe9f  8271/1770 FDC  # Floppy disc controller        */
160   AM_RANGE(0xfea0, 0xfebf) AM_READ(bbc_fe_r)                                                                  /*    fea0-febf  68B54 ADLC     # ECONET controller             */
161   AM_RANGE(0xfec0, 0xfedf) AM_NOP                                                                             /*    fec0-fedf  uPD7002        # Analogue to digital converter */
162   AM_RANGE(0xfee0, 0xfeff) AM_READ(bbc_fe_r)                                                                  /*    fee0-feff  Tube ULA       # Tube system interface         */
163   AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("os", 0x3f00)                                                     /*    ff00-ffff                 OS Rom (continued)              */
165164ADDRESS_MAP_END
166165
167166
168static ADDRESS_MAP_START( bbcb_mem, AS_PROGRAM, 8, bbc_state )
167static ADDRESS_MAP_START( bbc_base, AS_PROGRAM, 8, bbc_state )
169168   ADDRESS_MAP_UNMAP_HIGH
170169
170   AM_RANGE(0xc000, 0xfbff) AM_READ_BANK("bank7")                                                              /*    c000-fbff                 OS ROM                          */
171   AM_RANGE(0xfc00, 0xfdff) AM_NOP                                                                             /*    fc00-fdff                 FRED & JIM Pages                */
172                                                                                                               /*    fe00-feff                 SHEILA Address Page             */
173   AM_RANGE(0xfe00, 0xfe00) AM_MIRROR(0x06) AM_DEVREADWRITE("mc6845", mc6845_device, status_r, address_w)      /*    fe00-fe07  6845 CRTC      Video controller                */
174   AM_RANGE(0xfe01, 0xfe01) AM_MIRROR(0x06) AM_DEVREADWRITE("mc6845", mc6845_device, register_r, register_w)
175   AM_RANGE(0xfe08, 0xfe08) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, status_r, control_w)  /*    fe08-fe0F  6850 ACIA      Serial controller               */
176   AM_RANGE(0xfe09, 0xfe09) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, data_r, data_w)
177   AM_RANGE(0xfe10, 0xfe17) AM_READWRITE(bbc_fe_r, bbc_SerialULA_w)                                            /*    fe10-fe17  Serial ULA     Serial system chip              */
178   AM_RANGE(0xfe18, 0xfe1f) AM_READ_PORT("S11")                                                                /*    fe18-fe1f  INTOFF/STATID  ECONET Interrupt Off / ID No.   */
179   AM_RANGE(0xfe20, 0xfe2f) AM_WRITE(bbc_videoULA_w)                                                           /* R: fe20-fe2f  INTON          ECONET Interrupt On             */
180                                                                                                               /* W: fe20-fe2f  Video ULA      Video system chip               */
181   AM_RANGE(0xfe40, 0xfe5f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write)                          /*    fe40-fe5f  6522 VIA       SYSTEM VIA                      */
182   AM_RANGE(0xfe60, 0xfe7f) AM_DEVREADWRITE("via6522_1", via6522_device, read, write)                          /*    fe60-fe7f  6522 VIA       USER VIA                        */
183                                                                                                               /*    fe80-fe9f  FDC            Floppy disc controller          */
184   AM_RANGE(0xfea0, 0xfebf) AM_READ(bbc_fe_r)                                                                  /*    fea0-febf  68B54 ADLC     ECONET controller               */
185   AM_RANGE(0xfec0, 0xfedf) AM_DEVREADWRITE("upd7002", upd7002_device, read, write)                            /*    fec0-fedf  uPD7002        Analogue to digital converter   */
186   AM_RANGE(0xfee0, 0xfeff) AM_READ(bbc_fe_r)                                                                  /*    fee0-feff  Tube ULA       Tube system interface           */
187   AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("os", 0x3f00)                                                     /*    ff00-ffff                 OS ROM (continued)              */
188ADDRESS_MAP_END
189
190
191static ADDRESS_MAP_START( bbcb_mem, AS_PROGRAM, 8, bbc_state )
171192   AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorya1_w)                     /*    0000-3fff                 Regular Ram                     */
172   AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank3") AM_WRITE(bbc_memoryb3_w)                     /*    4000-7fff                 Repeat of the Regular Ram       */
193   AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank3") AM_WRITE(bbc_memoryb3_w)                     /*    4000-7fff                 Regular Ram                     */
173194   AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank4") AM_WRITE(bbc_memoryb4_w)                     /*    8000-bfff                 Paged ROM                       */
174   AM_RANGE(0xc000, 0xfbff) AM_READ_BANK("bank7")                                              /*    c000-fbff                 OS ROM                          */
175   AM_RANGE(0xfc00, 0xfdff) AM_READWRITE(bbc_opus_read, bbc_opus_write)                        /*    fc00-fdff                 OPUS Disc Controller            */
176                                                                        /*    fe00-feff                 Shiela Address Page             */
177   AM_RANGE(0xfe00, 0xfe07) AM_READWRITE(bbc_6845_r, bbc_6845_w)                               /*    fe00-fe07  6845 CRTC      Video controller                */
178   AM_RANGE(0xfe08, 0xfe08) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, status_r, control_w)
179   AM_RANGE(0xfe09, 0xfe09) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, data_r, data_w)
180   AM_RANGE(0xfe10, 0xfe17) AM_READWRITE(bbc_fe_r, bbc_SerialULA_w)                            /*    fe10-fe17  Serial ULA     Serial system chip              */
181   AM_RANGE(0xfe18, 0xfe1f) AM_NOP                                                             /*    fe18-fe1f  INTOFF/STATID  ECONET Interrupt Off / ID No.   */
182   AM_RANGE(0xfe20, 0xfe2f) AM_WRITE(bbc_videoULA_w)                                           /* R: fe20-fe2f  INTON          ECONET Interrupt On             */
183                                                                        /* W: fe20-fe2f  Video ULA      Video system chip               */
184195   AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectb_w)                         /* R: fe30-fe3f  NC             Not Connected                   */
185                                                                        /* W: fe30-fe3f  84LS161        Paged ROM selector              */
186   AM_RANGE(0xfe40, 0xfe5f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write)          /*    fe40-fe5f  6522 VIA       SYSTEM VIA                      */
187   AM_RANGE(0xfe60, 0xfe7f) AM_DEVREADWRITE("via6522_1", via6522_device, read, write)          /*    fe60-fe7f  6522 VIA       USER VIA                        */
188   AM_RANGE(0xfe80, 0xfe9f) AM_READWRITE(bbc_disc_r, bbc_disc_w)                               /*    fe80-fe9f  8271 FDC       Floppy disc controller          */
189   AM_RANGE(0xfea0, 0xfebf) AM_READ(bbc_fe_r)                                                  /*    fea0-febf  68B54 ADLC     ECONET controller               */
190   AM_RANGE(0xfec0, 0xfedf) AM_DEVREADWRITE("upd7002", upd7002_device, read, write)            /*    fec0-fedf  uPD7002        Analogue to digital converter   */
191   AM_RANGE(0xfee0, 0xfeff) AM_READ(bbc_fe_r)                                                  /*    fee0-feff  Tube ULA       Tube system interface           */
192   AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("os", 0x3f00)                                 /*    ff00-ffff                 OS Rom (continued)              */
196                                                                                               /* W: fe30-fe3f  84LS161        Paged ROM selector              */
197   AM_RANGE(0xfe80, 0xfe83) AM_DEVREADWRITE("i8271", i8271_device, read, write)                /*    fe80-fe9f  8271 FDC       Floppy disc controller          */
198   AM_RANGE(0xfe84, 0xfe9f) AM_DEVREADWRITE("i8271", i8271_device, dack_r, dack_w)             /*    fe80-fe9f  8271 FDC       Floppy disc controller          */
199   AM_IMPORT_FROM(bbc_base)
193200ADDRESS_MAP_END
194201
195202
203static ADDRESS_MAP_START(bbcb1770_mem, AS_PROGRAM, 8, bbc_state)
204   AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorya1_w)                     /*    0000-3fff                 Regular Ram                     */
205   AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank3") AM_WRITE(bbc_memoryb3_w)                     /*    4000-7fff                 Regular Ram                     */
206   AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank4") AM_WRITE(bbc_memoryb4_w)                     /*    8000-bfff                 Paged ROM                       */
207   AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectb_w)                         /* R: fe30-fe3f  NC             Not Connected                   */
208                                                                                               /* W: fe30-fe3f  84LS161        Paged ROM selector              */
209   AM_RANGE(0xfe80, 0xfe83) AM_WRITE(bbc_wd1770_status_w)                                      /*    fe80-fe83  1770 FDC       Drive control register          */
210   AM_RANGE(0xfe84, 0xfe9f) AM_DEVREADWRITE("wd1770", wd1770_t, read, write)                   /*    fe84-fe9f  1770 FDC       Floppy disc controller          */
211   AM_IMPORT_FROM(bbc_base)
212ADDRESS_MAP_END
213
214
196215static ADDRESS_MAP_START( bbcbp_mem, AS_PROGRAM, 8, bbc_state )
197   ADDRESS_MAP_UNMAP_HIGH
198
199216   AM_RANGE(0x0000, 0x2fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorybp1_w)                    /*    0000-2fff                 Regular Ram                     */
200217   AM_RANGE(0x3000, 0x7fff) AM_READ_BANK("bank2") AM_WRITE(bbc_memorybp2_w)                    /*    3000-7fff                 Video/Shadow Ram                */
201218   AM_RANGE(0x8000, 0xafff) AM_READ_BANK("bank4") AM_WRITE(bbc_memorybp4_w)                    /*    8000-afff                 Paged ROM or 12K of SWRAM       */
202219   AM_RANGE(0xb000, 0xbfff) AM_READ_BANK("bank6")                                              /*    b000-bfff                 Rest of paged ROM area          */
203   AM_RANGE(0xc000, 0xfbff) AM_READ_BANK("bank7")                                              /*    c000-fbff                 OS ROM                          */
204   AM_RANGE(0xfc00, 0xfdff) AM_NOP                                                             /*    fc00-fdff                 FRED & JIM Pages                */
205                                                                        /*    fe00-feff                 Shiela Address Page             */
206   AM_RANGE(0xfe00, 0xfe07) AM_READWRITE(bbc_6845_r, bbc_6845_w)                               /*    fe00-fe07  6845 CRTC      Video controller                */
207   AM_RANGE(0xfe08, 0xfe08) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, status_r, control_w)
208   AM_RANGE(0xfe09, 0xfe09) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, data_r, data_w)
209   AM_RANGE(0xfe10, 0xfe17) AM_READWRITE(bbc_fe_r, bbc_SerialULA_w)                            /*    fe10-fe17  Serial ULA     Serial system chip              */
210   AM_RANGE(0xfe18, 0xfe1f) AM_NOP                                                             /*    fe18-fe1f  INTOFF/STATID  ECONET Interrupt Off / ID No.   */
211   AM_RANGE(0xfe20, 0xfe2f) AM_WRITE(bbc_videoULA_w)                                           /* R: fe20-fe2f  INTON          ECONET Interrupt On             */
212                                                                        /* W: fe20-fe2f  Video ULA      Video system chip               */
213220   AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectbp_w)                        /* R: fe30-fe3f  NC             Not Connected                   */
214                                                                        /* W: fe30-fe3f  84LS161        Paged ROM selector              */
215   AM_RANGE(0xfe40, 0xfe5f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write)          /*    fe40-fe5f  6522 VIA       SYSTEM VIA                      */
216   AM_RANGE(0xfe60, 0xfe7f) AM_DEVREADWRITE("via6522_1", via6522_device, read, write)          /*    fe60-fe7f  6522 VIA       USER VIA                        */
217   AM_RANGE(0xfe80, 0xfe9f) AM_READWRITE(bbc_wd1770_read, bbc_wd1770_write)                    /*    fe80-fe9f  1770 FDC       Floppy disc controller          */
218   AM_RANGE(0xfea0, 0xfebf) AM_READ(bbc_fe_r)                                                  /*    fea0-febf  68B54 ADLC     ECONET controller               */
219   AM_RANGE(0xfec0, 0xfedf) AM_DEVREADWRITE("upd7002", upd7002_device, read, write)            /*    fec0-fedf  uPD7002        Analogue to digital converter   */
220   AM_RANGE(0xfee0, 0xfeff) AM_READ(bbc_fe_r)                                                  /*    fee0-feff  Tube ULA       Tube system interface           */
221   AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("os", 0x3f00)                                 /*    ff00-ffff                 OS Rom (continued)              */
221                                                                                               /* W: fe30-fe3f  84LS161        Paged ROM selector              */
222   AM_RANGE(0xfe80, 0xfe83) AM_WRITE(bbc_wd1770_status_w)                                      /*    fe80-fe83  1770 FDC       Drive control register          */
223   AM_RANGE(0xfe84, 0xfe9f) AM_DEVREADWRITE("wd1770", wd1770_t, read, write)                   /*    fe84-fe9f  1770 FDC       Floppy disc controller          */
224   AM_IMPORT_FROM(bbc_base)
222225ADDRESS_MAP_END
223226
224227
225228static ADDRESS_MAP_START( bbcbp128_mem, AS_PROGRAM, 8, bbc_state )
226   ADDRESS_MAP_UNMAP_HIGH
227
228229   AM_RANGE(0x0000, 0x2fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorybp1_w)                    /*    0000-2fff                 Regular Ram                     */
229230   AM_RANGE(0x3000, 0x7fff) AM_READ_BANK("bank2") AM_WRITE(bbc_memorybp2_w)                    /*    3000-7fff                 Video/Shadow Ram                */
230231   AM_RANGE(0x8000, 0xafff) AM_READ_BANK("bank4") AM_WRITE(bbc_memorybp4_128_w)                /*    8000-afff                 Paged ROM or 12K of SWRAM       */
231232   AM_RANGE(0xb000, 0xbfff) AM_READ_BANK("bank6") AM_WRITE(bbc_memorybp6_128_w)                /*    b000-bfff                 Rest of paged ROM area          */
232   AM_RANGE(0xc000, 0xfbff) AM_READ_BANK("bank7")                                              /*    c000-fbff                 OS ROM                          */
233   AM_RANGE(0xfc00, 0xfdff) AM_NOP                                                             /*    fc00-fdff                 FRED & JIM Pages                */
234                                                                        /*    fe00-feff                 Shiela Address Page             */
235   AM_RANGE(0xfe00, 0xfe07) AM_READWRITE(bbc_6845_r, bbc_6845_w)                               /*    fe00-fe07  6845 CRTC      Video controller                */
236   AM_RANGE(0xfe08, 0xfe08) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, status_r, control_w)
237   AM_RANGE(0xfe09, 0xfe09) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, data_r, data_w)
238   AM_RANGE(0xfe10, 0xfe17) AM_READWRITE(bbc_fe_r, bbc_SerialULA_w)                            /*    fe10-fe17  Serial ULA     Serial system chip              */
239   AM_RANGE(0xfe10, 0xfe17) AM_NOP                                                             /*    fe10-fe17  Serial ULA     Serial system chip              */
240   AM_RANGE(0xfe18, 0xfe1f) AM_NOP                                                             /*    fe18-fe1f  INTOFF/STATID  ECONET Interrupt Off / ID No.   */
241   AM_RANGE(0xfe20, 0xfe2f) AM_WRITE(bbc_videoULA_w)                                           /* R: fe20-fe2f  INTON          ECONET Interrupt On             */
242                                                                        /* W: fe20-fe2f  Video ULA      Video system chip               */
243233   AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectbp_w)                        /* R: fe30-fe3f  NC             Not Connected                   */
244                                                                        /* W: fe30-fe3f  84LS161        Paged ROM selector              */
245   AM_RANGE(0xfe40, 0xfe5f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write)          /*    fe40-fe5f  6522 VIA       SYSTEM VIA                      */
246   AM_RANGE(0xfe60, 0xfe7f) AM_DEVREADWRITE("via6522_1", via6522_device, read, write)          /*    fe60-fe7f  6522 VIA       USER VIA                        */
247   AM_RANGE(0xfe80, 0xfe9f) AM_READWRITE(bbc_wd1770_read, bbc_wd1770_write)                    /*    fe80-fe9f  1770 FDC       Floppy disc controller          */
248   AM_RANGE(0xfea0, 0xfebf) AM_READ(bbc_fe_r)                                                  /*    fea0-febf  68B54 ADLC     ECONET controller               */
249   AM_RANGE(0xfec0, 0xfedf) AM_DEVREADWRITE("upd7002", upd7002_device, read, write)            /*    fec0-fedf  uPD7002        Analogue to digital converter   */
250   AM_RANGE(0xfee0, 0xfeff) AM_READ(bbc_fe_r)                                                  /*    fee0-feff  Tube ULA       Tube system interface           */
251   AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("os", 0x3f00)                                 /*    ff00-ffff                 OS Rom (continued)              */
234                                                                                               /* W: fe30-fe3f  84LS161        Paged ROM selector              */
235   AM_RANGE(0xfe80, 0xfe83) AM_WRITE(bbc_wd1770_status_w)                                      /*    fe80-fe83  1770 FDC       Drive control register          */
236   AM_RANGE(0xfe84, 0xfe9f) AM_DEVREADWRITE("wd1770", wd1770_t, read, write)                   /*    fe84-fe9f  1770 FDC       Floppy disc controller          */
237   AM_IMPORT_FROM(bbc_base)
252238ADDRESS_MAP_END
253239
254240
241static ADDRESS_MAP_START( reutapm_mem, AS_PROGRAM, 8, bbc_state )
242   AM_RANGE(0x0000, 0x2fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorybp1_w)                    /*    0000-2fff                 Regular Ram                     */
243   AM_RANGE(0x3000, 0x7fff) AM_READ_BANK("bank2") AM_WRITE(bbc_memorybp2_w)                    /*    3000-7fff                 Video/Shadow Ram                */
244   AM_RANGE(0x8000, 0xafff) AM_READ_BANK("bank4") AM_WRITE(bbc_memorybp4_w)                    /*    8000-afff                 Paged ROM or 12K of SWRAM       */
245   AM_RANGE(0xb000, 0xbfff) AM_READ_BANK("bank6")                                              /*    b000-bfff                 Rest of paged ROM area          */
246   AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectbp_w)                        /* R: fe30-fe3f  NC             Not Connected                   */
247                                                                                               /* W: fe30-fe3f  84LS161        Paged ROM selector              */
248   AM_RANGE(0xfe80, 0xfe83) AM_NOP                                                             /*    fe80-fe83  1770 FDC       Drive control register          */
249   AM_RANGE(0xfe84, 0xfe9f) AM_NOP                                                             /*    fe84-fe9f  1770 FDC       Floppy disc controller          */
250   AM_IMPORT_FROM(bbc_base)
251ADDRESS_MAP_END
252
255253/******************************************************************************
256254&FC00-&FCFF FRED
257255&FD00-&FDFF JIM
r249143r249144
263261
264262&20-&23 Video ULA       -                       Video system chip        4 ( 2 bytes x  2 )
265263&24-&27 FDC Latch       1770 Control latch      1770 Control latch       4 ( 1 byte  x  4 )
266&28-&2F 1770 registers  1770 Disc Controller    1170 Disc Controller     8 ( 4 bytes x  2 )
264&28-&2F 1770 registers  1770 Disc Controller    1770 Disc Controller     8 ( 4 bytes x  2 )
267265&30-&33 ROMSEL          -                       ROM Select               4 ( 1 byte  x  4 )
268266&34-&37 ACCCON          ACCCON select reg.      ACCCON select reg        4 ( 1 byte  x  4 )
269267&38-&3F NC              -                       -
r249143r249144
282280   AM_RANGE(0x8000, 0x8fff) AM_READ_BANK("bank4") AM_WRITE(bbc_memorybm4_w)                    /*    8000-8fff                 Paged ROM/RAM or 4K of RAM ANDY */
283281   AM_RANGE(0x9000, 0xbfff) AM_READ_BANK("bank5") AM_WRITE(bbc_memorybm5_w)                    /*    9000-bfff                 Rest of paged ROM/RAM area      */
284282   AM_RANGE(0xc000, 0xdfff) AM_READ_BANK("bank7") AM_WRITE(bbc_memorybm7_w)                    /*    c000-dfff                 OS ROM or 8K of RAM       HAZEL */
285   AM_RANGE(0xe000, 0xfbff) AM_ROM AM_REGION("os", 0x2000)                                 /*    e000-fbff                 OS ROM                          */
286   AM_RANGE(0xfc00, 0xfeff) AM_READ_BANK("bank8") AM_WRITE(bbcm_w)                             /*    this is now processed directly because it can be ROM or hardware */
287   AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("os", 0x3f00)                                 /*    ff00-ffff                 OS ROM (continued)              */
283   AM_RANGE(0xe000, 0xfbff) AM_ROM AM_REGION("os", 0x2000)                                     /*    e000-fbff                 OS ROM                          */
284   AM_RANGE(0xfc00, 0xfeff) AM_READ_BANK("bank8") AM_WRITE(bbcm_w)                             /*    processed directly because it can be ROM or hardware      */
285   AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("os", 0x3f00)                                     /*    ff00-ffff                 OS ROM (continued)              */
288286ADDRESS_MAP_END
289287
290288
r249143r249144
464462
465463static INPUT_PORTS_START(bbc_dipswitch)
466464   PORT_MODIFY("COL2")
467   PORT_DIPNAME(0x01, 0x01, "DIP 8 (Default File System)")
465   PORT_DIPNAME(0x01, 0x01, "Default File System") PORT_DIPLOCATION("KBD:1")
468466   PORT_DIPSETTING(   0x00, "NFS" )
469467   PORT_DIPSETTING(   0x01, "DFS" )
470468
471469   PORT_MODIFY("COL3")
472   PORT_DIPNAME(0x01, 0x01, "DIP 7 (Not Used)")
470   PORT_DIPNAME(0x01, 0x01, "Not Used") PORT_DIPLOCATION("KBD:2")
473471   PORT_DIPSETTING(   0x00, DEF_STR( Off ))
474472   PORT_DIPSETTING(   0x01, DEF_STR( On ))
475473
476474   PORT_MODIFY("COL4")
477   PORT_DIPNAME(0x01, 0x01, "DIP 6 (Disc Timings)")
475   PORT_DIPNAME(0x01, 0x01, "Disc Timings") PORT_DIPLOCATION("KBD:3")
478476   PORT_DIPSETTING(   0x00, DEF_STR( Off ))
479477   PORT_DIPSETTING(   0x01, DEF_STR( On ))
480478
481479   PORT_MODIFY("COL5")
482   PORT_DIPNAME(0x01, 0x01, "DIP 5 (Disc Timings)")
480   PORT_DIPNAME(0x01, 0x01, "Disc Timings") PORT_DIPLOCATION("KBD:4")
483481   PORT_DIPSETTING(   0x00, DEF_STR( Off ))
484482   PORT_DIPSETTING(   0x01, DEF_STR( On ))
485483
486484   PORT_MODIFY("COL6")
487   PORT_DIPNAME(0x01, 0x01, "DIP 4 (Boot)")
485   PORT_DIPNAME(0x01, 0x01, "Boot") PORT_DIPLOCATION("KBD:5")
488486   PORT_DIPSETTING(   0x00, "SHIFT" )
489487   PORT_DIPSETTING(   0x01, "SHIFT-BREAK" )
490488
491489   PORT_MODIFY("COL7")
492   PORT_DIPNAME(0x01, 0x01, "DIP 3 (Screen Mode)")
490   PORT_DIPNAME(0x01, 0x01, "Screen Mode") PORT_DIPLOCATION("KBD:6")
493491   PORT_DIPSETTING(   0x00, "+0" )
494492   PORT_DIPSETTING(   0x01, "+4" )
495
493   
496494   PORT_MODIFY("COL8")
497   PORT_DIPNAME(0x01, 0x01, "DIP 2 (Screen Mode)")
495   PORT_DIPNAME(0x01, 0x01, "Screen Mode") PORT_DIPLOCATION("KBD:7")
498496   PORT_DIPSETTING(   0x00, "+0" )
499497   PORT_DIPSETTING(   0x01, "+2" )
500498
501499   PORT_MODIFY("COL9")
502   PORT_DIPNAME(0x01, 0x01, "DIP 1 (Screen Mode)")
500   PORT_DIPNAME(0x01, 0x01, "Screen Mode") PORT_DIPLOCATION("KBD:8")
503501   PORT_DIPSETTING(   0x00, "+0" )
504502   PORT_DIPSETTING(   0x01, "+1" )
505503INPUT_PORTS_END
506504
507505
506static INPUT_PORTS_START(bbc_links)
507   PORT_START("S11")
508   PORT_DIPNAME(0xff, 0xfe, "Econet ID") PORT_DIPLOCATION("S11:1,2,3,4,5,6,7,8")
509   PORT_DIPSETTING(   0x00,   "0" )   PORT_DIPSETTING(   0x01,   "1" )   PORT_DIPSETTING(   0x02,   "2" )   PORT_DIPSETTING(   0x03,   "3" )   PORT_DIPSETTING(   0x04,   "4" )
510   PORT_DIPSETTING(   0x05,   "5" )   PORT_DIPSETTING(   0x06,   "6" )   PORT_DIPSETTING(   0x07,   "7" )   PORT_DIPSETTING(   0x08,   "8" )   PORT_DIPSETTING(   0x09,   "9" )
511   PORT_DIPSETTING(   0x0a,  "10" )   PORT_DIPSETTING(   0x0b,  "11" )   PORT_DIPSETTING(   0x0c,  "12" )   PORT_DIPSETTING(   0x0d,  "13" )   PORT_DIPSETTING(   0x0e,  "14" )
512   PORT_DIPSETTING(   0x0f,  "15" )   PORT_DIPSETTING(   0x10,  "16" )   PORT_DIPSETTING(   0x11,  "17" )   PORT_DIPSETTING(   0x12,  "18" )   PORT_DIPSETTING(   0x13,  "19" )
513   PORT_DIPSETTING(   0x14,  "20" )   PORT_DIPSETTING(   0x15,  "21" )   PORT_DIPSETTING(   0x16,  "22" )   PORT_DIPSETTING(   0x17,  "23" )   PORT_DIPSETTING(   0x18,  "24" )
514   PORT_DIPSETTING(   0x19,  "25" )   PORT_DIPSETTING(   0x1a,  "26" )   PORT_DIPSETTING(   0x1b,  "27" )   PORT_DIPSETTING(   0x1c,  "28" )   PORT_DIPSETTING(   0x1d,  "29" )
515   PORT_DIPSETTING(   0x1e,  "30" )   PORT_DIPSETTING(   0x1f,  "31" )   PORT_DIPSETTING(   0x20,  "32" )   PORT_DIPSETTING(   0x21,  "33" )   PORT_DIPSETTING(   0x22,  "34" )
516   PORT_DIPSETTING(   0x23,  "35" )   PORT_DIPSETTING(   0x24,  "36" )   PORT_DIPSETTING(   0x25,  "37" )   PORT_DIPSETTING(   0x26,  "38" )   PORT_DIPSETTING(   0x27,  "39" )
517   PORT_DIPSETTING(   0x28,  "40" )   PORT_DIPSETTING(   0x29,  "41" )   PORT_DIPSETTING(   0x2a,  "42" )   PORT_DIPSETTING(   0x2b,  "43" )   PORT_DIPSETTING(   0x2c,  "44" )
518   PORT_DIPSETTING(   0x2d,  "45" )   PORT_DIPSETTING(   0x2e,  "46" )   PORT_DIPSETTING(   0x2f,  "47" )   PORT_DIPSETTING(   0x30,  "48" )   PORT_DIPSETTING(   0x31,  "49" )
519   PORT_DIPSETTING(   0x32,  "50" )   PORT_DIPSETTING(   0x33,  "51" )   PORT_DIPSETTING(   0x34,  "52" )   PORT_DIPSETTING(   0x35,  "53" )   PORT_DIPSETTING(   0x36,  "54" )
520   PORT_DIPSETTING(   0x37,  "15" )   PORT_DIPSETTING(   0x38,  "56" )   PORT_DIPSETTING(   0x39,  "57" )   PORT_DIPSETTING(   0x3a,  "58" )   PORT_DIPSETTING(   0x3b,  "59" )
521   PORT_DIPSETTING(   0x3c,  "60" )   PORT_DIPSETTING(   0x3d,  "61" )   PORT_DIPSETTING(   0x3e,  "62" )   PORT_DIPSETTING(   0x3f,  "63" )   PORT_DIPSETTING(   0x40,  "64" )
522   PORT_DIPSETTING(   0x41,  "65" )   PORT_DIPSETTING(   0x42,  "66" )   PORT_DIPSETTING(   0x43,  "67" )   PORT_DIPSETTING(   0x44,  "68" )   PORT_DIPSETTING(   0x45,  "69" )
523   PORT_DIPSETTING(   0x46,  "70" )   PORT_DIPSETTING(   0x47,  "71" )   PORT_DIPSETTING(   0x48,  "72" )   PORT_DIPSETTING(   0x49,  "73" )   PORT_DIPSETTING(   0x4a,  "74" )
524   PORT_DIPSETTING(   0x4b,  "75" )   PORT_DIPSETTING(   0x4c,  "76" )   PORT_DIPSETTING(   0x4d,  "77" )   PORT_DIPSETTING(   0x4e,  "78" )   PORT_DIPSETTING(   0x4f,  "79" )
525   PORT_DIPSETTING(   0x50,  "80" )   PORT_DIPSETTING(   0x51,  "81" )   PORT_DIPSETTING(   0x52,  "82" )   PORT_DIPSETTING(   0x53,  "83" )   PORT_DIPSETTING(   0x54,  "84" )
526   PORT_DIPSETTING(   0x55,  "85" )   PORT_DIPSETTING(   0x56,  "86" )   PORT_DIPSETTING(   0x57,  "87" )   PORT_DIPSETTING(   0x58,  "88" )   PORT_DIPSETTING(   0x59,  "89" )
527   PORT_DIPSETTING(   0x5a,  "90" )   PORT_DIPSETTING(   0x5b,  "91" )   PORT_DIPSETTING(   0x5c,  "92" )   PORT_DIPSETTING(   0x5d,  "93" )   PORT_DIPSETTING(   0x5e,  "94" )
528   PORT_DIPSETTING(   0x5f,  "95" )   PORT_DIPSETTING(   0x60,  "96" )   PORT_DIPSETTING(   0x61,  "97" )   PORT_DIPSETTING(   0x62,  "98" )   PORT_DIPSETTING(   0x63,  "99" )
529   PORT_DIPSETTING(   0x64, "100" )   PORT_DIPSETTING(   0x65, "101" )   PORT_DIPSETTING(   0x66, "102" )   PORT_DIPSETTING(   0x67, "103" )   PORT_DIPSETTING(   0x68, "104" )
530   PORT_DIPSETTING(   0x69, "105" )   PORT_DIPSETTING(   0x6a, "106" )   PORT_DIPSETTING(   0x6b, "107" )   PORT_DIPSETTING(   0x6c, "108" )   PORT_DIPSETTING(   0x6d, "109" )
531   PORT_DIPSETTING(   0x6e, "110" )   PORT_DIPSETTING(   0x6f, "111" )   PORT_DIPSETTING(   0x70, "112" )   PORT_DIPSETTING(   0x71, "113" )   PORT_DIPSETTING(   0x72, "114" )
532   PORT_DIPSETTING(   0x73, "115" )   PORT_DIPSETTING(   0x74, "116" )   PORT_DIPSETTING(   0x75, "117" )   PORT_DIPSETTING(   0x76, "118" )   PORT_DIPSETTING(   0x77, "119" )
533   PORT_DIPSETTING(   0x78, "120" )   PORT_DIPSETTING(   0x79, "121" )   PORT_DIPSETTING(   0x7a, "122" )   PORT_DIPSETTING(   0x7b, "123" )   PORT_DIPSETTING(   0x7c, "124" )
534   PORT_DIPSETTING(   0x7d, "125" )   PORT_DIPSETTING(   0x7e, "126" )   PORT_DIPSETTING(   0x7f, "127" )   PORT_DIPSETTING(   0x80, "128" )   PORT_DIPSETTING(   0x81, "129" )
535   PORT_DIPSETTING(   0x82, "130" )   PORT_DIPSETTING(   0x83, "131" )   PORT_DIPSETTING(   0x84, "132" )   PORT_DIPSETTING(   0x85, "133" )   PORT_DIPSETTING(   0x86, "134" )
536   PORT_DIPSETTING(   0x87, "135" )   PORT_DIPSETTING(   0x88, "136" )   PORT_DIPSETTING(   0x89, "137" )   PORT_DIPSETTING(   0x8a, "138" )   PORT_DIPSETTING(   0x8b, "139" )
537   PORT_DIPSETTING(   0x8c, "140" )   PORT_DIPSETTING(   0x8d, "141" )   PORT_DIPSETTING(   0x8e, "142" )   PORT_DIPSETTING(   0x8f, "143" )   PORT_DIPSETTING(   0x90, "144" )
538   PORT_DIPSETTING(   0x91, "145" )   PORT_DIPSETTING(   0x92, "146" )   PORT_DIPSETTING(   0x93, "147" )   PORT_DIPSETTING(   0x94, "148" )   PORT_DIPSETTING(   0x95, "149" )
539   PORT_DIPSETTING(   0x96, "150" )   PORT_DIPSETTING(   0x97, "151" )   PORT_DIPSETTING(   0x98, "152" )   PORT_DIPSETTING(   0x99, "153" )   PORT_DIPSETTING(   0x9a, "154" )
540   PORT_DIPSETTING(   0x9b, "155" )   PORT_DIPSETTING(   0x9c, "156" )   PORT_DIPSETTING(   0x9d, "157" )   PORT_DIPSETTING(   0x9e, "158" )   PORT_DIPSETTING(   0x9f, "159" )
541   PORT_DIPSETTING(   0xa0, "160" )   PORT_DIPSETTING(   0xa1, "161" )   PORT_DIPSETTING(   0xa2, "162" )   PORT_DIPSETTING(   0xa3, "163" )   PORT_DIPSETTING(   0xa4, "164" )
542   PORT_DIPSETTING(   0xa5, "165" )   PORT_DIPSETTING(   0xa6, "166" )   PORT_DIPSETTING(   0xa7, "167" )   PORT_DIPSETTING(   0xa8, "168" )   PORT_DIPSETTING(   0xa9, "169" )
543   PORT_DIPSETTING(   0xaa, "170" )   PORT_DIPSETTING(   0xab, "171" )   PORT_DIPSETTING(   0xac, "172" )   PORT_DIPSETTING(   0xad, "173" )   PORT_DIPSETTING(   0xae, "174" )
544   PORT_DIPSETTING(   0xaf, "175" )   PORT_DIPSETTING(   0xb0, "176" )   PORT_DIPSETTING(   0xb1, "177" )   PORT_DIPSETTING(   0xb2, "178" )   PORT_DIPSETTING(   0xb3, "179" )
545   PORT_DIPSETTING(   0xb4, "180" )   PORT_DIPSETTING(   0xb5, "181" )   PORT_DIPSETTING(   0xb6, "182" )   PORT_DIPSETTING(   0xb7, "183" )   PORT_DIPSETTING(   0xb8, "184" )
546   PORT_DIPSETTING(   0xb9, "185" )   PORT_DIPSETTING(   0xba, "186" )   PORT_DIPSETTING(   0xbb, "187" )   PORT_DIPSETTING(   0xbc, "188" )   PORT_DIPSETTING(   0xbd, "189" )
547   PORT_DIPSETTING(   0xbe, "190" )   PORT_DIPSETTING(   0xbf, "191" )   PORT_DIPSETTING(   0xc0, "192" )   PORT_DIPSETTING(   0xc1, "193" )   PORT_DIPSETTING(   0xc2, "194" )
548   PORT_DIPSETTING(   0xc3, "195" )   PORT_DIPSETTING(   0xc4, "196" )   PORT_DIPSETTING(   0xc5, "197" )   PORT_DIPSETTING(   0xc6, "198" )   PORT_DIPSETTING(   0xc7, "199" )
549   PORT_DIPSETTING(   0xc8, "200" )   PORT_DIPSETTING(   0xc9, "201" )   PORT_DIPSETTING(   0xca, "202" )   PORT_DIPSETTING(   0xcb, "203" )   PORT_DIPSETTING(   0xcc, "204" )
550   PORT_DIPSETTING(   0xcd, "205" )   PORT_DIPSETTING(   0xce, "206" )   PORT_DIPSETTING(   0xcf, "207" )   PORT_DIPSETTING(   0xd0, "208" )   PORT_DIPSETTING(   0xd1, "209" )
551   PORT_DIPSETTING(   0xd2, "210" )   PORT_DIPSETTING(   0xd3, "211" )   PORT_DIPSETTING(   0xd4, "212" )   PORT_DIPSETTING(   0xd5, "213" )   PORT_DIPSETTING(   0xd6, "214" )
552   PORT_DIPSETTING(   0xd7, "215" )   PORT_DIPSETTING(   0xd8, "216" )   PORT_DIPSETTING(   0xd9, "217" )   PORT_DIPSETTING(   0xda, "218" )   PORT_DIPSETTING(   0xdb, "219" )
553   PORT_DIPSETTING(   0xdc, "220" )   PORT_DIPSETTING(   0xdd, "221" )   PORT_DIPSETTING(   0xde, "222" )   PORT_DIPSETTING(   0xdf, "223" )   PORT_DIPSETTING(   0xe0, "224" )
554   PORT_DIPSETTING(   0xe1, "225" )   PORT_DIPSETTING(   0xe2, "226" )   PORT_DIPSETTING(   0xe3, "227" )   PORT_DIPSETTING(   0xe4, "228" )   PORT_DIPSETTING(   0xe5, "229" )
555   PORT_DIPSETTING(   0xe6, "230" )   PORT_DIPSETTING(   0xe7, "231" )   PORT_DIPSETTING(   0xe8, "232" )   PORT_DIPSETTING(   0xe9, "233" )   PORT_DIPSETTING(   0xea, "234" )
556   PORT_DIPSETTING(   0xeb, "235" )   PORT_DIPSETTING(   0xec, "236" )   PORT_DIPSETTING(   0xed, "237" )   PORT_DIPSETTING(   0xee, "238" )   PORT_DIPSETTING(   0xef, "239" )
557   PORT_DIPSETTING(   0xf0, "240" )   PORT_DIPSETTING(   0xf1, "241" )   PORT_DIPSETTING(   0xf2, "242" )   PORT_DIPSETTING(   0xf3, "243" )   PORT_DIPSETTING(   0xf4, "244" )
558   PORT_DIPSETTING(   0xf5, "245" )   PORT_DIPSETTING(   0xf6, "246" )   PORT_DIPSETTING(   0xf7, "247" )   PORT_DIPSETTING(   0xf8, "248" )   PORT_DIPSETTING(   0xf9, "249" )
559   PORT_DIPSETTING(   0xfa, "250" )   PORT_DIPSETTING(   0xfb, "251" )   PORT_DIPSETTING(   0xfc, "252" )   PORT_DIPSETTING(   0xfd, "253" )   PORT_DIPSETTING(   0xfe, "254" )
560   PORT_DIPSETTING(   0xff, "255" )
561INPUT_PORTS_END
562
563
508564static INPUT_PORTS_START(bbc_joy)
509565   PORT_START("JOY0")
510566   PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_MINMAX(0x0,0xff ) PORT_PLAYER(1)
r249143r249144
523579static INPUT_PORTS_START(bbc_config)
524580   PORT_START("BBCCONFIG")
525581
526//  PORT_CONFNAME( 0x01, 0x00, "Speech Upgrade" )
527//  PORT_CONFSETTING(    0x00, DEF_STR( On ) )
528//  PORT_CONFSETTING(    0x01, DEF_STR( Off ) )
582   PORT_CONFNAME( 0x01, 0x00, "Speech Upgrade" )
583   PORT_CONFSETTING(    0x00, DEF_STR( On ) )
584   PORT_CONFSETTING(    0x01, DEF_STR( Off ) )
529585
530   PORT_CONFNAME( 0x07, 0x00, "DFS Select" )
531   PORT_CONFSETTING(    0x00, "Acorn DFS 0.90 (read only)"  )
532   PORT_CONFSETTING(    0x01, "Acorn DNFS 1.20 (read only)" )
533   PORT_CONFSETTING(    0x02, "Watford DFS 1.44 (read only)" )
534   PORT_CONFSETTING(    0x03, "Acorn DFS E00 (hack / read only)" )
535   PORT_CONFSETTING(    0x04, "Acorn DDFS" )
536   PORT_CONFSETTING(    0x05, "Watford DDFS (not working)" )
537   PORT_CONFSETTING(    0x06, "Opus Challenger 512K (RAM drive only)" )
538   PORT_CONFSETTING(    0x07, DEF_STR( None ) )
539
540586   PORT_CONFNAME( 0x18, 0x00, "Sideways RAM Type" )
541587   PORT_CONFSETTING(    0x00, DEF_STR( None ) )
542588   PORT_CONFSETTING(    0x08, "Solidisk 128K (fe62)" )
r249143r249144
554600   PORT_INCLUDE(bbc_config)
555601   PORT_INCLUDE(bbc_keyboard)
556602   PORT_INCLUDE(bbc_dipswitch)
603   PORT_INCLUDE(bbc_links)
557604   PORT_INCLUDE(bbc_joy)
558605INPUT_PORTS_END
559606
607static INPUT_PORTS_START(abc)
608   PORT_INCLUDE(bbc_keyboard)
609   PORT_INCLUDE(bbc_keypad)
610   PORT_INCLUDE(bbc_dipswitch)
611   PORT_INCLUDE(bbc_links)
612   PORT_INCLUDE(bbc_joy)
613INPUT_PORTS_END
614
560615static INPUT_PORTS_START(bbcm)
561616   PORT_INCLUDE(bbc_keyboard)
562617   PORT_INCLUDE(bbc_keypad)
r249143r249144
572627}
573628
574629
575//static const struct TMS5220interface tms5220_interface =
576//{
577//  680000L,
578//  50,
579//  bbc_TMSint
580//};
581
582
583
584630WRITE_LINE_MEMBER(bbc_state::bbcb_acia6850_irq_w)
585631{
586632   m_acia_irq = state;
r249143r249144
588634   check_interrupts();
589635}
590636
591static LEGACY_FLOPPY_OPTIONS_START(bbc)
592   LEGACY_FLOPPY_OPTION( ssd80, "bbc,img,ssd", "BBC SSD disk image", basicdsk_identify_default, basicdsk_construct_default, NULL,
593      HEADS([1])
594      TRACKS([80])
595      SECTORS([10])
596      SECTOR_LENGTH([256])
597      FIRST_SECTOR_ID([0]))
598   LEGACY_FLOPPY_OPTION( dsd80, "dsd", "BBC DSD disk image", basicdsk_identify_default, basicdsk_construct_default, NULL,
599      HEADS([2])
600      TRACKS([80])
601      SECTORS([10])
602      SECTOR_LENGTH([256])
603      FIRST_SECTOR_ID([0]))
604LEGACY_FLOPPY_OPTIONS_END
605637
606638static const floppy_interface bbc_floppy_interface =
607639{
r249143r249144
610642   "floppy_5_25"
611643};
612644
613FLOPPY_FORMATS_MEMBER( bbc_state::floppy_formats )
614   FLOPPY_BBC_FORMAT
645FLOPPY_FORMATS_MEMBER( bbc_state::floppy_formats_525sd )
646   FLOPPY_BBC_SSD_525_FORMAT,
647   FLOPPY_BBC_DSD_525_FORMAT
615648FLOPPY_FORMATS_END
616649
617static SLOT_INTERFACE_START( bbc_floppies )
650FLOPPY_FORMATS_MEMBER( bbc_state::floppy_formats_525dd )
651   FLOPPY_BBC_SSD_525_FORMAT,
652   FLOPPY_BBC_DSD_525_FORMAT,
653   FLOPPY_BBC_ADF_525_FORMAT
654FLOPPY_FORMATS_END
655
656FLOPPY_FORMATS_MEMBER( bbc_state::floppy_formats_35dd )
657   FLOPPY_BBC_ADF_35_FORMAT
658FLOPPY_FORMATS_END
659
660static SLOT_INTERFACE_START( bbc_floppies_525 )
618661   SLOT_INTERFACE("sssd", FLOPPY_525_SSSD)
619662   SLOT_INTERFACE("sd",   FLOPPY_525_SD)
620663   SLOT_INTERFACE("ssdd", FLOPPY_525_SSDD)
r249143r249144
623666   SLOT_INTERFACE("qd",   FLOPPY_525_QD)
624667SLOT_INTERFACE_END
625668
669static SLOT_INTERFACE_START( bbc_floppies_35 )
670   SLOT_INTERFACE("qd",   FLOPPY_35_DD)
671SLOT_INTERFACE_END
672
626673WRITE_LINE_MEMBER(bbc_state::econet_clk_w)
627674{
628675   m_adlc->rxc_w(state);
r249143r249144
649696MACHINE_CONFIG_END
650697
651698
699/***************************************************************************
700
701    BBC Micro
702
703****************************************************************************/
704
705
652706static MACHINE_CONFIG_START( bbca, bbc_state )
653707   /* basic machine hardware */
654708   MCFG_CPU_ADD("maincpu", M6502, 2000000)         /* 2.00 MHz */
r249143r249144
747801   MCFG_RAM_DEFAULT_VALUE(0x00)
748802
749803   /* speech hardware */
750//  MCFG_SOUND_ADD("tms5220", TMS5220, 640000)
751//  MCFG_TMS52XX_SPEECHROM("vsm")
804   MCFG_DEVICE_ADD("vsm", SPEECHROM, 0)
805   MCFG_SOUND_ADD("tms5220", TMS5220, 640000)
806   MCFG_TMS52XX_SPEECHROM("vsm")
752807
753808   /* user via */
754809   MCFG_DEVICE_ADD("via6522_1", VIA6522, 1000000)
r249143r249144
766821   /* printer */
767822   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
768823   MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("via6522_1", via6522_device, write_ca1)) MCFG_DEVCB_INVERT /* ack seems to be inverted? */
769
770824   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
771825
772826   /* fdc */
r249143r249144
776830
777831   MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(bbc_floppy_interface)
778832
779   MCFG_WD1770_ADD("wd177x", XTAL_16MHz / 2)
780   MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_intrq_w))
781   MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_drq_w))
782
783   MCFG_FLOPPY_DRIVE_ADD("wd177x:0", bbc_floppies, "qd", bbc_state::floppy_formats)
784   MCFG_FLOPPY_DRIVE_ADD("wd177x:1", bbc_floppies, "qd", bbc_state::floppy_formats)
785
786833   /* software lists */
787834   MCFG_DEVICE_REMOVE("cass_ls_a")
788835   MCFG_SOFTWARE_LIST_ADD("cass_ls_b", "bbcb_cass")
r249143r249144
790837MACHINE_CONFIG_END
791838
792839
793static MACHINE_CONFIG_DERIVED( bbcb_us, bbca )
840static MACHINE_CONFIG_DERIVED(bbcb1770, bbcb)
794841   /* basic machine hardware */
795   MCFG_CPU_MODIFY( "maincpu" )
796   MCFG_CPU_PROGRAM_MAP(bbcb_mem)
842   MCFG_CPU_MODIFY("maincpu")
843   MCFG_CPU_PROGRAM_MAP(bbcb1770_mem)
797844
798   MCFG_MACHINE_START_OVERRIDE(bbc_state, bbcb )
799   MCFG_MACHINE_RESET_OVERRIDE(bbc_state, bbcb )
800   MCFG_VIDEO_START_OVERRIDE(bbc_state, bbcb )
845   /* fdc */
846   MCFG_DEVICE_REMOVE("i8271")
847   MCFG_DEVICE_REMOVE(FLOPPY_0)
848   MCFG_DEVICE_REMOVE(FLOPPY_1)
801849
802   /* internal ram */
803   MCFG_RAM_MODIFY(RAM_TAG)
804   MCFG_RAM_DEFAULT_SIZE("32K")
805   MCFG_RAM_DEFAULT_VALUE(0x00)
850   MCFG_WD1770_ADD("wd1770", XTAL_16MHz / 2)
851   MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_intrq_w))
852   MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_drq_w))
806853
807   /* speech hardware */
808//  MCFG_SOUND_ADD("tms5220", TMS5220, 640000)
809//  MCFG_TMS52XX_SPEECHROM("vsm")
854   MCFG_FLOPPY_DRIVE_ADD("wd1770:0", bbc_floppies_525, "qd", bbc_state::floppy_formats_525dd)
855   MCFG_FLOPPY_DRIVE_SOUND(true)
856   MCFG_FLOPPY_DRIVE_ADD("wd1770:1", bbc_floppies_525, "qd", bbc_state::floppy_formats_525dd)
857   MCFG_FLOPPY_DRIVE_SOUND(true)
858MACHINE_CONFIG_END
810859
860
861static MACHINE_CONFIG_DERIVED( bbcb_de, bbcb )
862   /* software lists */
863   MCFG_DEVICE_REMOVE("cass_ls_b")
864   MCFG_SOFTWARE_LIST_ADD("flop_ls_b_de", "bbcb_de_cass")
865   MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("cass_ls_b", "bbcb_cass")
866MACHINE_CONFIG_END
867
868
869static MACHINE_CONFIG_DERIVED( bbcb_us, bbcb )
811870   /* video hardware */
812871   MCFG_SCREEN_MODIFY("screen")
813872   MCFG_SCREEN_SIZE(640, 200)
814873   MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
815874   MCFG_SCREEN_REFRESH_RATE(60)
816875
817   /* system via */
818   MCFG_DEVICE_ADD("via6522_1", VIA6522, 1000000)
819   MCFG_VIA6522_READPB_HANDLER(READ8(bbc_state, bbcb_via_user_read_portb))
820   MCFG_VIA6522_WRITEPA_HANDLER(DEVWRITE8("cent_data_out", output_latch_device, write))
821   MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(bbc_state, bbcb_via_user_write_portb))
822   MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE("centronics", centronics_device, write_strobe))
823   MCFG_VIA6522_IRQ_HANDLER(WRITELINE(bbc_state, bbcb_via_user_irq_w))
824
825   /* adc */
826   MCFG_DEVICE_ADD("upd7002", UPD7002, 0)
827   MCFG_UPD7002_GET_ANALOGUE_CB(bbc_state, BBC_get_analogue_input)
828   MCFG_UPD7002_EOC_CB(bbc_state, BBC_uPD7002_EOC)
829
830   /* printer */
831   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
832   MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("via6522_1", via6522_device, write_ca1)) MCFG_DEVCB_INVERT /* ack seems to be inverted? */
833
834   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
835
836   /* fdc */
837   MCFG_DEVICE_ADD("i8271", I8271, 0)
838   MCFG_I8271_IRQ_CALLBACK(WRITELINE(bbc_state, bbc_i8271_interrupt))
839   MCFG_I8271_FLOPPIES(FLOPPY_0, FLOPPY_1)
840
841   MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(bbc_floppy_interface)
842
843   MCFG_WD1770_ADD("wd177x", XTAL_16MHz / 2)
844   MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_intrq_w))
845   MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_drq_w))
846
847   MCFG_FLOPPY_DRIVE_ADD("wd177x:0", bbc_floppies, "qd", bbc_state::floppy_formats)
848   MCFG_FLOPPY_DRIVE_ADD("wd177x:1", bbc_floppies, "qd", bbc_state::floppy_formats)
849
850876   /* software lists */
851   MCFG_DEVICE_REMOVE("cass_ls_a")
852   MCFG_SOFTWARE_LIST_ADD("cass_ls_b", "bbcb_cass")
853   MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("cass_ls_a", "bbca_cass")
877   MCFG_DEVICE_REMOVE("cass_ls_b")
878   MCFG_SOFTWARE_LIST_ADD("flop_ls_b_us", "bbcb_us_flop")
879   MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("cass_ls_b", "bbcb_cass")
854880MACHINE_CONFIG_END
855881
856882
857static MACHINE_CONFIG_DERIVED( bbcbp, bbcb )
883static MACHINE_CONFIG_DERIVED( bbcbp, bbcb1770 )
858884   /* basic machine hardware */
859885   MCFG_CPU_MODIFY( "maincpu" )  /* M6512 */
860886   MCFG_CPU_PROGRAM_MAP(bbcbp_mem)
r249143r249144
867893   MCFG_RAM_MODIFY(RAM_TAG)
868894   MCFG_RAM_DEFAULT_SIZE("64K")
869895   MCFG_RAM_DEFAULT_VALUE(0x00)
870
871   /* fdc */
872   MCFG_DEVICE_REMOVE("i8271")
873   MCFG_DEVICE_REMOVE(FLOPPY_0)
874   MCFG_DEVICE_REMOVE(FLOPPY_1)
875896MACHINE_CONFIG_END
876897
877898
878static MACHINE_CONFIG_DERIVED( bbcbp128, bbcbp )
899static MACHINE_CONFIG_DERIVED( bbcbp128, bbcb1770 )
879900   /* basic machine hardware */
880901   MCFG_CPU_MODIFY( "maincpu" )  /* M6512 */
881902   MCFG_CPU_PROGRAM_MAP(bbcbp128_mem)
903
882904   MCFG_MACHINE_START_OVERRIDE(bbc_state, bbcbp)
883905   MCFG_MACHINE_RESET_OVERRIDE(bbc_state, bbcbp)
884906   MCFG_VIDEO_START_OVERRIDE(bbc_state, bbcbp)
r249143r249144
890912MACHINE_CONFIG_END
891913
892914
893/* BBC Master Series */
915/***************************************************************************
894916
917    Acorn Business Computers
918
919****************************************************************************/
920
921
922static MACHINE_CONFIG_DERIVED( abc110, bbcbp )
923   /* fdc */
924   MCFG_DEVICE_REMOVE("wd1770:1")
925
926   /* Add Z80 co-processor */
927
928   /* Add ADAPTEC ACB-4000 Winchester Disc Controller */
929
930   /* Add 10MB ST-412 Winchester */
931
932MACHINE_CONFIG_END
933
934
935static MACHINE_CONFIG_DERIVED( abc210, bbcbp )
936   /* fdc */
937   MCFG_DEVICE_REMOVE("wd1770:1")
938
939   /* Add 32016 co-processor */
940
941   /* Add ADAPTEC ACB-4000 Winchester Disc Controller */
942
943   /* Add 10MB ST-412 Winchester ABC210 */
944
945   /* Add 20MB ST-412 Winchester Cambridge */
946
947MACHINE_CONFIG_END
948
949
950static MACHINE_CONFIG_DERIVED( abc310, bbcbp )
951   /* fdc */
952   MCFG_DEVICE_REMOVE("wd1770:1")
953
954   /* Add 80286 co-processor */
955
956   /* Add ADAPTEC ACB-4000 Winchester Disc Controller */
957
958   /* Add 10MB ST-412 Winchester */
959
960MACHINE_CONFIG_END
961
962
963/***************************************************************************
964
965    Reuters APM Board (Application Processor Module)
966
967****************************************************************************/
968
969
970static MACHINE_CONFIG_DERIVED( reutapm, bbcbp )
971   /* basic machine hardware */
972   MCFG_CPU_MODIFY( "maincpu" )  /* M6512 */
973   MCFG_CPU_PROGRAM_MAP(reutapm_mem)
974
975   /* sound hardware */
976   MCFG_DEVICE_REMOVE("mono")
977  MCFG_DEVICE_REMOVE("sn76489")
978   MCFG_DEVICE_REMOVE("vsm")
979   MCFG_DEVICE_REMOVE("tms5220")
980
981   /* cassette */
982   MCFG_DEVICE_REMOVE( "cassette" )
983
984   /* fdc */
985   MCFG_DEVICE_REMOVE("wd1770")
986
987   /* software lists */
988   MCFG_DEVICE_REMOVE("cass_ls_a")
989   MCFG_DEVICE_REMOVE("cass_ls_b")
990MACHINE_CONFIG_END
991
992
993/***************************************************************************
994
995    BBC Master Series
996
997****************************************************************************/
998
999
8951000static MACHINE_CONFIG_START( bbcm, bbc_state )
8961001   /* basic machine hardware */
8971002   MCFG_CPU_ADD("maincpu", M65SC02, 2000000)        /* 2.00 MHz */
r249143r249144
9431048   /* printer */
9441049   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
9451050   MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("via6522_1", via6522_device, write_ca1)) MCFG_DEVCB_INVERT /* ack seems to be inverted? */
946
9471051   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
9481052
9491053   /* cassette */
r249143r249144
10011105   MCFG_VIA6522_IRQ_HANDLER(WRITELINE(bbc_state, bbcb_via_user_irq_w))
10021106
10031107   /* fdc */
1004   MCFG_WD1770_ADD("wd177x", XTAL_16MHz / 2)
1108   MCFG_WD1770_ADD("wd1770", XTAL_16MHz / 2)
10051109   MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_intrq_w))
10061110   MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_drq_w))
10071111
1008   MCFG_FLOPPY_DRIVE_ADD("wd177x:0", bbc_floppies, "qd", bbc_state::floppy_formats)
1009   MCFG_FLOPPY_DRIVE_ADD("wd177x:1", bbc_floppies, "qd", bbc_state::floppy_formats)
1112   MCFG_FLOPPY_DRIVE_ADD("wd1770:0", bbc_floppies_525, "qd", bbc_state::floppy_formats_525dd)
1113   MCFG_FLOPPY_DRIVE_SOUND(true)
1114   MCFG_FLOPPY_DRIVE_ADD("wd1770:1", bbc_floppies_525, "qd", bbc_state::floppy_formats_525dd)
1115   MCFG_FLOPPY_DRIVE_SOUND(true)
10101116
10111117   /* econet */
10121118   MCFG_DEVICE_ADD("mc6854", MC6854, 0)
r249143r249144
10371143
10381144
10391145static MACHINE_CONFIG_DERIVED( bbcmet, bbcm )
1040
1041   /* Remove all devices not present in this model */
1042
10431146   /* sound hardware */
1044//  MCFG_DEVICE_REMOVE("mono")
1045//  MCFG_DEVICE_REMOVE("sn76489")
1147   MCFG_DEVICE_REMOVE("mono")
1148   MCFG_DEVICE_REMOVE("sn76489")
10461149
10471150   /* printer */
1048//  MCFG_DEVICE_REMOVE("centronics")
1151   MCFG_DEVICE_REMOVE("centronics")
10491152
10501153   /* cassette */
10511154   MCFG_DEVICE_REMOVE("cassette")
r249143r249144
10561159   MCFG_SOFTWARE_LIST_REMOVE("cass_ls_b")
10571160
10581161   /* acia */
1059//  MCFG_DEVICE_REMOVE("acia6850")
1162   MCFG_DEVICE_REMOVE("acia6850")
10601163   MCFG_DEVICE_REMOVE(RS232_TAG)
1164   MCFG_DEVICE_REMOVE("acia_clock")
10611165
10621166   /* devices */
1063//  MCFG_DEVICE_REMOVE("upd7002")
1064//  MCFG_DEVICE_REMOVE("via6522_1")
1167   MCFG_DEVICE_REMOVE("upd7002")
1168   MCFG_DEVICE_REMOVE("via6522_1")
10651169
10661170   /* fdc */
1067//  MCFG_DEVICE_REMOVE("wd177x")
1171   MCFG_DEVICE_REMOVE("wd1770")
10681172MACHINE_CONFIG_END
10691173
10701174
r249143r249144
10821186MACHINE_CONFIG_END
10831187
10841188
1189/***************************************************************************
1190
1191    BBC Master Compact
1192
1193****************************************************************************/
1194
1195
10851196static MACHINE_CONFIG_DERIVED( bbcmc, bbcm )
1197   /* cassette */
1198   MCFG_DEVICE_REMOVE("cassette")
10861199
1087//  MCFG_DEVICE_REMOVE("rtc")
1088
10891200   /* fdc */
1090   MCFG_DEVICE_REMOVE("wd177x")
1201   MCFG_DEVICE_REMOVE("wd1770")
10911202
1092//  MCFG_WD1772_ADD("wd177x", XTAL_16MHz / 2)
1093   MCFG_WD1770_ADD("wd177x", XTAL_16MHz / 2)
1203   MCFG_WD1772_ADD("wd1772", XTAL_16MHz / 2)
10941204   MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_intrq_w))
10951205   MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_drq_w))
10961206
1097   MCFG_FLOPPY_DRIVE_ADD("wd177x:0", bbc_floppies, "qd", bbc_state::floppy_formats)
1098   MCFG_FLOPPY_DRIVE_ADD("wd177x:1", bbc_floppies, "qd", bbc_state::floppy_formats)
1207   MCFG_FLOPPY_DRIVE_ADD("wd1772:0", bbc_floppies_35, "qd", bbc_state::floppy_formats_35dd)
1208   MCFG_FLOPPY_DRIVE_SOUND(true)
1209   MCFG_FLOPPY_DRIVE_ADD("wd1772:1", bbc_floppies_35, NULL, bbc_state::floppy_formats_35dd)
1210   MCFG_FLOPPY_DRIVE_SOUND(true)
10991211
1212   /* eeprom pcd8572 */
1213   //MCFG_DEVICE_REMOVE("rtc")
1214
11001215   /* software lists */
1216   MCFG_SOFTWARE_LIST_REMOVE("cass_ls_m")
1217   MCFG_SOFTWARE_LIST_REMOVE("cass_ls_a")
1218   MCFG_SOFTWARE_LIST_REMOVE("cass_ls_b")
11011219   MCFG_SOFTWARE_LIST_REMOVE("cart_ls_m")
11021220   MCFG_SOFTWARE_LIST_ADD("flop_ls_mc", "bbcmc_flop")
11031221MACHINE_CONFIG_END
11041222
11051223
1224static MACHINE_CONFIG_DERIVED(pro128s, bbcmc)
1225   /* software lists */
1226   MCFG_SOFTWARE_LIST_REMOVE("flop_ls_mc")
1227   MCFG_SOFTWARE_LIST_ADD("flop_ls_pro128s", "pro128s_flop")
1228   MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("flop_ls_mc", "bbcmc_flop")
1229MACHINE_CONFIG_END
1230
1231
11061232/* the BBC came with 4 rom sockets on the motherboard as shown in the model A driver */
11071233/* you could get a number of rom upgrade boards that took this up to 16 roms as in the */
11081234/* model B driver */
r249143r249144
11111237   ROM_REGION(0x08000,"maincpu",ROMREGION_ERASEFF) /* RAM */
11121238
11131239   ROM_REGION(0x14000,"option",0) /* ROM */
1114   /* rom page 0  00000 */
1115   /* rom page 1  04000 */
1116   /* rom page 2  08000 */
1240   /* rom page 0  00000 SPARE SOCKET */
1241   /* rom page 1  04000 SPARE SOCKET */
1242   /* rom page 2  08000 SPARE SOCKET */
11171243   /* rom page 3  0c000 BASIC */
11181244   ROM_DEFAULT_BIOS("os12b2")
11191245   ROM_SYSTEM_BIOS( 0, "os12b2", "OS 1.20 / BASIC2" )
r249143r249144
11281254   ROM_SYSTEM_BIOS( 3, "os10b1", "OS 1.00 / BASIC1" )
11291255   ROMX_LOAD("os10.rom",   0x10000, 0x4000, CRC(9679b8f8) SHA1(d35f6723132aabe3c4d00fc16fd9ecc6768df753), ROM_BIOS(4)) /* os */
11301256   ROMX_LOAD("basic1.rom", 0x0c000, 0x4000, CRC(b3364108) SHA1(890f6e3e7fab3340f75b85e93ff29332bc9ecb2e), ROM_BIOS(4)) /* rom page 3  0c000 */
1257   /* OS0.1 does not support rom paging, load BASIC into all pages */
11311258   ROM_SYSTEM_BIOS( 4, "os01b2", "OS 0.10 / BASIC2" )
11321259   ROMX_LOAD("os01.rom",   0x10000, 0x4000, CRC(45ee0980) SHA1(4b0ece6dc139d5d3f4fabd023716fb6f25149b80), ROM_BIOS(5)) /* os */
11331260   ROMX_LOAD("basic2.rom", 0x00000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281), ROM_BIOS(5)) /* rom page 0  00000 */
r249143r249144
11461273ROM_END
11471274
11481275
1149
11501276/*  0000- 7fff  ram */
11511277/*  8000- bfff  this area is mapped over with one of the roms from "option" region 0x00000-0x40000 */
11521278/*  c000- ffff  OS rom and memory mapped hardware at fc00-feff, from "option" region 0x40000-0x44000 */
r249143r249144
11681294   /* rom page 9  24000 */
11691295   /* rom page 10 28000 */
11701296   /* rom page 11 2c000 */
1171   /* rom page 12 30000 */
1172   /* rom page 13 34000 */
1173   /* rom page 14 38000 */
1297   /* rom page 12 30000 SPARE SOCKET */
1298   /* rom page 13 34000 SPARE SOCKET */
1299   /* rom page 14 38000 DFS */
11741300   /* rom page 15 3c000 BASIC */
11751301   ROM_DEFAULT_BIOS("os12b2")
11761302   ROM_SYSTEM_BIOS( 0, "os12b2", "OS 1.20 / BASIC2" )
r249143r249144
11861312   ROMX_LOAD("os10.rom",   0x40000, 0x4000, CRC(9679b8f8) SHA1(d35f6723132aabe3c4d00fc16fd9ecc6768df753), ROM_BIOS(4)) /* os */
11871313   ROMX_LOAD("basic1.rom", 0x3c000, 0x4000, CRC(b3364108) SHA1(890f6e3e7fab3340f75b85e93ff29332bc9ecb2e), ROM_BIOS(4)) /* rom page 15 3c000 */
11881314
1315   ROM_LOAD("dnfs.rom",    0x38000, 0x4000, CRC(8ccd2157) SHA1(7e3c536baeae84d6498a14e8405319e01ee78232))
1316
11891317   ROM_REGION(0x4000, "os", 0)
11901318   ROM_COPY("option", 0x40000, 0, 0x4000)
11911319
1192   ROM_REGION(0x20000,"dfs",0) /* DFS ROMS */
1193   ROM_LOAD("dfs09.rom",    0x00000, 0x2000, CRC(3ce609cf) SHA1(5cc0f14b8f46855c70eaa653cca4ad079b458732))
1194   ROM_RELOAD(              0x02000, 0x2000                )
1195   ROM_LOAD("dnfs.rom",     0x04000, 0x4000, CRC(8ccd2157) SHA1(7e3c536baeae84d6498a14e8405319e01ee78232))
1196   ROM_LOAD("dfs144.rom",   0x08000, 0x4000, CRC(9fb8d13f) SHA1(387d2468c6e1360f5b531784ce95d5f71a50c2b5))
1197   ROM_LOAD("zdfs-0.90.rom",0x0C000, 0x2000, CRC(ea579d4d) SHA1(59ad2a8994f4bddad6687891f1a2bc29f2fd32b8))
1198   ROM_LOAD("ddfs223.rom",  0x10000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa))
1199   ROM_LOAD("ddfs-1.53.rom",0x14000, 0x4000, CRC(e1be4ee4) SHA1(6719dc958f2631e6dc8f045429797b289bfe649a))
1200   ROM_LOAD("ch103.rom",    0x18000, 0x4000, CRC(98367cf4) SHA1(eca3631aa420691f96b72bfdf2e9c2b613e1bf33))
1201   /*NONE*/
1202   ROM_REGION(0x80000, "disks", ROMREGION_ERASEFF) /* Opus Ram Disc Space */
1320   ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */
1321   ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6))
1322ROM_END
12031323
1204   //ROM_REGION(0x2000, "torch", 0)
1205   //ROM_LOAD("torchz80_094.bin", 0x0000, 0x2000, CRC(49989bd4) SHA1(62b57c858a3baa4ff943c31f77d331c414772a61))
1206   //ROM_LOAD("torchz80_102.bin", 0x0000, 0x2000, CRC(2eb40a21) SHA1(e6ee738e5f2f8556002b79d18caa8ef21f14e08d))
12071324
1208   //ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */
1209   //ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6))
1325ROM_START(bbcb1770)
1326   ROM_REGION(0x08000,"maincpu",ROMREGION_ERASEFF) /* RAM */
1327
1328   ROM_REGION(0x44000,"option",0) /* ROM */
1329   /* rom page 0  00000 */
1330   /* rom page 1  04000 */
1331   /* rom page 2  08000 */
1332   /* rom page 3  0c000 */
1333   /* rom page 4  10000 */
1334   /* rom page 5  14000 */
1335   /* rom page 6  18000 */
1336   /* rom page 7  1c000 */
1337   /* rom page 8  20000 */
1338   /* rom page 9  24000 */
1339   /* rom page 10 28000 */
1340   /* rom page 11 2c000 */
1341   /* rom page 12 30000 SPARE SOCKET */
1342   /* rom page 13 34000 SPARE SOCKET */
1343   /* rom page 14 38000 DDFS */
1344   /* rom page 15 3c000 BASIC */
1345   ROM_DEFAULT_BIOS("os12b2")
1346   ROM_SYSTEM_BIOS( 0, "os12b2", "OS 1.20 / BASIC2" )
1347   ROMX_LOAD("os12.rom",   0x40000, 0x4000, CRC(3c14fc70) SHA1(0d9bcaf6a393c9ce2359ed700ddb53c232c2c45d), ROM_BIOS(1)) /* os */
1348   ROMX_LOAD("basic2.rom", 0x3c000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281), ROM_BIOS(1)) /* rom page 15 3c000 */
1349   ROM_SYSTEM_BIOS( 1, "os12b1", "OS 1.20 / BASIC1" )
1350   ROMX_LOAD("os12.rom",   0x40000, 0x4000, CRC(3c14fc70) SHA1(0d9bcaf6a393c9ce2359ed700ddb53c232c2c45d), ROM_BIOS(2)) /* os */
1351   ROMX_LOAD("basic1.rom", 0x3c000, 0x4000, CRC(b3364108) SHA1(890f6e3e7fab3340f75b85e93ff29332bc9ecb2e), ROM_BIOS(2)) /* rom page 15 3c000 */
1352   ROM_SYSTEM_BIOS( 2, "os10b2", "OS 1.00 / BASIC2" )
1353   ROMX_LOAD("os10.rom",   0x40000, 0x4000, CRC(9679b8f8) SHA1(d35f6723132aabe3c4d00fc16fd9ecc6768df753), ROM_BIOS(3)) /* os */
1354   ROMX_LOAD("basic2.rom", 0x3c000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281), ROM_BIOS(3)) /* rom page 15 3c000 */
1355   ROM_SYSTEM_BIOS( 3, "os10b1", "OS 1.00 / BASIC1" )
1356   ROMX_LOAD("os10.rom",   0x40000, 0x4000, CRC(9679b8f8) SHA1(d35f6723132aabe3c4d00fc16fd9ecc6768df753), ROM_BIOS(4)) /* os */
1357   ROMX_LOAD("basic1.rom", 0x3c000, 0x4000, CRC(b3364108) SHA1(890f6e3e7fab3340f75b85e93ff29332bc9ecb2e), ROM_BIOS(4)) /* rom page 15 3c000 */
1358
1359   ROM_LOAD("ddfs223.rom", 0x38000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa))
1360
1361   ROM_REGION(0x4000, "os", 0)
1362   ROM_COPY("option", 0x40000, 0, 0x4000)
1363
1364   ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */
1365   ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6))
12101366ROM_END
12111367
1368
12121369ROM_START(bbcb_de)
12131370   ROM_REGION(0x08000,"maincpu",ROMREGION_ERASEFF) /* RAM */
12141371
r249143r249144
12251382   /* rom page 9  24000 */
12261383   /* rom page 10 28000 */
12271384   /* rom page 11 2c000 */
1228   /* rom page 12 30000 */
1229   /* rom page 13 34000 */
1230   /* rom page 14 38000 */
1385   /* rom page 12 30000 SPARE SOCKET */
1386   /* rom page 13 34000 SPARE SOCKET */
1387   /* rom page 14 38000 DFS */
12311388   /* rom page 15 3c000 BASIC */
12321389   ROM_DEFAULT_BIOS("os12")
12331390   ROM_SYSTEM_BIOS( 0, "os12", "OS 1.20 / BASIC2" )
12341391   ROMX_LOAD("os_de.rom",   0x40000, 0x4000, CRC(b7262caf) SHA1(aadf90338ee9d1c85dfa73beba50e930c2a38f10), ROM_BIOS(1))
12351392   ROMX_LOAD("basic2.rom",  0x3c000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281), ROM_BIOS(1)) /* rom page 15 3c000 */
12361393
1394   ROM_LOAD("dfs10.rom",    0x38000, 0x4000, CRC(7e367e8c) SHA1(161f585dc45665ea77433c84afd2f95049f7f5a0))
1395
12371396   ROM_REGION(0x4000, "os", 0)
12381397   ROM_COPY("option", 0x40000, 0, 0x4000)
12391398
1240   ROM_REGION(0x20000,"dfs",0) /* DFS ROMS */
1241   ROM_LOAD("dfs09.rom",    0x00000, 0x2000, CRC(3ce609cf) SHA1(5cc0f14b8f46855c70eaa653cca4ad079b458732))
1242   ROM_RELOAD(              0x02000, 0x2000                )
1243
1244   ROM_LOAD("dnfs.rom",     0x04000, 0x4000, CRC(8ccd2157) SHA1(7e3c536baeae84d6498a14e8405319e01ee78232))
1245   ROM_LOAD("dfs144.rom",   0x08000, 0x4000, CRC(9fb8d13f) SHA1(387d2468c6e1360f5b531784ce95d5f71a50c2b5))
1246   ROM_LOAD("zdfs-0.90.rom",0x0C000, 0x2000, CRC(ea579d4d) SHA1(59ad2a8994f4bddad6687891f1a2bc29f2fd32b8))
1247   ROM_LOAD("ddfs223.rom",  0x10000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa))
1248   ROM_LOAD("ddfs-1.53.rom",0x14000, 0x4000, CRC(e1be4ee4) SHA1(6719dc958f2631e6dc8f045429797b289bfe649a))
1249   ROM_LOAD("ch103.rom",    0x18000, 0x4000, CRC(98367cf4) SHA1(eca3631aa420691f96b72bfdf2e9c2b613e1bf33))
1250   /*NONE*/
1251   ROM_REGION(0x80000, "disks", ROMREGION_ERASEFF) /* Opus Ram Disc Space */
1399   ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */
1400   ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6))
12521401ROM_END
12531402
1403
12541404ROM_START(bbcb_us)
12551405   ROM_REGION(0x08000,"maincpu",ROMREGION_ERASEFF) /* RAM */
12561406
r249143r249144
12671417   /* rom page 9  24000 */
12681418   /* rom page 10 28000 */
12691419   /* rom page 11 2c000 */
1270   /* rom page 12 30000 */
1271   /* rom page 13 34000 */
1272   /* rom page 14 38000 */
1420   /* rom page 12 30000 SPARE SOCKET */
1421   /* rom page 13 34000 SPARE SOCKET */
1422   /* rom page 14 38000 DFS */
12731423   /* rom page 15 3c000 BASIC */
12741424   ROM_DEFAULT_BIOS("os10b3")
12751425   ROM_SYSTEM_BIOS( 0, "os10b3", "OS A1.0 / BASIC3" )
12761426   ROMX_LOAD("os10_us.rom", 0x40000, 0x4000, CRC(c8e946a9) SHA1(83d91d089dca092d2c8b7c3650ff8143c9069b89), ROM_BIOS(1))
12771427   ROMX_LOAD("basic3.rom",  0x3c000, 0x4000, CRC(161b9539) SHA1(b39014610a968789afd7695aa04d1277d874405c), ROM_BIOS(1)) /* rom page 15 3c000 */
12781428
1429   ROM_LOAD("dfs10.rom",    0x38000, 0x4000, CRC(7e367e8c) SHA1(161f585dc45665ea77433c84afd2f95049f7f5a0))
1430
12791431   ROM_REGION(0x4000, "os", 0)
12801432   ROM_COPY("option", 0x40000, 0, 0x4000)
12811433
1282   ROM_REGION(0x20000,"dfs",0) /* DFS ROMS */
1283   ROM_LOAD("dfs09.rom",    0x00000, 0x2000, CRC(3ce609cf) SHA1(5cc0f14b8f46855c70eaa653cca4ad079b458732))
1284   ROM_RELOAD(              0x02000, 0x2000                )
1285
1286   ROM_LOAD("dnfs.rom",     0x04000, 0x4000, CRC(8ccd2157) SHA1(7e3c536baeae84d6498a14e8405319e01ee78232))
1287   ROM_LOAD("dfs144.rom",   0x08000, 0x4000, CRC(9fb8d13f) SHA1(387d2468c6e1360f5b531784ce95d5f71a50c2b5))
1288   ROM_LOAD("zdfs-0.90.rom",0x0C000, 0x2000, CRC(ea579d4d) SHA1(59ad2a8994f4bddad6687891f1a2bc29f2fd32b8))
1289   ROM_LOAD("ddfs223.rom",  0x10000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa))
1290   ROM_LOAD("ddfs-1.53.rom",0x14000, 0x4000, CRC(e1be4ee4) SHA1(6719dc958f2631e6dc8f045429797b289bfe649a))
1291   ROM_LOAD("ch103.rom",    0x18000, 0x4000, CRC(98367cf4) SHA1(eca3631aa420691f96b72bfdf2e9c2b613e1bf33))
1292   /*NONE*/
1293   ROM_REGION(0x80000, "disks", ROMREGION_ERASEFF) /* Opus Ram Disc Space */
1294
12951434   ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */
12961435   ROM_LOAD("phrom_us.bin", 0x0000, 0x4000, CRC(bf4b3b64) SHA1(66876702d1d95eecc034d20f25047f893a27cde5))
12971436ROM_END
12981437
1438
12991439ROM_START(bbcbp)
13001440   ROM_REGION(0x10000,"maincpu",ROMREGION_ERASEFF) /* ROM MEMORY */
13011441
r249143r249144
13091449   /* rom page 2  08000  32K IN PAGE 3 */
13101450   /* rom page 3  0c000  SPARE SOCKET */
13111451   /* rom page 4  10000  32K IN PAGE 5 */
1312   /* rom page 5  14000  SPARE SOCKET */
1452   /* rom page 5  14000  ADFS */
13131453   /* rom page 6  18000  32K IN PAGE 7 */
13141454   /* rom page 7  1c000  DDFS */
13151455   /* rom page 8  20000  32K IN PAGE 9 */
r249143r249144
13201460   /* rom page 13 34000 */
13211461   /* rom page 14 38000  32K IN PAGE 15 */
13221462   /* rom page 15 3C000  BASIC */
1323   /* ddfs 2.23 this is acorns 1770 disc controller Double density disc filing system */
1463   ROM_LOAD("adfs130.rom", 0x14000, 0x4000, CRC(d3855588) SHA1(301fd05c475a629c4bec70510d4507256a5b00d8))
13241464   ROM_LOAD("ddfs223.rom", 0x1c000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa))
13251465
13261466   ROM_REGION(0x4000, "os", 0)
13271467   ROM_COPY("option", 0x40000, 0, 0x4000)
1468
1469   ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */
1470   ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6))
13281471ROM_END
13291472
13301473
r249143r249144
13411484   /* rom page 2  08000  32K IN PAGE 3 */
13421485   /* rom page 3  0c000  SPARE SOCKET */
13431486   /* rom page 4  10000  32K IN PAGE 5 */
1344   /* rom page 5  14000  SPARE SOCKET */
1487   /* rom page 5  14000  ADFS */
13451488   /* rom page 6  18000  32K IN PAGE 7 */
13461489   /* rom page 7  1c000  DDFS */
13471490   /* rom page 8  20000  32K IN PAGE 9 */
r249143r249144
13521495   /* rom page 13 34000 */
13531496   /* rom page 14 38000  32K IN PAGE 15 */
13541497   /* rom page 15 3C000  BASIC */
1355   /* ddfs 2.23 this is acorns 1770 disc controller Double density disc filing system */
1498   ROM_LOAD("adfs130.rom", 0x14000, 0x4000, CRC(d3855588) SHA1(301fd05c475a629c4bec70510d4507256a5b00d8))
13561499   ROM_LOAD("ddfs223.rom", 0x1c000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa))
13571500
13581501   ROM_REGION(0x4000, "os", 0)
13591502   ROM_COPY("option", 0x40000, 0, 0x4000)
1503
1504   ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */
1505   ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6))
13601506ROM_END
13611507
13621508
1509ROM_START(abc110)
1510   ROM_REGION(0x10000,"maincpu",ROMREGION_ERASEFF) /* ROM MEMORY */
1511
1512   ROM_REGION(0x44000,"option",0) /* ROM */
1513   ROM_DEFAULT_BIOS("mos200")
1514   ROM_SYSTEM_BIOS( 0, "mos200", "MOS2.00" )
1515   ROMX_LOAD("mos200.rom", 0x40000, 0x4000, CRC(5e88f994) SHA1(76235ff15d736f5def338f73ac7497c41b916505), ROM_BIOS(1))
1516   ROM_SYSTEM_BIOS( 1, "mos123", "MOS1.23" )
1517   ROMX_LOAD("mos123.rom", 0x40000, 0x4000, CRC(90d31d08) SHA1(42a01892cf8bd2ada4db1c8b36aff80c85eb5dcb), ROM_BIOS(2))
1518   ROM_SYSTEM_BIOS( 2, "mos120", "MOS1.20" )
1519   ROMX_LOAD("mos120.rom", 0x40000, 0x4000, CRC(0a1e83a0) SHA1(21dc3a94eef7c003b194686730fb461779f44925), ROM_BIOS(3))
1520   /* rom page 0  00000 */
1521   /* rom page 1  04000 */
1522   /* rom page 2  08000  32K IN PAGE 3 */
1523   /* rom page 3  0c000  SPARE SOCKET */
1524   /* rom page 4  10000  32K IN PAGE 5 */
1525   /* rom page 5  14000  DDFS */
1526   /* rom page 6  18000  32K IN PAGE 7 */
1527   /* rom page 7  1c000  ADFS */
1528   /* rom page 8  20000  32K IN PAGE 9 */
1529   /* rom page 9  24000  SPARE SOCKET */
1530   /* rom page 10 28000  32K IN PAGE 11 */
1531   /* rom page 11 2c000  SPARE SOCKET */
1532   /* rom page 12 30000 */
1533   /* rom page 13 34000 */
1534   /* rom page 14 38000  32K IN PAGE 15 */
1535   /* rom page 15 3C000  BASIC */
1536   ROM_LOAD("ddfs223.rom", 0x14000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa))
1537   ROM_LOAD("adfs130.rom", 0x1c000, 0x4000, CRC(d3855588) SHA1(301fd05c475a629c4bec70510d4507256a5b00d8))
1538   ROM_LOAD("basic200.rom", 0x3c000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281))
1539
1540   ROM_REGION(0x4000, "os", 0)
1541   ROM_COPY("option", 0x40000, 0, 0x4000)
1542
1543   ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */
1544   ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6))
1545ROM_END
1546
1547
1548ROM_START(abc210)
1549   ROM_REGION(0x10000,"maincpu",ROMREGION_ERASEFF) /* ROM MEMORY */
1550
1551   ROM_REGION(0x44000,"option",0) /* ROM */
1552   ROM_DEFAULT_BIOS("mos200")
1553   ROM_SYSTEM_BIOS( 0, "mos200", "MOS2.00" )
1554   ROMX_LOAD("mos200.rom", 0x40000, 0x4000, CRC(5e88f994) SHA1(76235ff15d736f5def338f73ac7497c41b916505), ROM_BIOS(1))
1555   ROM_SYSTEM_BIOS( 1, "mos123", "MOS1.23" )
1556   ROMX_LOAD("mos123.rom", 0x40000, 0x4000, CRC(90d31d08) SHA1(42a01892cf8bd2ada4db1c8b36aff80c85eb5dcb), ROM_BIOS(2))
1557   ROM_SYSTEM_BIOS( 2, "mos120", "MOS1.20" )
1558   ROMX_LOAD("mos120.rom", 0x40000, 0x4000, CRC(0a1e83a0) SHA1(21dc3a94eef7c003b194686730fb461779f44925), ROM_BIOS(3))
1559   /* rom page 0  00000 */
1560   /* rom page 1  04000 */
1561   /* rom page 2  08000  32K IN PAGE 3 */
1562   /* rom page 3  0c000  SPARE SOCKET */
1563   /* rom page 4  10000  32K IN PAGE 5 */
1564   /* rom page 5  14000  DDFS */
1565   /* rom page 6  18000  32K IN PAGE 7 */
1566   /* rom page 7  1c000  ADFS */
1567   /* rom page 8  20000  32K IN PAGE 9 */
1568   /* rom page 9  24000  SPARE SOCKET */
1569   /* rom page 10 28000  32K IN PAGE 11 */
1570   /* rom page 11 2c000  SPARE SOCKET */
1571   /* rom page 12 30000 */
1572   /* rom page 13 34000 */
1573   /* rom page 14 38000  32K IN PAGE 15 */
1574   /* rom page 15 3C000  BASIC */
1575   ROM_LOAD("ddfs223.rom",  0x14000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa))
1576   ROM_LOAD("adfs130.rom",  0x1c000, 0x4000, CRC(d3855588) SHA1(301fd05c475a629c4bec70510d4507256a5b00d8))
1577   ROM_LOAD("basic200.rom", 0x3c000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281))
1578
1579   ROM_REGION(0x4000, "os", 0)
1580   ROM_COPY("option", 0x40000, 0, 0x4000)
1581
1582   ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */
1583   ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6))
1584ROM_END
1585
1586
1587ROM_START(abc310)
1588   ROM_REGION(0x10000,"maincpu",ROMREGION_ERASEFF) /* ROM MEMORY */
1589
1590   ROM_REGION(0x44000,"option",0) /* ROM */
1591   ROM_DEFAULT_BIOS("mos200")
1592   ROM_SYSTEM_BIOS( 0, "mos200", "MOS2.00" )
1593   ROMX_LOAD("mos200.rom", 0x40000, 0x4000, CRC(5e88f994) SHA1(76235ff15d736f5def338f73ac7497c41b916505), ROM_BIOS(1))
1594   ROM_SYSTEM_BIOS( 1, "mos123", "MOS1.23" )
1595   ROMX_LOAD("mos123.rom", 0x40000, 0x4000, CRC(90d31d08) SHA1(42a01892cf8bd2ada4db1c8b36aff80c85eb5dcb), ROM_BIOS(2))
1596   ROM_SYSTEM_BIOS( 2, "mos120", "MOS1.20" )
1597   ROMX_LOAD("mos120.rom", 0x40000, 0x4000, CRC(0a1e83a0) SHA1(21dc3a94eef7c003b194686730fb461779f44925), ROM_BIOS(3))
1598   /* rom page 0  00000 */
1599   /* rom page 1  04000 */
1600   /* rom page 2  08000  32K IN PAGE 3 */
1601   /* rom page 3  0c000  SPARE SOCKET */
1602   /* rom page 4  10000  32K IN PAGE 5 */
1603   /* rom page 5  14000  DDFS */
1604   /* rom page 6  18000  32K IN PAGE 7 */
1605   /* rom page 7  1c000  ADFS */
1606   /* rom page 8  20000  32K IN PAGE 9 */
1607   /* rom page 9  24000  SPARE SOCKET */
1608   /* rom page 10 28000  32K IN PAGE 11 */
1609   /* rom page 11 2c000  SPARE SOCKET */
1610   /* rom page 12 30000 */
1611   /* rom page 13 34000 */
1612   /* rom page 14 38000  32K IN PAGE 15 */
1613   /* rom page 15 3C000  BASIC */
1614   ROM_LOAD("ddfs223.rom",  0x14000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa))
1615   ROM_LOAD("adfs130.rom",  0x1c000, 0x4000, CRC(d3855588) SHA1(301fd05c475a629c4bec70510d4507256a5b00d8))
1616   ROM_LOAD("basic200.rom", 0x3c000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281))
1617
1618   ROM_REGION(0x4000, "os", 0)
1619   ROM_COPY("option", 0x40000, 0, 0x4000)
1620
1621   ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */
1622   ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6))
1623ROM_END
1624
1625
1626ROM_START(reutapm)
1627   ROM_REGION(0x10000,"maincpu",ROMREGION_ERASEFF) /* ROM MEMORY */
1628
1629   ROM_REGION(0x44000,"option",0) /* ROM */
1630   /* rom page 0  00000 */
1631   /* rom page 1  04000 */
1632   /* rom page 2  08000  32K IN PAGE 3 */
1633   /* rom page 3  0c000  SPARE SOCKET */
1634   /* rom page 4  10000  32K IN PAGE 5 */
1635   /* rom page 5  14000  SPARE SOCKET */
1636   /* rom page 6  18000  32K IN PAGE 7 */
1637   /* rom page 7  1c000  SPARE SOCKET */
1638   /* rom page 8  20000  32K IN PAGE 9 */
1639   /* rom page 9  24000  SPARE SOCKET */
1640   /* rom page 10 28000  32K IN PAGE 11 */
1641   /* rom page 11 2c000  SPARE SOCKET */
1642   /* rom page 12 30000 */
1643   /* rom page 13 34000 */
1644   /* rom page 14 38000  32K IN PAGE 15 */
1645   /* rom page 15 3C000  SPARE SOCKET */
1646   ROM_LOAD("reutera100.rom", 0x1c000, 0x4000, CRC(98ebabfb) SHA1(a7887e1e5c206203491e1e06682b9508b0fef49d))
1647   ROM_LOAD("reuterb.rom",    0x2c000, 0x4000, CRC(9e02f59b) SHA1(1e63aa3bf4b37bf9ba41e454f95db05c3d15bfbf))
1648
1649   ROM_REGION(0x4000, "os", 0)
1650   ROM_LOAD("mos_r030.rom", 0x0000, 0x4000, CRC(8b652337) SHA1(6a5c7ace255c8ac96c983d5ba67084fbd71ff61e))
1651ROM_END
1652
1653
13631654ROM_START(bbcm)
13641655   ROM_REGION(0x10000,"maincpu",ROMREGION_ERASEFF) /* ROM MEMORY */
13651656
r249143r249144
14801771   ROM_REGION(0x44000,"option",0) /* ROM */
14811772   ROM_DEFAULT_BIOS("mos400")
14821773   ROM_SYSTEM_BIOS( 0, "mos400", "Econet MOS 4.00" )
1483   ROMX_LOAD("mos400.ic24", 0x20000, 0x10000, BAD_DUMP CRC(81729034) SHA1(d4bc2c7f5e66b5298786138f395908e70c772971), ROM_BIOS(1)) /* Merged individual ROM bank dumps */
1484   ROM_COPY("option", 0x24000, 0x34000, 0xC000) /* Mirror */
1485   ROM_COPY("option", 0x20000, 0x40000, 0x4000) /* Move loaded roms into place */
1486   ROM_FILL(0x20000, 0x4000, 0xFFFF)
1774   ROMX_LOAD("mos400.ic24", 0x30000, 0x10000, BAD_DUMP CRC(81729034) SHA1(d4bc2c7f5e66b5298786138f395908e70c772971), ROM_BIOS(1)) /* Merged individual ROM bank dumps */
1775   ROM_COPY("option", 0x34000, 0x24000, 0xC000) /* Mirror */
1776   ROM_COPY("option", 0x30000, 0x40000, 0x4000) /* Move loaded roms into place */
1777   ROM_FILL(0x30000, 0x4000, 0xFFFF)
14871778   /* 00000 rom 0   Rear Cartridge bottom 16K */
14881779   /* 04000 rom 1   Rear Cartridge top 16K */
14891780   /* 08000 rom 2   Front Cartridge bottom 16K */
r249143r249144
16591950ROM_END
16601951
16611952
1662/*     YEAR  NAME      PARENT    COMPAT MACHINE   INPUT CLASS        INIT     COMPANY  FULLNAME */
1663COMP ( 1981, bbcb,     0,        bbca,  bbcb,     bbcb, bbc_state,   bbc,     "Acorn", "BBC Micro Model B", 0)
1664COMP ( 1981, bbca,     bbcb,     0,     bbca,     bbca, bbc_state,   bbc,     "Acorn", "BBC Micro Model A", 0)
1665COMP ( 1981, bbcb_us,  bbcb,     0,     bbcb_us,  bbcb, bbc_state,   bbc,     "Acorn", "Acorn Proton (US)", 0)
1666COMP ( 1981, bbcb_de,  bbcb,     0,     bbcb,     bbcb, bbc_state,   bbc,     "Acorn", "BBC Micro Model B (German)", 0)
1667COMP ( 1985, bbcbp,    0,        bbcb,  bbcbp,    bbcb, bbc_state,   bbc,     "Acorn", "BBC Micro Model B+ 64K", 0)
1668COMP ( 1985, bbcbp128, bbcbp,    0,     bbcbp128, bbcb, bbc_state,   bbc,     "Acorn", "BBC Micro Model B+ 128K", 0)
1669COMP ( 1986, bbcm,     0,        bbcb,  bbcm,     bbcm, bbc_state,   bbcm,    "Acorn", "BBC Master 128", 0)
1670COMP ( 1986, bbcmt,    bbcm,     0,     bbcmt,    bbcm, bbc_state,   bbcm,    "Acorn", "BBC Master Turbo", MACHINE_NOT_WORKING)
1671COMP ( 1986, bbcmaiv,  bbcm,     0,     bbcmaiv,  bbcm, bbc_state,   bbcm,    "Acorn", "BBC Master AIV", MACHINE_NOT_WORKING)
1672COMP ( 1986, bbcmet,   bbcm,     0,     bbcmet,   bbcm, bbc_state,   bbcm,    "Acorn", "BBC Master ET", 0)
1673COMP ( 1986, bbcm512,  bbcm,     0,     bbcm512,  bbcm, bbc_state,   bbcm,    "Acorn", "BBC Master 512", MACHINE_NOT_WORKING)
1674COMP ( 1986, bbcmarm,  bbcm,     0,     bbcmarm,  bbcm, bbc_state,   bbcm,    "Acorn", "ARM Evaluation System", MACHINE_NOT_WORKING)
1675COMP ( 1986, bbcmc,    0,        bbcm,  bbcmc,    bbcm, bbc_state,   bbcm,    "Acorn", "BBC Master Compact", 0)
1676COMP ( 1986, bbcmc_ar, bbcmc,    0,     bbcmc,    bbcm, bbc_state,   bbcm,    "Acorn", "BBC Master Compact (Arabic)", 0)
1953ROM_START(pro128s)
1954   ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF) /* ROM MEMORY */
1955
1956   ROM_REGION(0x44000, "option", 0) /* ROM */
1957   ROM_DEFAULT_BIOS("mos510o")
1958   ROM_SYSTEM_BIOS(0, "mos510o", "Olivetti MOS 5.10")
1959   ROMX_LOAD("mos510o.ic49", 0x30000, 0x10000, CRC(c16858d3) SHA1(ad231ed21a55e493b553703285530d1cacd3de7a), ROM_BIOS(1))
1960   ROM_COPY("option", 0x30000, 0x40000, 0x4000) /* Move loaded roms into place */
1961   ROM_FILL(0x30000, 0x4000, 0xFFFF)
1962   /* 00000 rom 0   EXTERNAL */
1963   /* 04000 rom 1   EXTERNAL */
1964   /* 08000 rom 2   SPARE SOCKET */
1965   /* 0c000 rom 3   SPARE SOCKET */
1966   /* 10000 rom 4   SWRAM */
1967   /* 14000 rom 5   SWRAM */
1968   /* 18000 rom 6   SWRAM */
1969   /* 1c000 rom 7   SWRAM */
1970   /* 20000 rom 8   SPARE SOCKET */
1971   /* 24000 rom 9   UNUSED */
1972   /* 28000 rom 10  UNUSED */
1973   /* 2c000 rom 11  UNUSED */
1974   /* 30000 rom 12  UNUSED */
1975   /* 34000 rom 13  ADFS */
1976   /* 38000 rom 14  BASIC */
1977   /* 3c000 rom 15  Utils */
1978
1979   ROM_REGION(0x4000, "os", 0)
1980   ROM_COPY("option", 0x40000, 0, 0x4000)
1981
1982   //  ROM_REGION(0x80,"eeprom",0) /* pcd8572 */
1983   /* Factory defaulted EEPROM, sets default language ROM, etc. */
1984   //  ROM_LOAD("mos510o.epr", 0x00, 0x80, CRC(d8458039) SHA1(72c056d493e74ceca41f48936012b012b496a226))
1985ROM_END
1986
1987/*     YEAR  NAME      PARENT    COMPAT MACHINE   INPUT  CLASS        INIT     COMPANY     FULLNAME                         FLAGS */
1988COMP ( 1981, bbcb,     0,        bbca,  bbcb,     bbcb,  bbc_state,   bbc,     "Acorn",    "BBC Micro Model B w/8271 FDC",  MACHINE_IMPERFECT_GRAPHICS)
1989COMP ( 1981, bbca,     bbcb,     0,     bbca,     bbca,  bbc_state,   bbc,     "Acorn",    "BBC Micro Model A",             MACHINE_IMPERFECT_GRAPHICS)
1990COMP ( 1981, bbcb_de,  bbcb,     0,     bbcb_de,  bbcb,  bbc_state,   bbc,     "Acorn",    "BBC Micro Model B (German)",    MACHINE_IMPERFECT_GRAPHICS)
1991COMP ( 1983, bbcb_us,  bbcb,     0,     bbcb_us,  bbcb,  bbc_state,   bbc,     "Acorn",    "BBC Micro Model B (US)",        MACHINE_IMPERFECT_GRAPHICS)
1992COMP ( 1985, bbcb1770, bbcb,     0,     bbcb1770, bbcb,  bbc_state,   bbc,     "Acorn",    "BBC Micro Model B w/1770 FDC",  MACHINE_IMPERFECT_GRAPHICS)
1993COMP ( 1985, bbcbp,    0,        bbcb,  bbcbp,    bbcb,  bbc_state,   bbc,     "Acorn",    "BBC Micro Model B+ 64K",        MACHINE_IMPERFECT_GRAPHICS)
1994COMP ( 1985, bbcbp128, bbcbp,    0,     bbcbp128, bbcb,  bbc_state,   bbc,     "Acorn",    "BBC Micro Model B+ 128K",       MACHINE_IMPERFECT_GRAPHICS)
1995COMP ( 1985, abc110,   abc210,   0,     abc110,   abc,   bbc_state,   bbc,     "Acorn",    "ABC 110",                       MACHINE_NOT_WORKING)
1996COMP ( 1985, abc210,   0,        0,     abc210,   abc,   bbc_state,   bbc,     "Acorn",    "ABC 210/Cambridge Workstation", MACHINE_NOT_WORKING)
1997COMP ( 1985, abc310,   abc210,   0,     abc310,   abc,   bbc_state,   bbc,     "Acorn",    "ABC 310",                       MACHINE_NOT_WORKING)
1998COMP ( 1985, reutapm,  0,        0,     reutapm,  bbcb,  bbc_state,   bbc,     "Acorn",    "Reuters APM",                   MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
1999COMP ( 1986, bbcm,     0,        bbcb,  bbcm,     bbcm,  bbc_state,   bbc,     "Acorn",    "BBC Master 128",                MACHINE_IMPERFECT_GRAPHICS)
2000COMP ( 1986, bbcmt,    bbcm,     0,     bbcmt,    bbcm,  bbc_state,   bbc,     "Acorn",    "BBC Master Turbo",              MACHINE_NOT_WORKING)
2001COMP ( 1986, bbcmaiv,  bbcm,     0,     bbcmaiv,  bbcm,  bbc_state,   bbc,     "Acorn",    "BBC Master AIV",                MACHINE_NOT_WORKING)
2002COMP ( 1986, bbcmet,   bbcm,     0,     bbcmet,   bbcm,  bbc_state,   bbc,     "Acorn",    "BBC Master ET",                 MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS)
2003COMP ( 1986, bbcm512,  bbcm,     0,     bbcm512,  bbcm,  bbc_state,   bbc,     "Acorn",    "BBC Master 512",                MACHINE_NOT_WORKING)
2004COMP ( 1986, bbcmarm,  bbcm,     0,     bbcmarm,  bbcm,  bbc_state,   bbc,     "Acorn",    "ARM Evaluation System",         MACHINE_NOT_WORKING)
2005COMP ( 1986, bbcmc,    0,        bbcm,  bbcmc,    bbcm,  bbc_state,   bbc,     "Acorn",    "BBC Master Compact",            MACHINE_IMPERFECT_GRAPHICS)
2006COMP ( 1986, bbcmc_ar, bbcmc,    0,     bbcmc,    bbcm,  bbc_state,   bbc,     "Acorn",    "BBC Master Compact (Arabic)",   MACHINE_IMPERFECT_GRAPHICS)
2007COMP ( 1987, pro128s,  bbcmc,    0,     pro128s,  bbcm,  bbc_state,   bbc,     "Olivetti", "Prodest PC 128S",               MACHINE_IMPERFECT_GRAPHICS)
trunk/src/mess/includes/bbc.h
r249143r249144
2222#include "machine/i8271.h"
2323#include "machine/wd_fdc.h"
2424#include "machine/upd7002.h"
25#include "machine/mc146818.h"
2526#include "video/mc6845.h"
2627#include "video/saa5050.h"
2728#include "sound/sn76496.h"
r249143r249144
5253      m_via6522_0(*this, "via6522_0"),
5354      m_via6522_1(*this, "via6522_1"),
5455      m_upd7002(*this, "upd7002"),
56      m_rtc(*this, "rtc"),
5557      m_i8271(*this, "i8271"),
58      m_wd1770(*this, "wd1770"),
59      m_wd1772(*this, "wd1772"),
5660      m_exp1(*this, "exp_rom1"),
5761      m_exp2(*this, "exp_rom2"),
5862      m_exp3(*this, "exp_rom3"),
r249143r249144
6468      m_region_maincpu(*this, "maincpu"),
6569      m_region_os(*this, "os"),
6670      m_region_opt(*this, "option"),
67      m_region_dfs(*this, "dfs"),
6871      m_bank1(*this, "bank1"),
6972      m_bank2(*this, "bank2"),
7073      m_bank3(*this, "bank3"),
r249143r249144
8083      m_palette(*this, "palette")
8184   { }
8285
83   DECLARE_FLOPPY_FORMATS(floppy_formats);
86   DECLARE_FLOPPY_FORMATS(floppy_formats_525sd);
87   DECLARE_FLOPPY_FORMATS(floppy_formats_525dd);
88   DECLARE_FLOPPY_FORMATS(floppy_formats_35dd);
8489
8590   DECLARE_WRITE8_MEMBER(bbc_page_selecta_w);
8691   DECLARE_WRITE8_MEMBER(bbc_memorya1_w);
r249143r249144
104109   DECLARE_READ8_MEMBER(bbcm_r);
105110   DECLARE_WRITE8_MEMBER(bbcm_w);
106111   DECLARE_WRITE8_MEMBER(bbc_SerialULA_w);
107   DECLARE_READ8_MEMBER(bbc_i8271_read);
108   DECLARE_WRITE8_MEMBER(bbc_i8271_write);
109   DECLARE_WRITE8_MEMBER(bbc_wd177x_status_w);
110   DECLARE_READ8_MEMBER(bbc_wd1770_read);
111   DECLARE_WRITE8_MEMBER(bbc_wd1770_write);
112   DECLARE_WRITE8_MEMBER(bbc_opus_status_w);
113   DECLARE_READ8_MEMBER(bbc_opus_read);
114   DECLARE_WRITE8_MEMBER(bbc_opus_write);
115   DECLARE_READ8_MEMBER(bbcm_wd1770_read);
116   DECLARE_WRITE8_MEMBER(bbcm_wd1770_write);
117   DECLARE_READ8_MEMBER(bbcm_wd1770l_read);
112
113   DECLARE_WRITE8_MEMBER(bbc_wd1770_status_w);
114   DECLARE_READ8_MEMBER(bbcm_wd177xl_read);
118115   DECLARE_WRITE8_MEMBER(bbcm_wd1770l_write);
119   DECLARE_READ8_MEMBER(bbc_disc_r);
120   DECLARE_WRITE8_MEMBER(bbc_disc_w);
116   DECLARE_WRITE8_MEMBER(bbcm_wd1772l_write);
121117   DECLARE_WRITE8_MEMBER(bbc_videoULA_w);
122   DECLARE_WRITE8_MEMBER(bbc_6845_w);
123   DECLARE_READ8_MEMBER(bbc_6845_r);
124118   DECLARE_READ8_MEMBER(bbc_fe_r);
125119   DECLARE_DIRECT_UPDATE_MEMBER(bbcbp_direct_handler);
126120   DECLARE_DIRECT_UPDATE_MEMBER(bbcm_direct_handler);
121
127122   DECLARE_DRIVER_INIT(bbc);
128   DECLARE_DRIVER_INIT(bbcm);
123
129124   DECLARE_MACHINE_START(bbca);
130125   DECLARE_MACHINE_RESET(bbca);
131126   DECLARE_VIDEO_START(bbca);
127
132128   DECLARE_MACHINE_START(bbcb);
133129   DECLARE_MACHINE_RESET(bbcb);
134130   DECLARE_VIDEO_START(bbcb);
131
135132   DECLARE_MACHINE_START(bbcbp);
136133   DECLARE_MACHINE_RESET(bbcbp);
137134   DECLARE_VIDEO_START(bbcbp);
135
138136   DECLARE_MACHINE_START(bbcm);
139137   DECLARE_MACHINE_RESET(bbcm);
140138   DECLARE_VIDEO_START(bbcm);
139
141140   DECLARE_PALETTE_INIT(bbc);
142141   UINT32 screen_update_bbc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
143142   INTERRUPT_GEN_MEMBER(bbcb_vsync);
r249143r249144
197196   optional_device<saa5050_device> m_trom;
198197   optional_device<tms5220_device> m_tms;
199198   optional_device<cassette_image_device> m_cassette;
200   required_device<acia6850_device> m_acia;
201   required_device<clock_device> m_acia_clock;
199   optional_device<acia6850_device> m_acia;
200   optional_device<clock_device> m_acia_clock;
202201   optional_device<rs232_port_device> m_rs232;
203202   required_device<via6522_device> m_via6522_0;
204203   optional_device<via6522_device> m_via6522_1;
205204   optional_device<upd7002_device> m_upd7002;
205   optional_device<mc146818_device> m_rtc;
206206   optional_device<i8271_device> m_i8271;
207   optional_device<wd1770_t> m_wd1770;
208   optional_device<wd1772_t> m_wd1772;
207209   required_device<generic_slot_device> m_exp1;
208210   required_device<generic_slot_device> m_exp2;
209211   optional_device<generic_slot_device> m_exp3;
r249143r249144
213215   required_memory_region m_region_maincpu;
214216   required_memory_region m_region_os;
215217   required_memory_region m_region_opt;
216   optional_memory_region m_region_dfs;
217218   required_memory_bank m_bank1; // bbca bbcb bbcbp bbcbp128 bbcm
218219   optional_memory_bank m_bank2; //           bbcbp bbcbp128 bbcm
219220   optional_memory_bank m_bank3; // bbca bbcb
r249143r249144
225226
226227   void check_interrupts();
227228
228   int m_DFSType;          // this stores the DIP switch setting for the DFS type being used
229229   int m_SWRAMtype;        // this stores the DIP switch setting for the SWRAM type being used
230230   int m_Speech;           // this stores the CONF setting for Speech enabled/disabled
231   int m_Master;           // if 0 then we are emulating a BBC B style machine
232                     // if 1 then we are emulating a BBC Master style machine
233231
234232   int m_ACCCON_IRR;       // IRQ inputs
235233
r249143r249144
347345                        i8271 disc control
348346                     ***************************************/
349347
350   int m_previous_i8271_int_state; // 8271 interupt status
348   int m_previous_i8271_int_state; // 8271 interrupt status
351349
352350                     /**************************************
353351                        WD1770 disc control
r249143r249144
357355   int m_wd177x_irq_state;
358356   int m_wd177x_drq_state;
359357   int m_previous_wd177x_int_state;
360   int m_1770_IntEnabled;
358   int m_177x_IntEnabled;
361359
362360                     /**************************************
363                        Opus Challenger Disc control
364                     ***************************************/
365
366   int m_opusbank;
367
368                     /**************************************
369361                        Video Code
370362                     ***************************************/
371363
trunk/src/mess/machine/bbc.c
r249143r249144
5151*************************/
5252
5353/* the model B address all 16 of the ROM sockets */
54/* I have set bank 1 as a special case to load different DFS roms selectable from MESS's CONF settings var:bbc_DFSTypes */
5554WRITE8_MEMBER(bbc_state::bbc_page_selectb_w)
5655{
5756   m_rombank = data & 0x0f;
58   if (m_rombank != 1)
59   {
60      m_bank4->set_entry(m_rombank);
61   }
62   else
63   {
64      m_bank4->set_entry(0x10 + m_DFSType);
65   }
57   m_bank4->set_entry(m_rombank);
6658}
6759
6860
r249143r249144
8072
8173/* I have setup 3 types of sideways ram:
82740: none
831: 128K (bank 8 to 15) Solidisc sidewaysram userport bank latch
751: 128K (bank 8 to 15) Solidisc sideways ram userport bank latch
84762: 64K (banks 4 to 7) for Acorn sideways ram FE30 bank latch
85773: 128K (banks 8 to 15) for Acown sideways ram FE30 bank latch
8678*/
r249143r249144
9082
9183WRITE8_MEMBER(bbc_state::bbc_memoryb4_w)
9284{
93   if (m_rombank == 1)
85   switch (m_SWRAMtype)
9486   {
95      // special DFS case for Acorn DFS E00 Hack that can write to the DFS RAM Bank;
96      if (m_DFSType == 3) m_region_dfs->base()[((m_DFSType) << 14) + offset] = data;
87      case 1: if (bbc_SWRAMtype1[m_userport]) m_region_opt->base()[(m_userport << 14) + offset] = data;
88      case 2: if (bbc_SWRAMtype2[m_rombank])  m_region_opt->base()[(m_rombank << 14) + offset] = data;
89      case 3: if (bbc_SWRAMtype3[m_rombank])  m_region_opt->base()[(m_rombank << 14) + offset] = data;
9790   }
98   else
99   {
100      switch (m_SWRAMtype)
101      {
102         case 1: if (bbc_SWRAMtype1[m_userport]) m_region_opt->base()[(m_userport << 14) + offset] = data;
103         case 2: if (bbc_SWRAMtype2[m_rombank])  m_region_opt->base()[(m_rombank << 14) + offset] = data;
104         case 3: if (bbc_SWRAMtype3[m_rombank])  m_region_opt->base()[(m_rombank << 14) + offset] = data;
105      }
106   }
10791}
10892
10993/****************************************/
r249143r249144
377361      m_bank2->set_base(m_region_maincpu->base() + 0x3000);
378362   }
379363
380   /* ACCCON_TST controls paging of rom reads in the 0xFC00-0xFEFF reigon */
364   /* ACCCON_TST controls paging of rom reads in the 0xFC00-0xFEFF region */
381365   /* if 0 the I/O is paged for both reads and writes */
382366   /* if 1 the ROM is paged in for reads but writes still go to I/O */
383367   if (m_ACCCON_TST)
r249143r249144
538522&FE18-&FE1F uPD7002         A to D converter        A to D converter         8 ( 4 bytes x  2 )
539523&FE20-&FE23 Video ULA       -                       Video system chip        4 ( 2 bytes x  2 )
540524&FE24-&FE27 FDC Latch       1770 Control latch      1770 Control latch       4 ( 1 byte  x  4 )
541&FE28-&FE2F 1770 registers  1770 Disc Controller    1170 Disc Controller     8 ( 4 bytes x  2 )
525&FE28-&FE2F 1770 registers  1770 Disc Controller    1770 Disc Controller     8 ( 4 bytes x  2 )
542526&FE30-&FE33 ROMSEL          -                       ROM Select               4 ( 1 byte  x  4 )
543527&FE34-&3FE7 ACCCON          ACCCON select reg.      ACCCON select reg        4 ( 1 byte  x  4 )
544528&FE38-&FE3F NC              -                       -
r249143r249144
554538{
555539   long myo;
556540
557   /* Now handled in bbcm_ACCCON_write PHS - 2008-10-11 */
558//  if ( m_ACCCON_TST )
559//  {
560//      return m_region_os->base()[offset + 0x3c00];
561//  };
562
563541   if (offset<=0x0ff) /* FRED */
564542   {
565543      return 0xff;
r249143r249144
573551   if ((offset>=0x200) && (offset<=0x2ff)) /* SHEILA */
574552   {
575553      myo = offset-0x200;
576      if ((myo>=0x00) && (myo<=0x07)) return bbc_6845_r(space, myo-0x00);     /* Video Controller */
577      if ((myo>=0x08) && (myo<=0x0f))
578      {
579         if ((myo - 0x08) & 1)
580            return m_acia->status_r(space,0);
581         else
582            return m_acia->data_r(space,0);
583      }
584      if ((myo>=0x10) && (myo<=0x17)) return 0xfe;                                /* Serial System Chip */
585      if ((myo>=0x18) && (myo<=0x1f)) return m_upd7002->read(space, myo-0x18);    /* A to D converter */
586      if ((myo>=0x20) && (myo<=0x23)) return 0xfe;                                /* VideoULA */
587      if ((myo>=0x24) && (myo<=0x27)) return bbcm_wd1770l_read(space, myo-0x24);  /* 1770 */
588      if ((myo>=0x28) && (myo<=0x2f)) return bbcm_wd1770_read(space, myo-0x28);   /* disc control latch */
589      if ((myo>=0x30) && (myo<=0x33)) return 0xfe;                                /* page select */
590      if ((myo>=0x34) && (myo<=0x37)) return bbcm_ACCCON_read(space, myo-0x34);   /* ACCCON */
591      if ((myo>=0x38) && (myo<=0x3f)) return 0xfe;                                /* NC ?? */
592      if ((myo>=0x40) && (myo<=0x5f)) return m_via6522_0->read(space, myo-0x40);
593      if ((myo>=0x60) && (myo<=0x7f)) return m_via6522_1->read(space, myo-0x60);
594      if ((myo>=0x80) && (myo<=0x9f)) return 0xfe;
595      if ((myo>=0xa0) && (myo<=0xbf)) return m_adlc->read(space, myo & 0x03);
596      if ((myo>=0xc0) && (myo<=0xdf)) return 0xfe;
597      if ((myo>=0xe0) && (myo<=0xff)) return 0xfe;
554      if ((myo>=0x00) && (myo<=0x06) && (myo+0x01) & 1) return m_mc6845->status_r(space, myo-0x00);                     /* Video controller */
555      if ((myo>=0x01) && (myo<=0x07) && (myo & 1))      return m_mc6845->register_r(space, myo-0x01);
556      if ((myo>=0x08) && (myo<=0x0e) && (myo+0x01) & 1) return m_acia ? m_acia->status_r(space, myo-0x08) : 0xfe;       /* Serial controller */
557      if ((myo>=0x09) && (myo<=0x0f) && (myo & 1))      return m_acia ? m_acia->data_r(space, myo-0x09) : 0xfe;
558      if ((myo>=0x10) && (myo<=0x17))                   return 0xfe;                                                    /* Serial System Chip */
559      if ((myo>=0x18) && (myo<=0x1f))                   return m_upd7002 ? m_upd7002->read(space, myo-0x18) : 0xfe;     /* A to D converter */
560      if ((myo>=0x20) && (myo<=0x23))                   return 0xfe;                                                    /* VideoULA */
561      if ((myo>=0x24) && (myo<=0x27))                   return bbcm_wd177xl_read(space, myo - 0x24);                    /* 177x Control Latch */
562      if ((myo>=0x28) && (myo<=0x2f) && (m_wd1770))     return m_wd1770->read(space, myo-0x28);                         /* 1770 Controller */
563      if ((myo>=0x28) && (myo<=0x2f) && (m_wd1772))     return m_wd1772->read(space, myo-0x28);                         /* 1772 Controller */
564      if ((myo>=0x28) && (myo<=0x2f))                   return 0xfe;                                                    /* No Controller */
565      if ((myo>=0x30) && (myo<=0x33))                   return 0xfe;
566      if ((myo>=0x34) && (myo<=0x37))                   return bbcm_ACCCON_read(space, myo-0x34);                       /* ACCCON */
567      if ((myo>=0x38) && (myo<=0x3f))                   return 0xfe;                                                    /* NC ?? */
568      if ((myo>=0x40) && (myo<=0x5f))                   return m_via6522_0->read(space, myo-0x40);
569      if ((myo>=0x60) && (myo<=0x7f))                   return m_via6522_1 ? m_via6522_1->read(space, myo-0x60) : 0xfe;
570      if ((myo>=0x80) && (myo<=0x9f))                   return 0xfe;
571      if ((myo>=0xa0) && (myo<=0xbf))                   return m_adlc ? m_adlc->read(space, myo & 0x03) : 0xfe;
572      if ((myo>=0xc0) && (myo<=0xdf))                   return 0xfe;
573      if ((myo>=0xe0) && (myo<=0xff))                   return 0xfe;
598574   }
599
600575   return 0xfe;
601576}
602577
r249143r249144
607582   if ((offset>=0x200) && (offset<=0x2ff)) /* SHEILA */
608583   {
609584      myo=offset-0x200;
610      if ((myo>=0x00) && (myo<=0x07)) bbc_6845_w(space, myo-0x00, data);           /* Video Controller */
611      if ((myo>=0x08) && (myo<=0x0f))
612      {
613         if ((myo - 0x08) & 1)
614            m_acia->control_w(space, 0, data);
615         else
616            m_acia->data_w(space, 0, data);
617      }
618      if ((myo>=0x10) && (myo<=0x17)) bbc_SerialULA_w(space, myo-0x10, data);     /* Serial System Chip */
619      if ((myo>=0x18) && (myo<=0x1f)) m_upd7002->write(space, myo-0x18, data);    /* A to D converter */
620      if ((myo>=0x20) && (myo<=0x23)) bbc_videoULA_w(space, myo-0x20, data);      /* VideoULA */
621      if ((myo>=0x24) && (myo<=0x27)) bbcm_wd1770l_write(space, myo-0x24, data);  /* 1770 */
622      if ((myo>=0x28) && (myo<=0x2f)) bbcm_wd1770_write(space, myo-0x28, data);   /* disc control latch */
623      if ((myo>=0x30) && (myo<=0x33)) page_selectbm_w(space, myo-0x30, data);     /* page select */
624      if ((myo>=0x34) && (myo<=0x37)) bbcm_ACCCON_write(space, myo-0x34, data);   /* ACCCON */
625      //if ((myo>=0x38) && (myo<=0x3f))                                           /* NC ?? */
626      if ((myo>=0x40) && (myo<=0x5f)) m_via6522_0->write(space, myo-0x40, data);
627      if ((myo>=0x60) && (myo<=0x7f)) m_via6522_1->write(space, myo-0x60, data);
585      if ((myo>=0x00) && (myo<=0x06) && (myo+0x01) & 1) m_mc6845->address_w(space, myo-0x00, data);                     /* Video Controller */
586      if ((myo>=0x01) && (myo<=0x07) && (myo & 1))      m_mc6845->register_w(space, myo-0x01, data);
587      if ((myo>=0x08) && (myo<=0x0e) && (myo+0x01) & 1) if (m_acia) m_acia->control_w(space, myo-0x08, data);           /* Serial controller */
588      if ((myo>=0x09) && (myo<=0x0f) && (myo & 1))      if (m_acia) m_acia->data_w(space, myo-0x09, data);
589      if ((myo>=0x10) && (myo<=0x17))                   bbc_SerialULA_w(space, myo-0x10, data);                         /* Serial System Chip */
590      if ((myo>=0x18) && (myo<=0x1f) && (m_upd7002))    m_upd7002->write(space, myo-0x18, data);                        /* A to D converter */
591      if ((myo>=0x20) && (myo<=0x23))                   bbc_videoULA_w(space, myo-0x20, data);                          /* VideoULA */
592      if ((myo>=0x24) && (myo<=0x27) && (m_wd1770))     bbcm_wd1770l_write(space, myo-0x24, data);                      /* disc control latch */
593      if ((myo>=0x28) && (myo<=0x2f) && (m_wd1770))     m_wd1770->write(space, myo-0x28, data);                         /* 1770 Controller */
594      if ((myo>=0x24) && (myo<=0x27) && (m_wd1772))     bbcm_wd1772l_write(space, myo-0x24, data);                      /* disc control latch */
595      if ((myo>=0x28) && (myo<=0x2f) && (m_wd1772))     m_wd1772->write(space, myo-0x28, data);                         /* 1772 Controller */
596      if ((myo>=0x30) && (myo<=0x33))                   page_selectbm_w(space, myo-0x30, data);                         /* ROMSEL */
597      if ((myo>=0x34) && (myo<=0x37))                   bbcm_ACCCON_write(space, myo-0x34, data);                       /* ACCCON */
598      //if ((myo>=0x38) && (myo<=0x3f))                                                                                 /* NC ?? */
599      if ((myo>=0x40) && (myo<=0x5f))                   m_via6522_0->write(space, myo-0x40, data);
600      if ((myo>=0x60) && (myo<=0x7f) && (m_via6522_1))  m_via6522_1->write(space, myo-0x60, data);
628601      //if ((myo>=0x80) && (myo<=0x9f))
629      if ((myo>=0xa0) && (myo<=0xbf)) m_adlc->write(space, myo & 0x03, data);
602      if ((myo>=0xa0) && (myo<=0xbf) && (m_adlc))      m_adlc->write(space, myo & 0x03, data);
630603      //if ((myo>=0xc0) && (myo<=0xdf))
631604      //if ((myo>=0xe0) && (myo<=0xff))
632605   }
r249143r249144
665638normally at logic 1 with no button pressed and change to 0
666639when a button is pressed.
667640
668PB6 and PB7 inputs from the speech processor
669--------------------------------------------
641PB6 and PB7 inputs from the speech processor (model B and B+)
642-------------------------------------------------------------
670643PB6 is the speech processor 'ready' output and PB7 is from the
671644speech processor 'interrupt' output.
672645
646PB6 and PB7 outputs to Master CMOS RAM/RTC
647------------------------------------------
648PB6 operates the 146818 chip enable when set to '1'. PB7 operates
649the 146818 address strobe line.
650
673651CA1 input
674652---------
675653This is the vertical sync input from the 6845. CA1 is set up to
676654interrupt the 6502 every 20ms (50Hz) as a vertical sync from
677the video circuity is detected. The operation system changes
678the flash colours on the display in this interrupt time so that
679they maintain synchronisation with the rest of the picture.
655the video circuitry is detected. The operation system changes
656the display flash colours on this interrupt so that they occur
657during the screen blanking period.
680658----------------------------------------------------------------
681659This is required for a lot of time function within the machine
682660and must be triggered every 20ms. (Should check at some point
r249143r249144
830808/* This the BBC Masters Real Time Clock and NVRAM IC */
831809void bbc_state::MC146818_set(address_space &space)
832810{
833   logerror ("146181 WR=%d DS=%d AS=%d CE=%d \n",m_MC146818_WR,m_MC146818_DS,m_MC146818_AS,m_MC146818_CE);
834   mc146818_device *rtc = space.machine().device<mc146818_device>("rtc");
811   //logerror ("146181 WR=%d DS=%d AS=%d CE=%d \n",m_MC146818_WR,m_MC146818_DS,m_MC146818_AS,m_MC146818_CE);
812   //mc146818_device *rtc = space.machine().device<mc146818_device>("rtc");
835813
836814   // if chip enabled
837815   if (m_MC146818_CE)
r249143r249144
841819      {
842820         if (m_MC146818_WR)
843821         {
844            m_via_system_porta=rtc->read(space, 1);
822            m_via_system_porta = m_rtc->read(space, 1);
845823            //logerror("read 146818 data %d \n",m_via_system_porta);
846824         }
847825         else
848826         {
849            rtc->write(space, 1, m_via_system_porta);
827            m_rtc->write(space, 1, m_via_system_porta);
850828            //logerror("write 146818 data %d \n",m_via_system_porta);
851829         }
852830      }
r249143r249144
854832      // if address select is set then set the address in the 146818
855833      if (m_MC146818_AS)
856834      {
857         rtc->write(space, 0, m_via_system_porta);
835         m_rtc->write(space, 0, m_via_system_porta);
858836         //logerror("write 146818 address %d \n",m_via_system_porta);
859837      }
860838   }
r249143r249144
869847   if (m_b0_sound == 0)
870848   {
871849      //logerror("Doing an unsafe write to the sound chip %d \n",data);
872      m_sn->write(space, 0, m_via_system_porta);
850      if (m_sn) m_sn->write(space, 0, m_via_system_porta);
873851   }
852   if (m_b1_speech_read == 0)
853   {
854      if (m_tms) m_via_system_porta = m_tms->status_r(space, 0);
855      //logerror("Doing an unsafe read to the speech chip %d \n",m_via_system_porta);
856   }
857   if (m_b2_speech_write == 0)
858   {
859      //logerror("Doing an unsafe write to the speech chip %d \n",data);
860      if (m_tms) m_tms->data_w(space, 0, m_via_system_porta);
861   }
874862   if (m_b3_keyboard == 0)
875863   {
876864      //logerror("Doing an unsafe write to the keyboard %d \n",data);
877865      m_via_system_porta = bbc_keyboard(space, m_via_system_porta);
878866   }
879   if (m_Master) MC146818_set(space);
867   if (m_rtc) MC146818_set(space);
880868}
881869
882870
r249143r249144
899887         }
900888         break;
901889      case 1:
902         if (m_Master)
890         if (m_rtc && m_MC146818_WR == 0)
903891         {
904            if (m_MC146818_WR == 0)
905            {
906               /* BBC MASTER has NVRAM Here */
907               m_MC146818_WR = 1;
908               MC146818_set(space);
909            }
892            /* BBC Master has NVRAM Here */
893            m_MC146818_WR = 1;
894            MC146818_set(space);
910895         }
911896         else
912897         {
r249143r249144
914899            {
915900               /* VSP TMS 5220 */
916901               m_b1_speech_read = 1;
902               //logerror("Speech read select TRUE\n");
903               if (m_tms) m_tms->rsq_w(TRUE);
917904            }
918905         }
919906         break;
920907      case 2:
921         if (m_Master)
908         if (m_rtc && m_MC146818_DS == 0)
922909         {
923            if (m_MC146818_DS == 0)
924            {
925               /* BBC MASTER has NVRAM Here */
926               m_MC146818_DS = 1;
927               MC146818_set(space);
928            }
910            /* BBC Master has NVRAM Here */
911            m_MC146818_DS = 1;
912            MC146818_set(space);
929913         }
930914         else
931915         {
r249143r249144
933917            {
934918               /* VSP TMS 5220 */
935919               m_b2_speech_write = 1;
920               //logerror("Speech write select TRUE\n");
921               if (m_tms) m_tms->wsq_w(TRUE);
936922            }
937923         }
938924         break;
r249143r249144
980966         if (m_b0_sound == 1)
981967         {
982968            m_b0_sound = 0;
983            m_sn->write(space, 0, m_via_system_porta);
969            if (m_sn) m_sn->write(space, 0, m_via_system_porta);
984970         }
985971         break;
986972      case 1:
987         if (m_Master)
973         if (m_rtc && m_MC146818_WR == 1)
988974         {
989            if (m_MC146818_WR == 1)
990            {
991               /* BBC MASTER has NV RAM Here */
992               m_MC146818_WR = 0;
993               MC146818_set(space);
994            }
975            /* BBC Master has NVRAM Here */
976            m_MC146818_WR = 0;
977            MC146818_set(space);
995978         }
996979         else
997980         {
r249143r249144
999982            {
1000983               /* VSP TMS 5220 */
1001984               m_b1_speech_read = 0;
985               //logerror("Speech read select FALSE\n");
986               if (m_tms) m_tms->rsq_w(FALSE);
1002987            }
1003988         }
1004989         break;
1005990      case 2:
1006         if (m_Master)
991         if (m_rtc && m_MC146818_DS == 1)
1007992         {
1008            if (m_MC146818_DS == 1)
1009            {
1010               /* BBC MASTER has NV RAM Here */
1011               m_MC146818_DS = 0;
1012               MC146818_set(space);
1013            }
993            /* BBC Master has NVRAM Here */
994            m_MC146818_DS = 0;
995            MC146818_set(space);
1014996         }
1015997         else
1016998         {
r249143r249144
10181000            {
10191001               /* VSP TMS 5220 */
10201002               m_b2_speech_write = 0;
1003               //logerror("Speech write select FALSE\n");
1004               if (m_tms) m_tms->wsq_w(FALSE);
10211005            }
10221006         }
10231007         break;
r249143r249144
10261010         {
10271011            m_b3_keyboard = 0;
10281012            /* *** call keyboard enabled *** */
1029            m_via_system_porta=bbc_keyboard(space, m_via_system_porta);
1013            m_via_system_porta = bbc_keyboard(space, m_via_system_porta);
10301014         }
10311015         break;
10321016      case 4:
r249143r249144
10611045   }
10621046
10631047
1064   if (m_Master)
1048   if (m_rtc)
10651049   {
10661050      //set the Address Select
10671051      if (m_MC146818_AS != ((data>>7)&1))
r249143r249144
10861070   return m_via_system_porta;
10871071}
10881072
1089// D4 of portb is joystick fire button 1
1090// D5 of portb is joystick fire button 2
1091// D6 VSPINT
1092// D7 VSPRDY
10931073
1094/* this is the interupt and ready signal from the BBC B Speech processor */
1095static const int TMSint=1;
1096static const int TMSrdy=1;
1097
1098#ifdef UNUSED_FUNCTION
1099void bbc_state::bbc_TMSint(int status)
1100{
1101   TMSint=(!status)&1;
1102   TMSrdy=(!tms5220_readyq_r())&1;
1103   via_0_portb_w(0,(0xf | ioport("IN0")->read()|(TMSint<<6)|(TMSrdy<<7)));
1104}
1105#endif
1106
1107
11081074READ8_MEMBER(bbc_state::bbcb_via_system_read_portb)
11091075{
1110   //TMSint=(!tms5220_int_r())&1;
1111   //TMSrdy=(!tms5220_readyq_r())&1;
1112
1113   //logerror("SYSTEM read portb %d\n",0xf | input_port(machine, "IN0") | (TMSint<<6)|(TMSrdy<<7));
1114
1115   return (0xf | ioport("IN0")->read() | (TMSint<<6)|(TMSrdy<<7));
1076   // D4 of portb is joystick fire button 1
1077   // D5 of portb is joystick fire button 2
1078   // D6 VSPINT
1079   // D7 VSPRDY
1080   int TMSint = m_tms ? m_tms->intq_r() : 0;
1081   int TMSrdy = m_tms ? m_tms->readyq_r() : 0;
1082   //logerror("TMSint %d\n",TMSint);
1083   //logerror("TMSrdy %d\n",TMSrdy);
1084   return (0xf | ioport("IN0")->read() | (!TMSrdy << 7) | (!TMSint << 6));
11161085}
11171086
11181087
r249143r249144
11291098This means that they can only be operated as output lines.
11301099CA1 is pulled high by a 4K7 resistor. CA1 normally acts as an acknowledge
11311100line when a printer is used. CA2 is buffered so that it has become an open
1132collector output only. It usially acts as the printer strobe line.
1101collector output only. It usually acts as the printer strobe line.
11331102***********************************************************************/
11341103
11351104/* USER VIA 6522 port B is connected to the BBC user port */
r249143r249144
14301399   update_acia_rxd();
14311400   update_acia_dcd();
14321401   update_acia_cts();
1433   BBC_Cassette_motor(m_serproc_data & 0x80);
1402   if (m_cassette) BBC_Cassette_motor(m_serproc_data & 0x80);
14341403
14351404   // Set transmit clock rate
14361405   m_acia_clock->set_clock_scale( (double) 1 / serial_clocks[ data & 0x07 ] );
r249143r249144
14631432      {
14641433         /* I'll pulse it because if I used hold-line I'm not sure
14651434         it would clear - to be checked */
1466         m_maincpu->set_input_line(INPUT_LINE_NMI,PULSE_LINE);
1435         m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
14671436      }
14681437   }
14691438
r249143r249144
14711440}
14721441
14731442
1474READ8_MEMBER(bbc_state::bbc_i8271_read)
1475{
1476   int ret;
1477   logerror("i8271 read %d  ",offset);
1478   switch (offset)
1479   {
1480      case 0:
1481      case 1:
1482      case 2:
1483      case 3:
1484         /* 8271 registers */
1485         ret=m_i8271->read(space, offset);
1486         logerror("  %d\n",ret);
1487         break;
1488      case 4:
1489         ret=m_i8271->data_r(space, offset);
1490         logerror("  %d\n",ret);
1491         break;
1492      default:
1493         ret=0x0ff;
1494         break;
1495   }
1496   logerror("  void\n");
1497   return ret;
1498}
1499
1500WRITE8_MEMBER(bbc_state::bbc_i8271_write)
1501{
1502   logerror("i8271 write  %d  %d\n",offset,data);
1503
1504   switch (offset)
1505   {
1506      case 0:
1507      case 1:
1508      case 2:
1509      case 3:
1510         /* 8271 registers */
1511         m_i8271->write(space, offset, data);
1512         return;
1513      case 4:
1514         m_i8271->data_w(space, offset, data);
1515         return;
1516      default:
1517         break;
1518   }
1519}
1520
1521
1522
15231443/**************************************
15241444   WD1770 disc control function
15251445***************************************/
r249143r249144
15431463density select
15441464single density is as the 8271 disc format
15451465double density is as the 8271 disc format but with 16 sectors per track
1546
1547At some point we need to check the size of the disc image to work out if it is a single or double
1548density disc image
15491466*/
15501467
15511468
r249143r249144
15661483   int bbc_state;
15671484
15681485   /* if drq or irq is set, and interrupt is enabled */
1569   if ((m_wd177x_irq_state || m_wd177x_drq_state) && (m_1770_IntEnabled))
1486   if ((m_wd177x_irq_state || m_wd177x_drq_state) && (m_177x_IntEnabled))
15701487   {
15711488      /* int trigger */
15721489      bbc_state = 1;
r249143r249144
15761493      /* do not trigger int */
15771494      bbc_state = 0;
15781495   }
1579//printf("bbc_state %d prev %d\n", bbc_state, m_previous_wd177x_int_state);
15801496   /* nmi is edge triggered, and triggers when the state goes from clear->set.
15811497   Here we are checking this transition before triggering the nmi */
1582   if (bbc_state!=m_previous_wd177x_int_state)
1498   if (bbc_state != m_previous_wd177x_int_state)
15831499   {
15841500      if (bbc_state)
15851501      {
r249143r249144
15941510
15951511WRITE_LINE_MEMBER(bbc_state::bbc_wd177x_intrq_w)
15961512{
1597//printf("bbc_wd177x_intrq_w %d \n", state);
15981513   m_wd177x_irq_state = state;
15991514   bbc_update_fdq_int(state);
16001515}
r249143r249144
16051520   bbc_update_fdq_int(state);
16061521}
16071522
1608WRITE8_MEMBER(bbc_state::bbc_wd177x_status_w)
1523WRITE8_MEMBER(bbc_state::bbc_wd1770_status_w)
16091524{
1610   wd1770_t *fdc = machine().device<wd1770_t>("wd177x");
1611   floppy_image_device *floppy0 = machine().device<floppy_connector>("wd177x:0")->get_device();
1612   floppy_image_device *floppy1 = machine().device<floppy_connector>("wd177x:1")->get_device();
16131525   floppy_image_device *floppy = NULL;
16141526
16151527   m_drive_control = data;
1528   logerror("Drive control %d \n", data);
16161529
1530   // bit 5: reset
1531   if (!BIT(data, 5)) m_wd1770->reset();
1532
16171533   // bit 0, 1: drive select
1618   if (BIT(data, 0)) floppy = floppy0;
1619   if (BIT(data, 1)) floppy = floppy1;
1534   if (BIT(data, 0)) floppy = m_wd1770->subdevice<floppy_connector>("0")->get_device();
1535   if (BIT(data, 1)) floppy = m_wd1770->subdevice<floppy_connector>("1")->get_device();
1536   m_wd1770->set_floppy(floppy);
16201537
1621   fdc->set_floppy(floppy);
1622
16231538   // bit 2: side select
16241539   if (floppy)
16251540      floppy->ss_w(BIT(data, 2));
16261541
16271542   // bit 3: density
1628   fdc->dden_w(BIT(data, 3));
1543   m_wd1770->dden_w(BIT(data, 3));
16291544
16301545   // bit 4: interrupt enable
1631   m_1770_IntEnabled = !BIT(data, 4);
1546   m_177x_IntEnabled = !BIT(data, 4);
16321547}
16331548
1549/***************************************
1550BBC MASTER DISC SUPPORT
1551***************************************/
16341552
1635
1636READ8_MEMBER(bbc_state::bbc_wd1770_read)
1553READ8_MEMBER(bbc_state::bbcm_wd177xl_read)
16371554{
1638   int retval=0xff;
1639   wd1770_t *fdc = machine().device<wd1770_t>("wd177x");
1640   switch (offset)
1641   {
1642   case 4:
1643      retval=fdc->status_r(space, 0);
1644      break;
1645   case 5:
1646      retval=fdc->track_r(space, 0);
1647      break;
1648   case 6:
1649      retval=fdc->sector_r(space, 0);
1650      break;
1651   case 7:
1652      retval=fdc->data_r(space, 0);
1653      break;
1654   default:
1655      break;
1656   }
1657   //logerror("wd177x read: $%02X  $%02X\n", offset,retval);
1658
1659   return retval;
1555   return m_drive_control;
16601556}
16611557
1662WRITE8_MEMBER(bbc_state::bbc_wd1770_write)
1558WRITE8_MEMBER(bbc_state::bbcm_wd1770l_write)
16631559{
1664   wd1770_t *fdc = machine().device<wd1770_t>("wd177x");
1665   //logerror("wd177x write: $%02X  $%02X\n", offset,data);
1666   switch (offset)
1667   {
1668   case 0:
1669      bbc_wd177x_status_w(space, 0, data);
1670      break;
1671   case 4:
1672      fdc->cmd_w(space, 0, data);
1673      break;
1674   case 5:
1675      fdc->track_w(space, 0, data);
1676      break;
1677   case 6:
1678      fdc->sector_w(space, 0, data);
1679      break;
1680   case 7:
1681      fdc->data_w(space, 0, data);
1682      break;
1683   default:
1684      break;
1685   }
1686}
1687
1688
1689/*********************************************
1690OPUS CHALLENGER MEMORY MAP
1691        Read                        Write
1692
1693&FCF8   1770 Status register        1770 command register
1694&FCF9               1770 track register
1695&FCFA               1770 sector register
1696&FCFB               1770 data register
1697&FCFC                               1770 drive control
1698
1699
1700drive control register bits
17010   select side 0= side 0   1= side 1
17021   select drive 0
17032   select drive 1
17043   ?unused?
17054   ?Always Set
17065   Density Select 0=double, 1=single
17076   ?unused?
17087   ?unused?
1709
1710The RAM is accessible through JIM (page &FD). One page is visible in JIM at a time.
1711The selected page is controlled by the two paging registers:
1712
1713&FCFE       Paging register MSB
1714&FCFF       Paging register LSB
1715
1716256K model has 1024 pages &000 to &3ff
1717512K model has 2048 pages &000 to &7ff
1718
1719AM_RANGE(0xfc00, 0xfdff) AM_READWRITE(bbc_opus_read     , bbc_opus_write    )
1720
1721
1722**********************************************/
1723
1724
1725WRITE8_MEMBER(bbc_state::bbc_opus_status_w)
1726{
1727   wd1770_t *fdc = machine().device<wd1770_t>("wd177x");
1728   floppy_image_device *floppy0 = machine().device<floppy_connector>("wd177x:0")->get_device();
1729   floppy_image_device *floppy1 = machine().device<floppy_connector>("wd177x:1")->get_device();
17301560   floppy_image_device *floppy = NULL;
17311561
17321562   m_drive_control = data;
1563   //logerror("Drive control %d \n", data);
17331564
1734   // bit 1, 2: drive select
1735   if (BIT(data, 1)) floppy = floppy0;
1736   if (BIT(data, 2)) floppy = floppy1;
1565   // bit 2: reset
1566   if (!BIT(data, 5)) m_wd1770->reset();
17371567
1738   fdc->set_floppy(floppy);
1568   // bit 0, 1, 3: drive select
1569   if (BIT(data, 0)) floppy = m_wd1770->subdevice<floppy_connector>("0")->get_device();
1570   if (BIT(data, 1)) floppy = m_wd1770->subdevice<floppy_connector>("1")->get_device();
1571   if (BIT(data, 3)) floppy = m_wd1770->subdevice<floppy_connector>("2")->get_device();
1572   m_wd1770->set_floppy(floppy);
17391573
1740   // bit 0: side select
1574   // bit 4: side select
17411575   if (floppy)
1742      floppy->ss_w(BIT(data, 0));
1576      floppy->ss_w(BIT(data, 4));
17431577
17441578   // bit 5: density
1745   fdc->dden_w(BIT(data, 5));
1579   m_wd1770->dden_w(BIT(data, 5));
17461580
1747   // bit 4: interrupt enable
1748   m_1770_IntEnabled = BIT(data, 4);
1581   m_177x_IntEnabled = 1;
17491582}
17501583
1751READ8_MEMBER(bbc_state::bbc_opus_read)
1584WRITE8_MEMBER(bbc_state::bbcm_wd1772l_write)
17521585{
1753   wd1770_t *fdc = machine().device<wd1770_t>("wd177x");
1754   //logerror("wd177x read: $%02X\n", offset);
1755
1756   if (m_DFSType==6)
1757   {
1758      if (offset<0x100)
1759      {
1760         switch (offset)
1761         {
1762            case 0xf8:
1763               return fdc->status_r(space, 0);
1764            case 0xf9:
1765               return fdc->track_r(space, 0);
1766            case 0xfa:
1767               return fdc->sector_r(space, 0);
1768            case 0xfb:
1769               return fdc->data_r(space, 0);
1770         }
1771      }
1772      else
1773      {
1774         return memregion("disks")->base()[offset + (m_opusbank << 8)];
1775      }
1776   }
1777   return 0xff;
1778}
1779
1780WRITE8_MEMBER(bbc_state::bbc_opus_write)
1781{
1782   wd1770_t *fdc = machine().device<wd1770_t>("wd177x");
1783   //logerror("wd177x write: $%02X  $%02X\n", offset,data);
1784
1785   if (m_DFSType==6)
1786   {
1787      if (offset<0x100)
1788      {
1789         switch (offset)
1790         {
1791            case 0xf8:
1792               fdc->cmd_w(space, 0, data);
1793               break;
1794            case 0xf9:
1795               fdc->track_w(space, 0, data);
1796               break;
1797            case 0xfa:
1798               fdc->sector_w(space, 0, data);
1799               break;
1800            case 0xfb:
1801               fdc->data_w(space, 0, data);
1802               break;
1803            case 0xfc:
1804               bbc_opus_status_w(space, 0,data);
1805               break;
1806            case 0xfe:
1807               m_opusbank=(m_opusbank & 0xff) | (data<<8);
1808               break;
1809            case 0xff:
1810               m_opusbank=(m_opusbank & 0xff00) | data;
1811               break;
1812         }
1813      }
1814      else
1815      {
1816         memregion("disks")->base()[offset + (m_opusbank << 8)] = data;
1817      }
1818   }
1819}
1820
1821
1822/***************************************
1823BBC MASTER DISC SUPPORT
1824***************************************/
1825
1826
1827READ8_MEMBER(bbc_state::bbcm_wd1770_read)
1828{
1829   int retval=0xff;
1830   wd1770_t *fdc = machine().device<wd1770_t>("wd177x");
1831   switch (offset)
1832   {
1833   case 0:
1834      retval=fdc->status_r(space, 0);
1835      break;
1836   case 1:
1837      retval=fdc->track_r(space, 0);
1838      break;
1839   case 2:
1840      retval=fdc->sector_r(space, 0);
1841      break;
1842   case 3:
1843      retval=fdc->data_r(space, 0);
1844      break;
1845   default:
1846      break;
1847   }
1848   return retval;
1849}
1850
1851
1852WRITE8_MEMBER(bbc_state::bbcm_wd1770_write)
1853{
1854   wd1770_t *fdc = machine().device<wd1770_t>("wd177x");
1855   //logerror("wd177x write: $%02X  $%02X\n", offset,data);
1856   switch (offset)
1857   {
1858   case 0:
1859      fdc->cmd_w(space, 0, data);
1860      break;
1861   case 1:
1862      fdc->track_w(space, 0, data);
1863      break;
1864   case 2:
1865      fdc->sector_w(space, 0, data);
1866      break;
1867   case 3:
1868      fdc->data_w(space, 0, data);
1869      break;
1870   default:
1871      break;
1872   }
1873}
1874
1875
1876READ8_MEMBER(bbc_state::bbcm_wd1770l_read)
1877{
1878   return m_drive_control;
1879}
1880
1881WRITE8_MEMBER(bbc_state::bbcm_wd1770l_write)
1882{
1883   wd1770_t *fdc = machine().device<wd1770_t>("wd177x");
1884   floppy_image_device *floppy0 = machine().device<floppy_connector>("wd177x:0")->get_device();
1885   floppy_image_device *floppy1 = machine().device<floppy_connector>("wd177x:1")->get_device();
18861586   floppy_image_device *floppy = NULL;
18871587
18881588   m_drive_control = data;
1589   //logerror("Drive control %d \n", data);
18891590
1890   // bit 0, 1: drive select
1891   if (BIT(data, 0)) floppy = floppy0;
1892   if (BIT(data, 1)) floppy = floppy1;
1591   // bit 2: reset
1592   if (!BIT(data, 5)) m_wd1772->reset();
18931593
1594   // bit 0, 1, 3: drive select
1595   if (BIT(data, 0)) floppy = m_wd1772->subdevice<floppy_connector>("0")->get_device();
1596   if (BIT(data, 1)) floppy = m_wd1772->subdevice<floppy_connector>("1")->get_device();
1597   if (BIT(data, 3)) floppy = m_wd1772->subdevice<floppy_connector>("2")->get_device();
1598   m_wd1772->set_floppy(floppy);
1599
18941600   // bit 4: side select
18951601   if (floppy)
18961602      floppy->ss_w(BIT(data, 4));
18971603
18981604   // bit 5: density
1899   fdc->dden_w(BIT(data, 5));
1605   m_wd1772->dden_w(BIT(data, 5));
19001606
1901//  m_1770_IntEnabled=(((data>>4) & 0x01)==0);
1902   m_1770_IntEnabled=1;
1607   m_177x_IntEnabled = 1;
19031608}
19041609
1905
19061610/**************************************
1907DFS Hardware mapping for different Disc Controller types
1908***************************************/
1909
1910READ8_MEMBER(bbc_state::bbc_disc_r)
1911{
1912   switch (m_DFSType){
1913   /* case 0 to 3 are all standard 8271 interfaces */
1914   case 0: case 1: case 2: case 3:
1915      return bbc_i8271_read(space, offset);
1916   /* case 4 is the acorn 1770 interface */
1917   case 4:
1918      return bbc_wd1770_read(space, offset);
1919   /* case 5 is the watford 1770 interface */
1920   case 5:
1921      return bbc_wd1770_read(space, offset);
1922   /* case 6 is the Opus challenger interface */
1923   case 6:
1924      /* not connected here, opus drive is connected via the 1MHz Bus */
1925      break;
1926   /* case 7 in no disc controller */
1927   case 7:
1928      break;
1929   }
1930   return 0x0ff;
1931}
1932
1933WRITE8_MEMBER(bbc_state::bbc_disc_w)
1934{
1935   switch (m_DFSType){
1936   /* case 0 to 3 are all standard 8271 interfaces */
1937   case 0: case 1: case 2: case 3:
1938      bbc_i8271_write(space, offset,data);
1939      break;
1940   /* case 4 is the acorn 1770 interface */
1941   case 4:
1942      bbc_wd1770_write(space, offset,data);
1943      break;
1944   /* case 5 is the watford 1770 interface */
1945   case 5:
1946      bbc_wd1770_write(space, offset,data);
1947      break;
1948   /* case 6 is the Opus challenger interface */
1949   case 6:
1950      /* not connected here, opus drive is connected via the 1MHz Bus */
1951      break;
1952   /* case 7 in no disc controller */
1953   case 7:
1954      break;
1955   }
1956}
1957
1958
1959
1960/**************************************
19611611   BBC B Rom loading functions
19621612***************************************/
19631613
r249143r249144
20231673
20241674DRIVER_INIT_MEMBER(bbc_state,bbc)
20251675{
2026   m_Master=0;
20271676   m_rxd_cass = 0;
20281677   m_nr_high_tones = 0;
20291678   m_serproc_data = 0;
r249143r249144
20371686   m_via6522_0->write_cb2(1);
20381687}
20391688
2040DRIVER_INIT_MEMBER(bbc_state,bbcm)
2041{
2042   m_Master=1;
2043   m_rxd_cass = 0;
2044   m_nr_high_tones = 0;
2045   m_serproc_data = 0;
2046   m_cass_out_enabled = 0;
2047   m_tape_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(bbc_state::bbc_tape_timer_cb),this));
2048
2049   /* vertical sync pulse from video circuit */
2050   m_via6522_0->write_ca1(1);
2051
2052   /* light pen strobe detect (not emulated) */
2053   m_via6522_0->write_cb2(1);
2054}
2055
20561689// setup pointers for optional EPROMs
20571690void bbc_state::bbc_setup_banks(memory_bank *membank, int banks, UINT32 shift, UINT32 size)
20581691{
r249143r249144
20761709   else
20771710      eprom[3] = m_region_opt->base() + 0xc000 + shift;
20781711
2079   membank->configure_entries(0, 1,  eprom[0], size);
2080   membank->configure_entries(1, 1,  eprom[1], size);
2081   membank->configure_entries(2, 1,  eprom[2], size);
2082   membank->configure_entries(3, 1,  eprom[3], size);
1712   membank->configure_entries(0, 1, eprom[0], size);
1713   membank->configure_entries(1, 1, eprom[1], size);
1714   membank->configure_entries(2, 1, eprom[2], size);
1715   membank->configure_entries(3, 1, eprom[3], size);
20831716
20841717   if (banks > 4)
20851718   {
r249143r249144
21021735   else
21031736      eprom[1] = m_region_opt->base() + 0x8000 + shift;
21041737
2105   membank->configure_entries(0, 1,  eprom[0], size);
2106   membank->configure_entries(1, 1,  eprom[0] + 0x4000, size);
2107   membank->configure_entries(2, 1,  eprom[1], size);
2108   membank->configure_entries(3, 1,  eprom[1] + 0x4000, size);
1738   membank->configure_entries(0, 1, eprom[0], size);
1739   membank->configure_entries(1, 1, eprom[0] + 0x4000, size);
1740   membank->configure_entries(2, 1, eprom[1], size);
1741   membank->configure_entries(3, 1, eprom[1] + 0x4000, size);
21091742
21101743   if (banks > 4)
21111744   {
r249143r249144
21491782   m_previous_i8271_int_state=0;
21501783   m_previous_wd177x_int_state=1;
21511784   bbc_setup_banks(m_bank4, 16, 0, 0x4000);
2152   if (m_region_dfs)
2153      m_bank4->configure_entries(16, 8, m_region_dfs->base(), 0x4000);    // additional bank for paged ram
21541785}
21551786
21561787MACHINE_RESET_MEMBER(bbc_state, bbcb)
21571788{
21581789   UINT8 *RAM = m_region_maincpu->base();
2159   m_DFSType=    (ioport("BBCCONFIG")->read() >> 0) & 0x07;
1790   m_Speech    = (ioport("BBCCONFIG")->read() >> 0) & 0x01;
21601791   m_SWRAMtype = (ioport("BBCCONFIG")->read() >> 3) & 0x03;
21611792   m_bank1->set_base(RAM);
21621793   m_bank3->set_base(RAM + 0x4000);
r249143r249144
21661797   m_bank7->set_base(m_region_os->base());  /* bank 7 points at the OS rom  from c000 to ffff */
21671798
21681799   bbcb_IC32_initialise(this);
2169
2170   m_opusbank = 0;
21711800}
21721801
21731802
r249143r249144
21841813
21851814MACHINE_RESET_MEMBER(bbc_state, bbcbp)
21861815{
1816   m_Speech = 1;
21871817   m_bank1->set_base(m_region_maincpu->base());
21881818   m_bank2->set_base(m_region_maincpu->base() + 0x03000);  /* bank 2 screen/shadow ram     from 3000 to 7fff */
21891819   m_bank4->set_entry(0);
21901820   m_bank6->set_entry(0);
2191   m_bank7->set_base(m_region_os->base());    /* bank 7 points at the OS rom  from c000 to ffff */
1821   m_bank7->set_base(m_region_os->base());                 /* bank 7 points at the OS rom  from c000 to ffff */
21921822
21931823   bbcb_IC32_initialise(this);
21941824
r249143r249144
22171847   m_bank2->set_base(m_region_maincpu->base() + 0x3000);  /* bank 2 screen/shadow ram     from 3000 to 7fff */
22181848   m_bank4->set_entry(0);
22191849   m_bank5->set_entry(0);
2220   m_bank7->set_base(m_region_os->base());   /* bank 6 OS rom of RAM         from c000 to dfff */
1850   m_bank7->set_base(m_region_os->base());                /* bank 6 OS rom of RAM         from c000 to dfff */
22211851
22221852   bbcb_IC32_initialise(this);
22231853
trunk/src/mess/video/bbc.c
r249143r249144
9999   this is used by the palette lookup in the video ULA */
100100void bbc_state::set_pixel_lookup()
101101{
102   int i;
103   for (i=0; i<256; i++)
102   for (int i=0; i<256; i++)
104103   {
105104      m_pixel_bits[i] = (((i>>7)&1)<<3) | (((i>>5)&1)<<2) | (((i>>3)&1)<<1) | (((i>>1)&1)<<0);
106105   }
r249143r249144
254253   m_trom->dew_w(state);
255254}
256255
257/************************************************************************
258 * memory interface to BBC's 6845
259 ************************************************************************/
260256
261WRITE8_MEMBER(bbc_state::bbc_6845_w)
262{
263   switch(offset & 1)
264   {
265      case 0 :
266         m_mc6845->address_w(space,0,data);
267         break;
268      case 1 :
269         m_mc6845->register_w(space,0,data);
270         break;
271   }
272   return;
273}
274
275READ8_MEMBER(bbc_state::bbc_6845_r)
276{
277   switch (offset&1)
278   {
279      case 0: return m_mc6845->status_r(space,0);
280      case 1: return m_mc6845->register_r(space,0);
281   }
282   return 0;
283}
284
285
286
287
288
289257/**** BBC B+ Shadow Ram change ****/
290258
291259void bbc_state::bbcbp_setvideoshadow(int vdusel)
r249143r249144
319287
320288VIDEO_START_MEMBER(bbc_state,bbca)
321289{
322   common_init(16);
290   common_init(m_ram->size()/1024);
323291}
324292
325293VIDEO_START_MEMBER(bbc_state,bbcb)


Previous 199869 Revisions Next


© 1997-2024 The MAME Team