|
|
1.1 root 1: .\" Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985.
2: .so bfont.def
3: .pl 0
4: .ll 18c
5: .nh
6: .wh -.3c fo
7: .de fo \"page footer
8: 'bp
9: .pl 35c
10: .po 0
11: .lt 21c
12: .tl '.''.'
13: .po 1.5c
14: .sp 2
15: .ns
16: ..
17: .ds B \fIB\fP
18: .ds BB \fI\zB\h'3u'B\fP
19: .de HE \"Heading
20: .sp 0.9v
21: .ne 1.7v
22: \fB\\$1\fP \\$2
23: .sp .4v
24: .ns
25: ..
26: .de IT
27: .sp .4v
28: .JT
29: ..
30: .de JT
31: .ti 0
32: ..
33: .de TA
34: .br
35: .sp -1
36: .ti 0
37:
38: ..
39: .fo
40: .rs
41: .sp 2
42: .ta 20n
43: .ps 16
44: \*(BB\fB\ \|QUICK REFERENCE\fP
45: .ps 10
46: .sp 0.5
47: .ta 30n
48: .HE "GETTING STARTED"
49: .IT
50: \*(<:b\*(:>
51: .TA
52: Enter \*B system
53: .JT
54: \*(<:b -e\*(:>
55: .TA
56: Enter \*B system, using editor \fI$EDITOR\fP (default \fIvi\fP)
57: .JT
58: \*(<:b \*(:>\|\fIfile\fP .\^.\^.
59: .TA
60: Execute \*B commands in named files, and \*(<:QUIT\*(:>
61: .JT
62: \*(<:b -p\*(:>
63: .TA
64: Print all units in workspace on printer; do not enter \*B system
65: .JT
66: \*(<:b -l\*(:>
67: .TA
68: Print (list) all units on screen; do not enter \*B system
69: .JT
70: \*(<:b -i \*(:>\fItable\fP
71: .TA
72: Create a table of texts from the standard input
73: .JT
74: \*(<:b -o \*(:>\fItable\fP
75: .TA
76: Write a table of texts to the standard output
77: .HE "WHAT IS IN THE WORKSPACE ?" " (only as immediate commands)"
78: .IT
79: \*(<:==\*(:>
80: .TA
81: Display tags of current permanent targets
82: .JT
83: \*(<:::\*(:>
84: .TA
85: Display headings of current units
86: .HE "HOW TO MAKE CHANGES"
87: .IT
88: \*(<::\*(:>\fIunit-name\fP\0
89: .TA
90: Make changes to unit (default: unit last referred to)
91: .JT
92: \*(<:=\*(:>\fItarget-name\fP
93: .TA
94: Make changes to contents of target (last so changed)
95: .HE "Focus moves"
96: .ta 15n +20n
97: .de KK \"Key(s) that preceeding name of editing operation is bound to
98: .br
99: .sp -1
100: .ti 0
101:
102: ..
103: .de KY \"Key in box
104: 'ps -2
105: 'nh
106: \v'-\\n(.su/2u'\(br\v'\\n(.su/2u'\|\s-1\\$1\s+1\|\v'-\\n(.su/2u'\(br\v'\\n(.su/2u'\\h'-\\w'|'u/2u'\l'|0+(\\w'|'u/2u)\(rn'\\h'-\\w'|'u/2u'\l'|0\(ul'
107: 'hy
108: 'ps +2
109: ..
110: .de OR
111: \&\ or\
112: ..
113: .de DD \"Description of editing operation
114: .br
115: .sp -1
116: .ti 0
117:
118: ..
119: .IT
120: WIDEN
121: .KK
122: .KY f1
123: .OR
124: .KY ESC
125: .KY w
126: .DD
127: Widen focus
128: .JT
129: FIRST
130: .KK
131: .KY f2
132: .OR
133: .KY ESC
134: .KY f
135: .DD
136: Move focus to first contained item
137: .JT
138: LAST
139: .KK
140: .KY f3
141: .OR
142: .KY ESC
143: .KY l
144: .DD
145: Move focus to last contained item
146: .JT
147: EXTEND
148: .KK
149: .KY f4
150: .OR
151: .KY ESC
152: .KY e
153: .DD
154: Extend focus (usually to the right)
155: .JT
156: UPLINE
157: .KK
158: .KY f5
159: .OR
160: .KY ESC
161: .KY u
162: .DD
163: Move focus to whole of line above
164: .JT
165: PREVIOUS
166: .KK
167: .KY f6
168: .OR
169: .KY ESC
170: .KY p
171: .DD
172: Move focus to previous item
173: .JT
174: NEXT
175: .KK
176: .KY f7
177: .OR
178: .KY ESC
179: .KY n
180: .DD
181: Move focus to next item
182: .JT
183: DOWNLINE
184: .KK
185: .KY f8
186: .OR
187: .KY ESC
188: .KY d
189: .DD
190: Move focus to whole of line below
191: .JT
192: UP
193: .KK
194: .KY \(ua
195: .DD
196: Make new hole, move focus up
197: .JT
198: DOWN
199: .KK
200: .KY \(da
201: .DD
202: Make new hole, move focus down
203: .JT
204: LEFT
205: .KK
206: .KY \(<-
207: .DD
208: Make new hole, move focus left
209: .JT
210: RIGHT
211: .KK
212: .KY \(->
213: .DD
214: Make new hole, move focus right
215: .HE "Typing and making changes"
216: .IT
217: \fIAny character\fP
218: .DD
219: Insert character before focus
220: .JT
221: ACCEPT
222: .KK
223: .KY TAB
224: .DD
225: Accept suggestion, focus to next hole or end of line
226: .JT
227: RETURN
228: .KK
229: .KY RETURN
230: .DD
231: Go to new line, or decrease indentation
232: .JT
233: UNDO
234: .KK
235: .KY BACKSPACE
236: .DD
237: Undo effect of last key pressed (may be repeated)
238: .JT
239: REDO
240: .KK
241: .KY ctrl-U
242: .DD
243: Redo last UNDOne key (may be repeated)
244: .JT
245: DELETE
246: .KK
247: .KY ctrl-D
248: .DD
249: Delete contents of focus (to buffer)
250: .JT
251: COPY
252: .KK
253: .KY ctrl-C
254: .DD
255: Copy contents of focus to buffer, or buffer to hole
256: .HE "Other commands"
257: .IT
258: RECORD
259: .KK
260: .KY ctrl-R
261: .DD
262: Start/stop recording keystrokes
263: .JT
264: PLAY
265: .KK
266: .KY ctrl-P
267: .DD
268: Play back recorded keystrokes
269: .JT
270: LOOK
271: .KK
272: .KY ctrl-L
273: .DD
274: Redisplay screen
275: .JT
276: HELP
277: .KK
278: .KY ESC
279: .KY ?
280: .DD
281: Display summary of keys
282: .JT
283: EXIT
284: .KK
285: .KY ctrl-X
286: .DD
287: Finish changes or execute command
288: .JT
289: \fIInterrupt\fP
290: .KK
291: .KY BREAK
292: .OR
293: .KY DEL
294: .DD
295: Leave incomplete unit or interrupt command execution
296: .bp
297: .rs
298: .sp 2c
299: .ta 35n +5n
300: .HE "COMMANDS" " (\fItlt\fP is text, list or table)"
301: .IT
302: \*(<:WRITE\*(:> \fIexpr\fP\0
303: .TA
304: Write to terminal; \*(<:/\*(:> before or after \fIexpr\fP gives new line
305: .JT
306: \*(<:READ\*(:> \fItarget\fP \*(<:EG\*(:> \fIexpr\fP\0
307: .TA
308: Read expression from terminal to \fItarget\fP; \fIexpr\fP is example
309: .JT
310: \*(<:READ\*(:> \fItarget\fP \*(<:RAW\*(:>\0
311: .TA
312: Read line of text
313: .JT
314: \*(<:PUT\*(:> \fIexpr\fP \*(<:IN\*(:> \fItarget\fP
315: .TA
316: Put value of \fIexpr\fP in \fItarget\fP
317: .JT
318: \*(<:DRAW\*(:> \fItarget\fP\0
319: .TA
320: Random number from \*(<:~0\*(:> up to, but not including, \*(<:~1\*(:>
321: .JT
322: \*(<:CHOOSE\*(:> \fItarget\fP \*(<:FROM\*(:> \fItlt\fP\0
323: .TA
324: Random element of \fItlt\fP
325: .JT
326: \*(<:SET'RANDOM\*(:> \fIexpr\fP\0
327: .TA
328: Start random sequence for \*(<:DRAW\*(:> and \*(<:CHOOSE\*(:>
329: .JT
330: \*(<:REMOVE\*(:> \fIexpr\fP \*(<:FROM\*(:> \fIlist\fP\0
331: .TA
332: Remove one element from \fIlist\fP
333: .JT
334: \*(<:INSERT\*(:> \fIexpr\fP \*(<:IN\*(:> \fIlist\fP\0
335: .TA
336: Insert in right place
337: .JT
338: \*(<:DELETE\*(:> \fItarget\fP\0
339: .TA
340: Delete permanent target or table entry
341: .JT
342: \fIKEYWORD param KEYWORD\fP .\^.\^.
343: .TA
344: Execute user-defined command
345: .JT
346: \fIKEYWORD\fP
347: .TA
348: Execute refined command
349: .JT
350: \*(<:CHECK\*(:> \fItest\fP\0
351: .TA
352: Check \fItest\fP and stop if it fails
353: .JT
354: \*(<:IF\*(:> \fItest\fP\*(<::\*(:> \fIcommands\fP
355: .TA
356: If \fItest\fP succeeds, execute \fIcommands\fP; no \*(<:ELSE\*(:> allowed
357: .JT
358: \*(<:SELECT:\*(:>
359: .TA
360: Select one alternative:
361: .JT
362: \*(<: \*(:>\fItest\fP\*(<::\*(:> \fIcommands\fP
363: .TA
364: \& try each \fItest\fP in order
365: .JT
366: \*(<: \*(:>.\^.\^.
367: .TA
368: \& (one must succeed;
369: .JT
370: \*(<: \*(:>\fItest\fP\*(<::\*(:> \fIcommands\fP\0
371: .TA
372: \& the last \fItest\fP may be \*(<:ELSE\*(:>)
373: .JT
374: \*(<:WHILE\*(:> \fItest\fP\*(<::\*(:> \fIcommands\fP
375: .TA
376: Execute \fIcommands\fP, as long as \fItest\fP succeeds
377: .JT
378: \*(<:FOR\*(:> \fItag\fP\*(<:,\*(:>\^.\^.\^. \*(<:IN\*(:> \fItlt\fP\*(<::\*(:> \fIcommands\fP\0
379: .TA
380: Take each element of \fItlt\fP in turn
381: .HE "UNITS"
382: .IT
383: \*(<:HOW'TO\*(:> \fIKEYWORD\fP\ .\^.\^.\*(<::\*(:> \fIcommands\fP\0
384: .TA
385: Define new command \fIKEYWORD\fP\ .\^.\^.
386: .JT
387: \*(<:YIELD\*(:> \fIf\fP\*(<::\*(:> \fIcommands\fP\0
388: .TA
389: Define new function \fIf\fP with no arguments
390: .JT
391: \*(<:YIELD\*(:> \fIf x\fP\*(<::\*(:> \fIcommands\fP\0
392: .TA
393: Define new function \fIf\fP with one argument \fIx\fP
394: .JT
395: \*(<:YIELD\*(:> \fIx f y\fP\*(<::\*(:> \fIcommands\fP\0
396: .TA
397: Define new function \fIf\fP with two arguments \fIx\fP and \fIy\fP
398: .JT
399: \*(<:TEST\*(:> \fIpr\fP\*(<::\*(:> \fIcommands\fP\0
400: .TA
401: Define new predicate \fIpr\fP (succeeds/fails) with no arguments
402: .JT
403: \*(<:TEST\*(:> \fIpr x\fP\*(<::\*(:> \fIcommands\fP\0
404: .TA
405: Define new predicate \fIpr\fP with one argument \fIx\fP
406: .JT
407: \*(<:TEST\*(:> \fIx pr y\fP\*(<::\*(:> \fIcommands\fP\0
408: .TA
409: Define new predicate \fIpr\fP with two arguments \fIx\fP and \fIy\fP
410: .IT
411: \*(<:SHARE\*(:> \fItag\fP\*(<:,\*(:>.\^.\^.
412: .TA
413: Share permanent targets (before commands of unit)
414: .HE "Refinements" "(after the commands of a unit)"
415: .IT
416: \fIKEYWORD\fP \*(<::\*(:> \fIcommands\fP\0
417: .TA
418: Define command refinement
419: .JT
420: \fItag\fP\*(<::\*(:> \fIcommands\fP\0
421: .TA
422: Define expression or test refinement
423: .HE "Terminating commands" ""
424: .IT
425: \*(<:QUIT\*(:>\0
426: .TA
427: Leave \*(<:HOW'TO\*(:> or command refinement, or leave \*B
428: .JT
429: \*(<:RETURN\*(:> \fIexpr\fP\0
430: .TA
431: Leave \*(<:YIELD\*(:> or expression refinement and return value of \fIexpr\fP
432: .JT
433: \*(<:REPORT\*(:> \fItest\fP\0
434: .TA
435: Leave \*(<:TEST\*(:> or test refinement and report outcome of \fItest\fP
436: .JT
437: \*(<:SUCCEED\*(:>\0
438: .TA
439: The same, report success
440: .JT
441: \*(<:FAIL\*(:>\0
442: .TA
443: The same, report failure
444: .bp
445: .rs
446: .sp 2c
447: .HE "EXPRESSIONS AND TARGETS" ""
448: .IT
449: \*(<:666\*(:>, \*(<:3.14\*(:>\0
450: .TA
451: Exact constant
452: .IT
453: \*(<:2.93E8\*(:>,\ \*(<:3E+8\*(:>,\ \*(<:3.14E-9\*(:>\0
454: .TA
455: Approximate constant
456: .IT
457: \fIexpr\fP\*(<:,\*(:>\fIexpr\fP\*(<:,\*(:>\^.\^.\^.\0
458: .TA
459: Compound
460: .IT
461: \fItag\fP\*(<:,\*(:>\fItag\fP\*(<:,\*(:>\^.\^.\^.\0
462: .TA
463: Identifier (may also be used as target)
464: .IT
465: \fItext\fP\|\*(<:@\*(:>\|\fIp\fP\0
466: .TA
467: \&\*(<:"ABCD"@2 = "BCD"\*(:>
468: .\"Trimmed text, from \fIp\fP-th character on (also target)
469: .IT
470: \fItext\fP\*(<:|\*(:>\fIq\fP\0
471: .TA
472: \&\*(<:"ABCD"|3 = "ABC"\*(:>
473: .\"The same, first \fIq\fP characters (also target)
474: .IT
475: \fItext\fP\|\*(<:@\*(:>\|\fIp\fP\*(<:|\*(:>\fIq\fP\0
476: .TA
477: \&\*(<:"ABCD"@2|1 = "BCD"|1 = "B"\*(:>
478: .\"The same, from \fIp\fP-th on, first \fIq\fP characters (also target)
479: .IT
480: \fItable\fP\*(<:[\*(:>\fIexpr\fP\*(<:]\*(:>\0
481: .TA
482: Table selection (also target)
483: .IT
484: \&\*(<:"Jan"\*(:>,\ \*(<:"Feb"\*(:>,\ \*(<:"Won't!"\*(:>\0
485: .TA
486: Textual displays (empty: \*(<:""\*(:> or \*(<:''\*(:>)
487: .IT
488: \&\*(<:"value\ =\ `expr`;"\*(:>\0
489: .TA
490: Conversion of \*(<:expr\*(:> to text
491: .IT
492: \*(<:{1;\ 2;\ 2;\*(:>\ .\^.\^.\^\*(<:}\*(:>\0
493: .TA
494: List display (empty: \*(<:{}\*(:>)
495: .IT
496: \*(<:{1..10}\*(:>,\ \*(<:{'a'..'z'}\*(:>\0
497: .TA
498: List of consecutive values
499: .IT
500: \*(<:{['Jan']: 1; ['Feb']: 2; \*(:>.\^.\^.\^\*(<:}\*(:>\0
501: .TA
502: Table display (empty: \*(<:{}\*(:>)
503: .IT
504: \fIf\fP,\ \fIf x\fP,\ \fIx f y\fP\0
505: .TA
506: Result of \*(<:YIELD\*(:> \fIf\fP (no permanent effects)
507: .IT
508: \fItag\fP\0
509: .TA
510: Result of refinement (no permanent effects)
511: .HE "TESTS" ""
512: .IT
513: \fIx\fP \*(<:<\*(:> \fIy\fP,\ \fIx\fP \*(<:<=\*(:> \fIy\fP,\ \fIx\fP \*(<:>=\*(:> \fIy\fP,\ \fIx\fP \*(<:>\*(:> \fIy\fP\0
514: .TA
515: Order tests
516: .IT
517: \fIx\fP \*(<:=\*(:> \fIy\fP,\ \fIx\fP \*(<:<>\*(:> \fIy\fP
518: .TA
519: \& (\*(<:<>\*(:> means `not equals';
520: .IT
521: \&\*(<:0\ <=\ d\ <\ 10\*(:>\0
522: .TA
523: \& an exact number \fInever\fP equals an approximate one)
524: .IT
525: \fIpr\fP,\ \fIpr x\fP,\ \fIx pr y\fP\0
526: .TA
527: Result of \*(<:TEST\*(:> \fIpr\fP (no permanent effects)
528: .IT
529: \fItag\fP\0
530: .TA
531: Result of refinement (no permanent effects)
532: .IT
533: \fItest\fP\ \*(<:AND\*(:>\ \fItest\fP\ \*(<:AND\*(:>\ .\^.\^.\0
534: .TA
535: Fails as soon as one of the tests fails
536: .IT
537: \fItest\fP\ \*(<:OR\*(:>\ \fItest\fP\ \*(<:OR\*(:>\ .\^.\^.\0
538: .TA
539: Succeeds as soon as one of the tests succeeds
540: .IT
541: \*(<:NOT\*(:>\ \fItest\fP
542: .IT
543: \*(<:SOME\*(:> \fItag\fP\*(<:,\*(:>\^.\^.\^. \*(<:IN\*(:> \fItlt\fP \*(<:HAS\*(:> \fItest\fP\0
544: .TA
545: Sets \fItag\fP, .\^.\^. on success
546: .IT
547: \*(<:EACH\*(:> \fItag\fP\*(<:,\*(:>\^.\^.\^. \*(<:IN\*(:> \fItlt\fP \*(<:HAS\*(:> \fItest\fP\0
548: .TA
549: Sets \fItag\fP, .\^.\^. on failure
550: .IT
551: \*(<:NO\ \ \*(:> \fItag\fP\*(<:,\*(:>\^.\^.\^. \*(<:IN\*(:> \fItlt\fP \*(<:HAS\*(:> \fItest\fP\0
552: .TA
553: Sets \fItag\fP, .\^.\^. on failure
554: .IT
555: \*(<:SOME\*(:> \fItag\fP\*(<:,\*(:>\^.\^.\^. \*(<:PARSING\*(:> \fItext\fP \*(<:HAS\*(:> \fItest\fP\0
556: .TA
557: Sets \fItag\fP, .\^.\^. on success
558: .IT
559: \*(<:EACH\*(:> \fItag\fP\*(<:,\*(:>\^.\^.\^. \*(<:PARSING\*(:> \fItext\fP \*(<:HAS\*(:> \fItest\fP\0
560: .TA
561: Sets \fItag\fP, .\^.\^. on failure
562: .IT
563: \*(<:NO\ \ \*(:> \fItag\fP\*(<:,\*(:>\^.\^.\^. \*(<:PARSING\*(:> \fItext\fP \*(<:HAS\*(:> \fItest\fP\0
564: .TA
565: Sets \fItag\fP, .\^.\^. on failure
566: .bp
567: .rs
568: .sp 2c
569: .HE "PREDEFINED FUNCTIONS AND PREDICATES"
570: \fBFunctions on numbers\fP
571: .IT
572: \&\*(<:~\*(:>\fIx\fP\0
573: .TA
574: Approximate value of \fIx\fP
575: .IT
576: \*(<:+\*(:>\fIx\fP,\ \fIx\fP\*(<:+\*(:>\fIy\fP,\ \fIx\fP\*(<:-\*(:>\fIy\fP,\ \*(<:-\*(:>\fIx\fP,\ \fIx\fP\*(<:*\*(:>\fIy\fP,\ \fIx\fP\*(<:/\*(:>\fIy\fP
577: .IT
578: \fIx\fP\*(<:**\*(:>\fIy\fP\0
579: .TA
580: \fIx\fP raised to the power \fIy\fP
581: .IT
582: \fIn\fP\ \*(<:root\*(:>\ \fIx\fP,\ \*(<:root\*(:>\ \fIx\fP,\ \*(<:abs\*(:>\ \fIx\fP,\ \*(<:sign\*(:>\ \fIx\fP
583: .IT
584: \fIn\fP\ \*(<:round\*(:>\ \fIx\fP\0
585: .TA
586: \fIx\fP rounded to \fIn\fP digits after decimal point
587: .IT
588: \*(<:round\*(:>\ \fIx\fP,\ \*(<:floor\*(:>\ \fIx\fP,\ \*(<:ceiling\*(:>\ \fIx\fP
589: .TA
590: Rounded to whole number
591: .IT
592: \fIa\fP\ \*(<:mod\*(:>\ \fIn\fP\0
593: .TA
594: Remainder of \fIa\fP on division by \fIn\fP
595: .IT
596: \*(<:*/\*(:>\fIx\fP\0
597: .TA
598: Numerator of exact number \fIx\fP
599: .IT
600: \*(<:/*\*(:>\fIx\fP\0
601: .TA
602: Denominator
603: .IT
604: .in 0
605: \&\*(<:e\*(:>,\ \*(<:exp\*(:>\ \fIx\fP,\ \*(<:log\*(:>\ \fIx\fP,\ \fIb\fP\ \*(<:log\*(:>\ \fIx\fP
606: .IT
607: \*(<:pi\*(:>,\ \*(<:sin\*(:>\ \fIx\fP,\ \*(<:cos\*(:>\ \fIx\fP,\ \*(<:tan\*(:>\ \fIx\fP
608: .IT
609: \fIx\fP\ \*(<:atan\*(:>\ \fIy\fP,\ \*(<:atan\*(:>\ \fIx\fP
610: .HE "Functions on texts"
611: .IT
612: \fIt\fP\*(<:^\*(:>\fIu\fP\0
613: .TA
614: \fIt\fP and \fIu\fP joined into one text
615: .IT
616: \fIt\fP\*(<:^^\*(:>\fIn\fP\0
617: .TA
618: \fIt\fP repeated \fIn\fP times
619: .IT
620: \fIx\fP\*(<:<<\*(:>\fIn\fP\0
621: .TA
622: \fIx\fP converted\ to\ text\ and\ aligned\ left\ in\ field\ of\ width\ \fIn\fP
623: .IT
624: \fIx\fP\*(<:><\*(:>\fIn\fP\0
625: .TA
626: The same,\ centered
627: .IT
628: \fIx\fP\*(<:>>\*(:>\fIn\fP\0
629: .TA
630: The same, aligned right
631: .HE "Functions and predicates on texts, lists and tables"
632: .IT
633: \*(<:keys\*(:> \fItable\fP
634: .TA
635: List of all keys in \fItable\fP
636: .IT
637: \*(<:#\*(:>\fItlt\fP\0
638: .TA
639: Number of elements in \fItlt\fP
640: .IT
641: \fIe\fP\*(<:#\*(:>\fItlt\fP\0
642: .TA
643: Number of elements equal to \fIe\fP
644: .IT
645: \fIe\fP \*(<:in\*(:> \fItlt\fP,\ \fIe\fP \*(<:not'in\*(:> \fItlt\fP
646: .TA
647: Test for presence or absence
648: .IT
649: \*(<:min\*(:> \fItlt\fP\0
650: .TA
651: Smallest element of \fItlt\fP
652: .IT
653: \fIe\fP \*(<:min\*(:> \fItlt\fP\0
654: .TA
655: Smallest element larger than \fIe\fP
656: .IT
657: \*(<:max\*(:> \fItlt\fP,\ \fIe\fP \*(<:max\*(:> \fItlt\fP
658: .TA
659: Largest element
660: .IT
661: \fIn\fP \*(<:th'of\*(:> \fItlt\fP\0
662: .TA
663: \fIn\fP-th element
664: .HE "THE CHARACTERS"
665: .IT
666: \*(<: !"#$%&'()*+,-./\*(:>
667: .TA
668: This is the order of all characters
669: .JT
670: \*(<:0123456789:;<=>?\*(:>
671: .TA
672: that may occur in a text.
673: .JT
674: \*(<:@ABCDEFGHIJKLMNO\*(:>
675: .TA
676: (The first is a space.)
677: .JT
678: \*(<:PQRSTUVWXYZ[\\]^_\*(:>
679: .JT
680: \*(<:`abcdefghijklmno\*(:>
681: .JT
682: \*(<:pqrstuvwxyz{|}~\*(:>
683: .bp
684: .pl 0
685: .ch fo
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.