3 print("/* autogenerated - do not edit */\n");
11 if (m/^From host to PIC/) {
12 $dirn= '>'; begin("HOST2PIC");
13 } elsif (m/^From PIC to host/) {
14 $dirn= '<'; begin("PIC2HOST");
18 next unless defined $dirn;
19 next unless m/^ ([<>]) / && $1 eq $dirn;
21 die unless m/^ [<>] ([01A-Za-z. ]+?) +(\S.*)$/;
23 $rhs =~ s/^\([A-Z][0-9A-Z]+\) +//;
24 next if $rhs =~ m/^\}/;
25 next if $msg =~ m/\.\.\./;
26 $rhs =~ m/^([A-Z]+)\s/ or die "$rhs?";
29 if ($msg =~ m/^0[01]{7}$/) {
34 $ybit= substr($msg,0,8);
35 $ybit =~ y/Y01A-Z/10/;
36 $ybit =~ m/1.*1/ and die "$msg/$ybit?";
38 $msg =~ m/[A-Z]/ or die "$msg?";
41 die "$msg?" if $msg =~ m/[A-Z]/;
42 die "$msg?" unless $msg =~ m/^(1[01][01_]{6})0_{7}$/ or
43 $msg =~ m/^(0[01][01_]{6})$/;
45 die if $opcode =~ m/_[01]/;
49 $arglen= length $arglen;
50 $ybit= oct("0b$ybit");
52 for $yval ($ybit ? (0,1) : '') {
53 printf("%s_%d( %-12s 0x%02x, %2d )\n",
55 sprintf("%s%s,",$cname, $yval),
56 oct("0b$opcode") | $ybit *$yval,