PDP-10 / its

Incompatible Timesharing System
Other
834 stars 80 forks source link

CLOGO document #1197

Open Alexey-Slyusar opened 5 years ago

Alexey-Slyusar commented 5 years ago

Here is a link to a relatively comprehensive description of the CLOGO Language and System This is a very early draft of the document and a lot are missing. I am working to get it finished.

A Description of the LOGO Language and System

I'm going to make a new branch alexey/CLOGO to add the document. @larsbrinkhoff, could you please suggest a name for the document. Is "doc/info/clogo.order" name in line with the ITS practice?

larsbrinkhoff commented 5 years ago

Great, thanks!

The files named ORDER are usually brief lists of commands. Your document is more comprehensive. I'd say .INFO.; CLOGO MANUAL or similar would be in order. In the Unix file system, that would be doc/_info_/clogo.manual.

Alexey-Slyusar commented 5 years ago

I will follow the convention :-) I've made the alexey/CLOGO branch and put draft to doc/_info_/clogo.manual. Thank you!

Alexey-Slyusar commented 5 years ago

Hi, Lars,

I am working on part 2.5 "Filing". There are SAVE and GET procedures in the CLOGO vocabulary that serve, respectively, to save and retrieve an entry from a file. As far as I am understand, the procedures accept two argument: directory name and file name. I did some try and error iterations, but I still cannot figure out how to provide right form of the arguments to the procedures.

Here is short session: ?SAVE TWO FILE NAMES NEEDED. ?SAVE "ALEXEY;" "LOGO" THERE IS NO FILE DIRECTORY. ?SAVE "HQM;" "LOGO" THERE IS NO FILE DIRECTORY.

Do you have any ideas how to provide right form of the arguments to the procedures? Thanks in advance!

eswenson1 commented 5 years ago

I assume you tried to specify a directory without the ";"? For example:

SAVE HQM LOGO

Also, do you have a home directory? If not, perhaps the "THERE IS NO FILE DIRECTORY" is saying that it can't write to ; FN1 FN2, where the SAVE command only accepts an FN1 and FN2.

Try doing a

:CWD .TEMP.;

before starting CLOGO. That will ensure that the default directory used by CLOGO will be (should be) .TEMP.;, which, of course, we know exists.

Then, try:

SAVE FOO BAR

And see if a) it works and b) if it wrote the file .temp.;foo bar.

Alexey-Slyusar commented 5 years ago

@eswenson1, thank you!

I've tried things out, but unsuccessfully. Here is result:

:CWD .TEMP.; *:СLOGO

LOGO.44
?SAVE FOO BAR THERE IS NO FILE DIRECTORY. ?SAVE "FOO" "BAR" THERE IS NO FILE DIRECTORY. ?SAVE ".TEMP." "FOO.BAR" THERE IS NO FILE DIRECTORY. ?SAVE ".TEMP.;" "FOO.BAR" THERE IS NO FILE DIRECTORY. ?GB

AND A PLEASANT DAY TO YOU!
:listf

DB .TEMP. FREE BLOCKS #0=19739

I'll do more exploration in the evening.

Thanks again!

eswenson1 commented 5 years ago

Maybe the directory name is hard coded, but doesn’t exist? Where is the source for CLOGO?

-- Eric

On Sep 12, 2018, at 22:29, Alexey-Slyusar notifications@github.com wrote:

@eswenson1, thank you!

I've tried things out, but unsuccessfully. Here is result:

:CWD .TEMP.; *:СLOGO

LOGO.44 ?SAVE FOO BAR THERE IS NO FILE DIRECTORY. ?SAVE "FOO" "BAR" THERE IS NO FILE DIRECTORY. ?SAVE ".TEMP." "FOO.BAR" THERE IS NO FILE DIRECTORY. ?SAVE ".TEMP.;" "FOO.BAR" THERE IS NO FILE DIRECTORY. ?GB

AND A PLEASANT DAY TO YOU! :listf

DB .TEMP. FREE BLOCKS #0=19739

I'll do more exploration in the evening.

Thanks again!

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

larsbrinkhoff commented 5 years ago

We have no source code. And not even a clue where the program comes from; whether it's a port or originally by MIT.

Alexey-Slyusar commented 5 years ago

The sintax and general behaviour of the CLOGO are almost identical with BBN LOGO. Thus, I think CLOGO is probably the MIT port of the BBN LOGO and the earliest MIT Logo System implementation. But it is only my humble opinion.

P.S. There are no the DISPLAY TURTLE related procedures in CLOGO, only floor turtle routines are presented. So, in any case, it is an earlier implementation than MIT 11LOGO and MIT LISP LOGO. But we have very stable CLOGO binary version, circa 1975 or so if I am not mistaken.

чт, 13 сент. 2018 г. в 9:01, Lars Brinkhoff notifications@github.com:

We have no source code. And not even a clue where the program comes from; whether it's a port or originally by MIT.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/PDP-10/its/issues/1197#issuecomment-420893247, or mute the thread https://github.com/notifications/unsubscribe-auth/AoaupAiX3EFMucHjSPMDxKaDAJQHCLAdks5uafSqgaJpZM4WWLcn .

larsbrinkhoff commented 5 years ago

I compared CLOGO disassembly with some kind of "BBN Logo", but they were not similar at all.

Our current version of CLOGO is from 1975. There are also files going back to 1972.

Alexey-Slyusar commented 5 years ago

My humble opinion about the similarity between CLOGO and BBN LOGO is based on the BBN reports which descibe the BBN LOGO language and system and my own experience with our current version of CLOGO. Perhaps CLOGO is not a direct port, but an implementation written from scratch that functionally repeats the BBN LOGO. Therefore they are disassembly different but functionally and syntactically similar. But this is only my guess :-)

чт, 13 сент. 2018 г. в 11:10, Lars Brinkhoff notifications@github.com:

I compared CLOGO disassembly with some kind of "BBN Logo", but they were not similar at all.

Our current version of CLOGO is from 1975. There are also files going back to 1972.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/PDP-10/its/issues/1197#issuecomment-420921630, or mute the thread https://github.com/notifications/unsubscribe-auth/AoaupEXLbE5Kb-tz3uN8Gbq4S31_1Bqiks5uahMNgaJpZM4WWLcn .

Alexey-Slyusar commented 5 years ago

I'm going to try out whether the directory name is hard coded. Maybe I will be lucky enough to guess the name of the hard coded directory.To do that I'm going to create directories named like "LOGO", "CLOGO" etc. and try to save a file in. Lars, you said that there are also files going back to 1972. Are these files stored in directories? If so, what are the names of the directories? I learned that the command for creating directory in ITS is :print dir;..new. (udir), but I cannot figure out how to use it properly. Could you please provide the exact command syntax for creating, for example, DSK:LOGO; directory? Thank you very much for your help and sorry for such silly question.

eswenson1 commented 5 years ago

If you want to create a directory called FOO, do this:

:print foo;..new. (udir)

or:

^R foo; ..new. (udir)

eswenson1 commented 5 years ago

You will get an error message when you do this. Just ignore the error message. Type FOO^F to see if the (empty) directory got created. Note: if you don't put anything in the directory, when the system is rebooted, the empty directory will get automatically deleted.

eswenson1 commented 5 years ago

You could read the binary file into emacs (on ITS) and look for "interesting strings". You might be able to spot any hardcoded directory names. Alternatively, you could try to find where the file i/o is happening and use DDT to debug the file i/o calls. Of course, trying to find where to put the breakpoint is difficult when you have no sources and when the binary is large.

Alexey-Slyusar commented 5 years ago

Eric, thank you very much!

larsbrinkhoff commented 5 years ago

The binaries were in SYS and SYSBIN, so that's no clue unfortunately.

eswenson1 commented 5 years ago

Where can I find this binary?

Alexey-Slyusar commented 5 years ago

I'll try to read the binary file using emacs on ITS. I am just a logo fan, so using DDT to debug the file i/o calls is too complicated for me now. But I am going to develop my skill further :-) The most straightforward way, I think, is to transform myself from a logo programmer to a lisp / scheme programmer. The excellent medium to do that is LISP LOGO environment. I believe that we can get it up and running on ITS sooner or later :-)

Thank you!

eswenson1 commented 5 years ago

I'm all for you transforming yourself into a Lisp / Scheme programmer! If you want a nice development environment for Scheme, try https://racket-lang.org/

Alexey-Slyusar commented 5 years ago

Thank you!

I am using DrRacket already in accompany with the wonderful Simply Scheme book by Dr. Brian Harvey. It is a prequel for SICP by Abelson and Sussman. To be honest I tried SCIP but it is to complicated for me and I plan to read it after I will absorb all Simply Scheme ideas.

But at the same time I am huge logo fan. I very like logo and I think that the idea to have Logo and Lisp environment simultaneously is just amazing. So Lisp Logo is very interesting for me.

Thanks again, Eric! I am happy to join ITS community there are many interesting people here and interesting things to play with :-)

larsbrinkhoff commented 5 years ago

Eric, the binary file is HQM; CLOGO BIN, and it's purified to SYS; TS CLOGO.

larsbrinkhoff commented 5 years ago

It's strange that we have a set of binaries in the period 1972-1976, but no source. Maybe it's just because the source wasn't called CLOGO?

Alexey-Slyusar commented 5 years ago

The most obvious guesses for the hard coded directory name did not work. I loaded the binary file to emacs and looking for "interesting strings". There is no result yet.

I get back with the result in the evening and I want to quote a CLOGO message here: "AND A PLEASANT DAY TO YOU!"

larsbrinkhoff commented 5 years ago

EMACS will only display 7-bit ASCII text. The directory names are likely to be a ASCII subset stored as 6-bit characters.

I have a disassembler that runs in Unix. It will display most information inside a binary, including symbol table and possible 7-bit and 6-bit strings.

Running it on HQM; CLOGO BIN, I see:

Some possible directory or file names:

Interesting uses of .SUSET:

larsbrinkhoff commented 5 years ago

From this, I tracked down some more information:

RJL = Ron Lebel, a major force in the MIT Logo group.

From https://logothings.github.io/logothings/The80s.html:

Our first full year Logo class was in 1968-69 with seventh graders at Muzzey Junior High School. We were at BBN at the time. In the fall of 1969 I became a member of the AI Lab and we started our Logo work there.

The first graphics turtle and a floor turtle were built and running by

The graphics turtle was not portable. Its display was driven by a Digital PDP-6 connected to a Logo running on the lab’s PDP-10. First programs were written by Bill Gosper and other lab hackers. The yellow turtle was assembled by Tom Callahan. Yellow Turtle

(Note the turtle lamp.)

Again looking inside CLOGO BIN, I see there's a PDP6O symbol pointing to ['USR ? 0 ? SIXBIT /PDP6/]. In other words, this program is using the attached PDP-6 computer. So it looks like this is the version mentioned in the quote.

larsbrinkhoff commented 5 years ago

@natgoodman, we have found some more information about CLOGO. If you look at the comment above this one, does it ring any bells? Thank you!

larsbrinkhoff commented 5 years ago

IPG could be Ian P. Goulden. Was he involved with Logo?

larsbrinkhoff commented 5 years ago

Another picture of the yellow turtle:
Yellow Turtle

And a video:
http://youtu.be/KeFhFPNO8hc

Alexey-Slyusar commented 5 years ago

Oh Lars, it's just fantastic brainstorm session, thank you for the information! And thanks for nice pictures, of course :-) I'll try out the names of the direcrories you mentioned.

пт, 14 сент. 2018 г. в 10:23, Lars Brinkhoff notifications@github.com:

Another picture of the yellow turtle: [image: Yellow Turtle] https://user-images.githubusercontent.com/775050/45535720-c685c880-b7ff-11e8-9fe5-ef6da0ab0184.jpg

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/PDP-10/its/issues/1197#issuecomment-421256332, or mute the thread https://github.com/notifications/unsubscribe-auth/AoaupNhx5amyZI11qjxGnQ1TI1P6ZPL0ks5ua1l4gaJpZM4WWLcn .

natgoodman commented 5 years ago

Hi Lars

I looked at the thread. You’re making impressive progress! The comment jogged my memory a tad. I remember the Muzzy Junior High effort - not sure I ever went out there, it may have been just as I was joining the project. I vaguely remember the yellow turtle. By my time we had started the move to the little plexiglass dome covered beastie. I don’t remember running the turtle from the PDP-6. Again, perhaps before my time or just as I was joining the project.

I also checked out Cynthia Solomon’s website. A trove of LOGO history!

All the best, Nat

On Sep 13, 2018, at 11:34 PM, Lars Brinkhoff <notifications@github.com mailto:notifications@github.com> wrote:

@natgoodman https://github.com/natgoodman, we have found some more information about CLOGO. If you look at the comment above this one, does it ring any bells? Thank you!

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/PDP-10/its/issues/1197#issuecomment-421246033, or mute the thread https://github.com/notifications/unsubscribe-auth/ALpP_nrYNYBQLvntf3KIcrdz9oktAnuyks5ua03YgaJpZM4WWLcn.

eswenson1 commented 5 years ago

@Alexey-Slyusar I took Sussman's course back in 1976 and really like the SICP book. And yes, my kids, who took a functional programming class in Scheme at their high school said that they used a book that followed SICP, but was modernized and geared to DrScheme use. I suppose we shoudn't burden readers of this issue thread with off-topic stuff. Feel free to write me at eric at swenson.org if you want to chat further about this kind of stuff. I'm currently a FP developer who uses Scala!

Alexey-Slyusar commented 5 years ago

Eric, it is just amazing! I really appreciate such opportunity and will definitely write to you to chat further! Thank you very much!

Alexey-Slyusar commented 5 years ago

The SAVE command doesn't accept the LOGO, .LOGO., LESSON directory names as an argument. But there is interesting behavior:

:CWD .LOGO.; *:LOGO

LOGO.44
?TO HELLO

10 PRINT "HELLO" END HELLO DEFINED ?SAVE .LOGO. HELLO THERE IS NO FILE DIRECTORY. ?SAVE ".LOGO." "HELLO" THERE IS NO FILE DIRECTORY. ?SAVE .LOGO.; HELLO ERROR AT 15357 ?

Please note that there is ERROR AT 15357 message appeared when SAVE evaluated with a semicolon at the end of the .LOGO. argument. Any ideas?

Alexey-Slyusar commented 5 years ago

It seems that not only .LOGO. actually, but in case of any argument with semicolon at the end: SAVE FOO; BAR

eswenson1 commented 5 years ago

And does it make any difference whether the directory exists or not?

larsbrinkhoff commented 5 years ago

I have found something that may be CLOGO sources in the LOGO directory. But it'll be a while before we can see them.

Alexey-Slyusar commented 5 years ago

No, there is no difference whether the directory exist or not. The error is appeared in both cases.

Alexey-Slyusar commented 5 years ago

Oh, I just saw the message from Lars! So there is a hope to get CLOGO sources :-)

Alexey-Slyusar commented 5 years ago

In connection with the yellow turtle turtle lamp, there are LAMPON and LAMPOFF commands in the CLOGO vocabulary :-)

LOGO.44
?LAMPON YOU HAVE TO DO A SETTURTLE ?SETTURTLE T00 ?LAMPON ci"hb? ?LAMPOFF ci!hb?

larsbrinkhoff commented 5 years ago

The terminal line is exposed outside the PDP-10 emulator as a TELNET port. It would be possible to attach an external program which listens to the commands sent out to the line. Maybe write it in a modern Logo! :-)

Alexey-Slyusar commented 5 years ago

Great idea, Lars, I must say :-)

To make a step further, there is Brian Silverman's LogoChip project. The LogoChip is programmable and inexpensive embedded microcontroller (Microchip PIC18F2320 microcontroller that has LogoChip firmware installed). http://www.playfulinvention.com/portfolio/logo/?doing_wp_cron=1537000645.8897709846496582031250

Potentially, we can interface CLOGO with LogoChip and recreate the Yellow Turtle controlled by CLOGO :-)

By the way, what the number of the TELNET port that used by PDP-10 emulator?

P.S. Brian Silverman is a Consulting Scientist to the MIT Media Lab and notable Logo developer and cited by Brian Harvey as one of the contributors to the development of Logo at MIT.

larsbrinkhoff commented 5 years ago

The TELNET port is number 10000 with the KA10 simulator, and 10004 with SIMH.

I have tried to contact Brian Silverman a few times, but so far without success.

Alexey-Slyusar commented 5 years ago

Lars, thank you! I think that your great idea to interface CLOGO with an external program deserve a separate issue, so I've created it. #1227 I hope you agree. :-)

Alexey-Slyusar commented 5 years ago

I tried the mentioned directories once again (except for LOGO BUGS and LOGO NEWS**), but unsuccessful.

I still don't figure out how SAVE works.

default

** I got LOGO B and LOGO N instead.

^R LOGO.BUGS;..NEW. (UDIR) DSK: LOGO.B; ..NEW. (UDIR) - FILE NOT FOUND DSK: DIR LOGO.B CREATED BY ALEXEY HACTRN 20:52:57 ^R LOGO.NEWS;..NEW. (UDIR) DSK: LOGO.N; ..NEW. (UDIR) - FILE NOT FOUND DSK: DIR LOGO.N CREATED BY ALEXEY HACTRN 20:53:29

larsbrinkhoff commented 5 years ago

You did it right, but ITS directory names can only be six characters.

Alexey-Slyusar commented 5 years ago

AIM 307a says that proper syntax for SAVE command is: SAVE FOO BAR DSK HENRY We assume that the directory name is hard coded in CLOGO. But all of the attempts to find the proper name for the directory felled. But maybe the disk name (I mean DSK) is hardcoded too? What is possible variants for the disk name?

eswenson1 commented 5 years ago

Doesn’t “save foo bar dsk henry” imply that these four arguments are FN1, FN2, DEVICE, DIRECTORY? “DSK” is a standard device name, and the use of four components suggests a full ITS file name spec.

larsbrinkhoff commented 5 years ago

There are some new files. I beleve these are much of the source code for CLOGO, though not complete enough to assemble them. Maybe these can answer how SAVE is to be used.

https://github.com/PDP-10/its-vault/tree/master/files/rjl/

Alexey-Slyusar commented 5 years ago

Yes, Eric, it is imply four arguments exactly. But I thought that DSK may have different from the standard device name.

Alexey-Slyusar commented 5 years ago

Thank you for the link, Lars! I'll check the source files for possible SAVE usage hints.