DECUS PDP-1 Program Library Catalog
June, 1968

DECUS NO.
---------

1       Character-Display
2       Type, Punch and Display Decimal
3       Display Line
4       MAC - A Master Subroutine Control System
5       MACRO
6       DDT
7A      Modified Expensive Typewriter
8       Multiply Subroutine
9       Divide
10      Single Precision Floating Point Routines
11      Tone Generation Routine
12      Bit Manipulation Package
13      Critical Path Analysis
14      Decimal Input-Output Package
15A     FLINT-36 A3D
16      Check Parity
17      Get Number of Permutations
18      Random Walk Number
19      Floating Reciprocal
20      Millisecond Clock
21      Clear Block
22      Second Delay
23      Millisecond Delay
24      Move A Program
25      Get Number of Combinations
26      Floating Nth Integer Power
27      Obsolete - Replaced by DECUS No. 39
28      SCOPETRACE
29      TED: A Tape Editor
30      DX-1 Library Tapemaker
31      Expensive Desk Calculator
32      Gaussian Random Number Generator
33      Scatter-Gather Mag Tape Routine
34      Fast Bivariate Generator
35      RATBIN (read and type a binary paper tape)
36      CHKSYM (check a symbolic tape)
37      dbn (decimal to binary mixed number),
        dbi (decimal to binary integer) and
        dbf (decimal to binary fraction)
38      bdn (binary to decimal mixed number),
        bdi (binary to decimal integer) and
        bdf (binary to decimal fraction)
39      DECAL-BBN
40      Linking Loader for DECAL-BBN
41      Libtapemaker for DECAL-BBN
42      PDP-1 Two Memory Checkerboard Program
43      Compare Program
44      Tape Duplicating and Verifying Program
45      Start-Stop Reader Test
46      Obsolete - Replaced by DECUS No. 39
47      Modifications to 18-18 Floating Point Arithmetic Package
        (To be distributed with DECUS No. 10)
48      No longer available
49      Double Precision Fixed Point Routines
50      Banner
51      DSL Matrix Routines
52      Matrix Operations Program of the Experimental Dynamic
        Processor
53      No longer available
54      No longer available
55      Tape Editor
56      The KALAH Game Program
57      Input-Output Routines
58      Unary Manipulation Routines
59      TITLE
60      SFLAG, RFLAG
61      TLU - Table Look-up
62      DSL Block Manipulation Routines
63      Floating Point Interpreter (For use with DECUS No. 10)
64      Random Number Generators: Random, Ranmodn, Coin
65      Digital Function Generate and Display
66      Short, Read Magnetic Tape Routines
67      "SIN-COS": Floating-Point Sine-Cosine Routines
68      "SQRT": Floating-Point Square Root Routine
69      SATED: Scope Aided Tape Editor (ESD)
70      OLD DECUS LIBRARY I
            ADA-1 Analyzer
            ADA-2 Frapcorrector
            ADA-3 PRIM: Punch Read-In-Mode Tape
            ADA-5 AID: Adams Associates Intercom & Debug Program
71      OLD DECUS LIBRARY II
            BBN- 1 FRAP
            BBN- 2 Typewriter Control (TYC)
            BBN- 6 Colossal Typewriter Program (CT)
            BBN-12 Decimal to Binary Conversion
            BBN-13 Binary to Decimal Conversion
            BBN-21 TRANCE
            BBN-25 Rotate Test
            BBN-27 Master Duplicator
            BBN-32 Tem-Stor Push Down
            BBN-33 Pen Tracker Routines
            BBN-45 Grid Plotting Program (Plotgrid)
            BBN-54 Compare
            BBN-67 Debug (DB)
72      OLD DECUS LIBRARY III
            BBN- 3 Binary Punch and Load Package
            BBN-46 Binary Punchoff
73      MADCAP: MAmmoth DeCimal Arithmetic Program for the
                PDP-1 Computer
74      Tapelibrary Program
75      SEETAPE - A Magnetic Tape Dump Program
76      A 28-Bit Floating Point Package for the PDP-1
77      DSL Sort Routines - Sort 2, Sort 3
78      TAPE 52 Magnetic Tape Control Subroutines
79      Extended Memory Punch and Loader Routines
        (EXPCH1 and EXPCH0)
80      DEXTER: A Magnetic Tape Executive Routine
81      Calcomp Plotter Software
82.3    FORTRAN for the PDP-1 (Version 3)
83      340 Assembly Language and 340 DDT
84      M.I.T. Floating Point Arithmetic Package
85      LISP for the PDP-1
86      Precision Hypotenuse/Square Root Subroutine
87      Buffered DECtape Read and Write Routines
88      Typewriter Time Test
89      Cube Display
89a     Matchbox Display
90      Color Debugger
91      DECtape Duplicate/Verify
92      EMP: Extended Math Package


PROGRAM ABSTRACTS
-----------------
DECUS No. 1
-----------

Character Display

Ben Gurley and Weldon Clark

This subroutine effects the display of alphabetic, numeric,
and special characters on the scope. The program is devised
to make the scope react like a typewriter. Storage used:
466(8) registers. (FRAP Subroutine)

DECUS No. 2
-----------

Type, Punch and Display Decimal

Mimi Wasser

This subroutine is used to convert octal numbers to decimal
and to type, punch, and display the results. Occupies 131(8)
registers. However, when one calls display-decimal, the 
character display subroutine is required using 465(8) registers.
(FRAP Subroutine)

DECUS No. 3
-----------

Display Line

William Fletcher, Bolt, Beranek & Newman, Incorporated

The purpose of this routine is to display a line of dots on the
CRT between two specified points X0, Y0 and X1 Y1.
Storage-used: 165(8). (FRAP Subroutine)

DECUS No. 4
-----------

MAC-A Master Subroutine Control System

Richard Bennett

The program is a subroutine control system for the PDP-1.
MAC simplifies writing of subroutines, reduces the number
of registers required to write closed subroutines, and allows
subroutines using this system to call themselves or other
subroutines. MAC requires 174(8) registers, and 24(8) registers
of storage. In addition, storage is required for subroutine
returns and subroutines used repeatedly.

DECUS No. 5
-----------

MACRO

Digital Equipment Corporation, Maynard, Massachusetts

MACRO is an assembly program for the PDP-1. MACRO
uses two passes to assemble a source program, and allows the
use of the user's own definition as well as its own. It auto-
matically stores constants and variables in adequate blocks
of storage, allows the use of address tags and prints out errors
in the source program during assembly.

DECUS No. 6
-----------

DDT

Alan Kotok, Digital Equipment Corporation, Maynard,
Massachusetts

DDT is a symbolic debugging program for the PDP-1. It
occupies upper memory, starting at 600, and builds down
into lower memory. Control is by the typwriter. DDT, by
means of its "breakpoint" allows the user to program via the
typewriter, edit, and examine any program location. In-
structions can also be inserted by DDT. (MACRO)

DECUS No. 7A
------------

Modified Expensive Typewriter

Steve Piner and Peter Samson (Modified by S.B.Michaels
and J.L.Ramsey)

Facilitates the editing of symbolic tapes both off-line and
on-line.

DECUS No. 8
-----------

Multiply Subroutine

Alan Tritter

This subroutine is used on machines which have no high-
speed multiply option. It will form the signed product of
two signed 17-bit numbers. It requires 70(8) registers. The
subroutine returns to main program when completed. (DECAL)

DECUS No. 9
-----------

Divide

Alan Tritter

A subroutine for PDP-1's lacking automatic multiply &
divide. It may be called for a fractional divider of a signed
34-bit number by a signed 17-bit number or for an integer
divide (i-dvd) of a signed 17-bit number by a 17-bit number.
In either case a signed quotient returns in the AC and a re-
mainder with the same as the dividend returns in the I/O.
Occupies 75(8) registers. (DECAL)

DECUS No. 10
------------

Single-DEC-Single Precision Floating Point Routine

R. J. McQuillin (Roland Silver)

These routines allow the use of the floating point mode, and
include input, output, interpreter, arithmetic, exponential,
square root, sine-cosine, natural log and arc tangent.
Modified by DECUS No. 47. (DECAL)

DECUS No. 11
------------

Tone Generation Routine

William Fletcher, Bolt, Beranek & Newman, Incorporated

This routine, which is controlled by the typewriter, can
produce tones for which amplitude, frequency, and length
can be controlled. Frequencies from 168 down to and in-
cluding 100 are possible.

DECUS No. 12
------------

Bit Manipulation Package

C. Fletcher

The program provides a convenient means for processing
variable length contiguous groups of bits (referred to as
items) without regard to word boundaries. Items of 1 to 16
bits can either by read from meory or stored in memory at
an address relative to a pointer. Items from one to n bits
may be moved forward or backward any amount and com-
pared using routines in the package. The read and store routine
is a general packing and unpacking program, and is intended
to provide a standard, simple means of expressing and using
an item's bit address and length to obtain the item.

The pointer referred to is a word containing the addres of
some particular bit in memory, that is, holds both a word
address and the addres of a bit in that word. Storage used:
1-466(8).

DECUS No. 13
------------

Critical Path Analysis

T. Shapin

Critical Path Analysis is a method of coordinating the efforts
of many diverse activities toward a common goal. This pro-
gram will handle 400 activities and 266 events (nodes).
Careful preparation is needed to insure accurate output.
The first input should be as "educated" estimates as possible.
The order of events must be carefully organized by flow
charts described in the "write-up". Upon completion, the
program types out (after error print-outs have been corrected)
a solution to the problem. Storage Used: 5113(8) (DECAL)

DECUS No. 14
------------

Decimal Input-Output Package

William Fletcher, Bolt, Beranek & Newman, Incorportated

This package is a set of subroutines to allow decimal-to-
binary and binary-to-decimal conversion of integers, frac-
tions, and mixed numbers. The output format can be precisely
controlled by a subroutine included in the package.
The routines use the typewriter as input and output, and 
subroutines are provided to allow use of paper tape reader
and punch, or CRT for this purpose also. In addition, the
package can be set up to use any arbitrary input and output.

DECUS No. 15A
-------------

FLINT-36 A3D

J. M. Baker and D. J. Isenberg, Charles W. Adams
Associates, Incorporated

FLINT is an interpretive routine that permits the PDP-1 to
perform double-precision floating-point arithmetic, input,
output, and elementary function evaluation. Originally
written in FRAP for use in lens design work (though nonethe-
less a general-purpose program), FLINT has now been
translated into DECAL to be compatible with other programs
in this language. Arithmetic and function evaluation are
performed interpretively, input and output are handled by
closed subroutines addressed directly by the user's programs,
and overall format control is left to the user's routines. FRAP
symbolic tape is also available.

DECUS No. 16
------------

Check Parity

R. S. Nickerson

The purpose of this routine is to check and/or add parity.
Storage used: 33(8) (DECAL)

DECUS No. 17
------------

Get Number of Permutaions

R. S. Nickerson

This program is used to compute n(n-1)...n(n-4 1).
(i.e., the number of permutaions of n things taken r at a
time.) This program requires DECUS No. 25. Storage used:
70(8) (DECAL)

DECUS No. 18
------------

Random Walk Number

R. S. Nickerson

This program is used to do one of three things with equal
probability:

        1.  add increment to number
        2.  subtract increment from number
        3.  leave number as is

Storage used: 20(8) (DECAL)

DECUS No. 19
------------

Floating Reciprocal

R. S. Nickerson

This program is used to get the reciprocal of a floating point
number. Storage used: 16(8) (DECAL)

DECUS No. 20
------------

Millisecond Clock

R. S. Nickerson

Purpose is to count the milliseconds from time msc is called
until a typewriter key is struck. Storae used: 24(8) (DECAL)

DECUS No. 21
------------

Clearblock

J. R. Hayes

Purpose is to clear a block of registers. Storage used:
11(8) (DECAL)

DECUS No. 22
------------

Second Delay

R. S. Nickerson

The purpose of this program is to delay a running program for
a specified number of seconds. Storage used: 13(8) (DECAL)
Uses DECUS No. 23.

DECUS No. 23
------------

Millisecond Delay

R. S. Nickerson

Purpose is to delay a running program for a specified number
of milliseconds. Storage used: 21(8) (DECAL)

DECUS No. 24
------------

Move a Program

D. M. Forsyth

To move a program from one memory location to another,
changing effective addresses when appropriate. Storage
used: 106(8) (DECAL)


DECUS No. 25
------------

Get Number of Combinations

R. S. Nickerson
                        n
Purpose is to compute (r ) = n! / (r! (n-r)! )
i.e., the number of combinations of n things taken r at a 
time. Storage used: 22(8) (DECAL)

DECUS No. 26
------------

Floating point Nth Integer Power

R. S. Nickerson

Purpose is to raise a floating point number, x, to nth integer
power. Sorage used: 56(8) (DECAL) Uses DECUS No. 19.

DECUS No. 27
------------

Obsolete - Replaced by DECUS No. 39.

DECUS No. 28
------------

SCOPETRACE

John R. Hayes, Decision Sciences Laboratory, Hanscom Air
Force Base, Bedford, Massachusetts

The program is designed to facilitate the debugging of object
programs by providing a geometrical representation of the
operation of the object program. There is a Hiscopetrace
(5700(8) to 5777(8) registers) and Loscopetrace
(1(8) to 1000(8) registers).

DECUS No. 29
------------

TED: A Tape Editor

C. R. Brown and D. W. Connolly, Operational Applications
Laboratory, Hanscom Air Force Base, Bedford, Massachusetts

The program is an aid in the editing or modification of alpha-
numerical text in that the operator may communicate with the
computer in the very alphanumerics of the text itself. All
typing involved in preparing and editing tapes may be done
at an off-line typewriter punch.

DECUS No. 30
------------

DX-1 Library Tapemaker

Ted Strollo, Air Force Cambridge Research Laboratories,
Bedford, Massachusetts

DX-1 Library Tapemaker will load in any given number of
LL tapes of subroutines, and punch these out as a single
library tape. It may also be used to add new subroutines to
an existing library tape. (DECAL)

DECUS No. 31

Expensive Desk Calculator

Robert A. Wagner, Massachusetts Institute of Technology,
Cambridge, Massachusetts

EDC provides for performing arithmetic operations on numbers
typed either on- or off-line, and printing results. Decimal
numbers (integers, decimal fractions or integer fraction com-
binations) are acceptable; all indicated by ordinary decimal
point conventions. EDC allows the internal storage of
"variable" registers. The names of such registers, when used
in the same contexts as typed numbers, automatically cause
their current contents to be used in the calculation, as if
contents had just been typed in. EDC stores arbitrary char-
acter strings for laster use as input to EDC and for testing
the sign of partial results. (MACRO)

DECUS No. 32
------------

Gaussian Random Number Generator

Roland Silver

Ran-gauss, as it is called, is a subroutine which computes a
random number of approximately gaussian distribution, of
zero mean and specifiable variance. It requires the dvd,
mpy and random subroutines and, in itself, occupies 35(8)
registers and is exeucted in 157 cycles (average). (FRAP)

DECUS No. 33
------------

Scatter-Gather Magnetic Tape Routine

William Fletcher, Bolt, Beranek and Newman, Incoporated

This routine is used to control up to three Type 50 Magnetic
Tape Units connected to the PDP-1 computer through a
Type 51 Tape Control Unit. Blocks of information on mag-
netic tape in standard IBM low density (200 bit) format may
be written or read. A scatter feature allows information in
one contiguous block in the computer memory. The converse
operation allows several smaller blocks in memory to be
gathered together and written as just one block on the
magnetic tape. Information read from magnetic tape may
be compared with the contents of memory rather than stored.
When read, sections of the blocks on the magnetic tape may
be by-passed altogether. The IBM end-of-file may be written
and it is automatically sensed by the read routine. All read
operations function either forward or reverse. Write
operations operate forward only. Storage Required: 732(8).
(DECAL)

DECUS No. 34
------------

Fast Bivariate Generator

G. A. Paquette, United Aircraft Corporation

The program computes z as a function of x and y by cross-
linear interpolation within the table of Z's. Fixed-point
scaling used is under control of data provided at assembly
or by user's program. Storage Used: 47(8) (FRAP)

DECUS No. 35
------------

RATBIN (read and type a binary paper tape)

Gerald Clawson, The Geotechnical Corporation, Dallas,
Texas

The purpose is to read a machine language or data tape and
list it on the typewriter. Storage used: Program, 300-3104,
Data 3105-3363. (FRAP)

DECUS No. 36
------------

CHKSYM (check a symbolic tape)

Gerald Clawson, The Geotechnical Corporation, Dallas,
Texas

The purpose is to check symbolic paper tape against a copy
of it. Storage used: Program, 0010-0530, Data 0531-7777.
(FRAP)

DECUS No. 37
------------

    dbn (decimal to binary mixed number),
    dbi (decimal to binary integer) and
    dbf (decimal to binary fraction)

Gerald Clawson, The Geotechnical Corporation, Dallas,
Texas

The purpose is to make decimal to binary conversions.
Storage used: 3620-3770 (FRAP)

DECUS No. 38
------------

    bdn (binary to decimal mixed number),
    bdi (binary to decimal integer) and
    bdf (binary to decimal fraction)

Gerald Clawson, The Geotechnical Corporation, Dallas,
Texas

The purpose is to make binary to decimal conversions.
Storage used: 4000-4167. (FRAP)

DECUS No. 39, 40 and 41
-----------------------

DECAL-BBN

Richard J. McQuillin, Bolt, Beranek, and Newman,
Incorporated

DECAL-BBN is an assembler-compiler designed to process
two broad classes of statements: Instruction Word Statements
and Algebraic Statements. DECAL is available for both
1-core and 2-core machines. Programming and Technical
Manuals available.

DECUS No. 42
------------

Two Memory Checkerboard Program

J. C. Murphy, Jet Propulsion Laboratory

The program operates exactly as the MAINDEC 2 checker-
board program with the following exception: Upon comple-
tion of a selected pattern cycle in meory "0" the program
will enter the extend mode, then jump to memory "1" and
perform the same pattern cycle. Upon completion of this
cycle the program will reenter memory "0" and select the
next pattern. The program continues to alternate between
memories until an error, or normal halt is incurred. An
error in memory "1" is examined in the same manner as an
error in memory "0" (barring extend mode or defer cycle
logic failures). (DECAL)

DECUS No. 43
------------

Compare Program

J. F. Fitzgerald, Itek Corporation

Enables one to punch a tape which will typeout on the off-
line Flexowriter the registers that have been changed in the
operation of a given program and their contents.

DECUS No. 44
------------

Tape Duplicating and Verifying Program

C. E. Hurlburt

The purpose is to reproduce any paper tape and to verify
the reproduction via the checksum method and by comparing
line counts.

DECUS No. 45
------------

Start-Stop Reader Test

T. Shapin, Beckman Instruments, Incorporated

This program is used to test the braking action of the PDP-1
paper tape reader.

DECUS No. 46
------------

Obsolete-Replaced by DECUS No. 39.

DECUS No. 47
------------

Modifications to 18-18 Floating Point Arithmetic Package
(To be used with DECUS No. 10)

John B. Goodenough

These modifications of DECUS No. 10 round the results of
floating point additions, subtractions, multiplications, divisions
and shifts (R. & L.) for single and multicore use. Storage
used: 532(8).

DECUS No. 48
------------

No longer available.

DECUS No. 49
------------

Double Precision Fixed Point Routine

Terry Kleffman, Minneapolis-Honeywell Company

The double precision add, subtract, multipy, and divide
subroutines and the 12 double precision MACRO instructions
in this package provide the programmer with all the basic
tools necessary for fixed point double precision programming.
These subroutines were written specifically for maximum
speed of execution and, therefore, little or no considera-
tion was given to the amount of memory space it would
occupy. This approach was taken in an effort to provide
double precision accuracy for real-time, analog-to-digital
simulations. However, the amount of memory space re-
quired to store the double precision subroutines is not
restrictive for most applications. These routines require
1262(8)=754(10) meory locations which in a 10,000(8)=4096(10)
word memory still leave 6416(8)=3342(10) locations for addi-
tional programs. (MACRO)

DECUS No. 50
------------

BANNER

Robert F. Stover, Minneapolis-Honeywell Company

Banner is a demonstration program for the PDP-1, and uses
the Character Display Program - DECUS No. 1. It accepts
a message typed in from the console typewriter and displays
the message on the 16" display as letters moving from right
to left. The message will be repeated indefinitely. The
appearance is the same as the Times Square News Sign.

DECUS No. 51
------------

DSL Matrix Routines

J. B. Goodenough, Decision Sciences Laboratory, Hanscom
Air Force Base, Bedford, Massachusetts

This Matrix Package consists of programs to perform the
following functions in either fixed or single precision
floating point:

   Add columns to store matrix.
   Add or subtract two matrices.
   Multiply a matrix by a constant.
   Multiply a row by a constant.
   Punch an intermediate matrix on paper tape.
   Read intermediate matrix tape.
   Calculate the row sum.

DECUS No. 52
------------

Matrix Operations Program for the Experimental Dynamic
Processor

C. Caso, J. Seltzer and J. Sexton, Wolf Research and
Development Corporation, West Concord, Massachusetts

This Matrix Package is a system of computer programs to
perform general matrix operations. The matrix operations
that can be performed are solved eigenvalues and eigenvec-
tors, add, inversion, multiplication, subtraction, and trans-
position. A set of input/output routines and an executive
routine are included in this package. The executive routine
is designed to allow effective usage of the package by people
with minimal programming experience. This package has
been coded for the experimental Dynamic Processor, DX-1.
The system uses single-precision floating-point arithmetic.

DECUS No. 53
------------

No Longer Available

DECUS No. 54
------------

No Longer Available

DECUS No. 55
------------

Tape Editor (BBN)

Harry Rudloe

This program edits symbolic paper tapes making use of the
scope and on-line typewriter. Occupies registers 2450-
7500. This version requires a full 16-channel sequence
break machine. However, it can be modified to run on 
a machine with a different configuration.

DECUS No. 56
------------

The KALAH Game Program

Roland Silver

The computer plays kalah with you communicating through
the typewriter as input and the scope as output media. (FRAP)

DECUS No. 57
------------

Input-Output Routines

R. S. Nickerson and J. B. Goodenough, D.S.L., Hanscom
Air Force Base, Bedford, Masachusetts

These routines are designed to supplement the DEC In-Out
Package. They consist of the following DSL programs:
Get Octal Number; Type Octal Numbers; Get and Read
Alphanumeric Strings; Add Character, Delete Character,
and Initialize String; String Decimal Numbers; and Space
Decimal Output. (DECAL)

DECUS No. 58
------------

Unary Manipulation Routines

R. S. Nickerson, D.S.L., Hanscom Air Force Base, Bedford,
Massachusetts

Routines to: Count the number of ones in a block.
             Count the number of ones in a word. (DECAL)

DECUS No. 59
------------

TITLE

C. V. Gaylord, D.S.L., Hanscom Air Force Base, Bedford,
Massachusetts

Routine to punch out in readable form a typed title for
binary tapes. (DECAL)

DECUS No. 60
------------

SFLAG RFLAG

J. B. Goodenough, D.S.L., Hanscom Air Force Base,
Bedford, Massachusetts

This routine is used to save and restore condtion of flags.
(DECAL)

DECUS No. 61
------------

TLU - Table Look-up

J. B. Goodenough, D.S.L., Hanscom Air Force Base,
Bedford, Massachusetts

This routine looks up an argument in a tape and returns with
address of the first table entry greater than or equal to argument.
(DECAL)

DECUS No. 62
------------

DSL Block Manipulation Routines

J. B. Goodenough and R. S. Nickerson, D.S.L., Hanscom
Air Force Base, Bedford, Massachusetts

Consists of the following routines: Exchange Blocks; Move a
Block; Compare Blocks, Get Standard Deviation; Push Block
up N Registers; Larger, Equal, Smaller Algebraic or Absolute
Magnitude; Order Block or Fixed Point Numbers Algebraic-
ally or According to Absolute Magnitude; DZM Block, Search,
Compare Strings; Get Median; Select with/without Replace-
ment; Rotate Block Right, Left; Inclusive or Blocks; Sort a
Block or Items; Sort a Block of Alphabetic Items Using Sort
1. (DECAL)

DECUS No. 63
------------

Floating Point Interpreter (Modified for DECAL-BBN)

R. J. McQuillin, Bolt, Beranek, and Newman, Incorporated

Routines to interpret fixed point coding as floating point
when running a program. (DECAL) To be used in place of
corresponding routine in DECUS No. 10.

DECUS No. 64
------------

Random Number Generators: Random, Ranmodn, Coin

William Fletcher

Random, when called, will return with a pseudo random
number in the accumulator. The routine is initialized by
depositing a known number in two preassigned registers.
The routine occupies 12(8) registers.

Ranmodn, if called with a mod number in the accumulator,
will return with a random number in the accumulator in
in-out register which is between zero and the mod number
minus one. It uses random and idvd.

Coin, when called, has a number in the accumulator which
will be considered by the routine as a binary fraction with
the radix at zero. If, at call time, Coin is at L then the
routine will return to L+1 with a probability of N and
L+2 with a probability of 1-N. It occupies 12(8)
registers and uses Random.

DECUS No. 65
------------

Digital Fuction Generate and Display

S. Jackson and G. Paquette, United Aircraft Corporation

Scope display for univariant or bivariant functions stored
in "DECUS No. 34-Fast Bivariate Generator" format.


DECUS No. 66
------------

Short, Read Magnetic Tape Routines

William A. Fahle, Systems Research Laboratory, Incorporated,
Dayton, Ohio

The purpose of the program is to read a record of standard
low density IBM format tape into a block of core. The 
entire record on tape must be transferred into core, thus
allowing records of a non-predetermied length to be
transferred. An entry is available for skipping records. The
routine has an end-of-file return and a missed character
indication. Storage used: 86(10 or 126(8).

DECUS No. 67
------------

"SIN-COS": Floating-Point Sine-Cosine Routines

Richard Zacher, Princeton University, Princeton, New
Jersey

These routines compute the sine or the cosine of the number
in the floating accumulator and leaves the result in the
floating accumulator. The routines use 73(8) registers.

DECUS No. 68
------------

"SQRT": Floating-Point Square Root Routine

Richard Zacher, Princeton University, Princeton, New
Jersey

This routine computes the square root of the floating point
number in the floating accumulator and leaves the result in
the floating accumulator. The routine uses 56(8) registers.

DECUS No. 69
------------

SATED: Scope-Aided Tape Editor

Paul Weene, D.S.L., Hanscom Air Force Base, Bedford,
Massachusetts

SATED is DSL program for preparing and editing symbolic
tapes. The program requires a two core PDP-1, Type 30 CRT
with character generator and light pen. Type 20 Sequence
Break System and Automatic Multiply. (DECAL)

DECUS No. 70
------------

OLD DECUS LIBRARY I

Charles W. Adams Associates, Incorporated

1. Analyzer

Provides a program listing as a debugging aid. (FRAP)

2. Frapcorrector

Provides a convenient means of making changes to a FRAP
Lanuage source tape. (FRAP)

3. Punch Rim Tape

Provides a means of punching out information from sections
of core memory. The console typewriter is used to provide
the control information (FRAP)

4. Adams Associates Intercom and Debug Program

Purpose:

    To examine and modify individual memory locations via
    the console typewriter.

    To obtain printouts of memory area via the on-line
    console typewriter or on paper tape for off-line
    printing on a Flexowriter.

    To obtain up-dated binary read-in-mode format paper
    tape copies of programs which has been corrected 
    from the console.

    To obtain a "what has changed" print-out (on-line or
    off-line) of a program which has operated incorrectly.

    To trap a program being debugged and obtain inter-
    mediate results by using the four functions above.
    Function 2 may be under program control as well as
    under manual control and thereby allows the program
    to continue automatically. A printout trace of JMP
    transfers is also available.

    To make the AID printout routines available to other
    programs as subroutines.

Number of storage locations: 776(8), 510(10).

DECUS No. 71
------------

OLD DECUS LIBRARY II

Bolt, Beranek and Newman, Incorporated

1. FRAP Assembly Program

Edward Fredkin

FRAP is designed to operate on a PDP-1 computer with at
least 1024 words of memory and the minimum set of in-out
equipment. The assembly language will accept, as input, a
paper tape produced by a flexowriter. The tape is an iso-
morphic representation of the information contained in a 
typewritten program.

2. Typewriter Control

John McCarthy

Helps in debugging other programs and allows the control of
other programs from the on-line typewriter. It can be com-
manded from the typewriter to do the following: type-out
the contents of selected registers, change the contents of
selected registers, execute instructions (including JMP in-
structions which give control to other routines), list those
registers having given contents in a given field and define
new typewriter control commands (FRAP and DECAL)

3. Colossal Typewriter Program

J. McCarthy and R. Silver (W. Fletcher)

May be used for tape preparation and tape editing. It uses
the reader, punch and typewriter under typewriter control.

4. Decimal to Binary Conversion

William Fletcher

This routine will convert a concise-coded decimal number
between + 000000(8) and + 377777(8) to a binary number.
(FRAP and DECAL)

5. Binary to Decimal Printout and Punchout

William Fletcher

This routine is used to print or punch out a binary number
between -377777(8) and 377777(8).

6. TRACE

R. Silver and W. Fletcher

The TRACE Program is used to simulate the execution of a
subject program one instruction at a time. After each
instruction has been performed, the user's test routine is
called to permit examination of the status of the machine,
the pseudo-accumulator and the pseudo-program counter.
(FRAP and DECAL)

7. Rotate Test

William Fletcher

Rotate Test verifies that all the rotate instructions are
operating correctly. (FRAP)

8. Master Duplicator

William Fletcher

Master Duplicator routine allows the user to copy a tape
from the reader to either or both punches and/or either or
both typewriters. (FRAP)

9. Tem-Stor Push Down

J.C.R. Licklider

The purpose of this package is to provide, in convenient
form, a system for saving and restoring
a system that can be incorporated into any FRAP program.
(FRAP)

10. Tracker Routines

Roland Silver

The Purpose of these routines is to track the light-pen over
the face of the scope. (FRAP)

11. Grid Plotting Program (plotgrid)

J.C.R. Licklider

The plotgrid subroutine is used to plot, on the computer CRT
display, a rectangular grid of the type used in graphs. The
grid plotted by the program has eight parameters. These
parameters are defined within the subroutine for external
reference. It is assumed that they will be set (that their
values will be filled in) by the subroutine that calls plot-
grid. One calling of plotgrid plots the grid once.

12. Compare

Edward Fredkin

This routine will do a true 18-bit comparison for algebraic
(signed) nubmers (gela?) or for 18-bit magnitudes (glem?).
This result is communicated by a return to one of three loca-
tions in the calling sequence. The numbers that are compared
are masked prior to comparision. (DECAL and FRAP)

13. Debug

R. Silver and H. Rudloe

Debug is intended to help the programmer debug a program
at the console.

DECUS No. 72
------------

OLD DECUS LIBRARY III

William Fletcher, Bolt, Beranek and Newman, Incorporated

Binary Punch and Load Package

This routine allows the user to punch out any area of memory
in the binary format, specifying the desired area with typed
commands. (FRAP)

Binary Punchoff

This routine punches a tape which, when reloaded will
reproduce the memory at time of punch-off. (FRAP)

DECUS No. 73
------------

MADCAP; MAmmoth DeCimal Arithmetic Program

E. Myrvaagnes, Parke Mathematical Laboratories,
Incorporated

A multiple-precision floating-point arithmetic program. The
number of significant digits maintained during calculations
can be varied easily to suit user's requirements of speed vs.
accuracy. Programming in MADCAP's own source language
is extremely simple.

DECUS No. 74
------------

Tapelibrary Program

Daniel Forsyth, Information International Incorporated,
Cambridge, Massachusetts

Tapelibrary Program stores the image of punched paper tapes
on magnetic tape and reproduces them on command. Read
checking is performed for paper-mag and mag-paper conver-
sion. Records may be added to mag tape at any time, but
not rewritten. Initial typed instructions are shortened when
an operation is repeated. The program occupies 0-3117
registers.

DECUS No. 75
------------

SEETAPE - A Magnetic Tape Dump Program

John B. Goodenough, D.S.L., Hanscom Air Force Base,
Bedford, Massachusetts

SEETAPE is a program for dumping magnetic tape information
on the scope. The user may specify the structure of the tape
blocks to be dumped, space forward and backward any number
of blocks, and rewind the tape. Binary verions are avail-
able for Type 51 Control and Type 52 Control.

Equipment Required:

   1. At least two cores
   2. Type 30 Scope with Type 33 Character Generator
   3. Standard Typewriter
   4. Type 51 or Type 52 Tape Control

DECUS No. 76
------------

A 28-Bit Floating Point Package

Lt. Richard D. Smallwood, Air Force Cambridge Research
Laboratories, Bedford, Massachusetts

The purpose is to provide a 28-bit mantissa and 8-bit expo-
nent floating point numbers for more accuracy than the
standard 18-18 package. Performs floating point arithmetic,
conversion, input, and output. Storage used varies.

Special Hardware Required: Automatic multiply and divide.

DECUS No. 77
------------

Sort Routines - Sort 2, Sort 3

John B. Goodenough, D.S.L., Hanscom Air Force Base,
Bedford, Massachusetts

Order (ascending) a two-dimensional array. These routines
will work in either single core or multi-core machines. In
multi-core machines, the program must be called in extend
mode with the operands referencing the proper core.

DECUS No. 78
------------

TAPE 52 Magnetic Tape Control Subroutines

John B. Goodenough, D.S.L., Hanscom Air Force Base,
Bedford, Massachusetts

A set of subroutines which exist on a library tape for using
the tape transports connected to the Type 52 Control Unit.
The routines allow the user to read or write, in even or odd
parity, a block of consecutive words in core as one tape
block; write and detect an IBM end-of-file mark; space
forward and backward; rewind; maintain a block count, and
automatically take corrective action when errors are detected
during read or write operations. All routines may be used in
extend mode and called from any core.

DECUS No. 79
------------

Extended Memory Punch and Loader Routines

William E. Fletcher, Bolt, Beranek & Newman, Incorporated

Facilitates punching and loading binary information from any
memory bank in the PDP-1 (DECAL)

DECUS No. 80
------------

DEXTER, A Magnetic Tape Executive Routine

R. D. Keim, Wolf Research & Development Corporation

DEXTER is an executive routine designed to facilitate the
operation of a PDP-1 data processing system during experi-
mental runs. It provides an efficient method of loading
programs from magnetic tape under on-line operator control.
DEXTER requires an 8K PDP-1 with a Type 52 Magnetic Tape
Control. The software consists of an executive routine and a
maintenance routine. Other programs are written in a
DEXTER COMPATIBLE FORMAT and stored on the execu-
tive magnetic tape. (AMP Language but can be converted
to DECAL or MACRO easily.)

DECUS No. 81
------------

Calcomp Plotter Software

Charles W. Adams Associates, Incorporated

Routines:

          PLOTS 1   GRAPH
          PICTUR    SYMBL5
          PLOT 1    NUMBR 1
          DXDY 1    MINMAX
          SCALE 1   WHERE
          AXIS 1    FACTOR
          SCLGPH    Expensive Tape-Calcomp Plotter

DECUS No. 82
------------

FORTRAN for the PDP-1 - Version 3

The FORTRAN Compiler for the PDP-1 is not intended to be
a replacement language for the other compiler and assembly
languages already in use on the PDP-1; however, it is useful
for short programs which may easily be coded in FORTRAN.
Version 3 is for machines with multi-div hardware.

DECUS No. 83
------------

340 Assembly Language and 340 DDT

John B. Goodenough, D.S.L., Hanscom Air Force Base,
Bedford, Massachusetts

This program resembles ordinary DDT in that it allows the
bit patterns of the 340 Scope instructions to be inspected
and changed, on-line, in a symbolic language. The symbols
used are identical to the symbols when compiling pro-
grams for the scope.

In addition registers may be inspected and changed using
ordinary machine language.

The action operator tape, which defines 340 Assembly
Language, can be compiled only with the 2-core DECAL of
November 1964 (or with versions of DECAL derived from the
Skeletal DECAL of November 1964). After compilation,
DECAL can be punched off to obtain a permanent copy of
DECAL with 340 definitions.

Following the action operators is a test program which can
be compiled and loaded to check that the compiler is using
the definitions correctly. The pattern produced by the test
program is described in the 340 DDT write-up.

DECUS No. 84
------------

M.I.T. Floating Point Arithmetic Package

Bill Gasper and Tom Eggers, M.I.T., Cambridge
Massachusetts

The Floating Package is a group of arithmetic subroutines in
                                             2e
which numbers are represented in the form f x  . f is a
1's complement 18-bit fraction with the binary point between
bits 0 and 1. e is a 1's complement 18-bit integer exponent
of 2. The largest magnitude numbers that can be represented
    ~   39,000.
are - 10,

A number is normalized when 1/2<|f|<1. All the floating
point routines, except the two floating unnormalized adds,
return a normalized answer. The fraction appears in the
AC, the exponet in the I/O. Routines include:

  Floating Add - jda fad
  Floating Multiply - jda fmp
  Floating Divide - jda fdv
  Floating Square Root - jda fsq
  Floating Log, base 2 - jda log
  Floating Reciprocal - jda rcp
  Floating Input - jda fip
  Floaitng Output - jda fop
  Floating Unnormalized add - jda fua
  Floating Unnormalized add and Round - jda fur
  Floating Exponentiation - jda f2x

DECUS No. 85
------------

LISP for the PDP-1

L. Peter Deutsch and Edmund C. Berkeley

LISP (for LISt Processing) is a language designed primarily
for processing data consisting of lists of symbols. It has been
used for symbolic calculations in differential and integral
calculus, electrical circuit theory, mathematical logic,
game playing, and other fields of intelligent handling of
symbols.

LISP for the PDP-1 uses, from the basic function, about
1500 registers, and for working storage from about 500 to
14000 registers (the latter in a four-core PDP-1) as may be
chosen. It is flexible, permits much investigation, and the
correction of preliminary expressions.

DECUS No. 86
------------

Precision Hypotenuse/Square Root Subroutine

Nick Chase, Charles W. Adams Associates, Incorporated

Precision Hypotenuse is used to form the 34-bit sum of the
squares of two 17-bit one's complement deltas and takes the
square root. Precision Square Root, indicated by coding
within the comments, will calculate the 17-bit square
root of the 34-bit number.

The symbolic version of the subroutine is in Drum FRAP but
will assemble with ordinary FRAP. The subroutine occupies
34(10) registers, using automatic multiply and divide hard-
hare, and requires a constant of 200000(8).

DECUS No. 87
------------

Buffered DECtape Read and Write Routines

R. J. McQuillin, Inforonics, Incorporated, Cambridge,
Massachusetts

These routines simulate paper tape on DECtape. When
characters are written (punched) onto DECtape, they are
packed two per word. Therefore, it is possible to put
776(8) characters on one DECtape block.

DECUS No. 88
------------

Typewriter Time Test

Lloyd J. Ostiguy, Inforonics, Inc., Maynard, Massachusetts

Indicates time ratios between key strokes on a typewriter.

DECUS No. 89 and 89a
--------------------

Cube Display and Matchbox Display

T. Hart

Demonstration programs displaying a cube or matchbox for
use with the PDP-1 and Type 30 Display.

DECUS No. 90
------------

Color Debugger

Nick Chase, Charles W. Adams Associates, Incorporated,
Cambridge Massachusetts

Provides on-line debugging in octal using PDP-1 with color
display and pushbuttons. It has two basic modes:
examine/modify and program trace. Requires PDP-1 with
memory extension control and a color display console, or
black and white display type 30 (preferably with pushbutttons
connected to computer testword).

DECUS No. 91
------------

DECtape Duplicate/Verify

R. J. McQuillin, Inforonics, Incorporated, Cambridge,
Massachusetts

This program copies DECtape on the PDP-1. When a DEC-
tape is copied, it is automatically verified. An operation
that will only verify one tape against another is also in-
cluded. The user has control over how much of the tape is
duplicated and verified. He may also adjust the internal
buffer size to any core configuration.
Minimum Hardware: 4K, DECtape Dual Transport
Source Language:  DECAL
Storage:  100-577 plus rest of memory for buffer

DECUS No. 92
------------
EMP (Extended Math Package)

Adams Associates, Cambridge Massachusets

EMP is an interpretive routine to perform double precision
floating point arithmetic and elementary function evaluations.
It is a condensation and revision of FLINT (DECUS #15A)
for the FLINT 3-word floating point format. Changes in-
clude the addition of a floating jump instruction, operation
only in extend mode, improved accuracy and elimination of
the input-output routines. The program has been coded in
MIDAS and may be fully relocated if desired.
Minimum Hardware:    Standard PDP-1, memory extension
                     control. CAL in extend mode should
                     go to module 0.
Storage Requirement: 597(10), plus constants
Execution Time:      Typical floating add <300usec;
                     normalize <80usec.

