fprintf (asmFile, "\tmov\tsp,#__start__stack - 1\n"); /* MOF */
}
- fprintf (asmFile, "\tlcall\t__sdcc_external_startup\n");
+ fprintf (asmFile, "\t%ccall\t__sdcc_external_startup\n", options.acall_ajmp?'a':'l');
fprintf (asmFile, "\tmov\ta,dpl\n");
fprintf (asmFile, "\tjz\t__sdcc_init_data\n");
- fprintf (asmFile, "\tljmp\t__sdcc_program_startup\n");
+ fprintf (asmFile, "\t%cjmp\t__sdcc_program_startup\n", options.acall_ajmp?'a':'l');
fprintf (asmFile, "__sdcc_init_data:\n");
// if the port can copy the XINIT segment to XISEG
* by the ugly shucking and jiving about 20 lines ago.
*/
tfprintf (asmFile, "\t!area\n", port->mem.post_static_name);
- fprintf (asmFile, "\tljmp\t__sdcc_program_startup\n");
+ fprintf (asmFile, "\t%cjmp\t__sdcc_program_startup\n", options.acall_ajmp?'a':'l');
}
fprintf (asmFile,
/* put in jump or call to main */
if (options.mainreturn)
{
- fprintf (asmFile, "\tljmp\t_main\n"); /* needed? */
+ fprintf (asmFile, "\t%cjmp\t_main\n", options.acall_ajmp?'a':'l'); /* needed? */
fprintf (asmFile, ";\treturn from main will return to caller\n");
}
else
{
- fprintf (asmFile, "\tlcall\t_main\n");
+ fprintf (asmFile, "\t%ccall\t_main\n", options.acall_ajmp?'a':'l');
fprintf (asmFile, ";\treturn from main will lock up\n");
fprintf (asmFile, "\tsjmp .\n");
}
{
int i;
- dbuf_printf (oBuf, "\tljmp\t__sdcc_gsinit_startup\n");
+ dbuf_printf (oBuf, "\t%cjmp\t__sdcc_gsinit_startup\n", options.acall_ajmp?'a':'l');
+ if((options.acall_ajmp)&&(maxInterrupts)) dbuf_printf (oBuf, "\t.ds\t1\n");
/* now for the other interrupts */
for (i = 0; i < maxInterrupts; i++)
{
if (interrupts[i])
{
- dbuf_printf (oBuf, "\tljmp\t%s\n", interrupts[i]->rname);
+ dbuf_printf (oBuf, "\t%cjmp\t%s\n", options.acall_ajmp?'a':'l', interrupts[i]->rname);
if ( i != maxInterrupts - 1 )
- dbuf_printf (oBuf, "\t.ds\t5\n");
+ dbuf_printf (oBuf, "\t.ds\t%d\n", options.acall_ajmp?6:5);
}
else
{