File: diffs

package info (click to toggle)
ucblogo 6.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 7,560 kB
  • ctags: 4,657
  • sloc: ansic: 16,989; cpp: 3,818; makefile: 187; perl: 3
file content (410 lines) | stat: -rw-r--r-- 16,205 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
149c149
< 	TO INCREMENT :VAR	; nonworking!
---
> 	TO INCREMENT :VAR
225,227c225,231
< After initialization, Logo looks for a file in the current working directory
< named startup.lg and, if one is found, executes the Logo instructions in it.
< Then, under Unix, DOS, or Windows, if you include one or more filenames on the
---
> On startup, Logo looks for a file named "startup.lg" in the system Logo
> library and, if found, loads it.  Then it looks for "startup.lg" in the
> user's home directory, or the current directory, depending on the operating
> system, and loads that.  These startup files can be used to predefine
> procedures, e.g., to provide non-English names for primitive procedures.
> 
> Under Unix, DOS, or Windows, if you include one or more filenames on the
236,243c240,242
< If a command line argument is just a hyphen, then all command line arguments
< after the hyphen are not taken as filenames, but are instead collected in a
< list, one word per argument; the buried variable COMMAND.LINE contains that
< list of arguments, or the empty list if there are none.  On my Linux system,
< if the first line of an executable shell script is
< #!/usr/local/bin/logo -
< (note the hyphen) then the script can be given command line arguments and
< they all end up in :COMMAND.LINE along with the script's path.  Experiment.
---
> If the command line contains a word consisting of only a hyphen ("-"),
> then any text following the hyphen is not taken as filenames to load, but
> instead is copied into a list, accessible through the variable CommandLine.
288,291c287
< colon are not delimiters.  Each infix operator character is a word in
< itself, except that the two-character sequences <= >= and <> (the latter
< meaning not-equal) with no intervening space are recognized as a single
< word.
---
> colon are not delimiters.
333,341d328
< The two-character sequence #! at the beginning of a line also starts a
< comment.  Unix users can therefore write a file containing Logo commands,
< starting with the line
< 
< 	#! /usr/local/bin/logo
< 
< (or wherever your Logo executable lives) and the file will be executable
< directly from the shell.
< 
416,418c403
< 	the first input, at the beginning.  If the second input is a word,
< 	then the first input must be a one-letter word, and FPUT is
< 	equivalent to WORD.
---
> 	the first input, at the beginning.
423,425c408
< 	the first input, at the end.  If the second input is a word,
< 	then the first input must be a one-letter word, and LPUT is
< 	equivalent to WORD with its inputs in the other order.
---
> 	the first input, at the end.
686,692d668
< NOTEQUALP thing1 thing2
< NOTEQUAL? thing1 thing2
< thing1 <> thing2
< 
< 	outputs FALSE if the inputs are equal, TRUE otherwise.  See EQUALP
< 	for the meaning of equality for different data types.
< 
1017,1035d992
< 	OPENWRITE, but not the other OPEN variants, will accept as input
< 	a two-element list, in which the first element must be a variable
< 	name, and the second must be a positive integer.  A character
< 	buffer of the specified size will be created.  When a SETWRITE is
< 	done with this same list (in the sense of .EQ, not a copy, so
< 	you must do something like
< 		? make "buf [foo 100]
< 		? openwrite :buf
< 		? setwrite :buf
< 		    [...]
< 		? close :buf
< 	and not just
< 		? openwrite [foo 100]
< 		? setwrite [foo 100]
< 	and so on), the printed characters are stored in the buffer;
< 	when a CLOSE is done with the same list as input, the characters
< 	from the buffer (treated as one long word, even if spaces and
< 	newlines are included) become the value of the specified variable.
< 
1055,1057c1012
< 	command.  Closes the named file.  If the file was currently the
< 	reader or writer, then the reader or writer is changed to the
< 	keyboard or screen, as if SETREAD [] or SETWRITE [] had been done.
---
> 	command.  Closes the named file.
1103c1058,1064
< 	becomes the terminal, as usual.  Changing the write stream does
---
> 	becomes the terminal, as usual.  If the input is a list, then its
> 	first element must be a variable name, and its second and last
> 	element must be a positive integer; a buffer of that many
> 	characters will be allocated, and will become the writestream;
> 	when another SETWRITE is done, the contents of the buffer (as an
> 	unparsed word, which may contain newline characters) will become
> 	the value of the named variable.  Changing the write stream does
1107,1121d1067
< 	If the input is a list, then its first element must be a variable
< 	name, and its second and last element must be a positive integer; a
< 	buffer of that many characters will be allocated, and will become the
< 	writestream.  If the same list (same in the .EQ sense, not a copy)
< 	has been used as input to OPENWRITE, then the already-allocated
< 	buffer will be used, and the writer can be changed to and from this
< 	buffer, with all the characters accumulated as in a file.  When the
< 	same list is used as input to CLOSE, the contents of the buffer
< 	(as an unparsed word, which may contain newline characters) will
< 	become the value of the named variable.  For compatibility with
< 	earlier versions, if the list has not been opened when the SETWRITE
< 	is done, it will be opened implicitly, but the first SETWRITE after
< 	this one will implicitly close it, setting the variable and freeing
< 	the allocated buffer.
< 
1234a1181,1186
> INCREASEFONT
> DECREASEFONT
> 
> 	command (wxWidgets only).  Increase or decrease the size of the font
> 	used in the text window to the next larger or smaller available size.
> 
1260c1212
< 	the previous token is an infix operator or open parenthesis, or it is
---
> 	it is immediately preceded by something requiring an input, or
1393,1404d1344
< LESSEQUALP num1 num2
< LESSEQUAL? num1 num2
< num1 <= num2
< 
< 	outputs TRUE if its first input is less than or equal to its second.
< 
< GREATEREQUALP num1 num2
< GREATEREQUAL? num1 num2
< num1 >= num2
< 
< 	outputs TRUE if its first input is greater than or equal to its second.
< 
1410d1349
< (RANDOM start end)
1412,1419c1351,1352
< 	with one input, outputs a random nonnegative integer less than its
< 	input, which must be a positive integer.
< 
< 	With two inputs, RANDOM outputs a random integer greater than or
< 	equal to the first input, and less than or equal to the second
< 	input.  Both inputs must be integers, and the first must be less
< 	than the second.  (RANDOM 0 9) is equivalent to RANDOM 10;
< 	(RANDOM 3 8) is equivalent to (RANDOM 6)+3.
---
> 	outputs a random nonnegative integer less than its input, which
> 	must be an integer.
1540c1473,1474
< graphics window, and so that the aspect ratio is 1:1.
---
> graphics window, and so that the aspect ratio is 1:1, although some PC screens
> have nonstandard aspect ratios.
1549,1551d1482
< However, the turtle is drawn one step behind its actual position, so that
< the display of the base of the turtle's triangle does not obscure a line
< drawn perpendicular to it (as would happen after drawing a square).
1731a1663,1671
> FILLED color instructions
> 
> 	runs the instructions, remembering all points visited by turtle
> 	motion commands, starting *and ending* with the turtle's initial
> 	position.  Then draws (ignoring penmode) the resulting polygon,
> 	in the current pen color, filling the polygon with the given color,
> 	which can be a color number or an RGB list.  The instruction list
> 	cannot include another FILLED invocation.
> 
1855,1856c1795,1796
< SETPENCOLOR colornumber.or.rgblist
< SETPC colornumber.or.rgblist
---
> SETPENCOLOR colornumber
> SETPC colornumber
1859,1869c1799,1800
< 	integer.  There are initial assignments for the first 16 colors:
< 
< 	 0  black	 1  blue	 2  green	 3  cyan
< 	 4  red		 5  magenta	 6  yellow	 7 white
< 	 8  brown	 9  tan		10  forest	11  aqua
< 	12  salmon	13  purple	14  orange	15  grey
< 
< 	but other colors can be assigned to numbers by the PALETTE command.
< 	Alternatively, sets the pen color to the given RGB values (a list of
< 	three nonnegative integers less than 64K (65536) specifying the amount
< 	of red, green, and blue in the desired color).
---
> 	integer.  Color 0 is always black; color 7 is always white.  Other
> 	colors may or may not be consistent between machines.
1882,1887d1812
< 
< 	sets the thickness of the pen.  The input is either a single positive
< 	integer or a list of two positive integers (for horizontal and
< 	vertical thickness).  Some versions pay no attention to the second
< 	number, but always have a square pen.
< 
1890c1815
< 	sets hardware-dependent pen characteristics.  This command is
---
> 	set hardware-dependent pen characteristics.  These commands are
1896,1898c1821,1823
< 	sets the pen's position, mode, thickness, and hardware-dependent
< 	characteristics according to the information in the input list, which
< 	should be taken from an earlier invocation of PEN.
---
> 	sets the pen's position, mode, and hardware-dependent characteristics
> 	according to the information in the input list, which should be taken
> 	from an earlier invocation of PEN.
1900,1901c1825,1826
< SETBACKGROUND colornumber.or.rgblist
< SETBG colornumber.or.rgblist
---
> SETBACKGROUND color
> SETBG color
1903,1904c1828
< 	set the screen background color by slot number or RGB values.
< 	See SETPENCOLOR for details.
---
> 	set the screen background color.
1923,1934c1847,1848
< 	outputs a color number, a nonnegative integer that is associated with
< 	a particular color, or a list of RGB values if such a list was used as
< 	the most recent input to SETPENCOLOR.  There are initial assignments
< 	for the first 16 colors:
< 
< 	 0  black	 1  blue	 2  green	 3  cyan
< 	 4  red		 5  magenta	 6  yellow	 7 white
< 	 8  brown	 9  tan		10  forest	11  aqua
< 	12  salmon	13  purple	14  orange	15  grey
< 
< 	but other colors can be assigned to numbers by the PALETTE command.
< 
---
> 	outputs a color number, a nonnegative integer that is associated
> 	with a particular color by the hardware and operating system.
1943,1947d1856
< 
< 	outputs a list of two positive integers, specifying the horizontal
< 	and vertical thickness of the turtle pen.  (In some implementations
< 	the two numbers may always be equal.)
< 
1950c1859
< 	outputs hardware-specific pen information.
---
> 	output hardware-specific pen information.
1954c1863
< 	outputs a list containing the pen's position, mode, thickness, and
---
> 	outputs a list containing the pen's position, mode, and
1960,1961c1869
< 	outputs the graphics background color, either as a slot number or
< 	as an RGB list, whichever way it was set.  (See PENCOLOR.)
---
> 	outputs the graphics background color.
1989c1897
< 	drawing cannot use PENERASE or PENREVERSE; any
---
> 	drawing cannot use ARC, FILL, PENERASE, or PENREVERSE; any
1994,2023d1901
< MOUSE QUERIES
< -------------
< 
< 
< MOUSEPOS
< 
< 	outputs the coordinates of the mouse, provided that it's within the
< 	graphics window, in turtle coordinates.  If the mouse is outside the
< 	graphics window, then the last position within the window is returned.
< 	Exception:  If a mouse button is pressed within the graphics window
< 	and held while the mouse is dragged outside the window, the mouse's
< 	position is returned as if the window were big enough to include it.
< 
< 
< BUTTONP
< BUTTON?
< 
< 	outputs TRUE if a mouse button is down and the mouse is over the
< 	graphics window.  Once the button is down, BUTTONP remains true until
< 	the button is released, even if the mouse is dragged out of the
< 	graphics window.
< 
< BUTTON
< 
< 	outputs 0 if BUTTONP would output FALSE; otherwise, it outputs an
< 	integer between 1 and 3 indicating which button was pressed.
< 	Ordinarily 1 means left, 2 means right, and 3 means center, but
< 	operating systems may reconfigure these.
< 
< 
2180c2058,2062
< 	REDEFP has the value TRUE.
---
> 	REDEFP has the value TRUE.  Definitions created by COPYDEF are
> 	not saved by SAVE; primitives are never saved, and user-defined
> 	procedures created by COPYDEF are buried.  (You are likely to be
> 	confused if you PO or POT a procedure defined with COPYDEF because
> 	its title line will contain the old name.  This is why it's buried.)
2351,2357d2232
< PRIMITIVES
< 
< 	outputs a list of the names of all primitive procedures
< 	in the workspace.  Note that this is a list of names, not a
< 	contents list.  (However, procedures that require a contents list
< 	as input will accept this list.)
< 
2419d2293
< PRINTOUT contentslist
2701,2705d2574
< CSLSLOAD name
< 
< 	command.  Loads the named file, like LOAD, but from the directory
< 	containing the Computer Science Logo Style programs instead of the
< 	current user's directory.
2742,2750c2611,2613
< 	command.  Tells Logo to look in the specified directory for the
< 	information provided by the HELP command, instead of the default
< 	directory.  The format of a path depends on your operating system.
< 
< SETCSLSLOC path
< 
< 	command.  Tells Logo to use the specified directory for the CSLSLOAD
< 	command, instead of the default directory.  The format of a path
< 	depends on your operating system.
---
> 	command.  Tells Logo to look in the specified directory for the information
> 	provided by the HELP command, instead of the default directory.
> 	The format of a path depends on your operating system.
2803,2810d2665
< A runlist can consist of either a single expression (that produces a value)
< or zero or more instructions (that do something, rather than output a value),
< depending on the context:
< 
< 	PRINT IFELSE :X<0 ["NEGATIVE] ["POSITIVE]  ; one value in each case
< 	REPEAT 4 [PRINT "A PRINT "B]  ; two instructions
< 
< 
3061,3079d2915
< 	A word starting with , or ,@ is treated as if the rest of the word
< 	were a one-word list, e.g., ,:FOO is equivalent to ,[:FOO].
< 
< 	A word starting with ", (quote comma) or :, (colon comma) becomes a
< 	word starting with " or : but with the result of running the
< 	substitution (or its first word, if the result is a list) replacing
< 	what comes after the comma.
< 
< 	Backquotes can be nested.  Substitution is done only for commas at
< 	the same depth as the backquote in which they are found:
< 
< 		? show `[a `[b ,[1+2] ,[foo ,[1+3] d] e] f]
< 		[a ` [b , [1+2] , [foo 4 d] e] f]
< 
< 		?make "name1 "x
< 		?make "name2 "y
< 		? show `[a `[b ,:,:name1 ,",:name2 d] e]
< 		[a ` [b , [:x] , ["y] d] e]
< 
3175,3178c3011,3014
< 		op cond [ [[emptyp :numbers] []]
< 		          [[evenp first :numbers]  ; assuming EVENP is defined
< 		           fput first :numbers evens butfirst :numbers]
< 		          [else evens butfirst :numbers] ]
---
> 		cond [ [[emptyp :numbers] []]
> 		       [[evenp first :numbers]	; assuming EVENP is defined
> 		        [fput first :numbers evens butfirst :numbers]]
> 		       [else evens butfirst :numbers] ]
3810,3818d3645
<  35	user-generated error message (THROW "ERROR [message])
<  36	END inside multi-line instruction
<  37	Bad default expression for optional input: %s
<  38	Can't use OUTPUT or STOP inside RUNRESULT
<  39 	Assuming you meant 'FD 100', not FD100 (or similar)
<  40	I can't open file FILENAME
<  41	File FILENAME already open
<  42	File FILENAME not open
<  43	Runlist [EXPR EXPR] has more than one expression.
3840a3668,3672
> COMMANDLINE						(variable)
> 
> 	contains any text appearing after a hyphen on the command line
> 	used to start Logo.
> 
3891,3900d3722
< Logo provides the following buried variables that can be used by programs:
< 
< LOGOVERSION						(variable)
< 
< 	a real number indicating the Logo version number, e.g., 5.5
< 
< LOGOPLATFORM						(variable)
< 
< 	one of the following words: X11, Windows, or Unix-Nographics.
< 
4011,4012c3833,3834
< predicates (=, <, >) will still output in English.  If you want them to
< generate alternate-language words, set UseAlternateNames to TRUE instead.
---
> predicates (=, <, >) will still output in English.  If you want them to generate
> alternate-language words, set UseAlternateNames to TRUE instead.
4025c3847
< beginnings of lines.)  The program makehelp.c may require modification
---
> beginnings of lines.)  The program makefile.c may require modification