                  mx    %00
omfprint          equ   0

maxlinklab        equ   $4000                 ;8192 linker lables
maxfiles          equ   100                   ;maximum link files
maxsegs           equ   256

namelen           equ   10                    ;length of segment names

syntax            equ   $01+$80
doserror          equ   $02+$80
mismatch          equ   $5C

badasmcmd         equ   $04
badcmd            equ   $06+$80
badlable          equ   $07
outofmem          equ   $08+$80
undeflable        equ   $09
badoperand        equ   $0a
badrelative       equ   $0b
symfull           equ   $0c+$80
baddictionary     equ   $0d+$80
badexternal       equ   $0e
extnotzp          equ   $0f
maxsegments       equ   $10
relfull           equ   $11+$80
dupentry          equ   $12
maxfileserr       equ   $13+$80
onesave           equ   $14+$80
badvalue          equ   $15+$80
badalignop        equ   $16
jmptblfull        equ   $17+$80
baddsop           equ   $18+$80
constraint        equ   $19+$80
notresolved       equ   $20
illegalcmd        equ   $21+$80
filetoolarge      equ   $22
nesterror         equ   $23+$80
forwardref        equ   $24
badopchar         equ   $25
evaltoocomplex    equ   $26
duplable          equ   $27

*** label bit flags (used in linker)

linkgeqbit        =     %0100_0000_0000_0000
linkequbit        =     %0010_0000_0000_0000
linkequ1bit       =     %0001_0000_0000_0000
linkentrybit      =     %0000_1000_0000_0000
linkabsbit        =     %0000_0100_0000_0000
linkusedbit       =     %0000_0010_0000_0000
linkequvalid      =     %0000_0001_0000_0000
linkentused       =     %0000_0000_1000_0000

*** label bit flags (used in assembler) ***

localbit          =     %0000_0000_0000_0001
variablebit       =     %0000_0000_0000_0010
macrobit          =     %0000_0000_0000_0100
equatebit         =     %0000_0000_0000_1000
externalbit       =     %0000_0000_0001_0000
macvarbit         =     %0000_0000_0010_0000
linkerbit         =     %0001_0000_0000_0000
usedbit           =     %0010_0000_0000_0000
entrybit          =     %0100_0000_0000_0000
absolutebit       =     %1000_0000_0000_0000




**** Segment Record Offsets ****
                  dum   $00
kindfield         ds    2
alignfield        ds    4
dsfield           ds    4
orgfield          ds    4
                  dend

                  do    doexpress
**** ExpressLoad equates ****

emaxsegments      equ   12                    ;only allow 12 segments in EXPRESS

notomf            equ   $8001
notomf2           equ   $8002
toomanysegs       equ   $8003
alreadyexpressed  equ   $8004
badsegnum         equ   $8005
badomfrec         equ   $8006
invalidexphdr     equ   $8007

                  dum   $00
oldsegnum         ds    2
newsegnum         ds    2
ekind             ds    2
fileoffset        ds    4
newfileoffset     ds    4
headerlen         ds    2
enamelen          ds    2
processed         ds    2
slcsize           ds    4
srelocsize        ds    4
                  dend
                  fin

**** DP storage ****
                  dum   $00
zpage             ds    4
labstr            ds    16                    ;Lable STR that we are working on
labnum            ds    2                     ;REC num of current lable
lableft           ds    2                     ;B-Tree Structures
labright          ds    2
labprev           ds    2
lablocal          ds    2                     ;REC of Local Lable Tree
labtype           ds    2                     ;Type of Label
labval            ds    4                     ;EQU value of Lable
foundlable        ds    32                    ;lable REC returned from FINDLABLE
globlab           ds    2                     ;REC of Current Global Lable
myvalue           ds    4
lvalue            ds    4
caseflag          ds    2
lableptr          ds    4
lableptr1         ds    4
nextlableptr      ds    4
asmnextlable      ds    4
lasmptr           ds    4
lasmptr1          ds    4
cptr              ds    4
cptr1             ds    4
clength           ds    4

tempptr           ds    4
tempptr1          ds    4
tempptr2          ds    4
segmentptr        ds    4
relptr            ds    4

filehandle        ds    4
filelen           ds    4
fileptr           ds    4
flen              ds    4
dirptr            ds    4
dirct             ds    2
linkaddress       ds    4
lineptr           ds    4
jmpptr            ds    4
jmphdl            ds    4
subtype           ds    4

modeflag          ds    2
doflag            =     %0000_0000_1000_0000

                  do    doexpress
*** Express DP ***
seghdrhdl         ds    4
seghdrptr         ds    4
segdatahdl        ds    4
segdataptr        ds    4
exphdl            ds    4
expptr            ds    4
                  fin

xreg              ds    4                     ;variables used by EVAL
yreg              ds    4
val               ds    4
xrel              ds    2
yrel              ds    2
zrel              ds    2
op                ds    2
top               ds    2
deczp             ds    2

workspace         ds    16

                  lst
here              =     *
                  lst   off
                  err   */$100
                  dend


asmpath           ds    130,0
rezpath           ds    130,0

loadid            ds    2

                  do    doexpress
currentseg        ds    2
currentseghdr     ds    2
numsegments       ds    2
lcsize            ds    4
relocsize         ds    4
expsize           ds    4
remapseg          ds    2
expoffset         ds    4
filemark          ds    4
                  fin

rellength         ds    4
interseg          ds    2
reloffset         ds    4
passnum           ds    2
omfoff1           ds    2
omfoff2           ds    2
omfshift          ds    2
omfbytes          ds    2
omfcode           ds    2
omflength         ds    2
linenum           ds    2
maxsegnum         ds    2
message           ds    2
domask            ds    2
dolevel           ds    2


orgval            ds    4
adrval            ds    4
globalhdl         ds    4
segmenthdl        ds    4
lnkflag           ds    2
lablect           ds    2
asmlablect        ds    2
cancelflag        ds    2
totalerrs         ds    2
linkversion       ds    2
omfversion        ds    2
verchg            ds    2
lkvchg            ds    2
zipflag           ds    2
notfound          ds    2
opflag            ds    2
shiftct           ds    2
savcount          ds    2
lableused         ds    2
noshift           ds    4
compresshdl       ds    4
outfileopen       ds    2
objok             ds    2
linktype          ds    2
totalbytes        ds    4
omfok             ds    2
bankorg           ds    2                     ;used to set segment load bank
jmplength         ds    2
dynamic           ds    2
extseg            ds    2
quicklink         ds    2

linksymhdl        ds    4
linksymtbl        ds    4
linksymnum        ds    2
linknextlbl       ds    4


opmask            ds    2                     ;EVAL variables
number            ds    2
bracevalid        ds    2
estack            ds    2
evallevel         ds    2
evalrelok         ds    2
offset            ds    2
*shiftct ds 2


errlable          ds    16,0
errpos            ds    2

newlable          ds    18,0

segheader
bytecnt           ds    4
resspc            ds    4,0
seglength         ds    4
lablen            dw    namelen*256
numlen            hex   04
version           hex   02
banksize          adrl  $10000
kind              dw    $1000
                  ds    2,0
org               adrl  $00
align             adrl  $00
numsex            hex   00
                  hex   00
segnum            ds    2
entry             adrl  $00
dispname          dw    44
disdata           dw    54+namelen
loadname          ds    namelen
segname           ds    namelen
lconst            hex   f2
lcbytes           hex   00000000

seghdrlen         dw    lconst-segheader


omfheader1
blkcount          ds    4
resspc1           ds    4
seglength1        ds    4
kind1             hex   00
lablen1           dfb   namelen
numlen1           dfb   4
version1          dfb   1
banksize1         adrl  $10000
                  adrl  $00
org1              adrl  $00
align1            adrl  $00
numsex1           dfb   0
lcbank            dfb   0
segnum1           dw    0
entry1            adrl  0
dispname1         ds    namelen*2+4
lconst1           hex   f200000000

seghdrlen1        dw    lconst1-omfheader1

extrabytes        ds    2

