mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-26 01:44:21 +00:00
Upload
Digital Research
This commit is contained in:
147
MPM OPERATING SYSTEMS/MPM-86/MPM-86 2.0 SOURCES/11/EXPR.X86
Normal file
147
MPM OPERATING SYSTEMS/MPM-86/MPM-86 2.0 SOURCES/11/EXPR.X86
Normal file
@@ -0,0 +1,147 @@
|
||||
$nolist
|
||||
|
||||
/*
|
||||
|
||||
modified 4/24/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
/* Symbol types : */
|
||||
|
||||
dcl
|
||||
reg lit '0', /* register */
|
||||
pseudo lit '1', /* pseudo instruction */
|
||||
code lit '2', /* instruction */
|
||||
string lit '3', /* character string */
|
||||
spec lit '4', /* special character */
|
||||
number lit '5', /* 8 or 16 bit number */
|
||||
variable lit '6',
|
||||
lab lit '7', /* label */
|
||||
operator lit '8', /* operator in expressions */
|
||||
doubledefined lit '0f9h', /* doubled defined symbol */
|
||||
neglected lit '0fah', /* neglected symb.,never to be def. */
|
||||
ident lit '0fbh', /* identificator, scanner output */
|
||||
udefsymb lit '0fdh', /* undefined symbol */
|
||||
symbol lit '0feh', /* variable,label or undef. symb. */
|
||||
deletedsymb lit '0ffh'; /* deleted symbol (not used */
|
||||
|
||||
|
||||
/* Symbol description values */
|
||||
|
||||
dcl
|
||||
nil lit '0', /* no specification */
|
||||
byt lit '1', /* symbol is 8-bit type */
|
||||
wrd lit '2', /* symbol is 16 bit type */
|
||||
dwrd lit '4'; /* symbol is 2*16 bit type
|
||||
or a segment register */
|
||||
|
||||
/* Register values : */
|
||||
|
||||
dcl
|
||||
rbx lit '3',
|
||||
rbp lit '5',
|
||||
rsi lit '6',
|
||||
rdi lit '7',
|
||||
|
||||
res lit '0', /* segment registers */
|
||||
rcs lit '1',
|
||||
rss lit '2',
|
||||
rds lit '3';
|
||||
|
||||
/* Symbolic operators */
|
||||
|
||||
dcl
|
||||
oshort lit '0', /* 8-bit value of expression */
|
||||
oor lit '1', /* logical OR */
|
||||
oxor lit '2', /* logical XOR */
|
||||
oand lit '3', /* logical AND */
|
||||
onot lit '4', /* logical NOT */
|
||||
oeq lit '5', /* equal */
|
||||
ogt lit '6', /* greater */
|
||||
oge lit '7', /* greater or equal */
|
||||
olt lit '8', /* less */
|
||||
ole lit '9', /* less or equal */
|
||||
one lit '10', /* not equal */
|
||||
omod lit '11', /* arithmetic MOD */
|
||||
oshl lit '12', /* shift left */
|
||||
oshr lit '13', /* shift rigth */
|
||||
optr lit '14', /* take type of 1. op, value of 2. */
|
||||
ooffset lit '15', /* offset value of operand */
|
||||
oseg lit '16', /* segment value of operand */
|
||||
otype lit '17', /* type value of operand */
|
||||
olength lit '18', /* length attribute of variables */
|
||||
olast lit '19', /* length - 1 */
|
||||
leftbracket lit '''[''',
|
||||
rightbracket lit ''']''';
|
||||
|
||||
dcl
|
||||
|
||||
operandstruc lit 'struc(
|
||||
length addr,
|
||||
stype byte,
|
||||
sflag byte,
|
||||
segment addr,
|
||||
offset addr,
|
||||
baseindex byte)',
|
||||
|
||||
|
||||
/* define bits of SFLAG of structures above */
|
||||
|
||||
type$bit lit '7h', /* bit 0-2 */
|
||||
segtypebit lit '18h', /* bit 3-4 */
|
||||
segmbit lit '20h', /* bit 5 */
|
||||
iregbit lit '40h', /* bit 6 */
|
||||
bregbit lit '80h', /* bit 7 */
|
||||
|
||||
/* left-shift counters */
|
||||
typecount lit '0',
|
||||
segtypecount lit '3',
|
||||
segmcount lit '5',
|
||||
iregcount lit '6',
|
||||
bregcount lit '7',
|
||||
|
||||
/* define bits of BASEINDEX byte of structures above */
|
||||
|
||||
indexregbit lit '7', /* bit 0-2 */
|
||||
baseregbit lit '38h', /* bit 3-5 */
|
||||
nooverridebit lit '40h', /* bit 6 */
|
||||
|
||||
/* left shift counters */
|
||||
|
||||
indexregcount lit '0',
|
||||
baseregcount lit '3',
|
||||
noovercount lit '6';
|
||||
|
||||
|
||||
dcl
|
||||
udefsymbol lit '10'; /* undefined elem. of expression */
|
||||
|
||||
newsymbol: proc(lg,stradr,result) byte external;
|
||||
dcl lg byte,(stradr,result) addr;
|
||||
end newsymbol;
|
||||
|
||||
findsymbol: proc(lg,stradr,result) byte external;
|
||||
dcl lg byte,(stradr,result) addr;
|
||||
end findsymbol;
|
||||
|
||||
getattributes: proc(symbadr,dest) external;
|
||||
dcl (symbadr,dest) addr;
|
||||
end getattributes;
|
||||
|
||||
enterattributes: proc(symbadr,source) external;
|
||||
dcl (symbadr,source) addr;
|
||||
end enterattributes;
|
||||
|
||||
scan: proc external;
|
||||
end scan;
|
||||
|
||||
specialtoken: proc (tok) byte external;
|
||||
dcl tok byte;
|
||||
end specialtoken;
|
||||
|
||||
bracketexpr: proc (pt) byte external;
|
||||
dcl pt address;
|
||||
end bracketexpr;
|
||||
|
||||
$list
|
||||
|
||||
Reference in New Issue
Block a user