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