Google
 

Trailing-Edge - PDP-10 Archives - BB-J941C-BB_A19 - bliss.doc
There are 15 other files named bliss.doc in the archive. Click here to see a list.


            Bliss-36 Release 3 For TOPS-10: Release Notes
                            February-1982





1.0  INTRODUCTION

This document provides information pertaining to Bliss-36 Version 3.

     It contains the following sections:

      o  Introduction

      o  New Features

      o  Restrictions

      o  Known Bugs

      o  For Further Help

      o  Components




2.0  NEW FEATURES

Version 3 of BLISS is upward compatible with the V2.1 compiler.



2.1  Common Language Changes

This section discusses new language and compiler  features  which  are
common  to  Bliss-32,  Bliss-36  and Bliss-16.  See the Bliss Language
Guide (Order No.  AA-H275C-TK for details).



2.2  %REQUIRE Lexical Function

This new lexical-function includes the contents of a source-file  into
the current compilation.  Unlike the REQUIRE declaration, the %REQUIRE
lexical-function  may  appear  within  any  context  where  a  lexical
function is permitted.


                              Exception

               %REQUIRE is illegal within a macro-body.
Bliss-36 Release 3 For TOPS-10: Release Notes                   Page 2


For example, the lexeme sequence:

        %REQUIRE ( 'PS:<MYDIR>FOO' )

will include the contents of the file PS:<MYDIR>FOO.REQ in the current
compilation.



2.2.1  INITIAL Or PRESET On Local Storage

The  initial-  and  preset-attributes  are  now  permitted  on  LOCAL,
REGISTER   and   STACKLOCAL   declarations.    This  permits  run-time
initialization of dynamic storage.  The existing restrictions that the
initial-values must be ltce expressions remain.



2.3  EXTERNAL Declarations In LIBRARY Precompilation

BLISS libraries serve  as  an  interface  specification  to  insure  a
uniform  environment  among  interacting  modules.   BLISS  V3  allows
EXTERNAL, EXTERNAL ROUTINE and EXTERNAL LITERAL declarations inside  a
LIBRARY  pre-compilation to extend the generality of the interface and
increase the compiler's ability to  perform  compile-time  consistency
checks.



2.4  BUILTIN Machine-specific Functions In LIBRARY



                                 NOTE

               This change in functionality was adopted
               too  late  in the documentation cycle to
               be included in the V3 documentation.


BUILTIN machine-specific functions (such as UUO, FIRSTONE or REPLACEN)
are  permitted  as  declarations  in  library precompilation.  BUILTIN
registers or linkage-functions (such as SP or NULLPARAMETER)  are  not
permitted  in libraries.  This makes it possible to define a STRUCTURE
declaration which uses BUILTIN functions and to include that STRUCTURE
in a LIBRARY.

For a useful example, see the  definition  of  the  MONWORD  structure
which is in the TENDEF.R36 file supplied with this release of BLISS.
Bliss-36 Release 3 For TOPS-10: Release Notes                   Page 3


2.5  PSECT Attribute On PLIT Expression

It is now possible to specify which psect a PLIT or  UPLIT  should  be
allocated in.  For example

        UPLIT PSECT($own$) (1,2)

will place the plit-body into the "$own$" psect.



2.5.1  New PSECT Declaration Storage-Class

In  order  to  facilitate  the  use  of  PSECT  declarations,  a   new
"storage-class" has been defined.

The NODEFAULT  storage-class  does  not  affect  the  present  default
PSECT-name  assiciated  with  the storage-classes OWN, GLOBAL, PLIT or
CODE.  Thus, it becomes possible to define PSECTs  without  destroying
the existing defaulted values.



2.5.2  Improved Error Recovery

Considerable effort has been made to improve compiler  error  recovery
in V3 of BLISS.  In particular, whenever possible:

      o  missing operators in an expression  are  treated  as  WARNING
         level  diagnostics  and  an  appropriate  operator  (such  as
         semicolon, comma or "THEN") is inserted.

      o  missing operands are treated as WARNING level diagnostics and
         a literal zero is inserted.




2.6  BLISS-36 Specific Changes

2.6.1  Indirect Address-mode Generation

The V3 BLISS-36 compiler will optionally generate  instructions  which
use  indirect  addressing.   This  optimization is controlled by a new
module-head switch

        ADDRESSING_MODE (  { INDIRECT | NOINDIRECT } )

The  NOINDIRECT  option  (the  default)  prevents  the  compiler  from
generating indirection implicitly.
Bliss-36 Release 3 For TOPS-10: Release Notes                   Page 4


2.6.1.1  Indirect Addressing Example - For example, the BLISS fragment

        OWN X;
        REGISTER R;

        R = ..X;

will normally expand to the machine instructions

        MOVE    T1, X           ; First "."
        MOVE    R, (T1)         ; Second ".", ignore <18,18>

but if the ADDRESSING_MODE( INDIRECT ) module-head switch is  present,
the compiler may produce

        MOVE    R, @X



2.6.1.2  Pragmatics On Indirect Addressing - Indirect       addressing
assumes   that   when   an   indirect   fetch  operation  specifies  a
field-selector  of  <0,36>  that  the  left-half  does  not  have  the
indirect-bit  or index-register set.  The memory word accessed MUST be
a pure address (either 18 or 30 bits).

The default is ADDRESSING_MODE( NOINDIRECT ), however, it is  possible
to  change  this  at the time BLISS-36 is installed.  See the BLISS-36
Installation Guide for further information.     



2.6.2  SKIP Linkage-modifier With PUSHJ Linkage-type

In V2.1, this attribute was only legal with the JSYS linkage-type.  In
BLISS  V3,  SKIP may now be associated with a PUSHJ linkage-type also.
The skip count must be in the range 0 to 2.

For example, to call a routine which will return  to  either  PC+1  or
PC+2:

        LINKAGE
            skip_ret = PUSHJ :  SKIP(1) LINKAGE_REGS(15,13,1)
                                NOPRESERVE(2,3,4,5)
                                PRESERVE(0,6,7,8,9,10,11,12,14);

        EXTERNAL ROUTINE
            icanskip    : skip_ret;

        IF icanskip()
        THEN
            ! It did skip on return to caller
            ....
        ELSE
            ! Did not skip
            ....
Bliss-36 Release 3 For TOPS-10: Release Notes                   Page 5






2.6.3  KS10 Environment Option And Switch

The  keyword  KS10  is  now  supported  in  the  Bliss-36  ENVIRONMENT
module-head  switch.   The  command-line  switch  /KS10 is also legal.
This is a synonym  for  ENVIRONMENT(KL10)  or  the  /KL10  switch  and
controls the instructions which the compiler will use.

It is also possible to alter the default  for  this  switch  when  the
compiler  is  installed.   See  the  Bliss-36  Installation  Guide for
further information.



2.6.4  ERRLIM Switch

This switch specifies the maximum number  of  Error-level  diagnostics
which  are  permitted before terminating the compilation.  The default
value is 30 errors.



2.6.5  Double-Precision Floating Point ( %D )

BLISS now supports double precision floating point literals on the KI,
KL  and  KS  processors.   The syntax is identical to the Bliss-32 and
Bliss-16 %D.



2.6.6  Extended Exponent Literals ( %G )

The KL processor now has support for a  floating  point  format  which
handles a larger exponent than the %E or %D floating point formats.


                         Hardware Requirement

               This feature requires micro-code support
               for its operation.


See the Bliss Language Guide for details on  the  form  of  G_Floating
constants.  The basic syntax is

        %G 'floating-number'

where  "floating-number"  is  a  character   string   representing   a
floating-point number.
Bliss-36 Release 3 For TOPS-10: Release Notes                   Page 6


2.6.7  Floating Point BUILTIN Functions

These functions are documented  in  the  Bliss-36  User's  Guide,  3rd
Edition.  The new functions provide a common syntax for floating point
manipulation in Bliss-36, Bliss-32 or Bliss-16, using  either  single,
double or extended exponent floating point formats.

          ADDF      SUBF      MULF      DIVF      CMPF
          ADDD      SUBD      MULD      DIVD      CMDD
          ADDG      SUBG      MULG      DIVG      CMPG
          CVTIF     CVTID     CVTDI     CVTFI     CVTFD
          CVTIG     CVTFG     CVTGI     CVTGF     CVTDF

The ADDx, SUBx, MULx and DIVx builtins all take  the  address  of  two
source  operands and the address of a destination.  The CVTxy builtins
take the address of a source and the address of a  destination.   Only
CMPG, CMPF and CMPD return a value in the range {-1, 0, 1} to indicate
less-than, equal or greater-than.  All other  floating-point  builtins
are NOVALUE-d.



3.0  RESTRICTIONS

If Bliss-36 Version 3 is used  to  compile  a  library,  that  library
cannot  be used with any earlier compiler.  The new release can handle
any library compiled by a V2 or V2.1 compiler.  We recommend that  you
recompile all library files with the latest release.

The CLEARSTACK linkage-option must not be used with the MAIN  routine.
BLISS-36 does not provide support for this.



4.0  CHANGES TO UNSUPPORTED SOFTWARE

As a courtesy to our users, some  unsupported  development  tools  are
shipped with the BLISS distribution.



4.1  XPORT - Transportable BLISS Programming Tools

A maintenance release of XPORT appears in the version 3 release.



4.2  SIX12 - BLISS Symbolic Debugger

SIX12 has been upgraded to include  many  new  features  developed  by
Carnegie-Mellon  University  and  has  been re-written in Bliss-36 and
extensively commented.  This should make it much easier for  users  to
tailor the debugger to their own needs.

Included in this release is  a  machine-readable  manual  -  SIX12.MEM
Bliss-36 Release 3 For TOPS-10: Release Notes                   Page 7


which serves as a reference manual for the debugger.



4.3  TENDEF.R36 System Interface File

Two   STRUCTUREs   have   been   defined   in   TENDEF   to   simplify
systems-programming  with  the  MONSYM  and  UUOSYM system interfaces.
These are MONWORD and MONVEC data structures.  For information on  how
to  use this, examine TENDEF.R36 or consult the Bliss-36 User's Guide,
(Tools, Libraries and System Interfaces, Chapter 9).



4.4  PRETTY - BLISS Source Formatter

PRETTY has been enhanced to understand the full BLISS V3 language.   A
number  of  known problems with the formatter have been fixed for this
release.



5.0  KNOWN BUGS


      o  A /VARIANT switch in  SWITCH.INI  will  override  a  /VARIANT
         switch in the BLISS command line.




6.0  FOR FURTHER HELP

     A number of sources of additional help are available.

      o  For information on command interface -- "HLP:BLISS.HLP"  Just
         type "HELP BLISS" to the monitor.

      o  Language information -- "BLISS  Language  Guide":   Documents
         the  BLISS  language.   The  Third  Edition,  which documents
         version  3  of  BLISS  is  available  as  SDC  order   number
         AA-H275C-TK.

      o  Compiler information -- "BLISS-36 User's  Guide":   Describes
         use  of  the  BLISS-36  compiler,  some  available tools, and
         machine  specific  features.   The   Third   Edition,   which
         documents  version  3  of  BLISS-36 is available as SDC order
         number AA-H712C-TK.

      o  Syntax summary -- "BLISS Pocket  Guide":   Available  as  SDC
         order number AV-H289C-TK.

      o  BLISS course -- A course in the BLISS programming language is
         available  from  DEC.  Your system manager may obtain further
         information  by  contacting  DEC  Educational   Services   at
Bliss-36 Release 3 For TOPS-10: Release Notes                   Page 8


         (617) 275-5000 ext. 2675.

      o  BLISS-36 debugger (SIX12):  "DOC:SIX12.MEM"

      o  BLISS pretty-print  utility:   "HLP:PRETTY.HLP":   Just  type
         "HELP PRETTY" to the monitor.

      o  BLISS cross-reference utility:  "HLP:BLSCRF.HLP":  Just  type
         "HELP BLSCRF" to the monitor.

      o  Simple  terminal  I/O:   "HLP:TUTIO.HLP":   Just  type  "HELP
         TUTIO" to the monitor.

      o  Conversion   of   BLISS-10   programs    to    BLISS-36    --
         "HLP:CVT10.HLP":  Just type "HELP CVT10" to the monitor.  For
         greater detail see the file "DOC:CVT10.DOC".

      o  Monitor interfaces -- "DOC:MONINT.DOC".

      o  Examining ".REL" files -- "HLP:DMPREL.HLP":  Just type  "HELP
         DMPREL" to the monitor.

      o  Anything else -- contact your system manager.




7.0  COMPONENTS

     Below is a list of the major components of the  BLISS-36  system.
Full  support  is  available  only for the BLISS compiler itself.  The
other components are unsupported but will be maintained to the  extent
our resources allow.

      o  BLISS -- The BLISS-36 compiler itself.

      o  PRETTY -- An automatic formatting program  for  BLISS  source
         code.

      o  BLSCRF and CONDEN --  A  cross-reference  listing  generating
         system for BLISS source code.

      o  EZIO and TUTIO -- I/O utilities for BLISS-36.

      o  Monitor Interfaces -- definitions necessary  for  interfacing
         with the TOPS-10 and TOPS-20 monitors.

      o  CVT10 -- BLISS-10 to BLISS-36 conversion program.

      o  SIX12 -- High level debugger for BLISS-36.

      o  XPORT -- Transportable BLISS programming tools