head     56.3;
access   paws bayes jws quist brad dew jwh;
symbols  ;
locks    ; strict;
comment  @# @;


56.3
date     93.01.27.13.34.41;  author jwh;  state Exp;
branches ;
next     56.2;

56.2
date     93.01.27.12.10.59;  author jwh;  state Exp;
branches ;
next     56.1;

56.1
date     91.11.05.09.24.49;  author jwh;  state Exp;
branches ;
next     55.2;

55.2
date     91.11.04.15.40.50;  author jwh;  state Exp;
branches ;
next     55.1;

55.1
date     91.08.25.10.02.01;  author jwh;  state Exp;
branches ;
next     54.2;

54.2
date     91.08.21.13.28.20;  author jwh;  state Exp;
branches ;
next     54.1;

54.1
date     91.03.18.15.12.23;  author jwh;  state Exp;
branches ;
next     53.2;

53.2
date     91.03.18.13.55.56;  author jwh;  state Exp;
branches ;
next     53.1;

53.1
date     91.03.11.19.13.23;  author jwh;  state Exp;
branches ;
next     52.2;

52.2
date     91.03.11.17.11.34;  author jwh;  state Exp;
branches ;
next     52.1;

52.1
date     91.02.19.08.58.33;  author jwh;  state Exp;
branches ;
next     51.2;

51.2
date     91.02.18.21.08.00;  author jwh;  state Exp;
branches ;
next     51.1;

51.1
date     91.01.30.15.57.28;  author jwh;  state Exp;
branches ;
next     50.2;

50.2
date     91.01.30.09.43.45;  author jwh;  state Exp;
branches ;
next     50.1;

50.1
date     90.10.29.16.10.20;  author jwh;  state Exp;
branches ;
next     49.2;

49.2
date     90.10.29.14.32.37;  author jwh;  state Exp;
branches ;
next     49.1;

49.1
date     90.08.14.13.59.33;  author jwh;  state Exp;
branches ;
next     48.2;

48.2
date     90.08.14.09.58.02;  author jwh;  state Exp;
branches ;
next     48.1;

48.1
date     90.07.26.11.04.57;  author jwh;  state Exp;
branches ;
next     47.2;

47.2
date     90.07.24.15.18.05;  author jwh;  state Exp;
branches ;
next     47.1;

47.1
date     90.05.14.10.38.27;  author dew;  state Exp;
branches ;
next     46.1;

46.1
date     90.05.07.08.28.39;  author jwh;  state Exp;
branches ;
next     45.2;

45.2
date     90.05.04.15.12.02;  author jwh;  state Exp;
branches ;
next     45.1;

45.1
date     90.04.19.15.35.46;  author jwh;  state Exp;
branches ;
next     44.2;

44.2
date     90.04.19.13.41.46;  author jwh;  state Exp;
branches ;
next     44.1;

44.1
date     90.04.01.21.53.22;  author jwh;  state Exp;
branches ;
next     43.2;

43.2
date     90.04.01.16.41.09;  author jwh;  state Exp;
branches ;
next     43.1;

43.1
date     90.03.20.13.43.12;  author jwh;  state Exp;
branches ;
next     42.2;

42.2
date     90.03.19.16.29.34;  author jwh;  state Exp;
branches ;
next     42.1;

42.1
date     90.01.23.17.28.32;  author jwh;  state Exp;
branches ;
next     41.3;

41.3
date     90.01.20.17.06.29;  author jwh;  state Exp;
branches ;
next     41.2;

41.2
date     89.12.26.11.31.28;  author jwh;  state Exp;
branches ;
next     41.1;

41.1
date     89.12.22.11.11.12;  author jwh;  state Exp;
branches ;
next     40.3;

40.3
date     89.12.21.15.26.04;  author jwh;  state Exp;
branches ;
next     40.2;

40.2
date     89.11.21.11.14.41;  author jwh;  state Exp;
branches ;
next     40.1;

40.1
date     89.09.29.11.34.22;  author jwh;  state Exp;
branches ;
next     39.2;

39.2
date     89.09.28.17.44.00;  author jwh;  state Exp;
branches ;
next     39.1;

39.1
date     89.09.26.16.19.46;  author dew;  state Exp;
branches ;
next     38.2;

38.2
date     89.09.26.15.02.14;  author dew;  state Exp;
branches ;
next     38.1;

38.1
date     89.08.29.11.09.41;  author jwh;  state Exp;
branches ;
next     37.2;

37.2
date     89.08.28.12.44.11;  author jwh;  state Exp;
branches ;
next     37.1;

37.1
date     89.05.12.11.22.30;  author dew;  state Exp;
branches ;
next     36.3;

36.3
date     89.05.12.09.42.18;  author quist;  state Exp;
branches ;
next     36.2;

36.2
date     89.05.11.12.13.55;  author quist;  state Exp;
branches ;
next     36.1;

36.1
date     89.02.06.10.01.40;  author dew;  state Exp;
branches ;
next     35.1;

35.1
date     89.02.02.13.11.05;  author dew;  state Exp;
branches ;
next     34.1;

34.1
date     89.01.23.15.47.16;  author jwh;  state Exp;
branches ;
next     33.2;

33.2
date     89.01.20.16.52.36;  author jwh;  state Exp;
branches ;
next     33.1;

33.1
date     89.01.16.11.23.45;  author dew;  state Exp;
branches ;
next     32.2;

32.2
date     89.01.13.11.50.55;  author dew;  state Exp;
branches ;
next     32.1;

32.1
date     89.01.10.11.28.19;  author bayes;  state Exp;
branches ;
next     31.2;

31.2
date     89.01.09.12.28.09;  author dew;  state Exp;
branches ;
next     31.1;

31.1
date     88.12.14.17.49.16;  author bayes;  state Exp;
branches ;
next     30.2;

30.2
date     88.12.14.13.59.53;  author bayes;  state Exp;
branches ;
next     30.1;

30.1
date     88.12.09.13.27.42;  author dew;  state Exp;
branches ;
next     29.2;

29.2
date     88.12.08.16.10.24;  author bayes;  state Exp;
branches ;
next     29.1;

29.1
date     88.10.31.15.12.04;  author bayes;  state Exp;
branches ;
next     28.2;

28.2
date     88.10.31.11.09.40;  author bayes;  state Exp;
branches ;
next     28.1;

28.1
date     88.10.06.10.42.43;  author dew;  state Exp;
branches ;
next     27.2;

27.2
date     88.10.05.18.09.43;  author bayes;  state Exp;
branches ;
next     27.1;

27.1
date     88.09.29.11.04.06;  author bayes;  state Exp;
branches ;
next     26.1;

26.1
date     88.09.28.12.15.56;  author bayes;  state Exp;
branches ;
next     25.3;

25.3
date     88.03.18.09.17.57;  author quist;  state Exp;
branches ;
next     25.2;

25.2
date     88.03.08.15.49.03;  author bayes;  state Exp;
branches ;
next     25.1;

25.1
date     88.03.02.08.57.21;  author bayes;  state Exp;
branches ;
next     24.2;

24.2
date     88.03.01.09.04.47;  author bayes;  state Exp;
branches ;
next     24.1;

24.1
date     87.08.31.08.54.55;  author jws;  state Exp;
branches ;
next     23.2;

23.2
date     87.08.30.14.44.50;  author jws;  state Exp;
branches ;
next     23.1;

23.1
date     87.08.26.09.31.26;  author bayes;  state Exp;
branches ;
next     22.3;

22.3
date     87.08.25.18.24.39;  author jws;  state Exp;
branches ;
next     22.2;

22.2
date     87.08.20.15.47.05;  author larry;  state Exp;
branches ;
next     22.1;

22.1
date     87.08.17.10.08.12;  author bayes;  state Exp;
branches ;
next     21.2;

21.2
date     87.08.15.16.15.54;  author larry;  state Exp;
branches ;
next     21.1;

21.1
date     87.08.12.12.57.16;  author bayes;  state Exp;
branches ;
next     20.2;

20.2
date     87.08.12.09.48.46;  author bayes;  state Exp;
branches ;
next     20.1;

20.1
date     87.07.30.10.08.04;  author bayes;  state Exp;
branches ;
next     19.2;

19.2
date     87.07.29.17.30.19;  author larry;  state Exp;
branches ;
next     19.1;

19.1
date     87.06.01.07.29.49;  author jws;  state Exp;
branches ;
next     18.2;

18.2
date     87.05.31.14.34.18;  author jws;  state Exp;
branches ;
next     18.1;

18.1
date     87.05.20.14.20.10;  author bayes;  state Exp;
branches ;
next     17.2;

17.2
date     87.05.20.09.58.34;  author bayes;  state Exp;
branches ;
next     17.1;

17.1
date     87.04.30.09.38.13;  author jws;  state Exp;
branches ;
next     16.1;

16.1
date     87.04.26.14.55.16;  author jws;  state Exp;
branches ;
next     15.2;

15.2
date     87.04.24.17.42.37;  author jws;  state Exp;
branches ;
next     15.1;

15.1
date     87.04.13.08.17.30;  author jws;  state Exp;
branches ;
next     14.2;

14.2
date     87.04.12.16.11.44;  author jws;  state Exp;
branches ;
next     14.1;

14.1
date     87.04.01.14.01.25;  author jws;  state Exp;
branches ;
next     13.2;

13.2
date     87.04.01.08.31.43;  author jws;  state Exp;
branches ;
next     13.1;

13.1
date     87.02.28.17.47.46;  author jws;  state Exp;
branches ;
next     12.2;

12.2
date     87.02.28.15.18.31;  author jws;  state Exp;
branches ;
next     12.1;

12.1
date     87.02.02.12.32.07;  author jws;  state Exp;
branches ;
next     11.2;

11.2
date     87.02.02.09.48.52;  author jws;  state Exp;
branches ;
next     11.1;

11.1
date     87.01.19.08.58.39;  author jws;  state Exp;
branches ;
next     10.2;

10.2
date     87.01.18.18.34.44;  author jws;  state Exp;
branches ;
next     10.1;

10.1
date     86.12.24.10.01.53;  author jws;  state Exp;
branches ;
next     9.2;

9.2
date     86.12.23.16.25.39;  author jws;  state Exp;
branches ;
next     9.1;

9.1
date     86.12.12.13.18.12;  author bayes;  state Exp;
branches ;
next     8.3;

8.3
date     86.12.12.09.44.49;  author bayes;  state Exp;
branches ;
next     8.2;

8.2
date     86.12.09.11.25.08;  author jws;  state Exp;
branches ;
next     8.1;

8.1
date     86.11.27.10.59.56;  author jws;  state Exp;
branches ;
next     6.3;

6.3
date     86.11.26.16.19.43;  author jws;  state Exp;
branches ;
next     6.2;

6.2
date     86.11.25.14.46.06;  author jws;  state Exp;
branches ;
next     6.1;

6.1
date     86.11.04.16.40.45;  author paws;  state Exp;
branches ;
next     5.2;

5.2
date     86.11.04.11.39.04;  author paws;  state Exp;
branches ;
next     5.1;

5.1
date     86.10.28.14.00.35;  author hal;  state Exp;
branches ;
next     4.2;

4.2
date     86.10.28.11.09.59;  author hal;  state Exp;
branches ;
next     4.1;

4.1
date     86.09.30.18.25.45;  author hal;  state Exp;
branches ;
next     3.2;

3.2
date     86.09.30.13.51.56;  author hal;  state Exp;
branches ;
next     3.1;

3.1
date     86.09.01.11.12.39;  author hal;  state Exp;
branches ;
next     2.2;

2.2
date     86.09.01.08.52.20;  author hal;  state Exp;
branches ;
next     2.1;

2.1
date     86.07.30.14.01.04;  author hal;  state Exp;
branches ;
next     1.3;

1.3
date     86.07.30.09.09.51;  author geli;  state Exp;
branches ;
next     1.2;

1.2
date     86.07.15.16.36.19;  author geli;  state Exp;
branches ;
next     1.1;

1.1
date     86.06.30.12.49.56;  author danm;  state tmp;
branches ;
next     ;


desc
@Base file for PWS 3.2 release.

@


56.3
log
@
pws2rcs automatic delta on Wed Jan 27 13:14:25 MST 1993
@
text
@{ THIS FILE CONTAINS THE GLOBAL DECLARATIONS FOR THE 68000 ASSEMBLER }

			(* Note - when making the changes of 3/8/85 to
			   partially support the mc68881 floating point
			   coprocessor, several areas and/or items
			   of special interest were flagged in the
			   assembler source. The flag used was a
			   series of three question marks (i.e. "???").
			   These should be inspected and removed as
			   appropriate changes are made for full support
			   of the MC68881 and MC68020
						Brad Taylor
			 *)

CONST
  VERSTRING='[3.25]';
  MONTH=10;
  DAY  =28;
  YEAR =91;

var bump_value : integer; { JWH 11/21/89. }

$include 'M68KFPDEC'$

$INCLUDE 'NOPCODES'$

  MAXLINELEN=200;
  BLANK=' ';
  COMMA=',';
  PERIOD='.';
  OPENPAREN='(';
  CLOSEPAREN=')';
  NUMBERSIGN='#';
  ATSIGN='@@';
  PLUS='+';
  MINUS='-';
  MAXNAMELEN=11; {LAF 870820}


TYPE
  WORD32=PACKED RECORD CASE INTEGER OF     {ASSUMES ALLOCATION ORDER}
	   1: (HIHALF,LOHALF: SHORTINT);
	   2: (BYTE1, BYTE2, BYTE3, BYTE4: BYTE);
	   3: (BITS: PACKED ARRAY[0..31] OF BOOLEAN);
	   4: (LONGINT: INTEGER);
	   5: (fltpt : longreal);
	   6: (fltptwd1, fltptwd2, fltptwd3, fltptwd4 : shortint );
	 END;

  OPNAME=PACKED ARRAY[1..MAXNAMELEN] OF CHAR; (* LAF 861120 *) {LAF 870820}

  OPREC=PACKED RECORD
	       NAME: OPNAME;
	       CODE: SHORTINT;
	       CLASS: SHORTINT
	     END;

  OPNUM=0..NOPCODES;

  OPTABLETYPE = ARRAY[OPNUM] OF OPREC;

  ERRCODE=(ERRBADOP, ERRUNDEFSYM, ERRBADMODE,
	   ERRLABELREQD, ERRDUPDEFSYM, ERRBADSUFFIX, ERRBADSIZE,
	   ERRBADCONST, ERRBADEXPR, ERRARITHOFLO, ERRFIELDOFLO, ERRBADSYNTAX,
	   ERRBADBASE,ERREXTREFS,ERRMODEDECL,
	   ERRPHASE, ERRINCOPEN, ERRBADINCLUDE,ERRBADCOM, ERRGOTSTART,
	   ERRDIROVF,ERRCOMMAEXP, ERRSYMBEXP, ERREOLEXP, ERRREGEXP,
	   ERRAREGEXP, ERRCLOSEPEXP,ERRMODNAME, erropen, readerror, errwrite,
	   errcread,erroddorg,errTASwarn,errlinecnt,
	   errfpregnotallowed, errfpsysregnotallowed, errfpopdnotallowed,
	   errdifffpregneeded, errfpconstneeded, errfpregneeded,
	   errfpsysregneeded, errfpmonadicneeded, errfpel, errfpregexp,
	   errbadfpk, errfpromconst, errfpimmedparse, errfpimmedsize,
	   errfpinternalerr, errfpbccsize,
	   ERRCOLONEXP,ERRLBRACEEXP,ERRRBRACEEXP,ERRRBRACKEXP,ERRRBRACKUNEXP,
	   ERR2INNER,ERR2DISP,ERR2INDEX,ERR2AN,ERR2ZPC,ERRMISZPC,
	   ERRBADSCALE,ERRRELREFS);

  EVALWHEN=(NOK, OK1, OK2);


  LSTRING=STRING[MAXLINELEN];

  SYMKIND=(ABSOLUT, RELATIVE, AREG, DREG, STREG,
	   fpreg, fpstreg, PREG);
  STREF=^SYMTABENTRY;
  EXTREFPTR=^EXTREFBLOCK;
  FORCEMODE=(NOMODE, LMODE, SMODE, RMODE);

  SYMTABENTRY=PACKED RECORD
		SLINK,SPLINK :STREF;
		DEFINED: SHORTINT;
		SKIND: SYMKIND;
		SVALUE: WORD32;
		SEXTPTR:EXTREFPTR;  { USED FOR EQUATES TO EXTERNALS }
		EXT: BOOLEAN;    { FLAG TO INDICATE AN EXTERNAL }
		SMODE: FORCEMODE;
		SNAME:STRING80;
	      END;

  EXPRVALUE=RECORD
	      BASE: SYMKIND;
	      OFFSET: WORD32;
	      EXPREFS: EXTREFPTR;
	      EMODE: FORCEMODE
	    END;


  EXTREFBLOCK=PACKED RECORD
		MINUS: BOOLEAN;
		SYMPT: STREF
	      END;

  DEFPTR=^DEFREC;

  DEFREC=PACKED RECORD
	   DEFNEXT: DEFPTR;
	   DEFTYPE: RELOCTYPE;
	   LOCATION: WORD32;
	   IDNAME: STRING80;
	 END;

  EXTPTR=^EXTREC;

  EXTREC=PACKED RECORD
	   EXTNEXT: EXTPTR;
	   EXTNAME: STRING80;
	 END;

  REFPTR=^REFREC;

  REFREC=RECORD
	   REFNEXT: REFPTR;
	   INFO: GENERALVALUE;
	   VALUE: WORD32;
	   EXTSTUFF: REFERENCEPTR;
	   EXTSTUFF2: REFERENCEPTR;
	 END;

  OPSIZETYPE = 0..12;
  DISPSIZE = (S_RES, S_NULL, S_WORD, S_LONG);

  OPERAND=RECORD
	    SIZE:           OPSIZETYPE;
	    MODE:           0.. 9;      (* 8=fpreg, 9=fpstreg *)
	    { REG:            0..16; } (* STACK REGISTERS RANGE THROUGH 14 *)
	    { 12/26/89 JWH : }
	    REG:            0..22;    (* STACK REGISTERS RANGE THROUGH 14 *)

{ 15      } INDEXMODE:      (ADDRS, DATA);
{ 14,13,12} INDEX:          0..7;       { INDEX REG NUMBER }
{ 11      } INDEXSIZE:      (WRD, LONG);
{ 10, 9   } INDEXSCALE:     0..3;
{  8      } FULL_FORMAT:    BOOLEAN;
{  7      } BASE_SUPPRESS:  BOOLEAN;
{  6      } INDEX_SUPPRESS: BOOLEAN;
{  5, 4   } BD_SIZE:        DISPSIZE;
{  3      } FILL:           BOOLEAN;
{  2      } POST_INDEXED:   BOOLEAN;
{  1, 0   } OD_SIZE:        DISPSIZE;

	    VALUE:          EXPRVALUE;
	    OD_VALUE:       EXPRVALUE;(* OUTER DISPLACEMENT *)
	  END;

  BITFIELDTYPE=
	  RECORD
	    DOFF:   BOOLEAN;    (* IS OFFSET A D-REGISTER ? *)
	    OFFSET: 0..31;
	    DWID:   BOOLEAN;    (* IS WIDTH  A D-REGISTER ? *)
	    WIDTH:  0..31;
	  END;

  BIGREC=PACKED ARRAY [0..511] OF BYTE;

  IDXWORD=PACKED RECORD   {ASSUMES ALLOCATION ORDER}
	  DA: BOOLEAN;
	  REGI: 0..7;
	  WL: BOOLEAN;
	  SCALE: 0..3;
	  FULL: BOOLEAN;
	  CASE INTEGER OF
	    0: (DISP: 0..255);
	    1: (
    {  7      } BASE_SUPPRESS:  BOOLEAN;
    {  6      } INDEX_SUPPRESS: BOOLEAN;
    {  5, 4   } BD_SIZE:        DISPSIZE;
    {  3      } FILL:           BOOLEAN;
    {  2      } POST_INDEXED:   BOOLEAN;
    {  1, 0   } OD_SIZE:        DISPSIZE;
	       );
	END;

  TITLELINE= STRING[60];

ORGMODETYPE=(SHORTFWDS, LONGFWDS);
PCMODETYPE=(ABS, REL);
CHARKINDS=(SPECIAL, ALPHABETIC, NUMERIC);


ADDRESS = ^INTEGER;   { GENERIC POINTER }

MDPTRTYPE = ^MODULEDIRECTORY;

LDIRPTRTYPE = ^DIRECTRY;
DIRECTRY = ARRAY[0..1] OF DIRENTRY;

SOURCEPTR = ^SOURCEREC;

SOURCEREC = RECORD
	      NEXTSOURCE: SOURCEPTR;
	      SOURCELINE: STRING[MAXLINELEN];
	    END;

$if mc68881$
fpsysflagtyp = 0..7;            (* system register flag type *)
fpformtyp = 0..7;               (* src/dest format type type *)
$end$

CONST
  OPTABLE = OPTABLETYPE[
      $INCLUDE 'OPCODES'$
      ];

VAR
  RDATE: DATEREC;             { DATE OF CURRENT REVISION }
  CDATE: DATEREC;            { CURRENT DATE }
  ctime: timerec;             { current time }
  ctimestr: string[8];        { string of current time }
  CHTYPE: ARRAY[CHAR] OF CHARKINDS;
  XLATE: ARRAY[CHAR] OF CHAR;            {USED FOR UPCASE CONVERSION }
  CH: CHAR;                  {SCRATCH VAR}
  EVALOK: EVALWHEN;          { SCRATCH VAR }
  EVALUE: EXPRVALUE;         { SCRATCH VAR }
  PASS:1..2;                 { INDICATES PASS NUMBER }
  SUPERLIST: BOOLEAN;         { LIST BOOLEAN SET IN INITIAL DIALOGUE }
  LISTING: BOOLEAN;          { STATE VAR FOR LISTING SET BY PSEUDO OPS}
  didheader: boolean;        { indicates if header line was output }
  listdone: boolean;         { indicates assembly source list is done }
  decimal: boolean;          { print addresses in decimal (ugh!)}
  OBJECT: BOOLEAN;           { STATE VAR FOR OBJECT OUTPUT }
  DEBUG: BOOLEAN;            { TURNS ON DEBUG MODE }
  LISTSYMS: BOOLEAN;         { PRINT SYMBOL TABLE }
  ERRINLINE: BOOLEAN;        { INDICATES AN ERROR IN CURRENT LINE}
  LINEERRCODE: ERRCODE;      { WHAT THE ERROR WAS }
  ERRCOUNT, LINENO: SHORTINT;  { COUNT LINES AND ERRORS }
  PASS1ERRS: SHORTINT;        { HOLDS NUMBER OF PASS 1 ERRORS }
  LASTERRLINE: SHORTINT;      { NUMBER OF LAST ERROR LINE}
  INCLUDELINENO: SHORTINT;
  MAINLINENO: SHORTINT;        {KEEP TRACK OF LINE NUMBERS IN FILES}

  CURROP: OPREC;           { CURRENT SOURCE LINE }
  CURCOL: SHORTINT;
  LAB: STRING255;
  LINE: LSTRING;
  LINECOPY:LSTRING;
  PRINTLINE:LSTRING;
  LOCCTR: WORD32;              {CURRENT PC}
  LOCCTB: WORD32;
  LOWRORG:WORD32;              { LOWEST RELOCATABLE ADDRESS }
  HIGHADDR:WORD32;             { HIGHEST RELOCATABLE ADDRESS }
  GOTSTART: BOOLEAN;
  STARTLOC: WORD32;            { START LOCATION FOR EXECUTION  }
  STARTMODE: RELOCTYPE;          { MODE OF STARTLOC }
$if false$
			(* variable lastop is not used anywhere *)
  LASTOP: OPNUM;
$end$
  ZOPFILE: FILE OF OPREC;      { OPCODE FILE }
  SIZESUFFIX:CHAR;             { INDICATES IF .B, .W, .S OR .L SUFFIX FOUND }
  SIZE: SHORTINT;    { CURRENT SIZE OF OPERAND DETERMINED FROM SIZESUFFIX }
  BITFIELD: BITFIELDTYPE;      { OFFSET AND WIDTH FOR BIT FIELD INSTRUCTIONS }
  OPERAND1, OPERAND2: OPERAND;  { HOLD OPERAND INFORMATION FOR CURRENT INST }
  OPERAND4, OPERAND5, OPERAND6: OPERAND; { BFxxx & CAS2 }
$if mc68881$
  operand3 : operand;           (* hold opd info for FSINCOS and
					FMOVE.P FPn,<ea>(k)           *)
  fpreadmode : boolean;         (* flt. pt. mode flag for GETSYMBOL() *)
  allowfpopds  : boolean;       (* allow flt. pt. operands ? *)
  fpsysflag : fpsysflagtyp;     (* 881 system reg flag for FMOVEM *)
$end$
  PCMODE: PCMODETYPE;          { INDICATES ORG OR RORG IN EFFECT }
  ORGMODE:ORGMODETYPE;       { INDICATES IF FORCE LONG FOR FWD REFS }
  ZERO32: WORD32;              { ALWAYS HAS 32 BIT ZERO }
  FWDREF: BOOLEAN;             { FLAG TO INDICATE A FWD REF IN OPERAND }
  LP: TEXT;
  REPLY: CHAR;                 { HOLDS Y/N RESPONSE FOR LIST OPTION }
  LLEN: SHORTINT;               { PRINTER WIDTH }
  SHORTMODE: BOOLEAN;          { PRINT MODE FOR DC'S }
  CONTIGUOUS: BOOLEAN;
  ENDOFCODE: INTEGER;

  PUNCHLC: SHORTINT;
  PUNCHBLK: BIGREC;
  OBJCTR: SHORTINT;


  EXTFILE: EXTPTR;  { LINKER OUTPUT FILES }
  DEFFILE: DEFPTR;
  REFFILE: REFPTR;

  EXTHEAD: EXTPTR;
  EXTTAIL: EXTPTR;
  DEFHEAD: DEFPTR;
  DEFTAIL: DEFPTR;
  globalptr: defptr;
  REFHEAD: REFPTR;
  REFTAIL: REFPTR;
  SOURCEHEAD: SOURCEPTR;
  SOURCETAIL: SOURCEPTR;

  SOURCEFILENAME: STRING255;
  LISTNAME:STRING255;
  OBJNAME: STRING255;
  MODNAME: STRING80;
  GOTMODNAME: BOOLEAN;
  iomsg: string80; { used for error messages }
  EXTCTR: SHORTINT;  { COUNTS NUMBER OF EXTERNAL SYMBOLS FROM REFA, REFR'S }
  DEFCTR: SHORTINT;  { COUNTS NUMBER OF DEFFILE RECORDS }
  FIRSTREF: BOOLEAN;
  REFCTR: SHORTINT;  { COUNTS NUMBER OF REFFILE RECORDS }
  REFLOC: INTEGER;
  LASTREFLOC: INTEGER;
  REFOFF: INTEGER;    { THESE ARE USED IN CALCULATING REF OFFSETS }
  ORIGIN: INTEGER;    { START LOCATION OF CURRENT TEXTREC }

  TEXTSTART: INTEGER;
  TEXTSIZE: INTEGER;
  REFSTART: INTEGER;
  REFSIZE: INTEGER;
  DEFSTART: INTEGER;
  DEFSIZE: INTEGER;
  EXTSTART: INTEGER;
  EXTSIZE: INTEGER;
  GLOBALSIZE: INTEGER;
  GLOBALBASE: INTEGER;
  SOURCESTART: INTEGER;
  SOURCESIZE: INTEGER;

  TEXTRECORDS: INTEGER;

  TEXTINFO: SHORTINT;    { OFFSET OF INFO FOR TEXT RECORDS }

  GV: GENERALVALUE; { SCRATCH GVR }

  GOTCOM: BOOLEAN;  {SAYS WE HAVE SEEN A VALID COM STATEMENT}

  CODE: RECORD      {ASSUMES ALLOCATION ORDER}
	 CASE INTEGER OF
	 0:(INT: PACKED ARRAY[1..11] OF SHORTINT);
	 1:(BYT: PACKED ARRAY[1..22] OF BYTE);
	 2:(TYPE2: PACKED RECORD
	    FILL1: 0..3; MSIZE: 0..3; REGX: 0..7; OPM1: 0..7;
	    B5: BOOLEAN; B4: BOOLEAN; B3: BOOLEAN; REGY: 0..7;
	    END);
	 3:(TYPE3: PACKED RECORD
	    OPCODE: 0..15; DATA1: 0..7; B8: BOOLEAN; SIZE: 0..3; EA: 0..63;
	    END);
	 4:(TYPE4: PACKED RECORD
	    XFILL: 0..31; B10: BOOLEAN; B9: BOOLEAN; DMODE: 0..7; MODE: 0..7;
	    FILL: 0..7;
	    END);
	 5:(TYPE5: PACKED RECORD
	    XXFILL: 0..511; B6: BOOLEAN; FILL5:0..3; VECTOR: 0..15;
	    END);
	 6:(IDX: {PACKED} ARRAY[1..11] OF IDXWORD);
$if mc68881$
	 7:( fptype1: packed record
			f_line : 0..15;         (* op word *)
			cp_id : 0..7;
			typ : 0..7;
			num : 0..63;
			opclass : 0..7;         (* Command word *)
			rx : 0..7;
			ry : 0..7;
			extension : 0..127;     (* also used for CPRED *)
			end );
$end$
	 8:(BITS: PACKED RECORD
	    B15,B14,B13,B12,B11,B10,B9,B8,B7,B6,B5,B4,B3,B2,B1,B0: BOOLEAN;
	    END);
	 9:(BITS2: PACKED RECORD
	    FILL: SHORTINT;             (* first word *)
	    B15,B14,B13,B12,B11,B10,B9,B8,B7,B6,B5,B4,B3,B2,B1,B0: BOOLEAN;
	    END);
	10:(OITS: PACKED RECORD
	    B15: BOOLEAN; O4,O3,O2,O1,O0: 0..7;
	    END);
	11:(OITS2: PACKED RECORD
	    FILL: SHORTINT;             (* first word *)
	    B15: BOOLEAN; O4,O3,O2,O1,O0: 0..7;
	    END);
	12:(OITS3: PACKED RECORD
	    FILL1: SHORTINT;            (* first  word *)
	    FILL2: SHORTINT;            (* second word *)
	    B15: BOOLEAN; O4,O3,O2,O1,O0: 0..7;
	    END);
	13:(BF: PACKED RECORD
	    FILL: SHORTINT;             (* first word *)
	    B15: BOOLEAN;   REG: 0..7;  (* bits 15-12 *)
	    DOFF: BOOLEAN; OFFSET: 0..31; (* bits 11- 6 *)
	    DWID: BOOLEAN; WIDTH : 0..31; (* bits  5- 0 *)
	    END);
       END;

  CODELENGTH: SHORTINT;

  PAGENUMBER: SHORTINT;
  TOPMARGIN, BOTMARGIN, LINESPERPAGE: SHORTINT;
  CURRENTLINE: SHORTINT;
  TITLE: TITLELINE;

  CHECKREGNO: SHORTINT;
  CHECKREGMODE: SYMKIND;  { TWO GLOBALS FOR CHECKREG FUNCTION }

  LDIRP: LDIRPTRTYPE;
  MDPTR: MDPTRTYPE;

  IMPLEMENT END;

  FORWARD MODULE MAIN;
  IMPORT MAINDECL,SYSGLOBALS;
  EXPORT
  {****  DECLARE UTILITY PROCEDURES  }

  PROCEDURE EXPRESS(GIVERRORS:BOOLEAN;VAR EVALOK:EVALWHEN;
		      VAR EVALUE:EXPRVALUE; VAR COL: SHORTINT);
$if mc68881$
  function fpimmedexp( giveerrors : boolean; var evalok : evalwhen;
			var evalue : exprvalue;
			var col : shortint ) : boolean;
$end$
  PROCEDURE NEGEXPR(VAR VAL: EXPRVALUE);
  PROCEDURE GETCONST(VAR VAL:EXPRVALUE; VAR COLL: SHORTINT);
  PROCEDURE GETSYMBOL(VAR VAL:EXPRVALUE; VAR COLL: SHORTINT);
  PROCEDURE PARSE_BITFIELD(VAR BF: BITFIELDTYPE);
  PROCEDURE PARSEOPERAND(VAR OP:OPERAND);
  FUNCTION PARSE_CACHES : INTEGER;
$if mc68881$
  procedure fpmovem( writetomem : boolean; report : boolean );
  function setfpsysflag( opd : operand; report : boolean;
			 var flag : fpsysflagtyp ) : boolean;
$end$
  FUNCTION CHECKREGS:BOOLEAN;
  FUNCTION CHECKSPREGS: BOOLEAN;
  PROCEDURE PASS2;


@


56.2
log
@
pws2rcs automatic delta on Wed Jan 27 11:57:27 MST 1993
@
text
@d1 448
@


56.1
log
@Automatic bump of revision number for PWS version 3.25
@
text
@a0 448
{ THIS FILE CONTAINS THE GLOBAL DECLARATIONS FOR THE 68000 ASSEMBLER }

			(* Note - when making the changes of 3/8/85 to
			   partially support the mc68881 floating point
			   coprocessor, several areas and/or items
			   of special interest were flagged in the
			   assembler source. The flag used was a
			   series of three question marks (i.e. "???").
			   These should be inspected and removed as
			   appropriate changes are made for full support
			   of the MC68881 and MC68020
						Brad Taylor
			 *)

CONST
  VERSTRING='[3.25]';
  MONTH=10;
  DAY  =28;
  YEAR =91;

var bump_value : integer; { JWH 11/21/89. }

$include 'M68KFPDEC'$

$INCLUDE 'NOPCODES'$

  MAXLINELEN=200;
  BLANK=' ';
  COMMA=',';
  PERIOD='.';
  OPENPAREN='(';
  CLOSEPAREN=')';
  NUMBERSIGN='#';
  ATSIGN='@@';
  PLUS='+';
  MINUS='-';
  MAXNAMELEN=11; {LAF 870820}


TYPE
  WORD32=PACKED RECORD CASE INTEGER OF     {ASSUMES ALLOCATION ORDER}
	   1: (HIHALF,LOHALF: SHORTINT);
	   2: (BYTE1, BYTE2, BYTE3, BYTE4: BYTE);
	   3: (BITS: PACKED ARRAY[0..31] OF BOOLEAN);
	   4: (LONGINT: INTEGER);
	   5: (fltpt : longreal);
	   6: (fltptwd1, fltptwd2, fltptwd3, fltptwd4 : shortint );
	 END;

  OPNAME=PACKED ARRAY[1..MAXNAMELEN] OF CHAR; (* LAF 861120 *) {LAF 870820}

  OPREC=PACKED RECORD
	       NAME: OPNAME;
	       CODE: SHORTINT;
	       CLASS: SHORTINT
	     END;

  OPNUM=0..NOPCODES;

  OPTABLETYPE = ARRAY[OPNUM] OF OPREC;

  ERRCODE=(ERRBADOP, ERRUNDEFSYM, ERRBADMODE,
	   ERRLABELREQD, ERRDUPDEFSYM, ERRBADSUFFIX, ERRBADSIZE,
	   ERRBADCONST, ERRBADEXPR, ERRARITHOFLO, ERRFIELDOFLO, ERRBADSYNTAX,
	   ERRBADBASE,ERREXTREFS,ERRMODEDECL,
	   ERRPHASE, ERRINCOPEN, ERRBADINCLUDE,ERRBADCOM, ERRGOTSTART,
	   ERRDIROVF,ERRCOMMAEXP, ERRSYMBEXP, ERREOLEXP, ERRREGEXP,
	   ERRAREGEXP, ERRCLOSEPEXP,ERRMODNAME, erropen, readerror, errwrite,
	   errcread,erroddorg,errTASwarn,errlinecnt,
	   errfpregnotallowed, errfpsysregnotallowed, errfpopdnotallowed,
	   errdifffpregneeded, errfpconstneeded, errfpregneeded,
	   errfpsysregneeded, errfpmonadicneeded, errfpel, errfpregexp,
	   errbadfpk, errfpromconst, errfpimmedparse, errfpimmedsize,
	   errfpinternalerr, errfpbccsize,
	   ERRCOLONEXP,ERRLBRACEEXP,ERRRBRACEEXP,ERRRBRACKEXP,ERRRBRACKUNEXP,
	   ERR2INNER,ERR2DISP,ERR2INDEX,ERR2AN,ERR2ZPC,ERRMISZPC,
	   ERRBADSCALE,ERRRELREFS);

  EVALWHEN=(NOK, OK1, OK2);


  LSTRING=STRING[MAXLINELEN];

  SYMKIND=(ABSOLUT, RELATIVE, AREG, DREG, STREG,
	   fpreg, fpstreg, PREG);
  STREF=^SYMTABENTRY;
  EXTREFPTR=^EXTREFBLOCK;
  FORCEMODE=(NOMODE, LMODE, SMODE, RMODE);

  SYMTABENTRY=PACKED RECORD
		SLINK,SPLINK :STREF;
		DEFINED: SHORTINT;
		SKIND: SYMKIND;
		SVALUE: WORD32;
		SEXTPTR:EXTREFPTR;  { USED FOR EQUATES TO EXTERNALS }
		EXT: BOOLEAN;    { FLAG TO INDICATE AN EXTERNAL }
		SMODE: FORCEMODE;
		SNAME:STRING80;
	      END;

  EXPRVALUE=RECORD
	      BASE: SYMKIND;
	      OFFSET: WORD32;
	      EXPREFS: EXTREFPTR;
	      EMODE: FORCEMODE
	    END;


  EXTREFBLOCK=PACKED RECORD
		MINUS: BOOLEAN;
		SYMPT: STREF
	      END;

  DEFPTR=^DEFREC;

  DEFREC=PACKED RECORD
	   DEFNEXT: DEFPTR;
	   DEFTYPE: RELOCTYPE;
	   LOCATION: WORD32;
	   IDNAME: STRING80;
	 END;

  EXTPTR=^EXTREC;

  EXTREC=PACKED RECORD
	   EXTNEXT: EXTPTR;
	   EXTNAME: STRING80;
	 END;

  REFPTR=^REFREC;

  REFREC=RECORD
	   REFNEXT: REFPTR;
	   INFO: GENERALVALUE;
	   VALUE: WORD32;
	   EXTSTUFF: REFERENCEPTR;
	   EXTSTUFF2: REFERENCEPTR;
	 END;

  OPSIZETYPE = 0..12;
  DISPSIZE = (S_RES, S_NULL, S_WORD, S_LONG);

  OPERAND=RECORD
	    SIZE:           OPSIZETYPE;
	    MODE:           0.. 9;      (* 8=fpreg, 9=fpstreg *)
	    { REG:            0..16; } (* STACK REGISTERS RANGE THROUGH 14 *)
	    { 12/26/89 JWH : }
	    REG:            0..22;    (* STACK REGISTERS RANGE THROUGH 14 *)

{ 15      } INDEXMODE:      (ADDRS, DATA);
{ 14,13,12} INDEX:          0..7;       { INDEX REG NUMBER }
{ 11      } INDEXSIZE:      (WRD, LONG);
{ 10, 9   } INDEXSCALE:     0..3;
{  8      } FULL_FORMAT:    BOOLEAN;
{  7      } BASE_SUPPRESS:  BOOLEAN;
{  6      } INDEX_SUPPRESS: BOOLEAN;
{  5, 4   } BD_SIZE:        DISPSIZE;
{  3      } FILL:           BOOLEAN;
{  2      } POST_INDEXED:   BOOLEAN;
{  1, 0   } OD_SIZE:        DISPSIZE;

	    VALUE:          EXPRVALUE;
	    OD_VALUE:       EXPRVALUE;(* OUTER DISPLACEMENT *)
	  END;

  BITFIELDTYPE=
	  RECORD
	    DOFF:   BOOLEAN;    (* IS OFFSET A D-REGISTER ? *)
	    OFFSET: 0..31;
	    DWID:   BOOLEAN;    (* IS WIDTH  A D-REGISTER ? *)
	    WIDTH:  0..31;
	  END;

  BIGREC=PACKED ARRAY [0..511] OF BYTE;

  IDXWORD=PACKED RECORD   {ASSUMES ALLOCATION ORDER}
	  DA: BOOLEAN;
	  REGI: 0..7;
	  WL: BOOLEAN;
	  SCALE: 0..3;
	  FULL: BOOLEAN;
	  CASE INTEGER OF
	    0: (DISP: 0..255);
	    1: (
    {  7      } BASE_SUPPRESS:  BOOLEAN;
    {  6      } INDEX_SUPPRESS: BOOLEAN;
    {  5, 4   } BD_SIZE:        DISPSIZE;
    {  3      } FILL:           BOOLEAN;
    {  2      } POST_INDEXED:   BOOLEAN;
    {  1, 0   } OD_SIZE:        DISPSIZE;
	       );
	END;

  TITLELINE= STRING[60];

ORGMODETYPE=(SHORTFWDS, LONGFWDS);
PCMODETYPE=(ABS, REL);
CHARKINDS=(SPECIAL, ALPHABETIC, NUMERIC);


ADDRESS = ^INTEGER;   { GENERIC POINTER }

MDPTRTYPE = ^MODULEDIRECTORY;

LDIRPTRTYPE = ^DIRECTRY;
DIRECTRY = ARRAY[0..1] OF DIRENTRY;

SOURCEPTR = ^SOURCEREC;

SOURCEREC = RECORD
	      NEXTSOURCE: SOURCEPTR;
	      SOURCELINE: STRING[MAXLINELEN];
	    END;

$if mc68881$
fpsysflagtyp = 0..7;            (* system register flag type *)
fpformtyp = 0..7;               (* src/dest format type type *)
$end$

CONST
  OPTABLE = OPTABLETYPE[
      $INCLUDE 'OPCODES'$
      ];

VAR
  RDATE: DATEREC;             { DATE OF CURRENT REVISION }
  CDATE: DATEREC;            { CURRENT DATE }
  ctime: timerec;             { current time }
  ctimestr: string[8];        { string of current time }
  CHTYPE: ARRAY[CHAR] OF CHARKINDS;
  XLATE: ARRAY[CHAR] OF CHAR;            {USED FOR UPCASE CONVERSION }
  CH: CHAR;                  {SCRATCH VAR}
  EVALOK: EVALWHEN;          { SCRATCH VAR }
  EVALUE: EXPRVALUE;         { SCRATCH VAR }
  PASS:1..2;                 { INDICATES PASS NUMBER }
  SUPERLIST: BOOLEAN;         { LIST BOOLEAN SET IN INITIAL DIALOGUE }
  LISTING: BOOLEAN;          { STATE VAR FOR LISTING SET BY PSEUDO OPS}
  didheader: boolean;        { indicates if header line was output }
  listdone: boolean;         { indicates assembly source list is done }
  decimal: boolean;          { print addresses in decimal (ugh!)}
  OBJECT: BOOLEAN;           { STATE VAR FOR OBJECT OUTPUT }
  DEBUG: BOOLEAN;            { TURNS ON DEBUG MODE }
  LISTSYMS: BOOLEAN;         { PRINT SYMBOL TABLE }
  ERRINLINE: BOOLEAN;        { INDICATES AN ERROR IN CURRENT LINE}
  LINEERRCODE: ERRCODE;      { WHAT THE ERROR WAS }
  ERRCOUNT, LINENO: SHORTINT;  { COUNT LINES AND ERRORS }
  PASS1ERRS: SHORTINT;        { HOLDS NUMBER OF PASS 1 ERRORS }
  LASTERRLINE: SHORTINT;      { NUMBER OF LAST ERROR LINE}
  INCLUDELINENO: SHORTINT;
  MAINLINENO: SHORTINT;        {KEEP TRACK OF LINE NUMBERS IN FILES}

  CURROP: OPREC;           { CURRENT SOURCE LINE }
  CURCOL: SHORTINT;
  LAB: STRING255;
  LINE: LSTRING;
  LINECOPY:LSTRING;
  PRINTLINE:LSTRING;
  LOCCTR: WORD32;              {CURRENT PC}
  LOCCTB: WORD32;
  LOWRORG:WORD32;              { LOWEST RELOCATABLE ADDRESS }
  HIGHADDR:WORD32;             { HIGHEST RELOCATABLE ADDRESS }
  GOTSTART: BOOLEAN;
  STARTLOC: WORD32;            { START LOCATION FOR EXECUTION  }
  STARTMODE: RELOCTYPE;          { MODE OF STARTLOC }
$if false$
			(* variable lastop is not used anywhere *)
  LASTOP: OPNUM;
$end$
  ZOPFILE: FILE OF OPREC;      { OPCODE FILE }
  SIZESUFFIX:CHAR;             { INDICATES IF .B, .W, .S OR .L SUFFIX FOUND }
  SIZE: SHORTINT;    { CURRENT SIZE OF OPERAND DETERMINED FROM SIZESUFFIX }
  BITFIELD: BITFIELDTYPE;      { OFFSET AND WIDTH FOR BIT FIELD INSTRUCTIONS }
  OPERAND1, OPERAND2: OPERAND;  { HOLD OPERAND INFORMATION FOR CURRENT INST }
  OPERAND4, OPERAND5, OPERAND6: OPERAND; { BFxxx & CAS2 }
$if mc68881$
  operand3 : operand;           (* hold opd info for FSINCOS and
					FMOVE.P FPn,<ea>(k)           *)
  fpreadmode : boolean;         (* flt. pt. mode flag for GETSYMBOL() *)
  allowfpopds  : boolean;       (* allow flt. pt. operands ? *)
  fpsysflag : fpsysflagtyp;     (* 881 system reg flag for FMOVEM *)
$end$
  PCMODE: PCMODETYPE;          { INDICATES ORG OR RORG IN EFFECT }
  ORGMODE:ORGMODETYPE;       { INDICATES IF FORCE LONG FOR FWD REFS }
  ZERO32: WORD32;              { ALWAYS HAS 32 BIT ZERO }
  FWDREF: BOOLEAN;             { FLAG TO INDICATE A FWD REF IN OPERAND }
  LP: TEXT;
  REPLY: CHAR;                 { HOLDS Y/N RESPONSE FOR LIST OPTION }
  LLEN: SHORTINT;               { PRINTER WIDTH }
  SHORTMODE: BOOLEAN;          { PRINT MODE FOR DC'S }
  CONTIGUOUS: BOOLEAN;
  ENDOFCODE: INTEGER;

  PUNCHLC: SHORTINT;
  PUNCHBLK: BIGREC;
  OBJCTR: SHORTINT;


  EXTFILE: EXTPTR;  { LINKER OUTPUT FILES }
  DEFFILE: DEFPTR;
  REFFILE: REFPTR;

  EXTHEAD: EXTPTR;
  EXTTAIL: EXTPTR;
  DEFHEAD: DEFPTR;
  DEFTAIL: DEFPTR;
  globalptr: defptr;
  REFHEAD: REFPTR;
  REFTAIL: REFPTR;
  SOURCEHEAD: SOURCEPTR;
  SOURCETAIL: SOURCEPTR;

  SOURCEFILENAME: STRING255;
  LISTNAME:STRING255;
  OBJNAME: STRING255;
  MODNAME: STRING80;
  GOTMODNAME: BOOLEAN;
  iomsg: string80; { used for error messages }
  EXTCTR: SHORTINT;  { COUNTS NUMBER OF EXTERNAL SYMBOLS FROM REFA, REFR'S }
  DEFCTR: SHORTINT;  { COUNTS NUMBER OF DEFFILE RECORDS }
  FIRSTREF: BOOLEAN;
  REFCTR: SHORTINT;  { COUNTS NUMBER OF REFFILE RECORDS }
  REFLOC: INTEGER;
  LASTREFLOC: INTEGER;
  REFOFF: INTEGER;    { THESE ARE USED IN CALCULATING REF OFFSETS }
  ORIGIN: INTEGER;    { START LOCATION OF CURRENT TEXTREC }

  TEXTSTART: INTEGER;
  TEXTSIZE: INTEGER;
  REFSTART: INTEGER;
  REFSIZE: INTEGER;
  DEFSTART: INTEGER;
  DEFSIZE: INTEGER;
  EXTSTART: INTEGER;
  EXTSIZE: INTEGER;
  GLOBALSIZE: INTEGER;
  GLOBALBASE: INTEGER;
  SOURCESTART: INTEGER;
  SOURCESIZE: INTEGER;

  TEXTRECORDS: INTEGER;

  TEXTINFO: SHORTINT;    { OFFSET OF INFO FOR TEXT RECORDS }

  GV: GENERALVALUE; { SCRATCH GVR }

  GOTCOM: BOOLEAN;  {SAYS WE HAVE SEEN A VALID COM STATEMENT}

  CODE: RECORD      {ASSUMES ALLOCATION ORDER}
	 CASE INTEGER OF
	 0:(INT: PACKED ARRAY[1..11] OF SHORTINT);
	 1:(BYT: PACKED ARRAY[1..22] OF BYTE);
	 2:(TYPE2: PACKED RECORD
	    FILL1: 0..3; MSIZE: 0..3; REGX: 0..7; OPM1: 0..7;
	    B5: BOOLEAN; B4: BOOLEAN; B3: BOOLEAN; REGY: 0..7;
	    END);
	 3:(TYPE3: PACKED RECORD
	    OPCODE: 0..15; DATA1: 0..7; B8: BOOLEAN; SIZE: 0..3; EA: 0..63;
	    END);
	 4:(TYPE4: PACKED RECORD
	    XFILL: 0..31; B10: BOOLEAN; B9: BOOLEAN; DMODE: 0..7; MODE: 0..7;
	    FILL: 0..7;
	    END);
	 5:(TYPE5: PACKED RECORD
	    XXFILL: 0..511; B6: BOOLEAN; FILL5:0..3; VECTOR: 0..15;
	    END);
	 6:(IDX: {PACKED} ARRAY[1..11] OF IDXWORD);
$if mc68881$
	 7:( fptype1: packed record
			f_line : 0..15;         (* op word *)
			cp_id : 0..7;
			typ : 0..7;
			num : 0..63;
			opclass : 0..7;         (* Command word *)
			rx : 0..7;
			ry : 0..7;
			extension : 0..127;     (* also used for CPRED *)
			end );
$end$
	 8:(BITS: PACKED RECORD
	    B15,B14,B13,B12,B11,B10,B9,B8,B7,B6,B5,B4,B3,B2,B1,B0: BOOLEAN;
	    END);
	 9:(BITS2: PACKED RECORD
	    FILL: SHORTINT;             (* first word *)
	    B15,B14,B13,B12,B11,B10,B9,B8,B7,B6,B5,B4,B3,B2,B1,B0: BOOLEAN;
	    END);
	10:(OITS: PACKED RECORD
	    B15: BOOLEAN; O4,O3,O2,O1,O0: 0..7;
	    END);
	11:(OITS2: PACKED RECORD
	    FILL: SHORTINT;             (* first word *)
	    B15: BOOLEAN; O4,O3,O2,O1,O0: 0..7;
	    END);
	12:(OITS3: PACKED RECORD
	    FILL1: SHORTINT;            (* first  word *)
	    FILL2: SHORTINT;            (* second word *)
	    B15: BOOLEAN; O4,O3,O2,O1,O0: 0..7;
	    END);
	13:(BF: PACKED RECORD
	    FILL: SHORTINT;             (* first word *)
	    B15: BOOLEAN;   REG: 0..7;  (* bits 15-12 *)
	    DOFF: BOOLEAN; OFFSET: 0..31; (* bits 11- 6 *)
	    DWID: BOOLEAN; WIDTH : 0..31; (* bits  5- 0 *)
	    END);
       END;

  CODELENGTH: SHORTINT;

  PAGENUMBER: SHORTINT;
  TOPMARGIN, BOTMARGIN, LINESPERPAGE: SHORTINT;
  CURRENTLINE: SHORTINT;
  TITLE: TITLELINE;

  CHECKREGNO: SHORTINT;
  CHECKREGMODE: SYMKIND;  { TWO GLOBALS FOR CHECKREG FUNCTION }

  LDIRP: LDIRPTRTYPE;
  MDPTR: MDPTRTYPE;

  IMPLEMENT END;

  FORWARD MODULE MAIN;
  IMPORT MAINDECL,SYSGLOBALS;
  EXPORT
  {****  DECLARE UTILITY PROCEDURES  }

  PROCEDURE EXPRESS(GIVERRORS:BOOLEAN;VAR EVALOK:EVALWHEN;
		      VAR EVALUE:EXPRVALUE; VAR COL: SHORTINT);
$if mc68881$
  function fpimmedexp( giveerrors : boolean; var evalok : evalwhen;
			var evalue : exprvalue;
			var col : shortint ) : boolean;
$end$
  PROCEDURE NEGEXPR(VAR VAL: EXPRVALUE);
  PROCEDURE GETCONST(VAR VAL:EXPRVALUE; VAR COLL: SHORTINT);
  PROCEDURE GETSYMBOL(VAR VAL:EXPRVALUE; VAR COLL: SHORTINT);
  PROCEDURE PARSE_BITFIELD(VAR BF: BITFIELDTYPE);
  PROCEDURE PARSEOPERAND(VAR OP:OPERAND);
  FUNCTION PARSE_CACHES : INTEGER;
$if mc68881$
  procedure fpmovem( writetomem : boolean; report : boolean );
  function setfpsysflag( opd : operand; report : boolean;
			 var flag : fpsysflagtyp ) : boolean;
$end$
  FUNCTION CHECKREGS:BOOLEAN;
  FUNCTION CHECKSPREGS: BOOLEAN;
  PROCEDURE PASS2;


@


55.2
log
@
pws2rcs automatic delta on Mon Nov  4 13:45:04 MST 1991
@
text
@@


55.1
log
@Automatic bump of revision number for PWS version 3.25A
@
text
@d16 3
a18 3
  VERSTRING='[3.25A]';
  MONTH=08;
  DAY  =13;
@


54.2
log
@
pws2rcs automatic delta on Wed Aug 21 12:59:22 MDT 1991
@
text
@@


54.1
log
@Automatic bump of revision number for PWS version 3.24
@
text
@d16 3
a18 3
  VERSTRING='[3.24]';
  MONTH=3;
  DAY  =16;
@


53.2
log
@
pws2rcs automatic delta on Mon Mar 18 13:19:08 MST 1991
@
text
@@


53.1
log
@Automatic bump of revision number for PWS version 3.24B
@
text
@d16 1
a16 1
  VERSTRING='[3.24B]';
d18 1
a18 1
  DAY  =10;
@


52.2
log
@
pws2rcs automatic delta on Mon Mar 11 16:41:32 MST 1991
@
text
@@


52.1
log
@Automatic bump of revision number for PWS version 3.24A
@
text
@d16 3
a18 3
  VERSTRING='[3.24A]';
  MONTH=02;
  DAY  =16;
@


51.2
log
@
pws2rcs automatic delta on Mon Feb 18 20:38:36 MST 1991
@
text
@@


51.1
log
@Automatic bump of revision number for PWS version 3.24d
@
text
@d16 3
a18 3
  VERSTRING='[3.24d]';
  MONTH=1;
  DAY  =28;
@


50.2
log
@
pws2rcs automatic delta on Wed Jan 30 09:08:19 MST 1991
@
text
@@


50.1
log
@Automatic bump of revision number for PWS version 3.23c
@
text
@d16 4
a19 4
  VERSTRING='[3.24c]';
  MONTH=10;
  DAY  =26;
  YEAR =90;
@


49.2
log
@
pws2rcs automatic delta on Mon Oct 29 14:00:44 MST 1990
@
text
@@


49.1
log
@Automatic bump of revision number for PWS version 3.24b
@
text
@d16 3
a18 3
  VERSTRING='[3.24b]';
  MONTH=08;
  DAY  =13;
@


48.2
log
@
pws2rcs automatic delta on Tue Aug 14 09:29:26 MDT 1990
@
text
@@


48.1
log
@Automatic bump of revision number for PWS version 3.24a
@
text
@d16 3
a18 3
  VERSTRING='[3.24a]';
  MONTH=07;
  DAY  =23;
@


47.2
log
@
pws2rcs automatic delta on Tue Jul 24 14:47:20 MDT 1990
@
text
@@


47.1
log
@Automatic bump of revision number for PWS version 3.23
@
text
@d16 3
a18 3
  VERSTRING='[3.23]';
  MONTH=05;
  DAY  =03;
@


46.1
log
@Automatic bump of revision number for PWS version 3.23
@
text
@@


45.2
log
@
pws2rcs automatic delta on Fri May  4 14:44:01 MDT 1990
@
text
@@


45.1
log
@Automatic bump of revision number for PWS version 3.23C
@
text
@d16 3
a18 3
  VERSTRING='[3.23C]';
  MONTH=04;
  DAY  =18;
@


44.2
log
@
pws2rcs automatic delta on Thu Apr 19 13:13:04 MDT 1990
@
text
@@


44.1
log
@Automatic bump of revision number for PWS version 3.23B
@
text
@d16 3
a18 3
  VERSTRING='[3.23B]';
  MONTH=03;
  DAY  =31;
@


43.2
log
@
pws2rcs automatic delta on Sun Apr  1 16:13:30 MDT 1990
@
text
@@


43.1
log
@Automatic bump of revision number for PWS version 3.23aA
@
text
@d16 1
a16 1
  VERSTRING='[3.23A]';
d18 1
a18 1
  DAY  =16;
@


42.2
log
@
pws2rcs automatic delta on Mon Mar 19 16:00:53 MST 1990
@
text
@@


42.1
log
@Automatic bump of revision number for PWS version 3.23e
@
text
@d16 3
a18 3
  VERSTRING='[3.23e]';
  MONTH=01;
  DAY  =19;
@


41.3
log
@
pws2rcs automatic delta on Sat Jan 20 16:32:46 MST 1990
@
text
@@


41.2
log
@

          Expanded the register range for an operand from
    0..16 to 0..22 to allow for the new registers allowed
    in the MOVEC instruction. JWH 12/26/89.
@
text
@d16 2
a17 2
  VERSTRING='[3.23d]';
  MONTH=12;
d19 1
a19 1
  YEAR =89;
@


41.1
log
@Automatic bump of revision number for PWS version 3.23d
@
text
@d146 3
a148 1
	    REG:            0..16;      (* STACK REGISTERS RANGE THROUGH 14 *)
@


40.3
log
@
pws2rcs automatic delta on Thu Dec 21 14:54:59 MST 1989
@
text
@@


40.2
log
@

     Added integer variable bump_value used by M68KPAS2B for
   68040 support.

     JWH 11/21/89.
@
text
@d16 3
a18 3
  VERSTRING='[3.23c]';
  MONTH=09;
  DAY  =27;
d436 1
@


40.1
log
@Automatic bump of revision number for PWS version 3.23c
@
text
@d21 2
@


39.2
log
@
pws2rcs automatic delta on Thu Sep 28 17:16:32 MDT 1989
@
text
@@


39.1
log
@Automatic bump of revision number for PWS version 3.23b
@
text
@d16 3
a18 3
  VERSTRING='[3.22b]';
  MONTH=9;
  DAY  =25;
@


38.2
log
@
pws2rcs automatic delta on Tue Sep 26 14:31:31 MDT 1989
@
text
@@


38.1
log
@Automatic bump of revision number for PWS version 3.23a
@
text
@d16 2
a17 2
  VERSTRING='[3.23a]';
  MONTH=08;
@


37.2
log
@
pws2rcs automatic delta on Mon Aug 28 12:16:08 MDT 1989
@
text
@@


37.1
log
@Automatic bump of revision number for PWS version 3.3a
@
text
@d16 3
a18 3
  VERSTRING='[3.3a]';
  MONTH=05;
  DAY  =11;
@


36.3
log
@
pws2rcs automatic delta on Fri May 12 09:00:42 MDT 1989
@
text
@@


36.2
log
@
pws2rcs automatic delta on Thu May 11 11:32:36 MDT 1989
@
text
@d18 1
a18 1
  DAY  =10;
@


36.1
log
@Automatic bump of revision number for PWS version 3.22
@
text
@d16 3
a18 3
  VERSTRING='[3.22]';
  MONTH=01;
  DAY  =20;
@


35.1
log
@Automatic bump of revision number for PWS version 3.22
@
text
@@


34.1
log
@Automatic bump of revision number for PWS version 3.22
@
text
@@


33.2
log
@
pws2rcs automatic delta on Fri Jan 20 16:16:31 MST 1989
@
text
@@


33.1
log
@Automatic bump of revision number for PWS version 3.22D
@
text
@d16 1
a16 1
  VERSTRING='[3.22D]';
d18 1
a18 1
  DAY  =12;
@


32.2
log
@
pws2rcs automatic delta on Fri Jan 13 11:19:22 MST 1989
@
text
@@


32.1
log
@Automatic bump of revision number for PWS version 3.22C
@
text
@d16 1
a16 1
  VERSTRING='[3.22C]';
d18 1
a18 1
  DAY  =06;
@


31.2
log
@
pws2rcs automatic delta on Mon Jan  9 11:50:34 MST 1989
@
text
@@


31.1
log
@Automatic bump of revision number for PWS version 3.22B
@
text
@d16 4
a19 4
  VERSTRING='[3.22B]';
  MONTH=12;
  DAY  =12;
  YEAR =88;
@


30.2
log
@
pws2rcs automatic delta on Wed Dec 14 13:22:28 MST 1988
@
text
@@


30.1
log
@Automatic bump of revision number for PWS version 3.22A
@
text
@d16 1
a16 1
  VERSTRING='[3.22A]';
d18 1
a18 1
  DAY  =07;
@


29.2
log
@
pws2rcs automatic delta on Thu Dec  8 15:31:09 MST 1988
@
text
@@


29.1
log
@Automatic bump of revision number for PWS version 3.22b
@
text
@d16 3
a18 3
  VERSTRING='[3.22b]';
  MONTH=10;
  DAY  =27;
@


28.2
log
@
ipws2rcs automatic delta on Mon Oct 31 10:34:17 MST 1988
:w
:q
@
text
@@


28.1
log
@Automatic bump of revision number for PWS version 3.3b
@
text
@d16 1
a16 1
  VERSTRING='[3.3a]';
d18 1
a18 1
  DAY  =5;
@


27.2
log
@pws2rcs automatic delta on Wed Oct  5 17:32:00 MDT 1988

@
text
@@


27.1
log
@Automatic bump of revision number for PWS version 3.3a
@
text
@d16 3
a18 3
  VERSTRING='[3.21b]';
  MONTH=3;
  DAY  =16;
@


26.1
log
@Automatic bump of revision number for PWS version 3.3 Synch
@
text
@@


25.3
log
@Pws2unix automatic delta on Fri Mar 18 09:13:54 MST 1988
@
text
@@


25.2
log
@Pws2unix automatic delta on Tue Mar  8 15:44:57 MST 1988
@
text
@d16 1
a16 1
  VERSTRING='[3.21a]';
d18 1
a18 1
  DAY  =8;
@


25.1
log
@Automatic bump of revision number for PWS version 3.2Y
@
text
@d16 3
a18 3
  VERSTRING='[3.2Y]';
  MONTH=2;
  DAY  =12;
@


24.2
log
@Pws2unix automatic delta on Tue Mar  1 09:01:42 MST 1988
@
text
@@


24.1
log
@Automatic bump of revision number for PWS version 3.2
@
text
@d16 4
a19 4
  VERSTRING='[3.2]';
  MONTH=8;
  DAY  =29;
  YEAR =87;
@


23.2
log
@Pws2unix automatic delta on Sun Aug 30 14:43:47 MDT 1987
@
text
@@


23.1
log
@Automatic bump of revision number for PWS version 3.2P
@
text
@d16 1
a16 1
  VERSTRING='[3.2P]';
d18 1
a18 1
  DAY  =25;
@


22.3
log
@Pws2unix automatic delta on Tue Aug 25 18:23:33 MDT 1987
@
text
@@


22.2
log
@changed OPNAME limit to MAXNAMELEN from 11 and added MAXNAMELEN=11
@
text
@d16 1
a16 1
  VERSTRING='[3.2NX]';
d18 1
a18 1
  DAY  =20;
@


22.1
log
@Automatic bump of revision number for PWS version 3.2N
@
text
@d16 1
a16 1
  VERSTRING='[3.2N]';
d18 1
a18 1
  DAY  =14;
d35 1
d48 1
a48 1
  OPNAME=PACKED ARRAY[1..11] OF CHAR; (* LAF 861120 *)
@


21.2
log
@Pws2unix automatic delta on Sat Aug 15 16:14:36 MDT 1987
@
text
@@


21.1
log
@Automatic bump of revision number for PWS version 3.2M
@
text
@d16 1
a16 1
  VERSTRING='[3.2M]';
d18 1
a18 1
  DAY  =11;
@


20.2
log
@Pws2unix automatic delta on Wed Aug 12 09:47:30 MDT 1987
@
text
@@


20.1
log
@Automatic bump of revision number for PWS version 3.2L
@
text
@d16 3
a18 3
  VERSTRING='[3.2L]';
  MONTH=7;
  DAY  =28;
@


19.2
log
@Pws2unix automatic delta on Wed Jul 29 17:29:01 MDT 1987
@
text
@@


19.1
log
@Automatic bump of revision number for PWS version 3.2K
@
text
@d16 3
a18 3
  VERSTRING='[3.2K]';
  MONTH=5;
  DAY  =30;
@


18.2
log
@Pws2unix automatic delta on Sun May 31 14:33:16 MDT 1987
@
text
@@


18.1
log
@Automatic bump of revision number for PWS version 3.2J
@
text
@d16 1
a16 1
  VERSTRING='[3.2J]';
d18 1
a18 1
  DAY  =19;
@


17.2
log
@Pws2unix automatic delta on Wed May 20 09:57:02 MDT 1987
@
text
@@


17.1
log
@Automatic bump of revision number for PWS version 3.2I+
@
text
@d16 3
a18 3
  VERSTRING='[3.2I]';
  MONTH=4;
  DAY  =24;
@


16.1
log
@Automatic bump of revision number for PWS version 3.2I
@
text
@@


15.2
log
@Pws2unix automatic delta on Fri Apr 24 18:41:36 MDT 1987
@
text
@@


15.1
log
@Automatic bump of revision number for PWS version 3.2H
@
text
@d16 1
a16 1
  VERSTRING='[3.2H]';
d18 1
a18 1
  DAY  =11;
@


14.2
log
@Pws2unix automatic delta on Sun Apr 12 17:10:24 MDT 1987
@
text
@@


14.1
log
@Automatic bump of revision number for PWS version 3.2G
@
text
@d16 3
a18 3
  VERSTRING='[3.2G]';
  MONTH=3;
  DAY  =31;
@


13.2
log
@Pws2unix automatic delta on Wed Apr  1 08:30:27 MST 1987
@
text
@@


13.1
log
@Automatic bump of revision number for PWS version 3.2F
@
text
@d16 3
a18 3
  VERSTRING='[3.2F]';
  MONTH=2;
  DAY  =27;
@


12.2
log
@Pws2unix automatic delta on Sat Feb 28 15:17:33 MST 1987
@
text
@@


12.1
log
@Automatic bump of revision number for PWS version 3.2E
@
text
@d16 3
a18 3
  VERSTRING='[3.2E]';
  MONTH=1;
  DAY  =30;
@


11.2
log
@Pws2unix automatic delta on Mon Feb  2 09:47:34 MST 1987
@
text
@@


11.1
log
@Automatic bump of revision number for PWS version 3.2D
@
text
@d16 1
a16 1
  VERSTRING='[3.2D]';
d18 1
a18 1
  DAY  =18;
@


10.2
log
@Pws2unix automatic delta on Sun Jan 18 18:33:43 MST 1987
@
text
@@


10.1
log
@Automatic bump of revision number for PWS version 3.2C
@
text
@d16 4
a19 4
  VERSTRING='[3.2C]';
  MONTH=12;
  DAY  =23;
  YEAR =86;
@


9.2
log
@Pws2unix automatic delta on Tue Dec 23 16:24:27 MST 1986
@
text
@@


9.1
log
@Automatic bump of revision number for PWS version 3.2B
@
text
@d16 1
a16 1
  VERSTRING='[3.2B]';
d18 1
a18 1
  DAY  =11;
@


8.3
log
@Pws2unix automatic delta on Fri Dec 12 09:42:40 MST 1986
@
text
@@


8.2
log
@bugs 682 & 784: add FINTRZ, add D & X to FSGLDIV & MUL,
  change FTcc & FTPcc to FTRAPcc
@
text
@d16 1
a16 1
  VERSTRING='[3.2x]';
d18 1
a18 1
  DAY  =03;
@


8.1
log
@Automatic bump of revision number for PWS version 3.2A
@
text
@d16 3
a18 3
  VERSTRING='[3.2A]';
  MONTH=11;
  DAY  =26;
d47 1
a47 1
  OPNAME=PACKED ARRAY[1..9] OF CHAR;
@


6.3
log
@Pws2unix automatic delta on Wed Nov 26 16:18:22 MST 1986
@
text
@@


6.2
log
@Fixes for SSS
@
text
@d16 1
a16 1
  VERSTRING='[3.2x]';
d18 1
a18 1
  DAY  =11;
@


6.1
log
@Automatic bump of revision number for PWS version 3.2k
@
text
@d16 1
a16 1
  VERSTRING='[3.2k]';
d18 1
a18 1
  DAY  =3;
d73 1
a73 1
	   ERR2INNER,ERR2DISP,ERR2INDEX,ERR2AN,ERR2ZPC,
@


5.2
log
@Pws2unix automatic delta on Tue Nov  4 11:36:56 MEZ 1986
@
text
@@


5.1
log
@Automatic bump of revision number for PWS version 3.2j
@
text
@d16 3
a18 3
  VERSTRING='[3.2j]';
  MONTH=10;
  DAY  =23;
@


4.2
log
@Pws2unix automatic delta on Tue Oct 28 10:57:29 MEZ 1986
@
text
@@


4.1
log
@Automatic bump of revision number for PWS version 3.2i
@
text
@d16 3
a18 3
  VERSTRING='[3.2i]';
  MONTH=9;
  DAY  =26;
@


3.2
log
@Pws2unix automatic delta on Tue Sep 30 13:50:02 MEZ 1986
@
text
@@


3.1
log
@Automatic bump of revision number for PWS version 3.2h
@
text
@d16 3
a18 3
  VERSTRING='[3.2g]';
  MONTH=8;
  DAY  =28;
@


2.2
log
@Pws2unix automatic delta on Mon Sep  1 08:51:28 MEZ 1986
@
text
@@


2.1
log
@Auto bump rev number to 2.1 for sys 3.2e.
@
text
@d16 3
a18 3
  VERSTRING='[3.2e]';
  MONTH=7;
  DAY  =29;
@


1.3
log
@Pws2unix automatic delta on Wed Jul 30 09:07:03 MEZ 1986
@
text
@@


1.2
log
@Pws2unix automatic delta on Tue Jul 15 16:35:26 MEZ 1986
@
text
@d16 1
a16 1
  VERSTRING='[3.2d]';
d18 1
a18 1
  DAY  =14;
@


1.1
log
@Initial revision
@
text
@d16 3
a18 3
  VERSTRING='[3.2b]';
  MONTH=6;
  DAY  =13;
@
