RFC 216
Telnet Access to UCSB's On-Line System
RFC 216 ๐ Telnet Access To UCSB's Online System
okay bestie, RFC 216 is from September 1971, written by J. White at the UCSB Computer Research Lab. It's filed under categories D.3 and G.3, and it's NIC number 7546. The header doesn't list anything it obsoletes or updates, so there's no drama there ๐
I. Motivation โจ
okay so the NWG adopted a Telnet protocol, and UCSB built a teletype-compatible interface to their Online System (OLS) that follows it ๐ฅ๏ธ This Server Telnet answers connection requests that User Telnets send to socket number 1, host address 3. OLS isn't really a teletype system, and its biggest strength is its graphical display stuff. still, enough of it survives the Telnet transformation to make the whole thing worth building ๐
II. Limitations ๐
ngl, this part is a little sad. In this Telnet-style version of OLS, all curvilinear display the user makes on Levels II and III, Real and Complex, gets ignored by the System, so it never comes back through the Net. Same deal for special user-created characters. You can still build and store them, but their display gets suppressed, both while you're making them and later when you invoke them from the Type level ๐ญ
Everything else the System displays gets relayed to you intact, though sometimes with a stylistic transformation first. For example, Greek characters show up as lower-case a-z. All of these transformations are described in detail in this document ๐
Then there's the fixed-screen stuff. Some parts of the System (the operators that edit user programs are the main ones) assume you have a fixed-screen display, and they act weird in a Telnet environment. On a fixed screen, the System can "remember" where a chunk of text was and jump back to underscore it. But Telnet's virtual teletype is a continuous medium that marches forward relentlessly, so that trick breaks. The underscoring doesn't get relocated. It just shows up on the current line, starting in the next available character frame ๐ฆ
OLS normally assumes you have the specially designed double keyboard from Figure 1. This document defines conventions that let a Telnet user simulate that keyboard. In particular, it gives you a way to designate keys on the upper, or operator, keyboard โจ๏ธ
Figure 1. OLS Keyboard. [Please view the PDF version of this RFC.]
III. System Documentation ๐
This document has three purposes:
- to describe the means by which a Telnet user simulates an OLS keyboard,
- to describe the transformations applied to output generated by the System, and
- to enumerate those aspects of the System which are unique to or behave differently for Network (Telnet) users.
Just so we're clear, this is not a user's manual for OLS ๐ โโ๏ธ There is one, and it's on file with the NIC. There should also be a copy in the NIC collection at each Network site, and you should check with your Station Agent. The manual is titled "UCSB On-Line System Manual" [NIC 5748], and its contents are current as of 1 January 71. A revision is being prepared and will be distributed when it's ready. Two tutorial manuals for OLS subsystems are coming too: one for MOLSF (Mathematically-Oriented Language Single-Precision Floating-Point) and one for COL (Card Oriented Language). COL is already published and being sent to the NIC for distribution, and MOLSF is nearly finished ๐
The third OLS subsystem, NET, has already been documented in two RFCs, which is so iconic of it ๐ฅ They are "Network On-Line Operators" [21 April 71, RFC 121, NIC 5833] and "A User Telnet--Description of an Initial Implementation" [9 August 71, RFC 206, NIC 7176]. NET currently includes operators for system-call-level interaction with UCSB's NCP, a User Telnet, and an operator (invoked by ID on Level II) that returns the status of Network hosts ๐ง
If you have questions, the Computer Center staff are happy to help Network users ๐ซถ There's an OLS consultant at (805) 961-4044. Questions about OLS, including stuff specific to using the System over the Network, can go to Jim White, UCSB's Technical Liaison, at (805) 961-3454. If he's not around, you can leave a message at the Computer Center Office at (805) 961-2261.
IV. System Access ๐
the Network user is encouraged to explore the System, and you're invited to do so with these accounting parameters:
User Number: 196
Id Number: 57372
User Name: ARPA
Problem Name: (affiliation)-(name)
in 16 characters or less
(e.g., UCSB-White)
this kind of use isn't billed ๐ค Production users are asked to set up their own accounts with the Computer Center at (805) 961-2261, and those accounts are billed according to the rate structure in effect at the time.
V. Software Structure ๐
This document describes a Network front-end to the Online System. It's logically separate from OLS itself. The front-end is called NETOLS from here on. NETOLS always answers connection requests directed to socket 1. When a Network user contacts it, NETOLS does the Network work needed to set up a duplex connection with that user. The number of these duplex connections, and so the number of Network users at once, is capped by an assembly parameter whose current value is five ๐
Before the Network connection is set up, NETOLS gets a port into OLS for the user. There are sixty-four of these ports, and local, dial-up, and Network users all share them. If none are free, NETOLS aborts the connection sequence ๐ญ
Once a port is secured and the Network connection is up, NETOLS pushes the _SYST_ key for you by sending OLS the 8-bit code for that key. That starts a login sequence, and you get these lines:
UCSB ON-LINE SYSTEM
ENTER USER NUBMER
reply with your user number. From that moment until the Network connection ends, NETOLS's sole function is being an interpreter. It takes your input and makes it meaningful to OLS, and it's also the point where curvilinear and special-character display gets thrown out ๐
When you break your Network connection to NETOLS, NETOLS logs you out of OLS for you if you haven't already. It does this by pushing _SYST_ _DOWN_, the same way it pushed the initial _SYST_. Then the OLS port you were using is released and goes back to the pool for other users ๐ฆ You can also log out of OLS and back on without breaking the Network connection. NETOLS doesn't care, since that action is transparent to it and it doesn't attach any special meaning to the key sequence that does it.
VI. Virtual OLS Keyboard โจ๏ธ
A major job of NETOLS is mapping between Telnet characters and the keys on an OLS keyboard (Figure 1). The lower, or operand, portion is pretty easy, since it's basically a standard typewriter keyboard ๐ Most of its keys map one-for-one onto Telnet characters. Upper-case letters map to letters, and lower-case letters and punctuation map to themselves. Every one-for-one mapping is in Figure 2. Here's how one line of that figure reads:
For ['half arrow' - see the PDF version of this RFC]:
The key labeled ['half arrow'] (meaning logical not) on the lower
portion of an OLS keyboard is struck by causing the user's User
Telnet to transmit '~' (tilde).
Now, the lower keys that aren't in Figure 2, plus all the keys on the upper keyboard, are what this doc calls non-standard keys. You type these in a specific way. Each one gets a character string called its name. Usually the name is the same as its label in Figure 1. For example, the name of the _SIN_ key is 'SIN'. (In the OLS User's Manual, upper-keyboard keys are shown by underscoring their labels, so you can tell _SIN_ apart from the three keys 'SIN'. Tricky, I know ๐ญ)
Here's the rule: every non-standard key is struck by typing its name (or any unique abbreviation of it), preceded by a special prefix character and followed by a space ๐
NETOLS reads the prefix, the name, and the space, then turns them into a single 8-bit code and forwards that to OLS ๐ง
The default prefix is the semi-colon (';'). It was picked because touch typists rest on it, so it's one of the home keys ๐ You can change the prefix to any character listed in Figure 2. The procedure for doing that is in Section VII-B. If you ever need to send the prefix character straight through NETOLS to OLS, just type it twice in a row. So with the default prefix, ';;' turns into one semi-colon and gets relayed to OLS ๐ซถ
Every non-standard key name is listed in Figure 3. Here's how one line of that figure reads:
For _SIN_:
They key denoted _SIN_ in the OLS User's Manual (the trigonometric
function sine) is named 'SIN', and hence is struck by typing
'SIN', preceded by the prefix and followed by a space.
so yeah, that's the first chunk of the spec, and the keyboard is set up โจ (to be continued in part 2 ๐)
Okay so, with the default prefix ; in effect, SIN gets struck as ;SIN_ (the _ stands in for a space in these examples) ๐
Bestie, you can also shorten it to ;SI_ if you want, because the key is still uniquely identified ๐ฆ But going all the way down to ;S_ is a hard no ๐
โโ๏ธ A lone S can't tell apart all the keys whose names start with S. And you can type key names in upper or lower case, whatever vibe you're feeling โจ
As you type each character of a non-standard key's name, NETOLS checks it against its table of key names ๐ If what you've typed so far can't possibly become a real name, that latest character gets ignored and a ? gets echoed back ๐ So ;SJIN_ gets accepted as _SIN_. The sneaky J gets dropped with a question mark, and then JN_ goes through fine ๐ If you hit the terminating space and no single key is uniquely identified, you get a ? and the space gets ignored. So ;S_I_ is recognized as _SIN_, because the first space is
Figure 2. Keys With One-for-One Mappings
To Push (OLS Explanation) Send (Telnet Explanation)
0-9 Decimal Digits 0-9 Decimal Digits
A-Z Alphabetics A-Z UC Alphabetics
_-5 Greek Characters a-z LS Alphabetics
! Exclamation Mark ! Exclamation Mark
+ Plus Sign + Plus Sign
_ Underscore _ Underscore
- Minus Sign - Minus Sign
@ Commercial At @ Commercial At
/ Slash / Slant
# Number Sign # Number Sign
' Apostrophe ' Apostrophe
& Ampersand & Ampersand
$ Dollar Sign $ Dollar Sign
* Asterisk * Asterisk
% Percent % Percent
= Equal Sign = Equal Sign
TAB Horizontal Tab HT Horiz. Tab. (_[)
: Colon : Colon
; Semi-Colon ; Semi-Colon
[ Left Bracket [ Left Bracket
] Right Bracket ] Right Bracket
( Left Parenthesis ( Left Parenthesis
) Right Parenthesis ) Right Parenthesis
< Less Than < Less Than
> Greater Than > Greater Than
, Comma , Comma
" Quotation Marks " Quotation Marks
? Question Mark ? Question Mark
[half arrow] Logical Not ~ Tilde
| Logical Or | Vertical Line
BACK Backspace BS, DEt Backspace/Rubout
RETURN Carriage Return CR Carr. Return (_M)
SPACE Space SP Space
Figure 2. Keys With One-for-One Mappings
Wait, that caption was a mistake on my part. The figure caption belongs below the table, so the lines above are the caption for the first table. Let me fix that and carry on properly from here ๐ธ
Figure 2. Keys With One-for-One Mappings
To Push (OLS Explanation) The Key Name Is
[circle .] Multiply * 1
[circle +] Add +
[circle -] Subtract -
RETURN Carriage Return .
[circle /] Divide /
L0 Level 0 0
LI Level I 1
L II Level II 2
L III Level III 3
L IV Level IV 4
L V Level V 5
L VI Level VI 6
L VII Level VII 7
[circle +] Add ADD 2
ARC Argument ARG
ATAN Arc Tangent ATAN
BACK Backspace BACK 3
CASE Case CASE
[cent sign] Cent SignCENT
CLR Clear Tab CLEAR
CMPLX Complex CMPLX
CON Contract CON
CONJ Conjugate CONJ
CONV Convolve CONV
COS Cosine COS
CTX Context CTX
DEL Delta DEL
DIFF Forward Difference DIFF
DISPLAY Display DISPLAY
[circle /] Divide DIV 4
DWN Down DOWN
ENL Enlarge ENL
ENTER Enter ENTER
ERASE Erase ERASE
ESCAPE Escape ESCAPE
EVAL Evaluate EVAL
EXP Exponentiate EXP
NETOLS Command FULLDUPLEX 5
NETOLS Command HALFDUPLEX
NETOLS Command HELP
ID Identity ID
INV Invert INV
[down arrow] Line Feed Down LFDN
[up arrow] Line Feed Up LFUP
Figure 3. Keys Represented As Strings
To Push (OLS Explanation) The Key Name Is
LIST List LIST
LOAD Load LOAD
LOG Logarithm LOG
NETOLS Command LOGOUT
LS Left Shift LS
MAX Maximum MAX
MOD Modulus MOD
[circle .] Multiply MULT 6
NEG Negate NEG
[half arrow] Logical Not NOT 7
| Logical Or OR 8
PRED Predicate PRED
NETOLS Command PREFIX
PROD Running Product PROD
PT Point PT
PWR Power PWR
REAL Real REAL
REFL Reflect REFL
REPT Repeat REPT
RESET Reset RESET
RETURN Carriage Return RETURN 9
RS Right Shift RS
0-9 Superscript 0-9 S0-S9
SEL Select SELECT
SET Set Tab SET
NETOLS Command SHIFT
SIN Sine SIN
SORT Sort SORT
SQ Square SQ
SQRT Square Root SQRT
NETOLS Command STATE
STORE Store STORE
SUB Substitute SUB
[circle -] Subtract SUBTRACT 10
SUM Running Sum SUM
SYST System SYST
TEST Test TEST
TYPE Type TYPE
NETOLS Command UNSHIFT
UP Up UP
USER User USER
Figure 3 (cont'd) Keys Represented As Strings
- Alternate names for [circle .], [circle +], [circle -], RETURN, and [circle /] are
'MULT','ADD','SUBTRACT','RETURN', and'DIV', respectively. RETURN can also be represented as the single character CR (carriage return), as indicated in Figure 2. - An alternate name for [circle +] is
'+'. - Alternates for BACK are the single characters BS (backspace) and DEL (rubout), as indicated in Figure 2.
- An alternate name for [circle /] is
'DIV'. - NETOLS commands are explained in Section VII.
- An alternate name for [circle .] is
'MULT'. - An alternate for
'[half arrow]'is the single character'~'(tilde), as indicated in Figure 2. - An alternate for
'|'is the single character'[2 vertical lines]'(vertical line), as indicated in Figure 2. - An alternate name for RETURN is
'.'. RETURN can also be represented as the single character CR (carriage return), as indicated in Figure 2. - An alternate name for [circle -] is
'-'.
Notes for Figure 3.
Ignored (and a '?' echoed, indicating that 'S' alone is ambiguous).
At any point in the entry of a key name, the user can type either Altmode (ESC) or '?' ๐ NETOLS then figures out whether the characters already typed uniquely specify a key. If they do, it echoes the rest of that key's name and treats it as entered by the user ๐
A space typed afterward pushes the indicated key. If no single key is uniquely specified, NETOLS echoes Bel, which makes a bell run on many terminals ๐ It then waits for more of the key name from the user.
If, after at least one character of the key name has been entered and accepted by NETOLS (and before the terminating space is typed), the prefix is typed a second time, NETOLS discards all the characters already entered for that name. So ;CO;SIN_ is interpreted as _SIN_ ๐ซถ If a carriage return is typed in that same context, the initial prefix gets discarded too. That means ;CO%S (where % denotes carriage return) is interpreted as the lower-keyboard key 'S' ๐ง
VII. NETOLS Commands ๐
A bunch of commands to LETOLS are defined, and this section describes all of them โจ Each command is formatted the same way as the non-standard keys, which is why the command keywords show up in Figure 3. All of the conventions from Section VI apply to entering commands too. Just know that these commands are processed by NETOLS, not OLS, and they're only defined for Network users of OLS ๐
A. HELP ๐ง
The HELP command (invoked with ;HELP_ if ; is the prefix) shows the user the third column of Figure 3 ๐ธ It lists the names of all non-standard keys and the keywords for all defined NEOLS commands, in their collating sequence, on the user's virtual teletype ๐
B. PREFIX ๐ฆ
Issuing the PREFIX command makes the next character typed become the prefix, provided it's one of the ones listed in Figure 2 ๐ So ;PREFIX_@ makes @ the prefix, and @PREFIX_; brings back the default situation ๐
C. SHIFT and UNSHIFT
okay so SHIFT is basically a vibe switch ๐ It messes with lines 2 and 3 of Figure 2 (that chart from earlier, bestie ๐ ). Once you send SHIFT, every upper-case letter you type comes out as a Greek character instead of a regular letter, and lower-case letters come out as regular letters instead of Greek. This is lowkey so useful if your User Telnet sends lower-case by default and you'd have to hold a shift key just to get capitals ๐ซถ
UNSHIFT undoes SHIFT, no drama โจ
D. FULLDUPLEX and HALFDUPLEX
FULLDUPLEX makes NETOLS echo back every character you type ๐ฆ HALFDUPLEX turns that echo off again. Half-duplex is the default, so you're already there, bestie ๐
E. STATE
STATE shows your current prefix, your mode of operation (HALFDUPLX or FULLDUPLEX), and your case convention (SHIFT IS ON or SHIFT IS OFF) right on your virtual teletype. It looks like this ๐ง
PREFIX IS;
HALFDUPLEX
SHIFT IS OFF
F. LOGOUT
LOGOUT logs you out of OLS (that means _SYST_ _DOWN_ gets pushed) and cuts your Network connection to NETOLS. About three seconds pass between those two things ๐ bye bye ๐
VIII. OLS Display ๐
NETOLS hides everything except alphameric display before it reaches you ๐ Alphameric display gets translated into the Telnet character set using Figures 4 and 5. Figure 4 covers every OLS display character with a one-for-one mapping. Here's how one line reads:
For '[half harrow]'
So the logical not, shown as '[half arrow]' on an OLS terminal, becomes '~' (tilde) in Telnet. Iconic ๐
Alphabetics become upper-case alphabetics, and Greek characters become lower-case alphabetics. Numerics stay numerics, and a whole mix of punctuation maps to itself โจ Carriage control characters get mapped too: line feed down turns into LF, TAB into HT, BACK into BS, and so on. Line feed up gets suppressed, and ERASE is represented as Bel ๐
Figure 5 is for the OLS display characters that turn into strings of Telnet characters. These strings are mostly stylistic takes on symbols that are peculiar to OLS. For example, the _ADD_ key normally shows up in List mode as '[circle +]', and in this Telnet implementation '(+)' is the attempt to capture that graphic ๐ซถ Superscripts become underscored numerics, and carriage return becomes CR LF. RS is not really represented, because on an OLS display device it moves the beam to the upper left corner of the screen. It's treated as carriage return instead ๐ซ
To Display (OLS Explanation) OLS Sends (Telnet Explanation)
(The figure captions and tables are kept exactly as in the original, so here they are in full.)
IX. Instructing a User Telnet
For local users, all echoing _that's done at all_ is done by OLS, so the terminal never echoes. In general, OLS does not echo the user's input. There are exceptions to this rule, but they are relatively few and mostly show up on the SYST level. Upper keyboard keys are never echoed except in List mode ๐ The Network user is advised to set their telnet to full-duplex mode, meaning echo nothing. The FULLDUPLEX command in NETOLS exists because it can exist, but its use is not recommended ๐
Here's the full chart of mappings:
To Display (OLS Explanation) OLS Sends (Telnet Explanation)
0-9 Decimal Digits 0-9 Decimal Digits
_-Z Alphabetics A-ZUC Alphabetics
_-5 Greek Characters a-z LC Alphabetics
! Exclamation Mark ! Exclamation Mark
+ Plus Sign + Plus Sign
_ Underscore _ Underscore
- Minus Sign - Minus Sign
@ Commercial At @ Commercial At
/ Slash / Slant
# Number Sign # Number Sign
' Apostrophe ' Apostrophe
& Ampersand & Ampersand
$ Dollar Sign $ Dollar Sign
* Asterisk * Asterisk
% Percent % Percent
= Equal Sign = Equal Sign
TAB Horizontal Tab. HT. Horiz. Tab (_I)
: Colon : Colon
; Semi-Colon ; Semi-Colon
[ Left Bracket [ Left Bracket
] Right Bracket ] Right Bracket
( Left Parenthesis ( Left Parenthesis
) Right Parenthesis ) Right Parenthesis
< Less Than < Less Than
> Greater Than > Greater Than
, Comma , Comma
" Quotation Marks " Quotation Marks
? Question Mark ? Question Mark
[half arrow] Logical Not ~ Tilde
| Logical Or |
| Vertical Line
BACK Backspace BS Backspace
SPACE Space SP Space
ENL/[up arrow] Line Feed Up
CON/[down arrow] Line Feed Down LF Line Feed ([up arrow]J)
_ List Mode Space _ Underscore
[shaded rectangle] List Mode Rubout X Upper-case X
_ List Mode Pointer _ Underscore
BREAK Break SP Space
ERASE Erase BEL Bell (_G)
Figure 4. Characters With One-for-One Mappings
To Display (OLS Explanation) OLS Sends
: Post List (:)
[circle +] List Mode Add (+)
[circle -] List Mode Subtract (-)
[circle .] List Mode Multiply (*)
[circle /] List Mode Divide (/)
[arrow] List Carriage Return ([2 vertical lines])
RETURN Carriage Return CR LF
RS Reset to Upper Left CR LF
[cent sign] Cent Sign C BS [2 vertical lines]
0-9 Superscript 0-9 0 BS _
-
9 BS _
Figure 5. Characters Which Map Into Strings
OLS is meant to be used in character-at-a-time mode, so the user should set their User Telnet that way too. For users who only have a line-at-a-time mode, the end-of-line character should not be sent to NETOLS ๐
NETOLS quietly flushes every Telnet control character it spots in the input stream, no comment ๐ค Characters in the Telnet character set that mean nothing to NETOLS get echoed as '?' and then discarded. The only exceptions are LF (line feed) and NUL, which get flushed without comment too.
X. Examples ๐
A. LOGON
Here's the dialogue that logs a user onto OLS, using the user number from Section IV ๐ธ
TELNET ENTRY OLS QUERY/RESPONSE
UCSB ONLINE SYSTEM
ENTER USER NUBMER (196)
196% ID NUMBER=
57372% USER NAME= (ARPA)
ARPA% JOB NAME= (UCSB-WHITE)
UCSB-WHITE% AUTOSAVE CODE = integer
MOLSF % LOAD (MOLSF)
FILE LOADED
In this and the examples that follow, '%' stands for CR (carriage return). Entries echoed by OLS are in parentheses above. Swap in your own affiliation and name for 'UCSB-WHITE' โจ This procedure loads the math subsystem of OLS. Want COL or NET instead? Just swap in that name for 'MOLSF' ๐ฆ To load a different subsystem (say COL) after you've logged in:
TELNET ENTRY OLS QUERY/RESPONSE
;SYST_ WORK AREAS UPDATED
;LOAD _COL% LOAD (COL)
FILE LOADED
Again, '_' stands for a space, not an underscore ๐
B. NEWTOWN-RAPHSON SQUARE ROOT APPROXIMATION
A simple user program can approximate the square root of a number N with the Newton-Rapshon iteration procedure ๐งฎ It gets the (k+1)th approximation from the kth using this algorithm:
X k+1= (xk+n/kk)/2
The following entries build the user program:
;LIST_)TYPE_%ENTER_N
;1_;REAL_;LOAD_;ENTER_;STORE_N
;TYPE_% ENTER_FIRST_GUESS
;1_;LOAD_;ENTER_;STORE_X
;TYPE_%#_OF_INTERATIONS?
;0_;LOAD_;ENTER_;STORE_N
;1_;REPT_(;LOAD_N ;/_X;+_X ;/_2
;STORE_X ; DISP_%/_X ;+_X ;/_2
;LIST_;STORE_;USER_;1_;SQRT_
To display the user program, enter:
;USER_;DISP_;SQRT_
When it runs, the program asks the user for the number N they want the square root of, an initial guess, and how many iterations to perform ๐ It then computes and displays the results of each iteration, and then calls itself so you can compute a second square root ๐ Here's how it runs:
TELNET ENTRY OLS QUERY/RESPONSE
;USER_;1_;SQRT_ ENTER N
3 ;ENTER_ ENTER FIRST GUESS
1 ;ENTER_ #OF ITERATIONS?
4 ;ENTER_ 2. +00
1.75 +00
1.73214+00
1.73205+00
ENTER N
etc.
C. Remote Job Entry
A file of card images can be built with the help of the COL subsystem of OLS ๐ and then submitted as a batch job. Assuming COL is loaded, these entries build a card file that invokes the Fortran compiler:
;2_//jobname_JOB_(acct#,name , , , , , ,T) ; STORE_
//_EXEC_FORTGCLG ; STORE_
//FORT.SYSIN_DD_* ; STORE_
source-statement-1 ;STORE_
...
source-statement-N ; STORE_
/* ; STORE_
To display the completed file, type:
;3_;DISP_%
To submit the file, type:
;4_;SUB_%
To watch for it while it's executing, type:
;DISP_J%%%...
When execution is complete, you can pull up the 'printed' output with this dialogue ๐ง
TELNET ENTRY OLS QUERY/RESPONSE
;CMPLX_;LOAD_ UNIT = (2314)
2314% VOL=SER= (MVT180)
MVT180% DSNAME= (RJEOUT)
RJEOUT% MEMBER= (jobname)
Jogname% NOW LOADING
FILE LOADED
Then you can examine the output by entering:
;2_;DISP_1%%%...
NOTE: Text within brackets describes non-ASCII characters that were part of the original document. Please see the PDF file for the original representation. ๐๐
๐ฆ where this page comes from
- ietf: rfc216 1971-09
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms