Type ASSEMBLE
Source Lines : 1,233
Fixes Applied : 6
Most Recent Version : Thursday, December 7, 1978
Last Fix ID : [HRC106DK]
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