From: Bdale Garbee Date: Sun, 20 Nov 2011 22:29:06 +0000 (-0700) Subject: add footprint generators for samtec stacking connector series, not qa'ed yet X-Git-Url: https://git.gag.com/?p=hw%2Fbdale;a=commitdiff_plain;h=e9f962d68ce5e16e619a7410739c9daa713495e6 add footprint generators for samtec stacking connector series, not qa'ed yet --- diff --git a/pkg/newlib/samtec/BSE.py b/pkg/newlib/samtec/BSE.py new file mode 100755 index 0000000..bb07e78 --- /dev/null +++ b/pkg/newlib/samtec/BSE.py @@ -0,0 +1,111 @@ +#!/usr/bin/python +# Copyright 2007 by Bdale Garbee . GPLv2 +# +# Program to emit PCB footprint for Samtec BSE connectors + +import sys + +# dimensions in mm from Bse-d.pdf and BSE.pdf + +PinWidth = 0.406 +PinHeight = 2.273 +PinSpacing = 0.8 +RowSpacing = 8.001 - (2 * PinHeight) +HoleDiam = 1.016 +HoleOffset= 2.67 + +# Needs pin count per row on command line, 20/40/60/80/100/120 are valid +positions = int(sys.argv[1]) +ordinal = positions / 20.0 +if (ordinal < 1) or (ordinal > 6) or (positions%20 != 0): + sys.stderr.write('Invalid number of positions, must be 20|40|60|80|100|120.\n') + sys.exit(1) + +BodyWidth = (positions * PinSpacing) + 5.27 +BodyHeight = 7.24 +HoleSpacing = (positions * PinSpacing) + 4.127 + +# we're going to use the 1/100 of a mil fundamental unit form +def mm2mils100( mm ): + return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 ) + +print '# author: Bdale Garbee' +print '# email: bdale@gag.com' +print '# dist-license: GPL 2' +print '# use-license: unlimited' + +print 'Element[0x0 "SOIJ8" "" "" 0 0 -10161 -12011 0 100 0x0]' +print "(" +for pin in range (0,positions): + print ' Pad[',\ + mm2mils100((pin-(positions/2 - 0.5)) * PinSpacing), \ + mm2mils100(-(RowSpacing/2 + PinWidth/2)), \ + mm2mils100((pin-(positions/2 - 0.5)) * PinSpacing), \ + mm2mils100(-(RowSpacing/2 + PinHeight - PinWidth/2)), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinWidth)+600, \ + '"pin%i"' % (2 + pin*2), '"%i"' % (2 + pin*2), '0x0100]' + + print ' Pad[',\ + mm2mils100((pin-(positions/2 - 0.5)) * PinSpacing), \ + mm2mils100(RowSpacing/2 + PinWidth/2), \ + mm2mils100((pin-(positions/2 - 0.5)) * PinSpacing), \ + mm2mils100(RowSpacing/2 + PinHeight - PinWidth/2), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinWidth)+600, \ + '"pin%i"' % (1 + pin*2), '"%i"' % (1 + pin*2), '0x0100]' + +print ' Pin[', \ + mm2mils100(HoleSpacing/2), \ + mm2mils100(-HoleOffset), \ + mm2mils100(HoleDiam), \ + 0, \ + mm2mils100(HoleDiam), \ + mm2mils100(HoleDiam), \ + '"mnt" "0"', '0x0008', ']' + +print ' Pin[', \ + mm2mils100(-HoleSpacing/2), \ + mm2mils100(-HoleOffset), \ + mm2mils100(HoleDiam), \ + 0, \ + mm2mils100(HoleDiam), \ + mm2mils100(HoleDiam), \ + '"mnt" "0"', '0x0008', ']' + +print ' ElementLine[',\ + mm2mils100(-BodyWidth/2), \ + mm2mils100(-BodyHeight/2), \ + mm2mils100(-BodyWidth/2), \ + mm2mils100( BodyHeight/2), \ + '1000 ]' + +print ' ElementLine[',\ + mm2mils100(-BodyWidth/2), \ + mm2mils100( BodyHeight/2), \ + mm2mils100( BodyWidth/2), \ + mm2mils100( BodyHeight/2), \ + '1000 ]' + +print ' ElementLine[',\ + mm2mils100( BodyWidth/2), \ + mm2mils100( BodyHeight/2), \ + mm2mils100( BodyWidth/2), \ + mm2mils100(-BodyHeight/2), \ + '1000 ]' + +print ' ElementLine[',\ + mm2mils100( BodyWidth/2), \ + mm2mils100(-BodyHeight/2), \ + mm2mils100(-BodyWidth/2), \ + mm2mils100(-BodyHeight/2), \ + '1000 ]' + +print ' ElementArc[',\ + mm2mils100(-(positions/2 + 0.5) * PinSpacing), \ + mm2mils100(RowSpacing/2+PinHeight*5/4), \ + '500 500 0 360 1000 ]' + +print ")" diff --git a/pkg/newlib/samtec/BTE.py b/pkg/newlib/samtec/BTE.py new file mode 100755 index 0000000..5329dc4 --- /dev/null +++ b/pkg/newlib/samtec/BTE.py @@ -0,0 +1,111 @@ +#!/usr/bin/python +# Copyright 2007 by Bdale Garbee . GPLv2 +# +# Program to emit PCB footprint for Samtec BTE connectors + +import sys + +# dimensions in mm from BTE-XXX-XX-X-D-XX-FOOTPRINT.pdf and BSE.pdf + +PinWidth = 0.457 +PinHeight = 1.448 +PinSpacing = 0.8 +RowSpacing = 6.172 - PinHeight +HoleDiam = 1.016 +HoleOffset= 2.032 + +# Needs pin count per row on command line, 20/40/60/80/100/120 are valid +positions = int(sys.argv[1]) +ordinal = positions / 20.0 +if (ordinal < 1) or (ordinal > 6) or (positions%20 != 0): + sys.stderr.write('Invalid number of positions, must be 20|40|60|80|100|120.\n') + sys.exit(1) + +BodyWidth = (positions * PinSpacing) + 4.00 +BodyHeight = 5.97 +HoleSpacing = (positions * PinSpacing) + 2.477 + +# we're going to use the 1/100 of a mil fundamental unit form +def mm2mils100( mm ): + return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 ) + +print '# author: Bdale Garbee' +print '# email: bdale@gag.com' +print '# dist-license: GPL 2' +print '# use-license: unlimited' + +print 'Element[0x0 "BSE" "" "" 0 0 -10161 -12011 0 100 0x0]' +print "(" +for pin in range (0,positions): + print ' Pad[',\ + mm2mils100((pin-(positions/2 - 0.5)) * PinSpacing), \ + mm2mils100(-(RowSpacing/2 + PinWidth/2)), \ + mm2mils100((pin-(positions/2 - 0.5)) * PinSpacing), \ + mm2mils100(-(RowSpacing/2 + PinHeight - PinWidth/2)), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinWidth)+600, \ + '"pin%i"' % (1 + pin*2), '"%i"' % (1 + pin*2), '0x0100]' + + print ' Pad[',\ + mm2mils100((pin-(positions/2 - 0.5)) * PinSpacing), \ + mm2mils100(RowSpacing/2 + PinWidth/2), \ + mm2mils100((pin-(positions/2 - 0.5)) * PinSpacing), \ + mm2mils100(RowSpacing/2 + PinHeight - PinWidth/2), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinWidth)+600, \ + '"pin%i"' % (2 + pin*2), '"%i"' % (2 + pin*2), '0x0100]' + +print ' Pin[', \ + mm2mils100(HoleSpacing/2), \ + mm2mils100(-HoleOffset), \ + mm2mils100(HoleDiam), \ + 0, \ + mm2mils100(HoleDiam), \ + mm2mils100(HoleDiam), \ + '"mnt" "0"', '0x0008', ']' + +print ' Pin[', \ + mm2mils100(-HoleSpacing/2), \ + mm2mils100(-HoleOffset), \ + mm2mils100(HoleDiam), \ + 0, \ + mm2mils100(HoleDiam), \ + mm2mils100(HoleDiam), \ + '"mnt" "0"', '0x0008', ']' + +print ' ElementLine[',\ + mm2mils100(-BodyWidth/2), \ + mm2mils100(-BodyHeight/2), \ + mm2mils100(-BodyWidth/2), \ + mm2mils100( BodyHeight/2), \ + '1000 ]' + +print ' ElementLine[',\ + mm2mils100(-BodyWidth/2), \ + mm2mils100( BodyHeight/2), \ + mm2mils100( BodyWidth/2), \ + mm2mils100( BodyHeight/2), \ + '1000 ]' + +print ' ElementLine[',\ + mm2mils100( BodyWidth/2), \ + mm2mils100( BodyHeight/2), \ + mm2mils100( BodyWidth/2), \ + mm2mils100(-BodyHeight/2), \ + '1000 ]' + +print ' ElementLine[',\ + mm2mils100( BodyWidth/2), \ + mm2mils100(-BodyHeight/2), \ + mm2mils100(-BodyWidth/2), \ + mm2mils100(-BodyHeight/2), \ + '1000 ]' + +print ' ElementArc[',\ + mm2mils100(-(positions/2 + 0.5) * PinSpacing), \ + mm2mils100(-(RowSpacing/2+PinHeight*5/4)), \ + '500 500 0 360 1000 ]' + +print ")" diff --git a/pkg/newlib/samtec/Makefile b/pkg/newlib/samtec/Makefile new file mode 100644 index 0000000..6f1c882 --- /dev/null +++ b/pkg/newlib/samtec/Makefile @@ -0,0 +1,10 @@ +all: BSE-020-01.fp QSE-030-01.fp + +BSE-020-01.fp: bsebte BSE.py BTE.py + ./bsebte + +QSE-030-01.fp: qshqth QSH.py QTH.py + ./qshqth + +clean: + rm -f *.fp diff --git a/pkg/newlib/samtec/QSH.py b/pkg/newlib/samtec/QSH.py new file mode 100755 index 0000000..b98f092 --- /dev/null +++ b/pkg/newlib/samtec/QSH.py @@ -0,0 +1,158 @@ +#!/usr/bin/python +# Copyright 2007 by Bdale Garbee . GPLv2 +# +# Program to emit PCB footprint for Samtec QSH-XXX-01-X-D-A connectors + +import sys + +# dimensions in mm from QSH-XXX-01-X-D-XX-FOOTPRINT.pdf + +PinWidth = 0.28 +PinHeight = 2.27 +PinSpacing = 0.5 +RowSpacing = (2.87 * 2) - PinHeight +HoleDiam = 1.02 +HoleOffset= 2.67 +PaddleHeight = 0.43 +ShortPaddleWidth = 2.54 +LongPaddleWidth = 4.70 +ShortPaddleCC = 16.13 +LongPaddleCC = 6.35 +MaskAdd = 0.15 + +# Needs pin count per row on command line, 30/60/90/120/150 are valid +positions = int(sys.argv[1]) +ordinal = positions / 30.0 +if (ordinal < 1) or (ordinal > 5) or (positions%30 != 0): + sys.stderr.write('Invalid number of positions, must be 30|60|90|120|150.\n') + sys.exit(1) + +BodyWidth = (positions / 30) * 20.003 + 1.27 +BodyHeight = 7.493 +HoleSpacing = (positions / 30) * 20.00 + 0.13 + +# we're going to use the 1/100 of a mil fundamental unit form +def mm2mils100( mm ): + return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 ) + +print '# author: Bdale Garbee' +print '# email: bdale@gag.com' +print '# dist-license: GPL 2' +print '# use-license: unlimited' + +print 'Element[0x0 "QSH-%i"' % positions,' "" "" 0 0 -10161 -12011 0 100 0x0]' +print "(" +for pin in range (0,positions): + print ' Pad[',\ + mm2mils100((pin-(positions/2 - 0.5)) * PinSpacing), \ + mm2mils100(-(RowSpacing/2 + PinWidth/2)), \ + mm2mils100((pin-(positions/2 - 0.5)) * PinSpacing), \ + mm2mils100(-(RowSpacing/2 + PinHeight - PinWidth/2)), \ + mm2mils100(PinWidth), \ + mm2mils100(0), \ + mm2mils100(PinWidth+MaskAdd), \ + '"pin%i"' % (2 + pin*2), '"%i"' % (2 + pin*2), '0x0100]' + + print ' Pad[',\ + mm2mils100((pin-(positions/2 - 0.5)) * PinSpacing), \ + mm2mils100(RowSpacing/2 + PinWidth/2), \ + mm2mils100((pin-(positions/2 - 0.5)) * PinSpacing), \ + mm2mils100(RowSpacing/2 + PinHeight - PinWidth/2), \ + mm2mils100(PinWidth), \ + mm2mils100(0), \ + mm2mils100(PinWidth+MaskAdd), \ + '"pin%i"' % (1 + pin*2), '"%i"' % (1 + pin*2), '0x0100]' + +# ground paddles +print ' Pad[',\ + mm2mils100(-ShortPaddleCC/2 - ShortPaddleWidth/2 + PaddleHeight/2), \ + mm2mils100(0), \ + mm2mils100(-ShortPaddleCC/2 + ShortPaddleWidth/2 - PaddleHeight/2), \ + mm2mils100(0), \ + mm2mils100(PaddleHeight), \ + mm2mils100(0), \ + mm2mils100(PaddleHeight+MaskAdd), \ + '"G" "G" 0x0100]' + +print ' Pad[',\ + mm2mils100(ShortPaddleCC/2 - ShortPaddleWidth/2 + PaddleHeight/2), \ + mm2mils100(0), \ + mm2mils100(ShortPaddleCC/2 + ShortPaddleWidth/2 - PaddleHeight/2), \ + mm2mils100(0), \ + mm2mils100(PaddleHeight), \ + mm2mils100(0), \ + mm2mils100(PaddleHeight+MaskAdd), \ + '"G" "G" 0x0100]' + +print ' Pad[',\ + mm2mils100(-LongPaddleCC/2 - LongPaddleWidth/2 + PaddleHeight/2), \ + mm2mils100(0), \ + mm2mils100(-LongPaddleCC/2 + LongPaddleWidth/2 - PaddleHeight/2), \ + mm2mils100(0), \ + mm2mils100(PaddleHeight), \ + mm2mils100(0), \ + mm2mils100(PaddleHeight+MaskAdd), \ + '"G" "G" 0x0100]' + +print ' Pad[',\ + mm2mils100(LongPaddleCC/2 - LongPaddleWidth/2 + PaddleHeight/2), \ + mm2mils100(0), \ + mm2mils100(LongPaddleCC/2 + LongPaddleWidth/2 - PaddleHeight/2), \ + mm2mils100(0), \ + mm2mils100(PaddleHeight), \ + mm2mils100(0), \ + mm2mils100(PaddleHeight+MaskAdd), \ + '"G" "G" 0x0100]' + +print ' Pin[', \ + mm2mils100(HoleSpacing/2), \ + mm2mils100(-HoleOffset), \ + mm2mils100(HoleDiam), \ + 0, \ + mm2mils100(HoleDiam), \ + mm2mils100(HoleDiam), \ + '"mnt" "0"', '0x0008', ']' + +print ' Pin[', \ + mm2mils100(-HoleSpacing/2), \ + mm2mils100(-HoleOffset), \ + mm2mils100(HoleDiam), \ + 0, \ + mm2mils100(HoleDiam), \ + mm2mils100(HoleDiam), \ + '"mnt" "0"', '0x0008', ']' + +print ' ElementLine[',\ + mm2mils100(-BodyWidth/2), \ + mm2mils100(-BodyHeight/2), \ + mm2mils100(-BodyWidth/2), \ + mm2mils100( BodyHeight/2), \ + '1000 ]' + +print ' ElementLine[',\ + mm2mils100(-BodyWidth/2), \ + mm2mils100( BodyHeight/2), \ + mm2mils100( BodyWidth/2), \ + mm2mils100( BodyHeight/2), \ + '1000 ]' + +print ' ElementLine[',\ + mm2mils100( BodyWidth/2), \ + mm2mils100( BodyHeight/2), \ + mm2mils100( BodyWidth/2), \ + mm2mils100(-BodyHeight/2), \ + '1000 ]' + +print ' ElementLine[',\ + mm2mils100( BodyWidth/2), \ + mm2mils100(-BodyHeight/2), \ + mm2mils100(-BodyWidth/2), \ + mm2mils100(-BodyHeight/2), \ + '1000 ]' + +print ' ElementArc[',\ + mm2mils100(-(positions/2 + 0.5) * PinSpacing), \ + mm2mils100(RowSpacing/2+PinHeight*5/4), \ + '500 500 0 360 1000 ]' + +print ")" diff --git a/pkg/newlib/samtec/QTH.py b/pkg/newlib/samtec/QTH.py new file mode 100755 index 0000000..8cae3ff --- /dev/null +++ b/pkg/newlib/samtec/QTH.py @@ -0,0 +1,158 @@ +#!/usr/bin/python +# Copyright 2007 by Bdale Garbee . GPLv2 +# +# Program to emit PCB footprint for Samtec QSH-XXX-01-X-D-A connectors + +import sys + +# dimensions in mm from QSH-XXX-01-X-D-XX-FOOTPRINT.pdf + +PinWidth = 0.30 +PinHeight = 1.45 +PinSpacing = 0.5 +RowSpacing = (3.09 * 2) - PinHeight +HoleDiam = 1.02 +HoleOffset= 2.03 +PaddleHeight = 0.64 +ShortPaddleWidth = 2.54 +LongPaddleWidth = 4.70 +ShortPaddleCC = 16.89 +LongPaddleCC = 6.35 +MaskAdd = 0.15 + +# Needs pin count per row on command line, 30/60/90/120/150 are valid +positions = int(sys.argv[1]) +ordinal = positions / 30.0 +if (ordinal < 1) or (ordinal > 5) or (positions%30 != 0): + sys.stderr.write('Invalid number of positions, must be 30|60|90|120|150.\n') + sys.exit(1) + +BodyWidth = (positions / 30) * 20.003 + 1.27 +BodyHeight = 7.493 +HoleSpacing = (positions / 30) * 20.00 + 0.13 + +# we're going to use the 1/100 of a mil fundamental unit form +def mm2mils100( mm ): + return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 ) + +print '# author: Bdale Garbee' +print '# email: bdale@gag.com' +print '# dist-license: GPL 2' +print '# use-license: unlimited' + +print 'Element[0x0 "QSH-%i"' % positions,' "" "" 0 0 -10161 -12011 0 100 0x0]' +print "(" +for pin in range (0,positions): + print ' Pad[',\ + mm2mils100((pin-(positions/2 - 0.5)) * PinSpacing), \ + mm2mils100(-(RowSpacing/2 + PinWidth/2)), \ + mm2mils100((pin-(positions/2 - 0.5)) * PinSpacing), \ + mm2mils100(-(RowSpacing/2 + PinHeight - PinWidth/2)), \ + mm2mils100(PinWidth), \ + mm2mils100(0), \ + mm2mils100(PinWidth+MaskAdd), \ + '"pin%i"' % (1 + pin*2), '"%i"' % (1 + pin*2), '0x0100]' + + print ' Pad[',\ + mm2mils100((pin-(positions/2 - 0.5)) * PinSpacing), \ + mm2mils100(RowSpacing/2 + PinWidth/2), \ + mm2mils100((pin-(positions/2 - 0.5)) * PinSpacing), \ + mm2mils100(RowSpacing/2 + PinHeight - PinWidth/2), \ + mm2mils100(PinWidth), \ + mm2mils100(0), \ + mm2mils100(PinWidth+MaskAdd), \ + '"pin%i"' % (2 + pin*2), '"%i"' % (2 + pin*2), '0x0100]' + +# ground paddles +print ' Pad[',\ + mm2mils100(-ShortPaddleCC/2 - ShortPaddleWidth/2 + PaddleHeight/2), \ + mm2mils100(0), \ + mm2mils100(-ShortPaddleCC/2 + ShortPaddleWidth/2 - PaddleHeight/2), \ + mm2mils100(0), \ + mm2mils100(PaddleHeight), \ + mm2mils100(0), \ + mm2mils100(PaddleHeight+MaskAdd), \ + '"G" "G" 0x0100]' + +print ' Pad[',\ + mm2mils100(ShortPaddleCC/2 - ShortPaddleWidth/2 + PaddleHeight/2), \ + mm2mils100(0), \ + mm2mils100(ShortPaddleCC/2 + ShortPaddleWidth/2 - PaddleHeight/2), \ + mm2mils100(0), \ + mm2mils100(PaddleHeight), \ + mm2mils100(0), \ + mm2mils100(PaddleHeight+MaskAdd), \ + '"G" "G" 0x0100]' + +print ' Pad[',\ + mm2mils100(-LongPaddleCC/2 - LongPaddleWidth/2 + PaddleHeight/2), \ + mm2mils100(0), \ + mm2mils100(-LongPaddleCC/2 + LongPaddleWidth/2 - PaddleHeight/2), \ + mm2mils100(0), \ + mm2mils100(PaddleHeight), \ + mm2mils100(0), \ + mm2mils100(PaddleHeight+MaskAdd), \ + '"G" "G" 0x0100]' + +print ' Pad[',\ + mm2mils100(LongPaddleCC/2 - LongPaddleWidth/2 + PaddleHeight/2), \ + mm2mils100(0), \ + mm2mils100(LongPaddleCC/2 + LongPaddleWidth/2 - PaddleHeight/2), \ + mm2mils100(0), \ + mm2mils100(PaddleHeight), \ + mm2mils100(0), \ + mm2mils100(PaddleHeight+MaskAdd), \ + '"G" "G" 0x0100]' + +print ' Pin[', \ + mm2mils100(HoleSpacing/2), \ + mm2mils100(-HoleOffset), \ + mm2mils100(HoleDiam), \ + 0, \ + mm2mils100(HoleDiam), \ + mm2mils100(HoleDiam), \ + '"mnt" "0"', '0x0008', ']' + +print ' Pin[', \ + mm2mils100(-HoleSpacing/2), \ + mm2mils100(-HoleOffset), \ + mm2mils100(HoleDiam), \ + 0, \ + mm2mils100(HoleDiam), \ + mm2mils100(HoleDiam), \ + '"mnt" "0"', '0x0008', ']' + +print ' ElementLine[',\ + mm2mils100(-BodyWidth/2), \ + mm2mils100(-BodyHeight/2), \ + mm2mils100(-BodyWidth/2), \ + mm2mils100( BodyHeight/2), \ + '1000 ]' + +print ' ElementLine[',\ + mm2mils100(-BodyWidth/2), \ + mm2mils100( BodyHeight/2), \ + mm2mils100( BodyWidth/2), \ + mm2mils100( BodyHeight/2), \ + '1000 ]' + +print ' ElementLine[',\ + mm2mils100( BodyWidth/2), \ + mm2mils100( BodyHeight/2), \ + mm2mils100( BodyWidth/2), \ + mm2mils100(-BodyHeight/2), \ + '1000 ]' + +print ' ElementLine[',\ + mm2mils100( BodyWidth/2), \ + mm2mils100(-BodyHeight/2), \ + mm2mils100(-BodyWidth/2), \ + mm2mils100(-BodyHeight/2), \ + '1000 ]' + +print ' ElementArc[',\ + mm2mils100(-(positions/2 + 0.5) * PinSpacing), \ + mm2mils100(-(RowSpacing/2+PinHeight*5/4)), \ + '500 500 0 360 1000 ]' + +print ")" diff --git a/pkg/newlib/samtec/bsebte b/pkg/newlib/samtec/bsebte new file mode 100755 index 0000000..6296890 --- /dev/null +++ b/pkg/newlib/samtec/bsebte @@ -0,0 +1,10 @@ +#!/bin/sh + +for i in 020 040 060 080 100 120 +do + FILE="BSE-"$i"-01" + ./BSE.py $i > $FILE.fp + + FILE="BTE-"$i"-02" + ./BTE.py $i > $FILE.fp +done diff --git a/pkg/newlib/samtec/qshqth b/pkg/newlib/samtec/qshqth new file mode 100755 index 0000000..45892e3 --- /dev/null +++ b/pkg/newlib/samtec/qshqth @@ -0,0 +1,10 @@ +#!/bin/sh + +for i in 030 # 060 090 120 150 +do + FILE="QSH-"$i"-01" + ./QSH.py $i > $FILE.fp + + FILE="QTH-"$i"-02" + ./QTH.py $i > $FILE.fp +done