diff --git a/src/preprocess.c b/src/preprocess.c index 39aa3c7c..f4152607 100644 --- a/src/preprocess.c +++ b/src/preprocess.c @@ -186,10 +186,12 @@ int main(int argc,char **argv) // Start at beginning of actual kernal data int address=0xe4d3; - - unlink("temp.s"); - out=fopen("temp.s","w"); - if (!out) DO_ERROR("Could not write to temp.s"); + + char filename[8192]; + snprintf(filename,8192,"%s/combined.s",directory); + unlink(filename); + out=fopen(filename,"w"); + if (!out) DO_ERROR("Could not write to combined.s"); fprintf(out,"\t.org $%04x\n",address); for(int i=0;iaddress) + if (source_files[i].address>=address) if (source_files[i].address-1) @@ -233,7 +238,7 @@ int main(int argc,char **argv) if (biggest==-1) { // Nothing else fits here. So write next_fixed_routine fprintf(stderr,"Writing file %s\n",source_files[next_fixed_routine].file); - fprintf(out,"; Source file %s\n",source_files[next_fixed_routine].file); + fprintf(out,"\n; Source file %s @ $%04X\n",source_files[next_fixed_routine].file,address); fprintf(out,"\t.checkpc $%04x\n\t.advance $%04x,$00\n", next_allocated_address,next_allocated_address); char filename[8192]; @@ -242,7 +247,7 @@ int main(int argc,char **argv) source_files[next_fixed_routine].written=1; address=next_allocated_address+source_files[next_fixed_routine].size; } else { - fprintf(out,"; Source file %s\n",source_files[biggest].file); + fprintf(out,"\n; Source file %s @ $%04x\n",source_files[biggest].file,address); fprintf(stderr,"Writing file %s\n",source_files[biggest].file); char filename[8192]; snprintf(filename,8192,"%s/%s",directory,source_files[biggest].file); @@ -254,6 +259,17 @@ int main(int argc,char **argv) fclose(out); if (retVal) break; + + for(int i=0;i