mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-25 17:34:06 +00:00
168 lines
6.5 KiB
Plaintext
168 lines
6.5 KiB
Plaintext
$title ('GLOBAL VARIABLES')
|
|
global:
|
|
do;
|
|
|
|
/*
|
|
|
|
modified 3/28/81 R. Silberstein
|
|
modified 4/16/81 R. Silberstein
|
|
modified 4/20/81 R. Silberstein
|
|
modified 7/24/81 R. Silberstein
|
|
modified 9/2/81 R. Silberstein
|
|
|
|
*/
|
|
|
|
/*
|
|
This module defines all the global variables
|
|
of the assmembler.
|
|
*/
|
|
|
|
$include (:f1:macro.lit)
|
|
$include (:f1:struc.lit)
|
|
$INCLUDE (:F1:SUBR2.EXT)
|
|
|
|
dcl
|
|
|
|
/* dummy structure forces contiguous storage */
|
|
|
|
glob structure (
|
|
pass byte, /* current pass no, 1,2,3 */
|
|
|
|
/* address counters */
|
|
|
|
cip addr, /* current instruction pointer */
|
|
csegtype byte, /* current segment type, code,data,
|
|
stack or extra data */
|
|
csegvalue addr, /* current segment value */
|
|
csegspec byte, /* true if segment value specified */
|
|
|
|
escip addr, /* current ES instruction pointer */
|
|
cscip addr, /* current CS instruction pointer */
|
|
sscip addr, /* current SS instruction pointer */
|
|
dscip addr, /* current DS instruction pointer */
|
|
curcseg addr, /* current code segment value */
|
|
curdseg addr, /* current data segment value */
|
|
cursseg addr, /* current stack segment value */
|
|
cureseg addr, /* current extra segment value */
|
|
cspec byte, /* true if code segment value given */
|
|
dspec byte, /* true if data segment value given */
|
|
sspec byte, /* true if stack segment value given */
|
|
espec byte, /* true if extra segment value given */
|
|
|
|
|
|
/* print output parameters */
|
|
|
|
print$on byte, /* on/off flag */
|
|
printswitchoff byte, /* set/reset by NOLIST/LIST */
|
|
IFLIST BYTE, /* SET/RESET BY IFLIST/NOIFLIST */
|
|
maxcol byte); /* pagewidth */
|
|
|
|
dcl
|
|
|
|
sourcename (12) byte public, /* source file name */
|
|
sourcestop byte, /* used to contain zero */
|
|
savesource (12) byte public, /* source file during INLUDE file */
|
|
printdevice byte public, /* print file device */
|
|
SYMBOLDEVICE BYTE PUBLIC, /* SYMBOL FILE DEVICE */
|
|
title (30) byte public, /* user specified program title */
|
|
stoptitle byte, /* used to contain zero */
|
|
pagesize byte public, /* page size */
|
|
simform byte public, /* true if formfeed is to be simulated*/
|
|
sourcebuf (80) byte public, /* copy of source input to be printed*/
|
|
sourceptr byte public, /* source buffer pointer */
|
|
prefix (240) byte public, /* prefix to source line */
|
|
prefixptr byte public, /* pointer to prefix buffer */
|
|
ABSADDR (4) BYTE PUBLIC; /* ABSOLUTE ADDRESS FIELD */
|
|
|
|
|
|
/* references to glob structure */
|
|
|
|
dcl
|
|
pass byte public at(.glob.pass),
|
|
cip addr public at(.glob.cip),
|
|
csegtype byte public at(.glob.csegtype),
|
|
csegvalue addr public at(.glob.csegvalue),
|
|
csegspec byte public at(.glob.csegspec),
|
|
escip addr public at(.glob.escip),
|
|
cscip addr public at(.glob.cscip),
|
|
sscip addr public at(.glob.sscip),
|
|
dscip addr public at(.glob.dscip),
|
|
curcseg addr public at(.glob.curcseg),
|
|
curdseg addr public at(.glob.curdseg),
|
|
cursseg addr public at(.glob.cursseg),
|
|
cureseg addr public at(.glob.cureseg),
|
|
cspec byte public at(.glob.cspec),
|
|
dspec byte public at(.glob.dspec),
|
|
sspec byte public at(.glob.sspec),
|
|
espec byte public at(.glob.espec),
|
|
print$on byte public at(.glob.print$on),
|
|
printswitchoff byte public at(.glob.printswitchoff),
|
|
IFLIST BYTE PUBLIC AT (.GLOB.IFLIST),
|
|
maxcol byte public at(.glob.maxcol);
|
|
|
|
/* io error stpublic atus */
|
|
|
|
dcl
|
|
errors addr public, /* counts no of errors */
|
|
|
|
/* scanner variables: */
|
|
|
|
token struc( /* actual token scannes */
|
|
type byte, /* token type, legal values :
|
|
reg - register
|
|
pseudo - pseudo code
|
|
string - text string
|
|
spec - special character
|
|
number - number
|
|
operator - aritmetic operator
|
|
ident - identifier */
|
|
|
|
descr byte, /* token description, legal values :
|
|
nil - no specification
|
|
byte - 8 bit type
|
|
word - 16 bit type
|
|
dword - 32 bit type */
|
|
|
|
value addr) public, /* token value */
|
|
nextch byte public, /* next input character (lookahead) */
|
|
acclen byte public, /* accumulator length */
|
|
accum(80) byte public, /* actual token scanned */
|
|
accumsave(80) byte public, /* used to save accumulator */
|
|
acclensave byte public,
|
|
eofset byte public, /* true if end-of-file found */
|
|
|
|
/* Mischellaneous variables: */
|
|
|
|
intel$hex$on byte public, /* true if INTEL hex ouput format */
|
|
noerror byte public, /* errorflag in codemacro decoding */
|
|
errorprinted byte public, /* true if an error is printed */
|
|
firstmacroptr address public, /* pointer at first codemacro */
|
|
macroptr address public, /* current pointer within macros */
|
|
fullsymbtab byte public, /* true if symboltable is full */
|
|
include$on byte public, /* true if input from INCLUDE file */
|
|
IFLEVEL BYTE PUBLIC, /* IF-ENDIF NESTING LEVEL */
|
|
currentsymbol symbolstruc /* current scanned symbol */
|
|
public,
|
|
symbtabadr address public, /* pointer at symbol in table */
|
|
nooper byte public, /* no of instruction operands */
|
|
operands(4) operandstruc /* instruction operands,max 4 */
|
|
public,
|
|
codemacroptr address public, /* pointer to found codemacro */
|
|
help(5) byte public, /* scratch area for ascii numbers */
|
|
helpstop byte,
|
|
i byte public, /* scratch variable */
|
|
default$drive byte public, /* default disk drive */
|
|
include$default byte public, /* default disk for include files */
|
|
codemacro$flag byte public; /* true if building a codemacro */
|
|
|
|
globalinit: procedure public; /* initiate some global varaiables */
|
|
stoptitle,sourcestop,helpstop=0;
|
|
pagesize=66;
|
|
fullsymbtab,intel$hex$on=false;
|
|
CALL FILL (0, SIZE (TITLE), .TITLE);
|
|
codemacro$flag=false;
|
|
end globalinit;
|
|
|
|
|
|
end$module global;
|