VAX LISP Implementation and Extensions to Common LISP

*HyperReader

  CONTENTS

  Title Page

  Copyright Page

  Preface

  1      VAX LISP Implementation Notes

  1.1     Data Representation
    1.1.1      Numbers
      1.1.1.1      Integers
      1.1.1.2      Floating-Point Numbers
      1.1.1.3      Complex Numbers
    1.1.2      Characters
    1.1.3      Arrays
    1.1.4      Strings
    1.1.5      Functions

  1.2     Garbage Collector
    1.2.1      Memory Management
    1.2.2      Types of Garbage Collection
    1.2.3      Tuning Garbage Collection Performance
    1.2.4      Increasing Available Space
    1.2.5      Garbage Collection Failure
    1.2.6      Controlling Messages
    1.2.7      Effect on Static Space
    1.2.8      Effect on VMS Interrupt Functions

  1.3     Input and Output
    1.3.1      Newline Character
    1.3.2      Terminal Input
    1.3.3      Terminal Output on ULTRIX Systems
    1.3.4      End-of-File Operations
    1.3.5      Record Length on VMS Systems
    1.3.6      File Organization
    1.3.7      I/O Functions
      1.3.7.1      OPEN Function
      1.3.7.2      WRITE-CHAR Function
      1.3.7.3      FILE-LENGTH Function on VMS Systems
      1.3.7.4      FILE-POSITION Function on VMS Systems

  1.4     VAX LISP/VMS Interrupt and Keyboard Functions

  1.5     VAX LISP/ULTRIX Keyboard Functions

  1.6     Functions and Macros

  2      VAX LISP Extensions to I/O

  2.1     Defining New Types of Streams
    2.1.1      Overview of VAX LISP I/O
    2.1.2      Defining Stream Structures
    2.1.3      Stream Dispatch Functions

  2.2     Getting Information About Streams

  2.3     Additional I/O Functions

  3      Window Streams

  3.1     Creating and Changing Window Streams
    3.1.1      Validity for Input Operations
    3.1.2      Viewing Area
      3.1.2.1      Viewing Area Coordinate Systems
      3.1.2.2      Obtaining Viewing Area Dimensions
      3.1.2.3      Changing Viewing Area Dimensions
      3.1.2.4      Erasing Viewing Area Contents
      3.1.2.5      Scrolling Viewing Area Contents
    3.1.3      Vertical and Horizontal Overflow
    3.1.4      Font
    3.1.5      Cursor Position
    3.1.6      Input History Limit
    3.1.7      Window Exposure and Keyboard Connection

  3.2     Input from a Window Stream
    3.2.1      Input Editing
      3.2.1.1      Editing Without WITH-INPUT-EDITING
      3.2.1.2      Using the WITH-INPUT-EDITING Macro
      3.2.1.3      Using Options to WITH-INPUT-EDITING
      3.2.1.4      Window Stream Editing Commands and Key Bindings
    3.2.2      Recalling Input

  3.3     Output to a Window Stream

  3.4     Window System Dependencies
    3.4.1      VMS Workstation Software
      3.4.1.1      Native Coordinate System
      3.4.1.2      Fonts and Font Specification
      3.4.1.3      Multiple Stream Restriction
      3.4.1.4      Virtual Keyboard Use
      3.4.1.5      Using Attribute Blocks
      3.4.1.6      Resizing Windows
    3.4.2      DECwindows
      3.4.2.1      Native Coordinate System
      3.4.2.2      Fonts and Font Specification
      3.4.2.3      Multiple Stream Restriction
      3.4.2.4      Using Graphics Contexts
      3.4.2.5      Resizing Windows
      3.4.2.6      Repainting Windows

  3.5     Window Stream Functions and Macros

  ERASE-VIEWING-AREA Function

  MAKE-WINDOW-STREAM Function

  SCROLL-VIEWING-AREA Function

  SCROLL-VIEWING-AREA-CELL Function

  VIEWING-AREA-HEIGHT Function

  VIEWING-AREA-HEIGHT-CELL Function

  VIEWING-AREA-WIDTH Function

  VIEWING-AREA-WIDTH-CELL Function

  WINDOW-STREAM Type Specifier

  WINDOW-STREAM-ATTRIBUTE-BLOCK Function

  WINDOW-STREAM-FONT Function

  WINDOW-STREAM-GCONTEXT Function

  WINDOW-STREAM-HORIZONTAL-OVERFLOW Function

  WINDOW-STREAM-INPUT-HISTORY-LIMIT Function

  WINDOW-STREAM-KB Function

  WINDOW-STREAM-P Function

  WINDOW-STREAM-SHOW-ON Function

  WINDOW-STREAM-VERTICAL-OVERFLOW Function

  WINDOW-STREAM-VIEWING-AREA Function

  WINDOW-STREAM-WINDOW Function

  WINDOW-STREAM-X-POSITION Function

  WINDOW-STREAM-X-POSITION-CELL Function

  WINDOW-STREAM-Y-POSITION Function

  WINDOW-STREAM-Y-POSITION-CELL Function

  WITH-INPUT-EDITING Macro

  WITH-WINDOW-STREAM Macro

  4      Pretty-Printing and Using Extensions to FORMAT

  4.1     Pretty-Printing with Defaults

  4.2     Pretty-Printing with Control Variables
    4.2.1      Explicitly Enabling Pretty-Printing
    4.2.2      Limiting Output by Lines
    4.2.3      Controlling Margins
    4.2.4      Conserving Space with Miser Mode

  4.3     Extensions to the FORMAT Function
    4.3.1      Using the Write FORMAT Directive
    4.3.2      Controlling the Arrangement of Output
    4.3.3      Controlling Where New Lines Begin
    4.3.4      Controlling Indentation
    4.3.5      Producing Prefixes and Suffixes
    4.3.6      Using Tabs
    4.3.7      Directives for Handling Lists

  4.4     Defining Your Own Format Directives

  4.5     Defining Print Functions for Lists

  4.6     Defining Generalized Print Functions

  4.7     Abbreviating Printed Output
    4.7.1      Abbreviating Output Length
    4.7.2      Abbreviating Output Depth
    4.7.3      Abbreviating Output by Lines

  4.8     Using Miser Mode

  4.9     Handling Improperly Formed Argument Lists

  5      Error Handling

  5.1     Error Handler

  5.2     VAX LISP Error Types
    5.2.1      Fatal Errors
    5.2.2      Continuable Errors
    5.2.3      Warnings

  5.3     Creating an Error Handler
    5.3.1      Defining an Error Handler
      5.3.1.1      Function Name
      5.3.1.2      Error-Signaling Function
      5.3.1.3      Arguments
    5.3.2      Binding the * UNIVERSAL-ERROR-HANDLER * Variable

  EXAMPLES

  3-1        Using the WITH-INPUT-EDITING Macro

  FIGURES

  3-1        Text Misalignment As a Result of Changing Fonts

  4-1        Variables Governing Miser Mode

  TABLES

  1-1        VAX LISP Floating-Point Numbers

  1-2        Floating-Point Constants

  1-3        Summary of Implementation-Dependent Functions and Macros

  2-1        I/O Request Specifiers

  2-2        Stream Data Types and Predicates

  2-3        Stream Informational Functions

  3-1        Window Stream Editing Commands and Key Bindings

  3-2        Keyword Options to WITH-INPUT-EDITING

  4-1        FORMAT Directives Provided by VAX LISP

  5-1        Error-Signaling Functions