|
@@ -483,14 +483,14 @@ QString loadFileText(const char *fileName)
|
|
|
|
|
|
QString convert_path_separators_save(QString s)
|
|
|
{
|
|
|
- int o;
|
|
|
-
|
|
|
+ int o;
|
|
|
+
|
|
|
#ifndef __WIN32__
|
|
|
- while ((o=s.find('/',0,TRUE))>=0)
|
|
|
- s[o]='\\';
|
|
|
+ while ((o=s.find('/',0,TRUE))>=0)
|
|
|
+ s[o]='\\';
|
|
|
#endif
|
|
|
-
|
|
|
- return s;
|
|
|
+
|
|
|
+ return s;
|
|
|
}
|
|
|
|
|
|
//this is here because QString::ascii() returns "(null)" on a null string.
|
|
@@ -506,144 +506,144 @@ const char *smartAscii(const QString &s)
|
|
|
//some parameters are booleans for if a parameter is defined or not. should the parameter be shown anyway, even if the associated boolean is false?
|
|
|
int save_tpr(FILE *f,TPRDataStruct *dest)
|
|
|
{
|
|
|
- unsigned i=0,e;
|
|
|
- QString tmp;
|
|
|
-
|
|
|
+ unsigned i=0,e;
|
|
|
+ QString tmp;
|
|
|
+
|
|
|
#define boolean_param(token,setting) fprintf(f,token "%d\r\n",!!dest->settings.setting);
|
|
|
#define string_vparam(token,var) fprintf(f,token "%s\r\n",smartAscii(dest->var));
|
|
|
#define string_param(token,setting) string_vparam(token,settings.setting)
|
|
|
#define ignore_param(token) /**/
|
|
|
-
|
|
|
- fputs("[Settings]\r\n",f);
|
|
|
- boolean_param("Archive=",archive)
|
|
|
- boolean_param("Pack=",pack)
|
|
|
- string_param("Packed Variable=",pack_name)
|
|
|
- string_vparam("Project Name=",prj_name)
|
|
|
- string_param("GCC Switches=",cc_switches)
|
|
|
- string_param("Assembler Switches=",a68k_switches)
|
|
|
- ignore_param("Linker Switches=") // Obsolete. Ignore.
|
|
|
- ignore_param("GNU Linker Switches=") // Obsolete. Ignore.
|
|
|
- string_param("GNU Assembler Switches=",as_switches)
|
|
|
- ignore_param("BSR Patch=") // Obsolete. Ignore.
|
|
|
- boolean_param("Debug Info=",debug_info)
|
|
|
- boolean_param("Standard Library=",std_lib)
|
|
|
- string_param("Command Line=",cmd_line)
|
|
|
- string_param("Post-Build Process=",post_build)
|
|
|
- boolean_param("Use Data Variable=",use_data_var)
|
|
|
- string_param("Data Variable=",data_var)
|
|
|
- boolean_param("Copy Data Variable=",copy_data_var)
|
|
|
- boolean_param("Copy Data Variable if Archived=",copy_data_var_arc)
|
|
|
- boolean_param("Optimize NOPs=",optimize_nops)
|
|
|
- boolean_param("Optimize Returns=",optimize_returns)
|
|
|
- boolean_param("Optimize Branches=",optimize_branches)
|
|
|
- boolean_param("Optimize Moves=",optimize_moves)
|
|
|
- boolean_param("Optimize Tests=",optimize_tests)
|
|
|
- boolean_param("Optimize Calculations=",optimize_calcs)
|
|
|
- boolean_param("Remove Unused Sections=",remove_unused)
|
|
|
- boolean_param("Binary Output=",outputbin)
|
|
|
- boolean_param("Fargo=",fargo)
|
|
|
- boolean_param("Flash OS=",flash_os)
|
|
|
- boolean_param("Cut Unused Ranges=",cut_ranges)
|
|
|
- boolean_param("Reorder Sections=",reorder_sections)
|
|
|
- boolean_param("Merge Constants=",merge_constants)
|
|
|
- boolean_param("Initialize BSS=",initialize_bss)
|
|
|
-
|
|
|
+
|
|
|
+ fputs("[Settings]\r\n",f);
|
|
|
+ boolean_param("Archive=",archive)
|
|
|
+ boolean_param("Pack=",pack)
|
|
|
+ string_param("Packed Variable=",pack_name)
|
|
|
+ string_vparam("Project Name=",prj_name)
|
|
|
+ string_param("GCC Switches=",cc_switches)
|
|
|
+ string_param("Assembler Switches=",a68k_switches)
|
|
|
+ ignore_param("Linker Switches=") // Obsolete. Ignore.
|
|
|
+ ignore_param("GNU Linker Switches=") // Obsolete. Ignore.
|
|
|
+ string_param("GNU Assembler Switches=",as_switches)
|
|
|
+ ignore_param("BSR Patch=") // Obsolete. Ignore.
|
|
|
+ boolean_param("Debug Info=",debug_info)
|
|
|
+ boolean_param("Standard Library=",std_lib)
|
|
|
+ string_param("Command Line=",cmd_line)
|
|
|
+ string_param("Post-Build Process=",post_build)
|
|
|
+ boolean_param("Use Data Variable=",use_data_var)
|
|
|
+ string_param("Data Variable=",data_var)
|
|
|
+ boolean_param("Copy Data Variable=",copy_data_var)
|
|
|
+ boolean_param("Copy Data Variable if Archived=",copy_data_var_arc)
|
|
|
+ boolean_param("Optimize NOPs=",optimize_nops)
|
|
|
+ boolean_param("Optimize Returns=",optimize_returns)
|
|
|
+ boolean_param("Optimize Branches=",optimize_branches)
|
|
|
+ boolean_param("Optimize Moves=",optimize_moves)
|
|
|
+ boolean_param("Optimize Tests=",optimize_tests)
|
|
|
+ boolean_param("Optimize Calculations=",optimize_calcs)
|
|
|
+ boolean_param("Remove Unused Sections=",remove_unused)
|
|
|
+ boolean_param("Binary Output=",outputbin)
|
|
|
+ boolean_param("Fargo=",fargo)
|
|
|
+ boolean_param("Flash OS=",flash_os)
|
|
|
+ boolean_param("Cut Unused Ranges=",cut_ranges)
|
|
|
+ boolean_param("Reorder Sections=",reorder_sections)
|
|
|
+ boolean_param("Merge Constants=",merge_constants)
|
|
|
+ boolean_param("Initialize BSS=",initialize_bss)
|
|
|
+
|
|
|
#undef boolean_param
|
|
|
#undef string_vparam
|
|
|
#undef string_param
|
|
|
#undef ignore_param
|
|
|
-
|
|
|
+
|
|
|
#define boolean_param(token,setting) fprintf(f,token "%d\r\n",!!dest->libopts.setting);
|
|
|
-
|
|
|
+
|
|
|
#define reloc_param(token,setting) \
|
|
|
- switch(dest->libopts.setting) \
|
|
|
- { \
|
|
|
- case RT_NONE: \
|
|
|
- fprintf(f,token "None\r\n"); \
|
|
|
- break; \
|
|
|
+ switch(dest->libopts.setting) \
|
|
|
+ { \
|
|
|
+ case RT_NONE: \
|
|
|
+ fprintf(f,token "None\r\n"); \
|
|
|
+ break; \
|
|
|
case RT_DIRECT: \
|
|
|
- fprintf(f,"%sDirect\r\n",token); \
|
|
|
+ fprintf(f,token "Direct\r\n"); \
|
|
|
break; \
|
|
|
case RT_AMS: \
|
|
|
- fprintf(f,"%sAMS",token); \
|
|
|
+ fprintf(f,token "AMS\r\n"); \
|
|
|
+ break; \
|
|
|
+ case RT_PRECOMP: \
|
|
|
+ fprintf(f,token "Precomputed\r\n"); \
|
|
|
+ break; \
|
|
|
+ case RT_KERNEL: \
|
|
|
+ fprintf(f,token "Kernel\r\n"); \
|
|
|
+ break; \
|
|
|
+ case RT_COMPRESSED: \
|
|
|
+ fprintf(f,token "Compressed\r\n"); \
|
|
|
break; \
|
|
|
- case RT_PRECOMP: \
|
|
|
- fprintf(f,token "Precomputed\r\n"); \
|
|
|
- break; \
|
|
|
- case RT_KERNEL: \
|
|
|
- fprintf(f,token "Kernel\r\n"); \
|
|
|
- break; \
|
|
|
- case RT_COMPRESSED: \
|
|
|
- fprintf(f,token "Compressed\r\n"); \
|
|
|
- break; \
|
|
|
- case RT_FLINE: \
|
|
|
- fprintf(f,token "F-Line\r\n"); \
|
|
|
- break; \
|
|
|
- }
|
|
|
-
|
|
|
+ case RT_FLINE: \
|
|
|
+ fprintf(f,token "F-Line\r\n"); \
|
|
|
+ break; \
|
|
|
+ }
|
|
|
+
|
|
|
#define minams_param(token,setting) \
|
|
|
- { \
|
|
|
- int major,minor; \
|
|
|
- major=dest->libopts.setting/100; \
|
|
|
- minor=dest->libopts.setting%100; \
|
|
|
- fprintf(f,token "%d.%02d\r\n",major,minor); \
|
|
|
- }
|
|
|
-
|
|
|
- fputs("\r\n[Library Options]\r\n",f);
|
|
|
- boolean_param("Use TI-89=",use_ti89)
|
|
|
- boolean_param("Use TI-92 Plus=",use_ti92p)
|
|
|
- boolean_param("Use V200=",use_v200)
|
|
|
- boolean_param("Optimize Calc Consts=",opt_calc_consts)
|
|
|
- boolean_param("Use Kernel=",use_kernel)
|
|
|
- boolean_param("Use PreOS=",use_preos)
|
|
|
- boolean_param("Minimum AMS Version Defined=",use_minams)
|
|
|
- minams_param("Minimum AMS Version=",minams);
|
|
|
- boolean_param("Unofficial OS Support=",unofficial_os)
|
|
|
- reloc_param("Reloc Format=",reloc_format)
|
|
|
- reloc_param("ROM Call Format=",rom_call_format)
|
|
|
- reloc_param("BSS Ref Format=",bss_ref_format)
|
|
|
- reloc_param("Data Ref Format=",data_ref_format)
|
|
|
- boolean_param("Use F-Line Jumps=",use_fline_jumps)
|
|
|
- boolean_param("Use 4-Byte F-Line Jumps=",use_4b_fline_jumps)
|
|
|
- boolean_param("Use Internal F-Line Emulator=",use_internal_fline_emu)
|
|
|
- boolean_param("Use Return Value=",use_return_value)
|
|
|
- boolean_param("Enable Error Return=",enable_error_return)
|
|
|
- boolean_param("Save Screen=",save_screen)
|
|
|
- boolean_param("Optimize ROM Calls=",opt_rom_calls)
|
|
|
-
|
|
|
+ { \
|
|
|
+ int major,minor; \
|
|
|
+ major=dest->libopts.setting/100; \
|
|
|
+ minor=dest->libopts.setting%100; \
|
|
|
+ fprintf(f,token "%d.%02d\r\n",major,minor); \
|
|
|
+ }
|
|
|
+
|
|
|
+ fputs("\r\n[Library Options]\r\n",f);
|
|
|
+ boolean_param("Use TI-89=",use_ti89)
|
|
|
+ boolean_param("Use TI-92 Plus=",use_ti92p)
|
|
|
+ boolean_param("Use V200=",use_v200)
|
|
|
+ boolean_param("Optimize Calc Consts=",opt_calc_consts)
|
|
|
+ boolean_param("Use Kernel=",use_kernel)
|
|
|
+ boolean_param("Use PreOS=",use_preos)
|
|
|
+ boolean_param("Minimum AMS Version Defined=",use_minams)
|
|
|
+ minams_param("Minimum AMS Version=",minams);
|
|
|
+ boolean_param("Unofficial OS Support=",unofficial_os)
|
|
|
+ reloc_param("Reloc Format=",reloc_format)
|
|
|
+ reloc_param("ROM Call Format=",rom_call_format)
|
|
|
+ reloc_param("BSS Ref Format=",bss_ref_format)
|
|
|
+ reloc_param("Data Ref Format=",data_ref_format)
|
|
|
+ boolean_param("Use F-Line Jumps=",use_fline_jumps)
|
|
|
+ boolean_param("Use 4-Byte F-Line Jumps=",use_4b_fline_jumps)
|
|
|
+ boolean_param("Use Internal F-Line Emulator=",use_internal_fline_emu)
|
|
|
+ boolean_param("Use Return Value=",use_return_value)
|
|
|
+ boolean_param("Enable Error Return=",enable_error_return)
|
|
|
+ boolean_param("Save Screen=",save_screen)
|
|
|
+ boolean_param("Optimize ROM Calls=",opt_rom_calls)
|
|
|
+
|
|
|
#undef boolean_param
|
|
|
#undef reloc_param
|
|
|
#undef minams_param
|
|
|
-
|
|
|
- fprintf(f,"\r\n[File Editing]\r\nOpen File=%s\r\n\r\n[Included Files]\r\n",smartAscii(dest->open_file));
|
|
|
-
|
|
|
+
|
|
|
+ fprintf(f,"\r\n[File Editing]\r\nOpen File=%s\r\n\r\n[Included Files]\r\n",smartAscii(dest->open_file));
|
|
|
+
|
|
|
#define filepath_param(token,filetype) \
|
|
|
- e=dest->filetype.path.count(); \
|
|
|
- for(i=0;i<e;i++) \
|
|
|
- { \
|
|
|
- tmp=convert_path_separators_save(smartAscii(dest->filetype.path[i])); \
|
|
|
- fprintf(f,token " %u=%s\r\n",i+1,smartAscii(tmp)); \
|
|
|
- if (!dest->filetype.folder[i].isEmpty()) \
|
|
|
- { \
|
|
|
+ e=dest->filetype.path.count(); \
|
|
|
+ for(i=0;i<e;i++) \
|
|
|
+ { \
|
|
|
+ tmp=convert_path_separators_save(smartAscii(dest->filetype.path[i])); \
|
|
|
+ fprintf(f,token " %u=%s\r\n",i+1,smartAscii(tmp)); \
|
|
|
+ if (!dest->filetype.folder[i].isEmpty()) \
|
|
|
+ { \
|
|
|
fprintf(f,token " %u Folder=%s\r\n",i+1,smartAscii(dest->filetype.folder[i])); \
|
|
|
} \
|
|
|
- }
|
|
|
-
|
|
|
- filepath_param("C File",c_files)
|
|
|
- filepath_param("GNU Assembler File",s_files)
|
|
|
- filepath_param("Header File",h_files)
|
|
|
- filepath_param("Assembler File",asm_files)
|
|
|
- filepath_param("Object File",o_files)
|
|
|
- filepath_param("Archive File",a_files)
|
|
|
- filepath_param("Text File",txt_files)
|
|
|
- filepath_param("Quill File",quill_files)
|
|
|
- filepath_param("Other File",oth_files)
|
|
|
-
|
|
|
+ }
|
|
|
+
|
|
|
+ filepath_param("C File",c_files)
|
|
|
+ filepath_param("GNU Assembler File",s_files)
|
|
|
+ filepath_param("Header File",h_files)
|
|
|
+ filepath_param("Assembler File",asm_files)
|
|
|
+ filepath_param("Object File",o_files)
|
|
|
+ filepath_param("Archive File",a_files)
|
|
|
+ filepath_param("Text File",txt_files)
|
|
|
+ filepath_param("Quill File",quill_files)
|
|
|
+ filepath_param("Other File",oth_files)
|
|
|
+
|
|
|
#undef filepath_param
|
|
|
-
|
|
|
+
|
|
|
fputs("\r\n",f);
|
|
|
|
|
|
- return 0;
|
|
|
+ return 0;
|
|
|
}
|
|
|
|
|
|
//returns 0 on success, -1 if the file isn't there, and -2 if there's not enough memory.
|