#!/usr/bin/perl -w
+# usage   ../make-clocks [<input-file> ...] -Dmclock=khz -Dsclock=khz
 
 use strict qw(vars);
 use POSIX;
 
+sub p ($) { print $_[0] or die $!; }
+
 our (%defs);
+
+p("; autogenerated - do not edit\n");
+p("; $0 @ARGV\n");
 while ($ARGV[$#ARGV] =~ m/^\-/) {
-    $_ = pop @argv;
+    $_ = pop @ARGV;
     last if m/^\-\-$/;
     die unless m/^\-D(\w+)\=(\w+)$/;
     $defs{$1}= $2;
 #                 ie  cycles = interval * foscscale * msclock / prescale
 #                 or  msclock = cycles * prescale / (foscscale * interval)
 
-sub p ($) { print $_[0] or die $!; }
-
 sub scaleable ($$$$$) {
     my ($width, $foscscale, $scalebitnums, $scales, $deadcycles) = @_;
     my ($maxcycles, $scalespec, $scalebits);
 sub do_T3ov { do_T13ov(3); }
 
 sub doline () {
-    my ($orgname,$mswant,$unit,$how);
+    my ($orgname,$mswant,$specd,$unit,$how);
     chomp;
     s/[;\#].*//;
     return unless m/^\S/;
     die "$_ ?" unless
        m/^(\w+)\s+(M|S|MS)\s+(\w+)\s+([0-9.]+)(s|ms|us|ns|Hz|kHz|MHz)$/;
     ($orgname,$mswant,$how,$interval,$unit) = ($1,$2,$3,$4,$5);
+    $specd= $interval.$unit;
     if ($unit =~ m/M/) { $interval *= 1.e6; }
     if ($unit =~ m/k/) { $interval *= 1.e3; }
     if ($unit =~ m/m/) { $interval *= 1.e-3; }
        die $msclock unless exists $defs{$msclock};
        $msclock= $defs{$msclock};
        $name = $orgname.'_'.($ms eq 'm' ? 'master' : 'slave');
-       p(";---------- $name ----------\n");
+       p(";---------- $name ($specd, $interval) ----------\n");
        &{ "do_$how" };
     }
 }