src/emu/machine/ctronics.h
| r14316 | r14317 | |
| 63 | 63 | centronics_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 64 | 64 | virtual ~centronics_device(); |
| 65 | 65 | |
| 66 | | DECLARE_WRITE8_MEMBER( write ) { if (m_dev) m_dev->write(data); m_data = data; } |
| 67 | | DECLARE_READ8_MEMBER( read ) { return (m_dev) ? m_dev->read() : m_data; } |
| 66 | DECLARE_WRITE8_MEMBER( write ) { if (m_dev) m_dev->write(data); } |
| 67 | DECLARE_READ8_MEMBER( read ) { return (m_dev) ? m_dev->read() : 0x00; } |
| 68 | 68 | |
| 69 | 69 | /* access to the individual bits */ |
| 70 | 70 | DECLARE_WRITE_LINE_MEMBER( d0_w ) { if (m_dev) m_dev->set_line(0, state); } |
| r14316 | r14317 | |
| 101 | 101 | devcb_resolved_write_line m_out_ack_func; |
| 102 | 102 | devcb_resolved_write_line m_out_busy_func; |
| 103 | 103 | devcb_resolved_write_line m_out_not_busy_func; |
| 104 | | |
| 105 | | UINT8 m_data; |
| 106 | 104 | }; |
| 107 | 105 | |
| 108 | 106 | // device type definition |
| r14316 | r14317 | |
| 129 | 127 | // optional centronics overrides |
| 130 | 128 | virtual void strobe_w(UINT8 state); |
| 131 | 129 | virtual void init_prime_w(UINT8 state); |
| 130 | virtual UINT8 read() { return 0x00; } |
| 132 | 131 | protected: |
| 133 | 132 | // device-level overrides |
| 134 | 133 | virtual void device_start(); |
src/mess/machine/pc_lpt.c
| r14316 | r14317 | |
| 28 | 28 | |
| 29 | 29 | devcb_resolved_write_line out_irq_func; |
| 30 | 30 | |
| 31 | UINT8 data; |
| 32 | |
| 31 | 33 | int ack; |
| 32 | 34 | |
| 33 | 35 | /* control latch */ |
| r14316 | r14317 | |
| 109 | 111 | lpt->init = FALSE; |
| 110 | 112 | lpt->select = TRUE; |
| 111 | 113 | lpt->irq_enabled = FALSE; |
| 114 | lpt->data = 0xff; |
| 112 | 115 | } |
| 113 | 116 | |
| 114 | 117 | DEVICE_GET_INFO( pc_lpt ) |
| r14316 | r14317 | |
| 159 | 162 | READ8_DEVICE_HANDLER( pc_lpt_data_r ) |
| 160 | 163 | { |
| 161 | 164 | pc_lpt_state *lpt = get_safe_token(device); |
| 162 | | return lpt->centronics->read(*memory_nonspecific_space(device->machine()) , 0); |
| 165 | // pull up mechanism for input lines, zeros are provided by pheripherial |
| 166 | return lpt->data & ~lpt->centronics->read(*memory_nonspecific_space(device->machine()), 0); |
| 163 | 167 | } |
| 164 | 168 | |
| 165 | 169 | |
| 166 | 170 | WRITE8_DEVICE_HANDLER( pc_lpt_data_w ) |
| 167 | 171 | { |
| 168 | 172 | pc_lpt_state *lpt = get_safe_token(device); |
| 173 | lpt->data = data; |
| 169 | 174 | lpt->centronics->write(*memory_nonspecific_space(device->machine()), 0, data); |
| 170 | 175 | } |
| 171 | 176 | |