home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Club Amiga de Montreal - CAM
/
CAM_CD_1.iso
/
files
/
545b.lha
/
Convert_v1.1
/
Convert.c
< prev
next >
Wrap
C/C++ Source or Header
|
1991-09-06
|
3KB
|
134 lines
/*****************************************
***
*** FILE : Convert.c
*** ------------------------------------
*** DATE : 10.07.91
*** ------------------------------------
*** AUTHOR : Frank Enderle
*** ------------------------------------
*** VERSION: 1.1
***
*****************************************/
#include <exec/types.h>
#include <exec/memory.h>
#include <stdio.h>
#include <libraries/dosextens.h>
struct FileLock *MyLock;
struct FileInfoBlock *MyFIB;
struct FileHandle *MyHandle;
UBYTE *Buffer;
BYTE CSI[1] = {0x9B};
UBYTE SrcFile[80],DstFile[80],ModName[80],Name[80];
BYTE Ans[5];
BOOL OK;
int i,Length;
FILE *Handle;
main()
{
printf("\f\n");
printf("Object to C V1.1\n");
printf("----------------\n\n");
printf("(c) 1991 Frank Enderle\n\n");
printf("\n");
printf("Sourcefile (RAW-DATA) : ");
scanf("%s",SrcFile);
printf("Destinationfile (D -DATA) : ");
scanf("%s",DstFile);
printf("Module Name : ");
scanf("%s",ModName);
MyFIB = AllocMem(sizeof(struct FileInfoBlock),MEMF_CHIP|MEMF_CLEAR);
if(MyFIB == NULL) CloseAll("*** No Mem for FileInfoBlock");
MyLock = Lock(SrcFile,ACCESS_READ);
if(MyLock == NULL) CloseAll("*** Sourcefile not found");
OK = Examine(MyLock,MyFIB);
if(OK == NULL) CloseAll("*** Can't examine FileInfoBlock");
UnLock(MyLock);
MyLock = NULL;
if(MyFIB->fib_DirEntryType > NULL) CloseAll("*** File is a Directory");
printf("\n");
printf("Filelength : %6d ( $%08x ) \n",MyFIB->fib_Size,MyFIB->fib_Size);
printf("Used Blocks : %6d ( $%08x ) \n",MyFIB->fib_NumBlocks,MyFIB->fib_NumBlocks);
printf("\n");
printf("Length : %6d ( $%08x ) \n",MyFIB->fib_Size,MyFIB->fib_Size);
printf("Actual Position : ");
Buffer = AllocMem(MyFIB->fib_Size,MEMF_PUBLIC|MEMF_CLEAR);
MyHandle = Open(SrcFile,MODE_OLDFILE);
if(MyHandle == NULL) CloseAll("*** Error while reading");
Read(MyHandle,Buffer,MyFIB->fib_Size);
Close(MyHandle);
MyHandle = NULL;
Length = 0;
sprintf(Name,"%s.c",DstFile);
Handle = fopen(Name,"w");
if(Handle == NULL) CloseAll("*** Error while writing");
fprintf(Handle,"/*\n");
fprintf(Handle," * Module : %s\n",ModName);
fprintf(Handle," * File : %s\n",SrcFile);
fprintf(Handle," *\n");
fprintf(Handle," * Created with Object to C by F.Enderle\n");
fprintf(Handle,"*/\n\n");
fprintf(Handle,"#include <exec/types.h>\n\n");
fprintf(Handle,"BYTE %s[%d] = {\n\n",ModName,MyFIB->fib_Size);
for(i=0;i<MyFIB->fib_Size;i++)
{
printf("%s16;32H%6d ( $%08x )",CSI,i,i);
if(Length==0) fprintf(Handle," ");
fprintf(Handle,"0x%02x",Buffer[i]);
Length++;
if(Length<12)
if(i<MyFIB->fib_Size-1) fprintf(Handle,", ");
if(Length>=12)
{
fprintf(Handle,",\n");
Length = 0;
}
}
printf("%s16;32H%6d ( $%08x )",CSI,i,i);
fprintf(Handle,"\n\n};\n");
fclose(Handle);
Handle = NULL;
CloseAll("Operation successful");
}
CloseAll(ErrMsg)
UBYTE ErrMsg[80];
{
printf("\n\n%s\n",ErrMsg);
if (MyHandle != NULL) Close(MyHandle);
if (MyLock != NULL ) UnLock(MyLock);
if (MyFIB != NULL ) FreeMem(MyFIB,sizeof(struct FileInfoBlock));
if (Buffer != NULL ) FreeMem(Buffer,MyFIB->fib_Size);
if (Handle != NULL ) fclose(Handle);
exit(NULL);
}
_abort()
{
CloseAll("*** ABORTED BY USER");
exit(NULL);
}