Added language select to Amstrad PCs. Patch from JohnElliott.
This commit is contained in:
parent
360b514512
commit
62cd992839
3 changed files with 174 additions and 7 deletions
164
src/amstrad.c
164
src/amstrad.c
|
|
@ -11,6 +11,7 @@
|
||||||
|
|
||||||
static uint8_t amstrad_dead;
|
static uint8_t amstrad_dead;
|
||||||
int amstrad_latch = 0;
|
int amstrad_latch = 0;
|
||||||
|
static uint8_t amstrad_language;
|
||||||
|
|
||||||
uint8_t amstrad_read(uint16_t port, void *priv)
|
uint8_t amstrad_read(uint16_t port, void *priv)
|
||||||
{
|
{
|
||||||
|
|
@ -22,7 +23,7 @@ uint8_t amstrad_read(uint16_t port, void *priv)
|
||||||
case 0x378:
|
case 0x378:
|
||||||
return lpt1_read(port, NULL);
|
return lpt1_read(port, NULL);
|
||||||
case 0x379:
|
case 0x379:
|
||||||
return lpt1_read(port, NULL) | 7;
|
return lpt1_read(port, NULL) | (amstrad_language & 7);
|
||||||
case 0x37a:
|
case 0x37a:
|
||||||
temp = lpt1_read(port, NULL) & 0x1f;
|
temp = lpt1_read(port, NULL) & 0x1f;
|
||||||
if (romset == ROM_PC1512) return temp | 0x20;
|
if (romset == ROM_PC1512) return temp | 0x20;
|
||||||
|
|
@ -164,4 +165,165 @@ void amstrad_init()
|
||||||
io_sethandler(0xdead, 0x0001, amstrad_read, NULL, NULL, amstrad_write, NULL, NULL, NULL);
|
io_sethandler(0xdead, 0x0001, amstrad_read, NULL, NULL, amstrad_write, NULL, NULL, NULL);
|
||||||
if ((romset == ROM_PC200 || romset == ROM_PPC512) && gfxcard != GFX_BUILTIN)
|
if ((romset == ROM_PC200 || romset == ROM_PPC512) && gfxcard != GFX_BUILTIN)
|
||||||
io_sethandler(0x03de, 0x0001, amstrad_read, NULL, NULL, amstrad_write, NULL, NULL, NULL);
|
io_sethandler(0x03de, 0x0001, amstrad_read, NULL, NULL, amstrad_write, NULL, NULL, NULL);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void *ams1512_init()
|
||||||
|
{
|
||||||
|
amstrad_language = device_get_config_int("language");
|
||||||
|
return &amstrad_language;
|
||||||
|
}
|
||||||
|
|
||||||
|
device_config_t ams1512_config[] =
|
||||||
|
{
|
||||||
|
{
|
||||||
|
.name = "language",
|
||||||
|
.description = "BIOS language",
|
||||||
|
.type = CONFIG_SELECTION,
|
||||||
|
.selection =
|
||||||
|
{
|
||||||
|
{
|
||||||
|
.description = "English",
|
||||||
|
.value = 7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.description = "German",
|
||||||
|
.value = 6
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.description = "French",
|
||||||
|
.value = 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.description = "Spanish",
|
||||||
|
.value = 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.description = "Danish",
|
||||||
|
.value = 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.description = "Swedish",
|
||||||
|
.value = 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.description = "Italian",
|
||||||
|
.value = 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.description = "Diagnostic mode",
|
||||||
|
.value = 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.description = ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.default_int = 7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.type = -1
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
device_config_t ams2086_config[] =
|
||||||
|
{
|
||||||
|
{
|
||||||
|
.name = "language",
|
||||||
|
.description = "BIOS language",
|
||||||
|
.type = CONFIG_SELECTION,
|
||||||
|
.selection =
|
||||||
|
{
|
||||||
|
{
|
||||||
|
.description = "English",
|
||||||
|
.value = 7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.description = "Diagnostic mode",
|
||||||
|
.value = 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.description = ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.default_int = 7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.type = -1
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
device_config_t ams3086_config[] =
|
||||||
|
{
|
||||||
|
{
|
||||||
|
.name = "language",
|
||||||
|
.description = "BIOS language",
|
||||||
|
.type = CONFIG_SELECTION,
|
||||||
|
.selection =
|
||||||
|
{
|
||||||
|
{
|
||||||
|
.description = "English",
|
||||||
|
.value = 7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.description = "Diagnostic mode",
|
||||||
|
.value = 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.description = ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.default_int = 7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.type = -1
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
device_t ams1512_device =
|
||||||
|
{
|
||||||
|
"Amstrad PC1512 (BIOS)",
|
||||||
|
0,
|
||||||
|
ams1512_init,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
ams1512_config
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
device_t ams2086_device =
|
||||||
|
{
|
||||||
|
"Amstrad PC2086 (BIOS)",
|
||||||
|
0,
|
||||||
|
ams1512_init,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
ams2086_config
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
device_t ams3086_device =
|
||||||
|
{
|
||||||
|
"Amstrad PC3086 (BIOS)",
|
||||||
|
0,
|
||||||
|
ams1512_init,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
ams3086_config
|
||||||
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,15 @@
|
||||||
#include "mouse.h"
|
#include "mouse.h"
|
||||||
|
#include "device.h"
|
||||||
|
|
||||||
void amstrad_init();
|
void amstrad_init();
|
||||||
|
|
||||||
extern mouse_t mouse_amstrad;
|
extern mouse_t mouse_amstrad;
|
||||||
extern int amstrad_latch;
|
extern int amstrad_latch;
|
||||||
|
|
||||||
|
extern device_t ams1512_device;
|
||||||
|
extern device_t ams2086_device;
|
||||||
|
extern device_t ams3086_device;
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
AMSTRAD_NOLATCH,
|
AMSTRAD_NOLATCH,
|
||||||
|
|
|
||||||
12
src/model.c
12
src/model.c
|
|
@ -156,13 +156,13 @@ MODEL models[] =
|
||||||
{"[8088] Zenith Data SupersPort", ROM_ZD_SUPERS, "zdsupers", { {"", cpus_8088}, {"", NULL}, {"", NULL}}, MODEL_GFX_NONE, 128, 640, 128, xt_zenith_init, NULL},
|
{"[8088] Zenith Data SupersPort", ROM_ZD_SUPERS, "zdsupers", { {"", cpus_8088}, {"", NULL}, {"", NULL}}, MODEL_GFX_NONE, 128, 640, 128, xt_zenith_init, NULL},
|
||||||
{"[8088] Xi8088", ROM_XI8088, "xi8088", { {"", cpus_8088}, {"", NULL}, {"", NULL}}, MODEL_GFX_NONE|MODEL_AT|MODEL_PS2, 64, 1024, 128, xt_xi8088_init, &xi8088_device},
|
{"[8088] Xi8088", ROM_XI8088, "xi8088", { {"", cpus_8088}, {"", NULL}, {"", NULL}}, MODEL_GFX_NONE|MODEL_AT|MODEL_PS2, 64, 1024, 128, xt_xi8088_init, &xi8088_device},
|
||||||
|
|
||||||
{"[8086] Amstrad PC1512", ROM_PC1512, "pc1512", { {"", cpus_pc1512}, {"", NULL}, {"", NULL}}, MODEL_GFX_FIXED|MODEL_AMSTRAD, 512, 640, 128, ams_init, NULL},
|
{"[8086] Amstrad PC1512", ROM_PC1512, "pc1512", { {"", cpus_pc1512}, {"", NULL}, {"", NULL}}, MODEL_GFX_FIXED|MODEL_AMSTRAD, 512, 640, 128, ams_init, &ams1512_device},
|
||||||
{"[8086] Amstrad PC1640", ROM_PC1640, "pc1640", { {"", cpus_8086}, {"", NULL}, {"", NULL}}, MODEL_GFX_DISABLE_HW|MODEL_AMSTRAD, 640, 640, 0, ams_init, NULL},
|
{"[8086] Amstrad PC1640", ROM_PC1640, "pc1640", { {"", cpus_8086}, {"", NULL}, {"", NULL}}, MODEL_GFX_DISABLE_HW|MODEL_AMSTRAD, 640, 640, 0, ams_init, &ams1512_device},
|
||||||
{"[8086] Amstrad PC2086", ROM_PC2086, "pc2086", { {"", cpus_8086}, {"", NULL}, {"", NULL}}, MODEL_GFX_DISABLE_HW|MODEL_AMSTRAD, 640, 640, 0, ams_init, NULL},
|
{"[8086] Amstrad PC2086", ROM_PC2086, "pc2086", { {"", cpus_8086}, {"", NULL}, {"", NULL}}, MODEL_GFX_DISABLE_HW|MODEL_AMSTRAD, 640, 640, 0, ams_init, &ams2086_device},
|
||||||
{"[8086] Amstrad PC3086", ROM_PC3086, "pc3086", { {"", cpus_8086}, {"", NULL}, {"", NULL}}, MODEL_GFX_DISABLE_HW|MODEL_AMSTRAD, 640, 640, 0, ams_init, NULL},
|
{"[8086] Amstrad PC3086", ROM_PC3086, "pc3086", { {"", cpus_8086}, {"", NULL}, {"", NULL}}, MODEL_GFX_DISABLE_HW|MODEL_AMSTRAD, 640, 640, 0, ams_init, &ams3086_device},
|
||||||
{"[8086] Amstrad PPC512/640", ROM_PPC512, "ppc512", { {"", cpus_8086}, {"", NULL}, {"", NULL}}, MODEL_GFX_DISABLE_HW|MODEL_AMSTRAD, 512, 640, 128, ams_init, NULL},
|
{"[8086] Amstrad PPC512/640", ROM_PPC512, "ppc512", { {"", cpus_8086}, {"", NULL}, {"", NULL}}, MODEL_GFX_DISABLE_HW|MODEL_AMSTRAD, 512, 640, 128, ams_init, &ams1512_device},
|
||||||
{"[8086] Olivetti M24", ROM_OLIM24, "olivetti_m24", { {"", cpus_8086}, {"", NULL}, {"", NULL}}, MODEL_GFX_FIXED|MODEL_OLIM24, 128, 640, 128, olim24_init, NULL},
|
{"[8086] Olivetti M24", ROM_OLIM24, "olivetti_m24", { {"", cpus_8086}, {"", NULL}, {"", NULL}}, MODEL_GFX_FIXED|MODEL_OLIM24, 128, 640, 128, olim24_init, NULL},
|
||||||
{"[8086] Sinclair PC200", ROM_PC200, "pc200", { {"", cpus_8086}, {"", NULL}, {"", NULL}}, MODEL_GFX_DISABLE_HW|MODEL_AMSTRAD, 512, 640, 128, ams_init, NULL},
|
{"[8086] Sinclair PC200", ROM_PC200, "pc200", { {"", cpus_8086}, {"", NULL}, {"", NULL}}, MODEL_GFX_DISABLE_HW|MODEL_AMSTRAD, 512, 640, 128, ams_init, &ams1512_device},
|
||||||
{"[8086] Tandy 1000 SL/2", ROM_TANDY1000SL2, "tandy1000sl2", { {"", cpus_8086}, {"", NULL}, {"", NULL}}, MODEL_GFX_FIXED, 512, 768, 128, tandy1ksl2_init, NULL},
|
{"[8086] Tandy 1000 SL/2", ROM_TANDY1000SL2, "tandy1000sl2", { {"", cpus_8086}, {"", NULL}, {"", NULL}}, MODEL_GFX_FIXED, 512, 768, 128, tandy1ksl2_init, NULL},
|
||||||
{"[8088] Toshiba T1200", ROM_T1200, "t1200", { {"", cpus_8086}, {"", NULL}, {"", NULL}}, MODEL_GFX_FIXED, 1024, 2048,1024, xt_t1200_init, NULL},
|
{"[8088] Toshiba T1200", ROM_T1200, "t1200", { {"", cpus_8086}, {"", NULL}, {"", NULL}}, MODEL_GFX_FIXED, 1024, 2048,1024, xt_t1200_init, NULL},
|
||||||
{"[8086] VTech Laser XT3", ROM_LXT3, "lxt3", { {"", cpus_8086}, {"", NULL}, {"", NULL}}, MODEL_GFX_NONE, 512, 1152, 128, xt_laserxt_init, NULL},
|
{"[8086] VTech Laser XT3", ROM_LXT3, "lxt3", { {"", cpus_8086}, {"", NULL}, {"", NULL}}, MODEL_GFX_NONE, 512, 1152, 128, xt_laserxt_init, NULL},
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue