SMP 
          IDENT  SMP,SMP
          PERIPH
          BASE   MIXED
          SST 
          SYSCOM
*COMMENT  SMP - SAMPLE CPU P-REGISTER.
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          TITLE  SMP - SAMPLE CPU P-REGISTER. 
          SPACE  4
***       SMP - SAMPLE CPU P-REGISTER.
*         G. R. MANSFIELD.  71/06/05. 
          SPACE  4
***              SMP SAMPLES THE CPU P-REGISTER OVER THE RANGE
*         REQUESTED BY THE USER AND WRITES THE SAMPLE DATA ON A 
*         FILE FOR FURTHER PROCESSING.  THE SAMPLES ARE TAKEN AT
*         A USER SELECTABLE INTERVAL OF BETWEEN 1 AND 50 MILLISECONDS.
*         THE RANGE IS PARTITIONED INTO 128 EQUAL INTERVALS.
          SPACE  4
***       THE COMMAND.
* 
* 
*         SMP(FWA,LWA)/RATE 
* 
* 
*         CPU PROGRAM CALL. 
* 
* 
*         FORM 1
*T  IR    18/ *SMP*,1/1,5/,18/ FWA,18/LWA 
* 
*         FWA    FIRST WORD ADDRESS OF SAMPLE RANGE.
*         LWA    LAST WORD ADDRESS OF SAMPLE RANGE. 
* 
*         FORM 2
*T  IR    18/ *SMP*,1/ ,5/,1/1,17/,18/ PARAM
* 
*         PARAM  PARAMETER ADDRESS. 
* 
* 
*T  PARAM 12/RATE,12/,18/ FWA,18/ LWA 
* 
*         RATE   SAMPLE RATE (1-50 MILLISECONDS.) 
*         FWA    FIRST WORD ADDRESS OF SAMPLE RANGE 
*         LWA    LAST WORD ADDRESS OF SAMPLE RANGE. 
          SPACE  4
***       THE SAMPLE DATA IS PLACED ON THE FILE *PSAMPL* IN 
*         THE FOLLOWING FORMAT. 
* 
* 
*         FIRST 8 WORDS = COMMAND.
* 
*T        60/   DATE
*T        60/   TIME
*T        60/   REAL TIME CLOCK AT START
*T        60/   REAL TIME CLOCK AT FINISH 
*T        60/   CPU TIME AT START 
*T        60/   CPU TIME AT FINISH
*T        60/   FWA 
*T        60/   LWA 
*T        60/   CPU NOT ACTIVE ON JOB COUNT 
*T        60/   CPU IN RECALL COUNT 
*T        60/   CPU ACTIVE AND BELOW SAMPLE RANGE 
*T        60/   CPU ACTIVE AND ABOVE SAMPLE RANGE 
*T        60/   CPU ACTIVE AT SUB-CP
* 
*         NEXT 128 WORDS. 
* 
*T        60/   COUNTS FOR P-REGISTER IN THIS RANGE 
          SPACE  4
***       DAYFILE MESSAGES. 
* 
* 
*         * SAMPLE FWA .GE. LWA.* = RANGE PARAMETERS OUT OF ORDER.
* 
*         * INCORRECT SMP REQUEST.* = SMP NOT CALLED FROM CPU WITH
*                AUTO RECALL. 
* 
*         * FL TOO SHORT FOR SAMPLES.* = NOT ENOUGH MEMORY FOR SAMPLE 
*                DATA.
* 
*         * USER ACCESS NOT VALID.* = NOT CALLED FROM SYOT JOB OR 
*                SYSTEM PRIVILEDGES + DEBUG.
* 
*         * INCORRECT SAMPLE RATE.* = SAMPLE RATE SPECIFIED WAS NOT 
*                WITHIN THE RANGE OF 1 TO 50 MILLISECONDS.
* 
*         * PARAMETER ADDRESS ERROR.* = PARAMETER ADDRESS IS NOT
*                WITHIN THE USER-S FL.
* 
*         * ERROR IN RATE PARAMETER.* = THE RATE ENTERED ON THE 
*                *SMP* COMMAND WAS INCORRECT. 
* 
*         * SMP - ABORTED DUE TO ROLLOUT REQUEST.* = THE ROLLOUT
*                REQUEST FLAG IS SET IN THE JOB-S CONTROL POINT 
*                AREA.  THIS MAY HAPPEN AS A RESULT OF TERMINAL I/O 
*                OR *DIS* DROPPING WHILE *SMP* IS RUNNING.
          SPACE  4
***       OPERATOR MESSAGES.
* 
* 
*         NONE. 
          SPACE  4
**        ROUTINES USED.
* 
* 
*         NONE. 
          SPACE  4
**        PROGRAMS CALLED.
* 
* 
*         1AJ - ADVANCE JOB STATUS. 
          SPACE  4
*CALL     COMPMAC 
*CALL     COMSCPS 
*CALL     COMSPIM 
          SPACE  4
****      DIRECT LOCATION ASSIGNMENTS.
  
  
 CN       EQU    20 - 24     CM WORD BUFFER (5 LOCATIONS) 
 RT       EQU    26          SAMPLE RATE
 RC       EQU    27          REAL TIME CLOCK
  
  
*         ASSEMBLY CONSTANTS. 
  
  
 FET      EQU    2           FET ADDRESS IN CM AREA 
****
          TITLE  MAIN PROGRAM.
 SMP      SPACE  4
**        SMP - MAIN PROGRAM. 
  
  
          ORG    PPFW 
 SMP      RJM    PRS         PRESET PROGRAM 
          RJM    ISB         INITIALIZE SAMPLE BUFFER 
          MONITOR RCPM       REQUEST CPU
          RJM    MNP         MONITOR P
          LDC    RTCL        READ FINISH TIME 
          CRM    RTF,ON 
          LDD    CP          READ CPU TIME
          ADN    CPTW 
          CRM    CTF,ON 
          RJM    WAC         WAIT FOR ACTIVITY TO COMPLETE
          RJM    WPS         WRITE P-SAMPLES
 DPP      SPACE  4
**        DPP - DROP PP.
  
  
 DPP      LDC    *
 DPPA     EQU    *-1         (*DIS* FLAG FROM CPA)
          NJN    DPP1        IF *DIS* FLAG NOT CHANGED
          LDN    10          SET MASK FOR *JCIW*
          STD    CM+4 
          LDN    CCTS        CLEAR *DIS* FLAG IN CPA
          STD    CM+1 
          MONITOR  SJCM 
 DPP1     MONITOR  DPPM      DROP PP
          LJM    PPR         EXIT TO PP RESIDENT
 MNP      SPACE  4
**        MNP - MONITOR P.
  
  
 MNP      SUBR               ENTRY/EXIT 
          MONITOR RCLM       ENSURE RCPM COMPLETE 
 MNP1     PAUSE 
          LDD    CM+1 
          NJN    MNPX        RETURN IF ERROR FLAG SET 
          LDD    CM          CHECK CPU STATUS 
          LPC    7000 
          ZJN    MNPX        RETURN IF NO CPU ACTIVITY
          SHN    21-13
          PJN    MNP2        IF CPU ACTIVE
          SHN    6
          LMN    5
          NJN    MNP3        IF CPU NOT IN RECALL 
  
*         COUNT RECALL SAMPLES. 
  
          LDC    RCL         ADVANCE RECALL COUNT 
          LJM    MNP7        INCREMENT COUNTER
  
 MNP2     LDN    ZERL        READ CURRENT P ADDRESS 
          CRD    CM 
          MONITOR RPNM
          LDD    CP          COMPARE CONTROL POINT NUMBERS
          LMD    CM+2 
          NJN    MNP3        IF NOT EXECUTING AT THIS CONTROL POINT 
          LDD    CM+1 
          SHN    21-10
          PJN    MNP4        IF SUBCONTROL POINT NOT ACTIVE 
          LDC    ASC         CPU ACTIVE AT SUBCONTROL POINT 
          UJN    MNP7        INCREMENT COUNTER
  
 MNP3     LDC    IAC         ADVANCE INACTIVE COUNT 
          UJN    MNP7        INCREMENT COUNTER
  
 MNP4     LDD    CM+3        ASSEMBLE P ADDRESS 
          SHN    14 
          LMD    CM+4 
 MNPA     ADC    *           CHECK LOWER RANGE
          PJN    MNP5        IF ABOVE FWA 
          LDC    BLR         ADVANCE BELOW RANGE COUNT
          UJN    MNP7        INCREMENT COUNTER
  
 MNP5     BSS    0
 MNPB     SHN    -0          SET INTERVAL 
          STD    T2 
          SHN    -7 
          ZJN    MNP6        IF BELOW LWA 
          LDC    ABR         ADVANCE ABOVE RANGE COUNT
          UJN    MNP7        INCREMENT COUNTER
  
 MNP6     LDD    T2          SET WORD INDEX 
          SHN    2
          ADD    T2 
          ADC    PSM
  
*         INCREMENT 36-BIT COUNTER. 
  
 MNP7     STD    T1 
          AOM    4,T1 
          SHN    -14
          RAM    3,T1 
          SHN    -14
          RAM    2,T1 
          RJM    PSE         PAUSE TO MAKE SAMPLE TIME CONSTANT 
          LJM    MNP1        LOOP FOR NEXT SAMPLE 
          TITLE  SUBROUTINES. 
 ABT      SPACE  4
**        ABT - ABORT JOB.
* 
*         ENTRY  (A) = ADDRESS OF MESSAGE.
* 
*         EXIT   NONE.
  
  
 ABT      RJM    DFM         ISSUE MESSAGE
          LDC    *
 ABTA     EQU    *-1         (*DIS* FLAG FROM CPA)
          NJN    ABT1        IF *DIS* FLAG NOT CHANGED
          LDN    10          SET MASK FOR *JCIW*
          STD    CM+4 
          LDN    CCTS        CLEAR *DIS* FLAG IN CPA
          STD    CM+1 
          MONITOR  SJCM 
 ABT1     MONITOR  ABTM      ABORT JOB
          LJM    PPR         EXIT TO PP RESIDENT
 ISB      SPACE  4
**        ISB - INITIALIZE SAMPLE BUFFER. 
* 
*         ENTRY  NONE.
* 
*         EXIT   NONE.
* 
*         USES   T1, T2.
* 
*         CALLS  NONE.
  
  
 ISB      SUBR               ENTRY/EXIT 
          LDC    CCD-5       SET COMMAND ADDRESS
          STD    T1 
          LDN    MS1W 
          STD    T2 
 ISB1     LDN    5           ADVANCE READ ADDRESS 
          RAD    T1          SET READ ADDRESS 
          STM    ISBA+1 
          LDD    CP          READ COMMAND WORD
          ADD    T2 
 ISBA     CRM    *,ON 
          LDM    4,T1        CHECK WORD 
          ZJN    ISB2        IF END OF COMMAND
          AOD    T2 
          LMN    MS1W+10
          NJN    ISB1        LOOP TO END OF MESSAGE 
 ISB2     LDN    DTEL        READ DATE
          CRM    DTE,ON 
          LDN    TIML        READ TIME
          CRM    TIM,ON 
          LDC    128D*5      CLEAR SAMPLE BUFFER
          STD    T1 
 ISB3     LDN    0
          STM    PSM-1,T1 
          SOD    T1 
          NJN    ISB3 
          LDC    RTCL        READ START TIME
          CRM    RTS,ON 
          LDD    CP 
          ADN    CPTW 
          CRM    CTS,ON 
          LJM    ISBX        RETURN 
 PSE      SPACE  4,10 
**        PSE - PAUSE TO MAKE SAMPLE TIME CONSTANT. 
* 
*         ENTRY  (RC) - PREVIOUS REAL TIME CLOCK VALUE. 
*                (RT) - SAMPLE RATE (MILLISECONDS). 
* 
*         EXIT   (RC) - REAL TIME CLOCK UPON EXIT.
* 
*         USES   T1, CM - CM+4. 
  
  
 PSE4     LDD    CM+4 
          STD    RC          SAVE NEW REAL TIME CLOCK SETTING 
  
 PSE      SUBR               ENTRY/EXIT 
  
 PSE1     LDC    RTCL        READ REAL TIME CLOCK 
          CRD    CM 
          LDD    CM+4 
          SBD    RC 
          PJN    PSE2        IF NO OVERFLOW 
          ADC    10000
 PSE2     SBD    RT 
          PJN    PSE4        IF DELAY COMPLETED 
          LMC    -0 
          STD    T1 
 PSE3     LDC    300D 
          SBN    1
          NJN    *-1
          SOD    T1 
          NJN    PSE3        IF DELAY NOT COMPLETE
          UJN    PSE1        CHECK PAUSE COMPLETE 
 WAC      SPACE  4,10 
**        WAC - WAIT FOR ACTIVITY TO COMPLETE.
* 
*         EXIT   NO PP-S IN RECALL. 
*                NO PP-S ASSIGNED EXCEPT *SMP* AND POSSIBLY ONE *DIS* 
*                            TYPE PP (DETERMINED BY *DIS* FLAG).
* 
*         ERROR  TO *ABT* IF ROLLOUT REQUESTED. 
*                TO *DPP* IF OVERRIDE ERROR FLAG SET. 
* 
*         USES   T1, CM - CM+4. 
  
  
 WAC      SUBR               ENTRY/EXIT 
          LDM    DPPA 
          ZJN    WAC0        IF NOT *DIS* JOB ORIGINALLY
          LDN    1           DISCOUNT *DIS* ACTIVE PP 
 WAC0     STD    T1 
 WAC1     PAUSE 
          LDD    CM+2        CHECK FOR ROLLOUT REQUEST
          LPN    1
          NJN    WAC2        IF ROLLOUT REQUESTED 
          LDD    CM+1        CHECK FOR OVERRIDE 
          LMN    ORET 
          ZJN    WAC3        IF OVERRIDE
          LDD    CM+4        CHECK FOR PP OR TAPE ACTIVITY
          SHN    -4 
          NJN    WAC1        IF PP RECALL OR TAPE ACTIVITY
          LDD    CM 
          LPN    77 
          SBN    2           DISCOUNT *SMP* 
          SBD    T1          DISCOUNT *DIS* IF *DIS* JOB ORIGINALLY 
          PJN    WAC1        IF PP ACTIVITY REMAINS 
          UJN    WACX        RETURN 
  
 WAC2     LDC    WACA 
          LJM    ABT         ABORT JOB AND DROP PP
  
 WAC3     LJM    DPP         DROP PP
  
 WACA     DATA   C* SMP - ABORTED DUE TO ROLLOUT REQUEST.*
 WPS      SPACE  4
**        WPS - WRITE P-SAMPLES.
  
  
 WPS      SUBR               ENTRY/EXIT 
          LDD    FL          CHECK FIELD LENGTH 
          SHN    6
          ADC    -FET-BUFL
          PJN    WPS1        IF ROOM FOR SAMPLE DATA
          LDC    =C* FL TOO SHORT FOR SAMPLES.* 
          RJM    DFM
          LJM    DPP         DROP PP
  
 WPS1     LDC    BUFL        SET WORD COUNT 
          STD    T1 
          LDD    RA 
          SHN    6
          ADN    FET
          CRM    TBUF,T1     SAVE CP FL 
          ADC    -BUFL
          CWM    BUF,T1 
          EXECUTE  CIO,=     CALL *CIO* 
 WPS2     LDD    MA          SET *RPPM* PARAMETERS
          CWM    WPSA,ON
          LDN    ZERL 
          CRD    CM 
          LDD    MA          CLEAR MB+1 
          ADN    1
          CWD    CM 
          MONITOR  RPPM 
          LDD    CM+1 
          NJN    WPS4        IF PP ASSIGNED 
          PAUSE 
          LDD    CM+1 
          ZJN    WPS2        IF ERROR FLAG CLEAR
          LMN    ORET 
          NJN    WPS2        IF NOT OVERRIDE
 WPS3     LJM    DPP         DROP PP
  
 WPS4     PAUSE 
          LDD    CM+1 
          ZJN    WPS5        IF NO ERROR
          LMN    ORET 
          ZJN    WPS3        IF OVERRIDE
 WPS5     LDD    RA 
          SHN    6
          ADN    FET+1
          CRD    CM 
          LDD    CM+4 
          SHN    21-0 
          PJN    WPS4        IF NOT COMPLETE
          LDD    RA 
          SHN    6
          ADN    FET
          CWM    TBUF,T1
          UJN    WPS3        DROP PP
  
 WPSA     VFD    18/0LCIO,6/0,18/0,18/FET+1 
          SPACE  4,10 
*         COMMON DECKS. 
  
  
 IFP$     EQU    1           ASSEMBLE REMOTE INITIALIZATION CODE
 EJT$     EQU    1           INITIALIZE EJT PROCESSING
*CALL     COMPGFP 
          SPACE  4
**        SAMPLE BUFFERS. 
  
  
          USE    BUFFERS
 BUF      VFD    60/
  
*         FET FOR *PSAMPL* FILE.
  
          VFD    42/0LPSAMPL,18/26
          VFD    60/FET+6 
          VFD    60/FET+BUFL
          VFD    60/FET+6 
          VFD    60/FET+BUFL+1
  
 CCD      BSS    8D*5        COMMAND
 DTE      VFD    60/         DATE 
 TIM      VFD    60/         TIME 
 RTS      VFD    60/         REAL TIME CLOCK AT START 
 RTF      VFD    60/         REAL TIME CLOCK AT FINISH
 CTS      VFD    60/         CPU TIME AT START
 CTF      VFD    60/         CPU TIME AT FINISH 
 FWA      VFD    60/         FWA
 LWA      VFD    60/         LWA
 IAC      VFD    60/         CPU NOT ACTIVE ON JOB COUNT
 RCL      VFD    60/         CPU IN RECALL COUNT
 BLR      VFD    60/         CPU ACTIVE AND BELOW SAMPLE RANGE
 ABR      VFD    60/         CPU ACTIVE AND ABOVE SAMPLE RANGE
 ASC      VFD    60/         CPU ACTIVE AT SUB-CP 
  
 PSM      BSS    0           COUNTS FOR P-REGISTER IN THIS RANGE
  
 .1       SET    *-BUF+128D*5 
 BUFL     EQU    .1/5 
  
 TBUF     EQU    BUF+BUFL*5  FWA OF TEMPORARY FL SAVE BUFFER
  
          ERRNG  7777B-TBUF-BUFL*5  NOT ENOUGH BUFFER SPACE 
 PRS      TITLE  PRESET.
**        PRS - PRESET PROGRAM. 
  
  
 PRS      SUBR               ENTRY/EXIT 
          RJM    IFP         INITIALIZE FNT PROCESSOR 
          LDD    CP          DETERMINE IF *DIS* FLAG SET
          ADN    JCIW 
          CRD    CM 
          LDD    CM+3 
          SHN    -6 
          LPN    10 
          STM    DPPA 
          STM    ABTA 
          NJN    PRS1        IF *DIS* FLAG SET
          LDN    ZERL        SET *DIS* FLAG 
          CRD    CM 
          LDN    2
          STD    CM+1 
          LDD    CP 
          STD    CM+4 
          LDD    MA 
          CWM    PRSD,CM+1
          MONITOR  UTEM 
          LDD    CM+1 
          ZJN    PRS1        IF FLAG IS SET 
          LDD    MA          RECALL *SMP* 
          CWD    IR 
          LDN    ZERL 
          CRD    CM 
          MONITOR  RECM 
          LJM    PPR         EXIT 
  
*         CHECK RANGE PARAMETERS. 
  
 PRS1     RJM    CUA         CHECK USER ACCESS
          ZJN    PRS2        IF VALID ACCESS
          LDC    =C* USER ACCESS NOT VALID.*
          LJM    ABT         ABORT CALLING PROGRAM
  
 PRS2     LDD    IA          COPY INPUT REGISTER TO CM
          CRD    CM 
          LDN    10D         SET SAMPLE RATE TO 10 MS 
          STD    CM 
          LDD    CM+2 
          SHN    21-13
          PJN    PRS5        IF REQUEST IS OF FORM 1
          LDD    IR+3        GET THE PARAMETER ADDRESS
          LPN    77 
          STD    IR+3 
          SHN    14 
          LMD    IR+4 
          MJN    PRS3        IF NEGATIVE ADDRESS
          SHN    -6 
          SBD    FL 
          MJN    PRS4        IF WITHIN FL OF CALLER 
 PRS3     LDC    =C* PARAMETER ADDRESS ERROR.*
          LJM    ABT         ABORT SMP
  
 PRS4     LDD    IR+3        READ PARAMETER OF FORM 2 REQUEST 
          SHN    6
          ADD    RA 
          SHN    6
          ADD    IR+4 
          CRD    CM 
 PRS5     LDD    CM+3        SET FWA
          SCN    77 
          SHN    6
          LMD    CM+2 
          SHN    6
          STD    T2 
          STM    FWA+4
          STM    LWA+4
          SHN    -14
          STD    T1 
          STM    FWA+3
          STM    LWA+3
          LDD    CM+3        SET LWA
          LPN    77 
          STD    IR+3 
          SBD    T1          CHECK LWA-FWA
          SHN    14 
          ADD    CM+4 
          SBD    T2 
          SBN    1
          PJN    PRS6        IF LWA .GE. FWA
          LDC    =C* SAMPLE FWA .GE. LWA.*
          LJM    ABT
  
 PRS6     SHN    -7          SET RANGE .GE. 12B 
          STD    T4 
          LDN    1
          STD    T3 
 PRS7     LDD    T4          SET RANGE TO NEXT HIGHER POWER OF 2
          ZJN    PRS8        IF ZERO
          SHN    -1 
          STD    T4 
          SOM    MNPB 
          LDD    T3 
          SHN    1
          STD    T3 
          UJN    PRS7        LOOP 
  
 PRS8     LDC    ADCI+77     SET LOWER LIMIT
          LMD    T1 
          STM    MNPA 
          LCN    0
          LMD    T2 
          STM    MNPA+1 
          LDD    T3          SET UPPER LIMIT IN SAMPLE FILE 
          SHN    7
          RAM    LWA+4
          SHN    -14
          RAM    LWA+3
          LDD    CM+4 
          STD    IR+4 
          LDD    CM          SAVE SAMPLE RATE 
          STD    RT 
  
*         CHECK CALL TYPE.
  
          PAUSE 
          LDD    CM          CHECK CPU STATUS 
          SHN    -11
          ZJN    PRS12       IF CPU NOT ACTIVE
          RJM    CRS         CHECK RECALL STATUS
          NJN    PRS10       IF AUTO RECALL REQUEST 
          LDC    =C* INCORRECT SMP REQUEST.*
          LJM    ABT
  
 PRS9     LDC    =C* INCORRECT SAMPLE RATE.*
          LJM    ABT         ABORT
  
 PRS10    LDN    0
          STD    CM+1 
          MONITOR  DCPM      DROP CPU 
 PRS11    LDN    ZERL        CLEAR SYSTEM REQUEST (RA+1)
          CRD    CM 
          LDD    RA 
          SHN    6
          ADN    1
          CWD    CM 
          LDD    RT          CHECK RATE RANGE 
          SBN    1
          MJN    PRS9        IF LESS THAN 1 
          SBN    50D
          PJN    PRS9        IF GREATER THAN 50 
          LJM    PRSX        RETURN 
  
 PRS12    RJM    CRP         CHECK FOR RATE PARAMETER 
          LDD    RT 
          SBN    1
          MJN    PRS9        IF RATE .LT. 1 
          SBN    50D
          PJN    PRS9        IF RATE .GT. 50D 
  
*         CALL NEXT COMMAND.
  
          LDD    CP          ENTER CONTROL POINT IN *1AJ* REQUEST 
          SHN    -7 
          RAM    PRSA+1 
 PRS13    LDD    FL          ENSURE SOME CM ASSIGNED TO JOB 
          NJN    PRS14       IF JOB HAS CM ASSIGNED 
          STD    CM+2        SET CM REQUEST 
          LDN    1           REQUEST 100B WORDS CM
          STD    CM+1 
          MONITOR RSTM
          PAUSE 
          LDD    CM+1 
          ZJN    PRS13       IF ERROR FLAG CLEAR
          LJM    DPP
  
 PRS14    LDN    ZERL        CLEAR (RA+PGNR)
          CRD    CM 
          LDD    RA 
          SHN    6
          ADN    PGNR 
          CWD    CM 
          LDD    MA 
          CWM    PRSB,ON
          LDN    ZERL 
          CRD    CM 
          LDN    40+1        INTERLOCK EJT AND SET JOB ADVANCE
          STD    CM+1 
          LDD    CP          SET JOB EJTO 
          ADN    TFSW 
          CRD    T1 
          LDD    T1 
          STM    PRSC 
          SFA    EJT
          STD    CM+4        INTERLOCK EJT ENTRY
          SHN    -14
          STD    CM+3 
          MONITOR  UTEM      UPDATE CONTROL POINT AREA
          LDD    CM+1 
          ZJN    PRS15       IF OPERATION COMPLETED 
          PAUSE 
          LDD    CM+1 
          ZJP    PRS14       IF ERROR FLAG NOT SET
          LJM    DPP         EXIT 
  
          EXECUTE 1AJ,=      CALL *1AJ* 
 PRS15    LDD    MA          REQUEST PP 
          CWM    PRSA,ON
          LDN    1           SET PRIORITY PP REQUEST
          STD    CM+1 
          MONITOR RPPM
          LDD    CM+1        SET PP ASSIGNMENT
          STD    T1 
          NJP    PRS16       IF PP ASSIGNED 
          PAUSE 
          LDD    CM+1 
          ZJN    PRS15       IF ERROR FLAG CLEAR LOOP 
          LDN    0           CLEAR JOB ADVANCE FLAG 
          STM    PRSB+4 
          LDD    MA 
          CWM    PRSB,ON
          LDN    ZERL 
          CRD    CM 
          LDN    40+1        INTERLOCK EJT AND CLEAR JOB ADVANCE
          STD    CM+1 
          LDC    *
 PRSC     EQU    *-1         (EJTO) 
          SFA    EJT
          STD    CM+4        INTERLOCK EJT ENTRY
          SHN    -14
          STD    CM+3 
          MONITOR  UTEM      UPDATE CONTROL POINT AREA
          LJM    DPP         DROP PP
  
 PRS16    LDD    T1          READ INPUT REGISTER
          CRD    CM 
          LDD    CM+1 
          LPN    37 
          SHN    7
          LMD    CP 
          NJN    PRS18       IF *1AJ* FINISHED
          PAUSE 
          LDD    CM+1 
          ZJN    PRS16       IF ERROR FLAG CLEAR LOOP 
 PRS17    LJM    DPP         DROP PP
  
 PRS18    LDD    RA          READ (RA+PGNR) 
          SHN    6
          ADN    PGNR 
          CRD    CM 
          LDD    CM 
          ZJN    PRS17       IF CPU PROGRAM NOT LOADED
 PRS19    PAUSE              WAIT FOR LOADER TO COMPLETE
          LDD    CM+1 
          NJN    PRS17       IF ERROR FLAG SET
          LDD    CM 
          SHN    -11
          NJN    PRS19       IF LOADER STILL RUNNING
          LJM    PRS11       CLEAR SYSTEM REQUEST 
  
 PRSA     VFD    18/0L1AJ,6/0,12/2,12/0,12/1
 PRSB     VFD    12/1,12/600,36/1  JOB ADVANCE FLAG 
 PRSD     VFD    1/1,5/STSW,6/1,6/24D,42/0
          VFD    6/JCIW,6/1,6/21D,42/1
 CRP      SPACE  4,10 
**        CRP - CHECK FOR RATE PARAMETER. 
* 
*         CHECKS THE *SMP* COMMAND FOR THE RATE PARAMETER.
* 
*         EXIT   (RT) = SAMPLE RATE.
*                TO *ABT* IF ERROR ENCOUNTERED. 
* 
*         USES   RT, T1, T2, T3, T4, T5, T6, CBUF - CBUF+35.
* 
*         CALLS  NCH. 
  
  
 CRP      SUBR               ENTRY/EXIT 
          LDD    CP          READ CURRENT COMMAND 
          ADN    MS1W 
          CRM    CBUF,TR
          CRM    CBUF+17,TR 
          LDN    0
          STD    T1 
          STD    T2 
          LDN    10D         DEFAULT RATE IS 10 DECIMAL 
          STD    RT 
 CRP1     RJM    NCH         SKIP TO COMMAND TERMINATOR 
          ZJN    CRPX        IF END OF COMMAND
          LMN    1R.
          ZJN    CRP2        IF TERMINATOR FOUND
          LMN    1R)&1R.
          NJN    CRP1        IF TERMINATOR NOT YET FOUND
 CRP2     RJM    NCH         GET NEXT CHARACTER 
          LMN    1R/         CHECK FOR SLASH
          NJN    CRPX        IF NO SLASH
          STD    RT          DECODE THE SAMPLE RATE 
          STD    T4          CLEAR OCTAL ASSEMBLY WORD
          STD    T5          CLEAR DECIMAL DIGIT FLAG 
 CRP3     RJM    NCH         GET NEXT CHARACTER 
          ZJN    CRPX        IF END OF COMMAND
          SBN    1R0
          MJN    CRP5        IF A LETTER
          STD    T6 
          SBN    10D
          PJN    CRP5        IF NOT A DECIMAL DIGIT 
          ADN    10D-10B
          MJN    CRP4        IF AN OCTAL DIGIT
          AOD    T5          SET DECIMAL DIGIT FLAG 
 CRP4     LDD    RT          ADD TO DECIMAL ASSEMBLY
          SHN    2
          RAD    RT 
          SHN    1
          ADD    T6 
          STD    RT 
          LDD    T4          ADD TO OCTAL ASSEMBLY
          SHN    3
          ADD    T6 
          STD    T4 
          UJN    CRP3        GET NEXT DIGIT 
  
 CRP5     LDD    T3          CHECK FOR VALID SUFFIX 
          LMN    1R 
          ZJN    CRP6        IF SPACE 
          LMN    1RD&1R 
          ZJN    CRP6        IF DECIMAL SUFFIX
          LMN    1RB&1RD
          NJN    CRP7        IF AN INCORRECT CHARACTER
          LDD    T5 
          NJN    CRP7        IF DECIMAL DIGIT IN OCTAL NUMBER 
          LDD    T4          USE THE OCTAL VERSION
          STD    RT 
 CRP6     RJM    NCH         GET NEXT CHARACTER 
          ZJN    CRP8        IF END OF THE COMMAND
          LMN    1R 
          ZJN    CRP6        IF SPACE 
 CRP7     LDC    =C* ERROR IN RATE PARAMETER.*
          LJM    ABT         ABORT
  
 CRP8     LJM    CRPX        RETURN 
 NCH      SPACE  4,15 
**        NCH - GET THE NEXT CHARACTER. 
* 
*         ENTRY  (T1) = NEXT BYTE.
*                (T2) = NEXT CHARACTER WITHIN BYTE. 
* 
*         EXIT   (A) = NEXT CHARACTER FROM STRING.
*                (T3) = NEXT CHARACTER FROM STRING. 
*                (T1) = NEXT BYTE IN STRING.
*                (T2) = POSITION OF CHARACTER WITHIN BYTE.
* 
*         USES   T1, T2, T3.
  
  
 NCH1     SHN    -6          EXTRACT DESIRED CHARACTER
          LPN    77 
          STD    T3 
          LDD    T2          POSITION TO NEXT CHARACTER 
          LMN    1
          STD    T2 
          NJN    NCH2        IF ADVANCED TO NEXT BYTE 
          AOD    T1 
 NCH2     LDD    T3 
  
 NCH      SUBR               ENTRY/EXIT 
          LDM    CBUF,T1     LOAD BYTE CONTAINING NEXT CHARACTER
          LJM    NCH1,T2     EXTRACT CHARACTER
          SPACE  4,10 
 CBUF     BSS    0           COMMAND
          SPACE  4
**        COMMON DECKS. 
  
  
*CALL     COMPCUA 
*CALL     COMPCRS 
          SPACE  4,10 
 IFP      HERE
          SPACE  4
          END 
