exit(1);
}
fprintf(fp, "\t.export _%s\n\n", syscall_name[n]);
- fprintf(fp, ".proc _%s\n\tldx #%d\n", syscall_name[n], n);
+ fprintf(fp, "\t.import __syscall\n\n", syscall_name[n]);
+ fprintf(fp, "\t.import pushax\n\n");
+ fprintf(fp, ".proc _%s\n\tjsr pushax\n\tldx #%d\n", syscall_name[n], n);
fprintf(fp, "\tldy #%d\n", 2 * syscall_args[n]);
- fprintf(fp, "\tjmp ($fe)\n\n.endproc\n");
+ fprintf(fp, "\tjmp __syscall\n\n.endproc\n");
fclose(fp);
}
fprintf(fp, "# Autogenerated by tools/syscall_6502\n");
fprintf(fp, "AS = ca65\n");
fprintf(fp, "AR = ar65\n");
- fprintf(fp, "ASRCS = syscall_%s.s\n", syscall_name[0]);
- for (i = 1; i < NR_SYSCALL; i++)
+ fprintf(fp, "ASYS = syscall.s\n", syscall_name[0]);
+ fprintf(fp, "ASRCS = syscall_%s.s\n", syscall_name[i]);
+ for (i = 0; i < NR_SYSCALL; i++)
fprintf(fp, "ASRCS += syscall_%s.s\n", syscall_name[i]);
fprintf(fp, "\n\nASRCALL = $(ASRCS) $(ASYS)\n");
fprintf(fp, "\nAOBJS = $(ASRCALL:.s=.o)\n\n");