FreeCalypso > hg > fc-magnetite
annotate src/ui3/bmi/mmiBlkResources.c @ 572:074e24776948
helpers/build-date.c: added support for target name in version string
| author | Mychaela Falconia <falcon@freecalypso.org> | 
|---|---|
| date | Sun, 13 Jan 2019 04:12:42 +0000 | 
| parents | 6a4d9f47793e | 
| children | 
| rev | line source | 
|---|---|
| 420 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1 /******************************************************************************* | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 2 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 3 CONDAT (UK) | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 4 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 5 ******************************************************************************** | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 6 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 7 This software product is the property of Condat (UK) Ltd and may not be | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 8 disclosed to any third party without the express permission of the owner. | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 9 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 10 ******************************************************************************** | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 11 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 12 $Project name: Basic MMI | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 13 $Project code: BMI (6349) | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 14 $Module: PhoneBook | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 15 $File: MmiBlkResources.c | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 16 $Revision: 1.0 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 17 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 18 $Author: Condat(UK) | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 19 $Date: 25/10/00 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 20 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 21 ******************************************************************************** | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 22 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 23 Description: | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 24 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 25 This modules provides, in conjunction with the MmiBlkManager module, | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 26 the resource management facilities for the MMI. | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 27 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 28 ******************************************************************************** | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 29 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 30 $History: MmiBlkResources.c | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 31 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 32 25/10/00 Original Condat(UK) BMI version. | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 33 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 34 $End | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 35 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 36 *******************************************************************************/ | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 37 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 38 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 39 /******************************************************************************* | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 40 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 41 Include Files | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 42 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 43 *******************************************************************************/ | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 44 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 45 #define ENTITY_MFW | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 46 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 47 /* includes */ | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 48 #include <string.h> | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 49 #include <stdio.h> | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 50 #include <stdlib.h> | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 51 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 52 #if defined (NEW_FRAME) | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 53 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 54 #include "typedefs.h" | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 55 #include "vsi.h" | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 56 #include "pei.h" | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 57 #include "custom.h" | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 58 #include "gsm.h" | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 59 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 60 #else | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 61 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 62 #include "STDDEFS.H" | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 63 #include "custom.h" | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 64 #include "gsm.h" | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 65 #include "vsi.h" | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 66 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 67 #endif | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 68 // #include <malloc.h> | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 69 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 70 #include "MmiBlkResources.h" | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 71 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 72 /******************************************************************************* | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 73 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 74 Local Structures | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 75 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 76 *******************************************************************************/ | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 77 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 78 /* Define the control structures used to implement the block resource | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 79 manager | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 80 */ | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 81 #define RESOURCE_MANAGER_KEY 0x00BABE02L | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 82 #define RESOURCE_SEARCH_LIMIT 4 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 83 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 84 typedef struct _tBlkEntry_ | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 85 { | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 86 tBlkId BlkId; | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 87 tBlkHandle BlkHandle; | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 88 } tBlkEntry, *pBlkEntry; | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 89 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 90 typedef struct _tBlkControl_ | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 91 { | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 92 long int BlkKey; | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 93 tBlkHandle BlkBase; | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 94 int BlkLength; | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 95 pBlkEntry BlkStartPtr; | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 96 tBlkHandle BlkMinAddress; | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 97 tBlkHandle BlkMaxAddress; | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 98 } tBlkControl, *pBlkControl; | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 99 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 100 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 101 /******************************************************************************* | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 102 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 103 Private Routines | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 104 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 105 *******************************************************************************/ | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 106 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 107 /******************************************************************************* | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 108 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 109 $Function: ValidBlockResource | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 110 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 111 $Description: Verifies that the resource indicated by the handle is a valid | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 112 resource. | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 113 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 114 $Returns: 0 If invalid, non-zero if valid. | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 115 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 116 $Arguments: BlkRsrc, handle of resource | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 117 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 118 *******************************************************************************/ | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 119 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 120 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 121 static int ValidBlockResource( tBlkHandle BlkRsrc ) | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 122 { | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 123 pBlkControl BlkControl = (pBlkControl) BlkRsrc; | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 124 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 125 /* Check for non-NULL handle | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 126 */ | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 127 if ( BlkControl == NULL ) | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 128 return 0; | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 129 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 130 /* Check key has been set up correctly | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 131 */ | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 132 return ( BlkControl->BlkKey == RESOURCE_MANAGER_KEY ); | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 133 } | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 134 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 135 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 136 /******************************************************************************* | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 137 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 138 Public Routines | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 139 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 140 *******************************************************************************/ | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 141 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 142 /******************************************************************************* | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 143 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 144 $Function: mmibr_Initialise | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 145 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 146 $Description: | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 147 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 148 The initialisation routine must be called as part of the startup | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 149 phase of the system, it will allocate working space for the block | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 150 handler if required, and will initialise any structures required | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 151 to maintain the corect operation of the functions. This routine | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 152 must be called prior to invocation of any other block resource | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 153 function | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 154 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 155 $Returns: Handle to a resource block, NULL if unsuccessful | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 156 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 157 $Arguments: BlkBase, Base address of the block of data relating | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 158 to the resource | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 159 NumEntries, number of entries associated with the resource | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 160 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 161 *******************************************************************************/ | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 162 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 163 tBlkHandle mmibr_Initialise( tBlkHandle BlkBase, int NumEntries ) | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 164 { | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 165 pBlkControl Blk; | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 166 int i; | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 167 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 168 /* As part of the initialisation process, we need to allocate a | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 169 block of memory in which to store the control information | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 170 associated with this block resource manager | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 171 */ | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 172 if ( ( Blk = (pBlkControl) ALLOC_MEMORY( sizeof(tBlkControl) ) ) != NULL ) | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 173 { | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 174 /* Store the things we know straight off | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 175 */ | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 176 Blk->BlkKey = RESOURCE_MANAGER_KEY; | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 177 Blk->BlkBase = BlkBase; | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 178 Blk->BlkLength = NumEntries; | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 179 Blk->BlkStartPtr = (pBlkEntry) BlkBase; | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 180 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 181 /* In order to detect memory allocations, we scan the list | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 182 of known entries, storing the maximum and minimum addresses | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 183 in the list. This scan allows us to detect when allocated | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 184 memory is being returned, since the address will be outside | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 185 the contiguous memory block we are managing. | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 186 */ | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 187 Blk->BlkMinAddress = Blk->BlkMaxAddress = BlkBase; | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 188 for ( i = 0; i < NumEntries; i++ ) | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 189 { | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 190 if ( Blk->BlkMaxAddress < Blk->BlkStartPtr[i].BlkHandle ) | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 191 Blk->BlkMaxAddress = Blk->BlkStartPtr[i].BlkHandle; | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 192 } | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 193 } | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 194 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 195 return Blk; | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 196 } | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 197 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 198 /******************************************************************************* | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 199 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 200 $Function: mmibr_ShutDown | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 201 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 202 $Description: | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 203 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 204 The shutdown function can be called to free any allocations set up | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 205 by the Initialise routine. In a running system this is unlikely to | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 206 be called unless a catastrophic error has occurred and the system | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 207 needs to be restarted. | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 208 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 209 $Returns: none. | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 210 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 211 $Arguments: Pointer to a block resource handle (ie ptr to ptr) | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 212 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 213 *******************************************************************************/ | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 214 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 215 void mmibr_ShutDown( tBlkHandle *BlkRsrc ) | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 216 { | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 217 /* Only allow the resource manager to be shutdown if the provided | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 218 handle is consistent | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 219 */ | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 220 if ( ValidBlockResource( *BlkRsrc ) ) | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 221 { | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 222 free( *BlkRsrc ); | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 223 *BlkRsrc = NULL; | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 224 } | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 225 } | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 226 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 227 /******************************************************************************* | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 228 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 229 $Function: mmibr_Fetch | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 230 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 231 $Description: | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 232 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 233 We will adopt a mechanism where each block of data being provided | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 234 will need to be returned to the block resource manager when it | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 235 is no longer being used, this will provide an orthogonal approach | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 236 when dealing with data coming from either ROM or dynamically | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 237 allocated memory. | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 238 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 239 $Returns: pointer to resource, NULL if unsuccessful | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 240 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 241 $Arguments: BlkRsrc, resource handle created by mmibr_Initialise | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 242 Id, identifier of the resource to be returned | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 243 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 244 *******************************************************************************/ | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 245 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 246 tBlkHandle mmibr_Fetch( tBlkHandle BlkRsrc, tBlkId Id ) | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 247 { | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 248 int Start, End, Search; | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 249 tBlkId CurrentId; | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 250 tBlkHandle SearchPtr; | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 251 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 252 /* convert the handle and verify it's valid | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 253 */ | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 254 pBlkControl BlkControl = (pBlkControl) BlkRsrc; | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 255 if ( ! ValidBlockResource( BlkRsrc ) ) | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 256 return NULL; | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 257 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 258 /* When locating a specific entry, we need to search the list of | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 259 ids for one matching the input value. Since the Ids will be | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 260 organised as an ordered list, very important that bit, we can | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 261 perform a simple binary search to locate the items. | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 262 */ | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 263 Start = 0; | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 264 End = BlkControl->BlkLength - 1; | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 265 SearchPtr = NULL; | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 266 do | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 267 { | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 268 /* grab the entry midway between the current start and end | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 269 */ | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 270 Search = Start + ((End - Start) >> 1); | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 271 CurrentId = BlkControl->BlkStartPtr[Search].BlkId; | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 272 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 273 /* Binary chop the search space | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 274 */ | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 275 if ( CurrentId == Id ) | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 276 { | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 277 /* Found a match, grab handle and terminate search | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 278 */ | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 279 SearchPtr = BlkControl->BlkStartPtr[Search].BlkHandle; | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 280 Start = End; | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 281 } | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 282 else if ( CurrentId > Id ) | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 283 { | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 284 /* Not got a match, but it's not in the top half so move | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 285 the End pointer down | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 286 */ | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 287 End = Search; | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 288 } | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 289 else | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 290 { | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 291 /* Not got a match, but it's not in the bottom half so | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 292 move the Start pointer up | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 293 */ | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 294 Start = Search; | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 295 } | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 296 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 297 /* when we get down to the last three or four entries, just | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 298 search linearly to solve it, this is generally quicker for | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 299 a small number of entries than continuing the binary chop | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 300 */ | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 301 if ( ( End - Start ) < RESOURCE_SEARCH_LIMIT ) | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 302 { | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 303 /* search quickly through the possibles | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 304 */ | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 305 for ( Search = Start; Search <= End; Search++ ) | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 306 if ( Id == BlkControl->BlkStartPtr[Search].BlkId ) | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 307 SearchPtr = BlkControl->BlkStartPtr[Search].BlkHandle; | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 308 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 309 /* And terminate the binary chop | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 310 */ | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 311 Start = End; | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 312 } | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 313 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 314 } while ( Start != End ); | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 315 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 316 return SearchPtr; | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 317 } | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 318 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 319 /******************************************************************************* | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 320 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 321 End of File | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 322 | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 323 *******************************************************************************/ | 
| 
e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 324 | 
