Dynamic Areas



Fixed page dynamic areas

Fixed page dynamic areas are an extension of the 'Needs specific pages' flag (bit 19) on OS_DynamicArea 0 (Create). For certain applications it is necessary to directly access hardware or certain given page numbers. Where this is the case and no system-provided mapping is available it is possible to create a dynamic area which can be used to access the pages by supplying a Dynamic Area Handler routine. However, for the vast majority of cases the routine will specify a fixed set of pages for the dynamic area to grow into. This is where the 'Needs Fixed Pages' flag is useful.

Instead of providing a dynamic area handler routine the list of pages which are required for the dynamic area can be supplied as the workspace parameter on dynamic area creation, together with the 'Needs Fixed Pages' flag. The list of pages takes the same form as that used by the Dynamic Area Handler routines :

      +0   page number (only when the 'Physical Mapping' flag is unset)
      +4   logical address (ignored)
      +8   physical address (only when the 'Physical Mapping' flag is set)

Fixed page dynamic areas will always occupy the maximum extent of the dynamic area and sufficient pages should be provided within the workspace parameter to create the dynamic area. The page block is not required after the dynamic area has been created. Fixed page dynamic areas may not be :

  • Abortable
  • Heap
  • Sparse
  • Shrinkable

It is recommended that they be locked and 'not user draggable' if clients do not wish the areas to be resized by user operations.

This documentation is copyright 3QD Developments Ltd 2013 and may not be reproduced or published in any form without the copyright holders permission. RISC OS is subject to continuous development and improvement as such all information is reproduced by 3QD Developments Ltd in good faith and is believed to be correct at the time of publication E&OE. 3QD Developments Ltd cannot accept any liability for any loss or damage arising from the use of any information provided as part of the RISC OS Documentation.

HTML document version 1.03 3rd November 2015