ASMB,Q,C HED ACCESS TO 3000 LOGGING * (C) HEWLETT-PACKARD CO. NAM LOG3K,19,80 91750-16132 REV.2013 790508 MEF SPC 1 ****************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT* * * THE PRIOR WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. * ****************************************************************** SPC 2 UNL NEXT 5 LINES ARE FOR PRODUCTION ENGINEERING * NAME: LOG3K *SOURCE: 91750-18132 * RELOC: 91750-16132 * PGMR: DMT LST ************************** LOG3K ************************* * * * SOURCE: 91750-18132 * * * * BINARY: 91750-16132 * * * * PROGRAMMER: DAVE TRIBBY * * * * OCTOBER 13, 1978 * * * ************************************************************** SPC 1 * * DS/1000 PROGRAM TO PROVIDE OPERATOR ACCESS TO 3000 LOGGING. * EXT $OPSY,IFTTY,SPOPN,#CL3K,#LU3K,#FWAM,PGMAD EXT EXEC,CNUMD,REIO,LOGLU,NAMR,.DFER,LUTRU * A EQU 0 A-REGISTER B EQU 1 B-REGISTER SUP SKP LOG3K LDA $OPSY CHECK FOR OPERATING RAR,SLA SYSTEM TYPE. JMP XLABI LDA B,I NON-DMS LOAD. JMP CHKPR XLABI XLA B,I DMS LOAD. SPC 1 * * WHAT IS THE CONSOLE LU? * CHKPR SZA,RSS IF FIRST PARAM IS 0, JMP SETLU SET TO LOGLU. IOR B600 SET ECHO AND COL 1 BITS. STA CONSL STORE CONSOLE LU. JMP PRHED * SETLU JSB LOGLU GET CONSOLE LU DEF *+2 OF SCHEDULER. DEF TEMP IOR B600 SET ECHO AND COL 1 BITS. STA CONSL STORE AS CONSOLE LU. SPC 1 * PRINT CURRENT STATUS INFORMATION. PRHED JSB PRINT PRINT DEF HEAD1 FIRST DEC 14 HEADING. * LDA #FWAM IF NO SAM SZA,RSS ALLOCATED, JMP NOTEN NOT ENABLED! * LDA #LU3K IF NO SZA,RSS 3000 LU, JMP NOTEN NOT ENABLED! * DLD ".LU" MOVE " LU " TO DST LUINF+2 LU INFORMATION. LDA D4 LENGTH IS 4. STA LULEN * LDA #CL3K IF NO SZA LOGGING LU, JMP CHKCL JSB .DFER MOVE "" DEF LUINF+4 DEF NONE * JSB PRINT PRINT IT. DEF LUINF DEC 7 JMP CHKIN GO CHECK FOR INPUT. * CHKCL AND BIT13 IF I/O CLASS BIT SZA,RSS IS SET, JMP GETLU * JSB .DFER (BIT IS SET...) DEF LUINF+2 MOVE "CLASS" DEF CLASS LDA BLNKS STA LUINF+5 LDA D6 STA LULEN * GETLU LDA LULEN ADA @LUIN ADD STARTING ADDR STA ADDR TO LENGTH. LDA #CL3K AND B377 ISOLATE LU OR CLASS. STA TEMP JSB CNUMD CONVERT DEF *+3 TO DEF TEMP ASCII DEF ASCII (DECIMAL). * DLD ASCII+1 PICK UP RESULT. RRL 8 ROTATE LEFT 1 BYTE. DST ADDR,I STORE. * LDA LULEN ADD 2 TO LENGTH. ADA D2 STA LULEN * LDA #CL3K+2 IF FILE NAME SZA,RSS IS IN RES, JMP DOWN? JSB .DFER MOVE IT DEF LUINF+6 INTO DEF PFILE BUFFER. JSB .DFER DEF LUINF+9 DEF #CL3K+2 LDA PARN STA LUINF+12 LDA D13 LENGTH IS STA LULEN NOW 13. SPC 1 DOWN? LDA #CL3K IF SIGN BIT SSA,RSS IS SET, JMP PRLU LDA @LUIN POINT TO ADA LULEN NEXT BUFFER STA TEMP WORD. DLD DOWN MOVE "DOWN" DST TEMP,I TO BUFFER. LDA LULEN ADD 2 ADA D2 TO LENGTH. STA LULEN SPC 1 PRLU JSB PRINT PRINT DEF LUINF LU LULEN NOP INFORMATION. SPC 1 CLA SET LOGGING LENGTH STA LGLEN TO ZERO. LDB @LGIN SET DEST. ADDR. IN CASE OF NO BUF. LDA #CL3K+1 BUFFERS BEING TRACED? SSA,RSS JMP DRVR? NO. CHECK FOR DRIVER. * LDB @HEDR SET UP MOVE STB MPNTR POINTER. LDB D4 SET LENGTH STB LGLEN TO 4. * RAL POSITION BIT 14. SSA,RSS APPENDAGE BIT SET? JMP MOVLG NO. GO MOVE MESSAGE. LDB @APND SET UP MOVE STB MPNTR POINTER. ISZ LGLEN SET LENGTH TO 5. * LDA #CL3K+1 GET MAX DATA LENGTH AND LENBT FROM BITS 0-12. SZA,RSS IF ZERO, JMP MOVLG GO MOVE MESSAGE. STA TEMP SAVE LENGTH. JSB CNUMD CONVERT DEF *+3 TO DEF TEMP ASCII DEF ASCII (DECIMAL). DLD ASCII+1 DST WRDDT LDA D8 SET MOVE STA LGLEN LEN TO 8. LDA @WRDT SOURCE ADDRESS. RSS READY TO MOVE. * MOVLG LDA MPNTR SOURCE ADDRESS. LDB @LGIN DESTINATION. MVW LGLEN MOVE LOGGING MESSAGE. * LDA #CL3K+1 CHECK DRIVER AND BIT13 BIT. SZA,RSS JMP PRLOG NOT SET. GO PRINT. LDA @&DVR SET. MOVE " AND MVW D6 DRIVER". LDA LGLEN INCREMENT ADA D6 LENGTH BY STA LGLEN SIX. * PRLOG LDA LGLEN CALCULATE TOTAL ADA D4 MESSAGE LENGTH. STA LGLEN JSB PRINT PRINT DEF LGINF LOGGING LGLEN NOP INFORMATION. * JMP CHKIN GO CHECK FOR INPUT. SPC 3 * CHECK TO SEE IF DRIVER IS BEING LOGGED. DRVR? LDA #CL3K+1 DRIVER BIT SET? AND BIT13 SZA JMP DRVR! YES. GO MOVE "DRIVER". * LDA @NOTH MOVE "NOTHING". RSS * DRVR! LDA @DRVR MOVE "DRIVER" LDB @LGIN DESTINATION ADDRESS. MVW D4 MOVE MESSAGE. LDA D4 LENGTH STA LGLEN IS 4. JMP PRLOG GO PRINT. SPC 5 ** ENTER HERE WHEN NODE IS NOT ENABLED FOR 3000 COMMUNICATIONS ** * NOTEN JSB PRINT PRINT DEF NTENL MESSAGE. DEC 10 JMP DONE TERMINATE. * NTENL ASC 10, HP 3000 NOT ENABLED SKP CHKIN JSB IFTTY CHECK CONSOLE DEF *+2 TO SEE IF IT'S DEF CONSL INTERACTIVE. SSA,RSS IF NOT, JMP DONE ALL DONE. SPC 2 JSB PRINT ASK: DEF CHNG? "CHANGES?". D6 DEC 6 * JSB READ READ REPLY. SPC 1 LDA NAME GET COMMAND. CPA "LU" LU? JMP GTLU YES. CPA "FI" FI? JMP GETFI YES. CPA "TY" TY? JMP GETTY YES. CPA "UP" UP? JMP UP YES. CPA "/E" /E? JMP DONE YES. CPA "EX" EX? JMP DONE YES. CPA "NO" NO? JMP DONE YES. CPA "EN" EN? JMP DONE YES. CPA "??" ??? JMP XPLAN YES. * * COMMAND NOT RECOGNIZED. PRINT ERROR MESSAGE. * PRERR JSB PRINT DEF ERMSG DEC 19 JMP CHKIN TRY AGAIN. * ERMSG ASC 19, UNRECOGNIZED. TYPE "??" FOR COMMANDS. SPC 1 * PRINT FINAL MESSAGE AND TERMINATE DONE JSB PRINT PRINT DEF ENMSG ENDING DEC 5 MESSAGE. JSB EXEC ALL DONE--TERMINATE. DEF *+2 DEF D6 SKP * GET NEW LOGGING LU. * GTLU JSB PNAMR PARSE AHEAD. LDA STATS IF NUMERIC PARAM PROVIDED, AND D3 CPA D1 DON'T NEED TO PROMPT. JMP GTLU1 * JSB PRINT PROMPT FOR NEW LU. DEF NEWLU DEC 6 JSB READ READ. GTLU1 LDA NAME GET RESPONSE. CPA "/E" IF "/E" JMP CHKIN PROMPT AGAIN. AND HB377 IF > 255, SZA JMP INVAL INVALID. * JSB CLOLD CLEAR OLD ENTRY. JSB LUTRU GET "REAL" LU NUMBER DEF *+2 SINCE QUEX RUNS DEF NAME OUTSIDE OF SESSION. SSA IF ERROR, JMP INVAL IT'S INVALID. STA #CL3K SET NEW LU. JMP PRHED PRINT NEW STATUS. SPC 3 INVAL JSB PRINT PRINT DEF INVMS INVALID DEC 7 MESSAGE. JMP CHKIN GET NEW COMMAND. * INVMS ASC 7, INVALID VALUE SKP * GET NEW FILE NAME--ONLY FOR SPOOLED SYSTEMS. GETFI JSB PGMAD IS SMP DEF *+2 IN SYSTEM? DEF "SMP" SZA,RSS JMP NOSMP NO. TELL USER. JSB PNAMR PARSE AHEAD. LDA NAME IF INFO GIVEN, SZA DON'T NEED TO PROMPT. JMP GTFI1 JSB PRINT PROMPT FOR DEF NEWFI FILE NAME. DEC 7 JSB READ READ. LDA NAME GET RESPONSE. CPA "/E" IF "/E", JMP CHKIN PROMPT AGAIN. * GTFI1 JSB CLOLD CLEAR OLD ENTRY. * JSB .DFER MOVE DEF SPNAM SPOOL DEF NAME FILE NAME. DLD SECU SET SECURITY AND DST SPSEC CARTRIDGE NUMBER. JSB SPOPN OPEN THE SPOOL LU. DEF *+3 DEF SPBUF DEF SPLU * LDA SPLU GET LU #. SSA NEGATIVE? JMP RPTER REPORT SPOOL ERROR. * JSB LUTRU GET "REAL" LU NUMBER DEF *+2 SINCE QUEX RUNS DEF SPLU OUTSIDE OF SESSION. * STA #CL3K SET LU # IN SSGA. JSB .DFER MOVE FILE DEF #CL3K+2 NAME TOO. DEF NAME LDA NAME+2 STA #CL3K+4 JMP PRHED PRINT NEW STATUS. SPC 1 * REPORT SPOPN ERROR RPTER CMA,INA MAKE POSITIVE. STA TEMP SAVE ERROR. JSB CNUMD CONVERT DEF *+3 TO DEF TEMP ASCII DEF ASCII (DECIMAL). DLD ASCII+1 MOVE TO DST SMPER+7 MESSAGE. JSB PRINT PRINT DEF SMPER MESSAGE. DEC 9 JMP CHKIN READ AGAIN. * SMPER ASC 9,***SMP ERROR -XXXX SPC 1 * SMP NOT PRESENT. NOSMP JSB PRINT PRINT DEF ERRSP MESSAGE. D8 DEC 8 JMP CHKIN READ AGAIN. * ERRSP ASC 8,SORRY, NO SPOOL SPC 2 * SPOOL SET-UP BUFFER SPBUF DEC 0 NO BATCH INPUT CHECKING NOP SPNAM ASC 3, SPOOL FILE NAME SPSEC BSS 2 SECURITY, CARTRIDGE OCT 23 DEVICE TYPE=MAG TAPE OCT 23 DISPOSITION DEC 0,0,0,0,0,0,0 * SPLU NOP SPOOL LU (RETURNED BY SPOPN) SKP * GET NEW TRACE TYPE GETTY JSB PNAMR PARSE AHEAD. LDB NAME IF INFO GIVEN, SZB NO NEED TO PROMPT. JMP GTTY1 * JSB PRINT PROMPT FOR NEW TYPE. DEF NEWTY DEC 9 JSB READ READ. LDB NAME GET RESPONSE. CPB "/E" IF "/E", JMP CHKIN PROMPT AGAIN. * GTTY1 CLA CLEAR OPTIONS. CPB "DA" DATA? JMP SDATA YES. CPB "AP" APPENDAGE? JMP SAPND YES. CPB "HE" HEADER? JMP SHEAD YES. CPB "DR" DRIVER? JMP SETDR YES. CPB "NO" NONE? JMP STOPT YES. JMP PRERR UNRECOGNIZED. PROMPT AGAIN. * * SET VARIOUS OPTIONS. SDATA LDA SECU GET NAMR PARAMETER. AND LENBT MAKE SURE IT FITS IN BITS 0-12. * SAPND IOR BIT14 SET APPENDAGE BIT. * SHEAD IOR BIT15 SET HEADER BIT. * STA TEMP HOLD OPTIONS. JSB PNAMR PARSE AHEAD. LDA TEMP RESTORE OPTIONS. * LDB NAME GET SECOND OPTION. CPB "DR" DRIVER? SETDR IOR BIT13 YES. SET BIT 13. * STOPT STA #CL3K+1 STORE NEW OPTIONS. JMP PRHED PRINT NEW STATUS. SKP * REMOVE "DOWN" BIT FROM LU. UP LDA #CL3K PICK UP LU. AND NOT15 REMOVE SIGN. STA #CL3K STORE. JMP PRHED PRINT NEW STATUS. SPC 3 * EXPLAIN LOG3K FUNCTIONS XPLAN JSB PRINT DEF EXPLN ABS ENDXP-EXPLN JMP CHKIN PROMPT AGAIN. * EXPLN ASC 27,LOG3K SETS UP FIVE WORDS IN SUBSYSTEM GLOBAL WHICH ARE ASC 10, USED BY THE HP3000 BYT 15,12 ASC 27,COMMUNICATIONS MODULE QUEX. THESE WORDS INDICATE WHAT ASC 07,TRACING SHOULD BYT 15,12 ASC 28,TAKE PLACE FOR COMMUNICATIONS BUFFERS AND WHETHER DRIVER ASC 09, FUNCTIONS SHOULD BYT 15,12 ASC 27,BE RECORDED. LOG3K REPORTS CURRENT OPTIONS AND ALLOWS ASC 10,YOU TO CHANGE THEM. BYT 15,12 BYT 15,12 ASC 09,POSSIBLE CHANGES: BYT 15,12 ASC 15, LU NEW LOG LOGICAL UNIT BYT 15,12 ASC 21, FI NEW LOG FILE (SPOOL SYSTEM ONLY) BYT 15,12 ASC 17, UP RESET LOG LU TO BE "UP" BYT 15,12 ASC 13, TY NEW LOGGING TYPE BYT 15,12 BYT 15,12 ASC 12,POSSIBLE LOGGING TYPES: BYT 15,12 ASC 09, NO NOTHING BYT 15,12 ASC 17, HE COMM. BUFFER HEADER ONLY BYT 15,12 ASC 15, AP HEADER AND APPENDAGE BYT 15,12 ASC 23, DA:n HEADER, APPENDAGE, AND n WORDS DATA BYT 15,12 ASC 28, DR DRIVER EVENTS AND STATES (MAY BE SECOND OPTN) BYT 15,12 ASC 26,EXAMPLE-- DA:50,DR TRACES 50 WORDS DATA AND DRIVER. BYT 15,12 ENDXP EQU * SKP * * SUBROUTINE TO PRINT A RECORD ON CONSOLE. * CALLING SEQUENCE: JSB PRINT * DEF * DEC * PRINT NOP ENTRY POINT LDA PRINT,I PICK STA MSG UP ISZ PRINT PARAMETERS. LDA PRINT STA MSLEN ISZ PRINT SET RETURN ADDR. JSB REIO CALL REIO FOR WRITE. DEF *+5 DEF SD2 DEF CONSL MSG NOP MSLEN NOP NOP IGNORE ERRORS. JMP PRINT,I RETURN. SPC 3 * * SUBROUTINE TO READ FROM CONSOLE AND PARSE INPUT. * CALLING SEQUENCE: JSB READ * READ NOP ENTRY. JSB REIO DO READ. DEF *+5 DEF SD1 DEF CONSL DEF INBUF DEF N80 JMP DONE TERMINATE UPON ERROR. STB RDLEN SAVE # OF CHARACTERS. CLA,INA SET POINTER TO STA PNTR FIRST CHARACTER. JSB PNAMR PARSE. JMP READ,I RETURN. SKP * SUBROUTINE TO CALL NAMR PARSE ROUTINE * CALLING SEQUENCE: * JSB PNAMR * PNAMR NOP ENTRY POINT JSB NAMR CALL DEF *+5 NAMR DEF NAME ROUTINE. DEF INBUF DEF RDLEN DEF PNTR JMP PNAMR,I RETURN. SPC 2 * RTE FILE NAMR PARAMETERS NAME BSS 3 STATS BSS 1 SECU BSS 1 CRN BSS 5 SPC 1 INBUF BSS 40 RDLEN NOP SPC 1 PNTR NOP COLUMN POINTER SKP * SUBROUTINE TO CLEAR OLD ENTRY IN SSGA. * CALLING SEQUENCE: JSB CLOLD * CLOLD NOP ENTRY POINT. LDA #CL3K+3 SPOOLED LU? SZA,RSS JMP CLCLS LDA #CL3K YES. AND NOT15 SAVE LU NUMBER. STA TEMP * * IF RUNNING UNDER SESSION, FIND THE SESSION LU WHICH MATCHES THE * "TRUE" LU THAT WAS RECORDED IN #CL3K. * LDA D63 START AT 63. STSLU STA TESTL SET THE TEST LU. SZA,RSS IF DOWN TO 0, JMP NTFND NOT FOUND! JSB LUTRU COMPARE TEST LU'S DEF *+2 "TRUE" LU TO DEF TESTL THE SPOOL LU. CPA TEMP IS THIS IT? JMP FOUND YES! CCA NO DECREMENT ADA TESTL AND TRY AGAIN. JMP STSLU * FOUND JSB EXEC TELL SMP DEF *+5 TO RELEASE. DEF SD23 DEF "SMP" DEF D4 DEF TESTL NOP (ERROR RETURN.) * CLFIL CLA CLEAR STA #CL3K+2 FILENAME STA #CL3K+3 IN SSGA. STA #CL3K+4 JMP CLOLD,I RETURN. * * * THE SPOOL LU WAS NOT FOUND IN THE SESSION SWITCH TABLE. WARN USER, * BUT GO AHEAD AND CLEAR SSGA WORDS. USER SHOULD RUN GASP AND RELEASE * THE SPOOL FILE. * NTFND JSB PRINT PRINT DEF SPWRN WARNING. DEC 15 JMP CLFIL GO CLEAR FILE NAME. SPWRN ASC 15,SPOOL NOT SET BY THIS SESSION * * CLCLS LDA #CL3K IF LOGGING IS NOT AND BIT13 TO AN I/O CLASS, SZA,RSS JMP CLOLD,I RETURN. * LDA #CL3K SET NO-WAIT IOR BIT15 BIT IN CLASS #. STA CLASN * DEFLU CCA STA TEMP SET RELEASE RETRY SWITCH TO -1. CLRTN JSB EXEC RELEASE CLASS NUMBER. DEF *+5 DEF SD21 SPECIFY CLASS GET - NO ABORT. DEF CLASN CLASS/RELEASE/NO WAIT. DEF D0 DEF D0 RSS ERROR RETURN. ISZ TEMP RELEASE PROCESSING COMPLETED? JMP CLOLD,I YES. RETURN. INA,SZA NO. ARE ALL PENDING REQUESTS CLEARED? JMP DEFLU NO. CONTINUE TO CLEAR REQUESTS. * LDA CLASN GET THE CLASS NUMBER AGAIN. XOR BIT13 EXCLUDE THE NO-DEALLOC BIT (13). STA CLASN JMP CLRTN RETURN FOR FINAL DEALLOCATION. SKP ** CONSTANTS ** SPC 1 D0 DEC 0 D1 DEC 1 D2 DEC 2 D3 DEC 3 D4 DEC 4 D13 DEC 13 D63 DEC 63 SD1 DEF 1,I SD2 DEF 2,I SD21 DEF 21,I SD23 DEF 23,I N80 DEC -80 B377 OCT 377 HB377 BYT 377,0 B600 OCT 600 BIT13 OCT 20000 BIT14 OCT 40000 BIT15 OCT 100000 LENBT OCT 17777 NOT15 OCT 77777 SPC 2 HEAD1 ASC 14,DS/1000-3000 LOGGING STATUS LUINF ASC 16, LOG LU LGINF ASC 18, LOGGING CHNG? BYT 15,12 , ASC 5,CHANGES? _* NEWLU ASC 6,NEW LOG LU:_* NEWFI ASC 7,NEW LOG FILE:_* NEWTY ASC 9,NEW LOGGING TYPE:_* ENMSG ASC 5,END LOG3K HEADR ASC 4, HEADER APNDG ASC 5, APPENDAGE WRDDT ASC 8, WORDS DATA * KEEP &DVR AND DRIVR TOGETHER! &DVR ASC 2, AND DRIVR ASC 4, DRIVER NOTHG ASC 4, NOTHING PFILE ASC 3,(FILE NONE ASC 3, DOWN ASC 2,DOWN PARN ASC 1,) "LU" ASC 1,LU "FI" ASC 1,FI "TY" ASC 1,TY "/E" ASC 1,/E "EX" ASC 1,EX "EN" ASC 1,EN "NO" ASC 1,NO "??" ASC 1,?? "HE" ASC 1,HE "AP" ASC 1,AP "DA" ASC 1,DA "DR" ASC 1,DR "UP" ASC 1,UP "SMP" ASC 3,SMP ".LU" ASC 2, LU CLASS ASC 3, CLASS BLNKS EQU WRDDT SPC 1 @LUIN DEF LUINF @LGIN DEF LGINF+4 @HEDR DEF HEADR @APND DEF APNDG @WRDT DEF WRDDT @&DVR DEF &DVR @DRVR DEF DRIVR @NOTH DEF NOTHG SPC 1 CONSL NOP ADDR NOP CLASN NOP TEMP NOP TESTL NOP MPNTR NOP ASCII BSS 3 SPC 1 BSS 0 SIZE OF LOG3K. SPC 1 END LOG3K