📄 peripheral_test_memory.c
字号:
#include "peripheral_test.h"
#include "excalibur.h"
// Prototypes
int test(char *memLow, char *memHigh, int start);
// Meat
#define wrap 1025 // doesn't divide into power of 2, so address lines get flexed.
void DoMemoryTest(void)
{
char *memLow;
char *memHigh;
int start;
int result;
memLow = (char *)(sbrk(0) + 1000);
memHigh = ((char *)&start) - 1000;
printf("-----------------------------\n");
printf("Testing memory 0x%x - 0x%x\n",memLow,memHigh);
printf("-----------------------------\n");
for(start = 0; start < 256; start++)
{
if(rGetChar() == 27)
{
printf("Memory test aborted.\n");
return;
}
nr_pio_showhex(start);
printf("test %3d of 256... ",start);
result = test(memLow,memHigh,start);
printf("%s\n",result ? "passed" : "failed");
}
printf("Memory test done.\n");
}
int test(char *memLow, char *memHigh, int start)
{
int x;
char *memP;
// fill
x = start;
for(memP = memLow; memP < memHigh; memP++)
{
*memP = (char) x;
x ++;
if(x >= wrap)
x = 0;
}
// test
x = start;
for(memP = memLow; memP < memHigh; memP++)
{
if(*memP != (char) x)
return 0; // fail
x ++;
if(x >= wrap)
x = 0;
}
// pass
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -