mirror of
https://github.com/mamedev/mame.git
synced 2024-11-16 07:48:32 +01:00
vector06: cleanup; added natural keys
This commit is contained in:
parent
f259016b1e
commit
1312313971
6 changed files with 267 additions and 245 deletions
|
@ -9,9 +9,10 @@ license:CC0
|
|||
<description>ROMDISK</description>
|
||||
<year>19??</year>
|
||||
<publisher><unknown></publisher>
|
||||
<info name="usage" value="Hold down one of F2 (Retex text editor), F3 (Basic), F4 (Monitor), F5 (HW Test) and hit F11. Now hit F12." />
|
||||
<part name="cart" interface="vector06_cart">
|
||||
<dataarea name="rom" size="16384">
|
||||
<rom name="vector.bin" size="16384" crc="e533bd83" sha1="624470b3f232131723a41d50455dca1a2ca0a0c0" offset="0" />
|
||||
<rom name="vector.bin" size="16384" crc="e533bd83" sha1="624470b3f232131723a41d50455dca1a2ca0a0c0"/>
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
|
|
@ -9,6 +9,7 @@ license:CC0
|
|||
<description>MicroDOS v3.1 BIOS T-34</description>
|
||||
<year>19??</year>
|
||||
<publisher><unknown></publisher>
|
||||
<info name="usage" value="Press F12" />
|
||||
<part name="flop1" interface="floppy_5_25">
|
||||
<dataarea name="flop" size="839680">
|
||||
<rom name="os-t34.fdd" size="839680" crc="6405dafa" sha1="c3b0503c06b541641ae7501ff1123758a7e7d8ab"/>
|
||||
|
@ -20,6 +21,7 @@ license:CC0
|
|||
<description>MicroDOS v3.1M BIOS T-72</description>
|
||||
<year>19??</year>
|
||||
<publisher><unknown></publisher>
|
||||
<info name="usage" value="Press F12" />
|
||||
<part name="flop1" interface="floppy_5_25">
|
||||
<dataarea name="flop" size="839680">
|
||||
<rom name="os-t72.fdd" size="839680" crc="cbb25106" sha1="ca2d3fa54cebe2fe29fb9b4bcd9bf7a54977ee50"/>
|
||||
|
@ -31,6 +33,7 @@ license:CC0
|
|||
<description>Card Game</description>
|
||||
<year>19??</year>
|
||||
<publisher><unknown></publisher>
|
||||
<info name="usage" value="Press F12" />
|
||||
<part name="flop1" interface="floppy_5_25">
|
||||
<dataarea name="flop" size="839680">
|
||||
<rom name="card.fdd" size="839680" crc="334e1379" sha1="2c15dac696942b0f3abe051a30bd954169344ad7"/>
|
||||
|
@ -43,6 +46,7 @@ license:CC0
|
|||
<year>1995</year>
|
||||
<publisher><unknown></publisher>
|
||||
<!--- title music plays too fast because of unemulated RAM access latency -->
|
||||
<info name="usage" value="Press F12, then Left-Alt, then 2" />
|
||||
<part name="flop1" interface="floppy_5_25">
|
||||
<dataarea name="flop" size="839680">
|
||||
<rom name="cdpacman.fdd" size="839680" crc="c429fa01" sha1="4513907202e22e795eb6c6af7eb9a4795795275e"/>
|
||||
|
@ -55,6 +59,7 @@ license:CC0
|
|||
<year>19??</year>
|
||||
<publisher><unknown></publisher>
|
||||
<!--- hold Ctrl while booting -->
|
||||
<info name="usage" value="Press F12, and hold CTRL until it has finished starting up." />
|
||||
<part name="flop1" interface="floppy_5_25">
|
||||
<dataarea name="flop" size="839680">
|
||||
<rom name="game-15.fdd" size="839680" crc="259fcb8e" sha1="4cec8e06d147b74a43784c7389ed86ba02bdf952"/>
|
||||
|
@ -66,6 +71,7 @@ license:CC0
|
|||
<description>Kombat Rabbits</description>
|
||||
<year>1995</year>
|
||||
<publisher><unknown></publisher>
|
||||
<info name="usage" value="Press F12, then KOMRAB for player vs computer, or KOMRABD for 2 players." />
|
||||
<part name="flop1" interface="floppy_5_25">
|
||||
<dataarea name="flop" size="839680">
|
||||
<rom name="komrab.fdd" size="839680" crc="59f8d7ee" sha1="ba95d78add7bf0cda05694763f0c72abcc6737de"/>
|
||||
|
@ -77,6 +83,7 @@ license:CC0
|
|||
<description>Lemmings</description>
|
||||
<year>1996</year>
|
||||
<publisher><unknown></publisher>
|
||||
<info name="usage" value="Press F12" />
|
||||
<part name="flop1" interface="floppy_5_25">
|
||||
<dataarea name="flop" size="839680">
|
||||
<rom name="lemmings.fdd" size="839680" crc="06ac97ba" sha1="3c6e7e226ae5dc7fd57bdf48bda17a50f5c21943"/>
|
||||
|
@ -88,6 +95,7 @@ license:CC0
|
|||
<description>Color Lines</description>
|
||||
<year>19??</year>
|
||||
<publisher><unknown></publisher>
|
||||
<info name="usage" value="Press F12" />
|
||||
<part name="flop1" interface="floppy_5_25">
|
||||
<dataarea name="flop" size="839680">
|
||||
<rom name="lines.fdd" size="839680" crc="d21ed39f" sha1="2a073ab4dd6cb3bc587dd50c1ec3a40fb1be1632"/>
|
||||
|
@ -99,6 +107,7 @@ license:CC0
|
|||
<description>Master Reversi</description>
|
||||
<year>19??</year>
|
||||
<publisher><unknown></publisher>
|
||||
<info name="usage" value="Press F12" />
|
||||
<part name="flop1" interface="floppy_5_25">
|
||||
<dataarea name="flop" size="839680">
|
||||
<rom name="mreversi.fdd" size="839680" crc="0175f570" sha1="c13eed04a92da8dd814dae0bc3079c2689c8cbb3"/>
|
||||
|
@ -110,6 +119,7 @@ license:CC0
|
|||
<description>Puzznic</description>
|
||||
<year>1996</year>
|
||||
<publisher><unknown></publisher>
|
||||
<info name="usage" value="Press F12. In the menu, press Space to start." />
|
||||
<part name="flop1" interface="floppy_5_25">
|
||||
<dataarea name="flop" size="839680">
|
||||
<rom name="puzznic.fdd" size="839680" crc="5c228353" sha1="8ab681e04045af9a5614f09546b281e73576730a"/>
|
||||
|
@ -121,6 +131,7 @@ license:CC0
|
|||
<description>Robocop</description>
|
||||
<year>1995</year>
|
||||
<publisher><unknown></publisher>
|
||||
<info name="usage" value="Press F12" />
|
||||
<part name="flop1" interface="floppy_5_25">
|
||||
<dataarea name="flop" size="839680">
|
||||
<rom name="robocop.fdd" size="839680" crc="52dcfa15" sha1="ed2dd0a48a2cdbfc08c1036d62ac48fb8ae69b11"/>
|
||||
|
@ -132,6 +143,7 @@ license:CC0
|
|||
<description>Tetris 3D</description>
|
||||
<year>1996</year>
|
||||
<publisher><unknown></publisher>
|
||||
<info name="usage" value="Press F12" />
|
||||
<part name="flop1" interface="floppy_5_25">
|
||||
<dataarea name="flop" size="839680">
|
||||
<rom name="tet3d.fdd" size="839680" crc="1d17f27f" sha1="47f2ffb350650974de0a1e992b6eda5346e81426"/>
|
||||
|
@ -139,10 +151,11 @@ license:CC0
|
|||
</part>
|
||||
</software>
|
||||
|
||||
<software name="zoo">
|
||||
<software name="zoo"><!-- unreadable dark blue screen -->
|
||||
<description>Zoo</description>
|
||||
<year>19??</year>
|
||||
<publisher><unknown></publisher>
|
||||
<info name="usage" value="Press F12" />
|
||||
<part name="flop1" interface="floppy_5_25">
|
||||
<dataarea name="flop" size="839680">
|
||||
<rom name="zoo.fdd" size="839680" crc="7def2d07" sha1="80b8103b2c349d7993e5365453ca88c7685753d7"/>
|
||||
|
|
|
@ -13,13 +13,22 @@ boot from FDD:
|
|||
press F12 after initial boot was load (indicated in screen lower part)
|
||||
hold Ctrl ("YC" key) during MicroDOS start to format RAM disk (required by some games)
|
||||
|
||||
48k MicroDos one-letter commands:
|
||||
B crash?
|
||||
D dir
|
||||
E erase
|
||||
K ?
|
||||
O some kind of status display
|
||||
U user
|
||||
|
||||
TODO:
|
||||
- correct CPU speed / latency emulation, each machine cycle takes here 4 clocks,
|
||||
i.e. INX B 4+1 will be 2*4=8clocks, SHLD addr is 4+3+3+3+3 so it will be 5*4=20clocks and so on
|
||||
- "Card Game" wont work, jump to 0 instead of vblank interrupt RST7, something direct.explicit or banking related ?
|
||||
- border emulaton
|
||||
- "Card Game" wont work, jump to 0 instead of vblank interrupt RST7, something banking related ?
|
||||
- border emulation
|
||||
- separate base unexpanded Vector06C configuration
|
||||
- slotify AY8910 sound boards ?
|
||||
- Rus/Lat key doesn't seem to be right?
|
||||
|
||||
****************************************************************************/
|
||||
|
||||
|
@ -28,121 +37,120 @@ TODO:
|
|||
|
||||
#include "formats/vector06_dsk.h"
|
||||
#include "screen.h"
|
||||
#include "softlist.h"
|
||||
#include "speaker.h"
|
||||
|
||||
/* Address maps */
|
||||
void vector06_state::vector06_mem(address_map &map)
|
||||
void vector06_state::mem_map(address_map &map)
|
||||
{
|
||||
map(0x0000, 0xffff).bankrw("bank1");
|
||||
map(0x0000, 0x7fff).bankr("bank2");
|
||||
map(0xa000, 0xdfff).bankrw("bank3");
|
||||
}
|
||||
|
||||
void vector06_state::vector06_io(address_map &map)
|
||||
void vector06_state::io_map(address_map &map)
|
||||
{
|
||||
map.global_mask(0xff);
|
||||
map.unmap_value_high();
|
||||
|
||||
map(0x00, 0x03).lrw8(NAME([this] (offs_t offset) -> u8 { return m_ppi8255->read(offset^3); }), NAME([this] (offs_t offset, u8 data) { m_ppi8255->write(offset^3, data); }));
|
||||
map(0x04, 0x07).lrw8(NAME([this] (offs_t offset) -> u8 { return m_ppi8255_2->read(offset^3); }), NAME([this] (offs_t offset, u8 data) { m_ppi8255_2->write(offset^3, data); }));
|
||||
map(0x08, 0x0b).lrw8(NAME([this] (offs_t offset) -> u8 { return m_pit8253->read(offset^3); }), NAME([this] (offs_t offset, u8 data) { m_pit8253->write(offset^3, data); }));
|
||||
map(0x0c, 0x0c).w(FUNC(vector06_state::vector06_color_set));
|
||||
map(0x10, 0x10).w(FUNC(vector06_state::vector06_ramdisk_w));
|
||||
map(0x00, 0x03).lrw8(NAME([this] (offs_t offset) -> u8 { return m_ppi1->read(offset^3); }), NAME([this] (offs_t offset, u8 data) { m_ppi1->write(offset^3, data); }));
|
||||
map(0x04, 0x07).lrw8(NAME([this] (offs_t offset) -> u8 { return m_ppi2->read(offset^3); }), NAME([this] (offs_t offset, u8 data) { m_ppi2->write(offset^3, data); }));
|
||||
map(0x08, 0x0b).lrw8(NAME([this] (offs_t offset) -> u8 { return m_pit->read(offset^3); }), NAME([this] (offs_t offset, u8 data) { m_pit->write(offset^3, data); }));
|
||||
map(0x0c, 0x0c).w(FUNC(vector06_state::color_set));
|
||||
map(0x10, 0x10).w(FUNC(vector06_state::ramdisk_w));
|
||||
map(0x14, 0x15).rw(m_ay, FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_address_w));
|
||||
map(0x18, 0x18).rw(m_fdc, FUNC(kr1818vg93_device::data_r), FUNC(kr1818vg93_device::data_w));
|
||||
map(0x19, 0x19).rw(m_fdc, FUNC(kr1818vg93_device::sector_r), FUNC(kr1818vg93_device::sector_w));
|
||||
map(0x1a, 0x1a).rw(m_fdc, FUNC(kr1818vg93_device::track_r), FUNC(kr1818vg93_device::track_w));
|
||||
map(0x1b, 0x1b).rw(m_fdc, FUNC(kr1818vg93_device::status_r), FUNC(kr1818vg93_device::cmd_w));
|
||||
map(0x1c, 0x1c).w(FUNC(vector06_state::vector06_disc_w));
|
||||
map(0x1c, 0x1c).w(FUNC(vector06_state::disc_w));
|
||||
}
|
||||
|
||||
/* Input ports */
|
||||
static INPUT_PORTS_START( vector06 )
|
||||
PORT_START("LINE.0")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Tab") PORT_CODE(KEYCODE_TAB)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Del") PORT_CODE(KEYCODE_DEL)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Enter") PORT_CODE(KEYCODE_ENTER)
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("BkSp") PORT_CODE(KEYCODE_BACKSPACE)
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Left") PORT_CODE(KEYCODE_LEFT)
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Up") PORT_CODE(KEYCODE_UP)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Right") PORT_CODE(KEYCODE_RIGHT)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Down") PORT_CODE(KEYCODE_DOWN)
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Tab") PORT_CODE(KEYCODE_TAB) PORT_CHAR(9)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Del") PORT_CODE(KEYCODE_DEL) PORT_CHAR(UCHAR_MAMEKEY(DEL))
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Enter") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("BkSp") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8)
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Left") PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT))
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Up") PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP))
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Right") PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT))
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Down") PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN))
|
||||
PORT_START("LINE.1")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Home") PORT_CODE(KEYCODE_HOME)
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Home") PORT_CODE(KEYCODE_HOME) PORT_CHAR(UCHAR_MAMEKEY(HOME))
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("PgUp") PORT_CODE(KEYCODE_PGUP)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Esc") PORT_CODE(KEYCODE_ESC)
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F1") PORT_CODE(KEYCODE_F1)
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F2") PORT_CODE(KEYCODE_F2)
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F3") PORT_CODE(KEYCODE_F3)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F4") PORT_CODE(KEYCODE_F4)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F5") PORT_CODE(KEYCODE_F5)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Esc") PORT_CODE(KEYCODE_ESC) PORT_CHAR(27)
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F1") PORT_CODE(KEYCODE_F1) PORT_CHAR(UCHAR_MAMEKEY(F1))
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F2") PORT_CODE(KEYCODE_F2) PORT_CHAR(UCHAR_MAMEKEY(F2))
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F3") PORT_CODE(KEYCODE_F3) PORT_CHAR(UCHAR_MAMEKEY(F3))
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F4") PORT_CODE(KEYCODE_F4) PORT_CHAR(UCHAR_MAMEKEY(F4))
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F5") PORT_CODE(KEYCODE_F5) PORT_CHAR(UCHAR_MAMEKEY(F5))
|
||||
PORT_START("LINE.2")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("0") PORT_CODE(KEYCODE_0)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("1") PORT_CODE(KEYCODE_1)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("2") PORT_CODE(KEYCODE_2)
|
||||
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("4") PORT_CODE(KEYCODE_4)
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("5") PORT_CODE(KEYCODE_5)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("6") PORT_CODE(KEYCODE_6)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("7") PORT_CODE(KEYCODE_7)
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("0") PORT_CODE(KEYCODE_0) PORT_CHAR('0')
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("1 !") PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("2 \"") PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('"')
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("3 #") PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("4") PORT_CODE(KEYCODE_4) PORT_CHAR('4')
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("5 %") PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("6 &") PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&')
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("7 \'") PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'')
|
||||
PORT_START("LINE.3")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("8") PORT_CODE(KEYCODE_8)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("9") PORT_CODE(KEYCODE_9)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("'") PORT_CODE(KEYCODE_INSERT)
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(";") PORT_CODE(KEYCODE_COLON)
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(",") PORT_CODE(KEYCODE_COMMA)
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("=") PORT_CODE(KEYCODE_EQUALS)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(".") PORT_CODE(KEYCODE_STOP)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("/") PORT_CODE(KEYCODE_SLASH)
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("8 (") PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(')
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("9 )") PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')')
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(": *") PORT_CODE(KEYCODE_MINUS) PORT_CHAR(':') PORT_CHAR('*')
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("; +") PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR('+')
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(", <") PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<')
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("- =") PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('-') PORT_CHAR('=')
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(". >") PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>')
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("/ ?") PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
|
||||
PORT_START("LINE.4")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("@") PORT_CODE(KEYCODE_QUOTE)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("A") PORT_CODE(KEYCODE_A)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("B") PORT_CODE(KEYCODE_B)
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("C") PORT_CODE(KEYCODE_C)
|
||||
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("E") PORT_CODE(KEYCODE_E)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F") PORT_CODE(KEYCODE_F)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("G") PORT_CODE(KEYCODE_G)
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("@ `") PORT_CODE(KEYCODE_QUOTE) PORT_CHAR('@') PORT_CHAR('`')
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("A") PORT_CODE(KEYCODE_A) PORT_CHAR('A') PORT_CHAR('a')
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("B") PORT_CODE(KEYCODE_B) PORT_CHAR('B') PORT_CHAR('b')
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("C") PORT_CODE(KEYCODE_C) PORT_CHAR('C') PORT_CHAR('c')
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("D") PORT_CODE(KEYCODE_D) PORT_CHAR('D') PORT_CHAR('d')
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("E") PORT_CODE(KEYCODE_E) PORT_CHAR('E') PORT_CHAR('e')
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F") PORT_CODE(KEYCODE_F) PORT_CHAR('F') PORT_CHAR('f')
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("G") PORT_CODE(KEYCODE_G) PORT_CHAR('G') PORT_CHAR('g')
|
||||
PORT_START("LINE.5")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("H") PORT_CODE(KEYCODE_H)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("I") PORT_CODE(KEYCODE_I)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("J") PORT_CODE(KEYCODE_J)
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("K") PORT_CODE(KEYCODE_K)
|
||||
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("M") PORT_CODE(KEYCODE_M)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("N") PORT_CODE(KEYCODE_N)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("O") PORT_CODE(KEYCODE_O)
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("H") PORT_CODE(KEYCODE_H) PORT_CHAR('H') PORT_CHAR('h')
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("I") PORT_CODE(KEYCODE_I) PORT_CHAR('I') PORT_CHAR('i')
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("J") PORT_CODE(KEYCODE_J) PORT_CHAR('J') PORT_CHAR('j')
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("K") PORT_CODE(KEYCODE_K) PORT_CHAR('K') PORT_CHAR('k')
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("L") PORT_CODE(KEYCODE_L) PORT_CHAR('L') PORT_CHAR('l')
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("M") PORT_CODE(KEYCODE_M) PORT_CHAR('M') PORT_CHAR('m')
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("N") PORT_CODE(KEYCODE_N) PORT_CHAR('N') PORT_CHAR('n')
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("O") PORT_CODE(KEYCODE_O) PORT_CHAR('O') PORT_CHAR('o')
|
||||
PORT_START("LINE.6")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("P") PORT_CODE(KEYCODE_P)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Q") PORT_CODE(KEYCODE_Q)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("R") PORT_CODE(KEYCODE_R)
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("S") PORT_CODE(KEYCODE_S)
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("T") PORT_CODE(KEYCODE_T)
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("U") PORT_CODE(KEYCODE_U)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("V") PORT_CODE(KEYCODE_V)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("W") PORT_CODE(KEYCODE_W)
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("P") PORT_CODE(KEYCODE_P) PORT_CHAR('P') PORT_CHAR('p')
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) PORT_CHAR('Q') PORT_CHAR('q')
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("R") PORT_CODE(KEYCODE_R) PORT_CHAR('R') PORT_CHAR('r')
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("S") PORT_CODE(KEYCODE_S) PORT_CHAR('S') PORT_CHAR('s')
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("T") PORT_CODE(KEYCODE_T) PORT_CHAR('T') PORT_CHAR('t')
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("U") PORT_CODE(KEYCODE_U) PORT_CHAR('U') PORT_CHAR('u')
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("V") PORT_CODE(KEYCODE_V) PORT_CHAR('V') PORT_CHAR('v')
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("W") PORT_CODE(KEYCODE_W) PORT_CHAR('W') PORT_CHAR('w')
|
||||
PORT_START("LINE.7")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("X") PORT_CODE(KEYCODE_X)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Y") PORT_CODE(KEYCODE_Y)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Z") PORT_CODE(KEYCODE_Z)
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("[") PORT_CODE(KEYCODE_OPENBRACE)
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\\") PORT_CODE(KEYCODE_BACKSLASH)
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("]") PORT_CODE(KEYCODE_CLOSEBRACE)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("~") PORT_CODE(KEYCODE_TILDE)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Space") PORT_CODE(KEYCODE_SPACE)
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("X") PORT_CODE(KEYCODE_X) PORT_CHAR('X') PORT_CHAR('x')
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Y") PORT_CODE(KEYCODE_Y) PORT_CHAR('Y') PORT_CHAR('y')
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Z") PORT_CODE(KEYCODE_Z) PORT_CHAR('Z') PORT_CHAR('z')
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("[ {") PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('{') PORT_CHAR('[')
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\\ |") PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('|') PORT_CHAR('\\')
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("] }") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR('}') PORT_CHAR(']')
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("^ ~") PORT_CODE(KEYCODE_TILDE) PORT_CHAR('^') PORT_CHAR('~')
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Space") PORT_CODE(KEYCODE_SPACE) PORT_CHAR(32)
|
||||
PORT_START("LINE.8")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Shift") PORT_CODE(KEYCODE_LSHIFT)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Ctrl") PORT_CODE(KEYCODE_LCONTROL)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Rus/Lat") PORT_CODE(KEYCODE_LALT)
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Shift") PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Ctrl YC") PORT_CODE(KEYCODE_LCONTROL) //PORT_CODE(KEYCODE_RCONTROL) PORT_CHAR(UCHAR_SHIFT_2)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Rus/Lat") PORT_CODE(KEYCODE_LALT) // This acts as a caps lock in the CP/M screen
|
||||
PORT_START("RESET")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Reset") PORT_CODE(KEYCODE_F11)
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Reset 2") PORT_CODE(KEYCODE_F12)
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Reset") PORT_CODE(KEYCODE_F11) PORT_CHAR(UCHAR_MAMEKEY(F11)) PORT_CHANGED_MEMBER(DEVICE_SELF, vector06_state, f11_button, 0)
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("AP2") PORT_CODE(KEYCODE_F12) PORT_CHAR(UCHAR_MAMEKEY(F12)) PORT_CHANGED_MEMBER(DEVICE_SELF, vector06_state, f12_button, 0)
|
||||
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
@ -162,11 +170,11 @@ void vector06_state::vector06(machine_config &config)
|
|||
{
|
||||
/* basic machine hardware */
|
||||
I8080(config, m_maincpu, 3000000); // actual speed is wrong due to unemulated latency
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &vector06_state::vector06_mem);
|
||||
m_maincpu->set_addrmap(AS_IO, &vector06_state::vector06_io);
|
||||
m_maincpu->out_status_func().set(FUNC(vector06_state::vector06_status_callback));
|
||||
m_maincpu->set_vblank_int("screen", FUNC(vector06_state::vector06_interrupt));
|
||||
m_maincpu->set_irq_acknowledge_callback(FUNC(vector06_state::vector06_irq_callback));
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &vector06_state::mem_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &vector06_state::io_map);
|
||||
m_maincpu->out_status_func().set(FUNC(vector06_state::status_callback));
|
||||
m_maincpu->set_vblank_int("screen", FUNC(vector06_state::irq0_line_hold));
|
||||
m_maincpu->set_irq_acknowledge_callback(FUNC(vector06_state::irq_callback));
|
||||
|
||||
/* video hardware */
|
||||
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
|
||||
|
@ -174,7 +182,7 @@ void vector06_state::vector06(machine_config &config)
|
|||
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
|
||||
m_screen->set_size(256+64, 256+64);
|
||||
m_screen->set_visarea(0, 256+64-1, 0, 256+64-1);
|
||||
m_screen->set_screen_update(FUNC(vector06_state::screen_update_vector06));
|
||||
m_screen->set_screen_update(FUNC(vector06_state::screen_update));
|
||||
m_screen->set_palette(m_palette);
|
||||
|
||||
PALETTE(config, m_palette, palette_device::BLACK, 16);
|
||||
|
@ -182,17 +190,17 @@ void vector06_state::vector06(machine_config &config)
|
|||
SPEAKER(config, "mono").front_center();
|
||||
|
||||
/* devices */
|
||||
I8255(config, m_ppi8255);
|
||||
m_ppi8255->in_pb_callback().set(FUNC(vector06_state::vector06_8255_portb_r));
|
||||
m_ppi8255->in_pc_callback().set(FUNC(vector06_state::vector06_8255_portc_r));
|
||||
m_ppi8255->out_pa_callback().set(FUNC(vector06_state::vector06_8255_porta_w));
|
||||
m_ppi8255->out_pb_callback().set(FUNC(vector06_state::vector06_8255_portb_w));
|
||||
I8255(config, m_ppi1);
|
||||
m_ppi1->in_pb_callback().set(FUNC(vector06_state::ppi1_portb_r));
|
||||
m_ppi1->in_pc_callback().set(FUNC(vector06_state::ppi1_portc_r));
|
||||
m_ppi1->out_pa_callback().set(FUNC(vector06_state::ppi1_porta_w));
|
||||
m_ppi1->out_pb_callback().set(FUNC(vector06_state::ppi1_portb_w));
|
||||
|
||||
I8255(config, m_ppi8255_2);
|
||||
m_ppi8255_2->in_pb_callback().set(FUNC(vector06_state::vector06_romdisk_portb_r));
|
||||
m_ppi8255_2->out_pa_callback().set(FUNC(vector06_state::vector06_romdisk_porta_w));
|
||||
m_ppi8255_2->out_pb_callback().set(FUNC(vector06_state::vector06_romdisk_portb_w));
|
||||
m_ppi8255_2->out_pc_callback().set(FUNC(vector06_state::vector06_romdisk_portc_w));
|
||||
I8255(config, m_ppi2);
|
||||
m_ppi2->in_pb_callback().set(FUNC(vector06_state::ppi2_portb_r));
|
||||
m_ppi2->out_pa_callback().set(FUNC(vector06_state::ppi2_porta_w));
|
||||
m_ppi2->out_pb_callback().set(FUNC(vector06_state::ppi2_portb_w));
|
||||
m_ppi2->out_pc_callback().set(FUNC(vector06_state::ppi2_portc_w));
|
||||
|
||||
CASSETTE(config, m_cassette);
|
||||
m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED);
|
||||
|
@ -200,8 +208,8 @@ void vector06_state::vector06(machine_config &config)
|
|||
|
||||
KR1818VG93(config, m_fdc, 1_MHz_XTAL);
|
||||
|
||||
FLOPPY_CONNECTOR(config, "wd1793:0", vector06_floppies, "qd", vector06_state::floppy_formats);
|
||||
FLOPPY_CONNECTOR(config, "wd1793:1", vector06_floppies, "qd", vector06_state::floppy_formats);
|
||||
FLOPPY_CONNECTOR(config, "fdc:0", vector06_floppies, "qd", vector06_state::floppy_formats);
|
||||
FLOPPY_CONNECTOR(config, "fdc:1", vector06_floppies, "qd", vector06_state::floppy_formats);
|
||||
SOFTWARE_LIST(config, "flop_list").set_original("vector06_flop");
|
||||
|
||||
/* cartridge */
|
||||
|
@ -213,58 +221,61 @@ void vector06_state::vector06(machine_config &config)
|
|||
|
||||
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50);
|
||||
|
||||
PIT8253(config, m_pit8253, 0);
|
||||
m_pit8253->set_clk<0>(1500000);
|
||||
m_pit8253->set_clk<1>(1500000);
|
||||
m_pit8253->set_clk<2>(1500000);
|
||||
m_pit8253->out_handler<0>().set(FUNC(vector06_state::speaker_w));
|
||||
m_pit8253->out_handler<1>().set(FUNC(vector06_state::speaker_w));
|
||||
m_pit8253->out_handler<2>().set(FUNC(vector06_state::speaker_w));
|
||||
PIT8253(config, m_pit, 0);
|
||||
m_pit->set_clk<0>(1500000);
|
||||
m_pit->set_clk<1>(1500000);
|
||||
m_pit->set_clk<2>(1500000);
|
||||
m_pit->out_handler<0>().set(FUNC(vector06_state::speaker_w));
|
||||
m_pit->out_handler<1>().set(FUNC(vector06_state::speaker_w));
|
||||
m_pit->out_handler<2>().set(FUNC(vector06_state::speaker_w));
|
||||
|
||||
// optional
|
||||
AY8910(config, m_ay, 1773400).add_route(ALL_OUTPUTS, "mono", 0.50);
|
||||
}
|
||||
|
||||
|
||||
/* ROM definition */
|
||||
|
||||
ROM_START( vector06 )
|
||||
ROM_REGION( 0x18000, "maincpu", ROMREGION_ERASEFF )
|
||||
ROM_REGION( 0x8000, "maincpu", ROMREGION_ERASEFF )
|
||||
ROM_SYSTEM_BIOS(0, "unboot32k", "Universal Boot 32K")
|
||||
ROMX_LOAD( "unboot32k.rt", 0x10000, 0x8000, CRC(28c9b5cd) SHA1(8cd7fb658896a7066ae93b10eaafa0f12139ad81), ROM_BIOS(0))
|
||||
ROMX_LOAD( "unboot32k.rt", 0x0000, 0x8000, CRC(28c9b5cd) SHA1(8cd7fb658896a7066ae93b10eaafa0f12139ad81), ROM_BIOS(0))
|
||||
ROM_SYSTEM_BIOS(1, "unboot2k", "Universal Boot 2K")
|
||||
ROMX_LOAD( "unboot2k.rt", 0x10000, 0x0800, CRC(4c80dc31) SHA1(7e5e3acfdbea2e52b0d64c5868821deaec383815), ROM_BIOS(1))
|
||||
ROMX_LOAD( "unboot2k.rt", 0x0000, 0x0800, CRC(4c80dc31) SHA1(7e5e3acfdbea2e52b0d64c5868821deaec383815), ROM_BIOS(1))
|
||||
ROM_SYSTEM_BIOS(2, "coman", "Boot Coman")
|
||||
ROMX_LOAD( "coman.rt", 0x10000, 0x0800, CRC(f8c4a85a) SHA1(47fa8b02f09a1d06aa63a2b90b2597b1d93d976f), ROM_BIOS(2))
|
||||
ROMX_LOAD( "coman.rt", 0x0000, 0x0800, CRC(f8c4a85a) SHA1(47fa8b02f09a1d06aa63a2b90b2597b1d93d976f), ROM_BIOS(2))
|
||||
ROM_SYSTEM_BIOS(3, "bootbyte", "Boot Byte")
|
||||
ROMX_LOAD( "bootbyte.rt", 0x10000, 0x0800, CRC(3b42fd9d) SHA1(a112f4fe519bc3dbee85b09040d4804a17c9eda2), ROM_BIOS(3))
|
||||
ROMX_LOAD( "bootbyte.rt", 0x0000, 0x0800, CRC(3b42fd9d) SHA1(a112f4fe519bc3dbee85b09040d4804a17c9eda2), ROM_BIOS(3))
|
||||
ROM_SYSTEM_BIOS(4, "bootos", "Boot OS")
|
||||
ROMX_LOAD( "bootos.rt", 0x10000, 0x0200, CRC(46bef038) SHA1(6732f4a360cd38112c53c458842d31f5b035cf59), ROM_BIOS(4))
|
||||
ROMX_LOAD( "bootos.rt", 0x0000, 0x0200, CRC(46bef038) SHA1(6732f4a360cd38112c53c458842d31f5b035cf59), ROM_BIOS(4))
|
||||
ROM_SYSTEM_BIOS(5, "boot512", "Boot 512")
|
||||
ROMX_LOAD( "boot512.rt", 0x10000, 0x0200, CRC(a0b1c6b2) SHA1(f6fe15cb0974aed30f9b7aa72133324a66d1ed3f), ROM_BIOS(5))
|
||||
ROMX_LOAD( "boot512.rt", 0x0000, 0x0200, CRC(a0b1c6b2) SHA1(f6fe15cb0974aed30f9b7aa72133324a66d1ed3f), ROM_BIOS(5))
|
||||
ROM_END
|
||||
|
||||
ROM_START( vec1200 )
|
||||
ROM_REGION( 0x18000, "maincpu", ROMREGION_ERASEFF )
|
||||
ROM_LOAD( "vec1200.bin", 0x10000, 0x2000, CRC(37349224) SHA1(060fbb2c1a89040c929521cfd58cb6f1431a8b75))
|
||||
ROM_REGION( 0x8000, "maincpu", ROMREGION_ERASEFF )
|
||||
ROM_LOAD( "vec1200.bin", 0x0000, 0x2000, CRC(37349224) SHA1(060fbb2c1a89040c929521cfd58cb6f1431a8b75))
|
||||
|
||||
ROM_REGION( 0x0200, "palette", 0 )
|
||||
ROM_LOAD( "palette.bin", 0x0000, 0x0200, CRC(74b7376b) SHA1(fb56b60babd7e6ed68e5f4e791ad2800d7ef6729))
|
||||
ROM_END
|
||||
|
||||
ROM_START( pk6128c )
|
||||
ROM_REGION( 0x18000, "maincpu", ROMREGION_ERASEFF )
|
||||
ROM_LOAD( "6128.bin", 0x10000, 0x4000, CRC(d4f68433) SHA1(ef5ac75f9240ca8996689c23642d4e47e5e774d8))
|
||||
ROM_REGION( 0x8000, "maincpu", ROMREGION_ERASEFF )
|
||||
ROM_LOAD( "6128.bin", 0x0000, 0x4000, CRC(d4f68433) SHA1(ef5ac75f9240ca8996689c23642d4e47e5e774d8))
|
||||
ROM_END
|
||||
|
||||
ROM_START( krista2 )
|
||||
ROM_REGION( 0x18000, "maincpu", ROMREGION_ERASEFF )
|
||||
ROM_LOAD( "krista2.epr", 0x10000, 0x0200, CRC(df5440b0) SHA1(bcbbb3cc10aeb17c1262b45111d20279266b9ba4))
|
||||
ROM_START( krista2 ) // appears it wants to load a tape at boot
|
||||
ROM_REGION( 0x8000, "maincpu", ROMREGION_ERASEFF )
|
||||
ROM_LOAD( "krista2.epr", 0x0000, 0x0200, CRC(df5440b0) SHA1(bcbbb3cc10aeb17c1262b45111d20279266b9ba4))
|
||||
|
||||
ROM_REGION( 0x0200, "palette", 0 )
|
||||
ROM_LOAD( "krista2.pal", 0x0000, 0x0200, CRC(b243da33) SHA1(9af7873e6f8bf452c8d831833ffb02dce833c095))
|
||||
ROM_END
|
||||
/* Driver */
|
||||
|
||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
|
||||
COMP( 1987, vector06, 0, 0, vector06, vector06, vector06_state, empty_init, "<unknown>", "Vector 06c", 0)
|
||||
COMP( 1987, vec1200, vector06, 0, vector06, vector06, vector06_state, empty_init, "<unknown>", "Vector 1200", MACHINE_NOT_WORKING)
|
||||
COMP( 1987, pk6128c, vector06, 0, vector06, vector06, vector06_state, empty_init, "<unknown>", "PK-6128c", MACHINE_NOT_WORKING)
|
||||
COMP( 1987, krista2, vector06, 0, vector06, vector06, vector06_state, empty_init, "<unknown>", "Krista-2", MACHINE_NOT_WORKING)
|
||||
COMP( 1987, vector06, 0, 0, vector06, vector06, vector06_state, empty_init, "<unknown>", "Vector 06c", MACHINE_SUPPORTS_SAVE )
|
||||
COMP( 1987, vec1200, vector06, 0, vector06, vector06, vector06_state, empty_init, "<unknown>", "Vector 1200", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
||||
COMP( 1987, pk6128c, vector06, 0, vector06, vector06, vector06_state, empty_init, "<unknown>", "PK-6128c", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
||||
COMP( 1987, krista2, vector06, 0, vector06, vector06, vector06_state, empty_init, "<unknown>", "Krista-2", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
||||
|
|
|
@ -32,61 +32,61 @@
|
|||
class vector06_state : public driver_device
|
||||
{
|
||||
public:
|
||||
vector06_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||
driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_speaker(*this, "speaker"),
|
||||
m_cassette(*this, "cassette"),
|
||||
m_cart(*this, "cartslot"),
|
||||
m_fdc(*this, "wd1793"),
|
||||
m_floppy0(*this, "wd1793:0"),
|
||||
m_floppy1(*this, "wd1793:1"),
|
||||
m_ay(*this, "aysnd"),
|
||||
m_ram(*this, RAM_TAG),
|
||||
m_palette(*this, "palette"),
|
||||
m_screen(*this, "screen"),
|
||||
m_ppi8255(*this, "ppi8255"),
|
||||
m_ppi8255_2(*this, "ppi8255_2"),
|
||||
m_pit8253(*this, "pit8253"),
|
||||
m_bank1(*this, "bank1"),
|
||||
m_bank2(*this, "bank2"),
|
||||
m_bank3(*this, "bank3"),
|
||||
m_region_maincpu(*this, "maincpu"),
|
||||
m_line(*this, "LINE.%u", 0),
|
||||
m_reset(*this, "RESET")
|
||||
vector06_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag)
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_rom(*this, "maincpu")
|
||||
, m_speaker(*this, "speaker")
|
||||
, m_cassette(*this, "cassette")
|
||||
, m_cart(*this, "cartslot")
|
||||
, m_fdc(*this, "fdc")
|
||||
, m_floppy0(*this, "fdc:0")
|
||||
, m_floppy1(*this, "fdc:1")
|
||||
, m_ay(*this, "aysnd")
|
||||
, m_ram(*this, RAM_TAG)
|
||||
, m_palette(*this, "palette")
|
||||
, m_screen(*this, "screen")
|
||||
, m_ppi1(*this, "ppi1")
|
||||
, m_ppi2(*this, "ppi2")
|
||||
, m_pit(*this, "pit")
|
||||
, m_bank1(*this, "bank1")
|
||||
, m_bank2(*this, "bank2")
|
||||
, m_bank3(*this, "bank3")
|
||||
, m_io_keyboard(*this, "LINE.%u", 0U)
|
||||
, m_io_reset(*this, "RESET")
|
||||
{ }
|
||||
|
||||
void vector06(machine_config &config);
|
||||
DECLARE_INPUT_CHANGED_MEMBER(f11_button);
|
||||
DECLARE_INPUT_CHANGED_MEMBER(f12_button);
|
||||
|
||||
private:
|
||||
DECLARE_FLOPPY_FORMATS(floppy_formats);
|
||||
|
||||
uint8_t vector06_8255_portb_r();
|
||||
uint8_t vector06_8255_portc_r();
|
||||
void vector06_8255_porta_w(uint8_t data);
|
||||
void vector06_8255_portb_w(uint8_t data);
|
||||
void vector06_color_set(uint8_t data);
|
||||
uint8_t vector06_romdisk_portb_r();
|
||||
void vector06_romdisk_portb_w(uint8_t data);
|
||||
void vector06_romdisk_porta_w(uint8_t data);
|
||||
void vector06_romdisk_portc_w(uint8_t data);
|
||||
void vector06_disc_w(uint8_t data);
|
||||
void vector06_status_callback(uint8_t data);
|
||||
void vector06_ramdisk_w(uint8_t data);
|
||||
uint8_t ppi1_portb_r();
|
||||
uint8_t ppi1_portc_r();
|
||||
void ppi1_porta_w(uint8_t data);
|
||||
void ppi1_portb_w(uint8_t data);
|
||||
void color_set(uint8_t data);
|
||||
uint8_t ppi2_portb_r();
|
||||
void ppi2_portb_w(uint8_t data);
|
||||
void ppi2_porta_w(uint8_t data);
|
||||
void ppi2_portc_w(uint8_t data);
|
||||
void disc_w(uint8_t data);
|
||||
void status_callback(uint8_t data);
|
||||
void ramdisk_w(uint8_t data);
|
||||
DECLARE_WRITE_LINE_MEMBER(speaker_w);
|
||||
void vector06_set_video_mode(int width);
|
||||
virtual void machine_start() override;
|
||||
virtual void machine_reset() override;
|
||||
virtual void video_start() override;
|
||||
uint32_t screen_update_vector06(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
INTERRUPT_GEN_MEMBER(vector06_interrupt);
|
||||
TIMER_CALLBACK_MEMBER(reset_check_callback);
|
||||
IRQ_CALLBACK_MEMBER(vector06_irq_callback);
|
||||
void machine_start() override;
|
||||
void machine_reset() override;
|
||||
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
IRQ_CALLBACK_MEMBER(irq_callback);
|
||||
void update_mem();
|
||||
|
||||
void vector06_io(address_map &map);
|
||||
void vector06_mem(address_map &map);
|
||||
void io_map(address_map &map);
|
||||
void mem_map(address_map &map);
|
||||
|
||||
required_device<i8080_cpu_device> m_maincpu;
|
||||
required_region_ptr<u8> m_rom;
|
||||
required_device<speaker_sound_device> m_speaker;
|
||||
required_device<cassette_image_device> m_cassette;
|
||||
required_device<generic_slot_device> m_cart;
|
||||
|
@ -97,28 +97,24 @@ private:
|
|||
required_device<ram_device> m_ram;
|
||||
required_device<palette_device> m_palette;
|
||||
required_device<screen_device> m_screen;
|
||||
required_device<i8255_device> m_ppi8255, m_ppi8255_2;
|
||||
required_device<pit8253_device> m_pit8253;
|
||||
required_device<i8255_device> m_ppi1, m_ppi2;
|
||||
required_device<pit8253_device> m_pit;
|
||||
required_memory_bank m_bank1;
|
||||
required_memory_bank m_bank2;
|
||||
required_memory_bank m_bank3;
|
||||
required_memory_region m_region_maincpu;
|
||||
required_ioport_array<9> m_line;
|
||||
required_ioport m_reset;
|
||||
required_ioport_array<9> m_io_keyboard;
|
||||
required_ioport m_io_reset;
|
||||
|
||||
uint8_t m_keyboard_mask;
|
||||
uint8_t m_color_index;
|
||||
uint8_t m_video_mode;
|
||||
uint8_t m_romdisk_msb;
|
||||
uint8_t m_romdisk_lsb;
|
||||
uint8_t m_vblank_state;
|
||||
uint8_t m_rambank;
|
||||
uint8_t m_aylatch;
|
||||
bool m_video_mode;
|
||||
bool m_stack_state;
|
||||
bool m_romen;
|
||||
emu_timer *m_reset_check_timer;
|
||||
|
||||
void update_mem();
|
||||
};
|
||||
|
||||
#endif // MAME_INCLUDES_VECTOR06_H
|
||||
|
|
|
@ -14,23 +14,19 @@
|
|||
#include "screen.h"
|
||||
|
||||
|
||||
uint8_t vector06_state::vector06_8255_portb_r()
|
||||
uint8_t vector06_state::ppi1_portb_r()
|
||||
{
|
||||
uint8_t key = 0xff;
|
||||
if (BIT(m_keyboard_mask, 0)) key &= m_line[0]->read();
|
||||
if (BIT(m_keyboard_mask, 1)) key &= m_line[1]->read();
|
||||
if (BIT(m_keyboard_mask, 2)) key &= m_line[2]->read();
|
||||
if (BIT(m_keyboard_mask, 3)) key &= m_line[3]->read();
|
||||
if (BIT(m_keyboard_mask, 4)) key &= m_line[4]->read();
|
||||
if (BIT(m_keyboard_mask, 5)) key &= m_line[5]->read();
|
||||
if (BIT(m_keyboard_mask, 6)) key &= m_line[6]->read();
|
||||
if (BIT(m_keyboard_mask, 7)) key &= m_line[7]->read();
|
||||
for (u8 i = 0; i < 8; i++)
|
||||
if (BIT(m_keyboard_mask, i))
|
||||
key &= m_io_keyboard[i]->read();
|
||||
|
||||
return key;
|
||||
}
|
||||
|
||||
uint8_t vector06_state::vector06_8255_portc_r()
|
||||
uint8_t vector06_state::ppi1_portc_r()
|
||||
{
|
||||
uint8_t ret = m_line[8]->read();
|
||||
uint8_t ret = m_io_keyboard[8]->read();
|
||||
|
||||
if (m_cassette->input() > 0)
|
||||
ret |= 0x10;
|
||||
|
@ -38,28 +34,24 @@ uint8_t vector06_state::vector06_8255_portc_r()
|
|||
return ret;
|
||||
}
|
||||
|
||||
void vector06_state::vector06_8255_porta_w(uint8_t data)
|
||||
void vector06_state::ppi1_porta_w(uint8_t data)
|
||||
{
|
||||
m_keyboard_mask = data ^ 0xff;
|
||||
}
|
||||
|
||||
void vector06_state::vector06_set_video_mode(int width)
|
||||
{
|
||||
rectangle visarea(0, width+64-1, 0, 256+64-1);
|
||||
m_screen->configure(width+64, 256+64, visarea, m_screen->frame_period().attoseconds());
|
||||
}
|
||||
|
||||
void vector06_state::vector06_8255_portb_w(uint8_t data)
|
||||
void vector06_state::ppi1_portb_w(uint8_t data)
|
||||
{
|
||||
m_color_index = data & 0x0f;
|
||||
if ((data & 0x10) != m_video_mode)
|
||||
if (BIT(data, 4) != m_video_mode)
|
||||
{
|
||||
m_video_mode = data & 0x10;
|
||||
vector06_set_video_mode((m_video_mode==0x10) ? 512 : 256);
|
||||
m_video_mode = BIT(data, 4);
|
||||
u16 width = m_video_mode ? 512 : 256;
|
||||
rectangle visarea(0, width+64-1, 0, 256+64-1);
|
||||
m_screen->configure(width+64, 256+64, visarea, m_screen->frame_period().attoseconds());
|
||||
}
|
||||
}
|
||||
|
||||
void vector06_state::vector06_color_set(uint8_t data)
|
||||
void vector06_state::color_set(uint8_t data)
|
||||
{
|
||||
uint8_t r = (data & 7) << 5;
|
||||
uint8_t g = ((data >> 3) & 7) << 5;
|
||||
|
@ -68,7 +60,7 @@ void vector06_state::vector06_color_set(uint8_t data)
|
|||
}
|
||||
|
||||
|
||||
uint8_t vector06_state::vector06_romdisk_portb_r()
|
||||
uint8_t vector06_state::ppi2_portb_r()
|
||||
{
|
||||
uint16_t addr = ((m_romdisk_msb & 0x7f) << 8) | m_romdisk_lsb;
|
||||
if ((m_romdisk_msb & 0x80) && m_cart->exists() && addr < m_cart->get_rom_size())
|
||||
|
@ -77,46 +69,42 @@ uint8_t vector06_state::vector06_romdisk_portb_r()
|
|||
return m_ay->data_r();
|
||||
}
|
||||
|
||||
void vector06_state::vector06_romdisk_portb_w(uint8_t data)
|
||||
void vector06_state::ppi2_portb_w(uint8_t data)
|
||||
{
|
||||
m_aylatch = data;
|
||||
}
|
||||
|
||||
void vector06_state::vector06_romdisk_porta_w(uint8_t data)
|
||||
void vector06_state::ppi2_porta_w(uint8_t data)
|
||||
{
|
||||
m_romdisk_lsb = data;
|
||||
}
|
||||
|
||||
void vector06_state::vector06_romdisk_portc_w (uint8_t data)
|
||||
void vector06_state::ppi2_portc_w (uint8_t data)
|
||||
{
|
||||
if (data & 4)
|
||||
m_ay->address_data_w((data >> 1) & 1, m_aylatch);
|
||||
m_romdisk_msb = data;
|
||||
}
|
||||
|
||||
INTERRUPT_GEN_MEMBER(vector06_state::vector06_interrupt)
|
||||
{
|
||||
device.execute().set_input_line(0, HOLD_LINE);
|
||||
}
|
||||
|
||||
IRQ_CALLBACK_MEMBER(vector06_state::vector06_irq_callback)
|
||||
IRQ_CALLBACK_MEMBER(vector06_state::irq_callback)
|
||||
{
|
||||
// Interrupt is RST 7
|
||||
return 0xff;
|
||||
}
|
||||
|
||||
TIMER_CALLBACK_MEMBER(vector06_state::reset_check_callback)
|
||||
INPUT_CHANGED_MEMBER(vector06_state::f11_button)
|
||||
{
|
||||
uint8_t val = m_reset->read();
|
||||
|
||||
if (BIT(val, 0))
|
||||
if (newval)
|
||||
{
|
||||
m_romen = true;
|
||||
update_mem();
|
||||
m_maincpu->reset();
|
||||
}
|
||||
}
|
||||
|
||||
if (BIT(val, 1))
|
||||
INPUT_CHANGED_MEMBER(vector06_state::f12_button)
|
||||
{
|
||||
if (newval)
|
||||
{
|
||||
m_romen = false;
|
||||
update_mem();
|
||||
|
@ -124,7 +112,7 @@ TIMER_CALLBACK_MEMBER(vector06_state::reset_check_callback)
|
|||
}
|
||||
}
|
||||
|
||||
void vector06_state::vector06_disc_w(uint8_t data)
|
||||
void vector06_state::disc_w(uint8_t data)
|
||||
{
|
||||
floppy_image_device *floppy = nullptr;
|
||||
|
||||
|
@ -146,26 +134,28 @@ void vector06_state::vector06_disc_w(uint8_t data)
|
|||
|
||||
void vector06_state::update_mem()
|
||||
{
|
||||
if ((m_rambank & 0x10) && m_stack_state) {
|
||||
int sentry = ((m_rambank >> 2) & 3) + 1;
|
||||
if (BIT(m_rambank, 4) && m_stack_state)
|
||||
{
|
||||
u8 sentry = ((m_rambank >> 2) & 3) + 1;
|
||||
m_bank1->set_entry(sentry);
|
||||
m_bank3->set_entry(sentry);
|
||||
m_bank2->set_base(m_ram->pointer() + sentry * 0x10000);
|
||||
m_bank2->set_entry(sentry + 1u);
|
||||
}
|
||||
else {
|
||||
else
|
||||
{
|
||||
m_bank1->set_entry(0);
|
||||
int ventry = 0;
|
||||
if (m_rambank & 0x20)
|
||||
u8 ventry = 0;
|
||||
if (BIT(m_rambank, 5))
|
||||
ventry = (m_rambank & 3) + 1;
|
||||
m_bank3->set_entry(ventry);
|
||||
if (m_romen)
|
||||
m_bank2->set_base(m_region_maincpu->base() + 0x10000);
|
||||
m_bank2->set_entry(0);
|
||||
else
|
||||
m_bank2->set_base(m_ram->pointer());
|
||||
m_bank2->set_entry(1);
|
||||
}
|
||||
}
|
||||
|
||||
void vector06_state::vector06_ramdisk_w(uint8_t data)
|
||||
void vector06_state::ramdisk_w(uint8_t data)
|
||||
{
|
||||
const uint8_t oldbank = m_rambank;
|
||||
m_rambank = data;
|
||||
|
@ -173,11 +163,11 @@ void vector06_state::vector06_ramdisk_w(uint8_t data)
|
|||
update_mem();
|
||||
}
|
||||
|
||||
void vector06_state::vector06_status_callback(uint8_t data)
|
||||
void vector06_state::status_callback(uint8_t data)
|
||||
{
|
||||
const bool oldstate = m_stack_state;
|
||||
m_stack_state = bool(data & i8080_cpu_device::STATUS_STACK);
|
||||
if (oldstate != m_stack_state && (m_rambank & 0x10))
|
||||
if ((oldstate != m_stack_state) && BIT(m_rambank, 4))
|
||||
update_mem();
|
||||
}
|
||||
|
||||
|
@ -188,8 +178,23 @@ WRITE_LINE_MEMBER(vector06_state::speaker_w)
|
|||
|
||||
void vector06_state::machine_start()
|
||||
{
|
||||
m_reset_check_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(vector06_state::reset_check_callback), this));
|
||||
m_reset_check_timer->adjust(attotime::from_hz(50), 0, attotime::from_hz(50));
|
||||
u8 *r = m_ram->pointer();
|
||||
|
||||
m_bank1->configure_entries(0, 5, r, 0x10000);
|
||||
m_bank2->configure_entry(0, m_rom);
|
||||
m_bank2->configure_entries(1, 5, r, 0x10000);
|
||||
m_bank3->configure_entries(0, 5, r + 0xa000, 0x10000);
|
||||
|
||||
save_item(NAME(m_keyboard_mask));
|
||||
save_item(NAME(m_color_index));
|
||||
save_item(NAME(m_romdisk_msb));
|
||||
save_item(NAME(m_romdisk_lsb));
|
||||
save_item(NAME(m_vblank_state));
|
||||
save_item(NAME(m_rambank));
|
||||
save_item(NAME(m_aylatch));
|
||||
save_item(NAME(m_video_mode));
|
||||
save_item(NAME(m_stack_state));
|
||||
save_item(NAME(m_romen));
|
||||
}
|
||||
|
||||
void vector06_state::machine_reset()
|
||||
|
@ -198,13 +203,12 @@ void vector06_state::machine_reset()
|
|||
m_rambank = 0;
|
||||
m_romen = true;
|
||||
|
||||
m_bank1->configure_entries(0, 5, m_ram->pointer(), 0x10000);
|
||||
for (int i = 0; i < 5; i++)
|
||||
m_bank3->configure_entry(i, m_ram->pointer() + 0x10000 * i + 0xa000);
|
||||
|
||||
update_mem();
|
||||
|
||||
m_keyboard_mask = 0;
|
||||
m_color_index = 0;
|
||||
m_video_mode = 0;
|
||||
m_bank1->set_entry(0);
|
||||
m_bank2->set_entry(0);
|
||||
m_bank3->set_entry(0);
|
||||
}
|
||||
|
|
|
@ -13,18 +13,14 @@
|
|||
#include "includes/vector06.h"
|
||||
|
||||
|
||||
void vector06_state::video_start()
|
||||
{
|
||||
}
|
||||
|
||||
uint32_t vector06_state::screen_update_vector06(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
uint32_t vector06_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
uint8_t code1,code2,code3,code4;
|
||||
uint8_t col;
|
||||
int y, x, b,draw_y;
|
||||
uint8_t *ram = m_ram->pointer();
|
||||
|
||||
int width = (m_video_mode==0x00) ? 256 : 512;
|
||||
u16 width = (m_video_mode) ? 512 : 256;
|
||||
rectangle screen_area(0,width+64-1,0,256+64-1);
|
||||
// fill border color
|
||||
bitmap.fill(m_color_index, screen_area);
|
||||
|
@ -42,12 +38,13 @@ uint32_t vector06_state::screen_update_vector06(screen_device &screen, bitmap_in
|
|||
code4 = ram[0xe000 + x*256 + y];
|
||||
for (b = 0; b < 8; b++)
|
||||
{
|
||||
col = ((code1 >> b) & 0x01) * 8 + ((code2 >> b) & 0x01) * 4 + ((code3 >> b) & 0x01)* 2+ ((code4 >> b) & 0x01);
|
||||
if (m_video_mode==0x00) {
|
||||
bitmap.pix16(draw_y, x*8+(7-b)+32) = col;
|
||||
} else {
|
||||
bitmap.pix16(draw_y, x*16+(7-b)*2+1+32) = ((code2 >> b) & 0x01) * 2;
|
||||
bitmap.pix16(draw_y, x*16+(7-b)*2+32) = ((code3 >> b) & 0x01) * 2;
|
||||
col = BIT(code1, b) * 8 + BIT(code2, b) * 4 + BIT(code3, b)* 2+ BIT(code4, b);
|
||||
if (!m_video_mode)
|
||||
bitmap.pix16(draw_y, x*8+(7-b)+32) = col;
|
||||
else
|
||||
{
|
||||
bitmap.pix16(draw_y, x*16+(7-b)*2+1+32) = BIT(code2, b) * 2;
|
||||
bitmap.pix16(draw_y, x*16+(7-b)*2+32) = BIT(code3, b) * 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue