<<

8½, the Plan 9 Window System

Rob Pike [email protected]−labs.com

ABSTRACT

6DA 2l=n ' MEn@oM IOIJAm, &½, EI = mo@AIJ-IEzA@ FHoCH=m oB noLAl @AIECn. 1J FHoLE@AI JANJK=l 1/O =n@ >EJm=F CH=FDE? IAHLE?AI Jo >oJD lo?=l =n@HAmoJA?lEAnJFHoCH=mI >O oBBAHEnC = mKlJEFlANA@ BElA IAHLE?A Jo JDoIA ?lEAnJI. 1J IAHLAI JH=@EJEon=l 7N1: BElAI lEkA /dev/tty =I MAll =I moHA KnKIK=l onAI JD=J FHoLE@A =??AII Jo JDA moKIA =n@ JDA H=M I?HAAn. *EJ­ m=F CH=FDE?I oFAH=JEonI =HA FHoLE@A@ >O IAHLEnC = BElA ?=llA@ /dev/bitblt JD=J EnJAHFHAJI ?lEAnJ mAII=CAI Jo FAHBoHm H=IJAH oFAH=­ JEonI. 6DA BElA IAHLE?A JD=J &½ oBBAHI EJI ?lEAnJI EI E@AnJE?=l Jo JD=J EJ KIAI BoH EJI oMn EmFlAmAnJ=JEon, Io EJ EI BKn@=mAnJ=llO no moHA JD=n = mKlJE­ FlANAH. 6DEI =H?DEJA?JKHA D=I IomA HAM=H@EnC IOmmAJHEAI =n@ ?=n >A EmFlAmAnJA@?omF=?JlO.

Introduction 1n '&' 1 ?onIJHK?JA@ = JoO MEn@oM IOIJAm BHom onlO = BAM DKn@HA@ lEnAI oB IoKH?A ?o@A KIEnC = ?KIJom l=nCK=CA =n@ =n KnKIK=l =H?DEJA?JKHA EnLolLEnC ?on?KHHAnJ FHo­ ?AIIAI [2EkA&']. )lJDoKCD JD=J IOIJAm M=I HK@EmAnJ=HO =J >AIJ, EJ @AmonIJH=JA@ JD=J MEn@oM IOIJAmI =HA noJ EnDAHAnJlO ?omFlE?=JA@. 6DA BolloMEnC OA=H, BoH JDA nAM 2l=n ' @EIJHE>KJA@ IOIJAm [2EkA' ], 1 =FFlEA@ IomA oB JDA lAIIonI BHom JD=J JoO FHojA?J Jo MHEJA, En +, = FHo@K?JEon-GK=lEJO MEn@oM IOIJAm ?=llA@ &½. &½ FHoLE@AI, on >l=?k-=n@-MDEJA, CHAO-I?=lA, oH ?oloH @EIFl=OI, JDA IAHLE?AI HAGKEHA@ oB = mo@AHn MEn@oM IOIJAm, En?lK@­ EnC FHoCH=mm=>ElEJO =n@ IKFFoHJ BoH HAmoJA CH=FDE?I. 6DA AnJEHA IOIJAm, En?lK@EnC JDA @AB=KlJ FHoCH=m JD=J HKnI En JDA MEn@oM ߞ JDA AGKEL=lAnJ oB xterm [.=H&'] MEJD ߢ?KJ­ JEnC =n@ F=IJEnCߣ >AJMAAn MEn@oMI ߞ EI MAll Kn@AH ' kElo>OJAI oB JANJ on = MoJoHol= $& FHo?AIIoH, =>oKJ D=lB JDA IEzA oB JDA oFAH=JEnC IOIJAm kAHnAl JD=J IKFFoHJI EJ =n@ =JAnJDJDAIEzAoBJDA:IAHLAH[5?DA&$] without xterm. 9D=J m=kAI &½ Io ?omF=?J? MK?D oB JDA I=LEnC ?omAI BHom oLAH=ll IEmFlE?EJO: &½ D=I lEJJlA CH=FDE?=l =n?EnAII, = ?on?EIA FHoCH=mmEnC EnJAHB=?A, =n@ = IEmFlA, BENA@ KIAH EnJAHB=?A. &½ =lIo m=kAI IomA @A?EIEonI >O BE=J ߞ JDHAA->KJJon moKIA, oLAHl=FFEnC MEn@oMI, >KElJ-En JAHmEn=l FHoCH=m =n@ MEn@oM m=n=CAH, AJ?. ߞ H=JDAH JD=n JHOEnC Jo =FFA=l Jo =ll J=IJAI. )lJDoKCD ?omF=?J, &½ EI noJ =I?AJE?. 1J FHoLE@AI JDA BKn@=mAnJ=lI =n@ AnoKCD ANJH=I Jo m=kA JDAm ?omBoHJ=>lA Jo KIA. 6DA moIJ EmFoHJ=nJ ?onJHE>KJoH Jo EJI Im=ll IEzA, JDoKCD, EI EJI oLAH=ll @AIECn =I = BElA IAHLAH. 6DEI IJHK?JKHA m=O >A =FFlE?=>lAJoMEn@oMIOIJAmIonJH=@EJEon=l7N1:-lEkAoFAH=JEnCIOIJAmI. 6DA Im=ll IEzA oB &½ @oAI noJ HABlA?J HA@K?A@ BKn?JEon=lEJO: &½ FHoLE@AI IAHLE?A HoKCDlO AGKEL=lAnJ Jo JDA : MEn@oM IOIJAm. &½ߣI ?lEAnJI m=O oB ?oKHIA >A =I ?omFlAN =IJDAO?DooIA,=lJDoKCDJDAJAn@An?OJomEmE?&½ߣI@AIECn=n@JDA?lA=n FHoCH=mmEnC EnJAHB=?AmA=nIJDAO=HAnoJnA=HlO=I>lo=JA@=I:=FFlE?=JEonI. ______OHECEn=llO =FFA=HA@, En = IlECDJlO @EBBAHAnJ BoHm, En Proc. of the Summer 1991 USENIX Conf., FF. #%- $#, N=IDLEllA. NoJA JD=J 8½ D=I >AAn HAFl=?A@ >O IAA rio . ­ ­

User’s Model &½ JKHnI JDA IEnClA I?HAAn, moKIA, =n@ kAO>o=H@ oB JDA JAHmEn=l En 2l=n ' JAHmE­ noloCO oH MoHkIJ=JEon En ?ommAH?E=l JAHmEnoloCO EnJo =n =HH=O oB En@AFAn@AnJ LEHJK=l JAHmEn=lIJD=Jm=O>AJANJK=lJAHmEn=lIIKFFoHJEnC=IDAll=n@ JDA KIK=l IKEJA oB JoolI oH CH=FDE?=l =FFlE?=JEonI KIEnC JDA BKll FoMAH oB JDA >EJm=F I?HAAn =n@ moKIA. 6ANJ EI HAFHAIAnJA@ En 76., =n An?o@EnC oB JDA 7nE?o@A 5J=n@=H@ [2EkA'!]. 6DA AnJEHA FHoCH=m­ mEnCEnJAHB=?AEIFHoLE@A@JDHoKCDHA=@EnC=n@MHEJEnCBElAIEn /dev. 2HEm=HElO BoH HA=IonI oB DEIJoHO =n@ B=mElE=HEJO, JDA CAnAH=l mo@Al =n@ =FFA=H=n?A oB &½ =HA IEmEl=H Jo JDoIA oB mux [2EkA&&]. 6DA HECDJ >KJJon D=I = IDoHJ mAnK BoH ?on­ JHollEnC MEn@oM ?HA=JEon, @AIJHK?JEon, =n@ Fl=?AmAnJ. 9DAn = MEn@oM EI ?HA=JA@, EJ HKnI JDA @AB=KlJ IDAll, rc [,KBB'], MEJD IJ=n@=H@ EnFKJ =n@ oKJFKJ @EHA?JA@ Jo JDA MEn@oM =n@ =??AIIE>lA JDHoKCD JDA BElA /dev/cons ߢ?onIolAߣ, =n=loCoKI Jo JDA /dev/tty oB 7N1:. 6DA n=mA ?D=nCA HAFHAIAnJI = >HA=k MEJD JDA F=IJ: 2l=n ' @oAI noJ FHoLE@A = 6AlAJOFA-IJOlA mo@Al oB JAHmEn=lI. &½ FHoLE@AI JDA onlO M=O moIJ KIAHI ALAH =??AII 2l=n'. /H=FDE?=l =FFlE?=JEonI, lEkA oH@En=HO FHoCH=mI, m=O >A HKn >O JOFEnC JDAEH n=mAI Jo JDA IDAll HKnnEnC En = MEn@oM. 6DEI HKnI JDA =FFlE?=JEon En JDA I=mA MEn@oM; Jo HKn JDA =FFlE?=JEon En = nAM MEn@oM onA m=O KIA =n ANJAHn=l FHoCH=m, window, @AI?HE>A@ >AloM. .oH CH=FDE?=l =FFlE?=JEonI, JDA LEHJK=l JAHmEn=l mo@Al EI ANJAn@A@ IomAMD=J Jo =lloM FHoCH=mI Jo FAHBoHm CH=FDE?=l oFAH=JEonI, =??AII JDA moKIA, =n@ FAHBoHm HAl=JA@ BKn?JEonI >O HA=@EnC =n@ MHEJEnC BElAI MEJD IKCCAIJELA n=mAI IK?D =I /dev/mouse =n@ /dev/window mKlJEFlANA@ FAH-MEn@oM mK?D lEkA /dev/cons. 6DA EmFlAmAnJ=JEon =n@IAm=nJE?IoBJDAIABElAI,@AI?HE>A@>AloM,EI?AnJH=lJoJDAIJHK?JKHAoB&½. 6DA @AB=KlJ FHoCH=m JD=J HKnI En = MEn@oM EI B=mElE=H Jo KIAHI oB *lEJ JAHmEn=lI [2EkA&!]. 1J EI LAHO IEmEl=H Jo JD=J oB mux [2EkA&&], FHoLE@EnC moKIA->=IA@ A@EJEnC oB EnFKJ =n@ oKJFKJ JANJ, JDA =>ElEJO Jo I?Holl >=?k Jo IAA A=HlEAH oKJFKJ, =n@ Io on. 1J =lIo D=I = nAM BA=JKHA, JoCClA@ >O JOFEnC -5+, JD=J An=>lAI JDA KIAH Jo ?onJHol MDAn JOFA@ ?D=H=?JAHI m=O >A HA=@ >O JDA IDAll oH =FFlE?=JEon, EnIJA=@ oB BoH AN=mFlA =BJAH A=?D nAMlEnA. 6DEI BA=JKHA m=kAI JDA MEn@oM FHoCH=m @EHA?JlO KIABKl BoH m=nO JANJ-A@EJEnC J=IkIIK?D=I?omFoIEnCm=ElmAII=CAI>ABoHAIAn@EnCJDAm.

Plan 9 and 8½ 2l=n'EI=@EIJHE>KJA@IOIJAmJD=JFHoLE@AIIKFFoHJBoH7N1:-lEkA=FFlE?=JEonI En =n AnLEHonmAnJ >KElJ BHom @EIJEn?J +27 IAHLAHI, BElA IAHLAHI, =n@ JAHmEn=lI ?onnA?JA@ >O = L=HEAJO oB nAJMoHkI [2EkA']. 6DA JAHmEn=lI =HA ?omF=H=>lA Jo mo@AIJ MoHkIJ=JEonI JD=J, on?A ?onnA?JA@ Jo = BElA IAHLAH oLAH = mA@EKm->=n@ME@JD nAJMoHk IK?D =I -JDAH­ nAJ, =HA IAlB-IKBBE?EAnJ ?omFKJAHI HKnnEnC = BKll oFAH=JEnC IOIJAm. 7nlEkA MoHkIJ=JEonI, DoMALAH, JDAEH HolA EI jKIJ Jo FHoLE@A =n =BBoH@=>lA mKlJEFlANA@ KIAH EnJAHB=?A Jo JDA HAIJ oB JDA IOIJAm: JDAO HKn JDA MEn@oM IOIJAm =n@ IKFFoHJ IEmFlA EnJAH=?JELA J=IkI IK?D =I JANJ A@EJEnC. 6DKI JDAO lEA IomAMDAHA >AJMAAn MoHkIJ=JEonI =n@ : JAHmEn=lI En @AIECn, ?oIJ,FAHBoHm=n?A, =n@ BKn?JEon. 6DA JAHmEn=lI ?=n >A KIA@ BoH CAnAH=l ?omFKJEnC, >KJ En FH=?JE?A 2l=n ' KIAHI @o JDAEH ?omFKJEnC on JDA +27 IAHLAHI. 6DA 2l=n ' JAHmEn=l IoBJM=HA, En?lK@EnC &½, M=I @ALAloFA@ on = $& ->=IA@ m=?DEnA ?=llA@ = /noJ =n@ D=I >AAn FoHJA@ Jo JDA NA:6IJ=JEon, JDA M125 M=CnKm !, 5/1 1n@ECoI, =n@ 5Kn 52)4+IJ=JEonIߞ=llIm=llMoHkIJ=JEonIJD=JMAKIA=IJAHmEn=lIߞ=IMAll=I2+I. 0A=LO ?omFKJ=JEonI IK?D =I ?omFEl=JEon, JANJ FHo?AIIEnC, oH I?EAnJEBE? ?=l?Kl=JEon =HA @onA on JDA +27 IAHLAHI, MDE?D =HA ?onnA?JA@ Jo JDA BElA IAHLAHI >O DECD->=n@ME@JD nAJMoHkI. .oH EnJAH=?JELA MoHk, JDAIA ?omFKJ=JEonI ?=n =??AII JDA JAHmEn=l JD=J EnIJ=n­ JE=JA@ JDAm. 6DA JAHmEn=l =n@ +27 IAHLAH >AEnC KIA@ >O = F=HJE?Kl=H KIAH =HA ?onnA?JA@ Jo JDA I=mA BElA IAHLAH, =lJDoKCD oLAH @EBBAHAnJ nAJMoHkI; 2l=n ' FHoLE@AI = LEAM oB JDA BElAIAHLAHJD=JEIEn@AFAn@AnJoBlo?=JEonEnJDAnAJMoHk. 6DA ?omFonAnJI oB 2l=n ' =HA ?onnA?JA@ >O = ?ommon FHoJo?ol >=IA@ on JDA ­!­

ID=HEnC oB BElAI. )ll HAIoKH?AI En JDA nAJMoHk =HA EmFlAmAnJA@ =I BElA IAHLAHI; FHoCH=mI JD=J MEID Jo =??AII JDAm ?onnA?J Jo JDAm oLAH JDA nAJMoHk =n@ ?ommKnE?=JA KIEnC oH@En=HO BElA oFAH=JEonI. )n KnKIK=l =IFA?J oB 2l=n ' EI JD=J JDA name space oB = FHo?AII, JDA IAJ oB BElAI JD=J ?=n >A =??AIIA@ >O n=mA BoH AN=mFlA >O =n open IOIJAm ?=ll EI noJ Clo>=l Jo =ll FHo?AIIAI on = m=?DEnA; @EIJEn?J FHo?AIIAI m=O D=LA @EIJEn?J n=mAIF=?AI. 6DAIOIJAmFHoLE@AImAJDo@I>OMDE?DFHo?AIIAIm=O ?D=nCA JDAEH n=mA IF=?AI, IK?D =I JDA =>ElEJO Jo mount = IAHLE?A KFon =n ANEIJEnC @EHA?JoHO, m=kEnC JDA BElAI oB JDA IAHLE?A LEIE>lA En JDA @EHA?JoHO. 6DEI EI = @EBBAHAnJ oFAH=JEon BHom EJI 7N1: n=mAI=kA. MKlJEFlA IAHLE?AI m=O >A moKnJA@ KFon JDA I=mA @EHA?JoHO, =lloMEnC JDA BElAIBHommKlJEFlA IAHLE?AI Jo >A =??AIIA@ En JDA I=mA @EHA?JoHO. OFJEonI Jo JDA mount IOIJAm?=ll?onJHolJDAoH@AHoBIA=H?DEnCBoHBElAIEnIK?D= union directory. 6DA moIJ o>LEoKI AN=mFlA oB = nAJMoHk HAIoKH?A EI = BElA IAHLAH, MDAHA FAHm=nAnJ BElAI HAIE@A. 6DAHA =HA = nKm>AH oB KnKIK=l IAHLE?AI, DoMALAH, MDoIA @AIECn En = @EBBAH­ AnJ AnLEHonmAnJ MoKl@ lEkAlO noJ >A BElA->=IA@. M=nO =HA @AI?HE>A@ AlIAMDAHA [2EkA' ]; IomA AN=mFlAI =HA JDA HAFHAIAnJ=JEon oB FHo?AIIAI BoH @A>KCCEnC, mK?D lEkA KEllE=nߣI FHo?AII BElAI BoH JDA &JD A@EJEon [KEll&"], =n@ JDA EmFlAmAnJ=JEon oB JDA n=mA/L=lKA F=EHI oB JDA 7N1: exec AnLEHonmAnJ =I BElAI. 7IAH FHo?AIIAI m=O =lIo EmFlAmAnJ = BElA IAHLE?A =n@ m=kA EJ =L=El=>lA Jo ?lEAnJI En JDA nAJMoHk, mK?D lEkA JDA ߢmoKnJA@ IJHA=mIߣ En JDA 'JD -@EJEon [2HAI']. ) JOFE?=l AN=mFlA EI = FHoCH=m JD=J EnJAHFHAJI =n ANJAHn=llO-@ABEnA@BElAIOIJAmIK?D=I JD=J on = +,-4OM oH = IJ=n@=H@ 7N1: IOIJAm =n@ m=kAI JDA ?onJAnJI =L=El=>lA Jo 2l=n ' FHoCH=mI. 6DEI @AIECn EI KIA@ >O =ll @EIJHE>KJA@ =FFlE?=JEonIEn2l=n',En?lK@EnC&½. &½ IAHLAI = IAJ oB BElAI En JDA ?onLAnJEon=l @EHA?JoHO /dev MEJD n=mAI lEkA cons, mouse, =n@ screen. +lEAnJI oB &½ ?ommKnE?=JA MEJD JDA MEn@oM IOIJAm >O HA=@EnC =n@ MHEJEnC JDAIA BElAI. .oH AN=mFlA, = ?lEAnJ FHoCH=m, IK?D =I = IDAll, ?=n FHEnJ JANJ >O MHEJEnC EJI IJ=n@=H@ oKJFKJ, MDE?D EI =KJom=JE?=llO ?onnA?JA@ Jo /dev/cons,oHEJm=O oFAn =n@ MHEJA JD=J BElA ANFlE?EJlO. 7nlEkA BElAI IAHLA@ >O = JH=@EJEon=l BElA IAHLAH, DoM­ ALAH, JDA EnIJ=n?A oB /dev/cons IAHLA@ En A=?D MEn@oM >O &½ EI = @EIJEn?J BElA; JDA FAH-FHo?AII n=mA IF=?AI oB 2l=n ' =lloM &½ Jo FHoLE@A = KnEGKA /dev/cons Jo A=?D ?lEAnJ. 6DEImA?D=nEImEI>AIJEllKIJH=JA@>OJDA?HA=JEonoB=nAM&½?lEAnJ. 9DAn &½ IJ=HJI, EJ ?HA=JAI = BKll-@KFlAN FEFA Jo >A JDA ?ommKnE?=JEon mA@EKm BoH JDA mAII=CAI JD=J EmFlAmAnJ JDA BElA IAHLE?A EJ MEll FHoLE@A. OnA An@ MEll >A ID=HA@ >O =ll JDA ?lEAnJI; JDA oJDAH An@ EI DAl@ >O &½ Jo =??AFJ HAGKAIJI BoH 1/O. 9DAn = KIAH m=kAI = nAM MEn@oM KIEnC JDA moKIA, &½ =llo?=JAI JDA MEn@oM @=J= IJHK?JKHAI =n@ BoHkI = ?DEl@ FHo?AII. 6DA ?DEl@ߣI n=mA IF=?A, EnEJE=llO ID=HA@ MEJD JDA F=HAnJ, EI JDAn @KFlE?=JA@ Io JD=J ?D=nCAI JDA ?DEl@ m=kAI Jo EJI n=mA IF=?A MEll noJ =BBA?J JDA F=HAnJ. 6DA ?DEl@ JDAn =JJ=?DAI EJI An@ oB JDA ?ommKnE?=JEon FEFA, cfd, Jo JDA @EHA?JoHO /dev >O@oEnC= mount IOIJAm?=ll: mount(cfd, "/dev", MBEFORE, buf) 6DEI ?=ll =JJ=?DAI JDA IAHLE?A =IIo?E=JA@ MEJD JDA BElA @AI?HEFJoH cfd ߞ JDA ?lEAnJ An@ oB JDA FEFA ߞ Jo JDA >ACEnnEnC oB /dev Io JD=J JDA BElAI En JDA nAM IAHLE?A J=kA FHEoHEJO oLAH ANEIJEnC BElAI En JDA @EHA?JoHO. 6DEI m=kAI JDA nAM BElAI cons, mouse, =n@ Io on, =L=El=>lA En /dev En = M=O JD=J DE@AI =nO BElAI MEJD JDA I=mA n=mAI =lHA=@O En Fl=?A. 6DA=HCKmAnJ buf EI=?D=H=?JAHIJHEnCnKllEnJDEI?=IA,@AI?HE>A@>AloM. 6DA ?lEAnJ FHo?AII JDAn ?loIAI BElA @AI?HEFJoHI , , =n@ =n@ oFAnI /dev/cons HAFA=JA@lO Jo ?onnA?J JDA IJ=n@=H@ EnFKJ, oKJFKJ, =n@ AHHoH BElAI Jo JDA MEn@oMߣI /dev/cons. 1J JDAn @oAI =n exec IOIJAm ?=ll Jo >ACEn ANA?KJEnC JDA IDAll En JDA MEn­ @oM. 6DEIAnJEHAIAGKAn?A,?omFlAJAMEJDAHHoHD=n@lEnC,EI!!lEnAIoB+. 6DA LEAM oB JDAIA ALAnJI BHom &½ߣI An@ oB JDA FEFA EI = IAGKAn?A oB BElA FHoJo?ol mAII=CAI BHom JDA nAM ?lEAnJ CAnAH=JA@ >O JDA EnJAHLAnEnC oFAH=JEnC IOIJAm En HAIFonIA Jo JDA mount =n@ open IOIJAm ?=llI ANA?KJA@ >O JDA ?lEAnJ. 6DA mAII=CA CAnAH=JA@ >O JDA mount EnBoHmI &½ JD=J = nAM ?lEAnJ D=I =JJ=?DA@ Jo JDA BElA IAHLE?A EJ ­"­

FHoLE@AI; &½ߣI HAIFonIA EI = KnEGKA E@AnJEBEAH kAFJ >O JDA oFAH=JEnC IOIJAm =n@ F=IIA@ En =ll mAII=CAI CAnAH=JA@ >O 1/O on JDA BElAI @AHELA@ BHom JD=J mount. 6DEI E@AnJEBEAH EI KIA@ >O &½ Jo @EIJEnCKEID JDA L=HEoKI ?lEAnJI Io A=?D IAAI = KnEGKA /dev/cons; moIJIAHLAHI@onoJnAA@Jom=kAJDEI@EIJEn?JEon. ) FHo?AII KnHAl=JA@ Jo &½ m=O ?HA=JA MEn@oMI >O = L=HE=nJ oB JDEI mA?D=nEIm. 9DAn &½ >ACEnI, EJ KIAI = 2l=n ' IAHLE?A Jo ߢFoIJߣ JDA ?lEAnJ An@ oB JDA ?ommKnE?=JEon FEFA En = FK>lE? Fl=?A. ) FHo?AII m=O oFAn JD=J FEFA =n@ mount EJ Jo =JJ=?D Jo JDA MEn­ @oM IOIJAm, mK?D En JDA M=O =n : ?lEAnJ m=O ?onnA?J Jo = 7N1: @om=En Io?kAJ Jo JDA IAHLAH >oKn@ Jo JDA BElA IOIJAm. 6DA BEn=l =HCKmAnJ Jo mount EI F=IIA@ JDHoKCD KnEn­ JAHFHAJA@ >O JDA oFAH=JEnC IOIJAm. 1J FHoLE@AI = M=O BoH JDA ?lEAnJ =n@ IAHLAH Jo AN?D=nCA EnBoHm=JEon =J JDA JEmA oB JDA mount. &½ EnJAHFHAJI EJ =I JDA @EmAnIEonI oB JDA MEn@oM Jo >A ?HA=JA@ BoH JDA nAM ?lEAnJ. 1n JDA ?=IA =>oLA, JDA MEn@oM D=I >AAn ?HA=JA@ >O JDA JEmA JDA moKnJ o??KHI, =n@ buf ?=HHEAI no EnBoHm=JEon. 9DAn JDA mount HAJKHnI, JDA FHo?AII ?=n oFAn JDA BElAI oB JDA nAM MEn@oM =n@ >ACEn 1/O Jo KIA EJ. *A?=KIA &½ߣI EnJAHB=?A EI >=IA@ on BElAI, IJ=n@=H@ IOIJAm KJElEJEAI ?=n >A KIA@ Jo ?onJHol EJI IAHLE?AI. .oH AN=mFlA,EJImAJDo@oB?HA=JEnCMEn@oMIANJAHn=llOEIF=?k=CA@ En = $-lEnA IDAll I?HEFJ, ?=llA@ window, JDA ?oHA oB MDE?D EI jKIJ = mount oFAH=JEon JD=JFHABENAI&½ߣI@EHA?JoHOJo /dev =n@HKnI=?omm=n@F=IIA@onJDA=HCKmAnJlEnA: mount −b $’8½serv’ /dev $* < /dev/cons > /dev/cons >[2] /dev/cons & 6DA window FHoCH=m EI JOFE?=llO AmFloOA@ >O KIAHI Jo ?HA=JA JDAEH EnEJE=l MoHkEnC AnLE­ HonmAnJMDAnJDAO>ooJJDAIOIJAm,=lJDoKCDEJD=ImoHACAnAH=lFoIIE>ElEJEAI. OJDAH >=IE? BA=JKHAI oB JDA IOIJAm B=ll oKJ n=JKH=llO BHom JDA BElA->=IA@ mo@Al. 9DAn JDA KIAH @AlAJAI = MEn@oM, &½ IAn@I JDA AGKEL=lAnJ oB = 7N1: IECn=l Jo JDA FHo­ ?AII CHoKF ߞ JDA ?lEAnJI ߞ En JDA MEn@oM, HAmoLAI JDA MEn@oM BHom JDA I?HAAn, =n@ FoEIonI JDA En?omEnC ?onnA?JEonI Jo JDA BElAI JD=J @HELA EJ. 1B = ?lEAnJ ECnoHAI JDA IECn=l =n@ ?onJEnKAI Jo MHEJA Jo JDA MEn@oM, EJ MEll CAJ 1/O AHHoHI. 1B, on JDA oJDAH D=n@, =ll JDA FHo?AIIAI En = MEn@oM ANEJ IFonJ=nAoKIlO, JDAO MEll =KJom=JE?=llO ?loIA =ll ?onnA?JEonI Jo JDA MEn@oM. &½ ?oKnJI HABAHAn?AI Jo JDA MEn@oMߣI BElAI; MDAn nonA =HA lABJ, EJ IDKJI @oMn JDA MEn@oM =n@ HAmoLAI EJ BHom JDA I?HAAn. )I = @EBBAHAnJ AN=mFlA, MDAn JDA KIAHDEJIJDA,-LkAOJoCAnAH=JA=nEnJAHHKFJ,&½MHEJAI=mAII=CAJo= IFA?E=l BElA, FHo­ LE@A@ >O 2l=n 'ߣI FHo?AII ?onJHol EnJAHB=?A, JD=J EnJAHHKFJI =ll JDA FHo?AIIAI En JDA MEn­ @oM. 1n=llJDAIAAN=mFlAI,JDAEmFlAmAnJ=JEonMoHkIIA=mlAIIlO=?HoII=nAJMoHk. 6DAHA =HA JMo L=lK=>lA IE@A ABBA?JI oB EmFlAmAnJEnC = MEn@oM IOIJAm >O mKlJEFlAN­ EnC /dev/cons =n@ oJDAH IK?D BElAI. .EHIJ, JDA FHo>lAm oB CELEnC = mA=nEnCBKl EnJAH­ FHAJ=JEon Jo JDA BElA /dev/cons /dev/tty En A=?D MEn@oM EI IolLA@ =KJom=JE?=llO. 6o FHoLE@A /dev/cons EI JDA BKn@=mAnJ=l jo> oB JDA MEn@oM IOIJAm, H=JDAH JD=n jKIJ =n =MkM=H@ >KH@An; oJDAH IOIJAmI mKIJ oBJAn m=kA IFA?E=l =n@ oJDAHMEIA EHHAlAL=nJ =HH=nCAmAnJI BoH /dev/tty Jo >AD=LA =I ANFA?JA@ En = MEn@oM. 5A?on@, =nO FHoCH=m JD=J?=n=??AIIJDAIAHLAH,En?lK@EnC=FHo?AIIon=HAmoJAm=?DEnA,?=n=??AII JDA BElAI KIEnC IJ=n@=H@ HA=@ =n@ MHEJA IOIJAm ?=llI Jo ?ommKnE?=JA MEJD JDA MEn@oM IOIJAm, =n@IJ=n@=H@oFAn=n@?loIA?=llIJo?onnA?JJoEJ. )=En,noIFA?E=l=HH=nCAmAnJInAA@ Jo>Am=@ABoHHAmoJAFHo?AIIAIJoKIA=llJDACH=FDE?IB=?ElEJEAIoB&½.

Graphical input OB ?oKHIA &½ oBBAHI moHA JD=n )5+11 1/O Jo EJI ?lEAnJI. 6DA IJ=JA oB JDA moKIA m=O >A @EI?oLAHA@ >O HA=@EnC JDA BElA /dev/mouse, MDE?D HAJKHnI = JAn->OJA mAII=CA An?o@EnC JDA IJ=JA oB JDA >KJJonI =n@ JDA FoIEJEon oB JDA ?KHIoH. 1B JDA moKIA D=I noJ moLA@ IEn?A JDA l=IJ HA=@ oB /dev/mouse, oH EB JDA MEn@oM =IIo?E=JA@ MEJD JDA EnIJ=n?AoB /dev/mouse EInoJJDAߢEnFKJBo?KIߣ,JDAHA=@>lo?kI. 6DABoHm=JoBJDAmAII=CAEI: ­#­

’m’ >OJAoB>KJJonIJ=JA ">OJAIoBN,loM>OJABEHIJ ">OJAIoBO,loM>OJABEHIJ )I En =ll ID=HA@ @=J= IJHK?JKHAI En 2l=n ', JDA oH@AH oB ALAHO >OJA En JDA mAII=CA EI @ABEnA@ Io =ll ?lEAnJI ?=n ANA?KJA JDA I=mA?o@AJoKnF=?kJDAmAII=CAEnJo=lo?=l@=J= IJHK?JKHA. .oH kAO>o=H@ EnFKJ, ?lEAnJI ?=n HA=@ /dev/cons oH, EB JDAO nAA@ ?D=H=?JAH-=J-=- JEmA EnFKJ, /dev/rcons ߢH=M ?onIolAߣ. 6DAHA EI no ANFlE?EJ ALAnJ mA?D=nEIm Jo DAlF ?lEAnJI JD=J nAA@ Jo HA=@ BHom mKlJEFlA IoKH?AI. 1nIJA=@, = Im=ll !$# lEnA ANJAHn=l IKF­ FoHJ lE>H=HO ?=n >A KIA@. 1J =JJ=?DAI = FHo?AII Jo JDA L=HEoKI >lo?kEnC EnFKJ IoKH?AI ߞ moKIA, kAO>o=H@, =n@ FAHD=FI = JDEH@ KIAH-FHoLE@A@ BElA @AI?HEFJoH ߞ =n@ BKnnAlI JDAEH EnFKJ EnJo = IEnClA FEFA BHom MDE?D m=O >A HA=@ JDA L=HEoKI JOFAI oB ALAnJI En JDA JH=@E­ JEon=l IJOlA. 6DEI F=?k=CA EI = ?omFHomEIA. )I @EI?KIIA@ En = FHALEoKI F=FAH [2EkA&'] 1 FHABAH Jo BHAA =FFlE?=JEonI BHomALAnJ->=IA@FHoCH=mmEnC. 7nBoHJKn=JAlO,JDoKCD,1IAA no A=IO M=O Jo =?DEALA JDEI En IEnClA-JDHA=@A@ + FHoCH=mI, =n@ =m KnMEllEnC Jo HAGKEHA =ll FHoCH=mmAHI Jo m=IJAH ?on?KHHAnJ FHoCH=mmEnC. 1J IDoKl@ >A noJA@, JDoKCD, JD=J ALAn JDEI ?omFHomEIA HAIKlJI En = Im=ll =n@ A=IElO Kn@AHIJoo@ EnJAHB=?A. )n AN=mFlA FHoCH=mJD=JKIAIEJEICELAnnA=HJDAAn@oBJDAF=FAH.

Graphical output 6DA BElA /dev/screen m=O >A HA=@ >O =nO ?lEAnJ Jo HA?oLAH JDA ?onJAnJI oB JDA AnJEHA I?HAAn, IK?D =I BoH FHEnJEnC IAA .ECKHA . 5EmEl=HlO, /dev/window Dol@I JDA ?onJAnJIoBJDA?KHHAnJMEn@oM. 6DAIA=HAHA=@-onlOBElAI. 6o FAHBoHm CH=FDE?I oFAH=JEonI En JDAEH MEn@oMI, ?lEAnJ FHoCH=mI =??AII /dev/bitblt. 1J EmFlAmAnJI = FHoJo?ol JD=J An?o@AI >EJm=F CH=FDE?I oFAH=JEonI. MoIJ oB JDA mAII=CAI En JDA FHoJo?ol JDAHA =HA ! mAII=CAI En =ll, =>oKJ D=lB Jo m=n­ =CA JDA mKlJE-lALAl BonJI nA?AII=HO BoH ABBE?EAnJ D=n@lEnC oB 7nE?o@A ?D=H=?JAHI =HA JH=nImEIIEonI LE= = MHEJA BHom JDA ?lEAnJ Jo JDA MEn@oM IOIJAm Jo FAHBoHm = CH=FDE?=l oFAH=JEon IK?D =I = bitblt [2L4&#] oH ?D=H=?JAH-@H=MEnC oFAH=JEon; = BAM En?lK@A HAJKHn EnBoHm=JEon HA?oLAHA@ LE= = HA=@ Jo JDA ?lEAnJ. )I MEJD /dev/mouse, JDA /dev/bitblt FHoJo?ol EI En = @ABEnA@ >OJA oH@AH. 0AHA, BoH AN=mFlA, EI JDA l=OoKJ oB JDA bitblt mAII=CA: ’b’ >OJAIoB@AIJEn=JEonE@ N">OJAIoB@AIJEn=JEonFoEnJ >OJAIoBIoKH?AE@ "N">OJAIoBIoKH?AHA?J=nClA >OJAIoB>oolA=nBKn?JEon?o@A

6DA mAII=CA EI JHELE=llO ?onIJHK?JA@ BHom JDA bitblt IK>HoKJEnA En JDA lE>H=HO, @ABEnA@=I

void bitblt(Bitmap *dst, Point dp, Bitmap *src, Rectangle sr, Fcode c). 6DA ߢE@ߣ BEAl@I En JDA mAII=CA En@E?=JA =noJDAH FHoFAHJO oB &½: JDA ?lEAnJI @o noJ IJoHA JDA =?JK=l @=J= BoH =nO oB JDAEH >EJm=FI lo?=llO. 1nIJA=@, JDA FHoJo?ol FHoLE@AI = mAII=CA Jo =llo?=JA = >EJm=F, Jo >A IJoHA@ En JDA IAHLAH, =n@ HAJKHnI Jo JDA ?lEAnJ =n EnJACAH E@AnJEBEAH, mK?D lEkA = 7N1: BElA @AI?HEFJoH, Jo >A KIA@ En oFAH=JEonI on JD=J >EJ­ m=F. *EJm=F nKm>AH  EI ?onLAnJEon=llO JDA ?lEAnJߣI MEn@oM, =n=loCoKI Jo IJ=n@=H@ EnFKJ BoH BElA 1/O. 1nB=?J,no>EJm=FCH=FDE?IoFAH=JEonI=HAANA?KJA@EnJDA?lEAnJ=J=ll; JDAO =HA =ll FAHBoHmA@ on EJI >AD=lB >O JDA IAHLAH. )C=En, KIEnC JDA IJ=n@=H@ HAmoJA BElA ­$­

.ECKHA . ) HAFHAIAnJ=JELA &½ I?HAAn, HKnnEnC on = NA:6IJ=JEon Kn@AH 2l=n ' MEJD no NA:6 IoBJM=HA. 1n JDA KFFAH HECDJ, = FHoCH=m =nnoKn?AI JDA =HHEL=l oB m=El. 1n JDA JoF =n@ lABJ =HA = >HoIMAH BoH =IJHonomE?=l @=J=>=IAI =n@ =n Em=CA oB = C=l=NO FHo@K?A@ >O JDA >HoMIAH. 1n JDA loMAH lABJ JDAHA EI = I?HAAn A@EJoH, sam [2EkA&%], A@EJEnC J=F=nAIA JANJ An?o@A@ En 76., =n@ En JDA loMAH HECDJ =n &½ HKnnEnC HA?KH­ IELAlO =n@, EnIE@A JD=J EnIJ=nJE=JEon, = FHALEAMAH BoH troff oKJFKJ. 7n@AHnA=JD JDAB=?AIEI=Im=llMEn@oM HKnnEnC JDA ?omm=n@ JD=J FHEnJI JDA I?HAAn >O F=IIEnC /dev/screen JoJDA>EJm=FFHEnJEnCKJElEJO. oFAH=JEonI En 2l=n ', JDEI FAHmEJI HAmoJA m=?DEnAI D=LEnC no CH=FDE?I ?=F=>ElEJO, IK?D =I JDA +27 IAHLAH, Jo HKn CH=FDE?I =FFlE?=JEonI. )n=loCoKI BA=JKHAI oB JDA oHECEn=l )n@HAMMEn@oMIOIJAm[/oI&$]=n@oB:[5?DA&$]HAGKEHAmoHA?omFlANmA?D=nEImI. NoH @oAI &½ EJIAlB oFAH=JA @EHA?JlO on >EJm=FI. 1nIJA=@, EJ ?=llI =noJDAH IAHLAH Jo @o EJI CH=FDE?I oFAH=JEonI BoH EJ, KIEnC =n E@AnJE?=l FHoJo?ol. 6DA oFAH=JEnC IOIJAm BoH JDA2l=n'JAHmEn=lI?onJ=EnI=nEnJAHn=lIAHLAHJD=J EmFlAmAnJI JD=J FHoJo?ol, AN=?JlO =I @oAI &½, >KJ BoH = IEnClA ?lEAnJ. 6D=J IAHLAH IJoHAI JDA =?JK=l >OJAI BoH JDA >EJm=FI =n@ EmFlAmAnJI JDA BKn@=mAnJ=l >EJm=F CH=FDE?I oFAH=JEonI. 6DKI JDA AnLEHonmAnJ En MDE?D &½ HKnI D=I AN=?JlO JDA IJHK?JKHA EJ FHoLE@AI BoH EJI ?lEAnJI; &½ HAFHo@K?AI JDA AnLEHonmAnJBoHEJI?lEAnJI,mKlJEFlANEnCJDAEnJAHB=?AJokAAFJDA?lEAnJIIAF=H=JA. 6DEI E@A= oB mKlJEFlANEnC >O IEmKl=JEon EI =FFlE?=>lA Jo moHA JD=n MEn@oM IOIJAmI, oB ?oKHIA, =n@ D=I IomA IE@A ABBA?JI. 5En?A &½ IEmKl=JAI EJI oMn AnLEHonmAnJ BoH EJI ?lEAnJI, EJ m=O HKn En onA oB EJI oMn MEn@oMI IAA .ECKHA . ) KIABKl =n@ ?ommon =FFlE?=JEon oB JDEI JA?DnEGKA EI Jo ?onnA?J = MEn@oM Jo = HAmoJA m=?DEnA, IK?D =I = +27 IAHLAH,=n@HKnJDAMEn@oMIOIJAmJDAHAIo JD=J A=?D IK>MEn@oM EI =KJom=JE?=llO on JDA HAmoJA m=?DEnA. 1J EI =lIo = D=n@O M=O Jo @A>KC = nAM LAHIEon oB JDA MEn@oMIOIJAmoH Jo?HA=JA=nAnLEHonmAnJMEJD,BoHAN=mFlA,=@EBBAHAnJ@AB=KlJBonJ. ­%­

Implementation 6o FHoLE@A CH=FDE?I Jo EJI ?lEAnJI, &½ moIJlO jKIJ mKlJEFlANAI =n@ F=IIAI JDHoKCD Jo EJI oMn IAHLAH JDA ?lEAnJIߣ HAGKAIJI, o??=IEon=llO HA=HH=nCEnC JDA mAII=CAI Jo m=En­ J=En JDA BE?JEon JD=J JDA ?lEAnJI D=LA KnEGKA I?HAAnI MEn@oMI. 6o m=n=CA JDA oLAHl=F­ FEnC MEn@oMI EJ KIAI JDA l=OAHI mo@Al, MDE?D EI D=n@lA@ >O = IAF=H=JA lE>H=HO [2EkA&!=]. 6DKI EJ D=I lEJJlA MoHk Jo @o =n@ EI = B=EHlO IEmFlA FHoCH=m; EJ EI @omEn=JA@ >O = ?oKFlA oB IMEJ?D IJ=JAmAnJI Jo EnJAHFHAJ JDA >EJm=F =n@ BElA IAHLAH FHoJo?olI. 6DA >KElJ-En MEn­ @oM FHoCH=m =n@ EJI =IIo?E=JA@ mAnKI =n@ JANJ-m=n=CAmAnJ IKFFoHJ =HA HAIFonIE>lA BoHmoIJoBJDA?o@A. 6DA oFAH=JEnC IOIJAmߣI IAHLAH EI =lIo ?omF=?J: JDA LAHIEon BoH JDA $&  FHo?AI­ IoH, AN?lK@EnC JDA EmFlAmAnJ=JEon oB = D=lB @ozAn >EJm=F CH=FDE?I oFAH=JEonI, EI '# lEnAI oB + =C=En, =>oKJ D=lB @A=lEnC MEJD BonJI; JDA CH=FDE?I oFAH=JEonI =HA =noJDAH "lEnAI. &½ EI IJHK?JKHA@ =I = IAJ oB ?ommKnE?=JEnC ?oHoKJEnAI, mK?D =I @EI?KIIA@ En = '&' F=FAH [2EkA&']. OnA ?oHoKJEnA m=n=CAI JDA moKIA, =noJDAH JDA kAO>o=H@, =n@ =noJDAH EI EnIJ=nJE=JA@ Jo m=n=CA JDA IJ=JA oB A=?D MEn@oM =n@ =IIo?E=JA@ ?lEAnJ. 9DAn no ?oHoKJEnA MEIDAI Jo HKn, &½ HA=@I JDA nANJ BElA 1/O HAGKAIJ BHom EJI ?lEAnJI, MDE?D =HHELAIAHE=llOonJDABKll-@KFlAN?ommKnE?=JEonFEFA. 6DKI&½EIAnJEHAlOIOn?DHonoKI. 6DA FHoCH=m IoKH?A EI Im=ll =n@ ?omFElAI En =>oKJ  IA?on@I En oKH 2l=n ' AnLE­ HonmAnJ. 6DAHA =HA JAn IoKH?A BElAI =n@ onA makefile JoJ=lEnC #  lEnAI. 6DEI En?lK@AI JDA IoKH?A BoH JDA MEn@oM m=n=CAmAnJ FHo?AII, JDA ?KJ-=n@-F=IJA JAHmEn=l FHoCH=m, JDA MEn@oM/BElA IAHLAH EJIAlB, =n@ = Im=ll ?oHoKJEnA lE>H=HO proc.c. 1J @oAI noJ En?lK@A JDA l=OAH lE>H=HO =noJDAH ! lEnAI oH JDA lE>H=HO Jo D=n@lA JDA ?KJJEnC =n@ F=IJEnC oB JANJ @EIFl=OA@ En = MEn@oM '$ lEnAI, oH JDA CAnAH=l CH=FDE?I IKFFoHJ lE>H=HO JD=J m=n=CAI =ll JDA non-@H=MEnC =IFA?JI oB CH=FDE?I ߞ =HEJDmAJE? on FoEnJI =n@ HA?J­ =nClAI, mAmoHO m=n=CAmAnJ, AHHoH D=n@lEnC, ?lEFFEnC, ߞ FlKI BonJI, ALAnJI, =n@ non- FHEmEJELA @H=MEnC oFAH=JEonI IK?D =I ?EH?lAI =n@ AllEFIAI = BEn=l !# lEnAI. NoJ =ll JDA FEA?AI oB JDAIA lE>H=HEAI =HA KIA@ >O &½ EJIAlB; = l=HCA F=HJ oB JDA CH=FDE?I lE>H=HO En F=H­ JE?Kl=H EI KIA@ onlO >O ?lEAnJI. 6DKI EJ EI IomAMD=J KnB=EH Jo &½ jKIJ Jo IKm JDAIA nKm­ >AHI, En?lK@EnC JDA "#' lEnAI oB IKFFoHJ En JDA kAHnAl, =n@ =HHELA =J = JoJ=l EmFlAmAnJ=­ JEon IEzA oB "$# lEnAI oB IoKH?A Jo EmFlAmAnJ =ll oB &½ BHom JDA loMAIJ lALAlI Jo JDA DECDAIJ. *KJJD=JnKm>AHCELAI=B=EHmA=IKHAoBJDA?omFlANEJOoBJDAoLAH=llIOIJAm. 6DA EmFlAmAnJ=JEon EI =lIo ABBE?EAnJ. &½ߣI FAHBoHm=n?A EI ?omFAJEJELA Jo : MEn­ @oMIߣ. +omF=HA@ KIEnC ,KnMoo@OߣI =n@ LEnJonߣI gbench >An?Dm=HkI on JDA $& , @EIJHE>KJA@ MEJD JDA ߢߢ: 6AIJ 5KEJAߣߣ, ?EH?lAI =n@ =H?I =HA @H=Mn =>oKJ D=lB =I B=IJ En &½ =I En : HAlA=IA " ?omFElA@ MEJD gcc BoH AGKEL=lAnJ D=H@M=HA, FHo>=>lO >A?=KIA JDAO =HA ?KHHAnJlO EmFlAmAnJA@ En = KIAH lE>H=HO >O ?=llI Jo JDA point FHEmEJELA. LEnA @H=M­ EnC IFAA@ EI =>oKJ AGK=l >AJMAAn JDA JMo IOIJAmI. 7nE?o@A JANJ EI @H=Mn =>oKJ JDA I=mA IFAA@ >O &½ =I )5+11 JANJ >O :, =n@ JDA bitblt JAIJ EI HKnI BoKH JEmAI B=IJAH BoH &½. 6DAIA nKm>AHI L=HO AnoKCD Jo ?=KJEon =C=EnIJ @H=MEnC IMAAFEnC ?on?lKIEonI, >KJ JDAOIKCCAIJJD=J&½ߣI=H?DEJA?JKHA@oAInoJFAn=lEzAEJIFAHBoHm=n?A. .En=llO,&½>ooJI EnKn@AH=IA?on@=n@?HA=JAI=nAMMEn@oM=FF=HAnJlOEnIJ=nJ=nAoKIlO.

An example 0AHA EI = ?omFlAJA FHoCH=m JD=J HKnI Kn@AH &½. 1J FHEnJI JDA IJHEnC "hello world" MDAHALAH JDA lABJ moKIA >KJJon EI @AFHAIIA@, =n@ ANEJI MDAn JDA HECDJ moKIA >KJJon EI @AFHAIIA@. 1J =lIo FHEnJI JDA IJHEnC En JDA ?AnJAH oB EJI MEn@oM, =n@m=EnJ=EnIJD=JIJHEnCMDAnJDAMEn@oMEIHAIEzA@. ­&­

#include #include #include

void ereshaped(Rectangle r) { Point p;

screen.r = r; bitblt(&screen, screen.r.min, &screen, r, Zero); /* clear */ p.x = screen.r.min.x + Dx(screen.r)/2; p.y = screen.r.min.y + Dy(screen.r)/2; p = sub(p, div(strsize(font, "hello world"), 2)); string(&screen, p, font, "hello world", S); }

main(void) { Mouse m;

binit(0, 0, 0); /* initialize graphics library */ einit(Emouse); /* initialize event library */ ereshaped(screen.r); for(;;){ m = emouse(); if(m.buttons & RIGHTB) break; if(m.buttons & LEFTB){ string(&screen, m.xy, font, "hello world", S); /* wait for release of button */ do; while(emouse().buttons & LEFTB); } } } 6DA ?omFlAJA lo=@A@ >En=HO EI = lEJJlA oLAH $K >OJAI on = $& . 6DEI FHoCH=m IDoKl@ >A ?omF=HA@ Jo JDA IEmEl=H onAI En JDA AN?AllAnJ F=FAH >O 4oIAnJD=l [4oIA&&]. 6DA ?KH­ HAnJ FHoCH=m @oAI moHA: EJ =lIo AmFloOI JDA moKIA. 6DA ?lKmIEAIJ F=HJ EI ereshaped, = BKn?JEon MEJD = knoMn n=mA JD=J EI ?=llA@ BHom JDA ALAnJ lE>H=HO MDAn­ ALAH JDA MEn@oM EI HAID=FA@ oH moLA@, =I EI @EI?oLAHA@ EnAlAC=nJlO >KJ =@AGK=JAlO >O = IFA?E=l ?=IA oB = moKIA mAII=CA. 5EmFlA Io-?=llA@ ANFoIA ALAnJI =HA noJ ALAnJI =J =ll En &½; JDA l=OAH lE>H=HO J=kAI ?=HA oB JDAm JH=nIF=HAnJlO. 6DA lAIIon oB JDEI FHoCH=m, MEJD @ABAHAn?A Jo 4oIAnJD=l, EI JD=J EB JDA MEn@oM IOIJAm EI ?lA=nlO @AIECnA@ = JoolkEJ IDoKl@>AKnnA?AII=HOBoHIEmFlAJ=IkI.

Status )I oB '' , &½ EI En HACKl=H @=ElO KIA >O =lmoIJ =ll JDA $ FAoFlA En oKH HAIA=H?D ?AnJAH. 5omA oB JDoIA FAoFlA KIA EJ Jo =??AII 2l=n ' EJIAlB; oJDAHI KIA EJ =I = BHonJ An@ JoHAmoJA7N1:IOIJAmI,mK?D=IonAMoKl@KIA=n:JAHmEn=l. 5omA JDEnCI =>oKJ &½ m=O ?D=nCA. 1J MoKl@ >A nE?A EB EJI ?=F=>ElEJEAI MAHA moHA A=IElO =??AIIE>lA BHom JDA IDAll. ) ?omF=nEon Jo JDEI F=FAH [2EkA' ] FHoFoIAI onA M=O Jo @o JDEI, >KJ JD=J @oAI noJ En?lK@A =nO CH=FDE?I BKn?JEon=lEJO. 2AHD=FI = JANJK=l LAH­ IEon oB JDA /dev/bitblt BElA EI = M=O Jo FHo?AA@; JD=J MoKl@ =lloM, BoH AN=mFlA, FHoCH=mIJo@H=MCH=FDI@EHA?JlO. +=n JDEI IJOlA oB MEn@oM IOIJAm >A >KElJ on oJDAH oFAH=JEnC IOIJAmI? ) m=joH F=HJ oB JDA @AIECn oB &½ @AFAn@I on EJI IJHK?JKHA =I = BElA IAHLAH. 1n FHEn?EFlA JDEI ?oKl@ >A ­'­

@onA BoH =nO IOIJAm JD=J IKFFoHJI KIAH FHo?AIIAI JD=J IAHLA BElAI, IK?D =I =nO IOIJAm HKnnEnC N.5 oH ).5 [5Kn&', K=z=&%]. OnA HAGKEHAmAnJ, DoMALAH, EI &½ߣI nAA@ Jo HAIFon@ Jo EJI ?lEAnJIߣ HAGKAIJI oKJ oB oH@AH: EB onA ?lEAnJ HA=@I /dev/cons En = MEn­ @oM MEJD no ?D=H=?JAHI Jo >A HA=@, oJDAH ?lEAnJI IDoKl@ >A =>lA Jo FAHBoHm 1/O En JDAEH MEn@oMI, oH ALAn JDA I=mA MEn@oM. )noJDAH ?onIJH=EnJ EI JD=J JDA &½ BElAI =HA lEkA @ALE?AI, =n@ mKIJ noJ >A ?=?DA@ >O JDA ?lEAnJ. N.5 ?=nnoJ DonoH JDAIA HAGKEHAmAnJI; ).5 m=O >A =>lA Jo. OB ?oKHIA, oJDAH EnJAHFHo?AII ?ommKnE?=JEon mA?D=nEImI IK?D =I Io?kAJI ?oKl@ >A KIA@ =I = >=IEI BoH = MEn@oM IOIJAm. OnA m=O ALAn =HCKA JD=J :ߣI mo@Al BEJI EnJo JDEI oLAH=ll I?DAmA. 1J m=O FHoLA A=IO =n@ MoHJDMDElA Jo MHEJA = Im=ll &½-lEkA IOIJAm BoH ?ommAH?E=l 7N1: IOIJAmI Jo @AmonIJH=JA JD=J EJI mAHEJI ?=n >A Mon EnIOIJAmIoJDAHJD=n2l=n'.

Conclusion 1n ?on?lKIEon, &½ KIAI =n KnKIK=l =H?DEJA?JKHA En ?on?AHJ MEJD JDA BElA-oHEAnJA@ EnJAHFHo?AII ?ommKnE?=JEon oB 2l=n ' Jo FHoLE@A nAJMoHk->=IA@ EnJAH=?JELA CH=FDE?I Jo ?lEAnJ FHoCH=mI. 1J @AmonIJH=JAI JD=J ALAn FHo@K?JEon-GK=lEJO MEn@oM IOIJAmI =HA noJ EnDAHAnJlOl=HCAoH?omFlE?=JA@=n@m=O>AIEmFlAJoKIA=n@JoFHoCH=m.

Acknowledgements 0AlFBKl ?ommAnJI on A=HlO @H=BJI oB JDEI F=FAH MAHA m=@A >O ,oKC *lAMAJJ, 5JK .Al@m=n, +DHEI .H=IAH, *HE=n KAHnECD=n, ,AnnEI 4EJ?DEA, =n@ 2DEl 9EnJAH>oJJom. &½ߣI IKFFoHJ BoH ?oloH M=I =@@A@ >O 0oM=H@ 6HE?kAO. M=nO oB JDA E@A=I lA=@EnC Jo &½ MAHA JHEA@ oKJ En A=HlEAH, IomAJEmAI lAII IK??AIIBKl, FHoCH=mI. 1 MoKl@ lEkA Jo JD=nk JDoIA KIAHIMDoIKBBAHA@JDHoKCDIomAoBmOFHALEoKI%½MEn@oMIOIJAmI.

References [,KBB'] 6om ,KBB, ߢߢ4? - ) 5DAll BoH 2l=n ' =n@ 7N1: IOIJAmIߣߣ, 2Ho?. oB JDA 5KmmAH '' 7K77/ +onB., Lon@on, JKlO, '', FF. -!!, HAFHEnJA@, En = @EBBAHAnJ BoHm, En JDEI LolKmA. [.=H&'].=HJoom=nOFAoFlA,:6-4M ,M=II=?DKIAJJI1nIJEJKJAoB6A?DnoloCO, '&'. [/oI&$] J=mAI /oIlEnC =n@ ,=LE@ 4oIAnJD=l, ߢߢ) MEn@oM m=n=CAH BoH >EJm=FFA@ @EI­ Fl=OI =n@ 7N1:ߣߣ, En MAJDo@oloCO oB 9En@oM M=n=CAmAnJ, A@EJA@ >O ..4.). 0oFCoo@ AJ =l.,5FHEnCAH, '&$. [K=z=&%] MEkA K=z=H, ߢߢ5On?DHonEz=JEon =n@ +=?DEnC EIIKAI En JDA )n@HAM .ElA 5OIJAmߣߣ, 6A?D. 4AFJ. +M7-16+-#&, 1nBoHm=JEon 6A?DnoloCO +AnJAH, +=HnACEA MAllon 7nELAHIEJO, JKnA, '&%. [KEll&"] 6om KEllE=n, ߢߢ2Ho?AIIAI =I .ElAIߣߣ, 75-N1: 5KmmAH +onB. 2Ho?., 5=lJ L=kA +EJO JKnA, '&". [2EkA&!] 4o> 2EkA, ߢߢ6DA *lEJ: ) MKlJEFlANA@ /H=FDE?I 6AHmEn=lߣߣ, *All L=>I 6A?D. J., 8$!, &,F=HJ ,FF. $%- $! . [2EkA&!=] 4o> 2EkA, ߢߢ/H=FDE?I En OLAHl=FFEnC *EJm=F L=OAHIߣߣ, 6H=nI. on /H=FD., 8ol ,  , !#- $,HAFHEnJA@En2Ho?.51//4)20ߣ&!,FF.!! -!#$. [2EkA&%] 4o> 2EkA, ߢߢ6DA 6ANJ -@EJoH samߣߣ, 5oBJM. - 2H=?. =n@ -NF., NoL '&%, 8ol %  ,FF.& !-&"#,HAFHEnJA@EnJDEILolKmA. [2EkA&&] 4o> 2EkA, ߢߢ9En@oM 5OIJAmI 5DoKl@ *A 6H=nIF=HAnJߣߣ, +omF. 5OI., 5KmmAH '&&,8ol !,FF. %'- '$. [2EkA&'] 4o> 2EkA, ߢߢ) +on?KHHAnJ 9En@oM 5OIJAmߣߣ, +omF. 5OI., 5FHEnC '&', 8ol  , FF. !!- #!. [2EkA' ] 4o> 2EkA, ߢߢ) MEnEm=lEIJ /lo>=l 7IAH 1nJAHB=?Aߣߣ, 75-N1: 5KmmAH +onB. 2Ho?., N=IDLEllA,JKnA, '' . ­ ­

[2EkA' ] 4o> 2EkA, ,=LA 2HAIoJJo, KAn 6DomFIon, 0oM=H@ 6HE?kAO, =n@ 2DEl 9EnJAH>oJ­ Jom, OFAH=JEnC 5OIJAmI 4ALEAM 8ol %,  , )FH ''!, FF. % -%$ HAFHEnJA@ BHom 2Ho­ ?AA@EnCI oB JDA #JD )+M 51/O25 -KHoFA=n 9oHkIDoF, MonJ 5=EnJ-ME?DAl, '' , 2=FAH nº !",=n@HAFHEnJA@EnJDEILolKmA. [2EkA'"] 4o> 2EkA =n@ KAn 6DomFIon, ߢߢ0Allo 9oHl@ oH š±»·¼­Á± ºÌüµ oH ߣߣ,75-N1:9EnJAH+onB.2Ho?.,5=n,EACo,J=n, ''!,HAFHEnJA@EnJDEILolKmA. [2L4&#] 4o> 2EkA, *=HJ Lo?=nJDE =n@ JoDn 4AEIAH, ߢߢ0=H@M=HA/5oBJM=HA 6H=@AoBBI BoH *EJ­ m=F/H=FDE?IonJDA*lEJߣߣ,5oBJM.-2H=?.=n@-NF.,.A> '&#,8ol # ,FF. ! - # . [2HAI'] ,=LE@ L. 2HAIoJJo =n@ ,AnnEI M. 4EJ?DEA, ߢߢ1nJAHFHo?AII +ommKnE?=JEon En JDA NEnJD -@EJEon 7nEN 5OIJAmߣߣ, 5oBJM. - 2H=?. =n@ -NF., JKnA '', 8ol  5 , FF. 5 /!- 5 / %. [4oIA&&] ,=LE@ 4oIAnJD=l, ߢߢ) 5EmFlA : +lEAnJ 2HoCH=m -oH- 0oM D=H@ ?=n EJ HA=llO >A JoMHEJAߢߢ0Allo,9oHl@ߣߣ?ߣߣ,75-N1:9EnJAH+onB.2Ho?.,,=ll=I,J=n, '&&,FF. '- " . [5?DA&$] 4o>AHJ 9. 5?DAEBlAH =n@ JEm /AJJOI, ߢߢ6DA : 9En@oM 5OIJAmߣߣ, )+M 6H=nI. on /H=FD.,8ol# ,FF.%'- '. [5Kn&'] 5Kn ME?HoIOIJAmI, N.5: NAJMoHk BElA IOIJAm FHoJo?ol IFA?EBE?=JEon, 4.+ '", NAJMoHk1nBoHm=JEon+AnJAH,5411nJAHn=JEon=l,M=H?D, '&'.