trunk/src/mess/drivers/ptcsol.c
| r20237 | r20238 | |
| 17 | 17 | Note that the CONSOL rom is basically a dumb terminal program and doesn't |
| 18 | 18 | do anything useful unless the MODE key (whatever that is) is pressed. |
| 19 | 19 | |
| 20 | | CUTER is a relocatable cassette-based alternative to SOLOS. |
| 20 | CUTER is a relocatable cassette-based alternative to SOLOS. According |
| 21 | to the manual, it should work if the sense switches are set to on. But, |
| 22 | it continuously reads port 00 and does nothing. |
| 21 | 23 | |
| 22 | | Need a dump of BOOTLOAD. Need a tape of CUTER. Need orginal dumps of |
| 23 | | SOLOS, DPMON and CONSOL. |
| 24 | Need original dumps of all roms. |
| 24 | 25 | |
| 25 | 26 | The character roms are built by a script from the Solace source, then the |
| 26 | 27 | characters moved back to the original 7x9 matrix positions, as shown in |
| r20237 | r20238 | |
| 129 | 130 | m_cass2(*this, CASSETTE2_TAG), |
| 130 | 131 | m_uart(*this, "uart"), |
| 131 | 132 | m_uart_s(*this, "uart_s"), |
| 132 | | m_p_videoram(*this, "p_videoram"), |
| 133 | m_p_videoram(*this, "videoram"), |
| 133 | 134 | m_iop_arrows(*this, "ARROWS"), |
| 134 | 135 | m_iop_config(*this, "CONFIG"), |
| 135 | 136 | m_iop_s1(*this, "S1"), |
| r20237 | r20238 | |
| 407 | 408 | AM_RANGE(0X0800, 0Xbfff) AM_RAM // optional s100 ram |
| 408 | 409 | AM_RANGE(0xc000, 0xc7ff) AM_ROM |
| 409 | 410 | AM_RANGE(0Xc800, 0Xcbff) AM_RAM // system ram |
| 410 | | AM_RANGE(0Xcc00, 0Xcfff) AM_RAM AM_SHARE("p_videoram") |
| 411 | AM_RANGE(0Xcc00, 0Xcfff) AM_RAM AM_SHARE("videoram") |
| 411 | 412 | AM_RANGE(0Xd000, 0Xffff) AM_RAM // optional s100 ram |
| 412 | 413 | ADDRESS_MAP_END |
| 413 | 414 | |
| r20237 | r20238 | |
| 622 | 623 | UINT16 sy=0,ma,x,inv; |
| 623 | 624 | UINT8 polarity = (s1 & 8) ? 0xff : 0; |
| 624 | 625 | |
| 625 | | UINT8 cursor_inv = FALSE; |
| 626 | bool cursor_inv = false; |
| 626 | 627 | if (((s1 & 0x30) == 0x20) || (((s1 & 0x30) == 0x10) && (m_framecnt & 0x08))) |
| 627 | | cursor_inv = TRUE; |
| 628 | cursor_inv = true; |
| 628 | 629 | |
| 629 | 630 | m_framecnt++; |
| 630 | 631 | |
| r20237 | r20238 | |
| 642 | 643 | chr = m_p_videoram[x & 0x3ff]; |
| 643 | 644 | |
| 644 | 645 | // cursor |
| 645 | | if (BIT(chr, 7) && cursor_inv) |
| 646 | if (BIT(chr, 7) & cursor_inv) |
| 646 | 647 | inv ^= 0xff; |
| 647 | 648 | |
| 648 | 649 | chr &= 0x7f; |
| r20237 | r20238 | |
| 674 | 675 | *p++ = BIT(gfx, 2); |
| 675 | 676 | *p++ = BIT(gfx, 1); |
| 676 | 677 | *p++ = BIT(gfx, 0); |
| 677 | | *p++ = (inv) ? 1 : 0; |
| 678 | *p++ = BIT(inv, 0); |
| 678 | 679 | } |
| 679 | 680 | } |
| 680 | 681 | ma+=64; |
| r20237 | r20238 | |
| 757 | 758 | ROMX_LOAD( "consol.bin", 0xc000, 0x0400, BAD_DUMP CRC(80bf6d85) SHA1(84b81c60bb08a3a5435ec1be56a67aa695bce099), ROM_BIOS(3) ) |
| 758 | 759 | ROM_SYSTEM_BIOS(3, "Solos2", "Solos Patched") |
| 759 | 760 | ROMX_LOAD( "solos2.bin", 0xc000, 0x0800, CRC(7776cc7d) SHA1(c4739a9ea7e8146ce7ae3305ed526b6045efa9d6), ROM_BIOS(4) ) // from Nama |
| 761 | ROM_SYSTEM_BIOS(4, "BOOTLOAD", "BOOTLOAD") |
| 762 | ROMX_LOAD( "bootload.bin", 0xc000, 0x0800, BAD_DUMP CRC(4261ac71) SHA1(4752408ac85d88857e8e9171c7f42bd623c9271e), ROM_BIOS(5) ) // from Nama |
| 763 | // This one doesn't work |
| 764 | ROM_SYSTEM_BIOS(5, "CUTER", "CUTER") |
| 765 | ROMX_LOAD( "cuter.bin", 0xc000, 0x0800, BAD_DUMP CRC(39cca901) SHA1(33725d6da63e295552ee13f0a735d33aee8f0d17), ROM_BIOS(6) ) // from Nama |
| 760 | 766 | |
| 761 | 767 | ROM_REGION( 0x1000, "chargen", 0 ) |
| 762 | 768 | ROM_LOAD( "6574.bin", 0x0000, 0x0800, BAD_DUMP CRC(fd75df4f) SHA1(4d09aae2f933478532b7d3d1a2dee7123d9828ca) ) |
| r20237 | r20238 | |
| 764 | 770 | ROM_END |
| 765 | 771 | |
| 766 | 772 | /* Driver */ |
| 767 | | /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ |
| 773 | /* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ |
| 768 | 774 | COMP( 1976, sol20, 0, 0, sol20, sol20, sol20_state, sol20, "Processor Technology Corporation", "SOL-20", 0 ) |