*COMDECK  INIT
          CTEXT  INIT - PFM INITIALIZATION AND RESTART
          LIST   X
**        INIT  COMDECK 
* 
**
*         INIT COMDECK
*         INIT
* 
*         PFM COMMON INITIALIZATION CODE
* 
*         ALL PF ROUTINES EXCEPT 1PD, 1PC, AND 1PF BEGIN EXECUTION
*         WITH THIS CODE
* 
*         FIRST SOME HOUSEKEEPING IS DONE 
*                BYTES ARE PRESET IN THE PP INCLUDING FDB ADDRESS 
*                THE PFN, LFN, AND ID ARE DETERMINED
*                THE PFN AND ID ARE CHECKED FOR VALID CHARACTERS
*                THE FUNCTION CODE IS CHECKED TO BE CORRECT FOR THE 
*                     PARTICULAR PP ROUTINE 
*                THE CALLING PROGRAM IS CHECKED TO SEE WHETHER IS IS A
*                     SYSTEM PROGRAM
*         THEN BIT 41 OF THE INPUT REGISTER IS CHECKED
*               IF SET, THE LAST THREE WORDS OF THE PP MESSAGE BUFFER 
*               ARE USED TO SET CERTAIN BYTES IN THE PP. THIS IS USED 
*               FOR 1) DELAY STACK ENTRY, 2) EVENT STACK ENTRY, AND 
*               3) PP-PP CALLS
*               ONE BYTE OF THE THREE WORDS CONTAINS A PP RETURN
*               ADDRESS.  IF ZERO THE ROUTINE IS INITIATED AT THE 
*               BEGINNING OF THE MAIN LINE. THIS FACILITATES PF PP
*               ROUTINES CALLING EACH OTHER, SINCE THE CALLED PP CAN
*               USE INFORMATION ALREADY DETERMINED. IF NONZERO, A 
*               JUMP WILL BE MADE TO SOMEWHERE WITHIN THE PP. THIS
*               LOCATION IS USUALLY THE POINT WHERE THE PP WENT INTO
*               THE DELAY OR EVENT STACK. 
* 
*         SYSTEM PF REQUESTS ARE REQUESTS MADE AT CONTROL POINT ZERO
*         IN THIS CASE AND ONLY IN THIS CASE D.RA = 0 
* 
* 
PFMGR     PPENTRY   D.PPIRB,D.T0
          LDN    1
          STD    D.PPONE
  
A         IF     -DEF,LOA 
A         IF     -DEF,SETP
*                                                                       T10M  73
*   SET ACCOUNTING BIT IF REQUESTED.                                    T10M  74
*                                                                       T10M  75
AC        IF     DEF,CATALOG
          LDD    D.PPIRB+3
          LPN    77B
          RAM    FDBADRA-1
          LDD    D.PPIRB+4
          STM    FDBADRA
          LDN    0
          STD    CPTFLGS
AC        ENDIF 
          LDD    D.CPAD                                                 T10M  76
          ADK    W.CPFACT                                               T10M  77
          CRD    D.T0              READ PFM ACCOUNT WORD                T10M  78
AC        IF     DEF,CATALOG
          LDD    D.T3 
          LMC    1613B
          NJN    NORM 
          LDD    D.T2 
          LMC    1411B
          NJN    NORM 
           LDN      ACC    ACCOUNT KEYWORD CODE 
          RJM    EXFDB
          MJN    NOAC 
          LDK    W.CPFACT 
          ADD    D.CPAD 
          CWM    BUF,D.PPONE
          UJN    ACOK 
NORM      BSS    0
AC        ENDIF 
          LDD    D.T4                                                   T10M  79
AC        IF     DEF,CATALOG
          NJN    ACOK              CONTROL POINT HAS ACCOUNT - GOOD GUY 
          LDN    P.INS         CHECK FOR ACCOUNTING TURN ON 
          CRD    D.T0 
          LDD    D.T4 
          ZJN    ACOK          ACCOUNTING IS NOT TURNED ON
          LDD    D.RA 
          ZJN    PFMGR0 
NOAC      BSS    0
          LCN    RC075             FATAL ERROR CODE 
          RJM    ERR
ACOK      BSS    0
AC        ENDIF 
          LDD    D.CPAD 
          ZJN  PFMGR0              IF CONTROL POINT ZERO                T10M  82
          LDK    ACCOUNTF                                               T10M  83
PFMGR0    BSS    0                                                      T10M  84
          ELSE                                                          T10M  85
          LDN    0                                                      T10M  86
A         ENDIF 
  
          STD    CPTFLGS           INITIALIZE FLAGS WORD                T10M  88
          LDK    P.PFM1 
          CRM    PPFM1,D.PPONE
          LDK    P.RBR
          CRM    PRBR,D.PPONE 
  
AC        IF    -DEF,CATALOG
          LDD    D.PPIRB+3   PRESET FDB ADDRESS 
          LPN    77B         FDB MAY BE GIVEN AS ABS AT CONTROL-POINT ZR
*                            * THOUGH IT RESIDES IN A CONTROL-POINT FL. 
          RAM    FDBADRA-1
          LDD    D.PPIRB+4
          STM    FDBADRA
AC        ENDIF 
  
          LDM    PRBR+4      PRESET LWA OF MACHINE
          SHN    5           STORE IN SUBROUINE GETRBT
          STM    GETRBTA
          SHN    -12D 
          RAM    GETRBTA-1
  
LOADP     IF     -DEF,LOA 
**
*         IF SYSTEM PF REQUEST, FDB ADDRESS SPECIFIED IN INPUT
*         REGISTER IS AN ABSOLUTE ADDRESS 
* 
          LDD    D.CPAD 
          NJN  CONT99 
* 
*         IF SYSTEM PF REQUEST, MODIFY FOBADR SUBROUTINE TO 
*         CALCULATE ONLY ABSOLUTE ADDRESSES 
* 
          LDN    0
          RJM  FDBADR 
          CRM    LFN,D.PPONE
          LJM  CONT1BB
  
CONT99    BSS    0
* 
*         READ IN LFN AND PFN FROM FDB
* 
          LDN    4
          STD    TEMP 
          LCN    4
          RJM  FDBADR 
          CRM    PFN,TEMP 
CONT99A   CRM    LFN,D.PPONE
          LDM    LFN+4
          STM    FUNCT1 
  
*         VALIDATE FUNCTION CODE
  
FUNCODE   IFNONE (LOA,CATALOG2) 
          LPN    76B
          SBK    FUNCODE
          ZJN  CONT100             CHECK FUNCTION CODE
          IFANY  (EXTEND,ATTACH),2
          SBK    FUNCODE1-FUNCODE 
          ZJN  CONT100             NOT SECOND POSSIBLE FUNCTION CODE
          LDD    D.CPAD            CONTROL POINT ADDRESS
          ADN    W.CPLDR1 
          CRD    D.T0 
          LDD    D.T0+C.CPLW       LOADER FLAG BYTE 
          SHN    17-S.CPLP
          PJN  CONT100             SYSTEM OVERLAYS CAN DO WHAT THEY WANT
          LCN    RC031             ILLEGAL FUNCTION CODE
          RJM  ERR
  
CONT100   BSS    0
          IFANY  (ATTACH),3 
          LDM    FUNCT1            STATUS BYTE FROM FDB 
          LPN    6
          STM    FUNCT             NONZERO IF CALLED BY DUMPF OR TRANSPF
FUNCODE   ENDIF 
* 
*         CHECK FOR BOTH LFN AND PFN BEING OMITTED
* 
          LDM    PFN
          NJN  CONT1A 
          LDM    LFN
          NJN  CONT1B 
          LCN    RC006
          RJM  ERR
* 
CONT1B    LJM  CONT1BB
* 
*         TEST IF LFN OMITTED 
* 
CONT1A    LDM    LFN
          ZJN  CONT1AA
          LJM  CONT2
* 
*         IF LFN OMITTED,WRITE FIRST SEVEN CHARACTERS TO LFN
*         TO FDB
* 
CONT1AA   LDC    PFN
          STD    TEMP1
          LDC    LFN
          STD    TEMP2
          LDN    3
          RJM  FCOPY
          LDM    LFN+3
          LPN    77B
          STM    LFN+3
          LDM    PFN+3
          SCN    77B
          RAM    LFN+3
          LDN    0
          RJM  FDBADR 
          CWM    LFN,D.PPONE
          LDN    0
* 
*         ZERO STATUS BITS IN PP BUT NOT IN CM
* 
          STM    LFN+4
FC1       IF     -DEF,CATALOG2
          LDC    MESS3+50000B      *LFN IS* 
          RJM  DFM
          LDC    LFN+50000B        *LOCAL FILE NAME*
          RJM  DFM
FC1       ENDIF 
          LJM  CONT2
* 
PFA1      IF     -DEF,CATALOG                                           T10M  90
PFA1      IF     -DEF,ATTACH                                            T10M  91
PFA1      IF     -DEF,CATALOG2                                          T10M 91A
CONT1BB   BSS    0                                                      T10M  92
PFA1      ELSE                                                          T10M  93
CONT1BB   BSS    0                                                      T10M  94
          LDC    LFN                                                    T10M  95
          STD    TEMP1
          LDC    PFN
          STD    TEMP2
          LDN    4
          RJM  FCOPY
          LDM    PFN+3
          SCN    77B
          STM    PFN+3
* 
*         IF SYSTEM REQUEST, DO NOT WRITE TO FDB BECAUSE SYSTEM 
*         FDB WILL NOT HAVE A PFN SLOT
* 
          LDD    D.CPAD 
          ZJN  CONT2
          LCN    4
          RJM  FDBADR 
          CWM    PFN,D.PPONE
  
PFA2      IF     DEF,CATALOG                                            T10M  97
          LDD    CPTFLGS                                                T10M  98
          LPK    ACCOUNTF                                               T10M  99
          NJN  CONT2               IF PFN MESSAGE IS REDUNDANT          T10M 100
PFA2      ENDIF                                                         T10M 101
  
FC2       IF     -DEF,CATALOG2
          LDC    MESS4+50000B 
          RJM  DFM
          LDC    PFN+50000B 
          RJM  DFM
FC2       ENDIF 
PFA1      ENDIF                                                         T10M 103
* 
*         FIND ID FOR FILE
* 
CONT2     RJM  FINDID 
* 
* 
CONT4A    BSS    0
* 
LOADP     ENDIF 
* 
* 
CONT2E    BSS    0
  
*         CHECK FOR SPECIAL CHARACTERS IN ID AND PFN
  
PFNID     IFANY  (CATALOG,RENAME) 
  
          LDN    0
          STD    D.T2 
          LDC    PFN+20*1S12
          RJM  VALCHR 
          ZJN  CONT99C             PFN IS LEGAL (OR NOT PRESENT)
CONT99B   LCN    RC001             ID OR PFN ERROR
          RJM  ERR
  
CONT99C   AOD    D.T2 
          LDC    OWNER+5*1S12 
          RJM  VALCHR 
          NJN  CONT99B             ID ILLEGAL 
          LDM    OWNER+4
          LMC    1R *1S6+IDC       BLANK AND IDENT KEYWORD CODE 
          ZJN  CONT99B             BLANK ID NOT VALID 
  
PFNID     ENDIF 
  
* 
*         CHECK IF INITIAL CALL 
* 
          LDD    D.PPIRB+1
          LPN    40B
          NJN  CONT6
          LJM  CONT8
          SPACE  4,32 
**        FORMAT OF STACK WORD
* 
*         WORD 1
*                BYTE  0  -  RETURN ADDRESS 
*                BYTE  1 - BITS 11-9 - SCHEDULER INTERFACE BITS 
*                          BITS 8-0 - SUBD NUMBER 
*                BYTE 2 - MSTORD - MST ORDINAL
*                BYTE 3 - APFO - APF ORDINAL
*                BYTE 4 - UFNT - FNT ADDRESS OF USER FILE 
* 
*         WORD 2
*                BYTE 0 - POINT - PFD CURRENT RBT ADDRESS 
*                BYTE 1 - POINT+1 - PFD CURRENT RBT ORDINAL 
*                BYTE 2 - POINT+2 - PFD CURRENT PRU 
*                BYTE 3 - BITS 11-7-POINT+3-PFD ENTRY CM WORD 
*                                                 INDEX 
*                BYTE 4 - CPTFLGS - FLAGS 
* 
*         WORD 3
*                BYTE 0 - RBTC - RBTC CURRENT RBT ADDRESS 
*                BYTE 1 - RBTC+1 - RBTC CURRENT RBT ORDINAL 
*                BYTE 2 - RBTC+2 - RBTC CURRENT PRU 
*                BYTE 3 - BITS 11-7-RBTC+3-BYTE ADDRESS OF
*                                       A BYTE IN FIRST WORD OF 
*                                       RBTC PRU CONTAINING CM WORD 
*                                       INDEX TO START OF ENTRY 
*                           BITS 6-0 - PERM - PERMISSION BITS 
*                BYTE 4 - CYCLE - CYCLE NUMBER
* 
**T      12/RET ADDR,3/5,9/SUBD,12/MSTORD,12/APFO,12/UFNT 
**T      12/POINT,12/POINT+1,12/POINT+2,6/PT+3,6/0,12/CPTFLGS 
**T      12/RBTC,12/RBTC+1,12/RBTC+2,6/RBC+3,6/PERM,12/CYCLE
          SPACE 
* 
*         RESTORE WORD 2 OF STACK WORDS 
* 
CONT6     LDD    D.PPMES1 
          ADN    W.PPMES4-2 
          CRM    D.T0,D.PPONE 
          CRM    POINT,D.PPONE
          CRM    RBTC,D.PPONE 
          LDD    POINT+4
          STD    CPTFLGS
          LDD    POINT+3
          SHN    -6 
          STD    POINT+3
          RJM  MULT5
          STD    ENTCOUNT 
* 
*         RESTORE WORD 3 OF STACK WORDS 
* 
          LDM    RBTC+4 
          STD    CYCLE
          LDM    RBTC+3 
          LPN    77B
          STM    PERM 
* 
*         RESTORE WORD 1 OF STACK WORDS 
* 
          LDD    D.T1 
          STM    SCHED
          SCK    7000B
          STM    SUBD 
          LDD    D.T2 
          STM    MSTORD 
          LDD    D.T3 
          STM    APFO 
          LDD    D.T0              SAVE RETURN ADDRESS
          STD    TEMP 
  
ONEFCC    IF     DEF,CATALOG2 
          LDD    CPTFLGS
          LPK    LPFF+LPFCL 
          LMK    LPFF+LPFCL 
          NJN  ONEFC55             NOT 1FC CALL BY LPF
          LDD    D.T4              FNT WILL NOT MOVE BECAUSE JOB
          UJN  CONT7               HAS TAPE ASSIGNED
* 
ONEFC55   BSS    0                 DO SAME AS REST OF PFM 
ONEFCC    ENDIF 
  
          LDD    D.T4 
  
LOADF     IF     -DEF,LOA 
* 
*         CONDITIONAL HERE BECAUSE MODE=UFNT IN PFR 
* 
REMODE    IF     -DEF,RENAME
          ZJN  CONT7               NO FNT YET 
          LDC    LFN               RE-CALCULATE POSITION IN CASE OF 
*                                  SWAPOUT-SWAPIN 
          RJM  SRCHCP 
          ZJN  CONT6A 
          LDN    CODE20 
          RJM  ERR
* 
CONT6A    LDD    D.T0 
REMODE    ENDIF 
  
LOADF     ENDIF 
  
CONT7     STM    UFNT 
          IF     -DEF,CATALOG2,1
          IF     DEF,ATTACH,1 
          RJM  GETSATR
* 
*         IF RETURN ADDRESS=0, START BEGINNING OF MAIN LINE 
* 
          LDD    TEMP 
          ZJN  CONT8
          LJM  0,TEMP 
* 
* 
CONT8     BSS    0
* 
* 
**        END OF INIT 
          LIST   *
          ENDX
