mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-23 08:24:18 +00:00
168 lines
6.6 KiB
Plaintext
168 lines
6.6 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;
|
||
|