IMD 1.17: 11/11/2014 15:19:41 82VKXBVERDOS C* VERSADOS/RMS68K OBJECT 4.4 SN=48634 22 OF 22  BT22a82VKXBVERDOS 0420¼-Iñ¨¹Ëeaè" HzaDNqNq%‚Ybô`Eò$ ‚àŠáŠ$BµËeÜa¶@ç/: !ßFßIú¢Cú2$ ÕÌ•É%$¹ÉbúGúüà'z Î (z Þ,z ÞCú B”‰ÛÂßÂ+MžNÐHçKúMúaLß`.<°a”a azAú B€aFFü Fü'azHçKúæMúðaÊLß`.<¿a^ z Z"hÓú V.Pßú P-ngNÖNÑHçÀ`CúR•ÊB²f`$ˆÑ×XŠRµüeèLßNuHç€`“ÉEú JaLßNuHç€`•ÊCú 8`ì <ÿ$ÙQÈÿüNu /Na¬a¨a¤a aœa˜a”aaŒaˆa„a€a|axatapalahada`a\aXaTaPaLaHaDa@a .gJ4k`ÊÀ6<ÿþ` ƒ€g ƒ'cÀ` =C ` À`À4<aX6< Gî at4<aD n& f| 6< GîaR4<a"(%0G86@6HTP=XO`6hBp1x:€Bˆ8<˜> 4¨9°@¸CÀKÈ;ÐAØGàFè9ðDø;A7 9*01/30/85‚Modified‚KEYBRD.AG,OUTCHS.SA,POUTCHS.SA,and.*šEDITMODE.SA‚tousetheBELLinthekeyboard.?*10/10/84‚Therewasaproblemifanyotherboardinthesystem0*šisconfiguredtousethesameinterruptlevel,-*šbecauseGET_CHARassumesthattheinterrupt*šisalwaysforhim.,*šFixedGET_CHARtosendbackbothZbitand)*šVbitsetiftheinterruptisnotours,+*šsothatIN_CHARwillpassitalongtothe1*šmaininterrupthandler,andwewillthenreturn4*štoCMRwiththecarrybitclearedtoindicatethat *štheinterruptisnotours.†bwn;*‘2/9/84‚FixedproblemwithREADTERMINATORinitialization*šinsubroutineSETUP.6*‘7/19/83‚ChangedRESETcommandsenttoOUTCHSto$F7.**‘6/3/83‚InitialwritingbySteveFranck.**‰RMS68Kroutinesused: *TR0$.RQPA *TR0$.QEVENT*TR0$.QEVENTI *TR0$.LOGPHY *TR0$.KILLER *TR0$.GETTCB**‰Othernotes:6*CurrentlythiscodeisneitherROMablenorposition-*’independent.'*AssembleusingchainfileTERMDRV.AF.*J**************************************************************************J**************************************************************************J**************************************************************************J**************************************************************************‰PAGE*F*‚Toassemblethiscodeforitspropertargetenvironment,changethisééA*‚equate,whichwillserveasaswitchinconditionalassemblies.2*‚Validvaluesfortheswitchare:‚'7201','EX/S'.(*‚FORNOW,THISSWITCHMUSTBE'EX/S'!!!*ENVIRONMENT EQU 'EX/S' * *‚XDEF's.*8ŠXDEFƒGOT_CHAR‹Entrypointfordrivertoreceiveachar.7ŠXDEFƒCHECK_WORK‰Backgroundexec'sentrypointtocheck*§formorework. * *‚XREF's.*=ŠXREFƒSTOP_IT,UNSTOP…Device-specificroutinestostopfurther&*§trafficfromthedeviceandtoallow *§itagain. ‰IFEQ†ENVIRONMENT-'EX/S'"*§Subroutinesforinitializingand'*§controllingVME/10keyboard&screen."ŠXREFƒINIT_KEYBOARD,IN_CHAR,OUTCHS‰ENDC  **‚Equatefilesincluded:**‰EQUSTR*‰EQUTCB*‰EQUCCB*‰VMES10.IOE.SA*‰NIO*‰LV5&*‰NEC7201‚onlyifENVIRONMENT='7201'*‰VMES10.TERMDRV.EQ*ŠNOLISTŠINCLUDE9995.&.STR.EQŠNOLISTŠINCLUDE9995.&.TCB.EQŠINCLUDE9995.&.CCB.EQŠINCLUDE9995.&.IOE.EQŠINCLUDE9995.&.NIO.EQŠINCLUDE9995.&.LV5.EQŠLISTŠPAGEO*********************************************************************************‰NOTESONCODINGSTANDARDS*O******************************************************************************* G*‚BecausethisisanI/Odriver,speedisoftheutmostimportance,andG*‚asaresulttradeoffsweremadedecreasingthestraightforwardnessofL*‚thecodeinfavoroflesstimespentprocessinginterrupts.‚Inparticular,F*‚theinterruptserviceportionofthisdriverisnotatallmodular--H*‚some'routines'havemultipleentryandexitpoints,andreturnisnot*‚alwaystothecaller.*G*‚OnevisualaidusedwhichmaysaveyousomeworkistheuseoflabelsD*‚inexecutablecode.‚Considerthefollowingsampleprogramsegment:*.*‰LABEL1:˜labelaloneonline,followedby':'*‘MOVE.B......7*‰LABEL2:ADD.B‚......Šlabelnotalone,followedby':'-*‰LABEL3‚CMP.B‚......Šlabelnotalone,no':'*F*‚Eachwayofwritingthelabelhasitsownsignificance.‚LABEL1marks C*‚thebeginningofalogicalmodule,andnothingfallsintoLABEL1.G*‚LABEL2isalabelbranchedtofromoutsidethelogicalmodule.‚LABEL3F*‚isa'local'label,branchedtoonlyfromwithinthelogicalmodule.  >*‚Foreachsubroutine,registerusageisspecifiedasfollows:**‰Entry:A5=addressofCCB**‰Exit:‚A0=garbage"*A1=addressofoursideof7201*G*‚TheentryconditionsspecifyonlytheREQUIREMENTSoftheroutine.‚InI*‚otherwords,aregistermaybeknowntocontainaparticularvalue,butI*‚ifitisnotusedbyaroutine,itisnotlistedasanentrycondition.J*‚TheexitconditionslistonlythoseregisterswhichCHANGE.‚IntheaboveH*‚example,thefactthatA5isnotlistedasanexitconditionindicates"*‚thatitstillpointstotheCCB.*J*‚Ifamoduledoesnotrepresentasubroutine(thatis,willnotreturntoK*‚thecodeitwasenteredfrom),theexitconditionsfortheregisterswill*‚notbespecified.ŠPAGEO******************************************************************************** *‰EQUATES*O******************************************************************************* *,* EQUATES FOR SOME SPECIAL ASCII CHARACTERS.*'NUL†EQU‡$00‡Nullchar.‚Usuallyignored..BEL†EQU‡$07‡Bellchar.‚Ringsbellonterminal.BS‡EQU‡$08‡Backspacechar.6LF‡EQU‡$0A‡Linefeedchar.‚Causescursortomovedown.=CR‡EQU‡$0D†Carriagereturnchar.‚Movescursortoleftmargin.SPACE„EQU‡$20‡Spacechar.$L_ARROW‚EQU‡$3C‡Left‚arrowchar'<'.%R_ARROW‚EQU‡$3E‡Rightarrowchar'>'.#BKSLASH‚EQU‡$5C‡Backslashchar'\'.'CARET„EQU‡$5E‡Uparrow(caret)char'^'.8DEL†EQU‡$7F‡Deletechar(alsocalled'rubout').‚LikeBS. $HI_CTLƒEQU‡$1F‡Highestcontrolchar. IBS_SP_BSEQUBS<<24+SPACE<<16+BS<<8‚Backspace,space,backspaceallleft-*§justifiedin32bits. *?*‚Masksdelineatingallrecognized(REC)andunrecognized(UNR)(*‚attributes(ATT)andparameters(PAR).*‰IFEQ†ENVIRONMENT-'EX/S'BREC_ATTƒEQU„%1000001111000001‚1bitsrepresentdefinedattributes.CUNR_ATTƒEQU„$FFFF-REC_ATT†The1'scomplementofthatareundefined. BREC_PARƒEQU„%0111011111111111‚1bitsrepresentdefinedparameters.CUNR_PARƒEQU„$FFFF-REC_PAR†The1'scomplementofthatareundefined.‰ENDC ŠPAGE**‚Miscellaneousequates.* *IOEVCD„EQU„1’Eventcodewewilluse(I/O). ;BRK_LENƒEQU„300#ofmillisecondstomaintainbreaksignal. *I*‚Thisisasemi-arbitraryvaluethatcanbewrittenouttoaregisteronH*‚somedeviceandthenreadback,inordertotest(inaverysmallway)C*‚thedevice'shealth.‚Onthe7201,forexample,thisiswrittento*‚thevectorregister(2B).*TEST_VAL‚EQU„$17ŠPAGEK*****************************************************************************‰EQUATESFORTRANSPARENTMODE*K*************************************************************************** *F*‚EquatesdescribingthepartoftheCSBusedwhensettingTRANSPARENTH*‚MODE.‚WepassthedrivertheaddressofourbranchtableandhepassesI*‚usbacktheaddressofhisbranchtable,thevalueweshouldhaveinA5G*‚whenwecallhim,andtheSRthatweshoulduse.‚Actually,wemayuseG*‚adifferentSRaslongasthesupervisorbitissetandtheinterrupt9*‚levelisnotlowerthantheoneintheSRhepassesus.*7ŠOFFSETIOSTTMThisstuffwillbeintheCSBatIOSTTM.9IOSTMU„DS.Bƒ4’Heretheuserwillstore,beforemakingthe&*§CHANGEDEFAULTScall,theaddressof*§histableofbranches. 7ŠOFFSETIOSTTMThisstuffwillbeintheCSBatIOSTTM.9IOSTMD„DS.Bƒ4’theaddrofthedriver'stableofbranches;/IOSTMA„DS.Bƒ4’thevaluethedriverwantsinA5;5IOSTMS„DS.Bƒ2’theSRwiththeMINIMUMinterruptlevel*§set. 5ŠOFFSET0ŽThisdefinestheuser'sTMinterfacetable.*£WeJSRtothisentrywhen:#TM_RCA„DS.Bƒ4’...wereceiveachar.7TM_TBE„DS.Bƒ4’...webecomecapableofanothertransmit.2TM_BRK_RECVDS.B4’...wedetectanincomingbreak.