part_size += sz;
}
+long atol();
+
con_mult(sz) word sz; {
- long l;
if (argval != 4)
fatal("bad icon/ucon size");
- l = atol(str);
- fprintf(codefile,".short\t%d\n",(int)l);
- fprintf(codefile,".short\t%d\n",(int)(l>>16));
+ fprintf(codefile,".data4\t%ld\n",atol(str));
}
con_float() {
+ static int warning_given;
+ int i = argval;
- fatal("no reals");
+ if (!warning_given) {
+ fprintf(stderr, "warning: dummy floating point constant\n");
+ warning_given = 1;
+ }
+ while (i > 0) {
+ fputs(".data4 0 !dummy float\n", codefile);
+ i -= 4;
+ }
}
}
char *segname[] = {
- ".text",
- ".data",
- ".data",
- ".bss"
+ ".sect .text",
+ ".sect .data",
+ ".sect .rom",
+ ".sect .bss"
};
#define cst_fmt "%d"
#define off_fmt "%d"
-#define ilb_fmt "I%03x%x"
+#define ilb_fmt "I%x_%x"
#define dlb_fmt "_%d"
#define hol_fmt "hol%d"
#define hol_off "%d+hol%d"
-#define con_cst(x) fprintf(codefile,".word\t%d\n",x)
-#define con_ilb(x) fprintf(codefile,".word\t%s\n",x)
-#define con_dlb(x) fprintf(codefile,".word\t%s\n",x)
+#define con_cst(x) fprintf(codefile,".data2\t%d\n",x)
+#define con_ilb(x) fprintf(codefile,".data2\t%s\n",x)
+#define con_dlb(x) fprintf(codefile,".data2\t%s\n",x)
+
+#define fmt_id(sf, st) sprintf(st,"_%s",sf)
+
+#define modhead ".sect .text; .sect .rom; .sect .data; .sect .bss\n"
-#define id_first '_'
#define BSS_INIT 0