trunk/src/mess/drivers/mbee.c
| r243526 | r243527 | |
| 51 | 51 | These early colour computers have a PROM to create the foreground palette. |
| 52 | 52 | |
| 53 | 53 | Notes about the printer: |
| 54 | | - When computer turned on, defaults to 1200 baud serial printer |
| 55 | | - Change it to parallel by entering OUTL#1 |
| 56 | | - After you mount/create a printfile, you can LPRINT and LLIST. |
| 54 | - Older models default to a 1200 baud serial printer, which we do not support. |
| 55 | - You need to change it to parallel by entering OUTL#1 while in Basic. |
| 56 | - After you mount/create a printfile, you can LPRINT and LLIST in Basic, |
| 57 | or by using the printing option in other apps. |
| 57 | 58 | |
| 58 | 59 | Notes about Telcom: |
| 59 | 60 | - On the older models, Telcom is called up by entering NET from within Basic. Models |
| r243526 | r243527 | |
| 91 | 92 | |
| 92 | 93 | TODO/not working: |
| 93 | 94 | |
| 94 | | - Printer needs to be understood and fixed. |
| 95 | | |
| 96 | 95 | - 256tc: Paste ignores shift key |
| 97 | 96 | - All others: Paste drops most characters, shift operates randomly. |
| 98 | 97 | |
| 99 | 98 | - various fdc issues: |
| 100 | | - B drive doesn't work. |
| 99 | - B drive doesn't work with most disks. |
| 101 | 100 | - some disks cause MESS to freeze. |
| 102 | 101 | - ENMF pin missing from wd_fdc. |
| 103 | 102 | - incorrect timing for track register causes 256tc failure to boot a disk. |
| r243526 | r243527 | |
| 287 | 286 | AM_RANGE(0x0c, 0x0c) AM_MIRROR(0x10) AM_READWRITE(m6545_status_r, m6545_index_w) |
| 288 | 287 | AM_RANGE(0x0d, 0x0d) AM_MIRROR(0x10) AM_READWRITE(m6545_data_r, m6545_data_w) |
| 289 | 288 | AM_RANGE(0x44, 0x47) AM_DEVREADWRITE("fdc", wd2793_t, read, write) |
| 290 | | AM_RANGE(0x48, 0x4f) AM_READWRITE(mbee_fdc_status_r, mbee_fdc_motor_w) |
| 289 | AM_RANGE(0x48, 0x4f) AM_READWRITE(fdc_status_r, fdc_motor_w) |
| 291 | 290 | ADDRESS_MAP_END |
| 292 | 291 | |
| 293 | 292 | static ADDRESS_MAP_START(mbee128_io, AS_IO, 8, mbee_state) |
| r243526 | r243527 | |
| 303 | 302 | AM_RANGE(0x0d, 0x0d) AM_READWRITE(m6545_data_r, m6545_data_w) |
| 304 | 303 | AM_RANGE(0x1c, 0x1f) AM_READWRITE(mbeeppc_1c_r, mbee256_1c_w) |
| 305 | 304 | AM_RANGE(0x44, 0x47) AM_DEVREADWRITE("fdc", wd2793_t, read, write) |
| 306 | | AM_RANGE(0x48, 0x4f) AM_READWRITE(mbee_fdc_status_r, mbee_fdc_motor_w) |
| 305 | AM_RANGE(0x48, 0x4f) AM_READWRITE(fdc_status_r, fdc_motor_w) |
| 307 | 306 | AM_RANGE(0x50, 0x57) AM_WRITE(mbee128_50_w) |
| 308 | 307 | ADDRESS_MAP_END |
| 309 | 308 | |
| r243526 | r243527 | |
| 323 | 322 | AM_RANGE(0x0018, 0x001b) AM_MIRROR(0xff00) AM_READ(mbee256_18_r) |
| 324 | 323 | AM_RANGE(0x001c, 0x001f) AM_MIRROR(0xff00) AM_READWRITE(mbeeppc_1c_r, mbee256_1c_w) |
| 325 | 324 | AM_RANGE(0x0044, 0x0047) AM_MIRROR(0xff00) AM_DEVREADWRITE("fdc", wd2793_t, read, write) |
| 326 | | AM_RANGE(0x0048, 0x004f) AM_MIRROR(0xff00) AM_READWRITE(mbee_fdc_status_r, mbee_fdc_motor_w) |
| 325 | AM_RANGE(0x0048, 0x004f) AM_MIRROR(0xff00) AM_READWRITE(fdc_status_r, fdc_motor_w) |
| 327 | 326 | AM_RANGE(0x0050, 0x0057) AM_MIRROR(0xff00) AM_WRITE(mbee256_50_w) |
| 328 | 327 | // AM_RANGE(0x0058, 0x005f) AM_MIRROR(0xff00) External options: floppy drive, hard drive and keyboard |
| 329 | 328 | // AM_RANGE(0x0060, 0x0067) AM_MIRROR(0xff00) Reserved for file server selection (unused) |
| r243526 | r243527 | |
| 635 | 634 | |
| 636 | 635 | MCFG_DEVICE_ADD("z80pio", Z80PIO, XTAL_12MHz / 6) |
| 637 | 636 | MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) |
| 638 | | MCFG_Z80PIO_OUT_PA_CB(WRITE8(mbee_state, pio_port_a_w)) |
| 637 | MCFG_Z80PIO_OUT_PA_CB(DEVWRITE8("cent_data_out", output_latch_device, write)) |
| 639 | 638 | MCFG_Z80PIO_OUT_ARDY_CB(WRITELINE(mbee_state, pio_ardy)) |
| 640 | 639 | MCFG_Z80PIO_IN_PB_CB(READ8(mbee_state, pio_port_b_r)) |
| 641 | 640 | MCFG_Z80PIO_OUT_PB_CB(WRITE8(mbee_state, pio_port_b_w)) |
| r243526 | r243527 | |
| 671 | 670 | MCFG_QUICKLOAD_ADD("quickload2", mbee_state, mbee_z80bin, "bin", 2) |
| 672 | 671 | |
| 673 | 672 | MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer") |
| 673 | MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("z80pio", z80pio_device, strobe_a)) |
| 674 | 674 | |
| 675 | 675 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") |
| 676 | 676 | |
| r243526 | r243527 | |
| 691 | 691 | |
| 692 | 692 | MCFG_DEVICE_ADD("z80pio", Z80PIO, 3375000) |
| 693 | 693 | MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) |
| 694 | | MCFG_Z80PIO_OUT_PA_CB(WRITE8(mbee_state, pio_port_a_w)) |
| 694 | MCFG_Z80PIO_OUT_PA_CB(DEVWRITE8("cent_data_out", output_latch_device, write)) |
| 695 | 695 | MCFG_Z80PIO_OUT_ARDY_CB(WRITELINE(mbee_state, pio_ardy)) |
| 696 | 696 | MCFG_Z80PIO_IN_PB_CB(READ8(mbee_state, pio_port_b_r)) |
| 697 | 697 | MCFG_Z80PIO_OUT_PB_CB(WRITE8(mbee_state, pio_port_b_w)) |
| r243526 | r243527 | |
| 729 | 729 | MCFG_QUICKLOAD_ADD("quickload2", mbee_state, mbee_z80bin, "bin", 2) |
| 730 | 730 | |
| 731 | 731 | MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer") |
| 732 | MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("z80pio", z80pio_device, strobe_a)) |
| 732 | 733 | |
| 733 | 734 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") |
| 734 | 735 | |
trunk/src/mess/includes/mbee.h
| r243526 | r243527 | |
| 18 | 18 | #include "sound/speaker.h" |
| 19 | 19 | #include "cpu/z80/z80.h" |
| 20 | 20 | #include "cpu/z80/z80daisy.h" |
| 21 | | #include "machine/mc146818.h" |
| 22 | 21 | #include "sound/wave.h" |
| 23 | 22 | #include "machine/wd_fdc.h" |
| 24 | 23 | |
| r243526 | r243527 | |
| 28 | 27 | public: |
| 29 | 28 | enum |
| 30 | 29 | { |
| 31 | | TIMER_MBEE256_KBD, |
| 30 | TIMER_MBEE_NEWKB, |
| 32 | 31 | TIMER_MBEE_RTC_IRQ, |
| 33 | | TIMER_MBEE_RESET |
| 32 | TIMER_MBEE_BOOT |
| 34 | 33 | }; |
| 35 | 34 | |
| 36 | 35 | mbee_state(const machine_config &mconfig, device_type type, const char *tag) |
| r243526 | r243527 | |
| 69 | 68 | DECLARE_READ8_MEMBER(mbee256_speed_low_r); |
| 70 | 69 | DECLARE_READ8_MEMBER(mbee256_speed_high_r); |
| 71 | 70 | DECLARE_READ8_MEMBER(mbee256_18_r); |
| 72 | | DECLARE_WRITE8_MEMBER(mbee64_50_w); |
| 73 | 71 | DECLARE_WRITE8_MEMBER(mbee128_50_w); |
| 74 | 72 | DECLARE_WRITE8_MEMBER(mbee256_50_w); |
| 75 | 73 | DECLARE_READ8_MEMBER(m6545_status_r); |
| r243526 | r243527 | |
| 93 | 91 | DECLARE_READ8_MEMBER(mbeeppc_high_r); |
| 94 | 92 | DECLARE_WRITE8_MEMBER(mbeeppc_high_w); |
| 95 | 93 | DECLARE_WRITE8_MEMBER(mbeeppc_low_w); |
| 96 | | DECLARE_WRITE8_MEMBER(pio_port_a_w); |
| 97 | 94 | DECLARE_WRITE8_MEMBER(pio_port_b_w); |
| 98 | 95 | DECLARE_READ8_MEMBER(pio_port_b_r); |
| 99 | 96 | DECLARE_WRITE_LINE_MEMBER(pio_ardy); |
| 100 | 97 | DECLARE_WRITE_LINE_MEMBER(crtc_vs); |
| 101 | | DECLARE_READ8_MEMBER(mbee_fdc_status_r); |
| 102 | | DECLARE_WRITE8_MEMBER(mbee_fdc_motor_w); |
| 98 | DECLARE_READ8_MEMBER(fdc_status_r); |
| 99 | DECLARE_WRITE8_MEMBER(fdc_motor_w); |
| 103 | 100 | DECLARE_DRIVER_INIT(mbeepc85); |
| 104 | 101 | DECLARE_DRIVER_INIT(mbee256); |
| 105 | 102 | DECLARE_DRIVER_INIT(mbee56); |
| r243526 | r243527 | |
| 121 | 118 | DECLARE_MACHINE_RESET(mbee256); |
| 122 | 119 | DECLARE_MACHINE_RESET(mbeett); |
| 123 | 120 | UINT32 screen_update_mbee(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); |
| 124 | | INTERRUPT_GEN_MEMBER(mbee_interrupt); |
| 125 | | TIMER_CALLBACK_MEMBER(mbee256_kbd); |
| 126 | | TIMER_CALLBACK_MEMBER(mbee_rtc_irq); |
| 127 | | TIMER_CALLBACK_MEMBER(mbee_reset); |
| 121 | TIMER_CALLBACK_MEMBER(timer_newkb); |
| 122 | TIMER_CALLBACK_MEMBER(timer_rtc_irq); |
| 123 | TIMER_CALLBACK_MEMBER(timer_boot); |
| 128 | 124 | DECLARE_QUICKLOAD_LOAD_MEMBER(mbee); |
| 129 | 125 | DECLARE_QUICKLOAD_LOAD_MEMBER(mbee_z80bin); |
| 130 | 126 | WRITE_LINE_MEMBER(fdc_intrq_w); |
| r243526 | r243527 | |
| 151 | 147 | bool m_b7_rtc; |
| 152 | 148 | bool m_b7_vs; |
| 153 | 149 | bool m_b2; |
| 150 | bool m_is_mbeett; |
| 154 | 151 | UINT8 m_mbee256_was_pressed[15]; |
| 155 | 152 | UINT8 m_mbee256_q[20]; |
| 156 | 153 | UINT8 m_mbee256_q_pos; |
trunk/src/mess/machine/mbee.c
| r243526 | r243527 | |
| 5 | 5 | machine driver |
| 6 | 6 | Juergen Buchmueller <pullmoll@t-online.de>, Jan 2000 |
| 7 | 7 | |
| 8 | Rewritten by Robbbert |
| 8 | 9 | |
| 9 | 10 | ****************************************************************************/ |
| 10 | 11 | |
| r243526 | r243527 | |
| 16 | 17 | { |
| 17 | 18 | switch (id) |
| 18 | 19 | { |
| 19 | | case TIMER_MBEE256_KBD: |
| 20 | | mbee256_kbd(ptr, param); |
| 20 | case TIMER_MBEE_NEWKB: |
| 21 | timer_newkb(ptr, param); |
| 21 | 22 | break; |
| 22 | 23 | case TIMER_MBEE_RTC_IRQ: |
| 23 | | mbee_rtc_irq(ptr, param); |
| 24 | timer_rtc_irq(ptr, param); |
| 24 | 25 | break; |
| 25 | | case TIMER_MBEE_RESET: |
| 26 | | mbee_reset(ptr, param); |
| 26 | case TIMER_MBEE_BOOT: |
| 27 | timer_boot(ptr, param); |
| 27 | 28 | break; |
| 28 | 29 | default: |
| 29 | 30 | assert_always(FALSE, "Unknown id in mbee_state::device_timer"); |
| r243526 | r243527 | |
| 42 | 43 | m_centronics->write_strobe((state) ? 0 : 1); |
| 43 | 44 | } |
| 44 | 45 | |
| 45 | | WRITE8_MEMBER( mbee_state::pio_port_a_w ) |
| 46 | | { |
| 47 | | /* hardware strobe driven by PIO ARDY, bit 7..0 = data */ |
| 48 | | m_pio->strobe_a(1); /* needed - otherwise nothing prints */ |
| 49 | | m_cent_data_out->write(space, 0, data); |
| 50 | | }; |
| 51 | | |
| 52 | 46 | WRITE8_MEMBER( mbee_state::pio_port_b_w ) |
| 53 | 47 | { |
| 54 | 48 | /* PIO port B - d5..d2 not emulated |
| r243526 | r243527 | |
| 72 | 66 | |
| 73 | 67 | if (m_cassette->input() > 0.03) data |= 1; |
| 74 | 68 | |
| 75 | | switch (m_io_config->read() & 0xc0) |
| 69 | data |= 8; // CTS held high via resistor. If low, the disk-based models think a mouse is plugged in. |
| 70 | |
| 71 | if (m_is_mbeett) |
| 76 | 72 | { |
| 77 | | case 0x00: |
| 78 | | data |= (UINT8)m_b7_vs << 7; |
| 79 | | break; |
| 80 | | case 0x40: |
| 81 | | data |= (UINT8)m_b7_rtc << 7; |
| 82 | | break; |
| 83 | | case 0x80: |
| 73 | if (m_b2) |
| 74 | data |= 0x82; |
| 75 | else |
| 84 | 76 | data |= 0x80; |
| 85 | | break; |
| 86 | | case 0xc0: |
| 87 | | data |= 0x80; // centronics busy line - FIXME |
| 88 | | break; |
| 89 | 77 | } |
| 78 | else |
| 79 | { |
| 80 | switch (m_io_config->read() & 0xc0) |
| 81 | { |
| 82 | case 0x00: |
| 83 | data |= (UINT8)m_b7_vs << 7; |
| 84 | break; |
| 85 | case 0x40: |
| 86 | data |= (UINT8)m_b7_rtc << 7; |
| 87 | break; |
| 88 | case 0x80: |
| 89 | data |= 0x80; |
| 90 | break; |
| 91 | case 0xc0: |
| 92 | data |= 0x80; // centronics busy line - FIXME |
| 93 | break; |
| 94 | } |
| 95 | data |= (UINT8)m_b2 << 1; // key pressed on new keyboard |
| 96 | } |
| 90 | 97 | |
| 91 | | data |= (UINT8)m_b2 << 1; // key pressed on new keyboard |
| 92 | | data |= 8; // CTS held high via resistor. If low, the disk-based models think a mouse is plugged in. |
| 93 | | |
| 94 | 98 | return data; |
| 95 | | }; |
| 99 | } |
| 96 | 100 | |
| 97 | 101 | /************************************************************************************* |
| 98 | 102 | |
| r243526 | r243527 | |
| 113 | 117 | m_fdc_rq = (m_fdc_rq & 1) | (state << 1); |
| 114 | 118 | } |
| 115 | 119 | |
| 116 | | READ8_MEMBER( mbee_state::mbee_fdc_status_r ) |
| 120 | READ8_MEMBER( mbee_state::fdc_status_r ) |
| 117 | 121 | { |
| 118 | 122 | /* d7 indicate if IRQ or DRQ is occurring (1=happening) |
| 119 | 123 | d6..d0 not used */ |
| r243526 | r243527 | |
| 121 | 125 | return m_fdc_rq ? 0xff : 0x7f; |
| 122 | 126 | } |
| 123 | 127 | |
| 124 | | WRITE8_MEMBER( mbee_state::mbee_fdc_motor_w ) |
| 128 | WRITE8_MEMBER( mbee_state::fdc_motor_w ) |
| 125 | 129 | { |
| 126 | 130 | /* d7..d4 not used |
| 127 | 131 | d3 density (1=MFM) |
| r243526 | r243527 | |
| 152 | 156 | ************************************************************/ |
| 153 | 157 | |
| 154 | 158 | |
| 155 | | TIMER_CALLBACK_MEMBER(mbee_state::mbee256_kbd) |
| 159 | TIMER_CALLBACK_MEMBER( mbee_state::timer_newkb ) |
| 156 | 160 | { |
| 157 | 161 | /* Keyboard scanner is a Mostek M3870 chip. Its speed of operation is determined by a 15k resistor on |
| 158 | 162 | pin 2 (XTL2) and is therefore 2MHz. If a key change is detected (up or down), the /strobe |
| r243526 | r243527 | |
| 179 | 183 | if (BIT(pressed^m_mbee256_was_pressed[i], j)) |
| 180 | 184 | { |
| 181 | 185 | // put it in the queue |
| 182 | | m_mbee256_q[m_mbee256_q_pos] = (i << 3) | j | (BIT(pressed, j) ? 0x80 : 0); |
| 186 | UINT8 code = (i << 3) | j | (BIT(pressed, j) ? 0x80 : 0); |
| 187 | m_mbee256_q[m_mbee256_q_pos] = code; |
| 183 | 188 | if (m_mbee256_q_pos < 19) m_mbee256_q_pos++; |
| 184 | 189 | } |
| 185 | 190 | } |
| r243526 | r243527 | |
| 194 | 199 | //breaks keyboard m_pio->port_b_write(pio_port_b_r(generic_space(),0,0xff)); |
| 195 | 200 | } |
| 196 | 201 | |
| 197 | | timer_set(attotime::from_hz(25), TIMER_MBEE256_KBD); |
| 202 | timer_set(attotime::from_hz(25), TIMER_MBEE_NEWKB); |
| 198 | 203 | } |
| 199 | 204 | |
| 200 | 205 | READ8_MEMBER( mbee_state::mbee256_18_r ) |
| r243526 | r243527 | |
| 254 | 259 | } |
| 255 | 260 | |
| 256 | 261 | // This doesn't seem to do anything; the time works without it. |
| 257 | | TIMER_CALLBACK_MEMBER( mbee_state::mbee_rtc_irq ) |
| 262 | TIMER_CALLBACK_MEMBER( mbee_state::timer_rtc_irq ) |
| 258 | 263 | { |
| 259 | 264 | if (!m_rtc) |
| 260 | 265 | return; |
| r243526 | r243527 | |
| 467 | 472 | |
| 468 | 473 | |
| 469 | 474 | /* after the first 4 bytes have been read from ROM, switch the ram back in */ |
| 470 | | TIMER_CALLBACK_MEMBER( mbee_state::mbee_reset ) |
| 475 | TIMER_CALLBACK_MEMBER( mbee_state::timer_boot ) |
| 471 | 476 | { |
| 472 | 477 | m_boot->set_entry(0); |
| 473 | 478 | } |
| r243526 | r243527 | |
| 480 | 485 | MACHINE_RESET_MEMBER( mbee_state, mbee ) |
| 481 | 486 | { |
| 482 | 487 | m_boot->set_entry(1); |
| 483 | | timer_set(attotime::from_usec(4), TIMER_MBEE_RESET); |
| 488 | timer_set(attotime::from_usec(4), TIMER_MBEE_BOOT); |
| 484 | 489 | } |
| 485 | 490 | |
| 486 | 491 | MACHINE_RESET_MEMBER( mbee_state, mbee56 ) |
| 487 | 492 | { |
| 488 | 493 | machine_reset_common_disk(); |
| 489 | 494 | m_boot->set_entry(1); |
| 490 | | timer_set(attotime::from_usec(4), TIMER_MBEE_RESET); |
| 495 | timer_set(attotime::from_usec(4), TIMER_MBEE_BOOT); |
| 491 | 496 | } |
| 492 | 497 | |
| 493 | 498 | MACHINE_RESET_MEMBER( mbee_state, mbee128 ) |
| r243526 | r243527 | |
| 513 | 518 | for (i = 0; i < 15; i++) m_mbee256_was_pressed[i] = 0; |
| 514 | 519 | m_mbee256_q_pos = 0; |
| 515 | 520 | m_boot->set_entry(1); |
| 516 | | timer_set(attotime::from_usec(4), TIMER_MBEE_RESET); |
| 521 | timer_set(attotime::from_usec(4), TIMER_MBEE_BOOT); |
| 517 | 522 | } |
| 518 | 523 | |
| 519 | | INTERRUPT_GEN_MEMBER( mbee_state::mbee_interrupt ) |
| 520 | | { |
| 521 | | // Due to the uncertainly and hackage here, this is commented out for now - Robbbert - 05-Oct-2010 |
| 522 | | #if 0 |
| 523 | | |
| 524 | | //address_space &space = m_maincpu->space(AS_PROGRAM); |
| 525 | | /* The printer status connects to the pio ASTB pin, and the printer changing to not |
| 526 | | busy should signal an interrupt routine at B61C, (next line) but this doesn't work. |
| 527 | | The line below does what the interrupt should be doing. */ |
| 528 | | /* But it would break any program loaded to that area of memory, such as CP/M programs */ |
| 529 | | |
| 530 | | //m_z80pio->strobe_a(centronics_busy_r(m_centronics)); /* signal int when not busy (L->H) */ |
| 531 | | //space.write_byte(0x109, centronics_busy_r(m_centronics)); |
| 532 | | |
| 533 | | |
| 534 | | /* once per frame, pulse the PIO B bit 7 - it is in the schematic as an option, |
| 535 | | but need to find out what it does */ |
| 536 | | m_b7_busy = 0x80; |
| 537 | | irq0_line_hold(device); |
| 538 | | |
| 539 | | #endif |
| 540 | | } |
| 541 | | |
| 542 | 524 | DRIVER_INIT_MEMBER( mbee_state, mbee ) |
| 543 | 525 | { |
| 544 | 526 | UINT8 *RAM = memregion("maincpu")->base(); |
| 545 | 527 | m_boot->configure_entries(0, 2, &RAM[0x0000], 0x8000); |
| 546 | 528 | m_size = 0x4000; |
| 547 | 529 | m_has_oldkb = 1; |
| 530 | m_is_mbeett = 0; |
| 548 | 531 | } |
| 549 | 532 | |
| 550 | 533 | DRIVER_INIT_MEMBER( mbee_state, mbeeic ) |
| r243526 | r243527 | |
| 558 | 541 | m_pak->set_entry(0); |
| 559 | 542 | m_size = 0x8000; |
| 560 | 543 | m_has_oldkb = 1; |
| 544 | m_is_mbeett = 0; |
| 561 | 545 | } |
| 562 | 546 | |
| 563 | 547 | DRIVER_INIT_MEMBER( mbee_state, mbeepc ) |
| r243526 | r243527 | |
| 575 | 559 | m_telcom->set_entry(0); |
| 576 | 560 | m_size = 0x8000; |
| 577 | 561 | m_has_oldkb = 1; |
| 562 | m_is_mbeett = 0; |
| 578 | 563 | } |
| 579 | 564 | |
| 580 | 565 | DRIVER_INIT_MEMBER( mbee_state, mbeepc85 ) |
| r243526 | r243527 | |
| 592 | 577 | m_telcom->set_entry(0); |
| 593 | 578 | m_size = 0x8000; |
| 594 | 579 | m_has_oldkb = 1; |
| 580 | m_is_mbeett = 0; |
| 595 | 581 | } |
| 596 | 582 | |
| 597 | 583 | DRIVER_INIT_MEMBER( mbee_state, mbeeppc ) |
| r243526 | r243527 | |
| 614 | 600 | m_basic->set_entry(0); |
| 615 | 601 | m_size = 0x8000; |
| 616 | 602 | m_has_oldkb = 1; |
| 603 | m_is_mbeett = 0; |
| 617 | 604 | } |
| 618 | 605 | |
| 619 | 606 | DRIVER_INIT_MEMBER( mbee_state, mbee56 ) |
| r243526 | r243527 | |
| 622 | 609 | m_boot->configure_entries(0, 2, &RAM[0x0000], 0xe000); |
| 623 | 610 | m_size = 0xe000; |
| 624 | 611 | m_has_oldkb = 1; |
| 612 | m_is_mbeett = 0; |
| 625 | 613 | } |
| 626 | 614 | |
| 627 | 615 | DRIVER_INIT_MEMBER( mbee_state, mbee128 ) |
| r243526 | r243527 | |
| 645 | 633 | |
| 646 | 634 | m_size = 0x8000; |
| 647 | 635 | m_has_oldkb = 1; |
| 636 | m_is_mbeett = 0; |
| 648 | 637 | } |
| 649 | 638 | |
| 650 | 639 | DRIVER_INIT_MEMBER( mbee_state, mbee256 ) |
| r243526 | r243527 | |
| 665 | 654 | } |
| 666 | 655 | |
| 667 | 656 | timer_set(attotime::from_hz(1), TIMER_MBEE_RTC_IRQ); /* timer for rtc */ |
| 668 | | timer_set(attotime::from_hz(50), TIMER_MBEE256_KBD); /* timer for kbd */ |
| 657 | timer_set(attotime::from_hz(25), TIMER_MBEE_NEWKB); /* timer for kbd */ |
| 669 | 658 | |
| 670 | 659 | m_size = 0x8000; |
| 671 | 660 | m_has_oldkb = 0; |
| 661 | m_is_mbeett = 0; |
| 672 | 662 | } |
| 673 | 663 | |
| 674 | 664 | DRIVER_INIT_MEMBER( mbee_state, mbeett ) |
| r243526 | r243527 | |
| 686 | 676 | m_telcom->set_entry(0); |
| 687 | 677 | |
| 688 | 678 | timer_set(attotime::from_hz(1), TIMER_MBEE_RTC_IRQ); /* timer for rtc */ |
| 689 | | timer_set(attotime::from_hz(25), TIMER_MBEE256_KBD); /* timer for kbd */ |
| 679 | timer_set(attotime::from_hz(25), TIMER_MBEE_NEWKB); /* timer for kbd */ |
| 690 | 680 | |
| 691 | 681 | m_size = 0x8000; |
| 692 | 682 | m_has_oldkb = 0; |
| 683 | m_is_mbeett = 1; |
| 693 | 684 | } |
| 694 | 685 | |
| 695 | 686 | |