Submitted by Steve Fewell
Routine: icompFWA
Name: Test and Complement Integer in FWA
Starting Address: &82C4
Entry criteria: The FWA contains an
Integer number.
Exit: The Integer Number in the FWA has been
complemented (FWA =
zero - FWA)
Description:
Complements an Integer stored in the Floating-Point A Mantissa (which is
stored the opposite way to Integers, that is: most significant byte first and
least significant byte last; whereas Integers are stored least significant byte
first, most significant byte last [as twos complement is used]).
If the FWA Sign Bit is positive, then no compliment is required (as we already
have a positive Integer), so exit.
[82C8] As the FWA Sign Bit is negative (i.e. &FF), we need to complement the Integer, by subtracting each of the bytes (?&34 -> ?&31) from zero, using the carry flag to keep track of any borrows.
Disassembly for the Test and Compliment Integer in FWA routine
82C4 | . | 165 046 | A5 2E | LDA &2E |
82C6 | 016 023 | 10 17 | BPL 23 --> &82DF | |
82C8 | 8 | 056 | 38 | SEC |
82C9 | 160 000 | A0 00 | LDY#&00 | |
82CB | 152 | 98 | TYA | |
82CC | 4 | 229 052 | E5 34 | SBC &34 |
82CE | 4 | 133 052 | 85 34 | STA &34 |
82D0 | 152 | 98 | TYA | |
82D1 | 3 | 229 051 | E5 33 | SBC &33 |
82D3 | 3 | 133 051 | 85 33 | STA &33 |
82D5 | 152 | 98 | TYA | |
82D6 | 2 | 229 050 | E5 32 | SBC &32 |
82D8 | 2 | 133 050 | 85 32 | STA &32 |
82DA | 152 | 98 | TYA | |
82DB | 1 | 229 049 | E5 31 | SBC &31 |
82DD | 1 | 133 049 | 85 31 | STA &31 |
82DF | ` | 096 | 60 | RTS |