UsingtheInterlisp-DRS232FacilityFile:Library>RS232.teditCreated:Jan10,1983,byJonLWhiteRevised:2/21/83,8/18/83,3/12/84,and10/31/84RS232communicationspermituseofsynchronousaswellasasynchronousprotocols,throughasmallpieceofhardwareforserial/parallelconversioncalledaUSARToraUART;theformerisnecessarywhensynchronousprotocolsareused.Currently,Lisp'sonlyinterfaceistotheasynchronousprotocol,whichbasicallymeansthatan8-bit"character"maybesent,atanytime,throughtheUSART/UART,andsimilarlyan8-bit"character"maybereceivedatanytime.TherearethreeportsavailableunderInterlisp-DforRS232communications,twoofwhichareonthe1108,andoneonthe1100.Forthe1108,oneRS232portisstandard(dubbedtheTTYPort)andanotherisoptional(theE30option,dubbedtheRS232Cport);forthe1100,thereisanoptionalcircuitboardpluggedintotheparallelport.TheRS232CportisaUSART,terminatinginastandard25-pinconnectoratthebackofthe1108,andanextensioncableisprovidedwhichterminatesina25-pinmaleconnectorwiththestandardRS232signals;theTTYPortisaUART,whichterminatesina25-pinfemaleconnectoratthebackofthe1108andforwhichaspecialadaptorcablemustbebuilt(seebelow);thecircuitboardforthe1100terminatesina25-pinmaleconnectoronashortcable.TherearesomeknowndeficiencieswithrespecttotheRS232protocolsintheTTYPort;seethefootnoteonRS232MODEMHANGUPbelow.Portselectiononthe1108iscontrolledbytheglobalvariableRS232DLionTTYP,whichmayberesetatinitializationtime;currently,thedefaultvalueisT,meaning"usetheTTYPort",butlikelywiththenextrelease,itwillbeNILmeaning"usetheRS232Cport".Ascharactersarriveinattheinterfaceport,theyarestoredinLisp'smemoryinaringbuffer;andtheoutputfunctionswillbuffertheirdatainaringbufferuntilitisfull,oruntilexplicitrequestismadetoforceitout.Theoutputringbufferisone512-bytepage,andtheinputringbufferistwopages.[[Footnote:Twoglobalvariablescontroltheinitialsizesettingsforthesebuffers,soitispossibletotailorthesizetoaspecificapplication.]]However,whenusingtheRS232Cport,theinputbufferwillbesetto4,l8,or16pagesdependingonthelinespeed,soastoprovideatleastseveralsecondsworthofbufferingatfullspeed.[[Footnote:The1100hasnomicrocodesupportforbufferingthecharactersastheycomein,andsimilarlythe1108hasnolow-levelsupportfortheTTYPort;thustherearesomelimitationsusingthesetwoports--primarilythattheuserhastocalloneofthefunctionswhichwillupdatetheinputringbufferatintervalsfrequentenoughtoinsuregettingallthecharacters.]]The"host"name{RS232}isusableasadevice-orientedinterfacetotheRS232ports.Afterthedevicehasbeeninitialized,(GETSTREAM'{RS232})willreturnthisbi-directionalstream(whichisalsocachedintheglobalvariable\RS232SRTREAM).However,thestreaminterfaceisnotrecommendedexceptwhenusingtheRS232Cport[[Footnote:Inmostcases,thegeneralstream-orientedfunctionswillnotworkforthe1100orthe1108'sTTYPortbecausethetimetakenbygeneralI/Ooperationsisunpredictableandoftenquitelarge.However,atveryslowspeeds,thentheRS232BACKGROUNDprocessisturnedonforinput,theremaybesomeusabilityhere.]]InitializationBeforeusingtheRS232facility,itisnecessarytoinstallcertainparametersinUARTorUSARTbehindthechannel,andthefunctionRS232INITisprovidedforthatpurpose.(RS232INITBaudRateBitsPerSerialCharParityNoOfStopBitsModemControlPort)Theargumentscorrespondtothedesiredbaudrate(150,300,600,...9600aresupportedonallchannels,and19200issupportedontheRS232Cchannel),thenumberofbitsperserialcharacter(i.e.,7or8),whetherornottousethe8thbitasaparitybit(andifso,thenthisargumentmustbeeitherODDorEVEN),thenumberof"stop"bits(exceptinunusualcases,1thedefaultvalue,isusedhere),andthesettingofanymodemcontrollines(seedescriptionofRS232MODEMCONTROLbelow).ThePortargumentcurrentlyonlyselectsbetweentheTTYPortandthe(optional)RS232Cportonthe1108;ifanon-NILvalueissupplied,itmustbeeitherthelitatomTTYPortorRS232C;ifNIL,thentheglobalvariableRS232DLionTTYPisconsulted,withnon-NILmeaningtousetheTTYPortandNILmeaningtousetheRS232Cport.ThedefaultvaluesforallargumentsareBaudRate1200BitsPerSerialChar8ParityNILNoOfStopBits1ModemControlNILPortNIL{i.e.,consultsRS232DLionTTYP}CAUTION:thevalueofRS232INITasaglobalvariableisusedbythesedriverfunctionstocontainacopyofthisargumentlist;donotresetitatanytime.OnemayuseOPENSTREAMasanalternativetocallingRS232INITdirectly,butthenonemustthenbundleupalltheparametersintothePARAMETERSargument,wheretheformalparameter êq?€`½ îïpÿ êq?€`½îïî êïg_pî ôïbhî  ïbhî ôïaTî  î Lî øî ¤î Pî üî¨îTîî¬îXîî°î\îî´î¼îl î#|î$(î(0î(Üî.èïaTî ôï`@î  ï`@î ôï_,îêîàî%Xï_,î ôï^îàî�î@îHîLî"¨î&°ï^î ôï]îîàîìîøî&î(´î.Àï]î ôï[ðî  ï[ðî ôïZÜî  ïZÜî ôïYÈî  ïYÈî ôïX´îêîò îî!ºî$jî&n î.~î0‚î3Þî5â î>ž îFîFïX´î ôïW îTî¬î´î¼îÀî Ìî#|î.< î5 î:Tî;¬î?´îA¸îCîGîIÈîIÈïW î ôïVŒî¨î¬îdîÀ î"Ðî)ˆî,8î0@î0ì î8Pî=î@`îGîIîIïVŒî ôïUxî øî¨ îdîî"$î(Üî,äî0@î2Dî6L î>\îA îCîGîIîIïUxî ôïTdî ¤î¬î î¼ î Ìî#|î*4î,8î0@ î8Pî;î=îCîEîGÄîGÄïTdî ôïSPî üî¨îTïSPî ôïR<î  ïR<î ôïQ(îêîòî¢îªî²î$jî(r î0‚î32î7:îAúîDªîF®îJ¶îJ¶ïQ(î ôïPî ¤î¨îXî`îîÀîÄîtî#|î$(î&Øî)ˆî-�î0@î4Hî7¤î9¨î?´îEîGÄîGÄïPî ôïOîî°îîî î#|î&,î+Œî0@î2ðî7¤î\î@`îA¸îFlîFlïMìî ôïLØ îîî`îlî î&Øî(Üî+Œî.èî0ìî3œî7¤î:Tî\ îGîJtîJtïHˆî ôïGtîTîXîîîÈî Ìî#|î)ˆî,8î.èî4ôî6øîBdîGîGÄîGÄïGtî ôïF`î Pîî î¼îî î%€î'„î*4î.èî4ôî?´îC¼îFlîHpîHpïF`î ôïELî üî îîîÈ î&,î(Üî.<î2Dî4Hî6Lî;¬î?îA¸îHpîHpïELî ôïD8î ¤îXî´îdîÀî Ìî"Ðî&,î(0î*àî0@î3œî6Lî;î?´ïD8î ôïC$î  ïC$î ôïBîêîî îRîî î!î#¾î*vî.~î1Úî4Šî9>î;Bî?öîDªîF®îHîHïBî ôï@üî Pî°î`îîÄî#|î&Øî+Œî/”î2ðî4ôî6Lî9¨î>\îBdîDhîFlîJtîJtï@üî ôï?èî øîî îlîpî Ìî"Ðî&Øî(Üî,8î,äî/”î4Hî7¤î\îA îGîGï?èî ôï>Ôî üî¬î\îdîÀîtî!xî"$î$Ôî)ˆî*4 î2Dî4ôî9¨î@`îEÀîHpîHpï>Ôî ôï=ÀîTî°î¼îlîtî%€î'„î)ˆî+Œî1˜î3œî8Pî;î>\î@`îA¸îGÄîGÄï=Àî ôï<¬ îî´îÀîî"$î$Ôî)ˆî-�î0@î4Hî8üî\îA îCîEîGÄîIÈîIÈï<¬î ôï;˜î øîî¸î¼îlîÈî#|î%€î'„î)ˆî.èî0ìî4ôî:Tî?´îC¼îEÀîEÀï;˜î ôï:„î¬î°î îÀîl î#|î$(î&Øî*4î,äî.èî5 î;î=°îDhîGîGï:„î ôï9p îXî\î¸îîÄîtî&,î(Üî,8î.èî0ìî7¤î=î?´îBdîHpîHpï9pî ôï8\î PîXîîd îtî#|î'„î*4î.<î0@î6øî:Tî=î@`îCîEîHpîHpï8\î ôï7Hî ¤î¨îXîîîtî$(î&Øî*àî.<î2ðî4ôî;¬îA¸îFlîHpîHpï7Hî ôï64î¨îî¸îh î"Ðî#|ï64î ôï5 î  ï5 î ôï4 îêîšîNîªî î!î%Âî'Æî)î3Þî:–î<šî?JîCRîHîH²îH²ï4 î ôï2øî üî¬î`îîl î$( î+Œî2Dî5 î:Tî=° îGÄîGÄï2øî ôï1äî¨î\î`î¼îpîtî"$î&Øî,äî7¤î8Pî>\îA îEÀîEÀï1äî ôï0Ðî¬î°î` îpî"$î%€î)ˆî,8î0ìî4H î\îA¸îFlîIîIï0Ðî ôï/¼îTîî Ìî$(î&Øî*4î,äî/”î2ðî4ôî7¤î\î?îEîGîJtîJtï.¨î ôï-”î Pî°î î¼î#|î(Üî*àî/”î1˜î4Hî8üî=î?´îA¸îEîEï-”î ôï,€î¬î î¸ï,€î ôï+lî  ï+lî ôï*Xî  ï*Xî ôï)Dî  ï)Dî ôï(0î  ï(0î ôï'îêîàîÖîÌî" î,Öï'î ôï&î  ï&î ôï$ôîêîžî¦îVî^î%î'î)î/Öî1Úî7:î<š îCþîFîI^îI^ï$ôî ôï#àî øîî´îdîpî î"Ðî(Üî/”î1˜î7¤î:Tî=°îC¼ï#àî ôï"Ìî  î L î°î¼î$Ôî)ˆ î2D î;î?ï"Ìî ôï!¸î ¤î\ îÀîÄîtî$Ôî(0î+Œî/”î2ðî6Lî7¤î8üî:Tî;î>\îA îGÄîIÈîIÈï!¸î ôï ¤î ¤î\î îîî"Ðî$Ôî'„î,8î2ðî5 î:Tî\ îEÀîIîIï,î ôïîTî´î¸îhîî!xî$(î&Øî,8î.<î0ìî3œî8PîWAITFORFINISH).(RS232BACKGROUNDON?PERIOD.ms)willinitiateabackgroundlow-levelprocess(yes,aPROCESS)whichwillservicetheUARTatleastonceeveryPERIOD.msmilliseconds(defaultvalue:16ms),and/orforceouttheoutputbufferasoftenaspossible.Thefirstargumentmustbeamong{OFF,INPUT,OUTPUT,BOTH,ON};OFFterminatesthisbackgroundactivity;OUTPUTcausesonlytheoutputbuffertobeforcedout;INPUTcausesonlytheperiodicservicetotheinputbuffer;andeitherONorBOTHcausesbothactivities.TheinputserviceisreallyonlyapplicabletotheportsotherthanRS232C,whichhasanindependentmechanismtoinsurethatcharactersaretransportedinatimelyfashionfromtheUARTtotheringbuffer.Forthe1100,andforthe1108'sTTYPort,aperiodof16millisecondsfortheinputservicetimeshouldgivetheappearanceofasynchronousbuffering,withoutdroppinganycharacters,whenusedatspeedsoflessthanabout600baud.Anon-NILvalueforPERIOD.mswillbecoercedtobeatleast16ms,andnotmorethan1000ms.InputFunctions(RS232PEEKBYTE)returnsthenextcharactersittingintheinputringbuffer,ifany;thehardwareportischeckedtoseeifanyinputcharactersarewaiting,andifsotheyaremovedintotheringbufferfirst.FortheportsotherthanRS232C,callingthisfunctionisagoodwaytoinsurethatcharactersaremoved,inatimelyfashion,fromtheUSART/UARTtotheinputringbuffer.Aswithany"peek"function,thereturnedbyteisnotremovedfromthestream.(RS232READBYTEWAIT?timerUnits)isthebasicinputfunction,whichwillreturneitherNILorafixpbetween0and255inclusive.Bothargumentsareoptional.Ifnocharacterisavailable,RS232READBYTEwillreturnNIL;butifWAIT?isafixp,thenitwillwaituptothatmanytimeunitsbeforereturning(possiblygettinganincomingcharacterinthemeantime);ifWAIT?isanyothernon-NILvalue,theitwillwait(possiblyforever)untilsomebytecomesintobereturned.Thesecondargumentdeterminesthelengthofa"timeunit";defaultismilliseconds,butalternativesareSECONDS,MILLISECONDS,andTICKS(whichistheinternalmachineclockunit,andvariesinvaluebetweenthe1100and1108--seesection14.6oftheInterlispReferenceManual"TimersandDurationFunctions").AswithRS232PEEKBYTE,anycalltothisfunctionwillupdatetheinputringbufferbeforedoinganythingelse.(RS232READWORDWAIT?timerUnits)Iftwobytescanbereadintheallotedtime,theyarecomposedintoa"word";thefirstbytecomprisesthehigh-order8bitsofa16-bitword,andthesecondbytecomprisesthelow-order8bits.(RS232READLINEWAIT?timerUnitsOLDSTRBUFFER)readsasequenceofcharactersuntilanEnd-of-Linecharacterisreceived;allthecharactersexcepttheEOLarereturnedasastring.ThefirstarugmentsareinterpretedexactlyforRS232READBYTE;thatis,iftheexpectedEOLisnotseen"intime",thenNILisreturned.However,ifthethirdargumentissupplied,itmustbeastring,anditsstoragewillbere-usedtoreturnthecharactersaccumulatedsofar,evenifthereisatimeout.Oneothercaveat:upto8charactertimesaredalliedafterreceivingtheEOL,toseeifitisfollowedbyaline-feed,andifso,theline-feedisflushed.(RS232READSTRING#CHARS.LIMIT?STOPCODE?NOBLOCKSFLGWAIT?timerUnitsOLDSTRBUFFER)isthebasic"blockmode"inputfunction;theargumentsarealloptional,andthelastthreeîJtï (î êïg_pî ôïhsî  ïhsî ôïbhî PîTîîdîîî$(î$Ôî'„î-� î4ôî8Pî:Tî=î@`îBdîGÄîIÈîJtïbhî ôïaTîê îúîî¶î"fî%î%ÂïaTî ôï`@îêîàîÖî‚î. î"êî&òî3¶î7ï`@î ôï_, îXî\î¼îÀîp î$Ôî&Øî,8î-�î2Dî8üî;î>\îC¼îEÀîHpîHpï_,î ôï^î´îdîÀîÄîtî#|î%€î(0î,äî2ð î\îCîEÀîGÄîIÈîIÈïOî ôïMìî ¤ î îî Ìî"Ðî%€î*4î*àî-�î3œî8P î?´îCîEÀîIÈîIÈïMìî ôïLØîTî°î`îîtî!xî$Ôî*àî,äî/”î1˜î5 î8Pî=î?îBdîGîIÈîIÈïLØî ôïKÄîTîî`îdîîÄî ÌïKÄî ôïJ°î  ïJ°î ôïIœî  î LîdîÄî î"Ð î*4î,8î.èî5 î9¨î\î?´îEîGîGïIœî ôïHˆîTî°î`îhîÄî"$î%€î'„î)ˆî,äî/”î2ðî8üî>\îA îEïHˆî ôïGtî  ïGtî ôïF`î  î Lîd î!xî"$î'„î*àî-�î0ìî2ðî5 î:Tî=°îBdîDhîJtîJtïF`î ôïEL îî´îdîÄîpî î"Ðî$Ôî(0î.<î0@î2Dî6øî:Tî=î@`îCîEÀîHpîHpïELî ôïD8î ¤îî°î î¼îÈî Ìî&Øî)ˆî/”î2ðî5 î:Tî>\îA¸îHpîHpïD8î ôïC$î ¤îî\ îÀîpî"Ðî'„î.<î/”î4ôî9¨î\îDhîIîIïBî ôï@üî Pîî\ î î%€î0@ï@üî ôï?èî  ï?èî ôï>Ôî  î Lî¸îh î Ìî$(î*4î+Œ î2ðî9¨î?îCîDhîJtîJtï>Ôî ôï=Àî üîXî¸îhîÄîÈî"Ðî&,î*4î0ì î9¨î?´îDhîIîIï=Àî ôï<¬î¨î°î`îîÄî!xî#|î'„î)ˆî0@î0ìî3œî7¤î=°îA îCîGîGï<¬î ôï;˜î üî°îîîtî î"Ð î*4î-� î4ôî;¬î@`îEîHpîHpï;˜î ôï:„î ¤îXî îîîÈî"$î"Ðî&Øî+Œî.èî1˜î7¤î=î?îA¸îEÀîEÀï:„î ôï9pîTîî¸î¼îÀîî"Ðî&, î.<î.èî1˜î5 î;î=îA¸îEîEï9pî ôï8\ îXî\î îîî!xî&Øî*àî-�î/” î7¤î>\î@`îEîHpîHpï8\î ôï7H îXî îîîtî$(î)ˆî,äî/”î2ðî4ôî7¤ î?´î@`îCîEÀîIÈîIÈï7Hî ôï64î ¤îTîî¸îÄîî"Ðî$Ôî&Ø î/”î2Dî4ôî8üî>\îA¸îFlîIÈîIÈï64î ôï5 î ¤ îî îÈ î&,î+Œî1˜î4H î\îC¼îEÀîEÀï ¤î ôï� î\î îÈî!xî'„ î0ìî3œî7¤î\îA îGîGï�î ôï|îTî\îdîîÈî Ìî$Ôî*4î,äî0@î2ðî6Lî8Pî;î@`îC¼îEÀîHpîHpï|î ôïhî¬îdîî!xî$(î*4 î2ðî3œî5 î8ü îCîEÀîIîIïhî ôïTî øîTî`î¼îpî î$(î'„î,8î0ìî4ôî;î?ïTî ôï@î  ï@î ôï,î  î L î`îh î!xî"$î$(î&Øî*àî-�î/”î2ðî4ôî7¤î=îA îDhîGîGï,î ôïîî\î´îîÄî Ìî$(î*àî-� î4ôî6Lî9¨î;¬î=îA¸îEÀîHpîHpïî ôïî ¤îXî´îlîî$Ôî&,î*4ïî ôïðî  ïðî ôïÜî  î L î`îh î Ì î*4î.<î/”î5 î7¤ î?îCîEîEïÜî ôïÈ îî¼îÀî!xî$(î&Ø î.<î2ðî5 î8Pî;îA îCîDhîIÈîJtîJtïÈî ôï´î ¤î¬îdî î"$î'„î*4 î4Hî7¤î:Tî\îDhïdî ôïPî  ïPî ôï <î  î Lî¸ î î&Ø î.èî2ð î:T îC¼ï <î ôï (î øî¨î°îdîlîtî&,î(Üî/”î2Dî4ôî;¬î>\îA îDhîHpîHpï (` êq?€`½ 3functionjustasinRS232READLINE.Characterswillbeaccumulateduntiloneofthreeconditionsoccur:1.Thetotalnumberofcharacterstakeninbythiscallisequalto#CHARS.LIMIT?(NILmeansnolimit);or2.AcharacterisreceivedwithcharactercodeequaltoSTOPCODE?(NILmeansnolimitingcharcter);or3.AnintervaloftimegreaterthanthatspecifiedbyWAIT?haspassedwithnobytesavailableattheport.IfNOBLOCKSFLGisnon-null,thenRS232READSTRINGwillconsumealltheCPUcycleswithoutofferingtoyieldtootherprocesses(includingtheMOUSEprocess);thismodeisimportanttovery-time-criticalapplications,butmostparticularlywhenusingtheportsotherthanRS232C.OutputFunctions(RS232WRITEBYTEBYTEFORCEOUT?IGNOREXOFF?)willsendoutone8-bitbyte;ifFORCEOUT?isNIL,thebytewillsimplybestoredintheoutputringbuffer,andwillbenotactuallybe"sent"untilsomeconditionarisestoforceoutthebuffer.Theoutputringbufferwillbeforcedoutifthesecondargumentisnon-NIL,orwheneverthereisanexplicitcalltothefunctionRS232FORCEOUTPUT,orfromtimetotimewhenRS232BACKGROUNDhasspecifiedbackgroundoutputfromthebuffer(seedocumentationabove).EspeciallywiththeRS232Cport,itincursahighoverheadcosttodoaforceoutputoneverycharactersent.(RS232WRITECHARSSTRINGFORCEOUTPUT?)sendsoutallthecharactersinthefirstargument,whichmaybeeitheralitatomorstring.SecondargumentisinterpretedthesameaswithRS232WRITEBYTE.ModemInterfaceFunctions(RS232XON\XOFF?ON?)controlstheprocessingofthein-bandXONandXOFFcharacterssentbythecorrespondent;whenON?isnon-NIL,suchprocessingwillbeenabled;whenON?isNIL,itwillbedisabled.WhentheRS232portisinitialized,thisfeatureisdisabled.[[Footnote:Upuntilthefallof1984,thisactionwasdeterminedbythevalueoftheglobalvariableRS232XON\XOFF?;inordertoensureasmoothtransition,therewilbeaperiodoftimeduringwhichthefunctionalinterfacewillmerelysetthisglobalvariable.Thiscross-overperiodwillextendatleastuntilthenextreleaseofInterlisp-d.Butultimately,itwillhavetocarryoutactionsthatarenotconsistentwithaLispvariablesetting.]]Thismeansthatthelow-leveldriverfunctionswilllookfor^Sontheincomingside,andwill"gag"theoutputtransmitteruntilasubsequent^Qhasbeenreceived.Wheninthe"gag"'dstate,thevalueoftheglobalvariableRS232XOFF?willbeT;whennot"gag"'d,itwillbeNIL.Itshouldhardlybenecessarytomentionthatitwillcauseunduetroubletoturnthisfeatureonwhenthecorrespondinghostdoesn'talsoobeytheXON-XOFFprotocols.[[Footnote:SincetheRS232Cportcontainsadditionalbuffering"outboard"ofthe1108,LispwillprobablynotseeanincomingXOFFcharacterinthetimerequiredbysomecorrespondents;thisproblemwillbefixedinafuturereleaseofsoftware,butitisthe"outboard"I/OprocessorthatisatfaulthereratherthanLisp]]Thisprotocolis,ofcourse,temporarilyturnedoffbytheRS232FTPfunctions,whichtransmitandreceiverandombytes.(RS232SENDBREAKEXTRALONG?)sendstheout-of-bandBREAKsignal,foraperiodof0.25seconds;iftheoptionalargumentEXTRALONG?isnon-NIL,thentheperiodisextendedto3.5seconds.(RS232MODEMCONTROLSIGNALSONLST)isalambda-nospreadfunctionwhichsetsthemodemcontrollinestobe"on",forthesignalsnamedinthelistSIGNALSONLST;itreturnstheformersettingofthelines.IfSIGNALSONLSTisnotsupplied(whichisnotthesameassupplyingNIL),thenthecontrollinesremainunchanged.TheentriesinSIGNALSONLSTarelitatomnamesforstandardmodemcontrollines;currentlyusablesignalnamesareDTRandRTS.(RS232MODIFYMODEMCONTROLSIGNALSONLSTSIGNALSOFFLST)Changesonlythosemodemcontrollinesspecifiedintheunionofthetwoarguments;thoseinSIGNALSONLSTaresettobeon,andthoseinSIGNALSOFFLSTaresetoff.Returnstheformerstatejustas(RS232MODEMCONTROL)does.(RS232MODEMSTATUSPSPEC)Returnsnon-nulliffthereadingofthemodemstatuslinesisconsistentwiththebooleanformspecifiedbySPEC;modemstatussignalscurrentlysupportedareCTS,DSR,RI,andRLSD.SPECmaybeanyAND/OR/NOTcombinationoverthesignalnames.Example:(RS232MODEMSTATUSP'(ANDCTS(NOTRLSD))).(RS232MODEMHANGUP)takeswhateverstepsappropriatetocausethemodemto"hangup";generally,thismeansturningtheDTRsignaldownforabout3seconds,oruntiltheDSRsignalhasgonedown[[Footnote:Thereisabuginthelow-levelcodeforthe1108's"outboard"I/OprocessorsuchthattheTTYPortcan'tactuallyturnofftheDTRsignal;aconsequenceofthisisthatRS232MODEMHANGUPwillnotworkontheTTYPort.]]ErrorConditionReportingîHpï (î êïg_pîI¾ïhsîJjïhsî ôïbhîî\î`îd î!xî"$ î)ˆî,äî.è î6øî;î=°î?´îC¼îC¼ïbhî ôïaT îXî ïaTî ôï`@îêîîîžî¦îZî^ î%Âî)Êî+Îî-Òî1.î4Šî6Žî:–î<š îFîF®îJ îJ ï`@î ôï_,î üîî`îdï_,î ôï^îêîîîFîþîî!î$jî+"î.~î2†î4Šî;Bî>žîB¦îDªîJ¶îJ¶ï^î ôï] îXî\îï]î ôï[ðîêîîîòîþîî^î#¾î'î*vî1.î32î7:î9êî>žîAúîCþîHîHï[ðî ôïZÜî¬î°î`îhïZÜî ôïYÈî ø îî îÄî î*àî.<î3œî6Lî8üî;¬î@`îEÀîEÀïYÈî ôïX´îîî îîî"Ð î*4î,äî0ìî7¤î;î>\î@`îGîIîIïX´î ôïW î¸ î î"Ðî&, î.èî2Dî6Lî8üî=îA îDhîIÈïW î ôïVŒî  ïVŒî ôïUxî  ïUxî ôïTdî  ïTdî ôïSPîêîàîÖîÌî"€î)8ïSPî ôïR<î  ïR<î ôïQ(î  î Lî îhî î(Üî,8î/”î2Dî4ôî8üî=î=°î?´îFlîHpîHpïQ(î ôïPî Pîî\î¸îlîpî"$î$(î&Øî+Œî.èî4Hî6øî:Tî\îBdîDhîIîJtîJtïKÄî ôïJ°î Pî\î¸î¼îÀîî î$Ôî&Øî*àî1˜î5 ïJ°î ôïIœî  ïIœî ôïHˆî  î Lî¸îl î$Ôî(Üî+Œî.<î0ì î8Pî:Tî=îA îGÄîGÄïHˆî ôïGtî üî¬î°îdî¼îî î%€î&,î*àî0ìî2ð î;î=°îA îCîFlîFlïGtî ôïF`î´ïF`î ôïELî  ïELî ôïD8î  ïD8î ôïC$î  ïC$î ôïBîêîàîÖîÌî!Ôî(Œî/DïBî ôï@üî  ï@üî ôï?èî  ï?èî ôï>Ôî  î Lî îhîtî"$ î)ˆî+Œî.<î3œî6Lî8üîÔî ôï=Àî ¤ î¸îîÄîÈî$Ôî(0 î/”î2ðî4ôî;î>\îA îCîFlîHpîHpï=Àî ôï<¬î PîTî î¸îîÄî Ìî$(î&, î.èî2Dî7¤î9¨î@`îA îIîIï<¬î ôï;˜î øîî°î îîîtî$(î&Ø î.<î0@î2ðî6øî8üî;¬î@`îFlîFlï;˜î ôï:„î´î¸îÀîÄî!xî"Ðî'„ î/”î3œî6Lî8Pî9¨î>\î@`îC¼îHpîHpï:„î ôï9pî üî¬ îîÈî"$î&Øî)ˆî,äî1˜î8Pî8üî9¨î= îDhîIîIï9pî ôï8\î PîîîîîÈî"$î'„î)ˆ î2Dî2ðî3œî6L î>\î@`îC¼îGîIîIï8\î ôï7Hî üî¬î îhîîÈ î&,î)ˆî*àî.<î4H î;¬î\î@`îDhîFlîGÄîGÄï/¼î ôï.¨î¨îî îÄîtî!xî#|î&, î-�î0@î6øî:Tî\îBdîEÀîJtîJtï.¨î ôï-”î Pîî°î îîÈî Ìî&, î.<î2ðî5 î7¤î:Tî@` îGÄîGÄï-”î ôï,€î üîî¸îî Ìî%€ï,€î ôï+lî  ï+lî ôï*Xî  î Lî îî"$î$Ô î,äî0ìî6Lî8üî:Tî?îA îDhîJtîK îK ï*Xî ôï)Dî øî¨î´îÀ î"$î$(î*4î-�î0@î4ôî6øî=î?îA¸îGÄï)Dî ôï(0î  ï(0î ôï'î  î Lî î!xî#|î$Ôî/”î0@î6Lî:Tî=°î@`îDhîIÈîIÈï'î ôï&î üîîî î¼îlî Ìî$Ôî&Øî)ˆî,ä î6Lî8Pî=°î@`îEîJtîJtï&î ôï$ôî øî¨î\îî îÈî Ìî#|î)ˆî.<î0@î2ðî5 î8üî;îA¸îEÀîIîIï$ôî ôï#àî ¤îî îÀ î"$î"Ðî%€î*àî,ä î5 î8Pî=°îA¸îDhîJtîJtï#àî ôï"Ìî üî\îîÈî#|î(0î,8î.èî1˜î4Hî7¤ï"Ìî ôï!¸î  ï!¸î ôï ¤î  î Lî î$Ô î.èî4Hî7¤î;¬î?´îEîIîIï ¤î ôï�î¬î°î`îhîlîî Ì î(0î,8î.< î6øî9¨î\î@`îCîEÀîIÈîIÈï�î ôï|î ø î`îîÀîîÈî$(î&Øî+Œî/”î2ðî4ôîBdîFlï|î ôïhî  ïhî ôïTî  î Lîîî!xî'„î*4î,äî2Dî4Hî6øî;î?´îC¼îEÀîEÀïTî ôï@ îXî´îdîÄî î&Øî(Üî,äî0ìî5 î;îA¸îHpîHpï@î ôï,î ¤îî\î î¼îÄî î"Ðî$Ôî'„ î.è î6øî:Tî=îA¸îFlîGîGï,î ôïîî¬ïî ôïîêî®î¶î"fî%Âî+Îïî ôïðî  ïðî ôïÜî  î Lîîî"$î&, î.<î0@î4Hî6øî;î=îA îDhîDhïÜî ôïÈ îXî´î¼îî Ìî#|î(0î+Œî.<î2Dî3œî9¨î;¬î?´îBdîEîIÈîIÈïÈî ôï´î ¤îî\ îlîtî!xî"Ðî%€î'„î*4î0ìî4Hî6øî9¨î>\ îEÀîHpîHpï´î ôï î¬îîdîîtî#|î)ˆî,äî/”î2Dî4ôî:Tî;¬ îC¼îEÀîIîIï î ôïŒî øîTîÀîî Ìî$(î&,î(Ü î0@ïŒî ôïxî  ïxî ôïdî  ïdî ôïPî  ïPî ôï <îêîàîÖîÌî!Ôî(Œî/Dï <î ôï (î  ï (î ôï î  ï ÿæ êq?€`½S4Thehardwarewilldetecttheusualerrorconditions(droppedcharacters,parityerrorswhensoinitialized,andframingerrors)inadditiontodetectingaBREAKbeingsent.Additionally,certainlow-levelerrorsmayoccurineitherthehardwareorsoftwarewhichcanonlybeclassifiedasdeviceerrors.Therearethreeglobalvariablesprovidingafunctionalinterfacetothehandlingoftheseerrors:RS232BREAKFN,RS232LOSTCHARFN,andRS232DEVICEERRORFN.WhenaBREAKhasbeendetected,thesoftwarewillsettheglobalvariableRS232BREAKSEEN?tonon-NIL;itwillalsocheckthevalueofRS232BREAKFN,andifnon-NIL,willapplyittoNIL.Similarly,ifthereisanyerrorconditionwhichcausesacharactertobedropped,thelow-leveldriverswillapplythevalueofRS232LOSTCHARFN,ifnon-NIL,toalitatomdescribingthereasonforthelossage.Currentlythe"reasons"are:DroppedCharacter,ParityError,FramingError,RingBufferFull,LineBufferFull,andMultipleErrors(whichisacatch-allforanycombinationoftheforegoing"reasons").ThedefaultvalueforRS232LOSTCHARFNis\RS232DING,whichwill"flash"thedisplayscreenacoupleoftimes,andputthevalueof\RS232.DROPPEDCHARACTER.CODEintotheringbuffer[initiallythisissetto(CHARCODE#^G)].Finally,whensomeinscrutable"deviceerror"occurs,thevalueofRS232DEVICEERRORFN,ifnon-NIL,willbeappliedtoalitatomreason.Currentlythe"reasons"are:TransmitterWedgedandRS232CDisaster.TheformeristypicalofaTTYPortusewithouttheproperadaptorcable;thelatterseemstoindicateabuginthelow-levelI/Oprocessorsoftware.ThedefaultvalueforRS232DEVICEERRORFNis\RS232.DEVICEERROR,whichwill"flash"thedisplayscreenacoupleoftimes,andprintamessageinthePROMPTWINDOW.RS232CHATFacilityThefunctionRS232CHAT,withfouroptionalarguments,initiatesafull-duplextransmissionthroughttheRS232port.(RS232CHATTypeScriptStreamBINHOOKLocalEchoStreamXON\XOFF?)Thefirstargument,TypeScriptStream,iscoercedintoastreamforprintingthereceivedcharacters(defaultistousethewindowinthevalueof\RS232CHATWINDOW,whichifnull,willinteractivelyasktheusertolayoutaregionforsuchwindow);ifBINHOOKisnon-NIL,iatisauser-programmableinterfaceforfilteringthecharacterswhicharrivefromtheremotecorrespondent;NB:itmustbetheoutputofthefunctionMAKEBINHOOK[[Footnote:thisfacilityisn'tfullyreadyyet--it'sprimaryapplicationwillbetoprovideaflexiblemeansforemulationofthevarioussemi-smartterminalsliketheHeath-19etc.];ifLocalEchoStreamisnon-NIL,itspecifiesthatlocalechoingofthetyped-incharactersistobedone,withTmeaningtousethesamestreamasthefirstargument,andanyothervaluebeingcoercedintoastream;XON\XOFF?controlswhetherornottousetheXON\XOFFprotocol.Whilein"chat"mode,characterinterruptsareshutoff,thekeyboardisratherplainlyinterpreted,andcharacterstypedinonitaresenttothecorrespondent.Ordinarily,ahostwillsendaCR/LFfor"newline",butsomesendonlyone;amenuselectionfromthechatwindowletsyoupickoneortheotherifthisisthecase(especiallyusefulwithUNIXsystems).Similarly,youcanspecifythattheRETURNkey(or,EOLkey)sendeitherjustCRorbothCR/LF.Iflocalechoingisbeingperformed,anditthelocalechostreamisthesameasthemainRS232CHATwindow,thenthelocally-generatedcharacterswillbeenclosedinsquare-brackets,asameansofdistinguishinglocalechofromremoteoutput.Caveatapplicabletothenon-RS232Cportsonly:Sinceoutputtothethedisplaytakesanon-trivialamountoftime(e.g.,justgoingthroughthecharacterprintoutroutines,and"painting"acharacterontothescreenbit-maprequiresoveramillisecond,andscrollingamodest-sizedwindowmaytakewellover30milliseconds)itisquestionablewhetherbaudratesabove2400willbeacceptableforRS232CHAT,andtheremayevenbeocasionalproblemsabove1200baud.At"slower"speeds,thatis,atlessthanabout600baud,theuseofRS232BACKGROUNDmayalleviatetheseproblems.However,RS232CHATwillpayattentiontotheDSPSCROLLsettingofthechatwindow,andwilldo"roll"moderatherthan"wrap"modeprovidedthatitcandosowithoutdroppingcharacters["roll"describesthe"scrollup"actionwhentypeoutreachesthebottomofthewindow].IftheXON/XOFFprotocolisbeingused,orifthebackgroundprocessmentionedaboveisinoperation,thenlikelytherewillbenoproblemisusing"roll"mode.Escapefrom"duplex"modeismadebytypingthethecharacterwhichisfoundinthevalueof\RS232ESCAPE.CHARCODE,currentlyinitializedto(CHARACTER#B)[thishappenstobemiddle-blank].Typing"?"justaftertheescapecharacterwillgiveasmall"helpmessage;thecommandstobeusedinthismodeareallone-letter:B-sendaBREAK(0.25seconds)E-changetheescapecharacterF-deactivatetheXON\XOFFprotocolH-callthefunction(HELP),withinterruptsre-activatedL-callthefunction(RS232.PROMPT&LOGIN)O-settheXON\XOFFprotocolactiveQ-forquitandexit,presumablybacktoLISPXS-setthespeedoftheRS232port;?willdisplaychoices.-'Return'keysendstoremotehost-'Return'keysendstoremotehostî  ï î êïg_pî ôïhsî  ïhsî ôïbhî  î Lî øî ¤îTî`î¼îpî î$(î(0 î/”î5  î=°îBdîGîJtîJtïbhî ôïaTî ø î´îdîÄî"$î$(î*4î,8î2ðî4Hî8Pî\î@`îFlîIÈîIÈïZÜî ôïYÈî üîîî`î î¸ïYÈî ôïX´î  ïX´î ôïW îê îNîRîZî^î!î%î+Îî/Öî4Šî5âî<šî>žî@¢îF®îI^îI^ïW î ôïVŒî¬î îhîpî î$(î&,î1˜î3œî9¨î;¬î=îBd îIÈîIÈïVŒî ôïUxî ¤îXîî¸îÄîpî$(î&Øî-�î0ìî= îEÀîEÀïUxî ôïTd î\îî(Üî+Œ î5 î:Tî\î>\ïR<î ôïQ(îpî Ìî#|î&Øî+Œ î2ðî6Lî8Pî;î=îC¼îHpîIîIÈïQ(î ôïPî  ïPî ôïOîêîöîRî® î#¾î)î-Òî32î5âî9êî;îîI^îI^ïOî ôïMìî øîî`îdîÄîÈî î%€î*àî+Œî2Dî4ôî;¬î?î?ïMìî ôïLØî î¼î#|î$(î&Øî+Œî-�î2ðî4ôî6Lî;¬î>\îC¼îFlîFlïLØî ôïKÄî¨îî¼îlî î$(î&,î,8î-�î0@î2Dî4ôî;¬î>\îEîEïKÄî ôïJ°î¬îXîîhîpî î,äî.èîï?èî ôï>Ôî ¤î¬îdî#|î%€î*àî.<î/”î4Hî6øî=î?´îEÀîEÀï>Ôî ôï=À îXîdîhîlîî Ìî%€î'„î*4î.<î0@î\î@`îBdîEÀîJtîK îK ï.¨î ôï-”î øîî`îdîl î"Ðî%€î'„î*4î.<î1˜î6Lî8Pî;î>\î@`îCîFlîFlï-”î ôï,€î¬î îhîî(0 î/”î2ðî4ôî;î=îHpîJtîJtï,€î ôï+lî LîTîX îlîtî"Ðî&,î*àî0@ï+lî ôï*Xî  ï*Xî ôï)Dî  î Lî øî ¤îX î¼îÀîp î$Ôî(Üî,äî0ìî5 î7¤î:Tî=îBdîFlîGÄîGÄï)Dî ôï(0 îî¸î¼îî Ìî$(î(0î-�î0@î6øî=îC¼îFlîFlï(0î ôï' îXî°îhîÄîtî$(î)ˆî/”î2ðî4H î=î?´îFlîGÄîGÄï'î ôï& î°îdîîpî Ìî$(î&, î/”î1˜î3œ î\î@`î@`ï#àî ôï"Ìî´îdîî"$î(Üî)ˆî/”î6Lî9¨î\îBdîDhîFlîIîIï�î ôï| îXî¸îpî!xî#|î%€ î,äî0@î4ôî8üî\î@`îEÀîGÄîGÄï|î ôïhî üî°î¸ïhî ôïTî  ïTî ôï@î  î Lî øî ¤îXî´îÀîî î#|î%€î*4î,äî/”î6Lî:Tî\î?ïî ôïðî øîTî°î`î î ïðî ôïÜî  î Lî øî Pî¨îî\îdîîî"$ïÜî ôïÈî  î Lî øî Pî¨î\î îÀî!xïÈî ôï´î  î Lî øî Pî¨ î î¼îÈî$Ôï´î ôï î  î Lî øî Pî¨îî´îÀî î#| î*à î3œï î ôïŒî  î Lî øî Pî¨îî´îÀî(ÜïŒî ôïxî  î Lî øî Pî¨îXîîî î$Ôïxî ôïdî  î Lî øî Pî¨îXî´îdîl î"Ðî&,î(0î,8ïdî ôïPî  î Lî øî Pî¨îXîîîîÄî Ìî$Ôî&,î)ˆî.èî4ôïPî ôï <î  î Lî øîTî¬î¸îhîpî Ìî"Ðî'„î*àï <î ôï (î  î Lî øîTî¬î¸îhîpî#|î%€î*4î-�ï (ÿ¯ êq?€`½ 5^B-runa"break"orHELPloopR-callRAID7-truncateincomingcharactersto7bits(thisisnecessarywhenyouhaveopenedan8-bitconnectionignoringtheparitybit;youreallyonlywanttoseethelower7bitsinterpretedasacharactertobeprintedonthewindow).8-undothe"7-bit"modeabove(justincaseyouactuallywantedtoseetheeightbit--typicallytheprintoutwillbejustthesameasasthe7-bitprintout,butpreceededbya"#"whentheeighthbitisoninacharacter.)Additionalcontrolmaybeexercisedwiththepop-upmenuobtainedbypressingthemiddlemousebuttonwiththecursorintheRS232CHATwindowwhileRS232CHATisactive;itscommandsareessentiallyself-documenting,andareasuper-setoftheabove-mentionedcommandsavailablefromthekeyboard.Inparticular,it'spossibletoalterwhatRS232CHATthinksisthe"NewLine"character;Interlisp-D'sdefaultistochooseCR,butforconnectionstosomesystems,LFisamuchbetterchoice.Twoothercommandspermit"toggling"(thatis,switchingthestatefromonechoicetoanalternate,andvice-versa):~LocalEchoand~RollMode.ThelatterwillchangetheDSPSCROLLof\RS232CHATWINDOW;theformerwill"toggle"theuseofthelocalechostreamprovidedinthecalltoRS232CHAT(orwilluse\RS232CHATWINDOWifnostreamwasprovided).Anumberofinternalglobalvariablescontrolcertaincharacteristics;inadditionto\RS232ESCAPE.CHARCODEmentionedabove,thereare:\RS232PERMITTED.INTERRUPTS--alistofitemssuchasreturnedbyINTERRUPTCHAR(orsuchaswouldbeinputtoRESET.INTERRUPT),whichwillbe"active"duringRS232CHAT;initiallythislistisnull.\RS232CHAT.IgnoreCharcodes--alistofcharactercodesthatwillbeignoredbytheinputsideofRS232CHAT;initiallythislistcontainsonlythesinglecode(CHARCODENULL).\RS232CHAT.EOLsequence--AstringofcharacterstobesentoutwhenevertheRETURNkeyistypedonthekeyboard;initiallythisjustcontainstheonecharacterCR,andischangeablebyamenucommand.\RS232CHAT.NEWLINECHAR--NormallysettoLF,whichwillcauseRS232CHATtoworkrightforsystemswhichsendbothCR/LFfornewlineaswellasforthosethatsendonlyLF(e.g.,UNIX).However,somehostssendonlyCR,andthustogetRS232CHATtoadvancetoanewline,CRmustberecognizedasthe"newline"character.Thisoptionischangeablebyamenucommand.Notethatthissectionisn'ttalkingabouttheEOLcharacter.\RS232CHAT.BellSequence--SincethestandardInterlisp-Dactionforprintinga"bell"toadisplaystreamtakestoolong(muchlongerthantheinter-charactertimeat1200baud),thenwhenanon-RS232Cportisinuse(unlesstheXON\XOFFprotocolisenabled),thisstringofcharacterswillbesubstitutedforthe(CHARCODEBELL).Initially,itisjust"^".Thefollowingtwofunctionsaremostusefulwhentryingto"chat"toahostthroughanRS232portrunningataspeedhigherthanInterlisp-Dcansupportfordisplaystreamactivities:(RS232LOGINHOSTUserNamePASSWORDHostSYSTEMTYPETypeScriptStreamPROMPTFORWORDstreamURGENCY.OPTION)Ofthe7arguments,mostareoptional.HOSTisanameforthemachinewithwhichtheRS232portiscorresponding;UserNameisthedesiredusername/login.idonthatmachine;PASSWORDisthepasswordneededthere;HostSYSTEMTYPEisthehost'soperatingsystemtype(currently,onlyTOPS-20,TENEX,VMS,UNIX,WAITS,ITS,andTOPS10areknowsystemtypes;TENEXisthedefault);theremainingthreeargumentsareconcernedwheretoechotheactivitycausedbythisfunction,andaremainlyofinteresttoothersystem-levelfunctions.TheglobalvariableRS232OSTYPESisparalleltoNETWORKOSTYPES,butthenamesarenotinanywaycoordinatedwithanamedatabase,suchasoccurswithethernetprotocols;infact,NETWORKOSTYPESwillalsobeconsultedbyRS232LOGIN,soitwouldnotbewisetouseanameforanRS232correspondentthatisinconflictwithNETWORKOSTYPES.IfeitherUserNameorPASSWORDisNIL,theywillbeobtainedviaPROMPTFORWORDfromthekeyboard(thisissothatyoudon'thavetohavepasswordsincodefiles);thereisalsoaninternalcacheoftheinformationabouthost/username/password,justasiskeptforloginsovertheEthernet.WhentheHost'ssystemtypeisknown,thenadatabaseofloginprotocolsisconsultedtofigureouthowtosend(automaticallyandblindly)thenecessarycharacterstoeffectalogin.Atconvenientmoments,theoutputfromthehost,whichisaccumulatedintheRS232linebuffer,willbeoutputfortheuser'sperusal(thefifthargumentisastreamforthisprintout:NILdefaultstotheprimaryoutput,NONEgagsthistype-out;window,filesets.allareacceptablehere).Aprimaryreasonforthisfunction'sexistence,besidesthecacheingofsuchinformationaslogin.idandpassword,istopermitloggininatspeedswhichcannotsupportRS232CHAT(seedocumentationabove);also,itisconvenienttobeabletoselect"Login"fromtheRS232CHATmenuandhavetheloginsequencesentautomatically.(RS232.PROMPT&LOGINTypeScriptStream)promptstheuser(viaPROMPTFORWORD)totypeinthenecessaryinformation,inthePROMPTWINDOW,tocallanduseRS232LOGIN;theargumentishandedtoRS232LOGINasitsfifthargument(the"Type-outstream"argument).î-�ï (î êïg_pîI¾ïhsîJjïhsî ôïbhî  î Lî øî üîTîî\î¼îÀîî!xïbhî ôïaTî  î Lî øî Pî üîTî°î ïaTî ôï`@î  î Lî øî Pî¨î´îÀ î"$î$(î%€î(Üî,äî.èî5 î8üî;¬ï`@î ôï_,î  î Lî øî ¤î Pî üî¨îTî°îdîhîp î$Ôî*àî-�î2Dî5 î8Pî=ï_,î ôï^î  î Lî øî ¤î Pî üî¨îTî°î îîÀîpî!xî"Ðî&, î.<î0@î1˜î8Pî:Tîžî@¢îF®îH²îH²ïJ°î ôïIœî¼îtî$(î(0î+ŒïIœî ôïHˆî  ïHˆî ôïGtî  î Lîpîtî Ìî$(î&,î*4î-�î/”î5 î7¤ïGtî ôïF`î  î Lî øî ¤î Pî ü îdîîpîtî#|î%€î)ˆî+Œî7¤î;¬î?î?´ïF`î ôïELî  î Lî øî ¤î Pî üîî îÀ î"$î(Üî,8î/”î1˜î5 ïELî ôïD8î  î Lîpîtî Ìî$(î&,î,äî0ìî4Hî7¤î9¨î?ïD8î ôïC$î  î Lî øî ¤î Pî üîî°î¸îî î#|î*4î-�î0ìî6øî:Tî=ïC$î ôïBî  î Lî øî ¤î Pî üî°î îÄî!xïBî ôï@üî  î LîÀîÄîî"Ðî$Ô î,8î.<î0@î3œî6LîÔî  î Lî øî ¤î Pî üî´îdîî î#|î%€î&Øî*4î0@ï>Ôî ôï=Àî  î LîÀîÄî"Ðî%€î'„î*4î.<î1˜î5 î\ï<¬î ôï;˜î  î Lî øî ¤î Pî üî¬î´îîlîÈî Ìî%€î*4î*àî0ìî4Hî8Pî;¬î?î?´ï;˜î ôï:„î  î Lî øî ¤î Pî üî¬î\î¸î¼îlî"$î$(î)ˆî+Œî,äî/”î3œî5 î8üî;î;¬ï:„î ôï9pî  î Lî øî ¤î Pî ü î`îdîî Ì î(0î(Üî,8î0ìî2ð î:TîžîAúîGZîI^îI^ï.¨î ôï-”î üîXî¸î¼îîî"Ðî&, î.<î0ìî6Lî8üî>\îCîCï-”î ôï,€ îï,€î ôï+lî  ï+lî ôï*Xî  î L î\î¸îÄî"Ð î,äî8Pî8üï*Xî ôï)DîêîàîÖî&Fî1ï)Dî ôï(0î øî¨î îdîÀîpî$(î$Ôî(0î*4î+Œî.èî1˜î4Hî9¨î=îA îC¼îGÄîGÄï(0î ôï'î PîT îhîtî!xî$(î)ˆî5 î7¤î;îA îGîIîIï'î ôï&î ¤î°îdî î&,î(0î*àî/”î6Lî;î>\ îFlîIÈîIÈï&î ôï$ôîî´îîî Ìî$(î&Øî+Œî.<î1˜î6Lî;î?îA îC¼îJtîJtï$ôî ôï#àî ¤î\îdîî Ìî'„î(0î,8î.<î1˜î4Hî:Tî?îA îDhîDhï#àî ôï"Ìî¬î\î îÀîÄî"Ðî$Ôî(Ü î1˜ î8üî9¨î\îEîGîGïî ôïî¬î°îdîîÄîÈî"$ î,8î.èî4ôî7¤î>\ îEÀîGÄîGÄïî ôïðî¨îî´î`îd îÈî$Ôî'„î,8î/”î2Dî6Lî:TîMUMBLE")(RS232PUTFILE'{DSK}RUN.DCOM'BINARY'MODEM"MODEMRBRUN.DCOM")BothendsoftheMODEMprotocolhave"synchronizing"features,soatypicalscenarioofusagewouldbetouseRS232CHATtologintothehost,andthensimplyputtheMODEMprograminitswaitstate,bytypingwhateverargumentsitneeds,andfinallyexitingfromRS232CHATandcallingRS232GETFILE(orRS232PUTFILE)directly,withoutthefourthargument.Onereasonforthefourth-argumentcapabilityissothatonemayuseRS232FTPatspeedsgreaterthanwouldbeavailableforRS232CHAT--logincouldbeachievedthroughuseofthefunctionRS232.PROMPT&LOGIN,andfiletransferthroughtheuseofRS232GETFILEorRS232PUTFILE,andnoneedarisesatallforaterminalprotocol.TheglobalvariableRS232FTPTRACEFLG,ifnon-null,causesatraceofactivitytobeprintedoutonthefile/streamspecifiedbytheglobalvariableRS232TRACEFILE;itthevalueisPEEK,thenonlya"+"willbeprintedforsuccessfultransitofpackets,and"-"forunsuccessfulones;anyothernon-nullvaluecausesamoreverboseoutput.SeveralimplementationsoftheMODEMprotocolforothermachinesareavailable:onefortheIBM/PCisavailableonfloppydiskthroughXeroxArtificialIntelligenceSystems;othersareavailableforVAX/VMSandVAX/UNIXusers.î8üï (î êïg_pî ôïhsî  ïhsî ôïbhî  ïbhî ôïaTî  ïaTî ôï`@î  ï`@î ôï_,î  î Lî øî ¤î Pî üî¨îTîî¬îXîî°î\îî´î`î î¸îdîlîtî%€ï_,î ôï^î  ï^î ôï]îêîšîRîZî î'î)î/*î1Úî5âî9>î?öîCRîEVîI^îI^ï]î ôï[ð îî´îîtî!xî$Ôî*àî-�î4Hî6Lî8ü î@`îFlîFlï[ðî ôïZÜî¨î°î¸îhîÀîî î&,î*4î/”î0ìî5 î;¬î>\îA¸îFlîJtîJtïZÜî ôïYÈ îXî`î îîÄî Ì î(0î*àî.<î2Dî5 î;î\ îFlîIÈîIÈïMìî ôïLØî üî îdîlîî#|î(0î*àî,äî2ðî@`îC¼îIÈîIÈïLØî ôïKÄî øîT îdîl î#|î&Øî*àî,äî/”î4Hî6L î=°î@`îDhîGÄîIÈîIÈïKÄî ôïJ°î ¤îXîîîî Ìî&,î+Œî0ìî2ðî4ôî7¤î9¨î\îA¸îEÀîIîIïF`î ôïELîî¸îÀ î"$î%€î*àî,8î1˜î7¤î>\ïELî ôïD8î  ïD8î ôïC$î¬îd îÈî Ìî"$î&Øî*àïC$î ôïBî  ïBî ôï@üî  î Lî ø î`î îÈîtî#|î$(î(Üî)ˆî*4ï@üî ôï?èî  î Lî øî ¤î Pî üî¨îTîî¬î`îdî#|ï?èî ôï>Ôî øï>Ôî ôï=Àî  ï=Àî ôï<¬î  î Lî ø î`î î î Ìî&,î&Øî+Œî,8î,äï<¬î ôï;˜î  î Lî øî ¤î Pî üî¨îTîî¬î`îd î!xï;˜î ôï:„î øï:„î ôï9pî  ï9pî ôï8\îêîFî¢î¦îVî^î$jî'Æî2†î9>î;Bî<šîAúîHîJ îJ ï8\î ôï7Hî üîîî î¼îtî!xî%€î'„î*4î.<î0ìî4Hî8üî;¬î>\îBdîGÄîIÈîIÈï7Hî ôï64î ¤îî´î¸îlî!xî(0î*4î.èî1˜î6øî\î?î?´îBdîGîIÈîIÈï5 î ôï4 î ¤îd îÈî Ìî"Ðî&,î(Üî+Œî.<î4Hî6Lî;î@`îC¼îGÄîIÈîIÈï4 î ôï2øî¬î\îîî î$(î&,î,8î1˜î4Hî6Lî8üî?î?ï2øî ôï1äîdîîpî#|î(Üî+Œî.<î0@ î8üî; îDhîGîIîIï1äî ôï0Ðî Pîîî¸îhîÀî Ìî'„ï0Ðî ôï/¼î  ï/¼î ôï.¨îêîšîNîZî(rî*vî1.î5âî7:î;Bî=FîCRîEVîGZîGZï.¨î ôï-”îTîîî¸ îÈî%€î'„î*4î.èî4ôî?´î@`îBdîEîIîIï-”î ôï,€î øîî\î¸îîÀîî î%€î(0 î/”î4ôî6øî=î?´îBdîEîEï,€î ôï+l î°î¸îhîpî#|î'„î,8î-�î0ìî6Lî;¬ï+lî ôï*Xî  ï*Xî ôï)Dî  ï)Dî ôï(0îêîJî î!î#¾î'Æî-Òî0‚î4Šî:–î=F îDªîEVîHîJ¶îJ¶ï(0î ôï'î ¤îXî\îîî Ìî$(î)ˆî-� î4ô î=°îC¼îHpîHpï'î ôï&î ¤î\î îlîîÈî$Ôî)ˆï&î ôï$ôî  ï$ôî ôï#àî  ï#àî ôï"Ìî  ï"Ìî ôï!¸î  ï!¸ h êq?€`½ ~SNAIL²8$¹5GsZ Afïj/igÿÿ�ÉM©ÿÿÿÿÿÿ#{ERIS}LIBRARY>RS232.TTY;5JONL.PA19-Nov-84 17:37:53