diff --git a/Makefile b/Makefile index e4570845..f0cdcee9 100644 --- a/Makefile +++ b/Makefile @@ -28,7 +28,7 @@ SRC = syseng sysen1 sysen2 sysen3 sysnet kshack dragon channa \ fonts zork 11logo kmp info aplogo bkph bbn pdp11 chsncp sca music1 \ moon teach ken lmio1 llogo a2deh chsgtv clib sys3 lmio turnip \ mits_s rab stan_k bs cstacy kp dcp2 -pics- victor imlac rjl mb bh \ - lars drnil radia gjd maint bolio cent + lars drnil radia gjd maint bolio cent shrdlu DOC = info _info_ sysdoc sysnet syshst kshack _teco_ emacs emacs1 c kcc \ chprog sail draw wl pc tj6 share _glpr_ _xgpr_ inquir mudman system \ xfont maxout ucode moon acount alan channa fonts games graphs humor \ @@ -37,7 +37,7 @@ DOC = info _info_ sysdoc sysnet syshst kshack _teco_ emacs emacs1 c kcc \ combat pdl minits mits_s chaos hal -pics- imlac maint cent ksc klh BIN = sys sys1 sys2 emacs _teco_ lisp liblsp alan inquir sail comlap \ c decsys graphs draw datdrw fonts fonts1 fonts2 games macsym \ - maint imlac _www_ gt40 llogo bawden sysbin -pics- lmman r + maint imlac _www_ gt40 llogo bawden sysbin -pics- lmman r shrdlu MINSRC = midas system $(DDT) $(SALV) $(KSFEDR) $(DUMP) # These are not included on the tape. diff --git a/bin/shrdlu/ts.twdemo b/bin/shrdlu/ts.twdemo new file mode 100644 index 00000000..85f010de Binary files /dev/null and b/bin/shrdlu/ts.twdemo differ diff --git a/doc/programs.md b/doc/programs.md index 906253ff..3481c559 100644 --- a/doc/programs.md +++ b/doc/programs.md @@ -343,6 +343,7 @@ - TTYLIN, Chaosnet TTYLINK server. - TTYSWP, swap TTYs. - TTYTST, echo characters exactly as typed. +- TWDEMO, scripted demonstration of SHRDLU. - TYPE8, type 8-bit file. - UFIND, find users. - ULISP, Lisp in Lisp. diff --git a/src/shrdlu/demo.flick b/src/shrdlu/demo.flick new file mode 100644 index 00000000..8413e68a --- /dev/null +++ b/src/shrdlu/demo.flick @@ -0,0 +1,305 @@ +(SETQ ERRLIST '((VALRET ':TWDEMO/ ))) +(IOC W) +(SETQ PCONSTANT 1)(SETQ PRANDOM 0) +(SETQ WAIT 100) +(SETQ MECONSTANT 1)(SETQ MERANDOM 0) +(SETQ YOUCONSTANT 1)(SETQ YOURANDOM 3) +(SETQ TEXTSIZE 2) +(DISME)(DISYOU)(DTHRU) + + +@ PICK UP A BIG RED BLOCK.@ +(DISME)(FRAME WAIT) +(MOVETO 100 340 500) +(GRASP (QUOTE :B7)) +(MOVETO 600 374 200) +(UNGRASP) +(MOVETO 100 440 300) +(GRASP (QUOTE :B6)) +(MOVETO 100 440 1000) +(DTHRU) +@ OK.@ +(FRAME WAIT)(DISYOU)(DTHRU) +@GRASP THE PYRAMID.@ +(DISME)(FRAME WAIT)(DTHRU) +@ I DON'T UNDERSTAND WHICH PYRAMID + YOU MEAN.@ +(FRAME WAIT)(DISYOU)(DTHRU) +@ FIND A BLOCK WHICH IS TALLER THAN THE ONE + YOU ARE HOLDING AND PUT IT INTO THE + BOX.@ +(DISME)(FRAME WAIT)(DTHRU)) +@BY "IT", I ASSUME YOU MEAN THE BLOCK + WHICH IS TALLER THAN THE ONE I AM + HOLDING.@ +(MOVETO 140 600 300) (UNGRASP) (MOVETO 400 7 +00 400) (GRASP (QUOTE :B10)) (MOVETO 700 1100 + 401) (UNGRASP)(DTHRU) +(DISME)(DTHRU) +@ OK.@ +(FRAME WAIT)(DISYOU)(DTHRU) +@ WHAT DOES THE BOX CONTAIN?@ +(DISME)(FRAME WAIT)(DTHRU) +@ THE BLUE PYRAMID AND THE BLUE BLOCK.@ +(FRAME WAIT)(DISYOU)(DTHRU) + +@ WHAT IS THE PYRAMID SUPPORTED BY?@ +(DISME)(FRAME WAIT)(DTHRU) +@ THE BOX.@ +(FRAME WAIT)(DISYOU)(DTHRU) + +@ HOW MANY BLOCKS ARE NOT IN THE BOX?@ +(DISME)(FRAME WAIT)(DTHRU) +@ FOUR OF THEM.@ +(FRAME WAIT)(DISYOU)(DTHRU) + +@ IS AT LEAST ONE OF THEM NARROWER THAN + THE ONE WHICH I TOLD YOU TO PICK UP?@ +(DISME)(FRAME WAIT)(DTHRU) +@ YES, THE RED CUBE.@ +(FRAME WAIT)(DISYOU)(DTHRU) +@ IS IT SUPPORTED?@ +(DISME)(FRAME WAIT)(DTHRU) +@ YES, BY THE TABLE.@ +(FRAME WAIT)(DISYOU)(DTHRU) + +@ CAN THE TABLE PICK UP BLOCKS?@ +(DISME)(FRAME WAIT)(DTHRU) +@ NO.@ +(FRAME WAIT)(DISYOU)(DTHRU) +@CAN A PYRAMID BE SUPPORTED BY A BLOCK?@ +(DISME)(FRAME WAIT)(DTHRU) +@ YES.@ +(FRAME WAIT)(DISYOU)(DTHRU) +@CAN A PYRAMID SUPPORT A PYRAMID?@ +(DISME)(FRAME WAIT)(DTHRU) +@ I DON'T KNOW.@ +(FRAME WAIT)(DISYOU)(DTHRU) +@ STACK UP TWO PYRAMIDS.@ +(DISME)(FRAME WAIT)(DTHRU) +@ I CAN'T.@ +(FRAME WAIT)(DISYOU)(DTHRU) +@ WILL YOU PLEASE STACK UP BOTH OF THE + RED BLOCKS AND EITHER A GREEN CUBE OR + A PYRAMID?@ +(DISME)(FRAME WAIT) +(MOVETO 140 600 300) +(GRASP (QUOTE :B6)) +(MOVETO 274 1000 300) +(UNGRASP) +(MOVETO 600 374 200) +(GRASP (QUOTE :B7)) +(MOVETO 274 1000 500) +(UNGRASP) +(MOVETO 150 140 200) +(GRASP (QUOTE :B2)) +(MOVETO 1000 274 100) +(UNGRASP) +(MOVETO 150 140 100) +(GRASP (QUOTE :B1)) +(MOVETO 274 1000 600) +(UNGRASP) +(DTHRU) +@ OK.@ +(FRAME WAIT)(DISYOU)(DTHRU) +@ WHICH CUBE IS SITTING ON THE TABLE?@ +(DISME)(FRAME WAIT)(DTHRU) +@ THE LARGE GREEN ONE WHICH SUPPORTS + THE RED PYRAMID.@ +(FRAME WAIT)(DISYOU)(DTHRU) +@ IS THERE A LARGE BLOCK BEHIND A + PYRAMID?@ +(DISME)(FRAME WAIT)(DTHRU) +@ YES, THREE OF THEM: A LARGE RED + ONE, A LARGE GREEN CUBE, AND THE + BLUE ONE.@ +(FRAME WAIT)(DISYOU)(DTHRU) +@ PUT A SMALL ONE ONTO THE GREEN CUBE + WHICH SUPPORTS A PYRAMID.@ +(DISME)(FRAME WAIT) +(GRASP (QUOTE :B1)) +(MOVETO 477 40 300) +(UNGRASP) +(DTHRU) +@ OK.@ +(FRAME WAIT)(DISYOU)(DTHRU) +@PUT THE LITTLEST PYRAMID ON TOP OF IT.@ +(DISME)(FRAME WAIT) +(MOVETO 1000 274 100) +(GRASP (QUOTE :B2)) +(MOVETO 477 40 400) +(UNGRASP) +(DTHRU) +@ OK.@ +(FRAME WAIT)(DISYOU)(DTHRU) +@ DOES THE SHORTEST THING THE TALLEST + PYRAMID'S SUPPORT SUPPORTS SUPPORT + ANYTHING GREEN?@ +(DISME)(FRAME WAIT)(DTHRU) +@ YES, THE GREEN PYRAMID.@ +(FRAME WAIT)(DISYOU)(DTHRU) +@ WHAT COLOR IS IT?@ +(DISME)(FRAME WAIT)(DTHRU) +@BY "IT", I ASSUME YOU MEAN THE SHORTEST + THING THE TALLEST PYRAMID'S SUPPORT + SUPPORTS.@ +(FRAME WAIT) (DISME)(DTHRU) +@ RED@ +(FRAME WAIT)(DISYOU)(DTHRU) +@ HOW MANY THINGS ARE ON TOP OF GREEN + CUBES?@ +(DISME)(FRAME WAIT)(DTHRU) +@ I'M NOT SURE WHAT YOU MEAN BY "ON TOP + OF "IN THE PHRASE "ON TOP OF GREEN + CUBES " . + DO YOU MEAN: +1 - DIRECTLY ON THE SURFACE +2 - ANWHERE ON TOP OF ?@ +(FRAME WAIT)(DISAD 'YOU NIL '/ 2)(DISME)(DTHRU) +@ THREE OF THEM.@ +(FRAME WAIT)(DISYOU)(DTHRU) +@ HAD YOU TOUCHED ANY PYRAMID BEFORE + YOU PUT THE GREEN ONE ON THE LITTLE + CUBE?@ +(DISME)(FRAME WAIT)(DTHRU) +@ YES, THE GREEN ONE.@ +(FRAME WAIT)(DISYOU)(DTHRU) +@ WHEN DID YOU PICK IT UP?@ +(DISME)(FRAME WAIT)(DTHRU) +@ WHILE I WAS STACKING UP THE RED CUBE, + A LARGE RED BLOCK AND A LARGE GREEN + CUBE.@ +(FRAME WAIT)(DISYOU)(DTHRU) +@ WHY?@ +(DISME)(FRAME WAIT)(DTHRU) +@ TO GET RID OF IT.@ +(FRAME WAIT)(DISYOU)(DTHRU) +@ WHY DID YOU DO THAT?@ +(DISME)(FRAME WAIT)(DTHRU) +@ TO CLEAN OFF THE RED CUBE.@ +(FRAME WAIT)(DISYOU)(DTHRU) +@ WHY DID YOU CLEAR OFF THAT CUBE?@ +(DISME)(FRAME WAIT)(DTHRU) +@ TO PUT IT ON A LARGE GREEN CUBE.@ +(FRAME WAIT)(DISYOU)(DTHRU) +@ WHY DID YOU DO THAT?@ +(DISME)(FRAME WAIT)(DTHRU) +@ TO STACK UP THE RED CUBE , A LARGE + RED BLOCK AND A LARGE GREEN CUBE.@ +(FRAME WAIT)(DISYOU)(DTHRU) +@ WHY DID YOU DO THAT?@ +(DISME)(FRAME WAIT)(DTHRU) +@ BECAUSE YOU ASKED ME TO.@ +(FRAME WAIT)(DISYOU)(DTHRU) +@ HOW DID YOU DO IT?@ +(DISME)(FRAME WAIT)(DTHRU) +@ BY PUTTING A LARGE RED BLOCK ON THE + TABLE ; THEN LETTING GO OF IT ; THEN + PUTTING A LARGE GREEN CUBE ON IT ; + THEN LETTING GO OF THAT CUBE ; THEN + PUTTING THE RED CUBE ON THAT CUBE ; + THEN LETTING GO OF THAT CUBE.@ +(FRAME WAIT)(DISYOU)(DTHRU) +@ HOW MANY OBJECTS DID YOU TOUCH WHILE + YOU WERE DOING IT?@ +(DISME)(FRAME WAIT)(DTHRU) +@ FOUR OF THEM.@ +(FRAME WAIT)(DISYOU)(DTHRU) +@ WHAT DID THE RED CUBE SUPPORT BEFORE + YOU STARTED TO CLEAN IT OFF?@ +(DISME)(FRAME WAIT)(DTHRU) +@ THE GREEN PYRAMID.@ +(FRAME WAIT)(DISYOU)(DTHRU) +@ THERE WERE FIVE BLOCKS TO THE LEFT OF + THE BOX THEN.@ +(DISME)(FRAME WAIT)(DTHRU) +@ NO, ONLY FOUR OF THEM: THE RED CUBE , + TWO LARGE GREEN CUBES AND A LARGE RED + BLOCK.@ +(FRAME WAIT)(DISYOU)(DTHRU) +@ PUT THE BLUE PYRAMID ON THE BLOCK IN + THE BOX.@ +(UNGRASP) +(MOVETO 740 740 201) +(GRASP (QUOTE :B4)) +(MOVETO 700 1100 601) +(DTHRU) +@ OK.@ +(FRAME WAIT)(DISYOU)(DTHRU) +@ IS THERE ANYTHING WHICH IS BIGGER + THAN EVERY PYRAMID BUT IS NOT AS WIDE + AS THE THING THAT SUPPORTS IT?@ +(DISME)(FRAME WAIT)(DTHRU) +@ YES, THE BLUE BLOCK. @ +(FRAME WAIT)(DISYOU)(DTHRU) +@ DOES A STEEPLE@ +(DISME)(DTHRU) +@SORRY, I DON'T KNOW THE WORD "STEEPLE". + PLEASE TYPE TWO SPACES.@ +LI(DISYOU)(DTHRU) +@ A "STEEPLE" IS A STACK WHICH CONTAINS + TWO GREEN CUBES AND A PYRAMID.@ +(DISME)(FRAME WAIT)(DTHRU) +@ I UNDERSTAND.@ +(FRAME WAIT)(DISYOU)(DTHRU) +@ ARE THERE ANY STEEPLES NOW?@ +(DISME)(FRAME WAIT)(DTHRU) +@ NO.@ +(FRAME WAIT)(DISYOU)(DTHRU) +@ BUILD ONE.@ +(DISME)(FRAME WAIT) +(MOVETO 274 1000 500) +(GRASP (QUOTE :B7)) +(MOVETO 200 320 200) +(UNGRASP) +(MOVETO 477 40 400) +(GRASP (QUOTE :B2)) +(MOVETO 200 110 100) +(UNGRASP) +(MOVETO 477 40 300) +(GRASP (QUOTE :B1)) +(MOVETO 1000 274 100) +(UNGRASP) +(MOVETO 540 140 500) +(GRASP (QUOTE :B5)) +(MOVETO 40 500 300) +(UNGRASP) +(MOVETO 500 100 200) +(GRASP (QUOTE :B3)) +(MOVETO 200 320 400) +(UNGRASP) +(MOVETO 40 500 300) +(GRASP (QUOTE :B5)) +(MOVETO 200 320 700) +(UNGRASP) +(DTHRU) +@ OK.@ +(FRAME WAIT)(DISYOU)(DTHRU) +@ CALL THE BIGGEST BLOCK "SUPERBLOCK".@ +@ OK.@ +(FRAME WAIT)(DISYOU)(DTHRU) +@ HAVE YOU PICKED SUPERBLOCK UP SINCE + WE BEGAN?@ +(DISME)(FRAME WAIT)(DTHRU) +@ YES.@ +(FRAME WAIT)(DISYOU)(DTHRU) +@ WHY DID YOU DROP IT?@ +(DISME)(FRAME WAIT)(DTHRU) +@BY "IT", I ASSUME YOU MEAN THE + SUPERBLOCK. + I CAN'T EXPLAIN A NON-EXISTENT EVENT.@ +(FRAME WAIT)(DISYOU)(DTHRU) +@ IS THERE ANYTHING TO THE RIGHT OF + THE RED PYRAMID?@ +(DISME)(FRAME WAIT)(DTHRU) +@ YES, FOUR THINGS: THE BOX , THE RED + CUBE, THE BLUE PYRAMID AND THE BLOCK + NAMED SUPERBLOCK@ +(FRAME WAIT)(DISYOU)(DTHRU) +@ THANK YOU.@ +(DISME)(FRAME WAIT)(DTHRU) +@ YOU'RE WELCOME!@ + + +(AND(READCH)(NOT ^A)(VALRET ':KILL/ )) +  \ No newline at end of file