IMD 1.17: 11/11/2014 14:47:17 82VKXBVERDOS C* VERSADOS/RMS68K OBJECT 4.4 SN=48634 13 OF 22  BT13\82VKXBVERDOS 0420¿?-ŠMOVE.BD0,CT1PL(A1)‡Givethechiptheleastsignificantpart.3ŠLSR„#8,D0ŽGivethechipthemost‚significantpart.ŠMOVE.BD0,CT1PM(A1)‡* **ˆNowstarttimerticking*'‰MOVE.B#C1EN,MCCR(A1)ˆENABLECOUNTER1(‰MOVE.B#C1SR,C1CSR(A1)‡ENABLEINTERRUPT.‰ADD.L‚#6,A7‘REMOVE'BE'ANDBUSERRORADDRESS !ŠRESTORED0/A1Restoreregisters.‰RTSšBACKTOINIT***;TIMERBE‚MOVE.L‚#CRASHSAV,PTMADDR‚USEDUMPPOINTERFORTIMER!ŠRESTORED0/A1Restoreregisters.‰RTS˜BACKTOINIT ***‰PAGE ‰XDEF„INITIO ‰SECTIONƒ8.**********************************************,*ƒValuestoputinVM04controlregisters.*.************************************************ˆMasterInterruptControlReg* INTCN„SET‡$00 $INTCN„SET‡0<<0+INTCNŠ0=Clearreset*¦1=Softwarereset3INTCN„SET‡1<<1+INTCNŠEnablerightjustifiedaddress1INTCN„SET‡0<<2+INTCNŠTimervectorincludesstatus *¦disabled2INTCN„SET‡0<<3+INTCNŠPortBvectorincludesstatus *¦disabled2INTCN„SET‡0<<4+INTCNŠPortAVectorincludesstatus *¦disabled6INTCN„SET‡1<<5+INTCNŠ1=noint.vectorduringanIACK*¦0=outputtheint.vector6INTCN„SET‡0<<6+INTCNŠ1=disableint.fromlowerchain*¦0=operatenormally,INTCN„SET‡1<<7+INTCNŠEnablemasterinterrupt**‚Controlreg0*-ICNT0„SET…$00VERSAbusint.vectornumberreg*£Thesebitsareenabledduring *£IACKcycles**‚Controlreg1*ICNT1„SET…$00Initializeit'ICNT1„SET…0<<0+ICNT1‰NA(notavailable)ICNT1„SET…0<<1+ICNT1‰NAICNT1„SET…0<<2+ICNT1‰NA2ICNT1„SET…0<<3+ICNT1‰DisableVERSAbussystemreset7ICNT1„SET…1<<4+ICNT1‰1=VERSAbus32bitdataportsize$*£0=VERSAbus16bitdataportsizeICNT1„SET…0<<5+ICNT1‰NA2ICNT1„SET…1<<6+ICNT1‰EnableRAMbusdiag.interruptICNT1„SET…0<<7+ICNT1‰NA**‚Controlreg2* ICNT2„SET…$00;ICNT2„SET…0<<0+ICNT2‰1=VERSAbusint.statusint.disabled'*£0=VERSAbusint.statusint.enabledICNT2„SET…0<<1+ICNT2‰AckVBIRQ1ICNT2„SET…0<<2+ICNT2‰AckVBIRQ2ICNT2„SET…0<<3+ICNT2‰AckVBIRQ3ICNT2„SET…0<<4+ICNT2‰AckVBIRQ4ICNT2„SET…0<<5+ICNT2‰AckVBIRQ5ICNT2„SET…0<<6+ICNT2‰AckVBIRQ6 ICNT2„SET…1<<7+ICNT2‰maskVBIRQ7**‚Controlreg3* ICNT3„SET…$00;ICNT3„SET…1<<0+ICNT3‰0=putVERSAbusmonitorintestmode.&*§1=VERSAbusmonitorinnormalmode.0ICNT3„SET…0<<1+ICNT3‰InterruptRequestLevelIL0ICNT3„SET…0<<2+ICNT3‰IL1ICNT3„SET…0<<3+ICNT3‰IL2*§IL0-2correspondstoVBIRQx-ICNT3„SET…0<<4+ICNT3‰0=cachetestmodeoff.*§1=cachetestmodeon.;ICNT3„SET…\SYSFAIL<<5+ICNT3‚0=disableSYSFAILinterrupts. *§1=enable‚SYSFAILinterrupts.0ICNT3„SET…1<<6+ICNT3‰0=disableallinterrupts.*§1=enableallinterrupts.6ICNT3„SET…0<<7+ICNT3‰DisallowVERSAbusmonitoroverrun *£interrupt**‚Controlreg4* ICNT4„SET…$00)ICNT4„SET…0<<0+ICNT4‰1=SYSFAILasserted*£0=SYSFAILnegates,ICNT4„SET…0<<1+ICNT4‰1=cachereaddisabled*£0=cachereadenabled-ICNT4„SET…0<<2+ICNT4‰1=cachewritedisabled*£0=cachewriteenabled2ICNT4„SET…0<<3+ICNT4‰1=allcacheentriescleared*£0=cacheisnotcleared3ICNT4„SET…1<<4+ICNT4‰1=32-bitVERSAbusaddressing *£0=16-bitVERSAbusaddressing0ICNT4„SET…1<<5+ICNT4‰1=enableVERSAbuscaching *£0=disenableVERSAbuscaching1ICNT4„SET…1<<6+ICNT4‰1=VERSAbusmonitorenabled*£0=VERSAbusmonitorcleared1ICNT4„SET…1<<7+ICNT4‰EnableVERSAbusmonitortest ***‚Controlregister5.*/ICNT5„SET…$0FBeginwithallcacheingdisabled.(ICNT5„SET…-\CACHEUI<<0+ICNT5IfCACHEUI,'ICNT5„SET…-\CACHEUD<<1+ICNT5.‚CACHEUD,'ICNT5„SET…-\CACHESI<<2+ICNT5.‚CACHESI,FICNT5„SET…-\CACHESD<<3+ICNT5orCACHESDare1,clearthecorresponding*§bitstoenablecacheing. 8ICNT5„SET1<<4+ICNT50=letPALdecode68020addresses.(*§1=letRAMbusdecode68020addresses. =ICNT5„SET1<<5+ICNT50=forceRAMbuswritestotheVERSAbus.%*§1=allowwritesacrosstheRAMbus. 'ICNT5„SET0<<6+ICNT50=enableRAMbus.*§1=disableRAMbus. 8ICNT5„SET1<<7+ICNT50=wearesecondaryRAMbusmaster.#*§1=weareprimaryRAMbusmaster.*PANL…SET$0DŒshown"D"onLED *G*‚SetupthevaluewithwhichtoinitializetheCACR.‚ThisvalueshouldD*‚causethecachetobeflushedand,ifsysgenparameterCACHE020so%*‚specifies,shouldenablethecache.*CACR_VALUE‚SETŠ1<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*‚>>>>>>>µ<<<<<<<*‚>>>>>>>•NOTICEš<<<<<<<*‚>>>>>>>µ<<<<<<<>*‚>>>>>>>…WhenincorporatinganydriversduringSYSGEN„<<<<<<<?*‚>>>>>>>…thatrequirememoryallocatedforthemasperƒ<<<<<<<?*‚>>>>>>>…thedriverpackageinstructions-thisistheƒ<<<<<<<,*‚>>>>>>>…spotthefile(s)gointo!!–<<<<<<<*‚>>>>>>>µ<<<<<<<=*‚>>>>>>>…Thisisalsothespotforcodeforadriver…<<<<<<<>*‚>>>>>>>…that‚requiresothertypesofinitialization,ƒ<<<<<<<0*‚>>>>>>>…such‚asclearinganinterrupt.‘<<<<<<<*‚>>>>>>>µ<<<<<<<*‚>>>>>>>‘MERGEITHERE—<<<<<<<*<*ˆWhenyouwritethecodethatistobemergedhere,wrapit*ˆaroundwiththefollowing:*:*ˆAtthebeginning,withDRVRxOUTreferringtoyourunique*ˆlabel,putthiscode:*'*‹PEA„DRVRxOUT(PC)„IFBUSERROROCCURS,*¢RETURNORGOONTONEXT*¢DRIVER'SINITIALIZATION**‹MOVE.W#'BE',-(A7)…SAVE'BUSERROR'FLAG*9*ˆTheninsertthecodetodowhatyouneedtodoforthis*ˆparticulardriver.**ˆAttheend,putthis:***‹LEA„6(A7),A7ˆREMOVEBUSERRORFROMSTACK*DRVRxOUTƒEQU„**=*ˆInthisway,ifthecodeforonedrivercausesabuserror,.*ˆthecodeforotherdriverswillbeexecuted.*E*‚>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<G***********************************************************************    ‰ENDéééééé **ˆVM04.CNFGDRVR.CI*'* Configuration file for device driversO*------------------------------------------------------------------------------B* This file sets up the flags used by the "VM04.IFDRVR.CI" file to'* conditionally include device drivers.*K* The user should only have to modify this file to include/exclude drivers.E* If you add more boards/devices, you may have to increase the sysgen>* command T option for more symbols in the "&.SYSGEN.CF" file.*K* To modify specific items of a driver, edit the corresponding driver file,J* "&.xxxxDRV.CI" except as noted where one driver handles multiple boards.O*------------------------------------------------------------------------------ N******************************************************************************L*---‚BOARD/SYSTEMDEPENDENCIESareincludedfromthe&.VERSADOS.CDfile.---9*VM04.SYSTEM.CIƒaddprocessorboard/systemdependencies,(*–includinglocalterminalsandprinters6*&.CNFGTASK.CI„addO/StaskconfigurationforROM/RAMM***************************************************************************** O*------------------------------------------------------------------------------DNOLTERMƒ=2Š#ofterminalsusingVM04(MK68564)serialports;max=2 O*------------------------------------------------------------------------------=NOVM20„=0Œ#ofVM20…FDC(floppyonlydiskcontrollerboards) *¦twoboardset;usesIPCdriver*¦(see"&.IPCDRV.CI")G*NOTE:‚Ifyouincreasethenumberoffloppiesoneitherthe1stor2nd@*ˆcontrollerboards,youmayneedtoedit&.IPCDRV.CIandchangeB*ˆtheZvaluefrom81to85sothatthefileIOC.VM20DRV.AGcanbe;*ˆassembledduringsysgen.‚The81valueissothatthefileA*ˆIOC.VM20DRV.AGcanbeassembledina384Ksystemduringsysgen. IFGTˆ\NOVM207ƒNFV20$1ƒ=0Œ#offloppydiskdriveson1stFDC;max=47ƒNFV20$2ƒ=0Œ#offloppydiskdriveson2ndFDC;max=4 ?ƒVM200$1ƒ="'F8SDDSM'"‚Typeof1stfloppydiskon1stFDCboardX(a'i+q ?ƒVM201$1ƒ="'F8SDDSM'"‚Typeof2ndfloppydiskon1stFDCboard?ƒVM202$1ƒ="'F8SDDSM'"‚Typeof3rdfloppydiskon1stFDCboard?ƒVM203$1ƒ="'F8SDDSM'"‚Typeof4thfloppydiskon1stFDCboard ?ƒVM200$2ƒ="'F8SDDSM'"‚Typeof1stfloppydiskon2ndFDCboard?ƒVM201$2ƒ="'F8SDDSM'"‚Typeof2ndfloppydiskon2ndFDCboard?ƒVM202$2ƒ="'F8SDDSM'"‚Typeof3rdfloppydiskon2ndFDCboard?ƒVM203$2ƒ="'F8SDDSM'"‚Typeof4thfloppydiskon2ndFDCboardENDC O*------------------------------------------------------------------------------;NOVM21„=0Œ#ofVM21…UDC(universaldiskcontrollerboards)%*¦floppy&harddisks;twoboardset;*¦usesIPCdriver*¦(see"&.IPCDRV.CI")I*NOTE:‚Ifyouincreasethenumberofharddiskorfloppiesoneitherthe@*ˆ1stor2ndcontrollerboards,youmayneedtoedit&.IPCDRV.CIF*ˆandchangetheZvaluefrom81to92sothatthefileIOC.VM21DRV.AGB*ˆcanbeassembledduringsysgen.‚The81valueissothatthefileA*ˆIOC.VM21DRV.AGcanbeassembledina384Ksystemduringsysgen. IFGTˆ\NOVM215ƒNHV21$1ƒ=0Œ#ofhardƒdiskdriveson1stUDC;max=47ƒNFV21$1ƒ=0Œ#offloppydiskdriveson1stUDC;max=45ƒNHV21$2ƒ=0Œ#ofhardƒdiskdriveson2ndUDC;max=47ƒNFV21$2ƒ=0Œ#offloppydiskdriveson2ndUDC;max=4 =ƒVM210$1ƒ="'FXLRK25'"‚Typeof1sthardƒdiskon1stUDCboard=ƒVM211$1ƒ="'RMLRK25'"‚Typeof2ndhardƒdiskon1stUDCboard=ƒVM212$1ƒ="'FXCMD80'"‚Typeof3rdhardƒdiskon1stUDCboard=ƒVM213$1ƒ="'RMCMD16'"‚Typeof4thhardƒdiskon1stUDCboard ?ƒVM214$1ƒ="'F8SDDSM'"‚Typeof1stfloppydiskon1stUDCboard?ƒVM215$1ƒ="'F8SDDSM'"‚Typeof2ndfloppydiskon1stUDCboard?ƒVM216$1ƒ="'F8SDDSM'"‚Typeof3rdfloppydiskon1stUDCboard?ƒVM217$1ƒ="'F8SDDSM'"‚Typeof4 thfloppydiskon1stUDCboard =ƒVM210$2ƒ="'FXLRK25'"‚Typeof1sthardƒdiskon2ndUDCboard=ƒVM211$2ƒ="'RMLRK25'"‚Typeof2ndhardƒdiskon2ndUDCboard=ƒVM212$2ƒ="'FXCMD80'"‚Typeof3rdhardƒdiskon2ndUDCboard=ƒVM213$2ƒ="'RMCMD16'"‚Typeof4thhardƒdiskon2ndUDCboard ?ƒVM214$2ƒ="'F8SDDSM'"‚Typeof1stfloppydiskon2ndUDCboard?ƒVM215$2ƒ="'F8SDDSM'"‚Typeof2ndfloppydiskon2ndUDCboard?ƒVM216$2ƒ="'F8SDDSM'"‚Typeof3rdfloppydiskon2ndUDCboard?ƒVM217$2ƒ="'F8SDDSM'"‚Typeof4thfloppydiskon2ndUDCboardENDC O*------------------------------------------------------------------------------8NOVM22„=1Œ#ofVM22…SMDdiskcontrollersboards(single*¦board)J*NOTE:‚Ifyouincreasethenumberofharddiskorfloppies,youwillneedC*ˆtoedit&.VM22DRV.CIandchangetheZvaluefrom81to92sothatF*ˆthefileIOC.VM22DRV.AGcanbeassembledduringsysgen.‚The81valueF*ˆissothatthefileIOC.VM22DRV.AGcanbeassembledina384Ksystem*ˆduringsysgen. IFGTˆ\NOVM222ƒNHV22$1ƒ=2Œ#ofhardƒdiskdrivesonVM22;max=84ƒNFV22$1ƒ=4Œ#offloppydiskdrivesonVM22;max=4 >ƒVM220$1ƒ="'FXCMD80'"‚Typeof1sthardƒdiskon1stVM22board>ƒVM221$1ƒ="'RMCMD16'"‚Typeof2ndhardƒdiskon1stVM22board>ƒVM222$1ƒ="'FXCMD80'"‚Typeof3rdhardƒdiskon1stVM22board>ƒVM223$1ƒ="'RMCMD16'"‚Typeof4thhardƒdiskon1stVM22board>ƒVM224$1ƒ="'FXCMD80'"‚Typeof5thhardƒdiskon1stVM22board>ƒVM225$1ƒ="'RMCMD16'"‚Typeof6thhardƒdiskon1stVM22board>ƒVM226$1ƒ="'FXCMD80'"‚Typeof7thhardƒdiskon1stVM22board>ƒVM227$1ƒ="'RMCMD16'"‚Typeof8thhardƒdiskon1stVM22board @ƒVM228$1ƒ="'F8SDDSM'"‚Typeof1stfloppydiskon1stVM22board@ƒVM229$1ƒ="'F8SDDSM'"‚Typeof2ndfloppydiskon1stVM22board@ƒVM22A$1ƒ="'F5DDDSI'"‚Typeof3rdfloppydiskon1stVM22board@ƒVM22B$1ƒ="'F5DDDSI'"‚Typeof4thfloppydiskon1stVM22boardENDC O*------------------------------------------------------------------------------7NOVM30„=1Œ#ofVM30…MCCM(multi-channelcommunications *¦boards)(*¦usesIPCdriver;has1printerport/bd*¦(see"&.IPCDRV.CI") IFGTˆ\NOVM30/ƒNTV30$1ƒ=4Œ#ofterminalson1stMCCM;max=4.ƒNPV30$1ƒ=1Œ#ofprinters‚on1stMCCM;max=1/ƒNTV30$2ƒ=0Œ#ofterminalson2ndMCCM;max=4.ƒNPV30$2ƒ=0Œ#ofprinters‚on2ndMCCM;max=1/ƒNTV30$3ƒ=0Œ#ofterminalson3rdMCCM;max=4.ƒNPV30$3ƒ=0Œ#ofprinters‚on3rdMCCM;max=1/ƒNTV30$4ƒ=0Œ#ofterminalson4thMCCM;max=4.ƒNPV30$4ƒ=0Œ#ofprinters‚on4thMCCM;max=1ENDC O*------------------------------------------------------------------------------ééééé é**ˆVM04.IFDRVR.CI*** Conditional file for VM04 device driversO*------------------------------------------------------------------------------J*‚ThisfileusesflagssetupintheVM04.CNFGDRVR.CIfiletoconditionally*‚includedevicedrivers.*J*‚Theusershouldnothavetomodifythisfiletoinclude/excludedrivers.*D*„******************************************************************?*„**‚NOTICE:‚Thefollowingconditionalsareorderdependent.„**3*„**‹Donotchangetheorder!‚Localdrivers1st.‡**9*„**‹Theorderdeterminesdevicenumber(HD00,PR,etc)‚***„**‹formostitems.¤**D*„*******************************************************************>*„NOTE:‚"CN00"thru"CN09"reservedfornonVM30(MCCM)ports.* IFNEˆ\NOLTERMƒINCLUDE…&.SIODRV.CIENDC* IFNEˆ\NOVM22ƒINCLUDE…&.VM22DRV.CIENDC*IFNEˆ\NOVM20+\NOVM21+\NOVM30ƒINCLUDE…&.IPCDRV.CIENDC* IFNEˆ\NOVM30?ƒ*„NOTE:‚"CNn0"thru"CNn3"reservedfortheseeachMCCMboard,+ƒ*‹where"n"istheboardnumber(1,2,...).7ƒ*‹"PRn"isassignedsequentiallyforeachMCCMboard.ƒINCLUDE…&.VM30DRV.CIENDCéééy%**ˆVM04.SYSTEM.CI*L****************************************************************************>*‚Thisfilecontainsallboard/systemdependenciesforVM04.Ž*&*‚Itiscalledfrom"&.VERSADOS.CD".¦**Ê*E*‚Theusershouldnothavetomodifythisfileexceptunderextreme‡**‚circumstances.º*L**************************************************************************** <*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~**†ONBOARDRAMADDRESSES*>*†VMEbusdriversrequirethefollowingtargetsystemdependentB*†variablestobedefinedwhenthemacrofileDUALPORT.MCisused:<*†NotethattheONBD$HIparametermayvaryontheVME110and<*†andVME101systemsdependingonthesizeandnumberofRAM<*†chipsusedontheprocessorcard.‚Thevaluesshownarethe?*†minimumrequirements.Modifythatparametertomatchyourown*†systemifdifferent.**;ONBD$LOƒ=$0‹Lowvalueforon-boardram(asseenbydriver)RAM$SQ„=$0‹Differencebetweenon-boardramaddressasseenby*˜driveranddevice.JOFFBD$LO‚=\ONBD$LO+\RAM$SQLowvalueforon-boardram(asseenbydevice)JOFFBD$HI‚=\ONBD$HI+\RAM$SQHighvaluforon-boardram(asseenbydevice) FMSG‰******************************************************************MSG‰**ˆAddressesoftimer,etc.FMSG‰****************************************************************** #TIMER…=$FFFB0000„Addressoftimer.3CLOCKFRQ‚=0ŒNumberofclocktickspermilliseco nd.5PANEL…=$0‹Addressoffrontpanel(notusedonVM04).5TRCFLAGƒ=0ŒTraceflag.‚Zeroimpliesdon'ttrace.‚The/*˜settingofbitsintheTRCFLAGparameterwill1*˜controlwhicheventscauseanentrytobebuilt*˜inthetracetable.*˜Bit#inTRCFLAG†Event *›15‘TRAP#1*›14‘I/Ointerruptnotclaimed*°byusertask.*›13‘Timerinterrupt.*›12‘Usertrap(2-15)*›11‘Exception *›10‘Dispatch*œ9‘I/Ointerruptclaimedby *°usertask*œ8‘ReturnfromLOADMMU*œ7‘Simulatedinterrupt‚6‹-“&*œ6‘SYSFAILinterrupt.**?SYSFAILƒ=0ŒDetermineswhetherornottheoperatingsystemwill5*˜beinterruptedwhenSYSFAILisassertedonthebus.2*˜SomeintelligentboardswillassertSYSFAILwhen0*˜theyexperienceafailureofsomekind.‚Ifyou5*˜havesuchboardsinthesystem,ANDTHEDRIVERSFOR3*˜THESEBOARDSHAVESYSFAILHANDLERS,thenyouwill2*˜probablywantSYSFAILinterruptsenabled.‚Ifthe4*˜appropriateSYSFAILhandlersarenotwritten,then5*˜takingaSYSFAILinterruptwillhangupthesystem,0*˜soyouwouldwantSYSFAILinterruptsdisabled.!*š0=disableSYSFAILinterrupts. *š1=‚enableSYSFAILinterrupts.FMSG‰******************************************************************.MSG‰**ƒLocalterminal/printerdeviceaddresses#MSG‰**ƒShortI/Ospacebaseaddress&MSG‰**ƒShortI/OspaceaddressoffsetsFMSG‰****************************************************************** :&VECTNOƒ=$FFŠStartingVectorNumber‚usedbyIOC.IPCDRV.AG6LTDA$01ƒ=$FFFB0040„VM04localterminalport1address6LTDA$02ƒ=$FFFB0050„VM04localterminalport2address 3SIOBASEƒ=$FFFF0000„BaseaddressofShortI/Ospace&DEVADDƒ=\SIOBASE.RMS.CIfileandhasavalueequal!*œtotheinitialprogramcounter.AMEMEND1ƒ=$400000†Endingaddrforon-board‚memorymustbe=this.@MEMEND3ƒ=$0‹Ceilingaddrforoff-boardmemory(mustbe 5…=/RD=1=/ENDIF =/IF RD=0 …=/IFC\1Š=/RD=1…=/ENDIF …=/IFC\2Š=/RD=2…=/ENDIF …=/IFC\3Š=/RD=3…=/ENDIF …=/IFC\4 Š=/IFC\5=ARG\1,\2,\3,N,-PCDRVŠ=/ELSE=ARG\1,\2,\3,N,\5Š=/ENDIF…=/ENDIF …=/IFC\5ˆ=ARG\1,\2,\3,\4,-PCDRV…=/ELSEˆ=/IFEQ"PCDRV"\5ˆ=/ELSE‹=/IFEQ"-PCDRV"\5‹=/ELSEŽ=/RD=5‹=/ENDIFˆ=/ENDIF…=/ENDIF=/ENDIFJ=/*‚SetArg6sothisfilecan'tbererundirectlyw/osettingproperargs!=ARG \1,\2,\3,\4,\5,ARGS=OPT -N =/IF RD <> 0Mƒ=/*INVOCATIONERROR!Insufficient,null,and/orinvalidargumentspecified!ƒ=/R?ƒ=END=/ENDIF *=/* ==== Start driver related file copying=/IFEQ "PCDRV"\5O=/*----------------------------------------------------------------------------"=/* Copy all RAD1 files for sysgen=/@„\1:9998.COPYGEN.RADDRV.CFO=/*----------------------------------------------------------------------------!=/* Copy all RIO files for sysgen=/@„\1:9998.COPYGEN.RIODRV.CFO=/*----------------------------------------------------------------------------$=/* Copy all VME600 files for sysgen=/@„\1:9998.COPYGEN.M600DRV.CFŸP¨(°'¸ O=/*----------------------------------------------------------------------------$=/* Copy all VME605 files for sysgen=/@„\1:9998.COPYGEN.M605DRV.CFO=/*----------------------------------------------------------------------------$=/* Copy all VME610 files for sysgen=/@„\1:9998.COPYGEN.M610DRV.CFO=/*----------------------------------------------------------------------------$=/* Copy all VME615 files for sysgen=/@„\1:9998.COPYGEN.M615DRV.CFO=/*----------------------------------------------------------------------------$=/* Copy all VME625 files for sysgen=/@„\1:9998.COPYGEN.M625DRV.CFO=/*----------------------------------------------------------------------------*=/* Copy all PCDRV common files for sysgen=/@„\1:9998.COPYGEN.PCDRV.CF=/ENDIFO=/*----------------------------------------------------------------------------,=/* Copy all driver library files for sysgen=/@„\1:9998.COPYGEN.DRVLIB.CFO=/*----------------------------------------------------------------------------(=/* Copy all MFP driver files for sysgen=/@„\1:9998.COPYGEN.MFPDRV.CFO=/*----------------------------------------------------------------------------)=/* Copy all MPSC driver files for sysgen=/@„\1:9998.COPYGEN.MPSCDRV.CFO=/*----------------------------------------------------------------------------(=/* Copy all PRT driver files for sysgen=/@„\1:9998.COPYGEN.PIADRV.CFO=/*----------------------------------------------------------------------------+=/* Copy all VME050 driver files for sysgen=/@„\1:9998.COPYGEN.M050DRV.CF=/@„\1:9998.COPYGEN.P050DRV.CF=/@„\1:9998.COPYGEN.MPCCDRV.CFO=/*----------------------------------------------------------------------------+=/* Copy all VME300 (GPIB) files for sysgen=/@„\1:9998.COPYGEN.M300DRV.CFO=/*----------------------------------------------------------------------------$=/* Copy all VME315 files for sysgen=/@„\1:9998.COPYGEN.M315DRV.CFO=/*----------------------------------------------------------------------------F=/* Copy all VME316 (VMEbus to I/O channel interface) files for sysgen=/@„\1:9998.COPYGEN.M316DEF.CFO=/*----------------------------------------------------------------------------$=/* Copy all VME320 files for sysgen=/@„\1:9998.COPYGEN.M320DRV.CFO=/*----------------------------------------------------------------------------/=/* Copy all VME435 (mag tape) files for sysgen=/@„\1:9998.COPYGEN.M435DRV.CFO=/*----------------------------------------------------------------------------7=/* Copy all RWIN1 (Winchester) driver files for sysgen=/@„\1:9998.COPYGEN.RWINDRV.CFO=/*----------------------------------------------------------------------------*=/* Copy all disk related files for sysgen=/@„\1:9998.COPYGEN.DSKPARAM.CFO=/*----------------------------------------------------------------------------=/*=/**=/* ==== Start system related file copyingO=/*-----------------------------------------------------------------------------=/*‚CopyallVME122specificfilesforsysgen=/@„\1:9998.COPYGEN.VME122.CFO=/*----------------------------------------------------------------------------!=/* Copy all EET files for sysgen=/@„\1:9998.COPYGEN.EET.CFO=/*----------------------------------------------------------------------------'=/* Copy all FHS & IOS files for sysgen=/@„\1:9998.COPYGEN.FHSIOS.CFO=/*----------------------------------------------------------------------------!=/* Copy all FMS files for sysgen=/@„\1:9998.COPYGEN.FMS.CFO=/*----------------------------------------------------------------------------$=/* Copy all LOADER files for sysgen=/@„\1:9998.COPYGEN.LOADER.CFO=/*----------------------------------------------------------------------------<=/* Copy all BEGIN/END files for sysgen (OSLIST and VERSAPT)=/@„\1:9998.COPYGEN.BEGINEND.CFO=/*----------------------------------------------------------------------------!=/* Copy all IOI files for sysgen=/@„\1:9998.COPYGEN.IOI.CF O=/*----------------------------------------------------------------------------'=/* Copy all CNFG TASK files for sysgen=/@„\1:9998.COPYGEN.CNFGTASK.CFO=/*----------------------------------------------------------------------------!=/* Copy all IOC files for sysgen=/@„\1:9998.COPYGEN.IOC.CFO=/*----------------------------------------------------------------------------!=/* Copy all .EQ files for sysgen=/@„\1:9998.COPYGEN.EQ.CFO=/*----------------------------------------------------------------------------2=/*‚Copyalltherestoftherootfilesforsysgen=/@„\1:9998.COPYGEN.ROOT.CFO=/*----------------------------------------------------------------------------=/*2=/*†VME122.COPYSGEN.CF‚completed.‰Haveaniceday!=/*N=/*‚No"NOARG"and"=END"becauseindependentdriverreleaseitemsmayfollow!éééé'FMS IOI AGÌÌSaaIXR AGÕÕaaVERSADOSCIÞÞaa* *ˆFMS.IOI.AG*G*ˆThiscodeisreferencedbythesysteminitializer.IfFMSispresent,B*ˆthedesiredFMSlogicwillbeexecuted.‚However,iftheuserhasA*ˆelectedtoremoveFMSfromthesystem,animmediatereturnwill*ˆbeexecuted.   ‰SECTION1 ‰XDEF†FMSIOI01 FMSIOI01: IFNE…\FMS$ ‰NOLIST‰INCLUDEƒ&.IOE.EQ‰INCLUDEƒ&.NIO.EQ‰INCLUDEƒ&.FME.EQ‰INCLUDEƒ&.FMI.EQ‰LIST ŠSECTION1*ˆINCLUDEƒ&.IOE.EQ*ˆINCLUDEƒ&.NIO.EQ*ˆINCLUDEƒ&.FME.EQ*ˆINCLUDEƒ&.FMI.EQ  NOVDTS EQU \TOTDSK NO. OF VDT'S!NOFCBS EQU \NODIFFIL NO. OF FCB'S NOFATS EQU \NOFILES NO. OF FAT'SNODVS‚EQU\NODEFVOLNO.OFDV'S#DEFFAB EQU \DEFFAB DEFAULT FAB SIZE"DEFDAT EQU \DEFDAT DEFAULT DB SIZE ‰XREF†FMSDLEN‰PAGE**ˆOUTPUT*’D0=FMSASQLENGTH***D*.IOI MUST CALCULATE LENGTH OF FMS DATA SEGMENT, AS WELL AS SOME ASQE*…LENGTHSBECAUSEOFRESTRICTIONSTHATLINKCANONLYADDANDSUBTRACT*…EXPRESSIONSWITHXREF'S*&*FMS STACK AREA IS FIRST PART OF FMSD- =*…STACKSIZEISDETERMINEDBYNO.OFDIFFERENTFILESTHATCAN*…BEOPENEDATONCE>*COMMON STACK MUST BE LARGE ENOUGH TO ACCOMODATE 12*(NOFCBS+1);*…PLUSALITTLEFORSUBROUTINECALLSISSUEDPRIORTODEVBSY8*…BEINGCALLED(ABOUT30BYTES)PLUSONECOMPLETESETOF*…REGISTERS(66BYTES)***ŠMOVE.L#NOFCBS+1,D0 ŠMULUƒ#12,D0ŠADD.L‚#100,D0 ŠMOVE.LD0,D1ŠMOVE.L#NOVDTS,D0ŠMULUƒ#VDTLEN,D0 ŠADD.L‚D0,D1ŠMOVE.L#NOFCBS,D0ŠMULUƒ#FCBLEN,D0 ŠADD.L‚D0,D1ŠMOVE.L#NOFATS,D0ŠMULUƒ#FATLEN,D0 ŠADD.L‚D0,D1ŠMOVE.L#NODVS,D0ŠMULUƒ#DVLEN,D0 ŠADD.L‚D0,D1*ŠMOVE.L#SECSZE*(SDBSZE+DBSZE+SATSZE+1),D0ŠMULUƒ#NOVDTS,D0ŠADD.L‚D0,D1ŽD1=SEGMENTLENGTHŠMOVE.LD1,FMSDLEN:*CALCULATE LENGTH OF .FMS'S ASQ (EVTLEN+FHSNLN)*(NOFATS+2)ŠMOVE.L#NOFATS+2,D0ŠMULUƒ#EVTLEN+FHSNLN,D0 ENDC‰RTS‰ENDÄT* *ˆFMS.IXR.AG*E* File of I/O XDEF's whose values are determined by sysgen parameters* .ˆXDEF‚NOVDTS,NOFCBS,NOFATS,NODVS,DEFFAB,DEFDAT NOVDTS‚EQUƒ\TOTDSK„No.ofVDT'S!NOFCBS‚EQUƒ\NODIFFIL‚No.ofFCB'S NOFATS‚EQUƒ\NOFILESƒNo.ofFAT'SNODVSƒEQUƒ\NODEFVOL‚No.ofDV'S#DEFFAB‚EQUƒ\DEFFAB„DefaultFABsize"DEFDAT‚EQUƒ\DEFDAT„DefaultDB‚size ENDééééééÍ**ˆFMS.VERSADOS.CI*AMSG‰*************************************************************'MSG‰**ˆFMS--FileManagementSystem”**AMSG‰*************************************************************TASKˆ&.FMS.LO,.FMSSTATE…='DORM'ATTRIB„='CRIT'ATTRIB„='RTIM'ATTRIB„='SYST'PRIORITY‚=$D0FMSSTR„=*ŒFMSloadaddr. FMSASR„=*+2ŠFMSASRentrypointSUBSˆFMS.IXR.AG"ASM‰FMS.IXR.AG,FMS.IXR.RO,\ASMLS;R IFEQˆ\ASMLSWƒ=COPY‡\ASMLS,\WORKLS;AENDC SUBSˆ&.FMS.LG LINKˆ&.FMS.LG IFEQ ˆ\LINKLSWƒ=COPY‡\LINKLS,\WORKLS;AENDCEND‰FMS#*BuildVERSAdos‚.OSLIST.AG=COPY‡OSLIST.FMS.SI,OSLIST.AG;A5* Build VERSAdos patch chain file .VERSAPT.CF!=COPY‡VERSAPT.FMS.CF,VERSAPT.CF;AéééééÖ'EET START AGëëBaaVERSADOSCIôô Paa**ˆEET.START.AG* *ˆRoutineto*,*’StarttheExit/EntryTask(EET)ifpresent********C*******‚IftheEETtaskispresentinthesystemitwillbestarted>*******‚howeverifnotpresentanimmediatereturnwilloccur.********ˆInput/*’A6=StartaddressofI/Ocommondatasegment**ˆOutput***ˆRegisterAlteration**’A0=Destroyed*’D0=Destroyed*‰PAGE**ˆINCLUDEƒ&.TR1.EQ*ˆINCLUDEƒ&.UTILITY.MC*‰NOLIST‰INCLUDEƒ&.TR1.EQ‰INCLUDEƒ&.UTILITY.MC‰LIST‰PAGE‰XDEF†EETSTART   ‰XREF†KILL‰PAGE ‰SECTION1 …IFNE‚\EET$* BIT0…EQU‡0*EETSPB:‰DC.B†'&EET'„Targettaskname"‰DC.L†2‰Targettasksessionnumber‰DC.B†0‰Directiveoptions‰DC.L†0‰Monitortaskname#‰DC.L†0‰Monitortasksessionnumber‰DC.B†60ˆTaskstartupregisters‰DS.W†0…ENDC‰PAGE EETSTART: …IFNE‚\EET$‰MOVE.L„#START,D0*œD0=Startdirective‰LEA‡EETSPB,A0'*œA0=Addressofstartparameterblock‰TRAP†#1 *œStarttask ‰BSRNE…KILL+*œBringsystemdownifunabletostarttask…ENDC‰RTS*œReturntocaller‰END éééãC**ˆEET.VERSADOS.CI*BMSG‰**************************************************************MSG‰**ˆEETEQUvaluesBMSG‰***************************************************************=DEFAULTƒ="SYS:0.&"„*Systemdefaultvolume:usernumber.catalog6SECURITY‚=1ŒSwitchtoindicateifsecuritypackageis,*˜supported.‚Valueofzeroexcludespackage,,*˜nonzeroincludesit.‚Thispackagerequires*˜approximately1Kofmemory.*;SPCCMD„=1ŒSwitchtoindicateifthefollowingusersession/*˜managementcommandsaresupported:‚HELP,CLOSE/*˜ASSIGN,NEWS.‚Valueofzeroexcludescommands.-*˜Thispackagerequiresapproximately1/2kof *˜memory.* ;TERMOCNT‚=2Œ*No.ofterminaloutputtimeoutsbeforelogoff* =CHAINBAT‚=1ŒSwitchtoindicateifchainandbatchprocessing1*˜aresupported.‚Valueofzeroexcludesbatchand-*˜chain;non-zeroincludesthem.‚Thispackage**˜requiresapproximately3-1/2Kofmemory.*8CONBATCH‚=1ŒNumberofconcurrentbatchjobsthatcanbe'*˜running.‚CannotbemorethanNOTASKS.*;BATCHPGE‚=2ŒNo.ofpagesforbatchjobqueueing.‚Eachpage/*˜accomodates32entries.‚Inaddition,thereis**˜spacefor31entriesminusthenumberof*˜terminalsinthesystem.*Autobreakinactive*›1-->Autobreakactive*˜Bit1:*›0-->Autologoninactive*›1-->Autologonactive**MSG‰AMSG‰************************************************************* MSG‰**ˆEET--EntryExitTask›**ì=õAMSG‰*************************************************************TASKˆ&.EET.LO,&EETSTATE…='DORM'ATTRIB„='CRIT'ATTRIB„='SYST' SESSIONƒ=2PRIORITY‚=$C8EETSTR„=*ŒEETloadaddr.SUBSˆ&.EET.LG,&.CMDLIST.AG&ASM‰&.CMDLIST.AG,&.CMDLIST.RO,\ASMLS;R IFEQˆ\ASMLSWƒ=COPY‡\ASMLS,\WORKLS;AENDC LINKˆ&.EET.LG IFEQˆ\LINKLSWƒ=COPY‡\LINKLS,\WORKLS;AENDCEND‰EET5* Build VERSAdos patch chain file .VERSAPT.CF!=COPY‡VERSAPT.EET.CF,VERSAPT.CF;Aé ééééé'FHS IXR AG  aa* *ˆFHS.IXR.AG*E* File of I/O XDEF's whose values are determined by sysgen parameters* ˆXDEF‚LUNS &LUNS„EQUƒ\MAXLU+1‚No.ofLU'spertask ENDéééééé é 'GET TASKID AGOaa**ˆGET.TASKID.AG* *ˆRoutineto'*’Getthespecifiedtaskidentification*D*ˆThisroutineiscalledbyFHSandIOSduringtheirinitialization.E*ˆSinceIOSandFHScannotdistinguishbetweenaROMandaRAMsystemF*ˆthismodulewillbeassembledatSYSGENtimeasthisdistinctioncan*ˆbedeterminedthen.**‰PAGE**ˆINCLUDEƒ&.TR1.EQ*ˆINCLUDEƒ&.TR1RTCD.EQ*‰NOLIST‰INCLUDEƒ&.TR1.EQ‰INCLUDEƒ&.TR1RTCD.EQ‰LIST‰PAGE**ˆINPUT:-*’A0=ADDRESSOFGETTASKIDPARAMETERBLOCK*’A1=TASKNAME*’D0=TASKSESSIONNUMBER** *ˆOUTPUT:**’A0=FIRST‚HALFOFTASKIDƒ(TCBADDRESS)+*’A1=SECONDHALFOFTASKIDƒ(SESSIONNBR)*’D0=RESULTSOFTRAPCALL* *—....UNLESS*%*¦THISISAROMSYSTEMANDTHETARGET*¦TASKCANNOTBEFOUNDTHEN*¦D0.B=NEGATIVEONE(-1)**ˆRETURNCONDITONS:*–ZERO‚-ƒSUCCESSFULREQUEST!*’NON-ZERO‚-UNSUCCESSFULREQUEST!*’NEGATIVE‚-UNSUCCESSFULREQUEST+*ŸROMBASEDSYSTEMWITHTARGETTASKMISSING‰PAGE**ˆEXTERNALDEFINITIONS* ‰XDEF†GETTSKID‰PAGE ‰SECTION0 GETTSKID:‰MOVE.L„A1,(A0)‰MOVE.L„D0,4(A0)*œSETRESPECTIVELY *TASKNAME*TASKSESSIONNUMBER‰MOVE.L„#GTTASKID,D0*œD0=GETTASKIDDIRECTIVE‰TRAP†#1*œINITIATEGETTASKIDREQUEST …IFNE…\$ROPT*‰CMP.B…#RTCDTASK,D0‰BNE.S…GTID0100-*œBRANCHIFERROROTHERTHANTARGETTASKDOES *œNOTEXIST‰MOVE.B„#-1,D0**œSETFLAG-TARGETTASKDOESNOTEXISTON*§AROMBASEDSYSTEM…ENDC GTID0100: ‰TST.B…D0*œESTABLISHOUTPUTCONDITONS‰RTS*œRETURNTOCALLER‰ENDéP7'IOC M300XTR AG##%aaBEGIN AG,, iaaP050DRV AG==<aaP115DRV AGFF8aaM300DRV AGOO xa  aM315DRV AG``^­ffM320DRV AGÁÁBffM4205 AGââaaM4208 AG÷aaM435DRV AG$$aaACIADRV AGEE WaaDARTDRV AGVV VaaEPCIDRV AGgg ]aaVM20DRV AGxx2ÛaaMFPDRV AG±±:aaMPCCDRV AGºº TaaMPSCDRV AGËË€aaPIADRV AGääˆaaRWINDRV AGõõ?ŒaaDRVS10 AG661aa**ˆ&.M300XTR.AG*(EXTR…IDNT†1,0‡GPIBExtraPageCalculator *‚Includedfiles: *‰&.IOE.EQ *‰&.CCB.EQ*‰&.M300DRV.EQŠNOLISTŠINCLUDE&.IOE.EQŠINCLUDE&.CCB.EQŠINCLUDE&.M300DRV.EQŠLIST 4‰XDEF†GPIBXP„ExtrapagewordtobepassedtoGPIBDRV*A*…NOTE:GPIBXPispassedtoGPIBDRVasaword,butonlytheupper@*ƒbytecontainsthevalidextrapages,andthelowerbyteis00.D*ƒthisisnecessarybecauseonlywordsmaybepassedthroughanXREF4*ƒandCMRexpectstheExtraPagesinthefirstbyte.*BGPIBUCL0 SET \GB0$UCL+\G0A$UCL+\G0B$UCL+\G0C$UCL+\G0D$UCL+\G0E$UCLBGPIBUCL0 SET GPIBUCL0+\G0F$UCL+\G0G$UCL+\G0H$UCL+\G0I$UCL+\G0J$UCL9GPIBUCL0 SET GPIBUCL0+\G0K$UCL+\G0L$UCL+\G0M$UCL+\G0N$UCL BGPIBUCL1 SET \GB1$UCL+\G1A$UCL+\G1B$UCL+\G1C$UCL+\G1D$UCL+\G1E$UCLBGPIBUCL1 SET GPIBUCL1+\G1F$UCL+\G1G$UCL+\G1H$UCL+\G1I$UCL+\G1J$UCL9GPIBUCL1 SET GPIBUCL1+\G1K$UCL+\G1L$UCL+\G1M$UCL+\G1N$UCL GPIBUCL‚SET†GPIBUCL0‰IFGT…GPIBUCL1-GPIBUCL0GPIBUCL‚SET†GPIBUCL1‰ENDC /GPIBXPƒEQU‡(GPIBUCL+(IOSILN*15)+CNFGAREA)&$FF00 ‰ENDééé&**ˆIOC.BEGIN.AG*O*********************************************************************************ˆIOC--DEFINEDCB'SANDCDB'S*(*‡(ThemacrosusedaredefinedinIODM.)*E*‚08/01/84‚ChangedNOSASItoNVME420,NOWINtoNORWIN,andTOTM435to=*ŒNVME435forthenewsysgenmethod.‚SplitoutdriverDCB/CDB&*ŒalsotorelocatableIOCfilemethod.4*‚11/10/83‚ModifiedtouseIOCVECandIOCLVLequates&*ŒincludesWinchesterandSASIdrivers*Œmagtapeatlevel1'*‚09/02/83‚Modifiedformagtapedriver*O******************************************************************************* *‚Includedequatefiles: *†&.IOE.EQ *†&.NIO.EQ* NOLIST‚INCLUDEƒ&.IOE.EQ‚INCLUDEƒ&.NIO.EQ LIST *@*‚ThissectionbecomesIOCOMS,whichisusedbyFMS,IOS,&FHS.*#IOCOM„IDNT†04,01‡I/OCOMMONSEGMENT SECTION0‚===DCBSECTION=== OPT MEX  XDEF IOCOMS,CCSEG XREF DCBEND *6*‚Hereareparametersdescribingthetablesandlists.*IOCOMS DC.L0†I/  Osysgenoptions. ( DC.L DCQSTR Start address of DCQ space.&DC.LDCQENDEndƒaddressofDCQspace.DC.L0†Addressof1stDCQ. ( DC.L LUTSTR Start address of LUT space.&DC.LLUTENDEndƒaddressofLUTspace.DC.L0†Addressof1stLUT. ( DC.L DCBTBL Start address of DCB space.&DC.LDCBENDEndƒaddressofDCBspace. DC.L DCBTBL Address of 1st DCB. DC.L0SEMAPHOREFLAG%DC.B0SYSTEMTASKCOORDINATIONFLAG *“BIT‡MEANING%*•0‡0-->IOSINITIALIZATIONNOTDONE*1-->IOSINITIALIZATION…DONE%*•1‡0-->FHSINITIALIZATIONNOTDONE*1-->FHSINITIALIZATION…DONE%*•2‡0-->FMSINITIALIZATIONNOTDONE*1-->FMSINITIALIZATION…DONEDCB.B15,0‰FORFUTUREUSE(DC.L0,0,0‰TASKIDFORUNCLAIMEDBREAKS PAGEO********************************************************************************C*ˆStorageforDCQ'sandLUT's.‚Initiallythesetwolistsareempty.*O******************************************************************************* * *‚DCQspace.*$O- DCQSTR EQU * DS.B \PAGESIZE*\DCQPGEDCQEND EQU *-1 * *‚LUTspace.* LUTSTR EQU * DS.B LUTBEG*\NOTASKS DS.B LUTSEG*\NOTASKS*(\MAXLU+1)LUTEND EQU *-1‰PAGEO**********************************************************************************ˆDefineDCB'sbasedonSYSGENparameters.*O******************************************************************************* *SECTION0‚===DCBSECTION===*DCBTBLEQU*‡ThisisthetopofDCBspace.  SECTION1‚===CDBSECTION===IDC.W0‚@@@@dummyallocationtosatisfyLINK1.6problemofnullsection)CCSEG‚EQU*‡ThisisthetopofCDBspace.  ENDééééé**ˆIOC.P050DRV.AG**‚Includedequatefiles: *‰&.IOE.EQ *‰&.NIO.EQ*ŠNOLISTŠINCLUDE&.IOE.EQŠINCLUDE&.NIO.EQŠLIST !*‚Includeddevicespecificmacros*‰MACRO.DCB.SI*‰MACRO.DCBPRT.SI*ŠNOLISTŠINCLUDEMACRO.DCB.SIŠINCLUDEMACRO.DCBPRT.SIŠLIST ŠPAGE&*‚AssignvaluesfromSYSGENparameters*.DVCODEƒSET\&PRTDV„Definestartingdevicecode0L050$01‚EQU\L050$01ƒDefineVME050boardaddress6NP050$1‚SET\NP050$1ƒDefine#printersonVME050board=PRT050ƒEQU\P050DRVƒDefinethephysicaladdressofthedriver 5CNAME„SET…('C'<<16)+(DVCODE>>8)‚channelnamemnemonicE*ƒNOTE:‚UseofCNAMEguaranteesthattheASCIIprinterDCBidentifier>*Š(PR‚,PR1,etc)willalwayscorrespondwiththechannelname*Šmnemonic  (CPR,CPR1,etc.). O*******************************************************************************:*‚SETUPDCB'S&CDB'SFORREMOTEPRINTERS‚-‚VME050boardsO******************************************************************************* /* Define PCP$ATW one time here for all printers.PCP$ATW‚SET…\PCP$TLRL<<2+\PCP$AFF<<1+\PCP$LNFD IFGE‚NP050$1-1*ƒVME050Board.printerport**--‚DATACONTROLBLOCK‚--*K PRTDCB DVCODE,IOSID,IOSESS,$632,95,1,CNAME,0,$0007,$0033,PCP$ATW,\PCP$REC,%&‡\PCP$RSZ,\PCP$WTO,\PCP$LRL,\PCP$ELCIFNEDVCODE-'PR‚'1DVCODESETDVCODE+$100‚SETUPFORNEXTPRINTERID ENDCIFEQDVCODE-'PR‚'DVCODE SET 'PR1 ' ENDC ***‚CHANNELDATABLOCK‚***: CDB 0,CNAME,XTPV050,254,PRT050,0,L050$01+$81,7,$8B,5,$10,&„0,0,0,0,0,0,0,0,0,0,0  ENDC  ENDé5=**ˆIOC.P115DRV.AG**‚Includedequatefiles: *‰&.IOE.EQ *‰&.NIO.EQ*ŠNOLISTŠINCLUDE&.IOE.EQŠINCLUDE&.NIO.EQŠLIST !*‚Includeddevicespecificmacros*‰MACRO.DCB.SI*‰MACRO.DCBPRT.SI*ŠNOLISTŠINCLUDEMACRO.DCB.SIŠINCLUDEMACRO.DCBPRT.SIŠLIST ŠPAGE&*‚AssignvaluesfromSYSGENparameters*.DVCODEƒSET\&PRTDV„Definestartingdevicecode8LPDA$01‚EQU\LPDA$01ƒDefinelocalprinterdeviceaddress=PRT115ƒEQU\P115DRVƒDefinethephysicaladdressofthedriver 0CNAME„SET…'CPR'+DVCODE&$FF‚channelnamemnemonicE*ƒNOTE:‚UseofCNAMEguaranteesthattheASCIIprinterDCBidentifier>*Š(PR‚,PR1,etc)willalwayscorrespondwiththechannelname*Šmnemonic(CPR,CPR1,etc.). O*******************************************************************************9*‚SETUPDCB'S&CDB'SFORREMOTEPRINTERS‚-‚VME115boardO******************************************************************************* /* Define PCP$ATW one time here for all printers.PCP$ATW‚SET…\PCP$TLRL<<2+\PCP$AFF<<1+\PCP$LNFD *ƒVME115Board.printerport**--‚DATACONTROLBLOCK‚--*K PRTDCB DVCODE,IOSID,IOSESS,$632,95,1,CNAME,0,$0007,$0033,PCP$ATW,\PCP$REC,%&‡\PCP$RSZ,\PCP$WTO,\PCP$LRL,\PCP$ELCIFNEDVCODE-'PR‚'1DVCODESETDVCODE+$100‚SETUPFORNEXTPRINTERID ENDCIFEQDVCODE-'PR‚'DVCODE SET 'PR1 ' ENDC ***‚CHANNELDATABLOCK‚***6 CDB 0,CNAME,XTPV115,254,PRT115,0,LPDA$01,1,$C1,5,$10,&„0,0,0,0,0,0,0,0,0,0,0  ENDéé>9**ˆIOC.M300DRV.AG**‚Includedequatefiles: *ˆ&.IOE.EQ *ˆ&.NIO.EQ*‰NOLIST‰INCLUDEƒ&.IOE.EQ‰INCLUDEƒ&.NIO.EQ‰LIST !*‚Includeddevicespecificmacros*ˆMACRO.DCB.SI*ˆMACRO.DCBGPIB.SI*‰NOLIST‰INCLUDEƒMACRO.DCB.SI‰I  NCLUDEƒMACRO.DCBGPIB.SI‰LIST‰PAGE***‚DefinevariablesusingSYSGENparameters*+M300…EQU‚\M300DRV‚AddressofMVME300driver-L300$01‚EQU‚\L300$01‚MVME300board#1address-L300$02‚EQU‚\L300$02‚MVME300board#2address  O********************************************************************************ƒSETUPDCB'SFORMVME300O******************************************************************************* ‰PAGEA******************************************************************.*…DefineGPIBDefaultParametersandAttribute*A******************************************************************GPD$ATM‚EQU‡$1F‘ATTRIBUTEMASKGPD$PAM‚EQU‡$FFFPARAMETERMASK7GPD$AT1‚EQU‡$2137DEVICEATTRIBUTES(BUS,NOTSHARABLE)7GPD$AT2‚EQU‡$6137DEVICEATTRIBUTES(DEV,NOTSHARABLE)3GPD$AT3‚EQU‡$4137DEVICEATTRIBUTSE(DEV,SHARABLE)/GPD$ATW‚EQU‡$3’ATTRIBUTEWORD(TALKER/LISTENER)(GPD$WTO‚EQU‡30000WRITETIMEOUT(30SEC)'GPD$RTO‚EQU‡30000READTIMEOUT‚(30SEC)#GPD$EOR‚EQU‡$19010901‹ENDOFRECORDGPD$EOS‚EQU‡$0A0AENDOFSTRING'GPD$PPC‚EQU‡$80‘PARALLELPOLLCONFIGUREGPD$PRA‚EQU‡$1F‘PRIMARYADDRESS$GPD$WLN‚EQU‡$0’WRITETRANSFERLENGTH#GPD$RLN‚EQU‡$0’READTRANSFERLENGTH*GPD$RSM‚EQU‡$0’READSECONDARYADDRESSMASK+GPD$WSM‚EQU‡$0’WRITESECONDARYADDRESSMASK*6*‚DCBƒDEFINITIONFORIEEE-488BUSANDBUSSABLEDEVICES* IFGE \NVME300-1*C GPDVDCB.14 'BUSA',GPD$AT1,0,1,GPD$ATM,GPD$PAM,$1F,GPD$WTO,GPD$RTO,B& GPD$EOR,GPD$EOS,GPD$PPC,GPD$PRA,GPD$WLN,GPD$RLN,GPD$RSM,GPD$WSM,& $0,$0,'BUS0'*D GPDVDCB 'BA0A',GPD$AT2,0,1,GPD$ATM,GPD$PAM,GPD$ATW,GPD$WTO,GPD$RTO,B& GPD$EOR,GPD$EOS,GPD$PPC,GPD$PRA,GPD$WLN,GPD$RLN,GPD$RSM,GPD$WSM,& $0,$0,'BUS0'*GEP4D GPDVDCB 'BA0B',GPD$AT3,0,1,GPD$ATM,GPD$PAM,GPD$ATW,GPD$WTO,GPD$RTO,B& GPD$EOR,GPD$EOS,GPD$PPC,GPD$PRA,GPD$WLN,GPD$RLN,GPD$RSM,GPD$WSM,& $0,$0,'BUS0'*D GPDVDCB 'BA0C',GPD$AT2,0,1,GPD$ATM,GPD$PAM,GPD$ATW,GPD$WTO,GPD$RTO,B& GPD$EOR,GPD$EOS,GPD$PPC,GPD$PRA,GPD$WLN,GPD$RLN,GPD$RSM,GPD$WSM,& $0,$0,'BUS0'*D GPDVDCB 'BA0D',GPD$AT3,0,1,GPD$ATM,GPD$PAM,GPD$ATW,GPD$WTO,GPD$RTO,B& GPD$EOR,GPD$EOS,GPD$PPC,GPD$PRA,GPD$WLN,GPD$RLN,GPD$RSM,GPD$WSM,& $0,$0,'BUS0'**†HANDLETHERESTASDEFAULTS*  GPDFDCB.BA0E* ENDC** IFGE \NVME300-2*C GPDVDCB.14 'BUSB',GPD$AT1,0,1,GPD$ATM,GPD$PAM,$1F,GPD$WTO,GPD$RTO,B& GPD$EOR,GPD$EOS,GPD$PPC,GPD$PRA,GPD$WLN,GPD$RLN,GPD$RSM,GPD$WSM,& $0,$0,'BUS1'**†HANDLETHERESTASDEFAULTS* GPDFDCB.BB0A*  ENDC   O********************************************************************************ƒSETUPCDBFORMVME300O******************************************************************************* ***‚CHANNELDATABLOCK‚*********‚IEEE-488CHANNELS  IFGE \NVME300-1I CDB $0001,'BUS0',XTGBUS,254,M300,0,L300$01,64,$B0,4,$40,1,0,0,0,0,0,0,0,&…0,0,0 ENDC* IFGE \NVME300-2I CDB $0001,'BUS1',XTGBUS,254,M300,0,L300$02,64,$B1,4,$40,1,0,0,0,0,0,0,0,&…0,0,0 ENDC  ENDéé  **ˆIOC.M315DRV.AG**‚Includedequatefiles: *ˆ&.IOE.EQ *ˆ&.NIO.EQ*‰NOLIST‰INCLUDEƒ&.IOE.EQ‰INCLUDEƒ&.NIO.EQ‰LIST !*‚Includeddevicespecificmacros*ˆMACRO.DCB.SI*ˆMACRO.DCBDISK.SI*‰NOLIST‰INCLUDEƒMACRO.DCB.SI‰INCLUDEƒMACRO.DCBDISK.SI‰LIST‰PAGE***‚DefinevariablesusingSYSGENparameters*+M315…EQU‚\M315DRV‚AddressofMVME315driver-L315$01‚EQU‚\L315$01‚MVME315board#1address-L315$02‚EQU‚\L315$02‚MVME315board#2address8VECTNO1‚EQU‚$FF‡Initializevectornumberfor1stMVME3158VECTNO2‚EQU‚$FE‡Initializevectornumberfor2ndMVME315 'NVME315‚EQU\NVME315‚#ofVME315boardsANH315$1‚EQU\NH315$1‚#hardƒdiskson1stMVME315controllerboardCNF315$1‚EQU\NF315$1‚#floppydiskson1stMVME315controllerboardANH315$2‚EQU\NH315$2‚#hardƒdiskson2ndMVME315controllerboardCNF315$2‚EQU\NF315$2‚#floppydiskson2ndMVME315controllerboard  O********************************************************************************ƒSETUPDCB'SFORMVME315O******************************************************************************* *#*‚SetupDCBparametersforMVME315*‚(mediaindependent)* DEV_ATT‚SET‡$1FDEV_CODESET‡0DEV_STATSET‡4PAR_MASKSET‡$DBF3ECC_LEN‚SET‡11  CHAN_ID‚SET‡'A315'O********************************************************************************(*ˆHARDDISKSONFIRSTMVME315CONTROLLER*O*******************************************************************************‰IFGE†NH315$1-1O********************************************************************************-*ƒFirstharddiskonfirstMVME315controller*O******************************************************************************* DSKNM„SET‡'HD\CONT3151\ZERO'>SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\M3150$1,'H8WIN10'**‚8"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H8WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3150$1,'H5WIN05'**‚51/4"‚5‚megabyte‚hard‚diskXOa]iOqNyPK‰Q‘N™M¡N©R±>*“INCLUDEƒ&.H5WIN05.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3150$1,'H5WIN10'**‚51/4"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3150$1,'H5WIN12'**‚51/4"‚12‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN12.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3150$1,'H5WIN15'**‚51/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN15.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*0*‚SetupattributemaskforharddiskonMVME315*9ATT_MASKSET‚0<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\M3151$1,'H8WIN10'**‚8"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H8WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3151$1,'H5WIN05'**‚51/4"‚5‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN05.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3151$1,'H5WIN10'**‚51/4"‚10‚megabyte‚hard‚disk*“I  NCLUDEƒ&.H5WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3151$1,'H5WIN12'**‚51/4"‚12‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN12.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3151$1,'H5WIN15'**‚51/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN15.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*0*‚SetupattributemaskforharddiskonMVME315*9ATT_MASKSET‚0<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFGE†NF315$1-1O********************************************************************************/*‚FirstfloppydiskonfirstMVME315controller*O******************************************************************************* ‰IFC‡\M3154$1,'F8DDDSI'*-*‚8"‚doubledensity,doublesided,IBMformat*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3154$1,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3154$1,'F8SDSSI'*-*‚8"‚singledensity,singlesided,IBMformat*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3154$1,'F8SDSSM'*2*‚8"‚singledensity,singlesided,Motorolaformat*“INCLUDE„&.F8SDSSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3154$1,'F5DDDSI'*1*‚51/4"‚doubledensity,doublesided,IBMformat*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC 4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*.*‚SetupattributesmaskforfloppyonMVME315*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\M3155$1,'F8DDDSI'*-*‚8"‚doubledensity,doublesided,IBMformat*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3155$1,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3155$1,'F8SDSSI'*-*‚8"‚singledensity,singlesided,IBMformat*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3155$1,'F8SDSSM'*2*‚8"‚singledensity,singlesided,Motorolaformat*“INCLUDE„&.F8SDSSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3155$1,'F5DDDSI'*1*‚51/4"‚doubledensity,doublesided,IBMformat*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC 4*ƒMakesuretheuserhasd  efinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*.*‚SetupattributesmaskforfloppyonMVME315*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\M3156$1,'F8DDDSI'*-*‚8"‚doubledensity,doublesided,IBMformat*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3156$1,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3156$1,'F8SDSSI'*-*‚8"‚singledensity,singlesided,IBMformat*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3156$1,'F8SDSSM'*2*‚8"‚singledensity,singlesided,Motorolaformat*“INCLUDE„&.F8SDSSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3156$1,'F5DDDSI'*1*‚51/4"‚doubledensity,doublesided,IBMformat*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC 4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*.*‚SetupattributesmaskforfloppyonMVME315*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\M3157$1,'F8DDDSI'*-*‚8"‚doubledensity,doublesided,IBMformat*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3157$1,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3157$1,'F8SDSSI'*-*‚8"‚singledensity,singlesided,IBMformat*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3157$1,'F8SDSSM'*2*‚8"‚singledensity,singlesided,Motorolaformat*“INCLUDE„&.F8SDSSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3157$1,'F5DDDSI'*1*‚51/4"‚doubledensity,doublesided,IBMformat*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC 4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*.*‚SetupattributesmaskforfloppyonMVME315*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\M3150$2,'H8WIN10'**‚8"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H8WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3150$2,'H5WIN05'**‚51/4"‚5‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN05.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3150$2,'H5WIN10'**‚51/4"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3150$2,'H5WIN12'**‚51/4"‚12‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN12.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3150$2,'H5WIN15'**‚51/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN15.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*0*‚SetupattributemaskforharddiskonMVME315*9ATT_MASKSET‚0<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\M3151$2,'H8WIN10'**‚8"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H8WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3151$2,'H5WIN05'**‚51/4"‚5‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN05.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3151$2,'H5WIN10'**‚51/4"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3151$2,'H5WIN12'**‚51/4"‚12‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN12.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3151$2,'H5WIN15'**‚51/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN15.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*0*‚SetupattributemaskforharddiskonMVME315*9ATT_MASKSET‚0<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFGE†NF315$2-1O********************************************************************************/*‚FirstfloppydiskonfirstMVME315controller*O******************************************************************************* ‰IFC‡\M3154$2,'F8DDDSI'*-*‚8"‚doubledensity,doublesided,IBMformat*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3154$2,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3154$2,'F8SDSSI'*-*‚8"‚singledensity,singlesided,IBMformat*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3154$2,'F8SDSSM'*2*‚8"‚singledensity,singlesided,Motorolaformat*“INCLUDE„&.F8SDSSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3154$2,'F5DDDSI'*1*‚51/4"‚doubledensity,doublesided,IBMformat*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC 4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*.*‚SetupattributesmaskforfloppyonMVME315*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\M3155$2,'F8DDDSI'*-*‚8"‚doubledensity,doublesided,IBMformat*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3155$2,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3155$2,'F8SDSSI'*-*‚8"‚singledensity,singlesided,IBMformat*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3155$2,'F8SDSSM'*2*‚8"‚singledensity,singlesided,Motorolaformat*“INCLUDE„&.F8SDSSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3155$2,'F5DDDSI'*1*‚51/4"‚doubledensity,doublesided,IBMformat*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC 4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*.*‚SetupattributesmaskforfloppyonMVME315*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\M3156$2,'F8DDDSI'*-*‚8"‚doubledensity,doublesided,IBMformat*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3156$2,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3156$2,'F8SDSSI'*-*‚8"‚singledensity,singlesided,IBMformat*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3156$2,'F8SDSSM'*2*‚8"‚singledensity,singlesided,Motorolaformat*“INCLUDE„&.F8SDSSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3156$2,'F5DDDSI'*1*‚51/4"‚doubledensity,doublesided,IBMformat*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC 4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*.*‚SetupattributesmaskforfloppyonMVME315*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\M3157$2,'F8DDDSI'*-*‚8"‚doubledensity,doublesided,IBMformat*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3157$2,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3157$2,'F8SDSSI'*-*‚8"‚singledensity,singlesided,IBMformat*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3157$2,'F8SDSSM'*2*‚8"‚singledensity,singlesided,Motorolaformat*“INCLUDE„&.F8SDSSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3157$2,'F5DDDSI'*1*‚51/4"‚doubledensity,doublesided,IBMformat*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC 4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*.*‚SetupattributesmaskforfloppyonMVME315*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\M3200$1,'H8WIN10'**‚8"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H8WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3200$1,'H5WIN05'**‚51/4"‚5‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN05.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3200$1,'H5WIN10'**‚51/4"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3200$1,'H5WIN15'**‚51/4"‚15‚megabyte‚hard‚disk*¹[ÂXÊJÒF“INCLUDEƒ&.H5WIN15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3200$1,'H5WIN40'**‚51/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN40.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*0*‚SetupattributemaskforharddiskonMVME320*9ATT_MASKSET‚0<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\M3201$1,'H8WIN10'**‚8"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H8WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3201$1,'H5WIN05'**‚51/4"‚5‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN05.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3201$1,'H5WIN10'**‚51/4"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN10.SI  SIZESET‚SET‡1‰ENDC‰IFC‡\M3201$1,'H5WIN15'**‚51/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3201$1,'H5WIN40'**‚51/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN40.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*0*‚SetupattributemaskforharddiskonMVME320*9ATT_MASKSET‚0<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFGE†NF320$1-1;************************************************************/*‚FirstfloppydiskonfirstMVME320controller*;*********************************************************** ‰IFC‡\M3202$1,'F8DDDSI'*-*‚8"‚doubledensity,doublesided,IBMformat*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3202$1,'F8SDSSI'*-*‚8"‚singledensity,singlesided,IBMformat*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3202$1,'F5DDDSI'*1*‚51/4"‚doubledensity,doublesided,IBMformat*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*.*‚SetupattributesmaskforfloppyonMVME320*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\M3203$1,'F8DDDSI'*-*‚8"‚doubledensity,doublesided,IBMformat*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3203$1,'F8SDSSI'*-*‚8"‚singledensity,singlesided,IBMformat*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3203$1,'F5DDDSI'*1*‚51/4"‚doubledensity,doublesided,IBMformat*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*.*‚SetupattributesmaskforfloppyonMVME320*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFGE†NH420-1=**************************************************************,*ƒFirstharddiskonfirstSASI5‚controller*8******************************************************** ‰IFC‡\&M4200,'H5WIN05'**‚51/4"‚5‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN05.SI SIZESET‚SET‡1‰ENDC‰IFC‡\&M4200,'H5WIN10'**‚51/4"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\&M4200,'H5WIN15'**‚51/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\&M4200,'H5WIN40'**‚51/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN40.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*ÚaãLëFó!/*‚SetupattributemaskforharddiskonSASI‚5*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\&M4201,'H5WIN05'**‚51/4"‚5‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN05.SI SIZESET‚SET‡1‰ENDC‰IFC‡\&M4201,'H5WIN10'**‚51/4"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\&M4201,'H5WIN15'**‚51/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN15.SI SIZESET‚SET‡1‰ENDC ‰IFC‡\&M4201,'H5WIN40'**‚51/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN40.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*/*‚SetupattributemaskforharddiskonSASI5*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\&M4202,'F5DDDSI'*1*‚51/4"‚doubledensity,doublesided,IBMformat*“INCLUDEƒ&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*+*‚SetupattributesmaskforfloppyonSAS5*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\&M4203,'F5DDDSI'*1*‚51/4"‚doubledensity,doublesided,IBMformat*“INCLUDEƒ&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*-*‚SetupattributesmaskforfloppyonSASI5*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFGE†NH420-1=**************************************************************,*ƒFirstharddiskonfirstSASI8‚controller*8******************************************************** ‰IFC‡\&M4200,'H8WIN10'**‚8"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H8WIN10.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*/*‚SetupattributemaskforharddiskonSASI8*9ATT_MASKSET‚0<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\&M4201,'H8WIN10'**‚8"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H8WIN10.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*/*‚SetupattributemaskforharddiskonSASI8*9ATT_MASKSET‚0<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFGE†NF420-1;************************************************************.*‚FirstfloppydiskonfirstSASI8controller*;*********************************************************** ‰IFC‡\&M4202,'F8DDDSI'*-*‚8"‚doubledensity,doublesided,IBMformat*“INCLUDEƒ&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\&M4202,'F8SDSSI'*-*‚8"‚singledensity,singlesided,IBMformat*“INCLUDEƒ&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*-*‚SetupattributesmaskforfloppyonSASI8*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\&M4203,'F8DDDSI'*-*‚8"‚doubledensity,doublesided,IBMformat*“INCLUDEƒ&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\&M4203,'F8SDSSI'*-*‚8"‚singledensity,singlesided,IBMformat*“INCLUDEƒ&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*-*‚SetupattributesmaskforfloppyonSASI8*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFGE†NFV20$1-1;************************************************************+*‚FirstfloppydiskonfirstFDCcontroller*;*********************************************************** ‰IFC‡\VM200$1,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM200$1,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC***‚SetupattributesmaskforfloppyonFDC*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\VM201$1,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM201$1,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC***‚SetupattributesmaskforfloppyonFDC*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\VM202$1,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM202$1,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC***‚SetupattributesmaskforfloppyonFDC*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\VM203$1,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM203$1,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC***‚Setupattributesmaskfor floppyonFDC*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFGE†NFV20$2-1;************************************************************,*‚FirstfloppydiskonsecondFDCcontroller*;*********************************************************** ‰IFC‡\VM200$2,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM200$2,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC***‚SetupattributesmaskforfloppyonFDC*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\VM201$2,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM201$2,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC***‚SetupattributesmaskforfloppyonFDC*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\VM202$2,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM202$2,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC***‚SetupattributesmaskforfloppyonFDC*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\VM203$2,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM203$2,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC***‚SetupattributesmaskforfloppyonFDC*9ATT_MASKSET‚1<>8)‚channelnamemnemonic C*ƒDefineprinterattributeword(PCP$ATW)onetimeforallprinters.PCP$ATW‚SET‡\PCP$TLRL<<2+\PCP$AFF<<1+\PCP$LNFD O*******************************************************************************)*‚SETUPDCBFOR1STPIA(PORTA)PRINTERO******************************************************************************* IFGE‚NUBRD1-1**ƒPIA#1,printerportA**--‚DATACONTROLBLOCK‚--**K PRTDCB DVCODE,IOSID,IOSESS,$632,95,1,CNAME,0,$0007,$0033,PCP$ATW,\PCP$REC,%&‡\PCP$RSZ,\PCP$WTO,\PCP$LRL,\PCP$ELC IFNEDVCODE-'PR‚'1DVCODESETDVCODE+$100‚SetupfornextprinterID ENDCIFEQDVCODE-'PR‚'DVCODE SET 'PR1 ' ENDC O*******************************************************************************)*‚SETUPCDBFOR1STPIA(PORTA)PRINTERO**********************************************************************************‚CHANNELDATABLOCK‚***> CDB 0,CNAME,CHANTYPE,254,PIA,0,DEVADDR1,7,IOCVECT,IOCLVL,$10,&„0,0,0,0,0,0,0,0,0,0,0 ENDC  O*******************************************************************************)*‚SETUPDCBFOR1STPIA(PORTB)PRINTERO*******************************************************************************IFGE‚NUBRD1-2*ƒPIA#1,printerportB5CNAME„SET…('C'<<16)+(DVCODE>>8)‚channelnamemnemonic**--‚DATACONTROLBLOCK‚--**ÜGåBK PRTDCB DVCODE,IOSID,IOSESS,$632,95,1,CNAME,0,$0007,$0033,PCP$ATW,\PCP$REC,%&‡\PCP$RSZ,\PCP$WTO,\PCP$LRL,\PCP$ELC IFNEDVCODE-'PR‚'DVCODE SET DVCODE+$100 ENDC)IFEQDVCODE-'PR‚'SETUPNEXTPRINTERIDDVCODE SET 'PR1 ' ENDC ***‚CHANNELDATABLOCK‚***D CDB 0,CNAME,CHANTYPE,254,PIA,0,DEVADDR1+PORTB,7,IOCVECT,IOCLVL,$10,&„0,0,0,0,0,0,0,0,0,0,0 ENDC  IFGE‚NOPIA-2O*******************************************************************************)*‚SETUPDCBFOR2NDPIA(PORTA)PRINTERO*******************************************************************************IFGE‚NUBRD2-1*ƒPIA#2,printerportA5CNAME„SET…('C'<<16)+(DVCODE>>8)‚channelnamemnemonic**--‚DATACONTROLBLOCK‚--**K PRTDCB DVCODE,IOS ID,IOSESS,$632,95,1,CNAME,0,$0007,$0033,PCP$ATW,\PCP$REC,%&‡\PCP$RSZ,\PCP$WTO,\PCP$LRL,\PCP$ELC IFNEDVCODE-'PR‚'1DVCODESETDVCODE+$100‚SETUPFORNEXTPRINTERID ENDCIFEQDVCODE-'PR‚'DVCODE SET 'PR1 ' ENDC ***‚CHANNELDATABLOCK‚***> CDB 0,CNAME,CHANTYPE,254,PIA,0,DEVADDR2,7,IOCVECT,IOCLVL,$10,&„0,0,0,0,0,0,0,0,0,0,0 ENDC O*******************************************************************************)*‚SETUPDCBFOR2NDPIA(PORTB)PRINTERO*******************************************************************************IFGE‚NUBRD2-2*ƒPIA#2,printerportB5CNAME„SET…('C'<<16)+(DVCODE>>8)‚channelnamemnemonic**--‚DATACONTROLBLOCK‚--**K PRTDCB DVCODE,IOSID,IOSESS,$632,95,1,CNAME,0,$0007,$0033,PCP$ATW,\PCP$REC,%&‡\PCP$RSZ,\PCP$WTO,\PCP$LRL,\PCP$ELC IFNEDVCODE-'PR‚'DVCODE SET DVCODE+$100 ENDC)IFEQDVCODE-'PR‚'SETUPNEXTPRINTERIDDVCODE SET 'PR1 ' ENDC ***‚CHANNELDATABLOCK‚***D CDB 0,CNAME,CHANTYPE,254,PIA,0,DEVADDR2+PORTB,7,IOCVECT,IOCLVL,$10,&„0,0,0,0,0,0,0,0,0,0,0 ENDC ENDC END**ˆIOC.RWINDRV.AG**‚Includedequatefiles: *†&.IOE.EQ *†&.NIO.EQ* NOLIST‚INCLUDEƒ&.IOE.EQ‚INCLUDEƒ&.NIO.EQ LIST !*‚Includeddevicespecificmacros*†MACRO.DCB.SI*†MACRO.DCBDISK.SI* NOLIST‚INCLUDEMACRO.DCB.SI‚INCLUDEMACRO.DCBDISK.SI LIST  PAGE**‚DefinevariablesusingSYSGENparameters*)RWIN…EQU\RWINDRV‚addressofRWIN1driver)LWIN$01‚EQU\LWIN$01‚RWIN1bd.#1address)LWIN$02‚EQU\LWIN$02‚RWIN1bd.#2addressANHRWIN$1EQU\NHRWIN$1#…harddiskson1stRWIN1controllerboardENFRWIN$1 EQU \NFRWIN$1 # floppies disks on 1st RWIN1 controller boardANHRWIN$2EQU\NHRWIN$2#…harddiskson2ndRWIN1controllerboardENFRWIN$2 EQU \NFRWIN$2 # floppies disks on 2nd RWIN1 controller board  O********************************************************************************ƒSETUPDCB'SFORRWIN1O******************************************************************************* *!*‚SetupDCBparametersforRWIN1*‚(mediaindependent)* DEV_ATT‚SET‡$1FDEV_CODESET‡0DEV_STATSET‡4PAR_MASKSET‡$1AF3 ECC_LEN‚SET‡0  F***********************************************************************&*ˆHARDDISKSONFIRSTRWIN1CONTROLLER*F**********************************************************************CHAN_ID‚SET‡'WIN1'‰IFGE†NHRWIN$1-1F***********************************************************************+*ƒFirstharddiskonfirstRWIN1controller*F********************************************************************** DSKNM„SET‡'HD\CONTWIN1\ZERO'>SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\RWIN0$1,'H8WIN10'**‚8"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H8WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN0$1,'H5WIN05'**‚51/4"‚5‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN05.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN0$1,'H5WIN10'**‚51/4"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN0$1,'H5WIN15'*íXöZþNNQSN&M*‚51/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN0$1,'H5WIN40'**‚51/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN40.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*.*‚SetupattributemaskforharddiskonRWIN1*9ATT_MASKSET‚0<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\RWIN1$1,'H8WIN10'**‚8"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H8WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN1$1,'H5WIN05'**‚51/4"‚5‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN05.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN1$1,'H5WIN10'**‚51/4"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN1$1,'H5WIN15'**‚51/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN1$1,'H5WIN40'**‚51/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN40.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*.*‚SetupattributemaskforharddiskonRWIN1*9ATT_MASKSET‚0<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\RWIN2$1,'F8DDDSI'*-*‚8"‚doubledensity,doublesided,IBMformat*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN2$1,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN2$1,'F8SDSSI'*-*‚8"‚singledensity,singlesided,IBMformat*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN2$1,'F8SDSSM'*2*‚8"‚singledensity,singlesided,Motorolaformat*“INCLUDE„&.F8SDSSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN2$1,'F5DDDSI'*1*‚51/4"‚doubledensity,doublesided,IBMformat*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*,*‚SetupattributesmaskforfloppyonRWIN1*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\RWIN3$1,'F8DDDSI'*-*‚8"‚doubledensity,doublesided,IBMformat*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN3$1,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN3$1,'F8SDSSI'*-*‚8"‚singledensity,singlesided,IBMformat*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN3$1,'F8SDSSM'*2*‚8"‚singledensity,singlesided,Motorolaformat*“INCLUDE„&.F8SDSSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN3$1,'F5DDDSI'*1*‚51/4"‚doubledensity,doublesided,IBMformat*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*,*‚SetupattributesmaskforfloppyonRWIN1*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\RWIN0$2,'H8WIN10'**‚8"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H8WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN0$2,'H5WIN05'**‚51/4"‚5‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN05.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN0$2,'H5WIN10'**‚51/4"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN0$2,'H5WIN15'**‚51/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN0$2,'H5WIN40'**‚51/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN40.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*.*‚SetupattributemaskforharddiskonRWIN1*9ATT_MASKSET‚0<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\RWIN1$2,'H8WIN10'**‚8"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H8WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN1$2,'H5WIN05'**‚51/4"‚5‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN05.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN1$2,'H5WIN10'**‚51/4"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN1$2,'H5WIN15'**‚51/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN1$2,'H5WIN40'**‚51/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN40.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*.*‚SetupattributemaskforharddiskonRWIN1*9ATT_MASKSET‚0<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\RWIN2$2,'F8DDDSI'*-*‚8"‚doubledensity,doublesided,IBMformat*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN2$2,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN2$2,'F8SDSSI'*-*‚8"‚singledensity,singlesided,IBMformat*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN2$2,'F8SDSSM'*2*‚8"‚singledensity,singlesided,Motorolaformat*“INCLUDE„&.F8SDSSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN2$2,'F5DDDSI'*1*‚51/4"‚doubledensity,doublesided,IBMformat*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*,*‚SetupattributesmaskforfloppyonRWIN1*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\RWIN3$2,'F8DDDSI'*-*‚8"‚doubledensity,doublesided,IBMformat*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN3$2,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN3$2,'F8SDSSI'*-*‚8"‚s ingledensity,singlesided,IBMformat*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN3$2,'F8SDSSM'*2*‚8"‚singledensity,singlesided,Motorolaformat*“INCLUDE„&.F8SDSSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN3$2,'F5DDDSI'*1*‚51/4"‚doubledensity,doublesided,IBMformat*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*,*‚SetupattributesmaskforfloppyonRWIN1*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFGE†NHV21$1-1F***********************************************************************)*ƒFirstharddiskonfirstUDCcontroller*F********************************************************************** ‰IFC‡\VM210$1,'FXCMD16'**‚CMDƒ16‚megabyte‚hard‚disk*“INCLUDEƒ&.FXCMD16.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM210$1,'FXCMD80'*;XDVLOTR\FdMlOtP|R„QŒE”Lœ*‚CMDƒ80‚megabyte‚hard‚disk*“INCLUDEƒ&.FXCMD80.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM210$1,'FXLRK08'**‚LARK‚8‚megabyte‚hard‚disk*“INCLUDEƒ&.FXLRK08.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM210$1,'FXLRK25'**‚LARK‚25‚megabyte‚hard‚disk*“INCLUDEƒ&.FXLRK25.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*,*‚SetupattributemaskforharddiskonUDC*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\VM211$1,'RMCMD16'**‚CMDƒ16‚megabyte‚hard‚disk*“INCLUDEƒ&.RMCMD16.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM211$1,'RMLRK08'**‚LARK‚8‚megabyte‚hard‚disk*“INCLUDEƒ&.RMLRK08.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM211$1,'RMLRK25'**‚LARK‚25‚megabyte‚hard‚disk*“INCLUDEƒ&.RMLRK25.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*,*‚SetupattributemaskforharddiskonUDC*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\VM212$1,'FXCMD16'**‚CMDƒ16‚megabyte‚hard‚disk*“INCLUDEƒ&.FXCMD16.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM212$1,'FXCMD80'**‚CMDƒ80‚megabyte‚hard‚disk*“INCLUDEƒ&.FXCMD80.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM212$1,'FXLRK08'**‚LARK‚8‚megabyte‚hard‚disk*“INCLUDEƒ&.FXLRK08.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM212$1,'FXLRK25'**‚LARK‚25‚megabyte‚hard‚disk*“INCLUDEƒ&.FXLRK25.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*,*‚SetupattributemaskforharddiskonUDC*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\VM213$1,'RMCMD16'**‚CMDƒ16‚megabyte‚hard‚disk*“INCLUDEƒ&.RMCMD16.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM213$1,'RMLRK08'**‚LARK‚8‚megabyte‚hard‚disk*“INCLUDEƒ&.RMLRK08.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM213$1,'RMLRK25'**‚LARK‚25‚megabyte‚hard‚disk*“INCLUDEƒ&.RMLRK25.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*,*‚SetupattributemaskforharddiskonUDC*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFGE†NFV21$1-1;************************************************************+*‚FirstfloppydiskonfirstUDCcontroller*;*********************************************************** ‰IFC‡\VM214$1,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM214$1,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC***‚SetupattributesmaskforfloppyonUDC*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\VM215$1,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM215$1,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC***‚SetupattributesmaskforfloppyonUDC*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\VM216$1,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM216$1,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC***‚SetupattributesmaskforfloppyonUDC*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\VM217$1,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM217$1,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC***‚SetupattributesmaskforfloppyonUDC*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFGE†NHV21$2-1F*************************************************************************ƒFirstharddiskonsecondUDCcontroller*F********************************************************************** ‰IFC‡\VM210$2,'FXCMD16'**‚CMDƒ16‚megabyte‚hard‚disk*“INCLUDEƒ&.FXCMD16.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM210$2,'FXCMD80'**‚CMDƒ80‚megabyte‚hard‚disk*“INCLUDEƒ&.FXCMD80.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM210$2,'FXLRK08'**‚LARK‚8‚megabyte‚hard‚disk*“INCLUDEƒ&.FXLRK08.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM210$2,'FXLRK25'**‚LARK‚25‚megabyte‚hard‚disk*“INCLUDEƒ&.FXLRK25.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*,*‚SetupattributemaskforharddiskonUDC*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\VM211$2,'RMCMD16'**‚CMDƒ16‚megabyte‚hard‚disk*“INCLUDEƒ&.RMCMD16.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM211$2,'RMLRK08'**‚LARK‚8‚megabyte‚hard‚disk*“INCLUDEƒ&.RMLRK08.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM211$2,'RMLRK25'**‚LARK‚25‚megabyte‚hard‚disk*“INCLUDEƒ&.RMLRK25.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*,*‚SetupattributemaskforharddiskonUDC*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\VM212$2,'FXCMD16'**‚CMDƒ16‚megabyte‚hard‚disk*“INCLUDEƒ&.FXCMD16.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM212$2,'FXCMD80'**‚CMDƒ80‚megabyte‚hard‚disk*“INCLUDEƒ&.FXCMD80.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM212$2,'FXLRK08'**‚LARK‚8‚megabyte‚hard‚disk*“INCLUDEƒ&.FXLRK08.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM212$2,'FXLRK25'**‚LARK‚25‚megabyte‚hard‚disk*“INCLUDEƒ&.FXLRK25.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*,*‚SetupattributemaskforharddiskonUDC*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\VM213$2,'RMCMD16'**‚CMDƒ16‚megabyte‚hard‚disk*“INCLUDEƒ&.RMCMD16.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM213$2,'RMLRK08'**‚LARK‚8‚megabyte‚hard‚disk*“INCLUDEƒ&.RMLRK08.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM213$2,'RMLRK25'**‚LARK‚25‚megabyte‚hard‚disk*“INCLUDEƒ&.RMLRK25.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*,*‚SetupattributemaskforharddiskonUDC*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFGE†NFV21$2-1;************************************************************,*‚FirstfloppydiskonsecondUDCcontroller*;*********************************************************** ‰IFC‡\VM214$2,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM214$2,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC***‚SetupattributesmaskforfloppyonUDC*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\VM215$2,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM215$2,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC***‚SetupattributesmaskforfloppyonUDC*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\VM216$2,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM216$2,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC***‚SetupattributesmaskforfloppyonUDC*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\VM217$2,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM217$2,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC***‚SetupattributesmaskforfloppyonUDC*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\VM220$1,'FXCMD16'**‚CMD16‚megabyte‚hard‚disk*“INCLUDEƒ&.FXCMD16.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM220$1,'FXCMD80'**‚CMD80‚megabyte‚hard‚disk*“INCLUDEƒ&.FXCMD80.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM220$1,'FXLRK08'**‚LARK08‚megabyte‚hard‚disk*¤Z­RµM½ZÅJÍSÕVÝSåPíOõ “INCLUDEƒ&.FXLRK08.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM220$1,'FXLRK25'**‚LARK25‚megabyte‚hard‚disk*“INCLUDEƒ&.FXLRK25.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*-*‚SetupattributemaskforharddiskonVM22*9ATT_MASKSET‚0<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\VM221$1,'RMCMD16'**‚CMD16‚megabyte‚hard‚disk*“INCLUDEƒ&.RMCMD16.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM221$1,'RMLRK08'**‚LARK08‚megabyte‚hard‚disk*“INCLUDEƒ&.RMLRK08.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM221$1,'RMLRK25'**‚LARK25‚megabyte‚hard‚disk*“INCLUDEƒ&.RMLRK25.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*-*‚SetupattributemaskforharddiskonVM22*9ATT_MASKSET‚0<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\VM222$1,'FXCMD16'**‚CMD16‚megabyte‚hard‚disk*“INCLUDEƒ&.FXCMD16.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM222$1,'FXCMD80'**‚CMD80‚m egabyte‚hard‚disk*“INCLUDEƒ&.FXCMD80.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM222$1,'FXLRK08'**‚LARK08‚megabyte‚hard‚disk*“INCLUDEƒ&.FXLRK08.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM222$1,'FXLRK25'**‚LARK25‚megabyte‚hard‚disk*“INCLUDEƒ&.FXLRK25.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*-*‚SetupattributemaskforharddiskonVM22*9ATT_MASKSET‚0<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\VM223$1,'RMCMD16'**‚CMD16‚megabyte‚hard‚disk*“INCLUDEƒ&.RMCMD16.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM223$1,'RMLRK08'**‚LARK08‚megabyte‚hard‚disk*“INCLUDEƒ&.RMLRK08.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM223$1,'RMLRK25'**‚LARK25‚megabyte‚hard‚disk*“INCLUDEƒ&.RMLRK25.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*-*‚SetupattributemaskforharddiskonVM22*9ATT_MASKSET‚0<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\VM224$1,'FXCMD16'**‚CMD16‚megabyte‚hard‚disk*“INCLUDEƒ&.FXCMD16.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM224$1,'FXCMD80'**‚CMD80‚megabyte‚hard‚disk*“INCLUDEƒ&.FXCMD80.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM224$1,'FXLRK08'**‚LARK08‚megabyte‚hard‚disk*“INCLUDEƒ&.FXLRK08.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM224$1,'FXLRK25'**‚LARK25‚megabyte‚hard‚disk*“INCLUDEƒ&.FXLRK25.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*-*‚SetupattributemaskforharddiskonVM22*9ATT_MASKSET‚0<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\VM225$1,'RMCMD16'**‚CMD16‚megabyte‚hard‚disk*“INCLUDEƒ&.RMCMD16.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM225$1,'RMLRK08'**‚LARK08‚megabyte‚hard‚disk*“INCLUDEƒ&.RMLRK08.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM225$1,'RMLRK25'**‚LARK25‚megabyte‚hard‚disk*“INCLUDEƒ&.RMLRK25.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*-*‚SetupattributemaskforharddiskonVM22*9ATT_MASKSET‚0<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\VM226$1,'FXCMD16'**‚CMD16‚megabyte‚hard‚disk*“INCLUDEƒ&.FXCMD16.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM226$1,'FXCMD80'**‚CMD80‚megabyte‚hard‚disk*“INCLUDEƒ&.FXCMD80.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM226$1,'FXLRK08'**‚LARK08‚megabyte‚hard‚disk*“INCLUDEƒ&.FXLRK08.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM226$1,'FXLRK25'**‚LARK25‚megabyte‚hard‚disk*“INCLUDEƒ&.FXLRK25.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*-*‚SetupattributemaskforharddiskonVM22*9ATT_MASKSET‚0<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\VM227$1,'RMCMD16'**‚CMD16‚megabyte‚hard‚disk*“INCLUDEƒ&.RMCMD16.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM227$1,'RMLRK08'**‚LARK08‚megabyte‚hard‚disk*“INCLUDEƒ&.RMLRK08.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM227$1,'RMLRK25'**‚LARK25‚megabyte‚hard‚disk*“INCLUDEƒ&.RMLRK25.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*-*‚SetupattributemaskforharddiskonVM22*9ATT_MASKSET‚0<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\VM228$1,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM228$1,'F8SDSSM'*2*‚8"‚singledensity,singlesided,Motorolaformat*“INCLUDE„&.F8SDSSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM228$1,'F8DDDSI'*-*‚8"‚doubledensity,doublesided,IBMformat*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM228$1,'F8SDSSI'*-*‚8"‚singledensity,singlesided,IBMformat*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM228$1,'F5DDDSI'*1*‚51/4"‚doubledensity,doublesided,IBMformat*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*+*‚SetupattributesmaskforfloppyonVM22*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\VM229$1,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM229$1,'F8SDSSM'*2*‚8"‚singledensity,singlesided,Motorolaformat*“INCLUDE„&.F8SDSSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM229$1,'F8DDDSI'*-*‚8"‚doubledensity,doublesided,IBMformat*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM229$1,'F8SDSSI'*-*‚8"‚singledensity,singlesided,IBMformat*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM229$1,'F5DDDSI'*1*‚51/4"‚doubledensity,doublesided,IBMformat*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*+*‚SetupattributesmaskforfloppyonVM22*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\VM22A$1,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM22A$1,'F8SDSSM'*2*‚8"‚singledensity,singlesided,Motorolaformat*“INCLUDE„&.F8SDSSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM22A$1,'F8DDDSI'*-*‚8"‚doubledensity,doublesided,IBMformat*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM22A$1,'F8SDSSI'*-*‚8"‚singledensity,singlesided,IBMformat*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM22A$1,'F5DDDSI'*1*‚51/4"‚doubledensity,doublesided,IBMformat*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*+*‚SetupattributesmaskforfloppyonVM22*9ATT_MASKSET‚1<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\VM22B$1,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM22B$1,'F8SDSSM'*2*‚8"‚singledensity,singlesided,Motorolaformat*“INCLUDE„&.F8SDSSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM22B$1,'F8DDDSI'*-*‚8"‚doubledensity,doublesided,IBMformat*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM22B$1,'F8SDSSI'*-*‚8"‚singledensity,singlesided,IBMformat*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM22B$1,'F5DDDSI'*1*‚51/4"‚doubledensity,doublesided,IBMformat*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*+*‚SetupattributesmaskforfloppyonVM22*9ATT_MASKSET‚1<‰DC.L†0,0,0,0ƒBUFFERZONEBETWEENDEVICEINDEPENDENT/DEPENDENT)‰DC.B†IOSTLN„SPACEFORCONFIGURATIONINFO‰DCB.B…DCBLEN-(*-LLUN),0 (DCBENDEQU*-1…EndaddressofDCBspace.IOCOMEEQU*‡EndofIOCcommonA*ƒ{Nolongerforcestonextpageboundary(wasIOCOML)-8/03/84} SPC 3SECTION1‚===CDBSECTION=== ) DC.L 0 Link of 0 marks end of CDB chain.  ENDéé&9**ˆIOC.PV01DRV.AG**‚Includedequatefiles: *‰&.IOE.EQ *‰&.NIO.EQ*ŠNOLISTŠINCLUDE&.IOE.EQŠINCLUDE&.NIO.EQŠLIST !*‚Includeddevicespecificmacros*‰MACRO.DCB.SI*‰MACRO.DCBPRT.SI*ŠNOLISTŠINCLUDEMACRO.DCB.SIŠINCLUDEMACRO.DCBPRT.SIŠLIST ŠPAGE&*‚AssignvaluesfromSYSGENparameters*.DVCODEƒSET\&PRTDV„Definestartingdevicecode;LPDA$01‚EQU\LPDA$01ƒDefinelocalprinterdeviceaddress#1;LPDA$02‚EQU\LPDA$02ƒDefinelocalprinterdeviceaddress#2=PRTV01ƒEQU\PV01DRVƒDefinethephysicaladdressofthedriver 0CNAME„SET…'CPR'+DVCODE&$FF‚channelnamemnemonicE*ƒNOTE:‚UseofCNAMEguaranteesthattheASCIIprinterDCBidentifier>*Š(PR‚,PR1,etc)willalwayscorrespondwiththechannelname*Šmnemonic(CPR,CPR1,etc.). O*******************************************************************************7*‚SETUPDCB'S&CDB'SFORREMOTEPRINTERS‚-‚VM01boardO******************************************************************************* /* Define PCP$ATW one time here for all printers.PCP$ATW‚SET…\PCP$TLRL<<2+\PCP$AFF<<1+\PCP$LNFD *ƒVM01Board.printerport#1**--‚DATACONTROLBLOCK‚--*K PRTDCB DVCODE,IOSID,IOSESS,$632,95,1,CNAME,0,$0007,$0033,PCP$ATW,\PCP$REC,%&‡\PCP$RSZ,\PCP$WTO,\PCP$LRL,\PCP$ELCIFNEDVCODE-'PR‚'1DVCODESETDVCODE+$100‚SETUPFORNEXTPRINTERID ENDCIFEQDVCODE-'PR‚'DVCODE SET 'PR1 ' ENDC ***‚CHANNELDATABLOCK‚***7 CDB 0,CNAME,XTPVM1,254,PRTV01,0,LPDA$01,$10,$1E,6,$10,&„0,0,0,0,0,0,0,0,0,0,0    IFGE \NOLPRT-2**ƒVM01Board.printerport#2* 0CNAME„SET…'CPR'+DVCODE&$FF‚channelnamemnemonic *--‚DATACONTROLBLOCK‚--*K PRTDCB DVCODE,IOSID,IOSESS,$632,95,1,CNAME,0,$0007,$0033,PCP$ATW,\PCP$REC,%&‡\PCP$RSZ,\PCP$WTO,\PCP$LRL,\PCP$ELCIFNEDVCODE-'PR‚'1DVCODESETDVCODE+$100‚SETUPFORNEXTPRINTERID ENDCIFEQDVCODE-'PR‚'DVCODE SET 'PR1 ' ENDC  ***‚CHANNELDATABLOCK‚***/N8" 7 CDB 0,CNAME,XTPVM1,254,PRTV01,0,LPDA$02,$10,$1E,6,$10,&„0,0,0,0,0,0,0,0,0,0,0 ENDC  ENDééééééé**ˆIOC.TNTDRV.AG**‚Includedequatefiles: *†&.IOE.EQ *†&.NIO.EQ*‰NOLIST‰INCLUDEƒ&.IOE.EQ‰INCLUDEƒ&.NIO.EQ‰LIST !*‚Includeddevicespecificmacros*†MACRO.DCB.SI*†MACRO.DCBTERM.SI*‰NOLIST‰INCLUDEƒMACRO.DCB.SI‰INCLUDEƒMACRO.DCBTERM.SI‰LIST PAGE 0* Define TCP$ATW one time here for all terminalsITCP$ATW‚SET‚\TCP$HCPY+\TCP$XCTL<<1+\TCP$BITS<<2+\TCP$STPB<<3+\TCP$USEP<<4GTCP$ATW‚SET‚TCP$ATW+\TCP$PRTY<<5+\TCP$ECHO<<6+\TCP$TAHD<<7+\TCP$TFUL<<8.SYSTEM.CI"file.1*ƒ"+$NN"‚istheoffsettothe1stboardregister.J*-------------------------------------------------------------------------I*------------------------------------------------------------------------CL400$01ƒ=\IOCBASE+($0E0*\CMULT)+$0DMVME400bd.#1,portAaddress*©L400$01‚=\L400$01CL400$02ƒ=\IOCBASE+($0D0*\CMULT)+$0DMVME400bd.#2,portAaddress*©L400$02‚=\L400$02J*-------------------------------------------------------------------------CL410$01ƒ=\IOCBASE+($0F0*\CMULT)+$01MVME410bd.#1,portAaddress*©L410$01‚=\L410$01CL410$02ƒ=\IOCBASE+($090*\CMULT)+$01MVME410bd.#2,portAaddress*©L410$02‚=\L410$02J*-------------------------------------------------------------------------IL420$01ƒ=\IOCBASE+($078*\CMULT)+$01MVME420bd.#1,portƒaddress:SASI8*©L420$01‚=\L420$01IL420$02ƒ=\IOCBASE+($070*\CMULT)+$01MVME420bd.#2,portƒaddress:SASI5*©L420$02‚=\L420$02J*-------------------------------------------------------------------------LL435$01ƒ=\IOCBASE+($1E0*\CMULT)+$29MVME435bd.#1,portAaddress:Magtape*©L435$01‚=\L435$01CL435$02ƒ=\IOCBASE+($1C0*\CMULT)+$29MVME435bd.#2,portAaddress*©L435$02‚=\L435$02J*-------------------------------------------------------------------------Z+c=LRAD$01ƒ=\IOCBASE+($700*\CMULT)+$01RAD…bd.#1,portƒaddress*©LRAD$01‚=\LRAD$01J*-------------------------------------------------------------------------=LRIO$01ƒ=\IOCBASE+($010*\CMULT)+$01RIO…bd.#1,portƒaddress*©LRIO$01‚=\LRIO$01J*-------------------------------------------------------------------------CL600$01ƒ=\IOCBASE+($F00*\CMULT)+$1+$2MVME600bd.#1,portƒaddress*©L600$01‚=\L600$01CL600$02ƒ=\IOCBASE+($E00*\CMULT)+$1+$2MVME600bd.#2,portƒaddress*©L600$02‚=\L600$02J*-------------------------------------------------------------------------AL605$01ƒ=\IOCBASE+($B00*\CMULT)+$01MVME605bd.#1,portƒaddress*©L605$01‚=\L605$01J*-------------------------------------------------------------------------@L610$01ƒ=\IOCBASE+($002*\CMULT)+$1‚MVME610bd.#1,portƒaddress*©L610$01‚=\L610$01@L610$02ƒ=\IOCBASE+($004*\CMULT)+$1‚MVME610bd.#2,portƒaddress*©L610$02‚=\L610$02J*-------------------------------------------------------------------------@L615$01ƒ=\IOCBASE+($001*\CMULT)+$1‚MVME615bd.#1,portƒaddress*©L615$01‚=\L615$01J*-------------------------------------------------------------------------AL625$01ƒ=\IOCBASE+($000*\CMULT)+$01MVME625bd.#1,portƒaddress*©L625$01‚=\L625$01J*---------------------# ----------------------------------------------------?LWIN$01ƒ=\IOCBASE+($068*\CMULT)+$03RWIN1ƒbd.#1,portƒaddress*©LWIN$01‚=\LWIN$01?LWIN$02ƒ=\IOCBASE+($070*\CMULT)+$03RWIN1ƒbd.#2,portƒaddress*©LWIN$02‚=\LWIN$02J*-------------------------------------------------------------------------é'OSLIST BEGIN AGww aaEND AG€€aaFHS SI‰‰ aaFMS SI’’&aaIOS SI››#aaTNTDRV SI¤¤aa**ˆOSLIST.BEGIN.AG* ‰XDEF†OSMTBL ‰XDEF†OSMEND*-*ˆTABLEOFOPERATINGSYSTEMMODULETASKNAMES**ƒIncludedequatefiles:*ˆINCLUDEƒ&.IOE.EQ*ˆINCLUDEƒ&.EXE.EQ*ˆINCLUDEƒ&.NIO.EQ*ˆINCLUDEƒ&.FME.EQ*ˆINCLUDEƒ&.FMI.EQ‰NOLIST‰INCLUDEƒ&.IOE.EQ‰INCLUDEƒ&.EXE.EQ‰INCLUDEƒ&.NIO.EQ‰INCLUDEƒ&.FME.EQ‰INCLUDEƒ&.FMI.EQ‰LIST SECTION 1‰PAGE*D*ˆThefollowingNOPisrequirediftheuserhaselectedtoeliminateA*ˆallmodulesfromOSLISTsuchthatitbecomesanullfile.SinceC*ˆLINK1.6hasproblemwithlinkinganullmodulethathasXREFandC*ˆXDEFreferences,theNOPisheretokeepthismodulefrombeinga*ˆnullmodule.*‰NOP‰PAGEOSMTBL:éééééo!$ **ˆOSLIST.END.AG*OSMENDƒEQU…*“ENDOFTABLE ‰END‡OSMTBLéééééééx**ˆFHS*‰DC.B†$20‘STARTUPVALUE)*§Thisvaluewilldetermine(lowtohigh)&*§theorderataskistobestartedby*§IOI‰DC.B†1“BITNUMBER&*§Thisvalue,ifpresent,representsa$*§bitnumberthatmustbesetbefore$*§IOIwillattempttostartthenext'*§task.This,alongwithSTARTUPVALUE,(*§allowsthecoordinationofbringingup(*§systemtasksatboottimeinaorderly$*§process.TheoffsetSVTSTCFinthe%*§SystemValueTableiswherethebit*§mustbeset.*%*¦IFthesystemtaskdoesNOTrequire'*¦boottimecoordinationthebitnumber*¦mustbesetto$FF.*‰DC.L†FHSIDFHSTASKNAME‰DC.L†IOSESSŽSESSION* ‰DC.B†0“NO ‰DC.B†0•ASQ ‰DC.L†0˜WAS‰DC.L†0›REQUESTED‰DC.W†0*$‰DC.L†0,0,0,0NODATASEGMENTNEEDED*ééé$ é! ‰XDEF†FMSDLEN**ˆFMS*‰DC.B†$10‘STARTUPVALUE)*§Thisvaluewilldetermine(lowtohigh)&*§theorderataskistobestartedby*§IOI‰DC.B†2“BITNUMBER&*§Thisvalue,ifpresent,representsa$*§bitnumberthatmustbesetbefore$*§IOIwillattempttostartthenext'*§task.This,alongwithSTARTUPVALUE,(*§allowsthecoordinationofbringingup(*§systemtasksatboottimeinaorderly$*§process.TheoffsetSVTSTCFinthe%*§SystemValueTableiswherethebit*§mustbeset.*%*¦IFthesystemtaskdoesNOTrequire'*¦boottimecoordinationthebitnumber*¦mustbesetto$FF.* ‰DC.L†FMSIDFMSTASKNAME‰DC.L†IOSESSŽSESSION* ‰DC.B†0“NO ‰DC.B†0•ASQ ‰DC.L†0˜WAS‰DC.L†0›REQUESTED‰DC.W†0**‰DC.W†SGOPPAŽOPTIONS-LOG.ADDR=PHYS.ADDR.‰DC.W†SGATRW+SGATSS‡ATTRIBUTES‰DC.L†FMSDSEG.NAME‰DC.L†0“LOGICALADDRESSFMSDLEN‚DC.L†0“SEGMENTLENGTH*ééééŠ' ‰XDEF†OESIZE**ˆIOS*IOSXXX:‰DC.B†$30‘STARTUPVALUE)*§Thisvaluewilldetermine(lowtohigh)&*§theorderataskistobestartedby*§IOI‰DC.B†0“BITNUMBER&*§Thisvalue,ifpresent,representsa$*§bitnumberthatmustbesetbefore$*§IOIwillattempttostartthenext'*§task.This,alongwithSTARTUPVALUE,(*§allowsthecoordinationofbringingup(*§systemtasksatboottimeinaorderly$*§process.TheoffsetSVTSTCFinthe%*§SystemValueTableiswherethebit*§mustbeset.*%*¦IFthesystemtaskdoesNOTrequire'*¦boottimecoordinationthebitnumber*¦mustbesetto$FF.*‰DC.L†IOSIDIOSTASKNAME‰DC.L†IOSESSŽSESSION* ‰DC.B†0“NO ‰DC.B†0•ASQ ‰DC.L†0˜WAS‰DC.L†0›REQUESTED‰DC.W†0*$‰DC.L†0,0,0,0NODATASEGMENTNEEDED*OESIZEƒEQU‡*-IOSXXXé% ééé“$*%*ˆTRANSPARENTNETWORKTERMINALDRIVER*‰DC.B†$40‘STARTUPVALUE)*§Thisvaluewilldetermine(lowtohigh)&*§theorderataskistobestartedby*§IOI‰DC.B†$FF‘BITNUMBER&*§Thisvalue,ifpresent,representsa$*§bitnumberthatmustbesetbefore$*§IOIwillattempttostartthenext'*§task.This,alongwithSTARTUPVALUE,(*§allowsthecoordinationofbringingup(*§systemtasksatboottimeinaorderly$*§process.TheoffsetSVTSTCFinthe%*§SystemValueTableiswherethebit*§mustbeset.*%*¦IFthesystemtaskdoesNOTrequire'*¦boottimecoordinationthebitnumber*¦mustbesetto$FF.*‰DC.L†TNTIDTNTTASKNAME‰DC.L†IOSESSŽSESSION*‰DC.B†AQSTQE+AQSTRE‡ASQSTATUS&‰DC.B†EVULEN+IOSNLN‡MAXMESSAGELENGTH ‰DC.L†EVULEN+IOSNLN‡QUEUELENGTH‰DC.L†\TNTASRADDRESSOFASR‰DC.W†0*$‰DC.L†0,0,0,0NODATASEGMENTNEEDEDééééœ 'NOTNT ASR AG±± aa% **ˆNOTNT.ASR.AG*)ASR‡IDNTƒ11,11ŽASRADDRS.FORI/OMODULES*8*ASR-FILE OF ASR ADDRESSES OF I/O MODULES-NEEDED FOR IOI*ŠXDEFƒFMSASR,FHSASR,IOSASRFMSASR„EQU„\FMSASRFHSASR„EQU„\FHSASRIOSASR„EQU„\IOSASRŠENDééééééé© 'VME12X INITIO1 AG¾¾4§aaSYSINIT LG÷÷aaMTYPE SI aaB*‰INCLUDEBOARD.EQƒThiswilleitherbeincatalogVME120orVME128AŠINCLUDEBOARD.EQƒThiswilleitherbeincatalogVME120orVME128ŠIFEQ†BOARDTYPE-1286INITIO„IDNTƒ5,1RMS68KI/OinitializerfortheVME128.ŠENDCŠIFEQ†BOARDTYPE-1206INITIO„IDNTƒ5,1RMS68KI/OinitializerfortheVME120.ŠENDCO*v*****************************************************************************O*******************************************************************************O**************************************& ********************************************É***D***…ROUTINE:‚INITIO--RMS68KI/OINITIALIZERFORTHEVME120/128‡******É***J***…ENVIRONMENT:‚PartoftheRMS68KexecfortheMotorola68000family.***(***‡Copyright1983byMotorola,Inc.¢******É***D***…FUNCTION:‚RoutinesfromthismodulearecalledbytheRMS68K‡***E***‡routineINITduringsysteminitialization.‚Allboard-specific„***.***‡initializationisdoneinthismodule.œ******É***G***…NOTES:‚ThismoduleisSUBSed,ASMed,andLINKedatSYSGENtime.„***?***‡Allmoduleswillrunatlevel7andinsupervisormode.‹******É***O*******************************************************************************O*******************************************************************************O*^***************************************************************************** *,*‚Revisionhistory(addnewchangestotop).*…Date†Author‚ChangesI*…--------‚------‚-------------------------------------------------------8*†1/28/85ƒSJF„ChangedMMUinitializationtolookat\MMU*†2/1/84ƒMSL„Initialwriting.* * *‚XDEF's.*,ŠXDEFƒINITMMUŒRoutinetoinitializetheMMU.,ŠXDEFƒTIMERSTŒRoutinetostartupthetimer.3ŠXDEFƒINITIORoutinetosetupalltheotherboard-*§specifichardware. * *‚XREF's.* *…Routines:)ŠXREFƒKILLERRoutinetocrashthesystem. *…ParametersfromINITDAT:-ŠXREFƒTIMSLICŒ#oftimerticspertimeslice.+ŠXREFƒTIMERAAddroftimerchip(MC146818).ŠXREFƒTIMINTVAŠXREFƒCLOCKFRQ¶7¿GÇBÏC×Cß@ç" *…SYSPARvariables:6ŠXREF.SMMUHEREŒAddrofMMU;0ifwe'renotusingone.0ŠXREF.SFRST451ŒAddroffirstMMUinthesystem./ŠXREF.SLAST451ŒAddroflast‚MMUinthesystem.7ŠXREF.SCURR451ŒPtrtoMMULOADMMUshouldlookatnext.7ŠXREF.SCURRSDCurrentsegmentdescriptor#intheMMU.7ŠXREF.SDPRVAODual-PortedRamVersabusAddressOffset.ŠXREF.SDATEDate.0ŠXREF.STIMESLIC‹#oftimerticspertimeslice.3ŠXREF.STIMINTRŒUsecremainderforoddclockrates.7ŠXREF.STIMINTVŒTimeintervalbetweentimerinterrupts..ŠXREF.SPTMADDRŒAddroftimerchip(MC146818). *„Others:.ŠXREFƒCRASHSAV‹PlacetoSAVEinfoifweCRASH.   **‚Includedfiles:**‰&.UTILITY.MC*‰M68451.M68451.EQ*‰MK68901.MK68901.EQ*ŠNOLISTŠINCLUDE&.UTILITY.MCŠINCLUDEM68451.M68451.EQŠINCLUDEMK68901.MK68901.EQŠLISTŠPAGEO*v*****************************************************************************O**********************************************************************************É***6***…ROUTINE:‚INITMMU--INITIALIZETHEM68451MMU.•******É***I***…FUNCTION:‚IfwearesupposedtohaveanMMU,verifyitsexistence‚******‡andinitializeit.°******É******…NOTES:¾******É***E***…REGISTERUSAGE:‚(A)rgument‚(D)estroyed‚(P)reserved‚(R)eturnedƒ***)***Œ0ƒ1ƒ2ƒ3ƒ4ƒ5ƒ6ƒ7‡SRhi„SRlo(CCR)…******‡D:ƒPƒPƒ.ƒ.ƒ.ƒ.ƒ.ƒ.‡.ˆD******‡A:ƒPƒPƒ.ƒ.ƒ.ƒ.ƒ.ƒP ******É******…ENTRYCONDITIONS:³***+***‡Supervisormode,interruptlevel7.Ÿ******É***-***…EXITCONDITIONSDIFFERENTFROMENTRY:Ÿ******É***O*******************************************************************************O*^*****************************************************************************  ŠSECTION8ŠOPT„BRS INITMMU: ,ŠIFNEƒ\MMUIfwe'resupposedtohaveanMMU, +ŠSAVEƒD0/A0ŽSaveregisterswe'llblowaway. 3ŠLEA„$F60000,A0‰A0<--addresswhereMMUshouldbe.%ŠMOVE.LA0,MMUHERE‰SaveitinSYSPAR. *%*‚SetuptheotherSYSPARparameters.*8‹MOVE.LA0,FRST451‰Ouronly68451isobviouslythefirst9‹MOVE.LA0,LAST451‰68451,thelast68451,andthecurrent‹MOVE.LA0,CURR451‰68451.7‹MOVE.L#1,CURRSDŠThecurrentsegmentdescriptoris#1. *@*‚Clearallsegmentdescriptorsexceptthe& onewe'reusing(#0).*5‹PEA„KILLERŒSetupforustogotoKILLERifwegeta‹PUSHƒ#'BE'Žbuserror.<‹FOR„D0=#1TO#31DO…Forsegmentdescriptors1through31,*ŽMOVE.BD0,DP(A0)Š.‚Selectthedescriptor.7ŽMOVE.B#0,SSR(A0)‰.‚Initializeitsoitwon'tbeused.‹ENDF2‹ADD.L‚#6,SPŽGetthebuserrorjunkoffthestack. **‚Exit.*!ŠRESTORED0/A0Restoreregisters. ŠENDC ŠRTS—Return. ŠPAGEO*********************************************************************************ˆSTARTTIMER„(146818TIMER)* TIMERST:EŠMOVE.LTIMSLIC(PC),TIMESLIC#TIMERINTERRUPTSBEFORETASKINTERRUPT;ŠMOVE.LTIMERA(PC),A1†GETTIMERADDRESS(MFPBASEADDRESS).#ŠMOVE.LA1,PTMADDR‰SAVEITFOREXEC!ŠBEQ.L‚TIMERBEŒBRANCHIFNOTIMER)ŠPEA„TIMERBE(PC)ˆWHERETOGOONBUSERROR$ŠMOVE.W#'BE',-(A7)ˆSETBUSERRFLAG*ŠMOVE.L#0,DATEŒDate<--0./ŠMOVE.W#10,TIMINTVˆNumberofmsperclocktick*B*‚NowwemustinitializetheMulti-functionperipheral(MPF)chip.B*‚AlthoughwearenotintendingtouseallofthefunctionalityofC*‚theMFP(ex.serialport),wewillgoaheadandinitializeallof-*‚thefunctionsonthechip,justtobesafe.* *-*‚First,disableallinterruptsfromtheMFP.* 6ŠCLR.B‚MFP_IERA(A1)‡ClearinterruptenableregisterA.6ŠCLR.B‚MFP_IERB(A1)‡ClearinterruptenableregisterB. *C*‚Now,initializetheserialport,eventhoughwedonotanticipate *‚usingit.*B*‚(NOTE:‚WEWILLLEAVEITASITWASSOWECANUSETHEBUGFROMTHE*ŠONBOARDSERIALPORT.) 6*‰CLR.B‚MFP_SCR(A1)ˆClearthesynccharacterregister.5*‰CLR.B‚MFP_UCR(A1)ˆResettheUSARTcontrolregister. 7*‰CLR.B‚MFP_RSR(A1)ˆResetthereceiverstatusregister.6*‰TST.B‚MFP_RSR(A1)ˆReadthereceiverstatusregister. 7*‰CLR.B‚MFP_TSR(A1)ˆResetthetransmitstatusregister.6*‰TST.B‚MFP_TSR(A1)ˆReadthetransmitstatusregister. 2*‰CLR.B‚MFP_UDR(A1)ˆCleartheUSARTdataregister.   *$*‚Now,intiializetheparallelport.* 1ŠCLR.B‚MFP_GPIP(A1)‡CleartheGPIPdataregister.=ŠMOVE.B#$07,MFP_AER(A1)ƒInitializetheactiveedgeresister.=ŠCLR.B‚MFP_DDR(A1)ˆSetthedatadirectionregistertoinputs.   *I*‚Now,initializethefourtimersontheMFP.‚(WewillonlyusetimerA.)* 1ŠMOVE.B#$10,MFP_TACR(A1)‚ResetandstoptimerA.1ŠMOVE.B#$10,MFP_TBCR(A1)‚ResetandstoptimerB. **‰CLR.B‚MFP_TCDCR(A1)†StoptimersCandD.AŠANDI.B#$F0,MFP_TCDCR(A1)(StoptimerD.‚LeavetimerCasisfor *£theBUG.) *>>>>>><ŠMOVE.L#CLOCKFRQ,D0‡ClockfrequencyinHz(SUBedinsysgen)K* IF D0 = 0, 10,000,000, OR 12,500,000 (Hz) then read clock rate from board)*ƒelseuseclockratedefinedinCLOCKFRQŠBEQ.S‚TSTRATEŠCMP.L‚#10000000,D0ŠBEQ.S‚TSTRATEŠCMP.L‚#12500000,D0ŠBNE.S‚RATESET TSTRATEƒTEST_CLOCK_RATEŠIFTHEN.SŒMOVE.L#10000000,D0‚10MHzrateŠELSE.S!ŒMOVE.L#12500000,D0‚12.5MHzrateŠENDI 1RATESETƒLSR.L‚#2,D0ŽDivby4forclockinputfreq ŠMOVE.LD0,D1=* Compute desired count down value according to the following*ƒformula:‚CD=TI/(PS*TO)*‰CD…=Countdownvalue*‰TI…=Timerinputfrequency*‰PS…=Prescalarvalue)*‰TO…=Desiredtimeroutputtimeinterval<* For the VME12x operating at 12.5 MHz we have the following(*ƒTI=12.5MHz/4=3.125MHzor3125000 *ƒPS=200#*ƒTO=100Hz(Onetickevery10ms)B* With these variable values the calculated CD is 157 (rounded up)7* For 10MHz the computed count down value would be 10msŠDIVUƒ#200*100,D0ˆDivbyPS*TOŠIF.LƒD0#$0000FFFFTHEN.S"ADD.Wƒ#1,D0ŠRoundupifremainderŠENDI>ŠAND.L‚#$0000FFFF,D0†Maskoffremainder,onlyquotientremains;ŠMOVE.BD0,MFP_TADR(A1)„Countdownvalue(TimerAregister)5* Now calculate the actual timer output interval via:*ƒCO=(1000*PS*CD)/TID*ƒRemainderwillbethefractionofamillisecondoveranexact10ms *…intervalthatweactuallyhaveŠMULUƒ#200,D0ŒMultiplybyPSŠMULUƒ#1000,D0‹*1000 ŠWHILE.LD1#' $0000FFFFDO.S.LSR.Lƒ#1,D0ŠScaledividendanddivisorso...+LSR.Lƒ#1,D1Š...divisoris16bitsorlessŠENDW ŠDIVUƒD1,D0*ŠCLR.W‚D0‘PreserveremainderinhighorderŠSWAPƒD0G* Now compute the number of usecs extra that we have in the actual time *ƒinterval.*ŠMULUƒ#1000,D0 ŠDIVUƒD1,D0!ŠMOVE.WD0,TIMINTR„Usecramainder*>>>>>>0ŠCLR.B‚MFP_TBDR(A1)‡ResettimerBdataregister.1*‰CLR.B‚MFP_TCDR(A1)‡ResettimerCdataregister.0ŠCLR.B‚MFP_TDDR(A1)‡ResettimerDdataregister. >ŠMOVE.B#$07,MFP_TACR(A1)‚TimerAcontrolreg<==delay_mode+*´divideby200prescaler.  *<*‚Nowinitializetheprogramableinterruptcontroller(PIC).* BŠMOVE.B#$68,MFP_VR(A1)„Setstartingvectornumberforblockof16-*£interruptvectorsto$60.Alsosetsoftware*£interruptmode(bit3). 7ŠCLR.B‚MFP_IPRA(A1)‡ClearinterruptpendingregisterA.7ŠCLR.B‚MFP_IPRB(A1)‡ClearinterrputpendingregisterB. 0ŠCLR.B‚MFP_ISRA(A1)‡ClearinserviceregisterA.0ŠCLR.B‚MFP_ISRB(A1)‡ClearinserviceregisterB. DŠMOVE.B#$A0,MFP_IMRA(A1)‚UnmaskinterruptsfromACFAILandtimerA.6ŠCLR.B‚MFP_IMRB(A1)‡MaskoffallinterruptsfromIMRB. DŠMOVE.B#$A0,MFP_IERA(A1)‚EnableinterruptsfromACFAILandtimerA.1ŠMOVE.B#$8E,MFP_IERB(A1)‚Enableinterruptsfrom:*¦1.)‚MMUIRQ*.*¦2.)‚PARBAD*. *¦3.)‚BBERR. *¦4.)‚XERR.'*£(Note:‚Ifweenableaninterrupt,but"*«maskitoff,weallowthePICto*«latchtheinterruptintothe!*«interruptpendingregister,but!*«nottointerrupttheCPU.‚Ifwe!*«enableandunmaskaninterrupt,*«thenwelatchitintothe!*«interruptpendingregister,and*«alsointerrupttheCPU.   *.ŠADD.L‚#6,A7ŽREMOVE'BE'ANDBUSERRORADDRESSŠRTS—BACKTOINIT*ŠMOVE.L#CREG,CTRLREG†PutbaseaddressofctrlregsinSYSPAR. ŠINIT_CREG CŠMOVE.LCACHEF(PC),CFLUSH‚Moveaddressofcacheflushvariablefrom*£INITDATareatoSYSPARarea. ŠTST.B‚F_ALLŽFlushentirecache.  2ŠADD.L‚#6,SPŽGetthebuserrorjunkoffthestack.  E*‚>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*‚>>>>>>>µ<<<<<<<*‚>>>>>>>•NOTICEš<<<<<<<*‚>>>>>>>µ<<<<<<<>*‚>>>>>>>…WhenincorporatinganydriversduringSYSGEN„<<<<<<<?*‚>>>>>>>…thatrequirememoryallocatedforthemasperƒ<<<<<<<?*‚>>>>>>>…thedriverpackageinstructions-thisistheƒ<<<<<<<,*‚>>>>>>>…spotthefile(s)gointo!!–<<<<<<<*‚>>>>>>>µ<<<<<<<=*‚>>>>>>>…Thisisalsothespotforcodeforadriver…<<<<<<<>*‚>>>>>>>…that‚requiresothertypesofinitialization,ƒ<<<<<<<0*‚>>>>>>>…such‚asclearinganinterrupt.‘<<<<<<<*‚>>>>>>>µ' <<<<<<<*‚>>>>>>>‘MERGEITHERE—<<<<<<<*<*ˆWhenyouwritethecodethatistobemergedhere,wrapit*ˆaroundwiththefollowing:*:*ˆAtthebeginning,withDRVRxOUTreferringtoyourunique*ˆlabel,putthiscode:*'*‹PEA„DRVRxOUT(PC)„IFBUSERROROCCURS,*¢RETURNORGOONTONEXT*¢DRIVER'SINITIALIZATION**‹MOVE.W#'BE',-(A7)…SAVE'BUSERROR'FLAG*9*ˆTheninsertthecodetodowhatyouneedtodoforthis*ˆparticulardriver.**ˆAttheend,putthis:***‹LEA„6(A7),A7ˆREMOVEBUSERRORFROMSTACK*DRVRxOUTƒEQU„**=*ˆInthisway,ifthecodeforonedrivercausesabuserror,.*ˆthecodeforotherdriverswillbeexecuted.*E*‚>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<G*********************************************************************** ŠENDééé=/*=/*†VME12X.SYSINIT.LG=/*K=/* Link chain file run at sysgen time to link SYSINIT.LO with a PREINIT.RO=/*D=/* Sysgen parameter LINKLS = \LINKLS = file/device to which to send=/* the linker listing=/*?=/* Sysgen parameter PC = \PC = address at which to link driver=/* =LINK ,SYSINIT.LO,\LINKLS;HAMIXSSEG .INT:8 \PCINPUT PREINIT.ROINPUT ROGEN.ROINPUT &.INITDAT.ROINPUT &.SYSPAR.ROEND=/*=ENDééééééï( B* VME12X.MTYPE.SI - Memory type assignments for VME120/128 systems**‚SystemmemoryMTYPE$SRO‚EQUMTYP1readonlyMTYPE$SRW‚EQUMTYP1read/write* *‚UsermemoryMTYPE$URO‚EQUMTYP1readonlyMTYPE$URW‚EQUMTYP1read/write**‚PartitiontypesMTYPE$P0ƒEQUMTYP0partition#0MTYPE$P1ƒEQUMTYP1partition#1ééééééø 'TNT ASR AG  aa* *ˆTNT.ASR.AG*)ASR‡IDNTƒ11,11ŽASRADDRS.FORI/OMODULES*8*ASR-FILE OF ASR ADDRESSES OF I/O MODULES-NEEDED FOR IOI*ŠXDEFƒFMSASR,FHSASR,IOSASR ŠIFNEƒ\NOTNT XDEFƒTNTASRŠENDCFMSASR„EQU„\FMSASRFHSASR„EQU„\FHSASRIOSASR„EQU„\IOSASR ŠIFNEƒ\NOTNTTNTASR‡EQU„\TNTASRŠENDCŠENDé( ééééé'MMULDR VERSADOSCIaa**ˆMMULDR.VERSADOS.CI*AMSG‰*************************************************************-MSG‰**ˆLDR--Loader(trap#4servertask)Ž**AMSG‰*************************************************************TASKˆ&.LDR.LO,&LDRSTATE…='READ'ATTRIB„='CRIT'ATTRIB„='SYST'PRIORITY‚=$C8 SESSIONƒ=4LDRSTR„=*ŒLDRloadaddr.SUBSˆMMU.LOADER.LGLINKˆMMU.LOADER.LG IFEQˆ\LINKLSWƒ=COPY‡\LINKLS,\WORKLS;AENDCEND‰LDR5* Build VERSAdos patch chain file .VERSAPT.CF!=COPY‡VERSAPT.LDR.CF,VERSAPT.CF;Aééé) éé'FHSIOS VERSADOSCI''5aa**ˆFHSIOS.VERSADOS.CI*AMSG‰*************************************************************=MSG‰**ƒFHS--FileHandlingServices(trap#3servertask)ƒ**AMSG‰*************************************************************TASKˆ&.FHS.LO,.FHSSTATE…='DORM'ATTRIB„='CRIT'ATTRIB„='RTIM'ATTRIB„='SYST' SESSIONƒ=1PRIORITY‚=$D1FHSSTR„=*ŒFHS‚loadaddr. FHSASR„=*+2ŠFHSASRentrypointSUBSˆFHS.IXR.AG"ASM‰FHS.IXR.AG,FHS.IXR.RO,\ASMLS;R IFEQˆ\ASMLSWƒ=COPY‡\ASMLS,\WORKLS;AENDC SUBSˆ&.FHS.LG LINKˆ&.FHS.LG IFEQˆ\LINKLSWƒ=COPY‡\LINKLS,\WORKLS;AENDCEND‰FHS#*BuildVERSAdos‚.OSLIST.AG=COPY‡OSLIST.FHS.SI,OSLIST.AG;A5* Build VERSAdos patch chain file .VERSAPT.CF!=COPY‡VERSAPT.FHS.CF,VERSAPT.CF;A MSG‰?MSG‰***********************************************************.OSLIST.AG=COPY‡OSLIST.IOS.SI,OSLIST.AG;A5* Build VERSAdos patch chain file .VERSAPT.CF!=COPY‡VERSAPT.IOS.CF,VERSAPT.CF;Aéé6) 'IOS VERSADOSCI44aa**ˆIOS.VERSADOS.CI*?MSG‰***********************************************************.OSLIST.AG=COPY‡IOS.OSLIST.SI,OSLIST.AG;A5* Build VERSAdos patch chain file .VERSAPT.CF!=COPY‡IOS.VERSAPT.CF,VERSAPT.CF;Aééééé,'NOMMULDR6'SIO C'MACRO X' ¢'M600DRV 'M605DRV 'M610DRV ³'NOMMULDRVERSADOSCIBBaa* **ˆNOMMULDR.VERSADOS.CI*AMSG‰*************************************************************-MSG‰**ˆLDR--Loader(trap#4servertask)Ž**AMSG‰*************************************************************TASKˆ&.LDR.LO,&LDRSTATE…='READ'ATTRIB„='CRIT'ATTRIB„='SYST'PRIORITY‚=$C8 SESSIONƒ=4LDRSTR„=*ŒLDRloadaddr.SUBSˆNOMMU.LOADER.LGLINKˆNOMMU.LOADER.LG IFEQˆ\LINKLSWƒ=COPY‡\LINKLS,\WORKLS;AENDCEND‰LDR5* Build VERSAdos patch chain file .VERSAPT.CF!=COPY‡VERSAPT.LDR.CF,VERSAPT.CF;Aééééé:'SIO ADDRESS CIOO Laa**ˆSIO.ADDRESS.CI*N******************************************************************************6*‚ShortI/OAddressSpaceOffsetsforStandardSYSGENsN*******************************************************************************H*‚NOTE:‚* 1.Theseaddressesarecodedintomanyofthefirmwaredebuggers9*Œsothebugcanaccessthedevice.‚REQUIREDFORBOOTING!***‚Symbolformatis:„Lnnn$mm*„where:„L=location:*Œnnn=VMEboardnumber/descriptionorVnnforVERSAmodule*Ž$=separator*mm=boardnumber01-99**I*------------------------------------------------------------------------.L050$01ƒ=\SIOBASE+$1000VME050bd.#1address*žL050$01‚=\L050$01I*------------------------------------------------------------------------5L300$01ƒ=\SIOBASE+$0400VME300bd.#1address‚(GPIB)*žL300$01‚=\L300$015L300$02ƒ=\SIOBASE+$0440VME300bd.#2address‚(GPIB)*žL300$02‚=\L300$02I*------------------------------------------------------------------------.L315$01ƒ=\SIOBASE+$0000VME315bd.#1address*žL315$01‚=\L315$01.L315$02ƒ=\SIOBASE+$0200VME315bd.#2address*žL315$02‚=\L315$02I*------------------------------------------------------------------------.L320$01ƒ=\SIOBASE+$B00DVME320bd.#1address*žL320$01‚=\L320$01.L320$02ƒ=\SIOBASE+$AC0DVME320bd.#2address*žL320$02‚=\L320$02I*------------------------------------------------------------------------.L331$01ƒ=\SIOBASE+$3000VME331bd.#1address*žL331$01‚=\L331$01.L331$02ƒ=\SIOBASE+$3100VME331bd.#2address*žL331$02‚=\L331$02.L331$03ƒ=\SIOBASE+$3200VME331bd.#3address*žL331$03‚=\L331$03.L331$04ƒ=\SIOBASE+$3300VME331bd.#4address*žL331$04‚=\L331$04.L331$05ƒ=\SIOBASE+$3400VME331bd.#5address*žL331$05‚=\L331$05.L331$06ƒ=\SIOBASE+$3500VME331bd.#6address*žL331$06‚=\L331$06I*------------------------------------------------------------------------.L333$01ƒ=\SIOBASE+$3800VME333bd.#1address*žL333$01‚=\L333$01G4P.L333$02ƒ=\SIOBASE+$3900VME333bd.#2address*žL333$02‚=\L333$02.L333$03ƒ=\SIOBASE+$3A00VME333bd.#3address*žL333$03‚=\L333$03.L333$04ƒ=\SIOBASE+$3B00VME333bd.#4address*žL333$04‚=\L333$04.L333$05ƒ=\SIOBASE+$3C00VME333bd.#5address*žL333$05‚=\L333$05.L333$06ƒ=\SIOBASE+$3D00VME333bd.#6address*žL333$06‚=\L333$06I*------------------------------------------------------------------------3LV30$01ƒ=\SIOBASE+$1000VM30ƒbd.#1address‚(MCCM)*žLV30$01‚=\LV30$013LV30$02ƒ=\SIOBASE+$1200VM30ƒbd.#2address‚(MCCM)*žLV30$02‚=\LV30$023LV30$03ƒ=\SIOBASE+$1400VM30ƒbd.#3address‚(MCCM)*žLV30$03‚=\LV30$033LV30$04ƒ=\SIOBASE+$1600VM30ƒbd.#4address‚(MCCM)*žLV30$04‚=\LV30$04I*------------------------------------------------------------------------ H*NOTE:‚VM20,VM21,andVM22aredefinedsequentiallybyoffsetsof$200C*ˆasneeded.‚TheymustnotbeassignedabsoluteoffsetsbecausetheB*ˆdebuggerBOcmdassumesabootfromcontroller0atoffset0and?*ˆwehaveharddisk(VM21)andfloppyonly(VM20)typesystems.ééé+ 'MACRO DCB SIdd RaaDCBDISK SIuuaaDCBGPIB SI~~ QaaDCBMTAPESI$aaDCBPRT SI˜˜aaDCBTERM SI¡¡aaŠPAGEO********************************************************************************2*‚MACRO.DCB.SI‚--DEFINESBASICDCBANDCDBMACROSF*†SeeMACRO.DCB*.SIforspecificDCBmacros,i.e.DISK,TERM,GPIB,etc.*C*‚SECTION0ƒDCB=DeviceControlBlock:‚containsinfoaboutdevice,/*”includingdefaultconfiguration;usedheavily*”byFMS,FHS,IOS.G*‚SECTION1ƒCDB=ChannelDataBlock:‚usedbyIOItoallocatechannels.*O******************************************************************************* G*‚DIPDCBmacrodefinesdevice-independentportionofaDCB.‚Usedbythe7*‚otherdevicedependentmacrosDSKDCB,CRTDCB,PRTDCB.* DIPDCB MACRO.DC.L„*+\1AddressofnextDCBinlinkedlist.+DC.L„\2’ASCIIidentificationforthisDCB.DC.L„0“AddressofDCQentry.)DC.L„\3’Name„oftaskmakingtherequest.,DC.L„\4’Sessionoftaskmakingtherequest.DC.L„0“AddressofLUT.;DC.L„\5’DeviceattributesassociatedwithDCB.BKM7/12/83!DC.W„0“Write/Readprotectcodes.DC.W„0“'Deviceinuse'flag.DC.L„0“Write/Readcounts.#DC.B„\6’Deviceflag(devicecode).%DC.B„\7’Deviceflag(devicestatus). DC.L„\8’Channelidentification.3DC.B„\9’Devicenumberassociatedwiththechannel.DC.B„0“Taskpriority.DC.L„0“Currentrecord#.7DS.B„IOSBLNŽStorageareafortheIOCBbeingprocessed.8DC.L„0“LogicaladdressofIOCBinuser'saddressspace.6DC.B„0“Config.coordinationflag(0-->atdefaults).DC.B„0“Breakcount.%DC.L„0“AddressofbreakserviceLUT.0DC.L„0“Breakserviceaddress.ƒ-----------------.DC.L„0“Eventclaimer--tasknameŒBKM7/12/833DC.L„0“Eventclaimer--sessionnumber‡BKM7/12/839DC.L„\A’AddressofsupervisorDCBorSession‚BKM7/12/830*œnumberifthisisasupervisorDCB„BKM7/12/839DC.L„0“Supervisor/subordinateDCBopencountBKM7/12/836DC.L„0,0,0,0Deviceindependent/dependentbufferzone  ENDM PAGE*,*‚MacrotodefineaChannelDataBlock(CDB)7*‚UsedbyIOItoallocatechannels;equatesareinLV5.*\4e/CDBLNEQU$2E„LengthoftheCDBdatastructure. CDB MACROSECTION1‡===CDBSECTION===*DC.L*+CDBLN„PointertonextCDBinlist.*DC.W\1‰OptionsfortheALLOCATEcommand.DC.L\2‰Channelmnemonic.DC.B\3‰Channeltype.4DC.B\4‰Maskedinterruptmaximuminstructioncount.$DC.L\5‰Physicaladdressofdriver.FDC.L\6‰Supervisorchannel'smnemonic(onlyifbit3ofoptionsset).?DC.L\7‰Physicaladdressofdeviceinmemory-mappedI/Ospace.?DC.W\8‰#ofbytesdeviceoccupiesinmemory-mappedI/Ospace.DC.B\9‰Vectornumber.DC.B\A‰Pollingpriority.DC.B\B‰Softwarepriority.2DC.B\C‰Segmentcount.(Numberofpollingentries)(DC.W\D‰Pollingbyteoffset.--[#1]--DC.B\E‰Pollingmask.DC.B\F‰Pollingtestvalue.7+ DC.W\G‰Offsetfromphysicaldeviceaddressforreset.DC.B\H‰Valueforreset.DC.B0ŠReserved.(DC.W\I‰Pollingbyteoffset.--[#2]--DC.B\J‰Pollingmask.DC.B\K‰Pollingtestvalue.7DC.W\L‰Offsetfromphysicaldeviceaddressforreset.DC.B\M‰Valueforreset.DC.B0ŠReserved.  ENDMééé‰PAGE*!*‚MacrotodefineDCBforaDisk.* DSKDCB MACROSECTION0‡===DCBSECTION===( DIPDCB DDCBLN,\1,\2,\3,\4,\5,\6,\7,\8,0&DC.B„0,0,0,0ƒSpaceforstatusfields.DC.W„\9†Attributesmask.DC.W„\A†Parametersmask.DC.W„\B†Attributesword.DC.W„\C†#ofbytes/sector.-DC.L„\D†Total#ofsectors--returnedinfo.DC.L„\E†Writetimeout.DC.L„\F†Read‚timeout.DC.B„\G†#ofsectors/track.DC.B„\H†#ofheads.!DC.W„\I†#ofcylindersonmedia.DC.B„\J†Interleavefactor.$DC.B„\K†Spiraloffset(insectors).'DC.W„\L†Physicalsectorsizeofmedia.'DC.W„\M†Startingheadnumberondrive.&DC.W„\N†Numberofcylindersondrive.)DC.W„\O†Precompensationcylindernumber.-DC.B„\P†Physicalsectorspertrackondrive.DC.B„\Q†Steppingrate./DC.W„\R†Reducedwritecurrentcylindernumber.DC.W„\S†ECCdataburstlength.?DC.B„0,0‚2bytesreservedasoffsettoanotherparameterblock  ENDMéééém PAGE*3*…MacrotodefineaGPIBDeviceControlBlock(DCB)* GPDVDCB‚MACROSECTION0‡===DCBSECTION=== NOLIST/GPDVTYP‚SETXDSGDEV‰AssumebussableDEVICEtype5USERLNƒSET(\I+1)/2ˆUserareamustbeeven#ofbytes4IFNCƒ'\0',''ŽIFP0=NULLTHENthisisaDEVICEDCB7GPDVTYP‚SETXDSGBUS‰ELSEitistheBUS(channel)itself4GPCCBNAMSET\KŽCCBnameforalldevicesonthisBUS.GPDVCNT‚SET\0+1ŒCurrent#devices+1forBUS.GPMAXCT‚SETGPDVCNT‰Max.#devicesonthisBUS)BUSDCBƒSET*L, ocationofDCBforthisBUS,IFGTGPDVCNT-15Toomanydevicesspecified?1GPDVCNT‚SET0Don'tgenanydevicesforthisBUS! LIST1 FAIL 400 TOO MANY DEVICES SPECIFIED FOR THIS BUS MEXIT ENDC1IFEQ„GPCCBNAMŒVerifyCCBnamehasbeenspecified GPDVCNT‚SET0 LIST, FAIL 401 NO CCB NAME SPECIFIED FOR GPIB BUS MEXIT ENDC ENDC LIST,IFGTGPDVCNTCheckforvalidDCBgenerationH DIPDCB USERLN+BDCILN,\1,IOSID,IOSESS,\2,\3,\4,GPCCBNAM,GPMAXCT-GPDVCNT,& BUSDCBDC.B„0“DEVICESTATUSDC.B„XTGBUSŽCHANNELTYPEDC.B„GPDVTYPDEVICETYPEDC.B„IODGPIBDRIVERCODEDC.W„\5’ATTRIBUTEMASKDC.W„\6’PARAMETERMASKDC.W„\7’ATTRIBUTEWORD DC.W„0“RECORDLENGTH(NOTUSED)DC.L„0“DEVICESIZE(NOTUSED)%DC.L„\8’WRITETIMEOUT(MILLISECONDS)$DC.L„\9’READTIMEOUT(MILLISECONDS)&DC.L„\A’ENDOFRECORDCHARACTERISTICS$DC.W„\B’EOSCHARACTERS(WRITE/READ)$DC.B„\C’PARALLELPOLLCONFIGURATIONDC.B„\D’DEVICEPRIMARYADDRESS.DC.L„\E’WRITELENGTHXFER(FMT/IMAGE#BYTES)-DC.L„\F’READLENGTHXFER(FMT/IMAGE#BYTES)$DC.L„\G’READSECONDARYADDRESSMASK%DC.L„\H’WRITESECONDARYADDRESSMASKDC.L„0,0‘RESERVED6DC.W„USERLNŽLENGTHOFUSERDEFINEDCONFIGURATIONAREA3DC.L„\J’USERDEFINEDI/OFORMATTERROUTINEADDRESS*DCB.BƒUSERLN,0ŒALLOCATEUSERDEFINEDAREA‚NOLIST;GPDVCNTSETGPDVCNT-1ˆDECREMENTDEVICECOUNTERFORTHISBUS‚LIST‚ENDC‚ENDM*4*…MacrotorecursivelycreatealldefaultGPIBDCB's*1*ˆP0=(FIRST)DEFAULTDEVICENAME(ASCIISTRING)*vA GPDFDCB MACROSECTION0‡===DCBSECTION=== NOLIST IFNCƒ'\0',''8GPDFNAM‚SET'\0'†DefineNAMEifthisisfirstinvocation ENDC LIST2IFGTGPDVCNTŠCheckifdevicecounterisexhaustedE GPDVDCB GPDFNAM,GPD$AT2,0,1,GPD$ATM,GPD$PAM,GPD$ATW,GPD$WTO,GPD$RTO,E& GPD$EOR,GPD$EOS,GPD$PPC,GPD$PRA,GPD$WLN,GPD$RLN,GPD$RSM,GPD$WSM,0,0 NOLIST7GPDFNAMSETGPDFNAM+1‚BumptheNAMEforthenextdevice LIST'GPDFDCBƒ\1‹Invokeselffornextdevice ENDC  ENDMéééééé PAGE*/*‚MacrotodefineDCBforamagnetictapedrive* MTADCB MACROSECTION0‡===DCBSECTION===( DIPDCB MDCBLN,\1,\2,\3,\4,\5,\6,\7,\8,0&DC.B„0,0,0,0ƒSpaceforstatusfields.DC.W„\9†Attributesmask.DC.W„\A†Parametersmask.DC., W„\B†Attributesword.5DC.W„0‡#ofbytes/Versadoslogicalsector(notused)7DC.L„0‡Total#ofVersadossectorsonmedia(notused)DC.L„\C†Writetimeout.DC.L„\D†Read‚timeout.4DC.B„\E†Requesteddensityforwritefromloadpoint.3DC.B„\F†Numberofreadtriesbeforeerrormessage..DC.B„\G†Numberofwritetriesbeforeerasing.1DC.B„\H†Numberoferasuresbeforeerrormessage.*=*ˆTheIOSWTOaboveisasystemtimeoutforthewritecommand.F*ˆTheIOSRTOaboveisasystemtimeoutforeverycommandexceptwrite.6*ˆThemagtapedriverneedsmorespecializedtimeouts.C*ˆThedriverusesthevalueinIOSWTOforeraseandwritefilemark.9*ˆThedriverusesthetimeoutslistedbelowfortheother *ˆcommands.C*ˆTheIOSRTOhastobelargerthanthelargesttimeoutthatweneed5*ˆforthecommandswemaygetinthemagtapedriver.*DC.L„\I†Timeoutforread4DC.L„\J†TimeoutforspaceforwardandspacereverseDC.L„\K†TimeoutforrewindCDC.L„\L†Timeoutforsearchforwardandsearchreverseforfilemark'DC.L„0,0…Bytesreservedforfutureuse.DC.W„0,0,0,0ƒ8bytesreservedforfutureuse.  ENDMéé‡% PAGE*$*‚MacrotodefineDCBforaPrinter.* PRTDCB MACROSECTION0‡===DCBSECTION===( DIPDCB PDCBLN,\1,\2,\3,\4,\5,\6,\7,\8,0&DC.B„0,0,0,0ƒSpaceforstatusfields.DC.W„\9ˆAttributesmask.DC.W„\AˆParametersmask.DC.W„\BˆAttributesword.DC.W„\Cˆ#ofcharacters/line.DC.L„\Dˆ#oflines/page.DC.L„\EˆWritetimeout.DC.L„0‰Readtimeout.DC.W„\FˆLogicallinelengthDC.B„\GˆEnd-of-linecharacter.&DCB.Bƒ15,0†Reservedspace(15bytes).  ENDMéééééé-  PAGE*%*‚MacrotodefineDCBforaTerminal.* CRTDCB MACROSECTION0‡===DCBSECTION===( DIPDCB CDCBLN,\1,\2,\3,\4,\5,\6,\7,\8,0&DC.B„0,0,0,0ƒSpaceforstatusfields.DC.W„\9†Attributesmask.DC.W„\A†Parametersmask.DC.W„\B†Attributesword.DC.W„\C†#ofcharacters/line.DC.L„\D†#oflines/page.DC.L„\E†Writetimeout.DC.L„\F†Readtimeout.DC.B„\G†XOFFchar.DC.B„\H†XONchar.DC.B„\I†BREAKEQUIVALENTchar.DC.B„\J†DISCARDOUTPUTchar.DC.B„\K†REPRINTLINEchar.DC.B„\L†CANCEL‚LINEchar.DC.L„\M†Readterminators.DC.L„\N†End-of-linestring.DC.B„\O†BAUDratecode.DC.B„\P†NULpadding.DC.B„\Q†Terminatorclass.(DC.B„\R†Terminaltype(0=EXORterm155).:DC.B„0,0,0,0,0,0,0,0,0,0‚Internaluseonly--donotuse.DC.B„0,0,0,0,0,0Reserved.  ENDMééé陚' M605MEM AG®®;aaM610MEM AG¿¿~aaM615MEM AGØØ<aaM625MEM AGéé9aaIOCINT AGúúºaaRADMEM AG JssRIOMEM AG6aaM605MEM CI-- aaRADMEM CI66 aaM610MEM CI?? aaM625DRV CIHHaaM615MEM CIQQ aaRIOMEM CIZZ aaM625MEM CIcc aaM600DRV CIllaaM605DRV CIuuaaM610DRV CI~~aaM615DRV CI‡‡aaPCDRV CIaaRADDRV CI™™aa**ˆ&.M605MEM.AG*J*==========================================================================*‚CodeaddedtoallocatememoryfortableusedbyDACdriver.6*‚Thiscodeisassembledandlinkedinatsysgentime.*>*‚06/01/84‚psg‚Changedconditionalnamefornewsysgenmethod.*‚01/11/84‚bwn*K*==========================================================================‰IFNE„\NVME6055T0PAGAL‚EQU…4‘Pageallocationdirective#forTrap0.6‰XREF„DACTBLŒSYSPARlocationcontainingDACTBLaddre- ss ‰XDEF„M605MEM%‰INCLUDE&.M605DRV.EQ†DACequatefile* ‰SECTIONƒ8 M605MEM‚EQU‡*>DCMEM1ƒMOVE.L#\NVME605,D2‡getnumberofDACmodulesinsystem0‰BEQ.S‚NODACSbranchifnoDACmodulesonsystem<‰MOVE.L#\NU605,D3‰getnumberofinterruptlevelspermodule$‰MOVE.LD2,D4Žsavenumberofmodules!‰MULUƒD3,D4ŽgetnumberofDAC-IDs-‰MULUƒ#DACIDLNG,D4‡get#ofbytesforDAC-IDs%‰ADD.L‚#DACNTRY,D4ˆaddinheadersize)‰MULUƒ#IOLNG,D2‰get#ofbytesforIOmap,‰ADD.L‚D4,D2Ž#ofbytesneededforDACtable‰MOVE.LD2,D5Žsave#ofbytes'‰ADD.L‚#255,D2Œrounduptopageboundry‰ASR.L‚#8,D2Ž#ofpagesneeded'‰BMI.S‚DACERRbranchifnegative,error)‰MOVE.L#0,A0Žclearforallocatingmemory)‰MOVE.WD2,A0Žnumberofpagestoallocate-‰MOVE.L#T0PAGAL,D0ˆpageallocationdirective"‰TRAPƒ#0‘callRMS68Ktogetmemory"‰BRA.S‚DACOKŽbranchifgoodreturn1DACERRƒMOVE.L#32,D0fatalerror-gostopsystem‰TRAPƒ#08DACOK„MOVE.L#'!DAC',DACEYE(A0)setDACtableeyecatcher)‰MOVE.WD5,DACLNG(A0)†#ofbytesintable5‰MOVE.W#DACNTRY,DACOFST(A0)offsettoDAC-IDentries&‰MOVE.WD4,DACIO(A0)†offsettoIOmaps'‰CLR.B‚DACNAL(A0)‰noDACsallocatedyet.‰MOVE.L#\NVME605,D4‡getnumberofDACmodules-‰MULUƒ#\NU605,D4‰getnumberofDAC-IDentries-‰MOVE.BD4,DACNMAX(A0)…maxnumberofDAC-ID's6‰MOVE.LA0,DACTBLŠsavetableaddressinsystemparams.0‰LEA„DACID(A0),A0‡startaddressoftableentries/‰SUB.W‚#DACNTRY,D5ˆnumberofbytestosettoFF‰ASR.W‚#1,D5Žnumberofwords¦4¯3‰MOVE.W#$FFFF,D4Šstorethisinallentrylocations&DACCLRƒMOVE.WD4,(A0)+‹settheentries‰SUB.W‚#1,D5Ždecrementcounter ‰BNE.S‚DACCLRbranchifnotdone NODACSƒEQU„*‰ENDC*‰ENDééééééé**ˆ&.M610MEM.AG*„IFNEƒ\NVME610+\NVME620 ŠNOFORMATŠPAGE0PAGAL…EQU„4ŽRMS68KPAGALTrap0directivenumber3KILLER„EQU„32RMS68KKILLERTrap0directivenumberŠOPTƒCRE N******************************************************************. *************:*‹InterruptProcessingQueueAllocationandInitialization+*fortheInputModule(VME610/620)Driver*M*ƒThissectionofcodeallocatesmemoryfortheInterruptQueueControlTableM* and the Interrupt Processing Queue used by the Input Module Driver. First aO* page of memory is allocated for the control table and the base address of theJ* table is stored in the INPTBL field of SYSPAR for later retrieval by theN* drivers initialization routine. The table is then initialized and the memoryO* required for the Interrupt Processing Queue is calculated and allocated basedJ* on the SYSGEN parameter M610QSIZ. If all of the required pages of memoryO* cannot be allocated, RMS68K routine KILLER is called to force a system crash.*>*ƒThiscodeislinkedintothe‚SystemInitializerasdescribedK* in the SYSgen instructions for the driver. In the following code, symbolsM* preceeded by a backslash '\' character are user specified SYSgen parametersK* that are replaced with numeric values by the SYSgen SUBS command prior toO* assembly of this source. The parameters are assumed to have been validated inA* in a separate assembly performed earlier in the SYSgen process.*O*******************************************************************************ŠSPC„25ŠXREFƒINPTBLThissymbolisanaddresswithinSYSPAR. ŠXDEFƒM610MEMŠSPC„2 ŠSECTION8ŠSPC„28M610QSIZ‚EQU„\M610QSIZThisisthesizeoftheInterrupt&*£ProcessingQueueintermsofmaximum,*£numberofentriesthequeueistocontain.ŠSPC„2ŠINCLUDE‚&.BAB.EQ*‰INCLUDE‚&.BAB.EQŠINCLUDE‚&.M610INTQ.EQ*‰INCLUDE‚&.M610INTQ.EQ ŠSECTION‚8ŠSPC„2 M610MEM‚EQU‡*9INPMEM„CLR.L‚D0“Clearallregisterstobeusedincalling·2À7È3ŠMOVE.LD0,A0ŽtheRMS68Kmemoryallocationroutine. ŠMOVE.LD0,A1 ŠMOVE.LD0,A6ŠSPC„22ŠADD.W‚#1,A0CallRMS68KroutinePAGALtoallocate9ŠMOVE.B#PAGAL,D0Š256bytes(1page)ofmemoryforglobal*ŠTRAPƒ#0‘variablestorage.Ifnomemoryis7ŠBRA.S‚INPM010Œavailable,callRMS68KroutineKILLERto!ŠBSR.S‚INPMKILL‹crashthesystem.ŠSPC„2>INPM010ƒMOVE.LA0,INPTBLŒSavetheglobalvariableareaaddress3ŠMOVE.LA0,A4ŽreturnedbyPAGALintheinputdriver'*£tablepointer(INPTBL)withinSYSPAR.-*£MakeapermanentcopyoftheaddressinA3.ŠSPC„24ŠMOVE.W#63,D0CleartheglobalvariableareatoallINPM020ƒCLR.L‚(A0)+Žzeros.ŠDBRAƒD0,INPM020ŠPAGEI*ƒThefollowingcodeusestheInterruptQueueControlTableandallocates* memory for the queue.ŠSPC„24INPM050ƒCLR.L‚D1’ClearD1foruseasworkregister.ŠSPC„28ŠMOVE.W#M610QSIZ,D5‰Loadthenumberofentriesthatthe(*£InterruptQueueistocontainintoD5.ŠSPC„2<ŠMOVE.L#'IQCT',QID(A4)†InitializetheasciiIDfieldinthe(*£InterruptQueueControlTablewiththe**£mnemonic'IQCT'.Thismnemonicservesas-*£servesasavisualaideinanalysingmemory*£dumpsfordebugging.ŠSPC„28ŠMULUƒ#IQENTLN,D5ŠCalculatethequeuelengthinbytesby**£multiplyingthenumberofentriesinthe"*£queuebythequeueentrylength.ŠSPC„22ŠTST.B‚D5“Calculatetheminimumnumberof256byte7ŠBEQ.S‚INPM055Œmemorypagesnecessarytoaccomodatethe1ŠADD.W‚#256,D5Œspecifiednumberofqueueentries.INPM055ƒLSR.W‚#8,D5ŠSPC„23ŠMOVE.W#15,D0Calculatethebitnumberofthemost=INPM057ƒLSL.W‚#1,D5Žsignificantbitofthenumberofpagesto ŠDBCSƒD0,INPM057‰allocateinD5.ŠSPC„2/ŠBEQ.S‚INPM058ŽIfbitsotherthanjustthemost6ŠADD.W‚#1,D0Žsignificantbitofthenumberofpagesis'*£set,incrementthenumberofthemost-*£significantbittothenexthigherpowerof*£two.ŠSPC„27INPM058ƒCLR.L‚D5“Setthenumberofpagestoallocateto6ŠBSETƒD0,D5Žthelowestpoweroftwothatwillholdthe$*£requestednumberofqueueentries.. ŠSPC„2=INPM060ƒMOVE.LD5,A0Loadthenumberofpagestobeallocated:ŠMOVE.L#PAGAL,D0ŠintoA0andcallRMS68KroutinePAGALto2ŠTRAPƒ#0‘obtainthememory.Iftherequiredamount6ŠBRA.S‚INPM070Œofmemoryisnotavailable,callRMS68K>INPMKILL‚MOVE.L#KILLER,D0‰routineKILLERtocrashthesystem.ŠTRAPƒ#0ŠSPC„2?INPM070ƒMOVE.LA0,QPTR(A4)ŠStoretheinterruptprocessingqueue**£baseaddressinthequeuecontroltable.ŠSPC„20ŠASL.W‚#8,D5Convertthelengthoftheinterrupt5ŠSUB.W‚#1,D5Žqueuein256bytepagestothelengthin>ŠMOVE.WD5,QWAMSK(A4)†bytes.Formthequeuewraparoundmaskby)*£decrementingthequeuelengthandstore&*£themaskinthequeuecontrolentry.ŠSPC„2K*ƒThisistheendoftheInputModuleDriversysteminitializationroutine.*ŠFORMAT„ENDC‰ENDéééé**ˆ&.M615MEM.AG*J*==========================================================================*‚CodeaddedtoallocatememoryfortableusedbyACOdriver.H*‚Thiscodeisassembledandlinkedintotheapproprateinitializerfile*‚atSYSGENtime.*K*==========================================================================‰IFNE„\NVME6155T0PAGAL‚EQU…4‹Pageallocationdirective#forTrap0.6‰XREF„ACOTBL…SYSPARlocationcontainingACOTBLaddress ‰XDEF„M615MEM*&*ˆINCLUDE&.M615DRV.EQ…ACOequatefile%‰INCLUDE&.M615DRV.EQ…ACOequatefile* ‰SECTIONƒ8 M615MEM‚EQU‡*HACMEM1ƒMOVE.L#\NVME615,D2(NVME615)getnumberofACOmodulesinsystem0‰BEQ.S‚NOACOSbranchifnoACOmodulesonsystem?‰MOVE.L#\NU615,D3‰(NU615)getnumberofinterruptlevels/module$‰MOVE.LD2,D4Žsavenumberofmodules!‰MULUƒD3,D4ŽgetnumberofACO-IDs-‰MULUƒ#ACOIDLNG,D4‡get#ofbytesforACO-IDs%‰ADD.L‚#ACONTRY,D4ˆaddinheadersize)‰MULUƒ#IOLNG,D2‰get#ofbytesforIOmap,‰ADD.L‚D4,D2Ž#ofbytesneededforACOtable‰MOVE.LD2,D5Žsave#ofbytes'‰ADD.L‚#255,D2Œrounduptopageboundry‰ASR.L‚#8,D2Ž#ofpagesneeded'‰BMI.S‚ACOERRbranchifnegative,error)‰MOVE.L#0,A0Žclearforallocatingmemory)‰MOVE.WD2,A0Žnumberofpagestoallocate-‰MOVE.L#T0PAGAL,D0ˆpageallocationdirective"‰TRAPƒ#0‘callRMS68Ktogetmemory"‰BRA.S‚ACOOKŽbranchifgoodreturn1ACOERRƒMOVE.L#32,A0fatalerror-gostopsystem‰TRAPƒ#08ACOOK„MOVE.L#'!ACO',ACOEYE(A0)setACOtableeyecatcher)‰MOVE.WD5,ACOLNG(A0)†#ofbytesintable5‰MOVE.W#ACONTRY,ACOOFST(A0)offsettoACO-IDentries&‰MOVE.WD4,ACOIO(A0)‡offsettoIOmaps'‰CLR.B‚ACONAL(A0)‰noACOsallocatedyet8‰MOVE.L#\NVME615,D4ƒ(NVME615)getnumberofACOmodules5‰MULUƒ#\NU615,D4‰(NU615)getnumberofACO-IDentries-‰MOVE.BD4,ACONMAX(A0)…maxnumberofACO-ID's6‰MOVE.LA0,ACOTBLŠsavetableaddressinsystemparams.0‰LEA„ACOID(A0),A0‡startaddressoftableentries/‰SUB.W‚#ACONTRY,D5ˆnumberofbytestosettoFF‰ASR.W‚#1,D5Žnumberofwords/ Ð3Ù 3‰MOVE.W#$FFFF,D4Šstorethisinallentrylocations&ACOCLRƒMOVE.WD4,(A0)+‹settheentries‰SUB.W‚#1,D5Ždecrementcounter ‰BNE.S‚ACOCLRbranchifnotdone NOACOSƒEQU„*‰ENDC**‰END ééééééé**ˆ&.M625MEM.AG*J*=========================================================================*A*‚CodeaddedtoallocatememoryfortableusedbyMVME625driver.7*‚ThiscodeisassembledandlinkedduringSYSGENtime.*K*==========================================================================‰IFNE„\NVME6255T0PAGAL‚EQU…4‹Pageallocationdirective#forTrap0.6‰XREF„DCOTBL…SYSPARlocationcontainingDCOTBLaddress ‰XDEF„M625MEM&*ˆINCLUDE&.M625DRV.EQ†DCOequatefile%‰INCLUDE&.M625DRV.EQ†DCOequatefile* ‰SECTION8 M625MEM‚EQU‡*>DCMEM1ƒMOVE.L#\NVME625,D2‡getnumberofDCOmodulesinsystem0‰BEQ.S‚NODCOSbranchifnoDCOmodulesonsystem,‰MOVE.L#\NU625,D3‰getnumberofuser/boards$‰MOVE.LD2,D4Žsavenumberofmodules!‰MULUƒD3,D4ŽgetnumberofDCO-IDs-‰MULUƒ#DCOIDLNG,D4‡get#ofbytesforDCO-IDs%‰ADD.L‚#DCONTRY,D4ˆaddinheadersize)‰MULUƒ#IOLNG,D2‰get#ofbytesforIOmap,‰ADD.L‚D4,D2Ž#ofbytesneededforDCOtable‰MOVE.LD2,D5Žsave#ofbytes'‰ADD.L‚#255,D2Œrounduptopageboundry‰ASR.L‚#8,D2Ž#ofpagesneeded'‰BMI.S‚DCOERRbranchifnegative,error)‰MOVE.L#0,A0Žclearforallocatingmemory)‰MOVE.WD2,A0Žnumberofpagestoallocate-‰MOVE.L#T0PAGAL,D0ˆpageallocationdirective"‰TRAPƒ#0‘callRMS68Ktogetmemory"‰BRA.S‚DCOOKŽbranchifgoodreturn1DCOERRƒMOVE.L#32,A0fatalerror-gostopsystem‰TRAPƒ#08DCOOK„MOVE.L#'!DCO',DCOEYE(A0)setDCOtableeyecatcher)‰MOVE.WD5,DCOLNG(A0)†#ofbytesintable5‰MOVE.W#DCONTRY,DCOOFST(A0)offsettoDCO-IDentries&‰MOVE.WD4,DCOIO(A0)†offsettoIOmaps'‰CLR.B‚DCONAL(A0)‰noDCOsallocatedyet.‰MOVE.L#\NVME625,D4‡getnumberofDCOmodules-‰MULUƒ#\NU625,D4‰getnumberofDCO-IDentries-‰MOVE.BD4,DCONMAX(A0)…maxnumberofDCO-ID's6‰MOVE.L/ A0,DCOTBLŠsavetableaddressinsystemparams.0‰LEA„DCOID(A0),A0‡startaddressoftableentries/‰SUB.W‚#DCONTRY,D5ˆnumberofbytestosettoFF‰ASR.W‚#1,D5Žnumberofwords3‰MOVE.W#$FFFF,D4Šstorethisinallentrylocationsá3ê&DCOCLRƒMOVE.WD4,(A0)+‹settheentries‰SUB.W‚#1,D5Ždecrementcounter ‰BNE.S‚DCOCLRbranchifnotdone NODCOSƒEQU„*‰ENDC*‰ENDééééééé* *ˆ&.IOCINT.AG*F***********************************************************************#*IOCINTI/OCHANNELCCBALLOCATION*$*COPYRIGHTED1982BYMOTOROLA,INC.*F************************************************************************PROGRAMNAME:‚IOCINT*D*REV.‚1.00‚6/14/82ƒ(RONIWOOD)-ALLOCATEALLCCB'SFORI/OCHANNEL*¥DEVICEDRIVERS.*SUPPORTTABLES:‚CHANNELCONTROLBLOCKS(CCB)*’DEVICECONTROLBLOCKS(DCB)*F**********************************************************************‡NOLIST‡INCLUDE&.TR1.EQ‡INCLUDE&.EXE.EQ‡INCLUDE&.LV5.EQ‡LIST*†INCLUDE&.TR1.EQ*†INCLUDE&.EXE.EQ*†INCLUDE&.LV5.EQ*‡INCLUDEMACRO.DCB.SI*†INCLUDEMACRO.DCB.SI*!IOCINT‚IDNT‚1,0„I/OCHANNELCCB'S‰OPTƒMEX* ‰XDEF†IOSEG* SECTION 1*9*SET UP CHANNEL CONTROL BLOCKS FOR DEVICES ON I/O CHANNEL*K****************************************************************************-*ˆINTERRUPTVECTORSANDLEVELSONI/OCHANNEL*!*ˆVECTORSƒVM02†VM03†VME110„VMES10**‰IOCVEC1ƒ$71‡$49‡$19‡$41*‰IOCVEC2ƒ$72‡$4A‡$1A‡$43*‰IOCVEC3ƒ$73‡$4B‡$1B‡$44*‰IOCVEC4ƒ$74‡$4C‡$1C‡$45** *ˆLEVELS„VM02†VM03†VME110„VMES10**ˆIOCLVL1…2‰3‰1‰2*ˆIOCLVL2…3‰4‰2‰4*ˆIOCLVL3…4‰5‰3‰5*ˆIOCLVL4…5‰6‰4‰6**6*ˆINTERRUPTVECTOR1CORRESPONDSTOINTERRUPTLEVEL1,*ˆANDSOFORTH.5*ˆPLEASEBESURETHATYOURBOARDISJUMPEREDPROPERLY6*ˆTOPRODUCETHEINTERRUPTVECTORANDLEVELCALLEDFOR*ˆINTHECDBMACRO.**ˆI/OCHANNELBASEADDRESSES0 **—VM02†VM03†VME110„VMES10***ˆIOCBASE:†$F80000ƒ$FA0000ƒ$FE6000ƒ$F1C000** IOSEG EQU *H************************************************************************‰PAGEH*************************************************************************F*ƒIfanyRADboardsarespecifiedin.CNFGDRVR.CI,includethe3* code to perform CCB allocations for those boards.* ‚IFNE\NRADŒINCLUDEƒ&.XRADIOC.SI‚ENDC‰PAGEòVûLH*************************************************************************F*ƒIfanyRIOboardsarespecifiedin.CNFGDRVR.CI,includethe3* code to perform CCB allocations for those boards.* ‚IFNE\NRIOŒINCLUDEƒ&.XRIOIOC.SI‚ENDC‰PAGEH*************************************************************************J*ƒIfanyVME600boardsarespecifiedin.CNFGDRVR.CI,includethe3* code to perform CCB allocations for those boards.* ‚IFNE\NVME600ŒINCLUDEƒ&.XM600IOC.SI‚ENDC‰PAGEH*************************************************************************J*ƒIfanyVME605boardsarespecifiedin.CNFGDRVR.CI,includethe3* code to perform CCB allocations for those boards.* ‚IFNE\NVME605ŒINCLUDEƒ&.XM605IOC.SI‚ENDC‰PAGEH*************************************************************************I*ƒIfanyVME610orVME620boardsarespecifiedin.CNFGDRVR.CI,?* include the code to perform CCB allocations for those boards.* ‚IFNE\NVME610+\NVME620ŒINCLUDEƒ&.XM610IOC.SI‚ENDC‰PAGEH*************************************************************************J*ƒIfanyVME615boardsarespecifiedin.CNFGDRVR.CI,includethe3* code to perform CCB allocations for those boards.* ‚IFNE\NVME615ŒINCLUDEƒ&.XM615IOC.SI‚ENDC‰PAGE<*************************************************************J*ƒIfanyVME625boardsarespecifiedin.CNFGDRVR.CI,includethe3* code to perform CCB allocations for those boards.*‚IFNE\NVME625‹INCLUDE„&.XM625IOC.SI‚ENDC*I***************************************************************************‰DC.L0ENDOFCCB'S‰DS.B†$10‡STACKAREA STACK„EQU‡***ˆALLOCATECHANNEL*ALLBLKƒDC.B…XDCALLCOMMANDCODE‰DC.B„0“COMMANDSUB-CODE‰DC.B„0“RESERVED'‰DC.B…XOPEXCOPTIONS(EXCLUSIVEACCESS)‰DC.L„0“CHANNELMNEMONIC)‰DS.B„XIOALN+(2*XIOXLN)-XIOPRM†PARAMETERS‰DC.L„0“PRECAUTION*5*ˆWALKCCBCHAINANDALLOCATEALLKNOWNI/OCHANNELS.**INIT…MOVE.L‚#STACK,A7‹SETUPSTACKPOINTER,‰MOVE.L‚#IOSEG,A1…SETUPPOINTERTOCCBLIST‰TST.Lƒ(A1)ˆANYTODO?‰BEQ.SINIT40ˆBRANCHIFNO0‰MOVE.L‚#ALLBLK,A0ŠSETUPPOINTERTOPARAMBLOCK2INIT10ƒMOVE.W‚XCDBOPT(A1),XIOOPT-1(A0)‚GETOPTIONS6‰MOVE.L‚XCDBAID(A1),XIOCID(A0)SETUPCHANNELMNEMONIC3‰MOVEM.LXCDBPRM(A1),D0-D5/A2-A4ƒPICKUPPARAMETERS=‰MOVEM.LD0-D5/A2-A4,XIOPRM(A0)„MOVEPARAMETERSTOPARAMBLOC/INIT15ƒMOVE.L‚#XCCMR,D0‹SETUPDIRECTIVENUMBER‰TRAPƒ#1“ALLOCATECHANNEL)INIT17ƒMOVE.L‚XCDBPTR(A1),A1†GETNEXTCCB ‰TST.L(A1)‰BNE.SƒINIT10ŽNOTFINISHEDINIT40ƒERQ.TERM**ˆABORT* KILL…EQU…*'‰MOVEM.LD0/A0,-(A7)‰SAVEREGD0ANDA0‰ERQ.ABORT‚#0ABORTSELF‰PAGE ‰END…INITé0 ééé*J*=========================================================================*?*‚CodeaddedtoallocatememoryfortablesusedbyRAD1driver.*K*==========================================================================7‰XREF†RAD1TBLƒSYSPARloccontainingaddrofRADtables. ‰XREF†KILLER *ˆBRA‡RADMEM*ˆINCLUDEƒ&.RADDRV.EQ‰INCLUDEƒ&.RADDRV.EQ ‰SECTIONƒ8ŠMOVE.L#\NRIOINT,D3‡getnumberofinterruptlevelspermodule$ŠMOVE.LD2,D4Žsavenumberofmodules!ŠMULUƒD3,D4ŽgetnumberofRIO-IDs-ŠMULUƒ#RIOIDLNG,D4‡get#ofbytesforRIO-IDs%ŠADD.L‚#RIONTRY,D4ˆaddinheadersize+ŠMULUƒ#PIALNG,D2‰get#o1 fbytesforPIAmap,ŠADD.L‚D4,D2Ž#ofbytesneededforRIOtableŠMOVE.LD2,D5Žsave#ofbytes'ŠADD.L‚#255,D2ŒrounduptopageboundryŠASR.L‚#8,D2Ž#ofpagesneeded'ŠBMI.S‚RIOERRbranchifnegative,error)ŠMOVE.L#0,A0Žclearforallocatingmemory)ŠMOVE.WD2,A0Žnumberofpagestoallocate'ŠMOVE.L#4,D0Žpageallocationdirective"ŠTRAPƒ#0‘callRMS68Ktogetmemory"ŠBRA.S‚RIOOKŽbranchifgoodreturn.RIOERR„BSR„KILLERfatalerror-gostopsystem8RIOOK…MOVE.L#'!RIO',RIOEYE(A0)setRIOtableeyecatcher)ŠMOVE.WD5,RIOLNG(A0)†#ofbytesintable5ŠMOVE.W#RIONTRY,RIOOFST(A0)offsettoRIO-IDentries(ŠMOVE.WD4,RIOPIA(A0)†offsettoPIAmaps'ŠCLR.B‚RIONAL(A0)‰noRIOsallocatedyet+ŠMOVE.L#\NRIO,D4ŠgetnumberofRIOmodules/ŠMULUƒ#\NRIOINT,D4‡getnumberofRIO-IDentries-ŠMOVE.BD4,RIONMAX(A0)…maxnumberofRIO-ID's6ŠMOVE.LA0,RIOTBLŠsavetableaddressinsystemparams.0ŠLEA„RIOID(A0),A0‡startaddressoftableentries/ŠSUB.W‚#RIONTRY,D5ˆnumberofbytestosettoFF0ŠASR.W‚#1,D5Žnumberofwords3ŠMOVE.W#$FFFF,D4Šstorethisinallentrylocations&RIOCLR„MOVE.WD4,(A0)+‹settheentriesŠSUB.W‚#1,D5Ždecrementcounter ŠBNE.S‚RIOCLRbranchifnotdone NORIOS„EQU„*ŠENDééééééé**ˆ&.M605MEM.CI*GMSG‰*******************************************************************#MSG‰*‚MVME605driverinitializationGMSG‰******************************************************************* SUBSˆ&.M605MEM.AGASM‰&.M605MEM.AG,NEW.RO,\ASMLS IFEQˆ\ASMLSWƒ=COPY‡\ASMLS,\WORKLS;AENDC INCLUDE…&.ROGEN.CIé1 ééééé%* *ˆ&.RADMEM.CI*GMSG‰*******************************************************************MSG‰*‚RADdriverinitializationGMSG‰******************************************************************* SUBSˆ&.RADMEM.AGASM‰&.RADMEM.AG,NEW.RO,\ASMLS IFEQˆ\ASMLSWƒ=COPY‡\ASMLS,\WORKLS;AENDC INCLUDE…&.ROGEN.CIéééééé.**ˆ&.M610MEM.CI*EMSG‰*****************************************************************'MSG‰*‚MVME610/620„driverinitializationDMSG‰**************************************************************** SUBSˆ&.M610MEM.AGASM‰&.M610MEM.AG,NEW.R2 O,\ASMLS IFEQˆ\ASMLSWƒ=COPY‡\ASMLS,\WORKLS;AENDC INCLUDE…&.ROGEN.CIéééééé7**ˆ&.M625DRV.CI*GMSG‰*******************************************************************!MSG‰**‚VME625DRIVER-‚DCOUTPUTGMSG‰******************************************************************* *‚SetProcessControlFlag=ON&PCDRV„=\&PCDRV+1 5* Build VERSAdos patch chain file .VERSAPT.CF%=COPY‡VERSAPT.M625DRV.CF,VERSAPT.CF;A M625DRVƒ=*SUBSˆ&.M625IOC.SISUBSˆ&.M625DRV.LGLINKˆ&.M625DRV.LG IFEQˆ\LINKLSWƒ=COPY‡\LINKLS,\WORKLS;AENDCPROCESS…&.M625DRV.LOEND‰&.M625DRV.LOééééé2 @**ˆ&.M615MEM.CI*GMSG‰*******************************************************************MSG‰*‚615driverinitializationGMSG‰******************************************************************* SUBSˆ&.M615MEM.AGASM‰&.M615MEM.AG,NEW.RO,\ASMLS IFEQˆ\ASMLSWƒ=COPY‡\ASMLS,\WORKLS;AENDC INCLUDE…&.ROGEN.CIééééééI* *ˆ&.RIOMEM.CI*GMSG‰*******************************************************************MSG‰*‚RIOdriverinitializationGMSG‰******************************************************************* SUBSˆ&.RIOMEM.AGASM‰&.RIOMEM.AG,NEW.RO,\ASMLS IFEQˆ\ASMLSWƒ=COPY‡\ASMLS,\WORKLS;AENDC INCLUDE…&.ROGEN.CIéééé3 ééR**ˆ&.M625MEM.CI*GMSG‰*******************************************************************MSG‰*‚625driverinitializationGMSG‰******************************************************************* SUBSˆ&.M625MEM.AGASM‰&.M625MEM.AG,NEW.RO,\ASMLS IFEQˆ\ASMLSWƒ=COPY‡\ASMLS,\WORKLS;AENDC INCLUDE…&.ROGEN.CIéééééé[**ˆ&.M600DRV.CI*GMSG‰*******************************************************************3MSG‰**„VME600DRIVER-‚ANALOGTODIGITALCONVERTERGMSG‰******************************************************************* *‚SetProcessControlFlag=ON&PCDRV„=\&PCDRV+1 5* Build VERSAdos patch chain file .VERSAPT.CF%=COPY‡VERSAPT.M600DRV.CF,VERSAPT.CF;A +M600DRVƒ=*ŒMVME600/601driverbaseaddress!SUBSˆ&.M600IOC.SICCBallocations1SUBSˆ&.M600DRV.LGDrivermoduleLINKcommandfileLINKˆ&.M600DRV.LG IFEQˆ\LINKLSWƒ=COPY‡\LINKLS,\WORKLS;AENDCPROCESS…&.M600DRV.LOEND‰&.M600DRV.LOé3 ééééd**ˆ&.M605DRV.CI*GMSG‰*******************************************************************%MSG‰**„VME605DRIVER-‚ANALOGOUTPUTGMSG‰******************************************************************* *‚SetProcessControlFlag=ON&PCDRV„=\&PCDRV+1 5* Build VERSAdos patch chain file .VERSAPT.CF%=COPY‡VERSAPT.M605DRV.CF,VERSAPT.CF;A M605DRVƒ=*SUBSˆ&.M605IOC.SISUBSˆ&.M605DRV.LGLINKˆ&.M605DRV.LG IFEQˆ\LINKLSWƒ=COPY‡\LINKLS,\WORKLS;AENDCPROCESS…&.M605DRV.LOEND‰&.M605DRV.LOééééém**ˆ&.M610DRV.CI*GMSG‰*******************************************************************-MSG‰**‚VME610/620DRIVER-ACINPUT/DCINPUTGMSG‰******************************************************************* *‚SetProcessControlFlag=ON&PCDRV„=\&PCDRV+1 5* Build VERSAdos patch chain file .VERSAPT.CF%=COPY‡VERSAPT.M610DRV.CF,VERSAPT.CF;A +M610DRVƒ=*ŒMVME610/620driverbaseaddress!SUBSˆ&.M610IOC.SICCBallocations1SUBSˆ&.M610DRV.LGDrivermoduleLINKcommandfil4 eLINKˆ&.M610DRV.LG IFEQˆ\LINKLSWƒ=COPY‡\LINKLS,\WORKLS;AENDCPROCESS…&.M610DRV.LOEND‰&.M610DRV.LOééééév**ˆ&.M615DRV.CI*GMSG‰*******************************************************************!MSG‰**„VME615DRIVER-‚ACOUTPUTGMSG‰******************************************************************* *‚SetProcessControlFlag=ON&PCDRV„=\&PCDRV+1 5* Build VERSAdos patch chain file .VERSAPT.CF%=COPY‡VERSAPT.M615DRV.CF,VERSAPT.CF;A M615DRVƒ=*SUBSˆ&.M615IOC.SISUBSˆ&.M615DRV.LGLINKˆ&.M615DRV.LG IFEQˆ\LINKLSWƒ=COPY‡\LINKLS,\WORKLS;AENDCPROCESS…&.M615DRV.LOEND‰&.M615DRV.LOééééé4 * *ˆ&.PCDRV.CI* IFGTˆ\NRADƒINCLUDE…&.RADMEM.CIENDC* IFGTˆ\NRIOƒINCLUDE…&.RIOMEM.CIENDC* IFGTˆ\NVME605ƒINCLUDE…&.M605MEM.CIENDC*IFGTˆ\NVME610+\NVME620ƒINCLUDE…&.M610MEM.CIENDC* IFGTˆ\NVME615ƒINCLUDE…&.M615MEM.CIENDC* IFGTˆ\NVME625ƒINCLUDE…&.M625MEM.CIENDCééééééˆ* *ˆ&.RADDRV.CI*GMSG‰*******************************************************************MSG‰**„RADDRIVERGMSG‰******************************************************************* *‚SetProcessControlFlag=ON&PCDRV„=\&PCDRV+1 5* Build VERSAdos patch chain file .VERSAPT.CF$=COPY‡VERSAPT.RADDRV.CF,VERSAPT.CF;A RADDRV„=*SUBSˆ&.RADIOC.SISUBSˆ&.RADDRV.LGLINKˆ&.RADDRV.LG IFEQˆ\LINKLSWƒ=COPY‡\LINKLS,\WORKLS;AENDCPROCESS…&.RADDRV.LOEND‰&.RADDRV.LOééééé5 é‘.' RIODRV CI¦¦aaIOCI CI¯¯aaM600DRV LG¸¸aaM605DRV LGÁÁaaM610DRV LGÊÊaaM615DRV LGÓÓaaM625DRV LGÜÜaaIOCINT LGååaaIOCFAIL LGîîaaRADDRV LG÷÷aaRIODRV LGaaM600DRV NW  jaaM600FORTNW:ÏaaM605DRV NWWWŠaaM610DRV NWpp"¸aaM615DRV NW™™àaaM625DRV NWºº*>aaRADDRV NWëë¥aaRIODRV NW  µaaM600IOC SI-- aa* *ˆ&.RIODRV.CI*GMSG‰*******************************************************************MSG‰**„RIODRIVERGMSG‰******************************************************************* *‚SetProcessControlFlag=ON&PCDRV„=\&PCDRV+1 5* Build VERSAdos patch chain file .VERSAPT.CF$=COPY‡VERSAPT.RIODRV.CF,VERSAPT.CF;A RIODRV„=*SUBSˆ&.RIOIOC.SISUBSˆ&.RIODRV.LGLINKˆ&.RIODRV.LG IFEQˆ\LINKLSWƒ=COPY‡\LINKLS,\WORKLS;AENDCPROCESS…&.RIODRV.LOEND‰&.RIODRV.LOééééééž* *ˆ&.IOCI.CI*MSG$MSG‰StartofI/OchannelinitializerMSGTASKˆ&.IOCI.LOSTATE…='READ' SESSIONƒ=1PRIORITY‚=$DA IOCISTRƒ=* SUBSˆ&.IOCINT.AG'ASM‰&.IOCINT.AG,&.IOCINT.RO,\ASMLS;Z=50 IFEQˆ\ASMLSWƒ=COPY‡\ASMLS,\WORKLS;AEN5 DC SUBSˆ&.IOCINT.LGLINKˆ&.IOCINT.LG IFEQˆ\LINKLSWƒ=COPY‡\LINKLS,\WORKLS;AENDC END‰&.IOCI.LOéééééé§=/*=/*†&.M600DRV.LG=/*==/* Link chain file run at sysgen time to link MVME600 driver=/*D=/* Sysgen parameter LINKLS = \LINKLS = file/device to which to send=/* the linker listing=/*I=/* Sysgen parameter M600DRV = \M600DRV = address at which to link driver=/* =LINK ,&.M600DRV.LO,\LINKLS;MIXHSEG M600:8 \M600DRVINPUT &.M600DRV.ROEND=/*=ENDéééééé6 °=/*=/*†&.M605DRV.LG=/*==/* Link chain file run at sysgen time to link MVME605 driver=/*D=/* Sysgen parameter LINKLS = \LINKLS = file/device to which to send=/* the linker listing=/*I=/* Sysgen parameter M605DRV = \M605DRV = address at which to link driver=/* =LINK ,&.M605DRV.LO,\LINKLS;MIXHSEG DAC1:8 \M605DRVINPUT &.M605DRV.ROINPUT &.SYSPAR.ROEND=/*=ENDéééééé¹=/*=/*†&.M610DRV.LG=/*==/* Link chain file run at sysgen time to link MVME610 driver=/*D=/* Sysgen parameter LINKLS = \LINKLS = file/device to which to send=/* the linker listing=/*I=/* Sysgen parameter M610DRV = \M610DRV = address at which to link driver=/* =LINK ,&.M610DRV.LO,\LINKLS;MIXHSEG SEG0:0 \M610DRVINPUT &.M610DRV.ROINPUT &.SYSPAR.ROEND=/*=ENDéééé6 ééÂ=/*=/*†&.M615DRV.LG=/*==/* Link chain file run at sysgen time to link MVME615 driver=/*D=/* Sysgen parameter LINKLS = \LINKLS = file/device to which to send=/* the linker listing=/*I=/* Sysgen parameter M615DRV = \M615DRV = address at which to link driver=/* =LINK ,&.M615DRV.LO,\LINKLS;MIXHSEG M615:8 \M615DRVINPUT &.M615DRV.ROINPUT &.SYSPAR.ROEND=/*=ENDééééééË=/*=/*†&.M625DRV.LG=/*==/* Link chain file run at sysgen time to link MVME625 driver=/*D=/* Sysgen parameter LINKLS = \LINKLS = file/device to which to send=/* the linker listing=/*I=/* Sysgen parameter M625DRV = \M625DRV = address at which to link driver=/* =LINK ,&.M625DRV.LO,\LINKLS;MIXHSEG M625:8 \M625DRVINPUT &.M625DRV.ROINPUT &.SYSPAR.ROEND=/*=ENDéé7 ééééÔ=/*=/*†&.IOCINT.LG=/*5=/* Link chain file run at sysgen time to link IOCINT=/*D=/* Sysgen parameter LINKLS = \LINKLS = file/device to which to send=/* the linker listing=/*I=/* Sysgen parameter IOCISTR = \IOCISTR = address at which to link driver=/*=LINK ,&.IOCI.LO,\LINKLS;IXHMSSEGMENT IOCI:1 \IOCISTRINPUT &.IOCINT.ROEND=/*=ENDééééééÝ=/*=/*†&.IOCFAIL.LG=/*6=/* Link chain file run at sysgen time to link IOCFAIL=/*D=/* Sysgen parameter LINKLS = \LINKLS = file/device to which to send=/* the linker listing=/*I=/* Sysgen parameter IOCFSTR = \IOCFSTR = address at which to link driver=/*!=LINK ,&.IOCFAIL.LO,\LINKLS;IXHMSSEGMENT IOCF:0 \IOCFSTRINPUT &.IOCFAIL.ROEND=/*=END7 ééééééæ=/*=/*†&.RADDRV.LG=/*5=/* Link chain file run at sysgen time to link RADDRV=/*D=/* Sysgen parameter LINKLS = \LINKLS = file/device to which to send=/* the linker listing=/*G=/* Sysgen parameter RADDRV = \RADDRV = address at which to link driver=/*=LINK ,&.RADDRV.LO,\LINKLS;MIXHSEG RAD1:8 \RADDRVINPUT &.RADDRV.ROINPUT &.SYSPAR.ROEND=/*=ENDééééééï8 =/*=/*†&.RIODRV.LG=/*9=/* Link chain file run at sysgen time to link RIO driver=/*D=/* Sysgen parameter LINKLS = \LINKLS = file/device to which to send=/* the linker listing=/*G=/* Sysgen parameter RIODRV = \RIODRV = address at which to link driver=/*=LINK ,&.RIODRV.LO,\LINKLS;MIXHSEG RIO1:8 \RIODRVINPUT &.RIODRV.ROINPUT &.SYSPAR.ROEND=/*=ENDééééééøN==============================================================================F====‚NEWSFILEFORA/D…(MVME600-A/DINPUTBOARD)ƒDRIVERRELEASE‚===="====‚Lastmodified-01/31/85¬====N============================================================================== 8This driver is compatible with both RMS68K and VERSAdos.   .This driver consists of the following files -- ‰MVME600driverfiles:-9992.&.M600DRV.SA‚MVME600driversourcefile99992.&.M600CMDS.SAMVME600sourcecommand/interruptcode09992.&.M600CMTS.SAMVME600sourcecommentsfile69992.&.M600INTL.SAMVME600sourceinitializationcode@9992.&.M600SERV.SAMVME600sourcedrivervectortable/revtable-9992.&.M600DRV.RO‚MVME600driverobjectfile59992.&.M600DRV.AF‚MVME600driverassemblychainfile  ‰Filesforsystemconfiguration:"9992.&.M600DRV.CIˆSYSGENcommands"9992.&.M600IOC.SIˆCCBallocations39992.&.M600DRV.LGˆChainfiletolinkinthedriver#9998.VERSAPT.M600DRV.CF‚Patchfile   ‰FORTRANinterfacesubroutines:09992.&.M600LIB.SA…Assemblylanguagesourcefile&9992.&.M600LIB.AF…Assemblychainfile9992.&.M600LIB.RO…Objectfile  ‰"News"file:9992.&.M600DRV.NW…Newsfile79992.&.M600FORT.NW„DocumentationforFORTRANinterface   %‰Filestogeneratethetestprograms: >‰9992.M600DRV.TEST600.SA‡AssemblylanguagetestprogramsourceA‰9992.M600DRV.TEST600.AF‡chainfileforassemblylanguageprogramA‰9992.M600DRV.TEST600.LF‡chainfileforlinkofasmlang.program7‰9992.M600DRV.TEST600.LO‡assemblylanguagetestprogram  KTheMVME600driversourcefileis:9992.&.M600DRV.SA.‚Toassemblethisfile%use the chain file 9992.&.M600DRV.AF.  >In order to incorporate this driver into your system, 8 you will=have to set some parameters in the .CNFGDRVR.CI file.  #This driver requires the following:;‰1)‚Memorymustbeallocatedfortheinternaldrivertable.9‰2)‚Achannelcontrolblock(CCB)mustbecreatedforthe< /6“commandsissuedforeachMVME600boardinthesystem. HThe size of the memory area set aside for the driver table is determinedJbythevalueofthevariablespecifiedbyyouin.CNFGDRVR.CI.‚Thevariable is "NVME600". =NVME600ƒThisisthenumberofMVME600boardswhichwillbeon6Šthesystem.‚Sincetherecanbenomorethan16boards6ŠontheI/OChannel(whichiswheretheseboardsare),&Šthemaximumvalueof"NVME600"is16.   ?To include the MVME600 driver in your SYSgen, do the following: <‰(1)UseCOPYSGENtogetallthefilesneededfortheSYSgenintoyourSYSgenusernumber.2NOTE:‚Makesureargument5=PCDRVsotheProcess+”ControlDriverswillbecopiedbyCOPYSGEN 9‰(2)SetthevariableNVME600inthe.CNFGDRVR.CI,filefortheprocessorboardyouareusing. 8‰(3)CheckthefileM600IOC.SItobesurethattheCCB'sconformtoyourconfiguration. BWhen setting up the "CDB" calls please note that each ID must haveCauniquename.‚ThisisalsothenameanyapplicationtaskwoulduseBtoaddressthedriverforaboard.‚Thememory-mappedI/Oaddresses"are also different for each board. JM600LIB.SAisassembledusingtheM600LIB.AFchainfile.‚M600LIB.ROistheEFORTRAN-callable subroutine which, when called by the user program orJFORTRAN test program, will invoke the appropriate MVME600 driver function. >After configuring your system and creating a VERSAdos with the>MVME605 driver included, you may want to run the provided testprogram. GM600DRV.TEST600.SA is an assembly language test program which tests theDMVME600driver.‚ThisprogrampromptstheusertorunasubsetofallDcommandsavailableinthedriver.‚ItcanbeusedasafirstcheckofAthe hardware and as an example of writing commands to the driver. ‰ENDN==============================================================================N==============================================================================   ½31-Jan-85  + 1 MVME600 A/D Interface User Documentation:ƒEachofthefollowingmodulearelocatedin&.M600LIB.SA.  „A.‚MODULENAME: ŠA2DOPN „B.‚MODULETYPE: ŠUtilitysubroutine „C.‚MODULEPURPOSE: /ŠThissubroutineprovidesaninterfacewiththe1ŠA/D600/601driver,allowingausertaskwritten+ŠinFORTRANtoopenoneormoremeasurement Šchannels. „D.‚CALLINGSEQUENCE: )‰CALLA2DOPN(CHNLMN,CMDBLK,CMDBKL,STATUS) „E.‚ENTRYCONDITIONS: ‰CHNLMN=ChannelMnemonic’(4ASCIIcharacters)#‰CMDBLK=I/OCommandBlockaddress ’(Integer*4)"‰CMDBKL=I/OCommandBlocklength,‰STATUS=StatusreturnedbytheA/Ddriver.  ‰ChannelBlockFormat "‹+---------------+---------------+‹|‚Statuscode’|"‹+---------------+---------------+‹|‚OPENcommandcode($0001)„|"‹+---------------+---------------+‹|‚Firstchannelnumber‰|"‹+---------------+---------------+‹:::‹:::"‹+---------------+---------------+ 34d##@'a++/93=7=;E?7CCG@Kd‹|‚LastchannelnumberŠ|"‹+---------------+---------------+  „F.‚EXITCONDITIONS: ,‰STATUS=StatusreturnedbytheA/Ddriver.       -1-   ½31-Jan-85  „G.‚TABLESUSED: ‰ParameterBlock "‹+--9 -------------+---------------+ ‹|‚Commandcode(InitiateI/O)‚|"‹+---------------+---------------+ ‹|Šnotused|"‹+---------------+---------------+‹|‚ChannelMnemonic(ASCII)…|"‹+---------------+---------------+‹|‚ChannelMnemonic(ASCII)…|"‹+---------------+---------------+ ‹|Šnotused|"‹+---------------+---------------+ ‹|Šnotused|"‹+---------------+---------------+ ‹|Šnotused|"‹+---------------+---------------+ ‹|Šnotused|"‹+---------------+---------------+‹|‚AddressI/Ocommandblock„|"‹+---------------+---------------+‹|‚AddressI/Ocommandblock„|"‹+---------------+---------------+‹|‚LengthI/Ocommandblock…|"‹+---------------+---------------+ „H.‚MODULESUSED: „I.‚MODULESCALLINGTHISMODULE: -ŠAnymodulerequiringinterfacetoA/Ddriver #„J.‚ERRORMESSAGESGENERATED:„None.                        -2-   ½31-Jan-85  „A.‚MODULENAME:„A2DMRS #„B.‚MODULETYPE:„UTILITYSUBROUTINE „C.‚MODULEPURPOSE: /ŠThissubroutineprovidesaninterfacewiththe1ŠA/D600/601driver,allowingausertaskwritten2ŠinFORTRANtorequestsingle-endedmeasurement(s)&Šforspecifiedmeasurementchannel(s). „D.‚CALLINGSEQUENCE: )ˆCALLA2DMRS(CHNLMN,CMDBLK,CMDBKL,STATUS) „E.‚ENTRYCONDITIONS: ‰CHNLMN=ChannelMnemonic’(4ASCIIcharacters)#‰CMDBLK=I/OCommandBlockaddress ’(Integer*4)"‰CMDBKL=I/OCommandBlocklength                                     -3-   ½31-Jan-85  +‰I/OCommandBlock(MEASURESINGLEcommand) "‹+---------------+---------------+‹|‚Statuscode’|"‹+---------------+---------------+!‹|‚MEASUREcommandcode($0003)|"‹+---------------+---------------+ ‹|‚Repeatcount(0=Infinity)‚|"‹+---------------+---------------+‹|‚Timedelaybetweensweeps„|‹+--…4bytefieldŠ--+‹|ƒ(omitifrepeatcount=1)‚|"‹+---------------+---------------+‹|‚CommandCompletionOption„|"‹+---------------+---------------+›:•ChannelBlocks›:"‹+---------------+---------------+‹|‚Channelnumber|"‹+---------------+---------------+‹|‚ChannelCompletionOptionsƒ|"‹+---------------+---------------+!‹|‚SubroutineAddress(Optional)|"‹+---------------+---------------+!‹|‚SubroutineAddress(Optional)|"‹+---------------+---------------+‹|‚Bufferaddress|"‹+---------------+---------------+‹|‚Bufferaddress|"‹+---------------+---------------+‹|‚Sizeofbufferinbytes†|"‹+---------------+---------------+!‹|‚TriggerModeandGainOption|"‹+---------------+---------------+                        -4-   ½31-Jan-85  „F.‚EXITCONDITIONS: ,‰STATUS=StatusreturnedbytheA/Ddriver. „G.‚TABLESUSED: ‰ParameterBlock "‹+---------------+---------------+ ‹|‚Commandcode(InitiateI/O)‚|"‹+---------------+---------------+ ‹|Šnotused|"‹+---------------+---------------+‹|‚ChannelMnemonic(ASCII)…|"‹+---------------+---------------+‹|‚ChannelMnemonic(ASCII)…|"‹+---------------+---------------+ ‹|Šnotused|"‹+---------------+---------------+ ‹|Šnotused|"‹+---------------+---------------+ ‹|Šnotused|"‹+---------------+---------------+ ‹|Šnotused|"‹+---------------+---------------+‹|‚AddressI/Ocommandblock„|"‹+---------------+---------------+‹|‚AddressI/Ocommandblock„|"‹+---------------+---------------+‹|‚LengthI/Ocommandblock…|"‹+---------------+---------------+ „H.‚MODULESUSED: „I.‚MODULESCALLINGTHISMODULE: -ŠAnymodulerequiringinterfacetoA/Ddriver #„J.‚ERRORMESSAGESGENERATED:„None.                    -5-   ½31-Jan-85  „A.‚MODULENAME:„A2DMRD #„B.‚MODULETYPE:„U9 TILITYSUBROUTINE „C.‚MODULEPURPOSE: /ŠThissubroutineprovidesaninterfacewiththe1ŠA/D600/601driver,allowingausertaskwritten2ŠinFORTRANtorequestdifferentialmeasurement(s)&Šforspecifiedmeasurementchannel(s). „D.‚CALLINGSEQUENCE: )ˆCALLA2DMRD(CHNLMN,CMDBLK,CMDBKL,STATUS) „E.‚ENTRYCONDITIONS: ‰CHNLMN=ChannelMnemonic’(4ASCIIcharacters)#‰CMDBLK=I/OCommandBlockaddress ’(Integer*4)"‰CMDBKL=I/OCommandBlocklength                                     -6-   ½31-Jan-85  1‰I/OCommandBlock(MEASUREDIFFERENTIALcommand) "‹+---------------+---------------+‹|‚Statuscode’|"‹+---------------+---------------+!‹|‚MEASUREcommandcode($0004)|"‹+---------------+---------------+ ‹|‚Repeatcount(0=Infinity)‚|"‹+---------------+---------------+‹|‚Timedelaybetweensweeps„|‹+--…4bytefieldŠ--+‹|‚(omitifrepeatcount=1)ƒ|"‹+---------------+---------------+‹|‚CommandCompletionOption„|"‹+---------------+---------------+›:•ChannelBlocks›:"‹+---------------+---------------+‹|‚Channelnumber|"‹+---------------+---------------+‹|‚ChannelCompletionOptionsƒ|"‹+---------------+---------------+!‹|‚SubroutineAddress(Optional)|"‹+---------------+---------------+!‹|‚SubroutineAddress(Optional)|"‹+---------------+---------------+‹|‚Bufferaddress|"‹+---------------+---------------+‹|‚Bufferaddress|"‹+---------------+---------------+‹|‚Sizeofbufferinbytes†|"‹+---------------+---------------+!‹|‚TriggerModeandGainOption|"‹+---------------+---------------+                        -7-   ½31-Jan-85  „F.‚EXITCONDITIONS: ,‰STATUS=StatusreturnedbytheA/Ddriver.  „G.‚TABLESUSED: ‰ParameterBlock "‹+---------------+---------------+ ‹|‚Commandcode(InitiateI/O)‚|"‹+---------------+---------------+ ‹|Šnotused|"‹+---------------+---------------+‹|‚ChannelMnemonic(ASCII)…|"‹+---------------+---------------+‹|‚ChannelMnemonic(ASCII)…|"‹+---------------+---------------+ ‹|Šnotused|"‹+---------------+---------------+ ‹|Šnotused|"‹+---------------+---------------+ ‹|Šnotused|"‹+---------------+---------------+ ‹|Šnotused|"‹+---------------+---------------+‹|‚AddressI/Ocommandblock„|"‹+---------------+---------------+‹|‚AddressI/Ocommandblock„|"‹+---------------+---------------+‹|‚LengthI/Ocommandblock…|"‹+---------------+---------------+  „H.‚MODULESUSED: „I.‚MODULESCALLINGTHISMODULE: -ŠAnymodulerequiringinterfacetoA/Ddriver #„J.‚ERRORMESSAGESGENERATED:„None.                  -8-   ½31-Jan-85  „A.‚MODULENAME:„A2DSTP #„B.‚MODULETYPE:„UTILITYSUBROUTINE „C.‚MODULEPURPOSE: /ŠThissubroutineprovidesaninterfacewiththe1ŠA/D600/601driver,allowingausertaskwritten+ŠinFORTRANtostopthemeasurementforanyŠspecifiedMEASUREcommand. „D.‚CALLINGSEQUENCE: )‰CALLA2DSTP(CHNLMN,CMDBLK,CMDBKL,STATUS) „E.‚ENTRYCONDITIONS: ‰CHNLMN=ChannelMnemonic’(4ASCIIcharacters)#‰CMDBLK=I/OCommandBlockaddress ’(Integer*4)"‰CMDBKL=I/OCommandBlocklength ‰ChannelBlockFormat "‹+---------------+---------------+‹|‚Statuscode’|"‹+---------------+---------------+‹|‚STOPcommandcode($0000)„|"‹+---------------+---------------+‹|‚Firstchannelnumber‰|"‹+---------------+---------------+‹:::‹:::"‹+---------------+---------------+‹|‚LastchannelnumberŠ|"‹+---------------+---------------+                      -9-   ½31-Jan-85  „F.‚EXITCONDITIONS: ,‰STATU: S=StatusreturnedbytheA/Ddriver. „G.‚TABLESUSED:ƒNone ‰ParameterBlock "‹+---------------+---------------+ ‹|‚Commandcode(InitiateI/O)‚|"‹+---------------+---------------+ ‹|Šnotused|"‹+---------------+---------------+‹|‚ChannelMnemonic(ASCII)…|"‹+---------------+---------------+‹|‚ChannelMnemonic(ASCII)…|"‹+---------------+---------------+ ‹|Šnotused|"‹+---------------+---------------+ ‹|Šnotused|"‹+---------------+---------------+ ‹|Šnotused|"‹+---------------+---------------+ ‹|Šnotused|"‹+---------------+---------------+‹|‚AddressI/Ocommandblock„|"‹+---------------+---------------+‹|‚AddressI/Ocommandblock„|"‹+---------------+---------------+‹|‚LengthI/Ocommandblock…|"‹+---------------+---------------+  „H.‚MODULESUSED: „I.‚MODULESCALLINGTHISMODULE: -ŠAnymodulerequiringinterfacetoA/Ddriver „J.‚ERRORMESSAGESGENERATED: ŠNone                 -10-   ½31-Jan-85  „A.‚MODULENAME: ŠA2DCLS „B.‚MODULETYPE: ŠUtilitysubroutine „C.‚MODULEPURPOSE: /ŠThissubroutineprovidesaninterfacewiththe1ŠA/D600/601driver,allowingausertaskwritten,ŠinFORTRANtocloseoneormoremeasurement Šchannels. „D.‚CALLINGSEQUENCE: )‰CALLA2DCLS(CHNLMN,CMDBLK,CMDBKL,STATUS) „E.‚ENTRYCONDITIONS: ‰CHNLMN=ChannelMnemonic’(4ASCIIcharacters)#‰CMDBLK=I/OCommandBlockaddress ’(Integer*4)"‰CMDBKL=I/OCommandBlocklength ‰ChannelBlockFormat "‹+---------------+---------------+‹|‚Statuscode’|"‹+---------------+---------------+‹|‚CLOSEcommandcode($0002)ƒ|"‹+---------------+---------------+‹|‚Firstchannelnumber‰|"‹+---------------+---------------+‹:::‹:::"‹+---------------+---------------+‹|‚LastchannelnumberŠ|"‹+---------------+---------------+  „F.‚EXITCONDITIONS: ,‰STATUS=StatusreturnedbytheA/Ddriver.             -11-   ½31-Jan-85  „G.‚TABLESUSED: ‰ParameterBlock "‹+---------------+---------------+ ‹|‚Commandcode(InitiateI/O)‚|"‹+---------------+---------------+ ‹|Šnotused|"‹+---------------+---------------+‹|‚ChannelMnemonic(ASCII)…|"‹+---------------+---------------+‹|‚ChannelMnemonic(ASCII)…|"‹+---------------+---------------+ ‹|Šnotused|"‹+---------------+---------------+ ‹|Šnotused|"‹+---------------+---------------+ ‹|Šnotused|"‹+---------------+---------------+ ‹|Šnotused|"‹+---------------+---------------+‹|‚AddressI/Ocommandblock„|"‹+---------------+---------------+‹|‚AddressI/Ocommandblock„|"‹+---------------+---------------+‹|‚LengthI/Ocommandblock…|"‹+---------------+---------------+  „H.‚MODULESUSED: „I.‚MODULESCALLINGTHISMODULE: -ŠAnymodulerequiringinterfacetoA/Ddriver #„J.‚ERRORMESSAGESGENERATED:„None.                       -12-   ½31-Jan-85  „A.‚MODULENAME:„BLDCB #„B.‚MODULETYPE:„UTILITYSUBROUTINE „C.‚MODULEPURPOSE: -ŠThissubroutinebuildsachannelblockentry3Šfromthespecifiedparametersintheuserprovided0Šdataarea.‚Thissubroutineisusedtobuildthe+Šchannelblocksforbothofthemeasurement Šroutines. „D.‚CALLINGSEQUENCE: 4ˆCALLBLDCB(CMDBLK,CHNLNO,OPTION,BFA,BFL,SBA,TGRMOD,“RTNADR,CMDBKL) „E.‚ENTRYCONDITIONS: #‰CMDBLK‚=I/OCommandBlockaddress “(Integer*4)‰CHNLNO‚=Channelnumber$‰OPTION‚=Channelcompletionoptions‰BFA…=BufferAddress “(Integer*4)‰BFL…=BufferLength-‰SBA…=SubroutineAddress‚(0ifnotrequired) “(Integer*4)'‰TGRMOD‚=TriggerModeandGainOptions-‰RTNADR‚=Addressofnextavailchannelblock“(Returnedbythissubroutine) “(Integer*4)'‰CMDBKL‚=LengthofChannelBlockbuilt“(Returnedby: thissubroutine)                         -13-   ½31-Jan-85  ‰ChannelBlockFormat "‹+---------------+---------------+‹|‚Channelnumber|"‹+---------------+---------------+‹|‚ChannelCompletionOptionsƒ|"‹+---------------+---------------+!‹|‚SubroutineAddress(Optional)|"‹+---------------+---------------+!‹|‚SubroutineAddress(Optional)|"‹+---------------+---------------+‹|ˆBufferaddress‰|"‹+---------------+---------------+‹|ˆBufferaddress‰|"‹+---------------+---------------+‹|‚Sizeofbufferinbytes†|"‹+---------------+---------------+!‹|‚TriggerModeandGainOption|"‹+---------------+---------------+                                        -14-   ½31-Jan-85  „F.‚EXITCONDITIONS: „G.‚TABLESUSED: „H.‚MODULESUSED: „I.‚MODULESCALLINGTHISMODULE: -ŠAnymodulerequiringinterfacetoA/Ddriver „J.‚ERRORMESSAGESGENERATED: ŠNone END                                            -15- éN==============================================================================@====‚NEWSFILEFORDAC…(MVME605-D/ABOARD)‰DRIVERRELEASE‚===="====‚Lastmodified-01/31/85¬====N============================================================================== 8This driver is compatible with both RMS68K and VERSAdos.   .This driver consists of the following files -- ‰MVME605driverfiles: -9992.&.M605DRV.SA‚MVME605driversourcefile-9992.&.M605DRV.RO‚MVME605driverobjectfile59992.&.M605DRV.AF‚MVME605driverassemblychainfile  ‰Filesforallocatingmemory:09992.&.M605MEM.CI‰FileincludedatSYSGENtime.09992.&.M605MEM.AG‰FileassembledatSYSGENtime  !‰Filesforsystemconfiguration: "9992.&.M605DRV.CIˆSYSGENcommands"9992.&.M605IOC.SIˆCCBallocations39992.&.M605DRV.LGˆChainfiletolinkinthedriver#9998.VERSAPT.M605DRV.CF‚Patchfile  ‰FORTRANinterfacesubroutines:09992.&.M605LIB.SAˆAssemblylanguagesourcefile&9992.&.M605LIB.AFˆAssemblychainfile9992.&.M605LIB.ROˆObjectfile  9‰Thefollowingfilesareusedtogenerateatestprogram: >‰9992.M605DRV.TEST605.SA‡AssemblylanguagetestprogramsourceA‰9992.M605DRV.TEST605.AF‡chainfileforassemblylanguageprogramA‰9992.M605DRV.TEST605.LF‡chainfileforlinkofasmlang.program7‰9992.M605DRV.TEST605.LO‡assemblylanguagetestprogram  ‰"News"file:9992.&.M605DRV.NWˆNewsfile KTheMVME605driversourcefileis:9992.&.M605DRV.SA.‚Toassemblethisfile%use the chain file 9992.&.M605DRV.AF.;The following files are used in the assembly of M605DRV.SA:9995.&.STR.EQ9995.&.TCB.EQ9995.&.CCB.EQ9995.&.LV5.EQ9995.&.TR1RTCD.EQ9995.&.M605DRV.EQ  >In order to incorporate this driver into your system, you will=have to set some parameters in the .CNFGDRVR.CI file.  #This driver requires the following:;‰1)‚Memorymustbeallocatedfortheinternaldrivertable.OAX4`; 9‰2)‚Achannelcontrolblock(CCB)mustbecreatedforthe6“commandsissuedforeachMVME605boardinthesystem. HThe size of the memory area set aside for the driver table is determinedGbythevaluesoftwovariablesasspecifiedbyyouintheSYSGEN.‚These$variables are "NVME605" and "NU605". =NVME605ƒThisisthenumberofMVME605boardswhichwillbeon6Šthesystem.‚Sincetherecanbenomorethan16boards6ŠontheI/OChannel(whichiswheretheseboardsare),&Šthemaximumvalueof"NVME605"is16. 3NU605…Thisvariableissettothemaximumnumberof7Šuser/MVME605combinationsyouwishtoallowatanyone2Štime.‚Sinceitispossibletohaveoneuserusing;ŠmorethanoneMVME605board,aswellasmorethanoneuser4ŠusingthesameMVME605board,weneedthenumberofŠuser/MVME605combinations.   ?Example:‚IfuserAusesboard#1andboard#2,userBusesjust1Šboard#1,anduserCusesboard#2andboard#3,,Štherewouldbe5user/boardcombinations--ŠA/1,A/2,B/1,C/2,C/3.FIf the configuration of MVME605 boards is the same as in this example,$you would set NVME605=3 and NU605=5. INote that if you set either of these variables to a larger number than isHactuallyneeded,thesystemwillstilloperatenormally.‚ThiswouldjustBresult in having more memory allocated for internal tables than is necessary.  ?To include the MVME605 driver in your SYSGEN, do the following:  9‰(1)DoaCOPYSGENtogetthefilesneededfortheSYSgenintoyoursysgenusernumber.7NOTE:‚Makesurethatargument5=PCDRVsotheProcess,”ControlDriverswillbecopiedbyCOPYSGEN. D‰(2)SetthevariablesNVME605andNU605inthe.CNFGDRVR.CI,filefortheprocessorboardyouareusing. 8‰(3)CheckthefileM605IOC.SItobesurethattheCCB'sconformtoyourconfiguration.   FWhen setting up the "CDB" calls please note that each DAC-ID must haveCauniquename.‚ThisisalsothenameanyapplicationtaskwoulduseBtoaddressthedriverforaboard.‚Thememory-mappedI/Oaddresses"are also different for each board.   >After configuring your system and creating a VERSAdos with the>MVME605 driver included, you may want to run the provided testprogram. GM605DRV.TEST605.SA is an assembly language test program which tests theDMVME605driver.‚ThisprogrampromptstheusertorunasubsetofallDcommandsavailableinthedriver.‚ItcanbeusedasafirstcheckofAthe hardware and as an example of writing commands to the driver.  JM605LIB.SA is assembled using the M605LIB.AF chain file. M605LIB.RO is theEFORTRAN-callable subroutine which, when called by the user program orJFORTRAN test program, will invoke the appropriate MVME605 driver function. ‰ENDN==============================================================================N==============================================================================éééé; N==============================================================================H====‚NEWSFILEFORAC/DCƒ(MVME610/620-AC/DCBOARD)ƒDRIVERRELEASE‚===="====‚Lastmodified-01/31/85¬====N============================================================================== 8This driver is compatible with both RMS68K and VERSAdos. 4This driver package consists of the following files: ‰VME610/620Driverfiles:19992.&.M610DRV.SAˆMVME610/620DriverSourcefile19992.&.M610DRV.ROˆMVME610/620DriverObjectfile99992.&.M610DRV.AFˆMVME610/620DriverAssemblyChainfile <‰FilestoallocatememoryfortheInterruptProcessingqueue09992.&.M610MEM.AGŠFileassembledatSYSgentime49992.&.M610MEM.CIŠFileINCLUDEdintoSYSgencommand¨fileatSYSgentime. ‰Filesforsystemconfiguration:%9992.&.M610DRV.CIŠCommandstoSYSgen"9992.&.M610IOC.SIŠCCBallocations 9992.&.M610DRV.LGŠLINKcommands#9998.VERSAPT.M610DRV.CF„Patchfile  /‰Thedrivernewsfilethatyouarenowreading:9992.&.M610DRV.NW‰Newsfile F‰MVME610/620DriverCommandandErrorCodeEquatefiles.TheseequatesB‹areusedbytheapplicationcodewhenmakingcallstothedriver.9995.&.M610CMD.EQ ?‰Thefollowingfilesareusedtogenerateadrivertestprogram9992.M610DRV.INPTST.LO: 79992.M610DRV.INPTST.SA…Pascalmainprogramsourcefile?9992.M610DRV.INTSTASM.SAƒSourceforassemblyprocedurescalled¨fromPascalmainprogram59992.M610DRV.INPTST.PF…Pascalcompilationchainfile-9992.M610DRV.INTSTASM.AFƒAssemblychainfile.9992.M610DRV.INPTST.LF…Testprogramlinkfile?9992.M610DRV.PDOLRLIB.ROƒSupplementaryPascalRun-timeLibrary @‰Thefollowingfilesareusedtogenerateasecondtestprogram: >‰9992.M610DRV.TEST610.SA‡AssemblylanguagetestprogramsourceA‰9992.M610DRV.TEST610.AF‡chainfileforassemblylanguageprogramA‰9992.M610DRV.TEST610.LF‡chainfileforlinkofasmlang.program7‰9992.M610DRV.TEST610.LO‡assemblylanguagetestprogram h3q0y#'‰ G‚ThefollowingfilesareusedtoassembleandlinktheFortrancallable"driver command subroutine library: 0‰9992.&.M610LIB.SAAssemblylanguagesourcefile‰9992.&.M610LIB.ROObjectfile&‰9992.&.M610LIB.AFAssemblychainfile M‚ToassembletheMVME610/620Driverexecutethechainfile9992.&.M610DRV.AF.9The following files are required to assemble this driver: ‰9995.&.STR.EQ‰9995.&.TR1RTCD.EQ‰9995.&.TCB.EQ‰9995.&.LV5.EQ‰9995.&.BAB.EQ‰9995.&.CCB.EQ‰9995.&.M610CCB.EQ‰9995.&.M610INTQ.EQ‰9995.&.M610CMD.EQ +SYSgen Procedure for the MVME610/620 Driver+------------------------------------------- <1.‚UseCOPYSGENtogetallthefilesrequiredfortheSYSgen7„totheusernumberwheretheSYSgenwillbeperformed.G„NOTE:‚Makesurethatargument5=PCDRVsotheProcessControlDrivers‹willbecopiedbyCOPYSGEN. K2.‚Editthe.CNFGDRVR.CIfileforgeneratingtheRMS68KorVERSAdosC„foryourtargetsystem.‚ModifytheSYSgenparameters"NVME610"andE„"NVME620".‚TheseparametersdefinethemaximumnumberofMVME610andD„NVME620boardsthatwilloccupythetargetsystem.OneothersysgenH„parameterthatmustbemodifiedisM610QSIZ.‚ThisparameterdefinestheI„minimumsizeoftheinterruptprocessingqueueintermsofthenumberofK„entriesthatthequeuemaycontain.‚ThedrivercanaccomodateamaximumofE„2048queueentries.‚FormoreinformationontheInterruptProcessing3„QueueconsulttheMVME610/620DriverUsersManual.  I3.‚EditthefileM610IOC.SIsothatonecalltotheCDBmacroismadeforJ„eachMVME610orMVME620boardthatwasspecifiedin.CNFGDRVR.CI.J„EachCDBmustspecifyauniquechannelmnemonic(i.e.'IN01').‚Thememory=„mappedI/Oaddressoffsetcanbemo< difiedinIOC.ADDRESS.CI.5„TheI/OchannelinterruptvectornumberandhardwareJ„interruptlevelspecifiedforeachCDBcanalsobemodifiedifnecessary.;„ConsulttheSYSgenUsersGuideforadditionalinformation.  F4. You may now run the SYSgen utility to generate a RMS68K or VERSAdos$ƒbootmoduleforyourtargetsystem. I‚AlsoprovidedwiththisdriverisalibraryofFortrancallableassemblyFlanguage subroutines that allow a Fortran application program to issueIcommands directly to the MVME610/620 driver. This library is contained infile M610LIB.RO. I‚IfthedriverstargetenvironmentincludesVERSAdos,youmaywishtorunMthe driver test program INPTST.LO to verify that you have an operable SYSgen. L‚ThistestprogramallowsyoutocreatemultipletasksandtoissuecommandsGfrom these tasks to the MVME610/620 driver by responding to prompts for1input commands via a single interactive terminal. J‚Whentheprogrambeginsexecuting,theuserispromptedforthenumberofKtasks that are to be created. The tasks that are spawned are exact replicasJof one another. After each task initializes itself, it waits for a command)from the user to be issued to the driver. F‚ThenameofthefirsttesttaskisdisplayedandtheuserisaskedtoNselect a command to be issued to the driver (i.e Open, Close, Enable, Disable,KStatus, or Wait). If the Open command is selected, the user is prompted forKthe channel mnemonic of the desired MVME610/620 board and the number of theFchannel to be opened by the command. The user is then prompted for theFchannel number and configuration for each channel to be opened. If theKClose, Enable, Disable, or Status command is selected, the user is promptedIfor the MVME610/620 board channel mnemonic and the mask of channels to beHaffected by the command. After each command has been issued, the commandJstatus returned by the driver is displayed. If a Status command is issued,.the returned channel status is also displayed. G‚Afterthecommandstatusisreturned,theuserispromptedforanotherLcommand for the same task. The program will continue to request commands forLthe same test task until a CR only is entered in response to the prompt. TheGuser will then be prompted for commands to the next test task. When theKprogram has prompted for commands for each of the test tasks, it begins theJcycle again by prompting for commands for the first task. This loop may beKterminated by pressing the break key on the terminal after all open channelassignments have been closed. L‚Onceaninterruptchannelhasbeenopenedandinterruptshavebeenenabled,Ithe user may connect an input source to the channel to test the interruptFmechanism. Whenever an interrupt generating condition is detected on aKchannel (as specified in the channel configuration), the driver informs theLtest task that opened the channel of the interrupt via an event to the tasksLASQ or by issuing a WAKEUP to the task. When an interrupt event is received,Mthe task provides an external acknowledgement of the interrupt by pulsing oneFoutputs of a MVME625 Digital Output board that is assumed to reside atKaddress $FE6001 of the I/O channel. This pulse may be detected via standardJoscilloscope or by other available means. The program will accomodate uptoKtwo MVME610/620 boards with assumed channel mnemonics of 'IN01' and 'IN02'.NThe acknowledge pulse is sent to a unique MVME625 output for each interruptingchannel as follows: "„MVME610/620ƒInputChannel„MVME625…mnemonic‰NumberˆOutput"„-----------ƒ-------------„------- †IN0100 †IN0111 †IN0122 †IN0133 †IN0204 †IN0215 †IN0226 †IN0237 G‚WhenataskistobenotifiedofaninterruptviaaWakeup,aslightlyMdifferent procedure is used. After the channel has been opened and interruptsKhave been enabled, the user enters a Wait command to the task that assignedIthe channel. This command causes the task to be placed in a Wait sta< te soKthat it can respond to the Wakeup to be issued to the driver. When a WakeupBis received, the test task pulses output 7 of the MVME625 board toGacknowledge the interrupt. Since only output 7 is used to acknowledge aNWakeup, receiving of Wakeup's by multiple tasks will result in all acknowledgeNpulses being superimposed on output 7. Also once a task has been placed in theNWait state, issuing a new command to the same task will cause the test program1to be suspended until the task recieves a Wakeup.   GM610DRV.TEST610.SA is an assembly language test program which tests theDMVME610driver.‚ThisprogrampromptstheusertorunasubsetofallDcommandsavailableinthedriver.‚ItcanbeusedasafirstcheckofAthe hardware and as an example of writing commands to the driver. éééééN==============================================================================F====‚NEWSFILEFORACO…(MVME615-ACOUTPUTBOARD)ƒDRIVERRELEASE‚===="====‚Lastmodified-01/31/85¬====N============================================================================== 8This driver is compatible with both RMS68K and VERSAdos.   .This driver consists of the following files -- ‰MVME615driverfiles:-9992.&.M615DRV.SA†MVME615driversourcefile-9992.&.M615DRV.RO†MVME615driverobjectfile59992.&.M615DRV.AF†MVME615driverassemblychainfile  ‰Filesforallocatingmemory:09992.&.M615MEM.CIŠFileincludedatSYSgentime.09992.&.M615MEM.AGŠFileassembledatSYSgentime   ‰Files‚forsystemconfiguration:"9992.&.M615IOC.SIˆCCBallocations"9992.&.M615DRV.CIˆSYSGENcommands39992.&.M615DRV.LGˆChainfiletolinkinthedriver#9998.VERSAPT.M615DRV.CF‚Patchfile   ‰FORTRANinterfacesubroutines:09992.&.M615LIB.SA…Assemblylanguagesourcefile&9992.&.M615LIB.AF…Assemblychainfile9992.&.M615LIB.RO…Objectfile  ‰"News"file:9992.&.M615DRV.NW…Newsfile   "‰Filestogenerateatestprogram: ;‰9992.M615DRV.TESTAC.SAˆASSEMBLYlanguagetestprog.source=‰9992.M615DRV.TESTAC.AFˆchainfileforASSEMBLYlanguageasm.>‰9992.M615DRV.TESTAC.LFˆchainfileforLINKofasm.lang.prog6‰9992.M615DRV.TESTAC.LOˆASSEMBLYlanguagetestprogram @‰Thefollowingfilesareusedtogenerateasecondtestprogram: >‰9992.M615DRV.TEST615.SA‡AssemblylanguagetestprogramsourceA‰9992.M615DRV.TEST615.AF‡chainfileforassemblylanguageprogramA‰9992.M615DRV.TEST615.LF‡chainfileforlinkofasmlang.program7‰9992.M615DRV.TEST615.LO‡assemblylanguagetestprogram  KTheMVME61= 5driversourcefileis:9992.&.M615DRV.SA.‚Toassemblethisfile%use the chain file 9992.&.M615DRV.AF.;The following files are used in the assembly of M615DRV.SA:9995.&.STR.EQ9995.&.TCB.EQ9995.&.CCB.EQ9995.&.LV5.EQ9995.&.TR1RTCD.EQ‘Aš4¢8ª49995.&.M615DRV.EQ  >In order to incorporate this driver into your system, you will=have to set some parameters in the .CNFGDRVR.CI file. #This driver requires the following:;‰1)‚Memorymustbeallocatedfortheinternaldrivertable.9‰2)‚Achannelcontrolblock(CCB)mustbecreatedforthe6commandsissuedforeachMVME615boardinthesystem. HThe size of the memory area set aside for the driver table is determinedGbythevaluesoftwovariablesasspecifiedbyyouintheSYSGEN.‚These$variables are "NVME615" and "NU615". =NVME615ƒThisisthenumberofMVME615boardswhichwillbeon6Šthesystem.‚Sincetherecanbenomorethan16boards6ŠontheI/OChannel(whichiswheretheseboardsare),&Šthemaximumvalueof"NVME615"is16. 3NU615…Thisvariableissettothemaximumnumberof7Šuser/MVME615combinationsyouwishtoallowatanyone2Štime.‚Sinceitispossibletohaveoneuserusing;ŠmorethanoneMVME615board,aswellasmorethanoneuser4ŠusingthesameMVME615board,weneedthenumberofŠuser/MVME615combinations.   ?Example:‚IfuserAusesboard#1andboard#2,userBusesjust1Šboard#1,anduserCusesboard#2andboard#3,,Štherewouldbe5user/boardcombinations--ŠA/1,A/2,B/1,C/2,C/3.FIf the configuration of MVME615 boards is the same as in this example,$you would set NVME615=3 and NU615=5. INote that if you set either of these variables to a larger number than isHactuallyneeded,thesystemwillstilloperatenormally.‚ThiswouldjustBresult in having more memory allocated for internal tables than is necessary.  ?To include the MVME615 driver in your SYSgen, do the following: <‰(1)UseCOPYSGENtogetallthe‚filesneededfortheSYSgenyourSYSgenusernumber.7NOTE:‚Makesurethatargument5=PCDRVsotheProcess,”ControlDriverswillbecopiedbyCOPYSGEN. D‰(2)SetthevariablesNVME615andNU615inthe.CNFGDRVR.CI,filefortheprocessorboardyouareusing. 8‰(3)CheckthefileM615IOC.SItobesurethattheCCB'sconformtoyourconfiguration.   FWhen setting up the "CDB" calls please note that each ACO-ID must haveCauniquename.‚ThisisalsothenameanyapplicationtaskwoulduseFtoaddressthedriverforaboard.‚Thememory-mappedI/Oaddressesarealso different for each board. 1After creating and booting your VERSAdos with the>MVME615 driver included, you may want to run the provided test"program to test your VME615 board.  FTESTAC.SA is an assembly language test program which tests the MVME615Cdriver. This program provides as complete and comprehensive test ofCthe driver as is possible. It tests combinations of opens, outputs,Fpulses, closes, status, and error tests, and checks outputs and errors@forcorrectness.‚PleaseedititbeforeassemblingtospecifytheIcorrect ACO-ID and memory-mapped I/O address to match your configuration.   ETESTAC.SA is assembled with the chain file TESTAC.AF, and linked with1the file TESTAC.LF. The load module is TESTAC.LO.   GTo use the test program TESTAC.LO, provide an MVME615 board with output indicators on channels 0 thru 7.  +The tests made on the board are as follows:  <‰TEST1individuallyopenseachchannelontheboard,outputs7toit,checksstatus,turnsitoff,checksstatus,and5closes.Anyerrorsintheprocessareprintedonthe terminal. >‰TEST2individuallyopenseachchannel,outputstoit&checks8statusuntilallar= eon.Thenitindividuallyturnsoff9eachchannel&checksstatusuntilallareoff.Itturns'alloutputsbackonforthenexttest. ?‰TEST3closesthechannels.TheOPERATORofthetestmustcheckthattheoutputsturnoff. =‰TEST4opensallchannels,turnsthechannelsallon,delays,$turnsallchannelsoff,andcloses. @‰TEST5individuallyopenseachchannel,commandsapulseoutput,8delayslongenoughtobeabletoseethepulseend,andcloses. ?‰TEST6opensfourchannels,commandspulseoutputsofdifferent9lengthstoeachsimultaneously,delaystobeabletoseeithappen,andcloses. A‰TEST7openschanneltwowith"queueevent"configuration,pulses:output,waitsforqueueevent,verifiesthemessagesent, andcloses.  ?‰TEST8openschannelonewith"waitforwake-up"configuration,.pulsesoutput,waitsforwake-up,andcloses. ;‰TEST9trysOUTPUTONwithchannelsclosedandverifiesthecommanderror.6trysOUTPUTOFFwithchannelsclosedandverifiesthecommanderror.7tryscheckingSTATUSwithchannelsclosedandverifiesthecommanderror.8trysPULSEoutputwiththechannelsclosedandverifiesthecommanderror. =‰TEST10trysopeninginvalidchannelnumbersandverifiesthecommanderrors.7(zerochannels,morethaneightchannels,channel#9,(andtwochannelswiththesamenumber). :‰TEST11opensvalidchannelsandtrysinvalidcommandsandverifieserrors.(commands0,6,7,&9). =‰TEST12trysopeningchannelsandthenopeningthemagainandverifiestheerror.  ;‰Thenthechannelsareclosed.Ifalltestsaresuccessful,3amessageisprintedsayingso.Ifanytestfails,anerrormessageisprinted.<‰Ifasecondboardisonthesystem,itreturnstoTEST1and(repeatsthetestsforthesecondboard.=‰Inaddition,iftwoboardsarepresent,athirdpassthrough6thetestsalternatesbetweentheboardstocheckbothatthesametime.  GM615DRV.TEST615.SA is an assembly language test program which tests theDMVME615driver.‚ThisprogrampromptstheusertorunasubsetofallDcommandsavailableinthedriver.‚ItcanbeusedasafirstcheckofAthe hardware and as an example of writing commands to the driver. ‰ENDN==============================================================================N==============================================================================N==============================================================================F====‚NEWSFILEFORDCO…(MVME625-DCOUTPUTBOARD)ƒDRIVERRELEASE‚===="====‚Lastmodified-01/31/85¬====N============================================================================== 8This driver is compatible with both RMS68K and VERSAdos.   .This driver consists of the following files -- ‰MVME625driverfiles:-9992.&.M625DRV.SA‚MVME625driversourcefile-9992.&.M625DRV.RO‚MVME625driverobjectfile59992.&.M625DRV.AF‚MVME625driverassemblychainfile  ‰Files‚forallocatingmemory:/9992.&.M625MEM.CI‰FileincludedatSYSgentime09992.&.M625MEM.AG‰FileassembledatSYSgentime  ‰Filesforsystemconfiguration:"9992.&.M625DRV.CIˆSYSGENcommands"9992.&.M625IOC.SIˆCCBallocations39992.&.M625DRV.LGˆChainfiletolinkinthedriver#9998.VERSAPT.M625DRV.CF‚Patchfile   ‰FORTRANinterfacesubroutines:09992.&.M625LIB.SA…Assemblylanguagesourcefile&9992.&.M625LIB.AF…Assemblychainfile9992.&.M625LIB.RO…Objectfile  ‰"News"file:9992.&.M625DRV.NW…Newsfile   %‰Filestogeneratethetestprograms: ;‰9992.M625DRV.TESTDC.SAˆASSEMBLYlanguagetestprog.source=‰9992.M625DRV.TESTDC.AFˆchainfileforASSEMBLYlanguageasm.>‰9992.M625DRV.TESTDC.LFˆchainfileforLINKofasm.lang.prog6‰9992.M625DRV.TESTDC.LOˆASSEMBLYlanguagetestprogram 3‰9992.M625DRV.TSTDCO.SAˆFORTRANtestprogramsource=‰9992.M625DRV.TSTDLY.SAˆFORTRANtest> programsubrtnfordelay?‰9992.M625DRV.TSTPR1.SAˆFORTRANtestprogramsubrtnerrorprint;‰9992.M625DRV.TSTDCO.AFˆchainfileforFORTRANcompiletest>‰9992.M625DRV.TSTDCO.LFˆlinksFORTRANtestprog.&libraryrtn6‰9992.M625DRV.TSTDCO.LOˆFORTRANtestprogramloadfile >‰9992.M625DRV.TEST625.SA‡AssemblylanguagetestprogramsourceA‰9992.M625DRV.TEST625.AF‡chainfileforassemblylanguageprogramA‰9992.M625DRV.TEST625.LF‡chainfileforlinkofasmlang.program²:»8Ã4Ë7ÓPÛ7‰9992.M625DRV.TEST625.LO‡assemblylanguagetestprogram  KTheMVME625driversourcefileis:9992.&.M625DRV.SA.‚Toassemblethisfile%use the chain file 9992.&.M625DRV.AF.;The following files are used in the assembly of M625DRV.SA:9995.&.STR.EQ9995.&.TCB.EQ9995.&.CCB.EQ9995.&.LV5.EQ9995.&.TR1RTCD.EQ9995.&.M625DRV.EQ  >In order to incorporate this driver into your system, you will=have to set some parameters in the .CNFGDRVR.CI file.  #This driver requires the following:;‰1)‚Memorymustbeallocatedfortheinternaldrivertable.9‰2)‚Achannelcontrolblock(CCB)mustbecreatedforthe6“commandsissuedforeachMVME625boardinthesystem. HThe size of the memory area set aside for the driver table is determinedGbythevaluesoftwovariablesasspecifiedbyyouintheSYSGEN.‚These$variables are "NVME625" and "NU625". =NVME625ƒThisisthenumberofMVME625boardswhichwillbeon6Šthesystem.‚Sincetherecanbenomorethan16boards6ŠontheI/OChannel(whichiswheretheseboardsare),&Šthemaximumvalueof"NVME625"is16. 3NU625…Thisvariableissettothemaximumnumberof7Šuser/MVME625combinationsyouwishtoallowatanyone2Štime.‚Sinceitispossibletohaveoneuserusing;ŠmorethanoneMVME625board,aswellasmorethanoneuser4ŠusingthesameMVME625board,weneedthenumberofŠuser/MVME625combinations.   ?Example:‚IfuserAusesboard#1andboard#2,userBusesjust1Šboard#1,anduserCusesboard#2andboard#3,,Štherewouldbe5user/boardcombinations--ŠA/1,A/2,B/1,C/2,C/3.FIf the configuration of MVME625 boards is the same as in this example,$you would set NVME625=3 and NU625=5. INote that if you set either of these variables to a larger number than isHactuallyneeded,thesystemwillstilloperatenormally.‚ThiswouldjustBresult in having more memory allocated for internal tables than is necessary.    ?To include the MVME625 driver in your SYSgen, do the following: <‰(1)UseCOPYSGENtogetallthefilesneededfortheSYSgenintoyourSYSgenusernumber.2NOTE:‚Makesureargument5=PCDRVsotheProcess+”ControlDriverswillbecopiedbyCOPYSGEN D‰(2)SetthevariablesNVME625andNU625inthe.CNFGDRVR.CI,filefortheprocessorboardyouareusing. 8‰(3)CheckthefileM625IOC.SItobesurethattheCCB'sconformtoyourconfiguration. FWhen setting up the "CDB" calls please note that each DCO-ID must haveCauniquename.‚ThisisalsothenameanyapplicationtaskwoulduseBtoaddressthedriverforaboard.‚Thememory-mappedI/Oaddresses"are also different for each board.  >After configuring your system and creating a VERSAdos with the>MVME625 driver included, you may want to run the provided test=programs.‚TwoareassemblylanguageandonerequiresFortran.ABothofthetestprogramsrequireVERSAdos.‚Allthetestprograms=contain the catalog name M625DRV and are in user number 9992.  FTESTDC.SA is an assembly language test program which tests the MVME625Cdriver. This program provides as complete and comprehensive test ofCthe driver as is possible. It tests combinations of opens, outputs,> Fpulses, closes, status, and error tests, and checks outputs and errors@forcorrectness.‚PleaseedititbeforeassemblingtospecifytheIcorrect DCO-ID and memory-mapped I/O address to match your configuration.   ETESTDC.SA is assembled with the chain file TESTDC.AF, and linked with1the file TESTDC.LF. The load module is TESTDC.LO.   GTo use the test program TESTDC.LO, provide an MVME625 board with output indicators on channels 0 thru 7.  +The tests made on the board are as follows:  <‰TEST1individuallyopenseachchannelontheboard,outputs7toit,checksstatus,turnsitoff,checksstatus,and5closes.Anyerrorsintheprocessareprintedonthe terminal. >‰TEST2individuallyopenseachchannel,outputstoit&checks8statusuntilallareon.Thenitindividuallyturnsoff9eachchannel&checksstatusuntilallareoff.Itturns'alloutputsbackonforthenexttest. ?‰TEST3closesthechannels.TheOPERATORofthetestmustcheckthattheoutputsturnoff. =‰TEST4opensallchannels,turnsthechannelsallon,delays,$turnsallchannelsoff,andcloses. @‰TEST5individuallyopenseachchannel,commandsapulseoutput,8delayslongenoughtobeabletoseethepulseend,andcloses. ?‰TEST6opensfourchannels,commandspulseoutputsofdifferent9lengthstoeachsimultaneously,delaystobeabletoseeithappen,andcloses. A‰TEST7openschanneltwowith"queueevent"configuration,pulses:output,waitsforqueueevent,verifiesthemessagesent, andcloses.  ?‰TEST8openschannelonewith"waitforwake-up"configuration,.pulsesoutput,waitsforwake-up,andcloses. ;‰TEST9trysOUTPUTONwithchannelsclosedandverifiesthecommanderror.6trysOUTPUTOFFwithchannelsclosedandverifiesthecommanderror.7tryscheckingSTATUSwithchannelsclosedandverifiesthecommanderror.8trysPULSEoutputwiththechannelsclosedandverifiesthecommanderror. =‰TEST10trysopeninginvalidchannelnumbersandverifiesthecommanderrors.7(zerochannels,morethaneightchannels,channel#9,(andtwochannelswiththesamenumber). :‰TEST11opensvalidchannelsandtrysinvalidcommandsandverifieserrors.(commands0,6,7,&9). =‰TEST12trysopeningchannelsandthenopeningthemagainandverifiestheerror.  ;‰Thenthechannelsareclosed.Ifalltestsaresuccessful,3amessageisprintedsayingso.Ifanytestfails,anerrormessageisprinted.<‰Ifasecondboardisonthesystem,itreturnstoTEST1and(repeatsthetestsforthesecondboard.=‰Inaddition,iftwoboardsarepresent,athirdpassthrough6thetestsalternatesbetweentheboardstocheckbothatthesametime.      JM625LIB.SAisassembledusingtheM625LIB.AFchainfile.‚M625LIB.ROistheEFORTRAN-callable subroutine which, when called by the user program orJFORTRAN test program, will invoke the appropriate MVME625 driver function.   BTSTDCO.SA is a FORTRAN example test program which uses the driver.EThe purpose in providing the FORTRAN test program is to give the userEa relatively simple way to check out a new system with software whichis known to work correctly.   FTSTDCO.SA, TSTDLY.SA, and TSTPR1.SA are Fortran compiled with the fileETSTDCO.AF.‚FileTSTDCO.LFlinksthetestroutineswithM625LIB.ROandFFORTLIB.RO (and FORTVMC.RO for the VMC or VME systems) and creates theprogram TSTDCO.LO.  ETo use test program TSTDCO.LO, provide a board with output indicators+onchannels0thru7.‚ThenRUNtheprogram.  BThe result will be observable on the output indicators as follows:  ?‰indicators0thru7willturnonindividuallyatapproximately‰onesecondintervals.“FORN=1to8OPENchannelN-1turnonindicatorN-1waitonesecondreadoutputstatusverifyindicatorN-1onturnoffindicatorN-1? CLOSE“NEXTN A‰indicators0thru7willturnononeatatimeuntilallareon.“FORN=1to8OPENchannelN-1turnonindicatorN-1waitonesecondreadoutputstatus"verifyindicators0toN-1areon“NEXTN“waitonesecond“CLOSE“waitonesecond “readstatus“verifyoutputsareoff "‰indicators‚0thru7willturnon. “OPENall“turnonallindicators“waitonesecond“turnOFFallindicators“verifyallindicatorsareoff“CLOSE ,‰indicatorswillbePULSEDononeatatime.4‰(defaultconfiguration-nowake-uporqueueevent) “OPENall“FORN=1TO8PULSEindicatorN-1waitonesecond“NEXTN“CLOSE 7‰CLOSEallchannelsandtryallcommands.Verifyerror.“DCOUT‚command “DCOOFFƒ" “DCOSTAƒ" “DCOPLSƒ" “DCOPENƒ"6‰TryDCOPENafteritisalreadyopenandverifyerror.  ;‰Checkforasecondboardonthesystemandrepeatthetest‰ifoneispresent.  GM625DRV.TEST625.SA is an assembly language test program which tests theDMVME625driver.‚ThisprogrampromptstheusertorunasubsetofallDcommandsavailableinthedriver.‚ItcanbeusedasafirstcheckofAthe hardware and as an example of writing commands to the driver. ‰ENDN==============================================================================N==============================================================================éééééN==============================================================================L====‚NEWSFILEFORRAD1(REMOTEANALOG-TO-DIGITALBOARD)DRIVERRELEASE‚===="====‚Lastmodified-01/31/85¬====N==============================================================================   3RAD1 Driver is compatible with RMS68K and VERSAdos.   /This release consists of the following files -- ‰RAD1Driverfiles:)“9992.&.RADDRV.SA…RAD1driversourcefile1“9992.&.RADDRV.AF…RAD1driverassemblychainfile)“9992.&.RADDRV.RO…RAD1driverobjectfile ‰Fileforallocatingmemory:,“9992.&.RADMEM.AG…Fileforallocatingmemory.“9992.&.RADMEM.CI…Fileincludedatsysgentime ‰Filesforsystemconfiguration:5“9992.&.RADDRV.CI…SysgenincludefileforRAD1driver3“9992.&.RADDRV.LG…ChainfiletolinkinRAD1driver!“9992.&.RADIOC.SI…CCBallocations7“9992.&.IOCFAIL.SA„Boardfailuremonitorroutinesource.“9992.&.IOCFAIL.AF„IOCFAILassemblychainfile .“9992.&.IOCINT.LG…ChainfiletolinkinIOCINT0“9992.&.IOCFAIL.LG„ChainfiletolinkinIOCFAIL"“9998.VERSAPT.RADDRV.CFPatchfile ‰FilesassembledduringSYSGEN:4“9992.&.IOCINT.AG…CCBallocationroutinesourcefile ‰FORTRANinterfacesubroutines:/“9992.&.RADLIB.SA…Assemb? lylanguagesourcefile%“9992.&.RADLIB.AF…Assemblychainfile“9992.&.RADLIB.RO…Objectfile ‰"News"file:“9992.&.RADDRV.NW…Newsfile   JTheRAD1driversourcefileis:‚RADDRV.SA.‚Toassemblethisfile,usetheKchainfile:‚RADDRV.AF.‚Thefollowingequatefilesareusedintheassembly of RADDRV:“9995.&.STR.EQ“9995.&.TCB.EQ“9995.&.CCB.EQ“9995.&.LV5.EQ“9995.&.RADDRV.EQ   BIn order to incorporate the RAD1 driver into your system, you will.CNFGDRVR.CI file.   'The RAD1 driver requires the following:<‰1)‚Memorymustbeallocatedfortheinternaldrivertables.9‰2)‚Achannelcontrolblock(CCB)mustbecreatedfortheãAì4ô$ü 6“datainterrupt(level3interrupt)oneachRAD1board“inthesystem.9‰3)‚ACCBmustbecreatedfortheboard-failureinterrupt-“(level4interrupt)oneachRAD1boardwhich+“doesnothavethisinterruptdisabledbya“jumperontheboard.   IThe size of the memory area set aside for the driver tables is determinedKby the values of two variables as specified by you in .CNFGDRVR.CI.'These variables are "NRAD" and "NURAD". 7NRAD†ThisisthenumberofRAD1boardswhichwillbeon6Šthesystem.‚Sincetherecanbenomorethan16boards9ŠontheI/OChannel(whichiswheretheRAD1boardsare),#Šthemaximumvalueof"NRAD"is16. 3NURAD…Thisvariableissettothemaximumnumberof4Šuser/RAD1combinationsyouwishtoallowatanyone2Štime.‚Sinceitispossibletohaveoneuserusing8ŠmorethanoneRAD1board,aswellasmorethanoneuser1ŠusingthesameRAD1board,weneedthenumberofŠuser/RAD1combinations. ,Example:‚IfuserAusesRAD1#1andRAD1#2,ŠuserBusesjustRAD1#1,%ŠanduserCusesRAD1#2andRAD1#3,+Štherewouldbe5user/RAD1combinations--ŠA/1,A/2,B/1,C/2,C/3.CIf the configuration of RAD1 boards is the same as in this example,!you would set NRAD=3 and NURAD=5. INote that if you set either of these variables to a larger number than isHactuallyneeded,thesystemwillstilloperatenormally.‚ThiswouldjustBresult in having more memory allocated for internal tables than is necessary. JThe variables NRAD and NURAD are defined in the file .CNFGDRVR.CI.FYou will have to edit this file to reflect the correct values of these,variables for your particular configuration.   BThe code to allocate memory for the RAD1 driver internal tables iscontained in the file RADMEM.AG   EYour SYSGEN will set up a task which will allocate the CCB's (channelAcontrol blocks) for the RAD1 boards during system initialization.IThe file IOCINT.AG is included in this release to simplify the allocation2oftheCCB's.‚ThefileRADIOC.SIhasbeenincluded5to give you an example of the set-up used to pass theEinformation on each RAD1 board to the program which builds the CCB's. 8When setting up the "CDB" calls, remember the following: '1)ƒTheRAD-IDisa4-charactermnemonicE…suchas"RA01"forthefirstRAD1board,"RA02"forthesecond,etc.J…EachRAD1boardnormallyhastwoCCB's--oneforinterruptlevel3(normalF…interrupts)andoneforinterruptlevel4(board-failureinterrupts).H…WhileeachCCBmusthaveadifferentRAD-ID,thelevel-4CCBforaRAD1H…boardmustuseforitsRAD-ID‚$00004000morethanthe4-byteASCIIcodeE…fortheRAD-IDofthecorrespondinglevel-3CCB.‚ThisissothattheI…drivercanfindthelevel-3CCBforaparticularRAD1boardwhenitgets…alevel-4interruptH…(board-failureinterrupt).‚Forexample:ifthelevel-3CCBhasaRAD-IDF…of"RA01",thenthelevel-4CCBforthatboardmustuse"RA41"asitsE…RAD-ID.‚Similarly,if"RA13"isthelevel-3RAD-I@ D,thenthelevel-4$…CCBmusthave"RA53"asitsRAD-ID. M2)ƒWhenmodifyingthe.CNFGDRVR.CIfileforyourparticularsituation&…youshouldrememberthatinthe"CDB"E…macrocalls,theaddressofthememory-mappedI/Ospace(shared-RAM)G…isthesameforbothCCB'sforeachRAD1board.‚AlsothelengthoftheH…memory-mappedI/Ospaceissetat511sinceshared-RAMstartsonanodd(…address(fromthe68000pointofview).   ?IOCFAIL.SA‚isanoptionaltaskwhichwillbe"called"byhaving@an event queued to it when a board-failure interrupt is receivedDbythedriver.‚Thedevicetable("DEVTBL")inIOCFAILmustbesetupJwith the device mnemonic (RAD-ID) of all the level-4 CCB's that IOCFAIL isItobeattachedto.‚ThedevicetableintheIOCFAILfilegivenhereissetNup for two RAD1 boards as a sample -- the level-4 CCB RAD-ID's for these beingL"RA41"and"RA42".‚InitspresentformIOCFAILsetsuptoreceivetheevent,Kbutdoesn'treallydoanythingwhentheeventisreceived.‚YouwillhavetoGadd whatever programming is necessary to the "receive-event" routine toIhave this program perform the processes you deem necessary in the case ofFaRAD1boardfailure.‚Ifyouchoosetodonothingwhenaboardfailure;occurs, this task can be left out of the SYSGEN altogether.   CRADLIB.SA‚and‚RADLIB.RO‚aretheFORTRAN-callablesubroutineswhich,Hwhen called by the user program, will invoke the appropriate RAD1 driver function. N==============================================================================éééééN==============================================================================B====‚NEWSFILEFORRIO(REMOTEINPUT/OUTPUT)DRIVERRELEASE‚===="====‚Lastmodified-01/31/85¬====N==============================================================================  2RIO Driver is compatible with RMS68K and VERSAdos.   /This release consists of the following files -- ‰RIODriverfiles:(“9992.&.RIODRV.SA„RIOdriversourcefile0“9992.&.RIODRV.AF„RIOdriverassemblychainfile(“9992.&.RIODRV.RO„RIOdriverobjectfile-“9992.&.STDMACRO.AI‚MacrosusedinRIOdriver ‰Fileforallocatingmemory:,“9992.&.RIOMEM.AG„Fileforallocatingmemory.“9992.&.RIOMEM.CI„Fileincludedatsysgentime ‰Fileforsystemconfiguration:!“9992.&.RIOIOC.SI„CCBallocations4“9992.&.RIODRV.CI„SysgenincludefileforRIOdriver2“9992.&.RIODRV.LG„ChainfiletolinkinRIOdriver.“9992.&.IOCINT.LG„ChainfiletolinkinIOCINT"“9998.VERSAPT.RIODRV.CFPatchfile ‰FilesassembledduringSYSGEN:4@ “9992.&.IOCINT.AG„CCBallocationroutinesourcefile ‰Testprogramfiles/“9992.RIODRV.TESTE.SAƒExampleprogramusingRIOªdriverinwait_for_eventmode.*“9992.RIODRV.TESTE.AFƒAssemblychainfile.1“9992.RIODRV.TESTE.LFƒChainfiletolinkinTESTE4“9992.RIODRV.TESTE.LOƒAssemblylanguagetestprogram @‰Thefollowingfilesareusedtogenerateasecondtestprogram: =‰9992.RIODRV.TESTRIO.SA‡Assemblylanguagetestprogramsource@‰9992.RIODRV.TESTRIO.AF‡chainfileforassemblylanguageprogram@‰9992.RIODRV.TESTRIO.LF‡chainfileforlinkofasmlang.program6‰9992.RIODRV.TESTRIO.LO‡assemblylanguagetestprogram ‰FORTRANinterfacesubroutines:/“9992.&.RIOLIB.SA„Assemblylanguagesourcefile%“9992.&.RIOLIB.AF„Assemblychainfile“9992.&.RIOLIB.RO„Objectfile ‰"News"file:“9992.&.RIODRV.NW„Newsfile  ITheRIOdriversourcefileis:‚RIODRV.SA.‚Toassemblethisfile,usetheKchainfile:‚RIODRV.AF.‚Thefollowingequatefilesareusedintheassembly of RIODRV:: 8,“9995.&.STR.EQ“9995.&.TCB.EQ“9995.&.CCB.EQ“9995.&.LV5.EQ“9995.&.RIODRV.EQ“9995.&.TR1RTCD.EQ  AIn order to incorporate the RIO driver into your system, you will6have to modify items in the .CNFGDRVR.CI file.  &The RIO driver requires the following:<‰1)‚Memorymustbeallocatedfortheinternaldrivertables.:‰2)‚Achannelcontrolblock(CCB)mustbecreatedforeach5interruptlevelforwhichtheRIOboardisjumpered.   IThe size of the memory area set aside for the driver tables is determinedCbytwovariablesasspecifiedbyyouin.CNFGDRVR.CI.‚These$variables are "NRIO", and "NRIOINT". 6NRIO†ThisisthenumberofRIOboardswhichwillbeon6Šthesystem.‚Sincetherecanbenomorethan16boards8ŠontheI/OChannel(whichiswheretheRIOboardsare),#Šthemaximumvalueof"NRIO"is16. GNRIOINTƒThisvariableissettothenumberofhardwareinterruptlevels>ŠforwhichtheRIOboardswillbejumpered.‚Theminimumnumber"Šis1andthemaximumnumberis4. :Note that if you set either of these variables larger thanHactuallyneeded,thesystemwillstilloperatenormally.‚ThiswouldjustBresult in having more memory allocated for internal tables than is necessary. LThe variables NRIO and NRIOINT are defined in the file .CNFGDRVR.CI.FYou will have to edit this file to reflect the correct values of these,variables for your particular configuration.   AThe code to allocate memory for the RIO driver internal tables is contained in the file RIOMEM.AG.   EYour SYSGEN will set up a task which will allocate the CCB's (channel@control blocks) for the RIO boards during system initialization.IThe file IOCINT.AG is included in this release to simplify the allocation2oftheCCB's.‚ThefileRIOIOC.SIhasbeenincluded5to give you an example of the set-up used to pass theDinformation on each RIO board to the program which builds the CCB's. 8When setting up the "CDB" calls, remember the following: '1)ƒTheRIO-IDisa4-charactermnemonicE…suchas"RIO1"forthefirstRIO1board,"RIO2"forthesecond,etc.  CRIOLIB.SA‚and‚RIOLIB.RO‚aretheFORTRAN-callablesubroutineswhich,Gwhen called by the user program, will invoke the appropriate RIO driver function.  FTESTE.SA is an example program written in assembly language which uses?theRIOdriver.‚Thepurposeinprovidingthetestprogramisto?give the user a relatively simple way to check out a new system/with software which is known to work correctly. 3To use the test program as is, provide an RIO board:with input relays in locations 0,1,2,3 and 10, and provideDoutputrelaysinlocations5,7,8,and9.‚Connectanelectronicpulse@generator to input 0, with the ON A pulse time of 10 milliseconds,Lamp5willalternateon/offatthepulserepetitionrate.<„>Lamps7,8,9willturnontogetherateachinputONpulse,9†thenwillgooutinsequence7-8-9(theyareonchannels†performingpulsedoutput). EChannel 0 is set to cause an interrupt on falling edge, so it's inputBneeds to be low (OFF) for the period of the debounce time which isB512milliseconds.‚Withthepulsegeneratorsetasdescribedabove,?thisrequirementismet.‚IftheinputpulseOFFtimeisreducedCto below 512 milliseconds, the debounce requirement will not be met%and the input signal will be ignored. milliseconddebounce.‚Tomakechannel1signalsberecognized,The test program disables channel 1 interrupts after recievingA10 interrupts on that channel, then re-enables them after another610 interrupts (which must come in on another channel). AThe test program sets channel 2 for interrupt on rising edge withBno debounce, and sets channel 3 for interrupt on falling edge with no debounce. EChannel 10 is set for input with interrupts disabled, and will return>it's input state to the 'returned command status' field in theRIO parameter block. FSince the test program is configured to recieve interrupt notificationBvia a 'queued event', each recognized interrupt will place a dummy@messageinthetesttaskA.S.Q..‚Theroutine'TESTIRQ'movestheAmessage from the ASQ (which is not directly acessable by the user?task'TESTE')tothetaskrecieverbuffer,definedasRCVBUF‚inTESTE. FRIODRV.TESTRIO.SA is an assembly language test program which tests the@RIOdriver.‚ThisprogrampromptstheusertorunasubsetofallDcommandsavailableinthedriver.‚ItcanbeusedasafirstcheckofAthe hardware and as an example of writing commands to the driver. N==============================================================================ééé*‰&.M600IOC.SIG*======================================================================*E* THIS IS THE CODE NEEDED TO SET UP CCB'S FOR MVME 600 or 601 BOARDS.*@* Add a CCB definition for each additional board in your system.A* Note that the memory-mapped I/O address must be unique for eachB* board, must not conflict with any other board in the system, andF*mustmatchtheon-boardjumperselections.‚TheI/OChannelinterruptC* vector number and hardware interrupt level must correspond to the* jumpers on the board.*G*======================================================================*M600†EQU„\M600DRV)L600$01ƒSET„\L600$01‹Setboard#1address)L600$02ƒSET„\L600$02‹Setboard#2address***ˆSetup600/601boardCCBA *@ CDB XOPEXC,'AD01',$80,0,M600,0,L600$01,1,\IOCVEC1,\IOCLVL1,$FF,&0,0,0,0,0,0,0,0,0,0,0*N*-----------------------------------------------------------------------------*IFGE…\NVME600-2**ˆSetup600/601boardCCB*@ CDB XOPEXC,'AD02',$80,0,M600,0,L600$02,1,\IOCVEC1,\IOCLVL1,$FF,&0,0,0,0,0,0,0,0,0,0,0 ENDCééé%!ö' M605IOC SI::aaM610IOC SICCaaM615IOC SILLaaM625IOC SIUUaaRIOIOC SI^^ aaRADIOC SIgg aaIOCFAIL ROppaaM600DRV ROyyaaM600LIB RO‚‚aaM605DRV RO‹‹aaM605LIB RO””aaM610DRV ROaaM610LIB RO¦¦aaM615DRV RO¯¯aaM615LIB RO¸¸aaM625DRV ROÁÁaaM625LIB ROÊÊaaRADDRV ROÓÓaaRADLIB ROääaaRIODRV ROíí aa*ˆ&.M605IOC.SIG*======================================================================*@* THIS IS THE CODE NEEDED TO SET UP A CCB FOR ONE MVME605 BOARD.*@* Add a CCB definition for each additional board in your system.@* An address for a second MVME605 board can be offset $100 bytes* from the first.=* For example, another MVME605 board could have an address of* \IOCBASE+$1D01.A* Note that the memory mapped I/O address must be unique for eachB* board, must not conflict with any other board in the system, andB*mustmatchtheon-boardjumperselections.‚SincethisboarddoesG* not generate interrupts it may be nice to choose the lowest interrupt5* level and software priority level for CCB chaining.*G*======================================================================*/M605†EQU„\M605DRV‹Settheaddressofthedriver-L605$01ƒSET„\L605$01‹Settheboard#1address**J CDB XOPINH+XOPEXC,'DAC1',$80,254,M605,0,L605$01,31,\IOCVEC1,\IOCLVL1,$50,&„0,0,0,0,0,0,0,0,0,0,0ééB éé2*ˆINCLUDE‚&.M610IOC.SIG*======================================================================*E* THIS IS THE CODE NEEDED TO SET UP CCB'S FOR MVME 610 or 620 BOARDS.*@* Add a CCB definition for each additional board in your system.A* Note that the memory mapped I/O address must be unique for eachB* board, must not conflict with any other board in the system, andM* must match the on-board jumper selections. The I/O Channel interrupt vectorM* number and hardware interrupt level must correspond to the interrupt jumper* on the board.*G*======================================================================*/M610†EQU„\M610DRV‹Settheaddressofthedriver-L610$01ƒSET„\L610$01‹Settheboard#1address-L610$02ƒSET„\L610$02‹Settheboard#2address**@ CDB XOPEXC,'IN01',$80,0,M610,0,L610$01,3,\IOCVEC1,\IOCLVL1,$FF,&„0,0,0,0,0,0,0,0,0,0,0**IFGE…\NVME610-2*@ CDB XOPEXC,'IN02',$80,0,M610,0,L610$02,3,\IOCVEC2,\IOCLVL2,$FF,&„0,0,0,0,0,0,0,0,0,0,0 ENDCéééé;*ˆ&.M615IOC.SIG************************************************************************0*Codetobeincludedin‚IOCINT.AG‚tosetupfor,*’buildingtheCCB'sfortheMVME615boards.*G*======================================================================*@* THIS IS THE CODE NEEDED TO SET UP A CCB FOR ONE MVME615 BOARD.*@* Add a CCB definition for each additional board in your system.E* An additional board may be placed at an offset of $2 bytes from the@* first, for example, on the VME110, two boards may be placed at?* $FE6003 and $FE6005, provided these addresses do not conflict+* with any other board's memory mapped I/O.A* Note that the memory mapped I/O address must be unique for eachB* board, must not conflict with any other board in the system, andB*mustmatchtheon-boardjumperselections.‚SincethisboarddoesG* not generate interrupts it may be nice to choose the lowest interrupt5* level and software priority level for CCB chaining.*G*=========================B =============================================*/M615†EQU„\M615DRV‹Settheaddressofthedriver-L615$01ƒSET„\L615$01‹Settheboard#1address**B CDB XOPEXC,'ACO1',$80,254,M615,0,L615$01,1,\IOCVEC1,\IOCLVL1,$50,&„0,0,0,0,0,0,0,0,0,0,0éééD*ˆ&.M625IOC.SIG************************************************************************&*Codetobeincludedin‚IOCINT.AGƒfor,*’buildingtheCCB'sfortheMVME625boards.*G************************************************************************G*======================================================================*@* THIS IS THE CODE NEEDED TO SET UP A CCB FOR ONE MVME625 BOARD.*@* Add a CCB definition for each additional board in your system.E* An additional board may be placed at an offset of $2 bytes from the@* first, for example, on the VME110, two boards may be placed at?* $FE6001 and $FE6003, provided these addresses do not conflict+* with any other board's memory mapped I/O.A* Note that the memory mapped I/O address must be unique for eachB* board, must not conflict with any other board in the system, andB*mustmatchtheon-boardjumperselections.‚SincethisboarddoesG* not generate interrupts it may be nice to choose the lowest interrupt5* level and software priority level for CCB chaining.*G*======================================================================*/M625†EQU„\M625DRV‹Settheaddressofthedriver-L625$01ƒSET„\L625$01‹Settheboard#1address**B CDB XOPEXC,'DCO1',$80,254,M625,0,L625$01,1,\IOCVEC1,\IOCLVL1,$50,&„0,0,0,0,0,0,0,0,0,0,0ééM *ˆ&.RIOIOC.SI*RIO†EQU‡\RIODRVLRIO$01‚SET‡\LRIO$01*$*ˆADDNECESSARYCCBINFORMATIONHERE**ˆSETUPRIOCCB'S*B CDB XOPEXC,'RI01',$80,254,RIO,0,LRIO$01,31,\IOCVEC3,\IOCLVL3,$50,&0,0,0,0,0,0,0,0,0,0,0éC ééééééV  *ˆ&.RADIOC.SI*RAD†EQU‡\RADDRVLRAD$01 SET \LRAD$01**ˆSETUPRADCCB'S4*ƒ(MEMORYLENGTHIS511SINCEWESTARTATODDADDR.)*C CDB XOPEXC,'RA01',$80,254,RAD,0,LRAD$01,511,\IOCVEC3,\IOCLVL3,$50,&0,0,0,0,0,0,0,0,0,0,0 C CDB XOPEXC,'RA41',$80,254,RAD,0,LRAD$01,511,\IOCVEC4,\IOCLVL4,$50,&0,0,0,0,0,0,0,0,0,0,0éééééé_ C K1IOCFAIL ASYST' IOCFAIL SAX…Board Fail Montior Task 4-28-822 žF30042882 1RA41RA42OúÿþCúÿÜ IB™B™ü ü "ü Eú6"ÊBQpNAF3f>EúÿªJ’g"HüB2ü"Ú2ü B™B™p4 Ap(ÀüF3 Kèÿ"›ÀJ-sf|aþ2Lß,|Ns"m"Jj,J-sf PíqJ)`Hç~0B-s mv$I3 |aþ0Lß ~<Nu4éD éq,1A2DLIB ASYST' M600LIB SA! …e2IBLDCB ®IA2DCLS XIA2DOPN IA2DMRD ¬IA2DMRS VIA2DSTP  )" 3H3 //MúA ú0<`B6R@ @oô¼ o-P o-H1| o=Pp,, (-"¸´pg XGSfô0<ýF3 NurB‚½ñfa3¼ÿÿ\R‚ ‚fæB€`ø m"01¼¼Nu/ >+F3 c c &_0<÷`ÄSG\‹2 Ac &_0<ö`®4,:ÊüSB/ "Naô`F3 NqLßB0<`Š F$m""WX‰Âü½ñg Lß 0<ò`j61"_*JXg. ‚ü<F3 Ìü4Hõ¯`p$ „“É2hÿþAúJ2<p"N@`6`þ/8„0à\„0QÊÿÀQÏÿ`0&_J@F3 kg NpN@``þa4B@6€B€Nu6€NuHç?>|øÿBB AÄü4Lð¯ pÂüF3 a¢Lß|üNsHçÿþ N&( B‚4< HB‚ü4pN@``LßÿNu`øfJ…g i6p3 N@`` J…gJ0PfT—T—NuNu4D éééƒ;1FTDAC ASYST' M605LIB SA$$…DAC subroutinesB2ILOC ŒIDACCLS ,IDAOPEN IDACNVT >)’F3 Hç€paP$¼B€0*ã€\€2€ KpJ+g&/ ?? k áJ„‚F3 (j8N”`Nq>2&_Nu k (j)žF3 Hç€pab$¼B€0*å€\€2€ Kp,, (-"¸´pg \GSfô0<ýNuB4pNuHçþ/>,, F3 (-"¸´pg \GSfô0<ý`B† ôp.LßNuHçþ/>,, "-"²´pg \GF3 Sfô0<ý`BBBA tp4pÂBƒ.LßNurB‚½ñf 01a3¼ÿÿ\R‚ ‚F3 fâB€`þ m"NuHçþBƒrB‚B€0+6+g½ñfƒJCfa`R‚\F3 ‚fà0<ò`B€Lß`²/ $m"$_Nu/ $m"±$_Nu/ $m"0+@ÿgF3 Ê$_NuHçþBƒrB‚B€0+6g½ñf¤ƒJCfa¸`R‚\ ‚fà`ŒLßF3 B€`DHçþB…BƒrB‚B€0+6@ÿg½ñfÿbƒJCfa€`\R‚`ä7E`ÿPF3 0<ô``ø6€NuŸü /KB†BƒB‚B€0+J@gpB…:3`/E. ߯.aÌÎüF3 XG½ñpf2&3`g4\FAúTB-)$/Hçÿþ"Cp"N@`` aþèLßÿS@`¨B€0<öF3 `B€0<ø`LßÿB€0<ñ`&oB€ßü `ÿdHçÿþ*A…ÿ($< F3 aB aþœÈüD XD$y(,mPB‡* ,-&* ¼ƒg Ôü4Sk`î02@a$LßF3 ÿNsQB¯RoJEgçïSE`ô:/PNu02@ff(-"a ` NpN@F3 NuHçÿþ NpN@``LßÿNu`øfJ…g i6pN@`` J…gJ0PfT—T—NuHçF3 þŸü $y(B‡* -&* °ƒg Ôü4Sk`î/J$< /BB„pÞü 3 Lßþ|ÿþNu4é§;1FTACO ASYST' M615LIB SA1$…ACO subroutines`2IACOPEN IACOOFF RIACOCLS .IACOPLS nIACOSTA `IACOOUT @)¾F3 Hç€pa‚$¼B€0*å€\€2€ Kp:ÄüX‚Jq jBR‡63/C&/a^ @ýg03ƒ #Ž XAS@nÄF3 a| @ýgB€`40<ö`.0<÷`(0<ý`"0<þJGg6<ÿÿB43ÄüX‚3ƒ XASGnìF3 PLß`øHçþ/>,, (-"¸´pg \GSfô0<ý`B† ôp.LßNuHçF3 þ/>,, "-"²´pg \GSfô0<ý`BBBA tp4pÂBƒ.LßNu>,F3 , (-"¸´pg \GSfô0<ýNuB4pNurB‚½ñf 01a3¼ÿÿ\R‚ ‚F3 fâB€`: m"NuHçþBƒrB‚B€0+6+g½ñfƒJCfa`R‚\ ‚F3 fà0<ò`B€Lß`î/ $m"$_NuHçþBƒrB‚B€0+6g½ñfȃJCF3 fa`R‚\ ‚fà`°LßB€`¤/ $m"±$_NuHçþB…BƒrB‚B€0+6@F3 ÿg½ñfÿxƒJCfa`\R‚`ä7E`ÿf/ $m"0+@ÿgÊ$_Nu0,, (-"¸´pgG Sfò0<ý`(B† oQF3 f ´p` ôp` g ôp.LßNu ´pa`îýþÿþ ï÷ÿ÷F3 HçÿþB€Jk4g gpgP@B2;Æ €x騃ÿá‹‚ƒ‚€F3 aLßÿNuB€âÞ;ªPÃ4pà‰ƒ4pà‰ƒ4pÿ≀ƒ4pNuHçþ/>,, F3 "-"²´pgG Sfò0<ý`Ð@Æ|BBBA tpÐFD¨ÈBFB4pF3 ÂB€4p€èƒFDÉBBBAè(FD¨ (ÈBFB4pÂB(€4F3 p@è ƒ(FDÉ(J(J(JJ((ä€4p@( ä€4p F3 @ ( ä€4p @ (ä€4p @B€FÆ.LßNu>,, (-"¸´pF3 gG Sfò0<ýNuB´pB´pNurB‚½ñf01a3¼ÿÿ\R‚ ‚fàB€F3 `À m" lV¨èf ff<`< nF3 ¨ Nu n¨`ò n¨`æ¨ `à Q€¨ ¨è ¨NuHçF3 þBƒrB‚B€0+6+g½ñf"81gƒJCfa&`R‚\ ‚fÔ0,f2`2)aü0aüTNuÿÿHçþrB‚B€0+ @ÿn®g0½ñF3 fþ:81fþ4fþ,Ä3„HçÿþaLßÿR‚\ ‚fÀ`ÿrCúF3 aÿ~Nuþ÷Ÿü /KB†BƒB‚B€0+J@gŠB…:3`/E. ߯.a¦ÎüF3 XG½ñpfB61pg@&+gBAúdB-)$/"CHçÿþp"N@``.LßÿHçÿþ F3 aý’LßÿS@`–B€<ö`"B€<ù`B€<ø`LßÿB€8ñ`&oB€ßü `DF3 Hçÿþ*A…ÿa aý˜LßÿNsQB¯RoJEg çïSE`ò:/PF3 Nu6€Nup N@fJ…g i6pN@`` J…gJ0PfT—T—NupN@`NqT—NuHçþF3 ŸüB¯ $y(B‡* -&* °ƒg ÔøSk”`ì/J$< aÆ/BB„F3  gtR¯ ÈüD XD$y(,r@02@@gJ. Þ$Aú8B-)àHÀüF3 "|2@NVÿ¸H×ÿp"N@``L×ÿ(nBÿaþL×ÿN^` $/a" / ÞüF3 LßþJ€g |`|ÿþNu02@f(-"aVNu` NpN@Nu m"F3 ( g ( f„RB( g( fpRB(g(fdRB(gF3 (fRRB(g(fFRB(g(f4RB( g( f&RBF3 ( g( fRBNuJ(NuJ(NuJNuJ(NuHçÿþ$< BƒB„B†F3 ÈüDAÿ*A"m"$y(B‡ -* ** °…g ÔøSFgJ`î,r@2@gF3 )gHçÿþaþÊLßÿ`)fHçÿþaþ²Lßÿ‚ÿ(JBaûúLßÿNs3 Hçÿþ NpN@``LßÿNu`ø4éé' RIOLIB RO  aaH ;1FTRIO ASYST' RIOLIB SAC…RIO subroutines~2IRIOPEN IRIOOFF RIRIOCLS .IRIOPLS ŠIRIOENB nIRIODSB |IRIOSTA `IRIOOUT @)ÜF3 Hç€pa $¼B€0*å€\€2€ Kp Value to be converted ($000 - $FFF) > Entered value = = Result value. <<< Starting conversions >>> <<< Conversions done >>> *** OPEN ABORTED D/A *** -- *** CONVERSION ABORTED D/A *** -- *** CLOSE ABORTED D/A *** -- *** OPEN ABORTED A/D *** -- *** CONVERSION ABORTED A/D *** -- *** CLOSE ABORTED A/D *** -- Error code returned in D0 = Oúý2Iúüb :ü^D€Aô)HÌ)H¬Ñü)HÐ)HÄAúþ)HRAúþ0)HVAúýtNBAúþ$)HRAúþD)HVAúý^NBAúüæ)HnAúüæ)HrAúýdNBaNAúüÌa„ €m €o`¶9@ 9@¨9@¶9@ÀaÀ9|ª zü2<0Á0Ã9CDAúý2CúýJ!|DAC1!I1|p Delay between conversions > (C)onstant level (S)awtooth wave > Value to be converted ($000 - $FFF) > Number of times to do conversions > Increment for conversion value > <<< Starting conversions >>> <<< Conversions done >>> *** OPEN ABORTED *** -- *** CONVERSION ABORTED *** -- *** CLOSE ABORTED *** -- Error code returned in D0 = Oúý>Iúür :ý D€Aô)HÈ)H®Aúþ)HTAúþ,)HXAúý”NBAúþ )HTAúþ@)HXAúý~NBAúüü)HpAúüü)HtAúý„NBaâAúüâaâ €m €?o`¶9@¢9@ªAúþ")HTAúþB)HXAúý,NBAúüª)HpAúüª)HtAúý2NBa:ü Of,$zü‚"Ja’ ƒÿÿg 2ÃaÔ2Ã`ê“Ê €ü9@¬`Ò Cf"af9C0a®9|¬ zü>2:ü¢0Á0Ã`ª Sfža<9C0Aúþ)HTAúþ")HXAúüŽNBAúü )HpAúü )HtAúü”NBaòAúûòa– gÀ ƒm ƒÿo`®9CF0:ü0B zûÂ"H4:ü:2À2ÁÒB Aÿoô Aÿo’B2À2Á’B Alô“È €ü9@¬``þÌAúý@)HTAúý`)HXAúûöNBAúût)HpAúût)HtAúûüNBaZAúûZaþ Ag ƒm ƒÿÿo`°)CBAúûêCúü!I1|pAúüä)HTAúü÷)HXAúú²NBAúúž)HTAúú)HXAúúœNBAúüÔ)HTAúüÍ)HXAúú†NB` ,QÌg ,.ÌgNupNAAúû$)HTAúûD)HXAúúXNBAúùÖ)HpAúùÖ)HtAúú^NBa¼aºAúù¼a`JgÄ ƒm ƒÿÿo`²NuAúû()HTAúûH)HXAúúNBAúù†)HpAúù†)HtAúúNBaÿlaÿhAúùha NuRˆ  gøHçIúîB„BƒÁaSIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFC‡\M3151$2,'H8WIN10'**‚8"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H8WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3151$2,'H5WIN05'**‚51/4"‚5‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN05.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3151$2,'H5WIN10'**‚51/4"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN10.SI SIZESET‚SET‡1‰ENDCé‰IFC‡\M3151$2,'H5WIN12'**‚51/4"‚12‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN12.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3151$2,'H5WIN15'**‚51/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN15.SI SIZESET‚SET‡1‰ENDC4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatype‰ENDC*0*‚SetupattributemaskforharddiskonMVME315*9ATT_MASKSET‚0<SIZESET‚SET‡0‰Ifnon-zerothentheyhaveselectedadiskmedia ‰IFGE†NF315$2-1O********************************************************************************/*‚FirstfloppydiskonfirstMVME315controller*O******************************************************************************* ‰IFC‡\M3154$2,'F8DDDSI'*-*‚8"‚doubledensity,doublesided,IBMformat*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3154$2,'F8SDDSM'*2*‚8"‚singledensity,doublesided,Motorolaformat*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3154$2,'F8SDSSI'*-*‚8"‚singledensity,singlesided,IBMformat*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3154$2,'F8SDSSM'*2*‚8"‚singledensity,singlesided,Motorolaformat*“INCLUDE„&.F8SDSSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3154$2,'F5DDDSI'*1*‚51/4"‚doubledensity,doublesided,IBMformat*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC 4*ƒMakesuretheuserhasdefinedavalidmediatype. ‰IFEQ†SIZESET‰FAIL†**Invalidmediatypeéééééééé