## Introduction

The `f`

register consists of eight (semi-)independent bits which give you information about previous instructions' results. Not all instructions set all (or any) bits - see their individual documentation for more information.

## Bit 7: Sign (s)

`1`

if the result is negative (in two's complement representation), `0`

otherwise. In other words, it's a copy of bit 7 (the high bit) of the result.

## Bit 6: Zero (z)

`1`

if the result is zero, `0`

otherwise.

## Bit 5: Copy of bit 5 (5)

Simply a copy of bit 5 of the result, it's not very useful.

## Bit 4: Half-carry (h)

Set if there's been a carry between bit 3 and bit 4 of the result. It's used by the `daa`

instruction and isn't useful for much else.

## Bit 3: Copy of bit 3 (3)

Simply a copy of bit 3 of the result, it's not very useful.

## Bit 2: Parity/overflow (p/v)

It's either the parity of the result (`1`

if there is an even number of 1s in the binary representation of the result, `0`

if odd); or it's the two's complement overflow (`1`

if the operation caused the result to go past the -128/+127 limit, `0`

otherwise).

## Bit 1: Subtract (n)

`1`

if the last `daa`

-compatible instruction was a subtraction, `0`

if it was an addition. It's used by the `daa`

instruction and isn't useful for much else.

## Bit 0: Carry (c)

`1`

if there was a carry into or out of the high bit of the result; in other words, if the operation caused the number to go past the 0/255 boundary.