home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
GEMini Atari
/
GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso
/
zip
/
gnu
/
tests.lzh
/
TESTS
/
TBCOPY.C
< prev
next >
Wrap
C/C++ Source or Header
|
1993-07-29
|
3KB
|
132 lines
#include <stdio.h>
extern void bcopy(void *src, void *dst, unsigned long cnt);
#define LEN 40 /* keep this below 255 */
void
shake (unsigned char *arry)
{
int i;
/* copy down - even aligned */
bcopy (&arry[2], &arry[0], LEN - 2);
printf("down - even-even\n");
for (i = 0; i < 16; i++)
printf("%3d ", arry[i]);
printf("\n");
/* copy up - even aligned */
printf("up - even-even\n");
bcopy (&arry[0], &arry[4], LEN - 4);
for (i = 0; i < 16; i++)
printf("%3d ", arry[i]);
printf("\n");
/* copy down - odd-even aligned */
printf("down - even-odd\n");
bcopy (&arry[8], &arry[1], LEN - 8);
for (i = 0; i < 16; i++)
printf("%3d ", arry[i]);
printf("\n");
/* copy up - odd-even aligned */
printf("up - even-odd\n");
bcopy (&arry[0], &arry[1], LEN - 1);
for (i = 0; i < 16; i++)
printf("%3d ", arry[i]);
printf("\n");
/* copy down - odd-odd aligned */
printf("down - odd-odd\n");
bcopy (&arry[7], &arry[1], LEN - 7);
for (i = 0; i < 16; i++)
printf("%3d ", arry[i]);
printf("\n");
/* copy up - odd-odd aligned */
printf("up - odd-odd\n");
bcopy (&arry[1], &arry[3], LEN - 3);
for (i = 0; i < 16; i++)
printf("%3d ", arry[i]);
printf("\n");
}
int
main(int argc, char **argv)
{
unsigned char bigo[0x20000];
unsigned char ahull[LEN + 4], *arry;
unsigned char bhull[LEN + 4], *brry;
long i;
int k;
for (i = 0; i < 0x20000; i++) {
bigo[i] = i & 0xff;
}
/* shift bigo four positions up leaving the last */
bcopy(&bigo[0], &bigo[4], (0x20000 - 5));
for (i = 4 + 254 ; i < 0x20000 - 5; i += 0x100) {
if (bigo[i] != 254 || bigo[i + 1] != 255) {
fprintf(stderr, "discrepancy on position %ld - got %u %u\n",
i, bigo[i], bigo[i + 1]);
}
}
printf("the last one is %u\n", bigo[0x20000 - 1]);
ahull[0] = ahull[1] = ahull[LEN + 2] = ahull[LEN + 3] = 0xff;
bhull[0] = bhull[1] = bhull[LEN + 2] = bhull[LEN + 3] = 0xff;
arry = &ahull[2];
brry = &bhull[2];
for (i = 0; i < LEN; i++) {
arry[i] = i & 0xff;
}
/* test copying between disjoint regions */
bcopy(&arry[0], &brry[0], LEN);
for (i = 0; i < 16; i++)
printf("%3d ", brry[i]);
printf("\n");
bcopy(&arry[1], &brry[1], LEN - 1);
for (i = 0; i < 16; i++)
printf("%3d ", brry[i]);
printf("\n");
bcopy(&arry[2], &brry[2], LEN - 2);
for (i = 0; i < 16; i++)
printf("%3d ", brry[i]);
printf("\n");
bcopy(&arry[3], &brry[3], LEN - 3);
for (i = 0; i < 16; i++)
printf("%3d ", brry[i]);
printf("\n");
for (k = 4; k < LEN; k++)
bcopy(&arry[k], &brry[k], LEN - k);
for (i = LEN-16 ; i < LEN; i++)
printf("%3d ", brry[i]);
printf("\n");
for (i = 0; i < 16; i++)
printf("%3d ", brry[i]);
printf("\n");
printf("*** %3d %3d %3d %3d ***\n",
ahull[0], ahull[1], ahull[LEN + 2], ahull[LEN + 3]);
/* and now with an overlap */
shake(&arry[0]);
printf("*** %3d %3d %3d %3d ***\n",
ahull[0], ahull[1], ahull[LEN + 2], ahull[LEN + 3]);
return 0;
}