%!PS-Adobe- PostScript translation of Interpress master %%DocumentFonts: unknown %%Creator: chauser %%Pages: 34 %%EndComments % Simple procedures (others defined as needed) /width {stringwidth pop} bind def % stack: text /vec {moveto lineto stroke} bind def % stack: x y /nsp {0 exch {32 eq {1 add} if} forall} bind def % stack: txt -> #spaces /try {dup where {exch get} {pop 0} ifelse} bind def % stack: value %%EndProlog %%page 1 gsave 2834.646 2834.646 scale gsave 0.0254 dup matrix scale concat 0.013837 dup matrix scale concat /Times-Roman findfont 10.0375 scalefont /font0 exch def font0 setfont 304.7441 36.135 moveto (1) show 90.3375 689.9815 moveto /Times-Italic findfont 10.0375 scalefont /font1 exch def font1 setfont (CedarPrimer.tioga) show 105.3938 677.9366 moveto font1 setfont (Copyright ) show /Times-Italic findfont 10.0375 scalefont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end /font2 exch definefont pop /font2 findfont setfont (\251) show font1 setfont ( 1990, 1992, 1993 by Xerox Corporation. All rights reserved.) show 105.3938 665.8916 moveto font1 setfont (Brian Oki, October 4, 1990 10:40 am PDT) show 105.3938 653.8465 moveto font1 setfont (Brent Welch November 5, 1990 11:59 am PST) show 105.3938 641.8015 moveto font1 setfont (Christian Jacobi, April 21, 1993 5:25 pm PDT) show 105.3938 629.7568 moveto font1 setfont (Chauser, November 12, 1993 4:50 pm PST) show 105.3938 617.7115 moveto 90.3375 605.6668 moveto /Times-Roman findfont 8.029999 scalefont /font3 exch def font3 setfont (CedarPrimer 1993 ) show 90.3375 545.4415 moveto /Helvetica-Bold findfont 18.0675 scalefont /font4 exch def font4 setfont (How To Get Around Cedar - CDROM Edition) show 90.3375 509.3067 moveto /Helvetica findfont 12.045 scalefont /font5 exch def font5 setfont (Brian Oki, Christian Jacobi et al.) show 90.3375 473.1715 moveto /Helvetica findfont 8.029999 scalefont /font6 exch def font6 setfont (Filed on) show /Helvetica findfont 10.0375 scalefont /font7 exch def font7 setfont (: [Cedar10.1]<CedarDoc>CedarPrimerCDROM.tioga) show 90.3375 443.0592 moveto 90.3375 406.9242 moveto /Symbol findfont 8.029999 scalefont /font8 exch def font8 setfont (\323) show font6 setfont ( Copyright 1990, 1992, 1993 Xerox Corporation. All rights reserved.) show 90.3375 376.8116 moveto 90.3375 340.6766 moveto /colwidth 423.62 def gsave /Helvetica-Bold findfont 10.0375 scalefont /font9 exch def /execget {arindex get dup null eq {pop} {exec} ifelse} bind def /mixedjustify { /excess colwidth totwidth sub def 0 1 npiece { /arindex exch def opsbef execget % exec any accumu before ops nspaces arindex get % stack: nspaces dup 0 eq { % stack: nspaces pop texts arindex get % stack: text show % stack: NULL }{ weights arindex get % stack: nspaces weight totwt div excess mul % stack: nspaces share-excess exch div 0 32 % stack: spaceadd 0 32 texts arindex get % stack: spaceadd 0 32 text widthshow % stack: NULL } ifelse opsaft execget % exec any accumulated after ops } for /totwidth 0 def /totwt 0.0 def } bind def /buf { % stack: text npiece /npiece exch def % stack: text dup nsp /ns exch def % stack: text dup texts npiece 3 -1 roll put % stack: text nspaces npiece ns put width % stack: width totwidth add /totwidth exch def % stack: NULL ns 0 ne { ( ) width ns mul % stack: weight dup totwt add /totwt exch def % stack: weight weights npiece 3 -1 roll put % stack: NULL } if } bind def /texts 250 array def /nspaces 250 array def /weights 250 array def /opsbef 250 array def /opsaft 250 array def /totwidth 0 def /totwt 0.0 def font9 setfont opsbef 0 {font9 setfont} put (Abstract: ) 0 buf opsaft 0 null put font7 setfont opsbef 1 {font7 setfont} put (This document is a general introduction Cedar and is geared towards the needs) 1 buf opsaft 1 null put mixedjustify grestore 90.3375 328.6316 moveto gsave /justify { % stack: text dup nsp /ns exch def % stack: text ns 0 eq {show} { % stack: text dup width /totwidth try add % stack: text width colwidth exch sub % stack: text excess ns div % stack: text spaceadd 0 32 4 -1 roll % stack: spaceadd 0 32 text widthshow /totwidth 0 def % stack: NULL } ifelse } bind def font7 setfont (and interests of newcomers to the Cedar programming language and environment. It) justify grestore 90.3375 316.5867 moveto gsave font7 setfont (describes starting the Cedar environment, printing on-line documents, programming in) justify grestore 90.3375 304.5416 moveto font7 setfont (Cedar, and some lore about Cedar.) show 90.3375 280.4516 moveto gsave font7 setfont opsbef 0 {font7 setfont} put ([) 0 buf opsaft 0 null put font9 setfont opsbef 1 {font9 setfont} put (If you are looking at this document on-line from within the editor named Tioga,) 1 buf opsaft 1 null put mixedjustify grestore 90.3375 268.4066 moveto gsave font9 setfont (you might want to use the level functions to its overall structure. Click the) justify grestore 90.3375 256.3616 moveto gsave font9 setfont (``Levels'' button in the top menu, then click ``FirstLevelOnly'' in the new menu) justify grestore 90.3375 244.3166 moveto gsave font9 setfont (that appears. That will show you the major section headings. Click ``AllLevels'') justify grestore 90.3375 232.2716 moveto font9 setfont (to read the details.) show font7 setfont (]) show 90.3375 208.1816 moveto 90.3375 120.4501 moveto /Helvetica findfont 24.09 scalefont /font10 exch def font10 setfont (XEROX) show font0 setfont 44.56522 0.0 rmoveto font7 setfont 58.0 0.0 rmoveto 58.0 0.0 rmoveto (Xerox Corporation) show 90.3375 108.4051 moveto font0 setfont 58.0 0.0 rmoveto font7 setfont 58.0 0.0 rmoveto 58.0 0.0 rmoveto 58.0 0.0 rmoveto (Palo Alto Research Center) show 90.3375 96.36014 moveto font0 setfont 58.0 0.0 rmoveto 58.0 0.0 rmoveto 58.0 0.0 rmoveto 58.0 0.0 rmoveto font7 setfont (3333 Coyote Hill Road) show 90.3375 84.31512 moveto font0 setfont 58.0 0.0 rmoveto font7 setfont 58.0 0.0 rmoveto 58.0 0.0 rmoveto 58.0 0.0 rmoveto (Palo Alto, California 94304) show 90.3375 72.27012 moveto grestore grestore % end page 1 showpage %%page 2 gsave 2834.646 2834.646 scale gsave 0.0254 dup matrix scale concat 0.013837 dup matrix scale concat 282.1476 38.135 moveto font3 setfont (CEDAR 10.1 ) show font0 setfont 519.2227 746.79 moveto (2) show 90.3375 684.9593 moveto /Times-Bold findfont 12.045 scalefont /font11 exch def font11 setfont (1. Introduction) show 90.3375 660.8125 moveto /Times-Bold findfont 10.0375 scalefont /font12 exch def font12 setfont (1.1 Foreword) show 110.4125 636.6778 moveto /colwidth 403.545 def gsave font0 setfont (The purpose of this document is to help newcomers adapt to the Cedar computing) justify grestore 90.3375 624.6326 moveto /colwidth 423.62 def gsave font0 setfont (environment. We hope it will prove useful as a primer on getting started \050and surviving\051 with) justify grestore 90.3375 612.5876 moveto gsave font0 setfont (Cedar on Sun SPARCstations. In particular, we describe how to start the Cedar environment \050a) justify grestore 90.3375 600.5428 moveto font1 setfont (world) show font0 setfont (\051, printing on-line documents, and a bit about Cedar programming. ) show 110.4125 582.4415 moveto /colwidth 403.545 def gsave font0 setfont opsbef 0 {font0 setfont} put (This document does ) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (not) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( teach you the Cedar programming language, but it does provide a) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 570.3965 moveto /colwidth 423.62 def gsave font0 setfont (number of hints and summaries on the subject; these may or may not be documented elsewhere.) justify grestore 90.3375 558.3514 moveto font0 setfont (See LanguageOverviewDoc.tioga for an introduction to the Cedar language.) show 110.4125 540.2503 moveto /colwidth 403.545 def gsave font0 setfont (A great deal of useful information is available on-line in the form of documents and source) justify grestore 90.3375 528.2051 moveto /colwidth 423.62 def gsave font0 setfont (programs. Reading them is often very helpful, but finding them can be a nuisance. Throughout) justify grestore 90.3375 516.1604 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (this document, references to on-line material are indicated by <) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (n) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (>, where ) 2 buf opsaft 2 null put font1 setfont opsbef 3 {font1 setfont} put (n) 3 buf opsaft 3 null put font0 setfont opsbef 4 {font0 setfont} put ( is a citation number in) 4 buf opsaft 4 null put mixedjustify grestore 90.3375 504.1154 moveto gsave font0 setfont (the bibliography at the end of this document. Standard citations to the open literature appear as) justify grestore 90.3375 492.0702 moveto gsave font0 setfont opsbef 0 {font0 setfont} put ([) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (n) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (]. To help the browsing reader, we pretty much have abandoned the custom of defining terms) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 480.0253 moveto gsave font0 setfont (before using them. Instead, relevant terms, acronyms, and such are collected in <73>. You can) justify grestore 90.3375 467.9804 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (easily jump to the definition of a reference by selecting <) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (n) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (> or [) 2 buf opsaft 2 null put font1 setfont opsbef 3 {font1 setfont} put (n) 3 buf opsaft 3 null put font0 setfont opsbef 4 {font0 setfont} put (] and clicking on the \042Def\042 button.) 4 buf opsaft 4 null put mixedjustify grestore 90.3375 455.9352 moveto gsave font0 setfont (Include the brackets in the selection. You can jump back to where you were by clicking the) justify grestore 90.3375 443.8902 moveto font0 setfont (\042PrevPlace\042 button. You can experiment now with <) show font1 setfont (n) show font0 setfont (> or [) show font1 setfont (n) show font0 setfont (].) show 110.4125 425.789 moveto /colwidth 403.545 def gsave font0 setfont opsbef 0 {font0 setfont} put (A starting point in your on-line documentation search is ) 0 buf opsaft 0 null put font12 setfont opsbef 1 {font12 setfont} put (CedarDocDoc.tioga) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (. It contains) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 413.7442 moveto /colwidth 423.62 def gsave font0 setfont (pointers to other useful documents to read. You can open it now by typing \042open CedarDocDoc\042) justify grestore 90.3375 401.6989 moveto font0 setfont (at a commander prompt.) show 90.3375 377.5641 moveto font12 setfont (1.2 Roadmap) show 110.4125 353.429 moveto /colwidth 403.545 def gsave font0 setfont (This document consists of six sections. Section 2 tells you what magic incantations you need) justify grestore 90.3375 341.384 moveto /colwidth 423.62 def gsave font0 setfont (to invoke to bring up a Cedar world on your SPARCstation, some details about the window for) justify grestore 90.3375 329.339 moveto gsave font0 setfont (typing commands, how to tailor your system to suit your personal style, the meaning of the) justify grestore 90.3375 317.294 moveto font0 setfont (buttons, and a short introduction to editing using Tioga,. ) show 110.4125 299.1928 moveto font0 setfont (Section 3 discusses how to print documents. ) show 110.4125 281.0915 moveto /colwidth 403.5451 def gsave font0 setfont (Perhaps the most important section is Section 4, which introduces the tyro user to the) justify grestore 90.3375 269.0465 moveto /colwidth 423.62 def gsave font0 setfont (mysteries of programming in Cedar. In particular, it discusses the idiosyncrasies of naming,) justify grestore 90.3375 257.0014 moveto gsave font0 setfont (contains a brief history of the Cedar programming language, describes the file name space is) justify grestore 90.3375 244.9565 moveto gsave font0 setfont (organized, discusses system modelling using DF files, and contains a walk-through of a simple) justify grestore 90.3375 232.9114 moveto font0 setfont (Cedar example. ) show 110.4125 214.8101 moveto font0 setfont (Section 5 contains a bit more about some of the on-line documentation.) show 110.4125 196.709 moveto font0 setfont (We conclude with a long list of references.) show 110.4125 178.6077 moveto /colwidth 403.545 def gsave font12 setfont opsbef 0 {font12 setfont} put (Note) 0 buf opsaft 0 null put font0 setfont opsbef 1 {font0 setfont} put (: To assemble this document I lifted portions of documentation from various sources) 1 buf opsaft 1 null put mixedjustify grestore 90.3375 166.5627 moveto font0 setfont (without always acknowledging the sources or the authors; my apologies to those possibly offended.) show 110.4125 148.4615 moveto /colwidth 403.5451 def gsave font12 setfont opsbef 0 {font12 setfont} put (Acknowledgments) 0 buf opsaft 0 null put font0 setfont opsbef 1 {font0 setfont} put (. Thanks to Ken Pier and Brent Welch for reading a draft of this document) 1 buf opsaft 1 null put mixedjustify grestore 90.3375 136.4165 moveto /colwidth 423.62 def gsave font0 setfont (in its entirety and suggesting numerous changes that significantly improved its presentation.) justify grestore 90.3375 124.3714 moveto gsave font0 setfont (Thanks also to Jim Foote and Sharon Johnson for critiquing the sections on mail and) justify grestore 90.3375 112.3265 moveto gsave font0 setfont (programming. Finally, thanks to Craig Mudge, David Goldberg, John Coolidge, Vijay Saraswat,) justify grestore 90.3375 100.2815 moveto font0 setfont (and countless others for reporting bugs.) show grestore grestore % end page 2 showpage %%page 3 gsave 2834.646 2834.646 scale gsave 0.0254 dup matrix scale concat 0.013837 dup matrix scale concat 282.1476 38.135 moveto font3 setfont (CEDAR 10.1 ) show font0 setfont 519.525 746.79 moveto (3) show 90.3375 684.9593 moveto font11 setfont (2. Getting started) show 90.3375 659.2157 moveto font12 setfont (2.1 Bringing up the Cedar world from the CDROM) show 110.4125 633.8033 moveto /colwidth 403.545 def gsave font0 setfont (How do you bring up a Cedar world? The following assumes that you have already started the) justify grestore 90.3375 621.758 moveto /colwidth 423.62 def gsave font0 setfont (X Windows system and have mounted the CDROM as a unix file system somewhere in your) justify grestore 90.3375 609.7132 moveto gsave font0 setfont (network. You need to cd to the right place on the CDROM and set up an environment variable.) justify grestore 90.3375 597.6682 moveto gsave font0 setfont (Type the following to a csh shell prompt \050if not using the C shell do whatever you have to do to set) justify grestore 90.3375 585.6231 moveto font0 setfont (the environment variable\051:) show 110.4125 566.5637 moveto /Courier findfont 10.0375 scalefont /font13 exch def font13 setfont (% setenv XeroxCedar <cdrom-mount-point>/Cedar) show 110.4125 547.5043 moveto font13 setfont (% cd $XeroxCedar/solaris1) show 110.4125 528.4449 moveto font13 setfont (% x11v) show 110.4125 509.3856 moveto /colwidth 403.545 def gsave font0 setfont (Of course, if you are running on a Solaris2 machine use \042solaris2\042 in the second command) justify grestore 90.3375 497.3405 moveto font0 setfont (above.) show 110.4125 478.2809 moveto gsave font0 setfont (Various things will scroll by in the window where the shell was running, and eventually a large) justify grestore 90.3375 466.2361 moveto /colwidth 423.62 def gsave font0 setfont opsbef 0 {font0 setfont} put (window will be created that will contain the Cedar windowing system called ) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (Viewers) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (. When) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 454.191 moveto gsave font0 setfont (activity stops, on the right side of the screen is a window \050or ``viewer'' in Cedar lingo\051, called the) justify grestore 90.3375 442.1459 moveto gsave font9 setfont opsbef 0 {font9 setfont} put (Commander) 0 buf opsaft 0 null put font0 setfont opsbef 1 {font0 setfont} put ( viewer. The ) 1 buf opsaft 1 null put font9 setfont opsbef 2 {font9 setfont} put (Commander ) 2 buf opsaft 2 null put font0 setfont opsbef 3 {font0 setfont} put (is the viewer in which you type your commands at the) 3 buf opsaft 3 null put mixedjustify grestore 90.3375 430.101 moveto font0 setfont (% prompt. There will also be a commander prompt in the X window you used to start Cedar.) show 110.4125 411.0414 moveto /colwidth 403.545 def gsave font0 setfont (Note that \042killing a connection\042 won't destroy a Cedar Viewers world. The X11ViewersWorld) justify grestore 90.3375 398.9964 moveto /colwidth 423.62 def gsave font0 setfont (attempts to reconnect to an X server if it loses its connection. This is useful if your X server) justify grestore 90.3375 386.9514 moveto gsave font0 setfont (crashes. Just restart X and your Cedar world springs back into existence. To stop a Cedar Viewers) justify grestore 90.3375 374.9065 moveto gsave font0 setfont (world either use the Cedar command \042ExitWord\042, the X11Viewers pop up menu or a \042delete) justify grestore 90.3375 362.8616 moveto font0 setfont (window\042 option in the window manager. ) show 110.4125 343.802 moveto 90.3375 318.3894 moveto font12 setfont (2.2 The Commander) show 110.4125 292.9768 moveto /colwidth 403.545 def gsave font0 setfont (The Commander is the viewer with a directory name \050initially \042/Cedar/Commands %\042\051, as its) justify grestore 90.3375 280.9318 moveto /colwidth 423.62 def gsave font0 setfont (banner, and is where commands are typed. \050The banner is light blue on color displays, reverse) justify grestore 90.3375 268.8868 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (video on monochrome displays\051. You can create additional such viewers by clicking on the ) 0 buf opsaft 0 null put font7 setfont opsbef 1 { font7 setfont currentpoint /undery exch def /underx exch def} put (Cmd) 1 buf opsaft 1 { 1.0 setlinewidth currentpoint currentpoint pop undery 1.2 sub dup underx exch vec moveto} put mixedjustify grestore 90.3375 256.8418 moveto font0 setfont (button at the very top of the screen. ) show 110.4125 237.7823 moveto /colwidth 403.545 def gsave font0 setfont (Since I'm assuming that you're seated in front of a SPARCstation, a hard copy of this) justify grestore 90.3375 225.7374 moveto /colwidth 423.62 def gsave font0 setfont (document in hand, and have managed to bring up a Cedar world, let's type some commands to the) justify grestore 90.3375 213.6923 moveto gsave font0 setfont (Commander. Let's list the current directory. Type the following to your Commander \050the) justify grestore 90.3375 201.6474 moveto font0 setfont (Commander prompt is a bold-faced percent sign ) show font12 setfont (%) show font0 setfont (\051, and hit ) show font3 setfont (RETURN) show font0 setfont (:) show 125.4688 188.6104 moveto font12 setfont (%) show /Times-Roman findfont 10.0375 scalefont /font14 exch def font14 setfont ( cd ) show 131.4688 176.5654 moveto font14 setfont (/yourhomedirectory/) show 125.4688 163.5284 moveto font12 setfont (%) show font14 setfont ( ls) show 125.4688 150.4915 moveto font14 setfont (/yourhomedirectory/) show 125.4688 137.4545 moveto font14 setfont (. 1536 05-May-90 15:09:45 PDT) show 125.4688 124.4176 moveto font14 setfont (.. 512 07-May-90 09:47:33 PDT) show 125.4688 111.3807 moveto font14 setfont (.cshrc 903 04-May-90 13:47:37 PDT) show 125.4688 98.3438 moveto font14 setfont (.emacs 71 08-Mar-90 09:43:57 PST) show 125.4688 85.30687 moveto font14 setfont (.login 38 07-Feb-90 12:50:07 PST) show 125.4688 72.26993 moveto font14 setfont (.logout 56 27-Mar-90 14:29:51 PST) show grestore grestore % end page 3 showpage %%page 4 gsave 2834.646 2834.646 scale gsave 0.0254 dup matrix scale concat 0.013837 dup matrix scale concat 282.1476 38.135 moveto font3 setfont (CEDAR 10.1 ) show font0 setfont 519.081 746.79 moveto (4) show 125.4688 689.9815 moveto font14 setfont (...) show 90.3375 670.9946 moveto gsave font0 setfont (This is the Cedar-style directory listing. You can stop the listing by clicking with the left mouse) justify grestore 90.3375 658.9496 moveto font0 setfont (button on the STOP! button at the top of the Commander viewer.) show 90.3375 639.963 moveto font0 setfont (You can use the * wildcard in file names:) show 125.4688 626.9983 moveto font12 setfont (%) show font14 setfont ( ls *.mesa) show 90.3375 608.0113 moveto font0 setfont (You can find out the usage of a command with the ? command:) show 125.4688 595.0469 moveto font12 setfont (%) show font14 setfont ( ? ls) show 125.4688 582.0824 moveto font9 setfont (List ) show font14 setfont ( {switch | pattern}*) show 131.4688 570.0375 moveto font14 setfont ( Lists files matching pattern.) show 131.4688 557.9924 moveto font14 setfont ( -a) show 6.889098 0.0 rmoveto (print attachments) show 131.4688 545.9474 moveto font14 setfont ( -b) show 5.941666 0.0 rmoveto (brief format) show 131.4688 533.9024 moveto font14 setfont ( -d) show 5.941666 0.0 rmoveto (date sort) show 131.4688 521.8575 moveto font14 setfont ( -f) show 8.143782 0.0 rmoveto (full name print) show 131.4688 509.8125 moveto font14 setfont ( -h) show 5.941666 0.0 rmoveto (highest version) show 131.4688 497.7675 moveto font14 setfont ( -k) show 6.274016 0.0 rmoveto (keep print) show 131.4688 485.7225 moveto font14 setfont ( -n) show 5.95114 0.0 rmoveto (narrow print) show 131.4688 473.6774 moveto font14 setfont ( -o) show 6.27347 0.0 rmoveto (one line) show 131.4688 461.6326 moveto font14 setfont ( -p) show 5.941666 0.0 rmoveto (prefixes only) show 131.4688 449.5875 moveto font14 setfont ( -s) show 7.835969 0.0 rmoveto (size sort) show 131.4688 437.5424 moveto font14 setfont ( -t) show 8.451034 0.0 rmoveto (file type print) show 131.4688 425.4974 moveto font14 setfont ( -x) show 6.581284 0.0 rmoveto (exact level match) show 131.4688 413.4524 moveto font14 setfont ( -u) show 5.941666 0.0 rmoveto (unattached files only) show 131.4688 401.4074 moveto font14 setfont ( -z) show 7.21141 0.0 rmoveto (0-length files only) show 131.4688 389.3623 moveto font14 setfont ( ->) show 6.581284 0.0 rmoveto (sort decreasing) show 131.4688 377.3175 moveto font14 setfont ( -<) show 6.581284 0.0 rmoveto (sort increasing) show 90.3375 358.3304 moveto font0 setfont (You can change directory in the hierarchical file system with the cd command. ) show 90.3375 339.3436 moveto font0 setfont (Cd with no arguments returns you to your home directory.) show 110.4125 320.3566 moveto /colwidth 403.5451 def gsave font0 setfont (Given that you have a hard copy of this document in hand, let's try something more) justify grestore 90.3375 308.3117 moveto /colwidth 423.62 def gsave font0 setfont (ambitious: open a viewer on this document so you can view it on-line. Type the following to your) justify grestore 90.3375 296.2666 moveto font0 setfont (Commander, and hit ) show font3 setfont (RETURN) show font0 setfont (:) show 110.4125 277.2797 moveto 125.4688 264.3152 moveto font12 setfont (%) show font14 setfont ( open /Cedar/CedarDoc/CedarPrimer.tioga) show 125.4688 251.3509 moveto font14 setfont (Created Viewer: /Cedar/CedarDoc/CedarPrimer.tioga) show 90.3375 232.364 moveto font0 setfont (A viewer will be created, displaying the contents of CedarPrimer.tioga. ) show 90.3375 207.0481 moveto font1 setfont (Errors caught by the Commander) show 110.4125 181.7322 moveto /colwidth 403.545 def gsave font0 setfont (We're getting a bit ahead of ourselves here, but while you play around with the Commander,) justify grestore 90.3375 169.6872 moveto /colwidth 423.62 def gsave font0 setfont (you might run some program that bombs out. The Commander tries to catch any uncaught errors.) justify grestore 90.3375 157.6422 moveto font0 setfont (The Commander asks you to do something. What do you do? ) show 125.4688 144.6778 moveto 131.4688 132.6328 moveto font14 setfont (*** Uncaught ERROR or SIGNAL: unrecognized error) show 131.4688 120.5878 moveto font14 setfont (*** Do you want to try to debug this? \050y, n, s <flags>, or ?\051 ) show 90.3375 101.6009 moveto font0 setfont (Typing ? is the help command:) show 120.45 86.93543 moveto font0 setfont ('y' to REJECT the signal and land in the system debugger) show 120.45 72.26999 moveto font0 setfont ('n' to get back to top level) show grestore grestore % end page 4 showpage %%page 5 gsave 2834.646 2834.646 scale gsave 0.0254 dup matrix scale concat 0.013837 dup matrix scale concat 282.1476 38.135 moveto font3 setfont (CEDAR 10.1 ) show font0 setfont 519.4122 746.79 moveto (5) show 120.45 684.9593 moveto /colwidth 393.5075 def gsave font0 setfont ('s <flags>' to invoke the StackTrace command \050prints an abbreviated call stack for your) justify grestore 150.5625 672.914 moveto font0 setfont (viewing pleasure\051) show 90.3375 654.1798 moveto /colwidth 423.62 def gsave font0 setfont opsbef 0 {font0 setfont} put (If you respond with ) 0 buf opsaft 0 null put font12 setfont opsbef 1 {font12 setfont} put (n) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( the commander will abort the errant thread. This is generally ok, although) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 642.1347 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (occasionally this can leave your world in a bad state. If you respond with ) 0 buf opsaft 0 null put font12 setfont opsbef 1 {font12 setfont} put (s) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( you get a stack trace) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 630.0897 moveto gsave font0 setfont (that might give you some insight into the problem. <This probably doesn't work in the PPCR) justify grestore 90.3375 618.0449 moveto gsave font0 setfont (based world released on CDROM\051. After getting the stack trace you are given the prompt again) justify grestore 90.3375 606.0 moveto font0 setfont (and can abort the thread with an ) show font12 setfont (n) show font0 setfont ( reply.) show 90.3375 581.0207 moveto font1 setfont (Scrolling) show 110.4125 556.0417 moveto /colwidth 403.545 def gsave font0 setfont (Position the cursor in the Commander viewer and move it to the left until you nearly touch) justify grestore 90.3375 543.9967 moveto /colwidth 423.62 def gsave font0 setfont (the black border. A gray, vertical, scroll bar should appear. You should notice two things: first,) justify grestore 90.3375 531.9516 moveto gsave font0 setfont (the cursor changes shape to a double-headed arrow, and second, there's a dark gray glob. That) justify grestore 90.3375 519.9067 moveto gsave font0 setfont (gray glob indicates your relative position in this viewer. Now experiment with the mouse buttons.) justify grestore 90.3375 507.8617 moveto font3 setfont (LEFT) show font0 setfont (-click means to depress the left mouse button, and so on, for the other two buttons:) show 120.45 493.3648 moveto font3 setfont (LEFT) show font0 setfont (-click:) show 12.48372 0.0 rmoveto (Scroll to top of viewer) show 120.45 478.8676 moveto font3 setfont (RIGHT) show font0 setfont (-click:) show 5.907621 0.0 rmoveto (Top of viewer to click point) show 120.45 464.3708 moveto font3 setfont (MIDDLE) show font0 setfont (-click:) show 29.266 0.0 rmoveto (Scroll to absolute position.) show 90.3375 439.3916 moveto font1 setfont (Selecting/copying) show 110.4125 414.4127 moveto /colwidth 403.545 def gsave font0 setfont (Rather than typing the same pieces of text over and over again, you can use the selection) justify grestore 90.3375 402.3676 moveto /colwidth 423.62 def gsave font0 setfont (capability to copy pieces from elsewhere in the Commander viewer. Imagine that I'd like to view) justify grestore 90.3375 390.3226 moveto gsave font0 setfont (my .tioga file, and I'd already used the ``ls'' command to list the files in my home directory. It's a) justify grestore 90.3375 378.2776 moveto gsave font0 setfont (pain to type the whole string again. Let's say that you know there's a document on how to use) justify grestore 90.3375 366.2325 moveto gsave font0 setfont (Cedar, but don't quite remember the name. You know that the name starts wtih ``Cedar'',) justify grestore 90.3375 354.1875 moveto font0 setfont (followed by the .tioga extension. * is a wildcard that matches anything.) show 110.4125 335.4534 moveto font12 setfont (%) show font0 setfont ( ls /Cedar/CedarDoc/Cedar*.tioga) show 125.4688 322.7414 moveto font14 setfont (/Cedar/CedarDoc/) show 125.4688 310.0297 moveto font14 setfont (CedarDocDoc.tioga!7 5444 14-May-92 12:20:20 PDT) show 125.4688 297.3179 moveto font14 setfont (...) show 125.4688 284.606 moveto font12 setfont (%) show font14 setfont ( ) show 90.3375 265.8718 moveto gsave font0 setfont (Type ``Openr '' with the space to your Commander. The ``OpenR'' command says to look in the) justify grestore 90.3375 253.8268 moveto gsave font0 setfont (Cedar system release for the file in question. The release is maintained as a version map that lists) justify grestore 90.3375 241.7818 moveto gsave font0 setfont (the directory and version number of each item in the release. Move the cursor to the file name) justify grestore 90.3375 229.7368 moveto font0 setfont (listed and do the following:) show 120.45 215.2398 moveto /colwidth 393.5075 def gsave font0 setfont opsbef 0 {font0 setfont} put (1. Hold down the ) 0 buf opsaft 0 null put font3 setfont opsbef 1 {font3 setfont} put (SHIFT) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( key, and ) 2 buf opsaft 2 null put font3 setfont opsbef 3 {font3 setfont} put (MIDDLE) 3 buf opsaft 3 null put font0 setfont opsbef 4 {font0 setfont} put (-click on ``CedarDocDoc.'' A gray underline) 4 buf opsaft 4 null put mixedjustify grestore 150.5625 203.1948 moveto font0 setfont (appears under the word. This indicates that you're performing a copy operation.) show 120.45 188.6978 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (2. Keeping the ) 0 buf opsaft 0 null put font3 setfont opsbef 1 {font3 setfont} put (SHIFT) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( key depressed, ) 2 buf opsaft 2 null put font3 setfont opsbef 3 {font3 setfont} put (RIGHT) 3 buf opsaft 3 null put font0 setfont opsbef 4 {font0 setfont} put (-click and drag the mouse cursor arrow) 4 buf opsaft 4 null put mixedjustify grestore 150.5625 176.6528 moveto font0 setfont (rightward until the gray underline also underscores the .tioga extension.) show 120.45 162.1557 moveto font0 setfont (3. Now release the ) show font3 setfont (SHIFT) show font0 setfont ( key. You should now see the following at your Commander:) show 120.45 147.6587 moveto 155.5812 134.947 moveto font12 setfont (%) show font14 setfont ( OpenR CedarDocDoc.tioga) show 120.45 120.45 moveto /colwidth 393.5077 def gsave font0 setfont opsbef 0 {font0 setfont} put (4. The flashing cursor should be positioned at the end of the line. You can hit ) 0 buf opsaft 0 null put font3 setfont opsbef 1 {font3 setfont} put (RETURN) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( if) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 108.405 moveto /colwidth 363.3949 def gsave font0 setfont (you like, but this example is meant to illustrate how to select and copy a piece of text) justify grestore 150.5625 96.35995 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (from one place to another. If you do hit ) 0 buf opsaft 0 null put font3 setfont opsbef 1 {font3 setfont} put (RETURN) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( a new viewer will pop up. You can) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 84.31496 moveto /colwidth 363.395 def gsave font0 setfont opsbef 0 {font0 setfont} put (close the viewer with a ) 0 buf opsaft 0 null put font3 setfont opsbef 1 {font3 setfont} put (RIGHT-CLICK) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( over the menu bar. You can destroy the viewer) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 72.26993 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (with a ) 0 buf opsaft 0 null put font3 setfont opsbef 1 {font3 setfont} put (LEFT-CLICK) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( over the ) 2 buf opsaft 2 null put font13 setfont opsbef 3 { font13 setfont currentpoint /undery exch def /underx exch def} put (Destroy) 3 buf opsaft 3 { 1.0 setlinewidth currentpoint currentpoint pop undery 1.2 sub dup underx exch vec moveto} put font0 setfont opsbef 4 {font0 setfont} put ( button, which you can find underneath the) 4 buf opsaft 4 null put mixedjustify grestore grestore grestore % end page 5 showpage %%page 6 gsave 2834.646 2834.646 scale gsave 0.0254 dup matrix scale concat 0.013837 dup matrix scale concat 282.1476 38.135 moveto font3 setfont (CEDAR 10.1 ) show font0 setfont 519.27 746.79 moveto (6) show 150.5625 684.9593 moveto font0 setfont (banner. To abrogate the command, hit the ) show font3 setfont (DELETE) show font0 setfont ( key.) show 120.45 669.9965 moveto 155.5812 656.5862 moveto font12 setfont (%) show font14 setfont ( OpenR CedarDocDoc.tioga ) show font1 setfont (-- <DEL>) show 90.3375 637.1539 moveto /colwidth 423.62 def gsave font0 setfont opsbef 0 {font0 setfont} put (If you select the wrong thing, that's okay; just hit the ) 0 buf opsaft 0 null put font3 setfont opsbef 1 {font3 setfont} put (DELETE) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( key before releasing the ) 2 buf opsaft 2 null put font3 setfont opsbef 3 {font3 setfont} put (SHIFT) 3 buf opsaft 3 null put font0 setfont opsbef 4 {font0 setfont} put ( key;) 4 buf opsaft 4 null put mixedjustify grestore 90.3375 625.1087 moveto font0 setfont (that will unselect your selection.) show 90.3375 599.1986 moveto font1 setfont (Commander buttons) show 110.4125 573.2884 moveto /colwidth 403.545 def gsave font0 setfont (Here's a brief explanation of the buttons at the top of each Commander, placed there by the) justify grestore 90.3375 561.2432 moveto font0 setfont (Commander mechanism \050others can be created by your profile\051) show font7 setfont currentpoint /undery exch def /underx exch def (.) show 1.0 setlinewidth currentpoint currentpoint pop undery 1.2 sub dup underx exch vec moveto 110.4125 541.8108 moveto gsave font7 setfont opsbef 0 { font7 setfont currentpoint /undery exch def /underx exch def} put (Find) 0 buf opsaft 0 { 1.0 setlinewidth currentpoint currentpoint pop undery 1.2 sub dup underx exch vec moveto} put font0 setfont opsbef 1 {font0 setfont} put ( button. This button appears to the row of buttons just below the blue banner of the) 1 buf opsaft 1 null put mixedjustify grestore 90.3375 529.766 moveto /colwidth 423.62 def gsave font0 setfont (Commander. Think of this command as a postfix operation, that is, you select the argument first) justify grestore 90.3375 517.721 moveto gsave font0 setfont (and then click on this button, unlike typing commands. Select some text with the mouse and then) justify grestore 90.3375 505.6757 moveto gsave font0 setfont (search for the text within the Commander viewer \050you can also search for text within other viewers,) justify grestore 90.3375 493.6308 moveto gsave font0 setfont (but we won't get into that\051. In this command, the direction of search and capitalization are) justify grestore 90.3375 481.5858 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (determined by the mouse buttons and ) 0 buf opsaft 0 null put font3 setfont opsbef 1 {font3 setfont} put (SHIFT) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( keys. ) 2 buf opsaft 2 null put font3 setfont opsbef 3 {font3 setfont} put (LEFT) 3 buf opsaft 3 null put font0 setfont opsbef 4 {font0 setfont} put (-clicking searches forward from the) 4 buf opsaft 4 null put mixedjustify grestore 90.3375 469.5408 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (current selection point; ) 0 buf opsaft 0 null put font3 setfont opsbef 1 {font3 setfont} put (RIGHT) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (-clicking searches backwards; ) 2 buf opsaft 2 null put font3 setfont opsbef 3 {font3 setfont} put (MIDDLE) 3 buf opsaft 3 null put font0 setfont opsbef 4 {font0 setfont} put (-clicking does a wrap-around) 4 buf opsaft 4 null put mixedjustify grestore 90.3375 457.4958 moveto gsave font0 setfont (search by first searching forward to the end of the document then searching from the beginning) justify grestore 90.3375 445.4508 moveto gsave font0 setfont (until the entire document has been searched. By default, the search matches capitalization.) justify grestore 90.3375 433.4058 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (Clicking with the ) 0 buf opsaft 0 null put font3 setfont opsbef 1 {font3 setfont} put (SHIFT) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( key down invokes a `caseless' search in which capitalization does not) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 421.3606 moveto font0 setfont (matter.) show 110.4125 401.9282 moveto /colwidth 403.545 def gsave font7 setfont opsbef 0 { font7 setfont currentpoint /undery exch def /underx exch def} put (STOP) 0 buf opsaft 0 { 1.0 setlinewidth currentpoint currentpoint pop undery 1.2 sub dup underx exch vec moveto} put font0 setfont opsbef 1 {font0 setfont} put (! button. Attempts to stop the current Commander process running in the Commander) 1 buf opsaft 1 null put mixedjustify grestore 90.3375 389.8831 moveto /colwidth 423.62 def gsave font0 setfont opsbef 0 {font0 setfont} put (viewer. It raises the signal ) 0 buf opsaft 0 null put font3 setfont opsbef 1 {font3 setfont} put (ABORTED) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( in the Commander process, which usually manifests itself with) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 377.8382 moveto gsave font0 setfont (the printed string `` -- Aborted'', along with a new Commander prompt. This may not always work) justify grestore 90.3375 365.7931 moveto gsave font0 setfont (because, in Cedar, it's up to the process to check whether a user has requested an abort. But it) justify grestore 90.3375 353.7481 moveto font0 setfont (works for the most important commands. ) show 90.3375 327.838 moveto font1 setfont (Viewer buttons) show 110.4125 301.9278 moveto /colwidth 403.545 def gsave font0 setfont (Since the Commander is itself a viewer, it has buttons in common with other viewers. You) justify grestore 90.3375 289.8828 moveto /colwidth 423.62 def gsave font0 setfont (can find these buttons beneath the light blue banner of the viewer by moving your mouse cursor) justify grestore 90.3375 277.8378 moveto font0 setfont (on top of it.) show 110.4125 258.4053 moveto /colwidth 403.545 def gsave font7 setfont opsbef 0 { font7 setfont currentpoint /undery exch def /underx exch def} put (Destroy) 0 buf opsaft 0 { 1.0 setlinewidth currentpoint currentpoint pop undery 1.2 sub dup underx exch vec moveto 1.0 setlinewidth currentpoint currentpoint pop undery -2.3 sub dup underx exch vec moveto} put font0 setfont opsbef 1 {font0 setfont} put ( button. Destroy the viewer. This is an example of a guarded button: click it once) 1 buf opsaft 1 null put mixedjustify grestore 90.3375 246.3603 moveto /colwidth 423.62 def gsave font0 setfont (and the guard goes away. Click again at least .1 second later and not more than 4 seconds later and) justify grestore 90.3375 234.3152 moveto gsave font0 setfont (it does its action. The Reset and Store buttons in Tioga viewers are other examples of guarded) justify grestore 90.3375 222.2703 moveto font0 setfont (buttons.) show 110.4125 202.8376 moveto /colwidth 403.545 def gsave font7 setfont opsbef 0 { font7 setfont currentpoint /undery exch def /underx exch def} put (Adjust) 0 buf opsaft 0 { 1.0 setlinewidth currentpoint currentpoint pop undery 1.2 sub dup underx exch vec moveto} put font0 setfont opsbef 1 {font0 setfont} put ( button. Changes the size of the window. Click on this button and move the mouse) 1 buf opsaft 1 null put mixedjustify grestore 90.3375 190.7927 moveto font0 setfont (cursor around to see its effects. ) show 110.4125 171.36 moveto /colwidth 403.545 def gsave font7 setfont opsbef 0 { font7 setfont currentpoint /undery exch def /underx exch def} put (Top) 0 buf opsaft 0 { 1.0 setlinewidth currentpoint currentpoint pop undery 1.2 sub dup underx exch vec moveto} put font0 setfont opsbef 1 {font0 setfont} put ( button. Moves the viewer in question to the top of the screen, moving other viewers) 1 buf opsaft 1 null put mixedjustify grestore 90.3375 159.3151 moveto font0 setfont (further down.) show 110.4125 139.8825 moveto /colwidth 403.545 def gsave font7 setfont opsbef 0 { font7 setfont currentpoint /undery exch def /underx exch def} put (Grow) 0 buf opsaft 0 { 1.0 setlinewidth currentpoint currentpoint pop undery 1.2 sub dup underx exch vec moveto} put font0 setfont opsbef 1 {font0 setfont} put ( button. Allows a viewer to take up the entire side of the screen, in effect, ``growing'' to) 1 buf opsaft 1 null put mixedjustify grestore 90.3375 127.8375 moveto /colwidth 423.62 def gsave font0 setfont (fill the whole side. Other viewers will be turned iconic. Clicking on this button again, in the full) justify grestore 90.3375 115.7925 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (grown viewer, restores the viewers to the positions they were in before you clicked ) 0 buf opsaft 0 null put font7 setfont opsbef 1 { font7 setfont currentpoint /undery exch def /underx exch def} put (Grow) 1 buf opsaft 1 { 1.0 setlinewidth currentpoint currentpoint pop undery 1.2 sub dup underx exch vec moveto} put font0 setfont opsbef 2 {font0 setfont} put (.) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 103.7475 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (Growing/shrinking windows is a fairly common operation, so a shorthand was devised: ) 0 buf opsaft 0 null put font3 setfont opsbef 1 {font3 setfont} put (MIDDLE) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (-) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 91.7025 moveto font0 setfont (click in the banner selects the ) show font7 setfont currentpoint /undery exch def /underx exch def (Grow) show 1.0 setlinewidth currentpoint currentpoint pop undery 1.2 sub dup underx exch vec moveto font0 setfont ( button by default.) show 110.4125 72.26991 moveto /colwidth 403.545 def gsave font7 setfont opsbef 0 { font7 setfont currentpoint /undery exch def /underx exch def} put (Close) 0 buf opsaft 0 { 1.0 setlinewidth currentpoint currentpoint pop undery 1.2 sub dup underx exch vec moveto} put font0 setfont opsbef 1 {font0 setfont} put ( button. ) 1 buf opsaft 1 null put font3 setfont opsbef 2 {font3 setfont} put (RIGHT) 2 buf opsaft 2 null put font0 setfont opsbef 3 {font0 setfont} put (-click in the banner selects the ) 3 buf opsaft 3 null put font7 setfont opsbef 4 { font7 setfont currentpoint /undery exch def /underx exch def} put (Close) 4 buf opsaft 4 { 1.0 setlinewidth currentpoint currentpoint pop undery 1.2 sub dup underx exch vec moveto} put font0 setfont opsbef 5 {font0 setfont} put ( button by default. This is much) 5 buf opsaft 5 null put mixedjustify grestore grestore grestore % end page 6 showpage %%page 7 gsave 2834.646 2834.646 scale gsave 0.0254 dup matrix scale concat 0.013837 dup matrix scale concat 282.1476 38.135 moveto font3 setfont (CEDAR 10.1 ) show font0 setfont 519.4122 746.79 moveto (7) show 90.3375 684.9593 moveto font0 setfont (easier than finding the button.) show 110.4125 666.095 moveto font0 setfont (For more information on the Commander, please consult <70>.) show 90.3375 640.9428 moveto font12 setfont (2.3 User profile) show 110.4125 615.7907 moveto /colwidth 403.545 def gsave font0 setfont (Many components of Cedar permit the user to customize system behavior along certain) justify grestore 90.3375 603.7458 moveto /colwidth 423.62 def gsave font0 setfont opsbef 0 {font0 setfont} put (predefined dimensions via a mechanism called the ) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (User Profile) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (. Whenever the user boots his) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 591.701 moveto gsave font0 setfont (Cedar world, his user profile is consulted to obtain the value for these parameters. The user profile) justify grestore 90.3375 579.6559 moveto gsave /Helvetica-Oblique findfont 10.0375 scalefont /font15 exch def font0 setfont opsbef 0 {font0 setfont} put (goes under the name ) 0 buf opsaft 0 null put font15 setfont opsbef 1 {font15 setfont} put (.) 1 buf opsaft 1 null put font13 setfont opsbef 2 {font13 setfont} put (cedar) 2 buf opsaft 2 null put font0 setfont opsbef 3 {font0 setfont} put (.) 3 buf opsaft 3 null put font7 setfont opsbef 4 {font7 setfont} put (profile) 4 buf opsaft 4 null put font0 setfont opsbef 5 {font0 setfont} put (, it is stored in your home directory. To just run Cedar from) 5 buf opsaft 5 null put mixedjustify grestore 90.3375 567.6111 moveto gsave font0 setfont (the CDROM you don't need a user profile, but if you may find that you wish to customize the way) justify grestore 90.3375 555.566 moveto font0 setfont (Cedar starts up. ) show 110.4125 536.7020 moveto /colwidth 403.545 def gsave font0 setfont (To customize your Cedar environment to your liking, copy CedarNoviceUser.profile from the) justify grestore 90.3375 524.6572 moveto font0 setfont (Cedar directory by typing the following commands to your Commander Viewer:) show 110.4125 505.793 moveto 125.4688 492.9515 moveto font12 setfont (%) show font14 setfont ( cd) show 125.4688 480.11 moveto font12 setfont (%) show font14 setfont ( copy .cedar.profile ← /Cedar/CedarDoc/CedarNoviceUser.profile) show 90.3375 461.2459 moveto /colwidth 423.62 def gsave font0 setfont (\050← will display on the screen as a left-pointing arrow. The keypad 4 key will also work. Note the) justify grestore 90.3375 449.201 moveto font0 setfont (spaces surrounding the ←\051 Having copied the user profile, you need to modify it. Create a viewer.) show 90.3375 430.337 moveto 125.4688 417.4953 moveto font12 setfont (%) show font14 setfont ( open .cedar.profile) show 125.4688 404.6538 moveto font14 setfont (Created Viewer: .cedar.profile) show 90.3375 385.7898 moveto gsave font0 setfont (Select anywhere at the beginning of the viewer. Find the key on the right hand side of the) justify grestore 90.3375 373.7447 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (keyboard, labelled either ``6'' or ``R12.'' This is the so-called ) 0 buf opsaft 0 null put font3 setfont opsbef 1 {font3 setfont} put (NEXT) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( key. Punch it once; you'll) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 361.6998 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (notice that it looks for placeholder markers that look like this ) 0 buf opsaft 0 null put font14 setfont /totwidth /totwidth try 7.026246 add def opsbef 1 { font14 setfont gsave currentpoint translate 0.0 setgray 1.00375 -1.254688 moveto 1.00375 8.280937 lineto 6.273437 3.513125 lineto fill grestore 7.026246 0.0 rmoveto} put (stuff in between) 1 buf opsaft 1 null put /totwidth /totwidth try 7.026246 add def /totwidth /totwidth try 7.026246 add def font0 setfont opsbef 2 { gsave 7.026246 0.0 rmoveto currentpoint translate -1.0 1.0 matrix scale concat 0.0 setgray 1.00375 -1.254688 moveto 1.00375 8.280937 lineto 6.273437 3.513125 lineto fill grestore 7.026246 0.0 rmoveto font0 setfont} put (, changes to) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 349.6548 moveto gsave font0 setfont (reverse video, and positions the cursor at the beginning. Just for fun, select the word ``Select'' at) justify grestore 90.3375 337.6097 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (the beginning of this paragraph. Now ) 0 buf opsaft 0 null put font3 setfont opsbef 1 {font3 setfont} put (NEXT) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( to see what happens. Alas, it doesn't wrap around, so) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 325.5647 moveto font0 setfont (to go backward, hold down the ) show font3 setfont (SHIFT) show font0 setfont ( key and depress ) show font3 setfont (NEXT) show font0 setfont (. ) show 120.45 310.9812 moveto font0 setfont (1. Type the following depending on what's between the placeholders.) show 150.5625 296.3978 moveto /colwidth 363.395 def gsave font0 setfont opsbef 0 {font0 setfont} put (a. ) 0 buf opsaft 0 null put font14 setfont /totwidth /totwidth try 7.026246 add def font0 setfont opsbef 1 { font14 setfont gsave currentpoint translate 0.0 setgray 1.00375 -1.254688 moveto 1.00375 8.280937 lineto 6.273437 3.513125 lineto fill grestore 7.026246 0.0 rmoveto font0 setfont} put (YourHomeDirectory) 1 buf opsaft 1 null put font14 setfont /totwidth /totwidth try 7.026246 add def /totwidth /totwidth try 7.026246 add def font0 setfont opsbef 2 { font14 setfont gsave 7.026246 0.0 rmoveto currentpoint translate -1.0 1.0 matrix scale concat 0.0 setgray 1.00375 -1.254688 moveto 1.00375 8.280937 lineto 6.273437 3.513125 lineto fill grestore 7.026246 0.0 rmoveto font0 setfont} put (. Type /net/palain/rosa/boki, for example, or) 2 buf opsaft 2 null put mixedjustify grestore 180.675 284.3528 moveto /colwidth 333.2826 def gsave font0 setfont (/net/palain/palain/welch, for another \050but don't use those; Oki and Welch) justify grestore 180.675 272.3076 moveto font0 setfont (won't be very happy if you mess with their directories\051 ) show 150.5625 257.7242 moveto /colwidth 363.395 def gsave font0 setfont opsbef 0 {font0 setfont} put (b. ) 0 buf opsaft 0 null put font14 setfont /totwidth /totwidth try 7.026246 add def font0 setfont opsbef 1 { font14 setfont gsave currentpoint translate 0.0 setgray 1.00375 -1.254688 moveto 1.00375 8.280937 lineto 6.273437 3.513125 lineto fill grestore 7.026246 0.0 rmoveto font0 setfont} put (YourName) 1 buf opsaft 1 null put font14 setfont /totwidth /totwidth try 7.026246 add def /totwidth /totwidth try 7.026246 add def font0 setfont opsbef 2 { font14 setfont gsave 7.026246 0.0 rmoveto currentpoint translate -1.0 1.0 matrix scale concat 0.0 setgray 1.00375 -1.254688 moveto 1.00375 8.280937 lineto 6.273437 3.513125 lineto fill grestore 7.026246 0.0 rmoveto font0 setfont} put (. Type your user name in lowercase, say, boki or nichols, at the) 2 buf opsaft 2 null put mixedjustify grestore 180.675 245.6792 moveto font0 setfont (cursor. ) show 120.45 231.0958 moveto font0 setfont (2. Depress ) show font3 setfont (NEXT) show font0 setfont ( again to get to the next occurrence where you type type your name. ) show 120.45 216.5122 moveto font0 setfont (3. Go back to step 1. Continue this procedure until you reach the end of the file.) show 120.45 201.9287 moveto font0 setfont (4. Click on ) show font7 setfont currentpoint /undery exch def /underx exch def (Save) show 1.0 setlinewidth currentpoint currentpoint pop undery 1.2 sub dup underx exch vec moveto font0 setfont ( button in that viewer to save the changes.) show 110.4125 183.0646 moveto /colwidth 403.545 def gsave font0 setfont (Now let's look at the profile more carefully. Notice that each entry in this profile is of the) justify grestore 90.3375 171.0196 moveto /colwidth 423.62 def gsave font0 setfont opsbef 0 {font0 setfont} put (form <key>: <value>, where key is typically a string \050case does not matter\051 and value is either ) 0 buf opsaft 0 null put font3 setfont opsbef 1 {font3 setfont} put (TRUE) 1 buf opsaft 1 null put mixedjustify grestore 90.3375 158.9747 moveto font3 setfont (or FALSE; ) show font0 setfont (an ) show font3 setfont (INT) show font0 setfont (; or a sequence of strings. For example,) show 105.3938 146.1331 moveto font12 setfont (Tioga.TryVersionMap) show font14 setfont (: ) show font3 setfont (TRUE) show 90.3375 127.2691 moveto gsave font0 setfont (The Tioga editor looks in your profile to see what options are set. In this case, TryVersionMap tells) justify grestore 90.3375 115.2241 moveto font0 setfont (the editor to use the version map mechanism to help it find files. ) show 110.4125 96.36007 moveto /colwidth 403.545 def gsave font0 setfont opsbef 0 {font0 setfont} put (The above is a particularly simple example of setting an entry to either ) 0 buf opsaft 0 null put font3 setfont opsbef 1 {font3 setfont} put (TRUE) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( or ) 2 buf opsaft 2 null put font3 setfont opsbef 3 {font3 setfont} put (FALSE) 3 buf opsaft 3 null put font0 setfont opsbef 4 {font0 setfont} put (. A) 4 buf opsaft 4 null put mixedjustify grestore 90.3375 84.31507 moveto /colwidth 423.62 def gsave font0 setfont opsbef 0 {font0 setfont} put (more complex example is the ) 0 buf opsaft 0 null put font12 setfont opsbef 1 {font12 setfont} put (BootCommands) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( entry, which the Commander looks at when) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 72.27007 moveto gsave font0 setfont (initializing itself after booting. BootCommands is run once, when you boot your Cedar world.) justify grestore grestore grestore % end page 7 showpage %%page 8 gsave 2834.646 2834.646 scale gsave 0.0254 dup matrix scale concat 0.013837 dup matrix scale concat 282.1476 38.135 moveto font3 setfont (CEDAR 10.1 ) show font0 setfont 519.4658 746.79 moveto (8) show 90.3375 684.9593 moveto font0 setfont (Note that a double quote at the beginning and end of this entry encloses the set of commands.) show 110.4125 666.249 moveto 125.4688 653.5616 moveto font12 setfont (CommandTool.BootCommands) show font14 setfont (: \042) show 140.525 640.8743 moveto font1 setfont (BootCommands are run once, when you boot a Viewers world. First we get the aliases) show 146.525 628.8293 moveto font1 setfont (and prefixes defined in the NoViewersBootCommands.) show 140.525 616.1420 moveto 140.525 603.4545 moveto font14 setfont (CommandsFromProfile CommandTool.NoViewersBootCommands) show 140.525 590.7671 moveto 140.525 578.08 moveto font1 setfont (Require commands are used to load packages and define commands.) show 146.525 566.035 moveto font1 setfont (Require <world> <component> <resource>) show 146.525 553.9898 moveto font1 setfont (The <world> corresponds to a prefix map entry and it defines the main software) show 146.525 541.945 moveto font1 setfont (package. ) show 146.525 529.9 moveto font1 setfont (The <component> refers to a package in the world, i.e. Imager, Tioga.) show 146.525 517.8549 moveto font1 setfont (The <resource> refers to a \042resource.require\042 file found with the package.) show 146.525 505.81 moveto font1 setfont (In effect, Require means ) show 146.525 493.7647 moveto font1 setfont ( CD /<world>/<component> ; Source <resource>.require) show 146.525 481.72 moveto font1 setfont ( ) show 140.525 469.0325 moveto font1 setfont (Require Cedar IconHacks IconHacks) show 140.525 456.345 moveto font1 setfont (Require Cedar TiogaExecCommands TiogaExecCommands) show 140.525 443.6575 moveto font1 setfont (Require Cedar TiogaExecCommands TiogaExecViewerCommands) show 140.525 430.9702 moveto 140.525 418.2828 moveto font1 setfont (Term starts up a vt100-like terminal emulator for UNIX hacking.) show 140.525 405.5952 moveto font1 setfont (Term) show 140.525 392.908 moveto font1 setfont (Clock) show 140.525 380.2206 moveto 140.525 367.5333 moveto font1 setfont (EditTool is a useful adjuct to tioga. It lets you search/replace, change fonts, etc. It has) show 146.525 355.4882 moveto font1 setfont (some silly default settings, so we correct them.) show 140.525 342.8008 moveto font14 setfont (EditTool) show 140.525 330.1132 moveto font14 setfont (DoTiogaOps SaveSelectionA MatchCase MatchLiterally LeaveInitCap SubstituteInSel) show 185.6937 318.0684 moveto font14 setfont (MatchAnywhere EqualLooksTest DoReplace TypeName \134\042code\134\042) show 185.6937 306.0232 moveto font14 setfont (StyleName \134\042Cedar\134\042 PropName \134\042Comment\134\042 RestoreSelectionA) show 140.525 293.336 moveto 140.525 280.6485 moveto 140.525 267.961 moveto font1 setfont (TiogaLineNumberButton adds a tioga button that turns on line numbering.) show 140.525 255.2738 moveto font1 setfont (TiogaLineNumberButton) show 140.525 242.5864 moveto font1 setfont (KeyboardScan turns on an incremental search mode in Tioga.) show 140.525 229.8989 moveto font1 setfont (KeyboardScan) show 140.525 217.2115 moveto 140.525 204.5242 moveto font1 setfont (TiogaDWIM turns on a \042do-what-I-mean\042 mode.) show 140.525 191.8367 moveto font1 setfont (TiogaDWIM) show 140.525 179.1494 moveto 140.525 166.462 moveto font1 setfont (Viewers-oriented aliases) show 140.525 153.7746 moveto font14 setfont (Alias myprofile ) show 11.61011 0.0 rmoveto (open /tilde/) show gsave currentpoint translate 0.0 setgray 1.00375 -1.254688 moveto 1.00375 8.280937 lineto 6.273437 3.513125 lineto fill grestore 7.026246 0.0 rmoveto (YourName) show gsave 7.026246 0.0 rmoveto currentpoint translate -1.0 1.0 matrix scale concat 0.0 setgray 1.00375 -1.254688 moveto 1.00375 8.280937 lineto 6.273437 3.513125 lineto fill grestore 7.026246 0.0 rmoveto (/.cedar.profile) show 140.525 141.0872 moveto font14 setfont (Alias profile\050user\051 ) show 10.33147 0.0 rmoveto (open /) show (tilde) show (/user/.cedar.profile) show 140.525 128.3998 moveto font14 setfont (...) show 140.525 115.7124 moveto font14 setfont (CommandsFromProfile CommandTool.PerCommandTool) show 140.525 103.025 moveto font14 setfont (\042) show 110.4125 84.31512 moveto /colwidth 403.545 def gsave font0 setfont opsbef 0 {font0 setfont} put (The ) 0 buf opsaft 0 null put font12 setfont opsbef 1 {font12 setfont} put (PerCommandTool) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( entry contains commands that are run for each new Commander) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 72.27012 moveto font0 setfont (viewer. Mostly these create new buttons for the Commander. For example,) show grestore grestore % end page 8 showpage %%page 9 gsave 2834.646 2834.646 scale gsave 0.0254 dup matrix scale concat 0.013837 dup matrix scale concat 282.1476 38.135 moveto font3 setfont (CEDAR 10.1 ) show font0 setfont 519.2722 746.79 moveto (9) show 110.4125 684.9593 moveto 125.4688 671.8175 moveto font12 setfont (CommandTool.PerCommandTool) show font14 setfont (: \042) show 140.525 658.6757 moveto font14 setfont (CreateButton Open Open $FileNameSelection$) show 140.525 645.5342 moveto font14 setfont (CreateButton New New $FileNameSelection$) show 140.525 632.3929 moveto font14 setfont (...) show 140.525 619.251 moveto font14 setfont (\042) show 90.3375 600.087 moveto font0 setfont (creates two new buttons in the Commander viewer, one called ) show font7 setfont currentpoint /undery exch def /underx exch def (Open) show 1.0 setlinewidth currentpoint currentpoint pop undery 1.2 sub dup underx exch vec moveto font0 setfont (, the other called ) show font7 setfont currentpoint /undery exch def /underx exch def (New) show 1.0 setlinewidth currentpoint currentpoint pop undery 1.2 sub dup underx exch vec moveto font0 setfont (.) show 110.4125 580.9228 moveto gsave font0 setfont (If you change your profile type ``ProfileChanged'' to your Commander. This action causes the) justify grestore 90.3375 568.8778 moveto font0 setfont (new user profile values to take effect.) show 110.4125 549.7136 moveto /colwidth 403.545 def gsave font0 setfont (Much of this may be mysterious until you've been around for a while, but your profile can) justify grestore 90.3375 537.6687 moveto font0 setfont (make the Cedar environment much more pleasant to work in.) show 90.3375 512.1162 moveto font12 setfont (2.4 Static Buttons) show 110.4125 486.5641 moveto font0 setfont (These are the buttons at the very top of the screen, from right to left:) show 110.4125 467.4 moveto /colwidth 403.545 def gsave font0 setfont opsbef 0 { font0 setfont currentpoint /undery exch def /underx exch def} put (X11Viewers) 0 buf opsaft 0 { 1.0 setlinewidth currentpoint currentpoint pop undery 1.2 sub dup underx exch vec moveto} put opsbef 1 {font0 setfont} put (: Invokes a pop-up menu with operations including the very important \042Exit) 1 buf opsaft 1 null put mixedjustify grestore 90.3375 455.3551 moveto font0 setfont (Cedar\042. To get rid of the pop-up click on \042Dismiss\042.) show 110.4125 436.191 moveto /colwidth 403.5452 def gsave font0 setfont opsbef 0 { font0 setfont currentpoint /undery exch def /underx exch def} put (New) 0 buf opsaft 0 { 1.0 setlinewidth currentpoint currentpoint pop undery 1.2 sub dup underx exch vec moveto} put opsbef 1 {font0 setfont} put (: Create a blank Tioga viewer bearing the path name in the banner of the home) 1 buf opsaft 1 null put mixedjustify grestore 90.3375 424.1459 moveto font0 setfont (directory.) show 110.4125 404.9818 moveto font0 setfont currentpoint /undery exch def /underx exch def (Open) show 1.0 setlinewidth currentpoint currentpoint pop undery 1.2 sub dup underx exch vec moveto (: Open a file by its full path name, given a mouse-selected text.) show 110.4125 385.8176 moveto font0 setfont currentpoint /undery exch def /underx exch def (Cmd) show 1.0 setlinewidth currentpoint currentpoint pop undery 1.2 sub dup underx exch vec moveto (: Create a new Commander viewer) show 90.3375 360.2653 moveto font12 setfont (2.5 ) show (Some of the most common/useful Commands) show 120.45 335.0788 moveto font0 setfont (Cd ) show font1 setfont (directory) show 150.5625 323.0339 moveto font0 setfont (Change directory, as in Unix.) show 120.45 308.2502 moveto font0 setfont (Push ) show font1 setfont (directory) show 150.5625 296.2051 moveto font0 setfont (Change to a new directory, but remember the previous one on a stack.) show 120.45 281.4217 moveto font0 setfont (Pop) show 150.5625 269.3766 moveto font0 setfont (Pop the directory stack, returning to the previous one.) show 120.45 254.593 moveto font0 setfont (List ) show font1 setfont (args) show 150.5625 242.548 moveto font0 setfont (File listing program, gives file date and size. \050Also known as ``LS''.\051) show 120.45 227.7644 moveto font0 setfont (Open ) show font1 setfont (file) show 150.5625 215.7195 moveto /colwidth 363.395 def gsave font0 setfont (Open a file for reading/editing \050defaults to current working directory, followed by) justify grestore 150.5625 203.6744 moveto font0 setfont (/R/ if no path name is specified\051.) show 120.45 188.8908 moveto font0 setfont (FindR ) show font1 setfont (file) show 150.5625 176.8458 moveto font0 setfont (Find out where a system file lives in the released version of software.) show 120.45 162.0622 moveto font0 setfont (OpenR ) show font1 setfont (file) show 150.5625 150.0172 moveto font0 setfont (Open a system file from the released version of software \050/R/<filename>\051.) show 120.45 135.2336 moveto font0 setfont (Copy ) show font1 setfont (destination) show font0 setfont ( ← ) show font1 setfont (source) show font0 setfont 9.351254 0.0 rmoveto 150.5625 123.1886 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (Copy ) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (source) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( file to ) 2 buf opsaft 2 null put font1 setfont opsbef 3 {font1 setfont} put (destination) 3 buf opsaft 3 null put font0 setfont opsbef 4 {font0 setfont} put (. If ) 4 buf opsaft 4 null put font1 setfont opsbef 5 {font1 setfont} put (destination) 5 buf opsaft 5 null put font0 setfont opsbef 6 {font0 setfont} put ( is a directory \050i.e., ends in ``/''\051, then) 6 buf opsaft 6 null put mixedjustify grestore 150.5625 111.1437 moveto /colwidth 363.3949 def gsave font1 setfont opsbef 0 {font1 setfont} put (source) 0 buf opsaft 0 null put font0 setfont opsbef 1 {font0 setfont} put ( can be a list of files. \050← will be displayed as a left-pointing arrow. The keypad) 1 buf opsaft 1 null put mixedjustify grestore 150.5625 99.09864 moveto font0 setfont (4 key also works.\051) show 120.45 84.31507 moveto font0 setfont (Rename ) show font1 setfont (destination) show font0 setfont ( ← ) show font1 setfont (source) show 150.5625 72.27007 moveto font0 setfont (Like copy but just changes the name of a file.) show grestore grestore % end page 9 showpage %%page 10 gsave 2834.646 2834.646 scale gsave 0.0254 dup matrix scale concat 0.013837 dup matrix scale concat 282.1476 38.135 moveto font3 setfont (CEDAR 10.1 ) show font0 setfont 514.125 746.79 moveto (10) show 120.45 684.9593 moveto font0 setfont (DelVer ) show font1 setfont (file-pattern) show 150.5625 672.914 moveto font0 setfont (Delete all but the most recent version of some files.) show 120.45 658.096 moveto font0 setfont (? ) show font1 setfont (command-name) show 150.5625 646.0508 moveto font0 setfont (Print a usage message regarding the command.) show 120.45 631.2329 moveto font0 setfont (Bringover ) show font1 setfont (DF-file) show 150.5625 619.1878 moveto /colwidth 363.395 def gsave font0 setfont (Copy into the local directory all the source, mob, and object files specified in the DF) justify grestore 150.5625 607.1429 moveto font0 setfont (file.) show 120.45 592.3246 moveto font0 setfont (Smodel ) show font1 setfont (DF-file) show 150.5625 580.2797 moveto font0 setfont (Save your files in a stable place.) show 120.45 565.4615 moveto font0 setfont (GetFromRelease) show 150.5625 553.4168 moveto /colwidth 363.395 def gsave font0 setfont (A command to give in response to the Compiler complaint that it can't find the files) justify grestore 150.5625 541.3714 moveto font0 setfont (it needs.) show 120.45 526.5536 moveto font0 setfont (Run ) show font1 setfont (file) show 150.5625 514.5085 moveto /colwidth 363.395 def gsave font0 setfont (Loads the C object file into the system. The global default for loaded code is) justify grestore 150.5625 502.4634 moveto font0 setfont (optimized. ) show 120.45 487.6454 moveto font0 setfont (MakeDo -df ) show font1 setfont (DF-File) show 150.5625 475.6004 moveto gsave font0 setfont (Rebuild an entire package, first determining dependencies. Creates optimized object) justify grestore 150.5625 463.5555 moveto font0 setfont (files \050sun4\051) show 120.45 448.7372 moveto font0 setfont (MakeDo ) show font1 setfont (sun4/foo.c2c.o) show 120.45 433.919 moveto font0 setfont 30.1125 0.0 rmoveto (Generate object code for SPARC for the implementation file named ) show font1 setfont (foo.) show 120.45 419.101 moveto font0 setfont (Implementor ) show font1 setfont (command-name) show 150.5625 407.056 moveto font0 setfont (Print the name of the procedure that implements the named command.) show 120.45 392.2378 moveto font0 setfont (Mkdir ) show font1 setfont (dirname) show 150.5625 380.1928 moveto font0 setfont (Unix-like shell command to create a new directory in the current directory.) show 120.45 365.3747 moveto font0 setfont (Rmdir ) show font1 setfont (dirname) show 150.5625 353.3296 moveto gsave font0 setfont (Unix-like shell command to delete a directory from the current directory. You must) justify grestore 150.5625 341.2845 moveto font0 setfont (first delete all contained files.) show 120.45 326.4664 moveto font0 setfont (Plumb ) show font1 setfont (machine-name) show 150.5625 314.4214 moveto gsave font0 setfont (If no argument, then defaults to local host machine. Opens a typescript window that) justify grestore 150.5625 302.3765 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (emulates the Unix shell of ) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (machine-name. ) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (This is a very useful command, especially) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 290.3314 moveto font0 setfont (if you need to drop down to Unix occassionally.) show 90.3375 264.7102 moveto font12 setfont (2.6 When Cedar dies unexpectedly) show 110.4125 239.0888 moveto /colwidth 403.5451 def gsave font0 setfont (X11Viewers shows its main menu when you try to delete its X window. This menu has a) justify grestore 90.3375 227.0438 moveto /colwidth 423.62 def gsave font0 setfont (rescues sub-menu with an entry to save your edits. These menus are most often still alive even) justify grestore 90.3375 214.9988 moveto font0 setfont (when viewers are wedged.) show 90.3375 189.3776 moveto font12 setfont (2.7 Short introduction to editing using Tioga) show 110.4125 163.7562 moveto /colwidth 403.545 def gsave font0 setfont (In the world outside PARC, document production systems are usually de-coupled from text) justify grestore 90.3375 151.7112 moveto /colwidth 423.62 def gsave font0 setfont (editors. One normally takes the text that one wants to include in a document, wraps it in) justify grestore 90.3375 139.6662 moveto gsave font0 setfont (mysterious commands understood by a document processor, and feeds it to that processor.) justify grestore 90.3375 127.6212 moveto gsave font0 setfont (Programmers may think this is neat; after all, one can do anything with a sufficiently powerful) justify grestore 90.3375 115.5762 moveto gsave font0 setfont (programming language \050remember, Turing machines supply a sufficiently powerful programming) justify grestore 90.3375 103.5312 moveto gsave font0 setfont (language too!\051. However, document processors of this sort frequently define semantically complex) justify grestore 90.3375 91.48624 moveto font0 setfont (languages, and one soon discovers that a great deal of time goes into the edit/compile/debug cycle. ) show 110.4125 72.27026 moveto /colwidth 403.5451 def gsave font0 setfont (Tioga is the editor within Cedar, and it is generally free of imbedded commands to a) justify grestore grestore grestore % end page 10 showpage %%page 11 gsave 2834.646 2834.646 scale gsave 0.0254 dup matrix scale concat 0.013837 dup matrix scale concat 282.1476 38.135 moveto font3 setfont (CEDAR 10.1 ) show font0 setfont 514.132 746.79 moveto (11) show 90.3375 684.9593 moveto /colwidth 423.62 def gsave font0 setfont (document processor. It shows formatted text on the screen, or WYSIWIG \050``What You See Is) justify grestore 90.3375 672.914 moveto gsave font0 setfont (What You Get''\051. When printing a Tioga document, WYSINAWIP \050``What You See Is Not Always) justify grestore 90.3375 660.8688 moveto font0 setfont (What Is Printed''\051. See TiogaDoc.tioga <29> for details. ) show 90.3375 636.5128 moveto font1 setfont (Nodes) show 110.4125 612.1568 moveto /colwidth 403.5451 def gsave font0 setfont (A Tioga document is a tree of nodes of text \050or graphics\051. Think of a node as a selectable,) justify grestore 90.3375 600.1117 moveto /colwidth 423.62 def gsave font0 setfont (meaningful unit, defined by the user. For example, in this document, this paragraph you are now) justify grestore 90.3375 588.0666 moveto gsave font0 setfont (reading is a node. The next paragraph is also a node. The bold-faced heading ``2.9 Short) justify grestore 90.3375 576.0218 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (introduction ...'' is the ) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (parent) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( node of these two paragraph nodes, which are its ) 2 buf opsaft 2 null put font1 setfont opsbef 3 {font1 setfont} put (children) 3 buf opsaft 3 null put font0 setfont opsbef 4 {font0 setfont} put (. The tree) 4 buf opsaft 4 null put mixedjustify grestore 90.3375 563.9768 moveto gsave font0 setfont (structure of a document usually manifests itself visually as nesting; thus, the two children nodes are) justify grestore 90.3375 551.9318 moveto font0 setfont (nested \050indented\051 from the parent node.) show 110.4125 533.6648 moveto /colwidth 403.5451 def gsave font0 setfont opsbef 0 {font0 setfont} put (Nodes are separated by special node break rather than the usual carriage return. A ) 0 buf opsaft 0 null put font3 setfont opsbef 1 {font3 setfont} put (CTRL-) 1 buf opsaft 1 null put mixedjustify grestore 90.3375 521.6196 moveto /colwidth 423.62 def gsave font3 setfont opsbef 0 {font3 setfont} put (RETURN) 0 buf opsaft 0 null put font0 setfont opsbef 1 {font0 setfont} put ( creates a node break. At the node break, you can create another meaningful unit of) 1 buf opsaft 1 null put mixedjustify grestore 90.3375 509.5747 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (stuff, at the same depth of the tree as the previous node; in other words, a sibling node. ) 0 buf opsaft 0 null put font3 setfont opsbef 1 {font3 setfont} put (CTRL-I) 1 buf opsaft 1 null put mixedjustify grestore 90.3375 497.5297 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (both inserts a new node and nests it, making a child node. ) 0 buf opsaft 0 null put font3 setfont opsbef 1 {font3 setfont} put (CTRL-SHIFT-I) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( both inserts a new node) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 485.4847 moveto /colwidth 423.6202 def gsave font0 setfont (and unnests it; think of this command as creating a new node at the same level in the tree as the) justify grestore 90.3375 473.4396 moveto font0 setfont (parent, that is, create a new node at level i-1, if you're at level i.) show 110.4125 455.1726 moveto /colwidth 403.545 def gsave font0 setfont (The previous commands created new nodes. There are commands to change the nesting level) justify grestore 90.3375 443.1276 moveto /colwidth 423.62 def gsave font0 setfont (of already existing nodes. You must first select a node, using the mouse, and then invoke the) justify grestore 90.3375 431.0826 moveto gsave font0 setfont (command. For example, move the mouse cursor over this paragraph \050anywhere will do\051, and) justify grestore 90.3375 419.0375 moveto gsave font3 setfont opsbef 0 {font3 setfont} put (LEFT) 0 buf opsaft 0 null put font0 setfont opsbef 1 {font0 setfont} put (-click twice in rapid succession. The entire paragraph is underlined, indicating selection.) 1 buf opsaft 1 null put mixedjustify grestore 90.3375 406.9925 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (Next, type ) 0 buf opsaft 0 null put font3 setfont opsbef 1 {font3 setfont} put (CTRL-N) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (, to nest the node. To unnest it, type ) 2 buf opsaft 2 null put font3 setfont opsbef 3 {font3 setfont} put (CTRL-SHIFT-N) 3 buf opsaft 3 null put font0 setfont opsbef 4 {font0 setfont} put (. Then, to ensure that you) 4 buf opsaft 4 null put mixedjustify grestore 90.3375 394.9475 moveto gsave font0 setfont (don't accidentally change the contents of this document out on the file server \050of course, not) justify grestore 90.3375 382.9024 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (possible on the CDROM\051, click the ) 0 buf opsaft 0 null put font7 setfont opsbef 1 { font7 setfont currentpoint /undery exch def /underx exch def} put (Reset) 1 buf opsaft 1 { 1.0 setlinewidth currentpoint currentpoint pop undery 1.2 sub dup underx exch vec moveto 1.0 setlinewidth currentpoint currentpoint pop undery -2.3 sub dup underx exch vec moveto} put font0 setfont opsbef 2 {font0 setfont} put ( button at the top of the viewer twice in rapid) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 370.8575 moveto font0 setfont (succession; it will reset the contents.) show 110.4125 352.5904 moveto /colwidth 403.5451 def gsave font0 setfont opsbef 0 {font0 setfont} put (Perhaps you've already noticed that you can select individual characters with a single ) 0 buf opsaft 0 null put font3 setfont opsbef 1 {font3 setfont} put (LEFT) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (-) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 340.5454 moveto /colwidth 423.62 def gsave font0 setfont opsbef 0 {font0 setfont} put (click with the mouse, words with a single ) 0 buf opsaft 0 null put font3 setfont opsbef 1 {font3 setfont} put (MIDDLE) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (-click, and individual nodes with a ) 2 buf opsaft 2 null put font3 setfont opsbef 3 {font3 setfont} put (DOUBLE) 3 buf opsaft 3 null put font0 setfont opsbef 4 {font0 setfont} put (-click) 4 buf opsaft 4 null put mixedjustify grestore 90.3375 328.5004 moveto font0 setfont (with the mouse.) show 110.4125 310.2334 moveto /colwidth 403.545 def gsave font0 setfont (Structuring a document as tree of nodes is quite useful because it makes it easy to hunt) justify grestore 90.3375 298.1884 moveto /colwidth 423.62 def gsave font0 setfont (through a long document, provided it is well-structured. Why? Because you can search through it) justify grestore 90.3375 286.1433 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (at different levels. To view this document at different levels, click on the ) 0 buf opsaft 0 null put font7 setfont opsbef 1 { font7 setfont currentpoint /undery exch def /underx exch def} put (Levels) 1 buf opsaft 1 { 1.0 setlinewidth currentpoint currentpoint pop undery 1.2 sub dup underx exch vec moveto} put font0 setfont opsbef 2 {font0 setfont} put ( button in this) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 274.0984 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (viewer's banner, which brings up another line of buttons: ) 0 buf opsaft 0 null put opsbef 1 { currentpoint /undery exch def /underx exch def font0 setfont} put (FirstLevelOnly) 1 buf opsaft 1 { 1.0 setlinewidth currentpoint currentpoint pop undery 1.2 sub dup underx exch vec moveto} put opsbef 2 {font0 setfont} put (, ) 2 buf opsaft 2 null put font7 setfont opsbef 3 { font7 setfont currentpoint /undery exch def /underx exch def} put (MoreLevels) 3 buf opsaft 3 { 1.0 setlinewidth currentpoint currentpoint pop undery 1.2 sub dup underx exch vec moveto} put font0 setfont opsbef 4 {font0 setfont} put (,) 4 buf opsaft 4 null put mixedjustify grestore 90.3375 262.0533 moveto gsave font7 setfont opsbef 0 { font7 setfont currentpoint /undery exch def /underx exch def} put (FewerLevels) 0 buf opsaft 0 { 1.0 setlinewidth currentpoint currentpoint pop undery 1.2 sub dup underx exch vec moveto} put font0 setfont opsbef 1 {font0 setfont} put (, and ) 1 buf opsaft 1 null put font7 setfont opsbef 2 { font7 setfont currentpoint /undery exch def /underx exch def} put (AllLevels) 2 buf opsaft 2 { 1.0 setlinewidth currentpoint currentpoint pop undery 1.2 sub dup underx exch vec moveto} put font0 setfont opsbef 3 {font0 setfont} put (. With these you can decide just how much detail of a document you) 3 buf opsaft 3 null put mixedjustify grestore 90.3375 250.0083 moveto gsave font0 setfont (want to view at any given moment. \050To see the following illustration, type ``Artwork on'' to your) justify grestore 90.3375 237.9633 moveto font0 setfont (Commander.\051) show grestore grestore % end page 11 showpage %%page 12 gsave 2834.646 2834.646 scale gsave 0.0254 dup matrix scale concat 0.013837 dup matrix scale concat 282.1476 38.135 moveto font3 setfont (CEDAR 10.1 ) show font0 setfont 514.2037 746.79 moveto (12) show -65.05538 402.0588 moveto gsave currentpoint translate 2834.645 dup matrix scale concat gsave 3.527776e-4 dup matrix scale concat gsave 61.85449 -120.9222 matrix translate concat 0.5 setgray eofill gsave gsave 0.0 0.0 moveto currentpoint translate 457.2625 123.4118 moveto 460.2625 123.4118 lineto 460.2625 406.8373 lineto 457.2625 406.8373 lineto clip newpath 0.5 setgray 1.0 setlinewidth 1 setlinecap 1 setlinejoin 458.7625 405.3373 458.7625 124.9118 vec grestore grestore 0.5 setgray eofill gsave gsave -30.79175 0.0 moveto currentpoint translate 457.2625 123.4118 moveto 460.2625 123.4118 lineto 460.2625 406.8373 lineto 457.2625 406.8373 lineto clip newpath 0.5 setgray 1.0 setlinewidth 1 setlinecap 1 setlinejoin 458.7625 405.3373 458.7625 124.9118 vec grestore grestore 0.5 setgray eofill gsave gsave -19.79486 0.0 moveto currentpoint translate 457.2625 123.4118 moveto 460.2625 123.4118 lineto 460.2625 406.8373 lineto 457.2625 406.8373 lineto clip newpath 0.5 setgray 1.0 setlinewidth 1 setlinecap 1 setlinejoin 458.7625 405.3373 458.7625 124.9118 vec grestore grestore 0.5 setgray eofill gsave gsave -9.89734 0.0 moveto currentpoint translate 457.2625 123.4118 moveto 460.2625 123.4118 lineto 460.2625 406.8373 lineto 457.2625 406.8373 lineto clip newpath 0.5 setgray 1.0 setlinewidth 1 setlinecap 1 setlinejoin 458.7625 405.3373 458.7625 124.9118 vec grestore grestore gsave /Helvetica findfont 1.0 scalefont /font16 exch def font16 setfont 0.0 setgray 11.43832 dup matrix scale 308.401 174.1361 matrix translate matrix concatmatrix concat 0.0 0.0 moveto (First level only) show grestore gsave font16 setfont 0.0 setgray 11.43832 dup matrix scale 323.7711 159.6827 matrix translate matrix concatmatrix concat 0.0 0.0 moveto (More levels) show grestore gsave font16 setfont 0.0 setgray 11.43832 dup matrix scale 337.3513 131.5617 matrix translate matrix concatmatrix concat 0.0 0.0 moveto (All levels) show grestore gsave gsave 1.42979 dup matrix scale -46.21731 -631.4737 matrix translate matrix concatmatrix concat 0.0 setgray 325.8806 710.1489 moveto /Helvetica findfont 8.029999 scalefont /font17 exch def font17 setfont (I.) show font17 setfont ( head) show 325.8806 700.1111 moveto font17 setfont ( ) show font17 setfont (A. ) show font17 setfont ( head) show 325.8806 690.0741 moveto font17 setfont ( ) show font17 setfont (1.) show font17 setfont ( block [or body]) show 325.8806 680.0364 moveto font17 setfont ( ) show font17 setfont (2.) show font17 setfont ( block) show 325.8806 669.9988 moveto font17 setfont ( ) show font17 setfont (a.) show font17 setfont ( example) show 325.8806 659.9615 moveto font17 setfont ( ) show font17 setfont (3.) show font17 setfont ( block) show 325.8806 649.9242 moveto font17 setfont ( ) show font17 setfont (B.) show font17 setfont ( head) show 325.8806 639.8863 moveto font17 setfont ( ) show font17 setfont (1.) show font17 setfont ( block) show 325.8806 629.849 moveto font17 setfont ( ) show font17 setfont (a.) show font17 setfont ( item) show 325.8806 619.8113 moveto font17 setfont ( ) show font17 setfont (b.) show font17 setfont ( item) show 325.8806 609.7742 moveto font17 setfont ( ) show font17 setfont (2.) show font17 setfont ( block) show 325.8806 599.7366 moveto font17 setfont (II.) show font17 setfont ( head) show 325.8806 589.699 moveto font17 setfont ( ) show font17 setfont (A.) show font17 setfont ( block) show 325.8806 579.6616 moveto font17 setfont ( ) show font17 setfont (B.) show font17 setfont ( head) show 325.8806 569.624 moveto font17 setfont ( ) show font17 setfont (1.) show font17 setfont ( block) show 325.8806 559.5867 moveto font17 setfont ( ) show font17 setfont (2.) show font17 setfont ( block) show grestore 0.5 setlinewidth 1 setlinecap 1 setlinejoin 0.0 setgray 412.5747 124.9118 moveto 412.5747 405.3373 lineto 556.6363 405.3373 lineto 556.6363 124.9118 lineto 412.5747 124.9118 lineto closepath stroke grestore 0.0 setgray eofill gsave gsave 0.0 0.0 moveto currentpoint translate 394.3462 170.1017 moveto 429.5958 170.1017 lineto 429.5958 184.6654 lineto 394.3462 184.6654 lineto clip newpath 0.0 setgray 1.25 setlinewidth 1 setlinecap 1 setlinejoin 395.971 177.3836 moveto 427.9708 177.3836 lineto 422.314 171.7267 lineto 427.9708 177.3836 lineto 422.314 183.0404 lineto stroke grestore grestore 0.0 setgray eofill gsave gsave 0.0 0.0 moveto currentpoint translate 394.3462 156.1197 moveto 440.5928 156.1197 lineto 440.5928 170.6834 lineto 394.3462 170.6834 lineto clip newpath 0.0 setgray 1.25 setlinewidth 1 setlinecap 1 setlinejoin 395.971 162.9303 moveto 438.9677 163.4017 lineto 433.3111 157.7448 lineto 438.9677 163.4017 lineto 433.3111 169.0584 lineto stroke grestore grestore 0.0 setgray eofill gsave gsave 0.0 0.0 moveto currentpoint translate 394.3462 142.2948 moveto 450.4902 142.2948 lineto 450.4902 156.8584 lineto 394.3462 156.8584 lineto clip newpath 0.0 setgray 1.25 setlinewidth 1 setlinecap 1 setlinejoin 395.971 149.4196 moveto 448.8652 149.5767 lineto 443.2084 143.9197 lineto 448.8652 149.5767 lineto 443.2084 155.2334 lineto stroke grestore grestore 0.0 setgray eofill gsave gsave 0.0 0.0 moveto currentpoint translate 394.3462 127.5274 moveto 460.3875 127.5274 lineto 460.3875 142.0909 lineto 394.3462 142.0909 lineto clip newpath 0.0 setgray 1.25 setlinewidth 1 setlinecap 1 setlinejoin 395.971 134.8092 moveto 458.7625 134.8092 lineto 453.1059 129.1524 lineto 458.7625 134.8092 lineto 453.1059 140.4659 lineto stroke grestore grestore gsave font16 setfont 0.0 setgray 11.43832 dup matrix scale 323.7711 146.4863 matrix translate matrix concatmatrix concat 0.0 0.0 moveto (More levels) show grestore gsave grestore gsave font16 setfont 0.0 setgray 14.29791 dup matrix scale 91.19686 297.2373 matrix translate matrix concatmatrix concat 0.0 0.0 moveto (viewing a document at) show grestore gsave font16 setfont 0.0 setgray 14.29791 dup matrix scale 122.9794 280.5493 matrix translate matrix concatmatrix concat 0.0 0.0 moveto (many levels) show grestore grestore grestore grestore 90.3375 381.6491 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (If you clicked ) 0 buf opsaft 0 null put opsbef 1 { currentpoint /undery exch def /underx exch def font0 setfont} put (FirstLevelOnly) 1 buf opsaft 1 { 1.0 setlinewidth currentpoint currentpoint pop undery 1.2 sub dup underx exch vec moveto} put opsbef 2 {font0 setfont} put (, then only the head nodes \050designated here by I. and II.\051 would be) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 369.6041 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (displayed. If you clicked ) 0 buf opsaft 0 null put font7 setfont opsbef 1 { font7 setfont currentpoint /undery exch def /underx exch def} put (MoreLevels) 1 buf opsaft 1 { 1.0 setlinewidth currentpoint currentpoint pop undery 1.2 sub dup underx exch vec moveto} put font0 setfont opsbef 2 {font0 setfont} put (, then you'd be able to view the next level of nodes. Clicking) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 357.559 moveto font0 setfont (on ) show font7 setfont currentpoint /undery exch def /underx exch def (AllLevels) show 1.0 setlinewidth currentpoint currentpoint pop undery 1.2 sub dup underx exch vec moveto font0 setfont ( would show you the entire document. ) show 90.3375 330.3462 moveto font1 setfont (Format) show 110.4125 303.1333 moveto /colwidth 403.545 def gsave font0 setfont (In Tioga editing, we name nodes, which will in turn give them formats. In Cedar, we will rely) justify grestore 90.3375 291.0883 moveto /colwidth 423.62 def gsave font0 setfont opsbef 0 {font0 setfont} put (on the ) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (EditTool) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( to help us do this. If you don't already have an EditTool running, type ``EditTool'') 2 buf opsaft 2 null put mixedjustify grestore 90.3375 279.0432 moveto gsave font0 setfont (to your Commander. An icon in the shape of a piece of paper, bearing the words ``EditTool'' and) justify grestore 90.3375 266.9982 moveto font0 setfont (a pencil scribbling on the paper, will appear. ) show font3 setfont (MIDDLE) show font0 setfont (-click to open a viewer.) show 110.4125 246.5885 moveto /colwidth 403.545 def gsave font0 setfont (Particular types of documents will tend to make use of certain groups of nodes. For example,) justify grestore 90.3375 234.5435 moveto font0 setfont (on a title page you'll tend to find or use the following nodes: ) show 174.9362 214.1338 moveto font0 setfont (title, subtitle, authors, boilerplate, abstract, copyrightNotice) show 90.3375 193.7241 moveto font0 setfont (On pages of text or prose, you'll tend to find/use these nodes, among others:) show 187.5644 173.3144 moveto font0 setfont (head, body, block, item, indent, example, center, note) show 90.3375 152.9047 moveto /colwidth 423.62 def gsave font0 setfont opsbef 0 {font0 setfont} put (Click on the ) 0 buf opsaft 0 null put font7 setfont opsbef 1 { font7 setfont currentpoint /undery exch def /underx exch def} put (Format) 1 buf opsaft 1 { 1.0 setlinewidth currentpoint currentpoint pop undery 1.2 sub dup underx exch vec moveto} put font0 setfont opsbef 2 {font0 setfont} put ( button in your EditTool. Double ) 2 buf opsaft 2 null put font3 setfont opsbef 3 {font3 setfont} put (LEFT) 3 buf opsaft 3 null put font0 setfont opsbef 4 {font0 setfont} put (-click on the line beginning with the) 4 buf opsaft 4 null put mixedjustify grestore 90.3375 140.8596 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (word ``Particular.'' Having selected that node, click on the ) 0 buf opsaft 0 null put font7 setfont opsbef 1 { font7 setfont currentpoint /undery exch def /underx exch def} put (Get) 1 buf opsaft 1 { 1.0 setlinewidth currentpoint currentpoint pop undery 1.2 sub dup underx exch vec moveto} put font0 setfont opsbef 2 {font0 setfont} put ( button in your EditTool. The) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 128.8147 moveto gsave font0 setfont (name of the current format of that selected node will appear in the area labelled ``Format name.'') justify grestore 90.3375 116.7697 moveto font0 setfont (You might try selecting various other nodes just to see what format they're in.) show 110.4125 96.36 moveto /colwidth 403.5451 def gsave font0 setfont opsbef 0 {font0 setfont} put (Each node ) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (format) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( contains its specific recipe for the structure of how that node will look. Title) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 84.31496 moveto /colwidth 423.6202 def gsave font0 setfont (nodes have larger, bold text, with a specific amount of space allotted above and below each line. A) justify grestore 90.3375 72.26999 moveto /colwidth 423.62 def gsave font0 setfont (body node is one type of node used for paragraphs. Its ``recipe'' \050or structure\051 regulates that the) justify grestore grestore grestore % end page 12 showpage %%page 13 gsave 2834.646 2834.646 scale gsave 0.0254 dup matrix scale concat 0.013837 dup matrix scale concat 282.1476 38.135 moveto font3 setfont (CEDAR 10.1 ) show font0 setfont 514.5062 746.79 moveto (13) show 90.3375 684.9593 moveto gsave font0 setfont (node will have a specific font type and size, indentation of the first word, and predetermined) justify grestore 90.3375 672.914 moveto font0 setfont (spacing above and below lines at the beginning, middle, and end.) show 110.4125 653.3137 moveto /colwidth 403.545 def gsave font0 setfont (When you apply a Format to a node, that node will take on a structure specific to the type of) justify grestore 90.3375 641.2687 moveto /colwidth 423.62 def gsave font0 setfont (node you have named it. It would be accurate to say that when formatting a document with Tioga) justify grestore 90.3375 629.2237 moveto gsave font0 setfont (editing tools, you are adding a structure or foundation to the node. This structure \050formatting\051 will) justify grestore 90.3375 617.1786 moveto font0 setfont (determine how the node will look.) show 90.3375 591.0444 moveto font1 setfont (Looks) show 110.4125 564.9105 moveto /colwidth 403.545 def gsave font0 setfont (Looks are a way of making changes to the appearance of text within a node, without changing) justify grestore 90.3375 552.8653 moveto /colwidth 423.62 def gsave font0 setfont opsbef 0 {font0 setfont} put (the structure of the node. You would add ) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (looks) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( to add italics, boldness, or underlining; or to) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 540.8205 moveto gsave font0 setfont (change a word to a superscript, subscript, or larger or smaller size. Different looks can be added to) justify grestore 90.3375 528.7755 moveto font0 setfont (different words within a node, and multiple looks can be added to one selection.) show 110.4125 509.175 moveto /colwidth 403.545 def gsave font0 setfont (Once you've selected the words to which you want to add Looks, you do so by either using the) justify grestore 90.3375 497.13 moveto /colwidth 423.62 def gsave font0 setfont (EditTool or by pressing the Looks key \050key R9 on the righthand keypad\051 and the appropriate) justify grestore 90.3375 485.0851 moveto gsave font0 setfont (lower case code letter on the keyboard. For a good summary of the Looks available, consult) justify grestore 90.3375 473.04 moveto font0 setfont (SampleSheet.tioga <67>.) show 90.3375 446.906 moveto font1 setfont (Style) show 110.4125 420.7722 moveto /colwidth 403.545 def gsave font0 setfont (Appearance is influenced by the format of the node, which determines things such as vertical) justify grestore 90.3375 408.7272 moveto /colwidth 423.62 def gsave font0 setfont (and horizontal spacing. The characters of the text within a node can have looks that control) justify grestore 90.3375 396.682 moveto gsave font0 setfont (various aspects of their appearance such as font and size. The document refers to the names of) justify grestore 90.3375 384.637 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (looks and formats, but not to any specific interpretation of them. A ) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (style) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( is a collection of) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 372.5921 moveto gsave font0 setfont (interpretations \050or ``complementary flavors'', if you will\051 for looks and formats. This document is) justify grestore 90.3375 360.5472 moveto font0 setfont (composed with the default Cedar style.) show 110.4125 340.9464 moveto /colwidth 403.5451 def gsave font0 setfont (Styles can be shared by many documents. For example, in the style for this document there) justify grestore 90.3375 328.9016 moveto /colwidth 423.62 def gsave font0 setfont (are definitions of formats for titles, headings, and standard paragraphs, and there are definitions of) justify grestore 90.3375 316.8565 moveto gsave font0 setfont (looks for emphasis and for small caps. Rather than specifying all the details for the formats and) justify grestore 90.3375 304.8116 moveto gsave font0 setfont (looks, the document refers to formats and looks by name \050like ``title'', ``block'', ``abstract''\051. These) justify grestore 90.3375 292.7665 moveto gsave font0 setfont (names are defined in the style, so it's easy to change the definitions in the style and modify the) justify grestore 90.3375 280.7215 moveto font0 setfont (appearance uniformly throughout the document.) show 90.3375 254.5875 moveto font1 setfont (Properties) show 110.4125 228.4535 moveto /colwidth 403.545 def gsave font0 setfont opsbef 0 {font0 setfont} put (Adding a ) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (property) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( is a way of making changes to ) 2 buf opsaft 2 null put opsbef 3 { currentpoint /undery exch def /underx exch def font0 setfont} put (specific) 3 buf opsaft 3 { 1.0 setlinewidth currentpoint currentpoint pop undery 1.2 sub dup underx exch vec moveto} put opsbef 4 {font0 setfont} put ( characters or nodes in a way that goes) 4 buf opsaft 4 null put mixedjustify grestore 90.3375 216.4085 moveto /colwidth 423.62 def gsave font0 setfont opsbef 0 {font0 setfont} put (beyond the boundaries of what's included in a particular ) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (style) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (. Most often, you'll hear about) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 204.3635 moveto gsave font0 setfont (Postfix properties. For example, you could use Postfix properties to add background color to a) justify grestore 90.3375 192.3186 moveto gsave font0 setfont (node, to change the color of the text itself, to place boxes around words without using a graphics) justify grestore 90.3375 180.2736 moveto gsave font0 setfont (program, or change the size of margins or indents. Find a Postfix wizard if you'd like further) justify grestore 90.3375 168.2286 moveto font0 setfont (details.) show 90.3375 142.0946 moveto font1 setfont (Dealing with Editor Bugs) show 110.4125 115.9606 moveto /colwidth 403.545 def gsave font0 setfont (All text editors have bugs. The most common -- perhaps we mean ``the least rare'' -- source of) justify grestore 90.3375 103.9156 moveto /colwidth 423.62 def gsave font0 setfont (editing disasters in Tioga is problems with monitor \050or ``viewer''\051 locks. Unfortunately, this class of) justify grestore 90.3375 91.8706 moveto font0 setfont (problem usually makes further progress in any part of Cedar impossible. ) show 110.4125 72.27012 moveto /colwidth 403.545 def gsave font0 setfont (In X11Viewers: The \042delete window\042 from a window manager shows a pop up menu which) justify grestore grestore grestore % end page 13 showpage %%page 14 gsave 2834.646 2834.646 scale gsave 0.0254 dup matrix scale concat 0.013837 dup matrix scale concat 282.1476 38.135 moveto font3 setfont (CEDAR 10.1 ) show font0 setfont 514.0624 746.79 moveto (14) show 90.3375 684.9593 moveto font0 setfont (allows selection of a \042save all edits\042 command.. ) show 90.3375 659.3704 moveto font1 setfont (Non-Textual Editors) show 110.4125 633.7812 moveto /colwidth 403.5451 def gsave font0 setfont (We humans often convey information more effectively in ways other than the written word.) justify grestore 90.3375 621.7361 moveto /colwidth 423.62 def gsave font0 setfont (Cedar likewise provides tools for manipulating representations of information other than text, such) justify grestore 90.3375 609.691 moveto font0 setfont (as 2-D illustrations, mathematical expressions and voice. ) show 110.4125 590.4995 moveto /colwidth 403.545 def gsave font0 setfont (Gargoyle [45] is an interactive 2D illustrator for creating color pictures. It includes novel) justify grestore 90.3375 578.4545 moveto /colwidth 423.6202 def gsave font0 setfont (features to aid the user in precise geometric placement of objects in the scene. Refer to [46] for an) justify grestore 90.3375 566.4095 moveto font0 setfont (on-line tutorial. I used Gargoyle to draw all the pictures in this document.) show 110.4125 547.2178 moveto /colwidth 403.545 def gsave font0 setfont (CaminoReal[44] is an environment for two kinds of manipulations of mathematical) justify grestore 90.3375 535.1729 moveto /colwidth 423.62 def gsave font0 setfont (expressions: \0501\051 interactive, syntax-directed, two-dimensional, WYSIWYG editing and \0502\051) justify grestore 90.3375 523.1277 moveto font0 setfont (algebraic manipulation.) show 110.4125 503.9361 moveto /colwidth 403.545 def gsave font0 setfont (Because Tioga provides a rich common ground, the above heterogeneous data \050image and) justify grestore 90.3375 491.891 moveto /colwidth 423.62 def gsave font0 setfont (voice\051 can be integrated into a single source \050namely a Tioga document\051 for later browsing. The) justify grestore 90.3375 479.8461 moveto gsave font0 setfont (other editors, of course, recognize Tioga's role as chief editor and each provides a facility to insert) justify grestore 90.3375 467.8012 moveto font0 setfont (\050``Stuff''\051 its data into a Tioga document. ) show 90.3375 442.2121 moveto font12 setfont (2.8 Exiting Cedar) show 110.4125 416.6232 moveto /colwidth 403.545 def gsave font0 setfont (Click on the X11Viewers static button to bring up a pop-up menu. Move the mouse cursor to) justify grestore 90.3375 404.5781 moveto font0 setfont (the words ``Exit Cedar'' and click on it. Your X window containing the Cedar world will vanish.) show 90.3375 354.8992 moveto font11 setfont (3. Printing) show 90.3375 328.9355 moveto font12 setfont (3.1 Interpress and Postscript) show 110.4125 303.3467 moveto /colwidth 403.545 def gsave font0 setfont (Interpress [51] is a Xerox standard that permits every printing client to use every printer.) justify grestore 90.3375 291.3016 moveto /colwidth 423.62 def gsave font0 setfont (Cedar is most adept at converting its online document formats \050.tioga, .gargoyle, etc.\051 to Interpress.) justify grestore 90.3375 279.2568 moveto gsave font0 setfont (Outside of Xerox, however, the world has standardized on Postscript printing and Interpress) justify grestore 90.3375 267.2116 moveto gsave font0 setfont (printers are uncommon, so a further conversion of the Interpress file to Postscript will likely be) justify grestore 90.3375 255.1667 moveto gsave font0 setfont (required. There may be some confusion about fonts in this latter conversion, but the result is) justify grestore 90.3375 243.1216 moveto font0 setfont (usually a readable, though seldom beautiful, printed page. ) show 110.4125 223.93 moveto font12 setfont (Converting to Interpress) show font0 setfont (. The following commands produce Postscript from tioga.) show 110.4125 204.7383 moveto 125.4688 191.5691 moveto font12 setfont (%) show font14 setfont ( TiogaToInterpress foo.interpress ← foo.tioga) show 131.4688 179.5241 moveto font14 setfont 10.03749 0.0 rmoveto font1 setfont (TiogaToInterpress is a program that converts Tioga documents to Interpress format. ) show 125.4688 166.3548 moveto font12 setfont (%) show font14 setfont ( IPtoPS foo.ps ← foo.interpress) show 131.4688 154.3099 moveto font14 setfont 10.03749 0.0 rmoveto font1 setfont (Converts interpress to Postscript.) show 110.4125 135.1182 moveto font0 setfont (Use the Unix lpr command to print the resulting file on your favorite Postscript printer.) show 125.4688 121.949 moveto 90.3375 72.27007 moveto font11 setfont (4. Programming) show grestore grestore % end page 14 showpage %%page 15 gsave 2834.646 2834.646 scale gsave 0.0254 dup matrix scale concat 0.013837 dup matrix scale concat 282.1476 38.135 moveto font3 setfont (CEDAR 10.1 ) show font0 setfont 514.3934 746.79 moveto (15) show 90.3375 684.9593 moveto font12 setfont (4.1 Naming conventions) show 110.4125 658.9876 moveto /colwidth 403.545 def gsave font0 setfont (The prevailing local philosophy about naming is perhaps different from elsewhere. We have) justify grestore 90.3375 646.9428 moveto /colwidth 423.62 def gsave font0 setfont (our share of alphabet soup, \050that is, acronyms of varying degrees of cuteness and artificiality, like) justify grestore 90.3375 634.8977 moveto gsave font0 setfont (PARC, FTP, IFS, PUP\051. But we are trying to avoid worsening this situation. To this worthy end,) justify grestore 90.3375 622.853 moveto gsave font0 setfont (Grapevine \050mail\051 servers are named after wines, Dorados are named after capital ships, some Suns) justify grestore 90.3375 610.8076 moveto gsave font0 setfont (are named after places in E. E. ``Doc'' Smith science fiction novels, and so on. As these) justify grestore 90.3375 598.7628 moveto gsave font0 setfont (conventions don't meet with universal approval, you will doubtless provoke interesting discussions) justify grestore 90.3375 586.718 moveto font0 setfont (if you advance your own views on naming to almost anyone wandering in the corridors.) show 110.4125 567.2391 moveto /colwidth 403.545 def gsave font0 setfont (While we are on the topic of names, let's discuss for a moment the local customs for) justify grestore 90.3375 555.1944 moveto /colwidth 423.62 def gsave font0 setfont (constructing single identifiers out of multiple word phrases. Suppose you'd like to name a variable) justify grestore 90.3375 543.1492 moveto gsave font0 setfont (``name several words long.'' In some environments, a special character that isn't a letter but acts) justify grestore 90.3375 531.1044 moveto font0 setfont (like a letter is used as a word separator, leading to names such as) show 110.4125 505.6035 moveto font0 setfont (``name!several!words!long'' or ``name) show currentpoint /undery exch def /underx exch def ( ) show 1.0 setlinewidth currentpoint currentpoint pop undery 1.2 sub dup underx exch vec moveto (several) show currentpoint /undery exch def /underx exch def ( ) show 1.0 setlinewidth currentpoint currentpoint pop undery 1.2 sub dup underx exch vec moveto (words) show currentpoint /undery exch def /underx exch def ( ) show 1.0 setlinewidth currentpoint currentpoint pop undery 1.2 sub dup underx exch vec moveto (long.'') show 90.3375 486.8305 moveto gsave font0 setfont (No such character is in common use locally, however. Instead, we shift between upper and lower) justify grestore 90.3375 474.7854 moveto font0 setfont (case to show word boundaries, leading to the name) show 110.4125 449.2844 moveto font0 setfont ( ``NameSeveralWordsLong.'') show 90.3375 430.5116 moveto gsave font0 setfont (Some people think this looks terribly ugly. We won't express our opinions in this document, but) justify grestore 90.3375 418.4665 moveto font0 setfont (once again exhort you to espouse your views in the corridors. ) show 110.4125 398.988 moveto /colwidth 403.545 def gsave font0 setfont (As a general rule, case is significant for identifiers in the Cedar programming language, but) justify grestore 90.3375 386.943 moveto /colwidth 423.62 def gsave font0 setfont (not significant in file names or mail names. Thus, the Cedar identifiers ``REF'', ``Ref'', and ``ref'') justify grestore 90.3375 374.898 moveto gsave font0 setfont (are quite distinct, but the file names ``BriefingBlurb.tioga'' and ``briefingblurb.tioga'' are) justify grestore 90.3375 362.853 moveto gsave font0 setfont (equivalent, as are the mail names ``BOki.PARC'' and ``boki.parc.'' In Cedar, there is a further) justify grestore 90.3375 350.808 moveto gsave font0 setfont (convention that the case of the first letter of an identifier distinguishes fancy objects, such as) justify grestore 90.3375 338.763 moveto gsave font0 setfont (procedures and types, from simple ones, such as integers and reals. Thus, the identifier name) justify grestore 90.3375 326.718 moveto /colwidth 381.4717 def gsave font0 setfont (``ProcWithFiveWordName'' begins with an upper case ``P'', but the name) justify grestore 90.3375 314.6729 moveto /colwidth 423.62 def gsave font0 setfont (``integerWithFiveWordName'' begins with a lower case ``i.'' The latter form looks strange to most) justify grestore 90.3375 302.6279 moveto gsave font0 setfont (people when they first see it. When you first tasted an olive, you probably didn't like it. Now, you) justify grestore 90.3375 290.5829 moveto gsave font0 setfont (probably do. Give these capitalization conventions the same chance that you would an olive.) justify grestore 90.3375 278.5379 moveto gsave font0 setfont (Caveat: In Cedar, case does not matter in a file name if the file you're interested in happens to be) justify grestore 90.3375 266.493 moveto gsave font0 setfont (in a versioned, case-insensitive directory like the Cedar system release, so LoganBerryImpl.mesa) justify grestore 90.3375 254.4478 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (and loganberryimpl.mesa are the same file; in a Unix-like directory, case ) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (does) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( matter. These) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 242.4029 moveto font0 setfont (distinctions will become clearer further ahead.) show 110.4125 222.9244 moveto /colwidth 403.545 def gsave font0 setfont (These capitalization conventions don't work too well when acronyms and normal words) justify grestore 90.3375 210.8794 moveto /colwidth 423.62 def gsave font0 setfont (appear together in one identifier. Suppose, for example, that we wanted an identifier named ``FTP) justify grestore 90.3375 198.8344 moveto font0 setfont (version number.'' Since it's an integer, probably ``ftpVersionNumber'' is best.) show 90.3375 172.8632 moveto font12 setfont (4.2 Cedar programming language) show 90.3375 146.4216 moveto font1 setfont (Cedar) show 110.4125 120.4503 moveto /colwidth 403.545 def gsave font0 setfont (In 1978, CSL began to consider what programming environment to use on the emerging D-) justify grestore 90.3375 108.4052 moveto /colwidth 423.62 def gsave font0 setfont (machines, such as the Dorado. CSL chose to build a new programming environment, based on the) justify grestore 90.3375 96.36024 moveto gsave font0 setfont (Mesa language, that would be the basis for most of our programming during the following years.) justify grestore 90.3375 84.31528 moveto gsave font0 setfont (That new environment is named ``Cedar.'' We refer the interested reader to [40] for an) justify grestore 90.3375 72.27026 moveto gsave font0 setfont (introductory ``tour'' through the Cedar programming environment and to [<42>] for an in-depth) justify grestore grestore grestore % end page 15 showpage %%page 16 gsave 2834.646 2834.646 scale gsave 0.0254 dup matrix scale concat 0.013837 dup matrix scale concat 282.1476 38.135 moveto font3 setfont (CEDAR 10.1 ) show font0 setfont 514.2512 746.79 moveto (16) show 90.3375 684.9593 moveto font0 setfont (description of the overall structure of Cedar and its organization.) show 110.4125 664.54 moveto /colwidth 403.545 def gsave font0 setfont (Cedar documentation is always in flux; indeed, it might be said that Cedar as a whole is in a) justify grestore 90.3375 652.4948 moveto /colwidth 423.62 def gsave font0 setfont (constant state of flux. Much of the documentation for the current release is accessible through a) justify grestore 90.3375 640.45 moveto font0 setfont (``.df'' file named Documentation.df <25>. ) show 110.4125 620.0308 moveto /colwidth 403.545 def gsave font0 setfont (Cedar's predecessor, Mesa, was a strongly typed language designed and built locally.) justify grestore 90.3375 607.9858 moveto /colwidth 423.62 def gsave font0 setfont (Although Mesa programs look a lot like PASCAL programs when viewed in the small, Mesa) justify grestore 90.3375 595.9408 moveto gsave font0 setfont (provides and enforces a modularization concept that allows large programs to be built from smaller) justify grestore 90.3375 583.8957 moveto gsave font0 setfont (pieces. These pieces are compiled separately, but the strong type checking of Mesa is enforced) justify grestore 90.3375 571.8508 moveto gsave font0 setfont (between different modules. The basic idea is to structure a system by determining which functions) justify grestore 90.3375 559.806 moveto gsave font0 setfont (are supplied by particular portions of the system to other portions. This supply of functionality is) justify grestore 90.3375 547.7609 moveto gsave font0 setfont (called an ``interface;'' it is manifested in a Mesa source file called an ``interface module.'' An) justify grestore 90.3375 535.7159 moveto gsave font0 setfont (interface module may define types and procedures that act on values of those types. Only the) justify grestore 90.3375 523.6711 moveto gsave font0 setfont (procedure headers go into the interface module, not the procedure bodies. This makes sense, since) justify grestore 90.3375 511.6259 moveto gsave font0 setfont (all the interface module has to do is to give the compiler enough information to type-check) justify grestore 90.3375 499.5809 moveto font0 setfont (programs that use the interface.) show 110.4125 479.1618 moveto /colwidth 403.545 def gsave font0 setfont (An interface is implemented by an ``implementation module,'' which contains the actual) justify grestore 90.3375 467.1166 moveto /colwidth 423.62 def gsave font0 setfont (procedure code. An implementation module is said to ``export'' the interface that it is) justify grestore 90.3375 455.0717 moveto gsave font0 setfont (implementing; it may also ``import'' other interfaces that it needs to do its job, interfaces that some) justify grestore 90.3375 443.0266 moveto font0 setfont (other program will implement.) show 110.4125 422.6076 moveto /colwidth 403.5451 def gsave font0 setfont (In simple systems, each interface is exported by exactly one module. In such a system, it is) justify grestore 90.3375 410.5625 moveto /colwidth 423.62 def gsave font0 setfont opsbef 0 {font0 setfont} put (clear who should be supplying which services to whom. In fact, in these simple cases, the ) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (binding) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (,) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 398.5176 moveto gsave font0 setfont (that is, the resolution of imports and exports, can be done on the fly by the loader. But in more) justify grestore 90.3375 386.4725 moveto gsave font0 setfont (complex cases, there might be several different modules in the system that can supply the same) justify grestore 90.3375 374.4275 moveto gsave font0 setfont (service under somewhat different conditions, or with somewhat different performance. Then, the) justify grestore 90.3375 362.3825 moveto gsave font0 setfont (job of describing exactly which modules supply which services to which other modules can become) justify grestore 90.3375 350.3375 moveto gsave font0 setfont (subtle. A small language was devised to describe these cases. A program reads such a description,) justify grestore 90.3375 338.2925 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (called a ) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (config) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (, and builds a runable system by filling imports requested from exports according to) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 326.2474 moveto font0 setfont (the config.) show 110.4125 305.8283 moveto /colwidth 403.545 def gsave font0 setfont (The programming language underlying Cedar is essentially Mesa plus garbage collection.) justify grestore 90.3375 293.7833 moveto /colwidth 423.62 def gsave font0 setfont (Now, garbage collection changes one's programming style in large systems. Without garbage) justify grestore 90.3375 281.7383 moveto gsave font0 setfont (collection, one must enforce some conventions about who owns the storage. When I call you and) justify grestore 90.3375 269.6934 moveto gsave font0 setfont (pass you a string argument, we must agree whether I am just letting you look at my string, or I am) justify grestore 90.3375 257.6484 moveto gsave font0 setfont (actually turning over ownership of the string to you, because it's the owner's responsibility to) justify grestore 90.3375 245.6033 moveto gsave font0 setfont (reclaim the string's storage and prevent a storage leak. With garbage collection, most problems like) justify grestore 90.3375 233.5583 moveto gsave font0 setfont (this go away: the garbage collector owns all storage; it gets reclaimed when it is no longer needed,) justify grestore 90.3375 221.5133 moveto gsave font0 setfont (and not before. But there is a price for this convenience: the garbage collector takes time to do its) justify grestore 90.3375 209.4684 moveto gsave font0 setfont (work. In addition, all programmers must follow certain rules about using pointers so as not to) justify grestore 90.3375 197.4233 moveto font0 setfont (confuse the garbage collector about what is garbage and what is not.) show 110.4125 177.0042 moveto /colwidth 403.545 def gsave font0 setfont opsbef 0 {font0 setfont} put (Cedar is really two programming languages: a restricted subset called the ) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (safe language) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (, and) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 164.9592 moveto /colwidth 423.62 def gsave font0 setfont (the unrestricted full language. Programmers who stick to the safe language can rest secure in the) justify grestore 90.3375 152.9142 moveto gsave font0 setfont (confidence that nothing they write can confuse the garbage collector. Their bugs will not risk) justify grestore 90.3375 140.8692 moveto gsave font0 setfont (bringing down the entire environment around them in a rubble of bits. Those who choose to veer) justify grestore 90.3375 128.8242 moveto font0 setfont (outside of the safe language should know what they are doing.) show 110.4125 108.4051 moveto /colwidth 403.545 def gsave font0 setfont (Programs in the programming language underlying Cedar look a lot like Mesa programs, but,) justify grestore 90.3375 96.36005 moveto /colwidth 423.62 def gsave font0 setfont (on a deeper level, they aren't really Mesa programs at all. To avoid confusion, we decided to use) justify grestore 90.3375 84.31507 moveto gsave font0 setfont (the name ``Cedar'' to describe the Cedar programming language, as well as the environment built) justify grestore 90.3375 72.27007 moveto font0 setfont (on top of it.) show grestore grestore % end page 16 showpage %%page 17 gsave 2834.646 2834.646 scale gsave 0.0254 dup matrix scale concat 0.013837 dup matrix scale concat 282.1476 38.135 moveto font3 setfont (CEDAR 10.1 ) show font0 setfont 514.3934 746.79 moveto (17) show 90.3375 684.9593 moveto font1 setfont (Cedar, PCedar or ``Portable Cedar'') show 110.4125 656.3076 moveto /colwidth 403.545 def gsave font0 setfont (Neither the Cedar language nor the environment was originally intended to be portable, and) justify grestore 90.3375 644.2632 moveto /colwidth 423.62 def gsave font0 setfont (for many years ran only on D-machines at PARC and a few other locations in Xerox. We recently) justify grestore 90.3375 632.2182 moveto gsave font0 setfont (re-implemented the language to make it portable across many different architectures. Our strategy) justify grestore 90.3375 620.173 moveto gsave font0 setfont (was, first, to use machine-dependent C code as an intermediate language; second, to create a) justify grestore 90.3375 608.1282 moveto gsave font0 setfont (language-independent layer known as the Portable Common Runtime; and third, to write a) justify grestore 90.3375 596.083 moveto gsave font0 setfont (relatively large amount of Cedar-specific runtime code in a subset of Cedar itself. By treating C as) justify grestore 90.3375 584.038 moveto gsave font0 setfont (an intermediate code we are able to achieve reasonably fast compilation, very good eventual) justify grestore 90.3375 571.993 moveto gsave font0 setfont (machine code, and all with relatively small programmer effort. Because Cedar is a much richer) justify grestore 90.3375 559.948 moveto gsave font0 setfont (language than C, there were numerous issues to resolve in performing an efficient translation and) justify grestore 90.3375 547.9032 moveto font0 setfont (in providing reasonable debugging. ) show 110.4125 526.4146 moveto /colwidth 403.545 def gsave font0 setfont (Reference [<52>] is a paper presented at SIGPLAN '89 Conference on Programming) justify grestore 90.3375 514.3700 moveto /colwidth 423.62 def gsave font0 setfont (Language Design and Implementation. It discusses how Cedar was re-implemented to make it) justify grestore 90.3375 502.325 moveto gsave font0 setfont (portable across many different architectures, in particular, the strategy for the compiler and) justify grestore 90.3375 490.2797 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (runtime, and the manner of making connections to other languages and the Unix) 0 buf opsaft 0 null put font3 setfont opsbef 1 {font3 setfont 0.0 4.015 rmoveto} put (TM) 1 buf opsaft 1 null put font0 setfont opsbef 2 {0.0 -4.015 rmoveto font0 setfont} put ( operating) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 478.2347 moveto font0 setfont (system.) show 110.4125 456.7465 moveto /colwidth 403.545 def gsave font12 setfont opsbef 0 {font12 setfont} put (Mimosa) 0 buf opsaft 0 null put font0 setfont opsbef 1 {font0 setfont} put (. The Mimosa compiler translates the Cedar language into machine dependent C.) 1 buf opsaft 1 null put mixedjustify grestore 90.3375 444.7016 moveto /colwidth 423.62 def gsave font0 setfont (There is a front end, compiling into a simple intermediate form, and a back end, translating from) justify grestore 90.3375 432.6565 moveto gsave font0 setfont (the intermediate form to C code. In the future, back ends may generate other machine codes,) justify grestore 90.3375 420.6114 moveto font0 setfont (other assembler languages, or other versions of C.) show 110.4125 399.1231 moveto /colwidth 403.545 def gsave font0 setfont (Although treating C as merely an intermediate language has significant advantages, the) justify grestore 90.3375 387.0781 moveto /colwidth 423.62 def gsave font0 setfont (decision to keep program maintenance in Cedar was made independently on the merits of the) justify grestore 90.3375 375.0331 moveto gsave font0 setfont (Cedar language. We were not willing to do a one-time translation from Cedar to C \050even readable) justify grestore 90.3375 362.9881 moveto gsave font0 setfont (C\051. For example, such things as compiler-generated runtime checks should not be exposed to the) justify grestore 90.3375 350.9432 moveto font0 setfont (programmer for maintenance.) show 110.4125 329.4548 moveto /colwidth 403.545 def gsave font0 setfont (Everything in the front end was affected by the retargeting, and some files were completely) justify grestore 90.3375 317.4099 moveto /colwidth 423.62 def gsave font0 setfont (rewritten. The use of an intermediate code is completely new. The old code generator was) justify grestore 90.3375 305.3649 moveto gsave font0 setfont (changed to produce the intermediate code, in 16 files and over 8,000 lines of code. A few other) justify grestore 90.3375 293.3197 moveto gsave font0 setfont (files are completely new, for about 30% of the source lines. Since substantial changes have been) justify grestore 90.3375 281.2747 moveto gsave font0 setfont (made to other parts of the compiler, it would be reasonable to estimate that over 50% of the source) justify grestore 90.3375 269.2297 moveto gsave font0 setfont (lines have received major change \050not counting the lines that were completely discarded\051. We) justify grestore 90.3375 257.1848 moveto font0 setfont (estimate that about 2 man-years overall were spent in redoing the front-end.) show 110.4125 235.6964 moveto /colwidth 403.545 def gsave font0 setfont (The back-end generates machine dependent C code from the intermediate form. It was) justify grestore 90.3375 223.6515 moveto /colwidth 423.62 def gsave font0 setfont (written completely from scratch for the port, consists of 10,000 lines of Cedar in 24 modules, and) justify grestore 90.3375 211.6066 moveto font0 setfont (took about 6 man-months to write.) show 110.4125 190.1183 moveto /colwidth 403.5451 def gsave font12 setfont opsbef 0 {font12 setfont} put (Portable Common Runtime) 0 buf opsaft 0 null put font0 setfont opsbef 1 {font0 setfont} put (. The Cedar runtime environment, to which the generated C code) 1 buf opsaft 1 null put mixedjustify grestore 90.3375 178.0732 moveto /colwidth 423.62 def gsave font0 setfont (is targeted, is written mostly in Cedar, the rest is written in C, except for a small amount of) justify grestore 90.3375 166.0281 moveto font0 setfont (assembler code. ) show 110.4125 144.54 moveto /colwidth 403.545 def gsave font0 setfont (The environment is built in layers. The lowest layer is akin to an operating system, and) justify grestore 90.3375 132.4950 moveto /colwidth 423.62 def gsave font0 setfont (provides dynamic loading, threads support, and storage management \050including garbage) justify grestore 90.3375 120.45 moveto gsave font0 setfont (collection\051. This is about 20,000 lines of C code and less than a 100 lines of assembler \050either) justify grestore 90.3375 108.405 moveto gsave font0 setfont (SPARC and Motorola 68020 at the moment\051. This layer is not specific to Cedar, and is in fact) justify grestore 90.3375 96.36 moveto gsave font0 setfont (intended to provide a language-independent base for high level languages. We call it the Portable) justify grestore 90.3375 84.31496 moveto gsave font0 setfont (Common Runtime \050PCR\051, which we describe elsewhere [71]. Below we describe the PCR only) justify grestore 90.3375 72.26996 moveto font0 setfont (where its functionality is particularly important to implementing Cedar features.) show grestore grestore % end page 17 showpage %%page 18 gsave 2834.646 2834.646 scale gsave 0.0254 dup matrix scale concat 0.013837 dup matrix scale concat 282.1476 38.135 moveto font3 setfont (CEDAR 10.1 ) show font0 setfont 514.447 746.79 moveto (18) show 110.4125 684.9593 moveto /colwidth 403.545 def gsave font0 setfont (Support for the remaining features of Cedar is provided by the penultimate layer, called) justify grestore 90.3375 672.914 moveto /colwidth 423.62 def gsave font0 setfont opsbef 0 {font0 setfont} put (CedarCore, which contains ) 0 buf opsaft 0 null put opsbef 1 {font0 setfont} put (400) 1 buf opsaft 1 null put opsbef 2 {font0 setfont} put ( lines of C code and ) 2 buf opsaft 2 null put opsbef 3 {font0 setfont} put (10,000) 3 buf opsaft 3 null put opsbef 4 {font0 setfont} put ( lines of Cedar. From CedarCore on, the) 4 buf opsaft 4 null put mixedjustify grestore 90.3375 660.8688 moveto gsave font0 setfont (full Cedar language is supported. The final support layer, BasicCedar, while not necessary for the) justify grestore 90.3375 648.8241 moveto gsave font0 setfont (language itself, contains services that are considered essential for most Cedar applications. For) justify grestore 90.3375 636.779 moveto gsave font0 setfont (example it includes several kinds of hash table mechanisms and a general-purpose stream I/O) justify grestore 90.3375 624.7342 moveto gsave font0 setfont (package. Cedar lightweight processes, interface binding, and exception handling are handled by) justify grestore 90.3375 612.6892 moveto font0 setfont (the runtime system. ) show 90.3375 586.8198 moveto font12 setfont (4.3 Portable File System \050PFS\051) show 110.4125 560.95 moveto /colwidth 403.545 def gsave font0 setfont (File system access by all Cedar packages is PFS, the new Portable File System interface. PFS) justify grestore 90.3375 548.9048 moveto /colwidth 423.62 def gsave font0 setfont (provides a uniform, extensible mechanism allowing client programs to use files in any of a number) justify grestore 90.3375 536.86 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (of different kinds of file systems. For example, clients can currently view UNIX) 0 buf opsaft 0 null put font3 setfont opsbef 1 {font3 setfont 0.0 4.015 rmoveto} put (TM) 1 buf opsaft 1 null put font0 setfont opsbef 2 {0.0 -4.015 rmoveto font0 setfont} put ( file systems in) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 524.8149 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (either ``Unix) 0 buf opsaft 0 null put font3 setfont opsbef 1 {font3 setfont 0.0 4.015 rmoveto} put (TM) 1 buf opsaft 1 null put font0 setfont opsbef 2 {0.0 -4.015 rmoveto font0 setfont} put ('' style, i.e., versionless and case-sensitive names, or in ``Cedar'' style, i.e. versioned) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 512.77 moveto gsave font0 setfont (and case-insensitive names. We dub the Unix view ``-ux'' \050pronounced ``ucks''\051 and the Cedar view) justify grestore 90.3375 500.725 moveto gsave font0 setfont (``-vux'' \050pronounced ``vucks''\051. There is also a view that uses the Cedar version map as its) justify grestore 90.3375 488.68 moveto gsave font0 setfont (directory. A view of NS files is in development, as is a DF view. To ease porting of Cedar clients) justify grestore 90.3375 476.635 moveto font0 setfont (and to allow sharing of source, a Cedar FS compatibility package was also provided.) show 110.4125 457.2325 moveto /colwidth 403.545 def gsave font0 setfont (This work builds on work done in Cedar7.0 for accessing files on many different kinds of file) justify grestore 90.3375 445.1876 moveto /colwidth 423.62 def gsave font0 setfont (servers, including Sun NFSs, where essentially the same problems had to be solved: a common) justify grestore 90.3375 433.1426 moveto gsave font0 setfont (interface to different, but essentially similar file systems; a registration mechanism to make the) justify grestore 90.3375 421.0976 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (solution extensible to new file systems; and a simulation of Cedar-style names using the Unix) 0 buf opsaft 0 null put font3 setfont opsbef 1 {font3 setfont 0.0 4.015 rmoveto} put (TM) 1 buf opsaft 1 null put mixedjustify grestore 90.3375 409.0526 moveto font0 setfont (file system. See <53> for details.) show 110.4125 389.6505 moveto /colwidth 403.545 def gsave font0 setfont opsbef 0 {font0 setfont} put (PFS introduces the ) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (prefix map) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( concept to Cedar. Prefix maps introduce a level of name) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 377.6054 moveto /colwidth 423.62 def gsave font0 setfont (indirection to all file system accesses using PFS. This indirection is used to make client programs) justify grestore 90.3375 365.5604 moveto gsave font0 setfont (less dependent on the actual location of files. Because prefix maps allow replacing an arbitrary) justify grestore 90.3375 353.5154 moveto gsave font0 setfont (prefix of a path by another path, and because this substitution is done uniformly on all paths used) justify grestore 90.3375 341.4704 moveto font0 setfont (by PFS, prefix maps have additional uses in customizing clients' views of the file system.) show 110.4125 322.0682 moveto /colwidth 403.545 def gsave font0 setfont (Type the following command ``pmp'' \050short for PrefixMapPrint\051 to your commander. The) justify grestore 90.3375 310.0232 moveto /colwidth 423.62 def gsave font0 setfont (current default prefix maps will be printed out. It is easiest to think of these prefix maps as top) justify grestore 90.3375 297.9782 moveto font0 setfont (level directories in the Unix style.) show 110.4125 278.576 moveto 125.4688 265.1963 moveto font12 setfont (%) show font14 setfont ( pmp) show 131.4688 253.1512 moveto font13 setfont (/cedar10.1) show 8.782788 0.0 rmoveto 10.03749 0.0 rmoveto (-vux:/project/cedar10.1/release) show 131.4688 241.1062 moveto font13 setfont (/) show font14 setfont (cedar) show font13 setfont 10.75407 0.0 rmoveto 10.03749 0.0 rmoveto 10.03749 0.0 rmoveto 10.03749 0.0 rmoveto 10.03749 0.0 rmoveto (-vux:/) show font14 setfont (project/cedar10.1/release) show 131.4688 229.0612 moveto font14 setfont (...) show 131.4688 217.0162 moveto font13 setfont (/) show 13.92702 0.0 rmoveto 10.03749 0.0 rmoveto 10.03749 0.0 rmoveto 10.03749 0.0 rmoveto 10.03749 0.0 rmoveto 10.03749 0.0 rmoveto 10.03749 0.0 rmoveto (-ux:/) show 131.4688 204.9713 moveto font14 setfont (/r/) show 6.273453 0.0 rmoveto 10.03749 0.0 rmoveto 10.03749 0.0 rmoveto 10.03749 0.0 rmoveto 10.03749 0.0 rmoveto 10.03749 0.0 rmoveto (-VerMapA:/Source/) show 125.4688 191.5916 moveto 90.3375 165.722 moveto font1 setfont (-Vux view) show 110.4125 139.8524 moveto /colwidth 403.545 def gsave font0 setfont (The following doesn't apply to Cedar as it appears on the CDROM. The /cedar and) justify grestore 90.3375 127.8073 moveto /colwidth 423.62 def gsave font0 setfont (/cedar10.1 prefixes are mapped by the CDROM prefix map to ordinary, case sensitive, versionless) justify grestore 90.3375 115.7624 moveto font0 setfont (directories using the -ux:/ prefix.) show 110.4125 96.3602 moveto /colwidth 403.545 def gsave font0 setfont (For example, note that /cedar10.1 and /cedar are both prefixes of a somewhat longer) justify grestore 90.3375 84.31519 moveto /colwidth 423.62 def gsave font0 setfont (pathname, called /project/cedar10.1/release and is to be viewed as versioned, case-insensitive) justify grestore 90.3375 72.27018 moveto gsave font0 setfont (names, indicated by ``-vux:'' -- think of -vux as \042versioned unix.\042 If I type the ``ls'' command in) justify grestore grestore grestore % end page 18 showpage %%page 19 gsave 2834.646 2834.646 scale gsave 0.0254 dup matrix scale concat 0.013837 dup matrix scale concat 282.1476 38.135 moveto font3 setfont (CEDAR 10.1 ) show font0 setfont 514.2537 746.79 moveto (19) show 90.3375 684.9593 moveto gsave font0 setfont (the /cedar/top directory, all file names together with version numbers are printed out. A portion) justify grestore 90.3375 672.914 moveto font0 setfont (of this list looks like the following:) show 90.3375 653.7959 moveto 125.4688 640.7 moveto font12 setfont (% ) show font14 setfont (push /cedar/top) show 125.4688 627.6044 moveto font14 setfont (/cedar/top/) show 125.4688 614.5088 moveto font12 setfont (%) show font14 setfont ( ls) show 125.4688 601.413 moveto font14 setfont (/cedar/top/) show 131.4688 589.368 moveto font14 setfont (Adobe.df!3 12309 21-Apr-92 16:42:08 PDT) show 131.4688 577.323 moveto font14 setfont (Adobe.df!4 12309 29-Apr-92 14:41:17 PDT) show 131.4688 565.2778 moveto font14 setfont (Adobe.df!5 12336 12-May-92 14:35:27 PDT) show 131.4688 553.233 moveto font14 setfont (AIS.df!1 3619 10-Mar-92 11:59:50 PST) show 131.4688 541.188 moveto font14 setfont (Args.df!1 1092 22-Feb-92 10:59:17 PST) show 131.4688 529.143 moveto font14 setfont (ArpaTransport.df!1 2039 21-Feb-92 23:29:43 PST) show 110.4125 510.025 moveto /colwidth 403.545 def gsave font0 setfont opsbef 0 {font0 setfont} put (To those of you who cut your teeth on Unix) 0 buf opsaft 0 null put font3 setfont opsbef 1 {font3 setfont 0.0 4.015 rmoveto} put (TM) 1 buf opsaft 1 null put font0 setfont opsbef 2 {0.0 -4.015 rmoveto font0 setfont} put (, version numbers are probably alien to you.) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 497.98 moveto /colwidth 423.62 def gsave font0 setfont opsbef 0 {font0 setfont} put (The semantics of files created and modified in a vux view is ) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (immutability) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (. A file can never be) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 485.9348 moveto gsave font0 setfont (modified in place or overwritten, so you need never worry about clobberting an old version of a) justify grestore 90.3375 473.8899 moveto gsave font0 setfont (file as you make changes. The only way to modify an existing file is to create a new version with) justify grestore 90.3375 461.8448 moveto gsave font0 setfont (the same contents and modify that new version. Reading a file defaults to the latest version, so if) justify grestore 90.3375 449.7997 moveto font0 setfont (you type) show 90.3375 430.6815 moveto 125.4688 417.5858 moveto font12 setfont (%) show font14 setfont ( open /Cedar/Top/Adobe.df) show 131.4688 405.5408 moveto font14 setfont (Created Viewer: /Cedar/Top/Adobe.df!5) show 90.3375 386.4226 moveto gsave font0 setfont (to your Commander without specifying a version number, a viewer is opened displaying the latest) justify grestore 90.3375 374.3776 moveto gsave font0 setfont (version; to read a specific version you must supply that number using ``!2'' for example, if you) justify grestore 90.3375 362.3325 moveto gsave font0 setfont (want version number 2. The obvious disadvantage is that all those versions accumulate and clutter) justify grestore 90.3375 350.2875 moveto font0 setfont (your disk space. ) show 110.4125 331.1692 moveto /colwidth 403.545 def gsave font0 setfont (And now for a word on Cedar version maps. To achieve the same effect as the previous) justify grestore 90.3375 319.1243 moveto /colwidth 423.62 def gsave font0 setfont (command without having to specify the particular subdirectory, like /Top, which you might not) justify grestore 90.3375 307.0794 moveto gsave font0 setfont (even know anyway, you can go through Cedar version maps. These maps represent a kind of latest) justify grestore 90.3375 295.0342 moveto gsave font0 setfont (snapshot of all the software packages making up Cedar. Provided that a package is in the version) justify grestore 90.3375 282.9892 moveto gsave font0 setfont (maps, then you will always get the latest version of the file; otherwise, you must explicitly specify) justify grestore 90.3375 270.9443 moveto gsave font0 setfont (the path. The following accomplishes the same thing as the previous command. In this case, I) justify grestore 90.3375 258.8992 moveto font0 setfont (happen know that Adobe.df is in the /Cedar directory and that there are version maps for /Cedar.) show 110.4125 239.781 moveto 125.4688 226.6853 moveto font12 setfont (%) show font14 setfont ( openr Adobe.df) show 131.4688 214.6404 moveto font14 setfont (Created Viewer: /R/Adobe.df!5) show 110.4125 195.5221 moveto /colwidth 403.545 def gsave font0 setfont opsbef 0 {font0 setfont} put (A word of ) 0 buf opsaft 0 null put font12 setfont opsbef 1 {font12 setfont} put (warning) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (: Packages in the Cedar release are, unfortunately, not read-only. It is) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 183.4771 moveto font0 setfont (possible for you inadvertently to modify a file and then ) show font7 setfont currentpoint /undery exch def /underx exch def (Save) show 1.0 setlinewidth currentpoint currentpoint pop undery 1.2 sub dup underx exch vec moveto font0 setfont ( it. Please be careful!!!) show 90.3375 157.9861 moveto font1 setfont (-Ux view) show 110.4125 132.4951 moveto gsave font0 setfont ( Think of this as the Unix view of the file system. In fact, it is the default view for your root) justify grestore 90.3375 120.4502 moveto /colwidth 423.62 def gsave font0 setfont (directory ``/'' and thus for your home directory. In the -ux view, PFS maintains only two versions:) justify grestore 90.3375 108.4052 moveto gsave font0 setfont (the current version and the previous version. This previous version is distinguished by a tilde, ``~'',) justify grestore 90.3375 96.36016 moveto gsave font0 setfont (appended to the file name. If I modify the current version and write it back, the old previous) justify grestore 90.3375 84.31516 moveto gsave font0 setfont (version vanishes and the old current version becomes the previous version. If you create a) justify grestore 90.3375 72.27016 moveto font0 setfont (subdirectory, it defaults to -ux. Case is important! ) show grestore grestore % end page 19 showpage %%page 20 gsave 2834.646 2834.646 scale gsave 0.0254 dup matrix scale concat 0.013837 dup matrix scale concat 282.1476 38.135 moveto font3 setfont (CEDAR 10.1 ) show font0 setfont 514.125 746.79 moveto (20) show 90.3375 684.9593 moveto font1 setfont (Adding a prefix to the map.) show 110.4125 660.2036 moveto /colwidth 403.5451 def gsave font0 setfont (Suppose you want to define your own -vux view of some existing directory of yours, say,) justify grestore 90.3375 648.1588 moveto font0 setfont (/YourHomeDirectory/nothing/zippo, then type the following to your Commander:) show 125.4688 635.6153 moveto font12 setfont (%) show font14 setfont ( pma /zippo -vux:/YourHomeDirectory/nothing/zippo) show 90.3375 617.0488 moveto /colwidth 423.62 def gsave font0 setfont (``pma'' is short for ``PrefixMapAdd'' and is the command for adding new entries. There are two) justify grestore 90.3375 605.0036 moveto gsave font0 setfont (arguments: the first one, /zippo, is the prefix directory you wish to define; the second one is the) justify grestore 90.3375 592.9588 moveto gsave font0 setfont (translation, where -vux says you want a versioned view, after the colon, is the path name \050ending) justify grestore 90.3375 580.9138 moveto font0 setfont (in a directory name\051 for which /zippo is the abbreviation.) show 110.4125 562.3474 moveto /colwidth 403.5451 def gsave font0 setfont (Then type ``pmp'' to your Commander, and you'll see /zippo listed as a prefix map entry with) justify grestore 90.3375 550.3023 moveto /colwidth 423.62 def gsave font0 setfont (the -vux view. To view this directory as versioned, you must always refer to it via the prefix name,) justify grestore 90.3375 538.2575 moveto gsave font1 setfont opsbef 0 {font1 setfont} put (not) 0 buf opsaft 0 null put font0 setfont opsbef 1 {font0 setfont} put ( the full path name. In fact, we now have ) 1 buf opsaft 1 null put font1 setfont opsbef 2 {font1 setfont} put (both) 2 buf opsaft 2 null put font0 setfont opsbef 3 {font0 setfont} put ( an -ux and a -vux view of the same subdirectory.) 3 buf opsaft 3 null put mixedjustify grestore 90.3375 526.2125 moveto font0 setfont (Any file created in one is visible from the other view.) show 110.4125 507.6460 moveto 125.4688 495.1023 moveto font12 setfont (%) show font14 setfont ( push /YourHomeDirectory/nothing/zippo) show 125.4688 482.5584 moveto font14 setfont (/YourHomeDirectory/nothing/zippo/) show 125.4688 470.0145 moveto font12 setfont (%) show font14 setfont ( ls) show 125.4688 457.4706 moveto font14 setfont (/YourHomeDirectory/nothing/zippo/) show 125.4688 444.9268 moveto font14 setfont (. 512 05-May-90 14:47:07 PDT) show 125.4688 432.383 moveto font14 setfont (.. 512 05-May-90 14:45:17 PDT) show 125.4688 419.8393 moveto font14 setfont (.~case~Hello.world 0 05-May-90 14:46:09 PDT) show 125.4688 407.2954 moveto font14 setfont (Hello.world 17 05-May-90 14:47:07 PDT) show 125.4688 394.7514 moveto font14 setfont (hello.world.~1~ 5 05-May-90 14:46:09 PDT) show 125.4688 382.2075 moveto font14 setfont (hello.world.~2~ 11 05-May-90 14:58:21 PDT) show 125.4688 369.6637 moveto font14 setfont (Hello.world~ 5 05-May-90 14:45:05 PDT) show 125.4688 357.12 moveto font14 setfont (-- 6 files, 1051 total bytes) show 90.3375 338.5536 moveto gsave font0 setfont (Here we're listing the files in the -ux view, and we're also seeing the files that were created under) justify grestore 90.3375 326.5085 moveto gsave font0 setfont (the -vux view \050.~case~Hello.world, hello.world.~1~, and hello.world.~2~\051. Perhaps the only) justify grestore 90.3375 314.4634 moveto gsave font0 setfont (puzzling file is the .~case~ that precedes the file name Hello.world. It's there to make the file) justify grestore 90.3375 302.4185 moveto font0 setfont (name case-insensitive.) show 125.4688 289.8746 moveto 125.4688 277.3308 moveto font12 setfont (%) show font14 setfont ( push /zippo) show 125.4688 264.7869 moveto font14 setfont (/zippo/) show 125.4688 252.2431 moveto font12 setfont (%) show font14 setfont ( ls) show 125.4688 239.6992 moveto font14 setfont (Hello.world 17 05-May-90 14:47:07 PDT) show 125.4688 227.1554 moveto font14 setfont (Hello.world!1 5 05-May-90 14:46:09 PDT) show 125.4688 214.6116 moveto font14 setfont (Hello.world!2 11 05-May-90 14:58:21 PDT) show 125.4688 202.0678 moveto font14 setfont (Hello.world~ 5 05-May-90 14:45:05 PDT) show 125.4688 189.524 moveto font14 setfont (-- 3 files, 27 total bytes) show 125.4688 176.9802 moveto 90.3375 158.4138 moveto gsave font0 setfont (It's not clear that you really want to mix your -ux and -vux views of the same directory. I think it's) justify grestore 90.3375 146.3688 moveto font0 setfont (best to maintain the separation.) show 90.3375 121.6138 moveto font1 setfont (Removing a prefix from the map) show 110.4125 96.85864 moveto /colwidth 403.545 def gsave font0 setfont (Removing a prefix is easy. Suppose you want to remove the prefix /zippo. The following) justify grestore 90.3375 84.81366 moveto font0 setfont (does the trick:) show 125.4688 72.26985 moveto font12 setfont (%) show font14 setfont ( pma /zippo) show grestore grestore % end page 20 showpage %%page 21 gsave 2834.646 2834.646 scale gsave 0.0254 dup matrix scale concat 0.013837 dup matrix scale concat 282.1476 38.135 moveto font3 setfont (CEDAR 10.1 ) show font0 setfont 514.132 746.79 moveto (21) show 125.4688 689.9815 moveto font12 setfont (%) show 90.3375 670.4820 moveto font0 setfont (Note, however, that the prefix is removed only from the map; the filesystem on disk is unaffected.) show 125.4688 657.0051 moveto 90.3375 631.0060 moveto font12 setfont (4.4 Name space) show 110.4125 605.0066 moveto /colwidth 403.545 def gsave font0 setfont (The Cedar name space of interest to most users essentially consists of the aforementioned) justify grestore 90.3375 592.9615 moveto /colwidth 423.62 def gsave font0 setfont (Prefix maps that serve as a kind of location-transparent shorthand for file servers. In this section,) justify grestore 90.3375 580.9167 moveto font0 setfont (we discuss how the various name spaces are organized.) show 110.4125 561.4172 moveto /colwidth 403.545 def gsave font0 setfont (/Cedar consists of the following major sub-directories: /Commands, /Top, and all the) justify grestore 90.3375 549.372 moveto /colwidth 423.62 def gsave font0 setfont (software packages, from /Abutters to /XTSetter. The illustration below shows this same) justify grestore 90.3375 537.3272 moveto font0 setfont (organization. ) show 114.3915 375.487 moveto gsave currentpoint translate 2834.645 dup matrix scale concat gsave 3.527776e-4 dup matrix scale concat gsave -34.0 -443.3509 matrix translate concat gsave font16 setfont 0.0 setgray 12.0 dup matrix scale 40.0 510.0 matrix translate matrix concatmatrix concat 0.0 0.0 moveto (/Commands) show grestore gsave font16 setfont 0.0 setgray 12.0 dup matrix scale 235.2469 507.593 matrix translate matrix concatmatrix concat 0.0 0.0 moveto (/Abutters) show grestore gsave font16 setfont 0.0 setgray 12.0 dup matrix scale 235.2469 493.193 matrix translate matrix concatmatrix concat 0.0 0.0 moveto (/Adobe) show grestore gsave font16 setfont 0.0 setgray 12.0 dup matrix scale 235.2469 478.793 matrix translate matrix concatmatrix concat 0.0 0.0 moveto (/ApproxSymTab) show grestore gsave font16 setfont 0.0 setgray 12.0 dup matrix scale 240.9375 467.593 matrix translate matrix concatmatrix concat 0.0 0.0 moveto (. . .) show grestore gsave font16 setfont 0.0 setgray 12.0 dup matrix scale 235.2469 451.593 matrix translate matrix concatmatrix concat 0.0 0.0 moveto (/XTSetter) show grestore gsave font16 setfont 0.0 setgray 12.0 dup matrix scale 375.0 510.0 matrix translate matrix concatmatrix concat 0.0 0.0 moveto (/Top) show grestore 0.5 setgray eofill gsave gsave 0.0 0.0 moveto currentpoint translate 73.37051 517.556 moveto 254.869 517.556 lineto 254.869 577.258 lineto 73.37051 577.258 lineto clip newpath 0.0 setgray 1.0 setlinewidth 1 setlinecap 1 setlinejoin 253.369 575.758 74.8705 519.0562 vec grestore grestore 0.5 setgray eofill gsave gsave 0.0 0.0 moveto currentpoint translate 251.869 520.5 moveto 255.5 520.5 lineto 255.5 577.258 lineto 251.869 577.258 lineto clip newpath 0.0 setgray 1.0 setlinewidth 1 setlinecap 1 setlinejoin 253.369 575.758 254.0 522.0 vec grestore grestore 0.5 setgray eofill gsave gsave 0.0 0.0 moveto currentpoint translate 251.869 517.556 moveto 390.756 517.556 lineto 390.756 577.258 lineto 251.869 577.258 lineto clip newpath 0.0 setgray 1.0 setlinewidth 1 setlinecap 1 setlinejoin 253.369 575.758 389.2558 519.0562 vec grestore grestore gsave font16 setfont 0.0 setgray 12.0 dup matrix scale 239.0 580.0 matrix translate matrix concatmatrix concat 0.0 0.0 moveto (/Cedar) show grestore grestore grestore grestore 110.4125 355.9875 moveto /colwidth 403.545 def gsave font12 setfont opsbef 0 {font12 setfont} put (Top) 0 buf opsaft 0 null put font0 setfont opsbef 1 {font0 setfont} put (. This subdirectory contains for each software package the DF file that describes that) 1 buf opsaft 1 null put mixedjustify grestore 90.3375 343.9425 moveto /colwidth 423.62 def gsave font0 setfont (software package. For example, for the software package LoganBerry, there is one DF file:) justify grestore 90.3375 331.8974 moveto font0 setfont (LoganBerry.df. We defer explanation of DF files to the next section.) show 110.4125 312.398 moveto font12 setfont (Commands) show font0 setfont (. Discussed in the next section.) show 110.4125 292.8986 moveto /colwidth 403.545 def gsave font12 setfont opsbef 0 {font12 setfont} put (Software packages) 0 buf opsaft 0 null put font0 setfont opsbef 1 {font0 setfont} put (. Each package has its own subdirectory in the hierarchy. Thus XTSetter) 1 buf opsaft 1 null put mixedjustify grestore 90.3375 280.8537 moveto /colwidth 423.62 def gsave font0 setfont (has /XTSetter and LoganBerry has /LoganBerry. Each package subdirectory contains the source) justify grestore 90.3375 268.8085 moveto gsave font0 setfont (files \050.mesa, .config\051, symbol table files \050.mob\051, intermediate code files \050.c2c.c\051, and a subdirectory,) justify grestore 90.3375 256.7636 moveto gsave font0 setfont (sun4. The sun4 directory, contains, as you might expect, all the \050optimized\051 C object files targeted) justify grestore 90.3375 244.7186 moveto font0 setfont (for the SPARC architecture.) show 90.3375 218.7193 moveto font12 setfont (4.5 DF Files ) show 110.4125 192.72 moveto /colwidth 403.545 def gsave font12 setfont opsbef 0 {font12 setfont} put (Bringover) 0 buf opsaft 0 null put font0 setfont opsbef 1 {font0 setfont} put (. In the days Before The Change \050that is before Cedar on Unix\051, the Cedar File) 1 buf opsaft 1 null put mixedjustify grestore 90.3375 180.675 moveto /colwidth 423.62 def gsave font0 setfont (System was organized into a local file system managed by a user's Dorado worksation and a remote) justify grestore 90.3375 168.63 moveto gsave font0 setfont (file system, managed by an IFS file server such as Ivy or Indigo: the file server was the truth! If a) justify grestore 90.3375 156.585 moveto gsave font0 setfont (user wished to modify a software package, he copied the necessary bits from the file server to his) justify grestore 90.3375 144.54 moveto gsave font0 setfont (local file system, munged with them locally, and then stored them out at the file server, presumably) justify grestore 90.3375 132.4951 moveto gsave font0 setfont (in some consistent state. Actually, that's an oversimplification, if not an outright lie. What really) justify grestore 90.3375 120.4501 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (happens is that you create ) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (attachments) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( to remote files rather than copying them to the local disk.) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 108.4051 moveto gsave font0 setfont (The local disk is just a cache. The attached files may then be referenced by their short file names) justify grestore 90.3375 96.36006 moveto gsave font0 setfont (rather than the full path name including the server and directory names. If attached files were) justify grestore 90.3375 84.31507 moveto gsave font0 setfont (subsequently modified, new versions were automatically created on the local disk. The remote) justify grestore 90.3375 72.27007 moveto gsave font0 setfont (versions would later be updated to reflect these ``dirty'' files in the cache. The local file system was) justify grestore grestore grestore % end page 21 showpage %%page 22 gsave 2834.646 2834.646 scale gsave 0.0254 dup matrix scale concat 0.013837 dup matrix scale concat 282.1476 38.135 moveto font3 setfont (CEDAR 10.1 ) show font0 setfont 514.2037 746.79 moveto (22) show 90.3375 684.9593 moveto gsave font0 setfont (truly distinct from the remote file server although the software did much to make things) justify grestore 90.3375 672.914 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (transparent. This induced a certain mode of operation called ) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (Keeping your bags packed) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (. If you) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 660.8688 moveto gsave font0 setfont (spent weeks working on modifying some package without putting out intermediate changes to the) justify grestore 90.3375 648.8241 moveto gsave font0 setfont (file server, you were taking big risks because all manner of nasty things could happen in the) justify grestore 90.3375 636.779 moveto gsave font0 setfont (meantime to destroy the data on the local disk. Your local copy is indeed only a cached copy of the) justify grestore 90.3375 624.7342 moveto font0 setfont (data on the file server. Dorados themselves were never backed up, but IFSs were.) show 27.36865 0.0 rmoveto 110.4125 602.9194 moveto /colwidth 403.545 def gsave font0 setfont (In the days After The Change, we now use NFS servers \050and later, even AFS\051 to store our) justify grestore 90.3375 590.8742 moveto /colwidth 423.62 def gsave font0 setfont (files, and the distinction between local and remote files goes away; however, I hasten to add that) justify grestore 90.3375 578.8293 moveto gsave font0 setfont (our SPARCstation's do have 200 Megabytes of local disk space, some of which stores Unix itself) justify grestore 90.3375 566.7843 moveto gsave font0 setfont (and some of which is devoted to swap space, but no one seriously uses the local disk. I note you) justify grestore 90.3375 554.7391 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (can get ) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (much) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( better performance if you use it! Rumor has it that the DF view will provide) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 542.6945 moveto gsave font0 setfont (something equivalent to Dorado Cedar attachments. One pleasant advantage of NFS is that it) justify grestore 90.3375 530.6494 moveto gsave font0 setfont (allows you to always login to your home directory on an NFS server, whatever machine you) justify grestore 90.3375 518.6044 moveto gsave font0 setfont (happen to be on, and thus share the same file system subtree; however, you pay a cost in) justify grestore 90.3375 506.5594 moveto gsave font0 setfont (performance and in network traffic. Viewed through versioned PFS, the files making up the latest) justify grestore 90.3375 494.5142 moveto gsave font0 setfont (Cedar release on /Cedar are immutable, that is, you cannot modify a version in place but must) justify grestore 90.3375 482.4694 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (create a new version. One still copies ) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (all) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( these bits, but instead of to your local disk, to some) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 470.4243 moveto font0 setfont (subdirectory in your file system space.) show 110.4125 448.6094 moveto /colwidth 403.5451 def gsave font0 setfont (The Bringover command retrieves to some subdirectory you've specified the set of files) justify grestore 90.3375 436.5645 moveto /colwidth 423.62 def gsave font0 setfont (described by a particular DF suite. Typically, the DF files specify the Cedar release directory) justify grestore 90.3375 424.5195 moveto gsave font0 setfont (\050/Cedar\051 on which to look for a file, or in some cases, the old Cedar7.0 release \050/Cedar7.0\051. These) justify grestore 90.3375 412.4746 moveto gsave font0 setfont (directories are just hints, in the sense that Bringover will always verify by checking the create date) justify grestore 90.3375 400.4294 moveto gsave font0 setfont (that it is getting you the correct version of the specified file. If Bringover can't find the correct) justify grestore 90.3375 388.3844 moveto gsave font0 setfont (version on the specified directory, it will issue a sprightly error message. Consider our) justify grestore 90.3375 376.3393 moveto gsave font0 setfont (SimpleExample.df file example. Imagine that you've organized your file system so that) justify grestore 90.3375 364.2944 moveto gsave font0 setfont (development takes place in /tilde/boki/Cedar/Development/ subdirectory. Try typing the) justify grestore 90.3375 352.2493 moveto font0 setfont (following to your Commander:) show 125.4688 336.4572 moveto font12 setfont (\015) show 131.4688 324.412 moveto font12 setfont (% ) show font14 setfont (mkdir SimpleExample) show 131.4688 312.3671 moveto font12 setfont (% ) show font14 setfont (cd) show font12 setfont ( ) show font14 setfont (SimpleExample) show font12 setfont ( ) show 131.4688 300.322 moveto font14 setfont (/tilde/boki/Cedar/Development/SimpleExample/) show font12 setfont (\015) show 131.4688 288.2769 moveto font12 setfont (%) show font14 setfont ( mkdir sun4) show 131.4688 276.2319 moveto font12 setfont (% ) show font14 setfont (BringOver /Cedar10.1/Top/SimpleExample.df) show font12 setfont (\015) show 131.4688 264.1869 moveto font14 setfont ( ) show font1 setfont (it types a lot of stuff ...) show font12 setfont (\015) show 131.4688 252.142 moveto font12 setfont (% ) show font14 setfont (open ReverseName.mesa) show 131.4688 240.097 moveto font12 setfont (%) show font14 setfont ( open Calculate.mesa) show 125.4688 224.3047 moveto 110.4125 202.4898 moveto /colwidth 403.5451 def gsave font0 setfont opsbef 0 {font0 setfont} put (On line 1, we must explicitly make a subdirectory called ) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (SimpleExample) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( in the Development) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 190.4449 moveto /colwidth 423.62 def gsave font0 setfont (subdirectory we're already in. Then we change directory to that newly created directory. Since the) justify grestore 90.3375 178.3999 moveto gsave font0 setfont (Bringover command, in copying the object files, does not create subdirectories sun4 and sun4-o3,) justify grestore 90.3375 166.3548 moveto gsave font0 setfont (you must explicitly do that yourself. Next, do the bringover. Finally, open some viewers on the) justify grestore 90.3375 154.3099 moveto gsave font0 setfont (two source files making up SimpleExample. You're welcome to stare at the Cedar code on your) justify grestore 90.3375 142.2649 moveto font0 setfont (screen, but we're not here going to explain anything about it.) show 110.4125 120.4501 moveto /colwidth 403.5451 def gsave font12 setfont opsbef 0 {font12 setfont} put (Smodel) 0 buf opsaft 0 null put font0 setfont opsbef 1 {font0 setfont} put (. Suppose we modify a local copy of a file described in a DF file; now we want to put) 1 buf opsaft 1 null put mixedjustify grestore 90.3375 108.4051 moveto /colwidth 423.62 def gsave font0 setfont (the new version back on the Cedar release directory, say, along with a new DF file that describes) justify grestore 90.3375 96.3601 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (the new version. This is performed by the ) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (SModel) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( command \050short for Simple Modelling\051.) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 84.31507 moveto gsave font0 setfont (SModel considers each file described in the DF file, and looks to see if it has been edited it \050that is,) justify grestore 90.3375 72.27007 moveto gsave font0 setfont (it looks to see if the create date of that file in my copy of the file is now different from the create) justify grestore grestore grestore % end page 22 showpage %%page 23 gsave 2834.646 2834.646 scale gsave 0.0254 dup matrix scale concat 0.013837 dup matrix scale concat 282.1476 38.135 moveto font3 setfont (CEDAR 10.1 ) show font0 setfont 514.5062 746.79 moveto (23) show 90.3375 684.9593 moveto gsave font0 setfont (date stored in the old DF file\051. If so, SModel stores the new version onto the /Cedar directory.) justify grestore 90.3375 672.914 moveto gsave font0 setfont (After doing this for each file, SModel writes a new version of the DF file itself, filling in all of the) justify grestore 90.3375 660.8688 moveto gsave font0 setfont (create dates correctly to describe the new version of the entire ensemble. If the DF file describes) justify grestore 90.3375 648.8241 moveto gsave font0 setfont (itself, as most DF files do, SModel is smart enough to make sure that the new version of the DF) justify grestore 90.3375 636.779 moveto gsave font0 setfont (file is stored out to the /Cedar release directory as well. SModel also has lots of bells and whistles,) justify grestore 90.3375 624.7342 moveto font0 setfont (but let's not go into them.) show 110.4125 602.5512 moveto /colwidth 403.5451 def gsave font12 setfont opsbef 0 {font12 setfont} put (A real example) 0 buf opsaft 0 null put font0 setfont opsbef 1 {font0 setfont} put (. Let's consider a real example. I've extracted the simplest Cedar program) 1 buf opsaft 1 null put mixedjustify grestore 90.3375 590.5063 moveto /colwidth 423.62 def gsave font0 setfont (from the Cedar examples usually inflicted on summer interns and permanent hires alike and) justify grestore 90.3375 578.4612 moveto gsave font0 setfont (constructed a DF file that packages them up. Without showing you the source code for the) justify grestore 90.3375 566.4163 moveto gsave font0 setfont (programs themselves, here's what the various DF files look like \050excluding the Sun4O3 df\051. It also) justify grestore 90.3375 554.3714 moveto font0 setfont (includes some comment lines \050each line is preceded by two hypens --\051 provided by Brent.) show 110.4125 532.1885 moveto /colwidth 403.5452 def gsave font12 setfont opsbef 0 {font12 setfont} put (SimpleExample.df. ) 0 buf opsaft 0 null put font0 setfont opsbef 1 {font0 setfont} put (The first few comment lines give the name of the DF file, copyright year,) 1 buf opsaft 1 null put mixedjustify grestore 90.3375 520.1434 moveto /colwidth 423.62 def gsave font0 setfont (and a line for each person who last modified the file. ``Exports [Cedar10.1]<Top>'' means that the) justify grestore 90.3375 508.0984 moveto gsave font0 setfont (following files are stored in the Cedar Top directory, in this case, ``SimpleExample.df'', followed) justify grestore 90.3375 496.0533 moveto gsave font0 setfont (by the create date ``14-May-92 15:15:34 PDT''; note that [Cedar10.1]<Top> and /Cedar10.1/Top) justify grestore 90.3375 484.0084 moveto font0 setfont (are different notations for the same thing; you will see them used interchangeably. ) show 110.4125 461.8256 moveto /colwidth 403.5451 def gsave font0 setfont (Includes: \050Don't occur in this df file\051``Include'' merely means that the specified file \050usually a) justify grestore 90.3375 449.7804 moveto /colwidth 423.62 def gsave font0 setfont (DF file\051 is included in the Suite. Think of the ``Include'' line as syntactic inclusion, similar to) justify grestore 90.3375 437.7355 moveto gsave font0 setfont (macro-expansion, in which the DF-suite references other DF files. Bringover invokes itself) justify grestore 90.3375 425.6904 moveto font0 setfont (recursively on the included file at the point it encounters the Include statement. ) show 105.3938 409.5301 moveto 111.3938 397.4851 moveto font14 setfont (-- SimpleExample.df) show 111.3938 385.44 moveto font14 setfont (-- Copyright ) show /Times-Roman findfont 10.0375 scalefont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end /font18 exch definefont pop /font18 findfont setfont (\251) show font14 setfont ( 1992 by Xerox Corporation. All rights reserved.) show 111.3938 373.395 moveto font14 setfont (-- DFPort: Christian Jacobi, May 14, 1992 3:01 pm PDT) show 111.3938 361.35 moveto font14 setfont (--) show 111.3938 349.305 moveto font14 setfont (-- Simple example programs useful for introductions to Cedar only) show 111.3938 337.26 moveto font14 setfont (--) show 111.3938 325.215 moveto 111.3938 313.17 moveto font14 setfont (Exports [Cedar10.1]<Top>) show 111.3938 301.125 moveto font14 setfont ( SimpleExample.df 14-May-92 15:15:34 PDT) show 111.3938 289.08 moveto 111.3938 277.035 moveto font14 setfont (Directory [Cedar10.1]<Commands>) show 111.3938 264.99 moveto font14 setfont ( Calculate.command!1 14-May-92 14:11:48 PDT) show 111.3938 252.945 moveto font14 setfont ( ReverseName.command!1 14-May-92 14:11:15 PDT) show 111.3938 240.9 moveto 111.3938 228.855 moveto font14 setfont (Directory [Cedar10.1]<SimpleExample>) show 111.3938 216.81 moveto 111.3938 204.765 moveto font14 setfont ( SimpleExampleDoc.tioga!2 14-May-92 15:14:55 PDT) show 111.3938 192.72 moveto 111.3938 180.675 moveto font14 setfont ( Calculate.require!1 02-May-90 12:39:04 PDT) show 111.3938 168.63 moveto font14 setfont ( Calculate.mob!1 14-May-92 15:00:14 PDT) show 111.3938 156.585 moveto font14 setfont ( Calculate.mesa!1 14-May-92 15:00:07 PDT) show 111.3938 144.54 moveto font14 setfont ( Calculate.c2c.c!1 14-May-92 15:00:15 PDT) show 111.3938 132.4951 moveto font14 setfont ( +sun4>Calculate.c2c.o!1 14-May-92 15:00:39 PDT) show 111.3938 120.45 moveto 111.3938 108.4051 moveto font14 setfont ( ReverseName.require!1 02-May-90 10:24:08 PDT) show 111.3938 96.36 moveto font14 setfont ( ReverseName.mob!1 14-May-92 14:22:28 PDT) show 111.3938 84.315 moveto font14 setfont ( ReverseName.mesa!1 14-May-92 14:22:19 PDT) show 111.3938 72.26999 moveto font14 setfont ( ReverseName.c2c.c!1 14-May-92 14:22:28 PDT) show grestore grestore % end page 23 showpage %%page 24 gsave 2834.646 2834.646 scale gsave 0.0254 dup matrix scale concat 0.013837 dup matrix scale concat 282.1476 38.135 moveto font3 setfont (CEDAR 10.1 ) show font0 setfont 514.0624 746.79 moveto (24) show 111.3938 689.9815 moveto font14 setfont ( +sun4>ReverseName.c2c.o!1 14-May-92 14:22:36 PDT) show 111.3938 677.9366 moveto 111.3938 665.8916 moveto font14 setfont (Imports [Cedar10.1]<Top>BasicPackages.df Of ~=) show 111.3938 653.8465 moveto font14 setfont ( Using [Commander.mob]) show 111.3938 641.8015 moveto 111.3938 629.7568 moveto font14 setfont (Imports [Cedar10.1]<Top>Basics.df Of ~=) show 111.3938 617.7115 moveto font14 setfont ( Using [Process.mob]) show 111.3938 605.6668 moveto 111.3938 593.6216 moveto font14 setfont (Imports [Cedar10.1]<Top>IO.df Of ~=) show 111.3938 581.5766 moveto font14 setfont ( Using [IO.mob]) show 111.3938 569.5316 moveto 111.3938 557.4865 moveto font14 setfont (Imports [Cedar10.1]<Top>Rope.df Of ~=) show 111.3938 545.4418 moveto font14 setfont ( Using [Rope.mob]) show 111.3938 533.3969 moveto 111.3938 521.3519 moveto font14 setfont (Imports [Cedar10.1]<Top>SystemNames.df Of ~=) show 111.3938 509.3067 moveto font14 setfont ( Using [SystemNames.mob]) show 111.3938 497.2619 moveto 111.3938 485.2167 moveto font14 setfont (Imports [Cedar10.1]<Top>ViewerIO.df Of ~=) show 111.3938 473.1716 moveto font14 setfont ( Using [ViewerIO.mob]) show 125.4688 459.7625 moveto 110.4125 440.3307 moveto /colwidth 403.545 def gsave font0 setfont (As you can see, if we only discussed DF files as descriptions of ensembles of files, then mere) justify grestore 90.3375 428.2857 moveto /colwidth 423.62 def gsave font0 setfont (mortals could figure out DF files without unduly straining their gray cells. But there's more. In) justify grestore 90.3375 416.2408 moveto font0 setfont (fact, these ensembles are often components of larger ensembles. It's complicated.) show 110.4125 396.8088 moveto /colwidth 403.545 def gsave font0 setfont (DF files grew up over time in response to several needs. As they became more popular,) justify grestore 90.3375 384.7639 moveto /colwidth 423.62 def gsave font0 setfont (features were added one by one to make them more useful in these varying contexts. The resulting) justify grestore 90.3375 372.7188 moveto gsave font0 setfont (system as a whole is hard to grok, particularly in PCedar2.0, but we hope that Cedar10.1 is a little) justify grestore 90.3375 360.6739 moveto font0 setfont (bit simpler again.) show 90.3375 334.7647 moveto font12 setfont (4.6 Reading programs) show 110.4125 308.8557 moveto 90.3375 282.9468 moveto font1 setfont (A Sample Program) show 110.4125 257.0379 moveto /colwidth 403.545 def gsave font0 setfont (About the Cedar code you will see, I won't explain syntax or semantics very much. A tutorial) justify grestore 90.3375 244.9928 moveto font0 setfont (on Cedar programming is beyond the scope of this primer. ) show 110.4125 225.5611 moveto gsave font0 setfont (After the listing of the ReverseName.mesa module, there is a set of notes to help in reading it.) justify grestore 90.3375 213.5161 moveto /colwidth 423.62 def gsave font0 setfont opsbef 0 {font0 setfont} put (The notes are keyed to the programs by the numbers in parentheses to the ) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (right) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( of some lines, e.g.,) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 201.4712 moveto gsave /Times-BoldItalic findfont 10.0375 scalefont /font19 exch def font0 setfont opsbef 0 {font0 setfont} put (as ``) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (--) 1 buf opsaft 1 null put font19 setfont opsbef 2 {font19 setfont} put (\050note 3.1\051) 2 buf opsaft 2 null put font0 setfont opsbef 3 {font0 setfont} put (''. You will also find references to lines in the program from the notes, as, e.g., ``) 3 buf opsaft 3 null put font19 setfont opsbef 4 {font19 setfont} put ([see) 4 buf opsaft 4 null put mixedjustify grestore 90.3375 189.4261 moveto gsave font19 setfont opsbef 0 {font19 setfont} put (line 1.1]) 0 buf opsaft 0 null put font0 setfont opsbef 1 {font0 setfont} put (''. The corresponding lines in the programs are marked as, e.g., ) 1 buf opsaft 1 null put font19 setfont opsbef 2 {font19 setfont} put ([1.1]) 2 buf opsaft 2 null put font0 setfont opsbef 3 {font0 setfont} put (. When Cedar) 3 buf opsaft 3 null put mixedjustify grestore 90.3375 177.3811 moveto gsave font0 setfont (identifiers appear in the notes, they are displayed in italics to make reading easier; e.g.,) justify grestore 90.3375 165.3361 moveto gsave font1 setfont opsbef 0 {font1 setfont} put (ReverseName) 0 buf opsaft 0 null put font0 setfont opsbef 1 {font0 setfont} put (, ) 1 buf opsaft 1 null put font1 setfont opsbef 2 {font1 setfont} put (CommandProc) 2 buf opsaft 2 null put font0 setfont opsbef 3 {font0 setfont} put (. You should read this example for understanding and use the notes) 3 buf opsaft 3 null put mixedjustify grestore 90.3375 153.2911 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (as references, rather than the other way around. Consult the on-line documentation ) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (Cedar) 1 buf opsaft 1 null put mixedjustify grestore 90.3375 141.2461 moveto gsave font1 setfont opsbef 0 {font1 setfont} put (Language Overview) 0 buf opsaft 0 null put font0 setfont opsbef 1 {font0 setfont} put ( <57>, which details, somewhat cryptically and hastily, the additional changes) 1 buf opsaft 1 null put mixedjustify grestore 90.3375 129.2011 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (that produced Cedar. Finally, see ) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (Language Change Summary) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( <58> for the latest word on the) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 117.1561 moveto gsave font0 setfont (subtle changes made to the Cedar language definition intended to foster portability of code from) justify grestore 90.3375 105.1111 moveto font0 setfont (one target architecture to another. ) show 110.4125 85.67937 moveto 105.3938 72.27012 moveto font1 setfont (ReverseName.mesa) show 31.79435 0.0 rmoveto 37.64056 0.0 rmoveto 37.64056 0.0 rmoveto 37.64056 0.0 rmoveto 37.64056 0.0 rmoveto 37.64056 0.0 rmoveto (--) show font19 setfont (\050note 1.1\051) show 27.88755 0.0 rmoveto grestore grestore % end page 24 showpage %%page 25 gsave 2834.646 2834.646 scale gsave 0.0254 dup matrix scale concat 0.013837 dup matrix scale concat 282.1476 38.135 moveto font3 setfont (CEDAR 10.1 ) show font0 setfont 514.3934 746.79 moveto (25) show 120.45 684.9593 moveto font1 setfont (Copyright ) show /font2 findfont setfont (\251) show font1 setfont ( 1990 by Xerox Corporation. All rights reserved.) show 120.45 672.383 moveto font1 setfont (Brian Oki, May 7, 1990 8:23 pm PDT) show 105.3938 659.8068 moveto 105.3938 647.2308 moveto font3 setfont (DIRECTORY) show 120.45 634.6545 moveto font14 setfont (Commander ) show font3 setfont (USING) show font14 setfont ( [CommandProc, Register],) show 120.45 622.0785 moveto font3 setfont (IO) show font14 setfont ( ) show font3 setfont (USING) show font14 setfont ( [PutF, rope, ) show font3 setfont (STREAM) show font14 setfont (],) show 120.45 609.5024 moveto font14 setfont (Rope ) show font3 setfont (USING) show font14 setfont ( [Cat, Equal, Fetch, Find, FromChar, Length, ) show font3 setfont (ROPE) show font14 setfont (, Substr],) show 120.45 596.9262 moveto font14 setfont (UserCredentials ) show font3 setfont (USING) show font14 setfont ( [Get];) show 120.45 584.35 moveto 105.3938 571.7742 moveto font12 setfont (ReverseName) show font14 setfont (: ) show font3 setfont (CEDAR) show font14 setfont ( ) show font3 setfont (PROGRAM) show 120.45 559.1978 moveto font3 setfont (IMPORTS) show font14 setfont ( Commander, ) show font3 setfont (IO) show font14 setfont (, Rope, UserCredentials) show 120.45 546.6216 moveto font14 setfont (~ ) show font3 setfont (BEGIN ) show 36.29867 0.0 rmoveto ( --) show font19 setfont (\050note 1.3\051) show 135.5063 534.0455 moveto 120.45 521.4694 moveto font3 setfont (ROPE) show font14 setfont (: ) show font3 setfont (TYPE) show font14 setfont ( = Rope.) show font3 setfont (ROPE) show font14 setfont (; ) show 21.8328 0.0 rmoveto 37.64056 0.0 rmoveto 37.64056 0.0 rmoveto ( ) show font1 setfont (--) show font19 setfont (\050note 1.4\051) show font14 setfont ( ) show font12 setfont 7.812637 0.0 rmoveto 120.45 508.8936 moveto 120.45 496.3175 moveto font12 setfont (ReverseName) show font14 setfont (: Commander.CommandProc ~ {) show 165.6187 484.2723 moveto font14 setfont (--) show font19 setfont (\050note 1.5\051) show 135.5063 471.6962 moveto /Times-Italic findfont 8.029999 scalefont /font20 exch def font20 setfont ([cmd: Commander.Handle] RETURNS [result: REF ANY ← NIL, msg: ROPE ← NIL]) show 150.5625 459.12 moveto 150.5625 446.5438 moveto font1 setfont (Reverses the user's login name and prints it out in the CommandTool window.) show 150.5625 433.9677 moveto font14 setfont (userName: ) show font3 setfont (ROPE) show font14 setfont ( ← UserCredentials.Get[].name; ) show 7.569673 0.0 rmoveto 37.64056 0.0 rmoveto ( --) show font19 setfont (\050note 1.6\051) show font14 setfont ( ) show 150.5625 421.3917 moveto font14 setfont (out: ) show font3 setfont (IO) show font14 setfont (.) show font3 setfont (STREAM) show font14 setfont ( ← cmd.out; ) show font1 setfont (-- cmd is an arg to ReverseName.) show font19 setfont 4.697098 0.0 rmoveto 150.5625 408.8156 moveto font14 setfont (backwordsName: ) show font3 setfont (ROPE) show font14 setfont ( ← ) show font3 setfont (NIL) show font14 setfont (;) show 150.5625 396.2394 moveto font1 setfont (Remove anything after the period in user name, e.g., \042.PA\042, and check for the name) show 156.5625 384.1944 moveto font1 setfont (Weiser.) show 150.5625 371.6184 moveto font14 setfont (dotPos: ) show font3 setfont (INT) show font14 setfont ( = userName.Find[\042.\042]; ) show 21.668 0.0 rmoveto 37.64056 0.0 rmoveto 37.64056 0.0 rmoveto ( --) show font19 setfont (\050note 1.7\051) show font14 setfont ( ) show 150.5625 359.0422 moveto font3 setfont (IF) show font14 setfont ( dotPos # -1 ) show font3 setfont (THEN) show 165.6187 346.4662 moveto font14 setfont (userName ← userName.Substr[0, dotPos];) show 150.5625 333.8901 moveto font3 setfont (IF) show font14 setfont ( userName.Equal[s2: \042Weiser\042, case: ) show font3 setfont (FALSE) show font14 setfont (] ) show font3 setfont (THEN) show 165.6187 321.314 moveto font14 setfont (out.PutF[\042Hi, Mark!\134n\042];) show 150.5625 308.7379 moveto font1 setfont (Now reverse the name and concatenate them in reverse order.) show 150.5625 296.1618 moveto font3 setfont (FOR) show font14 setfont ( i: ) show font3 setfont (INT) show font14 setfont ( ) show font3 setfont (DECREASING) show font14 setfont ( ) show font3 setfont (IN) show font14 setfont ( [0..userName.Length[]\051 ) show font3 setfont (DO) show 165.6187 283.5857 moveto font14 setfont (--) show font19 setfont ([1.1] \050note 1.8\051) show 165.6187 271.0095 moveto font14 setfont (backwordsName ← backwordsName.Cat[Rope.FromChar[userName.Fetch[i]]]) show 165.6187 258.4334 moveto font3 setfont (ENDLOOP) show font14 setfont (;) show 150.5625 245.8573 moveto font14 setfont (out.PutF[\042Your user name backwards is: %g.\134n\042, ) show font3 setfont (IO) show font14 setfont (.rope[backwordsName]]; --) show font19 setfont (\050Note) show 195.7312 233.8123 moveto font19 setfont (1.9\051) show 150.5625 221.2362 moveto font14 setfont (};) show 150.5625 208.66 moveto 135.5063 196.084 moveto font1 setfont (Start code registers a ReverseName command, which must be invoked for this program to) show 141.5063 184.0389 moveto font1 setfont (do anything:) show 135.5063 171.4629 moveto 135.5063 158.8868 moveto font14 setfont (--) show font19 setfont (\050note 1.16\051) show 135.5063 146.3107 moveto font14 setfont (Commander.Register[key: \042ReverseName\042, proc: ReverseName, doc: \042Reverses your) show 180.675 134.2656 moveto font14 setfont (user name\042];) show 105.3938 121.6895 moveto font3 setfont (END) show font14 setfont (.) show 90.3375 96.89140 moveto font1 setfont (Program notes) show 120.45 72.27026 moveto /colwidth 393.5075 def gsave font0 setfont opsbef 0 {font0 setfont} put (\0501.1\051) 0 buf opsaft 0 null put /totwidth /totwidth try 10.6766 add def opsbef 1 {10.6766 0.0 rmoveto font0 setfont} put (These stylized comments give the name of the module, and who last edited it. See) 1 buf opsaft 1 null put mixedjustify grestore grestore grestore % end page 25 showpage %%page 26 gsave 2834.646 2834.646 scale gsave 0.0254 dup matrix scale concat 0.013837 dup matrix scale concat 282.1476 38.135 moveto font3 setfont (CEDAR 10.1 ) show font0 setfont 514.2512 746.79 moveto (26) show 150.5625 684.9593 moveto /colwidth 363.395 def gsave font0 setfont (the document CedarProgramStyle.tioga for a list of the stylistic conventions) justify grestore 150.5625 672.914 moveto font0 setfont (recommended for Cedar programmers.) show 120.45 658.383 moveto /colwidth 393.5075 def gsave font0 setfont opsbef 0 {font0 setfont} put (\0501.3\051) 0 buf opsaft 0 null put font1 setfont /totwidth /totwidth try 10.6766 add def opsbef 1 {font1 setfont 10.6766 0.0 rmoveto} put (ReverseName) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( imports four interfaces, ) 2 buf opsaft 2 null put font1 setfont opsbef 3 {font1 setfont} put (Commander, IO) 3 buf opsaft 3 null put font0 setfont opsbef 4 {font0 setfont} put (, ) 4 buf opsaft 4 null put font1 setfont opsbef 5 {font1 setfont} put (Rope) 5 buf opsaft 5 null put font0 setfont opsbef 6 {font0 setfont} put (, ) 6 buf opsaft 6 null put font1 setfont opsbef 7 {font1 setfont} put (and UserCredentials) 7 buf opsaft 7 null put mixedjustify grestore 150.5625 646.3379 moveto /colwidth 363.395 def gsave font0 setfont (because it needs to call procedures defined in those interfaces. You've seen the) justify grestore 150.5625 634.2926 moveto gsave font0 setfont (Commander's interactive face before. IO provides abstract STREAM operations,) justify grestore 150.5625 622.2479 moveto /colwidth 363.395 def gsave font0 setfont (and Rope provides immutable string values with lots of operations for creating new) justify grestore 150.5625 610.2029 moveto gsave font0 setfont (ones out of old ones. The student of Cedar would do well to study Rope.mesa,) justify grestore 150.5625 598.1580 moveto font0 setfont (RopeImpl.mesa, IO.mesa and IOImpl.mesa.) show 120.45 583.627 moveto /colwidth 393.5077 def gsave font0 setfont opsbef 0 {font0 setfont} put (\0501.4\051) 0 buf opsaft 0 null put /totwidth /totwidth try 10.6766 add def opsbef 1 {10.6766 0.0 rmoveto font0 setfont} put (Since ) 1 buf opsaft 1 null put font3 setfont opsbef 2 {font3 setfont} put (ROPE) 2 buf opsaft 2 null put font0 setfont opsbef 3 {font0 setfont} put (s are so heavily used in the program, an unqualified version of the type) 3 buf opsaft 3 null put mixedjustify grestore 150.5625 571.5818 moveto /colwidth 363.395 def gsave font0 setfont opsbef 0 {font0 setfont} put (name is generated simply by equating it with the type in the ) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (Rope) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( interface. This is a) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 559.5366 moveto gsave font0 setfont (commonly used means for making one or a small set of names from interfaces) justify grestore 150.5625 547.4918 moveto font0 setfont (available as simple identifiers in a module.) show 120.45 532.9604 moveto /colwidth 393.5077 def gsave font0 setfont opsbef 0 {font0 setfont} put (\0501.5\051) 0 buf opsaft 0 null put /totwidth /totwidth try 10.6766 add def opsbef 1 {10.6766 0.0 rmoveto font0 setfont} put (The argument and returns lists given here as comments show the meanging of the) 1 buf opsaft 1 null put mixedjustify grestore 150.5625 520.9155 moveto /colwidth 363.395 def gsave font0 setfont opsbef 0 {font0 setfont} put (type ) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (Commander.CommandProc) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (; they were inserted semi-automatically using) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 508.8706 moveto gsave font0 setfont (Tioga's ``Expand Abbreviation'' command to assist in reading the program.) justify grestore 150.5625 496.8256 moveto gsave font1 setfont opsbef 0 {font1 setfont} put (ReverseName) 0 buf opsaft 0 null put font0 setfont opsbef 1 {font0 setfont} put ( has this type so that it can be registered with the ) 1 buf opsaft 1 null put font1 setfont opsbef 2 {font1 setfont} put (Commander) 2 buf opsaft 2 null put font0 setfont opsbef 3 {font0 setfont} put ( as a) 3 buf opsaft 3 null put mixedjustify grestore 150.5625 484.7804 moveto font0 setfont (command that a user can invoke by typing a simple identifier \050see note 1.18\051) show font1 setfont (.) show 120.45 470.2494 moveto font0 setfont (\0501.6\051) show font1 setfont 10.6766 0.0 rmoveto (UserCredentials.Get) show font0 setfont ( has the type) show 155.5812 457.4864 moveto font3 setfont 10.03749 0.0 rmoveto (PROC) show font14 setfont ( ) show font3 setfont (RETURNS) show font14 setfont ( [name, password: ) show font3 setfont (ROPE) show font14 setfont (]) show 120.45 442.955 moveto /colwidth 393.5077 def gsave font1 setfont opsbef 0 {font1 setfont 30.1125 0.0 rmoveto} put (userName) 0 buf opsaft 0 null put font0 setfont opsbef 1 {font0 setfont} put ( is initialized to the value of the ``) 1 buf opsaft 1 null put font1 setfont opsbef 2 {font1 setfont} put (name) 2 buf opsaft 2 null put font0 setfont opsbef 3 {font0 setfont} put ('' return value from) 3 buf opsaft 3 null put mixedjustify grestore 150.5625 430.9100 moveto font1 setfont (UserCredentials.Get) show font0 setfont ( by qualifying the call with ``.) show font1 setfont (name) show font0 setfont (''.) show 120.45 416.3788 moveto font0 setfont (\0501.7\051) show 10.6766 0.0 rmoveto (The notation) show 155.5812 403.6157 moveto font1 setfont 10.03749 0.0 rmoveto (userName.Find) show font14 setfont ([\042.\042]) show 120.45 389.0845 moveto /colwidth 393.5075 def gsave font0 setfont 30.1125 0.0 rmoveto (is interpreted by the compiler as follows: Look in the interface where the type of) justify grestore 150.5625 377.0394 moveto /colwidth 363.395 def gsave font1 setfont opsbef 0 {font1 setfont} put (userName) 0 buf opsaft 0 null put font0 setfont opsbef 1 {font0 setfont} put ( is defined \050) 1 buf opsaft 1 null put font1 setfont opsbef 2 {font1 setfont} put (Rope) 2 buf opsaft 2 null put font0 setfont opsbef 3 {font0 setfont} put ( in this case\051 and look for the procedure ) 3 buf opsaft 3 null put font1 setfont opsbef 4 {font1 setfont} put (Find,) 4 buf opsaft 4 null put font0 setfont opsbef 5 {font0 setfont} put ( whose first) 5 buf opsaft 5 null put mixedjustify grestore 150.5625 364.9946 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (parameter should be a ) 0 buf opsaft 0 null put font3 setfont opsbef 1 {font3 setfont} put (ROPE) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (. Generate code to call that procedure, inserting) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 352.9495 moveto gsave font1 setfont opsbef 0 {font1 setfont} put (userName) 0 buf opsaft 0 null put font0 setfont opsbef 1 {font0 setfont} put ( at the head of its argument list. Thus ) 1 buf opsaft 1 null put font1 setfont opsbef 2 {font1 setfont} put (userName.Find) 2 buf opsaft 2 null put font0 setfont opsbef 3 {font0 setfont} put ([\042.\042] is an alternate) 3 buf opsaft 3 null put mixedjustify grestore 150.5625 340.9045 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (way of saying ) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (Rope.) 1 buf opsaft 1 null put opsbef 2 {font1 setfont} put (Find) 2 buf opsaft 2 null put font0 setfont opsbef 3 {font0 setfont} put ([) 3 buf opsaft 3 null put font1 setfont opsbef 4 {font1 setfont} put (userName) 4 buf opsaft 4 null put font0 setfont opsbef 5 {font0 setfont} put (, \042.\042]. The ) 5 buf opsaft 5 null put font1 setfont opsbef 6 {font1 setfont} put (userName.Find) 6 buf opsaft 6 null put font0 setfont opsbef 7 {font0 setfont} put ( form is called ``object-) 7 buf opsaft 7 null put mixedjustify grestore 150.5625 328.8596 moveto font0 setfont (style notation'', and the ) show font1 setfont (Rope.) show (Find) show font0 setfont ( form is called ``procedure-oriented notation''.) show 120.45 314.3284 moveto /colwidth 393.5077 def gsave font0 setfont opsbef 0 {font0 setfont 30.1125 0.0 rmoveto} put (Note also that ) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (dotPos) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( is supposed to be constant over the scope of its declaration, so) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 302.2833 moveto /colwidth 363.395 def gsave font0 setfont (it is initialized with ``='' \050as opposed to ``←''\051 to prevent any subsequent assignment) justify grestore 150.5625 290.2383 moveto font0 setfont (to it.) show 120.45 275.707 moveto /colwidth 393.5077 def gsave font0 setfont 30.1125 0.0 rmoveto (This ``object-style notation'' might be handy for some well known data types.) justify grestore 150.5625 263.6622 moveto /colwidth 363.395 def gsave font0 setfont (However usage of ``object-style notation'' for your own data types makes the) justify grestore 150.5625 251.617 moveto font0 setfont (program nearly unreadable for casual readers and is strongly discouraged.) show 120.45 237.086 moveto /colwidth 393.5075 def gsave font0 setfont opsbef 0 {font0 setfont} put (\0501.8\051) 0 buf opsaft 0 null put font1 setfont /totwidth /totwidth try 10.6766 add def opsbef 1 {font1 setfont 10.6766 0.0 rmoveto} put (Find) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (, ) 2 buf opsaft 2 null put font1 setfont opsbef 3 {font1 setfont} put (Fetch) 3 buf opsaft 3 null put font0 setfont opsbef 4 {font0 setfont} put (, ) 4 buf opsaft 4 null put font1 setfont opsbef 5 {font1 setfont} put (Equal) 5 buf opsaft 5 null put font0 setfont opsbef 6 {font0 setfont} put (, ) 6 buf opsaft 6 null put font1 setfont opsbef 7 {font1 setfont} put (Substr) 7 buf opsaft 7 null put font0 setfont opsbef 8 {font0 setfont} put (, ) 8 buf opsaft 8 null put font1 setfont opsbef 9 {font1 setfont} put (Cat) 9 buf opsaft 9 null put font0 setfont opsbef 10 {font0 setfont} put (, and ) 10 buf opsaft 10 null put font1 setfont opsbef 11 {font1 setfont} put (FromChar) 11 buf opsaft 11 null put font0 setfont opsbef 12 {font0 setfont} put ( are all procedures from the ) 12 buf opsaft 12 null put font1 setfont opsbef 13 {font1 setfont} put (Rope) 13 buf opsaft 13 null put mixedjustify grestore 150.5625 225.0408 moveto /colwidth 363.395 def gsave font0 setfont (interface. The program uses object-style notation for those calls whose first) justify grestore 150.5625 212.9959 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (argument is a nameable object, e.g., ) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (userName) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (, and procedure-oriented notation) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 200.9509 moveto gsave font0 setfont (otherwise. [line 1.1] is a good example of both. Here it is again, spread out to exhibit) justify grestore 150.5625 188.9059 moveto font0 setfont (the two forms:) show 155.5812 176.1428 moveto 170.6375 163.3797 moveto font14 setfont (backwordsName ←) show 185.6937 150.6167 moveto font14 setfont (backwordsName.Cat[) show 20.53561 0.0 rmoveto 37.64056 0.0 rmoveto font1 setfont (-- object-style notation) show 200.75 137.8536 moveto font14 setfont (Rope.FromChar[) show 38.88302 0.0 rmoveto ( ) show font1 setfont (-- procedure-oriented notation) show 215.8062 125.0906 moveto font14 setfont (userName.Fetch[i]) show 33.40534 0.0 rmoveto ( ) show font1 setfont (-- object-style notation) show 215.8062 112.3275 moveto font14 setfont (]) show 200.75 99.56446 moveto font14 setfont (];) show 200.75 86.80142 moveto 120.45 72.27020 moveto /colwidth 393.5075 def gsave font0 setfont opsbef 0 {font0 setfont} put (\0501.9\051) 0 buf opsaft 0 null put font1 setfont /totwidth /totwidth try 10.6766 add def opsbef 1 {font1 setfont 10.6766 0.0 rmoveto} put (IO.PutF) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( is the standard way of providing formatted output to a stream \050much like) 2 buf opsaft 2 null put mixedjustify grestore grestore grestore % end page 26 showpage %%page 27 gsave 2834.646 2834.646 scale gsave 0.0254 dup matrix scale concat 0.013837 dup matrix scale concat 282.1476 38.135 moveto font3 setfont (CEDAR 10.1 ) show font0 setfont 514.3934 746.79 moveto (27) show 150.5625 684.9593 moveto /colwidth 363.395 def gsave font3 setfont opsbef 0 {font3 setfont} put (FORTRAN) 0 buf opsaft 0 null put font0 setfont opsbef 1 {font0 setfont} put ( output with ) 1 buf opsaft 1 null put font3 setfont opsbef 2 {font3 setfont} put (FORMAT) 2 buf opsaft 2 null put font0 setfont opsbef 3 {font0 setfont} put (\051. Its first argument is an ) 3 buf opsaft 3 null put font3 setfont opsbef 4 {font3 setfont} put (IO) 4 buf opsaft 4 null put opsbef 5 {font3 setfont} put (.STREAM) 5 buf opsaft 5 null put font0 setfont opsbef 6 {font0 setfont} put (. The second is a) 6 buf opsaft 6 null put mixedjustify grestore 150.5625 672.914 moveto gsave font3 setfont opsbef 0 {font3 setfont} put (ROPE) 0 buf opsaft 0 null put font0 setfont opsbef 1 {font0 setfont} put ( with embedded Fortran-like formatting commands where variables are to be) 1 buf opsaft 1 null put mixedjustify grestore 150.5625 660.8688 moveto gsave font0 setfont (output. The ``%g'' format is the most useful one; it will handle any sort of variable:) justify grestore 150.5625 648.8241 moveto gsave font3 setfont opsbef 0 {font3 setfont} put (INTEGER) 0 buf opsaft 0 null put font0 setfont opsbef 1 {font0 setfont} put (, ) 1 buf opsaft 1 null put font3 setfont opsbef 2 {font3 setfont} put (CHARACTER) 2 buf opsaft 2 null put font0 setfont opsbef 3 {font0 setfont} put (, ) 3 buf opsaft 3 null put font3 setfont opsbef 4 {font3 setfont} put (ROPE) 4 buf opsaft 4 null put font0 setfont opsbef 5 {font0 setfont} put (, etc., in a general default format. The third through) 5 buf opsaft 5 null put mixedjustify grestore 150.5625 636.779 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (last arguments are values to be output, surrounded by calls to inline ) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (IO) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( procedures) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 624.7342 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (that tell ) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (PutF) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( the type of the argument: ) 2 buf opsaft 2 null put font1 setfont opsbef 3 {font1 setfont} put (int) 3 buf opsaft 3 null put font0 setfont opsbef 4 {font0 setfont} put ([) 4 buf opsaft 4 null put font1 setfont opsbef 5 {font1 setfont} put (answer) 5 buf opsaft 5 null put font0 setfont opsbef 6 {font0 setfont} put (], for example. For details, see the) 6 buf opsaft 6 null put mixedjustify grestore 150.5625 612.6892 moveto font0 setfont (description of ) show font1 setfont (IO) show font0 setfont ( in IODoc.tioga.) show 120.45 597.4706 moveto /colwidth 393.5075 def gsave font0 setfont opsbef 0 {font0 setfont} put (\0501.16\051) 0 buf opsaft 0 null put /totwidth /totwidth try 5.657868 add def opsbef 1 {5.657868 0.0 rmoveto font0 setfont} put (Here, at the end of the module, is the code that is executed when the module is) 1 buf opsaft 1 null put mixedjustify grestore 150.5625 585.4255 moveto /colwidth 363.3949 def gsave font0 setfont (started. You can create an instance of a module and start it using the \042Run\042) justify grestore 150.5625 573.3804 moveto /colwidth 363.395 def gsave font0 setfont opsbef 0 {font0 setfont} put (command in ) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (Commander) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (. The loader creates instances of programs when loading) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 561.3354 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (configurations. If a component of a configuration is not ) 0 buf opsaft 0 null put font3 setfont opsbef 1 {font3 setfont} put (START) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (ed explicitly, then it) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 549.2903 moveto gsave font0 setfont (will be started automatically \050as the result of a trap\051 the first time one of its) justify grestore 150.5625 537.2453 moveto gsave font0 setfont (procedures is called. See the Mesa Language Reference Manual for more) justify grestore 150.5625 525.2004 moveto font0 setfont (information.) show 120.45 509.9818 moveto /colwidth 393.5075 def gsave font0 setfont 30.1125 0.0 rmoveto (In this case, the start code for the module consists of one call on the procedure) justify grestore 150.5625 497.9367 moveto /colwidth 363.395 def gsave font1 setfont opsbef 0 {font1 setfont} put (Commander.Register) 0 buf opsaft 0 null put font0 setfont opsbef 1 {font0 setfont} put (, which registers the command ``ReverseName'' with the) 1 buf opsaft 1 null put mixedjustify grestore 150.5625 485.8919 moveto /colwidth 363.395 def gsave font0 setfont opsbef 0 {font0 setfont} put (Commander, so that you can invoke the procedures ) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (ReverseName) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( by typing its) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 473.8467 moveto font0 setfont (command name.) show 120.45 458.6279 moveto /colwidth 393.5077 def gsave font0 setfont 30.1125 0.0 rmoveto (These procedure calls also illustrate the ability to specify the association between a) justify grestore 150.5625 446.5828 moveto /colwidth 363.395 def gsave font0 setfont (procedure's formal parameters and the arguments using keyword notation.) justify grestore 150.5625 434.5378 moveto gsave font0 setfont (Generally, keyword notation is preferred over positional for all but simple one- or) justify grestore 150.5625 422.4928 moveto gsave font0 setfont (two-argument calls, and it is definitely better for two-argument calls if the types of) justify grestore 150.5625 410.4477 moveto font0 setfont (the arguments are the same. Either) show 155.5812 396.6533 moveto font14 setfont 10.03749 0.0 rmoveto (Copy[to: arg1, from: arg2]) show 120.45 381.4348 moveto font0 setfont 30.1125 0.0 rmoveto (or) show 155.5812 367.6404 moveto font14 setfont 10.03749 0.0 rmoveto (Copy[from: arg2, to: arg1]) show 120.45 352.4216 moveto font1 setfont 30.1125 0.0 rmoveto font0 setfont (is preferable to) show 155.5812 338.6271 moveto font14 setfont 10.03749 0.0 rmoveto (Copy[arg1, arg2]) show 90.3375 312.2045 moveto font12 setfont (4.7 Creating programs using Tioga) show 110.4125 285.782 moveto 110.4125 265.9651 moveto /colwidth 403.545 def gsave font0 setfont (This section shows you the rudiments of using Tioga to create Cedar programs, such as the) justify grestore 90.3375 253.9202 moveto /colwidth 423.62 def gsave font0 setfont (ones you've seen in the previous section. In fact, we'll reconstruct the framework of the) justify grestore 90.3375 241.8752 moveto font0 setfont (ReverseName.mesa Cedar module.) show 110.4125 222.0582 moveto /colwidth 403.545 def gsave font0 setfont (A Cedar module is usually one of three kinds: A definitions module, which contains type) justify grestore 90.3375 210.0133 moveto /colwidth 423.62 def gsave font0 setfont (definitions and assorted other things needed by the compiler to type-check uses of the module; an) justify grestore 90.3375 197.9682 moveto gsave font0 setfont (implementation module, which typically implements some interface, and is said, in CSL parlance) justify grestore 90.3375 185.9234 moveto gsave font0 setfont (to ``export'' that interface; and configuration modules, which bind together object files into one,) justify grestore 90.3375 173.8784 moveto gsave font0 setfont (loadable file. Not all implementation modules need implement an interface; in fact,) justify grestore 90.3375 161.8333 moveto font0 setfont (ReverseName.mesa stands alone.) show 110.4125 142.0164 moveto font0 setfont (Our module consists of three parts:) show 120.45 126.7977 moveto /colwidth 393.5075 def gsave font0 setfont opsbef 0 {font0 setfont} put (1. ) 0 buf opsaft 0 null put /totwidth /totwidth try 20.09845 add def opsbef 1 {20.09845 0.0 rmoveto font0 setfont} put (Comment consisting of the module name, and the person who last changed the) 1 buf opsaft 1 null put mixedjustify grestore 150.5625 114.7527 moveto font0 setfont (module.) show 120.45 99.5339 moveto /colwidth 393.5077 def gsave font0 setfont opsbef 0 {font0 setfont} put (2. ) 0 buf opsaft 0 null put /totwidth /totwidth try 20.09845 add def font3 setfont opsbef 1 {20.09845 0.0 rmoveto font3 setfont} put (DIRECTORY) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (, which says what other modules are used by this one, and in particular,) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 87.48892 moveto font0 setfont (states explicitly ) show font1 setfont (what) show font0 setfont ( symbols or procedures are used.) show 120.45 72.27016 moveto font0 setfont (3.) show 22.60782 0.0 rmoveto (Module name together with ) show font3 setfont (IMPORTS) show font0 setfont ( and ) show font3 setfont (EXPORTS ) show font0 setfont (clauses.) show grestore grestore % end page 27 showpage %%page 28 gsave 2834.646 2834.646 scale gsave 0.0254 dup matrix scale concat 0.013837 dup matrix scale concat 282.1476 38.135 moveto font3 setfont (CEDAR 10.1 ) show font0 setfont 514.447 746.79 moveto (28) show 90.3375 684.9593 moveto font0 setfont (To construct a similar format, let's go through the following steps:) show 120.45 670.5161 moveto font0 setfont (1.) show 22.60782 0.0 rmoveto (Type the following to your Commander) show 155.5812 657.8847 moveto font12 setfont (%) show font14 setfont ( new ReverseName.mesa) show 155.5812 645.2543 moveto font14 setfont (/tilde/boki/InternCzar/SimpleExample/ReverseName.mesa already exists! Use) show 161.5812 633.209 moveto font14 setfont (the -d switch to create a new viewer anyway.) show 155.5812 620.5780 moveto font14 setfont (Oops! That name already exists in the current directory, so let's try another name,) show 161.5812 608.5332 moveto font14 setfont (say HelloWorld.mesa) show 155.5812 595.9021 moveto font12 setfont (%) show font14 setfont ( new HelloWorld.mesa) show 155.5812 583.2712 moveto font14 setfont (Created Viewer: /tilde/boki/InternCzar/SimpleExample/HelloWorld.mesa) show 120.45 568.8281 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (2.) 0 buf opsaft 0 null put /totwidth /totwidth try 22.60782 add def opsbef 1 {22.60782 0.0 rmoveto font0 setfont} put (A new, empty viewer should appear on your screen. Move the mouse cursor into) 1 buf opsaft 1 null put mixedjustify grestore 150.5625 556.7832 moveto /colwidth 363.395 def gsave font0 setfont opsbef 0 {font0 setfont} put (that window. Type the name ``HelloWorld.mesa''. ) 0 buf opsaft 0 null put font3 setfont opsbef 1 {font3 setfont} put (MIDDLE) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (-click twice on that) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 544.738 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (name to select the name, and type ) 0 buf opsaft 0 null put font3 setfont opsbef 1 {font3 setfont} put (CTRL) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (-\134 to turn it into a ) 2 buf opsaft 2 null put font1 setfont opsbef 3 {font1 setfont} put (comment) 3 buf opsaft 3 null put font0 setfont opsbef 4 {font0 setfont} put ( node, in italics.) 4 buf opsaft 4 null put mixedjustify grestore 150.5625 532.6934 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (Type ) 0 buf opsaft 0 null put font3 setfont opsbef 1 {font3 setfont} put (CTRL) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (-) 2 buf opsaft 2 null put font3 setfont opsbef 3 {font3 setfont} put (RETURN) 3 buf opsaft 3 null put font0 setfont opsbef 4 {font0 setfont} put ( twice \050to create new nodes\051 and ) 4 buf opsaft 4 null put font3 setfont opsbef 5 {font3 setfont} put (CTRL) 5 buf opsaft 5 null put font0 setfont opsbef 6 {font0 setfont} put (-) 6 buf opsaft 6 null put font3 setfont opsbef 7 {font3 setfont} put (SHIFT) 7 buf opsaft 7 null put font0 setfont opsbef 8 {font0 setfont} put (-\134 to undo the) 8 buf opsaft 8 null put mixedjustify grestore 150.5625 520.6481 moveto font0 setfont (comment mode.) show 120.45 506.2051 moveto font0 setfont (3. ) show 20.09845 0.0 rmoveto (Type ``dir'' \050without\051 italics in the viewer.) show 120.45 491.7619 moveto font0 setfont (4.) show 22.60782 0.0 rmoveto (Type ) show font3 setfont (CTRL) show font0 setfont (-e. ``dir'' will be magically replaced with the following:) show 150.5625 477.3188 moveto font3 setfont (DIRECTORY) show 165.6187 464.6879 moveto font7 setfont gsave currentpoint translate 0.0 setgray 1.00375 -1.254688 moveto 1.00375 8.280937 lineto 6.273437 3.513125 lineto fill grestore 7.026246 0.0 rmoveto font14 setfont (Interface) show gsave 7.026246 0.0 rmoveto currentpoint translate -1.0 1.0 matrix scale concat 0.0 setgray 1.00375 -1.254688 moveto 1.00375 8.280937 lineto 6.273437 3.513125 lineto fill grestore 7.026246 0.0 rmoveto ( ) show font3 setfont (USING) show font14 setfont ( [) show gsave currentpoint translate 0.0 setgray 1.00375 -1.254688 moveto 1.00375 8.280937 lineto 6.273437 3.513125 lineto fill grestore 7.026246 0.0 rmoveto (Item) show gsave 7.026246 0.0 rmoveto currentpoint translate -1.0 1.0 matrix scale concat 0.0 setgray 1.00375 -1.254688 moveto 1.00375 8.280937 lineto 6.273437 3.513125 lineto fill grestore 7.026246 0.0 rmoveto (],) show 165.6187 452.0568 moveto font14 setfont gsave currentpoint translate 0.0 setgray 1.00375 -1.254688 moveto 1.00375 8.280937 lineto 6.273437 3.513125 lineto fill grestore 7.026246 0.0 rmoveto (Interface) show gsave 7.026246 0.0 rmoveto currentpoint translate -1.0 1.0 matrix scale concat 0.0 setgray 1.00375 -1.254688 moveto 1.00375 8.280937 lineto 6.273437 3.513125 lineto fill grestore 7.026246 0.0 rmoveto ( ) show font3 setfont (USING) show font14 setfont ( [) show gsave currentpoint translate 0.0 setgray 1.00375 -1.254688 moveto 1.00375 8.280937 lineto 6.273437 3.513125 lineto fill grestore 7.026246 0.0 rmoveto (Item) show gsave 7.026246 0.0 rmoveto currentpoint translate -1.0 1.0 matrix scale concat 0.0 setgray 1.00375 -1.254688 moveto 1.00375 8.280937 lineto 6.273437 3.513125 lineto fill grestore 7.026246 0.0 rmoveto (];) show 140.525 433.4035 moveto /colwidth 373.4324 def gsave font0 setfont opsbef 0 {font0 setfont} put (This lists the interfaces that this program uses. ) 0 buf opsaft 0 null put font3 setfont opsbef 1 {font3 setfont} put (CTRL) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (-e is the abbreviation expander) 2 buf opsaft 2 null put mixedjustify grestore 120.45 421.3585 moveto /colwidth 393.5075 def gsave font0 setfont (command to help making coding and editing Cedar programs much easier. See) justify grestore 120.45 409.3134 moveto font0 setfont (/Cedar/EssentialStyles/cedar.abbreviations for a complete list.) show 120.45 394.8704 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (5.) 0 buf opsaft 0 null put /totwidth /totwidth try 22.60782 add def opsbef 1 {22.60782 0.0 rmoveto font0 setfont} put (Reposition the mouse cursor to the beginning, and hit the ) 1 buf opsaft 1 null put font3 setfont opsbef 2 {font3 setfont} put (NEXT) 2 buf opsaft 2 null put font0 setfont opsbef 3 {font0 setfont} put ( key. Type) 3 buf opsaft 3 null put mixedjustify grestore 150.5625 382.8252 moveto /colwidth 363.395 def gsave font0 setfont opsbef 0 {font0 setfont} put (``Commander'', hit the ) 0 buf opsaft 0 null put font3 setfont opsbef 1 {font3 setfont} put (NEXT) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( key again, and type ``CommandProc, Register''. Hit) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 370.7802 moveto gsave font3 setfont opsbef 0 {font3 setfont} put (NEXT) 0 buf opsaft 0 null put font0 setfont opsbef 1 {font0 setfont} put ( again and type ``IO''; hit ) 1 buf opsaft 1 null put font3 setfont opsbef 2 {font3 setfont} put (NEXT) 2 buf opsaft 2 null put font0 setfont opsbef 3 {font0 setfont} put (, and type ``PutRope''. Delete the semi-colon,) 3 buf opsaft 3 null put mixedjustify grestore 150.5625 358.7353 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (replace it with a comma, and type ) 0 buf opsaft 0 null put font3 setfont opsbef 1 {font3 setfont} put (CTRL) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (-) 2 buf opsaft 2 null put font3 setfont opsbef 3 {font3 setfont} put (RETURN) 3 buf opsaft 3 null put font0 setfont opsbef 4 {font0 setfont} put (. Now type ``Rope USING) 4 buf opsaft 4 null put mixedjustify grestore 150.5625 346.6902 moveto gsave font0 setfont ([ROPE];'' don't worry that it's not in small capitals; the prettyprinter will take care of) justify grestore 150.5625 334.6452 moveto font0 setfont (that.) show 120.45 320.202 moveto /colwidth 393.5075 def gsave font0 setfont opsbef 0 {font0 setfont} put (6.) 0 buf opsaft 0 null put /totwidth /totwidth try 22.60782 add def opsbef 1 {22.60782 0.0 rmoveto font0 setfont} put (Type ) 1 buf opsaft 1 null put font3 setfont opsbef 2 {font3 setfont} put (CTRL) 2 buf opsaft 2 null put font0 setfont opsbef 3 {font0 setfont} put (-) 3 buf opsaft 3 null put font3 setfont opsbef 4 {font3 setfont} put (RETURN) 4 buf opsaft 4 null put font0 setfont opsbef 5 {font0 setfont} put ( twice to create new nodes, followed by ) 5 buf opsaft 5 null put font3 setfont opsbef 6 {font3 setfont} put (CTRL) 6 buf opsaft 6 null put font0 setfont opsbef 7 {font0 setfont} put (-) 7 buf opsaft 7 null put font3 setfont opsbef 8 {font3 setfont} put (SHIFT) 8 buf opsaft 8 null put font0 setfont opsbef 9 {font0 setfont} put (-n to unnest) 9 buf opsaft 9 null put mixedjustify grestore 150.5625 308.157 moveto font0 setfont (the node. Now we're at the top level.) show 120.45 293.7139 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (7.) 0 buf opsaft 0 null put /totwidth /totwidth try 22.60782 add def opsbef 1 {22.60782 0.0 rmoveto font0 setfont} put (Type ``prog'' \050without quotes\051 to the viewer, and then type ) 1 buf opsaft 1 null put font3 setfont opsbef 2 {font3 setfont} put (CTRL) 2 buf opsaft 2 null put font0 setfont opsbef 3 {font0 setfont} put (-e. It replaces the) 3 buf opsaft 3 null put mixedjustify grestore 150.5625 281.6688 moveto font0 setfont (word prog with ) show 120.45 267.2258 moveto 135.5063 254.5946 moveto font14 setfont gsave currentpoint translate 0.0 setgray 1.00375 -1.254688 moveto 1.00375 8.280937 lineto 6.273437 3.513125 lineto fill grestore 7.026246 0.0 rmoveto font11 setfont (Name) show font14 setfont gsave 7.026246 0.0 rmoveto currentpoint translate -1.0 1.0 matrix scale concat 0.0 setgray 1.00375 -1.254688 moveto 1.00375 8.280937 lineto 6.273437 3.513125 lineto fill grestore 7.026246 0.0 rmoveto (: ) show font3 setfont (CEDAR PROGRAM) show 150.5625 241.9638 moveto font3 setfont (IMPORTS) show font14 setfont ( ) show gsave currentpoint translate 0.0 setgray 1.00375 -1.254688 moveto 1.00375 8.280937 lineto 6.273437 3.513125 lineto fill grestore 7.026246 0.0 rmoveto (ImportsList) show gsave 7.026246 0.0 rmoveto currentpoint translate -1.0 1.0 matrix scale concat 0.0 setgray 1.00375 -1.254688 moveto 1.00375 8.280937 lineto 6.273437 3.513125 lineto fill grestore 7.026246 0.0 rmoveto 150.5625 229.3328 moveto font3 setfont (EXPORTS) show font14 setfont ( ) show gsave currentpoint translate 0.0 setgray 1.00375 -1.254688 moveto 1.00375 8.280937 lineto 6.273437 3.513125 lineto fill grestore 7.026246 0.0 rmoveto (ExportsList) show gsave 7.026246 0.0 rmoveto currentpoint translate -1.0 1.0 matrix scale concat 0.0 setgray 1.00375 -1.254688 moveto 1.00375 8.280937 lineto 6.273437 3.513125 lineto fill grestore 7.026246 0.0 rmoveto 135.5063 216.7017 moveto font14 setfont (~ ) show font3 setfont (BEGIN) show 150.5625 204.0708 moveto 150.5625 191.4399 moveto font14 setfont gsave currentpoint translate 0.0 setgray 1.00375 -1.254688 moveto 1.00375 8.280937 lineto 6.273437 3.513125 lineto fill grestore 7.026246 0.0 rmoveto (Body) show gsave 7.026246 0.0 rmoveto currentpoint translate -1.0 1.0 matrix scale concat 0.0 setgray 1.00375 -1.254688 moveto 1.00375 8.280937 lineto 6.273437 3.513125 lineto fill grestore 7.026246 0.0 rmoveto 135.5063 178.8089 moveto 135.5063 166.178 moveto font3 setfont (END) show font14 setfont (.) show 120.45 151.7348 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (8. ) 0 buf opsaft 0 null put /totwidth /totwidth try 20.09845 add def opsbef 1 {20.09845 0.0 rmoveto font0 setfont} put (Position the mouse just in front of ) 1 buf opsaft 1 null put /totwidth /totwidth try 7.026246 add def font14 setfont /totwidth /totwidth try 7.026246 add def font0 setfont opsbef 2 { gsave currentpoint translate 0.0 setgray 1.00375 -1.254688 moveto 1.00375 8.280937 lineto 6.273437 3.513125 lineto fill grestore 7.026246 0.0 rmoveto font14 setfont gsave currentpoint translate 0.0 setgray 1.00375 -1.254688 moveto 1.00375 8.280937 lineto 6.273437 3.513125 lineto fill grestore 7.026246 0.0 rmoveto font0 setfont} put (Name) 2 buf opsaft 2 null put font14 setfont /totwidth /totwidth try 7.026246 add def /totwidth /totwidth try 7.026246 add def font0 setfont opsbef 3 { font14 setfont gsave 7.026246 0.0 rmoveto currentpoint translate -1.0 1.0 matrix scale concat 0.0 setgray 1.00375 -1.254688 moveto 1.00375 8.280937 lineto 6.273437 3.513125 lineto fill grestore 7.026246 0.0 rmoveto font0 setfont} put ( and type the ) 3 buf opsaft 3 null put font3 setfont opsbef 4 {font3 setfont} put (NEXT) 4 buf opsaft 4 null put font0 setfont opsbef 5 {font0 setfont} put ( key \050remember key) 5 buf opsaft 5 null put mixedjustify grestore 150.5625 139.6898 moveto font0 setfont (R15\051. Now type ``HelloWorld'' without the quotes.) show 120.45 125.2467 moveto font0 setfont (9.) show 22.60782 0.0 rmoveto (Type the ) show font3 setfont (NEXT ) show font0 setfont (key again, and type ``Commander, ) show font3 setfont (IO) show font0 setfont (''.) show 120.45 110.8035 moveto /colwidth 393.5077 def gsave font0 setfont opsbef 0 {font0 setfont} put (10.) 0 buf opsaft 0 null put /totwidth /totwidth try 17.58908 add def opsbef 1 {17.58908 0.0 rmoveto font0 setfont} put (Delete the ) 1 buf opsaft 1 null put font3 setfont opsbef 2 {font3 setfont} put (EXPORTS) 2 buf opsaft 2 null put font0 setfont opsbef 3 {font0 setfont} put ( clause since we're not exporting an interface. Hold down the) 3 buf opsaft 3 null put mixedjustify grestore 150.5625 98.75852 moveto /colwidth 363.395 def gsave font3 setfont opsbef 0 {font3 setfont} put (CTRL) 0 buf opsaft 0 null put font0 setfont opsbef 1 {font0 setfont} put ( key, position the mouse cursor on the line, and fast double ) 1 buf opsaft 1 null put font3 setfont opsbef 2 {font3 setfont} put (MIDDLE) 2 buf opsaft 2 null put font0 setfont opsbef 3 {font0 setfont} put (-click to) 3 buf opsaft 3 null put mixedjustify grestore 150.5625 86.71351 moveto font0 setfont (delete the line. Release the ) show font3 setfont (CTRL) show font0 setfont ( key.) show 120.45 72.27039 moveto /colwidth 393.5075 def gsave font0 setfont opsbef 0 {font0 setfont} put (11.) 0 buf opsaft 0 null put /totwidth /totwidth try 17.58908 add def opsbef 1 {17.58908 0.0 rmoveto font0 setfont} put (Hit ) 1 buf opsaft 1 null put font3 setfont opsbef 2 {font3 setfont} put (NEXT) 2 buf opsaft 2 null put font0 setfont opsbef 3 {font0 setfont} put ( and position the cursor at the placeholder labelled ``Body''. Type ``proc'') 3 buf opsaft 3 null put mixedjustify grestore grestore grestore % end page 28 showpage %%page 29 gsave 2834.646 2834.646 scale gsave 0.0254 dup matrix scale concat 0.013837 dup matrix scale concat 282.1476 38.135 moveto font3 setfont (CEDAR 10.1 ) show font0 setfont 514.2537 746.79 moveto (29) show 150.5625 684.9593 moveto font0 setfont (and type ) show font3 setfont (CTRL) show font0 setfont (-e. This expands to a procedure skeleton.) show 120.45 670.3288 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (12.) 0 buf opsaft 0 null put /totwidth /totwidth try 17.58908 add def opsbef 1 {17.58908 0.0 rmoveto font0 setfont} put (Type ``PrintHelloWorld''. This is the name of the procedure. Note that procedure) 1 buf opsaft 1 null put mixedjustify grestore 150.5625 658.2838 moveto font0 setfont (names must start with a capital letter.) show 120.45 643.6539 moveto /colwidth 393.5077 def gsave font0 setfont opsbef 0 {font0 setfont} put (13.) 0 buf opsaft 0 null put /totwidth /totwidth try 17.58908 add def font3 setfont opsbef 1 {17.58908 0.0 rmoveto font3 setfont} put (MIDDLE) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (-click on the word ``) 2 buf opsaft 2 null put font3 setfont opsbef 3 {font3 setfont} put (PROC) 3 buf opsaft 3 null put font0 setfont opsbef 4 {font0 setfont} put (''. Then ) 4 buf opsaft 4 null put font3 setfont opsbef 5 {font3 setfont} put (RIGHT) 5 buf opsaft 5 null put font0 setfont opsbef 6 {font0 setfont} put (-click, which turns the selected stuff) 6 buf opsaft 6 null put mixedjustify grestore 150.5625 631.6087 moveto /colwidth 363.395 def gsave font0 setfont opsbef 0 {font0 setfont} put (to reverse video; drag the mouse until you reach the ) 0 buf opsaft 0 null put font3 setfont opsbef 1 {font3 setfont} put (RETURNS) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( clause's right square) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 619.564 moveto /colwidth 328.3433 def gsave font0 setfont (bracket: ]. This mode is called pending delete. Now type) justify grestore 150.5625 607.519 moveto /colwidth 363.395 def gsave font0 setfont (``Commander.CommandProc''. This references the interface contained in the) justify grestore 150.5625 595.4739 moveto font0 setfont (Commander module, in particular, CommandProc.) show 120.45 580.8438 moveto /colwidth 393.5075 def gsave font0 setfont opsbef 0 {font0 setfont} put (14.) 0 buf opsaft 0 null put /totwidth /totwidth try 17.58908 add def opsbef 1 {17.58908 0.0 rmoveto font0 setfont} put (Hit ) 1 buf opsaft 1 null put font3 setfont opsbef 2 {font3 setfont} put (NEXT) 2 buf opsaft 2 null put font0 setfont opsbef 3 {font0 setfont} put (, which takes you to the body of the procedure. Type the following two) 3 buf opsaft 3 null put mixedjustify grestore 150.5625 568.7988 moveto font0 setfont (lines:) show 120.45 554.1688 moveto 135.5063 541.2575 moveto font3 setfont (ROPE) show font14 setfont (: ) show font3 setfont (TYPE) show font14 setfont ( = Rope.) show font3 setfont (ROPE) show font14 setfont (; ) show font12 setfont 21.8328 0.0 rmoveto 135.5063 528.3460 moveto font3 setfont (IO) show font14 setfont (.PutRope[cmd.out, \042Hello world!\134n\042];) show 135.5063 515.4348 moveto 120.45 500.8046 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (15.) 0 buf opsaft 0 null put /totwidth /totwidth try 17.58908 add def opsbef 1 {17.58908 0.0 rmoveto font0 setfont} put (A curly bracket ``}'' delimits a procedure definition. Position your cursor after the) 1 buf opsaft 1 null put mixedjustify grestore 150.5625 488.7594 moveto /colwidth 363.395 def gsave font0 setfont opsbef 0 {font0 setfont} put (statement separator semi-colon. Type ) 0 buf opsaft 0 null put font3 setfont opsbef 1 {font3 setfont} put (CTRL) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (-) 2 buf opsaft 2 null put font3 setfont opsbef 3 {font3 setfont} put (RETURN) 3 buf opsaft 3 null put font0 setfont opsbef 4 {font0 setfont} put ( twice, followed by ) 4 buf opsaft 4 null put font3 setfont opsbef 5 {font3 setfont} put (CTRL) 5 buf opsaft 5 null put font0 setfont opsbef 6 {font0 setfont} put (-) 6 buf opsaft 6 null put font3 setfont opsbef 7 {font3 setfont} put (SHIFT) 7 buf opsaft 7 null put font0 setfont opsbef 8 {font0 setfont} put (-) 8 buf opsaft 8 null put mixedjustify grestore 150.5625 476.7146 moveto font0 setfont (n to unnest the node to the same level as the procedure definition.) show 120.45 462.0845 moveto font0 setfont (16.) show 17.58908 0.0 rmoveto (Finally, type the line) show 150.5625 447.4546 moveto 135.5063 434.5429 moveto font14 setfont (Commander.Register[key: \042PrintHelloWorld\042, proc: PrintHelloWorld, doc: \042Prints) show 180.675 422.498 moveto font14 setfont (Hello world\042];) show 120.45 407.868 moveto /colwidth 393.5075 def gsave font0 setfont opsbef 0 {font0 setfont} put (17.) 0 buf opsaft 0 null put /totwidth /totwidth try 17.58908 add def opsbef 1 {17.58908 0.0 rmoveto font0 setfont} put (Type ) 1 buf opsaft 1 null put font3 setfont opsbef 2 {font3 setfont} put (CTRL) 2 buf opsaft 2 null put font0 setfont opsbef 3 {font0 setfont} put (-d. This selects the contents of the viewer. Now type ) 3 buf opsaft 3 null put font3 setfont opsbef 4 {font3 setfont} put (CTRL) 4 buf opsaft 4 null put font0 setfont opsbef 5 {font0 setfont} put (-m, which) 5 buf opsaft 5 null put mixedjustify grestore 150.5625 395.8228 moveto font0 setfont (invokes the prettyprinter to format Cedar code. ) show 120.45 381.1928 moveto /colwidth 393.5077 def gsave font0 setfont opsbef 0 {font0 setfont} put (18.) 0 buf opsaft 0 null put /totwidth /totwidth try 17.58908 add def opsbef 1 {17.58908 0.0 rmoveto font0 setfont} put (Click on the ) 1 buf opsaft 1 null put font7 setfont opsbef 2 { font7 setfont currentpoint /undery exch def /underx exch def} put (Save) 2 buf opsaft 2 { 1.0 setlinewidth currentpoint currentpoint pop undery 1.2 sub dup underx exch vec moveto} put font0 setfont opsbef 3 {font0 setfont} put ( button. Notice that your name will appear \050as a nested node\051 just) 3 buf opsaft 3 null put mixedjustify grestore 150.5625 369.1478 moveto /colwidth 363.395 def gsave font0 setfont (below the commented file name. You are marked as the last person to modify this) justify grestore 150.5625 357.1028 moveto font0 setfont (file.) show 150.5625 342.4727 moveto 110.4125 323.5387 moveto /colwidth 403.545 def gsave font0 setfont (You have now constructed a legitimate program in Cedar. You may not understand all the) justify grestore 90.3375 311.4937 moveto /colwidth 423.62 def gsave font0 setfont (details of the syntax and semantics of the language constructs, but at least you've used Tioga to) justify grestore 90.3375 299.4487 moveto gsave font0 setfont (construct the program. Try running MakeDo to compile the program; you might even try running) justify grestore 90.3375 287.4037 moveto font0 setfont (it. Good luck!) show 110.4125 268.4697 moveto /colwidth 403.545 def gsave font0 setfont (The Cedar programming community follows established programming conventions. They) justify grestore 90.3375 256.4247 moveto /colwidth 423.62 def gsave font0 setfont (cannot be hard and fast rules, and there can be good and compelling reasons for not following) justify grestore 90.3375 244.3797 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (some convention in a particular instance. Nevertheless, to the extent that we all ) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (usually) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( follow) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 232.3348 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (them, it will help us in reading \050and therefore in modifying\051 one anothers' programs. See ) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (Stylizing) 1 buf opsaft 1 null put mixedjustify grestore 90.3375 220.2898 moveto font1 setfont (Cedar Programs) show font0 setfont ( <77>. Here are some of the rules.) show 120.45 205.6597 moveto font0 setfont (a.) show 22.91563 0.0 rmoveto (Capitalize the first letter of a name.) show 120.45 191.0296 moveto font0 setfont (b.) show 21.96876 0.0 rmoveto (Capitalize the first letter of each embedded word.) show 120.45 176.3995 moveto font0 setfont (c.) show 23.22344 0.0 rmoveto (Case shift should be used to distinguish identifiers.) show 120.45 161.7694 moveto font0 setfont (d.) show 21.96876 0.0 rmoveto (All module source file names have the extension ``.mesa'') show 120.45 147.1393 moveto font0 setfont (e.) show 22.91563 0.0 rmoveto (A ) show font3 setfont (DEFINITIONS) show font0 setfont ( source file does not need any standard suffix on its name.) show 120.45 132.5092 moveto font0 setfont (f.) show 24.17033 0.0 rmoveto (A ) show font3 setfont (PROGRAM) show font0 setfont ( or ) show font3 setfont (MONITOR) show font0 setfont ( moduel name should have the suffix ``Impl''.) show 120.45 117.8791 moveto font0 setfont (g.) show 22.60782 0.0 rmoveto (A ) show font3 setfont (CONFIGURATION) show font0 setfont ( file name should have the extension ``.config'') show 120.45 103.249 moveto 110.4125 84.31516 moveto /colwidth 403.545 def gsave font0 setfont (Prettyprinting Cedar programs. This depends on proper capitalization of keywords \050all) justify grestore 90.3375 72.27012 moveto /colwidth 423.62 def gsave font0 setfont (capitals\051, procedure names \050begin with capital\051, and variables \050lower case\051. The following) justify grestore grestore grestore % end page 29 showpage %%page 30 gsave 2834.646 2834.646 scale gsave 0.0254 dup matrix scale concat 0.013837 dup matrix scale concat 282.1476 38.135 moveto font3 setfont (CEDAR 10.1 ) show font0 setfont 514.125 746.79 moveto (30) show 90.3375 684.9593 moveto font0 setfont (operations help you to achieve this:) show 120.45 669.9068 moveto font3 setfont (CTRL) show font0 setfont (-) show font3 setfont (SHIFT) show font0 setfont (-c) show 32.06388 0.0 rmoveto (all capitals) show 120.45 654.8543 moveto font3 setfont (CTRL) show font0 setfont (-c) show 30.03024 0.0 rmoveto 30.1125 0.0 rmoveto (all lower case) show 120.45 639.8017 moveto font3 setfont (CTRL) show font0 setfont (-c-c ) show 19.66153 0.0 rmoveto 30.1125 0.0 rmoveto (capitalize just the first character) show 120.45 624.7492 moveto 90.3375 574.5692 moveto font11 setfont (5. Additional Documentation ) show 90.3375 547.9796 moveto font12 setfont (5.1 Cedar Documentation) show 110.4125 521.8896 moveto font0 setfont (To view these documents, type Openr ) show font1 setfont (name ) show font0 setfont (to your commander.) show 110.4125 502.322 moveto /colwidth 403.545 def gsave font0 setfont (CedarProgramStyle.tioga: Discusses the conventions that have been generally agreed upon by) justify grestore 90.3375 490.2771 moveto /colwidth 423.62 def gsave font0 setfont (the Cedar programming community and are approximations to current practice. Consequently,) justify grestore 90.3375 478.2321 moveto gsave font0 setfont (they cannot be hard and fast rules, and there can be good and compelling reasons for not following) justify grestore 90.3375 466.1872 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (some convention in a particular instance. Nevertheless, to the extent that we all ) 0 buf opsaft 0 null put font1 setfont opsbef 1 {font1 setfont} put (usually) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( follow) 2 buf opsaft 2 null put mixedjustify grestore 90.3375 454.1420 moveto font0 setfont (them, it will help us in reading \050and therefore in modifying\051 one anothers' programs.) show 110.4125 434.5744 moveto /colwidth 403.545 def gsave font0 setfont (MimosaDoc.tioga: Mimosa is a reworked version of the ancient Cedar/Mesa compiler. The) justify grestore 90.3375 422.5296 moveto /colwidth 423.62 def gsave font0 setfont (intention is to eventually arrive at a compiler base that can have multiple targets. The current) justify grestore 90.3375 410.4846 moveto gsave font0 setfont (target is restricted to 32-bit words, byte addressing, big-endian bit and byte order \050bit/byte 0 is) justify grestore 90.3375 398.4396 moveto gsave font0 setfont (most significant within a word\051, and code generation for the C language \050specifically for Sun-3 and) justify grestore 90.3375 386.3946 moveto font0 setfont (Sun-4\051.) show 110.4125 366.8272 moveto /colwidth 403.545 def gsave font0 setfont opsbef 0 {font0 setfont} put (ExperiencesCreatingAPortableCedar) 0 buf opsaft 0 null put font7 setfont opsbef 1 {font7 setfont} put (.) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (tioga) 2 buf opsaft 2 null put opsbef 3 {font0 setfont} put (: It discusses how Cedar was re-implemented to) 3 buf opsaft 3 null put mixedjustify grestore 90.3375 354.782 moveto /colwidth 423.62 def gsave font0 setfont (make it portable across many different architectures, in particular, the strategy for the compiler and) justify grestore 90.3375 342.7372 moveto gsave font0 setfont (runtime, and the manner of making connections to other languages and the UNIX operating) justify grestore 90.3375 330.6921 moveto font0 setfont (system.) show 110.4125 311.1246 moveto /colwidth 403.545 def gsave font0 setfont (PFSDoc.tioga: Preliminary documentation. Mostly details the latest news. It describes the) justify grestore 90.3375 299.0796 moveto /colwidth 423.62 def gsave font0 setfont (standard facilities available for file access from Cedar. These facilities are available through the) justify grestore 90.3375 287.0346 moveto font0 setfont (interfaces PFS and PFSNames. PFS and PFSNames contain facilities of interest to all users. ) show 110.4125 267.4672 moveto /colwidth 403.545 def gsave font0 setfont (CirioDoc.tioga: Cirio is a debugger intended to support the debugging of systems written in) justify grestore 90.3375 255.4222 moveto /colwidth 423.62 def gsave font0 setfont (multiple programming languages and running on multiple target machines. Currently Cirio) justify grestore 90.3375 243.3772 moveto gsave font0 setfont (understands the Cedar and C programming languages and understands about programs run on D-) justify grestore 90.3375 231.3322 moveto gsave font0 setfont (machines or in PCR-based systems. The current version is still very much a prototype, with much) justify grestore 90.3375 219.2872 moveto font0 setfont (of its functionality missing.) show 110.4125 199.7198 moveto /colwidth 403.545 def gsave font0 setfont (RawViewersDoc.tioga: The RawViewersImpl module starts up Viewers using just the low) justify grestore 90.3375 187.6748 moveto font0 setfont (level Sun drivers for the keyboard, mouse, and frame buffers. Useful if you do not wish to use X.) show 110.4125 168.1074 moveto font0 setfont (X11ViewersDoc.tioga: Analogous to RawViewersDoc for X11Viewers.) show 110.4125 148.5399 moveto font0 setfont (UserProfileDoc.tioga: Tells you how to customize system behavior using the User Profile. ) show 90.3375 98.36 moveto font11 setfont (References) show 110.4125 72.27012 moveto grestore grestore % end page 30 showpage %%page 31 gsave 2834.646 2834.646 scale gsave 0.0254 dup matrix scale concat 0.013837 dup matrix scale concat 282.1476 38.135 moveto font3 setfont (CEDAR 10.1 ) show font0 setfont 514.132 746.79 moveto (31) show 110.4125 684.9593 moveto gsave font0 setfont (Reference numbers in [square brackets] are for conventional hardcopy documents. Many of) justify grestore 90.3375 672.914 moveto /colwidth 423.62 def gsave font0 setfont (them are Xerox reports published in blue and white covers; the CSL blue-and-whites are available) justify grestore 90.3375 660.8688 moveto gsave font0 setfont (on bookshelves in the CSL Alcove. Reference numbers in <angle brackets> are for on-line) justify grestore 90.3375 648.8241 moveto font0 setfont (documents. If they are included on the CDROM you can open them with \042openr filename\042.) show 110.4125 623.9041 moveto 120.45 605.2833 moveto font0 setfont (<) show font1 setfont (n) show font0 setfont (>:) show 11.19744 0.0 rmoveto (The generic form for a reference to an on-line document.) show 120.45 590.678 moveto font0 setfont ([) show font1 setfont (n) show font0 setfont (]:) show 15.58937 0.0 rmoveto (The generic form for a reference to a hardcopy document.) show 120.45 576.0723 moveto 120.45 561.4668 moveto /colwidth 393.5075 def gsave font0 setfont opsbef 0 {font0 setfont} put ([1]:) 0 buf opsaft 0 null put /totwidth /totwidth try 15.99199 add def font12 setfont opsbef 1 {15.99199 0.0 rmoveto font12 setfont} put (Sunset New Western Garden Book.) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( Lane Publishing Company, Menlo Park, CA,) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 549.4217 moveto /colwidth 363.395 def gsave font0 setfont (1979. The definitive document on Western gardening for non-botanists; 1200 plant) justify grestore 150.5625 537.3769 moveto gsave font0 setfont (identification drawings; comprehensive Western plant encyclopedia; zoned for all) justify grestore 150.5625 525.3316 moveto font0 setfont (Western climates; plant selection guide in color. ) show 120.45 510.726 moveto /colwidth 393.5075 def gsave font0 setfont opsbef 0 {font0 setfont} put ([2]:) 0 buf opsaft 0 null put /totwidth /totwidth try 15.99199 add def opsbef 1 {15.99199 0.0 rmoveto font0 setfont} put (Warnock, John E. ) 1 buf opsaft 1 null put font12 setfont opsbef 2 {font12 setfont} put (The Display of Characters Using Gray Level Sample Arrays) 2 buf opsaft 2 null put font0 setfont opsbef 3 {font0 setfont} put (.) 3 buf opsaft 3 null put mixedjustify grestore 150.5625 498.6809 moveto font0 setfont (blue-and-white report CSL-80-6.) show 120.45 484.0755 moveto gsave font0 setfont opsbef 0 {font0 setfont} put ([3]:) 0 buf opsaft 0 null put /totwidth /totwidth try 15.99199 add def opsbef 1 {15.99199 0.0 rmoveto font0 setfont} put (Lyon, Richard F. ) 1 buf opsaft 1 null put font12 setfont opsbef 2 {font12 setfont} put (The Optical Mouse, and an Architectural Methodology for Smart) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 472.0303 moveto font12 setfont (Digital Sensors) show font0 setfont (. blue-and-white report VLSI-81-1.) show 120.45 457.4246 moveto font0 setfont ([4]:) show 15.99199 0.0 rmoveto font12 setfont (The Ethernet Local Network: Three Reports) show font0 setfont (. blue-and-white report CSL-80-2.) show 120.45 442.819 moveto gsave font0 setfont opsbef 0 {font0 setfont} put ([5]:) 0 buf opsaft 0 null put /totwidth /totwidth try 15.99199 add def opsbef 1 {15.99199 0.0 rmoveto font0 setfont} put (Shoch, John F., Yogen K. Dalal, Ronald C. Crane, and David D. Redell. ) 1 buf opsaft 1 null put font12 setfont opsbef 2 {font12 setfont} put (Evolution) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 430.774 moveto font12 setfont (of the Ethernet Local Computer Network) show font0 setfont (. blue-and-white report OPD-T8102.) show 120.45 416.1684 moveto font0 setfont (<6>:) show 11.60005 0.0 rmoveto font1 setfont (no reference) show font0 setfont (.) show 120.45 401.5628 moveto gsave font0 setfont opsbef 0 {font0 setfont} put ([7]:) 0 buf opsaft 0 null put /totwidth /totwidth try 15.99199 add def opsbef 1 {15.99199 0.0 rmoveto font0 setfont} put (Boggs, David R., John F. Shoch, Edward A. Taft, and Robert M. Metcalfe. ) 1 buf opsaft 1 null put font12 setfont opsbef 2 {font12 setfont} put (Pup: An) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 389.5178 moveto font12 setfont (Internetwork Architecture) show font0 setfont (. blue-and-white report CSL-79-10.) show 120.45 374.912 moveto gsave font0 setfont opsbef 0 {font0 setfont} put ([8]:) 0 buf opsaft 0 null put /totwidth /totwidth try 15.99199 add def font12 setfont opsbef 1 {15.99199 0.0 rmoveto font12 setfont} put (Internet Transport Protocols) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (. Xerox System Integration Standard report XSIS) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 362.867 moveto font0 setfont (028112, December 1981.) show 120.45 348.2614 moveto gsave font0 setfont opsbef 0 {font0 setfont} put ([9]:) 0 buf opsaft 0 null put /totwidth /totwidth try 15.99199 add def font12 setfont opsbef 1 {15.99199 0.0 rmoveto font12 setfont} put (Courier: The Remote Procedure Call Protocol) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (. Xerox System Integration Standard) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 336.2164 moveto font0 setfont (report XSIS 038112, December 1981.) show 120.45 321.6107 moveto gsave font0 setfont opsbef 0 {font0 setfont} put ([10]:) 0 buf opsaft 0 null put /totwidth /totwidth try 10.97325 add def opsbef 1 {10.97325 0.0 rmoveto font0 setfont} put ( Thacker, Charles P., Edward M. McCreight, Butler. W. Lampson, Robert F.) 1 buf opsaft 1 null put mixedjustify grestore 150.5625 309.5658 moveto /colwidth 363.3949 def gsave font0 setfont opsbef 0 {font0 setfont} put (Sproull, and David R. Boggs. ) 0 buf opsaft 0 null put font12 setfont opsbef 1 {font12 setfont} put (Alto: A personal computer) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (. blue-and-white report) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 297.5206 moveto font0 setfont (CSL-79-11.) show 120.45 282.915 moveto /colwidth 393.5075 def gsave font0 setfont (<11>: [Indigo]<AltoDocs>AltoHardware.press. Everything that you need to know to write) justify grestore 150.5625 270.8701 moveto font0 setfont (your own Alto microcode.) show 120.45 256.2644 moveto gsave font0 setfont opsbef 0 {font0 setfont} put ([12]:) 0 buf opsaft 0 null put /totwidth /totwidth try 10.97325 add def font12 setfont opsbef 1 {10.97325 0.0 rmoveto font12 setfont} put (The Dorado: A High-Performance Personal Computer; Three Papers.) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put ( blue-and-) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 244.2194 moveto font0 setfont (white report CSL-81-1.) show 120.45 229.6136 moveto gsave font0 setfont currentpoint /undery exch def /underx exch def (<13>: [Indigo]<DoradoDocs>DoradoBooting.press. Describes how to boot a Dorado, and) justify 1.0 setlinewidth currentpoint currentpoint pop undery -2.3 sub dup underx exch vec moveto grestore 150.5625 217.5686 moveto font0 setfont currentpoint /undery exch def /underx exch def (how to configure it to boot in various ways.) show 1.0 setlinewidth currentpoint currentpoint pop undery -2.3 sub dup underx exch vec moveto 120.45 202.963 moveto /colwidth 393.5077 def gsave font0 setfont opsbef 0 {font0 setfont} put ([14]:) 0 buf opsaft 0 null put /totwidth /totwidth try 10.97325 add def opsbef 1 {10.97325 0.0 rmoveto font0 setfont} put (Myer, T. H. and Barnaby, J. R. ) 1 buf opsaft 1 null put font12 setfont opsbef 2 {font12 setfont} put (TENEX Executive Language Manual for Users.) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 190.918 moveto /colwidth 363.395 def gsave font0 setfont (Available from Arpa Network Information Center as NIC 16874, but in the) justify grestore 150.5625 178.873 moveto font0 setfont (relatively unlikely event that you need one, borrow one from a Tenex wizard.) show 120.45 164.2673 moveto /colwidth 393.5075 def gsave font0 setfont opsbef 0 {font0 setfont} put (<15>: ) 0 buf opsaft 0 null put opsbef 1 { currentpoint /undery exch def /underx exch def font0 setfont} put ([Indigo]<AltoDocs>BCPL.press) 1 buf opsaft 1 { 1.0 setlinewidth currentpoint currentpoint pop undery -2.3 sub dup underx exch vec moveto} put opsbef 2 {font0 setfont} put ( The reference manual for the BCPL programming) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 152.2224 moveto font0 setfont (language.) show 120.45 137.6167 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (<16>: ) 0 buf opsaft 0 null put opsbef 1 { currentpoint /undery exch def /underx exch def font0 setfont} put ([Indigo]<AltoDocs>OS.press) 1 buf opsaft 1 { 1.0 setlinewidth currentpoint currentpoint pop undery -2.3 sub dup underx exch vec moveto} put opsbef 2 {font0 setfont} put (. The programmer's reference manual for the Alto) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 125.5716 moveto /colwidth 363.395 def gsave font0 setfont (Operating System, including detailed information on the services provided and the) justify grestore 150.5625 113.5266 moveto font0 setfont (interface requirements.) show 120.45 98.921 moveto /colwidth 393.5075 def gsave font0 setfont opsbef 0 {font0 setfont} put (<17>: ) 0 buf opsaft 0 null put opsbef 1 { currentpoint /undery exch def /underx exch def font0 setfont} put ([Indigo]<AltoDocs>Packages.press) 1 buf opsaft 1 { 1.0 setlinewidth currentpoint currentpoint pop undery -2.3 sub dup underx exch vec moveto} put opsbef 2 {font0 setfont} put (. A catalogue giving documentation for the various) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 86.87597 moveto font0 setfont (BCPL packages that other hacker's have made available.) show 120.45 72.27031 moveto gsave font0 setfont opsbef 0 {font0 setfont} put ([18]:) 0 buf opsaft 0 null put /totwidth /totwidth try 10.97325 add def font12 setfont opsbef 1 {10.97325 0.0 rmoveto font12 setfont} put (Mesa Language Manual, Version 11.0) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (, March 1984. Published by the Systems) 2 buf opsaft 2 null put mixedjustify grestore grestore grestore % end page 31 showpage %%page 32 gsave 2834.646 2834.646 scale gsave 0.0254 dup matrix scale concat 0.013837 dup matrix scale concat 282.1476 38.135 moveto font3 setfont (CEDAR 10.1 ) show font0 setfont 514.2037 746.79 moveto (32) show 150.5625 684.9593 moveto font0 setfont (Development Department of ) show font12 setfont (OSD) show font0 setfont (.) show 120.45 669.9697 moveto gsave font0 setfont opsbef 0 {font0 setfont} put ([19]:) 0 buf opsaft 0 null put /totwidth /totwidth try 10.97325 add def opsbef 1 {10.97325 0.0 rmoveto font0 setfont} put (James G. Mitchell, William Maybury, and Richard Sweet. ) 1 buf opsaft 1 null put font12 setfont opsbef 2 {font12 setfont} put (Mesa Language Manual,) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 657.9245 moveto /colwidth 363.395 def gsave font12 setfont opsbef 0 {font12 setfont} put (Version 5.0.) 0 buf opsaft 0 null put font0 setfont opsbef 1 {font0 setfont} put ( blue-and-white report CSL-79-3. A cross between a tutorial and a) 1 buf opsaft 1 null put mixedjustify grestore 150.5625 645.8797 moveto font0 setfont (reference manual, though much closer to the latter than the former.) show 120.45 630.8904 moveto /colwidth 393.5075 def gsave font0 setfont opsbef 0 {font0 setfont} put ([20]:) 0 buf opsaft 0 null put /totwidth /totwidth try 10.97325 add def opsbef 1 {10.97325 0.0 rmoveto font0 setfont} put (Morris, J. H. ) 1 buf opsaft 1 null put font12 setfont opsbef 2 {font12 setfont} put (The Elements of Mesa Style.) 2 buf opsaft 2 null put font0 setfont opsbef 3 {font0 setfont} put ( Xerox PARC Internal Report, June) 3 buf opsaft 3 null put mixedjustify grestore 150.5625 618.8453 moveto /colwidth 363.395 def gsave font0 setfont (1976. Somewhat out of date \050since Mesa has changed under it\051, but a readable) justify grestore 150.5625 606.8004 moveto font0 setfont (introduction to some useful program structuring techniques in Mesa.) show 120.45 591.8111 moveto /colwidth 393.5075 def gsave font0 setfont opsbef 0 {font0 setfont} put ([21]:) 0 buf opsaft 0 null put /totwidth /totwidth try 10.97325 add def opsbef 1 {10.97325 0.0 rmoveto font0 setfont} put (Goldberg, Adele and David Robson. ) 1 buf opsaft 1 null put font12 setfont opsbef 2 {font12 setfont} put (Smalltalk-80: The Language and Its) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 579.766 moveto font12 setfont (Implementation) show font0 setfont (. book published by Addison-Wesley, 1983. ) show 120.45 564.7768 moveto /colwidth 393.5077 def gsave font0 setfont opsbef 0 {font0 setfont} put ([22]:) 0 buf opsaft 0 null put /totwidth /totwidth try 10.97325 add def opsbef 1 {10.97325 0.0 rmoveto font0 setfont} put ( ) 1 buf opsaft 1 null put font12 setfont opsbef 2 {font12 setfont} put (Interlisp Reference Manual) 2 buf opsaft 2 null put font0 setfont opsbef 3 {font0 setfont} put (. Published in a blue and white cover, although not) 3 buf opsaft 3 null put mixedjustify grestore 150.5625 552.7316 moveto font0 setfont (officially a blue-and-white. October, 1983.) show 120.45 537.7425 moveto /colwidth 393.5075 def gsave font0 setfont opsbef 0 {font0 setfont} put ([23]:) 0 buf opsaft 0 null put /totwidth /totwidth try 10.97325 add def opsbef 1 {10.97325 0.0 rmoveto font0 setfont} put (The Interlisp-D Group. ) 1 buf opsaft 1 null put font12 setfont opsbef 2 {font12 setfont} put (Papers on Interlisp-D) 2 buf opsaft 2 null put font0 setfont opsbef 3 {font0 setfont} put (. blue-and-white report CIS-5 \050also) 3 buf opsaft 3 null put mixedjustify grestore 150.5625 525.6976 moveto font0 setfont (given the number SSL-80-4\051, Revised version, July 1981.) show 120.45 510.7084 moveto gsave font0 setfont opsbef 0 {font0 setfont} put ([24]:) 0 buf opsaft 0 null put /totwidth /totwidth try 10.97325 add def opsbef 1 {10.97325 0.0 rmoveto font0 setfont} put (Deutsch, L. Peter, and Edward A. Taft, editors. ) 1 buf opsaft 1 null put font12 setfont opsbef 2 {font12 setfont} put (Requirements for an Experimental) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 498.6631 moveto font12 setfont (Programming Environment) show font0 setfont (. blue-and-white report CSL-80-10.) show 120.45 483.6739 moveto gsave font0 setfont opsbef 0 {font0 setfont} put (<25>: ) 0 buf opsaft 0 null put opsbef 1 { currentpoint /undery exch def /underx exch def font0 setfont} put ([CedarChest7.0]<Top>Documentation.df) 1 buf opsaft 1 { 1.0 setlinewidth currentpoint currentpoint pop undery -2.3 sub dup underx exch vec moveto} put opsbef 2 {font0 setfont} put (. Hardcopies are entitled ) 2 buf opsaft 2 null put font12 setfont opsbef 3 {font12 setfont} put (The Cedar) 3 buf opsaft 3 null put mixedjustify grestore 150.5625 471.6289 moveto font12 setfont (Manual) show font0 setfont (.) show 120.45 456.6396 moveto /colwidth 393.5077 def gsave font0 setfont opsbef 0 {font0 setfont} put ([26]:) 0 buf opsaft 0 null put /totwidth /totwidth try 10.97325 add def font12 setfont opsbef 1 {10.97325 0.0 rmoveto font12 setfont} put (Alto User's Handbook) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (. Internal report, published in a black cover. The version of) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 444.5946 moveto /colwidth 363.395 def gsave font0 setfont (September, 1979 is identical to the version of November, 1978 except for the date on) justify grestore 150.5625 432.5494 moveto gsave font0 setfont (the cover and title page. Includes sections on Bravo, Laurel, FTP, Draw, Markup,) justify grestore 150.5625 420.5045 moveto font0 setfont (and Neptune) show 120.45 405.5152 moveto /colwidth 386.8824 def gsave font0 setfont opsbef 0 {font0 setfont} put (<27>: ) 0 buf opsaft 0 null put opsbef 1 { currentpoint /undery exch def /underx exch def font0 setfont} put ([Indigo]<AltoDocs>SubSystems.press) 1 buf opsaft 1 { 1.0 setlinewidth currentpoint currentpoint pop undery -2.3 sub dup underx exch vec moveto} put opsbef 2 {font0 setfont} put (. Documentation on individual Alto) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 393.4701 moveto /colwidth 363.395 def gsave font0 setfont (subsystems, collected in a single file. Individual systems are documented on) justify grestore 150.5625 381.4252 moveto gsave font0 setfont ([Indigo]<AltoDocs>systemname.TTY, and these files are sometimes more recent) justify grestore 150.5625 369.38 moveto font0 setfont (than SubSystems.press.) show 120.45 354.3908 moveto /colwidth 393.5075 def gsave font0 setfont opsbef 0 {font0 setfont} put ([28]:) 0 buf opsaft 0 null put /totwidth /totwidth try 10.97325 add def opsbef 1 {10.97325 0.0 rmoveto font0 setfont} put (Jerome, Suzan. ) 1 buf opsaft 1 null put font12 setfont opsbef 2 {font12 setfont} put (Bravo Course Outline.) 2 buf opsaft 2 null put font0 setfont opsbef 3 {font0 setfont} put ( Internal report, published in a red cover.) 3 buf opsaft 3 null put mixedjustify grestore 150.5625 342.3458 moveto font0 setfont (Oriented to non-programmers.) show 120.45 327.3564 moveto font0 setfont (<29>: ) show font12 setfont (The Tioga editor) show font0 setfont (. [Cedar10.1]<Tioga>TiogaDoc.tioga. ) show 120.45 312.3671 moveto font0 setfont currentpoint /undery exch def /underx exch def (<30>: [Indigo]<PrintingDocs>PressFormat.press. Describes the Press print file format.) show 1.0 setlinewidth currentpoint currentpoint pop undery -2.3 sub dup underx exch vec moveto 120.45 297.3778 moveto font0 setfont currentpoint /undery exch def /underx exch def (<31>: [Indigo]<PrintingDocs>PressOps.press. Describes the Press printing program.) show 1.0 setlinewidth currentpoint currentpoint pop undery -2.3 sub dup underx exch vec moveto 120.45 282.3885 moveto font0 setfont currentpoint /undery exch def /underx exch def (<32>: [Indigo]<PrintingDocs>PDPrintOps.press. Describes the PDPrint printing program.) show 1.0 setlinewidth currentpoint currentpoint pop undery -2.3 sub dup underx exch vec moveto 120.45 267.3992 moveto gsave font0 setfont opsbef 0 {font0 setfont} put ([33]:) 0 buf opsaft 0 null put /totwidth /totwidth try 10.97325 add def opsbef 1 {10.97325 0.0 rmoveto font0 setfont} put (Birrell, Andrew D., Roy Levin, Roger M. Needham, and Michael D. Schroeder.) 1 buf opsaft 1 null put mixedjustify grestore 150.5625 255.3542 moveto font12 setfont (Grapevine: Two Papers and a Report.) show font0 setfont ( blue-and-white report CSL-83-12.) show 120.45 240.3648 moveto gsave font0 setfont currentpoint /undery exch def /underx exch def (<34>: [Ivy]<Laurel>Maintain.press. Documentation for the teletype version of Maintain,) justify 1.0 setlinewidth currentpoint currentpoint pop undery -2.3 sub dup underx exch vec moveto grestore 150.5625 228.3199 moveto font0 setfont currentpoint /undery exch def /underx exch def (the version that is used from within Laurel or Tajo.) show 1.0 setlinewidth currentpoint currentpoint pop undery -2.3 sub dup underx exch vec moveto 120.45 213.3305 moveto font0 setfont ([35]:) show 10.97325 0.0 rmoveto (Brotz, Douglas K. ) show font12 setfont (The Laurel Manual.) show font0 setfont ( blue-and-white report CSL-81-6.) show 120.45 198.3412 moveto gsave font0 setfont opsbef 0 {font0 setfont} put ([36]:) 0 buf opsaft 0 null put /totwidth /totwidth try 10.97325 add def opsbef 1 {10.97325 0.0 rmoveto font0 setfont} put (Schimidt, Eric Emerson. ) 1 buf opsaft 1 null put font12 setfont opsbef 2 {font12 setfont} put (Controlling Large Software Development in a Distributed) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 186.2962 moveto font12 setfont (Environment.) show font0 setfont ( blue-and-white report CSL-82-7.) show 120.45 171.3069 moveto font0 setfont (<37>: [Cedar10.1]<DF>DFDoc.tioga. The reference manual for the use of DF files.) show 120.45 156.3175 moveto font0 setfont currentpoint /undery exch def /underx exch def (<38>: [CedarChest7.0]<Documentation>CSL-NotebookDoc.tioga) show 1.0 setlinewidth currentpoint currentpoint pop undery -2.3 sub dup underx exch vec moveto 150.5625 141.3282 moveto font1 setfont currentpoint /undery exch def /underx exch def (also stored as ) show 1.0 setlinewidth currentpoint currentpoint pop undery -2.3 sub dup underx exch vec moveto font0 setfont currentpoint /undery exch def /underx exch def ([Indigo]<CSL-Notebook>Docs>CSL-NotebookDoc.tioga) show 1.0 setlinewidth currentpoint currentpoint pop undery -2.3 sub dup underx exch vec moveto 120.45 126.3388 moveto font0 setfont currentpoint /undery exch def /underx exch def (<39>: [CedarChest7.0]<Documentation>HowToUseAPublicCedarMachine.tioga. ) show 1.0 setlinewidth currentpoint currentpoint pop undery -2.3 sub dup underx exch vec moveto 120.45 111.3495 moveto gsave font0 setfont opsbef 0 {font0 setfont} put ([40]:) 0 buf opsaft 0 null put /totwidth /totwidth try 10.97325 add def opsbef 1 {10.97325 0.0 rmoveto font0 setfont} put ( Teitelman, Warren. ) 1 buf opsaft 1 null put font12 setfont opsbef 2 {font12 setfont} put (The Cedar Programming Environment: A Midterm Report and) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 99.30454 moveto font12 setfont (Examination.) show font0 setfont ( blue-and-white report CSL-83-11.) show 120.45 84.31521 moveto gsave font0 setfont opsbef 0 {font0 setfont} put ([41]:) 0 buf opsaft 0 null put /totwidth /totwidth try 10.97325 add def opsbef 1 {10.97325 0.0 rmoveto font0 setfont} put (Brown, Mark R., Karen Kolling, and Edward A. Taft. ) 1 buf opsaft 1 null put font12 setfont opsbef 2 {font12 setfont} put (The Alpine File System.) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 72.2702 moveto font0 setfont (blue-and-white report CSL-84-4.) show grestore grestore % end page 32 showpage %%page 33 gsave 2834.646 2834.646 scale gsave 0.0254 dup matrix scale concat 0.013837 dup matrix scale concat 282.1476 38.135 moveto font3 setfont (CEDAR 10.1 ) show font0 setfont 514.5062 746.79 moveto (33) show 120.45 684.9593 moveto gsave font0 setfont opsbef 0 {font0 setfont} put ([<42>]: Swinehart, Daniel, Polle Zellweger, Rick Beach, Robert Hagmann. ) 0 buf opsaft 0 null put font12 setfont opsbef 1 {font12 setfont} put (A Structural) 1 buf opsaft 1 null put mixedjustify grestore 150.5625 672.914 moveto font12 setfont (View of the Cedar Programming Environment.) show font0 setfont ( blue-and-white report CSL-86-1.) show 150.5625 658.4324 moveto font1 setfont (available online as) show font0 setfont ( [CedarChest7.0]<Documentation>StructureOfCedar.tioga.) show 120.45 643.9508 moveto font0 setfont (<43>: Hagmann, Robert B. ) show font12 setfont (A Labelless File System For Cedar.) show 150.5625 629.4687 moveto font0 setfont currentpoint /undery exch def /underx exch def ([Indigo]<CSL-Notebook>Docs>86CSLN-0047.press) show 1.0 setlinewidth currentpoint currentpoint pop undery -2.3 sub dup underx exch vec moveto 120.45 614.9872 moveto font0 setfont (<44>: Arnon, Dennis, and Carl Waldspurger. ) show font12 setfont (CaminoReal.) show 150.5625 600.5056 moveto font0 setfont ([CedarChest7.0]<Documentation>CaminoRealDoc.tioga. ) show 120.45 586.0238 moveto font0 setfont ([45]:) show 10.97325 0.0 rmoveto ( Bier, Eric and Ken Pier. ) show font12 setfont (The Gargoyle Reference Manual.) show 150.5625 571.5424 moveto font0 setfont ([CedarChest7.0]<Documentation>GargoyleDoc.tioga. ) show 120.45 557.0605 moveto font0 setfont (<46>: Bier, Eric and Ken Pier. ) show font12 setfont (Gargoyle Tutorial.) show 150.5625 542.5789 moveto font0 setfont ([CedarChest7.0]<Documentation>GargoyleTutorialDoc.tioga. ) show 120.45 528.0972 moveto gsave font0 setfont opsbef 0 {font0 setfont} put ([47]:) 0 buf opsaft 0 null put /totwidth /totwidth try 10.97325 add def opsbef 1 {10.97325 0.0 rmoveto font0 setfont} put ( Ades, Stephen, and Daniel Swinehart. ) 1 buf opsaft 1 null put font12 setfont opsbef 2 {font12 setfont} put (Voice Annotation and Editing in a) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 516.052 moveto font12 setfont (Workstation Environment.) show font0 setfont ( blue-and-white report CSL-86-3.) show 120.45 501.5704 moveto gsave font0 setfont opsbef 0 {font0 setfont} put ([48]:) 0 buf opsaft 0 null put /totwidth /totwidth try 10.97325 add def opsbef 1 {10.97325 0.0 rmoveto font0 setfont} put ( Donahue, James, and Willie-Sue Orr. ) 1 buf opsaft 1 null put font12 setfont opsbef 2 {font12 setfont} put (Walnut: Storing Electronic Mail in a) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 489.5254 moveto font12 setfont (Database.) show font0 setfont ( blue-and-white report CSL-85-9.) show 120.45 475.0438 moveto font0 setfont (<49>: Kent, Jack, and Doug Terry. ) show font12 setfont (Wallaby.) show 150.5625 460.562 moveto font0 setfont ([CedarChest7.0]<Documentation>WallabyDoc.tioga. ) show 120.45 446.0804 moveto font0 setfont (<50>: Frailong, Jean-Marc. ) show font12 setfont (XTSetter.) show 150.5625 431.5986 moveto font0 setfont ([Cedar10.1]<XTSetter>XTSetterDoc.tioga. ) show 120.45 417.1169 moveto gsave font0 setfont opsbef 0 {font0 setfont} put ([51]:) 0 buf opsaft 0 null put /totwidth /totwidth try 10.97325 add def opsbef 1 {10.97325 0.0 rmoveto font0 setfont} put ( Bhushan, Abbay, and Michael Plass. ) 1 buf opsaft 1 null put font12 setfont opsbef 2 {font12 setfont} put (The Interpress Page and Document) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 405.072 moveto font12 setfont (Description Language.) show font0 setfont ( IEEE Computer, Vol 19, Number 6, June 1986, pp. 72-77.) show 120.45 390.5901 moveto gsave font0 setfont ([<52>]: Atkinson, Russ, Alan Demers, Carl Hauser, Christian Jacobi, Peter Kessler, and) justify grestore 150.5625 378.5454 moveto /colwidth 363.395 def gsave font0 setfont opsbef 0 {font0 setfont} put (Mark Weiser. ) 0 buf opsaft 0 null put font12 setfont opsbef 1 {font12 setfont} put (Experiences Creating a Portable Cedar) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (. Proceedings of the) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 366.5002 moveto gsave font0 setfont (SIGPLAN '89 conference on Programming Language Design and Implmentation,) justify grestore 150.5625 354.4553 moveto font0 setfont (held in Portland, Oregon, June 21-23, 1989, pp. 322-329. ) show 150.5625 339.9735 moveto /colwidth 92.08938 def gsave font1 setfont (available online as) justify grestore 180.675 327.9286 moveto font0 setfont ([PCedar2.0]<Documentation>ExperiencesCreatingAPortableCedar) show font7 setfont (.) show font0 setfont (tioga) show 120.45 313.4468 moveto font0 setfont (<53>: Hauser, Carl. ) show font12 setfont (PFS.) show font0 setfont ( [Cedar10.1]<PFS>PFSDoc.tioga) show 120.45 298.9651 moveto /colwidth 393.5075 def gsave font0 setfont opsbef 0 {font0 setfont} put (<54>: Sturgis, Howard, and Marvin Theimer. ) 0 buf opsaft 0 null put font12 setfont opsbef 1 {font12 setfont} put (The Cirio Debugger: a multi-language, multi-) 1 buf opsaft 1 null put mixedjustify grestore 150.5625 286.9201 moveto font12 setfont (target-world debugger.) show font0 setfont ( [PCedar2.0]<Documentation>CirioDoc.tioga) show 120.45 272.4384 moveto /colwidth 351.0816 def gsave font0 setfont opsbef 0 {font0 setfont} put (<55>: Pier, Ken. ) 0 buf opsaft 0 null put font12 setfont opsbef 1 {font12 setfont} put (Life On SPARCstation) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (. Available on-line as) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 260.3934 moveto font0 setfont ([Cedar10.1]<CedarDoc>LifeOnSPARCstation.tioga) show 120.45 245.9118 moveto /colwidth 381.1357 def gsave font0 setfont opsbef 0 {font0 setfont} put (<56>: Pelegri-Llopart, Eduardo. ) 0 buf opsaft 0 null put font12 setfont opsbef 1 {font12 setfont} put (Life in PCedar) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (. Available on-line as) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 233.8668 moveto font0 setfont ([PCedar2.0]<OldDocumentation>LifeInPCedar.tioga) show 120.45 219.385 moveto font0 setfont (<57>: ) show font12 setfont (Cedar Language Overview) show font0 setfont (. [Cedar10.1]<CedarDoc>LanguageOverviewDoc.tioga) show 120.45 204.9034 moveto /colwidth 198.8525 def gsave font0 setfont opsbef 0 {font0 setfont} put (<58>: ) 0 buf opsaft 0 null put font12 setfont opsbef 1 {font12 setfont} put (Cedar/Mesa Language Changes) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (.) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 192.8584 moveto font0 setfont ([Cedar10.1]<MimosaOnly>LanguageChangesSummary.tioga) show 120.45 178.3766 moveto /colwidth 393.5075 def gsave font0 setfont opsbef 0 {font0 setfont} put (<59>: Johnson, Sharon, and John Larson. ) 0 buf opsaft 0 null put font12 setfont opsbef 1 {font12 setfont} put (Hitchhikers Guide to External Mail: Using the) 1 buf opsaft 1 null put mixedjustify grestore 150.5625 166.3316 moveto /colwidth 190.4389 def gsave font12 setfont opsbef 0 {font12 setfont} put (PARC ARPA Internet Mail Gateway) 0 buf opsaft 0 null put font0 setfont opsbef 1 {font0 setfont} put (.) 1 buf opsaft 1 null put mixedjustify grestore 150.5625 154.2867 moveto font0 setfont ([CedarChest7.0]<Documentation>ExternalMail.tioga) show 120.45 139.805 moveto font0 setfont (<60>: ) show font12 setfont (Peanut) show font0 setfont (. [PCedar2.0]<Documentation>PeanutDoc.tioga) show 120.45 125.3233 moveto font0 setfont (<61>: ) show font12 setfont (BlackCherry) show font0 setfont (. [PCedar2.0]<Documentation>BlackCherryDoc.tioga) show 120.45 110.8416 moveto /colwidth 372.6442 def gsave font0 setfont opsbef 0 { font0 setfont currentpoint /undery exch def /underx exch def} put (<62>: Tammer, Laine. ) 0 buf opsaft 0 { 1.0 setlinewidth currentpoint currentpoint pop undery -2.3 sub dup underx exch vec moveto} put font12 setfont opsbef 1 { font12 setfont currentpoint /undery exch def /underx exch def} put (Doggy-Paddling in PCedar) 1 buf opsaft 1 { 1.0 setlinewidth currentpoint currentpoint pop undery -2.3 sub dup underx exch vec moveto} put font0 setfont opsbef 2 { font0 setfont currentpoint /undery exch def /underx exch def} put (. /Indigo/CSL-) 2 buf opsaft 2 { 1.0 setlinewidth currentpoint currentpoint pop undery -2.3 sub dup underx exch vec moveto} put mixedjustify grestore 150.5625 98.7966 moveto font0 setfont currentpoint /undery exch def /underx exch def (Notebook/Entries/90CSLN-0003/IntroPCedarUse.tioga) show 1.0 setlinewidth currentpoint currentpoint pop undery -2.3 sub dup underx exch vec moveto 120.45 84.31496 moveto /colwidth 370.165 def gsave font0 setfont opsbef 0 {font0 setfont} put (<63>: Tammer, Laine. ) 0 buf opsaft 0 null put font12 setfont opsbef 1 {font12 setfont} put (Tioga Editing in PCedar) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (. /Indigo/CSL-) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 72.26993 moveto font0 setfont (Notebook/Entries/90CSLN-0003/TiogaEditingInPCedar.tioga) show grestore grestore % end page 33 showpage %%page 34 gsave 2834.646 2834.646 scale gsave 0.0254 dup matrix scale concat 0.013837 dup matrix scale concat 282.1476 38.135 moveto font3 setfont (CEDAR 10.1 ) show font0 setfont 514.0624 746.79 moveto (34) show 120.45 684.9593 moveto /colwidth 354.1319 def gsave font0 setfont opsbef 0 {font0 setfont} put (<64>: Tammer, Laine. ) 0 buf opsaft 0 null put font12 setfont opsbef 1 {font12 setfont} put (Using the Commander) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (. /Indigo/CSL-) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 672.914 moveto font0 setfont (Notebook/Entries/90CSLN-0003/UsingTheCommander.tioga) show 120.45 658.6269 moveto font0 setfont (<65>: ) show font12 setfont (Introduction to Cedar) show font0 setfont (. /CedarChest7.0/Documentation/Introduction.tioga) show 120.45 644.3396 moveto /colwidth 331.6267 def gsave font0 setfont opsbef 0 {font0 setfont} put (<66>: Jacobi, Christian) 0 buf opsaft 0 null put font12 setfont opsbef 1 {font12 setfont} put (. The X Window System Version 11) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (.) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 632.2948 moveto font0 setfont (/Cedar10.1/X11/X11Doc.tioga and /Cedar10.1/X11Viewers/X11ViewersDoc.tioga) show 120.45 618.0076 moveto font0 setfont (<67>: ) show font12 setfont ( Cedar Document Style) show font0 setfont (. /CedarChest7.0/Documentation/SampleSheet.tioga) show 120.45 603.7203 moveto /colwidth 365.8182 def gsave font0 setfont opsbef 0 {font0 setfont} put (<68>: Plass, Michael, et al. ) 0 buf opsaft 0 null put font12 setfont opsbef 1 {font12 setfont} put ( RawViewers: PCedar Viewers without X) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (.) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 591.6754 moveto font0 setfont (/Cedar10.1/RawViewers/RawViewersDoc.tioga) show 120.45 577.388 moveto font0 setfont (<69>: Atkinson, Russ, et al. ) show font12 setfont ( PCRDOC: Portable Common Runtime) show font0 setfont (. ) show 120.45 563.1011 moveto /colwidth 241.2686 def gsave font0 setfont opsbef 0 {font0 setfont} put (<70>: Plass, Michael. ) 0 buf opsaft 0 null put font12 setfont opsbef 1 {font12 setfont} put ( The Cedar Commander) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (.) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 551.0561 moveto font0 setfont (/Cedar10.1/Commander/CommanderDoc.tioga) show 120.45 536.7688 moveto /colwidth 393.5075 def gsave font0 setfont opsbef 0 {font0 setfont} put ([71]: ) 0 buf opsaft 0 null put font12 setfont opsbef 1 {font12 setfont} put ( ) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (Weiser, Mark, Alan Demers, and Carl Hauser. ) 2 buf opsaft 2 null put font12 setfont opsbef 3 {font12 setfont} put (The Portable Common Runtime) 3 buf opsaft 3 null put mixedjustify grestore 150.5625 524.7238 moveto /colwidth 363.395 def gsave font12 setfont opsbef 0 {font12 setfont} put (Approach to Interoperability) 0 buf opsaft 0 null put font0 setfont opsbef 1 {font0 setfont} put (. Proceedings of the 12th ACM Symposium on) 1 buf opsaft 1 null put mixedjustify grestore 150.5625 512.6788 moveto /colwidth 363.395 def gsave font0 setfont (Operating Systems Principles, pp. 114-122. Special issue of SIGOPS Operating) justify grestore 150.5625 500.6338 moveto font0 setfont (Systems Review, volume 23, number 5.) show 120.45 486.3467 moveto /colwidth 369.2985 def gsave font0 setfont opsbef 0 { font0 setfont currentpoint /undery exch def /underx exch def} put (<72>: Pelegri-Llopart, Eduardo, and Ken Pier. ) 0 buf opsaft 0 { 1.0 setlinewidth currentpoint currentpoint pop undery -2.3 sub dup underx exch vec moveto} put font12 setfont opsbef 1 { font12 setfont currentpoint /undery exch def /underx exch def} put ( DF Suites in PCedar) 1 buf opsaft 1 { 1.0 setlinewidth currentpoint currentpoint pop undery -2.3 sub dup underx exch vec moveto} put font0 setfont opsbef 2 { font0 setfont currentpoint /undery exch def /underx exch def} put (.) 2 buf opsaft 2 { 1.0 setlinewidth currentpoint currentpoint pop undery -2.3 sub dup underx exch vec moveto} put mixedjustify grestore 150.5625 474.3019 moveto font0 setfont currentpoint /undery exch def /underx exch def (/PCedar2.0/Documentation/DFSuitesDoc.tioga) show 1.0 setlinewidth currentpoint currentpoint pop undery -2.3 sub dup underx exch vec moveto 120.45 460.0147 moveto /colwidth 337.8231 def gsave font0 setfont opsbef 0 {font0 setfont} put (<73>: ) 0 buf opsaft 0 null put font12 setfont opsbef 1 {font12 setfont} put ( A Glossary of Terms, Subsystems, Directories, and Files) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (.) 2 buf opsaft 2 null put mixedjustify grestore 150.5625 447.9697 moveto font0 setfont (/Cedar7.0/Documentation/Glossary.tioga) show 120.45 433.6825 moveto font0 setfont (<74>: ) show font12 setfont ( ) show font0 setfont (Irish, Wesley.) show font12 setfont ( Maintain) show font0 setfont (. /Cedar10.1/Maintain/MaintainDoc.tioga) show 120.45 419.3954 moveto font0 setfont (<75>: ) show font12 setfont ( ) show font0 setfont (Spreitzer, Mike.) show font12 setfont ( MakeDo) show font0 setfont (. /Cedar10.1/MakeDo/MakeDoDoc.tioga) show 120.45 405.1081 moveto /colwidth 209.0071 def gsave font0 setfont opsbef 0 {font0 setfont} put (<76>: ) 0 buf opsaft 0 null put font12 setfont opsbef 1 {font12 setfont} put ( ) 1 buf opsaft 1 null put font0 setfont opsbef 2 {font0 setfont} put (Nichols, David.) 2 buf opsaft 2 null put font12 setfont opsbef 3 {font12 setfont} put ( Cedar Essentials) 3 buf opsaft 3 null put font0 setfont opsbef 4 {font0 setfont} put (.) 4 buf opsaft 4 null put mixedjustify grestore 150.5625 393.0632 moveto font0 setfont (/PCedar2.0/Documentation/CedarEssentials.tioga) show 120.45 378.7759 moveto font0 setfont (<77>: ) show font12 setfont ( Stylizing Cedar Programs) show font0 setfont (. /Cedar10.1/CedarDoc/CedarProgramStyle.tioga) show 120.45 364.4889 moveto grestore grestore % end page 34 showpage %%Trailer %%Pages: 34