plato:source:plaopl:epe
Table of Contents
EPE
Table Of Contents
- [00012] EPE - PROCESS EM PARITY ERRORS.
- [00014] PROCESS EM PARITY ERRORS.
- [00053] MACREF - GENERATE MACRO SYMBOLIC REFERENCE LISTING.
- [00119] MAIN PROCESSING LOOP
- [00325] SUBROUTINES.
- [00327] C18 - CONVERT 18 BITS TO DISPLAY CODE
- [00351] C24 - CONVERT 24 BITS TO DISPLAY CODE
- [00375] C60 - CONVERT 60 BITS TO DISPLAY CODE
- [00400] IDM - ISSUE DAYFILE MESSAGES
- [00608] MEL - MONITOR ESM ERROR LOG
- [00640] RDW - READ WORD FROM EM
- [00685] REQ - REQUEST CPU ACTION
- [00734] SCR - SET JOB CONTROL REGISTERS
- [00780] SFW - SEARCH FOR FAILING WORD
- [00805] STA - SET TRANSFER ADDRESS
- [00964] WTW - WRITE WORD TO EM
- [00991] PRESET.
- [00993] PRS - PRESET PROGRAM
- [01102] BXP - BUILD EXCHANGE PACKAGE
Source Code
- EPE.txt
- 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
plato/source/plaopl/epe.txt ยท Last modified: 2023/08/05 18:54 by Site Administrator