ibm:vm370-lib:cms:dmsarx.assemble_src
Table of Contents
DMSARX Source
References
- Fixes Applied : 0
- This Source Date : Tuesday, December 12, 1978
- Last Fix ID : [Unmodified]
Source Listing
- DMSARX.ASSEMBLE.txt
- ARX TITLE 'DMSARX (CMS) VM/370 - RELEASE 6' 00001000
- SPACE 2 00002000
- *. 00003000
- * 00004000
- * MODULE NAME: 00005000
- * 00006000
- * DMSARX (ASM3705) 00007000
- * 00008000
- * FUNCTION: 00009000
- * 00010000
- * ASM3705 COMMAND. TO PROVIDE THE INTERFACE BETWEEN 00011000
- * THE USER AND THE 3705 XF ASSEMBLER. 00012000
- * 00013000
- * ATTRIBUTES: 00014000
- * 00015000
- * DISK RESIDENT 00016000
- * 00017000
- * ENTRY POINTS: 00018000
- * 00019000
- * DMSARX - SEE FUNCTION DESCRIPTION 00020000
- * ASMPROC - SYSUT1 PROCESSING ROUTINE (CALLED FROM DMSSOB) 00021000
- * TERMPROC - PROCESS ASSEMBLER MESSAGES TO TERMINAL 00022000
- * 00023000
- * ENTRY CONDITIONS: 00024000
- * 00025000
- * ASM3705 - 00026000
- * GPR1 = A(PLIST) 00027000
- * GPR14 = RETURN ADDRESS 00028000
- * GPR15 = A(CALLED ROUTINE) 00029000
- * PLIST = FILENAME 00030000
- * 00031000
- * OPTIONAL AND IN ANY ORDER - 00032000
- * ( - START OF OPTIONS (DEFAULTS APPEAR FIRST) 00033000
- * 00034000
- * ALOGIC | NOALOGIC 00035000
- * BUFSIZE (STD) | BUFSIZE (MIN) 00036000
- * DISK,DI | PRINT,PR | NOPRINT,NOPR 00037000
- * ESD | NOESD 00038000
- * FLAG (0) | FLAG (N) 00039000
- * NOLIBMAC | LIBMAC 00040000
- * LINECNT (55) | LINECNT (NN) 00041000
- * LIST | NOLIST 00042000
- * NODECK | DECK 00043000
- * NOMCALL | MCALL 00044000
- * NOMLOGIC | MLOGIC 00045000
- * NORENT | RENT 00046000
- * NUMBER,NUM | NONUMBER,NONUM 00047000
- * OBJECT,OBJ | NOOBJECT,NOOBJ 00048000
- * RLD | NORLD 00049000
- * STMT | NOSTMT 00050000
- * SYSPARM () | SYSPARM (STRING) 00051000
- * TERMINAL,TERM | NOTERMIN,NOTERM 00052000
- * XREF (FULL) | XREF (SHORT) | NOXREF 00053000
- * 00054000
- * XL8'FF' - FENCE 00055000
- * 00056000
- EJECT 00057000
- * 00058000
- * EXIT CONDITONS: 00059000
- * 00060000
- * NORMAL - 00061000
- * GPR15 = 0 NO ERROR 00062000
- * 00063000
- * ERROR - 00064000
- * GPR15 = 24 INVALID OPTION, NO FILENAME SPECIFIED 00065000
- * GPR15 = 28 FILE NOT FOUND 00066000
- * GPR15 = 32 FILE NOT FIXED 80 CHARS 00067000
- * GPR15 = 36 NO READ/WRITE DISKS ACCESSED 00068000
- * GPR15 = 40 FILEID CONFLICT,DEVICE ILLEGAL FOR INPUT 00069000
- * 00070000
- * CALLS TO OTHER ROUTINES: 00071000
- * 00072000
- * DMSCRD - READ SYSPARM FROM CONSOLE 00073000
- * DMSCWR - TYPE SYSPARM MESSAGE TO CONSOLE 00074000
- * DMSFLD - FILEDEF ALL ASSEMBLER FILES 00075000
- * DMSFNS - CLOSE ALL ASSEMBLER FILES 00076000
- * DMSKEY - CONTROL NUCLEUS PROTECT KEY 00077000
- * DMSERR - TYPE ALL ERROR MESSAGES 00078000
- * DMSERS - ERASE OLD ASSEMBLER FILES 00079000
- * DMSSLN - LOAD THE ASSEMBLER PHASES 00080000
- * DMSSMN - CONTROL STORAGE POINTERS (GETMAIN/FREEMAIN) 00081000
- * DMSSTT - VERIFY DISK FILE EXISTENCE 00082000
- * DMSLADAD - SET/RESET THE FST CHAIN FOR AUXILIARY 00083000
- * DIRECTORY. 00084000
- * CWAX00 - 3705 ASSEMBLER (XF) ROOT SEGMENT 00085000
- * 00086000
- * EXTERNAL REFERENCES: 00087000
- * 00088000
- * ADT 00089000
- * CMSCB 00090000
- * DMSARD 00091000
- * FSTB 00092000
- * IO 00093000
- * NUCON 00094000
- * 00095000
- * 00096000
- * TABLES/WORKAREAS: 00097000
- * 00098000
- * DDNAME - NAMES OF CMS DDNAMES FOR ASSEMBLER 00099000
- * OPTLIST - OPTION LIST PASSED TO THE ASSEMBLER 00100000
- * OPDEF - (MACRO LABEL) NAMES & ABBREVIATIONS OF ALL OPTIONS 00101000
- * PARAMLST - PARAMETER LIST FOR ASSEMBLER 00102000
- * UTENTRY - INCORE SYSUT1 RECORD AREA 00103000
- * UTHEAD - HEADER AREA FOR INCORE RECORDS 00104000
- * OPTAB$ - LIST OF POINTERS TO OPTION TABLE ENTRIES 00105000
- * SAVEAREA - SAVEAREA 00106000
- * 00107000
- EJECT 00108000
- * 00109000
- * REGISTER USAGE: 00110000
- * 00111000
- * GPR0 = NUCON ADDRESSABILITY 00112000
- * GPR1 = ADDRESS OF ALL PLISTS 00113000
- * GPR2 = WORK REGISTER 00114000
- * GPR3 = WORK REGISTER 00115000
- * GPR4 = GETMAIN/FREEMAIN AMOUNT 00116000
- * GPR5 = WORK REGISTER 00117000
- * GPR6 = GETMAIN/FREEMAIN ADDRESS 00118000
- * GPR7 = ASMPROC BASE REGISTER 00119000
- * GPR8 = WORK REGISTER 00120000
- * GPR9 = WORK REGISTER 00121000
- * GPR10 = LINKAGE REGISTER 00122000
- * GPR11 = FCB ADDRESS DURING ASMPROC 00123000
- * GPR12 = DMSARX BASE REGISTER 00124000
- * GPR13 = SAVE AREA ADDRESS 00125000
- * GPR14 = RETURN REGISTER FROM CALLS 00126000
- * GPR15 = ASSEMBLER ROOT ADDR. AND ERROR CODE ON RETURN. 00127000
- * 00128000
- * NOTES - 00129000
- * 00130000
- * NONE 00131000
- * 00132000
- * OPERATION: 00133000
- * 00134000
- * ASM3705 FIRST SETS A BIT (COMPSWT,X'80') IN OSSFLAGS 00135000
- * TO INDICATE THE ASSEMBLER IS RUNNING, AND THEN CALLS 00136000
- * DMSLADAD TO MODIFY THE FILE STATUS TABLE (FST) CHAIN 00137000
- * TO INCLUDE A NUCLEUS COPY OF THE AUXILIARY DIRECTORY 00138000
- * FOR THE DISK SPECIFIED AT AUXILIARY GENERATION TIME. 00139000
- * IF THAT DISK IS NOT ACCESSED, PROCESSING TERMINATES 00140000
- * WITH AN ERROR CODE OF 40. 00141000
- * 00142000
- * ASM3705 NEXT SCANS THE OPTIONS SPECIFIED AND USES 00143000
- * THE INFORMATION THEREBY OBTAINED TO SET UP THE OPTION 00144000
- * LIST FOR THE ASSEMBLER AND THE FILEDEF PLISTS FOR THE 00145000
- * CALLS TO FILEDEF. 00146000
- * 00147000
- * ASM3705 THEN 00148000
- * CALLS STATE TO VERIFY THE EXISTENCE OF THIS FILE. IF 00149000
- * IT DOES NOT EXIST, ASM3705 VERIFIES THAT THE FILE 00150000
- * HAS BEEN FILEDEF'D TO ANOTHER VALID INPUT DEVICE, IF 00151000
- * NOT,THE ASSEMBLER ISSUES AN ERROR MESSAGE AND RETURNS 00152000
- * TO THE CALLER. IF THE FILE DOES EXIST IN DISK, THEN 00153000
- * ASM3705 CHECKS THE ITEM LENGTH, ISSUES AN ERROR 00154000
- * MESSAGE IF ITEM LENGTH IS INCORRECT AND RETURNS TO 00155000
- * THE CALLER. 00156000
- * 00157000
- * IF THE LENGTH IS CORRECT, ASM3705 CALLS ERASE TO 00158000
- * DELETE ANY EXISTING TEXT, LISTING, AND UTILITY FILES 00159000
- * FOR THE CURRENT ASM3705 FILE, AND SETS UP STORAGE BY 00160000
- * CALLING GETMAIN. 00161000
- * 00162000
- EJECT 00163000
- * 00164000
- * IT THEN CALLS ADTLKW TO OBTAIN THE MODE OF THE 00165000
- * READ-WRITE DISK WITH MOST AVAILABLE SPACE AND USES IT 00166000
- * TO SET UP THE FILEDEF PLIST FOR THE SYSUT'S FILES AND 00167000
- * CHECKS IF THE DISK WITH THE MOST SPACE IS THE SOURCE 00168000
- * DISK. IF IT IS DIFFERENT, THE SYSUT FILES ARE ERASED 00169000
- * FROM IT (SYSUT FILES ALREADY ERASED FROM SOURCE). IF 00170000
- * NOT SPECIFIED BY THE USER, THE TEXT AND LISTING FILES 00171000
- * ARE WRITTEN ON THE 1) DISK FROM WHICH THE ASM3705 00172000
- * SOURCE IS READ; 2) ON THE "PARENT" DISK, IF THE 00173000
- * FIRST DISK IS A READ-ONLY EXTENSION; OR 3) THE 00174000
- * PRIMARY A-DISK. IF NONE OF THESE CHOICES IS 00175000
- * AVAILABLE, THE COMMAND WILL BE TERMINATED. CMS 00176000
- * CONTROL BLOCKS (CMSCB'S), WHICH REFLECT THE SELECTED 00177000
- * OPTION, ARE SET UP FOR THE TEXT, LISTING, ASM3705 & 00178000
- * UTILITY FILES. AFTER EACH SUCCESSFUL RETURN FROM 00179000
- * FILEDEF, ASM3705 SETS A CLEAR SWITCH TO INDICATE 00180000
- * WHICH CMSCB'S ARE TO BE CLEARED AT THE END OF 00181000
- * THE ASSEMBLY. ASM3705 FINALLY BRANCHES TO CWAX00. 00182000
- * 00183000
- * ON RETURN FROM THE ASSEMBLER, ASM3705 ERASES ALL THE 00184000
- * UTILITY FILES AND CLEARS THE CMSCBS WHICH IT HAD SET. 00185000
- * ASM3705 THEN CALLS FINIS TO CLOSE ALL FILES XF USED, 00186000
- * TURNS ON THE RELEASE PAGE BIT, CALLS DMSLADAD TO RESET 00187000
- * THE FST CHAIN MODIFIED EARLIER, CLEAR OSSFLAGS, PLACES 00188000
- * THE ERROR CODE IN REGISTER 15 AND RETURNS TO THE USER. 00189000
- * 00190000
- * 00191000
- * SPECIAL OUTPUT PROCESSING ROUTINE: ASMHAND 00192000
- * 00193000
- * THE SYSTEM ROUTINE SOEOB INTERFACES WITH ASMPROC 00194000
- * WHENEVER ANY I/O ACTIVITY PERTAINS TO THE SYSUT1 FILE 00195000
- * DURING THE ASSEMBLY. 00196000
- * 00197000
- * SYSUT1 - IF THE FILE IS BEING READ IN BY THE ASSMBLER 00198000
- * THEN ASMPROC ACCESSES THE UTILITY CONTROL TABLE TO 00199000
- * ASCERTAIN THE LENGTH AND LOCATION OF THE RECORDS TO 00200000
- * BE MOVED AND MOVES IT TO THE SPECIFIED INPUT BUFFER. 00201000
- * 00202000
- * IF THE FILE IS BEING WRITTEN BY THE ASSEMBLER THE 00203000
- * UTILITY CONTROL TABLE IS FIRST SET UP BY A CALL TO 00204000
- * GETMAIN AND THEN UPDATED TO REFLECT THE NUMBERS OF 00205000
- * RECORDS TO BE WRITTEN, THEN THE RECORD IS MOVED TO 00206000
- * THE GETMAIN'D AREA. 00207000
- * 00208000
- * 00209000
- *. 00210000
- EJECT 00211000
- MACRO 00212000
- OPTDEF 00213000
- LCLA &I,&J,&K,&N,&TEMP1,&TEMP2,&Q1,&Q2,&Q3,&Q4 00214000
- LCLA &TABLE1(200),&TABLE2(200) 00215000
- LCLB &FLAG1,&FLAG2 00216000
- LCLC &S 00217000
- ACTR 6000 00218000
- &I SETA 1 00219000
- OPTNULL DC AL2(0),8X'FF' 00220000
- SPACE 00221000
- .ILOOP ANOP 00222000
- &S SETC 'O&I.$' 00223000
- &FLAG1 SETB 0 00224000
- &N SETA 1 00225000
- &J SETA 0 00226000
- .NLOOP ANOP 00227000
- &K SETA 0 00228000
- AIF (N'&SYSLIST(&N) NE 1).XLOOP **AIF** 00229000
- AIF (K'&SYSLIST(&N) NE &I).NL1 **AIF** 00230000
- AGO .CWO2 00231000
- .XLOOP ANOP 00232000
- &K SETA &K+1 00233000
- AIF (K'&SYSLIST(&N,&K) NE &I).CWO1 **AIF** 00234000
- .CWO2 ANOP 00235000
- &FLAG1 SETB 1 00236000
- &J SETA &J+1 00237000
- &TABLE1(&J) SETA &N 00238000
- &TABLE2(&J) SETA &K 00239000
- .CWO1 AIF ((&K NE 0) AND (&K LT N'&SYSLIST(&N))).XLOOP **AIF** 00240000
- .NL1 ANOP 00241000
- &N SETA &N+2 00242000
- AIF (&N LE N'&SYSLIST).NLOOP **AIF** 00243000
- AIF (NOT &FLAG1).NL2 **AIF** 00244000
- AIF (&J EQ 1).SORTDNE **AIF** 00245000
- &N SETA &J+1 00246000
- .SORT1 ANOP 00247000
- &FLAG2 SETB 0 00248000
- &K SETA 1 00249000
- &N SETA &N-1 00250000
- .SORT2 ANOP 00251000
- &Q1 SETA &TABLE1(&K) 00252000
- &Q2 SETA &TABLE1(&K+1) 00253000
- &Q3 SETA &TABLE2(&K) 00254000
- &Q4 SETA &TABLE2(&K+1) 00255000
- AIF ((&Q3 EQ 0) AND (&Q4 EQ 0)).SORT4 **AIF** 00256000
- AIF (&Q3 EQ 0).SORT5 **AIF** 00257000
- AIF (&Q4 EQ 0).SORT6 **AIF** 00258000
- AIF ('&SYSLIST(&Q1,&Q3)' LE '&SYSLIST(&Q2,&Q4)').NEXT 00259000
- AGO .SORT3 00260000
- .SORT5 AIF ('&SYSLIST(&Q1)' LE '&SYSLIST(&Q2,&Q4)').NEXT **AIF** 00261000
- AGO .SORT3 00262000
- .SORT6 AIF ('&SYSLIST(&Q1,&Q3)' LE '&SYSLIST(&Q2)').NEXT **AIF** 00263000
- AGO .SORT3 00264000
- .SORT4 AIF ('&SYSLIST(&Q1)' LE '&SYSLIST(&Q2)').NEXT **AIF** 00265000
- .SORT3 ANOP 00266000
- &FLAG2 SETB 1 00267000
- &TEMP1 SETA &TABLE1(&K) 00268000
- &TEMP2 SETA &TABLE2(&K) 00269000
- &TABLE1(&K) SETA &TABLE1(&K+1) 00270000
- &TABLE2(&K) SETA &TABLE2(&K+1) 00271000
- &TABLE1(&K+1) SETA &TEMP1 00272000
- &TABLE2(&K+1) SETA &TEMP2 00273000
- .NEXT ANOP 00274000
- &K SETA &K+1 00275000
- AIF (&K LT &N).SORT2 **AIF** 00276000
- AIF (&FLAG2).SORT1 **AIF** 00277000
- .SORTDNE ANOP 00278000
- &K SETA 1 00279000
- .OLOOP ANOP 00280000
- &Q1 SETA &TABLE1(&K)+1 00281000
- &Q2 SETA &TABLE1(&K) 00282000
- &Q3 SETA &TABLE2(&K) 00283000
- AIF ('&SYSLIST(&Q1)' EQ '').NL4 **AIF** 00284000
- AIF (N'&SYSLIST(&Q1) EQ 1).NL5 **AIF** 00285000
- AIF (&Q3 NE 0).NL8 **AIF** 00286000
- AIF ('&SYSLIST(&Q1,1)' EQ '').NL10 **AIF** 00287000
- &S DC AL1(&SYSLIST(&Q1,1)),AL1(&SYSLIST(&Q1,2)),CL&I'&SYSLIST(*00288000
- &Q2)' 00289000
- AGO .NL6 00290000
- .NL10 ANOP 00291000
- &S DC AL1(0),AL1(&SYSLIST(&Q1,2)),CL&I'&SYSLIST(&Q2)' 00292000
- AGO .NL6 00293000
- .NL8 ANOP 00294000
- AIF ('&SYSLIST(&Q1,1)' EQ '').NL11 **AIF** 00295000
- &S DC AL1(&SYSLIST(&Q1,1)),AL1(&SYSLIST(&Q1,2)),CL&I'&SYSLIST(*00296000
- &Q2,&Q3)' 00297000
- AGO .NL6 00298000
- .NL11 ANOP 00299000
- &S DC AL1(0),AL1(&SYSLIST(&Q1,2)),CL&I'&SYSLIST(&Q2,&Q3)' 00300000
- AGO .NL6 00301000
- .NL5 ANOP 00302000
- AIF (&Q3 NE 0).NL9 **AIF** 00303000
- &S DC AL1(&SYSLIST(&Q1)),AL1(0),CL&I'&SYSLIST(&Q2)' 00304000
- AGO .NL6 00305000
- .NL9 ANOP 00306000
- &S DC AL1(&SYSLIST(&Q1)),AL1(0),CL&I'&SYSLIST(&Q2,&Q3)' 00307000
- AGO .NL6 00308000
- .NL4 ANOP 00309000
- AIF (&Q3 NE 0).NL7 **AIF** 00310000
- &S DC AL2(0),CL&I'&SYSLIST(&Q2)' 00311000
- AGO .NL6 00312000
- .NL7 ANOP 00313000
- &S DC AL2(0),CL&I'&SYSLIST(&Q2,&Q3)' 00314000
- .NL6 ANOP 00315000
- &S SETC '' 00316000
- &K SETA &K+1 00317000
- AIF (&K LE &J).OLOOP **AIF** 00318000
- DC AL2(0),&I.X'FF' 00319000
- AGO .NL3 00320000
- .NL2 ANOP 00321000
- &S EQU OPTNULL 00322000
- .NL3 ANOP 00323000
- SPACE 3 00324000
- &I SETA &I+1 00325000
- AIF (&I LE 8).ILOOP **AIF** 00326000
- MEND 00327000
- EJECT 00328000
- DMSARX CSECT @V305238 00329000
- USING NUCON,R0 NUCON ADDRESSABILITY @V305238 00330000
- USING DMSARX,R12,R11 ASSEMBLER ADDRESSABILITY @V305238 00331000
- * 00332000
- LR R12,R15 USE REG 12 AS BASE REG @V305238 00333000
- LA R11,2048(,R12) USE REG 11 AS 2ND. BASE REG @V305238 00334000
- LA R11,2048(,R11) ... @V305238 00335000
- ST R14,SAVREG14 SAVE RETURN REGISTER @V305238 00336000
- * 00337000
- LA R1,8(,R1) POINT TO THE FNAME IN COMBUF @V305238 00338000
- CLI 0(R1),STAR VALID FILENAME ? @V305238 00339000
- BE ERR70 NO..ERROR @V305238 00340000
- ST R1,FILEPTR SAVE THIS ADDR IN FILEPTR @V305238 00341000
- * 00342000
- DMSKEY NUCLEUS DISABLE NUCLEUS PROTECT @V305238 00343000
- * 00344000
- OI OSSFLAGS,COMPSWT INDICATE ASSEMBLER RUNNING @V305238 00345000
- LA R1,SETAUX SET PLIST FOR AUX CALL @V305238 00346000
- SVC 202 ... @V305238 00347000
- DC AL4(ERR74E1) ERROR EXIT @V305238 00348000
- L R1,FILEPTR RESTORE FILENAME ADDR. @V305238 00349000
- * 00350000
- DMSKEY RESET ENABLE NUCLEUS PROTECT @V305238 00351000
- * 00352000
- EJECT 00353000
- * 00354000
- ********************************************************************** 00355000
- * 00356000
- * THE TYPED INPUT LINE, INVOKING THE 3705 ASSEMBLER IS DECODED, 00357000
- * CONTROLLED (ERROR MESSAGES ARE ISSUED), AND THE DIFFERENT CLASSES 00358000
- * OF PARAMETERS ARE STORED IN THE APPROPRIATE STORAGE AREAS. 00359000
- * 00360000
- ********************************************************************** 00361000
- * 00362000
- OPTSCN EQU * @V305238 00363000
- CLI 0(R1),HXFF IS THIS END OF LINE @V305238 00364000
- BE ERR1 YES..NO FILENAME OR ANYTHING @V305238 00365000
- CLI 0(R1),LEFTPAR IS THIS A LEFT PARENS @V305238 00366000
- BE ERR1 YES..NO FILENAME SPECIFIED @V305238 00367000
- LA R1,8(,R1) INCREMENT PAST FILENAME @V305238 00368000
- CLI 0(R1),HXFF END OF SCANNED LINE ? @V305238 00369000
- BE OPTEND ... @V305238 00370000
- CLI 0(R1),LEFTPAR START OF OPTION LIST ? @V305238 00371000
- BNE ERR70 MUST BE INVALID PARAMETER @V305238 00372000
- LA R1,8(,R1) SKIP PAST LEFT PAREN @V305238 00373000
- NXTOPTN EQU * @V305238 00374000
- BAL R14,KEYSCN SCAN OFF KEYWORD @V305238 00375000
- B OPTEND END OF SCANNED LINE @V305238 00376000
- LR R3,R2 GET KEYWORD LENGTH @V305238 00377000
- SLL R3,2 GET 4*LENGTH @V305238 00378000
- L R3,OPTAB$-4(R3) GET TABLE @V305238 00379000
- BCTR R2,0 GET LENGTH-1 @V305238 00380000
- SEEKARG EQU * @V305238 00381000
- EX R2,KEYCOMP COMPARE FOR KEYWORD @V305238 00382000
- BE FOUND EQUAL..KEYWORD FOUND @V305238 00383000
- BH NOTFOUND KEYWORD HAS BEEN PASSED @V305238 00384000
- LA R3,3(R3,R2) SKIP TO NEXT ENTRY IN TABLE @V305238 00385000
- B SEEKARG LOOP THROUGH TABLE @V305238 00386000
- FOUND EQU * @V305238 00387000
- TM 0(R3),HXFF IS THERE AN OPTION BIT? @V305238 00388000
- BZ NOBITS NO @V305238 00389000
- IC R4,0(,R3) GET OPTION BIT @V305238 00390000
- EX R4,OROPT 'OR' IN OPTION BIT @V305238 00391000
- TM 1(R3),HXFF IS THERE A BYTE TO 'NI' @V305238 00392000
- BZ NOBITS NO @V305238 00393000
- IC R4,1(,R3) GET SECOND OPTION BYTE @V305238 00394000
- EX R4,NIOPT 'NI' SECOND OPTION BYTE @V305238 00395000
- B GETNEXT BRANCH..THIS IS A CMS OPT. @V305238 00396000
- EJECT 00397000
- * 00398000
- NOBITS EQU * @V305238 00399000
- LH R4,OPTLIST GET CURRENT OPTION LIST LEN @V305238 00400000
- LA R5,OPTBYTES(R4) GET END OF OPTIONS @V305238 00401000
- MVI 0(R5),COMMA MOVE COMMA AFTER LAST OPTION @V305238 00402000
- LA R4,1(,R4) BUMP COUNT @V305238 00403000
- LA R5,1(,R5) AND POINTER @V305238 00404000
- BAL R10,MOVEKEY MOVE OPTION TO LIST @V305238 00405000
- TM ASMSW,PARENS MAY OPTION HAVE PARENS ? @V305238 00406000
- BZ RESTCNT NO @V305238 00407000
- CLI 8(R6),LEFTPAR THIS THE LEFT PAREN ? @V305238 00408000
- BE INSRTLFT YES @V305238 00409000
- NI ASMSW,255-PARENS-NUMERIC-SYSPARM-LINEC-XREF ... @V305238 00410000
- BAL R10,ERR3 INVALID OPTION ERROR @V305238 00411000
- B GETNEXT KEEP SCANNING.. @V305238 00412000
- * 00413000
- MOVEKEY EQU * @V305238 00414000
- LA R4,1(R4,R2) LIST LENGTH PLUS NEW COUNT @V305238 00415000
- CL R4,HX100 EXCEEDS MAX OF 100 CHARS ? @V305238 00416000
- BH ERR52 YES..ERROR @V305238 00417000
- EX R2,KEYMOVE MOVE KEYWORD TO OPTION LIST @V305238 00418000
- LA R5,1(R5,R2) BUMP OPTION LIST POINTER @V305238 00419000
- BR R10 RETURN TO CALLER @V305238 00420000
- EJECT 00421000
- * 00422000
- INSRTLFT EQU * @V305238 00423000
- TM ASMSW,LINEC LINECOUNT OPTION ? @V305238 00424000
- BZ MVELPAR NO..JUST MOVE LEFT PAR @V305238 00425000
- MVI 0(R5),C'T' MOVE T TO LINECOUN @V305238 00426000
- LA R4,1(,R4) BUMP COUNT @V305238 00427000
- LA R5,1(,R5) AND POINTER @V305238 00428000
- MVELPAR MVI 0(R5),LEFTPAR MOVE A LEFT PAR TO LIST @V305238 00429000
- LA R4,1(,R4) BUMP COUNT @V305238 00430000
- LA R5,1(,R5) AND POINTER @V305238 00431000
- LA R1,16(,R6) SKIP TO NEXT PART OF OPTION @V305238 00432000
- BAL R14,KEYSCN SCAN OFF KEYWORD @V305238 00433000
- BAL R10,ERR3B END OF OPTION NO LIST FOUND @V305238 00434000
- TM ASMSW,SYSPARM PROCESSING SYSPARM OPTION ? @V305238 00435000
- BO TSTKWRD YES..SEE IF CON INPUT REQ. @V305238 00436000
- MVEKWRD EQU * @V305238 00437000
- BCTR R2,0 GET LENGTH-1 @V305238 00438000
- BAL R10,MOVEKEY MOVE KEYWORD TO LIST @V305238 00439000
- TM ASMSW,NUMERIC IS SUBOPTION NUMERIC ? @V305238 00440000
- BO TESTNUM YES..TEST VALIDITY @V305238 00441000
- B TESTSUB TEST SUBOPTION VALIDITY @V305238 00442000
- TSTRPAR EQU * @V305238 00443000
- LA R6,8(,R6) POINT TO NEXT TOKEN @V305238 00444000
- CLI 0(R6),HXFF IS IT END OF INPUT LINE ? @V305238 00445000
- BE SUBCLEAN YES..CLEAN SUBOPTION @V305238 00446000
- CLI 0(R6),RIGHTPAR NEXT A RIGHT PARENS ? @V305238 00447000
- BNE NOTFOUND NO..INVALID OPTION @V305238 00448000
- SUBOPTEN EQU * @V305238 00449000
- MVI 0(R5),RIGHTPAR MOVE RIGHT PARENS TO LIST @V305238 00450000
- LA R4,1(,R4) BUMP COUNT @V305238 00451000
- LA R5,1(,R5) AND POINTER @V305238 00452000
- RESTCNT EQU * @V305238 00453000
- NI ASMSW,255-PARENS-NUMERIC-SYSPARM-LINEC-XREF ... @V305238 00454000
- STH R4,OPTLIST RESTORE COUNT IN OPTION LIST @V305238 00455000
- GETNEXT EQU * @V305238 00456000
- LA R1,8(,R6) SKIP TO NEXT OPTION @V305238 00457000
- B NXTOPTN ... @V305238 00458000
- NOTFOUND EQU * @V305238 00459000
- BAL R10,ERR3 GIVE INVALID OPTION MSG @V305238 00460000
- B GETNEXT CONTINUE OPTION SCAN @V305238 00461000
- EJECT 00462000
- * 00463000
- TESTNUM EQU * @V305238 00464000
- LA R2,1(,R2) GET REAL LENGTH OF SUBOPTION @V305238 00465000
- LR R7,R6 USE R7 INSTEAD OF R6 @V305238 00466000
- CH R2,H3 EXCEEDS MAX SUB LENGTH ? @V305238 00467000
- BH NOTNUM YES..GIVE ERROR @V305238 00468000
- TM ASMSW,LINEC LINECOUNT OPTION ? @V305238 00469000
- BZ NUMLOOP NO..BRANCH @V305238 00470000
- CH R2,H2 MAX LINECOUNT LENGTH ? @V305238 00471000
- BH NOTNUM YES..GIVE ERROR @V305238 00472000
- NUMLOOP EQU * @V305238 00473000
- TM 0(R7),X'F0' IS CHARACTER NUMERIC @V305238 00474000
- BNO NOTNUM NO..NO MORE..ERROR @V305238 00475000
- LA R7,1(,R7) GET NEXT CHARACTER @V305238 00476000
- BCT R2,NUMLOOP LOOP TO TEST NEXT CHARACTER @V305238 00477000
- B TSTRPAR THAT IS IT..GO BACK @V305238 00478000
- NOTNUM EQU * @V305238 00479000
- BAL R10,ERR3 GIVE INVALID OPTION MSG @V305238 00480000
- B TSTRPAR CONTINUE OPTION SCAN @V305238 00481000
- * 00482000
- TESTSUB TM ASMSW,SYSPARM SYSPARM OPTION ? @V305238 00483000
- BO TSTRPAR YES..DON'T SUB CHECK @V305238 00484000
- TM ASMSW,XREF XREF OPTION ? @V305238 00485000
- BO XREFSUB YES..CHECK XREF SUBOPT. @V305238 00486000
- CH R2,H2 CHECKING POSS LEN OF SUB @V305238 00487000
- BNE NOTNUM ERROR IF NOT EQUAL @V305238 00488000
- LA R7,MIN GET 1ST. SUBOPTION @V305238 00489000
- EX R2,SUBCOMP COMPARE WITH FOUND @V305238 00490000
- BE TSTRPAR MATCH..BRANCH @V305238 00491000
- LA R7,STD GET 2ND. SUBOPTION @V305238 00492000
- EX R2,SUBCOMP COMPARE WITH FOUND @V305238 00493000
- BE TSTRPAR MATCH..BRANCH @V305238 00494000
- B NOTNUM IF NONE..ERROR @V305238 00495000
- XREFSUB LA R7,FULL GET 1ST. SUBOPTION @V305238 00496000
- CH R2,H3 CHECKING POSS LEN OF SUB @V305238 00497000
- BL NOTNUM ERROR IF LOW @V305238 00498000
- EX R2,SUBCOMP COMPARE WITH FOUND @V305238 00499000
- BE TSTRPAR MATCH..BRANCH @V305238 00500000
- LA R7,SHORT GET 2ND. SUBOPTION @V305238 00501000
- CH R2,H4 CHECKING POSS LEN OF SUB @V305238 00502000
- BL NOTNUM ERROR IF LOW @V305238 00503000
- EX R2,SUBCOMP COMPARE WITH FOUND @V305238 00504000
- BE TSTRPAR MATCH..BRANCH @V305238 00505000
- B NOTNUM IF NONE..ERROR @V305238 00506000
- EJECT 00507000
- * 00508000
- TSTKWRD EQU * @V305238 00509000
- CLC 0(2,R6),=C'? ' KEYWORD FROM CONSOLE ? @V305238 00510000
- BNE MVEKWRD NO..USE KEYWORD FOUND @V305238 00511000
- * 00512000
- LA R1,CONWR ASK FOR SYSPARM SUBOPTION @V305238 00513000
- SVC 202 ... @V305238 00514000
- DC AL4(MVEKWRD) BAD RETURN..USE FOUND KWRD @V305238 00515000
- * 00516000
- LA R1,CMNDLINE GET CONSOLE BUFFER ADDR. @V305238 00517000
- STCM R1,B'0111',CONBUF+1 STORE IN LIST @V305238 00518000
- LA R1,CONRD READY TO RECEIVE @V305238 00519000
- SVC 202 ... @V305238 00520000
- DC AL4(MVEKWRD) BAD RETURN..USE FOUND KWRD @V305238 00521000
- * 00522000
- LH R2,CONCNT+2 GET BYTES READ @V305238 00523000
- LTR R2,R2 ... @V305238 00524000
- BZ TSTRPAR IF ZERO..NULL PARM @V305238 00525000
- LR R1,R6 SAVE REG. 6 @V305238 00526000
- ICM R6,B'0111',CONBUF+1 GET BUFFER ADDRESS @V305238 00527000
- BCTR R2,0 GET LENGTH-1 @V305238 00528000
- CHKBLNK LA R10,0(R6,R2) GET END OF BUFFER ADDR @V305238 00529000
- CLI 0(R10),BLANK IS CHAR. BLANK ? @V305238 00530000
- BNE MOVESUB NO..MUST BE END @V305238 00531000
- BCT R2,CHKBLNK KEEP LOOKING FOR NON-BLANK @V305238 00532000
- MOVESUB BAL R10,MOVEKEY MOVE SUBLIST TO OPTION LIST @V305238 00533000
- LR R6,R1 RESTORE REG. 6 @V305238 00534000
- B TSTRPAR CONTINUE PROCESSING @V305238 00535000
- * 00536000
- * 00537000
- SUBCOMP CLC 0(0,R6),0(R7) EXECUTED COMPARE @V305238 00538000
- KEYCOMP CLC 2(0,R3),0(R6) EXECUTED COMPARE @V305238 00539000
- KEYMOVE MVC 0(0,R5),0(R6) EXECUTED MOVE @V305238 00540000
- OROPT OI ASMSW,0 EXECUTED OR @V305238 00541000
- NIOPT NI ASMSW,0 EXECUTED AND @V305238 00542000
- * 00543000
- * 00544000
- EJECT 00545000
- KEYSCN EQU * @V305238 00546000
- LR R6,R1 GET KEYWORD START @V305238 00547000
- LA R2,8(,R1) GET END OF MAX KEYWORD @V305238 00548000
- CLI 0(R1),RIGHTPAR RIGHT PAREN? @V305238 00549000
- BCR 8,R14 YES, RETURN @V305238 00550000
- CLI 0(R1),HXFF AT END OF PARAM. LIST? @V305238 00551000
- BE SUBCLEAN YES, GO CLEAN UP SUBOPTION @V305238 00552000
- EOPNSCN EQU * @V305238 00553000
- CLI 0(R1),BLANK BLANK? @V305238 00554000
- BE KEYEND YES @V305238 00555000
- CR R1,R2 END OF OPTION @V305238 00556000
- BE KEYEND YES @V305238 00557000
- LA R1,1(,R1) BUMP POINTER AND @V305238 00558000
- B EOPNSCN LOOP THROUGH OPTION @V305238 00559000
- KEYEND EQU * @V305238 00560000
- LR R2,R1 GET END OF OPTION @V305238 00561000
- SR R2,R6 GET LENGTH @V305238 00562000
- BC 2,4(,R14) RETURN IF > ZERO @V305238 00563000
- LA R2,1 SET TO LENGHT OF ONE @V305238 00564000
- B 4(,R14) AND RETURN @V305238 00565000
- SUBCLEAN EQU * @V305238 00566000
- TM ASMSW,PARENS ARE WE PROCESSING SUBS ? @V305238 00567000
- BCR 8,R14 NO, GO TO OPTEND @V305238 00568000
- NI ASMSW,255-PARENS-NUMERIC-SYSPARM-LINEC-XREF ... @V305238 00569000
- MVI 0(R5),RIGHTPAR MAKE SURE SUBS ARE ENCLOSED @V305238 00570000
- LA R4,1(,R4) INCREMENT LIST LENGHT @V305238 00571000
- STH R4,OPTLIST STORE IT @V305238 00572000
- OPTEND EQU * @V305238 00573000
- TM ASMSW2,OPTERR HAVE WE HAD ANY INVALID OPT @V305238 00574000
- BO END YES..RETURN TO CMS @V305238 00575000
- EJECT 00576000
- * 00577000
- ********************************************************************** 00578000
- * 00579000
- * ASSUME 'ALPHA' IS A FILE TO COMPILE. WE CHECK THAT 'ALPHA ASM3705' 00580000
- * EXISTS AND GETS LOGICAL RECORDS OF 80 BYTES.IF THIS IS THE CASE, 00581000
- * LET US CALL 'M' THE MODE OF THIS FILE,WE ERASE THE TWO FILES,IF 00582000
- * THEY EXIST,'ALPHA LISTING M' AND 'ALPHA TEXT M'. 00583000
- * 00584000
- ********************************************************************** 00585000
- * 00586000
- VERIFY EQU * @V305238 00587000
- USING ADTSECT,R1 @V305238 00588000
- USING FCBSECT,R6 @V305238 00589000
- USING FSTSECT,R7 @V305238 00590000
- * 00591000
- L R3,FILEPTR GET FILENAME ADDRESS @V305238 00592000
- STATASM MVC STATNAME(8),0(R3) MOVE THE FNAME FOR STATE @V305238 00593000
- LA R1,STATELST GET THE ADDR OF STATE LIST @V305238 00594000
- SVC 202 ISSUE STATE @V305238 00595000
- DC AL4(NOFILE) FILE NOT FOUND EXIT @V305238 00596000
- L R7,STATCOPY GET THE ADDR OF THE FST COPY @V305238 00597000
- MVC ADTCOPY(4),FSTL(R7) SAVE THE ADDR OF ADT @V305238 00598000
- * 00599000
- MVC INPTMODE(2),FSTM GET THE DISK MODE @V305238 00600000
- CLC FSTIL(4),HX80 ARE THE RECS 80 CHAR. LONG ? @V305238 00601000
- BNE ERR7 NO...GIVE ERROR @V305238 00602000
- CLI FSTFV,C'F' ARE THE RECS OF FIXED FORM ? @V305238 00603000
- BNE ERR7 NO...GIVE ERROR @V305238 00604000
- B DOFDEF FILEDEF THE ASM3705 DDNAME @V305238 00605000
- * 00606000
- EJECT 00607000
- * 00608000
- NOFILE OI ASMSW2,NOTFND IF NOT FOUND, SET SWITCH @V305238 00609000
- CH R15,H20 INVALID FILEID FOUND ? @V305238 00610000
- BNE DOFDEF NO..BRANCH @V305238 00611000
- ST R15,CC SAVE ERROR CODE @V305238 00612000
- B END GET OUT..ERROR MSG TYPED @V305238 00613000
- DOFDEF LA R1,INPTDEF GET ASM3705 FILEDEF LIST @V305238 00614000
- MVC INPTNAME(8),0(R3) GET FILENAME FOR THE FILEDEF @V305238 00615000
- BAL R10,SVC202 ISSUE FILEDEF @V305238 00616000
- LTR R6,R0 TEST IF FILE OLD OR NEW @V305238 00617000
- BM NEWFILE BRANCH IF FILE IS NEW @V305238 00618000
- CLI FCBDEV,FCBDSK IS DEVICE DSK IN USER FCB? @V305238 00619000
- BNE NOTDSK BRANCH IF NOT DISK @V305238 00620000
- CLC FCBDSNAM(16),INPTNAME MATCHING FILEID'S ? @V305238 00621000
- BNE ERR38 NO..CONFLICTING ID ERROR @V305238 00622000
- B NEWFILE SEE IF FILE FOUND BY STATE @V305238 00623000
- * 00624000
- NOTDSK TM ASMSW2,NOTFND IS THERE DUP FILE ON DSK ? @V305238 00625000
- BZ ERR38 YES..CONFLICTING ID ERROR @V305238 00626000
- CLI FCBDEV,FCBRDR IS INPUT FILE ON READER ? @V305238 00627000
- BE CHKADSK YES...USE IT @V305238 00628000
- CLI FCBDEV,FCBTAP IS THE INPUT FILE ON TAPE? @V305238 00629000
- BE CHKADSK YES...USE IT @V305238 00630000
- * 00631000
- SR R2,R2 READY... @V305238 00632000
- IC R2,FCBDEV GET DEVICE CODE @V305238 00633000
- L R2,DEVTYPE(R2) GET DEVICE TYPE @V305238 00634000
- B ERR75 GIVE ERROR @V305238 00635000
- * 00636000
- DEVTYPE DC A(DUMMY) ... @V305238 00637000
- DC A(PRINTER) ... @V305238 00638000
- DC A(0) ... @V305238 00639000
- DC A(TERMINAL) ... @V305238 00640000
- DC A(0) ... @V305238 00641000
- DC A(0) ... @V305238 00642000
- DC A(PUNCH) ... @V305238 00643000
- DC A(CRT) ... @V305238 00644000
- * 00645000
- NEWFILE TM ASMSW2,NOTFND IS THE INPUT FILE ON DISK ? @V305238 00646000
- BO ERR2 NO...GIVE ERROR @V305238 00647000
- EJECT 00648000
- * 00649000
- ********************************************************************** 00650000
- * 00651000
- * FIND A R/W DISK FOR WRITING THE TEXT AND THE LISTING FILE ... 00652000
- * 00653000
- ********************************************************************** 00654000
- * 00655000
- FINDRW EQU * @V305238 00656000
- L R1,ADTCOPY GET A(ADT) FROM SAVED COPY @V305238 00657000
- * 00658000
- TM ADTFLG1,ADTFRW INPUT FILE ON R/W DISK ? @V305238 00659000
- BO USEIT YES...WRITE BACK TO IT @V305238 00660000
- CLI ADTMX,BLANK IS IT AN EXTENSION? @V305238 00661000
- BE CHKADSK NO...CHECK A-DISK FOR R/W @V305238 00662000
- MVC ADTPARM(1),ADTMX SAVE THE EXTENSION FILE MODE @V305238 00663000
- LA R1,ADTPARM-24 GET THE LIST FOR ADTLKW @V305238 00664000
- L R15,AADTLKW GET THE ADDRESS OF ADTLKW @V305238 00665000
- BALR R14,R15 CALL ADTLKW FOR PARENT DISK @V305238 00666000
- BC 2,CHKADSK IF NONE FOUND..CHECK A-DISK @V305238 00667000
- USEIT MVC WMODE(1),ADTM SAVE THE FOUND DISK MODE @V305238 00668000
- B ERASE GO ERASE OLD FILES.. @V305238 00669000
- * 00670000
- CHKADSK LA R1,WMODE-24 GET A-DISK LIST @V305238 00671000
- L R15,AADTLKW GET ADDRESS OF ADTLKW @V305238 00672000
- BALR R14,R15 GET ADT FOR A-DISK @V305238 00673000
- BC 2,ERR6 NO A-DISK..ERROR @V305238 00674000
- TM ADTFLG1,ADTFRW IS IT R/W DISK ? @V305238 00675000
- BZ ERR6 NO..THAT IS ALL THEN... @V305238 00676000
- * 00677000
- ERASE EQU * @V305238 00678000
- LA R10,FILEDEF AFTER ERASE GO TO FILEDEF @V305238 00679000
- MVC ERASNAME(8),0(R3) SET FILENAME IN ERASE LIST @V305238 00680000
- MVC ERASMODE(2),WMODE SET FILEMODE IN ERASE LIST @V305238 00681000
- LA R1,ERASELST GET ADDRESS OF ERASE LIST @V305238 00682000
- LA R8,8 GET TOKEN LENGTH FOR BXLE @V305238 00683000
- LA R9,DDTERM GET ENDING ADDRESS @V305238 00684000
- LA R7,DDLIST GET BEGINNING ADDRESS @V305238 00685000
- * 00686000
- ERASLUP MVC ERASTYPE(8),0(R7) MOVE FILETYPE TO BE ERASED @V305238 00687000
- SVC 202 ISSUE ERASE @V305238 00688000
- DC AL4(*+4) NO-OP IN CASE NO FILE EXISTS @V305238 00689000
- BXLE R7,R8,ERASLUP LOOP TILL ALL FILES ERASED @V305238 00690000
- BR R10 RETURN TO CALLER @V305238 00691000
- EJECT 00692000
- * 00693000
- ********************************************************************** 00694000
- * 00695000
- * FILEDEF(S) ARE ISSUED FOR EACH OUTPUT FILE THAT THE 3705 ASSEMBLER 00696000
- * PROCESSOR MAY USE. THE ROOT MODULE CWAX00 IS LOADED INTO CORE 00697000
- * AND THE PARAMTER LISTS ARE PASSED TO THE PROCESSOR. 00698000
- * 00699000
- ********************************************************************** 00700000
- * 00701000
- FILEDEF EQU * @V305238 00702000
- LH R4,WMODE GET FILEMODE FOR FILEDEFS @V305238 00703000
- MVC TEXTNAME(8),0(R3) SAVE FNAME IN TEXT FDEF @V305238 00704000
- STH R4,TEXTMODE SAVE FMODE IN TEXT FDEF @V305238 00705000
- MVC LISTNAME(8),0(R3) SAVE FNAME IN LISTING FDEF @V305238 00706000
- STH R4,LISTMODE SAVE FMODE IN LISTING FDEF @V305238 00707000
- * 00708000
- LA R1,TEXTDEF GET ADDR OF TEXT FDEF LIST @V305238 00709000
- BAL R10,SVC202 ISSUE FILEDEF @V305238 00710000
- * 00711000
- LA R1,PUNFDEF GET ADDR OF PUNCH FDEF LIST @V305238 00712000
- BAL R10,SVC202 ISSUE FILEDEF @V305238 00713000
- * 00714000
- LA R1,SYSTERM GET ADD OF SYSTERM FDEF LIST @V305238 00715000
- BAL R10,SVC202 ISSUE FILEDEF @V305238 00716000
- * 00717000
- LA R1,LISTDEF GET ADDR OF LSTING FDEF LIST @V305238 00718000
- TM ASMSW,NOPRINT WAS NOPRINT SPECIFIED? @V305238 00719000
- BZ LIST1 NO...GO TO TEST FOR PRINT @V305238 00720000
- MVC LISTDEV(8),DUMMY MOVE DUMMY AS LISTING DEV @V305238 00721000
- B LIST2 BRANCH TO ISSUE FILEDEF @V305238 00722000
- * 00723000
- LIST1 TM ASMSW,PRINT WAS PRINT SPECIFIED? @V305238 00724000
- BZ DOSVC NO...GO TO ISSUE FILEDEF @V305238 00725000
- MVC LISTDEV(8),PRINTER MOVE PRINTER AS LISTING DEV @V305238 00726000
- LIST2 MVC LISTNAME(24),OVER OVERLAY THE FILEID @V305238 00727000
- * 00728000
- DOSVC BAL R10,SVC202 ISSUE FILEDEF @V305238 00729000
- * 00730000
- L R15,AADTLKW SET UP CALL TO ADTLKW @V305238 00731000
- MVC ADTPARM,=C'??' TO FIND DISK WITH MOST AVAIL @V305238 00732000
- LA R1,ADTPARM-24 SPACE TO USE FOR THE UTILITY @V305238 00733000
- BALR R14,R15 FILES... @V305238 00734000
- * 00735000
- MVC UTSFMODE(1),ADTM MODE OF MOST AVAIL SPACE DSK @V305238 00736000
- EJECT 00737000
- * 00738000
- CLC UTSFMODE(1),WMODE IS DISK SAME AS INPUT DISK? @V305238 00739000
- BE NOERASE IF SO, SYSUTS ALREADY ERASED @V305238 00740000
- MVC ERASMODE(2),UTSFMODE MOVE FMODE TO ERASE PLIST @V305238 00741000
- BAL R10,ERASUTS ERASE SYSUT FILES @V305238 00742000
- NOERASE EQU * @V305238 00743000
- MVC UTSFNAME(8),0(R3) INITIALIZE SYSUT FILENAME @V305238 00744000
- OI ASMSW2,FRSTCALL SET FIRST CALL TO SYSUT1 @V305238 00745000
- * 00746000
- LA R1,UTSFDEF FILEDEF LIST FOR SYSUT'S @V305238 00747000
- BAL R10,SVC202 ISSUE FILEDEF @V305238 00748000
- * 00749000
- MVI UTSDDNME+5,C'1' CHANGE TO SYSUT1 DDNAME @V305238 00750000
- MVI UTSFTYPE+5,C'1' CHANGE TO SYSUT1 FILENAME @V305238 00751000
- BAL R10,SVC202 ISSUE FILEDEF @V305238 00752000
- LPR R6,R0 GET FCB ADDRESS @V305238 00753000
- OI FCBIOSW,FCBPROCC AUXPROC DURING CLOSE ALSO.. @V305238 00754000
- * 00755000
- MVI UTSDDNME+5,C'3' CHANGE TO SYSUT3 DDNAME @V305238 00756000
- MVI UTSFTYPE+5,C'3' CHANGE TO SYSUT3 FILENAME @V305238 00757000
- BAL R10,SVC202 ISSUE FILEDEF @V305238 00758000
- * 00759000
- LA R1,MACLDEF FILEDEF LIST FOR CMSLIB @V305238 00760000
- BAL R10,SVC202 ISSUE FILEDEF @V305238 00761000
- LPR R6,R0 GET FCB ADDRESS @V305238 00762000
- OI FCBINIT,FCBCATML SET CONCAT FLAG @V305238 00763000
- * 00764000
- LA R1,DUMFDEF DUMMY CLRPRINT & UNIDATA @V305238 00765000
- BAL R10,SVC202 ISSUE FILEDEF @V305238 00766000
- * 00767000
- MVC DUMNAME,UNIDATA FILENAME FOR UNIDATA @V305238 00768000
- BAL R10,SVC202 ISSUE FILEDEF @V305238 00769000
- EJECT 00770000
- * 00771000
- LOADASM EQU * @V305238 00772000
- LOAD EP=CWAX00 LOAD THE 370X ASSEM ROOT @V305238 00773000
- ST R0,VASSEM SAVE ITS ADDRESS @V305238 00774000
- * 00775000
- L R0,GETNO GET AREA FOR XF LONGEST PATH @V305238 00776000
- GETMAIN R,LV=(0) @V305238 00777000
- * 00778000
- L R1,MAINHIGH GET USER AREA HIGH @V305238 00779000
- L R0,FREELOWE GET SYSTEM HIGHEST @V305238 00780000
- SR R0,R1 GET AMOUNT FREE STORAGE @V305238 00781000
- SRL R0,1 GET 50 % OF AREA @V305238 00782000
- C R0,COMPWORK ENOUGH FOR PROCESSOR ? @V305238 00783000
- BNL DWORDS YES..SPLIT 50 - 50 @V305238 00784000
- SRL R0,1 NO..SO GET 25 % FOR INCORES @V305238 00785000
- DWORDS GETMAIN R,LV=(0) SAVE BLOCK OF CORE @VM08910 00786000
- STM R0,R1,FAKENOS SAVE AMOUNT AND ADDRESS @V305238 00787000
- * 00788000
- LM R13,R1,LINK GET THE ASSEMBLER REGISTERS @V305238 00789000
- BR R15 GO AND ...GOOD LUCK... @V305238 00790000
- SPACE 2 00791000
- * 00792000
- * COMING BACK FROM THE 3705 XF ASSEMBLER PROCESSOR. 00793000
- * 00794000
- RETURN EQU * @V305238 00795000
- ST R15,CC SAVE THE RETURN CODE @V305238 00796000
- * 00797000
- BAL R10,ERASUTS ERASE SYSUT FILES @V305238 00798000
- * 00799000
- RETCMS EQU * @V305238 00800000
- LA R1,CLEARFIL CLEAR ALL NON-PERM FCB'S @V305238 00801000
- BAL R10,SVC202 ISSUE CLEAR @V305238 00802000
- EJECT 00803000
- * 00804000
- END EQU * @V305238 00805000
- SR R0,R0 ZERO REGISTER ZERO @V305238 00806000
- DMSKEY NUCLEUS @V305238 00807000
- NI OSSFLAGS,255-COMPSWT @V305238 00808000
- OI MISFLAGS,RELPAGES @V305238 00809000
- LA R1,SETAUX SET PLIST FOR AUX CLEAR CALL @V305238 00810000
- SVC 202 ... @V305238 00811000
- DC AL4(ERR74E2) ERROR EXIT @V305238 00812000
- ERR74RET EQU * @V305238 00813000
- DMSKEY RESET @V305238 00814000
- L R15,CC GET CONDITION CODE @V305238 00815000
- L R14,SAVREG14 GET CMS RETURN ADDRESS @V305238 00816000
- BR R14 RETURN TO CMS @V305238 00817000
- * 00818000
- SVC202 SVC 202 ISSUE CMS FILEDEF @V305238 00819000
- DC AL4(*+4) NO-OP ERROR EXIT @V305238 00820000
- BR R10 RETURN TO CALLER @V305238 00821000
- * 00822000
- ERASUTS ST R10,VASSEM+4 SAVE LINKAGE REGISTER @V305238 00823000
- LA R1,ERASELST GET ERASE PLIST ADDRESS @V305238 00824000
- LA R8,8 GET TOKEN LENGTH FOR BXLE @V305238 00825000
- LA R9,DDSYS3 GET ENDING ADDRESS @V305238 00826000
- LA R7,DDSYS1 GET BEGINNING ADDRESS @V305238 00827000
- BAL R10,ERASLUP GO AND ERASE SYSUTS @V305238 00828000
- L R10,VASSEM+4 RESTORE RETURN REGISTER @V305238 00829000
- BR R10 RETURN TO CALLER @V305238 00830000
- * 00831000
- EJECT 00832000
- ASMPROC DS 0H @V305238 00833000
- USING ASMPROC,R15 @V305238 00834000
- STM R1,R7,SAVEREGS SAVE REGISTERS @V305238 00835000
- LR R7,R15 GET ADDRESSABILITY @V305238 00836000
- DROP R15 @V305238 00837000
- USING UTENTRY,R2 @V305238 00838000
- USING UTHEAD,R5 @V305238 00839000
- USING OPSECT,R3 @V305238 00840000
- USING FCBSECT,R11 @V305238 00841000
- USING ASMPROC,R7 @V305238 00842000
- * 00843000
- CLC FCBDD(8),DDSYS1 PROCESSING SYSUT1 ? @V305238 00844000
- BE SYSUT1 YES..BRANCH @V305238 00845000
- * 00846000
- SYSUTX MVI FCBFORM,C'F' FORCE RECFM OF FIXED @V305238 00847000
- TM IOBIOFLG,IOBIN ARE WE DOING INPUT ? @V305238 00848000
- BO RETURN1 YES..RETURN @V305238 00849000
- MVC FCBBYTE+2(2),H8000 FORCE 8000 FOR FAST I/O @V305238 00850000
- B RETURN1 RETURN TO O/S SIMULATION @V305238 00851000
- * 00852000
- SYSUT1 TM ASMSW2,NOCORE ARE THERE CORE PROBLEMS ? @V305238 00853000
- BO SYSUTX YES..RETURN @V305238 00854000
- TM ASMSW2,FRSTCALL IS THIS FIRST CALL ? @V305238 00855000
- BO UTSETUP YES..GO AND SETUP CORE @V305238 00856000
- L R5,UTSAV GET ADDRESS OF ENTRIES TABLE @V305238 00857000
- LTR R5,R5 ANY CORE OBTAINED ? @V305238 00858000
- BZ SYSUTX NO..JUST RETURN @V305238 00859000
- TM FCBIOSW,FCBCLOSE ARE WE IN CLOSE EXIT ? @V305238 00860000
- BO UTFIN YES..CHECK NOT TCLOSE @V305238 00861000
- * 00862000
- UTCOMM LH R6,FCBITEM GET ITEM NUMBER @V305238 00863000
- N R6,HALFWORD MASK IT FOR NEXT COMPARE @V305238 00864000
- CH R6,UTCORENT IS IT HIGHER THAN OUR LAST ? @V305238 00865000
- BH UTEOF YES..IS EOF OR WE NEED CORE @V305238 00866000
- SLL R6,3 ADJUST ENTRY INDEX @V305238 00867000
- LA R2,0(R5,R6) GET PROPER RECORD ENTRY @V305238 00868000
- UTSET LH R6,FCBBYTE+2 GET NUMBER OF BYTES TO MOVE @V305238 00869000
- TM UTRECAD,ONDISK IS THIS RECORD IN CORE? @V305238 00870000
- BO SYSUTX BRANCH IF NOT @V305238 00871000
- TM IOBIOFLG,IOBIN ARE WE DOING INPUT ? @V305238 00872000
- BZ UTWRITE NO..THEN GO TO WRITE @V305238 00873000
- CH R6,UTRECLN IS NO OF BYTES > THAN OURS ? @V305238 00874000
- BH UTEOF2 YES..DEFINITELY EOF @V305238 00875000
- L R5,UTRECAD GET INCORE RECORD ADDRESS @V305238 00876000
- L R4,FCBBUFF GET USERS BUFFER ADDRESS @V305238 00877000
- B PREMOVE GO TO MOVE ROUTINE @V305238 00878000
- * 00879000
- UTWRITE CH R6,UTRECLN REC LEN SAME AS INCORE ? @V305238 00880000
- BNH UTWRITE2 YES..IT IS OK THEN @V305238 00881000
- LH R0,UTRECLN GET INCORE RECORD LENGTH @V305238 00882000
- L R1,UTRECAD GET INCORE RECORD ADDRESS @V305238 00883000
- FREEMAIN R,LV=(0),A=(1) @V305238 00884000
- LH R6,FCBITEM GET ITEM NUMBER @V305238 00885000
- N R6,HALFWORD MASK HIGH ORDER BYTES @V305238 00886000
- B UTGET2 GET CORE FOR THIS RECORD @V305238 00887000
- EJECT 00888000
- * 00889000
- UTWRITE2 STH R6,UTRECLN SAVE INCORE RECORD LENGHT @V305238 00890000
- L R5,FCBBUFF GET USERS BUFFER ADDRESS @V305238 00891000
- L R4,UTRECAD GET INCORE RECORD ADDRESS @V305238 00892000
- * 00893000
- PREMOVE ST R6,FCBREAD FCBREAD = NO. BYTES MOVED @V305238 00894000
- * 00895000
- UTMOVE SH R6,H256 IS LRECL GREATER THAN 256 ? @V305238 00896000
- BM LT256 NO..JUST DO ONE PASS @V305238 00897000
- MVC 0(256,R4),0(R5) MOVE 256 BYTES @V305238 00898000
- BE RETURN2 IF NO MORE..RETURN @V305238 00899000
- LA R4,256(,R4) UP MOVE REGISTER BY 256 @V305238 00900000
- LA R5,256(,R5) UP MOVE REGISTER BY 256 @V305238 00901000
- B UTMOVE GO AND MOVE SOME MORE @V305238 00902000
- LT256 AH R6,H256 RESET LENGTH @V305238 00903000
- BCTR R6,0 LESS ONE FOR DOMINOE EFFECT @V305238 00904000
- EX R6,MOVEIT EXECUTE LAST MOVE @V305238 00905000
- B RETURN2 RETURN WITH COUNT IN R15 @V305238 00906000
- * 00907000
- MOVEIT MVC 0(*-*,R4),0(R5) MOVE RECORD FROM/TO CORE @V305238 00908000
- * 00909000
- UTSETUP LM R0,R1,FAKENOS GET FAKE AREA LENGTH & ADDR @V305238 00910000
- FREEMAIN R,LV=(0),A=(1) FREE SAVED CORE @VM08910 00911000
- * 00912000
- LA R4,800 100 ENTRIES (1 HEAD,99 RECS) @V305238 00913000
- LA R6,UTSAV ADDRESS OF GETMAINED AREA @V305238 00914000
- BAL R3,GETCORE GET CORE FOR ENTRIES @V305238 00915000
- BZ UTCOREOK IF ZERO..CORE OBTAINED.. @V305238 00916000
- OI ASMSW2,NOCORE SET NOCORE SWITCH @V305238 00917000
- B SYSUTX RETURN EMPTY HANDED @V305238 00918000
- * 00919000
- UTCOREOK LA R4,1 SET REG 4 TO ONE @V305238 00920000
- L R5,UTSAV GET ADDRESS OF ENTRIES @V305238 00921000
- ST R4,UTCORENT INIT UTCORENT & UTNXTENT @V305238 00922000
- XC UTTOTENT(2),UTTOTENT ZERO TOTAL ENTRIES @V305238 00923000
- NI ASMSW2,255-FRSTCALL TURN OFF FIRST CALL SWITCH @V305238 00924000
- B UTCOMM GO SATISFY I/O REQUEST @V305238 00925000
- EJECT 00926000
- * 00927000
- UTEOF TM IOBIOFLG,IOBIN ARE WE DOING INPUT ? @V305238 00928000
- BZ UTGETCOR NO..THEN GET CORE @V305238 00929000
- CH R6,UTTOTENT IS ITEM > THAN TOT ENTS ? @V305238 00930000
- BNH SYSUTX NO..SOME RECS POSS. ON DISK @V305238 00931000
- UTEOF2 LA R15,12 GET EOF CODE @V305238 00932000
- LNR R15,R15 NEGATIVE OF 12 @V305238 00933000
- B UTRETURN GIVE CODE TO I/O SIM @V305238 00934000
- * 00935000
- UTGETCOR TM ASMSW2,TODISK THIS RECORD TO DISK ? @V305238 00936000
- BO UTTODSK YES..DON'T BOTHER @V305238 00937000
- LH R2,UTCORENT GET LAST IN CORE REC NUM @V305238 00938000
- CH R2,H99 EQUAL OR GREATER THAN 99 ? @V305238 00939000
- BNL UTTODSK YES..BRANCH TO SPILL @V305238 00940000
- CH R6,UTNXTENT FCBITEM SAME AS NEXT ENTRY ? @V305238 00941000
- BNE UTTODSK NO..BRANCH TO SPILL @V305238 00942000
- STH R6,UTCORENT MAKE FCBITEM OUR LAST ENTRY @V305238 00943000
- STH R6,UTTOTENT ALSO OUR TOTAL ENTRIES @V305238 00944000
- LA R2,1(,R6) UP FCBITEM BY ONE..AND @V305238 00945000
- STH R2,UTNXTENT THIS MUST BE OUR NEXT ENTRY @V305238 00946000
- UTGET2 SLL R6,3 SET INDEX TO PROPER ENTRY @V305238 00947000
- LA R2,0(R5,R6) GET PROPER INCORE REC ENTRY @V305238 00948000
- LH R4,FCBBYTE+2 GET LENGTH OF RECORD @V305238 00949000
- STH R4,UTRECLN SAVE AS OUR INCORE REC LEN @V305238 00950000
- LA R6,UTRECAD GET RECORD ADDRESS @V305238 00951000
- BAL R3,GETCORE GET CORE FOR THIS RECORD @V305238 00952000
- BZ UTSET IF OBTAINED..GO TO MOVE REC @V305238 00953000
- LH R6,FCBITEM GET ITEM NUMBER @V305238 00954000
- CH R6,UTCORENT WAS RECORD IN CORE? @V305238 00955000
- BH UTGET3 BRANCH IF NOT @V305238 00956000
- OI UTRECAD,ONDISK INDICATE ON DISK @V305238 00957000
- NI ASMSW2,255-TODISK TURN OFF SWITCH @V305238 00958000
- B SYSUTX @V305238 00959000
- UTGET3 EQU * @V305238 00960000
- LH R2,UTCORENT GET UPDATED LAST REC NO @V305238 00961000
- BCTR R2,0 LESS ONE @V305238 00962000
- STH R2,UTCORENT REAL LAST INCORE RECORD @V305238 00963000
- LH R2,UTNXTENT GET UPDATED NEXT REC NO @V305238 00964000
- BCTR R2,0 LESS ONE @V305238 00965000
- STH R2,UTNXTENT REAL NEXT INCORE RECORD @V305238 00966000
- OI ASMSW2,TODISK REMAINING RECS TO DISK.. @V305238 00967000
- * 00968000
- UTTODSK STH R6,UTTOTENT FCBITEM IS NUMBER TOTAL RECS @V305238 00969000
- B SYSUTX RETURN @V305238 00970000
- EJECT 00971000
- * 00972000
- UTFIN CLI OSIOTYPE,C'T' IS THIS A TCLOSE ? @V305238 00973000
- BE RETURN1 YES..IGNORE @V305238 00974000
- XC UTSAV(4),UTSAV CLEAR ENTRIES ADDRESS @V305238 00975000
- * 00976000
- RETURN1 SR R15,R15 RETURN NOTHING TO I/O SIM @V305238 00977000
- B UTRETURN FINAL RETURN @V305238 00978000
- * 00979000
- RETURN2 L R15,FCBREAD GET BYTES MOVED FOR I/O SIM @V305238 00980000
- SLL R15,16 SET RESIDUAL COUNT TO ZERO @V305238 00981000
- UTRETURN LM R1,R6,SAVEREGS RESTORE REGS USED @V305238 00982000
- BR R14 RETURN TO I/O SIMULATION @V305238 00983000
- * 00984000
- GETCORE EQU * @V305238 00985000
- GETMAIN EC,LV=(R4),A=(R6) @V305238 00986000
- ST R15,CC SAVE RETURN CODE @V305238 00987000
- LTR R15,R15 CORE OBTAINED ? @V305238 00988000
- BZ GETDONE YES, JUST RETURN @VM08910 00989000
- OI ASMSW2,TODISK REMAINING RECORDS TO DISK @VM08910 00990000
- GETDONE L R15,CC GET RETURN CODE @V305238 00991000
- LTR R15,R15 SET CONDITION CODE @V305238 00992000
- BR R3 RETURN TO CALLER.. @V305238 00993000
- DROP R7 @V305238 00994000
- EJECT 00995000
- * 00996000
- * 00997000
- TERMPROC DS 0H @V305238 00998000
- USING TERMPROC,R15 @V305238 00999000
- * 01000000
- TM ASMSW2,NOTERM SHOULD THIS LINE BE TYPED ? @V305238 01001000
- BO 0(,R14) NO..JUST RETURN @V305238 01002000
- * 01003000
- ST R1,SAVEREGS SAVE OUR WORK REG. @V305238 01004000
- L R1,FCBBUFF GET BUFFER TO BE TYPED @V305238 01005000
- CLC 0(8,R1),=C' HIGHEST' IS THIS THEEEE LINE ? @V305238 01006000
- L R1,SAVEREGS ... @V305238 01007000
- BE TERMEND YES..GO SET GOOD OL'SWITCH @V305238 01008000
- SR R15,R15 LET O/S SIMULATION TYPE LINE @V305238 01009000
- BR R14 RETURN @V305238 01010000
- * 01011000
- TERMEND OI ASMSW2,NOTERM NO MORE LINES TO BE TYPED @V305238 01012000
- BR R14 RETURN @V305238 01013000
- DROP R15 @V305238 01014000
- * 01015000
- EJECT 01016000
- ********************************************************************** 01017000
- * 01018000
- * DATA 01019000
- * 01020000
- ********************************************************************** 01021000
- * 01022000
- OPTAB$ DC A(O1$,O2$,O3$,O4$,O5$,O6$,O7$,O8$) @V305238 01023000
- SAVEREGS DC 7F'0' SAVEAREA FOR AUXPROCS REGS. @V305238 01024000
- ADTCOPY DC F'0' ADDRESS OF ADT FROM FSTCOPY @V305238 01025000
- CC DC F'0' RETURN CODE FROM PROCESSOR @V305238 01026000
- FILEPTR DC F'0' POINTS TO THE FILE NAME. @V305238 01027000
- HALFWORD DC F'65535' MASKS HI ORDER TWO BYTES OF REG. @V305238 01028000
- GETNO DC X'00009700' GETMAIN AMNT. FOR LONGEST PATH @V305238 01029000
- COMPWORK DC X'00020000' MINIMUN AREA FOR ASSEM WORK FILE @V305238 01030000
- FAKENOS DC 2F'0' AMNT & ADDR OF AREA RESERVED @V305238 01031000
- HX100 DC F'105' FULLWORD TO CONTROL OPTION AREA @V305238 01032000
- HX80 DC F'80' RECORD LENGTH FOR INPUT FILE. @V305238 01033000
- H8000 DC H'8000' SYSUTS BLOCK FOR FAST I/O @V305238 01034000
- H256 DC H'256' MAX LENGTH FOR MVC. @V305238 01035000
- H99 DC H'99' MAX NUMBER OF UT ENTRIES. @V305238 01036000
- H20 DC H'20' INVALID FILEID RET. CODE @V305238 01037000
- H4 DC H'4' ... @V305238 01038000
- H3 DC H'3' MAX SUBOPTION LEN FOR XREF @V305238 01039000
- H2 DC H'2' MAX SUBOPTION LEN FOR LINECNT @V305238 01040000
- H16 DC H'16' JUST A TOKEN LENGTH. @V305238 01041000
- RIGHTPAR EQU C')' RIGHT PARENTHESIS CODE. @V305238 01042000
- LEFTPAR EQU C'(' LEFT PARENTHESIS CODE. @V305238 01043000
- COMMA EQU C',' COMMA CODE. @V305238 01044000
- STAR EQU C'*' ASTERICK CODE. @V305238 01045000
- BLANK EQU X'40' BLANK CODE. @V305238 01046000
- HXFF EQU X'FF' FENCE CODE. @V305238 01047000
- WMODE DC CL2'A1' MODE IN CASE NONE FOUND @V305238 01048000
- PRINTER DC CL8'PRINTER' DEVICE USED IF PRINT SPECIFIED @V305238 01049000
- CRT DC CL6'CRT' CATHODE RAY TUBE DEVICE @V305238 01050000
- * 01051000
- ASMSW DC X'0' ASSEMBLER OPTIONS FLAG BITS @V305238 01052000
- PRINT EQU X'40' PRINT OPTION SPECIFIED @V305238 01053000
- NOPRINT EQU X'20' NOPRINT OPTION SPECIFIED @V305238 01054000
- SYSPARM EQU X'10' OPTION IS SYSPARM @V305238 01055000
- XREF EQU X'08' OPTION IS XREF @V305238 01056000
- NUMERIC EQU X'04' SUB-OPTION IS NUMERIC @V305238 01057000
- PARENS EQU X'02' OPTION HAS SUB-OPTION @V305238 01058000
- LINEC EQU X'01' OPTION IS LINECOUNT @V305238 01059000
- * 01060000
- ASMSW2 DC X'0' ASSEMBLER INTERNAL FLAG @V305238 01061000
- OPTERR EQU X'80' OPTION ERROR FOUND @V305238 01062000
- NOTFND EQU X'40' FILE NOT FOUND ON DISK @V305238 01063000
- FRSTCALL EQU X'20' FIRST CALL TO SYSUT1 @V305238 01064000
- NOCORE EQU X'10' NO CORE FOR SYSUT1 @V305238 01065000
- TODISK EQU X'08' FURTHER RECORDS TO DISK @V305238 01066000
- NOTERM EQU X'04' DON'T TYPE THIS LINE @V305238 01067000
- * 01068000
- EJECT 01069000
- * 01070000
- SAVREG14 DC F'0' CMS RETURN ADDRESS @V305238 01071000
- SAVEAREA DC 18F'0' SAVE AREA FOR THE PROCESSOR @V305238 01072000
- LINK DC A(SAVEAREA) R13 @V305238 01073000
- DC A(RETURN) R14 @V305238 01074000
- VASSEM DC A(0) R15 @V305238 01075000
- DC F'0' R0 @V305238 01076000
- DC A(PARAMLST) R1 @V305238 01077000
- * 01078000
- * 01079000
- PARAMLST DC A(OPTLIST) PARAMETER LIST FOR 370X ASSEM XF @V305238 01080000
- DC X'80',AL3(DDNAME) @V305238 01081000
- * 01082000
- * 01083000
- DS 0F @V305238 01084000
- OPTLIST EQU * OPTION LIST @V305238 01085000
- DC AL2(OPTLEN-OPTLIST-2) @V305238 01086000
- OPTBYTES EQU * @V305238 01087000
- DC C'TERM,NODECK,LOAD' @V305238 01088000
- OPTLEN DS XL104 @V305238 01089000
- * 01090000
- * 01091000
- DS 0H @V305238 01092000
- DDNAME DC AL2(DDLAST-*),24X'00' DDNAMES LIST @V305238 01093000
- DDCMSLIB DC CL8'CMSLIB' MACLIB CMS DDNAME @V305238 01094000
- DDASSEM DC CL8'ASM3705' SYSIN CMS DDNAME @V305238 01095000
- DDLIST DC CL8'LISTING' SYSPRINT CMS DDNAME @V305238 01096000
- DDPUNCH DC CL8'PUNCH' SYSPUNCH CMS DDNAME @V305238 01097000
- DDSYS1 DC CL8'SYSUT1' SYSUT1 CMS DDNAME @V305238 01098000
- DDSYS2 DC CL8'SYSUT2' SYSUT2 CMS DDNAME @V305238 01099000
- DDSYS3 DC CL8'SYSUT3' SYSUT3 CMS DDNAME @V305238 01100000
- DDTEXT DC CL8'TEXT' SYSLIN CMS DDNAME @V305238 01101000
- DDTERM DC CL8'SYSTERM' SYSTERM CMS DDNAME @V305238 01102000
- DDLAST EQU * @V305238 01103000
- * 01104000
- * 01105000
- EJECT 01106000
- * 01107000
- DS 0F @V305238 01108000
- SETAUX DC CL8'DMSLADAD' AUXILIARY DIRECTORY LIST @V305238 01109000
- ASMDIRT DC V(DMSARD) @V305238 01110000
- DC F'0' @V305238 01111000
- * 01112000
- * 01113000
- DS 0D @V305238 01114000
- ERASELST DC CL8'ERASE' ERASE LIST @V305238 01115000
- ERASNAME DC CL8' ' @V305238 01116000
- ERASTYPE DC CL8' ' @V305238 01117000
- ERASMODE DC CL2' ' @V305238 01118000
- * 01119000
- * 01120000
- DS 0D @V305238 01121000
- STATELST DC CL8'STATE' STATE LIST @V305238 01122000
- STATNAME DC CL8' ' @V305238 01123000
- DC CL8'ASM3705' @V305238 01124000
- STATMODE DC CL2'*' @V305238 01125000
- DC CL2' ' @V305238 01126000
- STATCOPY DC A(0) ADDRESS OF FST COPY @V305238 01127000
- * 01128000
- ADTPARM DC CL2' ' @V305238 01129000
- * 01130000
- * 01131000
- CLEARFIL DS 0D FILEDEF CALL TO CLEAR FCB'S @V305238 01132000
- DC CL8'FILEDEF' @V305238 01133000
- DC CL8'*' @V305238 01134000
- DC CL8'CLEAR' @V305238 01135000
- DC 8X'FF' @V305238 01136000
- * 01137000
- * 01138000
- DS 0D @V305238 01139000
- CONWR DC CL8'TYPLIN' CONSOLE WRITE LIST @V305238 01140000
- DC AL1(1),AL3(SYSMSG) @V305238 01141000
- DC CL1'B',AL3(L'SYSMSG) @V305238 01142000
- * 01143000
- * 01144000
- DS 0D @V305238 01145000
- CONRD DC CL8'CONREAD' CONSOLE READ LIST @V305238 01146000
- CONBUF DC AL1(1),AL3(0) @V305238 01147000
- CONCNT DC CL1'V',AL3(0) @V305238 01148000
- * 01149000
- * 01150000
- SYSMSG DC C' ENTER SYSPARM: ' @V305238 01151000
- * 01152000
- * 01153000
- SETTING DC C'SETTING ' @V305238 01154000
- RESETING DC C'RESETTING' @V305238 01155000
- * 01156000
- MIN DC CL4'MIN' BUFF SUBOPTION @V305238 01157000
- STD DC CL4'STD' BUFF SUBOPTION @V305238 01158000
- FULL DC CL5'FULL' XREF SUBOPTION @V305238 01159000
- SHORT DC CL6'SHORT' XREF SUBOPTION @V305238 01160000
- EJECT 01161000
- * 01162000
- LISTDEF DS 0D FILEDEF LIST: LISTING DDNAME @V305238 01163000
- DC CL8'FILEDEF' @V305238 01164000
- DC CL8'LISTING' @V305238 01165000
- LISTDEV DC CL8'DISK' @V305238 01166000
- LISTNAME DC CL8' ' @V305238 01167000
- DC CL8'LISTING' @V305238 01168000
- LISTMODE DC CL8' ' @V305238 01169000
- DC CL8'(RECFM' @V305238 01170000
- DC CL8'FBA' @V305238 01171000
- DC CL8'BLOCK' @V305238 01172000
- DC CL8'1210' @V305238 01173000
- DC CL8'NOCHANGE' @V305238 01174000
- DC 8X'FF' @V305238 01175000
- * 01176000
- INPTDEF DS 0D FILEDEF LIST: ASM3705 DDNAME @V305238 01177000
- DC CL8'FILEDEF' @V305238 01178000
- DC CL8'ASM3705' @V305238 01179000
- DC CL8'DISK' @V305238 01180000
- INPTNAME DC CL8' ' @V305238 01181000
- DC CL8'ASM3705' @V305238 01182000
- INPTMODE DC CL8'*' @V305238 01183000
- DC CL8'(RECFM' @V305238 01184000
- DC CL8'FB' @V305238 01185000
- DC CL8'LRECL' @V305238 01186000
- DC CL8'80' @V305238 01187000
- DC CL8'BLOCK' @V305238 01188000
- DC CL8'800' @V305238 01189000
- DC CL8'NOCHANGE' @V305238 01190000
- DC 8X'FF' @V305238 01191000
- * 01192000
- TEXTDEF DS 0D FILEDEF LIST: TEXT DDNAME @V305238 01193000
- DC CL8'FILEDEF' @V305238 01194000
- DC CL8'TEXT' @V305238 01195000
- DC CL8'DISK' @V305238 01196000
- TEXTNAME DC CL8' ' @V305238 01197000
- DC CL8'TEXT' @V305238 01198000
- TEXTMODE DC CL8' ' @V305238 01199000
- DC CL8'(' @V305238 01200000
- DC CL8'NOCHANGE' @V305238 01201000
- DC 8X'FF' @V305238 01202000
- * 01203000
- SYSTERM DS 0D FILEDEF LIST: SYSTERM DDNAME @V305238 01204000
- DC CL8'FILEDEF' @V305238 01205000
- DC CL8'SYSTERM' @V305238 01206000
- TERMINAL DC CL8'TERMINAL' @V305238 01207000
- DC CL8'(' @V305238 01208000
- DC CL8'AUXPROC' @V305238 01209000
- DC AL4(TERMPROC) @V305238 01210000
- DC AL4(0) @V305238 01211000
- DC CL8'NOCHANGE' @V305238 01212000
- DC 8X'FF' @V305238 01213000
- EJECT 01214000
- * 01215000
- PUNFDEF DS 0D FILEDEF LIST: PUNCH DDNAME @V305238 01216000
- DC CL8'FILEDEF' @V305238 01217000
- DC CL8'PUNCH' @V305238 01218000
- PUNCH DC CL8'PUNCH' @V305238 01219000
- OVER DC CL8'(' @V305238 01220000
- DC CL8'NOCHANGE' @V305238 01221000
- DC 8X'FF' @V305238 01222000
- * 01223000
- UTSFDEF DS 0D FILEDEF LIST: SYSUT DDNAME @V305238 01224000
- DC CL8'FILEDEF' @V305238 01225000
- UTSDDNME DC CL8'SYSUT2' @V305238 01226000
- DC CL8'DISK' @V305238 01227000
- UTSFNAME DC CL8' ' @V305238 01228000
- UTSFTYPE DC CL8'SYSUT2' @V305238 01229000
- UTSFMODE DC CL8' 4' @V305238 01230000
- DC CL8'(BLOCK' @V305238 01231000
- DC CL8'7294' @V305238 01232000
- DC CL8'AUXPROC' @V305238 01233000
- DC AL4(ASMPROC) @V305238 01234000
- DC AL4(0) @V305238 01235000
- DC CL8'NOCHANGE' @V305238 01236000
- DC 8X'FF' @V305238 01237000
- * 01238000
- MACLDEF DS 0D FILEDEF LIST: CMSLIB DDNAME @V305238 01239000
- DC CL8'FILEDEF' @V305238 01240000
- DC CL8'CMSLIB' @V305238 01241000
- DC CL8'DISK' @V305238 01242000
- DC CL8'CMSLIB' @V305238 01243000
- DC CL8'MACLIB' @V305238 01244000
- DC CL8'*' @V305238 01245000
- DC CL8'(RECFM' @V305238 01246000
- DC CL8'FB' @V305238 01247000
- DC CL8'LRECL' @V305238 01248000
- DC CL8'80' @V305238 01249000
- DC CL8'BLOCK' @V305238 01250000
- DC CL8'800' @V305238 01251000
- DC CL8'NOCHANGE' @V305238 01252000
- DC 8X'FF' @V305238 01253000
- * 01254000
- DUMFDEF DS 0D FILEDEF LIST: CLRPRNT DDNAME @V305238 01255000
- DC CL8'FILEDEF' @V305238 01256000
- DUMNAME DC CL8'CLRPRINT' @V305238 01257000
- DUMMY DC CL8'DUMMY' @V305238 01258000
- DC 8X'FF' @V305238 01259000
- * 01260000
- UNIDATA DC CL8'UNIDATA' FILENAME FOR UNIDATA DDNAME @V305238 01261000
- EJECT 01262000
- * 01263000
- OPTIONS EQU * @V305238 01264000
- * 01265000
- * THE FOLLOWING MACRO CONTAINS THE NAMES AND ABBREVIATIONS OF 01266000
- * ALL THE 3705 XF ASSEMBLER CMS OPTIONS. THE FIRST POSITIONAL 01267000
- * PARAMETER IN EACH ENTRY CONTAINS THE NAME OF THE OPTION. IF 01268000
- * AN ABBREVIATION EXISTS, IT IS ADDED TO THE FIRST PARAMETER IN 01269000
- * SUBLIST NOTATION. THE SECOND POSITIONAL PARAMETER IS USED TO 01270000
- * CONTAIN TWO FLAGS DESCRIBING THE NATURE OF THE OPTION. 01271000
- * 01272000
- * THE FIRST FLAG IS 'ORED' TO A FLAG CALLED "ASMSW" SO THAT IT 01273000
- * CAN BE TESTED LATER. 01274000
- * 01275000
- * THE SECOND FLAG IS 'ANDED' TO "ASMSW" TO TURN OFF ANY PREVIOUS 01276000
- * CONFLICTING OPTIONS SPECIFIED. 01277000
- * 01278000
- * THE FLAG 'PARENS' MEANS THAT THE OPTION IS IN TWO PARTS AND THAT 01279000
- * PARENTHESIS ARE TO SURROUND THE SECOND PART. THE FLAG 'NUMERIC' 01280000
- * MEANS THAT THE SECOND PART OF THE OPTION MUST BE NUMERIC. 01281000
- * 01282000
- OPTDEF *01283000
- ALOGIC,, @V305238*01284000
- BUFSIZE,PARENS, @V305238*01285000
- DECK,, @V305238*01286000
- (DISK,DI),(PRINT,255-PRINT-NOPRINT), @V305238*01287000
- ESD,, @V305238*01288000
- FLAG,(PARENS+NUMERIC), @V305238*01289000
- LIBMAC,, @V305238*01290000
- LINECOUN,(PARENS+NUMERIC+LINEC), @V305238*01291000
- LIST,, @V305238*01292000
- LOAD,, @V305238*01293000
- MCALL,, @V305238*01294000
- MLOGIC,, @V305238*01295000
- NOALOGIC,, @V305238*01296000
- NODECK,, @V305238*01297000
- NOESD,, @V305238*01298000
- NOLIBMAC,, @V305238*01299000
- NOLIST,, @V305238*01300000
- NOLOAD,, @V305238*01301000
- NOMCALL,, @V305238*01302000
- NOMLOGIC,, @V305238*01303000
- (NONUMBER,NONUM),, @V305238*01304000
- (NOOBJECT,NOOBJ),, @V305238*01305000
- (NOPRINT,NOPR),(NOPRINT,255-PRINT), @V305238*01306000
- NORENT,, @V305238*01307000
- NORLD,, @V305238*01308000
- NOSTMT,, @V305238*01309000
- NOTERM,, @V305238*01310000
- NOXREF,, @V305238*01311000
- (NUMBER,NUM),, @V305238*01312000
- (OBJECT,OBJ),, @V305238*01313000
- (PRINT,PR),(PRINT,255-NOPRINT), @V305238*01314000
- RENT,, @V305238*01315000
- RLD,, @V305238*01316000
- STMT,, @V305238*01317000
- SYSPARM,(PARENS+SYSPARM), @V305238*01318000
- (TERMINAL,TERM),, @V305238*01319000
- XREF,(PARENS+XREF) @V305238 01320000
- DS 0H @V305238 01321000
- EJECT 01322000
- USING DMSARX,R12,R11 @V305238 01323000
- ERR1 EQU * @V305238 01324000
- DMSERR TEXT='NO FILENAME SPECIFIED',NUM=001,LET=E @V305238 01325000
- MVI CC+3,X'18' SET RETURN CODE @V305238 01326000
- B END EXIT @V305238 01327000
- ERR2 EQU * @V305238 01328000
- DMSERR TEXT='FILE ''........ ASM3705'' NOT FOUND',NUM=002, *01329000
- LET=E,SUB=(CHARA,(R3)) @V305238 01330000
- MVI CC+3,X'1C' SET RETURN CODE @V305238 01331000
- B RETCMS EXIT @V305238 01332000
- ERR3 LR R2,R6 ... @V305238 01333000
- ERR3A ST R1,VASSEM+4 SAVE REGISTER 1 @V305238 01334000
- DMSERR TEXT='INVALID OPTION ''........''',NUM=003,LET=E, *01335000
- SUB=(CHARA,(R2)) @V305238 01336000
- OI ASMSW2,OPTERR SIGNAL OPTION ERROR @V305238 01337000
- MVI CC+3,X'18' SET RETURN CODE @V305238 01338000
- L R1,VASSEM+4 RESTORE REGISTER 1 @V305238 01339000
- BR R10 RETURN TO CALLER @V305238 01340000
- EJECT 01341000
- * 01342000
- ERR3B TM ASMSW,SYSPARM SYSPARM OPTION ? @V305238 01343000
- BO SUBOPTEN YES..HANDLE SPECIAL @V305238 01344000
- LR R2,R6 SAVE OPTION POINTER @V305238 01345000
- SH R2,H16 POINT TO OPTION @V305238 01346000
- LA R10,GETNEXT GET RETURN ADDRESS @V305238 01347000
- B ERR3A GIVE ERROR... @V305238 01348000
- ERR6 EQU * @V305238 01349000
- DMSERR TEXT='NO READ/WRITE DISK ACCESSED',NUM=006,LET=E 01350000
- MVI CC+3,X'24' SET RETURN CODE @V305238 01351000
- B RETCMS EXIT @V305238 01352000
- ERR7 EQU * @V305238 01353000
- DMSERR TEXT='FILE ''........ ASM3705'' IS NOT FIXED, 80 CHAR. *01354000
- RECORDS',NUM=007,LET=E,SUB=(CHARA,(R3)) @V305238 01355000
- MVI CC+3,X'20' SET RETURN CODE @V305238 01356000
- B RETCMS EXIT @V305238 01357000
- EJECT 01358000
- * 01359000
- ERR38 EQU * @V305238 01360000
- DMSERR TEXT='FILEID CONFLICT FOR DDNAME ''ASM3705''', @V305238*01361000
- NUM=038,LET=E @V305238 01362000
- MVI CC+3,X'28' SET RETURN CODE @V305238 01363000
- B RETCMS EXIT @V305238 01364000
- ERR52 EQU * @V305238 01365000
- DMSERR TEXT='MORE THAN 100 CHARS. OF OPTIONS SPECIFIED', *01366000
- NUM=052,LET=E @V305238 01367000
- MVI CC+3,X'18' SET RETURN CODE @V305238 01368000
- B END EXIT @V305238 01369000
- ERR70 LR R2,R1 POINT TO PARAMETER @V305238 01370000
- DMSERR TEXT='INVALID PARAMETER ''........''',NUM=070,LET=E, *01371000
- SUB=(CHARA,(R2)) @V305238 01372000
- MVI CC+3,X'18' SET RETURN CODE @V305238 01373000
- B END EXIT @V305238 01374000
- EJECT 01375000
- * 01376000
- ERR74E1 LA R2,SETTING GET MSG FUNCTION @V305238 01377000
- B ERR74GO GO GIVE ERROR MSG @V305238 01378000
- ERR74E2 LA R2,RESETING GET MSG FUNCTION @V305238 01379000
- ERR74GO EQU * @V305238 01380000
- DMSERR NUM=074,TEXT='ERROR ......... AUXILIARY DIRECTORY', *01381000
- LET=E,SUB=(CHARA,(R2)) @V305238 01382000
- MVI CC+3,X'28' SET RETURN CODE @V305238 01383000
- B ERR74RET @V305238 01384000
- ERR75 EQU * @V305238 01385000
- DMSERR TEXT='DEVICE ''........'' ILLEGAL FOR INPUT', @V305238*01386000
- NUM=075,LET=E,SUB=(CHARA,(R2)) @V305238 01387000
- MVI CC+3,X'28' SET RETURN CODE @V305238 01388000
- B RETCMS EXIT @V305238 01389000
- EJECT 01390000
- NUCON @V305238 01391000
- ADT @V305238 01392000
- FSTB @V305238 01393000
- REGEQU @V305238 01394000
- CMSCB @V305238 01395000
- IO @V305238 01396000
- * 01397000
- * 01398000
- UTSAV EQU IOBCSW ADDRESS OF ENTRIES TABLE @V305238 01399000
- * 01400000
- * 01401000
- UTHEAD DSECT @V305238 01402000
- UTCORENT DS H LAST INCORE RECORD NUMBER @V305238 01403000
- UTNXTENT DS H NEXT INCORE RECORD NUMBER @V305238 01404000
- UTTOTENT DS H TOTAL NO. RECS (INCORE AND DISK) @V305238 01405000
- DS H @V305238 01406000
- * 01407000
- * 01408000
- UTENTRY DSECT @V305238 01409000
- DS H @V305238 01410000
- UTRECLN DS H INCORE RECORD LENGTH @V305238 01411000
- UTRECAD DS A INCORE RECORD ADDRESS @V305238 01412000
- ONDISK EQU X'80' RECORD ON DISK IND. @V305238 01413000
- * 01414000
- * 01415000
- EJECT 01416000
- DMSARX CSECT @V305238 01417000
- LTORG @V305238 01418000
- ORG DMSARX+X'1D70' @V305238 01419000
- END 01420000
ibm/vm370-lib/cms/dmsarx.assemble_src.txt ยท Last modified: 2023/08/06 13:35 by Site Administrator