Index: app/src/tok/tok
===================================================================
--- app/src/tok/tok	(revision 20b4e44e7537762f6aceb72b039f6e8f8a50e201)
+++ app/src/tok/tok	(revision ac7d97018efb6419eb3d840b7767294d8be71ed8)
@@ -11,4 +11,6 @@
 use File::HomeDir;
 
+my $max_form_length = 50;
+
 my $interactive=0;
 my $help;
@@ -21,5 +23,5 @@
 my $file;
 foreach $file ($systemconfigfile, $userconfigfile){
-	if(open(CONFIG, $configfile1)){
+	if(open(CONFIG, $file)){
 		while (<CONFIG>) {
     			chomp;
@@ -75,15 +77,30 @@
 #	| [^[:print:]]	 (?{seg("B",$&)})
 
+sub min {
+  my ($val1, $val2) = @_;
+  if($val1 < $val2) {
+  	return $val1;
+  }
+  else {
+  	return $val2;
+  }
+}
+
 
 sub seg
 {
     my ($tag,$match) = @_;
-    my $len=length $match;
-    printf "%04d %02d %s ", $offset, $len, $tag;
+    my $length = length $match;
+    my $idx = 0;
+    while($idx < $length) {
+	my $l = min $max_form_length, $length - $idx;
+	my $m = substr $match, $idx, $l;
+    
+	printf "%04d %02d %s ", $offset + $idx, $l, $tag;
     if($tag eq 'S')
     {
-	for(my $i=0; $i<$len; ++$i)
+	for(my $i=0; $i<$l; ++$i)
 	{
-	    my $c = substr $match, $i, 1;
+	    my $c = substr $m, $i, 1;
 	    print '_' if $c eq ' ';
 	    print '\n' if $c eq "\n";
@@ -95,11 +112,14 @@
     elsif($tag eq 'B')
     {
-	printf "\\x%02X", ord($match);
+	printf "\\x%02X", ord($m);
     }
     else
     {
-	print $match;
+	print $m;
     }
     print "\n";
-    $offset += $len;
-}
+    $idx += $l;
+    } # while($idx < $length)
+    $offset += $length;
+} #sub seg
+
