*     SUBROUTINE TO COMPARE RECEIVED DATA WITH MEMORY BLOCK 
*     TESTS 8, 9, 12, 13
* 
COMPA NOP           ENTRY POINT 
      LDA LPCNT     SET UP COUNTER
      STA CNTR
      JSB RESET     RESET POINTERS
* 
COMPB LDA SCNT,I    COMPARE WORDS 
      CPA DCNT,I
      JMP *+4       GOOD COMPARISON 
      ISZ COMPA 
* 
      LDA .1        SET ERROR CODE
      JMP COMPA,I   ERROR EXIT
* 
      ISZ SCNT      INCREMENT POINTERS
      ISZ DCNT
      ISZ CNTR      ARE WE DONE?
      JMP COMPB     NO, DO AGAIN
      JMP COMPA,I   EXIT
      SPC 4 
*     SUBROUTINE TO WAIT FOR INTERRUPT
*      AFTER DATA TRANSFER
*     TEST 9
* 
TIMER NOP           ENTRY POINT 
      LDA .ME3      SET UP COUNTER
      STA ECNT
      LDA INFLG     CHECK INTERRUPT FLAG
      SZA,RSS       NOT CLEAR YET?
      JMP TIMER,I   IS CLEAR, EXIT
      ISZ ECNT
      JMP *-4       CONTINUE
* 
ERTIM LDA .7        ERROR CODE = 7
      ISZ TIMER 
      JMP TIMER,I   ERROR EXIT
      SPC 4 
*     SUBROUTINE TO WAIT N MS - NON-ERROR 
*     TESTS 10, 12, 13
* 
WAIT  NOP           ENTRY POINT 
      LDA TIME      GET WAIT TIME 
      JSB TMR,I     GO AND WAIT 
      JMP WAIT,I    EXIT
* 
TIME  NOP 
      SKP 
*     SUBROUTINE TO CHECK WATCHDOG TIMEOUT
*     TEST 10 
* 
WDO   NOP           ENTRY POINT 
      LDB .1        SET ERROR CODE
WSC1  SFS TSC       DID WDO SET FLAG? 
      JMP WDOER 
      INB BE
WSC2  CLC TSC 
WSC3  LIA TSC,C     GET STATUS WORD 
      AND .10       AND FOR WDO BIT 
      SZA,RSS       SKIP IF THERE 
      JMP WDOER     NOT THERE, IS ERROR 
      JMP WDO,I     GOOD EXIT 
* 
WDOER LDA B         GET ERROR CODE
      ISZ WDO 
      JMP WDO,I 
      SPC 4 
*     SUBROUTINE TO SET TSC INTERRUPT CELL FOR RECEIVE MODE 
*     AND ENABLE INTERRUPTS 
*     TEST 9
* 
ENINR NOP           ENTRY POINT 
      LDA ISR       GET INSTRUCTION FOR INTERRUPT 
      STA SC,I       PUT IN APPROPRIATE CELL
      STF 0         ENABLE INTERRUPT SYSTEM 
ESC1  STC TSC       ENABLE HWSIC
ESC7  LIA TSC,C     DUMMY LOAD
ESC14 CLF TSC       CLEAR JUST IN CASE
      JMP ENINR,I   EXIT
* 
ISR   JSB *+1,I 
      DEF SERVR     RECEIVE INTP SERVICE ADDRESS
      SKP 
*     RECEIVE INTERRUPT SERVICE 
*     TEST 9
* 
SERVR NOP           ENTRY POINT 
      CLC 0,C       DISABLE INTERRUPTS
      STA SAVEA     SAVE A REG
      STB SAVEB     SAVE B REG
ESC2  LIA TSC,C     GET WORD
      STA DCNT,I    STORE IN RCVR BUFFER
      ISZ DCNT      INCREMENT POINT 
      CLA 
      STA INFLG     CLEAR INTP FLAG FOR TIMER 
      LDA SAVEA     RESTORE A REG 
      LDB SAVEB     RESTORE B REG 
      JMP SERVR,I   EXIT
* 
INFLG NOP 
SAVEA NOP 
SAVEB NOP 
      SPC 4 
*     TRANSMIT FOR 1 CPU CONFIGURATION
*     TESTS 8 THRU 13 
* 
FXMIT NOP           ENTRY POINT 
      LDA SCNT,I    GET WORD TO SEND
      ISZ SCNT      INCREMENT POINTER 
      STA INFLG     SET INTP FLAG FOR TIMER 
FXSC1 OTA TSC,C     SEND WORD 
FXSC2 CLF TSC       CLEAR TRANSMIT FLAG 
      JMP FXMIT,I   EXIT
      SPC 4 
*     CHECK CLEAR CRC (NO ERROR IN STATUS WORD) 
*     TESTS 11, 12
* 
CCRC  NOP           ENTRY POINT 
      LDA ERROR 
      AND .2        MASK TO ERROR BIT 
      SZA           SKIP IF NOT THERE - GOOD
      ISZ CCRC      IS ERROR
      JMP CCRC,I    EXIT
      SKP 
*     SUBROUTINE TO CLEAR LISTEN-REPEAT MODE
*     TEST 14 
* 
LRCLR NOP           ENTRY POINT 
      LDA .10       SET BIT3 FOR (MASTER CLEAR) 
      STA WORD       CONTROL WORD 
      JSB CWORD     OUTPUT WORD 
      JMP LRCLR,I   EXIT
      SPC 4 
*     SUBROUTINE TO SEND A BLOCK (100 WORDS) TO RCVR WITH 
*      INTERRUPT ENABLED.  WILL SEND A WORD EVERY MS. 
*     TEST 9
* 
XMTI  NOP           ENTRY POINT 
      LDA LPCNT     SET UP COUNTER
      STA CNTR       FOR 100 WORDS
XMT1  LDA SCNT,I    GET WORD FROM MEMORY
* 
ESC5  OTA TSC,C     SEND IT TO OTHER CPU
      ISZ SCNT      INCREMENT POINTER 
      ISZ CNTR      DONE YET? 
      RSS           NO, NOT YET 
      JMP XMTI,I    YES, EXIT 
* 
      LDA .1        DO A 1 MS TIMER 
      JSB TMR,I 
      JMP XMT1      CONTINUE
      SKP 
*     SUBROUTINE FOR RCVR CPU TO RECEIVE WORDS
*     WITH INTERRUPT ENABLED
*     TEST 9
* 
RCVI  NOP           ENTRY POINT 
      LDA LPCNT 
      STA CNTR      SET WORD COUNT = 100
      LDA ISR2
      STA SC,I      SET INTERRUPT CELL
* 
      STF 0          ENABLE INTERRUPTS
ESC4   STC TSC       ENABLE HWSIC 
ESC6   LIA TSC       DUMMY LOAD 
* 
ESC3  LIA TSC,C     GET RECEIVED WORD 
      STA DCNT,I    SAVE IN BUFFER
      ISZ DCNT      INCREMENT BUFFER POINTER
      ISZ CNTR      DONE YET? 
      JMP *+3       NO, NOT YET 
      CLC 0,C       DISABLE INTERRUPTS
      JMP RCVI,I    YES, EXIT 
* 
      LDA .17       DO A 15 MS TIMEOUT
      JSB TMR,I 
      CLC 0,C       DISABLE INTERRUPTS
      LDA .7        OOPS, TIMED OUT 
      ISZ RCVI
      JMP RCVI,I    ERROR EXIT
* 
ISR2  JMP *+1,I 
       DEF ESC3 
      SPC 2 
*     SUBROUTINE TO XMIT AND SET UP HANDSHAKE MODE
*     TEST 13 
* 
HXMIT NOP           ENTRY POINT 
      LDB SCNT,I    GET 1ST WORD TO SEND
      ISZ SCNT      INCREMENT POINTER 
      LDA WORD      GET CONTROL BIT 
      IOR TYPE      CRC KIND
      IOR BIT12     DISABLE CONSTANT ONES 
* 
HXSC1 OTB TSC,C     SEND 1ST WORD 
HXSC3 CLC TSC 
HXSC4 OTA TSC,C     OUTPUT CONTROL WORD 
      LDB SCNT,I
HXSC5 OTB TSC,C     LOAD SECOND WORD
* 
      ISZ SCNT      INCREMENT POINTER 
      ISZ CNTR      INCREMENT LOOP COUNT
      ISZ DEFL      SKIP XMIT FIRST TIME
      JMP HXMIT,I   EXIT
      SKP 
*     SUBROUTINE TO CHECK IF FLAG WAS SET BY STATUS WORD
*     TESTS 8, 10 THRU 15 
* 
CHFLG NOP           ENTRY POINT 
      CLA           RESET ERROR 
      STA ERROR      FOR THIS CHECK 
CHSC1 CLC TSC 
CHSC2 LIA TSC,C     GET STATUS WORD 
      SZA,RSS       IS ANYTHING SET?
      JMP CHFLG,I   NO, IS OK 
* 
      STA ERROR     SAVE FOR ERROR MESSAGE
      AND BITS      MASK OUT BITS 0,1,3 
      SZA,RSS       IS ANYTHING SET?
      JMP CHFLG,I   NO, IS OK 
      LDA .10       10 = ERROR CODE 
      ISZ CHFLG 
      JMP CHFLG,I   ERROR EXIT
* 
ERROR NOP 
      SPC 3 
*     DUMMY SUBROUTINE TO FILL DEF LIST 
*     TEST 9
* 
DUMMY NOP           ENTRY POINT 
      JMP DUMMY,I   EXIT
      SPC 3 
*     SUBROUTINE TO OUTPUT COMPLETION MESSAGE 
*     TESTS 8 THRU 15 
* 
GOOD  NOP           ENTRY POINT 
      JSB MS,I      OUTPUT MESSAGE
      DEF TSTX,I    RETURN POINT
      DEF *+1       MESSAGE ADDRESS 
      ASC 5,COMPLETED/
      SPC 3 
*     MESSAGE TO WRONG CONFIGURATION
*     TESTS 13 THRU 15
* 
NONO  NOP           ENTRY POINT 
      JSB ER,I      REPORT ERROR
      DEF TSTX,I    RETURN POINT
      DEF *+3       MESSAGE ADDRESS 
      NOP           CONTENTS FOR A REG
      OCT -1        B REG 
      ASC 17,THIS CONFIGURATION CANNOT RUN THIS 
      ASC 3, TEST/
      SKP 
*     SUBROUTINE TO RESET SOURCE AND DESTINATION
*     TESTS 12, 13
* 
RESET NOP           ENTRY POINT 
      LDA SOURC     IT IS 
      STA SCNT       SELF 
      LDA DEST        EXPLANATORY 
      STA DCNT
      JMP RESET,I   EXIT
      SPC 2 
*     SUBROUTINE TO SET A SPECIAL CONTROL WORD
*     TESTS 10 THRU 15
* 
CWORD NOP           ENTRY POINT 
      LDB TST#      CHECK FOR SPECIAL CASES 
      CPB T13       IS IT HANDSHAKE?
      JSB INIT2     IF YES INITIALIZE 
      LDA WORD      GET BITS THAT HAVE BEEN SET 
      CPB BIT23      CRC TRANSMIT (TEST 12) 
      RSS           SKIP IF YES 
      IOR TYPE      GET CRC KIND
      IOR BIT12     DISABLE CONSTANT ONES 
CWSC1 CLC TSC 
CWSC2 OTA TSC,C     SEND IT 
      JMP CWORD,I   EXIT
* 
WORD  NOP 
      SPC 2 
*     SUBROUTINE TO CHECK IF CRC TO CRC EQUALS ZERO 
*     TEST 12 
* 
ZERO  NOP           ENTRY POINT 
      LDA DEST,I    GET THE WORD
      SZA,RSS 
      JMP ZERO,I    OK, IT EQUALS ZERO
      STA CRC       SAVE IT FOR MESSAGE 
      LDA .17       SET ERROR CODE
      ISZ ZERO
      JMP ZERO,I    ERROR EXIT
* 
CRC   NOP 
      SPC 2 
*     SET CRC KIND TO RCVR
*     TEST 12 (1 CPU CONFIGURATION) 
* 
FCRC  NOP           ENTRY POINT 
      LDA BIT10     RESET TYPE FOR CRC
      STA TYPE
      IOR BIT12     DISABLE CONSTANT ONES 
ISC5  CLC TSC 
ISC6  OTA TSC,C     SET CONTROL WORD
      JMP FCRC,I
      SKP 
*     ROUTINE TO TRANSMIT AND ACCUMULATE CRC
*     TEST 12 
* 
CXMIT NOP           ENTRY POINT 
      LDB SCNT,I    GET WORD TO SEND
      ISZ SCNT      INCREMENT POINTER 
CXSC1 OTB TSC,C     SEND WORD 
CXSC2 CLF TSC       CLEAR TRANSMIT FLAG 
* 
      JSB CACRC     CALCULATE CRC 
      JMP CXMIT,I   EXIT
      SPC 2 
CACRC NOP           ENTRY POINT 
      LDA .M16      SET UP LOOP COUNTER 
      STA CONTR 
      LDA REM1      GET OLD CRC 
      XOR B         NEW WORD
      CLE,SLA,ERA 
      XOR POLY1     POLYNOMIAL
      ISZ CONTR     DONE? 
      JMP *-3       NO
      STA REM1      YES, SAVE CRC 
      JMP CACRC,I   EXIT
      SPC 3 
*     COMPARE RECEIVED CRC WITH CALCULATED CRC
*     TEST 12 
* 
COMPS NOP 
      LDA DEST,I    GET RECEIVED WORD 
      CPA REM1      COMPARE WITH CALC. CRC
      JMP COMPS,I   OK, EXIT
      LDA .6        ERROR CODE = 6
      ISZ COMPS 
      JMP COMPS,I   ERROR EXIT
* 
CONTR NOP 
REM1  NOP 
POLY1 OCT 120001
      SPC 3 
*     ROUTINE TO RECEIVE AND ACCUMULATE CRC 
*     TEST 12 
* 
CRCVR NOP           ENTRY POINT 
CRSC1 LIB TSC,C     GET RECEIVED WORD 
      STB DCNT,I    STORE IN MEMORY 
      ISZ DCNT      INCREMENT POINTER 
      JSB CACRC     CALCULATE CRC 
      JMP CRCVR,I   EXIT
      SKP 
*     SUBROUTINE TO TRANSMIT SPECIAL WORD 
*     TESTS 13, 15
* 
SXMIT NOP           ENTRY POINT 
      LDA SWORD     GET SPECIAL HANDSHAKE WORD
SSC1  OTA TSC,C     LOAD IT 
SSC3  CLF TSC       CLEAR TRANSMIT FLAG 
      JMP SXMIT,I   EXIT
* 
SWORD OCT 123456
      NOP 
      SPC 4 
*     SUBROUTINE TO RECEIVE SPECIAL WORD
*     TESTS 13, 15
* 
SRCVR NOP           ENTRY POINT 
SSC2  LIA TSC,C     RECEIVE HANDSHAKE WORD
      STA SWORD+1   SAVE IT 
      JMP SRCVR,I   EXIT
      SPC 4 
*     SUBROUTINE TO COMPARE SPECIAL WORDS 
*     TESTS 13, 15
* 
COMP1 NOP           ENTRY POINT 
      LDA SWORD     GET TRANSMITTED WORD
      LDB SWORD+1   GET RECEIVED WORD 
      CPA B         COMPARE THEM
      JMP COMP1,I   GOOD - EXIT 
      LDA .17       ERROR CODE = 17 
      ISZ COMP1 
      JMP COMP1,I   ERROR RETURN
      SPC 4 
*     SUBROUTINE TO CLEAR CONTROL WORD
*     TEST 13 
* 
CLEAR NOP           ENTRY POINT 
      LDA WORD      SAVE CONTROL BIT
      STA TMP        FOR LATER USE
      CLA 
      STA WORD
      JSB CWORD     OUTPUT WORD 
      LDA TMP       RESTORE CONTROL BIT 
      STA WORD
      JMP CLEAR,I   EXIT
      SKP 
*     ENABLE INTERRUPT & SET TRAP CELL OF INTFACE WITH JMP,I
*     TESTS 14, 15
* 
ENINT NOP           ENTRY POINT 
      LDA ESR 
      STA SC,I      SET INTERRUPT CELL
      STF 0         ENABLE INTERRUPT
ESC8  STC TSC       ENABLE HWSIC
ESC9  LIA TSC,C     DUMMY LOAD
      JMP ENINT,I   EXIT
* 
ESR   JMP *+1,I 
      DEF SEINT 
      SPC 4 
*     INTERRUPT SERVICE ROUTINE 
*     TESTS 14, 15
* 
SEINT CLC 0,C       DISABLE INTERRUPT SYSTEM
      STF 6         ABORT A POSSIBLE DMA TRANSFER 
      CLC 6,C         & BRING DMA INTO RESET CONDITION
ESC10 CLC TSC 
ESC11 LIA TSC,C     GET STATUS WORD 
      STA ERROR     SAVE FOR TAG? 
ESC12 LIA TSC,C     GET COMPARE WORD
      STA SWORD+1   SAVE FOR COMP1
      JMP SLOOP,I   RETURN TO NORMAL FLOW 
      SPC 4 
*     SUBROUTINE TO WAIT FOR INTERRUPT
*     TESTS 14, 15
* 
SLOOP NOP           ENTRY POINT 
      CLA           SET UP COUNTS 
      STA TMP        FOR ABORT WAIT LOOP
      LDB .M100 
      STB ECNT
* 
SLOO2 LDB .4        CHECK IF ABORT
      JSB SWR,I 
      JMP SLOO1     ABORT 
* 
      ISZ TMP       LITTLE COUNTER
      JMP SLOO2     CHECK IF ABORT
      ISZ ECNT      BIG COUNTER 
      JMP SLOO2     CHECK IF ABORT
* 
SLOO1 JSB .WAIT     WAIT FOR BIT OFF
      ISZ SLOOP     ABORT EXIT
      LDA .2        ERROR CODE = 2
      JMP SLOOP,I   EXIT
      SKP 
*     SUBROUTINE TO CHECK FOR TAG BIT 
*     TEST 15 
* 
* 
TAG1  NOP           ENTRY POINT 
      LDA ERROR     GET STATUS WORD 
      AND .1        MASK TO TAG BIT 
      SZA           IS IT THERE?
      JMP TAG1,I    YEP, EXIT 
      LDA .7        ERROR CODE = 7
      ISZ TAG1
      JMP TAG1,I    ERROR EXIT
      SPC 4 
*     SUBROUTINE TO SET TAG BIT IN CONTROL WORD 
*     TESTS 14, 15
* 
STAG  NOP           ENTRY POINT 
      LDA .100      GET TAG BIT 
      STA WORD
      JSB CWORD     OUTPUT WORD 
      JMP STAG,I    EXIT
      SPC 4 
*     SUBROUTINE TO SET LISTEN-REPEAT IN CONTROL WORD 
*     TEST 14 
* 
LRCWD NOP           ENTRY POINT 
      LDA BIT14     GET LISTEN-REPEAT BIT 
      STA WORD
      JSB CWORD     OUTPUT WORD 
      JMP LRCWD,I   EXIT
      SKP 
*     SUBROUTINE TO OUTPUT ADDRESS IN LISTEN-REPEAT 
*     TEST 14 
* 
LRS   NOP           ENTRY POINT 
      LDA ADDR      GET CURRENT ADDRESS 
T13C5 OTA TSC,C     OUTPUT IT 
T13C6 CLF TSC       CLEAR OUTPUT FLAG 
      JMP LRS,I     EXIT
      SPC 4 
*     SUBROUTINE TO RECEIVE REPEATED WORD 
*     TEST 14 
* 
LRG   NOP           ENTRY POINT 
T13C8 CLC TSC       LOAD STATUS WORD TO CLEAR 
T13C9 LIA TSC,C      TAG BIT
T13C7 LIA TSC,C     GET REPEATED WORD 
      CPA ADDR      DOES IT COMPARE?
      JMP LRG,I     YES, EXIT 
      STA WADDR     SAVE FOR MESSAGE
      LDA .3        ERROR CODE = 3
      ISZ LRG 
      JMP LRG,I     ERROR EXIT
      SPC 4 
*     SUBROUTINE TO INCREMENT ADDRESS AND LOOP THRU DEF LIST
*     TEST 14 
* 
LRLOP NOP           ENTRY POINT 
      LDA ADDR      GET LAST ADDRESS
      CPA MAXNM     IS IT MAXIMUM?
      JMP LRLOP,I   YES, EXIT 
      ADA .2        INCREMENT IT
      STA ADDR
      LDA DEFL      DECREMENT DEF LIST
      ADA .M7 
      STA DEFL
      JMP LRLOP,I   EXIT
      SKP 
*     SUBROUTINE TO WAIT FOR RECOGNITION WORD AND CHECK IT
*     TEST 14 
* 
SHPAS NOP           ENTRY POINT 
      LDA BIT8      WAIT FOR RECOGNITION WORD 
      CMA,INA        FOR ABOUT 1 MS 
      STA CNTR       (IF IT COMES)
      ISZ CNTR
      JMP *-1 
* 
T13C1 SFS TSC       DID FLAG GET SET? 
      JMP SHPAS,I   NOPE, EXIT
T13C2 CLC TSC 
T13C3 LIA TSC,C     GET STATUS WORD 
T13C4 LIB TSC,C     GET ADDRESS WORD
      STB WADDR     SAVE FOR MESSAGE
      AND .1        CHECK TAG NOT THERE 
      SZA           GOOD - NO TAG 
      JMP SHPA2     ERROR CODE = 4
* 
      CPB ADDR      GOOD RECOGNITION? 
      JMP SHPA3     YES, DO CLEAN UP
      LDA .5        ERROR CODE = 5
      ISZ SHPAS 
      JMP SHPAS,I   ERROR EXIT
SHPA2 LDA .4
      JMP *-3 
      SKP 
SHPA3 LDA PNTR      GET POINTER TO WORDS WITH BITS
      STA PNTRS      TO INDICATE RECOGNIZED ADDRESS 
      LDA .M3 
      STA CNTR
      LDA .16       IN FIRST WORD?
      BRS           DIVIDE ADDRESS BY 2 
      CMB,INB       MAKE NEGATIVE 
      ADA B 
      SSA,RSS       TOO BIG?
      JMP OUT       IS FIRST WORD 
* 
SHPA4 ISZ PNTRS     INCREMENT POINTER 
      ADA .16       IN NEXT WORD? 
      SSA,RSS       TOO BIG?
      JMP OUT       IS SECOND WORD
      ISZ CNTR
      JMP SHPA4 
* 
      LDA .6        IMPOSSIBLE ADDRESS! 
      ISZ SHPAS     ERROR CODE = 6
      JMP SHPAS,I   ERROR EXIT
* 
OUT   STB CNTR      STRIP BIT FROM WORD 
      CLB,INB       SET LSB 
      RSS 
      RBL 
      ISZ CNTR      FOUND IT? 
      JMP *-2       NO, KEEP ROTATING BIT 
* 
      LDA PNTRS,I   GET CORRECT BIT WORD
      XOR B         DELETE BIT
      STA PNTRS,I   REPLACE WORD
* 
      LDA ADDR      HAVE WE FINISHED? 
      CPA MAXNM     MAXNM = 176 
      JMP SHPAS,I   YES, EXIT 
      CLA           RESET ADDRESS TO RUN THRU AGAIN 
      STA ADDR
      JMP SHPAS,I   EXIT AT LAST
      SKP 
*     SUBROUTINE TO CHECK IF ANY ADDRESS NOT RECOGNIZED 
*     AND OUTPUT MESSAGES IF SO 
*     TEST 14 
* 
NOREC NOP           ENTRY POINT 
      CLA           CLEAR ERROR INDICATOR 
      STA NOR1
      STA WADDR     CLEAR ADDRESS ACCUMULATOR 
      LDA .M4       SET UP COUNTER FOR 4 WORDS
      STA CNTR       TO CHECK 
      LDA PNTR      SET UP POINTER TO WORDS 
      STA PNTRS 
* 
NOR2  LDA PNTRS,I   GET BIT INDICATOR WORD
      SZA           SKIP IF ALL CLEAR 
      JSB NOR1      FIND BIT(S) SET 
* 
      LDB WADDR     INCREMENT ADDRESS ACCUMULATOR 
      ADB .16 
      STB WADDR 
      ISZ PNTRS     INCREMENT POINTER TO WORDS
      ISZ CNTR      DONE YET? 
      JMP NOR2      NO, CONTINUE
* 
      LDA NOR1      WAS THERE AN ERROR? 
      SZA           SKIP IF NOT 
      ISZ NOREC 
      LDA .7        ERROR CODE = 7
      JMP NOREC,I 
* 
NOR1  NOP           ENTRY POINT 
      CLB           SET FOR INITIAL BIT 
      INB 
      CLE,ERA       ROTATE LSB OUT
      SEZ           SKIP IF BIT NOT SET 
* 
      JSB NOROT     OUTPUT MESSAGE
      SZA,RSS       IS THAT ALL IN WORD?
      JMP NOR1,I    YES EXIT
      JMP NOR1+2    NO CONTINUE 
      SKP 
* 
NOROT NOP           ENTRY POINT 
      STA SAVEA     SAVE THE REGISTERS
      STB SAVEB 
      ADB WADDR     ADD ADDRESS ACCUMULATOR 
      BLS           *2
      STB NOR3      SAVE FOR MESSAGE
* 
      JSB ER,I      REPORT ERROR
      DEF NOR4      RETURN POINT
      DEF ADREC     MESSAGE ADDRESS 
NOR3  NOP           A REG 
      NOP           B REG 
* 
NOR4  LDA SAVEA     RESTORE THE REGISTERS 
      LDB SAVEB 
      JMP NOROT,I   EXIT
      SKP 
                                                                          