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