; > PrivDoc.MMPM Still to do on memory management, as of 26-May-93: ; Must be TMD + Make SoftCAMMap variable size + Finish routine to allocate backing L2 for an area + Write routine to allocate logical addresses for areas + Write routine to check for overlapping areas + Complete Create dynamic area routine (done apart from final OS_ChangeDynamicArea to get required size) + Write Remove dynamic area routine (done apart from initial OS_ChangeDynamicArea to shrink to zero size) + Write Return info on dynamic area routine + Write Enumerate dynamic areas routine + Write Renumber dynamic areas routine + Change OS_ReadDynamicArea to use new list + Change OS_ValidateAddress to use new list + Put in new error messages properly * If CreateArea fails to grow area to required size, it should kill area and return error * Change ChangeDynamicArea code to use lists: + Check enough is working for Wimp_ClaimFreeMemory to use OS_DynamicArea(create) * Check PreShrink and PostShrink work completely OK * Check PreGrow and PostGrow work (apart from passing in page blocks) * Migrate existing areas to new world: * Update InitDynamicAreas initially to fake up a node for the RMA, and check it works * Use DynamicArea_Create to create RMA from scratch (if feasible) * Update InitDynamicAreas to fake up a node for the system heap + check it (no way of using create routine) * Change OS_ReadRAMFsLimits to use OS_ReadDynamicArea * Write RAMFS area handlers * Create RAMFS dynamic area using DynamicArea_Create, + check it works * Do similar for font cache, sprite area * Put in code to split grow block into chunks, and create page blocks (without checking for updates from PreGrow) * Put in checks for PreGrow requesting particular pages, and call alternative code: * Do the double shuffle * Issue Service_PagesUnsafe/Safe * Stop it getting the static pages (esp. cursor/sound page, L1 and maybe L2) * Put in extra code to cope with doubly-mapped areas * Write area handlers for screen, and move it to new world * Change size of application space to 24M (check all refs to 16M in whole image) * Put in indirections for hardware vector poking * Change FPE to use indirections (KWelton) * Move RMA to &02100000, and change size of app space to 28M * Conversion to do late aborts ; Could be done by ANOther * OS_Memory: a) conversion bits b) read phys.memory arrangement c) read amounts of various sorts of memory d) read controller addresses