diff --git a/exec/load/dorkit.js b/exec/load/dorkit.js
index 4f143419ccf4dd14613e9b5dbd21006e59a225c6..c1a8d5eafed74c96e53cf9b509625136abd21210 100644
--- a/exec/load/dorkit.js
+++ b/exec/load/dorkit.js
@@ -131,12 +131,95 @@ var dk = {
 				}
 			}
 		},
+		ctrla_attr:function(code, attr) {
+			switch(code) {
+				case 'K':
+					attr.fg = Attribute.BLACK;
+					break;
+				case 'R':
+					attr.fg = Attribute.RED;
+					break;
+				case 'G':
+					attr.fg = Attribute.GREEN;
+					break;
+				case 'Y':
+					attr.fg = Attribute.YELLOW;
+					break;
+				case 'B':
+					attr.fg = Attribute.BLUE;
+					break;
+				case 'M':
+					attr.fg = Attribute.MAGENTA;
+					break;
+				case 'C':
+					attr.fg = Attribute.CYAN;
+					break;
+				case 'W':
+					attr.fg = Attribute.WHITE;
+					break;
+				case '0':
+					attr.bg = Attribute.BLACK;
+					break;
+				case '1':
+					attr.bg = Attribute.RED;
+					break;
+				case '2':
+					attr.bg = Attribute.GREEN;
+					break;
+				case '3':
+					attr.bg = Attribute.YELLOW;
+					break;
+				case '4':
+					attr.bg = Attribute.BLUE;
+					break;
+				case '5':
+					attr.bg = Attribute.MAGENTA;
+					break;
+				case '6':
+					attr.bg = Attribute.CYAN;
+					break;
+				case '7':
+					attr.bg = Attribute.WHITE;
+					break;
+				case 'H':
+					attr.bright = true;
+					break;
+				case 'I':
+					attr.blink = true;
+					break;
+				case 'N':
+					attr.value = 7;
+					break;
+				case '-':
+					if (attr.blink || attr.bright || attr.bg !== Attribute.BLACK)
+						attr.value = 7;
+					break;
+				case '_':
+					if (attr.blink || attr.bg !== Attribute.BLACK)
+						attr.value = 7;
+					break;
+			}
+		},
+
 		get attr() {
 			return this._attr;
 		},
 		set attr(val) {
-			if (typeof(val)=='object')
-				this._attr.value = val.value;
+			function handle_string(str, obj) {
+				var i;
+
+				for (i=0; i<val.length; i++)
+					obj.ctrla_attr(str[i], obj.attr);
+			}
+
+			if (typeof(val)=='object') {
+				if (val.constructor == String)
+					handle_string(val, this);
+				else
+					this._attr.value = val.value;
+			}
+			else if(typeof(val)=='string')
+				handle_string(val, this);
 			else
 				this._attr.value = val;
 		},
@@ -191,76 +274,12 @@ var dk = {
 			for (i=0; i<txt.length; i++) {
 				if (txt.charCodeAt(i)==1) {
 					i++;
-					switch(txt.substr(i, 1)) {
+					switch(txt[i]) {
 						case '\1':
 							ret += attr_str()+'\1';
 							break;
-						case 'K':
-							next_attr.fg = Attribute.BLACK;
-							break;
-						case 'R':
-							next_attr.fg = Attribute.RED;
-							break;
-						case 'G':
-							next_attr.fg = Attribute.GREEN;
-							break;
-						case 'Y':
-							next_attr.fg = Attribute.YELLOW;
-							break;
-						case 'B':
-							next_attr.fg = Attribute.BLUE;
-							break;
-						case 'M':
-							next_attr.fg = Attribute.MAGENTA;
-							break;
-						case 'C':
-							next_attr.fg = Attribute.CYAN;
-							break;
-						case 'W':
-							next_attr.fg = Attribute.WHITE;
-							break;
-						case '0':
-							next_attr.bg = Attribute.BLACK;
-							break;
-						case '1':
-							next_attr.bg = Attribute.RED;
-							break;
-						case '2':
-							next_attr.bg = Attribute.GREEN;
-							break;
-						case '3':
-							next_attr.bg = Attribute.YELLOW;
-							break;
-						case '4':
-							next_attr.bg = Attribute.BLUE;
-							break;
-						case '5':
-							next_attr.bg = Attribute.MAGENTA;
-							break;
-						case '6':
-							next_attr.bg = Attribute.CYAN;
-							break;
-						case '7':
-							next_attr.bg = Attribute.WHITE;
-							break;
-						case 'H':
-							next_attr.bright = true;
-							break;
-						case 'I':
-							next_attr.blink = true;
-							break;
-						case 'N':
-							next_attr.value = 7;
-							break;
-						case '-':
-							if (next_attr.blink || next_attr.bright || next_attr.bg !== Attribute.BLACK)
-								next_attr.value = 7;
-							break;
-						case '_':
-							if (next_attr.blink || next_attr.bg !== Attribute.BLACK)
-								next_attr.value = 7;
-							break;
 						default:
+							this.ctrla_attr(txt[i], next_attr);
 							break;
 					}
 				}