1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
|
#!@PERL@
while (<>) {
$stuff .= $_;
}
$OFFS=$ENV{"OFFS"};
$GRX=$ENV{"GRX"};
%seqtable = ( "@", 0,
"\x0d", 0,
"[K", 4,
"(a", "VARIABLE",
"(b", "VARIABLE",
"(c", "VARIABLE",
"(d", "VARIABLE",
"(e", "GRAPHICS",
"(l", "VARIABLE",
"(m", "VARIABLE",
"(p", "VARIABLE",
"(q", "VARIABLE",
"(r", "VARIABLE",
"(t", "VARIABLE",
"(v", "VARIABLE",
"(w", "VARIABLE",
"(A", "GRAPHICS",
"\\", 2,
"\$", 2,
"(\\", "VARIABLE",
"(C", "VARIABLE",
"(F", "GRAPHICS",
"(I", "VARIABLE",
"(J", "VARIABLE",
"(L", "VARIABLE",
"(P", "VARIABLE",
"(T", "VARIABLE",
".", "SPECIAL",
"i", "SPECIAL1"
);
$esc = "\033";
$skipcount = 0;
$curpos = 0;
$verbose = 1;
while ($stuff ne "") {
if ($stuff=~ s/^(BJLSTART.+BJLEND?)//sm) {
printf "\n$1";
$curpos+= length($1);
} elsif (substr($stuff, 0, 1) eq "\xa") {
print "<a";
$curpos++;
substr($stuff, 0, 1) = "";
} elsif (substr($stuff, 0, 1) eq "\xd") {
print "<d" if ($GRX);
$curpos++;
substr($stuff, 0, 1) = "";
} elsif (substr($stuff, 0, 1) eq "$esc") {
$found = 0;
foreach $key (keys %seqtable) {
if (substr($stuff, 1, length $key) eq $key) {
$skipchars = $seqtable{$key};
if ($skipchars eq "GRAPHICS") {
if ($GRX) {
print "\n";
printf "%08x ", $curpos if ($OFFS);
print "1b ";
}
$startoff = 0;
$lchar = substr($stuff, (length $key) + 1, 1);
$nlchar = unpack("C", $lchar);
$hchar = substr($stuff, (length $key) + 2, 1);
$nhchar = unpack("C", $hchar);
$skipchars = ($nhchar * 256) + $nlchar;
$startoff = 2;
if ($GRX) {
for ($i = 0;
$i < $skipchars + (length $key) + $startoff;
$i++) {
$char = substr($stuff, $i + 1, 1);
$nchar = unpack("C", $char);
if ($i < 2 && $nchar >= 32 && $nchar < 127) {
print "$char ";
} elsif ($i==4 && $nchar >= 32 && $nchar < 127) {
print "$char$char ";
} else {
printf "%02x ", unpack("C", $char);
}
}
}
$found = 1;
} else {
print "\n";
printf "%08x ", $curpos if ($OFFS);
print "1b ";
$startoff = 0;
if ($skipchars eq "VARIABLE") {
$lchar = substr($stuff, (length $key) + 1, 1);
$nlchar = unpack("C", $lchar);
$hchar = substr($stuff, (length $key) + 2, 1);
$nhchar = unpack("C", $hchar);
$skipchars = ($nhchar * 256) + $nlchar;
$startoff = 2;
}
for ($i = 0;
$i < $skipchars + (length $key) + $startoff;
$i++) {
$char = substr($stuff, $i + 1, 1);
$nchar = unpack("C", $char);
if ($i < 2 && $nchar >= 32 && $nchar < 127) {
print "$char ";
} else {
printf "%02x ", unpack("C", $char);
}
}
$found = 1;
}
$bytes = length($key) + 1 + $skipchars + $startoff;
last;
}
}
if (! $found) {
print "\n";
printf "%08x ", $curpos if ($OFFS);
print "1b ";
substr($stuff, 0, 1) = "";
$curpos += 1;
} elsif ($found == 1) {
substr($stuff, 0, $bytes) = "";
$curpos += $bytes;
} else {
}
} else {
$char = substr($stuff, 0, 1);
$nchar = unpack("C", $char);
if ($nchar >= 32 && $nchar < 127) {
print "*$char ";
} else {
printf "*%02x ", unpack("C", $char);
}
$curpos++;
substr($stuff, 0, 1) = "";
}
}
|