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