There are 15 other files named bliss.doc in the archive. Click here to see a list.
BLISS-36 Release 4 For TOPS-20: Release Notes
BLISS-36 Release 4 For TOPS-20: Release Notes Page 2
1 INTRODUCTION . . . . . . . . . . . . . . . . . . . . 3
2 NEW FEATURES . . . . . . . . . . . . . . . . . . . . 3
3 COMMON CHANGES . . . . . . . . . . . . . . . . . . . 3
3.1 New /CROSS-REFERENCE Qualifier . . . . . . . . . . 3
3.2 New /CHECK Qualifier . . . . . . . . . . . . . . . 3
3.3 INITIAL Or PRESET On Local Storage . . . . . . . . 3
3.4 New Lexical Function %QUOTENAME . . . . . . . . . 4
3.5 NULLPARAMETER Change . . . . . . . . . . . . . . . 4
3.6 BIND To CTCE Permitted In LIBRARY Precompilation . 4
3.7 FIELD Names Permitted In Field-component . . . . . 4
3.8 Changes To Listing Format . . . . . . . . . . . . 4
4 BLISS-36 SPECIFIC CHANGES . . . . . . . . . . . . . 5
4.1 Extended Addressing Capability . . . . . . . . . . 5
4.2 Linkage-Type Expansion . . . . . . . . . . . . . . 5
5 CHANGES TO UNSUPPORTED TOOLS . . . . . . . . . . . . 5
5.1 MONINT . . . . . . . . . . . . . . . . . . . . . . 6
5.2 BLSCRF - BLISS Cross Referencer . . . . . . . . . 6
5.3 PRETTY - BLISS Source Formatter . . . . . . . . . 6
6 CHANGES TO UNSUPPORTED SOFTWARE . . . . . . . . . . 6
6.1 XPORT - Transportable BLISS Programming Tools . . 6
6.2 SIX12 - BLISS Symbolic Debugger . . . . . . . . . 6
6.3 TENDEF.R36 System Interface File . . . . . . . . . 7
7 RESTRICTIONS . . . . . . . . . . . . . . . . . . . . 7
8 KNOWN BUGS . . . . . . . . . . . . . . . . . . . . . 9
9 FOR FURTHER HELP . . . . . . . . . . . . . . . . . . 9
10 COMPONENTS . . . . . . . . . . . . . . . . . . . . 10
BLISS-36 Release 4 For TOPS-20: Release Notes Page 3
This document provides information pertaining to BLISS-36 Version 4.
2 NEW FEATURES
Version 4 of the BLISS language is upward compatible with version 3.
3 COMMON CHANGES
This section discusses new language and compiler features which are
common to BLISS-32, BLISS-36 and BLISS-16.
3.1 New /CROSS-REFERENCE Qualifier
A new command qualifier, /CROSS-REFERENCE, may be specified to obtain
a complete symbol cross-reference in the listing file.
3.2 New /CHECK Qualifier
BLISS will now optionally detect certain language usage that, although
technically permitted, is likely to be a user error. The conditions
o CHECK(INITIAL) - Use of an uninitialized LOCAL, STACKLOCAL,
and REGISTER data segment.
o CHECK(REDECLAR) - Redeclaration of a name in a nested scope.
o CHECK(OPTIMIZE) - Code and boolean tests that can be
eliminated as an optimization because the code is unreachable
or the test can be determined at compile-time.
o CHECK(FIELD) - Use of a field name in a structure access to
a data segment that has no field-attribute.
3.3 INITIAL Or PRESET On Local Storage
The restriction that the initial-values must be link-time constant
expressions has been removed for LOCAL, STACKLOCAL, and REGISTER
BLISS-36 Release 4 For TOPS-20: Release Notes Page 4
3.4 New Lexical Function %QUOTENAME
The %QUOTENAME permits one to construct the name of a macro as with
%NAME, but the name is quoted as with %QUOTE and the macro is not
expanded. Thus one can do the following:
MACRO %NAME( 'A_', %NUMBER(COUNT) ) = ...
%IF %DECLARED( %QUOTENAME( 'A_', %NUMBER(COUNT) ) ) %THEN ...
Using just %NAME, there is no way to construct the macro name without
also causing the macro to expand.
3.5 NULLPARAMETER Change
The actual-parameter to be tested by the NULLPARAMETER
linkage-function may now be specified by supplying the corresponding
formal-parameter name as parameter to NULLPARAMETER. It may also be
specified as previously by number.
3.6 BIND To CTCE Permitted In LIBRARY Precompilation
BIND and BIND ROUTINE declarations are permitted in LIBRARY
precompilation with the restriction that the data-name-value be a
compile-time constant expression. This feature will be most useful in
BLISS-16 and BLISS-36, where it can be used to include BIND ROUTINE
declarations using the EMT and JSYS linkage types in LIBRARY files.
3.7 FIELD Names Permitted In Field-component
A FIELD name may now be used as a field-component in the declaration
of another field-name. The following is an example of this usage.
FIELD A = [1, 0, %BPVAL, 0];
FIELD B = [A];
3.8 Changes To Listing Format
Several minor changes were made to the listing format. For example,
the BEGIN-END block nesting depth is now printed after the
line-number, and compilation speed in terms of both lines and lexemes
per minute is printed at the end of the compilation.
BLISS-36 Release 4 For TOPS-20: Release Notes Page 5
4 BLISS-36 SPECIFIC CHANGES
4.1 Extended Addressing Capability
An extended addressing capability has been added for TOPS-20. To
accomodate this feature a new environment switch, /EXTENDED, is
specified to obtain partial support of the feature for the KL10 Model
B. The new switch also carries an option,
/EXTENDED:SECTION-INDEPENDENT, which allows code to be generated for
4.2 Linkage-Type Expansion
Linkage types have been expanded to include PS_INTERRUPT. A routine
declared with PS_INTERRUPT has the general form:
linkage INTERRUPT = ps_interrupt;
routine PSI : INTERRUPT=
For TOPS-20 the compiled code is:
PSI: PUSH SP, [PSI36%] ;Fake return PC to keep
PUSH SP, FP ;[OPT] Setup frame
MOVE FP, SP ;[OPT]
PUSH SP, ... ;[OPT] Save necessary ACs
POP SP, ... ;[OPT] Restore saved ACs
POP SP, FP ;[OPT] Recover old FP
ADJSP SP, 1 ;Remove fake return PC
DEBRK% ;and return to monitor
Notice that the expanded code looks exactly like a PUSHJ routine,
except that the called routine places a dummy PC on the stack at
routine entry. At routine exit, the dummy PC is removed and a DEBRK%
JSYS is executed. The environment is the same for TOPS-10, the
exception being that a DEBRK. UUO is used to exit the routine.
5 CHANGES TO UNSUPPORTED TOOLS
This section describes components of the BLISS V4
release which are NOT supported by Digital. These
items are provided only as a service to our users.
See the BLISS-36 User's Guide for information concerning these tools.
BLISS-36 Release 4 For TOPS-20: Release Notes Page 6
The MONINT utility has been enhanced to support EXTERNAL names. If a
name to be declared external contains characters that are not legal in
Bliss identifiers (i.e. dollar sign, or period), then a combination
of external and macro declarations is generated. For example:
MACRO $JBDAT = %NAME('.JBDAT') %;
Note that if a program already contains such macros, then these macros
must be deleted from the program before it will compile.
5.2 BLSCRF - BLISS Cross Referencer
The BLSCRF cross-reference utility is no longer provided in BLISS
releases. It has been superseded by the new cross-reference facility
(see /CROSS-REFERENCE above).
5.3 PRETTY - BLISS Source Formatter
PRETTY is no longer provided in BLISS releases. It will become
available through DECUS.
6 CHANGES TO UNSUPPORTED SOFTWARE
As a courtesy to our users, some unsupported development tools are
shipped with the BLISS distribution.
6.1 XPORT - Transportable BLISS Programming Tools
A maintenance release of XPORT appears in the version 3 release.
6.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
which serves as a reference manual for the debugger.
BLISS-36 Release 4 For TOPS-20: Release Notes Page 7
6.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 MONBLOCK 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).
This section summarizes restrictions with the V4 release. Where
possible, temporary solutions are described.
PROBLEM: The character handling functions that are implemented using
the hardware EXTEND instruction may not operate properly
when the /EXTENDED qualifier is used. These functions are:
- CH$MOVE and CH$COPY
- CH$EQL, CH$NEQ, CH$LEQ, etc.
SOLUTION: This restriction will be removed by a future release of the
TOPS-20 KL microcode.
PROBLEM: The following code fragment
d = 0;
WHILE .d NEQ 0 DO
x = 66 / .d; ! Assume "d" never written
IF .y THEN EXITLOOP
will cause a zero-divide exception at execution time when
compiled using normal optimization. The compiler believes
that the expression "66/.d" is loop invariant and moves the
computation out of the loop.
BLISS-36 Release 4 For TOPS-20: Release Notes Page 8
SOLUTION: This is a restriction in V4. In this particular case, the
expression could be rewritten as:
WHILE 1 DO
IF .d EQL 0 THEN EXITLOOP;
x = 66 / .d;
In this case, the expression cannot be moved out of the
PROBLEM: Incorrect code generated for structure definitions of the
STRUCTURE BAD[I,P,S]= [%UPVAL]
(IF .I THEN BAD ELSE BAD + .BAD<16,16>)<P,S>;
OWN X: BAD;
T = .X[.T,0,12];
"X" is loaded into a register in the THEN-branch, but the
ELSE-branch uses the register without loading it.
SOLUTION: This is the result of a design flaw in the way structure
references are expanded. BLISS semantics guarantee that a
structure actual-parameter is evaluated only once. This is
implemented by treating the first occurrence of a structure
formal as if it was a BIND declaration. The other
occurrences of the structure formal are then treated as if
they were uses of the "imaginary" bind-name. This choice of
implementation fails when the first occurrence of the
structure formal is in conditional flow! The problem can be
avoided by insuring that the first occurrence of each formal
is outside of conditional flow. The example structure
should be written as:
STRUCTURE GOOD[I,P,S] = [%UPVAL]
(GOOD; IF .I THEN GOOD ELSE GOOD+.GOOD<16,16>)<P,S>;
Note that the "structure-name" is the zero-th structure
formal parameter. The formals "I", "P" and "S" are already
outside of conditional flow, so they are processed
correctly. This change will cause the compiler to use
slightly more memory, but the resulting code will be
correct. There should be no reduction in optimization
BLISS-36 Release 4 For TOPS-20: Release Notes Page 9
Be aware that there is no problem when the conditional flow
is constant-folded at compile-time, or when there is no
conditional flow in the structure body.
8 KNOWN BUGS
There are no known problems with the TOPS-20 release.
9 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
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
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.
o BLISS-36 debugger (SIX12): "HLP:SIX12.HLP": Just type "HELP
SIX12" to the monitor.
o Simple terminal I/O: "HLP:TUTIO.HLP": Just type "HELP
TUTIO" to the EXEC.
o Conversion of BLISS-10 programs to BLISS-36 --
"HLP:CVT10.HLP": Just type "HELP CVT10" to the EXEC. For
greater detail see the file "DOC:CVT10.DOC".
o Monitor interfaces -- "DOC:MONINT.DOC".
BLISS-36 Release 4 For TOPS-20: Release Notes Page 10
o Examining ".REL" files -- "HLP:DMPREL.HLP": Just type "HELP
DMPREL" to the EXEC.
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 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