diff --git a/src/xschem.tcl b/src/xschem.tcl index be51e0fc..a101497f 100644 --- a/src/xschem.tcl +++ b/src/xschem.tcl @@ -709,32 +709,40 @@ proc spaces {n {indent 4}} { # complex number operators # a + b proc cadd {a b} { - lassign $a ra ia - lassign $b rb ib + # lassign $a ra ia + # lassign $b rb ib + foreach {ra ia} $a break + foreach {rb ib} $b break set c [list [expr {$ra + $rb}] [expr {$ia + $ib}]] return $c } # a - b proc csub {a b} { - lassign $a ra ia - lassign $b rb ib + # lassign $a ra ia + # lassign $b rb ib + foreach {ra ia} $a break + foreach {rb ib} $b break set c [list [expr {$ra - $rb}] [expr {$ia - $ib}]] return $c } # a * b proc cmul {a b} { - lassign $a ra ia - lassign $b rb ib + # lassign $a ra ia + # lassign $b rb ib + foreach {ra ia} $a break + foreach {rb ib} $b break set c [list [expr {$ra * $rb - $ia * $ib}] [expr {$ra * $ib + $rb * $ia}]] return $c } # a / b proc cdiv {a b} { - lassign $a ra ia - lassign $b rb ib + # lassign $a ra ia + # lassign $b rb ib + foreach {ra ia} $a break + foreach {rb ib} $b break set ra [expr {double($ra)}] set ia [expr {double($ia)}] set rb [expr {double($rb)}] @@ -747,7 +755,8 @@ proc cdiv {a b} { # 1/b proc cinv {b} { - lassign $b rb ib + # lassign $b rb ib + foreach {rb ib} $b break set rb [expr {double($rb)}] set ib [expr {double($ib)}] set m [expr {$rb * $rb + $ib * $ib}] @@ -757,13 +766,15 @@ proc cinv {b} { # return real component proc creal {a} { - lassign $a ra ia + # lassign $a ra ia + foreach {ra ia} $a break return $ra } # return imaginary component proc cimag {a} { - lassign $a ra ia + # lassign $a ra ia + foreach {ra ia} $a break return $ia } @@ -4928,7 +4939,8 @@ proc insert_symbol_update_dirs {} { set insert_symbol(dirs) {} foreach f $files { - lassign $f ff fff + # lassign $f ff fff + foreach {ff fff} $f break ;# pre-tcl8.5 lappend insert_symbol(dirtails) $ff lappend insert_symbol(dirs) $fff } @@ -4983,7 +4995,8 @@ proc insert_symbol_filelist {} { set filelist {} set insert_symbol(fullpathlist) {} foreach f $files { - lassign $f ff fff + # lassign $f ff fff + foreach {ff fff} $f break ;# pre-tcl8.5 lappend filelist $ff lappend insert_symbol(fullpathlist) $fff } @@ -5313,10 +5326,15 @@ proc schpins_to_sympins {} { set texty0 [expr {$y0-4}] set textflip [expr {$flip}] } - lassign [rotation $x0 $y0 $linex1 $liney1 $rot $flip] linex1 liney1 - lassign [rotation $x0 $y0 $linex2 $liney2 $rot $flip] linex2 liney2 - lassign [order $linex1 $liney1 $linex2 $liney2] linex1 liney1 linex2 liney2 - lassign [rotation $x0 $y0 $textx0 $texty0 $rot $flip] textx0 texty0 + ## lassign not available pre-tck8.5 + # lassign [rotation $x0 $y0 $linex1 $liney1 $rot $flip] linex1 liney1 + foreach {linex1 liney1} [rotation $x0 $y0 $linex1 $liney1 $rot $flip] break + # lassign [rotation $x0 $y0 $linex2 $liney2 $rot $flip] linex2 liney2 + foreach {linex2 liney2} [rotation $x0 $y0 $linex2 $liney2 $rot $flip] break + # lassign [order $linex1 $liney1 $linex2 $liney2] linex1 liney1 linex2 liney2 + foreach {linex1 liney1 linex2 liney2} [order $linex1 $liney1 $linex2 $liney2] break + # lassign [rotation $x0 $y0 $textx0 $texty0 $rot $flip] textx0 texty0 + foreach {textx0 texty0} [rotation $x0 $y0 $textx0 $texty0 $rot $flip] break puts $fd "B 5 $pinx1 $piny1 $pinx2 $piny2 \{name=$lab dir=$dir\}" puts $fd "L 4 $linex1 $liney1 $linex2 $liney2 \{\}" puts $fd "T \{$lab\} $textx0 $texty0 $rot $textflip 0.2 0.2 \{\}"