COMPCRA 
COMMON
          CTEXT  COMPCRA - CONVERT RANDOM ADDRESS.
 CRA      SPACE  4
          IF     -DEF,QUAL$,1 
          QUAL   COMPCRA
*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
 CRA      SPACE  4
***       CRA - CONVERT RANDOM ADDRESS. 
*         G. R. MANSFIELD.  70/08/09. 
*         K. R. COMBS.       75/12/12.
 CRA      SPACE  4,10 
***              CRA CONVERTS A RANDOM ADDRESS TO MASS STORAGE
*         TRACK AND SECTOR NUMBERS. 
* 
*         IF *IRA$* IS DEFINED, INITIALIZATION IS ASSUMED TO BE 
*         PERFORMED.  COMMON DECK *COMPIRA* CAN BE USED TO DO THIS. 
*         IF CRA$ IS NOT DEFINED, NO TRT GUARANTEE CODE IS ASSEMBLED. 
* 
*         ENTRY  (T5) = EST ORDINAL.
*                (T6) = FIRST TRACK OF FILE.
*                (RI - RI+1) = RANDOM ADDRESS.
*                (A) .EQ. 0 IF TRT MUST BE CURRENT (CRA$ DEFINED).
*                (A) .NE. 0 IF CURRENT TRT NOT REQUIRED (CRA$ DEFINED)
* 
*         EXIT   (A) .LT. 0 IF ADDRESS NOT ON CHAIN.
*                (T6) = TRACK.
*                (T7) = SECTOR. 
* 
*         USES   T0, T1, T7, CM - CM+4, RI - RI+1.
* 
*         MACROS MONITOR, SFA.
* 
*         XREF   COMSPIM. 
  
  
 CRA      SUBR               ENTRY/EXIT 
  
 CRA$     IF     DEF,CRA$ 
          NJN    CRA1        IF NO TRT GUARANTEE REQUIRED 
          LDN    UTRS        SET SUBFUNCTION CODE 
          STD    CM+3 
          LDD    T5          SET EST ORDINAL
          STD    CM+1 
          MONITOR STBM
 CRA1     BSS    0
 CRA$     ENDIF 
 IRA$     IF     -DEF,IRA$
          SFA    EST,T5      READ EST ENTRY 
          ADK    EQDE 
          CRD    CM 
          LDD    CM+4 
          SHN    3
          ADK    MDGL 
          CRD    CM 
          ADK    TRLL-MDGL
          CRD    T7 
          LDD    CM+4        SET SECTOR LIMIT 
          STP    SLM
          LDD    T7+3        SET TRT FWA
          LPN    77 
          SHN    14 
          LMD    T7+4 
          SBD    TH          4000/2 
          STM    CRAA+1 
          SHN    -14
          LMC    ADCI 
          STM    CRAA 
 IRA$     ENDIF 
  
          LDD    T6          SET FIRST TRACK
          STD    T0 
 CRA2     LDD    T0          SET CURRENT TRACK
          STD    T6 
          SHN    -2          READ TRT WORD
 CRAA     ADC    TRTS 
          CRD    CM 
          LDD    T6          SET BYTE INDEX 
          LPN    3
          STD    T1 
          LDM    CM,T1       CHECK NEXT LINK
          STD    T0 
          SHN    6
          PJN    CRA5        IF END OF TRACK CHAIN
          LCN    0           DECREMENT RANDOM ADDRESS 
          LMP    SLM
          RAD    RI+1 
          PJN    CRA2        IF NO UNDERFLOW
          AOD    RI+1        CLEAR UNDERFLOW
          SOD    RI 
          PJN    CRA2        IF NO UNDERFLOW
          LDP    SLM
 CRA3     ADD    RI+1 
          STD    T7 
 CRA4     UJP    CRAX        RETURN 
  
 CRA5     SHN    -6          CHECK EOI SECTOR 
          SBD    RI+1 
          MJN    CRA4        IF BEYOND EOI
          LDD    RI          CHECK UPPER ADDRESS
          ZJN    CRA3        IF CONVERSION COMPLETE 
          LCN    0           SET ERROR RETURN 
          UJN    CRA4        RETURN 
 CRA      SPACE  4
 QUAL$    IF     -DEF,QUAL$ 
          QUAL   *
 CRA      EQU    /COMPCRA/CRA 
 CRAA     EQU    /COMPCRA/CRAA
 QUAL$    ENDIF 
          ENDX
