Previous 199869 Revisions Next

r23546 Saturday 8th June, 2013 at 20:58:11 UTC by Curt Coder
msm6255: Added device address map. (nw)
[src/emu/video]msm6255.c msm6255.h
[src/mess/drivers]bw2.c

trunk/src/emu/video/msm6255.c
r23545r23546
6464
6565
6666//**************************************************************************
67//  GLOBAL VARIABLES
67//  DEVICE DEFINITIONS
6868//**************************************************************************
6969
7070// device type definition
7171const device_type MSM6255 = &device_creator<msm6255_device>;
7272
73// I/O map
74DEVICE_ADDRESS_MAP_START( map, 8, msm6255_device )
75   AM_RANGE(0x00, 0x00) AM_READWRITE(dr_r, dr_w)
76   AM_RANGE(0x01, 0x01) AM_READWRITE(ir_r, ir_w)
77ADDRESS_MAP_END
7378
7479// default address map
7580static ADDRESS_MAP_START( msm6255, AS_0, 8, msm6255_device )
r23545r23546
183188
184189
185190//-------------------------------------------------
186//  read - register read
191//  ir_r -
187192//-------------------------------------------------
188193
189READ8_MEMBER( msm6255_device::read )
194READ8_MEMBER( msm6255_device::ir_r )
190195{
196   return m_ir;
197}
198
199
200//-------------------------------------------------
201//  ir_w -
202//-------------------------------------------------
203
204WRITE8_MEMBER( msm6255_device::ir_w )
205{
206   m_ir = data & 0x0f;
207}
208
209
210//-------------------------------------------------
211//  dr_r -
212//-------------------------------------------------
213
214READ8_MEMBER( msm6255_device::dr_r )
215{
191216   UINT8 data = 0;
192217
193   if (offset & 0x01)
218   switch (m_ir)
194219   {
195      return m_ir;
196   }
197   else
198   {
199      switch (m_ir)
200      {
201      case REGISTER_MOR:
202         break; // write-only
220   case REGISTER_MOR:
221      break; // write-only
203222
204      case REGISTER_PR:
205         data = m_pr;
206         break;
223   case REGISTER_PR:
224      data = m_pr;
225      break;
207226
208      case REGISTER_HNR:
209         data = m_hnr;
210         break;
227   case REGISTER_HNR:
228      data = m_hnr;
229      break;
211230
212      case REGISTER_DVR:
213         break; // write-only
231   case REGISTER_DVR:
232      break; // write-only
214233
215      case REGISTER_CPR:
216         data = m_cpr;
217         break;
234   case REGISTER_CPR:
235      data = m_cpr;
236      break;
218237
219      case REGISTER_SLR:
220         data = m_slr;
221         break;
238   case REGISTER_SLR:
239      data = m_slr;
240      break;
222241
223      case REGISTER_SUR:
224         data = m_sur;
225         break;
242   case REGISTER_SUR:
243      data = m_sur;
244      break;
226245
227      case REGISTER_CLR:
228         data = m_clr;
229         break;
246   case REGISTER_CLR:
247      data = m_clr;
248      break;
230249
231      case REGISTER_CUR:
232         data = m_cur;
233         break;
234      }
250   case REGISTER_CUR:
251      data = m_cur;
252      break;
235253   }
236254
237255   return data;
r23545r23546
239257
240258
241259//-------------------------------------------------
242//  write - register write
260//  dr_w -
243261//-------------------------------------------------
244262
245WRITE8_MEMBER( msm6255_device::write )
263WRITE8_MEMBER( msm6255_device::dr_w )
246264{
247   if (offset & 0x01)
265   switch (m_ir)
248266   {
249      m_ir = data & 0x0f;
250   }
251   else
252   {
253      switch (m_ir)
254      {
255      case REGISTER_MOR:
256         m_mor = data & 0x7f;
257         break;
267   case REGISTER_MOR:
268      m_mor = data & 0x7f;
269      break;
258270
259      case REGISTER_PR:
260         m_pr = data & 0xf7;
261         break;
271   case REGISTER_PR:
272      m_pr = data & 0xf7;
273      break;
262274
263      case REGISTER_HNR:
264         m_hnr = data & 0x7f;
265         break;
275   case REGISTER_HNR:
276      m_hnr = data & 0x7f;
277      break;
266278
267      case REGISTER_DVR:
268         m_dvr = data;
269         break;
279   case REGISTER_DVR:
280      m_dvr = data;
281      break;
270282
271      case REGISTER_CPR:
272         m_cpr = data;
273         break;
283   case REGISTER_CPR:
284      m_cpr = data;
285      break;
274286
275      case REGISTER_SLR:
276         m_slr = data;
277         break;
287   case REGISTER_SLR:
288      m_slr = data;
289      break;
278290
279      case REGISTER_SUR:
280         m_sur = data;
281         break;
291   case REGISTER_SUR:
292      m_sur = data;
293      break;
282294
283      case REGISTER_CLR:
284         m_clr = data;
285         break;
295   case REGISTER_CLR:
296      m_clr = data;
297      break;
286298
287      case REGISTER_CUR:
288         m_cur = data;
289         break;
290      }
299   case REGISTER_CUR:
300      m_cur = data;
301      break;
291302   }
292303}
293304
trunk/src/emu/video/msm6255.h
r23545r23546
4343   // inline configuration helpers
4444   static void static_set_config(device_t &device, int char_clock, const char *screen_tag);
4545
46   DECLARE_READ8_MEMBER( read );
47   DECLARE_WRITE8_MEMBER( write );
46   virtual DECLARE_ADDRESS_MAP(map, 8);
4847
48   DECLARE_READ8_MEMBER( ir_r );
49   DECLARE_WRITE8_MEMBER( ir_w );
50
51   DECLARE_READ8_MEMBER( dr_r );
52   DECLARE_WRITE8_MEMBER( dr_w );
53
4954   UINT32 screen_update(screen_device &device, bitmap_ind16 &bitmap, const rectangle &cliprect);
5055
5156protected:
trunk/src/mess/drivers/bw2.c
r23545r23546
212212   ADDRESS_MAP_GLOBAL_MASK(0xff)
213213   AM_RANGE(0x00, 0x03) AM_DEVREADWRITE(I8255A_TAG, i8255_device, read, write)
214214   AM_RANGE(0x10, 0x13) AM_DEVREADWRITE(I8253_TAG, pit8253_device, read, write)
215   AM_RANGE(0x20, 0x21) AM_DEVREADWRITE(MSM6255_TAG, msm6255_device, read, write)
215   AM_RANGE(0x20, 0x21) AM_DEVICE(MSM6255_TAG, msm6255_device, map)
216216   AM_RANGE(0x30, 0x3f) AM_DEVREADWRITE(BW2_EXPANSION_SLOT_TAG, bw2_expansion_slot_device, slot_r, slot_w)
217217   AM_RANGE(0x40, 0x40) AM_DEVREADWRITE(I8251_TAG, i8251_device, data_r, data_w)
218218   AM_RANGE(0x41, 0x41) AM_DEVREADWRITE(I8251_TAG, i8251_device, status_r, control_w)

Previous 199869 Revisions Next


© 1997-2024 The MAME Team