From 9283d0e1b0df221bab2f50952c5f685db5aada74 Mon Sep 17 00:00:00 2001 From: SarahW Date: Sat, 9 Sep 2017 11:45:02 +0100 Subject: [PATCH] Added Atari PC3 emulation. Patch from dns2k. --- src/ibm.h | 1 + src/keyboard_xt.c | 11 +++++++++++ src/mem.c | 7 +++++++ src/model.c | 1 + 4 files changed, 20 insertions(+) diff --git a/src/ibm.h b/src/ibm.h index e6c8cf3..a4ffc2d 100644 --- a/src/ibm.h +++ b/src/ibm.h @@ -428,6 +428,7 @@ enum ROM_IBMPS2_M50, ROM_IBMPS2_M55SX, ROM_IBMPS2_M80, + ROM_ATARIPC3, ROM_MAX }; diff --git a/src/keyboard_xt.c b/src/keyboard_xt.c index d7e69bd..b579e68 100644 --- a/src/keyboard_xt.c +++ b/src/keyboard_xt.c @@ -116,6 +116,10 @@ uint8_t keyboard_xt_read(uint16_t port, void *priv) else temp = 0x6D; } + else if ((romset == ROM_ATARIPC3) && (keyboard_xt.pb & 0x80)) + { + temp = 0x7f; + } else { temp = keyboard_xt.pa; @@ -144,6 +148,13 @@ uint8_t keyboard_xt_read(uint16_t port, void *priv) else temp = ((mem_size-64) / 32) >> 4; } + else if (romset == ROM_ATARIPC3) + { + if (keyboard_xt.pb & 0x04) + temp = 0xf; + else + temp = 4; + } else { if (keyboard_xt.pb & 0x08) diff --git a/src/mem.c b/src/mem.c index a731ddd..30076c0 100644 --- a/src/mem.c +++ b/src/mem.c @@ -669,6 +669,13 @@ int loadbios() fclose(f); biosmask = 0x1ffff; return 1; + + case ROM_ATARIPC3: + f=romfopen("ataripc3/AWARD_ATARI_PC_BIOS_3.08.BIN","rb"); + if (!f) break; + fread(rom+0x8000,32768,1,f); + fclose(f); + return 1; } printf("Failed to load ROM!\n"); if (f) fclose(f); diff --git a/src/model.c b/src/model.c index eaa424b..f3798cc 100644 --- a/src/model.c +++ b/src/model.c @@ -96,6 +96,7 @@ int AMSTRAD, AT, PCI, TANDY; MODEL models[] = { {"[8088] AMI XT clone", ROM_AMIXT, "amixt", { {"", cpus_8088}, {"", NULL}, {"", NULL}}, 0, 0, 64, 640, 64, xt_init, NULL}, + {"[8088] Atari PC3", ROM_ATARIPC3, "ataripc3", { {"", cpus_8088}, {"", NULL}, {"", NULL}}, 0, 0, 64, 640, 64, xt_init, NULL}, {"[8088] DTK XT clone", ROM_DTKXT, "dtk", { {"", cpus_8088}, {"", NULL}, {"", NULL}}, 0, 0, 64, 640, 64, xt_init, NULL}, {"[8088] Generic XT clone", ROM_GENXT, "genxt", { {"", cpus_8088}, {"", NULL}, {"", NULL}}, 0, 0, 64, 640, 64, xt_init, NULL}, {"[8088] IBM PC", ROM_IBMPC, "ibmpc", { {"", cpus_8088}, {"", NULL}, {"", NULL}}, 0, 0, 64, 640, 32, xt_init, NULL},