LSB TITLE 'DMSLSB (CMS) VM/370 - RELEASE 6' 00001000 SPACE 2 00002000 *. 00003000 * 00004000 * 00005000 * 00006000 * MODULE NAME: 00007000 * 00008000 * DMSLSB (LDRSUBS) 00009000 * 00010000 * CONTENTS: 00011000 * 00012000 * CONTAINS THE FOLLOWING LOADER SUBROUTINES: DMSLSBA, 00013000 * DMSLSBB, DMSLSBC, DMSLSBD 00014000 * 00015000 * SUBROUTINE NAME: 00016000 * 00017000 * DMSLSBA 00018000 * 00019000 * FUNCTION: 00020000 * 00021000 * HEX TO BINARY CONVERSION ROUTINE 00022000 * 00023000 * ATTRIBUTES: 00024000 * 00025000 * REENTRANT, RESIDENT 00026000 * 00027000 * ENTRY POINTS: 00028000 * 00029000 * DMSLSBA - FROM VARIOUS ROUTINES IN LOADER 00030000 * 00031000 * ENTRY CONDITIONS: 00032000 * 00033000 * R4 - NUMBER OF CHARACTERS TO CONVERT 00034000 * R5 - ADDRESS OF HIGH ORDER CHARACTER 00035000 * R0 - RETURN REGISTER 00036000 * R1 - ADDRESS OF DMSLSBA 00037000 * 00038000 * EXIT CONDITIONS: 00039000 * 00040000 * NORMAL - 00041000 * RETURNS VIA R0 WITH CONVERSION DONE 00042000 * 00043000 * ERROR - 00044000 * IF INVALID HEX CHARACTER IS ENCOUNTERED DMSLSBA EXITS 00045000 * TO DMSLDRC IN DMSLDR. 00046000 * 00047000 * CALLS TO OTHER ROUTINES: 00048000 * 00049000 * DMSLDRC - FOR INVALID HEX ADDRESS 00050000 * 00051000 * EXTERNAL REFERENCES: 00052000 * 00053000 * NONE 00054000 * 00055000 * TABLES/WORKAREAS: 00056000 * 00057000 * NONE. 00058000 * 00059000 * REGISTER USAGE: 00060000 * 00061000 * R0 - RETURN 00062000 * R1 - BASE 00063000 * R2 - ERROR EXIT 00064000 * R3,4,5 - WORK 00065000 * 00066000 * OPERATION: 00067000 * 00068000 * 1. IN A SERIES OF TESTS BEGINNING AT LOCATION L1, THE 00069000 * ROUTINE DETERMINES WHETHER THE FIRST HEXADECIMAL 00070000 * CHARACTER TO BE CONVERTED IS A VALID NUMERIC, A VALID 00071000 * ALPHABETIC, OR AN INVALID CHARACTER. 00072000 * 00073000 * 2. IF OPERATION 1 INDICATES THAT THE CHARACTER IS A VALID 00074000 * NUMBERIC CHARACTER (0-9), THE ROUTINE CONVERTS THE 00075000 * HEXADECIMAL CHARACTER TO BINARY BY CLEARING ITS 00076000 * HIGH-ORDER (LEFTMOST) FOUR BITS. THE ROUTINE THEN 00077000 * PERFORMS OPERATION 5, BELOW. 00078000 * 00079000 * 3. IF OPERATION 1 INDICATES THAT THE CHARACTER IS A VALID 00080000 * ALPHABETIC CHARACTER (A-F), THE ROUTINE CONVERTS THE 00081000 * HEXADECIMAL CHARACTER TO BINARY BY SUBTRACTING A 00082000 * CONSTANT FROM THE CHARACTER. THE ROUTINE THEN PERFORMS 00083000 * OPERATION 5, BELOW. 00084000 * 00085000 * 4. IF OPERATION 1 INDICATES THAT THE CHARACTER IS INVALID, 00086000 * | THE ROUTINE BRANCHES TO DMSLDRC. 00087000 * 00088000 * 5. WHEN THE ROUTINE HAS CONVERTED A VALID NUMERIC OR VALID 00089000 * ALPHABETIC CHARACTER TO BINARY FORM, IT SHIFTS THE 00090000 * GENERAL REGISTER IN WHICH IT RETURNS THE ENTIRE 00091000 * CONVERTED NUMBER FOUR BITS TO THE LEFT AND INSERTS THE 00092000 * CONVERTED DIGIT IN THE VACANT LOW-ORDER (RIGHTMOST) 00093000 * FOUR BITS OF THAT REGISTER. 00094000 * 00095000 * 6. THE ROUTINE THEN DETERMINES WHETHER IT HAS CONVERTED 00096000 * ALL THE CHARACTERS THAT WERE PASSED TO IT FOR 00097000 * CONVERSION. IF IT HAS NOT, IT BRANCHES WITHIN ITSELF 00098000 * TO LOCATION L1 AND REPEATS THE CONVERSION PROCESS FOR 00099000 * THE NEXT CHARACTER; OTHERWISE, IT RETURNS TO THE 00100000 * CALLING ROUTINE. 00101000 * 00102000 * EXIT: 00103000 * 00104000 * THIS ROUTINE HAS TWO EXITS: 00105000 * 00106000 * 1. IF THE ROUTINE ENCOUNTERS AN INVALID HEXADECIMAL 00107000 * | CHARACTER, IT EXITS TO DMSLDRC, IN DMSLDR 00108000 * 00109000 * 2. IF THE ROUTINE ENCOUNTERS NO INVALID HEXADECIMAL 00110000 * CHARACTER DURING THE PROCESS OF CONVERTING THE 00111000 * ENTIRE SPECIFIED NUMBER, IT EXITS TO THE ADDRESS 00112000 * CONTAINED IN LOCATION RETT. THIS ADDRESS IS THE 00113000 * RETURN ADDRESS SPECIFIED BY THE LOADER ROUTINE OR 00114000 * PROBLEM PROGRAM THAT LINKED TO THIS ROUTINE. 00115000 * 00116000 * SUBROUTINE NAME: 00117000 * 00118000 * DMSLSBB 00119000 * 00120000 * FUNCTION: 00121000 * 00122000 * ADD TO THE STRING OF LOCATIONS WAITING FOR AN 00123000 * UNDEFINED SYMBOL TO BE DEFINED. 00124000 * 00125000 * ATTRIBUTES: 00126000 * 00127000 * REENTRANT, RESIDENT 00128000 * 00129000 * ENTRY POINTS: 00130000 * 00131000 * DMSLSBB - FROM RLD ROUTINE IN DMSLDR 00132000 * 00133000 * ENTRY CONDITIONS: 00134000 * 00135000 * R3 - LOCATION AT WHICH CONSTANT SHOULD BE STORED 00136000 * R10 - POINTER TO FLAG BYTE 00139000 * R11 - ONE 00140000 * R12 - ENTRY OF SYMBOL IN REFTBL 00141000 * R13 - SAVE AREA LOCATION 00142000 * R14 - RETURN 00143000 * 00144000 * EXIT CONDITIONS: 00145000 * 00146000 * NORMAL - BR ON R14 00147000 * 00149000 * CALLS TO OTHER ROUTINES: 00150000 * 00151000 * DMSFREB 00152000 * 00153000 * EXTERNAL REFERENCES: 00154000 * 00155000 * REFTBL 00156000 * 00157000 * TABLES/WORKAREAS: 00158000 * 00159000 * ACQUIRES CONSTANT BLOCK IF NECESSARY 00160000 * 00161000 * REGISTER USAGE: 00162000 * 00163000 * AS DEFINED IN ENTRY CONDITIONS 00164000 * 00165000 * OPERATION: 00166000 * 00167000 * 2. GET A CONSTANT BLOCK FROM FREE STORAGE AND SET IT UP. 00172000 * 00173000 * 3. RESTORE REGS AND RETURN ON R14. 00174000 * 00175000 * 00182000 * SUBROUTINE NAME: 00183000 * 00184000 * DMSLSBC 00185000 * 00186000 * FUNCTION: 00187000 * 00188000 * TO REMOVE UNDEFINED BIT FROM REFTBL ENTRY AND REPLACE 00189000 * THE ADCON WITH RELOCATED VALUE. @V1D1705 00190100 * 00192000 * ATTRIBUTES: 00193000 * 00194000 * REUSEABLE, RESIDENT 00195000 * 00196000 * ENTRY POINTS: 00197000 * 00198000 * DMSLSBC - TO MOVE CONSTANTS TO CORE LOCATIONS 00199000 * 00200000 * ENTRY CONDITIONS: 00201000 * 00202000 * R1 - ABSOLUTE LOCATION OF SYMBOL 00203000 * R12 - ENTRY ADDRESS IN REFTBL 00204000 * R13 - SAVE AREA 00205000 * R14 - RETURN 00206000 * 00207000 * CALLS TO OTHER ROUTINES: 00208000 * 00209000 * DMSFREB 00211000 * EXTERNAL REFERENCES: 00212000 * 00213000 * REFTBL 00214000 * 00215000 * TABLES/WORKAREAS: 00216000 * 00217000 * NONE 00218000 * 00219000 * REGISTER USAGE: 00220000 * 00221000 * R1,12-14 AS DEFINED IN ENTRY CONDITIONS 00222000 * R2-10,15 WORK 00223000 * R11 BASE 00224000 * 00225000 * OPERATION: 00226000 * 00227000 * 1. CHECK UNDEFINED BIT. IF NOT ON RETURN ON R14. 00228000 * 00229000 * 2. TURN OFF UNDEFINED BIT. 00230000 * 00231000 * 3. ANY CONSTANT BLOCKS? NO, RETURN ON R14. OTHERWISE 00232000 * CONTINUE. 00233000 * 00234000 * 4. CHECK COMP BIT. IF NOT ON ADD ABSOLUTE LOCATION TO 00235000 * VALUE OF CONSTANT. IF ON, SUBTRACT ABSOLUTE LOCATION 00236000 * FROM CONSTANT AND COMPLEMENT TO THE RESULT. 00237000 * 00238000 * 5. MOVE CONSTANT TO MEMORY ADDRESSES FOR THIS CONSTANT 00239000 * BLOCK AND FREE CONSTANT BLOCK. IF ANY MORE C B S GO TO 00240000 * STEP 4. 00241000 * 00242000 * SUBROUTINE NAME: 00243000 * 00244000 * DMSLSBD 00245000 * 00246000 * FUNCTION: 00247000 * 00248000 * SUBROUTINE TO PROCESS LDR OPTIONS. 00249000 * 00250000 * ATTRIBUTES: 00251000 * 00252000 * REENTRANT, NON-RESIDENT 00253000 * 00254000 * ENTRY POINTS: 00255000 * 00256000 * DMSLSBD - FROM DMSLDRB TO PROCESS OPTIONS 00257000 * 00258000 * ENTRY CONDITIONS: 00259000 * 00260000 * R2 - PLIST 00261000 * R13 - ADDRESS OF LDRST 00262000 * R14 - RETURN 00263000 * R15 - ADDRESSABILITY 00264000 * 00265000 * EXIT CONDITIONS: 00266000 * 00267000 * NORMAL - RETURN VIA R14 TO CALLER 00268000 * ERROR - EXIT TO DMSLDRD 00269000 * 00270000 * CALLS TO OTHER ROUTINES: 00271000 * 00272000 * DMSLSBA - FOR HEX TO BINARY CONVERSION OF ORIGIN ADDRESS 00273000 * DMSLDRD - OPTION ERROR 00274000 * 00275000 * EXTERNAL REFERENCES: 00276000 * 00277000 * FREEST NUCON 00278000 * 00279000 * TABLES/WORKAREAS: 00280000 * 00281000 * NONE 00282000 * 00283000 * REGISTER USAGE: 00284000 * 00285000 * R9 NUCON 00286000 * R12 BASE 00287000 * R13 LDRST 00288000 * R14 RETURN 00289000 * R0-5,10-11,15 WORK 00290000 * 00291000 * OPERATION: 00292000 * 00293000 * FOR EACH OPTION IN THE USER'S PLIST A SCAN IS MADE OF 00294000 * AN OPTION TABLE WITHIN THE SUBROUTINE FOR A VALID 00295000 * MATCH. FOR EACH MATCH THE APPROPRIATE BIT IS TURNED 00296000 * ON OR ACTION TAKEN. WHEN ALL OPTIONS ARE PROCESSED 00297000 * RETURN IS MADE TO THE CALLER VIA R1. IF AN OPTION IS 00298000 * NOT LOCATED, AN ERROR MESSAGE IS ISSUED. 00299000 * 00300000 * RESET ENTRY 00301000 * 00302000 * THE STADDR LOCATION WHICH HOLDS THE START EXECUTION 00303000 * ADDRESS IS SET TO ZERO. WHEN THE ADDRESS OF 'ENTRY' 00304000 * IS DETERMINED, IT IS PLACED INTO STADDR. 00305000 * 00306000 * START 00307000 * 00308000 * AFTER LOADING, EXECUTION CONTROL IS TO PASS TO THE 00309000 * ENTRY POINT SPECIFIED BY STADDR. A PSW IS SET WITH 00310000 * THE STADDR LOCATION AS THE INSTRUCTION ADDRESS. 00311000 * AFTER THE LOADER COMPLETES ITS OPERATIONS, THE PSW IS 00312000 * LOADED. 00313000 * 00314000 * CLEAR 00315000 * 00316000 * STORAGE IS ZEROED OUT FROM CURRENT VALUE OF THE 00317000 * LOCATION COUNTER TO THE VALUE OF LOWEXT. 00318000 * 00319000 * SAME 00320000 * 00321000 * (FOR INCLUDE ONLY) INDICATES THAT THE OPTIONS IN 00322000 * EFFECT FOR ANY PREVIOUS LOAD OR INCLUDE COMMAND 00323000 * (EXCEPT FOR ORIGIN) WILL REMAIN IN EFFECT. 00324000 * OTHERWISE, UNSPECIFIED OPTIONS ASSUME THEIR DEFAULT 00325000 * VALUES. SWTICHES REMAIN SET AFTER A LOAD OR INCLUDE 00326000 * COMMAND COMPLETES. 00327000 * 00328000 * ORIGIN ADDRESS|TRANS 00329000 * 00330000 * SPECIFIES THE ADDRESS AT WHICH THE ADDRESS IS PLACED 00331000 * IN LOCCNT. IF TRANS IS ENTERED, THE FILE IS LOADED 00332000 * INTO THE TRANSIENT AREA. IF NO ORIGIN IS SPECIFIED, 00333000 * THE CURRENT VALUE OF LOCCNT IS USED. 00334000 * 00335000 * MAP|NOMAP, AUTO|NOAUTO, NOINV|INV, 00336000 * TYPE|NOTYPE, NOREP|REP, NOLIBE|LIBE 00337000 * 00338000 * SWITCHES ARE SET TO INDICATE IF: A LOAD MAP IS TO BE 00339000 * CREATED; AN AUTOMATIC TEXT FILE SEARCH IS TO OCCUR 00340000 * FOR UNRESOLVED REFERENCES; INVALID AND REP CARDS ARE 00341000 * TO BE INCLUDED IN THE LOAD MPA; THE LOAD MAP IS TO 00342000 * BE TYPED TO THE TERMINAL; TXTLIBS ARE TO BE SEARCHED 00343000 * FOR UNRESOLVED REFERENCES. 00344000 * 00345000 *. 00346000 EJECT 00347000 DMSLSB START 0 @V305665 00348100 ENTRY DMSLSBA @V305665 00348200 ENTRY DMSLSBB,DMSLSBC,DMSLSBD 00349000 EXTRN DMSLDRC,DMSLDRD 00350000 USING LDRST,R13 00351000 USING NUCON,R0 00352000 * 00353000 EJECT 00354000 *********************************************************************** 00355000 * 00356000 * HEX-BIN CONVERSION ROUTINE 00357000 * PLACE THE NUM OF CHAR IN REG-4 00358000 * ADDR OF HIGH ORDER IN REG-5 00359000 * LINKAGE-- L 1,HEXADD 00360000 * RETURN ADDR IN REG-0 00361000 * 00362000 * ANSWER RETURNED IN REG-0 00363000 * 00364000 *********************************************************************** 00365000 * 00366000 DMSLSBA EQU * @V305665 00366100 USING DMSLSBA,R1 00367000 STM R8,R9,APSV+32 SAVE DMSLDR BASE REGS @VA02089 00367100 ST 0,RETT 00368000 SR 3,3 00369000 LR 0,3 00370000 LA R2,HXBINV 00371000 L1 CLI 0(5),C'0' CMP TO VALUE OF ZERO 00372000 BC 4,L3 BR IF NOT 0 THRU 9 00373000 CLI 0(5),C'9' CMP TO VALUE OF NINE 00374000 BCR 3,2 00375000 * CLEAR HIGH ORDER BITS OF CHAR 00376000 IC 3,0(0,5) * 00378000 SH R3,=X'00F0' CLEAR ZONE @VA00857 00378100 L2 SLL 0,4 * 00379000 AR 0,3 * 00380000 LA 5,1(,5) 00381000 BCT 4,L1 00382000 L 2,RETT 00383000 BCR 15,2 00384000 L3 CLI 0(5),C'A' 00385000 BCR 4,2 BR IF VALUE LESS 00386000 CLI 0(5),C'F' 00387000 BCR 3,2 00388000 IC 3,0(0,5) 00389000 SH 3,CONST 00390000 BC 15,L2 00391000 HXBINV LM R8,R9,APSV+32 DMSLDR BASE REGS 00392000 TM RETT,X'F0' CALLED BY DMSLSBD 00393000 BNO LSBDRET YES, SPECIA$ RETURN 00394000 L R2,ABADCRD ERROR ROUTINE IN DMSLDR 00395000 BR R2 00396000 LSBDRET OI RETT,X'80' INDICATE ERROR DURING CONVERSION 00397000 L R2,RETT RETURN ADDRESS 00398000 BR R2 RETURN TO DMSLSBD 00399000 DS 0H 00400000 CONST DC X'00B7' 00401000 DROP 1 00402000 EJECT 00403000 * 00404000 * 00405000 *********************************************************************** 00406000 * 00407000 * APOINT - ADD TO THE POINTER TABLES 00408000 * 00409000 * THIS ROUTINE ADDS TO THE STRING OF LOCATIONS WAITING FOR 00410000 * AN UNDEFINED SYMBOL TO BE DEFINED (BY AN ENTRY POINT OR 00411000 * AN ICS CARD) 00412000 * IT IS REACHED BY A BRANCH FROM THE RLD SUBROUTINE 00413000 * 00414000 * REGISTER USE 00415000 * 00416000 * 3. LOCATION AT WHICH CONSTANT SHOULD BE STORED 00417000 * 10. POINTER TO FLAG BYTE 00420000 * 12. ENTRY OF SYMBOL IN REFTBL 00422000 * 13. SAVE AREA LOCATION 00423000 * 14. RETURN LOCATION 00424000 * 00425000 *********************************************************************** 00426000 * 00427000 DMSLSBB STM R0,R15,APSV SAVE REGISTERS @V1D1705 00428100 USING DMSLSBB,R7 @V1D1705 00428200 DMSFREE DWORDS=1,TYPCALL=BALR @V1D1705 00428300 L R8,12(,R12) GET PATCH BLOCK CHAIN BEGINNING @V1D1705 00428400 ST R1,12(R12) QUEUE NEW BLOCK @V1D1705 00428500 ST R8,0(R1) FOWARD PTR IF ANY @V1D1705 00428600 ST R3,4(R1) LOCATION OF ADCON @V1D1705 00428700 MVC 4(1,R1),0(R10) SAVE RLD FLAG BYTE @V1D1705 00428800 NI 4(R1),X'0E' BUT ONLY LENGTH AND SIGN @V1D1705 00428900 LM R0,R15,APSV RESTORE REGISTERS @V1D1705 00429000 BR R14 RETURN TO DMSLDR @V1D1705 00429100 EJECT 00474000 * 00475000 *********************************************************************** 00476000 * 00477000 * ADDEF - SUBROUTINE TO REMOVE UNDEFINED BIT FROM REFTBL AND 00478000 * REPLACE THE STRING ADDRESSES WITH THEIR PROPER VALUE 00479000 * 00480000 * REGISTER SETTINGS UPON ENTRY 00481000 * 1. ABSOLUTE LOCATION OF SYMBOL 00482000 * 12. ENTRY POINT IN REFTBL 00483000 * 13. SAVE AREA LOCATION 00484000 * 14. RETURN 00485000 * 00486000 *********************************************************************** 00487000 DMSLSBC TM 8(R12),X'80' IS NAME UNDEFINED @V1D1705 00488100 BCR 8,R14 NO, RETURN @V1D1705 00488200 NI 8(R12),X'7F' YES, RESET IT @V1D1705 00488300 STM R0,R15,APSV SAVE REGISTERS @V1D1705 00488400 BALR R11,0 @V1D1705 00488500 USING *,R11 @V1D1705 00488600 L R10,12(,R12) PTR TO 1ST PCB @V1D1705 00488700 LTR R10,R10 ANY PCB'S @V1D1705 00488800 BZ ADRET NO, RETURN @V1D1705 00488900 LR R2,R1 PROTECT RH ADDRESS @V1D1705 00489000 LOOP SR R5,R5 GET A ZERO @V1D1705 00489100 ST R5,TMPLOC CLEAR WORK AREA @V1D1705 00489200 IC R5,4(R10) GET RLD FLAG BYTE @V1D1705 00489300 SRL R5,2 LENGTH BITS TO LOW ORDER @V1D1705 00489400 LA R6,TMPLOC+3 SET ADJUCTED WORK PTR @V1D1705 00489500 SR R6,R5 R5 HAS ADCON LENGTH-1 @V1D1705 00489600 L R3,4(R10) GET LOCATION OF ADCON @V1D1705 00489700 EX R5,GETVAL MOVE ADCON VALUE TO WORK AREA @V1D1705 00489800 LR R8,R2 GET REFERENCED ADDR. @V1D1705 00489900 TM 4(R10),X'02' IS ADCON VALUE TO BE ADDED @V1D1705 00490000 BZ CALC YES @V1D1705 00490100 LNR R8,R2 COMPLEMENT REFERENCED ADDR. @V1D1705 00490200 CALC A R8,TMPLOC ADD TO ADCON VALUE @V1D1705 00490300 ST R8,TMPLOC PLACE IN WORK AREA @V1D1705 00490400 EX R5,STVAL MOVE ADCON VALUE TO ADCON LOCATIO@V1D1705 00490500 LR R1,R10 SET TO FREE PCB @V1D1705 00490600 L R10,0(,R10) NEXT PCB @V1D1705 00490700 DMSFRET DWORDS=1,TYPCALL=BALR,LOC=(1) @V1D1705 00490800 LTR R10,R10 ANY MORE PCB'S @V1D1705 00490900 BNZ LOOP YES @V1D1705 00491000 ADRET LM R0,R15,APSV RESTORE REGISTERS @V1D1705 00491100 BR R14 RETURN TO DMSLDR @V1D1705 00491200 SPACE 1 @V1D1705 00491300 GETVAL MVC 0(*-*,R6),0(R3) MOVE FROM ADCON LOCATION @V1D1705 00491400 STVAL MVC 0(*-*,R3),0(R6) MOVE BACK @V1D1705 00491500 SPACE 1 @V1D1705 00491600 ABADCRD DC A(DMSLDRC) 00548000 EJECT 00550000 DMSLSBD EQU * 00551000 USING *,R12 00552000 LR R12,R15 00553000 ST R14,APSV+56 SAVE R14 00554000 NI MODFLGS,255-CLEAROP RESET CLEAR OPTION FIELD @VA02440 00554100 FNDOPT EQU * @VA09710 00555000 CLI 0(R2),X'FF' IF AT END OF LIST @VA09710 00555500 BE INCPTR1 GO SAVE ADDRESS @VA09710 00556000 CLI 0(R2),C'(' LEFT PAREN ? @VA09710 00556500 BE PARKILL GO PROCESS OPTIONS @VA09710 00557000 LA R2,8(R2) ELSE, POINT TO NEXT PARM @VA09710 00557500 B FNDOPT AND GO CHECK IT. @VA09710 00558000 PSTART LA R3,CONSPAR OPTION LIST 00561000 LA R4,12 LENGTH 00562000 LA R5,CONSEND END OF OPTION LIST 00563000 XPARLP CLC 0(8,2),0(3) COMPARE PARAM TO LIST 00564000 BE PARFND FOUND - PROCESS 00565000 BXLE 3,4,XPARLP BACK FOR ANOTHER 00566000 MVC OUTBUF(8),0(R2) INVALID OPTION TO MSG BUFFER 00567000 LM R0,R9,APSV RESTORE SOME REGS 00568000 LA R5,ERR404E ERROR CODE FOR DMSLIO 00569000 L R15,ADMSLDRD ADR OF FATAL ERROR RTN 00570000 BR R15 TYPE MSG AND TERMINATE 00571000 PARKILL LA R2,8(0,R2) NEXT OPTION 00572000 CLI 0(2),X'FF' END OF LIST? 00573000 BE INCPTR1 YES, END OF OPTIONS 00574000 CLI 0(R2),C')' END OF LIST ? 00575000 BNE PSTART NO - KEEP AT IT 00576000 LA R2,8(,R2) GET TO PARAM FOR XEQ @VA00896 00577100 INCPTR1 ST R2,FRSTSDID SAVE END ADDR FOR EXECUTION @VA00896 00577200 TM MODFLGS,CLEAROP CLEAR OPTION? @VA02440 00577400 BO CLRCOR YES, CLEAR AREA @VA02440 00577500 RESTREGS LM R0,R15,APSV RESTORE REGISTERS @VA02440 00577600 BR R14 YES EXIT TO INIT CARD READ 00578000 SPACE 00579000 PARFND EX 0,8(0,3) PERFORM APPROPRIATE ACTION 00580000 B PARKILL NEXT USER OPTION 00581000 SPACE 3 00582000 CLRCOR STM 0,12,APSV SAVE R0 THRU R12, JS 00583000 L R11,LOCCT GET FIRST LOCATION @VA02440 00584400 LA R11,0(,R11) MAKE SURE NO HI-ORDER BYTE @VA02440 00584800 C R11,ADTRANS CLEAR TRANS. AREA? @VA02440 00585200 BNE CONTINUE NO, CONTINUE PROCESSING @VA02440 00585600 L R10,ALAST POINT TO END OF TRANS. AREA @VA02440 00586000 B RDDOWN @VA02440 00586400 CONTINUE C R11,FREELOWE GREATER THAN FREELOWE? @VA03976 00586800 BNL RESTREGS YES, ERROR @VA03976 00586900 ST R11,MAINHIGH INITIALIZE MAINHIGH @VA03976 00587000 LA R11,4096-1(,R11) ADD (PAGE-1) VALUE @VA02440 00587200 N R11,=X'00FFF000' TRUNCATE TO PAGE BDRY @VA02440 00587600 L R10,FREELOWE LOW EXTENT INTO R10 @VA02440 00588000 RDDOWN SRL R10,12 @VA02440 00588400 BCTR R10,0 SUBTRACT 1 @VA02440 00588800 SLL R10,12 TRUNCATE TO PAGE BDRY @VA02440 00589200 CR R11,R10 PAGE GREATER? @VA04106 00589400 BNH REL NO, RELEASE THOSE PAGES @VA04106 00589500 L R11,FREELOWE GET UPPER EXTENT @VA04106 00589600 B NOREL CLEAR THE REST @VA04106 00589700 REL DC X'83BA0010' RELEASE PAGES @VA04106 00589800 C R11,ADTRANS BEGINNING OF TRANS AREA? @VA02440 00590000 BE RESTREGS YES, GO RESTORE REGS @VA02440 00590400 NOREL L R10,MAINHIGH GET MAINHIGH @VA04106 00590500 SR R11,R10 COMPUTE DIFFERENCE @VA04106 00591500 COMPU S R11,=F'255' SUBTRACT LENGTH FOR 'XC' @VA04106 00592500 BNP USEEX USE EXISTING VALUE @VA04106 00593500 XC 0(255,R10),0(R10) CLEAR AREA @VA04106 00594500 A R10,=F'255' GET NEXT POSITION @VA04106 00595500 B COMPU COMPUTE MORE @VA04106 00596500 USEEX A R11,=F'254' RESTORE ORIGINAL VALUE - 1 @VA04106 00597500 BM RESTREGS YES, GET OUT @VA04106 00598500 EX R11,MOVEIT DO MOVE @VA04106 00599500 B RESTREGS RESTORE REGISTERS @VA02440 00600500 MOVEIT XC 0(*-*,R10),0(R10) CLEAR AREA @VA04106 00600600 SPACE 00602000 CONSLC LA R2,8(0,R2) GET TO PARAMETER FOR ORIGIN 00603000 STM 0,6,APSV SAVE 00604000 CLC 0(8,R2),=CL8'TRANS' ORIGIN TRANS ? 00605000 BE TRANS YES 00606000 LA R5,8 SET FOR DEC @VA02855 00606300 LR R4,R2 SAVE R4 FOR LIO IN CASE @VA02855 00606600 SR R4,R5 DEC FOR LIO IN CASE (POINT TO @VA02855 00606900 * CORRECT PLACE) 00607200 MVC OUTBUF(8),0(R4) MOVE TO MESSAGE AREA @VA02855 00607500 LA R5,58 00609000 CLI 0(R2),X'FF' ORIGIN SPECIFIED 00610000 BE ERRXT NO, ERROR 00611000 CLI 0(R2),C')' 00612000 BE ERRXT 00613000 LR R4,R2 SET R4 TO ADDR. PORTION @V1D1705 00614100 ORGLP CLI 0(R4),C' ' END OF GRAPHICS @V1D1705 00614200 BE ENDLP YES @V1D1705 00614300 LA R4,1(,R4) SET TO NEXT CHAR. @V1D1705 00614400 SR R4,R2 GET LENGTH TO DATE @V1D1705 00614500 CH R4,=H'8' CHECK FOR LIMIT @V1D1705 00614600 BE ENDLP1 LAST CHAR. @V1D1705 00614700 AR R4,R2 RESTORE POINTER @V1D1705 00614800 B ORGLP NEXT CHAR. @V1D1705 00614900 ENDLP SR R4,R2 LENGTH OF ADDRESS @V1D1705 00615000 ENDLP1 LR R5,R2 ADDRESS OF GRAPHICS @V1D1705 00615100 B SLCA COMMON CODE 00618000 TRANS SR R0,R0 ZERO IT @VA02440 00619500 LM R10,R11,ADTRANS 00621000 ST R0,LASTTMOD CLEAR TRANSAREA NAME 00622000 ST R10,LOCCT SET LOC. CTR. 00623000 OI MODFLGS,CLEAROP SET CLEAR FLAG @VA02440 00624300 TM FLAGS,RESET RESET OPTION ON? @VA02440 00624600 BO PARKILL YES @VA02440 00624900 ST R10,BRAD SET STARTING ADDRESS @VA02440 00625200 B PARKILL DO NEXT OPTION @VA02440 00625500 SLCA MVC OUTBUF(8),0(R2) SET FOR MSG SUBSTITUTION @VA01241 00626100 L R1,=A(DMSLSBA) ADDR OF HEX-BINARY CONVERSION 00627000 SR R0,R0 CLEAR R0 00628000 LA R0,RETSLC RETURN FROM DMSLSBA 00629000 BR R1 CONVERT GRAPHICS TO HEX 00630000 RETSLC LTR R2,R2 CHECK R2 00631000 BM ERRSLC IF MINUS THE GRAPHICS WERE INVALID 00632000 TM BATFLAGS,BATLOAD BATCH BEING LOADED? @VA01284 00633100 BO ORIGOK IF SO, ALLOW LOW LOAD @VA01284 00633200 TM MODFLGS,SYSLOAD SYSTEM FUNCTION ? @VA04666 00633210 BO ORIGOK IF SO, ALLOW LOAD @VA04666 00633220 C R0,=XL4'00FFFFFF' IS THIS A VALID ADDRESS? @VA03976 00633230 BH ERRSLC NO, INVALID ORIGIN @VA03976 00633260 C R0,AUSRAREA ARE WE BELOW USER STORAGE ? @VA01284 00633300 BNL ORIGOK IF NOT, WE ARE OKAY @VA01284 00633400 C R0,ALAST ABOVE TRANSIENT AREA? @V305665 00633550 BNL ERRSLC IF ABOVE, INVALID ORIGIN @VA01284 00633600 C R0,ADTRANS BELOW TRANSIENT AREA? @V305665 00633750 BL ERRSLC IF SO, INVALID ORIGIN @VA01284 00633800 ORIGOK ST R0,LOCCT STORE BIN ADDR IN LOC COUNTER @VA01284 00633900 LM R0,R6,APSV RESTORE USED REGS 00634000 B PARKILL DO NEXT OPTION 00635000 ERRSLC LA R5,ERR429E ERROR CODE FOR DMSLIO 00636000 ERRXT L R15,ADMSLDRD FATAL ERROR ROUTINE 00637000 LM R8,R9,APSV+32 DMSLDR BASE REGS 00638000 BR R15 GO TERMINATE WITH ERROR MSG 00639000 RESET1 LA R2,8(R2) POINT TO ENTRY NAME 00640000 MVC OUTBUF(16),RSTSUB IN CASE OF ERROR 00641000 LA R5,58 00642000 CLI 0(R2),X'FF' RESET ENTRY SPECIFIED 00643000 BE ERRXT NO, ERROR 00644000 CLI 0(R2),C')' 00645000 BE ERRXT 00646000 XC STRTADDR(4),STRTADDR CLEAR STARTING ADDRESS FIELD 00647000 XC BRAD(4),BRAD CLEAR LOADER'S COPY ALSO V0038 00647100 NI FLAG1,255-(ENDCDADR+FSTXTADR) ALLOW END CARD ADDRESS 00648000 * AND FIRST TEXT ADR. 00649000 CLC 0(2,R2),=C'* ' DEFAULT REQUESTED 00650000 BE PARKILL YES 00651000 CLI 0(R2),X'FF' ENTRY SPECIFIED ? 00652000 BE INCPTR1 NO 00653000 MVC ENTNAME(8),0(R2) SAVE THE ENTRY NAME 00654000 OI FLAGS,RESET INDICATE ENTRY TO BE RESET 00655000 OI FLAG1,ENDCDADR NO END CARD ADDRESS ALLOWED 00656000 OI FLAG1,FSTXTADR DON'T ALLOW 1ST TEXT ADDRESS V0038 00656100 B PARKILL CONTINUE OPTION PROCESSING 00657000 * JS 00658000 EJECT 00659000 CONSPAR DS 0H 00660000 DC CL8'RESET' RESET 00661000 B RESET1 00662000 DC CL8'NOAUTO' NOAUTO 00663000 OI FLAG2,NOAUTO 00664000 DC CL8'NOCLEAR' NOCLEAR 00665000 NI MODFLGS,X'FF'-CLEAROP RESET CLEAR OPTION @VA10593 00666000 DC CL8'CLEAR' CLEAR 00667000 OI MODFLGS,CLEAROP SET CLEAR OPTION @VA02440 00668300 DC CL8'START' START 00669000 OI FLAGS,START 00670000 DC CL8'NOMAP' NOMAP 00671000 OI FLAG2,NOMAP 00672000 DC CL8'ORIGIN' ORIGINXXXXX 00673000 B CONSLC 00674000 DC CL8'MAP' MAP 00675000 NI FLAG2,255-NOMAP 00676000 DC CL8'LIBE' 00677000 NI FLAG2,255-NOLIBE 00678000 DC CL8'NOLIBE' NOLIBE 00679000 OI FLAG2,NOLIBE 00680000 DC CL8'AUTO' AUTO 00681000 NI FLAG2,255-NOAUTO 00682000 DC CL8'TYPE' TYPE 00683000 OI FLAG2,TYPE 00684000 DC CL8'NOTYPE' NOTYPE 00685000 NI FLAG2,255-TYPE 00686000 DC CL8'NOINV' NOINV 00687000 OI FLAG2,NOINV 00688000 DC CL8'NOREP' NOREP 00689000 OI FLAG2,NOREP 00690000 DC CL8'INV' INV 00691000 NI FLAG2,255-NOINV 00692000 DC CL8'REP' REP 00693000 NI FLAG2,255-NOREP 00694000 DC CL8'DUP' DUP @VM08875 00694100 NI FLAG1,255-NODUP @VM08875 00694200 DC CL8'NODUP' NODUP @VM08875 00694300 OI FLAG1,NODUP @VM08875 00694400 CONSEND EQU *-8 00695000 RSTSUB DC CL16'RESET ENTRY' 00696000 ORGSUB DC CL16'ORIGIN' 00697000 ADTRANS DC X'0000E000' TRANSIENT START @V305665 00698100 ALAST DC X'00010000' TRANSIENT END @V305665 00698200 ADMSLDRD DC V(DMSLDRD) 00700000 ERR404E EQU 40 00701000 ERR429E EQU 42 00702000 REGEQU 00710000 EJECT 00711000 LDRST 00712000 EJECT 00713000 NUCON 00714000 END 00715000