v >>= (offset * 8);
switch (size) {
case 1:
- sprintf(buffer,"#0x%02x", (unsigned int)v & 0xff);
+ tsprintf(buffer, "!immedbyte", (unsigned int)v & 0xff);
break;
case 2:
- sprintf(buffer,"#0x%04x", (unsigned int)v & 0xffff);
+ tsprintf(buffer, "!immedword", (unsigned int)v & 0xffff);
break;
default:
/* Hmm. Too big for now. */
/* it is type float */
fl.f = (float) floatFromVal(val);
-#ifdef _BIG_ENDIAN
- sprintf(buffer,"#0x%02x",fl.c[3-offset]);
+#ifdef _BIG_ENDIAN
+ tsprintf(buffer, "!immedbyte", fl.c[3-offset]);
#else
- sprintf(buffer,"#0x%02x",fl.c[offset]);
+ tsprintf(buffer, "!immedbyte", fl.c[offset]);
#endif
ALLOC_ATOMIC(rs,strlen(buffer)+1);
return strcpy (rs,buffer);
symbol *sym;
if (addPublics)
- asm_printf(map->oFile, asm_port->area, map->sname);
+ tfprintf(map->oFile, "\t!area\n", map->sname);
/* print the area name */
for (sym = setFirstItem (map->syms); sym;
/* allocate space */
if ((options.debug || sym->level == 0) && !options.nodebug)
fprintf(map->oFile,"==.\n");
- asm_printf(map->oFile, asm_port->label, sym->rname);
- asm_printf(map->oFile, asm_port->ds, (unsigned int)getSize (sym->type) & 0xffff);
+ tfprintf(map->oFile, "!labeldef\n", sym->rname);
+ tfprintf(map->oFile, "\t!ds\n", (unsigned int)getSize (sym->type) & 0xffff);
}
/* if it has a initial value then do it only if
char *p = buf;
while (len && pplen < plen) {
+ i = 60;
while (i && *s && pplen < plen) {
if (*s < ' ' || *s == '\"') {
*p = '\0';
if (p != buf)
- asm_printf(ofile, asm_port->ascii, buf);
- asm_printf(ofile, asm_port->db, *s);
+ tfprintf(ofile, "\t!ascii\n", buf);
+ tfprintf(ofile, "\t!db\n", *s);
p = buf;
}
else {
}
if (p != buf) {
*p = '\0';
- asm_printf(ofile, asm_port->ascii, buf);
- }
-
- if (len > 60)
- len -= 60;
- else
- len = 0;
- }
- asm_printf(ofile, asm_port->db, 0);
-#if 0
- if (pplen < plen)
- fprintf(ofile,"\t.byte\t0\n");
-
- fprintf (ofile, "\t.ascii /");
- i = 60;
- while (i && *s && pplen < plen) {
- if (*s < ' ' || *s == '/') {
- fprintf (ofile, "/\n\t.byte 0x%02x\n\t.ascii /", *s++);
- }
- else
- fprintf (ofile, "%c", *s++);
- pplen++;
- i--;
+ tfprintf(ofile, "\t!ascii\n", buf);
}
- fprintf (ofile, "/\n");
if (len > 60)
len -= 60;
else
len = 0;
}
- if (pplen < plen)
- fprintf(ofile,"\t.byte\t0\n");
-#endif
+ tfprintf(ofile, "\t!db\n", 0);
}
/*-----------------------------------------------------------------*/
switch (getSize (type)) {
case 1:
if (!val)
- fprintf (oFile, "\t.byte 0\n");
+ tfprintf(oFile, "\t!db\n", 0);
else
- fprintf (oFile, "\t.byte %s\n",
+ tfprintf(oFile, "\t!dbs\n",
aopLiteral (val, 0));
break;
case 2:
- fprintf(oFile, "\t.word %s\n", aopLiteralLong(val, 0, 2));
-break;
+ tfprintf(oFile, "\t!dws\n", aopLiteralLong(val, 0, 2));
+ break;
case 4:
- if (!val)
- fprintf (oFile, "\t.word 0,0\n");
- else
+ if (!val) {
+ tfprintf (oFile, "\t!dw\n", 0);
+ tfprintf (oFile, "\t!dw\n", 0);
+ }
+ else {
fprintf (oFile, "\t.byte %s,%s,%s,%s\n",
aopLiteral (val, 0), aopLiteral (val, 1),
aopLiteral (val, 2), aopLiteral (val, 3));
+ }
break;
}
-
- return;
}
/*-----------------------------------------------------------------*/
if ((remain = (DCL_ELEM (type) - strlen (SPEC_CVAL (val->etype).v_char) -1))>0)
while (remain--)
- fprintf (oFile, "\t.byte 0\n");
+ tfprintf (oFile, "\t!db\n", 0);
return 1;
}
val = list2val (ilist);
/* check the types */
if ((dLvl = checkType (val->type, type->next)) <= 0) {
-
- fprintf (oFile, "\t.word 0\n");
+ tfprintf(oFile, "\t!dw\n", 0);
return;
}
/* now generate the name */
if (!val->sym) {
if (IS_LITERAL (val->etype))
- fprintf (oFile, "\t.byte %s,%s\n",
- aopLiteral (val, 0), aopLiteral (val, 1));
+ tfprintf(oFile, "\t!dws\n", aopLiteralLong(val, 0, 2));
else
- fprintf (oFile, "\t.byte %s,(%s >> 8)\n",
- val->name, val->name);
+ tfprintf(oFile, "\t!dws\n", val->name);
}
else
- fprintf (oFile, "\t.byte %s,(%s >> 8)\n",
- val->sym->rname, val->sym->rname);
+ tfprintf(oFile, "\t!dws\n", val->sym->rname);
return;
}
if (val->name && strlen(val->name)) {
switch (size) {
case 1:
- fprintf(oFile,
- "\t.byte %s\n", val->name) ;
+ tfprintf(oFile,
+ "\t!dbs\n", val->name) ;
break;
case 2:
- fprintf(oFile, "\t.word %s\n", val->name);
+ tfprintf(oFile, "\t!dws\n", val->name);
break;
/* PENDING: probably just 3 */
default:
else {
switch (size) {
case 1:
- fprintf(oFile, "\t.byte %s\n", aopLiteral(val, 0));
+ tfprintf(oFile, "\t!dbs\n", aopLiteral(val, 0));
break;
case 2:
- fprintf(oFile, "\t.word %s\n",
+ tfprintf(oFile, "\t!dws\n",
aopLiteralLong(val, 0, 2));
break;
case 3:
if (IS_LITERAL (val->etype)) {
switch (getSize (type)) {
case 1:
- fprintf (oFile, "\t.byte 0x%02x\n", ((char) floatFromVal (val)) & 0xff);
+ tfprintf(oFile, "\t!db\n", (unsigned int)floatFromVal(val) & 0xff);
break;
case 2:
- fprintf (oFile, "\t.word %s\n", aopLiteralLong(val, 0, 2));
+ tfprintf (oFile, "\t!dws\n", aopLiteralLong(val, 0, 2));
break;
case 3:
fprintf (oFile, "\t.byte %s,%s,0x%02x\n",
switch (getSize (type)) {
case 1:
- fprintf (oFile, "\t.byte %s\n", val->name);
+ tfprintf (oFile, "\t!dbs\n", val->name);
break;
case 2:
- fprintf (oFile, "\t.byte %s,(%s >> 8)\n", val->name, val->name);
+ tfprintf (oFile, "\t!dws\n", val->name);
break;
case 3:
SPEC_CVAL (sym->etype).v_char,
strlen(SPEC_CVAL (sym->etype).v_char)+1);
else
- asm_printf(code->oFile, asm_port->ds, (unsigned int)getSize (sym->type)& 0xffff);
+ tfprintf(code->oFile, "\t!ds\n", (unsigned int)getSize (sym->type)& 0xffff);
}
}
}
return;
}
- fprintf (vFile, "\t.area\t%s\n", CODE_NAME);
+ tfprintf(vFile, "\t!area\n", CODE_NAME);
fprintf (vFile, "__interrupt_vect:\n");
for (sym = setFirstItem (publics); sym;
sym = setNextItem (publics))
- asm_printf(afile, asm_port->global, sym->rname);
+ tfprintf(afile, "\t!global\n", sym->rname);
}
/*-----------------------------------------------------------------*/
set *ovrset;
if (!elementsInSet(ovrSetSets))
- fprintf(afile,"\t.area\t%s\n", port->mem.overlay_name);
+ tfprintf(afile,"\t!area\n", port->mem.overlay_name);
/* for each of the sets in the overlay segment do */
for (ovrset = setFirstItem(ovrSetSets); ovrset;
fprintf(afile,"==.\n");
/* allocate space */
- asm_printf(afile, asm_port->label, sym->rname);
- asm_printf(afile, asm_port->ds, (unsigned int)getSize (sym->type) & 0xffff);
+ tfprintf(afile, "\t!labeldef\n", sym->rname);
+ tfprintf(afile, "\t!ds\n", (unsigned int)getSize (sym->type) & 0xffff);
}
}
initialComments (asmFile);
/* print module name */
- asm_printf(asmFile, asm_port->module, moduleName);
-
+ tfprintf(asmFile, "\t!module\n", moduleName);
+ tfprintf(asmFile, "\t!fileprelude\n");
+
/* Let the port generate any global directives, etc. */
if (port->genAssemblerPreamble)
{
if (mainf && mainf->fbody) {
fprintf (asmFile, "%s", iComments2);
fprintf (asmFile, "; Stack segment in internal ram \n");
- fprintf (asmFile, "%s", iComments2);
+ fprintf (asmFile, "%s", iComments2);
fprintf (asmFile, "\t.area\tSSEG\t(DATA)\n"
"__start__stack:\n\t.ds\t1\n\n");
}
* the post_static_name area will immediately follow the static_name
* area.
*/
- fprintf (asmFile, "\t.area %s\n", port->mem.static_name); /* MOF */
- fprintf (asmFile, "\t.area %s\n", port->mem.post_static_name);
- fprintf (asmFile, "\t.area %s\n", port->mem.static_name);
+ tfprintf(asmFile, "\t!area\n", port->mem.static_name); /* MOF */
+ tfprintf(asmFile, "\t!area\n", port->mem.post_static_name);
+ tfprintf(asmFile, "\t!area\n", port->mem.static_name);
if (mainf && mainf->fbody) {
fprintf (asmFile,"__sdcc_gsinit_startup:\n");
* This area is guaranteed to follow the static area
* by the ugly shucking and jiving about 20 lines ago.
*/
- fprintf(asmFile, "\t.area %s\n", port->mem.post_static_name);
+ tfprintf(asmFile, "\t!area %s\n", port->mem.post_static_name);
fprintf (asmFile,"\tljmp\t__sdcc_program_startup\n");
}
fprintf (asmFile, "%s", iComments2);
fprintf (asmFile, "; code\n");
fprintf (asmFile, "%s", iComments2);
- fprintf (asmFile, "\t.area %s\n", port->mem.code_name);
+ tfprintf(asmFile, "\t!area\n", port->mem.code_name);
if (mainf && mainf->fbody) {
/* entry point @ start of CSEG */