Table of Contents

DMKNLD Abstract

Statistics

Type ASSEMBLE
Source Lines : 1,233
Fixes Applied : 6
Most Recent Version : Thursday, December 7, 1978
Last Fix ID : [HRC106DK]

Synopsis

Module

       DMKNLD

Function

       TO PERFORM THE LOAD FUNCTION ON THE 3705 INDICATED.

Attributes

       REENTRANT, PAGEABLE, CALLED VIA SVC

Operation

       1. DETERMINE WHETHER ENTRY WAS FROM SYSTEM OR VIA NETWORK
          CONSOLE COMMAND. IF ENTERED FROM SYSTEM, GO TO STEP 10.
          OTHERWISE SET NETWORK CALL FLAG AND CONTINUE.
       2. CALL DMKSCNFD TO GET 'RADDR' OPERAND FROM COMMAND LINE.
          IF NO OPERAND, CALL DMKERMSG TO SEND MESSAGE DMKNLD021E.
       3. CALL DMKCVTHB TO CONVERT 'RADDR' TO BINARY. IF ERROR ON
          CONVERSION, CALL DMKERMSG TO SEND MESSAGE DMKNLD021E.
       4. CALL DMKSCNRU TO GET REAL DEVICE (RDEVBLOK) FOR 'RADDR'
          DEVICE. IF DEVICE DOES NOT EXIST, CALL DMKERMSG TO SEND
          MESSAGE DMKNLD040E.
       5. DETERMINE WHETHER 'RADDR' DEVICE IS A 370X. IF NOT, CALL
          DMKERMSG TO SEND DMKNLD006E MESSAGE.
       6. CHECK IF 370X IS CURRENTLY OFFLINE. IF SO, CALL DMKERMSG
          TO SEND MESSAGE DMKNLD046E.
       7. DETERMINE IF 370X IS DEDICATED TO A USER. IF YES, CALL
          DMKERMSG TO SEND MESSAGE DMKNLD140.
       8. IF REQUEST IS FOR THE DUMP FUNCTION, GO TO STEP 25:
          OTHERWISE CALL DMKSCNFD TO GET 'NCPNAME' OPERAND
          FOR LOAD PROCESSING. IF NO OPERAND IS FOUND, CALL
          DMKERMSG TO SEND MESSAGE DMKNLD026E.
       9. IF 'NCPNAME' OPERAND IS GREATER THAN EIGHT (8) CHARACTERS,
          CALL DMKERMSG TO SEND MESSAGE DMKNLD002E: OTHERWISE PLACE
          'NCPNAME' IN RDEVBLOK FOR 370X.
       10. TRANS IN DMKRNTBL
       11. SEARCH DMKRNTBL FOR THE ENTRY CORRESPONDING TO 'NCPNAME'
           IF NO ENTRY IS FOUND, CALL DMKERMSG TO SEND MESSAGE
           DMKNLD044E.
       12. CALL DMKSCNVS TO FIND TARGET DASD VOLUME ( AS INDICATED BY
           DMKRNTBL ENTRY ). IF NOT FOUND, CALL DMKERMSG TO
           SEND MESSAGE DMKNLD171E.
       13. DETERMINE WHETHER VOLUME IS CP-OWNED. IF NOT, CALL
           DMKERMSG TO SEND MESSAGE DMKNLD171E.
       14. CALCULATE MAXIMUM NUMBER OF PAGES / CYL FOR THE DEVICE
           CONTAINING THE TARGET VOLUME.
       15. CALL DMKPGTVG TO GET A PAGE OF CP PAGEABLE CORE FOR USE
           AS A BUFFER.
       16. TRANS IN DASD PAGE CONTAINING CCPARM (IE. FIRST RECORD
           OF NCP SAVED IMAGE) AND DETERMINE WHETHER THE NCP IMAGE
           WILL FIT IN THE SPECIFIED 370X. IF NOT, CALL DMKERMSG TO
           SEND MESSAGE DMKNLD170E. IF NCP WILL FIT, SAVE THE SIZE OF
           THE NCP AND THE ENTRY POINT ADDRESS (OBTAINED FROM CCPARM)
           ALSO FIND THE DASD ADDRESS OF THE FIRST NCP CORE IMAGE
           RECORD BY CALCULATING THE NUMBER OF RESOURCE DATA
           RECORDS FROM THE SIZE VALUE CONTAINED IN CCPARM.
       17. IF A NICLIST ALREADY EXISTS FOR THE 370X, CALCULATE ITS
           SIZE FROM VALUES IN 370X RDEVBLOK AND CALL DMKFRET TO
           FREE IT. ALSO MARK RDEVBLOK AS INACTIVE.
       18. GO TO IOBINIT SUBROUTINE TO GET AND INITIALIZE AN
           IOBLOK AND ADDITIONAL SAVE AREA FOR USE BY THE 370X
           I/O ROUTINE.
       19. IF LOAD FUNCTION WAS REQUESTED VIA CONSOLE COMMAND,
           ISSUE A TIO TO THE 370X TO DETERMINE ITS STATUS (THIS
           IS UN-NECESSARY IF THE CALLER WAS A SYSTEM ROUTINE).
       20. MARK 370X AS NOT READY AND GO TO SNDBOOTS SUB-ROUTINE
           TO TRANSMIT THE OS/360 LOADER BOOTSTRAP PROGRAM TO THE
           370X. ANY ERRORS THAT OCCUR DURING THE BOOTSTRAP
           ROUTINE WILL RESULT IN  MESSAGE:

                DMKNLD460E CTLR 'RADDR' LOAD FAILED; PROGRAM CHECK

       21. USING DMKRPAPT, READ IN THE CORE IMAGE RECORDS FROM THE
           TARGET DASD, BUILD CCWS TO DEBLOCK FROM 4K TO 512 BYTES,
           AND TRANSMIT CORE IMAGE TO 370X.
       22. TRANSMIT THE ENTRY POINT ADDRESS SAVED IN STEP 16 TO THE
           370X.
       23. READ IN THE FIRST RESOURCE DATA RECORD (IE. CCPARM), AND
           CALCULATE THE SIZE OF THE NICLIST NEED FOR THIS NCP,
           CALL DMKFREE TO OBTAIN STORAGE FOR THE NICLIST,AND
           FILL IN THE NEW NICLIST FROM DATA CONTAINED IN THE
           RESOURCE RECORDS (IF NECESSARY, ADDITIONAL RESOURCE
           RECORDS WILL BE READ IN).
       24. SEND COMPLETION RESPONSE, CALL DMKFRET TO FREE
           IOBLOK AND SAVE AREA, RELEASE BUFFER BACK TO CP, AND EXIT.

Calls to Other Routines

       DMKSCNFD - TO LOCATE NEXT ARGUMENT IN THE COMMAND LINE
       DMKCVTHB - CONVERT HEXADECIMAL ADDRESSES TO BINARY
       DMKSCNVU - TO LOCATE ADDRESSES OF THE VIRTUAL DEVICE BLOKS
       DMKSCNRU - TO LOCATE ADDRESSES OF THE REAL DEVICE BLOKS
       DMKQCNWT - TO OUTPUT MESSAGES TO THE TERMINAL
       DMKFREE - TO OBTAIN STORAGE FROM FREE STORAGE
       DMKFRET - TO RETURN STORAGE TO FREE STORAGE
       DMKPGTVG - TO GET A BUFFER OF PAGEABLE CP CORE.
       DMKPGTVR - TO RELEASE A BUFFER OF PAGEABLE CP CORE.
       DMKPTRUL - TO UNLOCK A PAGE IN VIRTUAL MACHINE
       DMKERMSG - TO SEND ERROR MESSAGES TO THE TERMINAL.
       DMKPTRAN - TO BRING A PAGE IN CORE
       DMKCVTBH - CONVERT BINARY DATA TO HEXADECMAL
       DMKSTKIO - TO STACK AN I/O BLOCK FOR PROCESSING
       DMKRPAGT - TO READ A PAGE IN CORE
       DMKSCNVS - TO SEARCH FOR A VOLUME
       DMKIOSQR - TO PERFORM I/O OPERATIONS ON 3705