Groups keyboard shortcuts have been updated
Dismiss
See shortcuts

Fwd: SHRDLU and MicroPlanner

171 views
Skip to first unread message

Eric Swenson

unread,
Jul 22, 2024, 6:39:55 PM7/22/24
to PiDP-10
Please see the announcement, below, of a PR to add SHRDLU and MicroPlanner to the ITS build. 

Begin forwarded message:

From: Eric Swenson <er...@swenson.org>
Subject: SHRDLU and MicroPlanner
Date: July 22, 2024 at 3:36:36 PM PDT
Cc: Eric Swenson <er...@swenson.org>

Just wanted to let y’all know that I’ve created a PR in the GitHub.com/pdp-10/its repository for adding SHRDLU and MicroPlanner to the ITS build.  See the notes in the PR for details:  

Assuming the build passes, and the reviewers allow the PR to be merged, we’ll be able to play around with SHRDLU and MicroPlanner.




Lars Brinkhoff

unread,
Jul 23, 2024, 2:17:29 AM7/23/24
to PiDP-10
Eric Swenson wrote:
Please see the announcement, below, of a PR to add SHRDLU and MicroPlanner to the ITS build.

Thank you so much for this!  This is a major milestone for the restoration project.

Lars Brinkhoff

unread,
Jul 25, 2024, 7:20:44 AM7/25/24
to PiDP-10

johntk...@gmail.com

unread,
Jul 26, 2024, 12:03:06 PM7/26/24
to PiDP-10
Should running the install script again pull down the ITS image with SHRDLU updated?

On Thursday, July 25, 2024 at 4:20:44 AM UTC-7 Lars Brinkhoff wrote:
Sneak peek: https://youtu.be/7bu3cCCf7Zo

Eric Swenson

unread,
Jul 26, 2024, 12:16:09 PM7/26/24
to johntk...@gmail.com, PiDP-10
Well, it you already have an installed and running ITS system that you’ve customized and want to keep, then you may not want to wipe it out by another install.

However, if you don’t care about your current ITS system, then pulling the source tree and rebuilding will give you a new ITS with SHRDLU and MicroPlanner sources and executables.

When I want to preserve an existing system, but get new changes from the latest build, I typically build the source tree, take the the “output.tape” (which is a full backup of the newly built system), and then mount that tape on my existing system.  Then, I extract (using the LOAD/DUMP program) just want I want — in this case, the entire SHRDLU directory.

Let me know if you’d just like me to give you a tape with an updated SHRDLU directory that you can simply load on your existing system.

--
You received this message because you are subscribed to the Google Groups "PiDP-10" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pidp-10+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/pidp-10/b69de805-1084-4681-a279-b8ffa25bbe5bn%40googlegroups.com.

Win Heagy

unread,
Jul 27, 2024, 12:42:27 PM7/27/24
to PiDP-10
This sounds like a good way to go for those of us wanting to try the new SHRDLU build...especially if you already have a tape built.  However, I'm afraid many of us won't know the next steps needed to copy the rebuilt SHRDLU directory to our systems.  Is this something that can be explain in a forum or does it require some additional expertise?

Thanks,

Win

Eric Swenson

unread,
Jul 27, 2024, 1:36:59 PM7/27/24
to Win Heagy, PiDP-10
The process is quite simple, actually. 

1. Out the tape in the working directory established when you run the simulator.

2. Interrupt your running simulator by pressing the escape key chord, usually ^\ (Control-\).

3. Mount the tape. The command to use here varies by simulator. For pdp10-ka, it would be:

at mta shrdlu.tape 

For pdp10-ks and pdp10-kl, it would be:

at tua shrdlu.tape

And for klh10, it would be:

devmount mta0 shrdlu.tape ro

4. Continue the simulator, by issuing the “cont” command.

5. In a user process, run the DUMP (or LOAD) command by typing:

:dump<enter>

Or

Dump^k (Control-k)

6. Issue the “load” request, by entering “load<enter>”.

Then, when prompted with FILE=, provide the file pattern to load:

*;* *

To the next FILE= prompt, simply press <enter>.

7. The restore will take place and DUMP will prompt with an “_”. Issue the “quit” request. 

8. Verify that your SHRDLU directory has lots of files in it and that there exists “TS SHRDLU” and “TS PLNR” executables.

You could also verify that the following two files also exist:

LISP; SLAVE FASL
L; SLAVE 11

It is *possible* that the executables won’t work on your possibly different machine with redumping them. To redump SHRDLU, you do this:

:cwd shrdlu 
:lisp
n
(load ‘loader)
(loadshrdlu)
(dump-it)
:pdump ts shrdlu
:kill

To redump PLNR (micro planner), you do this:

:cwd shrdlu 
:lisp
n
(load ‘loader)
(load ‘plnrfi)
(loadplanner)
(dump-planner)
:pdump ts plnr
:kill

— Eric (KC6EJS)

On Jul 27, 2024, at 09:42, Win Heagy <whe...@gmail.com> wrote:

This sounds like a good way to go for those of us wanting to try the new SHRDLU build...especially if you already have a tape built.  However, I'm afraid many of us won't know the next steps needed to copy the rebuilt SHRDLU directory to our systems.  Is this something that can be explain in a forum or does it require some additional expertise?

Lars Brinkhoff

unread,
Jul 27, 2024, 2:40:21 PM7/27/24
to PiDP-10
If you don't want to build ITS yourself, the latest "output.tape" should be here:

Eric Swenson

unread,
Jul 27, 2024, 3:06:41 PM7/27/24
to Lars Brinkhoff, PiDP-10
Right. And if you want to extract onto your existing ITS, mount that output tape, and run DUMP, issue the “load” request and specify these three file patterns when prompted:

SHRDLU;* *
L;SLAVE *
LISP;SLAVE FASL

— Eric (KC6EJS)

On Jul 27, 2024, at 11:40, Lars Brinkhoff <lars.br...@gmail.com> wrote:


If you don't want to build ITS yourself, the latest "output.tape" should be here:

--
You received this message because you are subscribed to the Google Groups "PiDP-10" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pidp-10+u...@googlegroups.com.

Eric Swenson

unread,
Jul 27, 2024, 4:08:40 PM7/27/24
to Win Heagy, PiDP-10
Here is a tape that contains just the SHRDLU directory, as well as L;SLAVE 11 and LISP;SLAVE FASL.  You should be able to LOAD this on on existing ITS to get SHRDLU and MicroPlanner.


— Eric

Eric Swenson

unread,
Jul 27, 2024, 4:40:35 PM7/27/24
to Win Heagy, PiDP-10
I’ve been fixing bugs in SHRDLU and running/testing without the Type 340 display (because it is much faster and because the Type 340 display emulation or ITS slave interface to it is buggy and sometimes dies), and I just tried with the display again, and got this error:

;BLINK UNDEFINED FUNCTION OBJECT

;BKPT UNDF-FNCTN

Turns out that TWUTIL, loaded for the non-340 case, defines this function, but the 340 case doesn’t.  Not really sure why, nor what the definition should be (I”ll figure that out).  But if you run into this, you can simply, (at the above breakpoint), type:

(defun blink (x) nil)

And then you can proceed from the breakpoint by typing <escape>P<space>.

Alternatively, you can add this function definition to SETUP >, by changing:

  (COND ((NOT WANT-DISPLAY)
         (NO340)
         (putprop (quote blink)(function (lambda (a) nil)) 'expr)
         (putprop (quote moveto)(function (lambda (x y z) nil)) 'expr)
         (putprop (quote grasp)(function (lambda (a) nil)) 'expr)
         (putprop (quote ungrasp)(function (lambda () nil)) 'expr)
         ))

to

  (COND ((NOT WANT-DISPLAY)
         (NO340)
         (putprop (quote blink)(function (lambda (a) nil)) 'expr)
         (putprop (quote moveto)(function (lambda (x y z) nil)) 'expr)
         (putprop (quote grasp)(function (lambda (a) nil)) 'expr)
         (putprop (quote ungrasp)(function (lambda () nil)) ‘expr)
 (defun blink (x) nil)
         ))

If you update setup, then dump out a new SHRDLU by doing (from DDT):

:cwd shrdlu 
:lisp
n
(load ‘loader)
(loadshrdlu)
(dump-it)
:pdump ts shrdlu
:kill

Eric Swenson

unread,
Jul 27, 2024, 5:00:24 PM7/27/24
to Win Heagy, PiDP-10
I’m sorry, folks.  Had a brain bubble in my last email (below).  The change you want to to SETUP is this:

       (putprop (quote blink)(function (lambda (a) nil)) 'expr)
       (COND ((NOT WANT-DISPLAY) (NO340)
          (putprop (quote moveto)(function (lambda (x y z) nil)) 'expr)
          (putprop (quote grasp)(function (lambda (a) nil)) 'expr)
          (putprop (quote ungrasp)(function (lambda () nil)) ‘expr)

In order words, move the expression:

 (putprop (quote blink)(function (lambda (a) nil)) ‘expr)

From inside the COND to outside it (before it).  This definition of blink needs to be done in both the 340 and non-340 cases, as no source file currently provides that definition.  

You don’t need a:

(defun blink (x) nil), since that is what the PUTPROP (above) is doing.  Note: using PUTPROP to define a function like this is old/obsolete, but commonplace back in the early 70s before DEFUN was introduced.

— Eric

Eric Swenson

unread,
Jul 27, 2024, 5:04:25 PM7/27/24
to Win Heagy, PiDP-10
Correction:  

       (putprop (quote blink)(function (lambda (a) nil)) 'expr)
       (COND ((NOT WANT-DISPLAY) (NO340)
          (putprop (quote moveto)(function (lambda (x y z) nil)) 'expr)
          (putprop (quote grasp)(function (lambda (a) nil)) 'expr)
          (putprop (quote ungrasp)(function (lambda () nil)) 'expr)))

Note the extra two parentheses at the end of the last putprop to close out the cond.

Sorry for not testing this before I sent out email.

Win Heagy

unread,
Jul 27, 2024, 8:11:51 PM7/27/24
to PiDP-10
I loaded from the SHRDLU tape tonight and it seems to be working.  I'm spinning my wheels a bit trying to figure out how to make SHRDLU do anything, but it seems to execute Ok and displays on the 340.  Maybe I'm having issues described above and need to make the corrections described by Eric.

Thanks,
Win

Eric Swenson

unread,
Jul 27, 2024, 8:49:39 PM7/27/24
to Win Heagy, PiDP-10
To make it do anything, you have to give it commands. See this script session log as an example of things you can try:



— Eric (KC6EJS)

On Jul 27, 2024, at 17:11, Win Heagy <whe...@gmail.com> wrote:

I loaded from the SHRDLU tape tonight and it seems to be working.  I'm spinning my wheels a bit trying to figure out how to make SHRDLU do anything, but it seems to execute Ok and displays on the 340.  Maybe I'm having issues described above and need to make the corrections described by Eric.

Win Heagy

unread,
Jul 27, 2024, 9:29:14 PM7/27/24
to PiDP-10
I think I'm missing some of the initialization commands after startup.  Specifically...
READY ^B ;BKPT ^B (setq nostop t) T $p

Are these commands required? And if so, what is the $p.   

Thanks,

Win

Eric Swenson

unread,
Jul 27, 2024, 9:55:58 PM7/27/24
to Win Heagy, PiDP-10
You actually don’t need to do do that bit, as it turns out it appeared to mask some proper SHRDLU responses, and if you look for their in the transcript, I set NOSTOP back to NIL. But it won’t hurt.

In any case, $p means to type <Escape>p<space> or <Escape>p<enter>

It is an homage to ITS and DDT, where $P directs DDT to continue running the current job. In MacLISP on ITS, $p proceeds from a Lisp breakpoint. 

If you ever hit a breakpoint in LISP (eg from evaluation (break xxx), you can continue execution by issuing that directive. In this case, I forced a breakpoint by typing ^b (Control-b), which got me to a LISP REPL (read-eval-print-loop), where I issued the (setq nostop t) expression. Then I continued execution.

The NOSTOP variable tells SHRDLU to not stop on some errors. It also seems to cause output of correct responses to NOT be emitted. This seems like a bug and I’ll be trying to look into that.

Hope this helps.

— Eric (KC6EJS)

On Jul 27, 2024, at 18:29, Win Heagy <whe...@gmail.com> wrote:

I think I'm missing some of the initialization commands after startup.  Specifically...

Win Heagy

unread,
Jul 28, 2024, 8:33:01 AM7/28/24
to PiDP-10
Ok, thanks, that's helpful.  It's working now.  Part of it was that it's not quite as responsive as the Demo appears to be (of course).  It appears to need a bit longer to calculate a plan.

Nice work to everyone involved in bringing this back to life.  

Win

Eric Swenson

unread,
Jul 28, 2024, 11:16:04 AM7/28/24
to Win Heagy, PiDP-10
The demo (TWDEMO) does not use SHRDLU. It is a scripted replay of the graphics commands (and the text inputs and outputs) that mimic interactions with SHRDLU. If you run SHRDLU without the 340 display, you can load a source file (TWUTIL) that will emit to the console the graphics commands (eg MOVE-TO, GRASP, UNGRASP, etc). TWDEMO was created by capturing all these graphics commands, as well as SHRDLU commands/questions and responses. This was turned into a runnable demo. 

That’s why it is so fast. 

However, the real SHRDLU will get faster than it currently is when Inget it compiled. I wanted to get it working first, since debugging and fixing bugs is a lot easier when it is interpreted. Soon I’ll start to work on getting it compiled. 

— Eric (KC6EJS)

On Jul 28, 2024, at 05:33, Win Heagy <whe...@gmail.com> wrote:

Ok, thanks, that's helpful.  It's working now.  Part of it was that it's not quite as responsive as the Demo appears to be (of course).  It appears to need a bit longer to calculate a plan.

Steven A. Falco

unread,
Jul 28, 2024, 4:02:09 PM7/28/24
to pid...@googlegroups.com
On 7/27/24 08:49 PM, Eric Swenson wrote:
> To make it do anything, you have to give it commands. See this script session log as an example of things you can try:
>
>
> preview.png
> shrdlu-transcript-20240725 <https://s3.amazonaws.com/eswenson-its/public/shrdlu-transcript-20240725.txt>
> Text Document · 7 KB <https://s3.amazonaws.com/eswenson-its/public/shrdlu-transcript-20240725.txt>
>
> <https://s3.amazonaws.com/eswenson-its/public/shrdlu-transcript-20240725.txt>
>
> — Eric (KC6EJS)

I ran through most of the transcript and the results matched up perfectly. It is truly amazing that you've been able to resurrect this!

Steve


Eric Swenson

unread,
Jul 28, 2024, 4:04:32 PM7/28/24
to Steven A. Falco, pid...@googlegroups.com
Thanks Steve. My plan going forward is to get it all to run compiled and to fix any bugs I’ve found (or have been reported). There are some limitations that could stand some improvements as well.

— Eric (KC6EJS)

> On Jul 28, 2024, at 13:02, Steven A. Falco <steve...@gmail.com> wrote:
> --
> You received this message because you are subscribed to the Google Groups "PiDP-10" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to pidp-10+u...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/pidp-10/31ec57ee-c329-4f19-ae94-5c83b60259b5%40gmail.com.

Win Heagy

unread,
Jul 30, 2024, 10:51:58 AM7/30/24
to Lars Brinkhoff, PiDP-10
Great, thanks guys...will give this a try.

Win


On Sat, Jul 27, 2024 at 2:40 PM Lars Brinkhoff <lars.br...@gmail.com> wrote:
If you don't want to build ITS yourself, the latest "output.tape" should be here:

--
You received this message because you are subscribed to a topic in the Google Groups "PiDP-10" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/pidp-10/wuuzkAa77Lc/unsubscribe.
To unsubscribe from this group and all its topics, send an email to pidp-10+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/pidp-10/63152b71-9623-4202-a8f9-90b5d70f3ffdn%40googlegroups.com.
Reply all
Reply to author
Forward
0 new messages