Page Last Altered:

**Submitted by Steve Fewell**

**Routine**: Asign

**Name**: Return the sign of the number in the FWA

**Starting Address**: &A3F2

**Entry criteria**: None

**Exit**: A = 0 if the FWA contains zero, A =
1 if the FWA contains a positive number, A = -1 if the FWA contains a negative
number.

**Description**:

Load A with FWA Mantissa Byte 1, OR this value with the other Mantissa bytes
(byte 2 to byte 5), If the result is zero, then the whole of the FWA Mantissa is
zero, this signifies that the number in the FWA is zero, if this is so, then
store zero in the FWA Sign, FWA Exponent and FWA overflow bytes and return with
A = 0.

Otherwise, Load A with the FWA Sign Byte, if it isn't zero, then the FWA is negative, and the top bit of the sign byte must be set. So exit with A containing the sign byte (-1).

Otherwise, increment A (to get a result of 1) and return.

**Disassembly for the Floating-point Sign routine**

A3F2 | 1 | 165 049 | A5 31 | LDA &31 |

A3F4 | 2 | 005 050 | 05 32 | ORA &32 |

A3F6 | 3 | 005 051 | 05 33 | ORA &33 |

A3F8 | 4 | 005 052 | 05 34 | ORA &34 |

A3FA | 5 | 005 053 | 05 35 | ORA &35 |

A3FC | 240 006 | F0 06 | BEQ 6 --> &A404 | |

A3FE | . | 165 046 | A5 2E | LDA &2E |

A400 | 208 008 | D0 08 | BNE 8 --> &A40A | |

A402 | 026 | 1A | INC A | |

A403 | ` | 096 | 60 | RTS |

A404 | d. | 100 046 | 64 2E | STZ &2E |

A406 | d0 | 100 048 | 64 30 | STZ &30 |

A408 | d/ | 100 047 | 64 2F | STZ &2F |

A40A | ` | 096 | 60 | RTS |