summaryrefslogtreecommitdiff
path: root/emulators/pcemu/files/patch-ab
diff options
context:
space:
mode:
authorJoerg Wunsch <joerg@FreeBSD.org>1995-03-27 21:35:21 +0000
committerJoerg Wunsch <joerg@FreeBSD.org>1995-03-27 21:35:21 +0000
commit869622ad387690d0689907e61b2eadd0cedaf7bc (patch)
treec63434170244083265d9ddf8c447e2a75c961f26 /emulators/pcemu/files/patch-ab
parentAdd MAINTAINER. Yes, I know I screwed up the Submitted by: line on the (diff)
This is David Hedley's pcemu 8086 PC emulator.
Technically, i consider this an excellent work. I've made some efforts to make it easier for people get it actually up & running. This would have required an image of a DOS boot floppy, which we cannot provide. Instead, i wrote a small bootstrap loader (basically a small more(1) clone with builtin text) that can be ``booted'' from. It instructs the user how to get the image of a bootable DOS floppy, and where to find the various files. (The bootstrap loader requires bcc to be recompiled, but i'm providing a gzip'ed/uuencoded version in the files directory as well.) The pkg directory is not yet done. Will follow RSN. :)
Diffstat (limited to 'emulators/pcemu/files/patch-ab')
-rw-r--r--emulators/pcemu/files/patch-ab79
1 files changed, 79 insertions, 0 deletions
diff --git a/emulators/pcemu/files/patch-ab b/emulators/pcemu/files/patch-ab
new file mode 100644
index 000000000000..877cfdbaa53f
--- /dev/null
+++ b/emulators/pcemu/files/patch-ab
@@ -0,0 +1,79 @@
+*** cpu.c.orig Wed Jun 22 16:24:50 1994
+--- cpu.c Tue Jan 24 18:37:17 1995
+***************
+*** 1127,1132 ****
+--- 1127,1133 ----
+
+ static INLINE2 void i_daa(void)
+ {
++ /* Opcode 0x27 */
+ if (AF || ((*bregs[AL] & 0xf) > 9))
+ {
+ *bregs[AL] += 6;
+***************
+*** 1300,1305 ****
+--- 1301,1330 ----
+ c_ss = SegToMemPtr(SS);
+ }
+
++ static INLINE2 void i_das(void)
++ {
++ /* Opcode 0x2f */
++ if (AF || ((*bregs[AL] & 0xf) > 9))
++ {
++ *bregs[AL] -= 6;
++ AF = 1;
++ }
++ else
++ AF = 0;
++
++ if (CF || (*bregs[AL] > 0x9f))
++ {
++ *bregs[AL] -= 0x60;
++ CF = 1;
++ }
++ else
++ CF = 0;
++
++ SetPF(*bregs[AL]);
++ SetSFB(*bregs[AL]);
++ SetZFB(*bregs[AL]);
++ }
++
+
+ /* most XOR instructions go here */
+
+***************
+*** 4140,4146 ****
+ {
+ fprintf(stderr,"Error: Unimplemented opcode %02X at cs:ip = %04X:%04X\n",
+ c_cs[ip-1],sregs[CS],ip-1);
+! exit(1);
+ }
+
+
+--- 4165,4171 ----
+ {
+ fprintf(stderr,"Error: Unimplemented opcode %02X at cs:ip = %04X:%04X\n",
+ c_cs[ip-1],sregs[CS],ip-1);
+! /* exit(1); */
+ }
+
+
+***************
+*** 4218,4224 ****
+ case 0x2c: i_sub_ald8(); break;
+ case 0x2d: i_sub_axd16(); break;
+ case 0x2e: i_cs(); break;
+! case 0x2f: i_notdone(); break;
+ case 0x30: i_xor_br8(); break;
+ case 0x31: i_xor_wr16(); break;
+ case 0x32: i_xor_r8b(); break;
+--- 4243,4249 ----
+ case 0x2c: i_sub_ald8(); break;
+ case 0x2d: i_sub_axd16(); break;
+ case 0x2e: i_cs(); break;
+! case 0x2f: i_das(); break;
+ case 0x30: i_xor_br8(); break;
+ case 0x31: i_xor_wr16(); break;
+ case 0x32: i_xor_r8b(); break;