*DECK FTP 
*** FTP - A 580 FASTRAIN PRINTER DIAGNOSTIC 
*** EXTERNAL DOCUMENTATION
**
* 
*   AUTHOR - K. SMITH, SR. DIAGNOSTIC ENGINEER
*            MAINTENANCE SOFTWARE ENGINEERING 
* 
*   OVERVIEW - *FTP* IS A 580 FASTRAIN PRINTER DIAGNOSTIC BASED ON THE
*              PP COMPASS ON LINE DIAGNOSTIC *FTP*. IT IS WRITTEN IN
*              *MALET* LANGUAGE. IT RUNS ON THE 580-12, 580-16, 580-20, 
*              580-120, 580-160 AND 580-200 FASTRAIN LINE PRINTERS. IT
*              SUPPORTS ALL SIX TRAIN ARRAY TYPES, 596-1 THRU 596-6.
*              DIAGNOSTIC *FTP* REPLACES THE OLD PP COMPASS DIAGNOSTICS 
*              *PFC* AND *FTP* (RUNNING UNDER *KEDIAG/CEDIAG*) AND THE
*              DIAGNOSTIC *AIDFTP* RUNNING UNDER *AID/ORD*. 
* 
*   CALL - RUN FTP             (CONFIDENCE LEVEL TESTS 00-13) 
* 
*          RUN FTP20           (FUNCTIONAL LEVEL TESTS 20-47) 
* 
*            OR 
* 
*          RUN FTP(07,10,05)   (SELECTED TESTS) 
* 
* 
*   NOTES - 1. RUN FTP20 MUST BE ENTERED FIRST IF TRAIN IMAGE 
*              MEMORY OR PFC MEMORY HAS NOT BEEN INITIALIZED. 
*           2. ACCESS LEVEL 10 IS REQUIRED FOR MODULES
*              FTP13,20-23,26-31. 
*           3. THE MESSAGE -LC*DEC EC*DEC ST*OCT- IS POSTED 
*              BY ALL MODULES TO INDICATE A -WAITING FOR
*              READY NOT BUSY- STATE. THE LOOP (LC) AND ERROR (EC)
*              COUNTS WILL BE INCREMENTED WHERE SCOPE LOOPS ARE 
*              APPROPRIATE. 
* 
*   THE PAPER IN THE PRINTER ON WHICH *FTP* IS TO BE EXECUTED SHOULD BE 
*   MAUALLY POSITIONED AFTER A PAGE EJECT. THIS POSITIONING IS NOT ONLY 
*   NECESSARY FOR THE PRINTOUT TO START ON A FRESH PAGE BUT ALSO IT IS
*   CRITICAL FOR THE FORMAT CONTROL MEMORY TO BE LOADED PROPERLY ON A 
*   PROGRAMMABLE FORMAT CONTROL PRINTER. IF THE FORMAT CONTROL MEMORY 
*   IS LOADED WHEN THE PRINTER IS NOT POSITIONED AT A 6/8 LINE COINCI-
*   DENT POINT IT DROPS READY AND HANGS WITH MEMORY BUSY. THE PAGE
*   EJECT ASSURES THAT THE PRINTER IS POSITIONED AT A 6/8 LINE COINCI-
*   DENT POINT. THE PRINTER SHOULD BE IN A START MODE AND LOGICALLY 
*   OFF TO THE SYSTEM BEFORE *FTP* CAN BE RUN.
* 
*   PARAMETERS -
* 
* 
*         P0 - TRAIN ARRAY TYPE.  NUMBERS 1 THRU 6 ARE USED FOR 
*              TRAIN ARRAY TYPES 596-1 THRU 596-6. IF P0 CONTAINS 
*              ZERO, TRAIN ARRAY TYPE 1 IS ASSUMED. 
* 
*         P1 - STARTING CODE FOR *FULL LINES OF CHARACTERS* SECTION.
*              ZERO VALUE IMPLIES ZERO CHARACTER (EG,60B FOR TRAIN 6).
* 
*         P2 - RANDOM SEED VALUE FOR *RANDOM PRINT* SECTION.
*              IF A ZERO VALUE IS ENTERED, THE REAL TIME CLOCK WILL 
*              BE USED AS THE STARTING SEED.
* 
*         P3 - PAPER SIZE FOR LOADING PFC MEMORY. SET P3 = 8 FOR
*              8.5 INCH PAPER, P3=11 FOR 11 INCH PAPER, OR P3=12
*              FOR 12 INCH PAPER. DEFAULT IS FOR 11 INCH PAPER. 
* 
*         P7 - PRINT LINE COUNT FOR *BURST SPEED TEST* SECTION. 
*              IF A NONZERO VALUE IS ENTERED, BURST SPEED PRINTING
*              CONTINUES UNTIL THAT NUMBER OF LINES HAS BEEN PRINTED. 
*              IF A ZERO VALUE IS ENTERED, 240 LINES ARE PRINTED. 
* 
* 
*   MODULE DESCRIPTIONS 
* 
*       CONFIDENCE LEVEL TESTS (NO SCOPE LOOPS) 
* 
*          FTP00 - RIPPLE PATTERN LEFT
* 
*          FTP01 - RIPPLE PATTERN RIGHT 
* 
*          FTP02 - SPACE-ZERO PATTERN 
* 
*          FTP03 - M-W PATTERN
* 
*          FTP04 - FULL LINES OF CHARACTERS 
* 
*          FTP05 - VARIABLE LENGTH LINES
* 
*          FTP06 - DEPICT SUBSCANS
* 
*          FTP07 - WORST PATTERN
* 
*          FTP08 - EXTENDED ARRAY TEST
* 
*          FTP09 - BUFFER MEMORY TEST 
* 
*          FTP10 - IMAGE MEMORY AND TRAIN CHECK 
* 
*          FTP11 - PRINT ZERO IN COLUMN 1 
* 
*          FTP12 - RANDOM PRINT 
* 
*          FTP13 - PRINT WHILE BUSY 
* 
*       FUNCTIONAL LEVEL TESTS (SCOPE LOOPS AS APPROPRIATE) 
* 
*          FTP20 - CONNECT AND STATUS CHECK 
* 
*          FTP21 - CHECK TRANSMISSION PATH
* 
*          FTP22 - CHECK LEGAL FUNCTIONS
* 
*          FTP23 - CHECK ILLEGAL FUNCTIONS
* 
*          FTP24 - LOAD TRAIN ARRAY MEMORY
* 
*          FTP25 - LOAD PFC MEMORY
* 
*          FTP26 - CHECK 6 LPI PFC UNDERFLOW
* 
*          FTP27 - CHECK 8 LPI PFC UNDERFLOW
* 
*          FTP28 - CHECK 6 LPI PFC POSTPRINT INHIBIT ERROR
* 
*          FTP29 - CHECK 8 LPI PFC POSTPRINT INHIBIT ERROR
* 
*          FTP30 - CHECK 6 LPI PFC PREPRINT INHIBIT ERROR 
* 
*          FTP31 - CHECK 8 LPI PFC PREPRINT INHIBIT ERROR 
* 
*          FTP32 - CHECK RNB INT - PART 1 
* 
*          FTP33 - CHECK RNB INT - PART 2 
* 
*          FTP34 - CHECK RNB INT - PART 3 
* 
*          FTP35 - CHECK EOP INT - PART 1 
* 
*          FTP36 - CHECK EOP INT - PART 2 
* 
*          FTP37 - CHECK EOP INT - PART 3 
* 
*          FTP38 - CHECK ABN EOP INT
* 
*          FTP40 - CHECK SUPPRESS SPACE FUNCTION
* 
*          FTP41 - CHECK COINCIDENT POINTS AND FORMAT LEVEL 9 
* 
*          FTP42 - CHECK PAGE EJECT AND ADVANCE TO LAST LINE FUNCTIONS
* 
*          FTP43 - CHECK AUTO PAGE EJECT
* 
*          FTP44 - CHECK SINGLE SPACE OPERATION 
* 
*          FTP45 - CHECK DOUBLE SPACE OPERATION 
* 
*          FTP46 - CHECK POSTPRINT FORMAT SPACING 
* 
*          FTP47 - CHECK PREPRINT FORMAT SPACING
* 
*       SPECIAL PURPOSE TESTS 
* 
*          FTP50 - BURST SPEED TEST 
* 
*          FTP51 - TIME TRAIN HOME PULSE
* 
*          FTP52 - TIME PAPER SLEW
* 
* 
*   ERROR MESSAGE FORMATS 
* 
*         A SAMPLE ERROR INDICATION FOLLOWS_
* 
* 
* 
*         FTP34 ERROR CODE 0104 AT LINE 0037
* 
*         SELECTED READY-AND-NOT-BUSY INTERRUPT 
*         DURING A PRINT OPERATION. EXPECTED INT. 
* 
*         ACTUAL STATUS = 4003, EXPECTED = 4201 
* 
*         UNEXPECTED STATUS BIT 0001
*         ----------1- BUSY 
*         MISSING STATUS BIT 0007 
*         ----1------- READY-NOT-BUSY INTERRUPT 
* 
*         CH=*OCT, EQ=*OCT, UN=*OCT, LF=*OCT, DC=*OCT 
*         ERRCNT=*OCT, WDCNT=*OCT, WDS XMITTED=*OCT 
*         668X STATUS=*OCT, PRINTER STATUS=*OCT *OCT
*         . . . . . . . . . . . . . . . . . . . . . . 
* 
* 
* 
* 
*         APPROPRIATE VALUES ARE INSERTED FOR *OCT. 
* 
* 
*   ABBREVIATIONS 
* 
*         ABN         ABNORMAL
* 
*         CALC        CALCULATE 
* 
*         CH          CHANNEL 
* 
*         CHAR        CHARACTER 
* 
*         COINC       COINCIDENT
* 
*         DC          DEVICE CODE 
* 
*         DISPL       DISPLAY 
* 
*         EOP         END OF OPERATION
* 
*         EQ          EQUIPMENT 
* 
*         ERR         ERROR 
* 
*         ERCNT       ERROR COUNT 
* 
*         ERRCNT      ERROR COUNT 
* 
*         FCN         FUNCTION
* 
*         FTI         FASTRAIN-I (580-12,580-120) 
* 
*         FTII        FASTRAIN-II (580-16,580-160)
* 
*         FTIII       FASTRAIN-III (580-20,580-200) 
* 
*         INIT        INITIALIZE
* 
*         INT         INTERRUPT 
* 
*         LC          LOOP COUNT
* 
*         LF          LAST FUNCTION 
* 
*         LPI         LINES PER INCH
* 
*         MAINT       MAINTENANCE 
* 
*         MSG         MESSAGE 
* 
*         PFC         PROGRAMMABLE FORMAT CONTROL 
* 
*         REG         REGULAR 
* 
*         RNB         READY AND NOT BUSY
* 
*         STAT        STATUS
* 
*         UN          UNIT
* 
*         W/          WITH
* 
*         WDCNT       WORD COUNT
* 
*         WDS XMITTED WORDS TRANSMITTED 
* 
*  *********************************************************
*  *********************************************************
*  *********************************************************
   MODULE FTP00 580(23,24,25,26,27,30),LOCK 
*** RIPPLE PATTERN LEFT 
**
* 
* 
*   OVERVIEW - MODULE *FTP00* PRINTS ALL CHARACTERS IN ALL PRINT
*              POSITIONS. 
* 
* 
* 
* 
*   DESCRIPTION - RIPPLE PATTERN LEFT 
* 
*         1.  CONNECT AND CHECK STATUS
*         2.  CLEAR FORMAT SELECTION
*         3.  PAGE EJECT
*         4.  IF TRAIN TYPE 6, SELECT EXTENDED ARRAY
*         5.  SELECT 8 LINES PER INCH 
*         6.  PAGE EJECT
*         7.  PRINT COLUMN NUMBERS
*         8.  CONNECT AND CHECK STATUS
*         9.  SELECT ABNORMAL E-O-P INTERRUPT 
*         10. SELECT E-O-P INTERRUPT
*         11. PRINT RIPPLE PATTERN
*         12. SELECT READY-AND-NOT-BUSY INTERRUPT 
*         13. VERIFY STATUS IS READY AND BUSY 
*         14. WAIT NOT BUSY 
*         15. CALCULATE EXPECTED COINCIDENT STATUS
*         16. VERIFY COINCIDENT STATUS AS EXPECTED
*         17. VERIFY E-O-P AND R-N-B INTERRUPT
*         18. SHIFT PATTERN LEFT ONE CHARACTER
*         19. REPEAT FROM STEP 8 UNTIL LAST LINE STATUS OR 88 LINES 
*         20. SELECT 6 LINES PER INCH 
*         21. REPEAT FROM STEP 6 ONCE 
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON RESERVE
*         2.  ABORT ON SELECT 
*         3.  ABORT ON STATUS 
*         4.  ABORT ON PRINT
*         5.  ABORT ON EJECT
*         6.  SELECTED RNBINT AFTER INITIATING A PRINT. 
*             EXPECT READY,BUSY AND NO INTERRUPT. (123) 
*         7.  MISSING COINCIDENT STATUS (125) 
*         8.  UNEXPECTED COINCIDENT STATUS (126)
*         9.  UNEXPECTED STATUS AFTER PRINT WITH END-OF-OPERATION 
*             AND READY-NOT-BUSY INTERRUPTS SELECTED (127)
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (RES) AT LINE *OCT 
*         2.  ABORT ON (SELECT) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (PRINT) AT LINE *OCT 
*         5.  ABORT ON (EJECT) AT LINE *OCT 
*         6.  SELECTED RNBINT AFTER INITIATING A PRINT. 
*             EXPECT READY,BUSY AND NO INTERRUPT. 
*         7.  EXPECTED COINCIDENT STATUS
*         8.  EXPECTED NO COINCIDENT STATUS 
*         9.  EXECUTED PRINT WITH END-OF-OPERATION
*             AND READY-NOT-BUSY INTERRUPTS SELECTED. 
* 
* 
*** INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE
* 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP97A - ERROR PROCESSOR
*         FTP97Z - ERROR PROCESSOR
*         FTP98B - GENERATE RIPPLE PATTERN
*         FTP98C - GENERATE COLUMN NUMBERS
* 
* 
**********************************************************************
/  THIS MODULE PRINTS A RIPPLE PATTERN
1  FORMAT FTP00 RIPPLE PATTERN LEFT 
2  FORMAT FTP00 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP00 ABORT ON (RES) AT LINE *OCT 
4  FORMAT FTP00 ABORT ON (SELECT) AT LINE *OCT
5  FORMAT FTP00 ABORT ON (STATUS) AT LINE *OCT
6  FORMAT FTP00 ABORT ON (PRINT) AT LINE *OCT 
11 FORMAT FTP00 ABORT ON (EJECT) AT LINE *OCT 
15 FORMAT FTP00 ERROR CODE *OCT AT LINE *OCT
17 FORMAT *DEC ERROR(S) IN FTP00
20 MSG 1 TO PRINT 
22 MSG 1 TO DISPLAY 
   B3=4                      *SET NO. OF LINES/COINC. 
24 GOSUB 60                  *CONNECT 
   B4=4 
   SELECT CLEAR,ABT 74
   IF(P0.NE.6)GOTO 26 
   SELECT EXTENDED,ABT 74 
26 SELECT 8LPI,ABT 74 
   B4=11
   EJECT,ABT 74 
30 CALL 98C                  *GENERATE PAGE HEADING DATA
   GOSUB 60 
   B4=11
   EJECT,ABT 74              *TOP OF FORM 
   B4=6 
   PRINT,ABT 74              *PRINT COLUMN NUMBERS
   CALL 98B                  *GENERATE RIPPLE PATTERN 
   B0=0 
   IF(B3.EQ.4)GOTO 32        *IF 8 LPI
   IF(DC.GE.26)GOTO 32       *IF PFC PRINTER
   B2=B2+1                   *6 LPI TOP OF FORM IS 1 OFF
32 GOSUB 60 
   B4=4 
   SELECT AEOPINT,ABT 74
   SELECT EOPINT,ABT 74 
   B4=6 
   PRINT,ABT 74 
   B4=4 
   SELECT RNBINT,ABT 74 
   B4=5 
   STATUS,ABT 74
   IF(SB(1).AND.3717.NE.103)ERROR 15/123,GOSUB 71 
   B1=0 
34 B4=5 
   STATUS,ABT 74
   IF(SB(1).AND.2.EQ.0)GOTO 35  *IF NOT BUSY
   DELAY 100 MSEC 
   GOTO 34 WHILE (B1+1.LE.40)   *WAIT FOR NOT BUSY
35 B2=B2+1
   IF(B2.LT.B3)GOTO 36       *IF NO COINCIDENT EXPECTED 
   IF(SB(1).AND.4000.NE.0)GOTO 40  *IF COINCIDENT STATUS
   ERROR 15/125,GOSUB 71     *MISSING COINCIDENT STATUS 
   GOTO 37
36 IF(SB(1).AND.4000.EQ.0)GOTO 42  *IF NO COINCIDENT STATUS 
   ERROR 15/126,GOSUB 71     *UNEXPECTED COINCIDENT STATUS
37 B2=0                      *GET IN SYNC WITH PRINTER
   GOTO 44
40 B2=0                      *GET IN SYNC WITH PRINTER
42 IF(SB(1).AND.3717.NE.601)ERROR 15/127,GOSUB 71  *NO INT
44 IF(SB(1).AND.20.NE.0)GOTO 50  *END IF LAST LINE STATUS 
   B4=OB(0) 
   SHIFT OB(1) LEFT FOR B4
   IF(P0.NE.6)GOTO 46 
   SHIFT OB(1) LEFT FOR B4
46 GOTO 32 WHILE (B0+1.LT.130)
50 IF(B3.NE.4)GOTO 54 
   B3=3                      *SET NO. OF LINES/COINC. 
   B4=4 
   SELECT 6LPI,ABT 74 
   GOTO 30
/  EXIT SEQUENCE
54 IF(ES.AND.RM NE 0)GOTO 22    *IF REPEAT MODULE 
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 EXIT 
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 97A 
   B4=3 
   RES,ABT 74                *RECONNECT 
72 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP01 580(23,24,25,26,27,30),LOCK 
*** RIPPLE PATTERN RIGHT
**
* 
* 
*   OVERVIEW - MODULE *FTP01* PRINTS ALL CHARACTERS IN ALL PRINT
*              POSITIONS. 
* 
* 
* 
* 
*   DESCRIPTION - RIPPLE PATTERN RIGHT
* 
*         1.  CONNECT AND CHECK STATUS
*         2.  CLEAR FORMAT SELECTION
*         3.  PAGE EJECT
*         4.  IF TRAIN TYPE 6, SELECT EXTENDED ARRAY
*         5.  SELECT 8 LINES PER INCH 
*         6.  PAGE EJECT
*         7.  PRINT COLUMN NUMBERS
*         8.  CONNECT AND CHECK STATUS
*         9.  SELECT ABNORMAL E-O-P INTERRUPT 
*         10. SELECT E-O-P INTERRUPT
*         11. PRINT RIPPLE PATTERN
*         12. SELECT READY-AND-NOT-BUSY INTERRUPT 
*         13. VERIFY STATUS IS READY AND BUSY 
*         14. WAIT NOT BUSY 
*         15. CALCULATE EXPECTED COINCIDENT STATUS
*         16. VERIFY COINCIDENT STATUS AS EXPECTED
*         17. VERIFY E-O-P AND R-N-B INTERRUPT
*         18. SHIFT PATTERN RIGHT ONE CHARACTER 
*         19. REPEAT FROM STEP 8 UNTIL LAST LINE STATUS OR 88 LINES 
*         20. SELECT 6 LINES PER INCH 
*         21. REPEAT FROM STEP 6 ONCE 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON RESERVE
*         2.  ABORT ON SELECT 
*         3.  ABORT ON STATUS 
*         4.  ABORT ON PRINT
*         5.  ABORT ON EJECT
*         6.  SELECTED RNBINT AFTER INITIATING A PRINT. 
*             EXPECT READY,BUSY AND NO INTERRUPT. (123) 
*         7.  MISSING COINCIDENT STATUS (125) 
*         8.  UNEXPECTED COINCIDENT STATUS (126)
*         9.  UNEXPECTED STATUS AFTER PRINT WITH END-OF-OPERATION 
*             AND READY-NOT-BUSY INTERRUPTS SELECTED (127)
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (RES) AT LINE *OCT 
*         2.  ABORT ON (SELECT) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (PRINT) AT LINE *OCT 
*         5.  ABORT ON (EJECT) AT LINE *OCT 
*         6.  SELECTED RNBINT AFTER INITIATING A PRINT. 
*             EXPECT READY,BUSY AND NO INTERRUPT. 
*         7.  EXPECTED COINCIDENT STATUS
*         8.  EXPECTED NO COINCIDENT STATUS 
*         9.  EXECUTED PRINT WITH END-OF-OPERATION
*             AND READY-NOT-BUSY INTERRUPTS SELECTED. 
* 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP97A - ERROR PROCESSOR
*         FTP97Z - ERROR PROCESSOR
*         FTP98B - GENERATE RIPPLE PATTERN
*         FTP98C - GENERATE COLUMN NUMBERS
* 
* 
**********************************************************************
/  THIS MODULE PRINTS A RIPPLE PATTERN
1  FORMAT FTP01 RIPPLE PATTERN RIGHT
2  FORMAT FTP01 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP01 ABORT ON (RES) AT LINE *OCT 
4  FORMAT FTP01 ABORT ON (SELECT) AT LINE *OCT
5  FORMAT FTP01 ABORT ON (STATUS) AT LINE *OCT
6  FORMAT FTP01 ABORT ON (PRINT) AT LINE *OCT 
11 FORMAT FTP01 ABORT ON (EJECT) AT LINE *OCT 
15 FORMAT FTP01 ERROR CODE *OCT AT LINE *OCT
17 FORMAT *DEC ERROR(S) IN FTP01
20 MSG 1 TO PRINT 
22 MSG 1 TO DISPLAY 
   B3=4                      *SET NO. OF LINES/COINC. 
24 GOSUB 60                  *CONNECT 
   B4=4 
   SELECT CLEAR,ABT 74
   IF(P0.NE.6)GOTO 26 
   SELECT EXTENDED,ABT 74 
26 SELECT 8LPI,ABT 74 
   B4=11
   EJECT,ABT 74 
30 CALL 98C                  *GENERATE PAGE HEADING DATA
   GOSUB 60 
   B4=11
   EJECT,ABT 74              *TOP OF FORM 
   B4=6 
   PRINT,ABT 74              *PRINT COLUMN NUMBERS
   CALL 98B                  *GENERATE RIPPLE PATTERN 
   B0=0 
   IF(B3.EQ.4)GOTO 32        *IF 8 LPI
   IF(DC.GE.26)GOTO 32       *IF PFC PRINTER
   B2=B2+1                   *6 LPI TOP OF FORM IS 1 LINE TOO FAR 
32 GOSUB 60 
   B4=4 
   SELECT AEOPINT,ABT 74
   SELECT EOPINT,ABT 74 
   B4=6 
   PRINT,ABT 74 
   B4=4 
   SELECT RNBINT,ABT 74 
   B4=5 
   STATUS,ABT 74
   IF(SB(1).AND.3717.NE.103)ERROR 15/123,GOSUB 71 
   B1=0 
34 B4=5 
   STATUS,ABT 74
   IF(SB(1).AND.2.EQ.0)GOTO 35  *IF NOT BUSY
   DELAY 100 MSEC 
   GOTO 34 WHILE (B1+1.LE.40)   *WAIT FOR NOT BUSY
35 B2=B2+1
   IF(B2.LT.B3)GOTO 36       *IF NO COINCIDENT EXPECTED 
   IF(SB(1).AND.4000.NE.0)GOTO 40  *IF COINCIDENT STATUS
   ERROR 15/125,GOSUB 71     *MISSING COINCIDENT STATUS 
   GOTO 37
36 IF(SB(1).AND.4000.EQ.0)GOTO 42  *IF NO COINCIDENT STATUS 
   ERROR 15/126,GOSUB 71     *UNEXPECTED COINCIDENT STATUS
37 B2=0                      *GET IN SYNC WITH PRINTER
   GOTO 44
40 B2=0                      *GET IN SYNC WITH PRINTER
41 IF(SB(1).AND.3717.NE.601)ERROR 15/127,GOSUB 71  *IF NO INTERRUPT STATUS
42 IF(SB(1).AND.20.NE.0)GOTO 50  *END IF LAST LINE STATUS 
   B1=OB(0)                  *INIT LOOP COUNTER FOR SHIFT 
   IB(0)=OB(0)               *SAVE PATTERN WORD COUNT 
   IF(P0.EQ.6)GOTO 44 
   OB(0)=OB(B1) AND 77       *PUT LAST CHAR BEFORE FIRST
43 OB(B1)=OB(B1) RS 6        *SHIFT RIGHT 
   B1=B1-1
   B4=OB(B1) AND 77 
   B4=B4 LS 6 
   OB(B1+1)=OB(B1+1)+B4 
   GOTO 43 WHILE (B1+0.GT.0)   *LOOP
   GOTO 46
44 OB(0)=OB(B1)              *PUT LAST CHAR BEFORE FIRST
45 B1=B1-1
   OB(B1+1)=OB(B1)           *SHIFT RIGHT 
   GOTO 45 WHILE (B1+0.GT.0)   *LOOP
46 OB(0)=IB(0)               *RESTORE PATTERN WORD COUNT
   GOTO 32 WHILE (B0+1.LT.130)
50 IF(B3.NE.4)GOTO 54 
   B3=3                      *SET NO. OF LINES/COINC. 
   B4=4 
   SELECT 6LPI,ABT 74 
   GOTO 30
/  EXIT SEQUENCE
54 IF(ES.AND.RM NE 0)GOTO 22    *IF REPEAT MODULE 
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 EXIT 
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 97A 
   B4=3 
   RES,ABT 74                *RECONNECT 
72 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP02 580(23,24,25,26,27,30),LOCK 
*** SPACE-ZERO PATTERN
**
* 
* 
*   OVERVIEW - MODULE *FTP02* PRINTS AN ALTERNATING SPACE-ZERO PATTERN. 
* 
* 
*   DESCRIPTION - SPACE-ZERO PATTERN
* 
*         1.  CONNECT AND CHECK STATUS
*         2.  CLEAR FORMAT SELECTION
*         3.  IF TRAIN TYPE 6, SELECT EXTENDED ARRAY
*         4.  SELECT 8 LINES PER INCH 
*         5.  PAGE EJECT
*         6.  PRINT COLUMN NUMBERS
*         7.  CONNECT AND CHECK STATUS
*         8.  PRINT SPACE-ZERO PATTERN
*         9.  WAIT NOT BUSY 
*         10. VERIFY NO ERROR STATUS
*         11. AFTER 44 LINES SELECT 6 LINES PER INCH
*             AT THE NEXT COINCIDENT POINT. 
*         12. REPEAT FROM STEP 8 UNTIL LAST LINE STATUS OR 88 LINES 
*         13. REPEAT FROM STEP 4 ONCE WITH ZERO-SPACE PATTERN 
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON RESERVE
*         2.  ABORT ON SELECT 
*         3.  ABORT ON STATUS 
*         4.  ABORT ON PRINT
*         5.  ABORT ON EJECT
*         6.  ABORT ON WAITNB 
*         7.  UNEXPECTED NOT READY AND NOT BUSY(100)
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (RES) AT LINE *OCT 
*         2.  ABORT ON (SELECT) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (PRINT) AT LINE *OCT 
*         5.  ABORT ON (EJECT) AT LINE *OCT 
*         6.  ABORT ON (WAITNB) AT LINE *OCT
*         7.  STATUS IS NOT READY AND NOT BUSY
* 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP97A - ERROR PROCESSOR
*         FTP97Z - ERROR PROCESSOR
*         FTP98C - GENERATE COLUMN NUMBERS
* 
* 
**********************************************************************
/  THIS MODULE PRINTS A SPACE-0 PATTERN 
1  FORMAT FTP02 SPACE-0 PATTERN 
2  FORMAT FTP02 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP02 ABORT ON (RES) AT LINE *OCT 
4  FORMAT FTP02 ABORT ON (SELECT) AT LINE *OCT
5  FORMAT FTP02 ABORT ON (STATUS) AT LINE *OCT
6  FORMAT FTP02 ABORT ON (PRINT) AT LINE *OCT 
7  FORMAT FTP02 ABORT ON (WAITNB) AT LINE *OCT
11 FORMAT FTP02 ABORT ON (EJECT) AT LINE *OCT 
15 FORMAT FTP02 ERROR CODE *OCT AT LINE *OCT
17 FORMAT *DEC ERROR(S) IN FTP02
20 MSG 1 TO PRINT 
22 MSG 1 TO DISPLAY 
   B3=0 
24 GOSUB 60                  *CONNECT 
   B4=4 
   SELECT CLEAR,ABT 74
   IF(P0.NE.6)GOTO 26 
   SELECT EXTENDED,ABT 74 
26 SELECT 8LPI,ABT 74 
   CALL 98C                  *GENERATE PAGE HEADINGS
   GOSUB 60 
   B4=11
   EJECT,ABT 74              *TOP OF FORM 
   B4=6 
   PRINT,ABT 74              *PRINT COLUMN NUMBERS
   GOSUB 61 
   B0=0                      *INIT LINE COUNTER 
   IF(P0.EQ.6)GOTO 32 
   WC=104                    *GENERATE PATTERN(TRAINS 1-5)
   IF(B3.NE.0)GOTO 30 
   DUP 6000 TO OB FOR 104    *FIRST PASS = SPACE-0
   GOTO 36
30 DUP 60 TO OB FOR 104      *SECOND PASS = 0-SPACE 
   GOTO 36
32 WC=210 
   IF(B3.NE.0)GOTO 34        *GENERATE PATTERN(TRAIN 6) 
   DUP 40/60 TO OB FOR 210
   GOTO 36
34 DUP 60/40 TO OB FOR 210
36 BA=0 
40 B4=6 
   PRINT WC WORDS FROM OB(0),ABT 74  *PRINT LINE
   B4=7 
   WAITNB,ABT 74
   IF(SB(1).AND.3717.NE.1)ERROR 15/100,GOSUB 71 
   B0=B0+1
   B4=4 
   IF(B0.GT.88D)GOTO 42      *STOP AFTER 88 LINES 
   IF(SB(1).AND.20.NE.0)GOTO 42  *OR END OF PAGE
   IF(B0.LT.44D)GOTO 40 
   IF(SB(1).AND.4000.EQ.0)GOTO 40  *SWITCH TO 6LPI AFTER
   IF(B3.AND.1.NE.0)GOTO 40        *HALF PAGE 
   B3=B3+1
   SELECT 6LPI,ABT 74 
   GOTO 40
42 GOTO 26 WHILE (B3+1.LT.4)  *PRINT 2 PAGES
/  EXIT SEQUENCE
54 IF(ES.AND.RM NE 0)GOTO 22    *IF REPEAT MODULE 
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 EXIT 
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 97A 
   B4=3 
   RES,ABT 74                *RECONNECT 
72 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP03 580(23,24,25,26,27,30),LOCK 
*** M-W PATTERN 
**
* 
* 
*   OVERVIEW - MODULE *FTP03* PRINTS AN ALTERNATING M-W PATTERN.
* 
* 
*   DESCRIPTION - M-W PATTERN 
* 
*         1.  CONNECT AND CHECK STATUS
*         2.  CLEAR FORMAT SELECTION
*         3.  IF TRAIN TYPE 6, SELECT EXTENDED ARRAY
*         4.  SELECT 8 LINES PER INCH 
*         5.  PAGE EJECT
*         6.  PRINT COLUMN NUMBERS
*         7.  CONNECT AND CHECK STATUS
*         8.  PRINT M-W PATTERN 
*         9.  WAIT NOT BUSY 
*         9.  VERIFY NO ERROR STATUS
*         10. AFTER 44 LINES SELECT 6 LINES PER INCH
*             AT THE NEXT COINCIDENT POINT. 
*         11. REPEAT FROM STEP 8 UNTIL LAST LINE STATUS OR 88 LINES 
*         12. REPEAT FROM STEP 4 ONCE WITH W-M PATTERN
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON RESERVE
*         2.  ABORT ON SELECT 
*         3.  ABORT ON STATUS 
*         4.  ABORT ON PRINT
*         5.  ABORT ON EJECT
*         6.  ABORT ON WAITNB 
*         7.  UNEXPECTED NOT READY AND NOT BUSY(100)
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (RES) AT LINE *OCT 
*         2.  ABORT ON (SELECT) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (PRINT) AT LINE *OCT 
*         5.  ABORT ON (EJECT) AT LINE *OCT 
*         6.  ABORT ON (WAITNB) AT LINE *OCT
*         7.  STATUS IS NOT READY AND NOT BUSY
* 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP97A - ERROR PROCESSOR
*         FTP97Z - ERROR PROCESSOR
*         FTP98C - GENERATE COLUMN NUMBERS
* 
* 
**********************************************************************
/  THIS MODULE PRINTS A M-W PATTERN 
1  FORMAT FTP03 M-W PATTERN 
2  FORMAT FTP03 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP03 ABORT ON (RES) AT LINE *OCT 
4  FORMAT FTP03 ABORT ON (SELECT) AT LINE *OCT
5  FORMAT FTP03 ABORT ON (STATUS) AT LINE *OCT
6  FORMAT FTP03 ABORT ON (PRINT) AT LINE *OCT 
7  FORMAT FTP03 ABORT ON (WAITNB) AT LINE *OCT
11 FORMAT FTP03 ABORT ON (EJECT) AT LINE *OCT 
15 FORMAT FTP03 ERROR CODE *OCT AT LINE *OCT
17 FORMAT *DEC ERROR(S) IN FTP03
20 MSG 1 TO PRINT 
22 MSG 1 TO DISPLAY 
   B3=0 
24 GOSUB 60                  *CONNECT 
   B4=4 
   SELECT CLEAR,ABT 74
   IF(P0.NE.6)GOTO 26 
   SELECT EXTENDED,ABT 74 
26 SELECT 8LPI,ABT 74 
   CALL 98C                  *GENERATE PAGE HEADINGS
   GOSUB 60 
   B4=11
   EJECT,ABT 74              *TOP OF FORM 
   B4=6 
   PRINT,ABT 74              *PRINT COLUMN NUMBERS
   GOSUB 61 
   B0=0                      *INIT LINE COUNTER 
   IF(P0.EQ.6)GOTO 32 
   WC=104                    *GENERATE PATTERN(TRAINS 1-5)
   IF(B3.NE.0)GOTO 30 
   DUP 4466 TO OB FOR 104    *FIRST PASS = M-W
   GOTO 36
30 DUP 6644 TO OB FOR 104    *SECOND PASS = W-M 
   GOTO 36
32 WC=210 
   IF(B3.NE.0)GOTO 34        *GENERATE PATTERN(TRAIN 6) 
   DUP 115/127 TO OB FOR 210
   GOTO 36
34 DUP 127/115 TO OB FOR 210
36 BA=0 
40 B4=6 
   PRINT WC WORDS FROM OB(0),ABT 74  *PRINT LINE
   B4=7 
   WAITNB,ABT 74
   IF(SB(1).AND.3717.NE.1)ERROR 15/100,GOSUB 71 
   B0=B0+1
   B4=4 
   IF(B0.GT.88D)GOTO 42      *STOP AFTER 88 LINES 
   IF(SB(1).AND.20.NE.0)GOTO 42  *OR END OF PAGE
   IF(B0.LT.44D)GOTO 40 
   IF(SB(1).AND.4000.EQ.0)GOTO 40  *SWITCH TO 6LPI AFTER
   IF(B3.AND.1.NE.0)GOTO 40        *HALF PAGE 
   B3=B3+1
   SELECT 6LPI,ABT 74 
   GOTO 40
42 GOTO 26 WHILE (B3+1.LT.4)  *PRINT 2 PAGES
/  EXIT SEQUENCE
54 IF(ES.AND.RM NE 0)GOTO 22    *IF REPEAT MODULE 
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 EXIT 
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 97A 
   B4=3 
   RES,ABT 74                *RECONNECT 
72 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP04 580(23,24,25,26,27,30),LOCK 
*** FULL LINES OF CHARACTERS
**
* 
* 
*   OVERVIEW - MODULE *FTP04* PRINTS FULL LINES OF A REPEATING CHARACTER
*              STARTING WITH THE CHARACTER CODE CONTAINED IN PARAMETER P1.
*              TWENTY LINES ARE PRINTED BEFORE INCREMENTING THE 
*              CHARACTER CODE.
* 
* 
*   DESCRIPTION - FULL LINES OF CHARACTERS
* 
*         1.  CONNECT AND CHECK STATUS
*         2.  CLEAR FORMAT SELECTION
*         3.  IF TRAIN TYPE 6, SELECT EXTENDED ARRAY
*         4.  PAGE EJECT
*         5.  PRINT COLUMN NUMBERS
*         6.  CONNECT AND CHECK STATUS
*         7.  GENERATE PRINT LINE OF CHARACTER
*         8.  PRINT LINE OF CHARACTERS
*         9.  WAIT NOT BUSY 
*         9.  VERIFY NO ERROR STATUS
*         10. REPEAT FROM STEP 8 UNTIL LAST LINE STATUS OR 20 LINES 
*         11. REPEAT FROM STEP 7 4 TIMES, INCREMENTING CHARACTER CODE 
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON RESERVE
*         2.  ABORT ON SELECT 
*         3.  ABORT ON STATUS 
*         4.  ABORT ON PRINT
*         5.  ABORT ON EJECT
*         6.  ABORT ON WAITNB 
*         7.  UNEXPECTED NOT READY AND NOT BUSY(100)
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (RES) AT LINE *OCT 
*         2.  ABORT ON (SELECT) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (PRINT) AT LINE *OCT 
*         5.  ABORT ON (EJECT) AT LINE *OCT 
*         6.  ABORT ON (WAITNB) AT LINE *OCT
*         7.  STATUS IS NOT READY AND NOT BUSY
* 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP97A - ERROR PROCESSOR
*         FTP97Z - ERROR PROCESSOR
*         FTP98C - GENERATE COLUMN NUMBERS
* 
* 
**********************************************************************
/  THIS MODULE PRINTS FULL LINES OF CHARACTERS(START IS P1) 
1  FORMAT FTP04 FULL LINES OF CHARACTERS
2  FORMAT FTP04 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP04 ABORT ON (RES) AT LINE *OCT 
4  FORMAT FTP04 ABORT ON (SELECT) AT LINE *OCT
5  FORMAT FTP04 ABORT ON (STATUS) AT LINE *OCT
6  FORMAT FTP04 ABORT ON (PRINT) AT LINE *OCT 
7  FORMAT FTP04 ABORT ON (WAITNB) AT LINE *OCT
11 FORMAT FTP04 ABORT ON (EJECT) AT LINE *OCT 
15 FORMAT FTP04 ERROR CODE *OCT AT LINE *OCT
17 FORMAT *DEC ERROR(S) IN FTP04
20 MSG 1 TO PRINT 
   B3=P1                     *SAVE STARTING CHARACTER 
   IF(P0.NE.6)GOTO 22        *IF NOT TRAIN 6
   IF(B3.NE.0)GOTO 22        *IF CHAR CODE NOT 0
   B3=60                     *DEFAULT CODE FOR ZERO 
22 MSG 1 TO DISPLAY 
24 GOSUB 60                  *CONNECT 
   B4=4 
   SELECT CLEAR,ABT 74
   IF(P0.NE.6)GOTO 26 
   SELECT EXTENDED,ABT 74 
26 CALL 98C                  *GENERATE PAGE HEADINGS
   GOSUB 60 
   B4=11
   EJECT,ABT 74              *TOP OF FORM 
   B4=6 
   PRINT,ABT 74              *PRINT COLUMN NUMBERS
   GOSUB 61 
   B1=0                      *INIT GROUP COUNT
30 B0=0                      *INIT LINE COUNTER 
   B4=B3+B1                  *FORM NEXT CHARACTER 
   IF(P0.EQ.6)GOTO 32 
   B4=B4 AND 77 
   B4=B4 LS 6 + B4           *GENERATE PRINT DATA(TRAINS 1-5) 
   DUP B4 TO OB FOR 104      *MAKE LINE 
   WC=104 
   GOTO 34
32 DUP B4 TO OB FOR 210      *GENERATE PRINT DATA(TRAIN 6)
   WC=210 
34 BA=0 
36 B4=6 
   PRINT WC WORDS FROM OB(0),ABT 74  *PRINT LINE OF CHAR
   B4=7 
   WAITNB,ABT 74
   IF(SB(1).AND.3717.NE.1)ERROR 15/100,GOSUB 71 
   IF(SB(1).AND.20.NE.0)GOTO 40  *EXIT IF END OF PAGE 
   GOTO 36 WHILE (B0+1.LT.20D)  *LOOP FOR 20 LINES
   GOTO 30 WHILE (B1+1.LT.4)    *LOOP FOR 4 GROUPS MAX
40 B3=B3+B1 
/  EXIT SEQUENCE
54 IF(ES.AND.RM NE 0)GOTO 22    *IF REPEAT MODULE 
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 EXIT 
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 97A 
   B4=3 
   RES,ABT 74                *RECONNECT 
72 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP05 580(23,24,25,26,27,30),LOCK 
*** VARIABLE LENGTH LINES 
**
* 
* 
*   OVERVIEW - MODULE *FTP05* PRINTS LINES VARYING IN LENGTH
*              FROM 2 TO 148 CHARACTERS 
* 
* 
*   DESCRIPTION - PRINT VARIABLE LENGTH LINES 
* 
*         1.  CONNECT AND CHECK STATUS
*         2.  CLEAR FORMAT SELECTION
*         3.  IF TRAIN TYPE 6, SELECT EXTENDED ARRAY
*         4.  PAGE EJECT
*         5.  PRINT COLUMN NUMBERS
*         6.  CONNECT AND CHECK STATUS
*         7.  GENERATE PRINT LINE 
*         8.  SELECT 6 LINES PER INCH 
*         9.  PRINT LINE OF CHARACTERS
*         10. WAIT NOT BUSY 
*         11. VERIFY NO ERROR STATUS
*         12. REPEAT FROM STEP 9, INCREASING LENGTH OF PRINT LINE 
*             UNTIL 150 CHARACTERS LONG 
*         13. SELECT 8 LINES PER INCH 
*         14. REPEAT FROM STEP 9, DECREASING LENGTH OF PRINT LINE 
*             UNTIL 2 CHARACTERS LONG.
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON RESERVE
*         2.  ABORT ON SELECT 
*         3.  ABORT ON STATUS 
*         4.  ABORT ON PRINT
*         5.  ABORT ON EJECT
*         6.  ABORT ON WAITNB 
*         7.  UNEXPECTED NOT READY AND NOT BUSY(100)
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (RES) AT LINE *OCT 
*         2.  ABORT ON (SELECT) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (PRINT) AT LINE *OCT 
*         5.  ABORT ON (EJECT) AT LINE *OCT 
*         6.  ABORT ON (WAITNB) AT LINE *OCT
*         7.  STATUS IS NOT READY AND NOT BUSY
* 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP97A - ERROR PROCESSOR
*         FTP97Z - ERROR PROCESSOR
*         FTP98B - GENERATE RIPPLE PATTERN
*         FTP98C - GENERATE COLUMN NUMBERS
* 
* 
**********************************************************************
/  THIS MODULE PRINTS VARIABLE LENGTH LINES 
1  FORMAT FTP05 VARIABLE LENGTH LINES 
2  FORMAT FTP05 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP05 ABORT ON (RES) AT LINE *OCT 
4  FORMAT FTP05 ABORT ON (SELECT) AT LINE *OCT
5  FORMAT FTP05 ABORT ON (STATUS) AT LINE *OCT
6  FORMAT FTP05 ABORT ON (PRINT) AT LINE *OCT 
7  FORMAT FTP05 ABORT ON (WAITNB) AT LINE *OCT
11 FORMAT FTP05 ABORT ON (EJECT) AT LINE *OCT 
15 FORMAT FTP05 ERROR CODE *OCT AT LINE *OCT
17 FORMAT *DEC ERROR(S) IN FTP05
20 MSG 1 TO PRINT 
22 MSG 1 TO DISPLAY 
24 GOSUB 60                  *CONNECT 
   B4=4 
   SELECT CLEAR,ABT 74
   IF(P0.NE.6)GOTO 26 
   SELECT EXTENDED,ABT 74 
26 CALL 98C                  *GENERATE PAGE HEADINGS
   GOSUB 60 
   B4=11
   EJECT,ABT 74              *TOP OF FORM 
   B4=6 
   PRINT,ABT 74              *PRINT COLUMN NUMBERS
   CALL 98B                  *GENERATE PRINT LINE(RIPPLE) 
   GOSUB 60 
   B4=4 
   SELECT 6LPI,ABT 74 
   BA=1 
   B0=0                      *INIT LENGTH CHANGE SWITCH 
   B1=1                      *INIT WORD COUNT 
34 WC=B1
   IF(P0.NE.6)GOTO 36 
   WC=WC LS 1 
36 B4=6 
   PRINT,ABT 74 
   B4=7 
   WAITNB,ABT 74
   IF(SB(1).AND.3717.NE.1)ERROR 15/100,GOSUB 71 
   IF(B0.NE.0)GOTO 42        *IF DECREASING 
   GOTO 34 WHILE (B1+1.LT.75D)  *INCREASE BY 2 FOR 74 LINES 
   IF(SB(1).AND.4000.EQ.0)GOTO 34  *WAIT FOR COINCIDENCE
   B4=4 
   SELECT 8LPI,ABT 74 
   B0=1                      *FLAG DECREASING LENGTH
42 GOTO 34 WHILE (B1-1.GT.0)  *LOOP TO 1 WORD LENGTH
/  EXIT SEQUENCE
54 IF(ES.AND.RM NE 0)GOTO 22    *IF REPEAT MODULE 
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 EXIT 
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 97A 
   B4=3 
   RES,ABT 74                *RECONNECT 
72 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP06 580(23,24,25,26,27,30),LOCK 
*** DEPICT SUBSCANS 
**
* 
* 
*   OVERVIEW - MODULE *FTP06* PRINTS LINES INDICATING WHICH TRAIN 
*              CHARACTERS CAN BE PRINTED DURING A SINGLE SUBSCAN
* 
* 
*   DESCRIPTION - DEPICT SUBSCANS 
* 
*         1.  CONNECT AND CHECK STATUS
*         2.  CLEAR FORMAT SELECTIONS 
*         3.  IF TRAIN TYPE 6, SELECT EXTENDED ARRAY
*         4.  PAGE EJECT
*         5.  PRINT COLUMN NUMBERS
*         6.  BUILD TRAIN IMAGE DATA (ALL CHARACTERS UNIQUE)
*         7.  SELECT EXTENDED ARRAY 
*         8.  FILL TRAIN IMAGE
*         9.  CALCULATE PRINT LINE FOR NEXT SUBSCAN 
*         10. WAIT FOR NOT BUSY STATUS
*         11. GO TO STEP 15 IF END OF PAGE STATUS AND NOT REPEAT MODULE 
*         12. PRINT SUBSCAN LINE
*         13. REPEAT FROM STEP 9 FOR 9 HAMMER LOCATIONS 
*         14. REPEAT FROM STEP 9 FOR ALL 384 TRAIN POSITIONS
*         15. RESTORE TRAIN IMAGE 
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON RESERVE
*         2.  ABORT ON SELECT 
*         3.  ABORT ON STATUS 
*         4.  ABORT ON PRINT
*         5.  ABORT ON WAITNB 
*         6.  ABORT ON EJECT
*         7.  ABORT ON FILL 
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (RES) AT LINE *OCT 
*         2.  ABORT ON (SELECT) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (PRINT) AT LINE *OCT 
*         5.  ABORT ON (WAITNB) AT LINE *OCT
*         6.  ABORT ON (EJECT) AT LINE *OCT 
*         7.  ABORT ON (FILL) AT LINE *OCT
* 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B2 - LINE COUNTER 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP97A - ERROR PROCESSOR
*         FTP97Z - ERROR PROCESSOR
*         FTP98C - GENERATE COLUMN NUMBERS
*         FTP98D - GENERATE TRAIN IMAGE DATA
* 
* 
**********************************************************************
/  THIS MODULE DEPICTS SUBSCANS 
1  FORMAT FTP06 DEPICT SUBSCANS 
2  FORMAT FTP06 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP06 ABORT ON (RES) AT LINE *OCT 
4  FORMAT FTP06 ABORT ON (SELECT) AT LINE *OCT
5  FORMAT FTP06 ABORT ON (STATUS) AT LINE *OCT
6  FORMAT FTP06 ABORT ON (PRINT) AT LINE *OCT 
7  FORMAT FTP06 ABORT ON (WAITNB) AT LINE *OCT
11 FORMAT FTP06 ABORT ON (EJECT) AT LINE *OCT 
12 FORMAT FTP06 ABORT ON (FILL) AT LINE *OCT
17 FORMAT *DEC ERROR(S) IN FTP06
20 MSG 1 TO PRINT 
   B3=0                      *SET STARTING TRAIN ADDRESS
22 MSG 1 TO DISPLAY 
   B2=0                      *CLEAR LINE COUNTER
24 GOSUB 60                  *CONNECT 
   B4=4 
   SELECT CLEAR,ABT 74
   IF(P0.NE.6)GOTO 26 
   SELECT EXTENDED,ABT 74 
26 CALL 98C                  *GENERATE PAGE HEADINGS
   GOSUB 60 
   B4=11
   EJECT,ABT 74              *TOP OF FORM 
   B4=6 
   PRINT,ABT 74              *PRINT COLUMN NUMBERS
   GOSUB 61 
   B0=0 
   B1=0 
34 OB(B0)=B1                 *STORE TRAIN IMAGE CHARACTER 
   GOTO 36 WHILE (B1+1.NE.40) 
   B1=B1+1                   *SKIP BLANK CODE 
36 GOTO 34 WHILE (B0+1.LT.384D)  *BUILD WHOLE TRAIN IMAGE 
   B4=4 
   SELECT EXTENDED,ABT 74 
   B4=12
   FILL IMAGE,ABT 74
40 B0=0                      *RESET COLUMN START
42 DUP 40 TO OB FOR 136D     *BLANK PRINT LINE
   B4=B0                     *SET COLUMN POINTER
   B1=B3+B0                  *CALC STARTING CHARACTER 
44 IF(B1.LT.384D)GOTO 50     *WATCH FOR WRAP-AROUND 
   B1=B1-384D 
50 OB(B4)=B1                 *STORE IN PRINT LINE 
   IF(B1.LT.40)GOTO 52
   OB(B4)=OB(B4)+1           *SKIP OVER SPACE CODE
52 B1=B1+8                   *CALC NEXT CHARACTER 
   GOTO 44 WHILE (B4+9.LT.136D)  *LOOP TILL LINE FILLED 
   B4=7 
   WAITNB,ABT 74
   IF(SB(1).AND.20.NE.0)GOTO 54  *EXIT AT END OF PAGE 
   GOTO 53 WHILE(B2+1.LE.88D) 
   GOTO 54       *EXIT 88 LINES PRINTED 
53 B4=6 
   PRINT 210 WORDS FROM OB(0),ABT 74  *PRINT NEXT LINE
   GOTO 42 WHILE(B0+1.LT.9)  *SHIFT RIGHT 1 HAMMER
   GOTO 40 WHILE(B3+1.LT.384D)  *NEXT CHAR FOR FIRST HAMMER 
   B3=B3-384D 
   GOTO 40                   *LOOP TILL END OF PAGE 
/  EXIT SEQUENCE
54 CALL 98D                  *RESTORE TRAIN IMAGE 
   GOSUB 60 
   B4=12
   FILL IMAGE,ABT 74
   IF(P0.EQ.6)GOTO 55 
   B4=4 
   SELECT CLREXT,ABT 74 
55 IF(ES.AND.RM.NE.0)GOTO 22  *REPEAT MODULE
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 EXIT 
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 97A 
   B4=3 
   RES,ABT 74                *RECONNECT 
72 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP07 580(23,24,25,26,27,30),LOCK 
*** WORST PATTERN 
**
* 
* 
*   OVERVIEW - MODULE *FTP07* PRINTS LINES THAT FIRE ALL ODD HAMMERS
*              ON PRINT SCAN 1 AND ALL EVEN HAMMERS ON PRINT SCAN 48. 
* 
* 
*   DESCRIPTION - WORST PATTERN 
* 
*         1.  CONNECT AND CHECK STATUS
*         2.  CLEAR FORMAT SELECTIONS 
*         3.  IF TRAIN TYPE 6, SELECT EXTENDED ARRAY
*         4.  PAGE EJECT
*         5.  PRINT COLUMN NUMBERS
*         6.  BUILD TRAIN IMAGE DATA (ALL CHARACTERS UNIQUE)
*         7.  SELECT EXTENDED ARRAY 
*         8.  FILL TRAIN IMAGE
*         9.  CALCULATE PRINT LINE
*         10. PRINT SUBSCAN LINE
*         11. WAIT NOT BUSY 
*         12. VERIFY NO ERROR STATUS
*         13. REPEAT FROM STEP 10 UNTIL END OF PAGE STATUS
*             OR 88 LINES HAVE BEEN PRINTED 
*         14. RESTORE TRAIN IMAGE 
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON RESERVE
*         2.  ABORT ON SELECT 
*         3.  ABORT ON STATUS 
*         4.  ABORT ON PRINT
*         5.  ABORT ON WAITNB 
*         6.  ABORT ON EJECT
*         7.  ABORT ON FILL 
*         8.  UNEXPECTED NOT READY AND NOT BUSY(100)
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (RES) AT LINE *OCT 
*         2.  ABORT ON (SELECT) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (PRINT) AT LINE *OCT 
*         5.  ABORT ON (WAITNB) AT LINE *OCT
*         6.  ABORT ON (EJECT) AT LINE *OCT 
*         7.  ABORT ON (FILL) AT LINE *OCT
*         8.  STATUS IS NOT READY AND NOT BUSY
* 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP97A - ERROR PROCESSOR
*         FTP97Z - ERROR PROCESSOR
*         FTP98C - GENERATE COLUMN NUMBERS
*         FTP98D - GENERATE TRAIN IMAGE DATA
* 
* 
**********************************************************************
/  THIS MODULE PRINTS A WORST PATTERN 
1  FORMAT FTP07 WORST PATTERN 
2  FORMAT FTP07 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP07 ABORT ON (RES) AT LINE *OCT 
4  FORMAT FTP07 ABORT ON (SELECT) AT LINE *OCT
5  FORMAT FTP07 ABORT ON (STATUS) AT LINE *OCT
6  FORMAT FTP07 ABORT ON (PRINT) AT LINE *OCT 
7  FORMAT FTP07 ABORT ON (WAITNB) AT LINE *OCT
11 FORMAT FTP07 ABORT ON (EJECT) AT LINE *OCT 
12 FORMAT FTP07 ABORT ON (FILL) AT LINE *OCT
15 FORMAT FTP07 ERROR CODE *OCT AT LINE *OCT
17 FORMAT *DEC ERROR(S) IN FTP07
   DATA(OB(0),CON)0,2,4,6,10,11,13,15,17  *CHAR SEQUENCE
20 MSG 1 TO PRINT 
   COPY OB TO IB FOR 11      *SAVE PRINT SEQUENCE 
22 MSG 1 TO DISPLAY 
24 GOSUB 60                  *CONNECT 
   B4=4 
   SELECT CLEAR,ABT 74
   IF(P0.NE.6)GOTO 26 
   SELECT EXTENDED,ABT 74 
26 CALL 98C                  *GENERATE PAGE HEADINGS
   GOSUB 60 
   B4=11
   EJECT,ABT 74              *TOP OF FORM 
   B4=6 
   PRINT,ABT 74              *PRINT COLUMN NUMBERS
   GOSUB 61 
   B0=0 
   B1=0 
34 OB(B0)=B1                 *STORE TRAIN IMAGE CHARACTER 
   GOTO 36 WHILE (B1+1.NE.40) 
   B1=41                     *SKIP BLANK CODE 
36 GOTO 34 WHILE (B0+1.LT.384D)  *BUILD WHOLE TRAIN IMAGE 
   B4=4 
   SELECT EXTENDED,ABT 74 
   B4=12
   FILL IMAGE,ABT 74
40 B1=0                      *INIT PRINT CODE INDEX 
   B2=0 
   B0=0                      *INIT BUFFER LOCATION
42 B3=IB(B1)+B2              *CALC TRAIN CHARACTER TO PRINT 
   OB(B0)=B3                 *ODD COLUMN - SCAN 1 
   IF(B3.LT.40)GOTO 44
   OB(B0)=OB(B0)+1           *SKIP OVER BLANK CODE
44 OB(B0+1)=B3+49D           *EVEN COLUMN- SCAN 48D 
   GOTO 46 WHILE (B1+1.LT.11) 
   B1=0 
   B2=B2+20 
46 GOTO 42 WHILE (B0+2.LT.136D)  *FILL LINE 
   B0=0 
50 B4=6 
   PRINT 136D WORDS FROM OB,ABT 74
   B4=7 
   WAITNB,ABT 74
   IF(SB(1).AND.3717.NE.1)ERROR 15/100,GOSUB 71 
   IF(SB(1).AND.20.NE.0)GOTO 54  *EXIT AT END OF PAGE 
   GOTO 50 WHILE(B0+1.LT.88D)    *OR AFTER 88 LINES 
/  EXIT SEQUENCE
54 CALL 98D                  *RESTORE TRAIN IMAGE 
   GOSUB 60 
   B4=12
   FILL IMAGE,ABT 74
   IF(P0.EQ.6)GOTO 55 
   B4=4 
   SELECT CLREXT,ABT 74 
55 IF(ES.AND.RM.NE.0)GOTO 22  *REPEAT MODULE
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 EXIT 
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 97A 
   B4=3 
   RES,ABT 74                *RECONNECT 
72 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP08 580(23,24,25,26,27,30),LOCK 
*** EXTENDED ARRAY TEST 
**
* 
* 
*   OVERVIEW - MODULE *FTP08* TESTS EXTENDED ARRAY FUNCTIONING BY 
*              PRINTING THE TRAIN IMAGE IN NORMAL AND REVERSED ORDER. 
*              THIS SECTION DOES NOT EXECUTE IF TRAIN TYPE 6. 
* 
* 
*   DESCRIPTION - EXTENDED ARRAY TEST 
* 
*      (FTP08)
*         1.  CONNECT AND CHECK STATUS
*         2.  CLEAR FORMAT SELECTIONS 
*         3.  EXIT IF TRAIN TYPE 6
*         4.  PAGE EJECT
*         5.  PRINT COLUMN NUMBERS
*      (FTP08A) 
*         6.  BUILD PACKED TRAIN IMAGE DATA 
*         7.  PRINT TRAIN IMAGE 
*         8.  REVERSE CHARACTERS IN PRINT BUFFER
*         9.  WAIT NOT BUSY 
*         10. VERIFY NO ERROR STATUS
*         11. REPEAT FROM STEP 7 FOR 4 PRINT LINES
*      (FTP08B) 
*         12. PRINT *EXTENDED ARRAY*
*         13. BUILD UNPACKED TRAIN IMAGE DATA 
*         14. IF FIRST PASS, SET UPPER 3 BITS OF EACH WORD
*         15. IF SECOND PASS, SHIFT EACH WORD LEFT 3 BITS 
*         16. SELECT EXTENDED ARRAY 
*         17. FILL TRAIN IMAGE
*         18. PRINT TRAIN IMAGE 
*         19. REVERSE CHARACTERS IN PRINT BUFFER
*         20. WAIT NOT BUSY 
*         21. VERIFY NO ERROR STATUS
*         22. REPEAT FROM STEP 18 FOR 16 PRINT LINES
*         23. BUILD UNPACKED TRAIN IMAGE DATA 
*         24. CLEAR EXTENDED ARRAY
*         25. FILL TRAIN IMAGE WITH STANDARD DATA 
*      (FTP08C) 
*         26. CLEAR EXTENDED ARRAY
*         27. PRINT *CLEAR EXTENDED ARRAY*
*         28. REPEAT FROM STEP 6 FOR 2 PASSES 
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON RESERVE
*         2.  ABORT ON SELECT 
*         3.  ABORT ON STATUS 
*         4.  ABORT ON PRINT
*         5.  ABORT ON WAITNB 
*         6.  ABORT ON EJECT
*         7.  ABORT ON FILL 
*         8.  UNEXPECTED NOT READY AND NOT BUSY(100)
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (RES) AT LINE *OCT 
*         2.  ABORT ON (SELECT) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (PRINT) AT LINE *OCT 
*         5.  ABORT ON (WAITNB) AT LINE *OCT
*         6.  ABORT ON (EJECT) AT LINE *OCT 
*         7.  ABORT ON (FILL) AT LINE *OCT
*         8.  STATUS IS NOT READY AND NOT BUSY
* 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP97A - ERROR PROCESSOR
*         FTP97Z - ERROR PROCESSOR
*         FTP98C - GENERATE COLUMN NUMBERS
*         FTP98D - GENERATE TRAIN IMAGE DATA
* 
* 
**********************************************************************
/  EXTENDED ARRAY TEST
1  FORMAT FTP08 EXTENDED ARRAY TEST (PART 1 OF 4) 
2  FORMAT FTP08 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP08 ABORT ON (RES) AT LINE *OCT 
4  FORMAT FTP08 ABORT ON (SELECT) AT LINE *OCT
5  FORMAT FTP08 ABORT ON (STATUS) AT LINE *OCT
6  FORMAT FTP08 ABORT ON (PRINT) AT LINE *OCT 
11 FORMAT FTP08 ABORT ON (EJECT) AT LINE *OCT 
14 FORMAT FTP08 DOES NOT RUN ON TRAIN 6 
17 FORMAT *DEC ERROR(S) IN FTP08
20 MSG 1 TO PRINT 
   IF(P0.NE.6)GOTO 21        *IF NOT TRAIN 6
   MSG 14 TO DISPLAY,PRINT
   EXIT 
21 B3=0                      *SET STARTING TRAIN ADDRESS
22 MSG 1 TO DISPLAY 
24 GOSUB 60                  *CONNECT 
   B4=4 
   SELECT CLEAR,ABT 74
26 CALL 98C                  *GENERATE PAGE HEADINGS
   GOSUB 60 
   B4=11
   EJECT,ABT 74              *TOP OF FORM 
   B4=6 
   PRINT,ABT 74              *PRINT COLUMN NUMBERS
   GOSUB 61 
/  EXIT SEQUENCE
   EXIT TO 08A               *CONTINUE IN MODULE FTP08A 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 EXIT 
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP08A 580(23,24,25,26,27,30),LOCK
/  EXTENDED ARRAY TEST
1  FORMAT FTP08A EXTENDED ARRAY TEST (PART 2 OF 4)
2  FORMAT FTP08A LC*DEC EC*DEC ST*OCT 
3  FORMAT FTP08A ABORT ON (RES) AT LINE *OCT
4  FORMAT FTP08A ABORT ON (SELECT) AT LINE *OCT 
5  FORMAT FTP08A ABORT ON (STATUS) AT LINE *OCT 
6  FORMAT FTP08A ABORT ON (PRINT) AT LINE *OCT
7  FORMAT FTP08A ABORT ON (WAITNB) AT LINE *OCT 
15 FORMAT FTP08A ERROR CODE *OCT AT LINE *OCT 
17 FORMAT *DEC ERROR(S) IN FTP08A 
20 CALL 98D                  *GET TRAIN ARRAY IMAGE 
   B3=B3 AND 7700            *INIT LOOP COUNTER 
   GOSUB 60                  *CONNECT 
   B0=0                      *PACK TRAIN DATA FOR PRINT 
   B1=0 
24 OB(B1)=OB(B0) LS 6 OR OB(B0+1) 
   B0=B0+2
   GOTO 24 WHILE(B1+1.LT.104) 
26 BA=0 
   WC=104 
   B4=6 
   PRINT WC WORDS FROM OB(0),ABT 74 
   B0=103                    *REVERSE BUFFER
   B1=0 
30 B2=OB(B0) RS 6 
   BA=OB(B0) LS 6 AND 7700
   B4=B2+BA 
   B2=OB(B1) RS 6 
   BA=OB(B1) LS 6 AND 7700
   OB(B0)=B2+BA 
   OB(B1)=B4
   B0=B0-1
   GOTO 30 WHILE (B1+1.LT.42) 
   B4=7 
   WAITNB,ABT 74
   IF(SB(1).AND.3717.NE.1)ERROR 15/100,GOSUB 71 
   B3=B3+1                   *LOOP 4 TIMES
   IF(B3.AND.77.LT.4)GOTO 26
   EXIT TO 08B               *CONTINUE IN MODULE FTP08B 
56 MSG 17(B7) TO DAYFILE
   EXIT 
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 97A 
   B4=3 
   RES,ABT 74                *RECONNECT 
72 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP08B 580(23,24,25,26,27,30),LOCK
/  EXTENDED ARRAY TEST
1  FORMAT FTP08B EXTENDED ARRAY TEST (PART 3 OF 4)
2  FORMAT FTP08B LC*DEC EC*DEC ST*OCT 
3  FORMAT FTP08B ABORT ON (RES) AT LINE *OCT
4  FORMAT FTP08B ABORT ON (SELECT) AT LINE *OCT 
5  FORMAT FTP08B ABORT ON (STATUS) AT LINE *OCT 
6  FORMAT FTP08B ABORT ON (PRINT) AT LINE *OCT
7  FORMAT FTP08B ABORT ON (WAITNB) AT LINE *OCT 
11 FORMAT FTP08B ABORT ON (EJECT) AT LINE *OCT
12 FORMAT FTP08B ABORT ON (FILL) AT LINE *OCT 
15 FORMAT FTP08B ERROR CODE *OCT AT LINE *OCT 
17 FORMAT *DEC ERROR(S) IN FTP08B 
*         *EXTENDED ARRAY*
   DATA(OB(0),CON)2567,6325,4524,2524,6021,5151,2170
20 GOSUB 60                  *CONNECT 
   B4=6 
   PRINT 7 WORDS FROM OB,ABT 74  *PRINT *EXTENDED ARRAY*
   CALL 98D                  *GET TRAIN IMAGE 
   B0=0 
24 IF(B3.AND.7700.NE.0)GOTO 26
   OB(B0)=OB(B0).OR.7000     *FIRST PASS SET UPPER 3 BITS 
   GOTO 30
26 OB(B0)=OB(B0) LS 3        *SECOND PASS LEFT SHIFT 3 BITS 
30 IF(OB(B0).AND.777.NE.40)GOTO 32
   OB(B0)=OB(B0)+101
32 GOTO 24 WHILE (B0+1.LT.600)
   GOSUB 60 
   B4=4 
   SELECT EXTENDED,ABT 74 
   B4=12
   FILL IMAGE,ABT 74
   B3=B3 AND 7700 
34 B4=6 
   PRINT 210 WORDS FROM OB,ABT 74  *PRINT TRAIN IMAGE 
   B0=0 
   B1=207                    *REVERSE BUFFER
36 B2=OB(B1)
   OB(B1)=OB(B0)
   OB(B0)=B2
   B1=B1-1
   GOTO 36 WHILE (B0+1.LT.104)
   B4=7 
   WAITNB,ABT 74
   IF(SB(1).AND.3717.NE.1)ERROR 15/100,GOSUB 71 
   B3=B3+1
   IF(B3.AND.77.LT.16D)GOTO 34  *LOOP FOR 16 LINES
   CALL 98D                  *GET TRAIN IMAGE 
   GOSUB 60 
   B4=4 
   SELECT CLREXT,ABT 74 
   B4=12
   FILL IMAGE,ABT 74         *RESTORE TRAIN IMAGE 
   EXIT TO 08C               *CONTINUE IN MODULE FTP08C 
56 MSG 17(B7) TO DAYFILE
   EXIT 
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 97A 
   B4=3 
   RES,ABT 74                *RECONNECT 
72 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP08C 580(23,24,25,26,27,30),LOCK
/  EXTENDED ARRAY TEST
1  FORMAT FTP08C EXTENDED ARRAY TEST (PART 4 OF 4)
2  FORMAT FTP08C LC*DEC EC*DEC ST*OCT 
3  FORMAT FTP08C ABORT ON (RES) AT LINE *OCT
4  FORMAT FTP08C ABORT ON (SELECT) AT LINE *OCT 
6  FORMAT FTP08C ABORT ON (PRINT) AT LINE *OCT
17 FORMAT *DEC ERROR(S) IN FTP08C 
*         *CLEAR EXTENDED ARRAY*
   DATA(OB(0),CON)2343,2521,5160,2567,6325,4524,2524,6021,
  ,5151,2170
20 GOSUB 60                  *RECONNECT 
24 B4=4 
   SELECT CLREXT,ABT 74 
   B4=6                      *PRINT *CLEAR EXTENDED ARRAY*
   PRINT 12 WORDS FROM OB,ABT 74
   IF(B3.AND.7700.NE.0)GOTO 54  *CHECK IF DONE
   B3=B3+100
   EXIT TO 08A               *LOOP FOR SECOND PASS
54 IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE
57 EXIT 
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP09 580(23,24,25,26,27,30),LOCK 
*** BUFFER MEMORY TEST
**
* 
* 
*   OVERVIEW - MODULE *FTP09* TESTS BUFFER MEMORY BY STORING A PARITY 
*              SENSITIVE PATTERN IN TWO LOCATIONS OF IMAGE MEMORY AND PRINTING
*              LINES OF THOSE CHARACTERS. IMAGE MEMORY LOCATIONS USED ARE 
*              ADVANCED WHEN REPEAT MODULE IS SELECTED. 
* 
* 
*   DESCRIPTION - BUFFER MEMORY TEST
* 
*         1.  CONNECT AND CHECK STATUS
*         2.  CLEAR FORMAT SELECTIONS 
*         3.  IF TRAIN TYPE 6, SELECT EXTENDED ARRAY
*         4.  PAGE EJECT
*         5.  PRINT COLUMN NUMBERS
*         6.  BUILD TRAIN IMAGE DATA
*         7.  MODIFY 2 LOCATIONS (2525 AND 5252)
*         8.  FILL TRAIN IMAGE
*         9.  SELECT EXTENDED ARRAY 
*         10. GENERATE PRINT LINE (ODD LINES 2525,EVEN 5252)
*         11. WAIT FOR NOT BUSY STATUS
*         12. PRINT LINE
*         13. VERIFY NO PRINT ERROR STATUS
*         14. REPEAT FROM STEP 10 FOR 64 PRINT LINES
*         15. RESTORE TRAIN IMAGE 
*         16. INCREMENT TRAIN LOCATION TO MODIFY FOR REPEAT MODULE
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON RESERVE
*         2.  ABORT ON SELECT 
*         3.  ABORT ON STATUS 
*         4.  ABORT ON PRINT
*         5.  ABORT ON WAITNB 
*         6.  ABORT ON EJECT
*         7.  ABORT ON FILL 
*         8.  STATUS ERROR AFTER PRINT (124)
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (RES) AT LINE *OCT 
*         2.  ABORT ON (SELECT) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (PRINT) AT LINE *OCT 
*         5.  ABORT ON (WAITNB) AT LINE *OCT
*         6.  ABORT ON (EJECT) AT LINE *OCT 
*         7.  ABORT ON (FILL) AT LINE *OCT
*         8.  EXPECTED READY AND BUSY AFTER PRINT.
* 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP97A - ERROR PROCESSOR
*         FTP97Z - ERROR PROCESSOR
*         FTP98C - GENERATE COLUMN NUMBERS
*         FTP98D - GENERATE TRAIN IMAGE DATA
* 
* 
**********************************************************************
/  THIS MODULE CHECKS BUFFER MEMORY 
1  FORMAT FTP09 BUFFER MEMORY CHECK 
2  FORMAT FTP09 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP09 ABORT ON (RES) AT LINE *OCT 
4  FORMAT FTP09 ABORT ON (SELECT) AT LINE *OCT
5  FORMAT FTP09 ABORT ON (STATUS) AT LINE *OCT
6  FORMAT FTP09 ABORT ON (PRINT) AT LINE *OCT 
7  FORMAT FTP09 ABORT ON (WAITNB) AT LINE *OCT
11 FORMAT FTP09 ABORT ON (EJECT) AT LINE *OCT 
12 FORMAT FTP09 ABORT ON (FILL) AT LINE *OCT
15 FORMAT FTP09 ERROR CODE *OCT AT LINE *OCT
17 FORMAT *DEC ERROR(S) IN FTP09
20 MSG 1 TO PRINT 
   B3=0                      *SET STARTING TRAIN ADDRESS
22 MSG 1 TO DISPLAY 
24 GOSUB 60                  *CONNECT 
   B4=4 
   SELECT CLEAR,ABT 74
   IF(P0.NE.6)GOTO 26 
   SELECT EXTENDED,ABT 74 
26 CALL 98C                  *GENERATE PAGE HEADINGS
   GOSUB 60 
   B4=11
   EJECT,ABT 74              *TOP OF FORM 
   B4=6 
   PRINT,ABT 74              *PRINT COLUMN NUMBERS
   CALL 98D                  *GET TRAIN IMAGE 
   GOSUB 60 
   OB(B3)=2525               *MODIFY TWO LOCATIONS
   OB(B3+1)=5252
   B4=12
   FILL IMAGE,ABT 74         *AND SEND TO PRINTER 
   B4=4 
   SELECT EXTENDED,ABT 74 
   B0=0                      *INIT LINE COUNTER 
30 B1=0                      *GENERATE PRINT PATTERN
   B2=2525
   IF(B0.AND.1.NE.0)GOTO 32 
   B2=5252
32 OB(B1)=B2
   OB(B1+1)=B2 XOR 7777 
   GOTO 32 WHILE (B1+2.LT.210)
   B4=7 
   WAITNB,ABT 74
   B4=6 
   PRINT 210 WORDS FROM OB,ABT 74  *PRINT 2525 PATTERN
   B4=5 
   STATUS,ABT,74
   IF(SB(1).AND.3717.NE.103)ERROR 15/124,GOSUB 71 
34 GOTO 30 WHILE (B0+1.LT.64D)  *LOOP FOR 64 LINES
   B4=4 
   IF(P0.EQ.6)GOTO 36 
   SELECT CLREXT,ABT 74 
   GOTO 40
36 SELECT EXTENDED,ABT 74 
40 CALL 98D                  *RESTORE TRAIN IMAGE 
   GOSUB 60 
   B4=12
   FILL IMAGE,ABT 74
   GOTO 54 WHILE(B3+1.NE.136D)  *COUNT FOR REPEAT MODULE
   B4=0 
/  EXIT SEQUENCE
54 IF(ES.AND.RM NE 0)GOTO 22    *IF REPEAT MODULE 
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 EXIT 
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 97A 
   B4=3 
   RES,ABT 74                *RECONNECT 
72 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP10 580(23,24,25,26,27,30),LOCK 
*** IMAGE MEMORY AND TRAIN CHECK
**
* 
* 
*   OVERVIEW - MODULE *FTP10* CHECKS FOR ERRORS IN IMAGE MEMORY BY
*              PRINTING ALL TRAIN CHARACTERS USING A PARITY 
*              SENSITIVE PATTERN IN IMAGE MEMORY. 
* 
* 
*   DESCRIPTION - IMAGE MEMORY AND TRAIN CHECK
* 
*         1.  CONNECT AND CHECK STATUS
*         2.  CLEAR FORMAT SELECTIONS 
*         3.  IF TRAIN TYPE 6, SELECT EXTENDED ARRAY
*         4.  PAGE EJECT
*         5.  PRINT COLUMN NUMBERS
*         6.  SELECT EXTENDED ARRAY 
*         7.  BUILD TRAIN IMAGE DATA
*         8.  FILL TRAIN IMAGE
*         9.  GENERATE PRINT LINE WITH PARITY PATTERN 
*         10. PRINT LINE
*         11. REPEAT FROM STEP 6 FOR ALL OF IMAGE MEMORY
*             (384 TIMES) 
*         12. IF NOT TRAIN 6 CLEAR EXTENDED ARRAY 
*         13. RESTORE TRAIN IMAGE 
*         14. PRINT COLUMN NUMBERS
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON RESERVE
*         2.  ABORT ON SELECT 
*         3.  ABORT ON STATUS 
*         4.  ABORT ON PRINT
*         5.  ABORT ON WAITNB 
*         6.  ABORT ON EJECT
*         7.  ABORT ON FILL 
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (RES) AT LINE *OCT 
*         2.  ABORT ON (SELECT) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (PRINT) AT LINE *OCT 
*         5.  ABORT ON (WAITNB) AT LINE *OCT
*         6.  ABORT ON (EJECT) AT LINE *OCT 
*         7.  ABORT ON (FILL) AT LINE *OCT
* 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP97Z - ERROR PROCESSOR
*         FTP98C - GENERATE COLUMN NUMBERS
*         FTP98D - GENERATE TRAIN IMAGE DATA
* 
* 
**********************************************************************
/  IMAGE MEMORY AND TRAIN CHECK 
1  FORMAT FTP10 IMAGE MEMORY AND TRAIN CHECK
2  FORMAT FTP10 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP10 ABORT ON (RES) AT LINE *OCT 
4  FORMAT FTP10 ABORT ON (SELECT) AT LINE *OCT
5  FORMAT FTP10 ABORT ON (STATUS) AT LINE *OCT
6  FORMAT FTP10 ABORT ON (PRINT) AT LINE *OCT 
7  FORMAT FTP10 ABORT ON (WAITNB) AT LINE *OCT
11 FORMAT FTP10 ABORT ON (EJECT) AT LINE *OCT 
12 FORMAT FTP10 ABORT ON (FILL) AT LINE *OCT
17 FORMAT *DEC ERROR(S) IN FTP10
*  PARITY PATTERN 
   DATA(OB,CON)001,776,002,775,004,773,010,767,020,757,050, 
  ,737,100,677,200,577,400,377,774,003,771,006,763,014,747, 
  ,030,717,060,637,140,477,300,177,600,007,770,017,760,037, 
  ,740,077,700,707,070,603,174,401,376
20 MSG 1 TO PRINT 
   COPY OB TO IB FOR 60      *SAVE PARITY PATTERN 
22 MSG 1 TO DISPLAY 
24 GOSUB 60                  *CONNECT 
   B4=4 
   SELECT CLEAR,ABT 74
   IF(P0.NE.6)GOTO 26 
   SELECT EXTENDED,ABT 74 
26 CALL 98C                  *GENERATE PAGE HEADINGS
   GOSUB 60 
   B4=11
   EJECT,ABT 74              *TOP OF FORM 
   B4=6 
   PRINT,ABT 74              *PRINT COLUMN NUMBERS
   GOSUB 61 
   B1=0 
40 B4=4 
   SELECT EXTENDED,ABT 74 
   B4=0                      *GENERATE 0000-7777 PATTERN
   IF(B1.AND.1.EQ.0)GOTO 42 
   B4=7777
42 B2=B4 XOR 7777 
   DUP B4/B2 TO OB FOR 600
   B4=0 
   B2=B1
44 OB(B2)=IB(B4)             *ADD PARITY PATTERN
   GOTO 46 WHILE(B2+1.LT.384D)
   B2=0 
46 GOTO 44 WHILE(B4+1.LT.60)
   B4=12
   FILL IMAGE,ABT 74         *FILL IMAGE WITH PARITY PATTERN
   DUP 40 TO OB FOR 210      *BACKGROUND PRINT LINE W/ BLANK
   B4=0 
   B2=B1
47 IF(B2.LT.210)GOTO 50      *ADD PARITY PATTERN
   B2=B2-210
   GOTO 47
50 OB(B2)=IB(B4)
   B2=B2+1
   GOTO 47 WHILE(B4+1.LT.60)
   B4=6 
   PRINT 210 WORDS FROM OB,ABT 74  *PRINT PARITY PATTERN
   GOTO 40 WHILE (B1+1.LT.383D)  *LOOP FOR ALL TRAIN MEMORY 
   IF(P0.EQ.6)GOTO 52 
   B4=4 
   SELECT CLREXT,ABT 74 
52 CALL 98D                  *RESTORE TRAIN IMAGE 
   GOSUB 60 
   B4=12
   FILL IMAGE,ABT 74
   CALL 98C                  *GENERATE COLUMN NUMBERS 
   GOSUB 60 
   B4=6 
   PRINT,ABT 74 
/  EXIT SEQUENCE
54 IF(ES.AND.RM NE 0)GOTO 22    *IF REPEAT MODULE 
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 EXIT 
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP11 580(23,24,25,26,27,30),LOCK 
*** PRINT ZERO IN COLUMN 1
**
* 
* 
*   OVERVIEW - MODULE *FTP11* AIDS MAINTENANCE BY PRINTING LINES
*              OF BLANKS WITH A ZERO IN COLUMN 1. 
* 
* 
*   DESCRIPTION - PRINT ZERO IN COLUMN 1
* 
*         1.  CONNECT AND CHECK STATUS
*         2.  CLEAR FORMAT SELECTIONS 
*         3.  IF TRAIN TYPE 6, SELECT EXTENDED ARRAY
*         4.  PAGE EJECT
*         5.  PRINT COLUMN NUMBERS
*         6.  GENERATE PRINT LINE WITH ZERO IN COLUMN 1 
*         7.  PRINT LINE
*         8.  REPEAT STEP 7 UNTIL END OF PAGE STATUS
*         9.  REPEAT FROM STEP 7 IF REPEAT CONDITIONS 
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON RESERVE
*         2.  ABORT ON SELECT 
*         3.  ABORT ON STATUS 
*         4.  ABORT ON PRINT
*         5.  ABORT ON WAITNB 
*         6.  ABORT ON EJECT
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (RES) AT LINE *OCT 
*         2.  ABORT ON (SELECT) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (PRINT) AT LINE *OCT 
*         5.  ABORT ON (WAITNB) AT LINE *OCT
*         6.  ABORT ON (EJECT) AT LINE *OCT 
* 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP97Z - ERROR PROCESSOR
*         FTP98C - GENERATE COLUMN NUMBERS
* 
* 
**********************************************************************
/  PRINT ZERO IN COLUMN 1 
1  FORMAT FTP11 PRINT ZERO IN COLUMN 1
2  FORMAT FTP11 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP11 ABORT ON (RES) AT LINE *OCT 
4  FORMAT FTP11 ABORT ON (SELECT) AT LINE *OCT
5  FORMAT FTP11 ABORT ON (STATUS) AT LINE *OCT
6  FORMAT FTP11 ABORT ON (PRINT) AT LINE *OCT 
7  FORMAT FTP11 ABORT ON (WAITNB) AT LINE *OCT
11 FORMAT FTP11 ABORT ON (EJECT) AT LINE *OCT 
17 FORMAT *DEC ERROR(S) IN FTP11
20 MSG 1 TO PRINT 
22 MSG 1 TO DISPLAY 
24 GOSUB 60                  *CONNECT 
   B4=4 
   SELECT CLEAR,ABT 74
   IF(P0.NE.6)GOTO 26 
   SELECT EXTENDED,ABT 74 
26 CALL 98C                  *GENERATE PAGE HEADINGS
   GOSUB 60 
   B4=11
   EJECT,ABT 74              *TOP OF FORM 
   B4=6 
   PRINT,ABT 74              *PRINT COLUMN NUMBERS
   GOSUB 61 
   IF(P0.EQ.6)GOTO 27 
   DUP 6060 TO OB FOR 104    *BLANK LINE
   OB(0)=60                  *ZERO IN COLUMN 1
   WC=104 
   GOTO 30
27 DUP 40 TO OB FOR 210      *BLANK LINE
   OB(0)=60                  *ZERO IN COLUMN 1
   WC=210 
30 BA=0 
   B4=6 
32 PRINT WC WORDS FROM OB(0),ABT 74 
   B4=7 
   WAITNB,ABT 74
   IF(SB(1).AND.20.EQ.0)GOTO 32  *PRINT TILL END OF PAGE
   IF(ES.AND.RC.NE.0)GOTO 32  *REPEAT CONDITIONS
/  EXIT SEQUENCE
54 IF(ES.AND.RM NE 0)GOTO 22    *IF REPEAT MODULE 
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 EXIT 
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP12 580(23,24,25,26,27,30),LOCK 
*** RANDOM PRINT
**
* 
* 
*   OVERVIEW - MODULE *FTP12* PRINTS A PAGE OF RANDOM CHARACTERS
*              WITH RANDOM AREAS OF BLANKS
* 
* 
*   DESCRIPTION - RANDOM PRINT
* 
*       (FTP12) 
*         1.  CONNECT AND CHECK STATUS
*         2.  CLEAR FORMAT SELECTIONS 
*         3.  IF TRAIN TYPE 6, SELECT EXTENDED ARRAY
*         4.  PAGE EJECT
*         5.  PRINT COLUMN NUMBERS
*         6.  GET PARAMETER 2 AS RANDOM SEED
*         7.  IF P2 IS ZERO, SET SEED EQUAL TO REAL TIME CLOCK
*         8.  PRINT LINE WITH OCTAL SEED USED 
*         9.  GENERATE RANDOM PRINT DATA
*         10. CHANGE ILLEGAL CHARACTERS TO BLANK CODE 
*       (FTP12A FOR TRAINS 1-5, FTP12B FOR TRAIN 6) 
*         11. MOVE SHIFTED PATTERN TO PRINT BUFFER
*         12. IF LINE 5 THROUGH 71 GENERATE RANDOM BLANK AREAS
*         13. CONNECT AND CHECK STATUS
*         14. PRINT LINE
*         15. WAIT NOT BUSY 
*         16. REPEAT FROM STEP 13 IF REPEAT CONDITIONS
*         17. REPEAT FROM STEP 11 UNTIL END OF PAGE STATUS OR 88 LINES
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON RESERVE
*         2.  ABORT ON SELECT 
*         3.  ABORT ON STATUS 
*         4.  ABORT ON PRINT
*         5.  ABORT ON WAITNB 
*         6.  ABORT ON EJECT
*         7.  UNEXPECTED NOT READY AND NOT BUSY(100)
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (RES) AT LINE *OCT 
*         2.  ABORT ON (SELECT) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (PRINT) AT LINE *OCT 
*         5.  ABORT ON (WAITNB) AT LINE *OCT
*         6.  ABORT ON (EJECT) AT LINE *OCT 
*         7.  STATUS IS NOT READY AND NOT BUSY
* 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP97A - ERROR PROCESSOR
*         FTP97Z - ERROR PROCESSOR
*         FTP98C - GENERATE COLUMN NUMBERS
* 
* 
**********************************************************************
/  RANDOM PRINT 
1  FORMAT FTP12 RANDOM PRINT
2  FORMAT FTP12 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP12 ABORT ON (RES) AT LINE *OCT 
4  FORMAT FTP12 ABORT ON (SELECT) AT LINE *OCT
5  FORMAT FTP12 ABORT ON (STATUS) AT LINE *OCT
6  FORMAT FTP12 ABORT ON (PRINT) AT LINE *OCT 
7  FORMAT FTP12 ABORT ON (WAITNB) AT LINE *OCT
11 FORMAT FTP12 ABORT ON (EJECT) AT LINE *OCT 
17 FORMAT *DEC ERROR(S) IN FTP12
*         *RANDOM SEED = *
   DATA(OB(0),CON)5121,4524,4644,6062,2525,2460,1360
   DATA(OB(7),CON)122,101,116,104,117,115,40,123,105,105, 
  ,104,40,75,40 
*         *ILLEGAL CHARACTERS FOR TRAIN 2 
   DATA(OB(100),CON)1212,1515,1616,1717,3232,3535,3737, 
  ,5252,5555,5656,5757,7272,7575,7676,7777
20 MSG 1 TO PRINT 
   COPY OB(0) TO IB(0) FOR 117  *SAVE PRESET DATA 
22 MSG 1 TO DISPLAY 
24 GOSUB 60                  *CONNECT 
   B4=4 
   SELECT CLEAR,ABT 74
   IF(P0.NE.6)GOTO 26 
   SELECT EXTENDED,ABT 74 
26 CALL 98C                  *GENERATE PAGE HEADINGS
   GOSUB 60 
   B4=11
   EJECT,ABT 74              *TOP OF FORM 
   B4=6 
   PRINT,ABT 74              *PRINT COLUMN NUMBERS
   GOSUB 61 
   B0=P2                     *GET SEED
   IF(B0.NE.0)GOTO 30 
   B0=RT                     *ZERO MEANS USE CLOCK
30 COPY IB(0) TO OB(0) FOR 117  *RESTORE PRESET DATA
   IF(P0.EQ.6)GOTO 40        *IF TRAIN 6
   OB(7)=B0 RS 3 AND 0700    *PRINT SEED USED(TRAINS 1-5) 
   B1=B0 RS 6 AND 7 
   OB(7)=OB(7)+B1 
   OB(10)=B0 LS 3 AND 0700
   OB(10)=B0 AND 7 + OB(10) 
   B4=6 
   PRINT 11 WORDS FROM OB(0),ABT 74 
   RANDOM TO IB FOR 104,START B0  *GENERATE RANDOM PATTERN
   IF(P0.LT.2)GOTO 37        *IF TRAIN 1
   IF(P0.GT.3)GOTO 37        *IF TRAIN 4 OR 5 
   IF(P0.EQ.2)GOTO 32        *IF TRAIN 2
   OB(102)=1414              *FIX ILLEGALS FOR TRAIN 3
32 B1=0                      *CLEAR BUFFER INDEX
33 B2=0                      *CLEAR ILLEGALS INDEX
34 B3=IB(B1) XOR OB(B2+100) 
   IF(B3.AND.7700.NE.0)GOTO 35  *IF UPPER CHARACTER OK
   IB(B1)=IB(B1) AND 77 + 6000  *BLANK ILLEGAL CHARACTER
35 IF(B3.AND.77.NE.0)GOTO 36    *IF UPPER CHRACTER OK 
   IB(B1)=IB(B1) AND 7700 + 60  *BLANK ILLEGAL CHARACTER
36 GOTO 34 WHILE (B2+1.LT.17)   *LOOP FOR ALL ILLEGALS
   GOTO 33 WHILE (B1+1.LT.104)  *LOOP FOR WHOLE LINE
37 EXIT TO 12A               *CONTINUE IN MODULE FTP12A 
/ 
40 B1=B0                     *PRINT SEED USED (TRAIN 6) 
   B2=0 
41 B1=B1 LS 3 
   OB(B2+25)=B1 AND 7 + 60
   GOTO 41 WHILE (B2+1.LT.4)
   B4=4 
   SELECT EXTENDED,ABT 74 
   B4=6 
   PRINT 22 WORDS FROM OB(7),ABT 74 
   RANDOM TO IB FOR 210,START B0  *GENERATE RANDOM PATTERN
   B1=0 
43 IB(B1)=IB(B1) AND 177     *FORCE CHARACTERS IN RANGE 
   IF(IB(B1).LE.37)GOTO 44   *IF ILLEGAL CHARACTER
   IF(IB(B1).NE.177)GOTO 45  *IF LEGAL CHARACTER
44 IB(B1)=40                 *BLANK ILLEGAL CHARACTERS
45 GOTO 43 WHILE (B1+1.LT.210)  *LOOP FOR WHOLE LINE
46 EXIT TO 12B               *CONTINUE IN MODULE FTP12B 
/  EXIT SEQUENCE
54 IF(ES.AND.RM NE 0)GOTO 22    *IF REPEAT MODULE 
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 EXIT 
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP12A 580(23,24,25,26,27,30),LOCK
/  RANDOM PRINT (TRAINS 1-5)
1  FORMAT FTP12A RANDOM PRINT (TRAINS 1-5)
2  FORMAT FTP12A LC*DEC EC*DEC ST*OCT 
3  FORMAT FTP12A ABORT ON (RES) AT LINE *OCT
4  FORMAT FTP12A ABORT ON (SELECT) AT LINE *OCT 
5  FORMAT FTP12A ABORT ON (STATUS) AT LINE *OCT 
6  FORMAT FTP12A ABORT ON (PRINT) AT LINE *OCT
7  FORMAT FTP12A ABORT ON (WAITNB) AT LINE *OCT 
11 FORMAT FTP12A ABORT ON (EJECT) AT LINE *OCT
15 FORMAT FTP12A ERROR CODE *OCT AT LINE *OCT 
17 FORMAT *DEC ERROR(S) IN FTP12A 
20 B0=0                      *CLEAR LINE COUNTER
24 B1=B0 RS 1                *MOVE SHIFTED PATTERN TO OB
   IF(B0.AND.1.NE.0)GOTO 30  *IF ODD SHIFT
   B2=0                      *EVEN SHIFT
26 OB(B2)=IB(B1)             *MOVE BY WORDS 
   GOTO 27 WHILE (B1+1.LT.104)
   B1=0 
27 GOTO 26 WHILE (B2+1.LT.104)
   GOTO 36                   *GO GENERATE BLANK AREAS 
30 IB(104)=IB(0)             *ADD FIRST CHARACTER AFTER LAST
   B2=0                      *ODD SHIFT 
31 OB(B2)=IB(B1) AND 77 LS 6  *SET UPPER CHARACTER
   B3=IB(B1+1) RS 6 AND 77
   OB(B2)=OB(B2)+B3          *SET LOWER CHARACTER 
   GOTO 32 WHILE (B1+1.LT.104)
   B1=0 
32 GOTO 31 WHILE (B2+1.LT.104)
36 IF(B0.LE.4)GOTO 46        *IF LINE 0-4 
   IF(B0.GE.110)GOTO 46      *IF LINE 110+
/  GENERATE RANDOM BLANK AREAS
   B1=B0 AND 1               *INIT BLANK SWITCH 
   B2=0                      *INIT CHARACTER POINTER
40 B1=B1+1 AND 1             *FLIP BLANK SWITCH 
   B3=B2 RS 1                *GET NEXT CHARACTER AS 
   B4=OB(B3)                   *LENGTH OF NEXT BLOCK
   IF(B2.AND.1.NE.0)GOTO 41 
   B4=B4 RS 6 
41 B4=B4 AND 37 
   IF(B1.NE.0)GOTO 42        *IF STORING BLANKS 
   B2=B2+B4                  *UPDATE CHARACTER POINTER
   GOTO 45                   *GO CHECK FOR END OF LINE
42 B3=B2 RS 1 
   IF(B2.AND.1.NE.0)GOTO 43  *IF LOWER NEXT 
   OB(B3)=OB(B3) AND 77 + 6000  *BLANK UPPER CHARACTER
   GOTO 44
43 OB(B3)=OB(B3) AND 7700 + 60  *BLANK UPPER CHARACTER
44 B2=B2+1
   IF(B2.GE.210)GOTO 46      *IF END OF LINE
   GOTO 42 WHILE (B4-1.NE.0)  *LOOP FOR BLANK COUNT 
45 IF(B2.LT.210)GOTO 40      *LOOP TILL END OF LINE 
46 GOSUB 60 
   B4=6 
   PRINT 104 WORDS FROM OB(0),ABT 74
   B4=7 
   WAITNB,ABT 74
   IF(SB(1).AND.3717.NE.1)ERROR 15/100,GOSUB 71 
50 IF(ES.AND.RC.NE.0)GOTO 46  *IF REPEAT CONDITION
   IF(SB(1).AND.20.NE.0)GOTO 54  *IF END OF PAGE
   GOTO 24 WHILE (B0+1.LT.88D)  *LOOP FOR 88 LINES
/  EXIT SEQUENCE
54 IF(B7.EQ.0)GOTO 57        *IF NO ERRORS
56 MSG 17(B7) TO DAYFILE
57 EXIT 
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 97A 
   B4=3 
   RES,ABT 74                *RECONNECT 
72 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP12B 580(23,24,25,26,27,30),LOCK
/  RANDOM PRINT (TRAIN 6) 
1  FORMAT FTP12B RANDOM PRINT (TRAIN 6) 
2  FORMAT FTP12B LC*DEC EC*DEC ST*OCT 
3  FORMAT FTP12B ABORT ON (RES) AT LINE *OCT
4  FORMAT FTP12B ABORT ON (SELECT) AT LINE *OCT 
5  FORMAT FTP12B ABORT ON (STATUS) AT LINE *OCT 
6  FORMAT FTP12B ABORT ON (PRINT) AT LINE *OCT
7  FORMAT FTP12B ABORT ON (WAITNB) AT LINE *OCT 
11 FORMAT FTP12B ABORT ON (EJECT) AT LINE *OCT
15 FORMAT FTP12B ERROR CODE *OCT AT LINE *OCT 
17 FORMAT *DEC ERROR(S) IN FTP12B 
20 B0=0                      *CLEAR LINE COUNTER
24 B1=B0                     *MOVE SHIFTED PATTERN TO OB
   B2=0 
26 OB(B2)=IB(B1)             *MOVE BY WORDS 
   GOTO 30 WHILE (B1+1.LT.210)
   B1=0 
30 GOTO 26 WHILE (B2+1.LT.210)
   IF(B0.LE.4)GOTO 46        *IF LINE 0-4 
   IF(B0.GE.110)GOTO 46      *IF LINE 110+
/  GENERATE RANDOM BLANK AREAS
   B1=B0 AND 1               *INIT BLANK SWITCH 
   B2=0                      *INIT CHARACTER POINTER
40 B1=B1+1 AND 1             *FLIP BLANK SWITCH 
   B4=OB(B2) AND 174 RS 2    *GET LENGTH OF NEXT BLOCK
   IF(B1.NE.0)GOTO 42        *IF STORING BLANKS 
   B2=B2+B4                  *UPDATE CHARACTER POINTER
   GOTO 45                   *GO CHECK FOR END OF LINE
42 OB(B2)=40                 *STORE A BLANK 
   B2=B2+1
   IF(B2.GE.210)GOTO 46      *IF END OF LINE
   GOTO 42 WHILE (B4-1.NE.0)  *LOOP FOR BLANK COUNT 
45 IF(B2.LT.210)GOTO 40      *LOOP TILL END OF LINE 
46 GOSUB 60 
   B4=6 
   PRINT 210 WORDS FROM OB(0),ABT 74
   B4=7 
   WAITNB,ABT 74
   IF(SB(1).AND.3717.NE.1)ERROR 15/100,GOSUB 71 
50 IF(ES.AND.RC.NE.0)GOTO 46  *IF REPEAT CONDITION
   IF(SB(1).AND.20.NE.0)GOTO 54  *IF END OF PAGE
   GOTO 24 WHILE (B0+1.LT.88D)  *LOOP FOR 88 LINES
/  EXIT SEQUENCE
54 IF(B7.EQ.0)GOTO 57        *IF NO ERRORS
56 MSG 17(B7) TO DAYFILE
57 EXIT 
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 97A 
   B4=3 
   RES,ABT 74                *RECONNECT 
72 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP13 3000(23,24,25,26,27,30),LOCK
*** PRINT WHILE BUSY
**
* 
* 
*   OVERVIEW - MODULE *FTP13* PRINTS LINES WHILE THE PRINTER IS BUSY
*              EXECUTING A TOP OF FORM. 
* 
* 
*   DESCRIPTION - PRINT WHILE BUSY
* 
*         1.  GENERATE PRINT LINE (COLUMN NUMBERS)
*         2.  CONNECT AND CHECK STATUS
*         3.  IF TRAIN TYPE 6, SELECT EXTENDED ARRAY
*         4.  CLEAR FORMAT SELECTIONS 
*         5.  PAGE EJECT
*         6.  PRINT COLUMN NUMBERS
*         7.  WAIT FOR NOT BUSY STATUS
*         8.  PRINT COLUMN NUMBERS
*         9.  WAIT FOR NOT BUSY STATUS
*         10. REPEAT FROM STEP 5 THREE TIMES
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON RESERVE
*         2.  ABORT ON SELECT 
*         3.  ABORT ON STATUS 
*         4.  ABORT ON PRINT
*         5.  ABORT ON WAITNB 
*         6.  ABORT ON EJECT
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (RES) AT LINE *OCT 
*         2.  ABORT ON (SELECT) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (PRINT) AT LINE *OCT 
*         5.  ABORT ON (WAITNB) AT LINE *OCT
*         6.  ABORT ON (EJECT) AT LINE *OCT 
* 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP96A - ERROR PROCESSOR
*         FTP96Z - ERROR PROCESSOR
* 
* 
**********************************************************************
/  PRINT WHILE BUSY 
1  FORMAT FTP13 PRINT WHILE BUSY
2  FORMAT FTP13 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP13 ABORT ON (CON) AT LINE *OCT 
4  FORMAT FTP13 ABORT ON (FUNC) AT LINE *OCT
5  FORMAT FTP13 ABORT ON (STATUS) AT LINE *OCT
6  FORMAT FTP13 ABORT ON (OUT) AT LINE *OCT 
17 FORMAT *DEC ERROR(S) IN FTP13
*         DIGITS
*         TRAINS 1-5
   DATA(OB(1),CON)102,304,506,710,1100,102,304,506,710,1100 
*         TRAIN 6 
   DATA(OB(13),CON)61,62,63,64,65,66,67,70,71,60
20 MSG 1 TO PRINT 
   B0=24                     *GENERATE PRINT LINE 
   B1=13
   BA=1 
   WC=104 
   B2=0 
   IF(P0.NE.6)GOTO 21        *IF NOT TRAIN 6
   COPY OB(13) TO OB(1) FOR 12
   B0=12
   WC=210 
21 COPY OB(1) TO OB(B1) FOR 12
   B1=B1+12 
   GOTO 21 WHILE (B2+B0.LT.210) 
22 MSG 1 TO DISPLAY 
24 GOSUB 60                  *CONNECT 
   B4=4 
   IF(P0.NE.6)GOTO 26        *IF NOT TRAIN 6
   FUNC 13,ABT 74            *SELECT EXTENDED 
26 FUNC 30,ABT 74            *CLEAR FORMAT SELECTION
   B0=0                      *CLEAR LOOP COUNTER
30 B4=4 
   FUNC 4,ABT 74             *TOP OF FORM 
   B4=6 
   OUT,ABT 74                *PRINT 
32 GOSUB 61 
   B4=6 
   OUT,ABT 74                *PRINT AGAIN 
34 GOSUB 61 
   GOTO 30 WHILE (B0+1.LT.3)  *LOOP 3 TIMES 
/  EXIT SEQUENCE
54 IF(ES.AND.RM NE 0)GOTO 22    *IF REPEAT MODULE 
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 GOTO 77
/  CONNECT SUBROUTINE ******************************
60 B4=3 
   CONN,ABT 74               *CONNECT 
   B4=4 
   FUNC 66,ABT 61 
61 B4=5 
   STATUS 1 WORDS TO SB(1),ABT 74  *GET STATUS
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 64     *CHECK STATUS
   REL
   DELAY 100 MSEC            *WAIT
   GOTO 60                   *TRY AGAIN 
64 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 96Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
77 END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP20 3000(23,24,25,26,27,30),LOCK
*** CONNECT AND STATUS CHECK
**
* 
*   OVERVIEW - MODULE *FTP20* CHECKS THE ABILITY OF THE PRINTER TO
*              CONNECT AND REPLY READY NOT BUSY STATUS. THE STATUS
*              IS CHECKED FOR COMPARE FAULT, PAPER FAULT, MEMORY BUSY 
*              AND PRINT ERROR. 
* 
* 
*   DESCRIPTION - CHECK CONNECT AND STATUS
* 
*         1.  CONNECT 
*         2.  GET STATUS
*         3.  IF NOT READY, FUNCTION FOR REGULAR STATUS 
*         4.  GET STATUS
*         5.  VERIFY READY AND NOT BUSY 
*         6.  REPEAT FROM STEP 1 IF REPEAT CONDITION
* 
* 
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON (CONN) 
*         2.  ABORT ON (STATUS) 
*         3.  UNEXPECTED NOT READY AND NOT BUSY(100)
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (CONN) AT LINE *OCT
*         2.  ABORT ON (STATUS) AT LINE *OCT
*         3.  STATUS IS NOT READY AND NOT BUSY
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP96A - ERROR PROCESSOR
*         FTP96Z - ERROR PROCESSOR
* 
* 
*  *********************************************************
* 
/  THIS MODULE CHECKS THE ABILITY OF THE PRINTER TO CONNECT 
/  AND REPLY READY NOT BUSY STATUS. 
1  FORMAT FTP20 CONNECT AND STATUS CHECK
2  FORMAT FTP20 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP20 ABORT ON (CONN) AT LINE *OCT
5  FORMAT FTP20 ABORT ON (STATUS) AT LINE *OCT
15 FORMAT FTP20 ERROR CODE *OCT, AT LINE *OCT 
17 FORMAT *DEC ERROR(S) IN FTP20
20 MSG 1 TO PRINT 
22 MSG 1 TO DISPLAY 
24 B4=3 
   CONN,ABT 74               *CONNECT 
   FUNC 66,ABT 26 
26 B4=5 
   STATUS 1 WORDS TO SB(1),ABT 74 
   IF(SB(1).AND.3717.NE.1)ERROR 15/100,GOSUB 71  *STAT ERR
30 IF(ES.AND.SL.EQ.0)GOTO 32
31 B6=B6+1
   MSG 2(B6,B7,SB(1)) TO DISPLAY  *POST SCOPE LOOP MESSAGE
   GOTO 24
32 IF(ES.AND.RC.NE.0)GOTO 31  *REPEAT CONDITIONS
/  EXIT SEQUENCE
54 IF(ES.AND.RM NE 0)GOTO 31    *IF REPEAT MODULE 
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 EXIT 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   IF(ES.AND.SL NE 0)GOTO 72      *IF NOT SCOPE LOOP
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 96A 
   B4=3 
   CONN,ABT 74               *RECONNECT 
72 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
   IF(ES.AND.SL.EQ.0)GOTO 75  *IF NOT SCOPE LOOP
   MSG 2(B6,B7,SB(1)) TO DISPLAY  *YES=POST DISPLAY MESSAGE 
   GOTO 24                   *RESTART 
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 96Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP21 3000(23,24,25,26,27,30),LOCK
*** CHECK TRANSMISSION PATH 
**
* 
*   OVERVIEW - MODULE *FTP21* CHECKS THE TRANSMISSION PATH TO THE 6681
*              CONTROLLER. A SET OF PARITY SENSITIVE WORDS ARE TRANS- 
*              MITTED AS ILLEGAL FUNCTIONS AND THE CONTROLLER STATUS IS 
*              CHECKED FOR ABSENCE OF PARITY ERRORS DURING TRANSMISSION.
* 
* 
*   DESCRIPTION - CHECK TRANSMISSION PATH 
* 
*         1.  CONNECT AND CHECK STATUS
*         2.  ISSUE PARITY SENSITIVE WORD AS FUNCTION 
*         3.  ERROR IF FUNCTION NOT REJECTED
*         4.  VERIFY INTERNAL REJECT STATUS (6681)
*         5.  REPEAT FROM STEP 1 IF REPEAT CONDITION
*         6.  REPEAT FROM STEP 1 TILL ALL WORDS ISSUED
* 
* 
*   ERRORS DETECTED 
*         1.  ABORT ON (CONN) 
*         2.  ABORT ON (FUNC) 
*         3.  ABORT ON (STATUS) 
*         4.  6681 STATUS ERROR (300) 
*         5.  NO ABORT FROM ILLEGAL FUNCTION (400)
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (CONN) AT LINE *OCT
*         2.  ABORT ON (FUNC) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  6681 STATUS ERROR.
*         5.  NO ABORT FROM ILLEGAL FUNCTION. 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP96A - ERROR PROCESSOR
*         FTP96Z - ERROR PROCESSOR
* 
* 
*  *********************************************************
* 
/  THIS MODULE CHECKS THE TRANSMISSION PATH TO THE 6681 
/  CONTROLLER FOR PARITY ERRORS.
1  FORMAT FTP21(6681 TRANSMISSION PARITY CHECK) 
2  FORMAT FTP21 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP21 ABORT ON (CONN) AT LINE *OCT
4  FORMAT FTP21 ABORT ON (FUNC) AT LINE *OCT
5  FORMAT FTP21 ABORT ON (STATUS) AT LINE *OCT
15 FORMAT FTP21 ERROR CODE *OCT, AT LINE *OCT 
17 FORMAT *DEC ERROR(S) IN FTP21
* 
*   PARITY SENSITIVE DATA WORDS TRANSMITTED ONE AT A TIME.
*   B1 USED AS AN INDEX.
* 
   DATA(OB(1),CON)6662,6626,6266,2666,5514,5145,1455,4551,
  ,7770,7707,7077,0777,6530,5306,3065,0653,1111,2222,3333,
  ,4444 
20 MSG 1 TO PRINT 
22 MSG 1 TO DISPLAY 
   B1=1                      *INITIALIZE INDEX
24 GOSUB 60                  *CONNECT 
25 B4=4 
   FUNC OB(B1),ABT 26        *ISSUE FUNCTION
   ERROR 15/400,GOSUB 71     *ERROR IF NO ABORT 
26 B4=5 
   STATUS8 TO SB(0),ABT 74   *GET 6681 STATUS 
   IF(SB(0).AND.7.NE.1)ERROR 15/300,GOSUB 71  *IF ERROR 
30 IF(ES.AND.SL EQ 0)GOTO 32  *IF NOT SCOPE LOOP
31 B6=B6+1
   MSG 2(B6,B7,SB(1)) TO DISPLAY  *POST SCOPE LOOP MESSAGE
   GOTO 24
32 IF(ES.AND.RC NE 0)GOTO 31  *REPEAT IF IN SCOPE LOOP
   GOTO 24 WHILE (B1+1 LT 25) 
/  EXIT SEQUENCE
54 IF(ES.AND.RM EQ 0)GOTO 55    *IF NOT REPEAT MODULE 
   B1=1 
   GOTO 31
55 IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE     T  *TERMINATION MESSAGE
57 EXIT 
/  CONNECT SUBROUTINE ******************************
60 B4=3 
   CONN,ABT 74               *CONNECT 
   B4=4 
   FUNC 66,ABT 61 
61 B4=5 
   STATUS 1 WORDS TO SB(1),ABT 74  *GET STATUS
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 64     *CHECK STATUS
   IF(ES.AND.SL.NE.0)GOTO 60  *IF SCOPE LOOP
   REL
   DELAY 100 MSEC            *WAIT
   GOTO 60                   *TRY AGAIN 
64 RETURN 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   IF(ES.AND.SL NE 0)GOTO 72      *IF NOT SCOPE LOOP
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 96A 
   B4=3 
   CONN,ABT 74               *RECONNECT 
72 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
   IF(ES.AND.SL.EQ.0)GOTO 75  *IF NOT SCOPE LOOP
   MSG 2(B6,B7,SB(1)) TO DISPLAY  *YES=POST DISPLAY MESSAGE 
   GOTO 24                   *RESTART 
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 96Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP22 3000(23,24,25,26,27,30),LOCK
*** CHECK LEGAL FUNCTIONS 
**
* 
* 
*   OVERVIEW - MODULE *FTP22* CHECKS THE ABILITY OF THE PRINTER TO
*              ACCEPT AND EXECUTE ALL LEGAL FUNCTIONS. THE FUNCTION 
*              CODES ARE CONTAINED IN THE OUTPUT BUFFER AND ARE ISSUED
*              ONE AT A TIME USING AN INDEX.
* 
* 
*   DESCRIPTION - CHECK LEGAL FUNCTIONS 
* 
*         1.  SET NUMBER OF FUNCTIONS TO BE ISSUED
*         2.  CONNECT AND CHECK STATUS
*         3.  ISSUE FUNCTION
*         4.  REPEAT FROM STEP 2 IF REPEAT CONDITION
*         5.  REPEAT FROM STEP 2 FOR ALL LEGAL FUNCTIONS
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON (CONN) 
*         2.  ABORT ON (FUNC) 
*         3.  ABORT ON (STATUS) 
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (CONN) AT LINE *OCT
*         2.  ABORT ON (FUNC) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP96Z - ERROR PROCESSOR
* 
* 
*  *********************************************************
* 
/  THIS MODULE CHECKS THE ABILITY OF THE PRINTER
/  TO ACCEPT AND EXECUTE LEGAL FUNCTION CODES.
1  FORMAT FTP22 LEGAL FUNCTION CHECK
2  FORMAT FTP22 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP22 ABORT ON (CONN) AT LINE *OCT
4  FORMAT FTP22 ABORT ON (FUNC) AT LINE *OCT
5  FORMAT FTP22 ABORT ON (STATUS) AT LINE *OCT
17 FORMAT *DEC ERROR(S) IN FTP22
* 
*   LEGAL FUNCTIONS ISSUED USING B1 AS INDEX. THE LAST TWO
*   FUNCTIONS ARE LEGAL ONLY ON PFC PRINTERS. 
* 
   DATA(OB(1),CON)0,1,2,3,4,5,6,7,10,11,13,14,20,21,22,23,
  ,24,25,26,30,31,32,33,34,35,36,37,40,41,42,43,44,50,51,52,
  ,53,54,55,56,57,60,61,62,63,64,65,66,30 
20 MSG 1 TO PRINT 
22 MSG 1 TO DISPLAY 
   B1=1                      *INITIALIZE INDEX B1 
24 GOSUB 60                  *CONNECT 
25 B4=4 
   FUNC OB(B1),ABT 74        *ISSUE FUNCTION
   IF(ES.AND.SL.EQ.0)GOTO 32
30 B6=B6+1
   MSG 2(B6,B7,SB(1)) TO DISPLAY  *POST SCOPE LOOP MESSAGE
   GOTO 24
32 IF(ES.AND.RC NE 0)GOTO 30    *REPEAT CONDITION LOOP
   GOTO 24 WHILE (B1+1 LE 60) 
/  EXIT SEQUENCE
54 IF(ES.AND.RM EQ 0)GOTO 55    *IF NOT REPEAT MODULE 
   B1=1 
   GOTO 30
55 IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 EXIT 
/  CONNECT SUBROUTINE ******************************
60 B4=3 
   CONN,ABT 74               *CONNECT 
   B4=4 
   FUNC 66,ABT 61 
61 B4=5 
   STATUS 1 WORDS TO SB(1),ABT 74  *GET STATUS
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 64     *CHECK STATUS
   IF(ES.AND.SL.NE.0)GOTO 60  *IF SCOPE LOOP
   REL
   DELAY 100 MSEC            *WAIT
   GOTO 60                   *TRY AGAIN 
64 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
   IF(ES.AND.SL.EQ.0)GOTO 75  *IF NOT SCOPE LOOP
   MSG 2(B6,B7,SB(1)) TO DISPLAY  *YES=POST DISPLAY MESSAGE 
   GOTO 24                   *RESTART 
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 96Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP23 3000(23,24,25,26,27,30),LOCK
*** CHECK ILLEGAL FUNCTIONS 
**
* 
* 
*   OVERVIEW - MODULE *FTP23* CHECKS THE ABILITY OF PRINTER TO REJECT 
*              ALL ILLEGAL FUNCTIONS. THE FUNCTION CODES ARE CONTAINED
*              IN THE OUTPUT BUFFER AND ARE ISSUED ONE AT A TIME USING
*              AN INDEX. TWO EXTRA FUNCTIONS ARE ISSUED IN THE CASE OF
*              NON PFC PRINTERS. THE FIRST FUNCTION ISSUED IS A SINGLE
*              SPACE AND IS NORMALLY LEGAL BUT IN THIS CASE IT IS 
*              EXPECTED TO BE REJECTED HERE AS IT IS ISSUED WHILE THE 
*              PRINTER IS BUSY DOING A PAGE EJECT.
* 
* 
*   DESCRIPTION - CHECK ILLEGAL FUNCTIONS 
* 
*         1.  CONNECT AND CHECK STATUS
*         2.  PAGE EJECT (IF FIRST FUNCTION)
*         3.  ISSUE FUNCTION
*         4.  ERROR IF NO ABORT 
*         5.  REPEAT FROM STEP 1 IF REPEAT CONDITION
*         6.  REPEAT FROM STEP 1 FOR ALL FUNCTIONS
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON (CONN) 
*         2.  ABORT ON (FUNC) 
*         3.  ABORT ON (STATUS) 
*         4.  NO ABORT FROM ILLEGAL FUNCTION (400)
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (CONN) AT LINE *OCT
*         2.  ABORT ON (FUNC) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  NO ABORT FROM ILLEGAL FUNCTION. 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP96A - ERROR PROCESSOR
*         FTP96Z - ERROR PROCESSOR
* 
* 
*  *********************************************************
* 
/  THIS MODULE CHECKS THE ABILITY OF THE PRINTER TO 
/  REJECT ILLEGAL FUNCTIONS 
1  FORMAT FTP23 ILLEGAL FUNCTION REJECT CHECK 
2  FORMAT FTP23 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP23 ABORT ON (CONN) AT LINE *OCT
4  FORMAT FTP23 ABORT ON (FUNC) AT LINE *OCT
5  FORMAT FTP23 ABORT ON (STATUS) AT LINE *OCT
15 FORMAT FTP23 ERROR CODE *OCT, AT LINE *OCT 
17 FORMAT *DEC ERROR(S) IN FTP23
* 
*   ILLEGAL FUNCTIONS ISSUED USING B1 AS INDEX. THE LAST TWO FUNCTIONS
*   ARE ILLEGAL ONLY ON NON PFC PRINTERS. THE FIRST FUNCTION IS ILLEGAL 
*   ONLY WHEN ISSUED WHILE THE PRINTER IS BUSY (IN THIS CASE DOING A
*   PAGE EJECT).
* 
   DATA(OB(1),CON)1,15,27,45,46,47,67,70,71,72,73,74,75,76, 
  ,77,16,17 
20 MSG 1 TO PRINT 
   B2=20                     *NO OF FUNCTIONS IN B2 
   IF(DC.GE.26)GOTO 22       *LAST TWO FUNCTIONS ONLY 
   B2=22                     *FOR NON PFC PRINTERS. 
22 MSG 1 TO DISPLAY 
   B1=1                      *INITIALIZE INDEX B1 
24 GOSUB 60                  *CONNECT 
25 IF(B1.NE.1)GOTO 26 
   B4=4                      *PAGE EJECT BEFORE 
   FUNC 4,ABT 74             *FIRST FCN ONLY
26 B4=4 
   FUNC OB(B1),ABT 30 
   ERROR 15/400,GOSUB 71     *ERROR IF NO ABORT 
30 IF(ES.AND.SL.EQ.0)GOTO 32
   B6=B6+1
   MSG 2(B6,B7,SB(1)) TO DISPLAY  *POST SCOPE LOOP MESSAGE
   GOTO 24
32 IF(ES.AND.RC.NE.0)GOTO 24  *REPEAT CONDITIONS
   GOTO 24 WHILE(B1+1.LT.B2)  *LOOP THRU FCN LIST 
/  EXIT SEQUENCE
54 IF(ES.AND.RM NE 0)GOTO 22    *IF REPEAT MODULE 
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 EXIT 
/  CONNECT SUBROUTINE ******************************
60 B4=3 
   CONN,ABT 74               *CONNECT 
   B4=4 
   FUNC 66,ABT 61 
61 B4=5 
   STATUS 1 WORDS TO SB(1),ABT 74  *GET STATUS
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 64     *CHECK STATUS
   IF(ES.AND.SL.NE.0)GOTO 60  *IF SCOPE LOOP
   REL
   DELAY 100 MSEC            *WAIT
   GOTO 60                   *TRY AGAIN 
64 RETURN 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   IF(ES.AND.SL NE 0)GOTO 72      *IF NOT SCOPE LOOP
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 96A 
   B4=3 
   CONN,ABT 74               *RECONNECT 
72 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
   IF(ES.AND.SL.EQ.0)GOTO 75  *IF NOT SCOPE LOOP
   MSG 2(B6,B7,SB(1)) TO DISPLAY  *YES=POST DISPLAY MESSAGE 
   GOTO 24                   *RESTART 
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 96Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP24 580(23,24,25,26,27,30),LOCK 
*** LOAD TRAIN ARRAY MEMORY 
**
* 
* 
*   OVERVIEW - MODULE *FTP24* LOADS THE APPROPRIATE DATA IN THE TRAIN 
*              ARRAY MEMORY. THE PARAMETER REGISTER P0 CONTAINS THE 
*              TRAIN TYPE CODE. LEGAL TRAIN TYPES ARE 1 THRU 6. IF THE
*              PARAMETER REGISTER P0 IS NOT SET IT CONTAINS A ZERO AND
*              THE TRAIN TYPE DEFAULTS TO TYPE 1. THE TRAIN ARRAY DATA
*              IS GENERATED IN SUBMODULE FTP98D OR FTP98E.
* 
* 
* 
*   DESCRIPTION - LOAD TRAIN ARRAY MEMORY 
* 
*         1.  CHECK FOR LEGAL TRAIN TYPE
*         2.  POST DEFAULT SELECTION MESSAGE IF P0=0. 
*         3.  CONNECT AND CHECK STATUS
*         4.  FILL TRAIN IMAGE
*         5.  CHECK STATUS FOR READY NOT BUSY 
*         6.  REPEAT FROM STEP 3 IF REPEAT CONDITION
*         7.  GENERATE RIPPLE PATTERN DATA
*         8.  PRINT 
*         9.  WAIT FOR NOT BUSY 
*        10.  CHECK STATUS FOR READY-AND-NOT-BUSY 
*        11.  REPEAT FROM STEP 8 IF REPEAT CONDITION
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON (RES)
*         2.  ABORT ON (SELECT) 
*         3.  ABORT ON (STATUS) 
*         4.  ABORT ON (FILL) 
*         5.  ABORT ON (PRINT)
*         6.  ABORT ON (WAITNB) 
*         7.  STATUS NOT READY AND NOT BUSY(100)
*         8.  NOT READY AND NOT BUSY AFTER
*             FILLING TRAIN IMAGE (122) 
*         9.  ILLEGAL TRAIN ARRAY TYPE
*        10.  DEFAULT TRAIN ARRAY TYPE
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (RES) AT LINE *OCT 
*         2.  ABORT ON (SELECT) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (FILL) AT LINE *OCT
*         5.  ABORT ON (PRINT) AT LINE *OCT 
*         6.  ABORT ON (WAITNB) AT LINE *OCT
*         7.  STATUS IS NOT (READY AND NOT BUSY)
*         5.  FILLED TRAIN IMAGE.  EXPECTED READY AND NOT BUSY. 
*         6.  TRAIN TYPE ERROR, SHOULD BE 1 THRU 6, IS XXXX 
*         7.  PARAMETER P0 NOT SET, TRAIN TYPE 1 ASSUMED
* 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP97A - ERROR PROCESSOR
*         FTP97Z - ERROR PROCESSOR
*         FTP98B - GENERATE RIPPLE PATTERN DATA 
*         FTP98D - GENERATE TRAIN IMAGE DATA
* 
* 
*  *********************************************************
* 
/  THIS MODULE CHECKS THE PARAMETER REGISTER P0 TO CONTAIN
/  PROPER TRAIN ARRAY TYPE. IF THE REGISTER CONTAINS 0
/  (DEFAULT) OR 1 IT LOADS THE TRAIN TYPE 1 IMAGE DATA. 
/  SUBSEQUENT SUBMODULES GENERATE THE IMAGE MEMORY DATA 
1  FORMAT FTP24 LOAD TRAIN TYPE *OCT
2  FORMAT FTP24 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP24 ABORT ON (RES) AT LINE *OCT 
4  FORMAT FTP24 ABORT ON (SELECT) AT LINE *OCT
5  FORMAT FTP24 ABORT ON (STATUS) AT LINE *OCT
6  FORMAT FTP24 ABORT ON (PRINT) AT LINE *OCT 
7  FORMAT FTP24 ABORT ON (WAITNB) AT LINE *OCT
12 FORMAT FTP24 ABORT ON (FILL) AT LINE *OCT
13 FORMAT FTP24 TRAIN TYPE ERROR, SHOULD BE 1-6, IS *OCT
14 FORMAT FTP24 PARAMETER P0 NOT SET, TRAIN TYPE 1 ASSUMED
15 FORMAT FTP24 ERROR CODE *OCT AT LINE *OCT
17 FORMAT *DEC ERROR(S) IN FTP24
20 MSG 1 (P0) TO PRINT
   IF(P0.GT.6)GOTO 44 
   IF(P0.NE.0)GOTO 21 
   MSG 14 TO LINE 1          *DEFAULT SELECTION MSG 
21 CALL 98D                  *GO GENERATE TRAIN IMAGE 
22 MSG 1 (P0) TO DISPLAY
24 GOSUB 60                  *CONNECT 
25 B4=12
   FILL IMAGE,ABT 74         *LOAD TRAIN IMAGE
   B4=5 
   STATUS,ABT 74
   IF(SB(1).AND.3717.NE.1)ERROR 15/122,GOSUB 71 
26 IF(ES.AND.SL.EQ.0)GOTO 30
   B6=B6+1
   MSG 2(B6,B7,SB(1)) TO DISPLAY  *POST SCOPE LOOP MESSAGE
   GOTO 24
30 IF(ES.AND.RC.NE.0)GOTO 24  *REPEAT CONDITION 
   B4=4 
   IF(P0.EQ.6)GOTO 32        *IF TRAIN TYPE 6 
   SELECT CLREXT,ABT 74      *CLEAR EXTENDED ARRAY
   GOTO 34
32 SELECT EXTENDED,ABT 74 
34 CALL 98B                  *GENERATE RIPPLE PATTERN DATA
36 GOSUB 60 
   B4=6 
   PRINT,ABT 74 
   B4=7 
   WAITNB,ABT 74
   IF(SB(1).AND.3717.NE.1)ERROR 15/100,GOSUB 71 
   IF(ES.AND.SL.EQ.0)GOTO 40
   B6=B6+1
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   GOTO 36
40 IF(ES.AND.RC.NE.0)GOTO 36
   GOTO 54
44 MSG 13(P0) TO LINE 0 
   B7=B7+1
   PICTURE
   HALT 
   IF(ES.AND.RM.NE.0)GOTO 20
/  EXIT SEQUENCE
54 IF(ES.AND.RM NE 0)GOTO 22    *IF REPEAT MODULE 
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 EXIT 
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
   IF(ES.AND.SL.NE.0)GOTO 60  *IF SCOPE LOOP
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   IF(ES.AND.SL NE 0)GOTO 72      *IF SCOPE LOOP
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 97A 
   B4=3 
   RES,ABT 74                *RECONNECT 
72 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
   IF(ES.AND.SL.EQ.0)GOTO 75  *IF NOT SCOPE LOOP
   MSG 2(B6,B7,SB(1)) TO DISPLAY  *YES=POST DISPLAY MESSAGE 
   GOTO 24                   *RESTART 
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP25 580(23,24,25,26,27,30),LOCK 
*** LOAD PFC MEMORY 
**
* 
*   OVERVIEW - MODULE *FTP25* LOADS THE 6 LINES PER INCH AND THE 8 LINES
*              PER  INCH PROGRAMMABLE FORMAT CONTROL MEMORY DEPENDING ON
*              PARAMETER P3 FOR 8.5, 11, OR 12 INCH PAPER. IT TERMINATES
*              WITH THE MESSAGE  **NON PFC PRINTER, EXIT FTP25**  IF  AN
*              ATTEMPT IS MADE TO RUN THIS MODULE ON A NON PFC PRINTER. 
* 
* 
*   DESCRIPTION - LOAD PFC MEMORY 
* 
*         1.  CHECK PRINTER TYPE. EXIT IF NON PFC 
*         2.  EXIT TO 25A IF 8.5 INCH PAPER OR 25B IF 12 INCH PAPER 
*             SELECTED
*         3.  CONNECT AND CHECK STATUS
*         4.  PAGE EJECT
*         5.  WAIT NOT BUSY 
*         6.  IF COINCIDENT STATUS CONTINUE AT STEP 10
*         7.  SINGLE SPACE
*         8.  REPEAT FROM STEP 5 FIVE TIMES 
*         9.  ERROR - UNABLE TO GET COINCIDENT STATUS 
*         10. REPEAT FROM STEP 4 IF REPEAT CONDITION
*         11. LOAD 6 LPI PFC MEMORY 
*         12. WAIT NOT BUSY 
*         13. CHECK REGULAR STATUS
*         14. CHECK MAINTENANCE STATUS FOR PFC ERRORS 
*         15. LOAD 8 LPI PFC MEMORY 
*         16. WAIT NOT BUSY 
*         17. CHECK REGULAR STATUS
*         18. CHECK MAINTENANCE STATUS FOR PFC ERRORS 
*         19. PAUSE FOR OPERATOR TO ALIGN PAPER AT TOP OF FORM
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON (RES)
*         2.  ABORT ON (SELECT) 
*         3.  ABORT ON (STATUS) 
*         4.  ABORT ON (WAITNB) 
*         5.  ABORT ON (SPACE)
*         6.  ABORT ON (EJECT)
*         7.  ABORT ON (FILL) 
*         8.  UNEXPECTED STATUS AFTER FILLING PFC MEMORY FOR
*             6 LPI (201) 
*         9.  UNEXPECTED STATUS AFTER FILLING PFC MEMORY FOR
*             8 LPI (202) 
*        10.  NO COINCIDENT STATUS PRIOR TO PFC LOAD (203)
*        11.  PFC ERROR AFTER LOADING PFC MEMORY (502)
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (RES) AT LINE *OCT 
*         2.  ABORT ON (SELECT) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (WAITNB) AT LINE *OCT
*         5.  ABORT ON (SPACE) AT LINE *OCT 
*         6.  ABORT ON (EJECT) AT LINE *OCT 
*         7.  ABORT ON (FILL) AT LINE *OCT
*         8.  FILLED PFC MEMORY FOR 6 LPI.
*             EXPECTED READY AND NOT BUSY.
*         9.  FILLED PFC MEMORY FOR 8 LPI.
*             EXPECTED READY AND NOT BUSY.
*        10.  NEED COINCIDENT STATUS TO LOAD PFC. 
*        11.  LOADED PFC MEMORY.  EXPECTED NO PFC ERROR 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP97A - ERROR PROCESSOR
*         FTP97Z - ERROR PROCESSOR
* 
* 
*  *********************************************************
* 
/  THIS MODULE LOADS THE PROGRAMMABLE FORMAT CONTROL MEMORY.
1  FORMAT FTP25 LOAD PFC MEMORY 
2  FORMAT FTP25 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP25 ABORT ON (RES) AT LINE *OCT 
4  FORMAT FTP25 ABORT ON (SELECT) AT LINE *OCT
5  FORMAT FTP25 ABORT ON (STATUS) AT LINE *OCT
7  FORMAT FTP25 ABORT ON (WAITNB) AT LINE *OCT
10 FORMAT FTP25 ABORT ON (SPACE) AT LINE *OCT 
11 FORMAT FTP25 ABORT ON (EJECT) AT LINE *OCT 
12 FORMAT FTP25 ABORT ON (FILL) AT LINE *OCT
13 FORMAT FTP25 ALIGN PRINTER PAPER AT TOP OF FORM
14 FORMAT FTP25 DOES NOT RUN ON NON-PFC PRINTERS
15 FORMAT FTP25 ERROR CODE *OCT AT LINE *OCT
17 FORMAT *DEC ERROR(S) IN FTP25
* 
*   STANDARD PFC LOAD DATA FOR TWO PAGES OF 11
*   INCHES STANDARD FORM STARTING AT TOP OF PAGE. 
* 
*         6 LPI PFC DATA
   DATA (OB(0),CON) 0102,304,506,710,1102,304,506,710,
  ,1102,304,506,710,1102,304,506,710,1102,304,506,710,
  ,1102,304,506,710,1102,304,506,710,1102,304,506,714,, 
  ,0102,304,506,710,1102,304,506,710,1102,304,506,710,
  ,1102,304,506,710,1102,304,506,710,1102,304,506,710,
  ,1102,304,506,710,1102,304,506,714,,1700
*         8 LPI PFC DATA
   DATA(OB(200),CON)102,300,405,600,710,1100,203,400,506
  ,700,1011,200,304,500,607,1000,1102,300,405,600,710,1100, 
  ,203,400,506,700,1011,200,304,500,607,1000,1102,300,405,
  ,600,710,1100,203,400,506,700,1400,0000,102,300,405,600,
  ,710,1100,203,400,506,700,1011,200,304,500,607,1000,1102, 
  ,300,405,600,710,1100,203,400,506,700,1011,200,304,500, 
  ,607,1000,1102,300,405,600,710,1100,203,400,506,700,1400, 
  ,0000,1700
20 IF(DC.GE.26)GOTO 21
   MSG 14 TO DISPLAY,PRINT   *POST MESSAGE FOR NON PFC
   EXIT                      *PRINTERS AND EXIT 
21 IF (P3.AND.77.EQ.10) EXIT TO 25A        *IF 8.5 INCH PAPER 
   IF (P3.AND.77.EQ.12) EXIT TO 25B        *IF 12 INCH PAPER
   MSG 1 TO PRINT 
22 MSG 1 TO DISPLAY 
24 GOSUB 60                  *CONNECT 
   B4=11
   EJECT,ABT 74              *MOVE TO TOP OF FORM 
   B0=0 
25 B4=7 
   WAITNB,ABT 74             *WAIT FOR MOTION TO STOP 
   IF(SB(1).AND.4000.NE.0)GOTO 26  *IF COINCIDENT STATUS
   B4=10
   SPACE 1,ABT 74            *MOVE PAPER AGAIN
   GOTO 25 WHILE(B0+1.LT.5)  *TRY 5 TIMES 
   ERROR 15/203,GOSUB 71     *ERROR IF NO COINCIDENT STATUS 
26 IF(ES.AND.RC.NE.0)GOTO 25  *IF REPEAT CONDITION
31 B4=12
   FILL PFC6,ABT 74          *FILL 6LPI PFC 
   B4=7 
   WAITNB,ABT 74
   IF(SB(1).AND.3717.NE.1)ERROR 15/201,GOSUB 71 
   B4=5 
   STATUS,ABT 74
   IF(SB(2).AND.3400.NE.0)ERROR 15/502,GOSUB 71 
   COPY OB(200) TO OB(0) FOR 89D
   B4=12
   FILL PFC8,ABT 74          *FILL 8LPI PFC 
   B4=7 
   WAITNB,ABT 74
   B4=5 
   STATUS,ABT 74
   IF(SB(1).AND.3717.NE.1)ERROR 15/202,GOSUB 71 
   B4=5 
   STATUS,ABT 74
   IF(SB(2).AND.3400.NE.0)ERROR 15/502,GOSUB 71 
   IF(B7.NE.0)GOTO 56        *IF ANY ERRORS EXIT
   MSG 13 TO LINE 1 
   MSG 13 TO PRINT
   PAUSE                     *WAIT FOR FORMS ALLIGNMENT 
   BLANK
/  EXIT SEQUENCE
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 EXIT 
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 97A 
   B4=3 
   RES,ABT 74                *RECONNECT 
72 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP25A 580(23,24,25,26,27,30),LOCK
/  THIS MODULE LOADS THE PROGRAMMABLE FORMAT CONTROL MEMORY.
1  FORMAT FTP25A LOAD PFC MEMORY FOR 8.5 INCH PAPER 
2  FORMAT FTP25A LC*DEC EC*DEC ST*OCT 
3  FORMAT FTP25A ABORT ON (RES) AT LINE *OCT
4  FORMAT FTP25A ABORT ON (SELECT) AT LINE *OCT 
5  FORMAT FTP25A ABORT ON (STATUS) AT LINE *OCT 
7  FORMAT FTP25A ABORT ON (WAITNB) AT LINE *OCT 
10 FORMAT FTP25A ABORT ON (SPACE) AT LINE *OCT
11 FORMAT FTP25A ABORT ON (EJECT) AT LINE *OCT
12 FORMAT FTP25A ABORT ON (FILL) AT LINE *OCT 
13 FORMAT FTP25A ALIGN PRINTER PAPER AT TOP OF FORM 
15 FORMAT FTP25A ERROR CODE *OCT AT LINE *OCT 
17 FORMAT *DEC ERROR(S) IN FTP25A 
* 
*   STANDARD PFC LOAD DATA FOR TWO PAGES OF 8.5 
*   INCHES STANDARD FORM STARTING AT TOP OF PAGE. 
* 
*         6 LPI PFC DATA 8.5 INCH PAPER 
   DATA (OB(0),CON) 0102,304,506,710,1102,304,506,710,
  ,1102,304,506,710,1102,304,506,710,1102,304,506,710,
  ,1102,304,506,714,,0001,203,405,607,1011,203,405, 
  ,607,1011,203,405,607,1011,203,405,607,1011,203,405,
  ,607,1011,203,405,607,1400,,1700
*         8 LPI PFC DATA 8.5 INCH PAPER 
   DATA(OB(200),CON)102,300,405,600,710,1100,203,400,506
  ,700,1011,200,304,500,607,1000,1102,300,405,600,710,1100, 
  ,203,400,506,700,1011,200,304,500,607,1000,1400,0000,102, 
  ,300,405,600,710,1100,203,400,506,700,1011,200,304,500, 
  ,607,1000,1102,300,405,600,710,1100,203,400,506,700,1011, 
  ,200,304,500,607,1000,1400,0000,1700
20 MSG 1 TO PRINT 
22 MSG 1 TO DISPLAY 
24 GOSUB 60                  *CONNECT 
   B4=11
   EJECT,ABT 74              *MOVE TO TOP OF FORM 
   B0=0 
25 B4=7 
   WAITNB,ABT 74             *WAIT FOR MOTION TO STOP 
   IF(SB(1).AND.4000.NE.0)GOTO 26  *IF COINCIDENT STATUS
   B4=10
   SPACE 1,ABT 74            *MOVE PAPER AGAIN
   GOTO 25 WHILE(B0+1.LT.5)  *TRY 5 TIMES 
   ERROR 15/203,GOSUB 71     *ERROR IF NO COINCIDENT STATUS 
26 IF(ES.AND.RC.NE.0)GOTO 25  *IF REPEAT CONDITION
31 B4=12
   FILL PFC6,ABT 74          *FILL 6LPI PFC 
   B4=7 
   WAITNB,ABT 74
   IF(SB(1).AND.3717.NE.1)ERROR 15/201,GOSUB 71 
   B4=5 
   STATUS,ABT 74
   IF(SB(2).AND.3400.NE.0)ERROR 15/502,GOSUB 71 
   COPY OB(200) TO OB(0) FOR 89D
   B4=12
   FILL PFC8,ABT 74          *FILL 8LPI PFC 
   B4=7 
   WAITNB,ABT 74
   B4=5 
   STATUS,ABT 74
   IF(SB(1).AND.3717.NE.1)ERROR 15/202,GOSUB 71 
   B4=5 
   STATUS,ABT 74
   IF(SB(2).AND.3400.NE.0)ERROR 15/502,GOSUB 71 
   IF(B7.NE.0)GOTO 56        *IF ANY ERRORS EXIT
   MSG 13 TO LINE 1 
   MSG 13 TO PRINT
   PAUSE                     *WAIT FOR FORMS ALLIGNMENT 
   BLANK
/  EXIT SEQUENCE
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 EXIT 
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 97A 
   B4=3 
   RES,ABT 74                *RECONNECT 
72 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP25B 580(23,24,25,26,27,30),LOCK
/  THIS MODULE LOADS THE PROGRAMMABLE FORMAT CONTROL MEMORY.
1  FORMAT FTP25B LOAD PFC MEMORY 12 INCH PAPER
2  FORMAT FTP25B LC*DEC EC*DEC ST*OCT 
3  FORMAT FTP25B ABORT ON (RES) AT LINE *OCT
4  FORMAT FTP25B ABORT ON (SELECT) AT LINE *OCT 
5  FORMAT FTP25B ABORT ON (STATUS) AT LINE *OCT 
7  FORMAT FTP25B ABORT ON (WAITNB) AT LINE *OCT 
10 FORMAT FTP25B ABORT ON (SPACE) AT LINE *OCT
11 FORMAT FTP25B ABORT ON (EJECT) AT LINE *OCT
12 FORMAT FTP25B ABORT ON (FILL) AT LINE *OCT 
13 FORMAT FTP25B ALIGN PRINTER PAPER AT TOP OF FORM 
15 FORMAT FTP25B ERROR CODE *OCT AT LINE *OCT 
17 FORMAT *DEC ERROR(S) IN FTP25B 
* 
*   STANDARD PFC LOAD DATA FOR TWO PAGES OF 12
*   INCHES STANDARD FORM STARTING AT TOP OF PAGE. 
* 
*         6 LPI PFC DATA 12 INCH PAPER
   DATA (OB(0),CON) 0102,304,506,710,1102,304,506,710,
  ,1102,304,506,710,1102,304,506,710,1102,304,506,710,
  ,1102,304,506,710,1102,304,506,710,1102,304,506,710,
  ,1102,304,514,,1700 
*         8 LPI PFC DATA 12 INCH PAPER
   DATA(OB(200),CON)102,300,405,600,710,1100,203,400,506, 
  ,700,1011,200,304,500,607,1000,1102,300,405,600,710,1100, 
  ,203,400,506,700,1011,200,304,500,607,1000,1102,300,405,
  ,600,710,1100,203,400,506,700,1011,200,0304,0500,1400,
  ,0000,1700
20 MSG 1 TO PRINT 
22 MSG 1 TO DISPLAY 
24 GOSUB 60                  *CONNECT 
   B4=11
   EJECT,ABT 74              *MOVE TO TOP OF FORM 
   B0=0 
25 B4=7 
   WAITNB,ABT 74             *WAIT FOR MOTION TO STOP 
   IF(SB(1).AND.4000.NE.0)GOTO 26  *IF COINCIDENT STATUS
   B4=10
   SPACE 1,ABT 74            *MOVE PAPER AGAIN
   GOTO 25 WHILE(B0+1.LT.5)  *TRY 5 TIMES 
   ERROR 15/203,GOSUB 71     *ERROR IF NO COINCIDENT STATUS 
26 IF(ES.AND.RC.NE.0)GOTO 25  *IF REPEAT CONDITION
31 B4=12
   FILL PFC6,ABT 74          *FILL 6LPI PFC 
   B4=7 
   WAITNB,ABT 74
   IF(SB(1).AND.3717.NE.1)ERROR 15/201,GOSUB 71 
   B4=5 
   STATUS,ABT 74
   IF(SB(2).AND.3400.NE.0)ERROR 15/502,GOSUB 71 
   COPY OB(200) TO OB(0) FOR 89D
   B4=12
   FILL PFC8,ABT 74          *FILL 8LPI PFC 
   B4=7 
   WAITNB,ABT 74
   B4=5 
   STATUS,ABT 74
   IF(SB(1).AND.3717.NE.1)ERROR 15/202,GOSUB 71 
   B4=5 
   STATUS,ABT 74
   IF(SB(2).AND.3400.NE.0)ERROR 15/502,GOSUB 71 
   IF(B7.NE.0)GOTO 56        *IF ANY ERRORS EXIT
   MSG 13 TO LINE 1 
   MSG 13 TO PRINT
   PAUSE                     *WAIT FOR FORMS ALLIGNMENT 
   BLANK
/  EXIT SEQUENCE
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 EXIT 
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 97A 
   B4=3 
   RES,ABT 74                *RECONNECT 
72 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP26 3000(23,24,25,26,27,30),LOCK
*** CHECK 6 LPI PFC UNDERFLOW 
**
* 
*   OVERVIEW - MODULE *FTP26* CHECKS THE ABILITY OF THE PRINTER TO
*              DETECT A PFC MEMORY UNDERFLOW ERROR. IT RUNS ON A PFC
*              PRINTER ONLY. IT CHECKS THE 6 LPI PFC MEMORY ONLY. IF
*              AN ATTEMPT IS MADE TO RUN THIS MODULE ON A NON PFC 
*              PRINTER IT EXITS WITH THE MESSAGE *EXIT FTP26 NON PFC
*              PRINTER*.
* 
* 
*   DESCRIPTION - CHECK 6 LPI PFC UNDERFLOW ERROR 
* 
*         1.  EXIT WITH MESSAGE IF NON PFC PRINTER
*         2.  CONNECT AND CHECK STATUS
*         3.  PAGE EJECT
*         4.  VERIFY COINCIDENT STATUS
*         5.  LOAD 6 LPI PFC MEMORY WITHOUT LAST WORD (1700)
*         6.  CHECK MAINTENANCE STATUS
*         7.  VERIFY BUSY STATUS
*         8.  LOAD LAST WORD IN 6 LPI PFC MEMORY
*         9.  VERIFY NO PFC ERROR STATUS
*         10. REPEAT FROM STEP 2 IF REPEAT CONDITIONS 
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON (CONN) 
*         2.  ABORT ON (FUNC) 
*         3.  ABORT ON (STATUS) 
*         4.  ABORT ON (OUT)
*         5.  NO COINCIDENT STATUS PRIOR TO PFC LOAD (203)
*         6.  PFC ERROR AFTER LOADING PFC MEMORY (502)
*         7.  NO MEMORY BUSY STATUS AFTER SHORT LOAD OF PFC MEMORY (503)
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (CONN) AT LINE *OCT
*         2.  ABORT ON (FUNC) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (OUT) AT LINE *OCT 
*         5.  NEED COINCIDENT STATUS TO LOAD PFC. 
*         6.  LOADED PFC MEMORY.  EXPECTED NO PFC ERROR 
*         7.  AFTER SHORT LOAD OF PFC MEMORY, EXPECTED
*             MEMORY BUSY 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B3 - WORD COUNT FROM OB 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP96A - ERROR PROCESSOR
*         FTP96Z - ERROR PROCESSOR
*         FTP98A - RESTORE PFC MEMORY 11 INCH PAPER 
*         FTP98F - RESTORE PFC MEMORY 8.5 INCH PAPER
*         FTP98G - RESTORE PFC MEMORY 12 INCH PAPER 
* 
* 
*  *********************************************************
* 
/  THIS MODULE CHECKS THE PFC MEMORY FOR CATCHING UNDERFLOW.
/  IT CHECKS THE 6 LPI MEMORY ONLY. 
1  FORMAT FTP26 6LPI PFC UNDERFLOW
2  FORMAT FTP26 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP26 ABORT ON (CONN) AT LINE *OCT
4  FORMAT FTP26 ABORT ON (FUNC) AT LINE *OCT
5  FORMAT FTP26 ABORT ON (STATUS) AT LINE *OCT
6  FORMAT FTP26 ABORT ON (OUT) AT LINE *OCT 
14 FORMAT FTP26 DOES NOT RUN ON NON-PFC PRINTERS
15 FORMAT FTP26 ERROR CODE *OCT AT LINE *OCT
17 FORMAT *DEC ERROR(S) IN FTP26
* 
*   OB(0)  LAST WORD OF PFC MEMORY LOAD 
* 
*   OB(1) - OB(40) LOAD DATA OF ZEROS WITH TOP OF FORM AND
*                  LAST LINE CODES FOR 6 LPI PFC MEMORY 
* 
   DATA(OB(0),CON)1700,100
   DATA(OB(40),CON)14 
20 IF(DC.GE.26)GOTO 21       *POST MESSAGE FOR NON PFC
   MSG 14 TO DISPLAY,PRINT   *PRINTER AND EXIT
   EXIT 
21 MSG 1 TO PRINT 
22 MSG 1 TO DISPLAY 
   B3=41         *SET WORD COUNT FOR 11 INCH PAPER
   IF(P3.AND.77.EQ.10) GOSUB 40   *SET FOR 8.5 INCH PAPER 
   IF(P3.AND.77.EQ.12) GOSUB 41   *SET FOR 12 INCH PAPER
24 GOSUB 60                  *CONNECT 
   B4=4 
   FUNC 4,ABT 74             *PAGE EJECT
   GOSUB 61 
   IF(SB(1).AND.4000.EQ.0)ERROR 15/203,GOSUB 71 
   B4=4 
   FUNC 11,ABT 74            *SELECT 6 LPI
   FUNC 16,ABT 74            LOAD 6 LPI PFC 
   B4=6 
   OUT B3 WORDS FROM OB(1), ABT 74
   DELAY 100 MSEC 
   B4=4 
   FUNC 65,ABT 74            *GET MAINT. STATUS 
   B4=5 
   STATUS 1 WORDS TO SB(2),ABT 74 
   B4=4 
   FUNC 66,ABT 74            *SWITCH TO REG. STATUS 
   IF(SB(2).AND.400.EQ.0)ERROR 15/503,GOSUB 71  *IF NOT BUSY
26 B4=6 
   OUT 1 WORDS FROM OB(0),ABT 74  *TERMINATE PFC LOAD 
   B4=4 
   FUNC 65,ABT 74            *GET MAINT. STATUS 
   B4=5 
   STATUS 1 WORDS TO SB(2),ABT 74 
   B4=4 
   FUNC 66,ABT 74            *SWITCH TO REG. STATUS 
   IF(SB(2).AND.3400.NE.0)ERROR 15/502,GOSUB 71  *IF ERROR
32 IF(ES.AND.RC.NE.0)GOTO 24  *REPEAT CONDITIONS
/  EXIT SEQUENCE
54 IF(ES.AND.RM.NE.0)GOTO 22  *REPEAT MODULE
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
* 
********************GO RELOAD PFC 
* 
57 IF(P3.AND.77.EQ.10) EXIT TO 98F
   IF(P3.AND.77.EQ.12) EXIT TO 98G
   EXIT TO 98A
/  CONNECT SUBROUTINE ******************************
60 B4=3 
   CONN,ABT 74               *CONNECT 
   B4=4 
   FUNC 66,ABT 74 
   B4=5 
   STATUS 1 WORDS TO SB(1),ABT 74  *GET STATUS
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 64     *CHECK STATUS
61 REL
   DELAY 100 MSEC            *WAIT
   GOTO 60                   *TRY AGAIN 
64 RETURN 
40 B3=63
   OB(30)=14
   OB(32)=1 
   OB(40)=0 
   OB(62)=1400
   RETURN 
41 B3=44
   OB(40)=0 
   OB(43)=14
   RETURN 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 96A 
   B4=3 
   CONN,ABT 74               *RECONNECT 
72 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 96Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP27 3000(23,24,25,26,27,30),LOCK
*** CHECK 8 LPI PFC UNDERFLOW 
**
* 
*   OVERVIEW - MODULE *FTP27* CHECKS THE ABILITY OF THE PRINTER TO
*              DETECT A PFC MEMORY UNDERFLOW ERROR. IT RUNS ON A PFC
*              PRINTER ONLY. IT CHECKS THE 8 LPI PFC MEMORY ONLY. IF
*              AN ATTEMPT IS MADE TO RUN THIS MODULE ON A NON PFC 
*              PRINTER IT EXITS WITH THE MESSAGE *EXIT FTP27 NON PFC
*              PRINTER*.
* 
* 
*   DESCRIPTION - CHECK 8 LPI PFC UNDERFLOW ERROR 
* 
*         1.  EXIT WITH MESSAGE IF NON PFC PRINTER
*         2.  CONNECT AND CHECK STATUS
*         3.  PAGE EJECT
*         4.  VERIFY COINCIDENT STATUS
*         5.  LOAD 8 LPI PFC MEMORY WITHOUT LAST WORD (1700)
*         6.  CHECK MAINTENANCE STATUS
*         7.  VERIFY BUSY STATUS
*         8.  LOAD LAST WORD IN 8 LPI PFC MEMORY
*         9.  VERIFY NO PFC ERROR STATUS
*         10. REPEAT FROM STEP 2 IF REPEAT CONDITION
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON (CONN) 
*         2.  ABORT ON (FUNC) 
*         3.  ABORT ON (STATUS) 
*         4.  ABORT ON (OUT)
*         5.  NO COINCIDENT STATUS PRIOR TO PFC LOAD (203)
*         6.  PFC ERROR AFTER LOADING PFC MEMORY (502)
*         7.  NO MEMORY BUSY STATUS AFTER SHORT LOAD OF PFC MEMORY (503)
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (CONN) AT LINE *OCT
*         2.  ABORT ON (FUNC) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (OUT) AT LINE *OCT 
*         5.  NEED COINCIDENT STATUS TO LOAD PFC. 
*         6.  LOADED PFC MEMORY.  EXPECTED NO PFC ERROR 
*         7.  AFTER SHORT LOAD OF PFC MEMORY, EXPECTED
*             MEMORY BUSY 
* 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B3 - WORD COUNT FROM OB 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP96A - ERROR PROCESSOR
*         FTP96Z - ERROR PROCESSOR
*         FTP98A - RESTORE PFC MEMORY 11 INCH PAPER 
*         FTP98F - RESTORE PFC MEMORY 8.5 INCH PAPER
*         FTP98G - RESTORE PFC MEMORY 12 INCH PAPER 
* 
* 
*  *********************************************************
* 
/  THIS MODULE CHECKS THE PFC MEMORY FOR CATCHING UNDERFLOW.
/  IT CHECKS THE 8 LPI MEMORY ONLY. 
1  FORMAT FTP27 8LPI PFC UNDERFLOW
2  FORMAT FTP27 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP27 ABORT ON (CONN) AT LINE *OCT
4  FORMAT FTP27 ABORT ON (FUNC) AT LINE *OCT
5  FORMAT FTP27 ABORT ON (STATUS) AT LINE *OCT
6  FORMAT FTP27 ABORT ON (OUT) AT LINE *OCT 
14 FORMAT FTP27 DOES NOT RUN ON NON-PFC PRINTERS
15 FORMAT FTP27 ERROR CODE *OCT AT LINE *OCT
17 FORMAT *DEC ERROR(S) IN FTP27
* 
*   OB(0)  LAST WORD OF PFC MEMORY LOAD 
* 
*   OB(1) - OB(53) LOAD DATA OF ZEROS WITH TOP OF FORM AND
*                  LAST LINE CODES FOR 8 LPI PFC MEMORY 
* 
   DATA(OB(0),CON)1700,100
   DATA(OB(53),CON)14 
20 IF(DC.GE.26)GOTO 21       *POST MESSAGE FOR NON PFC
   MSG 14 TO DISPLAY,PRINT   *PRINTER AND EXIT
   EXIT 
21 MSG 1 TO PRINT 
22 MSG 1 TO DISPLAY 
   B3=54         *SET WORD COUNT FOR 11 INCH PAPER
   IF(P3.AND.77.EQ.10) GOSUB 40   *SET FOR 8.5 INCH PAPER 
   IF(P3.AND.77.EQ.12) GOSUB 41   *SET FOR 12 INCH PAPER
24 GOSUB 60                  *CONNECT 
   B4=4 
   FUNC 4,ABT 74             *PAGE EJECT
   GOSUB 61 
   IF(SB(1).AND.4000.EQ.0)ERROR 15/203,GOSUB 71 
   B4=4 
   FUNC 10,ABT 74            *SELECT 6 LPI
   FUNC 17,ABT 74            LOAD 6 LPI PFC 
   B4=6 
   OUT B3 WORDS FROM OB(1), ABT 74
   DELAY 100 MSEC 
   B4=4 
   FUNC 65,ABT 74            *GET MAINT. STATUS 
   B4=5 
   STATUS 1 WORDS TO SB(2),ABT 74 
   B4=4 
   FUNC 66,ABT 74            *SWITCH TO REG. STATUS 
   IF(SB(2).AND.400.EQ.0)ERROR 15/503,GOSUB 71  *IF NOT BUSY
26 B4=6 
   OUT 1 WORDS FROM OB(0),ABT 74  *TERMINATE PFC LOAD 
   B4=4 
   FUNC 65,ABT 74            *GET MAINT. STATUS 
   B4=5 
   STATUS 1 WORDS TO SB(2),ABT 74 
   B4=4 
   FUNC 66,ABT 74            *SWITCH TO REG. STATUS 
   IF(SB(2).AND.3400.NE.0)ERROR 15/502,GOSUB 71  *IF ERROR
32 IF(ES.AND.RC.NE.0)GOTO 24  *REPEAT CONDITIONS
/  EXIT SEQUENCE
54 IF(ES.AND.RM.NE.0)GOTO 22  *REPEAT MODULE
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
* 
********************GO RELOAD PFC 
* 
57 IF(P3.AND.77.EQ.10) EXIT TO 98F
   IF(P3.AND.77.EQ.12) EXIT TO 98G
   EXIT TO 98A
/  CONNECT SUBROUTINE ******************************
60 B4=3 
   CONN,ABT 74               *CONNECT 
   B4=4 
   FUNC 66,ABT 74 
   B4=5 
   STATUS 1 WORDS TO SB(1),ABT 74  *GET STATUS
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 64     *CHECK STATUS
61 REL
   DELAY 100 MSEC            *WAIT
   GOTO 60                   *TRY AGAIN 
64 RETURN 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 96A 
   B4=3 
   CONN,ABT 74               *RECONNECT 
72 RETURN 
40 B3=104 
   OB(41)=1400
   OB(43)=100 
   OB(53)=0 
   OB(103)=1400 
   RETURN 
41 B3=60
   OB(53)=0 
   OB(57)=1400
   RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 96Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP28 3000(23,24,25,26,27,30),LOCK
*** CHECK 6 LPI PFC POSTPRINT INHIBIT ERROR 
**
* 
* 
*   OVERVIEW - MODULE *FTP28* CHECKS THE ABILITY OF THE PRINTER TO
*              DETECT A PFC INHIBIT ERROR IN THE POSTPRINT MODE. THE
*              PFC MEMORY IS CHECKED BY REQUESTING A POSTPRINT LINE 
*              SPACING TO LEVEL 3, WHICH DOES NOT EXIST, EXECUTING
*              THE POSTPRINT AND EXPECTING THE ERROR TO BE CAUGHT.
*              ANOTHER POSTPRINT LINE SPACING IS THEN EXECUTED TO LEVEL 
*              2, WHICH EXISTS, AND THE PROPER FUNCTIONING OF THE PFC 
*              MEMORY IS VERIFIED.
* 
*              IT RUNS ON THE PFC PRINTER ONLY. IT CHECKS THE 6 LPI PFC 
*              MEMORY ONLY. IF AN ATTEMPT IS MADE TO RUN THE MODULE ON
*              A NON PFC PRINTER IT EXITS WITH THE MESSAGE *EXIT FTP28
*              NON PFC PRINTER*.
* 
* 
*   DESCRIPTION - CHECK 6 LPI PFC POSTPRINT INHIBIT ERROR 
* 
*         1.  EXIT WITH MESSAGE IF NON PFC PRINTER
*         2.  BUILD 6 LPI PFC MEMORY DATA WITH ALL 2 LEVELS 
*         3.  CONNECT AND CHECK STATUS
*         4.  IF TRAIN TYPE 6, SELECT EXTENDED ARRAY
*         5.  PAGE EJECT
*         6.  VERIFY COINCIDENT STATUS
*         7.  SELECT 6 LPI
*         8.  LOAD 6 LPI PFC MEMORY 
*         9.  CLEAR FORMAT SELECTION
*         10. SINGLE SPACE
*         11. SELECT POSTPRINT LEVEL 3
*         12. PRINT A LINE
*         13. VERIFY PFC ERROR STATUS (01)
*         14. CONDITIONAL CLEAR FORMAT
*         15. SINGLE SPACE
*         16. SELECT POSTPRINT LEVEL 2
*         17. PRINT A LINE
*         18. VERIFY NO PFC ERROR STATUS
*         19. REPEAT FROM STEP 3 IF REPEAT CONDITIONS 
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON (CONN) 
*         2.  ABORT ON (FUNC) 
*         3.  ABORT ON (STATUS) 
*         4.  ABORT ON (OUT)
*         5.  NO COINCIDENT STATUS PRIOR TO PFC LOAD (203)
*         6.  NO PFC ERROR AFTER SELECTING ILLEGAL FORMAT LEVEL (504) 
*         7.  PFC ERROR AFTER SELECTING LEGAL FORMAT LEVEL (505)
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (CONN) AT LINE *OCT
*         2.  ABORT ON (FUNC) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (OUT) AT LINE *OCT 
*         5.  NEED COINCIDENT STATUS TO LOAD PFC. 
*         6.  SELECTED ILLEGAL FORMAT LEVEL.  EXPECTED
*             PFC ERROR 
*         7.  SELECTED LEGAL FORMAT LEVEL. EXPECTED NO
*             PFC ERROR 
* 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B3 - WORD COUNT FROM OB 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP96A - ERROR PROCESSOR
*         FTP96Z - ERROR PROCESSOR
*         FTP98A - RESTORE PFC MEMORY 11 INCH PAPER 
*         FTP98F - RESTORE PFC MEMORY 8.5 INCH PAPER
*         FTP98G - RESTORE PFC MEMORY 12 INCH PAPER 
* 
* 
*  *********************************************************
* 
*  CHECKS THE 6LPI PFC MEMORY FOR POSTPRINT INHIBIT ERROR 
1  FORMAT FTP28 POSTPRINT INHIBIT 6LPI/PFC
2  FORMAT FTP28 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP28 ABORT ON (CONN) AT LINE *OCT
4  FORMAT FTP28 ABORT ON (FUNC) AT LINE *OCT
5  FORMAT FTP28 ABORT ON (STATUS) AT LINE *OCT
6  FORMAT FTP28 ABORT ON (OUT) AT LINE *OCT 
14 FORMAT FTP28 DOES NOT RUN ON NON-PFC PRINTERS
15 FORMAT FTP28 ERROR CODE *OCT AT LINE *OCT
17 FORMAT *DEC ERROR(S) OCCURRED IN FTP28 
* 
*   OB(1) - OB(42) LOAD DATA OF 02 WITH TOP OF FORM 
*   AND LAST LINE CODE FOR 6 LPI. 
* 
*   CHARACTER CODES FOR TRAIN TYPE 1 THRU 5 
* 
*         *SPACE PRINT *
   DATA(OB(300),CON)6,6247,2123,2560,4751,3145,6360 
* 
*         *LEGAL PRINT *
   DATA(OB(314),CON)6,4325,2721,4360,4751,3145,6360 
* 
*   CHARACTER CODES FOR TRAIN TYPE 6
* 
*         *SPACE PRINT* 
   DATA(OB(400),CON)13,123,120,101,103,105,40,120,122,111,
  ,116,124
*         *LEGAL PRINT* 
   DATA(OB(414),CON)13,114,105,107,101,114,40,120,122,111,
  ,116,124
* 
20 IF(DC.GE.26)GOTO 21       *POST MESSAGE FOR NON PFC
   MSG 14 TO DISPLAY,PRINT    *PRINTER AND EXIT 
   EXIT 
21 MSG 1 TO PRINT 
   DUP 202 TO OB(2) FOR 62   *PREPARE 02 PFC DATA IN
   OB(1)=100                 *OB(1) THRU OB(42) 
   B3=42         *SET WORD COUNT FOR 11 INCH PAPER
   IF(P3.AND.77.EQ.10) GOSUB 40   *SET FOR 8.5 INCH PAPER 
   IF(P3.AND.77.EQ.12) GOSUB 41   *SET FOR 12 INCH PAPER
   OB(40)=14
   OB(42)=1700
22 MSG 1 TO DISPLAY 
   GOSUB 60 
   B4=4 
   IF(P0.NE.6)GOTO 24 
   FUNC 13,ABT 74            *SELECT EXTENDED 
   COPY OB(400) TO OB(300) FOR 30  *INIT PRINT DATA 
24 FUNC 4,ABT 74             *PAGE EJECT
   GOSUB 61 
   IF(SB(1).AND.4000.EQ.0)ERROR 15/203,GOSUB 71 
   B4=4 
   FUNC 11,ABT 74            *SELECT 6 LPI
   FUNC 16,ABT 74            *LOAD 6 LPI PFC
   B4=6 
   OUT B3 WORDS FROM OB(1), ABT 74
   DELAY 100 MSEC 
   B4=4 
   FUNC 7,ABT 74             *CONDITIONAL CLEAR FORMAT
   FUNC 1,ABT 74             *SINGLE SPACE
   GOSUB 61 
   B4=4 
   FUNC 53,ABT 74            *SELECT POSTPRINT LEVEL 3
   B4=6 
   OUT OB(300) WORDS FROM OB(301),ABT 74  *PRINT
   GOSUB 61 
   B4=4 
   FUNC 65,ABT 74            *GET MAINT. STATUS 
   B4=5 
   STATUS 1 WORDS TO SB(2),ABT 74 
   B4=4 
   FUNC 66,ABT 74            *SWITCH TO REG. STATUS 
   IF(SB(2).AND.3400.NE.1000)ERROR 15/504,GOSUB 71
32 B4=4 
   FUNC 7,ABT 74             *CONDITIONAL CLEAR FORMAT
   FUNC 1,ABT 74             *SINGLE SPACE
   GOSUB 61 
   B4=4 
   FUNC 52,ABT 74            *SELECT POSTPRINT LEVEL 2
   B4=6 
   OUT OB(314) WORDS FROM OB(315),ABT 74  *PRINT
   GOSUB 61 
   B4=4 
   FUNC 65,ABT 74            *GET MAINT. STATUS 
   B4=5 
   STATUS 1 WORDS TO SB(2),ABT 74 
   B4=4 
   FUNC 66,ABT 74            *SWITCH TO REG. STATUS 
   IF(SB(2).AND.3400.NE.0)ERROR 15/505,GOSUB 71  *IF ERROR
42 IF(ES.AND.RC.NE.0)GOTO 24  *REPEAT CONDITIONS
*  EXIT SEQUENCE********************************* 
54 IF(ES.AND.RM.NE.0)GOTO 22  *REPEAT MODULE
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
* 
********************GO RELOAD PFC 
* 
57 IF(P3.AND.77.EQ.10) EXIT TO 98F
   IF(P3.AND.77.EQ.12) EXIT TO 98G
   EXIT TO 98A
*  CONNECT SUBROUTINE*********************************
60 B4=3 
   CONN,ABT 74               *CONNECT 
   B4=4 
   FUNC 66,ABT 74 
   B4=5 
   STATUS 1 WORDS TO SB(1),ABT 74  *GET STATUS
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 64     *CHECK STATUS
61 REL
   DELAY 100 MSEC            *WAIT
   GOTO 60                   *TRY AGAIN 
64 RETURN 
*  ERROR SUBROUTINE***********************************
71 B7=B7+1                        *INCREMENT COUNTER
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 96A 
   B4=3 
   CONN,ABT 74               *RECONNECT 
72 RETURN 
40 B3=64
   OB(30)=14
   OB(32)=1 
   OB(62)=1400
   OB(64)=1700
   ENDSUB, GOTO 22
41 B3=45
   OB(43)=14
   OB(45)=1700
   ENDSUB, GOTO 22
*  ABORT ERROR PROCESSOR******************************
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 96Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP29 3000(23,24,25,26,27,30),LOCK
*** CHECK 8 LPI PFC POSTPRINT INHIBIT ERROR 
**
* 
* 
*   OVERVIEW - MODULE *FTP29* CHECKS THE ABILITY OF THE PRINTER TO
*              DETECT A PFC INHIBIT ERROR IN THE POSTPRINT MODE. THE
*              PFC MEMORY IS CHECKED BY REQUESTING A POSTPRINT LINE 
*              SPACING TO LEVEL 3, WHICH DOES NOT EXIST, EXECUTING
*              THE POSTPRINT AND EXPECTING THE ERROR TO BE CAUGHT.
*              ANOTHER POSTPRINT LINE SPACING IS THEN EXECUTED TO LEVEL 
*              2, WHICH EXISTS, AND THE PROPER FUNCTIONING OF THE PFC 
*              MEMORY IS VERIFIED.
* 
*              IT RUNS ON THE PFC PRINTER ONLY. IT CHECKS THE 8 LPI PFC 
*              MEMORY ONLY. IF AN ATTEMPT IS MADE TO RUN THE MODULE ON
*              A NON PFC PRINTER IT EXITS WITH THE MESSAGE *EXIT FTP29
*              NON PFC PRINTER*.
* 
* 
*   DESCRIPTION - CHECK 8 LPI PFC POSTPRINT INHIBIT ERROR 
* 
*         1.  EXIT WITH MESSAGE IF NON PFC PRINTER
*         2.  BUILD 8 LPI PFC MEMORY DATA WITH ALL 2 LEVELS 
*         3.  CONNECT AND CHECK STATUS
*         4.  IF TRAIN TYPE 6, SELECT EXTENDED ARRAY
*         5.  PAGE EJECT
*         6.  VERIFY COINCIDENT STATUS
*         7.  SELECT 8 LPI
*         8.  LOAD 8 LPI PFC MEMORY 
*         9.  CLEAR FORMAT SELECTION
*         10. SINGLE SPACE
*         11. SELECT POSTPRINT LEVEL 3
*         12. PRINT A LINE
*         13. VERIFY PFC ERROR STATUS (01)
*         14. CONDITIONAL CLEAR FORMAT
*         15. SINGLE SPACE
*         16. SELECT POSTPRINT LEVEL 2
*         17. PRINT A LINE
*         18. VERIFY NO PFC ERROR STATUS
*         19. REPEAT FROM STEP 3 IF REPEAT CONDITIONS 
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON (CONN) 
*         2.  ABORT ON (FUNC) 
*         3.  ABORT ON (STATUS) 
*         4.  ABORT ON (OUT)
*         5.  NO COINCIDENT STATUS PRIOR TO PFC LOAD (203)
*         6.  NO PFC ERROR AFTER SELECTING ILLEGAL FORMAT LEVEL (504) 
*         7.  PFC ERROR AFTER SELECTING LEGAL FORMAT LEVEL (505)
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (CONN) AT LINE *OCT
*         2.  ABORT ON (FUNC) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (OUT) AT LINE *OCT 
*         5.  NEED COINCIDENT STATUS TO LOAD PFC. 
*         6.  SELECTED ILLEGAL FORMAT LEVEL.  EXPECTED
*             PFC ERROR 
*         7.  SELECTED LEGAL FORMAT LEVEL. EXPECTED NO
*             PFC ERROR 
* 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B3 - WORD COUNT FROM OB 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP96A - ERROR PROCESSOR
*         FTP96Z - ERROR PROCESSOR
*         FTP98A - RESTORE PFC MEMORY 11 INCH PAPER 
*         FTP98F - RESTORE PFC MEMORY 8.5 INCH PAPER
*         FTP98G - RESTORE PFC MEMORY 12 INCH PAPER 
* 
* 
*  *********************************************************
* 
*  CHECKS THE 8LPI PFC MEMORY FOR POSTPRINT INHIBIT ERROR 
1  FORMAT FTP29 POSTPRINT INHIBIT 8LPI/PFC
2  FORMAT FTP29 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP29 ABORT ON (CONN) AT LINE *OCT
4  FORMAT FTP29 ABORT ON (FUNC) AT LINE *OCT
5  FORMAT FTP29 ABORT ON (STATUS) AT LINE *OCT
6  FORMAT FTP29 ABORT ON (OUT) AT LINE *OCT 
14 FORMAT FTP29 DOES NOT RUN ON NON-PFC PRINTERS
15 FORMAT FTP29 ERROR CODE *OCT AT LINE *OCT
17 FORMAT *DEC ERROR(S) OCCURRED IN FTP29 
* 
*   OB(1) - OB(55) LOAD DATA OF 02 WITH TOP OF FORM 
*   AND LAST LINE CODE FOR 8 LPI. 
* 
*   CHARACTER CODES FOR TRAIN TYPE 1 THRU 5 
* 
*         *SPACE PRINT *
   DATA(OB(300),CON)6,6247,2123,2560,4751,3145,6360 
* 
*         *LEGAL PRINT *
   DATA(OB(314),CON)6,4325,2721,4360,4751,3145,6360 
* 
*   CHARACTER CODES FOR TRAIN TYPE 6
* 
*         *SPACE PRINT* 
   DATA(OB(400),CON)13,123,120,101,103,105,40,120,122,111,
  ,116,124
*         *LEGAL PRINT* 
   DATA(OB(414),CON)13,114,105,107,101,114,40,120,122,111,
  ,116,124
* 
20 IF(DC.GE.26)GOTO 21       *POST MESSAGE FOR NON PFC
   MSG 14 TO DISPLAY,PRINT    *PRINTER AND EXIT 
   EXIT 
21 MSG 1 TO PRINT 
   DUP 202 TO OB(2) FOR 103   *PREPARE 02 PFC DATA IN 
   OB(1)=100                 *OB(1) THRU OB(42) 
   B3=55         *SET WORD COUNT FOR 11 INCH PAPER
   IF(P3.AND.77.EQ.10) GOSUB 40   *SET FOR 8.5 INCH PAPER 
   IF(P3.AND.77.EQ.12) GOSUB 41   *SET FOR 12 INCH PAPER
   OB(53)=1400
   OB(55)=1700
22 MSG 1 TO DISPLAY 
   GOSUB 60 
   B4=4 
   IF(P0.NE.6)GOTO 24 
   FUNC 13,ABT 74            *SELECT EXTENDED 
   COPY OB(400) TO OB(300) FOR 30  *INIT PRINT DATA 
24 FUNC 4,ABT 74             *PAGE EJECT
   GOSUB 61 
   IF(SB(1).AND.4000.EQ.0)ERROR 15/203,GOSUB 71 
   B4=4 
   FUNC 10,ABT 74            *SELECT 8 LPI
   FUNC 17,ABT 74            *LOAD 8 LPI PFC
   B4=6 
   OUT B3 WORDS FROM OB(1), ABT 74
   DELAY 100 MSEC 
   B4=4 
   FUNC 7,ABT 74             *CONDITIONAL CLEAR FORMAT
   FUNC 1,ABT 74             *SINGLE SPACE
   GOSUB 61 
   B4=4 
   FUNC 53,ABT 74            *SELECT POSTPRINT LEVEL 3
   B4=6 
   OUT OB(300) WORDS FROM OB(301),ABT 74  *PRINT
   GOSUB 61 
   B4=4 
   FUNC 65,ABT 74            *GET MAINT. STATUS 
   B4=5 
   STATUS 1 WORDS TO SB(2),ABT 74 
   B4=4 
   FUNC 66,ABT 74            *SWITCH TO REG. STATUS 
   IF(SB(2).AND.3000.NE.1000)ERROR 15/504,GOSUB 71
32 B4=4 
   FUNC 7,ABT 74             *CONDITIONAL CLEAR FORMAT
   FUNC 1,ABT 74             *SINGLE SPACE
   GOSUB 61 
   B4=4 
   FUNC 52,ABT 74            *SELECT POSTPRINT LEVEL 2
   B4=6 
   OUT OB(314) WORDS FROM OB(315),ABT 74  *PRINT
   GOSUB 61 
   B4=4 
   FUNC 65,ABT 74            *GET MAINT. STATUS 
   B4=5 
   STATUS 1 WORDS TO SB(2),ABT 74 
   B4=4 
   FUNC 66,ABT 74            *SWITCH TO REG. STATUS 
   IF(SB(2).AND.3400.NE.0)ERROR 15/505,GOSUB 71  *IF ERROR
42 IF(ES.AND.RC.NE.0)GOTO 24  *REPEAT CONDITIONS
*  EXIT SEQUENCE********************************* 
54 IF(ES.AND.RM.NE.0)GOTO 22  *REPEAT MODULE
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
* 
********************GO RELOAD PFC 
* 
57 IF(P3.AND.77.EQ.10) EXIT TO 98F
   IF(P3.AND.77.EQ.12) EXIT TO 98G
   EXIT TO 98A
*  CONNECT SUBROUTINE*********************************
60 B4=3 
   CONN,ABT 74               *CONNECT 
   B4=4 
   FUNC 66,ABT 74 
   B4=5 
   STATUS 1 WORDS TO SB(1),ABT 74  *GET STATUS
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3.EQ.1)GOTO 72     *CHECK STATUS
61 REL
   DELAY 100 MSEC            *WAIT
   GOTO 60                   *TRY AGAIN 
40 B3=105 
   OB(41)=1400
   OB(43)=100 
   OB(103)=1400 
   OB(105)=1700 
   GOTO 43
41 B3=61
   OB(57)=1400
   OB(61)=1700
43 ENDSUB, GOTO 22
*  ERROR SUBROUTINE***********************************
71 B7=B7+1                        *INCREMENT COUNTER
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 96A 
   B4=3 
   CONN,ABT 74               *RECONNECT 
72 RETURN 
*  ABORT ERROR PROCESSOR******************************
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 96Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP30 3000(23,24,25,26,27,30),LOCK
*** CHECK 6 LPI PFC PREPRINT INHIBIT ERROR
**
* 
* 
*   OVERVIEW - MODULE *FTP30* CHECKS THE ABILITY OF THE PRINTER TO
*              DETECT A PFC INHIBIT ERROR IN THE PREPRINT MODE. THE 
*              PFC MEMORY IS CHECKED BY REQUESTING A PREPRINT LINE
*              SPACING TO LEVEL 3, WHICH DOES NOT EXIST, EXECUTING
*              THE PREPRINT AND EXPECTING THE ERROR TO BE CAUGHT. 
*              ANOTHER PREPRINT LINE SPACING IS THEN EXECUTED TO LEVEL
*              2, WHICH EXISTS, AND THE PROPER FUNCTIONING OF THE PFC 
*              MEMORY IS VERIFIED.
* 
*              IT RUNS ON THE PFC PRINTER ONLY. IT CHECKS THE 6 LPI PFC 
*              MEMORY ONLY. IF AN ATTEMPT IS MADE TO RUN THE MODULE ON
*              A NON PFC PRINTER IT EXITS WITH THE MESSAGE *EXIT FTP30
*              NON PFC PRINTER*.
* 
* 
*   DESCRIPTION - CHECK 6 LPI PFC PREPRINT INHIBIT ERROR
* 
*         1.  EXIT WITH MESSAGE IF NON PFC PRINTER
*         2.  BUILD 6 LPI PFC MEMORY DATA WITH ALL 2 LEVELS 
*         3.  CONNECT AND CHECK STATUS
*         4.  IF TRAIN TYPE 6, SELECT EXTENDED ARRAY
*         5.  PAGE EJECT
*         6.  VERIFY COINCIDENT STATUS
*         7.  SELECT 6 LPI
*         8.  LOAD 6 LPI PFC MEMORY 
*         9.  CLEAR FORMAT SELECTION
*         10. SINGLE SPACE
*         11. SELECT PREPRINT LEVEL 3 
*         12. PRINT A LINE
*         13. VERIFY PFC ERROR STATUS (01)
*         14. CONDITIONAL CLEAR FORMAT
*         15. SINGLE SPACE
*         16. SELECT PREPRINT LEVEL 2 
*         17. PRINT A LINE
*         18. VERIFY NO PFC ERROR STATUS
*         19. REPEAT FROM STEP 3 IF REPEAT CONDITIONS 
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON (CONN) 
*         2.  ABORT ON (FUNC) 
*         3.  ABORT ON (STATUS) 
*         4.  ABORT ON (OUT)
*         5.  NO COINCIDENT STATUS PRIOR TO PFC LOAD (203)
*         6.  NO PFC ERROR AFTER SELECTING ILLEGAL FORMAT LEVEL (504) 
*         7.  PFC ERROR AFTER SELECTING LEGAL FORMAT LEVEL (505)
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (CONN) AT LINE *OCT
*         2.  ABORT ON (FUNC) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (OUT) AT LINE *OCT 
*         5.  NEED COINCIDENT STATUS TO LOAD PFC. 
*         6.  SELECTED ILLEGAL FORMAT LEVEL.  EXPECTED
*             PFC ERROR 
*         7.  SELECTED LEGAL FORMAT LEVEL. EXPECTED NO
*             PFC ERROR 
* 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B3 - WORD COUNT FROM OB 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP96A - ERROR PROCESSOR
*         FTP96Z - ERROR PROCESSOR
*         FTP98A - RESTORE PFC MEMORY 11 INCH PAPER 
*         FTP98F - RESTORE PFC MEMORY 8.5 INCH PAPER
*         FTP98G - RESTORE PFC MEMORY 12 INCH PAPER 
* 
* 
*  *********************************************************
* 
*  CHECKS THE 6LPI PFC MEMORY FOR PREPRINT INHIBIT ERROR
1  FORMAT FTP30 PREPRINT INHIBIT 6LPI/PFC 
2  FORMAT FTP30 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP30 ABORT ON (CONN) AT LINE *OCT
4  FORMAT FTP30 ABORT ON (FUNC) AT LINE *OCT
5  FORMAT FTP30 ABORT ON (STATUS) AT LINE *OCT
6  FORMAT FTP30 ABORT ON (OUT) AT LINE *OCT 
14 FORMAT FTP30 DOES NOT RUN ON NON-PFC PRINTERS
15 FORMAT FTP30 ERROR CODE *OCT AT LINE *OCT
17 FORMAT *DEC ERROR(S) OCCURRED IN FTP30 
* 
*   OB(1) - OB(42) LOAD DATA OF 02 WITH TOP OF FORM 
*   AND LAST LINE CODE FOR 6 LPI. 
* 
*   CHARACTER CODES FOR TRAIN TYPE 1 THRU 5 
* 
*         *SPACE PRINT *
   DATA(OB(300),CON)6,6247,2123,2560,4751,3145,6360 
* 
*         *LEGAL PRINT *
   DATA(OB(314),CON)6,4325,2721,4360,4751,3145,6360 
* 
*   CHARACTER CODES FOR TRAIN TYPE 6
* 
*         *SPACE PRINT* 
   DATA(OB(400),CON)13,123,120,101,103,105,40,120,122,111,
  ,116,124
*         *LEGAL PRINT* 
   DATA(OB(414),CON)13,114,105,107,101,114,40,120,122,111,
  ,116,124
* 
20 IF(DC.GE.26)GOTO 21       *POST MESSAGE FOR NON PFC
   MSG 14 TO DISPLAY,PRINT    *PRINTER AND EXIT 
   EXIT 
21 MSG 1 TO PRINT 
   DUP 202 TO OB(2) FOR 62   *PREPARE 02 PFC DATA IN
   OB(1)=100                 *OB(1) THRU OB(42) 
   B3=42         *SET WORD COUNT FOR 11 INCH PAPER
   IF(P3.AND.77.EQ.10) GOSUB 40   *SET FOR 8.5 INCH PAPER 
   IF(P3.AND.77.EQ.12) GOSUB 41   *SET FOR 12 INCH PAPER
   OB(40)=14
   OB(42)=1700
22 MSG 1 TO DISPLAY 
   GOSUB 60 
   B4=4 
   IF(P0.NE.6)GOTO 24 
   FUNC 13,ABT 74            *SELECT EXTENDED 
   COPY OB(400) TO OB(300) FOR 30  *INIT PRINT DATA 
24 FUNC 4,ABT 74             *PAGE EJECT
   GOSUB 61 
   IF(SB(1).AND.4000.EQ.0)ERROR 15/203,GOSUB 71 
   B4=4 
   FUNC 11,ABT 74            *SELECT 6 LPI
   FUNC 16,ABT 74            *LOAD 6 LPI PFC
   B4=6 
   OUT B3 WORDS FROM OB(1), ABT 74
   DELAY 100 MSEC 
   B4=4 
   FUNC 7,ABT 74             *CONDITIONAL CLEAR FORMAT
   FUNC 1,ABT 74             *SINGLE SPACE
   GOSUB 61 
   B4=4 
   FUNC 33,ABT 74            *SELECT PREPRINT LEVEL 3 
   B4=6 
   OUT OB(300) WORDS FROM OB(301),ABT 74  *PRINT
   GOSUB 61 
   B4=4 
   FUNC 65,ABT 74            *GET MAINT. STATUS 
   B4=5 
   STATUS 1 WORDS TO SB(2),ABT 74 
   B4=4 
   FUNC 66,ABT 74            *SWITCH TO REG. STATUS 
   IF(SB(2).AND.3000.NE.1000)ERROR 15/504,GOSUB 71
32 B4=4 
   FUNC 7,ABT 74             *CONDITIONAL CLEAR FORMAT
   FUNC 1,ABT 74             *SINGLE SPACE
   GOSUB 61 
   B4=4 
   FUNC 52,ABT 74            *SELECT POSTPRINT LEVEL 2
   B4=6 
   OUT OB(314) WORDS FROM OB(315),ABT 74  *PRINT
   GOSUB 61 
   B4=4 
   FUNC 65,ABT 74            *GET MAINT. STATUS 
   B4=5 
   STATUS 1 WORDS TO SB(2),ABT 74 
   B4=4 
   FUNC 66,ABT 74            *SWITCH TO REG. STATUS 
   IF(SB(2).AND.3400.NE.0)ERROR 15/505,GOSUB 71  *IF ERROR
42 IF(ES.AND.RC.NE.0)GOTO 24  *REPEAT CONDITIONS
*  EXIT SEQUENCE********************************* 
54 IF(ES.AND.RM.NE.0)GOTO 22  *REPEAT MODULE
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
* 
********************GO RELOAD PFC 
* 
57 IF(P3.AND.77.EQ.10) EXIT TO 98F
   IF(P3.AND.77.EQ.12) EXIT TO 98G
   EXIT TO 98A
*  CONNECT SUBROUTINE*********************************
60 B4=3 
   CONN,ABT 74               *CONNECT 
   B4=4 
   FUNC 66,ABT 74 
   B4=5 
   STATUS 1 WORDS TO SB(1),ABT 74  *GET STATUS
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 64     *CHECK STATUS
61 REL
   DELAY 100 MSEC            *WAIT
   GOTO 60                   *TRY AGAIN 
64 RETURN 
*  ERROR SUBROUTINE***********************************
71 B7=B7+1                        *INCREMENT COUNTER
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 96A 
   B4=3 
   CONN,ABT 74               *RECONNECT 
72 RETURN 
40 B3=64
   OB(30)=14
   OB(32)=1 
   OB(62)=1400
   OB(64)=1700
   ENDSUB, GOTO 22
41 B3=45
   OB(43)=14
   OB(45)=1700
   ENDSUB, GOTO 22
*  ABORT ERROR PROCESSOR******************************
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 96Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP31 3000(23,24,25,26,27,30),LOCK
*** CHECK 8 LPI PFC PREPRINT INHIBIT ERROR
**
* 
* 
*   OVERVIEW - MODULE *FTP31* CHECKS THE ABILITY OF THE PRINTER TO
*              DETECT A PFC INHIBIT ERROR IN THE PREPRINT MODE. THE 
*              PFC MEMORY IS CHECKED BY REQUESTING A PREPRINT LINE
*              SPACING TO LEVEL 3, WHICH DOES NOT EXIST, EXECUTING
*              THE PREPRINT AND EXPECTING THE ERROR TO BE CAUGHT. 
*              ANOTHER PREPRINT LINE SPACING IS THEN EXECUTED TO LEVEL
*              2, WHICH EXISTS, AND THE PROPER FUNCTIONING OF THE PFC 
*              MEMORY IS VERIFIED.
* 
*              IT RUNS ON THE PFC PRINTER ONLY. IT CHECKS THE 8 LPI PFC 
*              MEMORY ONLY. IF AN ATTEMPT IS MADE TO RUN THE MODULE ON
*              A NON PFC PRINTER IT EXITS WITH THE MESSAGE *EXIT FTP31
*              NON PFC PRINTER*.
* 
* 
*   DESCRIPTION - CHECK 8 LPI PFC PREPRINT INHIBIT ERROR
* 
*         1.  EXIT WITH MESSAGE IF NON PFC PRINTER
*         2.  BUILD 8 LPI PFC MEMORY DATA WITH ALL 2 LEVELS 
*         3.  CONNECT AND CHECK STATUS
*         4.  IF TRAIN TYPE 6, SELECT EXTENDED ARRAY
*         5.  PAGE EJECT
*         6.  VERIFY COINCIDENT STATUS
*         7.  SELECT 8 LPI
*         8.  LOAD 8 LPI PFC MEMORY 
*         9.  CLEAR FORMAT SELECTION
*         10. SINGLE SPACE
*         11. SELECT PREPRINT LEVEL 3 
*         12. PRINT A LINE
*         13. VERIFY PFC ERROR STATUS (01)
*         14. CONDITIONAL CLEAR FORMAT
*         15. SINGLE SPACE
*         16. SELECT PREPRINT LEVEL 2 
*         17. PRINT A LINE
*         18. VERIFY NO PFC ERROR STATUS
*         19. REPEAT FROM STEP 3 IF REPEAT CONDITIONS 
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON (CONN) 
*         2.  ABORT ON (FUNC) 
*         3.  ABORT ON (STATUS) 
*         4.  ABORT ON (OUT)
*         5.  NO COINCIDENT STATUS PRIOR TO PFC LOAD (203)
*         6.  NO PFC ERROR AFTER SELECTING ILLEGAL FORMAT LEVEL (504) 
*         7.  PFC ERROR AFTER SELECTING LEGAL FORMAT LEVEL (505)
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (CONN) AT LINE *OCT
*         2.  ABORT ON (FUNC) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (OUT) AT LINE *OCT 
*         5.  NEED COINCIDENT STATUS TO LOAD PFC. 
*         6.  SELECTED ILLEGAL FORMAT LEVEL.  EXPECTED
*             PFC ERROR 
*         7.  SELECTED LEGAL FORMAT LEVEL. EXPECTED NO
*             PFC ERROR 
* 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B3 - WORD COUNT FROM OB 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP96A - ERROR PROCESSOR
*         FTP96Z - ERROR PROCESSOR
*         FTP98A - RESTORE PFC MEMORY 11 INCH PAPER 
*         FTP98F - RESTORE PFC MEMORY 8.5 INCH PAPER
*         FTP98G - RESTORE PFC MEMORY 12 INCH PAPER 
* 
* 
*  *********************************************************
* 
*  CHECKS THE 8LPI PFC MEMORY FOR PREPRINT INHIBIT ERROR
1  FORMAT FTP31 PREPRINT INHIBIT 8LPI/PFC 
2  FORMAT FTP31 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP31 ABORT ON (CONN) AT LINE *OCT
4  FORMAT FTP31 ABORT ON (FUNC) AT LINE *OCT
5  FORMAT FTP31 ABORT ON (STATUS) AT LINE *OCT
6  FORMAT FTP31 ABORT ON (OUT) AT LINE *OCT 
14 FORMAT FTP31 DOES NOT RUN ON NON-PFC PRINTERS
15 FORMAT FTP31 ERROR CODE *OCT AT LINE *OCT
17 FORMAT *DEC ERROR(S) OCCURRED IN FTP31 
* 
*   OB(1) - OB(55) LOAD DATA OF 02 WITH TOP OF FORM 
*   AND LAST LINE CODE FOR 8 LPI. 
* 
*   CHARACTER CODES FOR TRAIN TYPE 1 THRU 5 
* 
*         *SPACE PRINT *
   DATA(OB(300),CON)6,6247,2123,2560,4751,3145,6360 
* 
*         *LEGAL PRINT *
   DATA(OB(314),CON)6,4325,2721,4360,4751,3145,6360 
* 
*   CHARACTER CODES FOR TRAIN TYPE 6
* 
*         *SPACE PRINT* 
   DATA(OB(400),CON)13,123,120,101,103,105,40,120,122,111,
  ,116,124
*         *LEGAL PRINT* 
   DATA(OB(414),CON)13,114,105,107,101,114,40,120,122,111,
  ,116,124
* 
20 IF(DC.GE.26)GOTO 21       *POST MESSAGE FOR NON PFC
   MSG 14 TO DISPLAY,PRINT    *PRINTER AND EXIT 
   EXIT 
21 MSG 1 TO PRINT 
   DUP 202 TO OB(2) FOR 103   *PREPARE 02 PFC DATA IN 
   OB(1)=100                 *OB(1) THRU OB(42) 
   B3=55         *SET WORD COUNT FOR 11 INCH PAPER
   IF(P3.AND.77.EQ.10) GOSUB 40   *SET FOR 8.5 INCH PAPER 
   IF(P3.AND.77.EQ.12) GOSUB 41   *SET FOR 12 INCH PAPER
   OB(53)=1400
   OB(55)=1700
22 MSG 1 TO DISPLAY 
   GOSUB 60 
   B4=4 
   IF(P0.NE.6)GOTO 24 
   FUNC 13,ABT 74            *SELECT EXTENDED 
   COPY OB(400) TO OB(300) FOR 30  *INIT PRINT DATA 
24 FUNC 4,ABT 74             *PAGE EJECT
   GOSUB 61 
   IF(SB(1).AND.4000.EQ.0)ERROR 15/203,GOSUB 71 
   B4=4 
   FUNC 10,ABT 74            *SELECT 8 LPI
   FUNC 17,ABT 74            *LOAD 8 LPI PFC
   B4=6 
   OUT B3 WORDS FROM OB(1), ABT 74
   DELAY 100 MSEC 
   B4=4 
   FUNC 7,ABT 74             *CONDITIONAL CLEAR FORMAT
   FUNC 1,ABT 74             *SINGLE SPACE
   GOSUB 61 
   B4=4 
   FUNC 33,ABT 74            *SELECT PREPRINT LEVEL 3 
   B4=6 
   OUT OB(300) WORDS FROM OB(301),ABT 74  *PRINT
   GOSUB 61 
   B4=4 
   FUNC 65,ABT 74            *GET MAINT. STATUS 
   B4=5 
   STATUS 1 WORDS TO SB(2),ABT 74 
   B4=4 
   FUNC 66,ABT 74            *SWITCH TO REG. STATUS 
   IF(SB(2).AND.3000.NE.1000)ERROR 15/504,GOSUB 71
32 B4=4 
   FUNC 7,ABT 74             *CONDITIONAL CLEAR FORMAT
   FUNC 1,ABT 74             *SINGLE SPACE
   GOSUB 61 
   B4=4 
   FUNC 52,ABT 74            *SELECT POSTPRINT LEVEL 2
   B4=6 
   OUT OB(314) WORDS FROM OB(315),ABT 74  *PRINT
   GOSUB 61 
   B4=4 
   FUNC 65,ABT 74            *GET MAINT. STATUS 
   B4=5 
   STATUS 1 WORDS TO SB(2),ABT 74 
   B4=4 
   FUNC 66,ABT 74            *SWITCH TO REG. STATUS 
   IF(SB(2).AND.3400.NE.0)ERROR 15/505,GOSUB 71  *IF ERROR
42 IF(ES.AND.RC.NE.0)GOTO 24  *REPEAT CONDITIONS
*  EXIT SEQUENCE********************************* 
54 IF(ES.AND.RM.NE.0)GOTO 22  *REPEAT MODULE
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
* 
********************GO RELOAD PFC 
* 
57 IF(P3.AND.77.EQ.10) EXIT TO 98F
   IF(P3.AND.77.EQ.12) EXIT TO 98G
   EXIT TO 98A
*  CONNECT SUBROUTINE*********************************
60 B4=3 
   CONN,ABT 74               *CONNECT 
   B4=4 
   FUNC 66,ABT 74 
   B4=5 
   STATUS 1 WORDS TO SB(1),ABT 74  *GET STATUS
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3.EQ.1)GOTO 72     *CHECK STATUS
61 REL
   DELAY 100 MSEC            *WAIT
   GOTO 60                   *TRY AGAIN 
*  ERROR SUBROUTINE***********************************
71 B7=B7+1                        *INCREMENT COUNTER
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 96A 
   B4=3 
   CONN,ABT 74               *RECONNECT 
72 RETURN 
40 B3=105 
   OB(41)=1400
   OB(43)=100 
   OB(103)=1400 
   OB(105)=1700 
   GOTO 43
41 B3=61
   OB(57)=1400
   OB(61)=1700
43 ENDSUB, GOTO 22
*  ABORT ERROR PROCESSOR******************************
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 96Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP32 580(23,24,25,26,27,30),LOCK 
*** CHECK RNB INT - PART 1
**
* 
* 
*   OVERVIEW - MODULE *FTP32* CHECKS THE READY AND NOT BUSY INTERRUPT 
*              IT CHECKS THE INTERRUPT TO BE SELECTED AND CLEARED.
* 
* 
*   DESCRIPTION - CHECK RNB INT - PART 1
* 
*         1.  CONNECT AND CHECK STATUS
*         2.  SELECT RNB INT
*         3.  VERIFY RNB INTERRUPT STATUS 
*         4.  CLEAR RNB INT 
*         5.  VERIFY NO RNB INTERRUPT STATUS
*         6.  REPEAT FROM STEP 1 FOR REPEAT CONDITIONS
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON (RES)
*         2.  ABORT ON (SELECT) 
*         3.  ABORT ON (STATUS) 
*         4.  NO READY-AND-NOT-BUSY INTERRUPT 
*             IN STATIC STATE (101) 
*         5.  READY-AND-NOT-BUSY INTERRUPT FAILED TO CLEAR
*             IN STATIC STATE (102) 
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (RES) AT LINE *OCT 
*         2.  ABORT ON (SELECT) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  SELECTED READY-AND-NOT-BUSY INTERRUPT 
*             IN STATIC STATE 
*         5.  CLEARED READY-AND-NOT-BUSY INTERRUPT
*             IN STATIC STATE 
* 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP97A - ERROR PROCESSOR
*         FTP97Z - ERROR PROCESSOR
* 
* 
*  *********************************************************
* 
/  THIS MODULE CHECKS THE READY AND NOT BUSY INTERRUPT
1  FORMAT FTP32 READY-AND-NOT-BUSY INTERRUPT PART 1 
2  FORMAT FTP32 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP32 ABORT ON (RES) AT LINE *OCT 
4  FORMAT FTP32 ABORT ON (SELECT) AT LINE *OCT
5  FORMAT FTP32 ABORT ON (STATUS) AT LINE *OCT
15 FORMAT FTP32 ERROR CODE *OCT AT LINE *OCT
17 FORMAT *DEC ERROR(S) IN FTP32
20 MSG 1 TO PRINT 
22 MSG 1 TO DISPLAY 
24 GOSUB 60                  *CONNECT 
25 B4=4 
   SELECT RNBINT,ABT 74 
   B4=5 
   STATUS,ABT 74
   IF(SB(1).AND.3717.NE.201)ERROR 15/101,GOSUB 71 
26 B4=4 
   SELECT CLRRNB,ABT 74 
   B4=5 
   STATUS,ABT 74
   IF(SB(1).AND.3717.NE.1)ERROR 15/102,GOSUB 71 
30 IF(ES.AND.SL.EQ.0)GOTO 32
31 B6=B6+1
   MSG 2(B6,B7,SB(1)) TO DISPLAY  *POST SCOPE LOOP MESSAGE
   GOTO 24
32 IF(ES.AND.RC.NE.0)GOTO 31
/  EXIT SEQUENCE
54 IF(ES.AND.RM NE 0)GOTO 31    *IF REPEAT MODULE 
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 EXIT 
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
   IF(ES.AND.SL.NE.0)GOTO 60  *IF SCOPE LOOP
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   IF(ES.AND.SL NE 0)GOTO 72      *IF SCOPE LOOP
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 97A 
   B4=3 
   RES,ABT 74                *RECONNECT 
72 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
   IF(ES.AND.SL.EQ.0)GOTO 75  *IF NOT SCOPE LOOP
   MSG 2(B6,B7,SB(1)) TO DISPLAY  *YES=POST DISPLAY MESSAGE 
   GOTO 24                   *RESTART 
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP33 580(23,24,25,26,27,30),LOCK 
*** CHECK RNB INT - PART 2
**
* 
* 
*   OVERVIEW - MODULE *FTP33* CHECKS THE READY AND NOT BUSY INTERRUPT 
*              IT CHECKS THE INTERRUPT TO BE SELECTED AND CLEARED 
*              BY A RELEASE AND RECONNECT.
* 
* 
*   DESCRIPTION - CHECK RNB INT - PART 2
* 
*         1.  CONNECT AND CHECK STATUS
*         2.  SELECT RNB INT
*         3.  VERIFY RNB INTERRUPT STATUS 
*         4.  RELEASE 
*         5.  RECONNECT 
*         6.  VERIFY NO RNB INTERRUPT STATUS
*         7.  REPEAT FROM STEP 1 IF REPEAT CONDITIONS 
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON (RES)
*         2.  ABORT ON (SELECT) 
*         3.  ABORT ON (STATUS) 
*         4.  NO READY-AND-NOT-BUSY INTERRUPT 
*             IN STATIC STATE (101) 
*         5.  READY-AND-NOT-BUSY INTERRUPT FAILED TO CLEAR
*             BY RECONNECTING (103) 
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (RES) AT LINE *OCT 
*         2.  ABORT ON (SELECT) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  SELECTED READY-AND-NOT-BUSY INTERRUPT 
*             IN STATIC STATE 
*         5.  CLEARED READY-AND-NOT-BUSY INTERRUPT
*             BY RECONNECTING 
* 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP97A - ERROR PROCESSOR
*         FTP97Z - ERROR PROCESSOR
* 
* 
*  *********************************************************
* 
/  THIS MODULE CHECKS THE READY AND NOT BUSY INTERRUPT
1  FORMAT FTP33 READY-AND-NOT-BUSY INTERRUPT PART 2 
2  FORMAT FTP33 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP33 ABORT ON (RES) AT LINE *OCT 
4  FORMAT FTP33 ABORT ON (SELECT) AT LINE *OCT
5  FORMAT FTP33 ABORT ON (STATUS) AT LINE *OCT
15 FORMAT FTP33 ERROR CODE *OCT AT LINE *OCT
17 FORMAT *DEC ERROR(S) IN FTP33
20 MSG 1 TO PRINT 
22 MSG 1 TO DISPLAY 
24 GOSUB 60                  *CONNECT 
   B4=4 
   SELECT RNBINT,ABT 74 
   B4=5 
   STATUS,ABT 74
   IF(SB(1).AND.3717.NE.201)ERROR 15/101,GOSUB 71 
26 GOSUB 61                  *CLEAR INT BY RELEASE
   IF(SB(1).AND.3717.NE.1)ERROR 15/103,GOSUB 71  *IF INT
   IF(ES.AND.RC.EQ.0)GOTO 54  *IF NOT REPEAT CONDITIONS 
34 B6=B6+1
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   GOTO 24
/  EXIT SEQUENCE
54 IF(ES.AND.RM NE 0)GOTO 34    *IF REPEAT MODULE 
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 EXIT 
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 97A 
   B4=3 
   RES,ABT 74                *RECONNECT 
72 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP34 580(23,24,25,26,27,30),LOCK 
*** CHECK RNB INT - PART 3
**
* 
* 
*   OVERVIEW - MODULE *FTP34* CHECKS THE READY AND NOT BUSY INTERRUPT.
*              IT CHECKS THE INTERRUPT BY INITIATING A PRINT OPERATION, 
*              SELECTING THE INTERRUPT AND EXPECTING IT TO BE PRESENT 
*              WHEN THE PRINT OPERATION IS FINISHED. THE INTERRUPT IS 
*              THEN CLEARED DURING THE NEXT PRINT OPERATION.
* 
* 
*   DESCRIPTION - CHECK RNB INT - PART 3
* 
*         1.  PREPARE DATA FOR PRINTING 
*         2.  CLEAR FORMAT SELECTIONS 
*         3.  IF TRAIN TYPE 6, SELECT EXTENDED ARRAY
*         4.  CONNECT AND CHECK STATUS
*         5.  ISSUE LINE FOR PRINTING 
*         6.  SELECT RNB INT WHILE BUSY 
*         7.  WAIT TILL NOT BUSY
*         8.  VERIFY RNB INTERRUPT STATUS 
*         9.  ISSUE LINE FOR PRINTING 
*        10.  CLEAR RNB INT WHILE BUSY
*        11.  VERIFY NO INTERRUPT STATUS
*        12.  WAIT TILL NOT BUSY
*        13.  VERIFY NO INTERRUPT STATUS
*        14.  REPEAT FROM STEP 4 IF REPEAT CONDITIONS 
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON (RES)
*         2.  ABORT ON (SELECT) 
*         3.  ABORT ON (STATUS) 
*         4.  ABORT ON (PRINT)
*         5.  UNEXPECTED NOT READY AND NOT BUSY(100)
*         6.  NO READY-AND-NOT-BUSY INTERRUPT STATUS
*             AFTER A PRINT OPERATION. (104)
*         7.  READY-AND-NOT-BUSY INTERRUPT FAILED TO CLEAR
*             DURING A PRINT OPERATION. (105) 
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (RES) AT LINE *OCT 
*         2.  ABORT ON (SELECT) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (PRINT) AT LINE *OCT 
*         5.  STATUS IS NOT READY AND NOT BUSY
*         6.  SELECTED READY-AND-NOT-BUSY INTERRUPT 
*             DURING A PRINT OPERATION. EXPECTED INT. 
*         7.  CLEARED READY-AND-NOT-BUSY INTERRUPT
*             DURING A PRINT OPERATION. EXPECTED NO INT.
* 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP97A - ERROR PROCESSOR
*         FTP97Z - ERROR PROCESSOR
* 
* 
*  *********************************************************
* 
/  THIS MODULE CHECKS THE READY AND NOT BUSY INTERRUPT
1  FORMAT FTP34 READY-AND-NOT-BUSY INTERRUPT PART 3 
2  FORMAT FTP34 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP34 ABORT ON (RES) AT LINE *OCT 
4  FORMAT FTP34 ABORT ON (SELECT) AT LINE *OCT
5  FORMAT FTP34 ABORT ON (STATUS) AT LINE *OCT
6  FORMAT FTP34 ABORT ON (PRINT) AT LINE *OCT 
15 FORMAT FTP34 ERROR CODE *OCT AT LINE *OCT
17 FORMAT *DEC ERROR(S) IN FTP34
* 
*   CHARACTER CODE FOR TRAIN TYPE 1 THRU 5
* 
*   OB(1) - OB(6) CHARACTER CODE FOR *RDY BSY INT*
* 
*   CHARACTER CODE FOR TRAIN TYPE 6 
* 
*   OB(7) - OB(21) CHARACTER CODE FOR *RDY BSY INT* 
* 
   DATA(OB(1),CON)5124,7060,2262,7060,3145,6360,122,104,131,
  ,40,102,123,131,40,111,116,124
20 MSG 1 TO PRINT 
22 MSG 1 TO DISPLAY 
23 GOSUB 60 
   B4=4 
   SELECT CLEAR,ABT 74
   WC=6                      *FOR TRAIN TYPE 1 THRU 5 
   BA=1 
   IF(P0.NE.6)GOTO 24 
   WC=13                     *FOR TRAIN TYPE 6
   BA=7 
   SELECT EXTENDED,ABT 74 
24 GOSUB 60                  *CONNECT 
25 B4=6 
   PRINT,ABT 74 
   B4=4 
   SELECT RNBINT,ABT 74      *SELECT INT WHILE PRINTING 
   B1=0 
26 B4=5 
   STATUS,ABT 74
   IF(SB(1).AND.2.EQ.0)GOTO 27  *IF NOT BUSY
   DELAY 100 MSEC 
   GOTO 26 WHILE (B1+1.LE.20)   *WAIT FOR NOT BUSY
27 IF(SB(1).AND.3717.NE.201)ERROR 15/104,GOSUB 71  *NO INT
32 B4=6 
   PRINT,ABT 74 
   B4=4 
   SELECT CLRRNB,ABT 74      *CLEAR INT WHILE PRINTING
   B4=5 
   STATUS,ABT 74
   IF(SB(1).AND.3717.NE.103)ERROR 15/105,GOSUB 71  *IF INT
   B1=0 
34 B4=5 
   STATUS,ABT 74
   IF(SB(1).AND.2.EQ.0)GOTO 35  *IF NOT BUSY
   DELAY 100 MSEC 
   GOTO 34 WHILE (B1+1.LE.40)   *WAIT FOR NOT BUSY
35 IF(SB(1).AND.3717.NE.1)ERROR 15/100,GOSUB 71  *IF INT
36 IF(ES.AND.SL.EQ.0)GOTO 40
   B6=B6+1                   *SCOPE LOOP
   MSG 2(B6,B7,SB(1)) TO DISPLAY  *POST SCOPE LOOP MESSAGE
   GOTO 24
40 IF(ES.AND.RC.NE.0)GOTO 24  *REPEAT CONDITION 
/  EXIT SEQUENCE
54 IF(ES.AND.RM NE 0)GOTO 22    *IF REPEAT MODULE 
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 EXIT 
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
   IF(ES.AND.SL.NE.0)GOTO 60  *IF SCOPE LOOP
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   IF(ES.AND.SL NE 0)GOTO 72      *IF SCOPE LOOP
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 97A 
   B4=3 
   RES,ABT 74                *RECONNECT 
72 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
   IF(ES.AND.SL.EQ.0)GOTO 75  *IF NOT SCOPE LOOP
   MSG 2(B6,B7,SB(1)) TO DISPLAY  *YES=POST DISPLAY MESSAGE 
   GOTO 23                   *RESTART 
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 23        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP35 580(23,24,25,26,27,30),LOCK 
*** CHECK EOP INT - PART 1
**
* 
* 
*   OVERVIEW - MODULE *FTP35* CHECKS THE END OF OPERATION INTERRUPT.
*              IT SELECTS THE INTERRUPT, INITIATES A SINGLE SPACE AND 
*              EXPECTS THE INTERRUPT TO BE PRESENT AT THE END OF THE
*              SINGLE SPACE OPERATION. THE INTERRUPT IS THEN CLEARED. 
* 
* 
*   DESCRIPTION - CHECK EOP INT - PART 1
* 
*         1.  CONNECT AND CHECK STATUS
*         2.  SELECT EOP INTERRUPT
*         3.  SINGLE SPACE
*         4.  WAIT FOR NOT BUSY 
*         5.  VERIFY INTERRUPT STATUS 
*         6.  CLEAR EOP INTERRUPT 
*         7.  VERIFY NO INTERRUPT STATUS
*         8.  REPEAT FROM STEP 1 IF REPEAT CONDITION
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON (RES)
*         2.  ABORT ON (SELECT) 
*         3.  ABORT ON (STATUS) 
*         4.  ABORT ON (SPACE)
*         5.  NO E-O-P INTERRUPT
*             AFTER SPACE FUNCTION.(106)
*         6.  E-O-P INTERRUPT FAILED TO CLEAR (107) 
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (RES) AT LINE *OCT 
*         2.  ABORT ON (SELECT) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (SPACE) AT LINE *OCT 
*         5.  SELECTED E-O-P INTERRUPT. NO INTERRUPT
*             AFTER SPACE FUNCTION. 
*         6.  CLEARED E-O-P INTERRUPT. EXPECTED NO
*             INTERRUPT STATUS. 
* 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP97A - ERROR PROCESSOR
*         FTP97Z - ERROR PROCESSOR
* 
* 
*  *********************************************************
* 
/  THIS MODULE CHECKS THE END OF OPERATION INTERRUPT
1  FORMAT FTP35 END-OF-OPERATION INTERRUPT PART 1 
2  FORMAT FTP35 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP35 ABORT ON (RES) AT LINE *OCT 
4  FORMAT FTP35 ABORT ON (SELECT) AT LINE *OCT
5  FORMAT FTP35 ABORT ON (STATUS) AT LINE *OCT
10 FORMAT FTP35 ABORT ON (SPACE) AT LINE *OCT 
15 FORMAT FTP35 ERROR CODE *OCT AT LINE *OCT
17 FORMAT *DEC ERROR(S) IN FTP35
20 MSG 1 TO PRINT 
22 MSG 1 TO DISPLAY 
24 GOSUB 60                  *CONNECT 
25 B4=4 
   SELECT EOPINT,ABT 74 
   B4=10
   SPACE 1,ABT 74            *INITIATE OPERATION
   B1=0 
26 B4=5 
   STATUS,ABT 74
   IF(SB(1).AND.2.EQ.0)GOTO 27  *IF NOT BUSY
   DELAY 100 MSEC 
   GOTO 26 WHILE (B1+1.LE.40)   *WAIT FOR NOT BUSY
27 IF(SB(1).AND.3717.NE.401)ERROR 15/106,GOSUB 71  *NO INT
32 B4=4 
   SELECT CLREOP,ABT 74      *CLEAR INTERRUPT 
   B4=5 
   STATUS,ABT 74
   IF(SB(1).AND.3717.NE.1)ERROR 15/107,GOSUB 71  *IF INT
34 IF(ES.AND.SL.EQ.0)GOTO 36
   B6=B6+1                   *SCOPE LOOP
   MSG 2(B6,B7,SB(1)) TO DISPLAY  *POST SCOPE LOOP MESSAGE
   GOTO 24
36 IF(ES.AND.RC.NE.0)GOTO 24  *REPEAT CONDITION 
/  EXIT SEQUENCE
54 IF(ES.AND.RM NE 0)GOTO 22    *IF REPEAT MODULE 
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 EXIT 
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
   IF(ES.AND.SL.NE.0)GOTO 60  *IF SCOPE LOOP
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   IF(ES.AND.SL NE 0)GOTO 72      *IF SCOPE LOOP
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 97A 
   B4=3 
   RES,ABT 74                *RECONNECT 
72 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
   IF(ES.AND.SL.EQ.0)GOTO 75  *IF NOT SCOPE LOOP
   MSG 2(B6,B7,SB(1)) TO DISPLAY  *YES=POST DISPLAY MESSAGE 
   GOTO 24                   *RESTART 
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP36 580(23,24,25,26,27,30),LOCK 
*** CHECK EOP INT - PART 2
**
* 
* 
*   OVERVIEW - MODULE *FTP36* CHECKS THE END OF OPERATION INTERRUPT.
*              IT CHECKS THE INTERRUPT BY INITIATING A PRINT OPERATION, 
*              SELECTING THE INTERRUPT AND EXPECTING IT TO BE PRESENT 
*              WHEN THE PRINT OPERATION IS FINISHED. THE INTERRUPT IS 
*              THEN CLEARED.
* 
* 
*   DESCRIPTION - CHECK EOP INT - PART 2
* 
*         1.  PREPARE DATA FOR PRINTING 
*         2.  CONNECT AND CHECK STATUS
*         3.  CLEAR FORMAT SELECTIONS 
*         4.  IF TRAIN TYPE 6, SELECT EXTENDED ARRAY
*         5.  CONNECT AND CHECK STATUS
*         6.  ISSUE LINE FOR PRINTING 
*         7.  SELECT EOP INTERRUPT
*         8.  WAIT FOR NOT BUSY 
*         9.  VERIFY INTERRUPT STATUS 
*        10.  CLEAR EOP INTERRUPT 
*        11.  VERIFY NO INTERRUPT STATUS
*        12.  REPEAT FROM STEP 5 IF REPEAT CONDITION
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON (RES)
*         2.  ABORT ON (SELECT) 
*         3.  ABORT ON (STATUS) 
*         4.  ABORT ON (PRINT)
*         5.  E-O-P INTERRUPT FAILED TO CLEAR (107) 
*         6.  NO END-OF-OPERATION INTERRUPT 
*             STATUS AFTER PRINT (110)
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (RES) AT LINE *OCT 
*         2.  ABORT ON (SELECT) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (PRINT) AT LINE *OCT 
*         5.  CLEARED E-O-P INTERRUPT. EXPECTED NO
*             INTERRUPT STATUS. 
*         6.  SELECTED END-OF-OPERATION INTERRUPT.
*             EXPECTED INTERRUPT AFTER PRINT. 
* 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP97A - ERROR PROCESSOR
*         FTP97Z - ERROR PROCESSOR
* 
* 
*  *********************************************************
* 
/  THIS MODULE CHECKS THE END OF OPERATION INTERRUPT
1  FORMAT FTP36 END-OF-OPERATION INTERRUPT PART 2 
2  FORMAT FTP36 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP36 ABORT ON (RES) AT LINE *OCT 
4  FORMAT FTP36 ABORT ON (SELECT) AT LINE *OCT
5  FORMAT FTP36 ABORT ON (STATUS) AT LINE *OCT
6  FORMAT FTP36 ABORT ON (PRINT) AT LINE *OCT 
15 FORMAT FTP36 ERROR CODE *OCT AT LINE *OCT
17 FORMAT *DEC ERROR(S) IN FTP36
* 
*   CHARACTER CODE FOR TRAIN TYPE 1 THRU 5
* 
*   OB(1) - OB(6) CHARACTER CODE FOR *END OPER INT* 
* 
*   CHARACTER CODE FOR TRAIN TYPE 6 
* 
*   OB(7) - OB(22) CHARACTER CODE FOR *END OPER INT*
* 
   DATA(OB(1),CON)2545,2460,4647,2551,6031,4563,105,116,104,
  ,40,117,120,105,122,40,111,116,124
20 MSG 1 TO PRINT 
22 MSG 1 TO DISPLAY 
23 GOSUB 60 
   B4=4 
   SELECT CLEAR,ABT 74
   WC=6                      *FOR TRAIN TYPE 1 THRU 5 
   BA=1 
   IF(P0.NE.6)GOTO 24 
   WC=14                     *FOR TRAIN TYPE 6
   BA=7 
   SELECT EXTENDED,ABT 74 
24 GOSUB 60                  *CONNECT 
   B4=6 
   PRINT,ABT 74 
   B4=4 
   SELECT EOPINT,ABT 74 
   B1=0 
25 B4=5 
   STATUS,ABT 74
   IF(SB(1).AND.2.EQ.0)GOTO 26  *IF NOT BUSY
   DELAY 100 MSEC 
   GOTO 25 WHILE (B1+1.LE.20)   *WAIT FOR NOT BUSY
26 IF(SB(1).AND.3717.NE.401)ERROR 15/110,GOSUB 71  *NO INT
32 B4=4 
   SELECT CLREOP,ABT 74 
   B4=5 
   STATUS,ABT 74
   IF(SB(1).AND.3717.NE.1)ERROR 15/107,GOSUB 71  *IF INT
34 IF(ES.AND.SL.EQ.0)GOTO 36
   B6=B6+1                   *SCOPE LOOP
   MSG 2(B6,B7,SB(1)) TO DISPLAY  *POST SCOPE LOOP MESSAGE
   GOTO 24
36 IF(ES.AND.RC.NE.0)GOTO 24  *REPEAT CONDITION 
/  EXIT SEQUENCE
54 IF(ES.AND.RM NE 0)GOTO 22    *IF REPEAT MODULE 
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 EXIT 
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
   IF(ES.AND.SL.NE.0)GOTO 60  *IF SCOPE LOOP
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   IF(ES.AND.SL NE 0)GOTO 72      *IF SCOPE LOOP
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 97A 
   B4=3 
   RES,ABT 74                *RECONNECT 
72 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
   IF(ES.AND.SL.EQ.0)GOTO 75  *IF NOT SCOPE LOOP
   MSG 2(B6,B7,SB(1)) TO DISPLAY  *YES=POST DISPLAY MESSAGE 
   GOTO 23                   *RESTART 
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 23        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP37 580(23,24,25,26,27,30),LOCK 
*** CHECK EOP INT - PART 3
**
* 
* 
*   OVERVIEW - MODULE *FTP37* CHECKS THE END OF OPERATION INTERRUPT.
*              IT CHECKS THE INTERRUPT BY INITIATING A PRINT OPERATION, 
*              SELECTING THE INTERRUPT AND EXPECTING IT TO BE PRESENT 
*              WHEN THE PRINT OPERATION IS FINISHED. THE INTERRUPT IS 
*              THEN CLEARED BY RESELECTION. 
* 
* 
*   DESCRIPTION - CHECK EOP INT - PART 3
* 
*         1.  PREPARE DATA FOR PRINTING 
*         2.  CLEAR FORMAT SELECTIONS 
*         3.  IF TRAIN TYPE 6, SELECT EXTENDED ARRAY
*         4.  CONNECT AND CHECK STATUS
*         5.  ISSUE LINE FOR PRINTING 
*         6.  SELECT EOP INTERRUPT
*         7.  WAIT FOR NOT BUSY 
*         8.  VERIFY INTERRUPT STATUS 
*         9.  SELECT EOP INTERRUPT
*        10.  VERIFY NO INTERRUPT STATUS
*        11.  ISSUE LINE FOR PRINTING 
*        12.  CLEAR EOP INTERRUPT 
*        13.  WAIT FOR NOT BUSY 
*        14.  VERIFY NO INTERRUPT STATUS
*        15.  REPEAT FROM STEP 4 IF REPEAT CONDITION
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON (RES)
*         2.  ABORT ON (SELECT) 
*         3.  ABORT ON (STATUS) 
*         4.  ABORT ON (PRINT)
*         5.  NO END-OF-OPERATION INTERRUPT 
*             STATUS AFTER PRINT (110)
*         6.  END-OF-OPERATION INTERRUPT FAILED TO CLEAR BY 
*             RE-SELECTING.  (111)
*         7.  END-OF-OPERATION INTERRUPT FAILED TO CLEAR WHILE
*             WHILE BUSY.  (112)
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (RES) AT LINE *OCT 
*         2.  ABORT ON (SELECT) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (PRINT) AT LINE *OCT 
*         5.  SELECTED END-OF-OPERATION INTERRUPT.
*             EXPECTED INTERRUPT AFTER PRINT. 
*         6.  CLEARED END-OF-OPERATION INTERRUPT BY 
*             RE-SELECTING.  EXPECTED NO INTERRUPT. 
*         7.  CLEARED END-OF-OPERATION INTERRUPT
*             WHILE BUSY.  EXPECTED NO INTERRUPT. 
* 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP97A - ERROR PROCESSOR
*         FTP97Z - ERROR PROCESSOR
* 
* 
*  *********************************************************
* 
/  THIS MODULE CHECKS THE END OF OPERATION INTERRUPT
1  FORMAT FTP37 END-OF-OPERATION INTERRUPT PART 3 
2  FORMAT FTP37 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP37 ABORT ON (RES) AT LINE *OCT 
4  FORMAT FTP37 ABORT ON (SELECT) AT LINE *OCT
5  FORMAT FTP37 ABORT ON (STATUS) AT LINE *OCT
6  FORMAT FTP37 ABORT ON (PRINT) AT LINE *OCT 
15 FORMAT FTP37 ERROR CODE *OCT AT LINE *OCT
17 FORMAT *DEC ERROR(S) IN FTP37
* 
*   CHARACTER CODE FOR TRAIN TYPE 1 THRU 5
* 
*   OB(1) - OB(6) CHARACTER CODE FOR *END OPER INT* 
* 
*   CHARACTER CODE FOR TRAIN TYPE 6 
* 
*   OB(7) - OB(22) CHARACTER CODE FOR *END OPER INT*
* 
   DATA(OB(1),CON)2545,2460,4647,2551,6031,4563,105,116,104,
  ,40,117,120,105,122,40,111,116,124
20 MSG 1 TO PRINT 
22 MSG 1 TO DISPLAY 
23 GOSUB 60 
   B4=4 
   SELECT CLEAR,ABT 74
   WC=6                      *FOR TRAIN TYPE 1 THRU 5 
   BA=1 
   IF(P0.NE.6)GOTO 24 
   WC=14                     *FOR TRAIN TYPE 6
   BA=7 
   SELECT EXTENDED,ABT 74 
24 GOSUB 60                  *CONNECT 
   B4=6 
   PRINT,ABT 74 
   B4=4 
   SELECT EOPINT,ABT 74 
   B1=0 
25 B4=5 
   STATUS,ABT 74
   IF(SB(1).AND.2.EQ.0)GOTO 26  *IF NOT BUSY
   DELAY 100 MSEC 
   GOTO 25 WHILE (B1+1.LE.20)   *WAIT FOR NOT BUSY
26 IF(SB(1).AND.3717.NE.401)ERROR 15/110,GOSUB 71  *NO INT
   B4=4 
   SELECT EOPINT,ABT 74      *CLEAR BY RESELECTING
   B4=5 
   STATUS,ABT 74
   IF(SB(1).AND.3717.NE.1)ERROR 15/111,GOSUB 71  *IF INT
34 B4=6 
   PRINT,ABT 74 
   B4=4 
   SELECT CLREOP,ABT 74      *CLEAR WHILE BUSY
   B1=0 
35 B4=5 
   STATUS,ABT 74
   IF(SB(1).AND.2.EQ.0)GOTO 36  *IF NOT BUSY
   DELAY 100 MSEC 
   GOTO 35 WHILE (B1+1.LE.20)   *WAIT FOR NOT BUSY
36 IF(SB(1).AND.3717.NE.1)ERROR 15/112,GOSUB 71  *IF INT
   IF(ES.AND.SL.EQ.0)GOTO 40
   B6=B6+1                   *SCOPE LOOP
   MSG 2(B6,B7,SB(1)) TO DISPLAY  *POST SCOPE LOOP MESSAGE
   GOTO 24
40 IF(ES.AND.RC.NE.0)GOTO 24  *REPEAT CONDITION 
/  EXIT SEQUENCE
54 IF(ES.AND.RM NE 0)GOTO 22    *IF REPEAT MODULE 
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 EXIT 
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
   IF(ES.AND.SL.NE.0)GOTO 60  *IF SCOPE LOOP
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   IF(ES.AND.SL NE 0)GOTO 72      *IF SCOPE LOOP
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 97A 
   B4=3 
   RES,ABT 74                *RECONNECT 
72 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
   IF(ES.AND.SL.EQ.0)GOTO 75  *IF NOT SCOPE LOOP
   MSG 2(B6,B7,SB(1)) TO DISPLAY  *YES=POST DISPLAY MESSAGE 
   GOTO 23                   *RESTART 
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 23        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP38 580(23,24,25,26,27,30),LOCK 
*** CHECK ABN EOP INT 
**
* 
* 
*   OVERVIEW - MODULE *FTP38* CHECKS THE ABNORMAL END OF OPERATION
*              INTERRUPT. PART 1 RUNS ON PRINTERS WITH TRAIN TYPE 2, 3
*              OR 6 ONLY. IT CHECKS THE INTERRUPT BY SELECTING IT,
*              ALONG WITH THE END OF OPERATION INTERRUPT, PRINTING A
*              LINE WITH BAD CHARACTERS CODES IN IT, AND CHECKING FOR 
*              THE INTERRUPTS TO BE PRESENT AT THE END OF THE PRINTING
*              OPERATION. IT ALSO CHECKS THE PRINTER TO DETECT BAD
*              CHARACTER CODES. THE INTERRUPTS ARE THEN CLEARED.
* 
*              PART 2 IS RUN ON PRINTERS WITH ALL TRAIN TYPES.
*              IT CHECKS THE INTERRUPT BY SELECTING IT, 
*              ALONG WITH THE END OF OPERATION INTERRUPT, PRINTING A
*              LINE WITH NO BAD CHARACTERS CODES IN IT, AND CHECKING
*              FOR THE ABN EOP INTERRUPT TO BE ABSENT AND THE EOP 
*              INTERRUPT TO BE PRESENT AT THE END OF THE PRINTING 
*              OPERATION. THE INTERRUPTS ARE THEN CLEARED.
* 
* 
*   DESCRIPTION - CHECK ABN EOP INT - PART 1 (FTP38)
* 
*         1.  CLEAR FORMAT SELECTIONS 
*         2.  EXIT TO PART 2 (FTP38A) IF TRAIN TYPE NOT 2,3 OR 6
*         3.  IF TRAIN TYPE 6, SELECT EXTENDED ARRAY
*         4.  CONNECT AND CHECK STATUS
*         5.  SELECT ABN EOP INTERRUPT
*         6.  SINGLE SPACE
*         7.  WAIT FOR NOT BUSY 
*         8.  VERIFY NO INTERRUPT 
*         9.  SELECT EOP INTERRUPT
*        10.  PRINT A LINE WITH BAD CHARACTER CODES 
*        11.  WAIT FOR NOT BUSY 
*        12.  VERIFY ABNORMAL EOP INTERRUPT,
*             EOP INTERRUPT, PRINT ERROR AND COMPARE
*             FAULT STATUS
*        13.  CLEAR ABN EOP INTERRUPT 
*        14.  VERIFY NO ABN EOP INTERRUPT STATUS
*        15.  CLEAR EOP INTERRUPT 
*        16.  VERIFY NO EOP INTERRUPT STATUS
*        17.  REPEAT FROM STEP 4 IF REPEAT CONDITION
* 
* 
*   DESCRIPTION - CHECK ABN EOP INT - PART 2 (FTP38A) 
* 
*         1.  IF TRAIN TYPE 6, SELECT EXTENDED ARRAY
*         2.  CONNECT AND CHECK STATUS
*         3.  SELECT ABN EOP INTERRUPT
*         4.  SELECT EOP INTERRUPT
*         5.  PRINT A LINE WITH NO BAD CHARACTER CODES
*         6.  WAIT NOT BUSY 
*         7.  VERIFY NO ABN EOP INTERRUPT,
*             EOP INTERRUPT AND NO PRINT ERROR OR COMPARE 
*             FAULT STATUS
*         8.  CLEAR ABN EOP INTERRUPT 
*         9.  CLEAR EOP INTERRUPT 
*        10.  VERIFY NO INTERRUPT STATUS
*        11.  REPEAT FROM STEP 2 IF REPEAT CONDITIONS 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON (RES)
*         2.  ABORT ON (SELECT) 
*         3.  ABORT ON (STATUS) 
*         4.  ABORT ON (SPACE)
*         5.  ABORT ON (PRINT)
*         6.  ABNORMAL-END-OF-OPERATION INTERRUPT 
*             OCCURS AFTER SPACE OPERATION (113)
*         7.  NO ABNORMAL-END-OF-OPERATION INTERRUPT AFTER
*             PRINT WITH A LINE WITH BAD CHARACTER CODE (114) 
*         8.  ABNORMAL-END-OF-OPERATION FAILED TO CLEAR (115) 
*         9.  END-OF-OPERATION INTERRUPT FAILED TO CLEAR (116)
*        10.  ABNORMAL-END-OF-OPERATION INTERRUPT OCCURED AFTER 
*             PRINTING A LINE WITH ALL GOOD CODES (117) 
*        11.  ABNORMAL-END-OF-OPERATION INTERRUPT OR
*             END-OF-OPERATION INTERRUPT FAILED TO CLEAR (120)
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (RES) AT LINE *OCT 
*         2.  ABORT ON (SELECT) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (SPACE) AT LINE *OCT 
*         5.  ABORT ON (PRINT) AT LINE *OCT 
*         6.  SELECTED ABNORMAL-END-OF-OPERATION INTERRUPT. 
*             EXPECTED NO INTERRUPT AFTER SPACE OPERATION.
*         7.  SELECTED ABNORMAL-END-OF-OPERATION INTERRUPT; 
*             PRINTED A LINE WITH BAD CODE.  EXPECTED 
*             ABNORMAL-END-OF-OPERATION INTERRUPT.
*         8.  CLEARED ABNORMAL-END-OF-OPERATION INTERRUPT.
*             EXPECTED NO INTERRUPT.
*         9.  CLEARED END-OF-OPERATION INTERRUPT.  EXPECTED 
*             NO INTERRUPT WITH PRINT ERROR.
*        10.  SELECTED ABNORMAL-END-OF-OPERATION INTERRUPT; 
*             PRINTED A LINE WITH ALL GOOD CODES.  EXPECTED 
*             NO INTERRUPT STATUS.
*        11.  CLEARED ABNORMAL-END-OF-OPERATION INTERRUPT AND 
*             END-OF-OPERATION INTERRUPT. EXPECTED NO INTERRUPT 
* 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP97A - ERROR PROCESSOR
*         FTP97Z - ERROR PROCESSOR
* 
*  *********************************************************
* 
/  THIS MODULE CHECKS ABNORMAL END OF OPERATION INTERRUPTS. 
/  IT RUNS ONLY ON PRINTERS WITH TRAIN TYPE 2, 3 AND 6. 
1  FORMAT FTP38 ABNORMAL-E-O-P INTERRUPT PART 1 
2  FORMAT FTP38 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP38 ABORT ON (RES) AT LINE *OCT 
4  FORMAT FTP38 ABORT ON (SELECT) AT LINE *OCT
5  FORMAT FTP38 ABORT ON (STATUS) AT LINE *OCT
6  FORMAT FTP38 ABORT ON (PRINT) AT LINE *OCT 
10 FORMAT FTP38 ABORT ON (SPACE) AT LINE *OCT 
15 FORMAT FTP38 ERROR CODE *OCT AT LINE *OCT
17 FORMAT *DEC ERROR(S) IN FTP38
* 
*   CHARACTER CODE FOR TRAIN TYPE 1 THRU 5
* 
*   OB(1) - OB(7) CHARACTER CODE FOR *ABN EOP INT*
*                 LAST WORD CONTAINS ILLEGAL CODE 
* 
*   CHARACTER CODE FOR TRAIN TYPE 6 
* 
*   OB(10) - OB(24) CHARACTER CODE FOR *ABN EOP INT*
*                   LAST TWO WORDS CONTAIN ILLEGAL CODE 
* 
   DATA(OB(1),CON)2122,4560,2545,2460,3145,6360,1214,101
  ,102,116,40,105,116,104,40,111,116,124,30,117,
20 MSG 1 TO PRINT 
22 MSG 1 TO DISPLAY 
23 GOSUB 60 
   B4=4 
   SELECT CLEAR,ABT 74
   IF(P0.AND.2.EQ.0)GOTO 54 
   WC=7                      *FOR TRAIN TYPE 1 THRU 5 
   BA=1 
   IF(P0.NE.6)GOTO 24 
   WC=15                     *FOR TRAIN TYPE 6
   BA=10
   GOSUB 60 
   B4=4 
   SELECT EXTENDED,ABT 74 
24 GOSUB 60                  *CONNECT 
   B4=4 
   SELECT AEOPINT,ABT 74     *SPACE WITH ABNORMAL 
   B4=10                     *EOP SELECTED
   SPACE 1,ABT 74 
   B1=0 
25 B4=5 
   STATUS,ABT 74
   IF(SB(1).AND.2.EQ.0)GOTO 26  *IF NOT BUSY
   DELAY 100 MSEC 
   GOTO 25 WHILE (B1+1.LE.20)   *WAIT FOR NOT BUSY
26 IF(SB(1).AND.3717.NE.1)ERROR 15/113,GOSUB 71  *IF INT. 
   B4=4 
   SELECT EOPINT,ABT 74 
32 B4=6 
   PRINT,ABT 74              *PRINT LINE W/ BAD CODES 
   B1=0 
33 B4=5 
   STATUS,ABT 74
   IF(SB(1).AND.2.EQ.0)GOTO 34  *IF NOT BUSY
   DELAY 100 MSEC 
   GOTO 33 WHILE (B1+1.LE.40)   *WAIT FOR NOT BUSY
34 IF(SB(1).AND.3717.NE.3405)ERROR 15/114,GOSUB 71
40 B4=4 
   SELECT CLRAEOP,ABT 74     *CLEAR ABNORMAL EOP INTERRUPT
   B4=5 
   STATUS,ABT 74
   IF(SB(1).AND.3717.NE.2405)ERROR 15/115,GOSUB 71  *IF INT 
46 B4=4 
   SELECT CLREOP,ABT 74      *CLEAR EOP INTERRUPT 
   B4=5 
   STATUS,ABT 74
   IF(SB(1).AND.3717.NE.2005)ERROR 15/116,GOSUB 71  *IF INT 
50 IF(ES.AND.SL.EQ.0)GOTO 52
   B6=B6+1                   *SCOPE LOOP
51 MSG 2(B6,B7,SB(1)) TO DISPLAY  *POST SCOPE LOOP MESSAGE
   GOTO 24
52 IF(ES.AND.RC.NE.0)GOTO 24  *REPEAT CONDITION 
/  EXIT SEQUENCE
54 EXIT TO 38A               *GO DO PART 2
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 EXIT 
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
   IF(ES.AND.SL.NE.0)GOTO 60  *IF SCOPE LOOP
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   IF(ES.AND.SL NE 0)GOTO 72      *IF SCOPE LOOP
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 97A 
   B4=3 
   RES,ABT 74                *RECONNECT 
72 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
   IF(ES.AND.SL.EQ.0)GOTO 75  *IF NOT SCOPE LOOP
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   GOTO 23
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 23        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  ******************************************************** 
*  ******************************************************** 
   MODULE FTP38A 580(23,24,25,26,27,30),LOCK
/  THIS MODULE CHECKS ABNORMAL END OF OPERATION INTERRUPTS. 
1  FORMAT FTP38A ABNORMAL-E-O-P INTERRUPT PART 2
2  FORMAT FTP38A LC*DEC EC*DEC ST*OCT 
3  FORMAT FTP38A ABORT ON (RES) AT LINE *OCT
4  FORMAT FTP38A ABORT ON (SELECT) AT LINE *OCT 
5  FORMAT FTP38A ABORT ON (STATUS) AT LINE *OCT 
6  FORMAT FTP38A ABORT ON (PRINT) AT LINE *OCT
15 FORMAT FTP38A ERROR CODE *OCT AT LINE *OCT 
17 FORMAT *DEC ERROR(S) IN FTP38A 
* 
*   CHARACTER CODE FOR TRAIN TYPE 1 THRU 5
* 
*   OB(1) - OB(7) CHARACTER CODE FOR *ABN EOP INT*
*                 LAST WORD CONTAINS BLANK CODE 
* 
*   CHARACTER CODE FOR TRAIN TYPE 6 
* 
*   OB(10) - OB(24) CHARACTER CODE FOR *ABN EOP INT*
*                   LAST TWO WORDS CONTAIN BLANK CODE 
* 
   DATA(OB(1),CON)2122,4560,2545,2460,3145,6360,6060,101
  ,102,116,40,105,116,104,40,111,116,124,40,40
20 MSG 1 TO PRINT 
   WC=7                      *FOR TRAIN TYPE 1 THRU 5 
   BA=1 
   IF(P0.NE.6)GOTO 22 
   WC=15                     *FOR TRAIN TYPE 6
   BA=10
   GOSUB 60 
   B4=4 
   SELECT EXTENDED,ABT 74 
22 MSG 1 TO DISPLAY 
24 GOSUB 60                  *CONNECT 
   B4=4 
   SELECT AEOPINT,ABT 74     *SELECT ABN EOP INT
   SELECT EOPINT,ABT 74      *SELECT EOP INT
26 B4=6 
   PRINT,ABT 74              *PRINT A LINE WITH GOOD CODES
   B1=0 
27 B4=5 
   STATUS,ABT 74
   IF(SB(1).AND.2.EQ.0)GOTO 30  *IF NOT BUSY
   DELAY 100 MSEC 
   GOTO 27 WHILE (B1+1.LE.20)   *WAIT FOR NOT BUSY
30 IF(SB(1).AND.3717.NE.401)ERROR 15/117,GOSUB 71  *IF ABN
34 B4=4 
   SELECT CLRAEOP,ABT 74     *CLEAR ABN EOP INT 
   SELECT CLREOP,ABT 74      *CLEAR EOP INT 
   B4=5 
   STATUS,ABT 74
   IF(SB(1).AND.3717.NE.1)ERROR 15/120,GOSUB 71  *IF INT
36 IF(ES.AND.SL.EQ.0)GOTO 40
   B6=B6+1                   *SCOPE LOOP
   MSG 2(B6,B7,SB(1)) TO DISPLAY  *POST SCOPE LOOP MESSAGE
   GOTO 24
40 IF(ES.AND.RC.NE.0)GOTO 24  *REPEAT CONDITION 
/  EXIT SEQUENCE
54 IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 EXIT 
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
   IF(ES.AND.SL.NE.0)GOTO 60  *IF SCOPE LOOP
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   IF(ES.AND.SL NE 0)GOTO 72      *IF SCOPE LOOP
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 97A 
   B4=3 
   RES,ABT 74                *RECONNECT 
72 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
   IF(ES.AND.SL.EQ.0)GOTO 75  *IF NOT SCOPE LOOP
   MSG 2(B6,B7,SB(1)) TO DISPLAY  *YES=POST DISPLAY MESSAGE 
   GOTO 24                   *RESTART 
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP40 580(23,24,25,26,27,30),LOCK 
*** CHECK SUPPRESS SPACE FUNCTION 
**
* 
* 
*   OVERVIEW - MODULE *FTP40* TESTS THE SUPPRESS SPACE FUNCTION 
*              BY PRINTING *SUPPRESS SPACE* IN SEVEN PARTS ON 
*              THE SAME LINE. 
* 
* 
*   DESCRIPTION - CHECK SUPPRESS SPACE
* 
*         1.  CONNECT AND CHECK STATUS
*         2.  CLEAR FORMAT SELECTION
*         3.  IF TRAIN TYPE 6, SELECT EXTENDED ARRAY
*         4.  PAGE EJECT
*         5.  SELECT SUPPRESS SPACE 
*         6.  MOVE 2 CHARACTERS OF MESSAGE TO PRINT BUFFER
*         7.  PRINT THE LINE
*         8.  WAIT NOT BUSY 
*         9.  VERIFY NO ERROR STATUS
*        10.  REPEAT FROM STEP 5 SEVEN TIMES
*        11.  SINGLE SPACE
*        12.  REPEAT FROM STEP 5 IF REPEAT CONDITION
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON (RES)
*         2.  ABORT ON (SELECT) 
*         3.  ABORT ON (STATUS) 
*         4.  ABORT ON (WAITNB) 
*         5.  ABORT ON (SPACE)
*         6.  ABORT ON (EJECT)
*         7.  ABORT ON (PRINT)
*         8.  UNEXPECTED NOT READY AND NOT BUSY(100)
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (RES) AT LINE *OCT 
*         2.  ABORT ON (SELECT) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (WAITNB) AT LINE *OCT
*         5.  ABORT ON (SPACE) AT LINE *OCT 
*         6.  ABORT ON (EJECT) AT LINE *OCT 
*         7.  ABORT ON (PRINT) AT LINE *OCT 
*         8.  STATUS IS NOT READY AND NOT BUSY
* 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP97A - ERROR PROCESSOR
*         FTP97Z - ERROR PROCESSOR
* 
* 
**********************************************************************
* 
/  THIS MODULE CHECKS THE SUPPRESS SPACE FUNCTION 
1  FORMAT FTP40 SUPPRESS SPACE CHECK
2  FORMAT FTP40 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP40 ABORT ON (RES) AT LINE *OCT 
4  FORMAT FTP40 ABORT ON (SELECT) AT LINE *OCT
5  FORMAT FTP40 ABORT ON (STATUS) AT LINE *OCT
6  FORMAT FTP40 ABORT ON (PRINT) AT LINE *OCT 
7  FORMAT FTP40 ABORT ON (WAITNB) AT LINE *OCT
10 FORMAT FTP40 ABORT ON (SPACE) AT LINE *OCT 
11 FORMAT FTP40 ABORT ON (EJECT) AT LINE *OCT 
15 FORMAT FTP40 ERROR CODE *OCT AT LINE *OCT
17 FORMAT *DEC ERROR(S) IN FTP40
* 
*   CHARACTER CODE FOR TRAIN TYPE 1 THRU 5
* 
*         *SUPPRESS SPACE*
   DATA(OB(200),CON)6264,4747,5125,6262,6023,3025,2342
* 
*   CHARACTER CODE FOR TRAIN TYPE 6 
* 
*         *SUPPRESS SPACE*
   DATA(OB(270),CON)123,125,120,120,122,105,123,123,40, 
  ,103,110,105,103,113
* 
20 MSG 1 TO PRINT 
   GOSUB 60 
   B4=4 
   SELECT CLEAR,ABT 74
   BA=1 
   IF(P0.NE.6)GOTO 22 
   SELECT EXTENDED,ABT 74 
22 MSG 1 TO DISPLAY 
24 GOSUB 60                  *CONNECT 
   B4=11
   EJECT,ABT 74              *TOP OF FORM 
   GOSUB 61 
25 IF(P0.EQ.6)GOTO 30        *IF TRAIN 6
   WC=70
   DUP 6060 TO OB(1) FOR 70  *BLANK PRINT LINE
   B0=0 
26 B4=4 
   SELECT SUPPRESS,ABT 74 
   OB(B0+3)=OB(B0+200)       *ADD 2 CHARACTERS TO PRINT LINE
   OB(B0+45)=OB(B0+200) 
   B4=6 
   PRINT,ABT 74 
   B4=7 
   WAITNB,ABT 74
   IF(SB(1).AND.3717.NE.1)ERROR 15/100,GOSUB 71 
   GOTO 26 WHILE (B0+1.LT.7)  *PRINT IN 7 PARTS 
   GOTO 46
30 WC=160 
   DUP 40 TO OB(1) FOR 160   *BLANK PRINT LINE
   B0=0 
32 B4=4 
   SELECT SUPPRESS,ABT 74 
   OB(B0+5)=OB(B0+270)       *ADD 2 CHARACTERS TO PRINT LINE
   OB(B0+111)=OB(B0+270)
   OB(B0+6)=OB(B0+271)
   OB(B0+112)=OB(B0+271)
   B4=6 
   PRINT,ABT 74 
   B4=7 
   WAITNB,ABT 74
   IF(SB(1).AND.3717.NE.1)ERROR 15/100,GOSUB 71 
   GOTO 32 WHILE (B0+2.LT.14D)  *PRINT IN 7 PARTS 
46 B4=10
   SPACE 1,ABT 74            *SINGLE SPACE
50 IF(ES.AND.RC.NE.0)GOTO 25  *REPEAT CONDITION 
/  EXIT SEQUENCE
54 IF(ES.AND.RM NE 0)GOTO 22    *IF REPEAT MODULE 
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 EXIT 
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 97A 
   B4=3 
   RES,ABT 74                *RECONNECT 
72 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP41 580(23,24,25,26,27,30),LOCK 
*** CHECK COINCIDENT POINTS AND FORMAT LEVEL 9
**
* 
* 
*   OVERVIEW - MODULE *FTP41* CHECKS THE ABILITY OF THE PRINTER TO
*              DETECT 6/8 LINE COINCIDENT POINTS AND FORMAT LEVEL 9.
*              IT WORKS ON BOTH PFC AND NON PFC PRINTERS. IN CASE OF
*              THE PFC PRINTER IT IS ASSUMED TRAT THE PFC MEMORY IS 
*              LOADED WITH STANDARD DATA. 
* 
* 
*   DESCRIPTION - CHECK COINCIDENT POINTS AND FORMAT LEVEL 9
* 
*         1.  CONNECT AND CHECK STATUS
*         2.  PAGE EJECT
*         3.  CLEAR FORMAT SELECTION
*         4.  IF TRAIN TYPE 6 SELECT EXTENDED ARRAY 
*         5.  SELECT 6 LINES PER INCH 
*         6.  IF NOT 6/8 LINE COINCIDENT OR FORMAT
*             LEVEL 9 PRINT *NOT COINCIDENT*
*         7.  IF FORMAT LEVEL 9 DETECTED PRINT *FORMAT LEVEL 9* 
*         8.  IF 6/8 LINE COINCIDENCE, SWITCH LINES PER INCH
*             DENSITY AND PRINT *COINCIDENT*
*         9.  WAIT NOT BUSY 
*        10.  GO TO STEP 5 IF NOT END OF PAGE OR 120 (OCTAL) LINES PRINTED
*        11.  ERROR IF NO FORMAT LEVEL 9 ENCOUNTERED PRINT
*        12.  REPEAT FROM STEP 1 IF REPEAT CONDITIONS 
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON (RES)
*         2.  ABORT ON (SELECT) 
*         3.  ABORT ON (STATUS) 
*         4.  ABORT ON (PRINT)
*         5.  ABORT ON (EJECT)
*         6.  NO LEVEL 9 STATUS OBSERVED AFTER FULL PAGE (200)
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (RES) AT LINE *OCT 
*         2.  ABORT ON (SELECT) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (PRINT) AT LINE *OCT 
*         5.  ABORT ON (EJECT) AT LINE *OCT 
*         6.  NO LEVEL 9 STATUS OBSERVED. 
* 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP97A - ERROR PROCESSOR
*         FTP97Z - ERROR PROCESSOR
* 
* 
*  *********************************************************
* 
/  THIS MODULE CHECKS THE FORMAT SPACINGS ON FORMAT TAPE
/  OR FORMAT MEMORY.
1  FORMAT FTP41 COINCIDENT AND FORMAT STATUS
2  FORMAT FTP41 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP41 ABORT ON (RES) AT LINE *OCT 
4  FORMAT FTP41 ABORT ON (SELECT) AT LINE *OCT
5  FORMAT FTP41 ABORT ON (STATUS) AT LINE *OCT
6  FORMAT FTP41 ABORT ON (PRINT) AT LINE *OCT 
11 FORMAT FTP41 ABORT ON (EJECT) AT LINE *OCT 
15 FORMAT FTP41 ERROR CODE *OCT AT LINE *OCT
17 FORMAT *DEC ERROR(S) IN FTP41
* 
* 
*   CHARACTER CODE FOR TRAIN TYPE 1 THRU 5
* 
*         *FORMAT LEVEL 9*
   DATA(OB(317),CON)7,2646,5144,2163,6043,2565,2543,6011
*         *NOT COINCIDENT*
   DATA(OB(336),CON)7,4546,6360,2346,3145,2331,2425,4563
*         *COINCIDENT*
   DATA(OB(355),CON)5,2346,3145,2331,2425,4563
* 
*   CHARACTER CODE FOR TRAIN TYPE 6 
* 
*         *FORMAT LEVEL 9*
   DATA(OB(407),CON)16,106,117,122,115,101,124,40,114,105,
  ,126,105,114,40,71
*         *NOT COINCIDENT*
   DATA(OB(426),CON)16,116,117,124,40,103,117,111,116,103,
  ,111,104,105,116,124
*         *COINCIDENT*
   DATA(OB(445),CON)12,103,117,111,116,103,111,104,105,116, 
  ,124
* 
* 
20 MSG 1 TO PRINT 
   GOSUB 60 
   B4=11
   EJECT,ABT 74 
   B4=4 
   SELECT CLEAR,ABT 74       *INITIALIZE FORMAT SELECTION 
   IF(P0.NE.6)GOTO 22 
   B4=4 
   SELECT EXTENDED,ABT 74 
   COPY OB(407) TO OB(317) FOR 70 
22 MSG 1 TO DISPLAY 
24 GOSUB 60                  *CONNECT 
   B0=0                      *INIT LPI SWITCH 
   B4=4 
   SELECT 6LPI,ABT 74 
   B1=0 
   B2=0 
32 IF(SB(1).AND.4040.EQ.0)GOTO 34 
   IF(SB(1).AND.4000.NE.0)GOTO 36 
   B2=1                      *FLAG LEVEL 9 DETECTED 
   B4=6                      *PRINT*FORMAT LEVEL 9* 
   PRINT OB(317) WORDS FROM OB(320),ABT 74
   GOTO 44
34 B4=6                      *PRINT*NOT COINCIDENT* 
   PRINT OB(336) WORDS FROM OB(337),ABT 74
   GOTO 44
36 B4=4                      *SWITCH LPI
   IF(B0.AND.1.EQ.0)GOTO 40 
   SELECT 6LPI,ABT 74 
   GOTO 42
40 SELECT 8LPI,ABT 74 
42 B0=B0+1
   B4=6                      *PRINT*COINCIDENT* 
   PRINT OB(355) WORDS FROM OB(356),ABT 74
44 GOSUB 61 
   IF(B1.LT.20)GOTO 45
   IF(SB(1).AND.20.NE.0)GOTO 46  *IF END OF PAGE
45 GOTO 32 WHILE (B1+1.LT.120)   *OR 120 LINES
46 IF(B2.EQ.0)ERROR 15/200,GOSUB 71  *NO LEVEL 9 SEEN 
50 IF(ES.AND.RC.NE.0)GOTO 22  *REPEAT CONDITION 
/  EXIT SEQUENCE
54 IF(ES.AND.RM NE 0)GOTO 22    *IF REPEAT MODULE 
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 EXIT 
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 97A 
   B4=3 
   RES,ABT 74                *RECONNECT 
72 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP42 580(23,24,25,26,27,30),LOCK 
*** CHECK PAGE EJECT AND ADVANCE TO LAST LINE FUNCTIONS 
**
* 
* 
*   OVERVIEW - MODULE *FTP42* CHECKS THE PAGE EJECT AND THE ADVANCE TO
*              LAST LINE OF FORM OPERATION. IT RUNS ON BOTH PFC AND NON 
*              PFC PRINTERS.
* 
* 
*   DESCRIPTION - CHECK PAGE EJECT AND ADVANCE TO LAST LINE FUNCTIONS 
* 
*         1.  CONNECT AND CHECK STATUS
*         2.  IF TRAIN TYPE 6, SELECT EXTENDED ARRAY
*         3.  CLEAR FORMAT SELECTIONS 
*         4.  PAGE EJECT
*         5.  PRINT *TOP OF FORM* 
*         6.  REPEAT STEPS 4 AND 5
*         7.  ADVANCE TO LAST LINE
*         8.  WAIT NOT BUSY 
*         9.  VERIFY LAST LINE STATUS 
*        10.  REPEAT FROM STEP 7 IF REPEAT CONDITIONS 
*        11.  PRINT *LAST LINE* 
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON (RES)
*         2.  ABORT ON (SELECT) 
*         3.  ABORT ON (STATUS) 
*         4.  ABORT ON (WAITNB) 
*         5.  ABORT ON (EJECT)
*         6.  ABORT ON (PRINT)
*         7.  NO LAST-LINE STATUS AFTER SELECTING 
*             SPACE TO LAST LINE OF FORM (121)
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (RES) AT LINE *OCT 
*         2.  ABORT ON (SELECT) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (WAITNB) AT LINE *OCT
*         5.  ABORT ON (EJECT) AT LINE *OCT 
*         6.  ABORT ON (PRINT) AT LINE *OCT 
*         7.  SELECTED SPACE TO LAST LINE OF FORM.  EXPECTED
*             LAST-LINE STATUS. 
* 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP97A - ERROR PROCESSOR
*         FTP97Z - ERROR PROCESSOR
* 
* 
*  *********************************************************
* 
/  THIS MODULE CHECKS THE PAGE EJECT AND ADVANCE TO LAST
/  LINE FUNCTIONS.
1  FORMAT FTP42 PAGE EJECT/ADVANCE TO LAST LINE 
2  FORMAT FTP42 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP42 ABORT ON (RES) AT LINE *OCT 
4  FORMAT FTP42 ABORT ON (SELECT) AT LINE *OCT
5  FORMAT FTP42 ABORT ON (STATUS) AT LINE *OCT
6  FORMAT FTP42 ABORT ON (PRINT) AT LINE *OCT 
7  FORMAT FTP42 ABORT ON (WAITNB) AT LINE *OCT
11 FORMAT FTP42 ABORT ON (EJECT) AT LINE *OCT 
15 FORMAT FTP42 ERROR CODE *OCT AT LINE *OCT
17 FORMAT *DEC ERROR(S) IN FTP42
* 
*   CHARACTER CODES FOR TRAIN TYPE 1 THRU 5 
* 
*         *TOP OF FORM *
   DATA(OB,CON)6,6346,4760,4626,6026,4651,4460
*         *LAST LINE *
   DATA(OB(14),CON)5,4321,6263,6043,3145,2560 
* 
*   CHARACTER CODES FOR TRAIN TYPE 6
* 
*         *TOP OF FORM* 
   DATA(OB(100),CON)13,124,117,120,40,117,106,40,106,117
  ,122,115
*         *LAST LINE* 
   DATA(OB(114),CON)11,114,101,123,124,40,114,111,116,105 
* 
20 MSG 1 TO PRINT 
   IF(P0.NE.6)GOTO 22        *IF TRAIN TYPE 6 
   COPY OB(100) TO OB FOR 30  *FIX PRINT DATA 
   GOSUB 60 
   B4=4 
   SELECT EXTENDED,ABT 74 
22 MSG 1 TO DISPLAY 
   B1=0 
24 GOSUB 60                  *CONNECT 
   B4=4 
   SELECT CLEAR,ABT 74       *CLEAR FORMAT SELECTIONS 
26 B4=11
   EJECT,ABT 74 
   GOSUB 61 
   B4=6 
   PRINT OB(0) WORDS FROM OB(1),ABT 74  *TOP OF FORM* 
   GOSUB 61 
   GOTO 26 WHILE (B1+1.LT.2)  *TWICE* 
30 B4=4 
   SELECT LASTLINE,ABT 74 
   GOSUB 61 
   B4=7 
   WAITNB,ABT 74
   IF(SB(1).AND.3737.NE.21)ERROR 15/121,GOSUB 71
34 IF(ES.AND.RC.NE.0)GOTO 30
   B4=6 
   PRINT OB(14) WORDS FROM OB(15),ABT 74  *LAST LINE* 
   GOSUB 61 
/  EXIT SEQUENCE
54 IF(ES.AND.RM NE 0)GOTO 22    *IF REPEAT MODULE 
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 EXIT 
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 97A 
   B4=3 
   RES,ABT 74                *RECONNECT 
72 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP43 580(23,24,25,26,27,30),LOCK 
*** CHECK AUTO PAGE EJECT 
**
* 
* 
*   OVERVIEW - MODULE *FTP43* CHECKS THE AUTO PAGE EJECT. 
*              IT RUNS ON BOTH PFC AND NON PFC PRINTERS.
* 
* 
*   DESCRIPTION - CHECK AUTO PAGE EJECT 
* 
*         1.  CONNECT AND CHECK STATUS
*         2.  IF TRAIN TYPE 6, SELECT EXTENDED ARRAY
*         3.  SELECT AUTO PAGE EJECT
*         4.  ADVANCE TO LAST LINE
*         5.  PRINT *LAST LINE* 
*         6.  PRINT *AUTO TOP OF FORM*
*         7.  CLEAR FORMAT SELECTIONS 
*         8.  ADVANCE TO LAST LINE
*         9.  PRINT *LAST LINE* 
*        10.  PRINT *LAST LINE PLUS 1*
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON (RES)
*         2.  ABORT ON (SELECT) 
*         3.  ABORT ON (STATUS) 
*         4.  ABORT ON (PRINT)
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (RES) AT LINE *OCT 
*         2.  ABORT ON (SELECT) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (PRINT) AT LINE *OCT 
* 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP97Z - ERROR PROCESSOR
* 
* 
*  *********************************************************
* 
/  THIS MODULE CHECKS THE AUTO PAGE EJECT FUNCTIONS.
1  FORMAT FTP43 AUTO PAGE EJECT 
2  FORMAT FTP43 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP43 ABORT ON (RES) AT LINE *OCT 
4  FORMAT FTP43 ABORT ON (SELECT) AT LINE *OCT
5  FORMAT FTP43 ABORT ON (STATUS) AT LINE *OCT
6  FORMAT FTP43 ABORT ON (PRINT) AT LINE *OCT 
17 FORMAT *DEC ERROR(S) IN FTP43
* 
*   CHARACTER CODES FOR TRAIN TYPE 1 THRU 5 
* 
*         *AUTO TOP OF FORM 
   DATA(OB,CON)10,2164,6346,6063,4647,6046,2660,2646,5144 
*         *LAST LINE PLUS 1*
   DATA(OB(21),CON)5,10,4321,6263,6043,3145,2560,4743,
  ,6462,6001
* 
*   CHARACTER CODES FOR TRAIN TYPE 6
* 
*         *AUTO TOP OF FORM*
   DATA(OB(100),CON)20,101,125,124,117,40,124,117,120,40, 
  ,117,106,40,106,117,122,115 
*         *LAST LINE PLUS 1*
   DATA(OB(121),CON)11,20,114,101,123,124,40,114,111,116
  ,105,40,120,114,125,123,40,61 
* 
20 MSG 1 TO PRINT 
   IF(P0.NE.6)GOTO 22        *IF TRAIN TYPE 6 
   COPY OB(100) TO OB FOR 50  *FIX PRINT DATA 
   GOSUB 60 
   B4=4 
   SELECT EXTENDED,ABT 74 
22 MSG 1 TO DISPLAY 
24 GOSUB 60                  *CONNECT 
   B4=4 
   SELECT AUTO,ABT 74        *AUTO EJECT
   SELECT LASTLINE,ABT 74    *MOVE TO LAST LINE 
   GOSUB 61 
   B4=6                      *PRINT *LAST LINE* 
   PRINT OB(21) WORDS FROM OB(23),ABT 74
   GOSUB 61 
   B4=6 
   PRINT OB WORDS FROM OB(1),ABT 74  *AUTO TOP OF FORM* 
   GOSUB 61 
   B4=4 
   SELECT CLEAR,ABT 74       *CLEAR AUTO EJECT
   SELECT LASTLINE,ABT 74    *MOVE TO LAST LINE 
   GOSUB 61 
   B4=6                      *PRINT *LAST LINE* 
   PRINT OB(21) WORDS FROM OB(23),ABT 74
   GOSUB 61 
   B4=6                      *PRINT *LAST LINE PLUS 1*
   PRINT OB(22) WORDS FROM OB(23),ABT 74
   GOSUB 61 
/  EXIT SEQUENCE
54 IF(ES.AND.RM NE 0)GOTO 22    *IF REPEAT MODULE 
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 EXIT 
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP44 580(23,24,25,26,27,30),LOCK 
*** CHECK SINGLE SPACE OPERATION
**
* 
* 
*   OVERVIEW - MODULE *FTP44* CHECKS THE SINGLE SPACE OPERATIONS AT 
*              BOTH 6 LPI AND 8 LPI.
* 
* 
*   DESCRIPTION - CHECK SINGLE SPACE OPERATION
* 
*         1.  PREPARE PRINT LINE
*         2.  IF TRAIN TYPE 6, SELECT EXTENDED ARRAY
*         3.  CONNECT AND CHECK STATUS
*         4.  PAGE EJECT
*         5.  PRINT *TOP OF FORM* 
*         6.  SELECT 8 LPI
*         7.  SINGLE SPACE
*         8.  SUPPRESS SPACE
*         9.  PRINT *SINGLE SPACE*
*         10. REPEAT 32 (OCTAL) TIMES FROM STEP 7 
*         11. SINGLE SPACE TWICE
*         12. SELECT 6 LPI
*         13. SINGLE SPACE
*         14. SUPPRESS SPACE
*         15. PRINT *SINGLE SPACE*
*         16. REPEAT 32 (OCTAL) TIMES FROM STEP 13
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON (RES)
*         2.  ABORT ON (SELECT) 
*         3.  ABORT ON (STATUS) 
*         4.  ABORT ON (SPACE)
*         5.  ABORT ON (EJECT)
*         6.  ABORT ON (PRINT)
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (RES) AT LINE *OCT 
*         2.  ABORT ON (SELECT) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (SPACE) AT LINE *OCT 
*         5.  ABORT ON (EJECT) AT LINE *OCT 
*         6.  ABORT ON (PRINT) AT LINE *OCT 
* 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP97Z - ERROR PROCESSOR
* 
* 
*  *********************************************************
* 
/  THIS MODULE CHECKS THE SINGLE SPACE FUNCTIONS
1  FORMAT FTP44 SINGLE SPACE
2  FORMAT FTP44 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP44 ABORT ON (RES) AT LINE *OCT 
4  FORMAT FTP44 ABORT ON (SELECT) AT LINE *OCT
5  FORMAT FTP44 ABORT ON (STATUS) AT LINE *OCT
6  FORMAT FTP44 ABORT ON (PRINT) AT LINE *OCT 
11 FORMAT FTP44 ABORT ON (EJECT) AT LINE *OCT 
10 FORMAT FTP44 ABORT ON (SPACE) AT LINE *OCT 
17 FORMAT *DEC ERROR(S) IN FTP44
* 
*   CHARACTER CODE FOR TRAIN TYPE 1 THRU 5
* 
*   OB(1) - OB(6) CHARACTER CODE FOR *TOP OF FORM*
*   OB(7) - OB(14) CHARACTER CODE FOR *SINGLE SPACE*
* 
*   CHARACTER CODE FOR TRAIN TYPE 6 
* 
*   OB(15) - OB(27) CHARACTER CODE FOR *TOP OF FORM*
*   OB(30) - OB(43) CHARACTER CODE FOR *SINGLE SPACE* 
* 
   DATA(OB(1),CON)6346,4760,4626,6026,4651,4460,6231,4527,
  ,4325,6062,4721,2325,124,117,120,40,117,106,40,106,117, 
  ,122,115,123,111,116,107,114,105,40,123,120,101,103,105 
20 MSG 1 TO PRINT 
   WC=6                      *FOR TRAIN TYPE 1 THRU 5 
   BA=7 
   IF(P0.NE.6)GOTO 22 
   WC=14                     *FOR TRAIN TYPE 6
   BA=30
   GOSUB 60 
   B4=4 
   SELECT EXTENDED,ABT 74 
22 MSG 1 TO DISPLAY 
   B1=0                      *INITIALIZE
24 GOSUB 60                  *CONNECT 
   B4=11
   EJECT,ABT 74              *PAGE EJECT
   GOSUB 61 
   B4=6 
   IF(P0.EQ.6)GOTO 26        *PRINT *TOP OF FORM* 
   PRINT 6 WORDS FROM OB(1),ABT 74   *FOR TRAIN TYPE 1 - 5
   GOTO 30
26 PRINT 13 WORDS FROM OB(15),ABT 74   *FOR TRAIN TYPE 6
30 GOSUB 61 
   B4=4 
   SELECT 8LPI,ABT 74        *SELECT 8 LPI
32 B4=10
   SPACE 1,ABT 74            *SINGLE SPACE
   GOSUB 61 
   B4=4 
   SELECT SUPPRESS,ABT 74    *SUPPRESS SPACE
   B4=6 
   PRINT,ABT 74              *PRINT *SINGLE SPACE*
   GOSUB 61 
   GOTO 32 WHILE (B1+1.LT.32)  *32 OCTAL TIMES
   B4=10
   SPACE 1,ABT 74            *SINGLE SPACE
   GOSUB 61 
   B4=10
   SPACE 1,ABT 74            *SINGLE SPACE
   GOSUB 61 
   B4=4 
   SELECT 6LPI,ABT 74        *SELECT 6 LPI
34 B4=10
   SPACE 1,ABT 74 
   GOSUB 61 
   B4=4 
   SELECT SUPPRESS,ABT 74    *SUPPRESS SPACE
   B4=6 
   PRINT,ABT 74              *PRINT *SINGLE SPACE*
   GOSUB 61 
   GOTO 34 WHILE (B1+1.LT.64)  *32 OCTAL TIMES
/  EXIT SEQUENCE
54 IF(ES.AND.RM NE 0)GOTO 22    *IF REPEAT MODULE 
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 EXIT 
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP45 580(23,24,25,26,27,30),LOCK 
*** CHECK DOUBLE SPACE OPERATION
**
* 
* 
*   OVERVIEW - MODULE *FTP45* CHECKS THE DOUBLE SPACE OPERATIONS AT 
*              BOTH 6 LPI AND 8 LPI.
* 
* 
*   DESCRIPTION - CHECK DOUBLE SPACE OPERATION
* 
*         1.  PREPARE PRINT LINE
*         2.  IF TRAIN TYPE 6, SELECT EXTENDED ARRAY
*         3.  CONNECT AND CHECK STATUS
*         4.  PAGE EJECT
*         5.  PRINT *TOP OF FORM* 
*         6.  SELECT 8 LPI
*         7.  DOUBLE SPACE
*         8.  SUPPRESS SPACE
*         9.  PRINT *DOUBLE SPACE*
*         10. REPEAT 14 (OCTAL) TIMES FROM STEP 7 
*         11. DOUBLE SPACE TWICE
*         12. SELECT 6 LPI
*         13. DOUBLE SPACE
*         14. SUPPRESS SPACE
*         15. PRINT *DOUBLE SPACE*
*         16. REPEAT 14 (OCTAL) TIMES FROM STEP 13
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON (RES)
*         2.  ABORT ON (SELECT) 
*         3.  ABORT ON (STATUS) 
*         4.  ABORT ON (SPACE)
*         5.  ABORT ON (EJECT)
*         6.  ABORT ON (PRINT)
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (RES) AT LINE *OCT 
*         2.  ABORT ON (SELECT) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (SPACE) AT LINE *OCT 
*         5.  ABORT ON (EJECT) AT LINE *OCT 
*         6.  ABORT ON (PRINT) AT LINE *OCT 
* 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP97Z - ERROR PROCESSOR
* 
* 
*  *********************************************************
* 
/  THIS MODULE CHECKS THE DOUBLE SPACE FUNCTIONS
1  FORMAT FTP45 DOUBLE SPACE
2  FORMAT FTP45 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP45 ABORT ON (RES) AT LINE *OCT 
4  FORMAT FTP45 ABORT ON (SELECT) AT LINE *OCT
5  FORMAT FTP45 ABORT ON (STATUS) AT LINE *OCT
6  FORMAT FTP45 ABORT ON (PRINT) AT LINE *OCT 
11 FORMAT FTP45 ABORT ON (EJECT) AT LINE *OCT 
10 FORMAT FTP45 ABORT ON (SPACE) AT LINE *OCT 
17 FORMAT *DEC ERROR(S) IN FTP45
* 
*   CHARACTER CODE FOR TRAIN TYPE 1 THRU 5
* 
*   OB(1) - OB(6) CHARACTER CODE FOR *TOP OF FORM*
*   OB(7) - OB(14) CHARACTER CODE FOR *DOUBLE SPACE*
* 
*   CHARACTER CODE FOR TRAIN TYPE 6 
* 
*   OB(15) - OB(27) CHARACTER CODE FOR *TOP OF FORM*
*   OB(30) - OB(43) CHARACTER CODE FOR *DOUBLE SPACE* 
* 
   DATA(OB(1),CON)6346,4760,4626,6026,4651,4460,2446,6422,
  ,4325,6062,4721,2325,124,117,120,40,117,106,40,106,117, 
  ,122,115,104,117,125,102,114,105,40,123,120,101,103,105 
20 MSG 1 TO PRINT 
   WC=6                      *FOR TRAIN TYPE 1 THRU 5 
   BA=7 
   IF(P0.NE.6)GOTO 22 
   WC=14                     *FOR TRAIN TYPE 6
   BA=30
   GOSUB 60 
   B4=4 
   SELECT EXTENDED,ABT 74 
22 MSG 1 TO DISPLAY 
   B1=0                      *INITIALIZE
24 GOSUB 60                  *CONNECT 
   B4=11
   EJECT,ABT 74              *PAGE EJECT
   GOSUB 61 
   B4=6 
   IF(P0.EQ.6)GOTO 26        *PRINT *TOP OF FORM* 
   PRINT 6 WORDS FROM OB(1),ABT 74   *FOR TRAIN TYPE 1 - 5
   GOTO 30
26 PRINT 13 WORDS FROM OB(15),ABT 74   *FOR TRAIN TYPE 6
30 GOSUB 61 
   B4=4 
   SELECT 8LPI,ABT 74        *SELECT 8 LPI
32 B4=10
   SPACE 2,ABT 74            *DOUBLE SPACE
   GOSUB 61 
   B4=4 
   SELECT SUPPRESS,ABT 74    *SUPPRESS SPACE
   B4=6 
   PRINT,ABT 74              *PRINT *DOUBLE SPACE*
   GOSUB 61 
   GOTO 32 WHILE (B1+1.LT.14)  *14 OCTAL TIMES
   B4=10
   SPACE 2,ABT 74            *DOUBLE SPACE
   GOSUB 61 
   B4=10
   SPACE 2,ABT 74            *DOUBLE SPACE
   GOSUB 61 
   B4=4 
   SELECT 6LPI,ABT 74        *SELECT 6 LPI
34 B4=10
   SPACE 2,ABT 74 
   GOSUB 61 
   B4=4 
   SELECT SUPPRESS,ABT 74    *SUPPRESS SPACE
   B4=6 
   PRINT,ABT 74              *PRINT *DOUBLE SPACE*
   GOSUB 61 
   GOTO 34 WHILE (B1+1.LT.30)  *14 OCTAL TIMES
/  EXIT SEQUENCE
54 IF(ES.AND.RM NE 0)GOTO 22    *IF REPEAT MODULE 
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 EXIT 
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP46 580(23,24,25,26,27,30),LOCK 
*** CHECK POSTPRINT FORMAT SPACING
**
* 
* 
*   OVERVIEW - MODULE *FTP46* CHECKS THE POSTPRINT FORMAT SPACING.
*              IT RUNS ON BOTH PFC AND NON PFC PRINTERS. EACH LEVEL 
*              IS SELECTED TWICE AND EACH TIME A LINE CONTAINING THE
*              FUNCTION NUMBER AND THE FORMAT LEVEL NUMBER IS PRINTED.
* 
* 
*   DESCRIPTION - CHECK POSTPRINT FORMAT SPACING
* 
*      (FTP46 FOR TRAINS 1-5, FTP46A FOR TRAIN 6) 
*         1.  CONNECT AND CHECK STATUS
*         2.  CLEAR FORMAT SELECTIONS 
*         3.  PAGE EJECT
*         4.  PRINT *TOP OF FORM* 
*         5.  SELECT 6 LPI IF PASS 1 OR 8 LPI IF PASS 2 
*         6.  SELECT POSTPRINT LEVEL N
*         7.  PRINT LEVEL NUMBER MESSAGE
*         8.  VERIFY NO ERROR STATUS
*         9.  IF PFC PRINTER, VERIFY NO PFC ERROR 
*             IF FORMAT LEVEL 1-12(OCTAL).  VERIFY PFC
*             ERROR STATUS IF FORMAT LEVEL 13 OR 14.
*         10. REPEAT FROM STEP 6 IF REPEAT CONDITION
*         11. REPEAT FROM STEP 6 ONCE MORE
*         12. REPEAT FROM STEP 6 FOR LEVELS 1 THROUGH 14(OCTAL) 
*         13. REPEAT FROM STEP 3 FOR 8 LPI. 
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON (RES)
*         2.  ABORT ON (SELECT) 
*         3.  ABORT ON (STATUS) 
*         4.  ABORT ON (EJECT)
*         5.  ABORT ON (PRINT)
*         6.  UNEXPECTED NOT READY AND NOT BUSY(100)
*         7.  PFC ERROR AFTER SELECTING LEGAL FORMAT LEVEL (505)
*         8.  NO PFC ERROR AFTER SELECTING ILLEGAL FORMAT LEVEL (504) 
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (RES) AT LINE *OCT 
*         2.  ABORT ON (SELECT) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (EJECT) AT LINE *OCT 
*         5.  ABORT ON (PRINT) AT LINE *OCT 
*         6.  STATUS IS NOT READY AND NOT BUSY
*         7.  SELECTED LEGAL FORMAT LEVEL. EXPECTED NO
*             PFC ERROR 
*         8.  SELECTED ILLEGAL FORMAT LEVEL.
*             EXPECTED PFC ERROR. 
* 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP97A - ERROR PROCESSOR
*         FTP97Z - ERROR PROCESSOR
* 
* 
*  *********************************************************
* 
/  THIS MODULE CHECKS THE POSTPRINT FORMAT LEVELS 
1  FORMAT FTP46 POSTPRINT FORMAT LEVELS 
2  FORMAT FTP46 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP46 ABORT ON (RES) AT LINE *OCT 
4  FORMAT FTP46 ABORT ON (SELECT) AT LINE *OCT
5  FORMAT FTP46 ABORT ON (STATUS) AT LINE *OCT
6  FORMAT FTP46 ABORT ON (PRINT) AT LINE *OCT 
11 FORMAT FTP46 ABORT ON (EJECT) AT LINE *OCT 
15 FORMAT FTP46 ERROR CODE *OCT AT LINE *OCT
17 FORMAT *DEC ERROR(S) IN FTP46
* 
*   CHARACTER CODES FOR TRAIN TYPES 1 TO 5
* 
*         *FUNCTION.    ,FORMAT LEVEL.   *
   DATA(OB(0),CON)2664,4523,6331,4645,4060,,6073,2646,5144, 
  ,2163,6043,2565,2543,4060,, 
* 
* 
*         *TOP OF FORM *
* 
   DATA(OB(301),CON)6346,4760,4626,6026,4651,4460 
* 
20 MSG 1 TO PRINT 
   IF(P0.NE.6)GOTO 22 
   EXIT TO 46A               *EXTENDED TRAIN=6
22 MSG 1 TO DISPLAY 
   B2=0 
24 GOSUB 60                  *CONNECT 
   OB(5)=301
   OB(16)=1 
   B4=4 
   SELECT CLEAR,ABT 74
   B1=1 
   B0=1 
   B4=11
   EJECT,ABT 74              *TOP OF FORM 
   GOSUB 61 
   B4=4 
   IF(B2.NE.0)GOTO 25        *IF NEXT IS 8 LPI
   SELECT 6LPI,ABT 74 
   GOTO 26
25 SELECT 8LPI,ABT 74 
26 B4=6 
   PRINT 6 WORDS FROM OB(301),ABT 74
   GOSUB 61 
30 B4=4 
   SELECT POSTPRINT B0,ABT 74 
   B4=6              *PRINT*FUNCTION    ,FORMAT LEVEL*
   PRINT 17 WORDS FROM OB(0),ABT 74 
   GOSUB 60 
   IF(SB(1).AND.3717.NE.1)ERROR 15/100,GOSUB 71 
   IF(DC.LT.26)GOTO 32       *IF NOT PFC PRINTER
   B4=5 
   STATUS,ABT 74
   IF(B0.EQ.12)GOTO 31       *IF ILLEGAL FORMAT LEVEL 
   IF(B0.EQ.13)GOTO 31       *IF ILLEGAL FORMAT LEVEL 
   IF(SB(2).AND.3400.NE.0)ERROR 15/505,GOSUB 71 
   GOTO 32
31 IF(SB(2).AND.3400.NE.1000)ERROR 15/504,GOSUB 71
32 IF(ES.AND.SL.EQ.0)GOTO 33  *IF NOT SCOPE LOOP
   B6=B6+1
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   GOTO 30
33 IF(ES.AND.RC.NE.0)GOTO 30  *REPEAT CONDITIONS
   GOTO 30 WHILE (B1+1.EQ.1)  *EACH FUNCTION TWICE
   OB(5)=OB(5)+1             *FIX PRINT IMAGE 
   IF(OB(5).AND.7.NE.0)GOTO 34
   OB(5)=OB(5)+70 
34 OB(16)=OB(16)+1
   IF(OB(16).AND.77.NE.12)GOTO 36 
   OB(16)=OB(16)+66 
36 B1=0 
   GOTO 30 WHILE (B0+1.LE.14)  *LOOP FOR ALL FUNCTIONS
   GOTO 24 WHILE (B2+1.EQ.1)   *LOOP FOR BOTH 6,8 LPI 
/  EXIT SEQUENCE
54 IF(ES.AND.RM NE 0)GOTO 22    *IF REPEAT MODULE 
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 EXIT 
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
   IF(ES.AND.SL.NE.0)GOTO 60  *IF SCOPE LOOP
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   IF(ES.AND.SL.NE.0)GOTO 72
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 97A 
   B4=3 
   RES,ABT 74                *RECONNECT 
72 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP46A 580(23,24,25,26,27,30),LOCK
*** INTERNAL DOCUMENTATION
* 
/  THIS MODULE CHECKS THE POSTPRINT FORMAT LEVELS 
1  FORMAT FTP46A POSTPRINT FORMAT LEVELS
2  FORMAT FTP46A LC*DEC EC*DEC ST*OCT 
3  FORMAT FTP46A ABORT ON (RES) AT LINE *OCT
4  FORMAT FTP46A ABORT ON (SELECT) AT LINE *OCT 
5  FORMAT FTP46A ABORT ON (STATUS) AT LINE *OCT 
6  FORMAT FTP46A ABORT ON (PRINT) AT LINE *OCT
11 FORMAT FTP46A ABORT ON (EJECT) AT LINE *OCT
15 FORMAT FTP46A ERROR CODE *OCT AT LINE *OCT 
17 FORMAT *DEC ERROR(S) IN FTP46A 
* 
*   CHARACTER CODES FOR TRAIN TYPE 6
* 
*         *FUNCTION.    ,FORMAT LEVEL.   *
   DATA(OB(0),CON)106,125,116,103,124,111,117,116,55,40,,,
  ,40,54,106,117,122,115,101,124,40,114,105,126,105,114,
  ,55,40,,, 
* 
* 
*         *TOP OF FORM* 
* 
   DATA(OB(301),CON)124,117,120,40,117,106,40,106,117,
  ,122,115
* 
20 MSG 1 TO PRINT 
   GOSUB 60                  *CONNECT 
   B4=4 
   SELECT EXTENDED,ABT 74 
22 MSG 1 TO DISPLAY 
   B2=0 
24 GOSUB 60                  *CONNECT 
   OB(12)=63
   OB(13)=61
   OB(34)=60
   OB(35)=61
   B4=4 
   SELECT CLEAR,ABT 74
   B1=1 
   B0=1 
   B4=11
   EJECT,ABT 74              *TOP OF FORM 
   GOSUB 61 
   B4=4 
   IF(B2.NE.0)GOTO 25        *IF NEXT IS 8LPI 
   SELECT 6LPI,ABT 74 
   GOTO 26
25 SELECT 8LPI,ABT 74 
26 B4=6 
   PRINT 13 WORDS FROM OB(301),ABT 74 
   GOSUB 61 
30 B4=4 
   SELECT POSTPRINT B0,ABT 74 
   B4=6            *PRINT*FUNCTION    ,FORMAT LEVEL*
   PRINT 36 WORDS FROM OB(0),ABT 74 
   GOSUB 60 
   IF(SB(1).AND.3717.NE.1)ERROR 15/100,GOSUB 71 
   IF(DC.LT.26)GOTO 32       *IF NOT PFC PRINTER
   B4=5 
   STATUS,ABT 74
   IF(B0.EQ.12)GOTO 31       *IF ILLEGAL FORMAT LEVEL 
   IF(B0.EQ.13)GOTO 31       *IF ILLEGAL FORMAT LEVEL 
   IF(SB(2).AND.3400.NE.0)ERROR 15/505,GOSUB 71 
   GOTO 32
31 IF(SB(2).AND.3400.NE.1000)ERROR 15/504,GOSUB 71
32 IF(ES.AND.SL.EQ.0)GOTO 33  *IF NOT SCOPE LOOP
   B6=B6+1
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   GOTO 30
33 IF(ES.AND.RC.NE.0)GOTO 30  *REPEAT CONDITIONS
   GOTO 30 WHILE (B1+1.EQ.1)  *EACH FUNCTION TWICE
   OB(13)=OB(13)+1            *FIX PRINT IMAGE
   IF(OB(13).NE.70)GOTO 34
   OB(13)=60
   OB(12)=OB(12)+1
34 OB(35)=OB(35)+1
   IF(OB(35).NE.72)GOTO 36
   OB(35)=60
   OB(34)=OB(34)+1
36 B1=0 
   GOTO 30 WHILE (B0+1.LE.14)  *LOOP FOR ALL FUNCTIONS
   GOTO 24 WHILE (B2+1.EQ.1)   *LOOP FOR BOTH 6,8 LPI 
/  EXIT SEQUENCE
54 IF(ES.AND.RM NE 0)GOTO 22    *IF REPEAT MODULE 
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 EXIT 
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
   IF(ES.AND.SL.NE.0)GOTO 60  *IF SCOPE LOOP
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   IF(ES.AND.SL.NE.0)GOTO 72
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 97A 
   B4=3 
   RES,ABT 74                *RECONNECT 
72 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP47 580(23,24,25,26,27,30),LOCK 
*** CHECK PREPRINT FORMAT SPACING 
**
* 
* 
*   OVERVIEW - MODULE *FTP47* CHECKS THE PREPRINT FORMAT SPACING. 
*              IT RUNS ON BOTH PFC AND NON PFC PRINTERS. EACH LEVEL 
*              IS SELECTED TWICE AND EACH TIME A LINE CONTAINING THE
*              FUNCTION NUMBER AND THE FORMAT LEVEL NUMBER IS PRINTED.
* 
* 
*   DESCRIPTION - CHECK PREPRINT FORMAT SPACING 
* 
*     (FTP47 FOR TRAINS 1-5, FTP47A FOR TRAIN 6)
*         1.  CONNECT AND CHECK STATUS
*         2.  CLEAR FORMAT SELECTIONS 
*         3.  PAGE EJECT
*         4.  PRINT *TOP OF FORM* 
*         5.  SELECT 6 LPI IF PASS 1 OR 8 LPI IF PASS 2 
*         6.  SELECT PREPRINT LEVEL N 
*         7.  PRINT LEVEL NUMBER MESSAGE
*         8.  VERIFY NO ERROR STATUS
*         9.  IF PFC PRINTER, VERIFY NO PFC ERROR 
*             IF FORMAT LEVELS 1-12(OCTAL).  VERIFY PFC ERROR 
*             FOR FORMAT LEVELS 13,14.
*         10. REPEAT FROM STEP 6 IF REPEAT CONDITIONS 
*         11. REPEAT FROM STEP 6 ONCE MORE
*         12. REPEAT FROM STEP 6 FOR LEVELS 1 THROUGH 14(OCTAL) 
*         13. REPEAT FROM STEP 3 FOR 8 LPI
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON (RES)
*         2.  ABORT ON (SELECT) 
*         3.  ABORT ON (STATUS) 
*         4.  ABORT ON (EJECT)
*         5.  ABORT ON (PRINT)
*         6.  UNEXPECTED NOT READY AND NOT BUSY(100)
*         7.  NO PFC ERROR AFTER SELECTING ILLEGAL FORMAT LEVEL (504) 
*         8.  PFC ERROR AFTER SELECTING LEGAL FORMAT LEVEL (505)
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (RES) AT LINE *OCT 
*         2.  ABORT ON (SELECT) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (EJECT) AT LINE *OCT 
*         5.  ABORT ON (PRINT) AT LINE *OCT 
*         6.  STATUS IS NOT READY AND NOT BUSY
*         7.  SELECTED ILLEGAL FORMAT LEVEL. EXPECTED 
*             PFC ERROR 
*         8.  SELECTED LEGAL FORMAT LEVEL. EXPECTED NO
*             PFC ERROR 
* 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP97A - ERROR PROCESSOR
*         FTP97Z - ERROR PROCESSOR
* 
* 
*  *********************************************************
* 
/  THIS MODULE CHECKS THE PREPRINT FORMAT LEVELS
1  FORMAT FTP47 PREPRINT FORMAT LEVELS
2  FORMAT FTP47 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP47 ABORT ON (RES) AT LINE *OCT 
4  FORMAT FTP47 ABORT ON (SELECT) AT LINE *OCT
5  FORMAT FTP47 ABORT ON (STATUS) AT LINE *OCT
6  FORMAT FTP47 ABORT ON (PRINT) AT LINE *OCT 
11 FORMAT FTP47 ABORT ON (EJECT) AT LINE *OCT 
15 FORMAT FTP47 ERROR CODE *OCT AT LINE *OCT
17 FORMAT *DEC ERROR(S) IN FTP47
* 
*   CHARACTER CODES FOR TRAIN TYPES 1 TO 5
* 
*         *FUNCTION.    ,FORMAT LEVEL.   *
   DATA(OB(0),CON)2664,4523,6331,4645,4060,,6073,2646,5144, 
  ,2163,6043,2565,2543,4060,, 
* 
* 
*         *TOP OF FORM *
* 
   DATA(OB(301),CON)6346,4760,4626,6026,4651,4460 
20 MSG 1 TO PRINT 
   IF(P0.NE.6)GOTO 22 
   EXIT TO 47A
22 MSG 1 TO DISPLAY 
   B2=0 
24 GOSUB 60                  *CONNECT 
   OB(5)=501
   OB(16)=1 
   B4=4 
   SELECT CLEAR,ABT 74
   B1=1 
   B0=1 
   B4=11
   EJECT,ABT 74              *TOP OF FORM 
   GOSUB 61 
   B4=4 
   IF(B2.NE.0)GOTO 25 
   SELECT 6LPI,ABT 74 
   GOTO 26
25 SELECT 8LPI,ABT 74 
26 B4=6 
   PRINT 6 WORDS FROM OB(301),ABT 74
   GOSUB 61 
30 B4=4 
   SELECT PREPRINT B0,ABT 74
   B4=6              *PRINT*FUNCTION    ,FORMAT LEVEL*
   PRINT 17 WORDS FROM OB(0),ABT 74 
   GOSUB 60 
   IF(SB(1).AND.3717.NE.1)ERROR 15/100,GOSUB 71 
   IF(DC.LT.26)GOTO 32       *IF NOT PFC PRINTER
   B4=5 
   STATUS,ABT 74
   IF(B0.EQ.12)GOTO 31       *IF ILLEGAL FORMAT LEVEL 
   IF(B0.EQ.13)GOTO 31       *IF ILLEGAL FORMAT LEVEL 
   IF(SB(2).AND.3400.NE.0)ERROR 15/505,GOSUB 71 
   GOTO 32
31 IF(SB(2).AND.3400.NE.1000)ERROR 15/504,GOSUB 71
32 IF(ES.AND.SL.EQ.0)GOTO 33  *IF NOT SCOPE LOOP
   B6=B6+1
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   GOTO 30
33 IF(ES.AND.RC.NE.0)GOTO 30  *REPEAT CONDITIONS
   GOTO 30 WHILE (B1+1.EQ.1)  *EACH FUNCTION TWICE
   OB(5)=OB(5)+1             *FIX PRINT IMAGE 
   IF(OB(5).AND.7.NE.0)GOTO 34
   OB(5)=OB(5)+70 
34 OB(16)=OB(16)+1
   IF(OB(16).AND.77.NE.12)GOTO 36 
   OB(16)=OB(16)+66 
36 B1=0 
   GOTO 30 WHILE (B0+1.LE.14)  *LOOP FOR ALL FUNCTIONS
   GOTO 24 WHILE (B2+1.EQ.1)   *LOOP FOR BOTH 6,8 LPI 
/  EXIT SEQUENCE
54 IF(ES.AND.RM NE 0)GOTO 22    *IF REPEAT MODULE 
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 GOSUB 60                  *CONNECT 
   GOTO 77
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
   IF(ES.AND.SL.NE.0)GOTO 60  *IF SCOPE LOOP
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   IF(ES.AND.SL.NE.0)GOTO 72
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 97A 
   B4=3 
   RES,ABT 74                *RECONNECT 
72 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
77 END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP47A 580(23,24,25,26,27,30),LOCK
* 
/  THIS MODULE CHECKS THE PREPRINT FORMAT LEVELS
1  FORMAT FTP47A PREPRINT FORMAT LEVELS 
2  FORMAT FTP47A LC*DEC EC*DEC ST*OCT 
3  FORMAT FTP47A ABORT ON (RES) AT LINE *OCT
4  FORMAT FTP47A ABORT ON (SELECT) AT LINE *OCT 
5  FORMAT FTP47A ABORT ON (STATUS) AT LINE *OCT 
6  FORMAT FTP47A ABORT ON (PRINT) AT LINE *OCT
11 FORMAT FTP47A ABORT ON (EJECT) AT LINE *OCT
15 FORMAT FTP47A ERROR CODE *OCT AT LINE *OCT 
17 FORMAT *DEC ERROR(S) IN FTP47A 
* 
*   CHARACTER CODES FOR TRAIN TYPE 6
* 
*         *FUNCTION.    ,FORMAT LEVEL.   *
   DATA(OB(0),CON)106,125,116,103,124,111,117,116,55,40,,,
  ,40,54,106,117,122,115,101,124,40,114,105,126,105,114,
  ,55,40,,, 
* 
*         *TOP OF FORM* 
* 
   DATA(OB(301),CON)124,117,120,40,117,106,40,106,117,
  ,122,115
* 
20 MSG 1 TO PRINT 
22 MSG 1 TO DISPLAY 
   B2=0 
24 GOSUB 60                  *CONNECT 
   OB(12)=65
   OB(13)=61
   OB(34)=60
   OB(35)=61
   B4=4 
   SELECT CLEAR,ABT 74
   B1=1 
   B0=1 
   B4=11
   EJECT,ABT 74              *TOP OF FORM 
   GOSUB 61 
   B4=4 
   IF(B2.NE.0)GOTO 25        *IF NEXT IS 8 LPI
   SELECT 6LPI,ABT 74 
   GOTO 26
25 SELECT 8LPI,ABT 74 
26 B4=6 
   PRINT 13 WORDS FROM OB(301),ABT 74 
   GOSUB 61 
30 B4=4 
   SELECT PREPRINT B0,ABT 74
   B4=6          *PRINT*FUNCTION    ,FORMAT LEVEL*
   PRINT 36 WORDS FROM OB(0),ABT 74 
   GOSUB 60 
   IF(SB(1).AND.3717.NE.1)ERROR 15/100,GOSUB 71 
   IF(DC.LT.26)GOTO 32       *IF NOT PFC PRINTER
   B4=5 
   STATUS,ABT 74
   IF(B0.EQ.12)GOTO 31       *IF ILLEGAL FORMAT LEVEL 
   IF(B0.EQ.13)GOTO 31       *IF ILLEGAL FORMAT LEVEL 
   IF(SB(2).AND.3400.NE.0)ERROR 15/505,GOSUB 71 
   GOTO 32
31 IF(SB(2).AND.3400.NE.1000)ERROR 15/504,GOSUB 71
32 IF(ES.AND.SL.EQ.0)GOTO 33  *IF NOT SCOPE LOOP
   B6=B6+1
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   GOTO 30
33 IF(ES.AND.RC.NE.0)GOTO 30  *REPEAT CONDITIONS
   GOTO 30 WHILE (B1+1.EQ.1)  *EACH FUNCTION TWICE
   OB(13)=OB(13)+1            *FIX PRINT IMAGE
   IF(OB(13).NE.70)GOTO 34
   OB(13)=60
   OB(12)=OB(12)+1
34 OB(35)=OB(35)+1
   IF(OB(35).NE.72)GOTO 36
   OB(35)=60
   OB(34)=OB(34)+1
36 B1=0 
   GOTO 30 WHILE (B0+1.LE.14)  *LOOP FOR ALL FUNCTIONS
   GOTO 24 WHILE (B2+1.EQ.1)   *LOOP FOR BOTH 6,8 LPI 
/  EXIT SEQUENCE
54 IF(ES.AND.RM NE 0)GOTO 22    *IF REPEAT MODULE 
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 GOSUB 60                  *CONNECT 
   GOTO 77
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
   IF(ES.AND.SL.NE.0)GOTO 60  *IF SCOPE LOOP
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   IF(ES.AND.SL.NE.0)GOTO 72
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 97A 
   B4=3 
   RES,ABT 74                *RECONNECT 
72 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
77 END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP50 580(23,24,25,26,27,30),LOCK 
*** BURST SPEED TEST
**
* 
* 
*   OVERVIEW - MODULE *FTP50* PRINTS LINES WITH A PSEUDO-TRAIN OF 
*              16 CHARACTERS TO RUN THE PRINTER AT BURST SPEED. 
* 
* 
*   DESCRIPTION - BURST SPEED TEST
* 
*         1.  CONNECT AND CHECK STATUS
*         2.  PAGE EJECT
*         3.  CLEAR FORMAT SELECTIONS 
*         4.  CLEAR EXTENDED ARRAY
*         5.  SELECT AUTO PAGE EJECT
*         6.  FILL TRAIN IMAGE WITH CODES 0 - 17B 
*         7.  BUILD PACKED PRINT BUFFER WITH CODES 0 - 17B
*         8.  CHECK P7 FOR OPERATOR ENTERED LINE COUNT (DEFAULT IS 240) 
*         9.  WAIT FOR NOT BUSY STATUS
*         10. PRINT LINE
*         11. REPEAT FROM STEP 9 FOR PRINT COUNT
*         12. WAIT FOR NOT BUSY STATUS
*         13. RESTORE STANDARD TRAIN IMAGE
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON RESERVE
*         2.  ABORT ON SELECT 
*         3.  ABORT ON STATUS 
*         4.  ABORT ON PRINT
*         5.  ABORT ON WAITNB 
*         6.  ABORT ON EJECT
*         7.  ABORT ON FILL 
*         8.  UNEXPECTED NOT READY AND NOT BUSY(100)
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (RES) AT LINE *OCT 
*         2.  ABORT ON (SELECT) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (PRINT) AT LINE *OCT 
*         5.  ABORT ON (WAITNB) AT LINE *OCT
*         6.  ABORT ON (EJECT) AT LINE *OCT 
*         7.  ABORT ON (FILL) AT LINE *OCT
*         8.  STATUS IS NOT READY AND NOT BUSY
* 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP97A - ERROR PROCESSOR
*         FTP97Z - ERROR PROCESSOR
*         FTP98D - GENERATE TRAIN IMAGE DATA
* 
* 
**********************************************************************
/  BURST SPEED TEST 
1  FORMAT FTP50 BURST SPEED TEST
2  FORMAT FTP50 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP50 ABORT ON (RES) AT LINE *OCT 
4  FORMAT FTP50 ABORT ON (SELECT) AT LINE *OCT
5  FORMAT FTP50 ABORT ON (STATUS) AT LINE *OCT
6  FORMAT FTP50 ABORT ON (PRINT) AT LINE *OCT 
7  FORMAT FTP50 ABORT ON (WAITNB) AT LINE *OCT
11 FORMAT FTP50 ABORT ON (EJECT) AT LINE *OCT 
12 FORMAT FTP50 ABORT ON (FILL) AT LINE *OCT
15 FORMAT FTP50 ERROR CODE *OCT AT LINE *OCT
17 FORMAT *DEC ERROR(S) IN FTP50
20 MSG 1 TO PRINT 
22 MSG 1 TO DISPLAY 
24 GOSUB 60                  *CONNECT 
   B4=11
   EJECT,ABT 74              *TOP OF FORM 
   B4=4 
   SELECT CLEAR,ABT 74       *CLEAR FORMAT SELECTIONS 
   SELECT CLREXT,ABT 74      *CLEAR EXTENDED ARRAY
   SELECT 6LPI,ABT 74        *6 LINES PER INCH
   SELECT AUTO,ABT 74        *AUTO PAGE EJECT 
   B0=0 
   B1=0                      *BUILD 16 CHARACTER
26 OB(B0)=B1                   *TRAIN IMAGE 
   GOTO 27 WHILE (B1+1.LT.20) 
   B1=0 
27 GOTO 26 WHILE (B0+1.LT.384D) 
   B4=12
   FILL IMAGE,ABT 74
   B0=0 
   B1=0001                   *BUILD PACKED PRINT LINE 
31 OB(B0)=B1
   GOTO 32 WHILE (B1+101.LE.1617) 
   B1=0001
32 GOTO 31 WHILE (B0+1.LT.140)
   B0=0                      *CLEAR LINE COUNTER
   B1=P7                     *SET LINE LIMIT
   IF(B1.NE.0)GOTO 34 
   B1=240D                   *DEFAULT 
34 B4=7 
   WAITNB,ABT 74
   IF(SB(1).AND.3717.NE.1)ERROR 15/100,GOSUB 71 
36 B4=6 
   PRINT 104 WORDS FROM OB(0),ABT 74
   GOTO 34 WHILE (B0+1.LT.B1)  *PRINT LINES 
   B4=7 
   WAITNB,ABT 74
   IF(SB(1).AND.3717.NE.1)ERROR 15/100,GOSUB 71 
44 CALL 98D                  *RESTORE TRAIN IMAGE 
   GOSUB 60 
   B4=12
   FILL IMAGE,ABT 74
   B4=11
   EJECT,ABT 74 
/  EXIT SEQUENCE
54 IF(ES.AND.RM NE 0)GOTO 22    *IF REPEAT MODULE 
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 GOTO 77
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 97A 
   B4=3 
   RES,ABT 74                *RECONNECT 
72 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
77 END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP51 580(23,24,25,26,27,30),LOCK 
*** TIME TRAIN HOME PULSE 
**
* 
* 
*   OVERVIEW - MODULE *FTP51* TIMES THE TRAIN HOME PULSE CYCLE
*              BY PRINTING *TIME THP*. THE DATA IS PRESENTED
*              GRAPHICALLY.  THIS MODULE RUNS ON PFC PRINTERS 
*              ONLY.
* 
*              THE VERTICAL AXIS USED FOR DATA PLOTTING IS MSEC 
*              AS LABELED.  A HORIZONTAL DASHED LINE IS PROVIDED
*              TO INDICATE A NOMINAL VALUE FOR THP PERIOD.
* 
*              THE VALUES USED ARE_ 
* 
*              DEVICE      PRINTER        NOMINAL THP 
*               CODE                        PERIOD
* 
*                26        580-120         301 MSEC 
*                27        580-160         200 MSEC 
*                30        580-200         173 MSEC 
* 
* 
*   DESCRIPTION - TIME TRAIN HOME PULSE 
* 
*         1.  CONNECT AND CHECK STATUS
*         2.  IF TRAIN TYPE 6, SELECT EXTENDED ARRAY
*         3.  PAGE EJECT
*         4.  PUT UP PLOT MASK
*         5.  PRINT THE LINE
*         6.  TIME THP CYCLE
*         7.  PLOT TIME RECIEVED
*         8.  REPEAT FROM STEP 5 FOURTY TIMES 
*         8.  PAUSE IF STOP ON ERROR IS SET 
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON (RES)
*         2.  ABORT ON (SELECT) 
*         3.  ABORT ON (STATUS) 
*         4.  ABORT ON (TIME) 
*         5.  ABORT ON (EJECT)
*         6.  ABORT ON (PRINT)
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (RES) AT LINE *OCT 
*         2.  ABORT ON (SELECT) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (TIME) AT LINE *OCT
*         5.  ABORT ON (EJECT) AT LINE *OCT 
*         6.  ABORT ON (PRINT) AT LINE *OCT 
* 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP97Z - ERROR PROCESSOR
* 
* 
**********************************************************************
/  TIME TRAIN HOME PULSE (THP)
1  FORMAT FTP51 TIME TRAIN HOME PULSE (THP) 
2  FORMAT FTP51 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP51 ABORT ON (RES) AT LINE *OCT 
4  FORMAT FTP51 ABORT ON (SELECT) AT LINE *OCT
5  FORMAT FTP51 ABORT ON (STATUS) AT LINE *OCT
6  FORMAT FTP51 ABORT ON (PRINT) AT LINE *OCT 
7  FORMAT FTP51 ABORT ON (TIME) AT LINE *OCT
10 FORMAT FTP51 ABORT ON (EJECT) AT LINE *OCT 
11 FORMAT        TIMING TRAIN HOME PULSE (THP)
12 FORMAT *DEC----------------------------------------------
13 FORMAT *DEC
14 FORMAT FTP51 DOES NOT RUN ON NON-PFC PRINTERS
15 FORMAT FTP51 PAUSE 
17 FORMAT *DEC ERROR(S) IN FTP51
*         *TIME THP* TRAINS 1-5 
   DATA (OB(1),CON)6331,4425,6063,3047
*         *TIME THP* TRAIN 6
   DATA (OB(100),CON)124,111,115,105,40,124,110,120 
*         NOMINAL TRAIN SPEEDS (MSEC) FOR DC=26,27,30 
   DATA (OB(400),CON)301D,200D,173D 
20 IF(DC.GE.26)GOTO 21       *IF PFC PRINTER
   MSG 14 TO DISPLAY,PRINT
   GOTO 77
21 MSG 1 TO PRINT 
   BA=1                      *INIT PRINT PARAMETERS AND DATA
   WC=4 
   IF(P0.NE.6)GOTO 22        *IF NOT TRAIN 6
   WC=10
   COPY OB(100) TO OB(1) FOR 10 
   GOSUB 60 
   B4=4 
   SELECT EXTENDED,ABT 74 
22 MSG 1 TO DISPLAY 
24 GOSUB 60 
   B4=4 
   SELECT CLEAR,ABT 74
   B4=10
   EJECT,ABT 74 
   GOSUB 61 
   B0=DC-26 
   B0=OB(B0+400)             *GET NOMINAL TRAIN SPEED 
   B1=B0+18D
   B2=2 
26 MSG 13 (B1) TO LINE B2    *PAINT PLOT MASK 
   B1=B1-1
   GOTO 26 WHILE (B2+1.LE.39D)
   MSG 11 TO LINE 0 
   MSG 12 (B0) TO LINE 20D
   B0=B0-19D                 *LOWER LIMIT 
   B1=B0+39D                 *UPPER LIMIT 
   B3=4 
30 GOSUB 61 
   B4=6 
   PRINT,ABT 74 
   B4=7 
   TIME THP CYCLE TO IB(0),ABT 74 
   B4=IB(0) RS 3             *CHANGE TO MSEC
   IF(B4.GE.B0)GOTO 32
   B4=B0
32 IF(B4.LE.B1)GOTO 33
   B4=B1
33 B4=B4-B0 
   PLOT LINE B4 CHAR B3 
   GOTO 30 WHILE (B3+1.LE.50) 
   PICTURE
   IF(ES.AND.SE.EQ.0)GOTO 40  *IF NOT STOP ON ERROR 
   MSG 15 TO DISPLAY
   PAUSE
40 BLANK
/  EXIT SEQUENCE
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 GOTO 77
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
77 END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP52 580(23,24,25,26,27,30),LOCK 
*** TIME PAPER SLEW 
**
* 
* 
*   OVERVIEW - MODULE *FTP52* TIMES THE E8 PULSE CYCLE
*              DURING A PAGE EJECT. THE DATA IS PRESENTED 
*              GRAPHICALLY.  THIS MODULE RUNS ON PFC PRINTERS 
*              ONLY.
* 
*              THE VERTICAL AXIS USED FOR DATA PLOTTING IS
*              INCHES-PER-SECOND PAPER SPEED.  THE PERIOD OF
*              THE E8 PULSE IS TIMED AS OFTEN AS POSSIBLE 
*              AND CONVERTED TO INCHES/SECOND.  HORIZONTAL
*              DASHED LINES ARE PROVIDED TO INDICATE NOMINAL
*              AND + OR - LIMITS FOR BOTH HIGH SPEED SLEW 
*              AND LOW SPEED SLEW.
* 
*              LIMITS USED ARE AS FOLLOWS_
* 
*                               580-120 
*                               580-160              580-200
*                            6LPI     8LPI        6LPI     8LPI 
* 
*              HIGH SLEW
* 
*                  +          76       56         100       76
*                NOMINAL      70       50          90       70
*                  -          64       44          80       64
* 
*              LOW SLEW 
* 
*                  +          32       32          36       36
*                NOMINAL      28       28          32       32
*                  -          26       26          28       28
* 
*              A NORMAL PLOT SHOULD SHOW PLATEAUS WITHIN
*              THESE LIMITS.
* 
*   DESCRIPTION - CHECK SUPPRESS SPACE
* 
*         1.  CONNECT AND CHECK STATUS
*         2.  PAGE EJECT
*         3.  SELECT 6 LPI
*         4.  PUT UP PLOT MASK
*         5.  PAGE EJECT
*         6.  TIME E8 CYCLE 
*         7.  PLOT TIMES RECIEVED 
*         8.  PAUSE IF STOP ON ERROR IS SET 
*         9.  REPEAT FROM STEP 4 FOR 8 LPI
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON (RES)
*         2.  ABORT ON (SELECT) 
*         3.  ABORT ON (STATUS) 
*         4.  ABORT ON (EJECT)
*         5.  ABORT ON (TIME) 
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (RES) AT LINE *OCT 
*         2.  ABORT ON (SELECT) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (EJECT) AT LINE *OCT 
*         5.  ABORT ON (TIME) AT LINE *OCT
* 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP97Z - ERROR PROCESSOR
* 
* 
**********************************************************************
/  TIME PAPER SLEW
1  FORMAT FTP52 TIME PAPER SLEW 
2  FORMAT FTP52 LC*DEC EC*DEC ST*OCT
3  FORMAT FTP52 ABORT ON (RES) AT LINE *OCT 
4  FORMAT FTP52 ABORT ON (SELECT) AT LINE *OCT
5  FORMAT FTP52 ABORT ON (STATUS) AT LINE *OCT
7  FORMAT FTP52 ABORT ON (TIME) AT LINE *OCT
10 FORMAT FTP52 ABORT ON (EJECT) AT LINE *OCT 
11 FORMAT IPS_   TIMING PAPER SLEW DURING EJECT AT *DEC LPI 
12 FORMAT *DEC----------------------------------------------
13 FORMAT *DEC
14 FORMAT FTP52 DOES NOT RUN ON NON-PFC PRINTERS
15 FORMAT FTP52 PAUSE 
17 FORMAT *DEC ERROR(S) IN FTP52
20 IF(DC.GE.26)GOTO 21       *IF PFC PRINTER
   MSG 14 TO DISPLAY,PRINT
   GOTO 77
21 MSG 1 TO PRINT 
22 MSG 1 TO DISPLAY 
24 GOSUB 60 
   B4=10
   EJECT,ABT 74 
   GOSUB 61 
   B0=6 
   B4=4 
   SELECT 6LPI,ABT 74 
25 B1=100D
   B2=2 
26 MSG 13 (B1) TO LINE B2    *PAINT PLOT MASK 
   B1=B1-2
   GOTO 26 WHILE (B2+1.LE.39D)
   MSG 11 (B0) TO LINE 0     *DRAW NOMINAL SLEW RATES 
   IF(DC.LT.30)GOTO 31       *IF FT-I,OR FT-II
   IF(B0.NE.6)GOTO 27        *IF NOT 6 LPI
   MSG 12 (90D) TO LINE 7    *FT-III AT 6 LPI 
   MSG 12 (100D) TO LINE 2   *FT-III AT 6 LPI 
   MSG 12 (80D) TO LINE 12D  *FT-III AT 6 LPI 
   GOTO 30
27 MSG 12 (70D) TO LINE 17D  *FT-III AT 8 LPI 
   MSG 12 (76D) TO LINE 14D  *FT-III AT 8 LPI 
   MSG 12 (64D) TO LINE 20D  *FT-III AT 8 LPI 
30 MSG 12 (36D) TO LINE 34D 
   GOTO 34
31 IF(B0.NE.6)GOTO 32        *IF NOT 6 LPI
   MSG 12 (70D) TO LINE 17D  *FT-I,II AT 6 LPI
   MSG 12 (76D) TO LINE 14D  *FT-I,II AT 6 LPI
   MSG 12 (64D) TO LINE 20D  *FT-I,II AT 6 LPI
   GOTO 33
32 MSG 12 (50D) TO LINE 27D  *FT-I,II AT 8 LPI
   MSG 12 (56D) TO LINE 24D  *FT-I,II AT 8 LPI
   MSG 12 (44D) TO LINE 30D  *FT-I,II AT 8 LPI
33 MSG 12 (26D) TO LINE 39D 
34 MSG 12 (32D) TO LINE 36D 
   MSG 12 (28D) TO LINE 38D 
   B4=10
   EJECT,ABT 74              *START PAPER MOTION
   B3=4 
35 TIME E8 CYCLE TO IB(B3),ABT 36  *COLLECT TIMING DATA 
   GOTO 35 WHILE (B3+1.LT.48) 
36 B3=4 
37 B1=0 
   IF(IB(B3).EQ.0)GOTO 42 
   B2=3906D 
40 B4=B2 AND 4000            *CONVERT TO INCHES/SEC 
   B2=B2-IB(B3) 
   IF(B4.NE.0)GOTO 41 
   IF(B2.AND.4000.NE.0)GOTO 42
41 GOTO 40 WHILE (B1+1.NE.0)
42 IF(B1.LE.50D)GOTO 43 
   B1=50D 
43 IF(B1.GE.13D)GOTO 44 
   B1=13D 
44 B1=B1-13D
   PLOT LINE B1 CHAR B3      *PRESENT DATA
   GOTO 37 WHILE (B3+1.LE.48) 
   PICTURE
   IF(ES.AND.SE.EQ.0)GOTO 46
   MSG 15 TO DISPLAY
   PAUSE
46 BLANK
   GOSUB 60 
   B4=4 
   SELECT 8LPI,ABT 74 
   GOTO 25 WHILE (B0+2.EQ.8)
/  EXIT SEQUENCE
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 GOTO 77
/  CONNECT SUBROUTINE ******************************* 
60 B4=3 
   RES,ABT 74                          *CONNECT 
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 63         *CHECK STATUS
61 REL
   DELAY 100 MSEC                      *WAIT
   GOTO 60                             *TRY AGAIN 
63 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 97Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
77 END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP96A 3000(23,24,25,26,27,30),LOCK 
*** ERROR PROCESSOR 
**
* 
* 
*   OVERVIEW - MODULE *FTP96A* IS A UTILITY MODULE CALLED BY
*              PRIMARY LOW-LEVEL MODULES FOR PROCESSING ERRORS. 
* 
* 
*   DESCRIPTION - ERROR PROCESSOR 
* 
*         1.  IF ERROR CODE 110-117 EXIT TO FTP96B. 
*         2.  IF ERROR CODE 120-127 EXIT TO FTP96C. 
*         3.  IF ERROR CODE 200-207 EXIT TO FTP96D. 
*         4.  IF ERROR CODE 300-307 EXIT TO FTP96E. 
*         5.  IF ERROR CODE 400-407 EXIT TO FTP96F. 
*         6.  IF ERROR CODE 500-507 EXIT TO FTP96G. 
*         7.  POST ERROR MESSAGE TEXT 
*         8.  EXIT TO FPT96X
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         REGISTERS ARE NOT DISTURBED 
* 
*   MODULES CALLED
* 
*         FTP96B - ERROR PROCESSOR
*         FTP96C - ERROR PROCESSOR
*         FTP96D - ERROR PROCESSOR
*         FTP96E - ERROR PROCESSOR
*         FTP96F - ERROR PROCESSOR
*         FTP96G - ERROR PROCESSOR
*         FTP96X - ERROR PROCESSOR
* 
* 
**********************************************************************
/  ERROR CODE PROCESSOR PART 1
1  FORMAT ILLEGAL ERROR CODE *OCT 
/  ERROR CODE = 100 
10 FORMAT STATUS IS NOT (READY AND NOT BUSY)
/  ERROR CODE = 101 
14 FORMAT SELECTED READY-AND-NOT-BUSY INTERRUPT 
15 FORMAT IN STATIC STATE 
/  ERROR CODE = 102 
20 FORMAT CLEARED READY-AND-NOT-BUSY INTERRUPT
21 FORMAT IN STATIC STATE 
/  ERROR CODE = 103 
24 FORMAT CLEARED READY-AND-NOT-BUSY INTERRUPT
25 FORMAT BY RECONNECTING 
/  ERROR CODE = 104 
30 FORMAT SELECTED READY-AND-NOT-BUSY INTERRUPT 
31 FORMAT DURING A PRINT OPERATION. EXPECTED INT. 
/  ERROR CODE = 105 
34 FORMAT CLEARED READY-AND-NOT-BUSY INTERRUPT
35 FORMAT DURING A PRINT OPERATION. EXPECTED NO INT.
/  ERROR CODE = 106 
40 FORMAT SELECTED E-O-P INTERRUPT. NO INTERRUPT
41 FORMAT AFTER SPACE FUNCTION. 
/  ERROR CODE = 107 
44 FORMAT CLEARED E-O-P INTERRUPT. EXPECTED NO
45 FORMAT INTERRUPT STATUS. 
50 IB(100)=B0                *SAVE REGISTERS
   IB(101)=B1                *SAVE REGISTERS
   IB(102)=B2                *SAVE REGISTERS
   IB(103)=B3                *SAVE REGISTERS
   IB(104)=B4                *SAVE REGISTERS
   IB(105)=B5                *SAVE REGISTERS
   IB(106)=B6                *SAVE REGISTERS
   IB(107)=B7                *SAVE REGISTERS
   IF(EC.LT.100)GOTO 62 
   IF(EC.GT.107)GOTO 61 
   IF(EC.NE.100)GOTO 51 
   B2=10                     *FIRST MSG 
   B3=10                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=1                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
51 IF(EC.NE.101)GOTO 52 
   B2=14                     *FIRST MSG 
   B3=15                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=201                    *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
52 IF(EC.NE.102)GOTO 53 
   B2=20                     *FIRST MSG 
   B3=21                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=1                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
53 IF(EC.NE.103)GOTO 54 
   B2=24                     *FIRST MSG 
   B3=25                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=1                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
54 IF(EC.NE.104)GOTO 55 
   B2=30                     *FIRST MSG 
   B3=31                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=201                    *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
55 IF(EC.NE.105)GOTO 56 
   B2=34                     *FIRST MSG 
   B3=35                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=103                    *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
56 IF(EC.NE.106)GOTO 57 
   B2=40                     *FIRST MSG 
   B3=41                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=401                    *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
57 B2=44                     *FIRST MSG 
   B3=45                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=1                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
60 MSG B2 TO LINE B5
   B5=B5+1
   GOTO 60 WHILE (B2+1.LE.B3) 
   B5=B5+1
   RETURN 
61 IF(EC.LT.120)GOTO 66 
   IF(EC.LT.130)GOTO 67 
   IF(EC.LT.200)GOTO 62 
   IF(EC.LT.210)GOTO 70 
   IF(EC.LT.300)GOTO 62 
   IF(EC.LT.310)GOTO 71 
   IF(EC.LT.400)GOTO 62 
   IF(EC.LT.410)GOTO 72 
   IF(EC.LT.500)GOTO 62 
   IF(EC.LT.510)GOTO 73 
62 MSG 1 (EC) TO LINE B5     *BAD ERROR CODE
   B5=B5+1
   B1=3717                   *MASK
   B0=1                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
66 EXIT TO 96B
67 EXIT TO 96C
70 EXIT TO 96D
71 EXIT TO 96E
72 EXIT TO 96F
73 EXIT TO 96G
77 EXIT TO 96X
   END 50 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP96B 3000(23,24,25,26,27,30),LOCK 
*** ERROR PROCESSOR 
**
* 
* 
*   OVERVIEW - MODULE *FTP96B* IS A UTILITY MODULE CALLED BY
*              MODULE *FTP96A* FOR PROCESSING ERRORS. 
* 
* 
*   DESCRIPTION - ERROR PROCESSOR 
* 
*         1.  POST ERROR MESSAGE TEXT 
*         2.  EXIT TO FPT96X
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         REGISTERS ARE NOT DISTURBED 
* 
*   MODULES CALLED
* 
*         FTP96X - ERROR PROCESSOR
* 
* 
**********************************************************************
/  ERROR CODE PROCESSOR PART 2
1  FORMAT ILLEGAL ERROR CODE *OCT 
/  ERROR CODE = 110 
10 FORMAT SELECTED END-OF-OPERATION INTERRUPT.
11 FORMAT EXPECTED INTERRUPT AFTER PRINT. 
/  ERROR CODE = 111 
14 FORMAT CLEARED END-OF-OPERATION INTERRUPT BY 
15 FORMAT RE-SELECTING.  EXPECTED NO INTERRUPT. 
/  ERROR CODE = 112 
20 FORMAT CLEARED END-OF-OPERATION INTERRUPT
21 FORMAT WHILE BUSY.  EXPECTED NO INTERRUPT. 
/  ERROR CODE = 113 
24 FORMAT SELECTED ABNORMAL-END-OF-OPERATION INTERRUPT. 
25 FORMAT EXPECTED NO INTERRUPT AFTER SPACE OPERATION.
/  ERROR CODE = 114 
30 FORMAT SELECTED ABNORMAL-END-OF-OPERATION INTERRUPT; 
31 FORMAT PRINTED A LINE WITH BAD CODE.  EXPECTED 
32 FORMAT ABNORMAL-END-OF-OPERATION INTERRUPT.
/  ERROR CODE = 115 
34 FORMAT CLEARED ABNORMAL-END-OF-OPERATION INTERRUPT.
35 FORMAT EXPECTED NO INTERRUPT.
/  ERROR CODE = 116 
40 FORMAT CLEARED END-OF-OPERATION INTERRUPT.  EXPECTED 
41 FORMAT NO INTERRUPT WITH PRINT ERROR.
/  ERROR CODE = 117 
44 FORMAT SELECTED ABNORMAL-END-OF-OPERATION INTERRUPT; 
45 FORMAT PRINTED A LINE WITH ALL GOOD CODES.  EXPECTED 
46 FORMAT NO ABNORMAL STATUS. 
/ 
/ 
50 IF(EC.NE.110)GOTO 51 
   B2=10                     *FIRST MSG 
   B3=11                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=401                    *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
51 IF(EC.NE.111)GOTO 52 
   B2=14                     *FIRST MSG 
   B3=15                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=1                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
52 IF(EC.NE.112)GOTO 53 
   B2=20                     *FIRST MSG 
   B3=21                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=1                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
53 IF(EC.NE.113)GOTO 54 
   B2=24                     *FIRST MSG 
   B3=25                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=1                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
54 IF(EC.NE.114)GOTO 55 
   B2=30                     *FIRST MSG 
   B3=32                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=3405                   *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
55 IF(EC.NE.115)GOTO 56 
   B2=34                     *FIRST MSG 
   B3=35                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=2405                   *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
56 IF(EC.NE.116)GOTO 57 
   B2=40                     *FIRST MSG 
   B3=41                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=2005                   *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
57 B2=44                     *FIRST MSG 
   B3=46                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=401                    *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
/MESSAGE DISPLAY SUBROUTINE 
60 MSG B2 TO LINE B5
   B5=B5+1
   GOTO 60 WHILE (B2+1.LE.B3) 
   B5=B5+1
   RETURN 
/ 
62 MSG 1 (EC) TO LINE B5     *BAD ERROR CODE
   B5=B5+1
   B1=3717                   *MASK
   B0=1                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
77 EXIT TO 96X
   END 50 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP96C 3000(23,24,25,26,27,30),LOCK 
*** ERROR PROCESSOR 
**
* 
* 
*   OVERVIEW - MODULE *FTP96C* IS A UTILITY MODULE CALLED BY
*              MODULE *FTP96A* FOR PROCESSING ERRORS. 
* 
* 
*   DESCRIPTION - ERROR PROCESSOR 
* 
*         1.  POST ERROR MESSAGE TEXT 
*         2.  EXIT TO FPT96X
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         REGISTERS ARE NOT DISTURBED 
* 
*   MODULES CALLED
* 
*         FTP96X - ERROR PROCESSOR
* 
* 
**********************************************************************
/  ERROR CODE PROCESSOR PART 3
1  FORMAT ILLEGAL ERROR CODE *OCT 
/  ERROR CODE = 120 
10 FORMAT CLEARED ABNORMAL-END-OF-OPERATION INTERRUPT AND 
11 FORMAT END-OF-OPERATION INTERRUPT. EXPECTED NO INTERRUPT 
/  ERROR CODE = 121 
14 FORMAT SELECTED SPACE TO LAST LINE OF FORM.  EXPECTED
15 FORMAT LAST-LINE STATUS. 
/  ERROR CODE = 122 
20 FORMAT FILLED TRAIN IMAGE.  EXPECTED READY AND NOT BUSY. 
/  ERROR CODE = 123 
24 FORMAT SELECTED RNBINT AFTER INITIATING A PRINT. 
25 FORMAT EXPECT READY,BUSY AND NO INTERRUPT. 
/  ERROR CODE = 124 
30 FORMAT EXPECTED READY AND BUSY AFTER PRINT.
/  ERROR CODE = 125 
34 FORMAT EXPECTED COINCIDENT STATUS
/  ERROR CODE = 126 
40 FORMAT EXPECTED NO COINCIDENT STATUS 
/  ERROR CODE = 127 
44 FORMAT EXECUTED PRINT WITH END-OF-OPERATION
45 FORMAT AND READY-NOT-BUSY INTERRUPTS SELECTED. 
/ 
/ 
50 IF(EC.NE.120)GOTO 51 
   B2=10                     *FIRST MSG 
   B3=11                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=1                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
51 IF(EC.NE.121)GOTO 52 
   B2=14                     *FIRST MSG 
   B3=15                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3737                   *MASK
   B0=21                     *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
52 IF(EC.NE.122)GOTO 53 
   B2=20                     *FIRST MSG 
   B3=20                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=1                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
53 IF(EC.NE.123)GOTO 54 
   B2=24                     *FIRST MSG 
   B3=25                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=103                    *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
54 IF(EC.NE.124)GOTO 55 
   B2=30                     *FIRST MSG 
   B3=30                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=103                    *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
55 IF(EC.NE.125)GOTO 56 
   B2=34                     *FIRST MSG 
   B3=34                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=4000                   *MASK
   B0=4000                   *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
56 IF(EC.NE.126)GOTO 57 
   B2=40                     *FIRST MSG 
   B3=40                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=4000                   *MASK
   B0=0                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
57 B2=44                     *FIRST MSG 
   B3=45                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=601                    *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
/MESSAGE DISPLAY SUBROUTINE 
60 MSG B2 TO LINE B5
   B5=B5+1
   GOTO 60 WHILE (B2+1.LE.B3) 
   B5=B5+1
   RETURN 
/ 
62 MSG 1 (EC) TO LINE B5     *BAD ERROR CODE
   B5=B5+1
   B1=3717                   *MASK
   B0=1                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
77 EXIT TO 96X
   END 50 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP96D 3000(23,24,25,26,27,30),LOCK 
*** ERROR PROCESSOR 
**
* 
* 
*   OVERVIEW - MODULE *FTP96D* IS A UTILITY MODULE CALLED BY
*              MODULE *FTP96A* FOR PROCESSING ERRORS. 
* 
* 
*   DESCRIPTION - ERROR PROCESSOR 
* 
*         1.  POST ERROR MESSAGE TEXT 
*         2.  EXIT TO FPT96X
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         REGISTERS ARE NOT DISTURBED 
* 
*   MODULES CALLED
* 
*         FTP96X - ERROR PROCESSOR
* 
* 
**********************************************************************
/  ERROR CODE PROCESSOR PART 4
1  FORMAT ILLEGAL ERROR CODE *OCT 
/  ERROR CODE = 200 
10 FORMAT NO LEVEL 9 STATUS OBSERVED. 
/  ERROR CODE = 201 
14 FORMAT FILLED PFC MEMORY FOR 6 LPI.
15 FORMAT EXPECTED READY AND NOT BUSY.
/  ERROR CODE = 202 
20 FORMAT FILLED PFC MEMORY FOR 8 LPI.
21 FORMAT EXPECTED READY AND NOT BUSY.
/  ERROR CODE = 203 
24 FORMAT NEED COINCIDENT STATUS TO LOAD PFC. 
/  ERROR CODE = 204 
/  ERROR CODE = 205 
/  ERROR CODE = 206 
/  ERROR CODE = 207 
/ 
/ 
50 IF(EC.NE.200)GOTO 51 
   B2=10                     *FIRST MSG 
   B3=10                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=40                     *MASK
   B0=40                     *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
51 IF(EC.NE.201)GOTO 52 
   B2=14                     *FIRST MSG 
   B3=15                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=1                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
52 IF(EC.NE.202)GOTO 53 
   B2=20                     *FIRST MSG 
   B3=21                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=1                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
53 IF(EC.NE.203)GOTO 62 
   B2=24                     *FIRST MSG 
   B3=24                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=4000                   *MASK
   B0=4000                   *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
/MESSAGE DISPLAY SUBROUTINE 
60 MSG B2 TO LINE B5
   B5=B5+1
   GOTO 60 WHILE (B2+1.LE.B3) 
   B5=B5+1
   RETURN 
/ 
62 MSG 1 (EC) TO LINE B5     *BAD ERROR CODE
   B5=B5+1
   B1=3717                   *MASK
   B0=1                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
77 EXIT TO 96X
   END 50 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP96E 3000(23,24,25,26,27,30),LOCK 
*** ERROR PROCESSOR 
**
* 
* 
*   OVERVIEW - MODULE *FTP96E* IS A UTILITY MODULE CALLED BY
*              MODULE *FTP96A* FOR PROCESSING ERRORS. 
* 
* 
*   DESCRIPTION - ERROR PROCESSOR 
* 
*         1.  POST ERROR MESSAGE TEXT 
*         2.  EXIT TO FPT96W
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         REGISTERS ARE NOT DISTURBED 
* 
*   MODULES CALLED
* 
*         FTP96W - ERROR PROCESSOR
* 
* 
**********************************************************************
/  ERROR CODE PROCESSOR PART 5
1  FORMAT ILLEGAL ERROR CODE *OCT 
/  ERROR CODE = 300 
10 FORMAT 6681 STATUS ERROR.
/  ERROR CODE = 301 
/  ERROR CODE = 302 
/  ERROR CODE = 303 
/  ERROR CODE = 304 
/  ERROR CODE = 305 
/  ERROR CODE = 306 
/  ERROR CODE = 307 
/ 
/ 
50 IF(EC.NE.300)GOTO 62 
   B2=10                     *FIRST MSG 
   B3=10                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=7777                   *MASK
   B0=1                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
/MESSAGE DISPLAY SUBROUTINE 
60 MSG B2 TO LINE B5
   B5=B5+1
   GOTO 60 WHILE (B2+1.LE.B3) 
   B5=B5+1
   RETURN 
/ 
62 MSG 1 (EC) TO LINE B5     *BAD ERROR CODE
   B5=B5+1
   B1=3717                   *MASK
   B0=1                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
77 EXIT TO 96W
   END 50 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP96F 3000(23,24,25,26,27,30),LOCK 
*** ERROR PROCESSOR 
**
* 
* 
*   OVERVIEW - MODULE *FTP96F* IS A UTILITY MODULE CALLED BY
*              MODULE *FTP96A* FOR PROCESSING ERRORS. 
* 
* 
*   DESCRIPTION - ERROR PROCESSOR 
* 
*         1.  POST ERROR MESSAGE TEXT 
*         2.  EXIT TO FPT96Z
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         REGISTERS ARE NOT DISTURBED 
* 
*   MODULES CALLED
* 
*         FTP96Z - ERROR PROCESSOR
* 
* 
**********************************************************************
/  ERROR CODE PROCESSOR PART 6
1  FORMAT ILLEGAL ERROR CODE *OCT 
/  ERROR CODE = 400 
10 FORMAT NO ABORT FROM ILLEGAL FUNCTION. 
/  ERROR CODE = 401 
/  ERROR CODE = 402 
/  ERROR CODE = 403 
/  ERROR CODE = 404 
/  ERROR CODE = 405 
/  ERROR CODE = 406 
/  ERROR CODE = 407 
/ 
/ 
50 IF(EC.NE.400)GOTO 62 
   B2=10                     *FIRST MSG 
   B3=10                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=1                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
/MESSAGE DISPLAY SUBROUTINE 
60 MSG B2 TO LINE B5
   B5=B5+1
   GOTO 60 WHILE (B2+1.LE.B3) 
   B5=B5+1
   RETURN 
/ 
62 MSG 1 (EC) TO LINE B5     *BAD ERROR CODE
   B5=B5+1
   B1=3717                   *MASK
   B0=1                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
77 EXIT TO 96Z
   END 50 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP96G 3000(23,24,25,26,27,30),LOCK 
*** ERROR PROCESSOR 
**
* 
* 
*   OVERVIEW - MODULE *FTP96G* IS A UTILITY MODULE CALLED BY
*              MODULE *FTP96A* FOR PROCESSING ERRORS. 
* 
* 
*   DESCRIPTION - ERROR PROCESSOR 
* 
*         1.  POST ERROR MESSAGE TEXT 
*         2.  EXIT TO FPT96Y
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         REGISTERS ARE NOT DISTURBED 
* 
*   MODULES CALLED
* 
*         FTP96Y - ERROR PROCESSOR
* 
* 
**********************************************************************
/  ERROR CODE PROCESSOR PART 7
1  FORMAT ILLEGAL ERROR CODE *OCT 
/  ERROR CODE = 500 
/  ERROR CODE = 501 
14 FORMAT ADVANCED TO TOP OF FORM. EXPECTED NO PFC ERROR
/  ERROR CODE = 502 
20 FORMAT LOADED PFC MEMORY.  EXPECTED NO PFC ERROR 
/  ERROR CODE = 503 
24 FORMAT AFTER SHORT LOAD OF PFC MEMORY, EXPECTED
25 FORMAT MEMORY BUSY 
/  ERROR CODE = 504 
30 FORMAT SELECTED ILLEGAL FORMAT LEVEL.  EXPECTED
31 FORMAT PFC ERROR 
/  ERROR CODE = 505 
34 FORMAT SELECTED LEGAL FORMAT LEVEL. EXPECTED NO
35 FORMAT PFC ERROR 
/  ERROR CODE = 506 
/  ERROR CODE = 507 
/ 
/ 
50 IF(EC.NE.500)GOTO 51 
   GOTO 62
51 IF(EC.NE.501)GOTO 52 
   B2=14                     *FIRST MSG 
   B3=14                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3400                   *MASK
   B0=0                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
52 IF(EC.NE.502)GOTO 53 
   B2=20                     *FIRST MSG 
   B3=20                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3400                   *MASK
   B0=0                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
53 IF(EC.NE.503)GOTO 54 
   B2=24                     *FIRST MSG 
   B3=25                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=400                    *MASK
   B0=400                    *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
54 IF(EC.NE.504)GOTO 55 
   B2=30                     *FIRST MSG 
   B3=31                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3400                   *MASK
   B0=1000                   *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
55 IF(EC.NE.505)GOTO 62 
   B2=34                     *FIRST MSG 
   B3=35                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3400                   *MASK
   B0=0                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
/MESSAGE DISPLAY SUBROUTINE 
60 MSG B2 TO LINE B5
   B5=B5+1
   GOTO 60 WHILE (B2+1.LE.B3) 
   B5=B5+1
   RETURN 
/ 
62 MSG 1 (EC) TO LINE B5     *BAD ERROR CODE
   B5=B5+1
   B1=3717                   *MASK
   B0=1                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
77 EXIT TO 96Y
   END 50 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP96W 3000(23,24,25,26,27,30),LOCK 
*** ERROR PROCESSOR 
**
* 
* 
*   OVERVIEW - MODULE *FTP96W* IS A UTILITY MODULE CALLED 
*              TO PRESENT 6681 STATUS ERRORS. 
* 
* 
*   DESCRIPTION - ERROR PROCESSOR 
* 
*         1.  POST STATUS MESSAGES
*         2.  EXIT TO FPT96Z
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         REGISTERS ARE NOT DISTURBED 
* 
*   MODULES CALLED
* 
*         FTP96Z - ERROR PROCESSOR
* 
* 
**********************************************************************
/  6681 STATUS ERROR PROC(B0=EXP,SB(1)=ACT,B1=MASK) 
1  FORMAT UNEXPECTED STATUS BIT *DEC
2  FORMAT MISSING STATUS BIT *DEC 
3  FORMAT ACTUAL 6681 STATUS = *OCT, EXPECTED = *OCT
10 FORMAT -----------1 REJECT 
11 FORMAT ----------1- INTERNAL REJECT
12 FORMAT ---------1-- TRANSMISSION PARITY ERROR
13 FORMAT --------1--- UNUSED 
14 FORMAT -------1---- UNUSED 
15 FORMAT ------1----- UNUSED 
16 FORMAT -----1------ UNUSED 
17 FORMAT ----1------- UNUSED 
20 FORMAT ---1-------- UNUSED 
21 FORMAT --1--------- UNUSED 
22 FORMAT -1---------- UNUSED 
23 FORMAT 1----------- PARITY ERROR ON DATA CHANNEL 
/ 
30 B2=B1 XOR 7777 
   B2=B2 AND SB(0)
   B0=B0 OR B2            *SET DONT CARES IN EXPECT 
   MSG 3 (SB(0),B0) TO LINE B5
   B5=B5+1
   B2=0 
   B3=1 
36 IF(B0.AND.B3.NE.0)GOTO 40  *EXPECTED IS SET
   IF(SB(0).AND.B3.EQ.0)GOTO 44  *NO ERROR
   MSG 1 (B2) TO LINE B5  *UNEXPECTED STATUS BIT
   GOTO 42
40 IF(SB(0).AND.B3.NE.0)GOTO 44 
   MSG 2 (B2) TO LINE B5  *MISSING STATUS BIT 
42 B5=B5+1
   B4=B2+10 
   MSG B4 TO LINE B5   *TELL WHICH ONE
   B5=B5+1
44 B3=B3 LS 1 
   GOTO 36 WHILE (B2+1.LT.12D)
   B5=B5+1
77 EXIT TO 96Z
   END 30 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP96X 3000(23,24,25,26,27,30),LOCK 
*** ERROR PROCESSOR 
**
* 
* 
*   OVERVIEW - MODULE *FTP96X* IS A UTILITY MODULE CALLED 
*              TO PRESENT 580 STATUS ERRORS.
* 
* 
*   DESCRIPTION - ERROR PROCESSOR 
* 
*         1.  POST STATUS MESSAGES
*         2.  EXIT TO FPT96Z
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         REGISTERS ARE NOT DISTURBED 
* 
*   MODULES CALLED
* 
*         FTP96Z - ERROR PROCESSOR
* 
* 
**********************************************************************
/  STATUS ERROR PROC(B0=EXP,SB(1)=ACT,B1=MASK)
1  FORMAT UNEXPECTED STATUS BIT *DEC
2  FORMAT MISSING STATUS BIT *DEC 
3  FORMAT ACTUAL STATUS = *OCT, EXPECTED = *OCT 
10 FORMAT -----------1 READY
11 FORMAT ----------1- BUSY 
12 FORMAT ---------1-- COMPARE FAULT
13 FORMAT --------1--- PAPER FAULT
14 FORMAT -------1---- LAST LINE OF FORM
15 FORMAT ------1----- FORMAT TAPE LEVEL 9
16 FORMAT -----1------ MEMORY BUSY
17 FORMAT ----1------- READY-NOT-BUSY INTERRUPT 
20 FORMAT ---1-------- END-OF-OPERATION INTERRUPT 
21 FORMAT --1--------- ABNORMAL END-OF-OP INTERRUPT 
22 FORMAT -1---------- PRINT ERROR
23 FORMAT 1----------- 6/8 LINE COINCIDENT
/ 
30 B2=B1 XOR 7777 
   B2=B2 AND SB(1)
   B0=B0 OR B2            *SET DONT CARES IN EXPECT 
   MSG 3 (SB(1),B0) TO LINE B5
   B5=B5+1
   B2=0 
   B3=1 
36 IF(B0.AND.B3.NE.0)GOTO 40  *EXPECTED IS SET
   IF(SB(1).AND.B3.EQ.0)GOTO 44  *NO ERROR
   MSG 1 (B2) TO LINE B5  *UNEXPECTED STATUS BIT
   GOTO 42
40 IF(SB(1).AND.B3.NE.0)GOTO 44 
   MSG 2 (B2) TO LINE B5  *MISSING STATUS BIT 
42 B5=B5+1
   B4=B2+10 
   MSG B4 TO LINE B5   *TELL WHICH ONE
   B5=B5+1
44 B3=B3 LS 1 
   GOTO 36 WHILE (B2+1.LT.12D)
   B5=B5+1
77 EXIT TO 96Z
   END 30 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP96Y 3000(23,24,25,26,27,30),LOCK 
*** ERROR PROCESSOR 
**
* 
* 
*   OVERVIEW - MODULE *FTP96Y* IS A UTILITY MODULE CALLED 
*              TO PRESENT 580 MAINTENANCE STATUS ERRORS.
* 
* 
*   DESCRIPTION - ERROR PROCESSOR 
* 
*         1.  POST STATUS MESSAGES
*         2.  EXIT TO FPT96Z
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         REGISTERS ARE NOT DISTURBED 
* 
*   MODULES CALLED
* 
*         FTP96Z - ERROR PROCESSOR
* 
* 
**********************************************************************
/  MAINT. STATUS ERROR PROC(B0=EXP,SB(1)=ACT,B1=MASK)MOD96Y*
1  FORMAT UNEXPECTED STATUS BIT *DEC
2  FORMAT MISSING STATUS BIT *DEC 
3  FORMAT MAINTENANCE STATUS = *OCT, EXPECTED = *OCT
10 FORMAT -----------1 INTERNAL TRAIN HOME SIGNAL 
11 FORMAT ----------1- INTERNAL TRAIN SUBSCAN SIGNAL
12 FORMAT ---------1-- 6 LPI EMMITER PULSE
13 FORMAT --------1--- 8 LPI EMMITER PULSE
14 FORMAT -------1---- INTERNAL TIMING EMITTER SIGNAL 
15 FORMAT ------1----- PAPER MOTION IN LOW SPEED SLEW 
16 FORMAT -----1------ START PAPER MOTION 
17 FORMAT ----1------- STOP PAPER MOTION
20 FORMAT ---1-------- PRINTER BUSY 
21 FORMAT --1--------- PFC ERROR BIT 0
22 FORMAT -1---------- PFC ERROR BIT 1
23 FORMAT 1----------- UNUSED 
/ 
30 B2=B1 XOR 7777 
   B2=B2 AND SB(2)
   B0=B0 OR B2            *SET DONT CARES IN EXPECT 
   MSG 3 (SB(2),B0) TO LINE B5
   B5=B5+1
   B2=0 
   B3=1 
36 IF(B0.AND.B3.NE.0)GOTO 40  *EXPECTED IS SET
   IF(SB(2).AND.B3.EQ.0)GOTO 44  *NO ERROR
   MSG 1 (B2) TO LINE B5  *UNEXPECTED STATUS BIT
   GOTO 42
40 IF(SB(2).AND.B3.NE.0)GOTO 44 
   MSG 2 (B2) TO LINE B5  *MISSING STATUS BIT 
42 B5=B5+1
   B4=B2+10 
   MSG B4 TO LINE B5   *TELL WHICH ONE
   B5=B5+1
44 B3=B3 LS 1 
   GOTO 36 WHILE (B2+1.LT.12D)
   B5=B5+1
77 EXIT TO 96Z
   END 30 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP96Z 3000(23,24,25,26,27,30),LOCK 
*** ERROR PROCESSOR 
**
* 
* 
*   OVERVIEW - MODULE *FTP96Z* IS A UTILITY MODULE CALLED 
*              TO PRESENT GENERAL ERROR INFORMATION 
* 
* 
*   DESCRIPTION - ERROR PROCESSOR 
* 
*         1.  POST ERROR INFORMATION
*         2.  RETURN
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         REGISTERS ARE NOT DISTURBED 
* 
*   MODULES CALLED
* 
*         NONE
* 
* 
**********************************************************************
/ 
/         PROCESS ERRORS FOR LOW LEVEL MODULES
/ 
1  FORMAT CH=*OCT, EQ=*OCT, UN=*OCT, LF=*OCT, DC=*OCT 
3  FORMAT ERRCNT=*OCT, WDCNT=*OCT, WDS XMITTED=*OCT 
5  FORMAT 668X STATUS=*OCT, PRINTER STATUS=*OCT *OCT
17 FORMAT . . . . . . . . . . . . . . . . . . . . . . 
/ 
20 MSG 1 (SB(70),SB(71),SB(72),LF,DC) TO LINE B5
   B5=B5+1
   MSG 3 (B7,WC,WT) TO LINE B5
   B5=B5+1
   MSG 5 (SB(0),SB(1),SB(2)) TO LINE B5 
   B5=B5+1
   MSG 17 TO LINE B5
   PICTURE
   HALT 
   BLANK
   IF(EM.GE.100)GOTO 50      *IF NOT ABORT ERROR
   B0=IB(100)                *RESTORE REGISTERS 
   B1=IB(101)                *RESTORE REGISTERS 
   B2=IB(102)                *RESTORE REGISTERS 
   B3=IB(103)                *RESTORE REGISTERS 
   B4=IB(104)                *RESTORE REGISTERS 
   B6=IB(106)                *RESTORE REGISTERS 
   B7=IB(107)                *RESTORE REGISTERS 
50 EXIT 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP97A 580(23,24,25,26,27,30),LOCK
*** ERROR PROCESSOR 
**
* 
* 
*   OVERVIEW - MODULE *FTP97A* IS A UTILITY MODULE CALLED BY
*              PRIMARY HIGH-LEVEL MODULES FOR PROCESSING ERRORS.
* 
* 
*   DESCRIPTION - ERROR PROCESSOR 
* 
*         1.  IF ERROR CODE 110-117 EXIT TO FTP97B. 
*         2.  IF ERROR CODE 120-127 EXIT TO FTP97C. 
*         3.  IF ERROR CODE 200-207 EXIT TO FTP97D. 
*         4.  IF ERROR CODE 300-307 EXIT TO FTP97E. 
*         5.  IF ERROR CODE 400-407 EXIT TO FTP97F. 
*         6.  IF ERROR CODE 500-507 EXIT TO FTP97G. 
*         7.  POST ERROR MESSAGE TEXT 
*         8.  EXIT TO FPT97X
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         REGISTERS ARE NOT DISTURBED 
* 
*   MODULES CALLED
* 
*         FTP97B - ERROR PROCESSOR
*         FTP97C - ERROR PROCESSOR
*         FTP97D - ERROR PROCESSOR
*         FTP97E - ERROR PROCESSOR
*         FTP97F - ERROR PROCESSOR
*         FTP97G - ERROR PROCESSOR
*         FTP97X - ERROR PROCESSOR
* 
* 
**********************************************************************
/  ERROR CODE PROCESSOR PART 1
1  FORMAT ILLEGAL ERROR CODE *OCT 
/  ERROR CODE = 100 
10 FORMAT STATUS IS NOT (READY AND NOT BUSY)
/  ERROR CODE = 101 
14 FORMAT SELECTED READY-AND-NOT-BUSY INTERRUPT 
15 FORMAT IN STATIC STATE 
/  ERROR CODE = 102 
20 FORMAT CLEARED READY-AND-NOT-BUSY INTERRUPT
21 FORMAT IN STATIC STATE 
/  ERROR CODE = 103 
24 FORMAT CLEARED READY-AND-NOT-BUSY INTERRUPT
25 FORMAT BY RECONNECTING 
/  ERROR CODE = 104 
30 FORMAT SELECTED READY-AND-NOT-BUSY INTERRUPT 
31 FORMAT DURING A PRINT OPERATION. EXPECTED INT. 
/  ERROR CODE = 105 
34 FORMAT CLEARED READY-AND-NOT-BUSY INTERRUPT
35 FORMAT DURING A PRINT OPERATION. EXPECTED NO INT.
/  ERROR CODE = 106 
40 FORMAT SELECTED E-O-P INTERRUPT. NO INTERRUPT
41 FORMAT AFTER SPACE FUNCTION. 
/  ERROR CODE = 107 
44 FORMAT CLEARED E-O-P INTERRUPT. EXPECTED NO
45 FORMAT INTERRUPT STATUS. 
50 IB(100)=B0                *SAVE REGISTERS
   IB(101)=B1                *SAVE REGISTERS
   IB(102)=B2                *SAVE REGISTERS
   IB(103)=B3                *SAVE REGISTERS
   IB(104)=B4                *SAVE REGISTERS
   IB(105)=B5                *SAVE REGISTERS
   IB(106)=B6                *SAVE REGISTERS
   IB(107)=B7                *SAVE REGISTERS
   IF(EC.LT.100)GOTO 62 
   IF(EC.GT.107)GOTO 61 
   IF(EC.NE.100)GOTO 51 
   B2=10                     *FIRST MSG 
   B3=10                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=1                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
51 IF(EC.NE.101)GOTO 52 
   B2=14                     *FIRST MSG 
   B3=15                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=201                    *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
52 IF(EC.NE.102)GOTO 53 
   B2=20                     *FIRST MSG 
   B3=21                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=1                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
53 IF(EC.NE.103)GOTO 54 
   B2=24                     *FIRST MSG 
   B3=25                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=1                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
54 IF(EC.NE.104)GOTO 55 
   B2=30                     *FIRST MSG 
   B3=31                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=201                    *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
55 IF(EC.NE.105)GOTO 56 
   B2=34                     *FIRST MSG 
   B3=35                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=103                    *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
56 IF(EC.NE.106)GOTO 57 
   B2=40                     *FIRST MSG 
   B3=41                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=401                    *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
57 B2=44                     *FIRST MSG 
   B3=45                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=1                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
60 MSG B2 TO LINE B5
   B5=B5+1
   GOTO 60 WHILE (B2+1.LE.B3) 
   B5=B5+1
   RETURN 
61 IF(EC.LT.120)GOTO 66 
   IF(EC.LT.130)GOTO 67 
   IF(EC.LT.200)GOTO 62 
   IF(EC.LT.210)GOTO 70 
   IF(EC.LT.300)GOTO 62 
   IF(EC.LT.310)GOTO 71 
   IF(EC.LT.400)GOTO 62 
   IF(EC.LT.410)GOTO 72 
   IF(EC.LT.500)GOTO 62 
   IF(EC.LT.510)GOTO 73 
62 MSG 1 (EC) TO LINE B5     *BAD ERROR CODE
   B5=B5+1
   B1=3717                   *MASK
   B0=1                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
66 EXIT TO 97B
67 EXIT TO 97C
70 EXIT TO 97D
71 EXIT TO 97E
72 EXIT TO 97F
73 EXIT TO 97G
77 EXIT TO 97X
   END 50 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP97B 580(23,24,25,26,27,30),LOCK
*** ERROR PROCESSOR 
**
* 
* 
*   OVERVIEW - MODULE *FTP97B* IS A UTILITY MODULE CALLED BY
*              MODULE *FTP97A* FOR PROCESSING ERRORS. 
* 
* 
*   DESCRIPTION - ERROR PROCESSOR 
* 
*         1.  POST ERROR MESSAGE TEXT 
*         2.  EXIT TO FPT97X
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         REGISTERS ARE NOT DISTURBED 
* 
*   MODULES CALLED
* 
*         FTP97X - ERROR PROCESSOR
* 
* 
**********************************************************************
/  ERROR CODE PROCESSOR PART 2
1  FORMAT ILLEGAL ERROR CODE *OCT 
/  ERROR CODE = 110 
10 FORMAT SELECTED END-OF-OPERATION INTERRUPT.
11 FORMAT EXPECTED INTERRUPT AFTER PRINT. 
/  ERROR CODE = 111 
14 FORMAT CLEARED END-OF-OPERATION INTERRUPT BY 
15 FORMAT RE-SELECTING.  EXPECTED NO INTERRUPT. 
/  ERROR CODE = 112 
20 FORMAT CLEARED END-OF-OPERATION INTERRUPT
21 FORMAT WHILE BUSY.  EXPECTED NO INTERRUPT. 
/  ERROR CODE = 113 
24 FORMAT SELECTED ABNORMAL-END-OF-OPERATION INTERRUPT. 
25 FORMAT EXPECTED NO INTERRUPT AFTER SPACE OPERATION.
/  ERROR CODE = 114 
30 FORMAT SELECTED ABNORMAL-END-OF-OPERATION INTERRUPT; 
31 FORMAT PRINTED A LINE WITH BAD CODE.  EXPECTED 
32 FORMAT ABNORMAL-END-OF-OPERATION INTERRUPT.
/  ERROR CODE = 115 
34 FORMAT CLEARED ABNORMAL-END-OF-OPERATION INTERRUPT.
35 FORMAT EXPECTED NO INTERRUPT.
/  ERROR CODE = 116 
40 FORMAT CLEARED END-OF-OPERATION INTERRUPT.  EXPECTED 
41 FORMAT NO INTERRUPT WITH PRINT ERROR.
/  ERROR CODE = 117 
44 FORMAT SELECTED ABNORMAL-END-OF-OPERATION INTERRUPT; 
45 FORMAT PRINTED A LINE WITH ALL GOOD CODES.  EXPECTED 
46 FORMAT NO ABNORMAL STATUS. 
/ 
/ 
50 IF(EC.NE.110)GOTO 51 
   B2=10                     *FIRST MSG 
   B3=11                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=401                    *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
51 IF(EC.NE.111)GOTO 52 
   B2=14                     *FIRST MSG 
   B3=15                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=1                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
52 IF(EC.NE.112)GOTO 53 
   B2=20                     *FIRST MSG 
   B3=21                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=1                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
53 IF(EC.NE.113)GOTO 54 
   B2=24                     *FIRST MSG 
   B3=25                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=1                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
54 IF(EC.NE.114)GOTO 55 
   B2=30                     *FIRST MSG 
   B3=32                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=3405                   *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
55 IF(EC.NE.115)GOTO 56 
   B2=34                     *FIRST MSG 
   B3=35                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=2405                   *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
56 IF(EC.NE.116)GOTO 57 
   B2=40                     *FIRST MSG 
   B3=41                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=2005                   *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
57 B2=44                     *FIRST MSG 
   B3=46                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=401                    *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
/MESSAGE DISPLAY SUBROUTINE 
60 MSG B2 TO LINE B5
   B5=B5+1
   GOTO 60 WHILE (B2+1.LE.B3) 
   B5=B5+1
   RETURN 
/ 
62 MSG 1 (EC) TO LINE B5     *BAD ERROR CODE
   B5=B5+1
   B1=3717                   *MASK
   B0=1                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
77 EXIT TO 97X
   END 50 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP97C 580(23,24,25,26,27,30),LOCK
*** ERROR PROCESSOR 
**
* 
* 
*   OVERVIEW - MODULE *FTP97C* IS A UTILITY MODULE CALLED BY
*              MODULE *FTP97A* FOR PROCESSING ERRORS. 
* 
* 
*   DESCRIPTION - ERROR PROCESSOR 
* 
*         1.  POST ERROR MESSAGE TEXT 
*         2.  EXIT TO FPT97X
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         REGISTERS ARE NOT DISTURBED 
* 
*   MODULES CALLED
* 
*         FTP97X - ERROR PROCESSOR
* 
* 
**********************************************************************
/  ERROR CODE PROCESSOR PART 3
1  FORMAT ILLEGAL ERROR CODE *OCT 
/  ERROR CODE = 120 
10 FORMAT CLEARED ABNORMAL-END-OF-OPERATION INTERRUPT AND 
11 FORMAT END-OF-OPERATION INTERRUPT. EXPECTED NO INTERRUPT 
/  ERROR CODE = 121 
14 FORMAT SELECTED SPACE TO LAST LINE OF FORM.  EXPECTED
15 FORMAT LAST-LINE STATUS. 
/  ERROR CODE = 122 
20 FORMAT FILLED TRAIN IMAGE.  EXPECTED READY AND NOT BUSY. 
/  ERROR CODE = 123 
24 FORMAT SELECTED RNBINT AFTER INITIATING A PRINT. 
25 FORMAT EXPECT READY,BUSY AND NO INTERRUPT. 
/  ERROR CODE = 124 
30 FORMAT EXPECTED READY AND BUSY AFTER PRINT.
/  ERROR CODE = 125 
34 FORMAT EXPECTED COINCIDENT STATUS
/  ERROR CODE = 126 
40 FORMAT EXPECTED NO COINCIDENT STATUS 
/  ERROR CODE = 127 
44 FORMAT EXECUTED PRINT WITH END-OF-OPERATION
45 FORMAT AND READY-NOT-BUSY INTERRUPTS SELECTED. 
/ 
/ 
50 IF(EC.NE.120)GOTO 51 
   B2=10                     *FIRST MSG 
   B3=11                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=1                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
51 IF(EC.NE.121)GOTO 52 
   B2=14                     *FIRST MSG 
   B3=15                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3737                   *MASK
   B0=21                     *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
52 IF(EC.NE.122)GOTO 53 
   B2=20                     *FIRST MSG 
   B3=20                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=1                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
53 IF(EC.NE.123)GOTO 54 
   B2=24                     *FIRST MSG 
   B3=25                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=103                    *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
54 IF(EC.NE.124)GOTO 55 
   B2=30                     *FIRST MSG 
   B3=30                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=103                    *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
55 IF(EC.NE.125)GOTO 56 
   B2=34                     *FIRST MSG 
   B3=34                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=7717                   *MASK
   B0=4601                   *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
56 IF(EC.NE.126)GOTO 57 
   B2=40                     *FIRST MSG 
   B3=40                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=7717                   *MASK
   B0=601                    *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
57 B2=44                     *FIRST MSG 
   B3=45                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=601                    *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
/MESSAGE DISPLAY SUBROUTINE 
60 MSG B2 TO LINE B5
   B5=B5+1
   GOTO 60 WHILE (B2+1.LE.B3) 
   B5=B5+1
   RETURN 
/ 
62 MSG 1 (EC) TO LINE B5     *BAD ERROR CODE
   B5=B5+1
   B1=3717                   *MASK
   B0=1                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
77 EXIT TO 97X
   END 50 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP97D 580(23,24,25,26,27,30),LOCK
*** ERROR PROCESSOR 
**
* 
* 
*   OVERVIEW - MODULE *FTP97D* IS A UTILITY MODULE CALLED BY
*              MODULE *FTP97A* FOR PROCESSING ERRORS. 
* 
* 
*   DESCRIPTION - ERROR PROCESSOR 
* 
*         1.  POST ERROR MESSAGE TEXT 
*         2.  EXIT TO FPT97X
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         REGISTERS ARE NOT DISTURBED 
* 
*   MODULES CALLED
* 
*         FTP97X - ERROR PROCESSOR
* 
* 
**********************************************************************
/  ERROR CODE PROCESSOR PART 4
1  FORMAT ILLEGAL ERROR CODE *OCT 
/  ERROR CODE = 200 
10 FORMAT NO LEVEL 9 STATUS OBSERVED. 
/  ERROR CODE = 201 
14 FORMAT FILLED PFC MEMORY FOR 6 LPI.
15 FORMAT EXPECTED READY AND NOT BUSY.
/  ERROR CODE = 202 
20 FORMAT FILLED PFC MEMORY FOR 8 LPI.
21 FORMAT EXPECTED READY AND NOT BUSY.
/  ERROR CODE = 203 
24 FORMAT NEED COINCIDENT STATUS TO LOAD PFC. 
/  ERROR CODE = 204 
/  ERROR CODE = 205 
/  ERROR CODE = 206 
/  ERROR CODE = 207 
/ 
/ 
50 IF(EC.NE.200)GOTO 51 
   B2=10                     *FIRST MSG 
   B3=10                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=40                     *MASK
   B0=40                     *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
51 IF(EC.NE.201)GOTO 52 
   B2=14                     *FIRST MSG 
   B3=15                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=1                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
52 IF(EC.NE.202)GOTO 53 
   B2=20                     *FIRST MSG 
   B3=21                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=1                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
53 IF(EC.NE.203)GOTO 62 
   B2=24                     *FIRST MSG 
   B3=24                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=4000                   *MASK
   B0=4000                   *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
/MESSAGE DISPLAY SUBROUTINE 
60 MSG B2 TO LINE B5
   B5=B5+1
   GOTO 60 WHILE (B2+1.LE.B3) 
   B5=B5+1
   RETURN 
/ 
62 MSG 1 (EC) TO LINE B5     *BAD ERROR CODE
   B5=B5+1
   B1=3717                   *MASK
   B0=1                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
77 EXIT TO 97X
   END 50 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP97E 580(23,24,25,26,27,30),LOCK
*** ERROR PROCESSOR 
**
* 
* 
*   OVERVIEW - MODULE *FTP97E* IS A UTILITY MODULE CALLED BY
*              MODULE *FTP97A* FOR PROCESSING ERRORS. 
* 
* 
*   DESCRIPTION - ERROR PROCESSOR 
* 
*         1.  POST ERROR MESSAGE TEXT 
*         2.  EXIT TO FPT97W
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         REGISTERS ARE NOT DISTURBED 
* 
*   MODULES CALLED
* 
*         FTP97W - ERROR PROCESSOR
* 
* 
**********************************************************************
/  ERROR CODE PROCESSOR PART 5
1  FORMAT ILLEGAL ERROR CODE *OCT 
/  ERROR CODE = 300 
10 FORMAT 6681 STATUS ERROR.
/  ERROR CODE = 301 
/  ERROR CODE = 302 
/  ERROR CODE = 303 
/  ERROR CODE = 304 
/  ERROR CODE = 305 
/  ERROR CODE = 306 
/  ERROR CODE = 307 
/ 
/ 
50 IF(EC.NE.300)GOTO 62 
   B2=10                     *FIRST MSG 
   B3=10                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=7777                   *MASK
   B0=1                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
/MESSAGE DISPLAY SUBROUTINE 
60 MSG B2 TO LINE B5
   B5=B5+1
   GOTO 60 WHILE (B2+1.LE.B3) 
   B5=B5+1
   RETURN 
/ 
62 MSG 1 (EC) TO LINE B5     *BAD ERROR CODE
   B5=B5+1
   B1=3717                   *MASK
   B0=1                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
77 EXIT TO 97W
   END 50 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP97F 580(23,24,25,26,27,30),LOCK
*** ERROR PROCESSOR 
**
* 
* 
*   OVERVIEW - MODULE *FTP97F* IS A UTILITY MODULE CALLED BY
*              MODULE *FTP97A* FOR PROCESSING ERRORS. 
* 
* 
*   DESCRIPTION - ERROR PROCESSOR 
* 
*         1.  POST ERROR MESSAGE TEXT 
*         2.  EXIT TO FPT97Z
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         REGISTERS ARE NOT DISTURBED 
* 
*   MODULES CALLED
* 
*         FTP97Z - ERROR PROCESSOR
* 
* 
**********************************************************************
/  ERROR CODE PROCESSOR PART 6
1  FORMAT ILLEGAL ERROR CODE *OCT 
/  ERROR CODE = 400 
10 FORMAT NO ABORT FROM ILLEGAL FUNCTION. 
/  ERROR CODE = 401 
/  ERROR CODE = 402 
/  ERROR CODE = 403 
/  ERROR CODE = 404 
/  ERROR CODE = 405 
/  ERROR CODE = 406 
/  ERROR CODE = 407 
/ 
/ 
50 IF(EC.NE.400)GOTO 62 
   B2=10                     *FIRST MSG 
   B3=10                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3717                   *MASK
   B0=1                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
/MESSAGE DISPLAY SUBROUTINE 
60 MSG B2 TO LINE B5
   B5=B5+1
   GOTO 60 WHILE (B2+1.LE.B3) 
   B5=B5+1
   RETURN 
/ 
62 MSG 1 (EC) TO LINE B5     *BAD ERROR CODE
   B5=B5+1
   B1=3717                   *MASK
   B0=1                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
77 EXIT TO 97Z
   END 50 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP97G 580(23,24,25,26,27,30),LOCK
*** ERROR PROCESSOR 
**
* 
* 
*   OVERVIEW - MODULE *FTP97G* IS A UTILITY MODULE CALLED BY
*              MODULE *FTP97A* FOR PROCESSING ERRORS. 
* 
* 
*   DESCRIPTION - ERROR PROCESSOR 
* 
*         1.  POST ERROR MESSAGE TEXT 
*         2.  EXIT TO FPT97Y
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         REGISTERS ARE NOT DISTURBED 
* 
*   MODULES CALLED
* 
*         FTP97Y - ERROR PROCESSOR
* 
* 
**********************************************************************
/  ERROR CODE PROCESSOR PART 7
1  FORMAT ILLEGAL ERROR CODE *OCT 
/  ERROR CODE = 500 
/  ERROR CODE = 501 
14 FORMAT ADVANCED TO TOP OF FORM. EXPECTED NO PFC ERROR
/  ERROR CODE = 502 
20 FORMAT LOADED PFC MEMORY.  EXPECTED NO PFC ERROR 
/  ERROR CODE = 503 
24 FORMAT AFTER SHORT LOAD OF PFC MEMORY, EXPECTED
25 FORMAT MEMORY BUSY 
/  ERROR CODE = 504 
30 FORMAT SELECTED ILLEGAL FORMAT LEVEL.  EXPECTED
31 FORMAT PFC ERROR 
/  ERROR CODE = 505 
34 FORMAT SELECTED LEGAL FORMAT LEVEL. EXPECTED NO
35 FORMAT PFC ERROR 
/  ERROR CODE = 506 
/  ERROR CODE = 507 
/ 
/ 
50 IF(EC.NE.500)GOTO 51 
   GOTO 62
51 IF(EC.NE.501)GOTO 52 
   B2=14                     *FIRST MSG 
   B3=14                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3400                   *MASK
   B0=0                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
52 IF(EC.NE.502)GOTO 53 
   B2=20                     *FIRST MSG 
   B3=20                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3400                   *MASK
   B0=0                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
53 IF(EC.NE.503)GOTO 54 
   B2=24                     *FIRST MSG 
   B3=25                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=400                    *MASK
   B0=400                    *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
54 IF(EC.NE.504)GOTO 55 
   B2=30                     *FIRST MSG 
   B3=31                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3400                   *MASK
   B0=1000                   *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
55 IF(EC.NE.505)GOTO 62 
   B2=34                     *FIRST MSG 
   B3=35                     *LAST MSG
   GOSUB 60                  *POST DISPLAY
   B1=3400                   *MASK
   B0=0                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
/MESSAGE DISPLAY SUBROUTINE 
60 MSG B2 TO LINE B5
   B5=B5+1
   GOTO 60 WHILE (B2+1.LE.B3) 
   B5=B5+1
   RETURN 
/ 
62 MSG 1 (EC) TO LINE B5     *BAD ERROR CODE
   B5=B5+1
   B1=3717                   *MASK
   B0=1                      *EXPECTED STATUS 
   GOTO 77                   *GO PUT UP STATUS DISPL
77 EXIT TO 97Y
   END 50 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP97W 580(23,24,25,26,27,30),LOCK
*** ERROR PROCESSOR 
**
* 
* 
*   OVERVIEW - MODULE *FTP97W* IS A UTILITY MODULE CALLED 
*              TO PRESENT 6681 STATUS ERRORS. 
* 
* 
*   DESCRIPTION - ERROR PROCESSOR 
* 
*         1.  POST STATUS MESSAGES
*         2.  EXIT TO FPT97Z
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         REGISTERS ARE NOT DISTURBED 
* 
*   MODULES CALLED
* 
*         FTP97Z - ERROR PROCESSOR
* 
* 
**********************************************************************
/  6681 STATUS ERROR PROC(B0=EXP,SB(1)=ACT,B1=MASK) 
1  FORMAT UNEXPECTED STATUS BIT *DEC
2  FORMAT MISSING STATUS BIT *DEC 
3  FORMAT ACTUAL 6681 STATUS = *OCT, EXPECTED = *OCT
10 FORMAT -----------1 REJECT 
11 FORMAT ----------1- INTERNAL REJECT
12 FORMAT ---------1-- TRANSMISSION PARITY ERROR
13 FORMAT --------1--- UNUSED 
14 FORMAT -------1---- UNUSED 
15 FORMAT ------1----- UNUSED 
16 FORMAT -----1------ UNUSED 
17 FORMAT ----1------- UNUSED 
20 FORMAT ---1-------- UNUSED 
21 FORMAT --1--------- UNUSED 
22 FORMAT -1---------- UNUSED 
23 FORMAT 1----------- PARITY ERROR ON DATA CHANNEL 
/ 
30 B2=B1 XOR 7777 
   B2=B2 AND SB(0)
   B0=B0 OR B2            *SET DONT CARES IN EXPECT 
   MSG 3 (SB(0),B0) TO LINE B5
   B5=B5+1
   B2=0 
   B3=1 
36 IF(B0.AND.B3.NE.0)GOTO 40  *EXPECTED IS SET
   IF(SB(0).AND.B3.EQ.0)GOTO 44  *NO ERROR
   MSG 1 (B2) TO LINE B5  *UNEXPECTED STATUS BIT
   GOTO 42
40 IF(SB(0).AND.B3.NE.0)GOTO 44 
   MSG 2 (B2) TO LINE B5  *MISSING STATUS BIT 
42 B5=B5+1
   B4=B2+10 
   MSG B4 TO LINE B5   *TELL WHICH ONE
   B5=B5+1
44 B3=B3 LS 1 
   GOTO 36 WHILE (B2+1.LT.12D)
   B5=B5+1
77 EXIT TO 97Z
   END 30 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP97X 580(23,24,25,26,27,30),LOCK
*** ERROR PROCESSOR 
**
* 
* 
*   OVERVIEW - MODULE *FTP97X* IS A UTILITY MODULE CALLED 
*              TO PRESENT 580 STATUS ERRORS.
* 
* 
*   DESCRIPTION - ERROR PROCESSOR 
* 
*         1.  POST STATUS MESSAGES
*         2.  EXIT TO FPT97Z
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         REGISTERS ARE NOT DISTURBED 
* 
*   MODULES CALLED
* 
*         FTP97Z - ERROR PROCESSOR
* 
* 
**********************************************************************
/  STATUS ERROR PROC(B0=EXP,SB(1)=ACT,B1=MASK)
1  FORMAT UNEXPECTED STATUS BIT *DEC
2  FORMAT MISSING STATUS BIT *DEC 
3  FORMAT ACTUAL STATUS = *OCT, EXPECTED = *OCT 
10 FORMAT -----------1 READY
11 FORMAT ----------1- BUSY 
12 FORMAT ---------1-- COMPARE FAULT
13 FORMAT --------1--- PAPER FAULT
14 FORMAT -------1---- LAST LINE OF FORM
15 FORMAT ------1----- FORMAT TAPE LEVEL 9
16 FORMAT -----1------ MEMORY BUSY
17 FORMAT ----1------- READY-NOT-BUSY INTERRUPT 
20 FORMAT ---1-------- END-OF-OPERATION INTERRUPT 
21 FORMAT --1--------- ABNORMAL END-OF-OP INTERRUPT 
22 FORMAT -1---------- PRINT ERROR
23 FORMAT 1----------- 6/8 LINE COINCIDENT
/ 
30 B2=B1 XOR 7777 
   B2=B2 AND SB(1)
   B0=B0 OR B2            *SET DONT CARES IN EXPECT 
   MSG 3 (SB(1),B0) TO LINE B5
   B5=B5+1
   B2=0 
   B3=1 
36 IF(B0.AND.B3.NE.0)GOTO 40  *EXPECTED IS SET
   IF(SB(1).AND.B3.EQ.0)GOTO 44  *NO ERROR
   MSG 1 (B2) TO LINE B5  *UNEXPECTED STATUS BIT
   GOTO 42
40 IF(SB(1).AND.B3.NE.0)GOTO 44 
   MSG 2 (B2) TO LINE B5  *MISSING STATUS BIT 
42 B5=B5+1
   B4=B2+10 
   MSG B4 TO LINE B5   *TELL WHICH ONE
   B5=B5+1
44 B3=B3 LS 1 
   GOTO 36 WHILE (B2+1.LT.12D)
   B5=B5+1
77 EXIT TO 97Z
   END 30 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP97Y 580(23,24,25,26,27,30),LOCK
*** ERROR PROCESSOR 
**
* 
* 
*   OVERVIEW - MODULE *FTP97Y* IS A UTILITY MODULE CALLED 
*              TO PRESENT 580 MAINTENANCE STATUS ERRORS.
* 
* 
*   DESCRIPTION - ERROR PROCESSOR 
* 
*         1.  POST STATUS MESSAGES
*         2.  EXIT TO FPT97Z
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         REGISTERS ARE NOT DISTURBED 
* 
*   MODULES CALLED
* 
*         FTP97Z - ERROR PROCESSOR
* 
* 
**********************************************************************
/  MAINT. STATUS ERROR PROC(B0=EXP,SB(1)=ACT,B1=MASK)MOD96Y*
1  FORMAT UNEXPECTED STATUS BIT *DEC
2  FORMAT MISSING STATUS BIT *DEC 
3  FORMAT MAINTENANCE STATUS = *OCT, EXPECTED = *OCT
10 FORMAT -----------1 INTERNAL TRAIN HOME SIGNAL 
11 FORMAT ----------1- INTERNAL TRAIN SUBSCAN SIGNAL
12 FORMAT ---------1-- 6 LPI EMMITER PULSE
13 FORMAT --------1--- 8 LPI EMMITER PULSE
14 FORMAT -------1---- INTERNAL TIMING EMITTER SIGNAL 
15 FORMAT ------1----- PAPER MOTION IN LOW SPEED SLEW 
16 FORMAT -----1------ START PAPER MOTION 
17 FORMAT ----1------- STOP PAPER MOTION
20 FORMAT ---1-------- PRINTER BUSY 
21 FORMAT --1--------- PFC ERROR BIT 0
22 FORMAT -1---------- PFC ERROR BIT 1
23 FORMAT 1----------- UNUSED 
/ 
30 B2=B1 XOR 7777 
   B2=B2 AND SB(2)
   B0=B0 OR B2            *SET DONT CARES IN EXPECT 
   MSG 3 (SB(2),B0) TO LINE B5
   B5=B5+1
   B2=0 
   B3=1 
36 IF(B0.AND.B3.NE.0)GOTO 40  *EXPECTED IS SET
   IF(SB(2).AND.B3.EQ.0)GOTO 44  *NO ERROR
   MSG 1 (B2) TO LINE B5  *UNEXPECTED STATUS BIT
   GOTO 42
40 IF(SB(2).AND.B3.NE.0)GOTO 44 
   MSG 2 (B2) TO LINE B5  *MISSING STATUS BIT 
42 B5=B5+1
   B4=B2+10 
   MSG B4 TO LINE B5   *TELL WHICH ONE
   B5=B5+1
44 B3=B3 LS 1 
   GOTO 36 WHILE (B2+1.LT.12D)
   B5=B5+1
77 EXIT TO 97Z
   END 30 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP97Z 580(23,24,25,26,27,30),LOCK
*** ERROR PROCESSOR 
**
* 
* 
*   OVERVIEW - MODULE *FTP97Z* IS A UTILITY MODULE CALLED 
*              TO PRESENT GENERAL ERROR INFORMATION 
* 
* 
*   DESCRIPTION - ERROR PROCESSOR 
* 
*         1.  POST ERROR INFORMATION
*         2.  RETURN
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         REGISTERS ARE NOT DISTURBED 
* 
*   MODULES CALLED
* 
*         NONE
* 
* 
**********************************************************************
/ 
/         PROCESS ERRORS FOR HIGH LEVEL MODULES 
/ 
1  FORMAT CH=*OCT, EQ=*OCT, UN=*OCT, LF=*OCT, DC=*OCT 
3  FORMAT ERRCNT=*OCT, WDCNT=*OCT, WDS XMITTED=*OCT 
5  FORMAT 668X STATUS=*OCT, PRINTER STATUS=*OCT *OCT
17 FORMAT . . . . . . . . . . . . . . . . . . . . . . 
/ 
20 MSG 1 (SB(3),SB(4),SB(5),LF,DC) TO LINE B5 
   B5=B5+1
   MSG 3 (B7,WC,WT) TO LINE B5
   B5=B5+1
   MSG 5 (SB(0),SB(1),SB(2)) TO LINE B5 
   B5=B5+1
   MSG 17 TO LINE B5
   PICTURE
   HALT 
   BLANK
   IF(EM.GE.100)GOTO 50      *IF NOT ABORT ERROR
   B0=IB(100)                *RESTORE REGISTERS 
   B1=IB(101)                *RESTORE REGISTERS 
   B2=IB(102)                *RESTORE REGISTERS 
   B3=IB(103)                *RESTORE REGISTERS 
   B4=IB(104)                *RESTORE REGISTERS 
   B6=IB(106)                *RESTORE REGISTERS 
   B7=IB(107)                *RESTORE REGISTERS 
50 EXIT 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP98A 3000(26,27,30),LOCK
*** RESTORE PFC MEMORY
**
* 
* 
*   OVERVIEW - MODULE *FTP98A* LOADS STANDARD DATA IN THE PFC MEMORY. 
*              IT IS CALLED FROM MODULES WHICH MODIFY PFC MEMORY. 
*              IT RUNS ONLY ON PFC PRINTERS. IT LOADS BOTH 6 LPI AND
*              8 LPI PFC MEMORY. IT IS CALLED, BY ALL MODULES WHICH 
*              LOAD NON STANDARD DATA IN THE PFC MEMORY, BEFORE 
*              TERMINATING. IT ASSUMES THAT THE NON STANDARD DATA 
*              LOADED CONTAINS A TOP OF FORM CODE AT A
*              6/8 LINE COINCIDENCE POINT.
* 
* 
*   DESCRIPTION - RESTORE PFC MEMORY
* 
*         1.  CONNECT AND CHECK STATUS
*         2.  ADVANCE TO TOP OF FORM
*         3.  VERIFY COINCIDENT STATUS
*         4.  VERIFY NO PFC ERROR STATUS
*         5.  LOAD 6 LPI PFC MEMORY 
*         6.  VERIFY COINCIDENT STATUS
*         7.  VERIFY NO PFC ERROR STATUS
*         8.  LOAD 8 LPI PFC MEMORY 
*         9.  VERIFY COINCIDENT STATUS
*        10.  VERIFY NO PFC ERROR STATUS
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON (CONN) 
*         2.  ABORT ON (FUNC) 
*         3.  ABORT ON (STATUS) 
*         4.  ABORT ON (OUT)
*         5.  NO COINCIDENT STATUS PRIOR TO PFC LOAD (203)
*         6.  PFC ERROR AFTER ADVANCE TO TOP OF FORM (501)
*         7.  PFC ERROR AFTER LOADING PFC MEMORY (502)
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (CONN) AT LINE *OCT
*         2.  ABORT ON (FUNC) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (OUT) AT LINE *OCT 
*         5.  NEED COINCIDENT STATUS TO LOAD PFC. 
*         6.  ADVANCED TO TOP OF FORM.  EXPECTED NO PFC ERROR 
*         7.  LOADED PFC MEMORY.  EXPECTED NO PFC ERROR 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP96A - ERROR PROCESSOR
*         FTP96Z - ERROR PROCESSOR
* 
* 
********************************************************************
* 
/  THIS SUBMODULE LOADS THE PFC MEMORY WITH STANDARD DATA.
/  IT LOADS BOTH THE 6 LPI AND THE 8 LPI MEMORY 
1  FORMAT STANDARD PFC LOAD 
2  FORMAT FTP98A LC*DEC EC*DEC ST*OCT 
3  FORMAT FTP98A ABORT ON (CONN) AT LINE *OCT 
4  FORMAT FTP98A ABORT ON (FUNC) AT LINE *OCT 
5  FORMAT FTP98A ABORT ON (STATUS) AT LINE *OCT 
6  FORMAT FTP98A ABORT ON (OUT) AT LINE *OCT
15 FORMAT FTP98A ERROR CODE *OCT AT LINE *OCT 
17 FORMAT *DEC ERROR(S) IN FTP98A 
* 
*   STANDARD PFC MEMORY LOAD DATA 
* 
*         6 LPI PFC DATA
   DATA (OB(0),CON) 0102,304,506,710,1102,304,506,710,
  ,1102,304,506,710,1102,304,506,710,1102,304,506,710,
  ,1102,304,506,710,1102,304,506,710,1102,304,506,714,, 
  ,0102,304,506,710,1102,304,506,710,1102,304,506,710,
  ,1102,304,506,710,1102,304,506,710,1102,304,506,710,
  ,1102,304,506,710,1102,304,506,714,,1700
*         8 LPI PFC DATA
   DATA(OB(200),CON)102,300,405,600,710,1100,203,400,506
  ,700,1011,200,304,500,607,1000,1102,300,405,600,710,1100, 
  ,203,400,506,700,1011,200,304,500,607,1000,1102,300,405,
  ,600,710,1100,203,400,506,700,1400,0000,102,300,405,600,
  ,710,1100,203,400,506,700,1011,200,304,500,607,1000,1102, 
  ,300,405,600,710,1100,203,400,506,700,1011,200,304,500, 
  ,607,1000,1102,300,405,600,710,1100,203,400,506,700,1400, 
  ,0000,1700
20 MSG 1 TO PRINT 
   B7=0                      *CLEAR ERROR COUNTER 
22 MSG 1 TO DISPLAY 
24 GOSUB 60                  *CONNECT 
   B4=4 
   FUNC 4,ABT 74             *ADVANCE TO TOP OF FORM
   GOSUB 61 
   B4=4 
   FUNC 65,ABT 74            *GET MAINT. STATUS 
   B4=5 
   STATUS 1 WORDS TO SB(2),ABT 74 
   B4=4 
   FUNC 66,ABT 74            *SWITCH TO REG. STATUS 
   IF(SB(1).AND.7717.NE.4001)ERROR 15/203,GOSUB 71
   IF(SB(2).AND.3400.NE.0)ERROR 15/501,GOSUB 71 
30 IF(ES.AND.RC.NE.0)GOTO 24
32 B4=4 
   FUNC 16,ABT 74            *LOAD 6 LPI PFC
   B4=6 
   OUT 103 WORDS FROM OB(0),ABT 74
   GOSUB 61 
   B4=4 
   FUNC 65,ABT 74            *GET MAINT. STATUS 
   B4=5 
   STATUS 1 WORDS TO SB(2),ABT 74 
   B4=4 
   FUNC 66,ABT 74            *SWITCH TO REG. STATUS 
   IF(SB(1).AND.7717.NE.4001)ERROR 15/203,GOSUB 71
   IF(SB(2).AND.3400.NE.0)ERROR 15/502,GOSUB 71 
36 IF(ES.AND.RC.NE.0)GOTO 32
40 B4=4 
   FUNC 17,ABT 74            *LOAD 8 LPI PFC
   B4=6 
   OUT 131 WORDS FROM OB(200),ABT 74
   GOSUB 61 
   B4=4 
   FUNC 65,ABT 74            *GET MAINT. STATUS 
   B4=5 
   STATUS 1 WORDS TO SB(2),ABT 74 
   B4=4 
   FUNC 66,ABT 74            *SWITCH TO REG. STATUS 
   IF(SB(1).AND.7717.NE.4001)ERROR 15/203,GOSUB 71
   IF(SB(2).AND.3400.NE.0)ERROR 15/502,GOSUB 71 
44 IF(ES.AND.RC.NE.0)GOTO 40
/  EXIT SEQUENCE
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 EXIT 
/  CONNECT SUBROUTINE ******************************
60 B4=3 
   CONN,ABT 74               *CONNECT 
   B4=4 
   FUNC 66,ABT 74 
   B4=5 
   STATUS 1 WORDS TO SB(1),ABT 74  *GET STATUS
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 64     *CHECK STATUS
61 REL
   DELAY 100 MSEC            *WAIT
   GOTO 60                   *TRY AGAIN 
64 RETURN 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 96A 
   B4=3 
   CONN,ABT 74               *RECONNECT 
72 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 96Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP98B 580(23,24,25,26,27,30),LOCK
*** GENERATE RIPPLE PATTERN DATA
**
* 
* 
*   OVERVIEW - MODULE *FTP98B* IS A UTILITY MODULE CALLED BY
*              TEST MODULES TO GENERATE PRINT DATA FOR RIPPLE 
*              PATTERN. 
* 
* 
*   DESCRIPTION - GENERATE RIPPLE PATTERN DATA
* 
*         1.  SAVE REGISTERS
*         2.  PREPARE PRINT LINE FROM CANNED DATA 
*         3.  SET BA AND WC PARAMETERS
*         4.  RESTORE REGISTERS 
*         5.  RETURN
* 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         REGISTERS ARE NOT DISTURBED 
* 
*   MODULES CALLED
* 
*         NONE
* 
* 
**********************************************************************
/  THIS MODULE GENERATES RIPPLE PATTERN DATA
/ 
/   OB(0)=WORDS IN SHIFT STRING 
/ 
/  TRAINS 1-5 
   DATA(OB(1),CON)1,203,405,607,1011,2122,2324,2526,2730, 
  ,3141,4243,4445,4647,5051,6263,6465,6667,7071,3340,5354,
  ,6173,2034,3674,1316,1214,1517,3235,3752,5556,5772,7576,
  ,7777 
/  TRAIN 6
   DATA(OB(101),CON)60,61,62,63,64,65,66,67,70,71,72,75,42, 
  ,100,45,133,53,101,102,103,104,105,106,107,110,111,74,56, 
  ,51,134,136,73,55,112,113,114,115,116,117,120,121,122,41, 
  ,44,52,47,77,76,40,57,123,124,125,126,127,130,131,132,135,
  ,54,50,137,43,46
/ 
20 BA=1 
   OB(400)=B0                *SAVE REGISTERS
   OB(401)=B1 
   OB(402)=B2 
   IF(P0.EQ.6)GOTO 30 
   WC=104                    *SET PRINT LENGTH
   B0=40                     *STRING LENGTH FOR TRAINS 1,4,5
   IF(P0.EQ.3)GOTO 22 
   IF(P0.NE.2)GOTO 24 
   OB(30)=1314               *TRAIN 2 
22 B0=30                     *TRAIN 2,3 
24 COPY OB(1) TO OB(B0+1) FOR B0
   B2=B0 LS 1 
   COPY OB(1) TO OB(B2+1) FOR B0
   IF(P0.EQ.3) GOTO 26          *TRAIN 3
   IF(P0.NE.2) GOTO 27          *TRAIN 2
26 B2 = B2 + B0 
   COPY OB(1) TO OB(B2+1) FOR B0     *TRAIN 2 OR 3
27 OB(0)=B0+B2
   GOTO 32
30 COPY OB(101) TO OB(1) FOR 100  *TRAIN TYPE 6 
   COPY OB(101) TO OB(201) FOR 100
   OB(0)=300
   WC=210                    *SET PRINT LENGTH
32 B0=OB(400) 
   B1=OB(401) 
   B2=OB(402) 
   EXIT 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP98C 580(23,24,25,26,27,30),LOCK
*** GENERATE COLUMN NUMBERING DATA
**
* 
* 
*   OVERVIEW - MODULE *FTP98C* IS A UTILITY MODULE CALLED BY
*              TEST MODULES TO GENERATE PRINT DATA FOR COLUMN 
*              NUMBERING. 
* 
* 
*   DESCRIPTION - GENERATE COLUMN NUMBERING DATA
* 
*         1.  PREPARE PRINT LINE FROM CANNED DATA 
*         2.  SET BA AND WC PARAMETERS
*         3.  RETURN
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B0 - DESTROYED
*         B1 - DESTROYED
*         B2 - SET TO NUMBER OF LINES IN HEADING (1)
*         B3 - NOT CHANGED
*         B4 - NOT CHANGED
*         B5 - NOT CHANGED
*         B6 - NOT CHANGED
*         B7 - NOT CHANGED
* 
*   MODULES CALLED
* 
*         NONE
* 
* 
**********************************************************************
/  THIS MODULE GENERATES COLUMN NUMBERING DATA
/ 
/  DIGITS 1-0 
/ 
/  TRAINS 1-5 
   DATA(OB(1),CON)102,304,506,710,1100
/  TRAIN 6
   DATA(OB(13),CON)61,62,63,64,65,66,67,70,71,60
20 B0=5                      *SET SKELETON LENTGH 
   B1=0                      *INIT LOOP COUNTER 
   BA=1                      *SET PRINT PARAMETERS
   WC=104 
   IF(P0.NE.6)GOTO 24 
   B0=12                     *CORRECT FOR TRAIN TYPE 6
   COPY OB(13) TO OB(1) FOR B0
   WC=210 
24 B2=B0+1                   *FILL LINE 
30 COPY OB(1) TO OB(B2) FOR B0
   B2=B2+B0 
   GOTO 30 WHILE (B1+12.LT.210) 
   B2=1                      *SET NO. OF LINES IN PRINT**** 
   EXIT 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP98D 580(23,24,25,26,27,30),LOCK
*** GENERATE TRAIN IMAGE DATA 
**
* 
* 
*   OVERVIEW - MODULE *FTP98D* IS A UTILITY MODULE CALLED BY
*              TEST MODULES TO GENERATE TRAIN IMAGE DATA. 
*              *FTP98D* HANDLES TRAIN TYPES 1,4 AND 5. *FTP98E* IS
*              EXECUTED FOR TRAIN TYPES 2,3 AND 6.
* 
* 
*   DESCRIPTION - GENERATE TRAIN IMAGE DATA 
* 
*         1.  IF TRAIN TYPE 2,3 OR 6, EXIT TO MODULE FTP98E.
*         2.  PREPARE TRAIN IMAGE DATA FROM CANNED DATA.
*         3.  RETURN
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         REGISTERS ARE NOT DISTURBED 
* 
*   MODULES CALLED
* 
*         FTP98E - GENERATE TRAIN IMAGE DATA
* 
* 
**********************************************************************
/  THIS MODULE CONSTRUCTS TRAIN IMAGE DATA FOR TRAINS 1,4,^5. 
/  MODULE FTP98E IS ENTERED FOR TRAINS 2,3,^ 6. 
1  FORMAT FTP98D GENERATING TRAIN DATA
2  FORMAT FTP98D ILLEGAL TRAIN TYPE *OCT
3  FORMAT FTP98D RUN FTP(24) TO RELOAD TRAIN IMAGE. 
* 
*   LOAD DATA FOR TRAIN ARRAY TYPE 596-1
* 
   DATA(OB(0),CON) 1,7,4,3,,2,6,5,25,40,20,33,30,27,11,10,
  ,26,23,22,24,51,21,43,31,1,4,,53,3,71,2,73,47,46,50,42,44,
  ,45,54,41,61,65,63,70,66,67,64,62,37,13,74,34,17,72,16,12,
  ,1,7,4,3,,2,6,5,25,40,20,33,30,27,11,10,26,23,22,24,51,21,
  ,43,31,47,46,50,42,44,45,54,41,61,65,63,70,66,67,64,62,77,
  ,15,35,52,75,55,56,36,76,74,34,57,32,14,71,73 
* 
*   LOAD DATA FOR TRAIN ARRAY TYPE 596-4
* 
   DATA(OB(160),CON)1,7,4,3,,2,6,5,25,40,20,33,30,27,11,10, 
  ,26,23,22,24,51,21,43,31,1,4,,53,3,71,2,73,47,46,50,42,44,
  ,45,54,41,61,65,63,70,66,67,64,62,37,77,74,34,17,72,16,12,
  ,1,7,4,3,,2,6,5,25,40,20,33,30,27,11,10,26,23,22,24,51,21,
  ,43,31,47,46,50,42,44,45,54,41,61,65,63,70,66,67,64,62,52,
  ,14,36,13,15,75,56,35,55,34,74,57,32,76,71,73 
* 
*   LOAD DATA FOR TRAIN ARRAY TYPE 596-5
* 
   DATA(OB(340),CON)1,7,4,3,,2,6,5,25,40,20,33,30,27,11,10, 
  ,26,23,22,24,51,21,43,31,1,4,,53,3,71,2,73,47,46,50,42,44,
  ,45,54,41,61,65,63,70,66,67,64,62,37,77,74,34,17,72,16,12,
  ,1,7,4,3,,2,6,5,25,40,20,33,30,27,11,10,26,23,22,24,51,21,
  ,43,31,47,46,50,42,44,45,54,41,61,65,63,70,66,67,64,62,52,
  ,14,36,13,15,75,56,35,55,34,74,57,32,76,71,73 
20 MSG 1 TO DISPLAY 
   IF(P0.LE.1)GOTO 30        *IF TRAIN TYPE 1(OR DEFAULT) 
   IF(P0.EQ.2)GOTO 22 
   IF(P0.EQ.3)GOTO 22 
   IF(P0.EQ.4)GOTO 24 
   IF(P0.EQ.5)GOTO 26 
   IF(P0.GT.6)GOTO 40 
22 EXIT TO 98E               *TRAINS 2,3,6
24 COPY OB(160) TO OB FOR 160  *TRAIN 4 
   GOTO 30
26 COPY OB(340) TO OB FOR 160  *TRAIN 5 
30 COPY OB TO OB(160) FOR 160  *GENERATE 63 CHARACTER ARRAY 
   COPY OB TO OB(340) FOR 160 
   COPY OB(70) TO OB(520) FOR 30
   COPY OB(40) TO OB(550) FOR 30
   EXIT 
40 MSG 2(B6,B7,P0) TO LINE B5 
   B5=B5+1
   MSG 3 TO LINE B5 
   PICTURE
   HALT 
   END 20 
COMPILE 
*  *********************************************************
*  *********************************************************
   MODULE FTP98E 580(23,24,25,26,27,30),LOCK
*** GENERATE TRAIN IMAGE DATA 
**
* 
* 
*   OVERVIEW - MODULE *FTP98E* IS A UTILITY MODULE CALLED BY
*              MODULE *FTP98D* TO GENERATE TRAIN IMAGE DATA 
*              FOR TRAIN TYPES 2,3 AND 6. 
* 
* 
*   DESCRIPTION - GENERATE TRAIN IMAGE DATA 
* 
*         1.  PREPARE TRAIN IMAGE DATA FROM CANNED DATA.
*         2.  RETURN
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         REGISTERS ARE NOT DISTURBED 
* 
*   MODULES CALLED
* 
*         NONE
* 
* 
**********************************************************************
/  THIS MODULE CONSTRUCTS TRAIN IMAGE DATA FOR TRAINS 2,3,^6. 
1  FORMAT FTP98E GENERATING TRAIN DATA
* 
*   LOAD DATA FOR TRAIN ARRAY TYPE 596-2
* 
   DATA(OB(0),CON)1,7,4,3,,2,6,5,25,40,36,33,30,27,11,10,26,
  ,23,22,24,51,21,43,31,47,46,50,42,44,45,54,41,61,65,63,70,
  ,66,67,64,62,71,34,53,14,13,20,74,73
* 
*   LOAD DATA FOR TRAIN ARRAY TYPE 596-3
* 
   DATA(OB(60),CON)1,7,4,3,0,2,6,5,25,40,20,33,30,27,11,10, 
  ,26,23,22,24,51,21,43,31,47,46,50,42,44,45,54,41,61,65,63,
  ,70,66,67,64,62,16,13,36,53,71,73,74,34 
* 
*   LOAD DATA FOR TRAIN ARRAY TYPE 596-6
* 
   DATA(OB(140),CON)61,67,64,63,60,62,66,65,105,55,53,56, 
  ,110,107,71,70,106,103,102,104,122,101,114,111,120,117, 
  ,121,113,115,116,52,112,57,126,124,131,127,130,125,123,47,
  ,44,43,54,76,75,74,132,41,61,77,100,60,134,42,140,146,141,
  ,143,145,147,142,144,150,154,153,155,156,160,157,152,151, 
  ,166,167,164,170,163,165,161,162,176,174,137,173,175,172, 
  ,171,136,73,46,50,51,133,135,45,72
20 MSG 1 TO DISPLAY 
   IF(P0.NE.2)GOTO 22 
   COPY OB TO OB(60) FOR 60  *TRAIN TYPE 2
   GOTO 24
22 IF(P0.NE.3)GOTO 26 
   COPY OB(60) TO OB FOR 60  *TRAIN TYPE 3
24 COPY OB TO OB(140) FOR 140  *GENERATE 48 CHARACTER ARRAY 
   COPY OB TO OB(300) FOR 300 
   EXIT 
26 COPY OB(140) TO OB FOR 140  *TRAIN TYPE 6
   COPY OB TO OB(300) FOR 300  *GENERATE 95 CHARACTER ARRAY 
   EXIT 
   END 20 
COMPILE 
   MODULE FTP98F 3000(26,27,30),LOCK
*** RESTORE PFC MEMORY FOR 8.5 INCH PAPER 
**
* 
* 
*   OVERVIEW - MODULE *FTP98F* LOADS STANDARD DATA IN THE PFC MEMORY
*              FOR 8.5 INCH PAPER. IT IS CALLED FROM MODULES WHICH
*              MODIFY PFC MEMORY. IT RUNS ONLY ON PFC PRINTERS. IT
*              LOADS BOTH 6 AND 8 LPI PFC MEMORY. IT IS CALLED, BY ALL
*              MODULES WHICH LOAD NON STANDARD DATA IN THE PFC MEMORY,
*              BEFORE TERMINATING. IT ASSUMES THAT THE NON STANDARD DATA
*              DATA LOADED CONTAINS A TOP OF FORM CODE AT A 
*              6/8 LINE COINCIDENCE POINT.
* 
* 
*   DESCRIPTION - RESTORE PFC MEMORY
* 
*         1.  CONNECT AND CHECK STATUS
*         2.  ADVANCE TO TOP OF FORM
*         3.  VERIFY COINCIDENT STATUS
*         4.  VERIFY NO PFC ERROR STATUS
*         5.  LOAD 6 LPI PFC MEMORY 
*         6.  VERIFY COINCIDENT STATUS
*         7.  VERIFY NO PFC ERROR STATUS
*         8.  LOAD 8 LPI PFC MEMORY 
*         9.  VERIFY COINCIDENT STATUS
*        10.  VERIFY NO PFC ERROR STATUS
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON (CONN) 
*         2.  ABORT ON (FUNC) 
*         3.  ABORT ON (STATUS) 
*         4.  ABORT ON (OUT)
*         5.  NO COINCIDENT STATUS PRIOR TO PFC LOAD (203)
*         6.  PFC ERROR AFTER ADVANCE TO TOP OF FORM (501)
*         7.  PFC ERROR AFTER LOADING PFC MEMORY (502)
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (CONN) AT LINE *OCT
*         2.  ABORT ON (FUNC) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (OUT) AT LINE *OCT 
*         5.  NEED COINCIDENT STATUS TO LOAD PFC. 
*         6.  ADVANCED TO TOP OF FORM.  EXPECTED NO PFC ERROR 
*         7.  LOADED PFC MEMORY.  EXPECTED NO PFC ERROR 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP96A - ERROR PROCESSOR
*         FTP96Z - ERROR PROCESSOR
* 
* 
********************************************************************
* 
/  THIS SUBMODULE LOADS THE PFC MEMORY WITH STANDARD DATA.
/  IT LOADS BOTH THE 6 LPI AND THE 8 LPI MEMORY 
1  FORMAT STANDARD PFC LOAD 
2  FORMAT FTP98F LC*DEC EC*DEC ST*OCT 
3  FORMAT FTP98F ABORT ON (CONN) AT LINE *OCT 
4  FORMAT FTP98F ABORT ON (FUNC) AT LINE *OCT 
5  FORMAT FTP98F ABORT ON (STATUS) AT LINE *OCT 
6  FORMAT FTP98F ABORT ON (OUT) AT LINE *OCT
15 FORMAT FTP98F ERROR CODE *OCT AT LINE *OCT 
17 FORMAT *DEC ERROR(S) IN FTP98F 
* 
*   STANDARD PFC MEMORY LOAD DATA FOR 8.5 INCH PAPER
* 
*         6 LPI PFC DATA 8.5 INCH PAPER 
   DATA (OB(0),CON) 0102,304,506,710,1102,304,506,710,
  ,1102,304,506,710,1102,304,506,710,1102,304,506,710,
  ,1102,304,506,714,,0001,203,405,607,1011,203,405, 
  ,607,1011,203,405,607,1011,203,405,607,1011,203,405,
  ,607,1011,203,405,607,1400,,1700
*         8 LPI PFC DATA 8.5 INCH PAPER 
   DATA(OB(200),CON)102,300,405,600,710,1100,203,400,506
  ,700,1011,200,304,500,607,1000,1102,300,405,600,710,1100, 
  ,203,400,506,700,1011,200,304,500,607,1000,1400,0000,102, 
  ,300,405,600,710,1100,203,400,506,700,1011,200,304,500, 
  ,607,1000,1102,300,405,600,710,1100,203,400,506,700,1011, 
  ,200,304,500,607,1000,1400,0000,1700
20 MSG 1 TO PRINT 
   B7=0                      *CLEAR ERROR COUNTER 
22 MSG 1 TO DISPLAY 
24 GOSUB 60                  *CONNECT 
   B4=4 
   FUNC 4,ABT 74             *ADVANCE TO TOP OF FORM
   GOSUB 61 
   B4=4 
   FUNC 65,ABT 74            *GET MAINT. STATUS 
   B4=5 
   STATUS 1 WORDS TO SB(2),ABT 74 
   B4=4 
   FUNC 66,ABT 74            *SWITCH TO REG. STATUS 
   IF(SB(1).AND.7717.NE.4001)ERROR 15/203,GOSUB 71
   IF(SB(2).AND.3400.NE.0)ERROR 15/501,GOSUB 71 
30 IF(ES.AND.RC.NE.0)GOTO 24
32 B4=4 
   FUNC 16,ABT 74            *LOAD 6 LPI PFC
   B4=6 
   OUT 64 WORDS FROM OB(0),ABT 74 
   GOSUB 61 
   B4=4 
   FUNC 65,ABT 74            *GET MAINT. STATUS 
   B4=5 
   STATUS 1 WORDS TO SB(2),ABT 74 
   B4=4 
   FUNC 66,ABT 74            *SWITCH TO REG. STATUS 
   IF(SB(1).AND.7717.NE.4001)ERROR 15/203,GOSUB 71
   IF(SB(2).AND.3400.NE.0)ERROR 15/502,GOSUB 71 
36 IF(ES.AND.RC.NE.0)GOTO 32
40 B4=4 
   FUNC 17,ABT 74            *LOAD 8 LPI PFC
   B4=6 
   OUT 105 WORDS FROM OB(200),ABT 74
   GOSUB 61 
   B4=4 
   FUNC 65,ABT 74            *GET MAINT. STATUS 
   B4=5 
   STATUS 1 WORDS TO SB(2),ABT 74 
   B4=4 
   FUNC 66,ABT 74            *SWITCH TO REG. STATUS 
   IF(SB(1).AND.7717.NE.4001)ERROR 15/203,GOSUB 71
   IF(SB(2).AND.3400.NE.0)ERROR 15/502,GOSUB 71 
44 IF(ES.AND.RC.NE.0)GOTO 40
/  EXIT SEQUENCE
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 EXIT 
/  CONNECT SUBROUTINE ******************************
60 B4=3 
   CONN,ABT 74               *CONNECT 
   B4=4 
   FUNC 66,ABT 74 
   B4=5 
   STATUS 1 WORDS TO SB(1),ABT 74  *GET STATUS
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 64     *CHECK STATUS
61 REL
   DELAY 100 MSEC            *WAIT
   GOTO 60                   *TRY AGAIN 
64 RETURN 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 96A 
   B4=3 
   CONN,ABT 74               *RECONNECT 
72 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 96Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
   MODULE FTP98G 3000(26,27,30),LOCK
*** RESTORE PFC MEMORY FOR 12 INCH PAPER
**
* 
* 
*   OVERVIEW - MODULE *FTP98G* LOADS STANDARD DATA IN THE PFC MEMORY
*              FOR 12 INCH PAPER. IT IS CALLED FROM MODULES WHICH 
*              MODIFY PFC MEMORY. IT RUNS ONLY ON PFC PRINTERS. IT
*              LOADS BOTH 6 AND 8 LPI PFC MEMORY. IT IS CALLED, BY ALL
*              MODULES WHICH LOAD NON STANDARD DATA IN THE PFC MEMORY,
*              BEFORE TERMINATING. IT ASSUMES THAT THE NON STANDARD DATA
*              DATA LOADED CONTAINS A TOP OF FORM CODE AT A 
*              6/8 LINE COINCIDENCE POINT.
* 
* 
*   DESCRIPTION - RESTORE PFC MEMORY
* 
*         1.  CONNECT AND CHECK STATUS
*         2.  ADVANCE TO TOP OF FORM
*         3.  VERIFY COINCIDENT STATUS
*         4.  VERIFY NO PFC ERROR STATUS
*         5.  LOAD 6 LPI PFC MEMORY 
*         6.  VERIFY COINCIDENT STATUS
*         7.  VERIFY NO PFC ERROR STATUS
*         8.  LOAD 8 LPI PFC MEMORY 
*         9.  VERIFY COINCIDENT STATUS
*        10.  VERIFY NO PFC ERROR STATUS
* 
* 
*   ERRORS DETECTED 
* 
*         1.  ABORT ON (CONN) 
*         2.  ABORT ON (FUNC) 
*         3.  ABORT ON (STATUS) 
*         4.  ABORT ON (OUT)
*         5.  NO COINCIDENT STATUS PRIOR TO PFC LOAD (203)
*         6.  PFC ERROR AFTER ADVANCE TO TOP OF FORM (501)
*         7.  PFC ERROR AFTER LOADING PFC MEMORY (502)
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         1.  ABORT ON (CONN) AT LINE *OCT
*         2.  ABORT ON (FUNC) AT LINE *OCT
*         3.  ABORT ON (STATUS) AT LINE *OCT
*         4.  ABORT ON (OUT) AT LINE *OCT 
*         5.  NEED COINCIDENT STATUS TO LOAD PFC. 
*         6.  ADVANCED TO TOP OF FORM.  EXPECTED NO PFC ERROR 
*         7.  LOADED PFC MEMORY.  EXPECTED NO PFC ERROR 
*** INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B4 - ABORT MESSAGE POINTER
*         B5 - ERROR MESSAGE LINE POINTER 
*         B6 - SCOPE LOOP COUNTER 
*         B7 - ERROR COUNT
* 
*   MODULES CALLED
* 
*         FTP96A - ERROR PROCESSOR
*         FTP96Z - ERROR PROCESSOR
* 
* 
********************************************************************
* 
/  THIS SUBMODULE LOADS THE PFC MEMORY WITH STANDARD DATA.
/  IT LOADS BOTH THE 6 LPI AND THE 8 LPI MEMORY 
1  FORMAT STANDARD PFC LOAD 
2  FORMAT FTP98G LC*DEC EC*DEC ST*OCT 
3  FORMAT FTP98G ABORT ON (CONN) AT LINE *OCT 
4  FORMAT FTP98G ABORT ON (FUNC) AT LINE *OCT 
5  FORMAT FTP98G ABORT ON (STATUS) AT LINE *OCT 
6  FORMAT FTP98G ABORT ON (OUT) AT LINE *OCT
15 FORMAT FTP98G ERROR CODE *OCT AT LINE *OCT 
17 FORMAT *DEC ERROR(S) IN FTP98G 
* 
*   STANDARD PFC MEMORY LOAD DATA FOR 12 INCH PAPER 
* 
*         6 LPI PFC DATA 12 INCH PAPER
   DATA (OB(0),CON) 0102,304,506,710,1102,304,506,710,
  ,1102,304,506,710,1102,304,506,710,1102,304,506,710,
  ,1102,304,506,710,1102,304,506,710,1102,304,506,710,
  ,1102,304,514,,1700 
*         8 LPI PFC DATA 12 INCH PAPER
   DATA(OB(200),CON)102,300,405,600,710,1100,203,400,506, 
  ,700,1011,200,304,500,607,1000,1102,300,405,600,710,1100, 
  ,203,400,506,700,1011,200,304,500,607,1000,1102,300,405,
  ,600,710,1100,203,400,506,700,1011,200,0304,0500,1400,
  ,0000,1700
20 MSG 1 TO PRINT 
   B7=0                      *CLEAR ERROR COUNTER 
22 MSG 1 TO DISPLAY 
24 GOSUB 60                  *CONNECT 
   B4=4 
   FUNC 4,ABT 74             *ADVANCE TO TOP OF FORM
   GOSUB 61 
   B4=4 
   FUNC 65,ABT 74            *GET MAINT. STATUS 
   B4=5 
   STATUS 1 WORDS TO SB(2),ABT 74 
   B4=4 
   FUNC 66,ABT 74            *SWITCH TO REG. STATUS 
   IF(SB(1).AND.7717.NE.4001)ERROR 15/203,GOSUB 71
   IF(SB(2).AND.3400.NE.0)ERROR 15/501,GOSUB 71 
30 IF(ES.AND.RC.NE.0)GOTO 24
32 B4=4 
   FUNC 16,ABT 74            *LOAD 6 LPI PFC
   B4=6 
   OUT 45 WORDS FROM OB(0),ABT 74 
   GOSUB 61 
   B4=4 
   FUNC 65,ABT 74            *GET MAINT. STATUS 
   B4=5 
   STATUS 1 WORDS TO SB(2),ABT 74 
   B4=4 
   FUNC 66,ABT 74            *SWITCH TO REG. STATUS 
   IF(SB(1).AND.7717.NE.4001)ERROR 15/203,GOSUB 71
   IF(SB(2).AND.3400.NE.0)ERROR 15/502,GOSUB 71 
36 IF(ES.AND.RC.NE.0)GOTO 32
40 B4=4 
   FUNC 17,ABT 74            *LOAD 8 LPI PFC
   B4=6 
   OUT 61 WORDS FROM OB(200),ABT 74 
   GOSUB 61 
   B4=4 
   FUNC 65,ABT 74            *GET MAINT. STATUS 
   B4=5 
   STATUS 1 WORDS TO SB(2),ABT 74 
   B4=4 
   FUNC 66,ABT 74            *SWITCH TO REG. STATUS 
   IF(SB(1).AND.7717.NE.4001)ERROR 15/203,GOSUB 71
   IF(SB(2).AND.3400.NE.0)ERROR 15/502,GOSUB 71 
44 IF(ES.AND.RC.NE.0)GOTO 40
/  EXIT SEQUENCE
   IF(B7.EQ.0)GOTO 57 
56 MSG 17(B7) TO DAYFILE        *TERMINATION MESSAGE
57 EXIT 
/  CONNECT SUBROUTINE ******************************
60 B4=3 
   CONN,ABT 74               *CONNECT 
   B4=4 
   FUNC 66,ABT 74 
   B4=5 
   STATUS 1 WORDS TO SB(1),ABT 74  *GET STATUS
   MSG 2(B6,B7,SB(1)) TO DISPLAY
   IF(SB(1).AND.3 EQ 1)GOTO 64     *CHECK STATUS
61 REL
   DELAY 100 MSEC            *WAIT
   GOTO 60                   *TRY AGAIN 
64 RETURN 
/  ERROR SUBROUTINE ********************************* 
71 B7=B7+1                        *INCREMENT COUNTER
   MSG EM (EC,EA) TO LINE 1       *POST MESSAGE 
   B5=3 
   CALL 96A 
   B4=3 
   CONN,ABT 74               *RECONNECT 
72 RETURN 
/  ABORT ERROR PROCESSOR **************************** 
74 ENDSUB                    *KILL ANY SUBROUTINES
   B7=B7+1                   *COUNT ERRORS
75 MSG B4(EA) TO LINE 0      *ERROR MESSAGE 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B5=3                      *NEXT LINE 
   CALL 96Z                  *PROCESS ABORTS
   MSG 1 TO DISPLAY          *RESTORE RUN MESSAGE 
   IF(B7.LT.2)GOTO 24        *RESTART IF FIRST ERROR
   GOTO 56                   *ELSE ABNORMAL TERMINATE 
   END 20 
COMPILE 
   MODULE FTP99 580(23,24,25,26,27,30),LOCK 
/ 
/                       - OVERVIEW- 
/ 
/   *FTP* IS A 580 FASTRAIN PRINTER DIAGNOSTIC BASED ON THE 
/   PP COMPASS ON LINE DIAGNOSTIC *FTP*. IT IS WRITTEN IN 
/   *MALET* LANGUAGE. IT RUNS ON THE 580-12, 580-16, 580-20,
/   580-120, 580-160 AND 580-200 FASTRAIN LINE PRINTERS. IT 
/   SUPPORTS ALL SIX TRAIN ARRAY TYPES, 596-1 THRU 596-6. 
/   DIAGNOSTIC *FTP* REPLACES THE OLD PP COMPASS DIAGNOSTICS
/   *PFC* AND *FTP* (RUNNING UNDER *KEDIAG/CEDIAG*) AND THE 
/   DIAGNOSTIC *AIDFTP* RUNNING UNDER *AID/ORD*.
/ 
/ 
/                       - PARAMETERS -
/ 
/ 
/   P0 - TRAIN ARRAY TYPE.  NUMBERS 1 THRU 6 ARE USED FOR 
/        TRAIN ARRAY TYPES 596-1 THRU 596-6. IF P0 CONTAINS 
/        ZERO, TRAIN ARRAY TYPE 1 IS ASSUMED. 
/ 
/   P1 - STARTING CODE FOR *FULL LINES OF CHARACTERS* 
/        SECTION. ZERO VALUE IMPLIES ZERO CHARACTER.
/        (EG, 60B FOR TRAIN 6)
/ 
/   P2 - RANDOM SEED VALUE FOR *RANDOM PRINT* SECTION.
/        IF A ZERO VALUE IS ENTERED, THE REAL TIME CLOCK
/        WILL BE USED AS THE STARTING SEED. 
/ 
/   P3 - PAPER SIZE FOR LOADING PFC MEMORY. SET P3 = 8 FOR
/        8.5 INCH PAPER, P3=11 FOR 11 INCH PAPER, OR P3=12
/        FOR 12 INCH PAPER. DEFAULT IS FOR 11 INCH PAPER. 
/ 
/   P7 - PRINT CONTROL FLAG FOR *BURST SPEED TEST* SECTION. 
/        IF A NONZERO VALUE IS ENTERED, BURST SPEED PRINTING
/        CONTINUES UNTIL THAT NUMBER OF LINES HAS BEEN
/        PRINTED. IF A ZERO VALUE IS ENTERED, 240 LINES ARE 
/        PRINTED. 
/ 
/ 
20 PAUSE
   EXIT TO 991
   END 20 
COMPILE,SOURCE
   MODULE FTP991 580(23,24,25,26,27,30),LOCK
/ 
/   MODULE DESCRIPTIONS 
/ 
/     CONFIDENCE LEVEL TESTS (NO SCOPE LOOPS) 
/ 
/          FTP00 - RIPPLE PATTERN LEFT
/          FTP01 - RIPPLE PATTERN RIGHT 
/          FTP02 - SPACE-ZERO PATTERN 
/          FTP03 - M-W PATTERN
/          FTP04 - FULL LINES OF CHARACTERS 
/          FTP05 - VARIABLE LENGTH LINES
/          FTP06 - DEPICT SUBSCANS
/          FTP07 - WORST PATTERN
/          FTP08 - EXTENDED ARRAY TEST
/          FTP09 - BUFFER MEMORY TEST 
/          FTP10 - IMAGE MEMORY AND TRAIN CHECK 
/          FTP11 - PRINT ZERO IN COLUMN 1 
/          FTP12 - RANDOM PRINT 
/          FTP13 - PRINT WHILE BUSY 
/ 
/     FUNCTIONAL LEVEL TESTS (SCOPE LOOPS AS APPROPRIATE) 
/ 
/          FTP20 - CONNECT AND STATUS CHECK 
/          FTP21 - CHECK TRANSMISSION PATH
/          FTP22 - CHECK LEGAL FUNCTIONS
/          FTP23 - CHECK ILLEGAL FUNCTIONS
/          FTP24 - LOAD TRAIN ARRAY MEMORY
/          FTP25 - LOAD PFC MEMORY
/          FTP26 - CHECK 6 LPI PFC UNDERFLOW
/          FTP27 - CHECK 8 LPI PFC UNDERFLOW
/          FTP28 - CHECK 6 LPI PFC POSTPRINT INHIBIT ERROR
/          FTP29 - CHECK 8 LPI PFC POSTPRINT INHIBIT ERROR
/          FTP30 - CHECK 6 LPI PFC PREPRINT INHIBIT ERROR 
/          FTP31 - CHECK 8 LPI PFC PREPRINT INHIBIT ERROR 
/          FTP32 - CHECK RNB INT - PART 1 
/          FTP33 - CHECK RNB INT - PART 2 
/          FTP34 - CHECK RNB INT - PART 3 
/          FTP35 - CHECK EOP INT - PART 1 
/          FTP36 - CHECK EOP INT - PART 2 
/          FTP37 - CHECK EOP INT - PART 3 
/          FTP38 - CHECK ABN EOP INT
/          FTP40 - CHECK SUPPRESS SPACE FUNCTION
/          FTP41 - CHECK COINCIDENT POINTS AND
/                  FORMAT LEVEL 9 
/          FTP42 - CHECK PAGE EJECT AND ADVANCE TO LAST LINE
/                  FUNCTIONS
/          FTP43 - CHECK AUTO PAGE EJECT
/          FTP44 - CHECK SINGLE SPACE OPERATION 
/          FTP45 - CHECK DOUBLE SPACE OPERATION 
/          FTP46 - CHECK POSTPRINT FORMAT SPACING 
/          FTP47 - CHECK PREPRINT FORMAT SPACING
/ 
/     SPECIAL PURPOSE TESTS 
/ 
/          FTP50 - BURST SPEED TEST 
/          FTP51 - TIME TRAIN HOME PULSE
/          FTP52 - TIME PAPER SLEW
/ 
20 PAUSE
   END 20 
COMPILE,SOURCE
