37#if defined(__pc128op__) || defined(__mo5__)
64 int p=strcspn(ptr,
point);
84static unsigned char blk[257];
85static void new_blk(
int type)
91static void out_blk(FILE *f)
93 static unsigned char hdr[]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0x3c,0x5a};
96 blk[pos] = 256 - blk[256];
97 fwrite(hdr,
sizeof(hdr), 1, f);
98 fwrite(blk, pos+1, 1, f);
102static void write_byte(FILE *f,
int byte)
104 blk[256] += (
unsigned char)
byte;
105 blk[2 + blk[1]++] =
byte;
106 if(254 == blk[1]) out_blk(f);
108static void write_word(FILE *f,
int word)
110 write_byte(f,
word >> 8);
111 write_byte(f,
word & 255);
113static void write_bytes(FILE *f,
void *array,
int len)
115 unsigned char *ptr = array;
117 while(cnt--) write_byte(f, *ptr++);
133 remove( temporaryFileName );
136 fr=fopen(temporaryFileName,
"rb");
142 if(
frmt(_environment,
"main.exe",strlen(
"main.exe"),nome))
147 unsigned char file_type[]={0x02,0x00,0x00};
149 fr=fopen(temporaryFileName,
"rb");
152 fw=fopen(destin,
"wb");
154 fseek(fr, 0
L, SEEK_END);
159 write_bytes(fw, &nome[0],
sizeof(nome)-1);
160 write_bytes(fw, &file_type[0], 3);
165 write_word(fw,
size);
166 write_word(fw, start);
167 for (
int i=0;i<
size;i++)
170 (void)!fread(&byt,1,1,fr);
174 write_byte(fw, 0xff);
175 write_word(fw, 0x0000);
176 write_word(fw, runaddr);
188 sprintf( bankNumber,
"bank%2.2x dat", ( bank->
id ) );
191 write_bytes(fw, bankNumber, 11);
192 write_bytes(fw, &file_type[0], 3);
198 write_word(fw, start);
199 for (
int i=0;i<bank->
address;i++)
201 unsigned char byt = bank->
data[i];
222 while( fileStorage ) {
233 memset( buffer, 0,
size );
234 memcpy( buffer, fileStorage->
content, fileStorage->
size );
236 FILE * file = fopen( fileStorage->
sourceName,
"rb" );
240 fseek( file, 0, SEEK_END );
241 size = ftell( file );
242 fseek( file, 0, SEEK_SET );
244 memset( buffer, 0,
size + 2 );
245 (void)!fread( buffer,
size, 1, file );
250 write_bytes(fw, bankNumber, 11);
251 write_bytes(fw, &file_type[0], 3);
256 write_word(fw,
size);
257 write_word(fw, 0x6000);
258 for (
int i=0;i<
size;i++)
260 unsigned char byt = buffer[i];
266 fileStorage = fileStorage->
next;
270 storage = storage->
next;
char * get_temporary_filename(Environment *_environment)
Variable * point(Environment *_environment, char *_x, char *_y)
int frmt(Environment *_environment, char *ptr, char size, char *out)
int convertbintok7(Environment *_environment)
struct _FileStorage * next
#define MAX_TEMPORARY_STORAGE
#define CRITICAL_DLOAD_MISSING_FILE(f)
struct _Environment Environment
Structure of compilation environment.
#define CRITICAL_CANNOT_OPEN_EXECUTABLE_FILE(c)
struct _Storage Storage
Structure of a single storage.
#define CRITICAL_BUILD_INVALID_FILENAME_K7(f)
struct _FileStorage FileStorage
Structure of a single file inside a storage.
#define BUILD_SAFE_MOVE(_environment, source, destination)
struct _Bank Bank
Structure of a single bank.
char * strcopy(char *_dest, char *_source)