ASMB,R,L,C NAM PSMON,3,2 24999-16224 REV. 1902 11-10-78 * * ****************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT* * * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * ****************************************************************** * SPC 1 * * NAME: PSMON * SOURCE: 24999-18224 * RELOC: 24999-16224 * PGMR: LYLE WEIMAN NOV 1978 * * PURPOSE: PROVIDES "PASSIVE MONITOR" CAPABILITY FOR DS/1000 * HARDWIRE LINKS. * * REQUIREMENTS: * * 1) SEPARATE COMPUTER * * 2) TWO HP 12665 INTERFACE CARDS (IN ADDITION TO * THOSE USED TO CONNECT THE COMPUTER TO A DS/1000 * NETWORK, IF ANY) * * 3) CONNECTING CABLES MODIFIED FOR PASSIVE MONITORING. * * 4) AN RTE OPERATING SYSTEM (MAY BE RTE-M) * WITH DS/1000 SOFTWARE GENERATED IN. * * * * TO USE: * * 1) INSTALL TWO INTERFACE CARDS IN THE COMPUTER AND HOOK THEM UP TO * THE LINE TO BE TRACED WITH A CABLE MODIFIED TO PROVIDE PASSIVE * MONITORING. * * 2) EDIT THE SOURCE, SPECIFYING THE SELECT CODES FOR THE TWO * INTERFACE CARDS AS THE DEFINITIONS FOR "XMTIF" AND "RCVIF". * ALL DATA TAKEN FROM THE INTERFACE IN THE "XMTIF" SELECT CODE * WILL BE CONSIDERED AS "TRANSMIT" DATA. ALL DATA FROM THE * "RCVIF" SELECT CODE WILL BE CONSIDERED AS "RECEIVE" DATA. * BE SURE TO WRITE DOWN WHICH IS WHICH SO YOU CAN DETERMINE * DATA DIRECTION FROM THE PRINTOUT. * * 3) RE-ASSEMBLE THE SOURCE AND LOAD THE PROGRAM IN THE COMPUTER * TO BE USED FOR MONITORING. * * 4) SCHEDULE THE PROGRAM: * * *ON,PSMON,[LUTTY[,LUPRIN[,NODE#[,MODE[,#POINTS]]]]] * * LUTTY = LU OF OPERATOR CONSOLE(MUST BE CAPABLE OF INPUT & OUTPUT) * AT LOCAL NODE. * USED FOR DIALOG AND ERROR MESSAGES. * DEFAULT IS YOUR TERMINAL (MTM ENVIRONMENT), ELSE 1 * * NOTE: SPECIAL FEATURES ARE INVOKED IF THE TERMINAL IS DRIVEN * USING DVR05 OR DVR07: * * 1) EACH LINE WHICH IS 'RECEIVED' (AS OPPOSED TO 'TRANSMITTED') IS * DISPLAYED IN INVERSE VIDEO. * * 2) ABNORMAL PROTOCOL INDICATIONS ('RLM', 'RLW', 'STOP') ARE * HIGHLIGHTED: 'RLM' & 'RLW' ARE UNDERLINED, 'STOP' IS SHOWN * BLINKING. REQUIRES OPTIONAL MODULES SUPPORTING THESE * FUNCTIONS BE INSTALLED IN THE 264X TERMINAL USED. * * * LUPRIN= LU FOR PRINTING TRACE TABLE IF NOT THE SAME AS * AT REMOTE OR LOCAL NODE. * USEFUL WHEN HARDCOPY LOG IS DESIRED. * DEFAULT IS LUTTY. * * NOTE: IF LUPRIN = 2, THEN ALL TRACE RECORDS WILL BE * RECORDED IN THEIR "RAW" FORM, EITHER ON A DISC FILE * OR A REMOTE DEVICE, SUCH AS A TAPE. THE PROGRAM WILL * ASK FOR THE FILE PARAMETERS; ENTER THE NAME * OF THE FILE, SECURITY CODE, ETC., OR THE LU OF THE * REMOTE DEVICE. WHEN OUTPUTTING RAW DATA TO A DISC FILE, * THE FILE IS NORMALLY ASSUMED TO BE CIRCULAR: * OLD INFORMATION IS OVERWRITTEN BY NEW, THE * NUMBER OF "FRESH" TRACE RECORDS BEING DETERMINED BY * THE SIZE OF THE FILE. * WHEN OUTPUTTING TO A REMOTE DEVICE, SUCH AS A MAG * TAPE, ALL DATA IS RECORDED. * * * SYNTAX IS: FILNAM : SC : CR : :# RECORDS FOR FILE * OR * * * TO OBTAIN A FORMATTED PRINTOUT OF THIS INFORMATION, * SIMPLY SET THE 'BREAK' FLAG SO THE PROGRAM WILL * CLOSE THE FILE, THEN RE-RUN IT, SPECIFYING THE FILE * NAME OR DEVICE LU IN RESPONSE TO THE QUESTION, * "FILE OR DEVICE TO GET 'TRACE' DATA?" * * NOTE: IF DISC FILES ARE NOT GOING TO BE USED, YOU * DO NOT NEED TO LOAD THE PROGRAM WITH THE FMP ROUTINES * (CREAT, OPEN, CLOSE, READF, ETC.), AND MAY * IGNORE THESE UNDEFINED SYMBOLS AT LOAD TIME. * * * * = REMOTE NODE NUMBER FOR PRINTOUT (ALLOWS YOU TO USE * A COMPUTER WITHOUT AN OUTPUT DEVICE OF ITS OWN). * DEFAULT IS LOCAL NODE. * IF LUPRIN = 2 THEN DATA LOGGING IS DONE LOCALLY, AND * THIS PARAMETER HAS NO EFFECT. * * : BIT MASK * BITS 0 : NOT USED * 1=0:(DEFAULT) CAUSES PRINTOUT OR LOGGING OF ALL DATA * GATHERED. * * =1: CAUSES PROGRAM TO IGNORE ALL DATA BUFFERS WHICH * CONTAIN NO ABNORMAL PROTOCOL WORDS. * ('STOP', 'RLM', 'RLW') * * * BIT 2: USED ONLY WHEN 'TRACE' DATA IS BEING LOGGED TO A DISC FILE. * = 0 CAUSES PROGRAM TO REWIND FILE AUTOMATICALLY WHEN LAST RECORD * HAS BEEN WRITTEN. NEW DATA OVERLAYS OLD. THE MESSAGE * "/PSMON:REWINDING FILE" IS PRINTED AFTER THE FIRST TIME * TO INFORM YOU THAT THE DATA IN THE FILE IS NOW VALID. * * = 1 CAUSES PROGRAM TO TERMINATE AS SOON AS THE LAST RECORD HAS * BEEN WRITTEN (ACTUALLY, WHEN THE ATTEMPT IS MADE TO WRITE * THE NEXT ONE AFTER THAT). THE FILE IS CLOSED AND THE * TERMINATION MESSAGE IS PRINTED. * * <#POINTS> = NUMBER OF DATA POINTS TO LOG. MAXIMUM ALLOWABLE VALUE, * AND ALSO THE DEFAULT, IS 2048 POINTS. * * * 5) THE PROGRAM WILL WAIT FOR ACTIVITY ON THE COMMUNICATION LINK * WITH THE INTERRUPT SYSTEM OFF. USE 'REMAT' TO CREATE SUCH * ACTIVITY. IT IS ADVISABLE TO USE A TRANSFER FILE CONTAINING * A LARGE NUMBER OF "TI" COMMANDS FOR THE SIMPLE REASON THAT * THE DATA WILL BE FAR TOO VOLUMINOUS OTHERWISE. * * AT ANY TIME, YOU MAY BRING IT OUT OF ITS "WAITING FOR DATA" LOOP * BY SETTING THE SIGN BIT IN THE SWITCH REGISTER. FOR YOUR OWN * INFORMATION, THE PROGRAM DISPLAYS ITS INTERNAL "PSEUDO-CLOCK" * IN BITS 14 THRU 0 OF THE SWITCH REGISTER WHILE IT IS WAITING. * SKP ************************************************************************** * CAVEATS CAVEATS CAVEATS CAVEATS CAVEATS CAVEATS CAVEATS * * CAVEATS CAVEATS CAVEATS CAVEATS CAVEATS CAVEATS CAVEATS * * * * WHEN GATHERING "LIVE" DATA (I.E., NOT TAKING DATA FROM A DISC * * FILE), THIS PROGRAM TURNS NORMAL RTE INTERRUPT PROCESSING OFF!! * * * * THIS MEANS THAT THE SYSTEM TIME-KEEPING AND OTHER REAL-TIME * * ACTIVITIES CEASE DURING THIS PERIOD. YOU **MUST** BE SURE THAT * * NO OTHER CRITICAL ACTIVITIES EXIST BEFORE USING THIS PROGRAM, * * AND YOU MAY WISH TO RE-SET THE SYSTEM TIME-OF-DAY AFTERWARDS * * (BE SURE TO RE-SCHEDULE ALL PROGRAMS IN THE TIME LIST WHOSE * * "TIME OF NEXT SCHEDULE" HAS BEEN PASSED OVER. YOU CAN * * FIND OUT WHICH ONES THESE ARE FROM A 'WHZAT' PRINTOUT). * * * * DURING THE PRINTOUT PHASE, NORMAL RTE INTERRUPT PROCESSING IS * * RESTORED AND THE SYSTEM BECOMES AN RTE AGAIN. * * * ************************************************************************** SKP * YOU WILL BE ASKED TO SPECIFY THE DATA SOURCE. ACCEPTABLE * RESPONSES ARE: * * 1) FILE ---THE NAME OF A DATA FILE IN WHICH DATA WAS LOGGED * DURING SOME PREVIOUS RUN. THE CARTRIDGE REFERENCE NUMBER * AND SECURITY CODE MAY BE SPECIFIED IN THE USUAL WAY. * * 2) THE LOGICAL UNIT OF SOME DEVICE, TYPICALLY A * MAG TAPE OR MINI-CARTRIDGE, ON WHICH DATA WAS LOGGED * DURING SOME PREVIOUS RUN. THE PROGRAM WILL CONTINUE * TO READ UNTIL AN EOF OR EOT CONDITION OR SOME * OTHER MAG TAPE-RELATED ERROR CONDITION IS SET. * * 3) BLANKS--THE PROGRAM WILL TAKE DATA "LIVE", I.E., DIRECTLY * FROM THE PASSIVE-MONITOR INTERFACE CARDS. * * * TO TERMINATE THIS PROGRAM WHILE IT IS PRINTING, SET THE "BREAK" * FLAG. TO TERMINATE IT WHILE IT IS GATHERING DATA (NON-PRIVILEGED * INTERRUPTS ARE OFF), SET THE SIGN BIT IN THE SWITCH REGISTER. * * * * THE PRINT FORMAT SHOWN BELOW IS ACTUALLY REPEATED TWICE PER LINE: * *

* * WHERE= 'X' IF WORD WAS TRANSMITTED * = 'R' IF WORD WAS RECEIVED. * *

= MNEMONIC IF DATA WORD MATCHES ONE OF THE * PROTOCOL WORDS. NOTE: SINCE DATA IS * TRANSMITTED TRANSPARENTLY OVER THESE LINKS, * OCCASIONAL "MATCHES" TO PROTOCOL WORDS MAY * APPEAR. YOU WILL HAVE TO STUDY THE * ACTIVITY SURROUNDING THE "MATCH" TO DETERMINE * IF IT IS, INDEED, VALID. * MNEMONICS: * RC TNW RLM RLW STOP * IF NOT A MATCH TO ABOVE, THEN BLANKS ARE USED. * * = PROTOCOL WORD IN OCTAL. * * = A PSEUDO-"CLOCK" NUMBER WHICH IS * INCREMENTED AFTER CHECKING THE TWO INTERFACE * CARDS FOR DATA. * THIS PROVIDES SOME INDICATION OF ELAPSED * TIME. * EACH TICK REPRESENTS ABOUT TWENTY * MICROSECONDS OR SO, DEPENDING ON WHETHER * DATA WAS AVAILABLE IN THIS "PASS" FOR * THE "RECEIVE" OR "TRANSMIT" PATH OR BOTH. * * * NOTE: TO ANALYZE ANY PARTICULAR SEQUENCE, ONE MUST BE FAMILIAR WITH * THE LINE PROTOCOL (SEE NETWORK MANAGER'S MANUAL FOR DETAILS). * * TO CHANGE THE SIZE OF THE TRACE BUFFER, CHANGE '.SIZE'. * IT MUST BE A POWER OF TWO. SKP * * * THE "TRACE" BUFFER FORMAT IS: * * BUFFER: 1ST DATA WORD OBSERVED * BUFFER+1: * BUFFER+2:2ND DATA WORD OBSERVED * " 3: * . . * ETC. * * = "TRANSMIT" LINE OR "RECEIVE" LINE FLAG, * CODED 0/1, AND STORED IN BIT 15. * = 15-BIT UNSIGNED INTEGER PSEUDO-"CLOCK" VALUE * REPRESENTING THE TIME AT WHICH THE DATA WAS AVAILABLE. * RCVIF EQU 16B "RECEIVE" LINE INTERFACE SELECT CODE XMTIF EQU 17B "TRANSMIT" LINE INTERFACE SELECT CODE * EXT $LIBR,$LIBX,EXEC,CNUMD,CNUMO EXT CREAT,OPEN,CLOSE,READF,WRITF,RWNDF EXT EXEC,POSNT,KCVT EXT NAMR EXT IFBRK EXT RMPAR,DEXEC SUP SKP PSMON EQU * PRIMARY ENTRY POINT JSB RMPAR DEF *+2 DEF PRAMS CLB CLEAR FLAGS AND COUNTERS STB NPASS PASS COUNTER STB INFIL DATA TO BE OBTAINED "LIVE" STB RWFLG HAVEN'T PRINTED "REWIND" MESSAGE STB WRFIL NOT LOGGING DATA INTO A FILE STB INLUF WE'RE NOT INPUTTING FROM AN LU STB DCB WE HAVE NO FILES OPEN. * JSB RESET SET UP ALL BUFFER POINTERS LDA LUTTY IS A CONSOLE SZA,RSS LU SPECIFIED? CLA,INA NO, DEFAULT TO 1 IOR =B400 SET "ECHO" BIT FOR INPUT STA LUTTY LDA NODE# LOAD NODE NUMBER SZA,RSS ZERO? CCA YES, DEFAULT TO LOCAL STA NODE# LDA NPTS LOAD # POINTS AND =B77776 MUST BE EVEN NUMBER! CMA,INA SSA,RSS POSITIVE NUMBER GIVEN? LDA MDFLT NO, LOAD MAXIMUM CMA,INA MAKE POSITIVE AGAIN STA TRACZ SAVE 'TRACE' BUFFER SIZE ADA MDFLT MAKE SURE IT'S CMA,INA SSA,RSS <= MAXIMUM JMP PSM1 LDA MDFLT SET MAXIMUM. CMA,INA STA TRACZ PSM1 EQU * LDA TRACZ WHEN DATA IS LOGGED, A 5-WORD TIME-OF ADA D5 DAY IS INCLUDED. STA FWSIZ LDA LUPRN IS A PRINTOUT LU SZA,RSS SPECIFIED? LDA LUTTY NO, DEFAULT TO LUTTY CPA D2 FILE? JMP GFILE GET FILE NAME IOR B200 SET "HONESTY MODE" BIT STA LUPRN SPC 2 * JSB PRINT PRINT HEADER DEF HED1 DEF HED1L * TRCC2 EQU * JSB EXEC "DATA SOURCE: , LU OR BLANKS DEF *+5 TO TAKE 'LIVE' DATA?" DEF D2 DEF LUTTY DEF MSG1 DEF MSG1L JSB EXEC ASK FOR RESPONSE DEF *+5 DEF D1 DEF LUTTY @BUFR DEF BUFFR DEF M20 STB NCHAR CLA,INA STA NCNTR JSB NAMR PARSE RESPONSE DEF *+5 DEF PBUFR DEF BUFFR DEF NCHAR DEF NCNTR SSA ANY INPUT? JMP EXIT NONE. TERMINATE. LDA PBUFR+3 GET TYPE CODE FOR RESPONSE. AND D3 SZA,RSS DEFAULT? JMP TRC.3 YES CPA D1 NUMERIC? JMP MTAPE YES, GO SET UP TO INPUT FROM A DEVICE. CPA D3 ASCII? JMP MFILE YES. JMP BAD1 INVALID INPUT * TRC.3 EQU * SKP TRC.4 EQU * * SET A FLAG DEPENDING UPON PRINTOUT LU TYPE * JSB DVTYP DETERMINE TYPE OF PRINT DEVICE DEF LUPRN CLA,RSS RETURN HERE: IT'S NOT DV.05 OR DV.07 CCA RETURN HERE: IT'S DV.05 OR DV.07 STA DVFLG SAVE THE FLAG SPC 2 REDTA EQU * JSB IFBRK CHECK OUR "BREAK" FLAG DEF *+1 SSA SET? JMP EXIT YES, EXIT CLB CLEAR ABNORMAL PROTOCOL STB NRLM WORD COUNTERS FOR THIS STB NRLW PASS. STB NSTOP STB NRC STB NPRNT CLEAR # HALF-PRINT LINES CNTR * JSB DEXEC OBTAIN REMOTE-SYSTEM TIME-OF-DAY DEF *+4 DEF NODE# DEF TMCOD DEF TOD NOP * * READ NEXT "TRACE" RECORD * LDA INLUF ARE WE TO GET DATA FROM A TAPE? SZA JMP REDLU YES * LDA INFIL ARE WE GETTING DATA SSA,RSS FROM A FILE? JMP TRC.6 NO, GET IT "LIVE" * * READ DATA FROM THE DISC FILE * LDA FREC GET RECORD NUMBER CMA,INA ADA LREC SSA ALREADY GOTTEN ALL DESIRED RECORDS? JMP EXIT YES ISZ FREC BUMP RECORD COUNTER NOP JSB READF READ "TRACE" BUFFER DEF *+6 DEF DCB DEF ERR @TOD DEF TOD TIME-OF-DAY IMMEDIATELY PRECEDES DATA DEF FWSIZ BUFFER DEF LEN * LDA LEN SET # OBSERVATIONS COUNTER ADA M5 SUBTRACT 5 FOR TIME-OF-DAY STA NOBSV LDA ERR CHECK FOR ERRORS SSA,RSS ERROR? JMP RED.1 NO, GO ON CPA M12 EOF? JMP EXIT YES, WE'RE DONE. JMP FIERR NO, PRINT THE ERROR & TERMINATE. * * HERE TO READ DATA FROM TAPE * REDLU EQU * LDA M5 INITIALIZE # OBSERVATIONS COUNTER STA NOBSV (LESS 5 WORDS FOR TIME-OF-DAY) LDA FWSIZ INITIALIZE # WORDS TO MOVE STA TEMP LDA @TOD INITIALIZE DATA POINTER STA ..RD LDA D512 STA LENGH * RDLUP EQU * JSB DEXEC DEF *+6 DEF NODE# DEF RDCOD DEF INLUF REMOTE LU ..RD NOP BUFFER POINTER DEF LENGH NOP --IGNORE ERRORS -- ADB NOBSV UPDATE # DATA WORDS CNTR STB NOBSV AND =B273 MASK EOF/EOT/ERROR BITS SZA EOF OR EOT OR ERROR? JMP EXIT YES, MUST QUIT NOW. LDA ..RD UPDATE BUFFER POINTER ADA D512 STA ..RD LDA TEMP CMA,INA ADA D512 SSA,RSS ALL DATA READ? JMP RED.1 YES, RESUME MAIN FLOW LDB D512 COMPUTE MINIMUM OF NEW REMAINDER & ADB A 512 CMA,INA MAKE NEW REMAINDER POSITIVE STA TEMP SSB,RSS IS THERE LESS THAN 512 WORDS LEFT TO GO? STB LENGH YES. JMP RDLUP STAY IN LOOP TILL ALL DATA READ * RED.1 EQU * LDA DVFLG IS THIS PRINT DEVICE SSA,RSS A TERMINAL? JMP TRC.7 NO, DON'T DELAY * * GIVE USER A CHANCE TO READ THE PREVIOUS SCREEN FULL * OF OUTPUT BY DELAYING FOR TWO SECONDS. * JSB EXEC DEF *+6 DEF D12 DEF D0 DEF D2 SUSPEND FOR DEF D0 DEF M2 TWO SECONDS JMP TRC.7 NOW GO FORMAT DATA * * READ DATA DIRECTLY FROM THE "TRACE" BUFFER * (I.E., GET IT "LIVE") * TRC.6 EQU * LDA @BUFR INITIALIZE POINTERS STA PNTR ADA TRACZ COMPUTE ADDRESS OF END OF BUFFER STA LAST CLB CLEAR STB CLOCK THE PSEUDO-CLOCK OTB 1 CLEAR SWITCH REGISTER * JSB $LIBR SHUT OFF NORMAL INTERRUPTS PROCESSING NOP AND MEMORY-PROTECT LIA XMTIF CLEAR CARD BY READING IT LIA RCVIF " CLC RCVIF,C CLEAR INTERFACE CARDS BEFORE CLC XMTIF,C BEGINNING * LOOPX EQU * MAIN DATA LOOP SFS RCVIF DOES "RECEIVE" INTERFACE HAVE DATA? JMP XM1 NO, SEE IF "TRANSMIT" INTERFACE DOES. LIA RCVIF YES, LOAD DATA STA PNTR,I STORE IN BUFFER ISZ PNTR BUMP POINTER LDA CLOCK LOAD THE "CLOCK" WORD IOR =B100000 SET "RECEIVE" INDICATOR STA PNTR,I STORE IN BUFFER ISZ PNTR BUMP POINTER * XM1 EQU * SFS XMTIF DOES "TRANSMIT" INTERFACE HAVE DATA? JMP CNTR1 NO LIA XMTIF LOAD DATA STA PNTR,I STORE POINTER ISZ PNTR BUMP POINTER LDA CLOCK LOAD PSEUDO-CLOCK STA PNTR,I STORE ISZ PNTR BUMP POINTER * CNTR1 EQU * LDA LAST BUFFER CMA,INA ADA PNTR SSA,RSS FILLED? JMP FORM1 YES-- * BUFFERS NOT FILLED. * UPDATE PSEUDO "CLOCK" * CLA THIS LOOP USED TO SLOW DOWN THE "CLOCK". INA ADJUST THE REPETITION COUNTER FOR PARTICULAR CPA SCALE LINK SPEED USED (LARGER NUMBERS FOR SLOWER LINKS) RSS JMP *-3 LDA CLOCK INA SSA SIGN BIT SET? CLA YES, RESET CLOCK STA CLOCK LIB 1 LOAD SWITCH REGISTER OTA 1 UPDATE SWITCH REGISTER SSB,RSS SIGN BIT SET? JMP LOOPX SKP * HERE TO PRINT INFORMATION "TRACED" SO FAR * FORM1 EQU * LIA XMTIF CLEAR CARDS LIA RCVIF CLC XMTIF,C CLEAR BOTH INTERFACE CARDS CLC RCVIF,C JSB $LIBX RESTORE NORMAL RTE PROCESSING DEF *+1 DEF *+1 SSB WAS SIGN BIT SET IN SWITCH REGISTER? JMP EXIT YES--MUST STOP NOW SPC 2 LDA @BUFR CALCULATE CMA,INA NUMBER ADA PNTR OF STA NOBSV POINTS LOGGED * * HERE WHEN "TRACE" DATA BUFFER IS AVAILABLE. * TRC.7 EQU * ISZ NPASS BUMP PASS NUMBER NOP LDA NOBSV NOW CONVERT THIS TO ACTUAL CLB NUMBER OF DATA WORDS OBSERVED DIV NTENT STA NOBSV JSB CKDTA CHECK DATA FOR ABNORMAL PROTOCOL WORDS JSB SUBTL PRINT THE # RCS, STOPS, ETC. LDA MODE ARE WE TO IGNORE RAR BUFFERS CONTAINING NO ABNORMAL SLA,RSS DATA WORDS? JMP TRC.8 NO, DO IT ANYWAY. LDA NRLM WERE THERE ANY RLM'S? ADA NRLW OR RLW'S ADA NSTOP OR STOP'S SZA,RSS ??? JMP REDTA NO, SKIP THIS ONE. * TRC.8 EQU * LDA WRFIL ARE WE LOGGING DATA? SZA JMP TRC.9 YES, SKIP TITLES & STUFF JSB PBLNK PRINT A BLANK LINE * JSB CNUMD CONVERT # LOGGED DATA WORDS DEF *+3 DEF NOBSV DEF .NRC. JSB DEXEC DEF *+6 DEF NODE# DEF WRCOD "WRITE" CODE, NO ABORT DEF LUPRN DEF TITL1 DEF TTL1L NOP JSB DEXEC DEF *+6 DEF NODE# DEF WRCOD DEF LUPRN DEF TITL2 DEF TTL2L NOP JSB DEXEC DEF *+6 DEF NODE# DEF WRCOD DEF LUPRN DEF TITL3 DEF TTL3L NOP * * * JSB PBLNK PRINT BLANK LINE JSB CNUMD CONVERT PASS NUMBER DEF *+3 DEF NPASS DEF HED4. SPC 2 * WE WILL CONVERT SAMPLING TIME TO ASCII & SO IT CAN BE PRINTED * WITH THE PASS NUMBER. SINCE THE 'TRACE' INFORMATION MAY HAVE COME * FROM A DISC FILE, CONVERT ONLY THE TIME INFORMATION WHICH IS * SIGNIFICANT: HOUR,MINUTES, SECONDS. NOTE ALSO THAT THE * TIME-OF-DAY RETURNED COMES BACK * IN INCREASING ORDER OF SIGNIFICANCE, BUT TIME-OF-DAY IS * USUALLY PRINTED IN DESCENDING ORDER OF SIGNIFICANCE. THEREFORE, * THE POINTER TO THE TIME-OF-DAY INTEGERS IS DECREMENTED EACH * PASS THROUGH THE LOOP. * * SET UP CONVERSION LOOP LDA M4 CONVERT 4 ITEMS STA CNTR LDA @TOD SET UP TIME-OF-DAY POINTER TO ADA D3 "HOURS" WORD STA TRLP. LDA @HD4. SET UP ASCII STA TEMP BUFFER POINTER * TRLUP EQU * JSB KCVT CONVERT INTEGER TO ASCII DEF *+2 TRLP. NOP DEF TO TIME-OF-DAY STORED HERE STA TEMP,I STORE TWO-CHAR ASCII HERE CCA ADVANCE TIME-OF-DAY POINTER TO ADA TRLP. NEXT MOST SIGNIFICANT STA TRLP. ITEM. ISZ TEMP BUMP POINTER TO ASCII STORAGE AREA LDA COLON STORE A COLON TO SEPARATE DATA ITEMS STA TEMP,I ISZ TEMP ISZ CNTR FINISHED LOOP? JMP TRLUP NOT YET. * AT END OF LOOP, SUFFIX THE CENTOSECONDS WITH A "0" * SO IT APPEARS TO BE MILLISECONDS. CCA ADA TEMP LDB ASC0 STB A,I * JSB PRINT DEF HED4 DEF HED4L * LDA @BUFR LOAD ADDRESS OF TRACE BUFFER STA PNTR LDA NOBSV INITIALIZE LOOP CMA,INA COUNTER SZA,RSS JMP REDTA STA CNTR LOOP EQU * JSB IFBRK CHECK "BREAK" FLAG AGAIN DEF *+1 SSA SHALL WE QUIT? JMP EXIT YES. * * NOTE: WE WILL WANT TO SET UP THE VIDEO ENHANCEMENTS ACCORDING * TO THE TYPE OF PROTOCOL WORD. IT WILL BE INVERSE VIDEO IF RECEIVED, * OTHERWISE BLACK VIDEO. IT WILL BE FLASHING IF AN ABNORMAL PROTOCOL * WORD (RLM,RLW,STOP). * THESE MUST BE SET UP IN COMBINATION. * LDA @BVDO LOAD ADDRESS OF "BLACK VIDEO" LDB @PBF0 LOAD DESTINATION ADDRESS MVW D2 MOVE SET-UP WORDS * LDB PNTR,I GET DATA WORD FROM TRACE ENTRY LDA B JSB CASCI CHECK FOR VALID ASCII STA PBUF+9 CPB STOP IS IT 'STOP'? JMP .STOP YES, LOAD ADDRESS FOR "STOP" CPB RC IS IT 'REQUEST COMING'? JMP .RC YES, LOAD ADDRESS OF "RC" CPB TNW IS IT 'TRANSMIT NEXT WORD'? JMP .TNW YES, LOAD ADDRESS OF "TNW" CPB RLW IS IT 'RE-TRANSMIT LAST WORD'? JMP .RLW YES, LOAD ADDRESS OF "RLW" CPB RLM IS IT 'RE-TRANSMIT LAST MESSAGE'? JMP .RLM YES, LOAD ADDRESS OF "RLM" LDA @UNKN OTHERWISE, IT'S UNKNOWN... JMP SET.. LOAD BLANKS--IT'S NOT RECOGNIZED SPC 2 .RC LDA @RC RSS .TNW LDA @TNW JMP SET.. .STOP LDA @STOP RSS LOAD ADDRESS OF "FLASHING" .RLM LDA @RLM LOAD ADDRESS OF 'RLM' JMP .FLSH GO LOAD ADDRESS OF "FLASHING" .RLW LDA @RLW .FLSH ISZ PBUF0+1 MODIFY VIDEO SET-UP TO INCLUDE "BLINKING" SET.. EQU * LDB WRFIL LOGGING DATA TO SZB A FILE? JMP PR..4 YES, SKIP THE FORMATTING JUNK... LDB @PBUF LOAD DESTINATION ADDRESS ADB D2 SKIP OVER FIRST 4 CHARACTERS (FILLED LATER) MVW D2 MOVE TO PRINT BUFFER JSB CNUMO CONVERT DATA TO OCTAL DEF *+3 DEF PNTR,I DEF PBUF+5 * LDB BLANK LOAD BLANKS STB PBUF+4 STB PBUF+8 STB PBUF+10 ISZ PNTR BUMP TO 2ND WORD OF ENTRY LDB =AX LOAD 'TRANSMIT' IDENTIFYING CODE LDA PNTR,I GET 2ND DATA ITEM (CLOCK) STA WORD SAVE IT FOR LATER. SSA RECEIVE? LDB =AR YES, LOAD 'RECEIVE' IDENTIFIER STB PBUF+1 STORE IDENTIFIER IN BUFFER RAL,CLE,ERA REMOVE SIGN BIT STA TEMP JSB CNUMD CONVERT CLOCK VALUE DEF *+3 DEF TEMP DEF PBUF+11 * * SET UP PRINT BUFFER POINTER AND LENGTH. * IF DEVICE IS A TERMINAL, THEN MOVE POINTER BACK * TO INCLUDE VIDEO ENHANCEMENT SET-UP AND * ADJUST LENGTH. IF WORD WAS RECEIVED, THEN * ENHANCEMENT WILL BE "INVERSE VIDEO", ELSE * BLACK VIDEO IS USED. * IF PROTOCOL WORD IS ABNORMAL, THEN INCLUDE THE * "BLINKING" OPTION. * LDA @PBUF STA BUFPT LDA PBUFL STA BUFPL LDA DVFLG IS PRINT DEVICE SSA,RSS A TERMINAL? JMP PR..1 NO. DON'T ENHANCE DISPLAY LDA @PBF0 MOVE POINTER TO INVERSE-VIDEO PART OF STA BUFPT BUFFER LDA TRMLN STA BUFPL LDA PBUF0+1 LOAD VIDEO SET-UP WORD LDB WORD LOAD EVENT/STATE SSB WAS PROTOCOL WORD RECEIVED? IOR D2 YES, INCLUDE "INVERSE VIDEO" BIT IN SET-UP STA PBUF0+1 RESTORE SET-UP WORD * * WE WILL MOVE THIS PRINT BUFFER INTO THE PRINT LINE, WHICH * WILL CONTAIN TWO PRINT BUFFERS WHEN IT IS PRINTED. * THAT IS, THE VIEWER WILL SEE SIDE-BY-SIDE WHAT WAS TRANSMITTED * AND WHAT WAS RECEIVED. * * WHEN THE SECOND ONE HAS BEEN MOVED IN, WE WILL PRINT THE WHOLE * PRINT LINE AND RESET ALL THE POINTERS & COUNTERS. * PR..1 EQU * LDA BUFPT MOVE THIS LDB BFPTR BUFFER TO MVW BUFPL PRINT LINE STB BFPTR SAVE POINTER FOR NEXT MOVE. LDA BUFFL UPDATE THE COUNT ADA BUFPL STA BUFFL ISZ NBUFR HAVE WE GOT TWO BUFFERS NOW? JMP PR..4 NO, GO ON. * * WE HAVE TWO BUFFERS. PRINT BOTH & RESET. * JSB PRINT @BUFF DEF BUFF POINTER TO PRINT-LINE BUFFER DEF BUFFL JSB RESET RESET ALL CNTRS & POINTERS * PR..4 EQU * ISZ PNTR BUMP POINTER TO NEXT ENTRY ISZ CNTR BUMP COUNTER--DONE? JMP LOOP NO. TRC.9 EQU * LDA WRFIL ARE WE SZA LOGGING DATA TO A FILE? JSB WRDTA YES, GO DO IT JMP REDTA NO, GO LOOK FOR MORE DATA. * * SUBROUTINE TO RESET ALL PRINT BUFFERS & POINTERS * RESET NOP CLA STA BUFFL CLEAR COUNT OF # WORDS IN PRINT LINE LDA M2 RESET 2-BUFFER COUNTER STA NBUFR LDA @BUFF RESET PRINT-LINE BUFFER STA BFPTR POINTER JMP RESET,I SKP * HERE TO SET UP FLAGS, ETC. TO READ DATA "RAW" FROM * TAPE DEVICE * MTAPE EQU * LDA PBUFR LOAD TAPE LU STA INLUF SET "INPUT FROM TAPE" FLAG JMP TRC.4 CONTINUE MAIN FLOW SPC 4 * HERE WHEN USER SPECIFIES FILE NAME FOR INPUT OF * TRACE INFORMATION SPC 2 MFILE EQU * LDA DCB DO WE ALREADY HAVE SZA HAVE A FILE OPEN? JMP BAD1 YES--ILLEGAL RESPONSE! CCA STA INFIL SET "GET DATA FROM FILE" FLAG JSB OPEN TRY TO OPEN FILE DEF *+7 DEF DCB DEF ERR DEF FNAME DEF D1 OPEN IN "SHARED" MODE DEF SCODE DEF CRTG SSA ERROR? JMP FIERR YES, PRINT ERROR MSG & TERMINATE * JSB NAMX CALL NAMR FOR ME SSA SHALL WE DEFAULT? CLB,INB YES, AT LEAST ONE CMB,INB MAKE NEGATIVE TO CHECK SSB,RSS AT LEAST 1? CCB NO, SUBSTITUTE -1 CMB,INB POSITIVE AGAIN STB FREC STORE FIRST RECORD JSB NAMX CALL NAMR AGAIN SSA USE DEFAULT AGAIN? LDB =D32767 YES LDA FREC MAKE SURE IT'S AT LEAST CMA,INA AS LARGE AS ADA B THE SSA FIRST RECORD # LDB FREC NO, USE FIRST ONE. STB LREC * NOW POSITION TO FIRST RECORD JSB POSNT DEF *+5 DEF DCB DEF ERR DEF FREC DEF D1 ABSOLUTE POSITIONING CCA SET NPASS = RECORD # - 1 ADA FREC (IT WILL BE INCREMENTED AT STA NPASS TRC.7) JMP TRC.3 NOW BEGIN PRINTING DATA IN FILE SPC 2 * SUBROUTINE TO CALL NAMR FOR US * NAMX NOP JSB NAMR DEF *+5 DEF PBUF DEF BUFFR I WANT THE PARSE BUFFER IN A 'SCRATCH' AREA DEF NCHAR DEF NCNTR LDB PBUF LOAD THE RESULT JMP NAMX,I RETURN SKP SPC 2 * SUBROUTINE TO GET NAME OF FILE INTO WHICH RAW 'TRACE' * BUFFERS ARE TO BE LOGGED. * GFILE EQU * CCA SET "LOGGING TO DISC FILE" FLAG STA WRFIL LDA LUTTY SET PRINT LU = TTY STA LUPRN JSB EXEC ASK FOR FILE OR LU DEF *+5 DEF D2 DEF LUTTY DEF MESG2 DEF MS2LL JSB EXEC INPUT FILE SPECIFIER DEF *+5 DEF D1 DEF LUTTY DEF BUFFR DEF M20 STB NCHAR SAVE TRANSMISSION LNTH CLA,INA STA NPNTR JSB NAMR PARSE IT DEF *+5 DEF PBUFR DEF BUFFR DEF NCHAR DEF NPNTR SSA GOOD INPUT? JMP BAD1 NO. LDA PBUFR+3 CHECK TYPE OF RESPONSE AND D3 CPA D1 NUMERIC? JMP GTAPE YES. LDA FSIZE GET # RECORDS DESIRED SZA,RSS ZERO? CLA,INA YES, DEFAULT TO 1 STA FSIZE CLB,CLE COMPUTE DISC FILE SIZE LDA FWSIZ STA FSIZE+1 SAVE RECORD SIZE MPY FSIZE FILE SIZE IN BLOCKS = (TRACE BUFFER SIZE+5) ADA D127 + 127 TO ROUND UP SEZ WAS THERE A CARRY? INB YES DIV D128 COMPUTE # BLOCKS REQUIRED STA FSIZE STORE FILE SIZE IN BLOCKS * * NOW CREATE THE FILE * JSB CREAT DEF *+8 DEF DCB DEF ERR DEF FNAME DEF FSIZE DEF D2 FILE TYPE IS 2 DEF SCODE DEF CRTG SSA,RSS ERROR? JMP OVWR1 NO. WE'RE IN BUSINESS! OPEN FILE SHARED&UPDATE CPA M2 DUPLICATE FILE NAME? JMP OVWRT YES, ASK IF WE CAN OVERWRITE * FIERR EQU * COME HERE FOR ALL FILE ERRORS. CMA,INA MAKE CODE NEGATIVE STA ERR JSB CNUMD CONVERT ERROR CODE DEF *+3 DEF ERR DEF MSG3. JSB EXEC PRINT ERROR MESSAGE DEF *+5 DEF D2 DEF LUTTY DEF MESG3 DEF MSG3L JMP EXIT TERMINATE * * COME HERE IF FILE ALREADY EXISTS. ASK IF WE CAN OVERWRITE. * OVWRT EQU * ASK IF WE CAN OVER-WRITE THE FILE? JSB EXEC DEF *+5 DEF D2 DEF LUTTY DEF MESG4 DEF MSG4L JSB EXEC READ RESPONSE DEF *+5 DEF D1 DEF LUTTY DEF BUFFR DEF D1 LDA BUFFR CPA =AYE YES? RSS NO, SO TERMINATE. JMP EXIT OVWR1 EQU * HERE TO OPEN THE FILE IN "SHARED" MODE JSB OPEN NOW OPEN FILE DEF *+7 DEF DCB DEF ERR DEF FNAME DEF D3 OPEN FOR UPDATE, IN "SHARED" MODE DEF SCODE DEF CRTG SSA ERROR? JMP FIERR YES, PRINT ERROR & QUIT. JMP REDTA NO, WE'RE IN BUSINESS! SPC 2 * HERE TO SET UP FLAGS, ETC., FOR OUTPUT OF RAW DATA * TO TAPE DEVICE. * GTAPE EQU * LDA PBUFR SET "OUTPUT RAW DATA TO FILE" FLAG STA WRFIL (FLAG CONTAINS + LU NUMBER) JMP REDTA RESUME MAIN FLOW SPC 2 * SUBROUTINE TO LOG DATA IN "RAW" FORMAT * WRDTA NOP LDA WRFIL GET OUTPUT FLAG SSA,RSS OUTPUT TO TAPE DEVICE? JMP WRTAP YES * WRDT2 EQU * JSB WRITF DEF *+5 DEF DCB DEF ERR DEF TOD DEF FWSIZ SSA,RSS ERROR? JMP WRDTA,I NO, RETURN CPA M12 WRITING PAST EOF? RSS YES JMP FIERR NO, PRINT CATASTROPHIC ERROR & TERMINATE LDA MODE SHALL WE RAR,RAR STOP SLA NOW? JMP EXIT YES. LDA RWFLG HAVE WE PRINTED "REWINDING" MESSAGE SSA ALREADY? JMP GFIL3 YES, DON'T BOTHER AGAIN CCA SET "PRINTED REWIND MSG" FLAG STA RWFLG JSB EXEC PRINT "/PSMON:REWINDING FILE" DEF *+5 DEF D2 DEF LUTTY DEF MESG5 DEF MSG5L GFIL3 EQU * JSB RWNDF REWIND THE FILE AND DEF *+2 DEF DCB JMP WRDT2 WRITE THE DATA SPC 2 * HERE TO OUTPUT DATA TO TAPE * WRTAP EQU * LDA FWSIZ INITIALIZE # WORDS TO MOVE COUNTER STA TEMP LDA @TOD INITIALIZE BUFFER POINTER STA ..WR LDA D512 STA LENGH * WRLUP EQU * JSB DEXEC SEND DATA REMOTELY DEF *+6 DEF NODE# DEF WRCOD DEF WRFIL REMOTE LU # ..WR NOP BUFFER POINTER DEF LENGH LENGTH NOP IGNORE ERRORS LDA ..WR UPDATE POINTER ADA D512 STA ..WR LDA TEMP CMA,INA ADA D512 SSA,RSS DATA ALL WRITTEN? JMP WRDTA,I YES, RETURN * COMPUTE MINIMUM OF (512, # WORDS REMAINING TO SEND) LDB D512 ADB A CMA,INA NO, UPDATE NEW REMAINDER STA TEMP SSB,RSS REMAINDER < 512? STA LENGH YES. JMP WRLUP CONTINUE OUTPUTTING SPC 2 * HERE IF LINE LU GIVEN IS NON-NUMERIC OR NOT CONNECTED * TO DVA65 OR FORMAT OF RESPONSE IS OTHERWISE ILLEGAL. * BAD1 EQU * JSB EXEC DEF *+5 DEF D2 DEF LUTTY DEF BADMS DEF BADML JMP TRCC2 GO REPEAT QUESTION. SKP * PRINT ROUTINE * * CALLING SEQUENCE: * JSB PRINT * DEF BUFR * DEF BUFFER LENGTH * PRINT NOP DLD PRINT,I GET ADDRESS OF BUFFER & LENGTH DST @@ ISZ PRINT ISZ PRINT JSB DEXEC PRINT LINE DEF *+6 DEF NODE# DEF WRCOD DEF LUPRN @@ NOP ADDRESS OF BUFFER STORED HERE NOP ADDRESS OF LENGTH STORED HERE NOP JMP PRINT,I EXIT . SPC 2 * * SUBROUTINE TO CHECK DEVICE TYPE * * CALLING SEQUENCE: * JSB DVTYP * DEF LU TO BE CHECKED * * * DVTYP NOP LDA DVTYP,I GET LU TO CHECK LDA A,I STA DLU ISZ DVTYP BUMP RETURN ADDRESS TO P+2 JSB DEXEC GET DEVICE STATUS DEF *+7 DEF NODE# DEF STCOD I O STATUS CODE, NO ABORT DEF DLU DEF EQT5 DEF EQT4 DUMMY PARAMETER DEF LUTYP LU & SUBCHANNEL STORED HERE NOP LDA LUTYP ISOLATE UNIT NUMBER AND =B377 STA B LDA EQT5 LOAD DEVICE TYPE CODE ALF,ALF ROTATE DEVICE TYPE TO LOW 8 BITS AND =B77 ISOLATE EQUIPMENT TYPE CODE CPA D5 IF DEVICE TYPE IS 5, SZB AND SUBCHANNEL IS 0, RSS THEN WE WILL ISZ DVTYP RETURN TO P+3 CPA D7 ELSE IF DEVICE TYPE IS 7, WE WILL ISZ DVTYP RETURN TO P+3 JMP DVTYP,I ELSE RETURN TO P+2 DLU NOP SPC 2 * SUBROUTINE TO PRINT A BLANK LINE * PBLNK NOP JSB PRINT PRINT THE BLANK LINE DEF BLANK DEF D1 JMP PBLNK,I RETURN TO CALLER * * ROUTINE TO CHECK IF (A) REGISTER CONTAINS TWO PRINTING * ASCII CHARACTERS. IF EITHER CHARACTER IS NON-PRINTING, * IT IS REPLACED BY A BLANK. * * CALLING SEQUENCE: * LDA * JSB CASCI * * CASCI NOP STA TEMP JSB CCK1 CHECK 1ST CHAR STA CHAR STORE CHARACTER LDA TEMP ALF,ALF NOW DO 2ND CHAR JSB CCK1 CHECK 2ND CHAR ALF,ALF ROTATE TO HIGH HALF IOR CHAR MERGE OTHER CHAR JMP CASCI,I RETURN TO CALLER * DEFINE TEMPORARY STORAGE FOR 'CASCI' CHAR NOP TEMP NOP SPC 2 CCK1 NOP AND =B377 MASK CHARACTER STA CCK2 LDA =B137 LOAD LEFT ARROW CMA,INA ADA CCK2 SUBTRACT LEFT ARROW FROM CHARACTER SSA,RSS JMP LBLNK NO, LOAD A BLANK LDA =B40 SUBTRACT CMA,INA ADA CCK2 A BLANK SSA LESS THAN A BLANK? JMP LBLNK YES, LOAD A BLANK LDA CCK2 RECOVER CHARACTER RSS LBLNK LDA =B40 JMP CCK1,I RETURN CCK2 NOP TEMPORARY STORAGE FOR CCK1 SPC 2 * SUBROUTINE TO CHECK DATA FOR ABNORMAL PROTOCOL WORDS * CKDTA NOP LDA NOBSV INITIALIZE LOOP CMA,INA SZA,RSS ZERO? JMP CKDTA,I RETURN STA CNTR LDB @BUFR CKLUP EQU * LDA B,I LOAD DATA WORD CPA STOP STOP? ISZ NSTOP NOP CPA RLW RLW? ISZ NRLW NOP CPA RLM RLM? ISZ NRLM NOP CPA RC RC? ISZ NRC NOP ADB NTENT ADVANCE POINTER ISZ CNTR BUMP LOOP COUNTER JMP CKLUP CONTINUE LOOP JMP CKDTA,I EXIT LOOP, EXIT ROUTINE SKP * HERE TO EXIT * * * * EXIT EQU * JSB SUBTL PRINT SUB-TOTALS LDA WRFIL ARE WE SZA,RSS LOGGING DATA? JMP EXIT1 NO SSA YES, GOING TO A DEVICE? JMP EXIT2 NO, TO A BONA FIDE DISC FILE. * WRITE AN EOF ON REMOTE DEVICE LDA WRFIL IOR EOFCD STA TEMP JSB DEXEC WRITE AN EOF ON DEVICE DEF *+4 DEF NODE# DEF CNTCD CONTROL CODE, WITH NO ABORT DEF TEMP NOP JMP EXIT3 * EXIT1 EQU * HERE TO SEE IF WE SHOULD CLOSE DISC FILE LDA INFIL ARE WE READING DATA FROM A FILE? SSA,RSS JMP EXIT3 NO. EXIT2 EQU * JSB CLOSE DEF *+2 DEF DCB * EXIT3 EQU * JSB EXEC PRINT TERMINATION MESSAGE DEF *+5 DEF D2 DEF LUTTY DEF ENMSG DEF ENMSL JSB EXEC TERMINATE DEF *+2 DEF D6 SPC 2 * SUBROUTINE TO PRINT SUB-TOTAL INFORMATION * SUBTL NOP JSB CNUMD CONVERT # OF PASSES DEF *+3 DEF NPASS PASS NUMBER. DEF ENCNT JSB CNUMD CONVERT # 'RC'S SEEN DEF *+3 DEF NRC DEF .RC. JSB CNUMD CONVERT # RLMS DEF *+3 DEF NRLM DEF .RLM. JSB CNUMD CONVERT # RLW DEF *+3 DEF NRLW DEF .RLW. JSB CNUMD CONVERT # STOPS DEF *+3 DEF NSTOP DEF .STP. JSB EXEC PRINT SUB-TOTALS DEF *+5 DEF D2 DEF LUTTY DEF SUBMS DEF SUBML JMP SUBTL,I RETURN SKP * DATA BUFFERS AND CONSTANTS * M20 DEC -20 M12 DEC -12 M5 DEC -5 M2 DEC -2 M4 DEC -4 D0 DEC 0 D1 DEC 1 D2 DEC 2 WRCOD OCT 100002 "WRITE" CODE W/NO-ABORT BIT SET RDCOD OCT 100001 "READ" CODE W/ NO-ABORT BIT SET CNTCD OCT 100003 "CONTROL" CODE W/ NO-ABORT BIT SET TMCOD OCT 100013 TIME-OF-DAY CODE W/ NO-ABORT BIT SET EOFCD OCT 100 "EOF" CONTROL SUBFUNCTION CODE. D3 DEC 3 D5 DEC 5 D6 DEC 6 D7 DEC 7 D12 DEC 12 STCOD OCT 100015 I/O STATUS,NO ABORT D127 DEC 127 D128 DEC 128 B200 EQU D128 D512 DEC 512 SPC 4 ASC0 ASC 1,0 COLON ASC 1,: BLANK ASC 2, HED1 ASC 22,PASSIVE MONITOR 'TRACE'PROGRAM,REV 11-10-78 HED1L ABS *-HED1 HED4 ASC 4,RECORD # HED4. BSS 3 ASC 3,,TIME: HED4$ ASC 9, HED4L ABS *-HED4-1 @HD4. DEF HED4$ * BADMS ASC 8,ILLEGAL RESPONSE BADML ABS *-BADMS ENMSG ASC 5,PSMON:END ENMSL ABS *-ENMSG SUBMS ASC 3,PSMON: SUB-TOTALS MESSAGE ENCNT ASC 3, STORAGE # OF PASSES LOGGED HERE ASC 7, RECS LOGGED, .RC. ASC 3, STORE # RCS ASC 3, RCS, .RLM. ASC 3, STORE # RLM ASC 3, RLMS, .RLW. ASC 3, STORE # RLWS ASC 3, RLWS .STP. ASC 3, # STOPS ASC 3, STOPS SUBML ABS *-SUBMS * MESG2 ASC 9,FILE OR LU? MS2LL ABS *-MESG2 MESG3 ASC 6,FMP ERROR - MSG3. BSS 3 STORAGE FOR FMP ERROR CODE (IN ASCII) MSG3L ABS *-MESG3 MESG4 ASC 18,DUPL. FILE. OVERWRITE(YES OR NO)? MSG4L ABS *-MESG4 MESG5 ASC 11,/PSMON:REWINDING FILE MSG5L ABS *-MESG5 MSG1 ASC 28,DATA SOURCE:,LU, OR BLANKS TO TAKE 'LIVE' DATA?_ MSG1L ABS *-MSG1 @UNKN DEF *+1 ASC 2, @STOP DEF *+1 ASC 2,STOP @RC DEF *+1 ASC 2,RC @TNW DEF *+1 ASC 2,TNW @RLW DEF *+1 ASC 2,RLW @RLM DEF *+1 ASC 2,RLM * * LENGH NOP RWFLG NOP FLAG: 0 UNTIL "REWINDING FILE" MSG HAS BEEN PRINTED NBUFR NOP BFPTR NOP BUFFL NOP BUFPL NOP INFIL NOP FLAG FOR "GET DATA FROM FILE" INLUF NOP FLAG FOR "GET DATA FROM TAPE" WRFIL NOP FLAG FOR "STORE DATA IN FILE" LEN NOP FILE LENGTH NCNTR NOP FREC NOP FIRST RECORD NUMBER LREC NOP LAST RECORD NUMBER NPNTR NOP NSTOP NOP COUNTER OF NUMBER OF 'STOPS' SEEN NRLW NOP " " " " 'RLW'S " NRLM NOP " " " " 'RLM'S " NRC NOP " " " " 'RC'S " NTENT EQU D2 # WORDS PER TRACE TABLE ENTRY STOP OCT 7760 'STOP' WORD RC OCT 170017 'REQUEST COMING' WORD TNW OCT 170360 'TRANSMIT NEXT WORD' RLW OCT 7417 'RE-TRANSMIT LAST WORD' RLM OCT 170377 'RE-TRANSMIT LAST MESSAGE' BUFPT NOP WILL CONTAIN ADDRESS OF PRINT BUFFER * * NOTE: DO NOT DISTURB ORDER OF LOCATIONS PBUF0 THROUGH PBUFL. * WHEN OUTPUT IS TO A TERMINAL (DV.05 OR DV.07) AND THE PROTOCOL WORD FROM * THE TRACE BUFFER WAS RECEIVED,THE PRINT BUFFER CONSISTS OF LOCATIONS * PBUF THROUGH PBUFL-3. OTHERWISE, IT CONSISTS OF LOCATIONS PBUF THROUGH * PBUFL-3. THE TWO LOCATIONS ON EITHER SIDE OF THESE TWO POINTS * ARE USED, RESPECTIVELY, TO SET UP AND CLEAR INVERSE VIDEO. * PBUF0 ASC 3, STORAGE HERE FOR VIDEO SET-UP PBUF ASC 17, PBUFX EQU * PBUFR BSS 10 FNAME EQU PBUFR SCODE EQU PBUFR+4 CRTG EQU PBUFR+5 FSIZE EQU PBUFR+7 EQT5 NOP EQT4 NOP LUTYP NOP WORD NOP @PBUF DEF PBUF @PBF0 DEF PBUF0 TRMLN ABS PBUFX-PBUF0 PBUFL ABS PBUFX-PBUF BVDEO ASC 2,&d@ BLACK-VIDEO SETUP. @BVDO DEF BVDEO DVFLG NOP FLAG:-1 IF PRINTER IS TERMINAL, ELSE 0 DCB NOP BSS 143 BUFF BSS 48 PRAMS BSS 5 LUTTY EQU PRAMS LUPRN EQU PRAMS+1 NODE# EQU PRAMS+2 MODE EQU PRAMS+3 NPTS EQU PRAMS+4 NPRNT NOP NCHAR NOP CNTR NOP # POINTS/LOOP COUNTER LAST NOP "END+1" POINTER TO TRACE BUFFER NOBSV NOP # POINTS OBSERVED NPASS NOP PASS NUMBER PNTR NOP BUFFER POINTER CLOCK NOP PSEUDO "CLOCK" .SIZE EQU 4096 SIZE OF TRACE BUFFER TRACZ ABS .SIZE STORAGE FOR SIZE OF TRACE BUFFER MDFLT ABS -.SIZE FWSIZ NOP TRACZ SIZE OF LOGGED-DATA RECORDS A EQU 0 B EQU 1 SCALE DEC 6 ERR NOP TITL1 ASC 4,#LOGGED= .NRC. ASC 3, STORE # LOGGED DATA WORDS TTL1L ABS *-TITL1 TITL2 ASC 15,RX MNEM DATA ASCII CLOCK ASC 3, ASC 15,RX MNEM DATA ASCII CLOCK TTL2L ABS *-TITL2 TITL3 ASC 20,---------------------------------------- ASC 15,------------------------------ TTL3L ABS *-TITL3 * * TOD BSS 5 TIME-OF-DAY BUFFER BUFFR BSS .SIZE DATA BUFFER END PSMON