ASMB,A,B,L,C
      HED SEND (ONLY) INTERFACE DIAGNOSTIC
      ORG 100B
      JMP CFGR      GO TO CONFIGURATION 
TTY.I BSS 1         TAPE INPUT
TTY.O BSS 1         LIST OUTPUT 
TTY.P BSS 1         PUNCH OUTPUT
TTY.K BSS 1         KEYBOARD INPUT
      DEF FWAM      FIRST WORD AVAILABLE MEMORY 
      ORG 126B
      OCT 103013    DSN 
      BSS 1 
EXRTN DEF H77-1 
      SKP 
A     EQU 0 
B     EQU 1 
CH    EQU 10B 
FERC  ABS -FER
FER   DEF *+1       ERROR NUMBER TABLE
      DEF E0
      DEF E1
      DEF E2
      DEF E3
      DEF E4
      DEF E5
      DEF E6
      DEF E10 
      DEF E12 
      DEF E13 
      DEF E14 
      DEF E15 
      DEF E16 
      DEF E21 
      DEF E22 
      DEF E23 
      DEF E24 
      DEF E30 
      DEF E31 
      DEF E32 
      DEF E33 
      DEF E34 
      DEF E40 
      DEF E41 
      DEF E43 
      DEF E44 
      DEF E53 
      DEF E61 
      DEF E70 
      DEF E120
      DEF E167
      DEF E200
      DEF E201
      DEF E202
      DEF E203
      DEF E204
      DEF E205
      DEF E206
      DEF E207
      DEF E210
      DEF E211
      DEF E212
      DEF E213
      DEF E214
      DEF E215
      DEF E216
      DEF E217
      DEF E220
      DEF E221
      DEF E222
      DEF E223
      DEF E224
      DEF E225
      DEF E226
      DEF E227
      DEF E230
      DEF E231
      DEF E232
      DEF E233
LER   DEF * 
      SKP 
CHLT  DEF *         CODED HALT TABLE
      HLT 0 
      HLT 1 
      HLT 2 
      HLT 3 
      HLT 4 
      HLT 5 
      HLT 6 
      HLT 10B 
      HLT 12B 
      HLT 13B 
      HLT 14B 
      HLT 15B 
      HLT 16B 
      HLT 21B 
      HLT 22B 
      HLT 23B 
      HLT 24B 
      HLT 30B 
      HLT 31B 
      HLT 32B 
      HLT 33B 
      HLT 34B 
      HLT 40B 
      HLT 41B 
      HLT 43B 
      HLT 44B 
      HLT 53B 
      HLT 61B 
      HLT 70B 
      OCT 107020
      OCT 107067
      OCT 103000
      OCT 103001
      OCT 103002
      OCT 103003
      OCT 103004
      OCT 103005
      OCT 103006
      OCT 103007
      OCT 103010
      OCT 103011
      OCT 103012
      OCT 103013
      OCT 103014
      OCT 103015
      OCT 103016
      OCT 103017
      OCT 103020
      OCT 103021
      OCT 103022
      OCT 103023
      OCT 103024
      OCT 103025
      OCT 103026
      OCT 103027
      OCT 103030
      OCT 103031
      OCT 103032
      OCT 103033
      SKP 
FMI   DEF *         MESSAGE ADDRESS TABLE 
      DEF M0
      DEF M1
      DEF M2
      DEF M3
      DEF M4
      DEF M5
      DEF M6
      DEF M10 
      DEF M12 
      DEF M13 
      DEF M14 
      DEF M15 
      DEF M16 
      DEF M21 
      DEF M22 
      DEF M23 
      DEF M24 
      DEF M30 
      DEF M31 
      DEF M32 
      DEF M33 
      DEF M34 
      DEF M40 
      DEF M41 
      DEF M43 
      DEF M44 
      DEF M53 
      DEF M61 
      DEF M70 
      DEF M120
      DEF M167
      DEF M200
      DEF M201
      DEF M202
      DEF M203
      DEF M204
      DEF M205
      DEF M206
      DEF M207
      DEF M210
      DEF M211
      DEF M212
      DEF M213
      DEF M214
      DEF M215
      DEF M216
      DEF M217
      DEF M220
      DEF M221
      DEF M222
      DEF M223
      DEF M224
      DEF M225
      DEF M226
      DEF M227
      DEF M230
      DEF M231
      DEF M232
      DEF M233
      SKP 
FML   DEF *         MESSAGE LENGTH TABLE
      DEF L0
      DEF L1
      DEF L2
      DEF L3
      DEF L4
      DEF L5
      DEF L6
      DEF L10 
      DEF L12 
      DEF L13 
      DEF L14 
      DEF L15 
      DEF L16 
      DEF L21 
      DEF L22 
      DEF L23 
      DEF L24 
      DEF L30 
      DEF L31 
      DEF L32 
      DEF L33 
      DEF L34 
      DEF L40 
      DEF L41 
      DEF L43 
      DEF L44 
      DEF L53 
      DEF L61 
      DEF L70 
      DEF L120
      DEF L167
      DEF L200
      DEF L201
      DEF L202
      DEF L203
      DEF L204
      DEF L205
      DEF L206
      DEF L207
      DEF L210
      DEF L211
      DEF L212
      DEF L213
      DEF L214
      DEF L215
      DEF L216
      DEF L217
      DEF L220
      DEF L221
      DEF L222
      DEF L223
      DEF L224
      DEF L225
      DEF L226
      DEF L227
      DEF L230
      DEF L231
      DEF L232
      DEF L233
      SKP 
FIRST DEF *+1       TABLE OF SELECT CODES TO BE 
      DEF CH0 
      DEF CH1         MODIFIED
      DEF CH2 
      DEF CH3 
      DEF CH4 
      DEF CH5 
      DEF CH6 
      DEF CH7 
      DEF CH8 
      DEF CH9 
      DEF CH10
      DEF CH11
      DEF CH12
      DEF CH13
      DEF CH14
      DEF CH15
      DEF CH16
      DEF CH17
      DEF CH18
      DEF CH19
      DEF CH20
      DEF CH21
      DEF CH22
      DEF CH23
      DEF CH24
      DEF CH25
      DEF CH26
      DEF CH27
      DEF CH28
      DEF CH29
      DEF CH30
      DEF CH31
      DEF CH33
      DEF CH34
      DEF HLTC
      DEF DCH 
LAST  DEF *-1 
      SKP 
A0077 OCT 77        COMMON CONSTANTS AND SYMBOLS
A0002 OCT 2 
A0003 OCT 3 
A0100 OCT 100 
THLT  OCT 106002    TRAPCELL HALT 
P0000 OCT 170000
P7700 OCT 177700
NOTTY NOP 
SAVA  NOP 
SAVB  NOP 
SAVC  NOP 
SAVD  NOP 
SAVE  NOP 
HLTA  OCT 106000    A REG TRAP CELL HALT
HLTB  OCT 106001    B REG 
HLTC  OCT 106000    SELECTED CHANNEL
DCH   NOP 
IO    NOP 
SRP   NOP 
CNT1  NOP           * ERROR 
CNT2  NOP           * COUNTERS
SETXX NOP 
SWB   NOP 
CRL   OCT 2 
CRI   DEF *+1 
      OCT 6400      CARRIAGE RETURN 
DIN   NOP 
SNA   NOP 
SNB   NOP 
P7760 OCT 177760
MSK1  OCT 140000
MN11  DEC -11 
TABL  DEF *+1 
      DEC -2
      DEC -4
      DEC -8
      DEC -16 
      DEC -32 
      DEC -64 
      DEC -128
      DEC -256
AC    OCT 20060 
PTNC  NOP 
WD1   NOP 
CHCNT NOP 
PAR   NOP 
CNR   NOP 
TRW   NOP 
BTNM  NOP 
A0017 OCT 17
MN8   DEC -8
      SKP 
BT0   OCT 1 
BT1   OCT 2 
BT2   OCT 4 
BT3   OCT 10
BT4   OCT 20
BT5   OCT 40
BT6   OCT 100 
BT7   OCT 200 
BT8   OCT 400 
BT9   OCT 1000
BT10  OCT 2000
BT11  OCT 4000
BT12  OCT 10000 
BT13  OCT 20000 
BT14  OCT 40000 
BT15  OCT 100000
NBT7  OCT 177577
MSK2  OCT 66001 
MSK3  OCT 46000 
MSK4  OCT 14001 
MSK5  OCT 1017
MSK6  OCT 60000 
SYNCH OCT 040001
CW1   OCT 160010
CW2   OCT 150610
CW3   OCT 150017
CW4   OCT 150410
CW5   OCT 156016
CW6   OCT 150010
CW7   OCT 154016
CW8   OCT 151017
CW9   OCT 157016
CW10  OCT 155016
CW11  OCT 150014    SEND, AUTO ON 
CW12  OCT 140014    RCVE, AUTO ON 
CW13  OCT 151014    SEND, AUTO OFF
CW14  OCT 141014    RCVE, AUTO OFF
CW15  OCT 140610
CWX   NOP 
CWXX  NOP 
      SKP 
TSNC1 OCT 14
TSNC2 OCT 17
TSNC3 OCT 0 
TSYNC OCT 040014
TDATA OCT 3 
SNBB  NOP 
P7774 OCT 177774
P7776 OCT -2
DFLAG NOP 
ASDT  DEF ASDTA 
MG0A  DEF M0A 
MG0B  DEF M0B 
JSB1  JSB R1,I      INTERRUPT ROUTINE 
R1    DEF RETRN 
ADDRS DEF INTPT+1 
STR   DEF START 
SML   DEF SL
SMI   DEF SM
J1    JSB *+1,I 
      DEF IJ1 
J2    JSB *+1,I 
      DEF IJ2 
J3    JSB *+1,I 
      DEF IJ3 
J4    JSB *+1,I 
      DEF IJ4 
J5    JSB *+1,I 
      DEF IJ5 
E25   HLT 25B 
E35   HLT 35B 
E45   HLT 45B 
E54   HLT 54B 
E62   HLT 62B 
E121  OCT 107021
E170  OCT 107070
      SKP 
AS0M  DEF AS0 
AS1M  DEF AS1 
AS2M  DEF AS2 
MI7   DEF M7
LM7   DEF L7
MI11  DEF M11 
LM11  DEF L11 
MG44A DEF G44A
MG44B DEF G44B
MG53A DEF G53A
MG53B DEF G53B
MG53C DEF G53C
MG53D DEF G53D
MI52  DEF M52 
LM52  DEF L52 
MI65  DEF M65 
LM65  DEF L65 
MG67A DEF G67A
MG67B DEF G67B
MG67C DEF G67C
MG67D DEF G67D
MI77  DEF M77 
LM77  DEF L77 
MG20A DEF G20A
MG20B DEF G20B
MG20C DEF G20C
MG20D DEF G20D
MG33A DEF G33A
MG33B DEF G33B
MG61A DEF G61A
MG61B DEF G61B
MI140 DEF M140
LM140 DEF L140
MI176 DEF M176
LM176 DEF L176
LM270 DEF L270
MI270 DEF M270
      SKP 
***       SUBROUTINES       *** 
      SPC 2 
DATA  NOP           CHANGE DATA IN A TO ASCII AND 
      STA DX          STORE IN LOCATION IN B
      STB DADD
      JSB B2ASC     CHANGE TWO LEAST SIG CH TO ASCII
      LDB DADD
      ADB A0002     MODIFY ADDRESS
      STA B,I       STORE TWO CHARACTERS
      LDA DX
      ALF,ALF 
      RAL,RAL 
      JSB B2ASC     CHANGE NEXT TWO CH TO ASCII 
      LDB DADD
      INB           MODIFY ADDRESS
      STA B,I       STORE TWO CHARACTERS
      LDA DX
      AND P0000 
      ALF 
      JSB B2ASC     CHANGE TWO MOST SIG CH TO ASCII 
      STA DADD,I    STORE FINAL TWO CHARACTERS
      JMP DATA,I    EXIT
DX    BSS 1         DATA TO BE CONVERTED
DADD  BSS 1         ADDRESS WHERE ASCII CH MUST GO
      SPC 2 
B2ASC NOP           CONVERT 2 LEASE SIGNIFICANT 
      AND A0077       DIGITS (IN A) TO ASCII AND
      LDB A           RETURN WITH OCTAL ASCII'S IN A
      BRS,BRS 
      BRS 
      BLF,BLF 
      AND A0007 
      IOR B 
      IOR D0060 
      JMP B2ASC,I 
A0007 OCT 7 
D0060 OCT 30060     ASCII PREFIXES
      SPC 2 
STN   NOP           * STN CONTAINS LAST TEST START
      JMP STN,I       ADDRESS 
      SPC 2 
DELAY NOP           DELAYS A FEW HUNDRED MSEC 
      CLA 
      INA,SZA 
      JMP *-1 
      JMP DELAY,I 
      SPC 2 
OTACH NOP 
CH15  OTA CH
      JMP OTACH,I 
      SPC 1 
LIACH NOP 
CH16  LIA CH
      JMP LIACH,I 
      SPC 1 
SW13  NOP           CHECK SW REG BIT 13 FOR RECYCLE 
      JSB SWR         LAST PROGRAM
      AND BT13
      SZA,RSS       REPEAT PROGRAM? 
      ISZ SW13      NO
      JMP SW13,I    YES 
      SPC 2 
SW15  NOP           CHECK SW REG BIT 15 FOR HALTING 
      JSB SWR         AT END OF PROGRAM OR CONTINUE 
      SSA           AUTOMATICALLY TO NEXT PROGRAM 
      ISZ SW15      NO
      JMP SW15,I    YES 
      SPC 2 
SW09  NOP           CHECK TO OMIT START AND STOP
      JSB SWR         MESSAGES
      AND BT9 
      SZA           OMIT MESSAGE? 
      ISZ SW09      YES 
      JMP SW09,I    NO
      SPC 2 
SW10  NOP           CHECK BIT 10 TO OMIT PRESET 
      JSB SWR         TEST
      AND BT10
      SZA,RSS       OMIT TEST?
      ISZ SW10      YES 
      JMP SW10,I    NO
      SPC 2 
SW11  NOP           CHECK SW REG BIT 11 FOR TTY 
      JSB SWR       LDA WITH INTERNAL OR EXT SW REG 
      AND BT11
      SZA 
      JMP SW11,I    TTY IS SUPPRESSED - RTN *+1 
      LDA NOTTY 
      SZA,RSS       TTY AVAILABLE?
      ISZ SW11      YES 
      JMP SW11,I    NO
      SKP 
SW12  NOP           CHECK SW REG BIT 12 FOR HALT AT 
      JSB SWR         END OF DIAGNOSTIC 
      AND BT12
      SZA           HALT? 
      ISZ SW12      NO
      JMP SW12,I    YES 
      SPC 1 
SW7  NOP           CHECK SW REG BIT 7 FOR RECYCLE 
      JSB SWR         LAST TEST - LDA WITH INTERNAL 
      AND BT7 
      SZA               BIT 7 
      JMP STN,I     RECYCLE LAST TEST 
      JMP SW7,I    NO RECYCLE, RETURN *+1 
      SKP 
SW14  NOP           CHECK SW REG BIT 14 FOR HALT
      JSB SWR         ON ERRORS 
      AND BT14
      SZA 
      ISZ SW14      NO HALT - RETURN *+2
      JMP SW14,I    HALT ON ERRORS, RETURN *+1
      SPC 1 
SW8  NOP           CHECK SW REG BIT 8 FOR HALT AT 
      JSB SWR         END OF TEST 
      AND BT8       TEST BIT 8
      SZA,RSS 
      JMP SW8,I    EXIT *+1 
      LDB P7776 
      ADB SW8 
      LDA FER       FIND CODED HALT 
T3    CPB A,I 
      JMP T4        FOUND IT
      INA 
      CPA LER 
      JMP SW8,I    EXIT *+1 
      JMP T3
T4    ADA FERC
      ADA CHLT
      LDA A,I 
      STA *+1 
      NOP           HALT
      JMP SW8,I    EXIT *+1 
      SKP 
*     TWO ERRORS PLUS SW REG
      SPC 2 
MHLT3 NOP           ** REPORT ERROR VIA SW REG
      JSB INR         AND A REG 
      JMP MHLT3,I   RETURN *+1
      LDA SAVA
      JSB EY4R
      LDA SAVB
      JSB EY4R
      LDA SAVC
      JSB EY4R
      ISZ MHLT3 
      JMP MHLT3,I   RETURN *+2
      SPC 2 
*     THREE ERRORS PLUS SW REG
      SPC 2 
MHLT4 NOP           ** REPORT ERROR VIA SW REG
      JSB INR         AND A REG 
      JMP MHLT4,I   RETURN *+1
      LDA SAVA
      JSB EY4R
      LDA SAVB
      JSB EY4R
      LDA SAVD
      JSB EY4R
      LDA SAVC
      JSB EY4R
      ISZ MHLT4 
      JMP MHLT4,I   RETURN *+2
      SPC 2 
*     FOUR ERRORS PLUS SW REG 
      SPC 2 
MHLT5 NOP           ** REPORT ERROR VIA SW REG
      JSB INR         AND A REG 
      JMP MHLT5,I   RETURN *+1
      LDA SAVA
      JSB EY4R
      LDA SAVB
      JSB EY4R
      LDA SAVD
      JSB EY4R
      LDA SAVE
      JSB EY4R
      LDA SAVC      RESTORE SW REG
      JSB EY4R
      ISZ MHLT5 
      JMP MHLT5,I   RETURN *+2
      SKP 
INR   NOP           ** RETURN *+2 IF NO 
      STA EY4         TTY SELECTED
      LDA NOTTY 
      SZA,RSS 
      JMP INR,I     RTN *+1 
      LIA 1 
      STA SAVC      SAVE SW REG 
      ISZ INR 
      JMP INR,I     RTN *+2 
      SPC 2 
EY4R  NOP           ** OUTPUT TO SWITCH REGISTER
      OTA 1 
      LDB SAVC
      RBL 
      SSB,RSS       HALT SELECTED?
EY4   HLT 0         YES 
      ISZ EY4 
      JMP EY4R,I
      SPC 2 
ERROR NOP           ERROR REPORTING ROUTINE 
      CLF 0         DISABLE INTERRUPTS
      CCB 
      ADB ERROR 
      LDA FER       FIND ERROR NUMBER BASED ON RETRN
T1    CPB A,I       ADDRESS AND TABLE 
      JMP T2        FOUND IT
      INA 
      CPA LER       END OF TABLE? 
      JMP ERROR,I   YES, EXIT ERROR ROUTINE 
      JMP T1        CONTINUE SEARCH 
T2    ADA FERC      NORMALIZE NUMBER
      STA SETXX 
      JSB SW11      TTY SUPPRESSED? 
      JMP NOH       YES 
      LDA SETXX     NO
      LDB FMI       MESSAGE ADDRESS TABLE 
      ADB A 
      LDB B,I       MESSAGE ADDRESS INTO B
      ADA FML 
      LDA A,I       MESSAGE LENGTH INTO A 
      JSB TTY.O,I   TYPE MESSAGE
NOH   ISZ CNT2      COUNT ERRORS. LEAST SIG IN
      RSS            CNT2 AND MOST SIG IN CNT1
      ISZ CNT1
      NOP 
      LDB CHLT      CODED HALT TABLE
      ADB SETXX 
      LDB B,I       CODED HALT IN B 
      STB EXX 
      JSB SW14      ERROR HALT? 
EXX   HLT 0         YES, SO HALT
      JMP ERROR,I   EXIT ERROR ROUTINE
      SKP 
TTSK  NOP           CHECKS FOR PRINTOUT SELECTION 
      CLF 0         DISABLE INTERRUPTS
      LDB TTSK
      ADB A0003     MODIFY RETURN ADDRESS 
      STB SWB 
      JSB SW11      TTY SUPPRESSED? 
      JMP SWB,I     YES, SKIP PRINTOUT
      JMP TTSK,I    NO, EXIT AND PRINT
      SPC 2 
PARTY NOP           STUFF PARITY MODE INTO MESSAGE
      STB ADRS      PAR IN A, ADDRESS IN B
      LDB AS0M
      SZA 
      JMP YE
      LDA B,I       NO PARITY 
YA    STA ADRS,I
      INB 
      LDA B,I 
      ISZ ADRS
      STA ADRS,I
      JMP PARTY,I   EXIT
YE    CPA A0002 
      JMP YO
      LDB AS1M      EVEN PARITY 
      LDA B,I 
      JMP YA
YO    LDB AS2M      ODD PARITY
      LDA B,I 
      JMP YA
ADRS  NOP 
      SPC 2 
                                      