AP1L
.PROC,AP1L*I,\
MAPTYP  ' 0= BOTH, 1=CMI/ECS, 2=CHANNEL        '=(*N=0,0,1,2),
ADD     ' NUMBER OF ADD UNITS                  '=(*N=2,2,3,4),
MUL     ' NUMBER OF MUL UNITS                  '=(*N=2,2,3,4),
DIV     ' NUMBER OF DIV UNITS                  '=(*N=1,1,2),
SQRT    ' NUMBER OF SQRT UNITS                 '=(*N=1,1,2),
*CALL COMPC 
*CALL COMLIST 
*CALL COMUSER 
*CALL COMIA 
*CALL COMTOB
*CALL COMTOL
*CALL COMDISK 
*CALL COMD3 
*CALL COMPROC 
. 
  
* 
*  AP1L 
*CALL PSRLEV
* 
  
.*  ASSEMBLE THE MMCL FILES FOR THE 
.*  MAP ON-LINE DIAGNOSTIC AP1. 
.*
.*  BEGIN,AP1L,INSTALL,MAPTYP,ADD,MUL,DIV,SQRT. 
.*
.*      MAPTYP  = 0 FOR BOTH TYPES (DEFAULT)
.*              = 1 FOR ECS/CMI-COUPLED MAP III/IV-23/25
.*              = 2 FOR CHANNEL-COUPLED MAP IV-20/21
.*
.*      ADD = NUMBER OF ADD UNITS (2,3 OR 4) DEFAULT IS 2 
.*
.*      MUL = NUMBER OF MUL UNITS (2,3 OR 4) DEFAULT IS 2 
.*
.*      DIV = NUMBER OF DIV UNITS (1 OR 2) DEFAULT IS 1 
.*
.*      SQRT = NUMBER OF SQRT UNITS (1 OR 2) DEFAULT IS 1 
.*
.*  THIS PROCEDURE CALLS PROCEDURE MAPULIB
.*
.*  START AP1L VIA SUBPROC. 
.*
BEGIN(SUBPROC,INSTALL,AP1L,,LIST,MAPTYPE,IA,TOBLD,TOLIST,USERF) 
REVERT.            AP1L 
EXIT. 
REVERT(ABORT)      AP1L 
  
.DATA,ZZZPROC 
.PROC,AP1L. 
COMMENT.
COMMENT.  #MAPTYP SELECTED = MAPTYP.
COMMENT.
*CALL PSRLEV
BEGIN(PRDIN,INSTALL,PRDNAME=MMCL,#PN=PN,#PR=PR,DISK=0)
BEGIN(UP,INSTALL,RANDOM,PCPL=CPRD,#PC=PC,#CC=CC,PCDECK=MAP) 
RETURN(COMPILE) 
RENAME(OLDPL=NEWER) 
BEGIN(GETULIB,INSTALL,SYSLIB,FTN5LIB) 
* 
REWIND(IN,MREL) 
NOTE(IN,NR)+*IDENT MLIST
NOTE(IN,NR)+*C MACLIST
PACK(IN)
UPDATE(Q,I=IN,O=0)
FTN5(ET,I,B=MREL,L=0) 
LDSET(ERR=ALL,PRESET=ZERO)
LOAD(MREL)
NOGO(MACLIST) 
RETURN(MREL,IN) 
* 
.IF, ($MAPTYP$ .EQ. $0$) .OR. 
     ($MAPTYP$ .EQ. $2$) ,AP1L04. 
* 
*   CONSTRUCT MODSET FOR CHANNEL-COUPLED MAP IV-2X
* 
*     AP1CHL1 
* 
REWIND(CWUSER)
NOTE(CWUSER,NR)+*IDENT AP1CHL1
NOTE(CWUSER,NR)+*DEFINE #CHMAP
.IF,$ADD$.NE.$2$,AP1L05.
NOTE(CWUSER,NR)+*DEFINE ADDU_ADD
.ENDIF,AP1L05.
.IF,$MUL$.NE.$2$,AP1L06.
NOTE(CWUSER,NR)+*DEFINE MULU_MUL
.ENDIF,AP1L06.
.IF,$DIV$.NE.$1$,AP1L07.
NOTE(CWUSER,NR)+*DEFINE DIVU_DIV
.ENDIF,AP1L07.
.IF,$SQRT$.NE.$1$,AP1L08. 
NOTE(CWUSER,NR)+*DEFINE SQRTU_SQRT
.ENDIF,AP1L08.
NOTE(CWUSER,NR)+*DEFINE LDCHP32 
NOTE(CWUSER,NR)+*DEFINE LDCHP30 
NOTE(CWUSER,NR)+*DEFINE LDCHL32 
NOTE(CWUSER,NR)+*DEFINE LDCHR32 
NOTE(CWUSER,NR)+*DEFINE ULCHP32 
NOTE(CWUSER,NR)+*DEFINE ULCHP30 
NOTE(CWUSER,NR)+*DEFINE ULCHL32 
NOTE(CWUSER,NR)+*DEFINE ULCHR32 
.IF,($ADD$.EQ.$4$).AND.($MUL$.EQ.$4$),AP1L09. 
NOTE(CWUSER,NR)+*DEFINE SOP4MA
.ELSE,AP1L09. 
NOTE(CWUSER,NR)+*DEFINE SUMPROD 
.ENDIF,AP1L09.
NOTE(CWUSER,NR)+*DEFINE MONITOR 
NOTE(CWUSER,NR)+*DEFINE UPM 
NOTE(CWUSER,NR)+*DEFINE TMM 
NOTE(CWUSER,NR)+*DEFINE MAXABS
NOTE(CWUSER,NR)+*DEFINE CVEC
NOTE(CWUSER,NR)+*DEFINE ADDVEC
NOTE(CWUSER,NR)+*DEFINE IPVEC 
NOTE(CWUSER,NR)+*DEFINE SUMRVEC 
NOTE(CWUSER,NR)+*DEFINE BCASVEC 
NOTE(CWUSER,NR)+*DEFINE MAXE
NOTE(CWUSER,NR)+*DEFINE SQRTVEC 
NOTE(CWUSER,NR)+*DEFINE COMVEC
NOTE(CWUSER,NR)+*DEFINE XMM2DM
PACK(CWUSER)
BEGIN(MAPULIB,INSTALL,CHMAP=YES)
PURGE(AP1CHL1/NA) 
DEFINE(AP1CHL1) 
COPY(MAPLIB,AP1CHL1,V)
RETURN(MAPLIB,CWUSER) 
MACLIST(AP1CHL1)
* 
*     AP1CHL2 
* 
NOTE(CWUSER,NR)+*IDENT AP1CHL2
NOTE(CWUSER,NR)+*DEFINE #CHMAP
.IF,$ADD$.NE.$2$,AP1L10.
NOTE(CWUSER,NR)+*DEFINE ADDU_ADD
.ENDIF,AP1L10.
.IF,$MUL$.NE.$2$,AP1L11.
NOTE(CWUSER,NR)+*DEFINE MULU_MUL
.ENDIF,AP1L11.
.IF,$DIV$.NE.$1$,AP1L12.
NOTE(CWUSER,NR)+*DEFINE DIVU_DIV
.ENDIF,AP1L12.
.IF,$SQRT$.NE.$1$,AP1L13. 
NOTE(CWUSER,NR)+*DEFINE SQRTU_SQRT
.ENDIF,AP1L13.
NOTE(CWUSER,NR)+*DEFINE LDCHP32 
NOTE(CWUSER,NR)+*DEFINE LDCHP30 
NOTE(CWUSER,NR)+*DEFINE LDCHL32 
NOTE(CWUSER,NR)+*DEFINE LDCHR32 
NOTE(CWUSER,NR)+*DEFINE ULCHP32 
NOTE(CWUSER,NR)+*DEFINE ULCHP30 
NOTE(CWUSER,NR)+*DEFINE ULCHL32 
NOTE(CWUSER,NR)+*DEFINE ULCHR32 
.IF,($ADD$.EQ.$4$).AND.($MUL$.EQ.$4$),AP1L14. 
NOTE(CWUSER,NR)+*DEFINE SOP4MA
.ELSE,AP1L14. 
NOTE(CWUSER,NR)+*DEFINE SUMPROD 
.ENDIF,AP1L14.
NOTE(CWUSER,NR)+*DEFINE STKMOVE 
NOTE(CWUSER,NR)+*DEFINE FFT 
NOTE(CWUSER,NR)+*DEFINE MONITOR 
NOTE(CWUSER,NR)+*DEFINE UPM 
NOTE(CWUSER,NR)+*DEFINE TMM 
NOTE(CWUSER,NR)+*DEFINE NMO 
NOTE(CWUSER,NR)+*DEFINE CPLXMPY 
NOTE(CWUSER,NR)+*DEFINE MAXABS
NOTE(CWUSER,NR)+*DEFINE LINTERP 
NOTE(CWUSER,NR)+*DEFINE CVEC
NOTE(CWUSER,NR)+*DEFINE ADDVEC
NOTE(CWUSER,NR)+*DEFINE IPVEC 
NOTE(CWUSER,NR)+*DEFINE SUMRVEC 
NOTE(CWUSER,NR)+*DEFINE SQRTVEC 
NOTE(CWUSER,NR)+*DEFINE XMM2DM
PACK(CWUSER)
BEGIN(MAPULIB,INSTALL,CHMAP=YES)
PURGE(AP1CHL2/NA) 
DEFINE(AP1CHL2) 
COPY(MAPLIB,AP1CHL2,V)
RETURN(MAPLIB,CWUSER) 
MACLIST(AP1CHL2)
* 
*     AP1CHL3 
* 
NOTE(CWUSER,NR)+*IDENT AP1CHL3
NOTE(CWUSER,NR)+*DEFINE #CHMAP
.IF,$ADD$.NE.$2$,AP1L16.
NOTE(CWUSER,NR)+*DEFINE ADDU_ADD
.ENDIF,AP1L16.
.IF,$MUL$.NE.$2$,AP1L17.
NOTE(CWUSER,NR)+*DEFINE MULU_MUL
.ENDIF,AP1L17.
.IF,$DIV$.NE.$1$,AP1L18.
NOTE(CWUSER,NR)+*DEFINE DIVU_DIV
.ENDIF,AP1L18.
.IF,$SQRT$.NE.$1$,AP1L19. 
NOTE(CWUSER,NR)+*DEFINE SQRTU_SQRT
.ENDIF,AP1L19.
NOTE(CWUSER,NR)+*DEFINE LDCHP32 
NOTE(CWUSER,NR)+*DEFINE LDCHP30 
NOTE(CWUSER,NR)+*DEFINE LDCHL32 
NOTE(CWUSER,NR)+*DEFINE LDCHR32 
NOTE(CWUSER,NR)+*DEFINE ULCHP32 
NOTE(CWUSER,NR)+*DEFINE ULCHP30 
NOTE(CWUSER,NR)+*DEFINE ULCHL32 
NOTE(CWUSER,NR)+*DEFINE ULCHR32 
.IF,($ADD$.EQ.$4$).AND.($MUL$.EQ.$4$),AP1L20. 
NOTE(CWUSER,NR)+*DEFINE SOP4MA
.ELSE,AP1L20. 
NOTE(CWUSER,NR)+*DEFINE SUMPROD 
.ENDIF,AP1L20.
NOTE(CWUSER,NR)+*DEFINE EFFT
NOTE(CWUSER,NR)+*DEFINE FILTER
NOTE(CWUSER,NR)+*DEFINE MONITOR 
NOTE(CWUSER,NR)+*DEFINE UPM 
NOTE(CWUSER,NR)+*DEFINE TMM 
NOTE(CWUSER,NR)+*DEFINE MAXABS
NOTE(CWUSER,NR)+*DEFINE CVEC
NOTE(CWUSER,NR)+*DEFINE ADDVEC
NOTE(CWUSER,NR)+*DEFINE IPVEC 
NOTE(CWUSER,NR)+*DEFINE SUMRVEC 
NOTE(CWUSER,NR)+*DEFINE SQRTVEC 
NOTE(CWUSER,NR)+*DEFINE XMM2DM
NOTE(CWUSER,NR)+*DEFINE CXMPY 
PACK(CWUSER)
BEGIN(MAPULIB,INSTALL,CHMAP=YES)
PURGE(AP1CHL3/NA) 
DEFINE(AP1CHL3) 
COPY(MAPLIB,AP1CHL3,V)
RETURN(MAPLIB,CWUSER) 
MACLIST(AP1CHL3)
.ENDIF(AP1L04)
* 
.IF, ($MAPTYP$ .EQ. $0$) .OR. 
     ($MAPTYP$ .EQ. $1$) ,AP1L05. 
* 
*   CONSTRUCT MODSET FOR ECS/CMI-COUPLED MAP III/IV 
* 
*     AP1EL1
* 
*   (FILE AP1EL1 HAS AP1 MODE 7 DEFINITIONS 
*   WHICH PREFORM CHANNEL I/O TESTS)
* 
NOTE(CWUSER,NR)+*IDENT AP1EL1 
NOTE(CWUSER,NR)+*DEFINE AP1M7 
.IF,$ADD$.NE.$2$,AP1L21.
NOTE(CWUSER,NR)+*DEFINE ADDU_ADD
.ENDIF,AP1L21.
.IF,$MUL$.NE.$2$,AP1L22.
NOTE(CWUSER,NR)+*DEFINE MULU_MUL
.ENDIF,AP1L22.
.IF,$DIV$.NE.$1$,AP1L23.
NOTE(CWUSER,NR)+*DEFINE DIVU_DIV
.ENDIF,AP1L23.
.IF,$SQRT$.NE.$1$,AP1L24. 
NOTE(CWUSER,NR)+*DEFINE SQRTU_SQRT
.ENDIF,AP1L24.
NOTE(CWUSER,NR)+*DEFINE LDCHP32 
NOTE(CWUSER,NR)+*DEFINE LDCHP30 
NOTE(CWUSER,NR)+*DEFINE LDCHL32 
NOTE(CWUSER,NR)+*DEFINE LDCHR32 
NOTE(CWUSER,NR)+*DEFINE ULCHP32 
NOTE(CWUSER,NR)+*DEFINE ULCHP30 
NOTE(CWUSER,NR)+*DEFINE ULCHL32 
NOTE(CWUSER,NR)+*DEFINE ULCHR32 
NOTE(CWUSER,NR)+*/
NOTE(CWUSER,NR)+*DEFINE LOADP32 
NOTE(CWUSER,NR)+*DEFINE LOADP30 
NOTE(CWUSER,NR)+*DEFINE LOADL32 
NOTE(CWUSER,NR)+*DEFINE LOADR32 
NOTE(CWUSER,NR)+*DEFINE UNLDP32 
NOTE(CWUSER,NR)+*DEFINE UNLDP30 
NOTE(CWUSER,NR)+*DEFINE UNLDL32 
NOTE(CWUSER,NR)+*DEFINE UNLDR32 
.IF,($ADD$.EQ.$4$).AND.($MUL$.EQ.$4$),AP1L25. 
NOTE(CWUSER,NR)+*DEFINE SOP4MA
.ELSE,AP1L25. 
NOTE(CWUSER,NR)+*DEFINE SUMPROD 
.ENDIF,AP1L25.
NOTE(CWUSER,NR)+*DEFINE MONITOR 
NOTE(CWUSER,NR)+*DEFINE UPM 
NOTE(CWUSER,NR)+*DEFINE TMM 
NOTE(CWUSER,NR)+*DEFINE MAXABS
NOTE(CWUSER,NR)+*DEFINE CVEC
NOTE(CWUSER,NR)+*DEFINE ADDVEC
NOTE(CWUSER,NR)+*DEFINE IPVEC 
NOTE(CWUSER,NR)+*DEFINE SUMRVEC 
NOTE(CWUSER,NR)+*DEFINE BCASVEC 
NOTE(CWUSER,NR)+*DEFINE MAXE
NOTE(CWUSER,NR)+*DEFINE SQRTVEC 
NOTE(CWUSER,NR)+*DEFINE COMVEC
NOTE(CWUSER,NR)+*DEFINE XMM2DM
PACK(CWUSER)
BEGIN(MAPULIB,INSTALL,CHMAP=YES)
PURGE(AP1EL1/NA)
DEFINE(AP1EL1)
COPY(MAPLIB,AP1EL1,V) 
RETURN(MAPLIB,CWUSER) 
MACLIST(AP1EL1) 
* 
*     AP1EL2
* 
NOTE(CWUSER,NR)+*IDENT AP1EL2 
.IF,$ADD$.NE.$2$,AP1L26.
NOTE(CWUSER,NR)+*DEFINE ADDU_ADD
.ENDIF,AP1L26.
.IF,$MUL$.NE.$2$,AP1L27.
NOTE(CWUSER,NR)+*DEFINE MULU_MUL
.ENDIF,AP1L27.
.IF,$DIV$.NE.$1$,AP1L28.
NOTE(CWUSER,NR)+*DEFINE DIVU_DIV
.ENDIF,AP1L28.
.IF,$SQRT$.NE.$1$,AP1L29. 
NOTE(CWUSER,NR)+*DEFINE SQRTU_SQRT
.ENDIF,AP1L29.
NOTE(CWUSER,NR)+*DEFINE LOADP32 
NOTE(CWUSER,NR)+*DEFINE LOADP30 
NOTE(CWUSER,NR)+*DEFINE LOADL32 
NOTE(CWUSER,NR)+*DEFINE LOADR32 
NOTE(CWUSER,NR)+*DEFINE UNLDP32 
NOTE(CWUSER,NR)+*DEFINE UNLDP30 
NOTE(CWUSER,NR)+*DEFINE UNLDL32 
NOTE(CWUSER,NR)+*DEFINE UNLDR32 
.IF,($ADD$.EQ.$4$).AND.($MUL$.EQ.$4$),AP1L30. 
NOTE(CWUSER,NR)+*DEFINE SOP4MA
.ELSE,AP1L30. 
NOTE(CWUSER,NR)+*DEFINE SUMPROD 
.ENDIF,AP1L30.
NOTE(CWUSER,NR)+*DEFINE STKMOVE 
NOTE(CWUSER,NR)+*DEFINE FFT 
NOTE(CWUSER,NR)+*DEFINE MONITOR 
NOTE(CWUSER,NR)+*DEFINE UPM 
NOTE(CWUSER,NR)+*DEFINE TMM 
NOTE(CWUSER,NR)+*DEFINE NMO 
NOTE(CWUSER,NR)+*DEFINE CPLXMPY 
NOTE(CWUSER,NR)+*DEFINE MAXABS
NOTE(CWUSER,NR)+*DEFINE LINTERP 
NOTE(CWUSER,NR)+*DEFINE CVEC
NOTE(CWUSER,NR)+*DEFINE ADDVEC
NOTE(CWUSER,NR)+*DEFINE IPVEC 
NOTE(CWUSER,NR)+*DEFINE SUMRVEC 
NOTE(CWUSER,NR)+*DEFINE SQRTVEC 
NOTE(CWUSER,NR)+*DEFINE XMM2DM
PACK(CWUSER)
BEGIN(MAPULIB,INSTALL,CHMAP=YES)
PURGE(AP1EL2/NA)
DEFINE(AP1EL2)
COPY(MAPLIB,AP1EL2,V) 
RETURN(MAPLIB,CWUSER) 
MACLIST(AP1EL2) 
* 
*     AP1EL3
* 
NOTE(CWUSER,NR)+*IDENT AP1EL3 
.IF,$ADD$.NE.$2$,AP1L31.
NOTE(CWUSER,NR)+*DEFINE ADDU_ADD
.ENDIF,AP1L31.
.IF,$MUL$.NE.$2$,AP1L32.
NOTE(CWUSER,NR)+*DEFINE MULU_MUL
.ENDIF,AP1L32.
.IF,$DIV$.NE.$1$,AP1L33.
NOTE(CWUSER,NR)+*DEFINE DIVU_DIV
.ENDIF,AP1L33.
.IF,$SQRT$.NE.$1$,AP1L34. 
NOTE(CWUSER,NR)+*DEFINE SQRTU_SQRT
.ENDIF,AP1L34.
NOTE(CWUSER,NR)+*DEFINE LOADP32 
NOTE(CWUSER,NR)+*DEFINE LOADP30 
NOTE(CWUSER,NR)+*DEFINE LOADL32 
NOTE(CWUSER,NR)+*DEFINE LOADR32 
NOTE(CWUSER,NR)+*DEFINE UNLDP32 
NOTE(CWUSER,NR)+*DEFINE UNLDP30 
NOTE(CWUSER,NR)+*DEFINE UNLDL32 
NOTE(CWUSER,NR)+*DEFINE UNLDR32 
.IF,($ADD$.EQ.$4$).AND.($MUL$.EQ.$4$),AP1L35. 
NOTE(CWUSER,NR)+*DEFINE SOP4MA
.ELSE,AP1L35. 
NOTE(CWUSER,NR)+*DEFINE SUMPROD 
.ENDIF,AP1L35.
NOTE(CWUSER,NR)+*DEFINE EFFT
NOTE(CWUSER,NR)+*DEFINE FILTER
NOTE(CWUSER,NR)+*DEFINE MONITOR 
NOTE(CWUSER,NR)+*DEFINE UPM 
NOTE(CWUSER,NR)+*DEFINE TMM 
NOTE(CWUSER,NR)+*DEFINE MAXABS
NOTE(CWUSER,NR)+*DEFINE CVEC
NOTE(CWUSER,NR)+*DEFINE ADDVEC
NOTE(CWUSER,NR)+*DEFINE IPVEC 
NOTE(CWUSER,NR)+*DEFINE SUMRVEC 
NOTE(CWUSER,NR)+*DEFINE SQRTVEC 
NOTE(CWUSER,NR)+*DEFINE XMM2DM
NOTE(CWUSER,NR)+*DEFINE CXMPY 
PACK(CWUSER)
BEGIN(MAPULIB,INSTALL,CHMAP=YES)
PURGE(AP1EL3/NA)
DEFINE(AP1EL3)
COPY(MAPLIB,AP1EL3,V) 
RETURN(MAPLIB,CWUSER) 
MACLIST(AP1EL3) 
.ENDIF(AP1L05)
* 
.IF, ($MAPTYP$ .EQ. $0$) ,AP1L06. 
REWIND(AP1EL1,AP1EL2,AP1EL3)
REWIND(AP1CHL1,AP1CHL2,AP1CHL3,AP1LPFS) 
COPYBF(AP1EL1,AP1LPFS)
COPYBF(AP1EL2,AP1LPFS)
COPYBF(AP1EL3,AP1LPFS)
COPYBF(AP1CHL1,AP1LPFS) 
COPYBF(AP1CHL2,AP1LPFS) 
COPYBF(AP1CHL3,AP1LPFS) 
BEGIN(PFGOUT,INSTALL,PRDNAME=AP1L,LFN=AP1LPFS)
RETURN(AP1EL1,AP1EL2,AP1EL3)
RETURN(AP1CHL1,AP1CHL2,AP1CHL3,AP1LPFS) 
.ENDIF(AP1L06)
  
REVERT.  AP1L BUILD COMPLETE. 
EXIT. 
REVERT(ABORT)  AP1L BUILD ERRORS. 
*WEOR 
