BLISS.HLP--Help file for BLISS-36   Version 4A  Sep-84  [5 pages]



1.0  INTRODUCTION

BLISS-36 is a BLISS language compiler  that  runs  under  TOPS-20  and
generates  code  for  KA, KI, KS, and KL processors.  The BLISS system
consists of the BLISS-36 compiler and a collection of  BLISS  oriented
utilities and documentation.

The BLISS language  is  designed  for  the  implementation  of  system
software.  It combines the simplicity, transportability and clarity of
high-level languages, with the precision and flexibility  of  assembly
languages.   Special care has been taken so that the BLISS language is
transportable.     Compilers    are    currently     available     for
DECsystem-10/DECSYSTEM-20   (BLISS-36),   VAX  (BLISS-32)  and  PDP-11
(BLISS-16).  Each compiler includes machine specific  extensions  that
may be used as required.  The BLISS-36 compiler optimizes greatly and,
generally, resultant programs are comparable  in  size  and  speed  to
those coded in assembly language.

This summary, as well as other BLISS documents, assumes that the BLISS
compiler  and  its  object time libraries are installed on SYS:;  help
files are installed on HLP:;  other documentation is installed on DOC:
and all other files are installed on BLI:.

The file DOC:BLISS.DOC, distributed with this release contains:

      o  Detailed description of the differences  between  version  4A
         (this version) and version 4 of BLISS-36

      o  A list of known bugs in this release

      o  "Pointers" to other sources of information about BLISS-36 and
         its associated utilities

      o  A list of the major components of the BLISS-36 system




2.0  COMMAND LINE

BLISS uses the COMND JSYS to parse the command line, and so  resembles
other  TOPS-20  commands  in  format.   To  invoke  the  compiler, run
BLISS.EXE.  Assuming that the compiler is on SYS:  you may simply type

        @BLISS

You will receive the prompt:

        BLISS>

Each command line must include at least one file  specification  which
is  interpreted as the file to be compiled.  The simplest command line
is:

        BLISS>FILENAME

which will cause FILENAME.B36 or  FILENAME.BLI  to  be  compiled,  and
FILENAME.REL  to  be  created.   Since  the COMND JSYS is used you may
freely use command completion and the "?" feature.

You may also type the BLISS command line directly  to  the  EXEC  like
this:

        @BLISS FILENAME

In this case, however, because of restrictions  in  TOPS-20  "?"  will
result in the message:

        Data line to be sent to program

3.0  SWITCHES

A listing of the available switches  is  given  below.   Defaults  are
marked  with  an  asterisk(*).  The options for the /FORMAT switch are
described below.

SWITCH                   DESCRIPTION

/CH(ECK):options         Controls whether the compiler gives  warnings
                         about  certain conditions in the source code.
                         The options are:  FIELD -- Give a warning  if
                         a  structure  is  accessed  with a field name
                         that was not declared in a FIELD attribute in
                         its  declaration;   INITIAL -- Give a warning
                         if there is a reference to a  local  variable
                         whose  value  is known to be undefined at the
                         point  of  reference;   OPTIMIZE  --  give  a
                         warning  if code is deleted because a control
                         expression can be evaluated at compile  time.
                         REDECLARE  --  give  a warning if a symbol is
                         declared within a block with the same name as
                         a  symbol  which was known outside the block.
                         All of these options  may  be  prefixed  with
                         "NO"   to  suppress  them.   The  default  is
                         /CHECK:     (FIELD,    INITIAL,     OPTIMIZE,
                         NOREDECLARE).

/CO(DE)*                 Generate object code.

/CR(OSS-REFERENCE)       Specifies  whether  or  not  to  generate   a
                         cross-reference  listing  (only relevant when
                         /LIST is also specified).

/D(EBUG)                 Generate symbols for  debugging,  emit  debug
                         linkages,  and  disable certain optimizations
                         which might mislead the debugger.

/ERROR-LIMIT:n*          Number of compilation errors permitted before
                         compilation will be automatically terminated.
                         Default value for "n" is 30 errors.

/ERRS*                   Report errors to the terminal.

/EXI(T)                  Do not prompt after compilation.

/EXT(ENDED):option       Program to run in a  non-zero  section  on  a
                         Model    B   processor.    The   option   is:
                         SECTION-INDEPENDENT  --  Produces  code  that
                         will run from any section.

/F(ORMAT):options        Specify certain options to control the format
                         of the listing file (see below).

/H(EADER)*               Produce a heading on the top of each page  of
                         the   listing  file  including  configuration
                         information.

/KA(10)                  Assume generated code is to be executed on  a
                         KA-10.

/KI(10)                  Assume generated code is to be executed on  a
                         KI-10.

/KS(10)                  Assume generated code is to be executed on  a
                         KS-10.  (Synonymous with /KL10).

/KL(10)*                 Assume generated code is to be executed on  a
                         KL-10 or KL-20.

/LIB(RARY):fs            Interpret the source  file(s)  as  a  library
                         source  file.   The  resultant object file is
                         the precompiled  library  file  that  can  be
                         requested   from  a  source  program  with  a
                         library-declaration.  The  default  file-spec
                         (fs) name is the same as the source file name
                         and the default extension is ".L36".

/LIS(TING):fs            Produce  a   listing   file.    The   default
                         file-spec (fs) name is the same as the source
                         file.  The default extension is ".LST".

/MA(STER-CROSS-REFERENCE):fs Produce a master cross reference file for
                         use  with  the  BCREF  utility.   The default
                         file-spec (fs) name is the same as the source
                         file.  The default extension is ".CRF".

/NOxxx                   Invert the meaning of switch /xxx.

/OB(JECT):fs*            Produce an object file and call it "fs".  The
                         default  file-spec  (fs)  name is the same as
                         the source file.  The  default  extension  is
                         ".REL".

/OPTI(MIZE)*             Perform full flow analysis.
/OPTL(EVEL):n            Specify the degree of optimization.   N  must
                         be  in  the  range  0  to  3.   Request 3 for
                         maximum optimization.  Default is 2.

/P(AGSIZ):n              Specify the number of lines printed  on  each
                         page  of the listing file.  N must be greater
                         than 20.  Default is 52.

/Q(UICK)                 Requests a "quick" compilation,  possibly  at
                         the expense of some optimization.

/SA(FE)*                 Specifies that the source program is coded in
                         a   "safe"  manner,  i.e.   values  of  named
                         variables  are  changed  only   by   explicit
                         assignment to the named variable.  If /NOSAFE
                         is  specified,  the  compiler  assumes   that
                         indirect   assignments  invalidate  a  larger
                         class of variables.

/ST(ATISTICS)            Print routine names on the terminal  as  they
                         are compiled.

/TOPS1(0)                Produce code to run under TOPS-10.

/TOPS2(0)*               Produce code to run under TOPS-20.

/U(NAMES)                Produce unique names for  own  variables  and
                         non-global  routine names in the listing file
                         when it is to be assembled.

/V(ARIANT):n             Assign n to  be  the  value  of  the  lexical
                         function %VARIANT.  If not present (default),
                         zero is assumed.  If present and no value  is
                         given, 1 is assumed.

/Z(IP)                   Optimized for time over space if there  is  a
                         choice to be made.

The following are the options that  can  be  given  with  the  /FORMAT
switch.  The form of the /FORMAT switch is given by:

        /FORMAT:option
or
        /FORMAT:(option,option, ...)


A(SSEMBLY)               Produce a listing file that can be assembled.
                         (Some modification may be necessary.)

B(INARY)*                Include  in  the  listing  file   the   octal
                         representation of the binary code generated.

C(OMMENTARY)*            Include in the listing file commentary on the
                         operands  of  each  instruction.   Currently,
                         this consists of a source line number.
E(XPAND)                 Include   the   expansion   of   each   macro
                         invocation.  See also the TRACE option.

L(IBRARY)                Include  a  trace  identifying  the   library
                         accessed  by each library-declaration and the
                         first use of each name  whose  definition  is
                         obtained from a library file.

NOxxx                    Invert the meaning of option xxx.

O(BJECT)*                List  the  compiled  code.    The   ASSEMBLY,
                         SYMBOLIC,   BINARY,  and  COMMENTARY  options
                         determine the format of the compiled code.

R(EQUIRE)                Do not modify  the  listing  control  counter
                         (see  the  SOURCE  option)  when  opening  or
                         closing  files   specified   in   a   REQUIRE
                         declaration.    In  the  default  case,  this
                         results in not listing each REQUIRE file.

SO(URCE)*                Increments the listing control counter.   The
                         initial  value of the counter is 1.  When the
                         counter is greater than 0, source is  listed.
                         Require-declarations  automatically decrement
                         the counter for the  length  of  the  require
                         file unless the REQUIRE option is used.

SY(MBOLIC)*              List the  instructions  generated,  using  as
                         many program symbols as possible.

T(RACE)                  Trace macro  expansion.   This  includes  the
                         resulting   stream  of  lexemes  produced  by
                         EXPAND.



4.0  ENVIRONMENTS

The BLISS compiler  can  generate  code  for  a  number  of  different
environments.   That is, it can generate code which takes advantage of
special features of a variety of  processors  (KA10,  KI10,  KS10  and
KL10)  and  for  either TOPS-10 or TOPS-20.  Furthermore, BLISS allows
the user to specify a large variety of routine linkages.  Any of these
environmental changes may cause a need for another OTS (operating time
system) or high-level debugger (SIX12).  However, in almost all cases,
BLISS  will do the right thing automatically.  For unusual specialized
situations BLISS  requires  some  help  (See  DOC:BLISS.DOC  for  more
details).


[end of BLISS.HLP]
