% VAX-11 Librarian V04-00`e@sgK% AA f  t:APPENDBADDEFCHECK. CODE_PSECT COMMON_PSECT$DUMP_EXCEPTIONSDUMP_PSB DUMP_TABLE EXCEPTDEFFREEMEMGETMEM"ITEMEND ITEMLST'ITEMNEW)LOCAL_READONLY_PSECTLOCAL_READWRITE_PSECT!MAKEDESC/MOVSTR PSBDEF*READONLY_PSECTSENDOPERTRNLNM USERDEFUSERDEF ߏ WALRODG DUMP_PSB!`ߏ WALRODG DUMP_PSB!`iYߏ WALRODG DUMP_PSB!ߏ WALRODG DUMP_PSB!gߏ WALRODG DUMP_PSB! ߏ WALRODG DUMP_PSB@' WALRODG FLAGDEF EXCEPTDEFUSERDEFBADDEFPSBDEF@`ۼ2 WALRODG FLAGDEF EXCEPTDEFUSERDEFBADDEFPSBDEF!@65 WALRODG DUMP_PSB @~3B WALRODG FLAGDEF8 qK WALRODG EXCEPTDEFUSERDEFBADDEFPSBDEF "K .MACRO USERDEF,$GBL $DEFINI USER,$GBL$EQU USER_L_OPTIONS 0($EQU USER_V_NO_OPER_TIMESTAMP 0($EQU USER_M_NO_OPER_TIMESTAMP 1$$EQU USER_V_NO_HEADER_MSG 1$$EQU USER_M_NO_HEADER_MSG 2*$EQU USER_V_NOTIFY_OPER_WARNING 2*$EQU USER_M_NOTIFY_OPER_WARNING 4)$EQU USER_V_NOTIFY_OPER_LOGOFF 3C)$EQU USER_M_NOTIFY_OPER_LOGOFF 8S-$EQU USER_V_NO_NOTIFY_USER_WARNING 4 -$EQU USER_M_NO_NOTIFY_USER_W;9/ .MACRO ITEMLST newpsect, max_len, item_code, -E variable, ret_len, writeableR5 .IF EQUAL %LOCATE(<_>, newpsect) - %LENGTH(newpsect)wPREFIX_LEN = %LENGTH(newpsect) .IFFC#PREFIX_LEN = %LOCATE(<_>, newpsect)  .ENDC .SAVE_PSECT .IF BLANK writeable LOCAL_READONLY_PSECT newpsect .IFF_ LOCAL_READWRITE_PSECT newpsectB .ENDC .WORD max_len .WORD item_code .IF IDENTICAL variable, 0 .LONG 0 .LONG 0 .IFFP .ADDRESS 'variable' .IF NOT_BLANK ret_len .%59" .MACRO LOCAL_READWRITE_PSECT name" .PSECT name PIC, NOEXE, WRT, LONG .ENDM LOCAL_READWRITE_PSECTwww.IFFe LOCAL_READWRITE_PSECT newpsectF .ENDC 'newpsect':s .RESTORE_PSECTF .ENDM ITEMNEWww newpsect)  .ENDC .SAVE_PSECT .IF BLANK writeable LOCAL_READONLY_PSECT newpsect .IFF_ LOCAL_READWRITE_PSECT newpsectB .ENDC .WORD max_len .WORD item_code .IF IDENTICAL variable, 0 .LONG 0 .LONG 0 .IFF .ADDRESS 'variable' .IF NOT_BLANK ret_len .95 .MACRO FREEMEM memused, type, error, ?evenpg, ?exitmE PUSHR #^MA CLRQ R3 EDIV #512, memused, R4, R3S TSTL R3 BEQL evenpg INCL R4evenpg: SUBL2 R4, 'type'_DB# MULL2 #512, R4A ADDL3 R4, 'type'_ADDR, -(SP)E PUSHL SP/ PUSHAL 'type'_DBT CALLS #2, G^LIB$FREE_VM_PAGE POPR #^ME POPR #^M BLBS R0, exitmS BRW errorexitm: .ENDM FREEMEMwwUF DBGPSB_OUTPUT_DESC:  .BLKL 1 .ADDRESS DBGPSB_OUTPUT_BUFEDBGPSB_OUTPUT_BUF: .BLKB 2559= .MACRO GETMEM block_size, size, type, error, ?evenpg, ?exitmR PUSHR #^M CLRL R2 CLRQ R3 MULL3 size, block_size, R3v EDIV #512, R3, 'type'_DB, R24 TSTL R2 BEQL evenpg INCL 'type'_DB,evenpg: POPR #^M PUSHAL 'type'_ADDRD PUSHAL 'type'_DBB CALLS #2, G^LIB$GET_VM_PAGE BLBS R0, exitm> .IF NOT_BLANK error BRW error .IFF. $EXIT_S R0 .ENDCexitm: .ENDM GETMEM.ww1 .ADDRESS DBGPSB_OUTPUT_BUFEDBGPSB_OUTPUT_BUF: .BLKB 255ɀ65( .MACRO DUMP_PSB proc_index, dbgpsb_code JMP DUMP_PSB_'DBGPSB_CODE' .SAVE_PSECT PSBDEF  $JIBDEF READONLY_PSECT DEBUG_STRINGSU.IF NOT_DEFINED DBGPSB_DATAPDBGPSB_DATA == 1DBGPSB_PSB_STRING:/ .ASCID 'IPID !8XL EPID !8XL TERMINAL !#AC!/' -P7 '!_LNAME !#AC MPID !8XL PRCCNT !UW USERNAME !#AC!/' -* '!_!_ACCOUNT !#AC CPUTIM !UL BUFIOC !UL' LOCAL_READWRITE_PSECT DUMP_DATADBGPSB_OUTPUT_PDESC: .LONG 255 .ADDRESS DBGPSB_OUTPUT_BUFEDBGPSB_OUTPUT_DESC:B .BL2KL 1 .ADDRESS DBGPSB_OUTPUT_BUF DBGPSB_OUTPUT_BUF: .BLKB 255.ENDC CODE_PSECT DEBUG_CODEDUMP_PSB_'DBGPSB_CODE':  PUSHR #^MN .IF BLANK proc_indexA MNEGL #1, R9U .IF_FALSEO MOVL proc_index, R8 MOVL proc_index, R9 BRB 15$O .ENDC10$: INCL R9 .IF BLANK proc_indexN CMPL R9, G^SCH$GL_MAXPIX BLEQU 20$ .IF_FALSE_15$: CMPL R9, R8 BEQL 20$ .ENDC BRW 30$%20$: INDEX R9, #0, G^SCH$GL_MAXPIX, -E #PSB_C_BJ .MACRO EXCEPTDEF,$GBL $DEFINI EXCEPT,$GBL$EQU EXCEPT_C_STRLEN 256F $EQU EXCEPT_C_MAXIMUM 256$EQU EXCEPT_L_RECTYP 0 $EQU EXCEPT_V_ACCOUNT 0 $EQU EXCEPT_M_ACCOUNT 1 $EQU EXCEPT_V_PROCESS 1 $EQU EXCEPT_M_PROCESS 2!$EQU EXCEPT_V_TERMINAL 24!$EQU EXCEPT_M_TERMINAL 4 !$EQU EXCEPT_V_USERNAME 3O!$EQU EXCEPT_M_USERNAME 8T#$EQU EXCEPT_V_IDENTIFIER 4A#$EQU EXCEPT_M_IDENTIARNING 16,$EQU USER_V_NO_NOTIFY_USER_LOGOFF 5,$EQU USER_M_NO_NOTIFY_USER_LOGOFF 32"$EQU USER_V_LOG_WARNING 6"$EQU USER_M_LOG_WARNING 64!$EQU USER_V_LOG_LOGOFF 7 !$EQU USER_M_LOG_LOGOFF 128E($EQU USER_V_NO_DISCONNECTIONS 8($EQU USER_M_NO_DISCONNECTIONS 256$EQU USER_V_FORCEX 9E$EQU USER_M_FORCEX 512P$EQU USER_W_IPIDSEQ 4$EQU USER_L_CPUTIM 6$EQU USER_L_BUFIOC 10B$EQU U4@g4yN .MACRO DUMP_TABLE CODE_PSECT PARSER $DSCDEF EXCEPTDEF! PUSHR #^MS MOVL EXCEPTION_ADDR, R10  MOVL NO_EXCEPTIONS, R6 BNEQ 10$ BRW DONE10$: BRW FIND_NEXT READONLY_PSECT DEBUG_STRINGSRECTYP:. .ASCID /ACCOUNT / .ASCID /PROCESS / .ASCID /TERMINAL / .ASCID /USERNAME / .ASCID /IDENTIFIER/ .ASCID /IMAGE / FAO_STRING: F .ASCID /RECTYP !AS EXCEPT !AS START !UL STOP !UL OPTION !UL WILD !SW/ FAO_DECIMAL:F .ASCID /RECFIER 16$EQU EXCEPT_V_IMAGE 5$EQU EXCEPT_M_IMAGE 32!$EQU EXCEPT_W_WILDCARD 4#$EQU EXCEPT_Q_DESCRIPTOR 6I#$EQU EXCEPT_L_IDENTIFIER 6B"$EQU EXCEPT_L_START_MSG 14%$EQU EXCEPT_L_STOP_PROCESS 18 $EQU EXCEPT_L_OPTIONS 22$EQU EXCEPT_C_BLN 26$EQU EXCEPT_K_BLN 26 $DEFEND EXCEPT,$GBL,DEF .ENDM EXCEPTDEF,$GBLIwwECT DUMP_DATADBGPSB_OUTPUT_PDESC: .LONG 255 .ADDRESS DBGPSB_OUTPUT_BUFBDBGPSB_OUTY9 .MACRO SENDOPER, desc $SSDEF. $OPCDEF $DSCDEF MOVAL OPER_MSG_DESC, R0 MOVAL 'desc', R1 ADDW3 #OPC$L_MS_TEXT, -% DSC$W_LENGTH(R1), DSC$W_LENGTH(R0)F MOVAL OPER_MSG, R3S ADDL2 #OPC$L_MS_TEXT, R3T MOVC3 DSC$W_LENGTH(R1), - @DSC$A_POINTER(R1), (R3) $SNDOPR_S - msgbuf = OPER_MSG_DESC .ENDM SENDOPERnwwctB .ENDC .WORD max_len .WORD item_code .IF IDENTICAL variable, 0 .LONG 0 .LONG 0 .IFFT .ADDRESS 'variable' .IF NOT_BLANK ret_len .3g9< .MACRO TRNLNM, buffer, fatal=TRUE, numeric, ?exitm, ?string $DSCDEFBUFFER_ADDR = 4'RETLEN_ADDR = 83 .SAVE_PSECT READONLY_PSECT PURE_STRINGS 'string':F .ASCID /'buffer'/ .RESTORE_PSECT_ MOVAL TRN_ITMLST, R1W MOVAQ TRNLNM_DESC, R0 CLRW DSC$W_LENGTH(R0)) MOVAW DSC$W_LENGTH(R0), RETLEN_ADDR(R1)M( MOVL DSC$A_POINTER(R0), BUFFER_ADDR(R1) $TRNLNM_S -o tabnam = LOGICAL_TABLE,- lognam = 'string', - itmlst = TRN_ITMLSTa .IF DIFFERENT fatal, TRUE CҫJߏ+ .MACRO CHECK sts=R0, status, label, ?exitmC .IF BLANK STATUSE BLBS sts,exitm .IF BLANK LABEL PUSHL 'STS' CALLS #1,G^LIB$STOPP .IF_FALSEA BRW labelM .ENDCO .IF_FALSE CMPL sts,status BEQL exitm BRW label .ENDCexitm: .ENDM CHECKwwMON_PSECT DUMP_TABLEDUMP_PSBFREEMEMGETMEMITEMENDITEMLSTITEMNEWLOCAL_READONLY_PSECTLOCAL_READWRITE_PSECTMAKEDESCMOVSTRREADONLY_PSECTSENDOPERTRNLNM) GWALROD APPENDCHECK CODE_PSECT COMM STRREADONLY_PSECTSENDOPERTRNLNM`~9 GWALROD APPENDCHECK CODE_PSECT COMMON_PSECTDUMP_EXCEPTIONSDUMP_PSBFREEMEMGETMEMITEMENDITEMLSTITEMNEWLOCAL_READONLY_PSECTLOCAL_READWRITE_PSECTMAKEDESCMOVSTRREADONLY_PSECTSENDOPERTRNLNM@ 4Lŏ GWALROD FLAGDEF EXCEPTDEFUSERDEFBADDEFPSBDEF%ޏ WALRODG CHECK`Jߏ WALRODG CHECK!Nߏ WALRODG DUMP_PSB!@5Eߏ WALRODG DUMP_PSB!+ߏ WALRODG DUMP_PSB! SER_L_WARNING 14 $EQU USER_L_START_MSG 18#$EQU USER_L_STOP_PROCESS 22D$EQU USER_C_BLN 26$EQU USER_K_BLN 26 $DEFEND USER,$GBL,DEF .ENDM USERDEF,$GBL ww MNEGL #1, R9 .IF_FALSE  MOVL proc_index, R8 MOVL proc_index, R9 BRB 15$n .ENDC10$: INCL R9 .IF BLANK proc_index  CMPL R9, G^SCH$GL_MAXPIX BLEQU 20$L .IF_FALSE15$: CMPL R9, R8I BEQL 20$ .ENDC BRW 30$%20$: INDEX R9, #0, G^SCH$GL_MAXPIX, MLSTITEMNEWLOCAL_READONLY_PSECTLOCAL_READWRITE_PSECTMAKEDESCMOVSTRREADONLY_PSECTSENDOPERTRNLNMG4 GWALROD APPENDCHECK CODE_PSECT COMMON_PSECTDUMP_EXCEPTIONSDUMP_PSBFREEMEMGETMEMITEMENDITEMLSTITEMNEWLOCAL_READONLY_PSECTLOCAL_READWRITE_PSECTMAKEDESCMOVSTRREADONLY_PSECTSENDOPERTRNLNMbo9 GWALROD APPENDCHECK CODE_PSECT COMMON_PSECTDUMP_EXCEPTIONSDUMP_PSBFREEMEMGETMEMITEMENDITEMLSTITEMNEWLOCAL_READONLY_PSECTLOCAL_READWRITE_PSECTMAKEDESCMOV 79 .MACRO COMMON_PSECT name1 .PSECT name PIC, NOEXE, WRT, SHR, GBL, OVR, LONGC .ENDM COMMON_PSECTEww $EXIT_S 'STS'_ .IF_FALSE3 BRW labelA .ENDCR .IF_FALSE CMPL sts,status BEQL exitm$ BRW label .ENDCexitm: .ENDM CHECKwwSC$A_POINTER(R0), (R3)S POPR #^M .ENDM APPENDEwwTMAKEDESCMOVSTRREADONLY_PSECTSENDOPERTRNLNM5f GWALROD APPENDCHECK CODE_PSECT COMMON_PSECT DUMP_TABLEDUMP_PSBFREEMEMGETMEMITEMENDITEMLS@ OK .MACRO BADDEF,$GBLL $DEFINI BAD,$GBLL $EQU BAD_L_ERROR_FLAG 0$EQU BAD_V_RECTYP 0$EQU BAD_M_RECTYP 1$EQU BAD_V_DEVNAM 1$EQU BAD_M_DEVNAM 2$EQU BAD_V_STRING 2$EQU BAD_M_STRING 4$EQU BAD_V_IDENT 3E$EQU BAD_M_IDENT 8E$EQU BAD_V_START 4 $EQU BAD_M_START 16_$EQU BAD_V_STOP 5$EQU BAD_M_STOP 32$EQU BAD_V_FLAG 6$EQU BAD_M_FLAG 64 $DEFEND BAD,$GBL,DEFF .ENDM BADDEF,$GBLwwFF 5,$EQU FLAG_M_NO_NOTIFY_USER_LOGOFF 32"$EQU FLAG_V_LOG_WARNING 6"$EQU FLAG_M_LOG_WARNING 64!$EQU FLAG_V_LOG_LOGOFF 7_!$EQU FLAG_M_LOG_LOGOFF 128_($EQU FLAG_V_NO_DISCONNECTIONS 8($EQU FLAG_M_NO_DISCONNECTIONS 256$EQU FLAG_V_FORCEX 9_$EQU FLAG_M_FORCEX 512_ $DEFEND FLAG,$GBL,DEF .ENDM FLAGDEF,$GBL ww$EQU USER_L_WARNING 14 $EQU USER_L_START_MSG &@sgK .MACRO PSBDEF,$GBLB $DEFINI PSB,$GBL $EQU PSB_L_IPID 0$EQU PSB_W_IPIDIDX 0P$EQU PSB_W_IPIDSEQ 2 $EQU PSB_L_EPID 4$EQU PSB_L_MPID 8$EQU PSB_L_CPUTIM 12$EQU PSB_L_BUFIOC 16$EQU PSB_T_USERNAME 20$EQU PSB_S_USERNAME 13$EQU PSB_T_ACCOUNT 33 $EQU PSB_S_ACCOUNT 9S$EQU PSB_T_TERMINAL 42$EQU PSB_S_TERMINAL 8$EQU PSB_T_LNAME 50P$EQU PSB_S_LNA`@;9+ .MACRO MAKEDESC, name, length=0, dynamic=F  $DSCDEF 'name'_DESC: .WORD 'length'R .BYTE DSC$K_DTYPE_T .IF DIFFERENT dynamic, FT .BYTE DSC$K_CLASS_D .IFF' .BYTE DSC$K_CLASS_S .ENDC .IF EQUAL LENGTHt .LONG 0 .IFFA .ADDRESS 'name''name': .BLKB 'length' .ENDC .ENDM MAKEDESCFwwLOCAL_READWRITE_PSECT newpsectB .ENDC .WORD max_len .WORD item_code .IF IDENTICAL variable, 0 .LONG 0 .LONG 0 .IFFP .ADDRESS 'variable' .IF NOT_BLANK ret_len . 9# .MACRO ITEMEND newpsect, writeablep .SAVE_PSECT .IF BLANK writeable LOCAL_READONLY_PSECT newpsect .IFF3 LOCAL_READWRITE_PSECT newpsect2 .ENDC .LONG 0 .RESTORE_PSECTQ .ENDM ITEMENDww'_DB,evenpg: POPR #^M PUSHAL 'type'_ADDRD PUSHAL 'type'_DBB CALLS #2, G^LIB$GET_VM_PAGE BLBS R0, exitm> .IF NOT_BLANK error BRW error .IFF. $EXIT_S R0 .ENDCexitm: .ENDM GETMEM.ww1 .ADDRESS DBGPSB_OUTPUT_BUFEDBGPSB_OUTPUT_BUF: .BLKB 255 a_ .MACRO APPEND desc, src $DSCDEF PUSHR #^M MOVAL 'desc', R0 MOVAL 'src', R1 MOVZWL DSC$W_LENGTH(R0), R3 ADDL2 DSC$A_POINTER(R0), R3) ADDW2 DSC$W_LENGTH(R1), DSC$W_LENGTH(R0)1 MOVC3 DSC$W_LENGTH(R1), @DSC$A_POINTER(R1), (R3) POPR #^M .ENDM APPENDww_+ .MACRO CHECK STS=R0, STATUS, LABEL, ?EXITM .IF BLANK STATUS BLBS sts,exitm .IF BLANK LABEL $EXIT_S 'STS' .IF_FALSE BRW label .E<=9 .MACRO DUMP_EXCEPTIONSm JMP DUMP_EXCEPTIONS .SAVE_PSECT $DSCDEF EXCEPTDEF READONLY_PSECT DEBUG_STRINGSSDBGEXC_EXC_STRING:F .ASCID /RECTYP !AS EXCEPT !AS START !UL STOP !UL OPTION !UL WILD !SW/DBGEXC_EXC_DECIMAL::F .ASCID /RECTYP !AS EXCEPT !XL START !UL STOP !UL OPTION !UL WILD !SW/DBGEXC_RECORD_TYPES: .ASCID /ACCOUNT / .ASCID /PROCESS / .ASCID /TERMINAL / .ASCID /USERNAME / .ASCID /IDENTIFIER/ .ASCID /IMAGE /DBGEXC_EXCEPT_TYPE:  .ADDR(ECT COMMON_PSECTDUMP_EXCEPTIONSDUMP_PSBFREEMEMGETMEMITEMENDITEMLSTITEMNEWLOCAL_READONLY_PSECTLOCAL_READWRITE_PSECTMAKEDESCMOVSTRREADONLY_PSECTSENDOPERTRNLNM~ʿ GWALROD APPENDCHECK CODE_PSECT COMMON_PSECTDUMP_EXCEPTIONSDUMP_PSBFREEMEMGETMEMITEMENDITEMLSTITEMNEWLOCAL_READONLY_PSECTLOCAL_READWRITE_PSECTMAKEDESCMOVSTRREADONLY_PSECTSENDOPERTRNLNM˿ GWALROD APPENDCHECK CODE_PSECT COMMON_PSECTDUMP_EXCEPTIONSDUMP_PSBFREEMEMGETMEMITEMENDITEME 16T$EQU PSB_W_PRCCNT 66$EQU PSB_C_BLN 68 $EQU PSB_K_BLN 68S $DEFEND PSB,$GBL,DEFM .ENDM PSBDEF,$GBLwwLOCAL_READONLY_PSECTLOCAL_READWRITE_PSECTMAKEDESCMOVSTRREADONLY_PSECTSENDOPERTRNLNM #^Ҿ GWALROD APPENDCHECK CODE_PSECT COMMON_PSECTDUMP_EXCEPTIONSDUMP_PSBFREEMEMGETMEMITEMENDITEMLSTITEMNEWLOCAL_READONLY_PSECTLOCAL_READWRITE_PSECTMAKEDESCMOVSTRREADONLY_PSECTSENDOPERTRNLNM` GWALROD APPENDCHECK CODE_PS ]$9# .MACRO ITEMNEW newpsect, writeablei .SAVE_PSECT .IF BLANK writeable LOCAL_READONLY_PSECT newpsect .IFFe LOCAL_READWRITE_PSECT newpsectF .ENDC 'newpsect':s .RESTORE_PSECTF .ENDM ITEMNEWww newpsect)  .ENDC .SAVE_PSECT .IF BLANK writeable LOCAL_READONLY_PSECT newpsect .IFF_ LOCAL_READWRITE_PSECT newpsectB .ENDC .WORD max_len .WORD item_code .IF IDENTICAL variable, 0 .LONG 0 .LONG 0 .IFFP .ADDRESS 'variable' .IF NOT_BLANK ret_len .+ʼ2 .MACRO BADDEF,$GBLL $DEFINI BAD,$GBLL $EQU BAD_L_ERROR_FLAG 0$EQU BAD_V_RECTYP 0$EQU BAD_M_RECTYP 1$EQU BAD_V_DEVNAM 1$EQU BAD_M_DEVNAM 2$EQU BAD_V_STRING 2$EQU BAD_M_STRING 4$EQU BAD_V_IDENT 3 $EQU BAD_M_IDENT 8O$EQU BAD_V_START 4U$EQU BAD_M_START 16 $EQU BAD_V_STOP 5$EQU BAD_M_STOP 32$EQU BAD_V_FLAG 6$EQU BAD_M_FLAG 6409! .MACRO LOCAL_READONLY_PSECT namel$ .PSECT name PIC, NOEXE, NOWRT, LONG .ENDM LOCAL_READONLY_PSECTeww.IFFe LOCAL_READWRITE_PSECT newpsectF .ENDC 'newpsect':s .RESTORE_PSECTF .ENDM ITEMNEWww newpsect)  .ENDC .SAVE_PSECT .IF BLANK writeable LOCAL_READONLY_PSECT newpsect .IFF_ LOCAL_READWRITE_PSECT newpsectB .ENDC .WORD max_len .WORD item_code .IF IDENTICAL variable, 0 .LONG 0 .LONG 0 .IFFP .ADDRESS 'variable' .IF NOT_BLANK ret_len .`S9 .MACRO READONLY_PSECT namen) .PSECT name PIC, NOEXE, NOWRT, SHR, LONG  .ENDM READONLY_PSECT,wwlength, desc_addr .ENDM MOVSTR ww.BYTE DSC$K_CLASS_D .IFF' .BYTE DSC$K_CLASS_S .ENDC .IF EQUAL LENGTHt .LONG 0 .IFFA .ADDRESS 'name''name': .BLKB 'length' .ENDC .ENDM MAKEDESCFwwLOCAL_READWRITE_PSECT newpsectB .ENDC .WORD max_len .WORD item_code .IF IDENTICAL variable, 0 .LONG 0 .LONG 0 .IFFT .ADDRESS 'variable' .IF NOT_BLANK ret_len .,PUT_PDESCP PUSHAW DBGPSB_OUTPUT_DESC PUSHAQ DBGPSB_PSB_STRINGB CALLS #18, G^SYS$FAO, PUSHAL DBGPSB_OUTPUT_DESC CALLS #1, G^LIB$PUT_OUTPUT0 BRW 10$"30$: POPR #^M JMP DUMP_PSB_END_'DBGPSB_CODE'D .RESTORE_PSECT_DUMP_PSB_END_'DBGPSB_CODE':N .ENDM DUMP_PSBGwwD APPENDCHECK CODE_PSECT COMMON_PSECT DUMP_TABLEDUMP_PSBFREEMEMGETMEMITEMENDITEMLSTITEMNEWLOCAL_READONLY_PSECTLOCAL_READWRITE_PSECTMAKEDESCMOVSTRREADONLY_PSECTSENDOPERTRNLNM@p8"-Ҽ2 .MACRO PSBDEF,$GBLL $DEFINI PSB,$GBLL$EQU PSB_L_IPID 0$EQU PSB_W_IPIDIDX 0 $EQU PSB_W_IPIDSEQ 2 $EQU PSB_L_EPID 4$EQU PSB_L_MPID 8$EQU PSB_L_CPUTIM 12$EQU PSB_L_BUFIOC 16$EQU PSB_T_USERNAME 20$EQU PSB_S_USERNAME 13$EQU PSB_T_ACCOUNT 33U$EQU PSB_S_ACCOUNT 9$EQU PSB_T_TERMINAL 42$EQU PSB_S_TERMINAL 8$EQU PSB_T_LNAME 50M$EQU PSB_S_LNA06I,$EQU USER_V_NO_NOTIFY_USER_LOGOFF 5,$EQU USER_M_NO_NOTIFY_USER_LOGOFF 32"$EQU USER_V_LOG_WARNING 6"$EQU USER_M_LOG_WARNING 64!$EQU USER_V_LOG_LOGOFF 7C!$EQU USER_M_LOG_LOGOFF 128C($EQU USER_V_NO_DISCONNECTIONS 8($EQU USER_M_NO_DISCONNECTIONS 256$EQU USER_V_FORCEX 9 $EQU USER_M_FORCEX 512D$EQU USER_W_IPIDSEQ 4$EQU USER_L_CPUTIM 6_$EQU USER_L_BUFIOC 10F$EQU USER_L_WARNING 909 .MACRO CODE_PSECT namet" .PSECT name PIC, EXE, NOWRT, BYTE .ENDM CODE_PSECTiww .IF BLANK LABEL  $EXIT_S 'STS'E .IF_FALSE_ BRW labelR .ENDCr .IF_FALSE CMPL sts,status BEQL exitm_ BRW label .ENDCexitm: .ENDM CHECKww R0 CLRW DSC$W_LENGTH(R0)) MOVAW DSC$W_LENGTH(R0), RETLEN_ADDR(R1)M( MOVL DSC$A_POINTER(R0), BUFFER_ADDR(R1) $TRNLNM_S -o tabnam = LOGICAL_TABLE,- lognam = 'string', - itmlst = TRN_ITMLSTa .IF DIFFERENT fatal, TRUE CJ9* .MACRO MOVSTR src_addr, length, desc_addr MOVZBL src_addr, R0 INCL R0* MOVC5 R0, src_addr, #0, length, desc_addr .ENDM MOVSTR ww.BYTE DSC$K_CLASS_D .IFF' .BYTE DSC$K_CLASS_S .ENDC .IF EQUAL LENGTHt .LONG 0 .IFFA .ADDRESS 'name''name': .BLKB 'length' .ENDC .ENDM MAKEDESCFwwLOCAL_READWRITE_PSECT newpsect_ .ENDC .WORD max_len .WORD item_code .IF IDENTICAL variable, 0 .LONG 0 .LONG 0 .IFFS .ADDRESS 'variable' .IF NOT_BLANK ret_len .1 $DEFEND BAD,$GBL,DEF  .ENDM BADDEF,$GBLwwO_NOTIFY_USER_LOGOFF 5,$EQU USER_M_NO_NOTIFY_USER_LOGOFF 32"$EQU USER_V_LOG_WARNING 6"$EQU USER_M_LOG_WARNING 64!$EQU USER_V_LOG_LOGOFF 7!$EQU USER_M_LOG_LOGOFF 128P($EQU USER_V_NO_DISCONNECTIONS 8($EQU USER_M_NO_DISCONNECTIONS 256$EQU USER_V_FORCEX 9E$EQU USER_M_FORCEX 512($EQU USER_W_IPIDSEQ 4$EQU USER_L_CPUTIM 6B$EQU USER_L_BUFIOC 5ME 16D$EQU PSB_W_PRCCNT 66$EQU PSB_C_BLN 68 $EQU PSB_K_BLN 68T $DEFEND PSB,$GBL,DEF  .ENDM PSBDEF,$GBLwwNG 6"$EQU USER_M_LOG_WARNING 64!$EQU USER_V_LOG_LOGOFF 7U!$EQU USER_M_LOG_LOGOFF 128($EQU USER_V_NO_DISCONNECTIONS 8($EQU USER_M_NO_DISCONNECTIONS 256$EQU USER_V_FORCEX 9D$EQU USER_M_FORCEX 512$EQU USER_W_IPIDSEQ 4$EQU USER_L_CPUTIM 6P$EQU USER_L_BUFIOC 6LN, #0, R10E ADDL2 PSB_ADDR, R10 TSTL PSB_L_IPID(R10)_ BEQL 10$  PUSHL PSB_L_BUFIOC(R10) PUSHL PSB_L_CPUTIM(R10) PUSHAB PSB_T_ACCOUNT(R10) PUSHL #JIB$S_ACCOUNTD PUSHAB PSB_T_USERNAME(R10)F PUSHL #JIB$S_USERNAME MOVZWL PSB_W_PRCCNT(R10), -(SP) PUSHL PSB_L_MPID(R10) PUSHAB PSB_T_LNAME(R10) PUSHL #PSB_S_LNAMEU PUSHAB PSB_T_TERMINAL(R10)E PUSHL #PSB_S_TERMINAL PUSHL PSB_L_EPID(R10) PUSHL PSB_L_IPID(R10) PUSHAQ DBGPSB_OUTPUT_PDESCJ PUSHAW DBGPSB_OUTPUT_DESC PUSHAMPL #SS$_NOLOGNAM, R0. BEQL exitm0 .ENDC CHECK .IF NOT_BLANK NUMERIC PUSHAL numericX PUSHAQ TRNLNM_DESCw CALLS #2, G^OTS$CVT_TI_Ll CHECK .ENDCexitm: .ENDM TRNLNMnwwDDRESS 'variable' .ENDC> LOCAL_READWRITE_PSECT %EXTRACT(0,PREFIX_LEN,newpsect)_BUFFERS 'variable':B .BLKB max_len .ENDC .RESTORE_PSECTS .ENDM ITEMLSTww) PUSHL #JIB$S_ACCOUNT  PUSHAB PSB_T_USERNAME(R10) PUSHL #JIB$S_USERNAME MOVZWL PSB_W_PRCCNT(R10), -(SP) PUSHL PSB_L_MPID(R10) PUSHAB PS8TYP !AS EXCEPT !XL START !UL STOP !UL OPTION !UL WILD !SW/ EXCEPT_TYPE: .ADDRESS FAO_STRING .ADDRESS FAO_STRING .ADDRESS FAO_STRING .ADDRESS FAO_STRING .ADDRESS FAO_DECIMALN .ADDRESS FAO_STRING LOCAL_READWRITE_PSECT DUMP_DATAOUT: .LONG 100 .ADDRESS 10$P10$: .BLKB 100 CODE_PSECT PARSER FIND_NEXT:& FFS #0, #32, EXCEPT_L_RECTYP(R10), R3& INDEX R3, #0, #31, #DSC$C_D_BLN+10, - #0, R2 INDEX R3, #0, #31, #4, #0, R3 MOVL #100, OUT PUSHL EXCEPT_W_WILDCARD(R10)P P7 14 $EQU USER_L_START_MSG 18#$EQU USER_L_STOP_PROCESS 22P$EQU USER_C_BLN 26$EQU USER_K_BLN 26 $DEFEND USER,$GBL,DEF .ENDM USERDEF,$GBL1wwJMP DUMP_PSB_END_'DBGPSB_CODE'N .RESTORE_PSECT_DUMP_PSB_END_'DBGPSB_CODE':R .ENDM DUMP_PSBBwwCODE: .ENDM DUMP_PSBLwwL_MPID(R10) PUSHAB PSB_T_LNAME(R10) PUSHL #PSB_S_LNAME9 PUSHAB PSB_T_TERMINAL(R10)Q PUSHL #PSB_S_TERMINAL PUSHL PSB_L_RIGHTSLIST(R10) PUSHL PSB_L_EPID(R10) PUSHL PSB_L_IPID(R1Q DBGPSB_PSB_STRINGE CALLS #17, G^SYS$FAOR PUSHAL DBGPSB_OUTPUT_DESC CALLS #1, G^LIB$PUT_OUTPUT  BRW 10$"30$: POPR #^M JMP DUMP_PSB_END_'DBGPSB_CODE'F .RESTORE_PSECT DUMP_PSB_END_'DBGPSB_CODE':O .ENDM DUMP_PSBwwFLAG_V_NO_DISCONNECTIONS 8($EQU FLAG_M_NO_DISCONNECTIONS 256$EQU FLAG_V_FORCEX 9<$EQU FLAG_M_FORCEX 512S $DEFEND FLAG,$GBL,DEF .ENDM FLAGDEF,$GBLNwwMP_PSB_ww[R2]S PUSHAQ DBGEXC_OUTPUT_PDESCP PUSHA= CALLS #18, G^SYS$FAOT PUSHAL DBGPSB_OUTPUT_DESC CALLS #1, G^LIB$PUT_OUTPUTS BRW 10$30$: POPR #^MB JMP DUMP_PSB_END_'DBGPSB_CODE'T .RESTORE_PSECT1DUMP_PSB_END_'DBGPSB_CODE':R .ENDM DUMP_PSBMww_END_'DBGPSB_CODE', .RESTORE_PSECTcDUMP_PSB_END_'DBGPSB_CODE':L .ENDM DUMP_PSBCww.RESTORE_PSECT, .ENDM ITEMLSTww PUSHAL OUT CALLS #1, G^LIB$PUT_OUTPUT CHECK ADDL2 #EXCEPT_C_BLN, R10 SOBGTR R6, 10$ BRB DONE10$: BRW FIND_NEXTDONE: POPR 9USHL EXCEPT_L_OPTIONS(R10)! PUSHL EXCEPT_L_STOP_PROCESS(R10)9 PUSHL EXCEPT_L_START_MSG(R10) PUSHAL EXCEPT_Q_DESCRIPTOR(R10) ADDL3 R2, #RECTYP, R7 ADDL3 R3, #EXCEPT_TYPE, R80 CMPL (R8), #FAO_DECIMAL BNEQ DECIMAL_$ MOVL EXCEPT_Q_DESCRIPTOR(R10), (SP)DECIMAL: PUSHAL (R7) PUSHAL OUT1 PUSHAL OUTS PUSHL (R8)1 CALLS #9, G^SYS$FAO CHECK PUSHAL OUTR CALLS #1, G^LIB$PUT_OUTPUTR CHECK ADDL2 #EXCEPT_C_BLN, R10S SOBGTR R6, 10$M BRB DONEP10$: BRW FIND_NEXTDONE:S POPR #^M .ENDM DUMP_TABLELww_S_TERMINAL PUSHL PSB_L_RIGHTSLIST(R10) PUSHL PSB_L_EPID(R10) PUSHL PSB_L_IPID(R10) PUSHAQ DBGPSB_OUTPUT_PDESCE PUSHAW DBGPSB_OUTPUT_DESC PUSHAQ FAO_PSB_STRING CALLS #18, G^SYS$FAOR PUSHAL DBGPSB_OUTPUT_DESC CALLS #1, G^LIB$PUT_OUTPUTS 25$: INCL R9 BRW 10$30$: POPR #^MS JMP DUMP_PSB_END, .RESTORE_PSECT DUMP_PSB_END:2 .ENDM DUMP_PSB1wwSOBGTR R6, 10$U BRB DONE.10$: BRW FIND_NEXTDONE:T POPR  9 .MACRO APPEND src, dest $DSCDEF PUSHR #^MA MOVAQ 'src', R0 MOVAQ 'dest', R1L MOVZWL DSC$W_LENGTH(R1), R3 ADDL2 DSC$A_POINTER(R1), R3 ADDW2 DSC$W_LENGTH(R0), - DSC$W_LENGTH(R1) MOVC3 DSC$W_LENGTH(R0), - @DSC$A_POINTER(R0), (R3)' POPR #^M .ENDM APPENDwwM ITEMLSTww) PUSHL #JIB$S_ACCOUNT  PUSHAB PSB_T_USERNAME(R10) PUSHL #JIB$S_USERNAME MOVZWL PSB_W_PRCCNT(R10), -(SP) PUSHL PSB_L_MPID(R10) PUSHAB PSLONG 'variable'_L_ .IFFU .LONG 0 .ENDC .IF NOT_BLANK ret_lenB LOCAL_READWRITE_PSECT %EXTRACT(0,PREFIX_LEN,newpsect)_DESCRIPTORS'variable'_DESC: 'variable'_L:, .LONG max_len .ADDRESS 'variable' .ENDC> LOCAL_READWRITE_PSECT %EXTRACT(0,PREFIX_LEN,newpsect)_BUFFERS 'variable':B .BLKB max_len .ENDC .RESTORE_PSECTS .ENDM ITEMLSTww) PUSHL #JIB$S_ACCOUNT  PUSHAB PSB_T_USERNAME(R10) PUSHL #JIB$S_USERNAME MOVZWL PSB_W_PRCCNT(R10), -(SP) PUSHL PSB_L_MPID(R10) PUSHAB PS?ESS DBGEXC_EXC_STRING. .ADDRESS DBGEXC_EXC_STRINGN .ADDRESS DBGEXC_EXC_STRINGW .ADDRESS DBGEXC_EXC_STRINGL .ADDRESS DBGEXC_EXC_DECIMAL .ADDRESS DBGEXC_EXC_STRING LOCAL_READWRITE_PSECT DUMP_DATADBGEXC_OUTPUT_PDESC: .LONG 255 .ADDRESS DBGEXC_OUTPUT_BUF)DBGEXC_OUTPUT_DESC:D .BLKL 1 .ADDRESS DBGEXC_OUTPUT_BUFCDBGEXC_OUTPUT_BUF: .BLKB 255 CODE_PSECT DEBUG_CODEDUMP_EXCEPTIONS:! PUSHR #^MN MOVL EXCEPTION_ADDR, R10R MOVL NO_EXCEPTIONS, R6# BNE> 10C$EQU USER_L_WARNING 14 $EQU USER_L_START_MSG 18#$EQU USER_L_STOP_PROCESS 22P$EQU USER_C_BLN 26$EQU USER_K_BLN 26 $DEFEND USER,$GBL,DEF .ENDM USERDEF,$GBL1wwJMP DUMP_EXCEPTIONS_END .RESTORE_PSECTRDUMP_EXCEPTIONS_END: .ENDM DUMP_EXCEPTIONSwwL PSB_L_CPUTIM(R10) PUSHAB PSB_T_ACCOUNT(R10) PUSHL #JIB$S_ACCOUNT  PUSHAB PSB_T_USERNAME(R10) PUSHL #JIB$S_USERNAME MOVZWL PSB_W_PRCCNT(R10), -(SP) PUSHL PSB_L_MPID(R10) PUSHAB PSB_T_LNAME(R10) PUSHL #PSB_S_LNAME2 PUSHAB PSB_T_TERMINAL(R10)D PUSHL #PSB_S_TERMINAL PUSHL PSB_L_RIGHTSLIST(R10) PUSHL PSB_L_EPID(R10) PUSHL PSB_L_IPID(R10) PUSHAQ DBGPSB_OUTPUT_PDESCI PUSHAW DBGPSB_OUTPUT_DESC PUSHAQ DBGPSB_PSB_STRINGC CALLS #18, G^SYS$FAOP PUSHAL DBGPSB_OUTPUT_DESC CALLS #1, G^LIB$PUT_OUTPUT] BRW 10$30$: POPR #^M  JMP DUMP_PSB_ENDQ .RESTORE_PSECT DUMP_PSB_END:S .ENDM DUMP_PSB_ww[R2]R PUSHAQ DBGEXC_OUTPUT_PDESCR PUSHA@Q 10$E BRB 30$10$:$ FFS #0, #32,EXCEPT_L_RECTYP(R10),R3& INDEX R3, #0, #31, #DSC$C_D_BLN+10, - #0, R2; INDEX R3, #0, #31, #4, #0, R3 PUSHL EXCEPT_W_WILDCARD(R10) PUSHL EXCEPT_L_OPTIONS(R10)! PUSHL EXCEPT_L_STOP_PROCESS(R10) PUSHL EXCEPT_L_START_MSG(R10) PUSHAQ EXCEPT_Q_DESCRIPTOR(R10) MOVL DBGEXC_EXCEPT_TYPE[R3], R8 CMPL R8, #DBGEXC_EXC_DECIMAL BNEQ 20$$ MOVL EXCEPT_Q_DESCRIPTOR(R10), (SP)20$: PUSHAB DBGEXC_RECORD_TYPES[R2] PUSHAQ DBGEXC_OUTPUT_PDESC PUSHAQ DBGEXC_OUTPUT_DESC PUSHL R8 CALLS #9, G^SYS$FAO CHECK PUSHAQ DBGEXC_OUTPUT_DESC CALLS #1, G^LIB$PUT_OUTPUT CHECK ADDL2 #EXCEPT_C_BLN, R10 SOBGTR R6, 10$$30$: POPR #^M JMP DUMP_EXCEPTIONS_END .RESTORE_PSECTDUMP_EXCEPTIONS_END: .ENDM DUMP_EXCEPTIONSwwwS .MACRO DUMP_PSB JMP DUMP_PSB .SAVE_PSECT PSBDEF $JIBDEF READONLY_PSECT DEBUG_STRINGSDBGPSB_PSB_STRING:? .ASCID 'IPID !8XL EPID !8XL RIGHTSLIST !8XL TERMINAL !#AC