trunk/src/mess/machine/ecbbus.h
| r19385 | r19386 | |
| 113 | 113 | DECLARE_WRITE_LINE_MEMBER( int_w ); |
| 114 | 114 | DECLARE_WRITE_LINE_MEMBER( nmi_w ); |
| 115 | 115 | |
| 116 | | UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); |
| 117 | | |
| 118 | 116 | protected: |
| 119 | 117 | // device-level overrides |
| 120 | 118 | virtual void device_start(); |
| r19385 | r19386 | |
| 154 | 152 | virtual void ecbbus_mem_w(offs_t offset, UINT8 data) { }; |
| 155 | 153 | virtual UINT8 ecbbus_io_r(offs_t offset) { return 0; }; |
| 156 | 154 | virtual void ecbbus_io_w(offs_t offset, UINT8 data) { }; |
| 157 | | virtual UINT32 ecbbus_screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { return false; } |
| 158 | 155 | |
| 159 | 156 | public: |
| 160 | 157 | ecbbus_device *m_ecb; |
trunk/src/mess/machine/ecb_grip.c
| r19385 | r19386 | |
| 224 | 224 | |
| 225 | 225 | void grip_device::crtc_update_row(mc6845_device *device, bitmap_rgb32 &bitmap, const rectangle &cliprect, UINT16 ma, UINT8 ra, UINT16 y, UINT8 x_count, INT8 cursor_x, void *param) |
| 226 | 226 | { |
| 227 | | const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); |
| 228 | 227 | int column, bit; |
| 229 | 228 | |
| 230 | 229 | for (column = 0; column < x_count; column++) |
| r19385 | r19386 | |
| 237 | 236 | int x = (column * 8) + bit; |
| 238 | 237 | int color = m_flash ? 0 : BIT(data, bit); |
| 239 | 238 | |
| 240 | | bitmap.pix32(y, x) = palette[color]; |
| 239 | bitmap.pix32(y, x) = RGB_MONOCHROME_WHITE[color]; |
| 241 | 240 | } |
| 242 | 241 | } |
| 243 | 242 | } |
| r19385 | r19386 | |
| 285 | 284 | |
| 286 | 285 | static const mc6845_interface crtc_intf = |
| 287 | 286 | { |
| 288 | | ":" SCREEN_TAG, |
| 287 | SCREEN_TAG, |
| 289 | 288 | 8, |
| 290 | 289 | NULL, |
| 291 | 290 | grip_update_row, |
| r19385 | r19386 | |
| 533 | 532 | MCFG_CPU_PROGRAM_MAP(grip_mem) |
| 534 | 533 | MCFG_CPU_IO_MAP(grip_io) |
| 535 | 534 | |
| 535 | // video hardware |
| 536 | MCFG_SCREEN_ADD(SCREEN_TAG, RASTER) |
| 537 | MCFG_SCREEN_REFRESH_RATE(50) |
| 538 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // not accurate |
| 539 | MCFG_SCREEN_UPDATE_DEVICE(MC6845_TAG, mc6845_device, screen_update) |
| 540 | MCFG_SCREEN_SIZE(640, 480) |
| 541 | MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1) |
| 542 | |
| 536 | 543 | // sound hardware |
| 537 | 544 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 538 | 545 | MCFG_SOUND_ADD(SPEAKER_TAG, SPEAKER_SOUND, 0) |
| r19385 | r19386 | |
| 662 | 669 | m_sti(*this, Z80STI_TAG), |
| 663 | 670 | m_crtc(*this, MC6845_TAG), |
| 664 | 671 | m_centronics(*this, CENTRONICS_TAG), |
| 665 | | m_speaker(*this, SPEAKER_TAG) |
| 672 | m_speaker(*this, SPEAKER_TAG), |
| 673 | m_video_ram(*this, "video_ram") |
| 666 | 674 | { |
| 667 | 675 | } |
| 668 | 676 | |
| r19385 | r19386 | |
| 675 | 683 | m_ecb = machine().device<ecbbus_device>(ECBBUS_TAG); |
| 676 | 684 | |
| 677 | 685 | // allocate video RAM |
| 678 | | m_video_ram = auto_alloc_array(machine(), UINT8, VIDEORAM_SIZE); |
| 686 | m_video_ram.allocate(VIDEORAM_SIZE); |
| 679 | 687 | |
| 680 | 688 | // setup GRIP memory banking |
| 681 | 689 | membank("videoram")->configure_entries(0, 2, m_video_ram, 0x8000); |
| r19385 | r19386 | |
| 690 | 698 | save_item(NAME(m_vol1)); |
| 691 | 699 | save_item(NAME(m_keydata)); |
| 692 | 700 | save_item(NAME(m_kbf)); |
| 693 | | save_pointer(NAME(m_video_ram), VIDEORAM_SIZE); |
| 694 | 701 | save_item(NAME(m_lps)); |
| 695 | 702 | save_item(NAME(m_page)); |
| 696 | 703 | save_item(NAME(m_flash)); |
| r19385 | r19386 | |
| 933 | 940 | } |
| 934 | 941 | } |
| 935 | 942 | } |
| 936 | | |
| 937 | | |
| 938 | | //------------------------------------------------- |
| 939 | | // ecbbus_screen_update - screen update |
| 940 | | //------------------------------------------------- |
| 941 | | |
| 942 | | UINT32 grip_device::ecbbus_screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) |
| 943 | | { |
| 944 | | m_crtc->screen_update(screen, bitmap, cliprect); |
| 945 | | |
| 946 | | return false; |
| 947 | | } |
trunk/src/mess/machine/ecb_grip.h
| r19385 | r19386 | |
| 73 | 73 | // device_ecbbus_card_interface overrides |
| 74 | 74 | virtual UINT8 ecbbus_io_r(offs_t offset); |
| 75 | 75 | virtual void ecbbus_io_w(offs_t offset, UINT8 data); |
| 76 | | virtual UINT32 ecbbus_screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); |
| 77 | 76 | |
| 78 | 77 | private: |
| 79 | 78 | required_device<i8255_device> m_ppi; |
| r19385 | r19386 | |
| 93 | 92 | int m_kbf; // keyboard buffer full |
| 94 | 93 | |
| 95 | 94 | // video state |
| 96 | | UINT8 *m_video_ram; // video RAM |
| 95 | optional_shared_ptr<UINT8> m_video_ram; // video RAM |
| 97 | 96 | int m_lps; // light pen sense |
| 98 | 97 | int m_page; // video page |
| 99 | 98 | int m_flash; // flash |
trunk/src/mess/drivers/prof80.c
| r19385 | r19386 | |
| 605 | 605 | MCFG_CPU_PROGRAM_MAP(prof80_mem) |
| 606 | 606 | MCFG_CPU_IO_MAP(prof80_io) |
| 607 | 607 | |
| 608 | | // video hardware |
| 609 | | MCFG_SCREEN_ADD(SCREEN_TAG, RASTER) |
| 610 | | MCFG_SCREEN_REFRESH_RATE(50) |
| 611 | | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // not accurate |
| 612 | | MCFG_SCREEN_UPDATE_DEVICE(ECBBUS_TAG, ecbbus_device, screen_update) |
| 613 | | MCFG_SCREEN_SIZE(640, 480) |
| 614 | | MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1) |
| 615 | | MCFG_PALETTE_LENGTH(2) |
| 616 | | MCFG_PALETTE_INIT(black_and_white) |
| 617 | | |
| 618 | 608 | // devices |
| 619 | 609 | MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL_32_768kHz, rtc_intf) |
| 620 | 610 | MCFG_UPD765A_ADD(UPD765_TAG, false, true) |