mirror of
https://github.com/Stichting-MINIX-Research-Foundation/pkgsrc-ng.git
synced 2025-09-09 04:18:55 -04:00
71 lines
1.7 KiB
Plaintext
71 lines
1.7 KiB
Plaintext
$NetBSD: patch-ab,v 1.3 2004/07/09 12:45:23 wiz Exp $
|
|
|
|
--- cpu.c.orig 1994-06-22 16:24:50.000000000 +0200
|
|
+++ cpu.c
|
|
@@ -253,7 +253,7 @@ static INLINE2 void i_ ## name ## _axd16
|
|
|
|
|
|
#define JumpCond(name, cond) \
|
|
-static INLINE2 void i_j ## name ## (void) \
|
|
+static INLINE2 void i_j ## name (void) \
|
|
{ \
|
|
register int tmp = (int)((INT8)GetMemInc(c_cs,ip)); \
|
|
if (cond) ip = (WORD)(ip+tmp); \
|
|
@@ -1127,6 +1127,7 @@ static INLINE2 void i_es(void)
|
|
|
|
static INLINE2 void i_daa(void)
|
|
{
|
|
+ /* Opcode 0x27 */
|
|
if (AF || ((*bregs[AL] & 0xf) > 9))
|
|
{
|
|
*bregs[AL] += 6;
|
|
@@ -1300,6 +1301,30 @@ static INLINE2 void i_cs(void)
|
|
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,7 +4165,7 @@ static INLINE2 void i_notdone(void)
|
|
{
|
|
fprintf(stderr,"Error: Unimplemented opcode %02X at cs:ip = %04X:%04X\n",
|
|
c_cs[ip-1],sregs[CS],ip-1);
|
|
- exit(1);
|
|
+/* exit(1); */
|
|
}
|
|
|
|
|
|
@@ -4218,7 +4243,7 @@ void execute(void)
|
|
case 0x2c: i_sub_ald8(); break;
|
|
case 0x2d: i_sub_axd16(); break;
|
|
case 0x2e: i_cs(); break;
|
|
- case 0x2f: i_notdone(); break;
|
|
+ case 0x2f: i_das(); break;
|
|
case 0x30: i_xor_br8(); break;
|
|
case 0x31: i_xor_wr16(); break;
|
|
case 0x32: i_xor_r8b(); break;
|