Validate maximum difference between two angles
In this example code, we will validate that angle A does not exceed angle B by 512 units. If it does, RETURN is set to 1. It assumes temp, temp2 and temp3 variables are declared. The tricky part in this comparison is that angles wrap back around to 0 when reaching 2048, this must be taken into account when comparing angle difference.
var MAX_ANGLE_DIFF 0 2 var ANGLE_A 0 2 var ANGLE_B defstate check_max_angle_diff set temp2 ANGLE_B sub temp2 MAX_ANGLE_DIFF set temp3 ANGLE_B add temp3 MAX_ANGLE_DIFF ifl temp2 0 add temp2 2048 ifge temp3 2048 sub temp3 2048 set temp 0 set RETURN 0 ifl temp3 temp2 { // we wrapped around the 0/2048 line, either case is enough ifl ANGLE_A temp3 set temp 1 else ifg ANGLE_A temp2 set temp 1 } else { // we didn't wrap around so needs to be inbetween [temp2-temp3] ifge ANGLE_A temp2 ifle ANGLE_A temp3 set temp 1 } ife temp 1 set RETURN 0 else set RETURN 1 ends