IMD 1.17: 11/11/2014 11:37:37 82VKXSVRDOS B* VERSADOS/RMS68K SRC/OBJ 4.4 (NOT BOOTABLE) SN=49367 18 OF 30  SR18q82VKXSVRDOS 0420¤a-�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*ÇŠMOVE.B�#$A0,TCR(A1)‡Set�timer�to�generate�periodic�interrupts*ŠMOVE.B�#$4C,TIVR(A1)†Set�up�timer�vector.(ŠMOVE.L�#CLOCKFRQ,D0‡D0=ticks�per�second6* Divide to find out how many ticks per 10ms interval.E*ƒWe�want�to�divide�by�100�but�because�of�the�possibility�of�overflow,*ƒwe�must�divide�by�200,�then�multiply�by�2.(ŠDIVUƒ#200,D0ŒD0=ticks�per�05ms�interval*ŠAND.L‚#$0000FFFF,D0†Mask�to�just�quotient'ŠLSL.L‚#1,D0ŽD0=ticks�per�10ms�interval5ŠMOVE.W�TIMINTVA(PC),TIMINTV�Set�10ms�timing�interval5ŠLSR.L‚#5,D0ŽD0=value�for�preload�with�prescale�of�32"ŠMOVEP.L�D0,CPRH-2(A1)…Set�preload)ŠMOVE.B�#$A1,TCR(A1)‡Start�timer�ticking.ŠRESTORE�D0/A0/A1ŠRTS—BACK�TO�INITŠPAGEO**************************************************************************** ***O**********************************************************************************É***:***…ROUTINE:‚INITIO�--�INITIALIZE�BOARD-DEPENDENT�I/O.‘******É***H***…FUNCTION:‚This�routine�is�sort�of�a�catch�all�for�initializationƒ***/***‡of�things�other�than�the�timer�and�MMU.›******É******…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:ƒ.ƒ.ƒDƒ.ƒ.ƒ.ƒ.ƒ.‡.ˆD�******‡A:ƒ.ƒ.ƒ.ƒ.ƒ.ƒ.ƒ.ƒP ******É******…ENTRY�CONDITIONS:³******É***-***…EXIT�CONDITIONS�DIFFERENT�FROM�ENTRY:Ÿ******É***O*******************************************************************************O******************************************************************************* *7* Equates for the 68230 PI/T in the VME115 environment:*/MODE0„EQU�$0FƒMode�0:�unidirectional�8-bit�mode-VECTBASE�EQU�$C0ƒBase�interrupt�vector�numberBINTFUNC‚EQU�$18ƒInterrupt�function�for�PC5/PC6�vectored�interrupts;INTPRIO‚EQU�$05ƒInterrupt�priority:�HI-->�H3/H4/H2/H1�-->LO=INPUTSƒEQU�$00ƒSelect�all�inputs�thru�data�direction�register?OUTPUTS‚EQU�$FFƒSelect�all�outputs�thru�data�direction�register3NULLOUT‚EQU�$00ƒInitial�data�of�all�null�characters&SUBMODE‚EQU�$80ƒSubmode�1X�(bit�7�set)8H12ENAB‚EQU�$00ƒH1�disabled�(bit�3);�H2�disabled�(bit�2)6H34ENAB‚EQU�$06ƒH3�enabled‚(bit�3);�H4�enabled‚(bit�2).PITENAB‚EQU�$30ƒEnable�all�interrupts;�Mode�0. PAGEINITIO:*"* Get the base address of the chip*<ŠMOVE.L�TIMERA(PC),A0†Address�of�68230�PI/T�interrupt/timer.*G* Program the interrupt functions used by the serial port (H3), printerI* port (H2) and SYSFAIL (H4), and initialize Port A as outputs and Port B!* as inputs for the printer port.*AŠAND.B‚#MODE0,PGCR(A0)„Set�Port�Mode�Control�Register�for�Mode�0.<ŠMOVE.B�#VECTBASE,PIVR(A0)�Set�base�interrupt�vector�number.EŠMOVE.B�#INTFUNC+INTPRIO,PSRR(A0)�Set�interrupt�functions�&�priority.8ŠMOVE.B�#OUTPUTS,PADDR(A0)�Select�Port�A�as�all�outputs.6ŠMOVE.B�#INPUTS,PBDDR(A0)‚Select�Port�B�as�all�inputs.@ŠMOVE.B�#NULLOUT,PADR(A0)‚Set�Port�A�initial�data�as�null�chars.FŠMOVE.B�#SUBMODE+H12ENAB,PACR(A0)�Set�PortA�submode�1X,�H1,H2�disabledFŠMOVE.B�#SUBMODE+H34ENAB,PBCR(A0)�Set�PortB�submode�1X,�H3,H4�enabled.** Init Port C as follows:*ˆPC7:ƒInput„TIACK*ˆPC6:ƒInput„PIACK*ˆPC5:ƒOutputƒPIRQ:*ˆPC4:ƒOutputƒSYSFAIL�(drive�low�to�turn�off�startup�mode)*ˆPC3:ƒOutputƒTIRQ*ˆPC2:ƒInput„External�Clock!*ˆPC1:ƒOutputƒPrinter�Input�Prime!*ˆPC0:ƒOutputƒPrinter�Data�Strobe)* Program Outputs as '1'and Inputs as '0'*9ŠMOVE.B�#$3B,PCDDR(A0)…Program�Port�C�as�described�above.1ŠMOVE.B�#%00000001,PCDR(A0)‚Set�Data�Strobe�high.8ŠMOVE.B�#PITENAB,PGCR(A0)‚Enable�all�interrupts;�Mode�0.*H* TEMPORARY PATCH SPACE UNTIL WE CAN FIGURE OUT WHAT TO DO WITH THE PI/T*ŠNOPŠNOPŠNOPŠNOP 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�th e�code�for�one�driver�causes�a�bus�error,.*ˆthe�code�for�other�drivers�will�be�executed.*E*‚>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<G***********************************************************************G***********************************************************************O******************************************************************************* ŠEND**ˆVME115.IFDRVR.CI*,* Conditional file for VME115 device driversO*------------------------------------------------------------------------------K* This file uses flags setup in the VME115.CNFGDRVR.CI and VME115.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ˆ\NVME315ƒINCLUDE…&.M315DRV.CIENDC* IFNEˆ\NORWINƒINCLUDE…&.RWINDRV.CIENDC* IFNEˆ\NOLTERMƒINCLUDE…&.DARTDRV.CIENDC* IFNEˆ\NOLPRTƒINCLUDE…&.P115DRV.CIENDC* IFNEˆ\NVME050ƒINCLUDE…&.M050DRV.CIENDC* IFNEˆ\NVME400ƒINCLUDE…&.MPSC400.CIENDC* IFNEˆ\NVME410ƒINCLUDE…&.PIA410.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é:\**ˆVME115.SYSTEM.CI*L****************************************************************************@*‚This�file�contains�all�board/system�dependencies�for�VME115.Œ*&*‚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�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…=�$F81001†Address�of�timer.****************************************************************‰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.AMEMEND1ƒ=�$200000†Ending�addr�for�on-board‚memory�must�be�<�this.8MEMEND2ƒ=�$00000‡Starting‚addr�for�off-board�memory�must)*˜be�>=�this.‚Not�applicable�for�a�VME115DMEMEND3ƒ=�$00000‡Ceiling�addr�for�off-board�memory�(must�be�<�this).:WHERLOAD‚=�0ŒMemory�address�where�boot�file�will�be�loaded1*˜Nonzero�on�VM01�only.‚If�nonzero,�VERSAdos�will"*˜be�moved�at�initialization�time.7CACHEF„=�0ŒNot�used�by�VME115�(needed�for�&.INITDAT.AG)9NOTNT…=�0ŒNot�used�by�VME115�(needed�for�EET.VERSADOS.CI) EMSG‰*****************************************************************)MSG‰**‚Parameters�about�table�sizes,�etc.EMSG‰***************************************************************** 1PAGESIZE‚=�256ŠSize�in�bytes�of�a�page�of�memory.*6ASN‡=�127Š#�of�address�spaces:‚needed�by�&.INITDAT.AG. GMSG‰*******************************************************************=MSG‰*ƒCopy�CBOD.SYSPAR.RO�into�&.SYSPAR.RO�to�make�it�genericAMSG‰*ƒfor�.LG�files�and�possible�for�sysgening�more�than�1�system MSG‰*ƒper�account�#GMSG‰******************************************************************* "=COPY‡CBOD.SYSPAR.RO,&.SYSPAR.RO;Yééé**ˆVME115.CNFGDRVR.CI*'* Configuration file for device driversO*------------------------------------------------------------------------------D* This file sets up the flags used by the "VME115.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.�---;*�VME115.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�VME115�serial�ports�;�max=�2 O*------------------------------------------------------------------------------1NOLPRT„=�1Œ#�of�local�(on-board)�printers;�max=�1 O*------------------------------------------------------------------------------2NORWIN„=�1Œ#�of�RWIN1„Winchester�controller�boards* IFGTˆ\NORWIN)ƒCONTWIN1‚=�"2"Š1st�RWIN1�is�controller�28ƒNHRWIN$1‚=�1Œ#�of�hardƒdisk�drives�on�1st�RWIN1;�max=�2:ƒNFRWIN$1‚=�2Œ#�of�floppy�disk�drives�on�1st�RWIN1;�max=�2BƒRWIN0$1ƒ=�"'H5WIN15'"‚Type�of�1st�hardƒdisk�on�1st�RWIN1,�drive�0BƒRWIN1$1ƒ=�"'H5WIN15'"‚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 \)e mu'}*)ƒ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=�2BƒRWIN0$2ƒ=�"'H5WIN15'"‚Type�of�1st�hardƒdisk�on�2nd�RWIN1,�drive�0BƒRWIN1$2ƒ=�"'H5WIN15'"‚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�VM E050�board;�max=�1ENDC O*------------------------------------------------------------------------------8NVME300ƒ=�0Œ#�of�MVME300‚IEEE�488�GPIB�controller�boards O*------------------------------------------------------------------------------I*�NOTE:‚The�MVME315�board�is�not�supported�due�to�incompatibility�between@*ˆMVME115�and�MVME315�although�controller�assignments�reserves�a@*ˆslot�for�the�MVME315�board�since�MVME115�(VME115�bug)�includes*ˆMVME315�support.*ANVME315ƒ=�0Œ#�of�MVME315‚winchester/floppy�disk�controller�boards IFGTˆ\NVME315+ƒCONT3151‚=�"1"Š1st�MVME315�is�controller�18ƒNH315$1ƒ=�0Œ#�of�hardƒdisk�drives�on�1st�VME315;�max=�2éé:ƒNF315$1ƒ=�0Œ#�of�floppy�disk�drives�on�1st�VME315;�max=�4 AƒM3150$1ƒ=�"'H5WIN15'"‚Type�of�1st�hardƒdisk�on�1st�MVME315�boardAƒM3151$1ƒ=�"'H5WIN15'"‚Type�of�2nd�hardƒdisk�on�1st�MVME315�boardCƒM3154$1ƒ=�"'F8SDDSM'"‚Type�of�1st�floppy�disk�on�1st�MVME315�boardCƒM3155$1ƒ=�"'F8SDDSM'"‚Type�of�2nd�floppy�disk�on�1st�MVME315�boardCƒM3156$1ƒ=�"'F5DDDSI'"‚Type�of�3rd�floppy�disk�on�1st�MVME315�boardCƒM3157$1ƒ=�"'F5DDDSI'"‚Type�of�4th�floppy�disk�on�1st�MVME315�board +ƒCONT3152‚=�"6"Š2nd�MVME315�is�controller�68ƒNH315$2ƒ=�0Œ#�of�hardƒdisk�drives�on�2nd�VME315;�max=�2:ƒNF315$2ƒ=�0Œ#�of�floppy�disk�drives�on�2nd�VME315;�max=�4 AƒM3150$2ƒ=�"'H5WIN15'"‚Type�of�1st�hardƒdisk�on�2nd�MVME315�boardAƒM3151$2ƒ=�"'H5WIN15'"‚Type�of�2nd�hardƒdisk�on�2nd�MVME315�boardCƒM3154$2ƒ=�"'F8SDDSM'"‚Type�of�1st�floppy�disk�on�2nd�MVME315�boardCƒM3155$2ƒ=�"'F8SDDSM'"‚Type�of�2nd�floppy�disk�on�2nd�MVME315�boardCƒM3156$2ƒ=�"'F5DDDSI'"‚Type�of�3rd�floppy�disk�on�2nd�MVME315�boardCƒM3157$2ƒ=�"'F5DDDSI'"‚Type�of�4th�floppy�disk�on�2nd�MVME315�boardENDC éééO*------------------------------------------------------------------------------@NVME316ƒ=�1Œ#�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.CF‰P’(š'¢O=/*----------------------------------------------------------------------------$=/* Copy all VME605 files for sysgen=/@„\1:9998.COPYGEN.M605DRV.CFO=/*----------------------------------------------------------------------------$=/* Copy all VME610 files for sysgen=/@„\1:9998.COPYGEN.M610DRV.CFO=/*----------------------------------------------------------------------------$=/* Copy all VME615 files for sysgen=/@„\1:9998.COPYGEN.M615DRV.CFO=/*----------------------------------------------------------------------------$=/* Copy all VME625 files for sysgen=/@„\1:9998.COPYGEN.M625DRV.CFO=/*----------------------------------------------------------------------------*=/* Copy all PCDRV common files for sysgen=/@„\1:9998.COPYGEN.PCDRV.CF=/ENDIFO=/*----------------------------------------------------------------------------,=/* Copy all driver library files for sysgen=/@„\1:9998.COPYGEN.DRVLIB.CFO=/*----------------------------------------------------------------------------(=/* Copy all MFP driver files for sysgen=/@„\1:9998.COPYGEN.MFPDRV.CFO=/*----------------------------------------------------------------------------)=/* Copy all MPSC driver files for sysgen=/@„\1:9998.COPYGEN.MPSCDRV.CFO=/*----------------------------------------------------------------------------(=/* Copy all PRT driver files for sysgen=/@„\1:9998.COPYGEN.PIADRV.CFO=/*----------------------------------------------------------------------------+=/* Copy all VME050 driver files for sysgen=/ @„\1:9998.COPYGEN.M050DRV.CF=/@„\1:9998.COPYGEN.P050DRV.CF=/@„\1:9998.COPYGEN.MPCCDRV.CFO=/*----------------------------------------------------------------------------+=/* Copy all VME300 (GPIB) files for sysgen=/@„\1:9998.COPYGEN.M300DRV.CFO=/*----------------------------------------------------------------------------$=/* Copy all VME315 files for sysgen=/@„\1:9998.COPYGEN.M315DRV.CFO=/*----------------------------------------------------------------------------F=/* Copy all VME316 (VMEbus to I/O channel interface) files for sysgen=/@„\1:9998.COPYGEN.M316DEF.CFO=/*----------------------------------------------------------------------------$=/* Copy all VME320 files for sysgen=/@„\1:9998.COPYGEN.M320DRV.CFO=/*----------------------------------------------------------------------------/=/* Copy all VME435 (mag tape) files for sysgen=/@„\1:9998.COPYGEN.M435DRV.CFO=/*----------------------------------------------------------------------------7=/* Copy all RWIN1 (Winchester) driver files for sysgen=/@„\1:9998.COPYGEN.RWINDRV.CFO=/*----------------------------------------------------------------------------*=/* Copy all disk related files for sysgen=/@„\1:9998.COPYGEN.DSKPARAM.CFO=/*----------------------------------------------------------------------------=/*=/**=/* ==== Start system related file copyingO=/*----------------------------------------------------------------------------1=/*‚Copy�all�VME120/128�specific�files�for�sysgen=/@„\1:9998.COPYGEN.VME12X.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=/*†VME120.COPYSGEN.CF‚completed.‰Have�a�nice�day!=/*N=/*‚No�"NOARG"�and�"=END"�because�independent�driver�release�items�may�follow!éé éé**ˆVME120.IFDRVR.CI*,* Conditional file for VME120 device driversO*------------------------------------------------------------------------------K* This file uses flags setup in the VME120.CNFGDRVR.CI and VME120.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ˆ\NVME315ƒINCLUDE…&.M315DRV.CIENDC* IFNEˆ\NORWINƒINCLUDE…&.RWINDRV.CIENDC* IFNEˆ\NOLTERMƒINCLUDE…&.MFPDRV.CIENDC* IFNEˆ\NVME050ƒINCLUDE…&.M050DRV.CIENDC* IFNEˆ\NVME400ƒINCLUDE…&.MPSC400.CIENDC* IFNEˆ\NVME410ƒINCLUDE…&.PIA410.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éªX**ˆVME120.SYSTEM.CI*L****************************************************************************@*‚This�file�contains�all�board/system�dependencies�for�VME120.Œ*&*‚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ƒ=�$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…=�$F20001†Address�of�timer‚(Must�match�value�for�MFP_BASE*œin�9999.MK68901.MK68901.EQ)2CLOCKFRQ‚=�0ŒNumber�of�clock�ticks�per�millisecond*œ(not�used�on�VME12X)"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³4¼1Ä.*œ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ƒ=�$F20001†VME120�local�terminal�#1�device�address 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.EMEMEND1ƒ=�$28000-$100‚Ending�addr�for�on-board‚memory�must�be�<�this.=MEMEND2ƒ=�$28000-$100‚Starting‚addr�for�off-board�memory�must *˜be�>=�this.EMEMEND3ƒ=�$200000†Ceiling�addr�for�off-board�memory�(must�be�<�this). E* SET1 is a user adjustable parameter that can take on any one of the*ƒfollowing�values: *…1)‚"SYSTEM" *…2)‚"USER"*…3)‚"DONT-CARE"F* If SET1 is set to "SYSTEM" then the cache bank should be set up as aC*ƒsupervisory�cache.‚In�this�mode,�RMS�and�the�drivers�will�use�theE*ƒcache�and�RMS�will�not�flush�the�cache�on�task�switches.‚If�SET1�isC*ƒset�to�any�other�value,�then�RMS�will�flush�the�cache�on�all�task7*ƒswitches�that�force�a�change�in�address�space�number. SET1†=�"DONT-CARE" &Tˆ=�$F80006IFEQˆ"\SET1"†,"SYSTEM""ƒ&Tˆ=�\STARTRMS„Set�to�dummy�valueENDC )CACHEF„=�\&TŠVariable�for�flushing�cache:&*ž1.)‚CACHEF�<==�$F80006�(flush�bank).**ž2.)‚CACHEF�<==�Dummyƒ(don't�flush�bank).;WHERLOAD‚=�$0‹Memory�address�where�boot�file�will�be�loaded1*˜Nonzer o�on�VM01�only.‚If�nonzero,�VERSAdos�will"*˜be�moved�at�initialization�time.9NOTNT…=�0ŒNot�used�by�VME120�(needed�for�EET.VERSADOS.CI) EMSG‰*****************************************************************)MSG‰**‚Parameters�about�table�sizes,�etc.EMSG‰***************************************************************** 2PAGESIZE‚=�2048‰Size�in�bytes�of�a�page�of�memory.*6ASN‡=�127Š#�of�address�spaces:‚needed�by�&.INITDAT.AG. GMSG‰*******************************************************************=MSG‰*ƒCopy�CBOD.SYSPAR.RO�into�&.SYSPAR.RO�to�make�it�genericAMSG‰*ƒfor�.LG�files�and�possible�for�sysgening�more�than�1�systemMSG‰*ƒper�account�#GMSG‰******************************************************************* "=COPY‡CBOD.SYSPAR.RO,&.SYSPAR.RO;Y*ˆVME120.CNFGDRVR.CI*'* Configuration file for device driversO*------------------------------------------------------------------------------D* This file sets up the flags used by the "VME120.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.�---;*�VME120.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�VME120�serial�ports�(MFP);�max=�1 O*------------------------------------------------------------------------------2NORWIN„=�1Œ#�of�RWIN1„Winchester�controller�boards* IFGTˆ\NORWIN)ƒCONTWIN1‚=�"2"Š1st�RWIN1�is�controller�28ƒ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ƒ=�"'H5WIN15'"‚Type�of�hardƒdisk�on�1st�RWIN1,�drive�0>ƒRWIN1$1ƒ=�"'H5WIN15'"‚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‚=�"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Ì(ÕÝå)íBƒRWIN0$2ƒ=�"'H5WIN15'"‚Type�of�1st�hardƒdisk�on�2nd�RWIN1,�drive�0BƒRWIN1$2ƒ=�"'H5WIN15'"‚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*------------------------------------------------------------------------------ANVME315ƒ=�1Œ#�of�MVME315‚winchester/floppy�disk�controller�boards IFGTˆ\NVME315+ƒCONT3151‚=�"1"Š1st�MVME315�is�controller�18ƒNH315$1ƒ=�1Œ#�of�hardƒdisk�drives�on�1st�VME315;�max=�2ééé:ƒNF315$1ƒ=�4Œ#�of�floppy�disk�drives�on�1st�VME315;�max=�4 AƒM3150$1ƒ=�"'H5WIN15'"‚Type�of�1st�hardƒdisk�on�1st�MVME315�boardAƒM3151$1ƒ=�"'H5WIN15'"‚Type�of�2nd�hardƒdisk�on�1st�MVME315�boardCƒM3154$1ƒ=�"'F8SDDSM'"‚Type�of�1st�floppy�disk�on�1st�MVME315�boardCƒM3155$1ƒ=�"'F8SDDSM'"‚Type�of�2nd�floppy�disk�on�1st�MVME315�boardCƒM3156$1ƒ=�"'F5DDDSI'"‚Type�of�3rd�floppy�disk�on�1st�MVME315�boardCƒM3157$1ƒ=�"'F5DDDSI'"‚Type�of�4th�floppy�disk�on�1st�MVME315�board +ƒCONT3152‚=�"6"Š2nd�MVME315�is�controller�68ƒNH315$2ƒ=�0Œ#�of�hardƒdisk�drives�on�2nd�VME315;�max=�2:ƒNF315$2ƒ=�0Œ#�of�floppy�disk�drives�on�2nd�VME315;�max=�4 AƒM3150$2ƒ=�"'H5WIN15'"‚Type�of�1st�hardƒdisk�on�2nd�MVME315�boardAƒM3151$2ƒ=�"'H5WIN15'"‚Type�of�2nd�hardƒdisk�on�2nd�MVME315�boardCƒM3154$2ƒ=�"'F8SDDSM'"‚Type�of�1st�floppy�disk�on�2nd�MVME315�boardCƒM3155$2ƒ=�"'F8SDDSM'"‚Type�of�2nd�floppy�disk�on�2nd�MVME315�boardCƒM3156$2ƒ=�"'F5DDDSI'"‚Type�of�3rd�floppy�disk�on�2nd�MVME315�boardCƒM3157$2ƒ=�"'F5DDDSI'"‚Type�of�4th�floppy�disk�on�2nd�MVME315�boardENDC O*------------------------------------------------------------------------------@NVME316ƒ=�1Œ#�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.CFùP( 'O=/*----------------------------------------------------------------------------$=/* Copy all VME605 files for sysgen=/@„\1:9998.COPYGEN.M605DRV.CFO=/*----------------------------------------------------------------------------$=/* Copy all VME610 files for sysgen=/@„\1:9998.COPYGEN.M610DRV.CFO=/*----------------------------------------------------------------------------$=/* Copy all VME615 files for sysgen=/@„\1:9998.COPYGEN.M615DRV.CFO=/*----------------------------------------------------------------------------$=/* Copy all VME625 files for sysgen=/@„\1:9998.COPYGEN.M625DRV.CFO=/*----------------------------------------------------------------------------*=/* Copy all PCDRV common files for sysgen=/@„\1:9998.COPYGEN.PCDRV.CF=/ENDIFO=/*----------------------------------------------------------------------------,=/* Copy all driver library files for sysgen=/@„\1:9998.COPYGEN.DRVLIB.CFO=/*----------------------------------------------------------------------------(=/* Copy all MFP driver files for sysgen=/@„\1:9998.COPYGEN.MFPDRV.CFO=/*----------------------------------------------------------------------------)=/* Copy all MPSC driver files for sysgen=/@„\1:9998.COPYGEN.MPSCDRV.CFO=/*----------------------------------------------------------------------------(=/* Copy all PRT driver files for sysgen=/@„\1:9998.COPYGEN.PIADRV.CFO=/*----------------------------------------------------------------------------+=/* Copy all VME050 driver files for sysgen=/ @„\1:9998.COPYGEN.M050DRV.CF=/@„\1:9998.COPYGEN.P050DRV.CF=/@„\1:9998.COPYGEN.MPCCDRV.CFO=/*----------------------------------------------------------------------------+=/* Copy all VME300 (GPIB) files for sysgen=/@„\1:9998.COPYGEN.M300DRV.CFO=/*----------------------------------------------------------------------------$=/* Copy all VME315 files for sysgen=/@„\1:9998.COPYGEN.M315DRV.CFO=/*----------------------------------------------------------------------------F=/* Copy all VME316 (VMEbus to I/O channel interface) files for sysgen=/@„\1:9998.COPYGEN.M316DEF.CFO=/*----------------------------------------------------------------------------$=/* Copy all VME320 files for sysgen=/@„\1:9998.COPYGEN.M320DRV.CFO=/*----------------------------------------------------------------------------/=/* Copy all VME435 (mag tape) files for sysgen=/@„\1:9998.COPYGEN.M435DRV.CFO=/*----------------------------------------------------------------------------7=/* Copy all RWIN1 (Winchester) driver files for sysgen=/@„\1:9998.COPYGEN.RWINDRV.CFO=/*----------------------------------------------------------------------------*=/* Copy all disk related files for sysgen=/@„\1:9998.COPYGEN.DSKPARAM.CFO=/*----------------------------------------------------------------------------=/*=/**=/* ==== Start system related file copyingO=/*----------------------------------------------------------------------------1=/*‚Copy�all�VME120/128�specific�files�for�sysgen=/@„\1:9998.COPYGEN.VME12X.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=/*†VME128.COPYSGEN.CF‚completed.‰Have�a�nice�day!=/*N=/*‚No�"NOARG"�and�"=END"�because�independent�driver�release�items�may�follow!éé  éé**ˆVME128.IFDRVR.CI*,* Conditional file for VME128 device driversO*------------------------------------------------------------------------------K* This file uses flags setup in the VME128.CNFGDRVR.CI and VME128.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ˆ\NVME315ƒINCLUDE…&.M315DRV.CIENDC* IFNEˆ\NORWINƒINCLUDE…&.RWINDRV.CIENDC* IFNEˆ\NOLTERMƒINCLUDE…&.MFPDRV.CIENDC* IFNEˆ\NVME050ƒINCLUDE…&.M050DRV.CIENDC* IFNEˆ\NVME400ƒINCLUDE…&.MPSC400.CIENDC* IFNEˆ\NVME410ƒINCLUDE…&.PIA410.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éX**ˆVME128.SYSTEM.CI*L****************************************************************************@*‚This�file�contains�all�board/system�dependencies�for�VME128.Œ*&*‚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ƒ=�$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…=�$F20001†Address�of�timer‚(Must�match�value�for�MFP_BASE*œin�9999.MK68901.MK68901.EQ)2CLOCKFRQ‚=�0ŒNumber�of�clock�ticks�per�millisecond*œ(not�used�on�VME12X)"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#4,143<*œ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ƒ=�$F20001†VME128�local�terminal�#1�device�address 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.EMEMEND1ƒ=�$28000-$100‚Ending�addr�for�on-board‚memory�must�be�<�this.=MEMEND2ƒ=�$28000-$100‚Starting‚addr�for�off-board�memory�must *˜be�>=�this.EMEMEND3ƒ=�$200000†Ceiling�addr�for�off-board�memory�(must�be�<�this). N* SET1 and SET2 are user adjustable parameters that can take on any one of the*ƒfollowing�values: *…1)‚"SYSTEM" *…2)‚"USER"*…3)‚"DONT-CARE"K* Each SETx parameter is associated with a particular cache bank (bank 1 orK*ƒbank�2).‚If�either�SETx�parameter�is�set�to�"SYSTEM"�then�that�cache�bank(*ƒshould�be�set�up�as�supervisory�cache.1*ƒThe�assumption�here�is�that�RMS�and�the�driversJ*ƒall�share�the�same�address�space�and�are�using�the�bank�marked�"SYSTEM".E*ƒRMS�will�not�flush�the�"SYSTEM"�cache�on�task�switches.‚If�the�SETxI*ƒparameter�is�marked�as�anything�other�than�"SYSTEM"�then�RMS�will�flushF*ƒit�on�any�task�switches�that�force�a�change�in�address�space�number. SET1†=�"DONT-CARE"SET2†=�"DONT-CARE" &Tˆ=�3IFEQˆ"\SET1"†,"SYSTEM"ƒ&Tˆ=�2ENDCIF  EQˆ"\SET2"†,"SYSTEM" ƒ&Tˆ=�&T-2ENDCCACHEF„=�$F80000+(2*\&T)*˜Variable�for�flushing�cache:,*ž1.)‚CACHEF�<==�$F80002�(flush�bank1�only).,*ž2.)‚CACHEF�<==�$F80004�(flush�bank2�only).,*ž3.)‚CACHEF�<==�$F80006�(flush�both�banks).;WHERLOAD‚=�$0‹Memory�address�where�boot�file�will�be�loaded1*˜Nonzero�on�VM01�only.‚If�nonzero,�VERSAdos�will"*˜be�moved�at�initialization�time.8NOTNT…=�0ŒNot�used�by�VME128�(needed�by�EET.VERSADOS.CI) EMSG‰*****************************************************************)MSG‰**‚Parameters�about�table�sizes,�etc.EMSG‰***************************************************************** 2PAGESIZE‚=�4096‰Size�in�bytes�of�a�page�of�memory.*6ASN‡=�127Š#�of�address�spaces:‚needed�by�&.INITDAT.AG. GMSG‰*******************************************************************=MSG‰*ƒCopy�CBOD.SYSPAR.RO�into�&.SYSPAR.RO�to�make�it�genericAMSG‰*ƒfor�.LG�files�and�possible�for�sysgening�more�than�1�systemMSG‰*ƒper�account�#GMSG‰******************************************************************* "=COPY‡CBOD.SYSPAR.RO,&.SYSPAR.RO;Yééééééé**ˆVME128.CNFGDRVR.CI*'* Configuration file for device driversO*------------------------------------------------------------------------------D* This file sets up the flags used by the "VME128.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.�---;*�VME128.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�on�VME128�serial�ports�;�max=�1 O*------------------------------------------------------------------------------2NORWIN„=�1Œ#�of�RWIN1„Winchester�controller�boards* IFGTˆ\NORWIN)ƒCONTWIN1‚=�"2"Š1st�RWIN1�is�controller�28ƒNHRWIN$1‚=�1Œ#�of�hardƒdisk�drives�on�1st�RWIN1;�max=�2:ƒNFRWIN$1‚=�2Œ#�of�floppy�disk�drives�on�1st�RWIN1;�max=�2BƒRWIN0$1ƒ=�"'H5WIN15'"‚Type�of�1st�hardƒdisk�on�1st�RWIN1,�drive�0BƒRWIN1$1ƒ=�"'H5WIN15'"‚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=�2D)MU])eBƒRWIN0$2ƒ=�"'H5WIN15'"‚Type�of�1st�hardƒdisk�on�2nd�RWIN1,�drive�0BƒRWIN1$2ƒ=�"'H5WIN15'"‚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ˆ\NVME0503ƒNT050$1ƒ=�2Œ#�of�terminals�on�VME050�board;�max=�22ƒNP050$1ƒ=�1Œ#�of�printers‚on�VME050�board;�max=�1ENDC O*------------------------------------------------------------------------------8NVME300ƒ=�0Œ#�of�MVME300‚IEEE�488�GPIB�controller�boards O*------------------------------------------------------------------------------ANVME315ƒ=�1Œ#�of�MVME315‚winchester/floppy�disk�controller�boards IFGTˆ\NVME315+ƒCONT3151‚=�"1"Š1st�MVME315�is�controller�18ƒNH315$1ƒ=�1Œ#�of�hardƒdisk�drives�on�1st�VME315;�max=�2ééé:ƒNF315$1ƒ=�4Œ#�of�floppy�disk�drives�on�1st�VME315;�max=�4 AƒM3150$1ƒ=�"'H5WIN15'"‚Type�of�1st�hardƒdisk�on�1st�MVME315�boardAƒM3151$1ƒ=�"'H5WIN15'"‚Type�of�2nd�hardƒdisk�on�1st�MVME315�boardCƒM3154$1ƒ=�"'F8SDDSM'"‚Type�of�1st�floppy�disk�on�1st�MVME315�boardCƒM3155$1ƒ=�"'F8SDDSM'"‚Type�of�2nd�floppy�disk�on�1st�MVME315�boardCƒM3156$1ƒ=�"'F5DDDSI'"‚Type�of�3rd�floppy�disk�on�1st�MVME315�boardCƒM3157$1ƒ=�"'F5DDDSI'"‚Type�of�4th�floppy�disk�on�1st�MVME315�board +ƒCONT3152‚=�"6"Š2nd�MVME315�is�controller�68ƒNH315$2ƒ=�0Œ#�of�hardƒdisk�drives�on�2nd�VME315;�max=�2:ƒNF315$2ƒ=�0Œ#�of�floppy�disk�drives�on�2nd�VME315;�max=�4 AƒM3150$2ƒ=�"'H5WIN15'"‚Type�of�1st�hardƒdisk�on�2nd�MVME315�boardAƒM3151$2ƒ=�"'H5WIN15'"‚Type�of�2nd�hardƒdisk�o  n�2nd�MVME315�boardCƒM3154$2ƒ=�"'F8SDDSM'"‚Type�of�1st�floppy�disk�on�2nd�MVME315�boardCƒM3155$2ƒ=�"'F8SDDSM'"‚Type�of�2nd�floppy�disk�on�2nd�MVME315�boardCƒM3156$2ƒ=�"'F5DDDSI'"‚Type�of�3rd�floppy�disk�on�2nd�MVME315�boardCƒM3157$2ƒ=�"'F5DDDSI'"‚Type�of�4th�floppy�disk�on�2nd�MVME315�boardENDC O*------------------------------------------------------------------------------@NVME316ƒ=�1Œ#�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 f  iles for sysgen=/@„\1:9998.COPYGEN.RIODRV.CFO=/*----------------------------------------------------------------------------$=/* Copy all VME600 files for sysgen=/@„\1:9998.COPYGEN.M600DRV.CFqPz'‚(Š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 VME315 files for sysgen=/@„\1:9998.COPYGEN.M315DRV.CFO=/*----------------------------------------------------------------------------F=/* Copy all VME316 (VMEbus to I/O channel interface) files for sysgen=/@„\1:9998.COPYGEN.M316DEF.CFO=/*----------------------------------------------------------------------------$=/* Copy all VME320 files for sysgen=/@„\1:9998.COPYGEN.M320DRV.CFO=/*----------------------------------------------------------------------------/=/* Copy all VME435 (mag tape) files for sysgen=/@„\1:9998.COPYGEN.M435DRV.CFO=/*----------------------------------------------------------------------------7=/* Copy all RWIN1 (Winchester) driver files for sysgen=/@„\1:9998.COPYGEN.RWINDRV.CFO=/*----------------------------------------------------------------------------*=/* Copy all disk related files for sysgen=/@„\1:9998.COPYGEN.DSKPARAM.CFO=/*----------------------------------------------------------------------------=/*=/**=/* ==== Start system related file copyingO=/*-----------------------------------------------------------------------------=/*‚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=/*----------------------------------------------------------------------------<=/* 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!éééé6INITIO„IDNTƒ5,1�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*…--------‚------‚-------------------------------------------------------8*†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:)ŠXREFƒKILLER�Routine�to�crash�the�system.*…Parameters�from�INITDAT:-ŠXREFƒTIMSLICŒ#�of�timer�tics�per�time�slice.+ŠXREFƒTIMERA�Addr�of�timer�chip�(MC146818).ŠXREFƒTIMINTVAŠXREFƒCLOCKFRQ*…SYSPAR�variables:6ŠXREF.S�MMUHEREŒAddr�of�MMU;�0�if�we're�not�using�one.’4›A£E«?³O»AÃ/Ë:Ó>Û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*ŠNOLISTŠINCLUDE�&.UTILITY.MCŠINCLUDE�M68451.M68451.EQŠINCLUDE�M146818.M146818.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…KILLER�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.Š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* UIP_LOOP:4‰BTST†#7,REGA(A1)‰Wait�until�UIP�bit�is�clear�before#‰BNE.S…UIP_LOOPŒreading�timer�chip. *‰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,*‚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…SET„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*********************************************************************** ‰ENDéééééé**ˆ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ˆ\NVME315ƒINCLUDE…&.M315DRV.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.CIENDCéãX**ˆ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) 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�interruptì6õ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�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�addre sses#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�address�(ROMSADDR)�is�defined3*œin�the�.RMS.CI�file�and�has�a�value�equal!*œto�the�initial�program�counter.@MEMEND1ƒ=�$2FF00‡Ending�addr�for�on-board‚memory�must�be�<�this.8MEMEND2ƒ=�$2FF00‡Starting‚addr�for�off-board�memory�must)*˜be�>=�this.‚Not�applicable�for�a�VME110EMEMEND3ƒ=�$280000†Ceiling�addr�for�off-board�memory�(must�be�<�this).;WHERLOAD‚=�$0‹Memory�address�where�boot�file�will�be�loaded1*˜Nonzero�on�VM01�only.‚If�nonzero,�VERSAdos�will"*˜be�moved�at�initialization�time.6CACHEF„=�0ŒNot�used�by�VMES10�(needed�by�&.INITDAT.AG)8NOTNT…=�0ŒNot�used�by�VMES10�(needed�by�EET.VERSADOS.CI) EMSG‰*****************************************************************)MSG‰**‚Parameters�about�table�sizes,�etc.EMSG‰***************************************************************** 1PAGESIZE‚=�256ŠSize�in�bytes�of�a�page�of�memory.*ASN‡=�127Š#�of�address�spaces 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;Yé ééééé**ˆ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�configuration�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�is�controller�08ƒNHRWIN$1‚=�1Œ#�of�hardƒdisk�drives�on�1st�RWIN1;�max=�2:ƒNFRWIN$1‚=�1Œ#�of�floppy�disk�drives�on�1st�RWIN1;�max=�2BƒRWIN0$1ƒ=�"'H5WIN15'"‚Type�of�1st�hardƒdisk�on�1st�RWIN1,�drive�0BƒRWIN1$1ƒ=�"'H5WIN15'"‚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�is�controller�18ƒNHRWIN$2‚=�0Œ#�of�hardƒdisk�drives�on�2nd�RWIN1;�max=�2:ƒNFRWIN$2‚=�0Œ#�of�floppy�disk�drives�on�2nd�RWIN1;�max=�2 )*.&(BƒRWIN0$2ƒ=�"'H5WIN15'"‚Type�of�1st�hardƒdisk�on�2nd�RWIN1,�drive�0BƒRWIN1$2ƒ=�"'H5WIN15'"‚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*------------------------------------------------------------------------------ANVME315ƒ=�0Œ#�of�MVME315‚winchester/floppy�disk�controller�boards IFGTˆ\NVME315+ƒCONT3151‚=�"3"Š1st�MVME315�is�controller�38ƒNH315$1ƒ=�0Œ#�of�hardƒdisk�drives�on�1st�VME315;�max=�2:ƒNF315$1ƒ=�0Œ#�of�floppy�disk�drives�on�1st�VME315;�max=�4 AƒM3150$1ƒ=�"'H5WIN15'"‚Type�of�1st�hardƒdisk�on�1st�MVME315�boardAƒM3151$1ƒ=�"'H5WIN15'"‚Type�of�2nd�hardƒdisk�on�1st�MVME315�boardCƒM3154$1ƒ=�"'F8SDDSM'"‚Type�of�1st�floppy�disk�on�1st�MVME315�boardCƒM3155$1ƒ=�"'F8SDDSM'"‚Type�of�2nd�floppy�disk�on�1st�MVME315�boardCƒM3156$1ƒ=�"'F5DDDSI'"‚Type�of�3rd�floppy�disk�on�1st�MVME315�boardCƒM3157$1ƒ=�"'F5DDDSI'"‚Type�of�4th�floppy�disk�on�1st�MVME315�board +ƒCONT3152‚=�"4"Š2nd�MVME315�is�controller�48ƒNH315$2ƒ=�0Œ#�of�hardƒdisk�drives�on�2nd�VME315;�max=�2:ƒNF315$2ƒ=�0Œ#�of�floppy�disk�drives�on�2nd�VME315;�max=�4 AƒM3150$2ƒ=�"'H5WIN15'"‚Type�of�1st�hardƒdisk�on�2nd�MVME315�boardAƒM3151$2ƒ=�"'H5WIN15'"‚Type�of�2nd�hardƒdisk�on�2nd�MVME315�boardCƒM3154$2ƒ=�"'F8SDDSM'"‚Type�of�1st�floppy�disk�on�2nd�MVME315�boardCƒM3155$2ƒ=�"'F8SDDSM'"‚Type�of�2nd�floppy�disk�on�2nd�MVME315�boardCƒM3156$2ƒ=�"'F5DDDSI'"‚Type�of�3rd�floppy�disk�on�2nd�MVME315�boardCƒM3157$2ƒ=�"'F5DDDSI'"‚Type�of�4th�floppy�disk�on�2nd�MVME315�boardENDC O*------------------------------------------------------------------------------@NVME316ƒ=�0Œ#�of�MVME316‚VMEbus�to�I/O�channel�interface�boards;*˜max=�1I****�NOTE:‚Do�not�use�VME316�in�this�system,�as�I/O�channel�is�already�on2****ˆthe�CPU�board!‚See�"&.DRV316.CI"�for�details. 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=/*--- -------------------------------------------------------------------------,=/* 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.CF2D;(CO=/*----------------------------------------------------------------------------*=/* 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!éééé ééé4INITIO„IDNTƒ5,1�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.‹******É***O*******************************************************************************O*******************************************************************************O*^***************************************************************************** *,*‚Revision�history�(add�new�changes�to�top).*…Date†Author‚ChangesI*…--------‚------‚-------------------------------------------------------C*†2/27/85ƒSJF„Changed�timer�initialization�to�use�TIMINTV�value�for+*—the�number�of�milliseconds�between�ticks.*…10/20/84ƒACC„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:)ŠXREFƒKILLER�Routine�to�crash�the�system.*…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).*…SYSPAR�variables:6ŠXREF.S�MMUHEREŒAddr�of�MMU;�0�if�we're�not�using�one.ŠXREF.S�DATE�Date.K4TR\HdAlEt@|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). *„Others:.ŠXREFƒCRASHSAV‹Place�to�SAVE�info�if�we�CRASH.  **‚Included�files:**‰&.UTILITY.MC*‰Z8036.Z8036.EQ*‰VM04.CTRLSTAT.EQ*‰M68020.CACR.EQ*ŠNOLISTŠINCLUDE�&.UTILITY.MCŠINCLUDE�Z8036.Z8036.EQŠINCLUDE�VM04.CTRLSTAT.EQŠINCLUDE�M68020.CACR.EQŠLIST ‰SECTIONƒ8ŠPAGEO*v*****************************************************************************O**********************************************************************************É***/***…ROUTINE:‚INITMMU�--�INITIALIZE�THEˆMMU.•******É***?***…FUNCTION:‚Verifies�the�existence�of�theˆMMU�and�sets�it…***H***‡up�for�use�by�RMS68K.‚The�VM04's�MMU�is�not�currently�supported.�******É******…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ƒ.ƒ.ƒ.ƒ.ƒ.ƒ.ƒ.‡.ˆD�* *****‡A:ƒPƒ.ƒ.ƒ.ƒ.ƒ.ƒ.ƒP ******É******…ENTRY�CONDITIONS:³***+***‡Supervisor�mode,�interrupt�level�7.Ÿ******É***-***…EXIT�CONDITIONS�DIFFERENT�FROM�ENTRY:Ÿ******É***O*******************************************************************************O*^*****************************************************************************  ŠOPT„BRS INITMMU: ŠRTS  Š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<<6+C1EN‹Enable�Counter�1*)*ˆ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."&*‚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)ˆ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�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�reset7ICNT1„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.�interruptICNT 1„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�cleared3ICNT4„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,�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***********************************************************************    ‰ENDéééééé**ˆVM04.CNFGDRVR.CI*'* Configuration file for device driversO*------------------------------------------------------------------------------B* This file sets up the flags used by the "VM04.IFDRVR.CI" file to'* conditionally include device drivers.*K* The user should only have to modify this file to include/exclude drivers.E* If you add more boards/devices, you may have to increase the sysgen>* command T option for more symbols in the "&.SYSGEN.CF" file.*K* To modify specific items of a driver, edit the corresponding driver file,J* "&.xxxxDRV.CI" except as noted where one driver handles multiple boards.O*------------------------------------------------------------------------------ N******************************************************************************L*---‚BOARD/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�configura tion�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")G*�NOTE:‚If�you�increase�the�number�of�floppies�on�either�the�1st�or�2nd@*ˆcontroller�boards,�you�may�need�to�edit�&.IPCDRV.CI�and�changeB*ˆthe�Z�value�from�81�to�85�so�that�the�file�IOC.VM20DRV.AG�can�be;*ˆassembled�during�sysgen.‚The�81�value�is�so�that�the�fileA*ˆIOC.VM20DRV.AG�can�be�assembled�in�a�384K�system�during�sysgen. 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„=�0Œ#�of�VM21…UDC�(universal�disk�controller�boards)%*¦floppy�&�hard�disks;�two�board�set;*¦uses�IPC�driver*¦(see�"&.IPCDRV.CI")I*�NOTE:‚If�you�increase�the�number�of�hard�disk�or�floppies�on�either�the@*ˆ1st�or�2nd�controller�boards,�you�may�need�to�edit�&.IPCDRV.CIF*ˆand�change�the�Z�value�from�81�to�92�so�that�the�file�IOC.VM21DRV.AGB*ˆcan�be�assembled�during�sysgen.‚The�81�value�is�so�that�the�fileA*ˆIOC.VM21DRV.AG�can�be�assembled�in�a�384K�system�during�sysgen. IFGTˆ\NOVM215ƒNHV21$1ƒ=�0Œ#�of�hardƒdisk�drives�on�1st�UDC;�max=�47ƒNFV21$1ƒ=�0Œ#�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)J*�NOTE:‚If�you�increase�the�number�of�hard�disk�or�floppies,�you�will�needC*ˆto�edit�&.VM22DRV.CI�and�change�the�Z�value�from�81�to�92�so�thatF*ˆthe�file�IOC.VM22DRV.AG�can�be�assembled�during�sysgen.‚The�81�valueF*ˆis�so�that�the�file�IOC.VM22DRV.AG�can�be�assembled�in �a�384K�system*ˆduring�sysgen. 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*------------------------------------------------------------------------------éééééé**ˆ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ˆ\NO 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.CIENDCééé¥%**ˆ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�interrupt®6·-¿&*œ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�you 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.AMEMEND1ƒ=�$400000†Ending�addr�for�on-board‚memory�must�be�<�this.4MEMEND2ƒ=�$0‹Starting‚addr�for�off-board�memory�must *˜be�>=�this.@MEMEND3ƒ=�$0‹Ceiling�addr�for�off-board�memory�(must�be�<�this).:WHERLOAD‚=�0ŒMemory�address�where�boot�file�will�be�loaded1*˜Nonzero�on�VM01�only.‚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)7NOTNT…=�0ŒNot�used�by�VM04�(needed�for�EET.VERSADOS.CI) =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�accesses7*˜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.  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. 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‰******************************************************************* $=COPY‡C20O24.SYSPAR.RO,&.SYSPAR.RO;Yé'VME122 COPYSGENCFÓÓ¯qq =/*<=/*‚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.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=/*----------------------------------------------------------------------------(=/* 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 VME315 files for sysgen=/@„\1:9998.COPYGEN.M315DRV.CFO=/*----------------------------------------------------------------------------F=/* Copy all VME316 (VMEbus to I/O channel interface) files for sysgen=/@„\1:9998.COPYGEN.M316DEF.CFO=/*----------------------------------------------------------------------------$=/* Copy all VME320 files for sysgen=/@„\1:9998.COPYGEN.M320DRV.CFO=/*----------------------------------------------------------------------------/=/* Copy all VME435 (mag tape) files for sysgen=/@„\1:9998.COPYGEN.M435DRV.CFO=/*----------------------------------------------------------------------------7=/* Copy all RWIN1 (Winchester) driver files for sysgen=/@„\1:9998.COPYGEN.RWINDRV.CFO=/*----------------------------------------------------------------------------*=/* Copy all disk related files for sysgen=/@„\1:9998.COPYGEN.DSKPARAM.CFO=/*----------------------------------------------------------------------------=/*=/**=/* ==== Start system related file copyingO=/*-----------------------------------------------------------------------------=/*‚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=/*----------------------------------------------------------------------------<=/* 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! éééé'FMS IOI AGøøSqqIXR AGqqVERSADOSCI  qq* *ˆFMS.IOI.AG*G*ˆThis�code�is�referenced�by�the�system�initializer.�If�FMS�is�present,B*ˆthe�desired�FMS�logic�will�be�executed.‚However,�if�the�user�hasA*ˆelected�to�remove�FMS�from�the�system,�an�immediate�return�will*ˆbe�executed.   ‰SECTION�1 ‰XDEF†FMSIOI01 FMSIOI01: �IFNE…\FMS$ ‰NOLIST‰INCLUDEƒ&.IOE.EQ‰INCLUDEƒ&.NIO.EQ‰INCLUDEƒ&.FME.EQ‰INCLUDEƒ&.FMI.EQ‰LIST ŠSECTION�1*ˆINCLUDEƒ&.IOE.EQ*ˆINCLUDEƒ&.NIO.EQ*ˆINCLUDEƒ&.FME.EQ*ˆINCLUDEƒ&.FMI.EQ  NOVDTS EQU \TOTDSK NO. OF VDT'S!NOFCBS EQU \NODIFFIL NO. OF FCB'S NOFATS EQU \NOFILES NO. OF FAT'SNODVS‚EQU�\NODEFVOL�NO.�OF�DV'S#DEFFAB EQU \DEFFAB DEFAULT FAB SIZE"DEFDAT EQU \DEFDAT DEFAULT DB SIZE ‰XREF†FMSDLEN‰PAGE**ˆOUTPUT*’D0�=�FMS�ASQ�LENGTH***D*.IOI MUST CALCULATE LENGTH OF FMS DATA SEGMENT, AS WELL AS SOME ASQE*…LENGTHS�BECAUSE�OF�RESTRICTIONS�THAT�LINK�CAN�ONLY�ADD�AND�SUBTRACT*…EXPRESSIONS�WITH�XREF'S*&*FMS STACK AREA IS FIRST PART OF FMSD-=*…STACK�SIZE�IS�DETERMINED�BY�NO.�OF�DIFFERENT�FILES�THAT�CAN*…BE�OPENED�AT�ONCE>*COMMON STACK MUST BE LARGE ENOUGH TO ACCOMODATE 12*(NOFCBS+1);*…PLUS�A�LITTLE�FOR�SUBROUTINE�CALLS�ISSUED�PRIOR�TO�DEVBSY8*…BEING�CALLED�(ABOUT�30�BYTES)�PLUS�ONE�COMPLETE�SET�OF*…REGISTERS�(66�BYTES)***ŠMOVE.L�#NOFCBS+1,D0 ŠMULUƒ#12,D0ŠADD.L‚#100,D0 ŠMOVE.L�D0,D1ŠMOVE.L�#NOVDTS,D0ŠMULUƒ#VDTLEN,D0 ŠADD.L‚D0,D1ŠMOVE.L�#NOFCBS,D0ŠMULUƒ#FCBLEN,D0 ŠADD.L‚D0,D1ŠMOVE.L�#NOFATS,D0ŠMULUƒ#FATLEN,D0 ŠADD.L‚D0,D1ŠMOVE.L�#NODVS,D0ŠMULUƒ#DVLEN,D0 ŠADD.L‚D0,D1*ŠMOVE.L�#SECSZE*(SDBSZE+DBSZE+SATSZE+1),D0ŠMULUƒ#NOVDTS,D0ŠADD.L‚D0,D1ŽD1=SEGMENT�LENGTHŠMOVE.L�D1,FMSDLEN:*CALCULATE LENGTH OF .FMS'S ASQ (EVTLEN+FHSNLN)*(NOFATS+2)ŠMOVE.L�#NOFATS+2,D0ŠMULUƒ#EVTLEN+FHSNLN,D0 ENDC‰RTS‰END ðT* *ˆFMS.IXR.AG*E* File of I/O XDEF's whose values are determined by sysgen parameters* .ˆXDEF‚NOVDTS,NOFCBS,NOFATS,NODVS,DEFFAB,DEFDAT NOVDTS‚EQUƒ\TOTDSK„No.�of�VDT'S!NOFCBS‚EQUƒ\NODIFFIL‚No.�of�FCB'S NOFATS‚EQUƒ\NOFILESƒNo.�of�FAT'SNODVSƒEQUƒ\NODEFVOL‚No.�of�DV'S#DEFFAB‚EQUƒ\DEFFAB„Default�FAB�size"DEFDAT‚EQUƒ\DEFDAT„Default�DB‚size ENDééééééù**ˆFMS.VERSADOS.CI*AMSG‰*************************************************************'MSG‰**ˆFMS�--�File�Management�System”**AMSG‰*************************************************************TASKˆ&.FMS.LO,.FMSSTATE…=�'DORM'ATTRIB„=�'CRIT'ATTRIB„=�'RTIM'ATTRIB„=�'SYST'PRIORITY‚=�$D0FMSSTR„=�*ŒFMS�load�addr. FMSASR„=�*+2ŠFMS�ASR�entry�pointSUBSˆFMS.IXR.AG"ASM‰FMS.IXR.AG,FMS.IXR.RO,\ASMLS;R IFEQˆ\ASMLSWƒ=COPY‡\ASMLS,\WORKLS;AENDC SUBSˆ&.FMS.LG LINKˆ&.FMS.LG IFEQˆ\LINKLSWƒ=COPY‡\LINKLS,\WORKLS;AENDCEND‰FMS#*�Build�VERSAdos‚.OSLIST.AG=COPY‡OSLIST.FMS.SI,OSLIST.AG;A5* Build VERSAdos patch chain file .VERSAPT.CF!=COPY‡VERSAPT.FMS.CF,VERSAPT.CF;Aééé éé'EET START AGBqqVERSADOSCI  Pqq**ˆEET.START.AG* *ˆRoutine�to*,*’Start�the�Exit/Entry�Task�(EET)�if�present********C*******‚If�the�EET�task�is�present�in�the�system�it�will�be�started>*******‚however�if�not�present�an�immediate�return�will�occur.********ˆInput/*’A6�=�Start�address�of�I/O�common�data�segment**ˆOutput***ˆRegister�Alteration**’A0�=�Destroyed*’D0�=�Destroyed*‰PAGE**ˆINCLUDEƒ&.TR1.EQ*ˆINCLUDEƒ&.UTILITY.MC*‰NOLIST‰INCLUDEƒ&.TR1.EQ‰INCLUDEƒ&.UTILITY.MC‰LIST‰PAGE‰XDEF†EETSTART   ‰XREF†KILL‰PAGE ‰SECTION�1 …IFNE‚\EET$* BIT0…EQU‡0*EETSPB:‰DC.B†'&EET'„Target�task�name"‰DC.L†2‰Target�task�session�number‰DC.B†0‰Directive�options‰DC.L†0‰Monitor�task�name#‰DC.L†0‰Monitor�task�session�number‰DC.B†60ˆTask�startup�registers‰DS.W†0…ENDC‰PAGE EETSTART: …IFNE‚\EET$‰MOVE.L„#START,D0*œD0�=�Start�directive‰LEA‡EETSPB,A0'*œA0�=�Address�of�start�parameter�block‰TRAP†#1 *œStart�task ‰BSRNE…KILL+*œBring�system�down�if�unable�to�start�task…ENDC‰RTS*œReturn�to�caller‰ENDéééC **ˆEET.VERSADOS.CI*BMSG‰**************************************************************MSG‰**ˆEET�EQU�valuesBMSG‰***************************************************************=DEFAULTƒ=�"SYS:0.&"„*System�default�volume:usernumber.catalog6SECURITY‚=�1ŒSwitch�to�indicate�if�security�package�is,*˜supported.‚Value�of�zero�excludes�package,,*˜nonzero�includes�it.‚This�package�requires*˜approximately�1K�of�memory.*;SPCCMD„=�1ŒSwitch�to�indicate�if�the�following�user�session/*˜management�commands�are�supported:‚HELP,CLOSE/*˜ASSIGN,NEWS.‚Value�of�zero�excludes�commands.-*˜This�package�requires�approximately�1/2k�of *˜memory.* ;TERMOCNT‚=�2Œ*No.�of�terminal�output�timeouts�before�logoff* =CHAINBAT‚=�1ŒSwitch�to�indicate�if�chain�and�batch�processing1*˜are�supported.‚Value�of�zero�excludes�batch�and-*˜chain;�non-zero�includes�them.‚This�package**˜requires�approximately�3-1/2K�of�memory.*8CONBATCH‚=�1ŒNumber�of�concurrent�batch�jobs�that�can�be'*˜running.‚Cannot�be�more�than�NOTASKS.*;BATCHPGE‚=�2ŒNo.�of�pages�for�batch�job�queueing.‚Each�page/*˜accomodates�32�entries.‚In�addition,�there�is**˜space�for�31�entries�minus�the�number�of*˜terminals�in�the�system.*�Auto�break�inactive*›1�-->�Auto�break�active*˜Bit�1:*›0�-->�Auto�logon�inactive*›1�-->�Auto�logon�active**MSG‰AMSG‰************************************************************* MSG‰**ˆEET�--�Entry�Exit�Task›**=!AMSG‰*************************************************************TASKˆ&.EET.LO,&EETSTATE…=�'DORM'ATTRIB„=�'CRIT'ATTRIB„=�'SYST' SESSIONƒ=�2PRIORITY‚=�$C8EETSTR„=�*ŒEET�load�addr.SUBSˆ&.EET.LG,&.CMDLIST.AG&ASM‰&.CMDLIST.AG,&.CMDLIST.RO,\ASMLS;R IFEQˆ\ASMLSWƒ=COPY‡\ASMLS,\WORKLS;AENDC LINKˆ&.EET.LG IFEQˆ\LINKLSWƒ=COPY‡\LINKLS,\WORKLS;AENDCEND‰EET5* Build VERSAdos patch chain file .VERSAPT.CF!=COPY‡VERSAPT.EET.CF,VERSAPT.CF;Aééééé é'FHS IXR AG55qq* *ˆFHS.IXR.AG*E* File of I/O XDEF's whose values are determined by sysgen parameters* ˆXDEF‚LUNS &LUNS„EQUƒ\MAXLU+1‚No.�of�LU's�per�task ENDééééééé- 'GET TASKID AGBBOqq **ˆGET.TASKID.AG* *ˆRoutine�to'*’Get�the�specified�task�identification*D*ˆThis�routine�is�called�by�FHS�and�IOS�during�their�initialization.E*ˆSince�IOS�and�FHS�cannot�distinguish�between�a�ROM�and�a�RAM�systemF*ˆthis�module�will�be�assembled�at�SYSGEN�time�as�this�distinction�can*ˆbe�determined�then.**‰PAGE**ˆINCLUDEƒ&.TR1.EQ*ˆINCLUDEƒ&.TR1RTCD.EQ*‰NOLIST‰INCLUDEƒ&.TR1.EQ‰INCLUDEƒ&.TR1RTCD.EQ‰LIST‰PAGE**ˆINPUT:-*’A0�=�ADDRESS�OF�GET�TASK�ID�PARAMETER�BLOCK*’A1�=�TASK�NAME*’D0�=�TASK�SESSION�NUMBER** *ˆOUTPUT:**’A0�=�FIRST‚HALF�OF�TASK�IDƒ(TCB�ADDRESS)+*’A1�=�SECOND�HALF�OF�TASK�IDƒ(SESSION�NBR)*’D0�=�RESULTS�OF�TRAP�CALL* *—....�UNLESS*%*¦THIS�IS�A�ROM�SYSTEM�AND�THE�TARGET*¦TASK�CANNOT�BE�FOUND�THEN*¦D0.B�=�NEGATIVE�ONE�(-1)**ˆRETURN�CONDITONS:*–ZERO‚-ƒSUCCESSFUL�REQUEST!*’NON-ZERO‚-�UNSUCCESSFUL�REQUEST!*’NEGATIVE‚-�UNSUCCESSFUL�REQUEST+*ŸROM�BASED�SYSTEM�WITH�TARGET�TASK�MISSING‰PAGE**ˆEXTERNAL�DEFINITIONS* ‰XDEF†GETTSKID‰PAGE ‰SECTION�0 GETTSKID:‰MOVE.L„A1,(A0)‰MOVE.L„D0,4(A0)*œSET�RESPECTIVELY *�TASK�NAME*�TASK�SESSION�NUMBER‰MOVE.L„#GTTASKID,D0*œD0�=�GET�TASK�ID�DIRECTIVE‰TRAP†#1*œINITIATE�GET�TASK�ID�REQUEST …IFNE…\$ROPT*‰CMP.B…#RTCDTASK,D0‰BNE.S…GTID0100-*œBRANCH�IF�ERROR�OTHER�THAN�TARGET�TASK�DOES *œNOT�EXIST‰MOVE.B„#-1,D0**œSET�FLAG�-�TARGET�TASK�DOES�NOT�EXIST�ON*§A�ROM�BASED�SYSTEM…ENDC GTID0100: ‰TST.B…D0*œESTABLISH�OUTPUT�CONDITONS‰RTS*œRETURN�TO�CALLER‰ENDé:P«'IOC M300XTR AGOO%qqBEGIN AGXX iqqP050DRV AGii<qqP115DRV AGrr8qqM300DRV AG{{ xqqM315DRV AGŒŒf­qqM320DRV AG-- BqqM4205 AGVVqqM4208 AGww÷qqM435DRV AG˜˜qqACIADRV AG¹¹ WqqDARTDRV AGÊÊ VqqEPCIDRV AGÛÛ ]qqVM20DRV AGìì2ÛqqMFPDRV AG%%:qqMPCCDRV AG.. TqqMPSCDRV AG??€qqPIADRV AGXXˆqqRWINDRV AGii?ŒqqDRVS10 AGªª1qq**ˆ&.M300XTR.AG*(EXTR…IDNT†1,0‡GPIB�Extra�Page�Calculator *‚Included�files: *‰&.IOE.EQ *‰&.CCB.EQ*‰&.M300DRV.EQŠNOLISTŠINCLUDE�&.IOE.EQŠINCLUDE�&.CCB.EQŠINCLUDE�&.M300DRV.EQŠLIST 4‰XDEF†GPIBXP„Extra�page�word�to�be�pas sed�to�GPIBDRV*A*…NOTE:�GPIBXP�is�passed�to�GPIBDRV�as�a�word,�but�only�the�upper@*ƒbyte�contains�the�valid�extra�pages,�and�the�lower�byte�is�00.D*ƒthis�is�necessary�because�only�words�may�be�passed�through�an�XREF4*ƒand�CMR�expects�the�Extra�Pages�in�the�first�byte.*BGPIBUCL0 SET \GB0$UCL+\G0A$UCL+\G0B$UCL+\G0C$UCL+\G0D$UCL+\G0E$UCLBGPIBUCL0 SET GPIBUCL0+\G0F$UCL+\G0G$UCL+\G0H$UCL+\G0I$UCL+\G0J$UCL9GPIBUCL0 SET GPIBUCL0+\G0K$UCL+\G0L$UCL+\G0M$UCL+\G0N$UCL BGPIBUCL1 SET \GB1$UCL+\G1A$UCL+\G1B$UCL+\G1C$UCL+\G1D$UCL+\G1E$UCLBGPIBUCL1 SET GPIBUCL1+\G1F$UCL+\G1G$UCL+\G1H$UCL+\G1I$UCL+\G1J$UCL9GPIBUCL1 SET GPIBUCL1+\G1K$UCL+\G1L$UCL+\G1M$UCL+\G1N$UCL GPIBUCL‚SET†GPIBUCL0‰IFGT…GPIBUCL1-GPIBUCL0GPIBUCL‚SET†GPIBUCL1‰ENDC /GPIBXPƒEQU‡(GPIBUCL+(IOSILN*15)+CNFGAREA)&$FF00 ‰ENDéééG&**ˆIOC.BEGIN.AG*O*********************************************************************************ˆIOC�--�DEFINE�DCB'S�AND�CDB'S*(*‡(The�macros�used�are�defined�in�IODM.)*E*‚08/01/84‚Changed�NOSASI�to�NVME420,�NOWIN�to�NORWIN,�and�TOTM435�to=*ŒNVME435�for�the�new�sysgen�method.‚Split�out�driver�DCB/CDB&*Œalso�to�relocatable�IOC�file�method.4*‚11/10/83‚Modified�to�use�IOCVEC�and�IOCLVL�equates&*Œincludes�Winchester�and�SASI�drivers*Œmag�tape�at�level�1'*‚09/02/83‚Modified�for�mag�tape�driver*O******************************************************************************* *‚Included�equate�files: *†&.IOE.EQ *†&.NIO.EQ* NOLIST‚INCLUDEƒ&.IOE.EQ‚INCLUDEƒ&.NIO.EQ LIST *@*‚This�section�becomes�IOCOMS,�which�is�used�by�FMS,�IOS,�&�FHS.*#IOCOM„IDNT†04,01‡I/O�COMMON�SEGMENT �SECTION�0‚===�DCB�SECTION�=== OPT MEX  XDEF IOCOMS,CCSEG XREF DCBEND *6*‚Here�are�parameters�describing�the�tables�and�lists.*IOCOMS �DC.L�0†I/O�sysgen�options. ( DC.L DCQSTR Start address of DCQ space.&�DC.L�DCQEND�Endƒaddress�of�DCQ�space.�DC.L�0†Address�of�1st�DCQ. ( DC.L LUTSTR Start address of LUT space.&�DC.L�LUTEND�Endƒaddress�of�LUT�space.�DC.L�0†Address�of�1st�LUT. ( DC.L DCBTBL Start address of DCB space.&�DC.L�DCBEND�Endƒaddress�of�DCB�space. DC.L DCBTBL Address of 1st DCB. �DC.L�0�SEMAPHORE�FLAG%�DC.B�0�SYSTEM�TASK�COORDINATION�FLAG *“BIT‡MEANING%*•0‡0�-->�IOS�INITIALIZATION�NOT�DONE*�1�-->�IOS�INITIALIZATION…DONE%*•1‡0�-->�FHS�INITIALIZATION�NOT�DONE*�1�-->�FHS�INITIALIZATION…DONE%*•2‡0�-->�FMS�INITIALIZATION�NOT�DONE*�1�-->�FMS�INITIALIZATION…DONE�DCB.B�15,0‰FOR�FUTURE�USE(�DC.L�0,0,0‰TASK�ID�FOR�UNCLAIMED�BREAKS PAGEO********************************************************************************C*ˆStorage�for�DCQ's�and�LUT's.‚Initially�these�two�lists�are�empty.*O******************************************************************************* * *‚DCQ�space.* POY DCQSTR EQU * DS.B \PAGESIZE*\DCQPGEDCQEND EQU *-1 * *‚LUT�space.* LUTSTR EQU * DS.B LUTBEG*\NOTASKS DS.B LUTSEG*\NOTASKS*(\MAXLU+1)LUTEND EQU *-1‰PAGEO**********************************************************************************ˆDefine�DCB's�based�on�SYSGEN�parameters.*O******************************************************************************* *�SECTION�0‚===�DCB�SECTION�===*DCBTBL�EQU�*‡This�is�the�top�of�DCB�space.  �SECTION�1‚===�CDB�SECTION�===I�DC.W�0‚@@@@�dummy�allocation�to�satisfy�LINK�1.6�problem�of�null�section)CCSEG‚EQU�*‡This�is�the�top�of�CDB�space.  ENDééééé**ˆIOC.P050DRV.AG**‚Included�equate�files: *‰&.IOE.EQ *‰&.NIO.EQ*ŠNOLISTŠINCLUDE�&.IOE.EQŠINCLUDE�&.NIO.EQŠLIST !*‚Included�device�specific�macros*‰MACRO.DCB.SI*‰MACRO.DCBPRT.SI*ŠNOLISTŠINCLUDE�MACRO.DCB.SIŠINCLUDE�MACRO.DCBPRT.SIŠLIST ŠPAGE&*‚Assign�values�from�SYSGEN�parameters*.DVCODEƒSET�\&PRTDV„Define�starting�device�code0L050$01‚EQU�\L050$01ƒDefine�VME050�board�address6NP050$1‚SET�\NP050$1ƒDefine�#�printers�on�VME050�board=PRT050ƒEQU�\P050DRVƒDefine�the�physical�address�of�the�driver 5CNAME„SET…('C'<<16)+(DVCODE>>8)‚channel�name�mnemonicE*ƒNOTE:‚Use�of�CNAME�guarantees�that�the�ASCII�printer�DCB�identifier>*Š(PR‚,PR1�,�etc)�will�always�correspond�with�the�channel�name*Šmnemonic�(CPR�,CPR1,�etc.). O*******************************************************************************:*‚SET�UP�DCB'S�&�CDB'S�FOR�REMOTE�PRINTERS‚-‚VME050�boardsO******************************************************************************* /* Define PCP$ATW one time here for all printers.PCP$ATW‚SET…\PCP$TLRL<<2+\PCP$AFF<<1+\PCP$LNFD �IFGE‚NP050$1-1*ƒVME050�Board.�printer�port**--‚DATA�CONTROL�BLOCK‚--*K PRTDCB DVCODE,IOSID,IOSESS,$632,95,1,CNAME,0,$0007,$0033,PCP$ATW,\PCP$REC,%&‡\PCP$RSZ,\PCP$WTO,\PCP$LRL,\PCP$ELC�IFNE�DVCODE-'PR‚'1DVCODE�SET�DVCODE+$100‚SET�UP�FOR�NEXT�PRINTER�ID ENDC�IFEQ�DVCODE-'PR‚'DVCODE SET 'PR1 ' ENDC ***‚CHANNEL�DATA�BLOCK‚***: CDB 0,CNAME,XTPV050,254,PRT050,0,L050$01+$81,7,$8B,5,$10,&„0,0,0,0,0,0,0,0,0,0,0  ENDC  END éa=**ˆIOC.P115DRV.AG**‚Included�equate�files: *‰&.IOE.EQ *‰&.NIO.EQ*ŠNOLISTŠINCLUDE�&.IOE.EQŠINCLUDE�&.NIO.EQŠLIST !*‚Included�device�specific�macros*‰MACRO.DCB.SI*‰MACRO.DCBPRT.SI*ŠNOLISTŠINCLUDE�MACRO.DCB.SIŠINCLUDE�MACRO.DCBPRT.SIŠLIST ŠPAGE&*‚Assign�values�from�SYSGEN�parameters*.DVCODEƒSET�\&PRTDV„Define�starting�device�code8LPDA$01‚EQU�\LPDA$01ƒDefine�local�printer�device�address=PRT115ƒEQU�\P115DRVƒDefine�the�physical�address�of�the�driver 0CNAME„SET…'CPR'+DVCODE&$FF‚channel�name�mnemonicE*ƒNOTE:‚Use�of�CNAME�guarantees�that�the�ASCII�printer�DCB�identifier>*Š(PR‚,PR1�,�etc)�will�always�correspond�with�the�channel�name*Šmnemonic�(CPR�,CPR1,�etc.). O*******************************************************************************9*‚SET�UP�DCB'S�&�CDB'S�FOR�REMOTE�PRINTERS‚-‚VME115�boardO******************************************************************************* /* Define PCP$ATW one time here for all printers.PCP$ATW‚SET…\PCP$TLRL<<2+\PCP$AFF<<1+\PCP$LNFD *ƒVME115�Board.�printer�port**--‚DATA�CONTROL�BLOCK‚--*K PRTDCB DVCODE,IOSID,IOSESS,$632,95,1,CNAME,0,$0007,$0033,PCP$ATW,\PCP$REC,%&‡\PCP$RSZ,\PCP$WTO,\PCP$LRL,\PCP$ELC�IFNE�DVCODE-'PR‚'1DVCODE�SET�DVCODE+$100‚SET�UP�FOR�NEXT�PRINTER�ID ENDC�IFEQ�DVCODE-'PR‚'DVCODE SET 'PR1 ' ENDC ***‚CHANNEL�DATA�BLOCK‚***6 CDB 0,CNAME,XTPV115,254,PRT115,0,LPDA$01,1,$C1,5,$10,&„0,0,0,0,0,0,0,0,0,0,0  ENDééj9**ˆIOC.M300DRV.AG**‚Included�equate�files: *ˆ&.IOE.EQ *ˆ&.NIO.EQ*‰NOLIST‰INCLUDEƒ&.IOE.EQ‰INCLUDEƒ&.NIO.EQ‰LIST !*‚Included�device�specific�macros*ˆMACRO.DCB.SI*ˆMACRO.DCBGPIB.SI*‰NOLIST‰INCLUDEƒMACRO.DCB.SI‰INCLUDEƒMACRO.DCBGPIB.SI‰LIST‰PAGE***‚Define�variables�using�SYSGEN�parameters*+M300…EQU‚\M300DRV‚Address�of�MVME300�driver-L300$01‚EQU‚\L300$01‚MVME300�board�#1�address-L300$02‚EQU‚\L300$02‚MVME300�board�#2�address  O********************************************************************************ƒSET�UP�DCB'S�FOR�MVME300O******************************************************************************* ‰PAGEA******************************************************************.*…Define�GPIB�Default�Parameters�and�Attribute*A******************************************************************GPD$ATM‚EQU‡$1F‘ATTRIBUTE�MASKGPD$PAM‚EQU‡$FFF�PARAMETER�MASK7GPD$AT1‚EQU‡$2137�DEVICE�ATTRIBUTES�(BUS,�NOT�SHARABLE)7GPD$AT2‚EQU‡$6137�DEVICE�ATTRIBUTES�(DEV,�NOT�SHARABLE)3GPD$AT3‚EQU‡$4137�DEVICE�ATTRIBUTSE�(DEV,�SHARABLE)/GPD$ATW‚EQU‡$3’ATTRIBUTE�WORD�(TALKER/LISTENER)(GPD$WTO‚EQU‡30000�WRITE�TIMEOUT�(30�SEC)'GPD$RTO‚EQU‡30000�READ�TIMEOUT‚(30�SEC)#GPD$EOR‚EQ U‡$19010901‹END�OF�RECORDGPD$EOS‚EQU‡$0A0A�END�OF�STRING'GPD$PPC‚EQU‡$80‘PARALLEL�POLL�CONFIGUREGPD$PRA‚EQU‡$1F‘PRIMARY�ADDRESS$GPD$WLN‚EQU‡$0’WRITE�TRANSFER�LENGTH#GPD$RLN‚EQU‡$0’READ�TRANSFER�LENGTH*GPD$RSM‚EQU‡$0’READ�SECONDARY�ADDRESS�MASK+GPD$WSM‚EQU‡$0’WRITE�SECONDARY�ADDRESS�MASK*6*‚DCBƒDEFINITION�FOR�IEEE-488�BUS�AND�BUSSABLE�DEVICES* IFGE \NVME300-1*C GPDVDCB.14 'BUSA',GPD$AT1,0,1,GPD$ATM,GPD$PAM,$1F,GPD$WTO,GPD$RTO,B& GPD$EOR,GPD$EOS,GPD$PPC,GPD$PRA,GPD$WLN,GPD$RLN,GPD$RSM,GPD$WSM,& $0,$0,'BUS0'*D GPDVDCB 'BA0A',GPD$AT2,0,1,GPD$ATM,GPD$PAM,GPD$ATW,GPD$WTO,GPD$RTO,B& GPD$EOR,GPD$EOS,GPD$PPC,GPD$PRA,GPD$WLN,GPD$RLN,GPD$RSM,GPD$WSM,& $0,$0,'BUS0'*sE|4D GPDVDCB 'BA0B',GPD$AT3,0,1,GPD$ATM,GPD$PAM,GPD$ATW,GPD$WTO,GPD$RTO,B& GPD$EOR,GPD$EOS,GPD$PPC,GPD$PRA,GPD$WLN,GPD$RLN,GPD$RSM,GPD$WSM,& $0,$0,'BUS0'*D GPDVDCB 'BA0C',GPD$AT2,0,1,GPD$ATM,GPD$PAM,GPD$ATW,GPD$WTO,GPD$RTO,B& GPD$EOR,GPD$EOS,GPD$PPC,GPD$PRA,GPD$WLN,GPD$RLN,GPD$RSM,GPD$WSM,& $0,$0,'BUS0'*D GPDVDCB 'BA0D',GPD$AT3,0,1,GPD$ATM,GPD$PAM,GPD$ATW,GPD$WTO,GPD$RTO,B& GPD$EOR,GPD$EOS,GPD$PPC,GPD$PRA,GPD$WLN,GPD$RLN,GPD$RSM,GPD$WSM,& $0,$0,'BUS0'**†HANDLE�THE�REST�AS�DEFAULTS*  GPDFDCB.BA0E* ENDC** IFGE \NVME300-2*C GPDVDCB.14 'BUSB',GPD$AT1,0,1,GPD$ATM,GPD$PAM,$1F,GPD$WTO,GPD$RTO,B& GPD$EOR,GPD$EOS,GPD$PPC,GPD$PRA,GPD$WLN,GPD$RLN,GPD$RSM,GPD$WSM,& $0,$0,'BUS1'**†HANDLE�THE�REST�AS�DEFAULTS* GPDFDCB.BB0A*  ENDC   O********************************************************************************ƒSET�UP�CDB�FOR�MVME300O******************************************************************************* ***‚CHANNEL�DATA�BLOCK‚*********‚IEEE-488�CHANNELS  IFGE \NVME300-1I CDB $0001,'BUS0',XTGBUS,254,M300,0,L300$01,64,$B0,4,$40,1,0,0,0,0,0,0,0,&…0,0,0 ENDC* IFGE \NVME300-2I CDB $0001,'BUS1',XTGBUS,254,M300,0,L300$02,64,$B1,4,$40,1,0,0,0,0,0,0,0,&…0,0,0 ENDC  ENDéé**ˆIOC.M315DRV.AG**‚Included�equate�files: *ˆ&.IOE.EQ *ˆ&.NIO.EQ*‰NOLIST‰INCLUDEƒ&.IOE.EQ‰INCLUDEƒ&.NIO.EQ‰LIST !*‚Included�device�specific�macros*ˆMACRO.DCB.SI*ˆMACRO.DCBDISK.SI*‰NOLIST‰INCLUDEƒMACRO.DCB.SI‰INCLUDEƒMACRO.DCBDISK.SI‰LIST‰PAGE***‚Define�variables�using�SYSGEN�parameters*+M315…EQU‚\M315DRV‚Address�of�MVME315�driver-L315$01‚EQU‚\L315$01‚MVME315�board�#1�address-L315$02‚EQU‚\L315$02‚MVME315�board�#2�address8VECTNO1‚EQU‚$FF‡Initialize�vector�number�for�1st�MVME3158VECTNO2‚EQU‚$FE‡Initialize�vector�number�for�2nd�MVME315 'NVME315‚EQU�\NVME315‚#�of�VME315�boardsANH315$1‚EQU�\NH315$1‚#�hardƒdisks�on�1st�MVME315�controller�boardCNF315$1‚EQU�\NF315$1‚#�floppy�disks�on�1st�MVME315�controller�board éééé „!�&•2�0¥­(µ(½3Å'Í,Õ3Ý"å'íDõ&ý8N ON ANH315$2‚EQU�\NH315$2‚#�hardƒdisks�on�2nd�MVME315�controller�boardCNF315$2‚EQU�\NF315$2‚#�floppy�disks�on�2nd�MVME315�controller�board  O********************************************************************************ƒSET�UP�DCB'S�FOR�MVME315O******************************************************************************* *#*‚Set�up�DCB�parameters�for�MVME315*‚(media�independent)* DEV_ATT‚SET‡$1FDEV_CODE�SET‡0DEV_STAT�SET‡4PAR_MASK�SET‡$DBF3ECC_LEN‚SET‡11  CHAN_ID‚SET‡'A315'O********************************************************************************(*ˆHARD�DISKS�ON�FIRST�MVME315�CONTROLLER*O*******************************************************************************‰IFGE†NH315$1-1O********************************************************************************-*ƒFirst�hard�disk�on�first�MVME315�controller*O******************************************************************************* DSKNM„SET‡'HD\CONT3151\ZERO'>SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\M3150$1,'H8WIN10'*ééé*‚8"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H8WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3150$1,'H5WIN05'**‚5�1/4"‚5‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN05.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3150$1,'H5WIN10'**‚5�1/4"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3150$1,'H5WIN12'**‚5�1/4"‚12‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN12.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3150$1,'H5WIN15'**‚5�1/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN15.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*0*‚Set�up�attribute�mask�for�hard�disk�on�MVME315*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\M3151$1,'H8WIN10'**‚8"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H8WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3151$1,'H5WIN05'**‚5�1/4"‚5‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN05.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3151$1,'H5WIN10'**‚5�1/4"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3151$1,'H5WIN12'**‚5�1/4"‚12‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN12.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3151$1,'H5WIN15'*ééé*‚5�1/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN15.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*0*‚Set�up�attribute�mask�for�hard�disk�on�MVME315*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFGE†NF315$1-1O********************************************************************************/*‚First�floppy�disk�on�first�MVME315�controller*O******************************************************************************* ‰IFC‡\M3154$1,'F8DDDSI'*-*‚8"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3154$1,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3154$1,'F8SDSSI'*-*‚8"‚single�density,�single�sided,�IBM�format*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3154$1,'F8SDSSM'*éééé2*‚8"‚single�density,�single�sided,�Motorola�format*“INCLUDE„&.F8SDSSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3154$1,'F5DDDSI'*1*‚5�1/4"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC 4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*.*‚Set�up�attributes�mask�for�floppy�on�MVME315*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\M3155$1,'F8DDDSI'*-*‚8"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3155$1,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3155$1,'F8SDSSI'*-*‚8"‚single�density,�single�sided,�IBM�format*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3155$1,'F8SDSSM'*2*‚8"‚single�density,�single�sided,�Motorola�format*“INCLUDE„&.F8SDSSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3155$1,'F5DDDSI'*1*‚5�1/4"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC 4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*.*‚Set�up�attributes�mask�for�floppy�on�MVME315*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\M3156$1,'F8DDDSI'*-*‚8"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3156$1,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SIééé SIZESET‚SET‡1‰ENDC‰IFC‡\M3156$1,'F8SDSSI'*-*‚8"‚single�density,�single�sided,�IBM�format*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3156$1,'F8SDSSM'*2*‚8"‚single�density,�single�sided,�Motorola�format*“INCLUDE„&.F8SDSSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3156$1,'F5DDDSI'*1*‚5�1/4"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC 4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*.*‚Set�up�attributes�mask�for�floppy�on�MVME315*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\M3157$1,'F8DDDSI'*-*‚8"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3157$1,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3157$1,'F8SDSSI'*-*‚8"‚single�density,�sin gle�sided,�IBM�format*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3157$1,'F8SDSSM'*2*‚8"‚single�density,�single�sided,�Motorola�format*“INCLUDE„&.F8SDSSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3157$1,'F5DDDSI'*1*‚5�1/4"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC ééé4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*.*‚Set�up�attributes�mask�for�floppy�on�MVME315*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\M3150$2,'H8WIN10'**‚8"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H8WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3150$2,'H5WIN05'**‚5�1/4"‚5‚megabyte‚hard‚disk*“INCLUDEƒ&.H5W IN05.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3150$2,'H5WIN10'**‚5�1/4"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3150$2,'H5WIN12'*éééé*‚5�1/4"‚12‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN12.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3150$2,'H5WIN15'**‚5�1/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN15.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*0*‚Set�up�attribute�mask�for�hard�disk�on�MVME315*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\M3151$2,'H8WIN10'**‚8"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H8WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3151$2,'H5WIN05'**‚5�1/4"‚5‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN05.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3151$2,'H5WIN10'**‚5�1/4"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN10.SI SIZESET‚SET‡1‰ENDCé‰IFC‡\M3151$2,'H5WIN12'**‚5�1/4"‚12‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN12.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3151$2,'H5WIN15'**‚5�1/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN15.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*0*‚Set�up�attribute�mask�for�hard�disk�on�MVME315*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFGE†NF315$2-1O********************************************************************************/*‚First�floppy�disk�on�first�MVME315�controller*O******************************************************************************* ‰IFC‡\M3154$2,'F8DDDSI'*-*‚8"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3154$2,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3154$2,'F8SDSSI'*-*‚8"‚single�density,�single�sided,�IBM�format*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3154$2,'F8SDSSM'*2*‚8"‚single�density,�single�sided,�Motorola�format*“INCLUDE„&.F8SDSSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3154$2,'F5DDDSI'*1*‚5�1/4"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC 4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�typeéé‰ENDC*.*‚Set�up�attributes�mask�for�floppy�on�MVME315*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\M3155$2,'F8DDDSI'*-*‚8"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3155$2,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3155$2,'F8SDSSI'*-*‚8"‚single�density,�single�sided,�IBM�format*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3155$2,'F8SDSSM'*2*‚8"‚single�density,�single�sided,�Motorola�format*“INCLUDE„&.F8SDSSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3155$2,'F5DDDSI'*1*‚5�1/4"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC 4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*.*‚Set�up�attributes�mask�for�floppy�on�MVME315*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\M3156$2,'F8DDDSI'*-*‚8"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3156$2,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3156$2,'F8SDSSI'*-*‚8"‚single�density,�single�sided,�IBM�format*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3156$2,'F8SDSSM'*2*‚8"‚single�density,�single�sided,�Motorola�format*“INCLUDE„&.F8SDSSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3156$2,'F5DDDSI'*1*‚5�1/4"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC 4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*.*‚Set�up�attributes�mask�for�floppy�on�MVME315*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\M3157$2,'F8DDDSI'*-*‚8"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3157$2,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚! SET‡1‰ENDC‰IFC‡\M3157$2,'F8SDSSI'*-*‚8"‚single�density,�single�sided,�IBM�format*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3157$2,'F8SDSSM'*2*‚8"‚single�density,�single�sided,�Motorola�format*“INCLUDE„&.F8SDSSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3157$2,'F5DDDSI'*1*‚5�1/4"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC 4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*.*‚Set�up�attributes�mask�for�floppy�on�MVME315*9ATT_MASK�SET‚1<JFG -VECTNO1‚EQU‚$FD†Vector�number�for�1st�MVME320-VECTNO2‚EQU‚$FC†Vector�number�for�2nd�MVME320 O********************************************************************************ƒSET�UP�DCB'S�FOR�MVME320O******************************************************************************* *#*‚Set�up�DCB�parameters�for�MVME320*‚(media�independent)* DEV_ATT‚SET‡$1FDEV_CODE�SET‡0DEV_STAT�SET‡4CHAN_ID‚SET‡'M320'PAR_MASK�SET‡$53F3 ECC_LEN‚SET‡0  F***********************************************************************(*ˆHARD�DISKS�ON�FIRST�MVME320�CONTROLLER*F**********************************************************************‰IFGE†NH320$1-1F***********************************************************************-*ƒFirst�hard�disk�on�first�MVME320�controller*F********************************************************************** DSKNM„SET‡'HD\CONT320\ZERO'>SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\M3200$1,'H8WIN10'**‚8"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H8WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3200$1,'H5WIN05'**‚5�1/4"‚5‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN05.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3200$1,'H5WIN10'**‚5�1/4"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN10.SI SIZESET‚SET‡1éé‰ENDC‰IFC‡\M3200$1,'H5WIN15'**‚5�1/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3200$1,'H5WIN40'**‚5�1/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN40.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*0*‚Set�up�attribute�mask�for�hard�disk�on�MVME320*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\M3201$1,'H8WIN10'**‚8"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H8WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3201$1,'H5WIN05'**‚5�1/4"‚5‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN05.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3201$1,'H5WIN10'**‚5�1/4"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3201$1,'H5WIN15'**‚5�1/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3201$1,'H5WIN40'**‚5�1/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN40.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*0*‚Set�up�attribute�mask�for�hard�disk�on�MVME320*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFGE†NF320$1-1;************************************************************/*‚First�floppy�disk�on�first�MVME320�controller*;*********************************************************** ‰IFC‡\M3202$1,'F8DDDSI'*-*‚8"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3202$1,'F8SDSSI'*-*‚8"‚single�density,�single�sided,�IBM�format*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3202$1,'F5DDDSI'*1*‚5�1/4"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*.*‚Set�up�attributes�mask�for�floppy�on�MVME320*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�" have�selected�a�disk�media ‰IFC‡\M3203$1,'F8DDDSI'*-*‚8"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3203$1,'F8SDSSI'*-*‚8"‚single�density,�single�sided,�IBM�format*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3203$1,'F5DDDSI'*1*‚5�1/4"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*.*‚Set�up�attributes�mask�for�floppy�on�MVME320*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFGE†NH420-1=**************************************************************,*ƒFirst�hard�disk�on�first�SASI�5‚controller*8******************************************************** ‰IFC‡\&M4200,'H5WIN05'**‚5�1/4"‚5‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN05.SI SIZESET‚SET‡1‰ENDC‰IFC‡\&M4200,'H5WIN10'**‚5�1/4"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\&M4200,'H5WIN15'**‚5�1/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\&M4200,'H5WIN40'**‚5�1/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN40.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*NaWL_Fg!/*‚Set�up�attribute�mask�for�hard�disk�on�SASI‚5*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\&M4201,'H5WIN05'**‚5�1/4"‚5‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN05.SI SIZESET‚SET‡1‰ENDC‰IFC‡\&M4201,'H5WIN10'**‚5�1/4"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\&M4201,'H5WIN15'**‚5�1/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\&M4201,'H5WIN40'**‚5�1/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN40.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*/*‚Set�up�attribute�mask�for�hard�disk�on�SASI�5*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\&M4202,'F5DDDSI'*1*‚5�1/4"‚double�density,�double�sided,�IBM�format*“INCLUDEƒ&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*+*‚Set�up�attributes�mask�for�floppy�on�SAS5*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\&M4203,'F5DDDSI'*1*‚5�1/4"‚double�density,�double�sided,�IBM�format*“INCLUDEƒ&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*-*‚Set�up�attributes�mask�for�floppy�on�SASI�5*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFGE†NH420-1=**************************************************************,*ƒFirst�hard�disk�on�first�SASI�8‚controller*8******************************************************** ‰IFC‡\&M4200,'H8WIN10'**‚8"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H8WIN10.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*/*‚Set�up�attribute�mask�for�hard�disk�on�SASI�8*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\&M4201,'H8WIN10'**‚8"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H8WIN10.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*/*‚Set�up�attribute�mask�for�hard�disk�on�SASI�8*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFGE†NF420-1;************************************************************.*‚First�floppy�disk�on�first�SASI�8�controller*;*********************************************************** ‰IFC‡\&M4202,'F8DDDSI'*-*‚8"‚double�density,�double�sided,�IBM�format*“INCLUDEƒ&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\&M4202,'F8SDSSI'*-*‚8"‚single�density,�single�sided,�IBM�format*“INCLUDEƒ&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*-*‚Set�up�attributes�mask�for�floppy�on�SASI�8*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\&M4203,'F8DDDSI'*-*‚8"‚double�density,�double�sided,�IBM�format*“INCLUDEƒ&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\&M4203,'F8SDSSI'*-*‚8"‚single�density,�single�sided,�IBM�format*“INCLUDEƒ&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*-*‚Set�up�attributes�mask�for�floppy�on�SASI�8*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFGE†NFV20$1-1;************************************************************+*‚First�floppy�disk�on�first�FDC�controller*;*********************************************************** ‰IFC‡\VM200$1,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM200$1,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC***‚Set�up�attributes�mask�for�floppy�on�FDC*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\VM201$1,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM201$1,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC***‚Set�up�attributes�mask�for�floppy�on�FDC*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\VM202$1,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM202$1,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC***‚Set�up�attributes�mask�for�floppy�on�FDC*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\VM203$1,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM203$1,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC***‚Set�up�attributes�mask�for�floppy�on�FDC*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFGE†NFV20$2-1;************************************************************,*‚First�floppy�disk�on�second�FDC�controller*;*********************************************************** ‰IFC‡\VM200$2,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM200$2,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC***‚Set�up�attributes�mask�for�floppy�on�FDC*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\VM201$2,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM201$2,'F( 8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC***‚Set�up�attributes�mask�for�floppy�on�FDC*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\VM202$2,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM202$2,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC***‚Set�up�attributes�mask�for�floppy�on�FDC*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\VM203$2,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM203$2,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC***‚Set�up�attributes�mask�for�floppy�on�FDC*9ATT_MASK�SET‚1<>8)‚channel�name�mnemonic C*ƒDefine�printer�attribute�word�(PCP$ATW)�one�time�for�all�printers.PCP$ATW‚SET‡\PCP$TLRL<<2+\PCP$AFF<<1+\PCP$LNFD O*******************************************************************************)*‚SET�UP�DCB�FOR�1ST�PIA�(PORT�A)�PRINTERO******************************************************************************* �IFGE‚NUBRD1-1**ƒPIA�#1,�printer�port�A**--‚DATA�CONTROL�BLOCK‚--**K PRTDCB DVCODE,IOSID,IOSESS,$632,95,1,CNAME,0,$0007,$0033,PCP$ATW,\PCP$REC,%&‡\PCP$RSZ,\PCP$WTO,\PCP$LRL,\PCP$ELC �IFNE�DVCODE-'PR‚'1DVCODE�SET�DVCODE+$100‚Set�up�for�next�printer�ID ENDC�IFEQ�DVCODE-'PR‚'DVCODE SET 'PR1 ' ENDC O*******************************************************************************)*‚SET�UP�CDB�FOR�1ST�PIA�(PORT�A)�PRINTERO**********************************************************************************‚CHANNEL�DATA�BLOCK‚***> CDB 0,CNAME,CHANTYPE,254,PIA,0,DEVADDR1,7,IOCVECT,IOCLVL,$10,&„0,0,0,0,0,0,0,0,0,0,0 ENDC  O*******************************************************************************)*‚SET�UP�DCB�FOR�1ST�PIA�(PORT�B)�PRINTERO*******************************************************************************�IFGE‚NUBRD1-2*ƒPIA�#1,�printer�port�B5CNAME„SET…('C'<<16)+(DVCODE>>8)‚channel�name�mnemonic**--‚DATA�CONTROL�BLOCK‚--**+ PGYBK PRTDCB DVCODE,IOSID,IOSESS,$632,95,1,CNAME,0,$0007,$0033,PCP$ATW,\PCP$REC,%&‡\PCP$RSZ,\PCP$WTO,\PCP$LRL,\PCP$ELC �IFNE�DVCODE-'PR‚'DVCODE SET DVCODE+$100 ENDC)�IFEQ�DVCODE-'PR‚'�SET�UP�NEXT�PRINTER�IDDVCODE SET 'PR1 ' ENDC ***‚CHANNEL�DATA�BLOCK‚***D CDB 0,CNAME,CHANTYPE,254,PIA,0,DEVADDR1+PORTB,7,IOCVECT,IOCLVL,$10,&„0,0,0,0,0,0,0,0,0,0,0 ENDC  �IFGE‚NOPIA-2O*******************************************************************************)*‚SET�UP�DCB�FOR�2ND�PIA�(PORT�A)�PRINTERO*******************************************************************************�IFGE‚NUBRD2-1*ƒPIA�#2,�printer�port�A5CNAME„SET…('C'<<16)+(DVCODE>>8)‚channel�name�mnemonic**--‚DATA�CONTROL�BLOCK‚--**K PRTDCB DVCODE,IOSID,IOSESS,$632,95,1,CNAME,0,$0007,$0033,PCP$ATW,\PCP$REC,%&‡\PCP$RSZ,\PCP$WTO,\PCP$LRL,\PCP$ELC �IFNE�DVCODE-'PR‚'1DVCODE�SET�DVCODE+$100‚SET�UP�FOR�NEXT�PRINTER�ID ENDC�IFEQ�DVCODE-'PR‚'DVCODE SET 'PR1 ' ENDC ***‚CHANNEL�DATA�BLOCK‚***> CDB 0,CNAME,CHANTYPE,254,PIA,0,DEVADDR2,7,IOCVECT,IOCLVL,$10,&„0,0,0,0,0,0,0,0,0,0,0 ENDC O*******************************************************************************)*‚SET�UP�DCB�FOR�2ND�PIA�(PORT�B)�PRINTERO*******************************************************************************�IFGE‚NUBRD2-2*ƒPIA�#2,�printer�port�B5CNAME„SET…('C'<<16)+(DVCODE>>8)‚channel�name�mnemonic**--‚DATA�CONTROL�BLOCK‚--**K PRTDCB DVCODE,IOSID,IOSESS,$632,95,1,CNAME,0,$0007,$0033,PCP$ATW,\PCP$REC,%&‡\PCP$RSZ,\PCP$WTO,\PCP$LRL,\PCP$ELC �IFNE�DVCODE-'PR‚'DVCODE SET DVCODE+$100 ENDC)�IFEQ�DVCODE-'PR‚'�SET�UP�NEXT�PRINTER�IDDVCODE SET 'PR1 ' ENDC ***‚CHANNEL�DATA�BLOCK‚***D CDB 0,CNAME,CHANTYPE,254,PIA,0,DEVADDR2+PORTB,7,IOCVECT,IOCLVL,$10,&„0,0,0,0,0,0,0,0,0,0,0 ENDC ENDC END**ˆIOC.RWINDRV.AG**‚Included�equate�files: *†&.IOE.EQ *†&.NIO.EQ* NOLIST‚INCLUDEƒ&.IOE.EQ‚INCLUDEƒ&.NIO.EQ LIST !*‚Included�device�specific�macros*†MACRO.DCB.SI*†MACRO.DCBDISK.SI* NOLIST‚INCLUDE�MACRO.DCB.SI‚INCLUDE�MACRO.DCBDISK.SI LIST  PAGE**‚Define�variables�using�SYSGEN�parameters*)RWIN…EQU�\RWINDRV‚address�of�RWIN1�driver)LWIN$01‚EQU�\LWIN$01‚RWIN1�bd.�#1�address)LWIN$02‚EQU�\LWIN$02‚RWIN1�bd.�#2�addressANHRWIN$1�EQU�\NHRWIN$1�#…hard�disks�on�1st�RWIN1�controller�boardENFRWIN$1 EQU \NFRWIN$1 # floppies disks on 1st RWIN1 controller boardANHRWIN$2�EQU�\NHRWIN$2�#…hard�disks�on�2nd�RWIN1�controller�boardENFRWIN$2 EQU \NFRWIN$2 # floppies disks on 2nd RWIN1 controller board  O********************************************************************************ƒSET�UP�DCB'S�FOR�RWIN1O******************************************************************************* *!*‚Set�up�DCB�parameters�for�RWIN1*‚(media�independent)* DEV_ATT‚SET‡$1FDEV_CODE�SET‡0DEV_STAT�SET‡4PAR_MASK�SET‡$1AF3 ECC_LEN‚SET‡0  F***********************************************************************&*ˆHARD�DISKS�ON�FIRST�RWIN1�CONTROLLER*F**********************************************************************CHAN_ID‚SET‡'WIN1'‰IFGE†NHRWIN$1-1F***********************************************************************+*ƒFirst�hard�disk�on�first�RWIN1�controller*F********************************************************************** DSKNM„SET‡'HD\CONTWIN1\ZERO'>SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\RWIN0$1,'H8WIN10'**‚8"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H8WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN0$1,'H5WIN05+ '**‚5�1/4"‚5‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN05.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN0$1,'H5WIN10'**‚5�1/4"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN0$1,'H5WIN15'*aXjZrNzN‚QŠS’NšM*‚5�1/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN0$1,'H5WIN40'**‚5�1/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN40.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*.*‚Set�up�attribute�mask�for�hard�disk�on�RWIN1*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\RWIN1$1,'H8WIN10'**‚8"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H8WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN1$1,'H5WIN05'**‚5�1/4"‚5‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN05.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN1$1,'H5WIN10'**‚5�1/4"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN1$1,'H5WIN15'**‚5�1/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN1$1,'H5WIN40'**‚5�1/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN40.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*.*‚Set�up�attribute�mask�for�hard�disk�on�RWIN1*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\RWIN2$1,'F8DDDSI'*-*‚8"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN2$1,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN2$1,'F8SDSSI'*-*‚8"‚single�density,�single�sided,�IBM�format*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN2$1,'F8SDSSM'*2*‚8"‚single�density,�single�sided,�Motorola�format*“INCLUDE„&, .F8SDSSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN2$1,'F5DDDSI'*1*‚5�1/4"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*,*‚Set�up�attributes�mask�for�floppy�on�RWIN1*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\RWIN3$1,'F8DDDSI'*-*‚8"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN3$1,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN3$1,'F8SDSSI'*-*‚8"‚single�density,�single�sided,�IBM�format*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN3$1,'F8SDSSM'*2*‚8"‚single�density,�single�sided,�Motorola�format*“INCLUDE„&.F8SDSSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN3$1,'F5DDDSI'*1*‚5�1/4"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*,*‚Set�up�attributes�mask�for�floppy�on�RWIN1*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\RWIN0$2,'H8WIN10'**‚8"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H8WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN0$2,'H5WIN05'**‚5�1/4"‚5‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN05.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN0$2,'H5WIN10'**‚5�1/4"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN0$2,'H5WIN15'**‚5�1/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN0$2,'H5WIN40'*, *‚5�1/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN40.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*.*‚Set�up�attribute�mask�for�hard�disk�on�RWIN1*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\RWIN1$2,'H8WIN10'**‚8"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H8WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN1$2,'H5WIN05'**‚5�1/4"‚5‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN05.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN1$2,'H5WIN10'**‚5�1/4"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN1$2,'H5WIN15'**‚5�1/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN1$2,'H5WIN40'**‚5�1/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN40.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*.*‚Set�up�attribute�mask�for�hard�disk�on�RWIN1*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\RWIN2$2,'F8DDDSI'*-*‚8"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN2$2,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN2$2,'F8SDSSI'*-*‚8"‚single�density,�single�sided,�IBM�format*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN2$2,'F8SDSSM'*2*‚8"‚single�density,�single�sided,�Motorola�format*“INCLUDE„&.F8SDSSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN2$2,'F5DDDSI'*1*‚5�1/4"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*,*‚Set�up�attributes�mask�for�floppy�on�RWIN1*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\RWIN3$2,'F8DDDSI'*-*‚8"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN3$2,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN3$2,'F8SDSSI'*-*‚8"‚single�density,�single�sided,�IBM�format*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN3$2,'F8SDSSM'*2*‚8"‚single�density,�single�sided,�Motorola�format*“INCLUDE„&.F8SDSSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\RWIN3$2,'F5DDDSI'*1*‚5�1/4"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*,*‚Set�up�attributes�mask�for�floppy�on�RWIN1*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFGE†NHV21$1-1F***********************************************************************)*ƒFirst�hard�disk�on�first�UDC�controller*F********************************************************************** ‰IFC‡\VM210$1,'FXCMD16'**‚CMDƒ16‚megabyte‚hard‚disk*“INCLUDEƒ&.FXCMD16.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM210$1,'FXCMD80'*¯X¸VÀOÈRÐFØMàOèPðRøQEL. *‚CMDƒ80‚megabyte‚hard‚disk*“INCLUDEƒ&.FXCMD80.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM210$1,'FXLRK08'**‚LARK‚8‚megabyte‚hard‚disk*“INCLUDEƒ&.FXLRK08.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM210$1,'FXLRK25'**‚LARK‚25‚megabyte‚hard‚disk*“INCLUDEƒ&.FXLRK25.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*,*‚Set�up�attribute�mask�for�hard�disk�on�UDC*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\VM211$1,'RMCMD16'**‚CMDƒ16‚megabyte‚hard‚disk*“INCLUDEƒ&.RMCMD16.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM211$1,'RMLRK08'**‚LARK‚8‚megabyte‚hard‚disk*“INCLUDEƒ&.RMLRK08.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM211$1,'RMLRK25'**‚LARK‚25‚megabyte‚hard‚disk*“INCLUDEƒ&.RMLRK25.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*,*‚Set�up�attribute�mask�for�hard�disk�on�UDC*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\VM212$1,'FXCMD16'**‚CMDƒ16‚megabyte‚hard‚disk*“INCLUDEƒ&.FXCMD16.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM212$1,'FXCMD80'**‚CMDƒ80‚megabyte‚hard‚disk*“INCLUDEƒ&.FXCMD80.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM212$1,'FXLRK08'**‚LARK‚8‚megabyte‚hard‚disk*“INCLUDEƒ&.FXLRK08.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM212$1,'FXLRK25'**‚LARK‚25‚megabyte‚hard‚disk*“INCLUDEƒ&.FXLRK25.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*,*‚Set�up�attribute�mask�for�hard�disk�on�UDC*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\VM213$1,'RMCMD16'**‚CMDƒ16‚megabyte‚hard‚disk*“INCLUDEƒ&.RMCMD16.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM213$1,'RMLRK08'**‚LARK‚8‚megabyte‚hard‚disk*“INCLUDEƒ&.RMLRK08.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM213$1,'RMLRK25'**‚LARK‚25‚megabyte‚hard‚disk*“INCLUDEƒ&.RMLRK25.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*,*‚Set�up�attribute�mask�for�hard�disk�on�UDC*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFGE†NFV21$1-1;************************************************************+*‚First�floppy�disk�on�first�UDC�controller*;*********************************************************** ‰IFC‡\VM214$1,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM214$1,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC***‚Set�up�attributes�mask�for�floppy�on�UDC*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\VM215$1,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM215$1,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC***‚Set�up�attributes�mask�for�floppy�on�UDC*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\VM216$1,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM216$1,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC***‚Set�up�attributes�mask�for�floppy�on�UDC*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\VM217$1,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM217$1,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC***‚Set�up�attributes�mask�for�floppy�on�UDC*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFGE†NHV21$2-1F*************************************************************************ƒFirst�hard�disk�on�second�UDC�controller*F********************************************************************** ‰IFC‡\VM210$2,'FXCMD16'**‚CMDƒ16‚megabyte‚hard‚disk*“INCLUDEƒ&.FXCMD16.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM210$2,'FXCMD80'**‚CMDƒ80‚megabyte‚hard‚disk*“INCLUDEƒ&.FXCMD80.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM210$2,'FXLRK08'**‚LARK‚8‚megabyte‚hard‚disk*“INCLUDEƒ&.FXLRK08.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM210$2,'FXLRK25'*/ *‚LARK‚25‚megabyte‚hard‚disk*“INCLUDEƒ&.FXLRK25.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*,*‚Set�up�attribute�mask�for�hard�disk�on�UDC*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\VM211$2,'RMCMD16'**‚CMDƒ16‚megabyte‚hard‚disk*“INCLUDEƒ&.RMCMD16.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM211$2,'RMLRK08'**‚LARK‚8‚megabyte‚hard‚disk*“INCLUDEƒ&.RMLRK08.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM211$2,'RMLRK25'**‚LARK‚25‚megabyte‚hard‚disk*“INCLUDEƒ&.RMLRK25.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*,*‚Set�up�attribute�mask�for�hard�disk�on�UDC*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\VM212$2,'FXCMD16'**‚CMDƒ16‚megabyte‚hard‚disk*“INCLUDEƒ&.FXCMD16.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM212$2,'FXCMD80'**‚CMDƒ80‚megabyte‚hard‚disk*“INCLUDEƒ&.FXCMD80.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM212$2,'FXLRK08'**‚LARK‚8‚megabyte‚hard‚disk*“INCLUDEƒ&.FXLRK08.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM212$2,'FXLRK25'**‚LARK‚25‚megabyte‚hard‚disk*“INCLUDEƒ&.FXLRK25.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*,*‚Set�up�attribute�mask�for�hard�disk�on�UDC*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\VM213$2,'RMCMD16'**‚CMDƒ16‚megabyte‚hard‚disk*0 “INCLUDEƒ&.RMCMD16.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM213$2,'RMLRK08'**‚LARK‚8‚megabyte‚hard‚disk*“INCLUDEƒ&.RMLRK08.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM213$2,'RMLRK25'**‚LARK‚25‚megabyte‚hard‚disk*“INCLUDEƒ&.RMLRK25.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*,*‚Set�up�attribute�mask�for�hard�disk�on�UDC*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFGE†NFV21$2-1;************************************************************,*‚First�floppy�disk�on�second�UDC�controller*;*********************************************************** ‰IFC‡\VM214$2,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM214$2,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC***‚Set�up�attributes�mask�for�floppy�on�UDC*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\VM215$2,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM215$2,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC***‚Set�up�attributes�mask�for�floppy�on�UDC*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\VM216$2,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM216$2,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC***‚Set�up�attributes�mask�for�floppy�on�UDC*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\VM217$2,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM217$2,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC***‚Set�up�attributes�mask�for�floppy�on�UDC*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\VM220$1,'FXCMD16'**‚CMD�16‚megabyte‚hard‚disk*“INCLUDEƒ&.FXCMD16.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM220$1,'FXCMD80'**‚CMD�80‚megabyte‚hard‚disk*“INCLUDEƒ&.FXCMD80.SI SIZESET‚SET‡1‰ENDCV!R)P1Y9KAQIVQTYPaOi ‰IFC‡\VM220$1,'FXLRK08'**‚LARK�08‚megabyte‚hard‚disk*“INCLUDEƒ&.FXLRK08.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM220$1,'FXLRK25'**‚LARK�25‚megabyte‚hard‚disk*“INCLUDEƒ&.FXLRK25.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*-*‚Set�up�attribute�mask�for�hard�disk�on�VM22*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\VM221$1,'RMCMD16'**‚CMD�16‚megabyte‚hard‚disk*“INCLUDEƒ&.RMCMD16.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM221$1,'RMLRK08'**‚LARK�08‚megabyte‚hard‚disk*“INCLUDEƒ&.RMLRK08.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM221$1,'RMLRK25'**‚LARK�25‚megabyte‚hard‚disk*“INCLUDEƒ&.RMLRK25.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*-*‚Set�up�attribute�mask�for�hard�disk�on�VM21 2*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\VM222$1,'FXCMD16'**‚CMD�16‚megabyte‚hard‚disk*“INCLUDEƒ&.FXCMD16.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM222$1,'FXCMD80'**‚CMD�80‚megabyte‚hard‚disk*“INCLUDEƒ&.FXCMD80.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM222$1,'FXLRK08'**‚LARK�08‚megabyte‚hard‚disk*“INCLUDEƒ&.FXLRK08.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM222$1,'FXLRK25'**‚LARK�25‚megabyte‚hard‚disk*“INCLUDEƒ&.FXLRK25.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*-*‚Set�up�attribute�mask�for�hard�disk�on�VM22*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\VM223$1,'RMCMD16'**‚CMD�16‚megabyte‚hard‚disk*“INCLUDEƒ&.RMCMD16.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM223$1,'RMLRK08'**‚LARK�08‚megabyte‚hard‚disk*“INCLUDEƒ&.RMLRK08.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM223$1,'RMLRK25'**‚LARK�25‚megabyte‚hard‚disk*“INCLUDEƒ&.RMLRK25.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*-*‚Set�up�attribute�mask�for�hard�disk�on�VM22*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\VM224$1,'FXCMD16'**‚CMD�16‚megabyte‚hard‚disk*“INCLUDEƒ&.FXCMD16.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM224$1,'FXCMD80'**‚CMD�80‚megabyte‚hard‚disk*“INCLUDEƒ&.FXCMD80.SI SIZESET‚SET‡12 ‰ENDC‰IFC‡\VM224$1,'FXLRK08'**‚LARK�08‚megabyte‚hard‚disk*“INCLUDEƒ&.FXLRK08.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM224$1,'FXLRK25'**‚LARK�25‚megabyte‚hard‚disk*“INCLUDEƒ&.FXLRK25.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*-*‚Set�up�attribute�mask�for�hard�disk�on�VM22*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\VM225$1,'RMCMD16'**‚CMD�16‚megabyte‚hard‚disk*“INCLUDEƒ&.RMCMD16.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM225$1,'RMLRK08'**‚LARK�08‚megabyte‚hard‚disk*“INCLUDEƒ&.RMLRK08.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM225$1,'RMLRK25'**‚LARK�25‚megabyte‚hard‚disk*“INCLUDEƒ&.RMLRK25.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*-*‚Set�up�attribute�mask�for�hard�disk�on�VM22*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\VM226$1,'FXCMD16'**‚CMD�16‚megabyte‚hard‚disk*“INCLUDEƒ&.FXCMD16.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM226$1,'FXCMD80'**‚CMD�80‚megabyte‚hard‚disk*“INCLUDEƒ&.FXCMD80.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM226$1,'FXLRK08'**‚LARK�08‚megabyte‚hard‚disk*“INCLUDEƒ&.FXLRK08.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM226$1,'FXLRK25'**‚LARK�25‚megabyte‚hard‚disk*“INCLUDEƒ&.FXLRK25.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*-*‚Set�up�attribute�mask�for�hard�disk�on�VM22*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\VM227$1,'RMCMD16'**‚CMD�16‚megabyte‚hard‚disk*“INCLUDEƒ&.RMCMD16.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM227$1,'RMLRK08'**‚LARK�08‚megabyte‚hard‚disk*“INCLUDEƒ&.RMLRK08.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM227$1,'RMLRK25'**‚LARK�25‚megabyte‚hard‚disk*“INCLUDEƒ&.RMLRK25.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*-*‚Set�up�attribute�mask�for�hard�disk�on�VM22*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\VM228$1,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM228$1,'F8SDSSM'*2*‚8"‚single�density,�single�sided,�Motorola�format*“INCLUDE„&.F8SDSSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM228$1,'F8DDDSI'*-*‚8"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM228$1,'F8SDSSI'*-*‚8"‚single�density,�single�sided,�IBM�format*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM228$1,'F5DDDSI'*1*‚5�1/4"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*+*‚Set�up�attributes�mask�for�floppy�on�VM22*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\VM229$1,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM229$1,'F8SDSSM'*2*‚8"‚single�density,�single�sided,�Motorola�format*“INCLUDE„&.F8SDSSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM229$1,'F8DDDSI'*-*‚8"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM229$1,'F8SDSSI'*-*‚8"‚single�density,�single�sided,�IBM�format*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM229$1,'F5DDDSI'*13 *‚5�1/4"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*+*‚Set�up�attributes�mask�for�floppy�on�VM22*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\VM22A$1,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM22A$1,'F8SDSSM'*2*‚8"‚single�density,�single�sided,�Motorola�format*“INCLUDE„&.F8SDSSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM22A$1,'F8DDDSI'*-*‚8"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM22A$1,'F8SDSSI'*-*‚8"‚single�density,�single�sided,�IBM�format*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM22A$1,'F5DDDSI'*1*‚5�1/4"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*+*‚Set�up�attributes�mask�for�floppy�on�VM22*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\VM22B$1,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM22B$1,'F8SDSSM'*2*‚8"‚single�density,�single�sided,�Motorola�format*“INCLUDE„&.F8SDSSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM22B$1,'F8DDDSI'*-*‚8"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM22B$1,'F8SDSSI'*-*‚8"‚single�density,�single�sided,�IBM�format*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\VM22B$1,'F5DDDSI'*1*‚5�1/4"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*+*‚Set�up�attributes�mask�for�floppy�on�VM22*9ATT_MASK�SET‚1<‰DC.L†0,0,0,0ƒBUFFER�ZONE�BETWEEN�DEVICE�INDEPENDENT/DEPENDENT)‰DC.B†IOSTLN„SPACE�FOR�CONFIGURATION�INFO‰DCB.B…DCBLEN-(*-LLUN),0 (DCBEND�EQU�*-1…End�address�of�DCB�space.IOCOME�EQU�*‡End�of�IOC�commonA*ƒ{No�longer�forces�to�next�page�boundary�(was�IOCOML)�-�8/03/84} SPC 3�SECTION�1‚===�CDB�SECTION�=== ) DC.L 0 Link of 0 marks end of CDB chain.  ENDééš9**ˆIOC.PV01DRV.AG**‚Included�equate�files: *‰&.IOE.EQ *‰&.NIO.EQ*ŠNOLISTŠINCLUDE�&.IOE.EQŠINCLUDE�&.NIO.EQŠLIST !*‚Included�device�specific�macros*‰MACRO.DCB.SI*‰MACRO.DCBPRT.SI*ŠNOLISTŠINCLUDE�MACRO.DCB.SIŠINCLUDE�MACRO.DCBPRT.SIŠLIST ŠPAGE&*‚Assign�values�from�SYSGEN�parameters*.DVCODEƒSET�\&PRTDV„Define�starting�device�code;LPDA$01‚EQU�\LPDA$01ƒDefine�local�printer�device�address�#1;LPDA$02‚EQU�\LPDA$02ƒDefine�local�printer�device�address�#2=PRTV01ƒEQU�\PV01DRVƒDefine�the�physical�address�of�the�driver 0CNAME„SET…'CPR'+DVCODE&$FF‚channel�name�mnemonicE*ƒNOTE:‚Use�of�CNAME�guarantees�that�the�ASCII�printer�DCB�identifier>*Š(PR‚,PR1�,�etc)�will�always�correspond�with�the�channel�name*Šmnemonic�(CPR�,CPR1,�etc.). O*******************************************************************************7*‚SET�UP�DCB'S�&�CDB'S�FOR�REMOTE�PRINTERS‚-‚VM01�boardO******************************************************************************* /* Define PCP$ATW one time here for all printers.PCP$ATW‚SET…\PCP$TLRL<<2+\PCP$AFF<<1+\PCP$LNFD *ƒVM01�Board.�printer�port�#1**--‚DATA�CONTROL�BLOCK‚--*K PRTDCB DVCODE,IOSID,IOSESS,$632,95,1,CNAME,0,$0007,$0033,PCP$ATW,\PCP$REC,%&‡\P5 CP$RSZ,\PCP$WTO,\PCP$LRL,\PCP$ELC�IFNE�DVCODE-'PR‚'1DVCODE�SET�DVCODE+$100‚SET�UP�FOR�NEXT�PRINTER�ID ENDC�IFEQ�DVCODE-'PR‚'DVCODE SET 'PR1 ' ENDC ***‚CHANNEL�DATA�BLOCK‚***7 CDB 0,CNAME,XTPVM1,254,PRTV01,0,LPDA$01,$10,$1E,6,$10,&„0,0,0,0,0,0,0,0,0,0,0    IFGE \NOLPRT-2**ƒVM01�Board.�printer�port�#2* 0CNAME„SET…'CPR'+DVCODE&$FF‚channel�name�mnemonic *--‚DATA�CONTROL�BLOCK‚--*K PRTDCB DVCODE,IOSID,IOSESS,$632,95,1,CNAME,0,$0007,$0033,PCP$ATW,\PCP$REC,%&‡\PCP$RSZ,\PCP$WTO,\PCP$LRL,\PCP$ELC�IFNE�DVCODE-'PR‚'1DVCODE�SET�DVCODE+$100‚SET�UP�FOR�NEXT�PRINTER�ID ENDC�IFEQ�DVCODE-'PR‚'DVCODE SET 'PR1 ' ENDC  ***‚CHANNEL�DATA�BLOCK‚***£N¬7 CDB 0,CNAME,XTPVM1,254,PRTV01,0,LPDA$02,$10,$1E,6,$10,&„0,0,0,0,0,0,0,0,0,0,0 ENDC  ENDééééééé**ˆIOC.TNTDRV.AG**‚Included�equate�files: *†&.IOE.EQ *†&.NIO.EQ*‰NOLIST‰INCLUDEƒ&.IOE.EQ‰INCLUDEƒ&.NIO.EQ‰LIST !*‚Included�device�specific�macros*†MACRO.DCB.SI*†MACRO.DCBTERM.SI*‰NOLIST‰INCLUDEƒMACRO.DCB.SI‰INCLUDEƒMACRO.DCBTERM.SI‰LIST PAGE 0* Define TCP$ATW one time here for all terminalsITCP$ATW‚SET‚\TCP$HCPY+\TCP$XCTL<<1+\TCP$BITS<<2+\TCP$STPB<<3+\TCP$USEP<<4GTCP$ATW‚SET‚TCP$ATW+\TCP$PRTY<<5+\TCP$ECHO<<6+\TCP$TAHD<<7+\TCP$TFUL<<8.SYSTEM.CI"�file.1*ƒ"+$NN"‚is�the�offset�to�the�1st�board�register.J*-------------------------------------------------------------------------I*------------------------------------------------------------------------CL400$01ƒ=�\IOCBASE+($0E0*\CMULT)+$0D�MVME400�bd.�#1,�port�A�address*©L400$01‚=�\L400$01CL400$02ƒ=�\IOCBASE+($0D0*\CMULT)+$0D�MVME400�bd.�#2,�port�A�address*©L400$02‚=�\L400$02J*-------------------------------------------------------------------------CL410$01ƒ=�\IOCBASE+($0F0*\CMULT)+$01�MVME410�bd.�#1,�port�A�address*©L410$01‚=�\L410$01CL410$02ƒ=�\IOCBASE+($090*\CMULT)+$01�MVME410�bd.�#2,�port�A�address*©L410$02‚=�\L410$02J*-------------------------------------------------------------------------IL420$01ƒ=�\IOCBASE+($078*\CMULT)+$01�MVME420�bd.�#1,�portƒaddress:�SASI�8*©L420$01‚=�\L420$01IL420$02ƒ=�\IOCBASE+($070*\CMULT)+$01�MVME420�bd.�#2,�portƒaddress:�SASI�5*©L420$02‚=�\L420$02J*-------------------------------------------------------------------------LL435$01ƒ=�\IOCBASE+($1E0*\CMULT)+$29�MVME435�bd.�#1,�port�A�address:�Magtape*©L435$01‚=�\L435$01CL435$02ƒ=�\IOCBASE+($1C0*\CMULT)+$29�MVME435�bd.�#2,�port�A�address*©L435$02‚=�\L435$02J*-------------------------------------------------------------------------Î+×=LRAD$01ƒ=�\IOCBASE+($700*\CMULT)+$01�RAD…bd.�#1,�portƒaddress*©LRAD$01‚=�\LRAD$01J*-------------------------------------------------------------------------=LRIO$01ƒ=�\IOCBASE+($010*\CMULT)+$01�RIO…bd.�#1,�portƒaddress*©LRIO$01‚=�\LRIO$01J*-----7 --------------------------------------------------------------------CL600$01ƒ=�\IOCBASE+($F00*\CMULT)+$1+$2�MVME600�bd.�#1,�portƒaddress*©L600$01‚=�\L600$01CL600$02ƒ=�\IOCBASE+($E00*\CMULT)+$1+$2�MVME600�bd.�#2,�portƒaddress*©L600$02‚=�\L600$02J*-------------------------------------------------------------------------AL605$01ƒ=�\IOCBASE+($B00*\CMULT)+$01�MVME605�bd.�#1,�portƒaddress*©L605$01‚=�\L605$01J*-------------------------------------------------------------------------@L610$01ƒ=�\IOCBASE+($002*\CMULT)+$1‚MVME610�bd.�#1,�portƒaddress*©L610$01‚=�\L610$01@L610$02ƒ=�\IOCBASE+($004*\CMULT)+$1‚MVME610�bd.�#2,�portƒaddress*©L610$02‚=�\L610$02J*-------------------------------------------------------------------------@L615$01ƒ=�\IOCBASE+($001*\CMULT)+$1‚MVME615�bd.�#1,�portƒaddress*©L615$01‚=�\L615$01J*-------------------------------------------------------------------------AL625$01ƒ=�\IOCBASE+($000*\CMULT)+$01�MVME625�bd.�#1,�portƒaddress*©L625$01‚=�\L625$01J*-------------------------------------------------------------------------?LWIN$01ƒ=�\IOCBASE+($068*\CMULT)+$03�RWIN1ƒbd.�#1,�portƒaddress*©LWIN$01‚=�\LWIN$01?LWIN$02ƒ=�\IOCBASE+($070*\CMULT)+$03�RWIN1ƒbd.�#2,�portƒaddress*©LWIN$02‚=�\LWIN$02J*-------------------------------------------------------------------------é'OSLIST BEGIN AGëë qqEND AGôôqqFHS SIýý qqFMS SI&qqIOS SI#qqTNTDRV SIqq**ˆOSLIST.BEGIN.AG* ‰XDEF†OSMTBL ‰XDEF†OSMEND*-*ˆTABLE�OF�OPERATING�SYSTEM�MODULE�TASK�NAMES**ƒIncluded�equate�files:*ˆINCLUDEƒ&.IOE.EQ*ˆINCLUDEƒ&.EXE.EQ*ˆINCLUDEƒ&.NIO.EQ*ˆINCLUDEƒ&.FME.EQ*ˆINCLUDEƒ&.FMI.EQ‰NOLIST‰INCLUDEƒ&.IOE.EQ‰INCLUDEƒ&.EXE.EQ‰INCLUDEƒ&.NIO.EQ‰INCLUDEƒ&.FME.EQ‰INCLUDEƒ&.FMI.EQ‰LIST SECTION 1‰PAGE*D*ˆThe�following�NOP�is�required�if�the�user�has�elected�to�eliminateA*ˆall�modules�from�OSLIST�such�that�it�becomes�a�null�file.�SinceC*ˆLINK�1.6�has�problem�with�linking�a�null�module�that�has�XREF�andC*ˆXDEF�references,�the�NOP�is�here�to�keep�this�module�from�being�a*ˆnull�module.*‰NOP‰PAGEOSMTBL:éé7 éééã!**ˆOSLIST.END.AG*OSMENDƒEQU…*“END�OF�TABLE ‰END‡OSMTBLéééééééì**ˆFHS*‰DC.B†$20‘STARTUP�VALUE)*§This�value�will�determine�(low�to�high)&*§the�order�a�task�is�to�be�started�by*§IOI‰DC.B†1“BIT�NUMBER&*§This�value,�if�present,�represents�a$*§bit�number�that�must�be�set�before$*§IOI�will�attempt�to�start�the�next'*§task.�This,�along�with�STARTUP�VALUE,(*§allows�the�coordination�of�bringing�up(*§system�tasks�at�boot�time�in�a�orderly$*§process.�The�offset�SVTSTCF�in�the%*§System�Value�Table�is�where�the�bit*§must�be�set.*%*¦IF�the�system�task�does�NOT�require'*¦boot�time�coordination�the�bit�number*¦must�be�set�to�$FF.*‰DC.L†FHSID�FHS�TASK�NAME‰DC.L†IOSESSŽSESSION* ‰DC.B†0“NO ‰DC.B†0•ASQ ‰DC.L†0˜WAS‰DC.L†0›REQUESTED‰DC.W†0*$‰DC.L†0,0,0,0�NO�DATA�SEGMENT�NEED8 ED*ééééõ! ‰XDEF†FMSDLEN**ˆFMS*‰DC.B†$10‘STARTUP�VALUE)*§This�value�will�determine�(low�to�high)&*§the�order�a�task�is�to�be�started�by*§IOI‰DC.B†2“BIT�NUMBER&*§This�value,�if�present,�represents�a$*§bit�number�that�must�be�set�before$*§IOI�will�attempt�to�start�the�next'*§task.�This,�along�with�STARTUP�VALUE,(*§allows�the�coordination�of�bringing�up(*§system�tasks�at�boot�time�in�a�orderly$*§process.�The�offset�SVTSTCF�in�the%*§System�Value�Table�is�where�the�bit*§must�be�set.*%*¦IF�the�system�task�does�NOT�require'*¦boot�time�coordination�the�bit�number*¦must�be�set�to�$FF.* ‰DC.L†FMSID�FMS�TASK�NAME‰DC.L†IOSESSŽSESSION* ‰DC.B†0“NO ‰DC.B†0•ASQ ‰DC.L†0˜WAS‰DC.L†0›REQUESTED‰DC.W†0**‰DC.W†SGOPPAŽOPTIONS-LOG.�ADDR=PHYS.�ADDR.‰DC.W†SGATRW+SGATSS‡ATTRIBUTES‰DC.L†FMSD�SEG.�NAME‰DC.L†0“LOGICAL�ADDRESSFMSDLEN‚DC.L†0“SEGMENT�LENGTH*ééééþ' ‰XDEF†OESIZE**ˆIOS*IOSXXX:‰DC.B†$30‘STARTUP�VALUE)*§This�value�will�determine�(low�to�high)&*§the�order�a�task�is�to�be�started�by*§IOI‰DC.B†0“BIT�NUMBER&*§This�value,�if�present,�represents�a$*§bit�number�that�must�be�set�before8 $*§IOI�will�attempt�to�start�the�next'*§task.�This,�along�with�STARTUP�VALUE,(*§allows�the�coordination�of�bringing�up(*§system�tasks�at�boot�time�in�a�orderly$*§process.�The�offset�SVTSTCF�in�the%*§System�Value�Table�is�where�the�bit*§must�be�set.*%*¦IF�the�system�task�does�NOT�require'*¦boot�time�coordination�the�bit�number*¦must�be�set�to�$FF.*‰DC.L†IOSID�IOS�TASK�NAME‰DC.L†IOSESSŽSESSION* ‰DC.B†0“NO ‰DC.B†0•ASQ ‰DC.L†0˜WAS‰DC.L†0›REQUESTED‰DC.W†0*$‰DC.L†0,0,0,0�NO�DATA�SEGMENT�NEEDED*OESIZEƒEQU‡*-IOSXXXéééé$ ACOPYRIGHT%%qqARESTRRGHTHH qq*%*ˆTRANSPARENT�NETWORK�TERMINAL�DRIVER*‰DC.B†$40‘STARTUP�VALUE)*§This�value�will�determine�(low�to�high)&*§the�order�a�task�is�to�be�started�by*§IOI‰DC.B†$FF‘BIT�NUMBER&*§This�value,�if�present,�represents�a$*§bit�number�that�must�be�set�before$*§IOI�will�attempt�to�start�the�next'*§task.�This,�along�with�STARTUP�VALUE,(*§allows�the�coordination�of�bringing�up(*§system�tasks�at�boot�time�in�a�orderly$*§process.�The�offset�SVTSTCF�in�the%*§System�Value�Table�is�where�the�bit*§must�be�set.*%*¦IF�the�system�task�does�NOT�require'*¦boot�time�coordination�the�bit�number*¦must�be�set�to�$FF.*‰DC.L†TNTID�TNT�TASK�NAME‰DC.L†IOSESSŽSESSION*‰DC.B†AQSTQE+AQSTRE‡ASQ�STATUS&‰DC.B†EVULEN+IOSNLN‡MAX�MESSAGE�LENGTH ‰DC.L†EVULEN+IOSNLN‡QUEUE�LENGTH‰DC.L†\TNTASR�ADDRESS�OF�ASR‰DC.W†0*$‰DC.L†0,0,0,0�NO�DATA�SEGMENT�NEEDED9 éééé /(C) 1985,1984,1983,1982,1981,1980 Motorola Inc. 5Copyright 1985,1984,1983,1982,1981,1980 Motorola Inc.ééééééé'NOTNT ASR AG22 qq9 **ˆNOTNT.ASR.AG*)ASR‡IDNTƒ11,11ŽASR�ADDRS.�FOR�I/O�MODULES*8*ASR-FILE OF ASR ADDRESSES OF I/O MODULES-NEEDED FOR IOI*ŠXDEFƒFMSASR,FHSASR,IOSASRFMSASR„EQU„\FMSASRFHSASR„EQU„\FHSASRIOSASR„EQU„\IOSASRŠENDééééééé* 'VME12X INITIO1 AG??4§qqSYSINIT LG��qqMTYPE SIŠŠ qqB*‰INCLUDE�BOARD.EQƒThis�will�either�be�in�catalog�VME120�or�VME128AŠINCLUDE�BOARD.EQƒThis�will�either�be�in�catalog�VME120�or�VME128ŠIFEQ†BOARDTYPE-1286INITIO„IDNTƒ5,1�RMS68K�I/O�initializer�for�the�VME128.ŠENDCŠIFEQ†BOARDTYPE-1206INITIO„IDN: Tƒ5,1�RMS68K�I/O�initializer�for�the�VME120.ŠENDCO*v*****************************************************************************O*******************************************************************************O**********************************************************************************É***D***…ROUTINE:‚INITIO�--�RMS68K�I/O�INITIALIZER�FOR�THE�VME120/128‡******É***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*…--------‚------‚-------------------------------------------------------8*†1/28/85ƒSJF„Changed�MMU�initialization�to�look�at�\MMU*†2/�1/84ƒMSL„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:)ŠXREFƒKILLER�Routine�to�crash�the�system. *…Parameters�from�INITDAT:-ŠXREFƒTIMSLICŒ#�of�timer�tics�per�time�slice.+ŠXREFƒTIMERA�Addr�of�timer�chip�(MC146818).ŠXREFƒTIMINTVAŠXREFƒCLOCKFRQ77IGQBYCaCi@q"  ‰RESTRICTED�RIGHTS�LEGEND&Use, duplication, or disclosure by the%Government is subject to restrictions&as set forth in paragraph (b)(3)(B) of)the Rights in Technical Data and Computer"Software clause in DAR 7-104.9(a). %MOTOROLA SEMICONDUCTOR PRODUCTS, INC.P.O. Box 2953, Mail Drop Z327Phoenix, Arizona 85062éééééé: @  *…SYSPAR�variables: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.3ŠXREF.S�TIMINTRŒUsec�remainder�for�odd�clock�rates.7ŠXREF.S�TIMINTVŒTime�interval�between�timer�interrupts..ŠXREF.S�PTMADDRŒAddr�of�timer�chip�(MC146818). *„Others:.ŠXREFƒCRASHSAV‹Place�to�SAVE�info�if�we�CRASH.   **‚Included�files:**‰&.UTILITY.MC*‰M68451.M68451.EQ*‰MK68901.MK68901.EQ*ŠNOLISTŠINCLUDE�&.UTILITY.MCŠINCLUDE�M68451.M68451.EQŠINCLUDE�MK68901.MK68901.EQŠLISTŠPAGEO*v*****************************************************************************O**********************************************************************************É***6***…ROUTINE:‚INITMMU�--�INITIALIZE�THE�M68451�MMU.•******É***I***…FUNCTION:‚If�we�are�supposed�to�have�an�MMU,�verify�its�existence‚******‡and�initialize�it.°******É******…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�an�MMU, +ŠSAVEƒD0/A0ŽSave�registers�we'll�blow�away. 3ŠLEA„$F60000,A0‰A0�<--�address�where�MMU�should�be.%ŠMOVE.L�A0,MMUHERE‰Save�it�in�SYSPAR. *%*‚Set�up�the�other�SYSPAR�parameters.*8‹MOVE.L�A0,FRST451‰Our�only�68451�is�obviously�the�first9‹MOVE.L�A0,LAST451‰68451,�the�last�68451,�and�the�current‹MOVE.L�A0,CURR451‰68451.7‹MOVE.L�#1,CURRSDŠThe�current�segment�descriptor�is�#1. *@*‚Clear�all�segment�descriptors�except�the�one�we're�using�(#0).*5‹PEA„KILLERŒSet�up�for�us�to�go�to�KILLER�if�we�get�a‹PUSHƒ#'BE'Žbus�error.<‹FOR„D0�=�#1�TO�#31�DO…For�segment�descriptors�1�through�31,*ŽMOVE.B�D0,DP(A0)Š.‚Select�the�descriptor.7ŽMOVE.B�#0,SSR(A0)‰.‚Initialize�it�so�it�won't�be�used.‹ENDF2‹ADD.L‚#6,SPŽGet�the�bus�error�junk�off�the�stack. **‚Exit.*!ŠRESTORE�D0/A0�Restore�registers. ŠENDC ŠRTS—Return. ŠPAGEO*********************************************************************************ˆSTART�TIMER„(146818�TIMER)* TIMERST:EŠMOVE.L�TIMSLIC(PC),TIMESLIC�#�TIMER�INTERRUPTS�BEFORE�TASK�INTERRUPT;ŠMOVE.L�TIMERA(PC),A1†GET�TIMER�ADDRESS�(MFP�BASE�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*ŠMOVE.L�#0,DATEŒDate�<--�0./ŠMOVE.W�#10,TIMINTVˆNumber�of�ms�per�clock�tick*B*‚Now�we�must�initialize�the�Multi-function�peripheral�(MPF)�chip.B*‚Although�we�are�not�intending�to�use�all�of�the�functionality�ofC*‚the�MFP�(ex.�serial�port),�we�will�go�ahead�and�initialize�all�of-*‚the�functions�on�the�chip,�just�to�be�safe.* *-*‚First,�disable�all�interrupts�from�the�MFP.* 6ŠCLR.B‚MFP_IERA(A1)‡Clear�interrupt�enable�register�A.6ŠCLR.B‚MFP_IERB(A1)‡Clear�interrupt�enable�register�B. *C*‚Now,�initialize�the�serial�port,�even�though�we�do�not�anticipate *‚using�it.*B*‚(NOTE:‚WE�WILL�LEAVE�IT�AS�IT�WAS�SO�WE�CAN�USE�THE�BUG�FROM; �THE*ŠONBOARD�SERIAL�PORT.) 6*‰CLR.B‚MFP_SCR(A1)ˆClear�the�sync�character�register.5*‰CLR.B‚MFP_UCR(A1)ˆReset�the�USART�control�register. 7*‰CLR.B‚MFP_RSR(A1)ˆReset�the�receiver�status�register.6*‰TST.B‚MFP_RSR(A1)ˆRead�the�receiver�status�register. 7*‰CLR.B‚MFP_TSR(A1)ˆReset�the�transmit�status�register.6*‰TST.B‚MFP_TSR(A1)ˆRead�the�transmit�status�register. 2*‰CLR.B‚MFP_UDR(A1)ˆClear�the�USART�data�register.   *$*‚Now,�intiialize�the�parallel�port.* 1ŠCLR.B‚MFP_GPIP(A1)‡Clear�the�GPIP�data�register.=ŠMOVE.B�#$07,MFP_AER(A1)ƒInitialize�the�active�edge�resister.=ŠCLR.B‚MFP_DDR(A1)ˆSet�the�data�direction�register�to�inputs.   *I*‚Now,�initialize�the�four�timers�on�the�MFP.‚(We�will�only�use�timer�A.)* 1ŠMOVE.B�#$10,MFP_TACR(A1)‚Reset�and�stop�timer�A.1ŠMOVE.B�#$10,MFP_TBCR(A1)‚Reset�and�stop�timer�B. **‰CLR.B‚MFP_TCDCR(A1)†Stop�timers�C�and�D.AŠANDI.B�#$F0,MFP_TCDCR(A1)�(Stop�timer�D.‚Leave�timer�C�as�is�for *£the�BUG.) *>>>>>><ŠMOVE.L�#CLOCKFRQ,D0‡Clock�frequency�in�Hz�(SUBed�in�sysgen)K* IF D0 = 0, 10,000,000, OR 12,500,000 (Hz) then read clock rate from board)*ƒelse�use�clock�rate�defined�in�CLOCKFRQŠBEQ.S‚TSTRATEŠCMP.L‚#10000000,D0ŠBEQ.S‚TSTRATEŠCMP.L‚#12500000,D0ŠBNE.S‚RATESET TSTRATEƒTEST_CLOCK_RATEŠIF��THEN.SŒMOVE.L�#10000000,D0‚10MHz�rateŠELSE.S!ŒMOVE.L�#12500000,D0‚12.5MHz�rateŠENDI 1RATESETƒLSR.L‚#2,D0ŽDiv�by�4�for�clock�input�freq ŠMOVE.L�D0,D1=* Compute desired count down value according to the following*ƒformula:‚CD�=�TI/(PS*TO)*‰CD…=�Count�down�value*‰TI…=�Timer�input�frequency*‰PS…=�Prescalar�value)*‰TO…=�Desired�timer�output�time�interval<* For the VME12x operating at 12.5 MHz we have the following(*ƒTI�=�12.5�MHz/4�=�3.125�MHz�or�3125000 *ƒPS�=�200#*ƒTO�=�100�Hz�(One�tick�every�10ms)B* With these variable values the calculated CD is 157 (rounded up)7* For 10MHz the computed count down value would be 10msŠDIVUƒ#200*100,D0ˆDiv�by�PS*TOŠIF.LƒD0��#$0000FFFF�THEN.S"�ADD.Wƒ#1,D0ŠRound�up�if�remainderŠENDI>ŠAND.L‚#$0000FFFF,D0†Mask�off�remainder,�only�quotient�remains;ŠMOVE.B�D0,MFP_TADR(A1)„Count�down�value�(Timer�A�register)5* Now calculate the actual timer output interval via:*ƒCO�=�(1000*PS*CD)/TID*ƒRemainder�will�be�the�fraction�of�a�millisecond�over�an�exact�10ms *…interval�that�we�actually�haveŠMULUƒ#200,D0ŒMultiply�by�PSŠMULUƒ#1000,D0‹*1000 ŠWHILE.L�D1��#$0000FFFF�DO.S.�LSR.Lƒ#1,D0ŠScale�dividend�and�divisor�so�...+�LSR.Lƒ#1,D1Š...�divisor�is�16�bits�or�lessŠENDW ŠDIVUƒD1,D0*ŠCLR.W‚D0‘Preserve�remainder�in�high�orderŠSWAPƒD0G* Now compute the number of usecs extra that we have in the actual time *ƒinterval.*ŠMULUƒ#1000,D0 ŠDIVUƒD1,D0!ŠMOVE.W�D0,TIMINTR„Usec�ramainder*>>>>>>0ŠCLR.B‚MFP_TBDR(A1)‡Reset�timer�B�data�register.1*‰CLR.B‚MFP_TCDR(A1)‡Reset�timer�C�data�register.0ŠCLR.B‚MFP_TDDR(A1)‡Reset�timer�D�data�register. >ŠMOVE.B�#$07,MFP_TACR(A1)‚Timer�A�control�reg�<==�delay_mode�+*´divide�by�200�prescaler.  *<*‚Now�initialize�the�programable�interrupt�controller�(PIC).* BŠMOVE.B�#$68,MFP_VR(A1)„Set�starting�vector�number�for�block�of�16-*£interrupt�vectors�to�$60.�Also�set�software*£interrupt�mode�(bit�3). 7ŠCLR.B‚MFP_IPRA(A1)‡Clear�interrupt�pending�register�A.7ŠCLR.B‚MFP_IPRB(A1)‡Clear�interrput�pending�register�B. 0ŠCLR.B‚MFP_ISRA(A1)‡Clear�in�service�register�A.0ŠCLR.B‚MFP_ISRB(A1)‡Clear�in�service�register�B. DŠMOVE.B�#$A0,MFP_IMRA(A1)‚Unmask�interrupts�from�ACFAIL�and�timer�A.6ŠCLR.B‚MFP_IMRB(A1)‡Mask�off�all�interrupts�from�IMRB. DŠMOVE.B�#$A0,MFP_IERA(A1)‚Enable�interrupts�from�ACFAIL�and�timer�A.1ŠMOVE.B�#$8E,MFP_IERB(A1)‚Enable�interrupts�from:*¦1.)‚MMUIRQ*.*¦2.)‚PARBAD*. *¦3.)‚BBERR. *¦4.)‚XERR.'*£(Note:‚If�we�enable�an�interrupt,�but"*«mask�it�off,�we�allow�the�PIC�to*«latch�the�interrupt�into�the!*«interrupt�pending�register,�but!*«not�to�interrupt�the; �CPU.‚If�we!*«enable�and�unmask�an�interrupt,*«then�we�latch�it�into�the!*«interrupt�pending�register,�and*«also�interrupt�the�CPU.   *.ŠADD.L‚#6,A7ŽREMOVE�'BE'�AND�BUS�ERROR�ADDRESSŠRTS—BACK�TO�INIT*ŠMOVE.L�#CREG,CTRLREG†Put�base�address�of�ctrl�regs�in�SYSPAR. ŠINIT_CREG CŠMOVE.L�CACHEF(PC),CFLUSH‚Move�address�of�cache�flush�variable�from*£INITDAT�area�to�SYSPAR�area. ŠTST.B‚F_ALLŽFlush�entire�cache.  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*********************************************************************** ŠENDéé< é=/*=/*†VME12X.SYSINIT.LG=/*K=/* Link chain file run at sysgen time to link SYSINIT.LO with a PREINIT.RO=/*D=/* Sysgen parameter LINKLS = \LINKLS = file/device to which to send=/* the linker listing=/*?=/* Sysgen parameter PC = \PC = address at which to link driver=/* =LINK ,SYSINIT.LO,\LINKLS;HAMIXSSEG .INT:8 \PCINPUT PREINIT.ROINPUT ROGEN.ROINPUT &.INITDAT.ROINPUT &.SYSPAR.ROEND=/*=ENDééééééyB* VME12X.MTYPE.SI - Memory type assignments for VME120/128 systems**‚System�memoryMTYPE$SRO‚EQU�MTYP1�read�onlyMTYPE$SRW‚EQU�MTYP1�read/write* *‚User�memoryMTYPE$URO‚EQU�MTYP1�read�onlyMTYPE$URW‚EQU�MTYP1�read/write**‚Partition�typesMTYPE$P0ƒEQU�MTYP0�partition�#0MTYPE$P1ƒEQU�MTYP1�partition�#1éééé< éé‚ 'TNT Œ'MMULDR ™'FHSIOS ¦'IOS ³'NOMMULDRÀ'SIO Í'MACRO â' ,'VM02 Œ'TNT ASR AG˜˜qq* *ˆTNT.ASR.AG*)ASR‡IDNTƒ11,11ŽASR�ADDRS.�FOR�I/O�MODULES*8*ASR-FILE OF ASR ADDRESSES OF I/O MODULES-NEEDED FOR IOI*ŠXDEFƒFMSASR,FHSASR,IOSASR ŠIFNEƒ\NOTNT �XDEFƒTNTASRŠENDCFMSASR„EQU„\FMSASRFHSASR„EQU„\FHSASRIOSASR„EQU„\IOSASR ŠIFNEƒ\NOTNTTNTASR‡EQU„\TNTASRŠENDCŠENDéééééé= �'MMULDR VERSADOSCI¥¥qq**ˆMMULDR.VERSADOS.CI*AMSG‰*************************************************************-MSG‰**ˆLDR�--�Loader�(trap�#4�server�task)Ž**AMSG‰*************************************************************TASKˆ&.LDR.LO,&LDRSTATE…=�'READ'ATTRIB„=�'CRIT'ATTRIB„=�'SYST'PRIORITY‚=�$C8 SESSIONƒ=�4LDRSTR„=�*ŒLDR�load�addr.SUBSˆMMU.LOADER.LGLINKˆMMU.LOADER.LG IFEQˆ\LINKLSWƒ=COPY‡\LINKLS,\WORKLS;AENDCEND‰LDR5* Build VERSAdos patch chain file .VERSAPT.CF!=COPY‡VERSAPT.LDR.CF,VERSAPT.CF;Aééééé�'FHSIOS VERSADOSCI²²5qq= **ˆFHSIOS.VERSADOS.CI*AMSG‰*************************************************************=MSG‰**ƒFHS�--�File�Handling�Services�(trap�#3�server�task)ƒ**AMSG‰*************************************************************TASKˆ&.FHS.LO,.FHSSTATE…=�'DORM'ATTRIB„=�'CRIT'ATTRIB„=�'RTIM'ATTRIB„=�'SYST' SESSIONƒ=�1PRIORITY‚=�$D1FHSSTR„=�*ŒFHS‚load�addr. FHSASR„=�*+2ŠFHS�ASR�entry�pointSUBSˆFHS.IXR.AG"ASM‰FHS.IXR.AG,FHS.IXR.RO,\ASMLS;R IFEQˆ\ASMLSWƒ=COPY‡\ASMLS,\WORKLS;AENDC SUBSˆ&.FHS.LG LINKˆ&.FHS.LG IFEQˆ\LINKLSWƒ=COPY‡\LINKLS,\WORKLS;AENDCEND‰FHS#*�Build�VERSAdos‚.OSLIST.AG=COPY‡OSLIST.FHS.SI,OSLIST.AG;A5* Build VERSAdos patch chain file .VERSAPT.CF!=COPY‡VERSAPT.FHS.CF,VERSAPT.CF;A MSG‰?MSG‰***********************************************************.OSLIST.AG=COPY‡OSLIST.IOS.SI,OSLIST.AG;A5* Build VERSAdos patch chain file .VERSAPT.CF!=COPY‡VERSAPT.IOS.CF,VERSAPT.CF;Aééª6'IOS VERSADOSCI¿¿qq**ˆIOS.VERSADOS.CI*?MSG‰*********************************************************** M'PRIORITY‚=�$D1 SESSIONƒ=�1IOSSTR„=�*ŒIOS�load�addr. IOSASR„=�*+2ŠIOS�ASR�entry�point SUBSˆ&.IOS.LG LINKˆ&.IOS.LG IFEQˆ\LINKLSWƒ=COPY‡\LINKLS,\WORKLS;AENDCEND‰IOS#*�Build�VERSAdos‚.OSLIST.AG=COPY‡IOS.OSLIST.SI,OSLIST.AG;A5* Build VERSAdos patch chain file .VERSAPT.CF!=COPY‡IOS.VERSAPT.CF,VERSAPT.CF;Aééééé·'NOMMULDRVERSADOSCIÌÌqq**ˆNOMMULDR.VERSADOS.CI*AMSG‰*************************************************************-MSG‰**ˆLDR�--�Loader�(trap�#4�server�task)Ž**AMSG‰*************************************************************TASKˆ&.LDR.LO,&LDRSTATE…=�'READ'ATTRIB„=�'CRIT'ATTRIB„=�'SYST'PRIORITY‚=�$C8 SESSIONƒ=�4LDRSTR„=�*ŒLDR�load�addr.SUBSˆNOMMU.LOADER.LGLINKˆNOMMU.LOADER.LG IFEQˆ\LINKLSWƒ=COPY‡\LINKLS,\WORKLS;AENDCEND‰LDR5* Build VERSAdos patch chain file .VERSAPT.CF!=COPY‡VERSAPT.LDR.CF,VERSAPT.CF;Aé> ééééÄ'SIO ADDRESS CIÙÙ Lqq**ˆSIO.ADDRESS.CI*N******************************************************************************6*‚Short�I/O�Address�Space�Offsets�for�Standard�SYSGENsN*******************************************************************************H*‚NOTE:‚1.�These�addresses�are�coded�into�many�of�the�firmware�debuggers9*Œso�the�bug�can�access�the�device.‚REQUIRED�FOR�BOOTING!***‚Symbol�format�is:„Lnnn$mm*„where:„L=�location:*Œnnn=�VME�board�number/description�or�Vnn�for�VERSAmodule*Ž$=�separator*�mm=�board�number�01-99**I*------------------------------------------------------------------------.L050$01ƒ=�\SIOBASE+$1000�VME050�bd.�#1�address*žL050$01‚=�\L050$01I*------------------------------------------------------------------------5L300$01ƒ=�\SIOBASE+$0400�VME300�bd.�#1�address‚(GPIB)*žL300$01‚=�\L300$015L300$02ƒ=�\SIOBASE+$0440�VME300�bd.�#2�address‚(GPIB)*žL300$02‚=�\L300$02I*------------------------------------------------------------------------.L315$01ƒ=�\SIOBASE+$0000�VME315�bd.�#1�address*žL315$01‚=�\L315$01.L315$02ƒ=�\SIOBASE+$0200�VME315�bd.�#2�address*žL315$02‚=�\L315$02I*------------------------------------------------------------------------.L320$01ƒ=�\SIOBASE+$B00D�VME320�bd.�#1�address*žL320$01‚=�\L320$01.L320$02ƒ=�\SIOBASE+$AC0D�VME320�bd.�#2�address*žL320$02‚=�\L320$02I*------------------------------------------------------------------------.L331$01ƒ=�\SIOBASE+$3000�VME331�bd.�#1�address*žL331$01‚=�\L331$01.L331$02ƒ=�\SIOBASE+$3100�VME331�bd.�#2�address*žL331$02‚=�\L331$02.L331$03ƒ=�\SIOBASE+$3200�VME331�bd.�#3�address*žL331$03‚=�\L331$03.L331$04ƒ=�\SIOBASE+$3300�VME331�bd.�#4�address*žL331$04‚=�\L331$04.L331$05ƒ=�\SIOBASE+$3400�VME331�bd.�#5�address*žL331$05‚=�\L331$05.L331? $06ƒ=�\SIOBASE+$3500�VME331�bd.�#6�address*žL331$06‚=�\L331$06I*------------------------------------------------------------------------.L333$01ƒ=�\SIOBASE+$3800�VME333�bd.�#1�address*žL333$01‚=�\L333$01Ñ4Ú.L333$02ƒ=�\SIOBASE+$3900�VME333�bd.�#2�address*žL333$02‚=�\L333$02.L333$03ƒ=�\SIOBASE+$3A00�VME333�bd.�#3�address*žL333$03‚=�\L333$03.L333$04ƒ=�\SIOBASE+$3B00�VME333�bd.�#4�address*žL333$04‚=�\L333$04.L333$05ƒ=�\SIOBASE+$3C00�VME333�bd.�#5�address*žL333$05‚=�\L333$05.L333$06ƒ=�\SIOBASE+$3D00�VME333�bd.�#6�address*žL333$06‚=�\L333$06I*------------------------------------------------------------------------3LV30$01ƒ=�\SIOBASE+$1000�VM30ƒbd.�#1�address‚(MCCM)*žLV30$01‚=�\LV30$013LV30$02ƒ=�\SIOBASE+$1200�VM30ƒbd.�#2�address‚(MCCM)*žLV30$02‚=�\LV30$023LV30$03ƒ=�\SIOBASE+$1400�VM30ƒbd.�#3�address‚(MCCM)*žLV30$03‚=�\LV30$033LV30$04ƒ=�\SIOBASE+$1600�VM30ƒbd.�#4�address‚(MCCM)*žLV30$04‚=�\LV30$04I*------------------------------------------------------------------------ H*�NOTE:‚VM20,�VM21,�and�VM22�are�defined�sequentially�by�offsets�of�$200C*ˆas�needed.‚They�must�not�be�assigned�absolute�offsets�because�theB*ˆdebugger�BO�cmd�assumes�a�boot�from�controller�0�at�offset�0�and?*ˆwe�have�hard�disk�(VM21)�and�floppy�only�(VM20)�type�systems.ééé'MACRO DCB SIîî RqqDCBDISK SIÿÿqqDCBGPIB SI QqqDCBMTAPESI$qqDCBPRT SI""qqDCBTERM SI++qqŠPAGEO********************************************************************************2*‚MACRO.DCB.SI‚--�DEFINES�BASIC�DCB�AND�CDB�MACROSF*†See�MACRO.DCB*.SI�for�specific�DCB�macros,�i.e.�DISK,TERM,GPIB,�etc.*C*‚SECTION�0ƒDCB�=�Device�Control�Block:‚contains�info�about�device,/*”including�default�configuration;�used�heavily*”by�FMS,�FHS,�IOS.G*‚SECTION�1ƒCDB�=�Channel�Data�Block:‚used�by�IOI�to�allocate�channels.*O********************************************************************? *********** G*‚DIPDCB�macro�defines�device-independent�portion�of�a�DCB.‚Used�by�the7*‚other�device�dependent�macros�DSKDCB,�CRTDCB,�PRTDCB.* DIPDCB MACRO.�DC.L„*+\1�Address�of�next�DCB�in�linked�list.+�DC.L„\2’ASCII�identification�for�this�DCB.�DC.L„0“Address�of�DCQ�entry.)�DC.L„\3’Name„of�task�making�the�request.,�DC.L„\4’Session�of�task�making�the�request.�DC.L„0“Address�of�LUT.;�DC.L„\5’Device�attributes�associated�with�DCB.�BKM�7/12/83!�DC.W„0“Write/Read�protect�codes.�DC.W„0“'Device�in�use'�flag.�DC.L„0“Write/Read�counts.#�DC.B„\6’Device�flag�(device�code).%�DC.B„\7’Device�flag�(device�status). �DC.L„\8’Channel�identification.3�DC.B„\9’Device�number�associated�with�the�channel.�DC.B„0“Task�priority.�DC.L„0“Current�record�#.7�DS.B„IOSBLNŽStorage�area�for�the�IOCB�being�processed.8�DC.L„0“Logical�address�of�IOCB�in�user's�address�space.6�DC.B„0“Config.�coordination�flag�(0�-->�at�defaults).�DC.B„0“Break�count.%�DC.L„0“Address�of�break�service�LUT.0�DC.L„0“Break�service�address.ƒ-----------------.�DC.L„0“Event�claimer�--�task�nameŒBKM�7/12/833�DC.L„0“Event�claimer�--�session�number‡BKM�7/12/839�DC.L„\A’Address�of�supervisor�DCB�or�Session‚BKM�7/12/830*œnumber�if�this�is�a�supervisor�DCB„BKM�7/12/839�DC.L„0“Supervisor/subordinate�DCB�open�count�BKM�7/12/836�DC.L„0,0,0,0�Device�independent/dependent�buffer�zone  ENDM PAGE*,*‚Macro�to�define�a�Channel�Data�Block�(CDB)7*‚Used�by�IOI�to�allocate�channels;�equates�are�in�LV5.*æ4ï/CDBLN�EQU�$2E„Length�of�the�CDB�data�structure. CDB MACRO�SECTION�1‡===�CDB�SECTION�===*�DC.L�*+CDBLN„Pointer�to�next�CDB�in�list.*�DC.W�\1‰Options�for�the�ALLOCATE�command.�DC.L�\2‰Channel�mnemonic.�DC.B�\3‰Channel�type.4�DC.B�\4‰Masked�interrupt�maximum�instruction�count.$�DC.L�\5‰Physical�address�of�driver.F�DC.L�\6‰Supervisor�channel's�mnemonic�(only�if�bit�3�of�options�set).?�DC.L�\7‰Physical�address�of�device�in�memory-mapped�I/O�space.?�DC.W�\8‰#�of�bytes�device�occupies�in�memory-mapped�I/O�space.�DC.B�\9‰Vector�number.�DC.B�\A‰Polling�priority.�DC.B�\B‰Software�priority.2�DC.B�\C‰Segment�count.(Number�of�polling�entries)(�DC.W�\D‰Polling�byte�offset.�--�[#1]�--�DC.B�\E‰Polling�mask.�DC.B�\F‰Polling�test�value.7�DC.W�\G‰Offset�from�physical�device�address�for�reset.�DC.B�\H‰Value�for�reset.�DC.B�0ŠReserved.(�DC.W�\I‰Polling�byte�offset.�--�[#2]�--�DC.B�\J‰Polling�mask.�DC.B�\K‰Polling�test�value.7�DC.W�\L‰Offset�from�physical�device�address�for�reset.�DC.B�\M‰Value�for�reset.�DC.B�0ŠReserved.  ENDMééé‰PAGE*!*‚Macro�to�define�DCB�for�a�Disk.* DSKDCB MACRO�SECTION�0‡===�DCB�SECTION�===( DIPDCB DDCBLN,\1,\2,\3,\4,\5,\6,\7,\8,0&�DC.B„0,0,0,0ƒSpace�for�status�fields.�DC.W„\9†Attributes�mask.�DC.W„\A†Parameters�mask.�DC.W„\B†Attribute@ s�word.�DC.W„\C†#�of�bytes/sector.-�DC.L„\D†Total�#�of�sectors�--�returned�info.�DC.L„\E†Write�timeout.�DC.L„\F†Read‚timeout.�DC.B„\G†#�of�sectors/track.�DC.B„\H†#�of�heads.!�DC.W„\I†#�of�cylinders�on�media.�DC.B„\J†Interleave�factor.$�DC.B„\K†Spiral�offset�(in�sectors).'�DC.W„\L†Physical�sector�size�of�media.'�DC.W„\M†Starting�head�number�on�drive.&�DC.W„\N†Number�of�cylinders�on�drive.)�DC.W„\O†Precompensation�cylinder�number.-�DC.B„\P†Physical�sectors�per�track�on�drive.�DC.B„\Q†Stepping�rate./�DC.W„\R†Reduced�write�current�cylinder�number.�DC.W„\S†ECC�data�burst�length.?�DC.B„0,0‚2�bytes�reserved�as�offset�to�another�parameter�block  ENDMéééé÷ PAGE*3*…Macro�to�define�a�GPIB�Device�Control�Block�(DCB)* GPDVDCB‚MACRO�SECTION�0‡===�DCB�SECTION�=== NOLIST/GPDVTYP‚SET�XDSGDEV‰Assume�bussable�DEVICE�type5USERLNƒSET�(\I+1)/2ˆUser�area�must�be�even�#�of�bytes4�IFNCƒ'\0',''ŽIF�P0�=�NULL�THEN�this�is�a�DEVICE�DCB7GPDVTYP‚SET�XDSGBUS‰ELSE�it�is�the�BUS�(channel)�itself4GPCCBNAM�SET�\KŽCCB�name�for�all�devices�on�this�BUS.GPDVCNT‚SET�\0+1ŒCurrent�#�devices�+�1�for�BUS.GPMAXCT‚SET�GPDVCNT‰Max.�#�devices�on�this�BUS)BUSDCBƒSET�*�Location�of�DCB�for�this�BUS,�IFGT�GPDVCNT-15�Too�many�devices�specified?1GPDVCNT‚SET�0�Don't�gen�any�devices�for�this�BUS! LIST1 FAIL 400 TOO MANY DEVICES SPECIFIED FOR THIS BUS MEXIT ENDC1�IFEQ„GPCCBNAMŒVerify�CCB�name�has�been�specified GPDVCNT‚SET�0 LIST, FAIL 401 NO CCB NAME SPECIFIED FOR GPIB BUS MEXIT ENDC ENDC LIST,�IFGT�GPDVCNT�Check�for�valid�DCB�generationH DIPDCB USERLN+BDCILN,\1,IOSID,IOSESS,\2,\3,\4,GPCCBNAM,GPMAXCT-GPDVCNT,& BUSDCB�DC.B„0“DEVICE�STATUS�DC.B„XTGBUSŽCHANNEL�TYPE�DC.B„GPDVTYP�DEVICE�TYPE�DC.B„IODGPIB�DRIVER�CODE�DC.W„\5’ATTRIBUTE�MASK�DC.W„\6’PARAMETER�MASK�DC.W„\7’ATTRIBUTE�WORD �DC.W„0“RECORD�LENGTH�(NOT�USED)�DC.L„0“DEVICE�SIZE�(NOT�USED)%�DC.L„\8’WRITE�TIMEOUT�(MILLISECONDS)$�DC.L„\9’READ�TIMEOUT�(MILLISECONDS)&�DC.L„\A’END�OF�RECORD�CHARACTERISTICS$�DC.W„\B’EOS�CHARACTERS�(WRITE/READ)$�DC.B„\C’PARALLEL�POLL�CONFIGURATION�DC.B„\D’DEVICE�PRIMARY�ADDRESS.�DC.L„\E’WRITE�LENGTH�XFER�(FMT/IMAGE�#�BYTES)-�DC.L„\F’READ�LENGTH�XFER�(FMT/IMAGE�#�BYTES)$�DC.L„\G’READ�SECONDARY�ADDRESS�MASK%�DC.L„\H’WRITE�SECONDARY�ADDRESS�MASK�DC.L„0,0‘RESERVED6�DC.W„USERLNŽLENGTH�OF�USER�DEFINED�CONFIGURATION�AREA3�DC.L„\J’USER�DEFINED�I/O�FORMATTER�ROUTINE�ADDRESS*�DCB.BƒUSERLN,0ŒALLOCATE�USER�DEFINED�AREA‚NOLIST;GPDVCNT�SET�GPDVCNT-1ˆDECREMENT�DEVICE�COUNTER�FOR�THIS�BUS‚LIST‚ENDC‚ENDM*4*…Macro�to�recursively�create�all�default�GPIB�DCB's*1*ˆP0�=�(FIRST)�DEFAULT�DEVICE�NAME�(ASCII�STRING)*@ A  GPDFDCB MACRO�SECTION�0‡===�DCB�SECTION�=== NOLIST �IFNCƒ'\0',''8GPDFNAM‚SET�'\0'†Define�NAME�if�this�is�first�invocation ENDC LIST2�IFGT�GPDVCNTŠCheck�if�device�counter�is�exhaustedE GPDVDCB GPDFNAM,GPD$AT2,0,1,GPD$ATM,GPD$PAM,GPD$ATW,GPD$WTO,GPD$RTO,E& GPD$EOR,GPD$EOS,GPD$PPC,GPD$PRA,GPD$WLN,GPD$RLN,GPD$RSM,GPD$WSM,0,0 NOLIST7GPDFNAM�SET�GPDFNAM+1‚Bump�the�NAME�for�the�next�device LIST'�GPDFDCBƒ\1‹Invoke�self�for�next�device ENDC  ENDMéééééé PAGE*/*‚Macro�to�define�DCB�for�a�magnetic�tape�drive* MTADCB MACRO�SECTION�0‡===�DCB�SECTION�===( DIPDCB MDCBLN,\1,\2,\3,\4,\5,\6,\7,\8,0&�DC.B„0,0,0,0ƒSpace�for�status�fields.�DC.W„\9†Attributes�mask.�DC.W„\A†Parameters�mask.�DC.W„\B†Attributes�word.5�DC.W„0‡#�of�bytes/Versados�logical�sector�(not�used)7�DC.L„0‡Total�#�of�Versados�sectors�on�media�(not�used)�DC.L„\C†Write�timeout.�DC.L„\D†Read‚timeout.4�DC.B„\E†Requested�density�for�write�from�loadpoint.3�DC.B„\F†Number�of�read�tries�before�error�message..�DC.B„\G†Number�of�write�tries�before�erasing.1�DC.B„\H†Number�of�erasures�before�error�message.*=*ˆThe�IOSWTO�above�is�a�system�timeout�for�the�write�command.F*ˆThe�IOSRTO�above�is�a�system�timeout�for�every�command�except�write.6*ˆThe�mag�tape�driver�needs�more�specialized�timeouts.C*ˆThe�driver�uses�the�value�in�IOSWTO�for�erase�and�write�filemark.9*ˆThe�driver�uses�the�timeouts�listed�below�for�the�other *ˆcommands.C*ˆThe�IOSRTO�has�to�be�larger�than�the�largest�timeout�that�we�need5*ˆfor�the�commands�we�may�get�in�the�mag�tape�driver.*�DC.L„\I†Timeout�for�read4�DC.L„\J†Timeout�for�space�forward�and�space�reverse�DC.L„\K†Timeout�for�rewindC�DC.L„\L†Timeout�for�search�forward�and�search�reverse�for�filemark'�DC.L„0,0…Bytes�reserved�for�future�use.�DC.W„0,0,0,0ƒ8�bytes�reserved�for�future�use.  ENDMéA é% PAGE*$*‚Macro�to�define�DCB�for�a�Printer.* PRTDCB MACRO�SECTION�0‡===�DCB�SECTION�===( DIPDCB PDCBLN,\1,\2,\3,\4,\5,\6,\7,\8,0&�DC.B„0,0,0,0ƒSpace�for�status�fields.�DC.W„\9ˆAttributes�mask.�DC.W„\AˆParameters�mask.�DC.W„\BˆAttributes�word.�DC.W„\Cˆ#�of�characters/line.�DC.L„\Dˆ#�of�lines/page.�DC.L„\EˆWrite�timeout.�DC.L„0‰Read�timeout.�DC.W„\FˆLogical�line�length�DC.B„\GˆEnd-of-line�character.&�DCB.Bƒ15,0†Reserved�space�(15�bytes).  ENDMéééééé PAGE*%*‚Macro�to�define�DCB�for�a�Terminal.* CRTDCB MACRO�SECTION�0‡===�DCB�SECTION�===( DIPDCB CDCBLN,\1,\2,\3,\4,\5,\6,\7,\8,0&�DC.B„0,0,0,0ƒSpace�for�status�fields.�DC.W„\9†Attributes�mask.�DC.W„\A†Parameters�mask.�DC.W„\B†Attributes�word.�DC.W„\C†#�of�characters/line.�DC.L„\D†#�of�lines/page.�DC.L„\E†Write�timeout.�DC.L„\F†Read�timeout.�DC.B„\G†XOFF�char.�DC.B„\H†XON�char.�DC.B„\I†BREAK�EQUIVALENT�char.�DC.B„\J†DISCARD�OUTPUT�char.�DC.B„\K†REPRINT�LINE�char.�DC.B„\L†CANCEL‚LINE�char.�DC.L„\M†Read�terminators.�DC.L„\N†End-of-line�string.�DC.B„\O†BAUD�rate�code.�DC.B„\P†NUL�padding.�DC.B„\Q†Terminator�class.(�DC.B„\R†Terminal�type�(0=EXORterm�155).:�DC.B„0,0,0,0,0,0,0,0,0,0‚Internal�use�only�--�do�not�use.�DC.B„0,0,0,0,0,0�Reserved.  ENDMéA ééé#' RMSGEN CF88>qqSYSPAR AGYY"lqqRMSEXM CI‚‚qqRMS CI‹‹qqI=/***********************************************************************=/*�RMSGEN.CF»*'=/*�SYSGEN�command�file�to�sysgen�RMS£*I=/***********************************************************************=OPT N,O=/*==/*�Insure�two�arguments.‚Second�argument�defaults�to�'#NULL'=/*=/RX=\0 =/IF RX = 0 ƒ=ARG�NOARGƒ=/RX=\0=/ENDIF =/IF RX = 1ƒ=ARG�\1,#NULLƒ=/RX=\0=/ENDIF=/*$=/* See if we have a valid mnemonic.2=/*ƒIf�not�a�valid�mnemonic,�put�out�help�message.=/RX=0=/IFEQ "EXORMACS"\1ƒ=/RX=1=/ENDIF=/IFEQ "NETVM02"\1ƒ=/RX=1=/ENDIF=/IFEQ "VM01"\1ƒ=/RX=1=/ENDIF=/IFEQ "VM02"\1ƒ=/RX=1=/ENDIF=/IFEQ "VM03"\1ƒ=/RX=1=/ENDIF=/IFEQ "VM04"\1ƒ=/RX=1=/ENDIF=/IFEQ "VME101"\1ƒ=/RX=1=/ENDIF=/IFEQ "VME110"\1ƒ=/RX=1=/ENDIF=/IFEQ "VME115"\1ƒ=/RX=1=/ENDIF=/IFEQ "VME120"\1ƒ=/RX=1=/ENDIF=/IFEQ "VME122"\1ƒ=/RX=1=/ENDIF=/IFEQ "VME128"\1ƒ=/RX=1=/ENDIF=/IFEQ "VMES10"\1ƒ=/RX=1=/ENDIF =/IF RX=0 ƒ=OPT�-NOƒ=/*’**�HELP�MESSAGE�**ƒ=/*7ƒ=/*�No�argument�or�an�invalid�argument�was�specified�-=ƒ=/*ƒThis�chain�file�must�be�restarted�with�a�valid�argument.3ƒ=/*ƒA�description�of�the�calling�sequence�follows.Aƒ=/*ƒType��to�continue�help�message�after�reading�one�screen.ƒ=/*ƒ=/*�Calling�sequence:ƒ=/*ƒ=RMSGEN.CF�arg1,arg2ƒ=/*ƒ=/*†arg1…=‚Mnemonicƒ=/*†arg2…=‚Output�file/deviceƒ=/*Dƒ=/*ƒArg1�is�optional.‚If�not�specified,�a�help�message�will�appear.Aƒ=/*ƒArg2�will�typically�be�'#NULL'�or�'#PR'�-�defaults�to�#NULL.ƒ=/*ƒ=/*ƒ=/&>ƒ=/*ƒRMSGEN.CF�will�perform�the�RMS�sysgen�associated�with�theƒ=/*…specified�mnemonic.ƒ=/*1ƒ=/*ƒThe�mnemonic�(arg1)�is�one�of�the�following:ƒ=/*ƒ=/*ƒ"EXORMACS"ƒ=/*ƒ"NETVM02" ƒ=/*ƒ"VM01" ƒ=/*ƒ"VM02" ƒ=/*ƒ"VM03" ƒ=/*ƒ"VM04" ƒ=/*ƒ"VME101" ƒ=/*ƒ"VME110" ƒ=/*ƒ"VME115 ƒ=/*ƒ"VME120 ƒ=/*ƒ"VME122" ƒ=/*ƒ"VME128 ƒ=/*ƒ"VMES10"ƒ=/&ƒ=NOARGƒ=@END=/ENDIF =/IF RX=1ƒ=DEL�&.S.LS/&.SYSASM.LS=/ENDIF=/RX=0B 0j9QASI1F=/*-------------------------------------------------------------------F=/*-------------------------------------------------------------------=/IFEQ "EXORMACS"\1 ƒ=OPT�-NO ƒ=SYSGEN�EXORMACS.RMS.CD,,&.S.LSƒ=/RX=1ƒ=/IF�RD<$C000†=/R?†=/*�Errors�in�SYSGEN†=@ENDƒ=/ENDIFƒ=COPY�EXORMACS.RMS.LL,&.S.LS;A$ƒ=/*�Created�file�is�EXORMACS.RMS.LOƒ=/*ƒand�&.S.LS=/ENDIF=OPT NOF=/*-------------------------------------------------------------------F=/*-------------------------------------------------------------------=/IFEQ "NETVM02"\1 ƒ=OPT�-NOƒ=SYSGEN�NETVM02.RMS.CD,,&.S.LSƒ=/RX=1ƒ=/IF�RD<$C000†=/R?†=/*�Errors�in�SYSGEN†=@ENDƒ=/ENDIFƒ=COPY�NETVM02.RMS.LL,&.S.LS;A#ƒ=/*�Created�file�is�NETVM02.RMS.LOƒ=/*ƒand�&.S.LS=/ENDIF=OPT NOF=/*-------------------------------------------------------------------F=/*-------------------------------------------------------------------=/IFEQ "VM01"\1 ƒ=OPT�-NOƒ=SYSGEN�VM01.RMS.CD,,&.S.LSƒ=/RX=1ƒ=/IF�RD<$C000†=/R?†=/*�Errors�in�SYSGEN†=@ENDƒ=/ENDIFƒ=COPY�VM01.RMS.LL,&.S.LS;A ƒ=/*�Created�file�is�VM01.RMS.LOƒ=/*ƒand�&.S.LS=/ENDIF=OPT NOF=/*-------------------------------------------------------------------F=/*-------------------------------------------------------------------=/IFEQ "VM02"\1 ƒ=OPT�-NOƒ=SYSGEN�VM02.RMS.CD,,&.S.LSƒ=/RX=1ƒ=/IF�RD<$C000†=/R?†=/*�Errors�in�SYSGEN†=@ENDƒ=/ENDIFƒ=COPY�VM02.RMS.LL,&.S.LS;A ƒ=/*�Created�file�is�VM02.RMS.LOƒ=/*ƒand�&.S.LS=/ENDIF=OPT NOF=/*-------------------------------------------------------------------F=/*-------------------------------------------------------------------=/IFEQ "VM03"\1 ƒ=OPT�-NOƒ=SYSGEN�VM03.RMS.CD,,&.S.LSƒ=/RX=1ƒ=/IF�RD<$C000†=/R?†=/*�Errors�in�SYSGEN†=@ENDƒ=/ENDIFƒ=COPY�VM03.RMS.LL,&.S.LS;A ƒ=/*�Created�file�is�VM03.RMS.LOƒ=/*ƒand�&.S.LS=/ENDIF=OPT NOF=/*-------------------------------------------------------------------F=/*-------------------------------------------------------------------=/IFEQ "VM04"\1 ƒ=OPT�-NOƒ=SYSGEN�VM04.RMS.CD,,&.S.LSƒ=/RX=1ƒ=/IF�RD<$C000†=/R?†=/*�Errors�in�SYSGEN†=@ENDƒ=/ENDIFƒ=COPY�VM04.RMS.LL,&.S.LS;A ƒ=/*�Created�file�is�VM04.RMS.LOƒ=/*ƒand�&.S.LS=/ENDIF=OPT NOF=/*-------------------------------------------------------------------F=/*-------------------------------------------------------------------=/IFEQ "VME101"\1 ƒ=OPT�-NOƒ=SYSGEN�VME101.RMS.CD,,&.S.LSƒ=/RX=1ƒ=/IF�RD<$C000†=/R?†=/*Errors�in�SYSGEN†=@ENDƒ=/ENDIFƒ=COPY�VME101.RMS.LL,&.S.LS;A"ƒ=/*�Created�file�is�VME101.RMS.LO ƒ=/*ƒ&.S.LS=/ENDIF=OPT NOF=/*-------------------------------------------------------------------F=/*-------------------------------------------------------------------=/IFEQ "VME110"\1 ƒ=OPT�-NOƒ=SYSGEN�VME110.RMS.CD,,&.S.LSƒ=/RX=1ƒ=/IF�RD<$C000†=/R?†=/*�Errors�in�SYSGEN†=@ENDƒ=/ENDIFƒ=COPY�VME110.RMS.LL,&.S.LS;A"ƒ=/*�Created�file�is�VME110.RMS.LO ƒ=/*ƒ&.S.LS=/ENDIF=OPT NOF=/*-------------------------------------------------------------------F=/*-------------------------------------------------------------------=/IFEQ "VME115"\1 ƒ=OPT�-NOƒ=SYSGEN�VME115.RMS.CD,,&.S.LSƒ=/RX=1ƒ=/IF�RD<$C000†=/R?†=/*�Errors�in�SYSGEN†=@ENDƒ=/ENDIFƒ=COPY�VME115.RMS.LL,&.S.LS;A"ƒ=/*�Created�file�is�VME115.RMS.LO ƒ=/*ƒ&.S.LS=/ENDIF=OPT NOF=/*-------------------------------------------------------------------F=/*-------------------------------------------------------------------=/IFEQ "VME120"\1 ƒ=OPT�-NOƒ=SYSGEN�VME120.RMS.CD,,&.S.LSƒ=/RX=1ƒ=/IF�RD<$C000†=/R?†=/*�Errors�in�SYSGEN†=@ENDƒ=/ENDIFƒ=COPY�VME120.RMS.LL,&.S.LS;A"ƒ=/*�CreB ated�file�is�VME120.RMS.LO ƒ=/*ƒ&.S.LS=/ENDIF=OPT NOF=/*-------------------------------------------------------------------F=/*-------------------------------------------------------------------=/IFEQ "VME122"\1 ƒ=OPT�-NOƒ=SYSGEN�VME122.RMS.CD,,&.S.LSƒ=/RX=1ƒ=/IF�RD<$C000†=/R?†=/*�Errors�in�SYSGEN†=@ENDƒ=/ENDIFƒ=COPY�VME122.RMS.LL,&.S.LS;A"ƒ=/*�Created�file�is�VME122.RMS.LO ƒ=/*ƒ&.S.LS=/ENDIF=OPT NOF=/*-------------------------------------------------------------------F=/*-------------------------------------------------------------------=/IFEQ "VME128"\1 ƒ=OPT�-NOƒ=SYSGEN�VME128.RMS.CD,,&.S.LSƒ=/RX=1ƒ=/IF�RD<$C000†=/R?†=/*�Errors�in�SYSGEN†=@ENDƒ=/ENDIFƒ=COPY�VME128.RMS.LL,&.S.LS;A"ƒ=/*�Created�file�is�VME128.RMS.LO ƒ=/*ƒ&.S.LS=/ENDIF=OPT NOF=/*-------------------------------------------------------------------F=/*-------------------------------------------------------------------=/IFEQ "VMES10"\1 ƒ=OPT�-NOƒ=SYSGEN�VMES10.RMS.CD,,&.S.LSƒ=/RX=1ƒ=/IF�RD<$C000†=/R?†=/*�Errors�in�SYSGEN†=@ENDƒ=/ENDIFƒ=COPY�VMES10.RMS.LL,&.S.LS;A"ƒ=/*�Created�file�is�VMES10.RMS.LOƒ=/*ƒand�&.S.LS=/ENDIFF=/*-------------------------------------------------------------------F=/*-------------------------------------------------------------------=OPT -NO=COPY &.S.LS,\2;Y!=/* Output listing directed to \2=ENDéééFSYSPAR„IDNTƒ5,1…System�parameters�at�\SYSPAR;�Crash�save�at�\CRASHSAV.O*v*****************************************************************************O*******************************************************************************O**********************************************************************************É***>***…ROUTINE:‚SYSPAR�--�SYSTEM�PARAMETERS�TABLE�FOR�RMS68K.�******É***J***…ENVIRONMENT:‚Part�of�the�RMS68K�exec�for�the�Motorola�68000�family.***(***‡Copyright�1983�by�Motorola,�Inc.¢******É***H***…FUNCTION:‚This�table�gets�SUBSed�and�ASMed�during�an�RMSGEN,�andƒ***F***‡is�then�linked�in�with�RMS68K.‚The�data�defined�in�this�moduleƒ***D***‡are�primarily�the�variables�and�parameters�needed�by�RMS68K.†******É***O*******************************************************************************O*******************************************************************************O*^***************************************************************************** *,*‚Revision�history�(add�new�changes�to�top).*…Date†Author‚Changes@*…--------‚------‚----------------------------------------------(*…12/�7/84‚SJF…Added�LAST_MMU_INT_LEVEL.*…10/�4/83‚SJF…Format�revision.*  **‚Included�files:**‰9995.&.TIOT.EQ*ŠNOLISTŠINCLUDE�9995.&.TIOT.EQŠLISTŠPAGE ŠXDEFƒACOTBL ŠXDEFƒADEFTYP ŠXDEFƒASNTBLŠXDEFƒBKG_ACTIVEŠXDEFƒBKG_FLAGŠXDEFƒBKG_HEADŠXDEFƒBKG_TAIL ŠXDEFƒCCBHDŠXDEFƒCRASHSAV ŠXDEFƒCTRLREGŠXDEFƒCURR_ASN ŠXDEFƒCURR451 ŠXDEFƒCURRSD ŠXDEFƒDACTBL ŠXDEFƒDATE ŠXDEFƒDBUFSZ ŠXDEFƒDCOTBL ŠXDEFƒDPRVAO ŠXDEFƒENDSYSPŠXDEFƒEXCSTACK ŠXDEFƒFQBCNT ŠXDEFƒFQLWM ŠXDEFƒFREEQHD ŠXDEFƒFREEQND ŠXDEFƒFRST451 ŠXDEFƒGSTBEG ŠXDEFƒINPTBLŠXDEFƒIOVCTBGN ŠXDEFƒLAM ŠXDEFƒLAST451ŠXDEC FƒLAST_MMU_INT_LEVEL ŠXDEFƒLCTBEG ŠXDEFƒMACSTRC ŠXDEFƒMAPBEG ŠXDEFƒMEMOFFŠXDEFƒMIDNIGHT ŠXDEFƒMMUHERE ŠXDEFƒMMULOAD ŠXDEFƒNATBEG ŠXDEFƒNNTBEG ŠXDEFƒNOTLAM ŠXDEFƒNSE ŠXDEFƒNWDQHD ŠXDEFƒNWPSEGŠXDEFƒNWSTATUS ŠXDEFƒNWTSEG ŠXDEFƒPANELQSZ]bUjSr ŠXDEFƒPATBEGŠXDEFƒPERTURB_FLAGŠXDEFƒPREEMPT_FLAG ŠXDEFƒPTMADDR ŠXDEFƒRAD1TBL ŠXDEFƒREADYHD ŠXDEFƒRIOTBL ŠXDEFƒRUNNER ŠXDEFƒSDEFTYP ŠXDEFƒSDLCPCB ŠXDEFƒSEMCCB ŠXDEFƒSEMEND ŠXDEFƒSEMGST ŠXDEFƒSEMLIST ŠXDEFƒSEMTCB ŠXDEFƒSEMTIOT ŠXDEFƒSEMUSTŠXDEFƒSLFTSTA7 ŠXDEFƒSPURCNTŠXDEFƒSPURTIME ŠXDEFƒSYSPAR ŠXDEFƒSYSPOFF ŠXDEFƒTCBHD ŠXDEFƒTDEFTYP ŠXDEFƒTIATŠXDEFƒTIME_LEFT ŠXDEFƒTIMEOUTŠXDEFƒTIMESLIC ŠXDEFƒTIMINTVŠXDEFƒTIMINTV4 ŠXDEFƒTIMINTRŠXDEFƒTINTFLAG ŠXDEFƒTIOTŠXDEFƒTRACEBEGŠXDEFƒTRACFLAG ŠXDEFƒUDEFTYP ŠXDEFƒUDRBEG ŠXDEFƒUSERQHD ŠXDEFƒUSERQND ŠXDEFƒUSTBEG ŠXDEFƒV2RQHD ŠXDEFƒVCTUBGNŠPAGE*E*‚First�define�the�location�of�the�'crash�save�area,'�the�place�whereD*‚the�KILLER�module�will�save�the�processor's�registers,�etc.�in�the*‚event�of�a�system�crash.*CRASHSAV‚EQU„\CRASHSAV  *E*‚Now�define�the�structure�of�the�'system�parameters�area'�to�all�theD*‚various�RMS68K�modules.‚Note�that�we�are�not�actually�defining�anyE*‚storage�here--this�is�just�a�big�offset�block�which�will�define�theB*‚locations�of�the�parameters.‚Initialization�of�the�parameters�is1*‚handled�by�the�RMS68K�initializer�at�boot�time.*ŠOFFSET�\SYSPAR SYSPAR„EQU„* "MAPBEG„DS.Lƒ1’POINTS�TO�MEMORY�MAP PERTURB_FLAG…DS.Wƒ1BKG_FLAG‰EQU„PERTURB_FLAGPREEMPT_FLAG…EQU„PERTURB_FLAG+1 ŠDS.Wƒ1 %EXCSTACK‚DS.Lƒ1’ADDRESS�OF�EXEC�STACK $RUNNER„DS.Lƒ1’ADDRESS�OF�RUNNING�TCB 0TCBHD…DS.Lƒ1’POINTS�TO�FIRST�TCB�IN�ALL-TCB�LIST 0READYHDƒDS.Lƒ1’POINTS�TO�FIRST�TCB�IN�READY�LIST 2CCBHD…DS.Lƒ1’POINTS�TO�FIRST�CHANNEL�CONTROL�BLOCK :MMUHEREƒDS.Lƒ1’HOLDS�ADDRESS�OF�MMU�HARDWARE�IN�MEMORY�MAP +GSTBEG„DS.Lƒ1’START�OF�GLOBAL�SEGMENT�TABLE +USTBEG„DS.Lƒ1’START�OF�USER�SEMAPHORE�TABLE 5UDRBEG„DS.Lƒ1’Pointer�to�User�Defined�Directive�Table 0PATBEG„DS.Lƒ1’START�OF�PERIODIC�ACTIVATION�TABLE +TRACEBEG‚DS.Lƒ1’START�OF�SYSTEM�TRACE�TABLE "TRACFLAG‚DS.Wƒ1’SYSTEM�TRACE�FLAGS ,MACSTRCƒDS.Lƒ1’MACSBUG�TRACE�ROUTINE�ADDRESS PANEL…DS.Lƒ1’FRONT�PANEL�ADDRESS**„TIMER�PARAMETERS** DATE†DS.Lƒ1’ORDINAL�DATE 8PTMADDRƒDS.Lƒ1’ADDRESS�USED�TO�ACCESS�PROGRAMMABLE�TIMER &TIMEOUTƒDS.Wƒ1’TIMER�INTERRUPT�COUNTER BTIMESLIC‚DS.Wƒ1‹NUMBER�OF�TIMER�INTERRUPTS�BEFORE�TASK�INTERRUPTED -NSE‡DS.Lƒ1’ms�value�of�next�significant�event 6TIME_LEFT�DS.Lƒ1’ms�value�until�next�significant�event -MIDNIGHT‚DS.Lƒ1’ms�value�of�previous�midnight 3TIMINTVƒDS.Wƒ1’#�MILLISECS�BETWEEN�TIMER�INTERRUPTS TIMINTV4‚DS.Wƒ1’TIMINTV*4-1 7TIMINTRƒDS.Wƒ1’Holds�usec�remainder�for�odd�clock�rates $TINTFLAG‚DS.Bƒ1’TIMER�INTERRUPT�FLAG 7TMSGFLAG‚DS.Bƒ1’FLAG�-�MESSAGE�SENT�DURING�I/O�HANDLING +SPURCNTƒDS.Wƒ1’COUNT�OF�SPURIOUS�INTERRUPTS 9SPURTIME‚DS.Lƒ1’TIME�THAT�1ST�SPURIOUS�INTERRUPT�OCCURRED +MMULOADƒDS.Lƒ1’MMU�LOADED�FROM�THIS�ADDRESS (VCTUBGNƒDS.Lƒ1’START�OF�VECTOR�USE�TABLE 0IOVCTBGN‚DS.Lƒ1’START�OF�VECTOR�ASSIGNMENT�TABLE ,ADEFTYPƒDS.Bƒ1’DEFAULT�MEMORY�TYPE�FOR�ASQ'S ,TDEFTYPƒDS.Bƒ1’DEFAULT�MEMORY�TYPE�FOR�TCB'S >SDEFTYPƒDS.Bƒ2ŽDEFAULT�MEMORY�TYPE�FOR�SYSTEM�TASKS(RO�AND�RW) ,5*‚There�are�two�special�values�for�:,*‰0�=�COMINT�(the�common�interrupt�handler).(*‰1�=�don't�take�over�the�vector�at�all.E*‚Entries�in�the�vector�table�must�be�assigned�in�order--that�is,�theB*‚vector�#'s�in�the�VECTOR�invocations�must�be�in�ascending�order.H*‚In�the�case�where�two�contiguous�VECTOR�invocations�leave�a�gap�in�theE �5™<¡2K*‚vector�#'s,�those�vector�#'s�in�the�gap�will�be�assigned�the�same�handler9*‚as�that�of�the�lower�vector�#�of�the�pair.‚For�example,+*‰VECTOR�$23,0ŽPoints�$23�to�$27�to�COMINT.-*‰VECTOR�$28,1ŽLeaves�$28�to�$2F�as�they�are.-*‰VECTOR�$30,ROUTINE1‡Points�$30�to�ROUTINE1.G*‚If�the�gap�to�be�filled�has�a�second�parameter�other�than�0�or�1,�theJ*‚address�assigned�to�the�vector�will�be�incremented�by�2�for�each�vector:7*‰VECTOR�$23,XŽPoints�$23�to�X,�$24�to�X+2,�$25�to�X+4.$*‰VECTOR�$26,0ŽPoints�$26�to�COMINT.'*‚The�end�of�the�list�is�signified�by�a*‰DC.Lƒ0F*‚and�the�second�parameter�of�the�last�prior�VECTOR�invocation�will�beK*‚applied�to�all�further�vectors,�up�to�$FF.‚Again,�if�the�second�parameterK*‚was�not�a�0�or�1,�the�address�assigned�to�the�vectors�will�be�incremented#*‚by�2�for�each�vector�in�sequence.* VECTOR„MACROŒIFLEƒ\1-VECT_NUM0ŽFAILƒ499ŒVector�#'s�must�be�in�ascending�order!ŽMEXITŒENDCŒIFNCƒ'\2','0'ŽIFNCƒ'\2','1'�XREFƒ\2ŽENDCŒENDCVECT_NUM„SET„\1ŒDC.Lƒ\1<<24+\2ŠENDM  * *‚First�set�up�the�table�header.*ŠSECTION�LEVEL00  0ŠDC.Lƒ'!VCT'�Dump�eyecatcher�for�'VeCtor�Table.'2ŠDC.LƒCOMINT�Put�the�address�of�COMINT�here�so�the"*§exec�initializer�can�find�it;�he#*§isn't�linked�with�the�exec,�so�he*§wouldn't�know�otherwise.ŠPAGE*)*‚Here�are�the�actual�vector�assignments.I*‚Notice�that�whether�or�not�the�illegal�instruction�vector�is�taken�overE*‚by�RMS68K�is�controlled�by�an�sysgen�parameter.‚During�RMSGEN,�this$*‚parameter�is�substituted�such�thatA*„0�=�the�exec�should�leave�the�illegal�instruction�vector�alone.?*„1�=�the�exec�should�take�over�the�illegal�instruction�vector.J*‚You�might�want�the�exec�to�leave�the�illegal�instruction�vector�alone�ifI*‚you�want�to�use�the�ROM�debugger,�since�it�uses�illegal�instructions�as*‚breakpoints.* 8VECT_NUM‚SET„1’Initialize�the�vector�number�to�1�so�that&*§the�lowest�vector�number�that�can�be*§set�afterwards�is�2. ŠVECTOR�$02,PROGINT2‡Bus�error.#ŠVECTOR�$03,PROGINT3‡Address�error.$*§If�we're�not�supposed�to�take�over/ŠIFEQƒ\ILLINSTRŠthe�illegal�instruction�vector,9ŠVECTOR�$04,1Žleave�the�illegal�instruction�vector�alone.ŠENDC–*!*§If�we�are�supposed�to�take�over/ŠIFNEƒ\ILLINSTRŠthe�illegal�instruction�vector,>ŠVECTOR�$04,PROGINT4‡take�over�the�illegal�instruction�vector.ŠENDC–*#ŠVECTOR�$05,PROGINT5‡Division�by�0.+*‚in�sequence„$06,PROGINT6ŠCHK�instruction.-*‚in�sequence„$07,PROGINT7ŠTRAPV�instruction./*‚in�sequence„$08,PROGINT8ŠPrivilege�violation.'ŠVECTOR�$09,PROGINT9‡Instruction�trace.8ŠVECTOR�$0A,PROGINTA‡Reserved�instruction�opcodes�$AXXX.>*‚in�sequence„$0B,PROGINTBŠReserved�instruction�opcodes�$FXXX.'ŠVECTOR�$0C,0Ž($0C�-�$0E�go�to�COMINT.)+ŠVECTOR�$0F,KILLER‰Uninitialized�Interrupt.'ŠVECTOR�$10,0Ž($10�-�$17�go�to�COMINT.)'ŠVECTOR�$18,SPURINTˆSpurious�interrupt.'ŠVECTOR�$19,0Ž($19�-�$1B�go�to�COMINT.)*ŠVECTOR�$1C,TIMEINTˆM6840�timer�interrupt.'ŠVECTOR�$1D,0Ž($1D�-�$1E�go�to�COMINT.)8ŠVECTOR�$1F,1ŽSoftware�abort�(leave�it�pointing�to�bug).ŠVECTOR�$20,TRAP0ŠTRAP�#0.ŠVECTOR�$21,TRAP1ŠTRAP�#1.#ŠVECTOR�$22,TRPVCT2ˆTRAP�#2�to�#15.'ŠVECTOR�$30,0Ž($30�-�$8C�go�to�COMINT.)/ŠVECTOR�$8D,POWRFAIL‡ACFAIL*�from�the�VERSAbus.9ŠVECTOR�$8E,KILLER‰This�vector�is�what�you�assign�to�VM02$*§interrupt�sources�you�don't�expect#*§to�go�off;�it�takes�us�to�KILLER.)ŠVECTOR�$8F,0ŽI/O�channel�IRQ1*�(COMINT).)ŠVECTOR�$90,0ŽI/O�channel�IRQ2*�(COMINT).)ŠVECTOR�$91,0ŽI/O�channel�IRQ3*�(COMINT).)ŠVECTOR�$92,0ŽI/O�channel�IRQ4*�(COMINT).<ŠVECTOR�$93,KILLER‰Bus�Clear�interrupt�from�VERSAbus�I/F.‚We%*§shouldn't�be�getting�this,�since�we'*§use�block�transfer�mode�only�if�there%*§are�no�other�potential�bus�masters.0ŠVECTOR�$94,CMRSFAIL‡SYSFAIL*�from�the�VERSAbus.E  'ŠVECTOR�$95,0Ž($95�-�$FF�go�to�COMINT.)  !ŠDC.Lƒ0’(End�of�table�indicator.)   ŠEND**ˆVM02�.RMS.CI*B******************************************************************0*�RMS�sysgen�include�file�for�VERSAdos�sysgen.“*B*******************************************************************7* This file is created at RMSgen time to be included in*ƒthe�VERSAdos�sysgen.* PCˆ=�$E00 STACK…=�$C00STARTRMS‚=�$E00+$100ROMSADDR‚=�$E00MMU‡=�$0éééééé©#***********************************#* Sysgen command file VM02.RMS.CD *#***********************************SYSTEM„=�"VM02"*MMU‡=�0ŒNo�MMU�is�possible�on�this�system.*%* Assemble SYSPAR (System Parameters)*INCLUDE…C8OC.SYSPAR.CI*:*�Define�RMS's�starting�address.‚Pass�starting�address�and;* stack address to VERSAdos sysgen through file VM02.RMS.CI*'RMS‡=�$E00‰Address�where�RMS68K�starts. SUBS†&.RMS.CI=COPY…&.XRMS.CI,VM02.RMS.CI;Y*C*‚Now�indicate�whether�or�not�the�exec�should�take�over�the�illegalC*‚instruction�vector.‚If�you�are�going�to�be�using�the�ROM�debuggerE*‚to�set�breakpoints,�then�you'll�want�the�illegal�instruction�vectorB*‚left�as�the�debugger�has�it�set.‚In�an�environment�where�the�ROMB*‚debugger�will�not�be�used,�you�will�want�RMS68K�to�field�illegal*‚instructions�as�exceptions.*-ILLINSTR‚=�1ŒIllegal�instruction�vector�flag:"*¨0�=�RMS�should�not�take�it�over.*¨1�=�RMS�should…take�it�over.**'*‚Now�create�a�VECTTBL�for�this�system.*SUBSˆVM02.VECTTBL.AG8ASM‰VM02.VECTTBL.AG,VM02.VECTTBL.RO,VM02.VECTTBL.TF;Z=50*)* Now we generate the RMS68K load module.* Now link it all together.* RMS0LO„=�\RMSRMS0HI„=�\RMS+$FFRMS2LO„=�\RMS+$100*SUBSˆVM02.RMS.LGLINKˆVM02.RMS.LG*=DELˆ&.SYSPAR.RO*!* Create one concatenated listing*#=COPY‡VM02.VECTTBL.TF,VM02.RMS.LL;A"=COPY‡C8OC.SYSPAR.TF,VM02.RMS.LL;A** Cleanup junk files* =DELˆ*.*.TF;Y*0* The following files are created by this RMSgen**ˆC8OCF .SYSPAR.RO$*ˆ&.SYSPAR.RO‰copy�of�C8OC.SYSPAR.RO *ˆVM02.RMS.LO *ˆVM02.RMS.LL *ˆVM02.RMS.CI**ˆ&.XSYSPAR.AG *ˆ&.XRMS.CI*ˆVM02.XVECTTBL.AG*ˆVM02.VECTTBL.RO*ˆVM02.XRMS.LG*END‰é²F=/*=/*†VM02.RMS.LG=/* =/* RMS link chain file for VM02=/*.=LINK ,VM02.RMS.LO,VM02.RMS.LL;H,M,I,X,-U,Z=40SEG�RMS0:0�\RMS0LO,\RMS0HISEG�RMS2:2,3,4,5,6,7,15‚\RMS2LOINPUTˆ&.SYSPAR.ROINPUTƒM68XXX.RMS.ROINPUT…VM02.VECTTBL.ROIN†M68XXX.AKRQST.ROIN†M68XXX.ASQALOC.ROIN†M68XXX.ASQEVENT.ROIN†M68XXX.ASQFREE.ROIN†M68XXX.ASQGET.ROIN†M68XXX.ASQREAD.ROIN†M68XXX.ASQSTATS.ROIN†M68XXX.ASRINT.ROIN†M68XXX.ATSEM.ROIN†M68XXX.BKG.ROIN…NOCACHE.CACHE.ROIN†M68XXX.CDIR.ROIN†M68XXX.CISR.ROIN†M68XXX.CKDELAY.ROIN†M68XXX.CKEXPAT.ROIN†M68XXX.CMR.ROIN†M68000.COMINT.ROIN†M68XXX.DCLSHAR.ROIN†M68XXX.DELAY.ROIN†M68XXX.DEMON.ROIN†M68XXX.DERQST.ROIN†M68XXX.DESEM.ROIN†M68000.DISPATCH.ROIN†M68XXX.DSEGX.ROIN†M68XXX.DSERVE.ROIN†M68XXX.DSEMX.ROIN†M68XXX.DSRVX.ROIN†M68XXX.EQDQ.ROIN†M68XXX.EXABRT.ROIN†M68000.EXCEPT.ROIN†M68000.EXIT.ROIN†M68XXX.EXMMSK.ROIN†M68XXX.EXMON.ROIN†M68XXX.EXMONVR.ROIN†M68XXX.EXQEVENT.ROIN†M68XXX.EXRQPA.ROIN†M68XXX.FNDGSEG.ROIN†M68XXX.FNDTSEG.ROIN†M68XXX.FNDUSEM.ROIN†M68XXX.GETTCB.ROIN†M68XXX.GTDTIM.ROIN†M68XXX.GTTASKID.ROIN†M68XXX.GTTNAME.ROIN†M68XXX.KILLER.ROIN‡NOMMU.LOADMMU.ROIN†M68XXX.LOGPHY.ROIN†M68XXX.PAGEALOC.ROIN†M68XXX.PAGEFREE.ROIN†M68XXX.PAUSE.ROIN†M68XXX.POWRFAIL.ROIN†M68XXX.PSTATE.ROIN†M68000.PVSEM.ROIN†M68XXX.RCVSA.ROIN‡M6840.RDTIMER.ROIN†M68XXX.READY.ROIN†M68XXX.RELINQ.ROIN†M68XXX.RESUME.ROIN†M68XXX.REXMON.ROIN†M68XXX.RQSTPA.ROIN†M68XXX.RSTATE.ROIN†M68XXX.RTEVENT.ROIN†M68XXX.SEGALOC.ROIN†M68XXX.SEGDEAL.ROIN†M68XXX.SEGSHAR.ROIN†M68XXX.SELFTEST.ROIN†M68XXX.SERVE.ROIN†M68XXX.SETPRI.ROIN†M68XXX.SGSEM.ROIN†M68000.SINT.ROIN†M68XXX.SNAPTRAC.ROIN†M68XXX.SPURINT.ROIN†M68XXX.STDTIM.ROIN†M68000.SUPER.ROIN†M68XXX.SUSPEND.ROIN†M68XXX.TERM.ROIN†M68XXX.TFRSEG.ROIN‡M6840.TIMEINT.ROIN†M68XXX.TRACER.ROIN†M68000.TRAP0.ROIN†M68000.TRAP1.ROIN†M68XXX.TSKATTR.ROIN†M68XXX.TSKBORN.ROIN†M68XXX.TSKINFO.RO»^Ä IN†M68XXX.TSKMOVE.ROIN†M68XXX.TSKSTART.ROIN†M68XXX.TSKWAIT.ROIN†M68XXX.USERVECT.ROIN†M68XXX.WAKEUP.ROIN†M68XXX.WTEVENT.ROINPUTƒM68XXX.RMSPATCH.ROEND=/*=ENDéééF ééééM1VECTTBL ASREL'VM02 XVECTTBLAGGY…RMS68K vector table for the VM02.«2pPOWRFAIL pPROGINT2 pPROGINT3 pPROGINT4 pPROGINT5 pPROGINT9 pPROGINTA pTIMEINT pSPURINT pTRAP0 pTRAP1 pKILLER pCOMINT pTRPVCT2 pCMRSFAIL "x~3?’C˜!VCT(,,,,, , ,,,, ,!,"0,�,Ž��$3‘’,“,”•4ééééééÌRMS ÿÿÿÿÿ€RMS0€RMS2Nÿÿÿÿ\ÿÿaxa:t`,N¹dDUMY"x ,|$iµüfa 8`J#R|øÿB’Bª%|ÿÿÿBª GúÿÊ%KBj%|ÿÿÿþ5|øÿ|&i “gGÓ`ô&Š|øÿNs!VCTÖ¼¾À Ò Ê d€² f!ü"P0�´Žd��‘’“d”Zä•/ @ç|G JèfB�"x "ˆ!È Pø Fß"_NuJøfDHçÿþAø@ç| g$"@ ‘f!È |øÿ$iQéN’Aø| fÜQøQø FßLßÿNuPøN�QøJ8 f¤NuNuNu@ç*j-,g|$©#JF×`tª>*g4gRjÇ fX g­,fí-`­ ,g` B­X­,AÕa f|$©#JF×`$* |a ¢F×FßNuHçAp@ç|a –$8 >&68 @FßHC(HD4<  g 4<8***HB g2Hçz,* m6a"`NqLß8`Lßp&*HC6‚€4*AÕaðNqLß‚R�`ÿX?5|$* *g |a þ` |$©#J"*0<@ÂÄjFÂ&jNÓ8 4gaLî`*_a ¶ _N`Lßÿ\�|Jx fNsj?_f aþJ8 fNs?_'fö/,x Hî?ÿL× NiHî8`ö@ç8 4gaäî HçÿþNi/ /9 d oF,hHV/(@À@ÿ?"h 0P*n6` & fÿr\�,_( „!TCBga ÎJ@gÿJ @f AÖa?`ÿ: @fÿ2J�f&HC4<HBAÖa°Nq`ÿHBHA(&64< ‚HB4`àâˆ&T�(,_" �!TCBga jCð=C^AÖa>¨J®@gþÖ$< ÿÿHCHD6`¤-@L× NiHî8AÖa È.x |øÿMø |"N ) gì,@.,fð#n ®-!Î /.D/.@Qø 1ø H FpàÀ.-fh|øÿ*n6a  n<€™AÖa®Ü‡(F9n@ÿú)nBÿü-'fLîÿHìÿÿ¾Lî0Hìÿî -/@-@B`ÿ*n6a n, ,"0<2 gB@2g<,*.,(>,°H@0,²H@"@J²f -@g4&@4+HC6+HCAòa*J²gHç@(AÕa Â`Lß ra¶,sf`žLß,sò Rrì ,NuÇ1G*è)!|EXEC°!| ´<(,Æ1F.½Èg$F-ÿ† g†1F,|ð& fa¾Nu1F,X�`5Fa aaaaaaaaaa a aaaaNq?/_'g/ g*8 ]…š�Nh,œ… n6aV`Nq`"(F CN`&8 UC _8ß¿Ãfú/?,ÿú/<<`B† m n _-_¸-_¼/.)g".èg a nbJf\ nCø ˜ 1pfÊaü8`rJFf:AÖaý6 HzýŽ�Ÿ`ú P�` €ž`ú ~$.èffffNLî?ÿ,_` z,.ð n6az`Nq`&~ F&(.ô·„f È®ìg-Cô`"R‡È®ìgg°Rnø .ø°nøb ~aN`˜.�/,x ½üg0/ f(.)g .è8gîè,_"¯Pø Ns,_"/8 6Nua‚$< 4.&.(.8áL<Aîàa¢`®)Lîÿt®-@&Nuî ,X�`ùJ .`p|Jx f Lî?þ,_Nsjùaö J8 gè`ùB®L× NiHî8`ùp`Np`Jp`Fp`Bp`>p`:p`6p`2p `.p `*p `&p `"p `p`p`p`=@=|ç�G` H@0<.H@ x QˆYˆ.H|`ÿV@çHç0x "x ,JAkj fah|&)fFïT¯`Ø`J$C#RFïBª€%@ %H%BBjgêáIAøÿ5A$|aœFï`Œa`†Hç8Eé&J|$S ªf"´ªf&’(R(,Ù¸ NÙ¸ J¸ JFï0`:&J&g2$C ªf ´ªf&’(R¸üg(*Ù¬Fï0` `&J&`Ì`$©#JLßNuLß FßNu&i"’¸ Nl! NÓ¸ J¸ JD�'A$‹#J`&(S’¬m &L(S’¬`ô%lÓªD�)A$“&ŠNu/)µßfa`a&Nu#R$©#J$i *Ѹ NѸ J¸ JNu&’$©#J *$SѪNu#R&i +Ѹ NѸ J¸ JNuHøÿÿ@ø!×Ni!ÉH!øL"x :3|•3|µ3| 3|°|`ÞNuNsNu|ð%ax`ö„Høÿÿ1×!ï|LøÿÿNs@ç|JÐkü0ãHâ@S@0€kFßNua:U.ra�FßAÖa`ö6î ,B® (f!NNu*@ - fø+N NuHç .&|ð&î-HîÿtNl-L< 8 Kï �� €Pn@rIî™ÀäHd8Ý`(ÝQÈÿüLß0Nuaþì@ç|JÐkü0ãHâ@R@o0€FßNu/ "h!i €0€B© © ,"_FßNu/ x BB�@ç| 0àIDAÒx XäIÒ¸ J’¸ N’¸ RFß� _NupðÀ($@&`h$&@ç|è-f6Hç@ Eø (&"* g ʰ*&còÊ!A %H $x °*&cPø LßFßNuJ¸ vf|Hçÿþ!Ï vFï<.x v|9÷0 À÷0.x vLßÿÿB¸ vNsRx ^ xd ^k$/ "x :3|3|53|.3|>"_Bx ^NsHçÀÀ x :| x B(( B�28 V“¸ Nn"x ,AéCú1º& |ùØùØ@ @@ (@ (@ ²@ :ÈùØùØùØùØ@'^ ðDÀxùØùØùØ@ ‚)f2ŒÀ @ÚùØÀ!èÀèÀ !ÌÀ %¢À "ÜÀ #hùØùØ@–@(Ì@"¼à8 4gašÿ.)g".èg~a÷öå@kN @,bDGúþž$3g2*HE…ÿ, n6a¬`Nq`øT(FgAÔaò``øD*HNó `ø2$x ($ gôä@D@°jnêS@Àü EòJªgÚ4*‚f"²®fÈ-W8BnH?Hz @ç$jNÒ0.Hfø20g÷ž @fAÖaûš`÷¶"( Pa^` T—Nu �!TCBfô*H(m@ gê ᘀÿgÞ@ç|2,$0{Nû€0000>>>>00008Š8Ê8ª8ö8T8ZFßT¯NuFßaù€af``ê¬%FßaNu l` l 9A$Fßaà"HA faúAÕaúÈNua``ž9A$Fßa€aÐNuaú``ÿ~9A$Fßa^a°Nu9A$Fß l aV"HA faŒa„Nu9A$Fß l a*"HA fa`aXNug"2HA)A`6‚g "2HA)A`)l`‚gY@‚4&(*,. "JåHNûú`|NqNqNq ‚`~NqNq ‚/`hNqHÐ `lNqHÐ /`VHÐ`\NqHÐ/`FHÐ<`LNqHÐKøIøB§$I"x fFJQk$¶1@f&i OJ�g·Øg`öHSAëa÷ºa”Cé QÿÿfÎB„J—g| g4´¬o  g($,aœ‚)aØ®- K gT¯Lß88Nu g@î-|ð&Aí-H”@ç|0ãHâ@S@lü0€a÷p�FßAÖaø^a‚`í�R„R„`œ g*$@ g**º‚m´¬nº¬m` º¬o(J*K fÖNu•¬Õ¬ *,á�GôXf*, $T ,g"@Û© "Šg%INu*ŠgúBªNua÷ nw&Nu"_ g @Aèa÷H`ðNÑ g®JQk iµèlž`µél”µém˜fÿ@JQk’*iHUAíaöT gþâáŠ&J×ÂàŠ(@°ŠnþÒ ,áˆÐŒ°Šn fè`þ¾°‹gþzn gþ®�Šàˆ$`þf&”g"T#K(‹'L'l B¬ �‹àˆ'@‘¬`þHç $nLß0T—Nu$H"x ÿÿg *iµílµémÜJQkÞá‰Òв­bÎ` Cé QÿÿfÐ`ÀCøAíaõv&g C±Ál"H&fô g )áˆÐ‰µÀm¬%B f -��àˆ%@ $ƒ%If*Š`$"Š �‰àˆ�©#@ f *Ñ©#j "’$IJƒg$"C#JJª f )Ѫ%i $‘g"R#J- ð"x ²f(i,g Aìaõn`îCé QÿÿfÜAíaõZLß0NuT—`îHçÀ@ç&x 0|*S»ëfKëIí&ŒFß+@+H+N (o:”T¯;o+o Uïÿb+o aõ8+A2<ù’àHF@@ÀüúÒ@;ALß8NuBƒB€"x gbEé0)gP—ËJj f ·üf$&J` ±êf´’gB* g f4 f& ÕüS@fÄJƒf"0) K·üf J°i m‘ÈR€T—Nu JNu CNuB€*g B…:(0P$f `¾°P g Q… E læ*T—NuB‚BƒB�"x $( gd4)´i gRB(pJq fJƒf:& „g04)`*±üg±ñf$lµñf$lµñg"Jq k"€SDf²T—JƒfB€B‚Nu Nu qNu gJ�g` N".Nu gô"(g.(f".°®f²®gÖ x ±üg°¨f²¨g* h`æJf @Hz?)gB,,Jm g.¼•f*­ Jm f0-@ fB�2- m aù&`aî|ÛüSGfÂNu>, fz,, n6aüx`Nq`ìH$F,g z,, m6aüX` ` JEgJ0Ðf`ì ., m6aúÖ``ìB€00P, f:ÐpPáˆ%@B€$°P 5pP$ª00Páˆ%@B€00Páˆÿ%@ `ë^áˆ-@ `ëT»Îg-,f `ë¤`ëŒ`ëŒ., m6aú\`îJ…gæ0, 2,A'ÿg� f  gÁÁÁ� B‡,,g�  gB† ff-)f ¸ fÁ.8xΆެÞ¸xθ|à�"Ff�fAø rfRˆ-(fTˆHG>G‡ÿ?HG Gaõ&`(T�S€g`êº`êº2f"AÓa÷f`aì¼`ê¬&H.*á�g, "F m6aú¾`Ê`ÈJ0PfÂ!¬ P 0, @Oÿ gÀ1€P$1¼Pg1¼PH  àˆ1€PЇS€1€P �‰àˆ1€P�P&ðP$R(-K gá�-G$½Íf *n6aì^*NT�`éª., 8,(M¹Îg ,,f `éðNh)H<*l6AÕaø¬``éÎJ¬@g ,<àˆ°uPe °uPb`éºa`éX05P$@0g@$,25P$ uP a÷ì`aë¨<(SFÜuP;†PSh B†<(  g†1F JFf.05P$@ f$B€05PÐuPáˆB�25P’uPR� @aõú`aëPBuPaëˆBµP BµP$BµPBuPS-Nu*Na*n6aëb`è²»Îgéa`è¦$-2, l a÷D``èä`èØ`èì`èÔ&H$m6.+AÒa÷ `êJ…gÞB…:+á�, gº¬d`èÌ*,…ÿB$,,B, g,+ AÒaø¾` `žJ…faê’J0Pf�%«P B2P' àŽ5†PàŠÜBSF5†PD€Ð« àˆ5€P5¼P+g5¼P5«P$òP$R*Rk -k  NuB‚,"x hJ1 oè"Bƒ,g Co`çüá‹à Hz@çåŠ B/?8 5gaõ¸îNs8 5gaõ¨Ý`çj&M*n6., AÕaö†``ç¨J®@gNh àˆ°uPe°uPcç–·Îgçx"E$L.* k6aöP`J…f`çf`çf* ,**fB†<5P* gÜuPáŽB€05P�uP$R@*á�a÷n` `J…faéB`ç2J0Pfö"( à‰ÔA1�P1‚P’u@DAÒu@1�P!µ@ P 1µ@&P&65@$*gƒ* gÃÃ1ƒP$1¼Pg1¼PBu@ÉEaéËDBµ@ Bµ@$Bµ@Bu@S-R(20PÒpPá‰-A  g$$.´«g pP "(KaôÈ`aè„&L$+ ‚`æ,,`&"-6g*,,, Aaö‚`` J…gJ0Pf`æD..)g , g @ �!TCBg` Aì aõ¤``æ N.(f ((g`åø"(6g*,,, Aaö`` J…gJ0Pf`åâHzÿ”?,--gGÿg­-g- ,gSs­-f­ ,Ss3g³ gAóaègl A g+l  g+l  g- ,fAÕaè\`äV g í,`äF gØí ,`ä6J­@fä~B‚,gfäŽB‡, g*,, m6aô�`Nq`ä`fädB†&, $‚0¶‚l&ƒÿà‹HC8 pHC Caîz``ä ¼!ASQ!l!F Gè,!K!K!K 1G(áŠÔˆX‡”‡!BBƒ,481B&;01B$Bh*+H@`ãh $L(m@ gb.)g@"j B€ cPr fY fP@R@€°l(b0@ç|4,$6{ (Nû°$z,* n6aó�`Nq`ã`"F`ª`ã8`ãd0000<<<<00006‚6¨6Æ6ê6\6bFß`ã&Fßaå aÈa`Fß`âì¬%FßaÖ`â� l` l B9B$FßaàAÕaæp`âja‚a¼``¸9B$Fßa€ar`âD9B$Fß l a†aT`â&a>az``ÿv9B$Fßa`aã”Nu*N(n@ g@ç|4,$4{ Nû `áJ<6ª6<rª˜6666666600000000Fßaã �&\e�&\R€HÔ`ÖÂ&L- ,g×zJaÿœ(FCí0<"ÜQÈÿü+mt+m ”+\B0-è+\è-èø�-è@A--gÖj+lÿîô;lÿúø+lÿöú`ÖTAÖaÚD`Ör­ ,gÖ AÕaÚB`Ö6&L- ,gÖŠzaÿ(F--f­@`­ø+lð+lô+l ì+løBmø-è8�-èJgF--fí@`íø.-èg&z,-ð m6aæ>`Nq`Ö†(Ff+Tô­ ,0-,@ÿfAÕaÙ‚`Õ|@ç$, 6,|B„g (,nFß`ÕÔB… g *,fÆaÙCÀg*B†6, gƒg´�lJ„gÔ„`ô‚&\`6,$Ô„"x ,Eé|&J$S gλêfð*fèJ†kºªfÞ&’ R±éf (Ѹ NѸ J¸ J` *ѨF×J†f2%M„%D %lBj%EÃ5C”�|aÖBF×`‚RFCf* g0êªêB‚Hç~|aÖ FïLß~J†kÿF`@|$©#JF×J†kÿ0`*J†f| )g $@#RF×`ÿ`Fß`ÔXSFnFß`ÔVFß`Óü&Lz`aüà(FCí0<(ÙQÈÿü(íB8í@ -è€ÿÿÿ(À(í,0-è@ø8À(íð(íô(íì(íø--gÓ¨)môÿØ9møÿä)múÿà`Ó’*N"(n@ g<,'f8Nj~,'f‡<.)f&*, n6aãè`Nq><€™AÖaÏF`ÓŽ`Ó–&F`&J ‡oLÛ}Hî}LÛ|Hî| .‰0@ÿ/gÀ?@/[ÔÇNb@ç|4,$4{ Nû <d”d<|”|0606060600000000FßaÕ(Fß`Ò¬FßgÒ¢)l"lJ)j)iaô¸`Ò¶g B9B$Fß`Òlg B9B$Fß`ÒTFßgÒJ l aò aôn`Òl>,.(f‡J”gz, n6aâ°`Nq`Ò€J®@gÒX,‚Eø ˜J2 fÒJ¼ Eø ¨Äü%Ž %® 5¼ B² %” Br 5‡ 2` ò `Ѽ.(f -(fÒ,°-%cB® m%#`Ñò@$@&`цBG`><&,"x $0àH°i lF(¸±0f>Jq0 g8 10f ¾10g.‡0Jq0 j&10JGg Añ0aÔ`Ñ2Añ0aÔ°`Ñ&`Ñv`Ñz,*H"x 0 g i‘É*$ n6aá�`Nq`Ñ`$F&äŠS‚$ÙQÊÿü$F(M"x 0&Q—ÉÙË$ÌÛÃ$Í`ÐÒ.(f`Ñ"@ç2<€tÿaÑhNqLÜ.<&\¾„b˜‡Rƒ`ö|!à >&8 J–¸ N–¸ R–„׸ R¸ RaFß`Ð|"8 R’¸ JÒ¸ N�&\�"AB�tÿAúaÑ`aÒÂNu@ç|R¸ >¸&\ RaÀFßNs . €Kª{ûfÐfJnpg x :(fÐR x Uˆ, z n6aà”`Nq`Ð8*FLîÿN•,x *n6aÒ’`Ïâî ,`ÐJ”f@",g.(f".*y »üg(²­f-(f ½Ígí-g:*m`ØAÔaßz`B® `ÏÈ*H½Íg-(g .(f`ÏÆí-fϰ0,gÀí);@*;m,.-m +n°+n´­ ,­-­ ,g2 m”@ç|JÐküCèÿâJ© g»é g"i `î#m RP�Fßm-ÿ,|ð&­ ,gí-@ç|­-g <  @ ( g °�fô!m AÕaÒ°Fß`΢î)=H*fî*.(g. (gL× NiHî8aÐà.-g`$.)fÎ=H*=n,.î--n°-n´(N"x ,Eé&J@ç| g$@¹êfaÐ*`&J `êFß,)gaàb ,Tg @B¨!x<!È<&,(,ì)"x )-f2¸©f¬),)g) ,g¶©àf¸©äf ><@AÑaɤ"i f¾,)gaòòNqaõŽ,)gaõh~Cø ˜Eø ¨"Âü 1pf2g/aÈ.., ,gaÐR‡ ‡oÄaëæaà²J¬gH4<HB4,&,8,HD8,°*,²<,¶HF<<.,*>,,)g<<$LAìaÕfNq(JCø )g¹Àg"@`ò#laÏ‚B¸ rAÔaÙÚ`L× NiHî8aÏ$`ÌÜ-mp =m("--gÌš`ÌöIëÿþ6<€a&NuT—Nu&LLìpHF>,6.(Ba ``Ìø`ÌfAÓaÜL``pT—NuB€8 qH@0< @aÖø`pT—Nu*H4<B˜QÊÿü+S +fgJ€f `<.p .;Fp+@aÚ€fDÿ;D(+El+EB;|„FHD0àHgfJg¸.%c.%D%°c@$@&*¼!TCB|€,;|:;|0$MÕü`+J6$¼!TST|5|$5|D x  -"-±üg"°¨f²¨g h`ærAÕaØ^NqpT—NuaÍî`pT—Nu+x !Í Nufg2 .".` ", , g.(g J�g` .".+@+ANu.(gË<*<,, n6aÛ^`Nq`Ë.,gË0&Fp&ÝQÈÿü`Ê®@ç, gzR` ,gz,. n6aÛ`NqFß`ÊÀJ”f6".*y »üg,²­f-(f-,g-.fB*m`ÔAÔaÚ,` B® Fß`Êx*H½Íg-(g.(fFß`Êt-,f Fß`ÊZ-m -.fX>,aI þÌ+mlB<-(F€g@z,-B m6aÚf`NqFß`Ê4+FB:(0P$g00PÑpPÑpPBpPQ… E làBm., gGìLÛÿHíÿLÛHí |­,0-,@ßfF×AÕaÍfFß`É^@çJ”f8".*x »üg0²­f-(f½Íg--fí,gJ*m`ÐAÔaÙ` B® Fß`ÉR*H--fì½Íg-(g.(fFß`ÉFí,gFß`É,;m,.-m |­-gCø  I"h ³üg ³Ífî!i Fß`È¢|®-fî,|øÿ`Ȱ|øÿAÖaÌ€0.^gÈvBn^`Èü-n Hî)`È^-n Lî)`ÈN Ma`ÈF@ç|¨,f è-FßNu (Xg"Hçp$@"x ,GéµÓg&S`øaÊB¨XLßFß0(^g1|1@|ABh^aËèNu*N(n@ g(,'f$@ç|.-f 4,$4{ Nû Fß`Dz`Çö`ÇþN6z6N6z60606060600000000FßaÉäî , 9B$Fß`Ç„9B$Fß)l"lJ)j)iaé^`ÇX9B$Fß l aæÜaé@`Ç:..)f,fz n6a׆`Nq`Ç. F$H"*f`ÇDAø ŒAø ŒaɰGø "SJ“g²©gØGé`ì f¾.)f, n6B…*ç�Ea×&`Nq` B€* e c @dpËa„r Âj A fp ar"x hJ1gj´*fª *ÿg Jª fpÇaH *b *dpÌa4GêB…*g0 opÎaS…ç�2*²sPdpÏa ²sPd pÏa``\Q…lâp Àjf" * @fRˆHyT6? *(SJ“fp a¦Gì°¬fì*,Ig°,(gp a† ¬g(l`ð"SJ“gGé`ô j p(R@ @Hç€8aÏö` LßpaÿJLß"HíˆB˜S€nú*g)I&‰"¼!CCB*giHLê?Hé?))àáˆ3@B@3@@GêIép)+g(Û(ÛS`öB€*åˆ#@D&j ×Ó#K )ÿf#|Yæ*géI*géH`R*fbB€*&x hJ3g:(iD &TGëÿ¶*` &lJ¬g +*²n(K`ê¹Àg #K)I`#K&iD3|N¹J#|ZšLIéJ&ŒB€* x h¼ÿ iÑè*I/N�,_`‚`jp aøp aôpað gFo opÁaÜ n6B€S&@B… f )e: )c )€e* )�b".)f;°g,aÔ ` Nq`š×ËGû°ÖÓNÓÿþ Ê Øî *aºf² © ©HfV")D(A&TGëÿ¶ `&lJ¬faŤ°‹g(K`ê¹Áf$J«g&(k9|N¹J)|ZšLIìJ&kD&Œ` )k`B�)(&iDHzºÐ&Ÿ&x hB3Iø  &TJ”faÅD°‹gIë`ì(«Aø ŒaÆD IraÏÊ`@aÅp�az&Iaø"Kfpal)Hgp‚a`)IgpƒaT)Ig .(gþ€)Igp a6 )c )c )€e )�c*g< * d pÆa¢`žj :#j `Á< )AîDJ�g"P°©gAé `îF€NuX�B�Aø ŒaÄ `Á Aø ŒaÃú`Àp,m4B€-9f NpN@`F|q|ptAíp!­< g ­€pX‚€ ­8 T‚´-:cm:pLí<pažNuHç`CípB€ m"-+g|00J)fFÄ)fCéS`â0))gJ0`(©0-&ЈfS€�ˆ$J0U@løB0 UBlø@À@FÀ-Hg Hç:aÿ Lß\øLß|NuLß|ÿþNuHç m4pN@`Lßx`LßxNu8 4g @ça͆îFßHç€Ä*oKíÿ°"m/ N‘*_e -g*@`êLß#X�|Jx fNs`· 8 5gaÍ>îHç€Ä 8 g*@ m ( g / @çN°Fß*_ -`àLß#|Jx fNs`¶Ö DMotorola�M68000�Linkage�Editor�Version‚1.80‚03/01/85‚00:40:00‡Page�1    Command Line: -LINK ,VM02.RMS.LO,VM02.RMS.LL;H,M,I,X,-U,Z=40  8Options�in�Effect:‚A,-B,-D,H,I,-L,M,O,P,-Q,-R,-S,-U,-W,X  User Commands: SEG�RMS0:0�$E00,$EFFSEG�RMS2:2,3,4,5,6,7,15‚$F00INPUTˆ&.SYSPAR.ROINPUTƒM68XXX.RMS.ROINPUT…VM02.VECTTBL.ROIN†M68XXX.AKRQST.ROIN†M68XXX.ASQALOC.ROIN†M68XXX.ASQEVENT.ROIN†M68XXX.ASQFREE.ROIN†M68XXX.ASQGET.ROIN†M68XXX.ASQREAD.ROIN†M68XXX.ASQSTATS.ROIN†M68XXX.ASRINT.ROIN†M68XXX.ATSEM.ROIN†M68XXX.BKG.ROIN…NOCACHE.CACHE.ROIN†M68XXX.CDIR.ROIN†M68XXX.CISR.ROIN†M68XXX.CKDELAY.ROIN†M68XXX.CKEXPAT.ROIN†M68XXX.CMR.ROIN†M68000.COMINT.ROIN†M68XXX.DCLSHAR.ROIN†M68XXX.I DELAY.ROIN†M68XXX.DEMON.ROIN†M68XXX.DERQST.ROIN†M68XXX.DESEM.ROIN†M68000.DISPATCH.ROIN†M68XXX.DSEGX.ROIN†M68XXX.DSERVE.ROIN†M68XXX.DSEMX.ROIN†M68XXX.DSRVX.ROIN†M68XXX.EQDQ.ROIN†M68XXX.EXABRT.ROIN†M68000.EXCEPT.RO ¢ %3 */ .( 2 6 : > B F J N R V Z ^ b f j n r v z ~ ‚ † Š Ž ’ – šIN†M68000.EXIT.ROIN†M68XXX.EXMMSK.ROIN†M68XXX.EXMON.ROIN†M68XXX.EXMONVR.ROIN†M68XXX.EXQEVENT.ROIN†M68XXX.EXRQPA.ROIN†M68XXX.FNDGSEG.ROIN†M68XXX.FNDTSEG.ROIN†M68XXX.FNDUSEM.RO  DMotorola�M68000�Linkage�Editor�Version‚1.80‚03/01/85‚00:40:00‡Page�2  IN†M68XXX.GETTCB.ROIN†M68XXX.GTDTIM.ROIN†M68XXX.GTTASKID.ROIN†M68XXX.GTTNAME.ROIN†M68XXX.KILLER.ROIN‡NOMMU.LOADMMU.ROIN†M68XXX.LOGPHY.ROIN†M68XXX.PAGEALOC.ROIN†M68XXX.PAGEFREE.ROIN†M68XXX.PAUSE.ROIN†M68XXX.POWRFAIL.ROIN†M68XXX.PSTATE.ROIN†M68000.PVSEM.ROIN†M68XXX.RCVSA.ROIN‡M6840.RDTIMER.ROIN†M68XXX.READY.ROIN†M68XXX.RELINQ.ROIN†M68XXX.RESUME.ROIN†M68XXX.REXMON.ROIN†M68XXX.RQSTPA.ROIN†M68XXX.RSTATE.ROIN†M68XXX.RTEVENT.ROIN†M68XXX.SEGALOC.ROIN†M68XXX.SEGDEAL.ROIN†M68XXX.SEGSHAR.ROIN†M68XXX.SELFTEST.ROIN†M68XXX.SERVE.ROIN†M68XXX.SETPRI.ROIN†M68XXX.SGSEM.ROIN†M68000.SINT.ROIN†M68XXX.SNAPTRAC.ROIN†M68XXX.SPURINT.ROIN†M68XXX.STDTIM.ROIN†M68000.SUPER.ROIN†M68XXX.SUSPEND.ROIN†M68XXX.TERM.ROIN†M68XXX.TFRSEG.ROIN‡M6840.TIMEINT.ROIN†M68XXX.TRACER.ROIN†M68000.TRAP0.ROIN†M68000.TRAP1.ROIN†M68XXX.TSKATTR.ROIN†M68XXX.TSKBORN.ROIN†M68XXX.TSKINFO.ROIN†M68XXX.TSKMOVE.ROIN†M68XXX.TSKSTART.ROIN†M68XXX.TSKWAIT.ROIN†M68XXX.USERVECT.ROIN†M68XXX.WAKEUP.ROIN†M68XXX.WTEVENT.ROINPUTƒM68XXX.RMSPATCH.ROEND  DMotorola�M68000�Linkage�Editor�Version‚1.80‚03/01/85‚00:40:00‡Page�3    !Object Module Header Information: 4Module…Ver�Rev�Language�Date…Time…Creation�File�Name ;SYSPAR‡5ƒ1�Assembly�03/01/85�00:38:48�SREL:9999..XSYSPAR.AG/‹System�parameters�at�$C00;�Crash�save�at�$800. :RMSŠ5ƒ1�Assembly�02/28/85�23:10:17�SREL:9999.M68XXX.RMS.SA‹68xxx�RMS�INITIAL�ENTRY�POINT AVECTTBL†5ƒ1�Assembly�03/01/85�00:39:22�SREL:9999.VM02.XVECTTBL.AG"‹RMS68K�vector�table�for�the�VM02. @AKRQST‡5ƒ1�Assembly�02/28/85�22:16:40�SREL:9999.M68XXX.AKRQST.SA-‹68xxx�DIRECTIVE--ACKNOWLEDGE�SERVICE�REQUEST BASQALOC†6ƒ0�Assembly�02/28/85�22:17:58�SREL:9999.M68XXX.ASQALOC.SA'‹68xxx�DIRECTIVE--ALLOCATE�ASQ“07/13/84 DASQEVENT…6ƒ0�Assembly�02/28/85�22:19:25�SREL:9999.M68XXX.ASQEVENT.SA&‹68xxx�DIRECTIVE--QUEUE�EVENT’07/13/84 BASQFREE†5ƒ2�Assembly�02/28/85�22:21:41�SREL:9999.M68XXX.ASQFREE.SA ‹68xxx�DIRECTIVE--DEALLOCATE�ASQ AGTEVENT†6ƒ0�Assembly�02/28/85�22:22:36�SREL:9999.M68XXX.ASQGET.SA$‹68xxx�DIRECTIVE--GET�EVENT�07/13/84 BASQREAD†6ƒ0�Assembly�02/28/85�22:24:23�SREL:9999.M68XXX.ASQREAD.SA%‹68xxx�DIRECTIVE--READ�EVENT�07/13/84 DASQSTATS…5ƒ1�Assembly�02/28/85�22:25:53�SREL:9999.M68XXX.ASQSTATS.SA ‹68xxx�DIRECTIVE--SET�ASQ�STATUS @ASRINT‡6ƒ0�Assembly�02/28/85�22:27:18�SREL:9999.M68XXX.ASRINT.SA/‹68xxx�TRAP�0--PROVIDE�EVENT�INTERRUPTŽ07/13/84 >ATSEMˆ5ƒ1�Assembly�02/28/85�22:28:04�SREL:9999.M68XXX.ATSEM.SA1‹68xxx�DIRECTIVES--CREATE�AND�ATTACH�TO�SEMAPHORE :BKGŠ5ƒ1�Assembly�02/28/85�22:29:44�SREL:9999.M68XXX.BKG.SA,‹M68xxx�--�Background�and�guarded�processing ?CACHEˆ5ƒ1�Assembly�02/28/85�23:42:57�SREL:9999.NOCACHE.CACHE.SA&‹Cache�code�for�systems�with�no�cache. DELAYˆ5ƒ1�Assembly�02/28/85�22:39:45�SREL:9999.M68XXX.DELAY.SA‹68xxx�DIRECTIVE--DELAY >DEMONˆ5ƒ1�Assembly�02/28/85�22:41:01�SREL:9999.M68XXX.DEMON.SA*‹68xxx�DIRECTIVE--DETACH�EXCEPTION�MONITOR @DERQST‡5ƒ1�Assembly�02/28/85�22:41:58�SREL:9999.M68XXX.DERQST.SA0‹68xxx�DIRECTIVE--SET�USER/SERVER�REQUEST�STATUS >DESEMˆ5ƒ1�Assembly�02/28/85�22:42:59�SREL:9999.M68XXX.DESEM.SA'‹68xxx�DIRECTIVE--DETACH�FROM�SEMAPHORE DDISPATCH…5ƒ1�Assembly�02/28/85�21:46:56�SREL:9999.M68XXX.DISPATCH.SA‹68000�DISPATCHER >DSEGXˆ5ƒ1�Assembly�02/28/85�22:44:13�SREL:9999.M68XXX.DSEGX.SA&‹68xxx�TRAP�0--DEALLOCATE�ALL�SEGMENTS @DSERVE‡5ƒ1�Assembly�02/28/85�22:45:31�SREL:9999.M68XXX.DSERVE.SA,‹68xxx�DIRECTIVE--DEALLOCATE�SERVER�FUNCTION >DSEMXˆ5ƒ1�Assembly�02/28/85�22:44:56�SREL:9999.M68XXX.DSEMX.SA)‹68xxx�TRAP�0--DETACH�FROM�ALL�SEMAPHORES >DSRVXˆ5ƒ1�Assembly�02/28/85�22:46:31�SREL:9999.M68XXX.DSRVX.SA)‹68xxx�TRAP�0--DEALLOCATE�SERVER�FUNCTION