Early Notesfile Postings

by Douglas W. Jones
THE UNIVERSITY OF IOWA Department of Computer Science

Archived from ONotes 1974-11-22 to 1974-12-18.

---------- note 614 editing!
  12/09     10.37     jones       rhrc

When reading a lesson,it would be nice to be able
to read directly over lesson block bounds instead
of having to back out to the lesson index and type
the letter of the next block. Mabe the -NEXT1- key
could advance to the beginning of the next block
and save changes in the previous block if not in
inspect only mode?

This takes some translation into modern terms. Since PLATO was intended as a computer aided instruction system, all user fils were referred to as lessons, regardless of whether they served an instructional purpose. The text editor operated on fixed-size blocks of disk space, and it was up to the user to organize the text of a program or other document into blocks. All PLATO terminals had function keys, -NEXT- was the name of one of them, and -NEXT1- was the standard way to refer to the shifted version of this key.

The first response to this note, from frye of research indicated that exactly this function was available to systems programmers, but that there was apparently some reason to deny this function to the general user community. I responded:

---------- response 2
  12/09     11.38     jones       rhrc

do they also have -BACK1- to back up from the beginning
of one block to the end of the previous block, this would

The apparent garble at the end of the above posting is the result of two things: First, the ASCII text in the U of Iowa archives is recovered from monocase line-printer printouts taken from PLATO's central line printer, with horrible print quality. See the original here. The printouts are monocase with up-arrows indicating shifting. The VVVVV above above was OCRd from an original more like ↑ˇ↑ˇ↑ˇ↑ˇ↑ˇ, where the little ˇ marks were incorrectly seen as the letter v and then forced upper case by the shift code. In fact, it should have been read as a locking subscript.

The second basic problem is character set incompatability. The printer worked with CDC's 6-bit display code, and PLATO used a modification of this code that did not render properly on the printer. Neither character code was compatible with modern ASCII, and PLATO's modified code did things that are not possible in Unicode, with control codes for things like backspace and overprint as well as superscript and subscript. I suspect that the "≤≤≤" strings represent repeated backspace characters. If so, the above would render as follows on a proper PLATO screen:

---------- response 2
  12/09     11.38     jones       rhrc

do they also have -BACK1- to back up from the beginning
of one block to the end of the previous block, this would
also help.


PLATO text was displayed on the screen at 180 characters per second, and the locking subscript was slower, so there would have been a pause of about 1/3 of a second before the footer on this note was displayed and noticable pauses for the line breaks within the footer because they were done with multiple backspaces and subscripts.

Responses from keith s of matha and becker of reading referred to older notes threads where related issues were discussed. A response from parrello of uimatha explained that the older notes addressed a different question, text search across block boundaries in the editor. Fuller of uimc responded that the fear was that my suggestion, like multi-block text searching, would create too much disk traffic for the system. I responded:

---------- response 7
  12/09     14.53     jones       rhrc

OK.. I must come to the defense pf those brave enough
to make the suggestion that they were relavent....

They were relavent, the possibility of what I want was
raised, and arguments were presented for and against what I
want. Stone (I think) made correct remark that the same
number of disk accesses would be made ny people backing
out to the index to go to the new block as using -NEXT1-.
As to how free access to -NEXT1- would encourage scattering
of units at random (as one of the others suggested) I have
not the faintest idea.VVVVVVVVVVVVVVT≤ H≤ EVVV≤≤≤≤≤M≤ O≤≤ V≤≤≤ E≤≤≤≤ M≤≤≤≤≤ ENT

Here, it appears that additional spaces in the message footer have been squeezed out. The space-backspace sequences in the text was done to delay plotting, so you'd see the final lines of the message as follows, with a noticable delay before the footer and slow display of successive letters of the footer:

not the faintest idea.


This note thread wandered on for a while, but there was never a response from anyone in PLATO officialdom. The last post in the thread, from d sleator of oldedit, said that this was just a case of the haves versus the have nots. The system people have something they don't want to give to the masses and they have no rational reason for withholding it.

My next posting was in response to a discussion initiated by state of ames suggesting that Hanuka should be spelled Hannuka. Al of mflu suggested that he preferred Chanukah, and wondered where the misspelling had been. PLATO, like Google, was in the habit of changing their sign-on page to mark the day. Did PLATO display a menorah or something with a misspelled happy Hanukkah message? Al went on to suggest a spinning dreidel and the gave a tongue in cheek PLATO mis-explanation of the rules of the game.

I responded:

---------- response 2
  12/10     15.56     jones       rhrc

↑ˇ↑ˇ↑ˇ↑ˇ↑ˇAll right you game authors get going with the new game:

       DREDEL .≤ .≤≤ .≤≤≤ .≤≤≤ .≤≤≤≤≤≤≤≤≤≤ .↑ˇ↑ˇ.↑ˇ↑ˇ ≤≤≤≤≤≤≤.

The entire point of this posting must have been some kind of animation on the display screen, but I can't figure out how it was supposed to render.

Archived from ONotes 1975-03-24 to 1975-04-05.

My next notesfile posting was in response to a discussion of the keyboard layout. A left-handed user, morgan of arizona, didn't like the fact that shift-stop, the "vulcan nerve pinch" of PLATO, was a right-handed gesture. He wanted a left-handed version. Bradley suggested simply turning your keyboard upside down to put the function keys on the right. (PLATO keyboards were relatively small, connected to the terminal by a wire that was long enough that many users held the keyboard in their laps while working.)

Silver of ve jumped in with a memorable quip "But only God can make a right handed person who can empathize with the problems that lefties have, I guess."

Then eric of weather suggested that there's a new keyboard layout. I think he was referring to the Dvorak keyboard, an idea that was new in 1936. Schroeder of iumusic suggested that concerns about optimal keyboard layout are of limited value when so many people can't type. Kovara of arizona suggested that supporting multiple keyboard layouts on PLATO would not be difficult with modifications to the keyboard input driver.

I posted this response:

---------- response 7
  03/31     08.50     jones       rhrc

Re that 'new' typewriter keyboard mentioned. the faster
speeds reported on it are for right handed people, the
standatd typewriter keyboard actually favors the left hand
(the common letters a,s,r,e are on the other side on that
new fangled board)

Being left handed. i admit that pushing NEXT,BACK, etc.
with my wrong little finger actually leaves it stiff and
in need of a rest after a few hours of plato, but then
i think that the advantages of a standard keyset far
override any sinister considerations.↑ˇ↑ˇ↑ˇ↑ˇ↑ˇ↑ˇ↑ˇ↑ˇ↑ˇ↑ˇ↑ˇ↑ˇ↑ˇ↑ˇ↑ˇ'nother leftist↑ˆ↑ˆ↑ˆ↑ˆ↑ˆ↑ˆ↑ˆ↑ˆx≤↑ˇx≤↑ˇx≤↑ˇx≤↑ˇx

Again, animation at the end of a posting. It begins with a delayed display of a message footer saying 'nother leftist, but then it does someting with the letter x, superscripts, subscripts and backspaces. I'm not sure of the effect.

My next posting was a complaint about the way the system worked:

---------- note  231   nEXT1
  03/31     09.36     jones       rhrc

I find that NEXT1 and NEXT on the mode page
quite convenient,  but they don't always work.  After
STOP1 to get out of a lesson they do,  but when condense
errors occur,  they don't ... why not,  this is one place
where they are most useful (why should I retype the name
of the lesson that I was editing.  just condensed,  and found
errors in?)


On PLATO, lessons (we would call them programs) were condensed (we would say compiled) before they could be run.

In the above example, I know exactly what the magic control characters did. The line ↑ˇ↑ˇ↑ˇjones↑ˆ↑ˆ↑ˆ begins with three locking subscripts and ends with three locking superscripts. Subscript and superscript moved the text 5 pixels down or up, so the result was the text jones displaced down 15 pixels. Newline moved down 16 pixels, so the result was jones overprinted with jones displaced vertically one pixel. The net result is a bold-face jones.

Parrello of uimatha responded that shift STOP would do what I wanted after some condense errors, but that there are other errors where retyping was the norm. He suggested that perhaps the system administrators just wanted us to get more typing practice.

Postings archived from ONotes 1975-04-05 to 1975-04-14.

Before my next postings, my PLATO account was changed from rhrc (the Regional Health Resource Center) to mcl (the Medical Computing Lab). This didn't represent a change in my research assistantship. Rather, it represented the move from temporary quarters in the back of the RHRC building, an old house on University Avenue just north of campus, to our new laboratory in the new School of Basic Medical Sciences building near the center of campus.

Steve of cornell made a useful suggestion, and in a followup, woolley of p responded that the system was slow enough without this feature. This led to topic drift with steve at cornell saying he'd suggest it again when we get a new computer. Daleske of ames then wondered when we'd get rid of the slow CDC Cyber 73 computer and get a "production model Illiac IV." (A joke, since the Illiac IV never existed as anything but a research prototype.) I responded:

---------- response 9
  04/08     13.49     jones       mcl

↑ˇ↑ˇ↑ˇ↑ˇ↑ˇ↑ˇ but how in heavens will PLATO be run on
      an illiac IV, it seems that the paralell
      structure is just the wrong one for PLATO

The leading batch of 6 subscripts would have dropped the text about 2 lines down the screen with a slight but noticable delay before it rendered.

Topic drift was very common then, as now, but in this thread, at least, the original topic managed to reassert itself.

Another thread was started by bittner of pfw, discussing an instructional lesson on PLATO in lesson "chairman" where the student's job was to get a bill passed. The lesson was constructed as a fairly intricate simulation. Bittner said that he hadn't found anyone who could get the bill passed, and of course, others took up the challenge. Jordan of english outlined his solution, as did hatch of mflu. Parrello of uimatha didn't like the bill, so he set out to assure its failure while appearing to support it. Steve of cornell and roberta of mfl discussed how they passed the bill, while schroeder of iumusic groused about failure. I responded with:

---------- response 7
  04/10     21.36     jones       mcl

Since I was against the bill to begin with, I think I did
a marvelous job of assuring its failure while appearing to
push hard for its passage. Just another day in the life
of our congress...↑ˇ↑ˇ↑ˇ↑ˇ↑ˇ↑ˇ↑ˇ↑ˇ↑ˇ↑ˇ↑ˇ↑ˇ↑ˇ↑ˇ↑ˇ↑ˇ↑ˇ↑ˇ↑ˇ↑ˇ↑ˇjones
↑ˇ↑ˇ↑ˇ↑ˇReally it was a rather well written lesson, my complements
to the author.  One detail however...↑ˇ when using the data
key, the replot of the information is time consuming and
annoying. Possibly ¬NEXT- and -BACK- could be active here
in order to scan the available data.  No need for the data
index and data to share the same page.

The first 4 lines above are quoting parrello's entire post. Then, a long string of 21 subscripts, approximately 6 newlines, to set off and delay my response from my uncredited quotation of Parrello's post. My response is bracketed with a boldface (vertically offset overstruck) jones at the top and a similar j at the bottom.

At the end of the thread, don emerick of mtc added a historical note saying that lesson chairman was originally developed for PLATO III with Ford Foundation funding and that S. Andes and Don had worked to move the material to PLATO IV.

Later, ostuni of iu posted a rambling note that wandered from writing in wet cement to Kafka and Fellini. Ken of cornell noted that, according to the PLATO log-in page, "help is available." Guerra of uimc wondered if the writer was on weed or acid. Others responded in a similar vein. My response was at the end of the thread:

---------- response 10
  04/12     13.09      jones       mcl

hmmm...↑ˇ↑ˇ↑ˇ↑ˇ↑ˇ↓methinks the man have some troubles↑ˇ↑ˇ↑ˇ↓there is a lesson 'jones' that may
help the poor boy, it gets in nice
conversations with people, might help.
↑ˆ↑ˆ↑ˆ↑ˆ↑ˆ↑ˆ↑ˆ↑ˆ↑ˆ↑ˆ↑ˆ↑ˆ↑ˆ↑ˆ↑ˆ↑ˆ↑ˆ↑ˆ↑ˆ↑ˆ↑ˆ↑ˆ↑ˆ↑ˆ↑ˆ↑ˆ↑ˆ↑ˆ↑ˆ↑ˆ↑ˆ↑ˆ↑ˆ jones

Lesson Jones was my personal workspace, used over several years for a number of expriments. At that time, it contained my take on ELIZA, Joseph Weizenbaum's program to simulate human conversation. My version pretended to be a junior systems programmer on PLATO. (There were numerous junior systems programmers, many were bright high-school students undergrads.)

I can't make sense of the superscripting and subscripting in my post.

Postings archived from ONotes 1975-04-26 to 1975-05-08.

My job was to try to implement the functionality of PLATO on a 16-bit minicomputer instead of the CDC Cyber mainframe used by the official PLATO project. In this job, I had to explore dark and poorly documented corners of the system and explore how they worked. Sometimes, my understanding of PLATO was less than perfect, as illustrated by the next exchange:

---------- note 297 pause term
  05/02     16.54     jones       mcl

The following tutor code may be used to make the term key
active at a pause. I have seen many lessons whior would
profit from this. (Have you ever been in a lesson and not
been able to find an arrow so that you could respond to
someone wanting to talk to you? This happens in long ↓sequences of text where pauses are used to break it up.)

pause  $$anywhere in the lesson where -term- should work.
join key=term,uterm,x
unit uterm $$unit to press term for user at pause.
inhibit arrow
arrow   0.0
press   term
specs   nookno
branch key=term,1term,x
* end of term processor↓↓    jones↓     ↑^↑^↑^jones

This illustrates the wretched design of the Tutor language on the PLATO system, but the responses exposed my poor understanding. Chabay of s (the system programming group) asked why I didn't just use "pause keys=all". Obviously, I should have, but so should many other PLATO lesson authors. I responded:

---------- response 2
  05/02     20.11     jones       mcl

Right you are...

I think in that case that the pause with no tag should be
replaced with 'keys=next' in most if not all cases. This
should be made clear in AIDS, even with a warning against
use of the blank tag pause. With the exception of games
and the CS editors, pause is mostly used for breaking up↓long writes, and nowdays mostly with the wrong tag.↓
I wonder, is there any case where a black tag pause is
really required? Possibly the blank tag should be ¬) to
the 'keys=all' tag; that is what I thought on my first
through n-1↑^th↑ν reading of the AIDS section in the first

There may be uses of the blank tag pause, and for these
I would propose a special hard to find tag so that most
users would not be likely to use it by accident.


The body of the message contains routine use of superscript and subscript, where I typed "in the first through n-1th reading."

John r of reading responded that the "tagless" pause command has many uses. The discussion wandered on for several responses. The thread ends with a lovely script set in the far distant future in which an archaeologist and his assistand discuss the discovery of an ancient printout of this thread, which they find entirely incoherent, concluding that it must be the log of a "psych ward" from the distant past.

Postings archived from ONotes 1975-06-30 to 1975-07-16.

My work implementing Tutor on the Modcomp IV minicomputer was progressing, and as I worked on it, I implemented a parameter passing mechanism. In parallel, the developers of Tutor on PLATO extended the language with their own somewhat compatible parameter passing mechanism.

The Tutor programming language was saddled with a fundamental unit of code called the unit. As with COBOL paragraphs, units could be called, but they could also serve as targets of branches and they could also execute sequentially. This made parameter passing difficult.

Brand of matha posted a note observing that the do (call) and jump (goto) commands could pass parameters, but the next command (tying a unit to the NEXT key on the keyboard) could not. Frankel of p explained why this was so. Darlene of pso quoted the manual. Warner of iu wondered if they could make parameters work with nextnow. I chimed in with the following:

---------- response 4
  07/02     21.36     jones       mcl

'nother vote for nextnow, but in the meanwhile you may use

next       $$blank tag to disarm any active
           $$next command in this unit
pause  keys=next
jump   unitname( ..parameters... )

The fact that this is equivalent to nextnow in every
respect that I can find is the justification for allowing
parameter passing on it. In no way does it involve the
problems associated with key arming (next command, etc)
that were previously mentioned.


P cohen of med responded to my response noting that there might be no need for the blank next command in my code. I responded to him and to another question with the following:

---------- response 7
  07/03     09.36     jones       mcl

Dr. Hody: yes you can pass parameters on a conditional do
join jump or goto.

Paul Cohen: if the -next- key behaved like any of the other
function keys, the -next (blank tag)- would be needed to
avoid an automatic jump as soon as the pause is satisfied,
before the explicit jump is encountered. You may be right
that it is not required for the -next- key.

Postings archived from ONotes 1975-10-01 to 1975-10-17.

John r of reading complained about the behavior of the where command after erasure, wondering if this was a new feature or a bug. B sherwood of s thought this was the way it always was, but not necessarily right. Michael of english concurred. I added this:

---------- response 3
  10/07     13.01     jones       mcl

As the person who started this mess in help notes:

The new interaction of erase and unit with mode seems
best to me: Whenever the screen is fully erased, you are
returned to mode write (mode erase won't show up, and
mode rewrite being the same as write in that case).
On the other hand, after an erase with a tag, in which
case only part of the screen is erased, the mode stays
the same, as it is still useful.

One vote to leave the erase/mode interaction the same!!!!!

On the other hand, I have never seen much logic in the
interaction of erase and unit with where. It might make
good sense to have where go to some fixed location after
a full screen erase, like 510, so that for long text
sequences, no ats would be needed. after an erase with
a tag, the current scheme of leaving where at the left
end of the erased block is the best, it is useful this

The above note makes it clear that I was deeply into the details of Tutor as part of my work on re-implementing it. Unfortunately, I haven't found an archive of the help-notes thread that I referenced above. The thread continued, mostly with members of the PLATO staff discussing how to make things right.

Bl abbott of mtc asked for an extension to Tutor allowing relative addressing, assembly-language style. Brand of matha offered conventional high-level language arguments against this, but wisenhut at siu asked for assembly-language-style skip commands. Jim g of reading and b sherwood of s both offered strong objections to these proposals, and sherwood suggested that it would be better to pursue adding an if-then-else feature to Tutor. I responded:

---------- response 5
  10/07     16.52     jones       mcl

AMENˆ2 Tutor is not supposed to develop into an assembler
language. All of the above arguments have been covered
many times in years past with programmer efficiency
studies and such, and in general, the results favor the
use of symbolic labels over relative addresses, and
IF THEN ELSE constructs over labels.


P mast of p discussed how some of Tutor's answer-judging constructs have an if-then-elseish character. Koning of csstaff added to another note disapproving of relative addressing. Mont of csa and schreiner of csa agreed that Tutor's current slate of conditionals leads to unreadable code, and embly of csa made a concrete suggestion for adding if-then-else to Tutor.

We eventually did it on both the PLATO and MCL versions of Tutor at about the same time.

There was only one PLATO IV system, and most users had insufficient disk space for both production and development versions of code. As a result, changes were released untested, usually at night, and sometimes bugs survived into prime time the next day. A user, warrens of uw, complained of a bug in the notes reader at 3:10AM. Later that morning, at the start of prime time, I concurred, noting that I'd seen the bug the previous day:

---------- response 1
  10/08     08.38     jones       mcl

this happened to me from general notes a couple times
yesterday. I thought that I might have been hitting
back instead of lab, but one time it happened, I (following
traditional bad typing practice) looked at my fingers when
it happened.

Seems to be a not uncommon fluke in the current NOTES.

Koning of csstaff suggested that the bug could be a bad keyboard, but perry of uw said the problem showed up on several keyboards.

Postings archived from ONotes 1975-10-17 to 1975-11-05.

As already discussed, PLATO's Tutor programming language had limited conditional facilities. Judy of pso (the PLATO Service Organization) suggested a trick using the fact that Tutor used -1 to represent true and 0 to represent false. In addition, some commands took an argument indicating how much to do or what item to modify, where an argument of zero did nothing. Judy of pso suggested the expression -(x=y)*arg to pass the argument arg if x=y or do nothing.

Maggs of law suggested packaging this kind of magic in a define, Tutor's term for a macro. Maggs also gave an if-then-else macro that was reasonably legible. Friedman of csa applauded the macro, but judy of pso wondered why. If you already know that true is -1, why not use it instead of hiding it in a define. I responded:

---------- response 4
  10/28     18.45     jones       mcl

This brings to mind something that I suggested about 9
months ago, the embedable conditional.

The suggested format was in keeping with the conventional
TUTOR conditional form, and was suggested in response to
a note from someone who wanted a conditional at;

instead of:  remove if(ntries=1,then,gunk,else,nothing)
I suggested: remove ¬0ntries=1,gunk,0¬1

I am glad that there is a way of doing this with a define,
thanks for publishing it!


The ¬0 and ¬1 above are probably some kind of parentheses, but I can't be sure. In any case, koning of csstaff addressed judy of pso's doubts about the wisdom of packaging obscure code in defines to make code more readable.

Postings archived from ONotes 1975-11-18 to 1975-11-30.

Koning of of csstaff wondered about rules for making copies of PLATO Aids pages (the on-line manual). It appears that PLATO's rules about making copies of Aids were restrictive because Tutor was in constant flux, and therefore, copied material had a significant likelihood of becoming obsolete. The conversation quickly shifted to a discussion of copyright, with many participants, some from various parts of the system staff, with others trying to get back to the origial topic, and yet others proposing various mechanisms to control copying. I added my (brief) experience with a micropayment system to the discussion:

---------- response 15
  11/19     13.03     jones       mcl

I worked for a timesharing firm (Com Hsare inc) that had
what is probably the most conservitive possible
interpretation of the copyright laws, and also probably
the most defensable should any question ever arise about
rights to some material.

Any translation of material from one medium to another
was considered to be an instance of publication, even if
one of the media was transient, such as orange dots or
green glow on a crt, as well as less transient things
such as teletype (or terminet) printout.

To support this view, they had a royalty system that could
be attached to any user program that would make an automatic
per use charge. Any user with copyrighted material who
wanted to make it pubic could ask that this royalty
mechanism be attached to his program, and specify the use
charge to be made (Title or introduction pages were
encouraged to contain notice of this).

In the above, I misspelled ComShare Inc's name. The thread went on for a total of 21 responses. Curiously, when PLATO went commercial as NovaNET, they instituted such a micropayment scheme. For about a decade, I received small royalty payments for work I'd done on PLATO.

Olson of ced thanked the developers of the PLATO text editor for adding a global search tool (the X command). This set off a discussion of the wisdom of advertising computationally expensive tools, and also a discussion of the application that Olson had. This led me to comment that the application was essentially a database application:

---------- response 10
  11/20     19.34     jones       mcl

Most text editing systems that I have had much contact
with, from the PLATO editor to TECO on the PDP-10, or QED,
the grandaddy of many interactive editors, have evolved
to the point where they make reasonable data base managers.
They may even be the best for some light applications, but
are rarely efficient for large scale systems.↑ˇ↑ˇ
On the other hand. the concept scheme, with the data base
embodied in the lesson text, though it is fast, is not
very flexible. If this is to become a prodoction system,
with frequent updates and retrieval requests, some dataset
based system would proobably be best, using the
vocab/concept mechanism for the indexing. This would
require only 1 disc access per info. request.↑ˇ↑ˇ
Such a scheme might even make a valuable system resource,
many thigs such as a current index of all public lessons
could be managed automaticly, thus freeing time now spent
by pso.

Postings archived from ONotes 1975-12-01 to 1975-12-13.

Blomme of s commented on the long-running question of how to find instructional material on PLATO, recognizing the problem and recognizing that the current PLATO solutions were insufficient. In summary, his message was "we're working on it." after a brief discussion of the "Grand Centralized Solution" to finding material, friedman of csa asked that any solution address the question of data privacy. I responded:

---------- response 5
  12/11     12.54     jones       mcl

I think that the Northwestern Univ. Hypertext/Tutor system
was developed as a solution to this problem. Is there any
possibility of using any code and or concepts from that

Northwester's Hypertutor was the first attempt to implement PLATO's Tutor language outside the PLATO administrative umbrella. They used a CDC mainframe, so their basic environment was the same, but they thought through some problems before the PLATO project had addressed them.

Mont of csa suggested adding a one-bit tag on each "data page" to indicate whether the page was private. That was the end of this thread.

Dave of infe1 asked for a -termop- command, without any explanation of what he wanted. John r of reading, also without explanation, suggested nested termops. I responded:

---------- response 2
  12/11     12.47     jones       mcl

system terms seem to be 'termops', so some kind of
mechanism already exists along the requested direction,
though it is probably a collection of special cases
right now.

By way of partial explanation, PLATO terminals had a function key called TERM. Under most circumstances, when you hit the TERM key, the system popped up a prompt on the bottom line of the screen, and you could type a word there. System terms included things like talk, which opened what people would now recognize as an on-line chat session, plus several others, including screen sharing and on-line access to user consultants. User terms could be added, and the expectation seems to have been that instructional lessons would use this so that a user could ask for definitions of terms.

Note that my response is worded speculatively. I wasn't quite sure what dave of infe1 really wanted. This was the end of the thread.

Postings archived from PbNotes 1975-12-12 to 1976-01-16.

Sherman of mcl complained that when you edit a lesson, a note saying "last edited by" always popped up, even if you were the last editor. You had to press the NEXT key to clear this and begin editing. I responded:

---------- response 1

  12/16     12.50     jones       mcl

second that

it is an annoyance to have to press -NEXT- that extra time

        Tired fingers jones

Later responses suggested that this was not normal, the system only displayed this message up if you weren't the last editor. The final response, from blomme of s confirmed this, but took it as a reminder that several redundant checks were being done and needed to be removed.

I posted the following announcement:

---------- note 135 gothic

  12/16     12.49     jones       mcl

Lesson -gothic- including charset and lineset -gothic-
and an introduction to their use is now in final form.

I will try to maintain compatability with the current
version of both the lineset and charset in all future
changes, so it is now safe to use them in production

The gothic charset in -gothic- is an extension of the
one in -charsetx-, with a big J in addition to the A, E
and F, and also a set of medium capitals for A ... O.
Small details of some other characters in the -charsetx-
version have been changed.

Users wishing to receive notice of any future extensions
or changes in the charset and lineset should send me a 
pnote with the names of the lessons involved (jones of mcl).

Suggest changes or corrections by pnote to jones of mcl.

See my writeup on gothic for a commentary on this.

Resch of uicc posted a complaint about one detail of PLATO security in the form of a letter to "Dear Abby." The first part of the thread focused on trying to pin down the specific issue that resch of uicc was concerned with. This turned out to be access to commons (persistent shared memory segments), where if someone managed to get the "change code" (password) for your common block, they could edit your common without leaving any evidence of who had made the change. In contrast, changes to source code always recorded who had edited the file.

As a rule, security on PLATO was almost entirely a matter of afterthought. Only after the user community was large enough that security problems began to arise was the system patched to address these problems. This is a typical example, and I responded by suggesting that there are general solutions:

---------- response 9
  01/14     20.25     jones       mcl

There is a good general security mechanism discussed with
good references and examples (including the example of a
general NOTES type system) in the current (Oct 1975)
issue of the quarterly journal _Software_ _Practice_ _and_

The machanism disccussed could be used to
manage all of the PLATO security and add extra features
also, but as that kind of change would involve rewriting
of almost everything, the paper is probably best treated 
as a discussion of what is possible in the way of general
security mechanisms (as opposed to evolutionary hodge-podge
systems such as on PLATO or worse yet on the IBM 360).

This thread went on for a while, with half the responses clearly struggling to understand the problem. Eventually, daleske of ames started a new thread with a series of notes explaining the issues raised in the previous thread. The responses to this also showed continuing problems grasping the issues, but k mast of p demonstrated clear understanding, saying that PLATO was slowly evolving away from passwords to some kind of access control list mechanism, as I had recommended with my literature citation.

Postings archived from PbNotes 1976-02-02 to 1976-02-09.

Stratton of pfw wrote what was almost certainly a tongue in cheek request for a conditional at command, prompting a string of tongue in cheek requests for more and more preposterous conditional commands. Consider conditional declarations and conditional labels.

Judy of pso gave a deadpan answer saying that existing conditional mechanisms were sufficient to do what stratton of pfw had requested. Others continued the preposterous requests, and I added to them before turning serious:

---------- response 8
  02/02/76     17.07     jones       mcl

I have a personal preference for the embeded conditional
looping unit command, which I think would greatly enhance
Well folks, this is the third request for conditional at
that I have seen in that many years on PLATO, though there
may have been some I have missed. TUTOR could use a
universal conditional construct (like the PASCAL case, but
less verbose?) but unless that is provided, let it be.

All PLATO IV terminals had touch panels. fay of rtv362 complained that the behavior of the touch panel had changed, with the panel turning on under circumstances where it was previously off. T little of research explained that the implementation of the pause command that allowed response to a single-keypress had changed so that, under certain common circumstances, it automatially turned on the touch panel.

---------- response 2
  02/08/76     15.45     jones       mcl

pause keys=all?

I thought I always had to explicitly enable to turn on
the touch panel, if keys=all turns it on, then we should

pause keys=allonthekeyboard $$the old keys = all
      that won't enable
pause keys=allbutext $$so touch is active but not ext.
      this should enable?
pause keys=allbuttouch $$keyset and ext, no touch.
      this should also enable.

A response from andersen of s indicated that this change was a bug and was fixed. Mcneil a of uicc wished that notes like this would go away when bugs were fixed. If mcneil a's wish were true, the archive wouldn't have recorded a significant element of PLATO history.

Postings archived from PbNotes 1976-02-09 to 1976-02-19.

Plato had a tradition of changing the sign-in screen for holidays. Normally, it was just an analog clock face over the prompt for a user id, but the normal "holiday" varied this with graphics, for example, a turkey replacing the clock on Thanksgiving (with clock hands still telling the time on the turkey's body.

Clark of lawyer thanked whoever made the Valentines Day page. K mast of p said that Len Kawell and Al Harkrader had designed the VD note. Warrens of uw added thanks for a card sent via Pnotes (personal notes, what we now call email). The system of elf (the system elf?) suggested that calling Valentines Day VD was not a good idea.

Apparently, judging by my response, the Pnote valentine was, in modern terms, spammed to everyone:

---------- response 7
  02/14/76     19.54     jones       mcl

what a lineset in the pnote valentine, gad!

(on the other hand) Thanks for the sedimental idea
↑ˇ↑ˇ↑ˆ↑ˆ↑ˆ↑ˆ      nt≤≤¬↑ˇ↑ˆ↑ˆ↑ˆnt≤≤¬↑ˇ↑ˆ↑ˆ↑ˆnt≤≤¬↑ˇ↑ˆ↑ˆ↑ˆnt≤≤¬↑ˇ↑ˆ↑ˆ↑ˆnt

Linesets were line-drawn character sets. The misspelling of sentimental as sedimental was intentional, and the final line was almost certainly an animation that had the letters nt trying to wedge themselves into the word to correct the spelling.

S zweig of iumed noted that lesson turkey by Len Kawell contained, at least for the moment, an archive of previous holiday displays.

Postings archived from PbNotes 1976-02-19 to 1976-03-01.

Frye of mfl thanked the system staff for adding a new command to Tutor, getword. Tutor included a broad array of input judging commands. These picked apart the text of input, breaking it into words, matching words and phrases, dealing with misspellings, and evaluating mathematical expressions. At the very bottom, there was always a lexical analyzer buried in the system, but it had never been exposed to users until the introduction of getword.

This is a good illustration of the evolution of Tutor from a special purpose language designed for a particular style of computer-based-education lesson delivery into a general purpose programming language. The demand for this evolution was strong, as evidenced by a long string of thank-yous and small suggestions for additional features. I added to this:

---------- response 7
  02/23/76     17.03     jones       mcl


Getword fills a long existant gap in TUTOR judging.
It is much appreciated.

Postings archived from PbNotes 1976-03-01 to 1976-03-08.

Bowery of comm posted a tongue in cheek note observing that he'd done a study of parenthesis balance in notes files and discovered that right parens outnumbered left parens. His suggested explanations were 1) that PLATO denizens have a poor sense of symmetry, 2) there's no checking for unbalanced parens, and 3) there may be a conspiracy against left-handed punctuation.

ld francis of mtc suggested that right-to-left languages should reverse this bias (1, and that left handed authors should use this form (2.

The humor continued, and I contributed:

---------- response 6
  03/03/76     16.46     jones       mcl

(parenthetic note:
        ((some lisp systems)
               (a single (right bracket))
               (to terminate)
               ((any number of) (left parentheses]
(¬W )

(so there?)

Postings archived from PbNotes 1976-03-08 to 1976-03-17.

Roper of siu posted a note about the need to archive some of the creative but transient works created for Plato. He was involved with a multi-installment story "the Great Guano Gap" that was genuinely innovative, but he'd been off the system and missed several earlier gems. I responded:

---------- response 1
  03/08/76     23.41     jones       mcl

This may be a signifigant idea.

Plato has become an artistic medium, and it may well
be desirable to save the first (faultering) examples
of both prose, graphics and others for posterity.
But of course, leave out the awful poetry from notes

(imagine visiting the Smithsonian 50 years from now
and reading the Great Guano Gap).


Today, I'd love to go to the Smithsonian and see an exhibit that contained the Great Guano Gap. Few works of on-line fiction since then have taken advantage of the medium in quite the way that gem did. For all of the wonders of HTML, you'd be hard pressed to translate the Great Guano Gap into a form that could be properly viewed on the Web.

Sellers of arizona created a lesson (program) called rotate to demonstrate some ideas he had for extensions to Tutor's graphics commands. I responded:

---------- response 1
  03/08/76     23.54     jones       mcl

3d graphics on PLATO would be a mixed blessing.

Admittedly the displays are pretty, but many of the
examples shown are too time consuming and may be good
art, but probably are not of much real use for all but
a small fraction of the PLATO applications.

Is it outside the range of propriety to ask what basis
there is for puting 3d graphics or music box control
in any language on the same footing as the basic semantic
items like branching, judging, units and basic output?

It could be argued that any command not really needed
by less than 10: of the user community be relegated to
the library of stuff in AIDS, and the work that currently
goes into adding such commands to TUTOR be devoted instead
to devising an efficient way to execute such things so
that execution is almost as good as if the command were
added to TUTOR. TUTOR is already too big.

In the above, 10: was probably rendered as 10% on the screen. Avner of s responded that my 10% criteria was too rigid, with fewer than 30 of Tutor's commands getting more than 1% of total usage, and natural languages also work this way. Sellers of arizona argued for his proposal, while carter of comm argued that Tutor was already too big. Shirer of s said there were no plans for 3d graphics, but that users should continue to make proposals.

Postings archived from PbNotes 1976-03-26 to 1976-04-06.

Guerra of uimc, tongue in cheek, marked a great moment in history when he'd finally learned a new key-press sequence. Marty smith of mtc asked, tongue in cheek, if he'd been taking special TM classes or something. Others chimed in, hinton of ssu suggested that it was time to change that keypress sequence. Dave fuller of uimc wondered if there was something about rats in mazes that applied. My response:

---------- response 8
  03/31/76     20.19     jones       mcl

I'm sure it must have something to do with engrams or

Engrams are a concept from Scientology analogous to Freudian complexes, but far more concrete and subject to inheritance through reincarnation.

I posted the following self explanatory (but mistyped) note:

---------- note 316 smart term
  03/31/76     23.25     jones       mcl

Have looked in AIDS under publications and in lesson
articles with no luck so:

Has anything been published by Stifle or Johnson
about the 'PLATO IV' terminal or about the various
'intelligent' terminals? The possibility of such
things is important to my thesis, and I need to
give a reference.

After a useless response led me to understand my error, I added this:

---------- response 2
  04/01/76     12.21     jones       mcl

Sorry, I meant the 'PLATO V' terminal.

Tebby of pso responded that the report I wanted to cite in my MS thesis had not yet been published, but was under review.

The notesfile mechanism was evolving, and the body of notes people had written was growing. Novak of comm asked for a global search tool applicable to notesfiles, so he could search the archives for postings by author. K mast of p suggested that someone could do an MS thesis on the question of how to categorize notes. In the process, he used the word algorythm. I replied:

---------- response 2
  04/05/76     13.41     jones       mcl


    (from someone who made this mistake one time too many)

Postings archived from PbNotes 1976-04-06 to 1976-04-16.

Clark of lawyer posted a note of thanks for Tutor's new sort command. There were technical questions, suggestions and more applause in response. Mixed with this, luke of cornell wondered what algorithm was used. Fortner of p said it used shell sort. Clark of lawyer wondered what that was, koning of csstaff suggested looking it up in Knuth volume 3. Hinton of ssu wondered what knuth was, and I added this:

---------- response 12
  04/06/76     16.52     jones       mcl


A fine book for about $20, and available in the CS
departmental library here at UI (and probably most
engeneering or CS libraries in the country).

It has good write ups on the bubble, shell, heap, and
quick sorts, and is _the_ standard reference in the area.

One measure of how long ago this was is the current price of this book. Amazon currently lists it at $56.61, marked down from $79.99. In any case, berger of mfl pointed out that there was a PLATO lesson, sorting, that taught a variety of sorting algorithms. Why look in a book when you can find it on line.

Charlie browne of mtc asked for an audible beep when someone tries to talk with you (nowdays, we'd say, open a chat session). Frye of mfl wondered how to make noise. Maggs of law suggested rapidly working the slide projector's shutter. PLATO IV terminals had a microfiche viewer that projected images from the rear on the flat panel display. Few of us used this for its intended purpose, but you could make audible clicks by working the shutter, and you could create near-blinding flashes by turning on the lamp and then rapidly opening and closing the shutter with no microfiche in place.

More sensible proposals followed, as well as a warning that the slide selector interface is a general purpose parallel port and some people attach other kinds of devices to that port, so use of it by the system is dangerous and could actually break things. Alan of hebrew suggested adding an escape sequence for a bell character and then offering a modification kit to recognize it and make a beep. I responded:

---------- response 9
  04/06/76     17.01     jones       mcl

that last response sounds good, and may be a reasonable
idea especially with the 'PLATO V' (VI or VII?) terminal.
On the other hand, can you imagine a classroom with lots
of terminals, and some bright author who writes something
that dings or beeps every arrow? The result would not
be the proper classroom atmosphere, and would even annoy
many quiet readers of NEWS and TREK players.

Trek was, of course, one of the PLATO games based on the Star Trek TV series.

Luke of cornell asked for an indirect jump command, able to jump to any unit in a program when given the textual name of that unit. Rick of hebrew pointed out that there was already a way to do this, even more general than what luke of cornell had requested. Berger of mfl wondered if this was intended behavior, and judy of pso said that it was, but expensive. Koning of csstaff confirmed that this was documented behavior. After some more discussion, I added this:

  04/07/76     14.25     jones       mcl


unit   jumpunit
term   jumpunit
arrow  1010
write  ¬0at,910¬1What unit?
match  n1,unita,unitb,unitc,this,that,those
jump   n1,jumpunit,unita,unitb,unitc,this,that,those

Which has the aditional value over -jump n1- that you
can have it jump only to main units and not to various
computational units which make sense only if -do-ne.

The variable jump reqires an implicit match anyway, and
this one is simple enough. If a way is ever decided on
to initiate judging without an -arrow-, then this will have
all the power of a variable -jump-.

My reference to main units is because Tutor units could serve as callable subroutines, and writing what is essentially a goto to transfer control to a subroutine is almost always a bad idea. Main units are parts of the top-level control structure of the lesson, not called but entered by various tools equivalent to a goto.

Others suggested other ways to write code equivalent to their interpretation of luke of cornell's original request.

Dave of infe asked for what we'd now describe as conditional compilation to do what C and C++ programmers now do with preprocessor conditionals. This was followed by questions about why. Code reuse was not on the radar to most users, so this had to be explained. There were several suggestions for other ways of doing it, and people who'd used similar features on other systems described what they'd used. I added this:

---------- response 12
  04/10/76     23.27     jones       mcl

An other approach used in CSP/30 FORTRAN:
(the CSP/30 is a 'minicomputer' with a 16 bit word
and a 120 nanosec. instruction time, weird machine).

Lines may begin with a blank or digit in which case
they are always compiled.

They may begin with A,B,C, ...Z, in which they are
compiled conditionally. The C option is normally
turned off so that comments are not compiled, and
the other letters are free to be used for conditional

$on A,B  $$to turn on compilation of lines marked A or B
$off A,C $$to turn off compilation of comments and A
A 120 ... $$this line will only be compiled if A is on

So again, we see that the idea is not really new to
higher level languages (being ancient in assemblers).

At the time, the speed of the CSP/30 was at the high end of what was considered possible, and to have a 16-bit minicomputer running this fast was almost unheard of. In any case, this thread continued with many other responses, some from people who really saw a need, ad others from people who saw no reason for such features.

John haefeli of orl provided an example snippet of Tutor code that behaved oddly, at least as he understood it. The issue involved the size command (controlling the size of displayed text). My reply:

---------- response 1
  04/10/76     23.37     jones       mcl

my understanding is that the erase command is changed by the
size command, that is it tries to erase an ammount that
corresponds to the space used by text in the current size.

This makes sense even, consider a unit that will erase
a nice rectangular space for a message (best done with
the erase command!) and then write that message; I think
most users will agree that the unit should work no matter
what -size- is in effect when the unit is -do-ne.

Elston of rhrc pointed out that there was something strange about sizes below .562497 where the area erased seemed to explode. Sizes below 1 had severe legibility p roblems, so most users, including me, never explored that size range.

Postings archived from PbNotes 1976-04-16 to 1976-04-28.

Bowrey of comm pointed out a bug when someone types a response long enough that it wraps and then presses the help key. Guerra of uimc pointed out a similar bugs, and discussed a kluge to deal with the issue. Tenczar of s agreed with Bowrey, recognized that the error was real, and suggested that guerra of uimc's "cludge" was correct. I pointed out the misspelling:

---------- response 5
  04/23/76     12.09     jones       mcl

kluge, not cludge!

It really is a word in German, it means clever.
(in German it may also have some ¬u stuff but I'm
not that good at it)

Debate about the origin and correct spelling kluge or kludge continues to this day. The ¬u in the text should be rendered as ü.

Travers of mxc pointed out that Tutor's boolean expressions were problematic because the behavior of the and and or operators was ill defined for non boolean values. He suggested a solution analogous to that of C. White of p noted that ill-defined behavior for non-boolean operands allowed more efficient code. I responded:

---------- response 2
  04/23/76     12.13     jones       mcl

The whole thing could be made right if 'tudor' had
some type checking and could then either generate an
error if the types of the operators on $and$ and $or$
were not Boolean (T/F) or it could stuff in slower but
more general code in that case.

(TUTORF, I know)