#include #include #include #define HI_NIBBLE(b) (((b) >> 4) & 0x0F) #define LO_NIBBLE(b) ((b) & 0x0F) typedef struct{ /*char FileIdentifier[8]; char FileType; char Controlbytes[5]; char ControlbyteLSB; char Controlbyte2; unsigned int FileSize; char ControlbyteLSB2; char Unknown; char Checksum[2]; char Unknown2[6]; short Objects;*/ char CasioHeader[0x20]; char InternalName[8]; char Numberestrips; char VersionForm[10]; char CreationDateForm[14]; char MenuIcon[68]; char ProgramTitle[8]; unsigned long TotalFileSize; }addin_header_t; typedef struct{ unsigned char b1; unsigned char b2; unsigned char n1; unsigned char n2; unsigned char n3; unsigned char n4; }shcommand_t; void bin(unsigned n){ unsigned i; for (i = 1 << 31; i > 0; i = i / 2){ (n & i) ? printf("1") : printf("0"); } } int main(int argc, char **argv){ if(argc == 1){ printf("\033[1;31m"); printf("error: "); printf("\033[0;37m"); printf("no input file!, please put graph 75 ADD-IN file\n"); return 1; } if(access(argv[1], F_OK ) == 0) { //check if file exists //none } else { printf("\033[1;31m"); printf("error: "); printf("\033[0;37m"); printf("cannot open file!\n"); return 2; } printf("\033[0;37m"); //white output text //unsigned char ROM[8388608] = {0}; //ROM start: 80000000 //unsigned char RAM[524288] = {0}; //RAM start: 88000000 unsigned int Index = 0x200; //index unsigned char Byte = 0xAF; addin_header_t AddInHeader; //add-in header shcommand_t Command; FILE * OSFile; //file pointer OSFile = fopen(argv[1], "rb"); //open file fseek(OSFile, 0x020L,SEEK_SET); //read Add-In header fread(&AddInHeader.InternalName, sizeof(AddInHeader.InternalName), 1, OSFile); fseek(OSFile, 0x030L,SEEK_SET); fread(&AddInHeader.VersionForm, sizeof(AddInHeader.VersionForm), 1, OSFile); fseek(OSFile, 0x03CL,SEEK_SET); fread(&AddInHeader.CreationDateForm, sizeof(AddInHeader.CreationDateForm), 1, OSFile); fseek(OSFile, 0x1D4L,SEEK_SET); fread(&AddInHeader.ProgramTitle, sizeof(AddInHeader.ProgramTitle), 1, OSFile); fseek(OSFile, 0x1F0L,SEEK_SET); fread(&AddInHeader.TotalFileSize, sizeof(AddInHeader.TotalFileSize), 1, OSFile); AddInHeader.TotalFileSize = ((AddInHeader.TotalFileSize>>24)&0xff) | ((AddInHeader.TotalFileSize<<8)&0xff0000) | ((AddInHeader.TotalFileSize>>8)&0xff00) | ((AddInHeader.TotalFileSize<<24)&0xff000000); printf("internal name : %.*s\n", 8, AddInHeader.InternalName); printf("program name : %.*s\n", 8, AddInHeader.ProgramTitle); printf("version (form) : %.*s\n", 10, AddInHeader.VersionForm); printf("creation date : %.*s\n", 14, AddInHeader.CreationDateForm); printf("File size : %lu\n", AddInHeader.TotalFileSize); for(; Index