AMODE 64

TEST     CSECT                                                          
TEST     AMODE 64                                                       
TEST     RMODE 31                                                       
         BSM   R14,0    Save caller's AMODE indication                  
         BAKR  R14,0    Save regs on linkage stack                      
         SAM64          Into AMODE 64                                   
         SYSSTATE AMODE64=YES                                           
*                                                                       
* Establish addressability to static data. We use relative              
* branching to avoid needing addressability to the code                 
*                                                                       
         CNOP 0,4                                                       
         BRAS R12,PAST1                                                 
         DC   A(STATIC_DATA)                                            
PAST1    DS   0H                                                        
         LLGT R12,0(R12,0)                                              
         USING STATIC_DATA,R12                                          
*                                                                       
* Get space for the cell pool in primary, above 2G                      
*                                                                       
         IARV64 REQUEST=GETSTOR,SEGMENTS=STORSEGS,ORIGIN=STORORIG       
*                                                                       
* Since the space is in primary, an ALET of 0 is needed                 
*                                                                       
         XC  ANCHALET(4),ANCHALET                                       
*                                                                       
* Set address and size of the anchor                                    
*                                                                       
         LG    R4,STORORIG                                              
         STG   R4,ANCHADDR                                              
*                                                                       
* Call the build service                                                
*                                                                       
         CALL  CSRC4BLD,(ANCHALET,ANCHADDR,USERNAME,CELLSIZE,RTNCODE)   
*                                                                       
* Set address and size of the extent and connect extent to cells        
*                                                                       
         LG    R4,STORORIG                                              
         AGF   R4,ANCHSIZE                                              
         STG   R4,XTNTADDR                                              
         AG    R4,XTNTSIZE Sets size of extent                          
         STG   R4,CELLSTAD                                              
         AG    R4,CELLSTLN Sets size of cell storage                    
         CALL  CSRC4EXP,(ANCHALET,ANCHADDR,XTNTADDR,XTNTSIZE,          X
               CELLSTAD,CELLSTLN,EXTENT,RTNCODE)                        
*                                                                       
* Get a cell. CELLADDR receives the address of the cell.                
*                                                                       
         CALL  CSRC4GET,(ANCHALET,ANCHADDR,CELLADDR,RTNCODE)            
*                                                                       
* The program uses the cells.                                           
*                                                                       
* Query the pool, the extent, and the cell. *                           
*                                                                       
         CALL  CSRC4QPL,(ANCHALET,ANCHADDR,QNAME,QCELLSZ,QTOT_CELLS,   X
               QAVAIL_CELLS,QNUMEXT,QRTNCODE)                           
         CALL  CSRC4QEX,(ANCHALET,ANCHADDR,EXTENT,QEXSTAT,QXTNT_ADDR,  X
               QXTNT_LEN,QCELL_ADDR,QCELL_LEN,QTOT_CELLS,              X
               QAVAIL_CELLS,QRTNCODE)                                   
         CALL  CSRC4QCL,(ANCHALET,ANCHADDR,CELLADDR,QCLAVL,QCLEXT,     X
               QRTNCODE)                                                
*                                                                       
* Free the cell.                                                        
*                                                                       
         CALL  CSRC4FRE,(ANCHALET,ANCHADDR,CELLADDR,RTNCODE)            
*                                                                       
* Deactivate the extent.                                                
*                                                                       
         CALL  CSRC4DAC,(ANCHALET,ANCHADDR,EXTENT,RTNCODE)              
*                                                                       
* Disconnect the extent.                                                
*                                                                       
         CALL CSRC4DIS,(ANCHALET,ANCHADDR,EXTENT,QCELL_ADDR,QCELL_LEN, X
               QRTNCODE)                                                
*                                                                       
* Free the storage                                                      
*                                                                       
         IARV64 REQUEST=DETACH,MEMOBJSTART=STORORIG                     
*                                                                       
* Return to caller.                                                     
*                                                                       
         PR                                                            
*****************************************************************       
* Constants and data areas used by cell pool services *                 
*****************************************************************       
*                                                                       
STATIC_DATA DS 0D                                                       
*                                                                       
CELLS_PER_EXTENT EQU 512                                                
EXTENTS_PER_POOL EQU 10                                                 
CELLSIZE_EQU     EQU 256                                                
CELLS_PER_POOL   EQU CELLS_PER_EXTENT*EXTENTS_PER_POOL                  
XTNTSIZE_EQU     EQU CSRC4_EXTENT_BASE+(((CELLS_PER_EXTENT+63)/64)*8)   
STORSIZE_EQU     EQU CELLS_PER_EXTENT*CELLSIZE_EQU                      
CELLS_IN_POOL DC AD(CELLS_PER_POOL)                                     
ANCHADDR DS    AD                                                       
CELLSIZE DC    AD(CELLSIZE_EQU)                                         
USERNAME DC    CL(CSRC4_POOL_NAME_LEN)'MYCELLPL'                        
ANCHALET DS    F                                                        
ANCHSIZE DC    A(CSRC4_ANCHOR_LENGTH)                                   
XTNTSIZE DC    AD(XTNTSIZE_EQU)                                        
XTNTADDR DS    AD                                                      
CELLSTAD DS    AD                                                      
CELLSTLN DC    AD(STORSIZE_EQU)                                        
CELLADDR DS    AD                                                      
STATUS   DS    D                                                       
EXTENT   DS    F                                                       
RTNCODE  DS    F                                                       
*                                                                      
*****************************************************************      
* Constant data and areas                                              
*****************************************************************      
*                                                                      
         DS    0D                                                      
STORORIG DS    AD        Storage Origin                                
STORSIZE EQU   STORSIZE_EQU*EXTENTS_PER_POOL                           
STORSEGS DC    AD((STORSIZE+1024*1024-1)/(1024*1024)) 1M Segments needed 
*                                                                      
*****************************************************************      
* VALUES RETURNED BY QUERIES                                           
*****************************************************************      
*                                                                      
QNAME    DS    CL(CSRC4_POOL_NAME_LEN)                                 
QCELLSZ  DS    D                                                       
QNUMEXT  DS    D                                                       
QEXSTAT  DS    D                                                       
QXTNT_ADDR DS  D                                                       
QXTNT_LEN  DS  D                                                       
QCELL_ADDR DS  D                                                       
QCELL_LEN  DS  D                                                       
QTOT_CELLS DS  D                                                       
QAVAIL_CELLS DS D                                                      
QCLADDR  DS    D                                                       
QCLAVL   DS    D                                                       
QCLEXT   DS    F                                                       
QRTNCODE   DS  F                                                       
*****************************************************************      
* Registers                                                            
*****************************************************************      
R4       EQU   4                                                       
R12      EQU   12                                                      
R14      EQU   14                                                      
*****************************************************************      
* Declares for CSRC4xxx services                                       
*****************************************************************      
         CSRC4ASM       Assembler declares for AMODE 64                
         END   TEST