Skip to content

Instantly share code, notes, and snippets.

@tuklusan
Last active November 30, 2021 05:35
Show Gist options
  • Save tuklusan/90dd3d59fd3e43e65abaea8e79079e14 to your computer and use it in GitHub Desktop.
Save tuklusan/90dd3d59fd3e43e65abaea8e79079e14 to your computer and use it in GitHub Desktop.
TOPS-10 Commands Cheatsheet Survival Guide : PDP-10 KS10 O/S. For TOPS-20 see https://supratim-sanyal.blogspot.com/2019/03/visiting-fountain-of-computing-folklore.html
Login
=====
login username password - no password needed on operator console
A "#" response means its asking for username again (something was wrong in last attempt)
Logout
======
kjob
Shutdown
========
Login as 1,2
Run OPR: .r opr
Kill system: OPR> set ksys now
Wait for "-- KSYS processing completed --"
Exit OPR: OPR> EXIT
Logoff: .kjob
Exit Emulator: ^E
Account Management
===================
.R REACT
Then use INSERT to add user, CHANGE to modify user etc.
Type ? for help, pretty obvious
For new user, go into REQUIREMENTS, and then NO CHANGE and DONE; this
will not force a password change on logon by new user
CREATING A TEXT FILE
====================
.create file.ext - launches LINED (line editor) and lets lines be typed-in or pasted
* - LINED prompt for ready for commands
*I - "I" command at * prompt to insert lines
line1 - Now we can enter content line by line
line2
...
<esc><esc> - End of input; displays as $$
*EX<esc><esc> - Write out file and exit, displays as EX$$
. - Back at monitor prompt (.)
CHANGING DIRECTORY
==================
Run the SETSRC program.
.R SETSRC
*cp [10,7,MON] - Set default directory to [10,7,MON]
*^C - Ctrl-C to Exit
.DIR - Displays directory of [10,7,MON]
To change back to home directory:
*cp [,]
*^C
.
File Permissions (Protection)
=============================
<xyz>: three octal numbers - owner, project number (i.e. group), world
x: 1 or 0 for full access
y,z: 0=full access, 5=read+execute,6=execute only; 7=no access
To set permissions on existing file, this example seems to work:
.copy sys:notice.txt<055>=sys:notice.txt
.dir sys:notice.txt
NOTICE TXT 1 <055> 26-Nov-21 DSKA: [1,4]
The PROTECT command sets permissions directly, for example:
Use PROTECT to change the protection code of TEST.REL to <555>:
.PROTECT TEST.REL<555><RET>
FILES RENAMED:
DSKC:TEST.REL
NETWORK FILE COPY
=================
USE "R NFT"
FOR PUBLIC FAL SERVERS:
.R NFT
*DIR QCOCAL::
QCOCAL::DUA2:[FAL$SERVER]9600BPS.C.2
QCOCAL::DUA2:[FAL$SERVER]9600BPS.EXE.1
...
...
Total of 60 files
*COPY HELLOC.C=QCOCAL::HELLO-C.C
DSKA:[1,2]HELLOC.C <= QCOCAL::DUA2:[FAL$SERVER]HELLO-C.C.1
Total of 26 words in 1 block in 1 file at 2580 baud
*^C
.
.R NFT
*copy qcocal::aclock.c
DSKA:[1,2]ACLOCK.C <= QCOCAL::DUA2:[FAL$SERVER]ACLOCK.C.1
Total of 2456 words in 20 blocks in 1 file at 73646 baud
FOR PASSWORD-PROTECTED ACCOUNTS:
.R NFT
*DIR NODENAME::/USER:USERNME:ACCOUNTNAME:PASSWORD
*dir mim::hecnet:fix*.*/user:guest::guest
*COPY X.C=QCOCAL::/USER:USERNME:ACCOUNTNAME:PASSWORD X.C
DSKA:[1,2]X.C <= QCOCAL::DUA1:[USERNAME]X.C.2
Total of 11 words in 1 block in 1 file at 1114 baud
*copy nodnam.cmd=mim::hecnet:FIX.T20/user:guest::guest
DSKA:[1,2]NODNAM.CMD <= MIM::DU1:[DECNET]FIX.T20.123
Total of 6299 words in 50 blocks in 1 file at 26939 baud
*
Account name can be empty:
*DIR QCOCAL::/USER:USERNAME::PASSWORD
*COPY X.C=QCOCAL::/USER:USERNME::PASSWORD X.C
Another example:
.r nft
*copy hello.for=qcocal::hello-for.for
DSKA:[1,2]HELLO.FOR <= QCOCAL::DUA2:[FAL$SERVER]HELLO-FOR.FOR.1
Total of 40 words in 1 block in 1 file at 4162 baud
*^C
.
Teco editor
===========
Ref: http://www.bitsavers.org/www.computer.museum.uq.edu.au/pdf/DEC-10-UTECA-A-D%20decsystem10%20Introduction%20To%20TECO%20(Text%20Editor%20And%20Corrector).pdf
Since TECO is a character-oriented editor, it is very important that the user understand the concept
of the buffer pointer. The position of the buffer pointer determines the effect of many of the editing
commands.
- make filename.ext - creates a file to edit
- teco filename.ext - edits existing file, creates .BAK on save
- * - main prompt
- Esc - "ALTMODE" key, Teco responds with "$"
- *command<esc><esc> - single command
- *command1<esc>command2<esc><esc>
- multi-command
- Delete - "rubout", echoes the character "rubbed out"
- ^G^G - discard entire current command line
- <esc> - also ends string arguments; e.g.
*ISOMETHING<esc><esc> - I=insert, SOMETHING=string, <esc>=end of string, <esc>=end of command
Teco works with "pages" in a buffer. At launch, first page is loaded automagically
into buffer.
- A - Append; appends next page to buffer
Increases buffer size with a message like "3K CORE" if needed
- AA<esc><esc> - Append next two pages to buffer
- Y - Yank; Clears buffer, Loads next page into buffer
- Y<esc><esc> - !!! Deletes entire current buffer and loads next page !!!
Buffer Pointer
The buffer pointer is simply a movable position indicator. It is always positioned between two characters in the editing buffer, or before the first character in the buffer, or after the last character in
the buffer. It is never positioned "on" a particular character, but rather before or after the character.
The pointer may be moved forward or backward over any number of characters.
- Buffer pointer movement commands
- End all commands with <esc><esc>
- J - Before first char in buffer
- ZJ - After last char in buff
- C - One character over
- nC - n characters over (e.g. 10C)
- R - One character back
- nR - n characters back (e.g. 7R)
- L - Line Movement commands
- 0L - beginning of current line
- L - (same as 1L) beginning of next line
- -L - (same as -1L) beginning of previous line
- nL - beginning of (current+n) line
- -nL - beginning of (current-n) line
- *J3L<esc><esc> - move pointer to before first character in buffer and move
pointer down by 3 lines to before first char on line 4
- *ZJ-2L<esc><esc> - moves the pointer to the beginning of two lines up in the buffer
The TYPE command
The T command never moves the buffer pointer.
- *T - Type from current pointer to end of line
- *nT - Type n lines from current pointer
- *0T - Type from beginning of current line to pointer
- *0LT - move pointer to beginning of line and type whole line
- *0TT - print entire line, don't move pointer
Delete commands
Remember: Buffer pointer is in middle of two characters.
- *D - Delete 1 char RIGHT
- *-D - Delete 1 char LEFT
- *nD - Delete n chars right
- *-nD - Delete n chars left
- *K - Delete from pointer to end of current line (1st LF)
- *nK - Delete from pointer to nth following LF
- *HK - Delete entire buffer!
Search
- *S<searchstring>
- *AAAA - keep loading pages and searching
- When found, response is just a "*", enter *0TT to see the line
- Buffer pointer is after the last character of the located string
Save and exit
- *EX<esc><esc>
Quit (don't save)
- ^C^C - Ctrl-C, Ctlr-C
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment