/ PARITY ROUTINES FOR 7-BIT DATA / PARITY GENERATION/DETECTION ROUTINES FOR 7-BIT DATA. / BY: CHARLES J. LASNER AND DR. THEODORE RAPHAN / CHARLES LASNER ASSOCIATES / LAST EDIT: 28-OCT-1987 10:00:00 CJL / TO GENERATE/DETECT EVEN PARITY SET THE CONTENTS OF LOCATION "EVENODD" TO SZL CLA. / TO GENERATE/DETECT ODD PARITY SET THE CONTENTS OF LOCATION "EVENODD" TO SNL CLA. / CALLING CONVENTIONS. / TAD CHAR /ANY SEVEN-BIT VALUE (HIGH BITS WILL BE IGNORED) / JMS I (GENPARITY) /CALL EIGHTH-BIT PARITY GENERATING ROUTINE / RETURNS HERE WITH THE CHARACTER NOW AUGMENTED BY AN EIGHTH PARITY BIT. / TAD CHAR /ANY EIGHT-BIT VALUE (HIGH BITS WILL BE IGNORED / JMS I (CHKPARITY) /CALL EIGHTH-BIT PARITY CHECKING ROUTINE / JMP GOODPARITY /IMMEDIATE RETURN IF PARITY OK / JMP BADPARITY /SKIP RETURN IF PARITY BAD / LOCATION "EVENODD" SHOULD BE SET (TO SNL CLA/SZL CLA AS NECESSARY) BEFORE / USING THESE ROUTINES. N.B. "GENPARITY" IS CALLED BY "CHKPARITY" DURING THE / NORMAL COURSE OF EXECUTION. / PARITY SCHEMES GENERALLY CONFORM TO ONE OF THE FOLLOWING: / NONE: RECEIVE CHAR&377 AND SEND CHAR&377 WITH NO CHECKING / SPACE: RECEIVE CHAR&177 AND SEND CHAR&177 WITH NO CHECKING / MARK: RECEIVE CHAR&177 AND SEND CHAR&177!200 WITH NO CHECKING / EVEN: RECEIVE CHAR&177 AND SEND CHAR&177!PARITY WITH INCOMING CHECK / ODD: RECEIVE CHAR&177 AND SEND CHAR&177!PARITY WITH INCOMING CHECK / THESE ROUTINES ARE ONLY NEEDED TO DEAL WITH THE LAST TWO CASES. THE PROGRAM / FLOW SHOULD BYPASS THEM AND DO THE APPROPRIATE .AND. AND .OR. OPERATIONS / AS NECESSARY. / IN THE INTEREST OF COMPATIBILITY, KERMIT PACKIT INFORMATION SHOULD BE / SENT/RECEIVED WITH SPACE PARITY WHEN 8-BIT PACKET DATA IS SENT WITH NO PARITY. CHKPARI,.-. /CHECK PARITY ROUTINE AND (377) /REMOVE JUNK BITS DCA CHKTEMP /SAVE PASSED VALUE TAD CHKTEMP /GET IT BACK JMS GENPARITY /GENERATE CORRECT PARITY FOR THE CHARACTER CIA /INVERT AND TAD CHKTEMP /COMPARE TO ORIGINAL VALUE SZA CLA /SKIP IF PARITY OK ISZ CHKPARITY /BUMP RETURN IF PARITY IS BAD JMP I CHKPARITY /RETURN EITHER WAY GENPARI,.-. /GENERATE PARITY ROUTINE AND (177) /JUST KEEP DATA BITS DCA GENTEMP /SAVE PASSED VALUE TAD GENTEMP /GET IT BACK RTR /MOVE BIT[10-11] TO LINK, AC[0] SZL /SKIP IF BIT[10] WAS OFF TAD (20) /EXOR WITH BIT[5] NOW IN AC[7] SPA /SKIP IF BIT[11] WAS OFF TAD (20) /EXOR WITH BIT[5] NOW IN AC[7] RTR /MOVE BIT[8-9] TO LINK, AC[0] SZL /SKIP IF BIT[8] WAS OFF TAD (4) /EXOR WITH BIT[5] NOW IN AC[9] SPA /SKIP IF BIT[9] WAS OFF TAD (4) /EXOR WITH BIT[5] NOW IN AC[9] RTR /MOVE BIT[6-7] TO LINK, AC[0] SZL /SKIP IF BIT[6] WAS OFF IAC /TAD (1) /EXOR WITH BIT[5] NOW IN AC[11] SPA /SKIP IF BIT[7] WAS OFF IAC /TAD (1) /EXOR WITH BIT[5] NOW IN AC[11] RAR /MOVE PARITY BIT TO LINK EVENODD,SZL CLA /**** ODD PARITY **** SNL CLA TAD (200) /ADD PARITY IN AC[4] TAD GENTEMP /ADD ON CHARACTER IN AC[5-11] JMP I GENPARITY /RETURN WITH EIGHT-BIT DATA CHKTEMP,.-. /CHECK PARITY TEMPORARY GENTEMP,.-. /PARITY GENERATOR TEMPORARY