//routestorholes.bcpl

// Board-specific Route extra-hole routines for the Dorado Storage Board

// last modified by E. McCreight, May 8, 1978 11:05 PM

get "route.defs"

external [ Pin1ofEcl; Pin1ofTerm; Pin1ofTTL ]

static [ boardInterfaceVersion = interfaceVersion ]

let ComputeMWCoords(px, py, isMils) be
[
unless isMils do
[
@px = 25*@px
@py = 25*@py
]

if @py eq 0 then @py = -25
// move edge pins out 25 mils
if @py eq 13125 then @py = 13150

@px = 1000+@px
@py = 1000+@py-(7*25) // first IC offset from 0 by 7 25-mil units

@px = @px+25-((@px+25) rem 50) // round to nearest on-grid point
@py = @py+25-((@py+25) rem 50)
]

and DescribeHoles(PrintAHole) be
[
manifest [ plated = true; unplated = not plated ]
manifest
[
socketHoleSize = 41 // mils, after plating & solder coat
screwHoleSize = 144 // mils, unplated
]

let x,y = nil,nil

for x=0 to 599 do for y=0 to 599 do
if FindIndexFromCoord(x,y) ne 0 then PrintAHole(x, y, socketHoleSize, plated)

for row=0 to 3 do for col=0 to 1 do for subcol=0 to 4 do
[
Pin1ofEcl(row, 6*col+subcol, lv x, lv y)
PrintAHole(x+4, y, socketHoleSize, plated)
PrintAHole(x+4, y+12, socketHoleSize, plated)
]

for row=0 to 1 do for col=0 to 1 do for subcol=0 to 4 do
[
Pin1ofTerm(row, 6*col+subcol, lv x, lv y)
PrintAHole(x+4, y, socketHoleSize, plated)
]

for row=0 to 21 do for col=0 to 8 do
[
Pin1ofTTL(row, col, lv x, lv y)
PrintAHole(x+4, y, socketHoleSize, plated)
PrintAHole(x+4, y+12, socketHoleSize, plated)
PrintAHole(x+8, y, socketHoleSize, plated)
PrintAHole(x+8, y+12, socketHoleSize, plated)
]

for i=0 to 90 do
[ // ground feed-thru holes at connector fingers
PrintAHole(27+5*i, 3, socketHoleSize, plated)
PrintAHole(27+5*i, 522, socketHoleSize, plated)
]

for row=0 to 1 do for col=0 to 1 do for hole = 0 to 1 do
PrintAHole(-11+hole*5+col*494, row*525, socketHoleSize, plated)
// power bus feed-thru holes

for row=0 to 2 do for col=0 to 2 do
PrintAHole(-8+col*246, 16+row*246, screwHoleSize, unplated)
// bus bar mounting screws
]