STB BUFFA,I LDA SDDTC ADA MD1 STA SDDTC JMP SDC05 SPC 2 SDDTC BSS 1 SDCNT BSS 1 SDTYP BSS 1 SDBA ABS RSPAR SDP ABS PAR SDST ABS STB SDSTX ABS STB+3 SPC 2 SDOUT DEF *-* RETURN ADDRESS LDA SDOUT,I GET PARAMETER ISZ SDOUT UPDATE RETURN ADDRESS STA SDOP1 SAVE LDA BXMIT INITIALIZE BUFFER POINTER STA BUFFA LDA MD128 INITIALIZE COUNTER STA BCNTR LDA SDWD4 GET WORD 4 COMMAND STA SDOP3 SAVE SDOC1 LDA SDOP1 GET PARAMETER AND MSK3 STA B LDA SDOP1 AND SDST SZA INB LDA SDOP1 AND SDP SZA INB ADB D6 CMB,INB STB SDOCN COUNTER - BITS / CHARACTER JSB CMND PREPARE FOR RECEIVE SDOP3 BSS 1 WORD 4 COMMAND JSB CLK16 START BIT SDOC2 LDA BUFFA,I GET DATA CMA AND MSK1 ALF,ALF RAR,RAR ADA SDWD4 STA SDOP2 LDA BUFFA,I RAR STA BUFFA,I JSB CMND SDOP2 BSS 1 JSB CLK16 SUPPLY 16 CLICKS ISZ SDOCN UPDATE BIT COUNTER JMP SDOC2 CONTINUE WITH THIS CHARACTER ISZ BUFFA UPDATE BUFFER POINTER ISZ BCNTR UPADTE COUNTER JMP SDOC1 CONTINUE - MORE CHARACTERS JSB CLK16 JMP SDOUT,I RETURN SPC 2 MSK1 EQU D1 SDOCN BSS 1 SDOP1 BSS 1 D6 DEC 6 SDWD4 BSS 1 SPC 2 LINBF DEF *-* RETURN ADDRESS LDA MD128 INITIALIZE COUNTER STA BCNTR LDB BRCV INITIALIZE BUFFER POINTER STB BUFFB LDB BXMIT INITIALIZE BUFFER POINTER STB BUFFA LIC01 LDA BUFFB,I PREPARE DATA AND LOHWD STA BUFFB,I REPLACE IN BUFFER LDA BUFFA,I AND MSKCZ STA BUFFA,I REPLACE IN BUFFER ISZ BUFFB UPDATE BUFFER POINTER ISZ BUFFA UPDATE BUFFER POINTER ISZ BCNTR UPDATE COUNTER JMP LIC01 CONTINUE JMP LINBF,I RETURN SPC 2 FIXDA DEF *-* RETURN ADDRESS LDA FIXDA,I GET DATA FORMAT STA FXDAT SAVE ISZ FIXDA UPDATE RETURN ADDRESS LDB BXMIT GET BUFFER POINTER STB BUFFA SAVE LDB MD128 INITIALIZE COUNTER STB BCNTR FXC07 LDA FXDAT AND MSK3 LDB MSK37 FXC09 SZA,RSS JMP FXC08-1 RBL INB ADA MD1 JMP FXC09 STB MSKCZ SAVE MASK FXC08 LDA BUFFA,I AND B STA BUFFA,I LDA FXDAT AND SDP IS PARITY USED SZA,RSS JMP FXC01 NO- DO START AND STOP(S) LDA FXDAT AND .B2 YES - WHAT TYPE SZA,RSS CCB,RSS CLB LDA BUFFA,I GET DATA JSB PTYGN GENERATE PARITY STA BUFFA,I SAVE AND .B8 STA B SAVE PARITY BIT RBR,RBR RBR LDA FXDAT AND MSK3 NO BITS / CHAR FXC03 SZA,RSS JMP FXC02 CONTINUE RBL ADA MD1 JMP FXC03 CONTINUE FXC02 LDA BUFFA,I AND B0TB7 IOR B RSS FXC01 LDA BUFFA,I GET DATA RAL INSERT START BIT AND NB0 MASK STA BUFFA,I SAVE LDB .B6 LDA FXDAT AND SDST CHECK NO STOP BITS SZA ADB .B7 USE 2 LDA FXDAT AND MSK3 GET NO OF BITS / CHAR FXC06 SZA,RSS JMP FXC05 CONTINUE RBL PUT STOP BITS IN CORRECT POSITION ADA MD1 JMP FXC06 FXC05 LDA FXDAT AND SDP SZA IS PARITY USED RBL POSITION STOP BIT(S) LDA BUFFA,I GET DATA IOR B STA B STB BUFFA,I SAVE COMPLETE DATA ISZ BUFFA UPDATE BUFFER POINTER ISZ BCNTR UPDATE BUFFER COUNTER JMP FXC07 JMP FIXDA,I RETURN SPC 2 FXDAT BSS 1 MSKCZ BSS 1 .B2 OCT 4 .B6 OCT 100 .B7 OCT 200 NB0 OCT 7776 SPC 2 PTYGN DEF *-* RETURN ADDRESS STB PYTYP SAVE PARITY TYPE LDB MD8 STB PYCNT CCB AND B0TB7 MASK PYC01 SLA GENERATE PARITY CMB RAR ISZ PYCNT JMP PYC01 ALF,ALF SZB IOR .B8 LDB PYTYP GIVE CORRECT SSB,RSS PARITY TO XOR .B8 DATA JMP PTYGN,I RETURN PYCNT BSS 1 COUNTER MSK37 OCT 37 PYTYP BSS 1 PARITY TYPE .B8 OCT 400 B0TB7 ABS B0+B1+B2+B3+B4+B5+B6+B7 SPC 2 CMND DEF *-* RETURN ADDRESS LDA CMND,I GET DATA ISZ CMND UPDATE RETURN OTIO1 OTA SARI OUTPUT JMP CMND,I RETURN SPC 2 PTG DEF *-* RETURN ADDRESS LDA PTG,I GET ADDRESS OF STA PTGI INTERRUPT ROUTINE ISZ PTG LDA PTG,I GET ADDRESS OF STA IRTN INTERRUPT RETURN JSB TRJSB,I FILL TRAP CELL PTGI DEF *-* ISZ PTG UPDATE RETURN JMP PTG,I RETURN SPC 2 CBUFS DEF *-* RETURN CLA STA NOERS INITIALIZE ERROR FLAG LDA CBUFS,I GET ERROR POINTER STA CBERR LDA MD128 INITIALIZE COUNT STA CBCNT LDA BXMIT INITIALIZE POINTERS STA BUFFA LDA BRCV STA BUFFB CBC02 LDA CBC1A STA CDATA LDA BUFFA,I ISZ BUFFA STA CEXPD SAVE LDA BUFFB,I ISZ BUFFB LDB A JMP CDAC1 CHECK DATA CEXPD BSS 1 EXPECTED DATA CBERR DEF *-* ERROR MESSAGE POINTER ISZ NOERS CHECK FOR ERRORS RSS CONTINUE JMP CBC03 DO NOT REPORT ANY NORE ERRORS ISZ CBCNT DONE? JMP CBC02 CONTINUE CBC03 ISZ CBUFS UPDATE RETURN JMP CBUFS,I RETURN CBCNT BSS 1 CBC1A DEF CEXPD SPC 2 DMAON DEF *-* RETURN ADDRESS LDA DMACF PLACE STA SDMAH CLF IN TRAP CELL LDA CW1 GET COMMAND WORD 1 OTA SDMAH OUTPUT TO DMA CLC SDMAL PREPARE FOR CW2 LDA DMAON,I INPUT OR OUTPUT + OTA SDMAL ADDRESS TO DMA STC SDMAL PREPARE FOR CW3 LDA CW3 GET CONTROL WORD 3 OTA SDMAL OUTPUT TO DAM FNIO5 STC SARI,C START ARI STC SDMAH,C START DMA ISZ DMAON UPDATE RETURN JMP DMAON,I RETURN SPC 1 CW1 ABS SARI CONTROL WORD 1 FOR DMA CW3 EQU MD128 SPC 2 DMAOF DEF *-* RETURN ADDRESS DMACF CLF SDMAH TRUN OFF DMA LIA SDMAL GET COUNT SZA,RSS CHECK COUNT = 0 JMP DMAOF,I RETURN CLF INTP CLEAR INTERRUPT SYSTEM JSB ERMS,I REPORT ERROR DEF EM154 JMP DMAOF,I RETURN SPC 2 CLBFR DEF *-* RETURN ADDRESS LDB MD128 INITIALIZE COUNTER CLA CLEAR STB CLCNT LDB BRCV BUFFER POINTER CLC01 STA B,I CLEAR BUFFER INB UPDATE POINTER ISZ CLCNT UPDATE COUNT JMP CLC01 CONTINUE JMP CLBFR,I RETURN CLCNT BSS 1 COUNTER SPC 2 PTGNR DEF *-* RETURN ADDRESS LDA PTGNR,I GET START PATTERN STA PTGTY SAVE LDB MD128 INITIALIZE COUNTER STB PTNCT SAVE LDB BXMIT GET BUFFER POINTER PTGC1 STA B,I PLACE DATA IN BUFFER INB UPDATE BUFFER POINTER LDA PTGTY GET DATA SZA,RSS RSS SSA RSS INA STA PTGTY SAVE NEXT DATA ISZ PTNCT UPDATE COUNTER JMP PTGC1 CONTINUE ISZ PTGNR UPDATE RETURN ADDRESS JMP PTGNR,I RETURN SPC 2 PTGTY BSS 1 DATA PTNCT BSS 1 SKP CSTUS DEF *-* RETURN ADDRESS JSB RSTUS GET INTERFACE STATUS CSC01 STA STAT SAVE ACTUAL STATUS LDA CSTUS,I GET EXPECTED STATUS ISZ CSTUS UPDATE RETURN CPA STAT CHECK STATUS JMP CSXIT CONTINUE STA EXSTS SAVE EXPECTED STSTUS LDA CSTUS,I GET ERROR MESSAGE STA CSFRM SAVE LDA EMCS3 STA CSTO JSB MOVE CSTO DEF *-* CSFRM DEF *-* LDA EXSTS GET EXPECTED STATUS CLE LDB EMCS2 JSB O2AS,I LDA STAT GET ACTUAL STATUS CLE LDB EMCS1 JSB O2AS,I JSB ERNO GET SUB-TEST NO. DEF EMCS LDA STAT GET ACTUAL STATUS LDB EXSTS GET EXPECTED STATUS JSB ERMS,I OUTPUT ERROR DEF EMCS CSXIT ISZ CSTUS JMP CSTUS,I RETURN EMCS ASC 8,EXXX STATUS IS EMS1 ASC 6,XXXXXX EXP EMS2 ASC 4,YYYYYY ( EMS3 ASC 14, EMCS1 DEF EMS1 EMCS2 DEF EMS2 EMCS3 DEF EMS3 STAT BSS 1 ACTUAL STATUS EXSTS BSS 1 SPC 2 MSTUS DEF *-* RETURN ADDRESS JSB RSTUS READ STATUS AND MSTUS,I MASK THE STATUS ISZ MSTUS UPDATE RETURN ADDRESS LDB MSTUS GET RETURN ADDRESS STB CSTUS SAVE JMP CSC01 CONTINUE SPC 2 MOVE DEF *-* RETURN ADDRESS LDB MOVE,I GET TO ISZ MOVE LDA .M14 STA MVCNT LDA MOVE,I GET FROM STA MVFRM MVC01 LDA MVFRM,I GET DATA STA B,I PUT DATA INB ISZ MVFRM ISZ MVCNT JMP MVC01 ISZ MOVE JMP MOVE,I RETURN MVCNT BSS 1 .M14 DEC -14 MVFRM DEF *-* SPC 2 ESTUS DEF *-* RETURN ADDRESS JSB RSTUS READ STATUS AND MSKXS MASK LDB ESTUS GET RETURN ADDRES STB CSTUS SAVE JMP CSC01 CONTINUE SPC 2 MSKXS ABS CC+CF+SCF+CB+CE+DEVI+DEVI SKP CDATA DEF *-* RETURN ADDRESS JSB RDDTA GET DATA FROM INTERFACE CDAC1 STA DATA SAVE ACTUAL DATA LDA CDATA,I GET EXPECTED DATA ISZ CDATA UPDATE RETURN CPA DATA CHECK DATA JMP CDXIT CONTINUE STA EXDAT SAVE EXPECTED DATA LDA CDATA,I GET MESSAGE POINTER STA CDFRM LDA EMCD3 STA CDTO JSB MOVE CDTO DEF *-* CDFRM DEF *-* LDA EXDAT GET EXPECTED DATA CLE LDB EMCD2 JSB O2AS,I CONVERT TO ASCII LDA DATA GET ACTUAL DATA CLE LDB EMCD1 JSB O2AS,I CONVERT TO ASCII JSB ERNO PLACE E NO. DEF EMCD LDA DATA GET ACTUAL DATA LDB EXDAT GET EXPECTED DATA JSB ERMS,I REPORT ERROR DEF EMCD JSB ALLER CHECK - ALL ERRORS DESIRED CDXIT ISZ CDATA UPDATE RETURN JMP CDATA,I RETURN SPC 2 EMCD ASC 7,EXXX DATA IS EMD1 ASC 6,XXXXXX EXP EMD2 ASC 4,YYYYYY ( EMD3 ASC 14, EMD4 ASC 4, STOP, EMD5 ASC 6, PARITY, EMD6 ASC 9, BITS PER CHAR)/ EMCD1 DEF EMD1 EMCD2 DEF EMD2 EMCD3 DEF EMD3 DATA BSS 1 ACTUAL DATA EXDAT BSS 1 EXPECTED DATA SPC 2 MDATA DEF *-* RETURN ADDRESS JSB RDDTA READ DATA AND MDATA,I MASK THE DATA ISZ MDATA UPDATE RETURN ADDRESS LDB MDATA GET RETURN ADDRESS STB CDATA SAVE JMP CDAC1 CONTINUE SPC 2 CBURT DEF *-* RETURN ADDRESS LDA CBURT,I GET WORD 3 COMMAND STA CBWD3 SAVE ISZ CBURT UPDATE RETURN ADDRESS LDA CBURT,I GET ERROR MSG POINTER STA CBMSG SAVE ISZ CBURT UPDATE RETURN ADDRESS LDA MD128 INITIALIZE COUNTER STA BCNTR LDA BXMIT GET BUFFER POINTER STA BUFFA SAVE LDA BRCV GET BUFFER POINTER STA BUFFB SAVE CLA INITIALIZE ERROR FLAG STA NOERS CBUC2 LDB BUFFA,I GET EXPECTED DATA LDA BUFFB,I GET ACTUAL DATA CPA B CHECK DATA JMP CBUC1 CONTINUE STB EXDAT SAVE EXPECTED DATA STA DATA SAVE ACTUAL DATA JSB MOVE MOVE MSG DEF EMD3 CBMSG DEF *-* MSG POINTER JSB ERNO GENERATE ENNN DEF EMCD POINTER TO MSG LDA CBWD3 GET WORD 3 COMMAND AND MSK3 ISOLATE BITS / CHAR ADA ASCI5 CONVERT TO ASCII STA EMD6 PLACE IN MSG LDA CBWD3 GET WORD 3 COMMAND AND .B5 ISOLATE STOP LDB ASCI1 1 STOP BIT SZA LDB ASCI2 2 STOP BITS STB EMD4 PLACE IN MSG LDA CBWD3 GET WORD 3 COMMAND RAR,RAR POSITION AND MSK3 ISOLATE PARITY TYPE SZA,RSS WAS PARITY USED JMP CBNOP CONTINUE - NO PARITY USED SLA,RSS EVEN OR ODD? JMP CBODD CONTINUE - ODD PARITY USED LDA CBM1E EVEN PARITY USED LDB CBM2E GET ASCII "EVN" JMP CBEC1 CONTINUE CBODD LDA CBM1O GET ASCII "ODD" LDB CBM2O JMP CBEC1 CONTINUE CBNOP LDA CBM1N GET ASCII "NO" LDB CBM2N CBEC1 STA EMD5 PLACE IN MSG STB EMD5+1 LDA EXDAT GET EXPECTED DATA CLE LDB EMCD2 GET POINTER JSB O2AS,I CONVERT TO ASCII LDA DATA GET ACTUAL DATA CLE LDB EMCD1 GET POINTER JSB O2AS,I CONVERT TO ASCII LDA DATA GET ACTUAL DATA LDB EXDAT GET EXPECTED DATA JSB ERMS,I REPORT ERROR DEF EMCD POINTER TO MSG JSB ALLER CHECK - ALL ERRORS DESIRED LDB SW14 MASK FOR SE 14 SWJSB JSB SWRT,I CHECK SW REG JMP CBEC2 CONTINUE LDA SUBT. GET SUB-TEST NO (ENNN) AND .77 IOR CBHTI GENERATE HALT INSTRUCTION STA CBHLT PLACE HALT INSTRUCTION IN PROGRAM LDB 112B IS THERE A TELEPRINTER? LDA CBWD3 GET WORD 3 COMMAND FOR DISPLAY SZB,RSS CBHLT NOP NOP REPLACED WITH HALT 1030XX CBEC2 ISZ NOERS CHECK - ALL ERRORS DESIRED RSS JMP CBURT,I NO - RETURN CBUC1 ISZ BUFFA UPDATE BUFFER POINTER ISZ BUFFB UPDATE BUFFER POINTER ISZ BCNTR UPDATE COUNTER JMP CBUC2 CONTINUE JMP CBURT,I RETURN SPC 1 CBHTI OCT 103000 HALT INSTRUCTION SW14 OCT 40000 MASK FOR SE REG BIT 14 CBM1N ASC 1, N CBM2N ASC 1,O CBM1O ASC 1, O CBM2O ASC 1,DD CBM1E ASC 1, E CBM2E ASC 1,VN ASCI5 ASC 1, 5 ASCI1 ASC 1, 1 ASCI2 ASC 1, 2 CBWD3 BSS 1 WORD 3 COMMAND .B5 ABS B5 SPC 1 ALLER DEF *-* RETURN ADDRESS LDB SW2 MASK FOR SWITCH 2 JSB SWRT,I CHECK SWITCH REGISTER CLA,RSS CLEAR ERROR FLAG CCA SET ERROR FLAG STA NOERS SAVE FLAG JMP ALLER,I RETURN SPC 1 NOERS BSS 1 ERROR FLAG SPC 2 SPCHC DEF *-* RETRUN ADDRESS LDA SPCHX GET COMMAND STA SPCP1 SAVE JSB CMND PLACE IN TRANSMIT MODE ABS WRD4+XMIT SPCC1 JSB CMND OUTPUT WORD 6 COMMAND SPCP1 BSS 1 LDA SPCP1 UPDATE COMMAND INA STA SPCP1 AND LOHWD SZA JMP SPCC1 CONTINUE JSB CMND PLACE IN RECEIVE MODE ABS WRD4 JMP SPCHC,I RETURN SPC 2 SPCHX ABS WRD6 SKP ORG ZCEND IOID EQU * DEF FNIO0 DEF FNIO1 DEF CNIO1 DEF CNIO2 DEF CNIO3 DEF CNIO4 DEF OTIO1 DEF FNIO2 DEF FNIO5 DEF STIO1 DEF FNIO6 DEF IOIN6 DEF CW1 DEF CLK00 DEF CLK01 DEC -1 TSTD EQU * DEF TST00 DEF TST01 DEF TST02 DEF TST03 DEF TST04 DEF TST05 DEF TST06 DEF TST07 DEF TST10 DEF TST11 DEF TST12 DEF TST13 DEC -1 SKP TST01 EQU * MRTST DEF *-* RETURN ADDRESS JSB STSUB SAVE SUB-TEST NO. OCT 30 SUB-TEST NO. JSB CLF CLEAR INTERFACE FLAG CLC IOCLR I/O MASTER RESET JSB SFS CHECK INTERFACE FLAG FF RSS JMP MRC01 CONTINUE JSB ERMS,I REPORT ERROR DEF EM030 ERROR MESSAGE POINTER MRC01 JSB SHUTA CHECK SUB-TEST HALT,LOOP JSB CLF CLEAR INTERFACE FLAG JSB STC SET INTERFACE CONTROL FF JSB TRJSB,I FILL INTERRUPT TRAP CELL DEF MRIR1 WHERE TO GO IF INTERRUPT STF INTP ENABLE INTERRUPT SYTTEM CLC IOCLR I/O MASTER RESET NOP ALLOW TIME FOR INTERRUPT NOP INTERRUPT SHOULD NOT OCCUR CLF INTP TURN OFF THE INTERRUPT SYSEM JMP MRC02 CONTINUE MRIR1 DEF *-* RETURN ADDRESS CLF INTP TURN OFF INTERRUPT SYSTEM JSB ERMS,I REPORT ERROR DEF EM031 POINTER TO MESSAGE MRC02 JSB SHUTA CHECK SUB-TEST HALT,LOOP JSB CLF CLEAR INTERFACE FLAG FF JSB STC SET CONTROL FF JSB MRST GIVE INTERFACE A MASTER RESET COMMAND JSB SFS CHECK INTERFACE FLAG FF RSS JMP MRC03 CONTINUE JSB ERMS,I REPORT ERROR DEF EM032 POINTER TO MESSAGE MRC03 JSB SUBTH CHECK SUB-TEST HALT JSB CLF CLEAR INTERFACE FLAG FF JSB STC SET INTERFACE CONTROL FF JSB TRJSB,I FILL INTERRUPT TRAP CELL DEF MRIR2 WHERE TO GO IF INTERRUPT STF INTP TURN ON INTERRUPT SYSTEM NOP ALLOW TIME FOR AN INTERRUPT TO TAKE NOP PLACE JSB SUBTH UPDATE SUB-TEST NO. JSB TRJSB,I FILL INTERRUPT TRAP CELL DEF MRIR3 WHERE TO GO IF INTERRUPTED JSB MRST GIVE INTERFACE A MASTER RESET COMMAND NOP GIVE THE INTERFACE TIME TO INTERRUPT NOP THERE SHOULD BE NO INTERRUPT CLF INTP TURN OFF THE INTERRUPT SYSTEM MRC04 JSB SUBTT CHECK SUB-TEST HALT,LOOP JMP MRTST,I RETURN SPC 2 MRIR2 DEF *-* RETURN ADDRESS CLF INTP TURN OFF THE INTERRUPT SYSTEM JSB ERMS,I REPORT ERROR DEF EM033 POINTER TO MESSAGE JMP MRC04 CONTINUE MRIR3 DEF *-* RETURN ADDRESS CLF INTP TURN INTERRUPT SYSTEM OFF JSB ERMS,I REPORT ERROR DEF EM034 POINTER TO MESSAGE JMP MRC04 CONTINUE SKP TST02 EQU * MSTST DEF *-* RETURN ADDREEES JSB STSUB SAVE SUB-TEST NO OCT 35 JSB MRST MASTER RESET JSB MSS1 TEST SBA,SBB ABS WRD4+SCA ABS SCF+CF EXPECTED STATUS DEF EM035 JSB SHUTA UPDATE SUB-TEST NO. JSB MSS1 TEST CD, CC, CE ABS WRD4+CA ABS CC+CE DEF EM036 JSB SHUTA UPDATE SUB-TEST NO. JSB MSS1 TEST CA, CB, CF ABS WRD4+CD ABS CB DEF EM037 JSB SHUTA UPDATE SUB-TEST NO. JSB CMNDD INITIALIZE INTERFACE ABS WRD4+CD+CA JSB RSTUS READ STATUS (CLC CH) AND MSTT1 MASK CPA MSTT1 CHECK STATUS JMP MSC01 CONTINUE JSB ERMS,I REPORT ERROR DEF EM040 MSC01 JSB SUBTH UPDATE SUB-TEST NO. JSB RDDTA READ DATA - SET CONTROL FF AND MSTT1 MASK CPA MSTT1 CHECK NOT EQUAL RSS STATUS JMP MSC02 CONTINUE JSB ERMS,I REPORT ERROR DEF EM041