         SYSTEM   SIG9P                                                         
         SYSTEM   OPTIONS                                                       
*                                                                               
*                                                                               
         DEF      CRASH                                                         
         REF      CRASHRES,SEEKADDR,OCDCT                                       
         DO1      #SIGMA9                                                       
          REF      LASTPRTY                                                     
*                                                                               
OLAYFLAG EQU      'CRSH'                                                        
         SYSTEM   CPRMON                                                        
         TITLE    '** CRASH -**'                                                
*                                                                               
* CRASH ENTRY                                                                   
*                                                                               
CRASH    RES      0                 ENTER HERE FOLLOWING CRASH SETUP            
         DO       #550                                                          
         LI,R1    12                                                            
         RD,R2    X'9000',R1        READ CONFIGURATION PANELS                   
         STW,R2   FIGPANEL,R1       SAVE IT                                     
         AI,R1    -1                                                            
         BGEZ     %-3               LOOP THROUGH ALL 12 POSSIBLE PANELS         
         FIN      #550                                                          
         RD,R0    0                                                             
         STCF     SENSESW           SAVE SENSE SWITCH SETTINGS                  
*                                                                               
         DO       #LN                                                           
         LH,R7    DCT1              # OF REAL DEVICES                           
         CH,R7    DCT7              ARE THERE ANY TERMINALS                     
         BE       HIOTJE1           NO                                          
*                                   YES                                         
         LI,R7    0                 COC INDEX                                   
HIOTJE   LH,R6    COH:DN,R7         GET COC ADDRESS                             
         HIO,R0   0,R6              HIO IT                                      
         AI,R7    1                                                             
         CI,R7    LCOC              DONE YET                                    
         BLE      HIOTJE            NO                                          
HIOTJE1  RES      0                 YES                                         
         FIN      #LN                                                           
         PAGE                                                                   
         LW,R0    K:HIINT                                                       
         AI,R0    -X'40'                                                        
         SLS,R0   -4                R0 IS NOW LAST GROUP #                      
         LI,R1    0                                                             
*                                                                               
* SAVE INTERRUPT STATES ON SIGMA 9                                              
*                                                                               
CRASHINT RES      0                                                             
         DO       #SIGMA9                                                       
         RD,R2    X'1100',R1                                                    
         RD,R3    X'1200',R1                                                    
         RD,R4    X'1400',R1                                                    
*                                                                               
         STH,R2   CRASHI1,R1                                                    
         STH,R3   CRASHI2,R1                                                    
         STH,R4   CRASHI3,R1                                                    
         FIN      #SIGMA9                                                       
*                                                                               
* DISARM AND DISABLE ALL INTERRUPTS                                             
*                                                                               
         LI,R2    -1                                                            
         WD,R2    X'1100',R1        DISARM ALL LEVELS IN GROUP                  
         WD,R2    X'1500',R1        DISABLE ALL LEVELS IN GROUP                 
         AI,R1    1                                                             
         CI,R1    1                                                             
         BE       %-2               SKIP GROUP 1                                
         CW,R1    R0                                                            
         BLE      CRASHINT          LOOP THRU ALL GROUPS                        
         PAGE                                                                   
* RESET THE PROCESSOR DETECTED FAULT FLAG                                       
         DO       #SIGMA9                                                       
         LPSD,1   RESETPDF                                                      
         BOUND    8                                                             
RESETPDF DATA     PDFOFF                                                        
         GEN,8,24 7,0                                                           
* CLEAR ALL PARITY ERRORS IM MEMORY AND REMEMBER THE LEAST ONE                  
PDFOFF   RES      0                                                             
         LW,R1    K:UNAVBG          MAXIMUM MEMORY PLUS 1                       
CLRPARTY RES      0                                                             
         AI,R1    -1                DECREMENT BY 1                              
         LCI      1                 SET CC FOR LMS                              
         LMS,R0   0,R1              LOAD AND CLEAR PARITY                       
           BCR,12   CLRP900           BRANCH NO PARITY ERROR                    
           STW,R0   0,R1              PARITY BAD -- MAKE IT GOOD                
           LCI      14                SET CC FOR LMS                            
           LMS,R4   0, R1             STATUS WD 2 --> R4; CLEAR                 
*                                     MFI                                       
           STW,R1   LASTPRTY          SAVE ADDRESS OF PARITY                    
*                                     ERROR                                     
CLRP900    EQU      %                                                           
         CI,R1    X'10'             DONE YET                                    
         BG       CLRPARTY          NO,LOOP                                     
         FIN      #SIGMA9                                                       
         DO       #SIGMA9                                                       
         LI,R1    X'1FFFF'          LAST WORD OF LAST VIRTUAL PAGE              
         LI,R2    256               # OF VIRTUAL PAGES                          
* SAVE A COPY OF THE MEMORY MAP (SIGMA 9 AND 550 ONLY)                          
MAPCRASH LCI      8                                                             
         LRA,R3   R1                GET REAL WORD ADDRESS                       
         LF       R3                LOAD BITS 5-7 INTO FLOATING CONTROL         
         STCF     R3                STORE BITS 0-7 INTO R3                      
         STW,R3   CRASHMAP-1,R2     AND SAVE IT                                 
         AI,R1    -512              BACK UP A PAGE                              
         BDR,R2   MAPCRASH          LOOP TIL DONE                               
         PAGE                                                                   
         ELSE     #SIGMA9                                                       
         PAGE                                                                   
**********************************************************                      
*                                                                               
*      FIRST BYTE OF LAST WORD OF A PAGE WILL BE ALTERED FOR PHSONE             
*      THRU PHSTHR....MUST BE CERTAIN THAT BYTE IS NOT IN THIS PORTION          
*      OF THE CODE                                                              
*                                                                               
* PHASE ONE -- BUILD SAVBYTE FOR PRESERVATION OF CORE                           
*   SHOULD BE IN UNMAPPED, MASTER MODE, WK=0                                    
* USE LAST BYTE OF EACH WORD IN CRASHMAP FOR SAVBYTE                            
*************************************************************                   
PHSONE   EQU      %                                                             
         LPSD     REALPSD                                                       
*                                                                               
PHSONEA  RES      0                 NOW IN REAL, MASTER MODE                    
         LW,R1    K:UNAVBG                                                      
         AI,R1    -1                R1=HIGHEST LOCATION                         
         LW,R2    R1                                                            
         SAS,R2   -9                R2=NUMBER OF LAST REAL PAGE                 
PHS100   EQU      %                                                             
         DO       #SIGMA9M                                                      
         LH,R3    *R1               SAVE 1ST HW OF                              
         ELSE                                                                   
         LB,R3    *R1               SAVE 1ST BYTE OF                            
         FIN                                                                    
         STW,R3   CRASHMAP,R2         LAST WORD OF PAGE                         
         CI,R1    PHS400            IS STORE IN RANGE                           
         BG       %+3               NO                                          
         CI,R1    PHS100            MAYBE                                       
         BGE      %+2               NO                                          
         DO       #SIGMA9M                                                      
         STH,R2   *R1               STORE INDEX VALUE = REAL PG NO              
         ELSE                                                                   
         STB,R2   *R1               STORE INDEX = REAL PAGE NUMBER              
         FIN                                                                    
         AI,R1    -512              DO NEXT LOWER PAGE                          
         AI,R2    -1                                                            
         BGEZ     PHS100            LOOP FOR ALL PAGES                          
         LW,R14   PHS130            SET CAL1 TO                                 
         XW,R14   X'48'              ENTER PHASE THREE                          
         LW,R15   PHS140            ON TRAP WILL ENTER MASTER,                  
         XW,R15   X'40'               MAPPED MODE                               
         LPSD,0   PHSTWO1           ENTER PHASE TWO                             
         SPACE                                                                  
PHS130   XPSD,0   PHSTHR1           TO ENTER PHASE THREE                        
PHS140   XPSD,0   TRAPSD            FOR TRAP IN PHASE TWO                       
         PAGE                                                                   
         SPACE                                                                  
*************************************************************************       
*                                                                               
* PHASE TWO --- BUILD VIRTAB FOR VIRTUAL MAP AND ACCODE FOR ACCESS CODES        
*   IN MAPPED, SLAVE MODE                                                       
* USE FIRST HALF OF EACH WORD IN CRASHMAP FOR ACCESS CODE AND MAP               
**************************************************************************      
PHSTWO   EQU      %                                                             
         LI,R2    256               VIRTUAL PAGE COUNT                          
         LI,R1    256*512-1         LAST WORD OF 256TH VIRTUAL PAGE             
         LI,R7    CRASHMAP+255      R7=TABLE INDEX                              
PHS2RD   RES      0                 TEST FOR READ PERMIT                        
         DO       #SIGMA9M                                                      
         LH,R3    *R1                                                           
         ELSE                                                                   
         LB,R3    *R1                                                           
         FIN                                                                    
         STH,R3   *R7               OK, MAKE ENTRY TO TABLE                     
*                                     AC = 00                                   
         LW,R6    PHS210                                                        
PHS2WR1  XW,R6    *R1                                                           
PHS2EX   B        *R1               TEST FOR EXECUTE PERMIT                     
PHS210   B        %+1                                                           
PHS2WR2  STW,R6   *R1               TEST FOR WRITE PERMIT                       
PHS220   AI,R1    -512              DO NEXT LOWER                               
         AI,R7    -1                                                            
         BDR,R2   PHS2RD              VIRTUAL PAGE                              
         CAL1,0   0                                                             
*                                                                               
*                                                                               
*                                                                               
PHS250   EQU      %                 HERE ON TRAP TO X'40'                       
         BCS,4    PHS280            CC2 ON                                      
*  ASSUME  CC4 IF NOT CC2 -- MEMORY PROTECT VIOLATION                           
         LW,R5    TRAPSD            DETERMINE CAUSE OF                          
         AND,R5   PHS2MSK             VIOLATION                                 
         CI,R5    PHS2RD            IS IT NO READ PERMIT                        
         BNE      PHS252              NO                                        
         DO       #SIGMA9M                                                      
         LH,R3    *R1               YES, DO IT IN MASTER MODE                   
         ELSE                                                                   
         LB,R3    *R1               YES, DO IT IN MASTER MDE                    
         FIN                                                                    
         AI,R3    X'3000'            AC=NO ACCESS=11                            
         B        PHS266                                                        
PHS252   CI,R5    PHS2RD+1          IS IT NO WRITE TO  VIRMAP                   
         BNE      PHS255            ..NO                                        
         STH,R3   *R7               ..YES, STORE WHILE IN MASTER MODE           
         MTW,1    TRAPSD              UPDATE PSD TO PHS2RD+2                    
         LPSD,0   TRAPSD            CONTINUE                                    
*                                                                               
PHS255   CI,R5    PHS2WR1           IS IT NO WRITE PERMIT                       
         BNE      PHS260            NO                                          
         XW,R6    *R1               YES, DO IT IN MASTER MODE                   
         LPSD,0   PHS2EX1           AND GO TRY TO EXEC. IN SLAVE                
*NOTE:  WILL TRAP AGAIN FROM PHS2WR2                                            
*                                                                               
PHS260   CI,R5    PHS2EX            IS IT NO EXEC PERMIT                        
         BNE      PHS265            NO                                          
         AI,R3    X'2000'           YES, AC = ONLY READ PERMIT = 10             
         B        PHS266                                                        
*  NO.. ASSUME R5=PHS2WR2 SINCE NOT ANY OF THE ABOVE                            
PHS265   STW,R6   *R1               ..STORE WHILE IN MASTER MODE                
         AI,R3    X'1000'           READ AND EXEC, BUT NO WRITE =01             
*HERE TO SET ACCODE AND DO NEXT PAGE                                            
PHS266   STH,R3   *R7               PLACE IN TABLE                              
         LPSD,0   PHS2NXT           GO DO NEXT VIRTUAL PAGE IN SLAVE MODE       
*                                                                               
*                                                                               
*  CC2 ON --- NON-EXISTENT MEMORY                                               
PHS280   AI,R3    X'C000'           SET AS NON-EXISTENT MEMORY                  
         B        PHS266                                                        
PHS2MSK  DATA     X'1FFFF'          ADDRESS MASK                                
         PAGE                                                                   
**************************************************************                  
*                                                                               
* PHASE THREE --- RESTORE CORE TO ORIGINAL                                      
*   UNMAPPED, MASTER MODE, WK=00                                                
*****************************************************************               
PHSTHR   EQU      %                                                             
         STW,R15  X'40'             RESET TRAP                                  
         STW,R14  X'48'             AND CAL LOCS TO ORIGINAL                    
         LW,R1    K:UNAVBG                                                      
         AI,R1    -1                R1=HIGHEST LOCATION                         
         LW,R2    R1                                                            
         SAS,R2   -9                R2=NUMBER OF LAST REAL PAGE                 
PHS300   LW,R3    CRASHMAP,R2       RESTORE 1ST BYTE OF                         
         DO       #SIGMA9M                                                      
         STH,R3   *R1               LAST WORD OF PAGE                           
         ELSE                                                                   
         STB,R3   *R1               LAST WORD OF PAGTE                          
         FIN                                                                    
         AI,R1    -512              DO NEXT LOWER PAGE                          
         AI,R2    -1                                                            
         BGEZ     PHS300                                                        
         PAGE                                                                   
*************************************************************                   
* PHASE FOUR --- EXPAND CRASHMAP TO RESEMBLE SIGMA 9                            
*    LRA FORMAT                                                                 
*                                                                               
**************************************************************                  
         LI,R4    255               TABLE POINTER                               
PHS400   INT,R2   CRASHMAP,R4       CC=ACCESS CODE                              
         SAS,R2   9                 R2=MAP VALUE                                
         STCF     R2                SIMULATE SIGMA 9                            
         STW,R2   CRASHMAP,R4          LRA FORMAT                               
         AI,R4    -1                                                            
         BGEZ     PHS400                                                        
*                                                                               
         LI,R4    CRASHMAP          GET BUFFER PAGE                             
         SLS,R4   -9                GET PAGE NUMBER                             
         LW,R5    R4                                                            
         SLS,R5   9                                                             
         STW,R5   CRASHMAP,R4                                                   
         LW,R5    Y1                                                            
         STS,R5   CRASHMAP,R4                                                   
*                                                                               
         LI,R4    PHS100            GET THIS PAGE                               
         SLS,R4   -9                MAKE PAGE NUMBER                            
         LW,R5    R4                                                            
         SLS,R5   9                 MAKE EVEN PAGE ADDR                         
         STW,R5   CRASHMAP,R4       STORE                                       
         LW,R5    Y1                SET ACCESS 01                               
         STS,R5   CRASHMAP,R4       AND STORE                                   
         B        CORESAVE                                                      
         PAGE                                                                   
         BOUND    8                                                             
PHSTWO1  GEN,8,2,22  0,3,PHSTWO       IN MAPPED, SLAVE MODE                     
         DATA     X'07000000'       INHIBIT                                     
         BOUND    8                                                             
PHSTHR1  DATA     0                                                             
         DATA     0                                                             
         DATA     PHSTHR              UNMAPPED, MASTER MODE                     
         DO       #SIGMA9M                                                      
         DATA     X'07800000'                                                   
         ELSE     #SIGMA9M                                                      
         DATA     X'07000000'                                                   
         FIN      #SIGMA9M                                                      
         BOUND    8                                                             
REALPSD  DATA     PHSONEA                                                       
         DO       #SIGMA9M                                                      
         DATA     X'07800000'                                                   
         ELSE     #SIGMA9M                                                      
         DATA     X'07000000'                                                   
         FIN      #SIGMA9M                                                      
         BOUND    8                                                             
TRAPSD   DATA     0                                                             
         DATA     0                                                             
         GEN,9,1,22  0,1,PHS250     MASTER MODE, MAPPED                         
         DATA     X'07000000'                                                   
         BOUND    8                                                             
PHS2NXT  GEN,8,2,22  0,3,PHS220     DO NEXT PAGE IN                             
         DATA     X'07000000'       INHIBIT                                     
*                                                                               
PHS2EX1  GEN,8,2,22  0,3,PHS2EX     TRY EXEC IN SLAVE MODE                      
         DATA     X'07000000'                                                   
         FIN      #SIGMA9                                                       
         PAGE                                                                   
*                                                                               
* THIS SAVES CORE ON THE CK AREA                                                
*                                                                               
CORESAVE RES      0                                                             
         DO       #CRASH                                                        
         LI,R6    CKINDEX           POINT AT AREA TO RECEIVE CRASH SAVE         
         LB,R5    MDFLAG,R6         FIRST, INSURE IT IS ALLOCATED               
         CI,R5    ALLOC             IS THE 'ALLOCATED' BIT SET ?                
         BAZ      NOCKAREA            NO, NO SAVE: SKIP OUT OF HERE             
*                                                                               
         LI,R14   0                 START RELATIVE SECTOR #                     
         LB,R7    MDDCTI,R6         SET DEVICE INDEX (DCT INDEX)                
         LB,R5    MDDISCI,R6        GET INDEX TO DEVICE'S CONSTANTS             
         LH,R2    DISCNWPS,R5        AND GET WORDS PER SECTOR                   
         LH,R4    DCT1,R7           SET DEVICE ADDRESS (NDD FROM YYNDD)         
         LI,R3    255               COMPUTE SECTORS PER HALFPAGE                
         AW,R3    R2                                                            
         DW,R3    R2                R3 NOW # OF SECTORS/BLOCK                   
*                                                                               
* COMPUTE THE AMMOUNT OF MEMORY TO SAVE                                         
*                                                                               
         DO       #VDUMP                                                        
         LI,R2    512               # OF 1024 BYTE GLOPS                        
         ELSE     #VDUMP                                                        
         LW,R2    K:UNAVBG          FIRST MISSING MEMORY LOC                    
         DO       #PATCH                                                        
         LI,R1    1                                                             
         LI,R0    0                                                             
         LW,R0    *S:TRACE          GET TOP OF TRACE STACK (OR 0)               
         LW,R1    *S:TRACE,R1       GET STACK SIZE                              
         SLS,R1   -16               SHIFT TO GET SPACE COUNT                    
         AND,R1   M15               MASK OFF COUNT                              
         AW,R0    R1                ADD IT TO STACK PTR                         
         CW,R0    R2                IS IT BIGGER                                
         BLE      %+2               NO                                          
         LW,R2    R0                YES, SAVE TO END OF TRACE                   
         FIN                                                                    
         AI,R2    255               ROUND UP TO NEXT GLOP                       
         SLS,R2   -8                # OF 1024 BYTE GLOPS TO SAVE                
         FIN      #VDUMP                                                        
         PAGE                                                                   
*                                                                               
* LOOP TO WRITE OUT MEMORY                                                      
*                                                                               
*                                                                               
* COMPUTE SECTOR NUMBER OF START OF CK AREA                                     
* AND THE NUMBER OF SECTORS NEEDED TO HOLD A HALF PAGE                          
*                                                                               
* R3 IS THE NUMBER OF SECTORS/HALF PAGE                                         
* R4 IS THE DEVICE ADDRESS                                                      
* R14 IS THE STARTING RELATIVE SECTOR NUMBER                                    
* R6 IS THE INDEX TO THE CK AREA                                                
*                                                                               
DUMPLOOP RES      0                                                             
CRASHTIO TIO,R15  0,R4              IS DEVICE READY                             
         BCS,12   TIOWAIT           NO                                          
         LH,R15   R15               RIGHT JUSTIFY STATUS                        
         CI,R15   (BIT1+BIT2+BIT5+BIT6)**-16 DEVICE READY                       
         BAZ      CRASHSIO          YES                                         
*                                   NO                                          
TIOWAIT  RES      0                                                             
         LI,R0    1000              DELAY                                       
         BDR,R0   %                 AND                                         
         AIO,R0   0                 WHAT CAN IT HURT                            
         B        CRASHTIO          TIO AGAIN                                   
*                                                                               
*                                                                               
CRASHSIO RES      0                                                             
         LI,R15   CRASHSTK          FIX UP STACK FOR CONVSECT                   
         XW,R15   K:RTS             SWITCH RTS                                  
         BAL,R5   CVTAREA           GET ACTUAL SEEK ADDRESS IN R12              
         B        DUMPDONE          END OF AREA REACHED                         
         STW,R15  K:RTS             PUT RTS PTR BACK FOR DUMP                   
         STW,R12  SEEKADDR                                                      
         PAGE                                                                   
*                                                                               
* SET UP THE HALF PAGE TO WRITE OUT                                             
*                                                                               
         DO       #VDUMP                                                        
*                                   MEMORY SAVE RATHER THAN REAL SAVE           
         LW,R5    R14               GET SECTOR #                                
         DW,R5    R3                GET HALF PAGE #                             
         SCS,R5   -1                MAKE PAGE #, KEEP LO BIT                    
         LW,R0    CRASHMAP,R5       GET REAL ADDR                               
         LB,R6    R0                GET ACCESS CODE                             
         SLS,R6   -4                POSITION                                    
         AND,R6   M2                MASK                                        
         LB,R6    X1,R6             SET SKIP FOR ACCESS CODE 3                  
         STB,R6   DATACDW+1         STORE FLAGS                                 
         CI,R5    0                                                             
         BGEZ     %+2               SKIP IF NO BIT 0                            
         AI,R0    X'100'            ADD HALF PAGE                               
         AND,R0   M24               MASK OFF ADDR                               
         SLS,R0   2                 MAKE A BYTE ADDR                            
         OR,R0    Y01               PUT IN WRITE ORDER                          
         STW,R0   DATACDW           STORE ORDER AND ADDR                        
         ELSE     #VDUMP                                                        
         LI,R5    1024                                                          
         AWM,R5   DATACDW           BUMP BYTE ADDRESS                           
         FIN      #VDUMP                                                        
         PAGE                                                                   
         LI,R0    DA(SEEKDW)        CDW PTR                                     
         CI,R14   0                 IS THIS THE FIRST BLOCK                     
         BNE      %+2               NO, SKIP                                    
         LI,R0    DA(FIRSTCDW)      YES, OUTPUT REGISTERS ALSO                  
************************************                                            
         SIO,R0   0,R4              WRITE A SECTOR                              
************************************                                            
         AW,R14   R3                INCREMENT SECTOR ADDRESS                    
*                                                                               
         BDR,R2   DUMPLOOP          LOOP UNTIL DONE                             
DUMPDONE RES      0                                                             
         LI,R0    1000                                                          
         BDR,R0   %                                                             
         TIO,R0   0,R4              'CK' DISK IDLE                              
         BCS,12   %-3               NO, WAIT                                    
*                                                                               
*                                                                               
*                                                                               
         LW,R7    OCDCT                                                         
         CI,R7    BIT0**-24         IS IT A DCT                                 
         BANZ     NOOC              NO                                          
*                                   YES                                         
         CH,R7    DCT1              IS IT A NON-TERMINAL                        
         BG       NOOC              YES, SKIP THIS                              
*                                   NO, WAIT FOR TTY TO BE READY                
         LH,R6    DCT1,R7           GET DEVICE ADDRESS                          
*                                                                               
TIOLOOP  AIO,R0   0                 WHAT CAN IT HURT                            
         TIO,R0   0,R6              WAIT FOR DEVICE READY                       
         BCR,12   TTYREADY          BRANCH IF I/O READY                         
         LI,R0    1000                                                          
         BDR,R0   %                                                             
         B        TIOLOOP           LOOP                                        
*                                                                               
TTYREADY RES      0                                                             
*                                                                               
         LI,R0    DA(SAVEDCDW)                                                  
************************************                                            
         SIO,R0   0,R6              OUTPUT CRASH SAVED MSG                      
************************************                                            
         FIN      #CRASH                                                        
         PAGE                                                                   
*                                                                               
NOCKAREA RES      0                                                             
         LW,R7    OCDCT                                                         
         CI,R7    BIT0**-24         IS IT A DCT                                 
         BANZ     NOOC              NO                                          
*                                   YES                                         
         LH,R6    DCT1,R7           GET OC ADDRESS                              
*                                                                               
         TIO,R0   0,R6              TTY READY YET                               
         BCS,12   %-1               NO                                          
*                                   YES                                         
NOOC     RES      0                                                             
         WD,R0    X'40'             TURN OFF ALARM                              
*                                                                               
         LW,R1    ALARMREC          GET ALARM RECIEVER                          
         BLZ      BOOTSTRAP         IF NEGATIVE, REBOOT                         
         BEZ      %                 IF ZERO, HANG HERE                          
         BAL,R15  0,R1              IF POS., BAL TO ALARM RECEIVER              
         PAGE                                                                   
*                                                                               
* BOOT STRAP FROM SP DEVICE                                                     
*                                                                               
BOOTSTRAP RES     0                                                             
         LCI      0                                                             
         LM,R0    K:MONTH           GET DATE AND TIME DATA                      
*                                                                               
         LCI      0                 SAVE FOR AUTO RESTART                       
         STM,R0   X'10'                                                         
*                                                                               
         LI,R1    SPINDEX           INDEX TO SP AREA                            
         LB,R1    MDDCTI,R1         TO GET DCT INDEX, TO                        
         LH,R4    DCT1,R1           GET DEVICE ADDR                             
         STW,R4   X'25'             SAVE IN BOOT ADDR                           
*                                                                               
         LI,R0    DA(BOOTCDW)       ADDR OF BOOT CHANNEL PROGRAM                
         SIO,R0   *X'25'            START BOOT                                  
*                                                                               
BOOTWAIT TIO,R0   *X'25'            BOOT DONE YET                               
         BCR,12   X'2A'             DONE                                        
*                                                                               
         LI,R1    100                                                           
         BDR,R1   %                 WAIT A BIT                                  
         B        BOOTWAIT          AND LOOP                                    
         BOUND    8                                                             
BOOTCDW  DATA     X'03000000'+BA(BOOTSEEK)                                      
         DATA     X'2A000004'       BYTE CNT OF 4 ALWAYS WORKS                  
         DATA     X'020000A8'                                                   
         DATA     X'0A000058'                                                   
*                                                                               
BOOTSEEK DATA     0                                                             
         PAGE                                                                   
         BOUND    8                                                             
         DO       #CRASH                                                        
CRASHSTK STACKDW  CRASHRES,10       STACK FOR CRASH                             
FIRSTCDW GEN,8,24 3,BA(SEEKADDR)                                                
         DATA     CCFLAG+4          BYTE CNT OF 4 ALWAYS WORKS                  
         GEN,8,24 1,BA(CRASHREG)                                                
         DATA     DCFLAG+4*16                                                   
         GEN,8,24 1,4*16                                                        
         DATA     1024-4*16                                                     
*                                                                               
SEEKDW   GEN,8,24 3,BA(SEEKADDR)                                                
         DATA     CCFLAG+4          BYTE CNT OF 4 ALWAYS WORKS                  
DATACDW  DATA     X'01000000'-1024,1024                                         
SAVEDCDW GEN,8,24 5,BA(SAVEDMSG)                                                
         DATA     18                                                            
SAVEDMSG RES      0                                                             
         DATA     X'0D154005'       CR,NL,BLK,TAB                               
         TEXT     '!!CORE SAVED'                                                
         DATA     X'0D154040'       CR,NL,BLK,BLK                               
         FIN      #CRASH                                                        
OLAYSIZE SET      X'100'            LIMIT CRASH TO ONE SECTOR                   
*                                   (READ WITH SIMPLE I/O)                      
         OLAYEND                                                                
 END                                                                            
