Type ASSEMBLE
Source Lines : 977
Fixes Applied : 4
Most Recent Version : Thursday, July 5, 1979
Last Fix ID : [R13122DK]
Function
PAGABLE FRAME RECORD INITIALIZATION MODULE. CALLED AT CP INITIALIZATION TIME IF THE ERROR RECORDING CYLINDERS HAVE BEEN FORMATTED. IF RUNNING ON A 303X PROCESSOR, DMKIOH WILL READ FRAMES FROM ALL SRF DEVICES SPECIFIED ON THE 'SRF=' KEYWORD OF THE RIOGEN MACRO; THE FRAMES WILL BE FORMATTED AS RECORDS AND WRITTEN TO THE BEGINNING OF THE VM/370 ERROR RECORDING CYLINDERS. DMKIOH IS ALSO CALLED DURING CPEREP 'CLEARF' PROCESSING TO REINITIALIZE FRAME RECORDS WHEN RUNNING ON A 303X PROCESSOR.
Attributes
PAGABLE,SERIAL-REUSABLE,CALLED BY DMKIOGF1 VIA SVC.
Operation
1. CHECK FOR ANY SRF DEVICES BY EXAMINING THE LIST LOCATED BY DMKRIOSF. IF NONE, WRITE MESSAGE TO OPERATOR AND RETURN TO DMKIOGF1 AT STEP 18. CALL DMKFREE TO OBTAIN SPACE FOR AN IOBLOK PLUS CCW'S, AND INITIALIZE THE IOBLOK. 2. PREPARE TO READ FRAMES: - CALL DMKFREE TO OBTAIN SPACE FOR A 2K BUFFER - BUILD A STANDARD RECORD HEADER TO BE USED IN CONSTRUCTING ALL FRAME RECORDS 3. CALL DMKPGTVG TO OBTAIN A VIRTUAL PAGE TO USE IN CONSTRUCTING BLOCKED FRAME RECORDS. 4. CALL DMKRPAGT AND DMKPTRLK TO BRING THE FIRST RECORDING PAGE INTO STORAGE AND LOCK IT THERE. IF AN ERROR OCCURS ON THIS READ OPERATION, DISABLE RECORDING AND RETURN TO DMKIOGF1. 5. ISSUE 'ENABLE' COMMAND TO THE FIRST SRF. IF THE SRF IS INACCESSIBLE (OR IF IT WAS NOT SYS GEN'ED) WRITE ERROR MESSAGE TO THE OPERATOR AND GO TO STEP 11 TO CHECK FOR ANOTHER SRF. 6. IF THE SRF IS AVAILABLE, ISSUE A 'VERBAGE' COMMAND TO THE SRF TO INDICATE THAT CPU FRAMES ARE TO BE READ, FOLLOWED BY A 'RDVERB' COMMAND TO OBTAIN THE FIRST CPU FRAME. 7. MOVE THE FRAME TO THE RECORDING PAGE AS FOLLOWS: - MOVE THE LENGTH OF THE FRAME RECORD (LENGTH OF HEADER + LENGTH OF FRAME) INTO THE 1ST FULLWORD OF THE RECORD - MOVE THE 24-BYTE STANDARD RECORD HEADER - MOVE THE FRAME - UPDATE THE INDEX IN THE PAGE HEADER TO THE NEXT AVAILABLE FREE SPACE IN THE PAGE WHEN THE PAGE IS FULL, WRITE IT BACK TO THE RECORDING CYLINDERS, AND READ IN THE NEXT RECORDING PAGE TO CONTINUE THE FRAME RECORD CONSTRUCTION. 8. CONTINUE READING FROM THE SRF UNTIL ONE OF THE FOLLOWING OCCURS: (A) CHANNEL END, DEVICE END, UNIT EXCEPTION STATUS RECEIVED - END OF CPU FRAMES; GO TO STEP 9 TO READ DIRECTOR FRAMES NOW. (B) MORE THAN 50 CPU FRAMES READ - WRITE ERROR MESSAGE TO OPERATOR; CONTINUE TO FORMAT AS IF ONLY 50 FRAMES READ. (C) ERROR STATUS (NON-CE,DE) RECEIVED FROM RDVERB - IF ANY FRAME RECORDS ARE ON THE RECORDING CYLS, TURN ON FRMLAST IN LAST FRAME RECORD WRITTEN, SET DMKIOEFR TO INDICATE FRAMES PRESENT, AND GO TO STEP 11 TO CLEAN UP. IF NO FRAME RECORDS HAVE BEEN WRITTEN TO THE RECORDING CYLINDERS, GO TO STEP 11. 9. ISSUE A 'VERBAGE' COMMAND TO THE SRF TO RETRIEVE DIRECTOR FRAMES. PROCEED AS IN STEPS 6-8, EXCEPT WHEN CE,DE,UE STATUS IS DETECTED, GO TO STEP 10. 10. TURN ON 'LAST FRAME' FLAG IN THE LAST FRAME RECORD WRITTEN. SET DMKIOEFR TO INDICATE FRAME RECORDS EXIST ON THE RECORDING CYLINDERS. 11. IF THIS IS THE LAST SRF DEVICE IN THE LIST, INDICATE THIS RECORDING PAGE IS FULL (TO PREVENT ERROR RECORDS FROM BEING PLACED ON THE SAME PAGE WITH FRAME RECORDS), AND WRITE THE PAGE BACK TO THE RECORDING CYLINDERS. 12. ISSUE A 'DISABLE' COMMAND TO DETACH FROM THE SRF. CHECK FOR ANOTHER SRF DEVICE BY EXAMINING THE LIST LOCATED BY DMKRIOSF. IF NO MORE SRF'S, GO TO STEP 13. IF ANOTHER SRF IS FOUND, RETURN TO STEP 5 TO ATTEMPT TO READ FRAMES FROM THIS SRF. 13. CALCULATE DMKIOEHS VALUE FOR USE BY CPEREP PROCESSING. THIS FIELD IS THE DASD START OF THE ERROR RECORDS (I.E., FIRST RECORDING PAGE AFTER ALL FRAME RECORDS) IN CCPD FORMAT. 14. CALL DMKPGTVR TO FREE THE VIRTUAL PAGE GOTTEN IN STEP 3. 15. CALL DMKFRET TO RELEASE THE IOBLOK, CCW'S, AND 2K BUFFER SPACE. 16. RETURN TO DMKIOGF1 AT STEP 18.
Calls to Other Routines
DMKPGTVG - TO GET VIRTUAL PAGES. DMKPGTVR - TO RELEASE VIRTUAL PAGES. DMKQCNWT - TO WRITE MSGS. TO THE OPERATOR. DMKRPAGT - TO READ A PAGE INTO CORE. DMKRPAPT - TO WRITE A PAGE TO RECORDING CYLINDER. DMKERMSG - TO WRITE OUT ERROR MESSAGES DMKPTRLK - TO LOCK A PAGE. DMKPTRUL - TO UNLOCK A PAGE.