|
16 | 16 | #define HP98543_SCREEN_NAME "98543_screen"
|
17 | 17 | #define HP98543_ROM_REGION "98543_rom"
|
18 | 18 |
|
| 19 | +namespace { |
| 20 | + |
| 21 | +class dio16_98543_device : |
| 22 | + public device_t, |
| 23 | + public bus::hp_dio::device_dio16_card_interface, |
| 24 | + public device_memory_interface |
| 25 | +{ |
| 26 | +public: |
| 27 | + dio16_98543_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); |
| 28 | + |
| 29 | + uint16_t rom_r(offs_t offset); |
| 30 | + void rom_w(offs_t offset, uint16_t data); |
| 31 | + |
| 32 | + uint16_t ctrl_r(address_space &space, offs_t offset, uint16_t mem_mask = ~0); |
| 33 | + void ctrl_w(address_space &space, offs_t offset, uint16_t data, uint16_t mem_mask = ~0); |
| 34 | + uint16_t vram_r(offs_t offset, uint16_t mem_mask = ~0); |
| 35 | + void vram_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); |
| 36 | + |
| 37 | + static constexpr int TOPCAT_COUNT = 4; |
| 38 | + |
| 39 | + required_device_array<topcat_device, TOPCAT_COUNT> m_topcat; |
| 40 | + required_device<nereid_device> m_nereid; |
| 41 | + |
| 42 | + uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); |
| 43 | +protected: |
| 44 | + dio16_98543_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); |
| 45 | + |
| 46 | + virtual void device_start() override; |
| 47 | + virtual void device_reset() override; |
| 48 | + |
| 49 | + virtual void device_add_mconfig(machine_config &config) override; |
| 50 | + virtual const tiny_rom_entry *device_rom_region() const override; |
| 51 | + |
| 52 | + virtual space_config_vector memory_space_config() const override; |
| 53 | +private: |
| 54 | + |
| 55 | + void vblank_w(int state); |
| 56 | + void int0_w(int state); |
| 57 | + void int1_w(int state); |
| 58 | + void int2_w(int state); |
| 59 | + void int3_w(int state); |
| 60 | + |
| 61 | + const address_space_config m_space_config; |
| 62 | + void map(address_map &map); |
| 63 | + void update_int(); |
| 64 | + static constexpr int m_h_pix = 1024; |
| 65 | + static constexpr int m_v_pix = 400; |
| 66 | + |
| 67 | + required_region_ptr<uint8_t> m_rom; |
| 68 | + required_shared_ptr<uint8_t> m_vram; |
| 69 | + |
| 70 | + uint8_t m_intreg; |
| 71 | + bool m_ints[4]; |
| 72 | +}; |
| 73 | + |
19 | 74 | ROM_START(hp98543)
|
20 | 75 | ROM_REGION(0x2000, HP98543_ROM_REGION, 0)
|
21 | 76 | ROM_LOAD("1818-3907.bin", 0x000000, 0x002000, CRC(5e2bf02a) SHA1(9ba9391cf39624ef8027ce42c84e100344b2a2b8))
|
22 | 77 | ROM_END
|
23 | 78 |
|
24 |
| -DEFINE_DEVICE_TYPE(HPDIO_98543, bus::hp_dio::dio16_98543_device, "dio98543", "HP98543 medium-res color DIO video card") |
25 |
| - |
26 |
| -namespace bus::hp_dio { |
27 |
| - |
28 | 79 | void dio16_98543_device::device_add_mconfig(machine_config &config)
|
29 | 80 | {
|
30 | 81 | screen_device &screen(SCREEN(config, HP98543_SCREEN_NAME, SCREEN_TYPE_RASTER));
|
@@ -251,4 +302,6 @@ uint32_t dio16_98543_device::screen_update(screen_device &screen, bitmap_rgb32 &
|
251 | 302 | return 0;
|
252 | 303 | }
|
253 | 304 |
|
254 |
| -} // namespace bus::hp_dio |
| 305 | +} // anonymous namespace |
| 306 | + |
| 307 | +DEFINE_DEVICE_TYPE_PRIVATE(HPDIO_98543, bus::hp_dio::device_dio16_card_interface, dio16_98543_device, "dio98543", "HP98543 medium-res color DIO video card") |
0 commit comments