home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / enterprs / c128 / util / sfxsrc.arc / CRC.A < prev    next >
Encoding:
Text File  |  1990-02-12  |  2.4 KB  |  102 lines

  1. ; lhcrc.a
  2. ;───────────────────────────────────────────────────────────────
  3. ; CRC routines for LHARC - same as those used by ARC and  PKARC
  4. ;───────────────────────────────────────────────────────────────
  5.  
  6.             INSTXT "sfx.i"
  7.  
  8.             PUBLIC NewCRC           ; CRC value. 2 bytes
  9.             PUBLIC AdjCRC           ; Accumulate .a into .NewCRC
  10.             PUBLIC GenCRC           ; Initialize. Generate the CRC table
  11.             PUBLIC InitCRC          ; Initialize. Clear .NewCRC
  12.  
  13.             BSS NewCRC,2
  14.  
  15. ;──────────────────────────
  16. ; Clear new calculated CRC
  17. ;──────────────────────────
  18.  
  19. InitCRC     lda #0
  20.             sta NewCRC
  21.             sta NewCRC+1
  22.             rts
  23.  
  24. ;───────────────────────────────────────
  25. ; Adjust CRC. Call with character in .a
  26. ;───────────────────────────────────────
  27.  
  28.             BSS y_save,1
  29.  
  30. AdjCRC      pha
  31.             sty y_save
  32.             eor NewCRC
  33.             tay
  34.             lda crclo,y
  35.             eor NewCRC+1
  36.             sta NewCRC
  37.             lda crchi,y
  38.             sta NewCRC+1
  39.             pla
  40.             ldy y_save
  41.             rts
  42.  
  43. ;──────────────────────────────────────────────────────────────
  44. ; Code to generate the CRC table - Borrowed from LHARC sources
  45. ;──────────────────────────────────────────────────────────────
  46. ; mkcrc     mov  BX,offset crctab
  47. ;           xor  DX,DX
  48. ; mkc0      mov  AX,DX
  49. ;           mov  CX,8
  50. ; mkc2      shr  AX,1
  51. ;           jnc  mkc4
  52. ;           xor  AX,0a001h
  53. ; mkc4      loop mkc2
  54. ; mkc3      mov  [BX],AX
  55. ;           inc  BX
  56. ;           inc  BX
  57. ;           inc  DL
  58. ;           jnz  mkc0
  59. ; mkc1      ret
  60.  
  61. LO          = T0
  62. HI          = T1
  63. AX          = T2
  64. AL          = AX
  65. AH          = AX+1
  66.  
  67.             BSS crclo,256
  68.             BSS crchi,256
  69.  
  70. GenCRC      lda #<crclo
  71.             sta LO
  72.             sta HI
  73.             lda #>crclo
  74.             sta LO+1
  75.             sta HI+1
  76.             inc HI+1
  77.             ldy #0
  78. Gen0        sty AL
  79.             lda #0
  80.             sta AH
  81.             ldx #8
  82. Gen2        lsr AH
  83.             ror AL
  84.             bcc Gen4
  85.             lda AL
  86.             eor #$01
  87.             sta AL
  88.             lda AH
  89.             eor #$a0
  90.             sta AH
  91. Gen4        dex
  92.             bne Gen2
  93.             lda AL
  94.             sta (LO),y
  95.             lda AH
  96.             sta (HI),y
  97.             iny
  98.             bne Gen0
  99.             rts
  100.  
  101.             END
  102.