*COMDECK PBWRAPSNA
_$J+? 
_*****************************
*                            *
*         PBWRAPSNAP         *
*  SNAP TO WRAP-AROUND AREA  *
*                            *
*****************************?
_$R+,G+,I-   RECURSIVE
             INTERRUPTABLE ?
_***********************************************************************
**OVERVIEW- PBWRAP IS A SYSTEM DEBUG AID WHICH ALLOWS THE USER         *
*           TO SNAPSHOT UP TO J1SNAPMAX AREAS TO A USER SPECIFIED      *
*           WRAP-AROUND SAVE AREA.  THIS AREA CAN THEN BE PERIODICALLY *
*           DISPLAYED.                                                 *
*                                                                      *
**INPUT-  THE GLOBAL ARRAY JFWRAP, CONTAINING THE WRAP BASE ADDRESS    *
*         AND LENGTH. ALSO, THE AREAS TO SNAP IN A SNAPSHOT TABLE      *
*         OF TYPE JFSNPTBLE.                                           *
*                                                                      *
**OUTPUT-  THE SPECIFIED AREAS ARE MOVED INTO THE WRAP AREA.           *
*                                                                      *
**EXTERNAL SUBROUTINES- NONE                                           *
*                                                                      *
**NOTE- A NEW SW COMMAND MUST BE ISSUED BEFORE RE-STARTING             *
*       A WRAP-SNAP.                                                   *
*                                                                      *
***********************************************************************?
PROCEDURE PBWRAPSNAP(VAR CONTENTS : JFSNAPTABLE;
                     VAR WRAPAREA : JFWRAP);
VAR I : INTEGER;         _ INDEX INTO SNAP TABLE    ? 
    TEMP : B0OVERLAY; 
    ADDR : B018BITS;
BEGIN 
  I := 1;                                        _ INITIALIZE INDEX    ?
  WITH WRAPAREA DO
  WHILE (DELIM " CONTENTS[I].JFBEGINADDR.B0DELIM) & 
        (J1SNAPMAX \ I) DO
  BEGIN                                          _ LOOP THRU SNAP TBLE ?
    ADDR := CONTENTS[I].JFBEGINADDR;
    PB18ADD(MINUSONE,ADDR); 
    REPEAT                                       _ LOOP THRU SNAP TABLE?
      PB18ADD(ONE,ADDR);                         _ INCR SNAP ADDR      ?
      PB18BITS(ADDR,TEMP.BAINT,J0GET);           _ GET SNAP CONTENTS   ?
      PB18BITS(JFWAREA,TEMP.BAINT,J0LOAD);       _ STORE INTO WRAP AREA?
      PB18ADD(ONE,JFWAREA);                      _ INCR WRAP ADDRESS   ?
      IF PB18COMP(JFWAREA,J0GR,JFWEND)           _-CHECK FOR END OF    ?
      THEN JFWAREA := JFWBASE;                   _-WRAP AREA           ?
    UNTIL PB18COMP(ADDR,J0EQ,CONTENTS[I].        _ END OF 1 SNAP ENTRY ?
                             JFENDADDR);
      I := I+1                                   _ INCR TO NEXT SNAP   ?
    END 
END; _PBWRAPSNAP? 
