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


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

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

56.1
date     91.11.05.09.30.50;  author jwh;  state Exp;
branches ;
next     55.1;

55.1
date     91.08.25.10.08.49;  author jwh;  state Exp;
branches ;
next     54.1;

54.1
date     91.03.18.15.16.47;  author jwh;  state Exp;
branches ;
next     53.1;

53.1
date     91.03.11.19.17.23;  author jwh;  state Exp;
branches ;
next     52.1;

52.1
date     91.02.19.09.02.33;  author jwh;  state Exp;
branches ;
next     51.1;

51.1
date     91.01.30.16.01.44;  author jwh;  state Exp;
branches ;
next     50.1;

50.1
date     90.10.29.16.15.20;  author jwh;  state Exp;
branches ;
next     49.1;

49.1
date     90.08.14.14.03.39;  author jwh;  state Exp;
branches ;
next     48.1;

48.1
date     90.07.26.11.09.24;  author jwh;  state Exp;
branches ;
next     47.1;

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

46.1
date     90.05.07.08.35.16;  author jwh;  state Exp;
branches ;
next     45.1;

45.1
date     90.04.19.15.42.09;  author jwh;  state Exp;
branches ;
next     44.1;

44.1
date     90.04.01.22.00.02;  author jwh;  state Exp;
branches ;
next     43.1;

43.1
date     90.03.20.13.49.53;  author jwh;  state Exp;
branches ;
next     42.1;

42.1
date     90.01.23.17.35.16;  author jwh;  state Exp;
branches ;
next     41.1;

41.1
date     89.12.22.11.17.37;  author jwh;  state Exp;
branches ;
next     40.1;

40.1
date     89.09.29.11.40.33;  author jwh;  state Exp;
branches ;
next     39.1;

39.1
date     89.09.26.16.25.52;  author dew;  state Exp;
branches ;
next     38.1;

38.1
date     89.08.29.11.16.20;  author jwh;  state Exp;
branches ;
next     37.1;

37.1
date     89.05.12.11.29.29;  author dew;  state Exp;
branches ;
next     36.1;

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

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

34.1
date     89.01.23.15.55.18;  author jwh;  state Exp;
branches ;
next     33.1;

33.1
date     89.01.16.11.30.33;  author dew;  state Exp;
branches ;
next     32.1;

32.1
date     89.01.10.11.36.39;  author bayes;  state Exp;
branches ;
next     31.1;

31.1
date     88.12.14.17.57.32;  author bayes;  state Exp;
branches ;
next     30.1;

30.1
date     88.12.09.13.35.48;  author dew;  state Exp;
branches ;
next     29.1;

29.1
date     88.10.31.15.19.54;  author bayes;  state Exp;
branches ;
next     28.1;

28.1
date     88.10.06.10.49.20;  author dew;  state Exp;
branches ;
next     27.1;

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

26.1
date     88.09.28.12.30.52;  author bayes;  state Exp;
branches ;
next     25.1;

25.1
date     88.03.02.09.09.16;  author bayes;  state Exp;
branches ;
next     24.1;

24.1
date     87.08.31.09.18.29;  author jws;  state Exp;
branches ;
next     23.1;

23.1
date     87.08.26.09.55.15;  author bayes;  state Exp;
branches ;
next     22.1;

22.1
date     87.08.17.10.35.26;  author bayes;  state Exp;
branches ;
next     21.1;

21.1
date     87.08.12.13.23.17;  author bayes;  state Exp;
branches ;
next     20.1;

20.1
date     87.07.30.10.33.31;  author bayes;  state Exp;
branches ;
next     19.1;

19.1
date     87.06.01.07.52.00;  author jws;  state Exp;
branches ;
next     18.1;

18.1
date     87.05.20.14.46.34;  author bayes;  state Exp;
branches ;
next     17.1;

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

16.1
date     87.04.26.15.18.46;  author jws;  state Exp;
branches ;
next     15.1;

15.1
date     87.04.13.08.43.58;  author jws;  state Exp;
branches ;
next     14.1;

14.1
date     87.04.01.14.39.49;  author jws;  state Exp;
branches ;
next     13.1;

13.1
date     87.02.28.18.06.57;  author jws;  state Exp;
branches ;
next     12.1;

12.1
date     87.02.02.12.53.09;  author jws;  state Exp;
branches ;
next     11.1;

11.1
date     87.01.19.09.20.01;  author jws;  state Exp;
branches ;
next     10.1;

10.1
date     86.12.24.10.26.13;  author jws;  state Exp;
branches ;
next     9.1;

9.1
date     86.12.12.13.48.27;  author bayes;  state Exp;
branches ;
next     8.1;

8.1
date     86.11.27.11.23.44;  author jws;  state Exp;
branches ;
next     7.1;

7.1
date     86.11.20.13.09.52;  author hal;  state Exp;
branches ;
next     6.1;

6.1
date     86.11.04.17.11.37;  author paws;  state Exp;
branches ;
next     5.1;

5.1
date     86.10.28.16.00.35;  author hal;  state Exp;
branches ;
next     4.1;

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

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

3.1
date     86.09.01.11.25.44;  author hal;  state Exp;
branches ;
next     2.1;

2.1
date     86.07.30.14.16.52;  author hal;  state Exp;
branches ;
next     1.1;

1.1
date     86.06.30.13.38.04;  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
@  { file GENUTILDEF }

  import
     globals,sysglobals,compinit,codegen,loader,
     symtable,compio;
  export
    procedure outputref(name: alpha; loc: addrrange; t: reftype);
    procedure codewrapup(term: termtype);
    procedure file_warn(errornum,iores: shortint);
    procedure moduleinit(modulenameptr: alphaptr);
    procedure modulewrapup(countglobals: boolean);
    procedure outputcodebyte (b : shortint);
    procedure outputcodeword (w : shortint);
    procedure outputcodelong (l : integer);
    procedure dumpstconst(fsp: stp; var fvalu: valu);
    procedure importexportstart(s: alphaptr);
    procedure importexportwrapup;
    procedure outputextdef(name:alpha;loc: addrrange;
			   ext: alpha);
    type
      lstring = string[255];

    var
      codeerror,codeout,modulecodeout: boolean;
      force_unpack : boolean;   (* force unpacking of 8 or 16 bit unsigned
				   integer subrange fields ? *)

    procedure fixbyte( pc: addrrange; value: shortint );
    procedure fixword( pc: addrrange; value: shortint );
    $IF MC68020$
    procedure fixlong( pc: addrrange; value: integer );
    $END$
    procedure fixreflist( listptr: reflistptr );
    procedure outputdef(name: string255; loc: addrrange; t: reloctype;
			   extnumber: shortint);
    procedure getmultattr
			(rcount: shortint; A1isfree: boolean; var at: attrtype);
    procedure callstdproc(s: alpha);
    procedure callIOproc(s: alpha);
    procedure getprokconst(fprocp: ctp; var at : attrtype);
    procedure getbrattr
		  (var flbl: addrrange; defined: boolean; var battr: attrtype);
    procedure emitshift(shiftcount: bitrange; reg: regrange;
			shiftype: opcodetype; shiftsize: stortype);
    procedure getcomplmaskattr
		    (bitoffset, bitsize, masksize: shortint; var at : attrtype);
    procedure getmaskattr
		    (bitoffset, bitsize, masksize: shortint; var at : attrtype);

		{standard scratch attribute records}

    var SBdir,SBind,A6dir,A6ind,SPdir,SPind,SPplus,SPminus,immed0: attrtype;

		  {constant pool stuff}
    var sethead,stringhead,reelhead: csp;
	enumhead: stp;

	$IF MC68020$
	wrdpairhead, longpairhead : csp;
	$END$

    function poolit (konst : csp): csp;
    procedure poolenum(fsp: stp);
    procedure dumpconsts;

		   {run-time simulation stuff}
    type
      alloctype = (free,allocated,locked);
      usetype = (basereg,withrecbase,other);
      register = record
		   allocstate: alloctype;
		   usesleft: 0..maxint;
		   case usage: usetype of
		     basereg: (baselevel: levrange);
		     withrecbase: (curcontents: attrptr;
				   oldcontents: attrtype);
		     other: ()
		   end;

    var
      reg: array[regtype,regrange] of register;
      sourceblock,sourcesize: integer;


    procedure clear(newproc: boolean);
    procedure getlocstorage(size: addrrange; var at: attrtype);
    procedure freeit(rt: regtype; rn: regrange);
    function  getreg(classwanted: regtype): regrange;
    procedure getregattr(classwanted: regtype; var attr: attrtype);
    function  closestbasereg(flevel: addrrange; var fdist: levrange): levrange;
    procedure movestatic(flevel: addrrange; var at: attrtype);
    function  getbasereg(flevel: addrrange): regrange;
    procedure forgetbasereg(r: regrange);
    procedure forgetbaseregs;
    function  addrinreg(fexp: exptr): boolean;
    procedure liftattr(father,son: exptr);
    procedure getsignbit(fsp: stp; fattr: attrptr);
    procedure checkoffset(fexp: exptr);
    procedure freeregs(attrp: attrptr);

    function  mydiv(a,b: integer): integer;

    procedure fixliteral(fexp: exptr; store: stortype; signed: boolean);
    procedure codeinit;
    function itostr(i: integer) : string80;
    procedure genutilsinit;


@


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


56.1
log
@Automatic bump of revision number for PWS version 3.25
@
text
@a0 108
  { file GENUTILDEF }

  import
     globals,sysglobals,compinit,codegen,loader,
     symtable,compio;
  export
    procedure outputref(name: alpha; loc: addrrange; t: reftype);
    procedure codewrapup(term: termtype);
    procedure file_warn(errornum,iores: shortint);
    procedure moduleinit(modulenameptr: alphaptr);
    procedure modulewrapup(countglobals: boolean);
    procedure outputcodebyte (b : shortint);
    procedure outputcodeword (w : shortint);
    procedure outputcodelong (l : integer);
    procedure dumpstconst(fsp: stp; var fvalu: valu);
    procedure importexportstart(s: alphaptr);
    procedure importexportwrapup;
    procedure outputextdef(name:alpha;loc: addrrange;
			   ext: alpha);
    type
      lstring = string[255];

    var
      codeerror,codeout,modulecodeout: boolean;
      force_unpack : boolean;   (* force unpacking of 8 or 16 bit unsigned
				   integer subrange fields ? *)

    procedure fixbyte( pc: addrrange; value: shortint );
    procedure fixword( pc: addrrange; value: shortint );
    $IF MC68020$
    procedure fixlong( pc: addrrange; value: integer );
    $END$
    procedure fixreflist( listptr: reflistptr );
    procedure outputdef(name: string255; loc: addrrange; t: reloctype;
			   extnumber: shortint);
    procedure getmultattr
			(rcount: shortint; A1isfree: boolean; var at: attrtype);
    procedure callstdproc(s: alpha);
    procedure callIOproc(s: alpha);
    procedure getprokconst(fprocp: ctp; var at : attrtype);
    procedure getbrattr
		  (var flbl: addrrange; defined: boolean; var battr: attrtype);
    procedure emitshift(shiftcount: bitrange; reg: regrange;
			shiftype: opcodetype; shiftsize: stortype);
    procedure getcomplmaskattr
		    (bitoffset, bitsize, masksize: shortint; var at : attrtype);
    procedure getmaskattr
		    (bitoffset, bitsize, masksize: shortint; var at : attrtype);

		{standard scratch attribute records}

    var SBdir,SBind,A6dir,A6ind,SPdir,SPind,SPplus,SPminus,immed0: attrtype;

		  {constant pool stuff}
    var sethead,stringhead,reelhead: csp;
	enumhead: stp;

	$IF MC68020$
	wrdpairhead, longpairhead : csp;
	$END$

    function poolit (konst : csp): csp;
    procedure poolenum(fsp: stp);
    procedure dumpconsts;

		   {run-time simulation stuff}
    type
      alloctype = (free,allocated,locked);
      usetype = (basereg,withrecbase,other);
      register = record
		   allocstate: alloctype;
		   usesleft: 0..maxint;
		   case usage: usetype of
		     basereg: (baselevel: levrange);
		     withrecbase: (curcontents: attrptr;
				   oldcontents: attrtype);
		     other: ()
		   end;

    var
      reg: array[regtype,regrange] of register;
      sourceblock,sourcesize: integer;


    procedure clear(newproc: boolean);
    procedure getlocstorage(size: addrrange; var at: attrtype);
    procedure freeit(rt: regtype; rn: regrange);
    function  getreg(classwanted: regtype): regrange;
    procedure getregattr(classwanted: regtype; var attr: attrtype);
    function  closestbasereg(flevel: addrrange; var fdist: levrange): levrange;
    procedure movestatic(flevel: addrrange; var at: attrtype);
    function  getbasereg(flevel: addrrange): regrange;
    procedure forgetbasereg(r: regrange);
    procedure forgetbaseregs;
    function  addrinreg(fexp: exptr): boolean;
    procedure liftattr(father,son: exptr);
    procedure getsignbit(fsp: stp; fattr: attrptr);
    procedure checkoffset(fexp: exptr);
    procedure freeregs(attrp: attrptr);

    function  mydiv(a,b: integer): integer;

    procedure fixliteral(fexp: exptr; store: stortype; signed: boolean);
    procedure codeinit;
    function itostr(i: integer) : string80;
    procedure genutilsinit;


@


55.1
log
@Automatic bump of revision number for PWS version 3.25A
@
text
@@


54.1
log
@Automatic bump of revision number for PWS version 3.24
@
text
@@


53.1
log
@Automatic bump of revision number for PWS version 3.24B
@
text
@@


52.1
log
@Automatic bump of revision number for PWS version 3.24A
@
text
@@


51.1
log
@Automatic bump of revision number for PWS version 3.24d
@
text
@@


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


49.1
log
@Automatic bump of revision number for PWS version 3.24b
@
text
@@


48.1
log
@Automatic bump of revision number for PWS version 3.24a
@
text
@@


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


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


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


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


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


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


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


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


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


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


37.1
log
@Automatic bump of revision number for PWS version 3.3a
@
text
@@


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


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.1
log
@Automatic bump of revision number for PWS version 3.22D
@
text
@@


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


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


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


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


28.1
log
@Automatic bump of revision number for PWS version 3.3b
@
text
@@


27.1
log
@Automatic bump of revision number for PWS version 3.3a
@
text
@@


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


25.1
log
@Automatic bump of revision number for PWS version 3.2Y
@
text
@@


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


23.1
log
@Automatic bump of revision number for PWS version 3.2P
@
text
@@


22.1
log
@Automatic bump of revision number for PWS version 3.2N
@
text
@@


21.1
log
@Automatic bump of revision number for PWS version 3.2M
@
text
@@


20.1
log
@Automatic bump of revision number for PWS version 3.2L
@
text
@@


19.1
log
@Automatic bump of revision number for PWS version 3.2K
@
text
@@


18.1
log
@Automatic bump of revision number for PWS version 3.2J
@
text
@@


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


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


15.1
log
@Automatic bump of revision number for PWS version 3.2H
@
text
@@


14.1
log
@Automatic bump of revision number for PWS version 3.2G
@
text
@@


13.1
log
@Automatic bump of revision number for PWS version 3.2F
@
text
@@


12.1
log
@Automatic bump of revision number for PWS version 3.2E
@
text
@@


11.1
log
@Automatic bump of revision number for PWS version 3.2D
@
text
@@


10.1
log
@Automatic bump of revision number for PWS version 3.2C
@
text
@@


9.1
log
@Automatic bump of revision number for PWS version 3.2B
@
text
@@


8.1
log
@Automatic bump of revision number for PWS version 3.2A
@
text
@@


7.1
log
@Automatic bump of revision number for PWS version 3.2l
@
text
@@


6.1
log
@Automatic bump of revision number for PWS version 3.2k
@
text
@@


5.1
log
@Automatic bump of revision number for PWS version 3.2j
@
text
@@


4.1
log
@Automatic bump of revision number for PWS version 3.2i
@
text
@@


3.2
log
@Changes from Scott Bayes.
@
text
@@


3.1
log
@Automatic bump of revision number for PWS version 3.2h
@
text
@d25 2
@


2.1
log
@Auto bump rev number to 2.1 for sys 3.2e.
@
text
@@


1.1
log
@Initial revision
@
text
@@
