%!PS-Adobe-2.0
%%Creator: dvips 5.58 Copyright 1986, 1994 Radical Eye Software
%%Title: cwin.dvi
%%CreationDate: Thu Oct 19 11:31:49 1995
%%Pages: 8
%%PageOrder: Ascend
%%BoundingBox: 0 0 596 842
%%EndComments
%DVIPSCommandLine: F:\EMTEX\DVIPS32.EXE cwin
%DVIPSParameters: dpi=300, compressed, comments removed
%DVIPSSource:  TeX output 1995.10.19:1131
%%BeginProcSet: texc.pro
/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N
/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72
mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1}
ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div
hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul
TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if}
forall round exch round exch]setmatrix}N /@landscape{/isls true N}B
/@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B
/FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{
/nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N
string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N
end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{
/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]
N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup
length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{
128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub
get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data
dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N
/rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup
/base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx
0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff
setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff
.1 sub]/id ch-image N /rw ch-width 7 add 8 idiv string N /rc 0 N /gp 0 N
/cp 0 N{rc 0 ne{rc 1 sub /rc X rw}{G}ifelse}imagemask restore}B /G{{id
gp get /gp gp 1 add N dup 18 mod S 18 idiv pl S get exec}loop}B /adv{cp
add /cp X}B /chg{rw cp id gp 4 index getinterval putinterval dup gp add
/gp X adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get dup 0 eq{pop 1}{
dup 255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse}ifelse put 1
adv}B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127}{dup 2
idiv S 128 and or}ifelse}ifelse put 1 adv}B /clr{rw cp 2 index string
putinterval adv}B /set{rw cp fillstr 0 4 index getinterval putinterval
adv}B /fillstr 18 string 0 1 17{2 copy 255 put pop}for N /pl[{adv 1 chg}
{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{
adv rsh nd}{1 add adv}{/rc X nd}{1 add set}{1 add clr}{adv 2 chg}{adv 2
chg nd}{pop nd}]dup{bind pop}forall N /D{/cc X dup type /stringtype ne{]
}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup
length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{
cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin
0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul
add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore showpage
userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook
known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X
/IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for
65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0
0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V
{}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7
getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false}
ifelse}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false
RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1
false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform
round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg
rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail
{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M}
B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{
4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{
p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p
a}B /bos{/SS save N}B /eos{SS restore}B end
%%EndProcSet
TeXDict begin 39158280 55380996 1000 300 300 (/CSLBASE/cwin.dvi)
@start /Fa 13 111 df<EA4010EAE038EAF078EAE038AAEA60300D0E7B9C18>34
D<1218123C127EA2123C12181200A81218123C127EA2123E121E120E121C123C127812F0
1260071A789318>59 D<1303EB0780131FEB3F00137E485AEA03F0485AEA1FC048C7FC12
7E5AA2127E7EEA1FC0EA07E06C7EEA01FCEA007E7FEB1F801307EB030011187D9918>I<
126012F012FC127E7EEA1FC0EA07E06C7EEA01FCEA007E7FEB1F80A2EB3F00137E485AEA
03F0485AEA1FC048C7FC127E5A12F0126011187D9918>62 D<EA7FFFB512806C1300EA01
C0B3A4EA7FFFB512806C1300111C7D9B18>73 D<387E07F038FF0FF8387F07F0381D81C0
A313C1121CA213E1A313611371A213311339A31319A2131D130DA3EA7F07EAFF87EA7F03
151C7F9B18>78 D<EA1FE0EA3FF8487EEA781EEA300EC67EA213FF1207121FEA7F071278
12E0A36C5AEA781F383FFFF0EA1FFBEA07E114147D9318>97 D<EA01F0EA07FCEA1FFEEA
3E0F38380780EA7003A238E001C0A2B5FCA300E0C7FC1270EB01C01238EA3E03381FFF80
00071300EA01FC12147D9318>101 D<EB1F80EB7FC0EBFFE013E13801C0C01400A3387F
FFC0B5FCA23801C000AEEA7FFFA3131C7F9B18>I<EA0380487EA36C5AC8FCA4EA7FC012
FF127F1201AEB5FC14801400111D7C9C18>105 D<EA7FE012FF127F1200B3A4387FFFC0
B512E06C13C0131C7E9B18>108 D<387CE0E038FFFBF8EA7FFF381F1F1CEA1E1EA2EA1C
1CAB387F1F1F39FFBFBF80397F1F1F001914819318>I<EA7E3E38FEFF80007F13C0EA0F
C1EB80E01300120EAB387FC3FC38FFE7FE387FC3FC1714809318>I
E /Fb 76 123 df<90381F83E09038F06E303901C07878380380F8903800F03048EB7000
A7B612803907007000B2387FE3FF1D20809F1B>11 D<133FEBE0C0EA01C0380381E0EA07
01A290C7FCA6B512E0EA0700B2387FC3FE1720809F19>I<EB3FE013E0EA01C1EA0381EA
0700A8B5FCEA0700B2387FE7FE1720809F19>I<127012F8A71270AA1220A51200A51270
12F8A3127005217CA00D>33 D<EA7038EAF87CEAFC7EA2EA743AEA0402A3EA0804A2EA10
08A2EA2010EA40200F0E7E9F17>I<000F1430EA1880D83060136039703001C038602C06
903813F98039E0100300A214065CA25C00605B132000705B383040C0EA1880380F018039
000300E0EC031090380606081504EB0C0C1318EC1C0213301360A213C0EA0180A2390300
0C041206140648140848EB03100008EB00E01F257DA126>37 D<137813841201EA030212
07A45BA25BA26C5A9038A00FFC9038C003E090388001C03901C00080EC0100EA03E00004
1302EA08F03818700438307808EA70386D5AEAF01EEB0E206D5A903803C0081270D87801
13103938067030391C1838603907E00F801E227EA023>I<127012F812FCA212741204A3
1208A21210A212201240060E7C9F0D>I<132013401380EA0100120212065AA25AA25AA3
12701260A312E0AC1260A312701230A37EA27EA27E12027EEA0080134013200B2E7DA112
>I<7E12407E7E7E120C7EA27EA2EA0180A313C01200A313E0AC13C0A312011380A3EA03
00A21206A25A12085A5A5A5A0B2E7DA112>I<127012F812FCA212741204A31208A21210
A212201240060E7C840D>44 D<EAFFC0A20A027F8A0F>I<127012F8A3127005057C840D>
I<13011303A21306A3130CA31318A31330A31360A313C0A3EA0180A3EA0300A31206A35A
A35AA35AA35AA35AA3102D7DA117>I<EA03F0EA0E1C487EEA1806EA380738700380A400
F013C0AD00701380A3EA780700381300EA1806EA1C0E6C5AEA03F0121F7E9D17>I<EA01
801203120F12F31203B3A6EA07C0EAFFFE0F1E7C9D17>I<EA03F0EA0C1CEA100E487E00
401380128000F013C0EAF803A3EA200712001480A2EB0F00130E5B5B5B13605B485A48C7
FC000613405A5A00101380EA3FFF5AB5FC121E7E9D17>I<EA03F0EA0C1CEA100EEA200F
007813801307A2EA380F12001400A2130E5B5BEA03F0EA003C130E130FEB0780A214C012
2012F8A300F013801240EB0F00EA200EEA1C3CEA03F0121F7E9D17>I<1306A2130EA213
1E132EA2134E138EA2EA010E1202A212041208A212101220A2124012C0B512F038000E00
A7EBFFE0141E7F9D17>I<EA1803EA1FFE5B5B13E00010C7FCA6EA11F0EA161CEA180EEA
10071480EA0003A214C0A3127012F0A200E013801240EB0700EA2006EA100EEA0C38EA03
E0121F7E9D17>I<137CEA0182EA0701380E0380EA0C07121C3838030090C7FC12781270
A2EAF1F0EAF21CEAF406EAF807EB0380A200F013C0A51270A214801238EB07001218EA0C
0E6C5AEA01F0121F7E9D17>I<1240387FFFC01480A238400100EA8002A25B485AA25B5B
A25BA213C0A212015B1203A41207A76CC7FC121F7D9D17>I<EA03F0EA0C0CEA1006EA30
03382001801260A3127038780300123EEA3F06EA1FC8EA0FF0EA03F8487EEA0C7EEA103F
38300F80EA6003384001C012C01300A31480EA600100201300EA1002EA0C0CEA03F0121F
7E9D17>I<127012F8A312701200AA127012F8A3127005147C930D>58
D<127012F8A312701200AA127012F012F8A212781208A31210A31220A21240051D7C930D
>I<EA0FC0EA3070EA4038A2EAE03C12F0A21260EA0038137013E013C0EA0180A213005A
1202A6C7FCA51207EA0F80A3EA07000E207D9F15>63 D<5B497EA3497EA3EB09E0A3EB10
F0A3EB2078A3497EA3497EA2EBFFFE3801000FA30002EB0780A348EB03C0120E001FEB07
E039FFC03FFE1F207F9F22>65 D<B512E0380F80380007131E141F801580A515005C141E
5CEBFFF0EB803C80801580140715C0A51580140F15005C000F133CB512F01A1F7E9E20>
I<90380FC04090387030C03801C0093803800538070003000E1301001E1300121C123C00
7C1440A2127800F81400A91278007C1440A2123C121C001E1480120E6CEB010038038002
6C6C5A38007038EB0FC01A217D9F21>I<B512E0380F803C00077F1407EC038015C0EC01
E0A215F01400A215F8A915F0A3EC01E0A2EC03C01580EC0700140E000F133CB512E01D1F
7E9E23>I<B6FC380F800F00071303A28015801400A314801500A3138113FF13811380A4
EC0020A31540A315C0A2EC0180000F130FB6FC1B1F7E9E1F>I<B6FC380F800F00071303
A28015801400A4EC8000A4138113FF13811380A491C7FCA8487EEAFFFE191F7E9E1E>I<
90380FE02090387818609038E004E03803800238070001481300001E1460A25A1520127C
127800F81400A7EC7FFCEC03E000781301127C123CA27EA27E7E380380023900E0046090
3878182090380FE0001E217D9F24>I<39FFF8FFF8390F800F8000071400AC90B5FCEB80
0FAE000F148039FFF8FFF81D1F7E9E22>I<EAFFFCEA0FC0EA0780B3A9EA0FC0EAFFFC0E
1F7F9E10>I<39FFFC0FFC390FC003E03907800180150014025C5C5C5C5C5C0181C7FC13
83EB8780138FEB93C0EB91E013A1EBC0F01380147880A280A280EC0780A215C0D80FC013
E039FFFC3FFC1E1F7E9E23>75 D<EAFFFEEA0FC06C5AB21402A414061404A2140C141C00
0F137CB512FC171F7E9E1C>I<B46CEB1FF8000F158000071500D805C0132FA3D804E013
4FA20170138FA3903838010FA3EB1C02A3EB0E04A3EB0708A3EB0390A2EB01E0A3380E00
C0001FEC1F803AFFE0C1FFF8251F7E9E2A>I<39FF803FF83907C007C0EC03803905E001
00A2EA04F01378A2133CA2131E130FA2EB0781A2EB03C1EB01E1A2EB00F1A21479143DA2
141FA28080A2000E7F121F38FFE0011D1F7E9E22>I<EB1F80EBF0F03801C0383807801E
48487E000E7F001E148048EB03C0A2007C14E000781301A200F814F0A9007814E0007C13
03A2003C14C0A26CEB0780000E1400000F5B3807801E3801C0383800F0F0EB1F801C217D
9F23>I<B512E0380F80780007131C141E801580A61500141E141C1478EBFFE00180C7FC
AD487EEAFFFC191F7E9E1F>I<B57E380F80F0000713788080A2141FA4141EA25C5C5CEB
FF80EB81C0EB80E08014701478A3147CA31504147E143E390FC01E0839FFFC0F10C7EA03
E01E207E9E21>82 D<3807E080EA0C19EA1007EA3003EA6001A212E01300A36C1300A212
78127FEA3FF0EA1FFC6C7EEA03FF38001F801307EB03C0A213011280A400C01380130300
E01300EAF006EACE0CEA81F812217D9F19>I<007FB512E038780F010060EB0060004014
20A200C0143000801410A400001400B3497E3807FFFE1C1F7E9E21>I<39FFFC3FF8390F
C007C03907800380EC0100B3A300031302A2EA01C05C6C6C5AEB7018EB3820EB0FC01D20
7E9E22>I<3BFFF07FF81FF03B1F800FC007C03B0F0007800380EE010015C0D807801402
A33A03C009E004A39039E010F00C00011508A29038F0207800005DA2EC403C01785CA2EC
C03E90393C801E40A390391F000F80A3011E1307010E91C7FCA2010C7F010413022C207F
9E2F>87 D<39FFF003FF391F8000F8000F1460000714407F6C6C138012019038F0010000
005BEBF802EB7C04133CEB3E08131EEB1F10EB0FB0EB07A014C01303AB1307EB7FFE201F
7F9E22>89 D<12FEA212C0B3B3A512FEA2072D7CA10D>91 D<EA0804EA1008EA2010A2EA
4020A2EA8040A3EAB85CEAFC7EA2EA7C3EEA381C0F0E7B9F17>I<12FEA21206B3B3A512
FEA2072D7FA10D>I<EA1FE0EA3030EA7818131CEA300E1200A313FEEA078EEA1E0E1238
127800F01310A3131E127838386720380F83C014147E9317>97 D<120E12FE120EAA133E
EBC380380F01C0EB00E0120E1470A21478A61470A214E0120F380D01C0380CC300EA083E
15207F9F19>I<EA03F8EA0E0CEA1C1E1238130CEA7000A212F0A61270A2EA3801A2EA1C
02EA0E0CEA03F010147E9314>I<EB0380133F1303AAEA03E3EA061BEA1C07EA3803A212
70A212F0A61270A212381307121CEA0E1B3803E3F815207E9F19>I<EA03F0EA0E1C487E
487EA21270EB038012F0A2B5FC00F0C7FCA31270A26C13801218380C0100EA0706EA01F8
11147F9314>I<137C13C6EA018F1203EA07061300A7EAFFF0EA0700B2EA7FF01020809F
0E>I<14E03803E330EA0E3CEA1C1C38380E00EA780FA5EA380E6C5AEA1E38EA33E00020
C7FCA21230A2EA3FFE381FFF806C13C0383001E038600070481330A4006013606C13C038
1C03803803FC00141F7F9417>I<120E12FE120EAA133E1343EB8180380F01C0A2120EAE
38FFE7FC16207F9F19>I<121C123EA3121CC7FCA6120E127E120EB1EAFFC00A1F809E0C>
I<13E0EA01F0A3EA00E01300A61370EA07F012001370B3A31260EAF06013C0EA6180EA3F
000C28829E0E>I<120E12FE120EAAEB0FF0EB03C0140013025B5B5B1330137013F8EA0F
38EA0E1C131E130E7F1480130314C014E038FFCFF815207F9F18>I<120E12FE120EB3AB
EAFFE00B20809F0C>I<390E1F01F039FE618618390E81C81C390F00F00EA2000E13E0AE
3AFFE7FE7FE023147F9326>I<EA0E3EEAFE43380E8180380F01C0A2120EAE38FFE7FC16
147F9319>I<EA01F8EA070E381C0380383801C0A2387000E0A200F013F0A6007013E0A2
383801C0A2381C038038070E00EA01F814147F9317>I<EA0E3E38FEC380380F01C0EB00
E0120E14F014701478A6147014F014E0EA0F0114C0380EC300133E90C7FCA8EAFFE0151D
7F9319>I<3803E080EA0619EA1C05EA3C07EA38031278127012F0A61270127812381307
EA1C0BEA0E13EA03E3EA0003A8EB3FF8151D7E9318>I<EA0E78EAFE8CEA0F1EA2130CEA
0E00AEEAFFE00F147F9312>I<EA1F90EA3070EA4030EAC010A3EAE0001278EA7F80EA3F
E0EA0FF0EA0070EA80381318A212C0A2EAE030EAD060EA8F800D147E9312>I<1202A312
06A2120EA2123EEAFFF8EA0E00AB1308A5EA06101203EA01E00D1C7F9B12>I<380E01C0
EAFE1FEA0E01AE13031206EA030D3801F1FC16147F9319>I<38FF83F8381E01E0381C00
C06C1380A338070100A2EA0382A3EA01C4A213ECEA00E8A21370A3132015147F9318>I<
39FF9FE1FC393C078070391C030060EC8020000E1440A214C0D807071380130414E03903
8861001471EBC8733801D032143A3800F03CEBE01CA2EB6018EB40081E147F9321>I<38
7FC3FC380F01E0000713C0148038038100EA01C2EA00E413EC13781338133C137C134E13
87EA010738030380380201C0000613E0121E38FF07FE1714809318>I<38FF83F8381E01
E0381C00C06C1380A338070100A2EA0382A3EA01C4A213ECEA00E8A21370A31320A25BA3
EAF080A200F1C7FC1262123C151D7F9318>I<EA3FFFEA380E1220131CEA403813781370
EA00E0120113C0EA038012071301120E121EEA1C03EA3802EA7006130EEAFFFE10147F93
14>I E /Fc 42 125 df<B5FCA610067F9016>45 D<130E131E137EEA07FE12FFA212F8
1200B3AB387FFFFEA317277BA622>49 D<EBFF80000713F04813FC381E03FE393800FF80
007C133F00FE14C06C131F15E0140FA2127E003C131FC7FC15C0A2EC3F801500147E5C5C
495A495AEB078049C7FC131E4913E013705B3901C001C0EA0380EA0600000FB5FC5A5A5A
B61280A31B277DA622>I<EB7F803803FFF04813FC380F80FE381F007FEA3F80EC3F80A3
121F1300C7EA7F00A2147E5C495AEB07F0EBFFC0A2EB01F8EB007E801580EC1FC0A215E0
A2123C127EB4FCA215C0143F481480007CEB7F00003F13FE6CB45A000713F0C613801B27
7DA622>I<140E141E143E147E14FEA213011303EB077E130EA2131C1338137013E0A2EA
01C0EA0380EA0700120EA25A5A5A5AB612F8A3C7EAFE00A890387FFFF8A31D277EA622>
I<00181303381F801FEBFFFE5C5C5C14C091C7FC001CC8FCA7EB7FC0381DFFF8381F80FC
381E003F1208C7EA1F8015C0A215E0A21218127C12FEA315C05A0078EB3F80A26CEB7F00
381F01FE6CB45A000313F0C613801B277DA622>I<EB07F8EB3FFE90B5FC3901FC078039
03F00FC03807C01FEA0F80121F130048EB0F8091C7FC127EA3EAFE02EB1FF0EB3FFCEB60
3EEB801F00FF14809038000FC0A24814E0A4127EA4123E003F14C07EEC1F80D80F801300
3807E07E6CB45A6C5B38003FC01B277DA622>I<1238123E003FB512F0A34814E015C015
8015003870000EA25C485B5C5CEA00015C495A130791C7FC5B5B131E133EA2137E137CA2
13FCA41201A76C5A13701C297CA822>I<EB3FC03801FFF04813FC3807C07E48C67E001E
7FEC0F80123EA2123F138013C09038F01F00381FFC1E6D5A380FFFF814E06C13F800017F
8000077FD80F0F1380D81E0313C0EA3E01397C007FE0141F48130F14071403A315C0127C
007EEB07806CEB0F00381FC03F380FFFFC00035B38007FC01B277DA622>I<EB7F803801
FFF000077F380FC0FC381F803E48487E007E1480A2140F00FE14C0A315E0A5007E131FA2
6C133F6C132F380F80CF3807FF8F0001130FEA0008010013C0A3EC1F80123E127FEC3F00
143E147E007E5B383E03F8381FFFE06C1380D801FEC7FC1B277DA622>I<EC0780A24A7E
A34A7EA24A7EA3EC77F8A2ECF7FC14E3A2903801C1FEA201037F1480A249486C7EA24980
010E133FA2496D7EA2013FB57EA39039700007F8A201F080491303A248486D7EA2000381
D8FFFE013F13FCA32E297EA833>65 D<B612FCEDFF8016E03A03FC001FF8ED03FCED00FE
167FEE3F80EE1FC0A2EE0FE0A2EE07F0A417F8AA17F0A3EE0FE0A217C0161FEE3F80EE7F
005EED03FCED1FF8B75A168003FCC7FC2D297EA834>68 D<B712E0A33903FC001FED07F0
1501A215001670A3913801C0781638A302031300A2140F90B5FCA3EBFC0F1403A2020113
0EA3161C91C7FCA3163C1638167816F815011503151FB712F0A327297EA82C>I<B512FC
A33801FE00B3B1B512FCA316297FA819>73 D<B539F001FFFCA3D803FCC7EA1E005E5E5E
4B5A4B5A4BC7FC151E5D5D5D4A5AEC03804A7E141F4A7E4A7E4A7EEBFDE79038FF83FCEC
03FE496C7E497E6F7E826F7E151F6F7E8215076F7E6F7E8281EE7F80B539F00FFFFEA32F
297EA835>75 D<D8FFFCEC7FFF7F7F00036DEB01C080EBBFE0139F80EB8FF8EB87FCEB83
FEEB81FF01801380147F15C0EC3FE0EC1FF0EC0FF8EC07FC140315FEEC01FF6E1381ED7F
C1ED3FE1ED1FF1150F16F9ED07FDED03FF8181167FA2163F161F160F1607D8FFFE140316
01A230297EA835>78 D<ECFFC0010F13FC90383F807F9039FE001FC0D801F8EB07E04848
6D7E48486D7E000F8148486D7EA24848147FA2007F168090C8123FA34816C0AA6C16806D
147FA2003F1600A26C6C14FEA26C6C495A6C6C495A6C6C495A6C6C495A6C6C495A90263F
C0FFC7FC90380FFFFC010013C02A297CA833>I<B612F815FF16C03A03FC003FE0ED07F0
ED03F816FC150116FEA716FC150316F8ED07F0ED3FE090B61280EDFE0001FCC8FCB0B512
F0A327297EA82E>I<01FF13C0000313E1000F13F9381F80FF383F003F003E130F481307
A200FC1303A214017EA26C90C7FC13C0EA7FFCEBFFE06C13F86C13FE80000714806C14C0
C6FC010F13E0EB007FEC1FF0140F140700E01303A46C14E0A26C13076C14C0B4EB0F80EB
E01F00E3B5120000E113FC38C01FF01C297CA825>83 D<007FB71280A39039807F807FD8
7C00140F00781507A20070150300F016C0A2481501A5C791C7FCB3A490B612C0A32A287E
A72F>I<B500F0EBFFFEA3D803FCC7EA0380B3AA0001ED07007F0000150E137F6D143CD9
1FC05B90390FF003F06DB55A01001480DA1FFCC7FC2F297EA834>I<3803FF80000F13F0
381F01FC383F80FE147F801580EA1F00C7FCA4EB3FFF3801FC3FEA0FE0EA1F80EA3F0012
7E5AA4145F007E13DF393F839FFC381FFE0F3803F8031E1B7E9A21>97
D<EAFFE0A3120FACEBE1FE9038E7FF809038FE07E09038F803F09038F001F89038E000FC
A2157EA2157FA8157EA315FCA29038F001F89038F803F090389C0FE090380FFF80390E01
FC00202A7EA925>I<EB3FF03801FFFC3803F03E380FC07FEA1F80EA3F00A248133E007E
90C7FCA212FEA7127EA2127F6CEB03801380001FEB0700380FE00E3803F83C3801FFF838
003FC0191B7E9A1E>I<EC7FF0A31407ACEB3F873801FFF73807F03F380FC00F381F8007
EA3F00A2127EA312FEA8127EA27EA2381F800F380FC01F3907E07FFF3801FFE738007F87
202A7EA925>I<EB3FC03801FFF03803E07C380F803E001F7F130048EB0F80127E15C0A2
00FE1307A2B6FCA248C8FCA3127EA2127F6CEB01C07E390F8003803907C007003803F01E
3800FFFCEB3FE01A1B7E9A1F>I<EB07F8EB3FFCEB7E3E3801FC7FEA03F813F01207143E
1400A7B512C0A33807F000B3A3387FFF80A3182A7EA915>I<90387F80F03901FFE3F839
07C0FE1C390F807C7C381F003E151048EB3F00A66C133EA26C6C5A6C6C5A3805FFE0380C
7F8048C8FC121CA2121E381FFFF814FF6C14C06C14E06C14F0120F383E000748EB01F848
1300A4007CEB01F0A2003FEB07E0390FC01F806CB5120038007FF01E287E9A22>I<EAFF
E0A3120FAC147E9038E1FF809038E30FC001E413E0EBE80701F813F013F0A213E0B039FF
FE3FFFA3202A7DA925>I<1207EA0F80EA1FC0EA3FE0A3EA1FC0EA0F80EA0700C7FCA7EA
FFE0A3120FB3A3EAFFFEA30F2B7EAA12>I<EAFFE0A3120FB3B2EAFFFEA30F2A7EA912>
108 D<26FFC07FEB1FC0903AC1FFC07FF0903AC307E0C1F8D80FC49038F101FC9039C803
F20001D801FE7F01D05BA201E05BB03CFFFE3FFF8FFFE0A3331B7D9A38>I<38FFC07E90
38C1FF809038C30FC0D80FC413E0EBC80701D813F013D0A213E0B039FFFE3FFFA3201B7D
9A25>I<EB3FE03801FFFC3803F07E390FC01F80391F800FC0393F0007E0A2007EEB03F0
A300FE14F8A8007E14F0A26CEB07E0A2391F800FC0390FC01F803907F07F003801FFFC38
003FE01D1B7E9A22>I<38FFE1FE9038E7FF809038FE0FE0390FF803F09038F001F801E0
13FC140015FEA2157FA8157E15FEA215FC140101F013F89038F803F09038FC0FE09038EF
FF809038E1FC0001E0C7FCA9EAFFFEA320277E9A25>I<38FFC3E0EBC7F8EBCC7C380FD8
FE13D0A213F0EBE07C1400B0B5FCA3171B7E9A1B>114 D<3803FE30380FFFF0EA3E03EA
7800127000F01370A27E00FE1300EAFFE06CB4FC14C06C13E06C13F0000713F8C6FCEB07
FC130000E0137C143C7E14387E6C137038FF01E038E7FFC000C11300161B7E9A1B>I<13
70A413F0A312011203A21207381FFFE0B5FCA23807F000AD1470A7000313E03801F8C0EA
00FFEB3F0014267FA51A>I<39FFE07FF0A3000F1307B2140FA2000713173903F067FF38
01FFC738007F87201B7D9A25>I<39FFFC1FFEA33907F00780D803F813006C6C5AEBFE1E
00005BEB7F78EB3FF85C6D5A130F6D7E80130F497EEB3DFEEB38FFEB787F9038F03F80D8
01E013C03903C01FE0EB800F39FFF03FFFA3201B7F9A23>120 D<39FFFE07FFA33907F0
00E0A2EBF801000314C0A23901FC0380A2EBFE07000014006D5AEB7F0EA2EB3F9CA214FC
6D5AA26D5AA213075CA26D5AA25CA21307003890C7FC127CEAFE0EA25B5BEA7C70EA3FE0
EA0F8020277F9A23>I<BB12C0A24202809143>124 D E /Fd 17
117 df<127012F812FCA212741204A41208A21210A212201240060F7C840E>44
D<13801203120F12F31203B3A9EA07C0EAFFFE0F217CA018>49 D<00101380381E0700EA
1FFF5B13F8EA13E00010C7FCA613F8EA130EEA1407381803801210380001C0A214E0A412
7012F0A200E013C01280EA4003148038200700EA1006EA0C1CEA03F013227EA018>53
D<EA01F0EA060C487EEA1807383803801270A238F001C0A314E0A5127013031238EA1805
120CEA0619EA03E1380001C0A3EB0380A200301300EA78071306EA700CEA20186C5AEA0F
C013227EA018>57 D<497EA3497EA3EB05E0A2EB0DF01308A2497E1478A2497EA3497EA3
497EA290B5FC3901000780A24814C000021303A24814E01401A2000CEB00F0A2003EEB01
F839FF800FFF20237EA225>65 D<903807E0109038381830EBE0063901C0017039038000
F048C7FC000E1470121E001C1430123CA2007C14101278A200F81400A812781510127C12
3CA2001C1420121E000E14407E6C6C13803901C001003800E002EB381CEB07E01C247DA2
23>67 D<39FF8007FF3907C000F81570D805E01320EA04F0A21378137C133C7F131F7FEB
0780A2EB03C0EB01E0A2EB00F014F81478143C143E141E140FA2EC07A0EC03E0A21401A2
1400000E1460121FD8FFE0132020227EA125>78 D<EB0FE0EB783CEBE00E3903C0078039
078003C0390F0001E0000E1300001E14F0481478A2007C147CA20078143CA200F8143EA9
0078143C007C147CA2003C1478003E14F8001E14F06CEB01E0A239078003C03903C00780
3900E00E00EB783CEB0FE01F247DA226>I<EA0FE0EA1838EA3C0C130EEA18071200A313
FFEA07C7EA1E07123C1278127000F01308A3130FEA7817383C2390380FC1E015157E9418
>97 D<120E12FE121E120EAB131FEB61C0EB8060380F0030000E1338143C141C141EA714
1C143C1438000F1370380C8060EB41C038083F0017237FA21B>I<EA01FEEA0703380C07
80121C383803000078C7FC127012F0A712700078134012386C1380380C0100EA0706EA01
F812157E9416>I<EA01FCEA0707380C0380381C01C01238007813E0EA700012F0B5FC00
F0C7FCA512700078132012386C13406C138038070300EA00FC13157F9416>101
D<390E1FC07F3AFE60E183803A1E807201C03A0F003C00E0A2000E1338AF3AFFE3FF8FFE
27157F942A>109 D<380E1F8038FE60C0381E80E0380F0070A2120EAF38FFE7FF18157F
941B>I<EA01FCEA0707380C0180381800C0003813E0481370A200F01378A70070137000
7813F0003813E0381C01C0380E038038070700EA01FC15157F9418>I<EA0E3CEAFE46EA
1E8FEA0F0F13061300120EAD120FEAFFF010157F9413>114 D<1202A41206A3120E121E
123EEAFFF8EA0E00AB1304A6EA07081203EA01F00E1F7F9E13>116
D E /Fe 20 120 df<B51280A311037F9016>45 D<EB7F803801FFF0380701F8380C007E
48131F00107F48148048EB07C0A2EC03E012B012F87EA31278C7FCEC07C0A21580140F15
005C141E5C5C14705C495A495A49C7FC130E130C5B5B5B491320485A48C7FC000614405A
12084814C0003FB5FC481480B6FCA21B2F7DAE21>50 D<91383FE001903901FFF8039038
07F01E90391F800307013EC712870178144F49142F4848141F4848140F485A000F150790
C8FC481503121E123E003C1501127CA30078150012F8AB1278127C1601A2123C123E121E
001F15027E6D1406000715046C6C14086C7E6C6C141001781420013E14C090391F800380
903907F00F00903801FFFC9038003FE028337CB130>67 D<B51280A23807F0006C5AB3B3
A7487EB51280A211317DB017>73 D<D8FFE0903807FFC07F00039138007C00D802F81438
6D1410137C7FA27F80130F6D7E8013038013016D7E80147C147E143E801580140F15C014
07EC03E015F01401EC00F8A2157C157E153E151FA2ED0F9016D01507ED03F0A21501A215
0016701207486C1430EAFFF816102A317CB032>78 D<007FB712E0A23A7E000F80070078
1501007015000060166000401620A200C01630A2481610A6C71500B3AC4A7E010FB57EA2
2C317EB030>84 D<D8FFFE903B3FFF8001FFC0A2D80FE0D903F8C7EA7E006C486D48143C
19186C6C6D6C1410A36C6C6E5CA36C6CD9013E5CA36DD9033F14C0017CD9021F5CA2017E
81013ED9040F49C7FCA36D90390807C002A36D6C486C6C5AA3913AC02001F00C01071608
A202E014F80103D940005BA36D6C48EB7C20A3D900F9C76C5AA3027E6E5AA4023C6EC8FC
A302181406A342327FB044>87 D<13FE380303C0380C00E00010137080003C133C003E13
1C141EA21208C7FCA3EB0FFEEBFC1EEA03E0EA0F80EA1F00123E123C127C481404A3143E
A21278007C135E6CEB8F08390F0307F03903FC03E01E1F7D9E21>97
D<EB3F80EBE06038038018380700045A001E131E001C133E123C127C14080078130012F8
A91278127CA2003C13017E14027E6C1304380380183800E060EB3F80181F7D9E1D>99
D<EC01E0143FA214031401AFEB1F81EBF0613801C01938078005380F0003120E001E1301
5AA2127C127812F8A91278A27EA2121C001E1303000E13056C130939038011F03900E061
FFEB3F8120327DB125>I<EB3F80EBE0E0380380383807003C000E7F121E001C7F123C12
7C00781480140712F8A2B6FC00F8C8FCA61278127C123C15807E000EEB0100000F1302EA
07803801C00C3800F030EB1FC0191F7E9E1D>I<EB07E0EB1C10EB3838EB707C13E01201
EBC03800031300ACB512C0A23803C000B3A8487EEA7FFFA216327FB114>I<EA078012FF
A2120F1207AF14FE903883078090388C03C090389001E013A06E7E13C0A25BB3A2486C48
7E3AFFFC1FFF80A221327EB125>104 D<120FEA1F80A4EA0F00C7FCABEA078012FFA212
0F1207B3A6EA0FC0EAFFF8A20D307EAF12>I<380780FE39FF83078090388C03C0390F90
01E0EA07A06E7E13C0A25BB3A2486C487E3AFFFC1FFF80A2211F7E9E25>110
D<EB1FC0EBF0783801C01C38070007481480001EEB03C0001C1301003C14E0A248EB00F0
A300F814F8A8007814F0007C1301003C14E0A26CEB03C0A26CEB07803907800F003801C0
1C3800F078EB1FC01D1F7E9E21>I<380783E038FF8C18EB907C120FEA07A0EBC0381400
A35BB3487EEAFFFEA2161F7E9E19>114 D<3801FC10380E0330381800F0481370481330
12E01410A37E6C1300127EEA3FF06CB4FC6C13C0000313E038003FF0EB01F813006C133C
A2141C7EA27E14186C1338143000CC136038C301C03880FE00161F7E9E1A>I<1340A513
C0A31201A212031207120F381FFFE0B5FC3803C000B01410A80001132013E000001340EB
78C0EB1F00142C7FAB19>I<3BFFF07FF80FFCA23B0FC007C003F0D98003EB01C00007ED
0080A2D803C09038E00100A214073A01E004F002A2EC0870D800F0EB7804A2EC10380178
EB3C08A2EC201C013CEB1E10A2EC400E011EEB0F20A2EC8007010F14C0A2EC00036D5CA2
01061301010291C7FC2E1F7F9E30>119 D E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300dpi
TeXDict begin
%%PaperSize: a4

%%EndSetup
%%Page: 1 1
1 0 bop 385 456 a Fe(The)21 b(CWIN-2)h(Windo)n(ws)f(In)n(terface)i(Co)r
(de)800 583 y Fd(A)16 b(C)g(Norman)756 684 y(Octob)q(er)g(19,)h(1995)
191 877 y Fc(1)67 b(In)n(tro)r(duction)191 979 y Fb(This)17
b(do)q(cumen)o(t)f(is)h(not)f(to)q(o)g(concerned)h(ab)q(out)f(in)o
(ternal)h(data)f(structures)g(or)f(pro-)191 1035 y(gramming)g(issues,)h
(but)f(will)i(attempt)d(to)h(do)q(cumen)o(t)h(the)f(b)q(eha)o(viour)h
(I)g(will)h(imple-)191 1092 y(men)o(t)c(and)h(in)h(some)e(cases)g
(explain)j(wh)o(y)d(I)h(did)h(things)f(that)f(w)o(a)o(y)l(.)18
b(The)c(explanation)191 1148 y(is)19 b(needed)g(b)q(ecause)g(while)h
(writing)e(the)h(co)q(de)f(\(and)g(its)h(predecessors\))f(I)h(found)f
(it)191 1205 y(hard)c(to)f(mak)o(e)h(scrolling,)h(selection,)g(cut)f(&)
g(paste)g(op)q(erations,)g(fon)o(t)f(c)o(hanges,)h(user)191
1261 y(input)i(and)g(program)e(output)h(all)h(in)o(teract)f(prop)q
(erly)l(.)262 1318 y(First)i(the)g(fundamen)o(tals.)28
b(I)17 b(will)j(supp)q(ort)d(a)g(windo)o(w)h(that)f(alw)o(a)o(ys)g(has)
g(b)q(oth)191 1374 y(horizon)o(tal)e(and)h(v)o(ertical)g(scroll)g(bars)
f(visible.)262 1431 y(T)l(o)e(start)g(with)h(it)h(will)g(con)o(tain)f
(just)g(text,)f(but)h(parts)g(of)f(that)h(will)h(b)q(e)g(sho)o(wn)e(in)
191 1487 y(di\013ering)k(colours)g(to)f(mark)g(out)g(where)h(there)f
(are)g(prompts.)24 b(I)16 b(will)j(allo)o(w)d(for)g(the)191
1543 y(p)q(ossibilit)o(y)i(that)e(in)g(a)g(later)g(v)o(ersion)g(the)h
(text)e(in)i(the)f(bu\013er)g(can)g(b)q(e)h(displa)o(y)o(ed)g(in)191
1600 y(v)m(arious)h(fon)o(ts,)g(sizes)h(and)f(with)g(v)m(arious)g
(e\013ects.)28 b(The)18 b(unit)h(of)e(displa)o(y)i(will)h(b)q(e)f(a)191
1656 y(\\line")f(whic)o(h)h(is)e(represen)o(ted)h(as)f(a)g(blo)q(c)o(k)
h(of)f(c)o(haracters)g(and)g(all)h(e\013ects)f(withing)191
1713 y(the)e(blo)q(c)o(k)h(will)g(b)q(e)g(indicated)g(b)o(y)f(em)o(b)q
(edding)i(con)o(trol)d(sequences)i(within)g(it.)k(Eac)o(h)191
1769 y(line)d(will)g(start)d(o\013)g(in)i(a)f(standard)g(fon)o(t)f
(con\014guration.)262 1826 y(The)d(user)g(t)o(yp)q(es)h(in)g(c)o
(haracters,)f(uses)g(the)h(DELETE)f(k)o(ey)l(,)g(activ)m(ates)h(scroll)
g(bars,)191 1882 y(uses)k(the)h(mouse)f(to)f(re-p)q(osition)j(the)e
(caret)g(and/or)g(establish)h(a)f(selection)h(region,)191
1939 y(and)e(in)o(v)o(ok)o(ed)h(CUT)f(and)g(P)l(ASTE)g(op)q(erations.)
262 1995 y(There)e(is)h(a)f(program)f(running)i(that)e(will,)j(from)e
(time)g(to)g(time,)g(request)h(c)o(harac-)191 2052 y(ters)h(from)f(the)
i(user.)k(Before)15 b(doing)h(so)f(it)h(can)f(select)h(the)g(prompt)f
(that)f(should)j(b)q(e)191 2108 y(used.)j(It)14 b(can)g(also)g
(generate)g(output.)19 b(There)c(is)f(no)g(automatic)g(supp)q(osition)h
(ab)q(out)191 2164 y(ho)o(w)i(long)h(the)g(program)e(dela)o(ys)i(b)q
(et)o(w)o(een)g(I/O)g(requests)g(and)g(ho)o(w)f(it)h(in)o(terlea)o(v)o
(es)191 2221 y(reads)d(and)g(writes.)262 2277 y(The)10
b(stored)g(text)f(liv)o(es)j(in)f(a)e(bu\013er)i(that)e(has)h(\014nite)
h(size,)h(and)e(so)g(after)g(a)f(program)191 2334 y(has)17
b(done)g(enough)g(the)g(bu\013er)g(will)h(\014ll)h(up)e(and)g(parts)f
(of)h(it)g(will)h(need)g(to)e(need)i(to)191 2390 y(b)q(e)e(recycled.)
191 2534 y Fc(2)67 b(Scrolling)25 b(under)e(user)g(con)n(trol)191
2635 y Fb(If)13 b(the)f(whole)h(of)f(the)g(text)g(bu\013er)h(can)f
(\014t)g(on)h(within)g(the)g(windo)o(w)f(v)o(ertically)i(the)e(the)191
2691 y(v)o(ertical)j(scroll)g(bar)f(has)h(no)f(e\013ect,)g(and)h(an)o
(y)f(attempt)f(to)h(p)q(osition)i(it)f(to)e(an)o(ywhere)927
2826 y(1)p eop
%%Page: 2 2
2 1 bop 191 274 a Fb(other)16 b(than)h(the)g(\\top")e(p)q(osition)j
(has)e(no)h(e\013ect.)24 b(If)17 b(there)g(are)f(more)g(lines)j(of)d
(text)191 330 y(than)f(will)h(\014t)e(on)h(the)g(screen)g(at)f(once)h
(the)g(v)o(ertical)g(scroll)h(bar)e(\(and)h(related)g(short-)191
387 y(cut)d(k)o(eys,)f(viz)i(page-up,)f(page-do)o(wn,)g(home)f(and)h
(end\))g(cause)g(the)f(windo)o(w)h(to)f(scroll.)191 443
y(Scrolling)i(is)f(limited)i(so)d(that)g(at)f(one)i(extreme)g(the)f
(\014rst)g(line)i(of)f(input)g(text)f(is)h(visible)191
500 y(at)k(the)h(top)g(of)f(the)h(windo)o(w)h(and)f(at)f(the)h(other)g
(extreme)f(the)h(\014nal)h(line)h(of)d(text)h(is)191
556 y(just)e(fully)h(visible)i(at)c(the)i(b)q(ottom)e(of)h(the)g(windo)
o(w.)262 613 y(If)k(the)h(collection)h(of)e(lines)i(displa)o(y)o(ed)f
(in)h(the)e(windo)o(w)h(are)f(all)h(short)f(enough)191
669 y(to)c(\014t)g(completely)h(across)f(it)g(then)h(the)f(horizon)o
(tal)g(scroll)h(p)q(osition)h(is)e(forced)h(to)e(its)191
726 y(home)g(\(leftmost\))e(p)q(osition)j(and)f(attempts)f(to)g(mo)o(v)
o(e)f(it)i(ha)o(v)o(e)g(no)f(e\013ect.)19 b(Otherwise)191
782 y(the)12 b(user)h(ma)o(y)e(scroll)i(horizon)o(tally)g(up)g(to)f(an)
g(extreme)g(where)g(the)h(longest)f(line)i(that)191 839
y(lies)i(within)h(the)e(windo)o(w)h(comes)f(just)g(half)g(w)o(a)o(y)f
(across)h(the)g(windo)o(w.)262 895 y(If)h(the)h(windo)o(w)g(size)g(of)f
(fon)o(t)g(is)h(c)o(hanged)g(scrolling)h(can)f(b)q(e)g(activ)m(ated)g
(to)f(k)o(eep)191 951 y(the)d(conditions)i(describ)q(ed)g(ab)q(o)o(v)o
(e)e(true.)19 b(In)14 b(particular)g(this)g(means)f(that)f(when)i(the)
191 1008 y(windo)o(w)k(is)g(enlarged)g(it)g(will)h(scroll)g(to)e(k)o
(eep)h(the)f(last)h(line)h(of)e(the)h(text)f(visible)j(as)191
1064 y(the)f(last)g(line)h(in)g(the)f(windo)o(w,)h(and)f(to)f(k)o(eep)h
(horizon)o(tally)h(scrolled)g(information)191 1121 y(visible)14
b(at)e(least)h(half)f(w)o(a)o(y)g(across)f(the)h(windo)o(w.)20
b(Resizing)14 b(the)e(windo)o(w)h(will)h(up)q(date)191
1177 y(the)h(p)q(osition)h(the)f(the)g(scroll-bar)h(th)o(um)o(bs)f(to)f
(re\015ect)h(what)g(has)g(happ)q(ened.)21 b(There)191
1234 y(can)f(also)h(b)q(e)g(scrolling)h(caused)f(b)o(y)f(input)h(and)g
(output)f(op)q(erations,)i(but)e(that)g(is)191 1290 y(discussed)d(in)f
(a)f(momen)o(t)f(under)i(the)f(heading)h(A)o(UTO-)g(SCR)o(OLLING.)262
1347 y(The)g(END)f(op)q(eration)h(mo)o(v)o(es)f(the)h(caret)g(to)f(an)h
(extreme)g(end)g(of)g(the)g(text)f(and)191 1403 y(scroll)g(the)f(windo)
o(w)g(to)f(mak)o(e)h(it)g(visible.)22 b(HOME)14 b(scrolls)g(the)g
(windo)o(w)h(to)e(sho)o(w)g(the)191 1460 y(v)o(ery)i(top)g(of)f(the)i
(text,)e(but)h(do)q(es)h(not)f(re-p)q(osition)h(the)f(caret.)191
1603 y Fc(3)67 b(Use)21 b(of)h(the)g(mouse)g(to)g(select)g(regions)h
(of)e(text)191 1704 y Fb(The)c(caret)g(is)g(considered)i(to)d(lie)j(b)q
(et)o(w)o(een)e(a)g(pair)g(of)g(c)o(haracters)f(\(or)g(righ)o(t)h(at)f
(the)191 1761 y(v)o(ery)k(start)f(or)h(v)o(ery)g(end)h(of)f(the)g
(text\).)35 b(T)l(ext)20 b(forming)h(a)f(\\prompt")f(is)i(treated)191
1817 y(as)e(represen)o(ting)h(a)f(single)i(item,)f(and)g(so)f(the)g
(mouse)g(can)h(not)f(select)h(a)f(p)q(osition)191 1874
y(within)e(the)e(prompt)g(text.)20 b(Pressing)15 b(the)h(left)g(mouse)f
(button)g(causes)h(the)f(caret)g(to)191 1930 y(b)q(e)k(mo)o(v)o(ed)f
(to)f(the)h(gap)g(nearest)g(to)g(the)g(mouse)g(p)q(osition.)30
b(The)19 b(place)g(where)f(the)191 1986 y(mouse)13 b(button)g(w)o(as)f
(depressed)j(b)q(ecomes)e(the)h(ro)q(ot)e(of)h(a)g(p)q(ossible)i
(selection)f(region.)191 2043 y(F)l(rom)d(when)i(the)f(mouse)f(button)h
(w)o(as)f(depressed)i(to)e(when)i(it)f(is)h(released)f(the)g(mouse)191
2099 y(is)g(captured)g(b)o(y)g(the)g(windo)o(w,)g(in)h(the)f(sense)g
(that)g(ev)o(en)g(if)g(the)g(mouse)g(mo)o(v)o(es)f(outside)191
2156 y(the)i(windo)o(w's)g(b)q(orders)h(its)f(activit)o(y)h(is)f(still)
i(trac)o(k)o(ed.)j(If)c(the)f(mouse)g(is)h(mo)o(v)o(ed)f(with)191
2212 y(the)i(button)g(do)o(wn)g(a)f(region)h(of)g(text)g(b)q(ecomes)g
(selected.)21 b(The)15 b(text)g(in)h(that)e(region)191
2269 y(is)g(displa)o(y)o(ed)h(in)g(a)e(form)g(of)g(in)o(v)o(erse)h
(video)h(\(exact)e(details)h(dep)q(end)i(on)d(the)h(windo)o(ws)191
2325 y(colour)g(sc)o(heme)g(in)h(force\).)j(If)c(the)g(mouse)g(is)g
(dragged)f(ab)q(o)o(v)o(e)h(or)f(b)q(elo)o(w)h(the)g(windo)o(w)191
2382 y(while)f(making)f(a)g(selection)h(the)f(windo)o(w)g(is)g
(scrolled)i(in)e(the)g(relev)m(an)o(t)h(direction,)g(and)191
2438 y(the)h(sp)q(eed)h(of)f(scrolling)h(increases)g(if)g(the)f(mouse)g
(remains)g(outside)h(the)f(windo)o(w)g(for)191 2495 y(a)i(while.)24
b(If)16 b(the)g(mouse)g(mo)o(v)o(es)g(to)f(the)h(left)h(of)e(the)h
(windo)o(w)h(and)f(the)g(windo)o(w)g(has)191 2551 y(already)d(b)q(een)h
(scrolled)h(horizon)o(tally)f(it)f(will)i(b)q(e)e(gradually)h
(restored.)19 b(If)13 b(the)g(mouse)191 2607 y(go)q(es)g(to)f(the)h
(righ)o(t)f(of)h(the)g(windo)o(w)g(scrolling)h(will)h(b)q(e)e(activ)m
(ated)g(if)h(the)f(line)h(that)e(the)191 2664 y(mouse)j(is)h(on)f
(extends)h(b)q(ey)o(ond)f(the)h(righ)o(t)f(hand)g(b)q(order)h(of)f(the)
g(curren)o(t)g(windo)o(w.)927 2826 y(2)p eop
%%Page: 3 3
3 2 bop 262 274 a Fb(Pressing)10 b(the)h(\(left\))f(mouse)h(button)f
(with)h(SHIFT)g(held)h(do)o(wn)e(results)h(in)h(a)e(selec-)191
330 y(tion)15 b(b)q(eing)h(extended)g(from)e(its)h(original)h(ro)q(ot)e
(to)g(the)h(new)g(mouse)g(p)q(osition.)20 b(Th)o(us)191
387 y(clic)o(king)g(in)f(one)g(place)g(and)g(then)f(shift-clic)o(king)j
(in)e(another)f(sets)g(up)h(a)f(selection)191 443 y(from)c(the)i
(\014rst)e(to)h(second)h(place.)262 500 y(The)i(shift-clic)o(k)i(op)q
(eration)e(relies)h(up)q(on)g(a)e(previously)j(set)d(selection)j(ro)q
(ot.)27 b(If)191 556 y(none)10 b(has)h(b)q(een)g(established)h(b)q
(efore)e(then)h(shift-clic)o(k)h(b)q(eha)o(v)o(es)e(just)g(lik)o(e)h
(an)f(ordinary)191 613 y(clic)o(k.)20 b(Once)14 b(set)e(b)o(y)g(an)h
(initial)h(clic)o(k)g(a)e(selection)i(ro)q(ot)e(remains)h(v)m(alid)h
(un)o(til)g(another)191 669 y(mouse)21 b(clic)o(k)h(\(whic)o(h)f(re-p)q
(ositions)h(it\))f(or)f(un)o(til)i(bu\013er)f(wrapping)g(deletes)h
(some)191 726 y(c)o(haracters)12 b(from)h(the)g(bu\013er)g(\(ev)o(en)o
(tually)h(almost)f(an)o(y)g(input)h(or)f(output)g(op)q(eration)191
782 y(will)j(cause)g(this\))f(or)f(un)o(til)i(the)f(user)g(deletes)h(a)
e(c)o(haracter)g(from)g(the)h(text)g(using)g(the)191
839 y(DELETE)j(k)o(ey)l(.)27 b(CUT)18 b(op)q(erations)g(can)g(lea)o(v)o
(e)g(a)f(selection)j(ro)q(ot)d(set)g(at)g(the)h(place)191
895 y(where)d(the)h(remo)o(v)o(ed)e(material)i(used)g(to)e(b)q(e.)262
951 y(The)23 b(COPY)g(op)q(eration)g(copies)g(all)h(c)o(haracters)e
(from)g(the)h(selection)h(to)e(the)191 1008 y(clipb)q(oard.)29
b(If)19 b(con)o(trol)e(c)o(haracters)g(are)h(presen)o(t)f(they)h(are)g
(sen)o(t)f(to)h(the)g(clipb)q(oard)191 1064 y(without)f(adjustmen)o(t.)
23 b(Lines)18 b(sen)o(t)f(to)f(the)g(clipb)q(oard)j(ha)o(v)o(e)d(CR/LF)
h(at)e(their)j(end)191 1121 y(as)c(termination.)20 b(CUT)14
b(acts)g(as)g(COPY)g(but)g(then)h(the)f(selected)i(region)f(is)f
(deleted.)191 1177 y(RE-INPUT)f(p)q(erforms)f(a)f(COPY)i(and)f(then)g
(P)l(ASTEs)h(the)f(material)g(in)o(to)g(the)g(input)191
1234 y(bu\013er\(but)e(b)q(ecause)h(it)g(uses)g(COPY)f(it)h(places)g
(the)f(selected)i(text)e(in)o(to)g(the)h(clipb)q(oard)191
1290 y(on)g(the)g(w)o(a)o(y\).)18 b(SELECT-ALL)12 b(do)q(es)g(what)e
(it)i(sa)o(ys)e(\(and)h(do)q(es)h(not)f(mo)o(v)o(e)f(the)h(caret\).)191
1347 y(CLEAR)h(thro)o(ws)f(a)o(w)o(a)o(y)f(all)i(text)f(in)i(the)e
(displa)o(y)i(bu\013er.)19 b(Immediately)13 b(after)d(a)i(CUT)191
1403 y(op)q(eration)19 b(the)g(UNDO)g(button)f(will)j(re-p)q(osition)f
(the)f(caret)f(to)g(the)h(place)h(where)191 1460 y(material)13
b(w)o(as)g(deleted)i(and)e(will)i(p)q(erform)e(a)g(P)l(ASTE.)g(Only)h
(one)g(lev)o(el)g(of)f(CUT)g(can)191 1516 y(b)q(e)k(UNDOne.)24
b(A)16 b(DELETE)g(when)h(a)f(selection)h(has)g(b)q(een)g(set)f(up)h
(will)h(delete)f(the)191 1572 y(selection)g(\(but)f(not)g(do)g(the)g
(COPY)g(op)q(eration)h(that)e(a)h(CUT)f(w)o(ould\).)23
b(P)o(art)15 b(of)g(an)191 1629 y(e\013ect)g(will)i(b)q(e)f(that)e(a)h
(DELETE)g(ma)o(y)g(not)g(k)o(eep)h(quite)g(so)e(m)o(uc)o(h)i(stu\013)e
(for)h(UNDO)191 1685 y(as)g(w)o(ould)g(a)g(CUT.)262 1742
y(COPY)20 b(op)q(erations)g(can)g(fail)h(if)g(the)f(clipb)q(oard)i(can)
e(not)g(b)q(e)h(op)q(ened)g(or)e(if)i(it)191 1798 y(pro)o(v)o(es)15
b(imp)q(ossible)i(to)e(allo)q(cate)h(windo)o(ws)g(global)g(memory)f
(for)g(the)g(text)g(that)g(w)o(as)191 1855 y(to)22 b(b)q(e)h(copied.)43
b(In)23 b(suc)o(h)f(cases)h(the)f(fact)g(that)g(the)g(COPY)h(failed)h
(will)g(not)e(b)q(e)191 1911 y(indicated)e(to)d(the)i(user,)f(and)h(in)
g(the)f(case)g(of)g(a)g(CUT)g(it)g(will)i(not)e(b)q(e)h(p)q(ossible)h
(to)191 1968 y(UNDO)15 b(the)h(CUT.)191 2111 y Fc(4)67
b(Program-generated)22 b(output)191 2212 y Fb(This)15
b(is)g(alw)o(a)o(ys)f(inserted)i(at)e(the)g(end)i(of)e(the)g(bu\013er.)
20 b(If)15 b(the)g(caret)f(is)h(at)f(the)g(end)i(of)191
2269 y(the)11 b(text)g(it)g(mo)o(v)o(es)f(as)h(new)g(text)g(is)g
(inserted,)i(and)e(in)h(this)f(case)g(if)h(the)f(caret)f(starts)g
(o\013)191 2325 y(visible)16 b(the)d(screen)h(is)g(scrolled)g
(automatically)g(to)f(k)o(eep)h(the)f(caret)g(p)q(osition)h(visible.)
191 2382 y(This)g(ma)o(y)e(in)o(v)o(olv)o(e)i(horizon)o(tal)g(as)e(w)o
(ell)j(as)d(v)o(ertical)i(scrolling,)h(but)e(an)g(attempt)g(will)191
2438 y(b)q(e)j(made)f(to)g(dela)o(y)g(auto-scrolling)h(so)f(that)g(it)g
(do)q(es)h(not)f(happ)q(en)h(to)q(o)e(often.)262 2495
y(Action)h(has)g(to)f(b)q(e)h(tak)o(en)f(when)i(the)f(bu\013er)f(b)q
(ecomes)i(full.)21 b(The)15 b(bu\013er)g(can)g(b)q(e)191
2551 y(\\full")i(either)h(b)q(ecause)f(the)g(maxim)o(um)g(n)o(um)o(b)q
(er)g(of)f(c)o(haracters)g(ha)o(v)o(e)g(b)q(een)i(stored)191
2607 y(in)e(it)g(or)f(b)q(ecause)h(it)f(holds)h(the)g(maxim)o(um)f(n)o
(um)o(b)q(er)h(of)f(lines)i(that)d(it)i(is)g(con\014gured)191
2664 y(for)k(\(at)f(presen)o(t)i(I)g(will)h(allo)o(w)f(for)f(64K)g(c)o
(haracters)g(and)g(2K)h(lines\).)37 b(In)21 b(normal)927
2826 y(3)p eop
%%Page: 4 4
4 3 bop 191 274 a Fb(circumstances)15 b(when)g(the)f(bu\013er)g(o)o(v)o
(er\015o)o(ws)f(the)h(oldest)h(whole)f(line)i(of)e(text)g(stored)191
330 y(in)i(it)f(is)h(discarded.)21 b(This)16 b(p)q(olicy)h(is)f(mo)q
(di\014ed)g(in)g(v)m(arious)g(circumstances:)247 406
y(1.)22 b(If)16 b(the)g(bu\013er)g(con)o(tains)h(only)f(one)g
(\(incomplete\))i(line)f(of)f(text)g(then)g(the)g(sys-)305
462 y(tem)f(thro)o(ws)g(the)h(en)o(tire)g(bu\013er)g(con)o(ten)o(ts)f
(a)o(w)o(a)o(y)l(.)21 b(If)16 b(there)g(w)o(ere)g(un)o(balanced)305
519 y(con)o(trol)i(sequences)h(in)h(the)e(bu\013er)h(the)g(subsequen)o
(t)g(displa)o(y)g(ma)o(y)f(b)q(e)h(man-)305 575 y(gled,)c(for)g
(instance)h(b)o(y)f(b)q(eing)i(in)f(the)f(wrong)g(colour)g(or)g(fon)o
(t.)k(This)d(case)f(can)305 632 y(only)k(arise)g(if)h(the)f(program)e
(b)q(eing)j(run)g(k)o(eeps)f(prin)o(ting)h(large)f(n)o(um)o(b)q(ers)g
(of)305 688 y(c)o(haracters)c(without)h(an)g(in)o(terv)o(ening)h
(newline.)25 b(I)16 b(really)h(hop)q(e)g(this)f(circum-)305
744 y(stance)h(do)q(es)i(not)e(arise!)28 b(I)19 b(sp)q(ecify)g(this)f
(extreme)g(b)q(eha)o(viour)h(b)q(ecause)g(it)f(is)305
801 y(hard)13 b(to)f(indicate)j(a)e(safe)g(w)o(a)o(y)f(of)g(abandoning)
i(a)f(part-line)h(if)g(I)g(in)o(tend)g(in)g(due)305 857
y(course)k(to)g(put)h(elab)q(orately)h(in)o(terpreted)f(in)h(the)e
(bu\013er.)31 b(A)18 b(p)q(ossible)j(safer)305 914 y(re\014nemen)o(t)f
(here)g(w)o(ould)g(b)q(e)g(to)f(discard)h(an)o(y)f(further)h(c)o
(haracters)e(inserted)305 970 y(in)o(to)c(the)h(bu\013er)g(un)o(til)h
(a)e(newline.)22 b(But)14 b(at)g(presen)o(t)h(it)g(do)q(es)g(not)f
(seem)h(w)o(orth)305 1027 y(while)h(legislating)h(for)e(suc)o(h)g(a)g
(desparate)g(and)g(\(I)h(hop)q(e\))f(un)o(usual)h(situation.)247
1113 y(2.)22 b(If)11 b(the)h(line)h(that)d(is)i(to)f(b)q(e)h(discarded)
h(o)o(v)o(erlaps)e(with)g(a)g(region)h(of)f(text)g(that)f(has)305
1170 y(b)q(een)15 b(selected)h(the)e(system)g(pauses,)h(c)o(hanging)g
(the)f(title)h(bar)g(of)f(the)g(windo)o(w)305 1226 y(to)20
b(alert)h(the)g(user)g(to)f(what)g(has)h(happ)q(ened.)38
b(This)22 b(dela)o(y)f(is)h(so)e(that)g(the)305 1282
y(user)f(can)g(complete)h(a)e(COPY)h(op)q(eration)h(to)e(preserv)o(e)h
(line)i(that)d(is)h(ab)q(out)305 1339 y(to)d(b)q(e)h(lost,)g(or)g(a)f
(PRINT)i(\(for)e(the)h(same)f(reason\).)24 b(When)18
b(the)f(selection)h(is)305 1395 y(cancelled)i(for)e(an)o(y)g(reason)g
(the)h(line)h(will)g(b)q(ecome)f(vulnerable)i(and)e(output)305
1452 y(can)c(con)o(tin)o(ue.)247 1538 y(3.)22 b(If)14
b(the)h(line)h(for)e(that)g(is)h(to)f(b)q(e)h(deleted)h(is)f(not)f(in)o
(v)o(olv)o(ed)i(in)f(a)f(selection)i(but)f(it)305 1595
y(is)f(visible)j(on)d(the)g(screen)h(and)g(the)f(end)h(of)f(the)g(text)
g(\(ie)g(the)h(insertion)g(p)q(oin)o(t\))305 1651 y(is)i(not)f
(visible,)i(then)f(again)f(the)h(system)f(pauses.)23
b(This)17 b(allo)o(ws)g(for)f(the)g(case)305 1708 y(where)g(a)g(user)g
(has)g(scrolled)h(up)f(the)g(displa)o(y)i(to)d(insp)q(ect)i(an)f(early)
h(part)e(of)h(a)305 1764 y(transaction,)c(and)i(w)o(ould)f(not)g(lik)o
(e)h(it)g(to)e(v)m(anish)i(un)o(till)h(the)f(scroll)g(bac)o(k)f(do)o
(wn)305 1821 y(to)i(the)i(end.)24 b(I)16 b(allo)o(w)h(the)f(line)i(to)e
(b)q(e)h(deleted)h(an)o(yw)o(a)o(y)d(in)i(the)f(case)h(that)e(all)305
1877 y(the)k(lines)h(of)f(input)h(are)f(visible)i(on)e(the)g(screen:)29
b(this)19 b(case)g(can)g(only)h(arise)305 1933 y(when)g(at)f(least)h
(one)g(of)g(the)g(lines)h(of)e(output)h(is)h(amazingly)f(long.)34
b(This)21 b(is)305 1990 y(b)q(ecause)16 b(the)g(user)g(could)h(not)e
(then)h(scroll)h(the)f(windo)o(w)g(to)f(giv)o(e)h(the)g(system)305
2046 y(a)e(hin)o(t)i(that)f(it)g(should)h(pro)q(ceed.)262
2122 y(If)c(output)g(is)g(generated)h(and)f(after)f(it)i(has)f(b)q(een)
h(put)f(on)g(the)g(screen)h(the)f(windo)o(w)191 2178
y(is)21 b(not)e(scrolled)j(do)o(wn)d(as)h(far)f(as)h(it)g(will)i(go)d
(then)i(output)f(will)h(need)g(to)f(up)q(date)191 2235
y(the)e(v)o(ertical)g(scroll)h(th)o(um)o(b's)e(p)q(osition.)29
b(F)l(or)17 b(instance)h(if)h(b)q(efore)f(the)g(output)f(w)o(as)191
2291 y(generated)h(the)h(scrollbar)g(th)o(um)o(b)f(w)o(as)f(at)h(the)h
(50\045)e(p)q(osition,)j(afterw)o(ards)d(it)i(will)191
2347 y(t)o(ypically)g(b)q(e)f(higher)g(up.)26 b(Discarding)18
b(old)g(text)f(can)g(also)g(in\015uence)j(the)d(p)q(osition)191
2404 y(where)e(the)h(th)o(um)o(b)f(should)h(b)q(e)g(sho)o(wn.)191
2544 y Fc(5)67 b(Keyb)r(oard)22 b(and)h(P)-6 b(ASTE)23
b(input)191 2645 y Fb(DELETE)18 b(deletes)h(the)f(c)o(haracter)g(b)q
(efore)g(the)h(caret,)f(or)g(if)g(that)g(is)h(the)f(end)h(of)f(a)191
2702 y(prompt)c(it)h(deletes)g(the)g(whole)g(prompt.)k(After)14
b(a)g(consecutiv)o(e)h(series)h(of)e(DELETE)927 2826
y(4)p eop
%%Page: 5 5
5 4 bop 191 274 a Fb(op)q(erations)16 b(an)h(UNDO)f(will)i(re-insert)f
(the)g(deleted)g(c)o(haracter,)f(but)g(there)h(will)h(b)q(e)191
330 y(a)e(limit)h(to)e(the)h(n)o(um)o(b)q(er)g(of)g(c)o(haracters)f
(that)g(will)j(b)q(e)e(stored,)f(so)h(this)g(can)g(only)h(b)q(e)191
387 y(relied)g(up)q(on)f(for)e(small)i(op)q(erations.)262
443 y(The)e(e\013ect)g(of)f(k)o(eyb)q(oard)h(input)h(dep)q(ends)h(on)e
(whether)g(the)g(caret)g(is)g(at)g(the)g(end)191 500
y(of)k(the)i(text)e(or)g(within)j(the)e(bu\013er.)31
b(T)l(o)19 b(a)f(more)h(minor)g(exten)o(t)g(it)g(also)g(dep)q(ends)191
556 y(on)14 b(whether)g(the)h(caret)f(\(while)h(within)g(the)g(text)e
(as)h(a)g(whole\))g(iden)o(ti\014es)i(a)e(p)q(osition)191
613 y(within)i(a)f(curren)o(tly)h(activ)o(e)f(input)h(line.)262
669 y(When)21 b(the)h(caret)f(is)h(not)f(at)g(the)h(end)g(of)f(the)h
(text,)g(normal)g(c)o(haracters)f(are)191 726 y(inserted)f(b)q(efore)g
(the)g(caret.)32 b(The)19 b(region)h(co)o(v)o(ered)f(b)o(y)h(an)f
(insert)h(is)g(recorded)g(so)191 782 y(that)14 b(after)g(a)h(P)l(ASTE)g
(op)q(eration)g(UNDO)g(will)h(discard)g(what)e(w)o(as)g(inserted,)i
(while)191 839 y(after)j(individuall)q(y)k(t)o(yp)q(ed)d(c)o(haracters)
g(eac)o(h)g(UNDO)g(will)i(delete)f(either)g(a)f(blo)q(c)o(k)191
895 y(of)15 b(c)o(haracters)f(t)o(yp)q(ed)h(without)h(rep)q(ositioning)
g(the)f(caret)g(or)g(a)g(blo)q(c)o(k)g(of)g(c)o(haracters)191
951 y(that)g(end)h(at)f(a)h(newline.)23 b(As)15 b(usual)i(there)e(will)
j(b)q(e)e(a)f(limit)i(to)e(ho)o(w)h(m)o(uc)o(h)f(undoing)191
1008 y(can)i(b)q(e)h(done,)g(and)g(the)f(exact)g(rule)h(for)f(where)h
(that)e(limit)j(is)f(is)g(not)e(do)q(cumen)o(ted)191
1064 y(and)f(nob)q(o)q(dy)h(should)g(ev)o(er)f(rely)h(on)f(it.)262
1121 y(Inserting)k(c)o(haracters)f(in)o(to)g(the)h(middle)h(of)f(the)f
(text)g(lik)o(e)i(this)f(migh)o(t)g(o)o(v)o(er\014ll)191
1177 y(the)13 b(bu\013er,)g(and)g(in)g(that)f(case)h(the)g(\014rst)f
(line)j(of)d(the)h(bu\013er)f(gets)h(discarded)h(to)e(mak)o(e)191
1234 y(space.)29 b(There)18 b(will)i(b)q(e)e(no)g(dela)o(y)h(in)g(this)
f(ev)o(en)g(if)h(the)f(\014rst)g(line)h(forms)f(part)f(of)h(a)191
1290 y(selection)13 b(\(the)e(starting)g(p)q(oin)o(t)h(of)f(the)g
(selection)i(will)g(mo)o(v)o(e)e(to)g(the)g(start)g(of)g(the)g(next)191
1347 y(line,)20 b(and)f(ma)o(yb)q(e)f(the)g(selection)i(will)g(v)m
(anish)f(totally\).)28 b(There)19 b(will)h(b)q(e)f(a)f(sp)q(ecial)191
1403 y(case)g(if)h(the)f(caret)f(is)i(in)g(the)f(\014rst)g(line)h(when)
g(the)f(user)g(tries)h(to)e(insert)i(more)e(-)h(in)191
1460 y(this)e(case)f(the)h(insertion)h(will)g(fail.)k(If)16
b(it)g(is)g(from)f(the)g(k)o(eyb)q(oard)h(the)f(system)g(b)q(eeps)191
1516 y(and)j(discards)g(the)g(single)h(o\013ending)f(c)o(haracter.)26
b(If)18 b(it)g(is)g(part)f(of)g(a)g(P)l(ASTE)h(then)191
1572 y(c)o(haracters)f(are)g(ignored)h(up)g(to)f(the)h(next)f(newline)j
(in)e(the)g(pasted)f(text,)g(whic)o(h)i(is)191 1629 y(notionally)f
(inserted)g(and)f(then)g(the)g(resulting)h(\014rst)e(line)j(is)e(then)g
(thro)o(wn)f(a)o(w)o(a)o(y)l(.)24 b(I)191 1685 y(guess)14
b(in)g(this)h(case)f(it)g(means)f(that)h(if)g(the)g(caret)f(is)i(righ)o
(t)e(at)g(the)h(start)f(of)g(the)h(bu\013er)191 1742
y(all)i(the)f(inserted)h(stu\013)f(gets)g(abandoned.)262
1798 y(Characters)i(inserted)h(at)g(\(or)f(in)i(some)e(cases)h(near\))g
(the)g(end)g(of)g(the)g(text)f(can)191 1855 y(b)q(e)i(used)h(as)e
(program)f(input.)32 b(If)19 b(the)f(caret)h(is)g(at)f(the)g(end)i(of)e
(the)h(text)f(t)o(yp)q(ed-in)191 1911 y(c)o(haarcters)g(are)g(placed)i
(in)g(a)f(t)o(yp)q(e-ahead)g(bu\013er)f(un)o(til)i(the)f(program)f
(requests)h(a)191 1968 y(line)h(of)e(input.)30 b(When)19
b(that)f(happ)q(ens)h(c)o(haracters)f(are)g(accepted)h(from)f(the)g(t)o
(yp)q(e-)191 2024 y(ahead)f(bu\013er)h(\(and/or)e(the)h(P)l(ASTE)h
(source\))f(and)g(ec)o(ho)q(ed)h(to)f(the)g(screen)h(un)o(til)h(a)191
2081 y(newline)j(is)f(seen.)35 b(If)20 b(the)h(user)f(t)o(yp)q(es)g(a)g
(newline)i(at)d(the)i(end)g(of)e(the)h(input)i(line)191
2137 y(the)14 b(c)o(haracters)f(in)i(it)f(are)g(mo)o(v)o(ed)f(to)h(a)f
(program-input-bu\013er)i(whic)o(h)f(is)h(where)f(the)191
2193 y(program)j(reads)h(them)g(from.)27 b(If)19 b(the)f(user)g(re-p)q
(ositions)h(the)f(caret)g(and)g(inserts)h(a)191 2250
y(newline)h(in)o(to)e(the)f(middle)j(of)d(the)h(input)h(line)h(then)e
(pre-t)o(yp)q(ed)g(c)o(haracters)g(in)g(the)191 2306
y(line)h(but)f(after)f(where)i(the)e(newline)j(w)o(as)d(get)h(pushed)h
(bac)o(k)e(in)o(to)h(the)g(t)o(yp)q(e-ahead)191 2363
y(bu\013er)f(\(and)g(if)h(that)e(o)o(v)o(er\015o)o(ws)g(they)i(are)e
(lost)i(with)f(a)g(b)q(eep\).)27 b(The)17 b(e\013ect)g(is)h(that)191
2419 y(the)e(program)f(gets)g(one)h(line)i(at)d(once)h(and)h(when)f
(that)f(line)j(is)e(placed)h(in)g(its)f(input)191 2476
y(bu\013er)d(it)h(will)h(just)e(ha)o(v)o(e)g(b)q(een)i(ec)o(ho)q(ed)f
(to)f(the)h(screen.)19 b(The)14 b(program-input-bu\013er)191
2532 y(will)22 b(ha)o(v)o(e)e(limited)i(length)f(and)g(truly)f
(ridiculously)k(long)c(input)i(will)g(b)q(e)f(silen)o(tly)191
2589 y(truncated)e(when)g(mo)o(v)o(ed)g(in)o(to)g(it.)32
b(I)19 b(will)i(feel)f(en)o(titled)g(to)e(reject)h(input)h(activit)o(y)
191 2645 y(that)14 b(I)i(notice)g(creating)f(an)g(input)i(line)f(that)f
(is)h(longer)f(then)h(that)e(limit.)262 2702 y(An)d(elab)q(oration)g
(on)g(this)h(explanation)g(is)g(that)e(part)g(of)h(the)g(\014nal)h
(line)h(in)f(the)f(text)927 2826 y(5)p eop
%%Page: 6 6
6 5 bop 191 274 a Fb(bu\013er)17 b(can)g(b)q(e)h(an)f(incomplete)i
(input)g(line.)27 b(This)18 b(can)f(start)f(part)h(w)o(a)o(y)f(along)h
(the)191 330 y(line)e(\(eg)e(it)h(will)h(tend)e(to)g(start)f(after)h
(the)h(displa)o(y)o(ed)g(prompt\).)19 b(After)13 b(v)m(arious)h(CUT)191
387 y(and)g(DELETE)f(op)q(erations)h(or)f(when)h(the)f(program)g
(requests)g(input)i(after)d(prin)o(ting)191 443 y(a)20
b(line)h(that)f(w)o(as)f(not)h(terminated)g(it)g(can)h(start)e(w)o(ell)
i(along)f(the)g(\014nal)h(line.)36 b(An)191 500 y(incomplete)16
b(line)f(is)g(created)f(when)g(the)h(program)d(requests)i(a)g(line)i
(of)d(input.)21 b(When)191 556 y(the)16 b(user)g(inserts)g(a)g(newline)
h(in)o(to)f(the)g(incomplete)i(line)f(it)f(b)q(ecomes)h(complete,)f
(its)191 613 y(con)o(ten)o(ts)e(are)h(mo)o(v)o(ed)g(elsewhere)h(and)g
(there)f(is)h(no)f(longer)g(an)h(incomplete)g(line.)262
669 y(When)c(a)g(P)l(ASTE)h(op)q(eration)f(copies)h(material)g(in)o(to)
f(the)g(middle)i(of)e(a)g(do)q(cumen)o(t)191 726 y(an)o(y)i(prompts)g
(are)g(inserted.)21 b(But)14 b(if)h(then)g(some)f(of)g(that)g(line)i
(is)f(mo)o(v)o(ed)f(out)g(to)g(the)191 782 y(program-input-bu\013er)20
b(prompts)g(are)g(discarded)h(during)g(the)g(mo)o(v)o(e.)34
b(If)20 b(P)l(ASTE)191 839 y(puts)c(stu\013)e(righ)o(t)i(at)f(the)g
(end)i(of)e(the)g(bu\013er)h(it)g(omits)f(an)o(y)g(prompts)g(in)i(the)e
(pasted)191 895 y(stu\013.)36 b(But)21 b(the)g(start)f(of)g(eac)o(h)h
(line)h(of)f(input)h(that)e(is)h(ec)o(ho)q(ed)h(will)g(get)f(a)f(fresh)
191 951 y(prompt)15 b(displa)o(y)o(ed)h(on)f(it.)262
1008 y(When)g(the)f(program)g(that)g(is)h(b)q(eing)h(run)f(is)g(halted)
h(w)o(aiting)f(for)f(input)h(and)g(the)191 1064 y(screen)h(has)g(b)q
(een)h(scrolled)g(suc)o(h)f(that)g(the)f(end)i(of)e(the)h(bu\013er)g
(the)g(windo)o(w)g(title)h(is)191 1121 y(c)o(hanged)e(to)g(\\w)o
(aiting)g(for)g(input".)262 1177 y(Pressing)k(an)o(y)f(k)o(ey)g(or)h(p)
q(erforming)g(a)f(P)l(ASTE)h(op)q(eration)g(alw)o(a)o(ys)f(scrolls)h
(the)191 1234 y(windo)o(w)14 b(to)f(mak)o(e)h(the)g(caret)f(visible.)22
b(The)14 b(caret)f(can)h(only)g(ha)o(v)o(e)g(b)q(ecome)g(in)o(visible)
191 1290 y(as)j(a)g(result)g(of)g(a)g(user-initiated)i(scroll)f
(request)f(\(or)f(HOME\))h(since)h(except)g(when)191
1347 y(suc)o(h)j(a)f(request)g(has)h(hidden)h(it)f(the)f(windo)o(w)h
(scrolls)g(automatically)g(to)f(k)o(eep)h(it)191 1403
y(visible.)262 1460 y(Note)14 b(that)f(the)i(rules)g(giv)o(en)g(here)g
(indicate)h(that)e(c)o(haracters)f(are)h(only)h(inserted)191
1516 y(in)o(to)i(the)f(bu\013er)h(at)f(t)o(w)o(o)f(distinct)j(places:)
23 b(where)17 b(the)g(caret)f(is)h(and)g(at)f(the)g(end)i(of)191
1572 y(the)e(bu\013er.)24 b(So)16 b(the)g(implemen)o(tation)i(can)e
(surviv)o(e)h(if)g(it)g(just)f(cac)o(hes)g(information)191
1629 y(ab)q(out)f(those)g(t)o(w)o(o)f(p)q(ositions.)191
1772 y Fc(6)67 b(UNDO)21 b(|)h(a)g(summary)191 1874 y
Fb(There)14 b(is)g(an)g(undo)g(bu\013er)g(that)f(can)h(store)f(a)h
(limited)h(n)o(um)o(b)q(er)f(of)g(c)o(haracters)f(and)h(a)191
1930 y(limited)k(n)o(um)o(b)q(er)e(of)f(transactions.)21
b(A)16 b(transaction)f(iden)o(ti\014es)i(a)f(caret)f(p)q(osition)i(or)
191 1986 y(a)e(range)g(within)h(the)f(text,)g(an)g(p)q(ossibly)i(a)d
(sequence)j(of)e(asso)q(ciated)g(c)o(haracters:)247 2080
y(1.)22 b(After)c(a)h(P)l(ASTE)g(that)f(happ)q(ened)i(within)g(the)f(b)
q(o)q(dy)h(of)e(the)h(text)f(and)h(did)305 2137 y(not)14
b(terminate)i(an)f(input)h(line)h(an)e(UNDO)g(discards)h(the)f
(inserted)i(material;)247 2231 y(2.)22 b(After)15 b(a)g(P)l(ASTE)h
(that)e(put)i(one)g(or)f(more)g(newlines)i(in)o(to)e(the)h(input)g
(area)f(no)305 2287 y(UNDO)k(will)h(b)q(e)f(p)q(ossible)i(\(b)q(ecause)
e(some)g(of)f(the)h(inserted)g(text)g(has)f(b)q(een)305
2343 y(passed)d(on)g(to)g(the)g(appication)h(co)q(de)g(to)f(pro)q
(cess\);)247 2437 y(3.)22 b(After)h(a)g(CUT)g(follo)o(w)o(ed)g(p)q
(ossibly)i(b)o(y)f(op)q(erations)f(that)g(mo)o(v)o(e)f(the)i(caret)305
2494 y(an)d(UNDO)h(re-p)q(ositions)h(the)f(caret)f(and)h(do)q(es)g
(inserts)h(c)o(haracters)e(as)g(for)305 2550 y(a)14 b(P)l(ASTE)i(\(but)
f(that)f(paste)h(is)h(not)f(itself)h(undoable\);)247
2644 y(4.)22 b(After)16 b(a)h(sequence)h(of)f(DELETE)g(k)o(eys)g(ha)o
(v)o(e)f(b)q(een)j(pressed)e(an)g(UNDO)h(will)305 2700
y(re-insert)d(the)h(deleted)g(c)o(haracters.)j(It)d(can)f(re-instate)g
(deleted)i(prompts.)927 2826 y(6)p eop
%%Page: 7 7
7 6 bop 247 274 a Fb(5.)22 b(Sequences)c(of)f(non-delete)i(c)o
(haracters)e(are)g(collected)i(up)f(to)e(the)i(p)q(oin)o(t)g(of)f(a)305
330 y(newline.)32 b(If)19 b(the)g(newline)i(causes)e(transmission)g(of)
f(the)h(c)o(haracters)f(to)g(the)305 387 y(program)c(no)h(UNDO)h(is)g
(p)q(ossible.)22 b(Otherwise)16 b(eac)o(h)g(blo)q(c)o(k)g(up)g(to)e(a)h
(newline)305 443 y(is)g(an)g(UNDO)h(unit.)247 537 y(6.)22
b(Previously)12 b(stored)f(UNDO)h(op)q(erations)f(can)h(b)q(ecome)g(in)
o(v)m(alid)i(if)e(they)g(o)o(v)o(erlap)305 594 y(with)k(a)f
(non-undo-able)j(op)q(eration)e(or)f(if)h(the)g(text)f(that)g(they)h
(relate)g(to)f(gets)305 650 y(abandoned)g(as)f(the)h(main)h(text)e
(bu\013er)h(rolls,)g(or)f(if)h(the)g(undo)h(stac)o(k)e(b)q(ecomes)305
707 y(o)o(v)o(er-full.)20 b([Is)15 b(this)h(hard)f(to)g(implemen)o(t)h
(reliably?])191 850 y Fc(7)67 b(Auto-scrolling)24 b(|)f(a)f(summary)191
951 y Fb(If)16 b(the)f(user)h(nev)o(er)g(re-p)q(ositions)g(the)g(caret)
f(it)h(will)h(remain)f(at)f(the)g(extreme)h(end)g(of)191
1008 y(the)f(text)g(bu\013er.)20 b(And)c(scrolling)g(will)h(o)q(ccus)f
(to)e(k)o(eep)i(it)f(visible)j(b)q(ecause)247 1101 y(1.)k(Program)13
b(output)i(will)i(o)q(ccurs)f(with)f(the)h(caret)e(at)h(the)g(end)h
(and)f(visible;)247 1195 y(2.)22 b(Input)15 b(requests)f(will)i(b)q(e)f
(handled)g(with)g(the)f(caret)g(at)f(the)i(end)g(of)e(the)i(bu\013er.)
262 1289 y(If)k(the)g(user)g(scrolls)h(the)f(windo)o(w)g(bac)o(k)g
(\(using)g(the)g(scroll)h(bars\))e(so)h(that)f(the)191
1346 y(caret)f(b)q(ecomes)i(in)o(visible)h(then)f(scrolling)g(on)f
(output)f(will)j(cease,)e(but)g(the)g(screen)191 1402
y(will)k(jump)f(to)f(mak)o(e)g(the)g(insertion)i(p)q(oin)o(t)f(visible)
h(if)f(a)f(k)o(ey)h(is)g(pressed)g(and)f(the)191 1458
y(program)11 b(is)i(requesting)g(input)g(\(if)f(the)h(program)e(is)i
(NOT)f(requesting)h(input)g(y)o(et)f(the)191 1515 y(k)o(ey-strok)o(e)i
(just)h(go)q(es)g(in)h(a)f(t)o(yp)q(e-ahead)h(bu\013er)f(and)g(nothing)
h(sp)q(ecial)h(happ)q(ens\).)262 1571 y(If)h(the)g(user)g(has)g(mo)o(v)
o(ed)g(the)g(caret)f(to)h(other)f(than)h(at)g(the)g(end)h(of)e(the)h
(bu\013er)191 1628 y(then)g(the)h(windo)o(w)f(is)h(nev)o(er)f(scrolled)
i(b)o(y)e(cwin,)h(but)f(in)h(cases)g(when)f(it)h(migh)o(t)f(b)q(e)191
1684 y(in)o(teresting)h(to)g(scroll)g(it)g(the)g(title)h(text)e(of)g
(the)h(windo)o(w)g(is)g(up)q(dated)h(to)e(giv)o(e)h(the)191
1741 y(user)c(a)g(clue)i(to)d(that)h(fact.)191 1884 y
Fc(8)67 b(Prin)n(t)24 b(and)f(other)f(op)r(erations)191
1985 y Fb(The)d(regular)g(PRINT)h(item)f(on)g(the)g(men)o(u)g(should)h
(just)e(prin)o(t)h(the)g(whole)h(of)e(the)191 2042 y(con)o(ten)o(ts)h
(of)g(the)h(text)f(bu\013er.)33 b(It)20 b(will)h(apply)g(a)e(\014xed)i
(with)f(limit)h(and)f(truncate)191 2098 y(an)o(y)d(material)h(that)f
(spills)j(o\013)d(to)g(the)h(righ)o(t.)27 b(It)18 b(will)i(pac)o(k)d
(lines)j(on)o(to)c(pages)i(in)h(a)191 2155 y(simple-minded)k(manner.)34
b(PRINT-SELECTION)22 b(b)q(eha)o(v)o(es)e(the)g(same)f(w)o(a)o(y)g(but)
191 2211 y(only)i(pro)q(cesses)f(text)g(within)h(the)f(selected)i
(region)e(of)g(text.)34 b(The)21 b(READ)f(men)o(u)191
2268 y(op)q(eration)15 b(will)i(insert)f(text)f(of)f(the)i(form)286
2362 y Fa(IN)24 b("<filename>";)191 2455 y Fb(in)o(to)15
b(the)g(t)o(yp)q(e-ahead)h(bu\013er.)191 2599 y Fc(9)67
b(Implemen)n(tation)24 b(status)214 2700 y Fb(User-con)o(trolled)16
b(scrolling:)21 b(OK)927 2826 y(7)p eop
%%Page: 8 8
8 7 bop 214 274 a Fb(Selection)17 b(using)f(the)f(mouse:)20
b(OK)214 368 y(CUT:)15 b(OK,)i(although)f(to)q(o)f(m)o(uc)o(h)i(ma)o(y)
e(b)q(e)i(re-pain)o(ted)g(after)e(a)h(CUT)g(that)f(spans)305
424 y(sev)o(eral)g(lines)i(of)e(text)214 518 y(Program)k(output:)31
b(OK,)21 b(but)g(optimisation)g(and)g(\014nd)h(con)o(trol)e(o)o(v)o(er)
g(when)h(the)305 575 y(screen)15 b(gets)g(re-pain)o(ted)h(will)h(need)f
(further)f(w)o(ork,)f(I)h(exp)q(ect.)214 668 y(Keyb)q(oard)k(input:)29
b(Only)20 b(handled)g(when)g(the)f(caret)g(is)g(at)f(the)h(end)h(of)f
(the)g(text)305 725 y(bu\013er.)29 b(Ev)o(en)18 b(in)h(that)f(case)g
(DELETE)h(stops)e(deleting)j(at)e(the)g(end)h(of)f(the)305
781 y(\014nal)f(line)h(rather)d(than)h(deleteing)j(bac)o(k)d(further,)g
(and)g(deletion)i(of)e(prompts)305 838 y(as)h(single)h(items)g(is)g
(not)f(implemen)o(ted.)29 b(INsertion)18 b(in)o(to)f(the)h(middle)h(of)
e(the)305 894 y(bu\013er)e(is)g(not)g(\014nished.)214
988 y(P)o(aste:)21 b(Not)16 b(implemen)o(ted)i(at)d(all,)i(but)g(exp)q
(ected)g(to)f(b)q(e)h(a)f(fairly)h(easy)f(follo)o(w-on)305
1044 y(from)e(k)o(eyb)q(oard)h(input.)214 1138 y(UNDO:)22
b(Nothing)g(done)g(at)g(all)h(y)o(et,)g(and)f(will)i(need)f(re-w)o(ork)
e(of)h(other)f(bu\013er)305 1195 y(up)q(date)15 b(op)q(erations)h(to)e
(preserv)o(e)i(information.)214 1289 y(Prin)o(t:)30 b(Nothing)21
b(done)g(y)o(et,)g(and)f(the)h(issue)g(of)f(line)i(width)f(of)f(the)h
(pap)q(er)g(used)305 1345 y(relativ)o(e)15 b(to)g(the)g(curren)o(t)g
(windo)o(w)h(size)g(is)f(unclear.)214 1439 y(Other)g(op)q(erations:)20
b(READ)15 b(is)h(not)f(done)h(y)o(et,)e(but)h(is)h(probably)g(easy)l(.)
927 2826 y(8)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF
