trunk/src/emu/machine/am9517a.c
| r244837 | r244838 | |
| 54 | 54 | // MACROS / CONSTANTS |
| 55 | 55 | //************************************************************************** |
| 56 | 56 | |
| 57 | | #define LOG 0 |
| 57 | #define LOG 1 |
| 58 | 58 | |
| 59 | 59 | |
| 60 | 60 | enum |
| r244837 | r244838 | |
| 360 | 360 | if (MODE_ADDRESS_DECREMENT) |
| 361 | 361 | { |
| 362 | 362 | m_channel[m_current_channel].m_address--; |
| 363 | m_channel[m_current_channel].m_address &= m_address_mask; |
| 363 | 364 | |
| 364 | 365 | if ((m_channel[m_current_channel].m_address & 0xff) == 0xff) |
| 365 | 366 | { |
| r244837 | r244838 | |
| 369 | 370 | else |
| 370 | 371 | { |
| 371 | 372 | m_channel[m_current_channel].m_address++; |
| 373 | m_channel[m_current_channel].m_address &= m_address_mask; |
| 372 | 374 | |
| 373 | 375 | if ((m_channel[m_current_channel].m_address & 0xff) == 0x00) |
| 374 | 376 | { |
| r244837 | r244838 | |
| 585 | 587 | save_item(NAME(m_channel[i].m_base_count), i); |
| 586 | 588 | save_item(NAME(m_channel[i].m_mode), i); |
| 587 | 589 | } |
| 590 | |
| 591 | m_address_mask = 0xffff; |
| 592 | |
| 588 | 593 | } |
| 589 | 594 | |
| 595 | void upd71071_v53_device::device_start() |
| 596 | { |
| 597 | am9517a_device::device_start(); |
| 598 | m_address_mask = 0x00ffffff; |
| 599 | } |
| 590 | 600 | |
| 591 | 601 | //------------------------------------------------- |
| 592 | 602 | // device_reset - device-specific reset |
| r244837 | r244838 | |
| 776 | 786 | if (MODE_ADDRESS_DECREMENT) |
| 777 | 787 | { |
| 778 | 788 | m_channel[m_current_channel].m_address--; |
| 789 | m_channel[m_current_channel].m_address &= m_address_mask; |
| 779 | 790 | } |
| 780 | 791 | else |
| 781 | 792 | { |
| 782 | 793 | m_channel[m_current_channel].m_address++; |
| 794 | m_channel[m_current_channel].m_address &= m_address_mask; |
| 783 | 795 | } |
| 784 | 796 | |
| 785 | 797 | break; |
| r244837 | r244838 | |
| 1062 | 1074 | { |
| 1063 | 1075 | dma_request(3, state); |
| 1064 | 1076 | } |
| 1077 | |
| 1078 | //------------------------------------------------- |
| 1079 | // upd71071 register layouts |
| 1080 | //------------------------------------------------- |
| 1081 | |
| 1082 | READ8_MEMBER(upd71071_v53_device::read) |
| 1083 | { |
| 1084 | // printf("upd71071_v53_device read %02x\n", offset); |
| 1085 | return 0x00; |
| 1086 | } |
| 1087 | |
| 1088 | WRITE8_MEMBER(upd71071_v53_device::write) |
| 1089 | { |
| 1090 | // printf("upd71071_v53_device write %02x %02x\n", offset, data); |
| 1091 | } |
| | No newline at end of file |
trunk/src/emu/machine/am9517a.h
| r244837 | r244838 | |
| 75 | 75 | template<class _Object> static devcb_base &set_out_dack_2_callback(device_t &device, _Object object) { return downcast<am9517a_device &>(device).m_out_dack_2_cb.set_callback(object); } |
| 76 | 76 | template<class _Object> static devcb_base &set_out_dack_3_callback(device_t &device, _Object object) { return downcast<am9517a_device &>(device).m_out_dack_3_cb.set_callback(object); } |
| 77 | 77 | |
| 78 | | DECLARE_READ8_MEMBER( read ); |
| 79 | | DECLARE_WRITE8_MEMBER( write ); |
| 78 | virtual DECLARE_READ8_MEMBER( read ); |
| 79 | virtual DECLARE_WRITE8_MEMBER( write ); |
| 80 | 80 | |
| 81 | 81 | DECLARE_WRITE_LINE_MEMBER( hack_w ); |
| 82 | 82 | DECLARE_WRITE_LINE_MEMBER( ready_w ); |
| r244837 | r244838 | |
| 94 | 94 | virtual void execute_run(); |
| 95 | 95 | |
| 96 | 96 | int m_icount; |
| 97 | UINT32 m_address_mask; |
| 97 | 98 | |
| 98 | 99 | private: |
| 99 | 100 | inline void dma_request(int channel, int state); |
| r244837 | r244838 | |
| 129 | 130 | |
| 130 | 131 | struct |
| 131 | 132 | { |
| 132 | | UINT16 m_address; |
| 133 | UINT32 m_address; |
| 133 | 134 | UINT16 m_count; |
| 134 | | UINT16 m_base_address; |
| 135 | UINT32 m_base_address; |
| 135 | 136 | UINT16 m_base_count; |
| 136 | 137 | UINT8 m_mode; |
| 137 | 138 | } m_channel[4]; |
| 138 | 139 | |
| 140 | |
| 139 | 141 | int m_msb; |
| 140 | 142 | int m_hreq; |
| 141 | 143 | int m_hack; |
| r244837 | r244838 | |
| 157 | 159 | public: |
| 158 | 160 | // construction/destruction |
| 159 | 161 | upd71071_v53_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 162 | |
| 163 | virtual DECLARE_READ8_MEMBER( read ); |
| 164 | virtual DECLARE_WRITE8_MEMBER( write ); |
| 165 | |
| 166 | protected: |
| 167 | // device-level overrides |
| 168 | virtual void device_start(); |
| 160 | 169 | }; |
| 161 | 170 | |
| 162 | 171 | |