Trailing-Edge
-
PDP-10 Archives
-
walsh_goodStuff_1600
-
more-uns/16ldif.mem
There are no other files named 16ldif.mem in the archive.
Title: BLISS-16C V4 and BLISS-32 V10 Differences
Specification Status: For Information
Architectural Status: N/A
File: 16LDIF.RNO
PDM #: not used
Date: 6 September 1978
Superseded Specs: "BLISS-16C V3 and BLISS-32 V6 Differences",
27 March 1978
Author: Ron Brender
Typist: Corinne DeLegge
Abstract: The differences between BLISS-16C V4 and BLISS-32 V10
are presented and discussed. Specifications unique to
BLISS-16C are detailed. This document is a companion
to "A Summary of BLISS-16C V4" (B16SUM). Both are to
be used in combination with the BLISS-32 Language
Guide.
Revision History:
(From BLISS-16C V1 to V2)
1. Add the precompiled declaration library facility:
a. LIBRARY declaration
b. LIBRARY and NOLIBRARY list-options of the LIST switch
c. /LIBRARY command switch
(From BLISS-16C V2 to V3)
2. Add condition handling facilities
a. ENABLE declaration
b. Signal expressions: SIGNAL, SIGNAL_STOP, SETUNWIND
c. VOLATILE attribute on data- and bind-data-declarations
3. Add compilation option to automatically invoke the MACY11
assembler to produce a PDP-11 object module and assembly
listing of the compiled code.
(From BLISS-16C V3 to V4)
4. Add CH$COMPARE character-handling-function
5. Allow REQUIRE and UNDECLARE in /LIBRARY compilation
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page 3
Table of Contents
1. Overview
1.1 Target Hardware Architectures
1.2 Implementation Limitations
2. BLISS-16C Specific Module Switches
2.1 OBJECT Module Switch
2.2 ADDRESSING_MODE Module Switch
2.3 IDENT Module Switch
2.4 OLDBLISS Module Switch
3. BLISS-16C Machine Specific Functions
3.1 DECX
3.2 HALT
3.3 Memory Management
3.4 Processor Status
3.5 RESET
3.6 ROT
3.7 SWAB
3.8 WAIT
3.9 NOP
4. BLISS-16C Linkages
5. BLISS-16C Condition Handling
Appendices
A. BLISS-16C and BLISS-32 Language Differences
B. BLISS-16C and BLISS-32 Operational Differences
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page 4
BLISS-16C V4 AND BLISS-32 V10 DIFFERENCES
1.0 OVERVIEW
This document presents a complete statement of the differences between
BLISS-16C V4 and BLISS-32 V10. Functional specifications unique to
BLISS-16C are given, but specifications common with BLISS-32 and
BLISS-36C are not restated from other documents except where necessary
to present and discuss the nature of the differences.
The following documents should be consulted for additional
specifications:
"A Summary of BLISS-16C V4"
"BLISS-32 Language Guide", Second Edition
"Common BLISS Supplement to the BLISS-32 Language Guide"
When the Third Edition of the BLISS-32 Language Guide is available it
supercedes both the Second Edition and the Common BLISS Supplement.
The differences identified in the following generally result from two
kinds of considerations: differences between the target hardware
architectures, and limitations in the technique used to implement
BLISS-16C.
1.1 Target Hardware Architectures
PDP-11 memory is organized as 8-bit bytes. The primary unit of data
is the word consisting of 16 bits - two 8-bit bytes aligned at an even
address. Fields of up to 16 bits can be accessed with reasonable
efficiency; however, only a byte or a word can be directly accessed
without using sequences of shift and mask operations.
VAX memory is organized as 8-bit bytes. The primary unit of data is
the longword consisting of 32 bits - four 8-bit bytes. Fields of up
to 32 bits in size can be efficiently accessed starting at any bit
position; there are no boundary limitations.
The language differences that result from these characteristics are:
1. The allocation-unit LONG of BLISS-32 has no corresponding
interpretation in BLISS-16C.
2. Field selectors in BLISS-16C are limited to fields completely
contained in a single word.
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page 5
OVERVIEW
Note that signed field extension is supported in BLISS-16C.
1.2 Implementation Limitations
The BLISS-16C compiler is implemented using the BLISS-11 compiler as
an integral part of its operation. BLISS-16C consists of two phases:
a translation phase that processes the BLISS-16C source and produces
an intermediate BLISS-11 source, and a BLISS-11 compilation phase.
In some cases, extensions and modifications were made to the BLISS-11
compiler to make BLISS-16C operate as a normal compiler and to
minimize restrictions in BLISS-16C due to the use of BLISS-11. A
number of limitations could not, however, be overcome.
Features of BLISS-32 that cannot be provided because of this include:
o Restrictions on names (see section A.2.1.4)
o The attributes
ADDRESSING_MODE (not to be confused with module switch)
ALIGN
WEAK
o The declaration
FORWARD (not to be confused with FORWARD ROUTINE)
o Some minor compilation control options
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page 6
BLISS-16C SPECIFIC MODULE SWITCHES
2.0 BLISS-16C SPECIFIC MODULE SWITCHES
There is one module switch, OBJECT, that is unique to BLISS-16C. The
module switches, ADDRESSING_MODE, IDENT and OLDBLISS are present in
BLISS-32 or BLISS-36C but have slightly different specifications.
These switches are described in the following sections.
2.1 OBJECT Module-Switch
The module-switch
{ ABSOLUTE }
OBJECT ( { RELOCATABLE } )
specifies properties of the object module to be produced. The
default, if OBJECT is not given, is RELOCATABLE.
RELOCATABLE indicates that a standard relocatable object module is to
be produced. Such an object module must be processed by a linker
(task builder) in order to be prepared for loading and execution.
ABSOLUTE indicates that an absolute object module is to be produced.
Such an object module does not need to be linked. When ABSOLUTE is
specified, PSECT declarations and all forms of EXTERNAL declarations
are not valid.
The object option may also be specified in a compilation command as
follows:
/OBJECT:ABSOLUTE
/OBJECT:RELOCATABLE
2.2 ADDRESSINGMODE Module-Switch
The module-switch
{ ABSOLUTE }
ADDRESSING_MODE ( { RELATIVE } )
specifies the type of addressing mode to be used when a choice exists
between absolute (mode 37) and relative (mode 67).
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page 7
BLISS-16C SPECIFIC MODULE SWITCHES
NOTE
In BLISS-16C V3, support of this feature
is limited to emitting the .ENABL AMA
assembler directive for the ABSOLUTE
option. More complete support, such as
generating absolute dispatch tables for
the CASE expression, is not planned
initially.
The addressing mode option may also be specified in the compilation
command as follows:
/ADDRESSING:ABSOLUTE
/ADDRESSING:RELATIVE
2.3 IDENT Module Switch
In BLISS-16C, the quoted-string in an IDENT module switch must contain
only Radix-50 characters. If the string is longer than six
characters, it will be truncated to the initial six for use in the
object module identification.
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page 8
BLISS-16C SPECIFIC MODULE SWITCHES
2.4 OLDBLISS Module Switch
The module switch
OLDBLISS = ' BLISS-11-module-switch ,... '
provides a means to invoke BLISS-11 specific module switches for use
with BLISS-16C.
NOTE
This switch is provided as a
transitional aid for those users who
want to use BLISS-16C in combination
with existing BLISS-11 modules and/or
programs.
It is not upward compatible with a
possible future BLISS-16; facilities
comparable to existing BLISS-11 module
facilities may or may not be available
in BLISS-16.
If OLDBLISS is specified, the text of the quoted-string is included in
the intermediate BLISS-11 module head after the module switches
produced by the BLISS-16C translator.
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page 9
BLISS-16C MACHINE SPECIFIC FUNCTIONS
3.0 BLISS-16C MACHINE SPECIFIC FUNCTIONS
Machine-specific-functions provide access to specialized PDP-11
capabilities that are not otherwise available in the BLISS language.
In all cases, these functions are implemented as inline code sequences
and, thus, avoid the overhead of an ordinary routine call.
The %REF standard function must not be used as an actual parameter in
calling any of these functions.
In order to use one of these functions, the name must be declared in a
BUILTIN declaration.
In the following sections, the machine-specific functions are
presented in groups of logically related operations. The following
table lists all of the function names in alphabetical order and the
section in which each is described.
Function Name Section
DECX 3.1
HALT 3.2
NOP 3.9
MFPD 3.3
MFPI 3.3
MFPS 3.4
MTPD 3.3
MTPI 3.3
MTPS 3.4
RESET 3.5
ROT 3.6
SWAB 3.7
WAIT 3.8
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page 10
BLISS-16C MACHINE SPECIFIC FUNCTIONS
3.1 DECX
The DECX function provides a specialized routine call using the TRAP
instruction followed by arguments inline after the TRAP instruction.
Form of Call:
DECX ( code, parameter ,... )
Parameters:
code - must be a compile-time constant expression in
the range 0 to 255. The constant value is
incorporated into the low byte of the TRAP
instruction.
parameter - must be a link-time constant expression.
Result:
no value
3.2 HALT
The HALT function results in a HALT instruction and returns the value
of the processor console switches after the processor is continued.
Form of Call:
switches = HALT ( { display } )
Parameter:
display - (optional) value to be displayed in the console
lights
Result:
switches - value of the console switches after the
processor is continued
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page 11
BLISS-16C MACHINE SPECIFIC FUNCTIONS
Notes:
1. If present, the parameter display is evaluated and placed in
register 0 immediately preceding the HALT instruction. On
some PDP-11 processors the contents of register 0 is
displayed in the console lights when the processor is halted.
2. HALT is a privileged instruction on some PDP-11 processors.
3. Following the HALT instruction, the contents of the switch
register is read from the I/O page if the value of the
function call is used; the I/O page is not referenced if the
value is not used. In systems with memory management, this
may result in an access violation or an unpredictable value.
3.3 Memory Management
Four functions (MFPD, MFPI, MTPD, MTPI) provide a means to move values
to or from previous data or instruction spaces. These functions are
only valid on processors equipped with the KT-11 memory management
hardware.
Form of Call:
value = MFPD ( address )
value = MFPI ( address )
MTPD ( value, address )
MTPI ( value, address )
Parameters:
address - the address in the addressing space of the
previous processor mode from which or to which a
word value is to be moved. Must be an even
address.
value - the value of a word to be moved to the given
address in the previous address space.
Result:
value - (MFPD and MFPI) the contents of the word fetched
from the given address in the previous space.
- (MTPD and MTPI) NOVALUE
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page 12
BLISS-16C MACHINE SPECIFIC FUNCTIONS
3.4 Processor Status
The processor status functions provide a means to move values from
(MFPS) or to (MTPS) the processor status word on those PDP-11 systems
where specific instructions must be used for this purpose.
Form of Call:
psw = MFPS ()
MTPS ( new-psw )
Parameters:
new-psw - value to be assigned as the new processor status
word
Result:
psw - fetched value of processor status word.
Notes:
1. The PDP-11 MFPS and MTPS instructions are available only on
newer members of the PDP-11 family (e.g., LSI-11, -11/34,
-11/60).
3.5 RESET
The RESET function performs a system wide hardware reset operation.
Form of Call:
RESET ()
Result:
no value
Note:
1. RESET is a privileged instruction on some PDP-11 processors.
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page 13
BLISS-16C MACHINE SPECIFIC FUNCTIONS
3.6 ROT
The ROT function performs a 17-bit circular rotate operation using a
given value and the processor C-bit.
Form of Call:
result = ROT ( value, count )
Parameter:
value - the value to be rotated.
count - the number of bits that the second parameter is
to be rotated. If count > 0, then rotate left;
if count < 0, then rotate right; otherwise no
rotate is performed. Must be a compile-time
constant expression.
Result:
value rotated the given number of bits.
3.7 SWAB
The SWAB function swaps the high and low bytes of the given value.
Form of Call:
result = SWAB ( value )
Parameter:
value - value whose high and low bytes are to be
swapped.
Result:
swapped value
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page 14
BLISS-16C MACHINE SPECIFIC FUNCTIONS
3.8 WAIT
The WAIT function performs a processor WAIT operation.
Form of Call:
WAIT ()
Result:
no value
3.9 NOP
The NOP function performs a processor NOP operation.
Form of Call:
NOP ()
Result:
no value
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page 15
BLISS-16C LINKAGES
4.0 BLISS-16C LINKAGES
LINKAGE declarations provide a means to optimize the time-space
requirements of routines by providing specialized control over details
of the calling sequence and the use of registers between routines.
The linkage capabilities defined in this section are similar to those
provided in BLISS-32. The following features of the BLISS-32
specification are not included:
o JSB linkage-type
o GLOBAL, PRESERVE, NOPRESERVE and NOTUSED linkage-options
o GLOBAL REGISTER and EXTERNAL REGISTER declarations
The BLISS-16C specification adds the following:
o JSR, EMT, TRAP, IOT and INTERRUPT linkage-types
o CLEARSTACK and RTT linkage-options
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page 16
BLISS-16C LINKAGES
4.1 Syntax
______________________________________________________________________
linkage-declaration LINKAGE linkage-definition ,... ;
______________________________________________________________________
linkage-definition linkage-name = linkage-type
{ ( parameter-location ,... ) }
{ nothing }
{ : linkage-option ... }
{ nothing }
______________________________________________________________________
{ CALL }
{ JSR }
linkage-type { EMT }
{ TRAP }
{ IOT }
{ INTERRUPT }
______________________________________________________________________
{ REGISTER = register-number }
parameter-location { STANDARD }
{ nothing }
______________________________________________________________________
linkage-option { CLEARSTACK }
{ RTT }
______________________________________________________________________
linkage-name name
______________________________________________________________________
register-number compile-time-constant-expression
______________________________________________________________________
The keywords CALL, JSR, EMT, TRAP, IOT, INTERRUPT, STANDARD,
CLEARSTACK, and RTT are unreserved names.
There are two predeclared linkage-names:
BLISS
FORTRAN
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page 17
BLISS-16C LINKAGES
4.2 Restrictions
The linkage-attribute given for a routine name in an EXTERNAL ROUTINE,
FORWARD ROUTINE, BIND ROUTINE, or GLOBAL BIND ROUTINE must agree with
the linkage-attribute given in the corresponding ROUTINE or GLOBAL
ROUTINE declaration.
Linkage-names defined with EMT, TRAP or IOT linkage-type must not be
given as a linkage-attribute in any kind of routine declaration.
(Such a linkage-name must be used only in a general routine call.)
Linkage-names defined with INTERRUPT linkage-type must only be used as
a linkage-attribute in a ROUTINE or GLOBAL ROUTINE declaration.
The register-number value must be in the range 0 to 5.
The CLEARSTACK linkage-option must not be specified with the CALL or
JSR linkage-type.
If the CLEARSTACK linkage-attribute is given, the number of
actual-parameters in a (general) routine-call must be the same as the
number of parameter-locations given.
The RTT linkage-modifier must only be given with the INTERRUPT
linkage-type.
4.3 Defaults
If a parameter-location is not given, then STANDARD is assumed.
If a routine-call or routine declaration contains more actual or
formal parameters, respectively, than are given in the associated
linkage-definition, then STANDARD is assumed as the parameter-location
for each of the additional parameters.
4.4 Semantics
A linkage-definition defines a name that designates a particular
combination of calling sequence options. Generally, such a name may
be used as a linkage-attribute in any kind of routine; however, this
is not true of all linkage-names.
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page 18
BLISS-16C LINKAGES
The linkage-type CALL specifies that the PDP-11 JSR and RTS
instructions are to be used by the compiled code, and that the
parameters with STANDARD parameter locations will be materialized as a
counted vector whose address is passed in register 5 (R5).
The linkage-type JSR specifies that the PDP-11 JSR and RTS
instructions are to be used by the compiled code, and that the
parameters with STANDARD parameter locations will be placed on the
stack (without a parameter count) and accessed by the called routine
relative to the stack pointer (SP) register.
The linkage-type INTERRUPT specifies that a routine will be "called"
only by a PDP-11 hardware interrupt. Such linkages are discussed
below.
If a REGISTER is specified as a parameter-location, the given register
will be used as the location to which the actual parameter value will
be assigned, and correspondingly, will be the location where the
called routine will expect to find the actual value. This use of a
register location to transmit an actual parameter value to a called
routine does not affect the semantics associated with the use of the
corresponding formal parameter names.
The CLEARSTACK linkage-option specifies that the actual parameters
placed on the stack in a routine call will be removed from the stack
by the called routine. If CLEARSTACK is not specified, they will not
be removed by the called routine (and are the responsibility of the
caller).
The RTT linkage-option (which may be used only with the INTERRUPT
linkage-type) specifies that the PDP-11 RTT intruction should be used
to exit from the interrupt routine instead of the normal RTI
instruction.
4.5 INTERRUPT Linkage-Type
INTERRUPT must not be specified as a linkage-type except in an
ordinary- or global-routine declaration. It specifies that the
routine being defined will only be "called" by a PDP-11 hardware
interrupt or a software simulation of an interrupt (e.g. RSX SST).
(Interrupts may occur as a result of "external" events such as I/O
device completion or programmed events such as execution of certain
instructions, EMT, IOT, and so on.)
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page 19
BLISS-16C LINKAGES
The number of formal parameters given for the routine must equal the
number of values pushed on the stack by the "call". In most cases
this is exactly two. However, interrupt routines that will be
"called" by general-routine-calls having a linkage-type of EMT, TRAP,
or IOT may have additional formal parameters.
The formal parameters of the routine correspond to the hardware values
in the order pushed; that is, the first formal parameter corresponds
to the first value pushed, the second formal parameter corresponds to
the second value pushed, and so on. Consequently, the last formal
parameter corresponds to the pushed program counter (PC) and the next
to last formal parameter corresponds to the pushed processor status
(PS).
4.6 Predefined Linkage Names
There are two predefined linkage names: BLISS and FORTRAN. The
specifications for these are given in the "Common BLISS Supplement to
the BLISS-32 Language Guide".
Observe that these linkage-names are similar to the following:
LINKAGE
BLISS = JSR,
FORTRAN = CALL;
The only difference is that the predeclared linkage FORTRAN permits
the use of the linkage-functions (ACTUALCOUNT, ACTUALPARAMETER,
NULLPARAMETER) while the explicit declaration above does not.
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page 20
BLISS-16C LINKAGES
4.7 General Routine Call
A routine whose address is computed during execution may be called
with a linkage other than the default linkage (as given by a LINKAGE
switch) using a general-routine-call. The syntax of the call is:
______________________________________________________________________
general-routine- linkage-name
call
( routine-address
{ , actual-parameter ,... }
{ nothing }
)
______________________________________________________________________
routine-address }
actual-parameter } expression
______________________________________________________________________
A linkage-name defined with linkage-type INTERRUPT must not be used in
a general-routine-call.
In a general-routine-call, the routine-address expression is
interpreted as the address of the routine to be called and the
remaining expressions are interpreted as the actual parameters of the
call.
In the following example,
EXTERNAL ROUTINE
F1 : FORTRAN,
F2 : FORTRAN,
F3 : FORTRAN;
BIND
TABLE = UPLIT(F1,F2,F3) : VECTOR;
...
FORTRAN(.TABLE[.I], P1, P2)
...
the address of a FORTRAN routine to be called is computed by fetching
an element of a vector.
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page 21
BLISS-16C LINKAGES
In the above example, the routine call might also be accomplished by
the following, which is equivalent:
BEGIN
BIND ROUTINE
R = .TABLE[.I] : FORTRAN;
R(P1,P2)
END
For the EMT, TRAP, and IOT linkage-types the following special rules
apply:
o For EMT and TRAP, the first value in the parameter list is
not a routine-address. Instead it is the value that will be
incorporated into the low byte of the EMT or TRAP instruction
itself. It must be a compile-time constant expression in the
range 0 to 255.
o For IOT, all of the values in the parameter list are
actual-parameters. There is no routine-address parameter.
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page 22
BLISS-16C CONDITION HANDLING
5.0 BLISS-16C CONDITION HANDLING
Condition handling in BLISS-16C is is very similar to BLISS-32 as
described in Chapter 14 of the BLISS-32 Language Guide, Third Edition.
A few supplementary comments on differences are presented here.
References to VAX-11 and VAX/VMS, of course, do not apply. The
Condition Handling Facility (CHF) in BLISS-16C is part of the
BLISS-16C library and not dependent on any PDP-11 operating system.
CHF does not interface with or support any operating system or
hardware defined traps or interrupts.
The encoding of condition values is simpler in BLISS-16C compared with
BLISS-32. In BLISS-16C, the three low order bits are the severity
field (with the same codes as in BLISS-32) and the remaining 13 high
order bits are the identity field. The customer definition flag is
the high bit of the identity field. No bits are reserved for other
purposes.
The only system defined condition value is the one for the unwind
signal. The name SS$_UNWIND is globally defined by the CHF software
(using symbol SS$.UN at object level) with a value of %O'77777'.
In BLISS-16C, the predeclared linkage-name BLISS must be given
(explicitly or by default) as the linkage-attribute of a handler
routine. Routines that contain an enable-declaration must have a
linkage-attribute that is defined with either the JSR or CALL
linkage-types (this includes the predeclared linkage-names BLISS and
FORTRAN).
In BLISS-16C, the mechanism vector (passed as the second parameter to
a handler) contains two elements: the count and the returned-value
location. Thus, a handler determines a returned-value by assigning to
MECH[1] (instead of MECH[3] in BLISS-32).
The executable-function SETUNWIND must be called with no parameters.
The two optional parameters available in BLISS-32 are not supported.
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page 23
BLISS-16C CONDITION HANDLING
The following declarations are BLISS-16C versions of the macros given
in Section 14.6.1 of the BLISS-32 Language Guide:
FIELD
CONDIT_FIELDS =
SET
STS$V_SEVERITY = [0,0,3,0], ! Severity field
STS$V_SUCCESS = [0,0,1,0], ! Success field
STS$V_COND_ID = [0,3,13,0], ! Condition
! identification
STS$V_CUST_DEF = [0,15,1,0], ! Customer definition
TES;
MACRO
CONDITION_VALUE = BLOCK[1] FIELD(CONDIT_FIELDS) %;
KEYWORDMACRO
STS$VALUE (
SEVERITY = SST$K_SEVERE,
COND_ID,
CUST_DEF = 1^15) =
(SEVERITY AND 7) OR
(COND_ID AND %O'17777')^3 OR
(IF CUST_DEF NEQ 0
THEN 1^15
ELSE 0)
%;
MACRO
STS$MATCH(A,B)=
(((A) AND %O'177770') EQL ((B) AND %O'177770')) %;
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page 24
BLISS-16C CONDITION HANDLING
APPENDIX A BLISS-16C AND BLISS-32 LANGUAGE DIFFERENCES
A.1 MODULES
A.1.1 Module-Switches
A.2 EXPRESSIONS
A.2.1 Primaries
A.2.1.1 Numeric-Literals
A.2.1.2 String-Literals
A.2.1.3 Plits
A.2.1.4 Names
A.2.1.5 Routine-Calls
A.2.1.6 Field-References
A.2.1.7 Structure-References
A.2.1.8 Blocks
A.2.1.9 Codecomments
A.2.2 Operator-Expressions
A.2.3 Executable-Functions
A.2.3.1 Standard-Functions
A.2.3.2 Supplementary-Functions
A.2.3.3 Machine-Specific-Functions
A.2.4 Control-Expressions
A.2.4.1 Conditional-Expressions
A.2.4.2 Case-Expressions
A.2.4.3 Select-Expressions
A.2.4.4 Loop-Expressions
A.2.4.5 Exit-Expressions
A.2.4.6 Return-Expressions
A.2.4.7 Signal-Expressions
A.3 CONSTANT-EXPRESSIONS
A.3.1 Compile-Time-Constant-Expressions
A.3.2 Link-Time-Constant-Expressions
A.4 DECLARATIONS
A.4.1 Attributes
A.4.1.1 The Allocation-Unit
A.4.1.2 The Extension-Attribute
A.4.1.3 The Structure-Attribute
A.4.1.3 The Field-Attribute
A.4.1.5 The Alignment-Attribute
A.4.1.6 The Initial-Attribute
A.4.1.7 The Volatile-Attribute
A.4.1.8 The Novalue-Attribute
A.4.1.9 The Linkage-Attribute
A.4.1.10 The Range-Attribute
A.4.1.11 The Addressing-Mode-Attribute
A.4.1.12 The Weak-Attribute
A.4.2 Data-Declarations
A.4.2.1 Own-Declarations
A.4.2.2 Global-Declarations
A.4.2.3 Forward-Declarations
A.4.2.4 External-Declarations
A.4.2.5 Local-Declarations
A.4.2.6 Stacklocal-Declarations
A.4.2.7 Register-Declarations
A.4.2.8 Global-Register-Declarations
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page 25
BLISS-16C CONDITION HANDLING
A.4.2.9 External-Register-Declarations
A.4.2.10 Map-Declarations
A.4.3 Structure-Declarations
A.4.4 Field-Declarations
A.4.5 Routine-Declarations
A.4.5.1 Ordinary-Routine-Declarations
A.4.5.2 Global-Routine-Declarations
A.4.5.3 Forward-Routine-Declarations
A.4.5.4 External-Routine-Declarations
A.4.6 Linkage-Declarations
A.4.7 Bound-Declarations
A.4.7.1 Literal-Declarations
A.4.7.2 External-Literal-Declarations
A.4.7.3 Bind-Data-Declarations
A.4.7.4 Bind-Routine-Declarations
A.4.8 Compiletime-Declarations
A.4.9 Macro-Declarations
A.4.9.1 Keyword-Macro-Declarations
A.4.9.2 Positional-Macro-Declarations
A.4.10 Require-Declarations
A.4.11 Library-Declarations
A.4.12 Builtin-Declarations
A.4.13 Psect-Declarations
A.4.14 Switches-Declarations
A.4.15 Label-Declarations
A.4.16 Undeclare-Declarations
A.4.17 Enable-Declarations
A.5 LEXICAL PROCESSING
A.5.1 Lexemes
A.5.2 Spaces
A.5.3 Separation Rules
A.5.4 Lexical-Conditionals
A.5.5 Lexical-Functions
A.5.6 Macro-Calls
A.5.6.1 Keyword-Macro-Calls
A.5.6.2 Positional-Macro-Calls
A.6 PREDECLARED NAMES
A.6.1 Literals
A.6.2 Macros
A.6.3 Structures
A.6.4 Linkages and Linkage-Functions
A.6.5 Character-Functions
A.7 MACHINE SPECIFIC NAMES
A.8 NAMES RESERVED FOR SPECIAL PURPOSES
APPENDIX A
BLISS-16C AND BLISS-32 LANGUAGE DIFFERENCES
A.1 MODULES
A.1.1 Module-Switches
The following switches are supported in BLISS-16C with meanings that are
analogous, but slightly different than BLISS-32:
ADDRESSING_MODE
CODE, NOCODE
DEBUG, NODEBUG
IDENT
OPTLEVEL
ADDRESSING_MODE in BLISS-16C is roughly a subset of that in BLISS-32.
There are two modes (ABSOLUTE, RELATIVE) instead of the four (ABSOLUTE,
GENERAL, LONG_RELATIVE, WORD_RELATIVE) in BLISS-32. The keyword forms for
EXTERNAL and NONEXTERNAL are not supported. NOCODE suppresses production
of the intermediate BLISS-11 source text and the BLISS-11 compilation
phase. As a consequence, no listing file is produced; however, the
intermediate file is produced and may be used as a listing file. DEBUG is
passed through to BLISS-11 to enable the use of the BLISS-11 debugging
package; however, this debugger is not provided or supported. The IDENT
switch in BLISS-16C permits only Radix-50 characters (since that is a
requirement of the PDP-11 object language); BLISS-32 has no such
restriction. OPTLEVEL causes certain BLISS-11 optimization related
switches to be selected, but is otherwise not directly supported.
The following switches are supported in BLISS-16C but not in BLISS-32:
OBJECT
OLDBLISS
The following list-options are supported in BLISS-32, but accepted and
ignored in BLISS-16C:
ASSEMBLY, NOASSEMBLY
BINARY, NOBINARY
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page A-2
MODULES
The following list-options are supported in BLISS-16C with interpretations
that are slightly different than in BLISS-32:
COMMENTARY, NOCOMMENTARY
SYMBOLIC, NOSYMBOLIC
SYMBOLIC controls the listing of the MACRO-11 machine code, and COMMENTARY
controls the listing of the BLISS-11 intermediate source text. The default
listing for BLISS-16C includes the BLISS-16C source, the intermediate
BLISS-11 text, and the generated MACRO-11 source code.
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page A-3
EXPRESSIONS
A.2 EXPRESSIONS
A.2.1 Primaries
A.2.1.1 Numeric-Literals -
Numeric-literals must be in the range
BLISS-16C: -(2**15) to (2**15)-1
BLISS-32: -(2**31) to (2**31)-1
Float-literals are not supported in BLISS-16C.
A.2.1.2 String-Literals -
In BLISS-16C, a word value (including a %RAD50_11 string-literal) in a plit
or initial attribute must occur on a word boundary.
BLISS-16C does not support the %P string-type.
A string-literal that is not a plit-string in a plit or initial-attribute
must not contain more characters than shown below:
String-Type BLISS-16C BLISS-32
%ASCII 2 4
%ASCIZ 1 3
%ASCIC 1 3
%RAD50_11 3 6
A.2.1.3 Plits -
BLISS-16C does not support the allocation-unit LONG.
In a BLISS-16C (counted) PLIT, the count that precedes the plit-items is
the number of PDP-11 words needed to represent the plit-items. The count
is allocated in the preceding word.
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page A-4
EXPRESSIONS
A.2.1.4 Names -
In BLISS-16C, there are a number of restrictions on the use of names that
result from the intermediate BLISS-11 compilation and from constraints of
PDP-11 linkers. Except as noted, these restrictions are not detected or
enforced by BLISS-16C.
1. In general, names must be unique within their first ten
characters. (This is because BLISS-11 accepts names of arbitrary
length, but only uses the first ten characters as significant.)
Some names are completely processed by the translator phase, do
not get passed into the intermediate BLISS-11 text and hence, are
not subject to this restriction. These are:
Macro names
Structure names
Non-external literal names
Compiletime names
2. Global and external names must be unique within their first six
characters to assure correct linking. Six characters is the
maximum length in the object representation and BLISS-11 truncates
longer names to six characters in the object module.
3. Module names must be unique within their first four letters to
assure correct linking. BLISS-11 uses the first four characters
of the module-name to construct default section names (.CSECTs)
that identify parts of the module image for debugging purposes;
these may be superseded by PSECT declarations.
4. The following names are reserved by BLISS-11 and must not be used
in BLISS-16C:
ASCII
ASCIZ
ASCIC
AT
BYTES
CREATE
CSECT
DIV
ELBANE
INLINE
INLINECOM
LENGTH
NSET
RAD50
SIGNAL
TESN
$CHARCOUNT
$COUNT
$LENGTH
$NAME
$QUOTE
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page A-5
EXPRESSIONS
$REMAINING
$STRING
$UNQUOTE
A warning diagnostic is given if any of these names appears as a
name to be declared.
5. The following names are supported in BLISS-16C, but their BLISS-11
meaning is required in the intermediate BLISS-11 text and hence,
these names must not be declared for another purpose.
BLISS
EMT
FORTRAN
IOT
TRAP
6. The following names are supported as machine-specific-functions,
must be declared in a BUILTIN declaration in order to be used, but
must not be declared for another purpose:
DECX
HALT
NOP
MFPD
MFPI
MFPS
MTPD
MTPI
MTPS
RESET
ROT
SWAB
WAIT
7. The following names are reserved in BLISS-16C because they are
reserved in BLISS-32, but have no meaning and/or are not supported
in BLISS-16C:
ALIGN
LONG
WEAK
8. The name character underscore, "_", is transformed to period, ".",
in the object module. (This is because underscore is not valid at
object level, but period is available.)
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page A-6
EXPRESSIONS
A.2.1.5 Routine-Calls -
A.2.1.6 Field-References -
A field-selector <p,s,f> must satisfy the following restrictions:
BLISS-16C: 0 < p
0 < s < 16
0 < p+s < 16
f = 0,1
BLISS-32: 0 < s < 32
f = 0,1
More intuitively, field-selectors in BLISS-16C must specify a field that is
completely contained in a single machine word.
A.2.1.7 Structure-References -
A.2.1.8 Blocks -
A.2.1.9 Codecomments -
A.2.2 Operator-Expressions
In both BLISS-16C and BLISS-32, the address relational operators are
implemented as unsigned integer relational operators (since valid address
values may overlap both positive and negative integer values).
A.2.3 Executable-Functions
A.2.3.1 Standard-Functions -
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page A-7
EXPRESSIONS
A.2.3.2 Supplementary-Functions -
See Section A.6.5.
A.2.3.3 Machine-Specific-Functions -
Both BLISS-16C and BLISS-32 have functions that are specific to their
respective target hardware architectures. These are detailed in their
respective specifications.
A.2.4 Control-Expressions
A.2.4.1 Conditional-Expressions -
A.2.4.2 Case-Expressions -
A.2.4.3 Select-Expressions -
A.2.4.4 Loop-Expressions -
A.2.4.5 Exit-Expressions -
A.2.4.6 Return-Expressions -
A.2.4.7 Signal-Expressions -
The executable-function SETUNWIND must be called with no parameters in
BLISS-16C; the two optional parameters in BLISS-32 are not supported.
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page A-8
CONSTANT EXPRESSIONS
A.3 CONSTANT EXPRESSIONS
A.3.1 Compile-Time-Constant-Expressions
A.3.2 Link-Time-Constant-Expressions
Link-time constant expressions are the same in BLISS-16C as in BLISS-32
except that the forms
e1 rela e2 and e1 - e2
where e1 and e2 are link-time constant expressions and rela is one of the
relational operators for addresses (EQLA, NEQA, and so on) are not
supported.
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page A-9
DECLARATIONS
A.4 DECLARATIONS
A.4.1 Attributes
A.4.1.1 The Allocation-Unit -
LONG is supported in BLISS-32, but not BLISS-16C.
A.4.1.2 The Extension-Attribute -
A.4.1.3 The Structure-Attribute -
The allocation-actual parameter LONG is supported in BLISS-32, but not
BLISS-16C.
A.4.1.4 The Field-Attribute -
A.4.1.5 The Alignment-Attribute -
Supported in BLISS-32, but not BLISS-16C.
A.4.1.6 The Initial-Attribute -
A.4.1.7 The Volatile-Attribute -
A.4.1.8 The Novalue-Attribute -
A.4.1.9 The Linkage-Attribute -
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page A-10
DECLARATIONS
A.4.1.10 The Range-Attribute -
A.4.1.11 The Addressing-Mode-Attribute -
Supported in BLISS-32, but not BLISS-16C.
A.4.1.12 The Weak-Attribute -
Supported in BLISS-32, but not BLISS-16C.
A.4.2 Data Declarations
NOTE: As detailed in section A.4.1, the following attributes are supported
in BLISS-32, but not BLISS-16C:
alignment-attribute
addressing-mode-attribute
weak-attribute
This information is not repeated in the following data-declaration
differences.
Forward-, global-register- and external-register-declarations are supported
in BLISS-32, but not BLISS-16C.
A.4.2.1 Own-Declarations -
A.4.2.2 Global-Declarations -
A.4.2.3 Forward-Declarations -
Supported in BLISS-32, but not BLISS-16C.
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page A-11
DECLARATIONS
A.4.2.4 External-Declarations -
A.4.2.5 Local-Declarations -
A.4.2.6 Stacklocal-Declarations -
A.4.2.7 Register-Declarations -
In BLISS-16C, an explicit register-number must be in the range 0 to 5; in
BLISS-32, the range is 0 to 11.
A.4.2.8 Global-Register-Declarations -
Supported in BLISS-32, but not in BLISS-16C.
A.4.2.9 External-Register-Declarations -
Supported in BLISS-32, but not BLISS-16C.
A.4.2.10 Map-Declarations -
A.4.3 Structure-Declarations
A.4.4 Field-Declarations
A.4.5 Routine-Declarations
NOTE: As detailed in section A.4.1, the following attributes are supported
in BLISS-32, but not BLISS-16C:
addressing-mode-attribute
weak-attribute
This information is not repeated in the following routine-declaration
differences.
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page A-12
DECLARATIONS
A.4.5.1 Ordinary-Routine-Declarations -
A.4.5.2 Global-Routine-Declarations -
A.4.5.3 Forward-Routine-Declarations -
A.4.5.4 External-Routine-Declarations -
A.4.6 Linkage-Declarations
Linkage-declarations in BLISS-16C and BLISS-32 provide similar kinds of
calling sequence options; however, their respective details are strongly
machine dependent. At a summary level, the following pairs of
linkage-options are comparable:
BLISS-16C BLISS-32
linkage-types CALL CALL
JSR JSB
parameter-locations STANDARD STANDARD
REGISTER REGISTER
The remaining linkage-options are unique to their respective languages.
The following linkage keywords are supported in BLISS-16C, but not
BLISS-32:
CLEARSTACK
EMT
INTERRUPT
IOT
RTT
TRAP
The following linkage keywords are supported in BLISS-32, but not
BLISS-16C:
GLOBAL
NOPRESERVE
PRESERVE
NOTUSED
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page A-13
DECLARATIONS
Global register data segments are supported in BLISS-32, but not BLISS-16C.
A.4.7 Bound-Declarations
NOTE: As detailed in section A.4.1, the weak-attribute is supported in
BLISS-32, but not in BLISS-16C. This information is not repeated in the
following bound-declaration differences.
A.4.7.1 Literal-Declarations -
A.4.7.2 External-Literal-Declarations -
A.4.7.3 Bind-Data-Declarations -
A.4.7.4 Bind-Routine-Declarations -
A.4.8 Compile-time-Declarations
A.4.9 Macro-Declarations
A.4.9.1 Keyword-Macro-Declarations -
A.4.9.2 Positional-Macro-Declarations -
A.4.10 Require-Declarations
A.4.11 Library-Declaration
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page A-14
DECLARATIONS
A.4.12 Builtin-Declarations
The set of names that may be declared in a builtin-declaration is specific
to each target architecture.
A.4.13 Psect-Declarations
The following psect-attributes are supported in BLISS-32, but not
BLISS-16C:
SHARE | NOSHARE
PIC | NOPIC
ALIGN
ADDRESSING_MODE
The psect-attribute defaults for BLISS-16C are different from BLISS-32 in
some cases as follows:
Class BLISS-16C BLISS-32
CODE WRITE NOWRITE
PLIT WRITE NOWRITE
A.4.14 Switches-Declarations
The following switch-items are supported in BLISS-32, but not BLISS-16C:
ADDRESSING_MODE
The following switch-items are supported in BLISS-32, but accepted and
ignored by BLISS-16C:
OPTIMIZE, NOOPTIMIZE
SAFE, NOSAFE
ZIP, NOZIP
NOTE: BLISS-16C interprets the OPTIMIZE, SAFE, and ZIP switches in the
module-head as specified in A.1.1, but ignores these options in a SWITCHES
declaration.
The following list-options are supported in BLISS-32, but accepted and
ignored by BLISS-16C:
ASSEMBLY, NOASSEMBLY
BINARY, NOBINARY
COMMENTARY, NOCOMMENTARY
SYMBOLIC, NOSYMBOLIC
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page A-15
DECLARATIONS
NOTE: BLISS-16C interprets the COMMENTARY and SYMBOLIC options in the
module-head as specified in Section A.1.1, but ignores these options in a
SWITCHES declaration.
A.4.15 Label-Declarations
A.4.16 Undeclare-Declarations
A.4.17 Enable-Declarations
See the discussion of Condition Handling in Section 5.
A.5 LEXICAL PROCESSING
A.5.1 Lexemes
A.5.2 Spaces
A.5.3 Separation Rules
A.5.4 Compilation-Choices
A.5.5 Lexical-Functions
A.5.6 Macro-Calls
A.5.6.1 Keyword-Macro-Calls -
A.5.6.2 Positional-Macro-Calls -
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page A-16
PREDECLARED NAMES
A.6 PREDECLARED NAMES
A.6.1 Literals
The following literals are implicitly declared in every module:
BLISS-32 BLISS-16C
%BPVAL = 32 16
%BPADDR = 32 16
%BPUNIT = 8 8
%UPVAL = 4 2
A.6.2 Macros
The following macros are implicitly declared in every module:
BLISS-32 BLISS-16C
%BLISS16[] = % %REMAINING %
%BLISS32[] = %REMAINING % %
%BLISS36[] = % %
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page A-17
PREDECLARED NAMES
A.6.3 Structures
A.6.3.1 Vectors -
BLISS-32 supports vectors of bytes, words, and longwords.
BLISS-16C supports vectors of bytes and words, but not longwords.
The respective vector definitions are:
BLISS-16C
STRUCTURE
VECTOR[I;N,UNIT=2,EXT=0]=
[N*UNIT]
(VECTOR+I*UNIT)<0,8*UNIT,EXT>;
BLISS-32
STRUCTURE
VECTOR[I;N,UNIT=4,EXT=0]=
[N*UNIT]
(VECTOR+I*UNIT)<0,8*UNIT,EXT>;
Using the default UNIT and EXT allocation parameters gives a BLISS-32
vector of (32-bit) longwords which is analogous to the BLISS-16C vector of
(16-bit) words.
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page A-18
PREDECLARED NAMES
A.6.3.2 Blocks -
BLISS-16C and BLISS-32 block structures are the same except that BLISS-32
allows block allocation to be in units of longwords in addition to bytes
and words.
The respective block definitions are:
BLISS-16C
STRUCTURE
BLOCK[O,P,S,E;BS,UNIT=2]=
[BS*UNIT]
(BLOCK+O*UNIT)<P,S,E>;
BLISS-32
STRUCTURE
BLOCK[O,P,S,E;BS,UNIT=4]=
[BS*UNIT]
(BLOCK+O*UNIT)<P,S,E>;
Using the default UNIT allocation parameter gives a BLISS-32 block
expressed in longword units which is analogous to the BLISS-16C block of
words.
A.6.3.3 Blockvectors -
The respective blockvector definitions are:
BLISS-16C
STRUCTURE
BLOCKVECTOR[I,O,P,S,E;N,BS,UNIT=2]=
[N*BS*UNIT]
(BLOCKVECTOR+(O+I*BS)*UNIT)<P,S,E>;
BLISS-32
STRUCTURE
BLOCKVECTOR[I,O,P,S,E;N,BS,UNIT=4]=
[N*BS*UNIT]
(BLOCKVECTOR+(O+I*BS)*UNIT)<P,S,E>;
Using the default UNIT allocation parameter gives a BLISS-32 blockvector
expressed in longword units which is analogous to the BLISS-16C blockvector
of words.
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page A-19
PREDECLARED NAMES
A.6.3.4 Bitvectors -
BLISS-16C and BLISS-32 bitvectors are both densely packed in memory.
The respective bitvector definitions are:
BLISS-16C
STRUCTURE
BITVECTOR[I;N]=
[(N+7)/8]
(BITVECTOR+I/8)<I MOD 8,1,0>;
BLISS-32
STRUCTURE
BITVECTOR[I;N]=
[(N+7)/8]
(BITVECTOR)<I,1,0>;
A.6.4 Linkages And Linkage-Functions
The following linkage-functions are implicitly declared in a routine which
has the FORTRAN linkage-attribute in BLISS-32, but not BLISS-16C:
ACTUALCOUNT
ACTUALPARAMETER
NULLPARAMETER
The following linkage-functions may be declared in a BUILTIN declaration in
a routine with the BLISS linkage in BLISS-32, but not BLISS-16C:
ACTUALCOUNT
ACTUALPARAMETER
A.6.5 Character-Functions
The character functions of BLISS-16C and BLISS-32 provide a common and
compatible means to perform character handling operations. With reasonable
care, this can be done transportably.
In both BLISS-16C and BLISS-32 a CS-pointer is implemented as a value
consisting of the address of the first byte of the character sequence.
Characters are stored one per byte in increasing byte address order.
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page A-20
PREDECLARED NAMES
In BLISS-32, the character functions are all implemented as inline code
sequences and take advantage of the VAX string instructions.
In BLISS-16C, some of the functions are implemented "inline" while others
implicitly call service routines in the run time library.
In both BLISS-32 and BLISS-16C, when doing single character fetches and
assignments with CS-pointer advance, the post-advance functions
CH$RCHAR_A
CH$WCHAR_A
are generally more efficient than, and preferred to, the pre-advance
functions
CH$A_RCHAR
CH$A_WCHAR
A.7 BUILTIN NAMES
Both BLISS-16C and BLISS-32 have functions that are specific to their
respective target hardware achitectures. These are detailed in their
respective specifications.
A.8 NAMES RESERVED FOR SPECIAL PURPOSES
See Section A.2.1.4.
APPENDIX B
BLISS-16C AND BLISS-32 OPERATIONAL DIFFERENCES
BLISS-16C and BLISS-32 accept standard DECsystem-10 commands. Both
optionally produce relocatable object modules and listing files, and
otherwise operate as standard language processors. In normal usage, the
BLISS-11 compilation and MACY11 assembly phases of BLISS-16C are
transparent. Differences between BLISS-16C and BLISS-32 occur in the
following areas:
o default file specifications
o command switches corresponding to module switches
o command switches specific to the BLISS-16C implementation.
These are discussed in the following sections.
B.1 DEFAULT FILE SPECIFICATIONS
The default file extensions are as follows:
File Purpose BLISS-16C BLISS-32
SOURCE .B16, .B32,
then .BLI, then .BLI,
then null then null
INTERMEDIATE .I16 N/A
ASSEMBLY .P11 N/A
OBJECT .OBJ .OBJ
LISTING .P11 or .LST .LST
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page B-2
DEFAULT FILE SPECIFICATIONS
The default device for all files is DSK:.
BLISS-16C writes the intermediate BLISS-11 text to a temporary file whose
name is the same as the first source file name and whose file extension is
.I16. This file is normally deleted following the BLISS-11 compilation
phase. BLISS-11 writes the intermediate MACRO-11 test to a temporary file
whose name is the same as the previous intermediate file and whose file
type is always .P11. This file is also normally deleted following the
MACY11 assembly phase.
B.2 COMMAND SWITCHES CORRESPONDING TO MODULE-SWITCHES
The following command switches are supported in BLISS-16C with meanings
that are analogous, but slightly different than in BLISS-32:
CODE, NOCODE
DEBUG, NODEBUG
See Section A.1.1 for description of the differences.
The following list-options of the LIST switch are supported in BLISS-32,
but are accepted and ignored in BLISS-16C:
ASSEMBLY, NOASSEMBLY
BINARY, NOBINARY
The following list-options of the LIST switch are supported in BLISS-16C
with interpretations that are slightly different than in BLISS-32:
COMMENTARY, NOCOMMENTARY
SYMBOLIC, NOSYMBOLIC
See Section A.1.1 for additional discussion of these list-options.
B.3 COMMAND SWITCHES SPECIFIC TO BLISS-16C
The switches described in this section are supported by BLISS-16C, but are
not permitted by BLISS-32.
The switches have the following interpretation and defaults:
RBLISS11 Perform the BLISS-11 compilation phase.
NORBLISS11 suppresses the BLISS-11
compilation phase. The default is:
RBLISS11
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page B-3
COMMAND SWITCHES SPECIFIC TO BLISS-16C
IDELETE Delete the intermediate BLISS-11 source file
after the BLISS-11 compilation phase and the
intermediate MACRO-11 file after the MACY11
assembly phase if a fatal compilation error
does not occur. NOIDELETE retains the
intermediate files. The default is:
IDELETE
NOTE: the intermediate BLISS-11 file is not
deleted if NORBLISS11 or NOCODE is given,
since the deletion is performed by the
BLISS-11 phase. It is not possible for the
compiler to selectively delete only the .I16
or .P11 file.
COMPRESS Compress the intermediate text to occupy
minimum file space, where possible.
NOCOMPRESS produces a more readable
intermediate file by incorporating additional
text formatting characters. The default is:
NOCOMPRESS
BLISS11:"switch(es)" The given switch(es) are appended to the
BLISS-11 command created by the translation
phase. These may be used to invoke BLISS-11
options in combination with BLISS-16C.
INTER:file-spec The given file-specification is used as the
name of the intermediate BLISS-11 source
file. The defaults are:
device DSK:
file-name Same as the first source
file name
file-ext .I16
MACY11:"switch(es)" The given switch(es) are used to form the
MACY11 command line used to assemble the
intermediate .P11 file. These may be used to
invoke MACY11 options in combination with
BLISS-16C. The switches may be separated by
comma and/or equals to show which switches
are associated with which MACY11 command line
files. If no comma or equals is present,
then all of the switches are appended to the
source file specification. For example,
",/SP/NL=/EN:PNC", will associate /SP and /NL
with the listing file and /EN:PNC with the
source file.
B-16C/B-32--Digital Equipment Corporation, COMPANY CONFIDENTIAL Page B-4
COMMAND SWITCHES SPECIFIC TO BLISS-16C
[end of 16LDIF.RNO]