//Sun-Proms.bcpl--Sun3MBEthernetboardProms//LastmodifiedFebruary10,19844:00PMbyBoggs//Sun-Rev-B&CadLink-Rev-0boardsrequireahardwarechange:(TXMultibus/Fifointerlock)//isolateU308pin4;connectittoU308pin25(P.Read/)//Otherknownhardwarefixes://isolateU511pin4;connectittoU111pin12(T.AbortAck/)//isolateU513pin2;connectittoU317pin9(TX.Jam)external[Ws;OpenFile;Puts;Closes;Allocate;Free;sysZone]static[memory;mbFile]structureString[lengthbyte;char^1,1byte]manifest[high=1;low=0]//-----------------------------------------------------------------------------------------letSunProms()be//-----------------------------------------------------------------------------------------[mbFile=OpenFile("Sun-Proms.mb")DoMemory("TX",256,8,TX)DoMemory("NewTX",256,8,NewTX)DoMemory("Ctrl",32,40,Ctrl)Puts(mbFile,0)//0=endoffileCloses(mbFile)]//-----------------------------------------------------------------------------------------andDoMemory(name,nAddr,nData,Proc)be//-----------------------------------------------------------------------------------------//nAddrisnumberofaddresses//nDataisnumberofoutputbits[Ws("*N");Ws(name)Puts(mbFile,4)//4=definememorymemory=memory+1Puts(mbFile,memory)Puts(mbFile,nData)ifname>>String.lengthgr1thenfori=1toname>>String.length-1by2doPuts(mbFile,name>>String.char^ilshift8+name>>String.char^(i+1))Puts(mbFile,(name>>String.length&1)eq0?0,name>>String.char^(name>>String.length)lshift8)Puts(mbFile,2)//2=setcurrentmemoryPuts(mbFile,memory)Puts(mbFile,0)//locationcounterpï_,îâîÇ î¼î3î î @î#î(¨î,Ÿï]…îµîšîžî{î xî"µî&î)Žî,:î.6ï[Ýîµîšî¬îD î$î(|î-Eî.nî4wî9™ïZ6îµ îÍ ïXŽîµîîbîî‹î9î#Pî$¦î&Uî* î,~î.cïVçîµîšî‘îî ïU@îµîîbîî‹î9î#Pî$¦î&Uî* î,~î.c ïS˜îµîîbîî‹î9î#Pî$¦î&Uî* î,~î-³ïPIîµî÷îÞîÁîXî"áî'©î-…î19î6†ïLúîµî>î&î îÕïI¬îµîrîŠîrî«î"5î'®î*¾ïF]îµîDî+îQî6îäî…î!jî"žïCîµð[ïAfîµî± î;ï?¿îµð[ï>îµïî"÷ï0Üîµ ï/5îµï+æîµð[ï*>îµîl îíî"ªî'&î*Ðï(—îµð[ï&ðîµîšîÿîkî—îPï%Hîµîšî¾î)îVîî"�ï#¡îµï!ùîµî¾ïªîµ îÚî î¢î‡î"Àïîµî"îîtï\îµ îÚï´îµ îÚï îµîî×î�î ÅïeîBîîfîLî€î/î'î)î*Jï¾îÏ îôî'Ÿî+î,Rî.7ïîµ îÚî%î&­î([î*Kî,ïoî9ð'î)±î-/ï îµ îÚî î¢î‡î ¤î%mï yîµ îÚï Ñîµ îÚî î ¤ÑTVm$ü2letdata=Allocate(sysZone,(nData+15)/16)foraddr=0tonAddr-1do[Puts(mbFile,1)//1=memorycontentsPuts(mbFile,0)//sourcelinenumberProc(addr,data)fori=0to(nData+15)/16-1doPuts(mbFile,data!i)]Free(sysZone,data)] //-----------------------------------------------------------------------------------------andTX(addr,data)be//-----------------------------------------------------------------------------------------[structureAddr:[blankbit8statebit2timeoutbitinhibitbitreadybitwrdbitjambitcarrierbit]structureData:[nextStatebit2notIdlebitidlebitblankbitloadbitnotGobitgobitblankbit8]manifest[stateIdle=0stateData=1stateCRC=2]letstate=addr<ï6îµî±î"îî$î%óï �îµî±î{î`î"¶î$¦ï èîµî±î~îc î ºî"«ï @îµî±îgîL î �î"~TVm$o3letcarrier=addr<>Data.nextState=nextStatedata>>Data.notIdle=idle?low,highdata>>Data.idle=idle?high,lowdata>>Data.load=load?high,lowdata>>Data.notGo=go?low,highdata>>Data.go=go?high,low] //-----------------------------------------------------------------------------------------andNewTX(addr,data)be//-----------------------------------------------------------------------------------------[structureAddr:[blankbit8statebit2timeoutbitinhibitbitreadybitwrdbitqïg/îEÉpï_,îµî±î îðî#Ôî%Åï[Ýîµî±î¯î•ïZ6îµî±îÀî'îîüî„î# ïXŽîµïVçîµîqî¢ïU?îBïS˜îBî0 ïQðîÏïPIîÏî/î¤îoîüî Vî#|î&3î(ïN¡îÏî/îúî’îî aî#‡î)†î+kî1uî7ïLúîÏïKRîÏïI«îBî0 ïHîÏïF\îÏî¿î¤îïDµîÏî/î¤î[îóîÀîXî##î&Iî)Xî+=ïC îÏî/îýî”îî ,î&*î(ïC î.¶î2Îî4‡ïAfîÏî/îýî”î îÔî!úî'ùî)ÞïAfî0Èî5-ï?¾îÏî/îæîsî‰î ¯î&®î(“ï?¾î.¶ ï>îÏïîBîwî\ïï5Ñîµî±î"îî$î%óï4*îµî±î{î`î"¶î$¦ï2‚îµî±î~îc î ºî"«ï0Ûîµî±îgîL î �î"~ï/4îµî±î îðî#Ôî%Åï+åîµî±î¯î•ï*=îµî±îÀî'îîüî„î# ï(–îµï&îîµîqî¢ï%GîBï#ŸîBî0 ï!øîÏï PîÏî/îúî’îî aî!ùî$nî(ßî,î2î3éî9óï©îµïîÏïZîÏï³îBî0 ï îÏïdîÏî¿î¤îï¼îÏî/î¤î[îóîhî!Ùî#qî&>î'Öî+¡î.Çî1Öî3»ïîÏî/îýî”îî ,î&*î(ïî.¶î2Îî4‡ïmîÏî/îýî”î îÔî!úî'ùî)Þïmî0Èî5-ïÆîÏî/îæîsî‰î ¯î&®î(“ïÆî.¶ ïîÏï wîÏï ÏîBî0ùTVm$¾5[go=notjamifwrdthennextState=stateIdle//endofCRCifjam%timeoutthennextState=stateIdle//catastropheendcase]default:nextState=stateIdle]data>>Data.nextState=nextStatedata>>Data.notIdle=nextStatenestateIdle?low,highdata>>Data.idle=nextStateeqstateIdle?high,lowdata>>Data.done=(nextStateeqstateIdle¬jam)?low,highdata>>Data.load=load?high,lowdata>>Data.abrt=jam?low,highdata>>Data.go=go?high,low] //-----------------------------------------------------------------------------------------andCtrl(addr,data)be//-----------------------------------------------------------------------------------------[structureAddr:[blankbit11Instrbit5]structureData:[BufWEbitRBufCEbit//lowtrueTBufCEbit//lowtrueCReadbit//lowtruePWritebit//lowtruePReadbit//lowtrueTWritebit//lowtrueRReadbit//lowtrueRxOverflowbitTxTimeoutbitRxInterruptbitQEmptybitAckbit//lowtrueResumebitCarryInbitDestHighbitDestLowbit2Functionbit3Sourcebit3BRegbit4ARegbit4Branchbit3qïg/îEÉpï_,îÏï]…îÏî¿î¤îï[ÝîÏî/îýî#î "î"ï[Ýî*”î.¬î0eïZ6îÏî/îæîsî‰î ¯î&®î(“ïZ6î.¶ ïXŽîÏïVçîÏïU?îBîcîbîHïS˜îBïPIîµîÆî«ïN¡îµî�îuî#sî%d î+xî.qïLúîµî~îcî!bî#R î)fî,äïKRîµî9î î"—î$‡î* î+¤î.î1Øî4ÑïI«îµîÖî»îYî"×ïHîµîªî�îÕî!ÎïF\îµ î·îœîî ™ïDµîµïC îµïAfîµð[ï?¾îµîl îÎîLï>îµð[ïîB îÅîªïîBî'îï(—îBîKî0ï&ïîBîôîÙï%HîBî)îï#¡îBîÛîÁï!ùîB îîýï RîB îÖî»ïªîBîãîÈïîBîîÿï´îBî'îŠï îBîàîÆïeîBîîæï¾îBîˆîmïîBîRî7ïoîBîîþïÇîBîëîÑï îBîsîXï xîBî<î!ï ÑîBî“îx TVm$�7timer=9random=10 //BranchConditionCodes(CC)Never=0NonZero=1Zero=2NoCarry8=3Positive=4Negative=5Equal=6Always=7//2901FunctionsRplusS=0SminusR=1RminusS=2RorS=3RandS=4NotRandS=5RxorS=6RxnorS=7//2901SourcesAQ=0AB=1ZQ=2ZB=3ZA=4DA=5DQ=6DZ=7//2901DestinationsQReg=0Nop=1RamA=2RamF=3RamQD=4RamD=5RamQU=6RamU=7]letNext,Branch=0,NeverletCarryIn,Function,Source=nil,nil,nilletAReg,BReg,Destination=nil,nil,nilletResume,Ack,QEmpty=false,false,falseletRxInterrupt,TxTimeout,RxOverflow=false,false,falseletRRead,TWrite,PRead,PWrite,CRead=false,false,false,false,falseletTBufCE,RBufCE,BufWE=false,false,false qïg/îEÉpï_7îBîëîÑï]�îBîbîHï[èîµïZAîBî'îåîgî"•ïX™îBîhîMïVòîBî7îïUJîBî“îxïS£îBî±î–ïQûîBîbîGïPTîBî îñïN¬îBîDî)ïMîBî îîïI¶îBî'îmïHîBî îðïFgîBî5îïD¿îBî5îïCîBîÖî»ïApîBîÉî®ï?ÉîBîîûï>!îBî†îkïîBîíîÓï-—îBîùîÞï+ïîBîÍî²ï( îBî'îm ï&ùîBî8îï%QîBîkîPï#ªîBî¦î‹ï"îBî†îkï [îBîÑî¶ï³îBî½î¢ï îBîÑî¶ïdîBî½î¢ï½îBïnîµî±îtî2îî¤ïÇîµî±î4îtî"î#ëî&Uî(¾ïîµî±îôî î!vî#[î%Äî(.ïxîµî±îVî‘î î"î%�î)ïÐîµî± î« î!* î(ëî*Ðî.Xî1àï)îµî±î±îÑî šî%¤î*Aî,&î/®î37î6¿î:Gï �îµî±î�îsî"hî$Mî'Õî+]ï ÚîµSTVm$¼8switchonaddr<ïKSîÏîºîŸî·î ‚î"gî%Ú î-9î/ïI«îÏî:îïHîÏïF]îÏïDµîBî0ïDµîî Ãî"PïCîÏïAfîÏîúîßîùî"áî$Æî)Æî.Yî0>ï?¿îÏîºîŸî·î ‚î"gî&' î-†î/kï>îÏî:îïï4+îÏîºîŸî·î ‚î"gî%ð î-Oî/4ï2ƒîÏî:îï0ÜîÏï/5îÏï-�îµï+æîBî0ï+æîî';î*kî.*ï*>îµ îÏï(—îÏï&ðîÏîúîßîùî"áî$Æî+2î/Äî1©ï%HîÏîºîŸî(îóî!Øî%˜ î,÷î.Üï#¡îÏ îèîÊî¯î"ëï!ùîÏî�îrï RîÏî:îïªîÏïîÏï\îBî0ï\î-î#pî$üî)¯î-éî/vï´îÏï îÏîúîßîùî"áî$Æî)Æî.Yî0>ïeîÏîºîŸîïî ºî"Ÿî&ï î.Nî03ï¾îÏî:îïîÏïoîÏïÈîBî0ïÈî- î'ôî)�ï îÏï yîÏîúîßîùî"áî$Æî(Óî-eî/Jï ÑîÏîºîŸî·î ‚î"gî&Ÿ î-þî/ã�TVm$9RBufCE,BufWE,CRead=true,true,trueNext=RxEnd3endcase]caseRxEnd3://rBase_rPut;RxBuf[rPut]_Latch;QEmpty[CarryIn=low;Function=RorS;Source=ZAAReg=rPut;BReg=rBase;Destination=RamFRBufCE,BufWE,CRead=true,true,trueQEmpty=trueNext=RxEnd4endcase]caseRxEnd4://rPut_rPut+1;Return[CarryIn=high;Function=RplusS;Source=ZBAReg=spare;BReg=rPut;Destination=RamFBranch=Alwaysendcase] caseRxReady://Test(rPut-rGet)mod2^11;SetRxOverflow(EQ);Return(EQ);Ack[CarryIn=low;Function=RminusS;Source=ABAReg=rPut;BReg=rGet;Destination=NopRxOverflow,Ack=true,trueBranch=EqualNext=RxReady1endcase]caseRxReady1://count_count+1[CarryIn=high;Function=RplusS;Source=ZBAReg=spare;BReg=count;Destination=RamFNext=RxReady2endcase]caseRxReady2://RxBuf[rPut]_Rx;rPut_rPut+1;Return[CarryIn=high;Function=RplusS;Source=ZAAReg=rPut;BReg=rPut;Destination=RamARBufCE,BufWE,RRead=true,true,trueBranch=Alwaysendcase]casePortReadReq://Port_RxBuf[rGet][CarryIn=low;Function=RorS;Source=ZBAReg=spare;BReg=rGet;Destination=NopRBufCE,PWrite=true,trueqïg/îEÉpï_,îÏîÁî î"ªî$�î'Ëî+ï]…îÏî:îï[ÝîÏïZ6îÏïXŽîBî0ïXŽî-î#Mî$Úî(c î0î1§î6ïVçîÏïU?îÏîúîßîùî"áî$Æî(Óî-eî/JïS˜îÏîºîŸî(îóî!Øî& î-oî/TïQñîÏîÁî î"ªî$�î'Ëî+ïPIîÏî^îCïN¢îÏî:îïLúîÏïKSîÏïI«îBî0ïI«î-î"žî$+î)ÅïHîÏïF\îÏîúîßî~î#fî%Kî*Žî/ î1ïDµîÏîºîŸî·î ‚î"gî%ð î-Oî/4ïCîÏî�îrïAfîÏï?¿îÏï>îµïîÏï(—îÏîúîßî~î#fî%Kî*Žî/ î1ï&ïîÏîºîŸî·î ‚î"gî&· î.î/ûï%HîÏî:îï# îÏï!ùîÏï QîBî0ï Qî î%4î&Áî)xî,ˆî.î3¯ïªîÏïîÏîúîßî~î#fî%Kî*Žî/ î1ï[îÏîºîŸî(îóî!Øî%a î,Àî.¥ï´îÏîÁî î"µî$šî'Öî+ï îÏî�îrïeîÏï½îÏïoîBî0 ïoî-î"’î$ ïÇîÏï îÏîúîßîùî"áî$Æî(Óî-eî/Jï xîÏîºîŸî·î ‚î"gî&' î-†î/kï ÑîÏîÁîsîXî"”æTVm$&10Next=PortReadReq1endcase]casePortReadReq1://Test(rGet-Rbase)mod2^11;ClearRxInterrupt(EQ);Return(EQ)[CarryIn=low;Function=RminusS;Source=ABAReg=rGet;BReg=rBase;Destination=NopRxInterrupt=trueBranch=EqualNext=PortReadReq2endcase]casePortReadReq2://rGet_rGet+1;Goto(Idle)[CarryIn=high;Function=RplusS;Source=ZBAReg=spare;BReg=rGet;Destination=RamFNext=Idleendcase] casePortWriteReq://Test(tPut);TxBuf[tPut]_Port;Return(Z);Resume(PortStart)[CarryIn=low;Function=RorS;Source=ZBAReg=PortStart;BReg=tPut;Destination=NopTBufCE,BufWE,PRead=true,true,trueResume=trueBranch=ZeroNext=PortWriteReq1endcase]casePortWriteReq1://tPut_tPut-1;Return(NZ);Goto(TxStart);Resume(PortStart3)[CarryIn=low;Function=SminusR;Source=ZBAReg=PortStart3;BReg=tPut;Destination=RamFResume=trueBranch=NonZeroNext=TxStartendcase]casePortStart://tBase_DataBus[CarryIn=low;Function=RorS;Source=DZAReg=spare;BReg=tBase;Destination=RamFNext=PortStart1endcase]casePortStart1://tPut_tBase[qïg/îEpï_,îÏî:î ï]…îÏï[ÝîÏïZ6îBî0 ïZ6î-î*_î-�î1OïXŽîµ ïVçîÏïU@îÏîúîßîùî"áî$Æî+2î/Äî1©ïS˜îÏîºîŸî_î )î"î&G î-¦î/‹ïQñîÏ îqîVïPIîÏî�îrïN¢îÏî:î ïLúîÏïKSîÏïI¬îBî0 ïI¬î-î"Ôî$aî*2 ïHîÏïF]îÏîúîßî~î#fî%Kî*Žî/ î1ïDµîÏîºîŸî·î ‚î"gî&' î-†î/kïCîÏî:îïAfîÏï?¿îÏï>îµïî$™î&&î*Ä î2í ï(—îµï&ðîÏï%HîÏîúîßîùî"áî$Æî+2î/Äî1©ï#¡îÏîºîŸ î›î#fî%Kî(¾ î0î2ï!ùîÏîîï RîÏî�îrï«îÏî:îïîÏï\îÏï îBî0 ï îî!&î"³ïeîÏï¾îÏîúîßîùî"áî$Æî(Óî-eî/JïîÏîºîŸî·î ‚î"gî&Š î-éî/ÎïoîÏî:î ïÈîÏï îÏï yîBî0 ï yîî wî"ï Òî϶TVm$ä11CarryIn=low;Function=RorS;Source=ZAAReg=tBase;BReg=tPut;Destination=RamFNext=PortStart2endcase]casePortStart2://mask_0(maskisinQregister)[CarryIn=low;Function=RandS;Source=ZQAReg=spare;BReg=spare;Destination=QRegNext=PortStart3endcase]casePortStart3://retry_0[CarryIn=low;Function=RandS;Source=ZBAReg=spare;BReg=retry;Destination=RamFNext=PortStart4endcase]casePortStart4://timer_0;Return[CarryIn=low;Function=RandS;Source=ZBAReg=spare;BReg=timer;Destination=RamFBranch=Alwaysendcase] caseTxStart://tGet_tBase;Goto(TxReady)[CarryIn=low;Function=RorS;Source=ZAAReg=tBase;BReg=tGet;Destination=RamFNext=TxReadyendcase]caseTxReady://Tx_TxBuf[tGet];tGet_tGet-1;Ack;Goto(Idle)[CarryIn=low;Function=SminusR;Source=ZAAReg=tGet;BReg=tGet;Destination=RamATBufCE,TWrite=true,trueAck=trueNext=Idleendcase]caseTxAbort://mask_ShiftLeft(mask);Ack[CarryIn=low;Function=RorS;Source=ZQAReg=spare;BReg=spare;Destination=RamQUAck=trueNext=TxAbort1endcaseqïg/îEpï_,îÏîúîßîùî"áî$Æî(Óî-eî/Jï]…îÏîºîŸîÂî �î"rî%å î-Dî/)ï[ÝîÏî:î ïZ6îÏïXŽîÏïVçîBî0 ïVçîî!î"�ïVçî$aî(mî)Ùî+‡î-ïU?îÏïS˜îÏîúîßîùî"áî$Æî)Æî.Yî0>ïQðîÏîºîŸî·î ‚î"gî& î-Þî/ÃïPIîÏî:î ïN¡îÏïLúîÏïKRîBî0 ïKRîî Îî"[ïI«îÏïHîÏîúîßîùî"áî$Æî)Æî.Yî0>ïF\îÏîºîŸî·î ‚î"gî&2 î-‘î/vïDµîÏî:î ïC îÏïAfîÏï?¾îBî0 ï?¾îî!&î"³î$aï>îÏïï:ÈîÏîºîŸî·î ‚î"gî&Š î-éî/Îï9 îÏî�îrï7yîÏï5ÑîÏï4*îµï2‚îBî0ï2‚î î�î )î$L ï0ÛîÏï/4îÏîúîßîùî"áî$Æî(Óî-eî/Jï-ŒîÏîºîŸîÂî �î"rî& î-{î/`ï+åîÏî:îï*=îÏï(–îÏï%GîBî0ï%Gîî™î!& î)Vî,‡î.î2èî6D ï#ŸîÏï!øîÏîúîßîùî"áî$Æî+2î/Äî1©ï PîÏîºîŸîIî î!ùî%£ î-î.çï©îÏîŸîgîMî"‰ïîÏî±î–ïZîÏî:îï²îÏï îÏï¼îBî0ï¼îî!î"�î,êïîÏïmîÏîúîßîùî"áî$Æî(Óî-eî/JïÆîÏîºîŸî·î ‚î"gî& î-Þî/ÃïîÏî±î–ï wîÏî:îï ÏîÏ©TVm$ 12]caseTxAbort1://retry_random&mask;Return(NZ);Goto(TxStart)[CarryIn=low;Function=RandS;Source=AQAReg=random;BReg=retry;Destination=RamFBranch=NonZeroNext=TxStartendcase]caseIdle://random_random+1;Return(NCY8);Goto(TxTimer)[CarryIn=high;Function=RplusS;Source=ZBAReg=spare;BReg=random;Destination=RamFBranch=NoCarry8Next=TxTimerendcase] caseTxTimer://Test(tGet);Return(Neg)[CarryIn=low;Function=RorS;Source=ZBAReg=spare;BReg=tGet;Destination=NopBranch=NegativeNext=TxTimer1endcase]caseTxTimer1://timer_timer-1;Return(Z);SetTxTimeout(Z);Resume(TxTimer4)[CarryIn=low;Function=SminusR;Source=ZBAReg=TxTimer4;BReg=timer;Destination=RamFResume,TxTimeout=true,trueBranch=ZeroNext=TxTimer2endcase]caseTxTimer2://Test(retry);Return(Z)[CarryIn=low;Function=RorS;Source=ZBAReg=spare;BReg=retry;Destination=NopBranch=ZeroNext=TxTimer3endcase]caseTxTimer3://Retry_Retry-1;Return(NZ);Goto(TxStart)[CarryIn=low;Function=SminusR;Source=ZBAReg=spare;BReg=retry;Destination=RamFBranch=NonZeroNext=TxStartendcaseqïg/îEpï_,îÏï]…îBî0ï]…îî Îî"[î'|î)î- î5I ï[ÝîÏïZ6îÏîúîßîùî"áî$Æî)Æî.Yî0>ïXŽîÏîºîŸî9î"î#éî'³ î/î0øïVçîÏî�îrïU?îÏî:îïS˜îÏïQðîÏïN¡îBî0ïN¡î î Œî"î)Ä î3½ ïLúîÏïKRîÏîúîßî~î#fî%Kî*Žî/ î1ïI«îÏîºîŸî·î ‚î"gî( î/`î1EïHîÏî�îrïF\îÏî:îïDµîÏïC îÏïAfîµï?¾îBî0ï?¾î î$š ï>îÏï>Data.BufWE=BufWE?high,lowdata>>Data.RBufCE=RBufCE?low,highdata>>Data.TBufCE=TBufCE?low,highdata>>Data.CRead=CRead?low,highdata>>Data.PWrite=PWrite?low,highdata>>Data.PRead=PRead?low,highdata>>Data.TWrite=TWrite?low,highdata>>Data.RRead=RRead?low,highdata>>Data.RxOverflow=RxOverflow?high,lowdata>>Data.TxTimeout=TxTimeout?high,lowdata>>Data.RxInterrupt=RxInterrupt?high,lowdata>>Data.QEmpty=QEmpty?high,lowdata>>Data.Ack=Ack?low,highdata>>Data.Resume=Resume?high,lowdata>>Data.CarryIn=CarryIndata>>Data.DestHigh=Destinationrshift2data>>Data.DestLow=Destinationdata>>Data.Function=Functiondata>>Data.Source=Sourcedata>>Data.BReg=BRegdata>>Data.AReg=ARegdata>>Data.Branch=Branchdata>>Data.Next=Nextxor20b]qïg/îEpï_,îÏï]…îBî0ï]…îî ®î";î$bï[ÝîÏïZ6îÏîúîßîùî"áî$Æî*Jî.Üî0ÁïX�îÏîºîŸîIî î!ùî%£ î-î.çïVçîÏî�îrïU@îÏïS™îÏïQñîBïPJîµïN£îµî»î î##î&¡ïLûîµîaîFî$oî'hïKTîµî?î$î$,î'%ïI­îµîcîHî"tî%mïHîµîyî^î"Ÿî%˜ïF^îµî7îî"î%ïD·îµî�îtî"Ëî%ÄïCîµîoîTî"‹î%„ïAhîµî‡î l î(¼î,:ï?ÁîµîîîÓ î'‰î+ï>îµîiî N î(î+ýïï/7îµî‘îvï-�îµî²î—ï+éîµî…îjï*Aîµî2îîƒî!÷ï(šîµFTVm$Sÿ HELVETICAþŸÿLAURELþŸ/ Ä�yæ#@' + / 2j/53žt>Pÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[Ivy]Sun>Sun-Proms.bcpl"Friday, March 29, 1985 9:30 am PST