IDENT 0AV,/REL/VUNX PERIPH J BASE MIXED SST IRA$ SET 0 EXTERNAL PRESET OF RANDOM ADDRESSING DECKS QUAL$ EQU 1 DEFINE UNQUALIFIED COMMON DECKS REL$ SET 1 DEFINE FULL RELOCATION *COMMENT 0AV - VERIFY USER ACCOUNT NUMBER. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. TITLE 0AV - VERIFY USER NAME. SPACE 4 *** 0AV - VERIFY USER NAME. * C.J.MATULE 71/01/11. * R.P. ROHRBOUGH 72/09/07. SPACE 4 *** 0AV IS A LOCATION FREE ROUTINE WHICH VERIFIES THAT * THE SPECIFIED USER NUMBER IS A VALID ONE. THE VALIDATION * FILE FOR THE CORRECT FAMILY IS SEARCHED FOR THE GIVEN USER * NUMBER AND THE VALID USER INDEX IS RETURNED IF FOUND. * THE ACCOUNT RECORD BLOCK IS ALSO SET UP FOR THE CALLER,S USE. * * 0AV CAN ALSO BE CALLED TO DECREMENT A GIVEN USER,S * SECURITY COUNT AFTER AN ATTEMPTED BREACH OF SECURITY. * NOTE - THE SECURITY COUNT MAY NOT BE DECREMENTED IN ALL CASES * DUE TO THE AVAILABILITY OF THE VALIDATION FILE. THIS * CONDITION WILL BE FLAGGED BY THE ACCOUNT FILE MESSAGE THAT IS * ISSUED. SPACE 4 *** ACCOUNT FILE MESSAGES. * * *SISC, NN.* * USER,S SECURITY COUNT HAS BEEN DECREMENTED TO THE VALUE NN. * WHEN NN EQUALS ZERO, THE USER NUMBER WILL NOT BE ALLOWED * ACCESS TO THE SYSTEM. * * *SISC.* * THE SYSTEM WAS UNABLE TO DECREMENT THE SECURITY COUNT FOR * THIS USER FOR ONE OF THE FOLLOWING REASONS * - VALIDATION FILE BUSY. * - SECURITY COUNT ALREADY AT ZERO. * - SECURITY COUNT IS UNLIMITED. SPACE 4 ** ENTRY CONDITIONS. * * * (UN - UN+3) = USER NUMBER. * (UN+4) = FUNCTION CODE. * 0 = VALIDATE USER NUMBER. * 1 = DECREMENT USER,S SECURITY COUNT. * * (CN - CN+4) = FAMILY NAME. * = 0 IF NOT AVAILABLE. SPACE 4 ** EXIT CONDITIONS. * * * (A) .LT. 0 IF VALIDATION FILE DEVICE INACCESSIBLE. * (T5) = EST ORDINAL OF VALIDATION FILE DEVICE IF INACCESSIBLE. * * FUNCTION 0. (VALIDATE USER NUMBER) * (T1 - T2) = 0 IF THE USER NAME WAS NOT FOUND. * (T1 - T2) = USER INDEX IF FOUND. * (T3) = FWA OF ACCOUNT RECORD BLOCK. * (T4) = 0 IF UI .LT. AUIMX. * (T4) = 1 IF UI .GE. AUIMX. * (T5) = FAMILY EQUIPMENT. * (T6) = SECURITY COUNT. * (CN - CN+4) = FAMILY NAME. * * FUNCTION 1. (DECREMENT USER,S SECURITY COUNT.) * SECURITY COUNT DECREMENTED. * ACCOUNT FILE MESSAGE ISSUED. * (T6) = DECREMENTED SECURITY COUNT. SPACE 4 *CALL COMPMAC LIST X *CALL COMSACC LIST * *CALL COMSCPS *CALL COMSMSP *CALL COMSPIM *CALL COMSPFM *CALL COMSZOL *CALL COMPRLI SPACE 4 **** DIRECT LOCATION ASSIGNMENTS. RI EQU 16 - 17 RANDOM INDEX (2 LOCATIONS) CN EQU 30 - 34 FAMILY NAME (5 LOCATIONS) UN EQU 40 - 44 USER NAME (5 LOCATIONS) **** SPACE 4 ** CONSTANTS. VFDL EQU 4000D DELAY CYCLES WAITING FOR VALIDATION FILE SPACE 4 TITLE MAIN ROUTINE. VUN SPACE 4 ** VUN - MAIN PROGRAM. VUN SUBR ENTRY/EXIT REL$ EQU 1 SET FULL RELOCATION RJM. REL,LA RELOCATE ADDRESSES LJM IVF INITIALIZE VALIDATION FILE VUN1 RJM SUN SEARCH FOR USER NAME ZJN VUN2 IF USER ACCOUNT BLOCK NOT FOUND LDD UN+4 VUN2 ZJN VUN3 IF VALIDATION FUNCTION * UPDATE VALIDATION FILE. LDM AHSC*5+1,T3 SHN -6 ZJN VUN4 IF SECURITY COUNT EXHAUSTED LMN 77 ZJN VUN4 IF UNLIMITED LDC -100 RAM AHSC*5+1,T3 SHN -6 STM VUNE STD T1 SET SECURITY COUNT IN MESSAGE SHN 3 LMD T1 SCN 70 RAM VUNF+3 LDC. BUF-2+WLSF RJM WDS WRITE DISK VUN3 UJN VUN5 RETURN VALIDATION FILE VUN4 STM VUNF+3 SET END OF ACCOUNTING MESSAGE LDC 2L . STM VUNF+2 * RETURN VALIDATION FILE. VUN5 ENDMS LDC * VUNB EQU *-1 (FNT ORDINAL) STD CM+4 LDC 0 VUNC EQU *-1 (FILE MODE) STD CM+2 LDN RFAS RETURN FAST ATTACH FILE RJM CFA CHECK FOR LOCAL/GLOBAL FAST ATTACH FILE VUN6 LDC 0 * LDC VUNF+ACFN *SISC,NN.* OR *SISC.* VUNA EQU *-1 (FWA OF ACCOUNT FILE MESSAGE SET BY *IVF*) ZJN VUN7 IF NO ACCOUNT FILE MESSAGE ADC ACFN RJM DFM VUN7 LDN 0 SET USER INDEX FLAG * LDN 1 (UI .GT. *AUIMX*) VUND EQU *-1 STD T4 LDC 1 SET SECURITY COUNT (USE 1 IF FILE BUSY) VUNE EQU *-1 STD T6 LJM VUNX RETURN VUNF VFD 60/9LSISC, 00. * VFD 60/5LSISC. CON 0 END OF MESSAGE SPACE 4,10 SUN SPACE 4 ** SUN - SEARCH FOR USER NUMBER. * * ENTRY VALIDATION FILE ATTACHED. * (UN - UN+3) = USER NUMBER. * * EXIT (A) = 0, USER BLOCK NOT FOUND. * (T1 - T2) = USER INDEX. * (T3) = FWA OF USER VALIDATION BLOCK. * (T5) = EQUIPMENT. * (T6) = TRACK. * (T7) = SECTOR. * * CALLS CAN, RDS, SBL, SIB. SUN3 LDN 0 CLEAR USER INDEX SUN4 STD T2 SET USER INDEX SHN -14 STD T1 SHN 14 LMD T2 ZJN SUNX IF USER BLOCK NOT FOUND ADC -AUIMX MJN SUNX IF UI LESS THAN AUIMX AOM VUND SET *UI .GE. AUIMX* FLAG * LOCATE PRIMARY LEVEL BLOCK FOR ACCOUNT NUMBER. SUN SUBR ENTRY/EXIT RJM SIB SEARCH INDEX BLOCK (LEVEL 0) SUN1 MJN SUN3 IF BAD ADDRESS RJM SIB SEARCH INDEX BLOCK (LEVEL 1) MJN SUN3 IF BAD ADDRESS LDC. BUF-2 READ DATA BLOCK RJM RDS READ LEVEL 2 BLOCK MJN SUN3 IF READ ERROR * SEARCH BLOCK FOR ACCOUNT NUMBER. RJM SBL SET LIMIT OF DATA IN BUFFER SUN2 LDC -ARBS*5 RAD T3 SBD T1 CHECK FOR LIMIT MJN SUN1 IF NO VALUE HIT RJM CAN COMPARE ACCOUNT NUMBER NJN SUN2 IF NOT EQUAL LDM AHSC*5+1,T3 SET SECURITY COUNT SHN -6 STM VUNE LDM 3,T3 LPN 37 SHN 14 LMM 4,T3 LJM SUN4 SET USER INDEX SIB SPACE 4 ** SIB - SEARCH INDEX BLOCK. * * ENTRY (FTOV) = FIRST TRACK. * (T6) = TRACK. * (T7) = SECTOR. * * EXIT (A) .LT. 0 IF ERROR. * * USES T1, T3, RI - RI+1. * * CALLS CAN, CRA, RDS, SBL, SRI. * * MACROS SETMS. SIB13 LCN 0 SET EXIT CONDITION SIB SUBR ENTRY/ EXIT SIB1 LDC. BUF-2 READ NEXT SECTOR RJM RDS MJN SIBX IF READ ERROR SETMS POSITION RJM SBL SET LIMIT OF INDEX ENTRIES IN BUFFER SIB2 LCN ANWE*5 DECREMENT ENTRY RAD T3 SBD T1 PJN SIB5 IF NOT BEFORE FIRST ENTRY IN BLOCK LDM BUF ZJN SIB4 IF LEVEL - 0 LDM BUF+5*2+3 CHECK FOR LINK LPN 77 SHN 14 ADM BUF+5*2+4 SIB3 ZJN SIB13 IF NO LINK LJM SIB12 LINK THROUGH BLOCKS SIB4 LDC. 0 SIBA EQU *-1 STD RI LDC. 0 SIBB EQU *-1 STD RI+1 ADD RI ZJN SIB3 IF NO LINK UJN SIB6 * SET RANDOM INDEX. SIB5 LDM 5+3,T3 STD RI LDM 5+4,T3 STD RI+1 RJM CAN COMPARE ACCOUNT NUMBERS MJN SIB8 IF ACCOUNT PAST ENTRY ZJN SIB6 IF MATCH LJM SIB2 DECREMENT ENTRY SIB6 LDC ** FTOV EQU *-1 FIRST TRACK OF VALIDATION FILE STD T6 RJM CRA CONVERT RANDOM INDEX SIB7 LJM SIBX RETURN SIB8 LDM BUF+1 CHECK ENTRY SBN 2+ANWE STD T0 SHN 2 ADD T0 ADD T1 LMD T3 NJN SIB9 IF NOT LAST LDM BUF+5*2+3 SET LINKED BLOCK ADM BUF+5*2+4 NJN SIB11 IF LINK EXISTS SIB9 LDM BUF CHECK LEVEL ZJN SIB6 IF LEVEL-0 LCN 1 SIB10 UJN SIB7 RETURN SIB11 LDM BUF CHECK LEVEL NJN SIB12 IF NOT LEVEL - 0 LDM 5+3,T3 STM SIBA SAVE RANDOM ADDRESS OF LAST ENTRY LDM 5+4,T3 STM SIBB SIB12 LDM BUF+5*2+3 SET READ OF LINKED BLOCK STD RI LDM BUF+5*2+4 STD RI+1 LDM FTOV RESET FIRST TRACK STD T6 RJM CRA CONVERT RANDOM ADDRESS MJN SIB10 IF BAD ADDRESS LJM SIB1 READ BLOCK CAN SPACE 4 ** CAN - COMPARE ACCOUNT NUMBER. * * ENTRY (T3) = ADDRESS OF ENTRY. * (UN - UN+3) = USER NUMBER. * * EXIT (A) = 0 IF EQUAL. * (A) < 0 IF LARGER. * (A) > 0 IF VALIDUS ENTRY LARGER. CAN SUBR LDI T3 SBD UN NJN CANX IF NOT EQUAL LDM 1,T3 SBD UN+1 NJN CANX IF NOT EQUAL LDM 2,T3 SBD UN+2 NJN CANX IF NOT EQUAL LDM 3,T3 SCN 77 SBD UN+3 UJN CANX EXIT SBL SPACE 4 ** SBL - SET BUFFER LIMITS. * * ENTRY (BUF - BUF+4) = CONTROL WORD FOR BLOCK. * * EXIT (T1) = FWA OF BLOCK FOR SEARCH. * (T3) = LIMIT OF BLOCK FOR SEARCH. SBL SUBR ENTRY/ EXIT LDM BUF+4 SET FWA OF ENTRIES SHN 2 ADM BUF+4 ADC. BUF STD T1 LDM BUF+1 SET LIMIT OF ENTRIES SHN 2 ADM BUF+1 SBN 2*5 ADD T1 STD T3 UJN SBLX RETURN CFA SPACE 4,10 ** CFA - CHECK FAST ATTACH FILE. * * ENTRY (A) = SUBFUNCTION. * (BUF) = FST WORD. * * EXIT (CM - CM+4) = RESPONSE FROM *AFAM* FUNCTION. * * USES CM - CM+4. * * MACROS MONITOR. CFA SUBR ENTRY/EXIT STD CM+3 STORE SUBFUNCTION CFAA LDN 0 (GLOBAL FAFT FLAG) ZJN CFA1 IF NOT GLOBAL FAST ATTACH FILE LDD T5 CFAB ADD TH IMMEDIATE RETURN IF INACCESSIBLE DEVICE * PSN (AFTER FILE IS ATTACHED) CFA1 STD CM+1 MONITOR AFAM UJN CFAX RETURN SPACE 4,10 * COMMON DECKS. *CALL COMPCRA SPACE 4 * BUFFER. BUF EQU *+2 TITLE PRESET. IVF SPACE 4,30 ** IVF - INITIALIZE VALIDATION FILE. * * ENTRY (CN - CN+3) = FAMILY NAME. * = 0 IF NO FAMILY NAME. * (UN - UN+3) = USER NAME. * (UN+4) = FUNCTION CODE. * * EXIT (T5) = EQUIPMENT. * (T6) = FIRST TRACK. * (T7) = FIRST SECTOR. * (FTOV) = FIRST TRACK. * *SETMS READ* PERFORMED. * VALIDATION FILE ATTACHED. * TO *VUN6* WITH (T1) = (T2) = (T4) = 0, IF ONE * OF THE FOLLOWING IS TRUE- * -NO USER NAME IS PRESENT. * -THE VALIDATION FILE COULD NOT BE FOUND. * -THE VALIDATION FILE IS CURRENTLY BEING USED BY * *MODVAL*. * -AN *ORET* ERROR FLAG WAS SET WHILE WAITING FOR THE * VALIDATION FILE TO BECOME AVAILABLE. * * USES T1 - T7, CM - CM+4, CN - CN+4. * * CALLS FAT, CFA. * * MACROS CFI, MONITOR, PAUSE, SETMS, SFA. IVF LDD UN NJN IVF1 IF USER NAME PRESENT LJM IVF7 CLEAR USER INDEX IVF1 LDD UN+3 CLEAR USER NAME SCN 77 STD UN+3 * LOCATE CORRECT VALIDATION FILE. LDD MA SET FILE NAME CWM IVFB,ON SBN 1 CRD CM LDD CN ZJN IVF2 IF FAMILY NAME NOT SPECIFIED SHN -6 LMN 1R0 NJN IVF4 IF NOT BLANK FAMILY NAME LDC PFNL UJN IVF3 USE SYSTEM DEFAULT FAMILY * GET FAMILY NAME IF NOT GIVEN. IVF2 LDD CP FETCH FAMILY EST ORDINAL ADN PFCW IVF3 CRD T1 SFA EST,T4 READ EST ENTRY ADK EQDE CRD CN LDD CN+4 READ FAMILY NAME SHN 3 ADN PFGL CRD CN IVF4 RJM FAT FIND FAST ATTACH FILE ZJN IVF5 IF FOUND LJM IVF7 CLEAR USER INDEX IVF5 LDM FATB SET FWA OF FNT STM IVFA LDM FATB+1 STM IVFA+1 CFI FNT,T1 READ FST ENTRY IVFA ADC * (FWA OF FNT) CRD CM ADN FSTG CRD T5 LDD CM+3 LPN 77 RAM CFAA SETMS IO,(NS,RW) LDM. MSD SHN 21-6 MJP VUNX IF DEVICE INACCESSIBLE LDD CM+4 SHN 3 ADN TRLL FETCH TRT ADDRESS CRD CM LDD CM+3 LPN 77 SHN 14 LMD CM+4 PRESET *COMPCRA* SBD TH STM CRAA+1 SHN -14 RAM CRAA IVF6 LDD T1 SET FNT ORDINAL IN REQUEST STD CM+4 STM VUNB LDD UN+4 ZJN IVF9 IF ATTACH IN READ/ALLOW MODIFY MODE LMN 1&0 ZJN IVF8 IF ATTACH IN NON-ROLLABLE UPDATE MODE LDC. * SET ADDRESS WHERE ERROR DETECTED STD CM+1 LDN 0 DO NOT SET AN ERROR FLAG STD CM+2 MONITOR CHGM CONDITIONALLY HANG PP IVF7 LDN ZERL CLEAR USER INDEX CRD T0 LJM VUN6 EXIT IVF8 LDC. VUNF SET FWA OF DAYFILE MESSAGE STM VUNA LDC 4000+PTUP&PTRM REQUEST NON-ROLLABLE UPDATE MODE IVF9 LMN PTRM STD CM+2 STM VUNC SAVE FILE MODE FOR RETURNING FILE LDN AFAS SET ATTACH FAST ATTACH FILE RJM CFA CHECK FOR LOCAL/GLOBAL FAST ATTACH FILE LDD CM+1 CHECK RETURN STATUS ZJN IVF12 IF FILE ATTACHED SHN 21-11 MJP VUNX IF DEVICE INACCESSIBLE LDD CM+4 LPN 2 ZJN IVF10 IF ATTACHED IN MODIFY MODE BY *MODVAL* * WAIT FOR OTHER *0AV* TO RELEASE VALIDATION FILE. PAUSE LDD CM+1 CHECK ERROR FLAG LMN ORET NJN IVF11 IF NO ERROR IVF10 STM VUNF+3 LDC 2L . SET END OF ACCOUNTING MESSAGE STM VUNF+2 LJM IVF7 CLEAR USER INDEX IVF11 LDC VFDL/2 DELAY SBN 1 PJN *-1 IF NOT END OF DELAY LJM IVF6 RETRY ATTACH IVF12 STM CFAB LDD T6 SET FIRST TRACK STM FTOV LDD T5 SET EST ORDINAL STD CM+1 LDN UTRS GET CURRENT TRT STD CM+3 MONITOR STBM LDN FSMS SET SECTOR STD T7 LJM VUN1 RETURN IVFB VFD 42/0L"APFN",6/0 SPACE 4,10 * COMMON DECKS. *CALL COMPFAT SPACE 4,10 * ASSEMBLE REMOTE CODE. HERE SPACE 4,10 * CHECK FOR OVERFLOW. ERRPL *-ZAVL *0AV* OVERFLOWS CALLING PROGRAM ERRNG ZAVL-BUF-501 BUFFER OVERFLOWS CALLING PROGRAM END