IMD 1.17: 25/11/2014 12:19:42 82VKXBVERDOS D* BT12:0 68K VERSADOS/RMS68K OBJECT 4.5 (DS,DD 96 tpi 5.1/4" DISK) REVISED: 04/22/86 DISK 12 OF 24  BT12 82VKXBVERDOS 0420±a-=/*‘the�user's�account�number�so�each�user�has�their�own�copy.=/*K=/*�NOTE:‚Some�equate�files�are�board/system�specific�and�are�copied�by�the=/*ˆ"COPYGEN..CF"�file.=/* =COPY�\1:9995.&.BAB.EQ‘\2:\3;\4C =COPY�\1:9995.&.CCB.EQ‘\2:\3;\4C =COPY�\1:9995.&.EXE.EQ‘\2:\3;\4C =COPY�\1:9995.&.FME.EQ‘\2:\3;\4C =COPY�\1:9995.&.FMI.EQ‘\2:\3;\4C =COPY�\1:9995.&.IOE.EQ‘\2:\3;\4C!=COPY�\1:9995.&.KILL.MC�\2:\3;\4C$=COPY�\1:9995.&.KILLDRV.EQ�\2:\3;\4C$=COPY�\1:9995.&.KILLIOI.EQ�\2:\3;\4C =COPY�\1:9995.&.LV5.EQ‘\2:\3;\4C$=COPY�\1:9995.&.M300DRV.EQ�\2:\3;\4C$=COPY�\1:9995.&.M605DRV.EQ�\2:\3;\4C%=COPY�\1:9995.&.M610INTQ.EQŒ\2:\3;\4C$=COPY�\1:9995.&.M615DRV.EQ�\2:\3;\4C$=COPY�\1:9995.&.M625DRV.EQ�\2:\3;\4C =COPY�\1:9995.&.MAP.EQ‘\2:\3;\4C$=COPY�\1:9995.&.MMBPMMU.MC�\2:\3;\4C#=COPY�\1:9995.&.MMUTYP.EQŽ\2:\3;\4C =COPY�\1:9995.&.NIO.EQ‘\2:\3;\4C#=COPY�\1:9995.&.RADDRV.EQŽ\2:\3;\4C#=COPY�\1:9995.&.RIODRV.EQŽ\2:\3;\4C =COPY�\1:9995.&.STR.EQ‘\2:\3;\4C =COPY�\1:9995.&.TCB.EQ‘\2:\3;\4C =COPY�\1:9995.&.TR1.EQ‘\2:\3;\4C$=COPY�\1:9995.&.TR1RTCD.EQ�\2:\3;\4C =COPY�\1:9995.&.TST.EQ‘\2:\3;\4C$=COPY�\1:9995.&.UTILITY.MC�\2:\3;\4C=/*%=COPY�\1:9999.&.KILLEXEC.EQŒ\2:\3;\4C$=COPY�\1:9999.&.MMBPMMU.EQ�\2:\3;\4C*=COPY�\1:9999.M146818.M146818.EQ‡\2:\3;\4C&=COPY�\1:9999.M68020.CACR.EQ‹\2:\3;\4C&=COPY�\1:9999.M6840.M6840.EQ‹\2:\3;\4C(=COPY�\1:9999.M68451.M68451.EQ‰\2:\3;\4C*=COPY�\1:9999.MK68901.MK68901.EQ‡\2:\3;\4C*=COPY�\1:9999.MM58274.MM58274.EQ‡\2:\3;\4C&=COPY�\1:9999.Z8036.Z8036.EQ‹\2:\3;\4CN p,=/*L=/* COPYGEN.EXORMACS.CF - Chain file to copy all EXORMACS specific files for =/*—sysgen.+=COPY�\1:9993.EXORMACS.ACIALOC.SI†\2:\3;\4C=/*#=COPY�\1:9998.&.SYSINIT.LG�\2:\3;\4,=COPY�\1:9998.EXORMACS.CNFGDRVR.CI…\2:\3;\4C*=COPY�\1:9998.EXORMACS.IFDRVR.CI‡\2:\3;\4C+=COPY�\1:9998.EXORMACS.INITIO1.AG†\2:\3;\4C*=COPY�\1:9998.EXORMACS.SYSTEM.CI‡\2:\3;\4C=/*&=COPY�\1:9999.C4O9.SYSPAR.RO‹\2:\3;\4C'=COPY�\1:9999.EXORMACS.RMS.CIŠ\2:\3;\4C'=COPY�\1:9999.EXORMACS.RMS.LLŠ\2:\3;\4C'=COPY�\1:9999.EXORMACS.RMS.LOŠ\2:\3;\4CNNNNNy=/*L=/* COPYGEN.FHSIOS.CF - Chain file to copy all files for sysgen of FHS & IOS =COPY�\1:9998.&.FHS.LG‘\2:\3;\4C =COPY�\1:9998.&.IOS.LG‘\2:\3;\4C%=COPY�\1:9998.DEVICE.FHS.ROŒ\2:\3;\4C%=COPY�\1:9998.DEVICE.IOS.ROŒ\2:\3;\4C"=COPY�\1:9998.FHS.IXR.AG�\2:\3;\4C*=COPY�\1:9998.FHSIOS.VERSADOS.CI‡\2:\3;\4C#=COPY�\1:9998.FILE.FHS.ROŽ\2:\3;\4C#=COPY�\1:9998.FILE.IOS.ROŽ\2:\3;\4C%=COPY�\1:9998.OSLIST.FHS.SIŒ\2:\3;\4C%=COPY�\1:9998.OSLIST.IOS.SIŒ\2:\3;\4C&=COPY�\1:9998.VERSAPT.FHS.CF‹\2:\3;\4C&=COPY�\1:9998.VERSAPT.IOS.CF‹\2:\3;\4CNNN NN‚=/*C=/* COPYGEN.FMS.CF - Chain file to copy all files for sysgen of FMS!=COPY�\1:9998.&.FDTA.RO�\2:\3;\4C!=COPY�\1:9998.&.FFHS.RO�\2:\3;\4C!=COPY�\1:9998.&.FIOM.RO�\2:\3;\4C!=COPY�\1:9998.&.FIOS.RO�\2:\3;\4C =COPY�\1:9998.&.FMS.LG‘\2:\3;\4C!=COPY�\1:9998.&.FUTY.RO�\2:\3;\4C"=COPY�\1:9998.FMS.IXR.AG�\2:\3;\4C'=COPY�\1:9998.FMS.VERSADOS.CIŠ\2:\3;\4C%=COPY�\1:9998.OSLIST.FMS.SIŒ\2:\3;\4C&=COPY�\1:9998.VERSAPT.FMS.CF‹\2:\3;\4CNNNNNN‹ =/*L=/* COPYGEN.IOC.CF - Chain file to copy all files for sysgen of IOC portions=/*’for�any/all�drivers#=COPY�\1:9998.&.IOCGEN.CIŽ\2:\3;\4C#=COPY�\1:9998.&.IOCGEN.LGŽ\2:\3;\4C$=COPY�\1:9998.IOC.BEGIN.AG�\2:\3;\4C"=COPY�\1:9998.IOC.END.AG�\2:\3;\4C$=COPY�\1:9998.MACRO.DCB.SI�\2:\3;\4C(=COPY�\1:9998.MACRO.DCBDISK.SI‰\2:\3;\4C(=COPY�\1:9998.MACRO.DCBGPIB.SI‰\2:\3;\4C)=COPY�\1:9998.MACRO.DCBMTAPE.SIˆ\2:\3;\4C'=COPY�\1:9998.MACRO.DCBPRT.SIŠ\2:\3;\4C(=COPY�\1:9998.MACRO.DCBTERM.SI‰\2:\3;\4CNN NNNN” =/*C=/* COPYGEN.IOI.CF - Chain file to copy all files for sysgen of IOI =COPY�\1:9998.&.IOI.CI‘\2:\3;\4C =COPY�\1:9998.&.IOI.LG‘\2:\3;\4C =COPY�\1:9998.&.IOI.RO‘\2:\3;\4C$=COPY�\1:9998.&.ROMIOI1.AG�\2:\3;\4C%=COPY�\1:9998.&.ROMIOI90.ROŒ\2:\3;\4C$=COPY�\1:9998.EET.START.AG�\2:\3;\4C"=COPY�\1:9998.FMS.IOI.AG�\2:\3;\4C&=COPY�\1:9998.VERSAPT.IOI.CF‹\2:\3;\4CNNNNNN� =/*I=/* COPYGEN.LOADER.CF - Chain file to copy all files for sysgen of LOADER3=/*•(system�will�pick�which�MMU/NOMMU�files�to�use)$=COPY�\1:9998.&.EMHNDLR.RO�\2:\3;\4C%=COPY�\1:9998.MMU.LOADER.LGŒ\2:\3;\4C%=COPY�\1:9998.MMU.LOADER.ROŒ\2:\3;\4C*=COPY�\1:9998.MMULDR.VERSADOS.CI‡\2:\3;\4C'=COPY�\1:9998.NOMMU.LOADER.LGŠ\2:\3;\4C'=COPY�\1:9998.NOMMU.LOADER.ROŠ\2:\3;\4C,=COPY�\1:9998.NOMMULDR.VERSADOS.CI…\2:\3;\4C&=COPY�\1:9998.VERSAPT.LDR.CF‹\2:\3;\4C NNNNNN¦ =/*B=/* COPYGEN.ROOT.CF - Chain file to copy all root files for sysgen=/*#=COPY�\1:0000.&.UTILIB.ROŽ\2:\3;\4C=/*$=COPY�\1:9998.&.INITDAT.AG�\2:\3;\4C$=COPY�\1:9998.&.INITIO1.LG�\2:\3;\4C$=COPY�\1:9998.&.INITMEM.AG�\2:\3;\4C$=COPY�\1:9998.&.INITMEM.LG�\2:\3;\4C"=COPY�\1:9998.&.MTYPE.SI�\2:\3;\4C"=COPY�\1:9998.&.ROGEN.CI�\2:\3;\4C"=COPY�\1:9998.&.ROGEN.LG�\2:\3;\4C#=COPY�\1:9998.&.SYSGEN.CFŽ\2:\3;\4C$=COPY�\1:9998.&.SYSINIT.CI�\2:\3;\4C#=COPY�\1:9998.&.VALPAR.CIŽ\2:\3;\4C%=COPY�\1:9998.&.VERSADOS.CDŒ\2:\3;\4C&=COPY�\1:9998.IOC.ADDRESS.CI‹\2:\3;\4C%=COPY�\1:9998.MULT.MTYPE.SIŒ\2:\3;\4C(=COPY�\1:9998.NOLIST.SYSGEN.CF‰\2:\3;\4C&=COPY�\1:9998.SIO.ADDRESS.CI‹\2:\3;\4C%=COPY�\1:9998.STD.SYSGEN.CFŒ\2:\3;\4C*=COPY�\1:9998.VERSAPT.SYSINIT.CF‡\2:\3;\4C=/*'=COPY�\1:9999.BESTFIT.INIT.ROŠ\2:\3;\4C%=COPY�\1:9999.BUDDY.INIT.ROŒ\2:\3;\4CNNNN¯ =/*H=/* COPYGEN.SCSIDRV.CF - Chain file to copy all files for sysgen of SCSI=/*–driver�on�the�VME117$=COPY�\1:9993.&.SCSIDRV.CI�\2:\3;\4C$=COPY�\1:9993.&.SCSIDRV.LG�\2:\3;\4C$=COPY�\1:9993.&.SCSIDRV.RO�\2:\3;\4C&=COPY�\1:9998.IOC.SCSIDRV.AG‹\2:\3;\4C*=COPY�\1:9998.VERSAPT.SCSIDRV.CF‡\2:\3;\4CNNNNNN¸=/*N=/* COPYGEN.M331DRV.CF - Chain file to copy all files for sysgen of VME331/332=/*$=COPY�\1:9993.&.M331DRV.CI�\2:\3;\4C$=COPY�\1:9993.&.M331DRV.LG�\2:\3;\4C$=COPY�\1:9993.&.M331DRV.RO�\2:\3;\4C&=COPY�\1:9998.IOC.M331DRV.AG‹\2:\3;\4C*=COPY�\1:9998.VERSAPT.M331DRV.CF‡\2:\3;\4CNNNNN NÁ=/*K=/* COPYGEN.VM03.CF - Chain file to copy all VM03 specific files for sysgen#=COPY�\1:9998.&.SYSINIT.LG�\2:\3;\4(=COPY�\1:9998.VM03.CNFGDRVR.CI‰\2:\3;\4C&=COPY�\1:9998.VM03.IFDRVR.CI‹\2:\3;\4C'=COPY�\1:9998.VM03.INITIO1.AGŠ\2:\3;\4C&=COPY�\1:9998.VM03.SYSTEM.CI‹\2:\3;\4C=/*&=COPY�\1:9999.CBOF.SYSPAR.RO‹\2:\3;\4C#=COPY�\1:9999.VM03.RMS.CIŽ\2:\3;\4C#=COPY�\1:9999.VM03.RMS.LLŽ\2:\3;\4C#=COPY�\1:9999.VM03.RMS.LOŽ\2:\3;\4CNNNNNNÊ 'COPYGEN VME101 CFßß   $VME110 CFèè   $RADDRV CFññ  $VME120 CFúú  $RIODRV CF  $VMES10 CF     $SIODRV CF  $VM04 CF   $VME117 CF''  $VME122 CF00  $VME130 CF99   $VME131 CFBB   $=/*O=/* COPYGEN.VME101.CF - Chain file to copy all VME101 specific files for sysgen)=COPY�\1:9993.VME101.EPCILOC.SIˆ\2:\3;\4C=/*#=COPY�\1:9998.&.SYSINIT.LG�\2:\3;\4*=COPY�\1:9998.VME101.CNFGDRVR.CI‡\2:\3;\4C(=COPY�\1:9998.VME101.IFDRVR.CI‰\2: \3;\4C)=COPY�\1:9998.VME101.INITIO1.AGˆ\2:\3;\4C(=COPY�\1:9998.VME101.SYSTEM.CI‰\2:\3;\4C=/*&=COPY�\1:9999.C9OC.SYSPAR.RO‹\2:\3;\4C%=COPY�\1:9999.VME101.RMS.CIŒ\2:\3;\4C%=COPY�\1:9999.VME101.RMS.LLŒ\2:\3;\4C%=COPY�\1:9999.VME101.RMS.LOŒ\2:\3;\4CNNNNN×=/*O=/* COPYGEN.VME110.CF - Chain file to copy all VME110 specific files for sysgen)=COPY�\1:9993.VME110.ACIALOC.SIˆ\2:\3;\4C=/*#=COPY�\1:9998.&.SYSINIT.LG�\2:\3;\4*=COPY�\1:9998.VME110.CNFGDRVR.CI‡\2:\3;\4C(=COPY�\1:9998.VME110.IFDRVR.CI‰\2:\3;\4C)=COPY�\1:9998.VME110.INITIO1.AGˆ\2:\3;\4C(=COPY�\1:9998.VME110.SYSTEM.CI‰\2:\3;\4C=/*&=COPY�\1:9999.C9OC.SYSPAR.RO‹\2:\3;\4C%=COPY�\1:9999.VME110.RMS.CIŒ\2:\3;\4C%=COPY�\1:9999.VME110.RMS.LLŒ\2:\3;\4C%=COPY�\1:9999.VME110.RMS.LOŒ\2:\3;\4CNNNNN à=/*G=/* COPYGEN.RADDRV.CF - Chain file to copy all files for sysgen of RAD1#=COPY�\1:9992.&.RADDRV.CIŽ\2:\3;\4C#=COPY�\1:9992.&.RADDRV.LGŽ\2:\3;\4C#=COPY�\1:9992.&.RADDRV.ROŽ\2:\3;\4C#=COPY�\1:9992.&.RADIOC.SIŽ\2:\3;\4C#=COPY�\1:9992.&.RADMEM.CIŽ\2:\3;\4C#=COPY�\1:9992.&.RADMEM.AGŽ\2:\3;\4C)=COPY�\1:9998.VERSAPT.RADDRV.CFˆ\2:\3;\4CNNNNNNé =/*D=/* COPYGEN.VME120.CF - Chain file to copy all VME120 specific files=/*•for�sysgen(=COPY�\1:9993.VME120.MFPLOC.SI‰\2:\3;\4C=/*)=COPY�\1:9998.VME12X.CNFGDRVR.CI‡\2:\3;\4'=COPY�\1:9998.VME12X.IFDRVR.CI‰\2:\3;\4'=COPY�\1:9998.VME12X.SYSTEM.CI‰\2:\3;\4(=COPY�\1:9998.VME12X.INITIO1.AGˆ\2:\3;\4(=COPY�\1:9998.VME12X.SYSINIT.LGˆ\2:\3;\4=/*&=COPY�\1:9999.CBOD.SYSPAR.RO‹\2:\3;\4C%=COPY�\1:9999.VME120.RMS.CIŒ\2:\3;\4C%=COPY�\1:9999.VME120.RMS.LLŒ\2:\3;\4C%=COPY�\1:9999.VME120.RMS.LOŒ\2:\3;\4C&=COPY�\1:9999.VME12X.BOARD.EQŠ\2:\3;\4(=COPY�\1:9999.VME12X.PREINIT.ROˆ\2:\3;\4NNN NNò=/*F=/* COPYGEN.RIODRV.CF - Chain file to copy all files for sysgen of RIO#=COPY�\1:9992.&.RIODRV.CIŽ\2:\3;\4C#=COPY�\1:9992.&.RIODRV.LGŽ\2:\3;\4C#=COPY�\1:9992.&.RIODRV.ROŽ\2:\3;\4C#=COPY�\1:9992.&.RIOIOC.SIŽ\2:\3;\4C#=COPY�\1:9992.&.RIOMEM.CIŽ\2:\3;\4C#=COPY�\1:9992.&.RIOMEM.AGŽ\2:\3;\4C)=COPY�\1:9998.VERSAPT.RIODRV.CFˆ\2:\3;\4CNNNNNNû =/*O=/* COPYGEN.VMES10.CF - Chain file to copy all VMES10 specific files for sysgen#=COPY�\1:9998.&.SYSINIT.LG�\2:\3;\4*=COPY�\1:9998.VMES10.CNFGDRVR.CI‡\2:\3;\4C(=COPY�\1:9998.VMES10.IFDRVR.CI‰\2:\3;\4C)=COPY�\1:9998.VMES10.INITIO1.AGˆ\2:\3;\4C'=COPY�\1:9998.VMES10.MTYPE.SIŠ\2:\3;\4C(=COPY�\1:9998.VMES10.SYSTEM.CI‰\2:\3;\4C=/*&=COPY�\1:9999.CAOE.SYSPAR.RO‹\2:\3;\4C%=COPY�\1:9999.VMES10.RMS.CIŒ\2:\3;\4C%=COPY�\1:9999.VMES10.RMS.LLŒ\2:\3;\4C%=COPY�\1:9999.VMES10.RMS.LOŒ\2:\3;\4CNN NNNN =/*M=/* COPYGEN.SIODRV.CF - Chain file to copy all files for sysgen of SIO driver#=COPY�\1:9993.&.SIODRV.CI�\2:\3;\4C#=COPY�\1:9993.&.SIODRV.LG�\2:\3;\4C#=COPY�\1:9993.&.SIODRV.RO�\2:\3;\4C%=COPY�\1:9998.IOC.SIODRV.AG�\2:\3;\4C)=COPY�\1:9998.VERSAPT.SIODRV.CF‰\2:\3;\4CNNNNNN =/*K=/* COPYGEN.VM04.CF - Chain file to copy all VM04 specific files for sysgen#=COPY�\1:9998.&.SYSINIT.LG�\2:\3;\4(=COPY�\1:9998.VM04.CNFGDRVR.CI‰\2:\3;\4C&=COPY�\1:9998.VM04.IFDRVR.CI‹\2:\3;\4C'=COPY�\1:9998.VM04.INITIO1.AGŠ\2:\3;\4C&=COPY�\1:9998.VM04.SYSTEM.CI‹\2:\3;\4C=/*(=COPY�\1:9999.C40O44.SYSPAR.RO‰\2:\3;\4C(=COPY�\1:9999.VM04.CTRLSTAT.EQ‰\2:\3;\4C#=COPY�\1:9999.VM04.RMS.CIŽ\2:\3;\4C#=COPY�\1:9999.VM04.RMS.LLŽ\2:\3;\4C#=COPY�\1:9999.VM04.RMS.LOŽ\2:\3;\4C  NNNNNN =/*D=/* COPYGEN.VME117.CF - Chain file to copy all VME117 specific files=/*•for�sysgen(=COPY�\1:9993.VME117.SCCLOC.SI‰\2:\3;\4C=/*#=COPY�\1:9998.&.SYSINIT.LG�\2:\3;\4*=COPY�\1:9998.VME117.CNFGDRVR.CI‡\2:\3;\4C(=COPY�\1:9998.VME117.IFDRVR.CI‰\2:\3;\4C)=COPY�\1:9998.VME117.INITIO1.AGˆ\2:\3;\4C(=COPY�\1:9998.VME117.SYSTEM.CI‰\2:\3;\4C=/*(=COPY�\1:9999.C20O24.SYSPAR.RO‰\2:\3;\4C)=COPY�\1:9999.VME117.CTRLREG.EQˆ\2:\3;\4C)=COPY�\1:9999.VME117.MM58274.EQˆ\2:\3;\4C%=COPY�\1:9999.VME117.RMS.CIŒ\2:\3;\4C%=COPY�\1:9999.VME117.RMS.LLŒ\2:\3;\4C%=COPY�\1:9999.VME117.RMS.LOŒ\2:\3;\4CNNNNN  =/*D=/* COPYGEN.VME122.CF - Chain file to copy all VME122 specific files=/*•for�sysgen(=COPY�\1:9993.VME122.MFPLOC.SI‰\2:\3;\4C=/*)=COPY�\1:9998.VME12X.CNFGDRVR.CI‡\2:\3;\4'=COPY�\1:9998.VME12X.IFDRVR.CI‰\2:\3;\4'=COPY�\1:9998.VME12X.SYSTEM.CI‰\2:\3;\4(=COPY�\1:9998.VME12X.INITIO1.AGˆ\2:\3;\4(=COPY�\1:9998.VME12X.SYSINIT.LGˆ\2:\3;\4=/*&=COPY�\1:9999.CBOD.SYSPAR.RO‹\2:\3;\4C%=COPY�\1:9999.VME122.RMS.CIŒ\2:\3;\4C%=COPY�\1:9999.VME122.RMS.LLŒ\2:\3;\4C%=COPY�\1:9999.VME122.RMS.LOŒ\2:\3;\4C&=COPY�\1:9999.VME12X.BOARD.EQŠ\2:\3;\4(=COPY�\1:9999.VME12X.PREINIT.ROˆ\2:\3;\4NNNNN(=/*O=/* COPYGEN.VME130.CF - Chain file to copy all VME130 specific files for sysgen#=COPY�\1:9998.&.SYSINIT.LG�\2:\3;\4)=COPY�\1:9998.VME130.INITIO1.AGˆ\2:\3;\4C(=COPY�\1:9998.VME130.SYSTEM.CI‰\2:\3;\4C)=COPY�\1:9998.VME13X.CNFGDRVR.CI‡\2:\3;\4'=COPY�\1:9998.VME13X.IFDRVR.CI‰\2:\3;\4=/*(=COPY�\1:9999.C40O44.SYSPAR.RO‰\2:\3;\4C%=COPY�\1:9999.VME130.RMS.CIŒ\2:\3;\4C%=COPY�\1:9999.VME130.RMS.LLŒ\2:\3;\4C%=COPY�\1:9999.VME130.RMS.LOŒ\2:\3;\4C*=COPY�\1:9999.VME13X.CTRLSTAT.EQ‡\2:\3;\4CNNNNN  N1 =/*O=/* COPYGEN.VME131.CF - Chain file to copy all VME131 specific files for sysgen#=COPY�\1:9998.&.SYSINIT.LG�\2:\3;\4)=COPY�\1:9998.VME131.INITIO1.AGˆ\2:\3;\4C(=COPY�\1:9998.VME131.SYSTEM.CI‰\2:\3;\4C)=COPY�\1:9998.VME13X.CNFGDRVR.CI‡\2:\3;\4'=COPY�\1:9998.VME13X.IFDRVR.CI‰\2:\3;\4=/*(=COPY�\1:9999.C40O44.SYSPAR.RO‰\2:\3;\4C%=COPY�\1:9999.VME131.RMS.CIŒ\2:\3;\4C%=COPY�\1:9999.VME131.RMS.LLŒ\2:\3;\4C%=COPY�\1:9999.VME131.RMS.LOŒ\2:\3;\4C*=COPY�\1:9999.VME13X.CTRLSTAT.EQ‡\2:\3;\4CNNNNNN: û'VERSAPT M319DRV CFOO  $P050DRV CFXX  $M360DRV CFaa  $M300DRV CFjj  $M320DRV CFss  $M420DRV CF||  $M435DRV CF……  $M600DRV CFŽŽ  $M605DRV CF——  $M610DRV CF    $M615DRV CF©©  $M625DRV CF²²  $ACIADRV CF»»  $BEGIN CFÄÄ   $EPCIDRV CFÍÍ  $IPCDRV CFÖÖ  $MFPDRV CFßß  $RADDRV CFèè  $PIADRV CFññ  $RWINDRV CFúú  $=/*=/* VERSAPT.M319DRV.CF=/*=PATCH VERSADOS.SYH*>----------------------------------------------------------------------O�\M319DRVŽ*�Start�of�M319DRVH*<----------------------------------------------------------------------QUIT  NNNNNNNG=/*=/* VERSAPT.P050DRV.CF=/*=PATCH VERSADOS.SYH*>----------------------------------------------------------------------O�\P050DRVŽ*�Start�of�P050DRVH*<----------------------------------------------------------------------QUITNNNNNNN  P=/*=/* VERSAPT.M360DRV.CF=/*=PATCH VERSADOS.SYH*>----------------------------------------------------------------------O�\M360DRVŽ*�Start�of�M360DRVH*<----------------------------------------------------------------------QUITNNNNNNNY=/*=/* VERSAPT.M300DRV.CF=/*=PATCH VERSADOS.SYH*>----------------------------------------------------------------------O�\M300DRVŽ*�Start�of�M300DRVH*<----------------------------------------------------------------------QUITNNNNN  NNb=/*=/* VERSAPT.M320DRV.CF=/*=PATCH VERSADOS.SYH*>----------------------------------------------------------------------O�\M320DRVŽ*�Start�of�M320DRVH*<----------------------------------------------------------------------QUITNNNNNNNk=/*,=/* VERSAPT.M420DRV.CF - SASI driver patches=/*=PATCH VERSADOS.SYH*>----------------------------------------------------------------------O�\M420DRVŽ*�Start�of�M420DRVH*<----------------------------------------------------------------------QUITNN  NNNNt=/*0=/* VERSAPT.M435DRV.CF - Mag Tape Driver Patches=/*=PATCH VERSADOS.SYG*>---------------------------------------------------------------------O�\M435DRVŽ*�Start�of�M435DRVG*<---------------------------------------------------------------------QUITNNNNNN}=/*=/*ƒVERSAPT.M600DRV.CF=/*=PATCH VERSADOS.SYH*>----------------------------------------------------------------------#O�\M600DRVŽ*�Start�of�VME600�driverH*<----------------------------------------------------------------------QUITN  NNNNNN†=/*=/*ƒVERSAPT.M605DRV.CF=/*=PATCH VERSADOS.SYH*>----------------------------------------------------------------------#O�\M605DRVŽ*�Start�of�VME605�driverH*<----------------------------------------------------------------------QUITNNNNNNN�  =/*=/*ƒVERSAPT.M610DRV.CF=/*=PATCH VERSADOS.SYH*>----------------------------------------------------------------------#O�\M610DRVŽ*�Start�of�VME610�driverH*<----------------------------------------------------------------------QUITNNNNNNN˜=/*=/*ƒVERSAPT.M615DRV.CF=/*=PATCH VERSADOS.SYH*>----------------------------------------------------------------------#O�\M615DRVŽ*�Start�of�VME615�driverH*<----------------------------------------------------------------------QUITNNNNNN  N¡=/*=/*ƒVERSAPT.M625DRV.CF=/*=PATCH VERSADOS.SYH*>----------------------------------------------------------------------#O�\M625DRVŽ*�Start�of�VME625�driverH*<----------------------------------------------------------------------QUITNNNNNNNª=/*=/* VERSAPT.ACIADRV.CF=/*=PATCH VERSADOS.SYH*>----------------------------------------------------------------------O�\ACIADRVŽ*�Start�of�ACIADRVH*<----------------------------------------------------------------------QUITNNNN NNN³F=/* .VERSAPT.CF is built from VERSAPT.BEGIN.CF at sysgen time.F=/* It will contain patches to be applied to VERSADOS after the sysgenA=/*�process.‚The�.VERSAPT.CF�file�is�built�dynamically�atC=/* sysgen time depending on the configuration of your system whichC=/*�is�defined�by�.CNFGDRVR.CI�and�&.CNFGTASK.CI�files.‚TheE=/* other VERSAPT.*.CF files are copy appended to this file to createB=/*�the�final�.VERSAPT.CF�file.‚The�SUBS�command�is�run�onE=/* .VERSAPT.CF to create the .XVERSAPT.CF file whichB=/* is run after the sysgen has completed, to apply any patches to%=/* .VERSADOS.SY as required.=/*NNNNN¼ =/*7=/*‚VERSAPT.EPCIDRV.CF�-�EPCI�driver�patches�for�VME101=/*=PATCH VERSADOS.SYH*>----------------------------------------------------------------------O�\EPCIDRVŽ*�Start�of�EPCIDRVH*<----------------------------------------------------------------------QUITN NNNNNÅ=/*=/* VERSAPT.IPCDRV.CF=/*=PATCH VERSADOS.SYH*>----------------------------------------------------------------------O�\IPCDRV�*�Start�of�IPCDRVH*<----------------------------------------------------------------------QUITNNNNNNNÎ=/*=/* VERSAPT.MFPDRV.CF=/*=PATCH VERSADOS.SYH*>----------------------------------------------------------------------O�\MFPDRV�*�Start�of�MFPDRVH*<----------------------------------------------------------------------QUIT NNNNNNN×=/*=/* VERSAPT.RADDRV.CF=/*=PATCH VERSADOS.SYH*>----------------------------------------------------------------------O�\RADDRV�*�Start�of�RADDRVH*<----------------------------------------------------------------------QUITNNNNNNN à=/*=/* VERSAPT.PIADRV.CF=/*=PATCH VERSADOS.SYH*>----------------------------------------------------------------------O�\PIADRV�*�Start�of�PIADRVH*<----------------------------------------------------------------------QUITNNNNNNNé=/*=/* VERSAPT.RWINDRV.CF=/*=PATCH VERSADOS.SYH*>----------------------------------------------------------------------O�\RWINDRVŽ*�Start�of�RWINDRVH*<----------------------------------------------------------------------QUITNNNNN NNò'VERSAPT DRVS10 CF  $VM22DRV CF  $EET CF  $END CF""  $FHS CF++  $FMS CF44  $IOS CF==  $LDR CFFF  $MPCCDRV CFOO  $MPSCDRV CFXX  $MPSCSPR CFaa  $MPSCSUP CFjj  $SCSIDRV CFss  $RIODRV CF||  $IOI CF……  $SYSINIT CFŽŽ  $SIODRV CF——  $M331DRV CF    $P117DRV CF©©  $SCCDRV CF²²  $=/*9=/*‚VERSAPT.DRVS10.CF�-�TERMDRV�driver�patches�for�VME/10=/*=PATCH VERSADOS.SYH*>----------------------------------------------------------------------O�\TERMDRVŽ*�Start�of�TERMDRVH*<----------------------------------------------------------------------QUITNNNNNNÿ =/*=/* VERSAPT.VM22DRV.CF=/*=PATCH VERSADOS.SYH*>----------------------------------------------------------------------O�\VM22DRV�*�Start�of�VM22DRVH*<----------------------------------------------------------------------QUITNNNNNNN=/*=/*†VERSAPT.EET.CF=/*=PATCH VERSADOS.SYH*>----------------------------------------------------------------------O�\EETSTR�*�Start�of�EETH*<----------------------------------------------------------------------QUITNNNNNN N=/*8=/* SYSTEM MUST BE RE-BOOTED FOR PATCHES TO TAKE EFFECT.=/*=ENDNNNNNNN=/*=/*†VERSAPT.FHS.CF=/*=PATCH VERSADOS.SYH*>----------------------------------------------------------------------O�\FHSSTR�*�Start�of�FHSH*<----------------------------------------------------------------------QUITNNNN NNN#=/*=/*†VERSAPT.FMS.CF=/*=PATCH VERSADOS.SYH*>----------------------------------------------------------------------O�\FMSSTR�*�Start�of�FMSH*<----------------------------------------------------------------------QUITNNNNNNN,=/*=/*†VERSAPT.IOS.CF=/*=PATCH VERSADOS.SYH*>----------------------------------------------------------------------O�\IOSSTR�*�Start�of�IOSH*<----------------------------------------------------------------------QUITNN NNNNN5=/*=/*†VERSAPT.LDR.CF=/*=PATCH VERSADOS.SYH*>----------------------------------------------------------------------O�\LDRSTR�*�Start�of�LDRH*<----------------------------------------------------------------------QUITNNNNNNN>=/*=/* VERSAPT.MPCCDRV.CF=/*=PATCH VERSADOS.SYH*>----------------------------------------------------------------------O�\MPCCDRVŽ*�Start�of�MPCCDRVH*<----------------------------------------------------------------------QUIT NNNNNNNG=/*=/* VERSAPT.MPSCDRV.CF=/*=PATCH VERSADOS.SYH*>----------------------------------------------------------------------O�\MPSCDRVŽ*�Start�of�MPSCDRVH*<----------------------------------------------------------------------QUITNNNNNNN P=/*=/* VERSAPT.MPSCSPR.CF=/*=PATCH VERSADOS.SYH*>----------------------------------------------------------------------O�\MPSCSPRŽ*�Start�of�MPSCSPRH*<----------------------------------------------------------------------QUITNNNNNNNY=/*=/*ƒVERSAPT.MPSCSUP.CF=/*=PATCH VERSADOS.SYH*>----------------------------------------------------------------------O�\MPSCSUPŽ*�Start�of�MPSCSUPH*<----------------------------------------------------------------------QUITNNNNN NNb=/*=/* VERSAPT.SCSIDRV.CF=/*=PATCH VERSADOS.SYH*>----------------------------------------------------------------------O�\SCSIDRVŽ*�Start�of�SCSIDRVH*<----------------------------------------------------------------------QUITNNNNNNNk=/*=/* VERSAPT.RIODRV.CF=/*=PATCH VERSADOS.SYH*>----------------------------------------------------------------------O�\RIODRV�*�Start�of�RIODRVH*<----------------------------------------------------------------------QUITNNN NNNNt=/*=/*†VERSAPT.IOI.CF=/*=PATCH VERSADOS.SYH*>----------------------------------------------------------------------O�\IOCSTR�*�Start�of�IOCH*<----------------------------------------------------------------------QUITNNNNNNN}=/*=/*†VERSAPT.SYSINIT.CF=/*=PATCH VERSADOS.SYH*>----------------------------------------------------------------------O�\INTSTR�*�Start�of�INTH*<----------------------------------------------------------------------QUITN NNNNNN†=/*=/* VERSAPT.SIODRV.CF=/*=PATCH VERSADOS.SYH*>----------------------------------------------------------------------O�\SIODRVŽ*�Start�of�SIODRVH*<----------------------------------------------------------------------QUITNNNNNNN� =/*7=/*‚VERSAPT.M331DRV.CF�-�MVME331/MVME332�driver�patches=/*=PATCH VERSADOS.SYH*>----------------------------------------------------------------------O�\M331DRV�*�Start�of�M331DRVH*<----------------------------------------------------------------------QUITNNNNNN˜=/*=/* VERSAPT.P117DRV.CF=/*=PATCH VERSADOS.SYH*>----------------------------------------------------------------------O�\P117DRVŽ*�Start�of�P117DRVH*<----------------------------------------------------------------------QUITNNNNNN N¡=/*=/* VERSAPT.SCCDRV.CF=/*=PATCH VERSADOS.SYH*>----------------------------------------------------------------------O�\SCCDRVŽ*�Start�of�SCCDRVH*<----------------------------------------------------------------------QUITNNNNNNNª'EXORMACSCOPYSGENCF¿¿s  $INITIO1 AGØØ©  $CNFGDRVRCIññ{  $SYSTEM CI  ˆ  $IFDRVR CI##(  $=/*>=/*‚EXORMACS.COPYSGEN.CF‚-‚Chain�file�to�copy�files�for�SYSGEN=/*)=/*‚--‚FORCE�CATALOG�TO�BE�SET�=�EXORMACS=USE :.EXORMACS=/*D=/*†This�chainfile�copies�those�files�required�to�do�a�SYSGEN�into�a'=/*†a�specified�volume�and�user�number. =/*==/*ƒInvoke�as:„=EXORMACS.COPYSGEN.CF‚arg1,arg2,arg3,arg4,arg5 =/*…where:.=/*‰Arg1=�\1„Source�volume�nameŒ(must�specify).=/*‰Arg2=�\2„Target�volume�nameŒ(must�specify).=/*‰Arg3=�\3„Target�user�numberŒ(must�specify)-=/*‰Arg4=�\4„COPY�option�letter(s)‰(optional)=/*—B�=�both�copy�&�verify=/*—P�=�pack�files =/*—Y�=�overwrite�if�file�exists*=/*—N�=�skip�copy�if�file�existsƒ(default)*=/*–VT�=�verify�&�show�only�1st�difference=OPT N=/RX=\0=/RD=0 =/IF RX < 3…=/RD=1=/ENDIF =/IF RX > 4…=/RD=1=/ENDIF =/IF RD=0 …=/IFC�\1Š=/RD=1…=/ENDIF …=/IFC�\2Š=/RD=2…=/ENDIF …=/IFC�\3Š=/RD=3…=/ENDIF …=/IFC�\4Š=ARG�\1,\2,\3,N…=/ENDIF=/ENDIFJ=/*‚Set�Arg5�so�this�file�can't�be�rerun�directly�w/o�setting�proper�args!=ARG \1,\2,\3,\4,ARGS=OPT -N =/IF RD <> 0Mƒ=/*�INVOCATION�ERROR!�Insufficient,�null,�and/or�invalid�argument�specified!ƒ=/R?ƒ=END=/ENDIF *=/* ==== Start driver related file copyingO=/*----------------------------------------------------------------------------)=/* Copy all VM30 (MCCM) files for sysgen=/@„\1:9998.COPYGEN.VM30DRV.CFO=/*----------------------------------------------------------------------------(=/* Copy all IPC driver files for sysgen=/@„\1:9998.COPYGEN.IPCDRV.CFO=/*----------------------------------------------------------------------------,=/* Copy all driver library files for sysgen=/@„\1:9998.COPYGEN.DRVLIB.CFO=/*----------------------------------------------------------------------------)=/* Copy all ACIA driver files for sysgen=/@„\1:9998.COPYGEN.ACIADRV.CFO=/*----------------------------------------------------------------------------"=/* Copy all VM22 files for sysgen=/@„\1:9998.COPYGEN.VM22DRV.CF·DÀ(ÈO=/*----------------------------------------------------------------------------(=/* Copy all PRT driver files for sysgen=/@„\1:9998.COPYGEN.PIADRV.CFO=/*----------------------------------------------------------------------------*=/* Copy all disk related files for sysgen=/@„\1:9998.COPYGEN.DSKPARAM.CFO=/*----------------------------------------------------------------------------=/*=/**=/* ==== Start system related file copyingO=/*----------------------------------------------------------------------------/=/*‚Copy�all�EXORMACS�specific�files�for�sysgen=/@„\1:9998.COPYGEN.EXORMACS.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.CFO=/*----------------------------------------------------------------------------'=/* 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.CF O=/*----------------------------------------------------------------------------2=/*‚Copy�all�the�rest�of�the�root�files�for�sysgen=/@„\1:9998.COPYGEN.ROOT.CFO=/*----------------------------------------------------------------------------=/*4=/*†EXORMACS.COPYSGEN.CF‚completed.‰Have�a�nice�day!=/*N=/*‚No�"NOARG"�and�"=END"�because�independent�driver�release�items�may�follow!NNNNNN**ˆEXORMACS.INITIO1.AG**‚Included�files�are:*‰M6840.M6840.EQŠINCLUDE�M6840.M6840.EQ ŠSECTION�8ŠPAGE*J*‚This�code�is�needed�to�satisfy�INIT,�which�is�board-independent�and�must/*‚call�upon�us�to�do�the�board-dependent�stuff.**„Initialize�the�MMU.* ŠXDEFƒINITMMUŠXREF.S�MMUHERE INITMMU: 7ŠMOVEM.L�D0-D7/A0,-(SP)„Save�registers�we'll�blow�away. *ŠLEA„$FE2000,A0‰A0�<--�address�of�the�MMU. ,ŠIFNEƒ\MMU�If�we're�supposed�to�use�the�MMU, ;ŠMOVE.L�A0,MMUHERE‰.�Save�the�address�of�the�MMU�in�SYSPAR. ŠENDC 4ŠIFEQƒ\MMU�Else�(we're�not�supposed�to�use�the�MMU), DŠMOVEM.L�MMUFAKE(PC),D0-D7�.�Give�the�MMU�some�stuff�which�will�make*ŠMOVEM.L�D0-D7,(A0)ˆ.�it�look�transparent. ŠENDC 3ŠMOVEM.L�(SP)+,D0-D7/A0„Restore�registers�and�exit.ŠRTS  DMMUFAKEƒDC.Lƒ$0000FFFF,$00000001‚Stuff�to�put�in�MMU�to�make�it�lookŠDC.Lƒ0,0,0,0,0,0ˆtransparent. **„Start�the�timer�running.*)ŠXREFƒCRASHSAV‹These�are�found�in�SYSPAR.ŠXREF.S�EXCSTACKŠXREF.S�PTMADDRŠXREF.S�TIMESLICŠXREF.S�TIMINTVŠXREF.S�TIMINTV4 &ŠXREFƒCLOCKFRQ‹These�are�found�in�IND. ŠXREFƒTIMERAŠXREFƒTIMINTVA ŠXREFƒTIMSLIC 1ŠXDEFƒTIMERSTŒEntry�point�to�START�TIMER�routine.*1TIMERSTƒEQU„*’Entry�point�to�START�TIMER�routine.;ŠMOVE.L�TIMSLIC(PC),TIMESLIC�Set�the�sysgen�parameter�which'*¦dictates�the�#�of�timer�tics�per�time*¦slice'ŠMOVE.L�TIMERA(PC),A1†GET�TIMER�ADDRESS#ŠMOVE.L�A1,PTMADDR‰SAVE�IT�FOR�EXEC$ŠBEQ.S‚TIMER_EXIT‰BRANCH�IF�NO�TIMER)ŠPEA„TIMERBE(PC)ˆWHERE�TO�GO�ON�BUS�ERROR$ŠMOVE.W�#'BE',-(A7)ˆSET�BUS�ERR�FLAG3ŠMOVE.B�#$01,CR2SR(A1)…ALLOW�WRITE�TO�CONTROL�REG�1&ŠMOVE.B�#$01,CR13(A1)†ALL�TIMERS�RESET$ŠMOVE.L�#CLOCKFRQ,D0‡CLOCK�FREQUENCYŠDIVUƒ#4,D0ŽDIVIDE�BY�4#ŠSUB.W‚#1,D0ŽCLOCK�INTERRUPTS�AT�-1*ŠMOVE.W�TIMINTVA(PC),D1„INTERRUPT�INTERVAL ŠMOVE.W�D1,TIMINTV‰SAVE�FOR�EXECŠMULUƒ#4,D1ŽMULTIPLY�BY�4*ŠSUB.W‚#1,D1ŽSUBTRACT�1�-�TIMER�GOES�TO�-1!ŠMOVE.W�D1,TIMINTV4ˆSAVE�FOR�EXECŠLSL.W‚#8,D1ŽPUT�IN�HIGH�BYTE ÐPÙ;á)ŠADD.W‚D1,D0ŽVALUE�FOR�TIMER�3�(2�HALVES)ŠMOVEP‚D0,MSBT3(A1)‡SET�TIMER�34ŠMOVE.W�#256,D0ŒVALUE�FOR�TIMER�1�(OVERFLOW�COUNTER)ŠMOVEP‚D0,MSBT1(A1)‡SET�TIMER�18ŠMOVE.B�#$00,CR2SR(A1)…ALLOW�WRITE�TO�CONTROL�REGISTER�3;ŠMOVE.B�#$C6,CR13(A1)†T3--INTERNAL�CLOCK,INTERRUPT�ENABLED,*£OUTPUT�ENABLED,�8-BIT�MODE8ŠMOVE.B�#$01,CR2SR(A1)…ALLOW�WRITE�TO�CONTROL�REGISTER�1;ŠMOVE.B�#$00,CR13(A1)†T1--EXTERNAL�CLOCK,�ENABLE�ALL�TIMERS/ŠADDQ.L�#6,SPŽEverything�went�OK;�just�get�that'*¦bus�error�junk�off�the�stack�and�exitŠBRA.S‚TIMER_EXIT*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*‚>>>>>>>µ<<<<<<<*‚>>>>>>>•NOTICEš<<<<<<<*‚>>>>>>>µ<<<<<<<>*‚>>>>>>>…When�incorporating�any�drivers�during�SYSGEN„<<<<<<<?*‚>>>>>>>…that�require�memory�allocated�for�them�as�perƒ<<<<<<<?*‚>>>>>>>…the�driver�package�instructions�-�this�is�theƒ<<<<<<<,*‚>>>>>>>…spot�the�file(s)�go�into!!–<<<<<<<*‚>>>>>>>µ<<<<<<<=*‚>>>>>>>…This�is�also�the�spot�for�code�for�a�driver…<<<<<<<>*‚>>>>>>>…that‚requires�other�types�of�initialization,ƒ<<<<<<<0*‚>>>>>>>…such‚as�clearing�an�interrupt.‘<<<<<<<*‚>>>>>>>µ<<<<<<<*‚>>>>>>>‘MERGE�IT�HERE—<<<<<<<*<*ˆWhen�you�write�the�code�that�is�to�be�merged�here,�wrap�it*ˆaround�with�the�following:*:*ˆAt�the�beginning,�with�DRVRxOUT�referring�to�your�unique*ˆlabel,�put�this�code:*'*‹PEA„DRVRxOUT(PC)„IF�BUS�ERROR�OCCURS,*¢RETURN�OR�GO�ON�TO�NEXT*¢DRIVER'S�INITIALIZATION**‹MOVE.W�#'BE',-(A7)…SAVE�'BUS�ERROR'�FLAG*9*ˆThen�insert�the�code�to�do�what�you�need�to�do�for�this*ˆparticular�driver.**ˆAt�the�end,�put�this:***‹LEA„6(A7),A7ˆREMOVE�BUS�ERROR�FROM�STACK*DRVRxOUTƒEQU„**=*ˆIn�this�way,�if�the�code�for�one�driver�causes�a�bus�error,.*ˆthe�code�for�other�drivers�will�be�executed.*E*‚>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<G*********************************************************************** ŠENDNNN N**ˆEXORMACS.CNFGDRVR.CI*'* Configuration file for device driversO*------------------------------------------------------------------------------F* This file sets up the flags used by the "EXORMACS.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/SYSTEM�DEPENDENCIES�are�included�from�the�&.VERSADOS.CD�file.�---=*�EXORMACS.SYSTEM.CIƒadd�processor�board/system�dependencies,(*–including�local�terminals�and�printers6*�&.CNFGTASK.CIƒadd�O/S�task�configuration�for�ROM/RAMM*****************************************************************************  O*------------------------------------------------------------------------------:NOLTERMƒ=�2Œ#�of�terminals�using�ACIA�serial�ports;�max=�2IFGTˆ\NOLTERM-2ƒMSG†NOLTERM�must�be�<=�2ƒABORTENDC O*------------------------------------------------------------------------------1NOLPRT„=�1Œ#�of�local�(on-board)�printers;�max=�1 O*------------------------------------------------------------------------------=NOVM20„=�1Œ#�of�VM20…FDC�(floppy�only�disk�controller�boards)*¦uses�IPC�driver*¦(see�"&.IPCDRV.CI") IFGTˆ\NOVM207ƒNFV20$1ƒ=�2Œ#�of�floppy�disk�drives�on�1st�FDC;�max=�47ƒNFV20$2ƒ=�0Œ#�of�floppy�disk�drives�on�2nd�FDC;�max=�4 HƒVM200$1ƒ=�"'F8SDDSM'"‚Type�of�1st�floppy�disk�on�1st�FDC�board;�drive�0HƒVM201$1ƒ=�"'F8SDDSM'"‚Type�of�2nd�floppy�disk�on�1st�FDC�board;�drive�1HƒVM202$1ƒ=�"'F8SDDSM'"‚Type�of�3rd�floppy�disk�on�1st�FDC�board;�drive�2é-ò(ú'HƒVM203$1ƒ=�"'F8SDDSM'"‚Type�of�4th�floppy�disk�on�1st�FDC�board;�drive�3 HƒVM200$2ƒ=�"'F8SDDSM'"‚Type�of�1st�floppy�disk�on�2nd�FDC�board;�drive�0HƒVM201$2ƒ=�"'F8SDDSM'"‚Type�of�2nd�floppy�disk�on�2nd�FDC�board;�drive�1HƒVM202$2ƒ=�"'F8SDDSM'"‚Type�of�3rd�floppy�disk�on�2nd�FDC�board;�drive�2HƒVM203$2ƒ=�"'F8SDDSM'"‚Type�of�4th�floppy�disk�on�2nd�FDC�board;�drive�3ENDC O*------------------------------------------------------------------------------;NOVM21„=�1Œ#�of�VM21…UDC�(universal�disk�controller�boards)%*¦floppy�&�hard�disks;�two�board�set;*¦uses�IPC�driver*¦(see�"&.IPCDRV.CI") IFGTˆ\NOVM215ƒNHV21$1ƒ=�2Œ#�of�hardƒdisk�drives�on�1st�UDC;�max=�47ƒNFV21$1ƒ=�2Œ#�of�floppy�disk�drives�on�1st�UDC;�max=�45ƒNHV21$2ƒ=�0Œ#�of�hardƒdisk�drives�on�2nd�UDC;�max=�47ƒNFV21$2ƒ=�0Œ#�of�floppy�disk�drives�on�2nd�UDC;�max=�4 FƒVM210$1„=�"'FXCMD80'"‚Type�of�1st�hardƒdisk�on�1st�UDC�board;�drive�0FƒVM211$1„=�"'RMCMD16'"‚Type�of�2nd�hardƒdisk�on�1st�UDC�board;�drive�1FƒVM212$1„=�"'FXCMD80'"‚Type�of�3rd�hardƒdisk�on�1st�UDC�board;�drive�2FƒVM213$1„=�"'RMCMD16'"‚Type�of�4th�hardƒdisk�on�1st�UDC�board;�drive�3 HƒVM214$1„=�"'F8SDDSM'"‚Type�of�1st�floppy�disk�on�1st�UDC�board;�drive�4HƒVM215$1„=�"'F8SDDSM'"‚Type�of�2nd�floppy�disk�on�1st�UDC�board;�drive�5HƒVM216$1„=�"'F8SDDSM'"‚Type�of�3rd�floppy�disk�on�1st�UDC�board;�drive�6HƒVM217$1„=�"'F8SDDSM'"‚Type�of�4th�floppy�disk�on�1st�UDC�board;�drive�7 FƒVM210$2„=�"'FXLRK25'"‚Type�of�1st�hardƒdisk�on�2nd�UDC�board;�drive�0FƒVM211$2„=�" 'RMLRK25'"‚Type�of�2nd�hardƒdisk�on�2nd�UDC�board;�drive�1FƒVM212$2„=�"'FXCMD80'"‚Type�of�3rd�hardƒdisk�on�2nd�UDC�board;�drive�2FƒVM213$2„=�"'RMCMD16'"‚Type�of�4th�hardƒdisk�on�2nd�UDC�board;�drive�3 HƒVM214$2„=�"'F8SDDSM'"‚Type�of�1st�floppy�disk�on�2nd�UDC�board;�drive�4HƒVM215$2„=�"'F8SDDSM'"‚Type�of�2nd�floppy�disk�on�2nd�UDC�board;�drive�5HƒVM216$2„=�"'F8SDDSM'"‚Type�of�3rd�floppy�disk�on�2nd�UDC�board;�drive�6HƒVM217$2„=�"'F8SDDSM'"‚Type�of�4th�floppy�disk�on�2nd�UDC�board;�drive�7ENDC O*------------------------------------------------------------------------------8NOVM22„=�0Œ#�of�VM22…SMD�disk�controllers�boards�(single*¦board) IFGTˆ\NOVM222ƒNHV22$1ƒ=�0Œ#�of�hardƒdisk�drives�on�VM22;�max=�84ƒNFV22$1ƒ=�0Œ#�of�floppy�disk�drives�on�VM22;�max=�4 BƒVM220$1ƒ=�"'FXCMD80'"‚Type�of�fixed…on�1st�disk�on�1st�VM22�boardFƒVM221$1ƒ=�"'RMCMD16'"‚Type�of�removable�on�1st�disk�on�1st�VM22�boardBƒVM222$1ƒ=�"'FXCMD80'"‚Type�of�fixed…on�2nd�disk�on�1st�VM22�boardFƒVM223$1ƒ=�"'RMCMD16'"‚Type�of�removable�on�2nd�disk�on�1st�VM22�boardBƒVM224$1ƒ=�"'FXCMD80'"‚Type�of�fixed…on�3rd�disk�on�1st�VM22�boardFƒVM225$1ƒ=�"'RMCMD16'"‚Type�of�removable�on�3rd�disk�on�1st�VM22�boardBƒVM226$1ƒ=�"'FXCMD80'"‚Type�of�fixed…on�4th�disk�on�1st�VM22�boardFƒVM227$1ƒ=�"'RMCMD16'"‚Type�of�removable�on�4th�disk�on�1st�VM22�board @ƒVM228$1ƒ=�"'F8SDDSM'"‚Type�of�1st�floppy�disk�on�1st�VM22�board@ƒVM229$1ƒ=�"'F8SDDSM'"‚Type�of�2nd�floppy�disk�on�1st�VM22�board@ƒVM22A$1ƒ=�"'F5DDDSI'"‚Type�of�3rd�floppy�disk�on�1st�VM22�board@ƒVM22B$1ƒ=�"'F5DDDSI'"‚Type�of�4th�floppy�disk�on�1st�VM22�boardENDC O*------------------------------------------------------------------------------7NOVM30„=�1Œ#�of�VM30…MCCM‚(multi-channel�communications *¦boards)(*¦uses�IPC�driver;�has�1�printer�port/bd*¦(see�"&.IPCDRV.CI") IFGTˆ\NOVM30/ƒNTV30$1ƒ=�4Œ#�of�terminals�on�1st�MCCM;�max=�4.ƒNPV30$1ƒ=�1Œ#�of�printers‚on�1st�MCCM;�max=�1/ƒNTV30$2ƒ=�0Œ#�of�terminals�on�2nd�MCCM;�max=�4.ƒNPV30$2ƒ=�0Œ#�of�printers‚on�2nd�MCCM;�max=�1/ƒNTV30$3ƒ=�0Œ#�of�terminals�on�3rd�MCCM;�max=�4.ƒNPV30$3ƒ=�0Œ#�of�printers‚on�3rd�MCCM;�max=�1/ƒNTV30$4ƒ=�0Œ#�of�terminals�on�4th�MCCM;�max=�4.ƒNPV30$4ƒ=�0Œ#�of�printers‚on�4th�MCCM;�max=�1ENDC O*------------------------------------------------------------------------------**ˆEXORMACS.SYSTEM.CI*L****************************************************************************B*‚This�file�contains�all�board/system�dependencies�for�EXORMACS.Š*&*‚It�is�called�from�"&.VERSADOS.CD".¦**Ê*E*‚The�user�should�not�have�to�modify�this�file�except�under�extreme‡**‚circumstances.º*L**************************************************************************** <*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~**†ON�BOARD�RAM�ADDRESSES*>*†VMEbus�drivers�require�the�following�target�system�dependentB*†variables�to�be�defined�when�the�macro�file�DUALPORT.MC�is�used:<*†Note�that�the�ONBD$HI�parameter�may�vary�on�the�VME110�and<*†and�VME101�systems�depending�on�the�size�and�number�of�RAM<*†chips�used�on�the�processor�card.‚The�values�shown�are�the?*†minimum�requirements.�Modify�that�parameter�to�match�your�own*†system�if�different.**;ONBD$LOƒ=�$0‹Low�value�for�on-board�ram�(as�seen�by�driver)RAM$SQ„=�$0‹Difference�between�on-board�ram�address�as�seen�by*˜driver�and�device.JOFFBD$LO‚=�\ONBD$LO+\RAM$SQ�Low�value�for�on-board�ram�(as�seen�by�device)JOFFBD$HI‚=�\ONBD$HI+\RAM$SQ�High�valu�for�on-board�ram�(as�seen�by�device) FMSG‰******************************************************************MSG‰**ˆAddresses�of�timer,�etc.FMSG‰****************************************************************** !TIMER…=�$FEE040†Address�of�timer.5CLOCKFRQ‚=�1000‰Number�of�clock�ticks�per� millisecond'PANEL…=�$FE0000†Address�of�front�panel.5TRCFLAGƒ=�0ŒTrace�flag.‚Zero�implies�don't�trace.‚The/*˜setting�of�bits�in�the�TRCFLAG�parameter�will1*˜control�which�events�cause�an�entry�to�be�built*˜in�the�trace�table.*˜Bit�#�in�TRCFLAG†Event *›15‘TRAP�#1*›14‘I/O�interrupt�not�claimed*°by�user�task.*›13‘Timer�interrupt.*›12‘User�trap�(2-15)*›11‘Exception *›10‘Dispatch*œ9‘I/O�interrupt�claimed�by *°user�task*œ8‘Return�from�LOADMMU*œ7‘Simulated�interrupt6 /$*œ6‘SYSFAIL�interrupt.*FMSG‰******************************************************************.MSG‰**ƒLocal�terminal/printer�device�addresses#MSG‰**ƒShort�I/O�space�base�address&MSG‰**ƒShort�I/O�space�address�offsetsFMSG‰****************************************************************** :&VECTNOƒ=�$FFŠStarting�Vector�Number�used�by�IOC.IPCDRV.AG8LTDA$01ƒ=�$FEE011†EXORMACS�local�terminal�port�A�address8LTDA$02ƒ=�$FEE015†EXORMACS�local�terminal�port�B�address0LPDA$01ƒ=�$FEE009†EXORMACS�local�printer�address 1SIOBASEƒ=�$FF0000†Base�address�of�Short�I/O�space&DEVADDƒ=�\SIOBASE.RMS.CI�file�and�has�a�value�equal!*œto�the�initial�program�counter.*@*ˆThe�following�parameters�are�used�to�define�memory�partitions.A*ˆIf�only�partition�0�exists,�then�MEMEND2�should�be�set�to�zero.*@NOPARTSƒ=�1ŒNumber�of�memory�partitions�(needed�by�&.INITMEM.AG)AMEMEND1ƒ=�$200000†The�endƒof�partition�0�(assumed�to�start�at�0).&MEMEND2ƒ=�$0‹The�start�of�partition�1.1*˜Note:�For�VM11-2(512k)�RAM�board�set�MEMEND2�to#*ž$40000.�Jumper�board�accordingly.$MEMEND3ƒ=�$0‹The�endƒof�partition�1.:WHERLOAD‚=�0ŒMemory�address�where�boot�file�will�be�loaded6*˜If�nonzero,�VERSAdos�will�be�moved�at�initialization*˜time.=CACHEF„=�0ŒNot�used�for�the�EXORmacs�(needed�by�&.INITDAT.AG).RMS.CI*)ASN‡=�0Œ#�of�address�spaces--not�used�but!*˜needed�to�satisfy�&.INITDAT.AG. GMSG‰*******************************************************************>MSG‰*ƒCopy�the�system�initializer�into�M68XXX.INIT.RO�based�on:MSG‰*ƒthe�type�of�memory�allocation�defined�at�RMSGEN�timeMSG‰*ƒin�.RMS.CD.GMSG‰******************************************************************* =COPY‡&.MTYPE.SI,MTYPE.SI;Y IFEQˆ\MEMALOC'ƒ=COPY‡BESTFIT.INIT.RO,M68XXX.INIT.RO;YENDC IFNEˆ\MEMALOC%ƒ=COPY‡BUDDY.INIT.RO,M68XXX.INIT.RO;YENDC GMSG‰*******************************************************************=MSG‰*ƒCopy�C4O9.SYSPAR.RO�into�&.SYSPAR.RO�to�make�it�generic@MSG‰*ƒfor�.LG�file�and�possible�for�sysgening�more�than�1�systemMSG‰*ƒper�account�#GMSG‰******************************************** *********************** "=COPY‡C4O9.SYSPAR.RO,&.SYSPAR.RO;YNN**ˆEXORMACS.IFDRVR.CI*.* Conditional file for EXORmacs device driversO*------------------------------------------------------------------------------O* This file uses flags setup in the EXORMACS.CNFGDRVR.CI and EXORMACS.SYSTEM.CI0* files to conditionally include device drivers.*J* The user should not have to modify this file to include/exclude drivers.*D*„******************************************************************?*„**‚NOTICE:‚The�following�conditionals�are�order�dependent.„**3*„**‹Do�not�change�the�order!‚Local�drivers�1st.‡**9*„**‹The�order�determines�device�number�(HD00,PR,�etc)‚***„**‹for�most�items.¤**D*„*******************************************************************>*„NOTE:‚"CN00"�thru�"CN09"�reserved�for�non�VM30�(MCCM)�ports.* IFNEˆ\NOLTERMƒINCLUDE…&.ACIADRV.CIENDC* IFNEˆ\NOLPRTƒINCLUDE…&.PIAEXM.CIENDC*IFNEˆ\NOVM20+\NOVM21+\NOVM30ƒINCLUDE…&.IPCDRV.CIENDC* IFNEˆ\NOVM30?ƒ*„NOTE:‚"CNn0"�thru�"CNn3"�reserved�for�these�each�MCCM�board,+ƒ*‹where�"n"�is�the�board�number�(1,2,...).7ƒ*‹"PRn�"�is�assigned�sequentially�for�each�MCCM�board.ƒINCLUDE…&.VM30DRV.CIENDCO*------------------------------------------------------------------------------ IFNEˆ\NOVM22ƒINCLUDE…&.VM22DRV.CIENDCNN)'VM03 COPYSGENCF00¤  $INITIO1 AGQQ4§  $IFDRVR CI’’P  $SYSTEM CI››­  $CNFGDRVRCI¼¼#Ê  $ =/*:=/*‚VM03.COPYSGEN.CF‚-‚Chain�file�to�copy�files�for�SYSGEN=/*%=/*‚--‚FORCE�CATALOG�TO�BE�SET�=�VM03 =USE :.VM03=/*D=/*†This�chainfile�copies�those�files�required�to�do�a�SYSGEN�into�a'=/*†a�specified�volume�and�user�number.=/*9=/*ƒInvoke�as:„=VM03.COPYSGEN.CF‚arg1,arg2,arg3,arg4,arg5 =/*…where:.=/*‰Arg1=�\1„Source�volume�nameŒ(must�specify).=/*‰Arg2=�\2„Target�volume�nameŒ(must�specify).=/*‰Arg3=�\3„Target�user�numberŒ(must�specify)-=/*‰Arg4=�\4„COPY�option�letter(s)‰(optional)=/*—B�=�both�copy�&�verify=/*—P�=�pack�files =/*—Y�=�overwrite�if�file�exists*=/*—N�=�skip�copy�if�file�existsƒ(default)*=/*–VT�=�verify�&�show�only�1st�difference2=/*‰Arg5=�\5„include�PCDRV�driver�filesƒ(optional)=/*—PCDRV�=�include�them=OPT N=/RX=\0=/RD=0 =/IF RX < 3…=/RD=1=/ENDIF =/IF RX > 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=/*‚Set�Arg6�so�this�file�can't�be�rerun�directly�w/o�setting�proper�args!=ARG \1,\2,\3,\4,\5,ARGS=OPT -N =/IF RD <> 0Mƒ=/*�INVOCATION�ERROR!�Insufficient,�null,�and/or�invalid�argument�specified!ƒ=/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(P1(9(AO=/*----------------------------------------------------------------------------$=/* 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 VM30 (MCCM) files for sysgen=/@„\1:9998.COPYGEN.VM30DRV.CFO=/*----------------------------------------------------------------------------(=/* Copy all IPC driver files for sysgen=/@„\1:9998.COPYGEN.IPCDRV.CFO=/*----------------------------------------------------------------------------,=/* Copy all driver library files for sysgen=/@„\1:9998.COPYGEN.DRVLIB.CFO=/*----------------------------------------------------------------------------)=/* Copy all MPSC driver files for sysgen=/@„\1:9998.COPYGEN.MPSCDRV.CFO=/*----------------------------------------------------------------------------"=/* Copy all VM22 files for sysgen=/@„\1:9998.COPYGEN.VM22DRV.CFO=/*----------------------------------------------------------------------------/=/* Copy all VME435 (mag tape) files for sysgen=/@„\1:9998.COPYGEN.M435DRV.CFO=/*------------------------------------------------------------------- ---------(=/* Copy all PRT driver files for sysgen=/@„\1:9998.COPYGEN.PIADRV.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=/*----------------------------------------------------------------------------+=/*‚Copy�all�VM03�specific�files�for�sysgen=/@„\1:9998.COPYGEN.VM03.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.CFO=/*----------------------------------------------------------------------------'=/* 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=/*‚Copy�all�the�rest�of�the�root�files�for�sysgen=/@„\1:9998.COPYGEN.ROOT.CFO=/*----------------------------------------------------------------------------=/*0=/*†VM03.COPYSGEN.CF‚completed.‰Have�a�nice�day!=/*N=/*‚No�"NOARG"�and�"=END"�because�independent�driver�release�items�may�follow!NNNNNN N5INITIO„IDNT‚45,0�RMS68K�I/O�initializer�for�the�VM03.O*******************************************************************************O*******************************************************************************O**********************************************************************************É***E***…ROUTINE:‚INITIO�--�RMS68K�I/O�INITIALIZER�FOR�THE�VM03�BOARD.†******É***J***…ENVIRONMENT:‚Part�of�the�RMS68K�exec�for�the�Motorola�68000�family.***(***‡Copyright�1983�by�Motorola,�Inc.¢******É***D***…FUNCTION:‚Routines�from�this�module�are�called�by�the�RMS68K‡***E***‡routine�INIT�during�system�initialization.‚All�board-specific„***.***‡initialization�is�done�in�this�module.œ******É***G***…NOTES:‚This�module�is�SUBSed,�ASMed,�and�LINKed�at�SYSGEN�time.„***?***‡All�modules�will�run�at�level�7�and�in�supervisor�mode.‹******É***O*******************************************************************************O*******************************************************************************O*^***************************************************************************** *,*‚Revision�history�(add�new�changes�to�top).*…Date†Author‚ChangesI*…--------‚------‚-------------------------------------------------------A*…10/29/85ƒCBS„Changed�the�way�we�go�to�KILLER�to�use�KILL.EXECT0*—macro.8*†1/28/85ƒSJF„Changed�MMU�initialization�to�look�at�\MMU*…10/13/83ƒSJF„Initial�writing.?*†1/10/84ƒMSL„Verify�that�UIP�(update-in-progress)�bit�is�reset&*—before�reading�real�time�clock�chip.* * *‚XDEF's.*,ŠXDEFƒINITMMUŒRoutine�to�initialize�the�MMU.,ŠXDEFƒTIMERSTŒRoutine�to�start�up�the�timer.3ŠXDEFƒINITIO�Routine�to�set�up�all�the�other�board-*§specific�hardware. * *‚XREF's.* *…Routines:*…Parameters�from�INITDAT:-ŠXREFƒTIMSLICŒ#�of�timer�tics�per�time�slice.+ŠXREFƒTIMERA�Addr�of�timer�chip�(MC146818).4ŠXREFƒTIMINTVA‹#�of�milliseconds�between�timer�tics.4ŠXREFƒCLOCKFRQ‹Frequency�of�clock�(to�set�up�timer).*…SYSPAR�variables:I3RSZHb?j rAz2‚6ŠXREF.S�MMUHEREŒAddr�of�MMU;�0�if�we're�not�using�one.0ŠXREF.S�FRST451ŒAddr�of�first�MMU�in�the�system./ŠXREF.S�LAST451ŒAddr�of�last‚MMU�in�the�system.7ŠXREF.S�CURR451ŒPtr�to�MMU�LOADMMU�should�look�at�next.7ŠXREF.S�CURRSD�Current�segment�descriptor�#�in�the�MMU.7ŠXREF.S�DPRVAO�Dual-Ported�Ram�Versabus�Address�Offset.ŠXREF.S�DATE�Date.0ŠXREF.S�TIMESLIC‹#�of�timer�tics�per�time�slice.7ŠXREF.S�TIMINTVŒTime�interval�between�timer�interrupts..ŠXREF.S�PTMADDRŒAddr�of�timer�chip�(MC146818).ŠXREF.S�TIME_LEFT ŠXREF.S�NSEŠXREF.S�MIDNIGHT *„Others:.ŠXREFƒCRASHSAV‹Place�to�SAVE�info�if�we�CRASH.  **‚Included�files:**‰&.UTILITY.MC*‰M68451.M68451.EQ*‰M146818.M146818.EQ *‰&.KILL.MC*‰&.KILLEXEC.EQ *‰&.STR.EQ*ŠNOLISTŠINCLUDE�&.UTILITY.MCŠINCLUDE�M68451.M68451.EQŠINCLUDE�M146818.M146818.EQŠINCLUDE�&.KILL.MCŠINCLUDE�&.KILLEXEC.EQŠINCLUDE�&.STR.EQŠLIST‰PAGE ŠSECTION�8ŠOPT„BRSO*******************************************************************************2*ˆDATE�CONVERSIONS�FROM�ONE�BINARY�FORM�TO�ANOTHER*Ç6*ˆORDINAL�DATE�-->�DAY�NUMBER�WHERE�DAY�1�=�JAN�1�1980***ˆCALL *’BSR‡DATEGO*¦BINARY�GREGORIAN�-�YYYYMMDD*§TO*¦BINARY�ORDINALƒ-�DAY�NUMBER*ˆINPUT'*’D0�=�DATE�TO�BE�CONVERTED�--�YYYYMMDD**ˆOUTPUT#*’D0�=�CONVERTED�DATE‡--�DAY�NUMBER*O**********************************************************************************‰NON-LEAP�DAYS�BEFORE�TABLE*Ç‚,,F*‚Distance�is�S�for�short�branches,�L�for�long�branches,�or�nothing�if*‚the�default�will�do.6*‚The�byte�to�check�is�treated�as�an�unsigned�integer.*CHECK_RANGE MACRO ŠCMP.B‚\2,\1ŠBLO.\0�RANGE_ERR ŠCMP.B‚\3,\1ŠBHI.\0�RANGE_ERRŠENDM  TIMERST:E‰MOVE.W�TIMSLIC(PC),TIMESLIC‚#�TIMER�INTERRUPTS�BEFORE�TASK�INTERRUPT'‰MOVE.L�TIMERA(PC),A1‡GET�TIMER�ADDRESS#‰MOVE.L�A1,PTMADDR ŠSAVE�IT�FOR�EXEC!‰BEQ.L‚TIMERBE�BRANCH�IF�NO�TIMER)‰PEA„TIMERBE(PC)‰WHERE�TO�GO�ON�BUS�ERROR$‰MOVE.W�#'BE',-(A7)‰SET�BUS�ERR�FLAG*4*ˆGet�system�time�and�date�from�battery�backed�timer*‰MOVE.L„#1800,D1ŒTimeout�countN:UIP_LOOP�BTST†#7,REGA(A1)‰Wait�for�UIP�bit�to�reset�before#‰BEQ.S…UIP_OKAYŒreading�clock�chip.4‰DBRA†D1,UIP_LOOP‰If�battery�is�dead,�we'll�timeout,$‰BRA.L…RANGE_ERR‹and�always�go�here.UIP_OKAY*‰CLR.L…D1’Prepare�for�following�short�load'‰MOVE.B„HRS(A1),D1ŠGet�hours�from�timerŠCHECK_RANGE.L�D1,#0,#230‰MOVE.L„#3600*1000,D2‡Addend�is�one�hour's�msecs+‰CLR.L…D0’Calculation�will�take�place�in�D0NNNNNN*‰BRA.S…CALCLOOPŒStart�the�calculation�loopCALCHRS)‰ADD.L…D2,D0�Add�one�hour's�msecs�to�timeCALCLOOP*‰DBRA†D1,CALCHRSŠLoop�until�hours�computed*‰CLR.W…D1’Prepare�for�following�short�load*‰MOVE.B„MINS(A1),D1‰Get�minutes�from�timerŠCHECK_RANGE�D1,#0,#59)‰MULU.W„#60,D1ŽConvert�minutes�to�seconds*‰CLR.L…D2’Prepare�for�following�short�load*‰MOVE.B„SECS(A1),D2‰Get�seconds�from�timerŠCHECK_RANGE�D2,#0,#59‰ADD.L…D2,D1�D1=total�seconds‰MULU.W„#1000,D1ŒD1=total�msecs!‰ADD.L…D1,D0�D0=grand�total�msecs‰ADD.L…TIME_LEFT,D0 ‰MOVE.L„D0,NSEŽStore�it�for�exec‰CLR.L…MIDNIGHT (‰CLR.L…D0’Prepare�to�form�gregorian�date'‰MOVE.B„YEAR(A1),D0‰Get�year�from�timerŠCHECK_RANGE�D0,#0,#99‰ADD.W…#1900,D0ŒYear=1900+YY‰SWAP†D0’D0=YYYY0000 ‰MOVE.B„MONTH(A1),D0ˆD0=YYYY00MMŠCHECK_RANGE�D0,#1,#12‰LSL.W…#8,D0�D0=YYYYMM00"‰MOVE.B„DAYOMTH(A1),D0†D0=YYYYMMDDŠCHECK_RANGE�D0,#1,#31 *I*‚The�time�and�date�look�reasonable,�so�let's�go�ahead�and�keep�those�forG*‚our�own�(the�chip�must�not�have�lost�power�since�last�time).‚We�can'tI*‚tell�for�sure�whether�the�chip�lost�power,�even�though�there's�a�bit�inJ*‚the�chip�that�says�so,�because�the�bug�has�already�read�the�information,*‚making�it�unavailable�to�us.* ‰BSR.L…DATEGOŽConvert�to�ordinal!‰MOVE.L„D0,DATE�Give�date�to�exec ŠBRA.S‚GO_TIMER *H*‚If�we�come�here,�one�of�the�fields�read�from�the�clock�chip�is�whacko.*‚Set�system�time�and�day�to�0.*1RANGE_ERR�MOVE.L�TIME_LEFT,NSE†Time�of�day�<--�0.ŠCLR.L‚MIDNIGHTŠM OVE.L�#0,DATEŒDate�<--�0. **ˆNow�start�timer�ticking*KGO_TIMER�MOVEƒTIMINTVA(PC),TIMINTV‚Save�timer�interrupt�interval�in�SYSPAR.4‰MOVE.B�#$A,REGA(A1)ˆSELECT�PERIODIC�ACTIVATION�RATE0‰MOVE.B�REGC(A1),D0‰RESET�ANY�PENDING�INTERRUPTS&‰MOVE.B�#$46,REGB(A1)‡ENABLE�THE�TIMER.‰ADD.L‚#6,A7�REMOVE�'BE'�AND�BUS�ERROR�ADDRESS‰RTS˜BACK�TO�INIT*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*‚>>>>>>>µ<<<<<<<*‚>>>>>>>•NOTICEš<<<<<<<*‚>>>>>>>µ<<<<<<<>*‚>>>>>>>…When�incorporating�any�drivers�during�SYSGEN„<<<<<<<?*‚>>>>>>>…that�require�memory�allocated�for�them�as�perƒ<<<<<<<?*‚>>>>>>>…the�driver�package�instructions�-�this�is�theƒ<<<<<<<,*‚>>>>>>>…spot�the�file(s)�go�into!!–<<<<<<<*‚>>>>>>>µ<<<<<<<=*‚>>>>>>>…This�is�also�the�spot�for�code�for�a�driver…<<<<<<<>*‚>>>>>>>…that‚requires�other�types�of�initialization,ƒ<<<<<<<0*‚>>>>>>>…such‚as�clearing�an�interrupt.‘<<<<<<<*‚>>>>>>>µ<<<<<<<*‚>>>>>>>‘MERGE�IT�HERE—<<<<<<<*<*ˆWhen�you�write�the�code�that�is�to�be�merged�here,�wrap�it*ˆaround�with�the�following:*:*ˆAt�the�beginning,�with�DRVRxOUT�referring�to�your�unique*ˆlabel,�put�this�code:*'*‹PEA„DRVRxOUT(PC)„IF�BUS�ERROR�OCCURS,*¢RETURN�OR�GO�ON�TO�NEXT*¢DRIVER'S�INITIALIZATION**‹MOVE.W�#'BE',-(A7)…SAVE�'BUS�ERROR'�FLAG*9*ˆThen�insert�the�code�to�do�what�you�need�to�do�for�this*ˆparticular�driver.**ˆAt�the�end,�put�this:***‹LEA„6(A7),A7ˆREMOVE�BUS�ERROR�FROM�STACK*DRVRxOUTƒEQU„**=*ˆIn�this�way,�if�the�code�for�one�driver�causes�a�bus�error,.*ˆthe�code�for�other�drivers�will�be�executed.*E*‚>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<G*********************************************************************** ‰ENDNN NN**ˆVM03.IFDRVR.CI*** Conditional file for VM03 device driversO*------------------------------------------------------------------------------G* This file uses flags setup in the VM03.CNFGDRVR.CI and VM03.SYSTEM.CI0* files to conditionally include device drivers.*J* The user should not have to modify this file to include/exclude drivers.*D*„******************************************************************?*„**‚NOTICE:‚The�following�conditionals�are�order�dependent.„**3*„**‹Do�not�change�the�order!‚Local�drivers�1st.‡**9*„**‹The�order�determines�device�number�(HD00,PR,�etc)‚***„**‹for�most�items.¤**D*„*******************************************************************>*„NOTE:‚"CN00"�thru�"CN09"�reserved�for�non�VM30�(MCCM)�ports.* IFNEˆ\NOLTERMƒINCLUDE…&.MPSCV03.CIENDC* IFNEˆ\NVME400ƒINCLUDE…&.MPSC400.CIENDC* IFNEˆ\NVME410ƒINCLUDE…&.PIA410.CIENDC*IFNEˆ\NOVM20+\NOVM21+\NOVM30ƒINCLUDE…&.IPCDRV.CIENDC* IFNEˆ\NOVM30?ƒ*„NOTE:‚"CNn0"�thru�"CNn3"�reserved�for�these�each�MCCM�board,+ƒ*‹where�"n"�is�the�board�number�(1,2,...).7ƒ*‹"PRn�"�is�assigned�sequentially�for�each�MCCM�board.ƒINCLUDE…&.VM30DRV.CIENDCO*------------------------------------------------------------------------------ IFNEˆ\NOVM22ƒINCLUDE…&.VM22DRV.CIENDC* IFNEˆ\NORWINƒINCLUDE…&.RWINDRV.CIENDC* IFNEˆ\NVME435ƒINCLUDE…&.M435DRV.CIENDC* IFNEˆ\NVME600ƒINCLUDE…&.M600DRV.CIENDC* IFNEˆ\NVME605ƒINCLUDE…&.M605DRV.CIENDC*IFNEˆ\NVME610+\NVME620ƒINCLUDE…&.M610DRV.CIENDC* IFNEˆ\NVME615ƒINCLUDE…&.M615DRV.CIENDC* IFNEˆ\NVME625ƒINCLUDE…&.M625DRV.CIENDC* IFNEˆ\NRADƒINCLUDE…&.RADDRV.CIENDC* IFNEˆ\NRIOƒINCLUDE…&.RIODRV.CIENDCNŠQ**ˆVM03.SYSTEM.CI*L****************************************************************************>*‚This�file�contains�all�board/system�dependencies�for�VM03.Ž*&*‚It�is�called�from�"&.VERSADOS.CD".¦**Ê*E*‚The�user�should�not�have�to�modify�this�file�except�under�extreme‡**‚circumstances.º*L**************************************************************************** <*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~**†ON�BOARD�RAM�ADDRESSES*>*†VMEbus�drivers�require�the�following�target�system�dependentB*†variables�to�be�defined�when�the�macro�file�DUALPORT.MC�is�used:<*†Note�that�the�ONBD$HI�parameter�may�vary�on�the�VME110�and<*†and�VME101�systems�depending�on�the�size�and�number�of�RAM<*†chips�used�on�the�processor�card.‚The�values�shown�are�the?*†minimum�requirements.�Modify�that�parameter�to�match�your�own*†system�if�different.**;ONBD$LOƒ=�$0‹Low�value�for�on-board�ram�(as�seen�by�driver)RAM$SQ„=�$0‹Difference�between�on-board�ram�address�as�seen�by*˜driver�and�device.JOFFBD$LO‚=�\ONBD$LO+\RAM$SQ�Low�value�for�on-board�ram�(as�seen�by�device)JOFFBD$HI‚=�\ONBD$HI+\RAM$SQ�High�valu�for�on-board�ram�(as�seen�by�device) FMSG‰******** **********************************************************MSG‰**ˆAddresses�of�timer,�etc.FMSG‰****************************************************************** !TIMER…=�$F80081†Address�of�timer.5CLOCKFRQ‚=�0800‰Number�of�clock�ticks�per�millisecond"PANEL…=�$0‹Address�of�front�panel.5TRCFLAGƒ=�0ŒTrace�flag.‚Zero�implies�don't�trace.‚The/*˜setting�of�bits�in�the�TRCFLAG�parameter�will1*˜control�which�events�cause�an�entry�to�be�built*˜in�the�trace�table.*˜Bit�#�in�TRCFLAG†Event *›15‘TRAP�#1*›14‘I/O�interrupt�not�claimed*°by�user�task.*›13‘Timer�interrupt.*›12‘User�trap�(2-15)*›11‘Exception *›10‘Dispatch*œ9‘I/O�interrupt�claimed�by *°user�task*œ8‘Return�from�LOADMMU*œ7‘Simulated�interrupt*œ6‘SYSFAIL�interrupt.“7œ/¤,¬*=HOGMODEƒ=�0ŒSpecifies�whether�or�not�you�want�the�VM03�to�hog2*˜the�VERSAbus�(which�allows�it�to�run�faster�when3*˜accessing�the�VERSAbus).‚This�may�ONLY�be�used�if3*˜there�are�no�other�cards�in�the�system�capable�of**˜becoming�bus�master!‚If�in�doubt,�use�0.*š0�=�don't�hog�the�bus.0*š1�=�hog�the�bus�(no�other�intelligent�boards).*?SYSFAILƒ=�0ŒDetermines�whether�or�not�the�operating�system�will5*˜be�interrupted�when�SYSFAIL�is�asserted�on�the�bus.2*˜Some�intelligent�boards�will�assert�SYSFAIL�when0*˜they�experience�a�failure�of�some�kind.‚If�you5*˜have�such�boards�in�the�system,�AND�THE�DRIVERS�FOR3*˜THESE�BOARDS�HAVE�SYSFAIL�HANDLERS,�then�you�will2*˜probably�want�SYSFAIL�interrupts�enabled.‚If�the4*˜appropriate�SYSFAIL�handlers�are�not�written,�then5*˜taking�a�SYSFAIL�interrupt�will�hang�up�the�system,0*˜so�you�would�want�SYSFAIL�interrupts�disabled.!*š0�=�disable�SYSFAIL�interrupts. *š1�=‚enable�SYSFAIL�interrupts.*FMSG‰******************************************************************.MSG‰**ƒLocal�terminal/printer�device�addresses#MSG‰**ƒShort�I/O�space�base�address&MSG‰**ƒShort�I/O�space�address�offsetsFMSG‰****************************************************************** <&VECTNOƒ=�$FFŠStarting�Vector�Number‚(used�by�IOC.IPCDRV.AG)4LTDA$01ƒ=�$F80065†VM03�local�terminal�port�A�address 1SIOBASEƒ=�$FF0000†Base�address�of�Short�I/O�space&DEVADDƒ=�\SIOBASE****************************************************************‰Vector�numbers£**>**************************************************************-IOCVEC1ƒ=�$49ŠI/O�channel�interrupt�1�vector.-IOCVEC2ƒ=�$4AŠI/O�channel�interrupt�2�vector.-IOCVEC3ƒ=�$4BŠI/O�channel�interrupt�3�vector.-IOCVEC4ƒ=�$4CŠI/O�channel�interrupt�4�vector.*IOCLVL1ƒ=�3ŒI/O�channel�interrupt�1�level.*IOCLVL2ƒ=�4ŒI/O�channel�interrupt�2�level.*IOCLVL3ƒ=�5ŒI/O�channel�interrupt�3�level.*IOCLVL4ƒ=�6ŒI/O�channel�interrupt�4�level. FMSG‰******************************************************************3MSG‰**…Descriptive�info�about�this�operating�systemFMSG‰****************************************************************** 6TIMSLICƒ=�2ŒNumber�of�timer�interrupts�per�time�slice.=TIMINTVƒ=�10‹Number�of�milliseconds�between�timer�interrupts.?ROMEADDR‚=�$0‹ROM�end�address�--�defined�by�user�for�a�ROMmable,*œ system.‚Set�to�$0�if�not�a�ROMable�system.-*œThe�ROM�start�address�(ROMSADDR)�is�defined3*œin�the�.RMS.CI�file�and�has�a�value�equal!*œto�the�initial�program�counter.@*ˆThe�following�parameters�are�used�to�define�memory�partitions.A*ˆIf�only�partition�0�exists,�then�MEMEND2�should�be�set�to�zero.*@NOPARTSƒ=�1ŒNumber�of�memory�partitions�(needed�by�&.INITMEM.AG)AMEMEND1ƒ=�$200000†The�endƒof�partition�0�(assumed�to�start�at�0).&MEMEND2ƒ=�$0‹The�start�of�partition�1.$MEMEND3ƒ=�$0‹The�endƒof�partition�1.:WHERLOAD‚=�0ŒMemory�address�where�boot�file�will�be�loaded6*˜If�nonzero,�VERSAdos�will�be�moved�at�initialization*˜time.4NVME316ƒ=�0ŒNot�used�by�VM03�(needed�for�SYSINIT.CI)5CACHEF„=�0ŒNot�used�by�VM03�(needed�for�&.INITDAT.AG)3ASMTYPEƒ=�0ŒType�of�assembler�to�use�for�INITIO1.AG *œ0�-�Use�ASM*œ1�-�Use�ASM020 EMSG‰*****************************************************************)MSG‰**‚Parameters�about�table�sizes,�etc.EMSG‰***************************************************************** 'PAGESIZE‚=�\PGSIZE†From�.RMS.CI*+ASN‡=�127Š#�of�address�spaces--not�used�but!*˜needed�to�satisfy�&.INITDAT.AG. GMSG‰*******************************************************************>MSG‰*ƒCopy�the�system�initializer�into�M68XXX.INIT.RO�based�on:MSG‰*ƒthe�type�of�memory�allocation�defined�at�RMSGEN�timeMSG‰*ƒin�.RMS.CD.GMSG‰******************************************************************* =COPY‡&.MTYPE.SI,MTYPE.SI;Y IFEQˆ\MEMALOC'ƒ=COPY‡BESTFIT.INIT.RO,M68XXX.INIT.RO;YENDC IFNEˆ\MEMALOC%ƒ=COPY‡BUDDY.INIT.RO,M68XXX.INIT.RO;YENDC GMSG‰*******************************************************************=MSG‰*ƒCopy�CBOF.SYSPAR.RO�into�&.SYSPAR.RO�to�make�it�genericAMSG‰*ƒfor�.LG�files�and�possible�for�sysgening�more�than�1�systemMSG‰*ƒper�account�#GMSG‰******************************************************************* "=COPY‡CBOF.SYSPAR.RO,&.SYSPAR.RO;YNNNN**ˆVM03.CNFGDRVR.CI*'* Configuration file for device driversO*------------------------------------------------------------------------------B* This file sets up the flags used by the "VM03.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/SYSTEM�DEPENDENCIES�are�included�from�the�&.VERSADOS.CD�file.�---9*�VM03.SYSTEM.CIƒadd�processor�board/system�dependencies,(*–including�local�terminals�and�printers6*�&.CNFGTASK.CI„add�O/S�task�configura tion�for�ROM/RAMM*****************************************************************************  O*------------------------------------------------------------------------------ANOLTERMƒ=�2Œ#�of�terminals�using�VM03�(7201)�serial�ports;�max=�2 O*------------------------------------------------------------------------------2NORWIN„=�0Œ#�of�RWIN1„Winchester�controller�boards* IFGTˆ\NORWIN)ƒCONTWIN1‚=�"2"Š1st�RWIN1�is�controller�28ƒNHRWIN$1‚=�0Œ#�of�hardƒdisk�drives�on�1st�RWIN1;�max=�2:ƒNFRWIN$1‚=�0Œ#�of�floppy�disk�drives�on�1st�RWIN1;�max=�2BƒRWIN0$1ƒ=�"'H5WIN40'"‚Type�of�1st�hardƒdisk�on�1st�RWIN1,�drive�0BƒRWIN1$1ƒ=�"'H5WIN40'"‚Type�of�2nd�hardƒdisk�on�1st�RWIN1,�drive�1DƒRWIN2$1ƒ=�"'F5DDDSI'"‚Type�of�1st�floppy�disk�on�1st�RWIN1,�drive�2DƒRWIN3$1ƒ=�"'F5DDDSI'"‚Type�of�2nd�floppy�disk�on�1st�RWIN1,�drive�3 )ƒCONTWIN2‚=�"5"Š2nd�RWIN1�is�controller�58ƒNHRWIN$2‚=�0Œ#�of�hardƒdisk�drives�on�2nd�RWIN1;�max=�2:ƒNFRWIN$2‚=�0Œ#�of�floppy�disk�drives�on�2nd�RWIN1;�max=�2´*½-Å+Í1ÕBƒRWIN0$2ƒ=�"'H5WIN40'"‚Type�of�1st�hardƒdisk�on�2nd�RWIN1,�drive�0BƒRWIN1$2ƒ=�"'H5WIN40'"‚Type�of�2nd�hardƒdisk�on�2nd�RWIN1,�drive�1DƒRWIN2$2ƒ=�"'F5DDDSI'"‚Type�of�1st�floppy�disk�on�2nd�RWIN1,�drive�2DƒRWIN3$2ƒ=�"'F5DDDSI'"‚Type�of�2nd�floppy�disk�on�2nd�RWIN1,�drive�3ƒ*Gƒ*…NOTE:‚You�can�not�mix�5-1/4"�and�8"�floppies.‚Pick�one�or�the�other.ƒ*ENDC O*------------------------------------------------------------------------------=NOVM20„=�0Œ#�of�VM20…FDC�(floppy�only�disk�controller�boards) *¦two�board�set;�uses�IPC�driver*¦(see�"&.IPCDRV.CI") IFGTˆ\NOVM207ƒNFV20$1ƒ=�0Œ#�of�floppy�disk�drives�on�1st�FDC;�max=�47ƒNFV20$2ƒ=�0Œ#�of�floppy�disk�drives�on�2nd�FDC;�max=�4 ?ƒVM200$1ƒ=�"'F8SDDSM'"‚Type�of�1st�floppy�disk�on�1st�FDC�board?ƒVM201$1ƒ=�"'F8SDDSM'"‚Type�of�2nd�floppy�disk�on�1st�FDC�board?ƒVM202$1ƒ=�"'F8SDDSM'"‚Type�of�3rd�floppy�disk�on�1st�FDC�board?ƒVM203$1ƒ=�"'F8SDDSM'"‚Type�of�4th�floppy�disk�on�1st�FDC�board ?ƒVM200$2ƒ=�"'F8SDDSM'"‚Type�of�1st�floppy�disk�on�2nd�FDC�board?ƒVM201$2ƒ=�"'F8SDDSM'"‚Type�of�2nd�floppy�disk�on�2nd�FDC�board?ƒVM202$2ƒ=�"'F8SDDSM'"‚Type�of�3rd�floppy�disk�on�2nd�FDC�board?ƒVM203$2ƒ=�"'F8SDDSM'"‚Type�of�4th�floppy�disk�on�2nd�FDC�boardENDC O*------------------------------------------------------------------------------;NOVM21„=�1Œ#�of�VM21…UDC�(universal�disk�controller�boards)%*¦floppy�&�hard�disks;�two�board�set;*¦uses�IPC�driver*¦(see�"&.IPCDRV.CI") IFGTˆ\NOVM215ƒNHV21$1ƒ=�2Œ#�of�hardƒdisk�drives�on�1st�UDC;�max=�47ƒNFV21$1ƒ=�2Œ#�of�floppy�disk�drives�on�1st�UDC;�max=�45ƒNHV21$2ƒ=�0Œ#�of�hardƒdisk�drives�on�2nd�UDC;�max=�47ƒNFV21$2ƒ=�0Œ#�of�floppy�disk�drives�on�2nd�UDC;�max=�4 =ƒVM210$1ƒ=�"'FXLRK25'"‚Type�of�1st�hardƒdisk�on�1st�UDC�board=ƒVM211$1ƒ=�"'RMLRK25'"‚Type�of�2nd�hardƒdisk�on�1st�UDC�board=ƒVM212$1ƒ=�"'FXCMD80'"‚Type�of�3rd�hardƒdisk�on�1st�UDC�board=ƒVM213$1ƒ=�"'RMCMD16'"‚Type�of�4th�hardƒdisk�on�1st�UDC�board ?ƒVM214$1ƒ=�"'F8SDDSM'"‚Type�of�1st�floppy�disk�on�1st�UDC�board?ƒVM215$1ƒ=�"'F8SDDSM'"‚Type�of�2nd�floppy�disk�on�1st�UDC�board?ƒVM216$1ƒ=�"'F8SDDSM'"‚Type�of�3rd�floppy�disk�on�1st�UDC�board?ƒVM217$1ƒ=�"'F8SDDSM'"‚Type�of�4th�floppy�disk�on�1st�UDC�board =ƒVM210$2ƒ=�"'FXLRK25'"‚Type�of�1st�hardƒdisk�on�2nd�UDC�board=ƒVM211$2ƒ=�"'RMLRK25'"‚Type�of�2nd�hardƒdisk�on�2nd�UDC�board=ƒVM212$2ƒ=�"'FXCMD80'"‚Type�of�3rd�hardƒdisk�on�2nd�UDC�board=ƒVM213$2ƒ=�"'RMCMD16'"‚Type�of�4th�hardƒdisk�on�2nd�UDC�board ?ƒVM214$2ƒ=�"'F8SDDSM'"‚Type�of�1st�floppy�disk�on�2nd�UDC�board?ƒVM215$2ƒ=�"'F8SDDSM'"‚Type�of�2nd�floppy�disk�on�2nd�UDC�board?ƒVM216$2ƒ=�"'F8SDDSM'"‚Type�of�3rd�floppy�disk�on�2nd�UDC�board?ƒVM217$2ƒ=�"'F8SDDSM'"‚Type�of�4th�floppy�disk�on�2nd�UDC�boardENDC O*----------------------------- -------------------------------------------------8NOVM22„=�1Œ#�of�VM22…SMD�disk�controllers�boards�(single*¦board) IFGTˆ\NOVM222ƒNHV22$1ƒ=�2Œ#�of�hardƒdisk�drives�on�VM22;�max=�84ƒNFV22$1ƒ=�4Œ#�of�floppy�disk�drives�on�VM22;�max=�4 >ƒVM220$1ƒ=�"'FXCMD80'"‚Type�of�1st�hardƒdisk�on�1st�VM22�board>ƒVM221$1ƒ=�"'RMCMD16'"‚Type�of�2nd�hardƒdisk�on�1st�VM22�board>ƒVM222$1ƒ=�"'FXCMD80'"‚Type�of�3rd�hardƒdisk�on�1st�VM22�board>ƒVM223$1ƒ=�"'RMCMD16'"‚Type�of�4th�hardƒdisk�on�1st�VM22�board>ƒVM224$1ƒ=�"'FXCMD80'"‚Type�of�5th�hardƒdisk�on�1st�VM22�board>ƒVM225$1ƒ=�"'RMCMD16'"‚Type�of�6th�hardƒdisk�on�1st�VM22�board>ƒVM226$1ƒ=�"'FXCMD80'"‚Type�of�7th�hardƒdisk�on�1st�VM22�board>ƒVM227$1ƒ=�"'RMCMD16'"‚Type�of�8th�hardƒdisk�on�1st�VM22�board @ƒVM228$1ƒ=�"'F8SDDSM'"‚Type�of�1st�floppy�disk�on�1st�VM22�board@ƒVM229$1ƒ=�"'F8SDDSM'"‚Type�of�2nd�floppy�disk�on�1st�VM22�board@ƒVM22A$1ƒ=�"'F5DDDSI'"‚Type�of�3rd�floppy�disk�on�1st�VM22�board@ƒVM22B$1ƒ=�"'F5DDDSI'"‚Type�of�4th�floppy�disk�on�1st�VM22�boardENDC O*------------------------------------------------------------------------------7NOVM30„=�0Œ#�of�VM30…MCCM�(multi-channel�communications *¦boards)(*¦uses�IPC�driver;�has�1�printer�port/bd*¦(see�"&.IPCDRV.CI") IFGTˆ\NOVM30/ƒNTV30$1ƒ=�0Œ#�of�terminals�on�1st�MCCM;�max=�4.ƒNPV30$1ƒ=�0Œ#�of�printers‚on�1st�MCCM;�max=�1/ƒNTV30$2ƒ=�0Œ#�of�terminals�on�2nd�MCCM;�max=�4.ƒNPV30$2ƒ=�0Œ#�of�printers‚on�2nd�MCCM;�max=�1/ƒNTV30$3ƒ=�0Œ#�of�terminals�on�3rd�MCCM;�max=�4.ƒNPV30$3ƒ=�0Œ#�of�printers‚on�3rd�MCCM;�max=�1/ƒNTV30$4ƒ=�0Œ#�of�terminals�on�4th�MCCM;�max=�4.ƒNPV30$4ƒ=�0Œ#�of�printers‚on�4th�MCCM;�max=�1ENDC O*------------------------------------------------------------------------------5NVME400ƒ=�1�#�of�MVME400‚dual�7201�serial�port�boards IFGTˆ\NVME400:ƒNU400$1ƒ=�2Œ#�of�ports/users�on�VME400�bd.�#1;�max=�2/bd.:ƒNU400$2ƒ=�0Œ#�of�ports/users�on�VME400�bd.�#2;�max=�2/bd.ENDC O*------------------------------------------------------------------------------9NVME410ƒ=�1�#�of�MVME410‚dual�16-bit�parallel�port�boards IFGT‚\NVME410<ƒNU410$1ƒ=�1Œ#�of�printers�in�use�on�VME410�board�#1:‚max=�2<ƒNU410$2ƒ=�0Œ#�of�printers�in�use�on�VME410�board�#2:‚max=�2ENDC O*------------------------------------------------------------------------------;NVME435ƒ=�0Œ#�of�MVME435�mag�tape�controller�boards;�max=�2 IFGTˆ\NVME435;ƒN435$1„=�0Œ#�of�tape�drives�on�first‚MVME435�board;�max=�5<ƒN435$2„=�0Œ#�of�tape�drives�on�second�MVME435�board;�max=�5ENDC O*------------------------------------------------------------------------------7NVME600ƒ=�0Œ#�of�MVME600‚analog�input‚controller�boards O*------------------------------------------------------------------------------8NVME605ƒ=�0Œ#�of�MVME605‚analog�output�controller�boards IFGTˆ\NVME6059ƒNU605…=�0ŒNumber�of�users�(total)�for�the�MVME605�boardsENDC O*------------------------------------------------------------------------------3NVME610ƒ=�0Œ#�of�MVME610…AC‚input‚controller�boards IFGTˆ\NVME610GƒM610QSIZ‚=�128…Minimum�number�of�entries�in�Interrupt�Processing�QueueENDC O*------------------------------------------------------------------------------8NVME615ƒ=�0Œ#�of�MVME615/616�AC‚output�controller�boards IFGTˆ\NVME6159ƒNU615…=�0ŒNumber�of�users�(total)�for�the�MVME615�boardsENDC O*------------------------------------------------------------------------------3NVME620ƒ=�0Œ#�of�MVME620…DC‚input‚controller�boards O*------------------------------------------------------------------------------4NVME625ƒ=�0Œ#�of�MVME625…DC‚output�controller�boards IFGTˆ\NVME6259ƒNU625…=�0ŒNumber�of�users�(total)�for�the�MVME625�boardsENDCO*------------------------------------------------------------------------------#NRAD†=�0Œ#�of�RAD†Remote�A/D�boards IFGTˆ\NRADƒNURAD…=�0Œ#�of�RAD�usersENDC O*------------------------------------------------------------------------------#NRIO†=�0Œ#�of�RIO†Remote�I/O�boards IFGTˆ\NRIO1ƒNRIOINTƒ=�0Œ#�of�interrupt�levels�p er�I/O�moduleENDC O*------------------------------------------------------------------------------NNNN'VME101 COPYSGENCFéé²  $INITIO1 AGË  $IFDRVR CI33_  $SYSTEM CI<<‘  $CNFGDRVRCIUU+à  $=/*<=/*‚VME101.COPYSGEN.CF‚-‚Chain�file�to�copy�files�for�SYSGEN=/*'=/*‚--‚FORCE�CATALOG�TO�BE�SET�=�VME101 =USE :.VME101=/*D=/*†This�chainfile�copies�those�files�required�to�do�a�SYSGEN�into�a'=/*†a�specified�volume�and�user�number.=/*;=/*ƒInvoke�as:„=VME101.COPYSGEN.CF‚arg1,arg2,arg3,arg4,arg5 =/*…where:.=/*‰Arg1=�\1„Source�volume�nameŒ(must�specify).=/*‰Arg2=�\2„Target�volume�nameŒ(must�specify).=/*‰Arg3=�\3„Target�user�numberŒ(must�specify)-=/*‰Arg4=�\4„COPY�option�letter(s)‰(optional)=/*—B�=�both�copy�&�verify=/*—P�=�pack�files =/*—Y�=�overwrite�if�file�exists*=/*—N�=�skip�copy�if�file�existsƒ(default)*=/*–VT�=�verify�&�show�only�1st�difference2=/*‰Arg5=�\5„include�PCDRV�driver�filesƒ(optional)=/*—PCDRV�=�include�them=OPT N=/RX=\0=/RD=0 =/IF RX < 3…=/RD=1=/ENDIF =/IF RX > 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=/*‚Set�Arg6�so�this�file�can't�be�rerun�directly�w/o�setting�proper�args!=ARG \1,\2,\3,\4,\5,ARGS=OPT -N =/IF RD <> 0Mƒ=/*�INVOCATION�ERROR!�Insufficient,�null,�and/or�invalid�argument�specified!ƒ=/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 s ysgen=/@„\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 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 VME319 files for sysgen=/@„\1:9998.COPYGEN.M319DRV.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 VME331 files for sysgen=/@„\1:9998.COPYGEN.M331DRV.CFNNNN  NNO=/*----------------------------------------------------------------------------/=/* 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=/*-----------------------------------------------------------------------------=/*‚Copy�all�VME101�specific�files�for�sysgen=/@„\1:9998.COPYGEN.VME101.CFO=/*----------------------------------------------------------------------------)=/* Copy all EPCI driver files for sysgen=/@„\1:9998.COPYGEN.EPCIDRV.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.CFNO=/*----------------------------------------------------------------------------!=/* Copy all IOI files for sysgen=/@„\1:9998.COPYGEN.IOI.CFO=/*----------------------------------------------------------------------------'=/* 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=/*‚Copy�all�the�rest�of�the�root�files�for�sysgen=/@„\1:9998.COPYGEN.ROOT.CFO=/*----------------------------------------------------------------------------=/*2=/*†VME101.COPYSGEN.CF‚completed.‰Have�a�nice�day!=/*N=/*‚No�"NOARG"�and�"=END"�because�independent�driver�release�items�may�follow!NN  NN7INITIO„IDNTƒ45,0�RMS68K�I/O�initializer�for�the�VME101.O*v*****************************************************************************O*******************************************************************************O**********************************************************************************É***G***…ROUTINE:‚INITIO�--�RMS68K�I/O�INITIALIZER�FOR�THE�VME101�BOARD.„******É***J***…ENVIRONMENT:‚Part�of�the�RMS68K�exec�for�the�Motorola�68000�family.***(***‡Copyright�1983�by�Motorola,�Inc.¢******É***D***…FUNCTION:‚Routines�from�this�module�are�called�by�the�RMS68K‡***E***‡routine�INIT�during�system�initialization.‚All�board-specific„***.***‡initialization�is�done�in�this�module.œ******É***G***…NOTES:‚This�module�is�SUBSed,�ASMed,�and�LINKed�at�SYSGEN�time.„***?***‡All�modules�will�run�at�level�7�and�in�supervisor�mode.‹******É***O*******************************************************************************O*******************************************************************************O******************************************************************************* *,*‚Revision�history�(add�new�changes�to�top).*…Date†Author‚ChangesI*…--------‚------‚-------------------------------------------------------D*…10/29/85ƒCBS„Changed�the�way�we�call�KILLER�to�use�the�KILL.EXECT0*—macro.B*…10/05/84ƒKEG„Commented�out�the�RESET�instruction�because�the�new.*—VME101bug�takes�care�of�the�2661�interrupts.*…10/25/83ƒSJF„Initial�writing.* * *‚XDEF's.*,ŠXDEFƒINITMMUŒRoutine�to�initialize�the�MMU.,ŠXDEFƒTIMERSTŒRoutine�to�start�up�the�timer.3ŠXDEFƒINITIO�Routine�to�set�up�all�the�other�board-**‚XREF's* *…Routines:*…Parameters�from�INITDAT:-ŠXREFƒTIMSLICŒ#�of�timer�tics�per�time�slice.(ŠXREFƒTIMERA�Addr�of�timer�chip�(M6840).4ŠXREFƒTIMINTVA‹#�of�milliseconds�between�timer�tics.4ŠXREFƒCLOCKFRQ‹Frequency�of�clock�(to�set�up�timer).*…SYSPAR�variables:ŠXREF.S�DATE�Date.0ŠXREF.S�TIMESLIC‹#�of�timer�tics�per�time�slice. 2D8#7ŠXREF.S�TIMINTVŒTime�interval�between�timer�interrupts.8ŠXREF.S�TIMINTV4‹Another�value�related�to�time�interval.+ŠXREF.S�PTMADDRŒAddr�of�timer�chip�(M6840). *„Others:.ŠXREFƒCRASHSAV‹Place�to�SAVE�info�if�we�CRASH.   **‚Included�files:**‰M6840.M6840.EQ *‰&.KILL.MC*‰&.KILLEXEC.EQ *‰&.STR.EQ*ŠNOLISTŠINCLUDE�M6840.M6840.EQŠINCLUDE�&.KILL.MCŠINCLUDE�&.KILLEXEC.EQŠINCLUDE�&.STR.EQ*ŠLIST ŠSECTION�8ŠPAGE*J*‚This�code�is�needed�to�satisfy�INIT,�which�is�board-independent�and�must/*‚call�upon�us�to�do�the�board-dependent�stuff.**„Initialize�the�MMU.*3INITMMUƒRTS—It's�easy�for�us�to�initialize�the�MMU,*§since�we�don't�have�one. **„Start�the�timer�running.*TIMERSTDŠMOVE.L�TIMSLIC(PC),TIMESLIC‚Set�the�sysgen�parameter�which�dictates%*§the�#�of�timer�tics�per�time�slice.'‰MOVE.L�TIMERA(PC),A1‡GET�TIMER�ADDRESS#‰MOVE.L�A1,PTMADDRŠSAVE�IT�FOR�EXEC$‰BEQ.S‚TIMER_EXITŠBRANCH�IF�NO�TIMER)‰PEA„TIMERBE(PC)‰WHERE�TO�GO�ON�BUS�ERROR$‰MOVE.W�#'BE',-(A7)‰SET�BUS�ERR�FLAG3‰MOVE.B�#$01,CR2SR(A1)†ALLOW�WRITE�TO�CONTROL�REG�1&‰MOVE.B�#$01,CR13(A1)‡ALL�TIMERS�RESET$‰MOVE.L�#CLOCKFRQ,D0ˆCLOCK�FREQUENCY‰DIVUƒ#4,D0�DIVIDE�BY�4#‰SUB.W‚#1,D0�CLOCK�INTERRUPTS�AT�-1*‰MOVE.W�TIMINTVA(P! C),D1…INTERRUPT�INTERVAL ‰MOVE.W�D1,TIMINTVŠSAVE�FOR�EXEC‰MULUƒ#4,D1�MULTIPLY�BY�4*‰SUB.W‚#1,D1�SUBTRACT�1�-�TIMER�GOES�TO�-1!‰MOVE.W�D1,TIMINTV4‰SAVE�FOR�EXEC‰LSL.W‚#8,D1�PUT�IN�HIGH�BYTE)‰ADD.W‚D1,D0�VALUE�FOR�TIMER�3�(2�HALVES)‰MOVEP‚D0,MSBT3(A1)ˆSET�TIMER�34‰MOVE.W�#256,D0�VALUE�FOR�TIMER�1�(OVERFLOW�COUNTER)‰MOVEP‚D0,MSBT1(A1)ˆSET�TIMER�18‰MOVE.B�#$00,CR2SR(A1)†ALLOW�WRITE�TO�CONTROL�REGISTER�3;‰MOVE.B�#$C6,CR13(A1)‡T3--INTERNAL�CLOCK,INTERRUPT�ENABLED,*£OUTPUT�ENABLED,�8-BIT�MODE8‰MOVE.B�#$01,CR2SR(A1)†ALLOW�WRITE�TO�CONTROL�REGISTER�1;‰MOVE.B�#$00,CR13(A1)‡T1--EXTERNAL�CLOCK,�ENABLE�ALL�TIMERS3‰ADDQ.L�#6,SP�Everything�went�OK;�just�get�that�bus4‰BRA.S‚TIMER_EXITŠerror�junk�off�the�stack�and�exit.*;TIMERBE‚MOVE.L‚#CRASHSAV,PTMADDR‚USE�DUMP�POINTER�FOR�TIMER TIMER_EXIT�RTS–Return�to�INIT. ŠPAGE ‰SECTIONƒ80************************************************,*ƒValue�to�put�in�VME101�control�register.ƒ*0*************************************************7CTRL†SET„%1101ŽStatus�display�bit�pattern.�Also�used�to-*£assert�the�SYSFAIL*�signal�on�the�VMEbus�by,*£setting�them�all�to�1.�Status�display�here*£is�setup�for�"D".*ª0000‚=‚display�"0"*ª0001‚=‚display�"1"*¶:*ª1110‚=‚display�"E"*ª1111‚=‚display�"F",CTRL†SET„1<<4+CTRLŠStatus�display�(enabled).9CTRL†SET„0<<5+CTRLŠBus�block�transfer�request�(disabled).;CTRL†SET„0<<6+CTRLŠBus�request�time-out�counter�(disabled).>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*‚>>>>>>>µ<<<<<<<*‚>>>>>>>•NOTICEš<<<<<<<*‚>>>>>>>µ<<<<<<<>*‚>>>>>>>…When�incorporating�any�drivers�during�SYSGEN„<<<<<<<?*‚>>>>>>>…that�require�memory�allocated�for�them�as�perƒ<<<<<<<?*‚>>>>>>>…the�driver�package�instructions�-�this�is�theƒ<<<<<<<,*‚>>>>>>>…spot�the�file(s)�go�into!!–<<<<<<<*‚>>>>>>>µ<<<<<<<=*‚>>>>>>>…This�is�also�the�spot�for�code�for�a�driver…<<<<<<<>*‚>>>>>>>…that‚requires�other�types�of�initialization,ƒ<<<<<<<0*‚>>>>>>>…such‚as�clearing�an�interrupt.‘<<<<<<<*‚>>>>>>>µ<<<<<<<*‚>>>>>>>‘MERGE�IT�HERE—<<<<<<<*<*ˆWhen�you�write�the�code�that�is�to�be�merged�here,�wrap�it*ˆaround�with�the�following:*:*ˆAt�the�beginning,�with�DRVRxOUT�referring�to�your�unique*ˆlabel,�put�this�code:*'*‹PEA„DRVRxOUT(PC)„IF�BUS�ERROR�OCCURS,*¢RETURN�OR�GO�ON�TO�NEXT*¢DRIVER'S�INITIALIZATION**‹MOVE.W�#'BE',-(A7)…SAVE�'BUS�ERROR'�FLAG*9*ˆThen�insert�the�code�to�do�what�you�need�to�do�for�this*ˆparticular�driver.**ˆAt�the�end,�put�this:***‹LEA„6(A7),A7ˆREMOVE�BUS�ERROR�FROM�STACK*DRVRxOUTƒEQU„**=*ˆIn�this�way,�if�the�code�for�one�driver�causes�a�bus�error,.*ˆthe�code�for�other�drivers�will�be�executed.*E*‚>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<G*********************************************************************** ŠENDN! NNN**ˆVME101.IFDRVR.CI*,* Conditional file for VME101 device driversO*------------------------------------------------------------------------------K* This file uses flags setup in the VME101.CNFGDRVR.CI and VME101.SYSTEM.CI0* files to conditionally include device drivers.*J* The user should not have to modify this file to include/exclude drivers.*D*„******************************************************************?*„**‚NOTICE:‚The�following�conditionals�are�order�dependent.„**3*„**‹Do�not�change�the�order!‚Local�drivers�1st.‡**9*„**‹The�order�determines�device�number�(HD00,PR,�etc)‚***„**‹for�most�items.¤**D*„******************************************************************** IFNEˆ\NVME316Dƒ*‚The�VME316�has�no�driver.‚It�has�an�initialization�module�that�isJƒ*‚merged�into�SYSINIT.RO.‚The�include�file�below�defines�the�I/O�channel.ƒ*ƒINCLUDE…&.M316DEF.CIENDC* IFNEˆ\NVME319ƒINCLUDE…&.M319DRV.CIENDC* IFNEˆ\NVME320ƒINCLUDE…&.M320DRV.CIENDC* IFNEˆ\NVME300ƒINCLUDE…&.M300DRV.CIENDC* IFNEˆ\NORWINƒINCLUDE…&.RWINDRV.CIENDC* IFNEˆ\NOLTERMƒINCLUDE…&.EPCIDRV.CIENDC* IFNEˆ\NOLPRTƒINCLUDE…&.PIA101.CIENDC* IFNEˆ\NVME050ƒINCLUDE…&.M050DRV.CIENDC* IFNEˆ\NVME400ƒINCLUDE…&.MPSC400.CIENDC* IFNEˆ\NVME331ƒINCLUDE…&.M331DRV.CIENDC* IFNEˆ\NVME410ƒINCLUDE…&.PIA410.CIENDC* IFNEˆ\NVME435ƒINCLUDE…&.M435DRV.CIENDC* IFNEˆ\NVME600ƒINCLUDE…&.M600DRV.CIENDC* IFNEˆ\NVME605ƒINCLUDE…&.M605DRV.CIENDC*IFNEˆ\NVME610+\NVME620ƒINCLUDE…&.M610DRV.CIENDC* IFNEˆ\NVME615ƒINCLUDE…&.M615DRV.CIENDC* IFNEˆ\NVME625ƒINCLUDE…&.M625DRV.CIENDC* IFNEˆ\NRADƒINCLUDE…&.RADDRV.CIENDC* IFNEˆ\NRIOƒINCLUDE…&.RIODRV.CIENDC+`**ˆVME101.SYSTEM.CI*L****************************************************************************@*‚This�file�contains�all�board/system�dependencies�for�VME101.Œ*&*‚It�is�called�from�"&.VERSADOS.CD".¦**Ê*E*‚The�user�should�not�have�to�modify�this�file�except�under�extreme‡**‚circumstances.º*L**************************************************************************** <*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~**†ON�BOARD�RAM�ADDRESSES*>*†VMEbus�drivers�require�the�following�target�system�dependentB*†variables�to�be�defined�when�the�macro�file�DUALPORT.MC�is�used:<*†Note�that�the�ONBD$HI�parameter�may�vary�on�the�VME110�and<*†and�VME101�systems�depending�on�the�size�and�number�of�RAM<*†chips�used�on�the�processor�card.‚The�values�shown�are�the?*†minimum�requirements.�Modify�that�parameter�to�match�your�own*†system�if�different.*;ONBD$LOƒ=�$0‹Low‚value�for�on-board�ram�(as�seen�by�driver)?ONBD$HIƒ=�$0FFFˆHigh�value�for�on-board�ram�(as�seen�by�driv" er)ARAM$SQ„=�$0000ˆDifference�between�on-board�ram�address�as�seen�by*˜driver�and�device.JOFFBD$LO‚=�\ONBD$LO+\RAM$SQ�Low‚value�for�on-board�ram�(as�seen�by�device)KOFFBD$HI‚=�\ONBD$HI+\RAM$SQ�High�value�for�on-board�ram�(as�seen�by�device) FMSG‰******************************************************************MSG‰**ˆAddresses�of�timer,�etc.FMSG‰****************************************************************** !TIMER…=�$FE00D0†Address�of�timer.5CLOCKFRQ‚=�0800‰Number�of�clock�ticks�per�millisecond"PANEL…=�$0‹Address�of�front�panel.6TRCFLAGƒ=�$0‹Trace�flag.‚Zero�implies�don't�trace.‚The/*˜setting�of�bits�in�the�TRCFLAG�parameter�will1*˜control�which�events�cause�an�entry�to�be�built*˜in�the�trace�table.*˜Bit�#�in�TRCFLAG†Event *›15‘TRAP�#1*›14‘I/O�interrupt�not�claimed*°by�user�task.*›13‘Timer�interrupt.*›12‘User�trap�(2-15)*›11‘Exception *›10‘Dispatch*œ9‘I/O�interrupt�claimed�by *°user�task*œ8‘Return�from�LOADMMU*œ7‘Simulated�interrupt45=-E0*œ6‘SYSFAIL�interrupt.* FMSG‰******************************************************************.MSG‰**ƒLocal�terminal/printer�device�addresses#MSG‰**ƒShort�I/O�space�base�address&MSG‰**ƒShort�I/O�space�address�offsetsFMSG‰****************************************************************** 9LTDA$01ƒ=�$FE00A1†VME101�local�terminal�#1�device�address9LTDA$02ƒ=�$FE00B1†VME101�local�terminal�#2�device�address8LPDA$01ƒ=�$FE00C1†VME101�local�printer‚#1�device�address 1SIOBASEƒ=�$FF0000†Base�address�of�Short�I/O�space****************************************************************‰Vector�numbers£**>**************************************************************9IOCVEC1ƒ=�$1BŠAuto�vectrized�interrupt�-�PIA�loc.�printer8IOCVEC2ƒ=�$1CŠAuto�vectrized�interrupt�-�EPCI�terminal�18IOCVEC3ƒ=�$1DŠAuto�vectrized�interrupt�-�EPCI�terminal�28IOCVEC4ƒ=�$1AŠAuto�vectrized�interrupt�-�PTM�prog.�timer*3IOCLVL1ƒ=�3ŒAuto�vectorized�interrupt�level�for�PIA6IOCLVL2ƒ=�4ŒAuto�vectorized�interrupt�level�for�EPCI�16IOCLVL3ƒ=�5ŒAuto�vectorized�interrupt�level�for�EPCI�23IOCLVL4ƒ=�2ŒAuto�vectorized�interrupt�level�for�PTM FMSG‰******************************************************************3MSG‰**…Descriptive�info�about�this�operating�systemFMSG‰****************************************************************** 6TIMSLICƒ=�2ŒNumber�of�timer�interrupts�per�time�slice.=TIMINTVƒ=�10‹Number�of�milliseconds�between�timer�interrupts.?ROMEADDR‚=�$0‹ROM�end�address�--�defined�by�user�for�a�ROMmable,*œsystem.‚Set�to�$0�if�not�a�ROMable�system.-*œThe�ROM�start�address�(ROMSADDR)�is�defined3*œin�the�.RMS.CI�file�and�has�a�value�equal!*œto�the�initial�program�counter.*@*ˆThe�following�parameters�are�used�to�define�memory�partitions.A*ˆIf�only�partition�0�exists,�then�MEMEND2�should�be�set�to�zero.*@NOPARTSƒ=�1ŒNumber�of�memory�partitions�(needed�by�&.INITMEM.AG)AMEMEND1ƒ=�$200000†The�endƒof�partition�0�(assumed�to�start�at�0).&MEMEND2ƒ=�$0‹The�start�of�partition�1.$MEMEND3ƒ=�$0‹The�endƒof�partition�1.;WHERLOAD‚=�$0‹Memory�address�where�boot�file�will�be�loaded6*˜If�nonzero,�VERSAdos�will�be�moved�at�initialization*˜time.7CACHEF„=�0ŒNot�used�by�VME101�(needed�for�&.INITDAT.AG)3ASMTYPEƒ=�0ŒType�of�assembler�to�use�for�INITIO1.AG *œ0�-�Use�ASM*œ1�-�Use�ASM020 EMSG‰****************************************" *************************)MSG‰**‚Parameters�about�table�sizes,�etc.EMSG‰***************************************************************** 'PAGESIZE‚=�\PGSIZE†From�.RMS.CI*)ASN‡=�0Œ#�of�address�spaces--not�used�but!*˜needed�to�satisfy�&.INITDAT.AG. GMSG‰*******************************************************************>MSG‰*ƒCopy�the�system�initializer�into�M68XXX.INIT.RO�based�on:MSG‰*ƒthe�type�of�memory�allocation�defined�at�RMSGEN�timeMSG‰*ƒin�.RMS.CD.GMSG‰******************************************************************* =COPY‡&.MTYPE.SI,MTYPE.SI;Y IFEQˆ\MEMALOC'ƒ=COPY‡BESTFIT.INIT.RO,M68XXX.INIT.RO;YENDC IFNEˆ\MEMALOC%ƒ=COPY‡BUDDY.INIT.RO,M68XXX.INIT.RO;YENDC GMSG‰*******************************************************************=MSG‰*ƒCopy�C9OC.SYSPAR.RO�into�&.SYSPAR.RO�to�make�it�genericAMSG‰*ƒfor�.LG�files�and�possible�for�sysgening�more�than�1�systemMSG‰*ƒper�account�#GMSG‰******************************************************************* "=COPY‡C9OC.SYSPAR.RO,&.SYSPAR.RO;Y**ˆVME101.CNFGDRVR.CI*'* Configuration file for device driversO*------------------------------------------------------------------------------D* This file sets up the flags used by the "VME101.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/SYSTEM�DEPENDENCIES�are�included�from�the�&.VERSADOS.CD�file.�---;*�VME101.SYSTEM.CIƒadd�processor�board/system�dependencies,(*˜including�local�terminals�and�printers6*�&.CNFGTASK.CI†add�O/S�task�configuration�for�ROM/RAMM***************************************************************************** O*------------------------------------------------------------------------------@NOLTERMƒ=�2Œ#�of�terminals�on�VME101�serial�ports�(EPCI);�max=�2 O*------------------------------------------------------------------------------1NOLPRT„=�1Œ#�of�local�(on-board)�printers;�max=�1 O*------------------------------------------------------------------------------2NORWIN„=�0Œ#�of�RWIN1„Winchester�controller�boards* IFGTˆ\NORWIN+ƒCONTWIN1‚=�"3"Š1st�RWIN1�controller�number8ƒNHRWIN$1‚=�0Œ#�of�hardƒdisk�drives�on�1st�RWIN1;�max=�2:ƒNFRWIN$1‚=�0Œ#�of�floppy�disk�drives�on�1st�RWIN1;�max=�2BƒRWIN0$1ƒ=�"'H5WIN40'"‚Type�of�1st�hardƒdisk�on�1st�RWIN1,�drive�0BƒRWIN1$1ƒ=�"'H5WIN40'"‚Type�of�2nd�hardƒdisk�on�1st�RWIN1,�drive�1DƒRWIN2$1ƒ=�"'F5DDDSI'"‚Type�of�1st�floppy�disk�on�1st�RWIN1,�drive�2DƒRWIN3$1ƒ=�"'F5DDDSI'"‚Type�of�2nd�floppy�disk�on�1st�RWIN1,�drive�3 M)V"^fn$v~/†%+ƒCONTWIN2‚=�"4"Š2nd�RWIN1�controller�number8ƒNHRWIN$2‚=�0Œ#�of�hardƒdisk�drives�on�2nd�RWIN1;�max=�2:ƒNFRWIN$2‚=�0Œ#�of�floppy�disk�drives�on�2nd�RWIN1;�max=�2BƒRWIN0$2ƒ=�"'H5WIN40'"‚Type�of�1st�hardƒdisk�on�2nd�RWIN1,�drive�0BƒRWIN1$2ƒ=�"'H5WIN40'"‚Type�of�2nd�hardƒdisk�on�2nd�RWIN1,�drive�1DƒRWIN2$2ƒ=�"'F5DDDSI'"‚Type�of�1st�floppy�disk�on�2nd�RWIN1,�drive�2DƒRWIN3$2ƒ=�"'F5DDDSI'"‚Type�of�2nd�floppy�disk�on�2nd�RWIN1,�drive�3ƒ*Gƒ*…NOTE:‚You�can�not�mix�5-1/4"�and�8"�floppies.‚Pick�one�or�the�o# ther.ƒ*ENDC O*------------------------------------------------------------------------------)NVME050ƒ=�0Œ#�of�VME050ƒSystem�Controller IFGTˆ\NVME0507ƒNT050$1ƒ=�0Œ#�of�terminals�on�the�VME050�board;�max=�26ƒNP050$1ƒ=�0Œ#�of�printers‚on�the�VME050�board;�max=�1ENDC O*------------------------------------------------------------------------------8NVME300ƒ=�0Œ#�of�MVME300‚IEEE�488�GPIB�controller�boards O*------------------------------------------------------------------------------ 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=/*‚Set�Arg6�so�this�file�can't�be�rerun�directly�w/o�setting�proper�args!=ARG \1,\2,\3,\4,\5,ARGS=OPT -N =/IF RD <> 0Mƒ=/*�INVOCATION�ERROR!�Insufficient,�null,�and/or�invalid�argument�specified!ƒ=/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 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 VME319 files for sysgen=/@„\1:9998.COPYGEN.M319DRV.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.CFNNNN% NNNO=/*----------------------------------------------------------------------------$=/* Copy all VME331 files for sysgen=/@„\1:9998.COPYGEN.M331DRV.CFO=/*----------------------------------------------------------------------------+=/* Copy all VME420 (SASI) files for sysgen=/@„\1:9998.COPYGEN.M420DRV.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=/*-----------------------------------------------------------------------------=/*‚Copy�all�VME110�specific�files�for�sysgen=/@„\1:9998.COPYGEN.VME110.CFO=/*----------------------------------------------------------------------------)=/* Copy all ACIA driver files for sysgen=/@„\1:9998.COPYGEN.ACIADRV.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.CFO=/*----------------------------------------------------------------------------'=/* 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=/*‚Copy�all�the�rest�of�the�root�files�for�sysgen=/@„\1:9998.COPYGEN.ROOT.CFO=/*----------------------------------------------------------------------------=/*2=/*†VME110.COPYSGEN.CF‚completed.‰Have�a�nice�day!=/*N=/*‚No�"NOARG"�and�"=END"�because�independent�driver�release�items�may�follow!& NNN7INITIO„IDNTƒ45,0�RMS68K�I/O�initializer�for�the�VME110.O*v*****************************************************************************O*******************************************************************************O**********************************************************************************É***G***…ROUTINE:‚INITIO�--�RMS68K�I/O�INITIALIZER�FOR�THE�VME110�BOARD.„******É***J***…ENVIRONMENT:‚Part�of�the�RMS68K�exec�for�the�Motorola�68000�family.***(***‡Copyright�1983�by�Motorola,�Inc.¢******É***D***…FUNCTION:‚Routines�from�this�module�are�called�by�the�RMS68K‡***E***‡routine�INIT�during�system�initialization.‚All�board-specific„***.***‡initialization�is�done�in�this�module.œ******É***G***…NOTES:‚This�module�is�SUBSed,�ASMed,�and�LINKed�at�SYSGEN�time.„***?***‡All�modules�will�run�at�level�7�and�in�supervisor�mode.‹******É***O*******************************************************************************O*******************************************************************************O*^***************************************************************************** *,*‚Revision�history�(add�new�changes�to�top).*…Date†Author‚ChangesI*…--------‚------‚-------------------------------------------------------D*…10/29/85ƒCBS„Changed�the�way�we�call�KILLER�to�use�the�KILL.EXECT0*—macro*…10/25/83ƒSJF„Initial�writing.* * *‚XDEF's.*,ŠXDEFƒINITMMUŒRoutine�to�initialize�the�MMU.,ŠXDEFƒTIMERSTŒRoutine�to�start�up�the�timer.3ŠXDEFƒINITIO�Routine�to�set�up�all�the�other�board-*§specific�hardware. * *‚XREF's.* *…Routines:*…Parameters�from�INITDAT:-ŠXREFƒTIMSLICŒ#�of�timer�tics�per�time�slice.(ŠXREFƒTIMERA�Addr�of�timer�chip�(M6840).4ŠXREFƒTIMINTVA‹#�of�milliseconds�between�timer�tics.4ŠXREFƒCLOCKFRQ‹Frequency�of�clock�(to�set�up�timer).*…SYSPAR�variables:ŠXREF.S�DATE�Date.0ŠXREF.S�TIMESLIC‹#�of�timer�tics�per�time�slice.7ŠXREF.S�TIMINTVŒTime�interval�between�timer�interrupts.»3ÄDÌ<Ô8ŠXREF.S�TIMINTV4‹Another�value�related�to�time�interval.+ŠXREF.S�PTMADDRŒAddr�of�timer�chip�(M6840). *„Others:.ŠXREFƒCRASHSAV‹Place�to�SAVE�info�if�we�CRASH.   **‚Included�files:**‰&.UTILITY.MC*‰M6840.M6840.EQ *‰&.KILL.MC*‰&.KILLEXEC.EQ *‰&.STR.EQ*ŠNOLISTŠINCLUDE�&.UTILITY.MCŠINCLUDE�M6840.M6840.EQŠINCLUDE�&.KILL.MCŠINCLUDE�&.KILLEXEC.EQŠINCLUDE�&.STR.EQŠLIST ŠSECTION�8ŠPAGE*J*‚This�code�is�needed�to�satisfy�INIT,�which�is�board-independent�and�must/*‚call�upon�us�to�do�the�board-dependent�stuff.**„Initialize�the�MMU.*3INITMMUƒRTS—It's�easy�for�us�to�initialize�the�MMU,*§since�we�don't�have�one. **„Start�the�timer�running.*TIMERSTDŠMOVE.W�TIMSLIC(PC),TIMESLIC‚Set�the�sysgen�parameter�which�dictates%*§the�#�of�timer�tics�per�time�slice.'‰MOVE.L�TIMERA(PC),A1‡GET�TIMER�ADDRESS#‰MOVE.L�A1,PTMADDRŠSAVE�IT�FOR�EXEC$‰BEQ.S‚TIMER_EXITŠBRANCH�IF�NO�TIMER)‰PEA„TIMERBE(PC)‰WHERE�TO�GO�ON�BUS�ERROR$‰MOVE.W�#'BE',-(A7& )‰SET�BUS�ERR�FLAG3‰MOVE.B�#$01,CR2SR(A1)†ALLOW�WRITE�TO�CONTROL�REG�1&‰MOVE.B�#$01,CR13(A1)‡ALL�TIMERS�RESET$‰MOVE.L�#CLOCKFRQ,D0ˆCLOCK�FREQUENCY‰DIVUƒ#4,D0�DIVIDE�BY�4#‰SUB.W‚#1,D0�CLOCK�INTERRUPTS�AT�-1*‰MOVE.W�TIMINTVA(PC),D1…INTERRUPT�INTERVAL ‰MOVE.W�D1,TIMINTVŠSAVE�FOR�EXEC‰MULUƒ#4,D1�MULTIPLY�BY�4*‰SUB.W‚#1,D1�SUBTRACT�1�-�TIMER�GOES�TO�-1!‰MOVE.W�D1,TIMINTV4‰SAVE�FOR�EXEC‰LSL.W‚#8,D1�PUT�IN�HIGH�BYTE)‰ADD.W‚D1,D0�VALUE�FOR�TIMER�3�(2�HALVES)‰MOVEP‚D0,MSBT3(A1)ˆSET�TIMER�34‰MOVE.W�#256,D0�VALUE�FOR�TIMER�1�(OVERFLOW�COUNTER)‰MOVEP‚D0,MSBT1(A1)ˆSET�TIMER�18‰MOVE.B�#$00,CR2SR(A1)†ALLOW�WRITE�TO�CONTROL�REGISTER�3;‰MOVE.B�#$C6,CR13(A1)‡T3--INTERNAL�CLOCK,INTERRUPT�ENABLED,*£OUTPUT�ENABLED,�8-BIT�MODE8‰MOVE.B�#$01,CR2SR(A1)†ALLOW�WRITE�TO�CONTROL�REGISTER�1;‰MOVE.B�#$00,CR13(A1)‡T1--EXTERNAL�CLOCK,�ENABLE�ALL�TIMERS3‰ADDQ.L�#6,SP�Everything�went�OK;�just�get�that�bus4‰BRA.S‚TIMER_EXITŠerror�junk�off�the�stack�and�exit.*;TIMERBE‚MOVE.L‚#CRASHSAV,PTMADDR‚USE�DUMP�POINTER�FOR�TIMER TIMER_EXIT�RTS–Return�to�INIT.ŠPAGE ‰SECTIONƒ80************************************************,*ƒValue�to�put�in�VME110�control�register.ƒ*0*************************************************6CTRL†SET„%00�Bus�release�control�(release�on�request).*©00�=�Release�on�request.*©01�=�Release�on�bus�clear.*©10�=�Release�when�done.*©11�=�Release�never.*CTRL†SET„0<<4+CTRLŠFail�LED�control�(off).;CTRL†SET„0<<5+CTRLŠVMEbus�SYSFAIL*�interrupt�mask�(disabled$*§since�we�aren't�prepared�to�handle%*§SYSFAIL�on�the�VME110�because�it�is)*§shared�with�ACFAIL�and�Software�Abort).0CTRL†SET„1<<6+CTRLŠWatchdog�timer�mask�(enable).:CTRL†SET„0<<7+CTRLŠWrite-protection�of�onboard�RAM�in�user$*§mode�according�to�map�decoder�PROM *§(disable).  GOTOKILL:A‰KILL.EXECT0‚INITIO1AG,NO_110_REG‚Call�killer�to�crash�the�system *ˆno�return INITIO: 9ŠPEA„GOTOKILL(PC)‡Arrange�for�KILLER�to�get�control�if�we4ŠPUSHƒ#'BE'Žcan't�access�the�VME110�control�register"*§(which�would�cause�a�bus�error). 9ŠLEA„$FE8021,A0‰A0�<--�addr�of�VME110's�control�register.-ŠMOVE.B�#CTRL,(A0)‰Load�the�control�register. 2ŠADD.L‚#6,SPŽGet�the�bus�error�junk�off�the�stack.   E*‚>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*‚>>>>>>>µ<<<<<<<*‚>>>>>>>•NOTICEš<<<<<<<*‚>>>>>>>µ<<<<<<<>*‚>>>>>>>…When�incorporating�any�drivers�during�SYSGEN„<<<<<<<?*‚>>>>>>>…that�require�memory�allocated�for�them�as�perƒ<<<<<<<?*‚>>>>>>>…the�driver�package�instructions�-�this�is�theƒ<<<<<<<,*‚>>>>>>>…spot�the�file(s)�go�into!!–<<<<<<<*‚>>>>>>>µ<<<<<<<=*‚>>>>>>>…This�is�also�the�spot�for�code�for�a�driver…<<<<<<<>*‚>>>>>>>…that‚requires�other�types�of�initialization,ƒ<<<<<<<0*‚>>>>>>>…such‚as�clearing�an�interrupt.‘<<<<<<<*‚>>>>>>>µ<<<<<<<*‚>>>>>>>‘MERGE�IT�HERE—<<<<<<<*<*ˆWhen�you�write�the�code�that�is�to�be�merged�here,�wrap�it*ˆaround�with�the�following:*:*ˆAt�the�beginning,�with�DRVRxOUT�referring�to�your�unique*ˆlabel,�put�this�code:*'*‹PEA„DRVRxOUT(PC)„IF�BUS�ERROR�OCCURS,*¢RETURN�OR�GO�ON�TO�NEXT*¢DRIVER'S�INITIALIZATION**‹MOVE.W�#'BE',-(A7)…SAVE�'BUS�ERROR'�FLAG*9*ˆThen�insert�the�code�to�do�what�you�need�to�do�for�this*ˆparticular�driver.**ˆAt�the�end,�put�this:***‹LEA„6(A7),A7ˆREMOVE�BUS�ERROR�FROM�STACK*DRVRxOUTƒEQU„**=*ˆIn�this�way,�if�the�code�for�one�driver�causes�a�bus�error,.*ˆthe�code�for�other�drivers�will�be�executed.*E*‚>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<G***********************************************************************‰ENDN' NNNN**ˆVME110.IFDRVR.CI*,* Conditional file for VME110 device driversO*------------------------------------------------------------------------------K* This file uses flags setup in the VME110.CNFGDRVR.CI and VME110.SYSTEM.CI0* files to conditionally include device drivers.*J* The user should not have to modify this file to include/exclude drivers.*D*„******************************************************************?*„**‚NOTICE:‚The�following�conditionals�are�order�dependent.„**3*„**‹Do�not�change�the�order!‚Local�drivers�1st.‡**9*„**‹The�order�determines�device�number�(HD00,PR,�etc)‚***„**‹for�most�items.¤**D*„******************************************************************** IFNEˆ\NVME316Dƒ*‚The�VME316�has�no�driver.‚It�has�an�initialization�module�that�isJƒ*‚merged�into�SYSINIT.RO.‚The�include�file�below�defines�the�I/O�channel.ƒ*ƒINCLUDE…&.M316DEF.CIENDC* IFNEˆ\NORWINƒINCLUDE…&.RWINDRV.CIENDC*IFNEˆ\NVME4205ƒINCLUDE…&.M4205.CIENDC*IFNEˆ\NVME4208ƒINCLUDE…&.M4208.CIENDC* IFNEˆ\NVME319ƒINCLUDE…&.M319DRV.CIENDC* IFNEˆ\NVME320ƒINCLUDE…&.M320DRV.CIENDC* IFNEˆ\NOLTERMƒINCLUDE…&.ACIADRV.CIENDC* IFNEˆ\NVME400ƒINCLUDE…&.MPSC400.CIENDC* IFNEˆ\NVME331ƒINCLUDE…&.M331DRV.CIENDC* IFNEˆ\NVME410ƒINCLUDE…&.PIA410.CIENDC* IFNEˆ\NVME050ƒINCLUDE…&.M050DRV.CIENDC* IFNEˆ\NVME300ƒINCLUDE…&.M300DRV.CIENDC* IFNEˆ\NVME435ƒINCLUDE…&.M435DRV.CIENDC* IFNEˆ\NVME600ƒINCLUDE…&.M600DRV.CIENDC* IFNEˆ\NVME605ƒINCLUDE…&.M605DRV.CIENDC*IFNEˆ\NVME610+\NVME620ƒINCLUDE…&.M610DRV.CIENDC* IFNEˆ\NVME615ƒINCLUDE…&.M615DRV.CIENDC* IFNEˆ\NVME625ƒINCLUDE…&.M625DRV.CIENDC* IFNEˆ\NRADƒINCLUDE…&.RADDRV.CIENDC* IFNEˆ\NRIOƒINCLUDE…&.RIODRV.CIENDCÜd**ˆVME110.SYSTEM.CI*L****************************************************************************@*‚This�file�contains�all�board/system�dependencies�for�VME110.Œ*&*‚It�is�called�from�"&.VERSADOS.CD".¦**Ê*E*‚The�user�should�not�have�to�modify�this�file�except�under�extreme‡**‚circumstances.º*L**************************************************************************** <*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~**†ON�BOARD�RAM�ADDRESSES*>*†VMEbus�drivers�require�the�following�target�system�dependentB*†variables�to�be�defined�when�the�macro�file�DUALPORT.MC�is�used:<*†Note�that�the�ONBD$HI�parameter�may�vary�on�the�VME110�and<*†and�VME101�systems�depending�on�the�size�and�number�of�RAM<*†chips�used�on�the�pr' ocessor�card.‚The�values�shown�are�the?*†minimum�requirements.�Modify�that�parameter�to�match�your�own*†system�if�different.**;ONBD$LOƒ=�$0‹Low‚value�for�on-board�ram�(as�seen�by�driver)?ONBD$HIƒ=�$0FFFˆHigh�value�for�on-board�ram�(as�seen�by�driver)ARAM$SQ„=�$0000ˆDifference�between�on-board�ram�address�as�seen�by*˜driver�and�device.JOFFBD$LO‚=�\ONBD$LO+\RAM$SQ�Low‚value�for�on-board�ram�(as�seen�by�device)KOFFBD$HI‚=�\ONBD$HI+\RAM$SQ�High�value�for�on-board�ram�(as�seen�by�device) FMSG‰******************************************************************MSG‰**ˆAddresses�of�timer,�etc.FMSG‰****************************************************************** !TIMER…=�$FE8010†Address�of�timer.5CLOCKFRQ‚=�0800‰Number�of�clock�ticks�per�millisecond"PANEL…=�$0‹Address�of�front�panel.5TRCFLAGƒ=�0ŒTrace�flag.‚Zero�implies�don't�trace.‚The/*˜setting�of�bits�in�the�TRCFLAG�parameter�will1*˜control�which�events�cause�an�entry�to�be�built*˜in�the�trace�table.*˜Bit�#�in�TRCFLAG†Event *›15‘TRAP�#1*›14‘I/O�interrupt�not�claimed*°by�user�task.*›13‘Timer�interrupt.*›12‘User�trap�(2-15)*›11‘Exception *›10‘Dispatch*œ9‘I/O�interrupt�claimed�by *°user�task*œ8‘Return�from�LOADMMU*œ7‘Simulated�interruptå6î/ö2þ*œ6‘SYSFAIL�interrupt.*FMSG‰******************************************************************.MSG‰**ƒLocal�terminal/printer�device�addresses#MSG‰**ƒShort�I/O�space�base�address&MSG‰**ƒShort�I/O�space�address�offsetsFMSG‰****************************************************************** /LTDA$01ƒ=�$FE8001†VME110�local�terminal�address****************************************************************‰Vector�numbers£**>**************************************************************.RMS.CI�file�and�has�a�value�equal!*œto�the�initial�program�counter.*@*ˆThe�following�parameters�are�used�to�define�memory�partitions.A*ˆIf�only�partition�0�exists,�then�MEMEND2�should�be�set�to�zero.*@NOPARTSƒ=�1ŒNumber�of�memory�partitions�(needed�by�&.I( NITMEM.AG)AMEMEND1ƒ=�$200000†The�endƒof�partition�0�(assumed�to�start�at�0).*MEMEND2ƒ=�$00000‡The�start�of�partition�1.*˜Not�applicable�for�a�VME110(MEMEND3ƒ=�$00000‡The�endƒof�partition�1.:WHERLOAD‚=�0ŒMemory�address�where�boot�file�will�be�loaded5*˜If�nonzero,�VERSAdos�will�be�move�at�initialization*˜time.8CACHEF„=�0ŒNot�used�for�VME110�(needed�for�&.INITDAT.AG)3ASMTYPEƒ=�0ŒType�of�assembler�to�use�for�INITIO1.AG *œ0�-�Use�ASM*œ1�-�Use�ASM020 EMSG‰*****************************************************************)MSG‰**‚Parameters�about�table�sizes,�etc.EMSG‰***************************************************************** 'PAGESIZE‚=�\PGSIZE†From�.RMS.CI*)ASN‡=�0Œ#�of�address�spaces--not�used�but!*˜needed�to�satisfy�&.INITDAT.AG. GMSG‰*******************************************************************>MSG‰*ƒCopy�the�system�initializer�into�M68XXX.INIT.RO�based�on:MSG‰*ƒthe�type�of�memory�allocation�defined�at�RMSGEN�timeMSG‰*ƒin�.RMS.CD.GMSG‰******************************************************************* =COPY‡&.MTYPE.SI,MTYPE.SI;Y IFEQˆ\MEMALOC'ƒ=COPY‡BESTFIT.INIT.RO,M68XXX.INIT.RO;YENDC IFNEˆ\MEMALOC%ƒ=COPY‡BUDDY.INIT.RO,M68XXX.INIT.RO;YENDC GMSG‰*******************************************************************=MSG‰*ƒCopy�C9OC.SYSPAR.RO�into�&.SYSPAR.RO�to�make�it�genericAMSG‰*ƒfor�.LG�files�and�possible�for�sysgening�more�than�1�systemMSG‰*ƒper�account�#GMSG‰******************************************************************* "=COPY‡C9OC.SYSPAR.RO,&.SYSPAR.RO;YNNNNNNN**ˆVME110.CNFGDRVR.CI*'* Configuration file for device driversO*------------------------------------------------------------------------------D* This file sets up the flags used by the "VME110.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 i( tems of a driver, edit the corresponding driver file,J* "&.xxxxDRV.CI" except as noted where one driver handles multiple boards.O*------------------------------------------------------------------------------ N******************************************************************************L*---‚BOARD/SYSTEM�DEPENDENCIES�are�included�from�the�&.VERSADOS.CD�file.�---;*�VME110.SYSTEM.CIƒadd�processor�board/system�dependencies,(*˜including�local�terminals�and�printers6*�&.CNFGTASK.CI†add�O/S�task�configuration�for�ROM/RAMM***************************************************************************** O*------------------------------------------------------------------------------@NOLTERMƒ=�1Œ#�of�terminals�on�VME110�serial�ports�(ACIA);�max=�1IFGTˆ\NOLTERM-1ƒMSG†NOLTERM�must�be�<=�1ƒABORTENDC O*------------------------------------------------------------------------------2NORWIN„=�1Œ#�of�RWIN1„Winchester�controller�boards*@*ˆNOTE:‚You�cannot�sysgen�a�2nd�RWIN1�board�if�you�are�sysgening7*�for�a�SASI�5.‚The�two�boards�are�at�the�same�address.7*�Reference�IOC.ADDRESS.CI�to�change�the�address�if�you$*�want�both�boards�at�the�same�time.* IFGTˆ\NORWIN+ƒCONTWIN1‚=�"0"Š1st�RWIN1�controller�number8ƒNHRWIN$1‚=�1Œ#�of�hardƒdiskƒdrives�on�1st�RWIN1;�max=�2<ƒNFRWIN$1‚=�2Œ#�of�5-1/4"�floppy�drives�on�1st�RWIN1;�max=�2BƒRWIN0$1ƒ=�"'H5WIN40'"‚Type�of�1st�hardƒdisk�on�1st�RWIN1,�drive�0BƒRWIN1$1ƒ=�"'H5WIN40'"‚Type�of�2nd�hardƒdisk�on�1st�RWIN1,�drive�1,&'' /.7.?!DƒRWIN2$1ƒ=�"'F5DDDSI'"‚Type�of�1st�floppy�disk�on�1st�RWIN1,�drive�2DƒRWIN3$1ƒ=�"'F5DDDSI'"‚Type�of�2nd�floppy�disk�on�1st�RWIN1,�drive�3 +ƒCONTWIN2‚=�"5"Š2nd�RWIN1�controller�number8ƒNHRWIN$2‚=�0Œ#�of�hardƒdisk�drives�on�2nd�RWIN1;�max=�2:ƒNFRWIN$2‚=�0Œ#�of�floppy�disk�drives�on�2nd�RWIN1;�max=�2BƒRWIN0$2ƒ=�"'H5WIN40'"‚Type�of�1st�hardƒdisk�on�2nd�RWIN1,�drive�0BƒRWIN1$2ƒ=�"'H5WIN40'"‚Type�of�2nd�hardƒdisk�on�2nd�RWIN1,�drive�1DƒRWIN2$2ƒ=�"'F5DDDSI'"‚Type�of�1st�floppy�disk�on�2nd�RWIN1,�drive�2DƒRWIN3$2ƒ=�"'F5DDDSI'"‚Type�of�2nd�floppy�disk�on�2nd�RWIN1,�drive�3ƒ*Gƒ*…NOTE:‚You�can�not�mix�5-1/4"�and�8"�floppies.‚Pick�one�or�the�other.ƒ*ENDC O*------------------------------------------------------------------------------)NVME050ƒ=�0Œ#�of�VME050ƒSystem�Controller IFGTˆ\NVME0507ƒNT050$1ƒ=�0Œ#�of�terminals�on�the�VME050�board;�max=�26ƒNP050$1ƒ=�0Œ#�of�printers‚on�the�VME050�board;�max=�1ENDC O*------------------------------------------------------------------------------8NVME300ƒ=�0Œ#�of�MVME300‚IEEE�488�GPIB�controller�boards O*------------------------------------------------------------------------------ƒNF4205$1‚=�2Œ#�of�floppy�disk�drives�on�VME420�(SASI);�max=�2AƒM42050$1‚=�"'H5WIN40'"‚Type�of�hardƒdisk�on�1st�MVME420,�dr* ive�0AƒM42051$1‚=�"'H5WIN40'"‚Type�of�hardƒdisk�on�1st�MVME420,�drive�1CƒM42052$1‚=�"'F5DDDSI'"‚Type�of�floppy�disk�on�1st�MVME420,�drive�2CƒM42053$1‚=�"'F5DDDSI'"‚Type�of�floppy�disk�on�1st�MVME420,�drive�3ƒ*>ƒ*…NOTE:‚Total�disks�for�SASI=�4,�i.e.�NH4205$1+NF4205$1�<=�4.ƒ*ENDC O*------------------------------------------------------------------------------=NVME4208‚=�0Œ#�of�MVME420‚SASI�8"�interface�controller�boards*IFGTˆ\NVME42082ƒCONT4208‚=�"2"ŠMVME420�(SASI�8)�controller�number<ƒNH4208$1‚=�0Œ#�of�hardƒdisk�drives�on�VME420�(SASI);�max=�2>ƒNF4208$1‚=�0Œ#�of�floppy�disk�drives�on�VME420�(SASI);�max=�2AƒM42080$1‚=�"'H8WIN10'"‚Type�of�hardƒdisk�on�1st�MVME420,�drive�0AƒM42081$1‚=�"'H8WIN10'"‚Type�of�hardƒdisk�on�1st�MVME420,�drive�1CƒM42082$1‚=�"'F8DDDSI'"‚Type�of�floppy�disk�on�1st�MVME420,�drive�2CƒM42083$1‚=�"'F8DDDSI'"‚Type�of�floppy�disk�on�1st�MVME420,�drive�3ƒ*>ƒ*…NOTE:‚Total�disks�for�SASI=�4,�i.e.�NH4208$1+NF4208$1�<=�4.ƒ*ENDC O*------------------------------------------------------------------------------;NVME435ƒ=�0Œ#�of�MVME435‚mag�tape�controller�boards;�max=�2 IFGTˆ\NVME435;ƒN435$1„=�0Œ#�of�tape�drives�on�first‚MVME435�board;�max=�8<ƒN435$2„=�0Œ#�of�tape�drives�on�second�MVME435�board;�max=�8ENDC O*------------------------------------------------------------------------------7NVME600ƒ=�0Œ#�of�MVME600‚analog�input‚controller�boards O*------------------------------------------------------------------------------8NVME605ƒ=�0Œ#�of�MVME605‚analog�output�controller�boards IFGTˆ\NVME6059ƒNU605…=�0ŒNumber�of�users�(total)�for�the�MVME605�boardsENDC O*------------------------------------------------------------------------------3NVME610ƒ=�0Œ#�of�MVME610…AC‚input‚controller�boards IFGTˆ\NVME610GƒM610QSIZ‚=�128…Minimum�number�of�entries�in�Interrupt�Processing�QueueENDC O*------------------------------------------------------------------------------8NVME615ƒ=�0Œ#�of�MVME615/616�AC‚output�controller�boards IFGTˆ\NVME6159ƒNU615…=�0ŒNumber�of�users�(total)�for�the�MVME615�boardsENDC O*------------------------------------------------------------------------------3NVME620ƒ=�0Œ#�of�MVME620…DC‚input‚controller�boards O*------------------------------------------------------------------------------4NVME625ƒ=�0Œ#�of�MVME625…DC‚output�controller�boards IFGTˆ\NVME6259ƒNU625…=�0ŒNumber�of�users�(total)�for�the�MVME625�boardsENDC O*------------------------------------------------------------------------------#NRAD†=�0Œ#�of�RAD†Remote�A/D�boards IFGTˆ\NRADƒNURAD…=�0Œ#�of�RAD�usersENDC O*------------------------------------------------------------------------------#NRIO†=�0Œ#�of�RIO†Remote�I/O�boards IFGTˆ\NRIO1ƒNRIOINTƒ=�0Œ#�of�interrupt�levels�per�I/O�moduleENDC O*------------------------------------------------------------------------------NNN'VME120 COPYSGENCFSSµ  $* =/*<=/*‚VME120.COPYSGEN.CF‚-‚Chain�file�to�copy�files�for�SYSGEN=/*'=/*‚--‚FORCE�CATALOG�TO�BE�SET�=�VME120 =USE :.VME120=/*D=/*†This�chainfile�copies�those�files�required�to�do�a�SYSGEN�into�a'=/*†a�specified�volume�and�user�number.=/*;=/*ƒInvoke�as:„=VME120.COPYSGEN.CF‚arg1,arg2,arg3,arg4,arg5 =/*…where:.=/*‰Arg1=�\1„Source�volume�nameŒ(must�specify).=/*‰Arg2=�\2„Target�volume�nameŒ(must�specify).=/*‰Arg3=�\3„Target�user�numberŒ(must�specify)-=/*‰Arg4=�\4„COPY�option�letter(s)‰(optional)=/*—B�=�both�copy�&�verify=/*—P�=�pack�files =/*—Y�=�overwrite�if�file�exists*=/*—N�=�skip�copy�if�file�existsƒ(default)*=/*–VT�=�verify�&�show�only�1st�difference2=/*‰Arg5=�\5„include�PCDRV�driver�filesƒ(optional)=/*—PCDRV�=�include�them=OPT N=/RX=\0=/RD=0 =/IF RX < 3…=/RD=1=/ENDIF =/IF RX > 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=/*‚Set�Arg6�so�this�file�can't�be�rerun�directly�w/o�setting�proper�args!=ARG \1,\2,\3,\4,\5,ARGS=OPT -N =/IF RD <> 0Mƒ=/*�INVOCATION�ERROR!�Insufficient,�null,�and/or�invalid�argument�specified!ƒ=/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.CFKPT%\d#lO=/*----------------------------------------------------------------------------$=/* 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=/*----------------------------------------------------------------------------(=/* Co+ py 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 VME319 files for sysgen=/@„\1:9998.COPYGEN.M319DRV.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.CFNNNNNNO=/*----------------------------------------------------------------------------$=/* Copy all VME331 files for sysgen=/@„\1:9998.COPYGEN.M331DRV.CFO=/*----------------------------------------------------------------------------$=/* Copy all VME360 files for sysgen=/@„\1:9998.COPYGEN.M360DRV.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=/*-----------------------------------------------------------------------------=/+ *‚Copy�all�VME120�specific�files�for�sysgen=/@„\1:9998.COPYGEN.VME120.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=/*----------------------------------------------------------------------------N<=/* 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.CFO=/*----------------------------------------------------------------------------'=/* 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=/*‚Copy�all�the�rest�of�the�root�files�for�sysgen=/@„\1:9998.COPYGEN.ROOT.CFO=/*----------------------------------------------------------------------------=/*2=/*†VME120.COPYSGEN.CF‚completed.‰Have�a�nice�day!=/*N=/*‚No�"NOARG"�and�"=END"�because�independent�driver�release�items�may�follow!NNN'VMES10 COPYSGENCF€€²  $INITIO1 AG©©KI  $IFDRVR CI[  $SYSTEM CI  À  $CNFGDRVRCI,,)æ  $MTYPE SImm   $, =/*E=/*‚VMES10.COPYSGEN.CF‚-‚Chain�file�to�copy�files�for�SYSGEN†(VME/10)=/*'=/*‚--‚FORCE�CATALOG�TO�BE�SET�=�VMES10 =USE :.VMES10=/*D=/*†This�chainfile�copies�those�files�required�to�do�a�SYSGEN�into�a'=/*†a�specified�volume�and�user�number.=/*;=/*ƒInvoke�as:„=VMES10.COPYSGEN.CF‚arg1,arg2,arg3,arg4,arg5 =/*…where:.=/*‰Arg1=�\1„Source�volume�nameŒ(must�specify).=/*‰Arg2=�\2„Target�volume�nameŒ(must�specify).=/*‰Arg3=�\3„Target�user�numberŒ(must�specify)-=/*‰Arg4=�\4„COPY�option�letter(s)‰(optional)=/*—B�=�both�copy�&�verify=/*—P�=�pack�files =/*—Y�=�overwrite�if�file�exists*=/*—N�=�skip�copy�if�file�existsƒ(default)*=/*–VT�=�verify�&�show�only�1st�difference2=/*‰Arg5=�\5„include�PCDRV�driver�filesƒ(optional)=/*—PCDRV�=�include�them=OPT N=/RX=\0=/RD=0 =/IF RX < 3…=/RD=1=/ENDIF =/IF RX > 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=/*‚Set�Arg6�so�this�file�can't�be�rerun�directly�w/o�setting�proper�args!=ARG \1,\2,\3,\4,\5,ARGS=OPT -N =/IF RD <> 0Mƒ=/*�INVOCATION�ERROR!�Insufficient,�null,�and/or�invalid�argument�specified!ƒ=/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.CFxP�%‰‘#™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 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 VME319 files for sysgen=/@„\1:9998.COPYGEN.M319DRV.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.CFNNNNNNNO=/*----------------------------------------------------------------------------$=/* Copy all VME360 files for sysgen=/@„\1:9998.COPYGEN.M360DRV.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=/*-----------------------------------------------------------------------------=/*‚Copy�all�VMES10�specific�files�for�sysgen=/@„\1:9998.COPYGEN.VMES10.CFO=/*----------------------------------------------------------------------------+=/* Copy all DRVS10 driver files for sysgen=/@„\1:9998.COPYGEN.DRVS10.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=/*----------------------------------------------------------------------------- N<=/* 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.CFO=/*----------------------------------------------------------------------------'=/* 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=/*‚Copy�all�the�rest�of�the�root�files�for�sysgen=/@„\1:9998.COPYGEN.ROOT.CFO=/*----------------------------------------------------------------------------=/*2=/*†VMES10.COPYSGEN.CF‚completed.‰Have�a�nice�day!=/*N=/*‚No�"NOARG"�and�"=END"�because�independent�driver�release�items�may�follow!NNN7INITIO„IDNTƒ45,0�RMS68K�I/O�initializer�for�the�VME/10.O*******************************************************************************O*******************************************************************************O**********************************************************************************É***A***…ROUTINE:‚INITIO�--�RMS68K�I/O�INITIALIZER�FOR�THE�VME/10.Š******É***J***…ENVIRONMENT:‚Part�of�the�RMS68K�exec�for�the�Motorola�68000�family.***(***‡Copyright�1983�by�Motorola,�Inc.¢******É***D***…FUNCTION:‚Routines�from�this�module�are�called�by�the�RMS68K‡***E***‡routine�INIT�during�system�initialization.‚All�board-specific„***.***‡initialization�is�done�in�this�module.œ******É***G***…NOTES:‚This�module�is�SUBSed,�ASMed,�and�LINKed�at�SYSGEN�time.„***?***‡All�modules�will�run�at�level�7�and�in�supervisor�mode.‹******É***O*******************************************************************************O*******************************************************************************O******************************************************************************* *,*‚Revision�history�(add�new�changes�to�top).*…Date†Author‚ChangesI*…--------‚------‚-------------------------------------------------------F*…10/29/85ƒCBS„Changed�the�way�we�call�KILLER�to�use�KILL.EXECT0�macro8*†1/28/85ƒSJF„Changed�MMU�initialization�to�look�at�\MMU4*†3/�6/84ƒSJF„Make�bit�7�of�CR1�a�0�rather�than�a�1.?*†1/10/84ƒMSL„Verify�that�UIP�(update-in-progress)�bit�is�clear&*—before�reading�real-time�clock�chip.*…11/�7/83ƒSJF„Initial�writing.* * *‚XDEF's.*,ŠXDEFƒINITMMUŒRoutine�to�initialize�the�MMU.,ŠXDEFƒTIMERSTŒRoutine�to�start�up�the�timer.3ŠXDEFƒINITIO�Routine�to�set�up�all�the�other�board-*§specific�hardware.-  * *‚XREF's.* *…Routines:*…Parameters�from�INITDAT:-ŠXREFƒTIMSLICŒ#�of�timer�tics�per�time�slice.+ŠXREFƒTIMERA�Addr�of�timer�chip�(MC146818).ŠXREFƒTIMINTVAŠXREFƒCLOCKFRQ*…SYSPAR�variables:¡3ªB²CºÂ(ÊPÒBÚ4â7ê<ò6ŠXREF.S�MMUHEREŒAddr�of�MMU;�0�if�we're�not�using�one.0ŠXREF.S�FRST451ŒAddr�of�first�MMU�in�the�system./ŠXREF.S�LAST451ŒAddr�of�last‚MMU�in�the�system.7ŠXREF.S�CURR451ŒPtr�to�MMU�LOADMMU�should�look�at�next.7ŠXREF.S�CURRSD�Current�segment�descriptor�#�in�the�MMU.7ŠXREF.S�DPRVAO�Dual-Ported�Ram�Versabus�Address�Offset.ŠXREF.S�DATE�Date.1ŠXREF.S�TIME_LEFTŠms�until�next�significant�event0ŠXREF.S�TIMESLIC‹#�of�timer�tics�per�time�slice.7ŠXREF.S�TIMINTVŒTime�interval�between�timer�interrupts..ŠXREF.S�PTMADDRŒAddr�of�timer�chip�(MC146818).0ŠXREF.S�NSE�Next�significant�event�absolute�time$ŠXREF.S�MIDNIGHT‹ms�of�last�midnight *„Others:.ŠXREFƒCRASHSAV‹Place�to�SAVE�info�if�we�CRASH. **‚Included�files:**‰&.UTILITY.MC*‰M68451.M68451.EQ*‰M146818.M146818.EQ *‰&.KILL.MC*‰&.KILLEXEC.EQ *‰&.STR.EQ*ŠNOLISTŠINCLUDE�&.UTILITY.MCŠINCLUDE�M68451.M68451.EQŠINCLUDE�M146818.M146818.EQŠINCLUDE�&.KILL.MCŠINCLUDE�&.KILLEXEC.EQŠINCLUDE�&.STR.EQŠLISTŠPAGEO*******************************************************************************O**********************************************************************************É***7***…ROUTINE:‚INITMMU�--�INITIALIZE�THE�M68451�MMUs.”******É***G***…FUNCTION:‚If�we�are�supposed�to�have�MMUs,�verify�that�at�least„***4***‡one�exists,�count�them,�and�initialize�them.–******É******…NOTES:¾******É***E***…REGISTER�USAGE:‚(A)rgument‚(D)estroyed‚(P)reserved‚(R)eturnedƒ***)***Œ0ƒ1ƒ2ƒ3ƒ4ƒ5ƒ6ƒ7‡SR�hi„SR�lo�(CCR)…******‡D:ƒPƒPƒ.ƒ.ƒ.ƒ.ƒ.ƒ.‡.ˆD�******‡A:ƒPƒPƒ.ƒ.ƒ.ƒ.ƒ.ƒP ******É******…ENTRY�CONDITIONS:³***+***‡Supervisor�mode,�interrupt�level�7.Ÿ******É***-***…EXIT�CONDITIONS�DIFFERENT�FROM�ENTRY:Ÿ******É***O*******************************************************************************O*^*****************************************************************************  ŠSECTION�8ŠOPT„BRS INITMMU: /ŠIFNEƒ\MMU�If�we're�supposed�to�have�some�MMUs, 1ŠSAVEƒD0/D1/A0/A1ˆSave�registers�we'll�blow�away. 0ŠLEA„$F1A800,A0‰A0�<--�address�of�the�first�MMU.%ŠMOVE.L�A0,MMUHERE‰Save�it�in�SYSPAR. *‰PEA…GOTOKILL�CRASH�IF�FIRST�MMU�NOT�THERE'‰MOVE.W‚#'BE',-(A7)ŠBUS�ERROR�SWITCH�ON,‰MOVE.B‚(A0),D0ŽVERIFY�PRESENCE�OF�FIRST�MMU8‰MOVE.L‚A0,FRST451‹SAVE�ADDRESS�OF�FIRST�68451�IN�SYSPAR.‰MOVE.L‚A0,CURR451‹IT'S�ALSO�THE�CURRENT�68451(‰MOVE.L‚#1,CURRSDŒSEGMENT�DESCRIPTOR�#�1#‰LEA…N68451U(PC),A1‡ADDRESS�OF�EXIT6‰MOVE.L‚A1,2(A7)�EXIT�IF�BUS�ERROR�WHILE�COUNTING�MMUs%‰MOVE.W‚#3,D0�FOUR�POSSIBLE�LAST�MMUsN68451B1‰MOVE.B‚(A0),D1ŽEXIT�THROUGH�BUS�ERROR�IF�NO�NEXT.‰MOVE.L‚A0,LAST451‹CURRENT�MAY�BE�THE�LAST�MMU)‰ADD.Lƒ#$40,A0ŽSET�TO�CHECK�NEXT�MMU�SLOT‰DBRA„D0,N68451B‹LOOP�TILL�DONE+‰ADD.Lƒ#6,A7�BUS�ERROR�POINTER�OFF�OF�STACK *I*‚Unload�segment�descripters�in�all�MMU's,�in�case�RESET�wasn't�performed*‚prior�to�boot.*N68451U'ŠMOVE.L�FRST451,A1ŠPoint�to�first�68451$ŠMOVE.B�#1,D0�Segment�descriptor�#�1UNLD10%ŠMOVE.B�D0,DP(A1)‹Point�to�descriptor-ŠMOVE.B�#0,SSR(A1)ŠElse�clear�this�descriptorUNLDNEXTŠADDQ.B�#1,D0�Next�descriptorŠCMP.B‚#$20,D0�End�of�this�MMU?ŠBNE.S‚UNLD10ŽBranch�if�no#ŠLEA„$40(A1),A1ŠMove�on�to�next�MMUŠCLR.B‚D0’Descriptor�#�0)ŠCMP.L‚LAST451,A1ŠAre�we�beyond�all�MMUs?ŠBLE.S‚UNLD10ŽBranch�if�noUNLDEXIT **‚Exit.*.N68451XƒRESTORE�D0/D1/A0/A1‡Restore�registers. ŠENDC ŠRTS—Return. GOTOKILL:A‰KILL.EXECT0‚INITIO1AG,NO_451_1STƒCall�killer�to�crash�the�system *ˆno�retur. n  ŠPAGEO*********************************************************************************ˆSTART�TIMER„(146818�TIMER)* *G*‚This�macro�will�verify�that�a�byte�is�within�a�specified�range.‚If�itH*‚is�not�within�the�range,�a�branch�is�taken�to�RANGE_ERR.‚The�syntax�isD*„CHECK_RANGE.‚,,F*‚Distance�is�S�for�short�branches,�L�for�long�branches,�or�nothing�if*‚the�default�will�do.6*‚The�byte�to�check�is�treated�as�an�unsigned�integer.*CHECK_RANGE MACRO ŠCMP.B‚\2,\1ŠBLO.\0�RANGE_ERR ŠCMP.B‚\3,\1ŠBHI.\0�RANGE_ERRŠENDM  TIMERST:E‰MOVE.W�TIMSLIC(PC),TIMESLIC‚#�TIMER�INTERRUPTS�BEFORE�TASK�INTERRUPT'‰MOVE.L�TIMERA(PC),A1‡GET�TIMER�ADDRESS#‰MOVE.L�A1,PTMADDRŠSAVE�IT�FOR�EXEC!‰BEQ.L‚TIMERBE�BRANCH�IF�NO�TIMER)‰PEA„TIMERBE(PC)‰WHERE�TO�GO�ON�BUS�ERROR$‰MOVE.W�#'BE',-(A7)‰SET�BUS�ERR�FLAG*4*ˆGet�system�time�and�date�from�battery�backed�timer*‰MOVE.L„#1800,D1ŒTimeout�count:UIP_LOOP�BTST†#7,REGA(A1)‰Wait�for�UIP�bit�to�reset�before#‰BEQ.S…UIP_OKAYŒreading�clock�chip.4‰DBRA†D1,UIP_LOOP‰If�battery�is�dead,�we'll�timeout,$‰BRA.L…RANGE_ERR‹and�always�go�here.UIP_OKAYNNNNN*‰CLR.L…D1’Prepare�for�following�short�load'‰MOVE.B„HRS(A1),D1ŠGet�hours�from�timerŠCHECK_RANGE.L�D1,#0,#230‰MOVE.L„#3600*1000,D2‡Addend�is�one�hour's�msecs+‰CLR.L…D0’Calculation�will�take�place�in�D0*‰BRA.S…CALCLOOPŒStart�the�calculation�loopCALCHRS)‰ADD.L…D2,D0�Add�one�hour's�msecs�to�timeCALCLOOP*‰DBRA†D1,CALCHRSŠLoop�until�hours�computed*‰CLR.W…D1’Prepare�for�following�short�load*‰MOVE.B„MINS(A1),D1‰Get�minutes�from�timerŠCHECK_RANGE�D1,#0,#59)‰MULU.W„#60,D1ŽConvert�minutes�to�seconds*‰CLR.L…D2’Prepare�for�following�short�load*‰MOVE.B„SECS(A1),D2‰Get�seconds�from�timerŠCHECK_RANGE�D2,#0,#59‰ADD.L…D2,D1�D1=total�seconds‰MULU.W„#1000,D1ŒD1=total�msecs!‰ADD.L…D1,D0�D0=grand�total�msecs‰ADD.L…TIME_LEFT,D0 ‰MOVE.L„D0,NSEŽStore�it�for�exec‰CLR.L…MIDNIGHT (‰CLR.L…D0’Prepare�to�form�gregorian�date'‰MOVE.B„YEAR(A1),D0‰Get�year�from�timerŠCHECK_RANGE�D0,#0,#99‰ADD.W…#1900,D0ŒYear=1900+YY‰SWAP†D0’D0=YYYY0000 ‰MOVE.B„MONTH(A1),D0ˆD0=YYYY00MMŠCHECK_RANGE�D0,#1,#12‰LSL.W…#8,D0�D0=YYYYMM00"‰MOVE.B„DAYOMTH(A1),D0†D0=YYYYMMDDŠCHECK_RANGE�D0,#1,#31 *I*‚The�time�and�date�look�reasonable,�so�let's�go�ahead�and�keep�those�forG*‚our�own�(the�chip�must�not�have�lost�power�since�last�time).‚We�can'tI*‚tell�for�sure�whether�the�chip�lost�power,�even�though�there's�a�bit�inJ*‚the�chip�that�says�so,�because�the�bug�has�already�read�the�information,. NN*‚making�it�unavailable�to�us.* ‰BSR.L…DATEGOŽConvert�to�ordinal!‰MOVE.L„D0,DATE�Give�date�to�exec ŠBRA.S‚GO_TIMER *H*‚If�we�come�here,�one�of�the�fields�read�from�the�clock�chip�is�whacko.*‚Set�system�time�and�day�to�0.*1RANGE_ERR�MOVE.L�TIME_LEFT,NSE†Time�of�day�<--�0.ŠCLR.L‚MIDNIGHTŠMOVE.L�#0,DATEŒDate�<--�0. **ˆNow�start�timer�ticking*KGO_TIMER�MOVEƒTIMINTVA(PC),TIMINTV‚Save�timer�interrupt�interval�in�SYSPAR.4‰MOVE.B�#$A,REGA(A1)ˆSELECT�PERIODIC�ACTIVATION�RATE0‰MOVE.B�REGC(A1),D0‰RESET�ANY�PENDING�INTERRUPTS&‰MOVE.B�#$46,REGB(A1)‡ENABLE�THE�TIMER.‰ADD.L‚#6,A7�REMOVE�'BE'�AND�BUS�ERROR�ADDRESS‰RTS˜BACK�TO�INIT*�DAY�NUMBER�WHERE�DAY�1�=�JAN�1�1980***ˆCALL *’BSR‡DATEGO*¦BINARY�GREGORIAN�-�YYYYMMDD*§TO*¦BINARY�ORDINALƒ-�DAY�NUMBER*ˆINPUT'*’D0�=�DATE�TO�BE�CONVERTED�--�YYYYMMDD**ˆOUTPUT#*’D0�=�CONVERTED�DATE‡--�DAY�NUMBER*O******************************************************************************* ‰SECTIONƒ8**ˆNON-LEAP�DAYS�BEFORE�TABLE¥*Ç=DATEDBNL�DC.W�0,31,59,90,120,151,181,212,243,273,304,334,365Œ*Ç*ˆLEAP�DAYS�BEFORE�TABLE©*ÇCTRL1…SET„%00<<5+CTRL1‡Cursor�selection�(we�leave�this�alone).CTRL1…SET„0<<7+CTRL1‰Reserved.  0************************************************,*ƒValue�to�put�in�VMEC1�control�register�2ƒ*0************************************************ 0CTRL2…SET„0<<0�Mask�for�MMU�interrupt�(disable).;CTRL2…SET„0<<1+CTRL2‰Mask�for�'transmitter�empty'�interrupt$*§from�the�2661�connecting�us�to�the*§keyboard�(disable).>CTRL2…SET„0<<2+CTRL2‰Mask�for�'bus�clear'�interrupt�(disable).CTRL5…SE/ T„1<<4+CTRL5‰Mask�for�local�resource�timeout�(enable).6CTRL5…SET„1<<5+CTRL5‰Mask�for�VMEbus�timeout�(enable).;CTRL5…SET„0<<6+CTRL5‰Address�modifier�alteration�(disable).=CTRL5…SET„1<<7+CTRL5‰Board�fail�control�(we're�OK).‚When�this'*§bit�is�0,�SYSFAIL*�is�asserted�on�the *§VMEbus.  0************************************************,*ƒValue�to�put�in�VMEC1�control�register�6ƒ*0************************************************ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*‚>>>>>>>µ<<<<<<<*‚>>>>>>>•NOTICEš<<<<<<<*‚>>>>>>>µ<<<<<<<>*‚>>>>>>>…When�incorporating�any�drivers�during�SYSGEN„<<<<<<<?*‚>>>>>>>…that�require�memory�allocated�for�them�as�perƒ<<<<<<<?*‚>>>>>>>…the�driver�package�instructions�-�this�is�theƒ<<<<<<<,*‚>>>>>>>…spot�the�file(s)�go�into!!–<<<<<<<*‚>>>>>>>µ<<<<<<<=*‚>>>>>>>…This�is�also�the�spot�for�code�for�a�driver…<<<<<<<>*‚>>>>>>>…that‚requires�other�types�of�initialization,ƒ<<<<<<<0*‚>>>>>>>…such‚as�clearing�an�interrupt.‘<<<<<<<*‚>>>>>>>µ<<<<<<<*‚>>>>>>>‘MERGE�IT�HERE—<<<<<<<*<*ˆWhen�you�write�the�code�that�is�to�be�merged�here,�wrap�it*ˆaround�with�the�following:*:*ˆAt�the�beginning,�with�DRVRxOUT�referring�to�your�unique*ˆlabel,�put�this�code:*'*‹PEA„DRVRxOUT(PC)„IF�BUS�ERROR�OCCURS,*¢RETURN�OR�GO�ON�TO�NEXT*¢DRIVER'S�INITIALIZATION**‹MOVE.W�#'BE',-(A7)…SAVE�'BUS�ERROR'�FLAG*9*ˆThen�insert�the�code�to�do�what�you�need�to�do�for�this*ˆparticular�driver.**ˆAt�the�end,�put�this:***‹LEA„6(A7),A7ˆREMOVE�BUS�ERROR�FROM�STACK*DRVRxOUTƒEQU„**=*ˆIn�this�way,�if�the�code�for�one�driver�causes�a�bus�error,.*ˆthe�code�for�other�drivers�will�be�executed.*E*‚>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<G***********************************************************************G*********************************************************************** ‰ENDNNN0 NN**ˆVMES10.IFDRVR.CI*,* Conditional file for VMES10 device driversO*------------------------------------------------------------------------------K* This file uses flags setup in the VMES10.CNFGDRVR.CI and VMES10.SYSTEM.CI0* files to conditionally include device drivers.*J* The user should not have to modify this file to include/exclude drivers.*D*„******************************************************************?*„**‚NOTICE:‚The�following�conditionals�are�order�dependent.„**3*„**‹Do�not�change�the�order!‚Local�drivers�1st.‡**9*„**‹The�order�determines�device�number�(HD00,PR,�etc)‚***„**‹for�most�items.¤**D*„******************************************************************** IFNEˆ\NVME316Dƒ*‚The�VME316�has�no�driver.‚It�has�an�initialization�module�that�isJƒ*‚merged�into�SYSINIT.RO.‚The�include�file�below�defines�the�I/O�channel.ƒ*ƒINCLUDE…&.M316DEF.CIENDC* IFNEˆ\NORWINƒINCLUDE…&.RWINDRV.CIENDC* IFNEˆ\NVME320ƒINCLUDE…&.M320DRV.CIENDC* IFNEˆ\NVME319ƒINCLUDE…&.M319DRV.CIENDC* IFNEˆ\NVME360ƒINCLUDE…&.M360DRV.CIENDC* IFNEˆ\NOLTERMƒINCLUDE…DRVS10.CIENDC* IFNEˆ\NVME400ƒINCLUDE…&.MPSC400.CIENDC* IFNEˆ\NVME410ƒINCLUDE…&.PIA410.CIENDC* IFNEˆ\NVME050ƒINCLUDE…&.M050DRV.CIENDC* IFNEˆ\NVME300ƒINCLUDE…&.M300DRV.CIENDC* IFNEˆ\NVME435ƒINCLUDE…&.M435DRV.CIENDC* IFNEˆ\NVME600ƒINCLUDE…&.M600DRV.CIENDC* IFNEˆ\NVME605ƒINCLUDE…&.M605DRV.CIENDC*IFNEˆ\NVME610+\NVME620ƒINCLUDE…&.M610DRV.CIENDC* IFNEˆ\NVME615ƒINCLUDE…&.M615DRV.CIENDC* IFNEˆ\NVME625ƒINCLUDE…&.M625DRV.CIENDC* IFNEˆ\NRADƒINCLUDE…&.RADDRV.CIENDC* IFNEˆ\NRIOƒINCLUDE…&.RIODRV.CIENDCNú\**ˆVMES10.SYSTEM.CI*L****************************************************************************@*‚This�file�contains�all�board/system�dependencies�for�VME/10.Œ*&*‚It�is�called�from�"&.VERSADOS.CD".¦**Ê*E*‚The�user�should�not�have�to�modify�this�file�except�under�extreme‡**‚circumstances.º*L**************************************************************************** <*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~**†ON�BOARD�RAM�ADDRESSES*>*†VMEbus�drivers�require�the�following�target�system�dependentB*†variables�to�be�defined�when�the�macro�file�DUALPORT.MC�is�used:<*†Note�that�the�ONBD$HI�parameter�may�vary�on�the�VME110�and<*†and�VME101�systems�depending�on�the�size�and�number�of�RAM<*†chips�used�on�the�processor�card.‚The�values�shown�are�the?*†minimum�requirements.�Modify�that�parameter�to�match�your�own*†system�if�different.**;ONBD$LOƒ=�$0‹Low‚value�for�on-board�ram�(as�seen�by�driver)@ONBD$HIƒ=�$5FFFF‡High�value�for�on-board�ram�(as�seen�by�driver)CRAM$SQ„=�$D00000†Difference�between�on-board�ram�address�as�seen�by*˜driver�and�device.JOFFBD$LO‚=�\ONBD$LO+\RAM$SQ�Low‚value�for�on-board�ram�(as�seen�by�device)KOFFBD$HI‚=�\ONBD$HI+\RAM$SQ�High�value�for�on-board�ram�(as�seen�by�device)0  FMSG‰******************************************************************MSG‰**ˆAddresses�of�timer,�etc.FMSG‰****************************************************************** !TIMER…=�$F1A081†Address�of�timer.2CLOCKFRQ‚=�0ŒNumber�of�clock�ticks�per�millisecond"PANEL…=�$0‹Address�of�front�panel.5TRCFLAGƒ=�0ŒTrace�flag.‚Zero�implies�don't�trace.‚The/*˜setting�of�bits�in�the�TRCFLAG�parameter�will1*˜control�which�events�cause�an�entry�to�be�built*˜in�the�trace�table.*˜Bit�#�in�TRCFLAG†Event *›15‘TRAP�#1*›14‘I/O�interrupt�not�claimed*°by�user�task.*›13‘Timer�interrupt.*›12‘User�trap�(2-15)*›11‘Exception *›10‘Dispatch*œ9‘I/O�interrupt�claimed�by *°user�task*œ8‘Return�from�LOADMMU*œ7‘Simulated�interrupt6 20)*œ6‘SYSFAIL�interrupt.* ?SYSFAILƒ=�0ŒDetermines�whether�or�not�the�operating�system�will5*˜be�interrupted�when�SYSFAIL�is�asserted�on�the�bus.2*˜Some�intelligent�boards�will�assert�SYSFAIL�when0*˜they�experience�a�failure�of�some�kind.‚If�you5*˜have�such�boards�in�the�system,�AND�THE�DRIVERS�FOR3*˜THESE�BOARDS�HAVE�SYSFAIL�HANDLERS,�then�you�will2*˜probably�want�SYSFAIL�interrupts�enabled.‚If�the4*˜appropriate�SYSFAIL�handlers�are�not�written,�then5*˜taking�a�SYSFAIL�interrupt�will�hang�up�the�system,0*˜so�you�would�want�SYSFAIL�interrupts�disabled.!*š0�=�disable�SYSFAIL�interrupts. *š1�=‚enable�SYSFAIL�interrupts. FMSG‰******************************************************************.MSG‰**ƒLocal�terminal/printer�device�addresses#MSG‰**ƒShort�I/O�space�base�address&MSG‰**ƒShort�I/O�space�address�offsetsFMSG‰****************************************************************** %KBDOVRDƒ=�0ŒKeyboard�override�option:)*˜0�=�keyswitch�on�front�panel�is�enabled.*˜1�=�keyswitch�override�-�if�key�is�in�locked)*œposition�the�keyboard�is�still�enabled.0*˜NOTE:‚This�parameter�is�only�valid�with�VME/10!*Ÿunits�with�the�panel�keyswitch. 1SIOBASEƒ=�$FF0000†Base�address�of�Short�I/O�space****************************************************************‰Vector�numbers£**>***************************************************************-IOCVEC1ƒ=�$41ŠI/O�channel�interrupt�1�vector.-IOCVEC2ƒ=�$43ŠI/O�channel�interrupt�2�vector.-IOCVEC3ƒ=�$44ŠI/O�channel�interrupt�3�vector.-IOCVEC4ƒ=�$45ŠI/O�channel�interrupt�4�vector.**IOCLVL1ƒ=�2ŒI/O�channel�interrupt�1�level.*IOCLVL2ƒ=�4ŒI/O�channel�interrupt�2�level.*IOCLVL3ƒ=�5ŒI/O�channel�interrupt�3�level.*IOCLVL4ƒ=�6ŒI/O�channel�interrupt�4�level. FMSG‰******************************************************************3MSG‰**…Descriptive�info�about�this�operating�systemFMSG‰****************************************************************** 6TIMSLICƒ=�2ŒNumber�of�timer�interrupts�per�time�slice.=TIMINTVƒ=�16‹Number�of�milliseconds�between�timer�interrupts.7*˜(Not�used�on�VME/10.‚It�is�included�for�documentation/*˜only.‚The�actual�value�used�for�the�VME/10�is*˜15.625�msec.)?ROMEADDR‚=�$0‹ROM�end�address�--�defined�by�user�for�a�ROMmable,*œsystem.‚Set�to�$0�if�not�a�ROMable�system.-*œThe�ROM�start�ad1 dress�(ROMSADDR)�is�defined3*œin�the�.RMS.CI�file�and�has�a�value�equal!*œto�the�initial�program�counter.*@*ˆThe�following�parameters�are�used�to�define�memory�partitions.A*ˆIf�only�partition�0�exists,�then�MEMEND2�should�be�set�to�zero.*@NOPARTSƒ=�2ŒNumber�of�memory�partitions�(needed�by�&.INITMEM.AG)@MEMEND1ƒ=�$2FF00‡The�endƒof�partition�0�(assumed�to�start�at�0).*MEMEND2ƒ=�$2FF00‡The�start�of�partition�1.)MEMEND3ƒ=�$280000†The�endƒof�partition�1.;WHERLOAD‚=�$0‹Memory�address�where�boot�file�will�be�loaded6*˜If�nonzero,�VERSAdos�will�be�moved�at�initialization*˜time.6CACHEF„=�0ŒNot�used�by�VMES10�(needed�by�&.INITDAT.AG)3ASMTYPEƒ=�0ŒType�of�assembler�to�use�for�INITIO1.AG *œ0�-�Use�ASM*œ1�-�Use�ASM020 EMSG‰*****************************************************************)MSG‰**‚Parameters�about�table�sizes,�etc.EMSG‰***************************************************************** 'PAGESIZE‚=�\PGSIZE†From�.RMS.CI*ASN‡=�127Š#�of�address�spaces EMSG‰***************************************************************** MSG‰**½**#MSG‰**ŒADDRESS�AND�DATA�BUS�SIZE˜**=MSG‰**…---------------------------------------------------…**'MSG‰**ŒA$SIZE�=‚WIDTH�OF�ADDRESS�BUS“** MSG‰**½**)MSG‰**Œ32…=‚32�BIT�EXTENDED�ADDRESSING�**)MSG‰**Œ24…=‚24�BIT�STANDARD�ADDRESSING�** MSG‰**½**$MSG‰**ŒD$SIZE�=‚WIDTH�OF�DATA�BUS–** MSG‰**½**#MSG‰**Œ32…=‚32�BIT�LONGWORD�DATA“**MSG‰**Œ16…=‚16�BIT�WORD�DATA—** MSG‰**½**EMSG‰***************************************************************** D$SIZE„=�16 A$SIZE„=�24 GMSG‰*******************************************************************>MSG‰*ƒCopy�the�system�initializer�into�M68XXX.INIT.RO�based�on:MSG‰*ƒthe�type�of�memory�allocation�defined�at�RMSGEN�timeMSG‰*ƒin�.RMS.CD.GMSG‰******************************************************************* IFEQˆ\MEMALOC'ƒ=COPY‡BESTFIT.INIT.RO,M68XXX.INIT.RO;YENDC IFNEˆ\MEMALOC%ƒ=COPY‡BUDDY.INIT.RO,M68XXX.INIT.RO;YENDC GMSG‰*******************************************************************=MSG‰*ƒCopy�C8OC.SYSPAR.RO�into�&.SYSPAR.RO�to�make�it�genericAMSG‰*ƒfor�.LG�files�and�possible�for�sysgening�more�than�1�systemMSG‰*ƒper�account�#GMSG‰******************************************************************* "=COPY‡CAOE.SYSPAR.RO,&.SYSPAR.RO;YNN**ˆVMES10.CNFGDRVR.CI*'* Configuration file for device driversO*------------------------------------------------------------------------------D* This file sets up the flags used by the "VMES10.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/SYSTEM�DEPENDENCIES�are�included�from�the�&.VERSADOS.CD�file.�---;*�VMES10.SYSTEM.CIƒadd�processor�board/system�dependencies,(*˜including�local�terminals�and�printers6*�&.CNFGTASK.CI†add�O/S�task�con1 figuration�for�ROM/RAMM***************************************************************************** O*------------------------------------------------------------------------------@NOLTERMƒ=�1Œ#�of�terminals�on�VMES10�serial�ports�(TERM);�max=�1 O*------------------------------------------------------------------------------2NORWIN„=�1Œ#�of�RWIN1„Winchester�controller�boards* IFGTˆ\NORWIN+ƒCONTWIN1‚=�"0"Š1st�RWIN1�controller�number8ƒNHRWIN$1‚=�2Œ#�of�hardƒdisk�drives�on�1st�RWIN1;�max=�2:ƒNFRWIN$1‚=�1Œ#�of�floppy�disk�drives�on�1st�RWIN1;�max=�2BƒRWIN0$1ƒ=�"'H5WIN40'"‚Type�of�1st�hardƒdisk�on�1st�RWIN1,�drive�0BƒRWIN1$1ƒ=�"'H5WIN40'"‚Type�of�2nd�hardƒdisk�on�1st�RWIN1,�drive�1DƒRWIN2$1ƒ=�"'F5DDDSI'"‚Type�of�1st�floppy�disk�on�1st�RWIN1,�drive�2DƒRWIN3$1ƒ=�"'F5DDDSI'"‚Type�of�2nd�floppy�disk�on�1st�RWIN1,�drive�3 +ƒCONTWIN2‚=�"1"Š2nd�RWIN1�controller�number8ƒNHRWIN$2‚=�0Œ#�of�hardƒdisk�drives�on�2nd�RWIN1;�max=�2:ƒNFRWIN$2‚=�0Œ#�of�floppy�disk�drives�on�2nd�RWIN1;�max=�2$)- 5=#E M!U3]BƒRWIN0$2ƒ=�"'H5WIN40'"‚Type�of�1st�hardƒdisk�on�2nd�RWIN1,�drive�0BƒRWIN1$2ƒ=�"'H5WIN40'"‚Type�of�2nd�hardƒdisk�on�2nd�RWIN1,�drive�1DƒRWIN2$2ƒ=�"'F5DDDSI'"‚Type�of�1st�floppy�disk�on�2nd�RWIN1,�drive�2DƒRWIN3$2ƒ=�"'F5DDDSI'"‚Type�of�2nd�floppy�disk�on�2nd�RWIN1,�drive�3ƒ*Gƒ*…NOTE:‚You�can�not�mix�5-1/4"�and�8"�floppies.‚Pick�one�or�the�other.ƒ*ENDC O*------------------------------------------------------------------------------)NVME050ƒ=�0Œ#�of�VME050ƒSystem�Controller IFGTˆ\NVME0507ƒNT050$1ƒ=�0Œ#�of�terminals�on�the�VME050�board;�max=�26ƒNP050$1ƒ=�0Œ#�of�printers‚on�the�VME050�board;�max=�1ENDC O*------------------------------------------------------------------------------8NVME300ƒ=�0Œ#�of�MVME300‚IEEE�488�GPIB�controller�boards O*------------------------------------------------------------------------------ 4…=/RD=1=/ENDIF =/IF RD=0 …=/IFC�\1Š=/RD=1…=/ENDIF …=/IFC�\2Š=/RD=2…=/ENDIF …=/IFC�\3Š=/RD=3…=/ENDIF …=/IFC�\4Š=ARG�\1,\2,\3,N…=/ENDIF=/ENDIFJ=/*‚Set�Arg5�so�this�file�can't�be�rerun�directly�w/o�setting�proper�args!=ARG \1,\2,\3,\4,ARGS=OPT -N =/IF RD <> 0Mƒ=/*�INVOCATION�ERROR!�Insufficient,�null,�and/or�invalid�argument�specified!ƒ=/R?ƒ=END=/ENDIF *=/* ==== Start driver related file copyingO=/*----------------------------------------------------------------------------)=/* Copy all VM30 (MCCM) files for sysgen=/@„\1:9998.COPYGEN.VM30DRV.CFO=/*----------------------------------------------------------------------------(=/* Copy all IPC driver files for sysgen=/@„\1:9998.COPYGEN.IPCDRV.CFO=/*---4 -------------------------------------------------------------------------,=/* Copy all driver library files for sysgen=/@„\1:9998.COPYGEN.DRVLIB.CFO=/*----------------------------------------------------------------------------(=/* Copy all SIO driver files for sysgen=/@„\1:9998.COPYGEN.SIODRV.CFO=/*----------------------------------------------------------------------------"=/* Copy all VM22 files for sysgen=/@„\1:9998.COPYGEN.VM22DRV.CFrD{(ƒO=/*----------------------------------------------------------------------------*=/* Copy all disk related files for sysgen=/@„\1:9998.COPYGEN.DSKPARAM.CFO=/*----------------------------------------------------------------------------=/*=/**=/* ==== Start system related file copyingO=/*----------------------------------------------------------------------------+=/*‚Copy�all�VM04�specific�files�for�sysgen=/@„\1:9998.COPYGEN.VM04.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.CFO=/*----------------------------------------------------------------------------'=/* 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=/*‚Copy�all�the�rest�of�the�root�files�for�sysgen=/@„\1:9998.COPYGEN.ROOT.CFO=/*----------------------------------------------------------------------------=/*0=/*†VM04.COPYSGEN.CF‚completed.‰Have�a�nice�day!=/*N=/*‚No�"NOARG"�and�"=END"�because�independent�driver�release�items�may�follow!NNNN4 NNN**‚Included�files:*‰PAGE*‰&.UTILITY.MC*‰Z8036.Z8036.EQ*‰VM04.CTRLSTAT.EQ*‰M68020.CACR.EQ***ˆIf�there�is�to�be�an�MMU�in�this�system,*$*ˆ&.STR.EQ‡TRAP�0�AND�TRAP�1�EQUATES *ˆ&.TCB.EQ *ˆ&.KILL.MC*ˆ&.KILLEXEC.EQ* *ˆ&.MMUTYP.EQ**ˆFor�either�type�of�MMU,'*ˆ&.MMBPMMU.EQˆGeneral�MMB/PMMU�equates!*ˆ&.MMBPMMU.MCˆMacros�like�XPMOVE**ˆ&.TST.EQ‘Task�segment�table*°Sets�ADDRTYP�flag*ˆ&.MAP.EQ‘Memory�map�equates‰PAGE5INITIO„IDNTƒ45,0�RMS68K�I/O�initializer�for�the�VM04.O*******************************************************************************O*******************************************************************************O**********************************************************************************É***E***…ROUTINE:‚INITIO�--�RMS68K�I/O�INITIALIZER�FOR�THE�VM04�BOARD.†******É***J***…ENVIRONMENT:‚Part�of�the�RMS68K�exec�for�the�Motorola�68000�family.***(***‡Copyright�1983�by�Motorola,�Inc.¢******É***D***…FUNCTION:‚Routines�from�this�module�are�called�by�the�RMS68K‡***E***‡routine�INIT�during�system�initialization.‚All�board-specific„***.***‡initialization�is�done�in�this�module.œ******É***G***…NOTES:‚This�module�is�SUBSed,�ASMed,�and�LINKed�at�SYSGEN�time.„***?***‡All�modules�will�run�at�level�7�and�in�supervisor�mode.‹******É******"***†NOTE�on�T0ADDSEG�and�T0ADDMMIO***E***‚This�TRAP�#0�call�is�different�from�the�others�--�it�only�returns8***‚to�PC�with�condition�codes�set�up�to�indicate�error.***‚Why,�you�ask�?D***‚Because�it�is�the�same�routine�as�ADD_SEG_TO_MMU�which�is�calledH***‚by�GTSEG�and�others�and�I�didn't�want�to�change�the�return�for�them.E***‚---�Only�the�operating�system�should�use�these�particular�TRAP�#0 ***†calls.O*******************************************************************************O*******************************************************************************O*^*****************************************************************************ŠNOLISTŠINCLUDE�&.UTILITY.MC‹:”JœJ¤X¬F´Y¼`Ä6Ì0ÔGÜBäFì=ô"ŠINCLUDE�Z8036.Z8036.EQŠINCLUDE�VM04.CTRLSTAT.EQŠINCLUDE�M68020.CACR.EQ ‰IFNE†\MMU+‰INCLUDE‚&.STR.EQ‡TRAP�0�AND�TRAP�1�EQUATES‰INCLUDE‚&.TCB.EQ ‰INCLUDEƒ&.MMUTYP.EQ ‰IFEQ†\MMU-MMB851MMUTYPƒEQU‡MMB851‰ENDC‰IFEQ†\MMU-M68851MMUTYPƒEQU‡M68851‰ENDC(‰INCLUDEƒ&.MMBPMMU.MCƒMacros�like�XPMOVE.‰INCLUDEƒ&.MMBPMMU.EQƒGeneral�MMB/PMMU�equates‰INCLUDEƒ&.TST.EQ$‰INCLUDEƒ&.MAP.EQ‘Memory�map�equates‰INCLUDEƒ&.KILL.MC‰INCLUDEƒ&.KILLEXEC.EQ‰ENDC‰LIST‰PAGE* *‚XDEF's.*,ŠXDEFƒINITMMUŒRoutine�to�initialize�the�MMU.,ŠXDEFƒTIMERSTŒRoutine�to�start�up�the�timer.3ŠXDEFƒINITIO�Routine�to�set�up�all�the�other�board-*§specific�hardware. * *‚XREF's.* *…Routines:*…Parameters�from�INITDAT:-ŠXREFƒTIMSLICŒ#�of�timer�tics�per�time�slice.(ŠXREFƒTIMERA�Addr�of�timer�chip�(Z8036).4ŠXREFƒTIMINTVA‹#�of�milliseconds�between�timer�tics.4ŠXREFƒCLOCKFRQ‹Frequency�of�clock�(to�set�up�timer).+‰XREF†PAGESIZEŒINITDAT�--�sysgened�pagesize4‰XREF†MEMTABLŽINITDA5 T�--�Start�of�memory�descriptors*…SYSPAR�variables:6ŠXREF.S�MMUHEREŒAddr�of�MMU;�0�if�we're�not�using�one.ŠXREF.S�DATE�Date.0ŠXREF.S�TIMESLIC‹#�of�timer�tics�per�time�slice.7ŠXREF.S�TIMINTVŒTime�interval�between�timer�interrupts.+ŠXREF.S�PTMADDRŒAddr�of�timer�chip�(Z8036).,‰XREF†FC_TABLEŒSYSPAR�--�function�code�table0‰XREF†SUPERMMUŒSYSPAR�--�supervisor�root�pointer0‰XREF†TDEFTYP�SYSPAR�--�Type�of�memory�for�TCB's ‰XREF†TCBHD�SYSPAR�--�TCB�header *„Others:.ŠXREFƒCRASHSAV‹Place�to�SAVE�info�if�we�CRASH.  ŠLIST ‰IFNE†\MMU‰PAGEO**V***************************************************************************** *ˆINITMMU*@*ˆIf�we�are�supposed�to�have�an�MMB851,�verify�its�existence�and*ˆinitialize�it�by:*<*ˆ1.�Make�a�supervisor�tree�that�maps�logical�=�physical�and?*‹install�pointer�to�the�tree�in�supervisor�data�and�supervisor5*‹program�slots�in�the�function�code�table�in�SYSPAR.*:*ˆ2.�Make�a�translation�tree�for�each�task�that�is�already*‹in�the�system�via�sysgen.*=*ˆ3.‚Write�to�the�translation�control�register�of�the�MMB851.*A*ˆIf�we�are�supposed�to�have�an�MC68851,�verify�its�existence�and*ˆinitialize�it�by:*F*ˆ1.‚Write�a�page�descriptor�into�the�supervisor�root�pointer�register*Œof�the�MC68851.*:*ˆ2.�Make�a�translation�tree�for�each�task�that�is�already*‹in�the�system�via�sysgen.*>*ˆ3.‚Write�to�the�translation�control�register�of�the�MC68851.*,*ˆEntry:„Supervisor�mode,�interrupt�level�7.*!*ˆRegister�usage:…0�1�2�3�4�5�6�7*™D‚S‰S *™A‚S�S‡S**™P�=�entry�parameter*™R�=�returned�parameter*™S�=�saved�and�restored*™*�=�destroyed*"*ˆExit:‚Good�return�-�RTS‚to�INIT.*�Bad�return‚-�BSR�KILLER***,*ˆRevision�history�(add�new�changes�to�top).*ˆDate†Author‰ChangesF*ˆ--------‚-------------‚---------------------------------------------9*ˆ01/28/86‚BAWŒChanged�the�way�the�super�tree�is�built�--$*¡build�a�subtree�for�each�partition.*ˆ01/28/86‚BAWŒDeleted�24�bit�addressing�stuff;*ˆ12/10/85‚BAWŒChanged�FIND_MEM_END�to�find�highest�address%*¡regardless�of�RAM�or�ROM�partition.?*ˆ10/31/85‚CBS‰Changed�calls�to�KILLER�to�use�KILL.EXECT0�macro/*ˆ10/30/85‚BAWŒFixed�FIX_1_TCB�for�32�bit�stuff *ˆ06/25/85‚BAWŒOriginal�writing.*O*^******************************************************************************‰PAGE ‰SECTIONƒ8 ‰OPT‡P=68020‰OPT‡BRS‰OPT‡MEX INITMMU: ‰SAVE†D0/D4-D5/D7/A0-A1/A5‰IFEQ†\MMU-MMB851*****************************‚THIS�IS�FOR�THE�MMB851‚***************************** *@*‚Set�up�DFC�with�'7'�for�CPU�space�so�that�when�we�do�MOVES�the?*‚write�will�always�be�to�CPU�space,�where�the�MMB851�is�found.;*‚Also�set�up�SFC�with�'7'�so�we�can�read�MMB851�registers.* ‰MOVE.L„#7,D0‰MOVEC.LƒD0,DFC‰MOVEC.LƒD0,SFC 3‰MOVE.L„#$10000,MMUHERE…Address�of�MMB�in�CPU�space*>*‚Make�a�tree�for�the�supervisor�that�maps�logical�to�physical**/*‚Allocate�memory�for�a�fake�task�segment�table?*‚We�need�enough�256�byte�pages�to�hold�one�task�segment�table.**@FAKE_TST�EQU‡((TSTLEN+VPGMASK)&NOTVPGMASK)>>8ˆPages�for�fake�TST ‰CLR.L…D07‰MOVE.B„TDEFTYP,D0ŠGet�same�type�of�memory�as�for�TCB's‰SWAP†D0’Put�type�in�upper�word6‰MOVE.W„#FAKE_TST,D0ˆPut�number�of�pages�in�lower�word)‰MOVE.L„D0,A0�A0�<--�type,number�of�pages‰MOVE.L„#T0PAGAL,D0‰TRAP†#0‰BRA.S…INIT1_OK2‰KILL.EXECT0ƒINITIO1AG,PA_FTST_FAILED„Crash�systemINIT1_OK ‰MOVE.L„A0,A5**‚Clear�out�the�page�of�memory* ‰MOVE.W„#63,D1INIT2„CLR.L…(A0)+‰DBRA†D1,INIT2 *&*‚Get�index�into�MMU�info�area�into�D5*‰MOVE.W„#TSTMMU,D5*'*‚Get�index�into�attribute�area�into�D7*‰MOVE.W„#TSTATTR,D7*%*‚Build�a�subtree�for�each�partition.*‰BSR.L…FIX_PARTITIONS‰BSRNE.LƒGOTOKIL3*B*‚The�pointer�to�the�supervisor�table�should�now�be�in�the�TSTPMMU*‚slot�of�the�TST.C*‚Move�the�two�long�words�starting�at�TSTPMMU(A5)�into�the�SUPERMMU*‚slot�in�SYSPAR.*‰MOVE.L„TSTPMMU(A5),SUPERMMU ‰M5 OVE.L„TSTPMMU+4(A5),SUPERMMU+4  B*vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv*;*‚Now,�set�up�a�tree�for�memory-mapped�I/O�up�at�the�top�of*‚the�memory�map.*‰BSR.L…FIX_MMIO‰BSRNE…GOTOKILR**‚Deallocate�the�fake�TST�page.* ‰MOVE.L„A5,A0‰MOVE.L„#FAKE_TST,D1‰MOVE.L„#T0PGFR,D0‰TRAP†#0‰BRA.L…INIT3_OK%‰KILL.EXECT0ƒINITIO1AG,PF_FTST_FAILEDINIT3_OK‰ENDC‰IFEQ†\MMU-M68851*****************************‚THIS�IS�FOR�THE�M68851‚*****************************  3‰MOVE.L„#$10000,MMUHERE…Address�of�MMB�in�CPU�space *-*‚Move�something�into�status�part�of�SUPERMMU*=‰MOVE.L„#LDPDES,SUPERMMU+4„Put�the�code�for�a�page�descriptor%*¦into�the�address�field�of�SUPERMMU.** ‰ENDC‰PAGE.**********************************************,*‚HERE�FOR�EITHER�THE�MMB851�OR�THE�M68851‚*.********************************************** *>*‚Now,�set�up�a�translation�tree�for�each�TCB�that�has�already*‚been�created�at�sysgen�time.*‰BSR.L…FIX_TCBS‰BSRNE…GOTOKIL2*)*‚Set�up�translation�for�supervisor�space*‰XPMOVE„SUPERMMU,SRP  *+*‚Write�to�the�Translation�Control�register*‚Address�translation�enabled$*‚Function�code�table�lookup�enabledI*‚pagesize,�initial�skip,�and�TIx�fields�as�set�up�in�MMBPMMU.XEQUATES.EQ*1TCCNTLƒSET‡1<�means�OK* �couldn't�build�tree**,*ˆRevision�history�(add�new�changes�to�top).*ˆDate†Author‰ChangesF*ˆ--------‚-------------‚--------------------------------------------- *ˆ01/28/86‚BAWŒOriginal�writing.*O*^******************************************************************************1MEMSIZE‚EQU‡12’Size�of�a�MEMTABL�entry�in�INITDATFIX_PARTITIONS: ‰SAVE†D0/D1/D4/A0**‚Set�up�for�trap�call:* ‰CLR.W…D4 7‰LEA‡MEMTABL(PC),A0‹A0�<---�address�of�memory�map�table*¦from�INITDAT‰REPEAT 3‰MOVE.L„#T0ADDSEG,D0ˆMust�load�D0�each�time�because*¦TRAP�#0�handler�destroys�it.5‰MOVE.L„MAPSTRA(A0),D1†Beginning�address�of�partition ‰CLR.B…D12‰MOVE.L„D1,TSTLB(A5,D5)…into�logical�start�address 2‰MOVE.L„MAPENDA(A0),D1†Ending�address�of�partition(‰CLR.B…D1’Use�address�with�lowest�byte�0‰SUB.L…#$100,D10‰MOVE.L„D1,TSTLE(A5,D5)…into�logical�end�address**‚Do�the�trap�call*‰TRAP†#0(‰BEQ.L…ADD_OK„See�note�in�module�header. ‰BRA‡FIX_PERRADD_OK 6ŒLEA„MEMSIZE(A0),A0…Get�next�partition's‚MEMTABL�entry 5‰UNTIL.Wƒ(A0)‚‚#$FFFF„End�flag�for�MEMTABL�table. ‰RESTOREƒD0/D1/D4/A0‰RTS FIX_PERR ‰MOVE.B„#1,D0‰RESTOREƒD0/D1/D4/A0‰RTS‰PAGEO**V*******6 ********************************************************************** *ˆFIX_MMIO*$*ˆBuild�a�translation�tree�for�MMIO.5*ˆMap�logical�=�physical�from�$FFF00000�to�$FFFFFC00.**ˆEntry:„Called�by�INITMMU.*’A5�=�address�of�fake�TST"*’D5.W�=�offset�into�TSTMMU‚of�TST#*’D7.W�=�offset�into�TSTATTR�of�TST*’TSTAATTR(A5,D7)�=�0*!*ˆRegister�usage:…0�1�2�3�4�5�6�7 *™D‚S‰PƒP *™A‚S�S‡P**™P�=�entry�parameter*™R�=�returned�parameter*™S�=�saved�and�restored*™*�=�destroyed**ˆExit:‚RTS‚to�INITMMU&*’CC�=��translation�tree�set�up�ok*’CC�=��ran�out�of�memory**,*ˆRevision�history�(add�new�changes�to�top).*ˆDate†Author‰ChangesF*ˆ--------‚-------------‚--------------------------------------------- *ˆ09/19/85‚BAWŒOriginal�writing.*O*^***************************************************************************** FIX_MMIO: ‰SAVE„D0/A0-A1   ‰MOVE.L„#$FFF00000,TSTLB(A5,D5)‰MOVE.L„#$FFFFFC00,TSTLE(A5,D5)‰MOVE.L„#T0ADDSEG,D0 ‰TRAP†#0 !‰BEQ.SƒFIXM_OK�See�note�in�header‰BRA.SƒFIXM_ERR  FIXM_OK‰SETCCEQ‰RESTORE�D0/A0-A1‰RTSFIXM_ERR‰SETCCNE‰RESTOREƒD0/A0-A1‰RTS‰PAGEO**V***************************************************************************** *ˆFIX_TCBS*B*ˆBuild�a�translation�tree�for�each�TST�currently�on�the�TCB�list.**ˆEntry:„Called�by�INITMMU.*!*ˆRegister�usage:…0�1�2�3�4�5�6�7*™D‚S*™A„S**™P�=�entry�parameter*™R�=�returned�parameter*™S�=�saved�and�restored*™*�=�destroyed**ˆExit:‚RTS‚to�INITMMU&*’CC�=��translation�tree�set�up�ok*’CC�=��ran�out�of�memory**,*ˆRevision�history�(add�new�changes�to�top).*ˆDate†Author‰ChangesF*ˆ--------‚-------------‚--------------------------------------------- *ˆ09/19/85‚BAWŒOriginal�writing.*O*^*****************************************************************************‰PAGE FIX_TCBS: ‰SAVE†D0/A1‰MOVE.L„TCBHD,D0‰WHILEƒ‚DO ‘MOVE.L�D0,A1‘BSR„FIX_1_TCB ‘BNE„FIX_ERR ‘MOVE.LƒTCBALL(A1),D0 ‰ENDW 6FIX_ERR‚EQU‚*‰Note�that�condition�codes�get�set�above.‰RESTORE‚D0/A1‰RTS‰PAGEO**V***************************************************************************** *ˆFIX_1_TCB*7*ˆBuild�a�translation�tree�for�this�task,�all�segments.**ˆEntry:„Called�by�FIX_TCBS*’A1�=�address�of�TCB*!*ˆRegister�usage:…0�1�2�3�4�5�6�7 *™D‚S‰SƒS*™A„P‡S**™P�=�entry�parameter*™R�=�returned�parameter*™S�=�saved�and�restored*™*�=�destroyed**ˆExit:‚RTS‚to�INITMMU&*’CC�=��translation�tree�set�up�ok*’CC�=��ran�out�of�memory**,*ˆRevision�history�(add�new�changes�to�top).*ˆDate†Author‰ChangesF*ˆ--------‚-------------‚---------------------------------------------/*ˆ10/30/85‚BAWŒFixed�FIX_1_TCB�for�32�bit�stuff *ˆ09/19/85‚BAWŒOriginal�writing.*O*^***************************************************************************** FIX_1_TCB: ‰SAVE„D0/D5/D7/A5 8‰MOVE.L‚TCBTST(A1),A5‰A5�<---�task�segment�table�address‰MOVE.W‚TCBATTR(A1),D0'‰AND.Wƒ#1<‚THEN�Real�time�task�... 0‘MOVE.L‚SUPERMMU,TSTPMMU(A5)‚Use�supervisor�tree ‘MOVE.L‚SUPERMMU+4,TSTPMMU+4(A5) 6‘MOVE.W‚#0,TSTASN(A5)‰Clear�TSTASN�to�indicate�real�tm ‰ELSEšNot�a�real�time�task�... .‘ST†TSTASN(A5)ŒSet�TSTASN�to�indicate�not�real*°time  *..................... ‘CLR.L‚D5‘MOVE.W�#TSTMMU,D5‘MOVE.W�#TSTATTR,D7‘REPEAT“BTST�#SEGAUSED,TSTAATTR(A5,D7) “IF‚‚THEN ˜CLR.WŠD4˜MOVE.L‰#T0ADDSEG,D0˜TRAP�#0"˜BEQ.S‚FIX_1_OKŠSee�note�in�header˜BRA.S‚FIX_1_ERR FIX_1_OK�EQU‡*“ENDI “ADD.W…#TSTMLEN,D5“ADD.W…#TSTALEN,D7 ‘UNTIL‚D5‚‚#TSTMEND *........ ‰ENDI ‰CMP.BƒD0,D0‰RESTOREƒD0/D5/D7/A5‰RTS FIX_1_ERR ‰MOVE.B‚#1,D0‰RESTOREƒD0/D5/D7/A5‰RTS  ‰ENDC ‰IFEQ†\MMU ‰SECTIONƒ86 NNNNINITMMU:‰RTS‰ENDC ‰OPT‡NOMEXŠPAGE O**********************************************************************************ˆSTART�TIMER„(Z8036�TIMER)**N*********************************************************************************ˆCounter�Mode�Spec�Reg*CSC†SET‡$00‘Initialize/CSC†SET‡1<<7+CSCŒEnable�Continuous�Single�Cycle***C1EN…SET‡$00‘Initialize�it C1EN…SET‡1<<2+C1EN‹Enable�port�A#C1EN…SET‡1<<6+C1EN‹Enable�Counter�1 C1EN…SET‡1<<7+C1EN‹Enable�port�B*)*ˆset�up�control/status�reg�for�Counter�1* C1SR…SET‡$001C1SR…SET‡0<<0+C1SR‹This�is�a�read-only�status�bit*¦shows�count�in�progress,C1SR…SET‡1<<1+C1SR‹This�is�a�write-only�bit,*¦trigger�enabled8C1SR…SET‡1<<2+C1SR‹Count-down�sequence�to�resume�enabled0C1SR…SET‡0<<3+C1SR‹Read�counter�control�disabled.C1SR…SET‡0<<4+C1SR‹Int.�error,�a�read-only�bitC1SR…SET‡0<<5+C1SR‹Int.�pending"*¦1�=�the�timer�requires�servicing)C1SR…SET‡1<<6+C1SR‹Enable�timer�interrupt-C1SR…SET‡1<<7+C1SR‹Int.�under�service�enabled* TIMERST: +ŠSAVEƒD0/A1ŽSave�registers�we'll�blow�away. E‰MOVE.W�TIMSLIC(PC),TIMESLIC‚#�TIMER�INTERRUPTS�BEFORE�TASK�INTERRUPTNNN‰LEA„Z8036,A1�GET�TIMER�ADDRESS#‰MOVE.L�A1,PTMADDR�SAVE�IT�FOR�EXEC!‰BEQ.L‚TIMERBE�BRANCH�IF�NO�TIMER)‰PEA„TIMERBE(PC)ŒWHERE�TO�GO�ON�BUS�ERROR$‰MOVE.W�#'BE',-(A7)ŒSET�BUS�ERR�FLAG**7‰MOVE.B„#CSC,CT1MO(A1)†Set�continuous�mode�on�counter�1*‰NOP›This�NOP�forces�the�execution�unit�to$*§wait�for�the�bus�interface�unit�to%*§complete�on�a�68020�(in�case�we�get*§a�bus�error). *H*‚Get�the�timer�"tick"�interval�(in�milliseconds)�and�save�it�in�SYSPAR.*8ŠMOVEƒTIMINTVA(PC),D0„D0�<--�tick�interval�from�INITDAT.#ŠMOVEƒD0,TIMINTV‰Save�it�in�SYSPAR. *L*‚Now�calculate�the�number�of�cycles�the�timer�should�count�between�"ticks."&*‚Apparently�we�have�a�2�Mhz�input,�so<*„(#�of�cycles/tick)‚=‚(2000�cycles/msec)�*�(#�of�msec/tick)*'ŠMULUƒ#2000,D0‹D0�<--�#�of�cycles/tick.>ŠMOVE.B�D0,CT1PL(A1)‡Give�the�chip�the�least�significant�part.3ŠLSR„#8,D0ŽGive�the�chip�the�most‚significant�part.ŠMOVE.B�D0,CT1PM(A1)‡* **ˆNow�start�timer�ticking*'‰MOVE.B�#C1EN,MCCR(A1)ˆENABL7 E�COUNTER�1(‰MOVE.B�#C1SR,C1CSR(A1)‡ENABLE�INTERRUPT.‰ADD.L‚#6,A7‘REMOVE�'BE'�AND�BUS�ERROR�ADDRESS !ŠRESTORE�D0/A1�Restore�registers.‰RTSšBACK�TO�INIT***;TIMERBE‚MOVE.L‚#CRASHSAV,PTMADDR‚USE�DUMP�POINTER�FOR�TIMER!ŠRESTORE�D0/A1�Restore�registers.‰RTS˜BACK�TO�INIT ***‰PAGE ‰XDEF„INITIO ‰SECTIONƒ8.**********************************************,*ƒValues�to�put�in�VM04�control�registers.�*.************************************************ˆMaster�Interrupt�Control�Reg* INTCN„SET‡$00$INTCN„SET‡0<<0+INTCNŠ0�=�Clear�reset*¦1�=�Software�reset3INTCN„SET‡1<<1+INTCNŠEnable�right�justified�address1INTCN„SET‡0<<2+INTCNŠTimer�vector�includes�status *¦disabled2INTCN„SET‡0<<3+INTCNŠPort�B�vector�includes�status *¦disabled2INTCN„SET‡0<<4+INTCNŠPort�A�Vector�includes�status *¦disabled6INTCN„SET‡1<<5+INTCNŠ1�=�no�int.�vector�during�an�IACK*¦0�=�output�the�int.�vector6INTCN„SET‡0<<6+INTCNŠ1�=�disable�int.�from�lower�chain*¦0�=�operate�normally,INTCN„SET‡1<<7+INTCNŠEnable�master�interrupt**‚Control�reg�0*-ICNT0„SET…$00�VERSAbus�int.�vector�number�reg*£These�bits�are�enabled�during *£IACK�cycles**‚Control�reg�1*ICNT1„SET…$00�Initialize�it'ICNT1„SET…0<<0+ICNT1‰NA�(not�available)ICNT1„SET…0<<1+ICNT1‰NAICNT1„SET…0<<2+ICNT1‰NA2ICNT1„SET…0<<3+ICNT1‰Disable�VERSAbus�system�reset8*ICNT1„SET…1<<4+ICNT1‰1�=�VERSAbus�32�bit�data�port�size$*£0�=�VERSAbus�16�bit�data�port�sizeICNT1„SET…0<<5+ICNT1‰NA2ICNT1„SET…1<<6+ICNT1‰Enable�RAMbus�diag.�interruptICNT1„SET…0<<7+ICNT1‰NA**‚Control�reg�2* ICNT2„SET…$00;ICNT2„SET…0<<0+ICNT2‰1�=�VERSAbus�int.�status�int.�disabled'*£0�=�VERSAbus�int.�status�int.�enabledICNT2„SET…0<<1+ICNT2‰Ack�VBIRQ1ICNT2„SET…0<<2+ICNT2‰Ack�VBIRQ2ICNT2„SET…0<<3+ICNT2‰Ack�VBIRQ3ICNT2„SET…0<<4+ICNT2‰Ack�VBIRQ4ICNT2„SET…0<<5+ICNT2‰Ack�VBIRQ5ICNT2„SET…0<<6+ICNT2‰Ack�VBIRQ6 ICNT2„SET…1<<7+ICNT2‰mask�VBIRQ7**‚Control�reg�3* ICNT3„SET…$00;ICNT3„SET…1<<0+ICNT3‰0�=�put�VERSAbus�monitor�in�test�mode.&*§1�=�VERSAbus�monitor�in�normal�mode.0ICNT3„SET…0<<1+ICNT3‰Interrupt�Request�Level�IL0ICNT3„SET…0<<2+ICNT3‰IL1ICNT3„SET…0<<3+ICNT3‰IL2*§IL0-2�corresponds�to�VBIRQx-ICNT3„SET…0<<4+ICNT3‰0�=�cache�test�mode�off.*§1�=�cache�test�mode�on.;ICNT3„SET…\SYSFAIL<<5+ICNT3‚0�=�disable�SYSFAIL�interrupts. *§1�=�enable‚SYSFAIL�interrupts.0ICNT3„SET…1<<6+ICNT3‰0�=�disable�all�interrupts.*§1�=�enable�all�interrupts.6ICNT3„SET…0<<7+ICNT3‰Disallow�VERSAbus�monitor�overrun *£interrupt**‚Control�reg�4* ICNT4„SET…$00)ICNT4„SET…0<<0+ICNT4‰1�=�SYSFAIL�asserted*£0�=�SYSFAIL�negates,ICNT4„SET…0<<1+ICNT4‰1�=�cache�read�disabled*£0�=�cache�read�enabled-ICNT4„SET…0<<2+ICNT4‰1�=�cache�write�disabled*£0�=�cache�write�enabled2ICNT4„SET…0<<3+ICNT4‰1�=�all�cache�entries�cleared*£0�=�cache�is�not�cleared4*ICNT4„SET…1<<4+ICNT4‰1�=�32-bit�VERSAbus�addressing *£0�=�16-bit�VERSAbus�addressing0ICNT4„SET…1<<5+ICNT4‰1�=�enable�VERSAbus�caching *£0�=�disenable�VERSAbus�caching1ICNT4„SET…1<<6+ICNT4‰1�=�VERSAbus�monitor�enabled*£0�=�VERSAbus�monitor�cleared1ICNT4„SET…1<<7+ICNT4‰Enable�VERSAbus�monitor�test ***‚Control�register�5.*/ICNT5„SET…$0F�Begin�with�all�cacheing�disabled.(ICNT5„SET…-\CACHEUI<<0+ICNT5�If�CACHEUI,'ICNT5„SET…-\CACHEUD<<1+ICNT5�.‚CACHEUD,'ICNT5„SET…-\CACHESI<<2+ICNT5�.‚CACHESI,FICNT5„SET…-\CACHESD<<3+ICNT5�or�CACHESD�are�1,�clear�the�corresponding*§bits�to�enable�cacheing. 8ICNT5„SET�1<<4+ICNT5�0�=�let�PAL�decode�68020�addresses.(*§1�=�let�RAMbus�decode�68020�addresses. =ICNT5„SET�1<<5+ICNT5�0�=�force�RAMbus�writes�to�the�VERSAbus.%*§1�=�allow�writes�across�the�RAMbus. (*ICNT5„SET�0<<6+ICNT5�0�=�enable�RAMbus.*§1�=�disable�RAMbus. 8ICNT5„SET�1<<7+ICNT5�0�=�we�are�secondary�RAMbus�master.#*§1�=�we�are�primary�RAMbus�master.*PANL…SET�$0DŒshown�"D"�on�LED *G*‚Set�up�the�value�with�which�to�initialize�the�CACR.‚This�value�shouldD*‚cause�the�cache�to�be�flushed�and,7 �if�sysgen�parameter�CACHE020�so%*‚specifies,�should�enable�the�cache.*CACR_VALUE‚SETŠ1<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*‚>>>>>>>µ<<<<<<<*‚>>>>>>>•NOTICEš<<<<<<<*‚>>>>>>>µ<<<<<<<>*‚>>>>>>>…When�incorporating�any�drivers�during�SYSGEN„<<<<<<<?*‚>>>>>>>…that�require�memory�allocated�for�them�as�perƒ<<<<<<<?*‚>>>>>>>…the�driver�package�instructions�-�this�is�theƒ<<<<<<<,*‚>>>>>>>…spot�the�file(s)�go�into!!–<<<<<<<*‚>>>>>>>µ<<<<<<<=*‚>>>>>>>…This�is�also�the�spot�for�code�for�a�driver…<<<<<<<>*‚>>>>>>>…that‚requires�other�types�of�initialization,ƒ<<<<<<<0*‚>>>>>>>…such‚as�clearing�an�interrupt.‘<<<<<<<*‚>>>>>>>µ<<<<<<<*‚>>>>>>>‘MERGE�IT�HERE—<<<<<<<*<*ˆWhen�you�write�the�code�that�is�to�be�merged�here,�wrap�it*ˆaround�with�the�following:*:*ˆAt�the�beginning,�with�DRVRxOUT�referring�to�your�unique*ˆlabel,�put�this�code:*'*‹PEA„DRVRxOUT(PC)„IF�BUS�ERROR�OCCURS,*¢RETURN�OR�GO�ON�TO�NEXT*¢DRIVER'S�INITIALIZATION**‹MOVE.W�#'BE',-(A7)…SAVE�'BUS�ERROR'�FLAG*9*ˆThen�insert�the�code�to�do�what�you�need�to�do�for�this*ˆparticular�driver.**ˆAt�the�end,�put�this:***‹LEA„6(A7),A7ˆREMOVE�BUS�ERROR�FROM�STACK*DRVRxOUTƒEQU„**=*ˆIn�this�way,�if�the�code�for�one�driver�causes�a�bus�error,.*ˆthe�code�for�other�drivers�will�be�executed.*E*‚>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<G***********************************************************************    ‰END8 NNNN**ˆ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/SYSTEM�DEPENDENCIES�are�included�from�the�&.VERSADOS.CD�file.�---9*�VM04.SYSTEM.CIƒadd�processor�board/system�dependencies,(*–including�local�terminals�and�printers6*�&.CNFGTASK.CI„add�O/S�task�configuration�for�ROM/RAMM***************************************************************************** O*------------------------------------------------------------------------------DNOLTERMƒ=�2Š#�of�terminals�using�VM04�(MK68564)�serial�ports;�max=�2 O*------------------------------------------------------------------------------=NOVM20„=�0Œ#�of�VM20…FDC�(floppy�only�disk�controller�boards) *¦two�board�set;�uses�IPC�driver*¦(see�"&.IPCDRV.CI") IFGTˆ\NOVM207ƒNFV20$1ƒ=�0Œ#�of�floppy�disk�drives�on�1st�FDC;�max=�47ƒNFV20$2ƒ=�0Œ#�of�floppy�disk�drives�on�2nd�FDC;�max=�4 ?ƒVM200$1ƒ=�"'F8SDDSM'"‚Type�of�1st�floppy�disk�on�1st�FDC�board?ƒVM201$1ƒ=�"'F8SDDSM'"‚Type�of�2nd�floppy�disk�on�1st�FDC�board?ƒVM202$1ƒ=�"'F8SDDSM'"‚Type�of�3rd�floppy�disk�on�1st�FDC�board?ƒVM203$1ƒ=�"'F8SDDSM'"‚Type�of�4th�floppy�disk�on�1st�FDC�board ?ƒVM200$2ƒ=�"'F8SDDSM'"‚Type�of�1st�floppy�disk�on�2nd�FDC�board?ƒVM201$2ƒ=�"'F8SDDSM'"‚Type�of�2nd�floppy�disk�on�2nd�FDC�boardü), ?ƒVM202$2ƒ=�"'F8SDDSM'"‚Type�of�3rd�floppy�disk�on�2nd�FDC�board?ƒVM203$2ƒ=�"'F8SDDSM'"‚Type�of�4th�floppy�disk�on�2nd�FDC�boardENDC O*------------------------------------------------------------------------------;NOVM21„=�1Œ#�of�VM21…UDC�(universal�disk�controller�boards)%*¦floppy�&�hard�disks;�two�board�set;*¦uses�IPC�driver*¦(see�"&.IPCDRV.CI") IFGTˆ\NOVM215ƒNHV21$1ƒ=�2Œ#�of�hardƒdisk�drives�on�1st�UDC;�max=�47ƒNFV21$1ƒ=�2Œ#�of�floppy�disk�drives�on�1st�UDC;�max=�45ƒNHV21$2ƒ=�0Œ#�of�hardƒdisk�drives�on�2nd�UDC;�max=�47ƒNFV21$2ƒ=�0Œ#�of�floppy�disk�drives�on�2nd�UDC;�max=�4 =ƒVM210$1ƒ=�"'FXLRK25'"‚Type�of�1st�hardƒdisk�on�1st�UDC�board=ƒVM211$1ƒ=�"'RMLRK25'"‚Type�of�2nd�hardƒdisk�on�1st�UDC�board=ƒVM212$1ƒ=�"'FXCMD80'"8 ‚Type�of�3rd�hardƒdisk�on�1st�UDC�board=ƒVM213$1ƒ=�"'RMCMD16'"‚Type�of�4th�hardƒdisk�on�1st�UDC�board ?ƒVM214$1ƒ=�"'F8SDDSM'"‚Type�of�1st�floppy�disk�on�1st�UDC�board?ƒVM215$1ƒ=�"'F8SDDSM'"‚Type�of�2nd�floppy�disk�on�1st�UDC�board?ƒVM216$1ƒ=�"'F8SDDSM'"‚Type�of�3rd�floppy�disk�on�1st�UDC�board?ƒVM217$1ƒ=�"'F8SDDSM'"‚Type�of�4th�floppy�disk�on�1st�UDC�board =ƒVM210$2ƒ=�"'FXLRK25'"‚Type�of�1st�hardƒdisk�on�2nd�UDC�board=ƒVM211$2ƒ=�"'RMLRK25'"‚Type�of�2nd�hardƒdisk�on�2nd�UDC�board=ƒVM212$2ƒ=�"'FXCMD80'"‚Type�of�3rd�hardƒdisk�on�2nd�UDC�board=ƒVM213$2ƒ=�"'RMCMD16'"‚Type�of�4th�hardƒdisk�on�2nd�UDC�board ?ƒVM214$2ƒ=�"'F8SDDSM'"‚Type�of�1st�floppy�disk�on�2nd�UDC�board?ƒVM215$2ƒ=�"'F8SDDSM'"‚Type�of�2nd�floppy�disk�on�2nd�UDC�board?ƒVM216$2ƒ=�"'F8SDDSM'"‚Type�of�3rd�floppy�disk�on�2nd�UDC�board?ƒVM217$2ƒ=�"'F8SDDSM'"‚Type�of�4th�floppy�disk�on�2nd�UDC�boardENDC O*------------------------------------------------------------------------------8NOVM22„=�1Œ#�of�VM22…SMD�disk�controllers�boards�(single*¦board) IFGTˆ\NOVM222ƒNHV22$1ƒ=�2Œ#�of�hardƒdisk�drives�on�VM22;�max=�84ƒNFV22$1ƒ=�4Œ#�of�floppy�disk�drives�on�VM22;�max=�4 >ƒVM220$1ƒ=�"'FXCMD80'"‚Type�of�1st�hardƒdisk�on�1st�VM22�board>ƒVM221$1ƒ=�"'RMCMD16'"‚Type�of�2nd�hardƒdisk�on�1st�VM22�board>ƒVM222$1ƒ=�"'FXCMD80'"‚Type�of�3rd�hardƒdisk�on�1st�VM22�board>ƒVM223$1ƒ=�"'RMCMD16'"‚Type�of�4th�hardƒdisk�on�1st�VM22�board>ƒVM224$1ƒ=�"'FXCMD80'"‚Type�of�5th�hardƒdisk�on�1st�VM22�board>ƒVM225$1ƒ=�"'RMCMD16'"‚Type�of�6th�hardƒdisk�on�1st�VM22�board>ƒVM226$1ƒ=�"'FXCMD80'"‚Type�of�7th�hardƒdisk�on�1st�VM22�board>ƒVM227$1ƒ=�"'RMCMD16'"‚Type�of�8th�hardƒdisk�on�1st�VM22�board @ƒVM228$1ƒ=�"'F8SDDSM'"‚Type�of�1st�floppy�disk�on�1st�VM22�board@ƒVM229$1ƒ=�"'F8SDDSM'"‚Type�of�2nd�floppy�disk�on�1st�VM22�board@ƒVM22A$1ƒ=�"'F5DDDSI'"‚Type�of�3rd�floppy�disk�on�1st�VM22�board@ƒVM22B$1ƒ=�"'F5DDDSI'"‚Type�of�4th�floppy�disk�on�1st�VM22�boardENDC O*------------------------------------------------------------------------------7NOVM30„=�1Œ#�of�VM30…MCCM�(multi-channel�communications *¦boards)(*¦uses�IPC�driver;�has�1�printer�port/bd*¦(see�"&.IPCDRV.CI") IFGTˆ\NOVM30/ƒNTV30$1ƒ=�4Œ#�of�terminals�on�1st�MCCM;�max=�4.ƒNPV30$1ƒ=�1Œ#�of�printers‚on�1st�MCCM;�max=�1/ƒNTV30$2ƒ=�0Œ#�of�terminals�on�2nd�MCCM;�max=�4.ƒNPV30$2ƒ=�0Œ#�of�printers‚on�2nd�MCCM;�max=�1/ƒNTV30$3ƒ=�0Œ#�of�terminals�on�3rd�MCCM;�max=�4.ƒNPV30$3ƒ=�0Œ#�of�printers‚on�3rd�MCCM;�max=�1/ƒNTV30$4ƒ=�0Œ#�of�terminals�on�4th�MCCM;�max=�4.ƒNPV30$4ƒ=�0Œ#�of�printers‚on�4th�MCCM;�max=�1ENDC O*------------------------------------------------------------------------------NN**ˆVM04.IFDRVR.CI*** Conditional file for VM04 device driversO*------------------------------------------------------------------------------J*‚This�file�uses�flags�setup�in�the�VM04.CNFGDRVR.CI�file�to�conditionally*‚include�device�drivers.*J*‚The�user�should�not�have�to�modify�this�file�to�include/exclude�drivers.*D*„******************************************************************?*„**‚NOTICE:‚The�following�conditionals�are�order�dependent.„**3*„**‹Do�not�change�the�order!‚Local�drivers�1st.‡**9*„**‹The�order�determines�device�number�(HD00,PR,�etc)‚***„**‹for�most�items.¤**D*„*******************************************************************>*„NOTE:‚"CN00"�thru�"CN09"�reserved�for�non�VM30�(MCCM)�ports.* IFNEˆ\NO9 LTERMƒINCLUDE…&.SIODRV.CIENDC* IFNEˆ\NOVM22ƒINCLUDE…&.VM22DRV.CIENDC*IFNEˆ\NOVM20+\NOVM21+\NOVM30ƒINCLUDE…&.IPCDRV.CIENDC* IFNEˆ\NOVM30?ƒ*„NOTE:‚"CNn0"�thru�"CNn3"�reserved�for�these�each�MCCM�board,+ƒ*‹where�"n"�is�the�board�number�(1,2,...).7ƒ*‹"PRn�"�is�assigned�sequentially�for�each�MCCM�board.ƒINCLUDE…&.VM30DRV.CIENDCNNN%**ˆVM04.SYSTEM.CI*L****************************************************************************>*‚This�file�contains�all�board/system�dependencies�for�VM04.Ž*&*‚It�is�called�from�"&.VERSADOS.CD".¦**Ê*E*‚The�user�should�not�have�to�modify�this�file�except�under�extreme‡**‚circumstances.º*L****************************************************************************  <*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~**†ON�BOARD�RAM�ADDRESSES*>*†VMEbus�drivers�require�the�following�target�system�dependentB*†variables�to�be�defined�when�the�macro�file�DUALPORT.MC�is�used:<*†Note�that�the�ONBD$HI�parameter�may�vary�on�the�VME110�and<*†and�VME101�systems�depending�on�the�size�and�number�of�RAM<*†chips�used�on�the�processor�card.‚The�values�shown�are�the?*†minimum�requirements.�Modify�that�parameter�to�match�your�own*†system�if�different.**;ONBD$LOƒ=�$0‹Low�value�for�on-board�ram�(as�seen�by�driver)RAM$SQ„=�$0‹Difference�between�on-board�ram�address�as�seen�by*˜driver�and�device.JOFFBD$LO‚=�\ONBD$LO+\RAM$SQ�Low�value�for�on-board�ram�(as�seen�by�device)JOFFBD$HI‚=�\ONBD$HI+\RAM$SQ�High�valu�for�on-board�ram�(as�seen�by�device) FMSG‰******************************************************************MSG‰**ˆAddresses�of�timer,�etc.FMSG‰****************************************************************** #TIMER…=�$FFFB0000„Address�of�timer.3CLOCKFRQ‚=�0ŒNumber�of�clock�ticks�per�millisecond.5PANEL…=�$0‹Address�of�front�panel�(not�used�on�VM04).5TRCFLAGƒ=�0ŒTrace�flag.‚Zero�implies�don't�trace.‚The/*˜setting�of�bits�in�the�TRCFLAG�parameter�will1*˜control�which�events�cause�an�entry�to�be�built*˜in�the�trace�table.*˜Bit�#�in�TRCFLAG†Event *›15‘TRAP�#1*›14‘I/O�interrupt�not�claimed*°by�user�task.*›13‘Timer�interrupt.*›12‘User�trap�(2-15)*›11‘Exception *›10‘Dispatch*œ9‘I/O�interrupt�claimed�by *°user�task*œ8‘Return�from�LOADMMU*œ7‘Simulated�interrupt7'./ 7+?2*œ6‘SYSFAIL�interrupt.**?SYSFAILƒ=�0ŒDetermines�whether�or�not�the�operating�system�will5*˜be�interrupted�when�SYSFAIL�is�asserted�on�the�bus.2*˜Some�intelligent�boards�will�assert�SYSFAIL�when0*˜they�experience�a�failure�of�some�kind.‚If�you9 5*˜have�such�boards�in�the�system,�AND�THE�DRIVERS�FOR3*˜THESE�BOARDS�HAVE�SYSFAIL�HANDLERS,�then�you�will2*˜probably�want�SYSFAIL�interrupts�enabled.‚If�the4*˜appropriate�SYSFAIL�handlers�are�not�written,�then5*˜taking�a�SYSFAIL�interrupt�will�hang�up�the�system,0*˜so�you�would�want�SYSFAIL�interrupts�disabled.!*š0�=�disable�SYSFAIL�interrupts. *š1�=‚enable�SYSFAIL�interrupts.FMSG‰******************************************************************.MSG‰**ƒLocal�terminal/printer�device�addresses#MSG‰**ƒShort�I/O�space�base�address&MSG‰**ƒShort�I/O�space�address�offsetsFMSG‰****************************************************************** :&VECTNOƒ=�$FFŠStarting�Vector�Number‚used�by�IOC.IPCDRV.AG6LTDA$01ƒ=�$FFFB0040„VM04�local�terminal�port�1�address6LTDA$02ƒ=�$FFFB0050„VM04�local�terminal�port�2�address 3SIOBASEƒ=�$FFFF0000„Base�address�of�Short�I/O�space&DEVADDƒ=�\SIOBASE.RMS.CI�file�and�has�a�value�equal!*œto�the�initial�program�counter.*@*ˆThe�following�parameters�are�used�to�define�memory�partitions.A*ˆIf�only�partition�0�exists,�then�MEMEND2�should�be�set�to�zero.*:*ˆThe�MMB851�uses�approximately�$400�bytes�of�overhead�for,*ˆevery�$40000�bytes�of�memory�to�be�mapped.9*ˆThus�supervisor�memory�(where�the�translation�trees�are>*ˆbuilt)�must�be�large�enough�($38000�works,�$28000�does�not).;*ˆAlso,�if�you�want�to�put�memory�at�a�high�address�with�no5*ˆmemory�in�between,�you�must�partition�memory�into�a;*ˆpartition�for�low�addresses,�and�a�partition�for�the�high8*ˆaddresses.�Otherwise�you�could�run�out�of�memory�while!*ˆbuilding�the�translation�trees.*IFNEˆ\MMU�If�MMUNNNNN'ƒIFEQˆ\MEMALOC†Using�Best�Fit�algorithmF†*********************************************************************†*†*�WARNING�!!!!†*C†*�Set�up�MEMEND2�to�start�on�a�PGSIZE�boundary,�where�PGSIZE�is�as†*�defined�in�VM04.RMS.CI.†*F†***********: ********************************************************** 3†NOPARTSƒ=�2ŒNumber�of�memory�partitions�(needed�by†*˜&.INITMEM.AG)@†MEMEND1ƒ=�$48000‡The�endƒof�partition�0�(assumed�to�start�at�0)+†MEMEND2ƒ=�$48000‡The�start�of�partition�1.*†MEMEND3ƒ=�$400000†The�endƒof�partition�1.ƒENDC,ƒIFNEˆ\MEMALOC†Using�Buddy�Buffers�algorithm3†NOPARTSƒ=�1ŒNumber�of�memory�partitions�(needed�by†*˜&.INITMEM.AG)A†MEMEND1ƒ=�$400000†The�endƒof�partition�0�(assumed�to�start�at�0)'†MEMEND2ƒ=�$0‹The�start�of�partition�1.%†MEMEND3ƒ=�$0‹The�endƒof�partition�1.ƒENDCENDCIFEQˆ\MMU‰If�No�MMU3ƒNOPARTSƒ=�1ŒNumber�of�memory�partitions�(needed�byƒ*˜&.INITMEM.AG)BƒMEMEND1ƒ=�$400000†The�endƒof�partition�0�(assumed�to�start�at�0).'ƒMEMEND2ƒ=�$0‹The�start�of�partition�1.%ƒMEMEND3ƒ=�$0‹The�endƒof�partition�1.ENDC:WHERLOAD‚=�0ŒMemory�address�where�boot�file�will�be�loaded6*˜If�nonzero,�VERSAdos�will�be�moved�at�initialization*˜time.6NVME316ƒ=�0ŒNot�used�by�VM04�(needed�for�&.SYSINIT.CI)5CACHEF„=�0ŒNot�used�by�VM04�(needed�for�&.INITDAT.AG) =CACHE020‚=�1ŒThis�flag�determines�whether�the�68020's�on-chip!*˜instruction�cache�will�be�used:*š0�=�don't�use�it. *š1�=�use�it. 7*˜The�following�flags�determine�which�types�of�accessesNN7*˜will�get�cached�by�the�VM04's�instruction/data�cache.1*˜In�each�case,�0�=�don't�cache�it,�1�=�cache�it.0CACHEUIƒ=�1Œ1�=�cache�user‡instruction�accesses.)CACHEUDƒ=�1Œ1�=�cache�user‡dataˆaccesses.6CACHESIƒ=�1Œ1�=�cache�supervisor�instruction�accesses./CACHESDƒ=�1Œ1�=�cache�supervisor�dataˆaccesses.3ASMTYPEƒ=�1ŒType�of�assembler�to�use�for�INITIO1.AG *œ0�-�Use�ASM*œ1�-�Use�ASM020 EMSG‰*****************************************************************)MSG‰**‚Parameters�about�table�sizes,�etc.EMSG‰***************************************************************** *7*‚PAGESIZE�NEEDS�TO�BE�AT�LEAST�AS�LARGE�AS�PGSIZE�FROM *‚VM04.RMS.CI*PAGESIZE‚=�\PGSIZE†From�RMS.CI*)ASN‡=�0Œ#�of�address�spaces--not�used�but!*˜needed�to�satisfy�&.INITDAT.AG. GMSG‰*******************************************************************>MSG‰*ƒCopy�the�system�initializer�into�M68XXX.INIT.RO�based�on:MSG‰*ƒthe�type�of�memory�allocation�defined�at�RMSGEN�timeMSG‰*ƒin�.RMS.CD.GMSG‰******************************************************************* IFEQˆ\MEMALOC'ƒ=COPY‡BESTFIT.INIT.RO,M68XXX.INIT.RO;Y ƒIFEQˆ\MMU†=COPY‡&.MTYPE.SI,MTYPE.SI;YƒENDC ƒIFNEˆ\MMU†=COPY‡MULT.MTYPE.SI,MTYPE.SI;YƒENDCENDC IFNEˆ\MEMALOC%ƒ=COPY‡BUDDY.INIT.RO,M68XXX.INIT.RO;Yƒ=COPY‡&.MTYPE.SI,MTYPE.SI;YENDC GMSG‰*******************************************************************?MSG‰*ƒCopy�C40O44.SYSPAR.RO�into�&.SYSPAR.RO�to�make�it�genericAMSG‰*ƒfor�.LG�files�and�possible�for�sysgening�more�than�1�systemMSG‰*ƒper�account�#GMSG‰******************************************************************* $=COPY‡C40O44.SYSPAR.RO,&.SYSPAR.RO;YN'VME122 COPYSGENCFSSµ  $: =/*<=/*‚VME122.COPYSGEN.CF‚-‚Chain�file�to�copy�files�for�SYSGEN=/*'=/*‚--‚FORCE�CATALOG�TO�BE�SET�=�VME122 =USE :.VME122=/*D=/*†This�chainfile�copies�those�files�required�to�do�a�SYSGEN�into�a'=/*†a�specified�volume�and�user�number.=/*;=/*ƒInvoke�as:„=VME122.COPYSGEN.CF‚arg1,arg2,arg3,arg4,arg5 =/*…where:.=/*‰Arg1=�\1„Source�volume�nameŒ(must�specify).=/*‰Arg2=�\2„Target�volume�nameŒ(must�specify).=/*‰Arg3=�\3„Target�user�numberŒ(must�specify)-=/*‰Arg4=�\4„COPY�option�letter(s)‰(optional)=/*—B�=�both�copy�&�verify=/*—P�=�pack�files =/*—Y�=�overwrite�if�file�exists*=/*—N�=�skip�copy�if�file�existsƒ(default)*=/*–VT�=�verify�&�show�only�1st�difference2=/*‰Arg5=�\5„include�PCDRV�driver�filesƒ(optional)=/*—PCDRV�=�include�them=OPT N=/RX=\0=/RD=0 =/IF RX < 3…=/RD=1=/ENDIF =/IF RX > 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=/*‚Set�Arg6�so�this�file�can't�be�rerun�directly�w/o�setting�proper�args!=ARG \1,\2,\3,\4,\5,ARGS=OPT -N =/IF RD <> 0Mƒ=/*�INVOCATION�ERROR!�Insufficient,�null,�and/or�invalid�argument�specified!ƒ=/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.CFKPT%\d#lO=/*----------------------------------------------------------------------------$=/* 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=/*----------------------------------------------------------------------------(=/* Co; py 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 VME319 files for sysgen=/@„\1:9998.COPYGEN.M319DRV.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.CFNNNNNNO=/*----------------------------------------------------------------------------$=/* Copy all VME331 files for sysgen=/@„\1:9998.COPYGEN.M331DRV.CFO=/*----------------------------------------------------------------------------$=/* Copy all VME360 files for sysgen=/@„\1:9998.COPYGEN.M360DRV.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=/*-----------------------------------------------------------------------------=/; *‚Copy�all�VME122�specific�files�for�sysgen=/@„\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=/*----------------------------------------------------------------------------N<=/* 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.CFO=/*----------------------------------------------------------------------------'=/* 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=/*‚Copy�all�the�rest�of�the�root�files�for�sysgen=/@„\1:9998.COPYGEN.ROOT.CFO=/*----------------------------------------------------------------------------=/*2=/*†VME122.COPYSGEN.CF‚completed.‰Have�a�nice�day!=/*N=/*‚No�"NOARG"�and�"=END"�because�independent�driver�release�items�may�follow!NNN'VME133 COPYSGENCF€€¸  $INITIO1 AG©©#2  $IFDRVR CIÚÚe  $SYSTEM CIããÁ  $CNFGDRVRCI  /ø  $< =/*<=/*‚VME133.COPYSGEN.CF‚-‚Chain�file�to�copy�files�for�SYSGEN=/*'=/*‚--‚FORCE�CATALOG�TO�BE�SET�=�VME133 =USE :.VME133=/*D=/*†This�chainfile�copies�those�files�required�to�do�a�SYSGEN�into�a'=/*†a�specified�volume�and�user�number.=/*;=/*ƒInvoke�as:„=VME133.COPYSGEN.CF‚arg1,arg2,arg3,arg4,arg5 =/*…where:.=/*‰Arg1=�\1„Source�volume�nameŒ(must�specify).=/*‰Arg2=�\2„Target�volume�nameŒ(must�specify).=/*‰Arg3=�\3„Target�user�numberŒ(must�specify)-=/*‰Arg4=�\4„COPY�option�letter(s)‰(optional)=/*—B�=�both�copy�&�verify=/*—P�=�pack�files =/*—Y�=�overwrite�if�file�exists*=/*—N�=�skip�copy�if�file�existsƒ(default)*=/*–VT�=�verify�&�show�only�1st�difference2=/*‰Arg5=�\5„include�PCDRV�driver�filesƒ(optional)=/*—PCDRV�=�include�them=OPT N=/RX=\0=/RD=0 =/IF RX < 3…=/RD=1=/ENDIF =/IF RX > 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=/*‚Set�Arg6�so�this�file�can't�be�rerun�directly�w/o�setting�proper�args!=ARG \1,\2,\3,\4,\5,ARGS=OPT -N =/IF RD <> 0Mƒ=/*�INVOCATION�ERROR!�Insufficient,�null,�and/or�invalid�argument�specified!ƒ=/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.CFxP�(‰‘™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 VME050 driver files for sysgen=/@„\1:9998.COPYGEN.M050DRV.CF=/@„\1:9998.COPYGEN.P050DRV.CF=/@„\1:9998.COPYGEN.MPCCDRV.CFO=/*----------------------------------------------------------------------------(=/* Copy all SCC driver files for sysgen=/@„\1:9998.COPYGEN.SCCDRV.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 VME300 (GPIB) files for sysgen=/@„\1:9998.COPYGEN.M300DRV.CFO=/*----------------------------------------------------------------------------F=/* Copy all VME316 (VMEbus to I/O channel interface) files for sysgen=/@„\1:9998.COPYGEN.M316DEF.CFO=/*----------------------------------------------------------------------------$=/* Copy all VME319 files for sysgen=/@„\1:9998.COPYGEN.M319DRV.CFO=/*----------------------------------------------------------------------------$=/* Copy all VME320 files for sysgen=/@„\1:9998.COPYGEN.M320DRV.CFO=/*----------------------------------------------------------------------------$=/* Copy all VME331 files for sysgen=/@„\1:9998.COPYGEN.M331DRV.CFO=/*----------------------------------------------------------------------------$=/* Copy all VME360 files for sysgen=/@„\1:9998.COPYGEN.M360DRV.CFO=/*----------------------------------------------------------------------------/=/* Copy all VME435 (mag tape) files for sysgen=/@„\1:9998.COPYGEN.M435DRV.CFNNNNO=/*----------------------------------------------------------------------------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=/*-----------------------------------------------------------------------------=/*‚Copy�all�VME133�specific�files�for�sysgen=/@„\1:9998.COPYGEN.VME133.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= NO=/*----------------------------------------------------------------------------'=/* 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=/*‚Copy�all�the�rest�of�the�root�files�for�sysgen=/@„\1:9998.COPYGEN.ROOT.CFO=/*----------------------------------------------------------------------------=/*2=/*†VME133.COPYSGEN.CF‚completed.‰Have�a�nice�day!=/*N=/*‚No�"NOARG"�and�"=END"�because�independent�driver�release�items�may�follow!NNNN**‚Included�files:**‰&.UTILITY.MC*‰MK68901.MK68901.EQ*‰VME133.BOARD.EQ*‰MK68901.TIMERST.SI***ˆ&.TST.EQ‘Task�segment�table*°Sets�ADDRTYP�flag*ˆ&.MAP.EQ‘Memory�map�equates *ˆ&.KILL.MC*ˆ&.KILLEXEC.EQ *ˆ&.STR.EQ*6*ˆMM58274.MM58274.EQˆEquates�for�Real�time�clock�chip.8*ˆMM58274.TIMERST.SI‚Code�to�initialize�Real�time�clock.8*ˆ&.TIMECONV.AI‡Code�to�convert�time,�date�reprsentation* ‰PAGE7INITIO„IDNTƒ45,0�RMS68K�I/O�initializer�for�the�VME133.O*******************************************************************************O*******************************************************************************O**********************************************************************************É***E***…ROUTINE:‚INITIO�--�RMS68K�I/O�INITIALIZER�FOR�THE�VME133�BOARD.†****É***J***…ENVIRONMENT:‚Part�of�the�RMS68K�exec�for�the�Motorola�68000�family.***(***‡Copyright�1983�by�Motorola,�Inc.¢******É***D***…FUNCTION:‚Routines�from�this�module�are�called�by�the�RMS68K‡***E***‡routine�INIT�during�system�initialization.‚All�board-specific„***.***‡initialization�is�done�in�this�module.œ******É***G***…NOTES:‚This�module�is�SUBSed,�ASMed,�and�LINKed�at�SYSGEN�time.„***?***‡All�modules�will�run�at�level�7�and�in�supervisor�mode.‹******É***O*******************************************************************************O*******************************************************************************O*^***************************************************************************** *,*‚Revision�history�(add�new�changes�to�top).*…Date†Author‚ChangesI*…--------‚------‚-------------------------------------------------------**…12/02/85ƒBAW„Initial�writing./*…12/19/85ƒBAW„Added�support�for�real�ti= me�chip¡2ª²Eº\ÂEÊ B*…03/20/86ƒKEG„Removed�the�RTS�at�the�end�of�the�file�so�more�code.*—can�be�linked�after�this�file�during�sysgen.** ŠNOLISTŠINCLUDE�&.UTILITY.MCŠINCLUDE‚MK68901.MK68901.EQŠINCLUDE�VME133.BOARD.EQŠINCLUDE�&.KILL.MCŠINCLUDE�&.KILLEXEC.EQŠINCLUDE�&.STR.EQ=ŠINCLUDE�MM58274.MM58274.EQˆEquates�for�Real�time�clock�chip.‰LIST*NNNNNN *‚XDEF's.*,ŠXDEFƒINITMMUŒRoutine�to�initialize�the�MMU.,ŠXDEFƒTIMERSTŒRoutine�to�start�up�the�timer.3ŠXDEFƒINITIO�Routine�to�set�up�all�the�other�board-*§specific�hardware. * *‚XREF's.* *…Routines:*…Parameters�from�INITDAT:-ŠXREFƒTIMSLICŒ#�of�timer�tics�per�time�slice.(ŠXREFƒTIMERA�Addr�of�timer�chip�(Z8036).4ŠXREFƒTIMINTVA‹#�of�milliseconds�between�timer�tics.4ŠXREFƒCLOCKFRQ‹Frequency�of�clock�(to�set�up�timer). ŠXREFƒMEMTABL*…SYSPAR�variables:6ŠXREF.S�MMUHEREŒAddr�of�MMU;�0�if�we're�not�using�one.ŠXREF.S�DATE�Date.0ŠXREF.S�TIMESLIC‹#�of�timer�tics�per�time�slice.7ŠXREF.S�TIMINTVŒTime�interval�between�timer�interrupts.+ŠXREF.S�PTMADDRŒAddr�of�timer�chip�(Z8036).,‰XREF†FC_TABLEŒSYSPAR�--�function�code�table0‰XREF†SUPERMMUŒSYSPAR�--�supervisor�root�pointer0‰XREF†TDEFTYP�SYSPAR�--�Type�of�memory�for�TCB's ‰XREF†TCBHD�SYSPAR�--�TCB�header-‰XREF†TIMINTR�SYSPAR�--�Counter�value�--�gets%*¦subtracted�from�TIMINTV4�every�time$*¦an�interrupt�occurs.‚When�TIMINTV4&*¦is�negative,�an�extra�millisecond�is*¦subtracted�from�TIME_LEFT.4‰XREF†TIMINTV4ŒSYSPAR�--�Countdown�value�for�TIMINTR 2‰XREF†CTRLREG�SYSPAR�--�Control�register�for�board 5‰XREF†RTC_TIMER‹SYSPAR�--�Address�of�real�time�clock. *„Others:.ŠXREFƒCRASHSAV‹Place�to�SAVE�info�if�we�CRASH.  ŠLIST**G*‚This�macro�will�verify�that�a�byte�is�within�a�specified�range.‚If�itH*‚is�not�within�the�range,�a�branch�is�taken�to�RANGE_ERR.‚The�syntax�isD*„CHECK_RANGE.‚> ,,F*‚Distance�is�S�for�short�branches,�L�for�long�branches,�or�nothing�if*‚the�default�will�do.6*‚The�byte�to�check�is�treated�as�an�unsigned�integer.*CHECK_RANGE MACRO ŠCMP.B‚\2,\1ŠBLO.\0�RANGE_ERR ŠCMP.B‚\3,\1ŠBHI.\0�RANGE_ERR‰ENDM‰PAGEO**V***************************************************************************** *ˆINITMMU**,*ˆEntry:„Supervisor�mode,�interrupt�level�7.*!*ˆRegister�usage:…0�1�2�3�4�5�6�7*™D*™A**™P�=�entry�parameter*™R�=�returned�parameter*™S�=�saved�and�restored*™*�=�destroyed*"*ˆExit:‚Good�return�-�RTS‚to�INIT.*�Bad�return‚-�BSR�KILLER***,*ˆRevision�history�(add�new�changes�to�top).*ˆDate†Author‰ChangesF*ˆ--------‚-------------‚--------------------------------------------- *ˆ12/02/85‚BAWŒOriginal�writing.*O*^******************************************************************************‰PAGE ‰SECTIONƒ8‰OPT‡BRS‰OPT‡MEX INITMMU: ‰RTS ŠPAGEO********************************************************************************* *ˆSTART�TIMER„(MK68901�MFP�CHIP)?*ˆRead�Real�time�clock�(MM58274�chip)�and�set�up�date�and�time.**N****************************************************************************** * *‚MACROS�USED�BY�MK68901.TIMERST** *‚GET_TI:,*‚Get�the�Timer�input�value�for�the�MK68901.H*‚For�the�VME120�and�VME122,�the�processor�clock�frequency�is�divided�by&*‚4�before�being�fed�into�the�MK68901.C*‚For�the�VME133,�the�processor�clock�frequency,�1.23�MHz,�does�not*‚need�to�be�divided�by�4.**‚Returns�TI�value�in�D0* GET_TIƒMACRO‰MOVE.L„#1230000,D0‰ENDM* *‚GET_TO:6*‚The�TO�value�is�1000/TIMINTV.�Usually�TIMINTV�is�10.*‚Returns�TO�value�in�D2.*‚Destroys�D3.* GET_TOƒMACRO‰MOVE.L„#1000,D2 ‰CLR.L…D3‰MOVE.W„TIMINTV,D3 ‰DIVU†D3,D2‰ENDM**‚EQUATES�USED�BY�TIMERST:*PS‡EQU‡100‡Pre_scalar.PS_TACR‚EQU‡6‰Value�to�write�to�TACR�register.**‚PSŽPS_TACRƒ(Delay�mode)**‚4�1*‚10Ž2*‚16Ž3*‚50Ž4*‚64Ž5*‚100�6*‚200�7*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*‚>>>>>>>µ<<<<<<<*‚>>>>>>>•NOTICEš<<<<<<<*‚>>>>>>>µ<<<<<<<>*‚>>>>>>>…When�incorporating�any�drivers�during�SYSGEN„<<<<<<<?*‚>>>>>>>…that�require�memory�allocated�for�them�as�perƒ<<<<<<<?*‚>>>>>>>…the�driver�package�instructions�-�this�is�theƒ<<<<<<<,*‚>>>>>>>…spot�the�file(s)�go�into!!–<<<<<<<*‚>>>>>>>µ<<<<<<<=*‚>>>>>>>…This�is�also�the�spot�for�code�for�a�driver…<<<<<<<>*‚>>>>>>>…that‚requires�other�types�of�initialization,ƒ<<<<<<<0*‚>>>>>>>…such‚as�clearing�an�interrupt.‘<<<<<<<*‚>>>>>>>µ<<<<<<<*‚>>>>>>>‘MERGE�IT�H> ERE—<<<<<<<*<*ˆWhen�you�write�the�code�that�is�to�be�merged�here,�wrap�it*ˆaround�with�the�following:*:*ˆAt�the�beginning,�with�DRVRxOUT�referring�to�your�unique*ˆlabel,�put�this�code:*'*‹PEA„DRVRxOUT(PC)„IF�BUS�ERROR�OCCURS,*¢RETURN�OR�GO�ON�TO�NEXT*¢DRIVER'S�INITIALIZATION**‹MOVE.W�#'BE',-(A7)…SAVE�'BUS�ERROR'�FLAG*9*ˆThen�insert�the�code�to�do�what�you�need�to�do�for�this*ˆparticular�driver.**ˆAt�the�end,�put�this:***‹LEA„6(A7),A7ˆREMOVE�BUS�ERROR�FROM�STACK*DRVRxOUTƒEQU„**=*ˆIn�this�way,�if�the�code�for�one�driver�causes�a�bus�error,.*ˆthe�code�for�other�drivers�will�be�executed.*E*‚>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<G***********************************************************************   ‰ENDNNNNNN**ˆVME133.IFDRVR.CI*,* Conditional file for VME133 device driversO*------------------------------------------------------------------------------K* This file uses flags setup in the VME133.CNFGDRVR.CI and VME133.SYSTEM.CI0* files to conditionally include device drivers.*J* The user should not have to modify this file to include/exclude drivers.*D*„******************************************************************?*„**‚NOTICE:‚The�following�conditionals�are�order�dependent.„**3*„**‹Do�not�change�the�order!‚Local�drivers�1st.‡**9*„**‹The�order�determines�device�number�(HD00,PR,�etc)‚***„**‹for�most�items.¤**D*„******************************************************************** IFNEˆ\NVME316Dƒ*‚The�VME316�has�no�driver.‚It�has�an�initialization�module�that�isJƒ*‚merged�into�SYSINIT.RO.‚The�include�file�below�defines�the�I/O�channel.ƒ*ƒINCLUDE…&.M316DEF.CIENDC* IFNEˆ\NVME320ƒINCLUDE…&.M320DRV.CIENDC* IFNEˆ\NVME319ƒINCLUDE…&.M319DRV.CIENDC* IFNEˆ\NORWINƒINCLUDE…&.RWINDRV.CIENDC* IFNEˆ\NVME360ƒINCLUDE…&.M360DRV.CIENDC* IFNEˆ\NOLTERMƒINCLUDE…&.MFPDRV.CIENDC* IFNEˆ\NOSCCƒINCLUDE…&.SCCDRV.CIENDC* IFNEˆ\NVME050ƒINCLUDE…&.M050DRV.CIENDC* IFNEˆ\NVME400ƒINCLUDE…&.MPSC400.CIENDC* IFNEˆ\NVME331ƒINCLUDE…&.M331DRV.CIENDC* IFNEˆ\NVME410ƒINCLUDE…&.PIA410.CIENDC* IFNEˆ\NVME300ƒINCLUDE…&.M300DRV.CIENDC* IFNEˆ\NVME435ƒINCLUDE…&.M435DRV.CIENDC* IFNEˆ\NVME600ƒINCLU? DE…&.M600DRV.CIENDC* IFNEˆ\NVME605ƒINCLUDE…&.M605DRV.CIENDC*IFNEˆ\NVME610+\NVME620ƒINCLUDE…&.M610DRV.CIENDC* IFNEˆ\NVME615ƒINCLUDE…&.M615DRV.CIENDC* IFNEˆ\NVME625ƒINCLUDE…&.M625DRV.CIENDC* IFNEˆ\NRADƒINCLUDE…&.RADDRV.CIENDC* IFNEˆ\NRIOƒINCLUDE…&.RIODRV.CIENDC  Òf**ˆVME133.SYSTEM.CI*L****************************************************************************@*‚This�file�contains�all�board/system�dependencies�for�VME133.Œ*&*‚It�is�called�from�"&.VERSADOS.CD".¦**Ê*E*‚The�user�should�not�have�to�modify�this�file�except�under�extreme‡**‚circumstances.º*L**************************************************************************** <*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~**†ON�BOARD�RAM�ADDRESSES*>*†VMEbus�drivers�require�the�following�target�system�dependentB*†variables�to�be�defined�when�the�macro�file�DUALPORT.MC�is�used:<*†Note�that�the�ONBD$HI�parameter�may�vary�on�the�VME110�and<*†and�VME101�systems�depending�on�the�size�and�number�of�RAM<*†chips�used�on�the�processor�card.‚The�values�shown�are�the?*†minimum�requirements.�Modify�that�parameter�to�match�your�own*†system�if�different.**;ONBD$LOƒ=�$0‹Low�value�for�on-board�ram�(as�seen�by�driver)RAM$SQ„=�$0‹Difference�between�on-board�ram�address�as�seen�by*˜driver�and�device.JOFFBD$LO‚=�\ONBD$LO+\RAM$SQ�Low�value�for�on-board�ram�(as�seen�by�device)JOFFBD$HI‚=�\ONBD$HI+\RAM$SQ�High�valu�for�on-board�ram�(as�seen�by�device) FMSG‰******************************************************************MSG‰**ˆAddresses�of�timer,�etc.FMSG‰****************************************************************** *TIMER…=�$F80001†Address�of�timer.(MK68901)3CLOCKFRQ‚=�0ŒNumber�of�clock�ticks�per�millisecond.7PANEL…=�$0‹Address�of�front�panel�(not�used�on�VME133).5TRCFLAGƒ=�0ŒTrace�flag.‚Zero�implies�don't�trace.‚The/*˜setting�of�bits�in�the�TRCFLAG�parameter�will1*˜control�which�events�cause�an�entry�to�be�built*˜in�the�trace�table.*˜Bit�#�in�TRCFLAG†Event *›15‘TRAP�#1*›14‘I/O�interrupt�not�claimed*°by�user�task.*›13‘Timer�interrupt.*›12‘User�trap�(2-15)*›11‘Exception *›10‘Dispatch*œ9‘I/O�interrupt�claimed�by *°user�task*œ8‘Return�from�LOADMMUÛ5äìô3ü(*œ7‘Simulated�interrupt*œ6‘SYSFAIL�interrupt.**?SYSFAILƒ=�0ŒDetermines�whether�or�not�the�operating�system�will5*˜be�interrupted�when�SYSFAIL�is�asserted�on�the�bus.2*˜Some�intelligent�boards�will�assert�SYSFAIL�when0*˜they�experience�a�failure�of�some�kind.‚If�you5*˜have�such�boards�in�the�system,�AND�THE�DRIVERS�FOR3*˜THESE�BOARDS�HAVE�SYSFAIL�HANDLERS,�then�you�will2*˜probably�want�SYSFAIL�interrupts�enabled.‚If�the4*˜appropriate�SYSFAIL�handlers�are�not�written,�then5*˜taking�a�SYSFAIL�interrupt�will�hang�up�the�system,0*˜so�you�would�want�SYSFAIL�interrupts�disabled.!*š0�=�disable�SYSFAIL�interrupts. *š1�=‚enable�SYSFAIL�interrupts.FMSG‰******************************************************************.MSG‰**ƒLocal�terminal/printer�device�addresses#MSG‰**ƒShort�I/O�space�base�address&MSG‰**ƒShort�I/O�space�address�offsetsFMSG‰****************************************************************** :&VECTNOƒ=�$FFŠStarting�Vector�Number‚used�by�IOC.IPCDRV.AG>LTDA$01ƒ=�$FFF? 80001„VME133�local�terminal�port�1�address�(MFP)ELTDA$02ƒ=�$FFFA0002„VME133�local�terminal�port�2�address�(SCC�PORT�A)ELTDA$03ƒ=�$FFFA0000„VME133�local�terminal�port�2�address�(SCC�PORT�B) 3SIOBASEƒ=�$FFFF0000„Base�address�of�Short�I/O�space&DEVADDƒ=�\SIOBASE.RMS.CI�file�and�has�a�value�equal!*œto�the�initial�program�counter.*NNNN@*ˆThe�following�parameters�are�used�to�define�memory�partitions.A*ˆIf�only�partition�0�exists,�then�MEMEND2�should�be�set�to�zero.*@NOPARTSƒ=�1ŒNumber�of�memory�partitions�(needed�by�&.INITMEM.AG)AMEMEND1ƒ=�$400000†The�endƒof�partition�0�(assumed�to�start�at�0).&MEMEND2ƒ=�$0‹The�start�of�partition�1.$MEMEND3ƒ=�$0‹The�endƒof�partition�1.:WHERLOAD‚=�0ŒMemory�address�where�boot�file�will�be�loaded6*˜If�nonzero,�VERSAdos�will�be�moved�at�initialization*˜time.7CACHEF„=�0ŒNot�used�by�VME133�(needed�for�&.INITDAT.AG) =CACHE020‚=�1ŒThis�flag�determines�whether�the�68020's�on-chip!*˜instruction�cache�will�be�used:*š0�=�don't�use�it. *š1�=�use�it. 7*˜The�following�flags�determine�which�types�of�accesses8*˜will�get�cached�by�the�VME133's�instruction/data�cache1*˜In�each�case,�0�=�don't�cache�it,�1�=�cache�it.0CACHEUIƒ=�0Œ1�=�cache�user‡instruction�accesses.)CACHEUDƒ=�0Œ1�=�cache�user‡dataˆaccesses.6CACHESIƒ=�0Œ1�=�cache�supervisor�instruction�accesses./CACHESDƒ=�0Œ1�=�cache�su@ pervisor�dataˆaccesses.3ASMTYPEƒ=�1ŒType�of�assembler�to�use�for�INITIO1.AG *œ0�-�Use�ASM*œ1�-�Use�ASM020  >****************************************************************‰Vector�numbers£**>***************************************************************-IOCVEC1ƒ=�$50ŠI/O�channel�interrupt�1�vector.-IOCVEC2ƒ=�$51ŠI/O�channel�interrupt�2�vector.-IOCVEC3ƒ=�$52ŠI/O�channel�interrupt�3�vector.-IOCVEC4ƒ=�$53ŠI/O�channel�interrupt�4�vector.**IOCLVL1ƒ=�2ŒI/O�channel�interrupt�1�level.*IOCLVL2ƒ=�3ŒI/O�channel�interrupt�2�level.*IOCLVL3ƒ=�4ŒI/O�channel�interrupt�3�level.*IOCLVL4ƒ=�5ŒI/O�channel�interrupt�4�level. EMSG‰*****************************************************************)MSG‰**‚Parameters�about�table�sizes,�etc.EMSG‰***************************************************************** 1PAGESIZE‚=�256ŠSize�in�bytes�of�a�page�of�memory.*)ASN‡=�0Œ#�of�address�spaces--not�used�but!*˜needed�to�satisfy�&.INITDAT.AG.EMSG‰***************************************************************** MSG‰**½**#MSG‰**ŒADDRESS�AND�DATA�BUS�SIZE˜**=MSG‰**…---------------------------------------------------…**'MSG‰**ŒA$SIZE�=‚WIDTH�OF�ADDRESS�BUS“** MSG‰**½**)MSG‰**Œ32…=‚32�BIT�EXTENDED�ADDRESSING�**)MSG‰**Œ24…=‚24�BIT�STANDARD�ADDRESSING�** MSG‰**½**$MSG‰**ŒD$SIZE�=‚WIDTH�OF�DATA�BUS–** MSG‰**½**#MSG‰**Œ32…=‚32�BIT�LONGWORD�DATA“**MSG‰**Œ16…=‚16�BIT�WORD�DATA—** MSG‰**½**EMSG‰***************************************************************** D$SIZE„=�32 A$SIZE„=�24 GMSG‰*******************************************************************>MSG‰*ƒCopy�the�system�initializer�into�M68XXX.INIT.RO�based�on:MSG‰*ƒthe�type�of�memory�allocation�defined�at�RMSGEN�timeMSG‰*ƒin�.RMS.CD.GMSG‰******************************************************************* =COPY‡&.MTYPE.SI,MTYPE.SI;Y IFEQˆ\MEMALOC'ƒ=COPY‡BESTFIT.INIT.RO,M68XXX.INIT.RO;YENDC IFNEˆ\MEMALOC%ƒ=COPY‡BUDDY.INIT.RO,M68XXX.INIT.RO;YENDC GMSG‰*******************************************************************?MSG‰*ƒCopy�C40O44.SYSPAR.RO�into�&.SYSPAR.RO�to�make�it�genericAMSG‰*ƒfor�.LG�files�and�possible�for�sysgening�more�than�1�systemMSG‰*ƒper�account�#GMSG‰******************************************************************* $=COPY‡C40O44.SYSPAR.RO,&.SYSPAR.RO;YNN**ˆVME133.CNFGDRVR.CI*'* Configuration file for device driversO*------------------------------------------------------------------------------D* This file sets up the flags used by the "VME133.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/SYSTEM�DEPENDENCIES�are�included�from�the�&.VERSADOS.CD�file.�---;*�VME133.SYSTEM.CIƒadd�processor�board/system�dependencies,(*˜including�local�terminals�and�printers6*�&.CNFGTASK.CI†add�O/S�task�con@ figuration�for�ROM/RAMM***************************************************************************** O*------------------------------------------------------------------------------?NOLTERMƒ=�1‡#�of�terminals�using�VME133‚MFP‚serial�ports;�max=1 *¤(MK689801)O*------------------------------------------------------------------------------=NOSCC…=�1‡#�of�terminals�using�VME133‚SCC‚serial�ports;�max=2 *¤(Z8530)"*“1�means�you�will�only�get�port�B(*“2�means�you�will�get�port�A�and�port�BO*------------------------------------------------------------------------------2NORWIN„=�0Œ#�of�RWIN1„Winchester�controller�boards* IFGTˆ\NORWIN+ƒCONTWIN1‚=�"8"Š1st�RWIN1�controller�number8ƒNHRWIN$1‚=�0Œ#�of�hardƒdisk�drives�on�1st�RWIN1;�max=�2:ƒNFRWIN$1‚=�0Œ#�of�floppy�disk�drives�on�1st�RWIN1;�max=�2>ƒRWIN0$1ƒ=�"'H5WIN40'"‚Type�of�hardƒdisk�on�1st�RWIN1,�drive�0>ƒRWIN1$1ƒ=�"'H5WIN40'"‚Type�of�hardƒdisk�on�1st�RWIN1,�drive�1@ƒRWIN2$1ƒ=�"'F5DDDSI'"‚Type�of�floppy�disk�on�1st�RWIN1,�drive�2) %'-5.= @ƒRWIN3$1ƒ=�"'F5DDDSI'"‚Type�of�floppy�disk�on�1st�RWIN1,�drive�3 +ƒCONTWIN2‚=�"9"Š2nd�RWIN1�controller�number8ƒNHRWIN$2‚=�0Œ#�of�hardƒdisk�drives�on�2nd�RWIN1;�max=�2:ƒNFRWIN$2‚=�0Œ#�of�floppy�disk�drives�on�2nd�RWIN1;�max=�2BƒRWIN0$2ƒ=�"'H5WIN40'"‚Type�of�1st�hardƒdisk�on�2nd�RWIN1,�drive�0BƒRWIN1$2ƒ=�"'H5WIN40'"‚Type�of�2nd�hardƒdisk�on�2nd�RWIN1,�drive�1DƒRWIN2$2ƒ=�"'F5DDDSI'"‚Type�of�1st�floppy�disk�on�2nd�RWIN1,�drive�2DƒRWIN3$2ƒ=�"'F5DDDSI'"‚Type�of�2nd�floppy�disk�on�2nd�RWIN1,�drive�3ƒ*Gƒ*…NOTE:‚You�can�not�mix�5-1/4"�and�8"�floppies.‚Pick�one�or�the�other.ƒ*ENDC O*------------------------------------------------------------------------------)NVME050ƒ=�1Œ#�of�VME050ƒSystem�Controller IFGTˆ\NVME0507ƒNT050$1ƒ=�2Œ#�of�terminals�on�the�VME050�board;�max=�26ƒNP050$1ƒ=�1Œ#�of�printers‚on�the�VME050�board;�max=�1ENDC O*------------------------------------------------------------------------------8NVME300ƒ=�0Œ#�of�MVME300‚IEEE�488�GPIB�controller�boards O*------------------------------------------------------------------------------@NVME316ƒ=�0Œ#�of�MVME316‚VMEbus�to�I/O�channel�interface�boards;*˜max=�1 O*------------------------------------------------------------------------------ 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=/*‚Set�Arg6�so�this�file�can't�be�rerun�directly�w/o�setting�proper�args!=ARG \1,\2,\3,\4,\5,ARGS=OPT -N =/IF RD <> 0Mƒ=/*�INVOCATION�ERROR!�Insufficient,�null,�and/or�invalid�argument�specified!ƒ=/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.CFIPR%Zb#jO=/*----------------------------------------------------------------------------$=/* 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 SIO driver files for sysgen=/@„\1:9998.COPYGEN.SIODRV.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=/C @„\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 VME319 files for sysgen=/@„\1:9998.COPYGEN.M319DRV.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.CFNNNNNNO=/*----------------------------------------------------------------------------$=/* Copy all VME331 files for sysgen=/@„\1:9998.COPYGEN.M331DRV.CFO=/*----------------------------------------------------------------------------$=/* Copy all VME360 files for sysgen=/@„\1:9998.COPYGEN.M360DRV.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=/*-----------------------------------------------------------------------------=/*‚Copy�all�VME131�specific�files�for�sysgen=/@„\1:9998.COPYGEN.VME131.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.COC PYGEN.FMS.CFO=/*----------------------------------------------------------------------------$=/* Copy all LOADER files for sysgen=/@„\1:9998.COPYGEN.LOADER.CFO=/*----------------------------------------------------------------------------N<=/* 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.CFO=/*----------------------------------------------------------------------------'=/* 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=/*‚Copy�all�the�rest�of�the�root�files�for�sysgen=/@„\1:9998.COPYGEN.ROOT.CFO=/*----------------------------------------------------------------------------=/*2=/*†VME131.COPYSGEN.CF‚completed.‰Have�a�nice�day!=/*N=/*‚No�"NOARG"�and�"=END"�because�independent�driver�release�items�may�follow!NNN**‚Included�files:**‰&.UTILITY.MC*‰Z8036.Z8036.EQ*‰VME13X.CTRLSTAT.EQ*‰M68020.CACR.EQ***ˆIf�there�is�to�be�an�MMU�in�this�system, *‰&.KILL.MC*‰&.KILLEXEC.EQ$*‰&.STR.EQ‡TRAP�0�AND�TRAP�1�EQUATES *‰&.TCB.EQ** *ˆ&.MMUTYP.EQ**ˆFor�either�type�of�MMU,+*ˆ&.MMBPMMU.EQˆGeneral�equates�for�MMB/PMMU!*ˆ&.MMBPMMU.MCˆMacros�like�XPMOVE**ˆ&.TST.EQ‘Task�segment�table*°Sets�ADDRTYP�flag*ˆ&.MAP.EQ‘Memory�map�equates‰PAGE7INITIO„IDNTƒ45,0�RMS68K�I/O�initializer�for�the�VME130.O*******************************************************************************O*******************************************************************************O**********************************************************************************É***E***…ROUTINE:‚INITIO�--�RMS68K�I/O�INITIALIZER�FOR�THE�VME130�BOARD.†****É***J***…ENVIRONMENT:‚Part�of�the�RMS68K�exec�for�the�Motorola�68000�family.***(***‡Copyright�1983�by�Motorola,�Inc.¢******É***D***…FUNCTION:‚Routines�from�this�module�are�called�by�the�RMS68K‡***E***‡routine�INIT�during�system�initialization.‚All�board-specific„***.***‡initialization�is�done�in�this�module.œ******É***G***…NOTES:‚This�module�is�SUBSed,�ASMed,�and�LINKed�at�SYSGEN�time.„***?***‡All�modules�will�run�at�level�7�and�in�supervisor�mode.‹******É***O*******************************************************************************O*******************************************************************************O*^**************************D *************************************************** *,*‚Revision�history�(add�new�changes�to�top).*…Date†Author‚ChangesI*…--------‚------‚-------------------------------------------------------N r2{ ƒJ‹I“X›G£U«a³a»IÃCË!Ó8ÛCã6*…02/25/86ƒJAH„Added�code�to�enable�cache�accelerator.*<*…10/30/85ƒCBS„Changed�KILLER�calls�to�use�KILL.EXECT0�macro*)*…10/10/85ƒBAW„Added�INITMMU�code�for�MMB*@*…06/25/85ƒCBS„Added�fix�to�cache�clear�to�fix�bug�in�some�early*—68020�masks.*4*…05/01/85ƒCBS„Converted�module�from�VM04�to�VME130.*NNNNNNC*†2/27/85ƒSJF„Changed�timer�initialization�to�use�TIMINTV�value�for+*—the�number�of�milliseconds�between�ticks.*…10/20/84ƒACC„Initial�writing.** ŠNOLISTŠINCLUDE�&.UTILITY.MCŠINCLUDE�Z8036.Z8036.EQŠINCLUDE�VME13X.CTRLSTAT.EQŠINCLUDE�M68020.CACR.EQ ‰IFNE†\MMU+‰INCLUDE‚&.STR.EQ‡TRAP�0�AND�TRAP�1�EQUATES‰INCLUDE‚&.TCB.EQ‰INCLUDE‚&.KILL.MC‰INCLUDE‚&.KILLEXEC.EQ ‰INCLUDEƒ&.MMUTYP.EQ ‰IFEQ†\MMU-MMB851MMUTYPƒEQU‡MMB851‰ENDC‰IFEQ†\MMU-M68851MMUTYPƒEQU‡M68851‰ENDC(‰INCLUDEƒ&.MMBPMMU.MCƒMacros�like�XPMOVE.‰INCLUDEƒ&.MMBPMMU.EQƒGeneral�MMB/PMMU�equates‰INCLUDEƒ&.TST.EQ$‰INCLUDEƒ&.MAP.EQ‘Memory�map�equates‰ENDC‰LIST* *‚XDEF's.*,ŠXDEFƒINITMMUŒRoutine�to�initialize�the�MMU.,ŠXDEFƒTIMERSTŒRoutine�to�start�up�the�timer.3ŠXDEFƒINITIO�Routine�to�set�up�all�the�other�board-*§specific�hardware. * *‚XREF's.* *…Routines:*…Parameters�from�INITDAT:-ŠXREFƒTIMSLICŒ#�of�timer�tics�per�time�slice.(ŠXREFƒTIMERA�Addr�of�timer�chip�(Z8036).4ŠXREFƒTIMINTVA‹#�of�milliseconds�between�timer�tics.4ŠXREFƒCLOCKFRQ‹Frequency�of�clock�(to�set�up�timer). ŠXREFƒMEMTABL*…SYSPAR�variables:6ŠXREF.S�MMUHEREŒAddr�of�MMU;�0�if�we're�not�using�one.ŠXREF.S�DATE�Date.0ŠXREF.S�TIMESLIC‹#�of�D timer�tics�per�time�slice.7ŠXREF.S�TIMINTVŒTime�interval�between�timer�interrupts.+ŠXREF.S�PTMADDRŒAddr�of�timer�chip�(Z8036).,‰XREF†FC_TABLEŒSYSPAR�--�function�code�table0‰XREF†SUPERMMUŒSYSPAR�--�supervisor�root�pointer0‰XREF†TDEFTYP�SYSPAR�--�Type�of�memory�for�TCB's ‰XREF†TCBHD�SYSPAR�--�TCB�header *„Others:.ŠXREFƒCRASHSAV‹Place�to�SAVE�info�if�we�CRASH.  ‰IFNE‚\MMU‰PAGEO**V***************************************************************************** *ˆINITMMU*@*ˆIf�we�are�supposed�to�have�an�MMB851,�verify�its�existence�and*ˆinitialize�it�by:*<*ˆ1.�Make�a�supervisor�tree�that�maps�logical�=�physical�and?*‹install�pointer�to�the�tree�in�supervisor�data�and�supervisor5*‹program�slots�in�the�function�code�table�in�SYSPAR.*:*ˆ2.�Make�a�translation�tree�for�each�task�that�is�already*‹in�the�system�via�sysgen.*=*ˆ3.‚Write�to�the�translation�control�register�of�the�MMB851.*A*ˆIf�we�are�supposed�to�have�an�MC68851,�verify�its�existence�and*ˆinitialize�it�by:*F*ˆ1.‚Write�a�page�descriptor�into�the�supervisor�root�pointer�register*Œof�the�MC68851.*:*ˆ2.�Make�a�translation�tree�for�each�task�that�is�already*‹in�the�system�via�sysgen.*>*ˆ3.‚Write�to�the�translation�control�register�of�the�MC68851.*,*ˆEntry:„Supervisor�mode,�interrupt�level�7.*!*ˆRegister�usage:…0�1�2�3�4�5�6�7*™D‚S‰S *™A‚S�S‡S**™P�=�entry�parameter*™R�=�returned�parameter*™S�=�saved�and�restored*™*�=�destroyed*"*ˆExit:‚Good�return�-�RTS‚to�INIT.*�Bad�return‚-�BSR�KILLER***,*ˆRevision�history�(add�new�changes�to�top).*ˆDate†Author‰ChangesF*ˆ--------‚-------------‚---------------------------------------------9*ˆ01/28/86‚BAWŒChanged�the�way�the�super�tree�is�built�--$*¡build�a�subtree�for�each�partition.*ˆ01/28/86‚BAWŒDeleted�24�bit�addressing�stuff;*ˆ12/10/85‚BAWŒChanged�FIND_MEM_END�to�find�highest�address%*¡regardless�of�RAM�or�ROM�partition.?*ˆ10/31/85‚CBS‰Changed�calls�to�KILLER�to�use�KILL.EXECT0�macro/*ˆ10/30/85‚BAWŒFixed�FIX_1_TCB�for�32�bit�stuff *ˆ06/25/85‚BAWŒOriginal�writing.*O*^******************************************************************************‰PAGE ‰SECTIONƒ8 ‰OPT‡P=68020‰OPT‡BRS‰OPT‡MEX INITMMU: ‰SAVE†D0/D4-D5/D7/A0-A1/A5‰IFEQ†\MMU-MMB851*****************************‚THIS�IS�FOR�THE�MMB851‚***************************** *@*‚Set�up�DFC�with�'7'�for�CPU�space�so�that�when�we�do�MOVES�the?*‚write�will�always�be�to�CPU�space,�where�the�MMB851�is�found.;*‚Also�set�up�SFC�with�'7'�so�we�can�read�MMB851�registers.* ‰MOVE.L„#7,D0‰MOVEC.LƒD0,DFC‰MOVEC.LƒD0,SFC 3‰MOVE.L„#$10000,MMUHERE…Address�of�MMB�in�CPU�space*>*‚Make�a�tree�for�the�supervisor�that�maps�logical�to�physical**/*‚Allocate�memory�for�a�fake�task�segment�table?*‚We�need�enough�256�byte�pages�to�hold�one�task�segment�table.**@FAKE_TST�EQU‡((TSTLEN+VPGMASK)&NOTVPGMASK)>>8ˆPages�for�fake�TST ‰CLR.L…D07‰MOVE.B„TDEFTYP,D0ŠGet�same�type�of�memory�as�for�TCB's‰SWAP†D0’Put�type�in�upper�word6‰MOVE.W„#FAKE_TST,D0ˆPut�number�of�pages�in�lower�word)‰MOVE.L„D0,A0�A0�<--�type,number�of�pages‰MOVE.L„#T0PAGAL,D0‰TRAP†#0‰BRA.S…INIT1_OK2‰KILL.EXECT0ƒINITIO1AG,PA_FTST_FAILED„Crash�systemINIT1_OK ‰MOVE.L„A0,A5**‚Clear�out�the�page�of�memory* ‰MOVE.W„#63,D1INIT2„CLR.L…(A0)+‰DBRA†D1,INIT2 *&*‚Get�index�into�MMU�info�area�into�D5*‰MOVE.W„#TSTMMU,D5*'*‚Get�index�into�attribute�area�into�D7*‰MOVE.W„#TSTATTR,D7*%*‚Build�a�subtree�for�each�partition.*‰BSR.L…FIX_PARTITIONS‰BSRNE.LƒGOTOKIL3*B*‚The�pointer�to�the�supervisor�table�should�now�be�in�the�TSTPMMU*‚slot�of�the�TST.C*‚Move�the�two�long�words�starting�at�TSTPMMU(A5)�into�the�SUPERMMU*‚slot�in�SYSPAR.*‰MOVE.L„TSTPMMU(A5),SUPERMMU ‰MOVE.L„TSTPMMU+4(A5),SUPERMMU+4  B*vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv*;*‚Now,�set�up�a�tree�fE or�memory-mapped�I/O�up�at�the�top�of*‚the�memory�map.*‰BSR.L…FIX_MMIO‰BSRNE…GOTOKILR**‚Deallocate�the�fake�TST�page.* ‰MOVE.L„A5,A0‰MOVE.L„#FAKE_TST,D1‰MOVE.L„#T0PGFR,D0‰TRAP†#0‰BRA.L…INIT3_OK%‰KILL.EXECT0ƒINITIO1AG,PF_FTST_FAILEDINIT3_OK‰ENDC‰IFEQ†\MMU-M68851*****************************‚THIS�IS�FOR�THE�M68851‚*****************************  3‰MOVE.L„#$10000,MMUHERE…Address�of�MMB�in�CPU�space *-*‚Move�something�into�status�part�of�SUPERMMU*=‰MOVE.L„#LDPDES,SUPERMMU+4„Put�the�code�for�a�page�descriptor%*¦into�the�address�field�of�SUPERMMU.** ‰ENDC‰PAGE.**********************************************,*‚HERE�FOR�EITHER�THE�MMB851�OR�THE�M68851‚*.********************************************** *>*‚Now,�set�up�a�translation�tree�for�each�TCB�that�has�already*‚been�created�at�sysgen�time.*‰BSR.L…FIX_TCBS‰BSRNE…GOTOKIL2*)*‚Set�up�translation�for�supervisor�space*‰XPMOVE„SUPERMMU,SRP  *+*‚Write�to�the�Translation�Control�register*‚Address�translation�enabled$*‚Function�code�table�lookup�enabledI*‚pagesize,�initial�skip,�and�TIx�fields�as�set�up�in�MMBPMMU.XEQUATES.EQ*1TCCNTLƒSET‡1<�means�OK* �couldn't�build�tree**,*ˆRevision�history�(add�new�changes�to�top).*ˆDate†Author‰ChangesF*ˆ--------‚-------------‚--------------------------------------------- *ˆ01/28/86‚BAWŒOriginal�writing.*O*^******************************************************************************1MEMSIZE‚EQU‡12’Size�of�a�MEMTABL�entry�in�INITDATFIX_PARTITIONS: ‰SAVE†D0/D1/D4/A0**‚Set�up�for�trap�call:* ‰CLR.W…D4 7‰LEA‡MEMTABL(PC),A0‹A0�<---�address�of�memory�map�table*¦from�INITDAT‰REPEAT3‰MOVE.L„#T0ADDSEG,D0ˆMust�load�D0�each�time�because*¦TRAP�#0�handler�destroys�it. 5‰MOVE.L„MAPSTRA(A0),D1†Beginning�address�of�partition ‰CLR.B…D12‰MOVE.L„D1,TSTLB(A5,D5)…into�logical�start�address 2‰MOVE.L„MAPENDA(A0),D1†Ending�address�of�partition(‰CLR.B…D1’Use�address�with�lowest�byte�0‰SUB.L…#$100,D10‰MOVE.L„D1,TSTLE(A5,D5)…into�logical�end�address**‚Do�the�trap�call*‰TRAP†#0(‰BEQ.L…ADD_OK„See�note�in�module�header. ‰BRA‡FIX_PERRADD_OK 6ŒLEA„MEMSIZE(A0),A0…Get�next�partition's‚MEMTABL�entry 5‰UNTIL.Wƒ(A0)‚‚#$FFFF„End�flag�for�MEMTABL�table. ‰RESTOREƒD0/D1/D4/A0‰RTS FIX_PERR ‰MOVE.B„#1,D0‰RESTOREƒD0/D1/D4/A0‰RTS‰PAGEO**V***************************************************************************** *ˆFIX_MMIO*$*ˆBuild�a�translation�tree�for�MMIO.5*ˆMap�logical�=�E physical�from�$FFF00000�to�$FFFFFC00.**ˆEntry:„Called�by�INITMMU.*’A5�=�address�of�fake�TST"*’D5.W�=�offset�into�TSTMMU‚of�TST#*’D7.W�=�offset�into�TSTATTR�of�TST*’TSTAATTR(A5,D7)�=�0*!*ˆRegister�usage:…0�1�2�3�4�5�6�7 *™D‚S‰PƒP *™A‚S�S‡P**™P�=�entry�parameter*™R�=�returned�parameter*™S�=�saved�and�restored*™*�=�destroyed**ˆExit:‚RTS‚to�INITMMU&*’CC�=��translation�tree�set�up�ok*’CC�=��ran�out�of�memory**,*ˆRevision�history�(add�new�changes�to�top).*ˆDate†Author‰ChangesF*ˆ--------‚-------------‚--------------------------------------------- *ˆ09/19/85‚BAWŒOriginal�writing.*O*^***************************************************************************** FIX_MMIO: ‰SAVE„D0/A0-A1   ‰MOVE.L„#$FFF00000,TSTLB(A5,D5)‰MOVE.L„#$FFFFFC00,TSTLE(A5,D5)‰MOVE.L„#T0ADDSEG,D0 ‰TRAP†#0 !‰BEQ.SƒFIXM_OK�See�note�in�header‰BRA.SƒFIXM_ERR  FIXM_OK‰SETCCEQ‰RESTORE�D0/A0-A1‰RTSFIXM_ERR‰SETCCNE‰RESTOREƒD0/A0-A1‰RTS‰PAGEO**V***************************************************************************** *ˆFIX_TCBS*B*ˆBuild�a�translation�tree�for�each�TST�currently�on�the�TCB�list.**ˆEntry:„Called�by�INITMMU.*!*ˆRegister�usage:…0�1�2�3�4�5�6�7*™D‚S*™A„S**™P�=�entry�parameter*™R�=�returned�parameter*™S�=�saved�and�restored*™*�=�destroyed**ˆExit:‚RTS‚to�INITMMU&*’CC�=��translation�tree�set�up�ok*’CC�=��ran�out�of�memory**,*ˆRevision�history�(add�new�changes�to�top).*ˆDate†Author‰ChangesF*ˆ--------‚-------------‚--------------------------------------------- *ˆ09/19/85‚BAWŒOriginal�writing.*O*^*****************************************************************************‰PAGE FIX_TCBS: ‰SAVE†D0/A1‰MOVE.L„TCBHD,D0‰WHILEƒ‚DO ‘MOVE.L�D0,A1‘BSR„FIX_1_TCB ‘BNE„FIX_ERR ‘MOVE.LƒTCBALL(A1),D0 ‰ENDW 6FIX_ERR‚EQU‚*‰Note�that�condition�codes�get�set�above.‰RESTORE‚D0/A1‰RTS‰PAGEO**V***************************************************************************** *ˆFIX_1_TCB*7*ˆBuild�a�translation�tree�for�this�task,�all�segments.**ˆEntry:„Called�by�FIX_TCBS*’A1�=�address�of�TCB*!*ˆRegister�usage:…0�1�2�3�4�5�6�7 *™D‚S‰SƒS*™A„P‡S**™P�=�entry�parameter*™R�=�returned�parameter*™S�=�saved�and�restored*™*�=�destroyed**ˆExit:‚RTS‚to�INITMMU&*’CC�=��translation�tree�set�up�ok*’CC�=��ran�out�of�memory**,*ˆRevision�history�(add�new�changes�to�top).*ˆDate†Author‰ChangesF*ˆ--------‚-------------‚---------------------------------------------/*ˆ10/30/85‚BAWŒFixed�FIX_1_TCB�for�32�bit�stuff *ˆ09/19/85‚BAWŒOriginal�writing.*O*^***************************************************************************** FIX_1_TCB: ‰SAVE„D0/D5/D7/A5 8‰MOVE.L‚TCBTST(A1),A5‰A5�<---�task�segment�table�address‰MOVE.W‚TCBATTR(A1),D0'‰AND.Wƒ#1<‚THEN�Real�time�task�... 0‘MOVE.L‚SUPERMMU,TSTPMMU(A5)‚Use�supervisor�tree ‘MOVE.L‚SUPERMMU+4,TSTPMMU+4(A5) 6‘MOVE.W‚#0,TSTASN(A5)‰Clear�TSTASN�to�indicate�real�tm ‰ELSEšNot�a�real�time�task�... .‘ST†TSTASN(A5)ŒSet�TSTASN�to�indicate�not�real*°time  *..................... ‘CLR.L‚D5‘MOVE.W�#TSTMMU,D5‘MOVE.W�#TSTATTR,D7‘REPEAT“BTST�#SEGAUSED,TSTAATTR(A5,D7) “IF‚‚THEN ˜CLR.WŠD4˜MOVE.L‰#T0ADDSEG,D0˜TRAP�#0"˜BEQ.S‚FIX_1_OKŠSee�note�in�header˜BRA.S‚FIX_1_ERR FIX_1_OK�EQU‡*“ENDI “ADD.W…#TSTMLEN,D5“ADD.W…#TSTALEN,D7 ‘UNTIL‚D5‚‚#TSTMEND *........ ‰ENDI ‰CMP.BƒD0,D0‰RESTOREƒD0/D5/D7/A5‰RTS FIX_1_ERR ‰MOVE.B‚#1,D0‰RESTOREƒD0/D5/D7/A5‰RTS‰ENDC ‰IFEQ†\MMU ‰SECTIONƒ8INITMMU:‰RTS‰ENDCŠPAGE O**********************************************************************************ˆSTART�TIMER„(Z8036�TIMER)**N**************************************************************************F *******ˆCounter�Mode�Spec�Reg*CSC†SET‡$00‘Initialize/CSC†SET‡1<<7+CSCŒEnable�Continuous�Single�Cycle***C1EN…SET‡$00‘Initialize�it C1EN…SET‡1<<2+C1EN‹Enable�port�A#C1EN…SET‡1<<6+C1EN‹Enable�Counter�1 C1EN…SET‡1<<7+C1EN‹Enable�port�B*)*ˆset�up�control/status�reg�for�Counter�1* C1SR…SET‡$001C1SR…SET‡0<<0+C1SR‹This�is�a�read-only�status�bit*¦shows�count�in�progress,C1SR…SET‡1<<1+C1SR‹This�is�a�write-only�bit,*¦trigger�enabled8C1SR…SET‡1<<2+C1SR‹Count-down�sequence�to�resume�enabled0C1SR…SET‡0<<3+C1SR‹Read�counter�control�disabled.C1SR…SET‡0<<4+C1SR‹Int.�error,�a�read-only�bitC1SR…SET‡0<<5+C1SR‹Int.�pending"*¦1�=�the�timer�requires�servicing)C1SR…SET‡1<<6+C1SR‹Enable�timer�interrupt-C1SR…SET‡1<<7+C1SR‹Int.�under�service�enabled* TIMERST: +ŠSAVEƒD0/A1ŽSave�registers�we'll�blow�away. E‰MOVE.W�TIMSLIC(PC),TIMESLIC‚#�TIMER�INTERRUPTS�BEFORE�TASK�INTERRUPT‰LEA„Z8036,A1�GET�TIMER�ADDRESS#‰MOVE.L�A1,PTMADDR�SAVE�IT�FOR�EXEC!‰BEQ.L‚TIMERBE�BRANCH�IF�NO�TIMER)‰PEA„TIMERBE(PC)ŒWHERE�TO�GO�ON�BUS�ERROR$‰MOVE.W�#'BE',-(A7)ŒSET�BUS�ERR�FLAG**7‰MOVE.B„#CSC,CT1MO(A1)†Set�continuous�mode�on�counter�1*‰NOP›This�NOP�forces�the�execution�unit�to$*§wait�for�the�bus�interface�unit�to%*§complete�on�a�68020�(in�case�we�get*§a�bus�error). *H*‚Get�the�timer�"tick"�interval�(in�milliseconds)�and�save�it�in�SYSPAR.*8ŠMOVEƒTIMINTVA(PC),D0„D0�<--�tick�interval�from�INITDAT.#ŠMOVEƒD0,TIMINTV‰Save�it�in�SYSPAR. *L*‚Now�calculate�the�number�of�cycles�the�timer�should�count�between�"ticks."N*‚Apparently�we�have�a�2�Mhz�input,(4�Mhz�input,�but�Z8036�runs�at�half�speed)@*‚so,�(#�of�cycles/tick)‚=‚(2000�cycles/msec)�*�(#�of�msec/tick)*'ŠMULUƒ#2000,D0‹D0�<--�#�of�cycles/tick.>ŠMOVE.B�D0,CT1PL(A1)‡Give�the�chip�the�least�significant�part.3ŠLSR„#8,D0ŽGive�the�chip�the�most‚significant�part.ŠMOVE.B�D0,CT1PM(A1)‡* **ˆNow�start�timer�ticking*'‰MOVE.B�#C1EN,MCCR(A1)ˆENABLE�COUNTER�1(‰MOVE.B�#C1SR,C1CSR(A1)‡ENABLE�INTERRUPT.‰ADD.L‚#6,A7‘REMOVE�'BE'�AND�BUS�ERROR�ADDRESS !ŠRESTORE�D0/A1�Restore�registers.‰RTSšBACK�TO�INIT***;TIMERBE‚MOVE.L‚#CRASHSAV,PTMADDR‚USE�DUMP�POINTER�FOR�TIMER!ŠRESTORE�D0/A1�Restore�registers.‰RTS˜BACK�TO�INIT ***‰PAGE ‰XDEF„INITIO ‰SECTIONƒ8.**********************************************.*ƒValues�to�put�in�VME130�control�registers.�*.************************************************ˆMaster�Interrupt�Control�Reg* INTCN„SET‡$00$INTCN„SET‡0<<0+INTCNŠ0�=�Clear�reset*¦1�=�Software�reset3INTCN„SET‡1<<1+INTCNŠEnable�right�justified�address1INTCN„SET‡0<<2+INTCNŠTimer�vector�includes�status *¦disabled2INTCN„SET‡0<<3+INTCNŠPort�B�vector�includes�status *¦disabled2INTCN„SET‡0<<4+INTCNŠPort�A�Vector�includes�status *¦disabled6INTCN„SET‡1<<5+INTCNŠ1�=�no�int.�vector�during�an�IACK*¦0�=�output�the�int.�vector6INTCN„SET‡0<<6+INTCNŠ1�=�disable�int.�from�lower�chain*¦0�=�operate�normally,INTCN„SET‡1<<7+INTCNŠEnable�master�interrupt**‚Control�reg�0*+ICNT0„SET…$00�VMEbus�int.�vector�number�reg*£These�bits�are�enabled�during *£IACK�cycles**‚Control�reg�1*ICNT1„SET…$00�Initialize�it'ICNT1„SET…0<<0+ICNT1‰NA�(not�available)ICNT1„SET…0<<1+ICNT1‰NAICNT1„SET…0<<2+ICNT1‰NAICNT1„SET…0<<3+ICNT1‰NAICNT1„SET…0<<4+ICNT1‰NAICNT1„SET…0<<5+ICNT1‰NAICNT1„SET…0<<6+ICNT1‰NA"ICNT1„SET…1<<7+ICNT1‰Disable�MPIRQ**‚Control�reg�2* ICNT2„SET…$009ICNT2„SET…0<<0+ICNT2‰1�=�VMEbus�int.�status�int.�disabled%*£0�=�VMEbus�int.�status�int.�enabledICNT2„SET…0<<1+ICNT2‰Ack�VBIRQ1ICNT2„SET…0<<2+ICNT2‰Ack�VBIRQ2ICNT2„SET…0<<3+ICNT2‰Ack�VBIRQ3ICNT2„SET…0<<4+ICNT2‰Ack�VBIRQ4ICNT2„SET…0<<5+ICNT2‰Ack�VBIRQ5ICNT2„SET…0<<6+ICNT2‰Ack�VBIRQ6 ICNT2„SET…1<<7+ICNT2‰mask�VBIRQ7**‚Control�reg�3* ICNT3„SET…$00ICNT3„SET…0<<0+ICNT3‰Reserved0ICNT3„SET…0<<1+ICNT3‰Interrupt�Request�Level�IL0ICNT3„SET…0<<2+ICNT3‰IL1ICNT3„SET…0<<3+ICNT3‰IL2*§IL0-2�corresponds�to�VBIRQxICF NT3„SET…0<<4+ICNT3‰Reserved;ICNT3„SET…\SYSFAIL<<5+ICNT3‚0�=�disable�SYSFAIL�interrupts. *§1�=�enable‚SYSFAIL�interrupts.0ICNT3„SET…1<<6+ICNT3‰0�=�disable�all�interrupts.*§1�=�enable�all�interrupts.4ICNT3„SET…0<<7+ICNT3‰Disallow�VMEbus�monitor�overrun *£interrupt**‚Control�register�5.*ICNT5„SET…$00�Initialize�it.)ICNT5„SET…0<<0+ICNT5‰1�=�SYSFAIL�asserted*£0�=�SYSFAIL�negated2*ICNT5„SET…1<<1+ICNT5‰1�=�32�bit�VMEbus�addressing*£0�=�24�bit�VMEbus�addressing/*ICNT5„SET…1<<2+ICNT5‰1�=�32�bit�data�port�size*£0�=�16�bit�data�port�size>ICNT5„SET…1<<3+ICNT5‰1�=�disable�VMX32bus�diagnostic�interrupt**£0�=�enable�VMX32bus�diagnostic�interrupt8ICNT5„SET�1<<4+ICNT5�0�=�let�PAL�decode�68020�addresses.)*§1�=�let�VMX32bus�decode�68020�addresses*=ICNT5„SET�1<<5+ICNT5�0�=�force�VMX32bus�writes�to�the�VMEbus.'*§1�=�allow�writes�across�the�VMX32bus.***ICNT5„SET�0<<6+ICNT5�0�=�enable�VMX32bus.*§1�=�disable�VMX32bus.*ICNT5„SET…0<<7+ICNT5ŒReserved**G*‚Set�up�the�value�with�which�to�initialize�the�CACR.‚This�value�shouldD*‚cause�the�cache�to�be�flushed�and,�if�sysgen�parameter�CACHE020�so%*‚specifies,�should�enable�the�cache.*CACR_VALUE‚SETŠ1<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*‚>>>>>>>µ<<<<<<<*‚>>>>>>>•NOTICEš<<<<<<<*‚>>>>>>>µ<<<<<<<>*‚>>>>>>>…When�incorporating�any�drivers�during�SYSGEN„<<<<<<<?*‚>>>>>>>…that�require�memory�allocated�for�them�as�perƒ<<<<<<<?*‚>>>>>>>…the�driver�package�instructions�-�this�is�theƒ<<<<<<<,*‚>>>>>>>…spot�the�file(s)�go�into!!–<<<<<<<*‚>>>>>>>µ<<<<<<<=*‚>>>>>>>…This�is�also�the�spot�for�code�for�a�driver…<<<<<<<>*‚>>>>>>>…that‚requires�other�types�of�initialization,ƒ<<<<<<<0*‚>>>>>>>…such‚as�clearing�an�interrupt.‘<<<<<<<*‚>>>>>>>µ<<<<<<<*‚>>>>>>>‘MERGE�IT�HERE—<<<<<<<*<*ˆWhen�you�write�the�code�that�is�to�be�merged�here,�wrap�it*ˆaround�with�the�following:*:*ˆAt�the�beginning,�with�DRVRxOUT�referring�to�your�unique*ˆlabel,�put�this�code:*'*‹PEA„DRVRxOUT(PC)„IF�BUS�ERROR�OCCURS,*¢RETURN�OR�GO�ON�TO�NEXT*¢DRIVER'S�INITIALIZATION**‹MOVE.W�#'BE',-(A7)…SAVE�'BUS�ERROR'�FLAG*9*ˆThen�insert�the�code�to�do�what�you�need�to�do�for�this*ˆparticular�driver.**ˆAt�the�end,�put�this:***‹LEA„6(A7),A7ˆREMOVE�BUS�ERROR�FROM�STACK*DRVRxOUTƒEQU„**=*ˆIn�this�way,�if�the�code�for�one�driver�causes�a�bus�error,.*ˆthe�code�for�other�drivers�will�be�executed.*E*‚>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<G***********************************************************************    ‰ENDNNNNG NNN**ˆVME131.SYSTEM.CI*L****************************************************************************@*‚This�file�contains�all�board/system�dependencies�for�VME131.Œ*&*‚It�is�called�from�"&.VERSADOS.CD".¦**Ê*E*‚The�user�should�not�have�to�modify�this�file�except�under�extreme‡**‚circumstances.º*L**************************************************************************** <*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~**†ON�BOARD�RAM�ADDRESSES*>*†VMEbus�drivers�require�the�following�target�system�dependentB*†variables�to�be�defined�when�the�macro�file�DUALPORT.MC�is�used:<*†Note�that�the�ONBD$HI�parameter�may�vary�on�the�VME110�and<*†and�VME101�systems�depending�on�the�size�and�number�of�RAM<*†chips�used�on�the�processor�card.‚The�values�shown�are�the?*†minimum�requirements.�Modify�that�parameter�to�match�your�own*†system�if�different.**;ONBD$LOƒ=�$0‹Low�value�for�on-board�ram�(as�seen�by�driver)RAM$SQ„=�$0‹Difference�between�on-board�ram�address�as�seen�by*˜driver�and�device.JOFFBD$LO‚=�\ONBD$LO+\RAM$SQ�Low�value�for�on-board�ram�(as�seen�by�device)JOFFBD$HI‚=�\ONBD$HI+\RAM$SQ�High�valu�for�on-board�ram�(as�seen�by�device) FMSG‰******************************************************************MSG‰**ˆAddresses�of�timer,�etc.FMSG‰****************************************************************** #TIMER…=�$FFFB0000„Address�of�timer.3CLOCKFRQ‚=�0ŒNumber�of�clock�ticks�per�millisecond.7PANEL…=�$0‹Address�of�front�panel�(not�used�on�VME131).5TRCFLAGƒ=�0ŒTrace�flag.‚Zero�implies�don't�trace.‚The/*˜setting�of�bits�in�the�TRCFLAG�parameter�will1*˜control�which�events�cause�an�entry�to�be�built*˜in�the�trace�table.*˜Bit�#�in�TRCFLAG†Event *›15‘TRAP�#1*›14‘I/O�interrupt�not�claimed*°by�user�task.*›13‘Timer�interrupt.*›12‘User�trap�(2-15)*›11‘Exception *›10‘Dispatch*œ9‘I/O�interrupt�claimed�by *°user�task*œ8‘Return�from�LOADMMUë5ôü   ! 7 (*œ7‘Simulated�interrupt*œ6‘SYSFAIL�interrupt.**?SYSFAILƒ=�0ŒDetermines�whether�or�not�the�operating�system�will5*˜be�interrupted�when�SYSFAIL�is�asserted�on�the�bus.2*˜Some�intelligent�boards�will�assert�SYSFAIL�when0*˜they�experience�a�failure�of�some�kind.‚If�you5*˜have�such�boards�in�the�system,�AND�THE�DRIVERS�FOR3*˜THESE�BOARDS�HAVE�SYSFAIL�HANDLERS,�then�you�will2*˜probably�want�SYSFAIL�interrupts�enabled.‚If�the4*˜appropriate�SYSFAIL�handlers�are�not�written,�then5*˜taking�a�SYSFAIL�interrupt�will�hang�up�the�system,0*˜so�you�would�want�SYSFAIL�interrupts�disabled.!*š0�=�disable�SYSFAIL�interrupts. *š1�=‚enable�SYSFAIL�interrupts.FMSG‰******************************************************************.MSG‰**ƒLocal�terminal/printer�device�addresses#MSG‰**ƒShort�I/O�space�base�address&MSG‰**ƒShort�I/O�space�address�offsetsFMSG‰****************************************************************** :&VECTNOƒ=�$FFŠStarting�Vector�Number‚used�by�IOC.IPCDRV.AG8LTDA$01ƒ=�$FFFH B0040„VME131�local�terminal�port�1�address8LTDA$02ƒ=�$FFFB0050„VME131�local�terminal�port�2�address 3SIOBASEƒ=�$FFFF0000„Base�address�of�Short�I/O�space&DEVADDƒ=�\SIOBASE.RMS.CI�file�and�has�a�value�equal!*˜to�the�initial�program�counter.*@*ˆThe�following�parameters�are�used�to�define�memory�partitions.NNNNA*ˆIf�only�partition�0�exists,�then�MEMEND2�should�be�set�to�zero.*:*ˆThe�MMB851�uses�approximately�$400�bytes�of�overhead�for,*ˆevery�$40000�bytes�of�memory�to�be�mapped.9*ˆThus�supervisor�memory�(where�the�translation�trees�are>*ˆbuilt)�must�be�large�enough�($38000�works,�$28000�does�not).;*ˆAlso,�if�you�want�to�put�memory�at�a�high�address�with�no5*ˆmemory�in�between,�you�must�partition�memory�into�a;*ˆpartition�for�low�addresses,�and�a�partition�for�the�high8*ˆaddresses.�Otherwise�you�could�run�out�of�memory�while!*ˆbuilding�the�translation�trees.*NH NNNN**E*********************************************************************** WARNING !!!!*L* Set up MEMEND2 to start on a PGSIZE = \PGSIZE boundary, where PGSIZE is as* defined in VME131.RMS.CI*E********************************************************************* IFNEˆ\MMU*ƒIFEQˆ\MEMALOC…If�using�best�fit�algorithm3†NOPARTSƒ=�2ŒNumber�of�memory�partitions�(needed�by†*˜&.INITMEM.AG)@†MEMEND1ƒ=�$58000‡The�endƒof�partition�0�(assumed�to�start�at�0)+†MEMEND2ƒ=�$58000‡The�start�of�partition�1.*†MEMEND3ƒ=�$400000†The�endƒof�partition�1.ƒENDC/ƒIFNEˆ\MEMALOC…If�using�buddy�buffers�algorithm3†NOPARTSƒ=�1ŒNumber�of�memory�partitions�(needed�by†*˜&.INITMEM.AG)A†MEMEND1ƒ=�$400000†The�endƒof�partition�0�(assumed�to�start�at�0)'†MEMEND2ƒ=�$0‹The�start�of�partition�1.%†MEMEND3ƒ=�$0‹The�endƒof�partition�1.ƒENDCENDCIFEQˆ\MMU‰If�NO�MMU3ƒNOPARTSƒ=�1ŒNumber�of�memory�partitions�(needed�byƒ*˜&.INITMEM.AG)AƒMEMEND1ƒ=�$400000†The�endƒof�partition�0�(assumed�to�start�at�0)'ƒMEMEND2ƒ=�$0‹The�start�of�partition�1.%ƒMEMEND3ƒ=�$0‹The�endƒof�partition�1.ENDCNNN:WHERLOAD‚=�0ŒMemory�address�where�boot�file�will�be�loaded6*˜If�nonzero,�VERSAdos�will�be�moved�at�initialization*˜time.7CACHEF„=�0ŒNot�used�by�VME131�(needed�for�&.INITDAT.AG) =CACHE020‚=�1ŒThis�flag�determines�whether�the�68020's�on-chip!*˜instruction�cache�will�be�used:*š0�=�don't�use�it. *š1�=�use�it. 7*˜The�following�flags�determine�which�types�of�accesses8*˜will�get�cached�by�the�VME131's�instruction/data�cache1*˜In�each�case,�0�=�don't�cache�it,�1�=�cache�it.0CACHEUIƒ=�1Œ1�=�cache�user‡instruction�accesses.)CACHEUDƒ=�1Œ1�=�cache�user‡dataˆaccesses.6CACHESIƒ=�1Œ1�=�cache�supervisor�instruction�accesses./CACHESDƒ=�1Œ1�=�cache�supervisor�dataˆaccesses.3ASMTYPEƒ=�1ŒType�of�assembler�to�use�for�INITIO1.AG *œ0�-�Use�ASM*œ1�-�Use�ASM020 >****************************************************************‰Vector�numbers£**>***************************************************************-IOCVEC1ƒ=�$50ŠI/O�channel�interrupt�1�vector.-IOCVEC2ƒ=�$51ŠI/O�channel�inteI rrupt�2�vector.-IOCVEC3ƒ=�$52ŠI/O�channel�interrupt�3�vector.-IOCVEC4ƒ=�$53ŠI/O�channel�interrupt�4�vector.**IOCLVL1ƒ=�2ŒI/O�channel�interrupt�1�level.*IOCLVL2ƒ=�3ŒI/O�channel�interrupt�2�level.*IOCLVL3ƒ=�4ŒI/O�channel�interrupt�3�level.*IOCLVL4ƒ=�5ŒI/O�channel�interrupt�4�level. EMSG‰*****************************************************************)MSG‰**‚Parameters�about�table�sizes,�etc.EMSG‰***************************************************************** *0*‚PAGESIZE�NEEDS�TO�BE�A�MULTIPLE�OF�PGSIZE�FROM*‚VME131.RMS.CI*PAGESIZE‚=�\PGSIZE†From�RMS.CI**)ASN‡=�0Œ#�of�address�spaces--not�used�but!*˜needed�to�satisfy�&.INITDAT.AG. EMSG‰***************************************************************** MSG‰**½**#MSG‰**ŒADDRESS�AND�DATA�BUS�SIZE˜**=MSG‰**…---------------------------------------------------…**'MSG‰**ŒA$SIZE�=‚WIDTH�OF�ADDRESS�BUS“** MSG‰**½**)MSG‰**Œ32…=‚32�BIT�EXTENDED�ADDRESSING�**)MSG‰**Œ24…=‚24�BIT�STANDARD�ADDRESSING�** MSG‰**½**$MSG‰**ŒD$SIZE�=‚WIDTH�OF�DATA�BUS–** MSG‰**½**#MSG‰**Œ32…=‚32�BIT�LONGWORD�DATA“**MSG‰**Œ16…=‚16�BIT�WORD�DATA—** MSG‰**½**EMSG‰***************************************************************** D$SIZE„=�32 A$SIZE„=�32 GMSG‰*******************************************************************>MSG‰*ƒCopy�the�system�initializer�into�M68XXX.INIT.RO�based�on:MSG‰*ƒthe�type�of�memory�allocation�defined�at�RMSGEN�timeMSG‰*ƒin�.RMS.CD.GMSG‰******************************************************************* IFEQˆ\MEMALOC'ƒ=COPY‡BESTFIT.INIT.RO,M68XXX.INIT.RO;Y ƒIFEQˆ\MMU†=COPY‡&.MTYPE.SI,MTYPE.SI;YƒENDC ƒIFNEˆ\MMU†=COPY‡MULT.MTYPE.SI,MTYPE.SI;YƒENDCENDC IFNEˆ\MEMALOC%ƒ=COPY‡BUDDY.INIT.RO,M68XXX.INIT.RO;Yƒ=COPY‡&.MTYPE.SI,MTYPE.SI;YENDC GMSG‰*******************************************************************?MSG‰*ƒCopy�C40O44.SYSPAR.RO�into�&.SYSPAR.RO�to�make�it�genericAMSG‰*ƒfor�.LG�files�and�possible�for�sysgening�more�than�1�systemMSG‰*ƒper�account�#GMSG‰******************************************************************* $=COPY‡C40O44.SYSPAR.RO,&.SYSPAR.RO;YNNN'VME117 COPYSGENCF 0 0¬  $INITIO1 AG Q Q@  $SYSTEM CI ¢ ¢º  $CNFGDRVRCI à Ã&í  $IFDRVR CI ì ìT  $I =/*<=/*‚VME117.COPYSGEN.CF‚-‚Chain�file�to�copy�files�for�SYSGEN=/*'=/*‚--‚FORCE�CATALOG�TO�BE�SET�=�VME117 =USE :.VME117=/*D=/*†This�chainfile�copies�those�files�required�to�do�a�SYSGEN�into�a'=/*†a�specified�volume�and�user�number.=/*;=/*ƒInvoke�as:„=VME117.COPYSGEN.CF‚arg1,arg2,arg3,arg4,arg5 =/*…where:.=/*‰Arg1=�\1„Source�volume�nameŒ(must�specify).=/*‰Arg2=�\2„Target�volume�nameŒ(must�specify).=/*‰Arg3=�\3„Target�user�numberŒ(must�specify)-=/*‰Arg4=�\4„COPY�option�letter(s)‰(optional)=/*—B�=�both�copy�&�verify=/*—P�=�pack�files =/*—Y�=�overwrite�if�file�exists*=/*—N�=�skip�copy�if�file�existsƒ(default)*=/*–VT�=�verify�&�show�only�1st�difference2=/*‰Arg5=�\5„include�PCDRV�driver�filesƒ(optional)=/*—PCDRV�=�include�them=OPT N=/RX=\0=/RD=0 =/IF RX < 3…=/RD=1=/ENDIF =/IF RX > 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=/*‚Set�Arg6�so�this�file�can't�be�rerun�directly�w/o�setting�proper�args!=ARG \1,\2,\3,\4,\5,ARGS=OPT -N =/IF RD <> 0Mƒ=/*�INVOCATION�ERROR!�Insufficient,�null,�and/or�invalid�argument�specified!ƒ=/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 1' 9( AO=/*----------------------------------------------------------------------------$=/* 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 SCC driver files for sysgen=/@„\1:9998.COPYGEN.SCCDRV.CFO=/*----------------------------------------------------------------------------)=/* Copy all MPSC driver files for sysgen=/@„\1:9998.COPYGEN.MPSCDRV.CFO=/*----------------------------------------------------------------------------5=/* Copy all VME117 local PRT driver files for sysgen=/@„\1:9998.COPYGEN.P117DRV.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.MPCCJ DRV.CFO=/*----------------------------------------------------------------------------F=/* Copy all VME316 (VMEbus to I/O channel interface) files for sysgen=/@„\1:9998.COPYGEN.M316DEF.CFO=/*----------------------------------------------------------------------------/=/* Copy all VME435 (mag tape) files for sysgen=/@„\1:9998.COPYGEN.M435DRV.CFO=/*----------------------------------------------------------------------------)=/* Copy all SCSI driver files for sysgen=/@„\1:9998.COPYGEN.SCSIDRV.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=/*-----------------------------------------------------------------------------=/*‚Copy�all�VME117�specific�files�for�sysgen=/@„\1:9998.COPYGEN.VME117.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.CFO=/*----------------------------------------------------------------------------'=/* 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=/*‚Copy�all�the�rest�of�the�root�files�for�sysgen=/@„\1:9998.COPYGEN.ROOT.CFO=/*----------------------------------------------------------------------------=/*2=/*†VME117.COPYSGEN.CF‚completed.‰Have�a�nice�day!=/*N=/*‚No�"NOARG"�and�"=END"�because�independent�driver�release�items�may�follow!NNNNJ N7INITIO„IDNT‚45,0�RMS68K�I/O�initializer�for�the�VME117.O*******************************************************************************O*******************************************************************************O**********************************************************************************É***A***…ROUTINE:‚INITIO�--�RMS68K�I/O�INITIALIZER�FOR�THE�VME117.Š******É***J***…ENVIRONMENT:‚Part�of�the�RMS68K�exec�for�the�Motorola�68000�family.***(***‡Copyright�1983�by�Motorola,�Inc.¢******É***D***…FUNCTION:‚Routines�from�this�module�are�called�by�the�RMS68K‡***E***‡routine�INIT�during�system�initialization.‚All�board-specific„***.***‡initialization�is�done�in�this�module.œ******É***G***…NOTES:‚This�module�is�SUBSed,�ASMed,�and�LINKed�at�SYSGEN�time.„***?***‡All�modules�will�run�at�level�7�and�in�supervisor�mode.‹******É***O*******************************************************************************O*******************************************************************************O******************************************************************************* *,*‚Revision�history�(add�new�changes�to�top).*…Date†Author‚ChangesI*…--------‚------‚-------------------------------------------------------9*†3/26/86ƒBAW„Added�read�of�M117ERCLR�to�clear�interruptsF*†10/29/85‚CBS„Changed�the�way�we�call�KILLER�to�use�KILL.EXECT0�macro;*†6/26/85ƒCBS„Made�new�equate�file�for�117�control�register<*†3/25/85ƒBAW„Added�real�time�clock�read�to�set�time�on�boot*†2/15/85ƒBAW„Initial�writing.N I R ZL b; jK rR z[ ‚: Š ’-* * *‚XDEF's.*,ŠXDEFƒINITMMUŒRoutine�to�initialize�the�MMU.,ŠXDEFƒTIMERSTŒRoutine�to�start�up�the�timer.3ŠXDEFƒINITIO�Routine�to�set�up�all�the�other�board-*§specific�hardware. * *‚XREF's.* *…Routines:*…Parameters�from�INITDAT:-ŠXREFƒTIMSLICŒ#�of�timer�tics�per�time�slice.)ŠXREFƒTIMERA�Addr�of�timer�chip�(M68B40).3ŠXREFƒTIMINTVA‹#�of�milliseconds�between�interrupts*ŠXREFƒCLOCKFRQ‹#�of�cycles�per�millisecond*…SYSPAR�variables:ŠXREF.S�DATE�Date.1ŠXREF.S�TIME_LEFTŠms�until�next�significant�eventNNNK NN0ŠXREF.S�TIMESLIC‹#�of�timer�tics�per�time�slice.7ŠXREF.S�TIMINTVŒTime�interval�between�timer�interrupts.ŠXREF.S�TIMINTV4,ŠXREF.S�PTMADDRŒAddr�of�timer�chip�(M68B40).0ŠXREF.S�NSE�Next�significant�event�absolute�time$ŠXREF.S�MIDNIGHT‹ms�of�last�midnight *„Others:.ŠXREFƒCRASHSAV‹Place�to�SAVE�info�if�we�CRASH. **‚Included�files:**‰&.UTILITY.MC*‰M6840.M6840.EQ*‰VME117.MM58274.EQ*‰VME117.CTRLREG.EQ *‰&.KILL.MC*‰&.KILLEXEC.EQ *‰&.STR.EQ*ŠNOLISTŠINCLUDE�&.UTILITY.MCŠINCLUDE�M6840.M6840.EQŠINCLUDE�VME117.MM58274.EQŠINCLUDE�VME117.CTRLREG.EQŠINCLUDE�&.KILL.MCŠINCLUDE�&.KILLEXEC.EQŠINCLUDE�&.STR.EQŠLISTŠPAGEO*******************************************************************************O**********************************************************************************É***/***…ROUTINE:‚INITMMU�--�NOP�FOR�THE�MVME117œ******É******É******…ENTRY�CONDITIONS:³***+***‡Supervisor�mode,�interrupt�level�7.Ÿ******É***-***…EXIT�CONDITIONS�DIFFERENT�FROM�ENTRY:Ÿ******É***O*******************************************************************************O*^*****************************************************************************  ŠSECTION�8ŠOPT„BRS INITMMU:,‰RTS˜It's�easy�for�us�to�initialize�the�MMU,*£since�we�don't�have�one.* ‰PAGEL*****************************************************************************)*„Start�the�timer�running.Š(M68B40�timer)**&*ƒWe�use�timer�3�in�the�following�way:*-*ˆMost�significant�byte‚<---�(TIMINTVA*4)�-�1*.*ˆLeast�significant�byte�<---�|�CLOCKFRQ�|�-�1*¤|�--------�| *¤|_‚4…_|?*ˆThe�MSB�decrements�once�after�the�LSB�has�decremented�down�to/*ˆ-1.‚The�the�LSB�resets�to�its�original�count..*ˆWhen�the�MSB�hits�-1,�there�is�an�interrupt.*;*ˆThus�there�is�an�interrupt�after�CLOCKFRQ*TIMERVA�cycles.*TIMERST:-‰BSR‡RTC_STŠGet�time�into�syspar�from�battery*¢backed�up�clock.DŠMOVE.W�TIMSLIC(PC),TIMESLIC‚Set�the�sysgen�parameter�which�dictates%*§the�#�of�timer�tics�per�time�slice.'‰MOVE.L�TIMERA(PC),A1‡GET�TIMER�ADDRESS#‰MOVE.L�A1,PTMADDRŠSAVE�IT�FOR�EXEC$‰BEQ.S‚TIMER_EXITŠBRANCH�IF�NO�TIMER)‰PEA„TIMERBE(PC)‰WHERE�TO�GO�ON�BUS�ERROR$‰MOVE.W�#'BE',-(A7)‰SET�BUS�ERR�FLAG3‰MOVE.B�#$01,CR2SR(A1)†ALLOW�WRITE�TO�CONTROL�REG�1&‰MOVE.B�#$01,CR13(A1)‡ALL�TIMERS�RESET$‰MOVE.L�#CLOCKFRQ,D0ˆCLOCK�FREQUENCY‰DIVUƒ#4,D0�DIVIDE�BY�4#‰SUB.W‚#1,D0�CLOCK�INTERRUPTS�AT�-1*‰MOVE.W�TIMINTVA(PC),D1…INTERRUPT�INTERVAL ‰MOVE.W�D1,TIMINTVŠSAVE�FOR�EXEC‰MULUƒ#4,D1�MULTIPLY�BY�4*‰SUB.W‚#1,D1�SUBTRACT�1�-�TIMER�GOES�TO�-1!‰MOVE.W�D1,TIMINTV4‰SAVE�FOR�EXEC‰LSL.W‚#8,D1�PUT�IN�HIGH�BYTE)‰ADD.W‚D1,D0�VALUE�FOR�TIMER�3�(2�HALVES)‰MOVEP‚D0,MSBT3(A1)ˆSET�TIMER�34‰MOVE.W�#256,D0�VALUE�FOR�TIMER�1�(OVERFLOW�COUNTER)‰MOVEP‚D0,MSBT1(A1)ˆSET�TIMER�18‰MOVE.B�#$00,CR2SR(A1)†ALLOW�WRITE�TO�CONTROL�REGISTER�3;‰MOVE.B�#$C6,CR13(A1)‡T3--INTERNAL�CLOCK,INTERRUPT�ENABLED,*£OUTPUT�ENABLED,�8-BIT�MODE8‰MOVE.B�#$01,CR2SR(A1)†ALLOW�WRITE�TO�CONTROL�REGISTER�1;‰MOVE.B�#$00,CR13(A1)‡T1--EXTERNAL�CLOCK,�ENABLE�ALL�TIMERS3‰ADDQ.L�#6,SP�Everything�went�OK;�just�get�that�bus,‰RTS˜error�junk�off�the�stack�and�go�back�to*£INIT.*;TIMERBE‚MOVE.L‚#CRASHSAV,PTMADDR‚USE�DUMP�POINTER�FOR�TIMER TIMER_EXIT�RTS–Return�to�INIT.*@@@@ŠPAGEO********************************************************************************2*ˆREAD�REAL�TIME�BATTERY-BACKED�UP�CLOCK�(MM58274)*O**************************************************************************K ***** **G*‚This�macro�will�verify�that�a�byte�is�within�a�specified�range.‚If�itH*‚is�not�within�the�range,�a�branch�is�taken�to�RANGE_ERR.‚The�syntax�isD*„CHECK_RANGE.‚,,F*‚Distance�is�S�for�short�branches,�L�for�long�branches,�or�nothing�if*‚the�default�will�do.6*‚The�byte�to�check�is�treated�as�an�unsigned�integer.*CHECK_RANGE MACRO ŠCMP.B‚\2,\1ŠBLO.\0�RANGE_ERR ŠCMP.B‚\3,\1ŠBHI.\0�RANGE_ERRŠENDM  *@@@@@!*@@@ VME117.INITIO1.MG -- 3/28/857*‚THIS�IS�A�NEW�WAY�TO�CALCULATE�NUMBER�OF�MILLISECONDS<*‚AND�DATE�AFTER�READING�THE�MM58274�BATTERY�BACKED�UP�CLOCK***‚REGISTER�USE:*’0ƒ1ƒ2ƒ3ƒ4ƒ5ƒ6*ˆA�* *ˆD‰*ƒ*ƒ*ƒ*ƒ**)*ˆA1�=�address�of�battery-backed�up�clock'*ˆD0�=�accumulated�milliseconds�of�time-*ˆD1�=�seconds�and�minutes�as�read�from�clock(*ˆD2�=�hours�and�days�as�read�from�clock(*ˆD3�=�month�and�year�as�read�from�clock*ˆD4�=�work�register*H*‚The�MM58472�stores�its�time�data�in�binary�coded�decimal�and�when�read/*‚you�see�an�F�in�the�upper�4�bits�of�the�byte.*1*‚Follow�along�with�this�example�in�the�comments:*#*ˆthe�time�is�13:29:45ƒdate‚3/26/85* *‚read�as**ˆF5F4F9F2ƒF3F1F6F2„F3F0F5F8**‚from�the�MM58472.*RTC_ST:&****‚At�some�point,�add�this�to�syspar‰MOVE.L„#RTC_TIMER,A1*‰PEA‡RTC_BE(PC)ŠWhere�to�go�if�there�is�no#‰MOVE.W„#'BE',-(A7)‰real�time�clock RTC_LOOP:6‰MOVEP.LƒUNIT_SEC(A1),D1…Read�the�clock�into�registers‰MOVEP.LƒUNIT_HRS(A1),D2‰MOVEP.LƒUNIT_MON(A1),D3+‰MOVEP.LƒUNIT_SEC(A1),D4…Read�seconds�again)‰CMP.L…D1,D4�If�its�different,�try�again. ‰BNE‡RTC_LOOP ,‰CLR.L…D0’D0�will�contain�total�milliseconds**ƒD0�=�0**‰sec�min�hr‚day�mon‚yr+*ƒD1�=�F5F4F9F2‰D2�=�F3F1F6F2ŠD3�=�F3F0F5F8**ƒD4�=�F5F4F9F2**‚First�we�work�with�D1*"‰AND.L…#$0F0F0F0F,D1‡D1�=�05040902‰AND.L…#$0F,D4�D4�=�00000002 ‰MULU†#10,D4ŽD4�=�00000014†(&20)‰LSR.L…#8,D1�D1�=�00050409(‰ADD.B…D1,D4�D4�=�0000001D†(&29)‚minutes‰CHECK_RANGE.L‚D4,#0,#59*‰MULU†#60,D4ŽD4�=�000006CC†(&1740)�seconds(‰ADD.L…D4,D0�Add�number�of�seconds�to�D0**‰LSR.L…#8,D1�D1�=�00000504‰CLR.L…D4’D4�=�00000000‰MOVE.B„D1,D4�D4�=�00000004(‰MULU†#10,D4ŽD4�=�00000028‚(&40�seconds)‰LSR.L…#8,D1�D1�=�00000005(‰ADD.L…D1,D4�D4�=�0000002D‚(&45�seconds)‰CHECK_RANGE.L‚D4,#0,#59*‰ADD.L…D4,D0�D0�=�000006F9‚(&1785�seconds).‰MULU†#1000,D0ŒD0�=�001B3CA8‚(&17850000�M�SEC)*F*‚Now�D0�holds�the�total�so�far�of�the�number�of�milliseconds�from�the*‚minutes�and�seconds�fields.*&*‚Let's�work�on�the�hours�field�in�D2.**‰hr‚day�mon‚yr*ƒD2�=�F3F1F6F2ŠD3�=�F3F0F5F8*"‰AND.L…#$0F0F0F0F,D2‡D2�=�03010602‰MOVE.L„D2,D1�D1�=�03010602‰SWAP†D1’D1�=�06020301‰AND.L…#$0F0F,D1ŒD1�=�00000301‰CLR.L…D4’D4�=�00000000‰MOVE.B„D1,D4�D4�=�00000001&‰MULU†#10,D4ŽD4�=�0000000A„(&10�hours)‰LSR.L…#8,D1�D1�=�00000003&‰ADD.B…D1,D4�D4�=�0000000D„(&13�hours)‰CHECK_RANGE.L�D4,#0,#23**-‰MOVE.L„#3600*1000,D1‡Milliseconds�in�an�hour/‰BRA‡CALCLOOPŒLoop�until�number�of�milliseconds.CALCHRS‚ADD.L…D1,D0�in�hours�field�calculated.CALCLOOP�DBRA†D4,CALCHRS *1*‚D0�now�contains�the�grand�total�of�milliseconds*‰ADD.L…TIME_LEFT,D0 ‰MOVE.L„D0,NSEŽStore�it�for�exec‰CLR.L…MIDNIGHT***ƒNow�work�on�the�date**‰hr‚day�mon‚yr*ƒD2�=�03010602ŠD3�=�F3F0F5F8*"‰AND.L…#$0F0F0F0F,D3‡D3�=�03000508 ‰CLR.L…D0‰MOVE.B„D3,D0�D0�=�00000008&‰MULU†#10,D0ŽD0�=�00000050‚(&80�years)‰LSR.W…#8,D3�D3�=�00030005&‰ADD.B…D3,D0�D0�=�00000055‚(&85�years)‰CHECK_RANGE‚D0,#0,#99%‰ADD.W…#1900,D0ŒD0�=�000007C1‚(&1985)!‰SWAP†D0’D0�=�07C10000‚(YYYY0000) ‰SWAP†D3’D3�=�05080300 ‰CLR.L…D4‰MOVE.B„D3,D4�D4�=�00000000‰MULU†#10,D4ŽD4�=�00000000‰LSR.L…#8,D3�D3�=�00050803&‰ADD.B…D3,D4�D4�=�00000003‚(&03�month)%‰ADD.B…D4,D0�D0�=�07C10003‚(YYYY00MM)‰CHECK_RANGEƒD0,#1,#12%‰LSL.W…#8,D0�D0�=�07C10300‚(YYYYMM00)**‰hr‚day*ƒD2�=�03010602*‰AND.L…#$0F0F,D2‹D2�=�00000602 ‰CLR.L…D4‰MOVE.B„D2,D4�D4�=�00000002%‰MULU†#10,D4ŽDL 4�=�00000014ƒ(&20�days)‰LSR.L…#8,D2�D2�=�00000006%‰ADD.B…D2,D4�D4�=�0000001Aƒ(&26�days)‰CHECK_RANGE‚D4,#1,#31%‰ADD.B…D4,D0�D0�=�07C1031Aƒ(YYYYMMDD) *7*‚The�time�and�date�look�reasonable,�so�let's�keep�them*‰BSR‡DATEGOŽConvert�to�ordinal!‰MOVE.L„D0,DATE�Give�date�to�exec  0‰ADDQ.L„#6,A7�Remove�'BE'�and�bus�error�messages‰RTS*@*‚If�we�come�here,�one�of�the�fields�read�from�the�clock�chip�is)*‚"whacko".‚Set�system�time�and�day�to�0.*1RANGE_ERR‚MOVE.L‚TIME_LEFT,NSE‡Time�of�day�<---�0‰CLR.L…MIDNIGHT‰MOVE.L„#0,DATE ‰ADDQ.L„#6,A7‰RTS*4*‚If�we�come�here,�there�is�no�real�time�clock�found*RTC_BE****…MOVE.L„#CRASHSAV,RTC_TIMER‰RTS    *@@@ŠPAGEO*******************************************************************************2*ˆDATE�CONVERSIONS�FROM�ONE�BINARY�FORM�TO�ANOTHER*Ç6*ˆORDINAL�DATE�-->�DAY�NUMBER�WHERE�DAY�1�=�JAN�1�1980***ˆCALL *’BSR‡DATEGO*¦BINARY�GREGORIAN�-�YYYYMMDD*§TO*¦BINARY�ORDINALƒ-�DAY�NUMBER*ˆINPUT'*’D0�=�DATE�TO�BE�CONVERTED�--�YYYYMMDD**ˆOUTPUT#*’D0�=�CONVERTED�DATE‡--�DAY�NUMBER*O******************************************************************************* ‰SECTIONƒ8**ˆNON-LEAP�DAYS�BEFORE�TABLE¥*Ç=DATEDBNL�DC.W�0,31,59,90,120,151,181,212,243,273,304,334,365Œ*Ç*ˆLEAP�DAYS�BEFORE�TABLE©*Ç>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*‚>>>>>>>µ<<<<<<<*‚>>>>>>>•NOTICEš<<<<<<<*‚>>>>>>>µ<<<<<<<>*‚>>>>>>>…When�incorporating�any�drivers�during�SYSGEN„<<<<<<<?*‚>>>>>>>…that�require�memory�allocated�for�them�as�perƒ<<<<<<<?*‚>>>>>>>…the�driver�package�instructions�-�this�is�theƒ<<<<<<<,*‚>>>>>>>…spot�the�file(s)�go�into!!–<<<<<<<*‚>>>>>>>µ<<<<<<<=*‚>>>>>>>…This�is�also�the�spot�for�code�for�a�driver…<<<<<<<>*‚>>>>>>>…that‚requires�other�types�of�initialization,ƒ<<<<<<<0*‚>>>>>>>…such‚as�clearing�an�interrupt.‘<<<<<<<*‚>>>>>>>µ<<<<<<<*‚>>>>>>>‘MERGE�IT�HERE—<<<<<<<*<*ˆWhen�you�write�the�code�that�is�to�be�merged�here,�wrap�it*ˆaround�with�the�following:*:*ˆAt�the�beginning,�with�DRVRxOUT�referring�to�your�unique*ˆlabel,�put�this�code:*'*‹PEA„DRVRxOUT(PC)„IF�BUS�ERROR�OCCURS,*¢RETURN�OR�GO�ON�TO�NEXT*¢DRIVER'S�INITIALIZATION**‹MOVE.W�#'BE',-(A7)…SAVE�'BUS�ERROR'�FLAG*9*ˆThen�insert�the�code�to�do�what�you�need�to�do�for�this*ˆparticular�driver.**ˆAt�the�end,�put�this:***‹LEA„6(A7),A7ˆREMOVE�BUS�ERROR�FROM�STACK*DRVRxOUTƒEQU„**=*ˆIn�this�way,�if�the�code�for�one�driver�causes�a�bus�error,.*ˆthe�code�for�other�drivers�will�be�executed.*E*‚>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<G*********************************************************************** ‰END M NN**ˆVME117.SYSTEM.CI*L****************************************************************************@*‚This�file�contains�all�board/system�dependencies�for�VME117.Œ*&*‚It�is�called�from�"&.VERSADOS.CD".¦**Ê*E*‚The�user�should�not�have�to�modify�this�file�except�under�extreme‡**‚circumstances.º*L**************************************************************************** <*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~**†ON�BOARD�RAM�ADDRESSES*>*†VMEbus�drivers�require�the�following�target�system�dependentB*†variables�to�be�defined�when�the�macro�file�DUALPORT.MC�is�used:<*†Note�that�the�ONBD$HI�parameter�may�vary�on�the�VME110�and<*†and�VME101�systems�depending�on�the�size�and�number�of�RAM<*†chips�used�on�the�processor�card.‚The�values�shown�are�the?*†minimum�requirements.�Modify�that�parameter�to�match�your�own*†system�if�different.**0*ƒThe�MVME117�does�not�have�any�dual�ported�RAM.=*ƒThere�may�be�either�128K�bytes�or�512bytes�of�RAM�on�board,4*ƒdepending�on�which�type�of�MVME117�board�you�have.**;ONBD$LOƒ=�$0‹Low‚value�for�on-board�ram�(as�seen�by�driver)@ONBD$HIƒ=�$1FFFF‡High�value�for�on-board�ram�(as�seen�by�driver)ARAM$SQ„=�$0000ˆDifference�between�on-board�ram�address�as�seen�by*˜driver�and�device.JOFFBD$LO‚=�\ONBD$LO+\RAM$SQ�Low‚value�for�on-board�ram�(as�seen�by�device)KOFFBD$HI‚=�\ONBD$HI+\RAM$SQ�High�value�for�on-board�ram�(as�seen�by�device) FMSG‰******************************************************************MSG‰**ˆAddresses�of�timer,�etc.FMSG‰****************************************************************** TIMER…=�$F50000†Address�of�timer*5CLOCKFRQ‚=�1000‰Number�of�clock�ticks�per�millisecond*œ1�MHz�internal�clock"PANEL…=�$0‹Address�of�front�panel.5TRCFLAGƒ=�0ŒTrace�flag.‚Zero�implies�don't�trace.‚The/*˜setting�of�bits�in�the�TRCFLAG�parameter�will1*˜control�which�events�cause�an�entry�to�be�built*˜in�the�trace�table. š1 £4 «1 ³%*˜Bit�#�in�TRCFLAG†Event *›15‘TRAP�#1*›14‘I/O�interrupt�not�claimed*°by�user�task.*›13‘Timer�interrupt.*›12‘User�trap�(2-15)*›11‘Exception *›10‘Dispatch*œ9‘I/O�interrupt�claimed�by *°user�task*œ8‘Return�from�LOADMMU*œ7‘Simulated�interrupt*œ6‘SYSFAIL�interrupt.*FMSG‰******************************************************************.MSG‰**ƒLocal�terminal/printer�device�addresses$MSG‰***‚Short�I/O�space�base�address'MSG‰***‚Short�I/O�space�address�offsetsFMSG‰****************************************************************** 9LTDA$01ƒ=�$F48005†VME117�local�terminal�#1�device�address9LTDA$02ƒ=�$F48001†VME117�local�terminal�#2�device�address8LPDA$01ƒ=�$F44001†VME117�local�printer‚#1�device�address2LDDA$01ƒ=�$F58001†VME117�local�diskˆdevice�address ?SYSFAILƒ=�0ŒDetermines�whether�or�not�the�operating�system�will5*˜be�interrupted�when�SYSFAIL�is�asserted�on�the�bus.2*˜Some�intelligent�boards�will�assert�SYSFAIL�when0*˜they�experience�a�failure�of�some�kind.‚If�you5*˜have�such�boards�in�the�system,�AND�THE�DRIVERS�FOR3*˜THESE�BOARDS�HAVE�SYSFAIL�HANDLERS,�then�you�will2*˜probably�want�SYSFAIL�interrupts�enabled.‚If�the4*˜appropriate�SYSFAIL�handlers�are�not�written,�then5*˜taking�a�SYSFAIL�interrupt�will�M hang�up�the�system,0*˜so�you�would�want�SYSFAIL�interrupts�disabled.!*š0�=�disable�SYSFAIL�interrupts. *š1�=‚enable�SYSFAIL�interrupts.*=PARITY„=�1ŒDetermines�whether�parity�checking�will�be�done�or1*˜not.‚It�is�usually�best�to�check�parity,�but�in5*˜some�applications,�speed�may�be�of�more�importance,8*˜and�in�that�case�the�user�can�disable�parity�checking.*š0�=�disable�PARITY*š1�=�enable�PARITY**AREQMODEƒ=�1ŒOn�the�VME117,�it�is�possible�to�choose�the�requestor2*˜mode�of�Release�when�done�or�release�on�request.2*˜Release�when�done�means�that�whoever�has�the�bus*˜releases�it�when�it�is�done.3*˜Release�on�request�means�that�whoever�has�the�bus0*˜hangs�on�to�it�until�someone�else�requests�it.1*˜We�recommend�release�on�request�for�the�VME117.**š0�=�release�when�done*š1�=�release�on�request*1SIOBASEƒ=�$FF0000†Base�address�of�short�I/O�space****************************************************************‰Vector�numbers£**>***************************************************************-IOCVEC1ƒ=�$50ŠI/O�channel�interrupt�1�vector.-IOCVEC2ƒ=�$51ŠI/O�channel�interrupt�2�vector.-IOCVEC3ƒ=�$52ŠI/O�channel�interrupt�3�vector.-IOCVEC4ƒ=�$53ŠI/O�channel�interrupt�4�vector.**IOCLVL1ƒ=�2ŒI/O�channel�interrupt�1�level.*IOCLVL2ƒ=�3ŒI/O�channel�interrupt�2�level.*IOCLVL3ƒ=�4ŒI/O�channel�interrupt�3�level.*IOCLVL4ƒ=�5ŒI/O�channel�interrupt�4�level. FMSG‰******************************************************************3MSG‰**…Descriptive�info�about�this�operating�systemFMSG‰****************************************************************** 6TIMSLICƒ=�2ŒNumber�of�timer�interrupts�per�time�slice.=TIMINTVƒ=�10‹Number�of�milliseconds�between�timer�interrupts.?ROMEADDR‚=�$0‹ROM�end�address�--�defined�by�user�for�a�ROMmable,*œsystem.‚Set�to�$0�if�not�a�ROMable�system.-*œThe�ROM�start�address�(ROMSADDR)�is�defined3*œin�the�.RMS.CI�file�and�has�a�value�equal!*œto�the�initial�program�counter.*@*ˆThe�following�parameters�are�used�to�define�memory�partitions.A*ˆIf�only�partition�0�exists,�then�MEMEND2�should�be�set�to�zero.*@NOPARTSƒ=�1ŒNumber�of�memory�partitions�(needed�by�&.INITMEM.AG)AMEMEND1ƒ=�$200000†The�endƒof�partition�0�(assumed�to�start�at�0).&MEMEND2ƒ=�$0‹The�start�of�partition�1.$MEMEND3ƒ=�$0‹The�endƒof�partition�1. ;WHERLOAD‚=�$0‹Memory�address�where�boot�file�will�be�loaded6*˜If�nonzero,�VERSAdos�will�be�moved�at�initialization*˜time.8CACHEF„=�0ŒNot�used�for�VME117�(needed�for�&.INITDAT.AG)3ASMTYPEƒ=�0ŒType�of�assembler�to�use�for�INITIO1.AG *œ0�-�Use�ASM*œ1�-�Use�ASM020 EMSG‰*****************************************************************)MSG‰**‚Parameters�about�table�sizes,�etc.EMSG‰***************************************************************** 'PAGESIZE‚=�\PGSIZE†From�.RMS.CI*6ASN‡=�127Š#�of�address�spaces:‚needed�by�&.INITDAT.AG. GMSG‰*******************************************************************>MSG‰*ƒCopy�the�system�initializer�into�M68XXX.INIT.RO�based�on:MSG‰*ƒthe�type�of�memory�allocation�defined�at�RMSGEN�timeMSG‰*ƒin�.RMS.CD.GMSG‰******************************************************************* =COPY‡&.MTYPE.SI,MTYPE.SI;Y IFEQˆ\MEMALOC'ƒ=COPY‡BESTFIT.INIT.RO,M68XXX.INIT.RO;YENDC IFNEˆ\MEMALOC%ƒ=COPY‡BUDDY.INIT.RO,M68XXX.INIT.RO;YENDC GMSG‰*******************************************************************?MSG‰*ƒCopy�C20O24.SYSPAR.RO�into�&.SYSPAR.RO�to�make�it�genericAMSG‰*ƒfor�.LG�files�and�possible�for�sysgening�more�than�1�systemMSG‰*ƒper�account�#GMSG‰****N *************************************************************** $=COPY‡C20O24.SYSPAR.RO,&.SYSPAR.RO;YNN*ˆVME117.CNFGDRVR.CI*'* Configuration file for device driversO*------------------------------------------------------------------------------D* This file sets up the flags used by the "VME117.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/SYSTEM�DEPENDENCIES�are�included�from�the�&.VERSADOS.CD�file.�---;*�VME117.SYSTEM.CIƒadd�processor�board/system�dependencies,(*˜including�local�terminals�and�printers6*�&.CNFGTASK.CI†add�O/S�task�configuration�for�ROM/RAMM***************************************************************************** O*------------------------------------------------------------------------------9NOLTERMƒ=�2Œ#�of�terminals�on�VME117�serial�ports;�max=�2NOSCC…=�\NOLTERM O*------------------------------------------------------------------------------1NOLPRT„=�1Œ#�of�local�(on-board)�printers;�max=�1 O*------------------------------------------------------------------------------)NVME050ƒ=�0Œ#�of�VME050ƒSystem�Controller IFGTˆ\NVME0507ƒNT050$1ƒ=�0Œ#�of�terminals�on�the�VME050�board;�max=�26ƒNP050$1ƒ=�0Œ#�of�printers‚on�the�VME050�board;�max=�1ENDC O*------------------------------------------------------------------------------3NOSCSI„=�1Œ#�of�local�SCSI�controller�chips;�max=�1 *F*‚WARNING�--‚We�MUST�begin�with�SASI�controllers�on�the�VME117.ƒIf�youE*‚WARNING�--‚need‚to�SYSGEN‚SASI�controllers�on�the�VME117,‚the�FIRST »* Ä8 Ì0 Ô- Ü/G*‚WARNING�--‚controller�must�be�SASI.‚Any�additional�controllers�can�beF*‚WARNING�--‚SASI�or�SCSI,�in�any�order.ƒThis�only�applies�to�disks�on:*‚WARNING�--‚the�VME117�SCSI�Bus�Interface�(SASI�or�SCSI).**H*‚NOTE�:�The�controller�number�must�equal�the�SCSI�address�as�jumered�on*‰the�controller�board.* 8* The following are the supported SASI type controllers:*4* DSKTYP$0 and DSKTYP$2 can be one of the following:>*Š"'DTC520XX'"‚this�refers�to�a�DTC520B�or�DTC520DB�controller)*˜hard�disks�max�=�2†floppy�disks�max�=�24*Š"'OMTI5200'"‚this�refers�to�a�OMTI�5200�controller)*˜hard�disks�max�=�2†floppy�disks�max�=�2D*Š"'ADAP4000'"‚this�refers�to�a�ADAPTEC�ACB�4000�or�4000A�controller*˜hard�disks�max�=�2* 8* The following are the supported SCSI type controllers:*4* DSKTYP$1 and DSKTYP$3 can be one of the following:4*Š"'SABER55M'"‚this�refers�to�a�SABER�55M�controller*˜hard�disks�max�=�2?*Š"'EMULMD01'"‚this�refers�to�a�EMULEX�MEDALIST�MD01�controller*˜hard�disks�max�=�2N 7*Š"'ADAP5500'"‚this�refers�to�a�ADAPTEC�5500�controller*˜hard�disks�max�=�4 @* The following is the supported Common Command Set controllers:* * DSKTYP$5 can be the following::*Š"'COM_CMD'"ƒthis�refers�to�any�controller�supporting�the*˜Common�Command�Set)*˜hard�disks�max�=�4†floppy�disks�max�=�4 IFGTˆ\NOSCSI ƒ*ƒ*‚Controller�#0ƒ*!ƒCONTSCS0‚=�"0"‹Controller�number1ƒDSKTYP$0‚=�"'DTC520XX'"‚DTC520xx�disk�controller#ƒNHSCSI$0‚=�2�#�of�hardƒdisk�drives%ƒNFSCSI$0‚=�2�#�of�floppy�disk�drivesBƒSCSI0$0ƒ=�"'H5SASI40'"‚Type�of�hardƒdisk�on�controller�0,�drive�0BƒSCSI1$0ƒ=�"'H5SASI40'"‚Type�of�hardƒdisk�on�controller�0,�drive�1CƒSCSI2$0ƒ=�"'F5DDDSI'"ƒType�of�floppy�disk�on�controller�0,�drive�2CƒSCSI3$0ƒ=�"'F5DDDSI'"ƒType�of�floppy�disk�on�controller�0,�drive�3ƒ*ƒ*‚Controller�#1ƒ*!ƒCONTSCS1‚=�"1"‹Controller�number7ƒDSKTYP$1‚=�"'SABER55M'"‚ADSI�SABER-55M�disk�controller#ƒNHSCSI$1‚=�2�#�of�hardƒdisk�drivesBƒSCSI0$1ƒ=�"'H5SCSI40'"‚Type�of�hard�disk�on�controller�1,�drive�0BƒSCSI1$1ƒ=�"'H5SCSI40'"‚Type�of�hard�disk�on�controller�1,�drive�1BƒSCSI2$1ƒ=�"'H5SCSI40'"‚Type�of�hard�disk�on�controller�1,�drive�2BƒSCSI3$1ƒ=�"'H5SCSI40'"‚Type�of�hard�disk�on�controller�1,�drive�3ƒ*ƒ*‚Controller�#2ƒ*!ƒCONTSCS2‚=�"2"‹Controller�number1ƒDSKTYP$2‚=�"'DTC520XX'"‚DTC520xx�disk�controller#ƒNHSCSI$2‚=�0�#�of�hardƒdisk�drives%ƒNFSCSI$2‚=�0�#�of�floppy�disk�drivesBƒSCSI0$2ƒ=�"'H5SASI40'"‚Type�of�hardƒdisk�on�controller�2,�drive�0BƒSCSI1$2ƒ=�"'H5SASI40'"‚Type�of�hardƒdisk�on�controller�2,�drive�1CƒSCSI2$2ƒ=�"'F5DDDSI'"ƒType�of�floppy�disk�on�controller�2,�drive�2CƒSCSI3$2ƒ=�"'F5DDDSI'"ƒType�of�floppy�disk�on�controller�2,�drive�3ƒ*ƒ*‚Controller�#3ƒ*!ƒCONTSCS3‚=�"3"‹Controller�number7ƒDSKTYP$3‚=�"'SABER55M'"‚ADSI�SABER-55M�disk�controller#ƒNHSCSI$3‚=�0�#�of�hardƒdisk�drivesBƒSCSI0$3ƒ=�"'H5SCSI40'"‚Type�of�hard�disk�on�controller�3,�drive�0BƒSCSI1$3ƒ=�"'H5SCSI40'"‚Type�of�hard�disk�on�controller�3,�drive�1BƒSCSI2$3ƒ=�"'H5SCSI40'"‚Type�of�hard�disk�on�controller�3,�drive�2BƒSCSI3$3ƒ=�"'H5SCSI40'"‚Type�of�hard�disk�on�controller�3,�drive�3ƒ*1ƒ*‚Controller�#4�is�reserved�for�Tape�controllersƒ*ƒ*ƒ*‚Controller�#5ƒ*!ƒCONTSCS5‚=�"5"‹Controller�number*ƒDSKTYP$5‚=�"'COM_CMD'"ƒCommon�Command�set#ƒNHSCSI$5‚=�0�#�of�hardƒdisk�drives%ƒNFSCSI$5‚=�0�#�of�floppy�disk�drivesBƒSCSI0$5ƒ=�"'H5SCSI40'"‚Type�of�hardƒdisk�on�controller�5,�drive�0BƒSCSI1$5ƒ=�"'H5SCSI40'"‚Type�of�hardƒdisk�on�controller�5,�drive�1BƒSCSI2$5ƒ=�"'H5SCSI40'"‚Type�of�hardƒdisk�on�controller�5,�drive�2BƒSCSI3$5ƒ=�"'H5SCSI40'"‚Type�of�hardƒdisk�on�controller�5,�drive�3CƒSCSI4$5ƒ=�"'F5DDDSI'"ƒType�of�floppy�disk�on�controller�5,�drive�4CƒSCSI5$5ƒ=�"'F5DDDSI'"ƒType�of�floppy�disk�on�controller�5,�drive�5CƒSCSI6$5ƒ=�"'F5DDDSI'"ƒType�of�floppy�disk�on�controller�5,�drive�6CƒSCSI7$5ƒ=�"'F5DDDSI'"ƒType�of�floppy�disk�on�controller�5,�drive�7ƒ*6ƒ*‚Controller�#6�and�#7�are�reserved�for�VME117�boardsƒ*ENDC O*------------------------------------------------------------------------------2NORWIN„=�1Œ#�of�RWIN1„Winchester�controller�boards* IFGTˆ\NORWIN+ƒCONTWIN1‚=�"8"Š1st�RWIN1�controller�number8ƒNHRWIN$1‚=�1Œ#�of�hardƒdisk�drives�on�1st�RWIN1;�max=�2:ƒNFRWIN$1‚=�2Œ#�of�floppy�disk�drives�on�1st�RWIN1;�max=�2>ƒRWIN0$1ƒ=�"'H5WIN40'"‚Type�of�hardƒdisk�on�1st�RWIN1,�drive�0>ƒRWIN1$1ƒ=�"'H5WIN40'"‚Type�of�hardƒdisk�on�1st�RWIN1,�drive�1@ƒRWIN2$1ƒ=�"'F5DDDSI'"‚Type�of�floppy�disk�on�1st�RWIN1,�drive�2@ƒRWIN3$1ƒ=�"'F5DDDSI'"‚Type�of�floppy�disk�on�1st�RWIN1,�drive�3 +ƒCONTWIN2‚=�"9"Š2nd�RWIN1�controller�number8ƒNHRWIN$2‚=�0Œ#�of�hardƒdisk�drives�on�2nd�RWIN1;�max=�2:ƒNFRWIN$2‚=�0Œ#�of�floppy�disk�drives�on�2nd�RWIN1;�max=�2BƒRWIN0$2ƒ=�"'H5WIN40'"‚Type�of�1st�hardƒdisk�on�2nd�RWIN1,�drive�0BƒRWIN1$2ƒ=�"'H5WIN40'"‚Type�of�2nd�hardƒdisk�on�2nd�RWIN1,�drive�1DƒRWIN2$2ƒ=�"'F5DDDSI'"‚Type�of�1st�floppy�disk�on�2nd�RWIN1,�drive�2DƒRWIN3$2ƒ=�"'F5DDDSI'"‚Type�of�2nd�floppy�disk�on�2nd�RWIN1,�drive�3ƒ*O Gƒ*…NOTE:‚You�can�not�mix�5-1/4"�and�8"�floppies.‚Pick�one�or�the�other.ƒ*ENDC O*------------------------------------------------------------------------------@NVME316ƒ=�1Œ#�of�MVME316‚VMEbus�to�I/O�channel�interface�boards;*˜max=�1 O*------------------------------------------------------------------------------5NVME400‚=�0�#�of�MVME400‚dual�7201�serial�port�boards IFGT‚\NVME400:ƒNU400$1ƒ=�0�#�of�ports/users�on�VME400�bd.�#1;�max=�2/bd.:ƒNU400$2ƒ=�0�#�of�ports/users�on�VME400�bd.�#2;�max=�2/bd.ENDC O*------------------------------------------------------------------------------9NVME410‚=�0�#�of�MVME410‚dual�16-bit�parallel�port�boards IFGT‚\NVME410<ƒNU410$1ƒ=�0Œ#�of�printers�in�use�on�VME410�board�#1:‚max=�2<ƒNU410$2ƒ=�0Œ#�of�printers�in�use�on�VME410�board�#2:‚max=�2ENDC O*------------------------------------------------------------------------------;NVME435ƒ=�0Œ#�of�MVME435�mag�tape�controller�boards;�max=�2 IFGTˆ\NVME435;ƒN435$1„=�0Œ#�of�tape�drives�on�first‚MVME435�board;�max=�8<ƒN435$2„=�0Œ#�of�tape�drives�on�second�MVME435�board;�max=�8ENDC O*------------------------------------------------------------------------------7NVME600ƒ=�0Œ#�of�MVME600‚analog�input‚controller�boards O*------------------------------------------------------------------------------8NVME605ƒ=�0Œ#�of�MVME605‚analog�output�controller�boards IFGTˆ\NVME6059ƒNU605…=�0ŒNumber�of�users�(total)�for�the�MVME605�boardsENDC O*------------------------------------------------------------------------------3NVME610ƒ=�0Œ#�of�MVME610…AC‚input‚controller�boards IFGTˆ\NVME610GƒM610QSIZ‚=�128…Minimum�number�of�entries�in�Interrupt�Processing�QueueENDC O*------------------------------------------------------------------------------8NVME615ƒ=�0Œ#�of�MVME615/616�AC‚output�controller�boards IFGTˆ\NVME6159ƒNU615…=�0ŒNumber�of�users�(total)�for�the�MVME615�boardsENDC O*------------------------------------------------------------------------------3NVME620ƒ=�0Œ#�of�MVME620…DC‚input‚controller�boards O*------------------------------------------------------------------------------4NVME625ƒ=�0Œ#�of�MVME625…DC‚output�controller�boards IFGTˆ\NVME6259ƒNU625…=�0ŒNumber�of�users�(total)�for�the�MVME625�boardsENDC O*------------------------------------------------------------------------------#NRAD†=�0Œ#�of�RAD†Remote�A/D�boards IFGTˆ\NRADƒNURAD…=�0Œ#�of�RAD�usersENDC O*------------------------------------------------------------------------------#NRIO†=�0Œ#�of�RIO†Remote�I/O�boards IFGTˆ\NRIO1ƒNRIOINTƒ=�0Œ#�of�interrupt�levels�per�I/O�moduleENDC O*------------------------------------------------------------------------------N**ˆVME117.IFDRVR.CI*,* Conditional file for VME117 device driversO*------------------------------------------------------------------------------K* This file uses flags setup in the VME117.CNFGDRVR.CI and VME117.SYSTEM.CI0* files to conditionally include device drivers.*J* The user should not have to modify this file to include/exclude drivers.*D*„******************************************************************?*„**‚NOTICE:‚The�following�conditionals�are�order�dependent.„**3*„**‹Do�not�change�the�order!‚Local�drivers�1st.‡**9*„**‹The�order�determines�device�number�(HD00,PR,�etc)‚***„**‹for�most�items.¤**D*„******************************************************************** IFNEˆ\NVME316Dƒ*‚The�VME316�has�no�driver.‚It�has�an�initialization�module�that�isJƒ*‚merged�into�SYSINIT.RO.‚The�include�file�below�defines�the�I/O�channel.ƒ*ƒINCLUDE…&.M316DEF.CIENDC** IFNEˆ\NOSCSIƒINCLUDE…&.SCSIDRV.CIENDC* IFNEˆ\NORWINƒINCLUDE…&.RWINDRV.CIENDC* O IFNEˆ\NOLTERMƒINCLUDE…&.SCCDRV.CIENDC* IFNEˆ\NOLPRTƒINCLUDE…&.P117DRV.CIENDC* IFNEˆ\NVME050ƒINCLUDE…&.M050DRV.CIENDC* IFNEˆ\NVME400ƒINCLUDE…&.MPSC400.CIENDC* IFNEˆ\NVME410ƒINCLUDE…&.PIA410.CIENDC* IFNEˆ\NVME435ƒINCLUDE…&.M435DRV.CIENDC* IFNEˆ\NVME600ƒINCLUDE…&.M600DRV.CIENDC* IFNEˆ\NVME605ƒINCLUDE…&.M605DRV.CIENDC*IFNEˆ\NVME610+\NVME620ƒINCLUDE…&.M610DRV.CIENDC* IFNEˆ\NVME615ƒINCLUDE…&.M615DRV.CIENDC* IFNEˆ\NVME625ƒINCLUDE…&.M625DRV.CIENDC* IFNEˆ\NRADƒINCLUDE…&.RADDRV.CIENDC* IFNEˆ\NRIOƒINCLUDE…&.RIODRV.CIENDCN äU'VME130 OPYSGENCFÿÿÿÿÿÿÿÿ  NNNNNNN