home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
World of A1200
/
World_Of_A1200.iso
/
programs
/
system
/
grabkick
/
grabkick.c
< prev
next >
Wrap
C/C++ Source or Header
|
1995-02-27
|
2KB
|
78 lines
/* GRABKICK Copy Kickstart ROM into a file ***RGR***
MANX Aztec C 5.2: cc GrabKick; ln GrabKick -lm -lc 23-dec-92
Author: Ralf Gruner, An der Sense 5a, D-02779 Großschönau, Germany.
*/
#include <stdio.h>
#include <libraries/dos.h>
main(int argc, char *argv[])
{
void grab(char *kickfile);
char *msg="\n GrabKick Version 1.1 - 1992 by Ralf Gruner, Großschönau, Germany.\n";
if(argc == 0)
{
/* Start from WorkBench */
printf(msg);
grab("Kickfile");
Delay(500L);
}
if((argc != 2)&&(argc != 1)||(*argv[1]=='?'))
{
printf("\n Copy Kickstart ROM to file.");
printf(msg);
printf(" Usage: GrabKick [<destination file name>]\n\n");
}
else
if(argc == 2)
{
grab(argv[1]);
}
else
grab("Kickfile");
}
void grab(char *kickfile)
{
FILE *ausgabe, *fopen();
long anzahl = 0;
unsigned short *version;
char c, *romptr, *romstart, *romend=(char *)0x00ffffff;
if(!(ausgabe = fopen(kickfile, "w")))
{
printf("cannot open: %s\n",kickfile);
return;
}
romstart= (char *) (romend- *(unsigned long *)(romend - 0x13) +1);
printf("\nROMstart: %lX\n",romstart);
printf("ROMend : %lX\n",romend);
version=(unsigned short*)(romstart+12);
printf("Copying Kickstart version %u.%u to file %s\n",*version,*(version+1),kickfile);
for(romptr= romstart; romptr< (char *)(romend +1); ++romptr)
{
c=*romptr;
if(fputc( c, ausgabe)==EOF)
{
printf("\nError while writing.");
fclose(ausgabe);
if(remove(kickfile)==0)
printf(" File %s removed.",kickfile);
printf("\n\n");
anzahl=-1;
break;
}
anzahl++;
}
if(anzahl>=0L)
{
fclose(ausgabe);
printf("%ld bytes (%ld KB).\n\n", anzahl,anzahl/1024);
}
}