         TITLE    '** MEDIA **'                                                 
         SPACE    2                                                             
         SYSTEM   SIG7FDP                                                       
         SYSTEM   OPTIONS                                                       
        DO       #MEDIA                                                         
*                                                                               
*                                                                               
*                                                                               
         DEF      A:MEDIA                                                       
*                                                                               
         DEF      MEDIARES          BASE OF RESIDENT MEDIA TABLES               
         DEF      MEDRCTRL          CONTROL WORD: (CONTAINS MASN, FLGS)         
         DEF      MEDRMASN          SEQUENCE NUMBER (IN BYTE 0 )                
         DEF      MEDRBB1           BLOCKING BUFFER CONTROL WORDS FOR           
         DEF      MEDRBB2           THE 2 POSSIBLE BUFFERS                      
         DEF      MEDRITMP          TEMP FOR INPUT DEVICE CONTROL               
         DEF      MEDROTMP          TEMP FOR OUTPUT DEVICE CONTROL              
         DEF      MEDRJOB           JOB-, TASK- NAME OF THE                     
         DEF      MEDRTASK           REQUESTING TASK                            
         DEF      MEDRERRS          ERROR SWITCH/ ERROR CODE                    
         DEF      MEDRSTPS          STOP CAL'S FPT                              
*                                                                               
         DEF      MEDRIDCB          INPUT  DCB                                  
         DEF      MEDRODCB          OUTPUT DCB                                  
         DEF      MEDRRA            READ  A BUFFER FPT                          
         DEF      MEDRWA            WRITE A BUFFER FPT                          
         DEF      MEDRRB            READ  B BUFFER FPT                          
         DEF      MEDRWB            WRITE B BUFFER FPT                          
         DEF      MEDRCHKR          CHECK  READ  OPERATION                      
         DEF      MEDRCHKW          CHECK WRITE  OPERATION                      
         DEF      MEDRFPTX          GENERAL PURPOSE FPT                         
         DEF      MEDROC            OPEN/CLOSE FPT                              
*                                                                               
*                                                                               
*                                                                               
         DEF      MEDRLOOP          START OF MAIN COPY LOOP                     
         DEF      MEDRLOPA          ALTERNATE ENTRY FOR 'B' FIRST               
         DEF      MEDRVFCA          (ADJUST REC BYTE COUNT TO INCLUDE           
         DEF      MEDRVFCB          ( THE EXTRA BYTE OF FORMAT CONTROL          
*                                                                               
         DEF      MEDRSTAK          STACK AREA                                  
         DEF      MEDRSTCB          SECONDARY TASK CONTROL BLOCK                
         DEF      MEDRIMAG          MESSAGE TYPEOUT BUFFER                      
         DEF      MEDR900           COMMON NO-OP ERROR ROUTINE                  
*                                                                               
*                                                                               
         SPACE    2                                                             
OLAYFLAG SET      'MEDR'            SET RESIDENT MEDIA SECTION                  
         SYSTEM   CPRMON                                                        
         TITLE    '** MEDIA **'                                                 
         SPACE    2                                                             
***********************************************************************         
*                                                                     *         
*                                                                     *         
*                 M E D I A                                           *         
*                                                                     *         
***********************************************************************         
         SPACE    2                                                             
MEDIARES EQU      %         START OF MODULE, CONTROL TABLE                      
A:MEDIA  EQU      MEDIARES                                                      
*                                                                               
*                                                                               
MEDRCTRL DATA     (1**24)+MEDREND   SEQ NUM = 1; STATE = 'END'                  
MEDRMASN EQU      MEDRCTRL                                                      
*                                                                               
MEDRQINF DATA     0                 ALL QUEUES EMPTY                            
*                                                                               
*                                                                               
MEDRJOB  DATA     0,0               JOB-, TASK- NAMES OF THE TASK               
MEDRTASK DATA     0,0               INITIATING THE COPY REQUEST                 
*                                                                               
*                                                                               
MEDRITMP DATA     0                 TEMP FOR INPUT  DEVICE CONTROL              
MEDROTMP DATA     0                 TEMP FOR OUTPUT DEVICE CONTROL              
*                                                                               
MEDRBB1  DATA     0                 SAFE TEMPS FOR BLOCKING BUFFER              
MEDRBB2  DATA     0                 CONTROL WORDS                               
*                                                                               
MEDRERRS DATA     0                 ERROR SWITCH / ERROR CODE                   
         DATA     0                 WORD FOR TYC ERROR CODE                     
         PAGE                                                                   
*                                                                               
* INPUT DCB                                                                     
*                                                                               
MEDRIDCB DATA     X'0B000000'       INPUT DCB                                   
         DATA     X'0F000000'       RETRY COUNT = 15                            
         DATA     0,0,0,0000,0000   WORDS 2, 3, 4, AND FILE NAME                
         DATA     0,0,0,0           DCB EXTENSION                               
         SPACE    3                                                             
*                                                                               
* OUTPUT DCB                                                                    
*                                                                               
MEDRODCB DATA     X'0B000000'       OUTPUT DCB                                  
         DATA     X'0F000000'       RETRY COUNT = 15                            
         DATA     0,0,0,0000,0000   WORDS 2, 3, 4, AND FILE NAME                
         DATA     0,0,0,0           DCB EXTENSION                               
         PAGE                                                                   
         SPACE    4                                                             
MEDRRA   EQU      %         READ INTO THE 'A' BUFFER                            
         GEN,8,24 X'10',MEDRIDCB    READ; INPUT DCB                             
         DATA     P1+P2+P3+P4+P6+P10                                            
         DATA     MEDR900      +2   ERROR ROUTINE ADDRESS                       
         DATA     MEDR900      +3   ABNORMAL ROUTINE ADDRESS                    
         DATA     0            +4   BUFFER ADDRESS                              
         DATA     0            +5   BYTES TO READ                               
         DATA     0            +6   BTD                                         
         DATA     0            +7   TYC; BYTES ACTUALLY READ                    
*                                                                               
*                                                                               
*                                                                               
*                                                                               
*                                                                               
*                                                                               
MEDRRB   EQU      %         READ INTO THE 'B' BUFFER                            
         GEN,8,24 X'10',MEDRIDCB    READ; INPUT DCB                             
         DATA     P1+P2+P3+P4+P6+P10                                            
         DATA     MEDR900      +2   ERROR ROUTINE ADDRESS                       
         DATA     MEDR900      +3   ABNORMAL ROUTINE ADDRESS                    
         DATA     0            +4   BUFFER ADDRESS                              
         DATA     0            +5   BYTES TO READ                               
         DATA     0            +6   BTD                                         
         DATA     0            +7   TYC; BYTES ACTUALLY READ                    
         PAGE                                                                   
         SPACE    3                                                             
MEDRWA   EQU      %         WRITE OUT THE 'A' BUFFER                            
         GEN,8,24 X'11',MEDRODCB    WRITE; OUTPUT DCB                           
         DATA     P1+P2+P3+P4+P10                                               
         DATA     MEDR900      +2   ERROR ROUTINE ADDRESS                       
         DATA     MEDR900      +3   ABNORMAL ROUTINE ADDRESS                    
         DATA     0            +4   BUFFER ADDRESS                              
         DATA     0            +5   BYTES TO WRITE                              
         DATA     0            +6   TYC                                         
*                                                                               
*                                                                               
*                                                                               
*                                                                               
*                                                                               
*                                                                               
MEDRWB   EQU      %         WRITE OUT THE 'B' BUFFER                            
         GEN,8,24 X'11',MEDRODCB    WRITE; OUTPUT DCB                           
         DATA     P1+P2+P3+P4+P10                                               
         DATA     MEDR900      +2   ERROR ROUTINE ADDRESS                       
         DATA     MEDR900      +3   ABNORMAL ROUTINE ADDRESS                    
         DATA     0            +4   BUFFER ADDRESS                              
         DATA     0            +5   BYTES TO WRITE                              
         DATA     0            +6   TYC                                         
         PAGE                                                                   
         SPACE    3                                                             
*                                                                               
*                                                                               
*                                                                               
MEDRCHKR EQU      %         CHECK READ TO 'A' OR 'B' BUFFER                     
         GEN,1,7,24  1,X'29',R9     CHECK FPT AT LOC IN R9                      
         DATA     P1+P2+P10+F3 +1   PRESENCE BITS                               
         DATA     MED090       +2   ERROR    ROUTINE ADDRESS                    
         DATA     MED090       +3   ABNORMAL ROUTINE ADDRESS                    
*                                                                               
*                                                                               
*                                                                               
*                                                                               
*                                                                               
*                                                                               
MEDRCHKW EQU      %         CHECK WRITE FROM 'A' OR 'B' BUFFER                  
         GEN,1,7,24  1,X'29',R9     CHECK FPT AT LOC IN R9                      
         DATA     P1+P2+P10+F3 +1   PRESENCE BITS                               
         DATA     MED094       +2   ERROR    ROUTINE ADDRESS                    
         DATA     MED094       +3   ABNORMAL ROUTINE ADDRESS                    
         PAGE                                                                   
         SPACE    2                                                             
MEDROC   EQU      %         OPEN OR CLOSE A DCB                                 
         GEN,1,7,24  1,X'14',R9     OPEN DCB AT LOC IN R9                       
         DATA     P1+P2        +1   PRESENCE BITS                               
         DATA     MED099       +2   ERROR    ROUTINE ADDRESS                    
         DATA     MED099       +3   ABNORMAL ROUTINE ADDRESS                    
*                                                                               
*                                                                               
*                                                                               
MEDRFPTX RES      5                 FPT WORK SPACE                              
*                                                                               
*                                                                               
*                           SHORT FORM NAMES FOR FPT'S, ETC                     
*                                                                               
CHKR     EQU      MEDRCHKR          CHECK A READ OPERATION                      
CHKW     EQU      MEDRCHKW          CHECK A WRITE OPERATION                     
RA       EQU      MEDRRA            READ  'A' BUFFER                            
WA       EQU      MEDRWA            WRITE 'A' BUFFER                            
RB       EQU      MEDRRB            READ  'B' BUFFER                            
WB       EQU      MEDRWB            WRITE 'B' BUFFER                            
*                                                                               
*                                                                               
*                                                                               
*                                                                               
MEDR900  B        *R8       ERROR ROUTINE: RETURN TO PROCESS IN-LINE            
*                                                                               
*                           DUMMY ERROR ROUTINE (S)                             
MEDP9IN  EQU      MEDR900                                                       
MEDP9OUT EQU      MEDR900                                                       
MEDP9ERR EQU      MEDR900                                                       
MEDP9ABN EQU      MEDR900                                                       
         TITLE    '** MEDIA - MAIN LOOP OF COPY ROUTINE **'                     
         SPACE    2                                                             
***********************************************************************         
***********************************************************************         
*                                                                               
*                                                                               
* M E D R L O O P **  M A I N   C O P Y   L O O P   O F   M E D I A             
*                                                                               
*                                                                               
*                                                                               
*        ENTRY STATUS*                                                          
*                                                                               
*                 R1  CONTAINS THE STORAGE MASK X'7FF', WHICH                   
*                     IS THE MAXIMUM NUMBER OF BYTES THAT CAN                   
*                     BE READ OR WRITTEN.  IT IS USED TO STORE                  
*                     THE ACTUAL NUMBER OF BYTES READ IN A RECORD               
*                     AS THE NUMBER OF BYTES TO WRITE BACK OUT.                 
*                                                                               
*                                                                               
*                                                                               
*                                                                               
*                 R15 CONTAINS  'MEDRSTOP' U 'MEDRABRT'.  WHENEVER              
*                     THE 'STOP' OR 'ABORT' FLAG IS SET, THE COPY IS            
*                     TO BE SUSPENDED IMMEDIATELY.  CONTROL IS RETURNED         
*                     TO THE CONTROL OVERLAY AT MED0EXIT TO DETERMINE           
*                     WHICH AND TO PROCESS IT.                                  
*                                                                               
*                                                                               
*                                                                               
***********************************************************************         
***********************************************************************         
*                                                                               
*                                                                               
*                                                                               
MEDRLOOP EQU      %         START OF THE LOOP; ENTER FROM SET-UP                
         CAL1,1   RA       |READ  A  |    READ THE A BUFFER                     
         LI,R9    WB       |CHK WRITE|    WAIT WRITE OF 'B' BUFFER              
         CAL1,1   CHKW     |        B|                                          
         LI,R9    RA       |CHK READ |    SET TO CHECK READ TO 'A'              
         CAL1,1   CHKR     |        A|    DO SO                                 
         LW,R0    RA+MEDR#BYT        |    GET BYTES ACTUALLY READ               
MEDRVFCA NOP      1        |MOVE LEN |    ADD 1 IF WE ADD VFC INFO              
         STW,R0   WA+MEDRWBYT       A|    STORE IN WRITE LENGTH                 
*                                                                               
*                                                                               
         CAL1,1   WA       |WRITE A  |    WRITE THE 'A' BUFFER                  
         CAL1,1   RB       |READ  B  |    READ THE 'B' BUFFER                   
         LI,R9    WA       |CHK WRITE|    WAIT WRITE OF THE 'A' BUFFER          
         CAL1,1   CHKW     |        A|                                          
         LI,R9    RB       |CHK READ |    SET TO CHECK THE READ TO 'B'          
         CAL1,1   CHKR     |        B|                                          
*                                                                               
MEDRLOPA EQU      %         ALTERNATE ENTRY FOR 'ALL' COPIES                    
         LW,R0    RB+MEDR#BYT        |    GET NUMBER OF BYTES READ              
MEDRVFCB NOP      1        |MOVE LEN |    ADJUST FOR VFC                        
         STW,R0   WB+MEDRWBYT       B|    AND SET FOR THE WRITE                 
         CAL1,1   WB       |WRITE B  |    WRITE THE 'B' BUFFER                  
*                                                                               
*                                                                               
         CW,R15   MEDRCTRL     |TEST |    IS 'STOP' REQUESTED ?/                
         BAZ      MEDRLOOP     |EXIT |     NO, DO TWO MORE COPY OPS             
MEDREXIT B        MED0EXIT                RETURN TO OVERLAYS TO PROCESS         
*                                                                               
*                                                                               
MEDRSTPS GEN,8,1,23  X'4B',1,0      STOP MEDIA, WAIT FOR START                  
         DATA     F7                                                            
         TITLE    '** MEDIA - STCB AND OTHER TABLES **'                         
         SPACE    2                                                             
         BOUND    16                                                            
*                                                                               
*                                                                               
MEDRSTCB GEN,9,1,22       0,1,MEDIATSK     ENTRY PSD, START ADDR                
         DATA     0                                                             
         DATA     MEDRSTCB+4,0      INTERMEDIATE PSD                            
         STM,R0   MEDRSTCB+10       SAVE REGISTERS                              
         BAL,R1   RBMSAVE           ENTER EXEC                                  
         GEN,8,24 X'B0',LMIRTS+MEDALMID   PCB POINT                             
         GEN,8,24 MEDATID,MEDRSTCB        TCB POINT                             
         DATA     TDRDLRET,0        ENTRY POINT TO DISPATCHER                   
         RES      16                REGISTERS                                   
         GEN,8,24 1,MEDRAST         AST, 1 WORD LONG                            
         GEN,8,24 16,MEDRACI        ACT, 16 WORDS LONG                          
         DATA     0,0,0,0           RDL, -, ALT PSD                             
*                                                                               
*                                                                               
MEDRACI  RES      16                ACI FOR MEDIA TASK                          
MEDRAST  DATA     RBMSD+ASTACT+ASTFA   AST FOR MEDIA JOB PAGES                  
         PAGE                                                                   
         SPACE    2                                                             
MEDRSTAK TEXT     '*MEDIA*'        STACK AREA; FILL WITH THIS TEXT             
         LIST     0                                                             
         DO1      (MEDRSSZ-4)/2     SAVE 1ST, LAST ENTRIES                      
         TEXT     '*MEDIA*'                                                    
*                                                                               
         LIST     1                                                             
         SPACE    2                                                             
MEDRIMAG TEXTC    '!!MEDIA MESSAGE TYPEOUT BUFFER.'                             
         SPACE    2                                                             
LASTWRDS TEXT     'MEDIAEND'        ASSEMBLE SOMETHING AFTER THE RES            
         PAGE                                                                   
         SPACE    3                                                             
UNUSED   EQU      300-%             SPACE REMAINING, GIVEN FIXED LENGTH         
*                                                                               
*                                                                               
        FIN      #MEDIA                                                         
         SPACE    2                                                             
         END                                                                    
