volatilemachine_uint_tcurrently_in_except_block=0;// 0 or 1, to detect nested exceptions
volatilemachine_uint_tcurrently_in_except_block=0;// 0 or 1, to detect nested exceptions
machine_uint_texc_stack[8];// on the exception stack we store (ip, sp | X) for each block, X = previous value of currently_in_except_block
mp_exc_stackexc_stack[4];
machine_uint_t*volatileexc_sp=&exc_stack[0]-1;// stack grows up, exc_sp points to top of stack
mp_exc_stack*volatileexc_sp=&exc_stack[0]-1;// stack grows up, exc_sp points to top of stack
constbyte*volatilesave_ip=ip;// this is so we can access ip in the exception handler without making ip volatile (which means the compiler can't keep it in a register in the main loop)
constbyte*volatilesave_ip=ip;// this is so we can access ip in the exception handler without making ip volatile (which means the compiler can't keep it in a register in the main loop)