TOPS-20, Commandline parsers & COMND% JSYS



I've collected several texts that show some piece of the TOPS-20 environment I find interesting in regard to user interfacing and the related interactive command parsing capabilities of the TOPS-20 system. The original reference page says it best:


Parses one field of a command that is either typed by a user or contained in a file. When this monitor call is used to read a command from a terminal, it provides the following features:

1. Allows the input of a command (including the guide words) to be given in abbreviated, recognition (ESC and CTRL/F), and/or full input mode.

2. Allows the user to edit his input with the DELETE, CTRL/U, CTRL/W, and CTRL/R editing keys.

3. Allows fields of the command to be defaulted if an ESC or CTRL/F is typed at the beginning of any field or if a field is omitted entirely.

4. Allows a help message to be given if a question mark (?) is typed at the beginning of any field.

5. Allows input of an indirect file (@file) that contains the fields for all or the remainder of the command.

6. Allows a recall of the correct portion of the last command (i.e., up to the beginning of the field where an error was detected) if the next command line begins with CTRL/H. The correct portion of the command is retyped, and the user can then continue typing from that point.

7. Allows input of a line to be continued onto the next line if the user types a hyphen (-) immediately preceding a carriage return. (The carriage return is invisible to the program executing the COMND call, although it is stored in the text buffer.) The hyphen can be typed by the user while he is typing a comment. The comment is then continued onto the next line.

The COMND call allows the command line that is input to contain a comment if the comment is preceded by either an exclamation point or a semicolon and the previous field has been terminated. When the COMND call inputs an exclamation point after a field that has been terminated, it ignores all text on the remainder of the line or up to the next exclamation point. When the COMND call inputs a semicolon after a field that has been terminated, it ignores all text on the remainder of the line.

When an indirect file is given on the command line, it can be given at the beginning of any field. However, it must be the last item typed on the line, and its contents must complete the current command. The user must terminate his input of the indirect file (after any recognition is performed) with a carriage return. If he does not terminate his input, the message ?INDIRECT FILE NOT CONFIRMED is output. Also, if the user types a question mark (instead of the file specification of the indirect file) after he types the @ character, the message FILESPEC OF INDIRECT FILE is output. The indirect file itself should not contain an ESC or carriage return; if these characters are included, they will be treated as spaces. The contents of the indirect file are placed in the text buffer but are not typed on the user's terminal.


TOPS-20 related texts

a.f.c.newsgroup/COMND.emails.txt.gz (246KB)

A collated list of emails and news messages, answering my questions about the TOPS-20 COMND% JSYS system call and the TOPS-20 user interface behaviour.

000-intro-unix-sw.txt (8KB)

A Quick Introduction to TOPS-20 File Specifications (including some sample command entry sessions)

19991210_TOPS_20_command_interpreter.txt.gz (13KB)

a whole news-thread from a.f.c. (alt.folklore.computers) from 1999 about: "TOPS-20 command interpreter: What can people tell me about this thing?"

2022.txt.gz (8KB)

the manual page for 2022. As it says: "2022 is a TOPS-20 front-end command parser for the System 1022 data base management system from Software House. Through use of TOPS-20's COMND% jsys 2022 provides escape recognition and the "?" help feature for nearly all 1022 commands. The only commands NOT implemented in 2022 are those commands specific to TOPS-10 or those used exclusively within PL1022 or report programs. This session will cover the following topics:

I. Introduction

II. 2022 / 1022 Differences

III. Ordering 2022 (and what you get)

IV. Modifying 2022

V. Known Bugs

8506-1.txt.gz (10KB)

a posting to net.sources, dated 1985, containing a manual page for a CP/M lib which offers "TOPS20 style parsing". Thanks to ... (sorry, I don't have the related email handy while updating this stuff :-( ...) for providing the related archive (you can depack it with any ARC compatible program, e.g. PKXARC). 

comnd004.arc (71KB)

The CP/M lib which offers "TOPS20 style parsing" as described above (you can depack it with any ARC compatible program, e.g. PKXARC). 

9.txt (1KB)

describes the (apparently discontinued) mailing list for CCMD (a TOPS-20 commandline parsing library written in pre-ANSI C): Info-CCMD@CUNIXF.CC.COLUMBIA.EDU

galaxy.txt.gz (13KB)

a thread from alt.sys.pdp10 and a.f.c. about "What was TOPS-10 "GALAXY"?" which is about TOPS-10 (and a bit of TOPS-20 aside) names.

jsysinfo.tar.gz (169KB)

compressed archive containing all 4 large .INFO files containing each and every JSYS system call. Including the COMND% JSYS call :-)

mm-0.90.tar.gz (478KB)

the archive of Columbia MM (which includes the CCMD sources), written in pre-ANSI C. By Howard Kaye. (10KB)

a Y2K patch from Howard Kaye for Columbia MM and CCMD, written in pre-ANSI C.

Origins and Development of TOPS-20.htm (105KB)

Local copy[1]:

Origins and Development of TOPS-20.htm (105KB)

text on the origins of TOPS-20. Very well written. A must for computer history buffs like me ;-)

(25/aug/2000: whoops, messed up: should be only a link to Mr. Murphy's site. If the link fails, please contact me.)

paper.t20.gz (42KB)

Local copy[1]:

paper-t20.txt.gz (42KB)

(apparently the original text version of "Origins and Development of TOPS-20.htm") text on the origins of TOPS-20. Very well written. A must for computer history buffs like me ;-)

pdp-10.glossary.txt (7KB)

Jargon file for PDP-10. Definitely NOT 'The Jargon File'. Just a glossary of PDP-10 related terms. (33KB)

excellent INFO file describing PDP-10 assembly and MACRO-20. Required if you try to read the MAC assembly files found at The Trailing Edge website.

SP2130SC.txt.gz (10KB)

its a text for: "PRODUCT NAME: TOPS-20AN, Version 5.1, SPD 21.30.04, System Software Package for DECSYSTEM-2040/2060". DESCRIPTION: The TOPS-20AN (Advanced Research Projects Agency [ARPA] Network) System Software Package is a multi-user, multilanguage, interactive operating system with multistream batch capabilities. It is packaged with each T-series system. The TOPS-20AN System Software Package includes:

  • TOPS-20AN Operating System
  • RSX20F Operating System
  • EXEC, the TOPS-20AN command language processor
  • EDIT, line-oriented text editors
  • EDT and TV, the TOPS-20 video character-oriented text editors
  • GALAXY, spooling/batch system
  • MACRO-20 Assembly Language
  • LINK overlay loader
  • System utilities
  • User utilities

tech-kern.txt (1KB)

a little rant about mmap(), VMS and TOPS-20.

a short text on "The Tee in TCSH".



ccmd/ccmd-intro.txt (3KB)

introductionary text on: "CCMD, An Implementation of the TOPS-20 COMND Jsys in C" by Andrew Lowry and Howard Kaye, Center for Computing Activities, Columbia University

ccmd/ccmd.1.txt (4KB)

formatted man page as delivered with the CCMD library.

ccmd/ (14KB)

programmers reference documentation that came with the CCMD library. Please note that I (automatically) updated any fields whose names have been 'extended' beyond the original 5 of 6 alphanumeric characters. I *hate* short, cryptic names. So this now is more or less the reference for the (almost) ANSI-C CCMD port of mine. Sorry about the crappy formatting; that's due to the automated updates.

ccmd/cmnotes.txt (4KB)

textfile listing my thoughts during development/porting of CCMD. Also lists quite a few things that should be in the TODO list really.

ccmd/comnd.txt.gz (13KB)

the original, preformatted TOPS-20 COMND% JSYS reference page.

ccmd/README (1KB)

short description of the original CCMD library: "CCMD, An Implementation of the TOPS-20 COMND Jsys in C"

ccmd/todo.txt (1KB)

the original TODO list. I guess I've quite some things to add, though most of those are in the CMNOTES.TXT file.

ccmd/ (387KB)

the new ANSI-C (well, almost) CCMD library port by Insh_Allah (that's me). The original can be found in the original MM source archive.

This is the version frozen at August 12th, 2000 as I decided to request permission to change the original Columbia University License to a OpenSSL/Apache style Open Source license so I could put this software in my generic tool bag and use it for both free and commercial projects.

ccmd/ (387KB)

the ANSI-C TOPS-20 COMND JSYS look-alike library by Insh_Allah (that's me) derived from CCMD by Howard Kaye et al. The original can be found in the original MM source archive.

This will always be the latest version. Please bear in mind that this is (hopefully) an ongoing development project so expect documentation to lag behind. I guess I'm a Real Hacker after all. RTFS and all that ;-)

WARNING: don't expect this to be plug-in compatible with the original CCMD by Howard Kaye at al.


CCMD - Licensing issues

CCMD has been developed by Howard Key et al at the Columbia University. Therefore the software has been released under the Columbia University license:

My intent is to have a readily available TOPS-20 COMND JSYS look-alike (extended) interactive commandline parser library which anybody - including me ;-) - can use for any project they're participating in, regardless of the free or commercial status of the project itself. In other words, I'd like to have such a facility right here on my website, ready to download and plug into any piece of software which might benefit by having a user-friendly interactive commandline interface. Even if you only want to use it as a cool non-interactive commandline parser only, you should be able to grab this thing, depack it and plug it in.

As a result I've got several options to achieve my goal:

Right now I'm wavering in the middle between these two ways to approach my goal, trying to contact the right persons at Columbia University and get a 'definitive statement' on my request for permission to change the Columbia License to a Apache/OpenSSL OpenSource type license for my CCMD derivative. Of course I'd like to get an OK on my request, but also when I get a 'No' on this one, I'll know my options (i.e. scratch CCMD).

So hold your breath (like I do ;-) ) and wait for the results. This page will be updated as future settles into history. There will be an OpenSource licensed COMND JSYS look-alike C library available here no matter what happens. The only question is when. And if I can use an existing (large) base or if I need to start from scratch.

I know, I could always resort to the CP/M COMND004.ARC library (it's license seems to match my requirements) and convert and extend that one. It must be something emotional inside my gray soup which is driving me to request a license change and take the tough route to salvation. I don't know. Maybe I'm just fed up with myself starting from scratch every time I fall in love with some pet project. I want something 'cool' and CCMD definitely hits the mark where 'coolness' is considered, at least in my not-so-humble opinion ;-) . Converting the first few code sections to ANSI C had me ranting and raving, but that's just habitual with me. At least it felt like a sound product to me, so that's probably the reason why I think I couldn't do a better job on the core.

Ah, I'm ranting once more, so I'll stop right here and leave you. Maybe I'll just go and bash away on a couple of 'huggability factors' on the fringes of CCMD while I wait for absolution ;-)


Shameless Copyright Notice: These pages are (c) copyright Gerrit E.G. Hobbelt a.k.a. "Insh_Allah", 1997 - 2001. Any brand names and product names included in these pages are trademarks, registered trademarks, or trade names of their respective holders. Any works of art included in these pages are (c) copyright their respective creators or their representatives or (former) employers. etcetera etcetera... Phew! Do you have any idea how boring writing stuff like these notices can be?! Very, indeed! Well, if you feel like using some stuff you've found on this site, I won't mind. Before using anything though, consider if you want to stay a good, sincere, God-fearing and law-abiding citizen or turn to the Dark Side... Yeah, well, I reckoned so... Have fun now!