File: Burndy.mesa
Christophe Cuenod February 18, 1988 3:28:02 pm PST
Enables to generate easily Burndy connector parts for EXPERT.
Burndy.Back.part for the backpannel
Burndy.Daugther1.part for the daugther boards
Burndy.Daugther2.part for the daugther boards
Burndy.Trans.part for the daugther boards
The pads stacks are:
- transition pins stack 17
- backpannel left pins short stack 36
- backpannel right pins short stack 37
- backpannel left pins long stack 38
- backpannel right pins long stack 39
- daugther board holes left stack 40
- daugther board holes right stack 52
- daugther board pads stack 44
DIRECTORY
Commander USING [CommandProc, Register],
Rope USING [ROPE],
FS USING [StreamOpen],
IO USING [card, Close, int, PutF, STREAM];
FillOneSite:
PROC [back:
IO.
STREAM, daugther1:
IO.
STREAM, trans: IO.
STREAM, site:
CARD, offset:
CARD] ~ {
i, j, k, l, m, n, o: CARD;
padback, paddaugther1, padtrans: CARD;
xback, yback: INT;
xdaugther1, ydaugther1: INT;
xtrans, ytrans: INT;
padtrans ← 17;
FOR i
IN [1..106]
DO
j ← (i-1) MOD 8;
k ← (i-1) / 2;
l ← (i-1) MOD 3;
m ← (i-1) / 3;
n ← i / 2;
o ← (i-1) / 8;
SELECT j
FROM
= 0 => {
xback ← 0;
padback ← 36;
xdaugther1 ← 0;
paddaugther1 ← 52;
};
= 1 => {
xback ← 150;
padback ← 39;
xdaugther1 ← -50;
paddaugther1 ← 40;
};
= 2 => {
xback ← -400;
padback ← 39;
xdaugther1 ← -225;
paddaugther1 ← 52;
};
= 3 => {
xback ← 550;
padback ← 36;
xdaugther1 ← -275;
paddaugther1 ← 40;
};
= 4 => {
xback ← 50;
padback ← 38;
xdaugther1 ← 0;
paddaugther1 ← 52;
};
= 5 => {
xback ← 200;
padback ← 37;
xdaugther1 ← -50;
paddaugther1 ← 40;
};
= 6 => {
xback ← -350;
padback ← 37;
xdaugther1 ← -225;
paddaugther1 ← 52;
};
= 7 => {
xback ← 600;
padback ← 38;
xdaugther1 ← -275;
paddaugther1 ← 40;
};
ENDCASE;
yback ← k*25 + offset;
ydaugther1 ← n*25 + offset;
xtrans ← - j * 100;
ytrans ← o * 100 + offset;
IF l = 0
THEN {
SELECT m
FROM
3, 9, 15, 21, 27, 33 => {
IO.PutF[back, "%g %g VCC 1 10 256 4 %g\n", IO.int[xback], IO.int[yback], IO.card[padback]];
IO.PutF[daugther1, "%g %g VCC 1 10 256 4 %g\n", IO.int[xdaugther1], IO.int[ydaugther1], IO.card[paddaugther1]];
IO.PutF[trans, "%g %g VCC 1 10 256 4 %g\n", IO.int[xtrans], IO.int[ytrans], IO.card[padtrans]];
};
6, 18, 30 => {
IO.PutF[back, "%g %g V2 8 10 256 4 %g\n", IO.int[xback], IO.int[yback], IO.card[padback]];
IO.PutF[daugther1, "%g %g V2 8 10 256 4 %g\n", IO.int[xdaugther1], IO.int[ydaugther1], IO.card[paddaugther1]];
IO.PutF[trans, "%g %g V2 8 10 256 4 %g\n", IO.int[xtrans], IO.int[ytrans], IO.card[padtrans]];
};
12, 24 => {
IO.PutF[back, "%g %g -5.2 2 10 256 4 %g\n", IO.int[xback], IO.int[yback], IO.card[padback]];
IO.PutF[daugther1, "%g %g -5.2 2 10 256 4 %g\n", IO.int[xdaugther1], IO.int[ydaugther1], IO.card[paddaugther1]];
IO.PutF[trans, "%g %g -5.2 2 10 256 4 %g\n", IO.int[xtrans], IO.int[ytrans], IO.card[padtrans]];
};
ENDCASE => {
IO.PutF[back, "%g %g GND 1 10 256 5 %g\n", IO.int[xback], IO.int[yback], IO.card[padback]];
IO.PutF[daugther1, "%g %g GND 1 10 256 5 %g\n", IO.int[xdaugther1], IO.int[ydaugther1], IO.card[paddaugther1]];
IO.PutF[trans, "%g %g GND 1 10 256 5 %g\n", IO.int[xtrans], IO.int[ytrans], IO.card[padtrans]];
};
}
ELSE {
IO.PutF[back, "%g %g P%g %g 10 %g", IO.int[xback], IO.int[yback], IO.card[i], IO.card[(i-1)*2/3], IO.card[site]];
IO.PutF[daugther1, "%g %g P%g %g 10 %g", IO.int[xdaugther1], IO.int[ydaugther1], IO.card[i], IO.card[(i-1)*2/3], IO.card[site]];
IO.PutF[trans, "%g %g P%g %g 10 %g", IO.int[xtrans], IO.int[ytrans], IO.card[i], IO.card[(i-1)*2/3], IO.card[site]];
IO.PutF[back, " 3 %g\n", IO.card[padback]];
IO.PutF[daugther1, " 3 %g\n", IO.card[paddaugther1]];
IO.PutF[trans, " 3 %g\n", IO.card[padtrans]];
};
ENDLOOP;
};
BurndyProc: Commander.CommandProc =
BEGIN
i: INT;
back: IO.STREAM ← FS.StreamOpen["Burndy.Back.part",$create];
daugther1: IO.STREAM ← FS.StreamOpen["Burndy.Daugther1.part",$create];
daugther2: IO.STREAM ← FS.StreamOpen["Burndy.Daugther2.part",$create];
trans: IO.STREAM ← FS.StreamOpen["Burndy.Trans.part",$create];
IO.PutF[back, "4096 2048 -400 -100 600 5775 -100 -400 BURNDYBAC PARC-BURNDYBAC J\n"];
IO.PutF[daugther1, "4096 2048 -400 -100 600 5775 -100 -400 BURNDYDB1 PARC-BURNDYDB1 J\n"];
IO.PutF[trans, "4096 2048 -400 -100 600 5775 -100 -400 BURNDYTR PARC-BURNDYTR J\n"];
FillOneSite[back: back, daugther1: daugther1, trans: trans, site: 1, offset: 0];
FillOneSite[back: back, daugther1: daugther1, trans: trans, site: 2, offset: 1600];
IO.Close[back];
IO.Close[daugther1];
IO.Close[trans];
IO.PutF[cmd.out, "Files Burndy.Back.part, Burndy.Daugther1.part and Burndy.Trans.part written\n"];
IO.PutF[daugther2, "4096 2048 -400 -100 600 5775 -100 -400 BURNDYDA2 PARC-BURNDYDA2 J\n"];
FOR i
IN [1..53]
DO
IO.PutF[daugther2, "%g %g Pad 1 1 1 1 44\n", IO.int[-225*((i-1) MOD 2)], IO.int[(i-1)*25]];
IO.PutF[daugther2, "%g %g Pad 1 1 1 1 44\n", IO.int[-35-225*((i-1) MOD 2)], IO.int[(i-1)*25]];
ENDLOOP;
FOR i
IN [1..53]
DO
IO.PutF[daugther2, "%g %g Pad 1 1 1 1 44\n", IO.int[-225*((i-1) MOD 2)], IO.int[(i-1)*25+1600]];
IO.PutF[daugther2, "%g %g Pad 1 1 1 1 44\n", IO.int[-35-225*((i-1) MOD 2)], IO.int[(i-1)*25+1600]];
ENDLOOP;
IO.Close[daugther2];
IO.PutF[cmd.out, "File Burndy.Daugther2.part written\n"];
END;