for my FF1 disassembly (ca65), I rigged up some macros so it would throw an error if a block of code crossed a page boundary.
*digs up code*
Code:
@Loop:
DEY ; +2
BNE @Loop ; +3 (5 cycle loop * 16 iterations = 80-1 = 79 cycles for loop)
CRITPAGECHECK @Loop ; ensure above loop does not cross page boundary
Code:
; for critical page checks (absolutely should not cross page boundary)
.macro CRITPAGECHECK lbl
.assert >* = >lbl, error, "Critical timing loop crosses page boundary"
.endmacro
'*' in the macro is the current address. Basically the code checks the high byte of the current address and the high byte of the 'lbl' argument and sees if they match, and throws an error if they don't.
I don't know if ASM6 has something similar. If not, it would be a nice addition.