#!/usr/bin/perl #PDP-12 PROGRAM ABSTRACTS #$catalog = "July 1974"; $catalog = "May 1975"; $heredoc = <<'HEREDOC'; DECUS NO. 12-180 CARDDIAL - Input to the DIAL Editor Via Cards James C. Good, Jamesville-DeWitt Central Schools, DeWitt, New York CARDDIAL is a program which makes card input acceptable to the DIAL editor. Minimum Hardware: PDP-12, Card Reader, LINCtape Other Programs Needed: PAL-12A Assembler Storage Requirement: 0000-0777 Restrictions: Same as for the DIAL Editor Source Language: PAL-12A DECUS NO. 12-181 ATSXL - Text Display and Timing Routine for FOCAL-RT David Hale, Psychology Department, The Queen's University of Belfast, Belfast, Northern Ireland ATSXL is an overlay to FOCAL-RT (DECUS 12-80) which allows a 'frame' of text to be presented on the display and the subjects response, response time and keydown time to be recorded. Up to 511 frames of up to 510 characters each may be randomly presented allowing adaptive techniques to be employed. Once the stored frame has been found display presentation is immediate. Up to 12 bits of response information can be recorded and timing is to an accuracy of 10 milliseconds. Responses are input on the external sense lines. Minimum Hardware: 8K PDP-12 with dual LINCtapes, VR14 display, KW12A real-time clock and sense lines Other Programs Needed: FOCAL-RT (DECUS 12-80) (On tape offered) Source Language: DIAL DECUS NO. 12-182 KLK - A Simple Clock Overlay for PDP-12 FOCAL David Hale, Psychology Department, The Queen's University of Belfast, Belfast, Northern Ireland A simple overlay of great use in elapsed time measurement which takes advantage of the ability of the KW12A clock to be stopped by an external event on any of the three clock trigger input channels. The routine assumes control of the clock and sets it counting from zero. An external event stops the clock and records which of the three possible events was present. The clock time and event code can then be read into the user's program at his leisure. Minimum Hardware: 8K PDP-12, dual LINCtapes, KW12A, VR14 Other Programs Needed: FOCAL-RT (DECUS 12-80) (On tape offered) Source Language: DIAL DECUS NO. 12-183 DECIO - FOCAL-12 Whole Word Digital I/O Overlay David Hale, Psychology Department, The Queen's University of Belfast, Belfast, Northern Ireland An alternative to the practice of accessing external sense lines and relays at the individual bit level, it treats the sense lines as a 12 bit integer and the relays as a 6 bit integer. The status of the 12 bits can then be read as a decimal number between 0 and 4095 and the relays controlled by outputting a decimal number between 0 and 63. Any combination of bits may then be controlled by these integers. An input pattern can be decoded to give individ- ual bits and an output pattern set up using the decimal equivalents of the bit pattern. Minimum Hardware: 8K PDP-12, dual LINCtapes, KW12A, VR14 Source Language: DIAL DECUS NO. 12-184 PPSH - Neuronal Autocorrelation and Crosscorrelation Analysis Programs (Pre-Post Stimulus Histogram) Ramesh R. Parekh, M.S.I.E. and Hardress J. Waller, Ph.D., Medical College of Ohio at Toledo, Toledo, Ohio

PPSH (Pre/Post Stimulus Histogram) is a group of programs that, together, compute the autocorrelation and crosscorrelation functions for two concurrent sequences of events (e.g. , two simultaneously recorded neuron spike trains or one spike train and one stimulus series). PPSHDATA compiles the intervals in real time as a single mixed and labeled, double precision list of indefinite length. Intervals are numbered sequentially and stored, along with relevant identifying data, on a Linc Tape train file.

PPSH1 reads a selected interval list and generates either a first order interval distribution or an n order correlation (expectation density) function. The histogram is displayed and may be plotted along with a calibrated scale. Total event counts and histogram areas are typed out as octal numbers.

HISTDUMP temporarily saves the histogram in a reserved four block section of Linc Tape on unit 0 for subsequent printout by TAPEDUMP (DECUS 12-2). Minimum Hardware: PDP-12 with 8K core, VR-12 display and dual Linctape; KW12A real time clock; KE-12 Extended Arithmetic Element; ASR33 Teletype or equivalent; Incremental plotter (optional) Source Language: LAP6-DIAL DECUS NO. 12-185 Horoscope Casting Routines - Astrodynamical Subroutines David L. Hindman, University of Texas Phonetics Laboratory and ARBEC, Inc., Austin, Texas A collection of FORTRAN II subroutines which perform the astrodynamical, calendrical, and geographic computations made in the process of casting horoscopes. Primary components are: an ephemeris routine, a calendrical routine, and a routine to perform house setups.

The routines are not warranted and are to be used for fun only. Other Programs Needed: FORTRAN Compiler Storage Requirement: 16K Restrictions: Will not cast horoscopes for latitudes greater than 66 degrees North or South Source Language: FORTRAN II DECUS NO. 12-186 COBRA Assembler for the PDP-12 David L. Hindman, University of Texas Phonetics Laboratory and ARBEC, Inc., Austin, Texas COBRA is a macro assembler for PDP-12s having at least 16K of core and the EAE. COBRA runs under PS/8 and produces binary output compatible with ASBLDR. The user may maintain system macro text in a file called 5Y5LIB and may also keep other text libraries. Other COBRA facilities are: qualified symbols, text parameterization, LMODE/PMODE assembly, and a DIAL simulation mode. A library of PS/8 linkage macros is included.

COBRA is configured for a system with a Centronics line printer, but is largely compatible with teletype output systems. Minimum Hardware: EAE and disk recommended Restrictions: Known defect in symbol table routine (symbol type not tested properly). Source text does not include form feed codes. Source Language: COBRA DECUS NO. 12-187 OS/8 Device Handlers for PDP-12 Core James E. Randall, Indiana University, Bloomington, Indiana These system and non-system device handlers are designed for a PDP-12 with LINCtape as the mass storage device and with 32K of core. The handlers can reduce tape shuffling by keeping directories, systems area, or files in upper core.

The handlers, their listings, and initialization and restoration routines are supplied on a Linctape which can be started from the console bootstrap. Full documentation is obtained in the file HOW.DC on the tape. The tape is OS/8 Version 3 and will not support earlier versions. Storage Requirement: 32K Source Language: PAL-8 DECUS NO. 12-188 4K DISK/LINCTAPE MONITOR Mark J. Hyde, 209 Ardsley Drive, DeWitt, New York The 4K Linctape monitor is the disk/DECtape monitor with patches to allow it to use TC12 Linctape. The documentation contains many patches which are also of use to PDP-8 users of the disk/DECtape. Minimum Hardware: PDP-12, TTY, any disk or LINCtape Storage Requirement: 4K Source Language: PAL-D DECUS NO. 12-189 DECtape Reader Handler for PDP-12 Gotz Romahn, Heinrich Hertz Institut, Berlin, Germany This handler allows direct reading of DECtapes via the TC12F option. All OS/8 - V3 programs may be used. Minimum Hardware: PDP-12 with TC12F option and EAE Other Programs Needed: OS/8 BUILD Restrictions: Possibly will not run on a very slow PDP-12 and a very fast tape drive Source Language: PAL-8 DECUS NO. 12-190 PDP-12 Functions for OS/8 BASIC Edward M. Schmidt, Laboratory of Neural Control, National Institute of Neurological Diseases and Stroke, National Institutes of Health, Bethesda, Maryland This program contains 16 functions for the operation of OS/8 BASIC on a PDP-12. The functions include the clock, analog to digital conversion, sense lines, sense switches, relays, scope, digital input and output, and bit manipulation. The program constitutes the user function overlay provided for in OS/8 BASIC called BASIC.UF. Minimum Hardware: PDP-12, KW12 clock, Digital input and output registers (optional) Other Programs Needed: OS/8 BASIC Storage Requirement: 5 octal pages Source Language: PAL-8 . HEREDOC # Don't forget the newline before HEREDOC above! %italic = ( "Editor's Note", 1, "Minimum Hardware", 1, "Miscellaneous", 1, "Other Programs Needed", 1, "PS/8 programming system", 1, "Restrictions", 1, "Revised by", 1, "Source Language", 1, "Storage Requirement", 1, "Storage Requirements", 1, "Submitted by", 1, ); # # This little routine simplifies the handling of lines # which end in commas, indicating they should be merged # with the following line. sub merge { local($line) = @_; while ($line =~ /,$/) { #warn "merge was: $line"; $line .= shift(@heredoc) . "\n"; #warn "merge now: $line"; } return $line; } # # The OCR doesn't save much by way of formatting information. # Here we use a heuristics and knowledge of the general layout # to try do do mark-up. @heredoc = split(/\n/, $heredoc); $state = 'header'; while (defined($line = shift(@heredoc))) { $line .= "\n"; # These were lost by split() #print "$state: $line\n"; $line =~ s/\r//g; if ($state eq 'header') { next if $line =~ /^$/; die "bad header: $line" unless $line =~ /^DECUS NO. (12-\d+[A-Z,]*)$/; $decus = "$1"; $decus =~ y/A-Z/a-z/; warn "mkdir ../$decus\n" unless -d "../$decus"; $state = 'title'; $title = $author = ''; $submitted = $revised = ''; # print "cat >../$decus/decus-$decus.htm <decus-$decus.htm <

\1<\/I>:\2/ if defined $italic{$1}; # Colon cases may need more markup if ($1 eq 'Submitted by') { $submitted .= &merge("$2\n"); next; } if ($1 eq 'Revised by') { $revised .= &merge("$2\n"); next; } } # Most bodies are just a big run-on paragraph. Where they are # not, it will be necessary to edit in a

. # (12-25, for example.) $body .= $line; if ($line =~ /^$/) { # warn "decus: $decus\n"; # warn "title: $title"; print "

\n"; chop $title; print "\n"; print "
$title
\n"; print "
$decus\n"; print "
\n"; # warn "author: $author"; # warn "submitted: $submitted"; chop $author; print "
Author: $author
\n"; $submitted =~ s/, $//; print "
Submitted by:$submitted
\n" if $submitted; $revised =~ s/, $//; print "
Revised by:$revised
\n" if $revised; $body =~ s/\t/ /g; $body =~ s/\n*$//; $body .= "
\n
Catalog: $catalog
\n"; $body =~ s:\n
:\n:g; $body =~ s:
\n*
\n*::g; # warn "body: $body"; print "
$body
\n"; print "HERE\n"; $state = 'header'; } } }