FNC TITLE 'DMSFNC (CMS) VM/370 - RELEASE 6' 00001000 SPACE 2 00002000 *. 00004000 * 00005000 * MODULE NAME: 00006000 * 00007000 * DMSFNC (FUNCTAB) 00008000 * 00009000 * FUNCTION: 00010000 * 00011000 * CONTAINS TWO TABLES USED BY DMSITS 00012000 * 00013000 * ATTRIBUTES: 00014000 * 00015000 * NUCLEUS RESIDENT 00016000 * 00017000 * ENTRY POINTS: 00018000 * 00019000 * DMSFNC - NUCLEUS RESIDENT COMMAND NAME TABLE 00020000 * DMSFNCSV - STANDARD SVC TABLE 00021000 * 00022000 * ENTRY CONDITIONS: 00023000 * 00024000 * N/A 00025000 * 00026000 * EXIT CONDITIONS: 00027000 * 00028000 * N/A 00029000 * 00030000 * CALLS TO OTHER ROUTINES: 00031000 * 00032000 * N/A 00033000 * 00034000 * EXTERNAL REFERENCES: 00035000 * 00036000 * MODULES REFERENCED IN THE TABLES. 00037000 * 00038000 * TABLES/WORKAREAS: 00039000 * 00040000 * N/A 00041000 * 00042000 * REGISTER USAGE: 00043000 * 00044000 * N/A 00045000 * 00046000 * NOTES: 00047000 * 00048000 * DMSFNC CONTAINS NO EXECUTABLE CODE. 00049000 * 00050000 * OPERATION: 00051000 * 00052000 * N/A 00053000 * 00054000 *. 00055000 EJECT 00056000 * 00057000 * FUNCTAB = SPECIAL 'SHORT' TABLE, ONLY 12 BYTES PER ENTRY, FOR 00058000 * USE BY SVCINT IN TRANSFERRING CONTROL TO A CORE-RESIDENT 00059000 * CMS COMMAND OR FUNCTION. 00060000 * 00061000 * FIRST 8 BYTES = NAME OF CALLEE (COMMAND OR FUNCTION) 00062000 * NEXT 4 BYTES = CORE-ADDRESS OF CALLEE 00063000 * 00064000 * NOTE -- IF CORE-ADDRESS IS ZERO, SVCINT 00065000 * CALLS 'LOADMOD' TO GET A DISK-RESIDENT MODULE. 00066000 * 00067000 MACRO 00068000 &LABEL JFUN &NAME,&ADDR 00069000 &LABEL DC CL8'&NAME' 00070000 AIF (N'&ADDR EQ 0).SEQ1 00071000 DC V(&ADDR) 00072000 AGO .SEQ2 00073000 .SEQ1 DC V(&NAME) 00074000 .SEQ2 SPACE 1 00075000 MEND 00076000 * 00077000 MACRO 00078000 JOST &NUM,&LOC 00079000 AIF (K'&LOC EQ 0).S1 00080000 DC AL1(&NUM),VL3(&LOC) 00081000 MEXIT 00082000 .S1 DC AL1(&NUM),AL3(0) 00083000 MEND 00084000 EJECT 00085000 MACRO 00086000 TAB203 &LIST 00087000 LCLA &I,&K 00088000 LCLC &LET 00089000 &K SETA N'&SYSLIST 00090000 * THIS MACRO GENERATES THE TABLE FOR SVC 203 CALLS 00091000 SPACE 00092000 DMSFNC3 DS 0F 00093000 DC A(&K) NUMBER OF ENTRIES IN TABLE 00094000 .LOOP ANOP 00095000 &I SETA &I+1 00096000 MNOTE *,'&I = &SYSLIST(&I,3)' 00097000 &LET SETC 'V' 00098000 AIF (T'&SYSLIST(&I,2) EQ 'U').V 00099000 &LET SETC 'A' 00100000 .V ANOP 00101000 DC CL8'&SYSLIST(&I,3)' NAME OF MACRO OR ROUTINE 00102000 AIF ('&SYSLIST(&I,1)' EQ '').L 00103000 DC AL1(&SYSLIST(&I,1)),&LET.L3(&SYSLIST(&I,2)) 00104000 AGO .C 00105000 .L DC &LET.(&SYSLIST(&I,2)) 00106000 .C ANOP 00107000 AIF (&I LT N'&SYSLIST).LOOP 00108000 MEND 00109000 EJECT 00110000 DMSFNC CSECT 00111000 ENTRY DMSFNC3 SVC 203 TABLE 00113000 EJECT 00115000 * FOR CMS/370, THE ENTRY NAMES IN THIS ROUTINE ARE CHANGED, AS 00116000 * FOLLOWS: 00117000 SPACE 2 00118000 * OLD NAME NEW NAME 00119000 * ---------------------------- ----------- 00120000 * FUNCTAB DMSFNC 00121000 * (NEW SVC 203 BRANCH TABLE) DMSFNC3 00125000 EJECT 00126000 USING *,R0 (FOR 'CLEAN' S-TYPE ADCON'S BELOW...) 00127000 * 00128000 DC S(A,B,C,D,E,F,G,H,I) FIRST 9 LETTERS 00129000 DC 7S(J) (GAP) 00130000 DC S(J,K,L,M,N,O,P,Q,R) NEXT 9 LETTERS 00131000 DC 8S(S) (GAP) 00132000 DC S(S,T,U,V,W,X,Y,Z) LAST 8 LETTERS 00133000 DC S(LASTFUN) (MUST FOLLOW Z) 00134000 * 00135000 R0 EQU 0 00136000 * 00137000 DS 0F 00138000 SPACE 2 00139000 * COMMANDS MUST BE KEPT IN ALPHABETIC ORDER PER FIRST LETTER 00140000 * I.E. ALL A'S FIRST, ALL Z'S LAST, ETC. 00141000 * 00142000 * ORDER WITHIN EACH LETTER-GROUP, HOWEVER, IS NOT CRITICAL, 00143000 * AND MOST-OFTEN-USED COMMANDS FOR EACH LETTER CAN BE 00144000 * PUT FIRST (IF KNOWN). 00145000 EJECT 00146000 A EQU * 00147000 JFUN ATTN,DMSCAT 00148000 B EQU * 00149000 C EQU * 00150000 JFUN CARDRD V0742 00151100 JFUN CARDPH V0742 00151200 JFUN CMSTIME,GETCLK 00154000 JFUN CONREAD,DMSCRD 00155000 JFUN CONWAIT,DMSCWT 00156000 JFUN CP,DMSCPF 00157000 D EQU * 00158000 JFUN DEBUG,DMSDBG 00159000 JFUN DMSCIOSI V0742 00159100 JFUN DMSPIOCC V0742 00159200 JFUN DMSPIOSI V0742 00159300 JFUN DESBUF,DMSCITDB 00160000 JFUN DMSLADAD V0742 00160100 JFUN DMSERR 00161000 JFUN DMSSMNAT,DMSSTGAT @V305665 00161150 JFUN DMSVSR @V305101 00161200 E EQU * 00162000 JFUN EXEC,DMSEXC 00163000 JFUN ERASE 00164000 F EQU * 00165000 JFUN FINIS 00166000 JFUN FETCH,DMSFET @V305001 00166100 G EQU * 00167000 JFUN GENMOD,DMSMOD 00168000 H EQU * 00169000 I EQU * 00170000 JFUN INCLUDE,DMSLOA 00171000 J EQU * 00172000 K EQU * 00173000 L EQU * 00174000 JFUN LOADMOD,DMSMOD 00175000 JFUN LOAD,DMSLOA 00176000 M EQU * 00178000 N EQU * 00179000 O EQU * 00180000 P EQU * 00181000 JFUN PRINTIO,DMSPIO 00182000 JFUN PRINTR 00183000 JFUN POINT 00184000 Q EQU * 00185000 R EQU * 00186000 JFUN RDBUF 00187000 JFUN RETURN,RETSET @VA00871 00188100 S EQU * 00189000 JFUN STATE 00190000 JFUN STATEW 00191000 JFUN SUBSET 00192000 JFUN SVCFREE,DMSFREES 00193000 JFUN SVCFRET,DMSFRETS 00194000 JFUN START,DMSLDRA 00195000 T EQU * 00196000 JFUN TYPLIN,DMSCWR 00197000 JFUN TAPEIO 00198000 JFUN TRAP,DMSITET P3105 00199000 U EQU * 00200000 V EQU * 00201000 W EQU * 00202000 JFUN WRBUF,DMSBWR 00203000 JFUN WAITRD,DMSCRD 00204000 JFUN WAIT 00205000 X EQU * 00206000 Y EQU * 00207000 Z EQU * 00208000 * 00209000 LASTFUN EQU *-12 (MUST FOLLOW LAST COMMAND) 00210000 * 00211000 * 00212000 DC F'0' **'NECESSARY EVIL' IF AND ONLY IF NO 'Z' COMMANDS** 00213000 EJECT 00277000 TAB203 (,DMSFREEX,OLDFREE), *00278000 (,DMSFRETX,OLDFRET), *00279000 (,0,DSSSVT), @V305665*00280100 (NSF+R01,DMSFREB,DMSFREE), *00281000 (NSF,DMSFREB,DMSFRET), *00282000 (,DMSERR,DMSERR), *00283000 (NSF,DMSSTGSB,STRINIT), @V305665*00284100 (NSF,DMSITSK,DMSKEY), *00285000 (NSF,DMSITSXS,DMSEXS), *00286000 (NSF+R01,DMSFRES,DMSFRES), *00287000 (NSF,DMSABNSV,DMSABN), *00288000 (,DMSSTGCL,DMSSMNCL), @V305665*00289100 (NSF+R01,DMSSTGSV,TSOGET), @V305665*00289200 (NSF,DMSSTGSV,RELPAGES), @V305665*00289300 (NSF,DMSSTGSV,COMPSWT), @VM03048*00289400 (NSF,0,CMSLINK) @VM03048 00289500 SPACE 3 00293000 * FLAG VALUES 00294000 NSF EQU X'80' DON'T ALLOCATE A SAVE AREA 00295000 R01 EQU X'40' 00296000 END 00297000