trunk/src/mess/includes/x1.h
| r20285 | r20286 | |
| 82 | 82 | m_ctc(*this, "ctc") |
| 83 | 83 | { } |
| 84 | 84 | |
| 85 | | DECLARE_READ8_MEMBER(x1_mem_r); |
| 86 | | DECLARE_WRITE8_MEMBER(x1_mem_w); |
| 87 | | DECLARE_READ8_MEMBER(x1_io_r); |
| 88 | | DECLARE_WRITE8_MEMBER(x1_io_w); |
| 89 | | DECLARE_READ8_MEMBER(x1_sub_io_r); |
| 90 | | DECLARE_WRITE8_MEMBER(x1_sub_io_w); |
| 91 | | DECLARE_READ8_MEMBER(x1_rom_r); |
| 92 | | DECLARE_WRITE8_MEMBER(x1_rom_w); |
| 93 | | DECLARE_WRITE8_MEMBER(x1_rom_bank_0_w); |
| 94 | | DECLARE_WRITE8_MEMBER(x1_rom_bank_1_w); |
| 95 | | DECLARE_READ8_MEMBER(x1_fdc_r); |
| 96 | | DECLARE_WRITE8_MEMBER(x1_fdc_w); |
| 97 | | DECLARE_READ8_MEMBER(x1_pcg_r); |
| 98 | | DECLARE_WRITE8_MEMBER(x1_pcg_w); |
| 99 | | DECLARE_WRITE8_MEMBER(x1_pal_r_w); |
| 100 | | DECLARE_WRITE8_MEMBER(x1_pal_g_w); |
| 101 | | DECLARE_WRITE8_MEMBER(x1_pal_b_w); |
| 102 | | DECLARE_WRITE8_MEMBER(x1_ex_gfxram_w); |
| 103 | | DECLARE_WRITE8_MEMBER(x1_scrn_w); |
| 104 | | DECLARE_WRITE8_MEMBER(x1_pri_w); |
| 105 | | DECLARE_WRITE8_MEMBER(x1_6845_w); |
| 106 | | DECLARE_READ8_MEMBER(x1_kanji_r); |
| 107 | | DECLARE_WRITE8_MEMBER(x1_kanji_w); |
| 108 | | DECLARE_READ8_MEMBER(x1_emm_r); |
| 109 | | DECLARE_WRITE8_MEMBER(x1_emm_w); |
| 110 | | DECLARE_READ8_MEMBER(x1turbo_pal_r); |
| 111 | | DECLARE_READ8_MEMBER(x1turbo_txpal_r); |
| 112 | | DECLARE_READ8_MEMBER(x1turbo_txdisp_r); |
| 113 | | DECLARE_READ8_MEMBER(x1turbo_gfxpal_r); |
| 114 | | DECLARE_WRITE8_MEMBER(x1turbo_pal_w); |
| 115 | | DECLARE_WRITE8_MEMBER(x1turbo_txpal_w); |
| 116 | | DECLARE_WRITE8_MEMBER(x1turbo_txdisp_w); |
| 117 | | DECLARE_WRITE8_MEMBER(x1turbo_gfxpal_w); |
| 118 | | DECLARE_WRITE8_MEMBER(x1turbo_blackclip_w); |
| 119 | | DECLARE_READ8_MEMBER(x1turbo_mem_r); |
| 120 | | DECLARE_WRITE8_MEMBER(x1turbo_mem_w); |
| 121 | | DECLARE_READ8_MEMBER(x1turbo_io_r); |
| 122 | | DECLARE_WRITE8_MEMBER(x1turbo_io_w); |
| 123 | | DECLARE_WRITE8_MEMBER(x1turboz_4096_palette_w); |
| 124 | | DECLARE_READ8_MEMBER(x1turboz_blackclip_r); |
| 125 | | DECLARE_READ8_MEMBER(x1turbo_bank_r); |
| 126 | | DECLARE_WRITE8_MEMBER(x1turbo_bank_w); |
| 127 | | DECLARE_READ8_MEMBER(x1_porta_r); |
| 128 | | DECLARE_READ8_MEMBER(x1_portb_r); |
| 129 | | DECLARE_READ8_MEMBER(x1_portc_r); |
| 130 | | DECLARE_WRITE8_MEMBER(x1_porta_w); |
| 131 | | DECLARE_WRITE8_MEMBER(x1_portb_w); |
| 132 | | DECLARE_WRITE8_MEMBER(x1_portc_w); |
| 85 | required_device<cpu_device> m_x1_cpu; |
| 86 | required_device<cassette_image_device> m_cass; |
| 87 | required_device<mb8877_device> m_fdc; |
| 88 | required_device<mc6845_device> m_crtc; |
| 89 | required_device<z80ctc_device> m_ctc; |
| 133 | 90 | |
| 134 | 91 | UINT8 *m_tvram; |
| 135 | 92 | UINT8 *m_avram; |
| 136 | 93 | UINT8 *m_kvram; |
| 94 | UINT8 *m_ipl_rom; |
| 95 | UINT8 *m_work_ram; |
| 96 | UINT8 *m_emm_ram; |
| 97 | UINT8 *m_pcg_ram; |
| 98 | UINT8 *m_cg_rom; |
| 99 | UINT8 *m_kanji_rom; |
| 137 | 100 | int m_xstart,m_ystart; |
| 138 | 101 | UINT8 m_hres_320; |
| 139 | 102 | UINT8 m_io_switch; |
| r20285 | r20286 | |
| 189 | 152 | UINT8 check_keyboard_shift(); |
| 190 | 153 | UINT16 check_keyboard_press(); |
| 191 | 154 | |
| 192 | | required_device<cpu_device> m_x1_cpu; |
| 193 | | required_device<cassette_image_device> m_cass; |
| 194 | | required_device<mb8877_device> m_fdc; |
| 195 | | required_device<mc6845_device> m_crtc; |
| 196 | | required_device<z80ctc_device> m_ctc; |
| 155 | DECLARE_READ8_MEMBER(x1_mem_r); |
| 156 | DECLARE_WRITE8_MEMBER(x1_mem_w); |
| 157 | DECLARE_READ8_MEMBER(x1_io_r); |
| 158 | DECLARE_WRITE8_MEMBER(x1_io_w); |
| 159 | DECLARE_READ8_MEMBER(x1_sub_io_r); |
| 160 | DECLARE_WRITE8_MEMBER(x1_sub_io_w); |
| 161 | DECLARE_READ8_MEMBER(x1_rom_r); |
| 162 | DECLARE_WRITE8_MEMBER(x1_rom_w); |
| 163 | DECLARE_WRITE8_MEMBER(x1_rom_bank_0_w); |
| 164 | DECLARE_WRITE8_MEMBER(x1_rom_bank_1_w); |
| 165 | DECLARE_READ8_MEMBER(x1_fdc_r); |
| 166 | DECLARE_WRITE8_MEMBER(x1_fdc_w); |
| 167 | DECLARE_READ8_MEMBER(x1_pcg_r); |
| 168 | DECLARE_WRITE8_MEMBER(x1_pcg_w); |
| 169 | DECLARE_WRITE8_MEMBER(x1_pal_r_w); |
| 170 | DECLARE_WRITE8_MEMBER(x1_pal_g_w); |
| 171 | DECLARE_WRITE8_MEMBER(x1_pal_b_w); |
| 172 | DECLARE_WRITE8_MEMBER(x1_ex_gfxram_w); |
| 173 | DECLARE_WRITE8_MEMBER(x1_scrn_w); |
| 174 | DECLARE_WRITE8_MEMBER(x1_pri_w); |
| 175 | DECLARE_WRITE8_MEMBER(x1_6845_w); |
| 176 | DECLARE_READ8_MEMBER(x1_kanji_r); |
| 177 | DECLARE_WRITE8_MEMBER(x1_kanji_w); |
| 178 | DECLARE_READ8_MEMBER(x1_emm_r); |
| 179 | DECLARE_WRITE8_MEMBER(x1_emm_w); |
| 180 | DECLARE_READ8_MEMBER(x1turbo_pal_r); |
| 181 | DECLARE_READ8_MEMBER(x1turbo_txpal_r); |
| 182 | DECLARE_READ8_MEMBER(x1turbo_txdisp_r); |
| 183 | DECLARE_READ8_MEMBER(x1turbo_gfxpal_r); |
| 184 | DECLARE_WRITE8_MEMBER(x1turbo_pal_w); |
| 185 | DECLARE_WRITE8_MEMBER(x1turbo_txpal_w); |
| 186 | DECLARE_WRITE8_MEMBER(x1turbo_txdisp_w); |
| 187 | DECLARE_WRITE8_MEMBER(x1turbo_gfxpal_w); |
| 188 | DECLARE_WRITE8_MEMBER(x1turbo_blackclip_w); |
| 189 | DECLARE_READ8_MEMBER(x1turbo_mem_r); |
| 190 | DECLARE_WRITE8_MEMBER(x1turbo_mem_w); |
| 191 | DECLARE_READ8_MEMBER(x1turbo_io_r); |
| 192 | DECLARE_WRITE8_MEMBER(x1turbo_io_w); |
| 193 | DECLARE_WRITE8_MEMBER(x1turboz_4096_palette_w); |
| 194 | DECLARE_READ8_MEMBER(x1turboz_blackclip_r); |
| 195 | DECLARE_READ8_MEMBER(x1turbo_bank_r); |
| 196 | DECLARE_WRITE8_MEMBER(x1turbo_bank_w); |
| 197 | DECLARE_READ8_MEMBER(x1_porta_r); |
| 198 | DECLARE_READ8_MEMBER(x1_portb_r); |
| 199 | DECLARE_READ8_MEMBER(x1_portc_r); |
| 200 | DECLARE_WRITE8_MEMBER(x1_porta_w); |
| 201 | DECLARE_WRITE8_MEMBER(x1_portb_w); |
| 202 | DECLARE_WRITE8_MEMBER(x1_portc_w); |
| 197 | 203 | DECLARE_DRIVER_INIT(x1_kanji); |
| 198 | 204 | DECLARE_MACHINE_START(x1); |
| 199 | 205 | DECLARE_MACHINE_RESET(x1); |
trunk/src/mess/drivers/x1.c
| r20285 | r20286 | |
| 338 | 338 | int width = BIT(m_avram[((x+y*x_size)+mc6845_start_addr) & 0x7ff], 7); |
| 339 | 339 | int height = BIT(m_avram[((x+y*x_size)+mc6845_start_addr) & 0x7ff], 6); |
| 340 | 340 | int pcg_bank = BIT(m_avram[((x+y*x_size)+mc6845_start_addr) & 0x7ff], 5); |
| 341 | | UINT8 *gfx_data = machine.root_device().memregion(pcg_bank ? "pcg" : "cgrom")->base(); |
| 341 | UINT8 *gfx_data = pcg_bank ? m_pcg_ram : m_cg_rom; //machine.root_device().memregion(pcg_bank ? "pcg" : "cgrom")->base(); |
| 342 | 342 | int knj_enable = 0; |
| 343 | 343 | int knj_side = 0; |
| 344 | 344 | int knj_bank = 0; |
| r20285 | r20286 | |
| 352 | 352 | knj_bank = m_kvram[((x+y*x_size)+mc6845_start_addr) & 0x7ff] & 0x0f; |
| 353 | 353 | if(knj_enable) |
| 354 | 354 | { |
| 355 | | gfx_data = memregion("kanji")->base(); |
| 355 | gfx_data = m_kanji_rom; |
| 356 | 356 | tile = ((tile + (knj_bank << 8)) << 1) + (knj_side & 1); |
| 357 | 357 | } |
| 358 | 358 | } |
| r20285 | r20286 | |
| 1119 | 1119 | |
| 1120 | 1120 | if(addr == 0 && m_scrn_reg.pcg_mode) // Kanji ROM read, X1Turbo only |
| 1121 | 1121 | { |
| 1122 | | gfx_data = memregion("kanji")->base(); |
| 1122 | gfx_data = m_kanji_rom; |
| 1123 | 1123 | pcg_offset = (m_tvram[check_chr_addr()]+(m_kvram[check_chr_addr()]<<8)) & 0xfff; |
| 1124 | 1124 | pcg_offset*=0x20; |
| 1125 | 1125 | pcg_offset+=(offset & 0x0f); |
| r20285 | r20286 | |
| 1132 | 1132 | UINT8 y_char_size; |
| 1133 | 1133 | |
| 1134 | 1134 | /* addr == 0 reads from the ANK rom */ |
| 1135 | | gfx_data = memregion((addr == 0) ? "cgrom" : "pcg")->base(); |
| 1135 | gfx_data = addr == 0 ? m_cg_rom : m_pcg_ram; |
| 1136 | 1136 | y_char_size = ((m_crtc_vreg[9]+1) > 8) ? 8 : m_crtc_vreg[9]+1; |
| 1137 | 1137 | if(y_char_size == 0) { y_char_size = 1; } |
| 1138 | 1138 | pcg_offset = m_tvram[get_pcg_addr(m_crtc_vreg[1], y_char_size)]*8; |
| r20285 | r20286 | |
| 1147 | 1147 | WRITE8_MEMBER( x1_state::x1_pcg_w ) |
| 1148 | 1148 | { |
| 1149 | 1149 | int addr,pcg_offset; |
| 1150 | | UINT8 *PCG_RAM = memregion("pcg")->base(); |
| 1151 | 1150 | |
| 1152 | 1151 | addr = (offset & 0x300) >> 8; |
| 1153 | 1152 | |
| r20285 | r20286 | |
| 1163 | 1162 | pcg_offset = m_tvram[check_pcg_addr()]*8; |
| 1164 | 1163 | pcg_offset+= (offset & 0xe) >> 1; |
| 1165 | 1164 | pcg_offset+=((addr-1)*0x800); |
| 1166 | | PCG_RAM[pcg_offset] = data; |
| 1165 | m_pcg_ram[pcg_offset] = data; |
| 1167 | 1166 | |
| 1168 | 1167 | pcg_offset &= 0x7ff; |
| 1169 | 1168 | |
| 1170 | | machine().gfx[1]->mark_dirty(pcg_offset >> 3); |
| 1169 | machine().gfx[3]->mark_dirty(pcg_offset >> 3); |
| 1171 | 1170 | } |
| 1172 | 1171 | else // Compatible Mode |
| 1173 | 1172 | { |
| r20285 | r20286 | |
| 1180 | 1179 | pcg_offset+= machine().primary_screen->vpos() & (y_char_size-1); |
| 1181 | 1180 | pcg_offset+= ((addr-1)*0x800); |
| 1182 | 1181 | |
| 1183 | | PCG_RAM[pcg_offset] = data; |
| 1182 | m_pcg_ram[pcg_offset] = data; |
| 1184 | 1183 | |
| 1185 | 1184 | pcg_offset &= 0x7ff; |
| 1186 | 1185 | |
| 1187 | | machine().gfx[1]->mark_dirty(pcg_offset >> 3); |
| 1186 | machine().gfx[3]->mark_dirty(pcg_offset >> 3); |
| 1188 | 1187 | } |
| 1189 | 1188 | } |
| 1190 | 1189 | } |
| r20285 | r20286 | |
| 1442 | 1441 | |
| 1443 | 1442 | READ8_MEMBER( x1_state::x1_kanji_r ) |
| 1444 | 1443 | { |
| 1445 | | UINT8 *kanji_rom = memregion("kanji")->base(); |
| 1446 | 1444 | UINT8 res; |
| 1447 | 1445 | |
| 1448 | | res = kanji_rom[jis_convert(m_kanji_addr & 0xfff0)+(offset*0x10)+(m_kanji_addr & 0xf)]; |
| 1446 | res = m_kanji_rom[jis_convert(m_kanji_addr & 0xfff0)+(offset*0x10)+(m_kanji_addr & 0xf)]; |
| 1449 | 1447 | |
| 1450 | 1448 | if(offset == 1) |
| 1451 | 1449 | m_kanji_addr_latch++; |
| r20285 | r20286 | |
| 1485 | 1483 | |
| 1486 | 1484 | READ8_MEMBER( x1_state::x1_emm_r ) |
| 1487 | 1485 | { |
| 1488 | | UINT8 *emm_ram = memregion("emm")->base(); |
| 1489 | 1486 | UINT8 res; |
| 1490 | 1487 | |
| 1491 | 1488 | if(offset & ~3) |
| r20285 | r20286 | |
| 1501 | 1498 | |
| 1502 | 1499 | if(offset == 3) |
| 1503 | 1500 | { |
| 1504 | | res = emm_ram[m_emm_addr]; |
| 1501 | res = m_emm_ram[m_emm_addr]; |
| 1505 | 1502 | m_emm_addr++; |
| 1506 | 1503 | } |
| 1507 | 1504 | |
| r20285 | r20286 | |
| 1510 | 1507 | |
| 1511 | 1508 | WRITE8_MEMBER( x1_state::x1_emm_w ) |
| 1512 | 1509 | { |
| 1513 | | UINT8 *emm_ram = memregion("emm")->base(); |
| 1514 | | |
| 1515 | 1510 | if(offset & ~3) |
| 1516 | 1511 | { |
| 1517 | 1512 | printf("Warning: write EMM BASIC area [%02x] %02x\n",offset & 0xff,data); |
| r20285 | r20286 | |
| 1524 | 1519 | case 1: m_emm_addr = (m_emm_addr & 0xff00ff) | (data << 8); break; |
| 1525 | 1520 | case 2: m_emm_addr = (m_emm_addr & 0x00ffff) | (data << 16); break; //TODO: this has a max size limit, check exactly how much |
| 1526 | 1521 | case 3: |
| 1527 | | emm_ram[m_emm_addr] = data; |
| 1522 | m_emm_ram[m_emm_addr] = data; |
| 1528 | 1523 | m_emm_addr++; |
| 1529 | 1524 | break; |
| 1530 | 1525 | } |
| r20285 | r20286 | |
| 1555 | 1550 | /* TODO: waitstate penalties */ |
| 1556 | 1551 | READ8_MEMBER( x1_state::x1_mem_r ) |
| 1557 | 1552 | { |
| 1558 | | UINT8 *wram = memregion("wram")->base(); |
| 1559 | | |
| 1560 | 1553 | if((offset & 0x8000) == 0 && (m_ram_bank == 0)) |
| 1561 | 1554 | { |
| 1562 | | UINT8 *ipl = memregion("ipl")->base(); |
| 1563 | | return ipl[offset]; //ROM |
| 1555 | return m_ipl_rom[offset]; //ROM |
| 1564 | 1556 | } |
| 1565 | 1557 | |
| 1566 | | return wram[offset]; //RAM |
| 1558 | return m_work_ram[offset]; //RAM |
| 1567 | 1559 | } |
| 1568 | 1560 | |
| 1569 | 1561 | WRITE8_MEMBER( x1_state::x1_mem_w ) |
| 1570 | 1562 | { |
| 1571 | | UINT8 *wram = memregion("wram")->base(); |
| 1572 | | |
| 1573 | | wram[offset] = data; //RAM |
| 1563 | m_work_ram[offset] = data; //RAM |
| 1574 | 1564 | } |
| 1575 | 1565 | |
| 1576 | 1566 | READ8_MEMBER( x1_state::x1turbo_mem_r ) |
| 1577 | 1567 | { |
| 1578 | 1568 | if((m_ex_bank & 0x10) == 0) |
| 1579 | | { |
| 1580 | | UINT8 *wram = memregion("wram")->base(); |
| 1569 | return m_work_ram[offset+((m_ex_bank & 0xf)*0x10000)]; |
| 1581 | 1570 | |
| 1582 | | return wram[offset+((m_ex_bank & 0xf)*0x10000)]; |
| 1583 | | } |
| 1584 | | |
| 1585 | 1571 | return x1_mem_r(space,offset); |
| 1586 | 1572 | } |
| 1587 | 1573 | |
| 1588 | 1574 | WRITE8_MEMBER( x1_state::x1turbo_mem_w ) |
| 1589 | 1575 | { |
| 1590 | 1576 | if((m_ex_bank & 0x10) == 0) |
| 1591 | | { |
| 1592 | | UINT8 *wram = memregion("wram")->base(); |
| 1593 | | |
| 1594 | | wram[offset+((m_ex_bank & 0xf)*0x10000)] = data; //RAM |
| 1595 | | } |
| 1577 | m_work_ram[offset+((m_ex_bank & 0xf)*0x10000)] = data; //RAM |
| 1596 | 1578 | else |
| 1597 | 1579 | x1_mem_w(space,offset,data); |
| 1598 | 1580 | } |
| r20285 | r20286 | |
| 2241 | 2223 | 8*16 |
| 2242 | 2224 | }; |
| 2243 | 2225 | |
| 2244 | | static const gfx_layout x1_pcg_8x8 = |
| 2245 | | { |
| 2246 | | 8,8, |
| 2247 | | RGN_FRAC(1,3), |
| 2248 | | 3, |
| 2249 | | { RGN_FRAC(2,3),RGN_FRAC(1,3),RGN_FRAC(0,3) }, |
| 2250 | | { 0, 1, 2, 3, 4, 5, 6, 7 }, |
| 2251 | | { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, |
| 2252 | | 8*8 |
| 2253 | | }; |
| 2254 | | |
| 2255 | 2226 | static const gfx_layout x1_chars_16x16 = |
| 2256 | 2227 | { |
| 2257 | 2228 | 8,16, |
| r20285 | r20286 | |
| 2266 | 2237 | /* decoded for debugging purpose, this will be nuked in the end... */ |
| 2267 | 2238 | static GFXDECODE_START( x1 ) |
| 2268 | 2239 | GFXDECODE_ENTRY( "cgrom", 0x00000, x1_chars_8x8, 0, 1 ) |
| 2269 | | GFXDECODE_ENTRY( "pcg", 0x00000, x1_pcg_8x8, 0, 1 ) |
| 2270 | 2240 | GFXDECODE_ENTRY( "font", 0x00000, x1_chars_8x16, 0, 1 ) |
| 2271 | 2241 | GFXDECODE_ENTRY( "kanji", 0x00000, x1_chars_16x16, 0, 1 ) |
| 2242 | // GFXDECODE_ENTRY( "pcg", 0x00000, x1_pcg_8x8, 0, 1 ) |
| 2272 | 2243 | GFXDECODE_END |
| 2273 | 2244 | |
| 2274 | 2245 | /************************************* |
| r20285 | r20286 | |
| 2457 | 2428 | MACHINE_RESET_MEMBER(x1_state,x1) |
| 2458 | 2429 | { |
| 2459 | 2430 | //UINT8 *ROM = machine().root_device().memregion("x1_cpu")->base(); |
| 2460 | | UINT8 *PCG_RAM = memregion("pcg")->base(); |
| 2461 | 2431 | int i; |
| 2462 | 2432 | |
| 2463 | 2433 | memset(m_gfx_bitmap_ram,0x00,0xc000*2); |
| 2464 | 2434 | |
| 2465 | 2435 | for(i=0;i<0x1800;i++) |
| 2466 | 2436 | { |
| 2467 | | PCG_RAM[i] = 0; |
| 2468 | | machine().gfx[1]->mark_dirty(i >> 3); |
| 2437 | m_pcg_ram[i] = 0; |
| 2438 | machine().gfx[3]->mark_dirty(i >> 3); |
| 2469 | 2439 | } |
| 2470 | 2440 | |
| 2471 | 2441 | m_is_turbo = 0; |
| r20285 | r20286 | |
| 2508 | 2478 | m_scrn_reg.blackclip = 0; |
| 2509 | 2479 | } |
| 2510 | 2480 | |
| 2481 | static const gfx_layout x1_pcg_8x8 = |
| 2482 | { |
| 2483 | 8,8, |
| 2484 | 0x100, |
| 2485 | 3, |
| 2486 | { 0x1000*8,0x800*8, 0 }, |
| 2487 | { 0, 1, 2, 3, 4, 5, 6, 7 }, |
| 2488 | { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, |
| 2489 | 8*8 |
| 2490 | }; |
| 2491 | |
| 2511 | 2492 | MACHINE_START_MEMBER(x1_state,x1) |
| 2512 | 2493 | { |
| 2513 | 2494 | /* set up RTC */ |
| r20285 | r20286 | |
| 2525 | 2506 | |
| 2526 | 2507 | m_rtc_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(x1_state::x1_rtc_increment),this)); |
| 2527 | 2508 | } |
| 2509 | |
| 2510 | m_ipl_rom = memregion("ipl")->base(); |
| 2511 | m_work_ram = auto_alloc_array_clear(machine(), UINT8, 0x10000*0x10); |
| 2512 | m_emm_ram = auto_alloc_array_clear(machine(), UINT8, 0x1000000); |
| 2513 | m_pcg_ram = auto_alloc_array_clear(machine(), UINT8, 0x1800); |
| 2514 | m_cg_rom = memregion("cgrom")->base(); |
| 2515 | m_kanji_rom = memregion("kanji")->base(); |
| 2516 | |
| 2517 | state_save_register_global_pointer(machine(), m_work_ram, 0x10000*0x10); |
| 2518 | state_save_register_global_pointer(machine(), m_emm_ram, 0x1000000); |
| 2519 | state_save_register_global_pointer(machine(), m_pcg_ram, 0x1800); |
| 2520 | |
| 2521 | machine().gfx[3] = auto_alloc(machine(), gfx_element(machine(), x1_pcg_8x8, (UINT8 *)m_pcg_ram, 1, 0)); |
| 2528 | 2522 | } |
| 2529 | 2523 | |
| 2530 | 2524 | PALETTE_INIT_MEMBER(x1_state,x1) |
| r20285 | r20286 | |
| 2644 | 2638 | *************************************/ |
| 2645 | 2639 | |
| 2646 | 2640 | ROM_START( x1 ) |
| 2647 | | ROM_REGION( 0x10000, "x1_cpu", ROMREGION_ERASEFF ) |
| 2648 | | |
| 2649 | 2641 | ROM_REGION( 0x8000, "ipl", ROMREGION_ERASEFF ) |
| 2650 | 2642 | ROM_LOAD( "ipl.x1", 0x0000, 0x1000, CRC(7b28d9de) SHA1(c4db9a6e99873808c8022afd1c50fef556a8b44d) ) |
| 2651 | 2643 | |
| 2652 | | ROM_REGION( 0x10000, "wram", ROMREGION_ERASE00 ) |
| 2653 | | |
| 2654 | 2644 | ROM_REGION(0x1000, "mcu", ROMREGION_ERASEFF) //MCU for the Keyboard, "sub cpu" |
| 2655 | 2645 | ROM_LOAD( "80c48", 0x0000, 0x1000, NO_DUMP ) |
| 2656 | 2646 | |
| 2657 | | ROM_REGION( 0x1000000, "emm", ROMREGION_ERASEFF ) |
| 2658 | | |
| 2659 | | ROM_REGION(0x1800, "pcg", ROMREGION_ERASEFF) |
| 2660 | | |
| 2661 | 2647 | ROM_REGION(0x2000, "font", 0) //TODO: this contains 8x16 charset only, maybe it's possible that it derivates a 8x8 charset by skipping gfx lines? |
| 2662 | 2648 | ROM_LOAD( "ank.fnt", 0x0000, 0x2000, BAD_DUMP CRC(19689fbd) SHA1(0d4e072cd6195a24a1a9b68f1d37500caa60e599) ) |
| 2663 | 2649 | |
| r20285 | r20286 | |
| 2674 | 2660 | ROM_END |
| 2675 | 2661 | |
| 2676 | 2662 | ROM_START( x1turbo ) |
| 2677 | | ROM_REGION( 0x10000, "x1_cpu", ROMREGION_ERASEFF ) |
| 2678 | | |
| 2679 | 2663 | ROM_REGION( 0x8000, "ipl", ROMREGION_ERASEFF ) |
| 2680 | 2664 | ROM_LOAD( "ipl.x1t", 0x0000, 0x8000, CRC(2e8b767c) SHA1(44620f57a25f0bcac2b57ca2b0f1ebad3bf305d3) ) |
| 2681 | 2665 | |
| 2682 | | ROM_REGION( 0x10000*0x10, "wram", ROMREGION_ERASE00 ) |
| 2683 | | |
| 2684 | 2666 | ROM_REGION(0x1000, "mcu", ROMREGION_ERASEFF) //MCU for the Keyboard, "sub cpu" |
| 2685 | 2667 | ROM_LOAD( "80c48", 0x0000, 0x1000, NO_DUMP ) |
| 2686 | 2668 | |
| 2687 | | ROM_REGION( 0x1000000, "emm", ROMREGION_ERASEFF ) |
| 2688 | | |
| 2689 | | ROM_REGION( 0x10000*2, "bank_ram", ROMREGION_ERASEFF ) |
| 2690 | | |
| 2691 | | ROM_REGION(0x1800, "pcg", ROMREGION_ERASEFF) |
| 2692 | | |
| 2693 | 2669 | ROM_REGION(0x2000, "font", 0) //TODO: this contains 8x16 charset only, maybe it's possible that it derivates a 8x8 charset by skipping gfx lines? |
| 2694 | 2670 | ROM_LOAD( "ank.fnt", 0x0000, 0x2000, CRC(19689fbd) SHA1(0d4e072cd6195a24a1a9b68f1d37500caa60e599) ) |
| 2695 | 2671 | |
| r20285 | r20286 | |
| 2710 | 2686 | ROM_END |
| 2711 | 2687 | |
| 2712 | 2688 | ROM_START( x1turbo40 ) |
| 2713 | | ROM_REGION( 0x10000, "x1_cpu", ROMREGION_ERASEFF ) |
| 2714 | | |
| 2715 | 2689 | ROM_REGION( 0x8000, "ipl", ROMREGION_ERASEFF ) |
| 2716 | 2690 | ROM_LOAD( "ipl.bin", 0x0000, 0x8000, CRC(112f80a2) SHA1(646cc3fb5d2d24ff4caa5167b0892a4196e9f843) ) |
| 2717 | 2691 | |
| 2718 | | ROM_REGION( 0x10000*0x10, "wram", ROMREGION_ERASE00 ) |
| 2719 | | |
| 2720 | 2692 | ROM_REGION(0x1000, "mcu", ROMREGION_ERASEFF) //MCU for the Keyboard, "sub cpu" |
| 2721 | 2693 | ROM_LOAD( "80c48", 0x0000, 0x1000, NO_DUMP ) |
| 2722 | 2694 | |
| 2723 | | ROM_REGION(0x1800, "pcg", ROMREGION_ERASEFF) |
| 2724 | | |
| 2725 | | ROM_REGION( 0x1000000, "emm", ROMREGION_ERASEFF ) |
| 2726 | | |
| 2727 | 2695 | ROM_REGION(0x2000, "font", 0) //TODO: this contains 8x16 charset only, maybe it's possible that it derivates a 8x8 charset by skipping gfx lines? |
| 2728 | 2696 | ROM_LOAD( "ank.fnt", 0x0000, 0x2000, CRC(19689fbd) SHA1(0d4e072cd6195a24a1a9b68f1d37500caa60e599) ) |
| 2729 | 2697 | |