%include "assem:8051.inc"

! Plus Extended Jumps

%routine ajc(%integer l); jnc(pc+4); instno = instno-1; ajmp(l); %end
%routine ljc(%integer l); jnc(pc+5); instno = instno-1; ljmp(l); %end
%routine ajnc(%integer l); jc(pc+4); instno = instno-1; ajmp(l); %end
%routine ljnc(%integer l); jc(pc+5); instno = instno-1; ljmp(l); %end
%routine ajz(%integer l); jnz(pc+4); instno = instno-1; ajmp(l); %end
%routine ljz(%integer l); jnz(pc+5); instno = instno-1; ljmp(l); %end
%routine ajnz(%integer l); jz(pc+4); instno = instno-1; ajmp(l); %end
%routine ljnz(%integer l); jz(pc+5); instno = instno-1; ljmp(l); %end
%routine ajb(%integer b,l); jnb(b,pc+5); instno = instno-1; ajmp(l); %end
%routine ljb(%integer b,l); jnb(b,pc+6); instno = instno-1; ljmp(l); %end
%routine ajnb(%integer b,l); jb(b,pc+5); instno = instno-1; ajmp(l); %end
%routine ljnb(%integer b,l); jb(b,pc+6); instno = instno-1; ljmp(l); %end

%routine ajbc(%integer b,l)
  jbc(b,pc+5); sjmp(pc+4); instno = instno-2; ajmp(l)
%end

%routine ljbc(%integer b,l)
  jbc(b,pc+5); sjmp(pc+5); instno = instno-2; ljmp(l)
%end

%routine acjne(%integer r,x,l)
  cjne(r,x,pc+5); sjmp(pc+4); instno = instno-2; ajmp(l)
%end

%routine lcjne(%integer r,x,l)
  cjne(r,x,pc+5); sjmp(pc+5); instno = instno-2; ljmp(l)
%end

%routine adjnz(%integer x,l)
%integer k=4; k = 5 %unless x!7=r7
  djnz(x,pc+k); sjmp(pc+4); instno = instno-2; ajmp(l)
%end

%routine ldjnz(%integer x,l)
%integer k=4; k = 5 %unless x!7=r7
  djnz(x,pc+k); sjmp(pc+5); instno = instno-2; ljmp(l)
%end
