Previous 199869 Revisions Next

r33923 Tuesday 16th December, 2014 at 10:26:00 UTC by Olivier Galibert
hp16500b: Fix the display ram test [O. Galibert]
[src/mess/drivers]hp16500.c

trunk/src/mess/drivers/hp16500.c
r242434r242435
4040
4141   DECLARE_WRITE32_MEMBER(palette_w);
4242
43   DECLARE_WRITE8_MEMBER(vram_w);
44   DECLARE_READ8_MEMBER (vram_r);
45   DECLARE_WRITE8_MEMBER(mask_w);
46   DECLARE_WRITE8_MEMBER(val_w);
43   DECLARE_WRITE16_MEMBER(vram_w);
44   DECLARE_READ8_MEMBER  (vram_r);
45   DECLARE_WRITE8_MEMBER (mask_w);
46   DECLARE_WRITE8_MEMBER (val_w);
4747
4848   INTERRUPT_GEN_MEMBER(vblank);
4949
r242434r242435
5757
5858   AM_RANGE(0x00200000, 0x0020efff) AM_RAM
5959
60   AM_RANGE(0x00600000, 0x0061ffff) AM_WRITE8(vram_w, 0x00ff00ff)
61   AM_RANGE(0x00600000, 0x0067ffff) AM_READ8 (vram_r, 0x00ff00ff)
62   AM_RANGE(0x00700000, 0x00700003) AM_WRITE8(mask_w, 0xff000000)
63   AM_RANGE(0x00740000, 0x00740003) AM_WRITE8(val_w,  0xff000000)
60   AM_RANGE(0x00600000, 0x0061ffff) AM_WRITE16(vram_w, 0xffffffff)
61   AM_RANGE(0x00600000, 0x0067ffff) AM_READ8  (vram_r, 0x00ff00ff)
62   AM_RANGE(0x00700000, 0x00700003) AM_WRITE8 (mask_w, 0xff000000)
63   AM_RANGE(0x00740000, 0x00740003) AM_WRITE8 (val_w,  0xff000000)
6464   AM_RANGE(0x00800000, 0x009fffff) AM_RAM
6565ADDRESS_MAP_END
6666
r242434r242435
7979   m_val = 0;
8080}
8181
82WRITE8_MEMBER(hp16500_state::vram_w)
82// The test code is buggy, it writes a byte in the wrong position
83// (even instead of odd).  It still works because the 68k replicates
84// the byte on the word and the hardware doesn't decode UDS/LDS.  But
85// that is why the handler needs to be 16 bits, or it won't be called
86// in the first place.
87
88WRITE16_MEMBER(hp16500_state::vram_w)
8389{
90   if(!ACCESSING_BITS_0_7)
91      data = data | (data >> 8);
8492   for(int i=0; i<4; i++) {
8593      int off = offset + i * 0x10000;
8694      if(data & (8 >> i))


Previous 199869 Revisions Next


© 1997-2024 The MAME Team