<> <> << Enables to generate easily Burndy connector parts for EXPERT.>> <> <> <> <> <<>> <<>> <> <<- 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.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; Commander.Register[ key: "Burndy", proc: BurndyProc, doc: "Generates Burndy.Back.part and Burndy.Daugther.part files\n"]; END.