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

📄 lpcdos.c

📁 Xbox主机破解,烧录晶片专用的程式,可烧录256KB的49lf020晶片,使用LPC port
💻 C
字号:
#define DOS
#define Inportb	inportb
#define Outportb	outportb
#include "lpc.c"

void Puts(char *Str)
{ puts(Str);
 }

void SetProgress(int steps)
{ if (!steps)
  { printf("\n");
    return;
   }
  for(steps+=10;steps;steps--)
    printf("\xb0");
  printf("\rProgress: ");
 }

void StepProgress(void)
{ if (kbhit() && (getch()==27))
  { AbortLPC=1;
    printf("\nOperation Aborted\n");
   }
  else
    printf("\xba");
 }

void Debug(void)
{ char Buffer[255];
  Ubyte flag, flag2, i, j, k, R2;

  flag=1;


  if (Rev2_Detect())
  { printf("Good news - software can read/write LAD[3:0] on this PC.\n");
    R2=1;
   }
  else
  {
    R2=0;
   }

  SetDriver(Rev2_Detect());

  while(flag)
  {

    printf("(T=Test,Q=Quit) Diag Command > ");
    gets(Buffer);
    switch (toupper(Buffer[0]))
    { case 'T':
	printf("1. Disconnect LPC Flash\n");
	printf("2. Connect 3 LED,each with a 470 ohms resistor between Lclk,Lframe,Lrst to gnd\n");
	printf("3. Short LAD[3:0] signals one at a time to ground\n");
	printf("4. Press ESC key to quit test when done\n\n");
	printf("                 L   L   L\n");
	printf("                 c   f   r\n");
	printf("                 l   r   s\n");
	printf("                 k   m   t\n");
	printf("\n");

	i=0;
	j=0;
	flag2=1;

	Ldout(0x0f);

	do
	{ printf("\rLAD[3:0]=0x%02x ",Ldin());

	  if (!i)
	  { i=500;

	    Lpt_Data = (Lpt_Data & ~CTRLMASK) | (0x01 <<j);
	    Outportb(DATA,Lpt_Data);

	    for(k=0;k<3;k++)
	      printf((k==j)?"   *":"    ");

	    if (j==2)
	      j=0;
	    else
	      j++;

	   }
	  else
	    i--;

	  if (kbhit())
	    flag2=(getch()!=27);


	 } while (flag2);
	printf("\n\n");

	break;

      case 'Q':
	flag=0;
	break;
     }
   }
 }

void Diag(void)
{ char Buffer[255];
  Uword Addr, data;
  Ubyte flag;

  flag=1;

  while(flag)
  {
    printf("(D=Set Delay,R=Read I/O,W=Write I/O,C=Check Cable,Q=Quit) Diag Command > ");
    gets(Buffer);
    switch (toupper(Buffer[0]))
    { case 'R':
    	  printf("I/O address (hex) ? ");
	     gets(Buffer);
	     sscanf(Buffer,"%x",&Addr);
	     printf("I/O(%x) = %02x\n",Addr,(Uword)Inportb(Addr));
	     break;

      case 'W':
	     printf("I/O address (hex) ? ");
	     gets(Buffer);
	     sscanf(Buffer,"%x",&Addr);
	     printf("Before:I/O(%x) = %02x ",Addr,(Uword)Inportb(Addr));

	     printf(" Overwritten with (hex) ? ");
	     gets(Buffer);
	     sscanf(Buffer,"%x",&data);

	     Outportb(Addr,data);
	     printf("After: I/O(%x) = %02x \n",Addr,(Uword)Inportb(Addr));

        break;

      case 'D':
	     printf("Delay Constant ? (0=No delay) ");
	     gets(Buffer);
	     sscanf(Buffer,"%d",&LPC_Delay);
        printf("Delay constant set to %d\n",LPC_Delay);
        break;

      case 'C':
        Debug();
        break;

      case 'Q':
	     flag=0;
	     break;
     }
   }
 }

void main()
{ Ubyte flag;
  char Buffer[255];

  puts(VERSION);
  SetDriver(Rev2_Detect());
  InitFlash();
  flag=1;

  while(flag)
  {
    printf("(R=Read,W=Write,V=Verify,E=Erase,B=Blank Check,I=ID,D=Diag,Q=Quit) Command >");
    gets(Buffer);

    FlashReset();
    AbortLPC=0;

    switch (toupper(Buffer[0]))
    { case 'R':
	     printf("Output file name ? ");
        gets(Buffer);
        ReadChip(Buffer);
   	  break;

      case 'W':
	     printf("Input file name ? ");
	     gets(Buffer);
        WriteChip(Buffer,1);
	     break;

      case 'V':
	     printf("Input file name ? ");
	     gets(Buffer);
        VerifyChip(Buffer,1);
        break;

      case 'E':
   	  FlashErase();
	     printf("Erase done. ");

      case 'B':
	     printf("Performing Blank check.\n");
        BlankCheck();
	     break;

      case 'I':
	     ReadFlashID();
	     break;

      case 'D':
	     Diag();
	     break;

      case 'Q':
	     flag=0;
     }
   }
 }


⌨️ 快捷键说明

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