CODE NEXTPAGE2 IP 1+ INC, NEXT JMP, END-CODE
CODE NEXTPAGE3 IP INC, NEXPAGE2 JMP, END-CODE
Then [COMPILE] changes from
: [COMPILE] ( -- ) ?COMP ' , ;
to
: [COMPILE] ( -- ) ?COMP
here $00ff and $00fe = if ' nextpage2 , then
here $00ff and $00fd = if ' nextpage3 , $ea c, then
' , ;
and we do something similar with COMPILE
But I would point out that if you jsr enter you only ever need
to insert one nop and the adjustment to the address you're calling
gets done (mostly) in hardware. You're guaranteed to have to make
an adjustment (so no branching in enter) but if you pass it through y
that only cost 2 cycles (plus 3 cycles for jsr versus jmp, total 5)
On the other hand if a pass through NEXT and NEXTPAGE costs
23, cycles you can afford to insert 11 nops and still save a cycle
at the cost of some bytes of code (the nops) or two nops and
save 19 cycles at no cost in bytes (assuming the 5 cycles for
jsr versus jmp costs nothing, ie saves you as much or more in
fiddling with the address as it costs and it looks to me like that
would be true even if you didn't use y to adjust the address)