Commit Diff


commit - ec7985638c8c74b6456c80f310a75fd79dcec1a1
commit + c4aaef473baa5b3e4899eb975e11601c380ae31f
blob - e11f53c3a7c2cb3d68f58c1966d86f579f3545cb
blob + bb722db4d2801d77445456d8c2a9d07ba04c03bc
--- de/mud/terminal/vt320.java
+++ de/mud/terminal/vt320.java
@@ -446,7 +446,7 @@ public abstract class vt320 extends VDU implements Key
   boolean  useibmcharset = false;
 
   int  lastwaslf = 0;
-  boolean  usedcharsets  = false;
+  boolean usedcharsets  = false;
 
   private final static char ESC = 27;
   private final static char IND = 132;
@@ -1117,8 +1117,8 @@ public abstract class vt320 extends VDU implements Key
         System.out.println("char > 255:"+(int)c);
       //return;
     }
-    
 
+
     switch (term_state) {
     case TSTATE_DATA:
       /* FIXME: we shouldn't use chars with bit 8 set if ibmcharset.
@@ -2160,16 +2160,32 @@ public abstract class vt320 extends VDU implements Key
             if (DCEvar>0)
               attributes =0;
             break;
+          case 1:
+	    attributes |= BOLD;
+	    attributes &= ~LOW;
+	    break;
 	  case 2:
-	    attributes |= LOW;
+	    if ((DCEvar >= 2) && (i==0)) {
+	      /* SCO mode */
+	      int ncolor;
+              attributes &= ~(0x7f8|BOLD);
+
+	      ncolor = DCEvars[1];
+	      ncolor = ((ncolor&1)<<2)|(ncolor&2)|((ncolor&4)>>2);
+              attributes |= ((ncolor)+1)<<3;
+	      if ((ncolor & 8)==8)
+	        attributes |= BOLD;
+	      ncolor = DCEvars[2];
+	      ncolor = ((ncolor&1)<<2)|(ncolor&2)|((ncolor&4)>>2);
+              attributes |= ((ncolor)+1)<<7;
+	      i+=2;
+	    } else {
+	      attributes |= LOW;
+	    }
 	    break;
           case 4:
             attributes |= UNDERLINE;
             break;
-          case 1:
-            attributes |= BOLD;
-	    attributes &= ~LOW;
-            break;
           case 7:
             attributes |= INVERT;
             break;