IMD 1.17: 25/11/2014 12:30:59 82VKXBVERDOS D* BT13:0 68K VERSADOS/RMS68K OBJECT 4.5 (DS,DD 96 tpi 5.1/4" DISK) REVISED: 04/22/86 DISK 13 OF 24  BT13 82VKXBVERDOS 0420±`- 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.CFP(%08#@ 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 SIO driver files for sysgen=/@„\1:9998.COPYGEN.SIODRV.CFO=/*----------------------------------------------------------------------------)=/* Copy all MPSC driver files for sysgen=/@„\1:9998.COPYGEN.MPSCDRV.CFO=/*----------------------------------------------------------------------------(=/* Copy all PRT driver files for sysgen=/@„\1:9998.COPYGEN.PIADRV.CFO=/*----------------------------------------------------------------------------+=/* Copy all VME050 driver files for sysgen=/@„\1:9998.COPYGEN.M050DRV.CF=/@„\1:9998.COPYGEN.P050DRV.CF=/@„\1:9998.COPYGEN.MPCCDRV.CFO=/*----------------------------------------------------------------------------+=/* Copy all VME300 (GPIB) files for sysgen=/@„\1:9998.COPYGEN.M300DRV.CFO=/*----------------------------------------------------------------------------$=/* Copy all VME319 files for sysgen=/@„\1:9998.COPYGEN.M319DRV.CFO=/*----------------------------------------------------------------------------F=/* Copy all VME316 (VMEbus to I/O channel interface) files for sysgen=/@„\1:9998.COPYGEN.M316DEF.CFO=/*----------------------------------------------------------------------------$=/* Copy all VME320 files for sysgen=/@„\1:9998.COPYGEN.M320DRV.CFNNNNNN O=/*----------------------------------------------------------------------------$=/* Copy all VME331 files for sysgen=/@„\1:9998.COPYGEN.M331DRV.CFO=/*----------------------------------------------------------------------------$=/* Copy all VME360 files for sysgen=/@„\1:9998.COPYGEN.M360DRV.CFO=/*----------------------------------------------------------------------------/=/* Copy all VME435 (mag tape) files for sysgen=/@„\1:9998.COPYGEN.M435DRV.CFO=/*----------------------------------------------------------------------------7=/* Copy all RWIN1 (Winchester) driver files for sysgen=/@„\1:9998.COPYGEN.RWINDRV.CFO=/*----------------------------------------------------------------------------*=/* Copy all disk related files for sysgen=/@„\1:9998.COPYGEN.DSKPARAM.CFO=/*----------------------------------------------------------------------------=/*=/**=/* ==== Start system related file copyingO=/*-----------------------------------------------------------------------------=/*‚Copy�all�VME130�specific�files�for�sysgen=/@„\1:9998.COPYGEN.VME130.CFO=/*----------------------------------------------------------------------------!=/* Copy all EET files for sysgen=/@„\1:9998.COPYGEN.EET.CFO=/*----------------------------------------------------------------------------'=/* Copy all FHS & IOS files for sysgen=/@„\1:9998.COPYGEN.FHSIOS.CFO=/*----------------------------------------------------------------------------!=/* Copy all FMS files for sysgen=/@„\1:9998.COPYGEN.FMS.CFO=/*----------------------------------------------------------------------------$=/* Copy all LOADER files for sysgen=/@„\1:9998.COPYGEN.LOADER.CFO=/*----------------------------------------------------------------------------N<=/* Copy all BEGIN/END files for sysgen (OSLIST and VERSAPT)=/@„\1:9998.COPYGEN.BEGINEND.CFO=/*----------------------------------------------------------------------------!=/* Copy all IOI files for sysgen=/@„\1:9998.COPYGEN.IOI.CFO=/*----------------------------------------------------------------------------'=/* Copy all CNFG TASK files for sysgen=/@„\1:9998.COPYGEN.CNFGTASK.CFO=/*----------------------------------------------------------------------------!=/* Copy all IOC files for sysgen=/@„\1:9998.COPYGEN.IOC.CFO=/*----------------------------------------------------------------------------!=/* Copy all .EQ files for sysgen=/@„\1:9998.COPYGEN.EQ.CFO=/*----------------------------------------------------------------------------2=/*‚Copy�all�the�rest�of�the�root�files�for�sysgen=/@„\1:9998.COPYGEN.ROOT.CFO=/*----------------------------------------------------------------------------=/*2=/*†VME130.COPYSGEN.CF‚completed.‰Have�a�nice�day!=/*N=/*‚No�"NOARG"�and�"=END"�because�independent�driver�release�items�may�follow!NNN 6INITIO„IDNTƒ6,1�RMS68K�I/O�initializer�for�the�VME130.O*******************************************************************************O*******************************************************************************O**********************************************************************************É***E***…ROUTINE:‚INITIO�--�RMS68K�I/O�INITIALIZER�FOR�THE�VME130�BOARD.†****É***J***…ENVIRONMENT:‚Part�of�the�RMS68K�exec�for�the�Motorola�68000�family.***(***‡Copyright�1983�by�Motorola,�Inc.¢******É***D***…FUNCTION:‚Routines�from�this�module�are�called�by�the�RMS68K‡***E***‡routine�INIT�during�system�initialization.‚All�board-specific„***.***‡initialization�is�done�in�this�module.œ******É***G***…NOTES:‚This�module�is�SUBSed,�ASMed,�and�LINKed�at�SYSGEN�time.„***?***‡All�modules�will�run�at�level�7�and�in�supervisor�mode.‹******É***O*******************************************************************************O*******************************************************************************O*^***************************************************************************** *,*‚Revision�history�(add�new�changes�to�top).*…Date†Author‚ChangesI*…--------‚------‚-------------------------------------------------------NNNHQYOaBiJq!y-�‰2‘6*…02/25/86ƒJAH„Added�code�to�enable�cache�accelerator.@*…06/25/85ƒCBS„Added�fix�to�cache�clear�to�fix�bug�in�some�early*—68020�masks.*4*…05/01/85ƒCBS„Converted�module�from�VM04�to�VME130.*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:*…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.NNNN N4Š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.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*‰VME13X.CTRLSTAT.EQ*‰M68020.CACR.EQ*ŠNOLISTŠINCLUDE�&.UTILITY.MCŠINCLUDE�Z8036.Z8036.EQŠINCLUDE�VME13X.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�VME130'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<<2+C1EN‹Enable�port�A#C1EN…SET‡1<<6+C1EN‹Enable�Counter�1 C1EN…SET‡1<<7+C1EN‹Enable�port�B*)*ˆset�up�control/status�reg�for�Counter�1* C1SR…SET‡$001C1SR…SET‡0<<0+C1SR‹This�is�a�read-only�status�bit*¦shows�count�in�progress,C1SR…SET‡1<<1+C1SR‹This�is�a�write-only�bit,*¦trigger�enabled8C1SR…SET‡1<<2+C1SR‹Count-down�sequence�to�resume�enabled0C1SR…SET‡0<<3+C1SR‹Read�counter�control�disabled.C1SR…SET‡0<<4+C1SR‹Int.�error,�a�read-only�bitC1SR…SET‡0<<5+C1SR‹Int.�pending"*¦1�=�the�timer�requires�servicing)C1SR…SET‡1<<6+C1SR‹Enable�timer�interrupt-C1SR…SET‡1<<7+C1SR‹Int.�under�service�enabled* TIMERST: +ŠSAVEƒD0/A1ŽSave�registers�we'll�blow�away. E‰MOVE.W�TIMSLIC(PC),TIMESLIC‚#�TIMER�INTERRUPTS�BEFORE�TASK�INTERRUPT‰LEA„Z8036,A1�GET�TIMER�ADDRESS#‰MOVE.L�A1,PTMADDR�SAVE�IT�FOR�EXEC!‰BEQ.L‚TIMERBE�BRANCH�IF�NO�TIMER)‰PEA„TIMERBE(PC)ŒWHERE�TO�GO�ON�BUS�ERROR$‰MOVE.W�#'BE',-(A7)ŒSET�BUS�ERR�FLAG**7‰MOVE.B„#CSC,CT1MO(A1)†Set�continuous�mode�on�counter�1*‰NOP›This�NOP�forces�the�execution�unit�to$*§wait�for�the�bus�interface�unit�to%*§complete�on�a�68020�(in�case�we�get*§a�bus�error). *H*‚Get�the�timer�"tick"�interval�(in�milliseconds)�and�save�it�in�SYSPAR.*8ŠMOVEƒTIMINTVA(PC),D0„D0�<--�tick�interval�from�INITDAT.#ŠMOVEƒD0,TIMINTV‰Save�it�in�SYSPAR. *L*‚Now�calculate�the�number�of�cycles�the�timer�should�count�between�"ticks."N*‚Apparently�we�have�a�2�Mhz�input,(4�Mhz�input,�but�Z8036�runs�at�half�speed)@*‚so,�(#�of�cycles/tick)‚=‚(2000�cycles/msec)�*�(#�of�msec/tick)*'ŠMULUƒ#2000,D0‹D0�<--�#�of�cycles/tick.>ŠMOVE.B�D0,CT1PL(A1)‡Give�the�chip�the�least�significant�part.3ŠLSR„#8,D0ŽGive�the�chip�the�most‚significant�part.ŠMOVE.B�D0,CT1PM(A1)‡* **ˆNow�start�timer�ticking*'‰MOVE.B�#C1EN,MCCR(A1)ˆENABLE�COUNTER�1(‰M OVE.B�#C1SR,C1CSR(A1)‡ENABLE�INTERRUPT.‰ADD.L‚#6,A7‘REMOVE�'BE'�AND�BUS�ERROR�ADDRESS !ŠRESTORE�D0/A1�Restore�registers.‰RTSšBACK�TO�INIT***;TIMERBE‚MOVE.L‚#CRASHSAV,PTMADDR‚USE�DUMP�POINTER�FOR�TIMER!ŠRESTORE�D0/A1�Restore�registers.‰RTS˜BACK�TO�INIT ***‰PAGE ‰XDEF„INITIO ‰SECTIONƒ8.**********************************************.*ƒValues�to�put�in�VME130�control�registers.�*.************************************************ˆMaster�Interrupt�Control�Reg* INTCN„SET‡$00$INTCN„SET‡0<<0+INTCNŠ0�=�Clear�reset*¦1�=�Software�reset3INTCN„SET‡1<<1+INTCNŠEnable�right�justified�address1INTCN„SET‡0<<2+INTCNŠTimer�vector�includes�status *¦disabled2INTCN„SET‡0<<3+INTCNŠPort�B�vector�includes�status *¦disabled2INTCN„SET‡0<<4+INTCNŠPort�A�Vector�includes�status *¦disabled6INTCN„SET‡1<<5+INTCNŠ1�=�no�int.�vector�during�an�IACK*¦0�=�output�the�int.�vector6INTCN„SET‡0<<6+INTCNŠ1�=�disable�int.�from�lower�chain*¦0�=�operate�normally,INTCN„SET‡1<<7+INTCNŠEnable�master�interrupt**‚Control�reg�0*+ICNT0„SET…$00�VMEbus�int.�vector�number�reg*£These�bits�are�enabled�during *£IACK�cycles**‚Control�reg�1*ICNT1„SET…$00�Initialize�it'ICNT1„SET…0<<0+ICNT1‰NA�(not�available)ICNT1„SET…0<<1+ICNT1‰NAICNT1„SET…0<<2+ICNT1‰NAICNT1„SET…0<<3+ICNT1‰NAICNT1„SET…0<<4+ICNT1‰NAICNT1„SET…0<<5+ICNT1‰NAICNT1„SET…0<<6+ICNT1‰NA"ICNT1„SET…1<<7+ICNT1‰Disable�MPIRQ**‚Control�reg�2* ICNT2„SET…$009ICNT2„SET…0<<0+ICNT2‰1�=�VMEbus�int.�status�int.�disabled%*£0�=�VMEbus�int.�status�int.�enabledICNT2„SET…0<<1+ICNT2‰Ack�VBIRQ1ICNT2„SET…0<<2+ICNT2‰Ack�VBIRQ2ICNT2„SET…0<<3+ICNT2‰Ack�VBIRQ3ICNT2„SET…0<<4+ICNT2‰Ack�VBIRQ4ICNT2„SET…0<<5+ICNT2‰Ack�VBIRQ5ICNT2„SET…0<<6+ICNT2‰Ack�VBIRQ6 ICNT2„SET…1<<7+ICNT2‰mask�VBIRQ7**‚Control�reg�3* ICNT3„SET…$00ICNT3„SET…0<<0+ICNT3‰Reserved0ICNT3„SET…0<<1+ICNT3‰Interrupt�Request�Level�IL0ICNT3„SET…0<<2+ICNT3‰IL1ICNT3„SET…0<<3+ICNT3‰IL2*§IL0-2�corresponds�to�VBIRQxICNT3„SET…0<<4+ICNT3‰Reserved;ICNT3„SET…\SYSFAIL<<5+ICNT3‚0�=�disable�SYSFAIL�interrupts. *§1�=�enable‚SYSFAIL�interrupts.0ICNT3„SET…1<<6+ICNT3‰0�=�disable�all�interrupts.*§1�=�enable�all�interrupts.4ICNT3„SET…0<<7+ICNT3‰Disallow�VMEbus�monitor�overrun *£interrupt**‚Control�register�5.*ICNT5„SET…$00�Initialize�it.)ICNT5„SET…0<<0+ICNT5‰1�=�SYSFAIL�asserted*£0�=�SYSFAIL�negated2*ICNT5„SET…1<<1+ICNT5‰1�=�32�bit�VMEbus�addressing*£0�=�24�bit�VMEbus�addressing/*ICNT5„SET…1<<2+ICNT5‰1�=�32�bit�data�port�size*£0�=�16�bit�data�port�size>ICNT5„SET…1<<3+ICNT5‰1�=�disable�VMX32bus�diagnostic�interrupt**£0�=�enable�VMX32bus�diagnostic�interrupt8ICNT5„SET�1<<4+ICNT5�0�=�let�PAL�decode�68020�addresses.)*§1�=�let�VMX32bus�decode�68020�addresses*=ICNT5„SET�1<<5+ICNT5�0�=�force�VMX32bus�writes�to�the�VMEbus.'*§1�=�allow�writes�across�the�VMX32bus.***ICNT5„SET�0<<6+ICNT5�0�=�enable�VMX32bus.*§1�=�disable�VMX32bus.*ICNT5„SET…0<<7+ICNT5ŒReserved**G*‚Set�up�the�value�with�which�to�initialize�the�CACR.‚This�value�shouldD*‚cause�the�cache�to�be�flushed�and,�if�sysgen�parameter�CACHE020�so%*‚specifies,�should�enable�the�cache.*CACR_VALUE‚SETŠ1<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*‚>>>>>>>µ<<<<<<<*‚>>>>>>>•NOTICEš<<<<<<<*‚>>>>>>>µ<<<<<<<>*‚>>>>>>>…When�incorporating�any�drivers�during�SYSGEN„<<<<<<<?*‚>>>>>>>…that�require�memory�allocated�for�them�as�perƒ<<<<<<<?*‚>>>>>>>…the�driver�package�instructions�-�this�is�theƒ<<<<<<<,*‚>>>>>>>…spot�the�file(s)�go�into!!–<<<<<<<*‚>>>>>>>µ<<<<<<<=*‚>>>>>>>…This�is�also�the�spot�for�code�for�a�driver…<<<<<<<>*‚>>>>>>>…that‚requires�other�types�of�initialization,ƒ<<<<<<<0*‚>>>>>>>…such‚as�clearing�an�interrupt.‘<<<<<<<*‚>>>>>>>µ<<<<<<<*‚>>>>>>>‘MERGE�IT�HERE—<<<<<<<*<*ˆWhen�you�write�the�code�that�is�to�be�merged�here,�wrap�it*ˆaround�with�the�following:*NN:*ˆ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***********************************************************************    ‰ENDNNNN N**ˆVME130.SYSTEM.CI*L****************************************************************************@*‚This�file�contains�all�board/system�dependencies�for�VME130.Œ*&*‚It�is�called�from�"&.VERSADOS.CD".¦**Ê*E*‚The�user�should�not�have�to�modify�this�file�except�under�extreme‡**‚circumstances.º*L**************************************************************************** <*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~**†ON�BOARD�RAM�ADDRESSES*>*†VMEbus�drivers�require�the�following�target�system�dependentB*†variables�to�be�defined�when�the�macro�file�DUALPORT.MC�is�used:<*†Note�that�the�ONBD$HI�parameter�may�vary�on�the�VME110�and<*†and�VME101�systems�depending�on�the�size�and�number�of�RAM<*†chips�used�on�the�processor�card.‚The�values�shown�are�the?*†minimum�requirements.�Modify�that�parameter�to�match�your�own*†system�if�different.**;ONBD$LOƒ=�$0‹Low�value�for�on-board�ram�(as�seen�by�driver)RAM$SQ„=�$0‹Difference�between�on-board�ram�address�as�seen�by*˜driver�and�device.JOFFBD$LO‚=�\ONBD$LO+\RAM$SQ�Low�value�for�on-board�ram�(as�seen�by�device)JOFFBD$HI‚=�\ONBD$HI+\RAM$SQ�High�valu�for�on-board�ram�(as�seen�by�device) FMSG‰******************************************************************MSG‰**ˆAddresses�of�timer,�etc.FMSG‰****************************************************************** #TIMER…=�$FFFB0000„Address�of�timer.3CLOCKFRQ‚=�0ŒNumber�of�clock�ticks�per�millisecond.7PANEL…=�$0‹Address�of�front�panel�(not�used�on�VME130).5TRCFLAGƒ=�0ŒTrace�flag.‚Zero�implies�don't�trace.‚The/*˜setting�of�bits�in�the�TRCFLAG�parameter�will1*˜control�which�events�cause�an�entry�to�be�built*˜in�the�trace�table.*˜Bit�#�in�TRCFLAG†Event *›15‘TRAP�#1*›14‘I/O�interrupt�not�claimed*°by�user�task.*›13‘Timer�interrupt.*›12‘User�trap�(2-15)*›11‘Exception *›10‘Dispatch*œ9‘I/O�interrupt�claimed�by *°user�task*œ8‘Return�from�LOADMMU™5¢ª²4º$*œ7‘Simulated�interrupt*œ6‘SYSFAIL�interrupt.**?SYSFAILƒ=�0ŒDetermines�whether�or�not�the�operating�system�will5*˜be�interrupted�when�SYSFAIL�is�asserted�on�the�bus.2*˜Some�intelligent�boards�will�assert�SYSFAIL�when0*˜they�experience�a�failure�of�some�kind.‚If�you5*˜have�such�boards�in�the�system,�AND�THE�DRIVERS�FOR3*˜THESE�BOARDS�HAVE�SYSFAIL�HANDLERS,�then�you�will2*˜probably�want�SYSFAIL�interrupts�enabled.‚If�the4*˜appropriate�SYSFAIL�handlers�are�not�written,�then5*˜taking�a�SYSFAIL�interrupt�will�hang�up�the�system,0*˜so�you�would�want�SYSFAIL�interrupts�disabled.!*š0�=�disable�SYSFAIL�interrupts. *š1�=‚enable�SYSFAIL�interrupts.FMSG‰******************************************************************.MSG‰**ƒLocal�terminal/printer�device�addresses#MSG‰**ƒShort�I/O�space�base�address&MSG‰**ƒShort�I/O�space�address�offsetsFMSG‰****************************************************************** :&VECTNOƒ=�$FFŠStarting�Vector�Number‚used�by�IOC.IPCDRV.AG8LTDA$01ƒ=�$FFFB0040„VME130�local�terminal�port�1�address8LTDA$02ƒ=�$FFFB0050„VME130�local�terminal�port�2�address 3SIOBASEƒ=�$FFFF0000„Base�address�of�Short�I/O�space&DEVADDƒ=�\SIOBASE.RMS.CI�file�and�has�a�value�equal!*œto�the�initial�program�counter.*@*ˆThe�following�parameters�are�used�to�define�memory�partitions.A*ˆIf�only�partition�0�exists,�then�MEMEND2�should�be�set�to�zero.*NNN@NOPARTSƒ=�1ŒNumber�of�memory�partitions�(needed�by�&.INITMEM.AG)AMEMEND1ƒ=�$400000†The�endƒof�partition�0�(assumed�to�start�at�0).&MEMEND2ƒ=�$0‹The�start�of�partition�1.$MEMEND3ƒ=�$0‹The�endƒof�partition�1.:WHERLOAD‚=�0ŒMemory�address�where�boot�file�will�be�loaded6*˜If�nonzero,�VERSAdos�will�be�moved�at�initialization*˜time.7CACHEF„=�0ŒNot�used�by�VME130�(needed�for�&.INITDAT.AG) =CACHE020‚=�1ŒThis�flag�determines�whether�the�68020's�on-chip!*˜instruction�cache�will�be�used:*š0�=�don't�use�it. *š1�=�use�it. 7*˜The�following�flags�determine�which�types�of�accesses8*˜will�get�cached�by�the�VME130's�instruction/data�cache1*˜In�each�case,�0�=�don't�cache�it,�1�=�cache�it.0CACHEUIƒ=�1Œ1�=�cache�user‡instruction�accesses.)CACHEUDƒ=�1Œ1�=�cache�user‡dataˆaccesses.6CACHESIƒ=�1Œ1�=�cache�supervisor�instruction�accesses./CACHESDƒ=�1Œ1�=�cache�supervisor�dataˆaccesses.3ASMTYPEƒ=�0ŒType�of�assembler�to�use�for�INITIO1.AG *œ0�-�Use�ASM*œ1�-�Use�ASM020 >****************************************************************‰Vector�numbers£**>***************************************************************-IOCVEC1ƒ=�$50ŠI/O�channel�interrupt�1�vector.-IOCVEC2ƒ=�$51ŠI/O�channel�interrupt�2�vector.-IOCVEC3ƒ=�$52ŠI/O�channel�interrupt�3�vector.-IOCVEC4ƒ=�$53ŠI/O�channel�interrupt�4�vector.**IOCLVL1ƒ=�2ŒI/O�channel�interrupt�1�level.*IOCLVL2ƒ=�3ŒI/O�channel�interrupt�2�level.*IOCLVL3ƒ=�4ŒI/O�channel�interrupt�3�level.*IOCLVL4ƒ=�5ŒI/O�channel�interrupt�4�level. EMS G‰*****************************************************************)MSG‰**‚Parameters�about�table�sizes,�etc.EMSG‰***************************************************************** 'PAGESIZE‚=�\PGSIZE†From�.RMS.CI*)ASN‡=�0Œ#�of�address�spaces--not�used�but!*˜needed�to�satisfy�&.INITDAT.AG. EMSG‰***************************************************************** MSG‰**½**#MSG‰**ŒADDRESS�AND�DATA�BUS�SIZE˜**=MSG‰**…---------------------------------------------------…**'MSG‰**ŒA$SIZE�=‚WIDTH�OF�ADDRESS�BUS“** MSG‰**½**)MSG‰**Œ32…=‚32�BIT�EXTENDED�ADDRESSING�**)MSG‰**Œ24…=‚24�BIT�STANDARD�ADDRESSING�** MSG‰**½**$MSG‰**ŒD$SIZE�=‚WIDTH�OF�DATA�BUS–** MSG‰**½**#MSG‰**Œ32…=‚32�BIT�LONGWORD�DATA“**MSG‰**Œ16…=‚16�BIT�WORD�DATA—** MSG‰**½**EMSG‰***************************************************************** D$SIZE„=�32 A$SIZE„=�32 GMSG‰*******************************************************************>MSG‰*ƒCopy�the�system�initializer�into�M68XXX.INIT.RO�based�on:MSG‰*ƒthe�type�of�memory�allocation�defined�at�RMSGEN�timeMSG‰*ƒin�.RMS.CD.GMSG‰******************************************************************* =COPY‡&.MTYPE.SI,MTYPE.SI;Y IFEQˆ\MEMALOC'ƒ=COPY‡BESTFIT.INIT.RO,M68XXX.INIT.RO;YENDC IFNEˆ\MEMALOC%ƒ=COPY‡BUDDY.INIT.RO,M68XXX.INIT.RO;YENDC GMSG‰*******************************************************************?MSG‰*ƒCopy�C40O44.SYSPAR.RO�into�&.SYSPAR.RO�to�make�it�genericAMSG‰*ƒfor�.LG�files�and�possible�for�sysgening�more�than�1�systemMSG‰*ƒper�account�#GMSG‰******************************************************************* $=COPY‡C40O44.SYSPAR.RO,&.SYSPAR.RO;YNNN'EET START AGÎÎY  $VERSADOSCI×× R  $**ˆ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ƒ&.KILL.MC*ˆINCLUDEƒ&.KILLIOI.MC*‰NOLIST‰INCLUDEƒ&.TR1.EQ‰I NCLUDEƒ&.KILL.MC‰INCLUDEƒ&.KILLIOI.EQ‰LISTRESERVED�EQU‡0*œReserved�field�value‰PAGE‰XDEF†EETSTART   ‰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 ŠIF��THEN.S �MOVEM.LƒD0/A0,-(A7)*œSave*¡RMS68K�returned�error�code*¡Parameter�block�address *¦on�stack�MOVE.L„#RESERVED,-(A7)�MOVE.L„(A7),-(A7)*œReserved�words�moved�to�stack�MOVE.L„(A7),-(A7)*œTask�defined�field�value"�MOVE.L„#KILLIOI<<8+KILLOI11,-(A7)*œAbort�Code�(MM,EE)+*œA7�=�Address�of�parameter�block�to�use�in*¡bringing�the�system�down�KILL.CRITICAL�A7.*œWe�will�halt�the�system�in�an�orderly�manner‰ENDI +*œBring�system�down�if�unable�to�start�task…ENDC‰RTS*œReturn�to�caller‰ENDNÆZ**ˆEET.VERSADOS.CI*BMSG‰**************************************************************MSG‰**ˆEET�EQU�valuesBMSG‰***************************************************************�Auto�break�inactive*›1�-->�Auto�break�active*˜Bit�1:*›0�-->�Auto�logon�inactive*›1�-->�Auto�logon�active*2LOGMSG1ƒ=�"VERSAdos�Version�"�Logon�message�part�1'REVNUMBR‚=�"�4.5�"†Logon�message�part�2*1*˜REVNUMBR�is�used�dynamically�in�CMDLIST�as�part*¡of�the�log�on�message.*Ø TASKˆ&.EET.LO,&EETSTATE…=�'DORM'ATTRIB„=�'CRIT'ATTRIB„=�'SYST' SESSIONƒ=�2PRIORITY‚=�$C8*�VVVVV‚BAW�10/1/85&L0 = *&L1 =\&L0/\PAGESIZE*\PAGESIZEIFNE \&L0-\&L1&L0 = \&L1+\PAGESIZEENDCPC�=�\&L0ŒEET�load�addr. EETSTR = ** ^^^^^SUBSˆ&.EET.LG,&.CMDLIST.AG0ASM‰&.CMDLIST.AG,&.CMDLIST.RO,\WORKLS;R,\LISTOPT LINKˆ&.EET.LGEND‰EET5* Build VERSAdos patch chain file .VERSAPT.CF!=COPY‡VERSAPT.EET.CF,VERSAPT.CF;ANNNNNN'FMS IOI AGììS  $IXR AGõõ  $VERSADOSCIþþ  $* *ˆ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 ENDNNNNNNí**ˆFMS.VERSADOS.CI*AMSG‰*************************************************************'MSG‰**ˆFMS�--�File�Management�System”**AMSG‰*************************************************************TASKˆ&.FMS.LO,.FMSSTATE…=�'DORM'ATTRIB„=�'CRIT'ATTRIB„=�'RTIM'ATTRIB„=�'SYST'PRIORITY‚=�$D0*�VVVVV‚BAW�10/1/85&L0 = *&L1 =\&L0/\PAGESIZE*\PAGESIZEIFNE \&L0-\&L1&L0 = \&L1+\PAGESIZEENDCPC�=�\&L0ŒFMS�load�addr.FMSSTR„=�*ŒFMS�load�addr.* ^^^^^ FMSASR„=�*+2ŠFMS�ASR�entry �pointSUBSˆFMS.IXR.AG,ASM‰FMS.IXR.AG,FMS.IXR.RO,\WORKLS;R,\LISTOPT SUBSˆ&.FMS.LG LINKˆ&.FMS.LGEND‰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;ANNNNö'FHS IXR AG    $* *ˆ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 ENDNNNN NNN 'GET TASKID AG9  $**ˆGET.TASKID.AG* *ˆRoutine�to'*’Get�the�specified�task�identification*:*ˆThis�routine�is�called�by�FHS,�IOS,�and�FMS�during�their*ˆinitialization.**‰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***ˆRETURN�CONDITONS:*–ZERO‚-ƒSUCCESSFUL�REQUEST!*’NON-ZERO‚-�UNSUCCESSFUL�REQUEST‰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‰RTS*œRETURN�TO�CALLER‰ENDNNNN  :â'IOC M300XTR AG%%%  $BEGIN AG.. i  $P050DRV AG??<  $SCCDRV AGHH�  $M300DRV AGYYz  $M320DRV AGrr@}  $M4205 AGËË  $M4208 AGììû  $RWINDRV AG  @”  $M435DRV AGVV  $ACIADRV AGww W  $M319DRV AGˆˆ‘½  $EPCIDRV AG!! ]  $VM20DRV AG223ã  $MFPDRV AGkk:  $MPCCDRV AGtt T  $MPSCDRV AG……€  $PIADRV AGžžˆ  $SCSIDRV AG¯ , Ÿ  $DRVS10 AGáá1  $**ˆ&.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�passed�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 ‰ENDNNN&**ˆ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�fo  r�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.*&O/ 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.  ENDNNNNN**ˆ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ŠI  NCLUDE�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$BUSY<<3+\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,$000F,$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  ENDN7=**ˆIOC.SCCDRV.AG**‚Included�equate�files: *†&.IOE.EQ *†&.NIO.EQ *†&.LV5.EQ*‰NOLIST‰INCLUDEƒ&.IOE.EQ‰INCLUDEƒ&.NIO.EQ‰INCLUDEƒ&.LV5.EQ‰LIST !*‚Included�device�specific�macros*†MACRO.DCB.SI*†MACRO.DCBTERM.SI*‰NOLIST‰INCLUDEƒMACRO.DCB.SI‰INCLUDEƒMACRO.DCBTERM.SI‰LIST*2*‚Include�file�to�set�up�addresses�for�Z8530�ports*0‰INCLUDEƒXSCCLOC.SIŠDefines�LTDA$01�and�$LTDA$02‰PAGE&*‚Assign�values�from�SYSGEN�parameters*.DVCODE„SET�\&CRTDV„Define�starting�device�code9SCC‡EQU�\SCCDRV„Define�the�physical�address�of�the�driver  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<<8SIZESET‚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*N“INCLUDEƒ&.H5WIN15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3200$1,'H5WIN40'**‚5�1/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN40.SI SIZESET‚SET‡1‰ENDCNNNNNNN‰IFC‡\M3200$1,'H5WIN70'**‚5�1/4"‚70‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN70.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'*N*‚5�1/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN40.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3201$1,'H5WIN70'**‚5�1/4"‚70‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN70.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�f  ormat*“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 ‰IFC‡\M3200$2,'H8WIN10'**‚8"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H8WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3200$2,'H5WIN05'**‚5�1/4"‚5‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN05.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3200$2,'H5WIN10'**‚5�1/4"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3200$2,'H5WIN15'**‚5�1/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3200$2,'H5WIN40'**‚5�1/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN40.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3200$2,'H5WIN70'**‚5�1/4"‚70‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN70.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$2,'H8WIN10'**‚8"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H8WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3201$2,'H5WIN05'**‚5�1/4"‚5‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN05.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3201$2,'H5WIN10'**‚5�1/4"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3201$2,'H5WIN15'**‚5�1/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3201$2,'H5WIN40'**‚5�1/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN40.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3201$2,'H5WIN70'**‚5�1/4"‚70‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN70.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$2-1;************************************************************0*‚First�floppy�disk�on�second�MVME320�controller*;*********************************************************** ‰IFC‡\M3202$2,'F8DDDSI'*-*‚8"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3202$2,'F8SDSSI'*-*‚8"‚single�density,�single�sided,�IBM�format*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3202$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�MVME320*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\M3203$2,'F8DDDSI'*-*‚8"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3203$2,'F8SDSSI'*-*‚8"‚single�density,�single�sided,�IBM�format*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3203$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�MVME320*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFGE†NH42 0-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*ÃaÌMÔGÜ#/*‚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 ‰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'*XZOO&O.R6O>OF*‚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 ‰IFC‡\M3190$1,'H8WIN10'**‚8"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H8WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3190$1,'H5WIN05'**‚5�1/4"‚5‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN05.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3190$1,'H5WIN10'**‚5�1/4"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3190$1,'H5WIN12'**‚5�1/4"‚12‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN12.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3190$1,'H5WIN15'**‚5�1/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3190$1,'H5WIN40'**‚5�1/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN40.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3190$1,'H5WIN50'**‚5�1/4"‚50‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN50.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*8*‚Set�up�attribute�mask�for�hard�disk�on�MVME319/MVME315*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\M3191$1,'H8WIN10'**‚8"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H8WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3191$1,'H5WIN05'**‚5�1/4"‚5‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN05.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3191$1,'H5WIN10'**‚5�1/4"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3191$1,'H5WIN12'**‚5�1/4"‚12‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN12.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3191$1,'H5WIN15'**‚5�1/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3191$1,'H5WIN40'**‚5�1/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN40.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3191$1,'H5WIN50'**‚5�1/4"‚50‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN50.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*8*‚Set�up�attribute�mask�for�hard�disk�on�MVME319/MVME315*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\M3192$1,'H8WIN10'**‚8"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H8WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3192$1,'H5WIN05'**‚5�1/4"‚5‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN05.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3192$1,'H5WIN10'**‚5�1/4"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3192$1,'H5WIN12'**‚5�1/4"‚12‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN12.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3192$1,'H5WIN15'**‚5�1/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3192$1,'H5WIN40'**‚5�1/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN40.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3192$1,'H5WIN50'**‚5�1/4"‚50‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN50.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�MVME319*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\M3193$1,'H8WIN10'**‚8"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H8WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3193$1,'H5WIN05'**‚5�1/4"‚5‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN05.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3193$1,'H5WIN10'**‚5�1/4"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3193$1,'H5WIN12'**‚5�1/4"‚12‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN12.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3193$1,'H5WIN15'**‚5�1/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3193$1,'H5WIN40'**‚5�1/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN40.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3193$1,'H5WIN50'**‚5�1/4"‚50‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN50.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�MVME319*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media;TAPE…SET‡0‰If�non-zero�then�they�have�defined�a�floppy�tape O********************************************************************************)*ƒFLOPPY�TAPE�ON�FIRST�MVME319�CONTROLLER*O*******************************************************************************‰IFGE†NF319$1-1 ‰IFC‡\M3194$1,'FTC525S'**‚This�is�a�floppy�tape*“INCLUDE„&.FTC525S.SI*/*‚Set�up�skip�factor�for�floppy�tape�on�MVME319*DSKNM„SET‡'FT\CONT3191\FOUR'INTERLEAVE�SET…2 *2*‚Set�up�attribute�mask�for�floppy�tape�on�MVME319*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\M3195$1,'F8DDDSI'*-*‚8"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3195$1,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESE T‚SET‡1‰ENDC‰IFC‡\M3195$1,'F8SDSSI'*-*‚8"‚single�density,�single�sided,�IBM�format*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3195$1,'F8SDSSM'*2*‚8"‚single�density,�single�sided,�Motorola�format*“INCLUDE„&.F8SDSSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3195$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*6*‚Set�up�attributes�mask�for�floppy�on�MVME319/MVME315*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\M3196$1,'F8DDDSI'*-*‚8"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3196$1,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3196$1,'F8SDSSI'*-*‚8"‚single�density,�single�sided,�IBM�format*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3196$1,'F8SDSSM'*2*‚8"‚single�density,�single�sided,�Motorola�format*“INCLUDE„&.F8SDSSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3196$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*6*‚Set�up�attributes�mask�for�floppy�on�MVME319/MVME315*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\M3197$1,'F8DDDSI'*-*‚8"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3197$1,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3197$1,'F8SDSSI'*-*‚8"‚single�density,�single�sided,�IBM�format*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3197$1,'F8SDSSM'*2*‚8"‚single�density,�single�sided,�Motorola�format*“INCLUDE„&.F8SDSSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3197$1,'F5DDDSI'*1*‚5�1/4"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F5DDDSI.SI SIZESE T‚SET‡1‰ENDC 4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*6*‚Set�up�attributes�mask�for�floppy�on�MVME319/MVME315*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\M3190$2,'H8WIN10'**‚8"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H8WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3190$2,'H5WIN05'**‚5�1/4"‚5‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN05.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3190$2,'H5WIN10'**‚5�1/4"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3190$2,'H5WIN12'**‚5�1/4"‚12‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN12.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3190$2,'H5WIN15'**‚5�1/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3190$2,'H5WIN40'**‚5�1/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN40.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3190$2,'H5WIN50'**‚5�1/4"‚50‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN50.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*8*‚Set�up�attribute�mask�for�hard�disk�on�MVME319/MVME315*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\M3191$2,'H8WIN10'**‚8"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H8WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3191$2,'H5WIN05' **‚5�1/4"‚5‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN05.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3191$2,'H5WIN10'**‚5�1/4"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3191$2,'H5WIN12'**‚5�1/4"‚12‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN12.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3191$2,'H5WIN15'**‚5�1/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3191$2,'H5WIN40'**‚5�1/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN40.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3191$2,'H5WIN50'**‚5�1/4"‚50‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN50.SI SIZESET‚SET‡1‰ENDC4*ƒMake�sure�the�user�has�defined�a�valid�media�type. ‰IFEQ†SIZESET‰FAIL†**�Invalid�media�type‰ENDC*8*‚Set�up�attribute�mask�for�hard�disk�on�MVME319/MVME315*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\M3192$2,'H8WIN10'**‚8"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H8WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3192$2,'H5WIN05'**‚5�1/4"‚5‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN05.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3192$2,'H5WIN10'**‚5�1/4"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3192$2,'H5WIN12'**‚5�1/4"‚12‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN12.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3192$2,'H5WIN15'**‚5�1/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3192$2,'H5WIN40'**‚5�1/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN40.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3192$2,'H5WIN50'**‚5�1/4"‚50‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN50.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�MVME319*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\M3193$2,'H8WIN10'**‚8"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H8WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3193$2,'H5WIN05'**‚5�1/4"‚5‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN05.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3193$2,'H5WIN10'**‚5�1/4"‚10‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN10.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3193$2,'H5WIN12'**‚5�1/4"‚12‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN12.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3193$2,'H5WIN15'**‚5�1/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3193$2,'H5WIN40'**‚5�1/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN40.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3193$2,'H5WIN50'**‚5�1/4"‚50‚megabyte‚hard‚disk*“INCLUDEƒ&.H5WIN50.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�MVME319*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media;TAPE…SET‡0‰If�non-zero�then�they�have�defined�a�floppy�tape O**********************************************************************************ƒFLOPPY�TAPE�ON�SECOND�MVME319�CONTROLLER*O*******************************************************************************‰IFGE†NF319$2-1 ‰IFC‡\M3194$2,'FTC525S'**‚This�is�a�floppy�tape*“INCLUDE„&.FTC525S.SI*/*‚Set�up�skip�factor�for�floppy�tape�on�MVME319*INTERLEAVE�SET…2DSKNM„SET‡'FT\CONT3192\FOUR' *2*‚Set�up�attribute�mask�for�floppy�tape�on�MVME319*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\M3195$2,'F8DDDSI'*-*‚8"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3195$2,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3195$2,'F8SDSSI'*-*‚8"‚single�density,�single�sided,�IBM�format*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3195$2,'F8SDSSM'*2*‚8"‚single�density,�single�sided,�Motorola�format*“INCLUDE„&.F8SDSSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3195$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*6*‚Set�up�attributes�mask�for�floppy�on�MVME319/MVME315*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\M3196$2,'F8DDDSI'*-*‚8"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3196$2,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3196$2,'F8SDSSI'*-*‚8"‚single�density,�single�sided,�IBM�format*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3196$2,'F8SDSSM'*2*‚8"‚single�density,�single�sided,�Motorola�format*“INCLUDE„&.F8SDSSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3196$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*6*‚Set�up�attributes�mask�for�floppy�on�MVME319/MVME315*9ATT_MASK�SET‚1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\M3197$2,'F8DDDSI'*-*‚8"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3197$2,'F8SDDSM'*2*‚8"‚single�density,�double�sided,�Motorola�format*“INCLUDE„&.F8SDDSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3197$2,'F8SDSSI'*-*‚8"‚single�density,�single�sided,�IBM�format*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3197$2,'F8SDSSM'*2*‚8"‚single�density,�single�sided,�Motorola�format*“INCLUDE„&.F8SDSSM.SI SIZESET‚SET‡1‰ENDC‰IFC‡\M3197$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*6*‚Set�up�attributes�mask�for�floppy�on�MVME319/MVME315*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,'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$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$BUSY<<3+\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,$000F,$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‚--**–GŸBK PRTDCB DVCODE,IOSID,IOSESS,$632,95,1,CNAME,0,$000F,$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,$000F,$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,$000F,$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.SCSIDRV.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‚I NCLUDE�MACRO.DCBDISK.SI LIST  PAGE***‚Define�variables�using�SYSGEN�parameters*(SCSI…EQU�\SCSIDRV‚address�of�SCSI�driver(LSCSI$01�EQU�\LDDA$01‚SCSI�board�address8NHSCSI$0�EQU�\NHSCSI$0�#ƒhard�disks�on�SCSI�controller�0:NFSCSI$0 EQU \NFSCSI$0 # floppy disks on SCSI controller 08NHSCSI$1�EQU�\NHSCSI$1�#ƒhard�disks�on�SCSI�controller�18NHSCSI$2�EQU�\NHSCSI$2�#ƒhard�disks�on�SCSI�controller�2:NFSCSI$2 EQU \NFSCSI$2 # floppy disks on SCSI controller 28NHSCSI$3�EQU�\NHSCSI$3�#ƒhard�disks�on�SCSI�controller�38NHSCSI$5�EQU�\NHSCSI$5�#ƒhard�disks�on�SCSI�controller�5:NFSCSI$5 EQU \NFSCSI$5 # floppy disks on SCSI controller 5 "CHAN_ID‚SET�'SCSI'„SCSI�channel�ID =VECTORƒEQU‚$46†Use�this�vector�for�returns�to�the�driver�from*–the�SCSI�firmware. ;DISKNUM‚SET‚0ˆThis�is�the�disk�number�for�the�DCBCDV�field.*–Start�out�with�disk�number�0. ‰PAGEN*******************************************************************************Ì*!*ƒSET�UP�DCB'S�FOR�CONTROLLER�0¬**Ì*N****************************************************************************** ‰IFGE†NHSCSI$0-1'****************************************¥*#*ƒFirst�hard�disk�on�controller�0ƒ**¥*'*************************************** DSKNM„SET‡'HD\CONTSCS0\ZERO' >SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�mediaN*vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv‰IFC‡\DSKTYP$0,'DTC520XX'%*-----------------------------------**£*!*ƒSASI�DTC520xx�disk�controllerƒ**£*%*-----------------------------------*‰IFC‡\SCSI0$0,'H5SASI15'**‚5�1/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5SASI15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\SCSI0$0,'H5SASI40'**‚5�1/4"‚40‚megabyte‚hard‚disk* §O°S¸TÀSÈSÐYØMàLèKðXøMY:MF N(X0N8Y@QHIPUXH`YhGpZxJ€Jˆ<�M“INCLUDEƒ&.H5SASI40.SI SIZESET‚SET‡1‰ENDC**‚Set�up�DCB�parameters*‚(media�independent)* DEV_ATT‚SET‡$1FDEV_CODE�SET‡IODS_003DEV_STAT�SET‡4PAR_MASK�SET‡$5AF3 ECC_LEN‚SET‡0 *%*‚Set�up�attribute�mask�for�hard�disk*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�mediaN*vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv‰IFC‡\DSKTYP$0,'DTC520XX'%*-----------------------------------**£*!*ƒSASI�DTC520xx�disk�controllerƒ**£*%*-----------------------------------*‰IFC‡\SCSI1$0,'H5SASI15'**‚5�1/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5SASI15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\SCSI1$0,'H5SASI40'**‚5�1/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5SASI40.SI SIZESET‚SET‡1‰ENDC**‚Set�up�DCB�parameters*‚(media�independent)* DEV_ATT‚SET‡$1FDEV_CODE�SET‡IODS_003DEV_STAT�SET‡4PAR_MASK�SET‡$5AF3 ECC_LEN‚SET‡0 *%*‚Set�up�attribute�mask�for�hard�disk*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�mediaN*vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv‰IFC‡\DSKTYP$0,'DTC520XX'%*-----------------------------------**£*!*ƒSASI�DTC520xx�disk�controllerƒ**£*%*-----------------------------------*‰IFC‡\SCSI2$0,'F5DDDSI'*1*‚5�1/4"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\SCSI2$0,'F8DDDSI'*-*‚8"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\SCSI2$0,'F8SDSSI'*-*‚8"‚single�density,�single�sided,�IBM�format*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC**‚Set�up�DCB�parameters*‚(media�independent)* DEV_ATT‚SET‡$1FDEV_CODE�SET‡IODS_003DEV_STAT�SET‡4PAR_MASK�SET‡$5AF3 ECC_LEN‚SET‡0 *#*‚Set�up�attributes�mask�for�floppy*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�mediaN*vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv‰IFC‡\DSKTYP$0,'DTC520XX'%*-----------------------------------**£*!*ƒSASI�DTC520xx�disk�controllerƒ**£*%*-----------------------------------*‰IFC‡\SCSI3$0,'F5DDDSI'*1*‚5�1/4"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\SCSI3$0,'F8DDDSI'*-*‚8"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\SCSI3$0,'F8SDSSI'*-*‚8"‚single�density,�single�sided,�IBM�format*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC**‚Set�up�DCB�parameters*‚(media�independent)* DEV_ATT‚SET‡$1FDEV_CODE�SET‡IODS_003DEV_STAT�SET‡4PAR_MASK�SET‡$5AF3 ECC_LEN‚SET‡0 *#*‚Set�up�attributes�mask�for�floppy*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�mediaN*vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv‰IFC‡\DSKTYP$1,'SABER55M'&*------------------------------------**¤*"*ƒADSI�SABER-55M�disk�controllerƒ**¤*&*------------------------------------*‰IFC‡\SCSI0$1,'H5SCSI15'**‚5�1/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5SCSI15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\SCSI0$1,'H5SCSI40'**‚5�1/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5SCSI40.SI SIZESET‚SET‡1‰ENDC**‚Set�up�DCB�parameters*‚(media�independent)* DEV_ATT‚SET‡$1FDEV_CODE�SET‡IODS_004DEV_STAT�SET‡4PAR_MASK�SET‡$5AF3 ECC_LEN‚SET‡0 *%*‚Set�up�attribute�mask�for�hard�disk*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�mediaN*vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv‰IFC‡\DSKTYP$1,'SABER55M'&*------------------------------------**¤*"*ƒADSI�SABER-55M�disk�controllerƒ**¤*&*------------------------------------*‰IFC‡\SCSI1$1,'H5SCSI15'**‚5�1/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5SCSI15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\SCSI1$1,'H5SCSI40'**‚5�1/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5SCSI40.SI SIZESET‚SET‡1‰ENDC**‚Set�up�DCB�parameters*‚(media�independent)* DEV_ATT‚SET‡$1FDEV_CODE�SET‡IODS_004DEV_STAT�SET‡4PAR_MASK�SET‡$5AF3 ECC_LEN‚SET‡0 *%*‚Set�up�attribute�mask�for�hard�disk*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�mediaN*vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv‰IFC‡\DSKTYP$1,'SABER55M'&*------------------------------------**¤*"*ƒADSI�SABER-55M�disk�controllerƒ**¤*&*------------------------------------*@‰FAIL†**�This�controller�does�not�support�more�than�2�hard�disks‰ENDCN*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^N*vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv‰IFC‡\DSKTYP$1,'EMULMD01',*------------------------------------------**ª*(*ƒEMULEX�MEDALIST�MD01�disk�controllerƒ**ª*,*------------------------------------------*@‰FAIL†**�This�controller�does�not�support�more�than�2�hard�disks‰ENDCN*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^N*vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv‰IFC‡\DSKTYP$1,'ADAP5500'(*--------------------------------------**¦*$*ƒADAPTEC�ACB�5500�disk�controllerƒ**¦*(*--------------------------------------*‰IFC‡\SCSI2$1,'H5ADAP15'**‚5�1/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5ADAP15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\SCSI2$1,'H5ADAP40'**‚5�1/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5ADAP40.SI SIZESET‚SET‡1‰ENDC**‚Set�up�DCB�parameters*‚(media�independent)* DEV_ATT‚SET‡$1FDEV_CODE�SET‡IODS_006DEV_STAT�SET‡4PAR_MASK�SET‡$5AF3 ECC_LEN‚SET‡0 *%*‚Set�up�attribute�mask�for�hard�disk*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�mediaN*vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv‰IFC‡\DSKTYP$1,'SABER55M'&*------------------------------------**¤*! "*ƒADSI�SABER-55M�disk�controllerƒ**¤*&*------------------------------------*@‰FAIL†**�This�controller�does�not�support�more�than�2�hard�disks‰ENDCN*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^N*vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv‰IFC‡\DSKTYP$1,'EMULMD01',*------------------------------------------**ª*(*ƒEMULEX�MEDALIST�MD01�disk�controllerƒ**ª*,*------------------------------------------*@‰FAIL†**�This�controller�does�not�support�more�than�2�hard�disks‰ENDCN*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^N*vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv‰IFC‡\DSKTYP$1,'ADAP5500'(*--------------------------------------**¦*$*ƒADAPTEC�ACB�5500�disk�controllerƒ**¦*(*--------------------------------------*‰IFC‡\SCSI3$1,'H5ADAP15'**‚5�1/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5ADAP15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\SCSI3$1,'H5ADAP40'**‚5�1/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5ADAP40.SI SIZESET‚SET‡1‰ENDC**‚Set�up�DCB�parameters*‚(media�independent)* DEV_ATT‚SET‡$1FDEV_CODE�SET‡IODS_006DEV_STAT�SET‡4PAR_MASK�SET‡$5AF3 ECC_LEN‚SET‡0 *%*‚Set�up�attribute�mask�for�hard�disk*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�mediaN*vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv‰IFC‡\DSKTYP$2,'DTC520XX'%*-----------------------------------**£*!*ƒSASI�DTC520xx�disk�controllerƒ**£*%*-----------------------------------*‰IFC‡\SCSI0$2,'H5SASI15'**‚5�1/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5SASI15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\SCSI0$2,'H5SASI40'**‚5�1/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5SASI40.SI SIZESET‚SET‡1‰ENDC**‚Set�up�DCB�parameters*‚(media�independent)* DEV_ATT‚SET‡$1FDEV_CODE�SET‡IODS_003DEV_STAT�SET‡4PAR_MASK�SET‡$5AF3 ECC_LEN‚SET‡0 *%*‚Set�up�attribute�mask�for�hard�disk*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�mediaN*vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv‰IFC‡\DSKTYP$2,'DTC520XX'%*-----------------------------------**£*!*ƒSASI�DTC520xx�disk�controllerƒ**£*%*-----------------------------------*‰IFC‡\SCSI1$2,'H5SASI15'**‚5�1/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5SASI15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\SCSI1$2,'H5SASI40'**‚5�1/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5SASI40.SI SIZESET‚SET‡1‰ENDC**‚Set�up�DCB�parameters*‚(media�independent)* DEV_ATT‚SET‡$1FDEV_CODE�SET‡IODS_003DEV_STAT�SET‡4PAR_MASK�SET‡$5AF3 ECC_LEN‚SET‡0 *%*‚Set�up�attribute�mask�for�hard�disk*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�mediaN*vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv‰IFC‡\DSKTYP$2,'DTC520XX'%*-----------------------------------**£*!*ƒSASI�DTC520xx�disk�controllerƒ**£*%*-----------------------------------*‰IFC‡\SCSI2$2,'F5DDDSI'*1*‚5�1/4"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\SCSI2$2,'F8DDDSI'*-*‚8"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\SCSI2$2,'F8SDSSI'*-*‚8"‚single�density,�single�sided,�IBM�format*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC**‚Set�up�DCB�parameters*‚(media�independent)* DEV_ATT‚SET‡$1FDEV_CODE�SET‡IODS_003DEV_STAT�SET‡4PAR_MASK�SET‡$5AF3 ECC_LEN‚SET‡0 *#*‚Set�up�attributes�mask�for�floppy*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�mediaN*vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv‰IFC‡\DSKTYP$2,'DTC520XX'%*-----------------------------------**£*!*ƒSASI�DTC520xx�disk�controllerƒ**£*%*-----------------------------------*‰IFC‡\SCSI3$2,'F5DDDSI'*1*‚5�1/4"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\SCSI3$2,'F8DDDSI'*-*‚8"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\SCSI3$2,'F8SDSSI'*-*‚8"‚single�density,�single�sided,�IBM�format*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC**‚Set�up�DCB�parameters*‚(media�independent)* DEV_ATT‚SET‡$1FDEV_CODE�SET‡IODS_003DEV_STAT�SET‡4PAR_MASK�SET‡$5AF3 ECC_LEN‚SET‡0 *#*‚Set�up�attributes�mask�for�floppy*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�mediaN*vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv‰IFC‡\DSKTYP$3,'SABER55M'&*------------------------------------**¤*"*ƒADSI�SABER-55M�disk�controllerƒ**¤*&*------------------------------------*‰IFC‡\SCSI0$3,'H5SCSI15'**‚5�1/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5SCSI15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\SCSI0$3,'H5SCSI40'**‚5�1/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5SCSI40.SI SIZESET‚SET‡1‰ENDC**‚Set�up�DCB�parameters*‚(media�independent)* DEV_ATT‚SET‡$1FDEV_CODE�SET‡IODS_004DEV_STAT�SET‡4PAR_MASK�SET‡$5AF3 ECC_LEN‚SET‡0 *%*‚Set�up�attribute�mask�for�hard�disk*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�mediaN*vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv‰IFC‡\DSKTYP$3,'SABER55M'&*------------------------------------**¤*"*ƒADSI�SABER-55M�disk�controllerƒ**¤*&*------------------------------------*‰IFC‡\SCSI1$3,'H5SCSI15'**‚5�1/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5SCSI15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\SCSI1$3,'H5SCSI40'**‚5�1/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5SCSI40.SI SIZESET‚SET‡1‰ENDC**‚Set�up�DCB�parameters*‚(media�independent)* DEV_ATT‚SET‡$1FDEV_CODE�SET‡IODS_004DEV_STAT�SET‡4PAR_MASK�SET‡$5AF3 ECC_LEN‚SET‡0 *%*‚Set�up�attribute�mask�for�hard�disk*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�mediaN*vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv‰IFC‡\DSKTYP$3,'SABER55M'&*------------------------------------**¤*"*ƒADSI�SABER-55M�disk�controllerƒ**¤*&*------------------------------------*@‰FAIL†**�This�controller�does�not�support�more�than�2�hard�disks‰ENDCN*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^N*vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv‰IFC‡\DSKTYP$3,'EMULMD01',*------------------------------------------**ª*(*ƒEMULEX�MEDALIST�MD01�disk�controllerƒ**ª*,*------------------------------------------*@‰FAIL†**�This�controller�does�not�support�more�than�2�hard�disks‰ENDCN*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^N*vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv‰IFC‡\DSKTYP$3,'ADAP5500'(*--------------------------------------**¦*$*ƒADAPTEC�ACB�5500�disk�controllerƒ**¦*(*--------------------------------------*‰IFC‡\SCSI2$3,'H5ADAP15'**‚5�1/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5ADAP15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\SCSI2$3,'H5ADAP40'**‚5�1/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5ADAP40.SI SIZESET‚SET‡1‰ENDC**‚Set�up�DCB�parameters*‚(media�independent)* DEV_ATT‚SET‡$1FDEV_CODE�SET‡IODS_006DEV_STAT�SET‡4PAR_MASK�SET‡$5AF3 ECC_LEN‚SET‡0 *%*‚Set�up�attribute�mask�for�hard�disk*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�mediaN*vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv‰IFC‡\DSKTYP$3,'SABER55M'&*------------------------------------**¤*"*ƒADSI�SABER-55M�disk�controllerƒ**¤*&*------------------------------------*@‰FAIL†**�This�controller�does�not�support�more�than�2�hard�disks‰ENDCN*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^N*vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv‰IFC‡\DSKTYP$3,'EMULMD01',*------------------------------------------**ª*(*ƒEMULEX�MEDALIST�MD01�disk�controllerƒ**ª*,*------------------------------------------*@‰FAIL†**�This�controller�does�not�support�more�than�2�hard�disks‰ENDCN*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^N*vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv‰IFC‡\DSKTYP$3,'ADAP5500'(*--------------------------------------**¦*$*ƒADAPTEC�ACB�5500�disk�controllerƒ**¦*(*--------------------------------------*‰IFC‡\SCSI3$3,'H5ADAP15'**‚5�1/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5ADAP15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\SCSI3$3,'H5ADAP40'**‚5�1/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5ADAP40.SI SIZESET‚SET‡1‰ENDC**‚Set�up�DCB�parameters*‚(media�independent)* DEV_ATT‚SET‡$1FDEV_CODE�SET‡IODS_006DEV_STAT�SET‡4PAR_MASK�SET‡$5AF3 ECC_LEN‚SET‡0 *%*‚Set�up�attribute�mask�for�hard�disk*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�mediaN*vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv‰IFC‡\DSKTYP$5,'COM_CMD'% *------------------------**˜**ƒCommon�Command�Setƒ**˜**------------------------*‰IFC‡\SCSI0$5,'H5SCSI15'**‚5�1/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5SCSI15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\SCSI0$5,'H5SCSI40'**‚5�1/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5SCSI40.SI SIZESET‚SET‡1‰ENDC**‚Set�up�DCB�parameters*‚(media�independent)* DEV_ATT‚SET‡$1FDEV_CODE�SET‡IODS_007DEV_STAT�SET‡4PAR_MASK�SET‡$5AF3 ECC_LEN‚SET‡0 *%*‚Set�up�attribute�mask�for�hard�disk*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�mediaN*vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv‰IFC‡\DSKTYP$5,'COM_CMD'*------------------------**˜**ƒCommon�Command�Setƒ**˜**------------------------*‰IFC‡\SCSI1$5,'H5SCSI15'**‚5�1/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5SCSI15.SI SIZESET‚SET‡1‰ENDC¯˜U¡V©R±Q¹OÁPÉPÑ$‰IFC‡\SCSI1$5,'H5SCSI40'**‚5�1/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5SCSI40.SI SIZESET‚SET‡1‰ENDC**‚Set�up�DCB�parameters*‚(media�independent)* DEV_ATT‚SET‡$1FDEV_CODE�SET‡IODS_007DEV_STAT�SET‡4PAR_MASK�SET‡$5AF3 ECC_LEN‚SET‡0 *%*‚Set�up�attribute�mask�for�hard�disk*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�mediaN*vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv‰IFC‡\DSKTYP$5,'COM_CMD'*------------------------**˜**ƒCommon�Command�Setƒ**˜**------------------------*‰IFC‡\SCSI2$5,'H5SCSI15'**‚5�1/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5S% CSI15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\SCSI2$5,'H5SCSI40'**‚5�1/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5SCSI40.SI SIZESET‚SET‡1‰ENDC**‚Set�up�DCB�parameters*‚(media�independent)* DEV_ATT‚SET‡$1FDEV_CODE�SET‡IODS_007DEV_STAT�SET‡4PAR_MASK�SET‡$5AF3 ECC_LEN‚SET‡0 *%*‚Set�up�attribute�mask�for�hard�disk*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�mediaN*vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv‰IFC‡\DSKTYP$5,'COM_CMD'*------------------------**˜**ƒCommon�Command�Setƒ**˜**------------------------*‰IFC‡\SCSI3$5,'H5SCSI15'**‚5�1/4"‚15‚megabyte‚hard‚disk*“INCLUDEƒ&.H5SCSI15.SI SIZESET‚SET‡1‰ENDC‰IFC‡\SCSI3$5,'H5SCSI40'**‚5�1/4"‚40‚megabyte‚hard‚disk*“INCLUDEƒ&.H5SCSI40.SI SIZESET‚SET‡1‰ENDC**‚Set�up�DCB�parameters*‚(media�independent)* DEV_ATT‚SET‡$1FDEV_CODE�SET‡IODS_007DEV_STAT�SET‡4PAR_MASK�SET‡$5AF3 ECC_LEN‚SET‡0 *%*‚Set�up�attribute�mask�for�hard�disk*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�mediaN*vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv‰IFC‡\DSKTYP$5,'COM_CMD'*------------------------**˜**ƒCommon�Command�Setƒ**˜**------------------------*‰IFC‡\SCSI4$5,'F5DDDSI'*1*‚5�1/4"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\SCSI4$5,'F8DDDSI'*-*‚8"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\SCSI4$5,'F8SDSSI'*-*‚8"‚single�density,�single�sided,�IBM�format*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC**‚Set�up�DCB�parameters*‚(media�independe& nt)* DEV_ATT‚SET‡$1FDEV_CODE�SET‡IODS_007DEV_STAT�SET‡4PAR_MASK�SET‡$5AF3 ECC_LEN‚SET‡0 *#*‚Set�up�attributes�mask�for�floppy*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�mediaN*vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv‰IFC‡\DSKTYP$5,'COM_CMD'*------------------------**˜**ƒCommon�Command�Setƒ**˜**------------------------*‰IFC‡\SCSI5$5,'F5DDDSI'*1*‚5�1/4"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\SCSI5$5,'F8DDDSI'*-*‚8"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\SCSI5$5,'F8SDSSI'*-*‚8"‚single�density,�single�sided,�IBM�format*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC**‚Set�up�DCB�parameters*‚(media�independent)* DEV_ATT‚SET‡$1FDEV_CODE�SET‡IODS_007DEV_STAT�SET‡4PAR_MASK�SET‡$5AF3 ECC_LEN‚SET‡0 *#*‚Set�up�attributes�mask�for�floppy*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�mediaN*vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv‰IFC‡\DSKTYP$5,'COM_CMD'*------------------------**˜**ƒCommon�Command�Setƒ**˜**------------------------*‰IFC‡\SCSI6$5,'F5DDDSI'*1*‚5�1/4"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\SCSI6$5,'F8DDDSI'*-*‚8"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\SCSI6$5,'F8SDSSI'*-*‚8"‚single�density,�single�sided,�IBM�format*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC**‚Set�up�DCB�parameters*‚(media�independent)* DEV_& ATT‚SET‡$1FDEV_CODE�SET‡IODS_007DEV_STAT�SET‡4PAR_MASK�SET‡$5AF3 ECC_LEN‚SET‡0 *#*‚Set�up�attributes�mask�for�floppy*9ATT_MASK�SET‚0<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�mediaN*vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv‰IFC‡\DSKTYP$5,'COM_CMD'*------------------------**˜**ƒCommon�Command�Setƒ**˜**------------------------* ‰IFC‡\SCSI7$5,'F5DDDSI'*1*‚5�1/4"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F5DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\SCSI7$5,'F8DDDSI'*-*‚8"‚double�density,�double�sided,�IBM�format*“INCLUDE„&.F8DDDSI.SI SIZESET‚SET‡1‰ENDC‰IFC‡\SCSI7$5,'F8SDSSI'*-*‚8"‚single�density,�single�sided,�IBM�format*“INCLUDE„&.F8SDSSI.SI SIZESET‚SET‡1‰ENDC**‚Set�up�DCB�parameters*‚(media�independent)* DEV_ATT‚SET‡$1FDEV_CODE�SET‡IODS_007DEV_STAT�SET‡4PAR_MASK�SET‡$5AF3 ECC_LEN‚SET‡0 *#*‚Set�up�attributes�mask�for�floppy*9ATT_MASK�SET‚0<„CDB†0,CHAN_ID,XTDSCSI,254,SCSI,0,LSCSI$01,1,VECTOR,2,$10,0,0,&Œ0,0,0,0,0,0,0,0,0 ‰ENDNN' N**ˆIOC.DRVS10.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&*‚Assign�values�from�SYSGEN�parameters*.DVCODEƒSET�\&CRTDV„Define�starting�device�code;TERM…EQU�\TERMDRVƒDefine�the�physical�address�of�the�driver &CNAME„SET…DVCODE‚channel�name�mnemonicE*ƒNOTE:‚Use�of�CNAME�guarantees�that�the�ASCII�printer�DCB�identifier?*Š(CNSL,CN00,�etc)�will�always�correspond�with�the�channel�name*Šmnemonic�(CNSL,CN00,�etc.).  L****************************************************************************'*‚SET�UP�DCB�FOR�VME/10�SCREEN/KEYBOARDL**************************************************************************** ITCP$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.TCP$ATW‚SET‚TCP$ATW+\TCP$PNUL<<9+\TCP$MODM<<10 K CRTDCB DVCODE,IOSID,IOSESS,$133,35,1,CNAME,0,$03C1,$77F3,TCP$ATW,\TCP$REC,J& \TCP$RSZ,\TCP$WTO,\TCP$RTO,\TCP$XOF,\TCP$XON,\TCP$BRC,\TCP$DOP,\TCP$RLN,@& \TCP$CLC,\TCP$RTV,\TCP$EOL,\TCP$BRT,\TCP$NLS,\TCP$TRC,\TCP$TTP  @ CDB 0,CNAME,XTSEXS,254,TERM,0,TERM,1,$42,3,$30,0,0,0,0,0,0,0,0,& 0,0,0  ENDNNÙ2'IOC VM21DRV AGîîeà  $VM22DRV AGWWRN  $VM30DRV AG°°$   $END AGÙÙ `  $M360DRV AGêêI�  $SIODRV AGkkM  $M331DRV AG||FÍ  $P117DRV AGÅÅ8  $ADDRESS CIÎÎ\  $**ˆIOC.VM21DRV.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  PAGEE*‚Define�the�physical�addresses�of�the�driver�using�SYSGEN�parameters*IPCƒEQU�\IPCDRV 5*‚NOTE:‚UDCs�and�IPCs�both�use�the�same�driver�(IPC)! FDEVADD�SET�\&DEVADD�init.�device�address�(CDB)ƒ(from' �SYSGEN�parameter)EVECTNO�SET�\&VECTNO�init.�vector�number‚(CDB)ƒ(from�SYSGEN�parameter) /NHV21$1‚EQU�\NHV21$1ˆ#�of�hardƒdisks�on�1st�UDC1NFV21$1‚EQU�\NFV21$1ˆ#�of�floppy�disks�on�1st�UDC /NHV21$2‚EQU�\NHV21$2ˆ#�of�hardƒdisks�on�2nd�UDC1NFV21$2‚EQU�\NFV21$2ˆ#�of�floppy�disks�on�2nd�UDC   :DSKDV�SET�\&DSKDVƒwill�become‚__n_Œ(from�SYSGEN�parameter)#FDDV‚EQU�$46440000�code�for...‚FD__#HDDV‚EQU�$48440000�code�for...‚HD__ DSKDV„SET‡DSKDV+$0100 O********************************************************************************‚SET�UP�DCB'S�FOR�UDC'SO******************************************************************************* **‚Set�up�DCB�parameters�for�UDC*‚(media�independent)* DEV_ATT‚SET‡$1FDEV_CODE�SET‡0DEV_STAT�SET‡4PAR_MASK�SET‡$FFF3 ECC_LEN‚SET‡0  ‰IFGT†NHV21$1+NFV21$1CHAN_ID‚SET‡'CUD1'F***********************************************************************$*ˆHARD�DISKS�ON�FIRST�UDC�CONTROLLER*F********************************************************************** DSKNM„SET‡HDDV+DSKDV+$30>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ïU÷PÿQJIJU'P/Q7J?IG-*‚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,'F8SDSSM'*2*‚8"‚single�density,�single�sided,�Motorola�format*“INCLUDE„&.F8SDSSM.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,'F8SDSSM'*2*‚8"‚single�density,�single�sided,�Motorola�format*“INCLUDE„&.F8SDSSM.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,'F8SDSSM'*2*‚8"‚single�density,�single�sided,�Motorola�format*“INCLUDE„&.F8SDSSM.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,'F8SDSSM'*2*‚8"‚single�density,�single�sided,�Motorola�format*“INCLUDE„&.F8SDSSM.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*“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,'F8SDSSM'*2*‚8"‚single�density,�single�sided,�Motorola�format*“INCLUDE„&.F8SDSSM.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,'F8SDSSM'*2*‚8"‚single�density,�single�sided,�Motorola�format*“INCLUDE„&.F8SDSSM.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,'F8SDSSM'*2*‚8"‚single�density,�single�sided,�Motorola�format*“INCLUDE„&.F8SDSSM.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,'F8SDSSM'*2*‚8"‚single�density,�single�sided,�Motorola�format*“INCLUDE„&.F8SDSSM.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‰ENDC‰IFC‡\VM220$1,'FXLRK08'**‚LARK�08‚megabyte‚hard‚disk*OZXQ`OhZpMxO€TˆV�Q˜Q + “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�VM22*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‡1‰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'*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‡\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…256-(*-LLUN),0�NULL�DCB�NOW�256�BYTES�LONG�(MATCHES�FREE)‰PAGE=**************************************************************»***ŠDCB'S�FOR�DYNAMICALLY�LOADABLE�DRIVERS‹**»*:*‚SET�UP�DCB's�FOR�FREE�DEVICE's;‚THESE�MUST�START�AFTER‚*9*‚THE�NULL�DCB.‚THE�NULL�DCB�IS�FIXED�AT�256�BYTES.‚THE‚*'*‚FREE�DCB's�ARE�ALSO�256�BYTES�LONG.–**»*=*************************************************************  IFGE \LOADDRV-1+ƒDC.L…0�LINK�POINTER�IS�ZERO�FOR�A�FREE�DCB2ƒDC.L…'FREE'‹ASCII�IDENTIFICATION�FOR�THE�FREE�DCB)ƒDCB.B„248,0ŒA�F/ REE�DCB�IS�256�BYTES�LONG ENDC  IFGE \LOADDRV-2+ƒDC.L…0�LINK�POINTER�IS�ZERO�FOR�A�FREE�DCB2ƒDC.L…'FREE'‹ASCII�IDENTIFICATION�FOR�THE�FREE�DCB)ƒDCB.B„248,0ŒA�FREE�DCB�IS�256�BYTES�LONG ENDC  IFGE \LOADDRV-3ÑGÚ+ƒDC.L…0�LINK�POINTER�IS�ZERO�FOR�A�FREE�DCB2ƒDC.L…'FREE'‹ASCII�IDENTIFICATION�FOR�THE�FREE�DCB)ƒDCB.B„248,0ŒA�FREE�DCB�IS�256�BYTES�LONG ENDC  IFGE \LOADDRV-4+ƒDC.L…0�LINK�POINTER�IS�ZERO�FOR�A�FREE�DCB2ƒDC.L…'FREE'‹ASCII�IDENTIFICATION�FOR�THE�FREE�DCB)ƒDCB.B„248,0ŒA�FREE�DCB�IS�256�BYTES�LONG ENDC  IFGE \LOADDRV-5+ƒDC.L…0�LINK�POINTER�IS�ZERO�FOR�A�FREE�DCB2ƒDC.L…'FREE'‹ASCII�IDENTIFICATION�FOR�THE�FREE�DCB)ƒDCB.B„248,0ŒA�FREE�DCB�IS�256�BYTES�LONG ENDC (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.  ENDNNNNN**ˆIOC.M360DRV.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*+M360…EQU�\M360DRV‚Address�of�MVME360�driver-NVME360‚EQU�\NVME360‚Number�of�MVME360�boardsNNNN/ NN âëPóû3 )4#.+/3>;5C/K S)[-L360$01‚EQU�\L360$01‚MVME360�board�#1�address-L360$02‚EQU�\L360$02‚MVME360�board�#2�address ANH360$1‚EQU�\NH360$1‚#�hard�disks�on�1st�MVME360�controller�boardANH360$2‚EQU�\NH360$2‚#�hard�disks�on�2nd�MVME360�controller�board -VECTNO1‚EQU‚$F9†Vector�number�for�1st�MVME360-VECTNO2‚EQU‚$F7†Vector�number�for�2nd�MVME360 O********************************************************************************ƒSET�UP�DCB'S�FOR�MVME360O******************************************************************************* *#*‚Set�up�DCB�parameters�for�MVME360*‚(media�independent)* *DEV_ATT‚SET‡$1F‘FHS�Device�Attributes�wordDEV_CODE�SET‡IOD360DEV_STAT�SET‡4PAR_MASK�SET‡$0FF3 ECC_LEN‚SET‡0*XAT_MASK�SET‡0XAT_WORD�SET‡0SLIP_CNT�SET‡0 F***********************************************************************(*ˆHARD�DISKS�ON�FIRST�MVME360�CONTROLLER*F**********************************************************************CHAN_ID‚SET‡'A360'‰IFGE†NH360$1-1F***********************************************************************-*ƒFirst�hard�disk�on�first�MVME360�controller*F********************************************************************** DSKNM„SET‡'HD\CONT3601\ZERO'>SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\M3600$1,'FF2322A'*/*‚Default�SMD�Device�with�first�of�2�Partitions*“INCLUDEƒ&.FF2322A.SIBXPR_MASK�SET‡1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\M3601$1,'FF2322B'*0*‚Default�SMD�Device�with�second�of�2�Partitions*“INCLUDEƒ&.FF2322B.SIBXPR_MASK�SET‡1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\M3602$1,'FF2322A'*/*‚Default�SMD�Device�with�first�of�2�Partitions*“INCLUDEƒ&.FF2322A.SIBXPR_MASK�SET‡1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\M3603$1,'FF2322B'*0*‚Default�SMD�Device�with�second�of�2�Partitions*“INCLUDEƒ&.FF2322B.SIBXPR_MASK�SET‡1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\M3600$2,'FF2322A'*/*‚Default�SMD�Device�with�first�of�2�Partitions*“INCLUDEƒ&.FF2322A.SIBXPR_MASK�SET‡1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\M3601$2,'FF2322B'*0*‚Default�SMD�Device�with�second�of�2�Partitions*“INCLUDEƒ&.FF2322B.SIBXPR_MASK�SET‡12 <SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\M3602$2,'FF2322A'*/*‚Default�SMD�Device�with�first�of�2�Partitions*“INCLUDEƒ&.FF2322A.SIBXPR_MASK�SET‡1<SIZESET‚SET‡0‰If�non-zero�then�they�have�selected�a�disk�media ‰IFC‡\M3603$2,'FF2322B'*0*‚Default�SMD�Device�with�second�of�2�Partitions*“INCLUDEƒ&.FF2322B.SIBXPR_MASK�SET‡1<*Š(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‚-‚VME117�boardO******************************************************************************* /* Define PCP$ATW one time here for all printers;PCP$ATW‚SET…\PCP$BUSY<<3+\PCP$TLRL<<2+\PCP$AFF<<1+\PCP$LNFD *ƒVME117�Board.�printer�port**--‚DATA�CONTROL�BLOCK‚--*K PRTDCB DVCODE,IOSID,IOSESS,$632,95,1,CNAME,0,$000F,$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,XTPV117,254,PRT117,0,LPDA$01,1,$42,4,$10,&„0,0,0,0,0,0,0,0,0,0,0  ENDNN½9**ˆIOC.ADDRESS.CI*N******************************************************************************2*‚I/O�Channel�Address�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!C*‰2.�A�maximum�of�16�devices�can�only�be�on�the�channel�at�one�time7*Œfor�guaranteed�operation�in�a�"worst�case"�situation.**6 *‚Symbol�format�is:„Lnnn$mm*„where:„L=�location:*Œnnn=�VME�board�number/description�or�Vnn�for�VERSAmodule*Ž$=�separator*�mm=�board�number�01-99*F*ƒ"CMULT"�is�defined�in�the�".SYSTEM.CI"�file�if�the�processor8*‹board�has�an�I/O�Channel.‚If�the�VME316�board�is�used,.*‹"CMULT"�is�defined�in�the�&.M316DEF.CI�file.H*ƒ"IOCBASE"�is�defined�in�the�".SYSTEM.CI"�file�if�the�processor8*‹board�has�an�I/O�Channel.‚If�the�VME316�board�is�used,0*‹"IOCBASE"�is�defined�in�the�&.M316DEF.CI�file.NNNÆÏ×ß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*-------------------------------------------------------------------------NNN=LRAD$01ƒ=�\IOCBASE+($700*\CMULT)+$01�RAD…bd.�#1,�portƒaddress*©LRAD$01‚=�\LRAD$01=LRAD$02ƒ=�\IOCBASE+($600*\CMULT)+$01�RAD…bd.�#2,�portƒaddress*©LRAD$02‚=�\LRAD$02J*-------------------------------------------------------------------------=LRIO$07 1ƒ=�\IOCBASE+($058*\CMULT)+$01�RIO…bd.�#1,�portƒaddress*©LRIO$01‚=�\LRIO$01=LRIO$02ƒ=�\IOCBASE+($050*\CMULT)+$01�RIO…bd.�#2,�portƒaddress*©LRIO$02‚=�\LRIO$02J*-------------------------------------------------------------------------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$01AL605$02ƒ=�\IOCBASE+($A00*\CMULT)+$01�MVME605�bd.�#2,�portƒaddress*©L605$02‚=�\L605$02J*-------------------------------------------------------------------------@L610$01ƒ=�\IOCBASE+($01E*\CMULT)+$1‚MVME610�bd.�#1,�portƒaddress*©L610$01‚=�\L610$01@L610$02ƒ=�\IOCBASE+($01C*\CMULT)+$1‚MVME610�bd.�#2,�portƒaddress*©L610$02‚=�\L610$02J*-------------------------------------------------------------------------@L615$01ƒ=�\IOCBASE+($00F*\CMULT)+$1‚MVME615�bd.�#1,�portƒaddress*©L615$01‚=�\L615$01@L615$02ƒ=�\IOCBASE+($00E*\CMULT)+$1‚MVME615�bd.�#2,�portƒaddress*©L615$02‚=�\L615$02J*-------------------------------------------------------------------------NN@L620$01ƒ=�\IOCBASE+($016*\CMULT)+$1‚MVME620�bd.�#1,�portƒaddress*©L620$01‚=�\L620$01@L620$02ƒ=�\IOCBASE+($014*\CMULT)+$1‚MVME620�bd.�#2,�portƒaddress*©L620$02‚=�\L620$02J*-------------------------------------------------------------------------AL625$01ƒ=�\IOCBASE+($007*\CMULT)+$01�MVME625�bd.�#1,�portƒaddress*©L625$01‚=�\L625$01AL625$02ƒ=�\IOCBASE+($006*\CMULT)+$01�MVME625�bd.�#2,�portƒaddress*©L625$02‚=�\L625$02J*-------------------------------------------------------------------------?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*-------------------------------------------------------------------------NNNNN'OSLIST BEGIN AGóó   $END AGüü  $FHS SI   $FMS SI&  $IOS SI# 7  $**ˆ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:NNNNNë!**ˆOSLIST.END.AG*OSMENDƒEQU…*“END�OF�TABLE ‰END‡OSMTBLNNN8 NNNNô**ˆ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�NEEDED*NNNNý! ‰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.*%8 *¦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*NNNN' ‰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�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†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‡*-IOSXXXNNNN$9 'TTSSA TDTI AG$$  $***ˆTTSSA.TDTI.AG**ˆModule�to�define4*’The�start�address�of�the�segment�that�contains�the*”Task�Table“Required*”Error�Handling�Logic‰Optional*”Non-Standard�CodeŒOptional'*”Non-Standard�Startup�routine�Optional*8*’The�end�address�of�the�segment�that�contains�the�above*9*’The�start�address�of�the�Task�Table�Structure�contained"*—within�the�segment�defined�above* ‰XDEF†AREAEA ‰XDEF†AREASA AREASAƒEQU‡\AREASAAREAEAƒEQU‡\AREAEA‰ENDNNNNNN'VME12X INITIO1 AG11\û  $CNFGDRVRCIšš.ò  $IFDRVR CIëë_  $SYSTEM CIôô×  $SYSINIT LG  $9 8*‰INCLUDE�BOARD.EQƒThis�will�either�be�in�catalog�VME1207ŠINCLUDE�BOARD.EQƒThis�will�either�be�in�catalog�VME1207INITIO„IDNTƒ45,0�RMS68K�I/O�initializer�for�the�VME120.O*v*****************************************************************************O*******************************************************************************O**********************************************************************************É***@***…ROUTINE:‚INITIO�--�RMS68K�I/O�INITIALIZER�FOR�THE�VME120‹******É***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*…--------‚------‚-------------------------------------------------------;*…11/25/85ƒJAH„Added�conditional�assembly�for�VME050�clock.B*…10/29/85ƒCBS„Changed�way�we�call�KILLER�to�use�KILL.EXECT0�macro8*†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: *…Parameters�from�INITDAT:)/2C:HBHJ:RJZBb4jrFzL‚BŠ-Š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.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).0ŠXREF.S�NSE�Next�Significant�Event�absolute�time!ŠXREF.S�MIDNIGHT‹ms�of�last�nightŠXREF.S�TIME_LEFTŠms�until�NSE *„Others:.ŠXREFƒCRASHSAV‹Place�to�SAVE�info�if�we�CRASH.   **‚Included�files:**‰&.UTILITY.MC*‰M68451.M68451.EQ*‰MK68901.MK68901.EQ*‰M146818.M146818.EQ *‰&.KILL.MC*‰&.KILLEXEC.EQ *‰&.STR.EQ*ŠNOLISTŠINCLUDE�&.UTILITY.MCŠINCLUDE�M68451.M68451.EQŠINCLUDE�MK68901.MK68901.EQŠINCLUDE�M146818.M146818.EQŠINCLUDE�&.KILL.MCŠINCLUDE�&.KILLEXEC.EQŠINCLUDE�&.STR.EQŠLISTŠPAGEO*v*****************************************************************************O**********************************************************************************É***6***…ROUTINE:‚INITMMU�--�INITIALIZE�THE�M68451�MMU.•******É***I***…FUNCTION:‚If�we�are�suppos: ed�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).*7‹PEA„GOTOKILLŠ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. GOTOKILL:=‰KILL.EXECT0‚INITIO1AG,NO_451‚Call�killer�to�crash�the�system *ˆno�return ŠPAGE‰IFEQ�\CLOCK050O********************************************************************************,*ˆSTART�TIMER�(MK68901)‚on�the�VME12X�board.* 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�C: LOCKFRQŠ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*>>>>>CHECK_RANGE MACRO ŠCMP.B‚\2,\1ŠBLO.\0�RANGE_ERR ŠCMP.B‚\3,\1ŠBHI.\0�RANGE_ERRŠENDM  TIMERST: ,**********************************************†Initialize�MK�68901�timer?*‹This�part�of�code�is�to�reset�the�timer,�disable�its�function7*‹We�actually�use�M�146818�timer�to�get�better�accuracy*,******************************************** /TMA_68901�SET„$F20001ŒTimer�address�for�MK68901 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.* +ŠLEA„TMA_68901,A1‡GET�MK68901�Timer�address 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.)*+ŠCLR.B‚MFP_TADR(A1)‡RESET�timer�A�data�reg.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.  *<*‚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�#$80,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. /************************************************&*‡End�of�MK�68901�timer�initialization*/*********************************************** /************************************************.*†initialize�the�VBIM�#1‚control/status�regs�2!*‰to�be�used�by�the�M146818�timer**†NOTE:2*‰Control/vector�reg�0�and�1�are�used�by�SIO�ports*/*********************************************** 0VBIM_V2‚SET‡$FF10CD�Address�of�VBIM�Vector�reg‚21VBIM_C2‚SET‡$FF10C5�Address�of�VBIM�Control�reg�2  !‰MOVE.B„#$54,VBIM_V2‰Vector�reg�39‰MOVE.B„#$10+6,VBIM_C2‡Control�reg�3�=�Enable�Interrupt�+*§Interrupt�Level *>>>>>>/*************************************************†M�146818�Timer�Initialization*/*********************************************** 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 *4*ˆGet�system�time�and�date�from�battery�backed�timer*‰MOVE.L„#1800,D1ŒTimeout�count:UIP_LOOP�BTST†#7,REGA(A1)‰Wait�for�UIP�bit�to�reset�before; NN#‰BEQ.S…UIP_OKAYŒreading�clock�chip.4‰DBRA†D1,UIP_LOOP‰If�battery�is�dead,�we'll�timeout,$‰BRA.S…RANGE_ERR‹and�always�go�here.UIP_OKAY*‰CLR.L…D1’Prepare�for�following�short�load'‰MOVE.B„HRS(A1),D1ŠGet�hours�from�timerŠCHECK_RANGE.L�D1,#0,#230‰MOVE.L„#3600*1000,D2‡Addend�is�one�hour's�msecs+‰CLR.L…D0’Calculation�will�take�place�in�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�secondsNNNNN*‰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.S…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�REMOV< E�'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©*ÇŠ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*********************************************************************** ŠENDNNNN*ˆVME12X.CNFGDRVR.CI,*ˆ(CNFGDRVR�file�for�both�VME120�and�VME122)NNNNN= NN’›&£%«³!» ÃËÓ6Û'* Configuration file for device driversO*------------------------------------------------------------------------------D* This file sets up the flags used by the "VME12X.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.�---;*�VME12X.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�controller�number8ƒNHRWIN$1‚=�1Œ#�of�hardƒdisk�drives�on�1st�RWIN1;�max=�2:ƒNFRWIN$1‚=�2Œ#�of�floppy�disk�drives�on�1st�RWIN1;�max=�2>ƒRWIN0$1ƒ=�"'H5WIN40'"‚Type�of�hardƒdisk�on�1st�RWIN1,�drive�0>ƒRWIN1$1ƒ=�"'H5WIN40'"‚Type�of�hardƒdisk�on�1st�RWIN1,�drive�1@ƒRWIN2$1ƒ=�"'F5DDDSI'"‚Type�of�floppy�disk�on�1st�RWIN1,�drive�2@ƒRWIN3$1ƒ=�"'F5DDDSI'"‚Type�of�floppy�disk�on�1st�RWIN1,�drive�3 +ƒCONTWIN2‚=�"5"Š2nd�RWIN1�controller�number8ƒNHRWIN$2‚=�0Œ#�of�hardƒdisk�drives�on�2nd�RWIN1;�max=�2:ƒNFRWIN$2‚=�0Œ#�of�floppy�disk�drives�on�2nd�RWIN1;�max=�2BƒRWIN0$2ƒ=�"'H5WIN40'"‚Type�of�1st�hardƒdisk�on�2nd�RWIN1,�drive�0BƒRWIN1$2ƒ=�"'H5WIN40'"‚Type�of�2nd�hardƒdisk�on�2nd�RWIN1,�drive�1DƒRWIN2$2ƒ=�"'F5DDDSI'"‚Type�of�1st�floppy�disk�on�2nd�RWIN1,�drive�2DƒRWIN3$2ƒ=�"'F5DDDSI'"‚Type�of�2nd�floppy�disk�on�2nd�RWIN1,�drive�3ƒ*Gƒ*…NOTE:‚You�can�not�mix�5-1/4"�and�8"�floppies.‚Pick�one�or�the�other.ƒ*ENDC O*------------------------------------------------------------------------------)NVME050ƒ=�1Œ#�of�VME050ƒSystem�Controller IFGTˆ\NVME0507ƒNT050$1ƒ=�2Œ#�of�terminals�on�the�VME050�board;�max=�26ƒNP050$1ƒ=�1Œ#�of�printers‚on�the�VME050�board;�max=�1ENDC O*------------------------------------------------------------------------------8NVME300ƒ=�0Œ#�of�MVME300‚IEEE�488�GPIB�controller�boards O*------------------------------------------------------------------------------@NVME316ƒ=�1Œ#�of�MVME316‚VMEbus�to�I/O�channel�interface�boards;*˜max=�1 O*------------------------------------------------------------------------------<NVME319ƒ=�1Œ#�of�MVME319/MVME315�disk/tape�controller�boards IFGTˆ\NVME3195ƒCONT3191‚=�"1"Š1st�MVME319/MVME315�controller�number:ƒNH319$1ƒ=�2Œ#�of�hard�disk�drives�on�1st�MVME319;�max�=�4*±on�1st�MVME315;�max�=�4<ƒNF319$1ƒ=�3Œ#�of�floppy�disk�driv= es�on�1st�MVME319/MVME315; *œmax�=�4. .* The two possible disk controller types are : *¯0�=�XEBEC *¯2�=�ADAPTEC*4* The stepping rates for hard disk controllers are :NN)*ˆXEBEC�-�0�=ƒ3�msec”ADAPTEC�-�0�=ƒ3�msec*�4�=�200�usecž1�=‚28�usec*�5�=‚70�usecž2�=‚12�usec *�6�=‚30�usec *�7�=‚15�usec 1ƒM319C1$1‚=�2ŒType�of�first�Winchester�controllerIƒM3190$1ƒ=�"'H5WIN40'"‚Type�of�1st�hard�disk�on�1st�MVME319/MVME315�board-ƒM319S0$1‚=�2ŒStepping�rate�for�1st�hard�diskIƒM3191$1ƒ=�"'H5WIN40'"‚Type�of�2nd�hard�disk�on�1st�MVME319/MVME315�board-ƒM319S1$1‚=�2ŒStepping�rate�for�2nd�hard�disk2ƒM319C2$1‚=�2ŒType�of�second�Winchester�controllerAƒM3192$1ƒ=�"'H5WIN40'"‚Type�of�3rd�hard�disk�on�1st�MVME319�board-ƒM319S2$1‚=�2ŒStepping�rate�for�3rd�hard�diskAƒM3193$1ƒ=�"'H5WIN40'"‚Type�of�4th�hard�disk�on�1st�MVME319�board-ƒM319S3$1‚=�2ŒStepping�rate�for�4th�hard�diskNNNNNCƒM3194$1ƒ=�"'FTC525S'"‚Type�of�1st�floppy�disk�on�1st�MVME315�board&*£1st�floppy/tape�on�1st�MVME319�boardDƒM3195$1ƒ=�"'‡'"‚Type�of�2nd�floppy�disk�on�1st�MVME319/VME315�boardJƒM3196$1ƒ=�"'F5DDDSI'"‚Type�of�3rd�floppy�disk�on�1st�MVME319/VME315�boardJƒM3197$1ƒ=�"'F5DDDSI'"‚Type�of�4th�floppy�disk�on�1st�MVME319/VME315�board 5ƒCONT3192‚=�"6"Š2nd�MVME319/MVME315�controller�number:ƒNH319$2ƒ=�0Œ#�of�hard�disk�drives�on�2nd�MVME319;�max�=�4*±on�2nd�MVME315;�max�=�4<ƒNF319$2ƒ=�0Œ#�of�floppy�disk�drives�on�2nd�MVME319/MVME315; *œmax�=�4. 1ƒM319C1$2‚=�2ŒType�of�first�Winchester�controllerIƒM3190$2ƒ=�"'H5WIN40'"‚Type�of�1st�hard�disk�on�2nd�MVME319/MVME315�board-ƒM319S0$2‚=�2ŒStepping�rate�for�1st�hard�diskIƒM3191$2ƒ=�"'H5WIN40'"‚Type�of�2nd�hard�disk�on�2nd�MVME319/MVME315�board-ƒM319S1$2‚=�2ŒStepping�rate�for�2nd�hard�disk2ƒM319C2$2‚=�2ŒType�of�second�Winchester�controllerAƒM3192$2ƒ=�"'H5WIN40'"‚Type�of�3rd�hard�disk�on�2nd�MVME319�board-ƒM319S2$2‚=�2ŒStepping�rate�for�3rd�hard�diskAƒM3193$2ƒ=�"'H5WIN40'"‚Type�of�4th�hard�disk�on�2nd�MVME319�board-ƒM319S3$2‚=�2ŒStepping�rate�for�4th�hard�diskCƒM3194$2ƒ=�"'FTC525S'"‚Type�of�1st�floppy�disk�on�2nd�MVME315�board&*£1st�floppy/tape�on�2nd�MVME319�boardDƒM3195$2ƒ=�"'‡'"‚Type�of�2> nd�floppy�disk�on�2nd�MVME319/VME315�boardJƒM3196$2ƒ=�"'F5DDDSI'"‚Type�of�3rd�floppy�disk�on�2nd�MVME319/VME315�boardJƒM3197$2ƒ=�"'F5DDDSI'"‚Type�of�4th�floppy�disk�on�2nd�MVME319/VME315�boardENDC O*------------------------------------------------------------------------------ NNN8ƒNH360$1ƒ=�0Œ#�of�hard�disk�drives�on�1st�VME360;�max=�4 AƒM3600$1ƒ=�"'FXF2322'"‚Type�of�1st�hard�disk�on�1st�MVME360�boardAƒM3601$1ƒ=�"'FXF2322'"‚Type�of�2nd�hard�disk�on�1st�MVME360�boardAƒM3602$1ƒ=�"'FF2322A'"‚Type�of�3rd�hard�disk�on�1st�MVME360�boardAƒM3603$1ƒ=�"'FF2322B'"‚Type�of�4th�hard�disk�on�1st�MVME360�board -ƒCONT3602‚=�"8"Š2nd�MVME360�controller�number8ƒNH360$2ƒ=�0Œ#�of�hard�disk�drives�on�2nd�VME360;�max=�4 AƒM3600$2ƒ=�"'FF2322A'"‚Type�of�1st�hard�disk�on�2nd�MVME360�boardAƒM3601$2ƒ=�"'FF2322B'"‚Type�of�2nd�hard�disk�on�2nd�MVME360�boardAƒM3602$2ƒ=�"'FF2322A'"‚Type�of�3rd�hard�disk�on�2nd�MVME360�boardAƒM3603$2ƒ=�"'FF2322B'"‚Type�of�4th�hard�disk�on�2nd�MVME360�boardENDC O*------------------------------------------------------------------------------5NVME400‚=�0�#�of�MVME400‚dual�7201�serial�port�boards IFGT‚\NVME400:ƒNU400$1ƒ=�0�#�of�ports/users�on�VME400�bd.�#1;�max=�2/bd.:ƒNU400$2ƒ=�0�#�of�ports/users�on�VME400�bd.�#2;�max=�2/bd.ENDC O*------------------------------------------------------------------------------9NVME410‚=�0�#�of�MVME410‚dual�16-bit�parallel�port�boardsNNN IFGT‚\NVME410<ƒNU410$1ƒ=�0Œ#�of�printers�in�use�on�VME410�board�#1:‚max=�2<ƒNU410$2ƒ=�0Œ#�of�printers�in�use�on�VME410�board�#2:‚max=�2ENDC O*------------------------------------------------------------------------------;NVME435ƒ=�0Œ#�of�MVME435�mag�tape�controller�boards;�max=�2 IFGTˆ\NVME435;ƒN435$1„=�0Œ#�of�tape�drives�on�first‚MVME435�board;�max=�8<ƒN435$2„=�0Œ#�of�tape�drives�on�second�MVME435�board;�max=�8ENDC O*------------------------------------------------------------------------------7NVME600ƒ=�0Œ#�of�MVME600‚analog�input‚controller�boards O*------------------------------------------------------------------------------8NVME605ƒ=�0Œ#�of�MVME605‚analog�output�controller�boards IFGTˆ\NVME6059ƒNU605…=�0ŒNumber�of�users�(total)�for�the�MVME605�boardsENDC O*------------------------------------------------------------------------------3NVME610ƒ=�0Œ#�of�MVME610…AC‚input‚controller�boards IFGTˆ\NVME610GƒM610QSIZ‚=�128…Minimum�number�of�entries�in�Interrupt�Processing�QueueENDC O*------------------------------------------------------------------------------8NVME615ƒ=�0Œ#�of�MVME615/616�AC‚output�controller�boards IFGTˆ\NVME6159ƒNU615…=�0ŒNumber�of�users�(total)�for�the�MVME615�boardsENDC O*-? -----------------------------------------------------------------------------3NVME620ƒ=�0Œ#�of�MVME620…DC‚input‚controller�boards O*------------------------------------------------------------------------------4NVME625ƒ=�0Œ#�of�MVME625…DC‚output�controller�boards IFGTˆ\NVME6259ƒNU625…=�0ŒNumber�of�users�(total)�for�the�MVME625�boardsENDC O*------------------------------------------------------------------------------#NRAD†=�0Œ#�of�RAD†Remote�A/D�boards IFGTˆ\NRADƒNURAD…=�0Œ#�of�RAD�usersENDC O*------------------------------------------------------------------------------#NRIO†=�0Œ#�of�RIO†Remote�I/O�boards IFGTˆ\NRIO1ƒNRIOINTƒ=�0Œ#�of�interrupt�levels�per�I/O�moduleENDC O*------------------------------------------------------------------------------NNNNNNN**ˆVME12X.IFDRVR.CI/*ˆ(IFDRVR�file�used�for�both�VME120�and�VME122)7* Conditional file for VME120 and VME122 device driversO*------------------------------------------------------------------------------K* This file uses flags setup in the VME12X.CNFGDRVR.CI and VME12X.SYSTEM.CI0* files to conditionally include device drivers.*J* The user should not have to modify this file to include/exclude drivers.*D*„******************************************************************?*„**‚NOTICE:‚The�following�conditionals�are�order�dependent.„**3*„**‹Do�not�change�the�order!‚Local�drivers�1st.‡**9*„**‹The�order�determines�device�number�(HD00,PR,�etc)‚***„**‹for�most�items.¤**D*„******************************************************************** IFNEˆ\NVME316Dƒ*‚The�VME316�has�no�driver.‚It�has�an�initialization�module�that�isJƒ*‚merged�into�SYSINIT.RO.‚The�include�file�below�defines�the�I/O�channel.ƒ*ƒINCLUDE…&.M316DEF.CIENDC* IFNEˆ\NVME320ƒINCLUDE…&.M320DRV.CIENDC* IFNEˆ\NVME319ƒINCLUDE…&.M319DRV.CIENDC* IFNEˆ\NORWINƒINCLUDE…&.RWINDRV.CIENDC* IFNEˆ\NVME360ƒINCLUDE…&.M360DRV.CIENDC* IFNEˆ\NOLTERMƒINCLUDE…&.MFPDRV.CIENDC* IFNEˆ\NVME050ƒINCLUDE…&.M050DRV.CIENDC* IF? NEˆ\NVME400ƒINCLUDE…&.MPSC400.CIENDC* IFNEˆ\NVME331ƒINCLUDE…&.M331DRV.CIENDC* IFNEˆ\NVME410ƒINCLUDE…&.PIA410.CIENDC* IFNEˆ\NVME300ƒINCLUDE…&.M300DRV.CIENDC* IFNEˆ\NVME435ƒINCLUDE…&.M435DRV.CIENDC* IFNEˆ\NVME600ƒ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ã`**ˆVME12X.SYSTEM.CI2*ˆ(SYSTEM.CI�file�used�for�both�VME120�and�VME122)NNNNNNNìõ2ý49 6L****************************************************************************K*‚This�file�contains�all�board/system�dependencies�for�VME120�and�VME122.�*&*‚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.‚Th@ e�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‰****************************************************************** IFEQˆ\CLOCK050AƒTIMER…=�$F20001†Address�of�timer�on�VME120�(Must�match�MFP_BASE)ENDCIFNEˆ\CLOCK050+ƒTIMER…=�$FF1101†Address�of�timer�on�VME050ENDC*œ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*œ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.*@*ˆThe�following�parameters�are�used�to�define�memory�partitions.A*ˆIf�only�partition�0�exists,�then�MEMEND2�should�be�set�to�zero.*IFNEˆ\MMU‰If�MMU*ƒIFEQˆ\MEMALOC…If�using�Best�Fit�algorithm3†NOPARTSƒ=�2ŒNumber�of�memory�partitions�(needed�by†*˜&.INITMEM.AG)E†MEMEND1ƒ=�$30000-$100‚The�endƒof�partition�0�(assumed�to�start�at�0)0†MEMEND2ƒ=�$30000-$100‚The�start�of�partition�1.*†MEMEND3ƒ=�$400000†The�endƒof�partition�1.ƒENDC/ƒIFNEˆ\MEMALOC…If�using�Buddy�Buffers�algorithm3†NOPARTSƒ=�1ŒNumber�of�memory�partitions�(needed�by†*˜&.INITMEM.AG)A†MEMEND1ƒ=�$400000†The�endƒof�partition�0�(assumed�to�start�at�0)'†MEMEND2ƒ=�$0‹The�start�of�partition�1.%†MEMEND3ƒ=�$0‹The�endƒof�partition�1.ƒENDC@ ENDCIFEQˆ\MMU‰If�NO�MMU3ƒNOPARTSƒ=�1ŒNumber�of�memory�partitions�(needed�byƒ*˜&.INITMEM.AG)BƒMEMEND1ƒ=�$400000†The�endƒof�partition�0�(assumed�to�start�at�0).'ƒMEMEND2ƒ=�$0‹The�start�of�partition�1.%ƒMEMEND3ƒ=�$0‹The�endƒof�partition�1.ENDC 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�loaded6*˜If�nonzero,�VERSAdos�will�be�moved�at�initialization*˜time.3ASMTYPEƒ=�0ŒType�of�assembler�to�use�for�INITIO1.AG *œ0�-�Use�ASM*œ1�-�Use�ASM020 EMSG‰*****************************************************************)MSG‰**‚Parameters�about�table�sizes,�etc.EMSG‰***************************************************************** 'PAGESIZE‚=�\PGSIZE†From�.RMS.CI*6ASN‡=�127Š#�of�address�spaces:‚needed�by�&.INITDAT.AG. EMSG‰***************************************************************** MSG‰**½**#MSG‰**ŒADDRESS�AND�DATA�BUS�SIZE˜**=MSG‰**…---------------------------------------------------…**'MSG‰**ŒA$SIZE�=‚WIDTH�OF�ADDRESS�BUS“** MSG‰**½**)MSG‰**Œ32…=‚32�BIT�EXTENDED�ADDRESSING�**)MSG‰**Œ24…=‚24�BIT�STANDARD�ADDRESSING�** MSG‰**½**$MSG‰**ŒD$SIZE�=‚WIDTH�OF�DATA�BUS–** MSG‰**½**#MSG‰**Œ32…=‚32�BIT�LONGWORD�DATA“**MSG‰**Œ16…=‚16�BIT�WORD�DATA—** MSG‰**½**EMSG‰***************************************************************** D$SIZE„=�16 A$SIZE„=�24 GMSG‰*******************************************************************>MSG‰*ƒCopy�the�system�initializer�into�M68XXX.INIT.RO�based�on:MSG‰*ƒthe�type�of�memory�allocation�defined�at�RMSGEN�timeMSG‰*ƒin�.RMS.CD.GMSG‰******************************************************************* IFEQˆ\MEMALOC'ƒ=COPY‡BESTFIT.INIT.RO,M68XXX.INIT.RO;Y ƒIFEQˆ\MMU†=COPY‡&.MTYPE.SI,MTYPE.SI;YƒENDC ƒIFNEˆ\MMU†=COPY‡MULT.MTYPE.SI,MTYPE.SI;YƒENDCENDC IFNEˆ\MEMALOC%ƒ=COPY‡BUDDY.INIT.RO,M68XXX.INIT.RO;Yƒ=COPY‡&.MTYPE.SI,MTYPE.SI;YENDC GMSG‰*******************************************************************=MSG‰*ƒCopy�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;YN=/*=/*†VME12X.SYSINIT.LG=/*K=/* Link chain file run at sysgen time to link SYSINIT.LO with a PREINIT.RO=/*?=/* Sysgen parameter PC = \PC = address at which to link driver=/*)=LINK ,SYSINIT.LO,\WORKLS;HAMIXS,\LISTOPTSEG .INT:8 \PCINPUT PREINIT.ROINPUT ROGEN.ROINPUT &.INITDAT.ROINPUT &.SYSPAR.ROEND=/*=ENDNA NNNNN'MMULDR VERSADOSCI**  $**ˆMMULDR.VERSADOS.CI*AMSG‰*************************************************************-MSG‰**ˆLDR�--�Loader�(trap�#4�server�task)Ž**AMSG‰*************************************************************TASKˆ&.LDR.LO,&LDRSTATE…=�'READ'ATTRIB„=�'CRIT'ATTRIB„=�'SYST'PRIORITY‚=�$C8 SESSIONƒ=�4*�VVVVV‚BAW�10/1/85&L0 = *&L1 =\&L0/\PAGESIZE*\PAGESIZEIFNE \&L0-\&L1&L0 = \&L1+\PAGESIZEENDCPC�=�\&L0ŒLDR�load�addr.LDRSTR„=�*ŒLDR�load�addr.* ^^^^^SUBSˆMMU.LOADER.LGLINKˆMMU.LOADER.LGEND‰LDR5* Build VERSAdos patch chain file .VERSAPT.CF!=COPY‡VERSAPT.LDR.CF,VERSAPT.CF;ANNNA NN"'FHSIOS VERSADOSCI77<  $**ˆ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‚=�$D1*�VVVVV‚BAW�10/1/85&L0 = *&L1 =\&L0/\PAGESIZE*\PAGESIZEIFNE \&L0-\&L1&L0 = \&L1+\PAGESIZEENDC PC = \&L0FHSSTR�=�*‹FHS�load�addr.* ^^^^^ FHSASR„=�*+2ŠFHS�ASR�entry�pointSUBSˆFHS.IXR.AG,ASM‰FHS.IXR.AG,FHS.IXR.RO,\WORKLS;R,\LISTOPT SUBSˆ&.FHS.LG LINKˆ&.FHS.LGEND‰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;AN/=B 'NOMMULDRVERSADOSCIDD  $**ˆNOMMULDR.VERSADOS.CI*AMSG‰*************************************************************-MSG‰**ˆLDR�--�Loader�(trap�#4�server�task)Ž**AMSG‰*************************************************************TASKˆ&.LDR.LO,&LDRSTATE…=�'READ'ATTRIB„=�'CRIT'ATTRIB„=�'SYST'PRIORITY‚=�$C8 SESSIONƒ=�4*�VVVVV‚BAW�10/1/85&L0 = *&L1 =\&L0/\PAGESIZE*\PAGESIZEIFNE \&L0-\&L1&L0 = \&L1+\PAGESIZEENDCPC�=�\&L0ŒEET�load�addr.* ^^^^^LDRSTR„=�*ŒLDR�load�addr.SUBSˆNOMMU.LOADER.LGLINKˆNOMMU.LOADER.LGEND‰LDR5* Build VERSAdos patch chain file .VERSAPT.CF!=COPY‡VERSAPT.LDR.CF,VERSAPT.CF;ANNNNN<'SIO ADDRESS CIQQ]  $B **ˆ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*------------------------------------------------------------------------7L319$01ƒ=�\SIOBASE+$0000�VME319/VME315�board�#1�address*žL319$01‚=�\L319$017L319$02ƒ=�\SIOBASE+$0200�VME319/VME315�board�#2�address*žL319$02‚=�\L319$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$06I1RZI*------------------------------------------------------------------------.L333$01ƒ=�\SIOBASE+$3800�VME333�bd.�#1�address*žL333$01‚=�\L333$01.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*------------------------------------------------------------------------.L350$01ƒ=�\SIOBASE+$5000�VME350�bd.�#1�address*žL350$01‚=�\L350$01NNNC NN.L350$02ƒ=�\SIOBASE+$5100�VME350�bd.�#2�address*žL350$02‚=�\L350$02.L350$03ƒ=�\SIOBASE+$5200�VME350�bd.�#3�address*žL350$03‚=�\L350$03.L350$04ƒ=�\SIOBASE+$5300�VME350�bd.�#4�address*žL350$04‚=�\L350$04I*------------------------------------------------------------------------.L355$01ƒ=�\SIOBASE+$5400�VME355�bd.�#1�address*žL355$01‚=�\L355$01I*------------------------------------------------------------------------.L360$01ƒ=�\SIOBASE+$0C00�VME360�bd.�#1�address*žL360$01‚=�\L360$01.L360$02ƒ=�\SIOBASE+$0E00�VME360�bd.�#2�address*žL360$02‚=�\L360$02I*------------------------------------------------------------------------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.NN'VME13X CNFGDRVRCInn.ó  $IFDRVR CI¿¿_  $**ˆVME13X.CNFGDRVR.CI1*ˆ(CNFGDRVR�file�used�for�both�VME130�and�VME131)NC NNNNNNfo&w%‡!� —Ÿ§6¯'* Configuration file for device driversO*------------------------------------------------------------------------------D* This file sets up the flags used by the "VME13X.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.�---;*�VME13X.SYSTEM.CIƒadd�processor�board/system�dependencies,(*˜including�local�terminals�and�printers6*�&.CNFGTASK.CI†add�O/S�task�configuration�for�ROM/RAMM***************************************************************************** O*------------------------------------------------------------------------------ENOLTERMƒ=�2‡#�of�terminals�using�VME130�(MK68564)�serial�ports;�max=2 O*------------------------------------------------------------------------------2NORWIN„=�0Œ#�of�RWIN1„Winchester�controller�boards* IFGTˆ\NORWIN+ƒCONTWIN1‚=�"8"Š1st�RWIN1�controller�number8ƒNHRWIN$1‚=�0Œ#�of�hardƒdisk�drives�on�1st�RWIN1;�max=�2:ƒNFRWIN$1‚=�0Œ#�of�floppy�disk�drives�on�1st�RWIN1;�max=�2>ƒRWIN0$1ƒ=�"'H5WIN40'"‚Type�of�hardƒdisk�on�1st�RWIN1,�drive�0>ƒRWIN1$1ƒ=�"'H5WIN40'"‚Type�of�hardƒdisk�on�1st�RWIN1,�drive�1@ƒRWIN2$1ƒ=�"'F5DDDSI'"‚Type�of�floppy�disk�on�1st�RWIN1,�drive�2@ƒRWIN3$1ƒ=�"'F5DDDSI'"‚Type�of�floppy�disk�on�1st�RWIN1,�drive�3 +ƒCONTWIN2‚=�"9"Š2nd�RWIN1�controller�number8ƒNHRWIN$2‚=�0Œ#�of�hardƒdisk�drives�on�2nd�RWIN1;�max=�2:ƒNFRWIN$2‚=�0Œ#�of�floppy�disk�drives�on�2nd�RWIN1;�max=�2BƒRWIN0$2ƒ=�"'H5WIN40'"‚Type�of�1st�hardƒdisk�on�2nd�RWIN1,�drive�0BƒRWIN1$2ƒ=�"'H5WIN40'"‚Type�of�2nd�hardƒdisk�on�2nd�RWIN1,�drive�1DƒRWIN2$2ƒ=�"'F5DDDSI'"‚Type�of�1st�floppy�disk�on�2nd�RWIN1,�drive�2DƒRWIN3$2ƒ=�"'F5DDDSI'"‚Type�of�2nd�floppy�disk�oD n�2nd�RWIN1,�drive�3ƒ*Gƒ*…NOTE:‚You�can�not�mix�5-1/4"�and�8"�floppies.‚Pick�one�or�the�other.ƒ*ENDC O*------------------------------------------------------------------------------)NVME050ƒ=�1Œ#�of�VME050ƒSystem�Controller IFGTˆ\NVME0507ƒNT050$1ƒ=�2Œ#�of�terminals�on�the�VME050�board;�max=�26ƒNP050$1ƒ=�1Œ#�of�printers‚on�the�VME050�board;�max=�1ENDC O*------------------------------------------------------------------------------8NVME300ƒ=�0Œ#�of�MVME300‚IEEE�488�GPIB�controller�boards O*------------------------------------------------------------------------------@NVME316ƒ=�0Œ#�of�MVME316‚VMEbus�to�I/O�channel�interface�boards;*˜max=�1 O*------------------------------------------------------------------------------<NVME319ƒ=�1Œ#�of�MVME319/MVME315�disk/tape�controller�boards IFGTˆ\NVME3195ƒCONT3191‚=�"1"Š1st�MVME319/MVME315�controller�number:ƒNH319$1ƒ=�2Œ#�of�hard�disk�drives�on�1st�MVME319;�max�=�4*±on�1st�MVME315;�max�=�4<ƒNF319$1ƒ=�3Œ#�of�floppy�disk�drives�on�1st�MVME319/MVME315; *œmax�=�4. .* The two possible disk controller types are : *¯0�=�XEBEC *¯2�=�ADAPTEC*4* The stepping rates for hard disk controllers are :NN)*ˆXEBEC�-�0�=ƒ3�msec”ADAPTEC�-�0�=ƒ3�msec*�4�=�200�usecž1�=‚28�usec*�5�=‚70�usecž2�=‚12�usec *�6�=‚30�usec *�7�=‚15�usec 1ƒM319C1$1‚=�2ŒType�of�first�Winchester�controllerIƒM3190$1ƒ=�"'H5WIN40'"‚Type�of�1st�hard�disk�on�1st�MVME319/MVME315�board-ƒM319S0$1‚=�2ŒStepping�rate�for�1st�hard�diskIƒM3191$1ƒ=�"'H5WIN40'"‚Type�of�2nd�hard�disk�on�1st�MVME319/MVME315�board-ƒM319S1$1‚=�2ŒStepping�rate�for�2nd�hard�disk2ƒM319C2$1‚=�2ŒType�of�second�Winchester�controllerAƒM3192$1ƒ=�"'H5WIN40'"‚Type�of�3rd�hard�disk�on�1st�MVME319�board-ƒM319S2$1‚=�2ŒStepping�rate�for�3rd�hard�diskAƒM3193$1ƒ=�"'H5WIN40'"‚Type�of�4th�hard�disk�on�1st�MVME319�board-ƒM319S3$1‚=�2ŒStepping�rate�for�4th�hard�diskNNNNNCƒM3194$1ƒ=�"'FTC525S'"‚Type�of�1st�floppy�disk�on�1st�MVME315�board&*£1st�floppy/tape�on�1st�MVME319�boardDƒM3195$1ƒ=�"'‡'"‚Type�of�2nd�floppy�disk�on�1st�MVME319/VME315�boardJƒM3196$1ƒ=�"'F5DDDSI'"‚Type�of�3rd�floppy�disk�on�1st�MVME319/VME315�boardD JƒM3197$1ƒ=�"'F5DDDSI'"‚Type�of�4th�floppy�disk�on�1st�MVME319/VME315�board 5ƒCONT3192‚=�"7"Š2nd�MVME319/MVME315�controller�number:ƒNH319$2ƒ=�0Œ#�of�hard�disk�drives�on�2nd�MVME319;�max�=�4*±on�2nd�MVME315;�max�=�4<ƒNF319$2ƒ=�0Œ#�of�floppy�disk�drives�on�2nd�MVME319/MVME315; *œmax�=�4. 1ƒM319C1$2‚=�2ŒType�of�first�Winchester�controllerIƒM3190$2ƒ=�"'H5WIN40'"‚Type�of�1st�hard�disk�on�2nd�MVME319/MVME315�board-ƒM319S0$2‚=�2ŒStepping�rate�for�1st�hard�diskIƒM3191$2ƒ=�"'H5WIN40'"‚Type�of�2nd�hard�disk�on�2nd�MVME319/MVME315�board-ƒM319S1$2‚=�2ŒStepping�rate�for�2nd�hard�disk2ƒM319C2$2‚=�2ŒType�of�second�Winchester�controllerAƒM3192$2ƒ=�"'H5WIN40'"‚Type�of�3rd�hard�disk�on�2nd�MVME319�board-ƒM319S2$2‚=�2ŒStepping�rate�for�3rd�hard�diskAƒM3193$2ƒ=�"'H5WIN40'"‚Type�of�4th�hard�disk�on�2nd�MVME319�board-ƒM319S3$2‚=�2ŒStepping�rate�for�4th�hard�diskCƒM3194$2ƒ=�"'FTC525S'"‚Type�of�1st�floppy�disk�on�2nd�MVME315�board&*£1st�floppy/tape�on�2nd�MVME319�boardDƒM3195$2ƒ=�"'‡'"‚Type�of�2nd�floppy�disk�on�2nd�MVME319/VME315�boardJƒM3196$2ƒ=�"'F5DDDSI'"‚Type�of�3rd�floppy�disk�on�2nd�MVME319/VME315�boardJƒM3197$2ƒ=�"'F5DDDSI'"‚Type�of�4th�floppy�disk�on�2nd�MVME319/VME315�boardENDC O*------------------------------------------------------------------------------.BOARD.EQ*‚must�come�first.)*‚The�two�systems�are:�VME117�and�VME133..*‚That�is�where�the�macro�RTC_MOVE�is�defined.**ˆXREF'S* *ˆFrom�SYSPAR*‰XREF†TIME_LEFT ‰XREF†NSE‰XREF†MIDNIGHT**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.***7*‚THIS�IS�A�NEW�WAY�TO�CALCULATE�NUMBER�OF�MF ILLISECONDS<*‚AND�DATE�AFTER�READING�THE�MM58274�BATTERY�BACKED�UP�CLOCK***‚REGISTER�USE:*’0ƒ1ƒ2ƒ3ƒ4ƒ5ƒ6*ˆA�* *ˆD‰*ƒ*ƒ*ƒ*ƒ**)*ˆA1�=�address�of�battery-backed�up�clock'*ˆD0�=�accumulated�milliseconds�of�time-*ˆD1�=�seconds�and�minutes�as�read�from�clock(*ˆD2�=�hours�and�days�as�read�from�clock(*ˆD3�=�month�and�year�as�read�from�clock*ˆD4�=�work�register*H*‚The�MM58472�stores�its�time�data�in�binary�coded�decimal�and�when�read/*‚you�see�an�F�in�the�upper�4�bits�of�the�byte.*1*‚Follow�along�with�this�example�in�the�comments:*#*ˆthe�time�is�13:29:45ƒdate‚3/26/85* *‚read�as**ˆF5F4F9F2ƒF3F1F6F2„F3F0F5F8**‚from�the�MM58472.*RTC_ST:‰MOVE.L„RTC_TIMER,A1*‰PEA‡RTC_BE(PC)ŠWhere�to�go�if�there�is�no#‰MOVE.W„#'BE',-(A7)‰real�time�clock RTC_LOOP:9‰RTC_MOVE.L�UNIT_SEC(A1),D1…Read�the�clock�into�registers‰AND.L†#$0F0F0F0F,D1‰RTC_MOVE.L�UNIT_HRS(A1),D2‰RTC_MOVE.L�UNIT_MON(A1),D3.‰RTC_MOVE.L�UNIT_SEC(A1),D4…Read�seconds�again‰AND.L†#$0F0F0F0F,D48**‰MOVEP.LƒUNIT_SEC(A1),D1…Read�the�clock�into�registers**‰MOVEP.LƒUNIT_HRS(A1),D2**‰MOVEP.LƒUNIT_MON(A1),D3-**‰MOVEP.LƒUNIT_SEC(A1),D4…Read�seconds�again)‰CMP.L…D1,D4�If�its�different,�try�again. ‰BNE‡RTC_LOOP ÅIÎQÖ,,‰CLR.L…D0’D0�will�contain�total�milliseconds**ƒD0�=�0**‰sec�min�hr‚day�mon‚yr+*ƒD1�=�05040902‰D2�=�03010602ŠD3�=�03000508**ƒD4�=�05040902**‚First�we�work�with�D1*‰AND.L…#$0F,D4�D4�=�00000002 ‰MULU†#10,D4ŽD4�=�00000014†(&20)‰LSR.L…#8,D1�D1�=�00050409(‰ADD.B…D1,D4�D4�=�0000001D†(&29)‚minutes‰CHECK_RANGE.L‚D4,#0,#59*‰MULU†#60,D4ŽD4�=�000006CC†(&1740)�seconds(‰ADD.L…D4,D0�Add�number�of�seconds�to�D0**‰LSR.L…#8,D1�D1�=�00000504‰CLR.L…D4’D4�=�00000000‰MOVE.B„D1,D4�D4�=�00000004(‰MULU†#10,D4ŽD4�=�00000028‚(&40�seconds)‰LSR.L…#8,D1�D1�=�00000005(‰ADD.L…D1,D4�D4�=�0000002D‚(&45�seconds)‰CHECK_RANGE.L‚D4,#0,#59*‰ADD.L…D4,D0�D0�=�000006F9‚(&1785�seconds).‰MULU†#1000,D0ŒD0�=�001B3CA8‚(&17850000�M�SEC)*F*‚Now�D0�holds�the�total�so�far�of�the�number�of�milliseconds�from�the*‚minutes�and�seconds�fields.*&*‚Let's�work�on�the�hours�field�in�D2.**‰hr‚day�mon‚yr*ƒD2�=�F3F1F6F2ŠD3�=�F3F0F5F8*"‰AND.L…#$0F0F0F0F,D2‡D2�=�03010602‰MOVE.L„D2,D1�D1�=�03010602‰SWAP†D1’D1�=�06020301‰AND.L…#$0F0F,D1ŒD1�=�00000301‰CLR.L…D4’D4�=�00000000‰MOVE.B„D1,D4�D4�=�00000001&‰MULU†#10,D4ŽD4�=�0000000A„(&10�hours)‰LSR.L…#8,D1�D1�=�00000003&‰ADD.B…D1,D4�D4�=�0000000D„(&13�hours)‰CHECK_RANGE.L�D4,#0,#23**-‰MOVE.L„#3600*1000,D1‡Milliseconds�in�an�hour/‰BRA‡CALCLOOPŒLoop�until�number�of�milliseconds.CALCHRS‚ADD.L…D1,D0�in�hours�field�calculated.CALCLOOP�DBRA†D4,CALCHRS *1*‚D0�now�contains�the�grand�total�of�milliseconds*‰ADD.L…TIME_LEFT,D0 ‰MOVE.L„D0,NSEŽStore�it�for�exec‰CLR.L…MIDNIGHT***ƒNow�work�on�the�date**‰hr‚day�mon‚yr*ƒD2�=�03010602ŠD3�=�F3F0F5F8*"‰AND.L…#$0F0F0F0F,D3‡D3�=�03000508 ‰CLR.L…D0‰MOVE.B„D3,D0�D0�=�00000008&‰MULU†#10,D0ŽD0�=�00000050‚(&80�years)‰LSR.W…#8,D3�D3�=�00030005&‰ADD.B…D3,D0�D0�=�00000055‚(&85�years)‰CHECK_RANGE‚D0,#0,#99%‰ADD.W…#1900,D0ŒD0�=�000007C1‚(&1985)!‰SWAP†D0’D0�=�07C10000‚(YYYY0000) ‰SWAP†D3’D3�=�05080300 ‰CLR.L…D4‰MOVE.B„D3,D4�D4�=�00000000‰MULU†#10,D4ŽD4�=�00000000‰LSR.L…#8,D3�D3�=�00050803&‰ADD.B…D3,D4�D4�=�00000003‚(&03�month)%‰ADD.B…D4,D0�D0�=�07C10003‚(YYYY00MM)‰CHECK_RANGEƒD0,#1,#12%‰LSL.W…#8,D0�D0�=�07C10300‚(YYYYMM00)**‰hr‚day*ƒD2�=�03010602*‰AND.L…#$0F0F,D2‹D2�=�00000602 ‰CLR.L…D4‰MOVE.B„D2,D4�D4�=�00000002%‰MULU†#10,D4ŽD4�=�00000014ƒ(&20�days)‰LSR.L…#8,D2�D2�=�00000006%‰ADD.B…D2,D4�D4�=�0000001Aƒ(&26�days)‰CHECK_RANGE‚D4,#1,#31%‰ADD.B…D4,D0�D0�=�07C1031Aƒ(YYYYMMDD) *7*‚The�time�and�date�G look�reasonable,�so�let's�keep�them*‰BSR‡DATEGOŽConvert�to�ordinal!‰MOVE.L„D0,DATE�Give�date�to�exec  0‰ADDQ.L„#6,A7�Remove�'BE'�and�bus�error�messages‰RTS*@*‚If�we�come�here,�one�of�the�fields�read�from�the�clock�chip�is)*‚"whacko".‚Set�system�time�and�day�to�0.*1RANGE_ERR‚MOVE.L‚TIME_LEFT,NSE‡Time�of�day�<---�0‰CLR.L…MIDNIGHT‰MOVE.L„#0,DATE ‰ADDQ.L„#6,A7‰RTS*4*‚If�we�come�here,�there�is�no�real�time�clock�found*RTC_BE‰MOVE.L„#CRASHSAV,RTC_TIMER‰RTSNNNN'MACRO DCB SIêê R  $DCBDISK SIûû/  $DCBGPIB SI   Q  $DCBMTAPESI  $  $DCBPRT SI    $DCBTERM SI ' '  $Š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.G 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.  ENDMNNN‰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…Space�for�status�fields./�DC.B„\S†Winchester�controller�type�for�MVME319�DC.W„\9†Attributes�mask.�DC.W„\A†Parameters�mask.�DC.W„\B†Attributes�word.�DC.W„\C†#�of�bytes/sector.,�DC.L„0‡Total�#�of�sectors�--�returned�info.�DC.L„\D†Write�timeout.�DC.L„\E†Read‚timeout.�DC.B„\F†#�of�sectors/track.�DC.B„\G†#�of�heads.!�DC.W„\H†#�of�cylinders�on�media.�DC.B„\I†Interleave�factor.$�DC.B„\J†Spiral�offset�(in�sectors).'�DC.W„\K†Physical�sector�size�of�media.'�DC.W„\L†Starting�head�number�on�drive.&�DC.W„\M†Number�of�cylinders�on�drive.)�DC.W„\N†Precompensation�cylinder�number.-�DC.B„\O†Physical�sectors�per�track�on�drive.�DC.B„\P†Stepping�rate./�DC.W„\Q†Reduced�write�current�cylinder�number.�DC.W„\R†ECC�data�burst�length.  ENDM‰PAGE***‚Macro�to�define�Extended�DCB�for�a�Disk.* DSK1DCB MACRO'�SECTION�0‡===�Extended�DCB�SECTION�===!�DC.W„\1†Extended�attributes�mask!�DC.W„\2†Extended�parameters�mask!�DC.W„\3†Extended�attributes�word�DC.B„\4†Gap�byte�1�DC.B„\5†Gap�byte�2�DC.B„\6†Gap�byte�3�DC.B„\7†Gap�byte�4�DC.B„\8†Sector�Slip�countE�DC.H B„0,0,0,0,0‚5�bytes�reserved�as�offset�to�another�parameter�block  ENDMNNó0 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  ENDMNH NNNNN 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.  ENDMNN % 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).  ENDMI NNNNNN  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.  ENDMNNNN I 'MK68901 TIMERST SI 4 4¬  $***************************‚MK68901.TIMERST.SI**************************  ,**********************************************†Initialize�MK�68901�timer*,******************************************** **EŠMOVE.W�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 B*‚Now�we�must�initialize�the�Multi-function�peripheral�(MFP)�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.6*‚Don't�initialize�it,�or�you�will�mess�up�the�VME133.* 3**ˆ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. ,E 5= =+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.)*<<<<<<<)‰GET_TI„Get�the�timer�input�value�into�D0‰MOVE.L„D0,D1…Save�it�in�D18‰MOVE.W„TIMINTVA(PC),TIMINTVˆSave�the�number�of�millisec*°between�interrupts�in�SYSPAR+‰MOVE.W„#1000,TIMINTV4�Initialize�TIMINTV4.!*¦In�TIMEINT,�we�subtract�TIMINTR"*¦from�TIMINTV4�at�each�interrupt. *¦When�the�value�is�negative,�we"*¦subtract�and�extra�1�millisecond*¦from�TIMINTV,�Thus�correcting*¦for�rounding�in�the�CD�value*¦computed�below.*2‰GET_TO„Get�the�timer�output�time�interval�into�D2*=* Compute desired count down value according to the following*ƒformula:‚CJ D�=�TI/(PS*TO)-*‰CD…=�Count�down�value�for�MFP_TADR�register*‰TI…=�Timer�input�frequency#*’On�the�VME133,�1.23�MHz�=�1230000#*’On�the�VME120,�10/4�MHz�=�25000003*’On�the�VME122,�12.5/4�MHz�=�3125000�cycles/second#*‰PS…=�Prescalar�value�for�MFP_TACR*’On�the�VME133,�PS�=�100*’On�the�VME12x,�PS�=�200?*‰TO…=�Desired�timer�output�time�interval�(number�of�interrupts5*’per�second;�10�ms�between�interrupts�===>�TO�=�100)*ŠMULUƒ#PS,D2‹Multiply�PS*TOŠDIVUƒD2,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ƒ#PS,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ƒD0*G* 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*>>>>>>*-**ˆCLR.B‚MFP_TADR(A1)‡RESET�timer�A�data�reg.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‚#PS_TACR,MFP_TACR(A1)„Set�up�TACR�for�pre-scalar�value  *=*‚Now�initialize�the�programmable�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. =ŠMOVE.B�#TMA_INT,MFP_IMRA(A1)‚Unmask�interrupts�from�timer�A.6ŠCLR.B‚MFP_IMRB(A1)‡Mask�off�all�interrupts�from�IMRB. =ŠMOVE.B�#TMA_INT,MFP_IERA(A1)‚Enable�interrupts�from�timer�A.9ŠMOVE.B�#TMB_INT,MFP_IERB(A1)‚Enable�interrupts�from�IPRB* ‰ADD.L…#6,A7‰RTS TIMERBE‚MOVE.L„#CRASHSAV,PTMADDR‰RTS /************************************************&*‡End�of�MK�68901�timer�initialization*/***********************************************  NNN'MULT MTYPE SI Q Q   $J B* MULT.MTYPE.SI - Memory type assignments for multiple partitions.**‚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�#1NNNNNN I ' KILLEXECEQ ^ ^Ò  $MMBPMMU EQ  ˆ  $TIMECONVAI ˜ ˜ž  $RMSGEN CF ± ±  $SYSPAR AG Ò Ò'¢  $MS CIÿÿÿÿÿÿÿÿ  ‰PAGE******************************* Beginning of &.KILLEXEC.EQ ******************************* ŠLLENƒ120 $*ˆEXEC�modules�that�crash�the�system *ƒNUCLEUSTRAP0SAˆEQU‚$10�M68XXX.TRAP0.SA *ƒEVENT�MANAGER$ASQEVNTSA†EQU‚$20�M68XXX.ASQEVENT.SA!ASQGETSA‡EQU‚$21�M68XXX.ASQGET.SA#ASQREADSA†EQU‚$22�M68XXX.ASQREAD.SA$EXQEVNTSA†EQU‚$23�M68XXX.EXQEVENT.SA#RTEVENTSA†EQU‚$24�M68XXX.RTEVENT.SA#WTEVENTSA†EQU‚$25�M68XXX.WTEVENT.SA#ASQFREESA†EQU‚$26�M68XXX.ASQFREE.SA *ƒMEMORY�MANK AGER(M451_LOADMMUSA�EQU‚$30�M68451.LOADMMU.SADSEGXSAˆEQU‚$31�M68XXX.DSEGX.SA#SEGALOCSA†EQU‚$32�M68XXX.SEGALOC.SA#SEGDEALSA†EQU‚$33�M68XXX.SEGDEAL.SA#SEGSHARSA†EQU‚$34�M68XXX.SEGSHAR.SA!TFRSEGSA‡EQU‚$35�M68XXX.TFRSEG.SA *ƒTASK�MANAGERTERMSA‰EQU‚$40�M68XXX.TERM.SA *ƒTIME�MANAGER&M68X_STDTIMSA‚EQU‚$50�M68XXX.STDTIM.SA(M6818_STDTIMSA�EQU‚$51�M146818.STDTIM.SA&V117_STDTIMSA‚EQU‚$52�VME117.STDTIM.SA *ƒSEMAPHORE�MANAGERPVSEMSAˆEQU‚$60�M68XXX.PVSEM.SA *ƒTRAP�SERVER�MANAGER* *ƒEXMON�MANAGER* *ƒEXCEPTION�MANAGER!COMINTSA‡EQU‚$90�M68XXX.COMINT.SA *ƒSYSTEM�INITIALIZER"BESTIMEMSA…EQU‚$A0�BESTFIT.IMEM.SA BUDYIMEMSA…EQU‚$A1�BUDDY.IMEM.SARMSSAŠEQU‚$A2�M68XXX.RMS.SA%INITIO1AG†EQU‚$A3�.INITIO1.AGINITSA‰EQU‚$A4�M68XXX.INIT.SA *ƒI/O�MANAGERCMRSAŠEQU‚$B0�M68XXX.CMR.SA  N*******‚KILLER�ERROR�CODES�****************************************************5*ˆThe�following�equates�are�roughly�organized�by�type*)*ˆ$01�-�$1F‹Most�likely�hardware�problems$*ˆ$21�-�$2F‹Reserved�for�future�use.8*ˆ$31�-�$4F‹Internal�inconsistencies�-�could�be�a�bug�or*œcould�be�hardware.*ˆ$51�-�$6F‹Insufficient�memory(*ˆ$71�-�$8F‹Most�likely�a�SYSGEN�problem:*ˆ$91�-�$9F‹Programming�mistake,�i.e.�wrong�TRAP�#0�number&*ˆ$A1�-�$BF‹Most�likely�a�software�bug#*ˆ$C1�-�$FF‹Reserved�for�future�use O*******************************************************************************8BERR_UNEXPECTED‹EQU‚$01ˆAn�unexpected�Bus�error�occurred VK _5 g1 o"*¦while�initializing�memory.8BAD_MEMORY�EQU‚$02ˆWhile�looking�for�memory,�a�Bus�error&*¦occurred�on�a�non�256-byte�boundary. 4NO_451”EQU‚$03ˆBus�Error�when�try�to�find�M68451�MMU8NO_451_1ST�EQU‚$04ˆBus�Error�when�try�to�find�1st�M684518NO_12X_REG�EQU‚$05ˆCan't�access�VME12x�control�register.8NO_101_REG�EQU‚$06ˆCan't�access�VME101�control�register.8NO_110_REG�EQU‚$07ˆCan't�access�VME110�control�register.8NO_S10_REG�EQU‚$08ˆCan't�access�VMES10�control�register.8NO_117_REG�EQU‚$09ˆCan't�access�VME117�control�register.8NO_133_REG�EQU‚$0AˆCan't�access�VME133�control�register.  O******************************************************************************* 6NO_ASN_ADD�EQU‚$31ˆAdding�an�ASN�to�the�ASN�table,�but$*¦1st�LWORD�of�the�ASN�table�<>�!ASN9NO_ASN_DELETE�EQU‚$32ˆDeleting�an�ASN�from�the�table,�but *¦1st�LWORD�of�the�table�<>�!ASN =NOCCB_POLLING_CHAIN‡EQU‚$33ˆCan't�find�the�CCB�in�the�Polling*©Chain;NOCCB_ALL_CHAIN‹EQU‚$34ˆCan't�find�the�CCB�in�the�All�Chain BBADTCB_RETURN_FROM_ISR„EQU‚$35ˆReturning�from�an�ISR,�!TCB�was�not"*©in�the�first�4�bytes�of�the�TCB.BBADTCB_ERROR_MSG_TO_ASQƒEQU‚$36ˆBad�return�from�an�ISR�-�trying�to)*¦send�an�error�mesage�to�the�task's�ASQ,'*¦but�!TCB�was�not�found�in�the�first�4*¦bytes�of�the�TCB. ?DSMMU_DEAL_FAILED‰EQU‚$37ˆDeleting�a�segment,�but�DEL_SEG_FROM_ *©MMU�failed.=DSMMU_TFR_FAILEDŠEQU‚$38ˆTransferring�a�segment,�but�DEL_SEG_*©FROM_MMU�failed. =�ending�ptr.6PT_DUPNUM‘EQU‚$74ˆDuplicate�partition�numbers�detected@PT_END_START_OVERLAP†EQU‚$75ˆEnding�ptr�previous�<�next�starting*©ptr.8PT_1ST_BAD�EQU‚$76ˆFirst�partition�not�RAM�or�not�number*©0.:NO_FRBLK_ADDR�EQU‚$77ˆFailed�call�to�get�the�entry�address*©for�trap�#0�routine�T0FRBLK. =CXTCB_ROM_FAILEDŠEQU‚$78ˆProcessing�mini-TCB's�-CRXTCB�failed*9PA_SINT_FAILEDŒEQU‚$79ˆFailed�call�to�pagealoc�the�memory"*¦SYSINIT�resides�in�(for�safety).3ASN_TOO_BIG�EQU‚$7AˆAn�ASN�>=�128�was�detected�when)*¦deleting�a�segment�from�the�M68451�MMU. 5PAT_FAILED�EQU‚$7BˆA�request�periodic�activation�call*¦from�the�EXEC�failed. ?PAT_NO_FREE_NODES‰EQU‚$7CˆDuring�system�initialization,�no�free*¦nodes�were�found�in�the�PAT. =CTCB_ROM_FAILED‹EQU‚$7DˆProcessing�mini-TCB's�-�CRTCB�failed.7NO_MTCBS_FOUNDŒEQU‚$7EˆProcessing�mini-TCB's�-�!TCB�not*©found�within�$200�of�ENDMEMT. 9NO_VCT_FOUNDŽEQU‚$7FˆDuring�SYSINIT,�no�!VCT�found�within*©$200�of�EXEC�(ESTART). O******************************************************************************* @TRAP0_TOO_HIGH_NUMBER…EQU‚$91ˆTrap�#0�directive�#�>�highest�#�in*©table.7TRAP0_BAD_NUMBERŠEQU‚$92ˆUnimplemented�directive�number O******************************************************************************* G*„The�next�7�equates�are�for�PAGEFREE�calls�that�failed�while�trying�to*„free�up�memory�for::PF_PERM_FAILEDŒEQU‚$A1ˆPAGEFREE�failed�-�PERManent�segmentAPF_CONFLICT_SEG_FAILED„EQU‚$A2ˆPAGEFREE�failed�-�LOGPHY�failed�in1*�GTSEG�-�must�free�up�memory�that�was�allocated.+PF_ASQ_FAILED�EQU‚$A3ˆPAGEFREE�failed�-�ASQ+PF_CCB_FAILED�EQU‚$A4ˆPAGEFREE�failed�-�CCB+PF_TCB_FAILED�EQU‚$A5ˆPAGEFREE�failed�-�TCB-PF_XTCB_FAILEDŒEQU‚$A6ˆPAGEFREE�failed�-�XTCB6PF_DEL_FAILED�EQU‚$A7ˆPAGEFREE�failed�-�Deallocating�a *©Segment.1PF_FTST_FAILEDŒEQU‚$A8ˆPAGEFREE�failed�-�Fake�TST 5TCB_NO_ROOM�EQU‚$B0ˆNo�room�in�TCB�for�EXEC�stack�and *©registers. ABAD_STATE_ASQ_MACHINE…EQU‚$B1ˆWe�have�reached�an�impossible�state*©in�the�ASQ�state�machine. 5ABORT_CRITASK�EQU‚$B2ˆThe�exec�is�aborting�a�critical*©system�task.O******************************************************************************* **************************** Ending of &.KILLEXEC.EQ ****************************NN‰PAGE****************************** Beginning of &.MMBPMMU.EQ ******************************L NNNNNNN w €B ˆC/VPGSIZE‚EQU‡$100�VERSAdos�page�size�=�256�bytes6VPGMASK‚EQU‡VPGSIZE-1‹Mask�for�rounding�up�to�256�byte+NOTVPGMASK‚EQU„$FFFFFFFF-VPGMASKƒboundaries*3*‚Addresses�of�nodes�must�be�on�16�byte�boundaries.@*‚We�use�the�B16MASK�for�AND�ing�with�addresses�from�descriptors!*‚to�assure�the�16�byte�boundary.*B16MASK‚EQU‡$F NOTB16MASK‰EQU‡$FFFFFFFF-B16MASK*>*‚Power�of�2�for�a�long�descriptor�and�for�a�short�descriptor.* LONGSZB‚EQU‡3SHORTSZB�EQU‡2*@****************************************************************‰PAGEH*************************************************************************Æ***ˆREGISTER�OFFSETS�FROM�MMB�BASE�ADDRESS˜**Æ*H************************************************************************ ** ‰OFFSET„0$MMBROOT‚DS.B†4‰Root�pointer�register)MMBTC„DS.B†4‰Translation�control�register2***************************************************°*#*ˆOFFSETS�FOR�FUNCTION�CODE�TABLE‰**°*2************************************************** ‰OFFSET„0‰DS.B†8UDATA„DS.B†8‰USER�DATAUPGM…DS.B†8‰USER�PROGRAM‰DS.B†8‰DS.B†8SDATA„DS.B†8‰SUPERVISOR�DATASPGM…DS.B†8‰SUPERVISOR�PROGRAM‰DS.B†8‰CPU�ADDRESS�SPACE<*************************************************************º***ƒEQUATES�USED�BY�BOTH�MMB851�AND�M68851‘**º*<***************************************************************ˆTRANSLATION�CONTROL�REGISTER�BIT�EQUATES"*ˆOFFSETS�TO�THE�FIELD�IN�QUESTION**TCENABLBƒEQU‡31ˆENABLE�ADDRESS�TRANSLATION,TCSREB…EQU‡25ˆENABLE�SUPERVISOR�ROOT�POINTER)TCFCLB…EQU‡24ˆENABLE�FUNCTION�CODE�LOOKUP'TCPSB†EQU‡20ˆNUMBER�OF�BITS�IN�PAGESIZE3TCISB†EQU‡16ˆNUMBER�OF�UPPER�BITS�OF�ADDR�TO�IGNORE6TCTIAB…EQU‡12ˆNUMBER�OF�BITS�IN�ADDRESS�AT�FIRST�LEVEL3TCTIBB…EQUˆ8ˆNUMBER�OF�BITS�IN�ADDRESS�AT�2NDƒLEVEL3TCTICB…EQUˆ4ˆNUMBER�OF�BITS�IN�ADDRESS�AT�3RDƒLEVEL3TCTIDB…EQUˆ0ˆNUMBER�OF�BITS�IN�ADDRESS�AT�4THƒLEVEL**¡**ˆDESCRIPTOR�SIZES‰**¡**L 8LONGSZƒEQU‡1<�LIMIT�IS�LOWER)LDSTATUS�DS.B†2‰STATUS�FIELDLDADDRƒDS.B†4‰ADDRESS�FIELD**ˆSHORT�DESCRIPTOR* ‰OFFSET„0SDADDRƒDS.B†3‰ADDRESS�FIELDSDSTATUS�DS.B†1‰STATUS�FIELD**"*ˆVALUES�OF�LONG�DESCRIPTOR�FIELDS**ˆLDLU*3LDLOWER‚EQU‡$8000…SET�LIMIT�FIELD�TO�BE�LOWER�BOUND* *ˆLDSTATUS*:LDUREAD‚EQU‡$E000…GRANT�USER�OR�SUPERVISOR�ACCESS�FOR�READ�DAY�NUMBER�WHERE�DAY�1�=�JAN�1�1980***ˆCALL *’BSR‡DATEGO*¦BINARY�GREGORIAN�-�YYYYMMDD*§TO*¦BINARY�ORDINALƒ-�DAY�NUMBER*ˆINPUT'*’D0�=�DATE�TO�BE�CONVERTED�--�YYYYMMDD**ˆOUTPUT#*’D0�=�CONVERTED�DATE‡--�DAY�NUMBER*O*********************************************************************************ˆNON-LEAP�DAYS�BEFORE�TABLE¥*Ç=DATEDBNL�DC.W�0,31,59,90,120,151,181,212,243,273,304,334,365Œ*Ç*ˆLEAP�DAYS�BEFORE�TABLE©*Ç�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" ƒ=/*ƒ"VM03" ƒ=/*ƒ"VM04" ƒ=/*ƒ"VME101" ƒ=/*ƒ"VME110" ƒ=/*ƒ"VME117" ƒ=/*ƒ"VME120" ƒ=/*ƒ"VME122" ƒ=/*ƒ"VME130" ƒ=/*ƒ"VME131" ƒ=/*ƒ"VMES10" ƒ=/*ƒ"VME133"ƒ=/&ƒ=NOARGƒ=@END=/ENDIF =/IF RX=1ƒ=DEL�&.S.LS/&.SYSASM.LS=/ENDIF=/RX=0 ©f ²L ºO ÂF=/*-------------------------------------------------------------------F=/*-------------------------------------------------------------------=/IFEQ "EXORMACS"\1 ƒ=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=/ENDIFF=/*-------------------------------------------------------------------F=/*-------------------------------------------------------------------=/IFEQ "VM03"\1ƒ=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=/ENDIFF=/*-------------------------------------------------------------------F=/*-------------------------------------------------------------------=/IFEQ "VM04"\1ƒ=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=/ENDIFF=/*-------------------------------------------------------------------F=/*-------------------------------------------------------------------=/IFEQ "VME101"\1ƒ=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=/ENDIFF=/*-------------------------------------------------------------------F=/*-N ------------------------------------------------------------------=/IFEQ "VME110"\1ƒ=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=/ENDIFF=/*-------------------------------------------------------------------F=/*-------------------------------------------------------------------=/IFEQ "VME117"\1ƒ=SYSGEN�VME117.RMS.CD,,&.S.LSƒ=/RX=1ƒ=/IF�RD<$C000†=/R?†=/*�Errors�in�SYSGEN†=@ENDƒ=/ENDIFƒ=COPY�VME117.RMS.LL,&.S.LS;A"ƒ=/*�Created�file�is�VME117.RMS.LOƒ=/*ƒand�&.S.LS=/ENDIFF=/*-------------------------------------------------------------------F=/*-------------------------------------------------------------------=/IFEQ "VME120"\1ƒ=SYSGEN�VME120.RMS.CD,,&.S.LSƒ=/RX=1ƒ=/IF�RD<$C000†=/R?†=/*�Errors�in�SYSGEN†=@ENDƒ=/ENDIFƒ=COPY�VME120.RMS.LL,&.S.LS;A"ƒ=/*�Created�file�is�VME120.RMS.LO ƒ=/*ƒ&.S.LS=/ENDIFF=/*-------------------------------------------------------------------F=/*-------------------------------------------------------------------=/IFEQ "VME122"\1ƒ=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=/ENDIFF=/*-------------------------------------------------------------------F=/*-------------------------------------------------------------------=/IFEQ "VME130"\1ƒ=SYSGEN�VME130.RMS.CD,,&.S.LSƒ=/RX=1ƒ=/IF�RD<$C000†=/R?†=/*�Errors�in�SYSGEN†=@ENDƒ=/ENDIFƒ=COPY�VME130.RMS.LL,&.S.LS;A"ƒ=/*�Created�file�is�VME130.RMS.LO ƒ=/*ƒ&.S.LS=/ENDIFF=/*-------------------------------------------------------------------F=/*-------------------------------------------------------------------=/IFEQ "VME131"\1ƒ=SYSGEN�VME131.RMS.CD,,&.S.LSƒ=/RX=1ƒ=/IF�RD<$C000†=/R?†=/*�Errors�in�SYSGEN†=@ENDƒ=/ENDIFƒ=COPY�VME131.RMS.LL,&.S.LS;A"ƒ=/*�Created�file�is�VME131.RMS.LOƒ=/*ƒand�&.S.LS=/ENDIFF=/*-------------------------------------------------------------------F=/*-------------------------------------------------------------------=/IFEQ "VMES10"\1ƒ=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=/*-------------------------------------------------------------------=/IFEQ "VME133"\1ƒ=SYSGEN�VME133.RMS.CD,,&.S.LSƒ=/RX=1ƒ=/IF�RD<$C000†=/R?†=/*�Errors�in�SYSGEN†=@ENDƒ=/ENDIFƒ=COPY�VME133.RMS.LL,&.S.LS;A"ƒ=/*�Created�file�is�VME133.RMS.LOƒ=/*ƒand�&.S.LS=/ENDIFF=/*------------------------------------------------------------------- =OPT -N-O-J=COPY &.S.LS,\2;Y!=/* Output listing directed to \2=ENDNNNNN NNFSYSPAR„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@*…--------‚------‚----------------------------------------------**…10/03/85‚CBS…Added�TRP15TYP�and�BUGTRP15@*…08/12/85‚BAW…Added�SUPERMMU�and�FC_TABLE�for�MMB681�and�M68851(*…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ƒBUGTRP15 ŠXDEFƒCCBHD ŠXDEFƒCFLUSHŠ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ƒFC_TABLE ŠXDEFƒFQBCNT ŠXDEFƒFQLWM ŠXDEFƒFREEQHD ŠXDEFƒFREEQND ŠXDEFƒFRST451 ŠXDEFƒGSTBEG ŠXDEFƒINPTBLŠXDEFƒIOVCTBGN ŠXDEFƒLAM ŠXDEFƒLAST451ŠXDEFƒLAST_MMU_INT_LEVEL ŠXDEFƒLCTBEG ŠXDEFƒMACSTRC ŠXDEFƒMAPBEG ŠXDEFƒMEMOFFŠXDEFƒMIDNIGHT ÊM Óq ÛT ãS ë> ŠXDEFƒMMUHERE ŠXDEFƒMMULOAD ŠXDEFƒNATBEG ŠXDEFƒNNTBEG ŠXDEFƒNOTLAM ŠXDEFƒNSE ŠXDEFƒNWDQHD ŠXDEFƒNWPSEGŠXDEFƒNWSTATUS ŠXDEFƒNWTSEG ŠXDEFƒPANEL ŠXDEFƒPATBEGŠXDEFƒPERTURB_FLAGŠXDEFƒPREEMPT_FLAG ŠXDEFƒPTMADDR ŠXDEFƒRAD1TBL ŠXDEFƒREADYHD ŠXDEFƒRIOTBLŠXDEFƒRTC_TIMER Š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ƒSUPERMMU Š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ƒTRP15TYP ŠXDEFƒUDEFTYP ŠXDEFƒUDRBEG ŠXDEFƒUSERQHD ŠXDEFƒUSERQND ŠXDEFƒUSTBEG ŠXDEFƒV2RQHD ŠXDEFƒVCTUBGN‰PAGE**‚MACROS*,LONGWORD�MACRO�Put�offset�on�4�byte�boundary‰DS.W†0 ‰IFNE†*/4*4-*‰DS.W†1‰ENDC‰ENDM ,BOUND16‚MACRO�Put�offset�on�16�byte�boundary ‰LONGWORD‰IFNE†*/16*16-*‰DS.L†1‰IFNE†*/16*16-*‰DS.L†1‰IFNE†*/16*16-*‰DS.L†1‰ENDC‰ENDC‰ENDC‰ENDM ŠPAGE*E*‚First�define�the�location�of�the�'crash�save�area,'�the�place�whereD*‚the�KILLER�module�will�save�thO e�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) SUPERMMU�DS.L†2‰For�systems�with�the�MMB851�or�M68851�we�store+*œhere�an�8�byte�descriptor�to�point�to�the*œsupervisor�tree.‰BOUND16;FC_TABLE�DS.L†16ˆFor�systems�with�the�MMB851,�we�store�here$*œthe�function�code�table�containing *œ8‚slots.1*œSlots‚1�and�2�each�contain�an�8�byte�descriptor&*œpointing�to�a‚user�translation�tree.1*œSlots�5�and‚6�each‚contain�an�8�byte�descriptor,*œpointing�to�a�supervisor�translation�tree.*)RTC_TIMER�DS.L†4ˆReal�time�clock�address.,*œNot�all�boards�have�a�real�time�clock,�but"*œif�they�do,�the�address�is�here.1*œIt�is�referenced�in�the�INITIO1.�module�and�the*œSTDTIM�module. ENDSYSPƒEQU„*ŠENDNNNNN