1
0
mirror of https://github.com/PDP-10/its.git synced 2026-03-12 21:44:01 +00:00

Miscellaneous documentation files.

This commit is contained in:
Lars Brinkhoff
2018-11-09 17:50:59 +01:00
parent 9720c349fe
commit a3c88dec1e
10 changed files with 4115 additions and 1 deletions

View File

@@ -31,7 +31,7 @@ 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 llogo eak clib teach
aplogo _klfe_ pdp11 chsncp cbf rug bawden llogo eak clib teach pcnet
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 llogo bawden

51
doc/_info_/cgol.recent Normal file
View File

@@ -0,0 +1,51 @@
New features in CGOL 74. Please report any bugs to MJF;.
[1] The lexical syntax has been cleaned up a little. An altmode
may be included in a character string or in a comment by
preceeding it with the escape character "?". An unprotected
altmode now causes an error. To put a quote character (")
into a character string, it must be doubled.
[2] CGOLREAD now takes an argument which is treated just like
the argument to READ. Namely, if CGOLREAD encounters an end-of-file
as the first thing upon being called, the argument is returned;
otherwise it is assumed that there follows a complete CGOL
expression followed by the input terminator (an altmode or dollar).
If not, an error is reported. If the argument is NIL, then
initial end-of-files are passed over. Sometime in the future,
the argument may become optional, but for now it is required.
[3] The necessary changes for compatibility with [2] have been made
in MAKLISP.
[4] A new bracketing operator "OCT" allows the reading of a
portion of CGOL text with IBASE=8 so numbers are read in octal
(unless followed by a dot). The following text MUST be
enclosed in parentheses. E.g. oct(12) $ prints 10., and
oct(12+14) prints 22.
[5] Tokens may now be composed of multiple characters. NEWTOK "foo" defines
the string foo to be a token. It may then be used like any
other token, e.g. appear in infix, prefix, and define statements,
be used as a variable, etc. There are two points of caution.
(i) The only characters which may appear as the FIRST character
of such a token are special characters other than quote ("),
percent (%), exclamation (!), dollar, altmode, and question mark (?).
(ii) Every prefix of a multiple character token also becomes
a token. Thus, defining NEWTOK "*-*" causes 2*-3 to parse
incorrectly. Of course, 2* -3 will still work all right.
[6] New bit-vector operators have been defined using the multiple
character token feature described above. They are:
.N. - complement;
.A. - logical and;
.V. - logical or;
.X. - exclusive or;
.^. - left shift.
[7] The current version of CGOL may be fasloaded from COM: CGOL FASL.
Two other ways of invoking it are: (i) Type
(CGOL) or (CGOLREAD) at LISP (they have autoload
properties); or (ii) Type :L CGOL; when you start
your LISP.

3
doc/aplogo/-read-.-this- Normal file
View File

@@ -0,0 +1,3 @@
This file directory is used for Apple Logo development.
It is maintained by Stephen Hain, Patrick Sobalvarro,
Leigh Klotz, John Palevich, and Hal Abelson.

404
doc/info/tip.2 Normal file
View File

@@ -0,0 +1,404 @@

File: TIP, Node: Top, Up: (DIR), Next: Calling
The TIP is the wonderful machine that lets you connect to any host
on the ARPA net if you have access to a telephone. It is the usual
way for ordinary people to get on the ITS machines.
This info tree can be viewed in two ways: 1) by using the M and D
commands to get to the particular topic(s) that interest you, or
2) by using N to visit all the nodes in sequence. Option 2 will
skip information on 2741's, unless you use M at Calling. From there
on N will give you everything.
* Menu:
* Calling:: Calling up the TIP, telling it your speed
* 2741:: Special speed recognition chars for the 2741
* Commands:: Useful commands, like how to connect to your host
* Hosts:: Some hosts and their numbers
* NIC:: The Network Information Center
* Manual: (MC: .INFO.; TIP MANUAL)*
The official word on the TIP

File: TIP, Node: Calling, Previous: Top, Up: Top, Next: Commands
The first step in establishing connection with the TIP is to call it up.
The telephone numbers of the MIT TIP are available for legitimate users
from Janet Schoof (617-253-1458 or Jan@MIT-XX).
Once you have gotten a connection, you must type a "hunt character"
to tell the TIP your terminal speed and character code:
ASCII 110, 150, 300 baud E
ASCII 110 trans / 1200 rcv D
ASCII 1200 doesn't need any
2741 see menu topic "2741"
Once you have typed your hunt character, the tip will respond with
its name and your port number. (If you are ASCII 1200 baud, it will not
give any response.) If you get nothing (except 1200 baud) or garbage,
hang up and try again.
* Menu:
* 2741:: Hunt characters for the 2741

File: TIP, Node: 2741, Previous: Calling, Up: Calling, Next: Commands
Using 2741's on the TIP is complicated by their peculiar communication
protocol and nonstandard character set. The following list gives the
proper hunt character for various typeballs. (The number is printed
on the top of the typeball. If you can't find it, try all of them until
you get something reasonable. Try "f" first.) Typing N from this node
goes on to the Commands node.
2741 PTTC Terminals type:
6 for model 938, 939, 961, 962, or 997
o for model 942 or 943
w for model 947 or 948
f for model 963, 996, or 998
2741 Correspondence Terminals type:
(Type elements marked with * can be customized for you. Contact your
local IBM office for information.)
NUMBER NAME HUNT CHARACTER
001 Scribe 4
005 Letter Gothic 4
006 Manifold 72 j
007 Elite 72 * 4
008 Pica 72 * 4
010 Manifold 72 j
012 Prestige Elite * 4
014 Light Italic j
015 Courier 72 * 4
019 Manifold 72 j
020 Dual Gothic 4
021 Dual Gothic o
025 Scribe o
026 Elite 72 * o
027 Pica 72 * o
028 Manifold 72 o
029 Courier 72 * o
030 Adjutant 4
031 Adjutant o
032 Light Italic o
033 Prestige Elite * o
034 Script o
035 Delegate o
036 Advocate o
039 Letter Gothic o
043 ASCII l
050 Advocate 4
053 Artisan 12-72 4
055 Artisan 12-72 o
059 Orator j
060 Orator o
067 Courier 12 4
068 Courier 12 o
070 Delegate 4
085 Courier 72 4
086 Courier 12 Italic o
090 Script j
123 Prestige Pica o
129 Adjutant o
130 Advocate o
131 Artisan 12-72 o
132 Courier o
133 Courier 12 Italic o
134 Courier 72 o
135 Delegate o
136 Dual Gothic o
137 Elite 72 o
138 Letter Gothic o
139 Light Italic o
140 Manifold 72 o
141 Orator o
142 Pica 72 o
143 Prestige Elite 72 o
144 Scribe o
145 Script o
154 ASCII l
158 Bookface Academic 72 o
161 Large Elite 72 o

File: TIP, Node: Commands, Previous: Calling, Up: Top, Next: Hosts
Once you have extablished your connection with the TIP, you must tell
the TIP to connect you to the proper host. Once your host connection
is established, you can mostly ignore the TIP.
TIP commands begin with the "interrupt character". Initially, it is "@",
but you can change it with the command @I (see below). Any time you type
the interrupt character, you begin a TIP command. The way you send a copy
of your interrupt character to the host is to type it twice. (This leaves
two or three (if the host echos also) copies of the interrupt character
on your output.) Here we will assume that the interrupt character is "@".
The first thing to do is to tell the TIP the amount of padding that your
terminal needs. Initially the TIP puts enough in to satisfy any terminal,
so you can speed things up quite a bit if you tell it how much you really
need. The commands are:
(In all TIP commands, spaces are important but case is not.)
@D C x x = E Extra (for slow terminals, like TI Silent 700's)
O ODEC line printers
A ASCII (no padding, scopes and LA36's)
3 TTY 37's (which require special parity handling)
Once you have the padding corrected, you can then adjust the echo:
@E x x = R Remote (the TIP doesn't echo, the host does)
A All (the TIP echos everything)
Note that this doesn't apply to command characters, the TIP always echos
them.
The final important commands are:
@O n n = host number (octal)
@C
@O (attempts to) open a connection to the specified host. (See Hosts for
the host numbers.) @C disconnects from the host. If you cannot connect
to the host because it is down, the TIP will tell you. Also, if it seems
to be taking forever to connect to the host, use @C to close the attempt
and try something else.
To change your interrupt character, give the command:
@I n n = DECIMAL ASCII code of the character to be the
interrupt character (i.e., 96 means "`")

File: TIP, Node: Hosts, Previous: Commands, Up: Top, Next: NIC
This node lists various host numbers on the ARPA net. For a complete
list, inquire at the NIC (see next node).
Address Hostname Interface->Computer (System)
-------------------------------------------------------------------
6 0/6 MIT-MULTICS H-6180 (MULTICS)
70 1/6 MIT-DMS PDP-10 (ITS)
134 2/6 MIT-AI PDP-10 (ITS) -> PDP-11
-> PDP-6
198 3/6 MIT-ML PDP-10 (ITS)
1 0/1 UCLA-ATS PDP-11/45 (ANTS, ELF, UNIX, or UCLA-VMN)
65 1/1 UCLA-CCN IBM 360/91 (OS/MVT and TSO)
129 2/1 UCLA-SECURITY PDP-11/45 (UNIX)
2 0/2 ARC-RD PDP-11/40 (ELF)
66 1/2 SRI-KL DEC-1090T (TOPS-20)
130 2/2 SRI-VIS11 PDP-11/10
194 3/2 SRI-NSC11 PDP-11/40 (ELF) -> SPS-41 (D0S)
3 0/3 NOSC-CC PDP-11/40 (ELF) -> UNIVAC 1110
67 1/3 NOSC-SECURE1 PLI -> H-716 -> UNIVAC 1108
131 2/3 NOSC-SDL PDP-11/40 (ELF, UNIX)
195 3/3 NWC PDP-11/40 -> UNIVAC 1110
4 0/4 UTAH-11 PDP-11/45 (RSX11M)
132 2/4 UTAH-TIP
5 0/5 BBN-TENEXE PDP-10 (TENEX)
69 1/5 BBN-INLAT PDP-11/40 (Custom built)
133 2/5 BBN-PTIP PLURIBUS
197 3/5 BBN-TENEXA DEC-2050T (TOPS-20AN)
7 0/7 RAND-RCC IBM 370/158 (OS/MVT 21.7, HASP, WYLBUR)
135 2/7 RAND-TIP
199 3/7 RAND-UNIX PDP-11/70 (UNIX)
8 0/8 NRL PDP-11/40 -> TI-ASC
72 1/8 NSRDC PDP-11/40 -> CDC 6400
136 2/8 NSWC-DL PDP-11/40 -> CDC 6700
200 3/8 NADC PDP-11/40 -> CDC 6500
264 4/8 NSWC-WO PDP-11/40 -> CDC 6500
9 0/9 HARV-10 PDP-10 (TOPS-10)
10 0/10 LL IBM 370/168 (VM/370)
202 3/10 LL-11 PDP-11/45 (UNIX) -> SPS-41 (DOS)
11 0/11 SU-AI DEC-20/40 (TOPS-10) -> PDP-10 (TOPS-10)
-> PDP-11/45 -> SPS-41 (DOS)
-> PDP-6
12 0/12 ILL-CAC PDP-11/50 (UNIX)
76 1/12 ILL-NTS PDP-11/20 (ANTS) or PDP-11/50 (UNIX)
13 0/13 GUNTER-ELF PDP-11/35 (ELF) -> B-4700 (MCPV)
141 2/13 GUNTER-TIP
14 0/14 CMU-10B PDP-11 -> PDP-10 (TOPS-10)
78 1/14 CMU-10A PDP-11 -> PDP-10 (TOPS-10)
142 2/14 CMU-10C DEC-1090T (TOPS-20AN) -> PDP-11 (UNIX)
206 3/14 CMU-CMMP 4 PDP-11/20s + 12 PDP-11/40s (HYDRA)
Multiprocessor
15 0/15 I4-TENEX PDP-10 (TENEX) -> ILLIAC-IV (ACL)
-> B-6700 -> ILLIAC-IV (ACL)
-> PDP-11s-> ILLIAC-IV (ACL)
79 1/15 I4-ELF PDP-11 (ELF) -> ILLIAC-IV (ACL)
143 2/15 I4B-TENEX PDP-10 (TENEX) -> ILLIAC-IV (ACL)
16 0/16 AMES-67 IBM-360/67 (TSS/360)
144 2/16 AMES-TIP
208 3/16 AMES-11 PDP-11/45 (ELF) -> PDP-11/10
145 2/17 MITRE-TIP
18 0/18 RADC-MULTICS H-6180 (MULTICS)
82 1/18 ROCHESTER DCU-50 -> ECLIPSE 450B
146 2/18 RADC-TIP
210 3/18 RADC-XPER PDP-11/40 (RSX11M, ELF, UNIX)
19 0/19 NBS-10 PDP-10 (TOPS-10)
147 2/19 NBS-TIP
211 3/19 NBS-UNIX PDP-11/45 (UNIX) -> Internal Network
20 0/20 CCTC PDP-11/70 (UNIX) -> H-6000 (GCOS)
148 2/20 DCA-TIP
212 3/20 DCEC PDP-11/40 (RSX11M, RSX11D)
21 0/21 LLL-COMP PDP-11/70 (RATS, UNIX)
85 1/21 LLL-MFE PDP-10 up Fall 77
22 0/22 ISI-SPEECH11 PDP-11/45 (EPOS, DOS) -> FPS AP-120B
86 1/22 USC-ISI PDP-10 (TENEX)
150 2/22 USC-ISIC PDP-10 (TENEX)
151 2/23 USC-TIP
215 3/23 USC-ECL PDP-10 (TENEX)
152 2/24 GWC-TIP
89 1/25 OT-ITS PDP-11/40 (ELF)
153 2/25 DOCB-TIP
154 2/26 PENTAGON-TIP
218 3/26 PENT-UNIX PDP-11 (UNIX)
27 0/27 BELVOIR PDP-11/40 (ANTS)
28 0/28 ARPA-DMS PDP-15 (DMS)
92 1/28 ARPA PDP-11/70 (UNIX) up Fall 77
156 2/28 ARPA-TIP
220 3/28 ARPA-XGP11 PDP-11/40 (ELF) -> Xerox Graphics Printer
29 0/29 BRL PDP-11/40 (ANTS, ELF)
158 2/30 BBN-TESTIP
31 0/31 CCA-TENEX PDP-10 (TENEX) -> DATACOMPUTER
95 1/31 CCA-SPEECH PDP-11/40
223 3/31 CCA-SIP PDP-11/40 (SIP Custom)
32 0/32 PARC-MAXC MAXC (TENEX)
96 1/32 PARC-GATEWAY NOVA-800->Internal Net->PARC-MAXC2 (TENEX)
33 0/33 FNWC CDC-3200 -> CDC-6500 (SCOPE)
34 0/34 LBL CDC-6600 (SESAME) -> CDC-7600 (BKY)
35 0/35 NOSC-SECURE2 PLI -> PDP-10 (TENEX)
99 1/35 LOGICON PDP-11/45 (UNIX)
163 2/35 ACCAT-TIP
227 3/35 NOSC-SECURE3 PLI -> PDP-11/70 (UNIX)
164 2/36 CINCPAC-TIP
101 1/37 DEC-MARLBORO DEC-1090T (TOPS-20AN)
39 0/39 SDAC-CCP PLURIBUS
103 1/39 SDAC-DP IBM 360/40 (DOS/360)
167 2/39 SDAC-NEP IBM 360/40 (DOS/360)
231 3/39 SDAC-44 IBM 360/44 (DOS)
40 0/40 BBN-NCC H-316
168 2/40 NCC-TIP
232 3/40 BBN-GATEWAY PDP-11
41 0/41 NORSAR-40A IBM 360/40 (DOS 15)
105 1/41 NDRE NORD-10 (SINTRAN-3) up 7/77
169 2/41 NORSAR-TIP
233 3/41 NORSAR-11 PDP-11
42 0/42 LONDON PDP-9 -> IBM 360/195 Dual Processor
(OS and ELECTRIC)
-> CDC 6400/6600->7600(SCOPE)
-> GEC 4080 (GECOS)
-> ICL System 4-72
106 1/42 LONDON-VDH PDP-9
170 2/42 LONDON-TIP
234 3/42 LONDON-SATNET-
GATEWAY PDP-11
171 2/43 TYMSHARE-TIP
44 0/44 MIT-DEVMULTICS H-68/80 (MULTICS)
108 1/44 LL-ASG PDP-11/50 (UNIX)
172 2/44 MIT-TIP
236 3/44 MIT-MC DEC-10/80 (ITS)
45 0/45 MOFFETT-ARC PDP-10 (TENEX)
109 1/45 MOFFETT-SUBNET PL1 -> PDP-10 (TENEX)
46 0/46 RUTGERS-10 PDP-10 (TOPS-10)
110 1/46 UPENN
174 2/46 RUTGERS-TIP
238 3/46 NUSC PDP-11/40 (ELF) -> UNIVAC 1108
47 0/47 WPAFB PDP-11/50 (RSX11M) -> CDC-6600 (SCOPE)
111 1/47 WPAFB-AFAL VDA -> PDP-10 (TOPS-10) -> PDP-10
175 2/47 WPAFB-TIP
48 0/48 AFWL PDP-11/50 (RSX11M) -> CDC-6600 (SCOPE)
112 1/48 ASL PDP-11/10 (ELF)
176 2/48 AFWL-TIP
49 0/49 BBN-TENEXB PDP-10 (TENEX)
113 1/49 BBN-TENEXD DEC-1090T (TOPS-20AN)
177 2/49 BBN-SPEECH-11 PDP-11/40 (RT11) -> SPS-41 (EPOS)
241 3/49 BBN-TENEX PDP-10 (TENEX)
51 0/51 SRI-KA PDP-10(TENEX)
115 1/51 SRI-IA11 PDP-11/40 (RSX11M)
243 3/51 SRI-PKT11 PDP-11/40 (ELF,RT11,DOS)->Packet Radio Net
52 0/52 ISI-XGP11 PDP-11/40 (ELF) -> Xerox Graphics Printer
116 1/52 USC-ISIE DEC-1090T (TOPS-20AN)
244 3/52 USC-ISIB PDP-10 (TENEX)
53 0/53 EGLIN PDP-11/45 (RSX11M) -> CDC-6600 (SCOPE)
117 1/53 NCSL PDP-11/40 (ELF) -> B-5500
54 0/54 SCRL-DEV PDP-11 (RSX11)
118 1/54 SCRL-RSX PDP-11/45 (RSX11)
182 2/54 CHII MP-32/MP-32A -> AP-90 (SIGNAL)
55 0/55 ANL VARIAN-73->IBM 370/195
(OS/MVT 21.7,ASP 3.1)
56 0/56 SUMEX-AIM PDP-10 (TENEX) Dual Processor -> PDP-10
57 0/57 NSA PDP-11/40 (ELF)
58 0/58 NYU PDP-11/40 (ELF) -> CDC-6600 (KRONOS)
122 1/58 BNL PDP-11/34 -> 2 CDC-6600s -> CDC-7600
(ELF)->(SCOPE 3.4)->(SCOPE 2.1, INTERCOM)
59 0/59 ETAC PDP-11/45 (ELF)
62 0/62 UTEXAS PDP-10 (TENEX)

File: TIP, Node: NIC, Previous: Hosts, Up: Top
The Network Information Center (NIC) is available at host 66 (SRI-KL).
To use it, connect to host 66 and give the command "NICGUEST" this will
log you in as a guest and run the NIC inquiry system automatically. It
is somewhat obnoxious to use, but mostly self-documenting.


2666
doc/pcnet/proto.info Normal file

File diff suppressed because it is too large Load Diff

496
doc/teach/ulisp.bugs Normal file
View File

@@ -0,0 +1,496 @@
Date: 12 May 1980 01:22-EDT
From: Kent M. Pitman <KMP at MIT-MC>
Subject: Fixed.
To: BUG-ULISP at MIT-MC
Date: 11 May 1980 23:09-EDT
From: Kent M. Pitman <KMP at MIT-MC>
To: BUG-ULISP
Traced functions don't seem to be capable of being applied ...

Date: 11 May 1980 23:09-EDT
From: Kent M. Pitman <KMP at MIT-MC>
To: BUG-ULISP at MIT-MC
Traced functions don't seem to be capable of being applied ...

Date: 11 May 1980 21:21-EDT
From: Kent M. Pitman <KMP at MIT-MC>
To: BUG-ULISP at MIT-MC
cc: GJC at MIT-MC
ULISP should support a subst operator.

Date: 1 May 1980 06:05-EDT
From: Kent M. Pitman <KMP at MIT-MC>
To: BUG-ULISP at MIT-MC
Date: 10 April 1980 13:52-EST
From: George J. Carrette <GJC at MIT-MC>
To: KMP
illeagal memory write a 11056 or something.
When they try and print out circular list structure (sigh...)
which can happen quite easily in the problem set, they get
;UNRECOVERABLE FIXNUM PDL OVERFLOW
sometimes it just gets a PDL oveflow.
I tried (setq foo '(a b))
(rplaca foo foo)
and got a pdl oveflow.
then did ^b, o.k. then (cons foo foo)
threw me out to the monitor. I then used "start" to get
back in, futsed around for a while, and then got
things into a state where PAO had to bring the system down.
No kidding. Anyway, I think you need to put in a PDL
handler. You might have to write the printer using a go-to
instead of recursion. Which is a thought. I was talking to
JPG the other day about how crufty MEVAL1 was. He said it
was because it couldn't be written modular because of lack
of stack space. YUK. Do you know of a clean way, using macros
perhaps, to get tail recursion in maclisp compiled correctly?
-gjc

Date: 25 April 1980 01:01-EST
From: Kent M. Pitman <KMP at MIT-MC>
Sender: ___051 at MIT-MC
Subject: PROGN/PROG2 in ULisp
To: GJC at MIT-MC
cc: BUG-ULISP at MIT-MC
Yeah, Leigh pointed out the PROGN problem a couple days ago and it's been fixed
in MC:TEACH;TS ULISP and [EE]<KMP>ULISP.EXE.122 for a while now ...
PROG2 is in the macros package (tho' actually not a macro). I will probably
make PROGN, PROG2, and a few others (probably DO) be special forms (=> FSUBRs)
pretty soon. But it's not worth the efficiency loss to have PROG2 do a check
for number of args ... a bad arg to cdr message for (PROG2 arg) or (PROG2)
is sufficiently informative I think.
-kmp

Date: 24 April 1980 17:03-EST
From: George J. Carrette <gjc at MIT-MC>
Sender: ___077 at MIT-MC
To: BUG-ULISP at MIT-MC
(progn) i.e. no arguments. gives bad arg to cdr.
(prog2) also gives a lusing error message.

Date: 22 Apr 1980 1741-EST
From: Leigh L. Klotz, Jr. <KLOTZ at MIT-EE>
To: bug-ulisp at MIT-MC
(progn) causes an obscure error.
I got this while using displace inside a defmacro.
Leigh.
-------

Date: 16 April 1980 17:28-EST
From: Kent M. Pitman <KMP at MIT-MC>
To: MP at MIT-MC
cc: JIS at MIT-MC, PAO at MIT-MC, GJC at MIT-MC, CPR at MIT-MC,
BUG-ULISP at MIT-MC
Date: 16 Apr 1980 0124-EST
From: MP at MIT-EE (Mark A. Plotnick)
To: kmp
Re: ftp to ee
JIS says you have a program which enables the sending of 36-bit
byte files to and from EE. Could you tell me what it is?
-----
On MC:TURNIP;ASCII FASL are two functions ASCII->BINARY and BINARY->ASCII.
They each take two args of filenames. Eg,
(BINARY->ASCII '((DSK FOO) BAR >) '((DSK FOO) BAR ASCII))
makes an ascii file. Then do text transfer to EE and load up <KMP>ASCII.FASL
and do
(ASCII->BINARY ...)
to undo the effect. Sorry it can't all be done as one job -- I don't hav the
time to hack that up. But this has worked for me getting the latest ULisp
fasl over there, so maybe it'll do for you until they get FTP fixed. Let
me know if it gives you any problems. If you're paranoid, you can do
the inverse function on MC and verify that the file you get back out is the
same as the original. There is a third function in that file named
BINARY-COMPARE that takes two filespecs and tells you if the two are the same
and if not what the first word is where they differ. (Does no output, just
returns the info as a lisp list.)
-kmp

Date: 11 Apr 1980 1922-EST
From: KMP at MIT-EE
Subject: Patching the symptom: REGPDL overflow and Illegal Memory Write attempt
To: 031.ANDRE at MIT-EE, GJC at MIT-MC, BUG-ULISP at MIT-MC
cc: INFO-ULISP at MIT-MC
The REGPDL overflow and illegal memory write error you reported is still
around -- a combination of several Maclisp bugs -- not yet resolved. But
I have put prinlevel/prinlength into ULisp, as you probably saw in system
messages (yeah, i know -- routed announcement to wrong place, oh, well).
Documentation in <LISP>ULISP.NOTES ... -kmp
-------

Date: 8 Apr 1980 1746-EST
From: KMP at MIT-EE
Subject: (((empty (((empty ...
To: 031.ANDRE at MIT-EE
cc: BUG-ULISP at MIT-MC
Kinda too bad about that ... it's a Maclisp bug, by the way, not just
a ULisp bug -- hence I don't know what to say really. We will try to
trace it down and get it fixed as soon as possible... -kmp
ps It's also a Maclisp bug that you end up in a ;BKPT PDL-OVERFLOW
when the stack runs out the first two times before the fatal error.
I have code that would trap all errors if the error trapping code
would just do its thing right ... sigh.
-------

Date: 8 Apr 1980 1603-EST
From: 031.ANDRE at MIT-EE
Subject: A bug in Ulisp (!)
To: bug-ulisp at MIT-MC
cc: jis at MIT-EE, pao at MIT-EE, 031.gunning at MIT-EE
Printing an "infinite" list structure 3 times seems to trash the lisp.
Try loading <lisp>morris.lsp and then:
Lisp->(setq foo (create-board))
Lisp->(aref foo 0 0) || Three times.
-- Dave
-------

10003
*** EOOH ***
Date: 7 April 1980 04:57-EST
From: Kent M. Pitman <KMP at MIT-MC>
To: JIS, GJC, HAL, CPR
cc: KMP
I am now keeping a source to ULisp on EE. This source should be read-only
for the following reasons:
(1) The lisp compiler on EE probably does not know about SFA's.
(2) The master copy of the source lives on MC:TEACH;ULISP > and I don't
want to get an accidental divergence with copies on two different
systems being editted.
I would prefer if people did not edit the file at all -- leaving it for me --
In extreme emergencies (heaven forbid) this may, of course, not be possible.
If you do find a need to edit the file, be sure to tell me that you did
and what changes you have made. Write the file out to a higher version number
and make sure the version number is preserved in transfer to EE so we can tell
what version is installed. Until FTP starts to work more reliably,
the FASL for such changes should be mag-tape transfered to EE rather than
net-transfered.
I will see about making a CTL file for dumping out a new ULISP.EXE and/or
a description of the process in case this needs to be done while I'm not
around.
-kmp
Date: 7 April 1980 04:58-EST
From: Kent M. Pitman <KMP at MIT-MC>
To: JIS at MIT-MC
cc: BUG-ULISP at MIT-MC
Btw, in case i forgot to mention it, the current ulisp.exe is running in your
new maclisp. the old ulisp.exe (same ulisp version, older maclisp) lives in
<KMP>OULISP.EXE.108 and will go away in a day or two if this one seems to be
winning ok. -kmp

Date: 5 April 1980 21:08-EST
From: Kent M. Pitman <KMP at MIT-MC>
To: BUG-ULISP at MIT-MC
Date: 30 March 1980 19:34-EST
From: George J. Carrette <GJC at MIT-MC>
To: JIS at MIT-AI
cc: LISP-6001
KMP and I talked the other day about ways to speed up ULISP,
[1] have every defun and lambda create a closure by default, this
will speed up the search down the a-list since lexical environments
are usually small.
[2] special case the "global" end of the a-list. All KMP has to do is
redefine his look-up-in-alist function so that when it gets to the
**END*OF*ALIST** it does some faster thing like GET. (PUT for SETQ).
There are some things to do which will slow down ULISP a little.
[1] generate a warning message when built-in functions are
"redefined" by using them as lambda variables.
[2] certain features ala TEACH;LISP maybe.
-George

Date: 5 April 1980 05:38-EST
From: Kent M. Pitman <KMP at MIT-MC>
To: BUG-ULISP at MIT-MC
Date: 1 Apr 1980 0937-EST
From: JIS at MIT-EE
To: KMP
cc: cpr at MIT-EE
Re: UNIX LISP
I have installed a bootstrap in SUBSYS called LISP that
when invoked, arranges to call <KMP>ULISP.EXE so Kent ULISP.EXE
in your directory is now the "Live" version of the program.
MacLisp can be invoked by typing "maclisp."
-Jeff

Date: 5 April 1980 05:37-EST
From: Kent M. Pitman <KMP at MIT-MC>
To: BUG-ULISP at MIT-MC
Date: 2 April 1980 00:35-EST
From: George J. Carrette <GJC at MIT-MC>
To: KMP
cc: JONL
I think you should get rub-out processing somehow.
even if it means writing your own reader. (even if it means
that I have to write it.) I was lusing my ass an hour ago,
didn't realise that ^q is needed after a ^L. Even if you
do ^B you still get no response until the blasted ^q, which
must be seen by the operating system I suppose. Lusing ^Q ^S,
!!!!!. I want -MORE- !!!!.
Kent, is there any way to get 20 maclisp to win easily on tty I/O?

Date: 5 April 1980 04:41-EST
From: Kent M. Pitman <KMP at MIT-MC>
To: BUG-ULISP at MIT-MC
Date: 04/04/80 10:58:38
From: JEFERY at MIT-AI
To: KMP at MIT-AI
Some observations which I find a little confusing, and which
there might some fix:
if a student inadvertantly changes his directory on TOPS-20,
is it true he must type (fr (\031\.{name}) {name} lsp) to
get his stuff into LISP? How about (fr |031.{name}| {name} lsp)??
if a student names his file something simple (i.e., no extension),
is it true there is nothing he can type at lisp to get it?
How about (fr {name} nil)?? or (fr |{name}..|)?
Perhaps a student message that warns of these, and says what the best
course a action is would be appropriate ... ?
Mark Jeffery

Date: 5 April 1980 04:41-EST
From: Kent M. Pitman <KMP at MIT-MC>
To: JEFERY at MIT-AI
cc: BUG-ULISP at MIT-MC
Please send your comments to BUG-ULISP@MC so that it gets filed correctly.
Date: 04/04/80 10:58:38
From: JEFERY at MIT-AI
Some observations which I find a little confusing, and which
there might some fix:
if a student inadvertantly changes his directory on TOPS-20,
is it true he must type (fr (\031\.{name}) {name} lsp) to
get his stuff into LISP? How about (fr |031.{name}| {name} lsp)??
This is incompatible with Unix Lisp and will only serve to confuse people.
In fact, you only have to type (031\.{name}) which is less typing than
the |...|'d form. If and when we split off the two versions and do this
one 'right' then we can make such modifications trivially. Right now I am
trying to go to reasonable lengths so that people can say the two lisps
are equivalent.
if a student names his file something simple (i.e., no extension),
is it true there is nothing he can type at lisp to get it?
How about (fr {name} nil)?? or (fr |{name}..|)?
yeah, this is a problem, but the reason it is is because maclisp hacks
filenames in this way and it happens to work out fine. there are several
ways he can get it (i think -- haven't tested them) ... (fr fn1 ||) should
work ... if not, then try (load 'name\.\) ... sigh ...
Perhaps a student message that warns of these, and says what the best
course a action is would be appropriate ... ?
Well, I advertise in <LISP>ULISP.NOTES that files should be named with
an extension of LSP so that they will read right in lisp without specifying
filename2.
Sorry, it sounds like i don't appreciate your comments when really i do...
don't want it to sound like i'm writing you off -- just saying these happen
to be issues i've thought about in some degree and how i've ended up deciding.
let me know if my answers seem unsatisfactory and we'll hash it out some
more. see you later.
-kmp

Date: 5 April 1980 04:35-EST
From: Kent M. Pitman <KMP at MIT-MC>
To: BUG-ULISP at MIT-MC
Date: 4 April 1980 11:39-EST
From: Chris Ryland <CPR at MIT-MC>
To: KMP
Re: (STATUS LINMO)
Kent: Ok, I think this is the right thing to do for the students' sake;
admittedly, it is sort of a screw that you can rubout over line boundaries,
but this should be fixed someday, no? Actually what's needed is a zwei-
like editor that is totally integrated with the top-level of lisp so you
never worry about these issues...

Date: 5 April 1980 04:34-EST
From: Kent M. Pitman <KMP at MIT-MC>
To: BUG-ULISP at MIT-MC
Date: 4 April 1980 11:40-EST
From: Chris Ryland <CPR at MIT-MC>
To: KMP
Re: Unix/Twenex Lisp Differences
We just discovered this am that you can't specify a non-existent file
extension in uLisp (eg, morrow..1), or else we don't know how. I
tried nil, and it didn't buy it...

Date: 4 April 1980 15:37-EST
From: Kent M. Pitman <KMP at MIT-MC>
Sender: JONL at MIT-MC
Subject: Unix/Twenex and Morrow..1
To: CPR at MIT-MC
cc: BUG-ULISP at MIT-MC
People should be using the extension LSP and not be specifying files anyway.
I suspect that doing (MORROW \ \1) will probably do it. So should the
string '<WHATEVER>MORROW\.\.1 so take your choice. I recommend not using
the non-existent extensions, tho'.

Date: 3 Apr 1980 0154-EST
From: KLOTZ at MIT-EE
Subject: arrays, character hacking
To: bug-ulisp at MIT-MC
cc: klotz at MIT-AI
Addressing the nil'th element of an array is the same as referencing
the 0'th element. This screwed me when I got the order of arguments
to aset wrong.
Also, this may not be the proper place, but...
Even if the terminal is in page mode, print out something large
(like doing (getal)) scrolls off the screen.
Leigh.
-------

Date: 2 April 1980 09:08-EST
From: Kent M. Pitman <KMP at MIT-MC>
Subject: (STATUS LINMO)
To: BUG-ULISP at MIT-MC
Date: 28 March 1980 09:21-EST
From: Chris Ryland <CPR at MIT-MC>
To: KMP
cc: HAL, JIS, PAO
Re: linemode in twenex ulisp
Kent: I would agree with you in theory --that we don't want to give people the
inconvenience of not being able to delete back arbitrarily far-- but remember
that these poor unix lisp students have never had that luxury, so it would be
much more 'compatible' to use the twenex linemode. (Someone correct me if
I'm wrong about real unix lisp.) And, I don't understand why the Maclisp
implementation is stupid enough to make linemode thwart full rubout handling
-- it certainly is doable (well, I guess I know why, since it's probably alot
of work). Comments?

Date: 2 April 1980 09:07-EST
From: Kent M. Pitman <KMP at MIT-MC>
Subject: LPR/LPT fix
To: BUG-ULISP at MIT-MC
Date: 28 Mar 1980 1126-EST
From: Chris Ryland <CPR at MIT-EE>
To: kmp
Re: lpt: is reinstated for now...let's say lpr: is the right thing
to use, and this won't change when lpt: goes back to being tty:.

Date: 29 March 1980 22:08-EST
From: Kent M. Pitman <KMP at MIT-MC>
To: BUG-ULISP at MIT-MC
KMP@MIT-MC 03/29/80 22:06:41
To: HAL at MIT-MC
CC: JIS at MIT-MC
Unix Lisp doesn't seem to let you say (add1 1.0) -- you get a non-numeric
arg (=> floating point arg) error. For the time being, I am going to set
things so that this is an error on floating point with my stuff as well.
I think that given how you are handling some of those other math operators,
that add1 and sub1 should be willing to do coercion.
Unix Lisp also returns t for (and 'foo 'bar). Up 'til now my simulator has
been too. (or 'foo 'bar), according to PAO, who I just called up to have this
checked, does return foo (which is reasonable). I am changing the simulator
to give back t for (and 'foo 'bar) but I think that's a real loss. bar should
get returned as it does in maclisp.
Applying and mapping nlambda's and fsubrs is currently still undefined in
my simulator. You get something utterly different than you would get in real
unix lisp. If you are going to want me to support things like
(mapcar '(nlambda (x) x) '(a b c)) => ('a 'b 'c) -- which I think is a
crock -- let me know and I'll install it, but I think it's very ugly.
Currently if you do that in mine you get just (a b c). Note also that this
means that
(mapcar and '(a nil b)) => (t () t)
in Unix Lisp but is undefined in the simulator (actually errs out, I suspect).
Let me know your thoughts on this subject.
-kmp
^_

Date: 25 March 1980 16:10-EST
From: Kent M. Pitman <KMP at MIT-MC>
To: BUG-ULISP at MIT-MC
System functions should not get bashed if redefined.

Date: 25 March 1980 16:02-EST
From: Kent M. Pitman <KMP at MIT-MC>
To: BUG-ULISP at MIT-MC
(defun foo nil (print nil))

Date: 18 February 1980 15:02-EST
From: Kent M. Pitman <KMP at MIT-MC>
To: BUG-ULISP at MIT-MC
what does (flodiv 3 4) return on delphi?

Date: 18 February 1980 10:45-EST
From: Kent M. Pitman <KMP at MIT-MC>
To: BUG-ULISP at MIT-MC
The "Lisp->" message should not display when reading from files.

Date: 18 February 1980 10:44-EST
From: Kent M. Pitman <KMP at MIT-MC>
To: BUG-ULISP at MIT-MC
This is a test.


95
doc/teach/ulisp.debug Normal file
View File

@@ -0,0 +1,95 @@
Debugging in ULisp KMP 25 April 80
------------------------------------------------------------------------------
Break Loops
A Breakloop is just like the toplevel evaluation loop except it is a temporary
interruption of the evaluation of some other form, and as such occurs in a
context where some bindings from that evaluation may have taken place.
Breakloops may be unconditionally invoked from code by
(break) or (break evaluated-message)
or they may be conditionally invoked by
(break evaluated-message evaluated-condition)
where if the evaluated-condition returns non-(), then the break will occur.
The function recover will become defined in a breakloop and can be used to
return from a breakpoint. With no args, it simply returns (value undefined),
or with one argument it will return that value. #### It may be that
recover will not always work. This is a known bug which will hopefully be
fixed soon. Report instances of it to speed service. ####
When in a breakloop. You will see a prompt like:
[Break Level n]
Lisp->
unless you do (prompt nil), which will of course suppress all prompting.
------------------------------------------------------------------------------
Debug
Debug is a system-provided stack-debugger. It can be used to explicitly
invoke the debugger from a breakpoint by typing (debug) or it can be caused
to activate automatically on an error by doing (backtrace debug). Disabling
of this feature is by (backtrace nodebug).
Debug commands are one character. The following commands are available:
? Gives short help description.
H Offers to document one or all commands.
. Type out current stack frame in abbreviated form.
T Type out current stack frame in normal form, no abbreviation.
P Type out current stack frame in pretty-printed form, no abbreviation.
F Displays all stack frames in abbreviated form.
A Goes to top of stack
U Goes up a stack frame.
D Goes down a stack frame.
Z Goes to bottom of stack
B Gives a breakpoint at current stack frame level.
C Continues from current stack frame by re-evaluating that form.
(Presumably this should be done if you have first done a "B"
and corrected the error or if the error was caused by external
conditions such as the file system which have since been cleared.)
R Returns from the current stack frame by reading an expression from the
terminal and returning the value returned by that expression rather
than anything to do with the frame which had initially been at the
current form on the stack...
Q Quits the debugger. If invoked from the error handler, control returns
to the next higher breakpoint or toplevel read-eval-print loop.
If invoked from (debug), then returns from that invocation.
------------------------------------------------------------------------------
Quit Characters
#### These are likely to change in the very near future ####
Currently Likely to Become Description
--------- ---------------- -----------
Control-B Control-G Quits to toplevel
Control-X Control-X Error, or local, quit
none Control-B Runs a break loop
------------------------------------------------------------------------------
Tracing
#### No trace facility yet exists. One is planned ####
------------------------------------------------------------------------------

258
doc/teach/ulisp.info Normal file
View File

@@ -0,0 +1,258 @@
Date: 12 May 1980 01:50-EDT
From: Kent M. Pitman <KMP at MIT-MC>
Subject: Closures
To: INFO-ULISP at MIT-MC
Also, closures are their own datatype now and print as #<Closure definition>.
-kmp

Date: 12 May 1980 01:46-EDT
From: Kent M. Pitman <KMP at MIT-MC>
Subject: Tracing
To: INFO-ULISP at MIT-MC
Versions of ULisp 156 and up (:TEACH;XULISP on MC currently the only such
thing) have trace capability. See the file TEACH;ULISP TRACE on MC for
details, or just load up a ULisp with the capability in it and try
(trace name1 name2 ...) and then run the functions. Comments welcomed -- the
i/o style is kinda wierd, taken from Rutgers Lisp, but probably helpful.
-kmp

Date: 25 Apr 1980 1141-EST
From: KMP at MIT-EE
Subject: ULisp debugging
To: INFO-ULISP at MIT-MC, 031.ANDRE at MIT-EE
The ULisp debugger which lives in all versions from 121 up is documented in
MC:TEACH;ULISP DEBUG and [EE]<KMP>UDEBUG.INFO.0 for those who forget how
it works. It will be moved to a more public place if/when it gets released.
To run that version of ULisp, you can use :TEACH;ULISP on MC or
<KMP>XULISP on EE.
-------

Date: 20 APR 1980 0757-EST
From: KMP at MIT-MC (Kent M. Pitman)
Subject: You asked for it!
To: INFO-ULISP at MIT-MC
I have released ULisp.121 on MC. Anyone who has time to play with it
is encouraged to do so. Differences...
(1) Speedup. Alist lookup should now work in more or less
constant time if you have few local variables rather than
being dependent on the depth of your global var in the global
area. This can be as much as a factor of 40 speedup on looking
up some symbols, but probably averages in the range of a factor of
10 speedup. There should be no user-visible change in how this stuff
works other than that new global variables go on the front of the
global area instead of the tail.
(2) Debugging. We can quibble about what the default debugging mode should
be but I have all the bells and whistles enabled for this version on MC.
The following debugging features are new...
(a) (debug) is a system-provided stack-debugger. Documentation on this
will be created. Please play with it and send me gripes/comments.
Basically, you can walk up and down the stack, ask to return a value
from a particular place on the stack, get a debug breakpoint at any
stack frame, or retry evaluation of a stack frame.
(b) (break [ message [ condition ] ] ) gives a debugging breakpoint.
*Important* -- The function "recover" becomes defined in a break
loop. It accepts an optional argument of a value to return from the
break. If someone would like to suggest a better function name to use
for this purpose, I'd be glad to take it... No fair "return" -- that's
strictly for (ugh) progs... and I'd rather not look for P
(c) ^X quits locally (to breakpoint or debugger)
^B quits globally
Would anyone object strongly to making ^G, ^B, and ^X have the
ULisp analog of their Maclisp meanings? This might be less confusing.
(d) (backtrace debug) enables automatic running of (debug) on errors.
(backtrace nodebug) disables automatic running of (debug) on errors.
(3) Break levels. You can't fall out into Lisp as easily. Lisp errors give
ULisp debugging breakpoints. [Break Level <n>] displays if you have
prompting selected to remind you of what's going on. Remember (as above)
the function "recover" will get you out of most breakpoints. MacLISP
makes you create thousands of different handlers to cover all the cases,
so please let me know where "recover" doesn't work from if you run across
such a place. I'm pretty sure PDL overflow is such a case and this will
be fixed soon.
(4) Some improved error messages. Wrong-Type-Arg and Wrong-No-of-Args now
give nicer error display.
I'll go over all these changes again to make sure all the code looks
reasonable when I am more awake. In the meantime, there has been such a
massive amount of added code that some exercising will do it good.
-kmp
ps No, there is still no trace facility. I will put one in soon -- I know
it is lacking.

Date: 11 Apr 1980 1922-EST
From: KMP at MIT-EE
Subject: Patching the symptom: REGPDL overflow and Illegal Memory Write attempt
To: 031.ANDRE at MIT-EE, GJC at MIT-MC, BUG-ULISP at MIT-MC
cc: INFO-ULISP at MIT-MC
The REGPDL overflow and illegal memory write error you reported is still
around -- a combination of several Maclisp bugs -- not yet resolved. But
I have put prinlevel/prinlength into ULisp, as you probably saw in system
messages (yeah, i know -- routed announcement to wrong place, oh, well).
Documentation in <LISP>ULISP.NOTES ... -kmp
-------

Date: 9 APR 1980 1746-EST
From: HAL at MIT-MC (Hal Abelson)
To: INFO-ULISP at MIT-MC
i just spent an hour trying to help a 6.03 students debug a lisp
program. it seemed that every time she read in her file it would
clobber lisp ``do.''
the reason, it turned out, was that she had in her file a definition
of ``reverse'' that used ``do''.........

KMP@MIT-MC 04/05/80 00:45:06
To: INFO-ULISP at MIT-MC
ULisp.108 is now the standard on Unix. Features:
(1) There was a gruesome bug in the way ULisp subscripts were being converted
into appropriate accessors for internal arrays. This affected non-linear,
non-square arrays and made 031.ANDRE's Morris solution die awfully. Anyway,
the bug has been squashed.
(2) More type checking -- array subscripts are now more extensively
type-checked. also, rplaca and rplacd also do typechecking for
their first arg now.
(3) At RZ's request, we have implemented a way of getting at MacLISP
functions. Don't advertise to students as it is likely to confuse them --
this is mostly for implementing aids to them -- but if you do
(import functionname propname flag)
where functionname denotes a maclisp function name,
propname denotes its functional type (one of [SUBR, FSUBR, LSUBR]),
and flag denotes whether function should eval its args or not in
ULisp. If no, then function had better be a function that can get
called with one arg, as it will receive a single arg which is the
list of unevaluated args. The ULisp subr or fsubr pointer is
returned.
Scenario:
(setq fasload (import FASLOAD FSUBR nil)) | enable fasloading
(fasload (foo) bar fasl) | load helper file
(setq nifty-aid-for-students (import MYFUN SUBR t)) | import compiled fn
(defun f (x) (+ (nifty-aid-for-students x) 3)) | use compiled fn

KMP@MIT-MC 04/03/80 00:14:10 Re: (STATUS LINMO)
To: INFO-ULISP at MIT-MC
All right, CPR, this should make you happy. I was over at the terminal room
listening to a student telling me that anyone who would type in a long
expression at the terminal is obviously losing and that if you can't rub
back into previous line it will encourage you to type it to an editor
instead ... and he's probably right. So the lisp they've got now uses
the line-at-a-time reader. I'm going to see later about linking that in with
SFA's so that its less screw-prone and can maybe even work to rub back out
over that <CR> ... but we'll see. This should do for now... let me know if
you get good or bad comments about the way it works.
-kmp

KMP@MIT-MC 04/03/80 00:10:44 Re: Unix/Twenex Lisp Differences
To: INFO-ULISP at MIT-MC
The files MC:TEACH;ULISP NOTES and [EE]<LISP>ULISP.NOTES contain
descriptions of the most blatant differences between Unix Lisp and
the simulator. They have been augmented to describe filenaming
conventions. HAL, maybe these or some similar item should be distributed
to students or made available to TA's for curious students or something.

KMP@MIT-MC 04/02/80 14:04:50
To: INFO-ULISP at MIT-MC
The file directory <LISP> is the EE equivalent of Unix's /mnt/lisp
The files PS5.COMPLEX and PS5.ALGEBRA have what /mnt/lisp/complex
and /mnt/lisp/algebra should have had. I had copied them over and checked
the copies visually a couple times carefully, but an error or two might
have leaked in -- be on guard.
The file ULISP.NOTES has useful information about my simulator. I will
install information about how to load the PS5 files (and files in general
later). The general syntax that you should be pushing is:
(load '((dir) fn1 fn2))
and/or
(fr (dir) fn1 fn2)
where (dir) is optional if loading from their own directory.
-kmp

KMP@MIT-MC 03/31/80 13:48:37
To: INFO-ULISP at MIT-MC
ULisp.104 is now running on EE as <KMP>ULISP. This is the version that
will be released to students if no one finds any bugs in it; it has been
tested on MC pretty thoroughly and rather cursorily on EE. Please give it
some exercise if you have the chance. Feedback will be appreciated. Thanks.
-kmp

KMP@MIT-MC 03/30/80 03:46:48
To: INFO-ULISP at MIT-MC
On MC, :TEACH;ULISP now is the canonical place to find ULisp. I have changed
some of the macros -- they've just been thru a bit of a workout tho' so should
be ok. The function gensym, which is installed in the simulator but not in
Unix Lisp, is being used in do and parallel-setq (which is called by do). So
if people ask what g0001 etc means and why they can't type it in, it's because
I am making real gensyms.
Because I have not been able to get the ftp connection to work directly to
EE from MC for image files, I will have to wait until XX comes back up to
install this on XX. Mail will be sent out when that is done.
ULisp version 104 (yes, the numbers took a giant leap backward when I did
a big rewrite the other night) has fixes for all known bugs so if something
isn't working right, please report it to BUG-ULISP@MC.
The mapcar function works in version 104, although mapping of fsubrs and
nlambdas will not do the same thing as Unix Lisp will. That's a pretty ill-
defined thing to do -- students shouldn't be writing code that depends on it
anyway -- so hopefully it won't cause any trouble.
-kmp

KMP@MIT-MC 03/30/80 02:59:10
To: INFO-ULISP at MIT-MC
There is a ULISP mode for Emacs on MC. To get it, do
MM Load LibraryKP;ULISP
MM ULisp
This is pretty much like Lisp mode but knows about ULisp's slightly
different syntax, including \ as slashifier and | as comment char.
-kmp

Date: 30 March 1980 01:25-EST
From: Kent M. Pitman <KMP at MIT-MC>
Subject: New mailing list formed
To: "(FILE [DSK:TEACH;ULISP INFO])" at MIT-MC, GJC at MIT-MC,
CPR at MIT-MC, PAO at MIT-MC, RZ at MIT-MC, JEFERY at MIT-MC,
DCB at MIT-MC, JIS at MIT-MC, HAL at MIT-MC
I have created an INFO-ULISP mailing list. If your name is in the header
above, you are on the list. If you don't want to be on it, feel free to
remove yourself -- my selection of initial names is probably somewhat
random. If you know people that got left out, please see that they get added
somehow.
This mailing list is for me to send info about new ULisp features and
bug-fixes. There will likely be a number of notes to this mailing
list while things get started up, and hopefully it will dwindle in use
as things stabilize.
More soon, I suspect.
-kmp


104
doc/teach/ulisp.notes Normal file
View File

@@ -0,0 +1,104 @@
DIFFERENCES BETWEEN TWENEX ULISP AND UNIX LISP 2 April 1980
########################### Terminal Input ###########################
Control characters do different things. The following control characters
have special meaning:
Control-B = Halt Evaluation. Return control to toplevel lisp. No Backtrace.
Control-C = Halt Evaluation. Return to exec, suspending the Lisp job.
Control-K = Retype any pending characters that have been typed but do not
yet form a full s-expression.
Control-L = Clear your screen. UNFORTUNATELY, because of the way Twenex
handles screen clearing, you will have to type Control-Q
before anything will happen. If it stops echoing your input,
maybe you typed ^L and haven't typed Control-Q. Unlike on Unix,
Control-Q on Twenex is quite harmless so it can't hurt to try
it if you feel like that might be the trouble. It will be
ignored by the Lisp reader if you happen to not need it.
Note also that Lisp will evaluate your form as soon as you finish typing
it. It will not wait for you to type a carriage return. Atoms may be
terminated with either a carriage return or a space.
########################### Filenames ###########################
Filenames are different on Twenex. Every filename has several parts:
device, directory, filename, extension, and version. These are normally
displayed as--
device:<directory>filename.extension.version
device and version are something you should never have to specify as they
should always default to the right thing, so just pretend they don't exist
while you are in lisp.
The following syntaxes for getting files into Lisp will work:
(load '((directory) filename extension))
or
(fileread (directory) filename extension)
So if your filename is <FOO>BAR.LSP, you can load this in with
(load '((FOO) BAR LSP))
or if you don't like typing, you can do the following because LSP
is the default extension:
(load '((FOO) BAR))
or, if FOO is your home directory, then just saying
(load '(BAR))
will work just fine. By similar reasoning, fileread can be done with
(fr (FOO) BAR LSP)
(fr (FOO) BAR)
or just (fr BAR)
########################### Datatypes ###########################
Floating Point Numbers
Floating point numbers, due to the nature of the machine, have a
different precision.
IMPORTANT: Numbers with trailing dots do not read as floating
point numbers -- they are fixed point numbers in base 10
(regardless of the value returned by inradix). Hence,
53 - is read as 53 in the current inradix (default 10)
53. - is read as 53 decimal, regardless of inradix
53.0 - is 53.0, a floating point number
########################### Functions ###########################
The operator "prog" in ULisp allows go's to tags outside of the scope
of the innermost prog. "gprog" is not implemented, since the power of
the "prog" available in this lisp makes it pretty much unnecessary. eg,
(prog () top (prog () (print 'hi-there) (go top)))
is a legal form and will sit in an infinite loop printing "hi-there".
The operator "backtrace" allows a numeric arg in ULisp.
(backtrace) turns off saving/displaying of backtrace debugging info.
(backtrace t) turns on backtrace debugging info.
(backtrace n) where n is a fixed point number tells ulisp
to show you only the most recent n stack frames
when an error occurs.
The following functions are not implemented:
getobl, cset, csetq, open, openi, openo, close, instream, outstream,
rename, create, link, unlink, seek, ttyread, ttywrite, fileread, filewrite
########################### Errors ###########################
Some error messages may be different. If an error message starts with a
";", it is probably a MacLISP error message rather than a ULisp error.
This is probably not a ULisp bug -- It is likely that the error is still
your fault. Check your code; if you think it's not your bug, ask a TA.

37
doc/teach/ulisp.trace Normal file
View File

@@ -0,0 +1,37 @@
The following objects are trace-able: closures, [f]subrs, [n]lambdas, macros.
To trace, you do (trace name1 name2 ...). This will SETQ name1, name2, ...
to traced objects (they have actual datatype traced).
To untrace, you do (untrace name1 name2 ...). This will SETQ name1, name2, ...
to the functional component of the trace object which the variables were
originally set to.
Traced objects print as #<Traced name> or #<Traced definition>. By default
name is used. (trace-print name) or (trace-print definition) can be used
to toggle this. (trace-print) tells you what the current mode is. Both the
system printer and pretty-printer will respect this setting.
Traced functions will do typeout of "Enter name (arg1 arg2 ...)" where arg1,
etc have been evaluated already if appropriate (not an nlambda, macro, or
fsubr). If the name of the function is available, it is printed. If
the function was called through apply, the name will not be available, so
the traced-object will print instead -- eg,
"Enter #<Traced name> (arg1 arg2 ...)". An arrow will be drawn on the terminal
from the entry to the return value.
Traced macros will do slightly different thing. "Macro name (name ...)" will
appear -- ie, the thing following name will be the whole form. Then arrows
will be drawn to the expansion and the result. If you only want to see macro
expansions or macro results, the toggle is
(trace-macro expansion), (trace-macro return), (trace-macro all).
Just doing (trace-macro) will give you information about the current state.
Traced macros cannot be applied.
Possible later features:
(1) Traced functions cannot be closed over; this may get changed later.
(2) It is not possible to trace a nameless function. There is no reason
you couldn't but I haven't invented a protocol for it yet.