*DECK REC 
          IDENT  P.REC
          SST    FL 
          SYSCOM B1 
          LIST   F
          ENTRY  P.DER
          ENTRY  P.EER
          TITLE  PASCAL-6000 REPRIEVE INTERFACE.
          COMMENT PASCAL-6000 REPRIEVE INTERFACE. 
          COMMENT COPYRIGHT (C) UNIVERSITY OF MINNESOTA - 1983. 
 REC      SPACE  4,10 
***       PASCAL-6000 REPRIEVE INTERFACE. 
*         ADAPTED FROM PSYSTM BY
*         JIM MINER.         1983-12-15.
*         DAVE BIANCHI.      1984-01-03.
 REC      SPACE  4,10 
***       PASCAL-6000 REPRIEVE INTERFACE. 
* 
*         THIS PACKAGE, WHEN INITIALIZED BY A CALL TO P.EER,
*         PROCESSES ERRORS DETECTED BY THE SYSTEM AND TRANSFERS 
*         TO P.SABRT WITH AN APPROPRIATE ERROR MESSAGE. 
* 
*         UNDER NOS, NOS/BE, AND SCOPE 3.4, THIS PACKAGE USES THE 
*         *RECOVR* MACRO IN ORDER TO ALLOW ERROR RECOVERY BY OTHER
*         PACKAGES IN THE SAME PROGRAM. 
 COMSPAS  SPACE  4
*CALL,COMSPAS 
 REC      TITLE  ROUTINES.
***       P.DER - DISABLE ERROR RECOVERY. 
* 
*         EXIT   ERROR REPRIEVE (ENABLED BY P.EER) IS DISABLED. 
*                A0, B4, B5, AND B6 UNCHANGED.
*                (B1) = 1.
* 
*         USES   ALL REGISTERS. 
* 
*         CALLS  P.RPE, P.SPE.
* 
*         MACROS RECOVR 
  
  
 DER      PS
 P.DER    EQU    DER
          RJ     =XP.SPE     SAVE PASCAL ENVIRONMENT
          RECOVR HRE,0,0
          RJ     =XP.RPE     RESTORE PASCAL ENVIRONMENT 
          EQ     DER
 EER      SPACE  4,10 
***       P.EER - ENABLE ERROR RECOVERY.
* 
*         EXIT   REPRIEVE PROCESSING STARTED. 
*                A0, B4, B5, AND B6 UNCHANGED.
*                (B1) = 1.
* 
*         USES   ALL REGISTERS. 
* 
*         CALLS  P.RPE, P.SPE.
* 
*         MACROS RECOVR 
  
  
 EER      PS
 P.EER    EQU    EER
          RJ     =XP.SPE     SAVE PASCAL ENVIRONMENT
          RECOVR HRE,37B,HRELWA 
          RJ     =XP.RPE     RESTORE PASCAL ENVIRONMENT 
          EQ     EER
 HRE      SPACE  4,12 
**        HRE - HANDLE REPRIEVED ERROR. 
* 
*         ENTRY  (X1) = ADDRESS OF EXCHANGE PACKAGE.
*                IF MODE ERROR (ERROR CODE = 2) THEN
*                      (0) = 6/, 6/M, 18/A, 6/E, 24/
*                            E = ERROR FLAG.
*                            M = CPU ERROR EXIT MODE. 
*                            A = ERROR ADDRESS. 
* 
*         EXIT   TO P.SABRT 
*                (X0) = MESSAGE ADDRESS.
*                (A0) RESTORED FROM EXCHANGE PACKAGE. 
*                (B1) = 1.
*                (B5) RESTORED FROM EXCHANGE PACKAGE. 
*                B4 AND B6 INDETERMINATE. 
* 
*         USES   ALL REGISTERS. 
* 
*         CALLS  P.CAD, P.SABRT, P.RPE. 
  
  
 HRE      PS
          SB1    1           RESTORE B1 
          SA3    X1+5 
          SA2    X1          GET ERROR CODE, A0, AND P-REGISTER 
          SB5    X3          RESTORE B5 
          BX1    X2 
          AX1    18 
          SA0    X1          RESTORE A0 
          SX2    X2          ERROR CODE 
          AX1    18          POSITION P-REGISTER
          LX0    B1,X2
          SX3    X2-2 
          SX0    X0+HREE-2   SET MESSAGE ADDRESS
          NZ     X3,HRE1     IF NOT CPU ERROR EXIT
          SA1    B0          FETCH RA 
          BX2    X1 
          AX1    30          POSITION ERROR ADDRESS 
          LX2    59-50       POSITION INDEFINITE STATUS BIT 
          LX3    B1,X2       POSITION INFINITE STATUS BIT 
          LX4    B1,X3       POSITION ADDRESS OUT OF RANGE STATUS BIT 
          SX0    HREB        EXPRESSION OVERFLOW/UNDERFLOW
          NG     X3,HRE1
          SX0    HREC        UNDEFINED VALUE IN EXPRESSION
          NG     X2,HRE1
          SX0    HREA        ADDRESS OUT OF RANGE 
          NG     X4,HRE1
          SX0    HREEA       CPU ERROR EXIT 0 
 HRE1     SA5    =XP.GLOBL+FORT  CHECK FORTRAN CALL FLAG
          PL     X5,=XP.SABRT  IF NOT FTN CALL
          RJ     =XP.RPE     RESTORE PASCAL ENVIRONMENT 
          RJ     =XP.CAD     CONVERT ADDRESS TO DISPLAY 
          SX3    HRED        * AT XXXXXXB IN FORTRAN PROC.* 
          MX2    -6*6 
          SA4    X3 
          LX3    30 
          BX4    X2*X4       REMOVE XXXXXX
          IX0    X0+X3       SET BOTH MESSAGES
          BX6    -X2*X6      REMOVE BLANKS
          IX7    X4+X6
          SA7    A4 
          EQ     =XP.SABRT   EXIT TO COMMON ERROR ROUTINE 
  
  
 HREA     DATA   C* ADDRESS OUT OF RANGE.*
 HREB     DATA   C* UNDEFINED VALUE IN EXPRESSION. *
 HREC     DATA   C* EXPRESSION UNDERFLOW/OVERFLOW. *
 HRED     DATA   C* AT XXXXXXB IN FORTRAN PROC.*
  
 HREE     BSS    0
  
          DATA   C* TIME LIMIT.      *     ERROR CODE 01B 
 HREEA    DATA   C* CPU ERROR EXIT 0.*     ERROR CODE 02B 
          DATA   C* PP ABORT.        *     ERROR CODE 03B 
          DATA   C* CP ABORT.        *     ERROR CODE 04B 
          DATA   C* PP CALL ERROR.   *     ERROR CODE 05B 
          DATA   C* OPERATOR DROP.   *     ERROR CODE 06B 
          DATA   C* OPERATOR KILL.   *     ERROR CODE 07B 
          DATA   C* OPERATOR RERUN.  *     ERROR CODE 10B 
          DATA   C* CONTROL STMT ERR.*     ERROR CODE 11B 
          DATA   C* ECS PARITY ERROR.*     ERROR CODE 12B 
          DATA   C* ERROR CODE 13B.  *     ERROR CODE 13B 
          DATA   C* ERROR CODE 14B.  *     ERROR CODE 14B 
          DATA   C* AUTO-RECALL ERROR*     ERROR CODE 15B 
          DATA   C* HUNG IN AUTO-RCL.*     ERROR CODE 16B 
          DATA   C* MS LIMIT.        *     ERROR CODE 17B 
          DATA   C* PP NAME ERROR.   *     ERROR CODE 20B 
          DATA   C* I/O TIME LIMIT.  *     ERROR CODE 21B 
 HRE      SPACE  4
**        HRELWA - END OF CHECKSUM AREA FOR REPRIEVE. 
  
  
 HRELWA   EQU    *-1         LWA OF ERROR HANDLER FOR CHECKSUM
  
          END 
