Abstract:
Method and apparatus for improved error logging by integrating errors over a given number of operations that provides long memory and fast recovery. Errors integrated over a selected number of associated operations are compared to a criterion. An exception is logged each time the number of errors is not less than the criterion but if the number of errors is less than the criterion, the exception log is cleared.

Description:
DOCUMENTS INCORPORATED BY REFERENCE 
     U.S. Pat. No. 4,170,414 (assigned to the same assignee as the present case) is incorporated by reference and hereinafter referred to as Reference &#39;414. 
     TECHNICAL FIELD 
     This invention relates to error logging particularly to logging errors of a transient nature. 
     The proper analysis of machine errors provides an early indication of machine malfunctions. For example, when a part wears beyond its tolerance, it begins to cause malfunctions which increase in frequency until there is a complete breakdown. Some machine errors occur, however, which are not caused by machine failures but rather by improper input material or operator error. These errors are of a transient nature and tend to disappear over a period of time. Logging of such errors can provide a misleading indication which increases maintenance cost because of the unnecessary replacement of parts and the use of the maintenance personnel time. 
     An example of such errors is paper handling errors that occur in copier systems. A special error logging for paper handling errors is desirable for several reasons. Paper handling errors are more prevalent than others and have a wider variety of causes. One cause is the sensitivity of paper handling systems which must be designed to handle a wide range of paper types and sizes. Another cause is the variance of paper quality and changes in characteristics caused by varying humidity. Another cause is the operator&#39;s failing to observe certain precautions or not following instructions. Paper handling errors have an erratic occurrence with long periods of no errors and many errors in a short period. 
     Errors can be integrated over a period of time determined by the number of attempts to perform an event. In the paper handling case, for example, the errors might be integrated over every one thousand paper commands. If paper handling errors are being caused by a faulty ream of paper, it would be characteristic that a number of errors would occur over a short period of time followed by a period of no errors after a ream of good paper was loaded in the machine. 
     It is undesirable for such transient errors to accumulate over a period of time because they provide misleading indications of machine performance. It is, therefore, desirable to have an error logging scheme which integrates errors over a period of time and which has a long memory and short recovery period. 
     BACKGROUND ART 
     A defect monitor is shown in U.S. Pat. No. 3,408,486 which utilizes a reversible counter for counting up when counting rejects and for counting down when counting nondefectives. For the purposes discussed above, the system according to the patent recovers too slowly and provides only a short history of defective items. 
     An error log system for electrostatographic machines is shown in U.S. Pat. No. 4,062,061. A fault flag array is scanned, having a flag associated with each operating component so that in case of failure, a cumulative error count related to each flag is incremented. Such an error logging system merely counts the number of errors and does not provide for integration or recovery. 
     DISCLOSURE OF THE INVENTION 
     In accordance with the invention, a control system, supplying command signals to initiate system functions and having means for producing error signals that indicate malfunctions of the system, provides a control signal after a given number of command signals have been supplied. An error counter responds to error signals to provide a count value representing the total number of error signals which have occurred. There is also provided a sensing means that produces a value signal when the error count exceeds a given value. An exception counter is incremented by the control signal whenever the value count signal is present and resets the exception counter when the value signal is not present. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a block diagram illustrating an embodiment of the invention. 
     FIG. 2 is a flowchart outlining the operation according to the invention. 
     FIGS. 3, 4 and 5 are flowcharts showing the details of a program for implementing the invention. 
     FIGS. 6, 7 and 8 are flowcharts showing a second routine for implementing the invention. 
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     Two types of machine failures can be considered--hard failures and soft failures. A hard failure is considered to be of the type which requires an immediate stop of the machine and the intervention of an operator or service personnel to correct the cause before the machine can be restarted. In a copier system, for example, a hard error would be a paper jam which leaves papers in the paper transport path. A soft failure is one which does not require the machine to stop but which allows the machine to continue by retrying the failed event. An example of a soft error is a failure to feed a copy sheet in a copier system, a failure which can be ignored and retried a given number of times. Such an error can be caused by improper paper, improper paper handling such as failure of the operator to align the paper, and so on, and not a malfunction of the machine per se. 
     The logging scheme to be disclosed counts exceptions. The exception count is the number of consecutive times that the error count, accumulated over a given number of operations, exceeds a given criterion. The number of operations is called an accumulation interval and may be different for each error. 
     An error count is provided, of course, for each type of error expected to be encountered or of interest. The errors are not accumulated during maintenance activities unless specifically activated. In one embodiment, it will be seen that when the exception count reaches fifteen, it is frozen. 
     In FIG. 1, a limit register 10 contains the given number of operations over which the errors are to be accumulated. A counter 11 is incremented by each command signal and its count is compared with that of the limit register 10 in a comparator 12. 
     A criterion register 15 holds the criterion value and an error counter 14 accumulates the number of errors associated with the command signal. A second comparator 16 compares the value of the error counter 14 with that of the criterion register 15 and produces an output signal when the error count is not less than the value in the criterion register and another signal when it is. 
     The output signal from the comparator 12 is generated when the command counter value is equal to the value in the limit register 10. The equality signal (control signal) from the comparator 12 primes two AND gates 17 and 18 which have as their other input the two signals from the comparator 16, respectively. 
     If the error count value is not less than the criterion value, the AND gate 18 is activated, incrementing an exception counter 19. If the error counter value is less than the criterion value, the AND gate 17 is activated, clearing the exception counter 19. 
     A delay device 13 provides a reset signal for the command counter 17, and the error counter 14 after each accumulation interval. 
     An exception counter according to the invention has been described in connection with FIG. 1. The logic devices represented by the blocks are commercially available and well known to those of ordinary skill in the art. 
     In a computer controlled environment, however, it is desirable to practice the invention using a general purpose programmed computer or microprocessor. For example, where the machine control is accomplished by a programmed processor, the above-described logging routine according to the invention is preferably practiced using the same processor. 
     FIG. 2 is a flowchart depicting the sequence of steps of the invention. 
     At the step 20, two counters M and N are reset to zero. The counter M represents the command counter and the counter N represents the error counter. At the step 21, a check is made to determine whether a command has issued. If not, the check step is repeated. When a command has been issued, the step 22 is performed which increments the command counter M by a value of one. At the step 23, a determination is made whether an error occurred. If so, at the step 24 the error counter N is also incremented by one. If no error occurred or after the error counter has been incremented, at the step 25, a determination is made whether the command counter value M is equal to a limit value. If not, the program returns to the step 21. If the limit of the command counter M has been reached at the step 25, then at the step 28, a determination is made whether the value of N, the error count, is less than the criterion. If so, then at the step 26, the exception counter is cleared to zero. On the other hand, at the step 28 if the value of the error count N is not less than the criteria, then at the step 27, the exception counter is incremented by a value of one. After the steps 26 and 27, the program returns to the step 20, clearing the command and error counts and repeating the process described above. The program of FIG. 2 is suitable for a single error counter. An actual machine, however, usually requires the logging of several different types of errors. This requires interaction and also requires that the error logging be arranged so that the machine can continue to control the machine. Therefore, the program is divided into two separate routines called CELOG and CEXCHK, the former for logging the errors and the second for maintaining the counts and checking the errors. The first routine, CELOG, is flowcharted in FIGS. 6, 7 and 8 and shown in detail in the following program Table I. 
     Reference &#39;414 shows the details of a microprocessor suitable for incorporating the invention in the form to be described. The reference and the Appendix A provide the necessary detail to enable a person of ordinary skill in the art to practice the invention as disclosed. 
     The CELOG routine logs all the identified machine error conditions into the memory for use by the second routine. The CELOG routine is called with the error number to be logged in the low byte of the accumulator. If logging is active, this number is used to construct the address of the status log control table entry associated with the error number. As noted above, logging is inactive in the CE or maintenance mode unless specifically activated. 
     If the error is a paper handling error, and therefore among the first entries in the table, a counter associated with this error is incremented once for each occurrence of that error in the accumulation period until fifteen occurrences have been logged at which point the counter is frozen. Separate counters are maintained by this program for hard and soft error conditions. 
     If the error is a history error (or in another embodiment, a nonpaper handling error), it is logged in a six-deep history stack, that is, a last-in/first-out register with a maximum of six locations which implies that only the last six errors are available in the stack. The history stack is over-log protected. An error will not be logged two or more times in a row unless there have been fifteen intervening attempts to log that error. The over-log protection is reset when the current error is different from the previous error number. All errors are logged in another six-deep error stack having no over-log protection. The last attempted log error number is always saved even when logging is inactive or if the error number is invalid. 
     If an interrupt occurs during an error log and, during the interrupt another call to the program is made, the first error number is saved and the logging of the original error continues after the interrupt. When the first log is completed, the interrupt error is processed. This interrupt protection is valid only from certain modules which are not essential to an understanding of the invention. 
     The status log control table used with the program to be explained below have entries as follows. In the first byte, the bits zero and one identify counters associated with the error to be logged. Bit two is not used. Bit three is used, when set, to indicate that an alternate criterion byte is available in the memory. That is, more than one criterion can be used, the table entry indicating when the alternate criterion is active. The fourth bit, when set, indicates that an error message associated with the error to be logged is in the special message table. The fifth bit indicates, when set, that the error is a paper handling error; bit six, a soft error; and bit seven, a hard error. 
     The second byte gives the relative address of the error message associated with the error. 
     The third byte is the relative address of the log counter associated with the error. This byte forms the lower byte of the complete address of the counter, the other address portion being supplied by bits zero and one of the first byte as noted above. 
     The fourth byte is divided into two hexadecimal characters, the low order indicating the number of 256 copy attempts between exception updates. The high order hexadecimal digit is the criterion to be used in exception updating, unless an alternate criterion has been specified. If an error can be either hard or soft, the soft error limit and criteria are defined in this byte which apply only to the first (hard) error type. 
     The fifth byte operates the same as the fourth byte except it pertains to the second type of error. 
     The counters in the memory for logging the error occurrences and count exception are organized as follows. The first byte is divided into two hexadecimal digits, the low digit being the exception counter for a soft error and the higher digit being the error occurrence counter for a hard error. Bit three of this byte is set if alternate criterion have been established for the associated error. 
     The second byte is organized the same as the first byte but related to the hard error type. The third byte contains the alternate criterion, the lower hexadecimal digit being the altered criterion for the first error type and the high order digit, for the second error type. 
     The abbreviations used are identified in Appendix B. 
     The reference numerals of the steps in the following flowcharts relate to corresponding line labels in the program tables. The reference numerals in FIGS. 6, 7 and 8 are independent from those in FIGS. 3, 4 and 5. 
     In FIG. 6, the first step 353 of the routine saves the current error number and sets the inhibit interrupt flag. Next, the step 365 tests to determine whether the maintenance mode is active. If so, the step 371 determines whether the error log is to be active. If not, the routine is exited; otherwise, the program resumes at the step 403 where the current error number is transferred to the pending error byte. 
     Next, by the step 411 it is determined whether a log is in progress by checking the pending error register for a nonzero value. If another log is in process, the new error number is saved and the routine is exited; otherwise, the program continues at the step 418 where the inhibit flag is reset and the error number is stored. 
     At the step 456, it is determined whether the error is a paper handling error. If not, then at the step 488, the index is set up for a nonpaper handling error; otherwise, at the step 466, the index is set up for a paper handling error. Next, the step 499 sets the pointer and fetches the flag byte. 
     The connector indicates that the program continues on FIG. 7 where at the step 539 a branch is taken depending on whether the error was a paper handling error. In the case of a paper handling error, the pointer to the error log which was set at the previous step 499, is incremented by the step 548. If this is a hard error and a soft error exists, as determined by the steps 574, the soft error count is decremented and the pointer is advanced to the hard error counter. If the steps tested in the step 574 are not true, the step 590 is skipped and the step 613 is performed to increment the error count. 
     The step 627 determines whether the error count is not greater than fifteen. If so, then at the step 636, the error counter is stored. Thus, if the error count has reached fifteen, the count is frozen. 
     After the error count has been taken care of, the program continues with the step 652 and the previous steps would have been skipped if not a paper handling error as determined by the step 539. The step 652 determines whether the error should be stored in the history file. If not, the program continues at the location indicated in FIG. 8. Otherwise, the history entry is checked by the step 691 to see whether it is the same entry. If not, then by the step 716 the over-log count is cleared to zero; otherwise, at the step 704 the over-log count is decremented. Next, the step 718 clears the upper byte and stores the over-log count. Then the error is pushed onto the stack by the step 732 if the error log count is equal to zero as determined by the step 726. Otherwise, the step is skipped and the program continues as indicated in FIG. 8. 
     If FIG. 8, the step 772 determines whether the present hard error was the same as the preceding soft error. If not, then the step 809 pushes the error on the &#34;last six&#34; stack; otherwise, the step 798 changes the last stack error to a hard error. Next, the step 847 determines whether there is a pending error. If not, the pending error is cleared and the routine is exited. If there is a pending error, then at the step 874 the last call is logged and the routine is exited. 
     
                                           PROGRAM TABLE I: CELOG__________________________________________________________________________STMT    SOURCE STATEMENT__________________________________________________________________________349 CELOG18     DC  *350                        1. DISABLE INTERRUPTS AND351                        SAVE THE CURRENT ERROR                      NUMBER;353       GI  GRP18+INTOFF356       STB LASTCALL358                        1. IF IN (CE MODE -AND- CE359                        ERROR LOGGING HAS BEEN360                        SELECTED) -OR- NOT IN CE                      MODE362       LR  CFLAGS365       TP  CMODEF368       JNZ CELOG18371       TP  CRUN374       JZ  CELOG2378 CELOG18     DC  *380       TRA382       TP  CLOGERS385       BZ  CELOG9387                        1. THEN388                        2. TEST FOR LOG IN PROGRESS389                        AND STORE THE CURRENT390                        ERROR IN THE PENDING                      ERROR BYTE;393 CELOG2     DC  *395       LB  PENDERR398       CI  ZERO401       CLA403       LB  LASTCALL406561       NI  CMSARA3564 STB   PENDERR408                        2. IF THERE IS NO UNDERLYING409                        LOG IN PROCESS411       BNZ CELOG9413                        2. THEN414                        3. ENABLE INTERRUPTS AND415                        SAVE THE ERROR NUMBER;418 CELOG22     DC  *420       GI  GRP18+INTON423       STR DIAGWKO426       TR  HARDERR429       STR DIAGWK2453                        3. IF THE ERROR CORRE-454                        SPONDING TO THE                      NUMBER IS A PAPER                      HANDLING ERROR456       Cl  FIRSTNPH459       BNL CELOG25461                        3. THEN462                        4. CALCULATE THE INDEX463                        TO THE STATUS LOG464                        CONTROL TABLE FOR465                        THIS PAPER HAN-                      DLING ENTRY (5 X                      ERROR# - 5);     STR DIAGWK2466       SHLM         2472       AR  DIAGWK2475       SI  FIVE478       J   CELOG28481                        3. ELSE482                        4. CALCULATE THE INDEX483                        TO THE STATUS LOG484                        CONTROL TABLE FOR485                        THIS NON PAPER HAN-                      DLING ERROR (2 X                      ERR# - 2 + NCC OFF-                      SET);488 CELOG25     DC  *490       SHL492       AI  NPHOFSET-TWO494                        3. ENDIF;495                        3. ADD INDEX TO TABLE START496                        TO GET ENTRY ADDRESS                      FOR THIS CALL;499 CELOG28     DC  *501       STR DIAGWK2503       LA  STATSLOG512       AR  DIAGWK2515       STR DIAGWK2517                        3. GET THE FLAG BYTE;519       LN  DIAGWK2532                        3. SAVE THE FLAG BYTE;534       STB DIAGWKOH536                        3. IF THIS ERROR IS A537                        PAPER HANDLING ERROR539       TP  PAPRERR542       BZ  CELOG4544                        3. THEN545                        4. POINT TO THE ERROR546                        LOG BASIC ADDRESS;548       LR  DIAGWK2551       AI  TWO554       STR DIAGWK2556                        4. CONSTRUCT THE ERROR                      LOG ADDRESS;558       LB  DIAGWKOH561       NI  CISARA3564       TRA566       LN  DIAGWK2569       STR DIAGWK2571                        4. IF THIS IS A HARD572                        ERROR AND A SOFT                      ERROR TABLE ENTRY                      EXISTS574       LR  DIAGWKO577       TP  HARDERR580       JZ  CELOG3583       TRA585       TP  SOFTERR588       JZ  CELOG3590                        4. THEN591                        5. DECREMENT THE SOFT592                        ERROR COUNTER;594       LN  DIAGWK2597       SI  HEX10600       STN DIAGWK2602                        5. INCREMENT THE ERROR603                        COUNT POINTER TO604                        THE HARD ERROR                      (SECOND) COUNTER;606       LRB DIAGWK2608                        4. ENDIF;609                        4. ADD ONE TO THE ERROR610                        COUNTER (HIGH NIP);613 CELOG3     DC  *615       CLA617       LN  DIAGWK2620       AI  HEX10623       TRA624                        4. IF THE COUNT IS LESS625                        THAN OR EQUAL TO 15627       TP  BITO630       BNZ CELOG6632                        4. THEN633                        5. STORE THE INCRE-634                        MENTED ERROR                      COUNTER;636       TRA638       STN DIAGWK2641       B   CELOG6644                        4. ENDIF;645                        3. ELSE646                        4. IF THIS IS A NON-647                        PAPER HANDLING648                        ERROR WHICH IS TO649                        BE LOGGED IN THE                      HISTORY (OVERLOG                      PROTECTED) STACK652 CELOG4     DC  *671       LR  DIAGWKO674       TRA676       TP  HISTERR678       SRG GRP20684       BZ  CELOG6686                        4. THEN687                        5. IF THIS ERROR IS688                        THE SAME AS THE689                        LAST ENTRY IN THE                      HISTORY LOG691       TRA693       CB  EPOLOGIL696       CLA698       JNE CELOG5700                        5. THEN701                        6. LOAD AND DECRE-702                        MENT THE OVER-                      LOG COUNTER;704       LB  OVLOGCNT707       SI708                        5. ELSE709                        6. RETAIN A ZERO710                        COUNT (FROM                      THE PREVIOUS                      CLEAR;711                        5. ENDIF;712                        5. CLEAR THE HIGH NIP713                        AND STORE THE                      OVERLOG COUNT;716 CELOG5     DC  *718       NI  HEXOF721       STB OVLOGCNT723                        5. IF THE CURRENT724                        OVERLOG COUNT IS                      ZERO726       JNZ CELOG6728                        5. THEN729                        6. PUSH THIS ERROR730                        INTO THE HIS-                      TORY STACK;732 CELOGBP     LR  EPOLOG3735       TRA737       LB  EPOLOG2H740       STR EPOLOG3743       LR  EPOLOG2746       TRA748       LB  EPOLOG1H751       STR EPOLOG2754       LR  EPOLOG1757       TRA759       LB  DIAGWKOL762       STR EPOLOG1764                        5. ENDIF;765                        4. ENDIF;766                        3. ENDIF;767                        3. IF THE CURRENT ERROR768                        IS A HARD VERSION OF769                        THE SOFT ERROR                      IMMEDIATELY PRECEDING                      IT772 CELOG6     DC  *773       SRG GRP20779       LR  LASTERR1782       TS  HARDERR785       JNZ CELOG65788       CB  DIAGWKOL791       JNE CELOG65793                        3. THEN794                        4. CHANGE THE LAST795                        LOGGED ERROR (IN796                        THE STACK OF SIX)                      TO A HARD ERROR;798       STR LASTERR1801       J   CELOG7804                        3. ELSE805                        4. PUSH THE ERROR INTO806                        THE LAST SIX                      ERRORS STACK;809 CELOG65     DC  *811       LR  LASTERR3814       TRA816       LB  LASTER2H819       STR LASTERR3822       LR  LASTERR2825       TRA827       LB  LASTER1H830       STR LASTERR2833       LR  LASTERR1836       TRA838       LB  DIAGWKOL841       STR LASTERR1843                        3. ENDIF;844                        3. IF THERE IS A PENDING                      ERROR847 CELOG7     DC  *849       GI  GRP18+INTOFF852       CLA854       LR  DIAGWKO857       CB  PENDERR860       JE  CELOG8862                        3. THEN863                        4. GO TO (CELOG22) LOG864                        THE LAST EMITTER                      CALL BEFORE                      RETURNING;866       B   CELOG22869                        3. ELSE870                        4. CLEAR THE PENDING871                        ERROR/LOG IN                      PROGRESS INDICA-                      TION;874 CELOG8     DC  *876       CLA878       STB PENDERR880                        3. ENDIF;881                        2. ENDIF;882                        1. ENDIF;883                        1. GET INTO REGISTER GROUP884                        3 AND ENABLE INTERRUPTS;887 CELOG9     DC  *889       GI  GRP3+INTON891                        1. IF CALLED BY AN EMITTER                      MODULE892       TPB EMITSTAT,EMITPROC900       JZ  CELOG95902                        1. THEN903                        2. RETURN ON REGISTER 2;905       RTN R2908                        1. ELSE909                        2. RETURN ON REGISTER 0912 CELOG95     DC  *914       RTN R0917                        1. ENDIF;937                        END SEGMENT (CELOG);__________________________________________________________________________ 
    
     In the second routine, the CEXCHK program updates the error criterion exception counters. After every 256 copy attempts, an update of the error log is requested. When a standby state is subsequently entered, this module begins the update procedure. Each zero crossing of the power supply initiates a loop in which a single error log is updated until all the paper handling errors having a criterion have been processed. 
     In an update, the high byte of the copy attempt counter is compared with the update limit which is the number of 256 copy attempts between updates. The counter is divided by the limit and a zero remainder indicates the programmed number of blocks have elapsed and an update is indicated. 
     If an update is indicated, the criterion is fetched, normally from the status log table but it is possible to substitute an alternate criterion which is field programmable into the memory. The presence of the alternate criterion bit in the counter byte causes the alternate criterion to be loaded. 
     The number of errors since the last update is compared to the criterion. If the error count equals or exceeds the criterion, the exception count is incremented by one (up to a limit of fifteen). Otherwise, the exception counter is cleared. In both cases, the current error counter is cleared. If a zero criterion is encountered, then both the exception and error counts are cleared to zero. If the error being updated is of the dual type, both hard and soft, the hard error log is updated immediately after the soft error log. When the second update is completed or if there is only one error type, the module is exited. 
     When all error logs have been updated, the last exception counter is updated and the update request flag, set by the copy attempts counter, is reset. This routine is then bypassed for approximately 256 copy attempts. A copy attempt corresponds to the command described above. 
     The exceptions updating is inhibited when the machine is in the service mode and the service mode is inhibited while exceptions updating is active. 
     The memory counters used to log the errors and count exceptions are organized as follows. The low hexadecimal digit of the first byte is the exception counter for the first type of error and the high digit are the occurrence counters for the first type of error. If bit three is set, then an alternate criterion has been established for this error. The second byte is organized the same as the first byte for a second or hard type error. 
     Byte number three is the alternate criterion for the first error type. 
     The routine is shown in FIGS. 3, 4 and 5 and described in detail in the following program Table II. In FIG. 3, at the step 681, the routine is exited if in the service mode. Next, the step 698 determines whether the routine is in the first pass and, if so, inhibits the service mode by the step 706. 
     If the copies are a multiple of 2 10 , the pointer is initialized to the top of the log table by the step 731 and the step 742 causes the pointer to be advanced until a nonzero entry is found or until the last entry has been found. Then the step 781 clears the entry to zero and initializes the pointer to the status log. Next, the step 812 is performed, the previous steps being skipped if not in the first pass of the program. The step 812 advances the pointer and saves the flag byte. Next, the step 853 determines whether it is a dual type error. If so, it sets a flag indicating the first of two passes by the step 867 and otherwise continues on FIG. 4 as indicated. 
     In FIG. 4, the step 873 sets a first time flag and initializes the pointer to the error log. Next, at the step 915 the pointer is advanced to the criteria, the last exception count is fetched from memory, and the decision flag is cleared. In the step 935, the last update time count is incremented by one and the criterion is fetched. In the step 003, the last update is divided by the update count of the last update and, if the remainder is zero, then the update flag is set by the step 017. Otherwise, the program continues at the step 930 where a comparison is made to determine whether the last update time is equal to the current update count. If not, the program returns to the step 935 described above. If so, the update flag is checked by the step 042. If the update flag is set, then at the step 053, the error count and exception count are fetched from memory and the current error is stored. If the update flag was not set, the program continues at the step 249 which will be described below. 
     Next, at the step 071, it is determined whether an alternate criteria is to be used. If so, the first out of two pass flags is checked by the step 076 to determine whether the hard alternate criteria is to be fetched by the step 111. If the flag is set, the soft alternate criteria is fetched by the step 095. If the flag is reset, the hard alternate criteria is fetched by the step 111. Next, the step 122 determines whether the first time flag is set and if not, justifies the criteria by the step 142. If the alternate criteria is not to be used, then at the step 159, the standard criteria is fetched and the program continues at the decision step 178 which determines whether the criteria is not zero and the error count is not less than the criterion. If so, the exception count is checked to determine whether it is less than fifteen by the step 191. If so, then the exception count is incremented by the step 212. 
     If the criterion is zero or if the error count is less than the criteria, the exception count and the current error count are reset by the step 223. 
     Next, the step 236 is performed which clears the current error count and stores the updated count. Then the step 249 advances the error log pointer and resets the first time flag. Next, the step 270 determines whether all errors have been handled and if not, returns to the step 915 and the process described above is repeated. Otherwise, the program continues as indicated at FIG. 5. 
     In FIG. 5, the step 275 tests whether it is the last entry in the table. If so, then at the step 295 the check exception, the maintenance inhibit and the first pass flags are reset. Then the last exception count is updated and the program is exited at the step 332, the above steps being skipped if the last entry has not been processed as determined by the step 275. 
     
                                           PROGRAM TABLE II: CEXCHK__________________________________________________________________________STMT    SOURCE STATEMENT__________________________________________________________________________661 CEXCHK DC  *679                           2. IF NOT IN CE MODE (RUN                         OR STANDBY)681        TRA683        TP  CMODEF686        BNZ CEXCHKX689        TP  CRUN692        BNZ CEXCHKX694                           2. THEN695                           3. IF THIS IS THE FIRST696                           PASS THROUGH EXCEP-                         TION CHECKING698        TS  CFIRCOM701        BNZ CEXCHK10703                           3. THEN704                           4. INHIBIT CE MODE;706        STR CFLAGS         29/34708        TSB CFLAG3,CEINHBIT                         29/34717                           4. IF THIS UPDATE IS718                           OCCURRING ON AN                         INTEGER MULTIPLE                         OF 1024 COPIES720        LB  EXCYCLEH723        NI  HEX03726        BNZ CEXCHK7728                           4. THEN729                           5. LOAD THE ADDRESS730                           OF THE END OF                         THE NPH SCAN                         TABLE;731        LA  NPHLGTAB+5740        STR R10WK742                           5. REPEAT743                           6. ACCESS (IN744                           DECENDING                         ORDER) ENTRIES                         IN THE NPH LOG;747 CEXCHK5      DC  *749        LI  HEX02752        TRA754        LN  R10WK757        STR DIAGWK5760        LN  DIAGWK5762                           5. UNTIL THE ENTRY763                           IS NON ZERO OR764                           THE ENTIRE LOG                         HAS BEEN SCANNED766        CI  ZERO769        JNE CEXCHK6772        LRD R10WK775        CIL NPHLGTAB-1778        JNE CEXCHK5780                           5. ENDREPEAT;781                           5. ZERO THE ADDRESSED                         LOG ENTRY;784 CEXCHK6      DC  *786        CLA788        STN DIAGWK5790                           4. ENDIF;791                           4. INITIALIZE THE STATUS792                           LOG TABLE POINTER;795 CEXCHK7      DC  *796        LA  STATSLOG-FIVE805        STR R10WK807                           3. ENDIF;808                           3. ADVANCE THE STATUS LOG809                           TABLE POINTER TO THE                         NEXT ENTRY;812 CEXCHK10      DC  *814        LR  R10WK817        AI  FIVE820        STR R10WK822                           3. FETCH AND STORE THE823                           FLAG BYTE OF THE                         CURRENT TABLE ENTRY;825        STR DIAGWK4828        LN  DIAGWK4831        STR DIAGWK1849                           3. IF THERE ARE TWO850                           ERRORS (HARD AND851                           SOFT) ASSOCIATED                         WITH THIS TABLE                         ENTRY853        OI  P0(HARDERR,SOFTERR)858        LB  CFLAG3861        BNL CEXCHK15863                           3. THEN864                           4. FLAG A FIRST PASS865                           OF TWO CONDITION;867        TS  CEX10F2869                           3. ENDIF;870                           3. SET A FIRST PASS;873 CEXCHK15      DC  *875        TS  CEXPASS1878        STB CFLAG3880                           3. FETCH THE BASE ADDRESS881                           OF THE FIRST ERROR                         LOG;883        LR  DIAGWK4886        AI  TWO889        STR DIAGWK4892        LN  DIAGWK4894                           3. CONSTRUCT THE COMPLETE895                           FIRST ERROR LOG                         ADDRESS;897        TRA899        LB  DIAGEK1L902        NI  CMSARA3905        TRA907        STR DIAGWK3909                           3. REPEAT910                           4. POINT TO THE APPRO-911                           PRIATE CRITERION912                           ENTRY IN THE STA-                         TUS LOG TABLE;915 CEXCHK20      DC  *917        LRB DIAGWK4919                           4. LOAD THE LAST920                           EXCEPTIONS CHECK921                           COUNT AND CLEAR                         THE DECISION FLAG;923        CLA925        LB  LASTEXCY928        STR DIAGWK5930                           4. REPEAT931                           5. BUMP THE LAST932                           UPDATE TEMPO-                         RARY COUNTER;935 CEXCHK25      DC  *937        LRB DIAGWK5939                           5. STORE THE COUNT940                           IN THE DIVIDEND                         REGISTER;942        TRA944        LI  ZERO947        TRA948        SRG GRP19954        STR DIVIDEND956                           5. FETCH THE CRITERION                         BYTE;957        SRG GRP18963        LN  DIAGWK4965                           5. RETAIN THE CRITERION966                           UPDATE LIMIT ONLY;968        NI  HEX0F970                           5. CALL (DIVIDE) DIVIDE971                           THE COPY COUNT972                           (HIGH BYTE) BY                         THE UPDATE LIMIT;973        SRG GRP3979        BAL R0,DIVIDE981                           5. RESET THE PROCESS                         MONITOR983        GI  GRP0+INTOFF986        LB  INTOUTM989        TS  PROCCLR992        STB INTOUT995        TR  PROCCLR998        STB INOUT000                           5. IF THE REMAINDER001                           AFTER DIVISION                         IS ZERO003        GI  GRP18+INTON006        LB  REMAINDL009        CI  ZERO012        JNE CEXCHK30014                           5. THEN015                           6. FLAG A DECISION                         TO UPDATE;017        LI  P(BIT7)        19/3021        STB DIAGWK5H023                           5. ENDIF;024                           4. UNTIL THE LAST UP-025                           DATE COUNTER EQUALS026                           THE CURRENT UP-                         DATE COUNTER029 CEXCHK30      DC  *031        LR  DIAGWK5034        CB  EXCYCLEH037        BNE CEXCHK25039                           4. ENDREPEAT;040                           4. IF AN UPDATE IS                         INDICATED042        TRA044        TP  BIT7047        BZ  CEXCHK65049                           4. THEN050                           5. FETCH THE ERROR051                           AND EXCEPTION                         COUNTERS;053        LN  DIAGWK3055                           5. STORE THE CURRENT056                           ERROR COUNTER                         ONLY (HIGH NIP);058        SHR                19/3060        NI  (HEXF0+ALTCRITM)                         19/3063        TR  ALTCRIT-1066        STR DIAGWK1068                           5. IF AN ALTERNATE069                           CRITERION IS                         BEING USED071        BZ  CEXCHK45073                           5. THEN074                           6. IF THIS IS A075                           FIRST PASS OF                         TWO THROUGH                         THE UPDATE                         LOOP076        TPB CFLAG3,CEX10F2084        LR  DIAGWK3087        JZ  CEXCHK35089                           6. THEN090                           7. POINT TO THE091                           ALTERNATE092                           CRITERION093                           BYTE (TWO                         ABOVE THE                         CURRENT                         TABLE                         POINTER);095        AI  TWO098        STR DIAGWK2101        J   CEXCHK40104                           6. ELSE105                           7. POINT TO THE106                           ALTERNATE107                           CRITERION BYTE108                           (ONE ABOVE                         THE CURRENT                         TABLE POINT-                         ER);111 CEXCHK35      DC  *113        AI115        STR DIAGWK2117                           6. ENDIF;118                           6. TEST FOR SECOND119                           PASS THROUGH                         THE UPDATE                         LOOP;122 CEXCHK40      DC  *124        LB  CFLAG3127        TP  CEXPASS1129                           6. LOAD THE ALTERNATE130                           CRITERION BYTE;132        LN  DIAGWK2134                           6. IF THIS IS THE135                           SECOND PASS                         THROUGH THE                         UPDATE LOOP137        JNZ CEXCHK50139                           6. THEN140                           7. LEFT JUSTIFY141                           THE FIRST PASS                         ALTERNATE                         CRITERION;142        SHLM          4150        J   CEXCHK50153                           6. ENDIF;154                           5. ELSE155                           6. LOAD THE STAN-156                           DARD CRITE-                         RION FOR THIS                         ERROR;159 CEXCHK45      DC  *161        LN  DIAGWK4163                           5. ENDIF;164                           5. RETAIN THE CRITE-165                           RION COUNT ONLY                         (HIGH NIP);168 CEXCHK50      DC  *170        SHR172        NI  HEXF0/2174                           5. IF THE CRITERION175                           IS NOT ZERO AND176                           THE ERROR COUNT                         EQUALS OR EXCEEDS                         THE CRITERION178        JZ  CEXCHK55181        CB  DIAGWK1L184        BH  CEXCHK55186                           5. THEN187                           6. IF THE EXCEP-188                           TION COUNTER                         IS NOT FULL                         (LESS THAN 15 )191 CEXCHK52      DC  *193        LN  DIAGWK3196        NI  HEX0F-ALTCRITM199        LN  DIAGWK3201        JL  CEXCHK60208                           6. THEN209                           7. INCREMENT THE210                           EXCEPTION                         COUNTER;212        AI214        J   CEXCHK60217                           6. ENDIF;218                           5. ELSE219                           6. CLEAR THE220                           CURRENT ERROR                         AND EXCEPTION                         COUNTERS;223 CEXCHK55      DC  *225        LN  DIAGWK3228        NI  P(ALTCRIT)231                           5. ENDIF;232                           5. CLEAR THE CURRENT233                           ERRORS COUNTER                         (HIGH NIP);236 CEXCHK60      DC  *238        NI  HEX0F240                           5. STORE THE UP-                         DATED COUNTER;242        STN DIAGWK3244                           4. ENDIF;245                           4. ADVANCE THE ERROR246                           LOG COUNTER TO                         THE NEXT ENTRY;249 CEXCHK65      DC  *251        LRB DIAGWK3253                           4. RESET THE PASS 1                         FLAG;255        LB  CFLAG3258        TR  CEXPASS1260                           3. UNTIL ALL EROORS HAVE                         BEEN UPDATED262        TR  CEX1OF2265        STB CFLAG3268        BNZ CEXCHK20270                           3. ENDREPEAT;271                           3. IF THE LAST TABLE ENTRY272                           (HAVING A CRITERION)                         HAS BEEN PROCESSED275 CEXCHKD1      DC  *276        LA  STARTNPH-FIVE285        SR  R10WK288        JNE CEXCHKX290                           3. THEN291                           4. RESET THE CHECK292                           EXCEPTIONS,INHIBIT293                           CE MODE,AND FIRST                         ENTRY COMPLETE                         FLAGS;295        LR  CFLAGS298        TR  CFIRCOM301        TRA303        TR  CKEXCP306        TRA308        STR CFLAGS310        TRB CFLAG3,CEINHBIT319                           4. UPDATE THE LAST320                           EXCEPTIONS CHECK                         COUNTER;322        LB  EXCYCLEH325        STB LASTEXCY327                           3. ENDIF;328                           2. ENDIF;329                           1. ENDIF;332 CEXCHKX      DC  *333                           END SEGMENT (CEXCHK);__________________________________________________________________________ 
    
     
                                           APPENDIX A__________________________________________________________________________INSTRUCTION    HEXMNEMONIC VALUE         NAME     DESCRIPTION__________________________________________________________________________AB       A4   Add Byte Adds addressed operand to ACCAI       AC   Add Immed.                  Adds address field to ACCAR       DN   Add Reg. Adds N-th register to ACCA1       2E   Add One  Adds 1 to ACCB        24,28,2C         Branch   Branch to LSB (+256,-256,±0)BAL      30-33         Branch And                  Used to call subroutines         LinkBE       35,39,3D         Branch Equal                  Branches if EQ setBH       36,3A,3E         Branch High                  Branch if EQ and LO are resetBNE      34,38,3C         Branch Not                  Branch if EQ reset         EqualBNL      37,3B,3F         Branch Not Low                  Branch if LO resetCB       A0   Compare Byte                  Addressed byte compared to ACCCI       A8   Compare Immed.                  Address field compared to ACCCLA      25   Clear Acc.                  ACC reset to all zeroesGI       A9   Group Immed.                  Selects one of 16 register                  groupsIC       2D   Input Carry                  Generate carry into ALUIN       26   Input    Read into ACC from addressed                  deviceJ        0N,1N         Jump     Jump forward or back using                  N-th registerJE       4N,5N         Jump Equal                  Jump if EQ setJNE      6N,7N         Jump Not Equal                  Jump if EQ resetLB       A6   Load Byte                  Load addressed byte into ACCLDR      FN   Load/Decr.Reg.                  Load reg. N and decrement                  (N=0-3.8-B)LI       AE   Load Immed.                  Load address field into ACCLN       98-9F         Load Indirect                  Load byte addressed by reg.                  N into ACCLR       EN   Load Register                  Load register N into ACCLRB      FN   Load Reg./                  Load reg. N and increment         Bump     (N=4-7,C-F)NB       A3   And Byte AND addressed byte into ACCNI       AB   And Immed.                  AND address field into ACCOB       A7   Or Byte  OR addressed byte into ACCOI       AF   Or Immed.                  OR address field into ACCOUT      27   Output   Write ACC to addressed deviceRTN      20-23         Return   Used to return to calling                  program (See BAL.)SB       A2   Subtract Byte                  Subtract addressed byte from                  ACCSHL      2B   Shift Left                  Shift ACC one bit leftSHR      2F   Shift Right                  Shift ACC one bit rightSI       AA   Subtract Subtract address field from         Immed.   ACCSR       CN   Subtract Reg.                  Subtract reg. N from ACCSTB      A1   Store Byte                  Store ACC at addressSTN      B8-BF         Store Indirect                  Load ACC at address in reg.STR      8N   Store Reg.                  Store reg. N at addressS1       2A   Subtract One                  Subtract 1 from ACCTP       9N   Test/Preserve                  Test N-th bit in ACC (N=0-7)TR       BN   Test/Reset                  Test and reset N-th bit in                  ACCTRA      29   Transpose                  Interchange high and low ACC                  bytesXB       A5   XOR Byte Exclusive OR addressed byte                  into ACCXI       AD   XOR Immed.                  Exclusive OR address field                  into ACC__________________________________________________________________________ Notes: ACC (Accumulator) is 16bit output register from arithmeticlogic unit  all single byte operations are into low byte  all byte and immediate operations are single byte operations  register operations are 16bit (twobyte) EQ (equal) is a flag which is set: if ACC=0 after register AND or XOR operations; if ACC (low byte)=0 after single byte operation; if a tested bit is 0; if bits set by OR were all 0&#39;s; if input carry = 0; if compare operands are equal; if bit shifted out of ACC = 0; if 8th bit of data during IN or OUT = 0. LO (low) is a flag which is set: (always reset by IN, OUT, IC) if ACC bit 16=1 after register operation; if ACC bit 8=1 after single byte operations; if logic operation produces all ones; if all bits other than tested bit = 0; if ACC=0 after shift operation; if compare operand is greater than ACC low byte. 
    
     
         __________________________________________________________________________MACROMNEMONIC   NAME      DESCRIPTION__________________________________________________________________________BC      Branch on Carry             Branches if carry is setBL      Branch on Low             Branches if LO is setBNC     Branch Not Carry             Branches if carry is resetBNZ     Branch Not Zero             Branches if previous result was             not zeroBR      Branch via Reg-             Same as RTN instruction   isterBU      Branch Uncondi-             Same as BAL instruction   tionallyCIL     Compare Immed.             Uses low byte of indicated constant   Low       in CI address fieldDC      Define Constant             Reserves space for constantJC      Jump on Carry             See BCJL      Jump on Low             See BLJNC     Jump on No Carry             See BNCLA      Load Address             Generates sequence LIH, TRA, LILLRD     Load Reg. and             Same as LDR instruction   DecrementLIH     Load Immed. High             Uses high byte of constant in LI             address fieldLIL     Load Immed. Low             Uses low byte of constant in LI             address fieldNOP     No Operation             Dummy instruction - skippedRAL     Rotate and Add             Generates sequence SHL, IC, A1   LeftSHLM    Shift Left Mul-             Shifts specified number of times   tiple     to leftSHRM    Shift Right Mul-             Shifts specified number of times   tiple     to rightSRG     Set Register             Same as GI   GroupTPB     Test &amp; Preserve             Generates sequence LB, TP   BitTRB     Test &amp; Reset             Generates sequence LB, TR, STB   BitTRMB    Test &amp; Reset             Same as TRB but specifies multiple   Multiple Bits             bitsTS      Test and Set             Same as OI instructionTSB     Test &amp; Set Byte             Same as TS but byte is specified in             addition to bitTSMB    Test &amp; Set Mul-             Same as TS but specifies multiple   tiple Bytes             Bits__________________________________________________________________________ NOTES: (Label) DC * causes the present location (*) to be associated with the label. L and H, in general, are suffixes indicating low or high byte when 16 bit operands are addressed. 
    
     
                       APPENDIX B______________________________________ Abbreviations used:Operational (lower case)    advance    b     increment (bump)    c     clear, zero    d     decrement (-1)    f     fetch, get    g     gate    i     initialize    p     store, put    r     reset    s     set    u     updateIdentifiers (upper case)CER    current error    CUP     current update    CT     count    CTR     counter    DIAGWD0     low byte error number    DIAGWK1     used initially as flag byte from status log control      table and subsequently as the current error      counter    DIAGWK2     status log table address    DIAGWK3     counter address    DIAGWK4     memory byte: current line of status log control      table    DIAGWK5     two-byte storage used as last exceptions update      count (low byte) and update decision flag (high      byte)    ENB     enable    ERR     error    EXC     exception    EXCYCEH     high byte of two-byte cycle counter    FL     flag    HERR     hard error    INH     inhibit    LUT     last update temporary    LXCK     last exception check    NPH(ERR)     nonpaper handling (error)    PEB     pending error byte    PH(ERR)     paper handling (error)    R10WK     address of first entry in status log control table      corresponding to present error    SERR     soft error    UPD     update    UPL     update limit    1/2PASS     first of two passes______________________________________ 
    
     Various modifications to the systems and procedures described and illustrated to explain the concepts and modes of practicing the invention can be made by those of ordinary skill in the art while remaining within the principles and scope of the invention as expressed in the appended claims.