⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mem_test.c

📁 此為philip 1362 USB DOS下的驅動程式包, 已經共測試並內含有說明文件
💻 C
字号:
#include <graphics.h>
#include <conio.h>
#include "isp1362.h"
#include "cheeyu.h"
#include <stdlib.h>

unsigned int m_atl_size;
unsigned int m_ptl_size;
unsigned int m_int_size;

unsigned int ptl0_color=LIGHTGREEN;
unsigned int ptl1_color=YELLOW;
unsigned int atl_color =LIGHTBLUE;
unsigned int int_color =LIGHTMAGENTA;
unsigned int not_used_color =WHITE;

unsigned int ptl0_begin;
unsigned int ptl1_begin;
unsigned int int_begin;
unsigned int atl_begin;
unsigned int not_used_begin;

void mem_init_mem(void)
{
 m_atl_size=r16(HcATLLen);
 m_ptl_size=r16(HcPTLLen);
 m_int_size=r16(HcINTLen);

 ptl0_begin=0;
 ptl1_begin=m_ptl_size/2;
 int_begin=ptl1_begin+m_ptl_size/2;
 atl_begin=int_begin+m_int_size/2;
 not_used_begin=atl_begin+m_atl_size/2;
}

unsigned int get_border(int px, int py)
{
 unsigned int loc;
 unsigned int bc;


 if(px==-1) {return(WHITE);}

 loc=(py*64)+px+1;
 if(loc>ptl0_begin)      {bc=ptl0_color;}
 if(loc>ptl1_begin)      {bc=ptl1_color;}
 if(loc>int_begin)       {bc=int_color;}
 if(loc>atl_begin)       {bc=atl_color;}
 if(loc>not_used_begin)  {bc=not_used_color;}

 return(bc);
}

void big_map(int posx,int posy,int pcolor)
{
 int factorx=9;
 int factory=9;
 int initx=10,inity=20;
 int nx,ny;
 int cx,cy;
 int dcolor;

 pcolor=pcolor&0x00FF;

 nx=factorx*posx;
 ny=factory*posy;

 cy=0;
 do
  {
   cx=0;
   do
	{
	 if(cx==0 || cx==(factorx-1) )      {dcolor=get_border(posx,posy);}
	 else if(cy==0 || cy==(factory-1) ) {dcolor=get_border(posx,posy);}
	 else {dcolor=pcolor;}
	 putpixel(initx+nx+cx,inity+ny+cy,dcolor);
	 cx++;
	}
   while(cx<factorx);
   cy++;
  }
 while(cy<factory);
}

void mem_map(void)
{
 unsigned int word_cnt;
 unsigned int test_word,test_size;
 int posy=0;
 char mbuf[60];
 unsigned int buf_image[4096];
 unsigned int cnt;

 cnt=0;
 do
  {
   buf_image[cnt]=cnt;
   cnt++;
  }
 while(cnt<2048);

 direct_read(buf_image);

 cleardevice();

 sprintf(mbuf,"Memory Map of ISP1362");
 outtextxy(10,10,mbuf);

 word_cnt=0;
 do
  {
   test_word=buf_image[word_cnt];
   big_map(word_cnt%64,posy,test_word);
   word_cnt++;
   if(word_cnt%64==0) {if(posy%8==0){big_map(-1,posy,WHITE);} posy++;}
  }
  while(word_cnt<(2048));

 setcolor(ptl0_color);
 sprintf(mbuf,"PTL 0");
 outtextxy( 10,330,mbuf);

 setcolor(ptl1_color);
 sprintf(mbuf,"PTL 1");
 outtextxy(110,330,mbuf);

 setcolor(int_color);
 sprintf(mbuf,"INT ");
 outtextxy(210,330,mbuf);

 setcolor(atl_color);
 sprintf(mbuf,"ATL ");
 outtextxy(310,330,mbuf);

 setcolor(not_used_color);
 sprintf(mbuf,"Not Used");
 outtextxy(410,330,mbuf);

 setcolor(YELLOW);
}

void r_test(void)
{
 unsigned long cnt,error=0;
 unsigned int test_size=2048;
 unsigned int rdata[2048];
 unsigned int verify[2048];
 unsigned int *r_ptr;
 unsigned int *v_ptr;

 r_ptr=rdata;
 v_ptr=verify;

 cnt=0;
 do
  {
   rdata[cnt]=random(0xFFFF);
   cnt++;
  }
 while(cnt<test_size);

 r_ptr=rdata;
 direct_write(r_ptr);

 v_ptr=verify;
 direct_read(v_ptr);

 cnt=0;
 do
  {
   if(rdata[cnt]!=verify[cnt])
   {
	error++;
   }
   else{}

   cnt++;
  }
 while(cnt<2048);

 setbkcolor(BLUE);
 e_box(320,240,200,100);
 gotoxy(31,15);
 printf("4Kbytes Random Test");
 gotoxy(31,17);
 printf("Total error = %5ld",error);
 getch();

 mem_map();
}

void erase(void)
{
 erase_all();

 setbkcolor(BLUE);
 e_box(320,240,200,100);
 gotoxy(31,15);
 printf("8Kbytes Host Memory");
 gotoxy(31,17);
 printf("Resetted to '0'");
 getch();

 mem_map();
}

unsigned int torture(void)
{
 unsigned long cnt,error=0;
 unsigned int test_size=4096;
 unsigned int rdata[4096];
 unsigned int verify[4096];
 unsigned int *r_ptr;
 unsigned int *v_ptr;

 cnt=0;
 do
  {
   rdata[cnt]=random(0xFFFF);
   cnt++;
  }
 while(cnt<test_size);

 r_ptr=rdata;
 direct_write(r_ptr,ram_size/2);

 v_ptr=verify;
 direct_read(v_ptr,ram_size/2);

 cnt=0;
 do
  {
   if(rdata[cnt]!=verify[cnt])
   {
	error++;
   }
   else{}

   cnt++;
  }
 while(cnt<2048);

 return(error);
}

unsigned int torture_atl(void)
{
 unsigned long cnt,error=0;
 unsigned int test_size=4096;
 unsigned int rdata[4096];
 unsigned int verify[4096];
 unsigned int *r_ptr;
 unsigned int *v_ptr;

 cnt=0;
 do
  {
   rdata[cnt]=random(0xFFFF);
   cnt++;
  }
 while(cnt<test_size);

 r_ptr=rdata;
 write_atl(r_ptr,ram_size/2);

 v_ptr=verify;
 read_atl(v_ptr,ram_size/2);

 cnt=0;
 do
  {
   if(rdata[cnt]!=verify[cnt])
   {
	error++;
   }
   else{}

   cnt++;
  }
 while(cnt<2048);

 return(error);
}



void torture_test(void)
{
 unsigned long int tcnt=1;
 unsigned long int t_error=0;
 unsigned int t_reply=0;
 unsigned int user_in;

 setbkcolor(BLUE);
 e_box(335,260,340,240);

 do
 {
  gotoxy(27,12);
  printf("PIO Memory Wr/Rd ");

  gotoxy(27,16);
  printf("Torture Test %8ld",tcnt);
  gotoxy(27,15);
  printf("%4d bytes Host Memory",ram_size);
  gotoxy(27,17);
  printf("Total Transfer : %7f MBytes",(float)(tcnt*(ram_size>>10))/1000);

  t_reply=torture_atl();
  if(t_reply!=0) {t_error++;}

  gotoxy(27,18);
  printf("Total Error = %8ld",t_error);

  gotoxy(27,21);
  printf("Press '1' to Stop");
  tcnt++;

  user_in=read_key(0);
 }
 while((tcnt<5000000)&(user_in!='1'));

}

void zoom(void)
{
 unsigned int user_in;
 unsigned int mouse_data[3];
 unsigned int cell_x,cell_y;
 unsigned int posx,posy;
 unsigned int sram[4096];
 unsigned int linear_loc;

 clrscr();
 cleardevice();

 direct_read(sram);

 mem_map();
 cursor_on();

 do
  {
   get_sysmouse(mouse_data);
   posx=mouse_data[1];
   posy=mouse_data[2];

   cell_x=(posx-10)/9;
   cell_y=(posy-20)/9;
   linear_loc=(cell_y*64)+cell_x;

   if((linear_loc<2041)&&(cell_x<64))
   {
	gotoxy(1,23);
	printf("Word Addr(HEX) %4X %4X",linear_loc,linear_loc+1);
	printf(" %4X %4X",linear_loc+2,linear_loc+3);
	printf(" %4X %4X",linear_loc+4,linear_loc+5);
	printf(" %4X %4X",linear_loc+6,linear_loc+7);
	printf(" %4X %4X",linear_loc+8,linear_loc+9);
	printf(" %4X %4X",linear_loc+10,linear_loc+11);

	gotoxy(1,24);
	printf("Word Addr(DEC) %4d %4d",linear_loc,linear_loc+1);
	printf(" %4d %4d",linear_loc+2,linear_loc+3);
	printf(" %4d %4d",linear_loc+4,linear_loc+5);
	printf(" %4d %4d",linear_loc+6,linear_loc+7);
	printf(" %4d %4d",linear_loc+8,linear_loc+9);
	printf(" %4d %4d",linear_loc+10,linear_loc+11);

	gotoxy(1,25);
	printf("Memory Content %4X %4X",sram[linear_loc],sram[linear_loc+1]);
	printf(" %4X %4X",sram[linear_loc+2],sram[linear_loc+3]);
	printf(" %4X %4X",sram[linear_loc+4],sram[linear_loc+5]);
	printf(" %4X %4X",sram[linear_loc+6],sram[linear_loc+7]);
	printf(" %4X %4X",sram[linear_loc+8],sram[linear_loc+9]);
	printf(" %4X %4X",sram[linear_loc+10],sram[linear_loc+11]);

	outtextxy(20,450,"Press 1 to exit memory ZOOM");
   }
   user_in=read_key(0);
  }
 while(user_in!='1');

 clrscr();
 cleardevice();

 mem_map();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -