src/mess/video/pc_cga.c
| r7247 | r7248 | |
| 233 | 233 | UINT8 palette_lut_2bpp[4]; |
| 234 | 234 | UINT8 vsync; |
| 235 | 235 | UINT8 hsync; |
| 236 | UINT8 p3df; |
| 236 | 237 | } cga; |
| 237 | 238 | |
| 238 | 239 | |
| r7247 | r7248 | |
| 1179 | 1180 | * |
| 1180 | 1181 | *************************************************************************/ |
| 1181 | 1182 | |
| 1183 | WRITE8_HANDLER ( char_ram_w ) |
| 1184 | { |
| 1185 | UINT8 *gfx = memory_region(space->machine, "gfx1"); |
| 1186 | logerror("write char ram %04x %02x\n",offset,data); |
| 1187 | gfx[offset + 0x0000] = data; |
| 1188 | gfx[offset + 0x0800] = data; |
| 1189 | gfx[offset + 0x1000] = data; |
| 1190 | gfx[offset + 0x1800] = data; |
| 1191 | } |
| 1192 | |
| 1193 | WRITE16_HANDLER( char_ram_16le_w ) { write16le_with_write8_handler(char_ram_w, space, offset, data, mem_mask); } |
| 1194 | WRITE32_HANDLER( char_ram_32_w ) { write32le_with_write8_handler(char_ram_w, space, offset, data, mem_mask); } |
| 1195 | |
| 1196 | READ8_HANDLER ( char_ram_r ) |
| 1197 | { |
| 1198 | UINT8 *gfx = memory_region(space->machine, "gfx1"); |
| 1199 | return gfx[offset]; |
| 1200 | } |
| 1201 | |
| 1202 | READ16_HANDLER( char_ram_16le_r ) { return read16le_with_read8_handler(char_ram_r, space, offset, mem_mask); } |
| 1203 | READ32_HANDLER( char_ram_32_r ) { return read32le_with_read8_handler(char_ram_r, space, offset, mem_mask); } |
| 1204 | |
| 1182 | 1205 | static READ8_HANDLER( pc_cga8_r ) |
| 1183 | 1206 | { |
| 1184 | 1207 | running_device *devconf = devtag_get_device(space->machine, CGA_MC6845_NAME); |
| r7247 | r7248 | |
| 1193 | 1216 | break; |
| 1194 | 1217 | case 10: |
| 1195 | 1218 | data = cga.vsync | ( ( data & 0x40 ) >> 4 ) | cga.hsync; |
| 1219 | break; |
| 1220 | case 0x0f: |
| 1221 | data = cga.p3df; |
| 1196 | 1222 | break; |
| 1197 | 1223 | } |
| 1198 | 1224 | return data; |
| r7247 | r7248 | |
| 1222 | 1248 | case 0x0d: |
| 1223 | 1249 | pc_cga_plantronics_w(space->machine, data); |
| 1224 | 1250 | break; |
| 1251 | case 0x0f: |
| 1252 | // Not sure if some all CGA cards have ability to upload char definition |
| 1253 | UINT8 buswidth = space->machine->firstcpu->databus_width(AS_PROGRAM); |
| 1254 | const address_space *space_prg = cpu_get_address_space(space->machine->firstcpu, ADDRESS_SPACE_PROGRAM); |
| 1255 | cga.p3df = data; |
| 1256 | if (data & 1) { |
| 1257 | switch(buswidth) |
| 1258 | { |
| 1259 | case 8: |
| 1260 | memory_install_readwrite8_handler(space_prg, 0xb8000, 0xb87ff, 0, 0, char_ram_r,char_ram_w ); |
| 1261 | break; |
| 1262 | |
| 1263 | case 16: |
| 1264 | memory_install_readwrite16_handler(space_prg, 0xb8000, 0xb87ff, 0, 0, char_ram_16le_r,char_ram_16le_w ); |
| 1265 | break; |
| 1266 | |
| 1267 | case 32: |
| 1268 | memory_install_readwrite32_handler(space_prg, 0xb8000, 0xb87ff, 0, 0, char_ram_32_r,char_ram_32_w ); |
| 1269 | break; |
| 1270 | |
| 1271 | default: |
| 1272 | fatalerror("CGA: Bus width %d not supported\n", buswidth); |
| 1273 | break; |
| 1274 | } |
| 1275 | } else { |
| 1276 | memory_install_read_bank(space_prg, 0xb8000, 0xbbfff, 0, 0x04000, "bank11" ); |
| 1277 | switch(buswidth) |
| 1278 | { |
| 1279 | case 8: |
| 1280 | memory_install_write8_handler(space_prg, 0xb8000, 0xbbfff, 0, 0x04000, pc_video_videoram_w ); |
| 1281 | break; |
| 1282 | |
| 1283 | case 16: |
| 1284 | memory_install_write16_handler(space_prg, 0xb8000, 0xbbfff, 0, 0x04000, pc_video_videoram16le_w ); |
| 1285 | break; |
| 1286 | |
| 1287 | case 32: |
| 1288 | memory_install_write32_handler(space_prg, 0xb8000, 0xbbfff, 0, 0x04000, pc_video_videoram32_w ); |
| 1289 | break; |
| 1290 | |
| 1291 | default: |
| 1292 | fatalerror("CGA: Bus width %d not supported\n", buswidth); |
| 1293 | break; |
| 1294 | } |
| 1295 | |
| 1296 | } |
| 1297 | break; |
| 1298 | |
| 1225 | 1299 | } |
| 1226 | 1300 | } |
| 1227 | 1301 | |
src/mess/drivers/pc.c
| r7247 | r7248 | |
| 281 | 281 | #endif |
| 282 | 282 | AM_RANGE(0x0240, 0x0257) AM_READWRITE(pc16le_rtc_r, pc16le_rtc_w) |
| 283 | 283 | AM_RANGE(0x0278, 0x027b) AM_DEVREADWRITE8("lpt_2", pc_lpt_r, pc_lpt_w, 0x00ff) |
| 284 | AM_RANGE(0x02b0, 0x02bf) AM_RAM |
| 284 | 285 | AM_RANGE(0x02e8, 0x02ef) AM_DEVREADWRITE8("ins8250_3", ins8250_r, ins8250_w, 0xffff) |
| 285 | 286 | AM_RANGE(0x02f8, 0x02ff) AM_DEVREADWRITE8("ins8250_1", ins8250_r, ins8250_w, 0xffff) |
| 286 | 287 | AM_RANGE(0x0320, 0x0323) AM_READWRITE(pc16le_HDC1_r, pc16le_HDC1_w) |
| r7247 | r7248 | |
| 2401 | 2402 | MDRV_RAM_DEFAULT_SIZE("640K") |
| 2402 | 2403 | MACHINE_DRIVER_END |
| 2403 | 2404 | |
| 2405 | static MACHINE_DRIVER_START( iskr1031 ) |
| 2406 | MDRV_DRIVER_DATA(pc_state) |
| 2407 | /* basic machine hardware */ |
| 2408 | MDRV_CPU_PC(pc16, pc16, I8086, 4772720, pc_frame_interrupt) |
| 2409 | |
| 2410 | MDRV_QUANTUM_TIME(HZ(60)) |
| 2411 | |
| 2412 | MDRV_MACHINE_START(pc) |
| 2413 | MDRV_MACHINE_RESET(pc) |
| 2414 | |
| 2415 | MDRV_PIT8253_ADD( "pit8253", ibm5150_pit8253_config ) |
| 2416 | |
| 2417 | MDRV_I8237_ADD( "dma8237", XTAL_14_31818MHz/3, ibm5150_dma8237_config ) |
| 2418 | |
| 2419 | MDRV_PIC8259_ADD( "pic8259", ibm5150_pic8259_config ) |
| 2420 | |
| 2421 | MDRV_I8255A_ADD( "ppi8255", ibm5160_ppi8255_interface ) |
| 2422 | |
| 2423 | MDRV_INS8250_ADD( "ins8250_0", ibm5150_com_interface[0] ) /* TODO: Verify model */ |
| 2424 | MDRV_INS8250_ADD( "ins8250_1", ibm5150_com_interface[1] ) /* TODO: Verify model */ |
| 2425 | MDRV_INS8250_ADD( "ins8250_2", ibm5150_com_interface[2] ) /* TODO: Verify model */ |
| 2426 | MDRV_INS8250_ADD( "ins8250_3", ibm5150_com_interface[3] ) /* TODO: Verify model */ |
| 2427 | |
| 2428 | /* video hardware */ |
| 2429 | MDRV_IMPORT_FROM( pcvideo_cga ) |
| 2430 | MDRV_GFXDECODE(ibm5150) |
| 2431 | |
| 2432 | /* sound hardware */ |
| 2433 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 2434 | MDRV_SOUND_ADD("speaker", SPEAKER, 0) |
| 2435 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) |
| 2436 | #ifdef ADLIB |
| 2437 | MDRV_SOUND_ADD("ym3812", YM3812, ym3812_StdClock) |
| 2438 | MDRV_SOUND_CONFIG(pc_ym3812_interface) |
| 2439 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) |
| 2440 | #endif |
| 2441 | #ifdef GAMEBLASTER |
| 2442 | MDRV_SOUND_ADD("saa1099.1", SAA1099, 4772720) |
| 2443 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 2444 | MDRV_SOUND_ADD("saa1099.2", SAA1099, 4772720) |
| 2445 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 2446 | #endif |
| 2447 | |
| 2448 | /* keyboard */ |
| 2449 | MDRV_KB_KEYTRONIC_ADD("keyboard", pc_keytronic_intf) |
| 2450 | |
| 2451 | /* printer */ |
| 2452 | MDRV_PC_LPT_ADD("lpt_0", pc_lpt_config) |
| 2453 | MDRV_PC_LPT_ADD("lpt_1", pc_lpt_config) |
| 2454 | MDRV_PC_LPT_ADD("lpt_2", pc_lpt_config) |
| 2455 | |
| 2456 | /* harddisk */ |
| 2457 | MDRV_IMPORT_FROM( pc_hdc ) |
| 2458 | |
| 2459 | MDRV_UPD765A_ADD("upd765", pc_fdc_upd765_not_connected_interface) |
| 2460 | |
| 2461 | MDRV_FLOPPY_2_DRIVES_ADD(ibmpc_floppy_config) |
| 2462 | |
| 2463 | /* internal ram */ |
| 2464 | MDRV_RAM_ADD("messram") |
| 2465 | MDRV_RAM_DEFAULT_SIZE("640K") |
| 2466 | MACHINE_DRIVER_END |
| 2467 | |
| 2468 | |
| 2469 | |
| 2404 | 2470 | #if 0 |
| 2405 | 2471 | //pcjr roms? (incomplete dump, most likely 64 kbyte) |
| 2406 | 2472 | // basic c1.20 |
| r7247 | r7248 | |
| 2945 | 3011 | ROM_LOAD("5788005.u33", 0x00000, 0x2000, CRC(0bf56d70) SHA1(c2a8b10808bf51a3c123ba3eb1e9dd608231916f)) /* "AMI 8412PI // 5788005 // (C) IBM CORP. 1981 // KOREA" */ |
| 2946 | 3012 | ROM_END |
| 2947 | 3013 | |
| 3014 | ROM_START( iskr1031 ) |
| 3015 | ROM_REGION16_LE(0x100000,"maincpu", 0) |
| 3016 | ROM_SYSTEM_BIOS(0, "v1", "v1") |
| 3017 | ROMX_LOAD( "150-02.bin", 0xfc000, 0x2000, CRC(e33fb974) SHA1(f5f3ece67c025c0033716ff516e1a34fbeb32749), ROM_SKIP(1) | ROM_BIOS(1)) |
| 3018 | ROMX_LOAD( "150-03.bin", 0xfc001, 0x2000, CRC(8c482258) SHA1(90ef48955e0df556dc06a000a797ef42ccf430c5), ROM_SKIP(1) | ROM_BIOS(1)) |
| 3019 | ROM_SYSTEM_BIOS(1, "v2", "v2") |
| 3020 | ROMX_LOAD( "150-06.bin", 0xfc000, 0x2000, CRC(1adbf969) SHA1(08c0a0fc50a75e6207b1987bae389cca60893eac), ROM_SKIP(1) | ROM_BIOS(2)) |
| 3021 | ROMX_LOAD( "150-07.bin", 0xfc001, 0x2000, CRC(0dc4b65a) SHA1(c96f066251a7343eac8113ea9dcb2cb12d0334d5), ROM_SKIP(1) | ROM_BIOS(2)) |
| 3022 | |
| 3023 | ROM_REGION(0x2000,"gfx1", 0) |
| 3024 | // Here CGA rom with cyrillic support should be added |
| 3025 | ROM_LOAD( "rus_cga.bin", 0x0000, 0x2000, BAD_DUMP CRC(f23c2425) SHA1(fd40daf0aa629f479b40ca9ac7aea369fa020af6)) |
| 3026 | ROM_END |
| 2948 | 3027 | |
| 3028 | ROM_START( ec1841 ) |
| 3029 | ROM_REGION16_LE(0x100000,"maincpu", 0) |
| 3030 | ROM_SYSTEM_BIOS(0, "v1", "v1") |
| 3031 | ROMX_LOAD( "18410112.bin", 0xfc000, 0x0800, CRC(77957396) SHA1(785f1dceb6e2b4618f5c5f0af15eb74a8c951448), ROM_SKIP(1) | ROM_BIOS(1)) |
| 3032 | ROMX_LOAD( "18410113.bin", 0xfc001, 0x0800, CRC(768bd3d5) SHA1(2e948f2ad262de306d889b7964c3f1aad45ff5bc), ROM_SKIP(1) | ROM_BIOS(1)) |
| 3033 | ROMX_LOAD( "18410114.bin", 0xfd000, 0x0800, CRC(47722b58) SHA1(a6339ee8af516f834826b7828a5cf79cb650480c), ROM_SKIP(1) | ROM_BIOS(1)) |
| 3034 | ROMX_LOAD( "18410115.bin", 0xfd001, 0x0800, CRC(b585b5ea) SHA1(d0ebed586eb13031477c2e071c50416682f80489), ROM_SKIP(1) | ROM_BIOS(1)) |
| 3035 | ROMX_LOAD( "18410116.bin", 0xfe000, 0x0800, CRC(28a07db4) SHA1(17fbcd60dacd1d3f8d8355db429f97e4d1d1ac88), ROM_SKIP(1) | ROM_BIOS(1)) |
| 3036 | ROMX_LOAD( "18410117.bin", 0xfe001, 0x0800, CRC(928bda26) SHA1(ee889184067e2680b29a8ef1c3a76cf5afd4c78d), ROM_SKIP(1) | ROM_BIOS(1)) |
| 3037 | ROMX_LOAD( "18410118.bin", 0xff000, 0x0800, CRC(75ca7d7e) SHA1(6356426820c5326a7893a437d54b02f250ef8609), ROM_SKIP(1) | ROM_BIOS(1)) |
| 3038 | ROMX_LOAD( "18410119.bin", 0xff001, 0x0800, CRC(8a9d593e) SHA1(f3936d2cb4e6d130dd732973f126c3aa20612463), ROM_SKIP(1) | ROM_BIOS(1)) |
| 3039 | ROM_SYSTEM_BIOS(1, "v2", "v2") |
| 3040 | ROMX_LOAD( "18410212.bin", 0xfc000, 0x0800, CRC(619dbdcf) SHA1(ece1943569b44b1b81246f9d47d62b9b11680a52), ROM_SKIP(1) | ROM_BIOS(2)) |
| 3041 | ROMX_LOAD( "18410213.bin", 0xfc001, 0x0800, CRC(e3c10128) SHA1(d6ed743ebe9c130925c9f17aad1a45db9194c967), ROM_SKIP(1) | ROM_BIOS(2)) |
| 3042 | ROMX_LOAD( "18410214.bin", 0xfd000, 0x0800, CRC(f8517e5e) SHA1(8034cd6ff5778365dc9daa494524f1753a74f1ed), ROM_SKIP(1) | ROM_BIOS(2)) |
| 3043 | ROMX_LOAD( "18410215.bin", 0xfd001, 0x0800, CRC(8538c52a) SHA1(ee981ce90870b6546a18f2a2e64d71b0038ce0dd), ROM_SKIP(1) | ROM_BIOS(2)) |
| 3044 | ROMX_LOAD( "18410216.bin", 0xfe000, 0x0800, CRC(3d1d1e67) SHA1(c527e29796537787c0f6c329f3c203f6131ca77f), ROM_SKIP(1) | ROM_BIOS(2)) |
| 3045 | ROMX_LOAD( "18410217.bin", 0xfe001, 0x0800, CRC(1b985264) SHA1(5ddcb9c13564be208c5068c105444a87159c67ee), ROM_SKIP(1) | ROM_BIOS(2)) |
| 3046 | ROMX_LOAD( "18410218.bin", 0xff000, 0x0800, CRC(75ca7d7e) SHA1(6356426820c5326a7893a437d54b02f250ef8609), ROM_SKIP(1) | ROM_BIOS(2)) |
| 3047 | ROMX_LOAD( "18410219.bin", 0xff001, 0x0800, CRC(61aae23d) SHA1(7b3aa24a63ee31b194297eb1e61c3827edfcb95a), ROM_SKIP(1) | ROM_BIOS(2)) |
| 3048 | ROM_REGION(0x2000,"gfx1", 0) |
| 3049 | // On real machine looks like RAM is here, since it is owerwritten during runtime |
| 3050 | ROM_END |
| 3051 | |
| 3052 | |
| 2949 | 3053 | /*************************************************************************** |
| 2950 | 3054 | |
| 2951 | 3055 | Game driver(s) |
| r7247 | r7248 | |
| 2981 | 3085 | COMP ( 1987, pcherc, ibm5150, 0, pcherc, pcmda, ibm5150, "Generic", "PC (Hercules)" , 0) |
| 2982 | 3086 | COMP ( 1987, xtvga, ibm5150, 0, xtvga, xtvga, pc_vga, "Generic", "PC/XT (VGA, MF2 Keyboard)" , GAME_NOT_WORKING) |
| 2983 | 3087 | |
| 3088 | COMP ( 1987, iskr1031, ibm5150, 0, iskr1031, pccga, pccga, "", "Iskra-1031" , GAME_NOT_WORKING) |
| 3089 | COMP ( 1987, ec1841, ibm5150, 0, iskr1031, pccga, pccga, "", "EC-1841" , GAME_NOT_WORKING) |
| 3090 | |