//ana.defs definitions for analyze

// last modified by E. McCreight, November 15, 1977 4:01 PM

manifest
[
Black=0; Red=1; Yellow=2; Green=3; Cyan=4; Violet=5; Magenta=6; White=7
Brown=#10; Orange=#11; Lime=#12; Turquoise=#13; Aqua=#14; UltraViolet=#15; Pink=#16; Smoke=#17
htsize = 64
NMfonts = 6 //number of macro fonts (4-9)
Mtsize = NMfonts*128 //macro table size
DirPreambleSize=6
ksTypeReadOnly=1
ksTypeWriteOnly=2
ksTypeReadWrite=3
verLatestCreate=#40000+2

//connection point characters (font 3)
chTcon = $Q
chBcon = $S
chLcon = $R
chRcon = $T

//special characters for single-character symbols (font 3)
chEpin = $P
chCpin = $p
chGnd = $n
chPseud = $x
chBlob = $.

//symbol types
stComp = 1 //used for component name in picture
stPin = 2
stSig = 3
stRcomp= 4 //used for real component name
stBrdloc = 5

]

external //statics
[

//list headers
@Comps
@Vlines
@Hlines
@Strings
@Numbers
@Locgroups
@Schars
@BadItems

//Special symbol table pointers
@Instp
@Outstp
@Gndstp
@Pseudstp

@psfile
@page
@prescan
@debugswitch
@hashtab
@ErFile
@OutFile
@FileName

@GenNameString
@GenNameCount

@Lprvec //vector of library file pointers
@Dprvec //vector of dictionary file pointers
@fpDict //file pointer of current (supposedly open) dictionary file
@dict
//dictionary stream
@SilZone
@Mact
@NewItem
@Space
//size of object space
@SpaceBase //base of space
@SpaceTop
@Message

@worstErrorLevel
]

manifest // error levels
[
noError = 0
warning = 1
serious = 2
disaster = 3
]

external //ana procedures
[
OutSymbols
PreScanOut
PinCheck
FlushLine
DefaultTypeNames
DoOutput
ConnectVlines
ConnectHlines
FixOverlap
DoSchars
DoComponents
DoSignames
AddComps
GetCompNames
PrintStructs
CheckFit
Err2
Errxy
Err
GetFile
MakeFileName
DefineSymbol
Lookup
AppendB
StEq

Docomponent
Dousermacro
Dorectangle
Dofont3string
Dofont1string
AddBadItem
FindDictLibraries
LibUpdate
ParseTitle

//NSilUtil
AddToList
Length
AppendS
AppendN
AppendC
]



external
//O.S. procedures and statics
[
Resets
OpenFileFromFp
GetCompleteFa
JumpToFa
fpUserCm
fpSysDir
fpComCm
fpRemCm
Usc
InitializeZone
OpenFile
DeleteFile
FilePos
Puts
Wss
Closes
MoveBlock
Gets
Zero
SetBlock
CallSwat
Endofs
keys
Allocate
Free
Junta
CounterJunta
ReadUserCmItem //P. Deutsch package from <alto>
LookUpEntries //from MDI
TruncateDiskStream
]


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

structure bytes:
[
bite↑0,256byte
]

structure strec:
[
link word
type byte; pinsdn bit; ucnt bit 7
rname word //real name for component
st @str
]

structure item:
[
link word
state bit 3; xmin bit 13
ymin word
color bit 4; xmax bit 12
[ font bit 4; blank bit 1; ymax bit 11 ]
=[
fullfont bit 5
=[ txtfont bit 3; bold bit; italic bit ]
blank bit 11
]
string: @str
]


structure comp: //components
[
link word
type bit 3; xmin bit 13
ymin word
color bit 4; xmax bit 12
ymax word
pinsdone bit 4; blout bit; mindex bit 11 //= (font-8)*128 + char

conpoints word //pointer to connection point block
]

structure conpoint:
[
pin bit 6 //pin number for this pin
x bit 10

marked bit 1 //encountered in trace
defd bit 1 //pin number is defined in drawing
cpt bit 3
blob bit 1 //indicates this conpoint has a blob
//(don’t worry that it’s not connected to anything

y bit 10

pinname word //stp for name
conn word //pointer to connected object
]
manifest //connection point types
[
cptTop = 1
cptBot = 2
cptLeft = 3
cptRight = 4
]

structure compblock:
[
comptype word //symbol table pointer, NOT pointer to node

boardloc word // symbol table pointer
numcpoints bit 6
group bit 10

@conpoint↑1,64
]


structure lend: //line endpoints
[
link word

type bit 3
hassig bit 1 //this line has a signal name associated
x bit 12

marked bit
y bit 15

cp↑0,2 word //pointers to things connected to this endpoint
]

structure node: //used for strings, numbers, locgroups,and schars
[
link word
type bit 3
x bit 13 //coordinates of the center of the object
assoc word //pointer to associated object
used bit
y bit 15
val word // when used for strings(val is an stp),numbers, and schars
=bloc word // points to symbol table
val2 word = group word
]


manifest
[
//block types
btComp = 1
btLend = 2
btString = 3
btNum = 4
btLocgroups = 5
btSchar = 6

//blocklengths
blComp = (size comp)/16
blLend = (size lend)/16
blBasicNode = (offset node.val2)/16
blFullNode = (size node)/16
blString = blBasicNode
blNum = blBasicNode
blSchar = blBasicNode
blLocgroups = blFullNode
]