SNPCAL

"Taped to the wall is a line-printer Snoopy calender for the year 1969."

- Ed Post, Real Programmers Don't Use PASCAL, 1983 [1]

Line printer Snoopy calendar

November 2021

Making a version of the Snoopy line printer calendar was a short creative coding and code conservation project. As a starting point, I used a FORTRAN program snpcal.for that appears in the DECUS Software Library.

C     SNOOPY CALENDAR PROGRAM FOR PDP-11 FORTRAN
C     TAKEN FROM (NON-WORKING) IBM FORTRAN+BAL VERSION
C     MODIFICATIONS BY T. M. KENNEDY 29-DEC-84

The program generates (up to) a thirteen month calendar, each with an ASCII art Peanuts picture. The program can be compiled with GNU Fortran using the fdec DEC compatibility mode flag:

f77 -fdec snpcal.for snppic.for

where snppic.for is the routine that generates the images. Only the OPEN statements need to be modified and one line in the snppic.for routine needs to be commented out. The executable program reads data from snpcal.dat, a file representation of a punch card deck that contains runtime input (month range and year) as well as the encoded images and "large" text. The program output is written to snpcal.out in a Fortran format that can be processed by asa. There are 13 unique pictures that fill a glorious 132 lines of printed output:

jan1 feb mar apr may jun
jul aug sep oct nov dec
jan2

Several of the images use type overstriking, which is clearly superior to other forms of ASCII art.

Year calendar

I wrote a short script to generate a year calendar using the commands cal and figlet and one of the SNPCAL images. In a shortsighted development, modern distributions of cal only generate 80-column output, so I reformatted the text for a wider 132-column structure with a few bash script gymnastics.

Here's a printed calendar; worthy, I think, of a Real Programmer's wall.

IMG 3812

The calendar is printed with a daisywheel printer (Qume Sprint 11/55) to mimic the impact printers used in computer centers in the 60's and 70's, such as the IBM 1403. Impact printers enable overstriking – printing glyphs on top of each other by issuing a carriage return without a line feed. The paper is green-bar Universal UNV15852 Computer Paper, 20lb, 14-7/8” x 11”, perforated, using the blank side, similar to surviving examples from the 1970's. And, in a fit of late-night artisanal ASCII art crafting by hand, I produced this realization of the historical calendar, "Curse you, Red Baron 2021."

FFjRj0IXwAcQii5 FGW3jJwWQAEBVAD

Computer crime

James Ryan, proprietor of Aleator Press, writes that the (unauthorized) use of line printers and their associated computer equipment to generate ASCII art (such as calendars) was cited as a "canonical example" of "computer crime." In the late 1970's, proposed legislation in Congress would have made printing such calendars a federal felony punishable by 15 years in prison or a fine of two and one-half times the amount stolen, or both. (The bill limited the judge's sentencing discretion to a formula of plus or minus twenty-five percent. A Real Programmer's sentence would have to be between eleven years and nineteen years for the crime of printing a Snoopy calendar.)

As Ryan points out, John K. Taber wrote a fascinating and detailed critique of the Senate bill [John K. Taber, On Computer Crime (Senate Bill S. 240), 1 Computer L.J. 517 (1978), link] that includes Congressional testimony with the then junior Senator from Delaware, Joseph R. Biden.

Links and media

  • Aleator Press - Snoopy calendars as the "canonical example of `computer crime',” James Ryan, 2021.
  • Adafruit Industries Blog - 2022 Line-Printer Snoopy Calendar #Art #VintageComputing @aleatorpress @ef1j95, Anne Barela, December 9, 2021.

References

  1. Ed Post, Real Programmers Don't Use PASCAL, Datamation, July, 263 (1983). achive.org link

Program files

Compile with f77 -fdec snpcal.for snppic.for -o snpcal using GNU fortran. The source has instructions for editing snpcal.dat to change the range of months or the year. The DECUS Fortran file refers to a "non-working IBM Fortran + BAL version." BAL is the IBM Basic Assembler Language.

FileTypeSizeDescription
snpcal.forTXT14KSnoopy calendar FORTRAN code
snppic.forTXT1KSnoopy calendar picture generator
snpcal.datTXT37KSnoopy calendar data file
genpic.fTXT3.4KHack to generate pictures from data file
curb.txtTXT12KCurse you, Red Baron!

Inspired by SNPCAL

August 2022

Oliver Wendell Jones was a Real Programmer.

Courier 10 typeface rendered on a wide format Qume Sprint 11/55 daisywheel printer on green-bar Universal UNV15852 Computer Paper, 20lb, 14-7/8” x 11”, perforated, using the blank side.

FaIvFa6WAAIiSbU-2 FaIvFa8WIAAsxCV-2 FaIvFa6WYAMi6FS-2
FaKbX3vWYAIvIV3-2 FaKbX3zXkAEFCgs-2 FaKbX3uXoAIr0E -2
FaUlbbuWIAEQBZF

Bill the Cat and Opus are left as an exercise for the reader.