ASMB,R,L,C HED DS/1K 'TRACE' PRGM FOR DVA65 * (C) HEWLETT-PACKARD CO. 1979 NAM TRC65,22,45 25999-16225 REV.1902 790122 DVA65 'TRACE' PRGM * ****************************************************************** * * (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: TRC65 * SOURCE: 24999-18225 * RELOC: 24999-16225 * PGMR: LYLE WEIMAN SEP 1978 * * 'TRACE' INFORMATION PRINTOUT PROGRAM FOR DVA65 * --REQUIRES VERSION OF DVA65 SUPPORTING 'TRACE' * * * *ON,TRC65,[LUTTY[,LUPRIN[,MODE]]] * * LUTTY = LU OF OPERATOR CONSOLE(MUST BE CAPABLE OF INPUT & OUTPUT) * 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. * * 3) THE "TRACE RECORD NUMBER" PRINTED IS SHOWN * IN INVERSE VIDEO IF NOT CONSECUTIVE. * * LUPRIN= LU FOR PRINTING TRACE TABLE IF NOT THE SAME AS * USEFUL WHEN HARDCOPY LOG IS DESIRED. * DEFAULT IS LUTTY. * * NOTE: IF LUPRIN = 2, THEN ALL TRACE RECORDS WILL BE * RECORDED IN THEIR "RAW" FORM ON A DISC FILE, WHOSE * NAME & SIZE ARE THEN ASKED FOR BY THE PROGRAM. * TRACE INFORMATION IS NORMALLY MAINTAINED IN A CIRCULAR * FASHION: OLD INFORMATION IS OVERWRITTEN BY NEW, THE * NUMBER OF "FRESH" TRACE RECORDS BEING DETERMINED BY * THE SIZE OF THE FILE. * * SYNTAX IS: FILNAM : SC : CR : :# RECORDS FOR FILE * * 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 IN RESPONSE TO THE QUESTION, "LINE LU?" * * NOTE: TO ENABLE FMGR & REMAT TO HANDLE "TRACE" FILES, * THE NUMBER OF "TRACE" ENTRIES PER RECORD WILL BE * REDUCED TO 30 (RECORD SIZE OF 128 WORDS) WHEN LOGGING * TO A FILE OR READING FROM ONE. * * : BIT MASK * BIT 0 = 0 CAUSES PROGRAM TO WAIT UNTIL WHOLE RECORD IS * FILLED BEFORE PRINTING. * = 1 THEN PROGRAM WILL PRINT CONTENTS OF TRACE RECORD, * CONTINUOUSLY, WITHOUT WAITING FOR SYNCHRONIZATION * FROM THE DRIVER. * * BIT 1 = 0 CAUSES PROGRAM TO PRINT DRIVER STATE LEGEND. * = 1 INHIBITS PRINTOUT OF DRIVER STATE LEGEND. * * 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 * "/TRC65: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. * * BIT 3: USED TO IGNORE 'TRACE' RECORDS WHICH DO NOT CONTAIN ABNORMAL * PROTOCOL WORDS. * = 0: PRINT/LOG ALL RECORDS * = 1: IGNORE ALL RECORDS CONTAINING NO ABNORMAL PROTOCOL WORDS. SKP * YOU WILL BE ASKED TO SPECIFY THE COMMUNICATION LINK LU TO * BE TRACED. IF YOU WANT ALL LINKS TRACED, ENTER THE NEGATIVE OF * ANY LINK LU. TO TERMINATE COMPLETELY, RELEASE ALL RESOURCES * AND DISABLE TRACE MODE, ENTER A ZERO. * * TO CHANGE THE PRINT LUS OR TRACE MODE, SET THE 'BREAK' FLAG * FOR THIS PROGRAM, AND RE-SCHEDULE IT. * * * THIS PROGRAM SEMI-PERMANENTLY ALLOCATES A BLOCK OF SYSTEM AVAILABLE * MEMORY TO BE USED AS THE TRACE BUFFER. THIS IS A POTENTIAL HAZARD * IF YOU LEAVE IT ALLOCATED FOR LONG PERIODS OF TIME (I.E., HOURS OR * DAYS) BECAUSE IT MAY BE LOCATED IN 'SAM' SUCH THAT IT PREVENTS LARGE * BUFFERS FROM EVER BEING ALLOCATED, THUS ALLOWING FOR THE POSSIBILITY * OF A "DEADLY EMBRACE". SINCE RTE DOES NOT * REALIZE THAT THIS BUFFER IS SEMI-PERMANENTLY ALLOCATED, IT * CANNOT DETECT THE "DEADLY EMBRACE" CONDITION WHICH EXISTS WHENEVER * A PROGRAM ATTEMPTS TO ALLOCATE A BUFFER WHICH IS SMALLER THAN THE * TOTAL AMOUNT OF FREE "SAM", BUT LARGER THAN THE FRAGMENTS LEFT- * OVER AFTER THIS PROGRAM IS RUN. IF YOU INTEND TO ALLOW THE * PROGRAM TO RUN FOR LONG PERIODS OF TIME, YOU SHOULD ATTEMPT TO * MINIMIZE THIS PROBLEM BY RUNNING IT IMMEDIATELY * AFTER 'LSTEN' IS RUN. THIS CAUSES THE "SAM" BLOCK ALLOCATED TO BE * LOCATED RIGHT AFTER THE "SAM" WHICH 'LSTEN' ALLOCATES. * NOTE THAT THIS REDUCES BUT DOES NOT ELIMINATE THE PROBLEM. * * * THE CLASS NUMBER AND RESOURCE NUMBER ALLOCATED ARE STORED IN 'RES', * THUS ELIMINATING THE DANGER THAT RESOURCES MAY BE LOST IF THIS * PROGRAM IS ABORTED. HOWEVER, IF IT IS ABORTED, YOU SHOULD * RUN IT AGAIN, SPECIFYING ZERO FOR THE LINE LU, TO ALLOW * IT TO CLEAN UP AFTER ITSELF. SKP * THE PRINT FORMAT SHOWN BELOW IS ACTUALLY REPEATED TWICE PER LINE: * * <^>

* * WHERE= 'X' IF WORD WAS TRANSMITTED * = 'R' IF WORD WAS RECEIVED. * <^>= AN UP-ARROW WILL BE PRINTED IMMEDIATELY FOLLOWING * IF A TIME-OUT INDICATION OCCURRED. * = A RIGHT-ARROW (->) IS PRINTED TO THE LEFT OF * THE OLDEST ENTRY * *

= MNEMONIC FOR PROTOCOL WORD * RC, TNW, RLM, RLW, STOP, OR BLANKS IF PROTOCOL * WORD IS NONE OF ABOVE. * NOTE: THE "LENGTH" WORDS WILL NOT NORMALLY MATCH * ANY OF THE ABOVE. * * = PROTOCOL WORD IN OCTAL. * * = DRIVER STATE NUMBER. A LEGEND IS PRINTED WHEN * THIS PROGRAM FIRST BEGINS. * * = EQT NUMBER (USEFUL IN SEPARATING ACTIVITY * AMONG VARIOUS LINES), PRINTED IN DECIMAL * = LOW 16 BITS OF $TIME WORD WHEN ENTRY WAS * MADE, CONVERTED TO DECIMAL. THIS PROVIDES * AN INDICATION OF THE AMOUNT OF TIME ELAPSED * BETWEEN THIS ENTRY AND THE PREVIOUS ONE. * EACH TICK REPRESENTS TEN MILLISECONDS. * * * 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 MULTIPLE OF 4, PLUS THREE EXTRA WORDS. * * * THE "TRACE" BUFFER FORMAT IS DESCRIBED IN THE COMMENTS * IN THE SOURCE OF DVA65. THE DISC FILE FORMAT IS THE SAME * EXCEPT THAT THREE WORDS HAVE BEEN ADDED IN FRONT: 2 TIME * WORDS AND THE LOCAL NODE NUMBER. THE RECORD SIZE IS * REDUCED TO 128 WORDS AND THE TRACE BUFFER SIZE IS REDUCED * TO 30 ENTRIES IN THIS CASE. EXT CREAT,OPEN,CLOSE,READF,WRITF,RWNDF EXT EXEC,KCVT,POSNT EXT #TRCL,#TRCN,NAMR EXT RNRQ,IFBRK EXT CNUMO,CNUMD EXT RMPAR,TMVAL,$TIME EXT #NODE SUP TRC65 EQU * JSB RMPAR DEF *+2 DEF PRAMS CLB CLEAR FLAGS STB INFIL STB RWFLG STB WRFIL STB NDFLG STB NRC CLEAR # RCS COUNTER STB TSTOP CLEAR TOTAL # STOPS STB TRLW CLEAR TOTAL # RLWS STB TRLM CLEAR TOTAL # RLMS STB DCB SHOW WE DON'T HAVE ANY FILES OPEN. STB SKPFL AVOID THE 2-SEC DELAY BEFORE PRNTG 1ST BLOCK STB RECN CLEAR RECORD NUMBER COUNTER * 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 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 * LDA MODE PRINT 'STATE' RAR,SLA LEGEND? JMP TRCC2 NO. * * PRINT LEGEND * LDA @STAT STA PNTR P.LUP EQU * JSB PRINT PNTR NOP DEF @@HED LDA PNTR ADA @@HED STA PNTR CPA @@END FINISHED? RSS YES, GO ON. JMP P.LUP NO, CONTINUE * TRCC1 EQU * JSB PRINT PRINT HEADER DEF HED1 DEF HED1L * TRCC2 EQU * JSB EXEC "LINK LU, -LU TO TRACE ALL, OR ?" DEF *+5 DEF D2 DEF LUTTY DEF MSG1 DEF MSG1L JSB EXEC ASK FOR LU OR FILE NAME TO TRACE DEF *+5 DEF D1 DEF LUTTY DEF BUFFR DEF M20 STB NCHAR CLA,INA STA NCNTR JSB NAMR PARSE RESPONSE DEF *+5 DEF PBUFR DEF BUFFR DEF NCHAR DEF NCNTR CLB CLEAR STB BUFFR PASS NUMBER COUNTER. SSA ANY INPUT? JMP EXIT NONE. TERMINATE. LDA PBUFR+3 GET TYPE CODE FOR RESPONSE. AND D3 CPA D3 ASCII? JMP MFILE YES CPA D1 NUMERIC? RSS JMP BAD1 NO, BAD INPUT. * JSB CNUMD CONVERT LINE LU TO ASCII DEF *+3 DEF PBUFR @.LU. DEF .LU. CLB,INB ASSUME TRACE IS JUST FOR THIS LINK. LDA PBUFR GET LU SZA,RSS ZERO? JMP EXIT YES, USER WANTS TO TERMINATE & RELEASE * RESOURCES SSA,RSS ALL LINKS TO BE TRACED? JMP TRC.0 NO, JUST THIS ONE. LDA @ALL MOVE "(ALL)" INTO "TRACE LU" BUFFER LDB @.LU. MVW D3 LDA PBUFR GET LU AGAIN CMA,INA MAKE POSITIVE CLB TRC.0 EQU * STB TROPT STORE TRACE OPTION STA LINK STORE LINK LU * * FIND LINK TYPE JSB DVTYP DEF LINK NOP CPA =B65 DEVICE TYPE = 65? RSS YES, GOOD THING! JMP BAD1 NO, SO IT'S NOT A VALID LINK LU. * * ALLOCATE A SYNCHRONIZATION RESOURCE NUMBER * * IT IS ALLOCATED AND LOCKED GLOBALLY FOR TWO REASONS: * 1) SO ANOTHER PROGRAM CAN BE WRITTEN BY THE USER * TO BRING THIS PROGRAM OUT OF 'RN SUSPEND', WHICH * IT CAN GET INTO IF ASKED TO TRACE AN INACTIVE * LINE. * 2) SO IF THIS PROGRAM IS ABORTED FOR ANY REASON, THEN * RE-RUN IN ANOTHER ID SEGMENT, THE RESOURCE NUMBER IT * ALLOCATES WILL STILL BE USABLE BY IT. * LDA #TRCN HAS ONE ALREADY SZA BEEN ALLOCATED? JMP TR..1 YES, SKIP ALLOCATION JSB RNRQ ALLOCATE ONE DEF *+4 DEF B22 ALLOCATE & LOCK IT GLOBALLY DEF #TRCN STORE RESOURCE NUMBER IN "RES" MODULE DEF STAT STORE STATUS HERE. * TR..1 EQU * LDA #TRCL HAS A CLASS NUMBER SZA,RSS ALREADY BEEN ALLOCATED? JMP TRC.2 YES, SKIP CLEAN-UP LDA LINK TEMPORARILY IOR =B700 DISABLE STA ICNWD TRACE JSB EXEC MODE. DEF *+3 DEF D3 DEF ICNWD LDA #TRCL CLEAR ALL MODE BITS AND =B17777 IOR =B120000 SET "DO NOT DE-ALLOCATE CLASS" STA #TRCL AND "NO-WAIT" BITS * * CLEAR OUT CLASS BUFFERS * T...1 JSB GET RELEASE THIS BUFFER SSA,RSS ANY DATA? JMP T...1 YES, CONTINUE * TRC.2 EQU * SKP * * * * * ISSUE CLASS WRITE-READ TO ALLOCATE SOME SYSTEM AVAILABLE MEMORY. * * LDA LINK IOR =B700 SET SUBFUNCTION BITS FOR STA ICNWD 'ENABLE TRACE MODE' JSB EXEC HANG DUMMY CLASS 'WRITE' ON LINK EQT DEF *+8 DEF D20 DEF ICNWD DEF BUFFR DEF TRACZ TRACE BUFFER SIZE DEF TROPT TRACE OPTION DEF #TRCN RESOURCE NUMBER DEF #TRCL 'TRACE' BUFFER CLASS-I/O NUMBER SPC 2 LDA #TRCL CLEAR SPECIAL BITS AND =B17777 IOR =B60000 SET "SAVE BUFFER & CLASS #" BITS STA #TRCL AND =B377 CLEAR ALL SYSTEM BITS FROM CLASS # STA ICNWD FOR CONVERSION TO ASCII JSB PBLNK PRINT BLANK LINE JSB CNUMO CONVERT CLASS NUMBER DEF *+3 DEF ICNWD DEF .CLA. TO ASCII LDA #TRCN LOAD RESOURCE NUMBER AND =B377 MASK RN PART STA ICNWD SAVE FOR CONVERSION TO ASCII JSB CNUMD CONVERT RESOURCE NUMBER DEF *+3 DEF ICNWD DEF .RN. JSB PRINT DEF MSG2 DEF MSG2L * * LOCK MYSELF IN MY PARTITION SO I CAN BE DISPATCHED QUICKLY. * JSB EXEC DEF *+3 DEF D22 DEF D1 * SPC 2 TRC.3 EQU * LDA WRFIL ARE WE LOGGING DATA SZA IN A FILE? JMP TRC.4 YES, DON'T PRINT THE HEADER JSB PRINT PRINT REST OF HEADER DEF HED2 DEF HED2L JSB PRINT DEF HED5 DEF HED5L JSB PRINT PRINT DASHES DEF HED3 DEF HED3L * SPC 2 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 * * READ NEXT "TRACE" RECORD * REDTA EQU * ISZ RECN INCREMENT RECORD NUMBER COUNTER NOP (IT MIGHT ROLL OVER) JSB IFBRK CHECK 'BREAK' FLAG DEF *+1 SSA SET? JMP EXIT YES, WE MUST QUIT. * CLB STB NRLM STB NRLW STB NSTOP STB NPRNT CLEAR # HALF-PRINT LINES CNTR LDA TRACZ COMPUTE # ENTRIES TO PRINT DIV NTENT BY DIVIDING BUFFER SIZE BY # WORDS PER ENTRY STA NOBSV SAVE # OBSERVATIONS 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 DEF BTIME DEF FWSIZ DEF LEN * 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. * RED.1 EQU * LDA DVFLG IS THIS DEVICE SSA,RSS A TERMINAL? JMP TRC.7 NO, GO FORMAT DATA LDA SKPFL DID WE SKIP PRINTOUT OF LAST SZA,RSS RECORD (HAD NO ABNORMAL PROTOCOL WORDS)? JMP TRC.7 YES, 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 * JSB CNUMD CONVERT RECORD NUMBER DEF *+3 TO ASCII DEF RECN DEF .REC. LDA MODE SHOULD WE WAIT SLA FOR DRIVER TO FILL TRACE BUFFER? JMP TRAC3 NO, JUST PRINT IT. * LOCK RN SO WE WILL BE RE-SCHEDULED IMMEDIATELY * DRIVER RELEASES IT (I.E., AS SOON AS * THE BUFFER IS AVAILABLE). LDA D2 STA ICODE JSB RNRQ DEF *+4 DEF ICODE DEF #TRCN DEF STAT SPC 2 * OBTAIN A COPY OF THE TRACE BUFFER BY ISSUING A "GET" * CALL (SAM BUFFER IS RETAINED). * TRAC3 EQU * JSB GET DO "GET" DLD $TIME STORE TIME AT WHICH SAVE WAS MADE DST BTIME LOCALLY. LDA #NODE SAVE LOCAL NODE # STA NODE# SKP TRC.7 EQU * JSB CKDTA COUNT # ABNORMAL PROTOCOL WORDS & RCS LDA TRLM UPDATE TOTAL # RLMS OBSERVED ADA NRLM STA TRLM LDA TRLW UPDATE TOTAL # RLWS OBSERVED ADA NRLW STA TRLW LDA TSTOP UPDATE TOTAL # STOPS ADA NSTOP STA TSTOP LDA MODE ARE WE TO IGNORE RAR,RAR BUFFERS CONTAINING RAR NO RLMS, RLWS, SLA,RSS OR STOPS? JMP TAKDT NO, TAKE IT ANYWAY. LDA NRLM WERE THERE ANY RLMS ADA NRLW OR RLWS ADA NSTOP OR STOPS STA SKPFL SZA,RSS ?? JMP REDTA NO, SKIP THIS ONE. * TAKDT EQU * HERE TO TAKE THE DATA BUFFER. CCA SET "DIDN'T SKIP LAST RECORD" FLAG STA SKPFL LDA WRFIL ARE WE LOGGING SZA TO A DISC FILE? JMP WRDTA YES. JSB PBLNK PRINT BLANK LINE JSB CNUMD CONVERT SUB-TOTAL OF # RCS DEF *+3 DEF NRC DEF .RC. JSB CNUMD CONVERT SUB-TOTAL OF # RLWS DEF *+3 DEF NRLW DEF .RLW. JSB CNUMD CONVERT SUB-TOTAL OF # RLMS DEF *+3 DEF NRLM DEF .RLM. JSB CNUMD CONVERT SUB-TOTAL OF # STOPS DEF *+3 DEF NSTOP DEF .STP. JSB PRINT PRINT SUB-TOTALS DEF SUBM1 DEF SUB1L * * * 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 BY SUBROUTINE 'TMVAL' 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. * JSB TMVAL CONVERT SAMPLING TIME TO 5 INTEGERS DEF *+3 DEF BTIME @PTRT DEF PBUFR STORE 5 INTEGERS IN PARSE BUFFER * SET UP CONVERSION LOOP LDA M4 CONVERT 4 ITEMS STA CNTR LDA @PTRT SET UP TIME-OF-DAY POINTER TO ADA D3 "HOURS" WORD STA TRLP. LDA @HD4. SET UP ASCII STA STAT BUFFER POINTER * TRLUP EQU * JSB KCVT CONVERT INTEGER TO ASCII DEF *+2 TRLP. NOP DEF TO TIME-OF-DAY STORED HERE STA STAT,I STORE TWO-CHAR ASCII HERE CCA ADVANCE TIME-OF-DAY POINTER TO ADA TRLP. NEXT MOST SIGNIFICANT STA TRLP. ITEM. ISZ STAT BUMP POINTER TO ASCII STORAGE AREA LDA COLON STORE A COLON TO SEPARATE DATA ITEMS STA STAT,I ISZ STAT 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 STAT LDB ASC0 STB A,I * LDA TRACN COMPUTE ADDRESS OF OLDEST ADA @TRAC TRACE ENTRY STA TRACN LDA NDFLG HAS THE "LOGGED AT NODE#" BEEN SSA PRINTED YET? JMP TRC6 YES, SKIP PRINTING CCA NO, CLEAR THE FLAG STA NDFLG JSB CNUMD CONVERT NUMBER DEF *+3 OF THE NODE DEF NODE# DOING THE LOGGING DEF .NOD. TO ASCII JSB PRINT DEF HED6 DEF HED6L * TRC6 EQU * JSB CNUMD CONVERT PASS NUMBER DEF *+3 DEF NPASS DEF .PAS. LDA @BLNK LOAD ADDRESS OF BLANKS LDB DVFLG IS PRINT SSB,RSS DEVICE A TERMINAL? JMP TRC.8 NO. LDB LSTPS LOAD LAST PASS NUMBER LDA @IVDO LOAD ADDRESS OF "INVERSE VIDEO" SET-UP CPB NPASS ARE WE ON THE SAME PASS AS BEFORE? LDA @BVDO YES, LOAD BLACK VIDEO SET-UP ADDRESS INB ARE WE ON THE VERY NEXT PASS? CPB NPASS ?? LDA @BVDO YES, LOAD BLACK VIDEO SET-UP TRC.8 EQU * LDB @DPEN LOAD DESTINATION ADDRESS MVW D2 MOVE SET-UP TO BUFFER JSB PRINT @DPEN DEF HED4 DEF HED4L LDA NPASS LOAD PASS NUMBER STA LSTPS STORE FOR CHECK NEXT TIME. * TRC.9 EQU * LDA @TRAC LOAD ADDRESS OF TRACE BUFFER STA PNTR LDA TRACZ LOAD TRACE SIZE LDA NOBSV LOAD # 'TRACE' ENTRIES CMA,INA FORM COUNTER 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 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 @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 * * STORE EITHER BLANKS IN FIRST CHARS, OR * A RIGHT ARROW (->) IF THIS IS THE OLDEST ENTRY. * LDB BLANK LOAD BLANKS STB PBUF+4 LDA PNTR CPA TRACN OLDEST? LDB RAROW YES, LOAD RIGHT ARROW (->) STB PBUF STORE IN PRINT BUFFER ISZ PNTR BUMP TO 2ND WORD OF ENTRY LDB =AX LOAD 'TRANSMIT' IDENTIFYING CODE LDA PNTR,I GET 2ND DATA ITEM (EVENT) STA WORD SAVE IT FOR LATER. SSA RECEIVE? LDB =AR YES, LOAD 'RECEIVE' IDENTIFIER SLA TIME-OUT OCCUR? ADB =B76 YES, MAKE 2ND CHAR UP-ARROW (^) STB PBUF+1 STORE IDENTIFIER IN BUFFER RAL,CLE,ERA REMOVE SIGN BIT ARS AND ISOLATE EVENT/STATE FIELD STA STAT SAVE FOR A FEW LINES... ISZ PNTR MOVE POINTER TO THIRD WORD OF ENTRY LDA EQTA CONVERT CMA,INA EQT ADA PNTR,I ADDRESS CLB TO DIV NWEQT AN INA EQT STA TEMP NUMBER JSB CNUMD CONVERT EQT NUMBER TO DECIMAL DEF *+3 DEF TEMP DEF PBUF+9 CONVERSION STORAGE * * NOW OVERLAY PART OF THE EQT NUMBER (IT'S MOSTLY LEADING * BLANKS ANYWAY) WITH THE -STATE- NUMBER * JSB KCVT DEF *+2 DEF STAT STATE LDB BLANK STORE IN BUFFER RRR 8 WITH BLANKS ON DST PBUF+8 EACH SIDE. ISZ PNTR BUMP POINTER TO 4RTH WORD OF ENTRY JSB CNUMD CONVERT TIME-OF-DAY AT WHICH ENTRY DEF *+3 WAS MADE DEF PNTR,I DEF PBUF+13 * * 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. 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 REST PRINT-LINE BUFFER STA BFPTR POINTER JMP RESET,I SKP * HERE WHEN 'BREAK' FLAG IS SET * * * WE CLEAR TRACE MODE & RELEASE RESOURCES. * EXIT EQU * LDA LINK IOR =B700 STA ICNWD JSB EXEC ISSUE "DISABLE TRACE MODE" CALL TO DRIVER DEF *+3 DEF D3 DEF ICNWD * LDA #TRCL DO WE HAVE A CLASS SZA,RSS NUMBER ALLOCATED? JMP EXIT3 NO, SKIP DE-ALLOCATION. AND =B17777 CLEAR "DO NOT DE-ALLOCATE BUFFER" IOR =B100000 & SET "NO WAIT" BIT STA #TRCL JSB GET RELEASE CLASS BUFFER. JSB GET RELEASE CLASS NUMBER. CLA CLEAR STORAGE IN 'RES' STA #TRCL EXIT3 EQU * JSB CLOSE DEF *+2 DEF DCB LDA #TRCN DO WE HAVE A RESOURCE SZA,RSS NUMBER ALLOCATED? JMP EXIT4 NO, SKIP DE-ALLOCATION JSB RNRQ DEF *+4 DEF UNLKI DEF #TRCN DEF STAT NOP CLA STA #TRCN EXIT4 EQU * JSB CNUMD CONVERT # PASSES DEF *+3 DEF NPASS DEF ENCNT JSB CNUMD CONVERT TOTAL # RCS DEF *+3 DEF NRC DEF .RC. JSB CNUMD CONVERT TOTAL NUMBER OF RLWS DEF *+3 DEF TRLW DEF .RLW. JSB CNUMD CONVERT TOTAL NUMBER OF RLMS DEF *+3 DEF TRLM DEF .RLM. JSB CNUMD CONVERT TOTAL NUMBER OF STOPS DEF *+3 DEF TSTOP DEF .STP. JSB PRINT PRINT TERMINATION MESSAGE DEF ENMSG DEF ENMSL JSB EXEC TERMINATE DEF *+2 DEF D6 SPC 2 * SUBROUTINE TO PRINT SUB-TOTALS FOR * NUMBER OF ABNORMAL PROTOCOL ERRORS OBSERVED * SUBTL NOP JSB CNUMD CONVERT # OF PASSES DEF *+3 DEF BUFFR 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 PRINT PRINT SUBTOTALS DEF SUBMS DEF SUBML JMP SUBTL,I RETURN SKP * 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! DLD FNAME MOVE FILE NAME TO "TRACE INPUT=...." DST .LU. LDA FNAME+2 STA .LU.+2 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 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 TO USE FOR * OUTPUTTING RAW TRACE BUFFERS. * GFILE EQU * LDA LUTTY SET PRINT LU = TTY STA LUPRN STA WRFIL SET "WRITE TRACE DATA TO FILE" FLAG JSB EXEC ASK FOR FILE 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 FSIZE LOAD # RECORDS SPECIFIED. SZA,RSS DID HE FORGET TO SPECIFY? LDA D20 DEFAULT TO 20 RECORDS STA FSIZE CMA,INA SPECIFIED # RECORDS SSA,RSS > 0? JMP BAD1 NO. * * NOW CREATE THE FILE * JSB CREAT DEF *+8 DEF DCB DEF ERR DEF FNAME DEF FSIZE DEF D1 FILE TYPE IS 1 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 * 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 & SHARED DEF SCODE DEF CRTG SSA ERROR? JMP FIERR YES, PRINT ERROR & QUIT. JMP TRCC1 NO, WE'RE IN BUSINESS! SPC 2 * HERE TO LOG DATA TO A DISC FILE * WRDTA EQU * WRDT1 JSB WRITF DEF *+5 DEF DCB DEF ERR DEF BTIME DEF FWSIZ SSA,RSS ERROR? JMP REDTA NO, GO GET NEXT RECORD 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 "/TRC65: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 WRDT1 WRITE THE DATA 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. SPC 2 * * SUBROUTINE TO ISSUE A "GET" UPON ASSIGNED I/O CLASS NUMBER. * GET NOP JSB EXEC DEF *+6 DEF D21N DEF #TRCL DEF BUFFR DEF TRACZ DEF TEMP NOP IGNORE ERRORS JMP GET,I 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 EXEC PRINT LINE DEF *+5 DEF D2 DEF LUPRN @@ NOP ADDRESS OF BUFFER STORED HERE NOP ADDRESS OF LENGTH STORED HERE 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 EXEC GET DEVICE STATUS DEF *+6 DEF D13 DEF DLU DEF EQT5 DEF EQT4 DUMMY PARAMETER DEF LUTYP LU & SUBCHANNEL STORED HERE 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 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 @TRAC 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 SPC 2 * DATA BUFFERS AND CONSTANTS * M20 DEC -20 M12 DEC -12 M4 DEC -4 M2 DEC -2 D0 DEC 0 D1 DEC 1 D2 DEC 2 D3 DEC 3 D4 DEC 4 D5 DEC 5 D6 DEC 6 D7 DEC 7 B22 OCT 22 UNLKI OCT 40044 UNLOCK RN & RELEASE IT, NO-ABORT D12 DEC 12 D13 DEC 13 D20 DEC 20 D22 DEC 22 D122 DEC 122 D128 DEC 128 B200 EQU D128 D21N OCT 100025 CLASS 'GET', NO ABORT SKP HED1 ASC 16,DVA65 TRACE PROGRAM REV 1-22-79 HED1L ABS *-HED1 HED2 ASC 7,TRACE INPUT= .LU. BSS 3 TRACE LU OR FILE NAME STORED HERE HED2L ABS *-HED2 HED3 ASC 20,---------------------------------------- ASC 15,------------------------------ HED3L ABS *-HED3 HED4 EQU * ASC 2, STORE DISPLAY ENHANCEMENT HERE ASC 2,REC# .REC. ASC 3, STORE CONVERTED ASCII RECORD # HERE ASC 3,,PASS# .PAS. BSS 3 ASC 3,,TIME: HED4$ ASC 9, HED4L ABS *-HED4 @HD4. DEF HED4$ HED5 ASC 16,NXRX MNEM DATA STATE EQT# TICK# ASC 1, ASC 16,NXRX MNEM DATA STATE EQT# TICK# HED5L ABS *-HED5 HED6 ASC 8,LOGGED AT NODE # .NOD. BSS 3 ASCII STORAGE FOR NODE # WHERE LOGGED HED6L ABS *-HED6 * BADMS ASC 8,ILLEGAL RESPONSE BADML ABS *-BADMS * ENMSG ASC 5,TRC65:END SUBMS EQU * ENCNT ASC 3, STORAGE # OF PASSES LOGGED HERE ASC 7, RECS LOGGED, SUBM1 EQU * .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 ENMSL ABS *-ENMSG SUBML ABS *-SUBMS-1 SUB1L ABS *-SUBM1-2 * MESG2 ASC 6,FILE ? 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,/TRC65:REWINDING FILE MSG5L ABS *-MESG5 MSG1 ASC 19,LINK LU, -LU TO TRACE ALL, OR ?_ MSG1L ABS *-MSG1 MSG2 ASC 7,CLASS NUMBER = .CLA. BSS 3 ASC 3, RN #= .RN. BSS 3 ASC 2,(8) MSG2L ABS *-MSG2 @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 * * STATE DESCRIPTIONS * @STAT DEF *+1 ASC 24, DRIVER LEGEND: ASC 24,---------------------------------------------- ASC 24,STATE 0:INITIATING READ, SENDING TNW ASC 24,STATE 1:WRITING, SENDING RC ASC 24,STATE 2:WRITING, SENT RC, EXPECT TNW ASC 24,STATE 3:WRITING, SENDING DATA LENGTH ASC 24,STATE 4:WRITING, SENT DATA LNTH, EXPECT ECHO ASC 24,STATE 5:WRITING, SENDING REQUEST LENGTH ASC 24,STATE 6:WRITING, SENT REQ. LNTH, EXPECT ECHO ASC 24,STATE 7:WRITE RETRY ASC 24,STATE 8:WRITE PREAMBLE FAILURE--RETRY ASC 24,STATE 9:YIELD FOR SIMULTANEOUS REQUEST ASC 24,STATE 10:WRITING, SENDING TNW, EXPECT TNW ASC 24,STATE 11:PERFORMING WRITE RETRY ASC 24,STATE 12:FIRST INTERRUPT IN LSTEN MODE, EXP.RC ASC 24,STATE 13:GOT 'RC', SEND 'TNW', EXP. DATA LEN ASC 24,STATE 14:RECEIVING, EXPECTING DATA LENGTH ASC 24,STATE 15:ECHOING DATA LENGTH, EXPECT REQ. LNTH ASC 24,STATE 16:RECEIVING, EXPECTING REQ. LNTH ASC 24,STATE 17:QUEUE BUSY, SENDING 'STOP' ASC 24,STATE 18:REQUEST TO SEND 'STOP' ASC 24,STATE 19:READ RQST, ECHOING RQST LNTH ASC 24,STATE 20:READ RQST, CHECKING RESPONSE ASC 24,STATE 21:BLOCK HAS BEEN READ, WAITING FOR TNW ASC 24,STATE 22:BLOCK READ BUT LAST CTRL UNREC ASC 24,STATE 23:CHECKING RESPONSE TO RLW ASC 24,STATE 24:'STOP' RECEIVED DURING XMIT--ABORT ASC 24,STATE 25:PARITY ERROR(READ OR WRITE) ASC 24,STATE 26:PROTOCOL FAILURE ASC 24,STATE 27:TIME-OUT OCCURRED-END OF RQST ASC 24,STATE 28:SIMULTANEOUS REQUEST RETRY ASC 24,STATE 29:SEND 'STOP' AS 'LISTEN MODE' REJECT ASC 24,STATE 30:POWER FAILED! BLANK ASC 24, ASC 24, -> SHOWS OLDEST ENTRY. ^ INDICATES TIME-OUT ASC 24, R INDICATES RECEIVE, X INDICATES TRANSMIT @@END DEF * SIGNIFIES END OF LEGEND. @@HED DEC 24 # WORDS IN EACH EXPLANATION 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" NDFLG NOP FLAG: 0 UNTIL SOURCE NODE # FOR TRACE IS PRINTED SKPFL NOP FLAG:0 IF WE SKIPPED THE LAST RECORD WRFIL NOP FLAG FOR "STORE DATA IN FILE" LEN NOP FILE LENGTH NOBSV NOP NCNTR NOP FREC NOP FIRST RECORD NUMBER LREC NOP LAST RECORD NUMBER LSTPS NOP STORAGE FOR LAST PASS NUMBER ICNWD NOP NPNTR NOP NSTOP NOP COUNTER OF NUMBER OF 'STOPS' SEEN THIS PASS NRLW NOP " " " " 'RLW'S " " " NRLM NOP " " " " 'RLM'S " " " NRC NOP " " " " 'RC'S " " " TRLW NOP COUNTER OF TOTAL NUMBER OF RLWS SEEN TRLM NOP " " " " " RLMS " TSTOP NOP " " " " " STOPS " NTENT EQU D4 # WORDS PER TRACE TABLE ENTRY NWEQT DEC 15 NUMBER OF WORDS PER EQT 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' ALL ASC 3,(ALL) @ALL DEF ALL ASC0 ASC 1,0 COLON ASC 1,: ASCII COLON (:) 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 * TEMP NOP PBUFR BSS 10 FNAME EQU PBUFR SCODE EQU PBUFR+4 CRTG EQU PBUFR+5 FSIZE EQU PBUFR+7 ICODE NOP TROPT NOP EQT5 NOP EQT4 NOP LUTYP NOP WORD NOP @PBUF DEF PBUF @PBF0 DEF PBUF0 TRMLN ABS PBUFX-PBUF0 PBUFL ABS PBUFX-PBUF IVDEO ASC 2,&dB INVERSE VIDEO SETUP. BVDEO ASC 2,&d@ BLACK-VIDEO SETUP. @BVDO DEF BVDEO @IVDO DEF IVDEO @BLNK DEF BLANK DVFLG NOP FLAG:-1 IF PRINTER IS TERMINAL, ELSE 0 DCB BSS 144 BUFF BSS 48 PRAMS BSS 5 LUTTY EQU PRAMS LUPRN EQU PRAMS+1 MODE EQU PRAMS+2 STAT NOP NPRNT NOP RAROW ASC 1,-> RIGHT ARROW CNTR NOP RECN NOP RECORD NUMBER COUNTER NCHAR NOP LINK NOP @TRAC DEF BUFFR+2 ADDRESS OF TRACE TABLE .SIZE EQU 170 SIZE OF TRACE BUFFER TRACZ ABS .SIZE STORAGE FOR SIZE OF TRACE BUFFER BTIME BSS 2 DOUBLE-WORD TIME-OF-DAY STORAGE NODE# BSS 1 STORE NODE NUMBER HERE WHEN WRITING/READING BUFFR BSS .SIZE TRACE BUFFER FWSIZ ABS *-BTIME NPASS EQU BUFFR PASS COUNTER TRACN EQU BUFFR+1 * * A EQU 0 B EQU 1 EQTA EQU 1650B SPC 2 ERR NOP ..... EQU * SEE HOW BIG IT IS END TRC65