3 print("/* autogenerated - do not edit */\n");
7 if (m/^From host to PIC/) {
8 $dirn= '>'; $dname= "HOST2PIC";
9 } elsif (m/^From PIC to host/) {
10 $dirn= '<'; $dname= "PIC2HOST";
14 next unless defined $dirn;
15 next unless m/^ ([<>]) / && $1 eq $dirn;
17 die unless m/^ [<>] ([01A-Za-z. ]+?) +(\S.*)$/;
19 $rhs =~ s/^\([A-Z][0-9A-Z]+\) +//;
20 next if $rhs =~ m/^\}/;
21 next if $msg =~ m/\.\.\./;
22 $rhs =~ m/^([A-Z]+)\s/ or die "$rhs?";
25 if ($msg =~ m/^0[01]{7}$/) {
30 $ybit= substr($msg,0,8);
31 $ybit =~ y/Y01A-Z/10/;
32 $ybit =~ m/1.*1/ and die "$msg/$ybit?";
34 $msg =~ m/[A-Z]/ or die "$msg?";
37 die "$msg?" if $msg =~ m/[A-Z]/;
38 die "$msg?" unless $msg =~ m/^(1[01][01_]{6})0_{7}$/ or
39 $msg =~ m/^(0[01][01_]{6})$/;
41 die if $opcode =~ m/_[01]/;
45 $arglen= length $arglen;
46 $ybit= oct("0b$ybit");
48 for $yval ($ybit ? (0,1) : '') {
49 printf(" { %-16s 0x%02x, %2d },\n",
50 sprintf("\"%s%s\",",$cname, $yval),
51 oct("0b$opcode") | $ybit *$yval,