*COMDECK PBTOPHAT 
_$J+  PAGE EJECT? 
_*****************************
*                   11/15/78 *
*          PNDSTAT           *
*   CALLS DUMP STATISTICS    *
*   SERVICE MODULE ROUTINE   *
*                            *
*****************************?
_$R-,G-,I+  NON-RECURSIVE 
            NON-INTERRUPTABLE?
_***********************************************************************
*                                                                      *
**OVERVIEW - THIS ROUTINE MUST REMAIN IN ABSOLUTE(BASE) MEMORY         *
*            TO TRANSFER CONTROL TO PGDSTAT ROUTINE.                   *
*            PGDSTAT - SERVICE MODULE ROUTINE TO DUMD STATISTICS.      *
*                                                                      *
**INPUT    - LINE CONTROL BLOCK POINTER                               * 
*                                                                      *
**OUTPUT   - NONE.                                                     *
*                                                                      *
**EXTERNAL SUBROUTINE CALL                                             *
*            PBRDPGE   - READS DYNAMIC PAGE REGISTER.                  *
*            PBPSWITCH - PERFORM PAGE SWITCH.                          *
*            PGDSTAT - DUMP LINE STATISTICS                           * 
*                                                                      *
***********************************************************************?
PROCEDURE PNDSTAT (ADDR : B0BUFPTR);
  
VAR 
      DYNPAGE : INTEGER;                    _SAVE PAGE VALUE OF CALLER ?
BEGIN 
  PBRDPGE(DYNPAGE);                         _READ CURRENT DYNAMIC PAGE ?
  PBPSWITCH(BPGSWITCH[P1PNDSTAT]);          _SWITCH TO PROGRAM PAGE    ?
  PGDSTAT (ADDR);                           _CALL PROGRAM              ?
  PBPSWITCH(DYNPAGE);                       _RETURN SAVED DYNAMIC PAGE ?
END;  _ PNDSTAT ? 
_$J+  PAGE EJECT? 
_*****************************
*                   11/15/78 *
*          PBHALT            *
*        SYSTEM HALT         *
*                            *
*****************************?
_$R-,G-,I+  NON-RECURSIVE 
            NON-INTERRUPTABLE?
_***********************************************************************
*                                                                      *
** OVERVIEW - THIS ROUTINE MUST REMAIN IN ABSOLUTE (BASE) MEMORY TO    *
*             TRANSFER CONTROL TO PGHALT.  ALTHOUGH PBHALT IS CALLED   *
*             WITH A PARAMETER (THE HALT CODE), THE PROCEDURE HEADER   *
*             CONTAINS NO PARAMETERS.  THUS TYPE-CHECKING IS DEFEATED  *
*             FOR PBHALT.  THIS TECHNIQUE ALLOWS REGISTERS TO BE       *
*             STORED UPON ENTRY WITHOUT CORRUPTION AS THE PASCAL       *
*             GENERATED ENTRY CODE USES THE A AND Q REGISTERS.         *
*                                                                      *
** INPUT    - HALT CODE.                                               *
*                                                                      *
** OUTPUT   - 1700 REGISTERS SAVED.                                    *
*                                                                      *
** EXTERNAL SUBROUTINES -                                              *
*             PBRDPGE   - READ DYNAMIC PAGE REGISTER.                  *
*             PBPSWITCH - PERFORM PAGE SWITCH.                         *
*             PGHALT    - SYSTEM HALT.                                 *
*                                                                      *
***********************************************************************?
PROCEDURE PBHALT; 
  
VAR 
      HALTSAVE : B0REGPTR;                  _ SAVE ADDRESS FOR REGS    ?
      HALTED   : INTEGER;                   _ SAVE FOR HALT CODE       ?
  
VALUE 
      HALTSAVE = $28;                       _ REG SAVE ADDRESS         ?
  
BEGIN 
  STREGS (HALTSAVE);                        _ SAVE THE CURRENT REGS    ?
  INST ($E400,PBHALT,                       _ LDQ   RETURN ADDRESS     ?
        $E600,$0000,                        _ LDQ   ADDRESS OF CODE    ?
        $C600,$0000,                        _ LDA   Q,0 - HALT CODE    ?
        $6400,HALTED);                      _ STA   SAVE HALT CODE     ?
  INST ($5400,PBRDPGE,$002F);               _ SAVE BASE PAGE ADDRESS   ?
  PBPSWITCH (BPGSWITCH[P1PBHALT]);          _ SET PGHALT PAGE REG      ?
  RETADR (B0ORGHALT);                       _ SAVE CALLERS RETURN      ?
  PGHALT (HALTED);                          _ CALL MAIN HALT ROUTINE   ?
END;  _ PBHALT ?
