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];
Burndy: CEDAR PROGRAM
IMPORTS IO, Commander, FS =
BEGIN
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.STREAMFS.StreamOpen["Burndy.Back.part",$create];
daugther1: IO.STREAMFS.StreamOpen["Burndy.Daugther1.part",$create];
daugther2: IO.STREAMFS.StreamOpen["Burndy.Daugther2.part",$create];
trans: IO.STREAMFS.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;
Commander.Register[
key: "Burndy", proc: BurndyProc, doc: "Generates Burndy.Back.part and Burndy.Daugther.part files\n"];
END.