BLISS Primer Volume 2

Order Number: EY-AY008-SP

This document, titled "BLISS Primer Volume 2: Intermediate," by Digital Equipment Corporation (DEC), published in 1978 and 1979, serves as an intermediate-level guide for programmers using the BLISS-16c, BLISS-32, and BLISS-36 compilers. It delves into advanced aspects of the BLISS programming language, focusing on its conceptual framework, practical applications, and development tools.

The primer is structured into several modules, each covering a distinct area:

  1. Language Abstract: Presents BLISS as an "expression language" where every expression has a value whose meaning is context-dependent. It contrasts BLISS's expression-oriented control constructs (like IF, WHILE, INCR) with statement-based languages and explains how values are determined and utilized.
  2. Lexical Functions: Introduces functions (%CHAR, %CHARCOUNT, %NAME, %NUMBER, %STRING, %QUOTE, %UNQUOTE) that operate on the input stream before compilation, primarily used with conditional macros for string processing and dynamic name construction.
  3. Character Handling Functions: Details built-in functions for allocating storage, building and manipulating character sequence pointers (CH$PTR, CH$PLUS, CH$DIFF), reading and writing characters (CH$RCHAR, CH$WCHAR), moving and initializing strings (CH$MOVE, CH$COPY, CH$FILL), comparing sequences, and performing character translation.
  4. Data Structures: Explains the STRUCTURE declaration for defining arbitrary data structures and their accessing algorithms. It also covers the MAP declaration for associating new access methods with existing storage and the REF attribute for simplifying indirect references, with examples including VECTOR and BITVECTOR types, field selectors, bounds checking, and linked lists.
  5. Table Building: Focuses on initializing data structures and tables using the INITIAL attribute (for modifiable storage) and the PLIT declaration (for non-modifiable storage), often in conjunction with macros for complex initialization patterns.
  6. Conditional Compilation: Describes how to control source code inclusion at compile time using %IF, %THEN, %ELSE, %FI directives, based on compile-time expressions and lexical test functions (%NULL, %DECLARED, %SWITCHES, %IDENTICAL, %BLISS). It also covers advisory functions for diagnostics (%ERROR, %WARN, %INFORM, %PRINT) and macro control functions.
  7. Optimization: Provides techniques for writing BLISS code that can be more highly optimized by the compiler, focusing on reducing program size and improving execution time. Topics include using NOVALUE routines, the RETURN keyword, minimizing temporaries, grouping sequential operations, and leveraging CASE expressions and cross-jumping.
  8. Debugging Techniques: Illustrates methods for adding conditional debugging code to modules, including a trace facility for monitoring routine entry/exit, formatted variable display for readable data dumps, and error/bounds checking, all controlled by compile-time switches.
  9. Utilities: Summarizes various tools available for BLISS programmers, such as PRETTY (code reformatting), BLSCRF (cross-referencing), CONDEN (cross-reference consolidation), CVT10/CVT11 (BLISS version conversion), and MODULE.BLI (a standard program template).
  10. Appendices (BLISS-32, BLISS-36, BLISS-16): Provides practical step-by-step instructions for getting started, editing, compiling, linking, and running BLISS programs on specific DEC operating systems, namely VAX/VMS (for BLISS-32) and DECSYSTEM-10/20 (for BLISS-36 and BLISS-16), including detailed explanations of compiler and linker command qualifiers.

The document emphasizes that while BLISS offers powerful features for low-level system programming, careful coding practices are necessary to ensure readability, maintainability, and effective optimization by the compiler.

EY-AY008-SP-1
1978
258 pages
Original
8.1MB

Site structure and layout ©2025 Majenko Technologies