home *** CD-ROM | disk | FTP | other *** search
/ Otherware / Otherware_1_SB_Development.iso / amiga / utility / misc / fasta.lha / a-maxii / FastAMax.c next >
Encoding:
C/C++ Source or Header  |  1992-09-28  |  3.0 KB  |  74 lines

  1. #include <stdio.h>
  2. #include <dos.h>
  3. #include <exec/types.h>
  4. #include <exec/memory.h>
  5.  
  6. main()
  7. {
  8.    int i,j,nb,nb1,nbr,dn,(*ROM_Load)(void *,int);
  9.    ULONG f,f1;
  10.    char *p,*rom,ml[10]={0x48,0xe7,0x7f,0xfe,0x78,0x04,0x20,0x6f,0x00,0x3c};
  11.    unsigned char rp[98] = {
  12.       0x48,0xe7,0x7f,0xfe,0x2c,0x78,0x00,0x04,0x70,0x00,0x43,0xfa,0x00,0x42,
  13.       0x4e,0xae,0xfd,0xd8,0xc1,0x8d,0x24,0x3c,0x00,0x00,0x03,0xed,0x43,0xfa,
  14.       0x00,0x3e,0xc3,0x89,0x4e,0xad,0xff,0xe2,0x2f,0x00,0xc3,0x40,0x24,0x2f,
  15.       0x00,0x40,0x26,0x3c,0x00,0x02,0x00,0x00,0x4e,0xad,0xff,0xd6,0x22,0x1f,
  16.       0x4e,0xad,0xff,0xdc,0xcb,0x49,0x4e,0xae,0xfe,0x62,0x20,0x3c,0x00,0x00,
  17.       0x00,0x00,0x4c,0xdf,0x7f,0xfe,0x4e,0x75,0x64,0x6f,0x73,0x2e,0x6c,0x69,
  18.       0x62,0x72,0x61,0x72,0x79,0x00,0x4d,0x61,0x63,0x52,0x4f,0x4d,0x73,0x00
  19.    };
  20.    
  21.    p = (char *)AllocMem(100000,MEMF_CLEAR);
  22.    if (p) {
  23.       rom = (char *)AllocMem(196608,MEMF_CLEAR);
  24.       if (rom) {
  25.          f = Open("A-Max Startup",MODE_OLDFILE);
  26.          if (f) {
  27.             nb = Read(f,p,100000);
  28.             if (nb!=-1) {
  29.                for (i=0; i<100000; i++) {
  30.                   if (*(p+i)==ml[0]) {
  31.                      for (j=1; j<10; j++) if (*(p+i+j)!=ml[j]) break;
  32.                      if (j==10) break;
  33.                   }
  34.                }
  35.                if (i!=100000) {
  36.                   ROM_Load = p+i;
  37.                   printf("Reading ROMs...");
  38.                   dn = (*ROM_Load)((void *)rom,0);
  39.                   printf("Done!\n");
  40.                   rp[68] = dn/16777216;
  41.                   rp[69] = (dn-(rp[68]*16777216))/65536;
  42.                   rp[70] = (dn%65536)/256;
  43.                   rp[71] = dn%256;
  44.                   for (j=0; j<98; j++) *(p+i+j) = rp[j];
  45.                   f1 = Open("A-Max Startup.patch",MODE_NEWFILE);
  46.                   if (f1) {
  47.                      nb1 = Write(f1,p,nb);
  48.                      if (nb1!=nb) printf("FastAMax error: couldn't write output file for patched A-Max\n");
  49.                      Close(f1);
  50.                   }
  51.                   else printf("FastAMax error: couldn't open output file for patched A-Max\n");
  52.                   if (rp[69]==0x69) nbr = 65536; else nbr = 131072;
  53.                   f1 = Open("MacROMs",MODE_NEWFILE);
  54.                   if (f1) {
  55.                      nb1 = Write(f1,rom,nbr);
  56.                      if (nb1!=nbr) printf("FastAMax error: couldn't write output file for Macintosh ROMs\n");
  57.                      Close(f1);
  58.                   }
  59.                   else printf("FastAMax error: couldn't open output file for Macintosh ROMs\n");
  60.                }
  61.                else printf("FastAMax error: couldn't identify A-Max program file\n");
  62.             }
  63.             else printf("FastAMax error: couldn't read A-Max program file\n");
  64.             Close(f);
  65.          }
  66.          else printf("FastAMax error: couldn't open A-Max program file\n");
  67.          FreeMem((APTR *)rom,196608);
  68.       }
  69.       else printf("FastAMax error: couldn't allocate memory for ROM image\n");
  70.       FreeMem((APTR *)p,100000);
  71.    }
  72.    else printf("FastAMax error: couldn't allocate memory for A-Max program\n");
  73. }
  74.