summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/pce220.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/pce220.cpp')
-rw-r--r--src/mame/drivers/pce220.cpp1120
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 )