d_title, // 44 title
d_subttl, // 45 subttl
eject, // 46 eject
- d_unimpl, // 47 error
- d_unimpl, // 48 warn
+ d_error, // 47 error
+ d_warn, // 48 warn
d_noclear, // 49 .noclear
d_equrundef, // 50 .equrundef/.regundef
d_ccundef, // 51 .ccundef
d_jpad, // 54 .jpad (deprecated)
d_nojpad, // 55 .nojpad (deprecated)
d_gpumain, // 56 .gpumain (deprecated)
+ d_prgflags, // 57 .prgflags
};
+//
+// .error - Abort compilation, printing an error message
+//
+int d_error(char *str)
+{
+ if (*tok == EOL)
+ return error("error directive encountered - aborting assembling");
+ else
+ {
+ switch(*tok)
+ {
+ case STRING:
+ return error(string[tok[1]]);
+ break;
+ default:
+ return error("error directive encountered - aborting assembling");
+ }
+ }
+}
+
+
+//
+// .warn - Just display a warning on screen
+//
+int d_warn(char *str)
+{
+ if (*tok == EOL)
+ return warn("WARNING WARNING WARNING");
+ else
+ {
+ switch(*tok)
+ {
+ case STRING:
+ return warn(string[tok[1]]);
+ break;
+ default:
+ return warn("WARNING WARNING WARNING");
+ }
+ }
+}
+
+
//
// .org - Set origin
//
}
+//
+// .prgflags expression
+//
+int d_prgflags(void)
+{
+ VALUE eval;
+
+ if (*tok == EOL)
+ return error("PRGFLAGS requires value");
+ else if (abs_expr(&eval) == OK)
+ {
+ PRGFLAGS=eval;
+ return 0;
+ }
+ else
+ {
+ return error("PRGFLAGS requires value");
+ }
+}
+
+
//
// .abs [expression]
//
//
int d_ds(WORD siz)
{
-if (verb_flag)
+if (debug)
printf("Directive: .ds.[size] = %u, sloc = $%X\n", siz, sloc);
VALUE eval;
VALUE evalc, eval;
WORD eattr;
+printf("dcb: section is %s%s%s (scattr=$%X)\n", (cursect & TEXT ? "TEXT" : ""), (cursect & DATA ? " DATA" : ""), (cursect & BSS ? "BSS" : ""), scattr);
if ((scattr & SBSS) != 0)
return error("illegal initialization of section");