- Abort (A): Terminate the operation/program and return to the system command prompt. In hindsight this was not a good idea as the program would not do any cleanup (such as completing writing of other files). “Abort” was necessary because early DOS did not implement “Fail”. It may have remained necessary for poorly written software for which “Fail” would have caused a loop that would have repeatedly invoked the critical error handler with no other way to exit.
- Retry (R): DOS would attempt the operation again. “Retry” made sense if the user could rectify the problem. To continue the example above, if the user simply forgot to close the drive latch, they could close it, retry, and the system would continue where it left off.
- Ignore (I) (older versions of DOS): Return success status to the calling program/routine, despite the failure of the operation. For instance, a disk read error could be ignored and DOS would return whatever data was in the read buffer, which might contain some of the correct data from the disk. Attempting to use results after an “Ignore” was an undefined behavior. “Ignore” did not appear in cases where it was impossible for the data to be used; for instance, a missing disk could not be ignored because that would require DOS to construct and return some kind of file descriptor that worked in further “read” calls. This is not available if DOS cannot read any sector from the first sector of a floppy disk or a partition of a hard disk to the last sector of the root directory.
- Fail (F) (DOS 3.3 and later): Return failure status to the calling program/routine. “Fail” returned an error code to the program, similar to other errors such as file not found. The program could then gracefully recover from the problem.
In the lines above replace DOS with LOVER, and you have the algorithm