Icon The Kermit Project   |   Now hosted by Panix.com
New York City USA   •   kermit@kermitproject.org
since 1981
Grüße aus Bronx NY        

  Kermit Software for the Digital Equipment Corporation DECSYSTEM-20

PDP-10 memorabilia
    (Click image for a gallery of DEC-10/20 publications)

Frank da Cruz
The Kermit Project, Bronx NY.
Most recent update: Mon Sep 9 11:39:53 2024 New York time
Flip to Kermit-10
Download:
 V 5.3(277)  2024-09-02    V 5.3(255)  2024-03-29    V 5.3(248)  2023-10-28    V 5.3(235)  2023-06-11    V 5.3(230)  2023-04-02    Older

DECSYSTEM-20

Bill Catchings 1984
Bill Catchings in 1984
Kermit-20 — Kermit communications and file-transfer software for the DECSYSTEM-20 — was first written at Columbia University by Bill Catchings in 1981; it is coded in MACRO-20 assembly language. It was the very first Kermit program and performed its first successful file transfer on April 29, 1981; read about it HERE. Bill left Columbia in March 1983 and that same month I took over Kermit-20 development with continuous edits and releases through January 1988, when the DECsystem-20 line was discon­tinued. I picked it up again in 2001 (when DEC-20 emulators started to sprout up around the Internet) to add long packets and buffered i/o, and Tom DeBellis added some mostly TCP related fixes. 25th-anniversary edition was released in January 2006.

Bill Catchings 1984
Me with DEC-20, 1980s
The DEC-20 and its TOPS-20 operating system had a huge impact on what was to become the Internet. As early as 1977 it supported several distinct networking methods, including ARPANET (which was to become the Internet), DECnet, and RJE connections with IBM mainframes. Users accessed it with text terminals via serial ports or modems, or by Telnet or DECnet network connections. There were no graphical user interfaces yet (except at Xerox PARC), but the DEC-20 had the most user-friendly command language ever known; you can see it today in the user interfaces of MS-DOS Kermit, C-Kermit for Unix and VMS, Kermit 95, and of course in DEC-20 Kermit itself. The DEC-20 supported a proliferation of programming languages, math and statistical packages, etc etc, and email was practically born on the DEC-20, as were spell checkers, and on and on; for greater detail see this page.

In case you're curious about Kermit-20's version number, it's in DEC-20 versioning notation: MAJOR.MINOR(EDIT)‑WHO.

UPDATE: Version 5.3(277)-5 of 30 August 2024

Version 5.3(277)-5 incorporates additional features, enhancements and fixes since the minor release of 5.3(255)-5 in March of this year (29-Mar-2024). These are as follows and are further described HERE.

[256] /PARITY switch to ECHO for batch and other testing purposes
[257] Teach INPUT to respect parity, if asked
[258] SET PARITY action /ABORT, /PROCEED
[259] Fix a few arcane bugs in the C constant expression expander
[260] Fix DEFINE to work (again) with ESCAPE and PARITY
[261] Decrease repeated parity error messing
[262] Remove the legacy INPUT code that uses BIN%'s
[263] Stop using a SIN% for a line at a time read
[264] Toggle session logging from command level
[265] Fix TTY Input Buffer full when doing a TRANSMIT on a PTY
[266] Turn TRANSMIT and CAPTURE increasingly hairy switches in SET parameters
[267] Give effective data rate at end of TRANSMIT
[268] CAPTURE is no longer hidden. Further document it
[269] Review, update and correction of all help text
[270] Enhance default for SET PROMPT to give some extra useful information
[271] Fix TVT setting; it gets overwritten by automatic processing
[272] SET TRANSMIT DEFAULT-PROMPT
[273] SET TRANSMIT CASE OBSERVE/IGNORE
[274] Fix SET INPUT to better support DEFINE
[275] SET TRANSMIT SETTINGS-DEFAULTS for backwards compatibility
[276] Fix indirect recursion crash when reporting an error with REALLY short packets
[277] Variable blips (so we don't get clobbered for very small packets)
Kermit-20-Testing-Battery-5.3(277)-5 Updates
Updated Help

Current documentation includes greater detail on the edits listed above.

The source code and documentation are available in two archive formats, both compressed with gzip:

Unix tar archive k20mit-277.tar.gz 25881083 bytes Listing
Tap archive of DEC-20 Dumper tape k20mit-277.tap.gz 15837891 bytes Listing  

Furthermore the uncompressed individual source and documentation files are available in the following directories:

Source code 20 files (.mac, .ctl, .log)
Documentation 10 files (testing battery, announcement, 1988 user guide, 1985 Kermit book)  
Data 26 files of different types used by the test suite
Testing Test suite and logs

UPDATE: Version 5.3(255)-5 of 03 March 2024

Version 5.3(255)-5 incorporates additional features, enhancements and fixes since the minor release of 5.3(248)-5 in November 2023. These are as follows and can be identified in the code with the edit number as the prefix of a comment.

[249] Implement relative directory connect
[251] Emit new directory name when either wildcarded structure or directory change
[252] Fix some of the directory parsing logic to properly handle .CMDEV and .CMDIR
[253] Fix ^A to print the number of pages sent and the total; was always omitting total
[254] Implement CDUP, generic 'G'
[255] Make CWD accept ".." as token for Unix, DOS, Windows, and OS/2 CDUP

Current documentation includes greater detail on the edits listed above.

The source code is available in two archive formats, both compressed with gzip:

Unix tar archive k20mit-255.tar.gz 13063956 bytes Listing
Tap archive of Dumper tape k20mit-255.tap.gz 10202169 bytes Listing  

Furthermore the uncompressed individual source and documentation files are available in the following directories:

Source code 20 files (.mac, .ctl, .log)
Documentation 10 files (testing battery, announcement, 1988 user guide, 1985 Kermit book)  
Data 26 files of different types used by the test suite
Testing Test suite and logs

UPDATE: Version 5.3(248)-5 of 28 November 2023

Version 5.3(248)-5 incorporates additional features, enhancements and fixes since the minor release of 5.3(235)-5 in June of this year (11-Jun-2023). These are as follows and can be identified in the code with the edit number as the prefix of a comment.

[236] Implement /FORKLESS connections for DECnet NRT’s
[237] Implement the RETURN keyword to stop processing a TAKE file
[238] Enhanced NRT disconnect messages
[239] Use .HPTOD (High Precision Time of Day) if the monitor has it HPTIM% .HPTOD
[240] When logging to a disk file, display the number of bytes written
[241] Handle potential case of incorrect data being sent for CWD
[242] ECHO /TRANSACTION /DEBUG /SESSION Switches
[243] Fix off by one error which appended NUL characters in packets
[244] Fix server FINISH does not close all logs
[245] Rewrite MOVSTU to use EXTEND instead of loop
[246] Additional C escape sequences: \O and \U
[247] Rewrite IAC handling to use EXTEND instead of loop
[248] Fix incorrect string lengths being returned by C constant expansion

Kermit-20-Testing-Battery-5.3(248)-5 Updates and new Batch Tests:

Documentation includes more detail on the above list.

The source code is available in two archive formats, both compressed with gzip:

Unix tar archive k20mit-248.tar.gz 13063956 bytes Listing
Tap archive of Dumper tape k20mit-248.tap.gz 10202169 bytes Listing   Log 

Furthermore the uncompressed individual source and documentation files are available in the following directories:

Source code 20 files (.mac, .ctl, .log)
Documentation 10 files (testing battery, announcement, 1988 user guide, 1985 Kermit book)  
Data 26 files of different types used by the test suite
Testing Test suite and logs

UPDATE: Version 5.3(235)-5 of 11 June 2023

This version isn't installed yet, but a new directory structure has been set up to accommodate multiple versions and this version, as well as the 2006 version (as well as earlier versions if they can be found), will be filled in shortly. — fdc, 15 June 2023
From Tom DeBellis: version 5.3(235)-5 incorporates all fixes since the major release of 5.3, Edit 230 in January of this year. These are as follows and can be identified in the code with the edit number as the prefix of a comment.

Documentation includes more detail on the above list. All regression tests have passed except for Tops-10 because of some local networking issues.

The source code is available in two archive formats, both compressed with gzip:

Unix tar archive kermit20.tar.gz 13063956 bytes Listing
Tap archive of Dumper tape kermit20.tap.gz 10202169 bytes Listing  

Furthermore the uncompressed individual source and documentation files are available in the following directories:

Source code 20 files (.mac, .ctl, .log)
Documentation 10 files (testing battery, announcement, 1988 user guide, 1985 Kermit book)  
Data 26 files of different types used by the test suite
Testing Test suite and logs

Major new release: Version 5.3(230)-5 of 2 April 2023

Tom DeBellis and CU20A
Tom DeBellis with DEC-20, 1986
In April 2023, Tom DeBellis — another former Columbia U Computer Center systems group staffer — released a major new version that can be used on the many emulated DEC-20s that are still chugging away as virtual machines within Linux, Windows, and other modern platforms. The original single module had to split into sixteen modules to accommodate all the new stuff within the DEC-20s memory model. In Tom's words:
Version 5.3 is the first major release of Kermit-20 in nearly two decades and represents approximately a year of development for the following functionality: A large amount of restructuring has been done with an eye towards future development, instrumentation, debugging and overall robustness.

Here's the full announcement:

Rich text (PDF) announcement.pdf     43 pages
Plain text (ASCII) announcement.txt 2400 lines

The source code is available in two archive formats, both compressed with gzip:

Unix tar archive kermit20.tar.gz 13063956 bytes Listing
Tap archive of Dumper tape kermit20.tap.gz 10202169 bytes Listing  

Furthermore the uncompressed individual source and documentation files are available in the following directories:

Source code 20 files (.mac, .ctl, .log)
Documentation 10 files (testing battery, announcement, 1988 user guide, 1985 Kermit book)  
Data 26 files of different types used by the test suite
Testing Test suite and logs

Kermit-20 5.1(186) of 6 January 2006

Bill's last version was revived (by me) in 2001 with the addition of long packets and buffered packet input for faster file transfer into and out of emulated DEC-20s, which might not include ARPANET support (in the sense that they have a TCP/IP stack and FTP or TELNET clients and servers), but might still be accessible to incoming Telnet connections. Long packets were never done for Kermit-20 before because the PDP-11/40 RSX20F front end could not tolerate them. Emulated DEC-20s (and DEC-20 Telnet servers), however, have no such limitation. (This improvement would, of course, also benefit file uploads to real DEC-20s via network connections, but by 2006 only a couple real DEC-20s were still in operation.)

Kermit-20 5.1(186) is the last single-source-file release; it is archived at Columbia University. Since all DEC-20s come with the MACRO-20 assembler, it is distributed in source-code form. Here are the files you need:

k20mit.mac
The DEC-20 Kermit MACRO-20 source file. Transfer this to the DEC-20 in text mode and rename to KERMIT.MAC, LOAD KERMIT, SAVE (see k20mit.txt for details). NOTE: Your Web browser might not know what to do with a .mac file; tell it to "Save as...", otherwise it might try to play it or something.

k20mit.doc
The Kermit-20 chapter of the 1988 Kermit User Guide in plain-text form. Your Web browser might think this is a Microsoft Word document because its name ends in .DOC. Transfer in text mode, rename to KERMIT.DOC. (Plain-text files were .DOC files for decades before MS Word came along.)

k20mit.ps
The Kermit-20 chapter of the 1988 Kermit User Guide in PostScript format. This one can be transferred in either binary or text mode. Rename to KERMIT.PS.

k20mit.pdf
The Kermit-20 chapter of the 1988 Kermit User Guide in PDF format. Clicking on this link in any graphical Web browser should produce the expected results.

k20mit.txt
Update notes for Kermit-20 5.1.

https://www.columbia.edu/kermit/archivefiles/dec20.html
Access to individual DEC-20 Kermit files (source, code, documentation, announcements, etc).

Kermit for MIT's ITS Operating System

In January 2017, Lars Brinkhoff informed me of a version of Kermit in Maclisp for ITS, MIT's Incompatible Timesharing System. It was adapted in 1988 from a Common Lisp version (not sure which one yet) by Jonathan Rees of Scheme48 fame. Here are the files:

kermit.170
The main Kermit program

kermit.info
EMACS Info file for Kermit (original name: kermit.4).

kermit.dumper
Kermit dumper (needed for Maclisp)

mlsub.17
Library of macros and subroutines for Maclisp

Lars notes, “I don't have the file AI: MATH; COMMON > which is referred to in lines 16 and 40 of kermit.170“. If anybody else has a copy, please let me know.

Kermit for Other PDP-10 Operating Systems

To my knowledge, no Kermit programs were ever written explicitly for TENEX, WAITS, or TYMCOM-X, but since Kermit programs were written in various LISP dialects, including Common Lisp, which presumably would have worked anywhere that Common Lisp was available. (The Emacs LISP version wouldn't have helped because PDP-10 EMACS was based on TECO, not LISP, and I don't think there was ever a TECO Kermit either!)

Older releases

These are some versions prior to 5.1(186) that I was able to exhume. Each one is a single self-contained source file that depends only on monsym.mac and macsym.mac, which are standard parts of TOPS-20, and also cmd.mac (COMND JSYS interface), which — if I recall correctly — was a "goodie"; if you don't have it you can download it from the table:

Kermit-20 5.1(182) 2003-08-04
Kermit-20 5.1(180) 2001-08-06
Kermit-20 5.1(179) 2001-01-29
Kermit-20 3.0(30) 1983-06-23
cmd.mac 1981-06-10

DECSYSTEM-20 Kermit / kermit@kermitproject.org / 1981-2023