COMPDVC 
COMMON
          CTEXT  COMPDVC - DEVICE CODE TABLE PROCESSOR. 
 DVC      SPACE  4,10 
          IF     -DEF,QUAL$,1 
          QUAL   COMPDVC
*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          SPACE  4,10 
***       COMPDVC - DEVICE CODE TABLE PROCESSOR.
*         K. H. BOSSARD.     81/06/09.
          SPACE  4,10 
  
***       *COMPDVC* PROCESSES A TABLE OF DEVICE CODES, WITH 
*         ASSOCIATED MNEMONICS AND MATCHING ROUTINES.  IF *DVC$*
*         IS DEFINED, THEN A DEVICE CODE WILL BE RETURNED THAT
*         CORRESPONDS TO THE EQUIPMENT TYPE DEFINED BY THE
*         SUPPLIED EST ENTRY.  IF *DVC$* IS NOT DEFINED, THEN THE 
*         ENTRY MUST BE DIRECTLY TO ONE OF THE SPECIAL MATCHING 
*         ROUTINES. 
          SPACE  4,10 
**        DCMA - DEVICE CODE AND MNEMONIC TABLE ENTRY.
* 
* SUFFIX  DCMA   CODE,MNE,CON,TR
* 
*                *SUFFIX* = SUFFIX FOR *DEVC.* FOR DUPLICATE MNEMONICS. 
*                *CODE* = DEVICE CODE.
*                *MNE* = DEVICE MNEMONIC. 
*                *CON* = MASK FOR SPECIAL ROUTINE.
*                *TR* = SPECIAL MATCHING ROUTINE ADDRESS. 
  
  
          PURGMAC  DCMA 
          MACRO  DCMA,S,C,M,N,A 
 .B       IF     -DEF,.C
 .C       CON    C
 .B       ELSE
          CON    4000B+C
 .B       ENDIF 
 .D       IFC    NE,/S//
 DEVC.S   EQU    C
 .D       ELSE
 .D       IF     -DEF,DEVC.M
 DEVC.M   EQU    C
 .D       ENDIF 
 MNE      RMT 
          CON    2R_M 
 MNE      RMT 
 ADR      RMT 
          CON    A
 ADR      RMT 
 MSK      RMT 
          CON    N
 MSK      RMT 
 DCMA     ENDM
          SPACE  4,10 
 DVC$     IF     DEF,DVC$ 
**        DVC - MAIN ROUTINE. 
* 
*         ENTRY  (ES - ES+4) = EST ENTRY. 
* 
*         EXIT   (A) = DEVICE CODE, IF FOUND. 
*                    = 0, IF NOT FOUND. 
* 
*         USES   T1.
* 
*         CALLS  EMT, PFC, TMT, TTP.
  
  
 DVC3     LDM    TDVC,T1     RETURN DEVICE CODE 
  
 DVC      SUBR               ENTRY/EXIT 
          LDN    1           INITIALIZE TABLE OFFSET
          STD    T1 
 DVC1     LDD    ES+3        GET EST DEVICE TYPE MNEMONIC 
          LMM    TMNE,T1
          NJN    DVC2        IF MNEMONICS DO NOT MATCH
          LDM    TADR,T1     SET SPECIAL ROUTINE ADDRESS
          ZJN    DVC3        IF NO MATCHING ROUTINE 
          STM    DVCA 
          LDM    TMSK,T1     MATCHING ROUTINE MASK
          RJM    ** 
 DVCA     EQU    *-1         (SPECIAL MATCHING ROUTINE ADDRESS) 
          ZJN    DVC3        IF CORRECT TYPE
 DVC2     AOD    T1          INCREMENT TABLE OFFSET 
          ADC    -TDVCL 
          MJN    DVC1        IF NOT END OF TABLE
          LDN    0           SET CODE NOT FOUND STATUS
          UJN    DVCX        RETURN 
 DVC$     ENDIF 
 TDVC     SPACE  4,10 
**        TDVC - DEVICE CODE TABLE. 
  
  
 TDVC     EQU    *-1
          LOC    1
          DCMA   0002,DI          7054/844-2X DISK
          DCMA   0003,DJ          7054/844-4X DISK
          DCMA   0004,DK          7154/844-2X DISK
          DCMA   0005,DL          7154/844-4X DISK
          DCMA   0007,DM          7155/885 DISK SUBSYSTEM 
          DCMA   0007,DQ          7155/885 DISK SUBSYSTEM / CDSS I
          DCMA   0007,DR          CDSS II DISK SUBSYSTEM
          DCMA   0010,DX          3330-1 DISK 
          DCMA   0011,DY          3330-11 DISK
          DCMA   0012,DZ          3350 DISK 
          DCMA   0012,DA          33502 DISK
*                0013             RESERVED FOR CDC
          DCMA   0014,DB          DEMA DISK 
          DCMA   0016,DM          LARGE SECTOR 7155/885 DISK
 DQL      DCMA   0016,DQ          LARGE SECTOR 7155/885 DISK
  
 FISM     EQU    *                FIRST ISMD CONTROLLER 
          DCMA   0110,DD          7255/834 DISK SUBSYSTEM 
          DCMA   0111,DG          7255/836 DISK SUBSYSTEM 
 LISM     EQU    *                LAST ISMD CONTROLLER
  
          DCMA   0115,DC          7165/895 DISK SUBSYSTEM 
          DCMA   0120,DF          887 (4KB SECTOR) DISK 
          DCMA   0121,DH          887 (16KB SECTOR) DISK
          DCMA   0124,DN          9853 DISK SUBSYSTEM 
          DCMA   0130,EA          5832 (1X SSD) DISK
          DCMA   0131,EB          5832 (2X SSD) DISK
          DCMA   0132,EC          5833 (1X SABRE) DISK
          DCMA   0133,ED          5833 (1XP SABRE) DISK 
          DCMA   0134,EE          5833 (2X SABRE) DISK
          DCMA   0135,EM          5833 (3XP SABRE) DISK 
          DCMA   0136,EN          5833 (4X  SABRE) DISK 
          DCMA   0137,EF          5833 (2XP SABRE) DISK 
          DCMA   0142,EG          5838 (1X ELITE) DISK
          DCMA   0143,EH          5838 (1XP ELITE) DISK 
          DCMA   0144,EI          5838 (2X ELITE) DISK
          DCMA   0145,EK          5838 (3XP ELITE) DISK 
          DCMA   0146,EL          5838 (4X ELITE) DISK
          DCMA   0147,EJ          5838 (2XP ELITE) DISK 
          DCMA   0162,EO          47444 (1X 3.5IN) DISK 
          DCMA   0163,EP          47444 (1XP 3.5IN) DISK
          DCMA   0164,ES          47444 (2X 3.5IN) DISK 
          DCMA   0165,EV          47444 (3XP 3.5IN) DISK
          DCMA   0166,EW          47444 (4X 3.5IN) DISK 
          DCMA   0167,EU          47444 (2XP 3.5IN) DISK
          DCMA   0171,DP,501,EMT  ESM IN ESM MODE / LOW SPEED PORT ONLY 
*         DCMA   0210,DP,501,EMT  ESM IN ECS MODE / LOW SPEED PORT ONLY 
          DCMA   0211,DP,601,EMT  STORNET 
*         DCMA   0212,DP,501,EMT  ESM LOW SPEED PORT (MALET/VE) 
*         DCMA   0213,DP,601,EMT  STORNET (MALET/VE)
 LRMS     EQU    *                LAST MASS STORAGE DEVICE
  
          DCMA   0020,CR          405 CARD READER 
          DCMA   0021,CP          415 CARD PUNCH
          DCMA   0022,LP          512 LINE PRINTER
          DCMA   0022,LQ          512 LINE PRINTER
          DCMA   0023,LR,0,PFC    580-12 LINE PRINTER 
          DCMA   0024,LS,0,PFC    580-16 LINE PRINTER 
          DCMA   0025,LT,0,PFC    580-20 LINE PRINTER 
          DCMA   0026,LR,200,PFC  580-12 PFC LINE PRINTER 
          DCMA   0027,LS,200,PFC  580-16 PFC LINE PRINTER 
          DCMA   0030,LT,200,PFC  580-20 PFC LINE PRINTER 
          DCMA   0031,LX          5870 NON-IMPACT PRINTER 
          DCMA   0032,LY          5970 NON-IMPACT PRINTER 
          DCMA   0041,MT,0,TTP    657 MAG TAPE
          DCMA   0042,MT,400,TTP  667 MAG TAPE
          DCMA   0044,MT,200,TTP  ATS 7-TRACK MAG TAPE
          DCMA   0045,MT,300,TFS  FSC 7-TRACK TAPE
          DCMA   0046,AT          ACS CARTRIDGE TAPE
          DCMA   0047,CT          CARTRIDGE TAPE
          DCMA   0051,NT,0,TTP    659 MAG TAPE
          DCMA   0052,NT,400,TTP  669 MAG TAPE
          DCMA   0053,NT,224,TCM  CMTS 9-TRACK MAG TAPE (CMTS/GCR)
          DCMA   0054,NT,200,TTP  ATS 9-TRACK MAG TAPE
          DCMA   0055,NT,220,TTP  ATS GCR 9-TRACK TAPE
          DCMA   0056,NT,320,TFS  FSC 9-TRACK MAG TAPE (ALSO FSC/GCR) 
          DCMA   0057,NT,230,TIS  ISMT 9-TRACK MAG TAPE (ALSO ISMT/GCR) 
  
 FMUX     EQU    *                FIRST MULTIPLEXER DEVICE
          DCMA   0060,ST,0,TMT    6671 EI200 MUX
          DCMA   0060,TT,0,TMT    6671 MUX
          DCMA   0061,TT,200,TMT  6676 MUX
          DCMA   0062,ST,400,TMT  EMULATED 6671 EI200 MUX 
          DCMA   0062,TT,400,TMT  2550-100(EMULATES 6671) 
          DCMA   0063,TT,600,TMT  2550-100(EMULATES 6676) 
          DCMA   0064,NP          2550
          DCMA   0067,CC          6683 SATELLITE COUPLER
 LMUX     EQU    *                LAST MULTIPLEXER DEVICE 
  
          DCMA   0070,DP,112,EMT  ECS I - DC135 DDP 
          DCMA   0071,DE,110,EMT  ECS I - COUPLER 
          DCMA   0072,DP,212,EMT  ECS II - DC135 DDP
          DCMA   0073,DE,210,EMT  ECS II - COUPLER
          DCMA   0074,DP,111,EMT  ECS I - DC145 DDP 
          DCMA   0075,DP,211,EMT  ECS II - DC145 DDP
          DCMA   0076,DE,320,EMT  LCME - COUPLER
          DCMA   0077,DE,440,EMT  UEM 
          DCMA   0170,DE,530,EMT  ESM IN ESM MODE 
          DCMA   0171,DP,531,EMT  ESM IN ESM MODE WITH LOW SPEED PORT 
          DCMA   0207,DE,510,EMT  ESM IN ECS MODE 
*         DCMA   0210,DP,511,EMT  ESM IN ECS MODE WITH LOW SPEED PORT 
 LECS     EQU    *                LAST EXTENDED MEMORY DEVICE 
  
          DCMA   0104,SS          CCC-MASSTOR 
          DCMA   0105,SS          CCC-MASSTOR (PF3/PF5) 
          DCMA   0200,RP          RING PORT 
  
 FNAD     EQU    0300             FIRST NAD DEVICE CODE 
 NCL      DCMA   0300,NC          LOCAL NAD 
 NCR      DCMA   0301,NC          REMOTE NAD
 LNAD     EQU    0302             LAST NAD DEVICE CODE + 1
  
          LOC    *O 
 TDVCL    EQU    *-TDVC 
 TMNE     SPACE  4,10 
*         TABLE OF DEVICE MNEMONICS.
  
 TMNE     CON    0
 MNE      HERE
 TMNEL    EQU    *-TMNE 
 TADR     SPACE  4,10 
*         TABLE OF MATCHING ROUTINE ADDRESSES.
  
 TADR     CON    0
 ADR      HERE
 TMSK     SPACE  4,10 
*         TABLE OF MATCHING ROUTINE MASKS.
  
 TMSK     CON    0
 MSK      HERE
          TITLE  COMPDVC - SUBROUTINES. 
 PFC      SPACE  4,10 
**        PFC - CHECK FOR 580 PFC PRINTER.
* 
*         ENTRY  (A) = PFC FLAG.
*                (ES - ES+4) = EST ENTRY. 
* 
*         EXIT   (A) = 0, IF PROPER TYPE OF PRINTER.
  
  
 PFC      SUBR               ENTRY/EXIT 
          LMD    ES          MATCH BITS 
          LPC    200
          UJN    PFCX        RETURN 
 TCM      SPACE  4,10 
**        TCM - TEST FOR CMTS (AND CMTS/GCR) TAPE UNIT. 
* 
*         ENTRY  (A) = MASK FOR TAPE TYPE WANTED. 
*                (ES - ES+4) = EST ENTRY. 
* 
*         EXIT   (A) = 0, IF PROPER TYPE. 
  
  
 TCM      SUBR               ENTRY/EXIT 
          LMD    ES          MATCH BITS 
          LPC    224
          ZJN    TCMX        IF CMTS/GCR TAPE 
          SCN    20 
          UJN    TCMX        RETURN 
 TFS      SPACE  4,10 
**        TFS - TEST FOR FSC (AND FSC/GCR) TAPE UNIT. 
* 
*         ENTRY  (A) = MASK FOR TAPE TYPE WANTED. 
*                (ES - ES+4) = EST ENTRY. 
* 
*         EXIT   (A) = 0, IF PROPER TYPE. 
  
  
 TFS      SUBR               ENTRY/EXIT 
          LMD    ES          MATCH BITS 
          LPC    320
          ZJN    TFSX        IF FSC/GCR TAPE
          SCN    20 
          UJN    TFSX        RETURN 
 TIS      SPACE  4,10 
**        TIS - TEST FOR ISMT (AND ISMT/GCR) TAPE UNIT. 
* 
*         ENTRY (A) = MASK FOR TAPE TYPE WANTED.
*               (ES - ES+4) = EST ENTRY.
* 
*         EXIT  (A) = 0, IF PROPER TYPE.
  
 TIS      SUBR               ENTRY/EXIT 
          LMD    ES          MATCH BITS 
          LPC    230
          ZJN    TISX        IF ISMT/GCR TAPE 
          SCN    20 
          UJN    TISX        RETURN 
  
 TMT      SPACE  4,10 
**        TMT - TEST MUX TYPE.
* 
*         ENTRY  (A) = MASK FOR MUX TYPE WANTED.
*                (ES - ES+4) = EST ENTRY. 
* 
*         EXIT   (A) = 0, IF PROPER TYPE. 
  
  
 TMT      SUBR               ENTRY/EXIT 
          LMD    ES+4        MATCH BITS 
          LPC    600
          UJN    TMTX        RETURN 
 TTP      SPACE  4,10 
**        TTP - TEST TAPE TYPE. 
* 
*         ENTRY  (A) = MASK FOR TAPE TYPE WANTED. 
*                (ES - ES+4) = EST ENTRY. 
* 
*         EXIT   (A) = 0, IF PROPER TYPE. 
  
  
 TTP      SUBR               ENTRY/EXIT 
          LMD    ES          MATCH BITS 
          LPC    734
          UJN    TTPX        RETURN 
 EMT      SPACE  4,10 
**        EMT - EM TYPE TEST (EXTENDED MEMORY). 
* 
*         ENTRY  (A) = MASK FOR EM TYPE WANTED. 
*                (ES - ES+4) = EST ENTRY. 
* 
*         EXIT   (A) = 0, IF PROPER TYPE. 
* 
*         USES   T1, CM - CM+4. 
  
  
 EMT      SUBR               ENTRY/EXIT 
          STD    T1          SAVE MASK TYPE 
          LDD    ES+4        GET MST POINTER
          SHN    3
          ADN    DILL 
          CRD    CM          GET WORD *DILL*
          LDD    CM+3 
          LPC    777         MASK DEVICE TYPE PARAMETER 
          LMD    T1          MATCH BITS 
          UJN    EMTX        RETURN 
          SPACE  4,10 
 QUAL$    IF     -DEF,QUAL$ 
          QUAL   *
 DVC$     IF     DEF,DVC$ 
 DVC      EQU    /COMPDVC/DVC 
 DVC$     ENDIF 
 QUAL$    ENDIF 
          ENDX
