home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / cpm / 22rsx / rxmd.ark.2 / RXMD17.MAC < prev    next >
Text File  |  1985-12-07  |  1KB  |  67 lines

  1. ;
  2. ; ============================================
  3. ;
  4. ;        CRC SUBROUTINES
  5. ;
  6. ; ============================================
  7. ;
  8. ;
  9. crcchk:    push    h;        Check 'CRC' bytes of received block
  10.     lhld    crcval
  11.     mov    a,h
  12.     ora    l
  13.     pop    h
  14.     rz;            z flag set if ok
  15.     mvi    a,0ffh;        Else nz flag to show an error
  16.     ret
  17. ;
  18. ; Return CRC value to be transmitted. d byte will be sent first
  19. ; d,e
  20. fincrc:    push    h;        note that "crcup" does not require
  21.     lhld    crcval;        insertion of 2 final zeroes to arrive
  22.     mov    d,l;        at the final answer.
  23.     mov    e,h;        FLIP bytes, like original routines
  24.     pop    h
  25.     ret
  26. ;
  27. ; update stored crcval with (a). Preserve regs.
  28. updcrc:    push    psw
  29.     push    h
  30.     lhld    crcval
  31. ;    "    "
  32. ; Update the CRC value in (hl) with (a)
  33. ; Polynomial is x^16 + x^12 + x^5 + 1
  34. ; Approx. 90 uS at 2 Mhz. clock
  35. ; a,f,h,l
  36.     push    d
  37.     xra    l
  38.     mov    d,a
  39.     rrc
  40.     rrc
  41.     rrc
  42.     rrc
  43.     ani    0fh
  44.     xra    d
  45.     mov    e,a
  46.     rrc
  47.     rrc
  48.     rrc
  49.     mov    d,a
  50.     ani    01fh
  51.     xra    h
  52.     mov    l,a
  53.     mov    a,d
  54.     ani    0e0h
  55.     xra    e
  56.     mov    h,a
  57.     mov    a,d
  58.     rrc
  59.     ani    0f0h
  60.     xra    l
  61.     mov    l,a
  62.     pop    d
  63.     shld    crcval
  64.     pop    h
  65.     pop    psw
  66.     ret
  67. >Ü