From 08852f7b55bb5b89f478bb1f453e2943ab443810 Mon Sep 17 00:00:00 2001 From: Larry Masinter Date: Fri, 7 Jul 2023 11:25:17 -0700 Subject: [PATCH] Add TEDIT files for many Library packages (#1181) * WHERE-IS library doc * Gather keyboard files, add VIRTUAL.TEDIT * add UNIXCOMM.TEDIT * rest of TEdit library files * save table of contents index for reworking * Don't move around VIRTUALKEYBOARDS files; will move in separate commit * Add MATMULT from Envos/Medley --- library/000docs/000-COVER.TEDIT | Bin 0 -> 1685 bytes library/000docs/001-TITLEPAGE.TEDIT | Bin 0 -> 4149 bytes library/000docs/002-TOC.TEDIT | Bin 0 -> 4734 bytes library/000docs/003-LOF.TEDIT | Bin 0 -> 3635 bytes library/000docs/004-PREFACE.TEDIT | Bin 0 -> 7015 bytes library/000docs/005-INTRO.TEDIT | Bin 0 -> 14687 bytes library/000docs/006-INDEX.TEDIT | 91 +++++++++++ library/CENTRONICS.TEDIT | Bin 0 -> 6294 bytes library/CHARCODETABLES.TEDIT | Bin 0 -> 9686 bytes library/CHAT.TEDIT | 107 +++++++++++++ library/CMLFLOATARRAY.TEDIT | Bin 0 -> 12412 bytes library/COLOR1.TEDIT | Bin 0 -> 50717 bytes library/COLOR2.TEDIT | 236 ++++++++++++++++++++++++++++ library/COPYFILES.TEDIT | Bin 0 -> 12885 bytes library/DATABASEFNS.TEDIT | Bin 0 -> 9613 bytes library/DEDIT.TEDIT | Bin 0 -> 54174 bytes library/EDITBITMAP.TEDIT | Bin 0 -> 44353 bytes library/ETHERRECORDS.TEDIT | Bin 0 -> 8451 bytes library/FILEBROWSER.TEDIT | Bin 0 -> 216971 bytes library/FONTSAMPLE.TEDIT | Bin 0 -> 8844 bytes library/FTPSERVER.TEDIT | Bin 0 -> 7563 bytes library/GCHAX.TEDIT | Bin 0 -> 27218 bytes library/GRAPHER.TEDIT | Bin 0 -> 73297 bytes library/GRAPHZOOM.TEDIT | Bin 0 -> 5767 bytes library/HASH.TEDIT | 33 ++++ library/HASHFILE.TEDIT | Bin 0 -> 27245 bytes library/MASTERSCOPE.TEDIT | 116 ++++++++++++++ library/MATMULT.TEDIT | 31 ++++ library/READNUMBER.TEDIT | Bin 0 -> 13810 bytes library/TCPIP.TEDIT | Bin 0 -> 119144 bytes library/TELERAID.TEDIT | Bin 0 -> 32894 bytes library/TEXEC.TEDIT | Bin 0 -> 10312 bytes library/TEXTMODULES.TEDIT | Bin 0 -> 48369 bytes library/UNIXCHAT.TEDIT | Bin 0 -> 5867 bytes library/UNIXCOMM.TEDIT | Bin 0 -> 5478 bytes library/VIRTUAL.TEDIT | Bin 0 -> 53052 bytes library/WHERE-IS.TEDIT | Bin 0 -> 9599 bytes 37 files changed, 614 insertions(+) create mode 100644 library/000docs/000-COVER.TEDIT create mode 100644 library/000docs/001-TITLEPAGE.TEDIT create mode 100644 library/000docs/002-TOC.TEDIT create mode 100644 library/000docs/003-LOF.TEDIT create mode 100644 library/000docs/004-PREFACE.TEDIT create mode 100644 library/000docs/005-INTRO.TEDIT create mode 100644 library/000docs/006-INDEX.TEDIT create mode 100644 library/CENTRONICS.TEDIT create mode 100644 library/CHARCODETABLES.TEDIT create mode 100644 library/CHAT.TEDIT create mode 100644 library/CMLFLOATARRAY.TEDIT create mode 100644 library/COLOR1.TEDIT create mode 100644 library/COLOR2.TEDIT create mode 100644 library/COPYFILES.TEDIT create mode 100644 library/DATABASEFNS.TEDIT create mode 100644 library/DEDIT.TEDIT create mode 100644 library/EDITBITMAP.TEDIT create mode 100644 library/ETHERRECORDS.TEDIT create mode 100644 library/FILEBROWSER.TEDIT create mode 100644 library/FONTSAMPLE.TEDIT create mode 100644 library/FTPSERVER.TEDIT create mode 100644 library/GCHAX.TEDIT create mode 100644 library/GRAPHER.TEDIT create mode 100644 library/GRAPHZOOM.TEDIT create mode 100644 library/HASH.TEDIT create mode 100644 library/HASHFILE.TEDIT create mode 100644 library/MASTERSCOPE.TEDIT create mode 100644 library/MATMULT.TEDIT create mode 100644 library/READNUMBER.TEDIT create mode 100644 library/TCPIP.TEDIT create mode 100644 library/TELERAID.TEDIT create mode 100644 library/TEXEC.TEDIT create mode 100644 library/TEXTMODULES.TEDIT create mode 100644 library/UNIXCHAT.TEDIT create mode 100644 library/UNIXCOMM.TEDIT create mode 100644 library/VIRTUAL.TEDIT create mode 100644 library/WHERE-IS.TEDIT diff --git a/library/000docs/000-COVER.TEDIT b/library/000docs/000-COVER.TEDIT new file mode 100644 index 0000000000000000000000000000000000000000..a8a18660a0575e0f49065acf48a41c9993bf4da5 GIT binary patch literal 1685 zcmd^--Ad~~5XYxcPpy)h0|!KJ2E8y5ktR)2dl~DtU5IH(qIkS3xJp4=Xwn;>!pHC# zd^%@0t%_A>a_f@p$L#!O=D)j^uG_lq=z8r+jAx=2PBPIRPH$7ZOvUst#qMl$D^Pln zpGAI=co4%>pmk#DHGg(LOS5CNS}jWl+18AJ#|aw7!0$2)d4Mz3y9qZ^>Ha1%}t&AS?&uKr8J6|OK2Mqc6 zZZdrwW~0fN{A~9W-6l3%2OFL#y~(%=E0aj5jxL4xU=wzosH94e?I1b1o`cOg5i-0< zU=hV%wdN(Rs&=%bw&AU+_7l6BS~?3Szk|lSb@hCfI65uUtL#3P443sE3!i zeR*)_rguVvo|Z$)&I^l7^B2NTX$V?uemmyGO=04$5OG9RJr^Rp!o*oYLLSFDXs`oY z3BO=*)W7gUTB$~N^AD=+z>j0zroaoM95uR6*;in@7hMMIq|1^{SosN%*G%4dUsdxm ubayr&alkz>6%PGs>qyPOd)yb-000Hbiy}kh&iud#Y literal 0 HcmV?d00001 diff --git a/library/000docs/001-TITLEPAGE.TEDIT b/library/000docs/001-TITLEPAGE.TEDIT new file mode 100644 index 0000000000000000000000000000000000000000..c8d4ba694f181c83848177f34b0ad4ed46c6d7ea GIT binary patch literal 4149 zcmd^BO>-JY5FKIpEAqxwik-@_%Q*y6hynzXl}ZjPge9u@DnN?t+ps&p#LF(3*|khg zx#XT}{z`s>PtKpoP3fKmX#rW5bj_Bu?7r!K-LI#6pdnmOOraw@!L@*5E)QVY(J;~> z6!!KCR>8sxZ$-;0S=Qqd;YZ?eUFr$cWnXbMg+|~;p3p$+XhjaT>nfo&IKg-<{7^#} z{9qYZ>sSi~2Z0mO0uN>2TZM9I4{E-PF_q*VbOP>LUG77LD=*MlsMr8|rTlK*Diz9G z<^0R7y`5bQl`dv1t6uB2pE$fj^T1eWKnX&<6K-zKB{gse6?es$tG5sg=1!+V1@AwCSyy5xbtsf@6Qf|O=Ro7t?xDonGGar~DoV7^)7`037hSPS_8Eff@pGJWN|UIJJzfducqDdXP@H?ZYZGYjwb}_D+VZ5xj{n1tF(Al#$}nw^u#wnV?2cu>@#T z-YLQE_RE+)gO0aRysR}&@uq4M4L?)6y>nBw3E!Kk#afi&J@}uB&16hx-)B$pD}}L5 z)@1igtFJM(#*R{E^;5UlUr^?$>lG~8u3w{-;Wv5AYZz14+iuNle>6FuZOTn>uk{iyMErq$So@a| zW$LpDqY>Jg3vKi4WBh!@eV?#|ZEUhZXUyy%V;hM>?+S*>=NX#f5Un^_@@R`|=d z+G)-MFJPCR#E@cN;{7>2#*GsLPm;h>d`aQ*#!&}c{fi=;BKDu zgT$n7bRx+H0;WAE8)BtX#w;d*ui~{!ixrozmo3aspCpF~n*`QZdM?oz=CC79ycRqk zBVcA>PDOy(qa?86@`8wx77Gfffgx!@z{xVOw+v8dLy9AmG7qLJD9kEi&uzY&dl5hs n$IHM^%RqJ+_-h$h5q#(Bt}X07<@d*OFiIQ)-tVyfZ-4&>^2g`L literal 0 HcmV?d00001 diff --git a/library/000docs/002-TOC.TEDIT b/library/000docs/002-TOC.TEDIT new file mode 100644 index 0000000000000000000000000000000000000000..4ea2f8d579f24682717b2a25aef2ebc7475c59a1 GIT binary patch literal 4734 zcmeHJ%Wm676s2q@4I8-6v_Xq52I)ou;((-{2D+i8p+uM>*&$^++0oXZAs~qYMW=RG z{epf_Kc%aFMiyQ4-Wf`kL@COn=%ytsiF0_*xz8C|KRk5e*_1f(Wg4Zoq@N70M|}2_ z^!aeaZwccg9?dv0o@q}>Xr4Hfcou1UZb;oQIMhFkzEN-^cvwUmhj6I@zslldqUM3B ze)JOu*k{x-+f;oO$FQ>9ka?X!JG4Dljc)*{X|?)=R}BP$+pX;BA+PqH+b#8)#3H351VrR`+M!{`z!C*flOXHv;PrSZrbB~fOk zX>==W475o`3A!`XY86-0TXcpR5I_ywb)qaff%;n$DO>|mhYn*@*3>!(GDRJ1VjW!dqwFg8+yXW%``05` zLH!tkcoK`8rSD@9a)W*pPcrxj%+SEhPx(xi)6ikbcrD8Z~$-CTO`w24)+!{Uh544amo+BLI7nMe#6)n&2p; zH~cDJw;<(^-(>k#CUY3f2CjVpoy%0%&T18t5=b&0lN^E^&f+w?jz(l&D$`z^W|Rb7f{ao_89M z@{a?vLzvy|g%#57nJkBc0s3w;+Ydp-cF*jqo0_xCq=tCqSoNX5InHK^;J7OgQ z)-__8ecO3Xdek|iq1`r#cSf0GyLcXgM#$__>J6mA07`N9j9&Pr8^Fm!80`)mlaavj ze7abjQw*2%X~!P)F*eHP&IbWyqCi-{Abbv|FWgn2a;$GcbvBj`ieof2qSuMhYLRNA zB01$AH9JsHS+aZ)K8HXo&%;VHAl7TdXp(w;nHSQFP>@6y!2Q%U4^>8b5qZ@GezTtW=l7)h$*HTtwbm!(Fo~Lk z#b!9yhKG-o`+X1I-0s|;Bq)0@whDZgl!rYwaOkrx4K25{#a>LxeLQHL zR|-)8@afm^k!Ij%e||r&3>y*dq zfEd`hTcn6wmVtsrLG;m1(Sk)Gmx4vXOCh-e<z3Y3EA?&J!h->!T4W*sP$u%J=s zTp_UC$rVbt+sn!nZk(V(=({8RY(4$LjO}j2ck3D}6r4tkcCkGQ0B)d_I2IP-Xn-xY NG|>lv^4l-J{|%9o{rUg^ literal 0 HcmV?d00001 diff --git a/library/000docs/003-LOF.TEDIT b/library/000docs/003-LOF.TEDIT new file mode 100644 index 0000000000000000000000000000000000000000..dbba8ad9b5967b7a312fbbb4c83cde80c236e0d8 GIT binary patch literal 3635 zcmeHJ-IC%|5I%vO-NiAMT3T9qVY_+(*3MLb2{2`Ok%bdTO(1v@*cmM^GD~(QwGpO5 zaEg5dpJ5-sXYd*J3B1}1FMWW$vC8g*KtN`HW-V_t1H`)WiZ2-CahWri1SZ_TDLGp$h z$Tb9IS@+Lop$CP&d*;bj%CRh19OG70_1lX2t*5K@uQa-hg6TJFvK zAljQt^>BJ33;EjAr z5ib4lXmUx3s;Yd5o=2$%>P}`6jM5NQW3A)E5__pS!kwZ9obO)cA&LD810Tzf@Vh(3)mh|?4~gK z4yqWvp^wT*L*U z0@}_AW{j&6R!(#^tj^ZbVR0&T1d2Ed34S()C-dP^>c>RAdB>z-J&b8@(D|NzAYR%B}bJ# zWlxb8ANd?=u#Xp}wM!<{9vMnc=`t5lZLwMB(5a-o!^xU5&G++O^G z4PPqqf(@l2Vv9&JfvW~&_mg$c6q4W@I7uI}TTN55ZKIjAFLwWk6_$S_*!zhBR%s26 zn@xke6-Len>}J=(KN`J^@Ctipsk*{ek;s^1Z^vhe?RLb#B1_ zm5-I;R}509fH81$p>#V1QV%%=(&AH0>KwkE7TmN8B=i|svcQ*{z$Y&S;+I!eyXj~NvCb*zaj z8A(o>{t7Pm7yJW$!~O^^xMYSIu6kFVbM#>;iPLOhxB*XUzdG;vc;4rHyy|+bW_t0I zOz$vqqBH7-!X3Qjl4q@Qvy};GtiS1bdv}k05*Fj*9quQksmrkH6$-cLOKg)5yfY5 zI7DW0`iRS`H7!6fKhi4RrqvX_y z@^ew(OjI+C2V#!FhL>8wT;rPbeiEzSVO8qr^G%6`vaW3FwHMRMQ=IoIAo{Tz`g$VmAtXKRkuU zN3~b4w113VX}5P&prRt91t?ByhNV!o)E{PEq?mQM3n`if;`O|qfdf0fpC+VodMbSF z$DkC2prVoEstP5APA4k>#_lA<#4}TT+RNY>!6=L-Ss4W6O{TtJEefM#GzZcO&QQJ+ zFA=qPzAqtMbFV=k-8$Nq>mm zh*6GXgP;jF_FlUvkhCEZqnb)HfQI12#8pYmG;Eg;` zD9wk#hPrWhVkc_C!{Zap(*iBglosLF(R_{McLGWCl?D_y`u0JuqC$hNbIEUb|o zhCTqU7T4-Zi})`4NsM#x3k=w?`Lru?)zc;0gJYGrQUuu-lq3;C8zpH8dxv^>*1DjS? z_gXtT^$e4+!c-g>zt+iA2~U(x-!%G0uhXYhv;S1LtbVuEqm>o>)oEb2EZgYqu>Hrh zRj1W8TBFVN4cdCRfu~im&OKW#v)_L*pw(aPw{X`PJG*wB+Pf_)6A$(|cH1)cY(8>ShS*H5ddcmAid3f{kRQV$j+ zbzw1}`UZX8O%1m;H?CO@n-A{&cgx}bUH+f!@`VLqVHWQ=t1UT~zPMP7;mtk|ayI{yF*$6vZ}g_m2| zC3le8RlciExXKnl$(>jg^ZCPDT1|UTyJ_RUb3Ki#3LjuPFM{*~?VYyS8Vrm!T0%b1 zD+%YuA8NOYcaGdA3@YMp6)q~`t32bB7sJ8Lx3ycgZgq`b%Pd8EUwgaT$2(0=n}?dq zGO)0o%jU5e+p?T;8ELw+YweqQb4Ry3y`_@=+z04qldthtX1Kx2oBRavFK~^HK)DHKLZ&Tk*sZ|H+;>2D`q2?@xJ|3;4Lewk(1lFWmWf;m(iV zVCSa`ZPpj=2xpg~mb)w8;R6P_6Csg#79v?i^2n0Ua~(F2T-0-kU)-X;s!i(ugDlu5%+(j57i;qW2;6=li-$qO47 zX)O+0q_w~;0r(^<_%{zJ`=E}uCG>?Pa)7I5#g$3?K_2V_UU2w&F3DLE72f$U-zlJ0 zN}Q33G3)+3*Ui0r!~)(a%0{?mNv=Y?WWguA;A0hma+UA$4yykEn literal 0 HcmV?d00001 diff --git a/library/000docs/005-INTRO.TEDIT b/library/000docs/005-INTRO.TEDIT new file mode 100644 index 0000000000000000000000000000000000000000..80e20b3d4140c3797c30aee5922d94434828e3a7 GIT binary patch literal 14687 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 F{{n_3(KY}8 literal 0 HcmV?d00001 diff --git a/library/000docs/006-INDEX.TEDIT b/library/000docs/006-INDEX.TEDIT new file mode 100644 index 00000000..980b40e7 --- /dev/null +++ b/library/000docs/006-INDEX.TEDIT @@ -0,0 +1,91 @@ +1 Lisp Library Modules, Medley Release 2.0 1 Lisp Library Modules, Medley Release 2.0 INDEX 1 INDEX 1 INDEX 6 A Abort a Print Job 101,102 Aborting Commands 76 Access Functions 251 Add New Keyboards to the List 310 add-form (Function) 299 ADD.BORDER.TO.BITMAP (Function) 65 ADD.PROCESS (Function) 266 Adding FileBrowser Commands 92 Address space of the internetwork 261 ADJUSTCOLORMAP (Function) 37 Administrator Commands for NSMaintain 206 ADVISE (Function) 283 Aliases 203 ALLOCATE.ETHERPACKET (Function) 270 Analyzing user Functions 157 Application layer 261 ARPANET 253 Array Functions 193 Array operations 29 Assignments 189 B BACKWARD FIND (Command) 288 BEGINDST (Variable) 199 BIN (Function) 222 BIT.IN.COLUMN (Function) 65 BIT.IN.ROW (Function) 65 BITBLT (Function) 116 BITMAPCREATE WIDTH HEIGHT BITSPERPIXEL (Function) 38 BITSPERPIXEL BITMAP (Function) 38 BOUT (Function) 222 BREAK (Function) 283 Broadcast address 262 Browser 111 describe window 12 printout window 12 BROWSER window 74 BROWSERBOXING (Variable) 12 BROWSERFORMAT (Variable) 12 C C-Shell 303 C4 printed circuit board 1 CACHE/NODE/LABEL/BITMAPS (Variable) 116 Call graph 233 Call stack 233 Calling the Keyboard Editor 150 CALLS (Function) 175 CALLSCCODE (Function) 175 Cash-File 15 Centronics 17 cable 17 port 1 CENTRONICS.RESET (Function) 17 CH.DEFAULT.DOMAIN (Variable) 206 CH.DEFAULT.ORGANIZATION (Variable) 206 Changing an Existing Keyboard 150 Character framing errors 224 CharCodeTables 19 Chat 21,303 CHAT (Function) 22,303 Chat connections 22 Chat Menu 23 Chat window 146 CHAT.ALLHOSTS (Variable) 25 CHAT.DISPLAYTYPES (Variable) 24 CHAT.EMACSCOMMANDS (Variable) 25 CHAT.FONT (Variable) 25 CHAT.IN.EMACS? (Variable) 26 CHAT.INTERRUPTS (Variable) 24 CHAT.KEYACTIONS (Variable) 24 CHAT.PROTOCOLTYPES (Variable) 26 CHAT.TTY.PROCESS (Variable) 25 CHAT.WINDOW.REGION (Variable) 25 CHAT.WINDOW.SIZE (Variable) 25 Chatting to a host 258 CHECKSAMEDIR (Function) 231 Clean-Up After Copying Files 46 Clearinghouse 26 Clearinghouse service 203 CLOSE (Function) 305 close-hash-file (Function) 134 CLOSECHATWINDOWFLG (Variable) 25 CLOSEF (Function) 9,222 CLOSEHASHFILE (Function) 128 CmlFloatArray 29 CMYCOLORMAP (Function) 36 COLLECTINUSE (Function) 108 COLLISIONS (Function) 108 COLORDISPLAY (Function) 33 COLORDISPLAYP (Function) 33 COLORIZEBITMAP (Function) 44 COLORLEVEL (Function) 37 COLORMAPCOPY (Function) 36 COLORMAPCREATE (Function) 36 COLORNAMES (Association List) 34 COLORNUMBERP (Function) 35 COLORSCREEN (Function) 39 COLORSCREENBITMAP (Function) 38 COMMAND menu 74 Common Lisp 288 COMPILE (Command) 86 Conjunctions of Sets 168 Connecting to a host 258 Control-E (Command) 76 Control-F (Command) 53 Control-O (Command) 139 Control-P (Command) 280 Control-Q (Command) 75,87 Control-S (Command) 53 Control-Z (Command) 53 Conversation Mode 45 convert-loaded-files (Variable) 292 COPY (Command) 78 Copy-Selection 53, 77 COPYFILE (Function) 46,267 CopyFiles 45 COPYFILES (Function) 45 COPYHASHFILE (Function) 130 CPE FP 17 CPE-FP upgrade 1 Create a Key Pad for Repeated Use 216 CREATE-PROCESS-STREAM (Function) 305 CREATE.NUMBERPAD.READER (Function) 216 CREATEHASHFILE (Function) 128 CREATEW (Function) 41 Creating 4045XLP Master Files 4 a graph 112 a key pad 215 a new bitmap 64 a new keyboard 149 a TableBrowser 247 horizontal rules 139 HOST.TXT file 254 new keyboard configurations 153 objects 206 the local IP.INIT file 256 Creation dates 46 Cumulative mode 238 CURSORPOSITION (Function) 44 CURSORSCREEN (Function) 44 Customizing Chat 24 FileBrowser 89 Cyclic graphs 111 D DataBaseFns 49 Databases 313 using 313,314 Datamedia 2500 21 Daughter 114 Debuggee 279 Debugger 279 DECREASING.FONT. LIST (Variable) 125 DEdit 51,307 Command menu 54 Functions 54 idioms 59 parameters 57 window 52 DEDITLINGER (Variable) 57 DEDITTYPEINCOMS (Variable) 57 DEFAULT-CLEANUP-COMPILER (Variable) 86 DEFAULT.GRAPH.WINDOWSIZE (Variable) 117 DEFAULTCHATHOST (Variable) 22,25 DEFAULTPRINTERTYPE (Variable) 2 DEFAULTPRINTINGHOST (Variable) 2,213 defdefiner-macros (Variable) 292 DEFINEKEYBOARD (Function) 311 Defining a Virtual Keyboard 310 DEGREES-TO-RADIANS (Function) 196 DELETE (Command) 77 Deleting objects 206 Device Errors 17 Differences between TExec and TEdit 287 Digital VT100 21 Directed acyclic graph 113 DIRECTORIES (Variable) 2,258 Directory-only lines 75 DIRECTORYNAME (Function) 231 Display-Only a Keyboard 309 Displayer 233 DISPLAYFONTDIRECTORIES (Variable) 100 DISPLAYGRAPH (Function) 117 Displaying a graph 116 a stack 280 Displaystream graphics 288 DM2500 Chat 27 DODIP.HOSTP (Function) 272 Domain 203 manipulating 208 DOMAIN.GRAPH (Function) 276 DOMAIN.INIT (Function) 276 DOMAIN.LOOKUP (Function) 276 DOMAIN.LOOKUP ADDRESS (Function) 276 DOMAIN.LOOKUP NAMESERVER (Function) 276 DOMAIN.TRACE (Function) 276 DRAWBETWEEN (Function) 43 DRAWLINE (Function) 43 DRAWTO (Function) 43 DSPBACKCOLOR (Function) 42 DSPCOLOR (Function) 42 DT.EDITMACROS (Variable) 58 DUMPDATABASE (Function) 177 DUMPDB (Function) 50 DUMPGRAPH (Function) 121 Dvorak keyboard 311 Dynamic structure 233 E E-30 option kit 1 E30 option 219 EDIT (Command) 84 Edit buffer window 52 EDIT.BITMAP (Function) 61 EditBitMap 61 sub-menu 62 window 62 EDITBM (Function) 61 EDITCOLORMAP (Function) 37 EDITCONFIGURATION (Function) 154 EDITEMBEDTOKEN (Variable) 57 EDITGRAPH (Function) 121 EDITGRAPHMENU 119 EDITGRAPHMENUCOMMANDS (Variable) 119 Editing a bitmap in a document 64 editing a graph 117 existing bitmap 63 keyboard configuration 154 EDITKEYBOARD (Function) 150 EDITMODE (Function) 52 EDITMODE (Variable) 84 Effecting MasterScope Analysis 171 Element patterns 185 Embedding and extracting 59 ENDDST (Variable) 199 Entering DEdit Commands 54 Environmental and Lisp mappings 95 EOLCONVENTION (Variable) 272 Error Condition Reporting 224 ERRORPUP (record) 70 ERRORXIP (record) 69 Establishing a Connection 143 et FX-80 Fast Mode 101 ETHERHOSTNUMBER (Variable) 4,280 Ethernet 260 Ethernet packet 264 EtherRecords 69 EVALUATE-POLYNOMIAL (Function) 31 expr definitions of Functions 171 EXPUNGE (Command) 86 Extend the selection 75 Extended Processor board 17 Extended processor option 29 External Communication Service 27 F FASSOC (Function) 121 Fast mode FX-80 101 FASTFX80-DEFAULT-DESTINATION (Variable) 100 FB (Command) 90 FB.ALLOW.ABORT (Function) 94 FB.BROWSERFONT (Variable) 92 FB.DEFAULT.EDITOR (Variable) 84,92 FB.DEFAULT.INFO (Variable) 87,90 FB.DEFAULT.NAME.WIDTH (Variable) 91 FB.FETCHFILENAME (Function) 93 FB.HARDCOPY.DIRECTORY.FONT (Variable) 92 FB.HARDCOPY.FONT (Variable) 92 FB.ICONFONT (Variable) 91 FB.INFO.FIELDS (Variable) 91 FB.INFO.MENU.ITEMS (Variable) 91 FB.MENU.ITEMS (Variable) 92 FB.PROMPTFONT (Variable) 92 FB.PROMPTLINES (Variable) 92 FB.PROMPTW.FORMAT (Function) 93 FB.PROMPTWPRINT (Function) 93 FB.PROMTFORINPUT (Function) 94 FB.SELECTEDFILES (Function) 93 FB.TABLEBROWSER (Function) 93 File Manager functions, changed 313 File name translation Function 269 File transfer using RS232 226 FILEBROWSE (Command) 84 FileBrowser 71 Functions 89 Variables 90 FILEBROWSER (Function) 89 filecom-specifier (Function) 299 Filing operations 267 FILING.ENUMERATION.DEPTH (Variable) 92 FIND-ARRAY-ELEMENT-INDEX (Function) 31 FINDPOINTER (Function) 109 FINDPOINTERS.OF.TYPE (Function) 109 FLIPNODE (Function) 120 Floating-point vector 29 FNT.DISPLOOK (Function) 96 FNT.DISPTBLE (Function) 96 FNT.MAKEBOOK (Function) 95 Font mappings 95 FontSample 95 FORCEOUTPUT (Function) 222 Forest 113 form-specifier (Function) 299 FORWARD FIND (Command) 288 FREEVARS (Function) 175 FROM.SCREEN.BITMAP (Function) 66 FTP service 268 FTPDEBUG (Function) 268 FTPserver 97 FTPSERVER (Function) 4,97 FTPSERVER.DEFAULT.HOST (Variable) 97 Function-calling structures 111 Functions for saving work 283 Functions for writing routines 176 FX Printer Compatibility 102 FX-80 DIP Switch Settings 100 driver 99 family 99 serial Interface 99 FX80-PRINT (Function) 102 G GapTelnet 26 Garbage collector 284 Gateway Access Protocol 26 GCHax 105 General Purpose Records 69 Get, Set Parameters via Inspector Window 7 get-cash-file (Function) 15 GETBOXSCREENPOSITION (Function) 40 GETBOXSCREENREGION (Function) 41 GETFILEINFO (Function) 267 GETHASHTEXT (Function) 129 GETHASHVILE (Function) 129 GETRELATION (Function) 176 GETSCREENPOSITION (Function) 40 GETTEMPLATE (Function) 174 GETTERMTABLE (Function) 288 Getting Hardcopy Directory Listings 77 Ghost boxes 238 Graph 11 data structure 120 nodes 111 GRAPH (record) 121 GRAPH/HARDCOPY/FORMAT (Variable) 117 Grapher 111,233 Grapher image objects 120 GRAPHEROBJ (Function) 120 GRAPHERPROP (Function) 121 Graphics interface 99 GRAPHNODE (record) 122 GRAPHREGION (Function) 120 GraphZoom 125 GRAYCOLORMAP (Function) 36 Groups 207 H HANZON Universal Card 99 HARDCOPY (Command) 81 HARDCOPYGRAPH (Function) 117 Hash tables 178 Hash-File 133 HASHFILEDEFAULTSIZE (Variable) 130 HASHFILEDTBL (Variable) 130 HASHFILENAME (Function) 129 HASHFILEP (Function) 129 HASHFILEPLST (Function) 130 HASHFILEPROP (Function) 129 HASHLOADFACTOR (Variable) 130 HFGROWTHFACTOR (Variable) 131 HLS (Record) 35 HLSP (Function) 35 HOST&DIRECTORYFIELD (Function) 231 HOSTS.TEXT.DIRECTORIES (Variable) 276 HOSTS.TXT files, parsing 276 HPRINT (Function) 121 HQFX80-DEFAULT-DESTINATION (Variable) 100 HQFX80-FONT-DIRECTORIES (Variable) 100 HRule 139 HRULE.CREATE (Function) 139 HTE.READ.FILE (Function) 276 Hue$Lightness$Saturation Triples 35 I I/O processor 226 IDENTITY-3-BY-3 (Function) 194 IDENTITY-4-BY-4 (Function) 194 il:typesof (Function) 313 il:whereis (Function) 313 Imagestream 5 Include all files, both deleted and undeleted 75 Individual mode 239 INFO menu 74 Info Options window 87 Input conventions for FileBrowser commands 75 Inserting a segment 59 install-form (Function) 299 INTENSITIESFROM (Function) 36 INTERACT&ADD.BORDER.TO.BITMAP (Function) 66 INTERACT&SHIFT.BITMAP.DOWN (Function) 66 INTERACT&SHIFT.BITMAP.LEFT (Function) 66 INTERACT&SHIFT.BITMAP.RIGHT (Function) 66 Interactive File Transfers With Kermit or Modem 146 Interactive Terminal Service 27 Internal fields 241 Internet layer 260 INTERPRESSFONTDIRECTORIES (Variable) 19 Interpreter 239 Interrupt character 234 INVERT.BITMAP.B/W (Function) 65 INVERT.BITMAP.DIAGONALLY (Function) 65 INVERT.BITMAP.HORIZONTALLY (Function) 65 INVERT.BITMAP.VERTICALLY (Function) 65 Invisible characters 288 IP addresses 262 networks primer 261 packet building 274 packet sending 275 socket access 272 IP.ADD.PROTOCOL (Function) 273 IP.APPEND.BYTE (Function) 275 IP.APPEND.CELL (Function) 275 IP.APPEND.STRING (Function) 275 IP.APPEND.WORD (Function) 275 IP.CLOSE.SOCKET (Function) 274 IP.DELETE.PROTOCOL (Function) 274 IP.OPEN.SOCKET (Function) 274 IP.SETUPIP (Function) 275 IP.TRANSMIT (Function) 275 IPHOSTNAME (Function) 273 IPINIT (Function) 272 IPTRACE (Function) 273 Iterative statement operator 177 J join-comments (Variable) 292 K Kermit 144,226 Kermit menu 146 KERMIT.RECEIVE (Function) 145 KERMIT.SEND (Function) 144 KEYACTION (Function) 153 Keyboard editor menus 150 KeyboardEditor 149 L Landscape mode 1 Landscape printing 103 Lattices 111 Laying out a graph for display 112 LAYOUTGRAPH (Function) 112 LAYOUTSEXPR (Function) 115 LDESHELL (Variable) 303 Library module changes 5-9 summary 5-9 Library module dependencies 9 Linguistic tree 120 Link layer 260 Lisp interrupts 22 LISPUSERSDIRECTORIES (Variable) 258 LISPXREAD (Function) 53 List of nodes 112 List structure editor 51 LISTFILES (Function) 3,213 LOAD (Command) 84 LOAD (Function) 49 Load New Keyboards 310 load-textmodule (Function) 290 LOADDB (Function) 50 LOADDBFLG (Variable) 50 LOADFROM (Function) 49,85 Loading TCP 258 LOOKUPHASHFILE (Function) 129 Lost characters 224 Low-level TCP Functions 272 M Macro 177 Macro Expansion 170 MAINSCREEN (Function) 39 Maintenance panel halt 279 make-cash-file (Function) 15 make-hash-file (Function) 133 MAKE-HOMOGENEOUS-3-BY-3 (Function) 193 MAKE-HOMOGENEOUS-3-VECTOR (Function) 193 MAKE-HOMOGENEOUS-4-VECTOR (Function) 194 MAKE-HOMOGENEOUS-N-BY-3 (Function) 193 MAKE-HOMOGENEOUS-N-BY-4 (Function) 194 make-specifier (Function) 297 make-textmodule (Function) 291 MAKEFILE (Function) 49,78,231 MAKEFILEFORMS (Function) 231 Making a sysout that contains TCP-IP 259 Manipulating domains 208 groups 207 remote Vmem 284 MAP-ARRAY (Function) 29 MAPGC (Function) 110 MAPHASHFILE (Function) 130 MAPOFACOLOR (Function) 37 MAPRELATION (Function) 176 MASTERSCOPE (Function) 175 MasterScope 11,49,157 Commands 158 database 157 entries 175 relations 161 set specifications 164 templates 164 Match 183 MatMult 193 MATMULT-133 (Function) 195 MATMULT-144 (Function) 195 MATMULT-331 (Function) 195 MATMULT-333 (Function) 195 MATMULT-441 (Function) 195 MATMULT-444 (Function) 196 MATMULT-N33 (Function) 195 MATMULT-N44 (Function) 196 Matrix Creation Functions 193 Matrix multiplication 193 Matrix Multiplication Functions 195 Merged node 237 MIGRATIONS (Variable) 231 MiniServe 199 mlFloatArray 196 Modem 145,226 MODEM.RECEIVE (Function) 145 MODEM.SEND (Function) 145 Moving an expression 59 MSMACROPROPS (Variable) 170 MSMARKCHANGED (Function) 177 MSNEEDUNSAVE (Function) 176 Multiple DEdit commands 58 Multiple streams 9 MY.NSHOSTNUMBER (Variable) 200 N Network addresses 261 Network protocols 21,26 NETWORKOSTYPES (Variable) 257 NEW INFO FileBrowser Command 87 NODECREATE (Function) 112 Notecards 9 Noticing changes that require recompiling 177 NS characters 213 NS Chat 26 NS Records 69 NS.TO.PUP.ALIST (Variable) 200 NS.TO.PUP.FILE (Variable) 200 NSHOSTNUMBER (record) 69 NSMaintain 203 NSMAINTAIN (Function) 204 NSTIMESERVER (Function) 199 NTERACT&SHIFT.BITMAP.UP (Function) 66 NUMBERPAD.READ (Function) 216 O Objects 203 creating 206 deleting 206 Obtaining information in NSMaintain 204 Obtaining network addresses 254 open-hash-file (Function) 133 OPENHASHFILE (Function) 128 OPENIMAGESTREAM (Function) 9,101 Opening a 4045 Stream 7 a Centronics Stream 17 a Chat Connection 22 OPENP (Function) 222 OPENSTREAM (Function) 222 OPENWINDOWS (Function) 42 Operations on Multiple Items 249 Organization 203 OVERFLOWS (Function) 108 P Packages 124, 286 Parents 114 parity errors 224 PARSERELATION (Function) 176 PATLISPCHECK (Variable) 184 Pattern elements 185 match compiler 184 match expressions 185 PATVARDEFAULT (Variable) 185 PERSPECTIVE-4-BY-4 (Function) 195 Place Markers 189 Portrait mode 1 PORTSTRING (Function) 4,280 PPTCB (Function) 266 Press 213 PRESSFONTWIDTHFILES (Variable) 213 Primitive relationship 178 PRIMTERMTABLE (Variable) 288 PRIN3 (Function) 124 Print a file 101,102 source code in high-quality mode 103 source code on fast FX-80 103 TEdit file in fast FX-80 mode 103 TEdit file in high-quality mode 104 text and graphics in high-quality mode 103 print-filecom (Function) 299 Printer drivers 99 Printer's point 139 Printing in fast mode 101 in high-quality mode 102 source or TEdit Files 3 speed 9 via FTPserver 4 windows 4 Programmer's Assistant 288 PROJECT-AND-FIX-3-VECTOR (Function) 196 PROJECT-AND-FIX-4-VECTOR (Function) 196 PROJECT-AND-FIX-N-BY-3 (Function) 196 PROJECT-AND-FIX-N-BY-4 (Function) 196 PROMPT window 73 Properties 203 Protocol number 273 PUP (record) 70 PUP Chat 26 FTP 97,232 ID service 200 records 70 time service 200 PUP.ID.SERVER (Function) 199 PUPADDRESS (record) 70 PUPNUMBER (Variable) 200 PUPTIMESERVER (Function) 199 PUTHASHFILE (Function) 128 PUTHASHTEXT (Function) 129 Q QABLEITEM (record) 69 Query Mode 45 Queue multiple arguments 60 Quick-scrolling 74 Quitting the FileBrowser 76 R RANDACCESSP (Function) 272 READ-BYTE (Function) 219 READ-CHAR (Function) 219 READGRAPH (Function) 121 Reading the Remote Vmem 284 ReadNumber 215 ReadNumber window 66 READP (Function) 222 READSYS (Function) 284 REALFRAMEP (Function) 239 RECOMPILEDEFAULT (Variable) 178 RECOMPUTE (Command) 86 Reconstruction 190 Record declaration 177 Recursive loads 97 Redefine Existing Keyboards 310 REDUCE-ARRAY (Function) 30 Red$Green$Blue Triples 34 REFCNT (Function) 108 Reference counting 284 REHASHFILE (Function) 130 REHASHGAG (Variable) 131 Relations between sets 157 RELDRAWTO (Function) 43 Remote Kermit in Server Mode 144 Kermit not in Server Mode 144 system administration 27 system executive 27 Removing Keyboards From the Menu 310 RENAME (Command) 81 REPACKFILENAME.NEW.TRANSLATION (Function) 269 REPACKFILENAME.OSTYPE.TABLE (Variable) 269 REPACKFILENAME.STRING (Function) 268 Replace All Known Keyboards 310 Replacements 190 RESET/NODE/BORDER (Function) 120 RESET/NODE/LABELSHADE (Function) 120 RESETDEDIT (Function) 54 Resetting 4045XLPstream 8 Restarting MiniServe 201 RGB (Record) 34 RGBCOLORMAP (Function) 36 RGBP (Function) 35 RNUMBER (Function) 215 Ross referencing user programs 157 ROTATE-3-BY-3 (Function) 194 ROTATE-4-BY-4-ABOUT-X (Function) 194 ROTATE-4-BY-4-ABOUT-Y (Function) 194 ROTATE-4-BY-4-ABOUT-Z (Function) 194 ROTATE.BITMAP.LEFT (Function) 65 ROTATE.BITMAP.RIGHT (Function) 65 ROTATECOLORMAP (Function) 37 RS232 143,219 RS232 Chat 27 port 219 RS232C port 1 RS232C.CLOSE-STREAM (Function) 222 RS232C.DEFAULT.INIT.INFO (Variable) 220 RS232C.ERROR.STREAM (Variable) 224 RS232C.GET.PARAMETERS (Function) 221 RS232C.INIT (Function) 220 RS232C.OTHER.STREAM (Function) 222 RS232C.OUTPUT.PACKET.LENGTH (Function) 222 RS232C.READP.EVENT (Function) 223 RS232C.REPORT.STATUS (Function) 224 RS232C.SET.PARAMETERS (Function) 220 RS232C.SHUTDOWN (Function) 221 RS232CHAT 225 RS232CMENU 225,228 RS232MODEMCONTROL (Function) 223 RS232MODEMHANGUP (Function) 224 RS232MODEMSTATUSP (Function) 223 RS232MODIFYMODEMCONTROL (Function) 223 RS232SENDBREAK (Function) 223 RS232TRACE 224 S S-expression 115 SameDir 231 Sampler 233 SAVEDBFLG (Variable) 50 Scale factors 9 SCALE-3-BY-3 (Function) 194 SCALE-4-BY-4 (Function) 195 SCALEDBITBLT (Function) 9 SCREENBITMAP (Function) 39 SCREENCOLORMAP (Function) 36 SCREENPOSITION (Record) 39 SCREENREGION (Record) 39 Scroll bar 74 SEE (Command) 82 Segment Patterns 186 Segment selection and manipulation 59 Selecting Files 74 Selecting Objects and Lists 52 Selection stack 53 Send text output to fast FX-80 103 SEND.FILE.TO.PRINTER (Function) 3,213 Serial interface card 99 Server mode 144 SET DEPTH (Command) 88 Set destination 102 determiners 167 FX-80 Destination 101 FX-80 Page Size 101 HQ Mode 102 page Size 102 specifications by Blocktypes 167 specifications by Relation 166 types 167 SETCOLORINTENSITY (Function) 37 SETSYNONYM (Function) 175 SETTEMPLATE (Function) 174 SETTIME (Function) 199 SHIFT.BITMAP.DOWN (Function) 65 SHIFT.BITMAP.LEFT (Function) 66 SHIFT.BITMAP.RIGHT (Function) 66 SHIFT.BITMAP.UP (Function) 66 SHOW PATHS 180 SHOW PATHS (Command) 169 SHOW PATHS (Function) 11 SHOW.CLOSED.WINDOWS (Function) 110 SHOWCIRCULARITY (Function) 110 SHOWCOLORTESTPATTERN (Function) 44 SHOWCOMMONCSETS (Function) 20 SHOWCSET (Function) 20 SHOWCSETLIST (Function) 20 SHOWCSETRANGE (Function) 20 SHOWGC (Function) 107 SHOWGRAPH (Function) 116,125 SHOWZOOMGRAPH (Function) 125 Simple item operations 248 SINGLEFILEINDEX (Function) 10 Sketch 10 SORT (Command) 89 Special characters 307 specifiers (Variable) 297 Specifying the files to browse 72 Spy 233 SPY.BORDERS (Variable) 239 SPY.BUTTON (Function) 234 SPY.END (Function) 234 SPY.FONT (Variable) 239 SPY.FREQUENCY (Variable) 239 SPY.LEGEND (Function) 239 SPY.MAXLINES (Variable) 239 SPY.NOMERGEFNS (Variable) 239 SPY.START (Function) 234 SPY.TOGGLE (Function) 234 SPY.TREE (Function) 235 SPY.TREE (Variable) 239 Stack 280 Stack architecture 58 Stacking several rules in a single object 140 Starting FileBrowser 71 Starting TExec 287 STARTMINISERVE (Function) 199 Static structure 233 stderr 305 stdin 305 stdout 305 STOPIP (Function) 272 STORAGE (Function) 105 Store keyboards 309 SUBNETMASK (Variable) 262 Subnetworks 262 Sun,TCP to a 254 SunOS, interface to 305 Switch & Display a Keyboard 308 Switch A-2 2 Switch Keyboards 308 Switch settings 2 SWITCHKEYBOARDS (Function) 311 SysEdit 241 SYSHASHFILE (Variable) 131 SYSHASHFILELST (Variable) 131 System sources 241 T TableBrowser 243 TABLEBROWSER (record) 244 TABLEITEM (record) 243 Tally window 73 Target-source-Command 59 TB.BROWSER.BUSY (Function) 248 TB.CLEAR.LINE (Function) 249 TB.COLLECT.ITEMS (Function) 250 TB.DELETE.ITEM (Function) 248 TB.FIND.ITEM (Function) 250 TB.FINISH.CLOSE (Function) 248 TB.INSERT.ITEM (Function) 249 TB.ITEM.DELETED? (Function) 251 TB.ITEM.SELECTED? (Function) 251 TB.MAKE.BROWSER (Function) 247 TB.MAP.DELETED.ITEMS (Function) 250 TB.MAP.ITEMS (Function) 250 TB.MAP.SELECTED.ITEMS (Function) 250 TB.NORMALIZE.ITEM (Function) 249 TB.NTH.ITEM (Function) 250 TB.NUMBER.OF.ITEMS (Function) 249 TB.REDISPLAY.ITEMS (Function) 249 TB.REMOVE.ITEM (Function) 249 TB.REPLACE.ITEMS (Function) 248 TB.SELECT.ITEM (Function) 248 TB.SET.FONT (Function) 248 TB.UNDELETE.ITEM (Function) 248 TB.USERDATA (Function) 251 TB.WINDOW (Function) 251 TCP and directory enumeration 254 Chat 27 debugging aids 277 segment 264 TCP-IP 253 protocol 47 protocol layers 260 TCP.BYE (Function) 268 TCP.CLOSE.SENDER (Function) 265 TCP.DEFAULT.RECEIVE.WINDOW (Variable) 265 TCP.DEFAULT.USER.TIMEOUT (Variable) 265 TCP.DEFAULTFILETYPE (Variable) 267 TCP.ECHO.SERVER (Function) 266 TCP.ECHOTEST (Function) 266 TCP.FAUCET (Function) 267 TCP.INIT (Function) 265 TCP.OPEN (Function) 264 TCP.OTHER.STREAM (Function) 265 TCP.SINK.SERVER (Function) 266 TCP.STOP (Function) 265 TCP.URGENT.EVENT (Function) 265 TCP.URGENT.MARK (Function) 265 TCP.URGENTP (Function) 265 TCPCHAT.TELNET.TTY.TYPES (Variable) 269 TCPCHAT.TRACEFILE (Variable) 269 TCPCHAT.TRACEFLG (Variable) 269 TCPFTP.DEFAULT.FILETYPES (Variable) 267 TCPFTP.EOL.CONVENTION 267 TCPFTP.INIT (Function) 268 TCPFTP.SERVER (Function) 268 TCPFTP.SERVER.USE.TOPS20.SYNTAX (Variable) 268 TCPTRACE (Function) 266 TEdit 9,21,139,287,307 TEdit Chat 28 TeleRaid 279 TELERAID (Function) 280 TeleRaid Commands 280 Teletype editor 51 TELNET protocol 261,269 Ten-key calculator pad 215 Terminal emulators 21 Testing the connection between two Xerox Lisp machines 228 TESTRELATION (Function) 176 TExec 287 TEXEC (Function) 287 TEXTMODULES 289 TFTP.CLOSEFILE (Function) 272 TFTP.GET (Function) 272 TFTP.OPENFILE (Function) 272 TFTP.PUT (Function) 271 TFTP.SERVER (Function) 272 Thumbing 74 TIMEZONECOMP (Variable) 200 Tracing and test Functions 265 Trailer encapsulation 277 Transferring files 143,258 TRANSLATE-3-BY-3 (Function) 195 TRANSLATE-4-BY-4 (Function) 195 Translating between the file-naming conventions 268 Transport layer 260 Transport control protocol 264 Trees 111 TRIM.BITMAP (Function) 66 Trivial file transfer protocol 271 Troubleshooting Problems With FileBrowser 94 TTY port 1,219 TTY.DEFAULT.INIT.INFO (Variable) 226 TTY.GET.PARAMETERS (Function) 228 TTY.INIT (Function) 226 TTY.SET.PARAMETERS (Function) 227 TTY.SHUTDOWN (Function) 228 TTYCHAT 228 Typing Characters to DEdit 53 U UDP.APPEND.BYTE (Function) 271 UDP.APPEND.CELL (Function) 271 UDP.APPEND.STRING (Function) 271 UDP.APPEND.WORD (Function) 271 UDP.CLOSE.SOCKET (Function) 270 UDP.EXCHANGE (Function) 271 UDP.GET (Function) 270 UDP.INIT (Function) 270 UDP.OPEN.SOCKET (Function) 270 UDP.SEND (Function) 271 UDP.SETUP (Function) 270 UDP.SOCKET.EVENT (Function) 270 UDP.SOCKET.NUMBER (Function) 270 UDP.STOP (Function) 270 UNCOLORIZEBITMAP (Function) 44 UNDELETE (Command) 77 Unechoed input mode 288 UNIX 232,272 UNIX-STREAM-CLOSE (Function) 305 UNIXChat 303 UNIXComm 305 Unread 54 UNSAVEFNS (Function) 177 UPDATECHANGED (Function) 177 UPDATEFN (Function) 177 Updating the MasterScope Data Base 174 upgrade-semicolon-comments (Variable) 292 User Commands for NSMaintain 204 User datagram protocol 270 USERWORDS (Function) 288 Using 4045XLP stream 8 4045 as a default printing host 3 FileBrowser window 73 Keyboard editor 150 modems 223 RS232 streams 222 TExec 288 TTY port 226 TTY streams 228 V Verifying TCP connections 258 Version Control 46 VFIND.PACKAGE (Function) 286 VFIND.SYMBOL (Function) 286 VGETBASE0 (Function) 285 VGETDEFN (Function) 285 VGETPROPLIST (Function) 285 VGETTOPVAL (Function) 285 VGETVAL (Function) 285 Viewing an existing bitmap 64 frames from a stack 281 system stack 282 Violation of the IP standard 262 Virtual graph nodes 113 Virtual memory 279 Virtual terminal I/O 269 VirtualKeyboards 149,307 VKBD.CONFIGURATIONS (Variable) 154 VKBD.KNOWN-KEYBOARDS (Variable) 311 VLOADFNS (Function) 283 VLOADVAR (Function) 283 VPUTBASE0 (Function) 286 VRAID (Function) 284 VSAVEWORK (Function) 283 VSETTOPVAL (Function) 285 VT100 Chat 28 VTYPENAME (Function) 285 VUNSAVEDEF (Function) 283 VVAG2 (Function) 285 VYANKDEF (Function) 283 V\COPY (Function) 285 V\UNCOPY (Function) 285 W Weitek floating-point chip set 29 When To Copy 46 Where-Is 313 Wild cards 72 WINDOWPROP (Function) 42 WORPCURSOR (Function) 43 Wrapper Functions 193 X XCVR interface cable 253 Xerox 2700-II laser printer 1 Xerox 4045 Laser CP 1 Xerox Character Codes 19 Xerox/Diablo 630 1 XIP (record) 69 XNS host number 200 XNS Time Service 199 ( (GETSCREENREGION (Function) 40 (MAKE-HOMOGENEOUS-4-BY-4 (Function) 194 4 4045 configuration cartridge 2 4045 Emulation Mode Selection 2 4045 Fonts 9 4045 Parameter Names and Values 5 4045 Port Initialization 3 4045 Port Selection 2 4045 PROM and Software Compatibility 1 4045XLP.CHANGE.MODE (Function) 5 4045XLP.DEFAULTS (Variable) 5 4045XLP.GET.PARAMETERS (Function) 7 4045XLP.PARAMETERS (record) 5 4045XLP.SET.PARAMETERS (Function) 6 4045XLPStream 1 4045XLPstream Options 5 4045XLPSTREAM.VERSION (Variable) 1 (LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "INDEX-" "") STARTINGPAGE# 1) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY HELVETICA OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "INDEX-" "")) (270 15 288 36) NIL) (HEADING NIL (HEADINGTYPE FOOTINGR) (54 27 558 36) NIL) (HEADING NIL (HEADINGTYPE TITLEHEAD) (54 762 558 36) NIL) (HEADING NIL (HEADINGTYPE TITLEHEADRULE) (54 753 558 36) NIL) (TEXT NIL NIL (54 54 241 666) NIL) (TEXT NIL NIL (320 54 241 666) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "INDEX-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD LEFT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY HELVETICA OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "INDEX-" "")) (54 15 288 36) NIL) (HEADING NIL (HEADINGTYPE FOOTINGV) (54 27 558 36) NIL) (HEADING NIL (HEADINGTYPE VERSOHEAD) (54 762 558 36) NIL) (TEXT NIL NIL (54 54 241 684) NIL) (TEXT NIL NIL (320 54 241 684) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "INDEX-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY HELVETICA OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "INDEX-" "")) (270 15 288 36) NIL) (HEADING NIL (HEADINGTYPE FOOTINGR) (54 27 558 36) NIL) (HEADING NIL (HEADINGTYPE RECTOHEAD) (54 762 558 36) NIL) (TEXT NIL NIL (54 54 241 684) NIL) (TEXT NIL NIL (319 54 241 684) NIL)))))-KT-KT,K2$$-KTJ PAGEHEADING TITLEHEADRULEF PAGEHEADING TITLEHEADF PAGEHEADING VERSOHEADF PAGEHEADING RECTOHEADE PAGEHEADINGFOOTINGVE PAGEHEADINGFOOTINGR,K-K T,KMODERN +MODERN +CLASSIC + HELVETICA HELVETICA +OPTIMA +CLASSIC +MODERN +  HRULE.GETFNMODERN + ( + HRULE.GETFNCLASSIC + +)   HRULE.GETFNCLASSIC + HRULE.GETFNCLASSIC + HRULE.GETFNOPTIMA +  +    # '       +      (                                                                             +     #      + +  +       + + +                 %        + +       +  + +      +    +                       +  +   !  +  +   +                           "               +          +    +        +   *               %               +                      +  + D" + " + _"* 9*"    1                               +      +  +             +               +  + & +              +   +                   !               +             + +%            +               # "*  + +        +                              : + 0)119!D  @                                                      $      +                      +                   +           +  + +                                             +            +  +    +            !  +   + + 8     +   +    +   1   + +   +             +   +      +   +   + +    + $   "       +          +  +               +   +   +         !&      tz \ No newline at end of file diff --git a/library/CENTRONICS.TEDIT b/library/CENTRONICS.TEDIT new file mode 100644 index 0000000000000000000000000000000000000000..f9a46a4f26b7554fd973ec5e6c210549ec6d0f45 GIT binary patch literal 6294 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 literal 0 HcmV?d00001 diff --git a/library/CHAT.TEDIT b/library/CHAT.TEDIT new file mode 100644 index 00000000..279b2ef7 --- /dev/null +++ b/library/CHAT.TEDIT @@ -0,0 +1,107 @@ +1 Lisp Library Modules, Medley Release 1.15, CHAT 1 Lisp Library Modules, Medley Release 1.15, CHAT CHAT 1 CHAT 1 CHAT 6 Chat(CHAT NIL Chat NIL NIL 21) is a remote terminal facility that allows you to communicate with other machines while inside Lisp. Chat sets up a Chat connection to a remote machine, so that everything you type is sent to the remote machine, and everything the remote machine prints is displayed in a Chat window. Chat is an extensible terminal emulation facility. Its core supplies both terminal- and network-protocol- independent functionality; new terminal types and new Chat protocols, based on this core, can be added to Chat at any time. You can choose any terminal type to be used with any network protocol type. There are currently terminal emulators for the following terminals: Datamedia 2500(DATAMEDIA% 2500 NIL Datamedia% 2500 NIL NIL 21) DEC VT100(DIGITAL% VT100 NIL Digital% VT100 NIL NIL 21) TEdit(TEDIT NIL TEdit NIL NIL 21) (this is actually a TEdit-based Chat window, supporting scrolling and copy-select operations as in standard TEdit). A number of different network protocol interfaces can be used with Chat. The following protocols are available: PUP Chat NS Chat (using the GAP protocol) TCP (ARPANET) TELNET RS232 Chat (using either the RS232 or TTY ports of the 1108 and 1186 processors) Each of these is available by loading the corresponding module. Requirements 1 DMCHAT CHATTERMINAL One of the network protocols:(NETWORK% PROTOCOLS NIL network% protocols NIL NIL 21) PUPCHAT or NSCHAT or RS232CHAT or TTYCHAT or TCPCHAT. One of the terminal emulators:(TERMINAL% EMULATORS NIL terminal% emulators NIL NIL 21) DMCHAT or VTCHAT or TEDITCHAT. The applicable file dependencies enumerated in the Introduction of this manual. Installation 1 Load CHAT.LCOM from the library. In addition, you must load at least one of the Chat network protocol modules. If you want a terminal emulator different from the default DM2500, you must also load it. User Interface 1 Chat prompts for a new window for each new connection. It saves the first window to reuse once the connection in that window is closed (other windows just go away when their connections are closed). Multiple, simultaneous Chat connections(CHAT% CONNECTIONS NIL Chat% connections NIL NIL 22) are possible. To switch between typing to different Chat connections, press the left button within the Chat window you want to use. Opening a Chat Connection(OPENING% A% CHAT% CONNECTION NIL Opening% a% Chat% Connection NIL NIL 22) The simplest way to open a Chat connection is to select the CHAT option of the right-button (background) menu. The first time you do this, you are prompted in the system's prompt window for the name of a host to which to connect. Subsequently, you are prompted with a menu of all hosts to which you have opened Chat connections; the last entry in this menu is OTHER, and provides a way for you to connect to new Chat hosts. The other method of opening a Chat connection is to call the CHAT function directly: (CHAT(CHAT (function) NIL NIL NIL 22) HOST LOGOPTION INITSTREAM WINDOW) [Function] Opens a Chat connection to HOST, or to the value of DEFAULTCHATHOST(DEFAULTCHATHOST (variable) NIL NIL NIL 22). If HOST requires login, Chat supplies a login sequence. You may alternatively specify one of the following values for LOGOPTION: Login Always perform a login. Attach Always perform an attach (this is likely to be useful only when opening Chat connections to hosts running the Tops-20 or Tenex operating systems). This fails if you do not have exactly one detached job. None Do not attempt to log in or attach. Note: It is important that you supply information about the types of hosts to which you chat by setting the variable NETWORKOSTYPES (see IRM) or DEFAULT.OSTYPE (see Lisp Release Notes), as CHAT uses that information to determine whether and how to log in. An incorrect login sequence can inadvertantly expose your password. If INITSTREAM is supplied, it is either a string or the name of a file whose contents are read as type-in. When the string/file is exhausted, input is taken from the keyboard. If WINDOW is supplied, it is the window to use for the connection; otherwise, you are prompted for a window. While Chat is in control, all Lisp interrupts(LISP% INTERRUPTS NIL Lisp% interrupts NIL NIL 22) are turned off, so that control characters can be transmitted to the remote host. Chat does not turn off interrupt characters until after creating the Chat window, so you can abort the call to Chat by typing Control-E while specifying the Chat window region. If you press the left button in an Executive window, the system's focus-of-attention is switched to that window. At the same time, keyboard interrupts, such as Control-E, are reenabled. Whenever you select an open Chat window, the focus-of-attention is returned to the Chat window, and keyboard interrupts are disabled. Chat Menu(CHAT% MENU NIL Chat% Menu NIL NIL 23) Commands can be given to an active Chat connection by pressing the middle mouse button in the Chat window to get a command menu. Note: The left mouse button, when pressed inside an active Chat window, holds output as long as the button is down. Holding down the middle button coincidentally does this too, but not on purpose; since the menu handler does not yield control to other processes, it is possible to kill the connection by keeping the menu up too long. CLOSE Closes this connection. Once the connection is closed, control is handed over to the main Lisp Executive window. Closes the Chat window unless it is the primary Chat window. SUSPEND Same as CLOSE, but always leaves the window open. NEW Closes the current connection and prompts for a new host to which to open a connection in the same window. FREEZE Holds type-out from this Chat window. Pressing a mouse button in the window in any way releases the hold. This is most useful if you want to switch to another, overlapping window and there is type-out in this window that would compete for screen space. DRIBBLE Opens a typescript file for this Chat connection (closing any previous dribble file for the window). You are prompted for a file name. If you want to close an open dribble file (without opening a new one), just type a carriage return. INPUT Prompts for a file from which to take input. When the end of the file is reached, input reverts to the keyboard. CLEAR Clears the window and resets the simulated terminal to its default state. This is useful if undesired terminal commands have been received from the remote host that place the simulated terminal into an indeterminate state. EMACS Turns on or off the Chat EMACS feature, which provides a convenient way to use the workstation's mouse to move the cursor on the remote machine when using the EMACS text editor. When this feature is turned on, pressing the left mouse button in the Chat window causes a sequence of commands to be sent to the remote machine that cause EMACS to move its cursor to the mouse location. Use of this feature assumes you know the keystrokes to perform cursor-moving commands; see CHAT.EMACSCOMMANDS if your EMACS does not use the standard ones. Also, it assumes that you are pointing where there is actually text in your document (not white space beyond the end of a line) and that there are no tabs in your text; otherwise, the cursor position may not be where you expect. RECONNECT In an inactive Chat window, pressing the middle mouse button brings up a menu of one item, RECONNECT, whose selection reopens a connection to the same host as was last in the window. This is the primary motivation for the SUSPEND menu command. MODE The Chat menu also contains a command of this form for each terminal emulator that you have loaded. The MODE commands are intended to let you dynamically switch between terminal emulators. However, this feature is currently defective and should not be used. You must also choose your emulator type, by setting CHAT.DISPLAYTYPES, before opening the Chat connection. Customizing Chat(CUSTOMIZING% CHAT NIL Customizing% Chat NIL NIL 24) 1 CHAT.DISPLAYTYPES(CHAT.DISPLAYTYPES (variable) NIL NIL NIL 24) [Variable] This variable contains a list that assigns the terminal emulators to be used with the hosts. Each entry on the list is of the form: () HostName When Chat opens a connection, it scans CHAT.DISPLAYTYPES to find an entry whose HostName field matches the name of the Chat host. If no matching entry is found, it scans the list again, looking for an entry whose HostName field is NIL. TerminalTypeNumber Is only important when the Chat protocol in use is PUP Chat. This number identifies the terminal type to the Chat host's operating system. Currently, only Tops-20 and Tenex hosts make use of this facility; if the Chat host does not support this feature, the number in the TerminalTypeNumber field is ignored. TerminalEmulator Chat uses this field of the entry it finds to choose which terminal type to emulate. Typical terminal emulator names are DM2500, VT100, and TEDIT. CHAT.KEYACTIONS(CHAT.KEYACTIONS (variable) NIL NIL NIL 24) [Variable] This variable controls the remapping of the keyboard when the system's focus-of-attention is an active Chat window. The format of this list is: ((KEYNAME . ACTIONS) (KEYNAME . ACTIONS) ... ) For example, if you prefer the backspace key to send the rubout character (octal 177), you would set CHAT.KEYACTIONS to be: ((BS (177Q 177Q NOLOCKSHIFT) . IGNORE)) The key actions are assigned when a Chat process is initiated; i.e., changing CHAT.KEYACTIONS only affects new Chat connections. CHAT.INTERRUPTS(CHAT.INTERRUPTS (variable) NIL NIL NIL 24) [Variable] A list of interrupts to pass to INTERRUPTCHAR to assign keyboard interrupts; e.g., ((177Q. HELP)) causes the DELETE character (code 177) to run the HELP interrupt. Like CHAT.KEYACTIONS, this variable only affects new Chat connections. CHAT.ALLHOSTS(CHAT.ALLHOSTS (variable) NIL NIL NIL 25) [Variable] A list of host names, as uppercase symbols, to which you want to chat. Chatting to a host not on the list adds it to the list. These names are placed in the menu used by the background Chat command prompts. CLOSECHATWINDOWFLG(CLOSECHATWINDOWFLG (variable) NIL NIL NIL 25) [Variable] If true, every Chat window is closed on exit. If NIL, the initial setting, then the primary Chat window is not closed. DEFAULTCHATHOST(DEFAULTCHATHOST (variable) NIL NIL NIL 25) [Variable] The host to which CHAT connects when it is called with no HOST argument. CHAT.FONT(CHAT.FONT (variable) NIL NIL NIL 25) [Variable] If non-NIL, the font used to create Chat windows. If CHAT.FONT is NIL, Chat windows are created with (DEFAULTFONT 'DISPLAY). Note: To work well with the DM2500 and VT100 terminal emulators, you should use fixed$width fonts (e.g., Gacha or Terminal). CHAT.WINDOW.SIZE(CHAT.WINDOW.SIZE (variable) NIL NIL NIL 25) [Variable] This variable is either NIL or a dotted pair of (WIDTH . HEIGHT). The value of the WIDTH field indicates the desired width of the Chat window, in pixels. The value of the HEIGHT field indicates the desired HEIGHT of the window, also in pixels. Note: Before a new value of CHAT.WINDOW.SIZE is used, CHAT.WINDOW must be set to NIL or NOBIND. If CHAT.WINDOW.SIZE is changed after chat has already been called, and chat is then called, the window is not changed because the information is cached. CHAT.WINDOW must be set to NIL and the window recreated anew before this takes place. CHAT.WINDOW.REGION(CHAT.WINDOW.REGION (variable) NIL NIL NIL 25) [Variable] This variable is either NIL or an instance of a REGION. When CHAT.WINDOW.REGION is non-NIL, its value is used as the region in which to create the first Chat window. Subsequent windows are created by prompting for the position of a window of CHAT.WINDOW.SIZE dimensions, or, if that variable is NIL, for an arbitrary window region. CHAT.TTY.PROCESS(CHAT.TTY.PROCESS (variable) NIL NIL NIL 25) [Variable] When you start up CHAT, it takes the TTY immediately if the value is T. (The initial value is T.) CHAT.EMACSCOMMANDS(CHAT.EMACSCOMMANDS (variable) NIL NIL NIL 25) [Variable] A list of five character codes; initially the value of (CHARCODE (^U ^P ^N ^F ^A)). These character codes are used by the EMACS Argument command in changing the position of the cursor: Up one line Down one line Forward one character Backward one character Beginning of line CHAT.IN.EMACS?(CHAT.IN.EMACS? (variable) NIL NIL NIL 26) [Variable] The initial state of the EMACS feature when a Chat connection is started. Initially NIL, meaning the feature is off. CHAT.PROTOCOLTYPES(CHAT.PROTOCOLTYPES (variable) NIL NIL NIL 26) [Variable] Each Chat emulator (TTYCHAT, RS232CHAT, PUPCHAT ...) adds an entry onto CHAT.PROTOCOLTYPES which recognizes host names for the appropriate protocol. For example, loading PUPCHAT adds an entry (PUP . PUPCHAT.HOST.FILTER) and TCPCHAT adds an entry (TCP . TCP.HOST.FILTER). Site administrators of complex networks may want to reorganize these entries when there are hosts which are running multiple servers, each running different protocols. Network Protocols(NETWORK% PROTOCOLS NIL Network% Protocols NIL NIL 26) 1 For the most part, you should not notice too many differences in the behavior of Chat when using one network protocol versus another. The following are unique features of each of the Chat network protocols. PUP Chat(PUP% CHAT NIL PUP% Chat NIL NIL 26) PUP Chat is in the file PUPCHAT.LCOM. Implementations of PUP Chat servers exist for Tops-20, Tenex, VAX/UNIX, and VAX/VMS operating systems. The PUP Chat protocol contains provisions for automatically setting your terminal type, width, and height whenever you establish a connection or reshape your Chat window. NS Chat(NS% CHAT NIL NS% Chat NIL NIL 26) The NS Chat protocol (also known as GAP, or Gateway Access Protocol(GATEWAY% ACCESS% PROTOCOL NIL Gateway% Access% Protocol NIL NIL 26)) is used to communicate with hosts running GapTelnet(GAPTELNET NIL GapTelnet NIL NIL 26) service, including VAX/UNIX and the VAX/VMS service XNS/DEC VAX, and also with Xerox 8000-series network services such as 8040 print servers or 8030 file servers. This protocol is contained on the file NSCHAT.LCOM. The NS Chat protocol differentiates among a number of virtual terminal services. When you chat to an NS host, the NS Chat module queries the Clearinghouse(CLEARINGHOUSE NIL Clearinghouse NIL NIL 26) for information about the specified host. This information permits the NS Chat module to determine which of the following virtual terminal services are appropriate for the host. The NS Chat module uses a small set of heuristics to choose which virtual terminal service to invoke, based on information returned by the Clearinghouse. If the Clearinghouse information indicates that only one service type is possible, NS Chat opens a connection to the Chat host and invokes the proper virtual terminal service. If the Clearinghouse returns information indicating that more than one virtual terminal service is supported by the specified host, you are prompted to choose a service from a menu of the possible service types. If NS Chat guesses an incorrect service type, or you choose an incorrect service type, you are prompted to choose a service from a menu of all known virtual service types. If this fails, NS Chat abandons its attempts to connect to the specified host. Remote System Administration(REMOTE% SYSTEM% ADMINISTRATION NIL Remote% System% Administration NIL NIL 27) This service lets you log onto print servers and clearinghouse servers, and issue appropriate commands. NS Chat automatically chooses this service when the specified host is registered in the Clearinghouse as any type of server machine. Remote System Executive(REMOTE% SYSTEM% EXECUTIVE NIL Remote% System% Executive NIL NIL 27) This service is currently supported by VAX/VMS systems running XNS/DEC VAX, by UNIX systems running GapTelnet service, by Lisp workstations running CHATSERVER from the library, and by XDE workstations. Interactive Terminal Service(INTERACTIVE% TERMINAL% SERVICE NIL Interactive% Terminal% Service NIL NIL 27) The ITS is a TTY-based interface to NS mail. External Communication Service(EXTERNAL% COMMUNICATION% SERVICE NIL External% Communication% Service NIL NIL 27) The External Communication Service (ECS) enables Chat connections to external hosts accessible only by use of a modem. When you open a Chat connection to an ECS, you are prompted for a telephone number; the ECS dials that number and completes the connection if a compatible modem answers. ECS hosts typically support a variety of modem connection characteristics (specific combinations of parity, character length, baud rate, and flow control settings). Each connection type is known by a different Chat host name; check with your system administrator to determine the Chat host name you should use to connect to a particular external host. TCP Chat(TCP% CHAT NIL TCP% Chat NIL NIL 27) TCPCHAT.LCOM is the interface to the TCP-based TELNET protocol, which is the protocol in use throughout the ARPANET. It loads and initializes the TCP-IP module, if necessary. Read the TCP-IP module in this manual for more information. RS232 Chat(RS232% CHAT NIL RS232% Chat NIL NIL 27) RS232 Chat is contained on the files RS232CHAT.LCOM and TTYCHAT.LCOM. RS232 Chat enables use of the 1108, 1185, and 1186 RS232 ports; TTY Chat enables use of the 1108, 1185, and 1186 TTY ports. Read the RS232 module in this manual for more information. Terminal Emulators 1 DM2500 Chat(DM2500% CHAT NIL DM2500% Chat NIL NIL 27) The Datamedia 2500 terminal emulator is contained in DMCHAT.LCOM. To use it, load DMCHAT.LCOM and add entries to CHAT.DISPLAYTYPES in the form: ( DM2500) VT100 Chat(VT100% CHAT NIL VT100% Chat NIL NIL 28) The VT100 emulator is contained in VTCHAT. To use it, load VTCHAT.DFASL and add entries to CHAT.DISPLAYTYPES in the form: ( VT100) Currently, the VT100 emulator does not emulate the following features of the actual Digital VT100 terminal: Dual-width or dual-height characters Graphics character set Remotely initiated switching between 80- and 132-column mode TEdit Chat(TEDIT% CHAT NIL TEdit% Chat NIL NIL 28) TEdit Chat supplies a glass TTY terminal emulator with a TEdit stream storing all characters received during the Chat session. As a result, you can scroll back and forth through a transcript of your session, and you can use the standard TEdit copy-select command to copy blocks of characters from the Chat window to another TEdit window, a Lisp Executive, etc. To use TEdit Chat, load TEDITCHAT.LCOM, and add entries to CHAT.DISPLAYTYPES in the form: ( TEDIT) Note that since TEdit already uses the middle mouse button, you must click in the window's title bar in order to get the usual Chat menu. [This page intentionally left blank] (LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "" "") STARTINGPAGE# 21) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY HELVETICA OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "" "")) (270 15 288 36) NIL) (HEADING NIL (HEADINGTYPE FOOTINGR) (54 27 558 36) NIL) (TEXT NIL NIL (54 54 504 702) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD LEFT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY HELVETICA OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "" "")) (54 15 288 36) NIL) (HEADING NIL (HEADINGTYPE FOOTINGV) (54 27 558 36) NIL) (HEADING NIL (HEADINGTYPE VERSOHEAD) (54 762 558 36) NIL) (TEXT NIL NIL (54 54 504 684) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY HELVETICA OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "" "")) (270 15 288 36) NIL) (HEADING NIL (HEADINGTYPE FOOTINGR) (54 27 558 36) NIL) (HEADING NIL (HEADINGTYPE RECTOHEAD) (54 762 558 36) NIL) (TEXT NIL NIL (54 54 504 684) NIL)))))&-$$T-HHT3HH +T6T5.$$TT-T,,5H2Hll52ll2l,,,ll2,,$$ +,HH,$$2HH +2$$l2HH +l2lll2HHl,HH,HH +3T22-T-TF PAGEHEADING VERSOHEADF PAGEHEADING RECTOHEADE PAGEHEADINGFOOTINGVE PAGEHEADINGFOOTINGR HELVETICA HELVETICA +TITAN TITAN +CLASSIC +CLASSIC + HELVETICA  HELVETICAMODERN +MODERN +MODERNMODERNMODERN +MODERN & HRULE.GETFNTITAN +&/% HRULE.GETFNTITAN +%0$$ HRULE.GETFNTITAN +## HRULE.GETFNTITAN + HRULE.GETFNMODERN IM.INDEX.GETFN5E0IM.INDEX.GETFN +.IM.INDEX.GETFNIM.INDEX.GETFNwr "R@  HRULE.GETFNMODERN  6IM.INDEX.GETFN78IM.INDEX.GETFN"O   HRULE.GETFNMODERN  OY  HRULE.GETFNMODERN '4IM.INDEX.GETFNJIM.INDEX.GETFN<*;= IM.INDEX.GETFNMODERN +    +IM.INDEX.GETFNMODERN + + 3=   + + + + + + + + +$ t +  + + +   b -2IM.INDEX.GETFNB &IM.INDEX.GETFN P   + +$ + + +k + + + +  r + + + +] + +Z + { +  + + +g + +P +z$ + 4IM.INDEX.GETFN HRULE.GETFNMODERN -IM.INDEX.GETFNMODERN +   4  + +& + + +  +8  + + ++IM.INDEX.GETFNMODERN +   0 d   * N #+IM.INDEX.GETFNMODERN + +  ! &D 3 )IM.INDEX.GETFNMODERN + +  .IM.INDEX.GETFNMODERN +  2C+IM.INDEX.GETFNMODERN + + +  %  %IM.INDEX.GETFNMODERN + +  6   UQ,IM.INDEX.GETFNMODERN + +   T  + +   + + + + + +  + +7.IM.INDEX.GETFNMODERN +     LK + +$",IM.INDEX.GETFNMODERN + + /   .IM.INDEX.GETFNMODERN + + 6  &: *IM.INDEX.GETFNMODERN + + T  .IM.INDEX.GETFNMODERN +  +H<,6IM.INDEX.GETFN HRULE.GETFNMODERN $IM.INDEX.GETFN "IM.INDEX.GETFNCDIM.INDEX.GETFN5$IM.INDEX.GETFN ,IM.INDEX.GETFNKNIM.INDEX.GETFN DIM.INDEX.GETFN  +,NIM.INDEX.GETFN -RIM.INDEX.GETFN "a$IM.INDEX.GETFN  +(IM.INDEX.GETFN%    HRULE.GETFNMODERN  *IM.INDEX.GETFN5  ) +(IM.INDEX.GETFN= )l%= +(IM.INDEX.GETFNn)"%! +!Kz \ No newline at end of file diff --git a/library/CMLFLOATARRAY.TEDIT b/library/CMLFLOATARRAY.TEDIT new file mode 100644 index 0000000000000000000000000000000000000000..ab11f0776c8d2006554d189b898f57757e168c7c GIT binary patch literal 12412 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 literal 0 HcmV?d00001 diff --git a/library/COLOR1.TEDIT b/library/COLOR1.TEDIT new file mode 100644 index 0000000000000000000000000000000000000000..061cc10ce7b3565df245cc716dc6492364ecbfef GIT binary patch literal 50717 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 V3%prCrb1bN   &           HRULE.GETFNMODERN     +      ?   =          "      "  HRULE.GETFNMODERN  HRULE.GETFNMODERNy    D + q  B  -  i  (  _    L    *  X =     *     ?  N      HRULE.GETFNMODERN _    +8 -   + Z    +& 8 ,   S       =     m + +) + +  +   + /     ;    HRULE.GETFNMODERN HRULE.GETFNMODERN      v 4       ) E      HRULE.GETFNMODERN HRULE.GETFN, HRULE.GETFNMODERN  HRULE.GETFNMODERN       2  "  1  HRULE.GETFNMODERN +  + +    HRULE.GETFNMODERN  +  ' )  ) HRULE.GETFNMODERN    HRULE.GETFNMODERN +  ? "  4  HRULE.GETFNMODERN + -  HRULE.GETFNMODERN +    ? "  a  HRULE.GETFNMODERN + C  HRULE.GETFNMODERN +  ( BMOBJ.GETFN3 H  , BMOBJ.GETFN3 1 @      HRULE.GETFNMODERN + '  HRULE.GETFNMODERN +   HRULE.GETFNMODERN +  HRULE.GETFNMODERN HRULE.GETFNMODERN ). Menus are a special type of window provided by the window system, used for displaying a set of items to the user, and having the user select one using the mouse and cursor. The menu facility also allows users to create and use menus in interactive programs (see ("Menus" . TERM)). As of the LUTE release of Xerox Lisp, it is possible for the user to create and use windows and menus on the color display. (CREATEW REGION TITLE BORDERSIZE NOOPENFLG) [Function] 1 Creates a new window. REGION indicates where and how large the window should be by specifying the exterior screenregion of the window. In a user environment with multiple screens, such as a black and white screen and color screen both connected to the same machine, there is a new special problem in indicating which screen the REGION is supposed to be a region of. This problem is solved by allowing CREATEW to take screenregion arguments as REGION. For example, (SETQ FOO (CREATEW (CREATE SCREENREGION SCREEN _ (COLORSCREEN) LEFT _ 20 BOTTOM _ 210 WIDTH _ 290 HEIGHT _ 170) "FOO WINDOW")) creates a window titled "FOO WINDOW" on the color screen. To create a window on the black and white screen, the user should use SCREEN _ (MAINSCREEN) in the CREATE SCREENREGION expression. Note that it is still perfectly legal to pass in a REGION that is a region, not a screenregion, to CREATEW, but it is preferable to be passing screenregions rather than regions to CREATEW. This is because when REGION is a region, REGION is disambiguated in a somewhat arbitrary manner that may not always turn out to be what the user was hoping for. When REGION is a region, REGION is disambiguated by coercing REGION to be a screenregion on the screen which currently contains the cursor. This is so that software calling CREATEW with regions instead of screenregions tends to do the right thing in a user environment with multiple screens. 1 (WINDOWPROP WINDOW PROP NEWVALUE) [NoSpread Function] 1 If PROP='SCREEN, then WINDOWPROP returns the screen WINDOW is on. If NEWVALUE is given, (even if given as NIL), with PROP='SCREEN, then WINDOWPROP will generate an error. Any other PROP name is handled in the usual way. 1 (OPENWINDOWS SCREEN) [Function] 1 Returns a list of all open windows on SCREEN if SCREEN is a screen datatype such as (MAINSCREEN) or (COLORSCREEN). If SCREEN=NIL, then SCREEN will default to the screen containing the cursor. If SCREEN=T, then a list of all open windows on all screens is returned. 1 2 Color Fonts 1 The user can create color fonts and specify in the font profile that certain color fonts be used when printing in color. Color Font Creation 1 The user can create and manipulate color fonts through the same functions that are used to create and manipulate black and white fonts. This is made possible in some cases by there being new ways to call familiar font functions. (FONTCREATE FAMILY SIZE FACE ROTATION DEVICE NOERRORFLG CHARSET) [Function] 1 In addition to creating black and white fonts, FONTCREATE can be used to create color fonts. For example, (FONTCREATE 'GACHA 10 '(BOLD REGULAR REGULAR YELLOW BLUE) 0 '8DISPLAY) will create an 8 bit per pixel font with blue letters on a yellow background. The user indicates the color and bits per pixel of the font by the FACE and DEVICE arguments passed to FONTCREATE. DEVICE='8DISPLAY means to create an 8bpp font and DEVICE='4DISPLAY means to create a 4bpp font. A color font face is a 5 tuple, (WEIGHT SLOPE EXPANSION BACKCOLOR FORECOLOR) whereas a black and white font face is just a 3 tuple, (WEIGHT SLOPE EXPANSION) The FORECOLOR is the color of the characters of the font and the BACKCOLOR is the color of the background behind the characters that gets printed along with the characters. Both BACKCOLOR and FORECOLOR are allowed to a color name, color number, or any other legal color representation. A color font face can also be represented as a LITATOM. A three character atom such as MRR or any of the special atoms STANDARD, ITALIC, BOLD, BOLDITALIC can optionally be continued by hyphenating on BACKCOLOR and FORECOLOR suffixes. For example, MRR-YELLOW-BLUE BOLD-YELLOW-RED ITALIC-90-200 BRR-100-53 are acceptable color font faces. Hence, (FONTCREATE 'GACHA 10 'BOLD-YELLOW-BLUE 0 '8DISPLAY) will create a color font. LITATOM FACE arguments fall into one of the following patterns: wse wse-backcolor-forecolor STANDARD STANDARD-backcolor-forecolor ITALIC ITALIC-backcolor-forecolor BOLD BOLD-backcolor-forecolor BOLDITALIC BOLDITALIC-backcolor-forecolor where w=B, M, or L; s=I or R; e=R, C, or E; backcolor=a color name or color number; and forecolor=a color name or color number. 1 (FONTPROP FONT PROP) [Function] 1 Returns the value of the PROP property of font FONT. Besides black and white font properties, the following font properties are recognized: FORECOLOR The color of the characters of the font, represented as a color number. This is the color in which the characters of the font will print. BACKCOLOR The color of the background of the characters of the font, represented as a color number. This is the color in which the the background of characters of the font will print. A font with red characters on a yellow background would have a red FORECOLOR and a yellow BACKCOLOR. Color Font Profiles 1 Font profiles are the facility PRETTYPRINT uses to print different elements (user functions, system functions, clisp words, comments, etc.) in different fonts to emphasize (or deemphasize) their importance, and in general to provide for a more pleasing appearance. The user can specify that different colors of fonts be used for different kinds of elements when printing in color. A well chosen font profile will allows user to DEDIT functions, PP functions, and SEE source files in color, for example. A FONTPROFILE such as ((DEFAULTFONT 1 (GACHA 10) (GACHA 8) (TERMINAL 8) (4DISPLAY (GACHA 10 MRR-WHITE-RED)) (8DISPLAY (GACHA 10 MRR-WHITE-RED))) (BOLDFONT 2 (HELVETICA 10 BRR) (HELVETICA 8 BRR) (MODERN 8 BRR) (4DISPLAY (HELVETICA 10 BRR-WHITE-MAGENTA)) (8DISPLAY (HELVETICA 10 BRR-WHITE-MAGENTA))) (LITTLEFONT 3 (HELVETICA 8) (HELVETICA 6 MIR) (MODERN 8 MIR) (4DISPLAY (HELVETICA 8 MRR-WHITE-GREEN)) (8DISPLAY (HELVETICA 8 MRR-WHITE-GREEN))) (BIGFONT 4 (HELVETICA 12 BRR) (HELVETICA 10 BRR) (MODERN 10 BRR) (4DISPLAY (HELVETICA 12 BRR-WHITE-BLUE)) (8DISPLAY (HELVETICA 12 BRR-WHITE-BLUE))) (USERFONT BOLDFONT) (COMMENTFONT LITTLEFONT) (LAMBDAFONT BIGFONT) (SYSTEMFONT) (CLISPFONT BOLDFONT) ...) would have comments print in green and clisp words print in blue while ordinairy atoms would print in red. Not all combinations of fonts will be aesthetically pleasing and the user may have to experiment to find a compatible set. The user should indicate what font is to be used for each font class by calling the function FONTPROFILE: (FONTPROFILE PROFILE) [Function] 1 Sets up the font classes as determined by PROFILE, a list of elements which defines the correspondence between font classes and specific fonts. Each element of PROFILE is a list of the form: (FONTCLASS FONT# DISPLAYFONT PRESSFONT INTERPRESSFONT (OTHERDEVICE1 OTHERFONT1) ... (OTHERDEVICEn OTHERFONTn)) FONTCLASS is the font class name and FONT# is the font number for that class. DISPLAYFONT, PRESSFONT, and INTERPRESSFONT are font specifications (of the form accepted by FONTCREATE) for the fonts to use when printing to the black and white display and to Press and Interpress printers respectively. The appearance of color fonts can be affected by including an (OTHERDEVICEi OTHERFONTi) entry where OTHERDEVICEi is either 4DISPLAY or 8DISPLAY for a 4 bits per pixel or 8 bits per pixel color font and OTHERFONTi is a color font specification such as (GACHA 10 MRR-WHITE-RED). 1 FONTPROFILE [Variable] 1 This is the variable used to store the current font profile, in the form accepted by the function FONTPROFILE. Note that simply editing this value will not change the fonts used for the various font classes; it is necessary to execute (FONTPROFILE FONTPROFILE) to install the value of this variable. 1 2 Using Color 1 The current color implementation allows display streams to operate on color bitmaps. The two functions DSPCOLOR and DSPBACKCOLOR set the color in which a stream draws when the user defaults a color argument to a drawing function. (DSPCOLOR COLOR STREAM) [Function] sets the foreground color of a stream. It returns the previous foreground color. If COLOR is NIL, it returns the current foreground color without changing anything. The default foreground color is MINIMUMCOLOR=0, which is white in the default color maps. (DSPBACKCOLOR COLOR STREAM) [Function] sets the background color of a stream. It returns the previous background color. If COLOR is NIL, it returns the current background color without changing anything. The default background color is (MAXIMUMCOLOR BITSPERPIXEL)=15 or 255, which is black in the default color maps. The BITBLT, line-drawing routines, and curve-drawing routines routines know how to operate on a color-capable stream. Following are some notes about them. 2 BITBLTing in Color 1 If BITBLTing from a color bitmap onto another color bitmap of the same bpp, the operations PAINT, INVERT, and ERASE are done on a bit level, not on a pixel level. Thus painting color 3 onto color 10 results in color 11. If BITBLTing from a black-and-white bitmap onto a color bitmap, the one bits appear in the DSPCOLOR, and the zero bits in DSPBACKCOLOR. BLTing from black-and-white to color is fairly expensive; if the same bitmap is going to be put up several times in the same color, it is faster to create a color copy and then BLT the color copy. If the source type is TEXTURE and the destination bitmap is a color bitmap, the Texture argument is taken to be a color. Thus to fill an area with the color BLUE assuming COLORSTR is a stream whose destination is the color screen, use (BITBLT NIL NIL NIL COLORSTR 50 75 100 200 'TEXTURE 'REPLACE 'BLUE). 2 Drawing Curves and Lines in Color 1 For the functions DRAWCIRCLE, DRAWELLIPSE, and DRAWCURVE, the notion of a brush has been extended to include a color. A BRUSH is now (BRUSHSHAPE BRUSHSIZE BRUSHCOLOR). Also, a brush can be a bitmap (which can be a color bitmap). Line-drawing routines take a color argument which is the color the line is to appear in if the destination of the display stream is a color bitmap. (DRAWLINE X1 Y1 X2 Y2 WIDTH OPERATION STREAM COLOR) [Function] (DRAWTO X Y WIDTH OPERATION STREAM COLOR) [Function] (RELDRAWTO X Y WIDTH OPERATION STREAM COLOR) [Function] (DRAWBETWEEN POS1 POS2 WIDTH OPERATION STREAM COLOR) [Function] If the COLOR argument is NIL, the DSPCOLOR of the stream is used. 2 Printing in Color 1 Printing only works in REPLACE mode. The characters have a background color and a foreground color determined by the font face of the font the characters are being printed with. Example of printing to an 8bpp color screen: (SETQ FOO (CREATEW (CREATE SCREENREGION SCREEN _ (COLORSCREEN) LEFT _ 20 BOTTOM _ 210 WIDTH _ 290 HEIGHT _ 170) "FOO WINDOW")) (DSPFONT (FONTCREATE 'GACHA 10 'MRR-YELLOW-GREEN 0 '8DISPLAY) FOO) (PRINT 'HELLO FOO) ; will print in green against a yellow background. 2 Operating the Cursor on the Color Screen 1 The cursor can be moved to the color screen. The cursor can be moved to the color screen by sliding the cursor off the left or right edge of the black and white screen on to the color screen or by calling function CURSORPOSITION or CURSORSCREEN. (CURSORPOSITION NEWPOSITION - -) [Function] 1 NEWPOSITION can be a position or a screenposition. (CURSORSCREEN SCREEN XCOORD YCOORD) [Function] 1 Moves the cursor to the screenposition determined by SCREEN, XCOORD, and YCOORD. SCREEN should be the value of either (COLORSCREEN) or (MAINSCREEN). While on the color screen, the cursor is placed by doing BITBLTs in software rather than with microcode and hardware as with the black and white cursor. It is automatically taken down whenever an operation is performed that changes any bits on the color screen. The speed of the color cursor compares well with that of the black and white cursor but there can be a noticeable flicker when there is much input/output to the color screen. While the cursor is on the color screen, the black-and-white cursor is cleared giving the appearance that there is never more than one cursor at a given time. 2 Miscellaneous Color Functions 1 (COLORIZEBITMAP BITMAP 0COLOR 1COLOR BITSPERPIXEL) [Function] creates a color bitmap from a black and white bitmap. The returned bitmap has color number 1COLOR in those pixels of BITMAP that were one and 0COLOR in those pixels of BITMAP that were zero. This provides a way of producing a color bitmap from a black and white bitmap. (UNCOLORIZEBITMAP BITMAP COLORMAP) [Function] creates a black and white bitmap from a color bitmap. (SHOWCOLORTESTPATTERN BARSIZE) [Function] displays a pattern of colors on the color display. This is useful when editing a color map. The pattern has squares of the 16 possible colors laid out in two rows at the top of the screen. Colors 0 through 7 are in the top row, and colors 8 through 15 are in the next row. The bottom part of the screen is filled with bars of BARSIZE width with consecutive color numbers. The pattern is designed so that every color has a border with every other color (unless BARSIZE is too large to allow room for every color%about 20). (LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC) STARTINGPAGE# 2) (0 0 612 792) ((FOLIO NIL ( PARALOOKS (QUAD LEFT) CHARLOOKS (SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF SLOPE REGULAR WEIGHT MEDIUM) FORMATINFO (ARABIC)) (54 12 288 36) NIL) (HEADING NIL (HEADINGTYPE FOOTINGV) ( 54 27 558 36) NIL) (HEADING NIL (HEADINGTYPE VERSOHEAD) (54 762 558 36) NIL) (TEXT NIL NIL (54 54 504 618) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC)) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD LEFT) CHARLOOKS (SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF SLOPE REGULAR WEIGHT MEDIUM) FORMATINFO (ARABIC)) (558 12 288 36) NIL) (HEADING NIL (HEADINGTYPE FOOTINGR) (54 27 558 36) NIL) (HEADING NIL (HEADINGTYPE RECTOHEAD) (54 762 558 36) NIL) (TEXT NIL NIL (54 54 504 684) NIL))) ( PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC)) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD LEFT) CHARLOOKS (SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF SLOPE REGULAR WEIGHT MEDIUM) FORMATINFO (ARABIC)) (54 12 288 36) NIL) (HEADING NIL (HEADINGTYPE FOOTINGV) (54 27 558 36) NIL) ( HEADING NIL (HEADINGTYPE VERSOHEAD) (54 762 558 36) NIL) (TEXT NIL NIL (54 54 504 684) NIL)))))7 8 T(1()KKT/KT(5 nT/T/T/T/T/ T/2T/T/T/T.. /T/2T.. < PAGEHEADING VERSOHEAD< PAGEHEADING RECTOHEAD; PAGEHEADINGFOOTINGV; PAGEHEADINGFOOTINGR ?1(DEFAULTFONT 1 (GACHA 10) (GACHA 8) (TERMINAL 8)) +MODERNMODERN MODERNMODERNMODERN +MODERN +MODERN +MODERN + HRULE.GETFNMODERN +   HRULE.GETFNMODERN +    HRULE.GETFNMODERN +   HRULE.GETFNMODERN +    HRULE.GETFNMODERN HRULE.GETFNMODERN  HRULE.GETFNMODERN    f   f +  HRULE.GETFNMODERN. HRULE.GETFNMODERN   @   +   W  (   "  =  HRULE.GETFNMODERN  HRULE.GETFNMODERN   `   HRULE.GETFNMODERN     + ]  + >   &           HRULE.GETFNMODERN     +      ?   =          "      "  HRULE.GETFNMODERN  HRULE.GETFNMODERNy    D + q  B  -  i  (  _    L    *  X =     *     ?  N      HRULE.GETFNMODERN _    +8 -   + Z    +& 8 ,   S       =     m + +) + +  +   + /     ;    HRULE.GETFNMODERN HRULE.GETFNMODERN      v 4       ) E      HRULE.GETFNMODERN HRULE.GETFN, HRULE.GETFNMODERN  HRULE.GETFNMODERN       2  "  1  HRULE.GETFNMODERN +  + +    HRULE.GETFNMODERN  +  ' )  ) HRULE.GETFNMODERN    HRULE.GETFNMODERN +  ? "  4  HRULE.GETFNMODERN + -  HRULE.GETFNMODERN +    ? "  a  HRULE.GETFNMODERN + C  HRULE.GETFNMODERN +  ( BMOBJ.GETFN3 H  , BMOBJ.GETFN3 1 @      HRULE.GETFNMODERN + '  HRULE.GETFNMODERN +   HRULE.GETFNMODERN +  HRULE.GETFNMODERN HRULE.GETFNMODERN  IRM.GET.CREF ). As of the LUTE release of Xerox Lisp, it is possible for the user to create and use windows and menus on the color display. (CREATEW REGION TITLE BORDERSIZE NOOPENFLG) [Function] 1 Creates a new window. REGION indicates where and how large the window should be by specifying the exterior screenregion of the window. In a user environment with multiple screens, such as a black and white screen and color screen both connected to the same machine, there is a new special problem in indicating which screen the REGION is supposed to be a region of. This problem is solved by allowing CREATEW to take screenregion arguments as REGION. For example, (SETQ FOO (CREATEW (CREATE SCREENREGION SCREEN _ (COLORSCREEN) LEFT _ 20 BOTTOM _ 210 WIDTH _ 290 HEIGHT _ 170) "FOO WINDOW")) creates a window titled "FOO WINDOW" on the color screen. To create a window on the black and white screen, the user should use SCREEN _ (MAINSCREEN) in the CREATE SCREENREGION expression. Note that it is still perfectly legal to pass in a REGION that is a region, not a screenregion, to CREATEW, but it is preferable to be passing screenregions rather than regions to CREATEW. This is because when REGION is a region, REGION is disambiguated in a somewhat arbitrary manner that may not always turn out to be what the user was hoping for. When REGION is a region, REGION is disambiguated by coercing REGION to be a screenregion on the screen which currently contains the cursor. This is so that software calling CREATEW with regions instead of screenregions tends to do the right thing in a user environment with multiple screens. 1 (WINDOWPROP WINDOW PROP NEWVALUE) [NoSpread Function] 1 If PROP='SCREEN, then WINDOWPROP returns the screen WINDOW is on. If NEWVALUE is given, (even if given as NIL), with PROP='SCREEN, then WINDOWPROP will generate an error. Any other PROP name is handled in the usual way. 1 (OPENWINDOWS SCREEN) [Function] 1 Returns a list of all open windows on SCREEN if SCREEN is a screen datatype such as (MAINSCREEN) or (COLORSCREEN). If SCREEN=NIL, then SCREEN will default to the screen containing the cursor. If SCREEN=T, then a list of all open windows on all screens is returned. 1 2 Color Fonts 1 The user can create color fonts and specify in the font profile that certain color fonts be used when printing in color. Color Font Creation 1 The user can create and manipulate color fonts through the same functions that are used to create and manipulate black and white fonts. This is made possible in some cases by there being new ways to call familiar font functions. (FONTCREATE FAMILY SIZE FACE ROTATION DEVICE NOERRORFLG CHARSET) [Function] 1 In addition to creating black and white fonts, FONTCREATE can be used to create color fonts. For example, (FONTCREATE 'GACHA 10 '(BOLD REGULAR REGULAR YELLOW BLUE) 0 '8DISPLAY) will create an 8 bit per pixel font with blue letters on a yellow background. The user indicates the color and bits per pixel of the font by the FACE and DEVICE arguments passed to FONTCREATE. DEVICE='8DISPLAY means to create an 8bpp font and DEVICE='4DISPLAY means to create a 4bpp font. A color font face is a 5 tuple, (WEIGHT SLOPE EXPANSION BACKCOLOR FORECOLOR) whereas a black and white font face is just a 3 tuple, (WEIGHT SLOPE EXPANSION) The FORECOLOR is the color of the characters of the font and the BACKCOLOR is the color of the background behind the characters that gets printed along with the characters. Both BACKCOLOR and FORECOLOR are allowed to a color name, color number, or any other legal color representation. A color font face can also be represented as a LITATOM. A three character atom such as MRR or any of the special atoms STANDARD, ITALIC, BOLD, BOLDITALIC can optionally be continued by hyphenating on BACKCOLOR and FORECOLOR suffixes. For example, MRR-YELLOW-BLUE BOLD-YELLOW-RED ITALIC-90-200 BRR-100-53 are acceptable color font faces. Hence, (FONTCREATE 'GACHA 10 'BOLD-YELLOW-BLUE 0 '8DISPLAY) will create a color font. LITATOM FACE arguments fall into one of the following patterns: wse wse-backcolor-forecolor STANDARD STANDARD-backcolor-forecolor ITALIC ITALIC-backcolor-forecolor BOLD BOLD-backcolor-forecolor BOLDITALIC BOLDITALIC-backcolor-forecolor where w=B, M, or L; s=I or R; e=R, C, or E; backcolor=a color name or color number; and forecolor=a color name or color number. 1 (FONTPROP FONT PROP) [Function] 1 Returns the value of the PROP property of font FONT. Besides black and white font properties, the following font properties are recognized: FORECOLOR The color of the characters of the font, represented as a color number. This is the color in which the characters of the font will print. BACKCOLOR The color of the background of the characters of the font, represented as a color number. This is the color in which the the background of characters of the font will print. A font with red characters on a yellow background would have a red FORECOLOR and a yellow BACKCOLOR. Color Font Profiles 1 Font profiles are the facility PRETTYPRINT uses to print different elements (user functions, system functions, clisp words, comments, etc.) in different fonts to emphasize (or deemphasize) their importance, and in general to provide for a more pleasing appearance. The user can specify that different colors of fonts be used for different kinds of elements when printing in color. A well chosen font profile will allows user to DEDIT functions, PP functions, and SEE source files in color, for example. A FONTPROFILE such as ((DEFAULTFONT 1 (GACHA 10) (GACHA 8) (TERMINAL 8) (4DISPLAY (GACHA 10 MRR-WHITE-RED)) (8DISPLAY (GACHA 10 MRR-WHITE-RED))) (BOLDFONT 2 (HELVETICA 10 BRR) (HELVETICA 8 BRR) (MODERN 8 BRR) (4DISPLAY (HELVETICA 10 BRR-WHITE-MAGENTA)) (8DISPLAY (HELVETICA 10 BRR-WHITE-MAGENTA))) (LITTLEFONT 3 (HELVETICA 8) (HELVETICA 6 MIR) (MODERN 8 MIR) (4DISPLAY (HELVETICA 8 MRR-WHITE-GREEN)) (8DISPLAY (HELVETICA 8 MRR-WHITE-GREEN))) (BIGFONT 4 (HELVETICA 12 BRR) (HELVETICA 10 BRR) (MODERN 10 BRR) (4DISPLAY (HELVETICA 12 BRR-WHITE-BLUE)) (8DISPLAY (HELVETICA 12 BRR-WHITE-BLUE))) (USERFONT BOLDFONT) (COMMENTFONT LITTLEFONT) (LAMBDAFONT BIGFONT) (SYSTEMFONT) (CLISPFONT BOLDFONT) ...) would have comments print in green and clisp words print in blue while ordinairy atoms would print in red. Not all combinations of fonts will be aesthetically pleasing and the user may have to experiment to find a compatible set. The user should indicate what font is to be used for each font class by calling the function FONTPROFILE: (FONTPROFILE PROFILE) [Function] 1 Sets up the font classes as determined by PROFILE, a list of elements which defines the correspondence between font classes and specific fonts. Each element of PROFILE is a list of the form: (FONTCLASS FONT# DISPLAYFONT PRESSFONT INTERPRESSFONT (OTHERDEVICE1 OTHERFONT1) ... (OTHERDEVICEn OTHERFONTn)) FONTCLASS is the font class name and FONT# is the font number for that class. DISPLAYFONT, PRESSFONT, and INTERPRESSFONT are font specifications (of the form accepted by FONTCREATE) for the fonts to use when printing to the black and white display and to Press and Interpress printers respectively. The appearance of color fonts can be affected by including an (OTHERDEVICEi OTHERFONTi) entry where OTHERDEVICEi is either 4DISPLAY or 8DISPLAY for a 4 bits per pixel or 8 bits per pixel color font and OTHERFONTi is a color font specification such as (GACHA 10 MRR-WHITE-RED). 1 FONTPROFILE [Variable] 1 This is the variable used to store the current font profile, in the form accepted by the function FONTPROFILE. Note that simply editing this value will not change the fonts used for the various font classes; it is necessary to execute (FONTPROFILE FONTPROFILE) to install the value of this variable. 1 2 Using Color 1 The current color implementation allows display streams to operate on color bitmaps. The two functions DSPCOLOR and DSPBACKCOLOR set the color in which a stream draws when the user defaults a color argument to a drawing function. (DSPCOLOR COLOR STREAM) [Function] sets the foreground color of a stream. It returns the previous foreground color. If COLOR is NIL, it returns the current foreground color without changing anything. The default foreground color is MINIMUMCOLOR=0, which is white in the default color maps. (DSPBACKCOLOR COLOR STREAM) [Function] sets the background color of a stream. It returns the previous background color. If COLOR is NIL, it returns the current background color without changing anything. The default background color is (MAXIMUMCOLOR BITSPERPIXEL)=15 or 255, which is black in the default color maps. The BITBLT, line-drawing routines, and curve-drawing routines routines know how to operate on a color-capable stream. Following are some notes about them. 2 BITBLTing in Color 1 If BITBLTing from a color bitmap onto another color bitmap of the same bpp, the operations PAINT, INVERT, and ERASE are done on a bit level, not on a pixel level. Thus painting color 3 onto color 10 results in color 11. If BITBLTing from a black-and-white bitmap onto a color bitmap, the one bits appear in the DSPCOLOR, and the zero bits in DSPBACKCOLOR. BLTing from black-and-white to color is fairly expensive; if the same bitmap is going to be put up several times in the same color, it is faster to create a color copy and then BLT the color copy. If the source type is TEXTURE and the destination bitmap is a color bitmap, the Texture argument is taken to be a color. Thus to fill an area with the color BLUE assuming COLORSTR is a stream whose destination is the color screen, use (BITBLT NIL NIL NIL COLORSTR 50 75 100 200 'TEXTURE 'REPLACE 'BLUE). 2 Drawing Curves and Lines in Color 1 For the functions DRAWCIRCLE, DRAWELLIPSE, and DRAWCURVE, the notion of a brush has been extended to include a color. A BRUSH is now (BRUSHSHAPE BRUSHSIZE BRUSHCOLOR). Also, a brush can be a bitmap (which can be a color bitmap). Line-drawing routines take a color argument which is the color the line is to appear in if the destination of the display stream is a color bitmap. (DRAWLINE X1 Y1 X2 Y2 WIDTH OPERATION STREAM COLOR) [Function] (DRAWTO X Y WIDTH OPERATION STREAM COLOR) [Function] (RELDRAWTO X Y WIDTH OPERATION STREAM COLOR) [Function] (DRAWBETWEEN POS1 POS2 WIDTH OPERATION STREAM COLOR) [Function] If the COLOR argument is NIL, the DSPCOLOR of the stream is used. 2 Printing in Color 1 Printing only works in REPLACE mode. The characters have a background color and a foreground color determined by the font face of the font the characters are being printed with. Example of printing to an 8bpp color screen: (SETQ FOO (CREATEW (CREATE SCREENREGION SCREEN _ (COLORSCREEN) LEFT _ 20 BOTTOM _ 210 WIDTH _ 290 HEIGHT _ 170) "FOO WINDOW")) (DSPFONT (FONTCREATE 'GACHA 10 'MRR-YELLOW-GREEN 0 '8DISPLAY) FOO) (PRINT 'HELLO FOO) ; will print in green against a yellow background. 2 Operating the Cursor on the Color Screen 1 The cursor can be moved to the color screen. The cursor can be moved to the color screen by sliding the cursor off the left or right edge of the black and white screen on to the color screen or by calling function CURSORPOSITION or CURSORSCREEN. (CURSORPOSITION NEWPOSITION - -) [Function] 1 NEWPOSITION can be a position or a screenposition. (CURSORSCREEN SCREEN XCOORD YCOORD) [Function] 1 Moves the cursor to the screenposition determined by SCREEN, XCOORD, and YCOORD. SCREEN should be the value of either (COLORSCREEN) or (MAINSCREEN). While on the color screen, the cursor is placed by doing BITBLTs in software rather than with microcode and hardware as with the black and white cursor. It is automatically taken down whenever an operation is performed that changes any bits on the color screen. The speed of the color cursor compares well with that of the black and white cursor but there can be a noticeable flicker when there is much input/output to the color screen. While the cursor is on the color screen, the black-and-white cursor is cleared giving the appearance that there is never more than one cursor at a given time. 2 Miscellaneous Color Functions 1 (COLORIZEBITMAP BITMAP 0COLOR 1COLOR BITSPERPIXEL) [Function] creates a color bitmap from a black and white bitmap. The returned bitmap has color number 1COLOR in those pixels of BITMAP that were one and 0COLOR in those pixels of BITMAP that were zero. This provides a way of producing a color bitmap from a black and white bitmap. (UNCOLORIZEBITMAP BITMAP COLORMAP) [Function] creates a black and white bitmap from a color bitmap. (SHOWCOLORTESTPATTERN BARSIZE) [Function] displays a pattern of colors on the color display. This is useful when editing a color map. The pattern has squares of the 16 possible colors laid out in two rows at the top of the screen. Colors 0 through 7 are in the top row, and colors 8 through 15 are in the next row. The bottom part of the screen is filled with bars of BARSIZE width with consecutive color numbers. The pattern is designed so that every color has a border with every other color (unless BARSIZE is too large to allow room for every color%about 20). (LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC) STARTINGPAGE# 2) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD LEFT) CHARLOOKS (SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF SLOPE REGULAR WEIGHT MEDIUM) FORMATINFO (ARABIC)) (54 12 288 36) NIL) (HEADING NIL (HEADINGTYPE FOOTINGV) (54 27 558 36) NIL) (HEADING NIL (HEADINGTYPE VERSOHEAD) (54 762 558 36) NIL) (TEXT NIL NIL (54 54 504 618) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC)) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD LEFT) CHARLOOKS (SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF SLOPE REGULAR WEIGHT MEDIUM) FORMATINFO (ARABIC)) (558 12 288 36) NIL) (HEADING NIL (HEADINGTYPE FOOTINGR) (54 27 558 36) NIL) (HEADING NIL (HEADINGTYPE RECTOHEAD) (54 762 558 36) NIL) (TEXT NIL NIL (54 54 504 684) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC)) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD LEFT) CHARLOOKS (SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF SLOPE REGULAR WEIGHT MEDIUM) FORMATINFO (ARABIC)) (54 12 288 36) NIL) (HEADING NIL (HEADINGTYPE FOOTINGV) (54 27 558 36) NIL) (HEADING NIL (HEADINGTYPE VERSOHEAD) (54 762 558 36) NIL) (TEXT NIL NIL (54 54 504 684) NIL))))); < T,5,-KKT3KT,9 nT3T3T3T3T3 T32T3T3T3T22 3T32T22 @ PAGEHEADING VERSOHEAD@ PAGEHEADING RECTOHEAD? PAGEHEADINGFOOTINGV? PAGEHEADINGFOOTINGR ?1(DEFAULTFONT 1 (GACHA 10) (GACHA 8) (TERMINAL 8)) +MODERNMODERN MODERNMODERNMODERN +MODERN +MODERN +MODERN + HRULE.GETFNMODERN +   HRULE.GETFNMODERN +    HRULE.GETFNMODERN +   HRULE.GETFNMODERN +    HRULE.GETFNMODERN HRULE.GETFNMODERN  HRULE.GETFNMODERN    K f    HRULE.GETFNMODERN' HRULE.GETFNMODERN + @    HRULE.GETFNMODERN. HRULE.GETFNMODERN   @   +   W  (   "  =  HRULE.GETFNMODERN  HRULE.GETFNMODERN +    `   HRULE.GETFNMODERN     + ]  + >   &           HRULE.GETFNMODERN     +      ?   =          "      "  HRULE.GETFNMODERN  HRULE.GETFNMODERNy    D + q  B  -  i  (  _    L    *  X =     *     ?  N      HRULE.GETFNMODERN _    +8 -   + Z    +& 8 ,   S       =     m + +) + +  +   + /     ;    HRULE.GETFNMODERN HRULE.GETFNMODERN      v 4       ) E      HRULE.GETFNMODERN HRULE.GETFN, HRULE.GETFNMODERN  HRULE.GETFNMODERN       2  "  1  HRULE.GETFNMODERN +  + +    HRULE.GETFNMODERN  +  ' )  ) HRULE.GETFNMODERN    HRULE.GETFNMODERN +  ? "  4  HRULE.GETFNMODERN + -  HRULE.GETFNMODERN +    ? "  a  HRULE.GETFNMODERN + C  HRULE.GETFNMODERN +  ( BMOBJ.GETFN3 H  , BMOBJ.GETFN3 1 @      HRULE.GETFNMODERN + '  HRULE.GETFNMODERN +   HRULE.GETFNMODERN +  HRULE.GETFNMODERN HRULE.GETFNMODERN a). Menus are a special type of window provided by the window system, used for displaying a set of items to the user, and having the user select one using the mouse and cursor. The menu facility also allows users to create and use menus in interactive programs (see ("Menus" . TERM)). As of the LUTE release of Xerox Lisp, it is possible for the user to create and use windows and menus on the color display. (CREATEW REGION TITLE BORDERSIZE NOOPENFLG) [Function] 1 Creates a new window. REGION indicates where and how large the window should be by specifying the exterior screenregion of the window. In a user environment with multiple screens, such as a black and white screen and color screen both connected to the same machine, there is a new special problem in indicating which screen the REGION is supposed to be a region of. This problem is solved by allowing CREATEW to take screenregion arguments as REGION. For example, (SETQ FOO (CREATEW (CREATE SCREENREGION SCREEN _ (COLORSCREEN) LEFT _ 20 BOTTOM _ 210 WIDTH _ 290 HEIGHT _ 170) "FOO WINDOW")) creates a window titled "FOO WINDOW" on the color screen. To create a window on the black and white screen, the user should use SCREEN _ (MAINSCREEN) in the CREATE SCREENREGION expression. Note that it is still perfectly legal to pass in a REGION that is a region, not a screenregion, to CREATEW, but it is preferable to be passing screenregions rather than regions to CREATEW. This is because when REGION is a region, REGION is disambiguated in a somewhat arbitrary manner that may not always turn out to be what the user was hoping for. When REGION is a region, REGION is disambiguated by coercing REGION to be a screenregion on the screen which currently contains the cursor. This is so that software calling CREATEW with regions instead of screenregions tends to do the right thing in a user environment with multiple screens. 1 (WINDOWPROP WINDOW PROP NEWVALUE) [NoSpread Function] 1 If PROP='SCREEN, then WINDOWPROP returns the screen WINDOW is on. If NEWVALUE is given, (even if given as NIL), with PROP='SCREEN, then WINDOWPROP will generate an error. Any other PROP name is handled in the usual way. 1 (OPENWINDOWS SCREEN) [Function] 1 Returns a list of all open windows on SCREEN if SCREEN is a screen datatype such as (MAINSCREEN) or (COLORSCREEN). If SCREEN=NIL, then SCREEN will default to the screen containing the cursor. If SCREEN=T, then a list of all open windows on all screens is returned. 1 2 Color Fonts 1 The user can create color fonts and specify in the font profile that certain color fonts be used when printing in color. Color Font Creation 1 The user can create and manipulate color fonts through the same functions that are used to create and manipulate black and white fonts. This is made possible in some cases by there being new ways to call familiar font functions. (FONTCREATE FAMILY SIZE FACE ROTATION DEVICE NOERRORFLG CHARSET) [Function] 1 In addition to creating black and white fonts, FONTCREATE can be used to create color fonts. For example, (FONTCREATE 'GACHA 10 '(BOLD REGULAR REGULAR YELLOW BLUE) 0 '8DISPLAY) will create an 8 bit per pixel font with blue letters on a yellow background. The user indicates the color and bits per pixel of the font by the FACE and DEVICE arguments passed to FONTCREATE. DEVICE='8DISPLAY means to create an 8bpp font and DEVICE='4DISPLAY means to create a 4bpp font. A color font face is a 5 tuple, (WEIGHT SLOPE EXPANSION BACKCOLOR FORECOLOR) whereas a black and white font face is just a 3 tuple, (WEIGHT SLOPE EXPANSION) The FORECOLOR is the color of the characters of the font and the BACKCOLOR is the color of the background behind the characters that gets printed along with the characters. Both BACKCOLOR and FORECOLOR are allowed to a color name, color number, or any other legal color representation. A color font face can also be represented as a LITATOM. A three character atom such as MRR or any of the special atoms STANDARD, ITALIC, BOLD, BOLDITALIC can optionally be continued by hyphenating on BACKCOLOR and FORECOLOR suffixes. For example, MRR-YELLOW-BLUE BOLD-YELLOW-RED ITALIC-90-200 BRR-100-53 are acceptable color font faces. Hence, (FONTCREATE 'GACHA 10 'BOLD-YELLOW-BLUE 0 '8DISPLAY) will create a color font. LITATOM FACE arguments fall into one of the following patterns: wse wse-backcolor-forecolor STANDARD STANDARD-backcolor-forecolor ITALIC ITALIC-backcolor-forecolor BOLD BOLD-backcolor-forecolor BOLDITALIC BOLDITALIC-backcolor-forecolor where w=B, M, or L; s=I or R; e=R, C, or E; backcolor=a color name or color number; and forecolor=a color name or color number. 1 (FONTPROP FONT PROP) [Function] 1 Returns the value of the PROP property of font FONT. Besides black and white font properties, the following font properties are recognized: FORECOLOR The color of the characters of the font, represented as a color number. This is the color in which the characters of the font will print. BACKCOLOR The color of the background of the characters of the font, represented as a color number. This is the color in which the the background of characters of the font will print. A font with red characters on a yellow background would have a red FORECOLOR and a yellow BACKCOLOR. Color Font Profiles 1 Font profiles are the facility PRETTYPRINT uses to print different elements (user functions, system functions, clisp words, comments, etc.) in different fonts to emphasize (or deemphasize) their importance, and in general to provide for a more pleasing appearance. The user can specify that different colors of fonts be used for different kinds of elements when printing in color. A well chosen font profile will allows user to DEDIT functions, PP functions, and SEE source files in color, for example. A FONTPROFILE such as ((DEFAULTFONT 1 (GACHA 10) (GACHA 8) (TERMINAL 8) (4DISPLAY (GACHA 10 MRR-WHITE-RED)) (8DISPLAY (GACHA 10 MRR-WHITE-RED))) (BOLDFONT 2 (HELVETICA 10 BRR) (HELVETICA 8 BRR) (MODERN 8 BRR) (4DISPLAY (HELVETICA 10 BRR-WHITE-MAGENTA)) (8DISPLAY (HELVETICA 10 BRR-WHITE-MAGENTA))) (LITTLEFONT 3 (HELVETICA 8) (HELVETICA 6 MIR) (MODERN 8 MIR) (4DISPLAY (HELVETICA 8 MRR-WHITE-GREEN)) (8DISPLAY (HELVETICA 8 MRR-WHITE-GREEN))) (BIGFONT 4 (HELVETICA 12 BRR) (HELVETICA 10 BRR) (MODERN 10 BRR) (4DISPLAY (HELVETICA 12 BRR-WHITE-BLUE)) (8DISPLAY (HELVETICA 12 BRR-WHITE-BLUE))) (USERFONT BOLDFONT) (COMMENTFONT LITTLEFONT) (LAMBDAFONT BIGFONT) (SYSTEMFONT) (CLISPFONT BOLDFONT) ...) would have comments print in green and clisp words print in blue while ordinairy atoms would print in red. Not all combinations of fonts will be aesthetically pleasing and the user may have to experiment to find a compatible set. The user should indicate what font is to be used for each font class by calling the function FONTPROFILE: (FONTPROFILE PROFILE) [Function] 1 Sets up the font classes as determined by PROFILE, a list of elements which defines the correspondence between font classes and specific fonts. Each element of PROFILE is a list of the form: (FONTCLASS FONT# DISPLAYFONT PRESSFONT INTERPRESSFONT (OTHERDEVICE1 OTHERFONT1) ... (OTHERDEVICEn OTHERFONTn)) FONTCLASS is the font class name and FONT# is the font number for that class. DISPLAYFONT, PRESSFONT, and INTERPRESSFONT are font specifications (of the form accepted by FONTCREATE) for the fonts to use when printing to the black and white display and to Press and Interpress printers respectively. The appearance of color fonts can be affected by including an (OTHERDEVICEi OTHERFONTi) entry where OTHERDEVICEi is either 4DISPLAY or 8DISPLAY for a 4 bits per pixel or 8 bits per pixel color font and OTHERFONTi is a color font specification such as (GACHA 10 MRR-WHITE-RED). 1 FONTPROFILE [Variable] 1 This is the variable used to store the current font profile, in the form accepted by the function FONTPROFILE. Note that simply editing this value will not change the fonts used for the various font classes; it is necessary to execute (FONTPROFILE FONTPROFILE) to install the value of this variable. 1 2 Using Color 1 The current color implementation allows display streams to operate on color bitmaps. The two functions DSPCOLOR and DSPBACKCOLOR set the color in which a stream draws when the user defaults a color argument to a drawing function. (DSPCOLOR COLOR STREAM) [Function] sets the foreground color of a stream. It returns the previous foreground color. If COLOR is NIL, it returns the current foreground color without changing anything. The default foreground color is MINIMUMCOLOR=0, which is white in the default color maps. (DSPBACKCOLOR COLOR STREAM) [Function] sets the background color of a stream. It returns the previous background color. If COLOR is NIL, it returns the current background color without changing anything. The default background color is (MAXIMUMCOLOR BITSPERPIXEL)=15 or 255, which is black in the default color maps. The BITBLT, line-drawing routines, and curve-drawing routines routines know how to operate on a color-capable stream. Following are some notes about them. 2 BITBLTing in Color 1 If BITBLTing from a color bitmap onto another color bitmap of the same bpp, the operations PAINT, INVERT, and ERASE are done on a bit level, not on a pixel level. Thus painting color 3 onto color 10 results in color 11. If BITBLTing from a black-and-white bitmap onto a color bitmap, the one bits appear in the DSPCOLOR, and the zero bits in DSPBACKCOLOR. BLTing from black-and-white to color is fairly expensive; if the same bitmap is going to be put up several times in the same color, it is faster to create a color copy and then BLT the color copy. If the source type is TEXTURE and the destination bitmap is a color bitmap, the Texture argument is taken to be a color. Thus to fill an area with the color BLUE assuming COLORSTR is a stream whose destination is the color screen, use (BITBLT NIL NIL NIL COLORSTR 50 75 100 200 'TEXTURE 'REPLACE 'BLUE). 2 Drawing Curves and Lines in Color 1 For the functions DRAWCIRCLE, DRAWELLIPSE, and DRAWCURVE, the notion of a brush has been extended to include a color. A BRUSH is now (BRUSHSHAPE BRUSHSIZE BRUSHCOLOR). Also, a brush can be a bitmap (which can be a color bitmap). Line-drawing routines take a color argument which is the color the line is to appear in if the destination of the display stream is a color bitmap. (DRAWLINE X1 Y1 X2 Y2 WIDTH OPERATION STREAM COLOR) [Function] (DRAWTO X Y WIDTH OPERATION STREAM COLOR) [Function] (RELDRAWTO X Y WIDTH OPERATION STREAM COLOR) [Function] (DRAWBETWEEN POS1 POS2 WIDTH OPERATION STREAM COLOR) [Function] If the COLOR argument is NIL, the DSPCOLOR of the stream is used. 2 Printing in Color 1 Printing only works in REPLACE mode. The characters have a background color and a foreground color determined by the font face of the font the characters are being printed with. Example of printing to an 8bpp color screen: (SETQ FOO (CREATEW (CREATE SCREENREGION SCREEN _ (COLORSCREEN) LEFT _ 20 BOTTOM _ 210 WIDTH _ 290 HEIGHT _ 170) "FOO WINDOW")) (DSPFONT (FONTCREATE 'GACHA 10 'MRR-YELLOW-GREEN 0 '8DISPLAY) FOO) (PRINT 'HELLO FOO) ; will print in green against a yellow background. 2 Operating the Cursor on the Color Screen 1 The cursor can be moved to the color screen. The cursor can be moved to the color screen by sliding the cursor off the left or right edge of the black and white screen on to the color screen or by calling function CURSORPOSITION or CURSORSCREEN. (CURSORPOSITION NEWPOSITION - -) [Function] 1 NEWPOSITION can be a position or a screenposition. (CURSORSCREEN SCREEN XCOORD YCOORD) [Function] 1 Moves the cursor to the screenposition determined by SCREEN, XCOORD, and YCOORD. SCREEN should be the value of either (COLORSCREEN) or (MAINSCREEN). While on the color screen, the cursor is placed by doing BITBLTs in software rather than with microcode and hardware as with the black and white cursor. It is automatically taken down whenever an operation is performed that changes any bits on the color screen. The speed of the color cursor compares well with that of the black and white cursor but there can be a noticeable flicker when there is much input/output to the color screen. While the cursor is on the color screen, the black-and-white cursor is cleared giving the appearance that there is never more than one cursor at a given time. 2 Miscellaneous Color Functions 1 (COLORIZEBITMAP BITMAP 0COLOR 1COLOR BITSPERPIXEL) [Function] creates a color bitmap from a black and white bitmap. The returned bitmap has color number 1COLOR in those pixels of BITMAP that were one and 0COLOR in those pixels of BITMAP that were zero. This provides a way of producing a color bitmap from a black and white bitmap. (UNCOLORIZEBITMAP BITMAP COLORMAP) [Function] creates a black and white bitmap from a color bitmap. (SHOWCOLORTESTPATTERN BARSIZE) [Function] displays a pattern of colors on the color display. This is useful when editing a color map. The pattern has squares of the 16 possible colors laid out in two rows at the top of the screen. Colors 0 through 7 are in the top row, and colors 8 through 15 are in the next row. The bottom part of the screen is filled with bars of BARSIZE width with consecutive color numbers. The pattern is designed so that every color has a border with every other color (unless BARSIZE is too large to allow room for every color%about 20). (LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC) STARTINGPAGE# 2) (0 0 612 792) ((FOLIO NIL ( PARALOOKS (QUAD LEFT) CHARLOOKS (SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF SLOPE REGULAR WEIGHT MEDIUM) FORMATINFO (ARABIC)) (54 12 288 36) NIL) (HEADING NIL (HEADINGTYPE FOOTINGV) ( 54 27 558 36) NIL) (HEADING NIL (HEADINGTYPE VERSOHEAD) (54 762 558 36) NIL) (TEXT NIL NIL (54 54 504 618) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC)) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD LEFT) CHARLOOKS (SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF SLOPE REGULAR WEIGHT MEDIUM) FORMATINFO (ARABIC)) (558 12 288 36) NIL) (HEADING NIL (HEADINGTYPE FOOTINGR) (54 27 558 36) NIL) (HEADING NIL (HEADINGTYPE RECTOHEAD) (54 762 558 36) NIL) (TEXT NIL NIL (54 54 504 684) NIL))) ( PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC)) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD LEFT) CHARLOOKS (SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF SLOPE REGULAR WEIGHT MEDIUM) FORMATINFO (ARABIC)) (54 12 288 36) NIL) (HEADING NIL (HEADINGTYPE FOOTINGV) (54 27 558 36) NIL) ( HEADING NIL (HEADINGTYPE VERSOHEAD) (54 762 558 36) NIL) (TEXT NIL NIL (54 54 504 684) NIL)))))7 8 T(1()KKT/KT(5 nT/T/T/T/T/ T/2T/T/T/T.. /T/2T.. < PAGEHEADING VERSOHEAD< PAGEHEADING RECTOHEAD; PAGEHEADINGFOOTINGV; PAGEHEADINGFOOTINGR ?1(DEFAULTFONT 1 (GACHA 10) (GACHA 8) (TERMINAL 8)) +MODERNMODERN MODERNMODERNMODERN +MODERN +MODERN +MODERN + HRULE.GETFNMODERN +   HRULE.GETFNMODERN +    HRULE.GETFNMODERN +   HRULE.GETFNMODERN +    HRULE.GETFNMODERN HRULE.GETFNMODERN  HRULE.GETFNMODERN    f   f +  HRULE.GETFNMODERN. HRULE.GETFNMODERN   @   +   W  (   "  =  HRULE.GETFNMODERN  HRULE.GETFNMODERN   `   HRULE.GETFNMODERN     + ]  + >   &           HRULE.GETFNMODERN     +      ?   =          "      "  HRULE.GETFNMODERN  HRULE.GETFNMODERNy    D + q  B  -  i  (  _    L    *  X =     *     ?  N      HRULE.GETFNMODERN _    +8 -   + Z    +& 8 ,   S       =     m + +) + +  +   + /     ;    HRULE.GETFNMODERN HRULE.GETFNMODERN      v 4       ) E      HRULE.GETFNMODERN HRULE.GETFN, HRULE.GETFNMODERN  HRULE.GETFNMODERN       2  "  1  HRULE.GETFNMODERN +  + +    HRULE.GETFNMODERN  +  ' )  ) HRULE.GETFNMODERN    HRULE.GETFNMODERN +  ? "  4  HRULE.GETFNMODERN + -  HRULE.GETFNMODERN +    ? "  a  HRULE.GETFNMODERN + C  HRULE.GETFNMODERN +  ( BMOBJ.GETFN3 H  , BMOBJ.GETFN3 1 @      HRULE.GETFNMODERN + '  HRULE.GETFNMODERN +   HRULE.GETFNMODERN +  HRULE.GETFNMODERN HRULE.GETFNMODERN  IRM.GET.CREF ). As of the LUTE release of Xerox Lisp, it is possible for the user to create and use windows and menus on the color display. (CREATEW REGION TITLE BORDERSIZE NOOPENFLG) [Function] 1 Creates a new window. REGION indicates where and how large the window should be by specifying the exterior screenregion of the window. In a user environment with multiple screens, such as a black and white screen and color screen both connected to the same machine, there is a new special problem in indicating which screen the REGION is supposed to be a region of. This problem is solved by allowing CREATEW to take screenregion arguments as REGION. For example, (SETQ FOO (CREATEW (CREATE SCREENREGION SCREEN _ (COLORSCREEN) LEFT _ 20 BOTTOM _ 210 WIDTH _ 290 HEIGHT _ 170) ""FOO WINDOW")) creates a window titled "FOO WINDOW" on the color screen. To create a window on the black and white screen, the user should use SCREEN _ (MAINSCREEN) in the0CREATE SCREENREGION expression. Note that it is still perfectly legal to pass in a REGION that is a region, not a screenregion, to CREATEW, but it is preferable to be passing screenregions rather than regions to CREATEW. This is because when REGION is a region, REGION is disambiguated in a somewhat arbitrary manner that may not always turn out to be what the user was hoping for. When REGION is a region, REGION is disambiguated by coercing REGION to be a screenregion on the screen which currently contains the cursor. This is so that software calling CREATEW with regions instead of screenregions tends to do the right thing in a user environment with multiple screens. 1 (WINDOWPROP WINDOW PROP NEWVALUE) [NoSpread Function] 1 If PROP='SCREEN, then WINDOWPROP returns the screen WINDOW is on. If NEWVALUE is given, (even if given as NIL), with PROP='SCREEN, then WINDOWPROP will generate an error. Any other PROP name is handled in the usual way. 1 (OPENWINDOWS SCREEN) [Function] 1 Returns a list of all open windows on SCREEN if SCREEN is a screen datatype such as (MAINSCREEN) or (COLORSCREEN). If SCREEN=NIL, then SCREEN will default to the screen containing the cursor. If SCREEN=T, then a list of all open windows on all screens is returned. 1 2 Color Fonts 1 The user can create color fonts and specify in the font profile that certain color fonts be used when printing in color. Color Font Creation 1 The user can create and manipulate color fonts through the same functions that are used to create and manipulate black and white fonts. This is made possible in some cases by there being new ways to call familiar font functions. (FONTCREATE FAMILY SIZE FACE ROTATION DEVICE NOERRORFLG CHARSET) [Function] 1 In addition to creating black and white fonts, FONTCREATE can be used to create color fonts. For example, (FONTCREATE 'GACHA 10 '(BOLD REGULAR REGULAR YELLOW BLUE) 0 '8DISPLAY) will create an 8 bit per pixel font with blue letters on a yellow background. The user indicates the color and bits per pixel of the font by the FACE and DEVICE arguments passed to FONTCREATE. DEVICE='8DISPLAY means to create an 8bpp font and DEVICE='4DISPLAY means to create a 4bpp font. A color font face is a 5 tuple, (WEIGHT SLOPE EXPANSION BACKCOLOR FORECOLOR) whereas a black and white font face is just a 3 tuple, (WEIGHT SLOPE EXPANSION) The FORECOLOR is the color of the characters of the font and the BACKCOLOR is the color of the background behind the characters that gets printed along with the characters. Both BACKCOLOR and FORECOLOR are allowed to a color name, color number, or any other legal color representation. A color font face can also be represented as a LITATOM. A three character atom such as MRR or any of the special atoms STANDARD, ITALIC, BOLD, BOLDITALIC can optionally be continued by hyphenating on BACKCOLOR and FORECOLOR suffixes. For example, MRR-YELLOW-BLUE BOLD-YELLOW-RED ITALIC-90-200 BRR-100-53 are acceptable color font faces. Hence, (FONTCREATE 'GACHA 10 'BOLD-YELLOW-BLUE 0 '8DISPLAY) will create a color font. LITATOM FACE arguments fall into one of the following patterns: wse wse-backcolor-forecolor STANDARD STANDARD-backcolor-forecolor ITALIC ITALIC-backcolor-forecolor BOLD BOLD-backcolor-forecolor BOLDITALIC BOLDITALIC-backcolor-forecolor where w=B, M, or L; s=I or R; e=R, C, or E; backcolor=a color name or color number; and forecolor=a color name or color number. 1 (FONTPROP FONT PROP) [Function] 1 Returns the value of the PROP property of font FONT. Besides black and white font properties, the following font properties are recognized: FORECOLOR The color of the characters of the font, represented as a color number. This is the color in which the characters of the font will print. BACKCOLOR The color of the background of the characters of the font, represented as a color number. This is the color in which the the background of characters of the font will print. A font with red characters on a yellow background would have a red FORECOLOR and a yellow BACKCOLOR. Color Font Profiles 1 Font profiles are the facility PRETTYPRINT uses to print different elements (user functions, system functions, clisp words, comments, etc.) in different fonts to emphasize (or deemphasize) their importance, and in general to provide for a more pleasing appearance. The user can specify that different colors of fonts be used for different kinds of elements when printing in color. A well chosen font profile will allows user to DEDIT functions, PP functions, and SEE source files in color, for example. A FONTPROFILE such as ((DEFAULTFONT 1 (GACHA 10) (GACHA 8) (TERMINAL 8) (4DISPLAY (GACHA 10 MRR-WHITE-RED)) (8DISPLAY (GACHA 10 MRR-WHITE-RED))) (BOLDFONT 2 (HELVETICA 10 BRR) (HELVETICA 8 BRR) (MODERN 8 BRR) (4DISPLAY (HELVETICA 10 BRR-WHITE-MAGENTA)) (8DISPLAY (HELVETICA 10 BRR-WHITE-MAGENTA))) (LITTLEFONT 3 (HELVETICA 8) (HELVETICA 6 MIR) (MODERN 8 MIR) (4DISPLAY (HELVETICA 8 MRR-WHITE-GREEN)) (8DISPLAY (HELVETICA 8 MRR-WHITE-GREEN))) (BIGFONT 4 (HELVETICA 12 BRR) (HELVETICA 10 BRR) (MODERN 10 BRR) (4DISPLAY (HELVETICA 12 BRR-WHITE-BLUE)) (8DISPLAY (HELVETICA 12 BRR-WHITE-BLUE))) (USERFONT BOLDFONT) (COMMENTFONT LITTLEFONT) (LAMBDAFONT BIGFONT) (SYSTEMFONT) (CLISPFONT BOLDFONT) ...) would have comments print in green and clisp words print in blue while ordinairy atoms would print in red. Not all combinations of fonts will be aesthetically pleasing and the user may have to experimL to find a compatible set. The user should indicate what font is to be used for each font class by calling the function FONTPROFILE: (FONTPROFILE PROFILE) [Function] 1 Sets up the font classes as determined by PROFILE, a list of elements which defines the correspondence between font classes and specific fonts. Each element of PROFILE is a list of the form: (FONTCLASS FONT# DISPLAYFONT PRESSFONT INTERPRESSFONT (OTHERDEVICE1 OTHERFONT1) ... (OTHERDEVICEn OTHERFONTn)) FONTCLASS is the font class name and FONT# is the font number for that class. DISPLAYFONT, PRESSFONT, and INTERPRESSFONT are font specifications (of the form accepted by FONTCREATE) for the fonts to use when printing to the black and white display and to Press and Interpress printers respectively. The appearance of color fonts can be affected by including an (OTHERDEVICEi OTHERFONTi) entry where OTHERDEVICEi is either 4DISPLAY or 8DISPLAY for a 4 bits per pixel or 8 bits per pixel color font and OTHERFONTi is a color font specification such as (GACHA 10 MRR-WHITE-RED). 1 FONTPROFILE [Variable] 1 This is the variable used to store the current font profile, in the form accepted by the function FONTPROFILE. Note that simply editing this value will not change the fonts used for the various font classes; it is necessary to execute (FONTPROFILE FONTPROFILE) to install the value of this variable. 1 2 Using Color 1 The current color implementation allows display streams to operate on color bitmaps. The two functions DSPCOLOR and DSPBACKCOLOR set the color in which a stream draws when the user defaults a color argument to a drawing function. (DSPCOLOR COLOR STREAM) [Function] sets the foreground color of a stream. It returns the previous foreground color. If COLOR is NIL, it returns the current foreground color without changing anything. The default foreground color is MINIMUMCOLOR=0, which is white in the default color maps. (DSPBACKCOLOR COLOR STREAM) [Function] sets the background color of a stream. It returns the previous background color. If COLOR is NIL, it returns the current background color without changing anything. The default background color is (MAXIMUMCOLOR BITSPERPIXEL)=15 or 255, which is black in the default color maps. The BITBLT, line-drawing routines, and curve-drawing routines routines know how to operate on a color-capable stream. Following are some notes about them. 2 BITBLTing in Color 1 If BITBLTing from a color bitmap onto another color bitmap of the same bpp, the operations PAINT, INVERT, and ERASE are done on a bit level, not on a pixel level. Thus painting color 3 onto color 10 results in color 11. If BITBLTing from a black-and-white bitmap onto a color bitmap, the one bits appear in the DSPCOLOR, and the zero bits in DSPBACKCOLOR. BLTing from black-and-white to color is fairly expensive; if the same bitmap is going to be put up several times in the same color, it is faster to create a color copy and then BLT the color copy. If the source type is TEXTURE and the destination bitmap is a color bitmap, the Texture argument is taken to be a color. Thus to fill an area with the color BLUE assuming COLORSTR is a stream whose destination is the color screen, use (BITBLT NIL NIL NIL COLORSTR 50 75 100 200 'TEXTURE 'REPLACE 'BLUE). 2 Drawing Curves and Lines in Color 1 For the functions DRAWCIRCLE, DRAWELLIPSE, and DRAWCURVE, the notion of a brush has been extended to include a color. A BRUSH is now (BRUSHSHAPE BRUSHSIZE BRUSHCOLOR). Also, a brush can be a bitmap (which can be a color bitmap). Line-drawing routines take a color argument which is the color the line is to appear in if the destination of the display stream is a color bitmap. (DRAWLINE X1 Y1 X2 Y2 WIDTH OPERATION STREAM COLOR) [Function] (DRAWTO X Y WIDTH OPERATION STREAM COLOR) [Function] (RELDRAWTO X Y WIDTH OPERATION STREAM COLOR) [Function] (DRAWBETWEEN POS1 POS2 WIDTH OPERATION STREAM COLOR) [Function] If the COLOR argument is NIL, the DSPCOLOR of the stream is used. 2 Printing in Color 1 Printing only works in REPLACE mode. The characters have a background color and a foreground color determined by the font face of the font the characters are being printed with. Example of printing to an 8bpp color screen: (SETQ FOO (CREATEW (CREATE SCREENREGION SCREEN _ (COLORSCREEN) @# tCcCcwCc  D + q  B  -  i  (  _    L    *  X =     *     ?  N      HRULE.GETFNMODERN _    +8 -   + Z    +& 8 ,   S       =     m + +) + +  +   + /     ;    HRULE.GETFNMODERN HRULE.GETFNMODERN      v 4       ) E      HRULE.GETFNMODERN HRULE.GETFN, HRULE.GETFNMODERN  HRULE.GETFNMODERN       2  "  1  HRULE.GETFNMODERN +  + +    HRULE.GETFNMODERN  +  ' )  ) HRULE.GETFNMODERN    HRULE.GETFNMODERN +  ? "  4  HRULE.GETFNMODERN + -  HRULE.GETFNMODERN +    ? "  a IOINFO (ARABIC)) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD LEFT) CHARLOOKS (SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF SLOPE REGULAR WEIGHT MEDIUM) FORMATINFO (ARABIC)) (54 12 288 36) NIL) (HEADING NIL (HEADINGTYPE FOOTINGV) (54 27 558 36) NIL) (HEADING NIL (HEADINGTYPE VERSOHEAD) (54 762 558 36) NIL) (TEXT NIL NIL (54 54 504 684) NIL))))); < T,5,-KKT3KT,9 nT3T3T3T3T3 T32T3T3T3T22 3T32T22 @ PAGEHEADING VERSOHEAD@ PAGEHEADING RECTOHEAD? PAGEHEADINGFOOTINGV? PAGEHEADINGFOOTINGR ?1(DEFAULTFONT 1 (GACHA 10) (GACHA 8) (TERMINAL 8)) +MODERNMODERN MODERNMODERNMODERN +MODERN +MODERN +MODERN + HRULE.GETFNMODERN +   HRULE.GETFNMODERN +    HRULE.GETFNMODERN +   HRULE.GETFNMODERN +    HRULE.GETFNMODERN HRULE.GETFNMODERN  HRULE.GETFNMODERN    K f    HRULE.GETFNMODERN' HRULE.GETFNMODERN + @    HRULE.GETFNMODERN. HRULE.GETFNMODERN   @   +   W  (   "  =  HRULE.GETFNMODERN  HRULE.GETFNMODERN +    `   HRULE.GETFNMODERN     + ]  + >   &           HRULE.GETFNMODERN     +      ?   =          "      "  HRULE.GETFNMODERN  HRULE.GETFNMODERNy    D + q  B  -  i  (  _    L    *  X =     *     ?  N      HRULE.GETFNMODERN _    +8 -   + Z    +& 8 ,   S       =     m + +) + +  +   + /     ;    HRULE.GETFNMODERN HRULE.GETFNMODERN      v 4       ) E      HRULE.GETFNMODERN HRULE.GETFN, HRULE.GETFNMODERN  HRULE.GETFNMODERN       2  "  1  HRULE.GETFNMODERN +  + +    HRULE.GETFNMODERN  +  ' )  ) HRULE.GETFNMODERN    HRULE.GETFNMODERN +  ? "  4  HRULE.GETFNMODERN + -  HRULE.GETFNMODERN +    ? "  a  HRULE.GETFNMODERN + C  HRULE.GETFNMODERN +  ( BMOBJ.GETFN3 H  , BMOBJ.GETFN3 1 @      HRULE.GETFNMODERN + '  HRULE.GETFNMODERN +   HRULE.GETFNMODERN +  HRULE.GETFNMODERN HRULE.GETFNMODERN a IRM.GET.CREF ` ). As of the LUTE release of Xerox Lisp, it is possible for the user to create and use windows and menus on the color display. (CREATEW REGION TITLE BORDERSIZE NOOPENFLG) [Function] 1 Creates a new window. REGION indicates where and how large the window should be by specifying the exterior screenregion of the window. In a user environment with multiple screens, such as a black and white screen and color screen both connected to the same machine, there is a new special problem in indicating which screen the REGION is supposed to be a region of. This problem is solved by allowing CREATEW to take screenregion arguments as REGION. For example, (SETQ FOO (CREATEW (CREATE SCREENREGION SCREEN _ (COLORSCREEN) LEFT _ 20 BOTTOM _ 210 WIDTH _ 290 HEIGHT _ 170) "FOO WINDOW")) creates a window titled "FOO WINDOW" on the color screen. To create a window on the black and white screen, the user should use SCREEN _ (MAINSCREEN) in the CREATE SCREENREGION expression. Note that it is still perfectly legal to pass in a REGION that is a region, not a screenregion, to CREATEW, but it is preferable to be passing screenregions rather than regions to CREATEW. This is because when REGION is a region, REGION is disambiguated in a somewhat arbitrary manner that may not always turn out to be what the user was hoping for. When REGION is a region, REGION is disambiguated by coercing REGION to be a screenregion on the screen which currently contains the cursor. This is so that software calling CREATEW with regions instead of screenregions tends to do the right thing in a user environment with multiple screens. 1 (WINDOWPROP WINDOW PROP NEWVALUE) [NoSpread Function] 1 If PROP='SCREEN, then WINDOWPROP returns the screen WINDOW is on. If NEWVALUE is given, (even if given as NIL), with PROP='SCREEN, then WINDOWPROP will generate an error. Any other PROP name is handled in the usual way. 1 (OPENWINDOWS SCREEN) [Function] 1 Returns a list of all open windows on SCREEN if SCREEN is a screen datatype such as (MAINSCREEN) or (COLORSCREEN). If SCREEN=NIL, then SCREEN will default to the screen containing the cursor. If SCREEN=T, then a list of all open windows on all screens is returned. 1 2 Color Fonts 1 The user can create color fonts and specify in the font profile that certain color fonts be used when printing in color. Color Font Creation 1 The user can create and manipulate color fonts through the same functions that are used to create and manipulate black and white fonts. This is made possible in some cases by there being new ways to call familiar font functions. (FONTCREATE FAMILY SIZE FACE ROTATION DEVICE NOERRORFLG CHARSET) [Function] 1 In addition to creating black and white fonts, FONTCREATE can be used to create color fonts. For example, (FONTCREATE 'GACHA 10 '(BOLD REGULAR REGULAR YELLOW BLUE) 0 '8DISPLAY) will create an 8 bit per pixel font with blue letters on a yellow background. The user indicates the color and bits per pixel of the font by the FACE and DEVICE arguments passed to FONTCREATE. DEVICE='8DISPLAY means to create an 8bpp font and DEVICE='4DISPLAY means to create a 4bpp font. A color font face is a 5 tuple, (WEIGHT SLOPE EXPANSION BACKCOLOR FORECOLOR) whereas a black and white font face is just a 3 tuple, (WEIGHT SLOPE EXPANSION) The FORECOLOR is the color of the characters of the font and the BACKCOLOR is the color of the background behind the characters that gets printed along with the characters. Both BACKCOLOR and FORECOLOR are allowed to a color name, color number, or any other legal color representation. A color font face can also be represented as a LITATOM. A three character atom such as MRR or any of the special atoms STANDARD, ITALIC, BOLD, BOLDITALIC can optionally be continued by hyphenating on BACKCOLOR and FORECOLOR suffixes. For example, MRR-YELLOW-BLUE BOLD-YELLOW-RED ITALIC-90-200 BRR-100-53 are acceptable color font faces. Hence, (FONTCREATE 'GACHA 10 'BOLD-YELLOW-BLUE 0 '8DISPLAY) will create a color font. LITATOM FACE arguments fall into one of the following patterns: wse wse-backcolor-forecolor STANDARD STANDARD-backcolor-forecolor ITALIC ITALIC-backcolor-forecolor BOLD BOLD-backcolor-forecolor BOLDITALIC BOLDITALIC-backcolor-forecolor where w=B, M, or L; s=I or R; e=R, C, or E; backcolor=a color name or color number; and forecolor=a color name or color number. 1 (FONTPROP FONT PROP) [Function] 1 Returns the value of the PROP property of font FONT. Besides black and white font properties, the following font properties are recognized: FORECOLOR The color of the characters of the font, represented as a color number. This is the color in which the characters of the font will print. BACKCOLOR The color of the background of the characters of the font, represented as a color number. This is the color in which the the background of characters of the font will print. A font with red characters on a yellow background would have a red FORECOLOR and a yellow BACKCOLOR. Color Font Profiles 1 Font profiles are the facility PRETTYPRINT uses to print different elements (user functions, system functions, clisp words, comments, etc.) in different fonts to emphasize (or deemphasize) their importance, and in general to provide for a more pleasing appearance. The user can specify that different colors of fonts be used for different kinds of elements when printing in color. A well chosen font profile will allows user to DEDIT functions, PP functions, and SEE source files in color, for example. A FONTPROFILE such as ((DEFAULTFONT 1 (GACHA 10) (GACHA 8) (TERMINAL 8) (4DISPLAY (GACHA 10 MRR-WHITE-RED)) (8DISPLAY (GACHA 10 MRR-WHITE-RED))) (BOLDFONT 2 (HELVETICA 10 BRR) (HELVETICA 8 BRR) (MODERN 8 BRR) (4DISPLAY (HELVETICA 10 BRR-WHITE-MAGENTA)) (8DISPLAY (HELVETICA 10 BRR-WHITE-MAGENTA))) (LITTLEFONT 3 (HELVETICA 8) (HELVETICA 6 MIR) (MODERN 8 MIR) (4DISPLAY (HELVETICA 8 MRR-WHITE-GREEN)) (8DISPLAY (HELVETICA 8 MRR-WHITE-GREEN))) (BIGFONT 4 (HELVETICA 12 BRR) (HELVETICA 10 BRR) (MODERN 10 BRR) (4DISPLAY (HELVETICA 12 BRR-WHITE-BLUE)) (8DISPLAY (HELVETICA 12 BRR-WHITE-BLUE))) (USERFONT BOLDFONT) (COMMENTFONT LITTLEFONT) (LAMBDAFONT BIGFONT) (SYSTEMFONT) (CLISPFONT BOLDFONT) ...) would have comments print in green and clisp words print in blue while ordinairy atoms would print in red. Not all combinations of fonts will be aesthetically pleasing and the user may have to experiment to find a compatible set. The user should indicate what font is to be used for each font class by calling the function FONTPROFILE: (FONTPROFILE PROFILE) [Function] 1 Sets up the font classes as determined by PROFILE, a list of elements which defines the correspondence between font classes and specific fonts. Each element of PROFILE is a list of the form: (FONTCLASS FONT# DISPLAYFONT PRESSFONT INTERPRESSFONT (OTHERDEVICE1 OTHERFONT1) ... (OTHERDEVICEn OTHERFONTn)) FONTCLASS is the font class name and FONT# is the font number for that class. DISPLAYFONT, PRESSFONT, and INTERPRESSFONT are font specifications (of the form accepted by FONTCREATE) for the fonts to use when printing to the black and white display and to Press and Interpress printers respectively. The appearance of color fonts can be affected by including an (OTHERDEVICEi OTHERFONTi) entry where OTHERDEVICEi is either 4DISPLAY or 8DISPLAY for a 4 bits per pixel or 8 bits per pixel color font and OTHERFONTi is a color font specification such as (GACHA 10 MRR-WHITE-RED). 1 FONTPROFILE [Variable] 1 This is the variable used to store the current font profile, in the form accepted by the function FONTPROFILE. Note that simply editing this value will not change the fonts used for the various font classes; it is necessary to execute (FONTPROFILE FONTPROFILE) to install the value of this variable. 1 2 Using Color 1 The current color implementation allows display streams to operate on color bitmaps. The two functions DSPCOLOR and DSPBACKCOLOR set the color in which a stream draws when the user defaults a color argument to a drawing function. (DSPCOLOR COLOR STREAM) [Function] sets the foreground color of a stream. It returns the previous foreground color. If COLOR is NIL, it returns the current foreground color without changing anything. The default foreground color is MINIMUMCOLOR=0, which is white in the default color maps. (DSPBACKCOLOR COLOR STREAM) [Function] sets the background color of a stream. It returns the previous background color. If COLOR is NIL, it returns the current background color without changing anything. The default background color is (MAXIMUMCOLOR BITSPERPIXEL)=15 or 255, which is black in the default color maps. The BITBLT, line-drawing routines, and curve-drawing routines routines know how to operate on a color-capable stream. Following are some notes about them. 2 BITBLTing in Color 1 If BITBLTing from a color bitmap onto another color bitmap of the same bpp, the operations PAINT, INVERT, and ERASE are done on a bit level, not on a pixel level. Thus painting color 3 onto color 10 results in color 11. If BITBLTing from a black-and-white bitmap onto a color bitmap, the one bits appear in the DSPCOLOR, and the zero bits in DSPBACKCOLOR. BLTing from black-and-white to color is fairly expensive; if the same bitmap is going to be put up several times in the same color, it is faster to create a color copy and then BLT the color copy. If the source type is TEXTURE and the destination bitmap is a color bitmap, the Texture argument is taken to be a color. Thus to fill an area with the color BLUE assuming COLORSTR is a stream whose destination is the color screen, use (BITBLT NIL NIL NIL COLORSTR 50 75 100 200 'TEXTURE 'REPLACE 'BLUE). 2 Drawing Curves and Lines in Color 1 For the functions DRAWCIRCLE, DRAWELLIPSE, and DRAWCURVE, the notion of a brush has been extended to include a color. A BRUSH is now (BRUSHSHAPE BRUSHSIZE BRUSHCOLOR). Also, a brush can be a bitmap (which can be a color bitmap). Line-drawing routines take a color argument which is the color the line is to appear in if the destination of the display stream is a color bitmap. (DRAWLINE X1 Y1 X2 Y2 WIDTH OPERATION STREAM COLOR) [Function] (DRAWTO X Y WIDTH OPERATION STREAM COLOR) [Function] (RELDRAWTO X Y WIDTH OPERATION STREAM COLOR) [Function] (DRAWBETWEEN POS1 POS2 WIDTH OPERATION STREAM COLOR) [Function] If the COLOR argument is NIL, the DSPCOLOR of the stream is used. 2 Printing in Color 1 Printing only works in REPLACE mode. The characters have a background color and a foreground color determined by the font face of the font the characters are being printed with. Example of printing to an 8bpp color screen: (SETQ FOO (CREATEW (CREATE SCREENREGION SCREEN _ (COLORSCREEN) LEFT _ 20 BOTTOM _ 210 WIDTH _ 290 HEIGHT _ 170) "FOO WINDOW")) (DSPFONT (FONTCREATE 'GACHA 10 'MRR-YELLOW-GREEN 0 '8DISPLAY) FOO) (PRINT 'HELLO FOO) ; will print in green against a yellow background. 2 Operating the Cursor on the Color Screen 1 The cursor can be moved to the color screen. The cursor can be moved to the color screen by sliding the cursor off the left or right edge of the black and white screen on to the color screen or by calling function CURSORPOSITION or CURSORSCREEN. (CURSORPOSITION NEWPOSITION - -) [Function] 1 NEWPOSITION can be a position or a screenposition. (CURSORSCREEN SCREEN XCOORD YCOORD) [Function] 1 Moves the cursor to the screenposition determined by SCREEN, XCOORD, and YCOORD. SCREEN should be the value of either (COLORSCREEN) or (MAINSCREEN). While on the color screen, the cursor is placed by doing BITBLTs in software rather than with microcode and hardware as with the black and white cursor. It is automatically taken down whenever an operation is performed that changes any bits on the color screen. The speed of the color cursor compares well with that of the black and white cursor but there can be a noticeable flicker when there is much input/output to the color screen. While the cursor is on the color screen, the black-and-white cursor is cleared giving the appearance that there is never more than one cursor at a given time. 2 Miscellaneous Color Functions 1 (COLORIZEBITMAP BITMAP 0COLOR 1COLOR BITSPERPIXEL) [Function] creates a color bitmap from a black and white bitmap. The returned bitmap has color number 1COLOR in those pixels of BITMAP that were one and 0COLOR in those pixels of BITMAP that were zero. This provides a way of producing a color bitmap from a black and white bitmap. (UNCOLORIZEBITMAP BITMAP COLORMAP) [Function] creates a black and white bitmap from a color bitmap. (SHOWCOLORTESTPATTERN BARSIZE) [Function] displays a pattern of colors on the color display. This is useful when editing a color map. The pattern has squares of the 16 possible colors laid out in two rows at the top of the screen. Colors 0 through 7 are in the top row, and colors 8 through 15 are in the next row. The bottom part of the screen is filled with bars of BARSIZE width with consecutive color numbers. The pattern is designed so that every color has a border with every other color (unless BARSIZE is too large to allow room for every color%about 20). (LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC) STARTINGPAGE# 2) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD LEFT) CHARLOOKS (SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF SLOPE REGULAR WEIGHT MEDIUM) FORMATINFO (ARABIC)) (54 12 288 36) NIL) (HEADING NIL (HEADINGTYPE FOOTINGV) (54 27 558 36) NIL) (HEADING NIL (HEADINGTYPE VERSOHEAD) (54 762 558 36) NIL) (TEXT NIL NIL (54 54 504 618) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC)) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD LEFT) CHARLOOKS (SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF SLOPE REGULAR WEIGHT MEDIUM) FORMATINFO (ARABIC)) (558 12 288 36) NIL) (HEADING NIL (HEADINGTYPE FOOTINGR) (54 27 558 36) NIL) (HEADING NIL (HEADINGTYPE RECTOHEAD) (54 762 558 36) NIL) (TEXT NIL NIL (54 54 504 684) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC)) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD LEFT) CHARLOOKS (SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF SLOPE REGULAR WEIGHT MEDIUM) FORMATINFO (ARABIC)) (54 12 288 36) NIL) (HEADING NIL (HEADINGTYPE FOOTINGV) (54 27 558 36) NIL) (HEADING NIL (HEADINGTYPE VERSOHEAD) (54 762 558 36) NIL) (TEXT NIL NIL (54 54 504 684) NIL))))); < T,5,-KKT3KT,9 nT3T3T3T3T3 T32T3T3T3T22 3T32T22 @ PAGEHEADING VERSOHEAD@ PAGEHEADING RECTOHEAD? PAGEHEADINGFOOTINGV? PAGEHEADINGFOOTINGROPTIMA OPTIMAOPTIMA +OPTIMA +OPTIMA +OPTIMAOPTIMAOPTIMA + HRULE.GETFNOPTIMA +- HRULE.GETFNOPTIMA +- HRULE.GETFNOPTIMA + HRULE.GETFNOPTIMA +   HRULE.GETFNOPTIMA HRULE.GETFNOPTIMA  HRULE.GETFNOPTIMAKf HRULE.GETFNOPTIMA' HRULE.GETFNOPTIMA +@ HRULE.GETFNOPTIMA. HRULE.GETFNOPTIMA  @  + W("= HRULE.GETFNOPTIMA  HRULE.GETFNOPTIMA +` HRULE.GETFNOPTIMA   +] +> & HRULE.GETFNOPTIMA   +  ?=  "  " HRULE.GETFNOPTIMA  HRULE.GETFNOPTIMAy   D +q B - k ( a   N  *  X =    *  ? N    HRULE.GETFNOPTIMA _  +8 -  + Z  +&8, S  =  m + +) + +   +  + /; HRULE.GETFNOPTIMA HRULE.GETFNOPTIMA  v 4   ) E   HRULE.GETFNOPTIMA HRULE.GETFN, HRULE.GETFNOPTIMA HRULE.GETFNOPTIMA     2 "1 HRULE.GETFNOPTIMA +++  HRULE.GETFNOPTIMA  +')) HRULE.GETFNOPTIMA  HRULE.GETFNOPTIMA +?"4 HRULE.GETFNOPTIMA +- HRULE.GETFNOPTIMA + ?"a HRULE.GETFNOPTIMA +C HRULE.GETFNOPTIMA +( BMOBJ.GETFN3H, BMOBJ.GETFN31@     HRULE.GETFNOPTIMA +' HRULE.GETFNOPTIMA + HRULE.GETFNOPTIMA + HRULE.GETFNOPTIMA HRULE.GETFNOPTIMA#4 IRM.GET.CREF ? IRM.GET.CREF ! HRULE.GETFNOPTIMA +-n(`SVUWEs HRULE.GETFNOPTIMA +  HRULE.GETFNOPTIMA +- (=" HRULE.GETFNOPTIMA +  HRULE.GETFNOPTIMA +&A 7@ HRULE.GETFNOPTIMA + HRULE.GETFNOPTIMA  HRULE.GETFNOPTIMAy HRULE.GETFNOPTIMA  3 HRULE.GETFNOPTIMA +kK4D27):[81863 HRULE.GETFNOPTIMA + +  HRULE.GETFNOPTIMA +Z   HRULE.GETFNOPTIMA     78%"<="$!;<$"89 k{k  HRULE.GETFNOPTIMA +*p    %    [ +C HRULE.GETFNOPTIMA +  HRULE.GETFNOPTIMA + E HRULE.GETFNOPTIMA + HRULE.GETFNOPTIMA  HRULE.GETFNOPTIMA  V W HRULE.GETFNOPTIMA HRULE.GETFNOPTIMANP HRULE.GETFNOPTIMA" HRULE.GETFNOPTIMA  +&     + +-   +5 5 HRULE.GETFNOPTIMA HRULE.GETFNOPTIMA-(`SVUWE=M=GF HRULE.GETFNOPTIMA) HRULE.GETFNOPTIMA  HRULE.GETFNOPTIMA + ( HRULE.GETFNOPTIMA +5>W HRULE.GETFNOPTIMA HRULE.GETFNOPTIMA ! \a  6  J+}z \ No newline at end of file diff --git a/library/COPYFILES.TEDIT b/library/COPYFILES.TEDIT new file mode 100644 index 0000000000000000000000000000000000000000..a2682989768cbec4b98f43a2107ff738ae9e8470 GIT binary patch literal 12885 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 T7(y_CzexONPw#5~!tecWI1s$b literal 0 HcmV?d00001 diff --git a/library/EDITBITMAP.TEDIT b/library/EDITBITMAP.TEDIT new file mode 100644 index 0000000000000000000000000000000000000000..0830a2cdcd4dcdfd77d8919ffaa8be537b6236a4 GIT binary patch literal 44353 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 F|34|gxeEXQ literal 0 HcmV?d00001 diff --git a/library/ETHERRECORDS.TEDIT b/library/ETHERRECORDS.TEDIT new file mode 100644 index 0000000000000000000000000000000000000000..a920cb461879fc24084a9f9d5425b1b0c4daf5ad GIT binary patch literal 8451 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 U;nZ8@3cBN9_3zq0zx&630H#vJYybcN literal 0 HcmV?d00001 diff --git a/library/FILEBROWSER.TEDIT b/library/FILEBROWSER.TEDIT new file mode 100644 index 0000000000000000000000000000000000000000..2ba2aa6cfa7692775a1d754ac75d6da877421a41 GIT binary patch literal 216971 zcmeFa4|G)5c`tfqG@ubhFcRbj-^g$@2wU(lmF>n>ZJs<5BWXl1V36zZlG`#!1B@+c z291QE#`cjIMS9{k>E_D##)M;M> zqJ9bR2x=#hQ8(1F2YVt?iM%v2BBHd&bvv@4