This document is a preliminary manual from August 1961 for DECAL (Digital Equipment Corporation Compiler, Assembler, and Linking Loader), designed for the PDP-1 computer. It outlines DECAL's functionalities, its current Phase I capabilities, and planned future enhancements.
Key Functions of DECAL:
- Assembly Program Facilities: DECAL serves as a complete assembler.
- Algebraic Compiler: A significant feature that allows programmers to write mathematical expressions (e.g.,
a = b + c) directly in a program. DECAL translates these into sequences of assembly language instructions, offering brevity and convenience.
- Linking Loader: Provides crucial capabilities for managing programs:
- Relocation of Binary Programs: Determines the starting memory address of a program at read-in time.
- Symbolic Cross-Reference: Allows programs to call on other programs (including library routines) that may be compiled separately, resolving these symbolic references during load-time.
DECAL Phase I (Current Capabilities):
- Input Processing: Reads symbolic tapes, interpreting statements delimited by carriage returns and symbols delimited by spaces or tabs.
- Character and Symbol Classification: Categorizes 8-bit characters into classes (0-6) that determine their roles (e.g., delimiters, single-character symbols, variables, operators). Symbols themselves are assigned types (e.g., Action Operator, Instruction Generator, Constant, Program Symbol, System Symbol) based on definition or context.
- Statement Types: Supports "Simple Statements" (Algebraic, Instruction Word, Data Word) and "Compound Statements" (using
beg and end).
- Algebraic Statements: Utilize "Instruction Generator" (ig) symbols for operators and various symbol types for operands, adhering to defined precedence levels.
- Instruction Word Statements: Generate single machine instructions, supporting relocatable code.
- Data Word Statements: Define data in octal, binary-coded alphanumeric, or decimal (fixed or floating-point) formats.
- Action Operators (
ao): Special symbols that define compiler subroutines (dao) or instruction generators (dig) for custom operations, and manage program blocks, symbol tables, and program structure (blk, fix, dss, lve, etc.).
Future Features (Planned Phases II-V):
- Phase II: Integration of internal DECAL symbols and general-use subroutines.
- Phase III: Implementation of multi-dimensional and arithmetic subscripts, indexing, and full floating-point arithmetic.
- Phase IV: Introduction of four different types of Linking Loaders (Low, High, Compact Low, Compact High).
- Phase V: Support for ALGOL language algorithms, comprehensive address arithmetic, generalized subscripting/indexing, and automatic constant assignment.
Operating Instructions & Linking Loader Details:
The manual provides instructions for compiling programs with DECAL and loading them using the Linking Loader. It describes the specific tape format for LL tapes (which are read backward by the loader), including various codes that signify different types of information (e.g., checksums, temporary storage requirements, program size, relocation instructions, and system symbol definitions). The Linking Loader handles program relocation, symbol resolution, and error detection during the loading process.