pp01: cleanup

This commit is contained in:
Robbbert 2020-07-24 02:12:48 +10:00
parent 9615f73de9
commit 1a1af90faa
4 changed files with 111 additions and 129 deletions

View File

@ -16,6 +16,9 @@ Z - ?
ToDo:
- Interrupt controller
- Add missing keys
- Quickload support
- Software to test with
*****************************************************************************************/
@ -29,22 +32,22 @@ ToDo:
/* Address maps */
void pp01_state::mem_map(address_map &map)
{
map(0x0000, 0x0fff).bankrw("bank1");
map(0x1000, 0x1fff).bankrw("bank2");
map(0x2000, 0x2fff).bankrw("bank3");
map(0x3000, 0x3fff).bankrw("bank4");
map(0x4000, 0x4fff).bankrw("bank5");
map(0x5000, 0x5fff).bankrw("bank6");
map(0x6000, 0x6fff).bankrw("bank7");
map(0x7000, 0x7fff).bankrw("bank8");
map(0x8000, 0x8fff).bankrw("bank9");
map(0x9000, 0x9fff).bankrw("bank10");
map(0xa000, 0xafff).bankrw("bank11");
map(0xb000, 0xbfff).bankrw("bank12");
map(0xc000, 0xcfff).bankrw("bank13");
map(0xd000, 0xdfff).bankrw("bank14");
map(0xe000, 0xefff).bankrw("bank15");
map(0xf000, 0xffff).bankrw("bank16");
map(0x0000, 0x0fff).bankrw("bank0");
map(0x1000, 0x1fff).bankrw("bank1");
map(0x2000, 0x2fff).bankrw("bank2");
map(0x3000, 0x3fff).bankrw("bank3");
map(0x4000, 0x4fff).bankrw("bank4");
map(0x5000, 0x5fff).bankrw("bank5");
map(0x6000, 0x6fff).bankrw("bank6");
map(0x7000, 0x7fff).bankrw("bank7");
map(0x8000, 0x8fff).bankrw("bank8");
map(0x9000, 0x9fff).bankrw("bank9");
map(0xa000, 0xafff).bankrw("bank10");
map(0xb000, 0xbfff).bankrw("bank11");
map(0xc000, 0xcfff).bankrw("bank12");
map(0xd000, 0xdfff).bankrw("bank13");
map(0xe000, 0xefff).bankrw("bank14");
map(0xf000, 0xffff).bankrw("bank15");
}
void pp01_state::io_map(address_map &map)
@ -68,8 +71,6 @@ static INPUT_PORTS_START( pp01 )
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("0") PORT_CODE(KEYCODE_0)
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("P") PORT_CODE(KEYCODE_P)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_START("LINE1")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F1") PORT_CODE(KEYCODE_F1)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F2") PORT_CODE(KEYCODE_F2)
@ -77,8 +78,6 @@ static INPUT_PORTS_START( pp01 )
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("1") PORT_CODE(KEYCODE_1)
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("A") PORT_CODE(KEYCODE_A)
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Q") PORT_CODE(KEYCODE_Q)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_START("LINE2")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F3") PORT_CODE(KEYCODE_F3)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F4") PORT_CODE(KEYCODE_F4)
@ -86,8 +85,6 @@ static INPUT_PORTS_START( pp01 )
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("2") PORT_CODE(KEYCODE_2)
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("B") PORT_CODE(KEYCODE_B)
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("R") PORT_CODE(KEYCODE_R)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_START("LINE3")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F5") PORT_CODE(KEYCODE_F5)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F6") PORT_CODE(KEYCODE_F6)
@ -95,8 +92,6 @@ static INPUT_PORTS_START( pp01 )
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("3") PORT_CODE(KEYCODE_3)
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("C") PORT_CODE(KEYCODE_C)
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("S") PORT_CODE(KEYCODE_S)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_START("LINE4")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F7") PORT_CODE(KEYCODE_F7)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F8") PORT_CODE(KEYCODE_F8)
@ -104,8 +99,6 @@ static INPUT_PORTS_START( pp01 )
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("4") PORT_CODE(KEYCODE_4)
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("D") PORT_CODE(KEYCODE_D)
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("T") PORT_CODE(KEYCODE_T)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_START("LINE5")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F9") PORT_CODE(KEYCODE_F9)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F10") PORT_CODE(KEYCODE_F10)
@ -113,8 +106,6 @@ static INPUT_PORTS_START( pp01 )
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("5") PORT_CODE(KEYCODE_5)
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("E") PORT_CODE(KEYCODE_E)
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("U") PORT_CODE(KEYCODE_U)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_START("LINE6")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F11") PORT_CODE(KEYCODE_F11)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F12") PORT_CODE(KEYCODE_F12)
@ -122,8 +113,6 @@ static INPUT_PORTS_START( pp01 )
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("6") PORT_CODE(KEYCODE_6)
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F") PORT_CODE(KEYCODE_F)
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("V") PORT_CODE(KEYCODE_V)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_START("LINE7")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F13") PORT_CODE(KEYCODE_PGUP)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F14") PORT_CODE(KEYCODE_PGDN)
@ -131,8 +120,6 @@ static INPUT_PORTS_START( pp01 )
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("7") PORT_CODE(KEYCODE_7)
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("G") PORT_CODE(KEYCODE_G)
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("W") PORT_CODE(KEYCODE_W)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_START("LINE8")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Backspace") PORT_CODE(KEYCODE_BACKSPACE)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Delete line") PORT_CODE(KEYCODE_TILDE)
@ -140,8 +127,6 @@ static INPUT_PORTS_START( pp01 )
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("8") PORT_CODE(KEYCODE_8)
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("H") PORT_CODE(KEYCODE_H)
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("X") PORT_CODE(KEYCODE_X)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_START("LINE9")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Num +") PORT_CODE(KEYCODE_PLUS_PAD)
@ -149,64 +134,49 @@ static INPUT_PORTS_START( pp01 )
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("9") PORT_CODE(KEYCODE_9)
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("I") PORT_CODE(KEYCODE_I)
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Y") PORT_CODE(KEYCODE_Y)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_START("LINEA")
PORT_START("LINE10")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(":") PORT_CODE(KEYCODE_QUOTE)
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("J") PORT_CODE(KEYCODE_J)
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Z") PORT_CODE(KEYCODE_Z)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_START("LINEB")
PORT_START("LINE11")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(";") PORT_CODE(KEYCODE_COLON)
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("K") PORT_CODE(KEYCODE_K)
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("[") PORT_CODE(KEYCODE_OPENBRACE)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_START("LINEC")
PORT_START("LINE12")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Num *") PORT_CODE(KEYCODE_ASTERISK)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Num -") PORT_CODE(KEYCODE_MINUS_PAD)
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(",") PORT_CODE(KEYCODE_COMMA)
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("L") PORT_CODE(KEYCODE_L)
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\\") PORT_CODE(KEYCODE_BACKSLASH)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_START("LINED")
PORT_START("LINE13")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Enter") PORT_CODE(KEYCODE_ENTER)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("-") PORT_CODE(KEYCODE_MINUS)
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("M") PORT_CODE(KEYCODE_M)
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("]") PORT_CODE(KEYCODE_CLOSEBRACE)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_START("LINEE")
PORT_START("LINE14")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Num /") PORT_CODE(KEYCODE_SLASH_PAD)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Num .") PORT_CODE(KEYCODE_DEL_PAD)
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(".") PORT_CODE(KEYCODE_STOP)
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("N") PORT_CODE(KEYCODE_N)
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("^") PORT_CODE(KEYCODE_TILDE)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_START("LINEF")
PORT_START("LINE15")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("/") PORT_CODE(KEYCODE_SLASH)
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("O") PORT_CODE(KEYCODE_O)
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("_") PORT_CODE(KEYCODE_HOME)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_START("LINEALL")
PORT_BIT(0x3F, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_START("LINE16")
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED) PORT_NAME("Ctrl") PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(KEYCODE_RCONTROL)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED) PORT_NAME("Shift") PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT)
INPUT_PORTS_END
@ -266,28 +236,27 @@ void pp01_state::pp01(machine_config &config)
/* ROM definition */
ROM_START( pp01 )
ROM_REGION( 0x18000, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD( "ep01.rom", 0x14000, 0x0400, CRC(e48e440f) SHA1(aaae41f0bf163f254e28f6e4d9f6010b349e0c45))
ROM_LOAD( "ep02.rom", 0x14400, 0x0400, CRC(b9314867) SHA1(220e2a686c6624574e8ea7f6012030c8378a8be6))
ROM_LOAD( "ep03.rom", 0x14800, 0x0400, CRC(47b91d49) SHA1(51445e24d1c375e798c5ed7b48cb1c7b5e01603a))
ROM_LOAD( "ep04.rom", 0x14c00, 0x0400, CRC(cc890123) SHA1(7110f301453d925da0d3f29c2ba4eacd5ff8583d))
ROM_LOAD( "ep05.rom", 0x15000, 0x0400, CRC(b36e2071) SHA1(7c7b2c410f4039980627196575109426bb7bab35))
ROM_LOAD( "ep06.rom", 0x15400, 0x0400, CRC(3f74efb3) SHA1(77d055eb53ba9b4b14eb2bb8d71f93095b846bb5))
ROM_LOAD( "ep07.rom", 0x15800, 0x0400, CRC(1dd0bc29) SHA1(109bc3f24a76884d2581f75edc532917cb7ea155))
ROM_LOAD( "ep08.rom", 0x15c00, 0x0400, CRC(607b710a) SHA1(c5ac7da31204c54d6892d6b708d0291d71963581))
ROM_LOAD( "ep09.rom", 0x16000, 0x0400, CRC(07f773d1) SHA1(a6cf454318ef0a564a86e669b751e414b12c12d1))
ROM_LOAD( "ep10.rom", 0x16400, 0x0400, CRC(7793d84b) SHA1(d16ad3db36c8cec68713082ee60324219d3d5032))
ROM_LOAD( "ep11.rom", 0x16800, 0x0400, CRC(d1b98b5e) SHA1(5526af6317667d707ae413916242cd1bac821373))
ROM_LOAD( "ep12.rom", 0x16c00, 0x0400, CRC(03c45326) SHA1(f9157ab86cdf1d111bcf19c24e4d7250705be965))
ROM_LOAD( "ep13.rom", 0x17000, 0x0400, CRC(51769d6c) SHA1(76d6e91cf32b1eb94b9c0ded02e5057ed7ff7d72))
ROM_LOAD( "ep14.rom", 0x17400, 0x0400, CRC(5d48cefb) SHA1(9b8599dabaf7297ec800fa9a122ad7e3b7b30e8b))
ROM_LOAD( "ep15.rom", 0x17800, 0x0400, CRC(f44bfe36) SHA1(0ab3c4f061dff6f779685409b07343d0a839fdae))
ROM_LOAD( "ep16.rom", 0x17c00, 0x0400, CRC(f39c230d) SHA1(9789cedef5655bcb82561f387cc1a6cf48287d78))
ROM_REGION( 0x4000, "maincpu", 0 )
ROM_LOAD( "ep01.rom", 0x0000, 0x0400, CRC(e48e440f) SHA1(aaae41f0bf163f254e28f6e4d9f6010b349e0c45))
ROM_LOAD( "ep02.rom", 0x0400, 0x0400, CRC(b9314867) SHA1(220e2a686c6624574e8ea7f6012030c8378a8be6))
ROM_LOAD( "ep03.rom", 0x0800, 0x0400, CRC(47b91d49) SHA1(51445e24d1c375e798c5ed7b48cb1c7b5e01603a))
ROM_LOAD( "ep04.rom", 0x0c00, 0x0400, CRC(cc890123) SHA1(7110f301453d925da0d3f29c2ba4eacd5ff8583d))
ROM_LOAD( "ep05.rom", 0x1000, 0x0400, CRC(b36e2071) SHA1(7c7b2c410f4039980627196575109426bb7bab35))
ROM_LOAD( "ep06.rom", 0x1400, 0x0400, CRC(3f74efb3) SHA1(77d055eb53ba9b4b14eb2bb8d71f93095b846bb5))
ROM_LOAD( "ep07.rom", 0x1800, 0x0400, CRC(1dd0bc29) SHA1(109bc3f24a76884d2581f75edc532917cb7ea155))
ROM_LOAD( "ep08.rom", 0x1c00, 0x0400, CRC(607b710a) SHA1(c5ac7da31204c54d6892d6b708d0291d71963581))
ROM_LOAD( "ep09.rom", 0x2000, 0x0400, CRC(07f773d1) SHA1(a6cf454318ef0a564a86e669b751e414b12c12d1))
ROM_LOAD( "ep10.rom", 0x2400, 0x0400, CRC(7793d84b) SHA1(d16ad3db36c8cec68713082ee60324219d3d5032))
ROM_LOAD( "ep11.rom", 0x2800, 0x0400, CRC(d1b98b5e) SHA1(5526af6317667d707ae413916242cd1bac821373))
ROM_LOAD( "ep12.rom", 0x2c00, 0x0400, CRC(03c45326) SHA1(f9157ab86cdf1d111bcf19c24e4d7250705be965))
ROM_LOAD( "ep13.rom", 0x3000, 0x0400, CRC(51769d6c) SHA1(76d6e91cf32b1eb94b9c0ded02e5057ed7ff7d72))
ROM_LOAD( "ep14.rom", 0x3400, 0x0400, CRC(5d48cefb) SHA1(9b8599dabaf7297ec800fa9a122ad7e3b7b30e8b))
ROM_LOAD( "ep15.rom", 0x3800, 0x0400, CRC(f44bfe36) SHA1(0ab3c4f061dff6f779685409b07343d0a839fdae))
ROM_LOAD( "ep16.rom", 0x3c00, 0x0400, CRC(f39c230d) SHA1(9789cedef5655bcb82561f387cc1a6cf48287d78))
ROM_END
/* Driver */
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
COMP( 198?, pp01, 0, 0, pp01, pp01, pp01_state, empty_init, "ZVT", "PP-01", MACHINE_NOT_WORKING )
COMP( 198?, pp01, 0, 0, pp01, pp01, pp01_state, empty_init, "ZVT", "PP-01", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )

View File

@ -27,13 +27,15 @@ public:
pp01_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_pit(*this, "pit8253")
, m_pit(*this, "pit")
, m_ppi1(*this, "ppi1")
, m_ppi2(*this, "ppi2")
, m_speaker(*this, "speaker")
, m_ram(*this, RAM_TAG)
, m_uart(*this, "uart")
, m_cass(*this, "cassette")
, m_bank(*this, "bank%d", 0U)
, m_io_keyboard(*this, "LINE%d", 0U)
{ }
void pp01(machine_config &config);
@ -41,17 +43,8 @@ public:
protected:
virtual void machine_start() override;
virtual void machine_reset() override;
virtual void video_start() override;
private:
required_device<cpu_device> m_maincpu;
required_device<pit8253_device> m_pit;
required_device<i8255_device> m_ppi1;
required_device<i8255_device> m_ppi2;
required_device<speaker_sound_device> m_speaker;
required_device<ram_device> m_ram;
required_device<i8251_device> m_uart;
required_device<cassette_image_device> m_cass;
uint8_t m_video_scroll;
uint8_t m_memory_block[16];
uint8_t m_video_write_mode;
@ -82,6 +75,17 @@ private:
void set_memory(uint8_t block, uint8_t data);
void io_map(address_map &map);
void mem_map(address_map &map);
required_device<cpu_device> m_maincpu;
required_device<pit8253_device> m_pit;
required_device<i8255_device> m_ppi1;
required_device<i8255_device> m_ppi2;
required_device<speaker_sound_device> m_speaker;
required_device<ram_device> m_ram;
required_device<i8251_device> m_uart;
required_device<cassette_image_device> m_cass;
required_memory_bank_array<16> m_bank;
required_ioport_array<17> m_io_keyboard;
};
#endif // MAME_INCLUDES_PP01_H

View File

@ -23,33 +23,35 @@ void pp01_state::video_w(uint8_t block,uint16_t offset,uint8_t data,uint8_t part
uint16_t addroffset = part ? 0x1000 : 0x0000;
uint8_t *ram = m_ram->pointer();
if (BIT(m_video_write_mode,3)) {
if (BIT(m_video_write_mode,3))
{
// Copy mode
if(BIT(m_video_write_mode,0)) {
if(BIT(m_video_write_mode,0))
ram[0x6000+offset+addroffset] = data;
} else {
else
ram[0x6000+offset+addroffset] = 0;
}
if(BIT(m_video_write_mode,1)) {
if(BIT(m_video_write_mode,1))
ram[0xa000+offset+addroffset] = data;
} else {
else
ram[0xa000+offset+addroffset] = 0;
}
if(BIT(m_video_write_mode,2)) {
if(BIT(m_video_write_mode,2))
ram[0xe000+offset+addroffset] = data;
} else {
else
ram[0xe000+offset+addroffset] = 0;
}
} else {
if (block==0) {
}
else
{
if (block==0)
ram[0x6000+offset+addroffset] = data;
}
if (block==1) {
else
if (block==1)
ram[0xa000+offset+addroffset] = data;
}
if (block==2) {
else
if (block==2)
ram[0xe000+offset+addroffset] = data;
}
}
}
@ -85,14 +87,14 @@ void pp01_state::set_memory(uint8_t block, uint8_t data)
uint8_t *mem = memregion("maincpu")->base();
address_space &space = m_maincpu->space(AS_PROGRAM);
uint16_t startaddr = block*0x1000;
uint16_t endaddr = ((block+1)*0x1000)-1;
uint8_t blocknum = block + 1;
char bank[10];
sprintf(bank,"bank%d",blocknum);
if (data>=0xE0 && data<=0xEF) {
uint16_t endaddr = startaddr+0xfff;
if (data>=0xE0 && data<=0xEF)
{
// This is RAM
space.install_read_bank (startaddr, endaddr, bank);
switch(data) {
space.install_read_bank (startaddr, endaddr, m_bank[block]);
switch(data)
{
case 0xe6 :
space.install_write_handler(startaddr, endaddr, write8sm_delegate(*this, FUNC(pp01_state::video_r_1_w)));
break;
@ -112,16 +114,21 @@ void pp01_state::set_memory(uint8_t block, uint8_t data)
space.install_write_handler(startaddr, endaddr, write8sm_delegate(*this, FUNC(pp01_state::video_b_2_w)));
break;
default:
space.install_write_bank(startaddr, endaddr, bank);
space.install_write_bank(startaddr, endaddr, m_bank[block]);
break;
}
membank(bank)->set_base(m_ram->pointer() + (data & 0x0F)* 0x1000);
} else if (data>=0xF8) {
space.install_read_bank (startaddr, endaddr, bank);
m_bank[block]->set_base(m_ram->pointer() + (data & 0x0F)* 0x1000);
}
else
if (data>=0xFC)
{
space.install_read_bank (startaddr, endaddr, m_bank[block]);
space.unmap_write(startaddr, endaddr);
membank(bank)->set_base(mem + ((data & 0x0F)-8)* 0x1000+0x10000);
} else {
m_bank[block]->set_base(mem + (data & 0x03)* 0x1000);
}
else
{
logerror("%02x %02x\n",block,data);
space.unmap_readwrite (startaddr, endaddr);
}
@ -131,7 +138,8 @@ void pp01_state::machine_reset()
{
int i;
memset(m_memory_block,0xff,16);
for(i=0;i<16;i++) {
for(i=0;i<16;i++)
{
m_memory_block[i] = 0xff;
set_memory(i, 0xff);
}
@ -151,6 +159,15 @@ uint8_t pp01_state::mem_block_r(offs_t offset)
void pp01_state::machine_start()
{
save_item(NAME(m_video_scroll));
save_item(NAME(m_memory_block));
save_item(NAME(m_video_write_mode));
save_item(NAME(m_key_line));
save_item(NAME(m_txe));
save_item(NAME(m_txd));
save_item(NAME(m_rts));
save_item(NAME(m_casspol));
save_item(NAME(m_cass_data));
}
TIMER_DEVICE_CALLBACK_MEMBER( pp01_state::kansas_r )
@ -202,12 +219,7 @@ void pp01_state::ppi1_porta_w(uint8_t data)
uint8_t pp01_state::ppi1_portb_r()
{
static const char *const keynames[] = {
"LINE0", "LINE1", "LINE2", "LINE3", "LINE4", "LINE5", "LINE6", "LINE7",
"LINE8", "LINE9", "LINEA", "LINEB", "LINEC", "LINED", "LINEE", "LINEF"
};
return (ioport(keynames[m_key_line])->read() & 0x3F) | (ioport("LINEALL")->read() & 0xC0);
return m_io_keyboard[m_key_line]->read() | m_io_keyboard[16]->read();
}
void pp01_state::ppi1_portb_w(uint8_t data)
{

View File

@ -12,10 +12,6 @@
#include "emu.h"
#include "includes/pp01.h"
void pp01_state::video_start()
{
}
uint32_t pp01_state::screen_update_pp01(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
uint8_t const *const ram = m_ram->pointer();
@ -24,9 +20,10 @@ uint32_t pp01_state::screen_update_pp01(screen_device &screen, bitmap_ind16 &bit
{
for (int x = 0; x < 32; x++)
{
uint8_t const code_r = ram[0x6000 + ((y+m_video_scroll)&0xff)*32 + x];
uint8_t const code_g = ram[0xa000 + ((y+m_video_scroll)&0xff)*32 + x];
uint8_t const code_b = ram[0xe000 + ((y+m_video_scroll)&0xff)*32 + x];
u16 t = ((y+m_video_scroll)&0xff)*32 + x;
uint8_t const code_r = ram[0x6000 + t];
uint8_t const code_g = ram[0xa000 + t];
uint8_t const code_b = ram[0xe000 + t];
for (int b = 0; b < 8; b++)
{
uint8_t const col = (BIT(code_r, b) << 2) | (BIT(code_g, b) << 1) | (BIT(code_b, b) << 0);