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