freesci-develop
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[freesci-develop] r1573 - freesci/branches/glutton/src/engine


From: freesci
Subject: [freesci-develop] r1573 - freesci/branches/glutton/src/engine
Date: Mon, 22 May 2006 19:33:08 +0200

Author: skovmanden
Date: 2006-05-22 19:33:04 +0200 (Mon, 22 May 2006)
New Revision: 1573

Modified:
   freesci/branches/glutton/src/engine/vm.c
Log:
More conversation system improvements.

Lars



Modified: freesci/branches/glutton/src/engine/vm.c
===================================================================
--- freesci/branches/glutton/src/engine/vm.c    2006-05-22 15:29:21 UTC (rev 
1572)
+++ freesci/branches/glutton/src/engine/vm.c    2006-05-22 17:33:04 UTC (rev 
1573)
@@ -992,25 +992,40 @@
                case 0x13: /* ugt? */
                        s->r_prev = s->r_acc;
                        r_temp = POP32();
-                       s->r_acc = make_reg(0, (r_temp.segment == 
s->r_acc.segment) && r_temp.offset > s->r_acc.offset);
+
+                       if (s->r_acc.segment == 0 &&
+                           s->r_acc.offset == 1000)
+                               s->r_acc = make_reg(0, r_temp.segment != 0); 
else
+                                       s->r_acc = make_reg(0, (r_temp.segment 
== s->r_acc.segment) && r_temp.offset > s->r_acc.offset);
                        break;
 
                case 0x14: /* uge? */
                        s->r_prev = s->r_acc;
                        r_temp = POP32();
-                       s->r_acc = make_reg(0, (r_temp.segment == 
s->r_acc.segment) && r_temp.offset >= s->r_acc.offset);
+
+                       if (s->r_acc.segment == 0 &&
+                           s->r_acc.offset == 1000)
+                               s->r_acc = make_reg(0, r_temp.segment != 0); 
else
+                                       s->r_acc = make_reg(0, (r_temp.segment 
== s->r_acc.segment) && r_temp.offset >= s->r_acc.offset);
                        break;
 
                case 0x15: /* ult? */
                        s->r_prev = s->r_acc;
                        r_temp = POP32();
-                       s->r_acc = make_reg(0, (r_temp.segment == 
s->r_acc.segment) && r_temp.offset < s->r_acc.offset);
+                       if (s->r_acc.segment == 0 &&
+                           s->r_acc.offset == 1000)
+                               s->r_acc = make_reg(0, r_temp.segment == 0); 
else
+                                       s->r_acc = make_reg(0, (r_temp.segment 
== s->r_acc.segment) && r_temp.offset < s->r_acc.offset);
                        break;
 
                case 0x16: /* ule? */
                        s->r_prev = s->r_acc;
                        r_temp = POP32();
-                       s->r_acc = make_reg(0, (r_temp.segment == 
s->r_acc.segment) && r_temp.offset <= s->r_acc.offset);
+
+                       if (s->r_acc.segment == 0 &&
+                           s->r_acc.offset == 1000)
+                               s->r_acc = make_reg(0, r_temp.segment == 0); 
else
+                                       s->r_acc = make_reg(0, (r_temp.segment 
== s->r_acc.segment) && r_temp.offset <= s->r_acc.offset);
                        break;
 
                case 0x17: /* bt */





reply via email to

[Prev in Thread] Current Thread [Next in Thread]