EPE
* /--- FILE TYPE = E
* /--- BLOCK IDENT 00 000 87/02/24 09.41
IDENT EPE,EPE PROCESS EM PARITY ERRORS
PERIPH
BASE M
SST
COMMENT PROCESS EM PARITY ERRORS.
COMMENT COPYRIGHT CONTROL DATA CORP. 1980.
LIST F
TITLE EPE - PROCESS EM PARITY ERRORS.
SPACE 5,11
*** EPE - PROCESS EM PARITY ERRORS.
*
* EPE IS THE PP HELPER TO RECOVER FROM EM
* PARITY ERRORS. IT IS CALLED BY THE COMMON
* DECK *ECSPRTY* TO RECOVER/RECORD EM
* PARITY ERRORS.
SPACE 5,11
*** CALL.
*
* 18/EPE,24/,18/ADDR
*
* ADDR = ADDRESS OF PARAMTERS
*
* PARAMETERS -
*
* WORD DESCRIPTION
*
* 0 REQUEST/RETURN STATUS
* EPE POST RETURN STATUS IN LOW BITS
* 1 - RECOVERED FROM ERROR
* 3 - NO RECOVERY FROM ERROR
* 5 - READ A WORD FROM EM
* 7 - WRITE A WORD TO EM
*
* CPU POSTS EM PARITY ERROR ON 5/7
* REQUESTS IN UPPER BIT
*
* 1 ADDRESS OF RE/WE INSTRUCTION THAT FAILED
* 2 WORD TO READ/WRITE FROM ON 5/7 REQUESTS
* 3 - 18 COPY OF EXCHANGE PACKAGE
* UPON CALLING *EPE*, THE EXCHANGE PACKAGE
* CONTAINS A6/X6/A1/X1 IN FIRST FOUR WORDS.
* USING THE ACTUAL EXCHANGE PACKAGE AND
* SUBROUTINE TO SAVE *B1*, *EPE* STORES
* EXCHANGE PACKAGE HERE.
* 19 - 56 SUBROUTINE TO SAVE B1 VIA SERIES OF RJ,S
*
*
** MACREF - GENERATE MACRO SYMBOLIC REFERENCE LISTING.
*
* CAUSES THE MACRO NAME TO BE LISTED IN THE SYMBOLIC
* REFERENCE TABLE UNDER THE QUALIFIER *MACRO$*.
*
* MACREF MNAME
* MNAME MACRO NAME FOR REFERENCE TABLE.
PURGMAC MACREF
MACREF MACRO N
QUAL MACRO$
N SET *
QUAL *
ENDM
*
*
* COMMON DECKS
*CALL COMPMAC
*CALL AIDTEXT
BASE D
*CALL PLASRWX
BASE *
.NOSV2 IFLT OSLEV,578D NOS V1
* ECS/ESM MODE WORD / BIT IN *CPUL*
.1 SET ESMM/12D
ESMW EQU 4-.1 BYTE IN *CPUL*
ESMB EQU ESMM-12D*.1 BIT IN THAT BYTE
.NOSV2 ENDIF
* ASSEMBLY CONSTANTS
RL EQU 12 RETRY LIMIT TO CAUSE FAILURE
* INSTRUCTIONS USED AS CONSTANTS
UJNI EQU 0300 UJN
* /--- BLOCK DIRECT 00 000 87/02/24 09.34
* DEFINE DIRECT CELLS
RE EQU 20 - 21 EM RAE
.NOSV2 IFGE OSLEV,578D NOS V2
ES EQU 22 ECS/ESM MODE (= 0 IF ESM)
.NOSV2 ELSE NOS V1
ES EQU 22 ECS/ESM MODE (NONZERO IF ESM)
.NOSV2 ENDIF
IO EQU 23 INSTRUCTION DEFINITION
IS EQU 24 - 25 INSTRUCTION ADDRESS
PT EQU 26 - 32 TEST PATTERN
WC EQU 33 - 34 WORD COUNT
EA EQU 35 - 36 EM FWA OF TRANSFER
NW EQU 37 - 40 NUMBER OF WORDS TO TRANSFER
CA EQU 41 - 42 CM FWA OF TRANSFER
IN EQU 43 - 47 FAILING INSTRUCTION
RC EQU 57 RETRY COUNT
CN EQU 60 - 64 CM WORD STORAGE
EX EQU 65 EXTENDED ADDRESSING MODE (1 = Y)
* /--- BLOCK MAIN 00 000 81/07/11 15.15
TITLE MAIN PROCESSING LOOP
ORG PPFW
EPE RJM PRS
* FETCH FAILING INSTRUCTION
LDD IR+3
SHN 6
ADD RA
SHN 6
ADD IR+4
ADN 1
CRD CM READ ADDRESS OF INSTRUCTION
LDD CM+3
STD IS
LDD CM+4
STD IS+1
LDD IS
SHN 6
ADD RA
SHN 6
ADD IS+1
CRD IN READ FAILING INSTRUCTION
LDN 0
STD IO SET ILLEGAL INSTRUCTION
LDD IN
SHN -6
SBN 1
NJN EPE1 IF NOT RJ/RE/WE
LDD IN
SHN -3
LPN 7
SHN 1
STD T1
LDM EPEA,T1
STD IO SET INSTRUCTION TYPE
LDM EPEA+1,T1
STM IDMH+11 SET OP-CODE
EPE1 RJM STA SET TRANSFER ADDRESS
ZJN EPE2 IF NO ERRORS OCCURRED
LDN 3 (A) = UNRECOVERABLE ERROR
LJM EPE12 POST REPLY
* SEARCH FOR FAILING WORD
EPE2 RJM SFW SEARCH FOR FAILING WORD
NJN EPE3 IF FAILING ADDRESS FOUND
LDC IDMANF ADDR OF NON-FATAL ERR MESSAGE
STM IDMADDR STORE IN MESSAGE ADDR CELL
LDC 2R,R RESET ERRORLOG MESSAGE STATUS
STM IDMJ+5
LDN 0
STD WC
STD WC+1
RJM IDM ISSUE DAYFILE MESSAGES
LDN 1 (A) = RECOVERED ERROR
LJM EPE12 POST REPLY
* FAILING WORD LOCATED, TRY TEST PATTERNS
EPE3 RJM SCR SET JOB CONTROL REGISTERS
LDD MA
CWD CN
CRM EFW,ON SAVE FAILING WORD
* /--- BLOCK MAIN 00 000 87/02/24 09.26
* WRITE ZERO TEST PATTERN
LDN ZERL
CRD PT
LDN RL SET RE-TRY COUNT
STD RC
EPE4 RJM WTW WRITE TEST PATTERN
LDN 1 (A) = COMPARE AGAINST PT
RJM RDW READ WORD
MJN EPE6 IF ERROR OCCURRED
SOD RC
NJN EPE4 IF RETRY COUNT NOT EXHAUSTED
* WRITE ONES TEST PATTERN
LCN 0
STD PT
STD PT+1
STD PT+2
STD PT+3
STD PT+4
LDN RL SET RE-TRY COUNT
STD RC
EPE5 RJM WTW WRITE TEST PATTERN
LDN 1 (A) = COMPARE AGAINST PT
RJM RDW READ WORD
PJN EPE7 IF NO ERROR OCCURRED
EPE6 LJM EPE11 PROCESS ERROR
EPE7 SOD RC
NJN EPE5 IF RETRY COUNT NOT EXHAUSTED
* TEST ONE/ZERO PATTERN
LDN RL SET RE-TRY COUNT
STD RC
EPE8 LDD MA
CWM EPEB,ON
SBN 1
CRD PT
RJM WTW WRITE TEST PATTERN
LDN 1 (A) = COMPARE AGAINST PT
RJM RDW READ WORD
MJN EPE6 IF ERROR OCCURRED
LDD MA TEST 252525...
CWM EPEC,ON
SBN 1
CRD PT
RJM WTW WRITE TEST PATTERN
LDN 1 (A) = COMPARE AGAINST PT
RJM RDW READ WORD
MJN EPE6 IF ERROR OCCURRED
SOD RC
NJN EPE8 IF RETRY COUNT NOT EXHAUSTED
* TEST ORIGINAL WORD WITH EACH BIT COMPLEMENTED
LDN 5-1 SET BYTE COUNT
STD RC
EPE9 LDD MA FETCH ORIGINAL WORD
CWM EFW,ON
SBN 1
CRD PT
LDM PT,RC COMPLEMENT NEXT BIT
LMC 1
EPE10 EQU *-1
STM PT,RC
RJM WTW WRITE TO EM
LDN 1 (A) = COMPARE AGAINST PT
RJM RDW READ WORD
MJN EPE11 IF ERROR OCCURRED
* /--- BLOCK MAIN 00 000 80/07/28 13.39
LDM EPE10
RAM EPE10
SHN 21-14
PJN EPE9 IF BYTE NOT COMPLETE
LDN 1
STM EPE10 RESET BIT
SOD RC
PJN EPE9 IF MORE BYTES TO CHECK
* COULD NOT REPRODUCE ERROR
LDN 1 (A) = TEST PATTERNS WORKED
RJM IDM ISSUE DAYFILE MESSAGES
LDD IO
LPN 2 (A) = 2 IF WRITE INSTRUCTION
STD T1
LDN 3 (A) = NOT RECOVERED
SBD T1 CONVERT TO RECOVERED IF WRITE
UJN EPE12 POST REPLY
EPE11 LDN 2 (A) = TEST PATTERN FAILED
RJM IDM ISSUE DAYFILE MESSAGES
LDN 3 (A) = UNRECOVERED ERROR
* /--- BLOCK MAIN 00 000 88/10/26 12.58
* SET RETURN CODE / DROP PP
EPE12 STD CM+4 SET RETURN CODE
LDN 0
STD CM
STD CM+1
STD CM+2
STD CM+3
LDD IR+3
SHN 6
ADD RA
SHN 6
ADD IR+4
CWD CM
* RJM MEL MONITOR ESM ERROR LOG
MONITOR DPPM
LJM PPR
* EM INSTRUCTION TYPES
*
* BIT DESCRIPTION
*
* 0 LEGAL OP-CODE
* 1 SET IF WRITE TYPE
* 2 SET IF SINGLE WORD TYPE
EPEA BSS 0
LOC 0
DATA 0,2RRJ RJ
DATA 1,2RRE RE
DATA 3,2RWE WE
DATA 0,2RXJ XJ
DATA 5,2RRX RX
DATA 7,2RWX WX
DATA 0,0 ILLEGAL
DATA 0,0 ILLEGAL
LOC *O
EPEB DATA 5252,5252,5252,5252,5252
EPEC DATA 2525,2525,2525,2525,2525
* /--- BLOCK CONVERT 00 000 80/06/27 13.19
TITLE SUBROUTINES.
C18 SPACE 5,11
** C18 - CONVERT 18 BITS TO DISPLAY CODE
*
* ENTRY - (T1) = ADDRESS TO STORE RESULT
* (T2) = ADDRESS OF VALUE TO CONVERT
C18 SUBR
LDI T2
LPN 77
RJM C2D
STI T1
AOD T1
AOD T2
LDI T2
SHN -6
RJM C2D
STI T1
AOD T1
LDI T2
LPN 77
RJM C2D
STI T1
UJN C18X
C24 SPACE 5,11
** C24 - CONVERT 24 BITS TO DISPLAY CODE
*
* ENTRY - (T1) = ADDRESS TO STORE RESULT
* (T2) = ADDRESS OF VALUE TO CONVERT
C24 SUBR
LDN 2
STD T3
C241 LDI T2
SHN -6
RJM C2D
STI T1
AOD T1
LDI T2
LPN 77
RJM C2D
STI T1
AOD T1
AOD T2
SOD T3
NJN C241 IF MORE BYTES TO CONVERT
UJN C24X
C60 SPACE 5,11
** C60 - CONVERT 60 BITS TO DISPLAY CODE
*
* ENTRY - (T1) = ADDRESS TO STORE RESULT
* (T2) = ADDRESS OF VALUE TO CONVERT
C60 SUBR
LDN 5
STD T3
C601 LDI T2
SHN -6
RJM C2D
STI T1
AOD T1
LDI T2
LPN 77
RJM C2D
STI T1
AOD T1
AOD T2
SOD T3
NJN C601 IF MORE BYTES TO CONVERT
UJN C60X
* /--- BLOCK IDM 00 000 87/02/24 09.27
IDM SPACE 5,11
** IDM - ISSUE DAYFILE MESSAGES
*
* ENTRY - (A) = 0 - ADDRESS NOT KNOWN
* 1 - TEST PATERN DID NOT FAIL
* 2 - TEST PATTERN FAILED
IDM SUBR
STD T5 SAVE FLAGS
LDN DTEL (A) = ADDR OF DATE ( YY/MM/DD.)
CRM IDMI+5,ON READ DATE TO PP MEMORY
LDC IDMI *+++++...*
RJM DFM
LDM IDMADDR ADDR OF *EM PARITY ERR* MESS
RJM DFM
* SET LINK INFORMATION FOR ERRLOG MESSAGE
LDN PPCP COMPUTE PP NUMBER
CRD CM
LDD IA
SBD CM+4
SHN -3
RJM C2D
STM IDMJ+2
STM IDMK+2
STM IDML+2
LDD T5
NJN IDM1 IF ADDRESS KNOWN
LJM IDM3
* DISPLAY FAILING ADDRESS
IDM1 LDD RE+1 DISPLAY ECS ADDRESS
ADD EA+1
ADD WC+1
STD T7
SHN -14
ADD RE
ADD EA
ADD WC
STD T6
LDC IDMB+5
STD T1
LDN T6
STD T2
RJM C24
LDC IDMB *EM ADDR XXXXXXXX*
RJM DFM
LDC IDMJ+6 FORMAT EM ADDRESS FOR ERRORLOG
STD T1
LDN T6
STD T2
LDD T6
LPC 7000 CHECK FOR ESM .GT. 2000K
ZJN IDM1.1 IF .LT. 2000K
RJM C24
UJN IDM1.2
IDM1.1 SHN -11
RAM IDMJ+6
AOD T1 ADVANCE POINTER
RJM C18
IDM1.2 LDC IDMC+5 DISPLAY CONTENTS OF WORD
STD T1
LDC EFW
STD T2
RJM C60
LDC IDMC *CONTENTS XXXXX...*
RJM DFM
LDD T5
SBN 1
NJN IDM2 IF TEST PATTERN DID FAIL
LJM IDM4
IDM2 LDC IDMD+5 DISPLAY TEST DATA
STD T1
LDN PT
STD T2
RJM C60
LDC IDMD *TEST DATA XXXX...*
RJM DFM
LDC IDME+5 DISPLAY READ TEST DATA
STD T1
LDN CN
STD T2
RJM C60
LDC IDME * READ AS XXXX...*
RJM DFM
LDC IDMK+7 FORMAT FOR ERRORLOG
* /--- BLOCK IDM 00 000 80/09/02 22.58
STD T1
LDN CN
STD T2
RJM C60
LDC IDML+7
STD T1
LDN PT
STD T2
RJM C60
* /--- BLOCK IDM 00 000 80/08/27 15.20
* FORMAT FWA FOR ERRLOG IF NO FAILING ADDRESS
IDM3 LDD RE+1
ADD EA+1
STD T7
SHN -14
ADD RE
ADD EA
STD T6
LDN T6
STD T2
LDC IDMJ+6 FORMAT EM ADDRESS FOR ERRORLOG
STD T1
LDD T6
LPC 7000 CHECK FOR EM .GT. 2000K
ZJN IDM3.1 IF .LT. 2000K
RJM C24
UJN IDM4
IDM3.1 SHN -11
RAM IDMJ+6
AOD T1
RJM C18
IDM4 LDC IDMF+5 DISPLAY FWA OF TRANSFER
STD T1
LDD RE+1
ADD EA+1
STD T7
SHN -14
ADD RE
ADD EA
STD T6
LDN T6
STD T2
RJM C24
LDC IDMF *FWA TRANS XXXXXXXX*
RJM DFM
LDC IDMG+5 DISPLAY LENGTH OF TRANSFER
STD T1
LDN NW
STD T2
RJM C24
LDC IDMG *LTH TRANS XXXXXXXX*
RJM DFM
LDC IDMJ+17 FORMAT WORD CNT FOR ERRORLOG
STD T1
LDN NW
STD T2
RJM C18
LDC IDMH+5 DISPLAY CALL ADDRESS
STD T1
LDN IS
STD T2
RJM C18
LDC IDMH *CALL ADDR XXXXXX*
RJM DFM
LDC IDMI1 *++++...*
RJM DFM
LDC IDMJ+13 FORMAT CM ADDRESS FOR ERRORLOG
STD T1
LDN CA
STD T2
RJM C18
LDD IO SET READ/WRITE FLAG
SHN -1
LPN 1
STD T1
LDM IDMM,T1
STM IDMJ+3
LDC ERLN+IDMJ
RJM DFM
LDD T5
SBN 2
NJN IDM5 IF NO FAILING DATA
LDC ERLN+IDMK
RJM DFM
LDC ERLN+IDML
RJM DFM
IDM5 LJM IDMX EXIT
* /--- BLOCK MESSAGES 00 000 87/02/24 09.27
* THESE MESSAGES ARE READ FROM THE ERRORLOG BY A
* FTN PROGRAM, *NORM*, FROM THE CE TOOLS PACKAGE
* AND REFORMATTED FOR USE BY *HPA*.
IDMADDR VFD 12/IDMAF DEFAULT TO FATAL ERR MESSAGE
IDMAF DATA 2RUN
IDMANF DATA 10HRECOVERED
DATA C*EM PARITY ERROR*
IDMB DATA C*EM ADDR XXXXXXXX*
IDMC DATA C*CONTENTS UNKNOWN *
IDMD DATA C*TEST DATA XXXXXXXXXXXXXXXXXXXX*
IDME DATA C* READ AS XXXXXXXXXXXXXXXXXXXX*
IDMF DATA C*FWA TRANS XXXXXXXX*
IDMG DATA C*LTH TRANS XXXXXXXX*
IDMH DATA C*CALL ADDR XXXXXX XX*
IDMI DATA C*++++++++++ YY/MM/DD.++++++++++*
IDMI1 DATA C*++++++++++++++++++++++++++++++*
IDMJ DATA C*EC00XX,R01,U,AAAAAAA,CAAAAAA,WXXXXXX.*
IDMK DATA C*EC00XX,R01,U,BXXXXXXXXXXXXXXXXXXXX.*
IDML DATA C*EC00XX,R01,U,GXXXXXXXXXXXXXXXXXXXX.*
IDMM DATA 2R,R
DATA 2R,W
* /--- BLOCK MEL 00 000 80/07/02 08.30
MEL SPACE 5,11
** MEL - MONITOR ESM ERROR LOG
*
* IF RUNNING IN ESM MODE, POST EVENT TO CAUSE
* ESM ERROR LOG MONITOR TO EXECUTE.
MEL SUBR
* SEARCH EST FOR *SP* ENTRY
LDC 2RSP
RJM EQN SEARCH EST
PJN MEL1 IF *SP* ENTRY FOUND
LDC 2RDE LOOK FOR MC DEFINITION ON DE
RJM EQN
MJN MELX DE NOT FOUND (ARGH)
STD T1 SAVE EST ORDINAL
.NOS252 IFGE "MODLEVEL",678D
SFA EST (A) = ADDR OF EST ENTRY
ADK EQAE
CRD CM
.NOS252 ENDIF
LDD CM+2
LPN 77
ZJN MELX NO *MC* DEFINED
LDD T1
MEL1 STD CM+3 (CM+3) = EST ORDINAL
MONITOR EATM
UJN MELX EXIT
*CALL PLAPEQN
* /--- BLOCK RDW 00 000 87/02/24 09.28
RDW SPACE 5,11
** RDW - READ WORD FROM EM
*
* ENTRY - (A) = 1 IF COMPARE WORD TO *PT*
* (WC) = WORD TO READ
*
* EXIT - (A) = <0 IF ERRORS
RDW SUBR
STD T7 SAVE COMPARE FLAG
LDN ZERL
CRD CM
LDD WC+1
ADD EA+1
STD CM+1
SHN -14
ADD WC
ADD EA
STD CM
LDN 5
RJM REQ REQUEST CPU ACTION
MJN RDWX IF ERROR
LDD T7
ZJN RDWX IF NO COMPARE
LDD CN
LMD PT
NJN RDW1 IF MIS-MATCH
LDD CN+1
LMD PT+1
NJN RDW1 IF MIS-MATCH
LDD CN+2
LMD PT+2
NJN RDW1 IF MIS-MATCH
LDD CN+3
LMD PT+3
NJN RDW1 IF MIS-MATCH
LDD CN+4
LMD PT+4
NJN RDW1 IF MIS-MATCH
LJM RDWX EXIT
RDW1 LCN 0 (A) = ERROR OCCURRED
LJM RDWX
* /--- BLOCK REQ 00 000 80/06/27 11.30
REQ SPACE 5,11
** REQ - REQUEST CPU ACTION
*
* ENTRY - (A) = REQUEST CODE
*
* EXIT - (A) = ERROR RESPONSE
REQ SUBR
STD CM+4
LDD IR+3
SHN 6
ADD RA
SHN 6
ADD IR+4
ADN 2
CWD PT WRITE PATTERN TO WRITE
SBN 2
CWD CM
MONITOR RCLM RE-START CPU PROGRAM
* WAIT FOR CPU TO PROCESS REQUEST
REQ1 DELAY
PAUSE
LDD CM+1
NJN REQ2 IF ERROR FLAG SET
* READ REQUEST WORD
LDD IR+3
SHN 6
ADD RA
SHN 6
ADD IR+4
CRD CM
ADN 2
CRD CN READ WORD READ
LDD CM+4
SHN 21-0
MJN REQ1 IF REQUEST NOT COMPLETE
LDD CM
SHN 21-13 POSITION ERROR CODE
LJM REQX EXIT
* PROCESS ERROR FLAG
REQ2 MONITOR DPPM
LJM PPR
* /--- BLOCK SCR 00 000 87/02/24 09.28
SCR SPACE 5,11
** SCR - SET JOB CONTROL REGISTERS
*
* SETS JOB CONTROL REGISTERS FOR EM TESTER
*
* EXIT - (R1) = *ECS*
* (R2) = 0 (IF FAILING BIT FOUND)
* 200000 + LOW 16 BITS OF ADDRESS
SCR SUBR
LDD CP
ADC JCRW
CRD CM
LDN 0 CLEAR *R2*
STD CM+2
LDN 1RE SET *R1* = *ECS*
STD CM+3
LDC 2RCS
STD CM+4
LDD T5
SBN 2
ZJN SCR1 IF FAILING BIT FOUND
LDD RE
ADD EA
ADD WC
LPN 37
SHN 14
ADD RE+1
ADD EA+1
ADD WC+1
LPC 177777
ADC 200000
SHN 14
STD CM+2
SHN -14
SHN 6
RAD CM+3
* RE-WRITE JOB CONTROL REGISTERS
SCR1 LDD CP
ADC JCRW
CWD CM
LJM SCRX EXIT
* /--- BLOCK SFW 00 000 80/06/27 09.35
SFW SPACE 5,11
** SFW - SEARCH FOR FAILING WORD
*
* EXIT - (A) = 0 IF NO ERRORS
* (WC) = WORD IN ERROR
SFW SUBR
LDN 0
STD WC
STD WC+1
SFW1 LDD WC
LMD NW
NJN SFW2 IF NOT AT LIMIT
LDD WC+1
LMD NW+1
ZJN SFWX IF SEARCH COMPLETE
SFW2 LDN 0 (A) = NO COMPARE
RJM RDW READ A WORD
MJN SFWX IF ERROR OCCURRED
AOD WC+1
SHN -14
RAD WC
UJN SFW1 READ NEXT WORD
* /--- BLOCK STA 00 000 87/02/24 09.29
STA SPACE 5,11
** STA - SET TRANSFER ADDRESS
*
* ENTRY - (IO) = INSTRUCTION DEFINITION BITS
*
* EXIT - (CA) = CM FWA OF TRANSFER
* (EA) = EM FWA OF TRANSFER
* (NW) = NUMBER OF WORDS IN TRANSFER
* (A) = 0 IF NO ERRORS
STA7 LDC STAB
STD T1
LDN IS
STD T2
RJM C18
LDC STAA * ILLEGAL EM INSTRUCTION...*
RJM DFM
STA8 LDC STAD
STD T1
LDN IN
STD T2
RJM C60 CONVERT 60 BITS
LDC STAC * INSTRUCTION - XXX...*
RJM DFM
LDN 1 (A) = ERRORS
STA SUBR
LDD IO
ZJN STA7 IF ILLEGAL INSTRUCTION
SHN 21-2
MJN STA1 IF SINGLE WORD TYPE
LJM STA2
* PROCESS SINGLE WORD TRANSFERS
STA1 LDN 1 SET TRANSFER LENGTH
STD NW+1
LDN 0
STD NW
LDD IN+1
SHN -11
STD T1 SET X(J)
LDD IN
LPN 7
STD T2 SET X(I)
LDD IR+3
SHN 14
ADD IR+4
ADN 3+10
ADD T2 (A) = CM ADDRESS
STD CA+1
SHN -14
STD CA
LDD IR+3 READ *X(J)*
SHN 6
ADD RA
SHN 6
ADD IR+4
ADN 3+10
ADD T1
CRD CM
LDD CM+3 SET EM ADDRESS
STD EA
LDD CM+4
STD EA+1
LJM STA3
* /--- BLOCK STA 00 000 87/02/24 09.29
* PROCESS RE/WE INSTRUCTIONS
STA2 LDD IN
LPN 7 (A) = B REGISTER
STD T1
LDD IR+3 READ *B* REGISTER
SHN 6
ADD RA
SHN 6
ADD IR+4
ADN 3
CRD PT READ *A0*
ADN 10
CRD CM READ *X0*
SBN 10
ADD T1
CRD CN READ *B(I)*
LDD CN+4 SET (B(I))
STM .STA+1
LDD CN+3
LPN 77
RAM .STA
LDD PT+3 SET CM FWA
SCN 77
SHN 6
ADD PT+2
SHN 6
STD CA+1
SHN -14
STD CA
LDD CM+3 SET EM FWA
STD EA
LDD CM+4
STD EA+1
LDD IN+2 COMPUTE TRANSFER LENGTH
SCN 77
SHN 6
ADD IN+1
SHN 6
.STA ADC 0 INCLUDE *B(I)*
STD NW+1
SHN -14
STD NW
* VERIFY NOT A FLAG REGISTER INSTRUCTION
STA3 LDD ES
.NOSV2 IFGE OSLEV,578D NOS V2
ZJN STA4 IF ESM MODE
.NOSV2 ELSE NOS V1
NJN STA4 IF ESM MODE
.NOSV2 ENDIF
LDD CM+3
SHN 21-13
UJN STA5
STA4 LDD CM+2
SHN 21-5
STA5 MJN STA6 IF FLAG BIT ON
LDN 0 (A) = NO ERRORS
LJM STAX EXIT
* PROCESS ILLEGAL INSTRUCTION
STA6 LDC STAF
STD T1
LDN IS
STD T2
RJM C18 CONVERT CM ADDR TO DISPLAY
LDC STAH
STD T1
LDN CM
STD T2
RJM C60 CONVERT X0 TO DISPLAY
LDC STAE * INVALID FLAG FUNCTION...*
RJM DFM
LDC STAG * X0 - XXX...*
RJM DFM
LJM STA8 EXIT AFTER DISPLAYING INSTR.
STAA DATA H* ILLEGAL EM INSTRUCTION AT *
STAB DATA C*XXXXXX*
STAC DATA H* INSTRUCTION - *
STAD DATA C*XXXXXXXXXXXXXXXXXXXX*
STAE DATA H* INVALID FLAG FUNCTION AT *
STAF DATA C*XXXXXX*
STAG DATA H* REGISTER X0 - *
STAH DATA C*XXXXXXXXXXXXXXXXXXXX*
* /--- BLOCK WTW 00 000 87/02/24 09.29
WTW SPACE 5,11
** WTW - WRITE WORD TO EM
*
* ENTRY - (WC) = WORD TO WRITE
*
* EXIT - (A) = <0 IF ERRORS
WTW SUBR
LDN ZERL
CRD CM
LDD WC+1
ADD EA+1
STD CM+1
SHN -14
ADD WC
ADD EA
STD CM
LDN 7
RJM REQ REQUEST CPU ACTION
UJN WTWX EXIT
* /--- BLOCK COMMON 00 000 80/06/30 15.48
* COMMON DECKS
*CALL COMPC2D
* /--- BLOCK PRS 00 000 87/02/24 11.06
TITLE PRESET.
** PRS - PRESET PROGRAM
PRS SUBR
RJM CUA CHECK USER ACCESS
ZJN PRS2 IF ACCESS ALLOWED
LDC PRSA * ILLEGAL USER ACCESS.*
PRS1 RJM DFM
MONITOR ABTM
LJM PPR
PRS2 RJM CRS CHECK RECALL STATUS
NJN PRS3 IF CALLED WITH AUTO-RECALL
LDC PRSB * AUTO-RECALL ERROR.*
UJN PRS1
* VALIDATE PARAMETER ADDRESS
PRS3 LDD IR+3
SHN 14
LMD IR+4
ADN 3+20+2*18D+1
SHN -6
SBD FL
MJN PRS4 IF PARAMETERS IN RANGE
LDC PRSC * ADDRESS OUT OF RANGE*
UJN PRS1
* SET ECS/ESM MODE FLAG
.NOS252 IFGE OSLEV,678D
PRS4 LDK EXML CHECK ECS/ESM MODE
CRD CM
LDD CM+3
SHN -12
LPN 1
LMN 1 COMPLEMENT
.NOS252 ELSE
.NOSV2 IFGE OSLEV,578D NOS V2
PRS4 LDN MEFL CHECK ECS/ESM MODE
CRD CM
LDD CM+2
LPN 7 (A) = 15/0, 3/EM TYPE
SBN 5 EM TYPE = 5 IF ESM
.NOSV2 ELSE NOS V1
PRS4 LDN CPUL FETCH ECS/ESM MODE
CRD CM
LDD CM+ESMW
SHN -ESMB
LPN 1
.NOSV2 ENDIF
.NOS252 ENDIF
STD ES SET ESM MODE
.NOS252 IFGE OSLEV,678D
* SET STANDARD/EXTENDED ADRESSING MODE FLAG
LDK MEFL
CRD CM
LDD CM+2
SHN -7 EXTENDED ADDRESSING BIT
LPN 1
STD EX
.NOS252 ENDIF
* /--- BLOCK PRS 00 000 87/02/24 11.11
* FETCH EM RA
LDD CP
ADN 4
CRD CM
.NOS252 IFGE OSLEV,678D
LDD EX
NJN PRS5 IF EXTENDED ADDRESSING MODE
.NOS252 ELSE
LDD ES
.NOSV2 IFGE OSLEV,578D NOS V2
ZJN PRS5 IF ESM MODE
.NOSV2 ELSE NOS V1
NJN PRS5 IF ESM MODE
.NOSV2 ENDIF
.NOS252 ENDIF
LDD CM
LPC 777
STD RE
LDD CM+1
STD RE+1
UJN PRS6
PRS5 LDD CM
LPN 77
SHN 14
LMD CM+1
SHN 14
STD RE
SHN -14
SCN 77
STD RE+1
PRS6 RJM BXP BUILD EXCHANGE PACKAGE
LJM PRSX EXIT
PRSA DATA C* ILLEGAL USER ACCESS.*
PRSB DATA C* AUTO-RECALL ERROR.*
PRSC DATA C* ADDRESS OUT OF RANGE.*
* /--- BLOCK BXP 00 000 80/06/27 13.56
BXP SPACE 5,11
** BXP - BUILD EXCHANGE PACKAGE
*
* WHEN CALLING *EPE*, THE CALLER HAS SAVED
* X6/A6/X1/A6 IN FIRST FOUR WORDS OF EXCHANGE
* PACKAGE AREA. IMMEDIATELY FOLLOWING THE
* EXCHANGE PACKAGE IS *B1* THAT IS SAVED
* BY A SERIES OF EXCHANGE JUMPS.
*
* THIS ROUTINE BUILD A GOOD EXCHANGE PACKAGE
* IN THE EXCHANGE PACKAGE AREA AND RESET THE
* RJ TRAIL FOR NEXT ENTRY.
BXP SUBR
* READ X6/A6/X1/A1
LDN 4
STD T1
LDD IR+3
SHN 6
ADD RA
SHN 6
ADD IR+4
ADN 3
CRM BXPA,T1
* COPY EXCHANGE PACKAGE FROM CONTROL POINT AREA
LDN 20
STD T1
LDD CP
CRM BXPB,T1
* MOVE SAVED REGISTERS TO EXCHANGE PACKAGE
LDD MA
CWM BXPA,ON MOVE X6
CWM BXPA+2*5,ON MOVE X1
LDD MA
CRM BXPB+5*16,ON
CRM BXPB+5*11,ON
* MOVE *A1*
LDM BXPA+5*1+3
SHN 14
ADM BXPA+5*1+4
SHN -6
STM BXPB+5*1+2 STORE UPPER 12 BITS
LDM BXPB+5*1+3
LPN 77
STM BXPB+5*1+3
LDM BXPA+5*1+4
SHN 6
RAM BXPB+5*1+3 MERGE LOWER SIX BITS
* MOVE *A6*
LDM BXPA+5*3+3
SHN 14
ADM BXPA+5*3+4
SHN -6
STM BXPB+5*6+2 STORE UPPER 12 BITS
LDM BXPB+5*6+3
LPN 77
STM BXPB+5*6+3
LDM BXPA+5*3+4
SHN 6
RAM BXPB+5*6+3 MERGE LOWER SIX BITS
* /--- BLOCK BXP 00 000 80/07/01 14.13
* BUILD *B1* / RESTORE *RJ* TRAIL
LDN 0
STD T2
STD T3
STD T4
BXP1 LDD IR+3
SHN 6
ADD RA
SHN 6
ADD IR+4
ADN 3+20+2
ADD T2
CRD CM READ *RJ*
LDD T3
SHN 14
ADD T4
SHN 1
ADD CM+4 INCLUDE NEW BIT
STD T4
SHN -14
STD T3
* RESET *RJ* INSTRUCTION
LDD CM+4
NJN BXP3 IF *RJ* DID NOT EXECUTE
LDC 0100 SET OP-CODE
STD CM
LDC -100 SET ADDRESS
RAD CM+2
PJN BXP2 IF NO UNDERFLOW
SOD CM+1
LDC 7700
STD CM+2
BXP2 LDN 1 SET *B* REGISTER BIT
STD CM+4
LDD IR+3 RE-WRITE *RJ*
SHN 6
ADD RA
SHN 6
ADD IR+4
ADN 3+20+2
ADD T2
CWD CM
BXP3 LDN 2
RAD T2
LMN 2*22
ZJN BXP4 IF ALL BITS BUILT
LJM BXP1 GET NEXT BIT
BXP4 LDD T4
STM BXPB+1*5+4 SET LOWER 12 BITS OF *B1*
LDM BXPB+1*5+3
SCN 77
ADD T3
STM BXPB+1*5+3 SET UPPER 6 BITS OF *B1*
* WRITE EXCHANGE PACKAGE TO FL
LDD IR+3
SHN 6
ADD RA
SHN 6
ADD IR+4
ADN 3
CWM BXPB,T1
MONITOR RCPM RE-START CPU
LJM BXPX EXIT
* /--- BLOCK STORAGE 00 000 80/06/30 15.53
* COMMON DECKS
*CALL COMPCRS
*CALL COMPCUA
* STORAGE
EFW BSS 0 CONTENTS OF FAILING WORD
EMB EQU EFW+5 ERRLOG MESSAGE BUFFER
BXPA EQU EMB+20D X1/A1/X6/A6
BXPB EQU BXPA+4*5 EXCHANGE PACKAGE
LWA EQU BXPB+20*5
ERRNG 10000-LWA TABLE OVERFLOW
OVERFLOW
END