Added Leading Edge Model M.
This commit is contained in:
parent
ee103457fa
commit
a552c25b32
4 changed files with 29 additions and 2 deletions
|
|
@ -257,6 +257,7 @@ enum
|
||||||
ROM_CBM_SL386SX25,
|
ROM_CBM_SL386SX25,
|
||||||
ROM_IBMPS1_2133_451,
|
ROM_IBMPS1_2133_451,
|
||||||
ROM_ECS_386_32,
|
ROM_ECS_386_32,
|
||||||
|
ROM_LEDGE_MODELM,
|
||||||
|
|
||||||
ROM_MAX
|
ROM_MAX
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -157,7 +157,7 @@ uint8_t keyboard_xt_read(uint16_t port, void *priv)
|
||||||
switch (port)
|
switch (port)
|
||||||
{
|
{
|
||||||
case 0x60:
|
case 0x60:
|
||||||
if ((romset == ROM_IBMPC) && (keyboard_xt.pb & 0x80))
|
if ((romset == ROM_IBMPC || romset == ROM_LEDGE_MODELM) && (keyboard_xt.pb & 0x80))
|
||||||
{
|
{
|
||||||
if (video_is_ega_vga())
|
if (video_is_ega_vga())
|
||||||
temp = 0x4D;
|
temp = 0x4D;
|
||||||
|
|
@ -190,7 +190,12 @@ uint8_t keyboard_xt_read(uint16_t port, void *priv)
|
||||||
else
|
else
|
||||||
temp = ((mem_size-64) / 32) >> 4;
|
temp = ((mem_size-64) / 32) >> 4;
|
||||||
|
|
||||||
temp |= (cassette_input()) ? 0x10 : 0;
|
temp |= (cassette_input()) ? 0x10 : 0;
|
||||||
|
}
|
||||||
|
else if (romset == ROM_LEDGE_MODELM)
|
||||||
|
{
|
||||||
|
/*High bit of memory size is read from port 0xa0*/
|
||||||
|
temp = ((mem_size-64) / 32) & 0xf;
|
||||||
}
|
}
|
||||||
else if (romset == ROM_ATARIPC3)
|
else if (romset == ROM_ATARIPC3)
|
||||||
{
|
{
|
||||||
|
|
@ -227,6 +232,16 @@ uint8_t keyboard_xt_read(uint16_t port, void *priv)
|
||||||
return temp;
|
return temp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static uint8_t ledge_modelm_read(uint16_t port, void *p)
|
||||||
|
{
|
||||||
|
uint8_t temp = 0;
|
||||||
|
|
||||||
|
if (((mem_size-64) / 32) >> 4)
|
||||||
|
temp |= 0x40;
|
||||||
|
|
||||||
|
return temp;
|
||||||
|
}
|
||||||
|
|
||||||
void keyboard_xt_reset()
|
void keyboard_xt_reset()
|
||||||
{
|
{
|
||||||
keyboard_xt.wantirq = 0;
|
keyboard_xt.wantirq = 0;
|
||||||
|
|
@ -238,6 +253,8 @@ void keyboard_xt_init()
|
||||||
{
|
{
|
||||||
//return;
|
//return;
|
||||||
io_sethandler(0x0060, 0x0004, keyboard_xt_read, NULL, NULL, keyboard_xt_write, NULL, NULL, NULL);
|
io_sethandler(0x0060, 0x0004, keyboard_xt_read, NULL, NULL, keyboard_xt_write, NULL, NULL, NULL);
|
||||||
|
if (romset == ROM_LEDGE_MODELM)
|
||||||
|
io_sethandler(0x00a0, 0x0001, ledge_modelm_read, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||||
keyboard_xt_reset();
|
keyboard_xt_reset();
|
||||||
keyboard_send = keyboard_xt_adddata;
|
keyboard_send = keyboard_xt_adddata;
|
||||||
keyboard_poll = keyboard_xt_poll;
|
keyboard_poll = keyboard_xt_poll;
|
||||||
|
|
|
||||||
|
|
@ -1064,6 +1064,14 @@ int loadbios()
|
||||||
fclose(ff);
|
fclose(ff);
|
||||||
fclose(f);
|
fclose(f);
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
case ROM_LEDGE_MODELM:
|
||||||
|
f = romfopen("leadingedge_modelm/Leading Edge - Model M - BIOS ROM - Version 4.71.bin","rb");
|
||||||
|
if (!f) break;
|
||||||
|
romfread(rom, 0x4000, 1, f);
|
||||||
|
fclose(f);
|
||||||
|
biosmask = 0x3fff;
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
printf("Failed to load ROM!\n");
|
printf("Failed to load ROM!\n");
|
||||||
if (f) fclose(f);
|
if (f) fclose(f);
|
||||||
|
|
|
||||||
|
|
@ -144,6 +144,7 @@ MODEL models[] =
|
||||||
{"[8088] IBM PCjr", ROM_IBMPCJR, "ibmpcjr", { {"", cpus_pcjr}, {"", NULL}, {"", NULL}}, MODEL_GFX_FIXED, 128, 640, 64, pcjr_init, &pcjr_device},
|
{"[8088] IBM PCjr", ROM_IBMPCJR, "ibmpcjr", { {"", cpus_pcjr}, {"", NULL}, {"", NULL}}, MODEL_GFX_FIXED, 128, 640, 64, pcjr_init, &pcjr_device},
|
||||||
{"[8088] IBM XT", ROM_IBMXT, "ibmxt", { {"", cpus_8088}, {"", NULL}, {"", NULL}}, MODEL_GFX_NONE, 64, 640, 64, xt_init, NULL},
|
{"[8088] IBM XT", ROM_IBMXT, "ibmxt", { {"", cpus_8088}, {"", NULL}, {"", NULL}}, MODEL_GFX_NONE, 64, 640, 64, xt_init, NULL},
|
||||||
{"[8088] Juko XT clone", ROM_JUKOPC, "jukopc", { {"", cpus_8088}, {"", NULL}, {"", NULL}}, MODEL_GFX_NONE, 64, 640, 64, xt_init, NULL},
|
{"[8088] Juko XT clone", ROM_JUKOPC, "jukopc", { {"", cpus_8088}, {"", NULL}, {"", NULL}}, MODEL_GFX_NONE, 64, 640, 64, xt_init, NULL},
|
||||||
|
{"[8088] Leading Edge Model M", ROM_LEDGE_MODELM, "ledge_modelm", { {"", cpus_8088}, {"", NULL}, {"", NULL}}, MODEL_GFX_NONE, 128, 704, 64, xt_init, NULL},
|
||||||
{"[8088] NCR PC4i", ROM_NCR_PC4I, "ncr_pc4i", { {"", cpus_8088}, {"", NULL}, {"", NULL}}, MODEL_GFX_NONE, 256, 640, 64, xt_init, NULL},
|
{"[8088] NCR PC4i", ROM_NCR_PC4I, "ncr_pc4i", { {"", cpus_8088}, {"", NULL}, {"", NULL}}, MODEL_GFX_NONE, 256, 640, 64, xt_init, NULL},
|
||||||
{"[8088] Phoenix XT clone", ROM_PXXT, "pxxt", { {"", cpus_8088}, {"", NULL}, {"", NULL}}, MODEL_GFX_NONE, 64, 640, 64, xt_init, NULL},
|
{"[8088] Phoenix XT clone", ROM_PXXT, "pxxt", { {"", cpus_8088}, {"", NULL}, {"", NULL}}, MODEL_GFX_NONE, 64, 640, 64, xt_init, NULL},
|
||||||
{"[8088] Schneider EuroPC", ROM_EUROPC, "europc", { {"", cpus_europc}, {"", NULL}, {"", NULL}}, MODEL_GFX_NONE, 512, 640, 128, europc_init, NULL},
|
{"[8088] Schneider EuroPC", ROM_EUROPC, "europc", { {"", cpus_europc}, {"", NULL}, {"", NULL}}, MODEL_GFX_NONE, 512, 640, 128, europc_init, NULL},
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue