ASMB,Q,C HED PRINT TRACE OF DS/3000 LOG * (C) HEWLETT-PACKARD CO. NAM TRC3K,4,90 91750-16178 REV.2013 800604 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: TRC3K *SOURCE: 91750-18178 * RELOC: 91750-16178 * PGMR: DMT LST ************************** TRC3K ************************* * * * SOURCE: 91750-18178 * * * * BINARY: 91750-16178 * * * * PROGRAMMER: DAVE TRIBBY * * * * OCTOBER 13, 1978 * * * ************************************************************** SPC 1 EXT NAMR,IFTTY,IFBRK,.DFER,#PKUP EXT EXEC,CNUMD,KCVT,CNUMO,REIO,TMVAL EXT OPEN,READF,WRITF,POSNT,RWNDF,CLOSE * A EQU 0 A-REGISTER B EQU 1 B-REGISTER SUP SKP * TRC3K JSB #PKUP PICK UP PARAMETERS DEF *+4 DEF PMASK DEF NCMDI DEF DEFLU SPC 1 * * PROCESS FIRST PARAMETER--COMMAND INPUT * GTCMI LDA @CMDI JSB OPNDV OPEN THE COMMAND DEVICE. DEF CMDIN JMP GTRCI NORMAL RETURN...GET TRACE INPUT. LDA DEFLU ERROR RETURN...USE DEFAULT LU. LDB @CMDI STA B,I CLA CLEAR OTHER NAMR WORDS. INB STA B,I INB STA B,I INB STA B,I JMP GTCMI SPC 1 * * PROCESS SECOND PARAMETER--LOGGING INPUT * GTRCI CLA,INA SET RECORD STA RECNO NUMBER TO 1. LDA @TRCI JSB OPNDV OPEN THE TRACE INPUT DEVICE. DEF TRCIN JMP CHKFL NORMAL RETURN...CHECK FILE TYPE. PRTCI JSB ERMSG PROMPT FOR TRACE INPUT. DEF TIPRM DEC -15 LDA DEFLU SET "ECHO IOR B600 INPUT" STA TEMP BIT. JSB REIO READ FROM DEFAULT LU. DEF *+5 DEF SD1 DEF TEMP DEF INBUF DEF D40 JMP EXCMD ON ERROR, TERMINATE. CLE,ELB STB INLEN SAVE NO OF CHARACTERS. CLA,INA RESET PARSE STA PNTR POINTER. JSB PNAMR PARSE INTO TRACE INPUT ARRAY. LDA NAME,I IF NEGATIVE SSA VALUE ENTERED, JMP EXCMD TERMINATE! JMP GTRCI OPEN IT. * MAKE SURE LOGGING INPUT ISN'T A FIXED LENGTH FILE CHKFL LDA TRCIN IF IT'S NOT CPA "FI" A FILE, RSS IT'S OK. JMP GTROT LDA ERROR GET FILE TYPE FROM OPEN. CPA D1 TYPE = 1? JMP FIXDL YES...ERROR. CPA D2 TYPE = 2? JMP FIXDL YES...ERROR. JMP GTROT NOT TYPE 1 OR 2, SO IT'S OK. FIXDL JSB ERMSG PRINT ERROR DEF BADTY MESSAGE FOR DEC 15 BAD FILE TYPE. JSB CLOSE CLOSE THE DEF *+2 FILE. DEF TRCIN+1 JMP PRTCI GET NEW FILE NAME. SPC 1 * * PROCESS THIRD PARAMETER--TRACE OUTPUT * GTROT JSB OPNTO SPC 1 * PRINT HEADING... JSB PRINT DEF HEAD1 DEC 25 SPC 1 * JSB PRINT PRINT DEF BLANK BLANK D1 DEC 1 LINE. * * SET FORMAT AND PRINTING DEFAULTS. LDA DEFFG SET HEADING STA PRFLG AND DRIVER BITS. RESTO CCA SET OTHER OPTIONS OFF. STA !CLAS STA !EREC STA !RTE# STA !SREC STA !STRM * *** MAIN LOOP FOR COMMAND PROCESSING BEGINS HERE *** COMMD LDA DN6 SET 0-LEN COUNTER STA L0CNT TO SIX. COMD1 JSB READ READ COMMAND. DEF "?" (PROMPT) D4 DEC 4 SZB,RSS IF 0-LEN RECORD, JMP LEN0 CHECK FOR 6 IN A ROW. SSB IF NEGATIVE LENGTH, JMP EXCMD ALL DONE. CMB,INB SAVE NEGATIVE NUMBER OF STB BCNT CHARACTERS FOR COUNTER. * LDA .CMLN GET BYTE ADDRESS OF COMMAND. JSB NBLNK FIND FIRST NON-BLANK CHARACTER. JMP CMERR ALL BLANK COMMAND--ERROR JMP CMERR CHARACTER LT A BLANK--ERROR STA CMSAV LDY D6 CHAR > BLANK--OK, SET UP INDEX FOR LDB .CLEN COMMAND SEARCH & GET ADDRESS OF LENGTH STB TBLN OF NEXT COMMAND TABLE AND SAVE. LDB .CMTB GET BYTE ADDRESS OF COMMAND TABLE JSB SERCH AND PERFORM SEARCH JMP CMERR ERROR RETURN SPC 2 * * COMMAND WORD OK--NOW GET PARAMETERS * CLA ZERO PARAMETER COUNT STA FICNT LDA .PTAB RESET PARAMETER STA .NEXT TABLE ADDRESS LDA .ETAB RESET END STA .NXTE TABLE ADDR. LDA CMSAV GET ADDRESS OF COMMAND GTPAR JSB IBLNK FIND NEXT BLANK OR COMMA JMP RTAB1 NONE--JUMP TO COMMAND ROUTINE STA .NXTE,I SAVE ENDING ADDRESS. ISZ .NXTE JSB NBLNK FIND NEXT NON-DELIMITING CHARACTER. JMP RTAB2 NONE--JUMP TO COMMAND ROUTINE. JMP PMERR LT--ILLEGAL CHARACTER STA .NEXT,I GT--IT'S POSSIBLE SAVE PARAM ADDR. ISZ .NEXT AND INCREMENT TABLE ADDRESS ISZ FICNT INCREMENT PARAMETER COUNT LDB FICNT MAKE SURE NO MORE THAN MAX CPB MXPRM JMP PMERR MORE--AN ERROR JMP GTPAR OK--CONTINUE SEARCH SPC 2 * * HERE ON END OF PARSE. COMMAND ROUTINE TABLE. * RTAB1 STA .NXTE,I SAVE LAST END POINTER. ISZ .NXTE RTAB2 JPY RTAB3 YES--JUMP TO COMMAND ROUTINE RTAB3 EQU *-1 JMP HECMD ?? (HELP) COMMAND ROUTINE JMP EXCMD EXIT COMMAND ROUTINE JMP FOCMD FORMAT COMMAND ROUTINE JMP LICMD LIST COMMAND ROUTINE JMP PRCMD PRINT COMMAND ROUTINE JMP SECMD SET COMMAND ROUTINE SPC 3 * * HERE WHEN 0-LENGTH RECORD IS READ. BUMP COUNTER (INITIALIZED TO -6). * WHEN IT ROLLS OVER, TERMINATE THE PROGRAM. * LEN0 ISZ L0CNT JMP COMD1 JMP EXCMD SPC 5 * * DATA AREA FOR COMMAND PARSING * CMTB ASC 12,SETPRINTLISTFORMATEXIT?? .CMTB DBL CMTB * COMMAND LENGTHS (BYTES) IN REVERSE ORDER-- .CLEN DEF * D2 DEC 2 DEC 4 DEC 6 DEC 4 D5 DEC 5 D3 DEC 3 * L0CNT NOP CMSAV NOP .CMLN DBL INBUF BCNT NOP FICNT NOP RECNO NOP "?" ASC 4,/TRC3K:_ * SPC 3 * * ERRORS-- * PMERR JSB ERMSG REPORT DEF PMER PARAMETER DEC 17 ERROR. JMP COMMD GET NEXT COMMAND. PMER ASC 17,** ILLEGAL OR MISSING PARAMETER ** * CMERR JSB ERMSG REPORT DEF CMER ILLEGAL DEC 11 COMMAND. JMP COMMD GET NEXT ONE. CMER ASC 11,** ILLEGAL COMMAND ** SKP * * ROUTINE TO FIND NEXT BLANK, COMMA, OR EQUAL SIGN IN STRING * ON ENTRY: * A->STRING (BYTE ADDRESS) * BCNT = -(# CHARACTERS IN STRING) * ON EXIT: * A->NEXT BLANK, COMMA, OR EQUAL SIGN (IF ANY) IN STRING * RETURN POINTS = * IBLNK,I IF NO BLANKS, COMMAS, OR EQUAL SIGNS * IBLNK,I+1 IF BLANK OR COMMA FOUND * IBLNK NOP IBL1 LDB .BLNK GET ADDRESS OF CHAR. BLANK CBT D1 COMPARE BYTE JMP IBL3 EQ--RETURN+1 JMP IBL2 LT--CONTINUE SEARCH LDB .COMA GT--SEE IF COMMA CBT D1 JMP IBL3 EQ--RETURN+1 JMP IBL2 LT--CONTINUE SEARCH LDB .EQSN GT--SEE IF AN EQUAL SIGN CBT D1 JMP IBL3 EQ--RETURN+1 NOP LT, OR GT,--CONTINUE SEARCH IBL2 INA GET NEXT CHAR. IN STRING ISZ BCNT DECREMENT LENGTH JMP IBL1 JMP IBLNK,I END-OF-STRING--RETURN IBL3 ADA DN1 ISZ IBLNK INCREMENT RETURN JMP IBLNK,I POINT AND RETURN SPC 2 * * ROUTINE TO FIND NEXT CHARACTER THAT IS NOT A BLANK, COMMA, OR * EQUAL SIGN * ON ENTRY: * A->STRING (BYTE ADDRESS) * BCNT = -(# CHARACTERS IN STRING) * ON EXIT: * A->CHAR. OTHER THAN BLANK, COMMA, OR EQUAL SIGN (IF FOUND) * RETURN POINTS = * NBLNK,I IF ALL BLANK(S), COMMA(S), OR EQUAL SIGN(S) * NBLNK,I+1 IF CHARACTER LT A BLANK * OR LT A COMMA AND GT A BLANK * NBLNK,I+2 IF CHARACTER GT A COMMA * NBLNK NOP NBL1 LDB .BLNK GET BLANK CHAR. ADDRESS CBT D1 DO COMPARISON JMP NBL2 EQ--TRY NEXT JMP NBL4 LT--RETURN+1 LDB .COMA GT--SEE IF A COMMA CBT D1 JMP NBL2 EQ--TRY NEXT JMP NBL4 LT--RETURN+1 LDB .EQSN GT--SEE IF AN EQUAL SIGN CBT D1 JMP NBL2 EQ--TRY NEXT NOP JMP NBL3 LT, OR GT,--RETURN+2 NBL2 ISZ BCNT DECREMENT STRING LENGTH JMP NBL1 AND CONTINUE SEARCH JMP NBLNK,I END OF STRING--RETURN NBL3 ISZ NBLNK RETURN+2 NBL4 ISZ NBLNK RETURN+1 JMP NBLNK,I SPC 2 * * ROUTINE TO SEARCH FOR COMMAND OR KEYWORD IN TABLE * ON ENTRY: * A->BYTE IN STRING FOR COMPARISON * B->COMMAND OR KEYWORD TABLE * TBLN->COMMAND OR KEYWORD LENGTHS TABLE * Y=# OF COMMANDS OR KEYWORDS IN TABLE * ON EXIT: * A->LAST CHARACTER IN STRING COMPARED * Y=INDEX FOR COMMAND, IF FOUND, ELSE 0 * RETURN POINTS = * SERCH,I IF WORD IN STRING DOES NOT MATCH A COMMAND * OR KEYWORD * SERCH,I+1 IF MATCH FOUND * SERCH NOP SRCH1 STA VALUE STB SESCR SAVE COMMAND TABLE ADDRESS TEMPORARILY LBY TBLN,I GET LENGTH FOR COMPARISON STB CMPLN LDB SESCR PICK BACK UP THE TABLE ADDRESS CBT CMPLN DO COMPARISON JMP SRCH2 SAME--RETURN+1 NOP LT--AN ABBREVIATION? STB SESCR SAVE PLACE IN COMMAND TABLE TEMPORARILY LDB .BLNK GET BYTE ADDRESS OF CHAR. BLANK CBT D1 COMPARE BLANK AND BYTE IN COMMAND STRING JMP SRCH2 EQ--AN ABBREVIATION, RETURN+1 JMP SERCH,I LT--ILLEGAL CHAR., ERROR RETURN LDB .COMA GT--SEE IF CHAR. A COMMA CBT D1 JMP SRCH2 EQ--AN ABBREVIATION JMP SERCH,I LT--ILLEGAL CHAR, ERROR RETURN LDB .EQSN GT--SEE IF CHAR. AN EQUAL SIGN CBT D1 JMP SRCH2 EQ--AN ABBREVIATION JMP SERCH,I LT--ILLEGAL CHAR, ERROR RETURN DSY GT--CHECK NEXT CMMD OR KEYWORD RSS IN TABLE IF ANY LEFT JMP SERCH,I NO MORE, ERROR RETURN LDA VALUE LDB SESCR JMP SRCH1 ELSE, TRY AGAIN SRCH2 ISZ SERCH JMP SERCH,I SPC 2 CHARS ASC 2, ,= BLANK EQU CHARS .BLNK DBL CHARS .COMA DBL CHARS+1 .EQSN DBR CHARS+1 CMPLN NOP TBLN NOP VALUE NOP SESCR NOP SKP * * ?? (HELP) COMMAND ROUTINE * HECMD EQU * LDA TRCOT IF TRACE OUTPUT SSA,RSS IS NOT INTERACTIVE, JMP COMMD SKIP COMMAND. JSB PRINT PRINT DEF CMLST COMMAND ABS CMLND-CMLST LIST. JMP COMMD RETURN TO PROMPT. * CMLST ASC 14, COMMAND DESCRIPTION BYT 15,12 ASC 15, ?? DISPLAY COMMANDS BYT 15,12 ASC 11, EXIT END TRC3K BYT 15,12 ASC 19, FORMAT SET OUTPUT LISTING FORMAT BYT 15,12 ASC 12, LIST SET LISTING BYT 15,12 ASC 18, PRINT PRINT SELECTED BUFFERS BYT 15,12 ASC 20, SET LIMIT RECORDS TO BE PRINTED BYT 15,12 CMLND EQU * SKP * * PRINT COMMAND ROUTINE * PRCMD EQU * LDA .PTAB ANY PARAMETER GIVEN? CPA .NEXT JMP PRNXT NO--DEFAULT TO NEXT. LDB .PRLN CHECK KEYWORD. STB TBLN LDY D3 LDB .PRKY LDA A,I JSB SERCH JMP PMERR LDA .PTAB ONLY PARAMETER GIVEN? INA CPA .NEXT JPY PRTAB YES. GO DO IT. JMP PMERR NO. ERROR. * PRTAB EQU *-1 JMP PRNXT JMP PRFIR JMP PRALL * * PRINT FIRST RECORD PRFIR JSB RWTRI POSITION TO FIRST RECORD. * PRNXT JSB PBUFR PRINT NEXT QUALIFYING BUFFER. JMP NOQAL EOF: PRINT WARNING. JMP COMMD * NOQAL JSB PRINT PRINT THE DEF QALMS "NONE QUALIFIED" DEC 10 WARNING. JMP COMMD GET NEXT COMMAND. QALMS ASC 10,** NONE QUALIFIED ** * PRALL JSB RWTRI REWIND FILE TO START RECORD. JSB PBUFR PRINT NEXT QUALIFYING BUFFER. JMP COMMD NO MORE--END OF COMMAND JMP PRALL+1 GET NEXT BUFFER. SPC 2 PRKEY ASC 6,ALLFIRSTNEXT .PRKY DBL PRKEY .PRLN DEF * DEC 4 DEC 5 DEC 3 SKP * SUBROUTINE TO POSITION TRACE INPUT TO STARTING RECORD. * CALLING SEQUENCE: JSB RWTRI * RWTRI NOP ENTRY. LDA !SREC GET STARTING RECORD. SZA IF ZERO SSA OR NEGATIVE, CLA,INA USE 1. STA DRECN STORE FOR POSITIONING. * LDA RECNO CALCULATE DIFFERENCE CMA,INA BETWEEN CURRENT ADA DRECN POSITION AND STA CNTR DESTINATION. SZA,RSS IF CURRENTLY THERE, JMP RWTRI,I RETURN. * LDB TRCIN IF TRACE INPUT CPB "FI" IS FROM A FILE, JMP RWFIL GO POSITION IT. * LDA TRCIN SET UP EXEC AND B77 CONTROL WORD IOR STCOD FOR I/O STATUS. STA STWRD * SSA IF COUNTER < 0, JMP BSPAC IT'S A BACKWARD SPACE. * CMA,INA MAKE COUNTER STA CNTR NEGATIVE. LDA TRCIN+1 SET UP AND B77 CONWD FOR IOR FSCOD FORWARD SPACE. STA CONWD * SPCMT JSB EXEC FORWARD/BACKWARD DEF *+3 SPACE DEF SD3 ONE DEF CONWD RECORD. JMP TIER ERROR. JSB EXEC CHECK FOR DEF *+3 DYNAMIC DEF SD3 STATUS DEF STWRD EOF. JMP TIER AND B240 SZA JMP EOFER EOF--WARN USER. ISZ CNTR BUMP COUNTER. JMP SPCMT STAY IN LOOP UNTIL DONE. JMP RWRTN GO TO RETURN. * BSPAC LDA TRCIN+1 SET UP AND B77 CONWD FOR IOR BSCOD BACKSPACE. STA CONWD JMP SPCMT GO POSITION IT. * * WARN USER OF END-OF-FILE ENDOF ASC 9,** END OF FILE ** EOFER JSB ERMSG DEF ENDOF DEC 9 RSS PRINT RECORD NUMBER. * * REPORT ERROR POSITIONING TRACE INPUT FROM LU. TIER JSB RTERR PRINT A- & B-REG. LDA DRECN CALCULATE ADA CNTR ACTUAL RECORD STA RECNO NUMBER. JSB CNUMD CONVERT DEF *+3 TO DEF RECNO ASCII DEF FRMCP+3 (DECIMAL). JSB ERMSG PRINT. DEF FRMCP DEC 6 JMP RWTRI,I RETURN. * * RWFIL JSB POSNT POSITION FILE. DEF *+4 DEF TRCIN+1 DEF ERROR DEF CNTR LDA ERROR IF ERROR, SSA,RSS JMP RWRTN LDB @TRCI POINT TO TRACE INPUT STB NAME JSB FILER AND REPORT ERROR. JSB RWNDF REWIND DEF *+2 TRACE INPUT. DEF TRCIN+1 CLA,INA SET RECORD STA RECNO NUMBER = 1. CCA SET STARTING STA !SREC REC TO DEFAULT. JMP RWTRI,I RETURN. * RWRTN LDA DRECN SET RECORD STA RECNO NUMBER. JMP RWTRI,I RETURN. DRECN NOP CONWD NOP STWRD NOP FSCOD OCT 300 FORWARD SPACE CODE FOR EXEC. BSCOD OCT 200 BACKSPACE CODE FOR EXEC. STCOD OCT 600 DYNAMIC STATUS CODE FOR EXEC. CNTR NOP SD3 DEF 3,I B77 OCT 77 B240 OCT 240 SKP * * FORMAT COMMAND ROUTINE * FOCMD EQU * LDA .PTAB GET PARAMETER POINTER. CPA .NEXT NONE? JMP FODEF USE DEFAULT. LDB FICNT MAKE SURE ADB DN3 ONLY TWO SSB,RSS PARAMETERS JMP PMERR WERE GIVEN. * LDA A,I LDB .FOLN STB TBLN LDY D4 LDB .FOKY JSB SERCH SEARCH FOR FORMAT TYPE. JMP PMERR (ERROR.) JPY FOTAB SET OPTION BIT. OPT2 LDA .PTAB IF ONLY ONE INA OPTION CPA .NEXT PROVIDED, JMP COMMD DONE. * CHECK OUT SECOND PARAMETER (MUST BE DRIVER). LDA A,I POINT TO 2ND PARAMETER. LDY D4 LDB .FOKY JSB SERCH SEARCH. JMP PMERR NOT FOUND--ERROR. CYA IF NOT CPA D3 THIRD IN RSS TABLE, JMP PMERR ERROR. LDA PRFLG ADD DRIVER IOR DRVFG FLAG TO STA PRFLG PRINT OPTIONS. JMP COMMD GET NEXT COMMAND. FOTAB EQU *-1 JMP FOAPP JMP FODAT JMP FODRV JMP FOHED * FOAPP LDA APPFG SET APPENDAGE BITS STA PRFLG JMP OPT2 * FODAT LDA DATFG SET DATA BITS STA PRFLG JMP OPT2 * FODRV LDA DRVFG SET DRIVER BIT STA PRFLG JMP OPT2 * FOHED LDA HEDFG SET HEADING BIT STA PRFLG JMP OPT2 * FODEF LDA DEFFG DEFAULT--SET HEADING AND DRIVER BITS STA PRFLG JMP COMMD SPC 2 FOKEY ASC 13,HEADERDRIVERDATAAPPENDAGE .FOKY DBL FOKEY .FOLN DEF * DEC 9 DEC 4 DEC 6 DEC 6 * FLAGS FOR TYPE OF PRINTING: HEDFG OCT 1 APPFG OCT 3 DATFG OCT 7 DRVFG OCT 10 DEFFG OCT 11 * BIT POSITIONS: HEBIT EQU HEDFG APBIT OCT 2 DABIT OCT 4 DRBIT EQU DRVFG PRFLG NOP LISTING FLAG SKP * * LIST COMMAND ROUTINE * LICMD LDA FICNT MAKE SURE CPA D1 ONLY ONE PARAMETER RSS WAS PROVIDED. JMP PMERR * CALCULATE COLUMN NUMBER OF PARAMETER. LDA .CMLN SUBTRACE BYTE ADDRESS CMA,INA OF COMMAND START FROM ADA PTAB PARAMETER POSITION. INA ADD 1 AND SAVE AS STA PNTR NAMR POINTER. LDA @TRCO CALL NAMR STA NAME FOR PARSE INTO JSB PNAMR TRACE OUTPUT AREA. JSB OPNTO OPEN IT UP. * JMP COMMD GET NEXT COMMAND. SKP * * SET COMMAND ROUTINE * SECMD LDA .PTAB GET POINTER TO KEYWORD ADDRESS CPA .NEXT WAS IT SPECIFIED? JMP CUOPT NO--PRINT CURRENT OPTIONS. STA SETAB YES--SAVE ADDRESS FOR LATER LDB FICNT CPB D1 IF ONE PARAM, JMP CHK@ CHECK FOR "@". SLB EVEN NUMBER OF PARAMETERS? JMP PMERR NO--ERROR. * LDA .ETAB SET INA LOCAL STA ENPTR END POINTER. CLE,ERB SET UP NEG. CMB,INB COUNTER FOR STB PCNTR VALUES. * SLOOP LDA SETAB,I GET: KEYWORD ADDRESS, LDY D5 # OF LEGAL KEYWORDS, LDB .SKYL ADDR OF KEYWORD LENGTHS TABLE, STB TBLN AND LDB .SKEY ADDR OF KEYWORD TABLE JSB SERCH DO COMPARISON OF KEYWORDS JMP PMERR NO MATCH--INFORM USER OF ERROR * STY CMDNO SAVE COMMAND NUMBER. ISZ SETAB LDA .CMLN CALCULATE START CMA,INA COLUMN OF ADA SETAB,I VALUE. INA STA PNTR STORE NAMR'S PNTR. ISZ ENPTR LDA .CMLN CALCULATE LAST CMA,INA COLUMN OF ADA ENPTR,I VALUE. INA STA INLEN STORE LENGTH. LDA @PARM CALL NAMR STA NAME FOR PARSE JSB PNAMR INTO "PARM". CPA "@" IF "@" SPECIFIED, JMP USDEF USE THE DEFAULT. SSA IF NEGATIVE, JMP PMERR ERROR! LDY CMDNO IS VALUE JPY CHKTB IN BOUNDS? * USDEF CCA,RSS SET TO -1 TO DEFAULT. CKRTN LDA PARM WITHIN BOUNDS-- SAY !VALU STORE VALUE. LDA CMDNO IF STARTING RECORD CPA D4 WAS RESET, JSB RWTRI REWIND TRACE INPUT. ISZ SETAB BUMP ISZ ENPTR POINTERS. ISZ PCNTR MORE? JMP SLOOP YES! STAY IN LOOP. JMP COMMD NO--GET NEXT COMMAND. * * ROUTINES TO CHECK WHETHER VALUES ARE WITHIN BOUNDS. * * CHECK MESSAGE CLASS CCLAS ADA DN9 IF CLASS IS SSA,RSS < 8, JMP PMERR ERROR! JMP CKRTN * * CHECK ENDING RECORD CEREC LDB !SREC IF STARTING REC SSB NOT SPECIFIED, JMP CKRTN OK. CMB,INB SUBTRACT END ADA B FROM START. SSA IF < 0, JMP PMERR ERROR. JMP CKRTN * * CHECK RTE NUMBER CRTE# AND HB377 IF > 255, SZA JMP PMERR ERROR. JMP CKRTN * * CHECK STARTING RECORD CSREC LDB !EREC IF ENDING REC SSB NOT SPECIFIED, JMP CKRTN OK. CMA,INA SUBTRACT START ADA B FROM END. SSA IF < 0, JMP PMERR ERROR. JMP CKRTN * * CHECK STREAM CSTRM ADA DN4 CONVERT FROM STA NAME,I DECIMAL TO OCTAL. ADA BN20 IF < OCTAL 20, SSA JMP PMERR ERROR. ADA BN10 IF > OCTAL 27, SSA,RSS JMP PMERR ERROR. JMP CKRTN * * TABLE OF PARAMETER CHECK ROUTINES CHKTB EQU *-1 JMP CCLAS JMP CEREC JMP CRTE# JMP CSREC JMP CSTRM * * * ONE PARAMETER GIVEN. IF "@", RESET ALL. CHK@ LDA .CMLN CALCULATE START CMA,INA COLUMN OF ADA .PTAB,I PARAMETER. INA STA PNTR STORE NAMR'S PNTR. LDA @PARM CALL NAMR STA NAME FOR PARSE JSB PNAMR INTO "PARM". CPA "@" IF "@" SPECIFIED, JMP RESTO GO RESET ALL. JMP PMERR OTHERWISE, ERROR. * * * NO PARAMETER GIVEN. PRINT CURRENT OPTIONS. CUOPT LDA !CLAS CONVERT CLASS. SSA IF NEGATIVE, JMP NCLS USE "@". JSB CNUMO CONVERT TO DEF *+3 ASCII OCTAL. DEF !CLAS DEF ASCII DLD ASCII+1 STCLS DST OCLAS * LDA !STRM CONVERT STREAM. SSA JMP NSTM AND D7 IOR "20" STSTM STA OSTRM * LDA !RTE# CONVERT RTE NUMBER. SSA JMP NRT# JSB CNUMD DEF *+3 DEF !RTE# DEF ASCII DLD ASCII+1 STRT# DST ORTE# * LDA !SREC CONVERT STARTING RECORD. SSA JMP NSRC JSB CNUMD DEF *+3 DEF !SREC DEF OSREC * TSTER LDA !EREC CONVERT ENDING RECORD. SSA JMP NERC JSB CNUMD DEF *+3 DEF !EREC DEF OEREC * PROPT JSB PRINT PRINT DEF OPTNS THE ABS OPEND-OPTNS OPTIONS. JMP COMMD GET NEXT COMMAND. * * USE "@" WHEN CLASS, STREAM, OR RTE# NOT PROVIDED... NCLS LDB "@" LDA BLANK JMP STCLS NSTM LDA "@" JMP STSTM NRT# LDB "@" LDA BLANK JMP STRT# NSRC JSB .DFER DEF OSREC DEF "FRST JMP TSTER "FRST ASC 3, FIRST NERC JSB .DFER DEF OEREC DEF "LAST JMP PROPT "LAST ASC 3, LAST * OPTNS ASC 3,CLASS= OCLAS ASC 7,XXXX STREAM= OSTRM ASC 6,XX RTE NO.= ORTE# ASC 7,XXXX RECORDS OSREC ASC 5,XXXXXX TO OEREC ASC 3,XXXXXX OPEND EQU * * SETAB NOP * OPTIONS: !VALU EQU *-1 !CLAS NOP DS/3000 MESSAGE CLASS. !EREC NOP ENDING RECORD. !RTE# NOP RTE PROCESS NUMBER. !SREC NOP STARTING RECORD. !STRM NOP DS/3000 MESSAGE STREAM. SKEYT ASC 15,STREAMSTARTRECRTENOENDRECCLASS .SKEY DBL SKEYT .SKYL DEF * DEC 5 DEC 6 DEC 5 DEC 8 DEC 6 * @PARM DEF PARM PARM BSS 10 "@" ASC 1,@ "20" ASC 1,20 CMDNO NOP COMMAND NUMBER PCNTR NOP PARAMETER COUNTER ENPTR NOP END TABLE POINTER SKP SKP ** EXIT COMMAND ** EXCMD JSB CLOSE CLOSE ALL FILES. DEF *+2 DEF CMDIN+1 JSB CLOSE DEF *+2 DEF TRCIN+1 JSB CLOSE DEF *+2 DEF TRCOT+1 * JSB EXEC TERMINATE. DEF *+2 DEF D6 SPC 2 HEAD1 ASC 10, ASC 15,***** DS/1000-3000 TRACE ***** SPC 4 * SUBROUTINE TO CHECK WHETHER USER WANTS TO "BREAK" * CALLING SEQUENCE: JSB BRCHK * * BRCHK NOP ENTRY. JSB IFBRK IF BREAK DEF *+1 FLAG IS SSA,RSS SET, JMP BRCHK,I * JSB READ ASK: DEF CONT? CONTINUE? DEC 5 LDA INBUF GET RESPONSE. CPA "NO" IF NO, JMP COMMD GET NEXT COMMAND. * JMP BRCHK,I OTHERWISE, RETURN. * CONT? ASC 5,CONTINUE?_* SKP ** SUBROUTINE TO PRINT NEXT QUALIFYING BUFFER ** PBUFR NOP ENTRY. RDREC JSB BRCHK CHECK FOR USER'S BREAK. LDA !EREC ENDING RECORD SSA SPECIFIED? JMP DOGET NO--GET RECORD. INA CMA,INA ADA RECNO CURRENT RECORD CMA,SSA < ENDING? JMP PBUFR,I NO--EOF RETURN. * DOGET JSB GETRC READ A TRACE RECORD. SZB IF LENGTH IS SSB <= 0, JMP PBUFR,I TAKE EOF RETURN. * LDB INBUF GET FIRST WORD. SSB,RSS IF >= 0, JMP RQRP REQUEST OR REPLY. LDA PRFLG IS DRIVER BIT AND DRBIT SET IN PRINT SZA,RSS FLAG? JMP RDREC NO--READ AGAIN. CPB DN1 -1? JMP EVTRC YES--EVENT TRACE. CPB DN2 -2? JMP LTSTS YES--LONG TERM STATS. SPC 1 * REPORT BAD TRACE FILE LGFER JSB ERMSG PRINT MESSAGE. DEF BADLG DEC 12 JMP EXCMD TERMINATE. * BADLG ASC 12,** BAD LOGGING RECORD ** SPC 2 * PRINT LONG TERM STATISTICS * LTSTS JSB PRINT PRINT DEF BLANK BLANK DEC 1 LINE. * CCA ADA RECNO STA TEMP JSB CNUMD PUT RECORD DEF *+3 NUMBER IN DEF TEMP HEADING. DEF SHEAD+3 JSB PRINT PRINT DEF SHEAD HEADING. DEC 20 LDA DN11 SET UP COUNTER STA CNT1 FOR 11 LINES. LDA @WRD2 INITIALIZE ADA DN1 STA VPNT VALUE POINTER. LDA MSGTB INITIALIZE STA MPNT MESSAGE POINTER. LDA D14 SET OUTPUT STA BUMP BUMP TO 14. * LOOPA LDA AW3 SET OUTPUT STA OPNTR POINTER. LDA BLANK CLEAR JSB FILL BUFFER. * LOOPB ISZ VPNT BUMP STAT POINTER. LDA MPNT,I GET # OF STA CNT2 CHARACTERS. ISZ MPNT LDA MPNT MESSAGE SOURCE ADDR. LDB OPNTR MESSAGE DESTINATION FIELD. ADB D3 MVW CNT2 MOVE MESSAGE. STA MPNT POINT TO NEXT MESSAGE. LDB VPNT,I CONVERT THE JSB TO10 VALUE. ISZ CNT1 LAST MESSAGE? RSS JMP LPRNT YES--GO DO LAST PRINT. LDA OPNTR IF PRINTLINE CPA AW17 NOT FULL, JMP LOOPB MOVE 2ND MESSAGE. * JSB PRINT PRINT DEF BUFR MESSAGES. DEC 30 JMP LOOPA NO--STAY IN LOOP. SPC 1 LPRNT JSB PRINT PRINT DEF BUFR FINAL D14 DEC 14 STATISTIC. * JSB PRINT PRINT DEF BLANK BLANK DEC 1 LINE. * JMP GDRTN TAKE "GOOD" RETURN. SKP * PRINT EVENT TRACE * EVTRC LDB D4 SET PRINT STB BUMP BUMP TO 4. * LDB @WRD6 B:=FIRST ENTRY ADDRESS. STB BPNTR LDA @INBF CALCULATE ADA TRCLN LAST ENTRY STA @EOR ADDRESS. * CCA ADA RECNO STA TEMP JSB CNUMD PUT RECORD DEF *+3 NUMBER IN DEF TEMP HEADING. DEF FRMCP+3 JSB PRINT PRINT DEF FRMCP IT. DEC 6 * LOOP LDA BLANK CLEAR JSB FILL PRINTLINE. JSB NXTWD PICK UP WORD 2. STA WRD2 CLB LSL 8 B:=COMPLETION STATUS. STB STATS CLB LSL 2 B:=REQUEST CODE. STB REQCD STORE. CLB LSL 6 B:=FUNCTION CODE. STB FUNCD STORE. * DECODE FUNCTION LDA REQCD LOAD REQUEST CODE. CPA D1 IF = 1, JMP RDFUN DECODE FOR READ. CPA D2 IF = 2, JMP WRITE DECODE FOR WRITE. CPA D3 IF = 3, JMP CNTRL DECODE FOR CONTROL. * BAD FUNCTION BAD LDB AW3 SET UP OUTPUT STB OPNTR POINTER. LDB REQCD CONVERT REQUEST JSB TO8 CODE AND LDB REQCD FUNCTION TO JSB TO8 OCTAL. JMP WRD3 GO GET WORD 3. * RDFUN LDA FUNCD ** PROCESS READ FUNCTION ** CPA D2 ONLY GOOD ONE RSS IS 2. JMP BAD DLD STA05+1 MOVE DST BUFR+7 "READ". LDA FUNCD ADA @RTBL GET TABLE ADDRESS. LDA A,I LDB A,I STORE STB CNT1 LENGTH. INA A-REG POINTS TO MESSAGE. LDB AW10 B-REG POINTS TO DESTINATION. MVW CNT1 MOVE MESSAGE. JMP WRD3 GO GET WORD 3. * WRITE LDA FUNCD ** PROCESS WRITE FUNCTION ** SZA,RSS CHECK JMP BAD FOR CPA D7 BAD JMP BAD FUNCTION. LDB AW8 MOVE LDA @WRIT "WRITE". MVW D3 LDA FUNCD DON'T USE AND D7 FUNCTION BITS 9-11. ADA @WTBL GET TABLE ADDRESS. LDA A,I LDB A,I STORE STB CNT1 LENGTH. INA A-REG POINTS TO MESSAGE. LDB AW11 B-REG POINTS TO DESTINATION. MVW CNT1 MOVE MESSAGE. JMP WRD3 GO GET WORD 3. * CNTRL LDA FUNCD ** PROCESS CONTROL FUNCTION ** CPA D5 CHECK FOR JMP BAD BAD FUNCTION AND D7 AND LDB D11 MAP CPA FUNCD 40-43 LDB D6 TO ADA DN6 5-10. SSA,RSS JMP BAD ADA B ADA @CTBL GET TABLE ADDRESS. LDA A,I LDB A,I STORE STB CNT1 LENGTH. INA A-REG POINTS TO MESSAGE. LDB AW8 B-REG POINTS TO DESTINATION. MVW CNT1 MOVE MESSAGE. * WRD3 JSB NXTWD PICK UP WORD 3. CPA DN1 NEXT ENTRY? JMP SPCAS YES--SPECIAL CASE! * LOOP2 CLB LSL 8 B:=EVENT #. STB EVENT STORE. CLB LSL 8 B:=STATE #. STB STATE STORE. * LDA EVENT DECODE EVENT. ADA DN33 CHECK SSA,RSS FOR JMP BADE BAD LDA EVENT EVENT. ADA @ETBL GET TABLE ADDRESS. LDA A,I LDB A,I STORE STB CNT1 LENGTH. INA A-REG POINTS TO MESSAGE. LDB AW17 B-REG POINTS TO DESTINATION. MVW CNT1 MOVE MESSAGE. * DESTA LDA STATE DECODE STATE. ADA DN25 CHECK SSA,RSS FOR JMP BADS BAD LDA STATE STATE. ADA @STBL GET TABLE ADDRESS. LDA A,I LDB A,I STORE STB CNT1 LENGTH. INA A-REG POINTS TO MESSAGE. LDB AW26 B-REG POINTS TO DESTINATION. MVW CNT1 MOVE MESSAGE. * PRTEV JSB PRINT PRINT EVENT ENTRY. DEF BUFR D33 DEC 33 LDA BLANK JSB FILL FILL OUTPUT BUFFER WITH BLANKS. JSB NXTWD GET NEXT WORD. CPA DN1 DONE WITH THIS ENTRY? JMP PRSTA YES--PRINT STATUS INFORMATION. LDB AW18 NO-- STB OPNTR SET OUTPUT POINTER JMP LOOP2 AND PRINT THEM. * * SPECIAL CASE--NO EVENT/STATE WORDS SPCAS JSB PRINT PRINT DEF BUFR FIRST WORD DEC 15 INFO ONLY. * PRSTA LDA STATS GET STATUS. CLB CONVERT RRR 3 TO ALF,RAL ASCII RRL 3 (OCTAL). IOR "00" STA STASC LDA D18 STATUS MESSAGE STA STMLN LENGTH = 12. LDA STATS IF STATUS IS ADA BN22 LESS THAN 22 (OCTAL) SSA,RSS JMP PSTAT LDA STATS MOVE STATUS MESSAGE. ADA @STAT LDA A,I LDB A,I STB TEMP ADB STMLN SET STATUS MESSAGE LEN. STB STMLN INA LDB @STMS MVW TEMP PSTAT JSB PRINT PRINT STATUS MESSAGE. DEF STMSG STMLN NOP * LDB BPNTR CPB @EOR LAST ENTRY IN RECORD? RSS YES! JMP LOOP NO--LOOP AGAIN. SPC 1 JSB TMVAL CONVERT DEF *+3 TIME INTO DEF INBUF+1 INDIVIDUAL DEF CENTS PARTS. * JSB KCVT CONVERT DEF *+2 HOURS. DEF HOURS STA ASTIM * JSB KCVT CONVERT DEF *+2 MINUTES. DEF MINTS IOR "00" LDB COLON RRR 8 DST ASTIM+1 * JSB KCVT CONVERT DEF *+2 SECONDS. DEF SECND IOR "00" STA ASTIM+3 * JSB KCVT CONVERT DEF *+2 TENS OF DEF CENTS MILLISECONDS. IOR "00" LDB DOT RRR 8 DST ASTIM+4 * LDA D16 TMLEN := 16. STA TMLEN LDA WRD2 SET WRD2 TO AND B377 CALL TYPE. STA WRD2 CPA RDINI READ INITIAL? JMP CNVRD GO CONVERT READ LEN. CPA WRCON WRITE CONVERSATIONAL? JMP CNVRD GO CONVERT READ LEN. JMP PRTIM NEITHER--PRINT TIME. * CNVRD LDA INBUF+4 CONVERT RECEIVE SSA LENGTH (WORDS). CLA,RSS IF NEGATIVE, USE 0. CLE,ERA STA INBUF+4 JSB CNUMD DEF *+3 DEF INBUF+4 DEF RCVLN LDA D24 TMLEN := 24. STA TMLEN * LDA WRD2 IF FUNCTION IS CPA RDINI READ INITIAL, JMP PRTIM GO PRINT. * LDA INBUF+3 CONVERT CMA,INA SEND CLE,ERA LENGTH STA INBUF+3 (WORDS). JSB CNUMD DEF *+3 DEF INBUF+3 DEF SNDLN LDA D33 TMLEN = 33. STA TMLEN * PRTIM JSB PRINT PRINT DEF TMLIN INFORMATION. TMLEN NOP * JMP GDRTN TAKE "GOOD" RETURN. SPC 3 * VARIABLES USED IN EVENT TRACE * EVENT NOP STATE NOP REQCD NOP FUNCD NOP SPC 2 BADE LDA AW17 BAD EVENT-- STA OPNTR CONVERT LDB EVENT TO JSB TO10 DECIMAL. JMP DESTA SPC 2 BADS LDA AW26 BAD STATE-- STA OPNTR CONVERT LDB STATE TO JSB TO10 DECIMAL. JMP PRTEV SPC 3 TMLIN ASC 10, TIME ASTIM ASC 11,XX:XX:XX.XXX RECV LEN RCVLN ASC 9,XXXXXX SEND LEN SNDLN ASC 3,XXXXXX SPC 1 DOT ASC 1, . COLON ASC 1,:: SPC 1 * TIME ARRAY CENTS NOP SECND NOP MINTS NOP HOURS NOP CDAY NOP SKP * VERIFY AUTHENTICITY OF AND PRINT REQUESTS AND REPLIES * ** SMALL SUBROUTINE TO PRINT RECORD HEADING ** PBHED NOP ENTRY. JSB PRINT PRINT DEF BLANK BLANK DEC 1 LINE. * LDB "30" DETERMINE LDA INBUF WHETHER MESSAGE SZA,RSS IS FROM LDB "10" 1000 STB FRMCP+14 OR 3000. CCA ADA RECNO STA TEMP JSB CNUMD CONVERT DEF *+3 RECORD DEF TEMP NUMBER. DEF FRMCP+3 JSB PRINT PRINT DEF FRMCP IT. DEC 17 JMP PBHED,I RETURN. * FRMCP ASC 17,RECORDXXXXXX, MESSAGE FROM XX00: SPC 2 * RQRP LDA PRFLG IF PRING FLAG AND HEBIT DOESN'T HAVE HEADING SZA,RSS BIT SET, JMP RDREC READ NEXT RECORD. * CPB D1 CHECK WORD 0: JMP CKWD1 MUST BE 1 SZB OR ZERO. JMP LGFER OTHERWISE, LOGGING FILE ERROR. * CKWD1 LDA LNCLS CHECK WORD 1: SZA,RSS JMP BADBF ERROR IF ZERO. AND B377 ISOLATE MESSAGE CLASS. STA CLASS SAVE IT. ADA DN9 SSA,RSS JMP BADBF ERROR IF MESSAGE CLASS > 8. * LDA LNCLS GET APPENDAGE LENGTH. ALF,ALF AND B377 ADA DN8 STA APLEN * LDA STMWD CHECK WORD 3: AND B377 ISOLATE STREAM TYPE. STA STREM SAVE IT. ADA BN20 SSA JMP BADBF ERROR IF < OCTAL 20. ADA BN10 SSA,RSS JMP BADBF ERROR IF > OCTAL 27. * LDA FRMTO GET WORD 4: AND B377 STA TO# SAVE TO #. LDA FRMTO ALF,ALF AND B377 STA FRM# SAVE FROM #. * LDA DTLEN CHECK WORD 8: SSA JMP BADBF ERROR IF NEGATIVE. * LDB DTLEN INB CLE,ERB ADB D8 STB BUFL SAVE WORD COUNT. INB CMB,INB LDA LNCLS ALF,ALF AND B377 ADA B SSA,RSS JMP BADBF ERROR. * * DO ALL THE OPTIONS MATCH? LDA !CLAS CLASS SSA,RSS CPA CLASS RSS JMP RDREC LDA !STRM STREAM SSA,RSS CPA STREM RSS JMP RDREC LDB FRM# RTE NUMBER LDA INBUF (USE FROM # OR SZA TO # DEPENDING LDB TO# UPON DIRECTION.) LDA !RTE# SSA,RSS CPA B RSS JMP RDREC ** ALL SYSTEMS ARE GO! * JSB PBHED PRINT HEADING. * * CONVERT VALUES TO ASCII. JSB CNUMO STREAM. DEF *+3 DEF STREM DEF ASCII LDA ASCII+2 STA PSTM# * JSB CNUMD CLASS. DEF *+3 DEF CLASS DEF ASCII DLD ASCII+1 RRL 8 DST PCLS# * JSB CNUMD FROM PROCESS # DEF *+3 DEF FRM# DEF ASCII DLD ASCII+1 DST PFRM# * JSB CNUMD TO PROCESS # DEF *+3 DEF TO# DEF ASCII DLD ASCII+1 DST PTO# * JSB CNUMO SEQUENCE # DEF *+3 DEF RTSQ# DEF PSEQ# * JSB CNUMD TOTAL LENGTH. DEF *+3 DEF BUFL DEF PTLEN * JSB PRINT PRINT INFORMATION. DEF MSHED ABS MSEND-MSHED SPC 1 LDA BLANK FILL BUFFER JSB FILL WITH BLANKS. * LDA CLASS MERGE CLASS ALF,ALF AND STREAM. IOR STREM STA CLSTR * CPA POPCL POPEN/PCLOSE/BREAK? JMP C7S21 YES. SPECIAL CASE. * LDA @CLST A-REG CONTAINS ENTRY ADDRESS. SRLOP LDB A,I GET CONTENTS. CPB CLSTR MATCH? JMP FOUND YES! INA NO. BUMP POINTER AND JMP SRLOP STAY IN SEARCH LOOP. * * CLASS 7, STREAM 21 FOUND. C7S21 LDB APLEN GET APPENDAGE LENGTH. LDA @PCLO ASSUME PCLOSE. ADB DN7 GREATER THAN 6? SSB,RSS LDA @POPN POPEN. CPB DN7 ZERO? LDA @PCBR COULD BE BREAK. JMP MVLB MOVE LABEL. * FOUND LDB @CLST GET OFFSET INTO CMB,INB INTO ARRAY. ADA B MPY D7 CALCULATE LABEL ADA @LBLS ADDRESS. MVLB LDB AW3 MOVE LABEL TO MVW D7 WORDS 3-9. * LDA @REQ LDB STMWD CHECK BIT 15 OF STREAM WD. SSB LDA @REP LDB AW10 MVW D3 MOVE "REQST" OR "REPLY". * LDA STMWD AND BIT14 IF BIT 14 IS SET, SZA,RSS JMP CKB13 LDA @REJ LDB AW13 MVW D4 MOVE "/REJECT". * CKB13 LDA STMWD AND BIT13 IF BIT 13 IS SET, SZA,RSS JMP CKSUB DLD CONT MOVE "CONT". DST BUFR+16 * * CHECK TO SEE IF FURTHER BREAKDOWN OF CALL IS POSSIBLE. CKSUB LDA CLSTR IF MESSAGE CPA INTCL IS INITIALIZATION, JMP MVBFL MOVE BUFFER LENGTH. LDA STMWD IF REPLY AND B140K OR REJECT SZA BIT IS SET, JMP PRINF GO PRINT. LDA APLEN IF APPENDAGE LEN SZA,RSS IS ZERO, JMP PRINF GO PRINT. LDA CLSTR GET CLASS/STREAM. CPA C7S20 3000 RFA? JMP RFA3K YES. CPA C8S20 1000 RFA? JMP RFA1K YES. CPA C8S21 1000 DEXEC? JMP DEX1K YES. JMP PRINF GO PRINT. * * INITIALIZATION REQUEST OR REPLY. CONVERT BUFFER SIZE. * MVBFL LDA IBFLN GET BUFFER INDICATOR AND B377 FROM REQUEST/REPLY. INA ADD 1 AND MULTIPLY MPY D16 BY 16 TO GET # WORDS. STA IBFLN STORE BACK. JSB CNUMD CONVERT TO DECIMAL. DEF *+3 DEF IBFLN DEF BUFR+15 LDA @"BUF MOVE MESSAGE LDB AW19 TO OUTPUT LINE. MVW D4 JMP PRINF PRINT INFORMATION. * @"BUF DEF *+1 ASC 4, BUFFER * * 3000 REMOTE FILE ACCESS CALL RFA3K LDA RF3KW GET SUBROUTINE INDICATOR. SZA ZERO OR SSA NEGATIVE? JMP PRINF YES--GO PRINT. ADA BN25 > OCTAL 25? SSA,RSS YES--GO PRINT. JMP PRINF LDA TRF3K GET BASE ADDRESS. ADA RF3KW ADD INDEX ADA RF3KW THREE TIMES. ADA RF3KW JMP MVSUB GO MOVE NAME. * * 1000 REMOTE FILE ACCESS CALL RFA1K LDA RF1KW GET SUBROUTINE INDICATOR. SSA NEGATIVE? JMP PRINF YES--GO PRINT. ADA DN150 < DECIMAL 150? SSA JMP PRINF YES--GO PRINT. STA TEMP ADA DN13 > DECIMAL 162? SSA,RSS JMP PRINF YES--GO PRINT. LDA TRF1K GET BASE ADDRESS. ADA TEMP ADD INDEX ADA TEMP THREE TIMES. ADA TEMP JMP MVSUB MOVE NAME AND PRINT. * * 1000 DISTRIBUTED EXECUTIVE CALL DEX1K LDA DX1KW GET TYPE OF CALL. STA B SAVE. SZA ZERO OR SSA NEGATIVE? JMP PRINF YES--GO PRINT. ADA DN4 < 4? SSA JMP EXOK YES--IT'S OK. ADA DN6 BETWEEN 3 AND 6? SSA JMP PRINF YES--GO PRINT. ADA DN4 > 13? SSA,RSS JMP PRINF YES--GO PRINT. LDB DX1KW MAP CODES 10-13 ADB DN6 TO 4-7. EXOK LDA TDX1K GET BASE ADDRESS. ADA B ADD INDEX ADA B THREE TIMES. ADA B MVSUB STA SADDR STORE SOURCE ADDRESS. JSB .DFER MOVE SUBROUTINE NAME. DEF BUFR+19 SADDR DEF *-* * PRINF JSB PRINT PRINT INFORMATION. DEF BUFR DEC 22 * * DUMP HEADER IN OCTAL * JSB PRINT PRINT DEF HDHED "HEADER". DEC 3 LDA DN8 SET UP FOR STA NOBUF 8 WORDS LDA @WRD2 BEGINNING STA PTBUF AT HEADER. JSB PTWDS PRINT IT * * * THIS PORTION PRINTS THE APPENDAGE. * LDA PRFLG CHECK BITS IN PRFLG AND APBIT APPENDAGE BIT SET? SZA,RSS JMP PBF20 NO--GET NEXT COMMAND. * JSB CNUMD CONVERT DEF *+3 APPENDAGE DEF APLEN LENGTH. DEF APHED+8 JSB PRINT PRINT DEF APHED APPENDAGE DEC 14 HEADER. LDA APLEN IF LENGTH SZA,RSS IS ZERO, JMP PBF17 GO DO DATA. CMA,INA STORE NEGATIVE STA NOBUF LENGTH. ADA DN8 IS APPENDAGE ADA TRCLN RECORDED? CMA,SSA,RSS JMP PBF17 NO--GO DO DATA. * LDA @WRD2 POINT TO ADA D8 APPENDAGE STA PTBUF IN BUFFER. JSB PTWDS PRINT IT. * * THIS PORTION PRINTS ANY DATA WITH THE BUFFER * PBF17 LDA PRFLG AND DABIT DATA BIT SET? SZA,RSS JMP PBF20 NO--RETURN. * LDB APLEN CALCULATE NUMBER OF CLE,ELB BYTES IN APPENDAGE. CMB,INB LDA DTLEN SUBTRACT FROM HEADER ADA B WORD 8. SSA IF NEGATIVE, IT'S CLA REALLY ZERO. STA DABYT SAVE # DATA BYTES. INA CLE,ERA STA DAWRD SAVE # DATA WORDS. * JSB CNUMD CONVERT DEF *+3 DATA DEF DABYT LENGTH. DEF DAHED+6 JSB PRINT PRINT DEF DAHED DATA DEC 12 HEADER. LDA DAWRD IF LENGTH IS 0, SZA,RSS JMP PBF20 DONE. CCA ADA TRCLN CALCULATE # OF CMA,INA DATA WORDS ADA APLEN ACTUALLY IN ADA D8 BUFFER. STA NOBUF SAVE NEG. WORD COUNT. SSA,RSS IF NONE, JMP PBF20 DONE. * LDA @WRD2 POINT TO ADA D8 DATA ADA APLEN IN BUFFER. STA PTBUF JSB PTWDS PRINT IT. * PBF20 JSB PRINT PRINT DEF BLANK BLANK DEC 1 LINE. GDRTN ISZ PBUFR TAKE "GOOD" JMP PBUFR,I RETURN. SPC 2 DABYT NOP DAWRD NOP HDHED ASC 3,HEADER APHED ASC 14,APPENDAGE LENGTHXXXXXX WORDS DAHED ASC 12,DATA LENGTH XXXXXX BYTES SPC 2 * * ROUTINE TO TAKE WORDS FROM THE BUFFER, TRANSLATE THEM TO * ASCII OCTAL, AND PRINT THEM. * ON ENTRY: * NOBUF = NEG. # OF WORDS IN BUFFER TO BE MOVED * PTBUF = NEXT WORD IN BUFFER * PTWDS NOP LDA NOBUF ANY WORDS TO MOVE? SZA,RSS JMP PTWDS,I NO--RETURN. * STA PTEM1 SAVE TEMP COUNTER. JSB BRCHK CHECK FOR USER BREAK. LDA PTBUF SAVE TEMPORARY STA PTEM2 POINTER. LDA DN8 SET COUNTER FOR 8 WORDS. STA PTEM3 LDA BLANK FILL BUFFER JSB FILL WITH BLANKS. LDA ASTK STORE ASTERISK STA BUFR+28 AT WORD 29. LDA .BYT2 SET OUTPUT STA .OUTL POINTER. PTW1 JSB CNUMO CONVERT DEF *+3 TO ASCII DEF PTEM2,I OCTAL. DEF ASCII LDA ASCII ADD IOR "00" LEADING STA ASCII ZEROES LDA ASCII+1 TO IOR "00" ASCII STA ASCII+1 OCTAL. LDA ASCII+2 IOR "00" STA ASCII+2 LDB .OUTL B-REG := DEST. ADDR. INB (LEAVE LEADING BLANK) LDA .ASCI SOURCE ADDR. MBT D6 MOVE NUMBER. STB .OUTL SAVE DEST. ADDR. ISZ PTEM2 BUMP SOURCE POINTER. * ISZ PTEM1 ARE WE OUT OF WORDS? RSS JMP PTW5 YES--BRANCH TO ADD ASCII. ISZ PTEM3 DONE WITH 8 WORDS? JMP PTW1 NO--CONTINUE * * PREPARE THE ASCII SECTION. * PTW5 LDA DN8 SET UP COUNTER STA PTEM3 FOR 8 WORDS. LDA AW30 SET UP POINTER INTO STA .OUTL ASCII AREA OF BUFFER. PTW6 LDA PTBUF,I GET NEXT WORD ALF,ALF JSB CHKAS CHECK LEFT BYTE. STB PTEM4 LDA PTBUF,I JSB CHKAS CHECK RIGHT BYTE. LDA PTEM4 ALF,ALF IOR B COMBINE BYTES. STA .OUTL,I STORE IN ASCII AREA. ISZ .OUTL BUMP POINTER. ISZ PTBUF BUMP SOURCE POINTER. ISZ NOBUF OUT OF WORDS? RSS JMP PROCT YES. PRINT. ISZ PTEM3 DONE WITH 8 WORDS? JMP PTW6 NO--CONTINUE. * PROCT JSB PRINT PRINT. DEF BUFR D37 DEC 37 JMP PTWDS+1 GO TO START OF LOOP. SPC 3 * * SUBROUTINE TO CHECK ASCII CHARACTER. SET CHARACTER TO BLANK IF * IT IS LESS THAN OCTAL 40 OR GREATER THAN OCTAL 177. * CALLING SEQUENCE: * * JSB CHKAS * * CHKAS NOP ENTRY. AND B377 ISOLATE RIGHT BYTE. STA B SAVE IT. AND B340 CHECK FOR ASCII SZA,RSS CONTROL CHAR (<40). JMP LDSPC YES! LOAD SPACE. AND B200 CHECK FOR NON-ASCII SZA (200B BIT SET). LDSPC LDB SPACE YES! LOAD SPACE. JMP CHKAS,I RETURN. SPC 2 .OUTL NOP SPACE BYT 0,40 B200 OCT 200 B340 OCT 340 NOBUF NOP PTBUF NOP PTEM1 NOP PTEM2 NOP PTEM3 NOP PTEM4 NOP ASTK ASC 1, * * * BADBF JSB PBHED PRINT HEAD. JSB PRINT DISPLAY DEF BDBUF BAD BUFFER MESSAGE. DEC 6 * LDA @WRD2 PRINT OCTAL. STA PTBUF CCA ADA TRCLN CMA,INA STA NOBUF JSB PTWDS * JMP PBF20 RETURN. * BDBUF ASC 6, BAD BUFFER ASCII BSS 3 .ASCI DBL ASCII "30" ASC 1,30 "10" ASC 1,10 * MSHED ASC 3, CLASS PCLS# ASC 6, XX STREAM PSTM# ASC 4,XX FROM PFRM# ASC 4, XXX TO PTO# ASC 5, XXX SEQ# PSEQ# ASC 9,XXXXXX TOTAL LEN PTLEN ASC 3,XXXXXX MSEND EQU * * * * VALUES SET: BUFL NOP WORD COUNT. CLASS NOP DS/3000 MESSAGE CLASS. STREM NOP DS/3000 MESSAGE STREAM. APLEN NOP APPENDAGE LENGTH. FRM# NOP FROM PROCESS NUMBER. TO# NOP TO PROCESS NUMBER. SKP * SUBROUTINE TO OPEN THE TRACE OUTPUT DEVICE. * CALLING SEQUENCE: JSB OPNTO * OPNTO NOP ENTRY. LDA @TRCO JSB OPNDV OPEN THE TRACE OUTPUT DEVICE. DEF TRCOT JMP OPNTO,I NORMAL OPEN...RETURN. * LDB CMDIN+1 LDA CMDIN USE COMMAND INPUT SSA,RSS IF INTERACTIVE. OTHERWISE LDB DEFLU USE DEFAULT LU. STB TRCOT+1 STORE. CCA SET DEVICE TYPE STA TRCOT TO INTERACTIVE. JMP OPNTO,I RETURN. SPC 4 * * SUBROUTINE TO PRINT A RECORD ON TRACE OUTPUT DEVICE. * 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. LDA TRCOT IF OUTPUT IS CPA "FI" TO A FILE, JMP PRNT1 DO FILE WRITE. * JSB REIO WRITE ON LU. DEF *+5 DEF SD2 DEF TRCOT+1 MSG DEF *-* MSLEN DEF *-* JMP RTERR ERROR RETURN. JMP PRINT,I RETURN. * PRNT1 JSB WRITF WRITE ON FILE. DEF *+5 DEF TRCOT+1 DEF ERROR DEF MSG,I DEF MSLEN,I LDA ERROR CHECK FOR FILE ERROR. SSA,RSS JMP PRINT,I RETURN. * LDB @TRCO SET UP STB NAME NAME POINTER. JSB FILER REPORT ERROR. JMP EXCMD TERMINATE. SPC 3 * SUBROUTINE TO PRINT ERROR MESSAGE ON DEFAULT LU. * CALLING SEQUENCE: JSB ERMSG * DEF * DEC * ERMSG NOP ENTRY. LDA ERMSG,I PICK STA EMSG UP ISZ ERMSG PARAMETERS. LDA ERMSG STA EMSLN ISZ ERMSG SET RETURN ADDR. JSB REIO WRITE ON DEF *+5 DEFAULT DEF SD2 LU. DEF DEFLU EMSG DEF *-* EMSLN DEF *-* D0 NOP IGNORE ERRORS. JMP ERMSG,I RETURN. SKP * SUBROUTINE TO PROMPT AND READ ON COMMAND INPUT DEVICE. * CALLING SEQUENCE: JSB READ * DEF * DEC * READ NOP ENTRY. LDA READ,I PICK UP STA PMSG PARAMETERS. ISZ READ LDA READ STA PLEN ISZ READ SET RETURN ADDR. LDA CMDIN IF COMMAND INPUT IS CPA "FI" A FILE, JMP READ1 DO FILE READ. SSA,RSS IF NON-INTERACTIVE, JMP INPUT SKIP PROMPT. * JSB REIO CALL SYSTEM FOR WRITE. DEF *+5 DEF SD2 DEF CMDIN+1 PMSG DEF *-* PLEN DEF *-* JSB RTERR ERROR RETURN. * INPUT JSB REIO READ FROM LU. DEF *+5 DEF SD1 DEF CMDIN+1 DEF INBUF DEF D40 JSB RTERR ERROR RETURN. JMP ECHO ECHO. * READ1 JSB READF READ FROM FILE. DEF *+6 DEF CMDIN+1 DEF ERROR DEF INBUF DEF D40 DEF INLEN LDB INLEN SET B-REG TO LENGTH. LDA ERROR CHECK FOR ERROR. SSA,RSS JMP ECHO ECHO. * LDB @CMDI POINT TO STB NAME FILE NAME. JSB FILER REPORT ERROR. JMP EXCMD TERMINATE. SPC 2 ECHO STB ECHLN SAVE WORD LENGTH. SSB,RSS UNLESS NEGATIVE, CLE,ELB DOUBLE FOR STB INLEN BYTE LENGTH. SSB IF NOT EOF, JMP RDRTN CLE,ERB PUSH BLANK ADB @INBF ONTO END LDA BLANK OF LINE. STA B,I * LDA CMDIN+1 IF COMMAND INPUT IS CPA TRCOT+1 SAME AS TRACE OUTPUT, JMP RDRTN NO NEED TO ECHO. JSB PRINT PRINT DEF INBUF INPUT. ECHLN DEF *-* RDRTN LDB INLEN B-REG := # OF CHARS. JMP READ,I RETURN. SKP * SUBROUTINE TO "OPEN" A DEVICE. * CALLING SEQUENCE: LDA * JSB OPNDV * DEF (RETURNED) * * * ERRTN NOP ERROR RETURN ADDR. DTYPE NOP DEVICE DTYPEADDR. OPNDV NOP ENTRY. STA NAME SAVE NAME POINTER. ADA D4 ADDRESSES STA SECU OF SECURITY INA AND CARTRIDGE. STA CRN LDA OPNDV,I PICK UP STA DTYPE PARAMETER ADDR. LDA OPNDV SET INA NORMAL STA OPNDV RETURN. INA SET ERROR STA ERRTN RETURN. LDA NAME,I GET DEVICE NAME SZA,RSS IF 0, JMP ERRTN,I TAKE ERROR RETURN. LDA NAME GET ADA D3 STATUS LDA A,I BITS. AND D3 ISOLATE 1ST PARAM. CPA D3 ASCII? JMP OPNFL YES. GO OPEN FILE. LDA NAME,I IF LU > 64, AND NTB77 SZA JMP ERRTN,I ERROR! JSB IFTTY MUST BE AN LU. DEF *+2 CALL SYS ROUTINE TO DEF NAME,I CHECK TYPE. STA DTYPE,I STORE INTERACTIVE FLAG. LDA NAME,I ADD CONTROL BITS IOR B600 AND STORE LU NUMBER. ISZ DTYPE STA DTYPE,I JMP OPNDV,I RETURN. * OPNFL LDA "FI" SET DEVICE TYPE STA DTYPE,I AS FILE. LDA DTYPE GET ADDRESS INA OF DCB. STA DCB JSB OPEN OPEN FILE. DEF *+7 DCB DEF *-* DEF ERROR DEF NAME,I DEF D0 SECU DEF *-* CRN DEF *-* LDA ERROR ERROR? SSA,RSS JMP OPNDV,I NO. NORMAL RETURN. * JSB FILER REPORT ERROR. JMP ERRTN,I TAKE ERROR RETURN. SPC 3 * SUBROUTINE TO REPORT ERROR MESSAGE. * CALLING SEQUENCE: * * JSB FILER * FILER NOP ENTRY. CMA,INA MAKE ERROR STA TEMP POSITIVE. JSB KCVT CONVERT DEF *+2 TO ASCII DEF TEMP (DECIMAL). IOR "00" ADD LEADING 0. STA FLER# STORE IN MESSAGE. JSB .DFER MOVE DEF FLNM FILE NAME DEF *-* NAME. JSB ERMSG PRINT DEF FERMG ERROR D16 DEC 16 MESSAGE. JMP FILER,I RETURN. * FERMG ASC 5,** ERROR - FLER# ASC 6,XX ON FILE FLNM ASC 5, ** * ERROR NOP SPC 3 * SUBROUTINE TO REPORT RTE SYSTEM ERROR. * CALLING SEQUENCE: JSB RTERR * * RTERR NOP ENTRY. DST RTEMS+7 STORE ASCII MESSAGE. JSB ERMSG PRINT DEF RTEMS ERROR DEC 11 MESSAGE. CLB SET LENGTH TO 0. JMP RTERR,I RETURN. * RTEMS ASC 11,** RTE ERROR: XXXX ** SPC 3 * SUBROUTINE TO READ A TRACE RECORD. * CALLING SEQUENCE: JSB GETRC * * GETRC NOP ENTRY. LDA TRCIN IF DEVICE CPA "FI" TYPE IS FILE, JMP GTRC1 GO DO READF. * JSB REIO READ FROM LU. DEF *+5 DEF SD1 DEF TRCIN+1 DEF INBUF DEF D304 JMP TLUER ERROR RETURN. STB TRCLN SAVE LENGTH. GRETN ISZ RECNO BUMP RECORD COUNTER. NOP JMP GETRC,I * TLUER JSB RTERR PRINT RTE ERROR MESSAGE. JMP GRETN RETURN. * * GTRC1 JSB READF READ FROM FILE. DEF *+6 DEF TRCIN+1 DEF ERROR DEF INBUF DEF D304 DEF TRCLN LDB TRCLN LOAD # OF WORDS READ. LDA ERROR CHECK FOR ERROR. SSA,RSS JMP GRETN RETURN. * LDB @TRCI POINT TO STB NAME FILE NAME. JSB FILER REPORT ERROR. CLB READ LEN = 0. JMP GRETN RETURN. * TRCLN NOP SKP * SUBROUTINE TO CALL NAMR PARSE ROUTINE * CALLING SEQUENCE: * * JSB PNAMR * PNAMR NOP ENTRY POINT JSB NAMR CALL DEF *+5 NAMR DEF NAME,I ROUTINE. DEF INBUF DEF INLEN DEF PNTR LDA NAME,I LOAD PARAMETER. JMP PNAMR,I RETURN. SPC 2 PNTR NOP COLUMN POINTER SPC 5 * CONVERT B-REG CONTENTS TO ASCII (OCTAL) TO8 NOP STB TEMP STORE NUMBER. STA AREG SAVE A-REG. JSB CNUMO GO CONVERT. DEF *+3 DEF TEMP DEF OPNTR,I LDA AREG RESTORE A-REG. LDB OPNTR BUMP ADB BUMP OUTPUT STB OPNTR POINTER. CLB CLEAR B-REG. JMP TO8,I RETURN. SPC 5 * CONVERT B-REG CONTENTS TO ASCII (DECIMAL) * TO10 NOP STB TEMP STORE NUMBER. STA AREG SAVE A-REG. JSB CNUMD GO CONVERT. DEF *+3 DEF TEMP DEF OPNTR,I LDA AREG RESTORE A-REG. LDB OPNTR BUMP ADB BUMP OUTPUT STB OPNTR POINTER. CLB CLEAR B-REG. JMP TO10,I RETURN. SPC 3 * GET NEXT WORD IN BUFFER AND BUMP POINTER. * NXTWD NOP LDA BPNTR,I PICK UP WORD. ISZ BPNTR BUMP POINTER. JMP NXTWD,I RETURN. SPC 3 * FILL OUTPUT BUFFER WITH CHAR IN A-REG * FILL NOP LDX D37 INITIALIZE COUNTER. FLOOP SAX BUFR-1 STORE A-REG. DSX DECREMENT X-REG AND JMP FLOOP STAY IN LOOP UNTIL 0. * JMP FILL,I RETURN. SPC 3 SPC 6 * CONSTANTS AND STORAGE SPC 1 "NO" ASC 1,NO "FI" ASC 1,FI "00" ASC 1,00 @INBF DEF INBUF @WRD2 DEF INBUF+1 @WRD6 DEF INBUF+5 @EOR NOP VPNT NOP MPNT NOP BUMP NOP CNT1 NOP CNT2 NOP TEMP NOP AW3 DEF BUFR+2 AW8 DEF BUFR+7 AW10 DEF BUFR+9 AW11 DEF BUFR+10 AW13 DEF BUFR+12 AW17 DEF BUFR+16 AW18 DEF BUFR+17 AW19 DEF BUFR+18 AW26 DEF BUFR+25 AW30 DEF BUFR+29 .BYT2 DBR BUFR OPNTR NOP BUFR ASC 20, ASC 17, SHEAD ASC 20,RECORDXXXXXX, SLC LONG TERM STATISTICS: TIPRM ASC 8,LOGGING INPUT:_ * BADTY ASC 15,LOG FILE CANNOT BE TYPE 1 OR 2 DEFLU NOP WRD2 NOP STATS NOP INLEN NOP READ LENGTH BPNTR NOP BUFFER POINTER AREG NOP RDINI OCT 102 READ INITIAL FUNCTION CODE. WRCON OCT 203 WRITE CONVERSATIONAL CODE. BN25 OCT -25 BN22 OCT -22 BN20 OCT -20 BN10 OCT -10 DN150 DEC -150 DN33 DEC -33 DN25 DEC -25 DN13 DEC -13 DN11 DEC -11 DN9 DEC -9 DN8 EQU BN10 DN7 DEC -7 DN6 DEC -6 DN4 DEC -4 DN3 DEC -3 DN2 DEC -2 DN1 DEC -1 SD1 DEF 1,I SD2 DEF 2,I D18 DEC 18 D24 DEC 24 D40 DEC 40 D304 DEC 304 B600 OCT 600 B377 OCT 377 B140K OCT 140000 HB377 BYT 377,0 BIT14 OCT 40000 BIT13 OCT 20000 NTB77 OCT 177700 SPC 3 * LONG TERM STATS HEADINGS * MSGTB DEF *+1 MESSAGE TABLE D7 DEC 7 ASC 7, READ REQUESTS D8 DEC 8 ASC 8, WRITE REQUESTS D11 DEC 11 ASC 11, MESSAGES TRANSMITTED DEC 10 ASC 10, SPURIOUS INTERRUPTS D6 DEC 6 ASC 6, LINE ERRORS DEC 7 ASC 7, NAKS RECEIVED DEC 9 ASC 9, BCC/PARITY ERRORS DEC 7 ASC 7, LONG TIMEOUTS DEC 8 ASC 8, RESPONSE ERRORS DEC 7 ASC 7, RESPONSE REJ DEC 9 ASC 9, WACK/TTD RECEIVED SPC 3 * POINTERS INTO TABLES * @RTBL DEF RTBL-1 @WRIT DEF STA12+1 @WTBL DEF WTBL-1 @CTBL DEF CTBL @ETBL DEF ETBL @STBL DEF STBL @STAT DEF STATT SPC 3 * READ FUNCTION TABLE * RTBL DEF RMSG1 DEF RMSG2 RMSG1 DEC 4 ASC 4, INQUIRY RMSG2 DEC 4 ASC 4, INITIAL SPC 2 * WRITE FUNCTION TABLE * WTBL DEF WMSG1 DEF WMSG2 DEF WMSG3 DEF WMSG4 DEF WMSG5 WMSG1 DEC 4 ASC 4,INQUIRY WMSG2 DEC 1 ASC 1,2 WMSG3 DEC 5 ASC 5,CONVERSTNL WMSG4 DEC 3 ASC 3,RESET WMSG5 DEC 5 ASC 5,DISCONNECT SPC 2 * CONTROL FUNCTION TABLE * CTBL DEF CMSG0 DEF CMSG1 DEF CMSG2 DEF CMSG3 DEF CMS40 DEF CMS41 DEF CMS42 DEF CMS43 CMSG0 DEC 3 ASC 3,CLEAR CMSG1 DEC 5 ASC 5,INITIALIZE CMSG2 DEC 5 ASC 5,LINE OPEN CMSG3 DEC 5 ASC 5,LINE CLOSE CMS40 DEC 8 ASC 8,ESTABLISH LOC ID CMS41 DEC 8 ASC 8,ESTBL REM ID LST CMS42 DEC 8 ASC 8,CHNG ERROR PRAMS CMS43 DEC 8 ASC 8,ZERO COMM STATS SPC 2 * EVENT TABLE * ETBL DEF EVT00 DEF EVT01 DEF EVT02 DEF EVT03 DEF EVT04 DEF EVT05 DEF EVT06 DEF EVT07 DEF EVT08 DEF EVT09 DEF EVT10 DEF EVT11 DEF EVT12 DEF EVT13 DEF EVT14 DEF EVT15 DEF EVT16 DEF EVT17 DEF EVT18 DEF EVT19 DEF EVT20 DEF EVT21 DEF EVT22 DEF EVT23 DEF EVT24 DEF EVT25 DEF EVT26 DEF EVT27 DEF EVT28 DEF EVT29 DEF EVT30 DEF EVT31 DEF EVT32 EVT00 DEC 7 ASC 7,LINE OPEN REQ EVT01 DEC 7 ASC 7,LINE CLOSE REQ EVT02 DEC 8 ASC 8,READ INQUIRY REQ EVT03 DEC 8 ASC 8,READ INITIAL REQ EVT04 DEC 1 ASC 1,4 EVT05 DEC 1 ASC 1,5 EVT06 DEC 1 ASC 1,6 EVT07 DEC 1 ASC 1,7 EVT08 DEC 8 ASC 8,WRITE INQURY REQ EVT09 DEC 1 ASC 1,9 EVT10 DEC 7 ASC 7,WRITE CONV REQ EVT11 DEC 8 ASC 8,WRT RESET(EOT)RQ EVT12 DEC 8 ASC 8,WRITE DISCON REQ EVT13 DEC 1 ASC 1,13 EVT14 DEC 7 ASC 7,ACK0 RECEIVED EVT15 DEC 7 ASC 7,ACK1 RECEIVED EVT16 DEC 7 ASC 7,WACK RECEIVED EVT17 DEC 7 ASC 7,RVI RECV/SENT EVT18 DEC 6 ASC 6,ENQ RECEIVED EVT19 DEC 6 ASC 6,NAK RECEIVED EVT20 DEC 6 ASC 6,EOT RECEIVED EVT21 DEC 8 ASC 8,DLE EOT RECEIVED EVT22 DEC 6 ASC 6,TTD RECEIVED EVT23 DEC 7 ASC 7,TEXT RECEIVED EVT24 DEC 8 ASC 8,BCC PRTY/FMT ERR EVT25 DEC 6 ASC 6,TEXT OVERRUN EVT26 DEC 8 ASC 8,GARBAGE RECEIVED EVT27 DEC 8 ASC 8,BAD ID SEQUENCE EVT28 DEC 7 ASC 7,SHORT TIMEOUT EVT29 DEC 6 ASC 6,LONG TIMEOUT EVT30 DEC 2 ASC 2,LOW EVT31 DEC 2 ASC 2,HIGH EVT32 DEC 2 ASC 2,MID SPC 2 * STATE TABLE * STBL DEF STA00 DEF STA01 DEF STA02 DEF STA03 DEF STA04 DEF STA05 DEF STA06 DEF STA07 DEF STA08 DEF STA09 DEF STA10 DEF STA11 DEF STA12 DEF STA13 DEF STA14 DEF STA15 DEF STA16 DEF STA17 DEF STA18 DEF STA19 DEF STA20 DEF STA21 DEF STA22 DEF STA23 DEF STA24 STA00 DEC 4 ASC 4,UNOPENED STA01 DEC 4 ASC 4,CONTROL STA02 DEC 4 ASC 4,READ ENQ STA03 DEC 7 ASC 7,READ ENQ ERROR STA04 DEC 7 ASC 7,CHECK READ REQ STA05 DEC 2 ASC 2,READ STA06 DEC 5 ASC 5,READ TEXT STA07 DEC 4 ASC 4,READ RVI STA08 DEC 8 ASC 8,RESTRICTED READ STA09 DEC 5 ASC 5,WRITE ENQ STA10 DEC 8 ASC 8,WRITE ENQ ERROR STA11 DEC 8 ASC 8,ENQ-ENQ CONTENTN STA12 DEC 3 ASC 3,WRITE STA13 DEC 5 ASC 5,WRITE TEXT STA14 DEC 8 ASC 8,WRITE RESPNS ENQ STA15 DEC 7 ASC 7,CHECK RESPONSE STA16 DEC 8 ASC 8,BAD ACK RECEIVED STA17 DEC 6 ASC 6,WRITE RETRY STA18 DEC 8 ASC 8,ENQ RCV IN WRITE STA19 DEC 8 ASC 8,ENQ RCRD IN WRIT STA20 DEC 8 ASC 8,WRITE CONVERSTNL STA21 DEC 5 ASC 5,WRITE EOT STA22 DEC 8 ASC 8,READ EOT RSPONSE STA23 EQU WMSG5 STA24 DEC 5 ASC 5,WRITE TTD SPC 2 STATT DEF ST00 DEF ST01 DEF ST02 DEF ST03 DEF ST04 DEF ST05 DEF ST06 DEF ST07 DEF ST10 DEF ST11 DEF ST12 DEF ST13 DEF ST14 DEF ST15 DEF ST16 DEF ST17 DEF ST20 DEF ST21 ST00 DEC 9 ASC 9,NORMAL COMPLETION ST01 DEC 8 ASC 8,INVALID REQUEST ST02 DEC 16 ASC 16,REQST INCOMPATIBLE W/ LINE STATE ST03 DEC 1 ASC 1, [BAD ID SEQUENCE] ST04 DEC 11 ASC 11,LOCAL HARDWARE FAILURE ST05 DEC 6 ASC 6,EOT RECEIVED ST06 DEC 15 ASC 15,DISCONNECT (DLE EOT) RECEIVED ST07 DEC 6 ASC 6,LONG TIMEOUT ST10 DEC 11 ASC 11,EOT SENT, ENQ RECEIVED ST11 DEC 6 ASC 6,DATA OVERRUN ST12 DEC 9 ASC 9,MAX NAKS RECEIVED ST13 DEC 7 ASC 7,MAX ENQS SENT ST14 DEC 6 ASC 6,RVI RECEIVED ST15 DEC 11 ASC 11,ENQ SENT, ENQ RECEIVED ST16 DEC 11 ASC 11,ENQ SENT, NAK RECEIVED ST17 DEC 9 ASC 9,MAX ENQS RECEIVED ST20 DEC 1 ASC 1, [TTD SENT, NAK RECEIVED] ST21 DEC 10 ASC 10,IMPOSSIBLE SITUATION * STMSG ASC 16, COMPLETION STATUS STASC ASC 18,XX: @STMS DEF STASC+2 * DS/3000 CLASS/STREAM TYPES @CLST DEF *+1 INTCL BYT 0,20 BYT 0,21 BYT 3,20 BYT 3,22 BYT 4,22 BYT 4,23 BYT 4,24 BYT 4,25 BYT 4,26 BYT 4,27 BYT 5,20 BYT 5,21 BYT 5,22 BYT 5,23 BYT 5,24 BYT 6,20 BYT 6,21 BYT 6,22 BYT 6,23 BYT 6,24 BYT 6,25 BYT 6,27 C7S20 BYT 7,20 BYT 7,22 BYT 7,26 BYT 7,27 C8S20 BYT 10,20 C8S21 BYT 10,21 CLSTR NOP SEARCH KEY STORED HERE. @LBLS DEF *+1 ASC 7,INITIALIZATION ASC 7,TERMINATION ASC 7,SYSTEM COMMAND ASC 7,DSLINE ASC 7,PREAD ASC 7,PWRITE ASC 7,PCONTROL PCLOS ASC 7,PCLOSE ASC 7,ACCEPT ASC 7,REJECT ASC 7,TERMINAL PRINT ASC 7,TERMINAL READ ASC 7,TERMINAL READX ASC 7,TERMINAL CNTRL ASC 7,ABORT I/O ASC 7,HELLO ASC 7,BYE ASC 7,BREAK ASC 7,ABORT PROGRAM ASC 7,RESUME ASC 7,CNTRL-Y ASC 7,KILL JOB ASC 7,DS/3000 RFA ASC 7,DSLINE ASC 7,ACCEPT POPEN ASC 7,REJECT POPEN ASC 7,DS/1000 RFA ASC 7,REMOTE EXEC ASC 7, * POPCL BYT 7,21 POPEN/PCLOSE/BREAK @POPN DEF *+1 ASC 7,POPEN @PCLO DEF PCLOS @PCBR DEF *+1 ASC 7,PCLOSE/BREAK * @REQ DEF *+1 ASC 3, REQST @REP DEF *+1 ASC 3, REPLY @REJ DEF *+1 ASC 4,/REJECT CONT ASC 2,CONT SPC 2 TRF3K DEF *-2 TABLE FOR 3000 RFA ASC 3,FOPEN ASC 3,FCLOS ASC 3,FREAD ASC 3,FRDIR ASC 3,FRDSK ASC 3,FWRIT ASC 3,FWDIR ASC 3,FRLAB ASC 3,FWLAB ASC 3,FUPDT ASC 3,FSPAC ASC 3,FPOIN ASC 3,FINFO ASC 3,FCHEK ASC 3,FCNTL ASC 3,FSTMD ASC 3,FRNAM ASC 3,FRLAT ASC 3,FLOOK ASC 3,FUNLK * TRF1K DEF *+1 TABLE FOR 1000 RFA ASC 3,DCRET ASC 3,DPURG ASC 3,DOPEN ASC 3,DWRIT ASC 3,DREAD ASC 3,DPOSN ASC 3,DWIND ASC 3,DCLOS ASC 3,DNAME ASC 3,DCONT ASC 3,DLOCF ASC 3,DAPOS ASC 3,DSTAT * TDX1K DEF *-2 TABLE FOR 1000 DISTRIBUTED EXECUTIVE ASC 3,READ ASC 3,WRITE ASC 3,CONTRL ASC 3,SCHEDL ASC 3,TIME ASC 3,X TIME ASC 3,STATUS SPC 2 * MAXPR EQU 10 UP TO 10 PARAMETERS/COMMAND MXPRM ABS MAXPR+1 PTAB BSS MAXPR PARAMETER ADDRESS ARRAY. .PTAB DEF PTAB .NEXT NOP ETAB BSS MAXPR+1 .ETAB DEF ETAB .NXTE NOP SPC 2 * ARRAY FOR PICKING UP SCHEDULING PARAMETERS: NCMDI BSS 10 FIRST: COMMAND INPUT. NTRCI BSS 10 SECOND: TRACE INPUT. NTRCO BSS 10 THIRD: TRACE OUTPUT. PMASK BYT 3,7 3 PARAMETERS, ALL NAMR @CMDI DEF NCMDI @TRCO DEF NTRCO @TRCI DEF NTRCI SPC 1 ** DEVICE "OPEN" BUFFERS ** CMDIN NOP TYPE OF COMMAND INPUT. BSS 144 DCB OR LU #. TRCIN NOP TYPE OF TRACE INPUT. BSS 144 DCB OR LU #. TRCOT NOP TYPE OF TRACE OUTPUT. BSS 144 DCB OR LU #. SPC 1 ** READ BUFFER ** INBUF BSS 304 SPC 1 * LABELS FOR DS/3000 HEADER: LNCLS EQU INBUF+1 STMWD EQU INBUF+3 IBFLN EQU INBUF+4 FRMTO EQU INBUF+5 RTSQ# EQU INBUF+6 DTLEN EQU INBUF+8 RF1KW EQU INBUF+9 APPENDAGE WORD 1 RF3KW EQU INBUF+11 APPENDAGE WORD 3 DX1KW EQU INBUF+13 APPENDAGE WORD 4 SPC 1 BSS 0 SIZE OF TRC3K. SPC 1 END TRC3K