//gob.defs definitions for gobble January 15, 1977
// last modified by E. McCreight,
June 15, 1977 11:41 AM

manifest
[
htsize = 64
DirPreambleSize=6
ksTypeReadOnly=1
ksTypeWriteOnly=2
ksTypeReadWrite=3
verLatestCreate=#40000+2
MaxEpins = 999 //maximum number of edge pins
MaxComps = 2600 //a1 - z99

ecltype = $E-$A
termtype = $T-$A
Ptype = $P-$A
Ntype = $N-$A
Htype = $H-$A
Stype = $S-$A

]


external //initialized to point to board specific procedures by SetUpBoardType
[
GetSVCoords//(typeletter,,index,cv) returns (in cv) the coordinates of svolt source pins
GetSVindex //(pinchar,bl,boardpin) returns index of closest svolt source
SVoltReq//vector of space required for SVolt source pins provided by SetUpBoardPins
NetHasSVolt //(net name string) returns svolt source pin char. if the board supplies this net as a special case
LegalBloc //(boardlocation) returns true if board location is legal
ChiptoPinPos //(boardloc,chippin) returns board pin number given chip locator
GetEpinCoords //(pin,cv) x in cv!0, y in cv!1 - coordinates are in .025" increments
GetCpinCoords //(pin,cv) x in cv!0, y in cv!1 - coordinates are in .025" increments
GetICcoords //(alph,num,pin,cv) x in cv!0, y in cv!1 - coordinates are in .025" increments
AddPotentialTerms //() if the board has special terminator positions, this function adds them
//to the Boardvec list (or checks that user defined ones are really terms). If they are
//not assigned, they will not be printed out by SendUsedICs

FindBestTerm //(x,y) returns a pointer to the best terminator pin to use for the signal
//at the given coordinates

SetUpTerms //() allows construction of the data structure of your choice before FindBestTerm is called

TableZeroString //string to cause stitchwelder to be zeroed
GetBoardPins //(boardloc) returns max number of pins at this position
maxn
maxalph
]

external //statics
[
BoardType
AddDeleteNetNum
Correcting
dts
termx
termy
noroute
termstp
Gndvec //space for SVolt source pin vectors
Vccvec
Veevec
Vttvec
Vddvec

Epins //vector for edge pins
Boardvec //vector of pointers to component descriptors

hashtab
ADFile
ErFile
BpFile
OutFile
OldWlFile

SilZone
NewItem
Space
//size of object space
SpaceBase //base of space
SpaceTop
bestTotalNetLength

heuristicWork
exhaustThresh
]

external //gobble procedures
[
PrintN
ProcessLine
CopyLine
CorrectOldNet
ReadNetName
StEq
AddSVoltNode
ErrTfn
Nullfn
ErrCfn
GetBoardPinsT
LegalBlocT
ChiptoPinPosT
ErrN
ErrBL
SetUpBoardType //makes the other board-specific procedures available
AssignIC
CheckFit
ManhattanDistFn
EuclideanDistFn
StandardMetric
Route
WSS
DefineSymbol
Lookup
Output
AppendS
AppendN
AppendC
AppendB
AppendBL
CSN
]



external
//O.S. procedures and statics
[
Resets
OpenFileFromFp
fpUserCm
fpSysDir
fpComCm
fpRemCm
Usc
InitializeZone
OpenFile
Puts
Closes
MoveBlock
Gets
Zero
CallSwat
Endofs
keys
Junta
CounterJunta
]


structure str:
[
length byte
char↑1,255 byte
]

structure bytes:
[
bite↑0,256byte
]

structure strec:
[
link word
ordered bit
netlength bit 15
netnum word //weld order
list word //head of list of nodes associated with this name
mark word //set to -1 by DefineSymbol
st @str
]

structure icdesc:
[
npins bit 6 //number of pins on this ic
ictype bit 5 //family (AthroughZ -$A)
mult bit 1 //this position multiply defined
blank bit 4

stp word //stp for type name
outbits↑0,3 word //one bit per pin- 1 if the pin is an output
bl word //board location for this ic
mark word //set to -1 by someone
pinptr↑1,63 word //one word per pin- part of a list starting at signal name
]

manifest
[
icdsize = (offset icdesc.mark)/16
]