diff --git a/src/system/salv.315 b/src/system/salv.315 index 98999ed7..258a6923 100644 --- a/src/system/salv.315 +++ b/src/system/salv.315 @@ -1820,27 +1820,27 @@ MARK69: MOVE I,TOU IDPB A,C JRST 6TYL DC,[ -HCOMP: SETOM HPAR' +HCOMP: SETOM HPAR' ;RESET PARITY MOVEI J,(I) - HRLI J,-2 + HRLI J,-2 ;AOBJN POINTER TO TWO 28-BIT WORDS HCOMP1: MOVEI B,14. - MOVE A,(J) + MOVE A,(J) ;GET WORD XORM A,HPAR - LSH A,-2 + LSH A,-2 ;XOR AND SHIFT 2 BITS, 14 TIMES SOJG B,.-2 AOBJN J,HCOMP1 - MOVE B,(I) - PUSHJ P,ENCH - MOVE B,HPAR + MOVE B,(I) ;GET FIRST HEADER WORD + PUSHJ P,ENCH ;ENCODE IT + MOVE B,HPAR ;GET PARITY BITS ANDI B,3 LSH B,20. - XORB B,1(I) - PUSHJ P,ENCH + XORB B,1(I) ;ADD TO SECOND HEADER WORD + PUSHJ P,ENCH ;ENCODE IT MOVSI B,770000 -HCOMP2: TDNN B,DSKBP +HCOMP2: TDNN B,DSKBP ;PAD OUT THE WORD POPJ P, - PUSHJ P,ENCDO + PUSHJ P,ENCDO ;WITH ONES JRST HCOMP2 ENCO: SKIPA A,C1 @@ -1856,9 +1856,9 @@ ENCT: ENC1 ENCDO: SKIPA A,[3] ENCDZ: MOVEI A,0 -ENCD: ANDI A,3 +ENCD: ANDI A,3 ;MASK DATA TO TWO BITS HRRZ T,ENCS - JRST @ENCDT(T) + JRST @ENCDT(T) ;DISPATCH ACCORDING TO STATE ENCDT: ENC2A [JRST 4,.] @@ -1866,25 +1866,25 @@ ENCDT: ENC2A [JRST 4,.] ENC1: HRLM A,ENCS -ENC1A: AOS ENCS +ENC1A: AOS ENCS ;DATA WAS ZERO, UPDATE STATE POPJ P, ENC2: ROT A,-1 HLR A,ENCS ROT A,2 JRST ENC2B -ENC2A: LSH A,1 - AOS ENCS -ENC2B: JUMPE A,ENC1A -C1: TRO A,1 - IDPB A,DSKBP' -ENC3: SETZM ENCS +ENC2A: LSH A,1 ;SHIFT DATA + AOS ENCS ;UPDATE STATE +ENC2B: JUMPE A,ENC1A ;DATA ZERO +C1: TRO A,1 ;SET LOW BIT + IDPB A,DSKBP' ;STORE +ENC3: SETZM ENCS ;RESET STATE POPJ P, ENCZ2: ROT A,-1 HLR A,ENCS JRST .+2 -ENCZ2A: ROT A,-1 +ENCZ2A: ROT A,-1 ;HERE WHEN PREVIOUS DATA WAS ZERO ASH A,2 TRO A,2 IDPB A,DSKBP @@ -1893,11 +1893,11 @@ ENCZ2A: ROT A,-1 IDPB A,DSKBP JRST ENC3 -ENCH: LSH B,36.-28. - SKIPA C,[14.] -ENCW: MOVEI C,18. - LSHC A,2 - PUSHJ P,ENCD +ENCH: LSH B,36.-28. ;MOVE 28-BIT DATA TO THE LEFT + SKIPA C,[14.] ;C IS NUMBER OF BITS +ENCW: MOVEI C,18. ;B IS DATA + LSHC A,2 ;MOVE IN TWO BITS FROM B + PUSHJ P,ENCD ;ENCODE THOSE SOJG C,.-2 POPJ P,