trunk/src/mess/machine/coco.c
| r21782 | r21783 | |
| 75 | 75 | //************************************************************************** |
| 76 | 76 | |
| 77 | 77 | //------------------------------------------------- |
| 78 | // ctor |
| 79 | //------------------------------------------------- |
| 80 | |
| 81 | coco_state::coco_state(const machine_config &mconfig, device_type type, const char *tag) |
| 82 | : driver_device(mconfig, type, tag), |
| 83 | m_maincpu(*this, MAINCPU_TAG), |
| 84 | m_pia_0(*this, PIA0_TAG), |
| 85 | m_pia_1(*this, PIA1_TAG), |
| 86 | m_dac(*this, DAC_TAG), |
| 87 | m_wave(*this, WAVE_TAG), |
| 88 | m_cococart(*this, CARTRIDGE_TAG), |
| 89 | m_ram(*this, RAM_TAG), |
| 90 | m_cassette(*this, CASSETTE_TAG), |
| 91 | m_bitbanger(*this, BITBANGER_TAG), |
| 92 | m_vhd_0(*this, VHD0_TAG), |
| 93 | m_vhd_1(*this, VHD1_TAG) |
| 94 | { |
| 95 | } |
| 96 | |
| 97 | |
| 98 | //------------------------------------------------- |
| 78 | 99 | // analog_port_start |
| 79 | 100 | //------------------------------------------------- |
| 80 | 101 | |
trunk/src/mess/includes/coco.h
| r21782 | r21783 | |
| 34 | 34 | |
| 35 | 35 | SLOT_INTERFACE_EXTERN( coco_cart ); |
| 36 | 36 | |
| 37 | | /* constants */ |
| 37 | // constants |
| 38 | 38 | #define JOYSTICK_DELTA 10 |
| 39 | 39 | #define JOYSTICK_SENSITIVITY 100 |
| 40 | 40 | |
| 41 | | /* devices */ |
| 41 | // devices |
| 42 | 42 | #define MAINCPU_TAG "maincpu" |
| 43 | 43 | #define PIA0_TAG "pia0" |
| 44 | 44 | #define PIA1_TAG "pia1" |
| r21782 | r21783 | |
| 51 | 51 | #define VHD0_TAG "vhd0" |
| 52 | 52 | #define VHD1_TAG "vhd1" |
| 53 | 53 | |
| 54 | | /* inputs */ |
| 54 | // inputs |
| 55 | 55 | #define CTRL_SEL_TAG "ctrl_sel" |
| 56 | 56 | #define HIRES_INTF_TAG "hires_intf" |
| 57 | 57 | #define CART_AUTOSTART_TAG "cart_autostart" |
| r21782 | r21783 | |
| 82 | 82 | class coco_state : public driver_device |
| 83 | 83 | { |
| 84 | 84 | public: |
| 85 | | coco_state(const machine_config &mconfig, device_type type, const char *tag) |
| 86 | | : driver_device(mconfig, type, tag), |
| 87 | | m_maincpu(*this, MAINCPU_TAG), |
| 88 | | m_pia_0(*this, PIA0_TAG), |
| 89 | | m_pia_1(*this, PIA1_TAG), |
| 90 | | m_dac(*this, DAC_TAG), |
| 91 | | m_wave(*this, WAVE_TAG), |
| 92 | | m_cococart(*this, CARTRIDGE_TAG), |
| 93 | | m_ram(*this, RAM_TAG), |
| 94 | | m_cassette(*this, CASSETTE_TAG), |
| 95 | | m_bitbanger(*this, BITBANGER_TAG), |
| 96 | | m_vhd_0(*this, VHD0_TAG), |
| 97 | | m_vhd_1(*this, VHD1_TAG) |
| 98 | | { |
| 99 | | } |
| 85 | coco_state(const machine_config &mconfig, device_type type, const char *tag); |
| 100 | 86 | |
| 101 | 87 | required_device<cpu_device> m_maincpu; |
| 102 | 88 | required_device<pia6821_device> m_pia_0; |
| r21782 | r21783 | |
| 116 | 102 | static const bitbanger_config coco_bitbanger_config; |
| 117 | 103 | static const cassette_interface coco_cassette_interface; |
| 118 | 104 | |
| 119 | | /* driver update handlers */ |
| 105 | // driver update handlers |
| 120 | 106 | DECLARE_INPUT_CHANGED_MEMBER(keyboard_changed); |
| 121 | 107 | DECLARE_INPUT_CHANGED_MEMBER(joystick_mode_changed); |
| 122 | 108 | static void bitbanger_callback(running_machine &machine, UINT8 bit); |
| 123 | 109 | |
| 124 | | /* IO */ |
| 110 | // IO |
| 125 | 111 | virtual DECLARE_READ8_MEMBER( ff00_read ); |
| 126 | 112 | virtual DECLARE_WRITE8_MEMBER( ff00_write ); |
| 127 | 113 | virtual DECLARE_READ8_MEMBER( ff20_read ); |
| r21782 | r21783 | |
| 131 | 117 | DECLARE_READ8_MEMBER( ff60_read ); |
| 132 | 118 | DECLARE_WRITE8_MEMBER( ff60_write ); |
| 133 | 119 | |
| 134 | | /* floating bus */ |
| 120 | // floating bus |
| 135 | 121 | DECLARE_READ8_MEMBER( floating_bus_read ) { return floating_bus_read(); } |
| 136 | 122 | |
| 137 | 123 | protected: |
| 138 | | /* device-level overrides */ |
| 124 | // device-level overrides |
| 139 | 125 | virtual void device_start(); |
| 140 | 126 | virtual void device_reset(); |
| 141 | 127 | virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); |
| 142 | 128 | |
| 143 | | /* interrupts */ |
| 129 | // interrupts |
| 144 | 130 | virtual bool firq_get_line(void); |
| 145 | 131 | virtual bool irq_get_line(void); |
| 146 | 132 | void recalculate_irq(void); |
| 147 | 133 | void recalculate_firq(void); |
| 148 | 134 | |
| 149 | | /* changed handlers */ |
| 135 | // changed handlers |
| 150 | 136 | virtual void pia1_pa_changed(void); |
| 151 | 137 | virtual void pia1_pb_changed(void); |
| 152 | 138 | virtual void bitbanger_changed(bool newvalue); |
| 153 | 139 | |
| 154 | | /* miscellaneous */ |
| 140 | // miscellaneous |
| 155 | 141 | virtual void update_keyboard_input(UINT8 value, UINT8 z); |
| 156 | 142 | virtual void cart_w(bool state); |
| 157 | 143 | DECLARE_WRITE_LINE_MEMBER( cart_w ) { cart_w((bool) state); } |
| 158 | 144 | virtual void update_cart_base(UINT8 *cart_base) = 0; |
| 159 | 145 | |
| 160 | | /* PIA0 */ |
| 146 | // PIA0 |
| 161 | 147 | DECLARE_WRITE8_MEMBER( pia0_pa_w ); |
| 162 | 148 | DECLARE_WRITE8_MEMBER( pia0_pb_w ); |
| 163 | 149 | DECLARE_WRITE_LINE_MEMBER( pia0_ca2_w ); |
| r21782 | r21783 | |
| 165 | 151 | DECLARE_WRITE_LINE_MEMBER( pia0_irq_a ); |
| 166 | 152 | DECLARE_WRITE_LINE_MEMBER( pia0_irq_b ); |
| 167 | 153 | |
| 168 | | /* PIA1 */ |
| 154 | // PIA1 |
| 169 | 155 | DECLARE_READ8_MEMBER( pia1_pa_r ); |
| 170 | 156 | DECLARE_READ8_MEMBER( pia1_pb_r ); |
| 171 | 157 | DECLARE_WRITE8_MEMBER( pia1_pa_w ); |
| r21782 | r21783 | |
| 216 | 202 | |
| 217 | 203 | void analog_port_start(analog_input_t *analog, const char *rx_tag, const char *ry_tag, const char *lx_tag, const char *ly_tag, const char *buttons_tag); |
| 218 | 204 | |
| 219 | | /* wrappers for configuration */ |
| 205 | // wrappers for configuration |
| 220 | 206 | joystick_type_t joystick_type(int index); |
| 221 | 207 | hires_type_t hires_interface_type(void); |
| 222 | 208 | bool is_joystick_hires(int joystick_index); |
| r21782 | r21783 | |
| 233 | 219 | DECLARE_WRITE_LINE_MEMBER( bitbanger_callback ); |
| 234 | 220 | void diecom_lightgun_clock(void); |
| 235 | 221 | |
| 236 | | /* thin wrappers for PIA output */ |
| 237 | | UINT8 dac_output(void) { return m_dac_output; } /* PA drives the DAC */ |
| 222 | // thin wrappers for PIA output |
| 223 | UINT8 dac_output(void) { return m_dac_output; } // PA drives the DAC |
| 238 | 224 | bool sel1(void) { return m_pia_0->ca2_output() ? true : false; } |
| 239 | 225 | bool sel2(void) { return m_pia_0->cb2_output() ? true : false; } |
| 240 | 226 | bool snden(void) { return m_pia_1->cb2_output() ? true : false; } |
| 241 | 227 | |
| 242 | | /* VHD selection */ |
| 228 | // VHD selection |
| 243 | 229 | coco_vhd_image_device *current_vhd(void); |
| 244 | 230 | |
| 245 | | /* floating bus */ |
| 231 | // floating bus |
| 246 | 232 | UINT8 floating_bus_read(void); |
| 247 | 233 | |
| 248 | | /* disassembly override */ |
| 234 | // disassembly override |
| 249 | 235 | static offs_t dasm_override(device_t &device, char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, int options); |
| 250 | 236 | |
| 251 | | /* input ports */ |
| 237 | // input ports |
| 252 | 238 | ioport_port *m_keyboard[7]; |
| 253 | 239 | ioport_port *m_joystick_type_control; |
| 254 | 240 | ioport_port *m_joystick_hires_control; |
| r21782 | r21783 | |
| 256 | 242 | analog_input_t m_rat_mouse; |
| 257 | 243 | analog_input_t m_diecom_lightgun; |
| 258 | 244 | |
| 259 | | /* DAC output */ |
| 245 | // DAC output |
| 260 | 246 | UINT8 m_dac_output; |
| 261 | 247 | |
| 262 | | /* hires interface */ |
| 248 | // hires interface |
| 263 | 249 | emu_timer *m_hiresjoy_transition_timer[2]; |
| 264 | 250 | bool m_hiresjoy_ca; |
| 265 | 251 | |
| 266 | | /* diecom lightgun */ |
| 252 | // diecom lightgun |
| 267 | 253 | emu_timer *m_diecom_lightgun_timer; |
| 268 | 254 | bool m_dclg_previous_bit; |
| 269 | 255 | UINT8 m_dclg_output_h; |
| r21782 | r21783 | |
| 271 | 257 | UINT8 m_dclg_state; |
| 272 | 258 | UINT16 m_dclg_timer; |
| 273 | 259 | |
| 274 | | /* VHD selection */ |
| 260 | // VHD selection |
| 275 | 261 | UINT8 m_vhd_select; |
| 276 | 262 | }; |
| 277 | 263 | |
| 278 | | #endif /* __COCO__ */ |
| 264 | #endif // __COCO__ |