diff --git a/src/cpu.c b/src/cpu.c index 19fcd57..cb2b126 100644 --- a/src/cpu.c +++ b/src/cpu.c @@ -63,7 +63,7 @@ static struct cpu_type cpu_type_4502 = { }; static struct cpu_type cpu_type_m65 = { keyword_is_m65_mnemo, - CPUFLAG_DECIMALSUBTRACTBUGGY, // SBC does not work reliably in decimal mode FIXME - is this correct? has this been fixed? + CPUFLAG_WARN_ABOUT_FF_PTR, // TODO - remove this? check datasheets/realhw! 234 // !align fills with "NOP" }; diff --git a/src/global.h b/src/global.h index 1f4c924..62508e3 100644 --- a/src/global.h +++ b/src/global.h @@ -61,7 +61,7 @@ extern char GotByte; // Last byte read (processed) enum version { VER_OLDEST_SUPPORTED, // v0.85 looks like the oldest version it makes sense to actually support VER_DEPRECATE_REALPC, // v0.86 made !pseudopc/!realpc give a warning to use !pseudopc{} instead, and !to wants a file format - VER_SHORTER_SETPC_WARNING, // v0.93 claimed to allow *= inside !pseudopc blocks, but didn't! It only shortened the warning! + VER_SHORTER_SETPC_WARNING, // v0.93 claimed to allow *= inside !pseudopc blocks, but didn't. It shortened the warning, but '}' or !realpc clobbered PC VER_RIGHTASSOCIATIVEPOWEROF, // v0.94.6 made "power of" operator right-associative // v0.94.7 fixed a bug: empty code segments no longer included in output file VER_DISABLED_OBSOLETE_STUFF, // v0.94.8 made *= work inside !pseudopc, disabled !cbm/!realpc/!subzone diff --git a/src/pseudoopcodes.c b/src/pseudoopcodes.c index a2c8965..faa1195 100644 --- a/src/pseudoopcodes.c +++ b/src/pseudoopcodes.c @@ -72,6 +72,10 @@ void notreallypo_setpc(void) // GotByte is '*' /*TODO } else if (strcmp(GlobalDynaBuf->buffer, "limit") == 0) { skip '=' read memory limit + } else if (strcmp(GlobalDynaBuf->buffer, "stay" or "same" or something like that) == 0) { + mutually exclusive with all other arguments! + this would mean to keep all previous segment data, + so it could be used with "*=*-5" or "*=*+3" } else if (strcmp(GlobalDynaBuf->buffer, "name") == 0) { skip '=' read segment name (quoted string!) */ diff --git a/src/symbol.c b/src/symbol.c index 6811b5e..b607953 100644 --- a/src/symbol.c +++ b/src/symbol.c @@ -112,17 +112,16 @@ FIXME - to get lists/strings to work, this can no longer create an int by defaul maybe get rid of "int flags" and use some "struct object *default" instead? called by; alu.c - get_symbol_value + get_symbol_value (here it's okay to create an undefined int) global.c - set_label implicit symbol definition (gets assigned pc) + set_label implicit symbol definition (gets assigned pc, so int is ok) parse_symbol_definition explicit symbol definition macro.c Macro_parse_call early to build array of outer refs in case of call-by-ref Macro_parse_call later to lookup inner symbols in case of call-by-value -pseudoopcodes.c +symbol.c symbol_define symbol_fix_forward_anon_name -symbol.c */ struct symbol *symbol_find(scope_t scope, int flags) { diff --git a/src/version.h b/src/version.h index 3354443..f407018 100644 --- a/src/version.h +++ b/src/version.h @@ -9,7 +9,7 @@ #define RELEASE "0.96.5" // update before release FIXME #define CODENAME "Fenchurch" // update before release -#define CHANGE_DATE "2 June" // update before release FIXME +#define CHANGE_DATE "3 June" // update before release FIXME #define CHANGE_YEAR "2020" // update before release //#define HOME_PAGE "http://home.pages.de/~mac_bacon/smorbrod/acme/" #define HOME_PAGE "http://sourceforge.net/p/acme-crossass/" // FIXME