/ JG 21.9.71 / SAFERR 1.5 / INCLUDING BIT PATTERN RECOGNITION LADD1=JMS I 121 FIELD 1 *PART2 ISAFER, 0 CAM RDF CDF 10 TAD CFINST DCA INTEXT TAD INTEXT DCA EXIT JMP I PG3P PG1, JMS I LCINIT LCPCM, 0 JMS I LINIT SIZEA LDPCM, 0 JMS I LINIT SIZEB 0 JMS I LIPSP LPSP, 0 JMS I LIREST STATES LRESET, 0 JMS I LIREST STATER 0 INTEXT, HLT JMS I ISAFER SAFERR, 0 CDF 10 JMS I D4000P /LIMIT X DCA X TAD UA /Y:=X-UA JMS I D4000P CIA DCA 44 LADD1 X NOP TAD 44 DCA Y TAD Y /BITSTREAM JMS I LCPCM MAIN, DCA BIT TAD BIT JMS I LDPCM SIZEA JMS I LYZZ UA YYA ZA ESAFA, JMS I ESAF1 /ESAF (ZA,YYA,UA) ZA YYA UA N D ZABASE ZA0 A0APTR OFLOWA TAD BIT JMS I CHCODP JMS I LRESET STATES JMS I LSDO SRET, TAD BIT JMS I LPSP DCA CHBIT TAD CHBIT JMS I LDPCM SIZEB DCA CHANGY TAD CHANGY JMS I LYZZ UB YYB ZB ESAFB, JMS I ESAF1 /ESAF (ZB,YYB,UB) ZB YYB UB N D ZBBASE ZB0 A0BPTR OFLOWB TAD CHBIT JMS I CHCODP JMS I LRESET STATER JMS I LRDO RRET, TAD I OUTPTP EXIT, HLT JMP I SAFERR NUM=PART2+200 NUM1=14 NUM2=16 OUTPTP, ZB CHCODP, CHCOD D4000P, DO4000 PG3P, PG3 CFINST, CIF CDF LIREST, IRESET LSDO, DOTRS LRDO, DOTRR N, 4 LYZZ, YZZ LCINIT, CINIT LINIT, INIT LIPSP, IPSP ESAF1, 2141 ZA0, 0 ZB0, 0 *PART2+200-NUM1 BIT, 0 /LOCS TO BE CLEARED CHBIT, 0 X, 0 Y, 0 YYA, 0 YYB, 0 UA, 0 UB, 0 ZA, 0 ZB, 0 CHANGY, 0 *PART2+200+60 OFLOWA, 0 OFLOWB, 0 D, 0 0 SIZEA, 0 0 SIZEB, 0 0 STATES, 0 0 STATER, 0 0 RCOUNT, 0 SCOUNT, 0 TBA, 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 TBS, 30 0 CHCOD, 0 AND M1 DCA CODE AND M2 CLL SZA CLA CML TAD CODE SZL CMA AND M3 DCA MODCOD CLA RTL TAD MODCOD JMP I CHCOD CODE, 0 MODCOD, 0 M1, 3 M2, 2 M3, 1 *PART2+400 PG3, SWBA CAM TAD MNLOCS DCA INTCNT TAD STORE DCA INTAD NEXT, DCA I INTAD ISZ INTAD ISZ INTCNT JMP NEXT TAD ZABASE DCA ZA0 TAD ZBBASE DCA ZB0 JMP PG1 DO4000, 0 TAD N4000 SNA IAC TAD N4000 JMP I DO4000 N4000, 4000 INTAD, 0 INTCNT, 0 STORE, BIT MNLOCS, -NUM1-NUM2-60 ZABASE, NUM ZBBASE, NUM+10 A0APTR, NUM+20 A0BPTR, NUM+40 YZZ, 0 /COMP YY AND Z ENTER WITH DECOD OUT IN AC DCA TEM10 /SAVE DECOUT TAD I YZZ /GET UA ISZ YZZ DCA TEM11 /UA IN TEM11 TAD I YZZ ISZ YZZ DCA TEM12 /YY IN TEM12 TAD I TEM11 /GET (UA) ASR 2 /ALPHA SHL 0 CIA DCA 44 LADD1 TEM10 NOP TAD 44 /YY=DECOUT+ALPHA*UA DCA I TEM12 TAD I YZZ ISZ YZZ DCA TEM12 /Z IN TEM12 TAD TEM10 DCA 44 /DECOUT IN 44 LADD1 /YY IN 44 TEM11, 0 NOP TAD 44 DCA I TEM12 /ZA*=UA+DECOUT JMP I YZZ TEM10, 0 TEM12, 0 A0TR, 0 CLA TAD I A0TR/ GET NUMBER OF TAPS DCA TEM5 TAD I TEM5 CLL RAL CIA/ (N) MULT BY 2 AND THEN NEGATIV DCA TEM5 ISZ A0TR TAD I A0TR DCA TEM6 TAD I TEM6 DCA TEM6 ISZ A0TR TAD I A0TR DCA TEM7 TAD I TEM7 DCA TEM7 ISZ A0TR AGAIN, TAD I TEM6 DCA I TEM7 ISZ TEM6 ISZ TEM7 ISZ TEM5 JMP AGAIN JMP I A0TR TEM5, 0 TEM6, 0 TEM7, 0 / 13.8.71 JG /BIT PATTERN IN DP SHIFT REGISTER COMPARED WITH MASK *PART2+1000 IRESET, 0 CLA TAD I IRESET/ INIT STATE ISZ IRESET DCA LSTAT1 DCA I LSTAT1 ISZ LSTAT1 DCA I LSTAT1 TAD MASKLO/ INIT MASK AND NMSKLO/ DETERMINE LENGTH OF PATTERN CMA DCA INVMLO TAD MASKHI AND NMSKHI CMA DCA INVMHI JMS I IRESET RESET, 0 DCA SAVBIT TAD I RESET/ GET STATE ADDRESS 1=LOW ISZ RESET DCA LSTAT1 TAD LSTAT1 IAC DCA LSTAT2 TAD I LSTAT1/ SHIFT REG LOW END MQL TAD I LSTAT2 SHL 1 DCA I LSTAT2 MQA TAD SAVBIT/ UPDATE DCA I LSTAT1 TAD I LSTAT1/ COMPARE LOW END AND NMSKLO/ DETERMINE LENGTH OF PATTERN TAD INVMLO IAC SZA CLA JMP NOTFND TAD I LSTAT2 AND NMSKHI TAD INVMHI IAC SZA CLA NOTFND, ISZ RESET /SKIPS IF PATTERN NOT FOUND JMP I RESET DO, IAC DCA FLAG TAD SAVBIT JMP I RESET MASKLO, 0421 MASKHI, 0421 NMSKLO, 7777 NMSKHI, 0 LSTAT1, 0 LSTAT2, 0 INVMLO, 0 INVMHI, 0 SAVBIT, 0 FLAG, 0 /RESETTING OF COE AND COD DEC STATES /20.9.71 DOTRS, 0 ISZ I SCNTPT NOP JMS I LA0TR N10 TBAPTR A0APTR JMS I LA0TR N4 TBAPTR ZABASE JMS I LA0TR NS TBSPTR LSIZEC JMS I LA0TR NS TBSPTR LSIZEA JMP I DOTRS DOTRR, 0 ISZ I RCNTPT NOP JMS I LA0TR N10 TBAPTR A0BPTR JMS I LA0TR N4 TBAPTR ZBBASE JMS I LA0TR NS TBSPTR LSIZEB JMP I DOTRR CLL CML CLA RTR TAD I LX DCA I LX JMP I DOTR DOTR, 0 /RETURN ADDR FOR DUM ROUTINE LX, X SCNTPT, SCOUNT RCNTPT, RCOUNT LA0TR, A0TR TBAPTR, TBA TBSPTR, TBS NS, 1 N4, 4 N10, 10 LSIZEA, SIZEA LSIZEB, SIZEB LSIZEC, SIZEC $$$$$$$$$$$$$$$$$$$$$$