diff options
Diffstat (limited to 'src/mame/drivers/pce220.cpp')
-rw-r--r-- | src/mame/drivers/pce220.cpp | 1120 |
1 files changed, 0 insertions, 1120 deletions
diff --git a/src/mame/drivers/pce220.cpp b/src/mame/drivers/pce220.cpp deleted file mode 100644 index 36712b3af86..00000000000 --- a/src/mame/drivers/pce220.cpp +++ /dev/null @@ -1,1120 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Angelo Salese, Sandro Ronco -/*************************************************************************** - - Sharp PC-E220 - - preliminary driver by Angelo Salese - improvements by Sandro Ronco - - Notes: - - NVRAM works only if the machine is turned off (with OFF key) before closing MESS - - TODO: - - ON key doesn't work. - - Fix the PC-G850V keyboard, that sometimes is too slow. - - LCD contrast. - - Add an artwork for the LCD symbols. - - Add other models that have a similar hardware. - - More info: - http://wwwhomes.uni-bielefeld.de/achim/pc-e220.html - http://www.akiyan.com/pc-g850_technical_data (in Japanese) - - PC-G815 added 2016-05-14, not working at all. Needs new IO map. - Looks like base.rom runs first, then rom00 is at 0x8000 and rom01 is at 0xc000. - -****************************************************************************/ - -#include "emu.h" -#include "cpu/z80/z80.h" -#include "machine/nvram.h" -#include "machine/pce220_ser.h" -#include "machine/ram.h" -#include "machine/timer.h" -#include "sound/beep.h" -#include "emupal.h" -#include "screen.h" -#include "speaker.h" - - -// Interrupt flags -#define IRQ_FLAG_KEY 0x01 -#define IRQ_FLAG_ON 0x02 -#define IRQ_FLAG_TIMER 0x04 - -class pce220_state : public driver_device -{ -public: - pce220_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) - , m_maincpu(*this, "maincpu") - , m_ram(*this, RAM_TAG) - , m_beep(*this, "beeper") - , m_serial(*this, PCE220SERIAL_TAG) - { } - - void pce220(machine_config &config); - - DECLARE_INPUT_CHANGED_MEMBER(kb_irq); - DECLARE_INPUT_CHANGED_MEMBER(on_irq); - -protected: - required_device<cpu_device> m_maincpu; - required_device<ram_device> m_ram; - required_device<beep_device> m_beep; - required_device<pce220_serial_device> m_serial; - - // HD61202 LCD controller - uint8_t m_lcd_index_row; - uint8_t m_lcd_index_col; - uint8_t m_lcd_start_line; - uint8_t m_lcd_on; - - //basic machine - uint8_t m_bank_num; - uint8_t m_irq_mask; - uint8_t m_irq_flag; - uint8_t m_timer_status; - uint16_t m_kb_matrix; - uint8_t *m_vram; - - uint8_t m_port15; - uint8_t m_port18; - - virtual void machine_start() override; - virtual void machine_reset() override; - - TIMER_DEVICE_CALLBACK_MEMBER(pce220_timer_callback); - - void pce220_palette(palette_device &palette) const; - - uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - DECLARE_READ8_MEMBER( lcd_status_r ); - DECLARE_WRITE8_MEMBER( lcd_control_w ); - DECLARE_READ8_MEMBER( lcd_data_r ); - DECLARE_WRITE8_MEMBER( lcd_data_w ); - DECLARE_READ8_MEMBER( rom_bank_r ); - DECLARE_WRITE8_MEMBER( rom_bank_w ); - DECLARE_WRITE8_MEMBER( ram_bank_w ); - DECLARE_READ8_MEMBER( timer_r ); - DECLARE_WRITE8_MEMBER( timer_w ); - DECLARE_WRITE8_MEMBER( boot_bank_w ); - DECLARE_READ8_MEMBER( port15_r ); - DECLARE_WRITE8_MEMBER( port15_w ); - DECLARE_READ8_MEMBER( port18_r ); - DECLARE_WRITE8_MEMBER( port18_w ); - DECLARE_READ8_MEMBER( port1f_r ); - DECLARE_WRITE8_MEMBER( kb_matrix_w ); - DECLARE_READ8_MEMBER( kb_r ); - DECLARE_READ8_MEMBER( irq_status_r ); - DECLARE_WRITE8_MEMBER( irq_ack_w ); - DECLARE_WRITE8_MEMBER( irq_mask_w ); - - void pce220_io(address_map &map); - void pce220_mem(address_map &map); -}; - -class pcg850v_state : public pce220_state -{ -public: - pcg850v_state(const machine_config &mconfig, device_type type, const char *tag) - : pce220_state(mconfig, type, tag) - { } - - void pcg850v(machine_config &config); - void pcg815(machine_config &config); - -private: - uint8_t m_g850v_bank_num; - uint8_t m_lcd_effects; - uint8_t m_lcd_contrast; - uint8_t m_lcd_read_mode; - - virtual void machine_start() override; - virtual void machine_reset() override; - uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - DECLARE_READ8_MEMBER( g850v_bank_r ); - DECLARE_WRITE8_MEMBER( g850v_bank_w ); - DECLARE_READ8_MEMBER( g850v_lcd_status_r ); - DECLARE_WRITE8_MEMBER( g850v_lcd_control_w ); - DECLARE_READ8_MEMBER( g850v_lcd_data_r ); - DECLARE_WRITE8_MEMBER( g850v_lcd_data_w ); - void pcg850v_io(address_map &map); -}; - -uint32_t pce220_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - uint8_t lcd_symbols[4]; - - if (m_lcd_on) - { - for (int y = 0; y < 4; y++) - { - int row_pos = 0; - - for (int x = 0; x < 12; x++) - { - for (int xi = 0; xi < 5; xi++) - { - for (int yi = 0; yi < 8; yi++) - { - //first 12 columns - int panel1_addr = ((m_lcd_start_line>>3) + y)*0x40 + row_pos; - bitmap.pix16(y*8 + yi, x*6 + xi) = (m_vram[panel1_addr & 0x1ff] >> yi) & 1; - - //last 12 columns - int panel2_addr = ((m_lcd_start_line>>3) + y + 4)*0x40 + (59-row_pos); - bitmap.pix16(y*8 + yi, (x+12)*6 + xi) = (m_vram[panel2_addr & 0x1ff] >> yi) & 1; - } - - row_pos++; - } - } - } - - lcd_symbols[0] = m_vram[((m_lcd_start_line>>3)*0x40 + 0x03c) & 0x1ff]; - lcd_symbols[1] = m_vram[((m_lcd_start_line>>3)*0x40 + 0x0fc) & 0x1ff]; - lcd_symbols[2] = m_vram[((m_lcd_start_line>>3)*0x40 + 0x13c) & 0x1ff]; - lcd_symbols[3] = m_vram[((m_lcd_start_line>>3)*0x40 + 0x1fc) & 0x1ff]; - } - else - { - bitmap.fill(0, cliprect); - memset(lcd_symbols, 0, sizeof(lcd_symbols)); - } - - output().set_value("BUSY" , (lcd_symbols[0] & 0x01) ? 1 : 0); - output().set_value("CAPS" , (lcd_symbols[0] & 0x02) ? 1 : 0); - output().set_value("KANA" , (lcd_symbols[0] & 0x04) ? 1 : 0); - output().set_value("SYO" , (lcd_symbols[0] & 0x08) ? 1 : 0); - output().set_value("2ndF" , (lcd_symbols[0] & 0x10) ? 1 : 0); - output().set_value("TEXT" , (lcd_symbols[1] & 0x08) ? 1 : 0); - output().set_value("CASL" , (lcd_symbols[1] & 0x10) ? 1 : 0); - output().set_value("PRO" , (lcd_symbols[1] & 0x20) ? 1 : 0); - output().set_value("RUN" , (lcd_symbols[1] & 0x40) ? 1 : 0); - output().set_value("BATT" , (lcd_symbols[2] & 0x01) ? 1 : 0); - output().set_value("E" , (lcd_symbols[2] & 0x02) ? 1 : 0); - output().set_value("M" , (lcd_symbols[2] & 0x04) ? 1 : 0); - output().set_value("CONST", (lcd_symbols[2] & 0x08) ? 1 : 0); - output().set_value("RAD" , (lcd_symbols[2] & 0x10) ? 1 : 0); - output().set_value("G" , (lcd_symbols[2] & 0x20) ? 1 : 0); - output().set_value("DE" , (lcd_symbols[2] & 0x40) ? 1 : 0); - output().set_value("STAT" , (lcd_symbols[3] & 0x20) ? 1 : 0); - output().set_value("PRINT", (lcd_symbols[3] & 0x40) ? 1 : 0); - - return 0; -} - -uint32_t pcg850v_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - uint8_t lcd_symbols[6]; - int color0 = 0; - int color1 = 1; - - if (m_lcd_on) - { - switch (m_lcd_effects) - { - case 0x01: //mirror effect - //TODO - break; - case 0x05: //black mask effect - color0 = color1 = 1; - break; - case 0x07: //reverse effect - color0 = 1; - color1 = 0; - break; - case 0x08: //contrast effect - //TODO: use the max contrast value - break; - case 0x0e: //white mask effect - color0 = color1 = 0; - break; - } - - for (int y = 0; y < 6; y++) - { - int row_pos = 0; - - for (int x = 0; x < 24; x++) - { - for (int xi = 0; xi < 6; xi++) - { - for (int yi = 0; yi < 8; yi++) - { - int addr = ((m_lcd_start_line>>3) + y)*0x100 + row_pos; - bitmap.pix16(y*8 + yi, x*6 + xi) = ((m_vram[addr & 0x7ff] >> yi) & 1 ) ? color1 : color0; - } - - row_pos++; - } - } - } - - lcd_symbols[0] = m_vram[((m_lcd_start_line>>3)*0x100 + 0x090) & 0x7ff]; - lcd_symbols[1] = m_vram[((m_lcd_start_line>>3)*0x100 + 0x190) & 0x7ff]; - lcd_symbols[2] = m_vram[((m_lcd_start_line>>3)*0x100 + 0x290) & 0x7ff]; - lcd_symbols[3] = m_vram[((m_lcd_start_line>>3)*0x100 + 0x390) & 0x7ff]; - lcd_symbols[4] = m_vram[((m_lcd_start_line>>3)*0x100 + 0x490) & 0x7ff]; - lcd_symbols[5] = m_vram[((m_lcd_start_line>>3)*0x100 + 0x590) & 0x7ff]; - } - else - { - bitmap.fill(0, cliprect); - memset(lcd_symbols, 0, sizeof(lcd_symbols)); - } - - output().set_value("RUN" , (lcd_symbols[0] & 0x02) ? 1 : 0); - output().set_value("PRO" , (lcd_symbols[0] & 0x08) ? 1 : 0); - output().set_value("TEXT" , (lcd_symbols[0] & 0x40) ? 1 : 0); - output().set_value("CASL" , (lcd_symbols[1] & 0x08) ? 1 : 0); - output().set_value("STAT" , (lcd_symbols[2] & 0x01) ? 1 : 0); - output().set_value("2ndF" , (lcd_symbols[2] & 0x20) ? 1 : 0); - output().set_value("M" , (lcd_symbols[2] & 0x80) ? 1 : 0); - output().set_value("CAPS" , (lcd_symbols[3] & 0x04) ? 1 : 0); - output().set_value("KANA" , (lcd_symbols[3] & 0x80) ? 1 : 0); - output().set_value("SYO" , (lcd_symbols[4] & 0x02) ? 1 : 0); - output().set_value("DE" , (lcd_symbols[4] & 0x10) ? 1 : 0); - output().set_value("G" , (lcd_symbols[4] & 0x40) ? 1 : 0); - output().set_value("RAD" , (lcd_symbols[5] & 0x01) ? 1 : 0); - output().set_value("CONST", (lcd_symbols[5] & 0x04) ? 1 : 0); - output().set_value("PRINT", (lcd_symbols[5] & 0x10) ? 1 : 0); - output().set_value("BUSY" , (lcd_symbols[5] & 0x40) ? 1 : 0); - output().set_value("BATT" , (lcd_symbols[5] & 0x80) ? 1 : 0); - - return 0; -} - -READ8_MEMBER( pce220_state::lcd_status_r ) -{ - /* - x--- ---- Busy (not emulated) - --x- ---- LCD on/off - ---x ---- Reset - */ - uint8_t data = 0; - - data &= (m_lcd_on<<5); - - return data; -} - -WRITE8_MEMBER( pce220_state::lcd_control_w ) -{ - if((data & 0xfe) == 0x3e) //Display on/off - m_lcd_on = data & 0x01; - if((data & 0xb8) == 0xb8) //Set page - m_lcd_index_row = data & 0x07; - if((data & 0xc0) == 0x40) //Set address - m_lcd_index_col = data & 0x3f; - if((data & 0xc0) == 0xc0) //Set display start line - m_lcd_start_line = data & 0x3f; -} - -READ8_MEMBER( pce220_state::lcd_data_r ) -{ - return m_vram[(m_lcd_index_row*0x40 + m_lcd_index_col - 1) & 0x1ff]; -} - -WRITE8_MEMBER( pce220_state::lcd_data_w ) -{ - m_vram[(m_lcd_index_row*0x40 + m_lcd_index_col) & 0x1ff] = data; - - m_lcd_index_col++; -} - -READ8_MEMBER( pce220_state::rom_bank_r ) -{ - return m_bank_num; -} - -WRITE8_MEMBER( pce220_state::rom_bank_w ) -{ - uint8_t bank4 = data & 0x07; // bits 0,1,2 - uint8_t bank3 = (data & 0x70) >> 4; // bits 4,5,6 - - m_bank_num = data; - - membank("bank3")->set_entry(bank3); - membank("bank4")->set_entry(bank4); -} - -WRITE8_MEMBER( pce220_state::ram_bank_w ) -{ - uint8_t bank = BIT(data,2); - - membank("bank1")->set_entry(bank); - membank("bank2")->set_entry(bank); -} - -READ8_MEMBER( pce220_state::timer_r ) -{ - return m_timer_status; -} - -WRITE8_MEMBER( pce220_state::timer_w ) -{ - m_timer_status = data & 1; -} - -WRITE8_MEMBER( pce220_state::boot_bank_w ) -{ - // set to 1 after boot for restore the ram in the first bank - if (data & 0x01) - { - address_space &space_prg = m_maincpu->space(AS_PROGRAM); - space_prg.install_write_bank(0x0000, 0x3fff, "bank1"); - membank("bank1")->set_entry(0); - } -} - -READ8_MEMBER( pce220_state::port15_r ) -{ - /* - x--- ---- XIN input enabled - ---- ---0 - */ - return m_port15; -} - -WRITE8_MEMBER( pce220_state::port15_w ) -{ - m_serial->enable_interface(BIT(data, 7)); - - m_port15 = data; -} - -READ8_MEMBER( pce220_state::port18_r ) -{ - /* - x--- ---- XOUT/TXD - ---- --x- DOUT - ---- ---x BUSY/CTS - */ - - return m_port18; -} - -WRITE8_MEMBER( pce220_state::port18_w ) -{ - m_beep->set_state(BIT(data, 7)); - - m_serial->out_busy(BIT(data, 0)); - m_serial->out_dout(BIT(data, 1)); - m_serial->out_xout(BIT(data, 7)); - - m_port18 = data; -} - -READ8_MEMBER( pce220_state::port1f_r ) -{ - /* - x--- ---- ON - resp. break key status (?) - ---- -x-- XIN/RXD - ---- --x- ACK/RTS - ---- ---x DIN - */ - - uint8_t data = 0; - - data |= m_serial->in_din()<<0; - data |= m_serial->in_ack()<<1; - data |= m_serial->in_xin()<<2; - - data |= ioport("ON")->read()<<7; - - return data; -} - -WRITE8_MEMBER( pce220_state::kb_matrix_w ) -{ - switch(offset) - { - case 0: - m_kb_matrix = (m_kb_matrix & 0x300) | data; - break; - case 1: - m_kb_matrix = (m_kb_matrix & 0xff) | ((data&0x03)<<8); - break; - } -} - -READ8_MEMBER( pce220_state::kb_r ) -{ - uint8_t data = 0x00; - - if (m_kb_matrix & 0x01) - data |= ioport("LINE0")->read(); - if (m_kb_matrix & 0x02) - data |= ioport("LINE1")->read(); - if (m_kb_matrix & 0x04) - data |= ioport("LINE2")->read(); - if (m_kb_matrix & 0x08) - data |= ioport("LINE3")->read(); - if (m_kb_matrix & 0x10) - data |= ioport("LINE4")->read(); - if (m_kb_matrix & 0x20) - data |= ioport("LINE5")->read(); - if (m_kb_matrix & 0x40) - data |= ioport("LINE6")->read(); - if (m_kb_matrix & 0x80) - data |= ioport("LINE7")->read(); - if (m_kb_matrix & 0x100) - data |= ioport("LINE8")->read(); - if (m_kb_matrix & 0x200) - data |= ioport("LINE9")->read(); - - return data; -} - -READ8_MEMBER( pce220_state::irq_status_r ) -{ - /* - ---- -x-- timer - ---- --x- ON-Key - ---- ---x keyboard - */ - return m_irq_flag; -} - -WRITE8_MEMBER( pce220_state::irq_ack_w ) -{ - m_irq_flag &= ~data; -} - -WRITE8_MEMBER( pce220_state::irq_mask_w ) -{ - m_irq_mask = data; -} - -READ8_MEMBER( pcg850v_state::g850v_bank_r ) -{ - return m_g850v_bank_num; -} - -WRITE8_MEMBER( pcg850v_state::g850v_bank_w ) -{ - address_space &space_prg = m_maincpu->space(AS_PROGRAM); - - if (data < 0x16) - { - space_prg.install_read_bank(0xc000, 0xffff, "bank4"); - membank("bank4")->set_entry(data); - } - else - { - space_prg.unmap_read(0xc000, 0xffff); - } - - m_g850v_bank_num = data; -} - -READ8_MEMBER( pcg850v_state::g850v_lcd_status_r ) -{ - /* - x--- ---- Busy (not emulated) - --x- ---- LCD on/off - */ - uint8_t data = 0; - - data &= (m_lcd_on<<5); - - return data; -} - -WRITE8_MEMBER( pcg850v_state::g850v_lcd_control_w ) -{ - if ((data & 0xf0) == 0x00) // LCD column LSB - { - m_lcd_index_col = (m_lcd_index_col & 0xf0) | (data & 0x0f); - } - else if ((data & 0xf0) == 0x10) // LCD column MSB - { - m_lcd_index_col = (m_lcd_index_col & 0x0f) | ((data<<4) & 0xf0); - } - else if ((data & 0xf0) == 0x20) // LCD on/off - { - m_lcd_on = BIT(data, 0); - } - else if ((data & 0xc0) == 0x40) // display start line - { - m_lcd_start_line = data & 0x3f; - } - else if ((data & 0xe0) == 0x80) // contrast level - { - m_lcd_contrast = data; - } - else if ((data & 0xf0) == 0xa0) // display effects - { - m_lcd_effects = data & 0x0f; - } - else if ((data & 0xf0) == 0xb0) // set row - { - m_lcd_index_row = data & 0x07; - } - else if ((data & 0xf0) == 0xe0) // display controls - { - if (BIT(data, 1)) - m_lcd_contrast = 0; - - m_lcd_read_mode = BIT(data, 2); - } - else - { - logerror( "PC-G850V: Unknown LCD command 0x%02x\n", data ); - } -} - -READ8_MEMBER( pcg850v_state::g850v_lcd_data_r ) -{ - uint8_t data = m_vram[(m_lcd_index_row*0x100 + m_lcd_index_col - 1) & 0x7ff]; - - if (m_lcd_read_mode == 1) - m_lcd_index_col++; - - return data; -} - -WRITE8_MEMBER( pcg850v_state::g850v_lcd_data_w ) -{ - m_vram[(m_lcd_index_row*0x100 + m_lcd_index_col) & 0x7ff] = data; - - m_lcd_index_col++; -} - - -void pce220_state::pce220_mem(address_map &map) -{ - map(0x0000, 0x3fff).bankrw("bank1"); - map(0x4000, 0x7fff).bankrw("bank2"); - map(0x8000, 0xbfff).bankr("bank3"); - map(0xc000, 0xffff).bankr("bank4"); -} - -void pce220_state::pce220_io(address_map &map) -{ - map.unmap_value_high(); - map.global_mask(0xff); - map(0x10, 0x10).r(FUNC(pce220_state::kb_r)); - map(0x11, 0x12).w(FUNC(pce220_state::kb_matrix_w)); - map(0x13, 0x13).portr("SHIFT"); - map(0x14, 0x14).rw(FUNC(pce220_state::timer_r), FUNC(pce220_state::timer_w)); - map(0x15, 0x15).rw(FUNC(pce220_state::port15_r), FUNC(pce220_state::port15_w)); - map(0x16, 0x16).rw(FUNC(pce220_state::irq_status_r), FUNC(pce220_state::irq_ack_w)); - map(0x17, 0x17).w(FUNC(pce220_state::irq_mask_w)); - map(0x18, 0x18).rw(FUNC(pce220_state::port18_r), FUNC(pce220_state::port18_w)); - map(0x19, 0x19).rw(FUNC(pce220_state::rom_bank_r), FUNC(pce220_state::rom_bank_w)); - map(0x1a, 0x1a).w(FUNC(pce220_state::boot_bank_w)); - map(0x1b, 0x1b).w(FUNC(pce220_state::ram_bank_w)); - map(0x1c, 0x1c).nopw(); //peripheral reset - map(0x1d, 0x1d).portr("BATTERY"); - map(0x1e, 0x1e).nopw(); //??? - map(0x1f, 0x1f).r(FUNC(pce220_state::port1f_r)); - map(0x58, 0x58).w(FUNC(pce220_state::lcd_control_w)); - map(0x59, 0x59).r(FUNC(pce220_state::lcd_status_r)); - map(0x5a, 0x5a).w(FUNC(pce220_state::lcd_data_w)); - map(0x5b, 0x5b).r(FUNC(pce220_state::lcd_data_r)); -} - -void pcg850v_state::pcg850v_io(address_map &map) -{ - map.unmap_value_high(); - map.global_mask(0xff); - map(0x10, 0x10).r(FUNC(pcg850v_state::kb_r)); - map(0x11, 0x12).w(FUNC(pcg850v_state::kb_matrix_w)); - map(0x13, 0x13).portr("SHIFT"); - map(0x14, 0x14).rw(FUNC(pcg850v_state::timer_r), FUNC(pcg850v_state::timer_w)); - map(0x15, 0x15).rw(FUNC(pcg850v_state::port15_r), FUNC(pcg850v_state::port15_w)); - map(0x16, 0x16).rw(FUNC(pcg850v_state::irq_status_r), FUNC(pcg850v_state::irq_ack_w)); - map(0x17, 0x17).w(FUNC(pcg850v_state::irq_mask_w)); - map(0x18, 0x18).rw(FUNC(pcg850v_state::port18_r), FUNC(pcg850v_state::port18_w)); - map(0x19, 0x19).rw(FUNC(pcg850v_state::rom_bank_r), FUNC(pcg850v_state::rom_bank_w)); - map(0x1a, 0x1a).w(FUNC(pcg850v_state::boot_bank_w)); - map(0x1b, 0x1b).w(FUNC(pcg850v_state::ram_bank_w)); - map(0x1c, 0x1c).nopw(); //peripheral reset - map(0x1d, 0x1d).portr("BATTERY"); - map(0x1e, 0x1e).nopw(); //??? - map(0x1f, 0x1f).r(FUNC(pcg850v_state::port1f_r)); - map(0x40, 0x40).rw(FUNC(pcg850v_state::g850v_lcd_status_r), FUNC(pcg850v_state::g850v_lcd_control_w)); - map(0x41, 0x41).rw(FUNC(pcg850v_state::g850v_lcd_data_r), FUNC(pcg850v_state::g850v_lcd_data_w)); - map(0x69, 0x69).rw(FUNC(pcg850v_state::g850v_bank_r), FUNC(pcg850v_state::g850v_bank_w)); -} - -INPUT_CHANGED_MEMBER(pce220_state::kb_irq) -{ - if (m_irq_mask & IRQ_FLAG_KEY) - { - m_maincpu->set_input_line(0, newval ? ASSERT_LINE : CLEAR_LINE ); - - m_irq_flag = (m_irq_flag & 0xfe) | (newval & 0x01); - } -} - -INPUT_CHANGED_MEMBER(pce220_state::on_irq) -{ - if (m_irq_mask & IRQ_FLAG_ON) - { - m_maincpu->set_input_line(0, newval ? ASSERT_LINE : CLEAR_LINE ); - - m_irq_flag = (m_irq_flag & 0xfd) | ((newval & 0x01)<<1); - } -} - -/* Input ports */ -static INPUT_PORTS_START( pce220 ) - PORT_START("BATTERY") - PORT_CONFNAME( 0x01, 0x00, "Battery Status" ) - PORT_CONFSETTING( 0x00, DEF_STR( Normal ) ) - PORT_CONFSETTING( 0x01, "Low Battery" ) - - PORT_START("LINE0") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F10) PORT_NAME("OFF") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) PORT_NAME("Q") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('Q') PORT_CHAR('!') - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_W) PORT_NAME("W") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('W') PORT_CHAR('"') - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_E) PORT_NAME("E") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('E') PORT_CHAR('#') - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_R) PORT_NAME("R") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('R') PORT_CHAR('$') - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_T) PORT_NAME("T") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('T') PORT_CHAR('%') - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Y) PORT_NAME("Y") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('Y') PORT_CHAR('&') - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_U) PORT_NAME("U") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('U') PORT_CHAR('\'') - PORT_START("LINE1") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_A) PORT_NAME("A") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('A') PORT_CHAR('[') - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_S) PORT_NAME("S") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('S') PORT_CHAR(']') - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_D) PORT_NAME("D") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('D') PORT_CHAR('{') - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F) PORT_NAME("F") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('F') PORT_CHAR('}') - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_G) PORT_NAME("G") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('G') PORT_CHAR('\\') - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_H) PORT_NAME("H") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('H') PORT_CHAR('|') - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_J) PORT_NAME("J") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('J') PORT_CHAR('`') - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_K) PORT_NAME("K") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('K') PORT_CHAR('_') - PORT_START("LINE2") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Z) PORT_NAME("Z") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('Z') - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_X) PORT_NAME("X") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('X') - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_C) PORT_NAME("C") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('C') - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_V) PORT_NAME("V") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('V') - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_B) PORT_NAME("B") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('B') - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_N) PORT_NAME("N") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('N') - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_M) PORT_NAME("M") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('M') - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA) PORT_NAME(",") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR(',') PORT_CHAR('?') - PORT_START("LINE3") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F1) PORT_NAME("CAL") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F2) PORT_NAME("BAS") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_CAPSLOCK) PORT_NAME("CAPS") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_HOME) PORT_NAME("ANS") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_TAB) PORT_NAME("TAB") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SPACE) PORT_NAME("SPACE") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR(' ') - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_DOWN) PORT_NAME("DOWN") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_UP) PORT_NAME("UP") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR(UCHAR_MAMEKEY(UP)) - PORT_START("LINE4") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_LEFT) PORT_NAME("LEFT") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_RIGHT) PORT_NAME("RIGHT") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F4) PORT_NAME("CONS") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_NAME("0") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('0') - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP) PORT_NAME(".") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('.') - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH) PORT_NAME("+/-") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_PLUS_PAD) PORT_NAME("+") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('+') - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_ENTER) PORT_NAME("RET") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR(13) - PORT_START("LINE5") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_L) PORT_NAME("L") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('L') PORT_CHAR('=') - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON) PORT_NAME(";") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR(';') PORT_CHAR(':') - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_DEL) PORT_NAME("DEL") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR(UCHAR_MAMEKEY(DEL)) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_NAME("1") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('1') - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_NAME("2") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('2') - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_NAME("3") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('3') - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS) PORT_NAME("-") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('-') - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F5) PORT_NAME("M+") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_START("LINE6") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_I) PORT_NAME("I") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('I') PORT_CHAR('<') - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_O) PORT_NAME("O") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('O') PORT_CHAR('>') - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_INSERT) PORT_NAME("INS") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR(UCHAR_MAMEKEY(INSERT)) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_NAME("4") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('4') - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_NAME("5") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('5') - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_NAME("6") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('6') - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_ASTERISK) PORT_NAME("*") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('*') - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F6) PORT_NAME("RM") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_START("LINE7") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_P) PORT_NAME("P") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('P') PORT_CHAR('@') - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("BS") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR(UCHAR_MAMEKEY(BACKSPACE)) - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F7) PORT_NAME("n!") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_NAME("7") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('7') - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_8) PORT_NAME("8") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('8') - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_NAME("9") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('9') - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH) PORT_NAME("/") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('/') - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_NAME(")") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR(')') - PORT_START("LINE8") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("hyp") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("DEG") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("y^x") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('^') - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("sqrt") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("x^2") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE) PORT_NAME("(") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('(') - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("1/x") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("MDF") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_START("LINE9") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_LCONTROL) PORT_NAME("2nd") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("sin") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("cos") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("ln") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F8) PORT_NAME("log") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F9) PORT_NAME("tan") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F11) PORT_NAME("FSE") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_ESC) PORT_NAME("CCE") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_START("SHIFT") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_LSHIFT) PORT_NAME("Shift") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR(UCHAR_SHIFT_1) - PORT_START("ON") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_PGUP) PORT_NAME("ON") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, on_irq, 0 ) -INPUT_PORTS_END - -static INPUT_PORTS_START( pcg850v ) - PORT_START("BATTERY") - PORT_CONFNAME( 0x01, 0x00, "Battery Status" ) - PORT_CONFSETTING( 0x00, DEF_STR( Normal ) ) - PORT_CONFSETTING( 0x01, "Low Battery" ) - - PORT_START("LINE0") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F10) PORT_NAME("OFF") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) PORT_NAME("Q") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('Q') PORT_CHAR('!') - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_W) PORT_NAME("W") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('W') PORT_CHAR('"') - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_E) PORT_NAME("E") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('E') PORT_CHAR('#') - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_R) PORT_NAME("R") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('R') PORT_CHAR('$') - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_T) PORT_NAME("T") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('T') PORT_CHAR('%') - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Y) PORT_NAME("Y") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('Y') PORT_CHAR('&') - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_U) PORT_NAME("U") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('U') PORT_CHAR('\'') - PORT_START("LINE1") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_A) PORT_NAME("A") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('A') PORT_CHAR('[') - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_S) PORT_NAME("S") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('S') PORT_CHAR(']') - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_D) PORT_NAME("D") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('D') PORT_CHAR('{') - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F) PORT_NAME("F") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('F') PORT_CHAR('}') - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_G) PORT_NAME("G") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('G') - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_H) PORT_NAME("H") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('H') PORT_CHAR('|') - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_J) PORT_NAME("J") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('J') PORT_CHAR('`') - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_K) PORT_NAME("K") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('K') PORT_CHAR('_') - PORT_START("LINE2") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Z) PORT_NAME("Z") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('Z') - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_X) PORT_NAME("X") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('X') - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_C) PORT_NAME("C") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('C') - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_V) PORT_NAME("V") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('V') - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_B) PORT_NAME("B") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('B') - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_N) PORT_NAME("N") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('N') - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_M) PORT_NAME("M") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('M') - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA) PORT_NAME(",") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR(',') PORT_CHAR('?') - PORT_START("LINE3") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F1) PORT_NAME("BAS") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F2) PORT_NAME("TEXT") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_CAPSLOCK) PORT_NAME("CAPS") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_HOME) PORT_NAME("KANA") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_TAB) PORT_NAME("TAB") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SPACE) PORT_NAME("SPACE") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR(' ') - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_DOWN) PORT_NAME("DOWN") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_UP) PORT_NAME("UP") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR(UCHAR_MAMEKEY(UP)) - PORT_START("LINE4") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_LEFT) PORT_NAME("LEFT") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_RIGHT) PORT_NAME("RIGHT") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F4) PORT_NAME("CONS") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_NAME("0") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('0') - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP) PORT_NAME(".") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('.') - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_EQUALS) PORT_NAME("=") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('=') - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_PLUS_PAD) PORT_NAME("+") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('+') - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_ENTER) PORT_NAME("RET") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR(13) - PORT_START("LINE5") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_L) PORT_NAME("L") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('L') PORT_CHAR('=') - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON) PORT_NAME(";") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR(';') PORT_CHAR(':') - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_DEL) PORT_NAME("DEL") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR(UCHAR_MAMEKEY(DEL)) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_NAME("1") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('1') - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_NAME("2") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('2') - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_NAME("3") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('3') - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS) PORT_NAME("-") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('-') - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F5) PORT_NAME("M+") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_START("LINE6") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_I) PORT_NAME("I") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('I') PORT_CHAR('<') - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_O) PORT_NAME("O") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('O') PORT_CHAR('>') - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_INSERT) PORT_NAME("INS") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR(UCHAR_MAMEKEY(INSERT)) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_NAME("4") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('4') - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_NAME("5") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('5') - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_NAME("6") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('6') - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_ASTERISK) PORT_NAME("*") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('*') - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F6) PORT_NAME("RM") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_START("LINE7") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_P) PORT_NAME("P") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('P') PORT_CHAR('@') - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("BS") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR(UCHAR_MAMEKEY(BACKSPACE)) - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F7) PORT_NAME("pi") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_NAME("7") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('7') - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_8) PORT_NAME("8") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('8') - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_NAME("9") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('9') - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH) PORT_NAME("/") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('/') - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_NAME(")") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR(')') - PORT_START("LINE8") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("nPr") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("DEG") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("SQR") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("SQU") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("x^y") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('^') - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE) PORT_NAME("(") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR('(') - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("1/x") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("MDF") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_START("LINE9") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_LCONTROL) PORT_NAME("2nd") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("sin") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("cos") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("ln") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F8) PORT_NAME("log") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F9) PORT_NAME("tan") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F11) PORT_NAME("FSE") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_ESC) PORT_NAME("CCE") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) - PORT_START("SHIFT") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_LSHIFT) PORT_NAME("Shift") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, kb_irq, 0 ) PORT_CHAR(UCHAR_SHIFT_1) - PORT_START("ON") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_PGUP) PORT_NAME("ON") PORT_CHANGED_MEMBER(DEVICE_SELF, pce220_state, on_irq, 0 ) -INPUT_PORTS_END - -void pce220_state::machine_start() -{ - uint8_t *rom = memregion("user1")->base(); - uint8_t *ram = m_ram->pointer(); - - membank("bank1")->configure_entries(0, 2, ram + 0x0000, 0x8000); - membank("bank2")->configure_entries(0, 2, ram + 0x4000, 0x8000); - membank("bank3")->configure_entries(0, 8, rom, 0x4000); - membank("bank4")->configure_entries(0, 8, rom, 0x4000); - - m_vram = (uint8_t*)memregion("lcd_vram")->base(); - - subdevice<nvram_device>("nvram")->set_base(ram, m_ram->size()); -} - -void pcg850v_state::machine_start() -{ - uint8_t *rom = memregion("user1")->base(); - uint8_t *ram = m_ram->pointer(); - - membank("bank1")->configure_entries(0, 2, ram + 0x0000, 0x8000); - membank("bank2")->configure_entries(0, 2, ram + 0x4000, 0x8000); - membank("bank3")->configure_entries(0, 22, rom, 0x4000); - membank("bank4")->configure_entries(0, 22, rom, 0x4000); - - m_vram = (uint8_t*)memregion("lcd_vram")->base(); - subdevice<nvram_device>("nvram")->set_base(ram, m_ram->size()); -} - -void pce220_state::machine_reset() -{ - address_space &space = m_maincpu->space(AS_PROGRAM); - space.unmap_write(0x0000, 0x3fff); - - // install the boot code into the first bank - membank("bank1")->set_base(memregion("user1")->base() + 0x0000); - - m_lcd_index_row = 0; - m_lcd_index_col = 0; - m_lcd_start_line = 0; - m_lcd_on = 0; - m_bank_num = 0; - m_irq_mask = 0; - m_irq_flag = 0; - m_timer_status = 0; - m_kb_matrix = 0; -} - -void pcg850v_state::machine_reset() -{ - pce220_state::machine_reset(); - - m_g850v_bank_num = 0; - m_lcd_effects = 0; - m_lcd_contrast = 0; - m_lcd_read_mode = 0; -} - -TIMER_DEVICE_CALLBACK_MEMBER(pce220_state::pce220_timer_callback) -{ - m_timer_status = !m_timer_status; - - if (m_irq_mask & IRQ_FLAG_TIMER) - { - m_maincpu->set_input_line(0, HOLD_LINE ); - - m_irq_flag = (m_irq_flag & 0xfb) | (m_timer_status<<2); - } -} - -void pce220_state::pce220_palette(palette_device &palette) const -{ - palette.set_pen_color(0, rgb_t(138, 146, 148)); - palette.set_pen_color(1, rgb_t(92, 83, 88)); -} - - -void pce220_state::pce220(machine_config &config) -{ - /* basic machine hardware */ - Z80(config, m_maincpu, 3072000); // CMOS-SC7852 - m_maincpu->set_addrmap(AS_PROGRAM, &pce220_state::pce220_mem); - m_maincpu->set_addrmap(AS_IO, &pce220_state::pce220_io); - - /* video hardware */ - // 4 lines x 24 characters, resp. 144 x 32 pixel - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD)); - screen.set_refresh_hz(50); - screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ - screen.set_screen_update(FUNC(pce220_state::screen_update)); - screen.set_size(24*6, 4*8); - screen.set_visarea(0, 24*6-1, 0, 4*8-1); - screen.set_palette("palette"); - - PALETTE(config, "palette", FUNC(pce220_state::pce220_palette), 2); - - /* sound hardware */ - SPEAKER(config, "mono").front_center(); - BEEP(config, m_beep, 3250).add_route(ALL_OUTPUTS, "mono", 0.50); - - TIMER(config, "pce220_timer").configure_periodic(FUNC(pce220_state::pce220_timer_callback), attotime::from_msec(468)); - - NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); - - /* internal ram */ - RAM(config, RAM_TAG).set_default_size("64K"); // 32K internal + 32K external card - - PCE220SERIAL(config, m_serial, 0); -} - -void pcg850v_state::pcg815(machine_config &config) -{ - /* basic machine hardware */ - Z80(config, m_maincpu, XTAL(4'000'000)); // 3.54MHz - m_maincpu->set_addrmap(AS_PROGRAM, &pcg850v_state::pce220_mem); - m_maincpu->set_addrmap(AS_IO, &pcg850v_state::pcg850v_io); - - /* video hardware */ - // 4 lines x 24 characters, resp. 144 x 32 pixel - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD)); - screen.set_refresh_hz(50); - screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ - screen.set_screen_update(FUNC(pcg850v_state::screen_update)); - screen.set_size(144, 32); - screen.set_visarea(0, 144-1, 0, 32-1); - screen.set_palette("palette"); - - PALETTE(config, "palette", FUNC(pcg850v_state::pce220_palette), 2); - - /* sound hardware */ - SPEAKER(config, "mono").front_center(); - BEEP(config, m_beep, 3250).add_route(ALL_OUTPUTS, "mono", 0.50); - - TIMER(config, "pce220_timer").configure_periodic(FUNC(pcg850v_state::pce220_timer_callback), attotime::from_msec(468)); - - NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); - - /* internal ram */ - RAM(config, RAM_TAG).set_default_size("64K"); // 32K internal + 32K external card - - PCE220SERIAL(config, m_serial, 0); -} - -void pcg850v_state::pcg850v(machine_config &config) -{ - /* basic machine hardware */ - Z80(config, m_maincpu, XTAL(8'000'000)); // CMOS-SC7852 - m_maincpu->set_addrmap(AS_PROGRAM, &pcg850v_state::pce220_mem); - m_maincpu->set_addrmap(AS_IO, &pcg850v_state::pcg850v_io); - - /* video hardware */ - // 6 lines x 24 characters, resp. 144 x 48 pixel - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD)); - screen.set_refresh_hz(50); - screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ - screen.set_screen_update(FUNC(pcg850v_state::screen_update)); - screen.set_size(144, 48); - screen.set_visarea(0, 144-1, 0, 48-1); - screen.set_palette("palette"); - - PALETTE(config, "palette", FUNC(pcg850v_state::pce220_palette), 2); - - /* sound hardware */ - SPEAKER(config, "mono").front_center(); - BEEP(config, m_beep, 3250).add_route(ALL_OUTPUTS, "mono", 0.50); - - TIMER(config, "pce220_timer").configure_periodic(FUNC(pcg850v_state::pce220_timer_callback), attotime::from_msec(468)); - - NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); - - /* internal ram */ - RAM(config, RAM_TAG).set_default_size("64K"); // 32K internal + 32K external card - - PCE220SERIAL(config, m_serial, 0); -} - -/* ROM definition */ -ROM_START( pce220 ) - ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) - ROM_REGION( 0x20000, "user1", ROMREGION_ERASEFF ) - ROM_SYSTEM_BIOS( 0, "v1", "v 0.1") - ROM_SYSTEM_BIOS( 1, "v2", "v 0.2") - ROM_LOAD( "bank0.bin", 0x0000, 0x4000, CRC(1fa94d11) SHA1(24c54347dbb1423388360a359aa09db47d2057b7)) - ROM_LOAD( "bank1.bin", 0x4000, 0x4000, CRC(0f9864b0) SHA1(6b7301c96f1a865e1931d82872a1ed5d1f80644e)) - ROM_LOAD( "bank2.bin", 0x8000, 0x4000, CRC(1625e958) SHA1(090440600d461aa7efe4adbf6e975aa802aabeec)) - ROM_LOAD( "bank3.bin", 0xc000, 0x4000, CRC(ed9a57f8) SHA1(58087dc64103786a40325c0a1e04bd88bfd6da57)) - ROM_LOAD( "bank4.bin", 0x10000, 0x4000, CRC(e37665ae) SHA1(85f5c84f69f79e7ac83b30397b2a1d9629f9eafa)) - ROMX_LOAD( "bank5.bin", 0x14000, 0x4000, CRC(6b116e7a) SHA1(b29f5a070e846541bddc88b5ee9862cc36b88eee), ROM_BIOS(1)) - ROMX_LOAD( "bank5_0.1.bin", 0x14000, 0x4000, CRC(13c26eb4) SHA1(b9cd0efd6b195653b9610e20ad8aab541824a689), ROM_BIOS(0)) - ROMX_LOAD( "bank6.bin", 0x18000, 0x4000, CRC(4fbfbd18) SHA1(e5aab1df172dcb94aa90e7d898eacfc61157ff15), ROM_BIOS(1)) - ROMX_LOAD( "bank6_0.1.bin", 0x18000, 0x4000, CRC(e2cda7a6) SHA1(01b1796d9485fde6994cb5afbe97514b54cfbb3a), ROM_BIOS(0)) - ROMX_LOAD( "bank7.bin", 0x1c000, 0x4000, CRC(5e98b5b6) SHA1(f22d74d6a24f5929efaf2983caabd33859232a94), ROM_BIOS(1)) - ROMX_LOAD( "bank7_0.1.bin", 0x1c000, 0x4000, CRC(d8e821b2) SHA1(18245a75529d2f496cdbdc28cdf40def157b20c0), ROM_BIOS(0)) - - ROM_REGION( 0x200, "lcd_vram", ROMREGION_ERASE00) //HD61202 internal RAM (4096 bits) -ROM_END - -ROM_START( pcg815 ) - ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) - ROM_REGION( 0x58000, "user1", ROMREGION_ERASEFF ) - ROM_LOAD( "rom00.bin", 0x000000, 0x004000, CRC(43767d51) SHA1(0d8b8b88a5d084f750daffc0abbb6b868fd3f144) ) - ROM_LOAD( "rom01.bin", 0x004000, 0x004000, CRC(b0e32ace) SHA1(e84c84c18c09dd2920fa38e77d8049b980692d29) ) - ROM_LOAD( "rom02.bin", 0x008000, 0x004000, CRC(f5cb78ba) SHA1(dfb2e415a5603a820b960d810995dd1109d84547) ) - ROM_LOAD( "rom03.bin", 0x00c000, 0x004000, CRC(5eff142b) SHA1(71d8d0a1bd0bcdef43f951036d9e1da0377d6a33) ) - ROM_LOAD( "rom04.bin", 0x010000, 0x004000, CRC(cb91bab5) SHA1(5b354ba6fc48043f03b573ad470518e9bb48cf99) ) - ROM_LOAD( "rom05.bin", 0x014000, 0x004000, CRC(ccaa1876) SHA1(404bf36c3832ee1a4602fa6a917d1ef2db5411c1) ) - ROM_LOAD( "rom06.bin", 0x018000, 0x004000, CRC(9d80802f) SHA1(aec989b8763d1346313a13c761ed0306b4f84257) ) - ROM_LOAD( "rom07.bin", 0x01c000, 0x004000, CRC(618a7be8) SHA1(5f16e47eeeb9c153bb95c6d6e3af276576b8274e) ) - ROM_LOAD( "rom08.bin", 0x020000, 0x004000, CRC(d8ba21a9) SHA1(a5580f22864afee8d4a8f1ecf6231acbde16b612) ) - ROM_LOAD( "rom09.bin", 0x024000, 0x004000, CRC(f6f49677) SHA1(e0d70a11b7dd21662cb444ac93d4b43f584909b5) ) - ROM_LOAD( "rom0a.bin", 0x028000, 0x004000, CRC(ecbabb64) SHA1(14beef60dfd1f18375459e9acb9527589e09e3ce) ) - ROM_LOAD( "base.bin", 0x02c000, 0x000040, CRC(1a8b2044) SHA1(8576c69532d138eb78ff7a59f668a1a62a670447) ) - - ROM_REGION( 0x1000, "lcd_vram", ROMREGION_ERASE00) -ROM_END - -ROM_START( pcg850v ) - ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) - ROM_REGION( 0x58000, "user1", ROMREGION_ERASEFF ) - ROM_LOAD( "rom00.bin", 0x00000, 0x4000, CRC(c41a7a3e) SHA1(8b85d07e6f2fa048f8a958c261ab3344df750bd2)) - ROM_LOAD( "rom01.bin", 0x04000, 0x4000, CRC(45cafcaf) SHA1(e6142ac2ddb50c90bf1afd03ee2d2741abde8b76)) - ROM_LOAD( "rom02.bin", 0x08000, 0x4000, CRC(c81a804e) SHA1(322b9c6ca5cb7bc41a55c7874838e601ef50644e)) - ROM_LOAD( "rom03.bin", 0x0c000, 0x4000, CRC(9301e937) SHA1(b152186577abf86a7fb535cd63985f2a67e154b9)) - ROM_LOAD( "rom04.bin", 0x10000, 0x4000, CRC(6bf11755) SHA1(fe7458758d26fabfcca34e791fe2425104830b7b)) - ROM_LOAD( "rom05.bin", 0x14000, 0x4000, CRC(8a808f5e) SHA1(448caf0cc30de483d876c31785c8bb27305860b8)) - ROM_LOAD( "rom06.bin", 0x18000, 0x4000, CRC(3902f135) SHA1(40fbd51718a830e3f374843990522e29508376fd)) - ROM_LOAD( "rom07.bin", 0x1c000, 0x4000, CRC(618a7be8) SHA1(5f16e47eeeb9c153bb95c6d6e3af276576b8274e)) - ROM_LOAD( "rom08.bin", 0x20000, 0x4000, CRC(bf05b34d) SHA1(8556d64ddd89191c9dc048280e384f9146d81a16)) - ROM_LOAD( "rom09.bin", 0x24000, 0x4000, CRC(b75dbd0a) SHA1(ca149134a819fa52591ae1733270f8b3c811a18a)) - ROM_LOAD( "rom0a.bin", 0x28000, 0x4000, CRC(e7c5ec8f) SHA1(70cac20d4f01b5b2fdd76837659bc4947a1ebd21)) - ROM_LOAD( "rom0b.bin", 0x2c000, 0x4000, CRC(bdc4f889) SHA1(154d6223e8e750fcbffdb069215fee9492685747)) - ROM_LOAD( "rom0c.bin", 0x30000, 0x4000, CRC(6ef5560a) SHA1(5b2ad8e36354f448fe01acba1d2f69630de345a7)) - ROM_LOAD( "rom0d.bin", 0x34000, 0x4000, CRC(4295a44e) SHA1(0f8dfc759ed17f2b0acc1dc4912e881b1f0f65aa)) - ROM_LOAD( "rom0e.bin", 0x38000, 0x4000, CRC(0c8212e1) SHA1(8145728d87ea5a5e29c0e98c3d2d4278b1070359)) - ROM_LOAD( "rom0f.bin", 0x3c000, 0x4000, CRC(33c30dba) SHA1(296fb6fa3921822c3458acde0962c3a25cb19a1e)) - ROM_LOAD( "rom10.bin", 0x40000, 0x4000, CRC(553a0926) SHA1(2149827f9a2eb879756b3da609e17fc5b1c9bd78)) - ROM_LOAD( "rom11.bin", 0x44000, 0x4000, CRC(385a128d) SHA1(eda1192a75e4cfb50c0ac058f230a84cbfe67d51)) - ROM_LOAD( "rom12.bin", 0x48000, 0x4000, CRC(cd12dfca) SHA1(50a5defdeb4da9b2eac196816559056fc55e1dca)) - ROM_LOAD( "rom13.bin", 0x4c000, 0x4000, CRC(9bca873b) SHA1(4ce43553fb15c0ca866e9582a3ef8dc22a2795b4)) - ROM_LOAD( "rom14.bin", 0x50000, 0x4000, CRC(a2938c40) SHA1(d2c24401eea5e56268ef6eadcc612c8bbaa3342a)) - ROM_LOAD( "rom15.bin", 0x54000, 0x4000, CRC(53a0bf0a) SHA1(bf27baeaf208628fbe3c959d623cc08de21cf9f8)) - - ROM_REGION( 0x1000, "lcd_vram", ROMREGION_ERASE00) -ROM_END - -/* Driver */ - -// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 1991, pce220, 0, 0, pce220, pce220, pce220_state, empty_init, "Sharp", "PC-E220", MACHINE_NOT_WORKING ) -COMP( 1992, pcg815, 0, 0, pcg815, pcg850v, pcg850v_state, empty_init, "Sharp", "PC-G815", MACHINE_NOT_WORKING ) -COMP( 2001, pcg850v, 0, 0, pcg850v, pcg850v, pcg850v_state, empty_init, "Sharp", "PC-G850V", MACHINE_NOT_WORKING ) |