diff --git a/Makefile b/Makefile index 59ca29d7..817e9611 100644 --- a/Makefile +++ b/Makefile @@ -31,10 +31,10 @@ 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 \ kldcp libdoc lisp _mail_ midas quux scheme manual wp chess ms macdoc \ - aplogo _klfe_ pdp11 chsncp cbf rug bawden + aplogo _klfe_ pdp11 chsncp cbf rug bawden llogo BIN = sys2 emacs _teco_ lisp liblsp alan inquir sail comlap c decsys \ graphs draw datdrw fonts fonts1 fonts2 games macsym maint imlac \ - _www_ hqm gt40 + _www_ hqm gt40 llogo MINSRC = midas system $(DDT) $(SALV) $(KSFEDR) $(DUMP) # These are not included on the tape. diff --git a/bin/llogo/tvrtle.kst b/bin/llogo/tvrtle.kst new file mode 100644 index 00000000..dc5c7c14 Binary files /dev/null and b/bin/llogo/tvrtle.kst differ diff --git a/build/lisp.tcl b/build/lisp.tcl index 7dd32835..8d867ad8 100644 --- a/build/lisp.tcl +++ b/build/lisp.tcl @@ -865,3 +865,38 @@ respond_load "(load '((lmio1) ukbd))" respond "T" "(as 'ukbd)" respond "UKBD" "(quit)" expect ":KILL" + +# Lisp Logo +respond "*" ":cwd llogo\r" +respond "*" ":complr\r" +respond "_" "ioc\r" +respond "_" "\032" +type ":kill\r" +respond "*" ":complr\r" +respond "_" "\007" +respond "*" "(load 'ioc)" +respond_load "(load 'define)" +respond "T" "(maklap)" +respond "_" "define\r" +respond "_" "\032" +type ":kill\r" +respond "*" ":complr\r" +respond "_" "\007" +respond "*" "(load 'ioc)" +respond_load "(load 'define)" +respond_load "(maklap)" +respond "_" "error\r" +respond "_" "parser\r" +respond "_" "primit\r" +respond "_" "print\r" +respond "_" "reader\r" +respond "_" "setup\r" +respond "_" "unedit\r" +respond "_" "\032" +type ":kill\r" +respond "*" ":lisp loader\r" +respond "?" "Y\r" +respond "?" "LLOGO\r" +respond "?" "1700\r" +expect ":KILL" +respond "*" ":link sys1; ts llogo, llogo; ts llogo\r" diff --git a/doc/llogo/-read-.-this- b/doc/llogo/-read-.-this- new file mode 100644 index 00000000..f7f9ffb2 --- /dev/null +++ b/doc/llogo/-read-.-this- @@ -0,0 +1 @@ +This directory belongs to Henry Lieberman (HENRY@MIT-AI). diff --git a/doc/programs.md b/doc/programs.md index 5cfe15c9..6633d45e 100644 --- a/doc/programs.md +++ b/doc/programs.md @@ -138,6 +138,7 @@ - LIMSER, Chaosnet limerick service. - LISP, Lisp interpreter and runtime library (autoloads only). - LIVE, PALX Game of Life. +- LLOGO, Logo implemented in Maclisp. - LOADP, displays system load. - LOCK, shut down system. - LOGO, BBN Logo. diff --git a/src/llogo/ioc.lsp b/src/llogo/ioc.lsp new file mode 100644 index 00000000..7d41c750 --- /dev/null +++ b/src/llogo/ioc.lsp @@ -0,0 +1,17 @@ +;;; -*- lisp -*- +;;; Emulate old Maclisp special forms IOC and IOG. + +(defmacro ioc (sym) + (cond + ((eq sym 'G) `(^G)) + ((eq sym 'R) `(setq ^R t)) + ((eq sym 'T) `(setq ^R nil)) + ((eq sym 'V) `(setq ^W nil)) + ((eq sym 'W) `(setq ^W t)) + ((eq sym 'RW) `(progn (ioc R) (ioc W))) + (t (error "Unknown IOC character")))) + +(defmacro iog (sym &rest forms) + `(let ((^Q nil) (^R nil) (^W nil)) + ,@(if sym `((ioc ,sym))) + ,@forms)) diff --git a/src/llogo/loader.153 b/src/llogo/loader.153 index 833b9d86..25a917e4 100644 --- a/src/llogo/loader.153 +++ b/src/llogo/loader.153 @@ -11,6 +11,8 @@ (DECLARE (COUTPUT (READ))) +(LOAD '((DSK LLOGO) IOC LSP)) + (DEFUN HOW-BIG NIL (REMPROP 'HOW-BIG 'EXPR) ((LAMBDA (FREE)