src/mess/drivers/isbc.c
| r0 | r6597 | |
| 1 | /*************************************************************************** |
| 2 | |
| 3 | Intel iSBC series |
| 4 | |
| 5 | 09/12/2009 Skeleton driver. |
| 6 | |
| 7 | ****************************************************************************/ |
| 8 | |
| 9 | #include "driver.h" |
| 10 | #include "cpu/i86/i86.h" |
| 11 | #include "cpu/i86/i286.h" |
| 12 | #include "machine/terminal.h" |
| 13 | |
| 14 | static UINT8 received_char = 0; |
| 15 | |
| 16 | static WRITE16_HANDLER(isbc_terminal_w) |
| 17 | { |
| 18 | const device_config *devconf = devtag_get_device(space->machine, "terminal"); |
| 19 | terminal_write(devconf,0,data); |
| 20 | } |
| 21 | |
| 22 | static READ16_HANDLER(isbc_terminal_status_r) |
| 23 | { |
| 24 | if (received_char!=0) return 3; // char received |
| 25 | return 1; // ready |
| 26 | } |
| 27 | |
| 28 | static READ16_HANDLER(isbc_terminal_r) |
| 29 | { |
| 30 | UINT8 retVal = received_char; |
| 31 | received_char = 0; |
| 32 | return retVal; |
| 33 | } |
| 34 | |
| 35 | static ADDRESS_MAP_START(rpc86_mem, ADDRESS_SPACE_PROGRAM, 16) |
| 36 | ADDRESS_MAP_UNMAP_HIGH |
| 37 | AM_RANGE(0x00000, 0x0ffff) AM_RAM |
| 38 | AM_RANGE(0xfc000, 0xfffff) AM_ROM AM_REGION("user1",0) |
| 39 | ADDRESS_MAP_END |
| 40 | |
| 41 | static ADDRESS_MAP_START( rpc86_io , ADDRESS_SPACE_IO, 16) |
| 42 | ADDRESS_MAP_UNMAP_HIGH |
| 43 | ADDRESS_MAP_END |
| 44 | |
| 45 | static ADDRESS_MAP_START(isbc86_mem, ADDRESS_SPACE_PROGRAM, 16) |
| 46 | ADDRESS_MAP_UNMAP_HIGH |
| 47 | AM_RANGE(0x00000, 0xfbfff) AM_RAM |
| 48 | AM_RANGE(0xfc000, 0xfffff) AM_ROM AM_REGION("user1",0) |
| 49 | ADDRESS_MAP_END |
| 50 | |
| 51 | static ADDRESS_MAP_START( isbc86_io , ADDRESS_SPACE_IO, 16) |
| 52 | ADDRESS_MAP_UNMAP_HIGH |
| 53 | AM_RANGE(0x00da, 0x00db) AM_READ(isbc_terminal_status_r) |
| 54 | AM_RANGE(0x00d8, 0x00d9) AM_READWRITE(isbc_terminal_r, isbc_terminal_w) |
| 55 | ADDRESS_MAP_END |
| 56 | |
| 57 | static ADDRESS_MAP_START(isbc286_mem, ADDRESS_SPACE_PROGRAM, 16) |
| 58 | ADDRESS_MAP_UNMAP_HIGH |
| 59 | AM_RANGE(0x00000, 0xdffff) AM_RAM |
| 60 | AM_RANGE(0xe0000, 0xfffff) AM_ROM AM_REGION("user1",0) |
| 61 | ADDRESS_MAP_END |
| 62 | |
| 63 | static ADDRESS_MAP_START( isbc286_io , ADDRESS_SPACE_IO, 16) |
| 64 | ADDRESS_MAP_UNMAP_HIGH |
| 65 | ADDRESS_MAP_END |
| 66 | |
| 67 | static ADDRESS_MAP_START(isbc2861_mem, ADDRESS_SPACE_PROGRAM, 16) |
| 68 | ADDRESS_MAP_UNMAP_HIGH |
| 69 | AM_RANGE(0x00000, 0xeffff) AM_RAM |
| 70 | AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("user1",0) |
| 71 | ADDRESS_MAP_END |
| 72 | |
| 73 | static ADDRESS_MAP_START( isbc2861_io , ADDRESS_SPACE_IO, 16) |
| 74 | ADDRESS_MAP_UNMAP_HIGH |
| 75 | ADDRESS_MAP_END |
| 76 | |
| 77 | /* Input ports */ |
| 78 | INPUT_PORTS_START( isbc ) |
| 79 | PORT_INCLUDE(generic_terminal) |
| 80 | INPUT_PORTS_END |
| 81 | |
| 82 | |
| 83 | static MACHINE_RESET(isbc) |
| 84 | { |
| 85 | received_char = 0; |
| 86 | } |
| 87 | |
| 88 | static WRITE8_DEVICE_HANDLER( isbc_kbd_put ) |
| 89 | { |
| 90 | received_char = data; |
| 91 | } |
| 92 | |
| 93 | static GENERIC_TERMINAL_INTERFACE( isbc_terminal_intf ) |
| 94 | { |
| 95 | DEVCB_HANDLER(isbc_kbd_put) |
| 96 | }; |
| 97 | |
| 98 | static MACHINE_DRIVER_START( isbc86 ) |
| 99 | /* basic machine hardware */ |
| 100 | MDRV_CPU_ADD("maincpu", I8086, XTAL_9_8304MHz) |
| 101 | MDRV_CPU_PROGRAM_MAP(isbc86_mem) |
| 102 | MDRV_CPU_IO_MAP(isbc86_io) |
| 103 | |
| 104 | MDRV_MACHINE_RESET(isbc) |
| 105 | |
| 106 | /* video hardware */ |
| 107 | MDRV_IMPORT_FROM( generic_terminal ) |
| 108 | MDRV_GENERIC_TERMINAL_ADD(TERMINAL_TAG, isbc_terminal_intf) |
| 109 | MACHINE_DRIVER_END |
| 110 | |
| 111 | static MACHINE_DRIVER_START( rpc86 ) |
| 112 | /* basic machine hardware */ |
| 113 | MDRV_CPU_ADD("maincpu", I8086, XTAL_9_8304MHz) |
| 114 | MDRV_CPU_PROGRAM_MAP(rpc86_mem) |
| 115 | MDRV_CPU_IO_MAP(rpc86_io) |
| 116 | |
| 117 | MDRV_MACHINE_RESET(isbc) |
| 118 | |
| 119 | /* video hardware */ |
| 120 | MDRV_IMPORT_FROM( generic_terminal ) |
| 121 | MDRV_GENERIC_TERMINAL_ADD(TERMINAL_TAG, isbc_terminal_intf) |
| 122 | MACHINE_DRIVER_END |
| 123 | |
| 124 | static MACHINE_DRIVER_START( isbc286 ) |
| 125 | /* basic machine hardware */ |
| 126 | MDRV_CPU_ADD("maincpu", I80286, XTAL_9_8304MHz) |
| 127 | MDRV_CPU_PROGRAM_MAP(isbc286_mem) |
| 128 | MDRV_CPU_IO_MAP(isbc286_io) |
| 129 | |
| 130 | MDRV_MACHINE_RESET(isbc) |
| 131 | |
| 132 | /* video hardware */ |
| 133 | MDRV_IMPORT_FROM( generic_terminal ) |
| 134 | MDRV_GENERIC_TERMINAL_ADD(TERMINAL_TAG, isbc_terminal_intf) |
| 135 | MACHINE_DRIVER_END |
| 136 | |
| 137 | static MACHINE_DRIVER_START( isbc2861 ) |
| 138 | /* basic machine hardware */ |
| 139 | MDRV_CPU_ADD("maincpu", I80286, XTAL_9_8304MHz) |
| 140 | MDRV_CPU_PROGRAM_MAP(isbc2861_mem) |
| 141 | MDRV_CPU_IO_MAP(isbc2861_io) |
| 142 | |
| 143 | MDRV_MACHINE_RESET(isbc) |
| 144 | |
| 145 | /* video hardware */ |
| 146 | MDRV_IMPORT_FROM( generic_terminal ) |
| 147 | MDRV_GENERIC_TERMINAL_ADD(TERMINAL_TAG, isbc_terminal_intf) |
| 148 | MACHINE_DRIVER_END |
| 149 | |
| 150 | /* ROM definition */ |
| 151 | ROM_START( isbc86 ) |
| 152 | ROM_REGION( 0x4000, "user1", ROMREGION_ERASEFF ) |
| 153 | ROM_LOAD16_BYTE( "8612_2u.bin", 0x0001, 0x1000, CRC(84fa14cf) SHA1(783e1459ab121201fd49368d4bf769c1bab6447a)) |
| 154 | ROM_LOAD16_BYTE( "8612_2l.bin", 0x0000, 0x1000, CRC(922bda5f) SHA1(15743e69f3aba56425fa004d19b82ec20532fd72)) |
| 155 | ROM_LOAD16_BYTE( "8612_3u.bin", 0x2001, 0x1000, CRC(68d47c3e) SHA1(16c17f26b33daffa84d065ff7aefb581544176bd)) |
| 156 | ROM_LOAD16_BYTE( "8612_3l.bin", 0x2000, 0x1000, CRC(17f27ad2) SHA1(c3f379ac7d67dc4a0a7a611a0bc6323b8a3d4840)) |
| 157 | ROM_END |
| 158 | |
| 159 | ROM_START( isbc286 ) |
| 160 | ROM_REGION( 0x20000, "user1", ROMREGION_ERASEFF ) |
| 161 | ROM_LOAD16_BYTE( "u79.bin", 0x00001, 0x10000, CRC(144182ea) SHA1(4620ca205a6ac98fe2636183eaead7c4bfaf7a72)) |
| 162 | ROM_LOAD16_BYTE( "u36.bin", 0x00000, 0x10000, CRC(22db075f) SHA1(fd29ea77f5fc0697c8f8b66aca549aad5b9db3ea)) |
| 163 | ROM_REGION( 0x4000, "isbc215", ROMREGION_ERASEFF ) |
| 164 | ROM_LOAD16_BYTE( "174581.001.bin", 0x0000, 0x2000, CRC(ccdbc7ab) SHA1(5c2ebdde1b0252124177221ba9cacdb6d925a24d)) |
| 165 | ROM_LOAD16_BYTE( "174581.002.bin", 0x0001, 0x2000, CRC(6190fa67) SHA1(295dd4e75f699aaf93227cc4876cee8accae383a)) |
| 166 | ROM_END |
| 167 | |
| 168 | ROM_START( isbc2861 ) |
| 169 | ROM_REGION( 0x10000, "user1", ROMREGION_ERASEFF ) |
| 170 | ROM_LOAD16_BYTE( "174894-001.bin", 0x0000, 0x4000, CRC(79e4f7af) SHA1(911a4595d35e6e82b1149e75bb027927cd1c1658)) |
| 171 | ROM_LOAD16_BYTE( "174894-002.bin", 0x0001, 0x4000, CRC(66747d21) SHA1(4094b1f10a8bc7db8d6dd48d7128e14e875776c7)) |
| 172 | ROM_LOAD16_BYTE( "174894-003.bin", 0x8000, 0x4000, CRC(c98c7f17) SHA1(6e9a14aedd630824dccc5eb6052867e73b1d7db6)) |
| 173 | ROM_LOAD16_BYTE( "174894-004.bin", 0x8001, 0x4000, CRC(61bc1dc9) SHA1(feed5a5f0bb4630c8f6fa0d5cca30654a80b4ee5)) |
| 174 | ROM_END |
| 175 | |
| 176 | ROM_START( rpc86 ) |
| 177 | ROM_REGION( 0x4000, "user1", ROMREGION_ERASEFF ) |
| 178 | ROM_LOAD16_BYTE( "145068-001.bin", 0x0001, 0x1000, CRC(0fa9db83) SHA1(4a44f8683c263c9ef6850cbe05aaa73f4d4d4e06)) |
| 179 | ROM_LOAD16_BYTE( "145069-001.bin", 0x2001, 0x1000, CRC(1692a076) SHA1(0ce3a4a867cb92340871bb8f9c3e91ce2984c77c)) |
| 180 | ROM_LOAD16_BYTE( "145070-001.bin", 0x0000, 0x1000, CRC(8c8303ef) SHA1(60f94daa76ab9dea6e309ac580152eb212b847a0)) |
| 181 | ROM_LOAD16_BYTE( "145071-001.bin", 0x2000, 0x1000, CRC(a49681d8) SHA1(e81f8b092cfa2d1737854b1fa270a4ce07d61a9f)) |
| 182 | ROM_END |
| 183 | /* Driver */ |
| 184 | |
| 185 | /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT CONFIG COMPANY FULLNAME FLAGS */ |
| 186 | COMP( ????, rpc86, 0, 0, rpc86, isbc, 0, 0, "Intel", "RPC 86", GAME_NOT_WORKING) |
| 187 | COMP( ????, isbc86, 0, 0, isbc86, isbc, 0, 0, "Intel", "iSBC 86/12A", GAME_NOT_WORKING) |
| 188 | COMP( ????, isbc286, 0, 0, isbc286,isbc, 0, 0, "Intel", "iSBC 286", GAME_NOT_WORKING) |
| 189 | COMP( ????, isbc2861, 0, 0, isbc2861,isbc, 0, 0, "Intel", "iSBC 286-10", GAME_NOT_WORKING) |
| 190 | |