      JMP *-2       YES-LOOP
      JMP PAUSE,I   NO-RETURN 
* 
SW1   OCT 2 
* 
      HED     FUNCTIONAL TESTS
*                   CHARACTER SET 
* 
TST01 EQU * 
* 
CS    NOP 
      JSB PREP      PREPAIR TERMINAL
      LDA DM25      NUMBER OF LINES 
      STA CNTR        TO BE DISPLAYED 
      LDA .40       FIRST CHARACTER 
CSL   JSB A2KDT     OUTPUT IT TO TERMINAL 
      INA           MOVE TO NEXT CHARACTER
      CPA MXCR      IS THAT ALL?
      RSS           YES 
      JMP CSL       NO-FINISH LINE
      ISZ CNTR      LAST LINE 
      RSS 
      JMP *+4       YES-SKIP CRLF 
      LDA CRLF      NO-OUTPUT CRLF
      JSB A2KDT 
      JMP CSL-1     NOW DO NEXT LINE
      JSB PAUSE 
      JSB PREP      CLEAR SCREEN
      JMP CS,I      RETURN TO CONTROL 
* 
MXCR  OCT 140 
* 
      SKP 
*                   MOS ?@
* 
TST02 EQU * 
* 
MOS   NOP 
      JSB PREP      PREPAIR TERMINAL
      LDB DM25      DO 25 CURSOR DOWN'S 
      STB CNTR      REP COUNT 
      LDB CDT       CURSOR DOWN TABLE 
      JSB OPDPT     DO IT 
      ISZ CNTR      DO IT AGAIN?
      JMP *-3 
      LDA DM28      28 LINES
      STA CNTR
      LDA MOS@?     CHARACTERS FOR FIRST LINE 
MOSL  LDB DM35      70 CHARACTERS PER LINE
      JSB A2KDT 
      INB,SZB       LINE FINISHED 
      JMP *-2       NO
      STA TMP       YES 
      ISZ CNTR
      JMP *+4 
      JSB PAUSE     WAIT
      JSB PREP      CLEAR SCREEN
      JMP MOS,I     RETURN TO CONTROL 
      LDA CRLF        DO CRLF 
      JSB A2KDT 
      LDA MOS?@     SWAP ?@ 
      CPA TMP       ? 
      LDA MOS@?     YES 
      JMP MOSL      DO LOOP AGAIN 
* 
* 
MOS@? ASC 1,@?
MOS?@ ASC 1,?@
* 
CDT   DEF *+1 
      OCT 13        CURSOR DOWN COMMAND 
      OCT 176177    FOLLOWED BY 4*RUBOUT
      OCT 177777    TERMINATOR
      SKP 
*                   DOT MATRIX
* 
TST03 EQU * 
* 
DM    NOP 
      JSB PREP      PREPAIR TERMINAL
      LDA DM25      NUMBER OF LINES 
      STA CNTR
DML   LDB DM17      68 CHARACTERS 
      LDA CR1       * 
      JSB A2KDT     * 
      LDA CR2       * 
      JSB A2KDT     * OURPUT A
      LDA CR3       *  LINE 
      JSB A2KDT     * 
      LDA CR4       * 
      JSB A2KDT     * 
      INB,SZB       DONE WITH LINE? 
      JMP DML+1     NO
      ISZ CNTR      SCREEN FILLED 
      JMP *+4 
      JSB PAUSE     YES-WAIT
      JSB PREP      CLEAR SCREEN
      JMP DM,I      RETURN TO CONTROL 
      LDA CR1       * 
      LDB CR2       * 
      STB CR1       * 
      LDB CR3       * ROTATE
      STB CR2       *    CHARACTERS 
      LDB CR4       * 
      STB CR3       * 
      STA CR4       * 
      LDA CRLF      YES-DO A CRLF 
      JSB A2KDT 
      JMP DML       DO IT AGAIN 
* 
CR1   OCT 116       ASC N 
CR2   OCT 043       ASC # 
CR3   OCT 132       ASC Z 
CR4   OCT 053       ASC + 
      SKP 
*                   SPOW-EOL-EOF
* 
TST04 EQU * 
* 
SEE   NOP 
      JSB PREP      PREPAIR TERMINAL
      LDB SEEDP     TEST PATERN FOR SEE 
      JSB OPDPT     OUTPUT DATA PATERN TABLE
      LDA D2000     WAIT 2 SECONDS
      JSB TMRR,I
      LDB SEEP1     OUTPUT FIRST OVERLAY
      JSB OPDPT 
      LDA D2000     WAIT 2 SECONDS
      JSB TMRR,I
      LDB SEEP2     OUTPUT SECOND OVERLAY 
      JSB OPDPT 
      LDA D2000     WAIT 2 SECONDS
      JSB TMRR,I
      LDB SEEP3     OUTPUT THIRD PATERN 
      JSB OPDPT 
      LDA D2000     WAIT 2 SECONDS
      JSB TMRR,I
      LDB SEEP4     OUTPUT EOF
      JSB OPDPT 
      JSB PAUSE     WAIT FOR OBSERVATION
      JSB PREP      CLEAR SCREEN
      JMP SEE,I     RETURN TO CONTROL 
* *
SEEDP DEF *+1 
* 
*         INITIAL PATERN
* 
      ASC 6,AAAAAABBBBBB
      OCT 6412,6412 
      ASC 3,DDDDDD
      OCT 6412,6412 
      ASC 6,AAAAAAEEEEEE
      OCT 6412,6412 
      ASC 6,AAAAAAFFFFFF
      OCT 6412,6412 
      ASC 3,FFFFFF
      OCT 177777    TERMINATOR
* 
      SKP 
*         OVERLAY FOR B'S 
* 
SEEP1 DEF *+1 
      OCT 16415     HOME UP - RETURN ENABLES SPOW 
      ASC 6,      $$$$$$
      OCT 177777    TERMINATOR
* 
*         CLEAR D'S 
* 
SEEP2 DEF *+1 
      OCT 6412,6412 2-LINES RELEASES SPOW 
      ASC 3,
      OCT 177777    TERMINATOR
* 
*         OVERLAY FOR A'S AND EOL 
* 
SEEP3 DEF *+1 
      OCT 6412,6412 
      ASC 3,@@@@@@
      OCT 176036    4*EEOL
      OCT 177777    TERMINATOR
* 
*         OVERLAY FOR A'S AND EOF 
* 
SEEP4 DEF *+1 
      OCT 6412,6412 
      ASC 3,######
      OCT 176037    4*EEOF
      OCT 177777    TERMINATOR
      SKP 
*                   CURSOR CONTROL
* 
TST05 EQU * *
* 
CC    NOP P
      JSB PREP      PREPAIR TERMINAL
      LDB CCDP      TEST PATERN 
      JSB OPDPT     OUTPUT DATA PATERN TABLE
      LDA CUCD      SET UP
      STA TMP         POINTER 
CCLP  LDA TMP,I 
      SZA,RSS       END OF CONTROL LIST 
      JMP ECL       YES 
      STA CUCR      NO-SAVE CHARACTER 
      ISZ TMP       MOVE TO CURSOR CONTROL
      LDA TMP,I 
      STA CUDR      CURSOR DIRECTION
CULP  ISZ TMP       MOVE TO REP COUNT 
      LDA TMP,I 
      SSA,RSS       END OF REP COUNT? 
      JMP CCLP      YES 
      STA CNTR      NO - SAVE REP COUNT 
CUCLP LDB .M4       OUTPUT
      CLA             NULL
      JSB A1KDT         CHARACTER 
      INB,SZB 
      JMP *-3 
      LDA CUDR      OUTPUT
      AND .177        CURSOR
      JSB A1KDT         CONTROL 
      ISZ CNTR      IS THERE ANOTHER
      JMP CUCLP     YES 
CC01  LDA CUCR      OUTPUT CHARACTER
      JSB A1KDT 
      JMP CULP      TRY AAGAIN
* 
ECL   LDB CCP1      DO REST OF DIAPLAY
      JSB OPDPT 
      JSB PAUSE     WAIT FOR OBSERVATION
      JSB PREP      CLEAR SCREEN
      JMP CC,I      RETURN TO CONTROL 
      SKP 
CCDP  DEF *+1 
      OCT 175101    6*A 
      OCT 6412,6412 
      OCT 5015      LF-CR 
      OCT 177777    TERMINATOR
* *
CUCD  DEF *+1 
      OCT 102       ASC B 
      OCT 30        CURSOR RIGHT
      DEC -1
      DEC -2
      DEC -3
      DEC -4
      DEC -5
      DEC -6
      DEC -7
      OCT 103       ASC C 
      OCT 13        CURSOR DOWN 
      DEC -1
      DEC -2
      DEC -3
      DEC -4
      DEC -5
      OCT 104       ASC D 
      OCT 31        CURSOR LEFT 
      DEC -6
      DEC -9
      DEC -8
      DEC -7
      DEC -6
      DEC -5
      DEC -4
      OCT 105       ASC E 
      OCT 32        CURSOR UP 
      DEC -5
      DEC -4
      DEC -3
      DEC -2
      DEC -1
      NOP           TERMINATE LIST
* 
CCP1  DEF *+1 
      OCT 35        HOME UP 
      OCT 164012    24*LINE FEED
      OCT 176177    4*RUBOUT
      OCT 137040    66*SPACE
      OCT 172106    12*F
      OCT 142040    60*SPACE
      OCT 172107    12*G
      OCT 35        HOME UP 
      OCT 175110    6*H 
      OCT 34        HOME DOWN 
      OCT 176177    4*RUBOUT
      OCT 15        ACTIVATE SPOW 
      ASC 6,      IIIIII
      OCT 177777
      SKP 
*         FULL KEYBOARD INPUT TEST
* 
TST06 EQU * 
* 
FKI   NOP 
      LDB S128      CHECK TO SUPPRESS TEST
      JSB SWRT,I
      JMP FKI,I     YES 
      JSB PREP      PREPAIR TERMINAL
      JSB FKIR      CALL FOR
      DEF FKIH1       FIRST 
      DEF FKIP1         LINE
      DEF FKIP1 
* 
      JSB FKIR
      NOP 
      DEF FKIP2 
      DEF FKIP2 
* 
      JSB FKIR
      NOP 
      DEF FKIP3 
      DEF FKIP3 
* 
      JSB FKIR
      NOP 
      DEF FKIP4 4
      DEF FKIP4 
* 
      JSB FKIR
      DEF FKIH5 
      DEF FKIP5 
      DEF FKIP5 
* 
      JSB FKIR
      NOP 
      DEF FKIP6 
      DEF FKIP6 
* 
      JSB FKIR
      DEF FKIH7 
      DEF FKIP7 
      DEF FKIC7 
* 
      JSB FKIR
      DEF FKIH8 
      DEF FKIP8 
      DEF FKIC8 
* 
* 
      JSB PAUSE     WAITE FOR OBSERVATION 
FKIEX JSB PREP      CLEAR SCREEN
      JMP FKI,I     RETURN TO CONTROL 
      SKP 
FKIH1 ASC 10,INPUT THE FOLLOWING: 
      OCT 177777
FKIP1 ASC 6,1234567890:-
      OCT 177777
* 
FKIP2 ASC 5,QWERTYUIOP
      OCT 177777
* 
FKIP3 ASC 5,ASDFGHJKL;
      OCT 177777
* 
FKIP4 ASC 5,ZXCVBNM,./
      OCT 177777
* 
FKIH5 OCT 6412
      ASC 3,SHIFT+
      OCT 177777
FKIP5 ASC 6,!"#$%&'()*= 
      OCT 177777
* *
FKIP6 ASC 6,_@[\+^]<>?
      OCT 177777
* 
FKIH7 OCT 6412
      ASC 3,CNTRL+
      OCT 177777
FKIP7 ASC 2,HMX 
      OCT 177777
FKIC7 OCT 4015
      OCT 14040 
      OCT 177777
* 
FKIH8 OCT 6412
      ASC 09,RBOT LF   CR   ESC 
      OCT 177777
FKIP8 OCT 177777
FKIC8 OCT 77412     RBOT + LF 
      OCT 06433     CR + ESC
      OCT 177777
* *
      SKP 
FKIR  NOP 
      LDB FKIR,I    OUTPUT HEADER 
      SZB           IF THERE IS ONE 
      JSB OPDPT 
      LDA CRLF
      JSB A2KDT 
      ISZ FKIR
      LDB FKIR,I    OUTPUT REQUEST LINE 
      CLE,ELB       SET UPPER/LOWER FLAG
      STB PTR         USE AS POINTER TO TABLE 
FKIL1 JSB TBL2A     GET A CHARACTER FROM TABLE
      JMP FKIN1     NO MORE 
      CPA .1SPC     IF SPACE
      JMP FKIN1     SKIP IT 
      JSB A2KDT 
      LDA .2SPC 
      JSB A2KDT 
      LDA .2SPC 
      JSB A2KDT 
      JMP FKIL1     MOVE TO NEXT CHARACTER
FKIN1 LDA CRLF
      JSB A2KDT 
      ISZ FKIR
      LDB FKIR,I    BET COMPAIR CHR.
      ISZ FKIR
      CLE,ELB       SET UPPER LOWER FLG 
      STB PTR       SAVE AS TABLE POINTER 
FKIL2 JSB TBL2A     GET A CHARACTER FROM TABLE
      JMP FKIR,I    NO MORE CHARACTERS
      CPA .1SPC 
      JMP FKIR,I
      STA TMP       SAVE IT FOR COMPAIR 
      LDA ICMD      CALL FOR INPUT
      JSB KDT2A     GO GET INPUT
      JMP FKIEX     ABORT TEST
      CPA TMP       WAS IT OK?
      JMP FKIO1 
      LDB FKIBD     NO-OUTPUT 
      CCE             OCTAL 
      JSB O2AS,I         EQU. 
      LDB FKIBD 
      ADB .2
      JSB OPDPT 
      JMP *+3 
FKIO1 LDB FKISP     YES-OUTPUT 5 SPACES 
      JSB OPDPT 
      JMP FKIL2 
      SKP 
TBL2A NOP           GET A CHARACTER FROM THE TABLE
      LDB PTR       GET POINTER 
      CLE,ERB       ADJUST UPPER LOWER FLAG 
      LDA B,I       GET 2 CHARACTERS
      CPA .M1       IS IT THE TERMINATOR
      JMP TBL2A,I   YES 
      SEZ,RSS       NO-IS IT UPPER OR LOWER 
      ALF,ALF       IT'S UPPER
      AND .177      MASK OFF UNWANTED BITS
      ISZ PTR       MOVE TO NEXT CHARACTER
      ISZ TBL2A     ADJUST CHARACTER RETURN 
      JMP TBL2A,I 
* 
* 
* 
PTR   NOP 
.1SPC OCT 40
.2SPC ASC 1,
* 
FKIBD DEF *+1 
      NOP 
      NOP 
      NOP 
      ASC 1,
      OCT 40
      OCT 177777
* 
FKISP DEF *+1 
      OCT 175440    5*SPACE 
      OCT 177777
      SKP 
*                   FREE INPUT
* 
TST07 EQU * 
* *
FI    NOP 
      LDB S128      CHECK TO SUPPRESS TEST
      JSB SWRT,I
      JMP FI,I      YES 
      JSB PREP      CLEAR SCREEN
      LDB FIH       TELL OPERATOR TO
      JSB OPDPT       INPUT ANY KEY 
      LDA .M10      10 INPUTS PER LINE
      STA CNTR
FIL   LDA ICMD      CALL FOR INPUT
      JSB KDT2A     CALL FOR IT 
      JMP FIEX      ABORT TEST
      LDB A 
      ADB M41 
      SSB           * 
      JMP FI1       *CHECK
      ADB M100      *   FOR 
      SSB,RSS       *      DISP.CHR.
      JMP FI1       * 
      STA FIP+1     IT'S OK 
      LDB FIP         ECHO IT 
      JSB OPDPT 
      JMP FI2       DO IT AGAIN 
FI1   LDB FKIBD     NO-OUTPUT 
      CCE           OCTAL 
      JSB O2AS,I    EQUIV.
      LDB FKIBD 
      ADB .2
      JSB OPDPT 
FI2   ISZ CNTR      ALL FOR THIS LINE 
      JMP FIL       NO
      LDA CRLF      YES DO RETURN LINE FEED 
      JSB A2KDT 
      JMP FIL-2 
* 
FIEX  JSB PREP      CLEAR SCREEN
      JMP FI,I      RETURN TO CONTROL 
* *
FIP   DEF *+1 
      NOP 
      ASC 2,
      OCT 177777
* 
FIH   DEF *+1 
      ASC 7,INPUT ANY KEY 
      OCT 6412
      OCT 177777
* 
M41   OCT -41 
M100  OCT -100
      SKP 
*                   ECHO
* 
TST10 EQU * 
* 
ECHO  NOP 
      LDB S128      CHECK TO SUPPRESS TEST
      JSB SWRT,I
      JMP ECHO,I    YES 
      JSB PREP      CLEAR SCREEN
      LDB ECHOM     TELL OPERATOR HE IS 
      JSB OPDPT       IN ECHO MODE
      LDA ECHOC     GET CARD ECHO COMMAND 
      JSB KDT2A     GO GET IT 
      RSS 
      JMP *-3 
      JSB PREP      CLEAR SCREEN
      JMP ECHO,I    RETURN TO CONTROL 
* *
ECHOC OCT 160000
* 
ECHOM DEF *+1 
      ASC 15,ECHO MODE ANY INPUT IS ECHOED
      OCT 6412
      OCT 177777
* 
* 
      SKP 
*                   OSCILLATOR
* 
TST11 EQU * 
* 
OSC   NOP 
      LDB S128      CHECK TO SUPPRESS TEST
      JSB SWRT,I
      JMP OSC,I     YES 
      JSB PREP      PREPAIR TERMINAL
* 
H030  JSB MSGH,I    TELL OPERATOR TO SWITCH TO 110
      DEF OSCM1     POINTER TO MESSAGE
* 
      LDA TOLZ1     OK NOW GET TOLERANCE
      LDB TOLZ2 
      JSB OSCC      CHECK BOARD 
* 
H031  JSB MSGH,I    TELL OPERATOR TO SWITCH TO 150
      DEF OSCM2 
* 
      LDA TOLZ3     OK NOW GET TOLERANCE
      LDB TOLZ4 
      JSB OSCC      CHECK BOARD 
* 
H035  JSB MSGH,I    ALLOW OPERATOR TO 
      DEF OSCM3       CHANGE BAUD RATE BACK 
      JSB PREP      CLEAR SCREEN
      JMP OSC,I     RETURN TO CONTROL 
* 
OSCM1 ASC 15,H030 PUT TERMINAL IN 110 BAUD/ 
* 
OSCM2 ASC 15,H031 PUT TERMINAL IN 150 BAUD/ 
* 
OSCM3 ASC 13,H035 RETURN BAUD SWITCH TO 
      ASC 10, ORIGINAL POSITION/
      SKP 
*         CHECK BOARD 
* 
OSCC  NOP 
      STA TOLZA     SAVE TOLERANCE
      STB TOLZB 
      LDA .M10      SET LOOP
      STA CNTR        COUNT 
* 
OSCCL LDA OCMD      SET OUTPUT
      JSB A2KDT       MODE
* 
      JSB TCJI      PUT JSB IN TRAP CELL
      DEF OSCCI     LOCATION
      CCA           SET OUT OF
      STA TMP         TOLZ FLAG 
      STF INTP      TURN ON INTERRUPTS
OSCS1 STC KDT,C     START TRANSFER
      LDA TOLZA     WAIT FOR INT. 
      JSB TMRR,I
      ISZ TMP       SHOW IN TOLZ
      NOP 
      LDA TOLZB 
      JSB TMRR,I
      ISZ TMP       OUT OF TOLZ 
      LDA TOLZA 
      JSB TMRR,I
* 
      CLF INTP      TURN OFF INTERRUPTS 
      JSB ERMS,I    LONG ENOUGH - ERROR 
      DEF FTOM      POINTER TO MESSAGE
OSCEX CLC KDT,C     TURN CARD OFF 
      JMP OSCC,I
      SKP 
OSCCI NOP           INTERRUPTED 
      CLF INTP      TURN INTERRUPTS OFF 
      LDA TMP 
      SZA           WAS IT IN TOLERANCE?
      JMP OSCE0     NO
      ISZ CNTR      DO LOOP AGAIN?
      JMP OSCCL     YES 
      JMP OSCEX 
* 
OSCE0 SSA,RSS       EARLY OR LATE 
      JMP OSCE1 
* 
E032  JSB ERMS,I    EARLY ERROR 
      DEF OSEM1 
      JMP OSCEX 
* 
OSEM1 ASC 08,E032 CLOCK FAST/ 
* 
OSCE1 EQU * 
E033  JSB ERMS,I    LATE ERROR
      DEF OSEM2 
      JMP OSCEX 
* 
OSEM2 ASC 08,E033 CLOCK SLOW/ 
* 
TOLZA NOP 
TOLZB NOP 
TOLZ1 DEC 96        * 110 BAUD
TOLZ2 DEC 7         * 
TOLZ3 DEC 70        $ 150 BAUD
TOLZ4 DEC 6         $ 
      SKP 
*                   DISPLAY ALLIGNMENT
* 
TST12 EQU * 
* 
DA    NOP 
      JSB PREP      PREPAIR TERMINAL
      LDA DM25      SET 25 LINES
      STA CNTR
DAL   LDB DADP      OUTPUT E'S
      JSB OPDPT 
      ISZ CNTR      ALL LINES DONE? 
      JMP *+4 
      JSB PAUSE     YES 
      JSB PREP      CLEAR SCREEN
      JMP DA,I      RETURN TO CONTROL 
      LDA CRLF      NO- DO A CRLF 
      JSB A2KDT 
      JMP DAL 
* 
* 
DADP  DEF *+1 
      OCT 134505    71*E
      OCT 177777
FWAA  EQU ZCEND 
      END 
                                                                                                                        