XL220OL
4.8.1
4/11/2017
SCN: 3044 — XL2; Re-Enable Floating Point Divide by Zero Task Error

The XL operating system contains the floating point divide function. Within the floating point divide function, for an unexplained reason, someone removed(commented out) the divide by zero error. Instead of being informed of the divide by zero attempt, the code returned the largest possible Fp value. This is bad practice and just delays and possibly amplifies the damage that the divide by zero can cause.

The test has been re-enabled.

Subsequent testing of code written around the same time revealed some divide by zero errors. This change must be released in conjunction with some other changes to the XL2 application.

SCN: 3154 — XL2; 0x800102FF task error on power-up after memory clear on Continuous Press Controller

The 0xx800102FF task error is generated when the controller detects that the free memory chain of the heap is corrupted.

The heap is managed and used by the operating system to allocate memory for display objects and internal operating system needs.

The operating system had bugs in the code that created and deleted OS objects like tasks, counters, mail boxes, ring buffers, semaphores and resources. These OS calls all use heap memory and did not have all of the correct protection mechanisms in place to protect critical sections of the heap manager code.

Once the objects were created, protections were in place to protect these objects when they needed to make use of additional heap memory.

This problem exhibited itself during powerup when most OS objects are created but it could happen at any time. It also happened very repeatable on a Continuous Press Controller. However it only happened due to the happenstance of the timing involved in how the controller power cycles after a memory clear. It could have happened on any controller.