*DECK TFL 
* 
***       TFL- 2550 OFF-LINE DIAGNOSTIC LOADER
**        TFL- 2550 OFF-LINE DIAGNOSTIC LOADER
* 
*         AUTHOR - DICK HEIN, STAOPS
*           MODIFIED 1/15/80, BY E.P. LAMOUREUX 
*           CONSULTANT
*           STAOPS, DIAGNOSTICS DEVELOPMENT 
* 
*         COPYRIGHT CONTROL DATA CORP. 1980 
* 
* 
* 
***  1.0  INTRODUCTION
*    1.1  INTRODUCTION
*         ------------
* 
*         TFL IS A PROGRAM WRITTEN IN MALET TO LOAD 2550 OFF-LINE 
*         DIAGNOSTICS FROM FILES ON THE CYBER TO THE 2550 MEMORY VIA THE
*         2550 COMMUNICATIONS COUPLER. TFL ALSO INITIATES EXECUTION OF
*         THE DIAGNOSTIC VIA THE COUPLER.  THIS METHOD OF LOADING 
*         DIAGNOSTICS REPLACES THE LOCAL 2550 TAPE CASSETTE LOAD FOR
*         CONFIGURATIONS WITH THE 2550 DIRECTLY CONNECTED TO THE CYBER
*         HOST. 
* 
* 
*** 1.1   RESTRICTIONS
*   1.1   RESTRICTIONS
*         ------------
*         THE TFL LOADER WILL NOT LOAD DIAGNOSTICS VIA A 2550-100 
*         COUPLER OR TO A REMOTE 2550.
* 
* 
*** 2.0   APPLICABLE DOCUMENTS
*   2.0   APPLICABLE DOCUMENTS
*         --------------------
* 
*         THE TFL LOADER ITSELF IS DOCUMENTED WITHIN THIS LISTING.
*         REFERENCE DOCUMENTS ARE LISTED BELOW. 
* 
*         MALET REFERENCE MANUAL................................60456020
* 
* 
*         CML, VERSION 3 REFERENCE MANUAL.......................60455980
* 
* 
*         2550 HARDWARE MAINTENANCE MANUAL......................60472000
* 
* 
*         OPERATIONAL DIAGNOSTIC SYSTEM(ODS)
*         VERSION 2, REFERENCE MANUAL...........................96768410
* 
* 
* 
***  3.0   PROGRAM DESCRIPTION
*    3.0   PROGRAM DESCRIPTION
*          -------------------
* 
*          TFL CONSISTS OF THE MAIN LOADER MODULE AND SEVERAL SUPPORT 
*          MODULES TO HANDLE ERROR AND END-OF-RECORD/END-OF-FILE
*          CONDITIONS.
* 
* 
***  3.1   TFL MODULES
*    3.1   TFL MODULES
*          -----------
* 
*          TFL01  - MAIN LOGIC
*          TFL01A - EOR/EOI PROCESSING
*          TFL01E - DATA ERROR PROCESSOR
*          TFL01F - NPU COUPLER ERROR PROCESSOR 
* 
***  3.1.1 ERROR PROCESSING 
*    3.1.1 ERROR PROCESSING 
*          ---------------- 
* 
*          THE LOAD OF ANY SELECTED DIAGNOSTIC MAY BE ABORTED ON THREE
*          TYPES OF ERROR CONDITIONS. 
*            1) DATA COMPARE ON THE READ-AFTER-WRITE OF A 400 BYTE
*               BLOCK.
*            2) ABORT OF AN INPUT, OUTPUT, OR FUNCTION COMMAND TO THE 
*               COUPLER.
*            3) LOAD FILE FORMAT ERROR
* 
*          ON DATA COMPARE ERRORS, THE BLOCK IS RETRIED THREE TIMES 
*          BEFORE THE LOAD IS ABORTED. OTHER TYPES OF ERRORS ABORT
*          IMMMEDIATELY WITHOUT RETRIES. ALL ERRORS ARE REPORTED
*          AS AN ERROR MESSAGE TO BOTH THE DISPLAY AND THE PRINT FILE.
*          THE FINAL LOAD COMPLETE OR ABORTED MESSAGE IS
*          REPORTED TO THE DISPLAY, PRINT AND DAYFILE.
* 
***  3.1.2 DETAILED DESCRIPTION 
*    3.1.2 DETAILED DESCRIPTION 
*          -------------------- 
* 
***      LOADING PROCEDURES 
*        LOADING PROCEDURES 
*        ------------------ 
* 
*          NO CONTROLWARE/FIRMWARE IS NEEDED TO RUN TFL.
* 
*          THE SAME MODULE IS ALWAYS SELECTED TO RUN **TFL01**.  THE
*          ACTUAL DIAGNOSTIC TO BE LOADED INTO THE 2550 AND EXECUTED IS 
*          SELECTED BY ASSIGNING THE DIAGNOSTIC FILE NAME AS THE MALET
*          SCRATCH FILE.
* 
*          THE CONTROL STATEMENTS WOULD BE AS FOLLOWS:  
* 
*          ATTACH,TFL,FILENAME. 
*          MALET,R=TFL,S=FILENAME.
*          ASSIGN,EST=YY,AL=20
*          PARAM P0=X,TL=7777 
*          RUN TFL. 
* 
*          WHERE:  TFL      = THE COMPILED TFL BINARY 
*                  FILENAME = THE DIAGNOSTIC FILE TO BE LOADED. THE 
*                             FILE NAMES ARE LISTED BELOW.
* 
*                  YY      = THE EST FOR THE 2550 BEING LOADED. 
* 
*                  X  .EQ. 0 - START NPU AFTER LOAD 
*                  X  .NE. 0 - DO NOT START NPU AFTER LOAD
* 
*          A MESSAGE WILL BE SENT TO THE DAYFILE WHEN THE LOAD
*          HAS BEEN TERMINATED. A "LOAD COMPLETE" OR "LOAD
*          COMPLETE, (  ) RECOVERED ERRORS" MESSAGE INDICATES A 
*          SUCCESSFUL LOAD. AN "ABORTED" MESSAGE INDICATES AN 
*          UNSUCCESSFUL LOAD. INTERROGATE THE MALET ERROR FILE
*          TO DETERMINE THE REASON FOR THE ABORT. 
* 
*          2550 DIAGNOSTIC FILE NAMES 
*          ---------------------------- 
*          CEL042,MST041,CPL040,CPLX40,TTYA08,CCP48K,MPINS,MPMOS,MOSMA, 
*          MPRTC,MIMEM,PAGE1,UTOPIA,MIINS,LDCHK3
* 
* 
***        RUNNING PROCEDURE
*          RUNNING PROCEDURE
*          -----------------
* 
*          SEE LOAD PROCEDURES ABOVE
* 
***        PARAMETERS 
*          PARAMETERS 
*          ---------- 
* 
*          P0  -  START NPU AFTER LOAD
* 
*                 .EQ. 0 - START NPU AFTER DIAGNOSTIC IS LOADED 
*                 .NE. 0 - DO NOT START NPU AFTER LOAD
* 
***        MESSAGES 
*          MESSAGES 
*          -------- 
*          ALL MESSAGES FROM TFL ARE SENT TO THE DISPLAY AND PRINT. 
*          THE FOLLOWING ABBREVIATIONS ARE USED ON MESSAGES FROM TFL. 
* 
*          WT - LENGTH OF THE BLOCK FROM THE S-FILE.
*          (         ) - VARIABLE VALUE 
*          ORWD - COUPLER ORDER WORD
*          MAR0 - COUPLER MEMORY ADDRESS REGISTER 0 
*          MAR1 - COUPLER MEMORY ADDRESS REGISTER 1 
*          ADR  - ADDRESS 
*          EXP  - EXPECTED VALUE
*          ACT  - ACTUAL VALUE
* 
* 
***        NORMAL MESSAGES
*          NORMAL MESSAGES
*          ---------------
* 
*          TFL01A - RUNNING 
*          TFL01A - LOAD COMPLETE 
*          TFL01A - LOAD COMPLETE, (ERROR COUNT) RECOVERED ERRORS 
* 
***        ERROR MESSAGES 
*          ERROR MESSAGES 
*          -------------- 
* 
*          TYPE 1 ERROR MESSAGE  - THIS MESSAGE IS OUTPUT ON A DATA 
*                                  COMPARE ERROR ON THE READ-AFTER- 
*                                  WRITE CHECK. 
* 
*          TFL01 - DATA ERROR - ADR=(MEMORY ADDRESS)   EXP=(HEX DATA) 
*                               ACT=(HEX DATA)
* 
*          TYPE 2 ERROR MESSAGES - THESE MESSAGES ARE LOAD FILE (S-FILE)
*                               FORMAT ERRORS OR AN ABORT FOR 3 
*                               DATA COMPARE ERRORS ON THE READ-
*                               WRITE-CHECK OF ONE BLOCK. 
* 
*          TFL01E - BAD HEADER LENGTH - LOAD FILE ABORTED 
*          TFL01E - BAD HEADER CONTENTS - LOAD FILE ABORTED 
*          TFL01E - BAD FORMAT - LOAD FILE (LAST NPU ADDRESS LOADED +1) 
*          TFL01E - EXCESSIVE DATA ERRORS ABORTED 
* 
* 
*          TYPE 3 ERROR MESSAGES - THESE ERROR MESSAGES ARE OUTPUT WHEN 
*                                  AN INPUT, OUTPUT OR FUNCTION TO THE
*                                  COUPLER IS ABORTED. ALSO SOME FILE 
*                                  LENGTH FORMAT ERRORS ARE REPORTED IN 
*                                  THIS MODULE. THE ERROR MESSAGES ARE
*                                  OUTPUT TO BOTH THE DISPLAY AND PRINT 
*                                  FILES. 
* 
*          TFL01F - CLEAR NPU FUNCTION ERROR
*          TFL01F - CLEAR COUPLER ERROR 
*          TFL01F - READ COUPLER STATUS, .FUNCTION. ERROR 
*          TFL01F - READ COUPLER STATUS, .STATUS. ERROR 
*          TFL01F - READ NPU STATUS, .FUNCTION. ERROR 
*          TFL01F - READ NPU STATUS, .STATUS. ERROR 
*          TFL01F - LOAD MAR-0 FUNCTION ERROR 
*          TFL01F - LOAD MAR-0 .OUT. COMMAND ERROR
*          TFL01F - LOAD MAR-1 FUNCTION ERROR 
*          TFL01F - LOAD MAR-1 .OUT. COMMAND ERROR
*          TFL01F - OUTPUT PROGRAM FUNCTION ERROR 
*          TFL01F - OUTPUT PROGRAM, .OUTB. COMMAND ERROR
*          TFL01F - OUTPUT PROGRAM BAD COUPLER STATUS (STATUS IN OCTAL) 
*          TFL01F - OUTPUT WT ERROR - EXP=400  ACT=(OCTAL COUNT)
*          TFL01F - INPUT PROGRAM FUNCTION ERROR
*          TFL01F - INPUT PROGRAM, .INB. COMMAND ERROR
*          TFL01F - INPUT PROGRAM BAD COUPLER STATUS (STATUS IN OCTAL)
*          TFL01F - INPUT WT ERROR - EXP=400  ACT=(OCTAL COUNT) 
*          TFL01F - START NPU ERROR 
*          TFL01F - ABORTED 
* 
***        MODULE DESCRIPTION 
*          MODULE DESCRIPTION 
*          ------------------ 
* 
* 
   MODULE TFL01,6000(64),LOCK   *LOAD NPU DISGNOSTICS 
* 
***        TFL01 - LOAD NPU DIAGNOSTIC PROGRAM
*          TFL01 - LOAD NPU DIAGNOSTIC PROGRAM
*          -----------------------------------
* 
*    OVERVIEW - 
* 
*          TFL01 LOADS A 2550 DIAGNOSTIC PROGRAM FROM FILE TO THE 2550
*          (NPU) VIA THE 2550 COMMUNICATIONS COUPLER. EACH BLOCK SENT TO
*          THE NPU IS READ BACK AND COMPARED WITH THE DATA SENT. THE
*          BLOCKS LOADED ARE FIXED LENGTH OF 400 BYTES AND LOADING IS 
*          TERMINATED AT END-OF-RECORD/END-OF-FILE.  AFTER A PROGRAM
*          HAS BEEN SUCCESSFULLY LOADED, THE PROGRAM IS NORMALLY
*          STARTED TO EXECUTE.
*    DESCRIPTION -
* 
*          1. MASTER CLEAR THE NPU
*          2. CLEAR THE COUPLER 
*          3. CHECK COUPLER AND NPU STATUS
*          4. REWIND THE LOAD FILE
*          5. READ THE FIRST BLOCK OF THE LOAD FILE 
*          6. CHECK STATUS AND LENGTH OF THE READ 
*          7. CHECK FOR 30 SIX BIT CHARACTERS .EQ. TO "/MALET/ FORMAT 
*             NPU LOAD FILE"
*          8. READ BLOCKS, CHECKS STATUS AND BLOCK LENGTH 
*          9. STOP READING ON EOR/EOI BLOCKS
*         10. WRITE BLOCK TO THE NPU
*         11. READ BLOCK BACK FROM THE NPU
*         12. COMPARE BLOCK READ AND WRITTEN
*         13. START NPU WHEN EOI BLOCK FOUND
* 
* 
*    ERRORS REPORTED
* 
*          TFL01 - DATA ERROR - ADR=(MEMORY ADDRESS)   EXP=(HEX DATA) 
*                               ACT=(HEX DATA)
* 
*    REGISTER USAGE 
* 
*          B0 - ERROR MESSAGE NUMBER
*          B1 - TOTAL DATA COMPARE ERRORS 
*          B2 - BLOCK DATA ERROR COUNT
*          B3 - NOT USED
*          B4 - NOT USED
*          B5 - MOST SIGNIFICANT ADDRESS ON ERROR 
*          B6 - LEAST SIGNIFICANT ADDRESS ON ERROR
*          B7 - STATUS OR WT FROM SYSRD 
* 
*    MODULES CALLED 
* 
*          TFL01E, TFL01F,TFL01A
* 
* 
*    PARAMETERS 
* 
*          P0  -  START NPU AFTER LOAD
* 
*                 .EQ. 0 - START NPU AFTER DIAGNOSTIC IS LOADED 
*                 .NE. 0 - DO NOT START NPU AFTER LOAD
* 
*    FIXED BUFFER LOCATIONS 
* 
*          OB(400) = MAR-0
*               1  =     1
*               2  = MASKED CPLR STATUS 
* 
*          SB(0)   = CPLR STATUS
*             1    = NPU STATUS (IF)
* 
* 
 1 FORMAT TFL01 - DATA ERROR - ADR=*HE*H  EXP=*H*H  ACT=*H*H
 2 FORMAT TFL01 - TFL NPU DIAGNOSTIC LOADER 
* 
*---------- INITIALIZE OUTPUT BUFFER TO FIXED LOAD FILE 
*           HEADER RECORD OF 30 SIX BIT CHARACTERS OF:  
*            /MALET/ FORMAT NPU LOAD FILE 
* 
   DATA (OB,CON) 5550,1501,1405,2450,5506,
  ,1722,1501,2455,1620,2555,
  ,1417,0104,5506,1114,0555 
* 
*--------- MAINLINE PROCESS 
* 
5  MSG 2 TO DISPLAY, PRINT         *POST RUNNING MESSAGE
   OB(400) = 0                     *INIT MAR-0
   OB(401) = 0                     *INIT MAR-1
   B1 = 0                          *INIT RUN ERR CTR
   RES                             *RESERVE CHANNEL 
* 
* 
*---------- CLEAR NPU AND COUPLER 
* 
7  B0 = 1                          *ERR MSG NBR 
   FUNC 200, ABT 75                *CLEAR NPU 
   B0 = 2                          *ERR MSG NBR 
   FUNC 400, ABT 75                *CLEAR CPLR
   GOSUB 65                        *GET CPLR STATUS 
   IF (SB .AND. 4 .EQ. 0) GOTO 10  *IF NO NPU STATUS
   B0 = 5                          *ERR MSG NBR 
   FUNC 4, ABT 75                  *NPU STATUS FUNCTION 
   B0 = 6                          *ERR MSG NBR 
   STATUS 1 WORDS TO SB(1), ABT 75
* 
*--------- REWIND LOAD FILE 
* 
10 SYSREW                          *REWIND LOAD FILE
* 
*--------- READ HEADER RECORD 
* 
   B0 = 1                          *ERR MSG NUMBER
   SYSRD, STATUS TO B7           *READ HEADER 
   IF (B7 .NE. 0) GOTO 70        *TEST FOR INVALID READ 
   B0 = 2                        *ERR MSG NBR 
   B7 = 15                       *NBR WDS TO COMPARE
*--------- COMPARE HEADER FOR 30 CHARS TO VERIFY THE FILE 
* 
* 
   COMPARE IB(75D) TO OB FOR B7, ABT 70 
* 
*--------- READ BLOCK FROM THE LOAD FILE
* 
20 B0 = 3                    * ERROR NUMBER 
   SYSRD, STATUS TO B7            *READ FROM LOAD FILE
   IF (B7 .EQ. 0) GOTO 30         *VALID READ 
* 
*--------- IF BLOCK IS EOR OR EOI TERMINATE LOAD
* 
   EXIT TO 01A                    *ASSUME STATUS IS EOI 
* 
*--------- DATA BLOCK, CHECK LENGTH 
* 
30 IF (WT .NE. 500) GOTO 70      *TEST FOR BAD BLOCK LENGTH 
   COPY IB TO OB FOR 400
* 
*--------- VALID BLOCK, OUTPUT THE BLOCK TO THE NPU 
* 
   B2 = 0                    *INITIALIZE DATA BLOCK ERR CNTR
35 B7 = 400                  *SETUP TO WRITE 400 WORDS
   GOSUB 50                  *-WRITNPU- OUTPUT BLOCK TO NPU 
* 
*--------- READ THE BLOCK FROM THE NPU
* 
   GOSUB 55                  *-READNPU- INPUT BLOCK FROM NPU
* 
*--------- COMPARE THE BLOCK READ WITH THE BLOCK WRITTEN
* 
   COMPARE IB TO OB FOR B7, ABT 45
* 
*--------- INCREMENT THE NPU MEMORY ADDRESS LOCATIONS 
* 
   IF (OB(401) .EQ. 200) GOTO 40  *TEST MAR-1 FOR MAX. VALUE
   OB(401) = 200
   GOTO 20
* 
40 OB(400) = OB(400)+1
   OB(401) = 0
   GOTO 20
* 
*----------  DATA COMPARE ERROR PROCESSOR 
* 
45 B7 = B7 .AND. 7776        *ADJUST ADDR PTR TO PPU WD PAIR
   B6 = B7 .RS. 1+OB(401)    *SETUP RH-8 OF NPU ADDRESS 
   B5 = OB(400)              *SETUP LH-8 OF NPU ADDRESS 
* 
   MSG 1 (B5,B6,OB(B7),OB(B7+1),IB(B7),IB(B7+1)) TO PRINT 
* 
   B1 = B1+1                      *INCR RUN ERR CTR 
   MSG 1 (B5,B6,OB(B7),OB(B7+1),IB(B7),IB(B7+1)) TO LINE B1 
   B2 = B2+1                      *INCR BLK ERR CTR 
   IF (B2 .LT. 3) GOTO 35         *IF .LT. 3 ERRS, TRY AGAIN
* 
*--------- THREE DATA COMPARE ERRORS THIS BLOCK, ABORT LOAD 
* 
   B0 = 4                         *ERR MSG NBR
   GOTO 70
* 
*--------- WRITE TO NPU SUBROUTINE
* 
50 GOSUB 60                       *LOAD MAR 
   B0 = 13                        *ERR MSG NBR
   FUNC 15, ABT 75                *FUNC OUTPUT PGM
   B0 = 14                        *ERR MSG NBR
   OUTB B7 WORDS FROM OB, ABT 75
   B7 = WT                        *SAVE FOR CHECK 
   GOSUB 65                       *GET CPLR STATUS
   OB(402) = SB .AND. 6776        *MASK AND SAVE
   B0 = 15                        *ERR MSG NBR
   IF (OB(402) .NE. 0) GOTO 75    *IF BAD STATUS
   B0 = 16                        *ERR MSG NBR
   IF (B7 .NE. 400) GOTO 75       *IF WT ERROR
   RETURN 
* 
*-------- READ FROM NPU SUBROUTINE
* 
55 GOSUB 60                       *LOAD MAR 
   B0 = 17                        *ERR MSG NBR
   FUNC 7, ABT 75                 *FUNC INPUT PGM 
   B0 = 20                        *ERR MSG NBR
   INB B7 WORDS TO IB, ABT 75 
   B7 = WT                        *SAVE FOR CHECK 
   GOSUB 65                       *GET CPLR STATUS
   OB(402) = SB .AND. 6776        *MASK AND SAVE
   B0 = 21                        *ERR MSG NBR
   IF (OB(402) .NE. 0) GOTO 75    *IF BAD STATUS
   B0 = 22                        *ERR MSG NBR
   IF (B7 .NE. 400) GOTO 75        *IF WT ERROR 
   RETURN 
* 
*-------- LOAD MEMORY ADDRESS REGISTER SUBROUTINE 
* 
60 RES                            *RESERVE CHANNEL
   B0 = 7                         *ERR MSG NBR
   FUNC 10, ABT 75                *LOAD MAR-0 FUNCTION
   B0 = 10                        *ERR MSG NBR
   OUT 1 WORDS FROM OB(400), ABT 75 
   B0 = 11                        *ERR MSG NBR
   FUNC 11, ABT 75                *LOAD MAR-1 FUNCTION
   B0 = 12                        *ERR MSG NBR
   OUT 1 WORDS FROM OB(401), ABT 75 
   RETURN 
* 
*--------- INPUT COUPLER STATUS SUBROUTINE
* 
65 B0 = 3                         *ERR MSG NBR
   FUNC 5, ABT 75                 *CPLR STATUS FUNCTION 
   B0 = 4                         *ERR MSG NBR
   STATUS 1 WORDS TO SB, ABT 75 
   RETURN 
* 
* -------- MODULE-SPECIFIC ERROR PROCESSOR
* 
70 EXIT TO 01E                    *PROCESS ERROR
* 
*   GENERAL ERROR PROCESSOR 
* 
75 CALL 01F                       *PROCESS ERROR
* 
* 
   END 5
* 
* 
* 
COMPILE   - TFL01 - 
* 
* 
* 
   MODULE TFL01A,6000(64),LOCK    *LOAD NPU END OF RUN
* 
***  TFL01A - LOAD NPU END OF RUN PROCESSING
**   TFL01A - LOAD NPU END OF RUN PROCESSING
*    ---------------------------------------
* 
*    OVERVIEW - 
*          THIS MODULE IS EXITED TO WHEN EOR/EOI IS ENCOUNTERED 
*          ON THE LOAD FILE. IT OUPUTS THE LOAD COMPLETE
*          MESSAGE AND ERROR COUNTS, IF ANY. IT ALSO CHECKS 
*          THE START NPU PROGRAM PARAMETER AND INITIATES THE
*          THE START NPU FOR THE DEFAULT CASE.
* 
*    DESCRIPTION -
*          1. TESTS THE NPU ADDRESS TO BE ON A 4K BOUNDARY. 
*             EXITS TO MODULE 01E IF NOT. 
*          2. TESTS THE START NPU PARAMETER AND INITIATES 
*             THE NPU IF P0 IS ZER0.
*          3. OUTPUTS THE LOAD COMPLETE MESSAGE TERMINATES
* 
*    ERRORS REPORTED -
*          THE TOTAL NUMBER OF RECOVERED DATA COMPARE ERRORS
*          FOR THE LOAD IS REPORTED.
* 
*    REGISTER USAGE - 
* 
*    B0 - ERROR MESSAGE NUMBER
* 
* 
* 
* 
 1 FORMAT TFL01A - LOAD COMPLETE
 2 FORMAT TFL01A - LOAD COMPLETE, *DEC RECOVERED ERRORS 
 3 FORMAT --------------------------------------------------
* 
*--------- EOR/EOI FOUND ON LOAD FILE 
* 
10 IF (OB(401) .NE. 0) GOTO 70    *IF MAR-1 INVALID 
   IF (OB(400) .AND. 17 .NE 0) GOTO 70  *IF MAR-0 INVALID 
   IF (P0 .NE. 0) GOTO 11         *IF NO START
   RES                            *RESERVE CHANNEL
   B0 = 23                        *ERR MSG NBR
   FUNC 40, ABT 71                *START NPU
11 OB(400) = OB(400)-1
12 IF (B1 .NE. 0) GOTO 13           *IF ANY DATA ERRORS 
   MSG 1 TO PRINT,DISPLAY,DAYFILE  *LOAD COMPLETE 
   MSG 3 TO PRINT 
   GOTO 77
* 
13 MSG 2 (B1) TO PRINT,DISPLAY  *LOAD COMPLETE, ERRS
   MSG 2 (B1) TO DAYFILE        *LOAD COMPLETE, ERRS
   MSG 3 TO PRINT 
   GOTO 77
* 
*--------- MODULE-SPECIFIC ERROR PROCESSOR
* 
70 EXIT TO 01E                    *PROCESS ERROR
* 
*--------- GENERAL ERROR PROCESSOR
* 
71 CALL 01F                       *PROCESS ERROR
* 
* 
77 END 10 
* 
* 
COMPILE   - TFL01A -
* 
* 
* 
* 
   MODULE TFL01E,6000(64),LOCK   *LOAD NPU ERROR PROCESSOR
* 
***------- TFL01E LOAD NPU ERROR PROCESSOR
**-------- TFL01E LOAD NPU ERROR PROCESSOR
* 
*    OVERVIEW - 
*          THIS MODULE IS CALLED FROM THE MAIN NPU LOADER 
*          WHEN A LOAD FILE FORMAT ERROR IS DETECTED OR 
*          WHEN EXCESSIVE DATA ERRORS ARE DETECTED. THIS
*          MODULE OUTPUTS THE ERROR MESSAGES AND TERMINATES.
* 
* 
*    DESCRIPTION -
* 
*          1. OUTPUT THE ERROR MESSAGE SPECIFIED IN B0
*          2. OUTPUT THE ABORTED MESSAGE
*          3. TERMINATE 
* 
*    ERRORS REPORTED -
* 
*          BAD HEADER LENGTH - LOAD FILE
*          BAD HEADER CONTENTS - LOAD FILE
*          BAD FORMAT - LOAD FILE (*HE*H) 
*          EXCESSIVE DATA ERRORS
*          ABORTED
* 
*    REGISTER USAGE - 
* 
*           0 - MESSAGE NUMBER TO OUTPUT
* 
*    MODULES CALLED - 
* 
*          NONE 
* 
* 
 1 FORMAT TFL01E - BAD HEADER LENGTH - LOAD FILE
 2 FORMAT TFL01E - BAD HEADER CONTENTS - LOAD FILE
 3 FORMAT TFL01E - BAD FORMAT - LOAD FILE (*HE*H) 
 4 FORMAT TFL01E - EXCESSIVE DATA ERRORS
 5 FORMAT TFL      ABORTED  --ERRORS--
 6 FORMAT ----------------------------------------- 
* 
*--------- PROCESS ERRORS 
* 
30 IF (B0 .EQ. 3) GOTO 40 
   IF (B0 .EQ. 4) GOTO 35 
   MSG B0 TO LINE 1 
   GOTO 76
* 
35 IF (B1 .GT. 45) GOTO 36
   B1 = B1 + 1
   MSG B0 TO LINE B1
   MSG B0 TO PRINT
   B1 = B1 + 1
   MSG 5 TO LINE B1 
   MSG 5 TO PRINT 
   GOTO 77
* 
36 MSG B0 TO LINE 46
   MSG B0 TO PRINT
   MSG 5 TO LINE 47 
   MSG 5 TO PRINT 
   GOTO 77
* 
40 MSG B0 (OB(400),OB(401)) TO LINE 1 
76 MSG 5 TO LINE 2
   PICTURE
77 MSG 5 TO DAYFILE 
   MSG 6 TO PRINT 
* 
*IF DEF,DEBUG 
   IF (P1 .EQ. 0) GOTO 77    *IF NOT DEBUG EXIT 
* 
   EXIT TO 01D
*ENDIF
   END 30 
* 
* 
COMPILE   - TFL01E -
* 
* 
* 
   MODULE TFL01F,6000(64),LOCK   *GENL NPU ERROR PROCESSOR
* 
***------- TFL01F GENERAL NPU ERROR PROCESSOR 
**-------- TFL01F GENERAL NPU ERROR PROCESSOR 
* 
* 
*    OVERVIEW - 
* 
*          THIS MODULE TESTS FOR ERROR MESSAGES THAT REQUIRE
*          DATA AND SPECIFIES THE DATA WHERE REQUIRED.
*          THE MODULE THEN OUTPUTS THE ERROR MESSAGE NUMBER 
*          SPECIFIED IN THE B REGISTER. 
* 
*    DESCRIPTION -
* 
*          SEE OVERVIEW ABOVE 
* 
*    ERRORS REPORTED -
* 
*          CLEAR NPU FUNCTION ERROR 
*          CLEAR COUPLER FUNCTION ERROR 
*          READ COUPLER STATUS, .FUNCTION. ERROR
*          READ COUPLER STATUS, .STATUS. ERROR
*          READ NPU STATUS, .FUNCTION. ERROR
*          READ NPU STATUS, .STATUS. ERROR
*          LOAD MAR-0 FUNCTION ERROR
*          LOAD MAR-0 .OUT. COMMAND ERROR 
*          LOAD MAR-1 FUNCTION ERROR
*          LOAD MAR-1 .OUT. COMMAND ERROR 
*          OUTPUT PROGRAM FUNCTION ERROR
*          OUTPUT PROGRAM, .OUTB. COMMAND ERROR 
*          OUTPUT PROGRAM BAD COUPLER STATUS (*OCT) 
*          OUTPUT PROGRAM WT ERROR - EXP=400  ACT=*OCT
*          INPUT PROGRAM FUNCTION ERROR 
*          INPUT PROGRAM, .INB. COMMAND ERROR 
*          INPUT PROGRAM BAD COUPLER STATUS (*OCT)
*          INPUT PROGRAM WT ERROR - EXP=400  ACT=*OCT 
*          START NPU FUNCTION ERROR 
*          ABORTED
* 
*    REGISTER USAGE - 
* 
*          B0 - CONTAINS THE ERROR MESSAGE NUMBER 
* 
*    MODULES CALLED 
* 
*          NONE 
* 
* 
 1 FORMAT TFL01F - CLEAR NPU FUNCTION ERROR 
 2 FORMAT TFL01F - CLEAR COUPLER FUNCTION ERROR 
 3 FORMAT TFL01F - READ COUPLER STATUS, .FUNCTION. ERROR
 4 FORMAT TFL01F - READ COUPLER STATUS, .STATUS. ERROR
 5 FORMAT TFL01F - READ NPU STATUS, .FUNCTION. ERROR
 6 FORMAT TFL01F - READ NPU STATUS, .STATUS.  ERROR 
 7 FORMAT TFL01F - LOAD MAR-0 FUNCTION ERROR
10 FORMAT TFL01F - LOAD MAR-0 .OUT. COMMAND ERROR 
11 FORMAT TFL01F - LOAD MAR-1 FUNCTION ERROR
12 FORMAT TFL01F - LOAD MAR-1 .OUT. COMMAND ERROR 
13 FORMAT TFL01F - OUTPUT PROGRAM FUNCTION ERROR
14 FORMAT TFL01F - OUTPUT PROGRAM, .OUTB. COMMAND ERROR 
15 FORMAT TFL01F - OUTPUT PROGRAM BAD COUPLER STATUS (*OCT) 
16 FORMAT TFL01F - OUTPUT WT ERROR - EXP=400  ACT=*OCT
17 FORMAT TFL01F - INPUT PROGRAM FUNCTION ERROR 
20 FORMAT TFL01F - INPUT PROGRAM, .INB. COMMAND ERROR 
21 FORMAT TFL01F - INPUT PROGRAM BAD COUPLER STATUS (*OCT)
22 FORMAT TFL01F - INPUT WT ERROR - EXP=400  ACT=*OCT 
23 FORMAT TFL01F - START NPU FUNCTION ERROR 
26 FORMAT TFL      ABORTED --ERRORS-- 
27 FORMAT --------------------------------------------------- 
* 
*--------- PROCESS ERRORS 
* 
30 IF (B0 .EQ. 15) GOTO 40
   IF (B0 .EQ. 21) GOTO 40
   IF (B0 .EQ. 16) GOTO 45
   IF (B0 .EQ. 22) GOTO 45
   MSG B0 TO LINE 1 
   MSG EM TO LINE 2 
   MSG 26 TO LINE 3 
   GOTO 76
* 
40 MSG B0 (OB(402)) TO LINE 1 
   MSG 26 TO LINE 2 
   GOTO 76
* 
45 MSG B0 (B7) TO LINE 1
76 MSG 26 TO DAYFILE
   PICTURE
   MSG 27 TO PRINT
* 
   EXIT                           *RETURN TO CALLING MODULE 
*IF DEF,DEBUG 
* 
   IF (P1 .EQ. 0) GOTO 77    *IF NOT DEBUG EXIT 
   EXIT TO 01D
*ENDIF
   END 30 
* 
* 
* 
COMPILE   - TFL01F -
*IF DEF,DEBUG 
* 
   MODULE TFL01D,6000(64),LOCK    *DEBUG MODULE 
* 
* 
* 
 1 FORMAT B0 (ERR MSG NBR) = *OCT 
 2 FORMAT B1 (RUN ERR CTR) = *DEC 
 3 FORMAT B2 (BLK ERR CTR) = *DEC 
 4 FORMAT B3 (SCRATCH) = *OCT 
 5 FORMAT B4-7 (SCRATCH) = *OCT *OCT *OCT *OCT
11 FORMAT IB(0-3) = *OCT *OCT *OCT *OCT 
12 FORMAT IB(374-377) = *OCT *OCT *OCT *OCT 
13 FORMAT OB(0-3) = *OCT *OCT *OCT *OCT 
14 FORMAT OB(374-377) = *OCT *OCT *OCT *OCT 
15 FORMAT OB(400) /MAR-0/ = *OCT
16 FORMAT OB(401) /MAR-1/ = *OCT
17 FORMAT OB(402) /MASKED CPLR STATUS/ = *OCT 
20 FORMAT SB(0) /CPLR STATUS/ = *OCT
23 FORMAT WT = *OCT 
* 
* 
* 
31 MSG 1 (B0) TO PRINT
   MSG 2 (B1) TO PRINT
   MSG 3 (B2) TO PRINT
   MSG 4 (B3) TO PRINT
   MSG 5 (B4,B5,B6,B7) TO PRINT 
   MSG 11 (IB(0),IB(1),IB(2),IB(3)) TO PRINT
   MSG 12 (IB(374),IB(375),IB(376),IB(377)) TO PRINT
   MSG 13 (OB(0),OB(1),OB(2),OB(3)) TO PRINT
   MSG 14 (OB(374),OB(375),OB(376),OB(377)) TO PRINT
   MSG 15 (OB(400)) TO PRINT
   MSG 16 (OB(401)) TO PRINT
   MSG 17 (OB(402)) TO PRINT
   MSG 20 (SB(0)) TO PRINT
   MSG 23 (WT) TO PRINT 
* 
* 
* 
   PAUSE
   GOTO 31
* 
* 
* 
77 END 31 
* 
* 
* 
COMPILE   - TFL01D -
*ENDIF
* 
* 
* 
   MODULE TFL99,6000(64),LOCK       *TFL DOCUMENTATION
1  FORMAT COPYRIGHT CONTROL DATA CORP. 1980 
/ 
/------ NO CONTROLWARE/FIRMWARE IS NEEDED TO RUN TFL ------ 
/ 
/ 
/ 
/         TFL- 2550 OFF-LINE DIAGNOSTIC LOADER
/ 
/         RESTRICTIONS
/         ------------
/         THE TFL LOADER WILL NOT LOAD DIAGNOSTICS VIA A
/         2550-100 COUPLER OR TO A REMOTE 2550. 
/ 
/---------WARNING---------
/         THE NEW BINARY FOR
/         THE ODS DIAGNOSTIC, MPRTC, REQUIRES THAT THE
/         1700 TRANSFORM BE ONE OF THE FOLLOWING- 
/         96752129, 96735700, 96752601, 96752604, 96837727, OR
/         96720404(LATEST VERSION). 
/ 
/          TFL MODULES
/          -----------
/ 
/          TFL01  - MAIN LOGIC
/          TFL01A - EOR/EOI PROCESSING
/          TFL01E - DATA ERROR PROCESSOR
/          TFL01F - NPU COUPLER ERROR PROCESSOR 
/ 
/          OPERATIONAL PROCEDURE
/          ---------------------
/ 
/         TFL01 IS THE ONLY MODULE TO BE SELECTED TO RUN. 
/         THE ACTUAL DIAGNOSTIC PROGRAM TO BE LOADED INTO 
/         THE 2550 AND EXECUTED IS SELECTED BY ASSIGNING
/         THE DIAGNOSTIC FILE NAME TO THE MALET SCRATCH 
/         FILE. 
/ 
/          THE CONTROL STATEMENTS WOULD BE AS FOLLOWS:  
/ 
/          ATTACH,TFL,FILENAME. 
/          MALET,R=TFL,S=FILENAME.
/          ASSIGN,EST=YY,AL=20. 
/          PARAM,TL=7777,P0=X.
/          RUN TFL. 
/ 
/          WHERE:  TFL      = THE COMPILED TFL BINARY 
/                  FILENAME = THE DIAGNOSTIC FILE TO BE 
/                             LOADED.  THE FILE NAMES ARE 
/                             LISTED BELOW. 
/ 
/                  YY       = THE EST ORDINAL OF THE 2550 
/                             TO BE LOADED. 
/ 
/                  X        = 0 (DEFAULT) START NPU AFTER 
/                               LOADING.
/                           = NON ZERO - DO NOT START NPU 
/                             AFTER LOADING.
/ 
/          A MESSAGE WILL BE SENT TO THE DAYFILE WHEN THE 
/          LOAD HAS BEEN TERMINATED. A *LOAD COMPLETE* OR 
/          *LOAD COMPLETE, (  ) RECOVERED ERRORS* MESSAGE 
/          INDICATES A SUCCESSFUL LOAD.  AN *ABORTED* 
/          MESSAGE INDICATES AN UNSUCCESSFUL LOAD.
/          INTERROGATE THE MALET ERROR FILE TO DETERMINE
/          THE REASON FOR THE ABORT.
/ 
/          2550 DIAGNOSTIC FILE NAMES 
/          ---------------------------- 
/ 
/          ODS V2 (DPSR LEVEL 114) DIAGNOSTICS
/ 
/          LDCHK3 - LOADCHECK 
/          MPINS  - MACRO INSTRUCTION TEST
/          MPMOS  - MOS MEMORY STORAGE/ADDRESSING TEST
/          MOSMA  - MOS MEMORY PARITY/PROTECT TEST
/          MPRTC  - PROTECT TEST
/          MIMEM  - MICRO MEMORY READ/WRITE TEST
/          MIINS  - MICRO INSTRUCTION TEST
/          PAGE1  - MEMORY PAGE FILE TEST 
/ 
/          MSMP17 DIAGNOSTICS 
/ 
/          CEL042 - CYCLIC ENCODER TEST 
/          MST041 - MULTIPLEX SUBSYSTEM TEST
/          CPL040 - 6000 COUPLER TEST 
/          CPLX40 - EXPANSION COUPLER TEST
/          TTYA08 - CRT/TTY CONSOLE TEST
/ 
/          CCP 1.0 DIAGNOSTICS
/ 
/          CCP48K - CCP 1.0 DIAGNOSTICS 
/ 
/          UTILITYS 
/ 
/          UTOPIA - UTILITY ROUTINES
/ 
/ 
/          PARAMETERS 
/          ---------- 
/ 
/          P0  -  START NPU AFTER LOAD
/ 
/                 .EQ. 0 - START NPU AFTER LOAD (DEFAULT).
/                 .NE. 0 - DO NOT START NPU AFTER LOAD
/ 
10 END 10 
COMPILE,SOURCE
