ibm:vm370-lib:cms:dmspnt.assemble_src
Table of Contents
DMSPNT Source
References
- Fixes Applied : 0
- This Source Date : Tuesday, December 12, 1978
- Last Fix ID : [Unmodified]
Source Listing
- DMSPNT.ASSEMBLE.txt
- PNT TITLE 'DMSPNT (CMS) VM/370 - RELEASE 6' 00001000
- SPACE 2 00002000
- *. 00003000
- * MODULE NAME: 00004000
- * 00005000
- * DMSPNT (POINT) 00006000
- * 00007000
- * FUNCTION: 00008000
- * 00009000
- * TO PLACE A FILE STATUS TABLE ENTRY IN THE ACTIVE FILE 00010000
- * TABLE (IF NECESSARY), AND TO SET THE READ POINTER 00011000
- * AND/OR WRITE POINTER FOR THAT FILE TO A GIVEN ITEM 00012000
- * NUMBER. 00013000
- * 00014000
- * ATTRIBUTES: 00015000
- * 00016000
- * NUCLEUS RESIDENT, REENTRANT 00017000
- * 00018000
- * ENTRY POINTS: 00019000
- * 00020000
- * DMSPNT 00021000
- * 00022000
- * ENTRY CONDITIONS: 00023000
- * 00024000
- * LA R1,PLIST R1 MUST POINT TO P-LIST AS USUAL 00025000
- * 00026000
- * THEN EITHER 00027000
- * 00028000
- * SVC X'CA' CALL POINT VIA SVC 00029000
- * DC AL4(ERROR) ERROR-RETURN 00030000
- * 00031000
- * OR 00032000
- * 00033000
- * L R15,APOINT WHERE APOINT=V(DMSPNT) 00034000
- * BALR R14,R15 CALLS POINT VIA BALR 00035000
- * (WITHIN NUCLEUS) 00036000
- * BNZ ERROR TRANSFER IF ERROR 00037000
- * 00038000
- * R1 MUST POINT TO POINT PARAMETER LIST: 00039000
- * DS 0F 00040000
- * PLIST DC CL8'POINT' (NOTE - IMMATERIAL IF CALLED BY BALR) 00041000
- * DC CL8' ' FILENAME 00042000
- * DC CL8' ' FILETYPE 00043000
- * DC CL2' ' FILEMODE 00044000
- * DC H' ' WRITE POINTER 00045000
- * DC H' ' READ POINTER 00046000
- * 00047000
- * EXIT CONDITIONS: 00048000
- * 00049000
- * NORMAL RETURN 00050000
- * R15=0 (AND CONDITION-CODE=0) 00051000
- * 00052000
- * FILE NOT FOUND 00053000
- * R15=1 (AND CONDITION-CODE=2) 00054000
- * 00055000
- * PARAMETER LIST ERROR 00056000
- * R15=2 (AND CONDITION-CODE=2) 00057000
- * 00058000
- * CALLS TO OTHER ROUTINES: 00059000
- * 00060000
- * DMSLAFFE, DMSLAF, DMSLFS 00061000
- * 00062000
- * EXTERNAL REFERENCES: 00063000
- * 00064000
- * AFTSECT, FVSECT 00065000
- * 00066000
- * TABLES/WORKAREAS 00067000
- * 00068000
- * NONE 00069000
- * 00070000
- * REGISTER USAGE: 00071000
- * 00072000
- * R13, FVSECT 00073000
- * R12, BASE 00074000
- * R1, AFTSECT 00075000
- * REST WORK 00076000
- * 00077000
- * OPERATION: 00078000
- * 00079000
- * DMSPNT CHECKS FOR POSSIBLE PARAMETER LIST ERRORS 00080000
- * AND EXITS WITH ERROR 2 IF PARAMETER LIST IF FAULTY. 00081000
- * 00082000
- * IF NOT, DMSPNT CALLS DMSLAF TO DETERMINE IF THE FST 00083000
- * ENTRY FOR THE GIVEN FILE 00084000
- * IS ALREADY IN THE ACTIVE FILE TABLE. IF YES, THE 00085000
- * READ AND/OR WRITE POINTERS ARE SET AS DESCRIBED 00086000
- * BELOW. 00087000
- * 00088000
- * IF NOT FOUND BY DMSLAF, THEN DMSPNT CALLS DMSLFS TO 00089000
- * FIND THE FILE. IF IT IS NOT FOUND, ERROR 1 IS 00090000
- * RETURNED TO THE CALLER. IF FOUND, THEN DMSLAFFE IS 00091000
- * CALLED TO 00092000
- * PLACE THE GIVEN FILE IN THE ACTIVE FILE TABLE. 00093000
- * 00094000
- * DMSPNT THEN CHECKS THE READ POINTER PROVIDED BY THE 00095000
- * CALLER; IF IT IS 00096000
- * ZERO, NO ACTION IS TAKEN. BUT IF NONZERO, THEN ITS 00097000
- * VALUE IS STORED IN THE READ POINTER (AFTRP) IN THE 00098000
- * ACTIVE FILE TABLE. 00099000
- * 00100000
- * NEXT, DMSPNT CHECKS THE WRITE POINTER PROVIDED BY THE 00101000
- * CALLER; IF IT IS ZERO 00102000
- * NO ACTION IS TAKEN. IF THE WRITE POINTER IS A 00103000
- * HALFWORD OF ALL ONES (THAT IS,=65535), THEN THE WRITE 00104000
- * POINTER AFTWP IS SET TO THE NUMBER OF ITEMS (AFTIC) 00105000
- * PLUS ONE. IF THE WRITE POINTER IS NEITHER 0 NOR 00106000
- * 65535, THEN ITS VALUE IS STORED IN THE WRITE POINTER 00107000
- * (AFTWP) IN THE ACTIVE FILE TABLE. 00108000
- * 00109000
- * WHEN THROUGH, POINT RETURNS TO THE CALLER AS SHOWN IN 00110000
- * THE EXIT CONDITIONS ABOVE. 00111000
- * 00112000
- *. 00113000
- EJECT 00114000
- POINT START 0 00115000
- USING NUCON,R0 00116000
- FSENTR REGSAV3 ENTER 'POINT', SAVE REGISTERS 00117000
- LA R6,BACK (FOR BCR'S TO SAVE SPACE) 00118000
- * BEWARE OF POSSIBLE INVALID PARAMETER-LIST 00119000
- * (E.G. IF CALLED FROM TERMINAL) 00120000
- LA R15,2 ERROR 2 IF THIS SHOULD HAPPEN ... 00121000
- LA R1,0(,R1) MAKE SURE THE REGISTER IS PRESENTABLE. 00122000
- CLC PMODE(10,R1),FENCE WATCH OUT FOR MODE ETC = JUST A FENCE 00123000
- BCR 8,R6 ERROR 2 IF IT IS. 00124000
- CLC PMODE+2(16,R1),BLNKFEN ALSO WATCH OUT FOR BLANKS & FENCE 00125000
- BCR 8,R6 ERROR 2 IF IT IS. 00126000
- * IF NEITHER OF THESE, PARAMETER-LIST PRESUMED TO BE OK ... 00127000
- * (ALLOW ANY MODE - E.G. P, T, S, BLANK, 00, X'FF', OR *) 00128000
- * 00129000
- LH R4,WPTR(,R1) PICK UP BOTH POINTERS FROM USER LIST 00130000
- LH R5,RPTR(,R1) (WHILE R1 STILL AVAILABLE) 00131000
- LR R11,R1 SAVE R1 IN R11 (NEEDED BY 'ACTFREE') 00132000
- * 00133000
- SR R0,R0 INITIALIZE R0 AND 00134000
- L R15,AACTLKP CALL 'ACTLKP' TO SEE 00135000
- BALR R14,R15 IF FILE IS IN ACTIVE-FILE-TABLE 00136000
- BZ FOUND BZ IF YES, FOUND THEREIN. 00137000
- * 00138000
- L R15,=V(DMSLFS) IF NOT, GO SEE IF THE FILE EXISTS 00139000
- BALR R14,R15 00140000
- BCR 7,R6 GO TO 'BACK' IF ERROR & RETURN FSTLKP ERROR-CODE 00141000
- * 00142000
- L R15,AACTFREE CALL 'ACTFREE' TO INSERT FST-ENTRY 00143000
- BALR R14,R15 IN ACTIVE FILE TABLE. 00144000
- * 00145000
- USING AFTSECT,R1 ... 00146000
- FOUND L R2,F65535 65535 INTO R2 00147000
- * (NOTE - READ-POINTER FROM P-LIST IN R5, WRITE-PTR IN R4) 00148000
- NR R5,R2 MAKE SURE READ-POINTER NO MORE THAN 65535 00149000
- BZ TSTWPT AND CHECK IT, BZ IF = 0. 00150000
- * 00151000
- STH R5,AFTRP STORE NEW READ POINTER IN FST 00152000
- * 00153000
- TSTWPT NR R4,R2 MAKE SURE WRITE-POINTER NO MORE THAN 65535 00154000
- BZ RETURN AND CHECK IT, BZ IF = 0. 00155000
- CR R4,R2 IS NEW WRITE-POINTER 'ALL ONES' ? 00156000
- BL SETWPT BL IF NOT, STORE NEW POINTER. 00157000
- LH R4,AFTIC IF YES, GET NO. OF ITEMS IN FILE, 00158000
- NR R4,R2 ... 00159000
- AH R4,H1 ADD 1 AND ... 00160000
- * 00161000
- SETWPT STH R4,AFTWP STORE NEW WRITE-POINTER IN FST-ENTRY 00162000
- * 00163000
- RETURN SR R15,R15 CLEAR GPR 15 00164000
- BACK LM R0,R14,REGSAV3 RESTORE REGISTERS, 00165000
- LTR R15,R15 SET CONDITION-CODE FOR CONVENIENCE OF CALLER 00166000
- BR R14 AND RETURN. 00167000
- * 00168000
- H1 DC H'1' 00169000
- EJECT 00170000
- * DISPLACEMENTS AND CONSTANTS 00171000
- * 00172000
- * DISPLACEMENTS FROM CALLER'S PARAMETER-LIST ... 00173000
- PMODE EQU 24 00174000
- WPTR EQU 26 00175000
- RPTR EQU 28 00176000
- * 00177000
- BLNKFEN DC 6C' ',10X'FF' WATCH OUT FOR BLANKS-FENCE OR FENCE 00178000
- FENCE EQU BLNKFEN+6 ... 00179000
- * 00180000
- LTORG 00180100
- EJECT 00181000
- NUCON 00182000
- AFT 00183000
- EJECT 00184000
- FVS 00185000
- EJECT 00186000
- REGEQU 00187000
- END 00188000
ibm/vm370-lib/cms/dmspnt.assemble_src.txt ยท Last modified: 2023/08/06 13:35 by Site Administrator