Welcome, Guest. Please login or register.

Author Topic: Move16 to chipmem ...  (Read 3381 times)

Description:

0 Members and 1 Guest are viewing this topic.

Offline Piru

  • \' union select name,pwd--
  • Hero Member
  • *****
  • Join Date: Aug 2002
  • Posts: 6946
    • Show all replies
    • http://www.iki.fi/sintonen/
Re: Move16 to chipmem ...
« on: March 19, 2004, 10:35:18 PM »
The code misbehaves when called with count of 0. Here is a proper version:
Code: [Select]

void copy(int *to, int *from, int count)
{
  int n;

  if (!count)
    return;

  n = (count + 7) / 8;

  switch (count % 8)
  {
    case 0: do { *to++ = *from++;
    case 7: *to++ = *from++;
    case 6: *to++ = *from++;
    case 5: *to++ = *from++;
    case 4: *to++ = *from++;
    case 3: *to++ = *from++;
    case 2: *to++ = *from++;
    case 1: *to++ = *from++; } while (--n);
  }
}