Subversion Repositories pentevo

Rev

Rev 638 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed | ?url?

  1.  
  2. ;LAST UPDATE: 27.02.2014 savelij
  3.  
  4. CRC16_INIT      LD BC,0X1021
  5.                 LD DE,CRC16_TABLE
  6.                 PUSH IX
  7.                 LD IXL,E
  8.                 INC D
  9.                 INC D
  10.                 LD IXH,D
  11.                 LD E,C
  12.                 LD D,B
  13.                 LD C,0
  14. CRC_I0          LD L,0
  15.                 LD H,C
  16.                 DEC H
  17.                 LD B,8
  18. CRC_I1          ADD HL,HL
  19.                 JR NC,CRC_I2
  20.                 LD A,L
  21.                 XOR E
  22.                 LD L,A
  23.                 LD A,H
  24.                 XOR D
  25.                 LD H,A
  26. CRC_I2          DJNZ CRC_I1
  27.                 DEC IX
  28.                 LD (IX),H
  29.                 DEC IXH
  30.                 LD (IX),L
  31.                 INC IXH
  32.                 DEC C
  33.                 JR NZ,CRC_I0
  34.                 POP IX
  35.                 RET
  36.  
  37. ;BC=ДЛИНА, DE=АДРЕС, HL=СТАРТ WORD
  38. CRC16           EXX
  39.                 LD D,HIGH (CRC16_TABLE)
  40.                 EXX
  41. CRC161          LD A,(DE)
  42.                 INC DE
  43.                 XOR H
  44.                 EXX
  45.                 LD E,A
  46.                 LD A,(DE)
  47.                 INC D
  48.                 EXX
  49.                 XOR L
  50.                 LD H,A
  51.                 EXX
  52.                 LD A,(DE)
  53.                 DEC D
  54.                 EXX
  55.                 LD L,A
  56.                 DEC BC
  57.                 LD A,B
  58.                 OR C
  59.                 JP NZ,CRC161
  60.                 RET
  61.  
  62. ;BC=ДЛИНА, IX=АДРЕС, HLDE=СТАРТ DWORD
  63. CRC32           PUSH BC
  64.                 EXX
  65.                 POP BC          ;ДЛИНА
  66.                 EXX
  67.                 LD B,H
  68.                 LD C,L          ;BCDE=СТАРТ DWORD
  69. CRC321          LD A,(IX+0)
  70.                 INC IX
  71.                 XOR E
  72.                 LD L,A
  73.                 LD H,HIGH (CRC32_TABLE)
  74.                 LD A,(HL)
  75.                 INC H
  76.                 XOR D
  77.                 LD E,A
  78.                 LD A,(HL)
  79.                 INC H
  80.                 XOR C
  81.                 LD D,A
  82.                 LD A,(HL)
  83.                 INC H
  84.                 XOR B
  85.                 LD C,A
  86.                 XOR A
  87.                 XOR (HL)
  88.                 LD B,A
  89.                 EXX
  90.                 DEC BC
  91.                 LD A,B
  92.                 OR C
  93.                 EXX
  94.                 JP NZ,CRC321
  95.                 LD A,B
  96.                 CPL
  97.                 LD H,A
  98.                 LD A,C
  99.                 CPL
  100.                 LD L,A
  101.                 LD A,D
  102.                 CPL
  103.                 LD D,A
  104.                 LD A,E
  105.                 CPL
  106.                 LD E,A
  107.                 RET
  108.  
  109. CRC32_INIT      LD L,0
  110. CRC32T3         LD E,L
  111.                 LD B,0
  112.                 LD D,B
  113.                 LD C,B
  114.                 LD H,8
  115. CRC32T1         BIT 0,E
  116.                 JP Z,CRC32T2
  117.                 SRL B
  118.                 RR C
  119.                 RR D
  120.                 RR E
  121.                 LD A,B
  122.                 XOR 0XED
  123.                 LD B,A
  124.                 LD A,C
  125.                 XOR 0XB8
  126.                 LD C,A
  127.                 LD A,D
  128.                 XOR 0X83
  129.                 LD D,A
  130.                 LD A,E
  131.                 XOR 0X20
  132.                 LD E,A
  133.                 JP CRC32T4
  134.  
  135. CRC32T2         SRL B
  136.                 RR C
  137.                 RR D
  138.                 RR E
  139. CRC32T4         DEC H
  140.                 JP NZ,CRC32T1   ;ЦИКЛ НА 8
  141.                 LD H,HIGH (CRC32_TABLE)
  142.                 LD (HL),E
  143.                 INC H
  144.                 LD (HL),D
  145.                 INC H
  146.                 LD (HL),C
  147.                 INC H
  148.                 LD (HL),B
  149.                 DEC H
  150.                 DEC H
  151.                 DEC H
  152.                 INC L
  153.                 JP NZ,CRC32T3   ;ЦИКЛ НА 256
  154.                 RET
  155.