ibm:vm370-lib:cms:dmslsb.assemble_src
Table of Contents
DMSLSB Source
References
- Fixes Applied : 5
- This Source Date : Tuesday, December 12, 1978
- Last Fix ID : [HRC006DS]
Source Listing
- DMSLSB.ASSEMBLE.txt
- 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
ibm/vm370-lib/cms/dmslsb.assemble_src.txt ยท Last modified: 2023/08/06 13:35 by Site Administrator