home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / dsp / dspgroup / bell212.arc / DSCR1.ASM < prev    next >
Encoding:
Assembly Source File  |  1986-07-25  |  6.2 KB  |  140 lines

  1.        TITL  ' TMS7041 SCRAMBLER AND DESCRAMBLER CODE '
  2.        IDT  'SCRAM'
  3.        OPTION XREF,TUNLST
  4. ************************************************************
  5. **  This code include the dibit scrambler and descrambler **
  6. **  code for the modem                                    **
  7. **                                                        **
  8. **  Written by Peter Ehlig                                **
  9. **                                                        **
  10. **  Revision  1.0   11/12/85  PETER EHLIG                 **
  11. **  Revision  1.1    1/29/86  PETER EHLIG                 **
  12. **  Revision  1.1    5/20/86  PETER EHLIG                 **
  13. **                                                        **
  14. **  COPYRIGHT TEXAS INSTRUMENTS  07/25/86                 **
  15. **                                                        **
  16. ************************************************************
  17. *
  18. *    DEFINITIONS AND REFERENCES
  19.        DEF  SCRAM,DSCRAM
  20.        REF  PRINT,RUNHSA
  21.        PAGE
  22.        COPY DTE2.EQU
  23. *******----------------------------------------*******
  24. *****       Receiver descrambler                 *****
  25. *****     X(N) = Y(N-17) XOR Y(N-14) XOR Y(N)    *****
  26. *******----------------------------------------*******
  27. DSCRAM EQU    $
  28. *
  29.        MOV   XDIBIT,B       ; SAVE SCRAMBLED DIBIT
  30.        CLR   YN14        ; CLEAR THE Y(N-14) REFERENCE
  31.        CLR   YN17        ; CLEAR THE Y(N-17) REFERENCE
  32.        MOV   D1718,A       ; GET THE DESCRAMBLER HISTORY
  33.        RL    A           ; SHIFT OUT Y(N-18)
  34.        RLC   A           ; GET HISTORY Y(N-17)
  35.        RLC   YN17        ; AND PUT INTO REFERENCE
  36.        RLC   A           ; SHIFT OFF TWO MORE BITS
  37.        RLC   YN17        ; SAVE Y(N-16) REFERENCE
  38.        RLC   A           ; TO GET TO THE Y(N-14)
  39.        RLC   A           ; AND GET HISTORY
  40.        RLC   YN14        ; AND PUT INTO REFERENCE
  41.        RLC   A           ; GET HISTORY Y(N-13)
  42.        RLC   YN14        ; AND PUT INTO REFERENCE
  43.        XOR   YN14,XDIBIT  ; XDIBIT=X(N) XOR Y(N-14)
  44.        XOR   YN17,XDIBIT ;XDIBIT=X(N)XORY(N-14)XORY(N-17)
  45.        CLRC              ; CLEAR OUT THE CARRY BIT
  46.        RRC   XDIBIT      ; REVERSE THE DIBITS FOR
  47.        JNC   OVRSW1      ; ALLIGNMENT WITH SCRAMBLER
  48.        OR    %2,XDIBIT   ; IF CARRY THEN BIT HIGH
  49. OVRSW1 EQU   $
  50. *
  51.        RLC   D1TO8       ; SHIFT UP THE LSB HISTORY BITS
  52.        RLC   D9TO16      ; AND CARRY TO CSB HISTORY BITS
  53.        RLC   D1718       ; AND CARRY TO MSB HISTORY BITS
  54.        CLRC              ; CLEAR THE CARRY BIT
  55.        RLC   D1TO8       ; SHIFT UP THE LSB HISTORY BITS
  56.        RLC   D9TO16      ; AND CARRY TO CSB HISTORY BITS
  57.        RLC   D1718       ; AND CARRY TO MSB HISTORY BITS
  58.        RRC   B           ; GET DIBIT0 AND
  59.        RRC   D1TO8       ; AND SHIFT IT INTO R13
  60.        RRC   B           ; GET DIBIT0 AND
  61.        RRC   D1TO8       ; AND SHIFT IT INTO R13
  62. * If 8+2 (old+current) marks are received,set carrier detect
  63. *
  64.        BTJO  %BIT0,SWSTAT,CDSET  ; Check if CD  set
  65.        CMP   %3,XDIBIT   ; Is XDIBIT= '11'
  66.        JNZ   NOT11       ; If not reset counter
  67.        INC   SCROUT      ; Else, increment count of '11's
  68.        BTJO  %BIT5,SCROUT,SETCD ; Set CD If count = limit
  69.        OR    %3,XDIBIT   ; Force DATA to '11'
  70.        BR    @CDSET      ;
  71. NOT11  CLR   SCROUT      ; Reset counter
  72.        OR    %3,XDIBIT   ; FORCE OUTPUT TO '11'
  73.        BR    @CDSET      ; RETURN
  74. *
  75. ****  When first detecting carrier will miss two 320 cycle
  76. *
  77. SETCD  OR   %BIT0,SWSTAT ; Else set CD
  78.        MOV  %>00,SCROUT  ; Reset SCROUT for next time
  79.        BTJO %BIT2,SWSTAT,IB212C ;If ORG, skip CMND to 320
  80.        MOVP  %>3F,DDDR          ; Setup DPORT for output
  81.        MOVP  %>00,DPORT         ; Reset 212 ANS mode modem
  82.        ANDP  %NOT6,BPORT       ; Latch data into xmt.buffer
  83.        ORP   %BIT6,BPORT       ; and reset RACK
  84.        MOVP  %>00,DDDR         ; TURN DPORT IN
  85. IB212B BTJOP %BIT6,DPORT,IB212B ; CHECK 320 RESPONSE AND
  86.        MOVP  %>3F,DDDR          ; Setup DPORT for output
  87.        MOVP  %>30,DPORT         ; Issue CMND to run modem
  88.        ANDP  %NOT6,BPORT       ; Latch data into xmt.buffer
  89.        ORP   %BIT6,BPORT       ; and reset RACK
  90.        MOVP  %>00,DDDR         ; TURN DPORT IN
  91. IB212C BTJOP %BIT6,DPORT,IB212C ; Wait FOR 320 read new CMND
  92.        MOVD  %RUNHSA,MSGL       ; Acknowledge hookup
  93.        CALL  @PRINT             ; by message to DTE
  94. *
  95. CDSET  RETS
  96. *
  97.        PAGE
  98. *******----------------------------------------*******
  99. *****       Transmitter Scrambler                *****
  100. *****     Y(N) = Y(N-17) XOR Y(N-14) XOR X(N)    *****
  101. *******----------------------------------------*******
  102. SCRAM  EQU   $
  103.        CLRC              ; CLEAR OUT THE CARRY BIT
  104.        RRC   XDIBIT      ; REVERSE THE DIBITS FOR
  105.        JNC   OVRSW2      ; ALLIGNMENT WITH SCRAMBLER
  106.        OR    %2,XDIBIT   ; IF CARRY THEN BIT HIGH
  107. OVRSW2 EQU   $
  108.        CLR   YN14        ; CLEAR THE Y(N-14) REFERENCE
  109.        CLR   YN17        ; CLEAR THE Y(N-17) REFERENCE
  110.        MOV   S1718,A       ; GET THE SCRAMBLER HISTORY
  111.        RL    A           ; SHIFT OUT Y(N-18)
  112.        RLC   A           ; GET HISTORY Y(N-17)
  113.        RLC   YN17        ; AND PUT INTO REFERENCE
  114.        RLC   A           ; SHIFT OFF TWO MORE BITS
  115.        RLC   YN17        ; SAVE Y(N-16) REFERENCE
  116.        RLC   A           ; TO GET TO THE Y(N-14)
  117.        RLC   A           ; AND GET HISTORY
  118.        RLC   YN14        ; AND PUT INTO REFERENCE
  119.        RLC   A           ; GET HISTORY Y(N-13)
  120.        RLC   YN14        ; AND PUT INTO REFERENCE
  121.        XOR   YN14,XDIBIT  ; XDIBIT=X(N) XOR Y(N-14)
  122.        XOR   YN17,XDIBIT  ;XDIBIT=X(N)XORY(N-14)XORY(N-17)
  123. *
  124.        MOV   XDIBIT,B    ; HOLD SCRAMBLED DIBIT FOR HISTORY
  125.        RLC   S1TO8       ; SHIFT UP THE LSB HISTORY BITS
  126.        RLC   S9TO16      ; AND CARRY TO CSB HISTORY BITS
  127.        RLC   S1718       ; AND CARRY TO MSB HISTORY BITS
  128.        CLRC              ; CLEAR CARRY BIT
  129.        RLC   S1TO8       ; SHIFT UP THE LSB HISTORY BITS
  130.        RLC   S9TO16      ; AND CARRY TO CSB HISTORY BITS
  131.        RLC   S1718       ; AND CARRY TO MSB HISTORY BITS
  132.        RRC   B           ; GET DIBIT0 AND
  133.        RRC   S1TO8       ; AND SHIFT IT INTO R20
  134.        RRC   B           ; GET DIBIT0 AND
  135.        RRC   S1TO8       ; AND SHIFT IT INTO R20
  136. *
  137.        RETS
  138. *
  139.        END
  140.