Previous 199869 Revisions Next

r20133 Tuesday 8th January, 2013 at 17:57:56 UTC by Curt Coder
Added FM encoding support to upd765_dsk. [Curt Coder]

(MESS) bw2: Fixed floppy loading. [Curt Coder]
[src/emu/machine]upd765.c wd_fdc.c
[src/lib/formats]a5105_dsk.c apollo_dsk.c bw12_dsk.c bw2_dsk.c iq151_dsk.c kc85_dsk.c m5_dsk.c mm_dsk.c nanos_dsk.c pc_dsk.c pyldin_dsk.c sf7000_dsk.c upd765_dsk.c upd765_dsk.h xdf_dsk.c
[src/mess/drivers]bw12.c bw2.c
[src/mess/includes]bw12.h
[src/mess/machine]comx_fd.c

trunk/src/emu/machine/upd765.c
r20132r20133
385385      if(cmd == C_INVALID) {
386386         logerror("%s: Invalid on %02x\n", tag(), command[0]);
387387         main_phase = PHASE_RESULT;
388         result[0] = 0x80;
388         result[0] = ST0_UNK;
389389         result_pos = 1;
390390         return;
391391      }
trunk/src/emu/machine/wd_fdc.c
r20132r20133
13831383            cur_live.state = READ_HEADER_BLOCK_HEADER;
13841384         }
13851385
1386         if(dden && (cur_live.shift_reg == 0xf57e || cur_live.shift_reg == 0xf57e)) {
1386         if(dden && (cur_live.shift_reg == 0xf57e || cur_live.shift_reg == 0xf57f)) {
13871387            cur_live.crc = cur_live.shift_reg == 0xf57e ? 0xef21 : 0xff00;
13881388            cur_live.data_separator_phase = false;
13891389            cur_live.bit_counter = 0;
r20132r20133
18601860               cur_live.byte_counter = 0;
18611861               cur_live.data_bit_context = cur_live.data_reg & 1;
18621862               pll_start_writing(cur_live.tm);
1863               if(dden)
1864                  live_write_fm(0x00);
1863               live_write_fm(0x00);
18651864            }
18661865            break;
18671866
r20132r20133
19711970void wd_fdc_digital_t::pll_reset(bool fm, attotime when)
19721971{
19731972   cur_pll.reset(when);
1974   cur_pll.set_clock(clocks_to_attotime(1));
1973   cur_pll.set_clock(clocks_to_attotime(fm ? 2 : 1)); // HACK
19751974}
19761975
19771976void wd_fdc_digital_t::pll_start_writing(attotime tm)
trunk/src/lib/formats/xdf_dsk.c
r20132r20133
6464// Unverified gap sizes
6565const xdf_format::format xdf_format::formats[] = {
6666   {
67      floppy_image::FF_525, floppy_image::DSHD,
67      floppy_image::FF_525, floppy_image::DSHD, floppy_image::MFM,
6868      1200, // 1us, 360rpm
6969      8, 77, 2,
7070      1024, {},
trunk/src/lib/formats/upd765_dsk.c
r20132r20133
106106   }
107107}
108108
109bool upd765_format::load(io_generic *io, UINT32 form_factor, floppy_image *image)
109floppy_image_format_t::desc_e* upd765_format::get_desc_fm(const format &f, int &current_size, int &end_gap_index)
110110{
111   int type = find_size(io, form_factor);
112   if(type == -1)
113      return false;
111   static floppy_image_format_t::desc_e desc[29] = {
112      /* 00 */ { FM, 0xff, f.gap_4a },
113      /* 01 */ { FM, 0x00, 6 },
114      /* 02 */ { RAW, 0xf77a, 1 },
115      /* 03 */ { FM, 0xff, f.gap_1 },
116      /* 04 */ { SECTOR_LOOP_START, 0, f.sector_count-1 },
117      /* 05 */ {   FM, 0x00, 12 },
118      /* 06 */ {   CRC_CCITT_FM_START, 1 },
119      /* 07 */ {     RAW, 0xf57e, 1 },
120      /* 08 */ {     TRACK_ID_FM },
121      /* 09 */ {     HEAD_ID_FM },
122      /* 10 */ {     SECTOR_ID_FM },
123      /* 11 */ {     SIZE_ID_FM },
124      /* 12 */ {   CRC_END, 1 },
125      /* 13 */ {   CRC, 1 },
126      /* 14 */ {   FM, 0xff, f.gap_2 },
127      /* 15 */ {   FM, 0x00, 6 },
128      /* 16 */ {   CRC_CCITT_FM_START, 2 },
129      /* 17 */ {     RAW, 0xf56f, 1 },
130      /* 18 */ {     SECTOR_DATA_FM, -1 },
131      /* 19 */ {   CRC_END, 2 },
132      /* 20 */ {   CRC, 2 },
133      /* 21 */ {   FM, 0xff, f.gap_3 },
134      /* 22 */ { SECTOR_LOOP_END },
135      /* 23 */ { FM, 0xff, 0 },
136      /* 24 */ { RAWBITS, 0xffff, 0 },
137      /* 25 */ { END }
138   };
114139
115   const format &f = formats[type];
140   current_size = (f.gap_4a+6+1+f.gap_1)*16;
141   if(f.sector_base_size)
142      current_size += f.sector_base_size * f.sector_count * 16;
143   else {
144      for(int j=0; j != f.sector_count; j++)
145         current_size += f.per_sector_size[j] * 16;
146   }
147   current_size += (12+1+4+2+f.gap_2+6+1+2+f.gap_3) * f.sector_count * 16;
116148
117   floppy_image_format_t::desc_e desc[] = {
149   end_gap_index = 23;
150
151   return desc;
152}
153
154floppy_image_format_t::desc_e* upd765_format::get_desc_mfm(const format &f, int &current_size, int &end_gap_index)
155{
156   static floppy_image_format_t::desc_e desc[29] = {
118157      /* 00 */ { MFM, 0x4e, f.gap_4a },
119158      /* 01 */ { MFM, 0x00, 12 },
120159      /* 02 */ { RAW, 0x5224, 3 },
r20132r20133
146185      /* 28 */ { END }
147186   };
148187
149   int current_size = (f.gap_4a+12+3+1+f.gap_1)*16;
188   current_size = (f.gap_4a+12+3+1+f.gap_1)*16;
150189   if(f.sector_base_size)
151190      current_size += f.sector_base_size * f.sector_count * 16;
152191   else {
r20132r20133
155194   }
156195   current_size += (12+3+1+4+2+f.gap_2+12+3+1+2+f.gap_3) * f.sector_count * 16;
157196
197   end_gap_index = 26;
198
199   return desc;
200}
201
202bool upd765_format::load(io_generic *io, UINT32 form_factor, floppy_image *image)
203{
204   int type = find_size(io, form_factor);
205   if(type == -1)
206      return false;
207
208   const format &f = formats[type];
209   floppy_image_format_t::desc_e *desc;
210   int current_size;
211   int end_gap_index;
212
213   switch (f.encoding)
214   {
215   case floppy_image::FM:
216      desc = get_desc_fm(f, current_size, end_gap_index);
217      break;
218   case floppy_image::MFM:
219   default:
220      desc = get_desc_mfm(f, current_size, end_gap_index);
221      break;
222   }
223
158224   int total_size = 200000000/f.cell_size;
159225   int remaining_size = total_size - current_size;
160226   if(remaining_size < 0)
161227      throw emu_fatalerror("upd765_format: Incorrect track layout, max_size=%d, current_size=%d", total_size, current_size);
162228
163229   // Fixup the end gap
164   desc[26].p2 = remaining_size / 16;
165   desc[27].p2 = remaining_size & 15;
166   desc[27].p1 >>= 16-(remaining_size & 15);
230   desc[end_gap_index].p2 = remaining_size / 16;
231   desc[end_gap_index + 1].p2 = remaining_size & 15;
232   desc[end_gap_index + 1].p1 >>= 16-(remaining_size & 15);
167233
168234   int track_size = compute_track_size(f);
169235
r20132r20133
312378
313379   // Extract the sectors
314380   generate_bitstream_from_track(0, 0, formats[candidates[0]].cell_size, bitstream, track_size, image);
315   extract_sectors_from_bitstream_mfm_pc(bitstream, track_size, sectors, sectdata, sizeof(sectdata));
316381
382   switch (formats[candidates[0]].encoding)
383   {
384   case floppy_image::FM:
385      extract_sectors_from_bitstream_fm_pc(bitstream, track_size, sectors, sectdata, sizeof(sectdata));
386      break;
387   case floppy_image::MFM:
388      extract_sectors_from_bitstream_mfm_pc(bitstream, track_size, sectors, sectdata, sizeof(sectdata));
389      break;
390   }
391
317392   // Check compatibility with every candidate, copy in-place
318393   int *ok_cands = candidates;
319394   for(int i=0; i != candidates_count; i++) {
r20132r20133
357432
358433   // Extract the sectors
359434   generate_bitstream_from_track(track, head, f.cell_size, bitstream, track_size, image);
360   extract_sectors_from_bitstream_mfm_pc(bitstream, track_size, sectors, sectdata, sizeof(sectdata));
361435
436   switch (f.encoding)
437   {
438   case floppy_image::FM:
439      extract_sectors_from_bitstream_fm_pc(bitstream, track_size, sectors, sectdata, sizeof(sectdata));
440      break;
441   case floppy_image::MFM:
442      extract_sectors_from_bitstream_mfm_pc(bitstream, track_size, sectors, sectdata, sizeof(sectdata));
443      break;
444   }
445
362446   for(int i=0; i<f.sector_count; i++) {
363447      desc_s &ds = sdesc[i];
364448      desc_xs &xs = sectors[ds.sector_id];
trunk/src/lib/formats/upd765_dsk.h
r20132r20133
1717   struct format {
1818      UINT32 form_factor;      // See floppy_image for possible values
1919      UINT32 variant;          // See floppy_image for possible values
20      UINT32 encoding;       // See floppy_image for possible values
2021
2122      int cell_size;           // See floppy_image_format_t for details
2223      int sector_count;
r20132r20133
4243
4344private:
4445   const format *formats;
46   floppy_image_format_t::desc_e* get_desc_fm(const format &f, int &current_size, int &end_gap_index);
47   floppy_image_format_t::desc_e* get_desc_mfm(const format &f, int &current_size, int &end_gap_index);
4548   int find_size(io_generic *io, UINT32 form_factor);
4649   int compute_track_size(const format &f) const;
4750   void build_sector_description(const format &d, UINT8 *sectdata, desc_s *sectors) const;
trunk/src/lib/formats/kc85_dsk.c
r20132r20133
6565// 640-800K on HD which handles 1.2M, really?
6666const kc85_format::format kc85_format::formats[] = {
6767   {
68      floppy_image::FF_525, floppy_image::DSHD,
68      floppy_image::FF_525, floppy_image::DSHD, floppy_image::MFM,
6969      1200, // 1us, 360rpm
7070      5, 80, 2,
7171      1024, {},
r20132r20133
7373      80, 50, 22, 80
7474   },
7575   {
76      floppy_image::FF_525, floppy_image::DSHD,
76      floppy_image::FF_525, floppy_image::DSHD, floppy_image::MFM,
7777      1200, // 1us, 360rpm
7878      9, 80, 2,
7979      512, {},
r20132r20133
8181      80, 50, 22, 80
8282   },
8383   {
84      floppy_image::FF_525, floppy_image::DSHD,
84      floppy_image::FF_525, floppy_image::DSHD, floppy_image::MFM,
8585      1200, // 1us, 360rpm
8686      16, 80, 2,
8787      256, {},
trunk/src/lib/formats/apollo_dsk.c
r20132r20133
6464// Unverified gap sizes
6565const apollo_format::format apollo_format::formats[] = {
6666   {
67      floppy_image::FF_525, floppy_image::DSHD,
67      floppy_image::FF_525, floppy_image::DSHD, floppy_image::MFM,
6868      1200, // 1us, 360rpm
6969      8, 77, 2,
7070      1024, {},
trunk/src/lib/formats/bw2_dsk.c
r20132r20133
6363
6464const bw2_format::format bw2_format::formats[] = {
6565   {   // 340K 3 1/2 inch double density
66      floppy_image::FF_35, floppy_image::SSDD,
66      floppy_image::FF_35, floppy_image::SSDD, floppy_image::MFM,
6767      2000, 17, 80, 1, 256, {}, 0, {}, 80, 20, 22, 14
6868   },
6969   {   // 360K 3 1/2 inch double density
70      floppy_image::FF_35, floppy_image::SSDD,
70      floppy_image::FF_35, floppy_image::SSDD, floppy_image::MFM,
7171      2000, 18, 80, 1, 256, {}, 0, {}, 80, 20, 22, 14
7272   },
7373   {}
trunk/src/lib/formats/pyldin_dsk.c
r20132r20133
6565// 720K on HD which handles 1.2M, really?
6666const pyldin_format::format pyldin_format::formats[] = {
6767   {
68      floppy_image::FF_525, floppy_image::DSHD,
68      floppy_image::FF_525, floppy_image::DSHD, floppy_image::MFM,
6969      1200, // 1us, 360rpm
7070      9, 80, 2,
7171      512, {},
trunk/src/lib/formats/m5_dsk.c
r20132r20133
6464// Unverified gap sizes
6565const m5_format::format m5_format::formats[] = {
6666   {
67      floppy_image::FF_525, floppy_image::DSDD,
67      floppy_image::FF_525, floppy_image::DSDD, floppy_image::MFM,
6868      2000, // 2us, 300rpm
6969      18, 40, 2,
7070      256, {},
trunk/src/lib/formats/a5105_dsk.c
r20132r20133
6464// Unverified gap sizes
6565const a5105_format::format a5105_format::formats[] = {
6666   {
67      floppy_image::FF_525, floppy_image::DSQD,
67      floppy_image::FF_525, floppy_image::DSQD, floppy_image::MFM,
6868      2000, // 2us, 300rpm
6969      5, 80, 2,
7070      1024, {},
trunk/src/lib/formats/bw12_dsk.c
r20132r20133
6464// Unverified gap sizes
6565const bw12_format::format bw12_format::formats[] = {
6666   { // 180KB BW 12
67      floppy_image::FF_525, floppy_image::SSDD,
67      floppy_image::FF_525, floppy_image::SSDD, floppy_image::MFM,
6868      2000, // 2us, 300rpm
6969      18, 40, 1,
7070      256, {},
r20132r20133
7272      80, 50, 22, 80
7373   },
7474   { // 360KB BW 12
75      floppy_image::FF_525, floppy_image::DSDD,
75      floppy_image::FF_525, floppy_image::DSDD, floppy_image::MFM,
7676      2000, // 2us, 300rpm
7777      18, 40, 2,
7878      256, {},
r20132r20133
8080      80, 50, 22, 80
8181   },
8282   { // SVI-328
83      floppy_image::FF_525, floppy_image::SSDD,
83      floppy_image::FF_525, floppy_image::SSDD, floppy_image::MFM,
8484      2000, // 2us, 300rpm
8585      17, 40, 1,
8686      256, {},
r20132r20133
8888      80, 50, 22, 80
8989   },
9090   { // SVI-328
91      floppy_image::FF_525, floppy_image::DSDD,
91      floppy_image::FF_525, floppy_image::DSDD, floppy_image::MFM,
9292      2000, // 2us, 300rpm
9393      17, 40, 2,
9494      256, {},
r20132r20133
9696      80, 50, 22, 80
9797   },
9898   { // Kaypro II
99      floppy_image::FF_525, floppy_image::SSDD,
99      floppy_image::FF_525, floppy_image::SSDD, floppy_image::MFM,
100100      2000, // 2us, 300rpm
101101      10, 40, 1,
102102      512, {},
trunk/src/lib/formats/iq151_dsk.c
r20132r20133
6464// Unverified gap sizes.  May be FM.
6565const iq151_format::format iq151_format::formats[] = {
6666   {
67      floppy_image::FF_8, floppy_image::SSSD,
67      floppy_image::FF_8, floppy_image::SSSD, floppy_image::MFM,
6868      2000, // maybe
6969      26, 77, 1,
7070      128, {},
trunk/src/lib/formats/mm_dsk.c
r20132r20133
8383// Unverified gap sizes
8484const mm1_format::format mm1_format::formats[] = {
8585   {
86      floppy_image::FF_525, floppy_image::DSQD,
86      floppy_image::FF_525, floppy_image::DSQD, floppy_image::MFM,
8787      2000, // 2us, 300rpm
8888      8, 80, 2,
8989      512, {},
r20132r20133
9696// Unverified gap sizes
9797const mm2_format::format mm2_format::formats[] = {
9898   {
99      floppy_image::FF_525, floppy_image::DSDD,
99      floppy_image::FF_525, floppy_image::DSDD, floppy_image::MFM,
100100      2000, // 2us, 300rpm
101101      9, 40, 2,
102102      512, {},
r20132r20133
106106   // 40 tracks but 18 sectors implying HD density at 300rpm, i.e. on
107107   // 3.5" media?  That makes no sense
108108   {
109      floppy_image::FF_525, floppy_image::DSHD,
109      floppy_image::FF_525, floppy_image::DSHD, floppy_image::MFM,
110110      1000, // 1us, 300rpm, otherwise it just won't fit
111111      18, 40, 2, // That line is just nonsense
112112      512, {},
trunk/src/lib/formats/pc_dsk.c
r20132r20133
158158
159159const pc_format::format pc_format::formats[] = {
160160   {   /*  160K 5 1/4 inch double density single sided */
161      floppy_image::FF_525, floppy_image::SSDD,
161      floppy_image::FF_525, floppy_image::SSDD, floppy_image::MFM,
162162      2000,  8, 40, 1, 512, {}, 1, {}, 80, 50, 22, 80
163163   },
164164   {   /*  320K 5 1/4 inch double density */
165      floppy_image::FF_525, floppy_image::DSDD,
165      floppy_image::FF_525, floppy_image::DSDD, floppy_image::MFM,
166166      2000,  8, 40, 2, 512, {}, 1, {}, 80, 50, 22, 80
167167   },
168168   {   /*  180K 5 1/4 inch double density single sided */
169      floppy_image::FF_525, floppy_image::SSDD,
169      floppy_image::FF_525, floppy_image::SSDD, floppy_image::MFM,
170170      2000,  9, 40, 1, 512, {}, 1, {}, 80, 50, 22, 80
171171   },
172172   {   /*  360K 5 1/4 inch double density */
173      floppy_image::FF_525, floppy_image::DSDD,
173      floppy_image::FF_525, floppy_image::DSDD, floppy_image::MFM,
174174      2000,  9, 40, 2, 512, {}, 1, {}, 80, 50, 22, 80
175175   },
176176   {   /*  400K 5 1/4 inch double density - gaps unverified */
177      floppy_image::FF_525, floppy_image::DSDD,
177      floppy_image::FF_525, floppy_image::DSDD, floppy_image::MFM,
178178      2000, 10, 40, 2, 512, {}, 1, {}, 80, 50, 22, 80
179179   },
180180   {   /*  720K 5 1/4 inch quad density - gaps unverified */
181      floppy_image::FF_525, floppy_image::DSQD,
181      floppy_image::FF_525, floppy_image::DSQD, floppy_image::MFM,
182182      2000,  9, 80, 2, 512, {}, 1, {}, 80, 50, 22, 80
183183   },
184184   {   /* 1200K 5 1/4 inch high density */
185      floppy_image::FF_525, floppy_image::DSHD,
185      floppy_image::FF_525, floppy_image::DSHD, floppy_image::MFM,
186186      1200, 15, 40, 2, 512, {}, 1, {}, 80, 50, 22, 84
187187   },
188188   {   /*  720K 3 1/2 inch double density */
189      floppy_image::FF_35,  floppy_image::DSDD,
189      floppy_image::FF_35,  floppy_image::DSDD, floppy_image::MFM,
190190      2000,  9, 80, 2, 512, {}, 1, {}, 80, 50, 22, 80
191191   },
192192   {   /* 1200K 3 1/2 inch high density (japanese variant) - gaps unverified */
193      floppy_image::FF_35,  floppy_image::DSHD,
193      floppy_image::FF_35,  floppy_image::DSHD, floppy_image::MFM,
194194      1200, 15, 40, 2, 512, {}, 1, {}, 80, 50, 22, 84
195195   },
196196   {   /* 1440K 3 1/2 inch high density */
197      floppy_image::FF_35,  floppy_image::DSHD,
197      floppy_image::FF_35,  floppy_image::DSHD, floppy_image::MFM,
198198      1000, 18, 80, 2, 512, {}, 1, {}, 80, 50, 22, 108
199199   },
200200   {   /* 2880K 3 1/2 inch extended density - gaps unverified */
201      floppy_image::FF_35,  floppy_image::DSED,
201      floppy_image::FF_35,  floppy_image::DSED, floppy_image::MFM,
202202       500, 36, 80, 2, 512, {}, 1, {}, 80, 50, 41, 80
203203   },
204204   {}
trunk/src/lib/formats/nanos_dsk.c
r20132r20133
6565// 800K on HD which handles 1.2M, really?
6666const nanos_format::format nanos_format::formats[] = {
6767   {
68      floppy_image::FF_525, floppy_image::DSHD,
68      floppy_image::FF_525, floppy_image::DSHD, floppy_image::MFM,
6969      1200, // 1us, 360rpm
7070      5, 80, 2,
7171      1024, {},
trunk/src/lib/formats/sf7000_dsk.c
r20132r20133
6464const sf7000_format::format sf7000_format::formats[] = {
6565   {
6666    // mfm h=00 n=01 sc=10 gpl=2a d=ff
67      floppy_image::FF_3, floppy_image::SSDD,
67      floppy_image::FF_3, floppy_image::SSDD, floppy_image::MFM,
6868      2000, // 2us, 300rpm
6969      16, 40, 1,
7070      256, {},
trunk/src/mess/machine/comx_fd.c
r20132r20133
149149   // find memory regions
150150   m_rom = memregion("c000")->base();
151151
152   // initialize floppy controller
153   m_fdc->dden_w(1);
154
155152   // state saving
156153   save_item(NAME(m_ds));
157154   save_item(NAME(m_q));
r20132r20133
166163
167164void comx_fd_device::device_reset()
168165{
169   m_fdc->set_floppy(NULL);
170166   m_fdc->reset();
167   m_fdc->dden_w(1);
168   m_fdc->set_floppy(NULL);
171169
172170   m_addr = 0;
173171   m_disb = 1;
r20132r20133
214212      data = m_rom[offset & 0x1fff];
215213      *extrom = 0;
216214   }
217   if (offset >= 0xc000 && offset < 0xe000)
215   else if (offset >= 0xc000 && offset < 0xe000)
218216   {
219217      data = m_rom[offset & 0x1fff];
220218   }
r20132r20133
236234      if (m_q)
237235      {
238236         data = 0xfe | (m_fdc->intrq_r() ? 1 : 0);
239         //logerror("%s FDC intrq read %02x\n", machine().describe_context(), data);
240237      }
241238      else
242239      {
243240         data = m_fdc->gen_r(m_addr);
244         logerror("%s FDC read %u:%02x\n", machine().describe_context(), m_addr,data);
241         if (m_addr==3) logerror("%s FDC read %u:%02x\n", machine().describe_context(), m_addr,data);
245242      }
246243   }
247244
trunk/src/mess/includes/bw12.h
r20132r20133
7474
7575   DECLARE_READ8_MEMBER( ls259_r );
7676   DECLARE_WRITE8_MEMBER( ls259_w );
77   void fdc_intrq_w(bool state);
7877   DECLARE_READ8_MEMBER( pia_pa_r );
7978   DECLARE_READ_LINE_MEMBER( pia_cb1_r );
8079   DECLARE_WRITE_LINE_MEMBER( pia_cb2_w );
r20132r20133
10099   int m_key_shift;
101100
102101   /* floppy state */
103   int m_fdc_int;
104102   int m_motor_on;
105103   int m_motor0;
106104   int m_motor1;
trunk/src/mess/drivers/bw12.c
r20132r20133
2929
3030    TODO:
3131
32    - Osborne 1 DD disk format
32   - floppy is broken
3333    - floppy motor off timer
3434
3535*/
r20132r20133
9595
9696        */
9797
98      m_floppy_timer->adjust(attotime::zero);
98      //m_floppy_timer->adjust(attotime::zero);
99        floppy_motor_off();
99100   }
100101}
101102
r20132r20133
384385   m_char_rom = memregion("chargen")->base();
385386}
386387
387/* UPD765 Interface */
388
389void bw12_state::fdc_intrq_w(bool state)
390{
391   m_fdc_int = state;
392}
393
394388/* PIA6821 Interface */
395389
396390READ8_MEMBER( bw12_state::pia_pa_r )
r20132r20133
419413   data |= (m_pit_out2 << 4);
420414   data |= (m_key_stb << 5);
421415   data |= (m_key_sin << 6);
422   data |= (m_fdc_int << 7);
416   data |= (m_fdc->get_irq() ? 1 : 0) << 7;
423417
424418   return data;
425419}
r20132r20133
595589   save_item(NAME(m_key_sin));
596590   save_item(NAME(m_key_stb));
597591   save_item(NAME(m_key_shift));
598   save_item(NAME(m_fdc_int));
599592   save_item(NAME(m_motor_on));
600593   save_item(NAME(m_motor0));
601594   save_item(NAME(m_motor1));
r20132r20133
719712/* System Drivers */
720713
721714/*    YEAR  NAME    PARENT  COMPAT  MACHINE INPUT   INIT    COMPANY               FULLNAME        FLAGS */
722COMP( 1984,   bw12,   0,      0,      bw12,   bw12, driver_device,   0,      "Bondwell Holding",   "Bondwell 12",   GAME_SUPPORTS_SAVE )
723COMP( 1984,   bw14,   bw12,   0,      bw14,   bw12, driver_device,   0,      "Bondwell Holding",   "Bondwell 14",   GAME_SUPPORTS_SAVE )
715COMP( 1984,   bw12,   0,      0,      bw12,   bw12, driver_device,   0,      "Bondwell Holding",   "Bondwell 12",   GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
716COMP( 1984,   bw14,   bw12,   0,      bw14,   bw12, driver_device,   0,      "Bondwell Holding",   "Bondwell 14",   GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
trunk/src/mess/drivers/bw2.c
r20132r20133
649649   MCFG_MSM6255_ADD(MSM6255_TAG, XTAL_16MHz, 0, SCREEN_TAG, lcdc_map)
650650   MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics)
651651   MCFG_I8251_ADD(I8251_TAG, default_i8251_interface)
652   MCFG_WD2797x_ADD(WD2797_TAG, XTAL_16MHz/8)
652   MCFG_WD2797x_ADD(WD2797_TAG, XTAL_16MHz/16)
653653   MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG":0", bw2_floppies, "35dd", NULL, bw2_state::floppy_formats)
654654   MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG":1", bw2_floppies, NULL,   NULL, bw2_state::floppy_formats)
655655   MCFG_BW2_EXPANSION_SLOT_ADD(BW2_EXPANSION_SLOT_TAG, XTAL_16MHz, bw2_expansion_cards, NULL, NULL)

Previous 199869 Revisions Next


© 1997-2024 The MAME Team