#!/usr/bin/tclsh set el_filt {<([a-zA-Z0-9]+)>([^<]+)} proc save_comp {} { global outf elem if {$elem(element) == 0} { ;# 'Discrete' if {$elem(iscap) == 0} { ;# Inductance puts $outf " 0" puts $outf " $elem(val)" } else { ;# Capacitor puts $outf " 1" puts $outf " $elem(val)" } } else { puts $outf " [expr $elem(element)+3]" puts $outf " $elem(val)" } puts $outf " [expr $elem(connection) % 256]" foreach typ {useloss z0 vf loss1 mhz1 loss2 mhz2} { puts $outf " <$typ>$elem($typ)" } } if {$argc != 2} { puts "Converts old (0.8.x) circuit files into the new (0.9.x) format." puts "Usage:" puts " conv0809 oldfile newfile" puts "" exit } set infn [lindex $argv 0] set outfn [lindex $argv 1] set inf [open $infn r] set outf [open $outfn w] set mode COPY while {![eof $inf]} { set line [gets $inf] switch $mode { COPY { puts $outf $line if {[regexp "" $line]} { set mode ELEM } } ELEM { if {[regexp $el_filt $line dummy entry val exit]} { if {$entry == $exit} { set elem($entry) $val } } else { if {[regexp "" $line]} { save_comp puts $outf $line set mode COPY } } } } } close $inf close $outf