ARM Workshop: A Contracting Heap Manager
by Christopher Willmot

This program demonstrates the use of a contracting heap manager. When run, the program assembles the code for the heap manager, and then repeatedly displays a menu allowing the heap to be manipulated. The options are:

 Fetch: Claims a block of memory from the heap, and returns its base address. The base address is required in order to extend or release the block, or to find out its size.
 Return: Returns a block of memory to the heap.
 Extend: Increases the size of a heap block. The block may be moved as a result.
 Memory: Displays the start of the heap block using *Memory.
 Heap info: Displays the size of the heap and of the largest free block within it.
 Block info: Displays the size of a given heap block.
 Quit: Terminates the program.

All addresses and sizes are given in hexadecimal.
