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