trunk/src/mess/drivers/lola8a.c
| r25344 | r25345 | |
| 21 | 21 | #include "cpu/i8085/i8085.h" |
| 22 | 22 | #include "video/mc6845.h" |
| 23 | 23 | #include "sound/ay8910.h" |
| 24 | #include "imagedev/cassette.h" |
| 25 | #include "sound/wave.h" |
| 24 | 26 | |
| 25 | 27 | #define AY8910_TAG "g12" |
| 26 | 28 | #define HD46505SP_TAG "h45" |
| r25344 | r25345 | |
| 30 | 32 | { |
| 31 | 33 | public: |
| 32 | 34 | lola8a_state(const machine_config &mconfig, device_type type, const char *tag) |
| 33 | | : driver_device(mconfig, type, tag), |
| 34 | | m_maincpu(*this, "maincpu") { } |
| 35 | : driver_device(mconfig, type, tag) |
| 36 | , m_maincpu(*this, "maincpu") |
| 37 | , m_cass(*this, "cassette") |
| 38 | { } |
| 35 | 39 | |
| 36 | 40 | required_device<cpu_device> m_maincpu; |
| 37 | 41 | |
| r25344 | r25345 | |
| 41 | 45 | DECLARE_READ8_MEMBER(lola8a_port_a_r); |
| 42 | 46 | DECLARE_WRITE8_MEMBER(lola8a_port_b_w); |
| 43 | 47 | DECLARE_WRITE_LINE_MEMBER(crtc_vsync); |
| 48 | DECLARE_READ_LINE_MEMBER(cass_r); |
| 49 | DECLARE_WRITE_LINE_MEMBER(cass_w); |
| 44 | 50 | |
| 45 | 51 | DECLARE_READ8_MEMBER(keyboard_r); |
| 46 | 52 | |
| 47 | 53 | private: |
| 48 | 54 | UINT8 m_portb; |
| 55 | required_device<cassette_image_device> m_cass; |
| 49 | 56 | }; |
| 50 | 57 | |
| 51 | 58 | static ADDRESS_MAP_START(lola8a_mem, AS_PROGRAM, 8, lola8a_state) |
| r25344 | r25345 | |
| 215 | 222 | m_portb = data; |
| 216 | 223 | } |
| 217 | 224 | |
| 225 | READ_LINE_MEMBER( lola8a_state::cass_r ) |
| 226 | { |
| 227 | return (m_cass->input() < 0.03); |
| 228 | } |
| 229 | |
| 230 | WRITE_LINE_MEMBER( lola8a_state::cass_w ) |
| 231 | { |
| 232 | m_cass->output(state ? -1.0 : +1.0); |
| 233 | } |
| 234 | |
| 218 | 235 | READ8_MEMBER(lola8a_state::keyboard_r) |
| 219 | 236 | { |
| 220 | 237 | static const char *const keynames[] = |
| r25344 | r25345 | |
| 264 | 281 | MCFG_CPU_ADD("maincpu", I8085A, XTAL_4_9152MHz) |
| 265 | 282 | MCFG_CPU_PROGRAM_MAP(lola8a_mem) |
| 266 | 283 | MCFG_CPU_IO_MAP(lola8a_io) |
| 267 | | |
| 284 | MCFG_I8085A_SID(READLINE(lola8a_state, cass_r)) |
| 285 | MCFG_I8085A_SOD(WRITELINE(lola8a_state, cass_w)) |
| 268 | 286 | |
| 269 | 287 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 270 | 288 | MCFG_SOUND_ADD(AY8910_TAG, AY8910, XTAL_4_9152MHz / 4) |
| 271 | 289 | MCFG_SOUND_CONFIG(psg_intf) |
| 272 | 290 | MCFG_SOUND_ROUTE(ALL_OUTPUTS,"mono",1.0) |
| 273 | 291 | |
| 274 | | /* video hardware */ |
| 292 | /* video hardware */ |
| 275 | 293 | MCFG_SCREEN_ADD("screen", RASTER) |
| 276 | 294 | MCFG_SCREEN_REFRESH_RATE(50) |
| 277 | 295 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ |
| 278 | 296 | MCFG_SCREEN_UPDATE_DEVICE(HD46505SP_TAG, hd6845_device, screen_update) |
| 279 | 297 | MCFG_SCREEN_SIZE(640, 480) |
| 280 | 298 | MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1) |
| 281 | | |
| 282 | 299 | MCFG_MC6845_ADD(HD46505SP_TAG, HD6845, "screen", XTAL_8MHz / 8, hd46505sp_intf) // HD6845 == HD46505S |
| 283 | | |
| 284 | 300 | MCFG_PALETTE_LENGTH(8) |
| 301 | |
| 302 | /* Cassette */ |
| 303 | MCFG_CASSETTE_ADD( "cassette", default_cassette_interface ) |
| 304 | MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette") |
| 305 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 285 | 306 | MACHINE_CONFIG_END |
| 286 | 307 | |
| 287 | 308 | /* ROM definition */ |