trunk/src/mess/drivers/excali64.c
| r242272 | r242273 | |
| 8 | 8 | |
| 9 | 9 | Chips: Z80A, 8251, 8253, 8255, 6845 |
| 10 | 10 | |
| 11 | ToDo: |
| 12 | - Some keys can be connected to more than one position in the matrix. Need to |
| 13 | determine the correct positions. |
| 14 | - The position of the "Line Insert" key is unknown. |
| 15 | - The video section has attributes and colour, none of this is done. |
| 16 | - Disk controller |
| 17 | - Banking |
| 18 | - The schematic shows the audio counter connected to 2MHz, but this produces |
| 19 | sounds that are too high. Connected to 1MHz for now. |
| 20 | - Serial |
| 21 | - Parallel / Centronics |
| 22 | - Need software |
| 23 | |
| 11 | 24 | ****************************************************************************/ |
| 12 | 25 | |
| 13 | 26 | #include "emu.h" |
| r242272 | r242273 | |
| 32 | 45 | , m_palette(*this, "palette") |
| 33 | 46 | , m_maincpu(*this, "maincpu") |
| 34 | 47 | , m_cass(*this, "cassette") |
| 48 | , m_io_keyboard(*this, "KEY") |
| 35 | 49 | { } |
| 36 | 50 | |
| 37 | 51 | DECLARE_DRIVER_INIT(excali64); |
| 52 | DECLARE_WRITE8_MEMBER(ppib_w); |
| 38 | 53 | DECLARE_READ8_MEMBER(ppic_r); |
| 39 | 54 | DECLARE_WRITE8_MEMBER(ppic_w); |
| 55 | DECLARE_READ8_MEMBER(port00_r); |
| 40 | 56 | DECLARE_READ8_MEMBER(port50_r); |
| 41 | 57 | DECLARE_WRITE8_MEMBER(port70_w); |
| 42 | 58 | DECLARE_WRITE8_MEMBER(video_w); |
| r242272 | r242273 | |
| 44 | 60 | DECLARE_WRITE_LINE_MEMBER(crtc_de); |
| 45 | 61 | DECLARE_WRITE_LINE_MEMBER(crtc_vs); |
| 46 | 62 | |
| 47 | | const UINT8 *m_p_chargen; |
| 48 | | UINT8 *m_p_videoram; |
| 49 | 63 | required_device<palette_device> m_palette; |
| 50 | 64 | |
| 51 | 65 | private: |
| 66 | const UINT8 *m_p_chargen; |
| 67 | UINT8 *m_p_videoram; |
| 52 | 68 | UINT8 m_sys_status; |
| 69 | UINT8 m_kbdrow; |
| 53 | 70 | bool m_crtc_vs; |
| 54 | 71 | bool m_crtc_de; |
| 55 | 72 | required_device<cpu_device> m_maincpu; |
| 56 | 73 | required_device<cassette_image_device> m_cass; |
| 74 | required_ioport_array<8> m_io_keyboard; |
| 57 | 75 | }; |
| 58 | 76 | |
| 59 | 77 | static ADDRESS_MAP_START(excali64_mem, AS_PROGRAM, 8, excali64_state) |
| 60 | 78 | AM_RANGE(0x0000, 0x1FFF) AM_ROM |
| 61 | | AM_RANGE(0x2000, 0x2FFF) AM_ROM AM_WRITE(video_w) |
| 62 | | AM_RANGE(0x3000, 0x3FFF) AM_ROM |
| 79 | AM_RANGE(0x2000, 0x3FFF) AM_ROM AM_WRITE(video_w) |
| 63 | 80 | AM_RANGE(0x4000, 0xFFFF) AM_RAM |
| 64 | 81 | ADDRESS_MAP_END |
| 65 | 82 | |
| 66 | 83 | static ADDRESS_MAP_START(excali64_io, AS_IO, 8, excali64_state) |
| 67 | 84 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 85 | AM_RANGE(0x00, 0x0f) AM_READ(port00_r) |
| 68 | 86 | AM_RANGE(0x10, 0x10) AM_MIRROR(0x0e) AM_DEVREADWRITE("uart",i8251_device, data_r, data_w) |
| 69 | 87 | AM_RANGE(0x11, 0x11) AM_MIRROR(0x0e) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w) |
| 70 | 88 | AM_RANGE(0x20, 0x23) AM_MIRROR(0x0c) AM_DEVREADWRITE("pit", pit8253_device, read, write) |
| 71 | | AM_RANGE(0x30, 0x30) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w) |
| 72 | | AM_RANGE(0x31, 0x31) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) |
| 89 | AM_RANGE(0x30, 0x30) AM_MIRROR(0x0e) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w) |
| 90 | AM_RANGE(0x31, 0x31) AM_MIRROR(0x0e) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) |
| 73 | 91 | AM_RANGE(0x50, 0x5f) AM_READ(port50_r) |
| 74 | 92 | AM_RANGE(0x60, 0x63) AM_MIRROR(0x0c) AM_DEVREADWRITE("ppi", i8255_device, read, write) |
| 75 | 93 | AM_RANGE(0x70, 0x7f) AM_WRITE(port70_w) |
| r242272 | r242273 | |
| 78 | 96 | |
| 79 | 97 | /* Input ports */ |
| 80 | 98 | static INPUT_PORTS_START( excali64 ) |
| 99 | //PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("LINEFEED") PORT_CODE(KEYCODE_ENTER_PAD) PORT_CHAR(0x0a)//H |
| 100 | //PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("REPT") PORT_CODE(KEYCODE_LALT)//0x11 |
| 101 | //PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("(Down)") PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN))//B |
| 102 | //PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("(Up)") PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP)) |
| 103 | //PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("(Fire)") PORT_CODE(KEYCODE_INSERT) PORT_CHAR(UCHAR_MAMEKEY(INSERT)) |
| 104 | //PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\\ |")PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('\\') PORT_CHAR('|') PORT_CHAR(0x1c) |
| 105 | //PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("(Right)") PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) |
| 106 | //PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("BRK") PORT_CODE(KEYCODE_NUMLOCK) PORT_CHAR(0x03) |
| 107 | //PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("(Left)") PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) |
| 108 | |
| 109 | PORT_START("KEY.0") /* line 0 */ |
| 110 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("R") PORT_CODE(KEYCODE_R) PORT_CHAR('R') PORT_CHAR('R') PORT_CHAR(0x12) |
| 111 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("W") PORT_CODE(KEYCODE_W) PORT_CHAR('W') PORT_CHAR('W') PORT_CHAR(0x17) |
| 112 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Shift") PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1) |
| 113 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("E") PORT_CODE(KEYCODE_E) PORT_CHAR('E') PORT_CHAR('E') PORT_CHAR(0x05) |
| 114 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("TAB") PORT_CODE(KEYCODE_TAB) PORT_CHAR(0x09) |
| 115 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("CAPSLOCK") PORT_CODE(KEYCODE_CAPSLOCK) PORT_TOGGLE |
| 116 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("A") PORT_CODE(KEYCODE_A) PORT_CHAR('A') PORT_CHAR('A') PORT_CHAR(0x01) |
| 117 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) PORT_CHAR('Q') PORT_CHAR('Q') PORT_CHAR(0x11) |
| 118 | |
| 119 | PORT_START("KEY.1") /* line 1 */ |
| 120 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F3") PORT_CODE(KEYCODE_F3) |
| 121 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F2") PORT_CODE(KEYCODE_F2) |
| 122 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F4") PORT_CODE(KEYCODE_F4) |
| 123 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Space") PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ') |
| 124 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("CTRL") PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(KEYCODE_RCONTROL) PORT_CHAR(UCHAR_SHIFT_2)//= |
| 125 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED) // space |
| 126 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F1") PORT_CODE(KEYCODE_F1) |
| 127 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED) // F1 |
| 128 | |
| 129 | PORT_START("KEY.2") /* line 2 */ |
| 130 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(". >") PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>') |
| 131 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("M") PORT_CODE(KEYCODE_M) PORT_CHAR('M') PORT_CHAR('M') PORT_CHAR(0x0d) |
| 132 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("/ ?") PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?') |
| 133 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(", <") PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<') |
| 134 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("B") PORT_CODE(KEYCODE_B) PORT_CHAR('B') PORT_CHAR('B') PORT_CHAR(0x02) |
| 135 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED) //B |
| 136 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("N") PORT_CODE(KEYCODE_N) PORT_CHAR('N') PORT_CHAR('N') PORT_CHAR(0x0e) |
| 137 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED) //N |
| 138 | |
| 139 | PORT_START("KEY.3") /* line 3 */ |
| 140 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("' \"") PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(0x27) PORT_CHAR(0x22) PORT_CHAR(0x27) |
| 141 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("L") PORT_CODE(KEYCODE_L) PORT_CHAR('L') PORT_CHAR('L') PORT_CHAR(0x0c) |
| 142 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("RETURN") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(0x0d) |
| 143 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("; :") PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR(':') |
| 144 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("J") PORT_CODE(KEYCODE_J) PORT_CHAR('J') PORT_CHAR('J') PORT_CHAR(0x0a) |
| 145 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("G") PORT_CODE(KEYCODE_G) PORT_CHAR('G') PORT_CHAR('G') PORT_CHAR(0x07) |
| 146 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("K") PORT_CODE(KEYCODE_K) PORT_CHAR('K') PORT_CHAR('K') PORT_CHAR(0x0b) |
| 147 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("H") PORT_CODE(KEYCODE_H) PORT_CHAR('H') PORT_CHAR('H') PORT_CHAR(0x08) |
| 148 | |
| 149 | PORT_START("KEY.4") /* line 4 */ |
| 150 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("4 $") PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$') |
| 151 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("2 @") PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('@') |
| 152 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("5 %") PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%') |
| 153 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("3 #") PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#') |
| 154 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("DEL") PORT_CODE(KEYCODE_DEL) PORT_CHAR(0x7f) PORT_CHAR(0x7f) PORT_CHAR(0x1f) |
| 155 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("ESC") PORT_CODE(KEYCODE_ESC) PORT_CHAR(0x1b) |
| 156 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("1 !") PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!') |
| 157 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED) //1 |
| 158 | |
| 159 | PORT_START("KEY.5") /* line 5 */ |
| 160 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("[ {") PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('[') PORT_CHAR('{') PORT_CHAR(0x1b) |
| 161 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("O") PORT_CODE(KEYCODE_O) PORT_CHAR('O') PORT_CHAR('O') PORT_CHAR(0x0f) |
| 162 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("] }") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']') PORT_CHAR('}') PORT_CHAR(0x1d) |
| 163 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("P") PORT_CODE(KEYCODE_P) PORT_CHAR('P') PORT_CHAR('P') PORT_CHAR(0x10) |
| 164 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("U") PORT_CODE(KEYCODE_U) PORT_CHAR('U') PORT_CHAR('U') PORT_CHAR(0x15) |
| 165 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("T") PORT_CODE(KEYCODE_T) PORT_CHAR('T') PORT_CHAR('T') PORT_CHAR(0x14) |
| 166 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("I") PORT_CODE(KEYCODE_I) PORT_CHAR('I') PORT_CHAR('I') PORT_CHAR(0x09)//0x12 |
| 167 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Y") PORT_CODE(KEYCODE_Y) PORT_CHAR('Y') PORT_CHAR('Y') PORT_CHAR(0x19)//0x14 |
| 168 | |
| 169 | PORT_START("KEY.6") /* line 6 */ |
| 170 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F") PORT_CODE(KEYCODE_F) PORT_CHAR('F') PORT_CHAR('F') PORT_CHAR(0x06) |
| 171 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("X") PORT_CODE(KEYCODE_X) PORT_CHAR('X') PORT_CHAR('X') PORT_CHAR(0x18) |
| 172 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("V") PORT_CODE(KEYCODE_V) PORT_CHAR('V') PORT_CHAR('V') PORT_CHAR(0x16) |
| 173 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("C") PORT_CODE(KEYCODE_C) PORT_CHAR('C') PORT_CHAR('C') PORT_CHAR(0x03) |
| 174 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("D") PORT_CODE(KEYCODE_D) PORT_CHAR('D') PORT_CHAR('D') PORT_CHAR(0x04) |
| 175 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("S") PORT_CODE(KEYCODE_S) PORT_CHAR('S') PORT_CHAR('S') PORT_CHAR(0x13) |
| 176 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Z") PORT_CODE(KEYCODE_Z) PORT_CHAR('Z') PORT_CHAR('Z') PORT_CHAR(0x1a) |
| 177 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED) //Z |
| 178 | |
| 179 | PORT_START("KEY.7") /* line 7 */ |
| 180 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("= +") PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('=') PORT_CHAR('+') PORT_CHAR('=') |
| 181 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("0 )") PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR(')') |
| 182 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Backspace") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(0x08) |
| 183 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("- _") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('_') |
| 184 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("8 *") PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('*') |
| 185 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("6 ^") PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('^') |
| 186 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("9 (") PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR('(') |
| 187 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("7 &") PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('&') |
| 81 | 188 | INPUT_PORTS_END |
| 82 | 189 | |
| 190 | WRITE8_MEMBER( excali64_state::ppib_w ) |
| 191 | { |
| 192 | m_kbdrow = data; |
| 193 | } |
| 194 | |
| 83 | 195 | READ8_MEMBER( excali64_state::ppic_r ) |
| 84 | 196 | { |
| 85 | 197 | UINT8 data = 0xf7; |
| r242272 | r242273 | |
| 87 | 199 | return data; |
| 88 | 200 | } |
| 89 | 201 | |
| 202 | READ8_MEMBER( excali64_state::port00_r ) |
| 203 | { |
| 204 | UINT8 data = 0xff; |
| 205 | |
| 206 | for (int i = 0; i < 8; i++) |
| 207 | { |
| 208 | if (!BIT(m_kbdrow, i)) |
| 209 | data &= m_io_keyboard[i]->read(); |
| 210 | } |
| 211 | |
| 212 | return data; |
| 213 | } |
| 214 | |
| 90 | 215 | /* |
| 91 | 216 | d0 : /rom ; screen |
| 92 | 217 | d1 : ram on |
| r242272 | r242273 | |
| 140 | 265 | MC6845_UPDATE_ROW( excali64_state::update_row ) |
| 141 | 266 | { |
| 142 | 267 | const rgb_t *palette = m_palette->palette()->entry_list_raw(); |
| 143 | | UINT8 chr,gfx=0; |
| 268 | UINT8 chr,gfx; |
| 144 | 269 | UINT16 mem,x; |
| 145 | 270 | UINT32 *p = &bitmap.pix32(y); |
| 146 | 271 | |
| r242272 | r242273 | |
| 175 | 300 | //MCFG_I8251_RTS_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_rts)) |
| 176 | 301 | |
| 177 | 302 | MCFG_DEVICE_ADD("pit", PIT8253, 0) |
| 178 | | MCFG_PIT8253_CLK0(XTAL_16MHz / 8) /* Timer 0: tone gen for speaker */ |
| 303 | MCFG_PIT8253_CLK0(XTAL_16MHz / 16) /* Timer 0: tone gen for speaker */ |
| 179 | 304 | MCFG_PIT8253_OUT0_HANDLER(DEVWRITELINE("speaker", speaker_sound_device, level_w)) |
| 180 | 305 | MCFG_PIT8253_CLK1(XTAL_16MHz / 8) /* Timer 1: baud rate gen for 8251 */ |
| 181 | 306 | //MCFG_PIT8253_OUT1_HANDLER(WRITELINE(excali64_state, write_uart_clock)) |
| r242272 | r242273 | |
| 183 | 308 | |
| 184 | 309 | MCFG_DEVICE_ADD("ppi", I8255A, 0 ) |
| 185 | 310 | //MCFG_I8255_IN_PORTA_CB(READ8(excali64_state, ppia_r)) |
| 186 | | //MCFG_I8255_OUT_PORTA_CB(WRITE8(excali64_state, ppia_w)) |
| 311 | //MCFG_I8255_OUT_PORTA_CB(WRITE8(excali64_state, ppia_w)) // parallel port |
| 187 | 312 | //MCFG_I8255_IN_PORTB_CB(READ8(excali64_state, ppib_r)) |
| 188 | | //MCFG_I8255_OUT_PORTB_CB(WRITE8(excali64_state, ppib_w)) |
| 313 | MCFG_I8255_OUT_PORTB_CB(WRITE8(excali64_state, ppib_w)) |
| 189 | 314 | MCFG_I8255_IN_PORTC_CB(READ8(excali64_state, ppic_r)) |
| 190 | 315 | MCFG_I8255_OUT_PORTC_CB(WRITE8(excali64_state, ppic_w)) |
| 191 | 316 | |
| r242272 | r242273 | |
| 224 | 349 | ROM_LOAD( "rom_1.bin", 0x0000, 0x4000, CRC(e129a305) SHA1(e43ec7d040c2b2e548d22fd6bbc7df8b45a26e5a) ) |
| 225 | 350 | ROM_LOAD( "rom_2.bin", 0x2000, 0x2000, CRC(916d9f5a) SHA1(91c527cce963481b7bebf077e955ca89578bb553) ) |
| 226 | 351 | |
| 227 | | ROM_REGION(0x1000, "videoram", ROMREGION_ERASE00) |
| 352 | ROM_REGION(0x2000, "videoram", ROMREGION_ERASE00) |
| 228 | 353 | |
| 229 | 354 | ROM_REGION(0x1000, "chargen", 0) |
| 230 | 355 | ROM_LOAD( "genex_3.bin", 0x0000, 0x1000, CRC(b91619a9) SHA1(2ced636cb7b94ba9d329868d7ecf79963cefe9d9) ) |