ASMB,Q,C
      HED QUEZ: HP 3000 MODEM COMM. MONITOR * (C) HEWLETT-PACKARD CO. 
      NAM QUEZ,19,4 91750-16157 REV.2013 800423 MEF: 3000 MODEM LINK
      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 
* Z OPTION INCLUDES DEBUG.
* 
      EXT EXEC,XLUEX,$OPSY
      EXT #LU3K,#QXCL,#CL3K,#RQCV,#RSAX,#LDEF 
      EXT D$MXR,D$RQB,D$3BF,D$XS5 
      SPC 1 
      UNL           NEXT 5 LINES ARE FOR PRODUCTION ENGINEERING 
*  NAME: QUEZ 
*SOURCE: 91750-18157
* RELOC: 91750-16157
*  PGMR: DMT
      LST 
*********************** QUEZ - MODEM VERSION *********************
*                                                                *
*      SOURCE: 91750-18157                                       *
*                                                                *
*      BINARY: 91750-16157                                       *
*                                                                *
*      DMT                                                       *
*                                                                *
*      MAY 7, 1979                                               *
*                                                                *
******************************************************************
      SPC 1 
* 
* QUEZ PERFORMS MODEM COMMUNICATION WITH A REMOTE HP3000 COMPUTER.
* QUEZ READS ALL MESSAGES RETURNED FROM THE HP3000 TO THE HP1000, 
* THEN DISPATCHES THEM TO MASTERS WAITING FOR REPLIES, SLAVE
* MONITORS (VIA RQCNV) WHO ARE WAITING FOR REQUESTS, OR QUEX (WHO 
* MAY BE WAITING FOR SPECIAL REQUESTS AND REPLIES). 
* ALL MASTER REQUESTORS AND SLAVE MONITORS WISHING TO TRANSMIT
* TO AN HP3000 DO SO BY WRITING THEIR BUFFERS TO THE
* QUEX I/O CLASS. 
      SPC 1 
      SUP 
A     EQU 0 
B     EQU 1 
      SKP 
QUEZ  LDA $OPSY     CHECK FOR OPERATING 
      RAR,SLA        SYSTEM TYPE. 
RSS   RSS           IF MAPPED SYSTEM, 
      JMP INITL 
      LDA RSS         CONFIGURE CROSS-MAP 
      STA MODI2        LOAD 
* 
      LDA D$XS5     CHECK FOR 
      AND D2         HSI LINK.
      SZA,RSS       0 = HSI, 2 = MODEM
      JMP WRDVR     ERROR--HSI. 
      SPC 2 
* 
*  CONFIGURE THE CONTROL WORD TO PERFORM DS2 READ.
* 
INITL LDA #LU3K     LOAD THE HP3000 WRITE LU. 
      INA           ADD ONE FOR READ LU.
      STA REDWD     STORE IN XLUEX WORD.
* 
      LDA #QXCL     GET QUEX CLASS NUMBER.
      ELA,CLE,ERA   CLEAR "DISCONNECT" BIT. 
      STA QXCLS     SAVE LOCALLY. 
      SPC 1 
* 
*   READ FROM HP 3000.
* 
READ  JSB XLUEX 
      DEF *+5 
      DEF D1
      DEF REDWD 
      DEF D$3BF 
      DEF D$MXR 
* 
      STB LOG       SAVE NUMBER OF WORDS READ.
* 
*  CHECK FOR ERROR IN READ. 
* 
      STA TEMP      SAVE STATUS.
      RAR             
      SLA,RSS       IF NO ERROR,
      JMP SETPT       GO DISPATCH.
* 
      JSB EXEC      WRITE STATUS WORD TO
      DEF *+8        QUEX SO IT WILL PRINT
      DEF CLS20       A MESSAGE ON THE SYSTEM 
      DEF D0           CONSOLE. 
      DEF TEMP
      DEF D1
      DEF D1
      DEF D0
      DEF #QXCL 
D0    NOP 
* 
      JSB EXEC      ABORT!
      DEF *+2 
      DEF D6
      SPC 3 
*  REQUESTS AND/OR REPLIES HAVE BEEN RECEIVED FROM THE HP 3000. 
*  FOR REQUESTS, DO A CLASS WRITE TO THE REQUEST CONVERTER (RQCNV). 
*  FOR REPLIES, SEARCH THE MASTER LIST (VIA SEQUENCE #) AND DO A CLASS
*  WRITE TO THE CORRESPONDING MASTER CLASS NUMBER.
* 
SETPT LDA D$RQB     SET BPNTR TO POINT TO 
      STA BPNTR      FIRST WORD IN BUFFER.
      LDA LOG       GET READ LENGTH.
      SPC 1 
* 
* PROCESS THE NEXT BLOCK IN READ BUFFER.
* 
DISP  SZA,RSS       IS THERE ANOTHER BLOCK? 
      JMP READ      NO. SERVICING COMPLETE. 
* 
      ADA N7        IF LESS THAN 8 WORDS, 
      SSA 
      JMP READ      IGNORE REST OF BLOCK. **SHOULDN'T HAPPEN**
* 
* DETERMINE WHETHER MESSAGE IS A REQUEST FROM THE 3000
* OR A REPLY TO AN RTE MASTER'S REQUEST.
* 
*       CHECK VALIDITY AND SET UP <STMWD>,
      JSB VERIF      <STREM>, <CLASS>, AND <BUFL>.
      JMP READ      INVALID REQUEST. IGNORE REST OF BLOCK.
* 
      LDA CLASS     IF CLASS 0 REQUEST
      SZA,RSS        OR REPLY, SEND 
      JMP TOQX        TO QUEX.
* 
      LDA STMWD     ISOLATE REPLY AND 
      AND B140K      REJECT BITS. 
* 
      CPA B140K     IF BOTH SET, 3000 IS REJECTING
      JMP NEXT       AN RTE REPLY. IGNORE.
* 
      SZA           IF EITHER IS SET, 
      JMP REPLY      IT'S A REPLY TO AN RTE MASTER. 
      SPC 3 
* 
* A REQUEST HAS ARRIVED FROM THE 3000 (NOT ON CLASS 0). 
* 
      LDB #QXCL     INIT. REQ. EXCHANGED YET? 
      SSB           NO. IGNORE (MUST BE AN OLD
      JMP READ       BUFFER LEFT ON THE CARD).
* 
      LDA CLASS 
      CPA D5        CLASS 5? ($STDIN/$STDLIST)
      JMP $SCHK     YES--MAY BE FOR MASTER. 
* 
RQCNV LDA #RQCV     SET 
      IOR BIT15      NO-WAIT
      STA CLASN       BIT.
* 
      JSB EXEC      WRITE REQUEST TO RQCNV'S CLASS. 
      DEF *+8 
      DEF CLS20 
      DEF D0
      DEF BPNTR,I 
      DEF BUFL
      DEF D0
      DEF D0
      DEF CLASN     CLASS NUMBER OF RQCNV.
      JMP REJCT     ERROR RETURN. 
      SZA           IF NO SAM,
      JMP REJCT      TRY TO REJECT. 
* 
      JMP NEXT      GO DISPATCH NEXT BLOCK. 
      SPC 3 
* 
*  THE MESSAGE IS A DS/3000 REPLY TO AN RTE MASTER REQUEST. 
* 
REPLY LDA CLASS     MESSAGE CLASS 6?
      CPA D6
      JMP LBYE?        YES--CHECK FOR LAST BYE. 
* 
*  SEARCH FOR MASTER TCB. 
* 
SRCHM LDB BPNTR     GET 
      ADB D5         SEQUENCE 
      LDA B,I         NUMBER. 
      STA TEMP
      SZA,RSS       IF IT'S ZERO, 
      JMP REJCT      REJECT.
      JSB #RSAX     CALL
      DEF *+3        #RSAX
      DEF D4          FOR 
      DEF TEMP         SEARCH.
      SSB           FOUND?
      JMP NEXT        NO--IGNORE. 
      SPC 1 
      IOR BIT15     SET NO-WAIT BIT 
      STA CLASN     SAVE I/O CLASS #. 
* 
      JSB EXEC      CLASS 
      DEF *+8        WRITE
      DEF CLS20       TO
      DEF D0           CLASN. 
      DEF BPNTR,I 
      DEF BUFL
      DEF BUFL
      DEF D0
      DEF CLASN 
      JMP RPCLS     REPORT CLASS ERROR. 
      SZA           IF NO SAM,
      JMP NOSAM      PRINT ERROR MESSAGE. 
      SPC 1 
* 
*   END OF PROCESSING FOR THIS BLOCK. 
* 
NEXT  LDA BPNTR     BLOCK PROCESSED:
      ADA BUFL      UPDATE POINTER INTO 
      STA BPNTR      RECEIVE BUFFER.
* 
      LDA BUFL      CALCULATE NUMBER
      CMA,INA        OF WORDS REMAINING 
      ADA LOG         IN READ BUFFER. 
      STA LOG 
* 
      JMP DISP      GO CHECK FOR ANOTHER BLOCK. 
      SPC 5 
* 
*  PRINT ERROR MESSAGE WHEN CLASS I/O FAILS BECAUSE OF NO SAM.
* 
NOSAM JSB EXEC
      DEF *+5 
      DEF SD2 
      DEF D1
      DEF SAMER 
      DEF D13 
      NOP 
      JMP NEXT
* 
SAMER ASC 10,/QUEZ: INSUFFICIENT S.A.M. 
      SPC 3 
* 
* PRINT OTHER CLASS I/O ERROR MESSAGES
* 
RPCLS DST CMSG1     STORE ASCII ERROR CODE. 
      JSB EXEC      WRITE MESSAGE 
      DEF *+5        ON SYSTEM
      DEF SD2         CONSOLE.
      DEF D1
      DEF CMSG
      DEF D12 
      NOP 
      JMP NEXT      GET NEXT BUFFER.
* 
CMSG  ASC 10,/QUEZ: CLASS ERROR 
CMSG1 ASC 2,
      SKP 
* 
*  CHECK WHETHER $STDLIST REQUEST SHOULD GO TO MASTER OR CNSLM. 
* 
$SCHK LDB BPNTR     GET "FROM PROCESS NUMBER."
      ADB D4
      LDA B,I 
      ALF,ALF 
      AND B377
      SZA,RSS       IF ZERO,
      JMP RQCNV      PASS TO RQCNV. 
      LDA B,I       GET "TO PROCESS NUMBER" 
      AND B377
      SZA,RSS       IF ZERO,
      JMP RQCNV      PASS TO RQCNV. 
      JMP SRCHM     BOTH NON-ZERO. PASS TO MASTER.
      SPC 3 
      SPC 5 
* 
* SEND "REJECT" REPLY FOR ILLEGAL REQUESTS. 
* 
REJCT LDA STMWD     MAKE SURE 
      AND BIT14      WE AREN'T
      SZA             REJECTING 
      JMP NEXT         A REJECT!
      LDA BPNTR,I   APPENDAGE 
      AND B377       LENGTH 
      IOR LB8         IS 8. 
      STA BPNTR,I 
      LDA STMWD     SET REJECT BIT. 
      IOR BIT14 
      AND NBT13     CLEAR CONTINUATION BIT. 
      LDB BPNTR 
      ADB D2
      STA B,I 
      ADB D2        REVERSE PROCESS NUMBERS.
      LDA B,I 
      ALF,ALF 
      STA B,I 
      ADB D3        DATA LENGTH = 0.
      CLA 
      STA B,I 
* 
TOQX  LDA QXCLS 
      IOR BIT15     SET NO-WAIT BIT.
      STA CLASN     SAVE I/O CLASS #. 
* 
      JSB EXEC      CLASS 
      DEF *+8        WRITE
      DEF CLS20       TO
      DEF D0           QUEX.
      DEF BPNTR,I 
      DEF D8
      DEF D8
      DEF D0
      DEF CLASN 
      JMP RPCLS     REPORT CLASS I/O ERROR. 
      SZA           IF NO SAM,
      JMP NOSAM      PRINT ERROR MESSAGE. 
      JMP NEXT
* 
LB8   BYT 10,0      LEFT BYTE DECIMAL 8.
      SPC 3 
* 
*  CLASS 6 REPLY RECEIVED. IS IT LAST BYE?
* 
LBYE? LDA STREM     IF NOT
      CPA B21        STREAM 21, 
      RSS             IT'S NOT
      JMP SRCHM        A BYE. 
* 
      CCB           GET ADDR OF PNL HEADER ADDR.
      ADB #LDEF 
      LDB B,I       GET ADDR OF PNL HEADER
      LDB B,I       GET ADDR OF FIRST PNL ENTRY.
      JSB CKLST     CHECK FOR ONE ENTRY.
      JMP STDIS     NONE--DO DISCONNECT.
      JSB CKLST     CHECK FOR SECOND ENTRY. 
      JMP STDIS     NO MORE--DO DISCONNECT. 
      JMP SRCHM     MORE THAN ONE HELLO OUTSTANDING.
* 
STDIS JSB EXEC      CLASS WRITE TO QUEX.
      DEF *+8        (NO REPLY EXPECTED)
      DEF CLS20 
      DEF D0
      DEF D0        DUMMY BUFFER ADDRESS. 
      DEF D0        ZERO-LENGTH RECORD. 
      DEF D0        LENGTH PASSED TO QUEX.
      DEF D0
      DEF #QXCL 
      NOP           IGNORE ERRORS.
* 
      JMP SRCHM     SEARCH FOR MASTER.
      SPC 3 
* 
*  SUBROUTINE TO CHECK IF A TCB LIST HAS ANY HP3000 ENTRIES.
*  CALLING SEQUENCE: LDB <FIRST TCB ADDR> 
*                    JSB CKLST
*                    <NO-ENTRY RETURN>
*                    <ENTRY RETURN> 
* 
CKLST NOP 
CKLOP SZB,RSS       END OF LIST?
      JMP CKLST,I    YES--TAKE NO-ENTRY RETURN. 
      JSB LODWD 
      STA TEMP      SAVE LINK.
      INB           GET SECOND
      JSB LODWD      TCB WORD.
      LDB TEMP      SET UP POINTER FOR NEXT LOOP. 
      AND BIT14     ISOLATE "3000" BIT. 
      SZA,RSS       IF NOT SET, 
      JMP CKLOP      STAY IN LOOP.
* 
      ISZ CKLST     ENTRY FOUND!
      JMP CKLST,I    TAKE 2ND RETURN. 
      SKP 
* 
* SUBROUTINE TO VERIFY AUTHENTICITY OF REQUESTS AND REPLIES 
* BEING SENT OR RECEIVED. ALSO SETS <CLASS>, <STMWD>, <STREM>,
* AND <BUFL> AND PERFORMS TRACE (IF REQUESTED). 
* 
*   ON ENTRY, 
*           BPNTR = BUFFER ADDRESS OF REQ/REPLY.
* 
VERIF NOP 
      LDB BPNTR     LOAD ADDRESS OF MESSAGE.
* 
      LDA B,I       CHECK WORD 1: 
      SZA,RSS         IF ZERO, IT MUST
      JMP VERIF,I      LEFT-OVER CARD BUFFER. 
      AND B377        ISOLATE MESSAGE CLASS.
      STA CLASS       SAVE IT.
      ADA N9
      SSA,RSS 
      JMP BADBF       ERROR IF MESSAGE CLASS > 8. 
* 
      ADB D2        CHECK WORD 3: 
      LDA B,I 
      STA STMWD       SAVE IT.
      AND B377        ISOLATE STREAM TYPE.
      STA STREM       SAVE IT.
      ADA NB20
      SSA 
      JMP BADBF       ERROR IF < OCTAL 20.
      ADA NB10
      SSA,RSS 
      JMP BADBF       ERROR IF > OCTAL 27.
* 
      ADB D5        CHECK WORD 8: 
      LDA B,I 
      SSA 
      JMP BADBF       ERROR IF NEGATIVE.
* 
      LDB BPNTR     VERIFY THAT 
      ADB D7         WDCNT <= N(WORDS) + 8. 
      LDB B,I 
      INB 
      CLE,ERB 
      ADB D8
      STB BUFL      SAVE WORD COUNT.
      INB 
      CMB,INB 
      LDA BPNTR,I 
      ALF,ALF 
      AND B377
      ADA B 
      SSA,RSS 
      JMP BADBF     ERROR.
      ISZ VERIF     NO ERROR, TAKE NORMAL RETURN. 
* 
      LDA #CL3K     TRACE OPTION REQUESTED? 
      SZA            (LU NOT SET.)
      SSA            (BAD LOG LU.)
      JMP VERIF,I   NO. 
* 
      LDA #CL3K+1   BUFFERS TO BE TRACED? 
      SSA,RSS       IF BIT 15 NOT SET,
      JMP VERIF,I    RETURN.
* 
      LDA D8        INITIALIZE TRACE
      STA TRLEN      LENGTH TO 8. 
* 
      LDA #CL3K+1   APPENDAGE BIT SET?
      AND BIT14 
      SZA,RSS 
      JMP WRTRC       NO. GO WRITE. 
* 
      LDA BPNTR,I   GET LENGTH OF 
      ALF,ALF        APPENDAGE AND
      AND B377        HEADER FROM 
      STA TRLEN        WORD 1.
* 
      LDA #CL3K+1   GET MAX DATA LENGTH 
      AND LENBT      FROM BITS 0-12.
      ADA TRLEN     ADD HEADER/APPEND LENGTH. 
      STA B         HOLD IN B-REG.
      CMA,INA       IF GREATER THAN ACTUAL
      ADA BUFL       BUFFER LENGTH, 
      SSA 
      LDB BUFL        USE BUFFER LENGTH.
      STB TRLEN     STORE TRACE LENGTH. 
* 
WRTRC CCA 
      ADA BPNTR     SET TRACE 
      STA TPNTR      POINTER. 
      LDB TPNTR,I   SET FIRST WORD
      STB HOLD       TO INDICATE
      CLB,INB         DIRECTION.
      STB TPNTR,I 
      ISZ TRLEN     ADD 1 TO LENGTH.
      JSB TRCOT     WRITE TRACE.
      LDA HOLD      RESTORE FIRST 
      STA TPNTR,I    BUFFER WORD. 
      JMP VERIF,I   RETURN. 
* 
BADBF LDA LOG       SET BUFFER LENGTH 
      STA BUFL       TO REMAINING BLOCK 
      STA TRLEN       LENGTH & SET TRACE LEN. 
* 
      JSB EXEC      DISPLAY 
      DEF *+5        ">> HP 3000: BAD BUFFER RECEIVED". 
      DEF D2
      DEF D1
      DEF BDBUF 
      DEF D16 
* 
      LDA #CL3K     TRACE OPTION REQUESTED? 
      SZA            (LU NOT SET.)
      SSA            (BAD LOG LU.)
      JMP VERIF,I   NO. 
      JMP WRTRC     YES.
      SPC 1 
*  VALUES SET BY VERIF: 
CLASS NOP           DS/3000 MESSAGE CLASS.
STMWD NOP           DS/3000 STREAM WORD.
STREM NOP           DS/3000 MESSAGE STREAM. 
BUFL  NOP           WORD COUNT OF BUFFER. 
HOLD  NOP 
* 
BDBUF ASC 16,>> HP 3000: BAD BUFFER RECEIVED
      SPC 5 
* 
* SUBROUTINE TO WRITE A RECORD TO TRACE LU. 
*  CALLING SEQUENCE: <SET UP TPNTR AND TRLEN> 
*                    JSB TRCOT
* 
TRCOT NOP           ENTRY POINT.
* 
      LDA #CL3K     CHECK 
      STA TRCST      BIT
      STA TRCIO       13 OF 
      AND BIT13        LOG WORD.
      SZA 
      JMP CLIO      SET--DO CLASS I/O.
* 
      JSB XLUEX     CHECK OUT 
      DEF *+3        DYNAMIC
      DEF SD3         STATUS. 
      DEF TRCST 
      JMP WRERR     ERROR RETURN. 
      AND B277      IF ANY "BAD" BITS 
      SZA            ARE SET, 
      JMP TRCDN        SET TRACE DOWN.
* 
      JSB XLUEX     WRITE ENTIRE
      DEF *+5        MESSAGE TO 
      DEF SD2         TRACING LU. 
      DEF TRCIO 
      DEF TPNTR,I 
      DEF TRLEN 
      RSS           ERROR RETURN. 
      JMP TRCOT,I   NO ERROR. RETURN. 
* 
WRERR DST ABREG     PRINT 
      JSB EXEC       ERROR
      DEF *+5         MESSAGE.
      DEF SD2 
      DEF D1
      DEF IOERR 
      DEF D13 
      NOP 
* 
TRCDN LDA #CL3K     SET "BAD" BIT 
      IOR BIT15      IN TRACE LU. 
      STA #CL3K 
      JMP TRCOT,I   RETURN. 
* 
CLIO  LDA #CL3K     SET NO-WAIT BIT 
      IOR BIT15      IN CLASS NUMBER. 
      STA CLASN 
      JSB EXEC      WRITE TO I/O CLASS. 
      DEF *+8 
      DEF CLS20 
      DEF D0
      DEF TPNTR,I 
      DEF TRLEN 
      DEF TRLEN 
      DEF D0
      DEF CLASN 
      JMP WRERR     (ERROR RETURN.) 
      SZA,RSS       CHECK FOR NO S.A.M. 
      JMP TRCOT,I   NO ERROR...RETURN.
      DLD "SAM"     REPORT SAM ERROR. 
      JMP WRERR 
* 
"SAM" ASC 2,SAM 
IOERR ASC 11,/QUEZ: TRACING ERROR 
ABREG BSS 2 
TRLEN NOP           TRACE OUTPUT LENGTH.
TPNTR NOP           TRACE OUTPUT POINTER. 
TRCIO OCT 0,100     TRACE LU/BINARY BIT 
TRCST OCT 0,600     TRACE LU/STATUS FUNCTION
SD3   DEF 3,I 
B277  OCT 277 
      SPC 4 
* 
* SUBROUTINE TO LOAD WORD FROM ALTERNATE MAP (IF RTE-III OR IV).
* 
LODWD NOP 
MODI2 LDA B,I       GET WORD FROM TCB (RSS IF DMS SYSTEM).
      JMP LODWD,I   RETURN IF RTE-II. 
      XLA B,I       LOAD WORD FROM ALTERNATE MAP. 
      JMP LODWD,I   RETURN. 
      SKP 
* 
*  WRONG DRIVER FOR THIS QUEZ. REPORT THE ERROR.
* 
WRDVR JSB EXEC      REPORT ERROR
      DEF *+5        ON SYS CONSOLE.
      DEF D2
      DEF D1
      DEF WRMSG 
      DEF D13 
* 
      JSB EXEC      SUSPEND.
      DEF *+2 
      DEF D7
* 
      JMP WRDVR     STAY IN LOOP IN CASE OF "GO". 
* 
WRMSG ASC 13,>> QUEZ EXPECTS MODEM LINK 
      SPC 5 
* 
* CONSTANTS AND WORKING STORAGE.
* 
* 
NB10  OCT -10 
NB20  OCT -20 
B20   OCT 20
B21   OCT 21
B377  OCT 377 
B140K OCT 140000
BIT15 OCT 100000
BIT14 OCT 40000 
BIT13 OCT 20000 
NBT13 OCT 157777
LENBT OCT 17777     BITS 0-12 
REDWD OCT 0,1000    RECEIVE DC2 CONTROL WORD
CLS20 DEF 20,I
SD2   DEF 2,I 
D1    DEC 1 
D2    DEC 2 
D3    DEC 3 
D4    DEC 4 
D5    DEC 5 
D6    DEC 6 
D7    DEC 7 
D8    DEC 8 
D12   DEC 12
D13   DEC 13
D16   EQU B20 
D20   DEC 20
N7    DEC -7
N9    DEC -9
QXCLS NOP           QUEX CLASS NUMBER.
LOG   NOP           WORDS TO PROCESS IN CURRENT BUFFER
TEMP  NOP 
CLASN NOP 
BPNTR NOP 
      SPC 2 
* 
      BSS 0        ***   SIZE OF QUEZ ****  
      SKP 
      IFZ           *** DEBUG OPTION ***
***** SPECIAL DEBUG SECTION: TRACE
*  INSERT A "JSB TRACE" IN PROGRAM. QUEZ WILL PRINT CALL LOCATION 
*  AND CONTENTS OF A- & B-REGISTERS ON LU SPECIFIED IN #CL3K+6. 
* 
      EXT CNUMO 
TRACE NOP           ENTRY 
      DST ABREG     STORE REGISTERS 
      LDA #CL3K+6 
      SZA,RSS       IF TRACE LU ISN'T SPECIFIED,
      JMP TRTRN      RETURN FROM TRACE. 
* 
      STA TRLU      SAVE TRACE LU NUMBER. 
* 
      LDB 1727B     GET POINTER TO STARTING ADDR FROM BASE PG.
      JSB LODWD     GET STARTING ADDR FROM ID SEG.
      CMA,INA       NEGATE. 
      ADA TRACE     ADD CALLING ADDRESS 
      STA TOFST      TO GET OFFSET. 
* 
      JSB CNUMO     CONVERT 
      DEF *+3        ADDRESS OFFSET 
      DEF TOFST       TO
      DEF TADDR        OCTAL. 
* 
      JSB CNUMO     CONVERT 
      DEF *+3        A-REG
      DEF ABREG       TO
      DEF TAREG        OCTAL. 
* 
      JSB CNUMO     CONVERT 
      DEF *+3        B-REG
      DEF ABREG+1     TO
      DEF TBREG        OCTAL. 
* 
      JSB XLUEX     PRINT 
      DEF *+5        INFORMATION. 
      DEF SD2 
      DEF TRLU
      DEF TINFO 
      DEF D20 
      NOP 
TRTRN DLD ABREG     RESTORE REGISTERS.
      JMP TRACE,I   RETURN. 
* 
TOFST NOP 
TINFO ASC 7,/QUEZ TRACE @ 
TADDR ASC 3,
      ASC 2,: A=
TAREG ASC 3,
      ASC 2,, B=
TBREG ASC 3 
TRLU  OCT 0,0 
      XIF           ***** END OF DEBUG *****
      END  QUEZ 
                                                                                                  