ECSTST
IDENT ECSTST,111B,ECSTST
TITLE ECSTST ECS TEST ROUTINE
TITLE DEFINITIONS
*
*
ABS
SST
SYSCOM
*
*
*CALL COMCMAC
*CALL PLASMRC
*
ECSDIM EQU 2000B ECS FIELD LENGTH
BUFDIM EQU 2000B READ/WRITE BUFFER LENGTHS
*
TRLIM EQU 200B MAXIMUM TRANSFER LENGTH
BILIM EQU 200B MAXIMUM BIAS
*
*
PURGMAC CALL
CALL MACRO NAME,N1,N2,N3,N4,N5,N6
NN DECMIC 0
ECHO 5,P1=(N1,N2,N3,N4,N5,N6),P2=(1,2,3,4,5,6)
IFC EQ,*P1**,1
STOPDUP
IFC NE,*P1**,2
SB_P2 P1
NN DECMIC P2
RJ _NAME_
BSS 0
ENDM
*
*
TITLE INITIALIZATIONS
*
*
*
ORG 111B
ECSTST SX6 LWA+101B SET CM FIELD LENGTH
AX6 6
LX6 30+6 POSITION FOR MEMORY REQUEST
SA6 CMFL
CALL S=CM,CMFL
SX6 ECSDIM SET ECS FIELD LENGTH
SA6 CMFL
CALL S=ECS,CMFL
*
TITLE ECSTST
*
*
*
MAIN MX6 0 RE-SET PATTERN INDEX
SA6 IP
*
M100 CALL S=WAIT,500 IDLE
CALL PATTERN GENERATE NEXT TEST PATTERN
SB6 B0 B6 = BUFFER INDEX
SB7 1 B7 = TRANSFER LENGTH
*
* WRITE, READ, VERIFY PATTERN
*
M200 SA0 WBUFF SET CM ADDRESS
SX0 B6 SET ECS ADDRESS
+ WE B7 WRITE PATTERN TO ECS
RJ ECSPRTY
SA0 B6+RBUFF SET CM ADDRESS
+ RE B7 READ PATTERN FROM ECS
RJ ECSPRTY
SB1 B7-1 B1 = INDEX WITHIN TRANSFER
SB2 B6+RBUFF B2 = READ BUFFER ADDRESS
SB3 1 B3 = 1
*
M220 SA1 B1+B2 GET READ BUFFER ENTRY
SA2 B1+WBUFF GET WRITE BUFFER ENTRY
IX6 X1-X2
NZ X6,M500 JUMP IF VERIFY ERROR
SB1 B1-B3
PL B1,M220 END TEST
*
* INCREMENT TRANSFER LENGTH
*
SB7 B7+1 INCREMENT TRANSFER LENGTH
SB1 B7-TRLIM-1
NG B1,M200
SB7 1 RE-SET TRANSFER LENGTH
*
* INCREMENT BUFFER INDEX
*
SB6 B6+1 INCREMENT BUFFER INDEX
SB1 B6-BILIM-1
NG B1,M200
EQ M100 GENERATE NEXT PATTERN
*
*
* PROCESS VERIFY ERROR
*
M500 CALL S=MSG,(=12CVERIFY ERROR)
EQ MAIN
*
TITLE GENERATE TEST PATTERN
*
*
*
* PATTERN GENERATE TEST PATTERN
* ON ENTRY - *IP* = INDEX OF PATTERN
*
*
PATTERN EQ *
SA1 IP GET PATTERN INDEX
SB1 X1
SX6 X1+1 ADVANCE INDEX
SA6 A1
JP B1+*+1 JUMP TO APPROPRIATE ROUTINE
*
+ EQ PAT000 0 = ALL ZEROS
+ EQ PAT100 1 = ALL ONES
+ EQ PAT200 2 = ONE BIT SET
+ EQ PAT300 3 = ONE BIT CLEAR
+ EQ PAT400 4 = ALTERNATING ONES/ZEROS
+ EQ PAT500 5 = ADDRESS
+ EQ PAT600 6 = COMPLEMENTED ADDRESS
+ EQ PAT990 RE-SET INDEX
*
*
PAT000 MX6 0 X6 = PATTERN
EQ PATSHF
*
PAT100 MX6 60 X6 = PATTERN
EQ PATSHF
*
PAT200 SX6 1 X6 = PATTERN
EQ PATSHF
*
PAT300 MX6 -1 X6 = PATTERN
EQ PATSHF
*
PAT400 SA1 =52525252525252525252B
BX6 X1 X6 = PATTERN
EQ PATSHF
*
*
PAT500 SB1 BUFDIM-1 B1 = INDEX
PAT510 SX6 B1+1
BX1 X6 FORM PATTERN = 30/INDX, 30/INDX
LX1 30
BX6 X1+X6
SA6 B1+RBUFF SET NEXT WORD OF READ BUFFER
SA6 B1+WBUFF SET NEXT WORD OF WRITE BUFFER
SB1 B1-1
PL B1,PAT510 END TEST
EQ PATTERN
*
PAT600 SB1 BUFDIM-1 B1 = INDEX
PAT610 SX6 B1+1
BX1 X6 FORM PATTERN = 30/INDX, 30/INDX
LX1 30
BX6 X1+X6
BX6 -X6 COMPLEMENT ADDRESSES
SA6 B1+RBUFF SET NEXT WORD OF READ BUFFER
SA6 B1+WBUFF SET NEXT WORD OF WRITE BUFFER
SB1 B1-1
PL B1,PAT610 END TEST
EQ PATTERN
*
*
PAT990 SX6 1 RE-SET INDEX
SA6 IP
EQ PAT000
*
*
PATSHF SB1 BUFDIM-1 B1 = BUFFER INDEX
PATS20 SA6 B1+RBUFF SET NEXT WORD OF READ BUFFER
SA6 B1+WBUFF SET NEXT WORD OF WRITE BUFFER
LX6 1 SHIFT PATTERN
SB1 B1-1
PL B1,PATS20 END TEST
EQ PATTERN
*
*
TITLE ROUTINES
*
*
*
* S=MAS
* CALLS *MAS* PPU TO POST REQUEST TO *MASTOR*
* ON ENTRY - *MASREQ* = REQUEST
*
*
S=MAS EQ *
SYSTEM MAS,R,MASREQ
RECALL MASREQ
EQ S=MAS
*
*
*
* S=MZER ZERO *MASTOR* REQUEST AREA
*
S=MZER EQ *
MX6 0 X6 = 0
SX1 MS.MDIM X1 = INDEX IN REQUEST BUFFER
*
S=MZ10 SX1 X1-1 END TEST
NG X1,S=MZER
SA6 X1+MASREQ ZERO NEXT WORD OF REQUEST BUFF
EQ S=MZ10
*
*
*
* S=WAIT IDLE
* ON ENTRY - B1 = NUMBER OF RECALL CYCLES TO IDLE
*
S=WAIT EQ *
SX6 B1 SET NUMBER TIMES TO RECALL
SA6 SWK1
*
S=W10 RECALL IDLE
SA1 SWK1
SX6 X1-1 END TEST
ZR X6,S=WAIT
NG X6,S=WAIT
SA6 A1 UPDATE COUNTER
EQ S=W10
*
*
*
*
* S=BMSG
* OUTPUTS B-DISPLAY MESSAGE
* ON ENTRY - B1 = ADDRESS OF MESSAGE
*
*
S=BMSG EQ *
MESSAGE B1,1,RECALL
EQ S=BMSG
*
*
*
* S=MSG
* OUTPUTS DAYFILE MESSAGE
* ON ENTRY - B1 = ADDRESS OF MESSAGE
*
*
S=MSG EQ *
MESSAGE B1,0,RECALL
EQ S=MSG
*
*
* S=CM OBTAIN CENTRAL MEMORY
* ON ENTRY - B1 = ADDRESS OF MEMORY REQUEST WORD
*
S=CM EQ *
MX0 30
SA1 B1
BX6 X0*X1 SET UP ARGUMENT
SA6 SWK1
MEMORY CM,SWK1,RECALL
EQ S=CM
*
*
*
* S=ECS OBTAIN ECS
* ON ENTRY - B1 = ADDRESS OF AMOUNT OF ECS REQUIRED
*
S=ECS EQ *
CALL S=MZER ZERO *MASTOR* REQUEST AREA
SX6 MS.ECS SET *MASTOR* REQUEST CODE
LX6 60-12
SA6 MASREQ
SA1 B1 SET AMOUNT OF ECS REQUESTED
BX6 X1
SA6 MASREQ+1
*
S=EC10 CALL S=MAS ATTEMPT TO OBTAIN ECS
MX0 -11
SA1 MASREQ CHECK REPLY CODE
AX1 12
BX1 -X0*X1
ZR X1,S=ECS EXIT IF REQUEST COMPLETED
CALL S=BMSG,(=25CWAITING FOR ECS)
CALL S=WAIT,100
EQ S=EC10
*
*
*
*
* S=OTOA CONVERT OCTAL TO DISPLAY CODE
* ON ENTRY - X1 = OCTAL TO CONVERT
* ON EXIT - X6,X7 = DISPLAY CODE
*
*
S=OTOA EQ *
SB1 1 B1 = 1
CALL WOD
EQ S=OTOA
*
*
*
* S=ATOO CONVERT DISPLAY CODE TO OCTAL
* ON ENTRY - X1 = DISPLAY CODE TO CONVERT
* ON EXIT - X6 = OCTAL
* X7 = 0 = CONVERSION SUCCESSFUL
* -1 = ILLEGAL OCTAL VALUE
*
*
S=ATOO EQ *
SB1 1 B1 = 1
SB7 B0 B7 = 0 = OCTAL
BX5 X1 X5 = DISPLAY CODE
CALL DXB
MX7 0 X7 = 0 = OK
ZR X4,S=ATOO
MX7 -1 X7 = -1 = ERROR
EQ S=ATOO
*
*
*
*CALL COMCSYS
*CALL COMCWOD
*CALL COMCDXB
*
*
TITLE ECS PARITY ERROR PROCESSING
*
*
*
* -ECSPRTY-
* ECS PARITY ERROR PROCESSING FOR ROUTINES WHICH DO
* NOT PROVIDE FOR ERROR RECOVERY
*
* OUTPUTS ECS ERROR DAYFILE MESSAGES AND TERMINATES
* JOB
*
* USES MACROS - CALL, SYSTEM
* USES SYMBOLS - MTEXT, ECSRA, ECSRET
* CALLS - S=OTOA, S=MSG
*
* AFTER ERROR PROCESSING CONTROL IS RETURNED TO THE
* ADDRESS INDICATED BY *ECSRET*
*
* IF CELL *ECSRA* IS DEFINED IT IS ASSUMED TO HOLD
* THE ECS REFERENCE ADDRESS
* IF CELL *ECSRA* IS NOT DEFINED A CALL TO *MASTOR*
* IS MADE TO OBTAIN THE ECS RA
*
*
QUAL ECSPRTY
*
*
ECSPRTY EQ *
SA1 ECSPRTY
LX1 30
SX6 X1 SAVE ADDRESS
SA6 PLOC
SA1 X1-1 LOAD RE/WE INSTRUCTION
*
* GET B-REGISTER NUMBER AND TRANSFER LENGTH
*
LX1 12 POSITION B-REGISTER NUMBER
MX2 -3
BX2 -X2*X1 MASK OFF B-REGISTER NUMBER
LX2 45
SA3 KSB1 SB1 X1+B0 INSTRUCTION
BX6 X2+X3 ATTACH REGISTER NUMBER
SA6 ERR10 PLANT INSTRUCTION
LX1 18 POSITION LENGTH OF RE/WE
+ NO AVOID ERROR MODE 0
*
* SEARCH TO FIND EXACT ADDRESS ERROR OCCURRED AT
*
ERR10 BSSZ 1 SB1 X1+BN
BX6 X0
SA6 TFWA SAVE FWA OF ECS TRANSFER
SX6 B1
SA6 TLTH SAVE LENGTH OF TRANSFER
MX6 -1
SA6 ERRADD MARK EXACT ADDR NOT KNOWN YET
SX1 1
SA0 CONTNT
*
ERR20 SB1 B1-1 END TEST
NG B1,ERR40 EXIT IF CANNOT FIND ERROR
+ RE 1
EQ ERR30 JUMP IF FOUND THE ERROR
IX0 X0+X1 ADVANCE ECS ADDRESS
EQ ERR20
*
*
* TEST FAILING LOCATION WITH ALL ZERO/ONES PATTERNS
*
ERR30 BX6 X0 SAVE EXACT ADDRESS OF ERROR
SA6 ERRADD
SA0 ZRPAT OVERWRITE WITH ZERO PATTERN
+ WE 1
+ RE 1 RE-READ BAD LOCATION
+ SA0 ONPAT OVERWRITE WITH ONES PATTERN
+ WE 1
+ RE 1 RE-READ BAD LOCATION
*
*
* OBTAIN ECS REFERENCE ADDRESS
*
ERR40 BSS 0
*
EPIF IF -DEF,ECSRA
SYSTEM MAS,R,XRAQ
SA1 XRAQ+2 LOAD ECS REFERENCE ADDRESS
BX6 X1
SA6 XXRA
EPIF ELSE
SA1 ECSRA LOAD ECS REFERENCE ADDRESS
BX6 X1
SA6 XXRA
EPIF ENDIF
*
* FORMAT ECS ERROR DAYFILE MESSAGES
*
SA1 TFWA LOAD ECS FWA OF TRANSFER
SA2 XXRA LOAD ECS REFERENCE ADDRESS
IX1 X1+X2
CALL S=OTOA
MX0 42
LX7 18 POSTION 7 CHAR DISPLAY CODES
BX7 X0*X7
SA7 LINE3+1
*
SA1 TLTH LOAD LENGTH OF ECS TRANSFER
CALL S=OTOA
MX0 42
LX7 18 POSTION 7 CHAR DISPLAY CODES
BX7 X0*X7
SA7 LINE4+1
*
SA1 PLOC LOAD PROGRAM ADDRESS
CALL S=OTOA
MX0 42
LX7 18 POSTION 7 CHAR DISPLAY CODES
BX7 X0*X7
SA7 LINE5+1
*
SA1 ERRADD LOAD ECS ADDR OF FAILING WORD
NG X1,ERR50
SA2 XXRA LOAD ECS REFERENCE ADDRESS
IX1 X1+X2
CALL S=OTOA
MX0 42
LX7 18 POSTION 7 CHAR DISPLAY CODES
BX7 X0*X7
SA7 LINE2+1
*
SA1 CONTNT LOAD CONTENTS OF FAILING WORD
CALL S=OTOA
SA6 LINE6+1
SA7 LINE6+2
*
SA1 ZRPAT LOAD ZERO TEST PATTERN
CALL S=OTOA
SA6 LINE7+1
SA7 LINE7+2
*
SA1 ONPAT LOAD ONES TEST PATTERN
CALL S=OTOA
SA6 LINE8+1
SA7 LINE8+2
*
* OUTPUT DAYFILE MESSAGES
*
ERR50 CALL S=MSG,LINE0
CALL S=MSG,LINE1
CALL S=MSG,LINE2
CALL S=MSG,LINE3
CALL S=MSG,LINE4
CALL S=MSG,LINE5
CALL S=MSG,LINE6
CALL S=MSG,LINE7
CALL S=MSG,LINE8
CALL S=MSG,LINE0
*
MX6 0 RESTORE ZERO PATTERN
SA6 ZRPAT
MX6 60 RESTORE ONES PATTERN
SA6 ONPAT
SA1 ECSRET
SB1 X1 GET RETURN ADDRESS
JP B1
*
*
*
*
KSB1 SB1 X1+B0
*
LINE0 DIS ,*+++++++++++++++++++++++++++++++++++*
LINE1 DIS ,*ECS PARITY ERROR*
LINE2 DIS ,*ECS ADDR UNKNOWN*
LINE3 DIS ,*FWA TRANS XXXXXXX*
LINE4 DIS ,*LTH TRANS XXXXXXX*
LINE5 DIS ,*CALL ADDR XXXXXXX*
LINE6 DIS ,*CONTENTS UNKNOWN *
LINE7 DIS ,*ZEROS UNKNOWN *
LINE8 DIS ,*ONES UNKNOWN *
*
TFWA BSSZ 1 FWA OF ECS TRANSFER
TLTH BSSZ 1 LENGTH OF TRANSFER
ERRADD BSSZ 1 ECS ADDRESS OF BAD WORD
CONTNT BSSZ 1 CONTENTS OF BAD WORD
PLOC BSSZ 1 PROGRAM CALL LOCATION
ZRPAT BSSZ 1 ZEROS
ONPAT VFD 60/-0B ONES
XXRA BSSZ 1 ECS REFERENCE ADDRESS
*
XRAQ VFD 12/MS.EFL,48/0
BSSZ MS.MDIM-1
*
*
QUAL *
ECSPRTY EQU /ECSPRTY/ECSPRTY
*
*
TITLE STORAGE DEFINITIONS
*
*
*
CMFL BSS 1 CM FIELD LENGTH
*
SWK1 BSS 1
SWK2 BSS 1
SWK3 BSS 1
MASREQ BSSZ MS.MDIM MASTOR REQUEST AREA
*
IP DATA 0 PATTERN INDEX
*
ECSRET VFD 60/MAIN RETURN ADDRESS FOR ECS ERRORS
*
WBUFF BSSZ BUFDIM WRITE BUFFER
RBUFF BSSZ BUFDIM READ BUFFER
*
*
LWA END