diff --git a/src/keyboard_xt.c b/src/keyboard_xt.c index 6b083e9f2..1df5ab80d 100644 --- a/src/keyboard_xt.c +++ b/src/keyboard_xt.c @@ -8,7 +8,7 @@ * * Implementation of the XT-style keyboard. * - * Version: @(#)keyboard_xt.c 1.0.5 2018/01/09 + * Version: @(#)keyboard_xt.c 1.0.6 2018/01/25 * * Authors: Sarah Walker, * Miran Grca, @@ -462,7 +462,7 @@ kbd_read(uint16_t port, void *priv) switch (port) { case 0x60: if ((romset == ROM_IBMPC) && (kbd->pb & 0x80)) { - if (VGA || gfxcard == GFX_EGA) + if (EGA_VGA) ret = 0x4d; else if (MDA) ret = 0x7d; @@ -484,14 +484,20 @@ kbd_read(uint16_t port, void *priv) ret = ((mem_size-64) / 32) >> 4; } else { if (kbd->pb & 0x08) { - if (VGA || gfxcard == GFX_EGA) - ret = 4; + if (EGA_VGA) + ret = 0x4; else if (MDA) - ret = 7; + ret = 0x7; else - ret = 6; - } else - ret = 0x0d; + ret = 0x6; + } else { + /* LaserXT = Always 512k RAM; + LaserXT/3 = Bit 0: set = 512k, clear = 256k. */ + if (romset == ROM_LXT3) + ret = (mem_size == 512) ? 0x0d : 0x0c; + else + ret = 0x0d; + } } ret |= (ppispeakon ? 0x20 : 0); diff --git a/src/machine/machine_table.c b/src/machine/machine_table.c index 2242d99f9..456290407 100644 --- a/src/machine/machine_table.c +++ b/src/machine/machine_table.c @@ -11,7 +11,7 @@ * NOTES: OpenAT wip for 286-class machine with open BIOS. * PS2_M80-486 wip, pending receipt of TRM's for machine. * - * Version: @(#)machine_table.c 1.0.14 2018/01/22 + * Version: @(#)machine_table.c 1.0.15 2018/01/25 * * Authors: Sarah Walker, * Miran Grca, @@ -47,7 +47,7 @@ machine_t machines[] = { { "[8088] Schneider EuroPC", ROM_EUROPC, "europc", {{"Siemens",cpus_europc}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_HDC | MACHINE_VIDEO | MACHINE_MOUSE, 512, 640, 128, 0, machine_europc_init, NULL, NULL }, { "[8088] Tandy 1000", ROM_TANDY, "tandy", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA, 128, 640, 128, 0, machine_tandy1k_init, NULL, NULL }, { "[8088] Tandy 1000 HX", ROM_TANDY1000HX, "tandy1000hx", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA, 256, 640, 128, 0, machine_tandy1k_init, NULL, NULL }, - { "[8088] VTech Laser Turbo XT", ROM_LTXT, "ltxt", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA, 64, 1152, 64, 0, machine_xt_laserxt_init, NULL, NULL }, + { "[8088] VTech Laser Turbo XT", ROM_LTXT, "ltxt", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA, 512, 512, 256, 0, machine_xt_laserxt_init, NULL, NULL }, { "[8086] Amstrad PC1512", ROM_PC1512, "pc1512", {{"", cpus_pc1512}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_VIDEO | MACHINE_MOUSE, 512, 640, 128, 63, machine_amstrad_init, NULL, nvr_at_close }, { "[8086] Amstrad PC1640", ROM_PC1640, "pc1640", {{"", cpus_8086}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_VIDEO | MACHINE_MOUSE, 640, 640, 0, 63, machine_amstrad_init, NULL, nvr_at_close }, @@ -56,7 +56,7 @@ machine_t machines[] = { { "[8086] Amstrad PC20(0)", ROM_PC200, "pc200", {{"", cpus_8086}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_VIDEO | MACHINE_MOUSE, 512, 640, 128, 63, machine_amstrad_init, NULL, nvr_at_close }, { "[8086] Olivetti M24", ROM_OLIM24, "olivetti_m24", {{"", cpus_8086}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_VIDEO | MACHINE_MOUSE, 128, 640, 128, 0, machine_olim24_init, NULL, NULL }, { "[8086] Tandy 1000 SL/2", ROM_TANDY1000SL2, "tandy1000sl2", {{"", cpus_8086}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA, 512, 768, 128, 0, machine_tandy1k_init, NULL, NULL }, - { "[8086] VTech Laser XT3", ROM_LXT3, "lxt3", {{"", cpus_8086}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA, 512, 1152, 128, 0, machine_xt_laserxt_init, NULL, NULL }, + { "[8086] VTech Laser XT3", ROM_LXT3, "lxt3", {{"", cpus_8086}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA, 256, 512, 256, 0, machine_xt_laserxt_init, NULL, NULL }, { "[286 ISA] AMI 286 clone", ROM_AMI286, "ami286", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT, 512,16384, 128, 127, machine_at_neat_ami_init, NULL, nvr_at_close }, { "[286 ISA] Award 286 clone", ROM_AWARD286, "award286", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT, 512,16384, 128, 127, machine_at_scat_init, NULL, nvr_at_close }, diff --git a/src/rom.c b/src/rom.c index b8f48b746..6284b49cd 100644 --- a/src/rom.c +++ b/src/rom.c @@ -13,7 +13,7 @@ * - c386sx16 BIOS fails checksum * - the loadfont() calls should be done elsewhere * - * Version: @(#)rom.c 1.0.26 2018/01/01 + * Version: @(#)rom.c 1.0.27 2018/01/25 * * Authors: Sarah Walker, * Miran Grca, @@ -373,6 +373,7 @@ rom_load_bios(int rom_id) 0x00c000, 16384, 0, rom)) break; f = rom_fopen(L"roms/machines/pc200/40109", L"rb"); if (f == NULL) break; + (void)fclose(f); return(1); case ROM_TANDY: diff --git a/src/rom.h b/src/rom.h index 4f1db3cf6..b88b58ea1 100644 --- a/src/rom.h +++ b/src/rom.h @@ -8,7 +8,7 @@ * * Definitions for the ROM image handler. * - * Version: @(#)rom.h 1.0.11 2018/01/01 + * Version: @(#)rom.h 1.0.12 2018/01/25 * * Author: Fred N. van Kempen, * Copyright 2018 Fred N. van Kempen. @@ -18,7 +18,7 @@ #define PCJR (romset==ROM_IBMPCJR) -#ifdef GREENB +#if defined(DEV_BRANCH) && defined(USE_GREENB) #define AMIBIOS (romset==ROM_AMI386SX || \ romset==ROM_AMI486 || \ romset==ROM_WIN486 || \ @@ -39,124 +39,119 @@ typedef struct { enum { ROM_IBMPC = 0, /* 301 keyboard error, 131 cassette (!!!) error */ - ROM_IBMXT, /* 301 keyboard error */ - ROM_IBMPCJR, - ROM_GENXT, /* 'Generic XT BIOS' */ + ROM_AMIXT, /* XT Clone with AMI BIOS */ ROM_DTKXT, - ROM_EUROPC, - ROM_OLIM24, + ROM_IBMXT, /* 301 keyboard error */ + ROM_GENXT, /* 'Generic XT BIOS' */ + ROM_JUKOPC, + ROM_PORTABLE, + ROM_LTXT, + ROM_PXXT, + + ROM_LXT3, + + ROM_IBMPCJR, ROM_TANDY, + ROM_TANDY1000HX, + ROM_EUROPC, ROM_PC1512, - ROM_PC200, ROM_PC1640, + ROM_PC200, ROM_PC2086, ROM_PC3086, - ROM_AMIXT, /* XT Clone with AMI BIOS */ - ROM_LTXT, - ROM_LXT3, - ROM_DTK386, - ROM_PXXT, - ROM_JUKOPC, - ROM_TANDY1000HX, + ROM_OLIM24, ROM_TANDY1000SL2, - ROM_IBMAT, - ROM_CMDPC30, + ROM_T3100E, + ROM_AMI286, ROM_AWARD286, - ROM_MEGAPC, - ROM_AMI386SX, - ROM_AMI486, - ROM_WIN486, - ROM_430VX, - ROM_ENDEAVOR, - ROM_REVENGE, - ROM_IBMPS1_2011, - ROM_IBMXT286, -#ifdef DEV_BRANCH -#ifdef USE_PORTABLE3 - ROM_DESKPRO_386, -#endif -#endif - ROM_PORTABLE, + ROM_CMDPC30, ROM_PORTABLEII, -#ifdef DEV_BRANCH -#ifdef USE_PORTABLE3 +#if defined(DEV_BRANCH) && defined(USE_PORTABLE3) ROM_PORTABLEIII, - ROM_PORTABLEIII386, #endif -#endif - ROM_IBMPS1_2121, - - ROM_AMI386DX_OPTI495, - ROM_MR386DX_OPTI495, - - ROM_IBMPS2_M30_286, - ROM_IBMPS2_M50, - ROM_IBMPS2_M55SX, - ROM_IBMPS2_M80, - - ROM_DTK486, /* DTK PKM-0038S E-2/SiS 471/Award/SiS 85C471 */ -#ifdef UNIMPLEMENTED_MACHINES - ROM_VLI486SV2G, /* ASUS VL/I-486SV2G/SiS 471/Award/SiS 85C471 */ /* 51 */ -#endif - ROM_R418, /* Rise Computer R418/SiS 496/497/Award/SMC FDC37C665 */ - ROM_PLATO, /* Intel Premiere/PCI II/430NX/AMI/SMC FDC37C665 */ - ROM_MB500N, /* PC Partner MB500N/430FX/Award/SMC FDC37C665 */ - ROM_P54TP4XE, /* ASUS P/I-P55TP4XE/430FX/Award/SMC FDC37C665 */ - ROM_AP53, /* AOpen AP53/430HX/AMI/SMC FDC37C665/669 */ - ROM_P55T2S, /* ASUS P/I-P55T2S/430HX/AMI/NS PC87306 */ - ROM_ACERM3A, /* Acer M3A/430HX/Acer/SMC FDC37C932FR */ - ROM_ACERV35N, /* Acer V35N/430HX/Acer/SMC FDC37C932FR */ - ROM_P55T2P4, /* ASUS P/I-P55T2P4/430HX/Award/Winbond W8387F*/ - ROM_P55TVP4, /* ASUS P/I-P55TVP4/430HX/Award/Winbond W8387F*/ - ROM_P55VA, /* Epox P55-VA/430VX/Award/SMC FDC37C932FR*/ - ROM_THOR, /* Intel Advanced_ATX/430FX/AMI/NS PC87306 */ - ROM_MRTHOR, /* Intel Advanced_ATX/430FX/MR.BIOS/NS PC87306 */ -#ifdef UNIMPLEMENTED_MACHINES - ROM_POWERMATE_V, /* NEC PowerMate V/430FX/Phoenix/SMC FDC37C66 5*/ /* 68 */ -#endif - -#ifdef DEV_BRANCH -#ifdef USE_I686 - ROM_440FX, /* Tyan Titan-Pro AT/440FX/Award BIOS/SMC FDC37C665 */ -#endif -#endif - - ROM_IBMPS1_2121_ISA,/* IBM PS/1 Model 2121 with ISA expansion bus */ - - ROM_SPC4200P, /* Samsung SPC-4200P/SCAT/Phoenix */ ROM_SUPER286TR, /* Hyundai Super-286TR/SCAT/Award */ - - ROM_AWARD386SX_OPTI495, - ROM_AWARD386DX_OPTI495, - ROM_AWARD486_OPTI495, - - ROM_MEGAPCDX, /* 386DX mdl - Note: documentation (in German) clearly says such a model exists */ - ROM_ZAPPA, /* Intel Advanced_ZP/430FX/AMI/NS PC87306 */ - -#ifdef DEV_BRANCH -#ifdef USE_I686 - ROM_S1668, /* Tyan Titan-Pro ATX/440FX/AMI/SMC FDC37C669 */ -#endif -#endif - ROM_IBMPS1_2133, - - ROM_PRESIDENT, /* President Award 430FX PCI/430FX/Award/Unknown SIO */ -#ifdef WALTJE - ROM_IBMPS2_M80_486, -#endif - -#ifdef DEV_BRANCH -#ifdef USE_GREENB - ROM_4GPV31, /* Green-B 4GPV3.1 ISA/VLB 486/Pentium, AMI */ -#endif -#endif - + ROM_IBMAT, + ROM_IBMPS1_2011, + ROM_IBMPS2_M30_286, + ROM_IBMXT286, + ROM_SPC4200P, /* Samsung SPC-4200P/SCAT/Phoenix */ #ifdef WALTJE ROM_OPENAT, /* PC/AT clone with Open BIOS */ #endif - ROM_T3100E, + ROM_IBMPS2_M50, + + ROM_AMI386SX, + ROM_MEGAPC, + ROM_AWARD386SX_OPTI495, +#if defined(DEV_BRANCH) && defined(USE_PORTABLE3) + ROM_DESKPRO_386, +#endif + ROM_DTK386, + ROM_IBMPS1_2121, + ROM_IBMPS1_2121_ISA,/* IBM PS/1 Model 2121 with ISA expansion bus */ +#if defined(DEV_BRANCH) && defined(USE_PORTABLE3) + ROM_PORTABLEIII386, +#endif + + ROM_IBMPS2_M55SX, + + ROM_AMI386DX_OPTI495, + ROM_MEGAPCDX, /* 386DX mdl - Note: documentation (in German) clearly says such a model exists */ + ROM_AWARD386DX_OPTI495, + ROM_MR386DX_OPTI495, + + ROM_IBMPS2_M80, + + ROM_AMI486, + ROM_WIN486, +#ifdef UNIMPLEMENTED_MACHINES + ROM_VLI486SV2G, /* ASUS VL/I-486SV2G/SiS 471/Award/SiS 85C471 */ /* 51 */ +#endif + ROM_AWARD486_OPTI495, + ROM_DTK486, /* DTK PKM-0038S E-2/SiS 471/Award/SiS 85C471 */ +#if defined(DEV_BRANCH) && defined(USE_GREENB) + ROM_4GPV31, /* Green-B 4GPV3.1 ISA/VLB 486/Pentium, AMI */ +#endif + ROM_IBMPS1_2133, + +#ifdef WALTJE + ROM_IBMPS2_M80_486, +#endif + + ROM_R418, /* Rise Computer R418/SiS 496/497/Award/SMC FDC37C665 */ + + ROM_REVENGE, /* Intel Premiere/PCI I/430LX/AMI/SMC FDC37C665 */ + + ROM_PLATO, /* Intel Premiere/PCI II/430NX/AMI/SMC FDC37C665 */ + + ROM_P54TP4XE, /* ASUS P/I-P55TP4XE/430FX/Award/SMC FDC37C665 */ + ROM_ENDEAVOR, /* Intel Advanced_EV/430FX/AMI/NS PC87306 */ + ROM_ZAPPA, /* Intel Advanced_ZP/430FX/AMI/NS PC87306 */ +#ifdef UNIMPLEMENTED_MACHINES + ROM_POWERMATE_V, /* NEC PowerMate V/430FX/Phoenix/SMC FDC37C66 5*/ +#endif + ROM_MB500N, /* PC Partner MB500N/430FX/Award/SMC FDC37C665 */ + ROM_PRESIDENT, /* President Award 430FX PCI/430FX/Award/Unknown SIO */ + + ROM_THOR, /* Intel Advanced_ATX/430FX/AMI/NS PC87306 */ + ROM_MRTHOR, /* Intel Advanced_ATX/430FX/MR.BIOS/NS PC87306 */ + + ROM_ACERM3A, /* Acer M3A/430HX/Acer/SMC FDC37C932FR */ + ROM_ACERV35N, /* Acer V35N/430HX/Acer/SMC FDC37C932FR */ + ROM_AP53, /* AOpen AP53/430HX/AMI/SMC FDC37C665/669 */ + ROM_P55T2P4, /* ASUS P/I-P55T2P4/430HX/Award/Winbond W8387F*/ + ROM_P55T2S, /* ASUS P/I-P55T2S/430HX/AMI/NS PC87306 */ + + ROM_P55TVP4, /* ASUS P/I-P55TVP4/430HX/Award/Winbond W8387F*/ + ROM_430VX, /* Award 430VX PCI/430VX/Award/UMC UM8669F*/ + ROM_P55VA, /* Epox P55-VA/430VX/Award/SMC FDC37C932FR*/ + +#if defined(DEV_BRANCH) && defined(USE_I686) + ROM_440FX, /* Tyan Titan-Pro AT/440FX/Award BIOS/SMC FDC37C665 */ + ROM_S1668, /* Tyan Titan-Pro ATX/440FX/AMI/SMC FDC37C669 */ +#endif ROM_MAX }; diff --git a/src/video/vid_table.c b/src/video/vid_table.c index 7646b5903..c73e2a005 100644 --- a/src/video/vid_table.c +++ b/src/video/vid_table.c @@ -8,7 +8,7 @@ * * Define all known video cards. * - * Version: @(#)vid_table.c 1.0.11 2018/01/25 + * Version: @(#)vid_table.c 1.0.12 2018/01/25 * * Authors: Miran Grca, * Fred N. van Kempen, @@ -83,7 +83,7 @@ video_cards[] = { { "Internal", "internal", NULL, GFX_INTERNAL }, {"[ISA] ATI Graphics Pro Turbo (Mach64 GX)", "mach64gx_isa", - &mach64gx_isa_device, GFX_MACH64GX_VLB }, + &mach64gx_isa_device, GFX_MACH64GX_ISA }, { "[ISA] ATI VGA Charger (ATI-28800-5)", "ati28800", &ati28800_device, GFX_VGACHARGER }, { "[ISA] ATI VGA Wonder XL24 (ATI-28800-6)", "ati28800w", diff --git a/src/video/video.h b/src/video/video.h index ccca85d04..906964b9a 100644 --- a/src/video/video.h +++ b/src/video/video.h @@ -8,7 +8,7 @@ * * Definitions for the video controller module. * - * Version: @(#)video.h 1.0.9 2018/01/25 + * Version: @(#)video.h 1.0.10 2018/01/25 * * Authors: Sarah Walker, * Miran Grca, @@ -107,13 +107,19 @@ enum { GFX_MAX }; -#define MDA ((gfxcard>=GFX_MDA) && \ - (gfxcard<=GFX_INCOLOR) && \ - (romset=ROM_IBMAT)) +#define MDA ( (gfxcard >= GFX_MDA) && \ + (gfxcard < GFX_EGA) && \ + ((romset < ROM_TANDY) || \ + (romset >= ROM_AMI286))) -#define VGA ((gfxcard>=GFX_VGA) && \ - (romset!=ROM_PC1640 && romset!=ROM_PC1512 && \ - romset!=ROM_TANDY && romset!=ROM_PC200 && romset!=ROM_T3100E)) +#define EGA ((gfxcard >= GFX_EGA) && \ + (gfxcard < GFX_VGA)) + +#define VGA ((gfxcard >= GFX_VGA)) + +#define EGA_VGA ( (EGA || VGA) && \ + ((romset < ROM_TANDY) || \ + (romset >= ROM_AMI286))) enum { FULLSCR_SCALE_FULL = 0,