+ if exec_cycle = T1 then
+ fetch_low;
+ elsif exec_cycle = T2 then
+ abs_fetch_high;
+ elsif exec_cycle = T3 then
+ --ea calc & lda
+ abs_latch_out;
+ ea_x_out;
+ dbuf_int_oe_n <= '0';
+ --instruction specific operation wriiten in the caller position.
+ next_cycle <= T4;
+ elsif exec_cycle = T4 then
+ if ea_carry = '1' then
+ --case page boundary crossed.
+ d_print("absx 5 (page boudary crossed.)");
+ abs_latch_out;
+ ea_x_out;
+ dbuf_int_oe_n <= '0';
+ --next page.
+ abs_pg_next_n <= '0';
+ --redo inst.
+ next_cycle <= T0;
+ else
+ --case page boundary not crossed. do the fetch op.
+ d_print("absx 5 (fetch)");
+ fetch_inst;
+ next_cycle <= T1;
+ end if;
+ end if;