; 0001 0 MODULE AUDSRV_LISTENER ( ; 0002 0 LANGUAGE (BLISS32), ; 0003 0 IDENT = 'X-1', ; 0004 0 MAIN = LISTENER_MAIN, ; 0005 0 ADDRESSING_MODE (EXTERNAL = GENERAL) ; 0006 0 ) = ; 0007 1 BEGIN ; 0008 1 ; 0009 1 !++ ; 0010 1 ! FACILITY: ; 0011 1 ! ; 0012 1 ! Privileged, user mode, hack utilities. ; 0013 1 ! ; 0014 1 ! ABSTRACT: ; 0015 1 ! ; 0016 1 ! This program utilizes the listener mailbox feature of the audit ; 0017 1 ! server. This is coupled to a DECtalk unit to vocalize what is ; 0018 1 ! actually happening on the node. ; 0019 1 ! ; 0020 1 !-------------------------------------------------------------------------------- ; 0021 1 ! ; 0022 1 ! To use this program, it is first necessary to build it. This is ; 0023 1 ! done by using the following commands: ; 0024 1 ! ; 0025 1 ! $ BLISS/LIST/OBJECT AUDSRV_LISTENER ; 0026 1 ! $ LINK/MAP AUDSRV_LISTENER ; 0027 1 ! ; 0028 1 ! This program must be run prior to enabling the audit server listener ; 0029 1 ! device. This is because the device must exist and it must be a ; 0030 1 ! mailbox. It is also necessary to define the terminal line which ; 0031 1 ! will be used to send the messages to the DECtalk unit. ; 0032 1 ! ; 0033 1 ! The easiest way to accomplish this is to do the following ; 0034 1 ! ; 0035 1 ! $ DEFINE DECTALK_TERMINAL terminal-with-DECtalk-device: ; 0036 1 ! $ RUN AUDSRV_LISTENER ; 0037 1 ! ; 0038 1 ! and then from another terminal, enable the listener device (using the ; 0039 1 ! logical name) using the command: ; 0040 1 ! ; 0041 1 ! $ SET AUDIT/LISTENER_DEVICE=LISTENER_MAILBOX ; 0042 1 ! ; 0043 1 ! NOTE ; 0044 1 ! ; 0045 1 ! Because this program creates a permanent mailbox with a system logical ; 0046 1 ! name and must use the specified terminal line for DECtalk, the user must ; 0047 1 ! have PRMMBX, SYSNAM, and SYSPRV (or an ACL on the terminal) prior to ; 0048 1 ! running AUDSRV_LISTENER. ; 0049 1 ! ; 0050 1 !-------------------------------------------------------------------------------- ; 0051 1 ! ; 0052 1 ! AUTHOR: A. Programmer, CREATION DATE: 20-Feb-1989 ; 0053 1 ! ; 0054 1 ! MODIFIED BY: ; 0055 1 ! ; 0056 1 !-- ; 0057 1 ; 0058 1 LIBRARY 'SYS$LIBRARY:LIB'; ; 0060 1 GLOBAL ROUTINE LISTENER_MAIN = ; 0061 1 ; 0062 1 !++ ; 0063 1 ! ; 0064 1 ! FUNCTIONAL DESCRIPTION: ; 0065 1 ! ; 0066 1 ! This routine creates a mailbox (or assigns a channel to an existing ; 0067 1 ! mailbox as necessary) which the audit server will use to send security ; 0068 1 ! event messages in real-time. These are then parsed, and the appropriate ; 0069 1 ! message built for DECtalk. ; 0070 1 ! ; 0071 1 ! CALLING SEQUENCE: ; 0072 1 ! LISTENER_MAIN () ; 0073 1 ! ; 0074 1 ! INPUT PARAMETERS: ; 0075 1 ! NONE ; 0076 1 ! ; 0077 1 ! IMPLICIT INPUTS: ; 0078 1 ! NONE ; 0079 1 ! ; 0080 1 ! OUTPUT PARAMETERS: ; 0081 1 ! NONE ; 0082 1 ! ; 0083 1 ! IMPLICIT OUTPUTS: ; 0084 1 ! NONE ; 0085 1 ! ; 0086 1 ! ROUTINE VALUE: ; 0087 1 ! Various RTL library status values. ; 0088 1 ! ; 0089 1 ! SIDE EFFECTS: ; 0090 1 ! A permanent mailbox may be created. ; 0091 1 ! ; 0092 1 !-- ; 0093 1 ; 0094 2 BEGIN ; 0095 2 ; 0096 2 MACRO ; M 0097 2 SIGNAL (ERROR) = ; M 0098 2 BEGIN ; M 0099 2 EXTERNAL ROUTINE LIB$SIGNAL; ; M 0100 2 LIB$SIGNAL (ERROR %IF %LENGTH-1 GTR 0 %THEN, %REMAINING %FI); ; 0101 2 END %, ; 0102 2 ; M 0103 2 SIGNAL_RETURN (ERROR) = ; M 0104 2 BEGIN ; M 0105 2 EXTERNAL ROUTINE LIB$SIGNAL; ; M 0106 2 LIB$SIGNAL (ERROR %IF %LENGTH-1 GTR 0 %THEN, %REMAINING %FI); ; M 0107 2 RETURN ERROR OR STS$M_INHIB_MSG; ; 0108 2 END %; ; 0109 2 ; 0110 2 EXTERNAL ROUTINE ; 0111 2 DTK$INITIALIZE, ; 0112 2 DTK$SET_VOICE, ; 0113 2 DTK$SPEAK_TEXT, ; 0114 2 ; 0115 2 LIB$PUT_OUTPUT; ; 0116 2 ; 0117 2 LITERAL ; 0118 2 MESSAGE_SIZE = 3072, ! Maximum mailbox message size. ; 0119 2 PACKET_INFO_SIZE = NAM$C_MAXRSS, ! Size of packet info table entry ; 0120 2 ; 0121 2 DEF_USER_IDX = 1, ! Local default account name (for proxy) ; 0122 2 DEVICE_NAM_IDX = 2, ! Device name packet index ; 0123 2 FINAL_STS_IDX = 3, ! Final status packet index ; 0124 2 ID_NAME_IDX = 4, ! Identifier name packet index ; 0125 2 IMAGE_NAM_IDX = 5, ! Image name packet index ; 0126 2 INSTALL_PRV_IDX = 6, ! Installed privs packet index ; 0127 2 LOCAL_USER_IDX = 7, ! Local account name (for proxy) ; 0128 2 OBJECT_NAM_IDX = 9, ! Object name packet index ; 0129 2 OBJECT_TYP_IDX = 10, ! Object type packet index ; 0130 2 PROCESS_NAM_IDX = 11, ! Process name packet index ; 0131 2 REMOTE_NODE_IDX = 12, ! Remote node name packet index ; 0132 2 REMOTE_USER_IDX = 13, ! Remote user name packet index ; 0133 2 TERMINAL_IDX = 14, ! Terminal name packet index ; 0134 2 UAF_SOURCE_IDX = 15, ! UAF source name packet ; 0135 2 USERNAME_IDX = 16, ! User name packet index ; 0136 2 VOLUME_NAM_IDX = 17, ! Volume name packet index ; 0137 2 ; 0138 2 LAST_IDX = 18; ! Last index used + 1 ; 0139 2 ; 0140 2 LITERAL ; 0141 2 LGI$_CMDINPUT = %X'00D38064', ; 0142 2 LGI$_DISUSER = %X'00D3810C', ; 0143 2 LGI$_INVPWD = %X'00D380FC', ; 0144 2 LGI$_NOSUCHUSER = %X'00D380F4'; ; 0145 2 ; 0146 2 LOCAL ; 0147 2 CURRENT_PACKET : REF $BBLOCK, ! Current packet in the list ; 0148 2 IO_STATUS : VECTOR [4, WORD], ! I/O status block ; 0149 2 LAST_BROWSER : VECTOR [UAF$S_USERNAME, BYTE], ! Last user to browse ; 0150 2 LINE_BUF : VECTOR [1024, BYTE], ! Speech line buffer ; 0151 2 LINE_DESC : $BBLOCK [DSC$C_S_BLN], ! Speech line descriptor ; 0152 2 MAILBOX_CHANNEL : WORD, ! Channel assigned to listener mailbox ; 0153 2 MESSAGE : $BBLOCK [MESSAGE_SIZE], ! Storage for message ; 0154 2 PACKET_COUNT, ! Number of packets in the message ; 0155 2 PACKET_INFO : BLOCKVECTOR [LAST_IDX, PACKET_INFO_SIZE, BYTE], ! Packet information ; 0156 2 PACKET_TABLE : BLOCKVECTOR [LAST_IDX, DSC$C_S_BLN, BYTE], ! Packet present descr table ; 0157 2 POINTER1 : REF $BBLOCK, ! Temp pointer ; 0158 2 POINTER2 : REF $BBLOCK, ! Temp pointer ; 0159 2 POINTER3 : REF $BBLOCK, ! Temp pointer ; 0160 2 POINTER4 : REF $BBLOCK, ! Temp pointer ; 0161 2 STATUS, ! Routine exit status ; 0162 2 TABLE_INDEX, ! Index into packet table ; 0163 2 TEMP_DESC : VECTOR [2], ! Temporaty descriptor ; 0164 2 VOICE_ID; ! DECtalk voice-id ; 0165 2 ; 0166 2 BIND ; 0167 2 ACCESS_TITLE_1 = $DESCRIPTOR ('!AS is backing up files') : $BBLOCK, ; 0168 2 ACCESS_TITLE_2 = $DESCRIPTOR ('!AS is copying files') : $BBLOCK, ; 0169 2 ACCESS_TITLE_3 = $DESCRIPTOR ('!AS is browsing through a directory') : $BBLOCK, ; 0170 2 ACCESS_TITLE_4 = $DESCRIPTOR ('!AS is browsing through a file') : $BBLOCK, ; 0171 2 AUDIT_TITLE_1 = $DESCRIPTOR ('!AS has changed the auditable events') : $BBLOCK, ; 0172 2 AUDIT_TITLE_2 = $DESCRIPTOR ('!AS has disabled some event auditing') : $BBLOCK, ; 0173 2 AUDIT_TITLE_3 = $DESCRIPTOR ('!AS has enabled some event auditing') : $BBLOCK, ; 0174 2 AUDIT_TITLE_4 = $DESCRIPTOR ('!AS has generated an auditing event') : $BBLOCK, ; 0175 2 BREAKIN_TITLE_1 = $DESCRIPTOR ('A break in by !AS !AS !AS is in progress') : $BBLOCK, ; 0176 2 BREAKIN_TITLE_2 = $DESCRIPTOR ('A break in by !AS is in progress from !AS') : $BBLOCK, ; 0177 2 INSTALL_TITLE_1 = $DESCRIPTOR ('!AS has just installed !AS !AS') : $BBLOCK, ; 0178 2 INSTALL_TITLE_2 = $DESCRIPTOR ('!AS has just removed !AS') : $BBLOCK, ; 0179 2 LOGFAIL_TITLE_1 = $DESCRIPTOR ('The user on !AS !AS') : $BBLOCK, ; 0180 2 LOGFAIL_TITLE_2 = $DESCRIPTOR ('has blown his password') : $BBLOCK, ; 0181 2 LOGFAIL_TITLE_3 = $DESCRIPTOR ('has aborted the login') : $BBLOCK, ; 0182 2 LOGFAIL_TITLE_4 = $DESCRIPTOR ('failed logging in') : $BBLOCK, ; 0183 2 LOGFAIL_TITLE_5 = $DESCRIPTOR ('is attempting to use a disabled account') : $BBLOCK, ; 0184 2 LOGFAIL_TITLE_6 = $DESCRIPTOR ('is attempting to use a nonexistant account') : $BBLOCK, ; 0185 2 LOGIN_TITLE_1 = $DESCRIPTOR ('!AS has !AS !AS') : $BBLOCK, ; 0186 2 LOGOUT_TITLE_1 = $DESCRIPTOR ('!AS !AS has logged out !AS !AS') : $BBLOCK, ; 0187 2 MOUNT_TITLE_1 = $DESCRIPTOR ('!AS has mounted volume !AS on !AS') : $BBLOCK, ; 0188 2 MOUNT_TITLE_2 = $DESCRIPTOR ('!AS has dismounted volume !AS from !AS') : $BBLOCK, ; 0189 2 NETUAF_TITLE_1 = $DESCRIPTOR ('!AS has !AS a proxy to account !AS from user !AS on node !AS') : $BBLOCK, ; 0190 2 RIGHTS_TITLE_1 = $DESCRIPTOR ('!AS has created a new rights database') : $BBLOCK, ; 0191 2 RIGHTS_TITLE_2 = $DESCRIPTOR ('!AS has !AS the identifier !AS') : $BBLOCK, ; 0192 2 SYSUAF_TITLE_1 = $DESCRIPTOR ('!AS has !AS the authorization record for !AS') : $BBLOCK, ; 0193 2 ; 0194 2 MAILBOX_LOGICAL = $DESCRIPTOR ('LISTENER_MAILBOX') : $BBLOCK, ; 0195 2 NULL_STRING = $DESCRIPTOR ('') : $BBLOCK, ; 0196 2 UNKNOWN_USER = $DESCRIPTOR ('someone') : $BBLOCK; ; 0197 2 ; 0198 2 ! Initialize needed storage. ; 0199 2 ; 0200 2 CH$FILL (0, %ALLOCATION (IO_STATUS), IO_STATUS); ; 0201 2 CH$FILL (0, %ALLOCATION (LAST_BROWSER), LAST_BROWSER); ; 0202 2 CH$FILL (0, %ALLOCATION (LINE_DESC), LINE_DESC); ; 0203 2 CH$FILL (0, %ALLOCATION (PACKET_INFO), PACKET_INFO); ; 0204 2 CH$FILL (0, %ALLOCATION (PACKET_TABLE), PACKET_TABLE); ; 0205 2 ; 0206 2 LINE_DESC[DSC$A_POINTER] = LINE_BUF; ; 0207 2 ; 0208 2 INCR J FROM 1 TO LAST_IDX ; 0209 2 DO PACKET_TABLE[.J, DSC$A_POINTER] = PACKET_INFO [.J, 0,0,0,0]; ; 0210 2 ; 0211 2 ! Create the necessary mailbox. ; 0212 2 ; P 0213 2 STATUS = $CREMBX (PRMFLG = 1, ; P 0214 2 CHAN = MAILBOX_CHANNEL, ; P 0215 2 MAXMSG = MESSAGE_SIZE, ; P 0216 2 BUFQUO = MESSAGE_SIZE * 32, ; P 0217 2 PROMSK = %X'FF00', ; 0218 2 LOGNAM = MAILBOX_LOGICAL); ; 0219 2 IF NOT .STATUS THEN SIGNAL_RETURN (.STATUS); ; 0220 2 ; 0221 2 ! Initialize the DECtalk unit. ; 0222 2 ; 0223 2 STATUS = DTK$INITIALIZE (VOICE_ID, $DESCRIPTOR ('DECTALK_TERMINAL')); ; 0224 2 IF NOT .STATUS THEN SIGNAL_RETURN (.STATUS); ; 0225 2 STATUS = DTK$SET_VOICE (VOICE_ID, %REF (DTK$K_VOICE_FEMALE)); ; 0226 2 IF NOT .STATUS THEN SIGNAL_RETURN (.STATUS); ; 0227 2 ; 0228 2 ! Sit in a loop looking for messages from the audit server. ; 0229 2 ; 0230 2 WHILE 1 ; 0231 2 DO ; 0232 3 BEGIN ; P 0233 3 STATUS = $QIOW (CHAN = .MAILBOX_CHANNEL, ; P 0234 3 FUNC = IO$_READVBLK, ; P 0235 3 IOSB = IO_STATUS, ; P 0236 3 P1 = MESSAGE, ; 0237 3 P2 = MESSAGE_SIZE); ; 0238 3 IF .STATUS THEN STATUS = .IO_STATUS[0]; ; 0239 3 IF NOT .STATUS THEN EXITLOOP; ; 0240 3 ; 0241 3 ! Reset all the various pointers. ; 0242 3 ; 0243 3 INCR J FROM 1 TO LAST_IDX ; 0244 3 DO PACKET_TABLE[.J, DSC$W_LENGTH] = 0; ; 0245 3 ; 0246 3 ! Scan the message looking for specific packets. ; 0247 3 ; 0248 3 CURRENT_PACKET = MESSAGE[NSA$R_PACKET_LIST]; ; 0249 3 PACKET_COUNT = .MESSAGE[NSA$W_PACKET_COUNT]; ; 0250 3 INCR J FROM 1 TO .PACKET_COUNT ; 0251 3 DO ; 0252 4 BEGIN ; 0253 4 ; 0254 4 ! Exit out if I trip off the end of the message. ; 0255 4 ; 0256 4 IF .CURRENT_PACKET GEQA MESSAGE + .MESSAGE[NSA$W_REC_SIZE] ; 0257 4 THEN EXITLOOP; ; 0258 4 ; 0259 4 ! See if the packet is worth noting. ; 0260 4 ; 0261 4 TABLE_INDEX = 0; ; 0262 4 SELECTONE .CURRENT_PACKET[NSA$W_PACKET_TYPE] OF ; 0263 4 SET ; 0264 4 [NSA$C_PKT_DEFAULT_USERNAME]: TABLE_INDEX = DEF_USER_IDX; ; 0265 4 [NSA$C_PKT_DEVICE_NAME]: TABLE_INDEX = DEVICE_NAM_IDX; ; 0266 4 [NSA$C_PKT_FINAL_STATUS]: TABLE_INDEX = FINAL_STS_IDX; ; 0267 4 [NSA$C_PKT_ID_NAME]: TABLE_INDEX = ID_NAME_IDX; ; 0268 4 [NSA$C_PKT_IMAGE_NAME]: TABLE_INDEX = IMAGE_NAM_IDX; ; 0269 4 [NSA$C_PKT_INSTALL_PRIVS]: TABLE_INDEX = INSTALL_PRV_IDX; ; 0270 4 [NSA$C_PKT_LOCAL_USERNAME]: TABLE_INDEX = LOCAL_USER_IDX; ; 0271 4 [NSA$C_PKT_OBJECT_NAME]: TABLE_INDEX = OBJECT_NAM_IDX; ; 0272 4 [NSA$C_PKT_OBJECT_TYPE]: TABLE_INDEX = OBJECT_TYP_IDX; ; 0273 4 [NSA$C_PKT_PROCESS_NAME]: TABLE_INDEX = PROCESS_NAM_IDX; ; 0274 4 [NSA$C_PKT_REMOTE_NODENAME]: TABLE_INDEX = REMOTE_NODE_IDX; ; 0275 4 [NSA$C_PKT_REMOTE_USERNAME]: TABLE_INDEX = REMOTE_USER_IDX; ; 0276 4 [NSA$C_PKT_TERMINAL]: TABLE_INDEX = TERMINAL_IDX; ; 0277 4 [NSA$C_PKT_UAF_ADD]: TABLE_INDEX = UAF_SOURCE_IDX; ; 0278 4 [NSA$C_PKT_UAF_COPY]: TABLE_INDEX = UAF_SOURCE_IDX; ; 0279 4 [NSA$C_PKT_UAF_DELETE]: TABLE_INDEX = UAF_SOURCE_IDX; ; 0280 4 [NSA$C_PKT_UAF_MODIFY]: TABLE_INDEX = UAF_SOURCE_IDX; ; 0281 4 [NSA$C_PKT_UAF_RENAME]: TABLE_INDEX = UAF_SOURCE_IDX; ; 0282 4 [NSA$C_PKT_USERNAME]: TABLE_INDEX = USERNAME_IDX; ; 0283 4 [NSA$C_PKT_VOLUME_NAME]: TABLE_INDEX = VOLUME_NAM_IDX; ; 0284 4 TES; ; 0285 4 ; 0286 4 ! If a useful packet has been seen, copy the data from the packet, and build the ; 0287 4 ! descriptor for the data in the packet table. ; 0288 4 ; 0289 4 IF .TABLE_INDEX GTR 0 ; 0290 4 THEN ; 0291 5 BEGIN ; 0292 5 PACKET_TABLE[.TABLE_INDEX, DSC$W_LENGTH] = .CURRENT_PACKET[NSA$W_PACKET_SIZE] - ; 0293 5 NSA$C_PKT_HDR_LENGTH; ; 0294 5 ; 0295 5 ! If the packet can not have a device name, simply copy the information. ; 0296 5 ! Otherwise, remove the initial underscore and trailing colon if present. ; 0297 5 ; 0298 5 IF .TABLE_INDEX EQL TERMINAL_IDX ; 0299 5 OR .TABLE_INDEX EQL DEVICE_NAM_IDX ; 0300 5 OR .TABLE_INDEX EQL OBJECT_NAM_IDX ; 0301 5 THEN ; 0302 6 BEGIN ; 0303 6 POINTER1 = CURRENT_PACKET[NSA$R_PACKET_DATA]; ; 0304 6 IF .(CURRENT_PACKET[NSA$R_PACKET_DATA])<0,8> EQL %C'_' ; 0305 6 THEN ; 0306 7 BEGIN ; 0307 7 PACKET_TABLE[.TABLE_INDEX, DSC$W_LENGTH] = .PACKET_TABLE[.TABLE_INDEX, DSC$W_LENGTH] - 1; ; 0308 7 POINTER1 = .POINTER1 + 1; ; 0309 6 END; ; 0310 6 IF .(.CURRENT_PACKET + .CURRENT_PACKET[NSA$W_PACKET_SIZE] - 1)<0,8> EQL %C':' ; 0311 6 THEN PACKET_TABLE[.TABLE_INDEX, DSC$W_LENGTH] = .PACKET_TABLE[.TABLE_INDEX, DSC$W_LENGTH] - 1; ; 0312 6 CH$MOVE (.PACKET_TABLE[.TABLE_INDEX, DSC$W_LENGTH], ; 0313 6 .POINTER1, PACKET_INFO[.TABLE_INDEX, 0,0,0,0]); ; 0314 6 END ; 0315 5 ELSE ; 0316 6 BEGIN ; 0317 6 CH$MOVE (.PACKET_TABLE[.TABLE_INDEX, DSC$W_LENGTH], ; 0318 6 CURRENT_PACKET[NSA$R_PACKET_DATA], ; 0319 6 PACKET_INFO[.TABLE_INDEX, 0,0,0,0]); ; 0320 5 END; ; 0321 4 END; ; 0322 4 ; 0323 4 ! Next packet please. ; 0324 4 ; 0325 4 CURRENT_PACKET = .CURRENT_PACKET + .CURRENT_PACKET[NSA$W_PACKET_SIZE]; ; 0326 3 END; ; 0327 3 ; 0328 3 ! Make sure there is always a username (of sorts). ; 0329 3 ; 0330 3 IF .PACKET_TABLE[USERNAME_IDX, DSC$W_LENGTH] EQL 0 ; 0331 3 THEN ; 0332 4 BEGIN ; 0333 4 CH$MOVE (.UNKNOWN_USER[DSC$W_LENGTH], ; 0334 4 .UNKNOWN_USER[DSC$A_POINTER], ; 0335 4 .PACKET_TABLE[USERNAME_IDX, DSC$A_POINTER]); ; 0336 4 PACKET_TABLE[USERNAME_IDX, DSC$W_LENGTH] = .UNKNOWN_USER[DSC$W_LENGTH]; ; 0337 3 END; ; 0338 3 ; 0339 3 ! Now let the user know what is going on. ; 0340 3 ; 0341 3 SELECTONE .MESSAGE[NSA$W_RECORD_TYPE] OF ; 0342 3 SET ; 0343 3 ; 0344 3 ! Object access. Let's see if it is interesting. ; 0345 3 ; 0346 3 [NSA$C_MSG_ACCESS]: ; 0347 4 BEGIN ; 0348 4 ; 0349 4 ! This is only really interesting if the object is a file. ; 0350 4 ; 0351 4 IF .PACKET_TABLE[OBJECT_TYP_IDX, DSC$W_LENGTH] GTR 0 ; 0352 4 THEN ; 0353 4 IF .PACKET_INFO[OBJECT_TYP_IDX, 0, 0, 8, 0] EQL ACL$C_FILE ; 0354 4 THEN ; 0355 5 BEGIN ; 0356 5 ; 0357 5 ! See if this access audit is the result of some interesting image. ; 0358 5 ; 0359 5 POINTER1 = 0; ; 0360 5 ; 0361 5 ! BACKUP.EXE, something is being copied. ; 0362 5 ; 0363 5 IF CH$FIND_SUB (.PACKET_TABLE[IMAGE_NAM_IDX, DSC$W_LENGTH], ; 0364 5 .PACKET_TABLE[IMAGE_NAM_IDX, DSC$A_POINTER], ; 0365 5 %CHARCOUNT (']BACKUP.EXE'), UPLIT (']BACKUP.EXE')) ; 0366 5 NEQ 0 ; 0367 5 THEN POINTER1 = ACCESS_TITLE_1; ; 0368 5 ; 0369 5 ! COPY.EXE, something is being copied. ; 0370 5 ; 0371 5 IF CH$FIND_SUB (.PACKET_TABLE[IMAGE_NAM_IDX, DSC$W_LENGTH], ; 0372 5 .PACKET_TABLE[IMAGE_NAM_IDX, DSC$A_POINTER], ; 0373 5 %CHARCOUNT (']COPY.EXE'), UPLIT (']COPY.EXE')) ; 0374 5 NEQ 0 ; 0375 5 THEN POINTER1 = ACCESS_TITLE_2; ; 0376 5 ; 0377 5 ! DIRECTORY.EXE, someone is looking around. ; 0378 5 ; 0379 5 IF CH$FIND_SUB (.PACKET_TABLE[IMAGE_NAM_IDX, DSC$W_LENGTH], ; 0380 5 .PACKET_TABLE[IMAGE_NAM_IDX, DSC$A_POINTER], ; 0381 5 %CHARCOUNT (']DIRECTORY.EXE'), UPLIT (']DIRECTORY.EXE')) ; 0382 5 NEQ 0 ; 0383 5 THEN POINTER1 = ACCESS_TITLE_3; ; 0384 5 ; 0385 5 ! TYPE.EXE, someone is browsing. ; 0386 5 ; 0387 5 IF CH$FIND_SUB (.PACKET_TABLE[IMAGE_NAM_IDX, DSC$W_LENGTH], ; 0388 5 .PACKET_TABLE[IMAGE_NAM_IDX, DSC$A_POINTER], ; 0389 5 %CHARCOUNT (']TYPE.EXE'), UPLIT (']TYPE.EXE')) ; 0390 5 NEQ 0 ; 0391 5 THEN POINTER1 = ACCESS_TITLE_4; ; 0392 5 ; 0393 5 IF .POINTER1 NEQA 0 ; 0394 5 THEN ; 0395 6 BEGIN ; 0396 6 LINE_DESC[DSC$W_LENGTH] = %ALLOCATION (LINE_BUF); ; P 0397 6 $FAO (.POINTER1, ; P 0398 6 LINE_DESC, ; P 0399 6 LINE_DESC, ; 0400 6 PACKET_TABLE[USERNAME_IDX, DSC$W_LENGTH]); ; 0401 6 STATUS = LIB$PUT_OUTPUT (LINE_DESC); ; 0402 6 STATUS = DTK$SPEAK_TEXT (VOICE_ID, LINE_DESC, %REF (DTK$K_WAIT)); ; 0403 6 IF NOT .STATUS THEN SIGNAL (.STATUS); ; 0404 5 END; ; 0405 4 END; ; 0406 3 END; ; 0407 3 ; 0408 3 ! Some auditing state change. ; 0409 3 ; 0410 3 [NSA$C_MSG_AUDIT]: ; 0411 4 BEGIN ; 0412 4 LINE_DESC[DSC$W_LENGTH] = %ALLOCATION (LINE_BUF); ; 0413 5 IF (.MESSAGE[NSA$W_RECORD_SUBTYPE] EQL NSA$C_AUDIT_ENABLED) ; 0414 5 AND (.MESSAGE[NSA$W_RECORD_SUBTYPE] EQL NSA$C_AUDIT_DISABLED) ; 0415 4 THEN POINTER1 = AUDIT_TITLE_1 ; 0416 4 ELSE ; 0417 5 BEGIN ; 0418 5 POINTER1 = AUDIT_TITLE_4; ; 0419 5 IF .MESSAGE[NSA$W_RECORD_SUBTYPE] EQL NSA$C_AUDIT_DISABLED ; 0420 5 THEN POINTER1 = AUDIT_TITLE_2; ; 0421 5 IF .MESSAGE[NSA$W_RECORD_SUBTYPE] EQL NSA$C_AUDIT_ENABLED ; 0422 5 THEN POINTER1 = AUDIT_TITLE_3; ; 0423 4 END; ; P 0424 4 $FAO (.POINTER1, ; P 0425 4 LINE_DESC, ; P 0426 4 LINE_DESC, ; 0427 4 PACKET_TABLE[USERNAME_IDX, DSC$W_LENGTH]); ; 0428 4 STATUS = LIB$PUT_OUTPUT (LINE_DESC); ; 0429 4 STATUS = DTK$SPEAK_TEXT (VOICE_ID, LINE_DESC, %REF (DTK$K_WAIT)); ; 0430 4 IF NOT .STATUS THEN SIGNAL (.STATUS); ; 0431 3 END; ; 0432 3 ; 0433 3 ! Breakin detection is starting up. ; 0434 3 ; 0435 3 [NSA$C_MSG_BREAKIN]: ; 0436 4 BEGIN ; 0437 4 IF .MESSAGE[NSA$W_RECORD_SUBTYPE] EQL NSA$C_REMOTE ; 0438 4 THEN ; 0439 5 BEGIN ; 0440 5 LINE_DESC[DSC$W_LENGTH] = %ALLOCATION (LINE_BUF); ; P 0441 5 $FAO (BREAKIN_TITLE_1, ; P 0442 5 LINE_DESC, ; P 0443 5 LINE_DESC, ; P 0444 5 (IF .PACKET_TABLE[REMOTE_USER_IDX, DSC$W_LENGTH] GTR 0 ; P 0445 5 THEN PACKET_TABLE[REMOTE_USER_IDX, DSC$W_LENGTH] ; P 0446 5 ELSE UNKNOWN_USER), ; P 0447 5 (IF .PACKET_TABLE[REMOTE_NODE_IDX, DSC$W_LENGTH] GTR 0 ; P 0448 5 THEN $DESCRIPTOR ('from') ; P 0449 5 ELSE NULL_STRING), ; P 0450 5 (IF .PACKET_TABLE[REMOTE_NODE_IDX, DSC$W_LENGTH] GTR 0 ; P 0451 5 THEN PACKET_TABLE[REMOTE_NODE_IDX, DSC$W_LENGTH] ; 0452 5 ELSE NULL_STRING)); ; 0453 5 STATUS = LIB$PUT_OUTPUT (LINE_DESC); ; 0454 5 STATUS = DTK$SPEAK_TEXT (VOICE_ID, LINE_DESC, %REF (DTK$K_WAIT)); ; 0455 5 IF NOT .STATUS THEN SIGNAL (.STATUS); ; 0456 4 END; ; 0457 4 IF .MESSAGE[NSA$W_RECORD_SUBTYPE] EQL NSA$C_DIALUP ; 0458 4 OR .MESSAGE[NSA$W_RECORD_SUBTYPE] EQL NSA$C_LOCAL ; 0459 4 THEN ; 0460 4 IF .PACKET_TABLE[TERMINAL_IDX, DSC$W_LENGTH] GTR 0 ; 0461 4 THEN ; 0462 5 BEGIN ; 0463 5 LINE_DESC[DSC$W_LENGTH] = %ALLOCATION (LINE_BUF); ; P 0464 5 $FAO (BREAKIN_TITLE_2, ; P 0465 5 LINE_DESC, ; P 0466 5 LINE_DESC, ; P 0467 5 PACKET_TABLE[USERNAME_IDX, DSC$W_LENGTH], ; 0468 5 PACKET_TABLE[TERMINAL_IDX, DSC$W_LENGTH]); ; 0469 5 STATUS = LIB$PUT_OUTPUT (LINE_DESC); ; 0470 5 STATUS = DTK$SPEAK_TEXT (VOICE_ID, LINE_DESC, %REF (DTK$K_WAIT)); ; 0471 5 IF NOT .STATUS THEN SIGNAL (.STATUS); ; 0472 4 END; ; 0473 3 END; ; 0474 3 ; 0475 3 ! Installed file addition or removal. ; 0476 3 ; 0477 3 [NSA$C_MSG_INSTALL]: ; 0478 4 BEGIN ; 0479 4 TEMP_DESC[1] = CH$FIND_CH (.PACKET_TABLE[OBJECT_NAM_IDX, DSC$W_LENGTH], ; 0480 4 .PACKET_TABLE[OBJECT_NAM_IDX, DSC$A_POINTER], %C']') + 1; ; 0481 4 TEMP_DESC[0] = .PACKET_TABLE[OBJECT_NAM_IDX, DSC$W_LENGTH] + ; 0482 4 .PACKET_TABLE[OBJECT_NAM_IDX, DSC$A_POINTER] - ; 0483 4 .TEMP_DESC[1]; ; 0484 4 TEMP_DESC[0] = CH$FIND_CH (.TEMP_DESC[0], .TEMP_DESC[1], %C'.') - .TEMP_DESC[1]; ; 0485 4 ; 0486 4 LINE_DESC[DSC$W_LENGTH] = %ALLOCATION (LINE_BUF); ; P 0487 4 $FAO ((SELECTONE .MESSAGE[NSA$W_RECORD_SUBTYPE] OF ; P 0488 4 SET ; P 0489 4 [NSA$C_INSTALL_ADD]: INSTALL_TITLE_1; ; P 0490 4 [NSA$C_INSTALL_REMOVE]: INSTALL_TITLE_2; ; P 0491 4 [OTHERWISE]: NULL_STRING; ; P 0492 4 TES), ; P 0493 4 LINE_DESC, ; P 0494 4 LINE_DESC, ; P 0495 4 PACKET_TABLE[USERNAME_IDX, DSC$W_LENGTH], ; P 0496 4 TEMP_DESC, ; P 0497 4 (IF .PACKET_TABLE[INSTALL_PRV_IDX, DSC$W_LENGTH] GTR 0 ; P 0498 4 THEN $DESCRIPTOR ('with privileges') ; 0499 4 ELSE NULL_STRING)); ; 0500 4 STATUS = LIB$PUT_OUTPUT (LINE_DESC); ; 0501 4 STATUS = DTK$SPEAK_TEXT (VOICE_ID, LINE_DESC, %REF (DTK$K_WAIT)); ; 0502 4 IF NOT .STATUS THEN SIGNAL (.STATUS); ; 0503 3 END; ; 0504 3 ; 0505 3 ! Login failure. ; 0506 3 ; 0507 3 [NSA$C_MSG_LOGFAIL]: ; 0508 4 BEGIN ; 0509 4 IF .PACKET_TABLE[TERMINAL_IDX, DSC$W_LENGTH] GTR 0 ; 0510 4 THEN ; 0511 5 BEGIN ; 0512 5 IF .PACKET_TABLE[FINAL_STS_IDX, DSC$W_LENGTH] GTR 0 ; 0513 6 THEN POINTER1 = (SELECTONE .(.PACKET_TABLE[FINAL_STS_IDX, DSC$A_POINTER])<0,32> OF ; 0514 6 SET ; 0515 6 [LGI$_INVPWD]: LOGFAIL_TITLE_2; ; 0516 6 [LGI$_CMDINPUT]: LOGFAIL_TITLE_3; ; 0517 6 [LGI$_DISUSER]: LOGFAIL_TITLE_5; ; 0518 6 [LGI$_NOSUCHUSER]: LOGFAIL_TITLE_6; ; 0519 6 TES) ; 0520 5 ELSE POINTER1 = LOGFAIL_TITLE_4; ; 0521 5 ; 0522 5 LINE_DESC[DSC$W_LENGTH] = %ALLOCATION (LINE_BUF); ; P 0523 5 $FAO (LOGFAIL_TITLE_1, ; P 0524 5 LINE_DESC, ; P 0525 5 LINE_DESC, ; P 0526 5 PACKET_TABLE[TERMINAL_IDX, DSC$W_LENGTH], ; 0527 5 .POINTER1); ; 0528 5 STATUS = LIB$PUT_OUTPUT (LINE_DESC); ; 0529 5 STATUS = DTK$SPEAK_TEXT (VOICE_ID, LINE_DESC, %REF (DTK$K_WAIT)); ; 0530 5 IF NOT .STATUS THEN SIGNAL (.STATUS); ; 0531 4 END; ; 0532 3 END; ; 0533 3 ; 0534 3 ! Successful login. ; 0535 3 ; 0536 3 [NSA$C_MSG_LOGIN]: ; 0537 4 BEGIN ; 0538 4 LINE_DESC[DSC$W_LENGTH] = %ALLOCATION (LINE_BUF); ; P 0539 4 $FAO (LOGIN_TITLE_1, ; P 0540 4 LINE_DESC, ; P 0541 4 LINE_DESC, ; P 0542 4 PACKET_TABLE[USERNAME_IDX, DSC$W_LENGTH], ; P 0543 4 (SELECTONE .MESSAGE[NSA$W_RECORD_SUBTYPE] OF ; P 0544 4 SET ; P 0545 4 [NSA$C_BATCH]: $DESCRIPTOR ('created a batch job'); ; P 0546 4 [NSA$C_SUBPROCESS]: $DESCRIPTOR ('created a sub process'); ; P 0547 4 [NSA$C_NETWORK]: $DESCRIPTOR ('created a network process'); ; P 0548 4 [OTHERWISE]: $DESCRIPTOR ('logged in on'); ; P 0549 4 TES), ; P 0550 4 (IF .PACKET_TABLE[TERMINAL_IDX, DSC$W_LENGTH] GTR 0 ; P 0551 4 THEN PACKET_TABLE[TERMINAL_IDX, DSC$W_LENGTH] ; 0552 4 ELSE NULL_STRING)); ; 0553 4 STATUS = LIB$PUT_OUTPUT (LINE_DESC); ; 0554 4 STATUS = DTK$SPEAK_TEXT (VOICE_ID, LINE_DESC, %REF (DTK$K_WAIT)); ; 0555 4 IF NOT .STATUS THEN SIGNAL (.STATUS); ; 0556 3 END; ; 0557 3 ; 0558 3 ! Successful logout. ; 0559 3 ; 0560 3 [NSA$C_MSG_LOGOUT]: ; 0561 4 BEGIN ; 0562 4 LINE_DESC[DSC$W_LENGTH] = %ALLOCATION (LINE_BUF); ; P 0563 4 $FAO (LOGOUT_TITLE_1, ; P 0564 4 LINE_DESC, ; P 0565 4 LINE_DESC, ; P 0566 4 (SELECTONE .MESSAGE[NSA$W_RECORD_SUBTYPE] OF ; P 0567 4 SET ; P 0568 4 [NSA$C_BATCH]: $DESCRIPTOR ('A batch job for'); ; P 0569 4 [NSA$C_SUBPROCESS]: $DESCRIPTOR ('A sub process for'); ; P 0570 4 [OTHERWISE]: NULL_STRING; ; P 0571 4 TES), ; P 0572 4 PACKET_TABLE[USERNAME_IDX, DSC$W_LENGTH], ; P 0573 4 (IF (.MESSAGE[NSA$W_RECORD_SUBTYPE] EQL NSA$C_LOCAL OR ; P 0574 4 .MESSAGE[NSA$W_RECORD_SUBTYPE] EQL NSA$C_DIALUP) ; P 0575 4 THEN $DESCRIPTOR ('on') ; P 0576 4 ELSE NULL_STRING), ; P 0577 4 (IF (.MESSAGE[NSA$W_RECORD_SUBTYPE] EQL NSA$C_LOCAL OR ; P 0578 4 .MESSAGE[NSA$W_RECORD_SUBTYPE] EQL NSA$C_DIALUP) ; P 0579 4 THEN PACKET_TABLE[TERMINAL_IDX, DSC$W_LENGTH] ; 0580 4 ELSE NULL_STRING)); ; 0581 4 STATUS = LIB$PUT_OUTPUT (LINE_DESC); ; 0582 4 STATUS = DTK$SPEAK_TEXT (VOICE_ID, LINE_DESC, %REF (DTK$K_WAIT)); ; 0583 4 IF NOT .STATUS THEN SIGNAL (.STATUS); ; 0584 3 END; ; 0585 3 ; 0586 3 ! Volume mount or dismount. ; 0587 3 ; 0588 3 [NSA$C_MSG_MOUNT]: ; 0589 4 BEGIN ; 0590 4 LINE_DESC[DSC$W_LENGTH] = %ALLOCATION (LINE_BUF); ; P 0591 4 $FAO ((SELECTONE .MESSAGE[NSA$W_RECORD_SUBTYPE] OF ; P 0592 4 SET ; P 0593 4 [NSA$C_VOL_MOUNT]: MOUNT_TITLE_1; ; P 0594 4 [NSA$C_VOL_DISMOUNT]: MOUNT_TITLE_2; ; P 0595 4 [OTHERWISE]: NULL_STRING; ; P 0596 4 TES), ; P 0597 4 LINE_DESC, ; P 0598 4 LINE_DESC, ; P 0599 4 PACKET_TABLE[USERNAME_IDX, DSC$W_LENGTH], ; P 0600 4 PACKET_TABLE[VOLUME_NAM_IDX, DSC$W_LENGTH], ; 0601 4 PACKET_TABLE[OBJECT_NAM_IDX, DSC$W_LENGTH]); ; 0602 4 STATUS = LIB$PUT_OUTPUT (LINE_DESC); ; 0603 4 STATUS = DTK$SPEAK_TEXT (VOICE_ID, LINE_DESC, %REF (DTK$K_WAIT)); ; 0604 4 IF NOT .STATUS THEN SIGNAL (.STATUS); ; 0605 3 END; ; 0606 3 ; 0607 3 ! Network proxy change. ; 0608 3 ; 0609 3 [NSA$C_MSG_NETUAF]: ; 0610 4 BEGIN ; 0611 4 LINE_DESC[DSC$W_LENGTH] = %ALLOCATION (LINE_BUF); ; P 0612 4 $FAO (NETUAF_TITLE_1, ; P 0613 4 LINE_DESC, ; P 0614 4 LINE_DESC, ; P 0615 4 PACKET_TABLE[USERNAME_IDX, DSC$W_LENGTH], ; P 0616 4 (SELECTONE .MESSAGE[NSA$W_RECORD_SUBTYPE] OF ; P 0617 4 SET ; P 0618 4 [NSA$C_NETUAF_ADD]: $DESCRIPTOR ('added'); ; P 0619 4 [NSA$C_NETUAF_DELETE]: $DESCRIPTOR ('deleted'); ; P 0620 4 [NSA$C_NETUAF_MODIFY]: $DESCRIPTOR ('modified'); ; P 0621 4 [OTHERWISE]: $DESCRIPTOR ('changed'); ; P 0622 4 TES), ; P 0623 4 (IF .PACKET_TABLE[DEF_USER_IDX, DSC$W_LENGTH] GTR 0 ; P 0624 4 THEN PACKET_TABLE[DEF_USER_IDX, DSC$W_LENGTH] ; P 0625 4 ELSE IF .PACKET_TABLE[LOCAL_USER_IDX, DSC$W_LENGTH] GTR 0 ; P 0626 4 THEN PACKET_TABLE[LOCAL_USER_IDX, DSC$W_LENGTH] ; P 0627 4 ELSE $DESCRIPTOR ('unknown')), ; P 0628 4 (IF .PACKET_TABLE[REMOTE_USER_IDX, DSC$W_LENGTH] GTR 0 ; P 0629 4 THEN PACKET_TABLE[REMOTE_USER_IDX, DSC$W_LENGTH] ; P 0630 4 ELSE $DESCRIPTOR ('unknown')), ; P 0631 4 (IF .PACKET_TABLE[REMOTE_NODE_IDX, DSC$W_LENGTH] GTR 0 ; P 0632 4 THEN PACKET_TABLE[REMOTE_NODE_IDX, DSC$W_LENGTH] ; 0633 4 ELSE $DESCRIPTOR ('unknown'))); ; 0634 4 STATUS = LIB$PUT_OUTPUT (LINE_DESC); ; 0635 4 STATUS = DTK$SPEAK_TEXT (VOICE_ID, LINE_DESC, %REF (DTK$K_WAIT)); ; 0636 4 IF NOT .STATUS THEN SIGNAL (.STATUS); ; 0637 3 END; ; 0638 3 ; 0639 3 ! Rights database change. ; 0640 3 ; 0641 3 [NSA$C_MSG_RIGHTSDB]: ; 0642 4 BEGIN ; 0643 4 LINE_DESC[DSC$W_LENGTH] = %ALLOCATION (LINE_BUF); ; 0644 4 IF .MESSAGE[NSA$W_RECORD_SUBTYPE] EQL NSA$C_RDB_CREATE ; 0645 4 THEN ; 0646 5 BEGIN ; P 0647 5 $FAO (RIGHTS_TITLE_1, ; P 0648 5 LINE_DESC, ; P 0649 5 LINE_DESC, ; 0650 5 PACKET_TABLE[USERNAME_IDX, DSC$W_LENGTH]); ; 0651 5 END ; 0652 4 ELSE ; 0653 5 BEGIN ; P 0654 5 $FAO (RIGHTS_TITLE_2, ; P 0655 5 LINE_DESC, ; P 0656 5 LINE_DESC, ; P 0657 5 PACKET_TABLE[USERNAME_IDX, DSC$W_LENGTH], ; P 0658 5 (SELECTONE .MESSAGE[NSA$W_RECORD_SUBTYPE] OF ; P 0659 5 SET ; P 0660 5 [NSA$C_RDB_ADD_ID]: $DESCRIPTOR ('added'); ; P 0661 5 [NSA$C_RDB_REM_ID]: $DESCRIPTOR ('removed'); ; P 0662 5 [NSA$C_RDB_MOD_ID]: $DESCRIPTOR ('modified'); ; P 0663 5 [OTHERWISE]: $DESCRIPTOR ('changed'); ; P 0664 5 TES), ; P 0665 5 (IF .PACKET_TABLE[ID_NAME_IDX, DSC$W_LENGTH] GTR 0 ; P 0666 5 THEN PACKET_TABLE[ID_NAME_IDX, DSC$W_LENGTH] ; 0667 5 ELSE $DESCRIPTOR ('unknown'))); ; 0668 4 END; ; 0669 4 STATUS = LIB$PUT_OUTPUT (LINE_DESC); ; 0670 4 STATUS = DTK$SPEAK_TEXT (VOICE_ID, LINE_DESC, %REF (DTK$K_WAIT)); ; 0671 4 IF NOT .STATUS THEN SIGNAL (.STATUS); ; 0672 3 END; ; 0673 3 ; 0674 3 ! Authorization file change. ; 0675 3 ; 0676 3 [NSA$C_MSG_SYSUAF]: ; 0677 4 BEGIN ; 0678 4 LINE_DESC[DSC$W_LENGTH] = %ALLOCATION (LINE_BUF); ; P 0679 4 $FAO (SYSUAF_TITLE_1, ; P 0680 4 LINE_DESC, ; P 0681 4 LINE_DESC, ; P 0682 4 PACKET_TABLE[USERNAME_IDX, DSC$W_LENGTH], ; P 0683 4 (SELECTONE .MESSAGE[NSA$W_RECORD_SUBTYPE] OF ; P 0684 4 SET ; P 0685 4 [NSA$C_SYSUAF_ADD]: $DESCRIPTOR ('added'); ; P 0686 4 [NSA$C_SYSUAF_COPY]: $DESCRIPTOR ('copied'); ; P 0687 4 [NSA$C_SYSUAF_DELETE]: $DESCRIPTOR ('deleted'); ; P 0688 4 [NSA$C_SYSUAF_MODIFY]: $DESCRIPTOR ('modified'); ; P 0689 4 [NSA$C_SYSUAF_RENAME]: $DESCRIPTOR ('renamed'); ; P 0690 4 [OTHERWISE]: $DESCRIPTOR ('changed'); ; P 0691 4 TES), ; 0692 4 PACKET_TABLE[UAF_SOURCE_IDX, DSC$W_LENGTH]); ; 0693 4 STATUS = LIB$PUT_OUTPUT (LINE_DESC); ; 0694 4 STATUS = DTK$SPEAK_TEXT (VOICE_ID, LINE_DESC, %REF (DTK$K_WAIT)); ; 0695 4 IF NOT .STATUS THEN SIGNAL (.STATUS); ; 0696 3 END; ; 0697 3 TES; ; 0698 2 END; ; 0699 2 ; 0700 2 ! Return any error status. ; 0701 2 ; 0702 2 RETURN .STATUS; ; 0703 2 ; 0704 1 END; ! End of routine LISTENER_MAIN .TITLE AUDSRV_LISTENER .IDENT \X-1\ .PSECT $PLIT$,NOWRT,NOEXE,2 P.AAB: .ASCII \!AS is backing up files\ ; ; .BLKB 1 P.AAA: .LONG 23 ; ; .ADDRESS P.AAB ; ; P.AAD: .ASCII \!AS is copying files\ ; ; P.AAC: .LONG 20 ; ; .ADDRESS P.AAD ; ; P.AAF: .ASCII \!AS is browsing through a directory\; ; .BLKB 1 P.AAE: .LONG 35 ; ; .ADDRESS P.AAF ; ; P.AAH: .ASCII \!AS is browsing through a file\ ; ; .BLKB 2 P.AAG: .LONG 30 ; ; .ADDRESS P.AAH ; ; P.AAJ: .ASCII \!AS has changed the auditable events\ ; ; P.AAI: .LONG 36 ; ; .ADDRESS P.AAJ ; ; P.AAL: .ASCII \!AS has disabled some event auditing\ ; ; P.AAK: .LONG 36 ; ; .ADDRESS P.AAL ; ; P.AAN: .ASCII \!AS has enabled some event auditing\; ; .BLKB 1 P.AAM: .LONG 35 ; ; .ADDRESS P.AAN ; ; P.AAP: .ASCII \!AS has generated an auditing event\; ; .BLKB 1 P.AAO: .LONG 35 ; ; .ADDRESS P.AAP ; ; P.AAR: .ASCII \A break in by !AS !AS !AS is in progress\ ; ; P.AAQ: .LONG 40 ; ; .ADDRESS P.AAR ; ; P.AAT: .ASCII \A break in by !AS is in progress from !AS\ ; ; .BLKB 3 P.AAS: .LONG 41 ; ; .ADDRESS P.AAT ; ; P.AAV: .ASCII \!AS has just installed !AS !AS\ ; ; .BLKB 2 P.AAU: .LONG 30 ; ; .ADDRESS P.AAV ; ; P.AAX: .ASCII \!AS has just removed !AS\ ; ; P.AAW: .LONG 24 ; ; .ADDRESS P.AAX ; ; P.AAZ: .ASCII \The user on !AS !AS\ ; ; .BLKB 1 P.AAY: .LONG 19 ; ; .ADDRESS P.AAZ ; ; P.ABB: .ASCII \has blown his password\ ; ; .BLKB 2 P.ABA: .LONG 22 ; ; .ADDRESS P.ABB ; ; P.ABD: .ASCII \has aborted the login\ ; ; .BLKB 3 P.ABC: .LONG 21 ; ; .ADDRESS P.ABD ; ; P.ABF: .ASCII \failed logging in\ ; ; .BLKB 3 P.ABE: .LONG 17 ; ; .ADDRESS P.ABF ; ; P.ABH: .ASCII \is attempting to use a disabled account\ ; ; .BLKB 1 P.ABG: .LONG 39 ; ; .ADDRESS P.ABH ; ; P.ABJ: .ASCII \is attempting to use a nonexistant account\ ; ; .BLKB 2 P.ABI: .LONG 42 ; ; .ADDRESS P.ABJ ; ; P.ABL: .ASCII \!AS has !AS !AS\ ; ; .BLKB 1 P.ABK: .LONG 15 ; ; .ADDRESS P.ABL ; ; P.ABN: .ASCII \!AS !AS has logged out !AS !AS\ ; ; .BLKB 2 P.ABM: .LONG 30 ; ; .ADDRESS P.ABN ; ; P.ABP: .ASCII \!AS has mounted volume !AS on !AS\ ; ; .BLKB 3 P.ABO: .LONG 33 ; ; .ADDRESS P.ABP ; ; P.ABR: .ASCII \!AS has dismounted volume !AS from !AS\ ; ; .BLKB 2 P.ABQ: .LONG 38 ; ; .ADDRESS P.ABR ; ; P.ABT: .ASCII \!AS has !AS a proxy to account !AS from user !AS on node !AS\ ; ; P.ABS: .LONG 60 ; ; .ADDRESS P.ABT ; ; P.ABV: .ASCII \!AS has created a new rights database\ ; ; .BLKB 3 P.ABU: .LONG 37 ; ; .ADDRESS P.ABV ; ; P.ABX: .ASCII \!AS has !AS the identifier !AS\ ; ; .BLKB 2 P.ABW: .LONG 30 ; ; .ADDRESS P.ABX ; ; P.ABZ: .ASCII \!AS has !AS the authorization record for !AS\ ; ; P.ABY: .LONG 44 ; ; .ADDRESS P.ABZ ; ; P.ACB: .ASCII \LISTENER_MAILBOX\ ; ; P.ACA: .LONG 16 ; ; .ADDRESS P.ACB ; ; P.ACD: .BLKB 0 ; ; P.ACC: .LONG 0 ; ; .ADDRESS P.ACD ; ; P.ACF: .ASCII \someone\ ; ; .BLKB 1 P.ACE: .LONG 7 ; ; .ADDRESS P.ACF ; ; P.ACH: .ASCII \DECTALK_TERMINAL\ ; ; P.ACG: .LONG 16 ; ; .ADDRESS P.ACH ; ; P.ACI: .ASCII \]BACKUP.EXE\<0> ; ; P.ACJ: .ASCII \]COPY.EXE\<0><0><0> ; ; P.ACK: .ASCII \]DIRECTORY.EXE\<0><0> ; ; P.ACL: .ASCII \]TYPE.EXE\<0><0><0> ; ; P.ACN: .ASCII \from\ ; ; P.ACM: .LONG 4 ; ; .ADDRESS P.ACN ; ; P.ACP: .ASCII \with privileges\ ; ; .BLKB 1 P.ACO: .LONG 15 ; ; .ADDRESS P.ACP ; ; P.ACR: .ASCII \created a batch job\ ; ; .BLKB 1 P.ACQ: .LONG 19 ; ; .ADDRESS P.ACR ; ; P.ACT: .ASCII \created a sub process\ ; ; .BLKB 3 P.ACS: .LONG 21 ; ; .ADDRESS P.ACT ; ; P.ACV: .ASCII \created a network process\ ; ; .BLKB 3 P.ACU: .LONG 25 ; ; .ADDRESS P.ACV ; ; P.ACX: .ASCII \logged in on\ ; ; P.ACW: .LONG 12 ; ; .ADDRESS P.ACX ; ; P.ACZ: .ASCII \A batch job for\ ; ; .BLKB 1 P.ACY: .LONG 15 ; ; .ADDRESS P.ACZ ; ; P.ADB: .ASCII \A sub process for\ ; ; .BLKB 3 P.ADA: .LONG 17 ; ; .ADDRESS P.ADB ; ; P.ADD: .ASCII \on\ ; ; .BLKB 2 P.ADC: .LONG 2 ; ; .ADDRESS P.ADD ; ; P.ADF: .ASCII \added\ ; ; .BLKB 3 P.ADE: .LONG 5 ; ; .ADDRESS P.ADF ; ; P.ADH: .ASCII \deleted\ ; ; .BLKB 1 P.ADG: .LONG 7 ; ; .ADDRESS P.ADH ; ; P.ADJ: .ASCII \modified\ ; ; P.ADI: .LONG 8 ; ; .ADDRESS P.ADJ ; ; P.ADL: .ASCII \changed\ ; ; .BLKB 1 P.ADK: .LONG 7 ; ; .ADDRESS P.ADL ; ; P.ADN: .ASCII \unknown\ ; ; .BLKB 1 P.ADM: .LONG 7 ; ; .ADDRESS P.ADN ; ; P.ADP: .ASCII \unknown\ ; ; .BLKB 1 P.ADO: .LONG 7 ; ; .ADDRESS P.ADP ; ; P.ADR: .ASCII \unknown\ ; ; .BLKB 1 P.ADQ: .LONG 7 ; ; .ADDRESS P.ADR ; ; P.ADT: .ASCII \added\ ; ; .BLKB 3 P.ADS: .LONG 5 ; ; .ADDRESS P.ADT ; ; P.ADV: .ASCII \removed\ ; ; .BLKB 1 P.ADU: .LONG 7 ; ; .ADDRESS P.ADV ; ; P.ADX: .ASCII \modified\ ; ; P.ADW: .LONG 8 ; ; .ADDRESS P.ADX ; ; P.ADZ: .ASCII \changed\ ; ; .BLKB 1 P.ADY: .LONG 7 ; ; .ADDRESS P.ADZ ; ; P.AEB: .ASCII \unknown\ ; ; .BLKB 1 P.AEA: .LONG 7 ; ; .ADDRESS P.AEB ; ; P.AED: .ASCII \added\ ; ; .BLKB 3 P.AEC: .LONG 5 ; ; .ADDRESS P.AED ; ; P.AEF: .ASCII \copied\ ; ; .BLKB 2 P.AEE: .LONG 6 ; ; .ADDRESS P.AEF ; ; P.AEH: .ASCII \deleted\ ; ; .BLKB 1 P.AEG: .LONG 7 ; ; .ADDRESS P.AEH ; ; P.AEJ: .ASCII \modified\ ; ; P.AEI: .LONG 8 ; ; .ADDRESS P.AEJ ; ; P.AEL: .ASCII \renamed\ ; ; .BLKB 1 P.AEK: .LONG 7 ; ; .ADDRESS P.AEL ; ; P.AEN: .ASCII \changed\ ; ; .BLKB 1 P.AEM: .LONG 7 ; ; .ADDRESS P.AEN ; ; U.2= P.AAA U.3= P.AAC U.4= P.AAE U.5= P.AAG U.6= P.AAI U.7= P.AAK U.8= P.AAM U.9= P.AAO U.10= P.AAQ U.11= P.AAS U.12= P.AAU U.13= P.AAW U.14= P.AAY U.15= P.ABA U.16= P.ABC U.17= P.ABE U.18= P.ABG U.19= P.ABI U.20= P.ABK U.21= P.ABM U.22= P.ABO U.23= P.ABQ U.24= P.ABS U.25= P.ABU U.26= P.ABW U.27= P.ABY U.28= P.ACA U.29= P.ACC U.30= P.ACE .EXTRN DTK$INITIALIZE, DTK$SET_VOICE, DTK$SPEAK_TEXT, LIB$PUT_OUTPUT, SYS$CREMBX, LIB$SIGNAL .EXTRN SYS$QIOW, SYS$FAO .PSECT $CODE$,NOWRT,2 .ENTRY LISTENER_MAIN, ^M ; ; MOVAB -8904(SP), SP ;-8904(SP), SP ; MOVC5 #0, (SP), #0, #8, -8(FP) ;#0, (SP), #0, #8, IO_STATUS ; 0200 MOVC5 #0, (SP), #0, #32, -40(FP) ;#0, (SP), #0, #32, LAST_BROWSER ; 0201 MOVC5 #0, (SP), #0, #8, -1072(FP) ;#0, (SP), #0, #8, LINE_DESC ; 0202 MOVC5 #0, (SP), #0, #4590, 168(SP) ;#0, (SP), #0, #4590, PACKET_INFO ; 0203 MOVC5 #0, (SP), #0, #144, 24(SP) ;#0, (SP), #0, #144, PACKET_TABLE ; 0204 MOVAB -1064(FP), -1068(FP) ;LINE_BUF, LINE_DESC+4 ; 0206 MOVL #1, R0 ;#1, J ; 0208 1$: MULL3 #255, R0, R1 ;#255, J, R1 ; 0209 PUSHAQ 28(SP)[R0] ;PACKET_TABLE+4[J] ; MOVAB 172(SP)[R1], @(SP)+ ;PACKET_INFO[R1], @(SP)+ ; AOBLEQ #18, R0, 1$ ;#18, J, 1$ ; CLRL -(SP) ;-(SP) ; 0218 PUSHAB W^U.28 ;U.28 ; CLRL -(SP) ;-(SP) ; MOVZWL #65280, -(SP) ;#65280, -(SP) ; PUSHL #98304 ;#98304 ; MOVZWL #3072, -(SP) ;#3072, -(SP) ; PUSHAB 32(SP) ;MAILBOX_CHANNEL ; PUSHL #1 ;#1 ; CALLS #8, G^SYS$CREMBX ;#8, SYS$CREMBX ; MOVL R0, R9 ;R0, STATUS ; BLBC R9, 2$ ;STATUS, 2$ ; 0219 PUSHAB W^P.ACG ;P.ACG ; 0223 PUSHAB 16(SP) ;VOICE_ID ; CALLS #2, G^DTK$INITIALIZE ;#2, DTK$INITIALIZE ; MOVL R0, R9 ;R0, STATUS ; BLBC R9, 2$ ;STATUS, 2$ ; 0224 MOVL #1, 4(SP) ;#1, 4(SP) ; 0225 PUSHAB 4(SP) ;4(SP) ; PUSHAB 16(SP) ;VOICE_ID ; CALLS #2, G^DTK$SET_VOICE ;#2, DTK$SET_VOICE ; MOVL R0, R9 ;R0, STATUS ; BLBS R9, 3$ ;STATUS, 3$ ; 0226 2$: PUSHL R9 ;STATUS ; CALLS #1, G^LIB$SIGNAL ;#1, LIB$SIGNAL ; BISL3 #268435456, R9, R0 ;#268435456, STATUS, R0 ; RET ; ; 3$: CLRQ -(SP) ;-(SP) ; 0237 CLRQ -(SP) ;-(SP) ; MOVZWL #3072, -(SP) ;#3072, -(SP) ; PUSHAB -4144(FP) ;MESSAGE ; CLRQ -(SP) ;-(SP) ; PUSHAB -8(FP) ;IO_STATUS ; PUSHL #49 ;#49 ; MOVZWL 48(SP), -(SP) ;MAILBOX_CHANNEL, -(SP) ; CLRL -(SP) ;-(SP) ; CALLS #12, G^SYS$QIOW ;#12, SYS$QIOW ; MOVL R0, R9 ;R0, STATUS ; BLBC R9, 4$ ;STATUS, 4$ ; 0238 MOVZWL -8(FP), R9 ;IO_STATUS, STATUS ; 4$: BLBS R9, 5$ ;STATUS, 5$ ; 0239 BRW 145$ ;145$ ; 5$: MOVL #1, R0 ;#1, J ; 0243 6$: PUSHAQ 24(SP)[R0] ;PACKET_TABLE[J] ; 0244 CLRW @(SP)+ ;@(SP)+ ; AOBLEQ #18, R0, 6$ ;#18, J, 6$ ; MOVAB -4124(FP), R7 ;MESSAGE+20, CURRENT_PACKET ; 0248 MOVZWL -4138(FP), 4(SP) ;MESSAGE+6, PACKET_COUNT ; 0249 MOVAB -4144(FP), R10 ;MESSAGE, R10 ; 0256 MOVZWL -4136(FP), R0 ;MESSAGE+8, R0 ; ADDL2 R0, R10 ;R0, R10 ; CLRL R11 ;J ; 0250 BRW 35$ ;35$ ; 7$: CMPL R7, R10 ;CURRENT_PACKET, R10 ; 0256 BLSSU 8$ ;8$ ; BRW 36$ ;36$ ; 8$: CLRL R6 ;TABLE_INDEX ; 0261 MOVZWL 2(R7), R0 ;2(CURRENT_PACKET), R0 ; 0262 CMPW R0, #82 ;R0, #82 ; 0264 BNEQ 9$ ;9$ ; MOVL #1, R6 ;#1, TABLE_INDEX ; BRB 22$ ;22$ ; 9$: CMPW R0, #9 ;R0, #9 ; 0265 BNEQ 10$ ;10$ ; MOVL #2, R6 ;#2, TABLE_INDEX ; BRB 22$ ;22$ ; 10$: CMPW R0, #48 ;R0, #48 ; 0266 BNEQ 11$ ;11$ ; MOVL #3, R6 ;#3, TABLE_INDEX ; BRW 25$ ;25$ ; 11$: CMPW R0, #14 ;R0, #14 ; 0267 BNEQ 12$ ;12$ ; MOVL #4, R6 ;#4, TABLE_INDEX ; BRB 13$ ;13$ ; 12$: CMPW R0, #19 ;R0, #19 ; 0268 BNEQ 14$ ;14$ ; MOVL #5, R6 ;#5, TABLE_INDEX ; 13$: BRB 27$ ;27$ ; 14$: CMPW R0, #22 ;R0, #22 ; 0269 BNEQ 15$ ;15$ ; MOVL #6, R6 ;#6, TABLE_INDEX ; BRB 29$ ;29$ ; 15$: CMPW R0, #83 ;R0, #83 ; 0270 BNEQ 16$ ;16$ ; MOVL #7, R6 ;#7, TABLE_INDEX ; BRB 29$ ;29$ ; 16$: CMPW R0, #29 ;R0, #29 ; 0271 BNEQ 17$ ;17$ ; MOVL #9, R6 ;#9, TABLE_INDEX ; BRB 29$ ;29$ ; 17$: CMPW R0, #33 ;R0, #33 ; 0272 BNEQ 18$ ;18$ ; MOVL #10, R6 ;#10, TABLE_INDEX ; BRB 29$ ;29$ ; 18$: CMPW R0, #42 ;R0, #42 ; 0273 BNEQ 19$ ;19$ ; MOVL #11, R6 ;#11, TABLE_INDEX ; BRB 29$ ;29$ ; 19$: CMPW R0, #44 ;R0, #44 ; 0274 BNEQ 20$ ;20$ ; MOVL #12, R6 ;#12, TABLE_INDEX ; BRB 29$ ;29$ ; 20$: CMPW R0, #45 ;R0, #45 ; 0275 BNEQ 21$ ;21$ ; MOVL #13, R6 ;#13, TABLE_INDEX ; BRB 29$ ;29$ ; 21$: CMPW R0, #49 ;R0, #49 ; 0276 BNEQ 23$ ;23$ ; MOVL #14, R6 ;#14, TABLE_INDEX ; 22$: BRB 29$ ;29$ ; 23$: CMPW R0, #51 ;R0, #51 ; 0277 BEQL 24$ ;24$ ; CMPW R0, #54 ;R0, #54 ; 0278 BEQL 24$ ;24$ ; CMPW R0, #52 ;R0, #52 ; 0279 BEQL 24$ ;24$ ; CMPW R0, #53 ;R0, #53 ; 0280 BEQL 24$ ;24$ ; CMPW R0, #58 ;R0, #58 ; 0281 BNEQ 26$ ;26$ ; 24$: MOVL #15, R6 ;#15, TABLE_INDEX ; 25$: BRB 29$ ;29$ ; 26$: CMPW R0, #56 ;R0, #56 ; 0282 BNEQ 28$ ;28$ ; MOVL #16, R6 ;#16, TABLE_INDEX ; 27$: BRB 29$ ;29$ ; 28$: CMPW R0, #59 ;R0, #59 ; 0283 BNEQ 29$ ;29$ ; MOVL #17, R6 ;#17, TABLE_INDEX ; 29$: TSTL R6 ;TABLE_INDEX ; 0289 BLEQ 34$ ;34$ ; MOVAQ 24(SP)[R6], R1 ;PACKET_TABLE[TABLE_INDEX], R1 ; 0292 MOVZWL (R7), R2 ;(CURRENT_PACKET), R2 ; SUBW3 #4, R2, (R1) ;#4, R2, (R1) ; 0293 MULL3 #255, R6, R0 ;#255, TABLE_INDEX, R0 ; 0313 CMPL R6, #14 ;TABLE_INDEX, #14 ; 0298 BEQL 30$ ;30$ ; CMPL R6, #2 ;TABLE_INDEX, #2 ; 0299 BEQL 30$ ;30$ ; CMPL R6, #9 ;TABLE_INDEX, #9 ; 0300 BNEQ 33$ ;33$ ; 30$: MOVAB 4(R7), R8 ;4(CURRENT_PACKET), POINTER1 ; 0303 CMPB 4(R7), #95 ;4(CURRENT_PACKET), #95 ; 0304 BNEQ 31$ ;31$ ; DECW (R1) ;(R1) ; 0307 INCL R8 ;POINTER1 ; 0308 31$: CMPB -1(R2)[R7], #58 ;-1(R2)[CURRENT_PACKET], #58 ; 0310 BNEQ 32$ ;32$ ; DECW (R1) ;(R1) ; 0311 32$: MOVC3 (R1), (R8), 168(SP)[R0] ;(R1), (POINTER1), PACKET_INFO[R0] ; 0313 BRB 34$ ;34$ ; 33$: MOVC3 (R1), 4(R7), 168(SP)[R0] ;(R1), 4(CURRENT_PACKET), PACKET_INFO[R0] ; 0317 34$: MOVZWL (R7), R0 ;(CURRENT_PACKET), R0 ; 0325 ADDL2 R0, R7 ;R0, CURRENT_PACKET ; 35$: ACBL 4(SP), #1, R11, 7$ ;PACKET_COUNT, #1, J, 7$ ; 0250 36$: TSTW 152(SP) ;PACKET_TABLE+128 ; 0330 BNEQ 37$ ;37$ ; MOVC3 W^U.30, @W^U.30+4, @156(SP) ;U.30, @U.30+4, @PACKET_TABLE+132 ; 0335 MOVW W^U.30, 152(SP) ;U.30, PACKET_TABLE+128 ; 0336 37$: MOVZWL -4144(FP), R2 ;MESSAGE, R2 ; 0341 CMPW R2, #10 ;R2, #10 ; 0346 BNEQ 48$ ;48$ ; TSTW 104(SP) ;PACKET_TABLE+80 ; 0351 BEQL 38$ ;38$ ; CMPB 2718(SP), #1 ;PACKET_INFO+2550, #1 ; 0353 BEQL 39$ ;39$ ; 38$: BRW 3$ ;3$ ; 39$: CLRL R8 ;POINTER1 ; 0359 MATCHC #11, W^P.ACI, 64(SP), @68(SP) ;#11, P.ACI, PACKET_TABLE+40, @PACKET_TABLE+44 ; 0365 BEQL 40$ ;40$ ; MOVL #11, R3 ;#11, R3 ; 40$: SUBL2 #11, R3 ;#11, R3 ; BEQL 41$ ;41$ ; 0366 MOVAB W^U.2, R8 ;U.2, POINTER1 ; 0367 41$: MATCHC #9, W^P.ACJ, 64(SP), @68(SP) ;#9, P.ACJ, PACKET_TABLE+40, @PACKET_TABLE+44 ; 0373 BEQL 42$ ;42$ ; MOVL #9, R3 ;#9, R3 ; 42$: SUBL2 #9, R3 ;#9, R3 ; BEQL 43$ ;43$ ; 0374 MOVAB W^U.3, R8 ;U.3, POINTER1 ; 0375 43$: MATCHC #14, W^P.ACK, 64(SP), @68(SP) ;#14, P.ACK, PACKET_TABLE+40, @PACKET_TABLE+44 ; 0381 BEQL 44$ ;44$ ; MOVL #14, R3 ;#14, R3 ; 44$: SUBL2 #14, R3 ;#14, R3 ; BEQL 45$ ;45$ ; 0382 MOVAB W^U.4, R8 ;U.4, POINTER1 ; 0383 45$: MATCHC #9, W^P.ACL, 64(SP), @68(SP) ;#9, P.ACL, PACKET_TABLE+40, @PACKET_TABLE+44 ; 0389 BEQL 46$ ;46$ ; MOVL #9, R3 ;#9, R3 ; 46$: SUBL2 #9, R3 ;#9, R3 ; BEQL 47$ ;47$ ; 0390 MOVAB W^U.5, R8 ;U.5, POINTER1 ; 0391 47$: TSTL R8 ;POINTER1 ; 0393 BEQL 38$ ;38$ ; MOVW #1024, -1072(FP) ;#1024, LINE_DESC ; 0396 BRB 51$ ;51$ ; 0400 48$: CMPW R2, #2 ;R2, #2 ; 0410 BNEQ 52$ ;52$ ; MOVW #1024, -1072(FP) ;#1024, LINE_DESC ; 0412 MOVZWL -4142(FP), R0 ;MESSAGE+2, R0 ; 0413 CLRL R1 ;R1 ; CMPW R0, #2 ;R0, #2 ; BNEQ 49$ ;49$ ; INCL R1 ;R1 ; CMPW R0, #1 ;R0, #1 ; 0414 BNEQ 49$ ;49$ ; MOVAB W^U.6, R8 ;U.6, POINTER1 ; 0415 BRB 51$ ;51$ ; 49$: MOVAB W^U.9, R8 ;U.9, POINTER1 ; 0418 CMPW R0, #1 ;R0, #1 ; 0419 BNEQ 50$ ;50$ ; MOVAB W^U.7, R8 ;U.7, POINTER1 ; 0420 50$: BLBC R1, 51$ ;R1, 51$ ; 0421 MOVAB W^U.8, R8 ;U.8, POINTER1 ; 0422 51$: PUSHAB 152(SP) ;PACKET_TABLE+128 ; 0427 PUSHAB -1072(FP) ;LINE_DESC ; PUSHAB -1072(FP) ;LINE_DESC ; PUSHL R8 ;POINTER1 ; BRW 123$ ;123$ ; 52$: CMPW R2, #3 ;R2, #3 ; 0435 BEQL 53$ ;53$ ; BRW 65$ ;65$ ; 53$: MOVZWL -4142(FP), R3 ;MESSAGE+2, R3 ; 0437 CMPW R3, #6 ;R3, #6 ; BEQL 54$ ;54$ ; BRW 61$ ;61$ ; 54$: MOVW #1024, -1072(FP) ;#1024, LINE_DESC ; 0440 CLRL R1 ;R1 ; 0452 TSTW 120(SP) ;PACKET_TABLE+96 ; BEQL 55$ ;55$ ; INCL R1 ;R1 ; MOVAB 120(SP), R0 ;PACKET_TABLE+96, R0 ; BRB 56$ ;56$ ; 55$: MOVAB W^U.29, R0 ;U.29, R0 ; 56$: PUSHL R0 ;R0 ; BLBC R1, 57$ ;R1, 57$ ; MOVAB W^P.ACM, R0 ;P.ACM, R0 ; BRB 58$ ;58$ ; 57$: MOVAB W^U.29, R0 ;U.29, R0 ; 58$: PUSHL R0 ;R0 ; TSTW 136(SP) ;PACKET_TABLE+104 ; BEQL 59$ ;59$ ; MOVAB 136(SP), R0 ;PACKET_TABLE+104, R0 ; BRB 60$ ;60$ ; 59$: MOVAB W^U.30, R0 ;U.30, R0 ; 60$: PUSHL R0 ;R0 ; PUSHAB -1072(FP) ;LINE_DESC ; PUSHAB -1072(FP) ;LINE_DESC ; PUSHAB W^U.10 ;U.10 ; CALLS #6, G^SYS$FAO ;#6, SYS$FAO ; PUSHAB -1072(FP) ;LINE_DESC ; 0453 CALLS #1, G^LIB$PUT_OUTPUT ;#1, LIB$PUT_OUTPUT ; MOVL R0, R9 ;R0, STATUS ; MOVL #1, (SP) ;#1, (SP) ; 0454 PUSHL SP ;SP ; PUSHAB -1072(FP) ;LINE_DESC ; PUSHAB 20(SP) ;VOICE_ID ; CALLS #3, G^DTK$SPEAK_TEXT ;#3, DTK$SPEAK_TEXT ; MOVL R0, R9 ;R0, STATUS ; BLBS R9, 61$ ;STATUS, 61$ ; 0455 PUSHL R9 ;STATUS ; CALLS #1, G^LIB$SIGNAL ;#1, LIB$SIGNAL ; 61$: CMPW R3, #3 ;R3, #3 ; 0457 BEQL 63$ ;63$ ; CMPW R3, #4 ;R3, #4 ; 0458 BEQL 63$ ;63$ ; 62$: BRW 3$ ;3$ ; 63$: TSTW 136(SP) ;PACKET_TABLE+112 ; 0460 BEQL 62$ ;62$ ; MOVW #1024, -1072(FP) ;#1024, LINE_DESC ; 0463 PUSHAB 136(SP) ;PACKET_TABLE+112 ; 0468 PUSHAB 156(SP) ;PACKET_TABLE+128 ; PUSHAB -1072(FP) ;LINE_DESC ; PUSHAB -1072(FP) ;LINE_DESC ; PUSHAB W^U.11 ;U.11 ; 64$: CALLS #5, G^SYS$FAO ;#5, SYS$FAO ; BRW 143$ ;143$ ; 0469 65$: CMPW R2, #4 ;R2, #4 ; 0477 BNEQ 72$ ;72$ ; LOCC #93, 96(SP), @100(SP) ;#93, PACKET_TABLE+72, @PACKET_TABLE+76 ; 0480 BNEQ 66$ ;66$ ; CLRL R1 ;R1 ; 66$: MOVAB 1(R1), 20(SP) ;1(R1), TEMP_DESC+4 ; MOVZWL 96(SP), R0 ;PACKET_TABLE+72, R0 ; 0481 ADDL2 100(SP), R0 ;PACKET_TABLE+76, R0 ; SUBL3 20(SP), R0, 16(SP) ;TEMP_DESC+4, R0, TEMP_DESC ; 0483 LOCC #46, 16(SP), @20(SP) ;#46, TEMP_DESC, @TEMP_DESC+4 ; 0484 BNEQ 67$ ;67$ ; CLRL R1 ;R1 ; 67$: SUBL3 20(SP), R1, 16(SP) ;TEMP_DESC+4, R1, TEMP_DESC ; MOVW #1024, -1072(FP) ;#1024, LINE_DESC ; 0486 TSTW 72(SP) ;PACKET_TABLE+48 ; 0499 BEQL 68$ ;68$ ; MOVAB W^P.ACO, R0 ;P.ACO, R0 ; BRB 69$ ;69$ ; 68$: MOVAB W^U.29, R0 ;U.29, R0 ; 69$: PUSHL R0 ;R0 ; PUSHAB 20(SP) ;TEMP_DESC ; PUSHAB 160(SP) ;PACKET_TABLE+128 ; PUSHAB -1072(FP) ;LINE_DESC ; PUSHAB -1072(FP) ;LINE_DESC ; MOVZWL -4142(FP), R0 ;MESSAGE+2, R0 ; CMPW R0, #1 ;R0, #1 ; BNEQ 70$ ;70$ ; MOVAB W^U.12, R1 ;U.12, R1 ; BRW 102$ ;102$ ; 70$: CMPW R0, #2 ;R0, #2 ; BEQL 71$ ;71$ ; BRW 104$ ;104$ ; 71$: MOVAB W^U.13, R0 ;U.13, R0 ; BRW 105$ ;105$ ; 72$: CMPW R2, #5 ;R2, #5 ; 0507 BNEQ 80$ ;80$ ; TSTW 136(SP) ;PACKET_TABLE+112 ; 0509 BNEQ 73$ ;73$ ; BRW 3$ ;3$ ; 73$: TSTW 48(SP) ;PACKET_TABLE+24 ; 0512 BEQL 78$ ;78$ ; MOVL @52(SP), R0 ;@PACKET_TABLE+28, R0 ; 0513 CMPL R0, #13861116 ;R0, #13861116 ; 0515 BNEQ 74$ ;74$ ; MOVAB W^U.15, R8 ;U.15, POINTER1 ; BRB 79$ ;79$ ; 74$: CMPL R0, #13860964 ;R0, #13860964 ; 0516 BNEQ 75$ ;75$ ; MOVAB W^U.16, R8 ;U.16, POINTER1 ; BRB 79$ ;79$ ; 75$: CMPL R0, #13861132 ;R0, #13861132 ; 0517 BNEQ 76$ ;76$ ; MOVAB W^U.18, R8 ;U.18, POINTER1 ; BRB 79$ ;79$ ; 76$: CMPL R0, #13861108 ;R0, #13861108 ; 0518 BNEQ 77$ ;77$ ; MOVAB W^U.19, R8 ;U.19, POINTER1 ; BRB 79$ ;79$ ; 77$: MNEGL #1, R8 ;#1, POINTER1 ; 0519 BRB 79$ ;79$ ; 78$: MOVAB W^U.17, R8 ;U.17, POINTER1 ; 0520 79$: MOVW #1024, -1072(FP) ;#1024, LINE_DESC ; 0522 PUSHL R8 ;POINTER1 ; 0527 PUSHAB 140(SP) ;PACKET_TABLE+112 ; PUSHAB -1072(FP) ;LINE_DESC ; PUSHAB -1072(FP) ;LINE_DESC ; PUSHAB W^U.14 ;U.14 ; BRW 64$ ;64$ ; 80$: CMPW R2, #6 ;R2, #6 ; 0536 BNEQ 89$ ;89$ ; MOVW #1024, -1072(FP) ;#1024, LINE_DESC ; 0538 TSTW 136(SP) ;PACKET_TABLE+112 ; 0552 BEQL 81$ ;81$ ; MOVAB 136(SP), R0 ;PACKET_TABLE+112, R0 ; BRB 82$ ;82$ ; 81$: MOVAB W^U.29, R0 ;U.29, R0 ; 82$: PUSHL R0 ;R0 ; MOVZWL -4142(FP), R0 ;MESSAGE+2, R0 ; CMPW R0, #1 ;R0, #1 ; BNEQ 83$ ;83$ ; MOVAB W^P.ACQ, R1 ;P.ACQ, R1 ; BRB 84$ ;84$ ; 83$: CMPW R0, #7 ;R0, #7 ; BNEQ 85$ ;85$ ; MOVAB W^P.ACS, R1 ;P.ACS, R1 ; 84$: PUSHL R1 ;R1 ; BRB 88$ ;88$ ; 85$: CMPW R0, #5 ;R0, #5 ; BNEQ 86$ ;86$ ; MOVAB W^P.ACU, R0 ;P.ACU, R0 ; BRB 87$ ;87$ ; 86$: MOVAB W^P.ACW, R0 ;P.ACW, R0 ; 87$: PUSHL R0 ;R0 ; 88$: PUSHAB 160(SP) ;PACKET_TABLE+128 ; PUSHAB -1072(FP) ;LINE_DESC ; PUSHAB -1072(FP) ;LINE_DESC ; PUSHAB W^U.20 ;U.20 ; BRW 142$ ;142$ ; 89$: CMPW R2, #7 ;R2, #7 ; 0560 BNEQ 101$ ;101$ ; MOVW #1024, -1072(FP) ;#1024, LINE_DESC ; 0562 MOVZWL -4142(FP), R0 ;MESSAGE+2, R0 ; 0580 CLRL R2 ;R2 ; CMPW R0, #4 ;R0, #4 ; BNEQ 90$ ;90$ ; INCL R2 ;R2 ; BRB 91$ ;91$ ; 90$: CMPW R0, #3 ;R0, #3 ; BNEQ 92$ ;92$ ; 91$: MOVAB 136(SP), R1 ;PACKET_TABLE+112, R1 ; BRB 93$ ;93$ ; 92$: MOVAB W^U.29, R1 ;U.29, R1 ; 93$: PUSHL R1 ;R1 ; BLBS R2, 94$ ;R2, 94$ ; CMPW R0, #3 ;R0, #3 ; BNEQ 95$ ;95$ ; 94$: MOVAB W^P.ADC, R1 ;P.ADC, R1 ; BRB 96$ ;96$ ; 95$: MOVAB W^U.29, R1 ;U.29, R1 ; 96$: PUSHL R1 ;R1 ; PUSHAB 160(SP) ;PACKET_TABLE+128 ; CMPW R0, #1 ;R0, #1 ; BNEQ 97$ ;97$ ; MOVAB W^P.ACY, R1 ;P.ACY, R1 ; PUSHL R1 ;R1 ; BRB 100$ ;100$ ; 97$: CMPW R0, #7 ;R0, #7 ; BNEQ 98$ ;98$ ; MOVAB W^P.ADA, R0 ;P.ADA, R0 ; BRB 99$ ;99$ ; 98$: MOVAB W^U.29, R0 ;U.29, R0 ; 99$: PUSHL R0 ;R0 ; 100$: PUSHAB -1072(FP) ;LINE_DESC ; PUSHAB -1072(FP) ;LINE_DESC ; PUSHAB W^U.21 ;U.21 ; CALLS #7, G^SYS$FAO ;#7, SYS$FAO ; BRW 143$ ;143$ ; 0581 101$: CMPW R2, #8 ;R2, #8 ; 0588 BNEQ 107$ ;107$ ; MOVW #1024, -1072(FP) ;#1024, LINE_DESC ; 0590 PUSHAB 96(SP) ;PACKET_TABLE+72 ; 0601 PUSHAB 164(SP) ;PACKET_TABLE+136 ; PUSHAB 160(SP) ;PACKET_TABLE+128 ; PUSHAB -1072(FP) ;LINE_DESC ; PUSHAB -1072(FP) ;LINE_DESC ; MOVZWL -4142(FP), R0 ;MESSAGE+2, R0 ; CMPW R0, #2 ;R0, #2 ; BNEQ 103$ ;103$ ; MOVAB W^U.22, R1 ;U.22, R1 ; 102$: PUSHL R1 ;R1 ; BRB 106$ ;106$ ; 103$: CMPW R0, #1 ;R0, #1 ; BNEQ 104$ ;104$ ; MOVAB W^U.23, R0 ;U.23, R0 ; BRB 105$ ;105$ ; 104$: MOVAB W^U.29, R0 ;U.29, R0 ; 105$: PUSHL R0 ;R0 ; 106$: BRW 142$ ;142$ ; 107$: CMPW R2, #9 ;R2, #9 ; 0609 BEQL 108$ ;108$ ; BRW 122$ ;122$ ; 108$: MOVW #1024, -1072(FP) ;#1024, LINE_DESC ; 0611 TSTW 120(SP) ;PACKET_TABLE+96 ; 0633 BEQL 109$ ;109$ ; MOVAB 120(SP), R0 ;PACKET_TABLE+96, R0 ; BRB 110$ ;110$ ; 109$: MOVAB W^P.ADQ, R0 ;P.ADQ, R0 ; 110$: PUSHL R0 ;R0 ; TSTW 132(SP) ;PACKET_TABLE+104 ; BEQL 111$ ;111$ ; MOVAB 132(SP), R0 ;PACKET_TABLE+104, R0 ; BRB 112$ ;112$ ; 111$: MOVAB W^P.ADO, R0 ;P.ADO, R0 ; 112$: PUSHL R0 ;R0 ; TSTW 40(SP) ;PACKET_TABLE+8 ; BEQL 113$ ;113$ ; MOVAB 40(SP), R0 ;PACKET_TABLE+8, R0 ; BRB 115$ ;115$ ; 113$: TSTW 88(SP) ;PACKET_TABLE+56 ; BEQL 114$ ;114$ ; MOVAB 88(SP), R0 ;PACKET_TABLE+56, R0 ; BRB 115$ ;115$ ; 114$: MOVAB W^P.ADM, R0 ;P.ADM, R0 ; 115$: PUSHL R0 ;R0 ; MOVZWL -4142(FP), R0 ;MESSAGE+2, R0 ; CMPW R0, #1 ;R0, #1 ; BNEQ 116$ ;116$ ; MOVAB W^P.ADE, R1 ;P.ADE, R1 ; BRB 117$ ;117$ ; 116$: CMPW R0, #2 ;R0, #2 ; BNEQ 118$ ;118$ ; MOVAB W^P.ADG, R1 ;P.ADG, R1 ; 117$: PUSHL R1 ;R1 ; BRB 121$ ;121$ ; 118$: CMPW R0, #3 ;R0, #3 ; BNEQ 119$ ;119$ ; MOVAB W^P.ADI, R0 ;P.ADI, R0 ; BRB 120$ ;120$ ; 119$: MOVAB W^P.ADK, R0 ;P.ADK, R0 ; 120$: PUSHL R0 ;R0 ; 121$: PUSHAB 168(SP) ;PACKET_TABLE+128 ; PUSHAB -1072(FP) ;LINE_DESC ; PUSHAB -1072(FP) ;LINE_DESC ; PUSHAB W^U.24 ;U.24 ; CALLS #8, G^SYS$FAO ;#8, SYS$FAO ; BRB 124$ ;124$ ; 0634 122$: CMPW R2, #12 ;R2, #12 ; 0641 BNEQ 132$ ;132$ ; MOVW #1024, -1072(FP) ;#1024, LINE_DESC ; 0643 MOVZWL -4142(FP), R2 ;MESSAGE+2, R2 ; 0644 CMPW R2, #2 ;R2, #2 ; BNEQ 125$ ;125$ ; PUSHAB 152(SP) ;PACKET_TABLE+128 ; 0650 PUSHAB -1072(FP) ;LINE_DESC ; PUSHAB -1072(FP) ;LINE_DESC ; PUSHAB W^U.25 ;U.25 ; 123$: CALLS #4, G^SYS$FAO ;#4, SYS$FAO ; 124$: BRW 143$ ;143$ ; 125$: TSTW 56(SP) ;PACKET_TABLE+32 ; 0667 BEQL 126$ ;126$ ; MOVAB 56(SP), R0 ;PACKET_TABLE+32, R0 ; BRB 127$ ;127$ ; 126$: MOVAB W^P.AEA, R0 ;P.AEA, R0 ; 127$: PUSHL R0 ;R0 ; CMPW R2, #1 ;R2, #1 ; BNEQ 128$ ;128$ ; MOVAB W^P.ADS, R0 ;P.ADS, R0 ; BRB 131$ ;131$ ; 128$: CMPW R2, #6 ;R2, #6 ; BNEQ 129$ ;129$ ; MOVAB W^P.ADU, R0 ;P.ADU, R0 ; BRB 131$ ;131$ ; 129$: CMPW R2, #5 ;R2, #5 ; BNEQ 130$ ;130$ ; MOVAB W^P.ADW, R0 ;P.ADW, R0 ; BRB 131$ ;131$ ; 130$: MOVAB W^P.ADY, R0 ;P.ADY, R0 ; 131$: PUSHL R0 ;R0 ; PUSHAB 160(SP) ;PACKET_TABLE+128 ; PUSHAB -1072(FP) ;LINE_DESC ; PUSHAB -1072(FP) ;LINE_DESC ; PUSHAB W^U.26 ;U.26 ; BRB 142$ ;142$ ; 132$: CMPW R2, #11 ;R2, #11 ; 0676 BEQL 133$ ;133$ ; BRW 3$ ;3$ ; 133$: MOVW #1024, -1072(FP) ;#1024, LINE_DESC ; 0678 PUSHAB 144(SP) ;PACKET_TABLE+120 ; 0692 MOVZWL -4142(FP), R0 ;MESSAGE+2, R0 ; CMPW R0, #1 ;R0, #1 ; BNEQ 134$ ;134$ ; MOVAB W^P.AEC, R1 ;P.AEC, R1 ; BRB 137$ ;137$ ; 134$: CMPW R0, #2 ;R0, #2 ; BNEQ 135$ ;135$ ; MOVAB W^P.AEE, R1 ;P.AEE, R1 ; BRB 137$ ;137$ ; 135$: CMPW R0, #3 ;R0, #3 ; BNEQ 136$ ;136$ ; MOVAB W^P.AEG, R1 ;P.AEG, R1 ; BRB 137$ ;137$ ; 136$: CMPW R0, #4 ;R0, #4 ; BNEQ 138$ ;138$ ; MOVAB W^P.AEI, R1 ;P.AEI, R1 ; 137$: PUSHL R1 ;R1 ; BRB 141$ ;141$ ; 138$: CMPW R0, #5 ;R0, #5 ; BNEQ 139$ ;139$ ; MOVAB W^P.AEK, R0 ;P.AEK, R0 ; BRB 140$ ;140$ ; 139$: MOVAB W^P.AEM, R0 ;P.AEM, R0 ; 140$: PUSHL R0 ;R0 ; 141$: PUSHAB 160(SP) ;PACKET_TABLE+128 ; PUSHAB -1072(FP) ;LINE_DESC ; PUSHAB -1072(FP) ;LINE_DESC ; PUSHAB W^U.27 ;U.27 ; 142$: CALLS #6, G^SYS$FAO ;#6, SYS$FAO ; 143$: PUSHAB -1072(FP) ;LINE_DESC ; 0693 CALLS #1, G^LIB$PUT_OUTPUT ;#1, LIB$PUT_OUTPUT ; MOVL R0, R9 ;R0, STATUS ; MOVL #1, (SP) ;#1, (SP) ; 0694 PUSHL SP ;SP ; PUSHAB -1072(FP) ;LINE_DESC ; PUSHAB 20(SP) ;VOICE_ID ; CALLS #3, G^DTK$SPEAK_TEXT ;#3, DTK$SPEAK_TEXT ; MOVL R0, R9 ;R0, STATUS ; BLBS R9, 144$ ;STATUS, 144$ ; 0695 PUSHL R9 ;STATUS ; CALLS #1, G^LIB$SIGNAL ;#1, LIB$SIGNAL ; 144$: BRW 3$ ;3$ ; 0341 145$: MOVL R9, R0 ;STATUS, R0 ; 0702 RET ; ; ; Routine Size: 2018 bytes, Routine Base: $CODE$ + 0000 ; 0705 1 ; 0706 1 END ; 0707 0 ELUDOM ; PSECT SUMMARY ; ; Name Bytes Attributes ; ; $PLIT$ 1704 NOVEC,NOWRT, RD ,NOEXE,NOSHR, LCL, REL, CON,NOPIC,ALIGN(2) ; $CODE$ 2018 NOVEC,NOWRT, RD , EXE,NOSHR, LCL, REL, CON,NOPIC,ALIGN(2) ; Library Statistics ; ; -------- Symbols -------- Pages Processing ; File Total Loaded Percent Mapped Time ; ; $11$DUA933:[SYSLIB]LIB.L32;1 61215 85 0 3428 00:00.2 ; COMMAND QUALIFIERS ; BLISS/CHECK=(FIELD,INITIAL,OPTIMIZE,NOSHARE)/NOINITIAL_PSECT/MACHINE_CODE_LIST=(ASSEMBLER,UNIQUE_NAMES,NOBINARY)/SOURCE_L ; IST=(NOHEADER)/LIS=LIS$:AUDSRV_LISTENER/OBJ=OBJ$:AUDSRV_LISTENER TMP$:AUDSRV_LISTENER.B32 ; Compilation Complete .END LISTENER_MAIN