Table of Contents

DMKIOF Abstract

Statistics

Type ASSEMBLE
Source Lines : 1,944
Fixes Applied : 11
Most Recent Version : Thursday, December 7, 1978
Last Fix ID : [HRC105DK]

Synopsis

Module

       DMKIOF

Attributes

       SERIALLY REUSEABLE, PAGABLE, ENTERED VIA SVC

Operation

       I. HANDLE RECORDING FOR OBR/MDR RECORDS

             1. IF THE RECORDING CYLINDER IS FULL, RELEASE THE
                OBR/MDR RECORD AND SEND THE FULL CYLINDER ERROR
                MESSAGE (DMKIOF553E/DMKIOF551E) TO THE OPERATOR IF
                ONE HAS NOT BEEN SENT BEFORE. AFTERWARD, GO CHECK
                RECORDING QUES FOR OTHER REQUESTS.

             2. IF THERE IS ALREADY A RECORDING PAGE IN STORAGE,
                BYPASS GETTING A VIRTUAL BUFFER PAGE AND RECORDING
                PAGE. IF RECORDING PAGE IS NOT IN STORAGE, CALL
                DMKPGTVG TO OBTAIN A VIRTUAL BUFFER PAGE, CALL
                DMKRPAGT TO READ A PAGE FROM THE RECORDING CYLINDER
                INTO STORAGE AND CALL DMKPTRAN TO LOCK RECORDING PAGE
                IN STORAGE.

             3. DETERMINE IF ENOUGH SPACE IS AVAILABLE ON THE
                RECORDING PAGE FOR THE RECORD. IF NOT, GET ANOTHER
                PAGE FROM RECORDING CYLINDER AND TRY AGAIN.

             4. FOR AN OBR RECORD, THE DEVICE TYPE WILL BE ALTERED
                TO AN OS DEVICE TYPE IN ORDER TO ALLOW DECODING BY
                CPEREP (A CALL TO DMKIOC) .

             5. BUILD OBR/MDR RECORD USING THE ERRBLOK THEN
                MOVE THE OBR/MDR RECORD INTO AVAILABLE AREA
                IN THE RECORDING PAGE AND RELEASE THE ERRBLOK..

             6. IF RUNNING IN A VIRTUAL MACHINE, ISSUE AN SVC 76
                TO HAVE THE OBR/MDR RECORD ON THE REAL MACHINE
                RECORDING CYLINDER. IF THIS IS NOT A VIRTUAL
                MACHINE, UPDATE THE CONTROL HEADER IN THE RECORDING
                PAGE, TO POINT TO NEXT AVAILABLE AREA ON PAGE.

             7. MOVE PAGE NUMBER INTO THE OBR/MDR PAGE FIELD AND
                RELEASE THE OBR/MDR RECORD.

             8. ERASE QUE - IF AN ERASE REQUEST IS ON THE QUE,
                WRITE OUT LAST RECORDING PAGE TO RECORDING CYLINDER
                (IF NECESSARY), PUT NEXT REQUEST ON TOP OF QUE AND
                CALL DMKSTKCP TO STACK A CPEXBLOK TO RETURN TO
                DMKIOEFM. AFTERWARD, EXIT FROM RECORDER. IF ERASE QUE
                IS EMPTY, GO CHECK NEXT RECORDING QUE.

             9. MACHINE CHECK RECORDING QUE - IF THERE IS A MACHINE
                CHECK REQUEST ON THE QUE, WRITE OUT LAST RECORDING
                PAGE (IF NECESSARY), PUT NEXT REQUEST ON TOP OF QUE
                AND CALL DMKSTKCP TO STACK A CPEXBLOK TO RETURN
                TO DMKIOEMC. AFTERWARD, EXIT FROM RECORDER.
                IF MACHINE CHECK QUE IS EMPTY, GO CHECK NEXT
                RECORDING QUE.

            10. CHANNEL CHECK RECORDING QUE - IF THERE IS A CHANNEL
                CHECK REQUEST ON THE QUE, WRITE OUT LAST RECORDING
                PAGE TO RECORDING CYLINDER (IF NECESSARY), PUT
                NEXT REQUEST ON TOP OF QUE, GET POINTERS FOR THE
                NEXT RECORD, RELEASE THE CPEXBLOK AND GO TO CHANNEL
                CHECK'S SECTION OF RECORDER. IF CHANNEL CHECK QUE
                IS EMPTY, GO CHECK NEXT RECORDING QUE.

            11. OBR/MDR RECORDING QUE - IF THERE IS A OBR/MDR
                REQUEST ON THE QUE, PUT THE NEXT REQUEST ON TOP OF
                QUE, GET POINTERS TO NEXT ERRBLOK, RELEASE
                THE CPEXBLOK AND GO TO OBR/MDR SECTION OF
                RECORDER. IF OBR/MDR QUE IS EMPTY, GO CHECK NEXT
                RECORDING QUE.

            12. ENVIRONMENTAL RECORDING QUE - IF THERE AN MDR REQUEST
                ON THE QUE, PUT THE NEXT REQUEST ON TOP OF QUE
                AND CALL DMKSTKCP TO STACK CPEXBLOK TO RETURN TO
                DMKIOESD. AFTERWARD, EXIT FROM THE RECORDER.

            13. SVC 76 RECORDING QUE - IF THERE IS AN SVC 76
                REQUEST ON THE QUE, PUT THE NEXT REQUEST ON TOP OF
                QUE, GET POINTERS TO THE NEXT RECORD, RELEASE
                THE CPEXBLOK AND GO TO SVC 76 SECTION OF
                RECORDER. IF THE SVC 76 QUE IS EMPTY, GO WRITE
                RECORDING PAGE BACK TO THE RECORDING CYLINDER BY
                CALLING DMKRPAPT (IF NECESSARY). AFTERWARD,
                UNLOCK AND RELEASE RECORDING PAGE
                AND VIRTUAL BUFFER PAGE.

            14. STATISTICAL UPDATE QUE - IF THERE IS A UPDATE
                REQUEST ON THE QUE, PUT THE NEXT REQUEST ON THE TOP
                OF THE QUE, GET POINTERS TO NEXT ERRBLOK, RELEASE THE
                THE CPEXBLOK AND GO TO THE STATISTICAL UPDATE SECTION
                IF SDR QUEUE IS EMPTY GO CHECK 90% FULL CONDITION.

            15. DETERMINE IF THE RECORDING CYLINDER IS 90% FULL.
                IF 90 % FULL, WRITE AN ERROR MESSAGE TO THE
                OPERATOR (DMKIOF552E/DMKIOF550E).

            16. CLEAR THE MCH/CCH ENTRY FLAG AND THE RECORDING IN
                PROGRESS FLAG AND RETURN TO CALLER.

Calls to Other Routines

      DMKFREE - TO ALLOCATE FREE STORAGE FOR SDRBLOK