12 if (!length) { $_= <DATA>; last unless length; $_.=' '; s/^\s+//; }
15 } elsif (s/^\-\s+//) {
17 } elsif (s/^[ABCDE]\s+//) {
18 $port= ord($&) - ord('A');
19 } elsif (s/^([0-7])\s+//) {
20 die unless defined $port;
21 $pins[$cpin++]= sprintf "%d,%d,0x%02x",
29 print "our (\%pin_info,\%kind_count);\n"
32 $kinds= 'pt|sense|reverse';
34 open B, "../pcb/$board.net" or die $!;
36 if (s/\\$//) { $_.= <B>; }
37 m/^(\w+)\s+[A-Z]\w+\s+([-_A-Z0-9 \t]+)$/;
38 $net= $1; $pins= $2; $pin= undef;
39 map { $pin=$1 if m/PIC-(\d+)/; } split /\s+/, $pins;
40 next unless defined $pin;
41 next unless $net =~ m/^(?:.*__)?($kinds)(\d+)(?:__.*)?$/;
43 die "$pin $kind $num ?" unless defined $pins[$pin];
44 print "\$pin_info{'$board'}{'$kind'}[$num]= '$pins[$pin]';\n"
46 $count{$kind}= $num+1 if $num>=$count{$kind};
50 for $kind (split /\|/, $kinds) {
51 printf("\$kind_count{'%s'}{'%s'}= %d;\n",
52 $board, $kind, $count{$kind})