|
1 |
|
2 Version 1.02.371 |
|
3 ================ |
|
4 (Made by Dennis 04/04/2002) |
|
5 |
|
6 1) TimBa |
|
7 1) Fix for BAD-58CDM4: Locale change has no effect on contact filtering. |
|
8 2) ChrisM |
|
9 1) Fix for MOS-58EJ8V (Integrator calibration doesn't work properly) |
|
10 Removed the "patches" from the Y coordinate digitizertoscreen calculation and |
|
11 changed the Y calibration constants to work with this. |
|
12 2) Fix for CAR-57RETM (WINSCW UDEB Emulator crashes when launched in console mode) |
|
13 3) Fix for TAR-58LEUV (Emulator title - variant indication) CR ref MTAR-58LDG2 |
|
14 4) Fix for SHY-58GGR5 (Test case that leads to unhandled exception |
|
15 in DThread::GetDesMaxLength) |
|
16 |
|
17 3) Nicolas |
|
18 1) Fixed defect THY-588MLT (Integrator board with ARM926 |
|
19 core module does not boot). The ARM920 clock setting |
|
20 code can not be reused as-is for ARM926. Modified |
|
21 bootstrap to figure out which core is being used and |
|
22 branch to the appropriate code. A software reset is |
|
23 necessary halfway through the ARM926 clock |
|
24 configuration. See comments in HwInitialise for more |
|
25 details. For ARM926, the clocks are set to: |
|
26 CPU: 125mhz |
|
27 system bus: 25mhz |
|
28 local bus: 31.25mhz (CPU clock / 4) |
|
29 4) AndrewJ |
|
30 1) Fixed defect JON-58DHHP where Assabet lffs media driver has an error in |
|
31 suspend resume operation. |
|
32 5) MarkCa |
|
33 1) Fixed CAN-58GG5E (MEDMMC is not leave-safe.) Used non-leaving new in |
|
34 D_MEDMMC.CPP. |
|
35 |
|
36 6) PeteS |
|
37 1) Added Lubbock Base port. |
|
38 |
|
39 Version 1.02.370 |
|
40 ================ |
|
41 (Made by CarlosF, 12/03/2002) |
|
42 |
|
43 1) JonathanM |
|
44 1) Fix for defect MET-57ZHTH - "TDblQueBase has incorrect copy constructor |
|
45 and operator =" |
|
46 |
|
47 2) Nicolas |
|
48 1) Fixed defect MET-57YN7A (Power Sequence at EmergencyStandby). |
|
49 Migrated 6.1 fix: In DPowerModel::PowerEmergencyStandbyDfc(), |
|
50 PowerEmergencyStandby() is now called for all power handlers |
|
51 *before* switching off the machine. |
|
52 2) Fixed defect MET-57YMU7 (Template Port requires 'EARLY |
|
53 DEBUG' examples in the template code). |
|
54 3) Modified template port to use the same UART API as |
|
55 recent ports, e.g. Uart1Data() and Uart2Data() |
|
56 replaced with UartData(TUint32 aUartBase). |
|
57 4) Fixed defect THY-585N22 (OOM during process creation |
|
58 can crash the kernel). Now uses HBufC::New() instead |
|
59 of NewL() in svProcessCreate() to allocate the |
|
60 command-line buffer. |
|
61 |
|
62 3) Markdo |
|
63 1) Fixed defect DON-585LNV "Media door open does not work on WINS with |
|
64 Mmc card controller". Removed call from PcCard Controller to set up a |
|
65 media change callback in WINS. Only MmcCard Controller sets this callback |
|
66 now. |
|
67 |
|
68 4) ChrisM |
|
69 1) Fixed defect MOS-586BWV (integrator had digitizer and mouse driver loaded |
|
70 in e32 text shell roms). Removed mouse driver from rom. |
|
71 2) Fixed defect MOS-55DJN4 (New integrator video driver should use constants |
|
72 rather than magic numbers) |
|
73 3) Tidied up integrator digitizer calibration. |
|
74 4) Fixed defect OMC-586LJF assabet rom size |
|
75 5) Fixed defect OMC-586K5Z mainline warnings |
|
76 |
|
77 5) Pete |
|
78 1) Change to the WINS local drive mappings. |
|
79 The entire local drive mapping for WINS is now as follows:- |
|
80 Local drive 0: Internal RAM drive (EFixedMedia0) - Y: |
|
81 Local drive 1: MMC Card on MMC socket 0 (ERemovableMedia0) - X: |
|
82 Local drive 2: MMC Card on MMC socket 1 - Partition1 (ERemovableMedia1) |
|
83 Local drive 3: MMC Card on MMC socket 1 - Partition2 (ERemovableMedia1) |
|
84 Local drive 4: PC Card on PC Card socket 0 (ERemovableMedia2) |
|
85 Local drive 5: PC Card on PC Card socket 1 (ERemovableMedia3) |
|
86 Local drive 6: Not currently assigned |
|
87 Local drive 7: Not currently assigned |
|
88 Local drive 8: Internal LFFS drive (EFixedMedia1) - W: |
|
89 2) Implemented CR PHAR-54RJMT 'We should be able to simulate password |
|
90 protected disks on the emulator'. |
|
91 1) The method of mapping drive letter to local drive number on the WINS |
|
92 emulator has been changed from being a fixed mapping, to one that uses |
|
93 enviroment variables to specify the mapping. When the system starts up |
|
94 it sets environment variables to reconstuct the same mapping as before: |
|
95 Y:-LocDrv 0, X:-LocDrv 1, W:-LocDrv8. (This is done in SetupEmulatorPaths() |
|
96 in \e32\euser\emul\win32\up_path.cpp). However, these default mappings can |
|
97 overidden or new mappings created in EPOC.INI using the following syntax: |
|
98 |
|
99 _EPOC_LocDrv_<locDrvNum> <drvLetter>: <FileSystemID string> |
|
100 |
|
101 The FileSystem ID indicates which file system should be mounted on the |
|
102 local drive in question. The following file system IDs are defined: |
|
103 'Fat' and 'Lffs'. |
|
104 For example, to map X: to local drive 1 specifying the FAT file system: |
|
105 '_EPOC_LocDrv_1 X: Fat' |
|
106 The file system ID is read by the text shell as it starts up and mounts the |
|
107 appropriate file system on any local drive that it finds a mapping for. |
|
108 2) A start-up media password can now be assigned to any MMC card - again |
|
109 using environment variables to store the password. Passwords are set in |
|
110 EPOC.INI using the syntax: |
|
111 |
|
112 EPOC_LocDrv_<locDrvNum>_PWord_<cardNum> <password> |
|
113 |
|
114 'locDrvNum' is the number of the local drive and 'cardNum' is the number of |
|
115 the MMC card on that drive. The latter is only relevant on local drive 1 where |
|
116 two virtual MMC cards are emulated (with the user hot swapping between cards |
|
117 by hitting F4 while F5 is down). For example, to set Card0 on local drive 1: |
|
118 'EPOC_LocDrv_1_PWord_0 aaa1' |
|
119 |
|
120 3) The start-up state of the MMC card in local drive 1 can be configured to be |
|
121 any one of the following: No MMC card, MMC Card0 or MMC Card1. The user |
|
122 subsequently toggles between each of these states each time they hit the F4 key |
|
123 while F5 is down. The start-up state is set in EPOC.INI using the syntax: |
|
124 |
|
125 _EPOC_Active_LocDrv_1 <StartUpState> |
|
126 |
|
127 'StartUpState' can be one of the following values: -1 - card present, |
|
128 0 - MMC Card0, 1 - MMC Card1. For example, to set the start up state to MMC Card1: |
|
129 'EPOC_Active_LocDrv_1 1' |
|
130 |
|
131 6) MarkCa |
|
132 1) Removed SD specific parts of MMC controller. EPBUSM no longer built for MEIG. |
|
133 |
|
134 7) TimBa |
|
135 1) Fix for COY-56DEYY: "MatchesPartial function uses undocumented |
|
136 feature of CompareC". TDesC16::HasPrefix function added. |
|
137 |
|
138 |
|
139 Version 1.02.369 |
|
140 ================ |
|
141 (Made by ChrisM, 06/03/2002) |
|
142 |
|
143 0) ArunsakhS |
|
144 1) Fix for defect BAD-57HF3Y - "Locale persistence broken" |
|
145 A new HAL atrribute was added to TAttribute in Hal_data.h for the |
|
146 defect fix above. The new attribute is "ELocaleLoaded". |
|
147 Made the required changes to "config.hcf" and "values.hda" in HAL |
|
148 and all the reference platform components. Added the test for |
|
149 ELocaleLoaded in the test "T_newhal" in HAL. |
|
150 |
|
151 1) RobertJ |
|
152 1) Silenced some warnings in: |
|
153 \e32\drivers\medmmc\epoc\d_medmmc.cpp |
|
154 \e32\drivers\medmmc\epoc\d_medsdp.cpp |
|
155 2) Correction of comms header file to correct KCapsBpsxxxx constants |
|
156 \e32\include\d32comm.h |
|
157 JAN-57WL3N "Comm port capability constants same, missing" |
|
158 (was SAS-554K4P in GT6.1) |
|
159 3) Fixed JAN-57WL8G "Possible access violations in e32 drivers under OOM?" |
|
160 was HAR-56DPLW in GT6.1 |
|
161 \e32\drivers\dfir\d_fir.cpp |
|
162 \e32\drivers\ecomm\d_comm.cpp |
|
163 \e32\drivers\ecommdce\epoc\d_commdce.cpp |
|
164 |
|
165 2) CarlosF |
|
166 1) Fixed defect MOS-579LUN powering down digitiser causes machine to hang |
|
167 when screen is tapped. |
|
168 2) Changes to Serial Port: the existing power-down timeout after finishing |
|
169 transmitting has been made configurable through the introduction of a new |
|
170 member to the comms config structure (this is now TCommConfigV02). |
|
171 Changes to d_comm.cpp (ARM and WIN32 emulator) to support this. Also when |
|
172 it powers down as a consequence of having timed out it now completes the |
|
173 requests with KErrTimedOut instead of KErrAbort. |
|
174 3) Further changes to the digitiser extension on Assabet and Brutus in order to |
|
175 fix problems with Silent Running. |
|
176 4) Fixed defect THE-57LHGD Unable to use the Profiler tool on Assabet. |
|
177 |
|
178 3) MichaelP |
|
179 1) Added data member access function TInt BytesToBeTransfered() to class |
|
180 THwaDataTfReq (k32hwa.[h|inl]). |
|
181 2) In T_HWA (\f32test\DEVICE\t_hwa.cpp) changed test of "HWA device specific |
|
182 function (2)": the address that is now used lies within the DSP bridge |
|
183 shared memory area. |
|
184 3) Fixed address and size of reserved RAM area in \Helen\Bootstrap\Helen.s. |
|
185 |
|
186 4) MarkCa |
|
187 1) Fixed CAN-579MLN MultiMediaCard controller does not pre-check current |
|
188 password. |
|
189 |
|
190 5) Nicolas |
|
191 1) Fixed defect THY-57QNYA (incorrect default debug port |
|
192 on assabet). The default port is now UART3 |
|
193 everywhere. |
|
194 |
|
195 7) ChrisM |
|
196 1) Fix for DON-57RNLR (Screen is not switched on when coming back from digitiser |
|
197 power-down) |
|
198 2) Fix for defect PEN-57XBRV ("EPOC Emulator" should be replaced) |
|
199 Changed the emulator name from EPOC Emulator to Symbian OS Emulator by default. |
|
200 Name can be specified in epoc.ini with the keyword EmulatorName. |
|
201 |
|
202 |
|
203 Version 1.02.368 |
|
204 ================ |
|
205 (Made by RobertJ, 11/02/2002) |
|
206 |
|
207 1) ChrisM |
|
208 1) Fix for defect ROS-55CGCR - "EPOC.EXE logo fails to conform to Corporate ID guidelines" |
|
209 |
|
210 3) JonathanM |
|
211 1) Fix for defect MET-572N7U - "Destroying FixedContiguous TransferBuffers causes |
|
212 memory to be 'lost' to the free pool" |
|
213 |
|
214 4) Pete |
|
215 1) Further extended the local drive caps class (TLocalDriveCapsV3) |
|
216 by adding the following member:- |
|
217 TUint iExtraInfo; |
|
218 2) Modified the MMC Media driver to supply the above information as part of |
|
219 the Media Driver Caps() function. |
|
220 3) Fixed a defect where the 'iHiddenSectors' field in |
|
221 the disk caps. info was not being initialised if a default boot |
|
222 partition wasn't detected in the MBR. |
|
223 |
|
224 Version 1.02.367 |
|
225 ================ |
|
226 (Made by PeterS, 02/02/2002) |
|
227 |
|
228 1) RobertJ |
|
229 1) CR CLCT-55JENG. Modified \e32\include\d32usbc.h & \e32\include\d32usbc.inl |
|
230 argument TInt& aLen for RDevUsbcClient::Write and |
|
231 RDevUsbcClient::WriteEndpointZero changed to TInt aLen |
|
232 |
|
233 2) JonathanM |
|
234 1) Fix for defect FID-563G8A - "TPckgBuf cannot return a const reference" |
|
235 2) Fix for defect PAR-56MGEB - "Generic EDISP driver lives in the wrong place." |
|
236 3) Removed last vestiges of Cogent from E32 |
|
237 4) Fix for defect THY-4XPH4C - "T_CURRENCYFORMAT fails from time to time" |
|
238 5) Fix for defect MET-56UJ35 - "Unhandled Leave in Kernel Server" |
|
239 6) Fix for defect MET-56VJY6 - "Session creation can crash machine under OOM conditions" |
|
240 |
|
241 3) MarkCa |
|
242 1) Added caps buffer zeroing to MEDMMC and MEDLFS on MINT and MINK. |
|
243 |
|
244 4) Nicolas |
|
245 1) CR JPAR-54XMZD: ROM building and run time configuration of debug port |
|
246 - On selected targets the current debug port can be |
|
247 viewed and changed at run-time thanks to a new eshell |
|
248 command (debugport). See rombuild release notes for details |
|
249 about ROM building time configuration. |
|
250 - Debug port setting applies everywhere (i.e. bootstrap |
|
251 traces, early debug mode, non early debug mode (variant) |
|
252 and debug monitor) *but* run-time port switching is not |
|
253 supported in early debug mode as in this case the port |
|
254 initialisation is done by the bootstrap. |
|
255 - The bootstrap fetches the debug port from the ROM |
|
256 header and copy it to a new field in the the super page. |
|
257 - A new HAL attribute (EDebugPort) has been added and |
|
258 a default implementation based on userhal has been provided. |
|
259 - Assabet port modified. The accepted debug port |
|
260 values are 1 (UART1) and 3 (UART3). The default is 3. |
|
261 - Brutus port always uses UART3. |
|
262 - Integrator (MINT) port modified. The accepted debug |
|
263 port values are 0 (UART0), 1 (UART1) and 42 (JTAG DCC). The |
|
264 default is 0. |
|
265 - KHARDWAREASSIST flag removed. Ports supporting JTAG |
|
266 DCC output should use the new scheme. |
|
267 - Modified accordingly the template port |
|
268 2) Modified bootvariant.mke in MINT port so that a symbol |
|
269 file for bootromv1.bin is generated. |
|
270 3) Fixed long standing bug in MISA variants: BOOTMISA.LIB was |
|
271 not suffixed by a variant-specific identifier. This was |
|
272 not discovered before as the libraries were identical on |
|
273 assabet and brutus. The libraries are now called |
|
274 BOOTMISAAB.LIB and BOOTMISABA.LIB. |
|
275 4) "abld clean bootmisa" now removes symbol files for both |
|
276 assabet and brutus. |
|
277 |
|
278 5) ChrisM |
|
279 1) Euser source reorg for ipr categorisation CR GBON-567RCZ |
|
280 - created new directory base\e32\euser\utils |
|
281 - moved us_array.cpp, us_func.cpp, us_lex8.cpp, us_lex16.cpp, us_heap.cpp |
|
282 and us_que.cpp into the new dir which has a cat D ipr file. |
|
283 - created new file us_desx.cpp which contains all the exported constructors |
|
284 from us_des8.cpp and us_des16.cpp |
|
285 - created a new header file in utils which contains some inline funcs which |
|
286 are needed in us_desx.cpp and the old us_des8.cpp and us_des16.cpp files |
|
287 - + some panic numbers and a few other shared bits. |
|
288 - removed the exported constructors from us_des8.cpp and us_des16.cpp |
|
289 |
|
290 |
|
291 |
|
292 |
|
293 Version 1.02.366 |
|
294 ================ |
|
295 (Made by MarkCa, 15/01/2002) |
|
296 |
|
297 1) MarkCa |
|
298 1) Modified MEDMMC to support partial reads, write-through caching and |
|
299 multi-block writes. Multi-block writes are a compile-time option |
|
300 that is not compiled in by default. |
|
301 2) Removed packed struct optimization from PS_MMC.CPP. |
|
302 3) Changed debug print statements in D_MEDSDP.CPP so can distinguish |
|
303 from D_MEDMMC.CPP. |
|
304 4) Fixed FID-54YK2B (MEDMMC buffer not DMA-safe.) Pages of physically |
|
305 contiguous RAM are allocated by the EPBUS controller at bootup and |
|
306 the media driver uses a virtual function to find out where they are. |
|
307 Note this is a convenience for the principal EPBUS client, i.e., |
|
308 MEDMMC / MEDSDU. If other drivers want to be clients of EPBUS, they |
|
309 should still allocate their own internal buffers. |
|
310 5) Fixed MBR.H header file to use include guards and #include <e32std.h>. |
|
311 6) Fixed FID-54VENJ (MMC: Same debug trace used for different functions.) |
|
312 Changed debug text for DMMCStack::SchedGroundDown(). |
|
313 |
|
314 2) Peter |
|
315 1) Added support on MMC Card Controller for mechanical write protect switch. |
|
316 2) Extended the local drive caps class (now extended to TLocalDriveCapsV3) |
|
317 by adding two extra members:- |
|
318 TUint iMediaSubType; |
|
319 TInt64 iTotalDiskCapacity; |
|
320 3) Added support for multiple Peripheral Bus Controllers. |
|
321 For all platforms other than WINS, these are now loaded as kernel |
|
322 extensions which then register themselves with the kernel from |
|
323 the extension DLL entry-point. Each Controllers register once for |
|
324 each socket that it controls and the kernel supports up to |
|
325 KMaxPBusSockets(4) sockets (i.e. the system could support four different |
|
326 Controllers each managing a single socket, two different Controllers |
|
327 each managing a pair of sockets etc). The Peripheral Bus Controller |
|
328 DLLs have been renamed. All used to be build as EPBUS.DLL. Now PC Card |
|
329 Controllers are built as EPBUSP.DLL and MMC Controllers are built as |
|
330 EPBUSM.DLL. For non-WINS platforms, the kernel no longer links with the |
|
331 Peripheral Bus object and a platform can be configured with multiple |
|
332 Controllers, a single Controller or no Controllers simply by the inclusion |
|
333 (or non-inclusion) of the Controller extension DLL in the rom OBY file. The |
|
334 WINS and MEIG platforms now support dual Controllers, both a PC Card |
|
335 Controller and an MMC Controller. (Note, to achieve this in WINS, the kernel |
|
336 now links to EPBUSP.DLL and EPBUSM.DLL). Changes to support this include:- |
|
337 a) Added the function:- |
|
338 void Kern::RegisterPBusController(TPBusNum aMachineBusNum, |
|
339 DPeriphBusController* aController,TPBusNum aControllerBusNum) |
|
340 which should be called from the Controller extension DLL entry-point for |
|
341 each bus that the Controller manages in order to register that Controller |
|
342 for that bus. 'aControllerBus' is the number of the bus relative to that |
|
343 particular Controller as opposed to 'aMachineBus' which is the bus number |
|
344 relative to the entire machine (e.g. on a machine configured with two |
|
345 Controllers each managing two buses, then when the 2nd controller registers |
|
346 for it's 2nd bus, the machine bus number of this is 3, but the number relative |
|
347 to the 2nd Controller is 1). |
|
348 b) With there now being potentially multiple Controllers, |
|
349 the function to retrieve the pointer to the Controller now takes a bus |
|
350 number as a parameter and becomes:- |
|
351 DPeriphBusController* Kern::PBusController(TPBusNum aMachineBusNum) |
|
352 c) Added the function |
|
353 TPBusNum Kern::PBusControllerBusNum(TPBusNum aMachineBusNum) |
|
354 which returns the bus number relative to its owning Controller for a given |
|
355 machine bus number. |
|
356 d) The kernel now keeps a count of Controller registered. This means the |
|
357 platform specific HAL function ImpHal::TotalSupportedBuses() is now |
|
358 redundant and has been removed. |
|
359 e) Modified the extension DLL entry-point function for the generic |
|
360 Peripheral Bus Controller to allocate the Controller object and perform |
|
361 secondary initialisation before registering the Controller with the kernel. |
|
362 This makes the function P::InitialiseLocalDrives() redundant and it has |
|
363 therefore been removed. Also, the function DPeriphBusController::NewL() is |
|
364 no longer exported. (Still exported from WINS Controllers which aren't |
|
365 extensions and therefore still need to to initialised directly by the kernel). |
|
366 f) Removed the function DPeriphBusController::TotalSupportedDrives() and |
|
367 replaced this with a straight call to the variant of the same name: |
|
368 Custom::TotalSupportedDrives(). |
|
369 Following on from this, removed the data member iTotalSupportedDrives |
|
370 from the classes TPcCardMachineInfo and TMmcCardMachineInfo. |
|
371 g) Added the pure virtual function: |
|
372 TPBusNum DPeriphBusController::BaseBusNumber() |
|
373 to the generic Peripheral Bus Controller class which returns the |
|
374 machine bus number of the first bus under the control of this Peripheral |
|
375 bus Controller. Provided implementations of this in the DPcCardController |
|
376 and DMMCController classes. These read the required information from the |
|
377 corresponding TPcCardMachineInfo and TMmcCardMachineInfo classes. Added the |
|
378 corresponding data member iBaseBusNumber to each of these classes which |
|
379 is supplied from the variant. |
|
380 h) Constructors for TPBusCallBack made inline rather than being exported |
|
381 from the Peripheral Bus Controller so that the kernel no longer needs to |
|
382 link with EPBUS.LIB. |
|
383 i) Moved the function: |
|
384 DPBusMediaDriver::SetCurrentConsumptionInMilliAmps() |
|
385 to the Media Driver base class - DMediaDriver and removed the function |
|
386 DMediaDriver::DeltaCurrentConsumptionInMilliAmps() which was now redundant. |
|
387 Also added a destructor to the DMediaDriver class to reset the current |
|
388 consumption when the object is destroyed. This again required in order that |
|
389 the kernel need no longer link with EPBUS.LIB (as this needs to reset |
|
390 the media driver current consumption on a media change - with object |
|
391 destruction not occuring until the next mount). |
|
392 j) Change to the WINS local drive mappings to include emulation of PC Card |
|
393 drives as well as MMC drives. |
|
394 The entire local drive mapping for WINS is now as follows:- |
|
395 Local drive 0: Internal RAM drive (EFixedMedia0) - Y: |
|
396 Local drive 1: 1st special MMC Card on MMC socket 0 (ERemovableMedia0) - X: |
|
397 Local drive 2: 2nd special MMC Card on MMC socket 0 (ERemovableMedia0) - V: |
|
398 Local drive 3: MMC Card on MMC socket 1 (ERemovableMedia1) |
|
399 Local drive 4: PC Card on PC Card socket 0 (ERemovableMedia2) |
|
400 Local drive 5: PC Card on PC Card socket 1 (ERemovableMedia3) |
|
401 Local drive 6: Not currently assigned |
|
402 Local drive 7: Not currently assigned |
|
403 Local drive 8: Internal LFFS drive (EFixedMedia1) - W: |
|
404 k) For MEIG, MISA and MTEMPLATE platforms, the Peripheral Bus variant interface has |
|
405 been removed from the variant DLL and is instead built as a separate kernel extension - either |
|
406 as EPBUSPV.DLL for PC Card Controller variants or EPBUSMV.DLL for MMC Controller variants. |
|
407 For these platforms, registration of the Controller with the kernel takes place via a call |
|
408 from the Controller variant extension DLL entry point rather than from the Controller extension |
|
409 DLL entry point. For all other platforms, the Controller variant remains as part of the main |
|
410 variant DLL. These platforms therefore have no separate Controller variant DLL. |
|
411 As a result of this change, the Controller DLL entry |
|
412 point has been moved out of the generic layer of the Peripheral Bus |
|
413 Controller (PS_PBUS.CPP) into the ASSP layer. |
|
414 Splitting the Controller variant out of the main |
|
415 variant DLL is necesssary where there are multiple |
|
416 Peripheral Bus Controllers on a platform - otherwise the variant DLL has to contain |
|
417 multiple Controller variants. |
|
418 l) Deleted V32PCCD.H, and V32PCCDI which were being used as a general definition of the |
|
419 PC Card Controller variant interface for all platforms. Each peripheral bus ASSP layer |
|
420 should define its own variant interface as required for that impelementation. This |
|
421 should be defined in the header file \e32\epbus\epoc\<assp>\v32pccdv.h (or v32mmcv.h |
|
422 for MMC Controllers). Implemented this for all supported platforms. |
|
423 |
|
424 NOTE: The power model extension - EPOWER.DLL must be loaded before any Peripheral |
|
425 Bus Controller extensions - EPBUS?.DLL or EPBUS?V.DLL (i.e. in the OBY file, the |
|
426 lines that specify the inclusion of EPBUS??.DLL must occur after the line which |
|
427 specifies the inclusion of EPOWER.DLL). |
|
428 |
|
429 3) RobertJ |
|
430 1) Changed string descriptor text in pa_usbc.cpp to remove reference |
|
431 to EPOC and ER6.2 |
|
432 |
|
433 2) Removed function CopyMaxToClient in d_usbc.cpp, this was in effect a |
|
434 duplicate of CopyToClient. Code now uses CopyToClient in all cases. |
|
435 |
|
436 3) In usbdma.cpp & k32usbc.h changed interface to |
|
437 TDmaBuf::RxCopyPacketToClient & TDmaBuf::RxCopyDataToClient to take |
|
438 an explicit length argument. This removes the need to modify the |
|
439 TEndpointTransferInfo |
|
440 Modified d_usbc.cpp to reflect change in the calling interface to |
|
441 TDmaBuf::RxCopyPacketToClient & TDmaBuf::RxCopyDataToClient |
|
442 |
|
443 4) MichaelP |
|
444 1) Fixed compile time error in /e32/drivers/ehwa/d_hwa.cpp which only occurred |
|
445 when GETPUTDATA_ARE_KERNELSERVERCALLS had been #defined. |
|
446 2) Added parameter 'TInt aNumWindows' to functions DHwaTask::Init() and |
|
447 THwaTaskHwInterface::Init(), which are declared in k32hwa.h. |
|
448 3) Introduction of boolean flag iInUse to class THwaDataTfReq: used to identify |
|
449 transfer requests which are currently being processed by the PDD. |
|
450 4) HWA bogus PDDs: changed order of calls to DHwaTask::GetNextRequest to account |
|
451 for change no. 3). |
|
452 5) Moved HWA device state member iStatus from class DHwaDevice to class |
|
453 DHwaDevicePdd; maintaining its correct value is now up to the PDD. |
|
454 |
|
455 |
|
456 Version 1.02.365 |
|
457 ================ |
|
458 (Made by AndrewJ, 12/12/2001) |
|
459 |
|
460 1) Morgan |
|
461 1) Integrated DPassiveDebugger enhancements from \tools\debugger_stub\... |
|
462 into Helen variant: \helen\debugger\... |
|
463 |
|
464 2) ChrisM |
|
465 1) Fixed MET-54HLQA (T_NEWHAL tests fail) |
|
466 2) Fixed MET-555GLS (On WINS HAL function EDisplayMemoryAddress should return the Window Handle) |
|
467 |
|
468 3) Dennis |
|
469 1) Fixed HEY-54JJ9Y (DPlatLibrary not filled in for some loads) |
|
470 |
|
471 4) JonathanM |
|
472 1) Fix for 6.1 defect MOS-54NLHX - "__PROFILE_DISPLAY macro in e32def.h has error" |
|
473 |
|
474 5) WilliamRo |
|
475 1) Fixed ROS-54MGXX "WINSCW builds enable C++ exceptions and RTTI" by adding |
|
476 appropriate #pragmas to the __CW32__ section of e32def.h |
|
477 |
|
478 6) Nicolas |
|
479 1) Fixed MOS-54QM2W (Building bootstrap MMU layer & |
|
480 special bit patterns in permissions): The MMU |
|
481 permissions are now global variables defined in the |
|
482 variant part of the bootstrap and used by the generic |
|
483 ones. |
|
484 2) Removed the write-through version of the generic |
|
485 bootstrap MMU library. This was used only by the |
|
486 Helen port which now uses the same code as everything |
|
487 else and selects write-through behaviour by changing |
|
488 the MMU permissions in the variant (see previous |
|
489 entry). See commented out code at the top of helen.s |
|
490 and helenc.cpp to switch between write-back and |
|
491 write-through. |
|
492 3) Fixed THY-54XJFZ (When fast RAM used, cache should be |
|
493 disabled for kernel stacks, data and heap). When |
|
494 those entities are in DRAM, they are always cacheable. |
|
495 When they are in FRAM, they are mapped using the map |
|
496 flags specified in the FRAM bank. This allows to |
|
497 enable/disable the cache on a per-bank basis. |
|
498 |
|
499 7) RobertJ |
|
500 1) Fixed HEY-54JME9. Removed mini-loader |
|
501 "Drive specifier missing on libraries loaded with the mini-loader" |
|
502 |
|
503 8) MichaelP |
|
504 1) Removed /e32/drivers/ subdirectories ecommdma and emcbsp. These two drivers were |
|
505 introduced by the Helen port and are actually TI-specific. Since they are not even |
|
506 used by the current Helen port, we can safely get rid of them. |
|
507 |
|
508 9) PeterH |
|
509 1) Integrated changes to DEF files from the mainline. |
|
510 Frozen exports are now marked with the R3UNUSED flag where appropriate. |
|
511 This is to support the thumb stub optimisation where the R3 register is |
|
512 use to generate a smaller import stub for a function if it isn't used to |
|
513 receive parameters. |
|
514 |
|
515 10) MarkCa |
|
516 1) Updated MLNK EPBUS port to detect all events in ISR. |
|
517 2) Reduced EPBUS by c1.2k by using packed TMMCCommandSpec structure. |
|
518 |
|
519 Version 1.02.364 |
|
520 ================ |
|
521 (Made by MichaelP, 20/11/2001) |
|
522 |
|
523 1) MarkCa |
|
524 1) Changed DFlashDevice::SetupWrite() in \integratorap\lffs\flashfile.cpp |
|
525 to use wrapper class for testing if write buffer available instead of |
|
526 testing bits in 32bit value. |
|
527 2) Fixed CAN-547HD3 (Controller panics when no events to handle.) |
|
528 |
|
529 2) RobertJ |
|
530 1) Corrected coding comments in d_usbc.cpp & minor clarification in pa_usbc.cpp |
|
531 2) Implemented new USB VID. |
|
532 3) Further cleanup work following deconfiguration on USB client SIN-535KPU |
|
533 4) Propagated fix for PBN-4TKJ7J "Bluetooth panics with HCI error 23". |
|
534 In \brutusa\vi_com2.cpp, reordered ISR rx now done first |
|
535 then tx, removed uart tx busy spin. |
|
536 |
|
537 3) Nicolas |
|
538 1) Fixed FID-53YD58 (Bootstrap doesn't dump all MMU |
|
539 pages): off-by-one error. |
|
540 2) Enabled cache for exception vector page when it is in |
|
541 DRAM (cache still disabled if the page is in fast RAM |
|
542 as TC RAM and cache are not compatible). |
|
543 |
|
544 4) ChrisM |
|
545 1) Fixed ALM-53LHP4 (Fixed Calibration settings are not saved). Assabet only defect, |
|
546 problem was in the variant vi_xyin.cpp in DDigitiserSA1100::DigitiserToScreen. |
|
547 2) Fixed FOD-54MET2 (Display bytesPerLine calculated as bits not bytes). Fixed the problem in template port + integrator. |
|
548 |
|
549 5) AndrewJ |
|
550 |
|
551 1) Fixed DOM-4XWC5P (Medlfs driver is not reliable) This problem was concerned with |
|
552 flash devices not erasing properly when suspended, on assabet boards. This was |
|
553 fixed by not suspending an erase unless both chips have gone into suspend mode |
|
554 properly. |
|
555 2) Fixed FID-53YDJC (Error LFFS driver SetupWrite() function) Semi implemented |
|
556 suggestion in defect report though still need to issue dummy command after |
|
557 correct register has been read, otherwise command issued does not work. |
|
558 |
|
559 6) JonM |
|
560 1) Implemented change request JMET-544FUM - "Change RTransferWindow::MapInBuffer() to |
|
561 return error code and not panic" |
|
562 |
|
563 7) CarlosF |
|
564 1) Fixed MOU-543FVR HAL attribute ECaseSwitch returns wrong value for Assabet. |
|
565 The following files were modified: |
|
566 \assabetb\hal\config.hcf |
|
567 \assabetb\hal\values.hda |
|
568 \assabetb\lffs\loadlffs.cpp |
|
569 \assabetb\vi_hal.cpp |
|
570 \hal\inc\hal_data.cpp |
|
571 \hal\tsrc\t_new_hal.cpp. |
|
572 Fixed FRS-534EWW T_SERIAL fails on Assabet. The following files were |
|
573 modified: |
|
574 \assabetb\bmisa\visaabu.def |
|
575 \assabetb\v32scpld1111.h |
|
576 \assabetb\vi_com1.cpp |
|
577 \assabetb\vi_com3.cpp |
|
578 \assabetb\vi_cpld1111.h |
|
579 \assabetb\vi_hw.cpp |
|
580 \assabetb\vi_power.cpp. |
|
581 |
|
582 8) MichaelP |
|
583 1) HWA API implementation now corresponds to API document version 0.15: |
|
584 a) Removed enum TTaskPriority from d32hwa.h (was not used). |
|
585 b) Two new functions in class RHwaTask: |
|
586 TInt PutData(RTransferBuffer& aBuf, TInt aBytesToBeTransfered, |
|
587 TInt* aBytesTransfered=NULL, TInt TransferId=KTfBufIdNull); |
|
588 and |
|
589 TInt PutData(RTransferBuffer& aBuf, TRequestStatus& aStat, |
|
590 TInt aBytesToBeTransfered, TInt* aBytesTransfered=NULL, |
|
591 TInt aTransferId=KTfBufIdNull); |
|
592 which allow the user to specify the number of bytes to be transferred to the |
|
593 DSP (rather than the whole buffer). |
|
594 c) New member in class TTaskDataTfInfo (d32hwa.h): TInt iBytesToBeTransfered; |
|
595 d) Renamed THwaPanic enums from EHwaXxx to EHwaPanicXxx (k32hwa.h). |
|
596 e) Added virtual destructor for class THwaTaskHwInterface to prevent resource |
|
597 leaking in derived classes. |
|
598 f) Removed function TInt DHwaTask::Priority() (was not used). |
|
599 g) New member in class THwaDataTfReq (k32hwa.h): TInt iBytesToBeTransfered; |
|
600 h) Removed data member iPriority from class DHwaTask: moved to class |
|
601 THwaTaskHwInterface; thus the task priority is now managed entirely by the PDD. |
|
602 i) Added three additional arguments to TInt THwaTaskHwInterface::DoInputFrom(const |
|
603 DHwaTask& /*aTask*/, TInt /*aOutputIndex*/, TInt /*aInputIndex*/, |
|
604 TInt /*aConnectionId*/) to pass the task index and connection ID information to |
|
605 the PDD. |
|
606 j) Made function void DHwaDevice::SetStatus(THwaDeviceStatus aStatus) public |
|
607 (was: protected). |
|
608 k) Merged two functions of class DHwaDevice |
|
609 TInt TaskCallPutData(DHwaTask* aTask, const TAny* aArg); |
|
610 TInt TaskCallGetData(DHwaTask* aTask, const TAny* aArg); |
|
611 into one function |
|
612 TInt TaskCallTransferData(DHwaTask* aTask, const TAny* aArg, THwaDataTfDir aDir); |
|
613 l) Fixed kernel heap memory leak caused by incorrect call to S::TransferWindowClose() |
|
614 in destructor DHwaTask::~DHwaTask(). |
|
615 |
|
616 2) USB client implementation: |
|
617 a) Added "#define SET_DESCRIPTOR_REQUEST_SUPPORTED" to k32usbc.h (in commented-out |
|
618 form). |
|
619 b) Added "const TUint16 KUsbVendorId_Symbian = 0x0E22;" to usb.h (USB-IF assigned |
|
620 Vendor ID). |
|
621 |
|
622 |
|
623 Version 1.02.363 |
|
624 ================ |
|
625 (Made by Dennis 26/10/2001) |
|
626 |
|
627 1) MarkCa |
|
628 1) Updated Linkup MMC port with event checking asserts. |
|
629 2) Modified P32MMC.H to allow per-platform configuration. The file |
|
630 can only be included into ASSP-specific builds. It reads a header |
|
631 file MMC_CFG.H from \epoc32\include\kernel\ASSP. |
|
632 3) Fixed FID-4ZKEKQ (Inefficient memfill in MMC driver.) Use Mem::Fill() |
|
633 instead of loops to fill buffers with 0xff in DoFormat() for |
|
634 DMmcMediaDriverFlash. |
|
635 |
|
636 2) Nicolas |
|
637 1) Fixed THY-52WJTE (DLL static data support doesn't |
|
638 allow for DLLs which only have BSS): The "$DAT" chunk |
|
639 which holds the initial content of the DATA section is |
|
640 not created when there is no DATA section. |
|
641 Additionally it is not created for ROM-based DLLs as |
|
642 the initial content is fetched from ROM in that case. |
|
643 2) Fixed generic bootstrap defect FID-53BKSD (920T |
|
644 MMU_Invalidate is wrong): The ARM920T version of that |
|
645 function now only invalidates TLB and I-cache. |
|
646 3) Fixed kernel defect THY-53FE32 (Confusion between |
|
647 TheKernelPage and TKernelPage ctor) |
|
648 4) Fixed generic bootstrap defect THY-53LC9Y (crash when |
|
649 only exception handlers and supervisor stack/heap in |
|
650 IRAM). Reversed exception code and supervisor |
|
651 heap/stack allocation order in fast RAM to ensure that |
|
652 stack/heap always at top of bank where the bootstrap |
|
653 stack is. Otherwise the adjusted stack value after |
|
654 enabling MMU is wrong. |
|
655 5) Fixed generic bootstrap defect FID-53LKTG (Bootstrap |
|
656 test code: heap test is useless, author should be |
|
657 shot). Kernel data is now really checked. |
|
658 6) Modified bootstrap tests to take into account possible |
|
659 exception vectors relocation to highmem. |
|
660 7) Removed deprecated "screensize" keyword from bootstrap |
|
661 test obey files. |
|
662 |
|
663 3) ChrisM |
|
664 1) Fixed WIR-53FANN (RArrayBase::HeapSort makes assumption about max iEntrySize value) |
|
665 Changed temp buffer in HeapSort functions to use the const KSimpleArrayMaxEntrySize |
|
666 2) Fixed MOS-53FLUF (HAL attribute ordering incorrect). Moved EPenState from |
|
667 before EKeyboardState to after ESystemDrive. |
|
668 3) Fixed MOS-53RHP3v(Screen width and height returned by HAL are constant). Added func |
|
669 to hal\src\emul.cpp to return the current sizes defined in epoc.ini. |
|
670 |
|
671 4) Carlosf |
|
672 1) Changes to Assabet Variant to fix a problem with the External Interrupts |
|
673 dispatching. Modified \assabetb\vi_hw.cpp. |
|
674 2) Fixed BAN-52BKKC Physical device driver for serial port have a defect and |
|
675 can cause loss of data. |
|
676 |
|
677 5) Pete |
|
678 Migrated the fixes for the following 6.1 defects: |
|
679 1) Fixed PAS-4WRMQS: "Requeing a read() after PowerOn Panics the Driver/Kernel". |
|
680 Problem caused by driver registering for PC Card IREQ events twice without |
|
681 de-registering in between. This causes a panic in the PC Card Controller. |
|
682 - Modified the Brutus and Assabet PC Card serial PDDs |
|
683 (DITXBA4.PDD/DITXAB4.PDD) so that rather than registering and de-registering |
|
684 for notification of PC Card IREQ events whenever they need to disable serial |
|
685 interrupts, the drivers keep the notification request registered - and simply |
|
686 enable and disable IREQ events on that socket. |
|
687 - Changed the PC Card Controller so that registering a TPBusCallBack object |
|
688 for event notification (with DPcCardController::RegisterEvent()) which is |
|
689 already registered returns an error rather than causing a kernel panic. |
|
690 - Modified the PC Card Controller by adding support for a new configuration |
|
691 request flag: KPccdConfigOverrideNormalPwrEvents. If a configuration is |
|
692 requested (via DPcCardController::RequestConfig()) which contains this flag |
|
693 setting then normal machine power handling by the Controller for the socket |
|
694 in question will be disabled - leaving the PC Card Controller client to |
|
695 implement its own power handling policy. This only applies to machine power |
|
696 on/ power off events. The Controller will continue to handle emergency power |
|
697 down and media change events. The power handling override will remain in |
|
698 force as long as the configuration is applied (i.e. this condition is removed |
|
699 following a call of DPcCardController::ReleaseConfig(), |
|
700 DPcCardController::DeregisterClient(), a media change event etc). This |
|
701 feature is required to support PC Card serial cards in order to support the |
|
702 'idle off' power policy which serial ports now implement. Without this, even |
|
703 though the PC Card serial driver will ignore a machine power down call when |
|
704 it still has a write request in progress, the PC Card Controller will still |
|
705 turn off the VCC supply to the card and thus power it down. |
|
706 2) Fixed SCE-534GAE: "Problems with Serial Comms LDD power handling" |
|
707 - Modification to the serial port LDDs, ECOMM.LDD (including the WINS version) |
|
708 and ECOMMDCE.LDD to fix a problem with the way it implements the 'idle off' |
|
709 power policy. Although it currently ignores Power-Off notifications, it does |
|
710 not ignore Power-On notifications and instead completes any outstanding request |
|
711 with KErrAbort. Hence, if the machine happens to be powered off and then back |
|
712 on again before the serial port has had an inactivity timeout, any outstanding |
|
713 requests will wrongly be completed with KErrAbort as the machine turns back on. |
|
714 - Another problem fixed is associated with the fact that the |
|
715 current comms driver power handler doesn't actually power the |
|
716 device down on a normal power down event. However, the driver |
|
717 itself uses the power model at other times to control power |
|
718 to the device (e.g. when closing the driver). Hence, |
|
719 DChannelComm::DoPowerDown() is never called and the driver |
|
720 closes leaving the comms h/w powered up. This is now fixed, |
|
721 with the driver calling DoPowerDown directly when required. |
|
722 3) Fixed SCE-52YHQE: "Serial change notifier problems". |
|
723 |
|
724 6) WilliamR |
|
725 1) Fix defect ROS-53TDGG "Access Violation in CreateFirstDllRefTable" by allowing for |
|
726 GetModuleHandleA to return 0. This is essentially the same code as used in |
|
727 CreateDllRefTable() which handles dynamically loaded DLLs. |
|
728 |
|
729 |
|
730 Version 1.02.362 |
|
731 ================ |
|
732 (Made by ChrisM, 05/10/2001) |
|
733 |
|
734 1) CarlosF |
|
735 1) Port defect fix for defect ALM-4VQB5V Ditizer freezes (was: The Brutus |
|
736 board freezes after entering 50-60 characters with HWR) from 6.1. |
|
737 Modified \assabetb\vi_xyin.cpp and \brutusa\vi_xyin.cpp. |
|
738 |
|
739 2) MarkCa |
|
740 1) Fixed FID-4ZWDMZ (MMC program poll is too slow to be useful.) |
|
741 Use TMilliSecondCallBack instead of TTickLink. Pure virtual DMMCStack |
|
742 function ProgramPollPeriod() replaced with pure virtual DMMCController |
|
743 function ProgramPeriodInMilliSeconds(). |
|
744 2) Moved Integrator LFFS drive to k:. ImpHal::TotalSupportedDrives() now |
|
745 returns 9 instead of 2, as does unused Variant::PeriphBusMachineInfo(). |
|
746 MEDLFS changed to use 22MB of flash across three pairs of chips. |
|
747 The memory range is a contiguous block, which can be specified at |
|
748 compile time in \integratorap\lffs\ffs_config.h. |
|
749 |
|
750 3) JonM |
|
751 1) Fixed defect FER-4XDK9G - "Assabet timers go off at strange intervals." |
|
752 2) Fixed defect MET-52AF29 - "Power off/on may freeze Assabet/Brutus" |
|
753 3) Fixed defect in TSa1100::SetRtcData. This needed to wait longer for the new value to take effect. |
|
754 4) Moved HELEN's exported headers from E32 to the HELEN variant. |
|
755 This helps fix defect MAY-4XWM9Q - "e32 does not build in an IPR-E OCK". |
|
756 It also moves what should probably be IPR category B stuff from a cat E directory. |
|
757 |
|
758 4) MichaelP |
|
759 1) HWA API implementation now corresponds to API doc version 0.14 |
|
760 a) THwaTaskHwInterface::DoCloseTask() now has a parameter TBool |
|
761 aCallbackRequest which indicates whether or not the PDD should |
|
762 finally call DHwaTask::CloseComplete() |
|
763 b) RHwaTask::Logon() now has a second parameter TUint aFlagsWord which |
|
764 can be used to make a logon request more specific |
|
765 c) RHwaTask functions Start(), Suspend(), Resume(), and SetPriority() |
|
766 are now asynchronous; however this is transparent to the user as the |
|
767 asynchronousness is wrapped up in the d32hwa.inl inline header file |
|
768 d) Renamed DHwaTask::DoLogonComplete() to LogonComplete() |
|
769 2) USB PIL: Endpoint Data Toggles are now correctly reset after Set_Interface and |
|
770 Set_Configuration requests. |
|
771 |
|
772 5) AndrewT |
|
773 1) Fixed BAN-52BKTN (CAsyncCallBack ctor TCallBack& could be const). Made |
|
774 the TCallBack parameters to the constructor and Set() const. |
|
775 2) Fixed BAN-52BKV2 (Should inline TInt RSubSessionBase::SubSessionHandle() be |
|
776 const?). Added const to this member. |
|
777 3) Fixed THE-52WJR6 (Equality operators for TThreadId and TProcessId should be |
|
778 const). Made the accessor and comparison operators const on these classes. |
|
779 6) RobertJ |
|
780 1) Incorrect behaviour in usb client after getting deconfigured then |
|
781 configured, without an intervening reset. |
|
782 Data toggles were not getting reset, |
|
783 ldd wasn't cancelling user requests, |
|
784 PIL layer wasn't cancelling ldd requests and |
|
785 psl layer was trying to drain fifo because RPE bit was set. |
|
786 RPE will get reset on next read when RPC gets cleared and fifo is |
|
787 automatically emptied. |
|
788 2) Fixed FID-52HBTA: USB driver not leave safe |
|
789 3) Fixed ROS-534EAV: usbdma.cpp mixes new[] and delete |
|
790 |
|
791 7) ChrisM |
|
792 1) Fixed PAR-52CLSB (920T bootstrap code is Cat D it should be Cat E). Changed |
|
793 categorisation to E after source code recategorisation CR - CMOS-52WJ5V |
|
794 |
|
795 |
|
796 8) Pete |
|
797 1) Removed Cogent source |
|
798 2) Removed Windermere source |
|
799 3) Removed MEDCRM and MEDCRR media driver source. |
|
800 |
|
801 Version 1.02.361 |
|
802 ================ |
|
803 (Made by AndrewT, 31/08/2001) |
|
804 |
|
805 1) AndrewT |
|
806 1) Fixed EDNATHE-4QQKZM (RThread().Suspend() deadlocks the emulator) again. |
|
807 The original fix was incomplete. |
|
808 2) Fixed HEY-4XHGD5 (Remove \e32\include\K32DBGDD.H) |
|
809 3) Fixed MET-4YSM3M (Text shell DIR command problems) |
|
810 |
|
811 2) Nicolas |
|
812 1) Fixed FID-4VHGDK (Debug should show current thread |
|
813 after exception). When a thread or process panics or |
|
814 takes an unhandled exception, the name and ID of the |
|
815 thread/process is displayed in the kernel traces (only |
|
816 if KPANIC is set). |
|
817 2) Replaced void GetExceptionVectorsInfo(addr, size) with |
|
818 TUint32 ExcVectorsAddr() in generic bootstrap because |
|
819 vector table size not used anymore. Documented that |
|
820 in bootstrap doc version 1.2. |
|
821 3) Small changes following RHR 113.2 (exception code in |
|
822 fast RAM) review. |
|
823 4) Exception vectors are now moved to highmem on assabet. |
|
824 5) Updated makefiles used to build bootstrap tests for |
|
825 MLNK, MINT and VTEMPLATE now that the generic test |
|
826 code is contained in libraries. |
|
827 |
|
828 3) Chris |
|
829 1) Fixed problem with cirrus not turning display on introduced with LCD changes for GT111 |
|
830 2) finished implementation of mapping video chunk from more than one physical region |
|
831 3) Updates to video driver code from code review. Split video driver up into bit which needs porting and the interface. |
|
832 4) Changes to video driver for CR LROS-4Z7E7Z to allow scdv get all display modes |
|
833 5) updated video test code to include tests for palette when not in palettized video mode and updated assabet and brutus |
|
834 to report if backlight is supported via HAL and fixed inconsistency between assabet,brutus and the template reporting |
|
835 different error value if palette functions called on a none palettized video mode. |
|
836 6) Fixed FID-4ZGJ2L WINS/WINC doesn't handle command line args correctly. If executable command path |
|
837 has spaces it will be quoted. If a quote is found it skips until the next one. |
|
838 7) Fixed MOS-4Y4D9K Two taps on screen required to turn on display. |
|
839 |
|
840 4) AndrewJ |
|
841 1) Fixed THY-4YCP96 stopped Null pointer from being derefrenced in LFFS media driver |
|
842 |
|
843 5) JonM |
|
844 1) Fixed defect FID-4WUGL4 - "MMU secondary config is annoying" |
|
845 The MMU secondary config is now obtained from a constant (KMmuSecondaryConfig) contained |
|
846 in the bootstrap's variant library. |
|
847 2) Fixed defect FID-4XTC27 - "Bank width corrupted in BDB" |
|
848 3) Fixed defect FID-4Y3CP3 - "Should fill unused Rom config blocks" |
|
849 4) TransferBuffer performance greatly improved. |
|
850 5) API CHANGE: DTransferWindow::MapInBufferL is now non-leaving and has been |
|
851 renamed to MapInBuffer. |
|
852 6) Fixed bug in DPlatProcess::RemoveChunk, this no longer flushed the data chache |
|
853 when removing EFixedAddress chunks. |
|
854 7) Extended T_HWA test to include a benchmark test for PutData. Also made this |
|
855 work on Integrator. |
|
856 8) Fix for defect PAR-4VMKV7 - "WD_VT100 has lost its basic nature and now depends on the Comms drivers!!" |
|
857 WD_VT100.CPP Has now reverted being output only, via the debug port. |
|
858 The implementation using the ECOMM driver has been added as WD_VT100_ECOMM.CPP |
|
859 9) Fix for defect FID-4YTET9 - "Manufacturer in HAL should be a UID" |
|
860 (Made TManufacturer definition obviousely extendable by using UIDs.) |
|
861 10) Fixed defect SAS-4ZTD5D - "Missing l7200a t_trace.cpp file for bootstrap tests" |
|
862 Also fixed build failure with Integrator bootstrap test code. |
|
863 11) Fixed defect SAS-4ZSGBU - "Exports inconsistent. v32isaab.h includes not exported" |
|
864 12) Fixed defect FER-4XGDVT - "Integrator can't cope with time being set randomly" |
|
865 13) Removed #include <e32transbuf.h> from e32std.h |
|
866 |
|
867 6) MarkCa |
|
868 1) Implemented MEDLFS driver for Integrator. Mounts on local drive 1 |
|
869 and provides access to 2 * 4Mb flash chips. ELFFS is not mounted |
|
870 by default. |
|
871 |
|
872 7) CarlosF |
|
873 1) Changes to Assabet bootstrap and Variant to make Assabet's CPU and Memory |
|
874 bus clock speed configurable. Also includes an option to always format the |
|
875 C:\ drive on start-up if LFFS filesystem is mounted on this media. |
|
876 2) Changes to SA1100 ASSP to enable WAIT signal detection on Assabet PCCard |
|
877 IO accesses. This is required as the Assabet controller needs to be |
|
878 configured to detect the assertion of this signal on accesses to IO space |
|
879 contrary to Brutus which has this detection enabled by default. |
|
880 |
|
881 8) TimBa |
|
882 1) Folding now folds 0xA0 (non-breaking space) to normal space (0x20) |
|
883 |
|
884 9) Andy Curran (Uikon) |
|
885 1) Fix for (PER-4Z5DW6) Switch On/Off Control Panel Dialog case closed option does not work. |
|
886 Really just correcting a few typos. Fix tested with success. Fix accepetd by Nicolas T. |
|
887 |
|
888 10) MichaelP |
|
889 1) Updated Helen port (mhelen target) to 6.1 port sources from 30 July |
|
890 2001 (Perforce revision 10426). Many changes, among them items 2) - 6). |
|
891 2) Added directory stdarmWT (containing some files) under /bootstrap/mmu/: |
|
892 "Bootstrap MMU Write-Through Mode." |
|
893 3) Added directory ecommdma (also containing some files) under |
|
894 /e32/drivers/: "Implements the Logical device driver for a serial port |
|
895 using DMA transfers." This driver is used by the mhelen target. |
|
896 4) New kernel exports for mhelen: |
|
897 THelen::ReadIntMask(unsigned int); |
|
898 THelen::SetMcBspReg(unsigned int, unsigned int, unsigned int); |
|
899 THelen::SetComBSPStatus(int); |
|
900 5) Re-activated #define __EARLY_DEBUG__ in |
|
901 \e32\ekern\epoc\arm\Helen\KA_UTL.CPP. |
|
902 6) Added file \e32\rombuild\HelenTests.oby. |
|
903 7) HWA API: RHwaTask functions GetData / PutData are now kernel exec calls |
|
904 (as opposed to kernel server calls) --> significant performance |
|
905 increase. |
|
906 The previous behaviour (i.e. server calls) can be had by uncommenting |
|
907 //#define GETPUTDATA_ARE_KERNELSERVERCALLS in d32hwa.h. |
|
908 8) HWA API: Constant value changed: KTfBufIdNull = 0x0 (was: 0xf0000000). |
|
909 9) Added overloaded function |
|
910 DTransferWindow* Kern::TransferWindowFromHandle(TInt aHandle, DThread* aThread); |
|
911 to \e32\include\k32std.h, exported and frozen for all targets. Function |
|
912 is implemented in \e32\ekern\ks_transbuf.cpp. This function is used |
|
913 where the current thread is not the same as the one that created the |
|
914 window handle. |
|
915 10) T_HWA has now integrated profiling support, activated by calling "t_hwa |
|
916 profile". |
|
917 |
|
918 11) RobertJ |
|
919 1) Added a new constructor each for RArray and RArrayPointer. This enables |
|
920 the sort/find to be used with an existing array with memory allocated |
|
921 outside of these classes. |
|
922 |
|
923 |
|
924 Version 1.02.360 |
|
925 ================ |
|
926 (Made by Peter, 06/08/2001) |
|
927 |
|
928 1) MarkCa |
|
929 1) Fixed FID-4X8JKB (TMMCCommandDesc::Direction() should be const.) |
|
930 2) Fixed MMC controller defect in ExecCommandSM() / EStDeselectEndCheck |
|
931 where cmd was not reset after the stack was popped. |
|
932 3) Optimized DMMCcontroller::PowerUpBus() to initialize stack once for |
|
933 all drives. Check if initialized successfully and still powered up. |
|
934 If so, complete immediately. Retain ability to power down and power |
|
935 up again if failed because of unknown password (CMD3 RTO.) |
|
936 |
|
937 2) Chris |
|
938 1) Changed brutusa\video.mmp to use visaba.lib not visaab.lib and cixyba.lib not cixyab.lib |
|
939 2) Updated headers and removed dead code from files changed for LCD driver improvements. |
|
940 3) Removed "screensize" keyword from header.iby files |
|
941 |
|
942 3) AndrewT |
|
943 1) Fixed NEO-4X8CFY (TTime::WeekNoInYear() function returns wrong |
|
944 week number if week start day is not monday). Rewrote the |
|
945 second half of the offending function to do the right calculations. |
|
946 |
|
947 4) Michael |
|
948 1) Commented out #define __EARLY_DEBUG__ in |
|
949 \e32\ekern\epoc\arm\Helen\KA_UTL.CPP. |
|
950 2) Deleted line "screensize=320x240x12" from |
|
951 \e32\rombuild\mhelen\header.iby. |
|
952 3) Added to \hal\inc\hal_data.h enum TManufacturer |
|
953 "EManufacturer_TexasInstruments" and enum TMachineUid |
|
954 "EMachineUid_Helen=0x101F3EE3". |
|
955 4) HWA API: |
|
956 a) Introduction of concept of input and output index for tasks with |
|
957 multiple I/Os. These indices are additional (& optional) arguments for |
|
958 RHwaTask functions InputFrom(), DisConnectInput(), InputConnection(), |
|
959 and OutputConnection(), and are also part of class TTaskConnectInfo. |
|
960 b) New RHwaTask querying functions: GetTaskProperties() and |
|
961 GetTaskStatus(). |
|
962 c) With these come two new classes: TTaskPropertyInfo (this not new but |
|
963 updated), and TTaskStatusInfo. |
|
964 d) RHwaDevice::Tasks() now returns a find-handle -- the handle is no |
|
965 longer a component of the filled TTaskPropertyInfo structure. |
|
966 e) RHwaDevice::CreateTask() has an additional parameter aNumWindows (# |
|
967 of transfer windows for DHwaTask object). |
|
968 f) RHwaTask functions Logon() and LogonCancel() are now void. |
|
969 g) RHwaTask::SetOwningDevice() is now a protected class member and no |
|
970 longer documented in the API doc. |
|
971 h) Class RHwaDevice is now a friend of class RHwaTask. |
|
972 i) Removed RHwaTask functions GetStatus() and GetTaskID(). |
|
973 j) Removed RHwaTask default constructor (was empty). |
|
974 k) Removed enum THwaTaskLogon (was not used). |
|
975 |
|
976 5) Nicolas |
|
977 1) Modified MCOY bootstrap to take into account the super |
|
978 and CPU pages layout changes introduced in E32 359. |
|
979 2) MCOY ASSP layer now contains static arrays for the |
|
980 various stacks and initialises the PP::* and Arm::* |
|
981 stack "top" pointers. Note that it would be possible |
|
982 to perform the stack allocation in the bootstrap |
|
983 instead. |
|
984 3) Fixed MAY-4V4E5V (Breakpoints don't work on ARM |
|
985 architecture 5 processors). Now two opcodes in the |
|
986 undefined space are used: a 16 bit one for THUMB and a |
|
987 32 bit one for ARM (previously a unique 16 bit pattern |
|
988 was used). RDebug::SetBreakPoint() has now a new |
|
989 overload which allows to specify what kind of |
|
990 breakpoint is excepted. The old overload is |
|
991 deprecated (it returns KErrGeneral systematically). |
|
992 4) Cosmetic changes to bootstrap and kernel following |
|
993 code review. |
|
994 5) Removed dubious assert from bootstrap which crashed |
|
995 Brutus when warm-booting: MarkRamImageInBank() can |
|
996 actually be called with a BDB containing |
|
997 KBdbBankTypeRamAsRom in that case because the BDB |
|
998 initialised during cold boot is reused. This allows |
|
999 to skip bank size/width detection. |
|
1000 6) William |
|
1001 1) Add CleanupArrayDelete template to E32BASE.H, and remove the __EPOC_CLEANUP_SUPPORT__ |
|
1002 include guards to complete Epoc32 Proposal SW1-87 (See STORE 0049 notes from 1998) |
|
1003 2) Export EKDATA.DEF so that ASSPs can get it from a published place, rather than |
|
1004 referring to ..\e32\bmarm\ekdata.def. Modified various MMP files to get this file |
|
1005 from \epoc32\release\marm\ekdata.def instead. |
|
1006 |
|
1007 7) Pete |
|
1008 1) Fixed FID-4XEE3C "Remount of fixed media broken". Change to the function |
|
1009 DPrimaryMediaBase::NotifyMediaStatusChange() which is called on media |
|
1010 change, but more significantly when forcing a remount on a drive. The change |
|
1011 involves only attempting to reset media driver current consumption if the |
|
1012 media is removable (since only drivers for removable media track current |
|
1013 consumption). This fixes a problem where the kernel heap became corrupt when |
|
1014 forcing a remount on a fixed drive. |
|
1015 2) Added the following functions to the TBusLocalDrive class:- |
|
1016 |
|
1017 a) TInt SetMountInfo(const TDesC8* aMountInfo,TInt aMountInfoThreadHandle); |
|
1018 The SetMountInfo() function allows a descriptor to be associated with |
|
1019 a local drive - which is passed down to the corresponding media driver for the |
|
1020 drive as that driver is opened. This therefore provides a means of supplying |
|
1021 additional information to the driver at creation time. In the case of 'secure' |
|
1022 drives, a driver may not open successfully unless the correct mount information |
|
1023 is supplied at creation time. Mount information, once passed into the drive, is |
|
1024 stored in the correspnding DPrimaryMedia object for the drive and is therefore |
|
1025 available for subsequent remounts of the drive following media change or machine |
|
1026 power down events. Mount information can be cleared by passing in a NULL mount |
|
1027 info descriptor. |
|
1028 |
|
1029 b) TInt ForceRemount(TUint aFlags); |
|
1030 This forces a local drive to be remounted. This is a replacement for the |
|
1031 function UserSvr::ForceRemountMedia(TMediaDevice aDevice) since the latter |
|
1032 requires knowlege of the h/w platform in quesion in order to select the |
|
1033 appropraite TMediaDevice value for a particular drive. |
|
1034 3) Added SetMountInfo() function to TLocDrv class and modified TLocDrv::Open() |
|
1035 so this no longer takes a 'const TDesC* aMountInfo' parameter. Corresponding |
|
1036 change to DMedia::Open() function which also no longer has a |
|
1037 'const TDesC* aMountInfo' a parameter. The mount info is intead stored in the |
|
1038 DPrimaryMedia class which has two new functions:- |
|
1039 TInt SetMountInfo(TLocalDriveMessageData &aMountInfo,TInt aMediaNum); |
|
1040 TMediaDrvDescData* MountInfo(TInt aMediaNum); |
|
1041 4) Change to DMediaDriver class which now supplies the DoCreate() function and instead |
|
1042 requires a derived driver class to supply the pure virtual function:- |
|
1043 Int Open(TMediaDevice aMediaDevice). |
|
1044 In most cases, convertion of existing non-removable drivers will require the existing |
|
1045 DoCreate() function to be renamed Open(). |
|
1046 |
|
1047 |
|
1048 Version 1.02.359 |
|
1049 ================ |
|
1050 (Made by JonathanM, 18/07/2001) |
|
1051 |
|
1052 1) Morgan |
|
1053 1) Implemented CR MHEY-4XHN9D "Move DPassiveDebugger implementation out |
|
1054 of the core kernel" |
|
1055 Exported the following functions and K32DBG.H |
|
1056 ImpMmu::AllocatePageTable(unsigned long, unsigned long, int) |
|
1057 DPlatProcess::DataSectionBase(DPlatChunk *) const |
|
1058 ImpMmu::FreePageTable(int, int) |
|
1059 Moved ka_edbg.cpp from all ASSPs and |
|
1060 \e32\ekern\epoc\arm\kc_edbg.cpp into a device-driver/extention in |
|
1061 \tools\debugger_stub\passivestub\... |
|
1062 2) Removed DDebugger initialisation calls from boot. |
|
1063 A DDebugger implementation should load itself as an extension or a |
|
1064 device driver, and install using Plat::SetDebugger(debugger); |
|
1065 3) Added __ENABLE_NOTIFY_DEBUGGER__ macro to enable/disable debug support |
|
1066 in the kernel. Currently on in UREL and UDEB builds by default. |
|
1067 4) Cogent passive debugger now lives in \tools\debugger_stub\passivestub |
|
1068 and is built as EDEBUG.LDD. Include this as an extension to get |
|
1069 Lauterbach OS aware debug. Or load it as an LDD with DEBUGGER.EXE |
|
1070 "DEBUGGER load" from the command line |
|
1071 5) Helen debugger now lives in \helen\debugger and built as EDEBUG.LDD |
|
1072 See 4) for usage. |
|
1073 |
|
1074 2) Nicolas |
|
1075 1) The kernel data/bss section can be relocated to any fast |
|
1076 RAM bank by setting KBdbFlagKernelData in the |
|
1077 appropriate BDB bank descriptor (generic bootstrap |
|
1078 only). |
|
1079 2) The supervisor stack/heap can be relocated to any fast |
|
1080 RAM bank by setting KBdbFlagSvStackHeap in the |
|
1081 appropriate BDB bank descriptor (generic bootstrap |
|
1082 only). |
|
1083 3) The kernel stacks (reentrant, null, irq, fiq, exception) |
|
1084 can be relocated to any fast RAM bank by setting the |
|
1085 relevant bit (KBdbFlagStack*) in the appropriate BDB |
|
1086 bank descriptor (generic bootstrap only). |
|
1087 4) The kernel stacks are now allocated by the generic |
|
1088 bootstrap (either in DRAM or fast RAM). Super and CPU |
|
1089 pages layout modified to pass stack info to the kernel. |
|
1090 Each variant using the generic bootstrap calls |
|
1091 Arm::Init1Stacks() from ImpHal::Init1() to initialise |
|
1092 the stacks. |
|
1093 5) For the windermere port which does not use the generic |
|
1094 bootstrap, the stacks are statically allocated in the |
|
1095 ASSP layer and ImpHal::Init1() initialises the |
|
1096 Arm::*StackTop and PP::*StackTop pointers. |
|
1097 6) The exception vectors, handler and dispatch table can |
|
1098 be relocated to any fast RAM bank by setting |
|
1099 KBdbExcCode4k in the appropriate bank descriptor |
|
1100 (generic bootstrap only). There also exist |
|
1101 KBdbExcCode8k and KBdbExcCode12k in case the exception |
|
1102 handlers get bigger in the future. |
|
1103 7) The exception vectors are now located at 0xFFFF0000 on |
|
1104 platforms which support this. Grep for |
|
1105 __CPU_EXC_VECTORS_MOVABLE in u32std.h for a |
|
1106 comprehensive list. As a consequence dereferencing |
|
1107 NULL pointers in privileged mode now enters the debug |
|
1108 monitor. |
|
1109 8) Fix defect CLE-4Y4EMG (Bootstrap doesn't fill in Rom |
|
1110 config section completely): ROM type fields now |
|
1111 correctly initialised in the super page. |
|
1112 9) Bootstrap test code added for assabet. |
|
1113 10) Bootstrap documentation updated. |
|
1114 11) Template port updated. |
|
1115 |
|
1116 |
|
1117 3) Michael |
|
1118 1) Fixed Helen crashing (exc id 26) at boot-up time: ImpHal::Idle() in |
|
1119 \e32\ekern\epoc\arm\Helen\KA_UTL.CPP |
|
1120 2) Modified macro test() in e32test.h such that it now also displays the |
|
1121 respective source filename when an RTest test fails. Added the necessary |
|
1122 overloaded operator() and constructor to class RTest in us_test.cpp. |
|
1123 An occasional stack overflow problem has been fixed: we now pass the filename |
|
1124 string as a const TText* rather than a const TDesc& (_S() vs. _L()). |
|
1125 3) Fixed DPlatChunk::SetContiguousRamL() and DPlatChunk::SetHardwareL() in |
|
1126 \e32\ekern\epoc\kp_chk.cpp: too much memory was reserved upon creation of a |
|
1127 transfer buffer, too little freed after closing it. |
|
1128 4) Fixed CBitMapAllocator::ExtractRamPages() in \e32\euser\cbase\ub_bma.cpp: |
|
1129 eliminated a condition when the do/while loop would never be left. |
|
1130 5) added two exported static kernel functions: DThread* Kern::SvThread() and |
|
1131 DProcess* Kern::SvProcess(), frozen for mawd, mcga, mcoy, meig, mhelen, mint, |
|
1132 misa, mlnk, mtemplate, wins |
|
1133 6) HWA API: |
|
1134 - changed task parameter TaskID from type TInt to TUid |
|
1135 - RHwaTask::Close() and RHwaDevice::CloseTask() now return an TInt error code |
|
1136 from the kernel (actually from the PDD), rather than being void |
|
1137 - T_HWA: creating a contiguous transfer buffer from the user side now works, |
|
1138 added test of task messaging functions, misc. fixes. |
|
1139 |
|
1140 4) Tim Band and Arun Sachamuneewongse |
|
1141 1) Added three 'next favourite' language specifiers to TLocale and |
|
1142 SLocaleData, and setters and getters for them in TLocale. |
|
1143 |
|
1144 5) JonathanM |
|
1145 |
|
1146 LCD Driver Portability Enhancements |
|
1147 |
|
1148 Moved all display related code into new kernel extension (VIDEODRIVEREX) |
|
1149 New LDD stub (VIDEODRIVERLDD) provides access to this implementation. |
|
1150 |
|
1151 Added HAL attributes |
|
1152 |
|
1153 EDisplayIsMono, // Display is monochrome |
|
1154 EDisplayIsPalettized, // True if display is in a paletized mode |
|
1155 EDisplayBitsPerPixel, // Number of bits per pixel for current display mode |
|
1156 EDisplayMaxBitsPerPixel, // Max color resolution display mode |
|
1157 EDisplayMemoryAddress, // Start of video memory |
|
1158 EDisplayOffsetToFirstPixel, // Offset of first displayed pixel from EDisplayMemoryAddress |
|
1159 EDisplayOffsetBetweenLines, // Number of bytes between the first pixel in successive lines |
|
1160 EDisplayPaletteEntry, // To get, pass entry number (Color returned as 0x00bbggrr) |
|
1161 // To set, pass entry in bits 31-24, color in bits 23-0 |
|
1162 EDisplayIsPixelOrderRGB, // True if physical pixel layout is RGB, false for BGR |
|
1163 EDisplayIsPixelOrderLandscape, // True if physical pixel layout is landcape, false for portrait |
|
1164 |
|
1165 Added new exports to EKERN |
|
1166 |
|
1167 DPlatChunkHw::DoCreateL(class TPhysAddrs* aAddr,TInt aCount,TChunkType aChunkType) |
|
1168 TBool Plat::CheckInWservThread() // Returns true if current thread is the registerd WSERV thread |
|
1169 void Hal::SetDisplaySizeInPixels(const TSize& aSize) // Inform kernel of display size in pixels |
|
1170 void Hal::SetPhysicalScreenSize(const TSize& aSize) // Inform kernel of display size in twips |
|
1171 void Hal::SetMaximumDisplayColors(TInt aMaxColors) // Inform kernel of number of phsysical colors |
|
1172 |
|
1173 Removed the following methods |
|
1174 |
|
1175 ImpHal::DisplaySizeInPixels() |
|
1176 ImpHal::PhysicalScreenSize() |
|
1177 ImpHal::MaximumDisplayColors() |
|
1178 |
|
1179 Hal::DisplaySizeInPixels() |
|
1180 Hal::PhysicalScreenSize() |
|
1181 |
|
1182 ImpPsu::DisplayOn() |
|
1183 |
|
1184 Custom::DisplaySize(); |
|
1185 Custom::PhysicalScreenSize(); |
|
1186 Custom::DisplayOn(); |
|
1187 Custom::DisplayOff(); |
|
1188 Custom::MaximumDisplayColors()=0; |
|
1189 |
|
1190 P::ClearScreen() |
|
1191 |
|
1192 6) JonathanM |
|
1193 |
|
1194 Fixes for base release. |
|
1195 |
|
1196 1) Updated E32 and F32 version numbers. |
|
1197 2) Added IPR Policy files to base\assabetb\bootstrap\test (Category E) |
|
1198 and base\helen\debugger (Category B). |
|
1199 3) Fixed WINS EDISP build warning. |
|
1200 4) Changed T_VIDEO so that it doesn't build for WINS. |
|
1201 5) Modified OBY files for varients which now use the new VideoDriverExtension. |
|
1202 These now have "#define USE_VIDEODRIVEREXTENSION" |
|
1203 6) Removed spuriours Kern::Printfs. |
|
1204 7) Renamed Integrator VideoDriverExtension to match romkit name pattern. |
|
1205 8) Fixed bug in MISA videodriver GetPaletteEntry function. |
|
1206 9) Removed always on tracing from brutus screen driver code. |
|
1207 10) Fixed Integrator ROM building (needed to include video driver by correct name |
|
1208 and exclude the old Neon250 kernel extension. |
|
1209 |
|
1210 |
|
1211 Version 1.02.358 |
|
1212 ================ |
|
1213 (Made by Michael, 19/06/2001) |
|
1214 |
|
1215 1) MichaelP |
|
1216 1) Added (many) and modified (some) files for the MHELEN ASSP base port. |
|
1217 2) Modified macro test() in e32test.h such that it now also displays the |
|
1218 respective source filename when an RTest test fails. Added the necessary |
|
1219 overloaded operator() and constructor to class RTest in us_test.cpp. |
|
1220 3) Reverted the change of the test() macro mentioned under 2) because of stack |
|
1221 overflow problems with some programs which were detected during the link |
|
1222 stage. This needs to be further investigated. For the time being we use the |
|
1223 old version of test(). |
|
1224 4) Updated HWA driver (LDD + WINS PDD) and API code. Added (bogus) PDD for Helen. |
|
1225 |
|
1226 2) Nicolas |
|
1227 1) rom.cfg: suppressed no-header option for integrator. |
|
1228 2) Fixed defect FER-4XDH9P (Switch On messages not |
|
1229 received) on WINS by calling Power::SwitchOn() when |
|
1230 waking up following normal or emergency standby. |
|
1231 3) Deleted Eiger custom bootstrap because the port |
|
1232 actually uses the generic one. |
|
1233 |
|
1234 3) MarkCa |
|
1235 1) Fixed EDNHLJT-4WZGTD (Secure mmc - "Invalid" after cancelling pw change |
|
1236 & FM panic) and related EDNHAAO-4WZFYR (Secure MMC: Note "Invalid" shown |
|
1237 after updating the file system.) New media attribute KMediaAttHasPassword |
|
1238 shadows PWD_LEN != 0 in card, and controller backs up store before |
|
1239 password operation, recovering on failure. |
|
1240 2) Fixed CAN-4WJHJN (6.0) and EDNMCAN-4VYKTY (6.1) ("File server must accept |
|
1241 new MultiMediaCard password encoding scheme".) Password notifier |
|
1242 changed to encode passwords as Unicode. |
|
1243 3) Enabled debug password notifier for F32 fix EDNPCHY-4VWP5B |
|
1244 (problems with secure mmc implementation.) This completes after |
|
1245 a user specified period and is used to debug using F32 when a |
|
1246 notifier is raised. |
|
1247 4) Implemented CR PSCE-4VMP3K to set hard limit for RAM drive. New HAL |
|
1248 attribute EMaxRAMDriveSize must be set to size in bytes, where value |
|
1249 includes FAT. |
|
1250 |
|
1251 4) TimBa Fixed bug in MatchF: if argument was an empty descriptor, it always |
|
1252 returned null. Now if the candidate is nonempty it returns KErrNotFound. |
|
1253 |
|
1254 Version 1.02.357 |
|
1255 ================ |
|
1256 (Made by Carlos, 31/05/2001) |
|
1257 |
|
1258 1) William |
|
1259 1) Change DebugThreadPanic to use a struct for the debugger-friendly values, so that |
|
1260 a simple autoexp.dat change will display the panic details properly. |
|
1261 |
|
1262 2) Dennis |
|
1263 1) Fixed defect HAR-4WSGJ5 (RArray::FindInUnsignedKeyOrder not returning KErrNotFound). |
|
1264 This was due to problems with the special case handling of 4 byte entries in the ARM |
|
1265 assembler version. |
|
1266 2) Fixed problem with MCOY failing to boot when image was loaded using RedBoot |
|
1267 instead of RT bootloader. |
|
1268 There were two problems - a spurious CIU interrupt and the fact that the RTC correction |
|
1269 and LastSetTime were uninitialised. |
|
1270 |
|
1271 3) Nicolas (RHR 113.1 completly implemented) |
|
1272 1) 5mx: Set LCD contrast to its default level every time |
|
1273 the screen is switched on. This works around the |
|
1274 regression introduced while cleaning up the Hal class (p4 changelist |
|
1275 (the screen was completely black and unusable). |
|
1276 2) Fixed typo in ImpMmu::UnmapPage(): confusion between pde and pte. |
|
1277 3) Added support for TC RAM banks in generic bootstrap. |
|
1278 Hardware-specific initialisation is left as an |
|
1279 exercise to the system integrator. It should be done |
|
1280 in HWInitialise(). |
|
1281 4) Added new consistency checks in generic bootstrap |
|
1282 (ROM/RAM bank ordering, bank overlap in |
|
1283 physical/linear space). Enabled for UDEB only. |
|
1284 5) Partially implemented scheme allowing to fake IRAM on |
|
1285 assabet (disabled). |
|
1286 6) Reorganised bootstrap test code: generic code moved |
|
1287 from brutusa to bootstrap. |
|
1288 7) Ported bootstrap test code on assabet. |
|
1289 |
|
1290 4) JonathanM |
|
1291 1) Added a new export to the BLD.INF files for BRUTUSA and ASSABETB. |
|
1292 VI_POWER.H is now exported to KERNEL\SA1100\ to enable the sound drivers to |
|
1293 set their power requirements. |
|
1294 |
|
1295 5) AndrewCu |
|
1296 1) Small changes to the RNotifier class in e32 (for Uikon 6.2 Dialog Server work). |
|
1297 |
|
1298 6) Tim Band |
|
1299 1) Changed TChar functions that query the type of the character so that |
|
1300 they do not make an Exec call |
|
1301 2) Made Private Use Area characters graphical and printable according |
|
1302 to their meaning |
|
1303 3) New folding code that respects Unicode |
|
1304 4) Removed Uzbek, Tajik and Azerbaijani from language list, added |
|
1305 Tagalog in place of Azerbaijani |
|
1306 |
|
1307 7) CarlosF |
|
1308 1) Several changes to Assabet Variant to get LFFS to mount on C:\ drive. This ended up |
|
1309 being made configurable, Switch 4 of the switch-pack on the Companion Chip Card |
|
1310 is used to decide wheter to Mount FAT or LFFS on drive C:\. |
|
1311 |
|
1312 1) Nicolas (RHR 113.1 completly implemented) |
|
1313 1) 5mx: Set LCD contrast to its default level every time |
|
1314 the screen is switched on. This works around the |
|
1315 regression introduced while cleaning up the Hal class (p4 changelist |
|
1316 (the screen was completely black and unusable). |
|
1317 2) Fixed typo in ImpMmu::UnmapPage(): confusion between pde and pte. |
|
1318 3) Added support for TC RAM banks in generic bootstrap. |
|
1319 Hardware-specific initialisation is left as an |
|
1320 exercise to the system integrator. It should be done |
|
1321 in HWInitialise(). |
|
1322 4) Added new consistency checks in generic bootstrap |
|
1323 (ROM/RAM bank ordering, bank overlap in |
|
1324 physical/linear space). Enabled for UDEB only. |
|
1325 5) Partially implemented scheme allowing to fake IRAM on |
|
1326 assabet (disabled). |
|
1327 6) Reorganised bootstrap test code: generic code moved |
|
1328 from brutusa to bootstrap. |
|
1329 7) Ported bootstrap test code on assabet. |
|
1330 |
|
1331 |
|
1332 Version 1.02.356 |
|
1333 ================ |
|
1334 (Made by Pete, 10/05/2001) |
|
1335 |
|
1336 1) MarkCa |
|
1337 1) Added base support for store LFFS optimization. KDriveAttTransaction |
|
1338 bit added to \e32\include\e32std.h. |
|
1339 |
|
1340 2) Dennis |
|
1341 1) Added mouse driver and VGA video driver for Integrator. |
|
1342 2) Renamed the text window server DServer object to "TextWindowServer". |
|
1343 |
|
1344 3) Morgan |
|
1345 1) Implemented Silent Running on Assabet |
|
1346 |
|
1347 4) Pete |
|
1348 Further changes to MMC Controller:- |
|
1349 1) Renamed the function |
|
1350 DMMCSession::FillCommandDesc(TMMCArgumentTUint32,TUint8*,TUint32) to |
|
1351 FillCommandArgs() since it doesn't actually result in the command descriptor |
|
1352 array being updated. |
|
1353 3) Removed check from DMMCStack::IssueCommandCheckResponseSM() whether |
|
1354 a multiblock read/write command has been selected with a total length less than |
|
1355 a block. This is redundant. |
|
1356 4) Modified DMMCStack::CIMReadWriteBlocksSM(). This |
|
1357 function no longer sets up the command descriptor array for special block transfer |
|
1358 commands (but expects this to have been already done before the function is called). |
|
1359 8) Further change to the WINS local drive mappings. The entire local drive mapping for |
|
1360 WINS is now as follows:- |
|
1361 Local drive 0: Internal RAM drive (EFixedMedia0) - Y: |
|
1362 Local drive 1: 1st special MMC Card on MMC socket 0 (ERemovableMedia0) - X: |
|
1363 Local drive 2: 2nd special MMC Card on MMC socket 0 (ERemovableMedia0) |
|
1364 Local drive 3: MMC Card on MMC socket 1 (ERemovableMedia1) |
|
1365 Local drive 4: Not currently assigned |
|
1366 Local drive 5: Not currently assigned |
|
1367 Local drive 6: Not currently assigned |
|
1368 Local drive 7: Not currently assigned |
|
1369 Local drive 8: Internal LFFS drive (EFixedMedia1) - W: |
|
1370 |
|
1371 5) Pete |
|
1372 1) Modified bootstrap for Cirrus7211a so that this now runs at 36MHz. |
|
1373 |
|
1374 6) Nicolas |
|
1375 1) Added fixed size internal RAM banks in generic |
|
1376 bootstrap. |
|
1377 2) Introduced support for area relocation in generic |
|
1378 bootstrap. Every kind of file (including the primary) |
|
1379 can be relocated to an internal RAM bank. |
|
1380 3) Updated generic bootstrap version number to 2.1. |
|
1381 4) Submitted Richard's bootstrap test files. |
|
1382 5) Removed MCORE stuff from generic bootstrap. |
|
1383 6) Inversed order of "static" and "const" in _LIT() |
|
1384 definition to avoid lint warning. |
|
1385 7) Added assabet.mbc (metabuild script). |
|
1386 8) Implemented RProcess::GetMemoryInfo(). This allows to |
|
1387 extend GDB so it can attach itself to running threads. |
|
1388 |
|
1389 7) Michael |
|
1390 1) Added overloaded function: |
|
1391 DTransferBuffer* TransferBufferFromHandle(TInt aHandle, DThread *aThread) |
|
1392 to \e32\include\k32std.h, exported and frozen for all BUILDS. Function |
|
1393 implemented in \e32\ekern\ks_transbuf.cpp. This function is used where the |
|
1394 current thread is not the same as the one that created the handle. |
|
1395 2) Changed behaviour of DPlatTransferBuffer::~DPlatTransferBuffer() and |
|
1396 DPlatTransferBuffer::DoClose() in \e32\ekern\emul\win32\kp_transbuf.cpp and |
|
1397 \e32\ekern\epoc\kp_transbuf.cpp: iChunk gets only deleted if it actually exists, |
|
1398 i.e. is non-NULL |
|
1399 3) Numerous changes to HWA implementation (User API, LDD and WINS PDD), work |
|
1400 still ongoing. |
|
1401 |
|
1402 Version 1.02.355 |
|
1403 ================ |
|
1404 (Made by Nicolas, 04/05/2001) |
|
1405 |
|
1406 1) William |
|
1407 1) Changed the WINC-only KernelStarted semaphore to be anonymous, to prevent |
|
1408 problems with concurrent WINC execution on a multiple processor build machine. |
|
1409 This will not re-open defect EDNGBON-4JYNU6 "Inaccessibility of request |
|
1410 semaphores breaks EPOC connect" because this isn't a request semaphore. |
|
1411 2) Fixed TGlobalAlloc to use User::AllocL rather than new[], and User::Free instead of |
|
1412 the mismatched delete. This will now work even if new[] plays funny tricks (which |
|
1413 is the case with CodeWarrior) and makes the User::ReAllocL call legitimate. |
|
1414 |
|
1415 2) Nicolas |
|
1416 1) Merged 6.1 release branch back into the mainline. |
|
1417 |
|
1418 Version 1.02.354 |
|
1419 ================ |
|
1420 (Made by Dennis, 20/04/2001) |
|
1421 |
|
1422 1) AndrewJ |
|
1423 1) Changed the misa kernel.iby file to detect whether the build is for |
|
1424 Assabet varient. If it is for assabet an alternative estart is |
|
1425 included in the rom which automatically loads the LFFS on to K: drive |
|
1426 as well as other tasks performed by estart. This should not take place |
|
1427 on any other platform. |
|
1428 2) The generic estart is only loaded (in f32) for non Assabet platform as |
|
1429 added a definition call CUSTOM_ROM that is only defined for assabet. |
|
1430 3) Added estart.cpp /assabetb/ and loadlffs.cpp to /assabetb/lffs/ for |
|
1431 new estart.exe component loaded only fopr Assabet. |
|
1432 4) removed /test/ subdirectory in /assabetb/lffs/ as nothing it it is or |
|
1433 should be used. |
|
1434 5) removed obsolete definition of BASE_ROM from F32tests.oby, |
|
1435 E32tests.Oby and Alltests.oby |
|
1436 |
|
1437 2) Morgan |
|
1438 1) Deleted \e32\bmarm\EXYIN.DEF |
|
1439 2) Added EPenState attribute to HAL to get/set state of the digitiser. |
|
1440 3) Added EKeyboardState. |
|
1441 4) Added pen/display get/set functionality to BRUTUS HAL DLL and driver. |
|
1442 5) Added Enable() and Disable() functions to digitiser driver on Brutus. |
|
1443 6) Tweeked Brutus digitiser driver to send switch on events when coming |
|
1444 out of standby or hibernation (disabled) mode. |
|
1445 7) Removed LCD switch on from LCD power handler. |
|
1446 8) Generic kernel now doesn't call DisplayOn(). |
|
1447 9) Added Power::SwitchOn() that can be called from device drivers to |
|
1448 send a ESwitchOn event if the KPowerUserCpu bit is not set. Does the |
|
1449 same thing as a call to SetRequirement(KPowerUserCpu | ...) but is |
|
1450 easier to understand. |
|
1451 Added variant that takes a TRawEvent to specify which event is sent |
|
1452 for switch on. |
|
1453 Call Power::SwitchOn() from your device driver to cause full UI switch |
|
1454 on. |
|
1455 10) Tidied Brutus HAL DLL startup code. |
|
1456 11) Made text window server take responsibility for turning on the screen |
|
1457 at switch on. |
|
1458 12) Tidied Assabet HAL DLL startup code and removed spurious panicking |
|
1459 code. |
|
1460 13) Updated HAL\DOC\HAL.DOC boilerplate startup code. |
|
1461 14) Made display on imply switch on, and send events as appropriate |
|
1462 15) assabetb, cirrus7211a, series5mx1 variant updates to maintain current |
|
1463 behaviour. |
|
1464 16) Changed the prototype of DPowerModel::PowerStandby() to return an error |
|
1465 value. |
|
1466 |
|
1467 3) Dennis |
|
1468 1) Fixed a problem with creation of fixed address chunks with initial |
|
1469 size zero. |
|
1470 |
|
1471 4) Jonathan |
|
1472 1) Removed redundant Hal and UserHal functions from kernel and ASSPs. |
|
1473 2) Refroze kernel exports for all platforms other than WINS/WINC. |
|
1474 3) Removed associated variant functions and, where necessary to implement |
|
1475 the HAL API, re-implemented them via a HAL driver on the mainstream |
|
1476 platforms Brutus, Assabet and VTemplate. Other variant DLLs still |
|
1477 contain some redundant functions and may not have implementations for |
|
1478 all appropriate HAL attributes. |
|
1479 |
|
1480 5) Carlos |
|
1481 1) Several changes to Assabet Variant to get PC Card working |
|
1482 2) Assabet builds its own ATA driver (vi_medata.cpp). The generic ATA |
|
1483 driver is not used. Changed the MISA kernel.iby to allow Brutus to use |
|
1484 the generic ATA driver and Assabet to use its Variant-specific one. |
|
1485 |
|
1486 6) Dennis |
|
1487 1) Added integrator port. No screen or serial drivers yet. |
|
1488 |
|
1489 7) Pete |
|
1490 4) Fixed SCE-4V7S6C "MMC Controller card init. function is in-efficient |
|
1491 and unnecessarily complex". This entailed:- |
|
1492 |
|
1493 - Add new TMmcCardArray class to replace the DMMCStack::iCxNewAcqArray[] |
|
1494 and DMMCStack::iCards[] arrays and their associated functionality. |
|
1495 - Removal of ASSP layer function DMMCStack::PhysicalCardSlots() |
|
1496 function as this was duplicating information already returned in the |
|
1497 ASSP layer function DMMCController::SetMachineInfo() function. |
|
1498 - Addition of generic layer DMMCStack::Init() function to determine |
|
1499 the max. number of cards for the platform once - at Controller |
|
1500 init. time rather than every time a card stack is initialized. |
|
1501 - Modification to DMMCStack::PowerDownStack() function to add an extra |
|
1502 argument to this function (TBool aMediaChange) indicating whether |
|
1503 the power down is required due to media change or not. |
|
1504 - Removal of the 'update stack' implementation in the generic layer of |
|
1505 the Controller. This was intended to re-scan for new cards after a |
|
1506 media change. This is now redundant since all cards are always |
|
1507 powered down on media change. |
|
1508 - Various comments added throughout PS_MMC.CPP to aid clarity. |
|
1509 5) Fixed FID-4UZLFG "Increase number of supported local drives" |
|
1510 |
|
1511 8) Nicolas |
|
1512 1) Added \brutusa\brutusa.mbc |
|
1513 2) Cogent: Moved call to ImpHal::EnableIrqs() from ImpPic::Init3() to |
|
1514 beginning of ImpHal::Init3() to avoid the board hanging forever while |
|
1515 initialising the PCI base module. |
|
1516 |
|
1517 9) William |
|
1518 1) Removed temporary WINSCW workaround in up_i64.cpp, now that the CodeWarrior |
|
1519 compiler supports the BT instruction. |
|
1520 2) Added WINSCW-specific variation of the path constants in up_path.cpp |
|
1521 3) Rearranged win32/up_trp.cpp version of TTrap::Trap() so that the register |
|
1522 saving happens before the C++ code to manipulate iResult and aResult. This |
|
1523 avoids a problem where the CodeWarrior compiler was saving EBX on the stack and |
|
1524 and using it as a temporary during the iResult/aResult mangling, causing the |
|
1525 wrong EBX value to be restored during Leave. |
|
1526 |
|
1527 Version 1.02.353 |
|
1528 ================ |
|
1529 (Made by RobertJ, 26/03/2001) |
|
1530 |
|
1531 1) Carlos |
|
1532 1) Several Changes in Assabet Bootstrap and vi_power.cpp in order to get |
|
1533 the Power Management/Sleep Mode working properly. |
|
1534 2) Changes to Assabet Keyboard driver/controller |
|
1535 3) Removed #define __USE_LEDS_FOR_SYSTEM_DEBUG. User software can now use |
|
1536 those LEDs if they wish. |
|
1537 4) Had to implement a function in the Assabet Variant to allow enabling |
|
1538 RTC Interrupts. Surprisingly the SA1100 ASSP does not have these |
|
1539 functions! |
|
1540 5) Some changes to the SA1100 Interrupt controller (only affect Assabet |
|
1541 as they were changes in the way External Interrupts are handled). |
|
1542 6) Needed to export the Kernel function ImpMmu::LinearToPhysical as this |
|
1543 will be called from the Assabet Variant (vi_power.cpp). |
|
1544 7) Got rid of the debug message printed every time the Variant is called: |
|
1545 after waking up, a call to re-enable the Debug Port would attempt to |
|
1546 print this out and crash! |
|
1547 |
|
1548 2) Alastair |
|
1549 1) Added initial transfer buffer functionality. Chief classes are |
|
1550 RTransferBuffer and RTransferWindow user-side, described in |
|
1551 E32TransBuf.h, and DTransferBuffer and DTransferWindow |
|
1552 kernel-side, described in K32Std.h. Test program is built from |
|
1553 e32test\mmu\t_transbuf.cpp, though the test isn't fully |
|
1554 complete yet. Also, the scheme doesn't yet cater for transfer |
|
1555 buffer access via transfer windows for "fixed" processes, though |
|
1556 it will shortly. |
|
1557 |
|
1558 3) Nicolas |
|
1559 1) Introduced example metabuild script for MCGA (see |
|
1560 \cogent1\cogent1.mbc). |
|
1561 |
|
1562 4) MarkCa |
|
1563 1) Fixed CAN-4TXKZQ (Using a PC Card can wrongly produce password |
|
1564 notifier) |
|
1565 2) Fixed CAN-4TWM6E (L7200 MMC Controller takes control of second UART) |
|
1566 Fix affects t_atadrv, so changed \l7200a\va_hw.cpp to use non-zero |
|
1567 machine uid. |
|
1568 3) Fixed CAN-4TYFHS (Reading to the end of a MultiMediaCard can produce |
|
1569 an out-of-range error) |
|
1570 4) Fixed EDNTDAS-4L4JZ8 (Thread leakage using emulators) |
|
1571 5) Fixed TOD-4RXJSS (Race condition causing accessing of already delete |
|
1572 pointer when deleting DChannelComm) |
|
1573 6) Fixed CAN-4UBJU2 (Controller does not process all error conditions) |
|
1574 7) Changed l7200\pa_mmc.cpp to return KMMCErrNotSupported because pre 2.1 |
|
1575 controller. |
|
1576 8) Added __MLNK__ case to cpu defines in u32std.h. |
|
1577 9) Fixed CAN-4UNE8D (MMC Controller access violation after emergency power |
|
1578 down) |
|
1579 10) Removed KPBUS1 | KPBUS2 | KPBUSDRV tracing from mlnk\header.iby. |
|
1580 |
|
1581 5) AndrewJ |
|
1582 1) Enabled LFFS on assabet. |
|
1583 2) Edited vi_hw.cpp and vi_pbus.cpp to enable LFFS on K: with PC Card |
|
1584 disabled. |
|
1585 3) put in fixes from 6.1 Numbers: SCE-4TVQ78 |
|
1586 TOD-4RWEHL |
|
1587 |
|
1588 6) Dennis |
|
1589 1) Fixed XScale RTC rounding problem |
|
1590 2) Added check for imprecise aborts on XScale - fault the kernel if they |
|
1591 occur. |
|
1592 3) iExtraData=FSR for both data and prefetch aborts. |
|
1593 |
|
1594 *** Release note for XScale delivery *** |
|
1595 |
|
1596 This release supports the Intel IQ80310 evaluation board based on the |
|
1597 XScale 80200 processor (Coyanosa). Code for this board can be built by |
|
1598 specifying platform MCOY on the build command line. |
|
1599 |
|
1600 The following property definitions are used to specify the CPU type (in |
|
1601 \e32\include\u32std.h): |
|
1602 |
|
1603 __CPU_XSCALE__ |
|
1604 Means that the CPU is based on the XScale microarchitecture |
|
1605 __CPU_ARMV5TE |
|
1606 Means that the CPU supports the ARMv5TE instruction set |
|
1607 __CPU_ARM_ABORT_MODEL_RESTORED |
|
1608 Means that the base register is unaltered if a load/store with base |
|
1609 register writeback is aborted. |
|
1610 __CPU_SPLIT_CACHE |
|
1611 Means that the CPU uses separate instruction and data caches |
|
1612 __CPU_SPLIT_TLB |
|
1613 Means that the CPU uses separate instruction and data TLBs |
|
1614 __CPU_WRITE_BUFFER |
|
1615 Means that the CPU uses a write buffer |
|
1616 __CPU_WRITE_BACK_CACHE |
|
1617 Means that the CPU (data) cache supports write-back operation and that |
|
1618 the OS uses this mode for normal RAM allocations. |
|
1619 __CPU_CACHE_WRITE_ALLOCATE |
|
1620 Means that the CPU (data) cache supports line allocation on writes and |
|
1621 that the OS uses this mode for normal RAM allocations. |
|
1622 __CPU_CACHE_FLUSH_BY_LINE_ALLOC |
|
1623 Means that the (data) cache is cleaned/flushed by using an explicit |
|
1624 line allocate instruction. |
|
1625 __CPU_CACHE_POLICY_IN_PTE |
|
1626 Means that the (data) cache policy can be changed between writethrough |
|
1627 and writeback on a page-by-page basis using flags in the page table |
|
1628 entries. |
|
1629 __CPU_HAS_CACHE_TYPE_REGISTER |
|
1630 Means that the CPU possesses the cache type register as specified in |
|
1631 the ARM architecture reference manual (CP15 CRn=CRm=0, opc2=1) |
|
1632 __CPU_HAS_SINGLE_ENTRY_ITLB_FLUSH |
|
1633 Means that the CPU supports the 'Flush single ITLB entry by MVA' |
|
1634 instruction (MCR P15, 0, Rn, C8, C5, 1) |
|
1635 __CPU_HAS_SINGLE_ENTRY_ICACHE_FLUSH |
|
1636 Means that the CPU supports the 'Flush single ICache line by MVA' |
|
1637 instruction (MCR P15, 0, Rn, C7, C5, 1) |
|
1638 __CPU_HAS_BTB |
|
1639 Means that the CPU has a branch target buffer which needs to be |
|
1640 flushed explicitly in conjunction with partial ICache flushes. |
|
1641 __CPU_USE_MMU_TEX_FIELD |
|
1642 Means that the CPU supports the extended page table permissions (TEX) |
|
1643 field. |
|
1644 __CPU_EXC_VECTORS_MOVABLE |
|
1645 Means that the CPU allows the exception vectors to be relocated to |
|
1646 FFFF0000. |
|
1647 |
|
1648 All E32 and F32 automatic tests pass on this release, with the exception |
|
1649 of: |
|
1650 T_PCCD1, T_PCCD2 - because the board does not support PCMCIA |
|
1651 T_DEBUGGER - because the debugger uses a bit pattern for breakpoints |
|
1652 which is defined in ARM Arch 5 (was undefined on ARM Arch 4). This |
|
1653 is being handled as a defect (defect number MAY-4V4E5V). |
|
1654 |
|
1655 The branch target buffer is not enabled by this release. This is due to a |
|
1656 known problem when executing THUMB code with the BTB enabled. |
|
1657 |
|
1658 7) Pete |
|
1659 1) First release of Hardware Accelerator (HWA) LDD and a crude emulation |
|
1660 of a HWA PDD on WINS. |
|
1661 2) Changes to MMC Controller to support SD Memory card initialisation. |
|
1662 3) Added TMMCCardArray class and various other minor changes to the MMC |
|
1663 Controller such (e.g. more comments). |
|
1664 4) Improved the WINS MMC emulation. Two cards are now emulated rather |
|
1665 than one as before. Also, better account of the current card status is |
|
1666 taken when deciding how to respond to an MMC command. |
|
1667 5) Change to the WINS local drive mapping. Local drive 2 |
|
1668 is now the primary partition on the second emulated MMC card rather |
|
1669 than a secondry partition on the first emulated MMC card. |
|
1670 6) Temporarily disabled PC Card Peripheral bus (EPBUS.DLL) on Cirrus Logic |
|
1671 board and replaced this with MMC Peripheral bus to facilitate development |
|
1672 of SD Memory card development. (PC Card support will be restored once |
|
1673 the multiple peripheral bus Controllers are supported). |
|
1674 |
|
1675 8) William |
|
1676 1) Added exported destructor to CAsyncCallBack, to solve a problem with |
|
1677 the CodeWarrior compiler. |
|
1678 |
|
1679 Version 1.02.352 |
|
1680 ================ |
|
1681 (Made by Morgan, 08/03/2001) |
|
1682 |
|
1683 0) Requires E32TOOLS(173), E32TOOLP(226), F32(260) |
|
1684 from \\epoc\development\base\ongoing\... |
|
1685 |
|
1686 1) Morgan |
|
1687 1) Split functions in UP_DLL.CPP into separate source files. This |
|
1688 allows the linker to discard unused functions. |
|
1689 Functions are grouped by functional area. up_dll_file.cpp, |
|
1690 up_dll_global.cpp, up_dll_static, up_dll_tls.cpp. |
|
1691 2) Split EDLL.LIB into EDLL.LIB containing the entrypoint and |
|
1692 EDLLSTUB.LIB containing the class Dll stub functions. |
|
1693 3) Removed strange .idata$3 padding from UP_DLL.CPP since (we think) it |
|
1694 is a hack for a defunct version of GCC |
|
1695 4) Moved thumb gcc helper functions into up_gcc.cpp in EGCC.LIB |
|
1696 5) Removed thumb gcc helper functions from uc_exe.cpp. These are now in |
|
1697 EGCC.LIB that should be included in the link of a GCC EXE or GCC DLL. |
|
1698 6) Moved float gcc helper functions into up_gcc_float.cpp in EGCC.LIB |
|
1699 7) Removed null definition of atexit() from up_dll.cpp |
|
1700 8) Deleted \e32\euser\epoc\arm\uc_dll.cpp since it is not used anywhere |
|
1701 9) Integrated MAWD DDebugger bug fix (again) |
|
1702 10) Added default cpu definition for __MTEMPLATE__ in U32STD.H to make it |
|
1703 compile |
|
1704 |
|
1705 2) Carlos |
|
1706 1) Disabled the Pc Card on Assabet as it is not fully working and causes |
|
1707 problems when using the CF loader to download an image. |
|
1708 |
|
1709 3) Dennis |
|
1710 1) Added basic port to Intel XScale 80200 CPU on IQ80310 board. |
|
1711 2) Fixed defect HAS-4U7N92 (T_WWINS hangs on Brutus). This is due to the |
|
1712 smaller screen size compared with the Series 5. |
|
1713 Modified notifier stuff to take account of the screen size. |
|
1714 |
|
1715 4) RobertJ |
|
1716 1) Added notification of clear stall to USB Client |
|
1717 2) Fixed dma handling code for USB Client. |
|
1718 |
|
1719 5) Alastair |
|
1720 1) Added initial transfer buffer functionality. Chief classes are |
|
1721 RTransferBuffer and RTransferWindow user-side, described in |
|
1722 E32TransBuf.h, and DTransferBuffer and DTransferWindow |
|
1723 kernel-side, described in K32Std.h. Test program is built from |
|
1724 e32test\mmu\t_transbuf.cpp, though the test isn't fully |
|
1725 complete yet. Also, the scheme doesn't yet cater for transfer |
|
1726 buffer access via transfer windows for "fixed" processes, though |
|
1727 it will shortly. |
|
1728 |
|
1729 6) Nicolas |
|
1730 1) Introduced example metabuild script for MCGA (see |
|
1731 \cogent1\cogent1.mbc). |
|
1732 |
|
1733 7) MarkCa |
|
1734 1) Fixed CAN-4TXKZQ (Using a PC Card can wrongly produce password notifier) |
|
1735 2) Fixed CAN-4TWM6E (L7200 MMC Controller takes control of second UART) |
|
1736 Fix affects t_atadrv, so changed \l7200a\va_hw.cpp to use non-zero |
|
1737 machine uid. |
|
1738 3) Fixed CAN-4TYFHS (Reading to the end of a MultiMediaCard can produce an |
|
1739 out-of-range error) |
|
1740 4) Fixed EDNTDAS-4L4JZ8 (Thread leakage using emulators) |
|
1741 5) Fixed TOD-4RXJSS (Race condition causing accessing of already delete |
|
1742 pointer when deleting DChannelComm) |
|
1743 6) Fixed CAN-4UBJU2 (Controller does not process all error conditions) |
|
1744 7) Changed l7200\pa_mmc.cpp to return KMMCErrNotSupported because pre 2.1 |
|
1745 controller. |
|
1746 8) Added __MLNK__ case to cpu defines in u32std.h. |
|
1747 9) Fixed CAN-4UNE8D (MMC Controller access vilation after emergency power |
|
1748 down) |
|
1749 10) Removed KPBUS1 | KPBUS2 | KPBUSDRV tracing from mlnk\header.iby. |
|
1750 |
|
1751 Version 1.02.351 |
|
1752 ================ |
|
1753 (Made by Carlos, 20/02/2001) |
|
1754 |
|
1755 1) Carlos |
|
1756 1) Added Assabet Variant (\Assabetb). This is an interim release |
|
1757 (see Release_Notes.txt) |
|
1758 2) Debug Monitor on SA1100 ASSP: now gets the serial port number to |
|
1759 be used as debug port from the variant TInt Variant::DebugInit(). |
|
1760 3) Interrupt Controller on SA1100 ASSP: expanded the Interrupt controller |
|
1761 to work with Conceptual Interrupts (IRQ11-27) and external interrupts. |
|
1762 Also disabled the watchdog to free-up the OST Timer3 as an auxillary |
|
1763 timed interrupt source for LFFS. |
|
1764 4) Several changes to Brutus' Variant according to what's decribed above. |
|
1765 5) FIR Driver: Assabet allows setting the IR range. Therefore a new |
|
1766 Synchronous Request was introduced to deal with this. |
|
1767 6) ecomm driver - as above, passes the setting for the range on |
|
1768 iSIRSettings member of the Config structure. |
|
1769 7) Implemented EARLY DEBUG on SA1100 ASSP. |
|
1770 8) A few changes on the SA1100 ASSP implementation of PC Card Controller. |
|
1771 9) SA1100 Text shell: changed Background/foreground colours to improve |
|
1772 visibility on Assabet. |
|
1773 10) Text Shell (generic): now traps EKeyIncBrightness and |
|
1774 EKeyDecBrightness. |
|
1775 11) HAL: added Machine ID for Assabet on hal_data.h. |
|
1776 12) HAL: changed hal.iby file to include an HAL##VARIANT##.DLL to get |
|
1777 round the problem of having two Variants coming off the same ASSP but |
|
1778 not sharing the same HAL. Changed the hal.mmp on \assabetb, \brutus, |
|
1779 \cirrus721, \cogent1, \l7200, \series5mx1 and \vtemplate. |
|
1780 NOTE: Had to change \romkit\base.iby to allow overnight builds to |
|
1781 build correctly. |
|
1782 13) MISA EKERN def file (e32\bmisa\ekernu.def) - includes a new export |
|
1783 Plat::BindExtInterrupt(..) to allow binding to external interrupts |
|
1784 on Assabet. |
|
1785 14) Some changes on MISA .IBY files. LFFS is excluded for the time being, |
|
1786 even on Brutus. It will be put back when Assabet's LFFS is ready. The |
|
1787 bootstrap is now passed with the Variant extension to its name. Now |
|
1788 includes a Hal LDD in kernel.iby. |
|
1789 15) MISA Variants allowed (\e32\rombuild\rom.cfg): now allows 3 variants, |
|
1790 Brutus (BA), Assabet-only (A0) and Assabet+Companion Card (AB). |
|
1791 |
|
1792 2) MarkCa |
|
1793 1) UART media change must now be explicitly compiled in for linkup |
|
1794 MMC port. |
|
1795 2) t_atadrv will now not run media change tests on linkup. Machine |
|
1796 UID modified in va_hw.cpp to avoid clash with Cogent. |
|
1797 |
|
1798 3) William |
|
1799 1) Introduce __CW32__ defines for CodeWarrior, and adjust various |
|
1800 compiler-related definitions accordingly. |
|
1801 2) Workaround bugs in the CW inline assembler |
|
1802 3) Remove spurious WINBASEAPI decorations in euniw.h, which upset |
|
1803 CodeWarrior. |
|
1804 |
|
1805 4) RobertJ |
|
1806 1) Fixed problem with FIR reads in D_FIR.CPP, the LDD. When read |
|
1807 completes to LDD from the PDD it was possible for another read to |
|
1808 complete the same user request. |
|
1809 2) Added first release of USB client for SA-1100. Components are |
|
1810 EUSBC.LDD, which is a generic LDD, and EUSBCC.DLL. \EUSBCC is the USB |
|
1811 Client Controller and loads as a KERNEL extension. |
|
1812 |
|
1813 Version 1.02.350 |
|
1814 ================ |
|
1815 (Made by Dennis, 05/02/2001) |
|
1816 |
|
1817 1) William |
|
1818 1) Adjust the x86 inline assember in euser\emul\win32 so that it is |
|
1819 acceptable to the CodeWarrior compiler: change the 8000h style |
|
1820 constants to 0x8000, and change "_asm SomeLabel:" into "SomeLabel:". |
|
1821 |
|
1822 2) Dennis |
|
1823 1) Added APIs to support execution of data as code, for use by just in |
|
1824 time compilers for Java and also for the ARM JBit extension. New APIs |
|
1825 are: |
|
1826 |
|
1827 TInt RChunk::CreateLocalCode(TInt aSize, TInt aMaxSize, TOwnerType); |
|
1828 |
|
1829 This creates a data chunk with a globally unique virtual address which |
|
1830 is allocated from the top of virtual address space (as for EXE and DLL |
|
1831 code chunks). The chunk is accessible only by the current process |
|
1832 (unlike DLL code chunks) and is marked by the kernel as containing |
|
1833 code. This means that on a split-TLB machine the ITLB will be flushed |
|
1834 when a reschedule occurs to or from a process with a chunk of this |
|
1835 type mapped into it and also when pages are decommitted from such a |
|
1836 chunk. The globally unique virtual address means that the ICache need |
|
1837 not be flushed on a reschedule. |
|
1838 |
|
1839 RHeap* UserHeap::ChunkHeap(RChunk& aChunk, TInt aMinLength, TInt aGrowBy=KMinHeapGrowBy); |
|
1840 |
|
1841 This creates a heap in an already existing chunk. It is intended to |
|
1842 allow a heap to be created in a local code chunk; this heap can then |
|
1843 be used to hold code fragments from a JIT compiler. |
|
1844 |
|
1845 void User::IMB_Range(TAny* aStart, TAny* aEnd); |
|
1846 |
|
1847 This performs whatever cache cleaning/flushing operations are |
|
1848 necessary in order to guarantee correct execution of code in the |
|
1849 specified address range (from aStart inclusive to aEnd exclusive), |
|
1850 under the assumption that this code has been loaded/modified by user |
|
1851 code. Typically this will involve cleaning the data cache for the area |
|
1852 concerned, draining the write buffer and flushing the instruction |
|
1853 cache and branch target buffer for the area concerned. |
|
1854 |
|
1855 2) Added a new chunk type EUserSelfModCode to TChunkType to represent the |
|
1856 new chunks. Added a new attribute DPlatChunk::ECode to the DPlatChunk |
|
1857 iAttributes field to signify any chunk containing code. |
|
1858 |
|
1859 3) Added code to notify the ARM ETM of reschedules if the PROCID register |
|
1860 exists (conditioned on __CPU_HAS_ETM_PROCID_REG). |
|
1861 |
|
1862 4) Added support for kernel trace via the JTAG port on ARM720 and ARM920. |
|
1863 The KHARDWAREASSIST bit in the debug mask controls whether tracing is |
|
1864 directed to the JTAG port or to a UART. |
|
1865 |
|
1866 5) Modified perl script halcfg.pl so that the output file is not opened |
|
1867 until the inputs have been parsed - this prevents strange error |
|
1868 messages due to a zero length file being generated. |
|
1869 |
|
1870 |
|
1871 Version 1.02.310 |
|
1872 ================ |
|
1873 (Made by Morgan, 09/04/2001) |
|
1874 |
|
1875 1) Jonathan |
|
1876 1) Move notes for releases prior to creation of 6.1 release branch to |
|
1877 releases_old.txt. |
|
1878 |
|
1879 2) Pete |
|
1880 1) Fixed SCE-4V7S6C "MMC Controller card init. function is in-efficient and |
|
1881 unnecessarily complex". This entailed:- |
|
1882 |
|
1883 - Add new TMmcCardArray class to replace the DMMCStack::iCxNewAcqArray[] |
|
1884 and DMMCStack::iCards[] arrays and their associated functionality. |
|
1885 - Removal of ASSP layer function DMMCStack::PhysicalCardSlots() function as |
|
1886 this was duplicating information already returned in the ASSP layer function |
|
1887 DMMCController::SetMachineInfo() function. |
|
1888 - Addition of generic layer DMMCStack::Init() function to determine the max. |
|
1889 number of cards for the platform once - at Controller init. time rather than |
|
1890 every time a card stack is initialized. |
|
1891 - Modification to DMMCStack::PowerDownStack() function to add an extra |
|
1892 argument to this function (TBool aMediaChange) indicating whether the power |
|
1893 down is required due to media change or not. |
|
1894 - Removal of the 'update stack' implementation in the generic layer of the |
|
1895 Controller. This was intended to re-scan for new cards after a media change. |
|
1896 This is now redundant since all cards are always powered down on media |
|
1897 change. |
|
1898 - Various comments added throughout PS_MMC.CPP to aid clarity. |
|
1899 2) Fixed FID-4UZLFG "Increase number of supported local drives" |
|
1900 |
|
1901 |
|
1902 Version 1.02.309 |
|
1903 ================ |
|
1904 (Made by Will Ramsay, 03/04/2001) |
|
1905 |
|
1906 1) Requires E32TOOLP(226), F32(237) |
|
1907 from \\epoc\development\base\ongoing\... |
|
1908 |
|
1909 2) Backported Morgan's 6.2 changes to remove import stubs: |
|
1910 1) Split functions in UP_DLL.CPP into separate source files. This |
|
1911 allows the linker to discard unused functions. |
|
1912 Functions are grouped by functional area. up_dll_file.cpp, |
|
1913 up_dll_global.cpp, up_dll_static, up_dll_tls.cpp. |
|
1914 2) Split EDLL.LIB into EDLL.LIB containing the entrypoint and |
|
1915 EDLLSTUB.LIB containing the class Dll stub functions. |
|
1916 3) Removed strange .idata$3 padding from UP_DLL.CPP since (we think) it |
|
1917 is a hack for a defunct version of GCC |
|
1918 4) Moved thumb gcc helper functions into up_gcc.cpp in EGCC.LIB |
|
1919 5) Removed thumb gcc helper functions from uc_exe.cpp. These are now in |
|
1920 EGCC.LIB that should be included in the link of a GCC EXE or GCC DLL. |
|
1921 6) Moved float gcc helper functions into up_gcc_float.cpp in EGCC.LIB |
|
1922 7) Removed null definition of atexit() from up_dll.cpp |
|
1923 |
|
1924 |
|
1925 Version 1.02.308 |
|
1926 ================ |
|
1927 (Made by MarkCa, 20/03/2001) |
|
1928 |
|
1929 1) Morgan/AndrewF |
|
1930 1) Fixed FOD-4TAH7A "DMA double buffering will not work on Halla". |
|
1931 This is an interface change and it is not source compatable. |
|
1932 Added extra buffer fill during transfer initialisation for double |
|
1933 buffered HW. Added explicitly named enums and new imp functions |
|
1934 in ASSP to make writing ImpDMA easier. |
|
1935 2) Changed all ASSPs, and added implementation details to template |
|
1936 port. |
|
1937 Detail of changes required to \e32\ekern\epoc\arm\<assp>\KA_DMA.CPP: |
|
1938 a) Remove ImpDma::NextBlock() |
|
1939 b) Add the following functions: |
|
1940 |
|
1941 /** |
|
1942 * No more DMA blocks for this transfer |
|
1943 * |
|
1944 * TO DO: (mandatory) |
|
1945 * |
|
1946 * Modify to suit your hardware. The code below is just an example |
|
1947 * |
|
1948 * If your DMA hardware has multiple buffers this function should be |
|
1949 * used to disable the empty buffer |
|
1950 */ |
|
1951 void ImpDma::FinalBlock(TInt aChannel); |
|
1952 |
|
1953 /** |
|
1954 * Get the reason for the DMA interrupt. |
|
1955 * Called from TDmaInterrupt::Service() |
|
1956 * |
|
1957 * TO DO: (mandatory) |
|
1958 * |
|
1959 * Modify to suit your hardware. The code below is just an example |
|
1960 * |
|
1961 * EBufferEmpty indicates that one buffer is empty |
|
1962 * EStall indicates the entire transfer is complete, ie both buffers |
|
1963 * empty, FinalBlock() has been called. |
|
1964 * EError indicates a transfer error |
|
1965 * (ELastBuffer indicates that one buffer is empty and FinalBlock() |
|
1966 * has been called. On most hardware it is sufficient to return |
|
1967 * EBufferEmpty in this case) |
|
1968 * |
|
1969 */ |
|
1970 Dma::TDmaState ImpDma::GetState(TInt aChannel); |
|
1971 |
|
1972 // |
|
1973 // Return ESingleBuffer or EDoubleBuffer |
|
1974 // |
|
1975 Dma::TDmaBufferMode ImpDma::BufferMode(); |
|
1976 |
|
1977 |
|
1978 2) Nicolas |
|
1979 1) Fixed STE-4UEQC2 "The case off event and possibly some other events |
|
1980 do not get through WSERV correctly". EPOC doesn't any more send |
|
1981 two ESwitchOn notifications instead of one when starting up. The |
|
1982 emulator now sends only one ESwitchOn notification when being |
|
1983 switched back on after an emergency power off. The emulator sends |
|
1984 ECaseOpen or ECaseClose notifications when F11 is pressed while not |
|
1985 in standby mode. And finally the emulator doesn't any more switch |
|
1986 off automatically when the case is closed (this is up to the |
|
1987 user-side event consumer). |
|
1988 2) Fixed STE-4UJPEC "Some of the HAL attributes are not supported". |
|
1989 The following attributes are now supported on WINS: EPenDisplayOn, |
|
1990 ECaseSwitch, ECaseSwitchDisplayOn, ECaseSwitchDisplayOff. |
|
1991 3) T_NEWHAL TestGetAll() output modified to make it readable on a |
|
1992 small screen (key press expected when screen is full). |
|
1993 3) MarkCa |
|
1994 1) Fixed CAN-4UNE8D (MMC Controller access vilation after emergency power |
|
1995 down) |
|
1996 2) Removed KPBUS1 | KPBUS2 | KPBUSDRV tracing from mlnk\header.iby. |
|
1997 |
|
1998 |
|
1999 Version 1.02.307 |
|
2000 ================ |
|
2001 (Made by Nicolas, 27/02/2001) |
|
2002 |
|
2003 1) Jonathan |
|
2004 Manual e32test cleanup: |
|
2005 1) Moved T_COLOUR from a manual to a support test since no-one bothers |
|
2006 implementing text video modes other than mono. Made those screen |
|
2007 drivers that didn't already return KErrNone from SetMode(EMono). |
|
2008 2) Moved T_PS and T_WWINS from manual to support tests since they're not |
|
2009 useful. |
|
2010 3) Nuked T_PTNOS test and D_PTNOS test driver. |
|
2011 4) Nuked T_REGRAM registry test (which was lurking unused since v6.0). |
|
2012 5) Made T_INF prompt for confirmation that displayed values are OK, so |
|
2013 if not OK an error appears in the test log. |
|
2014 6) Fixed FID-4TXFVX "Wrong defaults for MainBatteryGood()". |
|
2015 7) Fixed FID-4TYF78 "FIQ link with battery state is broken". |
|
2016 8) Fixed BAR-4SMG99 "Efficiently implement the "MergeModifiers" function |
|
2017 in e32\include\K32KEYS.INL". |
|
2018 9) Fixed FID-4RRMTH "bootstrap: Bug searching for sleep info block". |
|
2019 |
|
2020 2) MarkCa |
|
2021 1) Fixed CAN-4TXKZQ (Using a PC Card can wrongly produce password |
|
2022 notifier) |
|
2023 2) Fixed CAN-4TWM6E (L7200 MMC Controller takes control of second UART) |
|
2024 Fix affects t_atadrv, so changed \l7200a\va_hw.cpp to use non-zero |
|
2025 machine uid. |
|
2026 3) Fixed CAN-4TYFHS (Reading to the end of a MultiMediaCard can produce |
|
2027 an out-of-range error) |
|
2028 4) Fixed EDNTDAS-4L4JZ8 (Thread leakage using emulators) |
|
2029 5) Fixed TOD-4RXJSS (Race condition causing accessing of already delete |
|
2030 pointer when deleting DChannelComm) |
|
2031 6) Fixed CAN-4UBJU2 (Controller does not process all error conditions) |
|
2032 |
|
2033 3) Dennis |
|
2034 1) Fixed defect HAS-4U7N92 (T_WWINS hangs on Brutus). This is due to the |
|
2035 smaller screen size compared with the Series 5. |
|
2036 Modified notifier stuff to take account of the screen size. |
|
2037 2) Fixed defect HAD-4T2EJ5 (P::TimerLockSpecToTicks returns incorrect |
|
2038 value). |
|
2039 3) Fixed defect MAT-4TYKLE (Profiler doesn't work on Quartz/Brutus). |
|
2040 |
|
2041 |
|
2042 Version 1.02.306 |
|
2043 ================ |
|
2044 (Made by Markdo, 07/02/2001) |
|
2045 |
|
2046 1) Tim Band |
|
2047 1) Fixed BAD-4SVJY8 "Unavoidable initialisation cost for TRect, TPoint |
|
2048 and TSize" |
|
2049 |
|
2050 2) Alastair |
|
2051 1) Fixed EDNTBAD-4Q8M2F "CBufSeg can leak memory" |
|
2052 2) Fixed EDNATHE-4QQJSU |
|
2053 "Inconsistent error handling in use of S::MakeHandleAndOpen", |
|
2054 though there's still some work to be done in this area. |
|
2055 3) Fixed FID-4RKDJT |
|
2056 "Use Cogent key translation tables on template port" |
|
2057 4) Fixed HAD-4RLFVN |
|
2058 "Template header.iby has exyin.dll as file instead of extension" |
|
2059 5) Fixed HAD-4RLFSY |
|
2060 "Template header.iby missing kerneltrace entry" |
|
2061 6) Fixed FID-4SNDAD |
|
2062 "TemplatePort: Tick counter not invalidated when time changed" |
|
2063 |
|
2064 3) Morgan |
|
2065 1) Integrated fix for DPassiveDebugger allocation bug for |
|
2066 WINDERMERE |
|
2067 |
|
2068 4) Jonathan |
|
2069 1) Created new \e32\ekern\emul\win32\d_entry.cpp as a copy of |
|
2070 \e32\euser\emul\win32\up_dll.cpp. This allows edev.lib to be built |
|
2071 for WINS in an IPR Category E only build. To preserve layering WINS |
|
2072 device driver initialisation no longer wires the kernel. |
|
2073 2) Documented the deprecated nature of UserHAL enums in e32hal.h. |
|
2074 Added minimal documentation to \hal\inc\hal.h and hal_data.h. |
|
2075 |
|
2076 5) MarkCa |
|
2077 1) Update linked build by removing warnings from linkup ekern and |
|
2078 implemented polling after MMC data transfers. |
|
2079 |
|
2080 Version 1.02.304 |
|
2081 ================ |
|
2082 (Made by Pete, 19/01/2001) |
|
2083 |
|
2084 1) Morgan |
|
2085 1) Fixed EDNSCHM-4M7PAJ. Added RMessagePtr::IsNull() |
|
2086 2) Fixed EDNJPAR-4KLLCA "Brutus bootstrap contains large delay..." |
|
2087 3) Fixed EDNRFID-4NVFWF "Bootstrap test-code has Brutus-specific code" |
|
2088 4) Fixed EDNRFID-4MVEQV "Bootstrap: bug in RAM width checking" |
|
2089 5) Fixed EDNRFID-4MVKBL "Bootstrap attempts to write to ROM" |
|
2090 6) Fixed EDNRFID-4NXETX "Bootstrap: bugs mapping IO as sections" |
|
2091 7) Fixed EDNWROS-4LQEPN "bootstrap component -WHAT output incorrect" |
|
2092 8) Fixed EDNRFID-4LGBVH "Bootstrap should keep PE file" |
|
2093 9) Fixed EDNRFID-4PXFYK "Add buffered, not cached flag to bootstrap" |
|
2094 10) Fixed EDNRFID-4PTHXH "Flush D TLBs & Cache in bootstrap after enabling |
|
2095 MMU" |
|
2096 11) Fixed EDNRFID-4MVJZQ "Bootstrap bugs finding initial scratch RAM" |
|
2097 Tested on COGENT, BRUTUS, [UDEB,UREL] |
|
2098 12) Fixed HEY-4STFK7 "Template port: Definition of interrupt names |
|
2099 should..." |
|
2100 13) Fixed TOD-4RJJ75 "Corruption of K::TickQ". This fix creates a change |
|
2101 in the behaviour of the emulator - comms power handler active requests |
|
2102 keep the power requirement up. In practice this means that the |
|
2103 emulator will never power off. A proper fix will have to wait for v7. |
|
2104 |
|
2105 2) Pete |
|
2106 1) Fixed a problem introduced in release 303 with the |
|
2107 Cirrus bootstrap which was mapping in 16K rather than 12K for the h/w |
|
2108 registers. |
|
2109 2) Changes to the MMC Controller - to the way that the |
|
2110 ASSP layer reports the operating PSU voltage. Removed TOCR class. |
|
2111 |
|
2112 3) Dennis |
|
2113 1) Modified low-memory notification system. There are now two TChanges |
|
2114 flags: EChangesFreeMemory and EChangesOutOfMemory. The first is raised |
|
2115 if the free memory level crosses the relevant threshold, and the |
|
2116 second is raised if an allocation fails due to insufficient free |
|
2117 memory. |
|
2118 |
|
2119 4) Jonathan |
|
2120 1) Brutus HAL: Fixed defect EDNABOT-4MCGNL "HALData::EKeyboardClickVolume |
|
2121 doesn't accept valid value". Key click and digitiser click are not |
|
2122 supported on Brutus for 6.1. Changed the values reported by HAL to |
|
2123 reflect this. Cogent was similarly incorrect. |
|
2124 2) Added memory traces for kernel stack and data. |
|
2125 3) Brutus keyboard: Fixed defect JAN-4RLLH3 "Brutus board doesn't map |
|
2126 EKeyDevice key codes". Made Fn modifier generate EKeyDevice0-9. Fixed |
|
2127 some Fn and Shift translation errors. |
|
2128 |
|
2129 5) Markdo |
|
2130 1) Implemented Pc Card Controller for Cogent. Controller is disabled (by |
|
2131 setting total supported drives to 1) until timer problem sorted out. |
|
2132 2) Fixed problem in Brutus Pc Card Controller where reset signal not |
|
2133 asserted for long enough when powering up. Reduced length of time spent |
|
2134 in Sa1100::BootWaitMilliSeconds when called in \brutus1\vi_pbus.cpp. |
|
2135 3) Ensured that uart1 in linkup initialised in release builds. |
|
2136 4) Implemented dma on linkup. |
|
2137 |
|
2138 6) MarkCa |
|
2139 1) Merged in MMC security code. _LOCKABLE_MEDIA in e32svr.h is not |
|
2140 commented out any more. |
|
2141 2) Updates to linkup example mmc port. |
|
2142 |
|
2143 |
|
2144 Version 1.02.303 |
|
2145 ================ |
|
2146 (Made by RobertJ, 13/12/2000) |
|
2147 |
|
2148 1) Nicolas |
|
2149 1) ECOMMDCE: Cancel power handler timer and reset power requirements in |
|
2150 DChannelComm dtor (pasted from ECOMM). This avoid a kernel panics |
|
2151 in DPowerHandler::RemovePowerModel() when a DCE comm port is |
|
2152 closed. |
|
2153 2) Added DISTRIBUTION.POLICY file (cat. E) to \e32\rombuild\mlnk and |
|
2154 removed superfluous ones from E32 and BOOTSTRAP. |
|
2155 3) Modified rom.bat to avoid spurious error msg when some files |
|
2156 included in the ROM image contain "warning" or "error". |
|
2157 |
|
2158 2) Dennis |
|
2159 1) Removed all MCORE code. |
|
2160 2) Minor consolidation of MMU-related #ifdefs in order to support ARM920. |
|
2161 __CPU_SOFTWARE_CACHE_FLUSH, __CPU_CACHE_CONFIGURABLE have gone. |
|
2162 __CPU_ARMV3 is no longer supported. |
|
2163 |
|
2164 Remaining #ifdefs with meanings are: |
|
2165 |
|
2166 __CPU_CACHE_POLICY_IN_PTE |
|
2167 This means that you can select write through or write-back caching |
|
2168 on a page-by-page basis. |
|
2169 __CPU_WRITE_BACK_CACHE |
|
2170 This means that write-back caching is being used. This may be |
|
2171 either because the cache only supports write-back mode (eg SA1100) |
|
2172 or the cache supports both modes and write-back mode is being used |
|
2173 (eg ARM920). If this is not defined and the cache can support both |
|
2174 modes, write-through caching will be used. |
|
2175 __CPU_CACHE_FLUSH_BY_DATA_READ |
|
2176 This option is only applicable if write-back caching is in use. |
|
2177 It means that the cache must be flushed by reading spurious data |
|
2178 (i.e. SA1100 mode). Currently the data used for flushing is always |
|
2179 mapped at 0x430fe000 and a cache size of 8K is assumed. If this |
|
2180 option is not selected and write-back caching is in use, the |
|
2181 ARM920 method is used (ie flush each line by way/set index) and |
|
2182 the CP15 cache config register is read to determine the size and |
|
2183 layout of the cache. |
|
2184 __CPU_SPLIT_CACHE |
|
2185 This means that the processor has separate instruction and data |
|
2186 caches. |
|
2187 __CPU_SPLIT_TLB |
|
2188 This means that the processor has separate instruction and data |
|
2189 TLBs. |
|
2190 |
|
2191 3) Added low memory notification. This uses two thresholds (low and |
|
2192 good). If a low-level chunk adjust or allocation of page tables fails |
|
2193 due to out-of-memory or causes the amount of free memory to drop below |
|
2194 the low threshold, all change notifiers are signalled. If a low-level |
|
2195 chunk adjust or freeing of page tables causes the amount of free |
|
2196 memory to rise above the good threshold change notifiers are also |
|
2197 signalled. A new change notifier flag (EChangesFreeMemory) has been |
|
2198 added to signify the occurrence of one of these conditions. A new |
|
2199 function |
|
2200 |
|
2201 TInt UserSvr::SetMemoryThresholds(TInt low, TInt good) |
|
2202 |
|
2203 has been added to set the thresholds at which notification occurs. |
|
2204 |
|
2205 Test program T_CHUNK has been extended to test this system. |
|
2206 |
|
2207 4) Fixed defect EDNATHE-4LCEWZ (Sessions using global message pool can |
|
2208 lose available slots). |
|
2209 5) Fixed defect PAR-4R6DGK (WS_MAIN.CPP should have an extra line of debug |
|
2210 to warn you that you have booted in test mode). |
|
2211 6) Fixed defect EDNJPAR-4L2LMM (WS_MAIN.CPP has a leave without a trap). |
|
2212 7) Fixed defect EDNJPAR-4N9GU2 (TEiger:: missing from added 7211 functions |
|
2213 in ka_eiger.cpp) |
|
2214 8) Fixed defect HAS-4R5NPC (JTAG trace example in template variant). |
|
2215 |
|
2216 3) Alastair |
|
2217 1) Fixed EDNJHAS-4QLRPC "All 3rd UIDs wrong" (in the template port). |
|
2218 Uids are now the UNICODE rather than narrow values. |
|
2219 2) Split this file up on the assumption that its large size is the |
|
2220 reason P4 sometimes has difficulty accepting changes to it. |
|
2221 Old release notes are now in release_old.txt. |
|
2222 3) Fixed EDNJHAS-4QNRUB "Template variant include file in E32" by moving |
|
2223 it into the vtemplate directory and exporting it from there. |
|
2224 4) Fixed EDNJHAS-4QNR4M "Template ASSP is in the wrong place" |
|
2225 5) Changed include paths in VTemplate .mmp files so that they no longer |
|
2226 refer to \e32\include. |
|
2227 6) Added DISTRIBUTION.POLICY files (cat. E) to the \VTemplate |
|
2228 directories. |
|
2229 7) Fixed EDNABRY-4L8NR2 "Text console appears stripy on Windows 95" |
|
2230 8) Fixed problem with emulator parent window appearing jazzed if no |
|
2231 bitmap is specified on Windows9x platforms. |
|
2232 9) Fixed EDNJBRN-4MEP5F |
|
2233 "Threads that use a shared heap don't get their stack 0x29 filled". |
|
2234 10) Fixed EDNATHE-4QQKZM |
|
2235 "RThread().Suspend() deadlocks the emulator". |
|
2236 Under WINS/WINC, if a thread is about to suspends itself then it |
|
2237 relinquishes the kernel critical first. |
|
2238 11) Fixed EDNTEEA-4L4BHV |
|
2239 "WINS emulator does not remember its previous position". |
|
2240 Emulator only remembers its position if it's shutdown with Alt+F4 or |
|
2241 via the Windows menus, not with typing "exit" in eshell or exiting |
|
2242 from a test. It is clever about not "reappearing" off-screen. |
|
2243 12) Extended Dennis' low memory notification changes to work under WINS. |
|
2244 13) Fixed defect FID-4RDJTJ |
|
2245 "Template port keyboard driver generates streams of keyup" |
|
2246 14) Fixed defect FID-4RHKC9 |
|
2247 "Template Idle function should not be naked" |
|
2248 15) Fixed defect EDNNGRE-4LGJU7 |
|
2249 "UserHal::SwitchOff() hangs emulator if mouse is pressed". |
|
2250 Problem: Emulator would power off but not minimise since mouse button |
|
2251 was down, and power on requires impossible window restoration. |
|
2252 Solution: No longer minimise and maximise Emulator window to emulate |
|
2253 Power Off and Power On. Instead, blank screen for Power Off. Power |
|
2254 back on when EStdKeyOff (F9 by default) is pressed. Power on also if |
|
2255 screen is tapped, or case is opened (toggle F11 by default), depending |
|
2256 upon EPointerSwitchesOn and ECaseOpenSwitchesOn |
|
2257 HAL/machine_configuration settings: these values now default to TRUE |
|
2258 for WINS. |
|
2259 |
|
2260 4) MarkCa |
|
2261 1) Fixed defect EDNJHET-4PTLUD (Emulator crashes on startup if com |
|
2262 ports used by another program under win98.) |
|
2263 |
|
2264 5) Pete |
|
2265 1) Modified the FIR LDD so it conforms with latest power handling scheme |
|
2266 (i.e. it requests it's power requirement on all tx requests while at |
|
2267 the same time setting a timer to releases these requirements if it is |
|
2268 allowed to expire). This in turn required an extra function to be |
|
2269 added to each FIR PDD - PowerRequirement() which returns the FIR power |
|
2270 requirements for that particular platform. |
|
2271 2) Fixed warnings when building WINS version of MMC Controller. |
|
2272 3) Modified TBusLocalDrive class and the associated local media |
|
2273 sub-system so that an info. descriptor can be passed down to the media |
|
2274 driver which is available to the driver at the point at which it is |
|
2275 opened. |
|
2276 4) Fixed warnings when building WINS version of MMC Media Driver. |
|
2277 5) Applied various bug fixes supplied by Pete Sanders for Cirrus Logic |
|
2278 build:- |
|
2279 - Increased BDB IO block size from 8K to 16K in bootstrap. |
|
2280 - Moved addition of power handler from Variant::Init3() to |
|
2281 Variant::Init4(). |
|
2282 - Set mem. config registers for both banks of 8Mb flash in |
|
2283 Variant::Init1(). |
|
2284 - Fixed problem with digitizer resistive plate enable signals. |
|
2285 |
|
2286 6) Morgan |
|
2287 1) Fixed EDNGTIN-4KUH3E "Dll::FileName inconsistent in ARMI", |
|
2288 Mini-loader now forms the filename correctly. |
|
2289 2) Fixed memory allocation bug in DPassiveDebugger |
|
2290 2.1) Fixed empty members of DProcess for bootstrapped processes, |
|
2291 (kernel and file server) for the benefit of the debugger |
|
2292 3) Enabled DPassiveDebugger on Cogent UDEB builds |
|
2293 4) EDNMHEY-4N3FV8 "TDma::iChannel should be set back to ENotBound ..." |
|
2294 5) PAR-4R5EGK "Definition of interrupt name should be in ASSP header ..." |
|
2295 Moved interrupt name definitions from ka_pic.cpp to a32*.h |
|
2296 MCGA, MISA, MAWD, MLNK, MEIG |
|
2297 6) Updated Cogent1, Brutusa, Series5mx1, l7200a, cirrus7211x, variants to |
|
2298 use symbolic interrupt names |
|
2299 7) Updated \e32\rombuild\rom.cfg to match stricter options in ROMBUILD |
|
2300 |
|
2301 7) Jonathan |
|
2302 1) Changed meaning of KMEMTRACE kernel trace option. Now only traces |
|
2303 changes in chunk committed size and does not trace RHeap allocation. |
|
2304 |
|
2305 8) Markdo |
|
2306 1) Changed WINS simulated mmc drive to 1MB size (from 2MB). |
|
2307 |
|
2308 9) William |
|
2309 1) Added iRomRootDirectoryList to TSuperPage in K32STD.H |
|
2310 2) Added TExtensionRomHeader in E32ROM.H |
|
2311 3) Modified epoc\kp_ini.cpp to get the iRomRootDirectoryList from the |
|
2312 superpage |
|
2313 4) Changed bootstrap to pass the iRomRootDirectoryList address vai the |
|
2314 superpage, and added code to support extension ROMs. If a valid |
|
2315 extension ROM is found, the Root Directory List comes from the |
|
2316 extension rather than the main ROM. |
|
2317 |
|
2318 |
|
2319 Version 1.02.302 |
|
2320 ================ |
|
2321 (Made by Nicolas, 19/10/2000) |
|
2322 |
|
2323 1) Alastair |
|
2324 1) Applied fix which will be made on the release branch to EDNJBON-4PBJFD |
|
2325 "Crystal emulator won't run under Windows 98" |
|
2326 2) Replaced calls to Win32 "W" suffixed functions, which won't work on |
|
2327 Windows9x platforms, with new versions supplied in EUNIW.DLL. |
|
2328 3) Merged in Template Port from //epoc/release/bpk/.... This builds as |
|
2329 platform MTemplate and the variant is described by the \VTemplate |
|
2330 directory. Function comments have been changed to JavaDoc format. |
|
2331 Changes have also been made in accordance with Jonathan's changes to |
|
2332 E32 version 301, detailed below ... |
|
2333 \e32\include\v32arm.h --> \e32\ekern\epoc\katemplate\v32template.h |
|
2334 \e32\include\v32templateassp.h --> \e32\ekern\epoc\katemplate\a32templateassp.h |
|
2335 \e32\include\v32templatev1.h --> \e32\ekern\epoc\katemplate\v32template1.h |
|
2336 |
|
2337 2) Nicolas |
|
2338 1) Fixed defect EDNNTHY-4PMKJW "RDebug Breakpoints Are Sometimes |
|
2339 Ignored Under Brutus". The B bit is now set in |
|
2340 KRomSectionPermissions and KRomPtePermissions. As a side-effect, |
|
2341 on CPUs with write-through caches the write buffer is now used for |
|
2342 shadowed pages. On SA-1100, setting B ensures the main data cache |
|
2343 is used instead of the mini one, and so fixes the defect. |
|
2344 |
|
2345 3) Pete |
|
2346 1) Added WINS platform layer for MMC Controller. |
|
2347 2) Changed the WINS EPBUS.DLL from being a PC Card Controller |
|
2348 to being an MMC Controller (i.e emulation of the PC |
|
2349 Card Controller has now been disabled in WINS and replaced |
|
2350 with an MMC Controller emulator). Similarly, the Media Driver |
|
2351 for WINS drive X: is now a MMC Media driver rather than a CF card |
|
2352 Media Driver. |
|
2353 3) Fixed defect EDNMCAN-4P5C37 "File Mgr:Memory card menu is |
|
2354 not dynamic'. Fixed by powering down any MMC cards while |
|
2355 the media door is open and not allowing any operations on |
|
2356 the cards during this time. |
|
2357 4) Implemented inactivity timer on MMC Controller. While the |
|
2358 MMC bus is powered up, if a given period elapses (set at the |
|
2359 ASSP/Variant layer) where no MMC bus activity has taken place, |
|
2360 then the MMC clock is turned off and power removed from the |
|
2361 bus. |
|
2362 |
|
2363 4) Dennis |
|
2364 1) Fixed defect EDNDFER-4N2K8R (Wrong error code returned by fix to |
|
2365 another bug). DThread::Read/Write now return KErrDied if the target |
|
2366 thread has exited. |
|
2367 |
|
2368 5) Jonathan |
|
2369 1) Removed old distrib IPR files and script. |
|
2370 |
|
2371 |
|
2372 Version 1.02.301 |
|
2373 ================ |
|
2374 (Made by MarkCa, 29/09/2000) |
|
2375 |
|
2376 0) Must add the following line (BEFORE LINE 44) to |
|
2377 \\epoc\main\romkit\include\base.iby when releasing to mainline: |
|
2378 extension[VARID]=ASSP_DIR\BUILD_DIR\epower.dll System\Libs\EPower.dll |
|
2379 |
|
2380 1) Pete |
|
2381 1) Merged in changes to MMC Controller from Cambridge base porting |
|
2382 branch. |
|
2383 2) Improved scheme in MMC Controller on how information on |
|
2384 number of MMC sockets and media drives is returned. |
|
2385 This is now set in the variant layer as you would expect. |
|
2386 3) Removed workaround for broken MCR instruction on ARM915T from |
|
2387 \E32\EKERN\EPOC\ARM\KC_MMU.CPP. |
|
2388 4) Changes to Cogent DTE serial port drivers. Also to |
|
2389 Cogent IREQ1 interrupt control code. These changes, |
|
2390 together your Cogent board re-configured with config 'p120_05_v12' |
|
2391 and also a PCB cut/strap modification to each DTE serial port to |
|
2392 reverse the TX and RX signals will allow the Cogent DTE serial ports |
|
2393 to work fully. |
|
2394 Cogent EUART3.PDD which had been temporarily modified |
|
2395 to drive 'SERIAL 1' rather than 'SERIAL 2' (PCB designations) has now |
|
2396 been changed to drive 'SERIAL 2'. |
|
2397 |
|
2398 2) MarkCa |
|
2399 2) Added linkup port from BPC. Build with assp MLNK, variant LA. |
|
2400 |
|
2401 3) Nicolas |
|
2402 1) Fixed defect EDNNTHY-4P3GT6 (RDebug::SingleStep() does not stop |
|
2403 after one instruction sometimes). Fix applied to arm generic and |
|
2404 windermere. |
|
2405 |
|
2406 4) Jonathan |
|
2407 1) Include file re-org for IPR reasons - ASSP-specific include files live |
|
2408 in the ASSP directory under ekern: |
|
2409 - Include files describing ASSPs (TEiger etc) are named a32*.h: |
|
2410 v32eiger.h -> ekern\epoc\arm\721x\a32eiger.h |
|
2411 v32s1100.h -> ekern\epoc\arm\sa1100\a32sa1100.h |
|
2412 v32wind.h -> ekern\epoc\arm\windermere\a32windermere.h |
|
2413 v32cog.h -> ekern\epoc\generic\cogent\a32cogent.h |
|
2414 - Custom interface files are named v32*.h: |
|
2415 v32arm.h -> ekern\epoc\arm\721x\v32eiger.h |
|
2416 v32arm.h -> ekern\epoc\arm\sa1100\v32sa1100.h |
|
2417 v32awd.h -> ekern\epoc\arm\windermere\v32windermere.h |
|
2418 v32arm.h -> ekern\epoc\generic\cogent\a32cogent.h |
|
2419 v32mcore.h -> ekern\epoc\generic\cogent\a32cogent.h |
|
2420 - All variant-specific include files moved to the variants. |
|
2421 - kc_std.h -> kc_arm.h. |
|
2422 2) New exported file for the text notifier interface |
|
2423 \e32\include\twintnotifier.h split out from ws_std.h, which is no |
|
2424 longer exported. |
|
2425 |
|
2426 5) Morgan |
|
2427 1) Integrated fix from 6.0 branch: Fixed EDNTRIN-4BPCTM2 "Detection of |
|
2428 pointer events stops - multiple platforms" for MAWD. Keyboard now |
|
2429 detects switch on keys while sleeping. |
|
2430 2) Removed \brutus\v32isa.h and references |
|
2431 3) Called through to the variant for the following functions on MISA |
|
2432 TBool ImpPsu::ExternalPowerPresent(); |
|
2433 TSupplyStatus ImpPsu::MainBatteryStatus(); |
|
2434 TInt ImpPsu::MainBatteryMilliVolts(); |
|
2435 TSupplyStatus ImpPsu::BackupBatteryStatus(); |
|
2436 TInt ImpPsu::BackupBatteryMilliVolts(); |
|
2437 4) Moved MISA, MCGA, MCGM, MEIG default power models to variant layer so |
|
2438 they can be replaced as necessary |
|
2439 5) Removed P::SwitchOffBacklight(). Calls to this can be replaced with |
|
2440 Hal::SetBacklightOn(EFalse) |
|
2441 6) Promoted P::OsSwitchOnScreen() to Plat:: so it can be called from the |
|
2442 power model. |
|
2443 7) Added Plat::DebugInit() to force re-initialisation of the trace port |
|
2444 after switch off. |
|
2445 8) Fixes to the interface and implementation of DDebugger/DPassiveDebugger |
|
2446 |
|
2447 6) Alastair |
|
2448 1) Applied fixes already made on release branch for EDNABRY-4PHFJJ: |
|
2449 "Emulator support for international keyboards is broken on Windows9x |
|
2450 platforms" and EDNSRES-4P4EFD: "CopyAnyWhere page fault on Win 98". |
|
2451 |
|
2452 |
|
2453 Version 1.02.300 |
|
2454 ================ |
|
2455 (Made by Dennis, 13/09/2000) |
|
2456 |
|
2457 1) Alastair |
|
2458 1) Renamed K32ADDR.H to M32ADDR.H and removed references to it from |
|
2459 WINS/WINC builds, since it isn't required. |
|
2460 2) Fixed Base v6.1 defect EDNWROS-4MJKWH |
|
2461 "Request for a change to emulator window size calculation". |
|
2462 The Emulator window no longer defaults to the Series5 Fascia bitmap |
|
2463 size, and expands to accommodate the specified digitizer size if |
|
2464 necessary. |
|
2465 |
|
2466 2) William |
|
2467 1) Modified COGENT1 MMP files to use \e32\bmarm DEF files in all cases |
|
2468 2) Fixed a few places in RArrayBase where delete was being used on a |
|
2469 TAny* pointer. This should be User::Free() as there is no destructor |
|
2470 to be called. |
|
2471 3) Fixed EDNMMIR-4JQDYY "E32DEF.H doesn't correctly use all the features |
|
2472 of GCC" by changing the definitions of CONST_CAST etc. |
|
2473 4) Fixed EDNWROS-4MEJRS "_LIT generates compiler warnings when string |
|
2474 contains large Unicode constants" as suggested in the defect report. |
|
2475 5) Replaced lots of M*Core PP:Fault(PP:ESystemException) calls with |
|
2476 distinct Mcore::Panic(Esomething) calls so that we can tell which is |
|
2477 which. |
|
2478 6) Export \e32\bmarm\eloclu.def |
|
2479 7) Remove excess ".." in bootstrap makefile variables BUILDDIR and |
|
2480 TARGETDIR |
|
2481 |
|
2482 3) Jonathan |
|
2483 1) Changes to distrib mechanism: |
|
2484 - "mnt distrib generic" no longer includes source under \e32\euser |
|
2485 since this is "IPR Category D: Additional" source. Split out MMP |
|
2486 files under \e32\euser into new \e32\additional.inf file. |
|
2487 - New "mnt distrib Additional" is similar to "generic" but does |
|
2488 include the \e32\euser source. |
|
2489 |
|
2490 4) Dennis |
|
2491 1) Merged in MCore source from Motorola. |
|
2492 2) Added GCC helpers for 64-bit integers (long long) to EUSER so that the |
|
2493 same .DEF file can be used for ARM and MCore. |
|
2494 3) Added test program SAVEHAL to HAL component to store the modifiable HAL |
|
2495 values in \System\Data\HAL.DAT |
|
2496 |
|
2497 6) Markdo |
|
2498 1) Added support for pci interrupts on Cogent. |
|
2499 |
|
2500 |
|
2501 Version 1.02.276 |
|
2502 ================ |
|
2503 (Made by Morgan, 31/08/2000) |
|
2504 |
|
2505 1) Alastair |
|
2506 1) Fixed defect EDNABRY-4NFNPX |
|
2507 "HAL component should create HAL.LIB from a dummy HAL.DLL project". |
|
2508 Now a dummy HAL.LIB can be created for ARMI, ARM4 or THUMB builds by |
|
2509 executing "abld build armi", or some similar command(s), for dependent |
|
2510 components to link to. The HAL.DLL created in the ARMI, ARM4 or THUMB |
|
2511 release directories is an empty implementation and should be ignored. |
|
2512 |
|
2513 2) Morgan |
|
2514 1) Fixed defect EDNJBED-4NAFQ2 "Switch makes the digitiser freeze" |
|
2515 1) Gave the LCD a power handler so it can respond to on/off calls |
|
2516 from the power model. (Effects MISA, MAWD) |
|
2517 2) PowerStandby can now be aborted. Power handlers are given a |
|
2518 power-on call if they were sent power-off and standby is later |
|
2519 aborted. (Effects generic kernel) |
|
2520 3) Changed the MISA digitiser wrt 2 |
|
2521 4) Improved the PM heuristics in the WINS and EPOC comms drivers to |
|
2522 guess when it is busy. (Effects WINS/EPOC comms) |
|
2523 |
|
2524 |
|
2525 Version 1.02.275 |
|
2526 ================ |
|
2527 (Made by Alastair, 24/08/2000) |
|
2528 |
|
2529 1) Alastair |
|
2530 1) Fixed defect EDNPHAR-4N3HRA "Access Violation when closing RLibrary |
|
2531 ` handle". |
|
2532 Note that entrypoints of DLLs which are statically-linked |
|
2533 to, having already been dynamically-loaded, will not have their |
|
2534 entrypoints called in the statically-linked context. |
|
2535 |
|
2536 |
|
2537 Version 1.02.274 |
|
2538 ================ |
|
2539 (Made by MarkCa, 17/08/2000) |
|
2540 |
|
2541 1) Morgan |
|
2542 1) Fixed EDNMHEY-4N3FAY. Removed references to V32ETNA.H from MEIG and |
|
2543 MAWD platforms. |
|
2544 |
|
2545 2) MarkCa |
|
2546 1) Fixed EDNTBLT-4MFKKY (peripherals need to be started after extensions |
|
2547 loaded). The pbus code has been moved to P::InitialiseLocalDrives(), |
|
2548 which is called from InitialiseLocalDrivesL(). |
|
2549 |
|
2550 |
|
2551 Version 1.02.273 |
|
2552 ================ |
|
2553 (Made by Alastair, 2/8/2000) |
|
2554 |
|
2555 1) Alastair |
|
2556 1) Removed enum EKeyEuro from E32Keys.h - fixes EDNGASR-4MKLHW |
|
2557 "EKeyEuro should not be 0x80 but 0x20AC in e32keys.h" |
|
2558 |
|
2559 2) MarkCa |
|
2560 1) Fixed defect EDNPSCE-4MFPQC Media Change doesn't work properly |
|
2561 on MMC Controller |
|
2562 \e32\drivers\medmmc\epoc\d_medmmc.cpp |
|
2563 Added return value checking for Engage() calls, particularly in |
|
2564 DMmcMediaDriverFlash::SessionEndDfc() where value is used to |
|
2565 determine behaviour on media door opening / closing. |
|
2566 \e32\epbus\epoc\linda\pa_mmc.cpp |
|
2567 Added KPBUS1 conditional door interrupt debug trace. |
|
2568 \e32\epbus\epoc\linda\pa_std.h |
|
2569 Made MediaState() definition in TLindaMMCMediaChange virtual. It |
|
2570 is implicitly virtual because it is derived from TMediaChangeBase. |
|
2571 \e32\include\p32mmc.h |
|
2572 Made TMediaState MediaState() pure virtual function in |
|
2573 TMMCMediaChange. The function is pure virtual from |
|
2574 TMediaChangeBase anyway. Added AccessMediaChange(TPBusNum aBus) |
|
2575 function to DMMCController. MediaChange(TPBusNum aBus) is |
|
2576 declared as a pure virtual protected function in |
|
2577 DPeriphBusController, and so is not accessible from |
|
2578 DMMCSession::Engage(). |
|
2579 \e32\include\p32mmc.inl |
|
2580 Added definition for DMMCController::AccessMediaChange(TPBusNum |
|
2581 aBus). This is an accessor function that simply returns |
|
2582 MediaChange(aBus). |
|
2583 \e32\epbus\ps_mmc.cpp |
|
2584 Added checking to DMMCSession::Engage() to return KErrNotReady if |
|
2585 media driver tries to launch a write while the door for the |
|
2586 associated bus is opened. |
|
2587 \e32test\pccd\t_mmcdrv.cpp |
|
2588 Added test code to check above modifications. Source file must be |
|
2589 explicitly recompiled with TEST_DOOR_CLOSE #define set to non-zero |
|
2590 for test to work. |
|
2591 |
|
2592 3) Jonathan |
|
2593 1) Disallow reads/writes to/from dead threads. Fixes EDNDFER-4MFNER. |
|
2594 2) Also removed some old code from ks_thrd, commented out since ER1. |
|
2595 |
|
2596 4) Nicolas |
|
2597 1) Fixed EDNNTHY-4MNJXK (Kernel crash after calling ARM4 code from |
|
2598 THUMB code). |
|
2599 In the exception reporting code in __ArmVectorUndef(), the address of |
|
2600 the invalid ARM opcode is now forced to a four-byte boundary before |
|
2601 fetching the opcode. Fixed both in kc_int.cpp (arm generic) and |
|
2602 ke_int.cpp (windermere). |
|
2603 |
|
2604 |
|
2605 Version 1.02.272 |
|
2606 ================ |
|
2607 (Made by RobertJ, 20/07/2000) |
|
2608 |
|
2609 1) Morgan |
|
2610 1) Added a TVersion member to the Debugger API |
|
2611 2) Added a iDebugger member to TKernelPage so it is available |
|
2612 to externel debugger software over JTAG/BDM, at a constant |
|
2613 address. Removed K::Debugger. |
|
2614 3) Fixed EDNMMAT-4M6KHZ "TLex::Val returns the wrong number" |
|
2615 |
|
2616 2) Alastair |
|
2617 1) Fixed EDNJBON-4MBMC8 '"set _epoc_drive_j=...." causing emulator |
|
2618 problems' by removing trailing spaces from _EPOC_DRIVE_? environment |
|
2619 variables as they are read. |
|
2620 |
|
2621 3) Dennis |
|
2622 1) Fixed EDNKLIG-4LVJST (Device turns off when time changed). |
|
2623 The problem was due to K::TickCounter being updated when the system |
|
2624 time changed. This no longer happens - K::TickCounter now increments |
|
2625 every tick when the machine is on and does not change when the machine |
|
2626 is off. The offset between K::TickCounter and the real time clock is |
|
2627 remembered in order to make locked timers work. |
|
2628 |
|
2629 |
|
2630 Version 1.02.271 |
|
2631 ================ |
|
2632 (Made by Morgan, 5/07/2000) |
|
2633 |
|
2634 1) Morgan |
|
2635 1) Fixed EDNBBOY-4LWGW2 |
|
2636 2) Fixed MCGA Monitor warnings |
|
2637 3) Fixed Cirrus7211a MMP warnings |
|
2638 |
|
2639 |
|
2640 Version 1.02.270 |
|
2641 ================ |
|
2642 (Made by RobertJ, 29/06/2000) |
|
2643 |
|
2644 1) RobertJ |
|
2645 1) Fixed EDNMHEY-4L3KX7 "References to Licensee hardware in generic code" |
|
2646 2) Changed \e32\drivers\dfir\epoc\d_fir.cpp to return an error code for a |
|
2647 read failure |
|
2648 3) Changed \e32\drivers\dfir\epoc\d_fir.cpp test for buffer full from |
|
2649 >= to > as limit excluded valid transfer address. |
|
2650 4) Changed \e32\drivers\dfir\epoc\dmabuff.cpp error code was not always |
|
2651 correctly returned. It could return zero when in error |
|
2652 5) Changed \brutusa\vi_fir.cpp to remove 1ms wait after write to |
|
2653 spin until TUR flag set (fifo is empty) then TBY flag transmitter busy. |
|
2654 This is to remove as much latency as possible in tx->rx turnaround |
|
2655 |
|
2656 2) Jonathan |
|
2657 1) Fixed EDNJHAS-4LQPA5: changed MMAD to use ARM Base Restored Data |
|
2658 Abort Model. |
|
2659 |
|
2660 3) Pete |
|
2661 1) Fixed EDNPSCE-4L3CHV "Device driver slow open |
|
2662 mechanism doesn't work properly on machines with more than one PCMCIA |
|
2663 slot." |
|
2664 In fact, the slow open mechanism is OK as long as a |
|
2665 separate unit number can be used to open a serial channel on each |
|
2666 slot. Hence, the change really just involves enabling the PC Card |
|
2667 Serial driver on Brutus to open on either PC Card slot. |
|
2668 Bottom slot - Unit number 3 (Com4). |
|
2669 Top slot - Unit number 4 (Com5). |
|
2670 Also a change to the function DPhysicalDevice::CheckForSlowOpening() |
|
2671 just to make this more logical. |
|
2672 |
|
2673 4) MarkCa |
|
2674 1) Removed Kern::Printf() debug from DLindaMMCStack::DoPowerUpSM() in |
|
2675 \e32\epbus\epoc\linda\pa_mmc.cpp. |
|
2676 |
|
2677 Version 1.02.269 |
|
2678 ================ |
|
2679 (Made by Dennis, 22/06/2000) |
|
2680 |
|
2681 1) Alastair |
|
2682 1) Using CP_ACP rather that CP_UTF8 for EPOC.INI file text conversion |
|
2683 since CP_UTF8 is not supported on Windows 95 |
|
2684 2) Fixed EDNWROS-4L5NLW "Text window server has hardcoded width of 80 |
|
2685 characters in some places" and EDNNGRE-4H2MKK "ConsoleBase does not |
|
2686 work on small screens" by replacing the hardcoded widths of 80 |
|
2687 characters by iTextScreenSize.iWidth in |
|
2688 \e32\drivers\edisp\emul\win32\wd_wins.cpp. |
|
2689 3) Fixed EDNNSIH-4LCLNE "Access violation when loading SMUM.DLL..." by |
|
2690 using the base name of a dll rather than it's full name to get a Win32 |
|
2691 handle to it, in case it's already been loaded from a different |
|
2692 directory. |
|
2693 4) Fixed EDNRCLF-4L4FB2 "User::LeaveIfError crash while trying to connect |
|
2694 to File Server Session in WINC" Now the dll reference table for the |
|
2695 starting process includes efile.dll and dependent dlls if efile.dll |
|
2696 has already been loaded by the process. This ensures that the |
|
2697 efile.dll's entry point is called on startup where necessary and that |
|
2698 the file server is started. |
|
2699 5) Fixed EDNRCLF-4LALXK "E32Initialize Crash". |
|
2700 UpWins::__DllAttachProcess() now changes "TRUE" return value from |
|
2701 Win32 DLLs to KErrNone. |
|
2702 |
|
2703 |
|
2704 2) Morgan |
|
2705 1) EDNRFID-4FQKKQ Zero-filled the 'Visibility Map' in the text window |
|
2706 server, during initialisation. |
|
2707 2) EDNMHEY-4L9NKJ Added TRawEvent::ECaseOpen and TRawEvent::ECaseClose |
|
2708 events |
|
2709 3) Added idle off behaviour to the comms LDD D_COMM. This stops the |
|
2710 machine turning off while |
|
2711 a) there is a write request outstanding, |
|
2712 b) 20 seconds elapse after the last character has been sent, |
|
2713 c) there is a read request outstanding |
|
2714 4) Altered comms PDD for all variants wrt above. |
|
2715 |
|
2716 3) Dennis |
|
2717 1) Yet another 'fix' for defect EDNGBON-4JYNU6 (Inaccessibility of request |
|
2718 semaphores breaks EPOC connect). For WINC the semaphore name has been |
|
2719 reverted to be the same as ER5U. |
|
2720 |
|
2721 4) Pete |
|
2722 1) Changes required to move Cirris Logic bootstrap over |
|
2723 to the new bootstrap scheme. |
|
2724 |
|
2725 |
|
2726 Version 1.02.268 |
|
2727 ================ |
|
2728 (Made by Markdo, 07/06/2000) |
|
2729 |
|
2730 1) Alastair |
|
2731 1) Fixed EDNTJOS-4JGME4 "Dialog title EPOC32 fault needs to be changed" |
|
2732 2) If dll entrypoints return TRUE, the return value is changed to |
|
2733 KErrNone. |
|
2734 This change means that Win32 DLLs linked to by EPOC DLLs can return |
|
2735 TRUE without resulting in a KErrBadLibraryEntryPoint error. |
|
2736 |
|
2737 2) Nicolas |
|
2738 1) Fixed bugs preventing from building __EARLY_DEBUG__-enabled MCGA |
|
2739 kernels. |
|
2740 |
|
2741 3) Dennis |
|
2742 1) Fixed EDNPPAN-4KEELX (HAL attribute for keyboard backlight needed). |
|
2743 2) Fixed EDNPPAN-4KPEEL (HAL attribute EAccessoryPower needed). |
|
2744 3) Fixed EDNJPAR-4KLLGL (HAL TManufacturer not generic). |
|
2745 4) Fixed EDNRFID-4KTFD3 (Bootstrap doesn't clear first new page table). |
|
2746 5) Removed ARM architecture 3 maths code from UC_I64.CPP and UC_REALX.CPP. |
|
2747 The architecture 4 code is always used now. |
|
2748 |
|
2749 Version 1.02.267 |
|
2750 ================ |
|
2751 (Made by Alastair, 23.5.2000) |
|
2752 |
|
2753 1) Dennis |
|
2754 1) Fixed problem with all ARM bootstraps caused by switching mode from |
|
2755 svc26 to svc32 in a subroutine - LR will contain flags since the BL |
|
2756 was executed in 26-bit mode, giving an incorrect return address for |
|
2757 32-bit mode. Fixed by masking top 6 bits of LR if the routine was |
|
2758 actually entered in 26-bit mode. |
|
2759 2) Fixed defect EDNGBON-4JYNU6 (Inaccessibility of request semaphores |
|
2760 breaks EPOC connect). Thread request semaphores are no longer added |
|
2761 to the K::Semaphores container so that other EPOC code cannot access |
|
2762 them directly. On EPOC they are also unnamed, on Win32 they are named |
|
2763 PROCESSNAME::THREADNAME{EPOCTHREADID} so that the Win32 semaphore |
|
2764 inherits this name and can be found by EPOC connect. |
|
2765 3) Fixed defect EDNSCHM-4K7MTC (CActiveScheduler::Error() broken on ARM). |
|
2766 4) Fixed defect EDNDBAR-4K5EU3 (Close functions in RArray...) |
|
2767 5) Fixed defect EDNMBOX-4JZEAP (TDblQueLink should allow multiple deques). |
|
2768 6) Fixed defect EDNACLN-4JQK2F (HAL::Get panics on low memory). |
|
2769 7) Fixed defect EDNSCHM-4JHRRS (RTimer::Inactivity only useful for switch |
|
2770 off) |
|
2771 |
|
2772 2) Nicolas |
|
2773 1) Debug::EnableBreakPoint() now flushes instruction cache after writing |
|
2774 breakpoints into memory. This fixes the transient test failures |
|
2775 observed on brutus. |
|
2776 |
|
2777 3) Alastair |
|
2778 1) Introduced new scheme into WINS/WINC so that Dll entry-points are |
|
2779 called by EPOC in much the same way that they are called on a target |
|
2780 device. |
|
2781 When a process is started or when a library is loaded, the Kernel |
|
2782 creates a Dll reference table for the executable to mimic the Dll |
|
2783 information available on the target device. EPOC under WINS/WINC can |
|
2784 thus call Dll entry-points at the appropriate times. This change |
|
2785 means that the Win32 Dll entrypoint mechanism is no longer used for |
|
2786 calling Dll entry-points, and therefore avoids deadlock occurring due |
|
2787 to the "hidden" critical section used by Windows operating systems |
|
2788 while making entry-point calls. This change fixes Symbian defect |
|
2789 EDNATHE-4GAL54 - |
|
2790 "Emulator hangs during startup" |
|
2791 Whether this change will also fix similar deadlocks occuring with the |
|
2792 Emulator running with NT SP5 on Compaq PCs remains to be seen. |
|
2793 2) Added WINS/WINC base address for HAL.DLL - 0x6b000000 |
|
2794 |
|
2795 4) Morgan |
|
2796 1) Undid a change to TMillisecondTimer::CounterExpired that was causing |
|
2797 the digitiser to crash on Series5mx. |
|
2798 |
|
2799 |
|
2800 Version 1.02.266 |
|
2801 ================ |
|
2802 (Made by MarkCa, 16/05/00) |
|
2803 |
|
2804 1) Pete |
|
2805 1) Fixed EDNPHAR-4JCNSC (Can't access removable drives |
|
2806 on latetst Brutus Roms). |
|
2807 2) Fixed a couple of problems to allow UserSvr::ForceRemountMedia() |
|
2808 to work when a non-removable drive is specified. This now |
|
2809 allows the media driver for a non-removable drive to be swapped |
|
2810 successfully. |
|
2811 3) Modified the ISR for the Brutus PCMCIA/CF Card Serial driver (COM4) |
|
2812 so that it now handles all pending UART interrupts in |
|
2813 a single call rather than just the highest priority interrupt. This |
|
2814 fixes problems with the driver where it could 'lose track' of |
|
2815 interrupts when multiple interrupts were pending. |
|
2816 This fixes EDNACLE-4JZL3V (Brutus PCMCIA Serial I/O Adapter hangs...) |
|
2817 and EDNPREF-4JCKV (Protocol hanging on Brutus board). |
|
2818 4) Modified the Brutus PCMCIA/CF Card Serial driver (COM4) |
|
2819 to support change notification. |
|
2820 5) Fixed a problem with Brutus built-in serial ports |
|
2821 (COM1 and COM2) which were not correctly configuring the port when |
|
2822 either Odd or Even parity was selected. |
|
2823 |
|
2824 2) RobertJ |
|
2825 1) Fixed \brutusa\vi_com2.cpp, \brutusa\vi_fir.cpp, \brutusa\v32isaba.h |
|
2826 to cope with transceiver SIR/FIR mode change |
|
2827 |
|
2828 3) Morgan |
|
2829 Fixed some anomalies in the power handling code: |
|
2830 1) Removed ImpHal::Standby() and ImpHal::Standby(aWakeup) (from |
|
2831 MAWD, MISA, MCGA, MEIG, MMAD) |
|
2832 and replaced it with appropriate code in the power model. |
|
2833 The correct way to turn off the machine from kernel-side is to call |
|
2834 a) DPowerModel::PowerStandby() for immediate kernel-side switchoff |
|
2835 b) Kern::AddEvent(ESwitchOff) for ordered user shutdown |
|
2836 To turn off from user side, we call UserHal::SwitchOff(). |
|
2837 1.2)Renamed K::SwitchOff() to Power::SwitchOff() |
|
2838 Renamed K::PowerOn() to Power::PowerOn() |
|
2839 Removed DPowerModel::PowerStandby(aWakeup) because it is useless. |
|
2840 2) UserHal::SwitchOff calls Power::SwitchOff which calls PowerStandby on |
|
2841 all power handlers. This will cause |
|
2842 DPowerModel::PowerTransition(EPowerNone) to be called (when each power |
|
2843 hander has called SetRequirement(0)). The power model should then |
|
2844 call DPowerModel::PowerStandby() to turn the machine off. (see a) |
|
2845 above). |
|
2846 3) DPowerModel::PowerStandby() works out when the next alarm is due, and |
|
2847 turns off the machine by calling the appropriate |
|
2848 DPowerModel::DoPowerStandby(/*aWakeup*/) function. |
|
2849 4) Added a User-Cpu-In-Use flag to the power model's power-requirement. |
|
2850 This stops the machine turning off while there is user-side processing |
|
2851 but no device drivers (power handlers) active. This flag does NOT |
|
2852 prevent idle. This flag is unset when UserHal::SwitchOff is called, |
|
2853 and set for PowerOn. |
|
2854 |
|
2855 Version 1.02.265 |
|
2856 ================ |
|
2857 (Made by Morgan, 18/4/2000) |
|
2858 |
|
2859 0) Must change \\epoc\main\generic\romkit\include\base.iby line |
|
2860 file[VARID]=ASSP_DIR\BUILD_DIR\cVARLETTERxyVARIANT.dll System\Libs\Exyin.dll |
|
2861 to |
|
2862 extension[VARID]=ASSP_DIR\BUILD_DIR\cVARLETTERxyVARIANT.dll System\Libs\Exyin.dll |
|
2863 when integrating to mainline. |
|
2864 |
|
2865 1) Morgan |
|
2866 1) Made all XYInputs into kernel-extensions |
|
2867 2) Removed TXYInput from M32HAL.H |
|
2868 |
|
2869 2) Dennis |
|
2870 1) Fixed EDNJPAR-4G5FA8 (missing chunk types) |
|
2871 2) Fixed EDNMBOX-4DSJXH (missing #include guards on e32des8.h |
|
2872 and e32des16.h) |
|
2873 3) Fixed EDNJBON-4DCEHD (Kern::Printf doesn't support %c) |
|
2874 4) Fixed EDNPBAA-4HXEST (TDes::Format doesn't support %i) |
|
2875 5) Fixed EFNATHE-4GYFQ8 (Thread semaphores named after thread) |
|
2876 6) Fixed EDNJHAS-4HCQAF (SA1100 standby) |
|
2877 7) Fixed EDNDBAR-4C5E7V (RArray<> should have a TArray interface). |
|
2878 8) Fixed EDNJHAS-4HXEGT (Literal length as compiler constant). |
|
2879 9) Fixed EDNJHAS-4HXELS (Compile-time TFixedArray). |
|
2880 10) Fixed EDNJHAS-4HXEPN (Support for profiling). |
|
2881 11) Added CleanupStack checking functions: |
|
2882 CleanupStack::Pop(TAny* aExpectedItem) check top item and pop |
|
2883 CleanupStack::PopAndDestroy(TAny* aExpectedItem) check top |
|
2884 item, pop and destroy |
|
2885 CleanupStack::Pop(TInt aCount, TAny* aExpectedItem) Pop aCount |
|
2886 items, checking last one |
|
2887 CleanupStack::PopAndDestroy(TInt aCount, TAny* aExpectedItem) |
|
2888 Pop/destroy aCount items, checking last one |
|
2889 12) Removed compiler warnings from E32 and variants. |
|
2890 13) Added EMemoryRAMFree option to HAL to get amount of free RAM. |
|
2891 14) Fixed EDNCDUG-4J3QA8 (collate.h includes files not in \epoc32\include). |
|
2892 |
|
2893 3) Alastair |
|
2894 1) Fixed EDNABRY-4JGJG4 "Test T_Float fails under WINS/WINC" |
|
2895 |
|
2896 |
|
2897 Version 1.02.264 |
|
2898 ================ |
|
2899 (Made by Morgan, 7/4/2000) |
|
2900 |
|
2901 1) Morgan |
|
2902 1) Added DPowerHandler::DoPowerTransition(aPowerState) virtual |
|
2903 function to the power handlers. Power handlers should |
|
2904 implement this if they need notification when the power state |
|
2905 of the machine changes. |
|
2906 2) Added DPowerModel::PowerTransition to call the power handlers. |
|
2907 Added pure virtual function DPowerModel::DoPowerTransition() |
|
2908 to replace the DPowerModel::SetPowerState function, (which has |
|
2909 now been killed). |
|
2910 3) Added Power Model locking - Power::[Un]LockPowerModel(). This |
|
2911 prevents the power model from shifting power states during |
|
2912 power critical periods. |
|
2913 4) Added ECaseState to the HAL. |
|
2914 5) Removed ImpHal::EmergencyStandby() from all platforms. This fn |
|
2915 is not used or needed any more. |
|
2916 |
|
2917 2) Nicolas |
|
2918 1) Improvements and bug fixes in RDebug API implementation |
|
2919 so in-target-debugging will be usable on ER6 devices. |
|
2920 USER-LEVEL VISIBLE CHANGES: |
|
2921 * Debugging resources owned by the debugger and the |
|
2922 debuggee are automatically released when the |
|
2923 debugger/debuggee ends (this includes automatically |
|
2924 closing the debugging session). |
|
2925 * SDebugInfo has a new field containing the start |
|
2926 address of the debuggee's data/bss chunk: this is |
|
2927 mandatory to support the current toolchain in |
|
2928 gdbstub. |
|
2929 * THUMB breakpoints supported. Let A be the address |
|
2930 of a breakpoint to be set/cleared. In THUMB mode, A |
|
2931 should be passed as-is to RDebug. In ARM mode, A+2 |
|
2932 should be passed. See below for a rationale. |
|
2933 * New class TArmBreakPoint added in kc_std.h. It |
|
2934 contains breakpoint characteristics and an inline |
|
2935 function that can be used to insert a hardcoded ARM |
|
2936 or THUMB breakpoint in user code. |
|
2937 INTERNAL CHANGES: |
|
2938 * Breakpoint notification in __ArmVectorUndef() was |
|
2939 disabled. It is now re-enabled. Code updated to |
|
2940 take into account both THUMB and ARM. |
|
2941 * Support for ARM BX instruction has been added to |
|
2942 single-stepping code. THUMB single-stepping still |
|
2943 not supported. |
|
2944 * In Debug::Continue(), removed code which stepped |
|
2945 over breakpoints located at the start address |
|
2946 because GDB already does the same thing. Removed |
|
2947 too, code which stepped over hardcoded breakpoints |
|
2948 because it was buggy and hardcoded breakpoints are |
|
2949 uncommon. |
|
2950 * New scheme used for breakpoints: a single 16-bit |
|
2951 opcode is used for both ARM and THUMB breakpoint. |
|
2952 For ARM, this pattern must replace the upper 16-bits |
|
2953 of the instruction to break at. As little-endian is |
|
2954 used, the breakpoint bit pattern is actually at |
|
2955 address+2, hence the API change described above. |
|
2956 * CPU-dependent modifications done in both generic ARM |
|
2957 and in windermere. |
|
2958 2) Fixed defect EDNNTHY-4H6PXT (PC address computed at |
|
2959 start of __ArmVectorUndef() is wrong in THUMB mode). |
|
2960 |
|
2961 3) AndrewB |
|
2962 1) Removed K32SND.H, K32SND.INL, D32SND.H and D32SND.INL |
|
2963 from the export section of bld.inf. These files should |
|
2964 no longer be public since all sound functionality is now |
|
2965 managed by the Media Server. |
|
2966 |
|
2967 4) MarkCa |
|
2968 1) \E32\EPBUS\EMUL\WIN32\PP_PCCD.CPP |
|
2969 Added ReadPasswordFromStore() and EncodePassword(). |
|
2970 Added logic to RPlatPccdChunk::(Read|Write) to automatically unlock |
|
2971 card if pw in store Replaced assertion w. return code in |
|
2972 DPlatPcCardController::WritePasswordData(). Added comments to describe |
|
2973 how emulated mechanism corresponds with real MMC mechanism. |
|
2974 Modified password store to use 128-bit card ids to simulate mmc better. |
|
2975 DPlatPcCardController::PasswordControl(), |
|
2976 DPlatPcCardController::PasswordStoreLengthInBytes(), |
|
2977 DPlatPcCardController::(Read|Write)PasswordStore() |
|
2978 All modified to give same behaviour as default DPeriphBusController |
|
2979 virtual functions if _LOCKABLE_MEDIA is not #defined. |
|
2980 2) \E32\EPBUS\EMUL\WIN32\PP_STD.H |
|
2981 DPlatPcCardController prototypes for above. |
|
2982 Removed panics EWinsPcCard(MappingNotInStore|PswdStoreBadWriteDesc). |
|
2983 3) \E32\INCLUDE\E32SVR.H |
|
2984 Added "//#define _LOCKABLE_MEDIA" so WINS PC Card controller can be |
|
2985 built without locking mechanism. |
|
2986 |
|
2987 5) Morgan |
|
2988 1) Changed declaration of Custom::DriveSettings to pure virtual on |
|
2989 MAWD and MMAD and MIEG platforms. |
|
2990 2) k32snd.h and d32snd.h are no longer exported, so: |
|
2991 Changed \series5mx\va_sdrv.h to get k32snd.* and d32snd.* |
|
2992 from \e32\include. Changed \cirrus72x1\va_sdrv.h to get k32snd.* |
|
2993 and d32snd.* from \e32\include. Modified k32snd.h and d32snd.h |
|
2994 to get header files from \e32\include |
|
2995 |
|
2996 6) Alastair |
|
2997 1) Removed unused __USE_CRITICAL_SECTION__ #defines from the WINS/WINC |
|
2998 kernel. |
|
2999 2) Removed badly-spelt LedArrangeVerticaly keyword from the EPOC.INI file |
|
3000 processing code - use LedArrangeVertically instead. |
|
3001 3) Named the WINS/WINC kernel critical section mutex so that it can be |
|
3002 shared between processes. |
|
3003 4) Fixed Symbian ER5u defect EDNHLOO-4HGKKJ |
|
3004 "EXPORT_C used instead of IMPORT_C in header file". |
|
3005 |
|
3006 7) Pete |
|
3007 1) Added extra member to TDriveInfoV1 class:- |
|
3008 TInt iRuggedFileSystem |
|
3009 With this set (to KRuggedFileSystem), it indicates to the |
|
3010 file server that it should implement a rugged file system. |
|
3011 This required the addition of a new variant function - DriveSettings() |
|
3012 so the ruggedization option can be selected at the variant level. |
|
3013 2) Added latest versions of LFFS Media drivers for WINS and Brutus - 4th |
|
3014 candidate version (R1.2) of LFFS. |
|
3015 3) Modification to E32 local media subsystem so that the reading |
|
3016 of partition information from the media driver on mounting |
|
3017 a drive is done asynchronously. This affects the media driver API as |
|
3018 follows:- |
|
3019 |
|
3020 TInt DMediaDriver::PartitionInfo(TPartitionInfo &anInfo); |
|
3021 becomes |
|
3022 void DMediaDriver::ReadPartitionInfo(TInt &aResult,const TCallBack& aCallBack); |
|
3023 |
|
3024 The ReadPartitionInfo() call just initiates the reading of partitiion |
|
3025 information with this typically being concluded on an interrupt. From |
|
3026 the interrupt, the driver signals the conclusion of the requests by |
|
3027 call 'aCallback', having first written the result of the request to |
|
3028 'aResult'. The partition info is now written by the driver directly |
|
3029 into its member data - DMediadriver::iPartitionInfo rather than being |
|
3030 passed back to the local media subsystem. |
|
3031 |
|
3032 8) Dennis |
|
3033 1) Renamed iCount member of CObjectIx to iHighWaterMark. Added new member |
|
3034 iNumEntries which counts the number of actual entries in the index. |
|
3035 The Count() member function now returns iHighWaterMark so its meaning |
|
3036 is unchanged. Added new ActiveCount() member function to return the |
|
3037 new iNumEntries member. |
|
3038 Changed Exec::HandleCount() to return the number of actual handles open |
|
3039 rather than the high water mark of the handles array as before. |
|
3040 |
|
3041 Version 1.02.263 |
|
3042 ================ |
|
3043 (Made by MarkDo, 30.03.2000) |
|
3044 |
|
3045 1) Morgan |
|
3046 1) Reorganised the super-page into TSuperPage, TKernelPage, |
|
3047 and TMachineConfiguration. TMachineConfiguration has |
|
3048 been promoted from WINS. |
|
3049 TSuperPage holds values discovered by the bootstrap that |
|
3050 are required by the generic kernel. TKernelPage |
|
3051 contains generic kernel data that needs to be preserved |
|
3052 over a warm reset. TMachineConfiguration contains |
|
3053 system wide settings that should be persisted over a |
|
3054 warm reset and machine state saves (backup). |
|
3055 2) Changed P::SetMachineConfiguration() and |
|
3056 P::MachineConfiguration() to use the new |
|
3057 TMachineConfiguration on all platforms. |
|
3058 3) Removed iDebugger from the super page |
|
3059 4) Fixed some warnings |
|
3060 5) Changed the bootstraps for MEIG and MAWD to match new |
|
3061 superpage layout. |
|
3062 Changed bootstrap\include\superpage.h to match new |
|
3063 bootstrap. |
|
3064 6) Removed PowerRestart functions since the power model |
|
3065 never calls them. |
|
3066 |
|
3067 |
|
3068 Version 1.02.262 |
|
3069 ================ |
|
3070 (Made by Dennis, 23.03.2000) |
|
3071 |
|
3072 1) Alastair |
|
3073 1) Added calls to Sleep(0) before all occurrences of SetEvent(), |
|
3074 ReleaseSemaphore() and ReleaseMutex() in accordance with advice given |
|
3075 in MSDN Knowledge Base article Q173260. This change should make one |
|
3076 variant of the Emulator Hanging bug less likely to occur. |
|
3077 |
|
3078 2) MarkCa |
|
3079 1) \E32\EPBUS\EMUL\WIN32\PP_PCCD |
|
3080 Added ReadPasswordFromStore() and EncodePassword(). |
|
3081 Added logic to RPlatPccdChunk::(Read|Write) to automatically unlock |
|
3082 card if pw in store. |
|
3083 \E32\EPBUS\EMUL\WIN32\PP_STD.H |
|
3084 DPlatPcCardController prototypes for above. |
|
3085 |
|
3086 3) MarkDo |
|
3087 1) Added additional media attributes KMediaAttLockable and |
|
3088 KMediaAttLocked. |
|
3089 |
|
3090 4) Pete |
|
3091 1) Removed the EUSER class UserPcCardCntrl. |
|
3092 2) Modified the function MBusDev::DoAsyncLateOpen() to |
|
3093 now take an additional second parameter 'TInt anOpenInfo'. |
|
3094 |
|
3095 5) Dennis |
|
3096 1) Removed the EPOC registry - files US_REG.CPP, UB_REG.CPP and KP_REG.CPP |
|
3097 along with TRegistryCategory, TRegistryItemName, TRegistryItemValue, |
|
3098 CRegistry, CPersistentRegistry and Environment classes. |
|
3099 2) Removed most UserHal:: functions - these have been superseded by HAL:: |
|
3100 functions. |
|
3101 3) Removed RThread::Create() overload taking a RProcess& parameter and |
|
3102 removed RProcess* parameter from the overload taking an RLibrary* |
|
3103 parameter. Threads may now only be created in the current process. |
|
3104 4) Reassigned ARM domains following demise of registry. 2 is still used |
|
3105 for page tables, 3 is now used for the RAM drive and 4 for F32. |
|
3106 5) Change to Brutus bootstrap to link at 0xc8000000 for compatibility |
|
3107 with 12Mb bootloader. |
|
3108 |
|
3109 |
|
3110 Version 1.02.261 |
|
3111 ================ |
|
3112 (Made by Robert, 17.3.2000) |
|
3113 |
|
3114 1) Morgan |
|
3115 1) Added User::ResetInactivityTime() to reset all |
|
3116 RTimer::Inactivity timers |
|
3117 2) Added TRawEvent::EKeyRepeat for adding auto repeated key events |
|
3118 to the event queue |
|
3119 |
|
3120 2) Pete |
|
3121 1) Added kernel functions to read, write and return the |
|
3122 size of the Peripheral Bus Controller password store. |
|
3123 |
|
3124 3) MarkCa |
|
3125 1) Added WINS PC Card locking features to test mmc (Crystal) functions |
|
3126 |
|
3127 \E32\EKERN\KW_EXEC.CPP |
|
3128 Modified ExecHandler::Drive(ReadPasswordData|PasswordStoreLengthInBytes)() |
|
3129 to call P functions. |
|
3130 |
|
3131 \E32\EKERN\KS_SVR.CPP |
|
3132 Modified svDriveWritePasswordData to call P::WritePeriphBusPasswordData(). |
|
3133 |
|
3134 \E32\EPBUS\EMUL\WIN32\PP_PCCD.CPP |
|
3135 Modified DPlatPcCardController::PasswordControl(). |
|
3136 Implemented DPlatPcCardController::(Read|Write)PasswordStore(), |
|
3137 DPlatPcCardController::PasswordStoreLengthInBytes(). |
|
3138 Read and write routines return KErrLocked if locked and accessing |
|
3139 EPccdAttribMem memory. This still allows chunks to be created for |
|
3140 locked cards. |
|
3141 |
|
3142 \E32\EPBUS\EMUL\WIN32\PP_STD.H |
|
3143 Prototypes for above and store panic codes. |
|
3144 |
|
3145 4) RobertJ |
|
3146 1) Entered suppilied mods to Linda SIR in vm_com2.cpp for all variants |
|
3147 |
|
3148 |
|
3149 Version 1.02.260 |
|
3150 ================ |
|
3151 (Made by Alastair, 10.3.2000) |
|
3152 |
|
3153 |
|
3154 1) Alastair |
|
3155 1) Updated e32 rombuild scripts to pick up the test .IBY files |
|
3156 generated by Bldmake from the new directory structure implied |
|
3157 by recent changes to E32TOOLP. |
|
3158 |
|
3159 2) Added temporary hack to bootstrap component extension makefile |
|
3160 so that mainline rombuilds for MEIG, MAWD and MMAD will still work, |
|
3161 now that the rombuild system has been changed to work with output |
|
3162 produced by the generic bootstrap build system. |
|
3163 |
|
3164 2) Pete |
|
3165 1) Modified PC Card Controller emulator (EPBUS) in WINS |
|
3166 to implement Peripheral bus password functions (Lock/Unlock/Clear). |
|
3167 This is only possible on the simulated CF cards in Socket 0 (not the |
|
3168 simulated Compact rom card in socket 1). |
|
3169 |
|
3170 3) MarkCa |
|
3171 1) \E32\EUSER\US_KSVR: converted |
|
3172 TBusLocalDrive::((Lock|Unlock)Drive)|ClearPassword) from async to sync. |
|
3173 \E32\E32SVR.H: changed TBusLocalDrive prototypes. |
|
3174 |
|
3175 Version 1.02.259 |
|
3176 ================= |
|
3177 (Made by MarkCa 03-03-00) |
|
3178 |
|
3179 1) Morgan |
|
3180 1) Guarded POS hooks with #define __SUPPORT_PARTNER_OS__ and updated |
|
3181 U32STD.H appropriately. This removes partner OS support from most |
|
3182 platforms. |
|
3183 2) 'Enhanced' the POS hooks. Kernel lock is now done after the POS |
|
3184 reschedule hook, instead of before. This makes it necessary to |
|
3185 check for the POS rescheduler being interrupted. If it has been |
|
3186 interrupted then we now make an early exit from the int-vector to |
|
3187 prevent running DFCs from the nested interrupt. |
|
3188 |
|
3189 2) William |
|
3190 1) Fixed the borders for text-window server windows on EPOC devices. |
|
3191 WINS uses true Unicode fonts, but EPOC devices have a cp1252 font |
|
3192 built in, and so need to continue using the cp1252 encoding for the |
|
3193 box drawing characters. |
|
3194 |
|
3195 3) MarkCa |
|
3196 1) Added TBusLocalDrive -> Exec -> ExecHandler functions for MMC |
|
3197 password support. |
|
3198 |
|
3199 4) Pete |
|
3200 1) Added PasswordControl() function to TLocDrv,DMediaDriver and |
|
3201 DPeriphBusController classes. |
|
3202 |
|
3203 Version 1.02.258 |
|
3204 ================ |
|
3205 (Made by Pete 24/02/00) |
|
3206 |
|
3207 1) Alastair |
|
3208 1) Updated a few .mmp files to hardcode .def file locations. |
|
3209 |
|
3210 2) Dennis |
|
3211 1) Made TDesC8::Left(), TDesC8::Right(), TDesC16::Left() and |
|
3212 TDesC16::Right() truncate the requested length to Length() instead |
|
3213 of panicing. |
|
3214 2) Export COLLATE.H to \Epoc32\Include instead of \Epoc32\Include\Kernel |
|
3215 since it contains public interfaces. |
|
3216 3) Added DEBUG mode checking to ensure that heaps are not referenced by |
|
3217 DFCs. Before calling a DFC the current heap pointer is changed to |
|
3218 0xC90FDAA2 and is restored when the DFC returns. |
|
3219 |
|
3220 3) Morgan |
|
3221 1) Removed \hal\group. BLD.INF is now in \hal. Removed annoying |
|
3222 "Nothing to do" declarations. Updated all variant hals to match. |
|
3223 |
|
3224 4) Robert |
|
3225 1) Added new export ClearIrError for Linda in ka_linda.cpp and v32linda.h |
|
3226 |
|
3227 5) Pete |
|
3228 1) Signal change notification added to Cogent DTE serial drivers (COM3 & |
|
3229 COM4). |
|
3230 2) Fixed problem with signal change notification on DTE |
|
3231 and DCE serial drivers where it was possible for a transition on a |
|
3232 modem status line to occasionally fail to trigger notification. |
|
3233 3) Added CF Card Serial driver for Brutus (COM4) - not yet tested. |
|
3234 |
|
3235 |
|
3236 Version 1.02.257 |
|
3237 ================ |
|
3238 (Made by Dennis, 14-02-2000) |
|
3239 |
|
3240 1) Dennis |
|
3241 1) Added HAL component. |
|
3242 2) Removed calls to most UserHal functions except for those which are |
|
3243 always available from the kernel. |
|
3244 3) Inlined ::operator new(TUint, TLeave) and |
|
3245 CBase::operator new(TUint, TLeave) to remove the need for the |
|
3246 TLeave parameter to be generated by the compiler. |
|
3247 4) Kernel now always disables auto switch off by default. |
|
3248 5) Added RTimer::Inactivity() and CTimer::Inactivity() functions to |
|
3249 support generic user inactivity timers. |
|
3250 6) Added K::InactivityQ and TInactivityLink to the kernel to implement |
|
3251 generic user inactivity timers. |
|
3252 7) Added User::InactivityTime() to return the time elapsed since the last |
|
3253 user event. |
|
3254 |
|
3255 2) Morgan |
|
3256 1) Exported hal_int.h into the system\kernel include dir |
|
3257 2) Made \hal\group\config.mke generic so it works for HALs in |
|
3258 \hal component and also works for HALs in \<variant>\hal. |
|
3259 Renamed <variant>.hda and <variant>.hcf to values.hda and |
|
3260 config.hcf. |
|
3261 3) Added HALs to linda b,c,1 variants |
|
3262 4) Updated Variant::DisplayOn for all linda variants. |
|
3263 Code from Sampsa - not tested locally. |
|
3264 5) Fixed EPBUS build error in pa_std.h on MMAD platform |
|
3265 6) Added kernel-extension loading to kernel init. |
|
3266 Kernel extensions are loaded just before the file-server. |
|
3267 Extensions can have writable static data but global constructors |
|
3268 are not called. |
|
3269 8) Made keyboard drivers on all platforms into kernel-extensions. |
|
3270 9) Removed TKeyboard. |
|
3271 10) Fixed bug in TIdler::Idle(). There are now 64 ticks in a second. |
|
3272 |
|
3273 3) Jonathan |
|
3274 1) Fixes to "mnt distrib" mechanism and dsitrib.txt files. |
|
3275 Made distrib.pl checking stricter: Checks for mising distrib.txt files |
|
3276 and for non-existent files listed in distrib.txt. |
|
3277 |
|
3278 4) Pete |
|
3279 1) Re-enabled the ACD on MEIG. |
|
3280 2) Enabled main battery voltage measurement on Cirrus 7211 |
|
3281 board (which is simulated using a pot. on the board). Also reference |
|
3282 voltage measurement. Disabled backup battery measurement. |
|
3283 3) Added digitizer driver for Cirrus 7211 board - using |
|
3284 ADC channels to measure screen position. |
|
3285 4) Generally tidied up variant for Cirrus 7211 board. |
|
3286 5) Modified MEIG bootsrap so it resets DRAM width to |
|
3287 32bit. (Cirrus 7211 repro program sets it to 16bit). |
|
3288 6) Temporarily re-assigned Cogent UART3.PDD to use |
|
3289 UARTB rather than UARTC since UARTC/UARTD still have h/w problems |
|
3290 with setting thier interrupt mask registers. This means Cogent now |
|
3291 has a single DCE and DTE serial port. The ports are now assigned:- |
|
3292 |
|
3293 Driver Port Number Uart Port Type |
|
3294 ------ ----------- ---- --------- |
|
3295 EUART1 Serial 0 UART-A DCE |
|
3296 EUART2 Serial 2 UART-C Not working |
|
3297 EUART3 Serial 1 UART-B DTE |
|
3298 EUART4 Serial 3 UART-D Not working |
|
3299 |
|
3300 Version 1.02.256 |
|
3301 ================ |
|
3302 (Made by Simon, 01-02-2000) |
|
3303 |
|
3304 1) Dennis |
|
3305 1) Added aLength parameter to Dll::GlobalRead() to specify how much data |
|
3306 to read. |
|
3307 2) Added UserSvr::HalGet() and UserSvr::HalSet(). |
|
3308 |
|
3309 2) Pete |
|
3310 1) Modified Linda MMC Controller to include calls on the |
|
3311 power model to reduce the clock frequency during MMC operation (and |
|
3312 restore to normal clock frequency afterwards). |
|
3313 2) Corresponding changes to the Linda power model to support MMC clock |
|
3314 switching. |
|
3315 3) Added various additional functions to TLinda class to |
|
3316 support power model clock switching. |
|
3317 4) Added CF card modem serial PDD to MAWD - DATXB13 |
|
3318 |
|
3319 3) Morgan |
|
3320 1) Integrated Matt's changes for the LCD on the HPs |
|
3321 |
|
3322 4) Simon |
|
3323 1) Restructured e32 source directory, and moved varients to new components |
|
3324 |
|
3325 |
|
3326 Version 1.02.255 |
|
3327 ================ |
|
3328 (Made by Dennis, 19th January 2000) |
|
3329 |
|
3330 1) Morgan |
|
3331 1) Bug fix for WINS emulator-configuration on the command-line |
|
3332 (EDNATHE-4ETJPC) |
|
3333 2) MMAD LC/LB/L1 clock moved to 52Mhz and changed LCD settings |
|
3334 3) EXPORT_Ced some more functions (in ImpAsic) for use by ENOS |
|
3335 4) Integrated changes from Nile to MMAD keyboard drivers |
|
3336 5) Added TRUST changes to MMAD bootstrap |
|
3337 6) Modification to the POS fiq vector to defer POS reschedule |
|
3338 when interrupted from irq or svc mode |
|
3339 |
|
3340 2) Dennis |
|
3341 1) Removed X86 build |
|
3342 2) Removed NoLongerSupported... functions from EUSER and EKERN |
|
3343 3) Removed TReal96. Removed the implementations of Math:: functions which |
|
3344 use TReal96; only the TRealX implementations now remain. Rewrote some |
|
3345 code in UM_RTOD.CPP (real to text conversion) to use TRealX instead of |
|
3346 TReal96. |
|
3347 4) Removed SObjectIxArray, SObjectConArray and SObjectConIxArray. These |
|
3348 data members are now part of CObjectIx, CObjectCon and CObjectConIx |
|
3349 respectively. |
|
3350 5) Inlined CObjectCon::UniqueID() and CObjectCon::Count() |
|
3351 6) Changes to descriptor code from Andrew Thoelke. Copy constructors are |
|
3352 no longer explicitly defined (compiler generated instead). A protected |
|
3353 empty destructor has been added to TDesC8 and TDesC16 to prevent the |
|
3354 passing of TDesC and TDes parameters by value, which would result in |
|
3355 object slicing. To cope with static descriptors, an empty atexit() |
|
3356 function has been added to UP_DLL, UP_EXE and KC_EXE for all platforms. |
|
3357 7) Added machine coded 16-bit descriptor code for ARM (UC_DES16.CPP). This |
|
3358 is enabled by __DES16_MACHINE_CODED in U32STD.H. |
|
3359 8) Inlined TCallBack functions. |
|
3360 9) Removed TChar copy constructor. This means that TChar parameters passed |
|
3361 by value are now passed in registers by GCC. Modified machine coded |
|
3362 functions which take a TChar parameter to account for this. |
|
3363 10) Removed TLex8 and TLex16 copy constructors. |
|
3364 11) UserSvr::StaticCallList(), UserSvr::DynamicCallList() and |
|
3365 RLibrary::LibraryCallList() are no longer exported. |
|
3366 12) RChunk::CreateDllStatic(), RChunk::ReserveAt() and all overloads of |
|
3367 RChunk::Read() and RChunk::Write() have been removed. |
|
3368 13) Added inline functions for converting TProcessId and TThreadId to and |
|
3369 from TUint. |
|
3370 14) Removed RThread::Mark(), RThread::SetMark(), RThread::NotifyIfDie(), |
|
3371 RThread::SetNotifyIfDie(), RThread::Busy() and RThread::SetBusy(). |
|
3372 15) Removed RProcess::Mark(), RProcess::SetMark() and RProcess::Busy(). |
|
3373 16) Removed User::Abort() and User::Dying(). |
|
3374 17) Inlined TRawEvent default constructor, TRawEvent::Type() and |
|
3375 TRawEvent::Ticks(). |
|
3376 18) Removed RLoader::LoadProcess and RLoader::LoadLibrary functions which |
|
3377 don't take a TUidType. RLoader::Version() and RLoader::LoadProcess() |
|
3378 are no longer exported. |
|
3379 19) Changed CCaptureKeys to use RArray instead of CArrayFixFlat. |
|
3380 20) Removed class RMmu. |
|
3381 21) Removed CArrayFixA etc. |
|
3382 22) Options %E, %F, %G in TDes::AppendFormatList() now convert a TRealX |
|
3383 instead of a TReal96. |
|
3384 23) Fixed bug in chunk creation - between setting the domain and the |
|
3385 iOwningProcess, the SetNameL could leave. The chunk destructor would |
|
3386 then erroneously free the domain. |
|
3387 |
|
3388 3) Alastair |
|
3389 1) Removed SROS, ARM3 and MARM targets from BLD.INF and GENERIC.INF. |
|
3390 2) Fixed minor problem with DIFILB.MMP. |
|
3391 3) Added support for specifying color depths Gray256 and Color64K in the |
|
3392 EPOC.INI file with the ColorDepth keyword. Changed the Emulator color |
|
3393 depths default to all supported color depths rather than just Gray2, |
|
3394 Gray4 and Gray16. |
|
3395 4) Made processing of all EPOC.INI file keywords case-insensitive, and |
|
3396 extended maximum line length from 80 to 256 characters. EPOC.INI |
|
3397 syntax errors are now captured and displayed in a Message box before |
|
3398 causing the Emulator to exit. Text from the EPOC.INI file is |
|
3399 converted to UNICODE before processing. |
|
3400 |
|
3401 4) Mark |
|
3402 1) Added KLindaUidValue and used to set iMachineUniqueId in superpage |
|
3403 for MMAD L1/LB/LC. |
|
3404 |
|
3405 5) Pete |
|
3406 1) Merged in latest changes to MMC Controller and MMC Media driver. |
|
3407 The Controller now supports multiple block read/writes requests |
|
3408 and the Media driver makes use of the multiple block reads. |
|
3409 2) Added support in TCogent for the 2nd Dual UART device (ST16C2552) and |
|
3410 also suppport for its associated interrupts (in KA_PIC.CPP). |
|
3411 3) Added DCE serial drivers to Cogent - not yet fully functional. Also |
|
3412 re-organized cogent serial PDDs. These are now assigned as follows:- |
|
3413 Serial 0 - DCE using ST16C552 device (CTS/RTS). |
|
3414 Serial 1 - DCE using ST16C552 device (CTS/RTS). |
|
3415 Serial 2 - DTE using ST16C2552 device (RTS,DTR/CTS,DSR,RI). |
|
3416 Serial 3 - DTE using ST16C2552 device (RTS,DTR/CTS,DSR,RI). |
|
3417 4) Removed TLocalDrive class from EUSER (use TBusLocalDrive instead). |
|
3418 5) Changed TBusLocalDrive Read(), Write() Format() functions to use a |
|
3419 TInt64 rather than a TInt to specify position within the drive. |
|
3420 6) Removed RLogicalChannel class from EUSER (use RBusLogicalChannel |
|
3421 instead). |
|
3422 7) Removed RDevComm class from EUSER (use RBusDevComm instead). |
|
3423 |
|
3424 Version 1.02.254 |
|
3425 ================ |
|
3426 (Made by Pete, 21st December 1999) |
|
3427 |
|
3428 1) Petteri |
|
3429 1) Added extended serial port functionality as required by Linda. A new |
|
3430 pair of device drivers has been added to enable Linda to act as a DCE |
|
3431 device in addition to DTE. New notifications and capabilities have |
|
3432 been added. |
|
3433 |
|
3434 Files changed: |
|
3435 Inc\D32comm.h Inc\D32comm.inl |
|
3436 Inc\K32comm.h Inc\K32comm.inl |
|
3437 Inc\K32std.h Inc\V32linda.h |
|
3438 Dcomm\D_comm.cpp Vmadlc\Vm_com1.cpp |
|
3439 Vmadlc\Vm_com2.cpp Vmadlb\Vm_com1.cpp |
|
3440 Vmadlb\Vm_com2.cpp Varmca\Va_com1.cpp |
|
3441 Varmca\Va_com2.cpp Varmcl\Va_com1.cpp |
|
3442 Varmcl\Va_com2.cpp Varmp2\Va_com1.cpp |
|
3443 Varmpb\Va_com1.cpp Varmpc\Va_com1.cpp |
|
3444 Varmpc\Va_com2.cpp Varmpd\Va_com1.cpp |
|
3445 Varmpd\Va_com2.cpp Varmpd\Va_com3.cpp |
|
3446 Vawdb1\Va_com1.cpp Vawdb1\Va_com2.cpp |
|
3447 Vcgac1\Va_com1.cpp Vcgac1\Va_com2.cpp |
|
3448 Visaba\Vi_com1.cpp Visaba\Vi_com2.cpp |
|
3449 Visaba\Vi_com3.cpp Vrosr1\Va_coms.cpp |
|
3450 Vx86pc\Vx_comm.cpp Dpwins\D_cdrv.cpp |
|
3451 Kamad\Ka_linda.cpp Bmmad\Ekernu.def |
|
3452 Group\Bld.inf Ksrc\Ks_chn.cpp |
|
3453 |
|
3454 Files added: |
|
3455 Dcomm\D_commdce.cpp Vmadlc\Vm_com1dce.cpp |
|
3456 Group\Ecommdce.mmp Group\Dmtxlc1dce.mmp |
|
3457 Group\Dmtxlb1dce.mmp Vmadlb\Vm_com1dce.cpp |
|
3458 |
|
3459 2) Pete |
|
3460 Changes to the above DCE serial drivers and the new notification aspects |
|
3461 of the DTE serial drivers:- |
|
3462 1) Added DCE serial driver for Linda L1 together with the corresponding |
|
3463 changes to the existing DTE serial drivers for Linda L1. |
|
3464 2) Postponed various notification completion calls to a DFC. Also, now |
|
3465 uses DThread::Write() were appropriate to return completion |
|
3466 information to the client thread. |
|
3467 3) Changed implementation of NotifyFlowControlChange() so this only |
|
3468 completes when a change to a h/w signal has actually changed the Tx |
|
3469 flow control status. Also, now XON/XOFF changes trigger this notifier |
|
3470 too. |
|
3471 4) Slight change to the way NotifySignalChange() is implemented. |
|
3472 5) Implemented notification changes to WINS serial driver. |
|
3473 |
|
3474 3) Pete |
|
3475 Converted MEIG build to the Cirrus Logic 7211 - a ARM Architecture V4 |
|
3476 device. MEIG can now be built for ARM4, ARMI and THUMB and can no longer |
|
3477 be used on ARM 7110 (Eiger) platforms. |
|
3478 1) Modifications to Varmca variant (i.e. Cirrus Logic 7211 evaluation |
|
3479 board: |
|
3480 - Alterations to reflect changed GPIO allocation for the Rev.B |
|
3481 evaluation board. |
|
3482 - Fixed problem with diagnostic LED. |
|
3483 2) Fixed a problem with enabling additional CL-PS7111 interrupts. |
|
3484 3) Fixed a problem with TEiger::SetUart2Config() so that the 2nd 7211 |
|
3485 serial port now works OK. |
|
3486 4) Altered MEIG bootstrap to use ARMv4 rather than ARMv3 coprocessor |
|
3487 instructions to flush the cache and TLB. Also, now maps an extra page |
|
3488 for the additional 7211 Eiger specific registers. |
|
3489 5) Changed the definitions for MEIG in U32STD.H to use ARM4 rather than |
|
3490 ARM3 settings. |
|
3491 6) Added added support for additional 7211 registers in the TEiger class. |
|
3492 7) Modifed BLD.INF so that only the CA variant is built for MEIG |
|
3493 builds. The PB,PC,PD,P2,CL variants are no longer built. |
|
3494 |
|
3495 4) Pete |
|
3496 1) Changes to e32\dcomm\d_comm.cpp to fix a s/w flow control |
|
3497 problem. If SetConfig() is called on the serial port with |
|
3498 KConfigSendXon set in config.iHandshake and the port h/w has not yet |
|
3499 been initialised then the driver attempts to send an XON char with the |
|
3500 h/w off. No XON char is transmitted and no subsequent data can be |
|
3501 transmitted. |
|
3502 |
|
3503 5) Morgan |
|
3504 1) Bug fix for MMAD LB and LC variants |
|
3505 |
|
3506 Version 1.02.253 |
|
3507 ================ |
|
3508 (Made by Morgan, 3/12/99) |
|
3509 |
|
3510 0) Use with F32(201) |
|
3511 |
|
3512 1) Dennis |
|
3513 1) Use section mapped garbage area for SA1100 cache flushing. Main cache |
|
3514 flush area is at 0x43000000, mini cache at 0x43100000. |
|
3515 2) Added new function Mmu::FlushUnmap() which is called when RAM is |
|
3516 unmapped. This function flushes a writeback DCache to ensure that no |
|
3517 modified lines remain which relate to the unmapped memory. |
|
3518 3) Added new function Mmu::FlushCode() which is called after new code |
|
3519 is loaded into RAM - in DPlatProcess::Loaded and DPlatLibrary::Loaded. |
|
3520 This flushes the ICache on a split-cache machine. |
|
3521 4) Reinstated machine coded CActiveScheduler::Start() and CServer::RunL() |
|
3522 after applying the RunError() modifications from last release. |
|
3523 5) Added new define __CPU_EXC_VECTORS_MOVABLE in U32STD.H for |
|
3524 SA1100. This signifies that the processor offers a choice about the |
|
3525 virtual address used for the exception vector table. Changed SA1100 |
|
3526 bootstrap to place the vectors at 0xFFFF0000 and changed Mmu::Init1() |
|
3527 to set the end of the home section to 0xFFF00000 on SA1100. |
|
3528 6) Fixed scheduler bug which caused a null pointer dereference in the case |
|
3529 where TheCurrentVMProcess=NULL, i.e. during boot. |
|
3530 7) Modified SA1100 bootstrap to output boot tracing to the same port as |
|
3531 kernel tracing. Added more boot tracing. Tracing can now be done after |
|
3532 the MMU is enabled, since the output char function checks the MMU |
|
3533 control register. |
|
3534 8) Modified SA1100 bootstrap to set the correct RAM wait states when |
|
3535 running from RAM, since the bootloader sets pessimistic values. |
|
3536 9) Modified SA1100 bootstrap to mark the exception vectors as cacheable |
|
3537 and as readable by all code and writeable by none. |
|
3538 10) Removed __MCGA__ hacks from KCARM. We now use __CPU_ARMV3 define to |
|
3539 determine whether to use architecture 3 or 4 MMU instructions. |
|
3540 11) EXE code chunks are now allocated at the top of virtual address space |
|
3541 in the same region as DLL code chunks. Also they don't move during a |
|
3542 reschedule. This means that split-cache machines need never flush the |
|
3543 ICache except following loading of new code to RAM. |
|
3544 12) When sharing a DLL code chunk, copy entry point from the library whose |
|
3545 code chunk is being shared. |
|
3546 13) Added "kerneltrace 0x80000000" to every HEADER.IBY file, so panics are |
|
3547 always traced in debug builds. |
|
3548 |
|
3549 2) Morgan |
|
3550 1) Fixed a couple of warnings |
|
3551 2) Removed the 256 character limit from process command lines |
|
3552 Added Exec::ProcessCommandLineLength |
|
3553 Added RProcess::CommandLineLength() |
|
3554 Added RProcess::CommandLine(TDes&) |
|
3555 Changed UserSvr::ProcessCreate to take an additional cl HBufC parameter |
|
3556 Changed svProcessCreate and S::ProcessCreate[L] accordingly, and added |
|
3557 cleanup code. |
|
3558 Changed RLoader::LoadProcess RMessage to take additional cl parameter |
|
3559 Changed WINS getFileNameAndCommandLine initialisation function |
|
3560 DProcess::Create now takes and additional command line HBufC |
|
3561 3) Fixed PWM interface in TLinda |
|
3562 4) Added EStdKeyApplication<n> enumerations |
|
3563 5) Added KHARDWAREASSIST to the KTRACE #defines for switching on |
|
3564 hardware that can assist with kernel tracing |
|
3565 6) Mapped in CBA on EStdKeyDevice0..EStdKeyDevice3 on MMAD LB and LC |
|
3566 variants |
|
3567 7) Added hardware assist tracing to Variant::DebugOutput() on |
|
3568 MMAD platforms |
|
3569 8) Changed the XYInputType on MMAD platforms to EXYInputDeltaMouse, |
|
3570 and MCGA to EXYInputMouse by implementing ImpHal::XYInputType() |
|
3571 9) Integrated Matthew's new MMAD L1 variant |
|
3572 10) Integrated Matthew's WINS changes for mapping application keys |
|
3573 |
|
3574 3) Simon |
|
3575 1) Use Cogent extended PCI space if available |
|
3576 |
|
3577 Version 1.02.252 |
|
3578 ================ |
|
3579 (Made by Simon 25-11-1999) |
|
3580 |
|
3581 1) Morgan |
|
3582 1) Process create now correctly notifies the debugger of the new main |
|
3583 thread. |
|
3584 2) VMADLB and VMADLC report correct physical screen dimensions. |
|
3585 3) Updated the MMAD bootstrap to take new flash initialisation values |
|
3586 4) Pushed DPassiveDebugger Rom-library-hunting into 3rd stage kernel |
|
3587 initialisation. This is to allow the kernel heap to grow as required. |
|
3588 Also, reorganised strings in the DPassiveDebugger tables to take up |
|
3589 less room. |
|
3590 5) Added EVT100.MMP to build the vt100 display driver. |
|
3591 |
|
3592 2) Alastair |
|
3593 1) Changed exception-handling for system threads under WINS/WINC so that |
|
3594 exceptions are passed on to the system debugger for handling rather |
|
3595 than producing the Plat 46 dialog. |
|
3596 |
|
3597 3) Andrew T |
|
3598 1) Fixed regression defect EDNMDON-4DJK8E (from Defect tracking V3.0) as |
|
3599 suggested. |
|
3600 2) Added a further check on the message slot handle in |
|
3601 Kern::MessageComplete to verify that it lies within the kernel heap, |
|
3602 prior to the validity check. This prevents bogus message handles from |
|
3603 causing a kernel exception and crashing the kernel. |
|
3604 2a) Modified E32 t_svr test to test the new check. |
|
3605 |
|
3606 4) Andrew B |
|
3607 1) Added virtual "RunError" function to CActive definition in E32BASE.H, |
|
3608 and modified CActive::Scheduler::Start() to use new CActive::RunError |
|
3609 function when RunL leaves. It is a source compatible but not binary |
|
3610 compatible change. |
|
3611 2) Modified U32STD.H to prevent machine-coded versions of CServer::RunL() |
|
3612 and CActiveScheduler::Start() being used until the implementations are |
|
3613 updated to reflect the changes to the C++ versions. |
|
3614 3) Fixed long-standing defect in CActive::Deque() which stopped active |
|
3615 objects being re-added to scheduler. Updated T_ACT.CPP to test |
|
3616 CActive::Deque() defect and new RunError function. |
|
3617 |
|
3618 Version 1.02.251 |
|
3619 ================ |
|
3620 (Made by Morgan, 25/10/99) |
|
3621 |
|
3622 1) Alastair |
|
3623 1) Removed local function loadEnvironmentVariablesL() from |
|
3624 KPWINS\KP_INI.CPP. This change addresses ER5u software problem |
|
3625 EDNKDEY-4AAKEW "Long environment variables stop the emulator working". |
|
3626 The full emulator (from Mainline build 00019) still appears to work OK |
|
3627 without this function. Note that this change means that F32 will no |
|
3628 longer search the system path for DLLs to be loaded dynamically. |
|
3629 |
|
3630 2) Added code to make it possible to set the User::JustInTime() value |
|
3631 from the EPOC.INI file for WINS debug builds, using the syntax |
|
3632 |
|
3633 JustInTime 1 # turn on just-in-time debugging |
|
3634 JustInTime 0 # turn off just-in-time debugging |
|
3635 |
|
3636 Presumably only the latter will ever be used since JustInTime |
|
3637 debugging is enabled in WINS debug builds by default. The keyword is |
|
3638 case-insensitive. This change addresses ER5 defect EDN414664 "Should |
|
3639 be possible to set User::JustInTime from the EPOC.INI file". |
|
3640 |
|
3641 3) Refrozen EKERN.DLL for WINS/WINC so that the four functions referenced |
|
3642 by ordinal in source code appear at the start of the frozen .DEF file. |
|
3643 This means WINS/WINC executables linking to EKERN.LIB will need to be |
|
3644 rebuilt with the latest EKERN.LIB before they will run against the |
|
3645 latest EKERN.DLL. |
|
3646 |
|
3647 2) Morgan |
|
3648 1) TMachineInfo::iXYInputPresent has become iXYInputType. Added |
|
3649 enum TXYInputType in e32hal.h. This can take one of the values |
|
3650 EXYInputNone, EXYInputPointer, EXYInputMouse (delivers absolute |
|
3651 values in mouse events), EXYInputDeltaMouse (delivers relative |
|
3652 values in mouse events). |
|
3653 2) Removed MouseButtonDown and SetMouseButtonDown from UserHal and |
|
3654 Hal classes. Binary incompatable change. Incompatability limited |
|
3655 to the functions added last release. |
|
3656 3) Removed unused events from TRawEvent: EFlipChange, ESimButton* |
|
3657 and EPointerMoveBy. Removed unused TFlipPos from TRawEvent. |
|
3658 4) Updated MMAD emulated-mouse driver to use new API |
|
3659 |
|
3660 3) Alex |
|
3661 1) Added a preliminary version of MMC stack controller and MMC media |
|
3662 driver (currently disabled) to the "peripheral bus" drivers family. |
|
3663 2) Added Linda implementation of MMC stack ASSP layer. |
|
3664 |
|
3665 4) Bob |
|
3666 1) Applied suggested fix to TLinda::ArtError and TLinda::IrError in |
|
3667 kamad\ka_linda.cpp |
|
3668 Reset the fifo only when error condition, not after every byte |
|
3669 |
|
3670 5) Pete |
|
3671 Change to bootloader to support CL-PS7211. |
|
3672 Temporarily disabled ADC on Cirrus Logic board due to problems with it. |
|
3673 |
|
3674 |
|
3675 Version 1.02.250 |
|
3676 ================ |
|
3677 (Made by Morgan, 27/9/99) |
|
3678 |
|
3679 1) Morgan |
|
3680 1) Added the very random number generator Math::Random and Kern::Random. |
|
3681 Any device drivers that can derive random bits from their devices |
|
3682 should call Kern::RandomSalt(TUint aBitOfSalt) to mix up the kernel's |
|
3683 random pool. Only the LSB is used. |
|
3684 2) MAWD Arm::IrqDispatch adds random salt from TWind::RtcTickCount() |
|
3685 MEIG Arm::IrqDispatch adds random salt from TEiger::RtcTickCount() |
|
3686 MISA Arm::IrqDispatch adds random salt from TSa1100::OstData() |
|
3687 MCGA Arm::IrqDispatch adds random salt from TCogent::TimerCounter() |
|
3688 3) Added DPowerModel::NotifyEvent called from Kern::AddEvent. Override |
|
3689 this function in your power model to implement auto timeout behaviour. |
|
3690 eg |
|
3691 DMachinePowerModel::NotifyEvent() |
|
3692 { iLcdPowerHandler->ResetAutoSwitchOffTimer(); } |
|
3693 4) Fixed HW IO mapping problem in the MMAD bootstrap |
|
3694 5) Fixed \e32\rmmad\header.iby. Now includes screen size. |
|
3695 |
|
3696 2) Chris |
|
3697 1) Fixed bug in TDMA (generic dma) affecting receive transfers large |
|
3698 enough to require breaking down into multiple dma operations. |
|
3699 2) Changes to TLinda fns DmaSrcSize() and DmaDestSize(). |
|
3700 3) Changed ImpDma::GetInterrupt() and added code to set up the correct |
|
3701 device widths of peripherals for dma on Linda. |
|
3702 4) Changed fast ir LDD to store ir frames on 4 byte boundaries. |
|
3703 5) Changed PDD/LDD fast ir interface to be more generic and added |
|
3704 Caps/Config. |
|
3705 6) Added incomplete Linda fast ir pdd(difilb). Supports 1M and 4M. |
|
3706 |
|
3707 3) Jonathan |
|
3708 1) Fixed ER5u defect EDNGASR-46SD7V "Special keycodes conflict with |
|
3709 Unicode values" by making non-character keys start at 0xff80 and |
|
3710 special keys start at 0xff70, within the UNICODE private area. |
|
3711 inc\e32keys.h |
|
3712 |
|
3713 4) Petteri |
|
3714 1) Added base mouse support. |
|
3715 [Note, this API has not been finalised. If you use these |
|
3716 APIs expect source and binary incompatable changes next |
|
3717 release] |
|
3718 Files changed: |
|
3719 Vmadlc\Vm_hw.cpp Usrc\Us_exec.cpp |
|
3720 Vmadlc\Vm_keyb.cpp Kpehal\Kph_inf.cpp |
|
3721 Vmadlb\Vm_hw.cpp Kamad\ka_inf.cpp |
|
3722 Vmadlb\Vm_keyb.cpp Kpepoc\Kp_dat.cpp |
|
3723 Inc\E32svr.h Bmarm\Euseru.def |
|
3724 Inc\E32hal.h Bmmad\Ekernu.def |
|
3725 Inc\U32std.h Bmawd\Ekernu.def |
|
3726 Inc\M32hal.h Bmcga\Ekernu.def |
|
3727 Inc\M32std.h Bmeig\Ekernu.def |
|
3728 Kaisa\Ka_inf.cpp Bmisa\Ekernu.def |
|
3729 Kacga\Ka_inf.cpp Bmros\Ekernu.def |
|
3730 Kaeig\Ka_inf.cpp Bwins\Euseru.def |
|
3731 Karos\Ka_inf.cpp |
|
3732 Keawd\Ka_inf.cpp |
|
3733 2) Added virtual cursor support for Linda |
|
3734 |
|
3735 5) Simon |
|
3736 1) MCGA will now 'dual boot' on CMA120 and CMA102 |
|
3737 |
|
3738 6) Alastair |
|
3739 1) Changed GROUP\GENERIC.INF so that ELOCL.DLL is not built for |
|
3740 THUMB. |
|
3741 |
|
3742 7) Malcolm |
|
3743 1) Added new feature to rom.bat find template files by scanning |
|
3744 the e32/r*/ directories for .oby files. The config file now |
|
3745 simply specifies which one is the default - if this is not |
|
3746 present then another template is picked. The new |
|
3747 --list-templates option lists the known templates, along with |
|
3748 a description. The description is picked up from a line in |
|
3749 the .oby file starting //#NAME: |
|
3750 |
|
3751 2) Added ability to reuse rom.oby file in rom.bat (--reuse). |
|
3752 This is not recommended but is useful for quick .oby file |
|
3753 hacks. There is a heuristic employed to determine the ASSP of |
|
3754 the rom.oby file from its name, or it can be specified |
|
3755 directly. |
|
3756 |
|
3757 3) Changed MAWD, MEIG, MISA, MAD, SROS and SARM bootstraps to |
|
3758 pick up the kernel trace mask from the rom header (requires |
|
3759 rombuild > 125 to write the info there). |
|
3760 |
|
3761 8) Alex |
|
3762 1) Fixed multiplier for TMillisecondTimer on MMAD, and adjusted |
|
3763 delay in keyboard driver. |
|
3764 |
|
3765 |
|
3766 Version 1.02.197 |
|
3767 ================ |
|
3768 (Made by Morgan, 26/8/99) |
|
3769 |
|
3770 SOURCE-ONLY RELEASE |
|
3771 Built with MSVC6 |
|
3772 |
|
3773 1) Jason |
|
3774 1) Removed Casius MISA variant and all references to FPGA14 from MISA |
|
3775 code. |
|
3776 2) Uncached screen chunk in \KAISA\KA_INI.CPP to fix stripy cursors. |
|
3777 3) Update the MISA OST timer and match registers (KA_INI.CPP) over switch |
|
3778 off/on. |
|
3779 4) MISA Seting of RTC clock now wait for one 32KHz tick. |
|
3780 5) MISA Codec sample rate divider functions fixed. |
|
3781 6) MISA Tick code fixed. |
|
3782 7) InitSystemTime() implemented for MISA. |
|
3783 8) MISA Bootstrap now uses correct MMU permissions for page tables. |
|
3784 Pagetables unlocked and locked (KA_ISA.CPP) in MISA sleep code. |
|
3785 9) MISA Mini-Cache is now mappable and flushable, using new mappings of |
|
3786 EUserRwNotBuff, ESupRwNotBuff. |
|
3787 10) \VISABA\VI_HW.CPP variant tidied up with Eikon friendly constants. |
|
3788 11) \VISABA\VI_XYIN.CPP restructured. |
|
3789 12) Added OS Timer Watchdog Enable to MISA sleep code and cleared all |
|
3790 the OST status bits after wakeup. |
|
3791 13) Fixed possible MISA millisecond timer code bug. |
|
3792 |
|
3793 2) Alastair |
|
3794 1) Removed ESOUND.LDD and ESDRV.PDD - these projects are now part of |
|
3795 E32TEST. |
|
3796 2) Used #defines in GROUP\GENERIC.INF to ensure that KC_EXE.LIB is not |
|
3797 built for THUMB. |
|
3798 3) Moved EUSER from BLD.INF to GENERIC.INF so that it's built only for |
|
3799 generic platforms rather than ASSP-specific platforms. Used #defines |
|
3800 so that it's not built for THUMB. |
|
3801 4) Added empty target "FINAL" to GROUP\BOOTROM.MKE. |
|
3802 5) Disabled VC6 warning C4414 - short jump to function converted to near, |
|
3803 in UPWINS\UP_I64.CPP and UPWINS\UP_REALX.CPP. |
|
3804 6) Fixed BOOTROM.MKE so that SROS builds correctly report their |
|
3805 releasable. |
|
3806 7) Added extension makefile KCARM\ABORTH.MKE to copy the correct abort |
|
3807 handler object file to \Epoc32\Build\...., and corresponding Perl file |
|
3808 KCARM\ABORTH.PL. |
|
3809 8) Changed IBY files in ROMBUILD directory to #include the E32TEST and |
|
3810 F32TEST IBY files generated by ABLD TEST ROMFILE. |
|
3811 9) Removed narrow frozen .DEF files. |
|
3812 10) Re-frozen all .DEF files in new format so that the C++ name |
|
3813 appears with the mangled name for all exports and windiff can be |
|
3814 used to compare frozen .DEF files with generated .DEF files. |
|
3815 |
|
3816 3) Petteri |
|
3817 1) Added a new variant (Vmadlc) for Linda Macro m1.3BB rack. |
|
3818 |
|
3819 Files changed: |
|
3820 Group\Bld.inf Kbmad\E32var.iby |
|
3821 Kbmad\Rom.cmd Kbmad\Rom.oby |
|
3822 |
|
3823 Files added: |
|
3824 Vmadlc\Distrib.txt Vmadlc\Vm_com1.cpp |
|
3825 Vmadlc\Vm_com2.cpp Vmadlc\Vm_hw.cpp |
|
3826 Vmadlc\Vm_kdata.cpp Vmadlc\Vm_keyb.cpp |
|
3827 Vmadlc\Vm_pbus.cpp Vmadlc\Vm_xyin.cpp |
|
3828 Inc\V32madlc.h Group\Cmkdlc.mmp |
|
3829 Group\Cmkylc.mmp Group\Cmxylc.mmp |
|
3830 Group\Dmtxlc1.mmp Group\Dmtxlc2.mmp |
|
3831 Group\Vmadlc.mmp Bmmad\Vmadlc.def |
|
3832 Bmmad\Vmadlcu.def |
|
3833 |
|
3834 4) Morgan |
|
3835 1) Improved the MMAD TIdler to perform tickQ correction and to take notice |
|
3836 of active millisecond timers |
|
3837 2) Wired in the TRtc class to the SetSystemTime function |
|
3838 3) Corrected ImpMmu::FlushShadow for MMAD |
|
3839 4) Added a flag to MilliSecondTimer so we can tell if the Millisecond |
|
3840 timers are being used while in Idle |
|
3841 5) Bug fix to TDma::GetLargestXfer which was delivering odd count values |
|
3842 6) Added initialisation function optimisation for pipe and copy commands |
|
3843 in ImpDma |
|
3844 7) Incorporated TLinda::SetStateDiscriminator into the ImpDma |
|
3845 initialisation functions |
|
3846 |
|
3847 5) Pete |
|
3848 1) E32 provides the following function to facilitate notification |
|
3849 of media change events:- |
|
3850 TInt UserSvr::MediaChangeNotify(TMediaDevice aDevice,TRequesStatus *aStat); |
|
3851 This currently only supports a single request to be outstanding on any |
|
3852 socket at any given time. Hence, for platforms which have more than one |
|
3853 socket, it is only possible to be notified of a media change on one of |
|
3854 these sockets. This has been changesd to allow a request to be |
|
3855 outstanding on each socket. |
|
3856 2) Removed support for 2nd PC Card socket from VARMPD - no longer have a |
|
3857 rack with this h/w functional. |
|
3858 3) Modified function UserSvr::ForceRemountMedia(TMediaDevice aDevice) to |
|
3859 allow a fixed drive as well as a removable drive to be specified. It |
|
3860 can now be called after having installed a new media driver to force |
|
3861 a remount on the appropriate drives. This fixes a problem where a new |
|
3862 driver for a fixed device is loaded but there is no way to force F32 |
|
3863 to remount the local drives associated with the media driver. |
|
3864 4) Modifications to Varmca variant: |
|
3865 - Alterations to reflect changed GPIO allocation for the LCD interface |
|
3866 on Rev.B evaluation board. |
|
3867 - Enabled diagnostic LED. |
|
3868 - Enabled SPI-ADC device. |
|
3869 |
|
3870 6) Chris |
|
3871 1) Added mouse driver to Cogent + hardware cursor. |
|
3872 2) Changed name of serial driver on Cogent to that expected by Romkit. |
|
3873 3) Tidied up fast ir. |
|
3874 4) Changed unit masks for Com2 and Com3 on Brutus. |
|
3875 5) Modified Cogent serial drivers. Passes T_Serial. |
|
3876 |
|
3877 |
|
3878 7) Jonathan |
|
3879 1) Removed kc_exc.cpp and ke_exc.cpp from all distributions until IPR |
|
3880 issues are clarified. |
|
3881 |
|
3882 8) Dennis |
|
3883 1) Added __SWITCH_TO_ARM and __END_ARM macros for use in test programs to |
|
3884 enable them to build in THUMB without rewriting assembler code. |
|
3885 2) Modified test ROM build script to work with new GCC. |
|
3886 3) Initialise .data and .bss for ROM-resident device drivers when driver |
|
3887 is loaded. |
|
3888 4) Corrected TLocDrv::Caps(TDes8& aCapsBuf) so it doesn't assume that the |
|
3889 descriptor parameter is a TBuf8. |
|
3890 5) Removed Kern::Printf() from Kern::PowerGood() - this causes the serial |
|
3891 driver to lock up since it gets called in the serial driver's ISR. |
|
3892 6) Modifications to ROM.BAT: |
|
3893 Added --inst option to specify instruction set. If not specified, |
|
3894 defaults to first instruction set listed for the ASSP in ROM.CFG. |
|
3895 Build (--build) can now be UDEB or UREL only. If not specified, |
|
3896 defaults to the first build listed in ROM.CFG (ie UDEB). |
|
3897 Changed format of ROM.CFG - [VARIANTS] section has been scrapped. |
|
3898 [ASSPS] section now lists for each ASSP the ROMBUILD flags to use, the |
|
3899 variants supported and the instruction sets supported. |
|
3900 |
|
3901 9) Simon |
|
3902 1) Mouse is now optional, ie doesn't hang if no mouse connected |
|
3903 |
|
3904 |
|
3905 Version 1.02.196 |
|
3906 ================ |
|
3907 (Made by William, 13.8.99) |
|
3908 |
|
3909 SOURCE-ONLY RELEASE |
|
3910 Built with MSVC6 and ARMv4 (GCC 518). |
|
3911 |
|
3912 CHANGES TO RELEASABLE |
|
3913 1) William |
|
3914 1) CAKD*.MMP files no longer specify ASSP_LIBRARY EKERN.LIB, so that they |
|
3915 can be built correctly for THUMB. |
|
3916 |
|
3917 2) U32STD.H now defines __SUPPORT_THUMB_INTERWORKING for ARMv4T, using |
|
3918 #ifdef __ARM_ARCH_4T__ to distinguish between MAWD compiled with the |
|
3919 new GCC and MAWD compiled with the old toolchain. |
|
3920 |
|
3921 3) The GCC "_call_via_rX" helper functions required by THUMB code are |
|
3922 hacked into up_dll.cpp and uc_exe.cpp. This should be removed and |
|
3923 replaced by the proper GCC.LIB mechanism. |
|
3924 |
|
3925 4) RequestComplete tracing is now conditional on KTHREAD+KSEMAPHORE |
|
3926 |
|
3927 5) BOOTROM.MKE CLEAN target now removes intermediate .o files |
|
3928 |
|
3929 |
|
3930 Version 1.02.195 |
|
3931 ================ |
|
3932 (Made by Alastair, 2.8.99) |
|
3933 |
|
3934 SOURCE-ONLY RELEASE |
|
3935 Built with MSVC6 |
|
3936 |
|
3937 CHANGES TO RELEASABLE |
|
3938 1) Alastair |
|
3939 1) E32 now releases zip files for ARMI, ARM4 and THUMB in the same style |
|
3940 as it's other releasables. Note that generic EUSER.LIB and EDISP.LIB |
|
3941 are still released with the ASSP-specific releasables, though all |
|
3942 other generic stuff is now contained in the 3 new zip files. To use |
|
3943 these releasables it's necessary to use E32TOOLP version 120 and the |
|
3944 new GCC compiler. |
|
3945 |
|
3946 This change is academic for this release since it's source-only, also |
|
3947 it has, in fact, been built with the old gcc compiler. |
|
3948 |
|
3949 1) Alastair |
|
3950 1) Hopefully fixed ER5u defect EDNDMAI-49UE4V |
|
3951 '"KERN RE-ENTRANT" Panic' in KPWINS\KP_UTL.CPP by converting the |
|
3952 UNICODE RDebug::Print text to NARROW 256 characters at a time using |
|
3953 a stack variable rather than allocating space on the heap. |
|
3954 |
|
3955 2) Fixed ER5 defect EDNKDEY-45NHVH |
|
3956 "Unhandled exception checking for priority key (emulator only)" in |
|
3957 WSRC\KY_TRAN.CPP by making sure that capture key data is not left |
|
3958 uninitialised when Windows produces a character code that the EPOC |
|
3959 translation tables didn't. |
|
3960 |
|
3961 3) Fixed ER5u defect EDNWROS-46YC3V "Plat fault or Plat panic?" in |
|
3962 KPWINS\KP_UTL.CPP so that the Fault/Panic distinction is part of the |
|
3963 text inside the alert box rather than just in the title where nobody |
|
3964 ever thinks to look. |
|
3965 |
|
3966 4) Split BLD.INF into BLD.INF and GENERIC.INF with GENERIC.INF containing |
|
3967 details of those projects which are not ASSP-specific. This change |
|
3968 corresponds to changes in E32TOOLP version 120 and is designed to |
|
3969 support building E32 with the new GCC compiler for the new targets. |
|
3970 To build E32 it is now necessary to build the generic libraries, then |
|
3971 the ASSP-specific libraries, then the generic releasables, then the |
|
3972 ASSP-specific releasables. |
|
3973 Updated .OBY files so that, if E32 is built with the old GCC compiler, |
|
3974 they will look for the generic releasables in the right places. They |
|
3975 will need more updating to work with the new compiler though. |
|
3976 |
|
3977 5) Changed EKERN.MMP and KC_EXE.MMP so that EKERN links to KC_EXE.LIB |
|
3978 rather than KE_EXE.LIB under MAWD. |
|
3979 |
|
3980 6) Now building E(EXE|DLL).LIB rather than E(EXE|DLL).o under MARM and |
|
3981 E(EXE|DLL).obj under WINS. This means that using this version of |
|
3982 E32 requires E32TOOLP version 120. |
|
3983 |
|
3984 7) Changed E32DEF.H so that WINS/WINC warning C4710, about functions not |
|
3985 being inlined, is disabled for MSVC versions 5 or later, rather than |
|
3986 just MSVC5. |
|
3987 |
|
3988 8) Commented out user-side tracing macros under WINS/WINC builds in |
|
3989 INC\U32STD.H because they cause the kernel to go re-entrant. This |
|
3990 should be investigated further. |
|
3991 |
|
3992 9) Integrated changes for compiling with VC6 from Ann Windsor and William |
|
3993 Roberts. Changes to EKERNU.DEF and EUSERU.DEF mean that this release |
|
3994 of E32 will not build with MSVC5 and the import libraries from this |
|
3995 release will not be compatible with MSVC5. |
|
3996 |
|
3997 2) Malcolm |
|
3998 1) Enabled debug monitor for SROS, and protected some MMU |
|
3999 instructions for single builds. |
|
4000 2) Added new trace level, KMEMTRACE that dumps alloc/free/realloc and |
|
4001 chunk adjustments (chunks in SINGLE only) to the debug log |
|
4002 |
|
4003 3) Morgan |
|
4004 1) Made Mmu::AllocPageTable public so it can be accessed by the debugger |
|
4005 2) Added MMAD-specific debugger implementation, and null debuggers for |
|
4006 those platforms without support |
|
4007 3) Moved useful ARM Mmu definitions into kcarm\kc_mmu.h |
|
4008 4) MMAD debugger now updates the thread id register, remaps the Rom |
|
4009 as small pages, and allocates some free pages for SW breakpointing. |
|
4010 5) Removed explicit references to variants from KC_UTL.CPP and removed |
|
4011 reference to the Eiger variant (V32ARM.H) from the global header |
|
4012 KC_STD.H. Pushed P::StartupBeep into the ASSP layer. Re-organised |
|
4013 P::OutputToCom1 functionality so the variant is only referenced in |
|
4014 ASSP layer. Changed P::ScreenInfo() to use the Hal function instead |
|
4015 of calling the variant directly. |
|
4016 6) Defined TExtInterrupt in KC_STD.H, but it should really be moved into |
|
4017 the Eiger platform which seems to be its only client. |
|
4018 7) Modified the Asic::Debug* functions for all ASSPs |
|
4019 8) Added MMAD interfaces for the Psu and Rtc to V32MAD.H and wired them |
|
4020 into the kernel |
|
4021 9) Implemented EDNWROS-49ZKUX "Unhelpful trace message" |
|
4022 |
|
4023 4) Dennis |
|
4024 1) Added alignment checking on 16-bit descriptor functions in DEBUG mode. |
|
4025 2) Modified User::HandleException() to trap leaves by the exception |
|
4026 handler and pass them on after clearing the last chance flag and doing |
|
4027 User::WaitForAnyRequest(); |
|
4028 |
|
4029 5) Chris |
|
4030 1) Added slow ir pdd for Linda (dmtxlb2). |
|
4031 2) Added serial pdd for Cogent (datxcg1 and datxcg2). |
|
4032 3) Made small change to Brutus slow ir pdd (ditxba2). |
|
4033 |
|
4034 |
|
4035 Version 1.02.189 |
|
4036 ================ |
|
4037 (Made by Kal Patel, 22nd July 1999) |
|
4038 |
|
4039 1) Jonathan |
|
4040 1) TStringToDateTime::NextToken(): |
|
4041 Fixed defect EDN830354: Allow am/pm designators to be non-alpha and >3 |
|
4042 characters. |
|
4043 Reapplied and reworked an ER5 ICF (defect EDNANOE-49BFV2): Match |
|
4044 against abbreviated month names instead of leading substrings of |
|
4045 months. |
|
4046 usrc\us_parse.cpp |
|
4047 |
|
4048 2) Morgan |
|
4049 1) Added an implementation of TMillisecondTimer for MMAD |
|
4050 kamad\ka_pic.cpp |
|
4051 2) Implemented workaround for ARM915T MMU MCR instruction bug |
|
4052 Interrupts are disabled over writes to the domain access control |
|
4053 register |
|
4054 kcarm\kc_int.cpp |
|
4055 kcarm\kc_sched.cpp |
|
4056 inc\kc_std.h |
|
4057 3) Fixed the definition of delta and tick TTimerModes |
|
4058 inc\v32linda.h |
|
4059 4) Added a new class TIdler, that switches off rescheduling and the tick |
|
4060 during idle, and reenables it shortly before a timer is due. |
|
4061 kamad\ka_idle.cpp |
|
4062 kamad\ka_std.h |
|
4063 5) Exported functions from DPowerModel for those power models that |
|
4064 are implemented outside of the platform kernel |
|
4065 inc\k32power.h |
|
4066 ksrc\ks_power.h |
|
4067 6) Moved the MMAD variant to VMADLB, and invented a custom layer suitable |
|
4068 for MMAD. VARMLB.DLL is now VMADLB.DLL. CA*LB.DLL is now CM*LB.DLL. |
|
4069 DATXLB1.DLL is now DMTXLB1.DLL. |
|
4070 varmlb\* |
|
4071 inc\v32mad.h |
|
4072 inc\v32madlb.h |
|
4073 group\ca*lb.mmp |
|
4074 group\varmlb.mmp |
|
4075 |
|
4076 3) Alastair |
|
4077 1) Added RESOURCE target to GROUP\BOOTROM.MKE. |
|
4078 2) Removed defunct .DEF files from BSARM, BSCGA and BSROS. |
|
4079 3) Removed defunct UPEPOC\UP_CON.CPP. |
|
4080 4) Removed defunct BLD.CMD files from various directories. |
|
4081 5) Updated GROUP\E32.FTC to include the MCGA releasables. |
|
4082 6) Changed GROUP\BOOTROM.MKE to copy KBMCGA\COGENT.BIN to |
|
4083 \EPOC32\Release\MCGA\BOOTROM.BIN. Updated KBMCGA .OBY files |
|
4084 accordingly. |
|
4085 7) Changes to support building with new compiler (*.oby files, |
|
4086 /group/mnt.bat files, /group/bld.inf files etc) |
|
4087 |
|
4088 4) Simon |
|
4089 1) Fixed problem with cogent timer interrupt going off for no good reason |
|
4090 kacga\ka_pic.cpp |
|
4091 2) Fixed problem in vcgac1\va_keyb.cpp that caused intermittent exceptions |
|
4092 |
|
4093 5) Malcolm |
|
4094 1) Added new RAM Loaded code functionality |
|
4095 2) Modifications for Unicode SROS |
|
4096 3) Incorporated Kista-Patch-Baseport-3.00-990717A |
|
4097 kbros/rose.inc |
|
4098 vrosr1/va_xyin.cpp |
|
4099 karos/ka_rose.cpp |
|
4100 INC/D32COMM.H, INC/V32Rose.h |
|
4101 vrosr1/va_coms.cpp |
|
4102 group/DATXR11.MMP |
|
4103 group/bld.inf |
|
4104 |
|
4105 6) Kal |
|
4106 1) Added the Aort handler functionality for flash filing system use |
|
4107 karos/ka_ini.cpp |
|
4108 karos/ka_excep.cpp |
|
4109 karos/ka_std.h |
|
4110 karos/ka_rose.cpp |
|
4111 WSRC/wd_rose4.cpp |
|
4112 group/EKERN.MMP |
|
4113 INC/V32Rose.h |
|
4114 2) Added Fast Timers on A1C |
|
4115 karos/ka_rose.cpp |
|
4116 karos/ka_pic.cpp |
|
4117 karos/ka_std.h |
|
4118 INC/distrib.txt |
|
4119 INC/V32FTick.h |
|
4120 group/bld.inf |
|
4121 |
|
4122 |
|
4123 Version 1.02.188 |
|
4124 ================ |
|
4125 (Made by Dennis, 13th July 1999) |
|
4126 |
|
4127 1) Morgan |
|
4128 1) Removed the SPI controller from MMAD platform |
|
4129 kamad\ka_spi.cpp |
|
4130 kamad\ekern.mmp |
|
4131 kamad\ka_psu.cpp |
|
4132 2) Used a more efficient method for draining the write buffer on MMAD |
|
4133 kcarm\kc_mmu.cpp |
|
4134 kamad\ka_ini.cpp |
|
4135 3) Included a missing call to POS in the slow swi dispatcher |
|
4136 kcarm\kc_int.cpp |
|
4137 4) Frozen BMMAD |
|
4138 bmmad\*.def |
|
4139 5) Added a gcc-helper static library (EGCC.LIB) which currently |
|
4140 only contains the __fixuns* helper functions |
|
4141 upepoc\up_gcc.cpp |
|
4142 group\egcc.mmp |
|
4143 6) Implemented RTC emulation |
|
4144 kamad\ka_utl.cpp |
|
4145 kamad\ka_std.h |
|
4146 kamad\ka_pic.cpp |
|
4147 7) Added state discriminator functions to TLinda and updated Linda Dma |
|
4148 kamad\ka_dma.cpp |
|
4149 kamad\ka_linda.cpp |
|
4150 inc\v32linda.h |
|
4151 |
|
4152 2) Petteri |
|
4153 1) Added an improved version of |
|
4154 varmlb\va_keyb.cpp |
|
4155 |
|
4156 3) Alastair |
|
4157 1) Added Graham Asher's updates to his change to UMATH\UM_DTOR.CPP so that |
|
4158 it builds in narrow variants. |
|
4159 2) Added GROUP\BOOTROM.MKE - a bldmake-compatible custom-build makefile |
|
4160 for building bootstraps. |
|
4161 3) Removed some hacks from MNT.BAT now that MAKMAKE from E32TOOLP version |
|
4162 109 builds static libraries to \EPOC32\Release\MARM rather than |
|
4163 \EPOC32\Release\MEIG. |
|
4164 4) Moved \e32\inc\conswins.def to \e32\inc\econs.def and listed it for |
|
4165 export to \epoc32\release\wins\econs.def. Made a corresponding change |
|
4166 to \e32\inc\consmarm.def and removed \e32\inc\consmisa.def. |
|
4167 5) Moved the implementation of the RConsole and TConsoleKey classes into |
|
4168 EWSRV.DLL from ECONS.DLL. Stopped exporting all functions from the |
|
4169 CConsoleTextWin Class under WINS/MARM except the function to create a |
|
4170 new console. Removed the dummy export from the text window server. |
|
4171 This means there is no longer a mutual link-time dependency between |
|
4172 ECONS.DLL and EWSRV.DLL - ECONS.DLL merely depends upon EWSRV.DLL, and |
|
4173 the WINS ECONS.DLL has the same API as the WINC one. and not vice |
|
4174 versa. |
|
4175 6) Added fetcher definition file, E32.FTC, to the group directory. |
|
4176 7) Fixed ER5U defect EDNABRY-48YFUC "Compiling E32 with MSVC6 reveals |
|
4177 problems with TPtr8 and TPtr16 copy constructors." |
|
4178 Fixed in USRC\US_DES8.CPP by taking the contents of the function |
|
4179 TPtr8::Set(TPtr8 &aPtr) function and adding it to function |
|
4180 TPtr8::TPtr8(const TPtr8& aTPtr). This change is not binary compatible |
|
4181 backwards with code which calls the TPtr8 copy constructor either |
|
4182 explicitly or implicitly and relies upon the previous behaviour of the |
|
4183 copy constructor. The previous behaviour merely made sure that the |
|
4184 copied TPtr pointed to the same descriptor as the original TPtr, while |
|
4185 the new behaviour also makes sure that the TPtr's iType is set |
|
4186 correctly. |
|
4187 These changes were necessary for TPtr8s to work correctly when compiled |
|
4188 with MSVC6. I have made corresponding changes to the TPtr16 copy |
|
4189 constructor. |
|
4190 8) Changed KPWINS\KP_GUI.CPP so that the Windows character code |
|
4191 translation is suppressed if the Ctrl, Alt and Shift keys are all |
|
4192 depressed. This means that the heap-checking code for APPs which used |
|
4193 the Ctrl-Alt-Shift-A combination will now work again, as the EPOC key |
|
4194 translation will not be overridden by the Windows translation. |
|
4195 |
|
4196 4) Chris |
|
4197 1) Added export to mmu to enable creation of DHardware chunk from Ram. |
|
4198 2) Slight change to TDma to allow it to break up non-contigous transfer |
|
4199 buffers. |
|
4200 3) Added fast infra-red LDD(Efir) to misa and mmad and a fast infra-red |
|
4201 PDD(Difiba) to misa. |
|
4202 4) Changes to TSa1100 variant class to implement infra red and dma on |
|
4203 misa. |
|
4204 ImpDma class impemented also for misa. |
|
4205 5) Added 572000,1152000 and 4000000 baud defs to d32comm.h. |
|
4206 |
|
4207 5) Dennis |
|
4208 1) Added routine ImpExc::AdjustRegisters() to restore registers on ARM |
|
4209 processors to allow an aborted instruction to be retried. |
|
4210 2) Added TException::Bind(), TException::UnBind() exported functions to |
|
4211 allow device drivers to bind to exceptions. |
|
4212 3) Various Snowdrop-specific fixes which didn't make it for ER5. |
|
4213 (Euro, Digitiser factory settings, Windermere DRAM refresh, ROM size, |
|
4214 digitiser EEPROM calibration) |
|
4215 4) Prefetch aborts now have exception ID EExcCodeAbort instead of |
|
4216 EExcGeneral. |
|
4217 5) Added ExecHandler::RomHeaderAddress() to windermere kernel. |
|
4218 6) Rearranged VAWDB1U.DEF so that VariantInitialise__Fv is at ordinal 1 |
|
4219 (this is necessary or else nothing works). |
|
4220 7) Fixed bug in new RTest where RDebug::Printf(_L("<string>")) would panic |
|
4221 if <string> contained a % character. This was due to <string> being |
|
4222 passed into AppendFormatList which was then interpreting the % as a |
|
4223 format specification. |
|
4224 8) Modified assembler code in EUSER to allow thumb interworking by making |
|
4225 all subroutine returns and indirect function calls use the BX |
|
4226 instruction. Macros have been used so that the ARM-only version with |
|
4227 no BX instructions can still be built - this is necessary for |
|
4228 StrongARM builds. |
|
4229 |
|
4230 Macros employed are: |
|
4231 |
|
4232 __JUMP(cc,r) = BXcc r or MOVcc PC, r |
|
4233 __POPRET(rlist) = LDMFD SP!, {rlist,lr} \ BX lr or LDMFD SP!,{rlist,pc} |
|
4234 __CPOPRET(cc,rlist) = LDMccFD SP!, {rlist,lr} \ BXcc lr or LDMccFD SP!, {rlist,pc} |
|
4235 |
|
4236 NOTE: Thumb interworking is still disabled by default, since the new GCC |
|
4237 is not yet fully deployed. |
|
4238 |
|
4239 9) Made minimal modification to EKERN to permit thumb user code to execute |
|
4240 correctly. This involves changing two instances of "mov pc, lr" in the |
|
4241 SWI handler to __JUMP(,lr) and also involves changing |
|
4242 DArmPlatThread::CallFunction to use separate routines depending on |
|
4243 whether an ARM or THUMB context is being modified. Also, when saving |
|
4244 context following a SWI call, the saved PC points to a BX instruction |
|
4245 instead of to the return address from the Exec:: function. |
|
4246 |
|
4247 NOTE: All supervisor mode code is expected to be ARM. Much more |
|
4248 extensive modification of the kernel would be required to permit THUMB |
|
4249 device drivers. |
|
4250 |
|
4251 10) Compiled and tested E32 with the new version of GCC. This produces |
|
4252 several warnings, mostly "comparison of signed and unsigned", "ANSI |
|
4253 C++ does not permit declaration without type", "Taking address of |
|
4254 temporary" and "XXX declared but not used" (for variables or functions |
|
4255 only used from within assembler code). Modified the source to remove |
|
4256 these warnings. |
|
4257 |
|
4258 11) Compiled and tested E32 using THUMB test executables. These all work |
|
4259 apart from those which contain ARM assembler code. Disabled |
|
4260 breakpoint exception since this can crash the kernel with an alignment |
|
4261 fault if an undefined instruction is encountered in THUMB code. |
|
4262 Fixing this properly would require a lot of work on the debugger to |
|
4263 fully support THUMB. |
|
4264 |
|
4265 NOTE: To build THUMB executables, the _call_via_r0() helper functions |
|
4266 are required. These were added to EEXE.O for testing purposes, but will |
|
4267 eventually be in the GCC helper library. |
|
4268 |
|
4269 12) Modified TDes::AppendFormatList() so that variable precision |
|
4270 specifications are now allowed, and so that the precision |
|
4271 specification is also applied to strings. |
|
4272 |
|
4273 6) Simon |
|
4274 1) Improved ps/2 keyboard initialisation within kacga |
|
4275 |
|
4276 7) Mark |
|
4277 1) Enabled unicode WINS/WINC to run on Windows 9x. Introduced euniw.dll |
|
4278 to convert between unicode and relevant narrow Win32 functions. |
|
4279 Added exported set of functions to euser.dll that return a pointer |
|
4280 to either the relevant 'W' Win32 function or a wrapper function in |
|
4281 euniw.dll. These functions and the initialisiation of the function |
|
4282 pointers is implemented in upwins\up_uansi.cpp. |
|
4283 2) Changed unicode to narrow WINS/WINC conversion from UTF-8 to |
|
4284 CP_ACP in WinCOutput::Write and Debug::DebugFunction. |
|
4285 |
|
4286 Version 1.02.187 |
|
4287 ================ |
|
4288 (Made by Alastair, 9.6.99) |
|
4289 |
|
4290 |
|
4291 1) Jason |
|
4292 1) Added sleep and wakeup code for MISA |
|
4293 2) Enabled LCD and Keyboard for Brutus wakeup. |
|
4294 3) Added MCP controller accessor functions for MISA |
|
4295 4) Modified power model to share MCP clock |
|
4296 5) Added definitions for the Brutus UCB1200 codec chip. |
|
4297 6) Added touch screen controller for Brutus, including touch to wakeup. |
|
4298 7) Fixed Brutus keyboard controller to not enable interrupt edges that it |
|
4299 does not use. |
|
4300 8) Added the missing function TSa1100::UartTxBusy() to MISA |
|
4301 \inc\v32s1100.h |
|
4302 \v32ucb12.h |
|
4303 \kaisa\ka_isa.cpp |
|
4304 \ka_ini.cpp |
|
4305 \ka_power.cpp |
|
4306 \ka_power.h |
|
4307 \kbisa\sa1100.inc |
|
4308 \sa1100.s |
|
4309 \visaba\vi_hw.cpp |
|
4310 \vi_keycn.cpp |
|
4311 \vi_xyin.cpp |
|
4312 |
|
4313 2) Morgan |
|
4314 1) Made Mmu::UnlockPageTables and Mmu::LockPageTables public so |
|
4315 code that calls Mmu::LogicalToPhysical() can unlock and |
|
4316 access the page tables. |
|
4317 \inc\m32hal.h |
|
4318 2) Unlocked the page tables in TDma::NextBlock() function |
|
4319 \kpepoc\kp_dma.cpp |
|
4320 |
|
4321 3) Petteri |
|
4322 1) Added Linda serial driver. |
|
4323 2) Added 230.4K speed to d32comm.h and modified old serial drivers |
|
4324 to dislike it. |
|
4325 \group\datxlb1.mmp |
|
4326 \inc\d32comm.h |
|
4327 \v32linda.h |
|
4328 \kamad\ka_linda.cpp |
|
4329 \varmca\va_com1.cpp |
|
4330 \va_com2.cpp |
|
4331 \varmcl\va_com1.cpp |
|
4332 \va_com2.cpp |
|
4333 \varmlb\va_com1.cpp |
|
4334 \varmp2\va_com1.cpp |
|
4335 \varmpb\va_com1.cpp |
|
4336 \varmpc\va_com1.cpp |
|
4337 \va_com2.cpp |
|
4338 \varmpd\va_com1.cpp |
|
4339 \va_com2.cpp |
|
4340 \vawdb1\va_com1.cpp |
|
4341 \va_com2.cpp |
|
4342 |
|
4343 4) Graham Asher (merged by Jonathan) |
|
4344 1) Implement standard Unicode collation and add new collation functions |
|
4345 to allow loose matching. |
|
4346 2) Fill up all the available TLanguage slots (00 to 99); codes added |
|
4347 include those requested for Roxette; this is a provisional solution |
|
4348 pending the introduction of a saner language and locale number API. |
|
4349 3) Fix problems in TLex16::Val(TRealX&,TChar) & |
|
4350 TLex16::Val(TReal64&,TChar) in Unicode-to-8-bit conversion (defect |
|
4351 EDN769607). |
|
4352 4) Obsolete functions yet to be removed: |
|
4353 TInt TDesC16::CompareC(const TDesC16& aDes,const TInt16* |
|
4354 aCollationRules) const; |
|
4355 TInt TDesC16::CompareC(const TDesC16& aDes,TUint32 |
|
4356 aDesiredCollationRulesId,TUint32& |
|
4357 aActualCollationRulesId) const; |
|
4358 static TInt Mem::CompareC(const TUint16* aLeft,TInt aLeftL,const |
|
4359 TUint16* aRight,TInt aRightL,const TInt16* |
|
4360 aCollationRules); |
|
4361 static TInt Mem::CompareC(const TUint16* aLeft,TInt aLeftL,const |
|
4362 TUint16* aRight,TInt aRightL,TUint32 |
|
4363 aDesiredCollationRulesId,TUint32& |
|
4364 aActualCollationRulesId); |
|
4365 static TInt Mem::CollationRuleSets(); |
|
4366 static TInt Mem::CollationRuleSetId(TInt aIndex); |
|
4367 static const TInt16* Mem::CollationRuleSetByIndex(TInt aIndex); |
|
4368 static const TInt16* Mem::CollationRuleSetById(TUint32 |
|
4369 aDesiredId,TUint32& |
|
4370 aActualId); |
|
4371 |
|
4372 5) Jonathan |
|
4373 1) Fixed "ambiguous overload for `bool ? TChar : char'" errors from new |
|
4374 gcc compiler. |
|
4375 umath\um_rtod.cpp |
|
4376 |
|
4377 6) Alastair |
|
4378 1) To build this release of e32tools you'll need the latest version - 108 |
|
4379 - of E32toolp. If you're going to use this release at all, you'll |
|
4380 need to be building your component with the latest version of |
|
4381 e32toolp, since import libraries are only released in the MARM release |
|
4382 and WINS debug directories and also because EDLL.O and EEXE.O won't |
|
4383 link properly with older versions of e32toolp. |
|
4384 2) Renamed MARM platform to MEIG and SARM platform to SEIG just as far as |
|
4385 E32 is concerned. Other components will still build for the MARM (and |
|
4386 SARM) platforms. This change means that rombuild obey files will need |
|
4387 to change to reflect the new location of e32 releasables in |
|
4388 \EPOC32\Release\Meig instead of \EPOC32\Release\Marm. |
|
4389 3) Changed zips of releasables put onto the network. There is now one zip |
|
4390 file for each platform. There is also a zip file for exported header |
|
4391 files. Hence, the contents of S:\e32\zip includes |
|
4392 export.<ver>, wins.<ver>, meig.<ver>, misa.<ver> ,mawd.<ver> winc.<ver>. |
|
4393 Each of the meig, misa and mawd zip files should contain everything |
|
4394 necessary for building components which depend on E32 for marm. |
|
4395 The files within these zip files now also have full pathnames so ensure |
|
4396 you unzip them into the root of your EPOC drive with any flags required |
|
4397 to recreate the directory structure. |
|
4398 4) Added new MAKMAKE keyword ASSPEXPORTS to various .MMP files so that |
|
4399 they search ASSP-specific deffile directories rather than CPU-specific |
|
4400 deffile directories by default. E.G. EKERN.DLL built for narrow MISA |
|
4401 REL will refer to \E32\BMISA\EKERN.DEF rather than |
|
4402 \E32\BMARM\EKERN.DEF. These .MMP files are for EKERN, EPBUS, VARMCL, |
|
4403 VARMLA, VARMLB, VARMP2, VARMPB, VARMPC, VARMPD, VAWDB1, VISABA, |
|
4404 VISACA, VROSR1, VCGAC1, VARMCA. This keyword means that the import |
|
4405 library for a project build for MEIG will go into |
|
4406 \EPOC32\Release\MEIG\<rel|urel>\ rather than |
|
4407 \EPOC32\Release\MARM\<rel|urel>\. |
|
4408 |
|
4409 Where .MMP files have links to the import libraries for these |
|
4410 components I have listed the libraries with new keyword ASSPLIBRARY |
|
4411 and taken them out of any existing LIBRARY statements. This ensures |
|
4412 that the generated- makefile will search in the correct place for the |
|
4413 import library. Any other components linking to these libraries will |
|
4414 have to do the same thing. |
|
4415 5) Kernel include headers are now exported to \EPOC32\Include\Kernel |
|
4416 rather than \EPOC32\Include, so if your component includes these |
|
4417 headers you'll need to add \EPOC32\Include\Kernel as a SYSTEMINCLUDE |
|
4418 file in your .MMP file. |
|
4419 6) Added new command, MNT CHECKREL, to check that all releasables are |
|
4420 present before doing an MNT PUTREL. |
|
4421 Before doing MNT CHECKREL or MNT PUTREL call BLDMAKE -v RELFILES to |
|
4422 create the lists of releasables. |
|
4423 7) Changed edll, exdll, eexe and kc_exe so that they all build as static |
|
4424 libraries rather than object files in accordance with ER5u makmake |
|
4425 changes. |
|
4426 8) Changed second uids in device driver .MMP files to zero so that makmake |
|
4427 will apply the correct ones automatically. |
|
4428 9) Changed .MMP files to take advantage of changes in makmake .MMP |
|
4429 #defines. |
|
4430 10) Replaced all B[plat].PRJ files for use with BLDMAKE with BLD.INF in |
|
4431 accordance with latest BLDMAKE changes. |
|
4432 11) Moved ETIMR and T_DEVC to project E32TEST. |
|
4433 12) Removed all E*.REL files from GROUP directory and changed MNT.BAT so |
|
4434 that MNT PUTREL looks for .REL files generated by BLDMAKE instead. |
|
4435 Updated BLD.INF accordingly. |
|
4436 13) Changed #defines in the following files now that __MEIG__ is being used |
|
4437 to mean __MARM__ and __MARM__ is being used to mean ARM CPU: |
|
4438 INC\U32STD.H, INC\M32STD.H, PSRC\PS_PCCD.CPP, |
|
4439 KCARM\KC_INT.CPP, DPEPOC\D_MEDINT.CPP, DPEPOC\D_MEDCRR.CPP, |
|
4440 DPEPOC\D_MEDCRM.CPP, DPEPOC\D_MEDATA.CPP. |
|
4441 14) Removed EVALID.PL and EVALID.BAT from GROUP dir now that this version |
|
4442 of EVALID is being released as part of E32TOOLP. |
|
4443 15) Created directory \E32\BMEIG. Moved .DEF files for the following |
|
4444 projects from \E32\BMARM\ to \E32\BMEIG: |
|
4445 EKERN, EPBUS, VARMCL, VARMP2, VARMPB, VARMPC, VARMPD. |
|
4446 16) Removed unnessary __XCON__ #defines and swapped them with __WINC__ |
|
4447 instead where necessary. |
|
4448 17) Removed XWSRV.MMP, XPBUS.MMP, XCONS.MMP, EXYIN.MMP and EKEYB.MMP - they |
|
4449 were no longer required now that libraries can be built separately. |
|
4450 Note that this means the import libraries must be built before building |
|
4451 the other releasables because of the mutual imports between some E32 |
|
4452 Dlls. |
|
4453 18) Changed variant .MMP files to link to the respective variant versions |
|
4454 of exyin.lib and ekeyb.lib now that exyin.lib and ekeyb.lib are no |
|
4455 longer built as import libraries. |
|
4456 19) Removed WINS #defines from around the dummy export for the text window |
|
4457 server so that it has a dummy export for other builds. Frozen the dummy |
|
4458 export in \E32\BMARM\EWSRV.DEF. |
|
4459 20) Removed export command from MNT.BAT and EXPORT.PL from group directory |
|
4460 now that and equivalent command is provided by BLDMAKE. |
|
4461 20) CONSWINS.DEF, CONSMARM.DEF and CONSMISA.DEF are now exported to |
|
4462 directory \EPOC32\Release\<Platform>\ rather than \EPOC32\Include. |
|
4463 21) Changed #defines in K32ADDR.H, U32STD.H, V32COG.H in accordance with |
|
4464 makmake #define changes for __SROS__ and __SCGA__. |
|
4465 22) Adjusted BLD.INF so that kernel headers are exported to |
|
4466 \EPOC32\Include\Kernel\ rather than \EPOC32\Include. This means that |
|
4467 any projects requiring the kernel headers will have to have |
|
4468 \EPOC32\Include\Kernel added to the list of SYSTEMINCLUDE paths within |
|
4469 their .MMP files. |
|
4470 23) Removed all .DEF files from the B<plat> directories which are now |
|
4471 referenced in the BMARM directory. Renamed BSROS BMROS and removed |
|
4472 BSARM and BSCGA. |
|
4473 24) Added extra commands to MNT.BAT to copy edll.o and eexe.o from the MEIG |
|
4474 release directories to the MARM ones pro tem, and to zip them up for |
|
4475 MEIG, MAWD and MISA. |
|
4476 25) Changed rom.oby files in KBARM and KBSARM directories to incorporate |
|
4477 changes resulting from the new way E32 is built. A few changes in |
|
4478 other rom.oby files may also be required. |
|
4479 26) Excluded Graham Asher's change to UMATH\UM_DTOR.CPP since they won't |
|
4480 build in narrow variants. |
|
4481 27) Fixed up MEIG EKERN.DEF following Pete's DMedia changes. |
|
4482 28) Changed P::Print so that in release builds it uses Win32's |
|
4483 OutputDebugString() rather than putting up a message box. This has |
|
4484 always been the behaviour in debug builds. As a result of this change, |
|
4485 test output will no longer appear in an annoying sequence of message |
|
4486 boxes. |
|
4487 |
|
4488 7) Pete |
|
4489 1) Modification to DMediaDriver class so a media driver |
|
4490 can be configured to allow read/write/format requests simultaneously |
|
4491 with each other. By default, a driver only allows one |
|
4492 request to be outstanding at any time but by setting the |
|
4493 DMediaDriver member iFlags to KMediaDrvMultipleReqs, |
|
4494 a read/write and format command may each be outstanding at a given |
|
4495 time. |
|
4496 \ksrc\ks_locd.cpp |
|
4497 \inc\k32std.h |
|
4498 \inc\k32std.inl |
|
4499 |
|
4500 Version 1.02.186 |
|
4501 ================ |
|
4502 (Made by Malcolm, 21st May 1999) |
|
4503 |
|
4504 Petteri |
|
4505 1) Added a new variant (Varmca) for the Rev.A of the new Cirrus |
|
4506 Logic 711X evaluation board. This port is not complete: digitiser |
|
4507 driver, most of ADC code, second serial port and some other |
|
4508 small things are missing. Also, the board is still evolving. |
|
4509 |
|
4510 New files added: |
|
4511 Varmca\Va_c6700.cpp Group\Cakdca.mmp |
|
4512 Varmca\Va_com1.cpp Group\Cakyca.mmp |
|
4513 Varmca\Va_com2.cpp Group\Caxyca.mmp |
|
4514 Varmca\Va_hw.cpp Group\Dasnca.mmp |
|
4515 Varmca\Va_kdata.cpp Group\Datxca1.mmp |
|
4516 Varmca\Va_keyb.cpp Group\Datxca2.mmp |
|
4517 Varmca\Va_pbus.cpp Group\Varmca.mmp |
|
4518 Varmca\Va_sdrv.cpp Inc\V32armca.h |
|
4519 Varmca\Va_spi.cpp |
|
4520 Varmca\Va_xyin.cpp |
|
4521 Varmca\Va_std.h |
|
4522 |
|
4523 Old files modified: |
|
4524 Group\Bmarm.prj |
|
4525 Group\Emarm.rel |
|
4526 Kbarm\E32var.iby |
|
4527 Kbarm\Rom.oby |
|
4528 Kbarm\Setvars.cmd |
|
4529 ( and also: |
|
4530 Kamad\Ka_linda.cpp |
|
4531 Inc\V32linda.h ) |
|
4532 |
|
4533 Jason |
|
4534 1) MISA Idle code fix. |
|
4535 \kaisa\ka_utl.cpp |
|
4536 \kcarm\kc_int.cpp |
|
4537 \kbisa\sa1100.s |
|
4538 |
|
4539 Jonathan |
|
4540 1) Added Protea, Cassius and inc{c|k} files to distrib.txt files |
|
4541 bmarm\distrib.txt |
|
4542 bmisa\distrib.txt |
|
4543 inc\distrib.txt |
|
4544 group\distrib.txt |
|
4545 |
|
4546 Version 1.02.185 |
|
4547 ================ |
|
4548 (Made by Malcolm, 14th May 1999) |
|
4549 |
|
4550 Malcolm et al. |
|
4551 1) Prepared E32 for automatic building and testing. Each kbXXX |
|
4552 directory should now have the following files: |
|
4553 |
|
4554 rom.cmd that takes an .oby file as the first parameter (and |
|
4555 then the standard build/variant as before). |
|
4556 test.oby that builds a rom with all the test code for that |
|
4557 platform. Test.oby should also include batch files called |
|
4558 z:\test\e32auto.bat, z:\test\f32auto.bat and |
|
4559 z:\test\allauto.bat that run respectively the e32, f32 and all |
|
4560 tests for this platform. For now, these are taken from |
|
4561 \e32test\group./ |
|
4562 bld.cmd that creates udeb and urel roms, given that all of |
|
4563 e32, f32 and the test suites have been built. Typically this |
|
4564 makes the bootstrap code then calls rom.cmd. |
|
4565 |
|
4566 This change has been implemented for misa, marm, mcga & sros. |
|
4567 |
|
4568 |
|
4569 Alastair |
|
4570 1) Changed RDebug::Print for WINS/WINC so that output is appended to file |
|
4571 EPOCWIND.OUT in the PC's temporary directory, as well as being sent |
|
4572 where it is currently. In UNICODE builds, the output is converted to |
|
4573 UTF-8 before being appended to the file. |
|
4574 2) Changed WINC Console output under UNICODE builds so that it can be |
|
4575 redirected to a file. The output is converted to UTF-8 before being |
|
4576 sent to the console. |
|
4577 |
|
4578 Simon |
|
4579 1) Merged in Cogent |
|
4580 \kacga\* |
|
4581 \bmcga\* |
|
4582 \vcgac1\* |
|
4583 \wsrc\wd_vgacga.cpp |
|
4584 \wsrc\wd_vtcgakb.cpp |
|
4585 |
|
4586 2) Modified coproc related bits for ARM4 on Cogent |
|
4587 \kcarm\kc_sched |
|
4588 \kcarm\kc_mmu |
|
4589 |
|
4590 Petteri |
|
4591 1) Minor Linda screen and keyboard related changes. |
|
4592 \kamad\ka_ini.cpp |
|
4593 \kamad\ka_linda.cpp |
|
4594 \inc\v32linda.h |
|
4595 \varmlb\va_hw.cpp |
|
4596 \varmlb\va_keyb.cpp |
|
4597 \wsrc\wd_mad.cpp |
|
4598 |
|
4599 |
|
4600 Malcolm |
|
4601 1) Changes to mnt.bat. Directories are now enummerated in |
|
4602 dir.prj rather than being hard-coded into mnt.bat all over the |
|
4603 place. Two perl helper scripts have been created to interface |
|
4604 to PVCS. |
|
4605 \group\mnt.bat |
|
4606 \group\dopvcs.pl |
|
4607 \group\lock.pl |
|
4608 \group\dir.prj |
|
4609 |
|
4610 |
|
4611 Petteri |
|
4612 1) Minor changes in order to tidy up DisplayOn() |
|
4613 \kamad\ka_ini.cpp |
|
4614 \inc\v32linda.h |
|
4615 \varmlb\va_hw.cpp |
|
4616 \wsrc\wd_mad.cpp |
|
4617 |
|
4618 |
|
4619 Petteri |
|
4620 1) Speed improvements to Linda screen driver. |
|
4621 \wsrc\wd_mad.cpp |
|
4622 |
|
4623 2) Modified keyboard related files so that Linda keyboard |
|
4624 driver works properly. |
|
4625 \varmlb\va_keyb.cpp |
|
4626 \varmlb\va_kdata.cpp |
|
4627 \group\cakylb.mmp |
|
4628 |
|
4629 |
|
4630 Malcolm |
|
4631 1) Upgraded the MNT DISTRIB command to cope with per-file |
|
4632 inclusion/exclusion. Now uses perl to parse distrib.txt |
|
4633 files. These files have changed in format. The format is |
|
4634 now lines of the format: |
|
4635 <filename> <licensee> |
|
4636 If the filename is Default, then all the files in this |
|
4637 directory will be included. If the licensee text contains |
|
4638 "Epoc" then this is part of the generic release. |
|
4639 To always exclude a file I suggest using a licensee of "Never". |
|
4640 Comments can be started with the # character and last to the |
|
4641 end of the line. \inc\distrib.txt and \group\distrib.txt files |
|
4642 are good examples. |
|
4643 The distrib.txt files themselves are never included. |
|
4644 At the moment, this script requires pkzip version 2.5, called |
|
4645 pkzip25 to be in the path. This is due to limitations with |
|
4646 the previous versions of pkzip. |
|
4647 \group\distrib.pl |
|
4648 \group\mnt.bat |
|
4649 \*\distrib.txt |
|
4650 |
|
4651 2) Fixed single process scheduler bug |
|
4652 \kcarm\kc_sched.cpp |
|
4653 |
|
4654 3) Merged in Simon's automatic test changes. |
|
4655 \usrc\us_test.cpp |
|
4656 \inc\e32test.h |
|
4657 |
|
4658 4) Added export.pl that will export E32 headers appropriately. |
|
4659 \group\export.pl |
|
4660 |
|
4661 |
|
4662 Petteri |
|
4663 1) Added text screen driver for Linda |
|
4664 \wsrc\wd_mad.cpp |
|
4665 \group\edisp.mmp |
|
4666 |
|
4667 |
|
4668 Malcolm |
|
4669 1) Removed all the li.prj files & moved the distribution comments |
|
4670 to distrib.txt files. Updated mnt.bat to deal with this. |
|
4671 \group\mnt.bat |
|
4672 *\li.prj |
|
4673 *\distrib.txt |
|
4674 |
|
4675 2) Boilerplated Roxette sources |
|
4676 \vrosr1\* |
|
4677 \karos\* |
|
4678 \kbros\* |
|
4679 |
|
4680 |
|
4681 Malcolm |
|
4682 1) Major reorganisation of the E32 tree. Tags: Pre-ER5u-Reorg is |
|
4683 before this, Post-ER5u-Reorg is after it. |
|
4684 |
|
4685 What was upmarm and upmx86 has had the common parts extracted |
|
4686 into upepoc and the architecture dependant bits moved to |
|
4687 ucmarm and ucmx86 respectively. |
|
4688 \upmarm\* |
|
4689 \upmx86\* |
|
4690 \ucmarm\* |
|
4691 \ucmx86\* |
|
4692 \upepoc\* |
|
4693 group\ekern.mmp |
|
4694 group\eexe.mmp |
|
4695 group\xcons.mmp |
|
4696 |
|
4697 2) Ucdt has been moved over to Usrc |
|
4698 \ucdt\* |
|
4699 \usrc\* |
|
4700 group\euser.mmp |
|
4701 |
|
4702 3) Roxette (SROS) has been merged in |
|
4703 \karos\* |
|
4704 \kbros\* |
|
4705 \vrosr1\* |
|
4706 \bsros\* |
|
4707 group\ekern.mmp |
|
4708 group\bsros.prj |
|
4709 group\esros.rel |
|
4710 group\euser.mmp |
|
4711 group\ekern.mmp |
|
4712 group\edisp.mmp |
|
4713 group\eexe.mmp |
|
4714 group\ekdata.mmp |
|
4715 group\inck.rel |
|
4716 group\vrosr1.mmp |
|
4717 wsrc\wd_rose* |
|
4718 |
|
4719 4) Removed EPBUS reference in epbus |
|
4720 group\epbus.mmp |
|
4721 |
|
4722 5) Added support for screen dimension keys (flip keys) |
|
4723 inc\e32keys.h |
|
4724 inc\e32panic.h |
|
4725 usrc\us_evnt.cpp |
|
4726 |
|
4727 6) Changes to timers to disambiguate periodic and locked timers for the |
|
4728 lower layers by encoding a value in the repeat field |
|
4729 ksrc\ks_tim.cpp |
|
4730 inc\k32std.h |
|
4731 |
|
4732 7) New function UserSvr::RomHeaderAddress(), replacing the use of |
|
4733 KRomLinAddr constant. This is so the F32 is single-process agnostic. |
|
4734 All address constants have been moved to k32addr.h |
|
4735 inc\k32addr.h |
|
4736 kpepoc\kp_ini.cpp |
|
4737 inc\u32std.h |
|
4738 inc\e32rom.h |
|
4739 inc\e32svr.h |
|
4740 inc\m32hal.h |
|
4741 |
|
4742 |
|
4743 Jason |
|
4744 1) Added debug monitor for MISA |
|
4745 \KAISA\KA_MON.CPP |
|
4746 \INC\M32STD.H |
|
4747 \GROUP\EKERN.MMP |
|
4748 |
|
4749 Morgan |
|
4750 1) Upgraded Dma abstraction to cope with transfers across page boundaries |
|
4751 \INC\M32STD.H |
|
4752 \KAMAD\KA_DMA.CPP |
|
4753 \KPEPOC\KP_DMA.CPP |
|
4754 2) Fixed function prototype for DPowerHandler::SetRequirement(TUint &aState) |
|
4755 \inc\k32power.h |
|
4756 \ksrc\ks_power.cpp |
|
4757 \b*\ekern*.def |
|
4758 3) Implemented Hal::ModifyLedMask() |
|
4759 \kpehal\kph_inf.cpp |
|
4760 4) Fixed key translator to use User::LowerCase instead of User::Fold |
|
4761 for EMatchKeyCaseInsens |
|
4762 \wsrc\ky_tran.cpp |
|
4763 5) Merged in changes for MMAD |
|
4764 \inc\u32std.h |
|
4765 \inc\v32linda.h |
|
4766 \kbmad\* |
|
4767 \kamad\* |
|
4768 \varmlb\* |
|
4769 6) Corrected remote serial screen cursor positioning |
|
4770 \wsrc\wd_vt100.cpp |
|
4771 7) Fixed mismatched #defines of |
|
4772 __CPU_SPLIT_TLBS and __CPU_SPLIT_TLB |
|
4773 __CPU_CACHE_CONFIGURABLE and __CPU_CACHE_SELECTABLE |
|
4774 \kcarm\kc_mmu.cpp |
|
4775 8) Removed NotBuffered attribute from the read-only EKernelCode and |
|
4776 EUserCode chunks |
|
4777 \kcarm\kc_mmu.cpp |
|
4778 9) Added Platform dependent constants for page table attributes |
|
4779 \kcarm\kc_mmu.cpp |
|
4780 10) Integrated the debug monitor into MMAD |
|
4781 \kamad\ka_mon.cpp |
|
4782 \inc\m32std.h |
|
4783 11) Uncommented the two lines of code that flush the D-Cache on |
|
4784 split cache processors |
|
4785 \kcarm\kc_sched.cpp |
|
4786 \kcarm\kc_mmu.cpp |
|
4787 12) More bug fixes for MMAD |
|
4788 \kamad\ka_linda.cpp |
|
4789 13) Implemented Rom groping in the bootstrap |
|
4790 |
|
4791 |
|
4792 Jonathan |
|
4793 1) Fixed fix for EDN430762 in 170; trap handler was not being correctly |
|
4794 zeroed. |
|
4795 kpwins\kp_utl.cpp |
|
4796 2) Reinstated unused functions SetLine and GetLine cos they're pure |
|
4797 virtual in the base class and so need to exist. |
|
4798 wsrc\wd_wins.cpp |
|
4799 3) Made RTest::Getch() pause for input even in non-manual mode. |
|
4800 usrc\us_test.cpp |
|
4801 |
|
4802 Version 1.02.181 |
|
4803 ================ |
|
4804 (Made by Pete, 5th May 1999) |
|
4805 |
|
4806 1) Pete |
|
4807 1) Added the (exported) function:- |
|
4808 TBusLocalDrive::Format(TInt aPos,TInt aLength) |
|
4809 so that it is possible to format just a part of a |
|
4810 drive. |
|
4811 2) Changed the local drive allocation for Brutus/WINS as follows:- |
|
4812 |
|
4813 Local-Drive-Num Assignment |
|
4814 (Let-EPOC/WINS) |
|
4815 0 (C:/Y:) EFixedMedia0 (Internal Ram) |
|
4816 1 (D:/X:) ERemovableMedia0 (1st partition on PC Card Socket0) |
|
4817 2 (E:) ERemovableMedia1 (1st partition on PC Card Socket1) |
|
4818 3 (F:) ERemovableMedia0 (2nd partition on PC Card Socket0) |
|
4819 4 (G:) ERemovableMedia1 (2nd partition on PC Card Socket1) |
|
4820 5 (H:) ERemovableMedia0 (3rd partition on PC Card Socket0) |
|
4821 6 (I:) ERemovableMedia1 (3rd partition on PC Card Socket1) |
|
4822 7 (J:) Not used |
|
4823 8 (K:/W:) EFixedMedia1 (Flash File System) |
|
4824 |
|
4825 3) Backed out the change made in V180 to TTrapK::Trap() in kpwins\kp_utl.cpp as |
|
4826 this is suspected to be causing problems in WINS Unicode builds. |
|
4827 4) Fixed a problem with the function ImpHal::Idle() on ISA builds |
|
4828 (KAISA\KA_UTL.CPP). |
|
4829 5) Fixed a problem with EPBUS.DLL which resulted in an exception |
|
4830 if an attempt was made to open a media driver for a peripheral |
|
4831 bus device (ie derived from DPBusMediaDriver) on an |
|
4832 internal drive. This typically only causes a problem on machines |
|
4833 which have a local drive designated as an internal drive in addition |
|
4834 to the standard Internal Ram drive (ie EFixedMedia1). This isn't a |
|
4835 problem on Snowdrop/Protea. There generally isn't a problem on the |
|
4836 internal Ram drive (ie EFixedMedia0) since the IRAM media driver |
|
4837 (MEDINT.PDD) opens successfully on this device before any drivers for |
|
4838 removable devices. (It would have caused a problem if ATA media driver was |
|
4839 loaded before the IRAM media driver). |
|
4840 6) Modified E32VAR.IBY and ROM.OBY in \KBISA to allow ISA UNICODE rom's |
|
4841 to be built successfully. |
|
4842 7) Added a LFFS media driver (MEDLFS.PDD) to the WINS and Brutus platforms. |
|
4843 The WINS version emulates a media device by performing reads/writes to the |
|
4844 file <temp>LFSLDRV.BIN (e.g. C:\TEMP\LFSLDRV.BIN). The Brutus version uses |
|
4845 2Mb of flash in Static Memory bank 1 and thus requires a pair of 1M x 16 flash |
|
4846 chips to be fitted to this bank. These devices aren't fitted on a standard Brutus |
|
4847 rack as shiped from Intel. The Brutus media driver is a read-only implementation |
|
4848 in this release. |
|
4849 |
|
4850 Version 1.02.180 |
|
4851 ================ |
|
4852 (Made by Pete, 29th April 1999) |
|
4853 |
|
4854 This is an ER5U release |
|
4855 |
|
4856 1) Jonathan |
|
4857 1) Fixed EDN430762 (E32TEST T_REG.EXE fails in WINS REL). |
|
4858 TTrapK::Trap() in kpwins\kp_utl.cpp mixed assembler and C++ and was |
|
4859 being broken by MSVC5's aggressive optimisations when built for |
|
4860 WINS/WINC REL/UREL. The fixed code is still vulnerable to compiler |
|
4861 changes because it still contains one C++ statement and could |
|
4862 therefore be confused by the compiler setting up a stack frame or |
|
4863 trashing the cx register. |
|
4864 TTrap::Trap() in upwins\up_trp.cpp and upmx86\up_trp.cpp would contain |
|
4865 the same problem but we can't build the user library under MSVC5 with |
|
4866 optimisations enabled for other reasons so the problem does not |
|
4867 appear. |
|
4868 |
|
4869 2) Pete |
|
4870 1) Modifications to Brutus variant (VISABA) to fix a problem with the PC Card |
|
4871 interface CD signals on GPIO7 (socket1) and GPIO4 (socket0). These were being |
|
4872 reconfigured to their alternate function (upper port of LCD interface) within |
|
4873 the function Variant::DisplayOn(). |
|
4874 2) Change to the way the ISA PC Card Controller handles a media change interrupt so |
|
4875 that it now queues a 20ms millisecond callback to handle switch debounce rather |
|
4876 than doing this directly from the interrupt service routine. |
|
4877 3) In the ISA PC Card Controller abstraction, removed some redundant functions calls |
|
4878 called during media change and socket interrupt handling. These functions had been |
|
4879 carried over from the MARM platform. |
|
4880 4) Disabled idle mode for now in the ISA platform (ImpHal::Idle()). There appears to be a |
|
4881 problem with PC Card IREQ interrupts (implemnted using GPIO edge triggered interrupt) |
|
4882 bringing the machine out of idle such that the machine eventually hangs. |
|
4883 5) Implemented a new Pc Card Controller to Variant interface for ISA platforms (TPcCardControllerIsaInterface |
|
4884 in V32PCCDI.H). This includes the following new functions:- |
|
4885 - const TDesC8& SocketIntSource(TSocket aSocket,TPccdEvent anEvent); |
|
4886 - void InitSocketInt(TSocket aSocket,TPccdEvent anEvent); |
|
4887 - void ClearSocketInt(TSocket aSocket,TPccdEvent anEvent); |
|
4888 This is allows the socket interrupt implementation on ISA platforms to performed |
|
4889 at the variant layer |
|
4890 |
|
4891 3) Alex |
|
4892 1) Modifications to ISA bootstrap (which is really tailored for the reference Brutus |
|
4893 platform) to support running code from RAM rather than FLASH. This means that images larger |
|
4894 than 4Mb (the previous limit on this platform due to the size of the flash bank) can be |
|
4895 handled. Use with E32UTILS REPROB V027. |
|
4896 |
|
4897 4) Pete |
|
4898 (inc\E32SVR.H) |
|
4899 Modification to TLocalDriveCapsV2 to add the data member |
|
4900 iEraseBlockSize. This is to support an F32 Flash File System. |
|
4901 |
|
4902 |
|
4903 Version 1.02.166 |
|
4904 ================ |
|
4905 (Made by Jonathan, 23rd February 1999) |
|
4906 |
|
4907 1) Jason |
|
4908 1) Implemented Millisecond timer for MISA. |
|
4909 2) Made the ATA Media driver as part of the ROM for MISA. |
|
4910 |
|
4911 2) Dennis |
|
4912 1) Replaced Snowdrop digitiser default calibration values with values |
|
4913 supplied by Amazon. |
|
4914 2) Modified Windermere LCD controller Timing2 register setting as |
|
4915 requested by Amazon. |
|
4916 3) Changed Snowdrop current consumption and battery threshold values |
|
4917 to those supplied by Amazon. |
|
4918 |
|
4919 3) Morgan |
|
4920 1) Replaced the code that stops the machine turning off if an absolute |
|
4921 timer is due soon. |
|
4922 |
|
4923 4) Jonathan & Co |
|
4924 1) Boilerplated source. |
|
4925 2) Removed historical epocfns.txt, sizes.txt, sizes.xls from .\group. |
|
4926 |
|
4927 5) Alastair |
|
4928 1) Replaced hard-coded R: with %s% in MNT.BAT. |
|
4929 2) Changed MNT PUTSRC to use T:\Tools\Zip.exe rather than |
|
4930 T:\Tools\PKZip.exe. |
|
4931 3) Changed MNT GETREL to get the WINC debugging releaseables for DEB and |
|
4932 UDEB builds. |
|
4933 4) Removed non-existent V32ARMS1.H, V32SASIC.H and duplicate listing of |
|
4934 K32POWER.H from \E32\INC\INCK.PRJ. |
|
4935 5) Removed non-existent D32FTIM.H, D32FTIM.INL and *.FRZ from |
|
4936 \E32\INC\INCC.PRJ. |
|
4937 6) Added CONSWINS.DEF, CONSMARM.DEF and CONSMISA.DEF to \E32\INC\INCK.PRJ. |
|
4938 7) Removed CAKDP2 Series5 keyboard variants from EMARM.REL. |
|
4939 8) Removed ELOCL variants from EMARM.REL, EWINS.REL and EWINC.REL. |
|
4940 9) Moved \E32\INC\INCC.PRJ to \E32\GROUP\INCC.REL and \E32\INC\INCK.PRJ to |
|
4941 \E32\GROUP\INCK.REL and changed MNT.BAT so that these .REL files are |
|
4942 treated in the same way as all the other .REL files. |
|
4943 10) Updated validation process to use William's new EVALID.BAT (added to |
|
4944 E32\Group pro tem.). |
|
4945 11) Removed empty file \E32\Inc\M32hal.inl. |
|
4946 |
|
4947 |
|
4948 Version 1.02.165 |
|
4949 ================ |
|
4950 (Made by Pete, 16th February 1999) |
|
4951 |
|
4952 1) Jason |
|
4953 1) Removed fixed Rom address from MMU initialisation bootstrap code. |
|
4954 |
|
4955 2) Morgan |
|
4956 1) Fix for defect EDN964446 to prevent WINS standby going re-entrant. |
|
4957 |
|
4958 3) Mark |
|
4959 1) Implemented PC card driver for MISA. |
|
4960 |
|
4961 4) Dennis |
|
4962 1) Applied Jason Robinson's patch for defect EDN061952 (cannot force a |
|
4963 cold reset by holding down both shift keys). |
|
4964 2) Fixed problem EDN106813 (snowdrop pathological failure mode). |
|
4965 |
|
4966 5) Pete |
|
4967 1) Added range checking to the Pc Card h/w chunk allocation functions |
|
4968 (derived versions of RPccdChunkBase::CreateL()) in MARM, MISA and MAWD |
|
4969 builds to prevent this allocating memory chunks beyond the physical |
|
4970 region assigned to the Pc Card memory. |
|
4971 |
|
4972 |
|
4973 Version 1.02.164 |
|
4974 ================ |
|
4975 (Made by Jonathan, 10th February 1999) |
|
4976 |
|
4977 1) Jonathan |
|
4978 1) Disabled the crash debug monitor. |
|
4979 2) Fixed problem EDN941329 "RThread::GetRamSizes() Crashes the Kernel" by |
|
4980 making RThread::GetRamSizes() return 0 for the heap size in combined |
|
4981 stack+heap chunks. |
|
4982 3) Applied Dennis' fix for EDN157244 "Process creation can leak memory" |
|
4983 by promoting DPlatProcess::FirstThread() to DProcess::FirstThread() |
|
4984 and checking for case where OOM occurs after thread creation. |
|
4985 |
|
4986 2) Dennis |
|
4987 1) Fixed problem EDN256123 (adding a thread to a dead process crashes the |
|
4988 kernel). Create empty process handles array after deleting the |
|
4989 original one, and when creating a new thread check that the owning |
|
4990 process is not dead. |
|
4991 2) COM061952: Put in Jason Robinson's bootstrap fix for Windermere so |
|
4992 that cold resets (both shift keys down) should now work on Snowdrop. |
|
4993 |
|
4994 3) Morgan |
|
4995 1) User::LoadLogicalDevice and User::LoadPhysicalDevice now supply |
|
4996 match-Uid's KLogicalDeviceDriverUid and KPhysicalDeviceDriverUid on |
|
4997 their calls to RLoader::LoadLibrary |
|
4998 |
|
4999 4) Pete |
|
5000 1) Added the function TPBusCallBack::Clear() (exported from EPBUS.DLL) to |
|
5001 clear the source of a Peripheral Bus event (e.g. IREQ interrupt from |
|
5002 PC card). This is a 'generic' version of the temporary fix applied in |
|
5003 E32-162 for defect 'CF Card interrupts being missed on Snowdrop |
|
5004 machines'. Also, removed the functions |
|
5005 DPcCardController::EnableEvent() and DPcCardController::DisableEvent() |
|
5006 and replaced them with TPBusCallBack::Enable() and |
|
5007 TPBusCallBack::Disable() respectively. |
|
5008 2) Added the functions DPcCardController::PwrUpProfile() and |
|
5009 DPcCardController::SetPwrUpProfile() to read/modify the power up |
|
5010 profile of the PC Card Controller (ie time reset applied, pause after |
|
5011 card becomes ready, timeout period when waiting for card to become |
|
5012 ready). Removed the parameter 'aResetProfile' from |
|
5013 DPeriphBusController::PowerUpBus(), DPcCardController::PowerUpCard(), |
|
5014 and DPcCardController::RestoreCardPower() as this information is now |
|
5015 superfluous. |
|
5016 3) Increased synchronous busy timeout period on ARM ATA driver from 15mS |
|
5017 to 20mS to support large Lexar CF cards. |
|
5018 4) Enabled CF card rail (Vpc) monitoring in Snowdrop variant. Also |
|
5019 modified this so that checking is performed periodically as long as |
|
5020 the rail is on (in addition to once when first turned). |
|
5021 5) Change to ARM ATA driver so it checks for 'card not busy' if it times |
|
5022 out on a command. If the card isn't busy then it processes this as if |
|
5023 it had received a normal card interrupt. |
|
5024 |
|
5025 |
|
5026 Version 1.02.163 |
|
5027 ================ |
|
5028 (Made by Pete, 3rd February 1999) |
|
5029 |
|
5030 1) Morgan |
|
5031 1) Fixed a problem that was causing Dll entrypoints to be called |
|
5032 with EDllProcessAttach twice. |
|
5033 |
|
5034 2) Jason |
|
5035 1) Restored the RAM drive to MISA. |
|
5036 |
|
5037 3) Dennis |
|
5038 1) Fixed problem EDN591058 (remote thread write to end of chunk can |
|
5039 fail). Use sizeof(TDes8) instead of sizeof(TBuf8<1>)-1 for checking |
|
5040 to avoid alignment problems. |
|
5041 2) Fixed problem EDN468376 (RHeap::Compress can leave heap |
|
5042 corrupted). In the situations where a free cell header would have |
|
5043 been chopped in half, an extra page of RAM is now left allocated to |
|
5044 the heap. |
|
5045 3) Fixed problem EDN102617 (undefined instruction exception kills the |
|
5046 kernel). Modified undefined instruction handler to run Exc::Dispatch |
|
5047 in mode_und rather than mode_abt. |
|
5048 4) Modified super page signature so that it includes the E32 version |
|
5049 number. This means that when a machine is reprogrammed to a |
|
5050 different version of E32, a cold reset will be forced when the |
|
5051 machine is first booted even if the user attempts to do a warm |
|
5052 reset. |
|
5053 |
|
5054 4) Jonathan |
|
5055 1) Fixed problem EDN671244 (RDebug::ReadMemory can reset the machine) |
|
5056 by trapping calls from Debug::DebugFunction to Debug::ReadMemory and |
|
5057 Debug::WriteMemory. |
|
5058 2) Fixed problem EDN471656 (underlying cause of which was RAM disk |
|
5059 size not being a multiple of page size) by applying Andrew/Pete's |
|
5060 modified fix. |
|
5061 |
|
5062 5) Pete |
|
5063 1) Renamed current implementation of the class TLocalDrive as |
|
5064 TBusLocalDrive. Also, changed TBusLocalDrive::Caps() from the form:- |
|
5065 TInt Caps(TLocalDriveCaps &anInfo); |
|
5066 to |
|
5067 TInt Caps(TDes8& anInfo); |
|
5068 with the later taking a TLocalDriveCapsBuf. |
|
5069 Re-introduced a TLocalDrive class which is BC with the E32-114 |
|
5070 version. The TLocalDrive class will be maintained to support disk |
|
5071 utilities which need a level of direct disk access. However, |
|
5072 TLocalDrive functions: Enlarge(), ReduceSize() and Format() now |
|
5073 return KErrNotSupported. TBusLocalDrive is intended to be used only |
|
5074 by F32 and there is no BC commitment with this. (Fixes EDN545357). |
|
5075 2) Added EPBUS.MAP to MARM,MISA,MAWD release files. |
|
5076 3) Modification to prevent CF card from being powered down during a |
|
5077 write operation when the machine is turned off. This involves a |
|
5078 change to DPcCardController::PowerStandby() so that it waits a short |
|
5079 period for any critical operation to complete. If still critical |
|
5080 after that period then it goes ahead and powers down the sockets, |
|
5081 but generates an emergency reset event so that clients can attempt to |
|
5082 recover. (Fixes EDN201114). |
|
5083 4) Modification to IRAM media driver (EPOC Platform) so that when it is |
|
5084 first mounted, it takes its initial size directly from the super |
|
5085 page rather than the IRAM chunk size (which is in multiples of a |
|
5086 page size). |
|
5087 |
|
5088 |
|
5089 Version 1.02.162 |
|
5090 ================ |
|
5091 (Made by Morgan, 27th January 1999) |
|
5092 |
|
5093 1) Dennis |
|
5094 1) Fixed problem EDN153887 (using infra-red lowers RS232 RTS line) - |
|
5095 modified VAWDB1\VA_COM1.CPP to ensure that UART1 SIR enable bit is |
|
5096 always cleared. |
|
5097 2) Store garbage values in K::SvThread and K::SvProcess on completion of |
|
5098 a kernel server function to guard against inadvertent use of these in |
|
5099 executive calls or DFCs. |
|
5100 3) Fixed problem EDN741588. Modified S::ChunkCompressAll() in KS_CHK.CPP |
|
5101 so that it only attempts to compress the kernel heap if its critical |
|
5102 section is not blocked. |
|
5103 4) Added extra command 'R' to crash debugger to print the values of all |
|
5104 processor registers across all processor modes at the point where the |
|
5105 debugger was entered. |
|
5106 |
|
5107 2) Jason |
|
5108 1) Restored link to MISA Idle code with-in the bootstrap. |
|
5109 2) MISA DRAM initialisation made to match the documentation. |
|
5110 |
|
5111 3) Jonathan |
|
5112 1) Added missing "Distribution:" comments to PSRC\LI.PRJ and |
|
5113 KBAWD\LI.PRJ. Modified "mnt check" to check that all LI.PRJs contain |
|
5114 "Distribution:" comments. |
|
5115 2) Added new "mnt distrib" verb for zipping up a copy of E32 source for |
|
5116 distribution to a named licensee. This verb is intended to be used |
|
5117 on a clean freshly-got copy of the source. |
|
5118 "mnt distrib acme" will produce \E32-acme.zip for acme. |
|
5119 "mnt distrib generic" will produce an unencumbered \E32-generic.zip. |
|
5120 |
|
5121 4) Pete |
|
5122 1) Fixed EDN590829 (CF Card interrupts being missed on snowdrop |
|
5123 machines). Fixed by clearing the interrupt directly from the media |
|
5124 driver interrupt callback rather than relying on it to be cleared by |
|
5125 the PC Card controller before the callback. This affects CF cards |
|
5126 which 'claim' to support pulse mode interrupts but actually seem to |
|
5127 implement level mode interrupts. |
|
5128 |
|
5129 |
|
5130 Version 1.02.161 |
|
5131 ================ |
|
5132 (Made by MarkD, 19 January 1999) |
|
5133 |
|
5134 1) Dennis |
|
5135 1) New Snowdrop digitiser and SPI code from Mark Ball. |
|
5136 2) Battery low interrupt now disables UART and Codec interrupts on |
|
5137 EIGER to prevent watchdog death due to permanently asserted |
|
5138 interrupt from UART when power is removed abruptly. |
|
5139 3) Reinstated __COMMS_MACHINE_CODED__ in VA_COM1.CPP for P2 and PD |
|
5140 variants, after fixing problem caused by hard-coded vtable offset. |
|
5141 |
|
5142 2) Pete |
|
5143 1) Fixed two problems with the ATA command timeout |
|
5144 implementation on the ARM ATA driver. (The timeout catches |
|
5145 situations where a request is made on the card which ought to be |
|
5146 signalled by an interrupt from the card when complete, but where the |
|
5147 card fails to generate an interrupt):- |
|
5148 a) Changed to use a ticklink rather than a |
|
5149 TMilliSecondCallBack to implement the timeout. |
|
5150 b) Fixed a problem where the timeout could be requeued |
|
5151 before the previous timeout had completed. |
|
5152 2) Increased synchronous busy timeout period on ARM ATA driver from |
|
5153 8mS to 15mS to support KingMax CF cards. |
|
5154 3) Modification to function DMediaDriver::RequestSetup() |
|
5155 so it now returns KErrInUse if the data member iReqStat isn't NULL. |
|
5156 This prevents the possibility of more than one request at a time on a |
|
5157 single media driver. |
|
5158 4) Stopped releasing WINS .BMP files (ie killed SWINS.REL). |
|
5159 |
|
5160 3) Morgan |
|
5161 1) Turned off emulation of the WINS backlight |
|
5162 |
|
5163 |
|
5164 Version 1.02.160 |
|
5165 ================ |
|
5166 (Made by Jason, 12th January 1999) |
|
5167 |
|
5168 1) Mark |
|
5169 1) Fixed a problem with MISA such that the screen wasn't being turned |
|
5170 on. |
|
5171 |
|
5172 2) Dennis |
|
5173 1) Added kernel crash debugger to MARM and MAWD builds. When a kernel |
|
5174 fault occurs, the debugger will start instead of the machine just |
|
5175 restarting. The crash debugger is enabled by compiling with |
|
5176 __ENABLE_DEBUG_MONITOR__ defined in M32STD.H. |
|
5177 2) Got the C++ build going again. Compiling with |
|
5178 __MINIMUM_MACHINE_CODE__ defined in U32STD.H will result in a build |
|
5179 with all non-essential machine code removed. All tests pass on EIGER |
|
5180 in debug and release builds. |
|
5181 3) Assembler-coded most TWind functions (KE_WIND.CPP). |
|
5182 4) Made RPointerArray<T>::Count() and RPointerArray<T>::Find*() const. |
|
5183 5) Added check in svProcessTerminate in KS_SVR.CPP so that calling |
|
5184 RProcess().Terminate() does not crash the kernel. |
|
5185 |
|
5186 3) Jason |
|
5187 1 ) MISA five layer split done created \e32\kaisa\ removed \e32\keisa\. |
|
5188 |
|
5189 4) Morgan |
|
5190 1) Added Dll::FileName() which will return the drive, path, and filename |
|
5191 of the library it is called from. (Added UserSvr::DllFileName and |
|
5192 associated EXEC functions to support this). Dll's that exist on the |
|
5193 ROM drive and have not been RLibrary::Load()ed will return only the |
|
5194 drive, (ie. "Z:"). |
|
5195 2) Fixed bugs in LoadLogicalDevice and LoadPhysicalDevice that was causing |
|
5196 unbalanced calls to the entrypoint of drivers (with EProcessDetatch and |
|
5197 EThreadAttach). |
|
5198 3) Removed cleanup code from user side code RLoader::LoadLibrary. Cleanup |
|
5199 of half loaded dll's is now performed loader side as it should be. |
|
5200 4) Fixed a problem with switch-off-on-case-close. |
|
5201 5) S::LoadLibraryExact now creates a handle into the Loader thread rather |
|
5202 than into the loading client. DLibrary::LoadedL transfers handles and |
|
5203 created dependencies as required. See Note F32 126.2.2 |
|
5204 |
|
5205 |
|
5206 Version 1.02.159 |
|
5207 ================ |
|
5208 (Made by Pete, 21st December 1998) |
|
5209 |
|
5210 THIS RELEASE OF E32 REQUIRES F32 125 |
|
5211 |
|
5212 1) Jonathan |
|
5213 1) Added TLanguage enums { ELangTaiwanChinese, ELangHongKongChinese, |
|
5214 ELangPrcChinese, ELangJapanese, ELangThai }. |
|
5215 |
|
5216 2) Morgan |
|
5217 1) Removed old static power functions that are no longer used from |
|
5218 classes P, K, and ImpPsu. |
|
5219 2) Removed TKeyboard::SwitchOn() and TXYInput::SwitchOn(). And for those |
|
5220 variants that required it, upgraded the keyboards and digitisers to be |
|
5221 first class power handlers. |
|
5222 3) Changed KLogicalDeviceDriverUid for Unicode and Narrow builds because |
|
5223 the Ldd interface has changed. This change stops old device drivers |
|
5224 loading on the new kernel. |
|
5225 4) Uniquely identified each architecture of the kernel with a Uid. This |
|
5226 change stops libraries that link to the kernel from loading on the |
|
5227 wrong architecture. |
|
5228 |
|
5229 3) MarkD |
|
5230 1) Performed the PC Card reorganisation for MISA. |
|
5231 2) Fixed a problem in KEISA\KE_INI where the requested video chunk size wasn't |
|
5232 rounded to page size. |
|
5233 3) Added a serial driver for Brutus using serial ports 1 (VISABA\VI_COM1.CPP) |
|
5234 and 3 (VISABA\VI_COM2.CPP). |
|
5235 |
|
5236 4) Alastair |
|
5237 1) Fixed ER5 defect EDN381842 "WINS 'large' fascia problem under Win95/98". |
|
5238 If not running under Windows_NT SetupEmulatorPaths() function in upwins\up_path.cpp |
|
5239 takes account of the fact that Win32 GetModuleFileName() will report a full path |
|
5240 rather than a virtual path if the Emulator is running on a subst'ed drive from a |
|
5241 DOS prompt. |
|
5242 |
|
5243 5) Petteri |
|
5244 1) Changes to VARMCL variant to fully enable the PC Card Controller. All PC Card tests |
|
5245 now pass on this variant. |
|
5246 |
|
5247 6) Dennis |
|
5248 1) Merged in more Amazon changes to Windermere port. |
|
5249 2) Modified Plat::ScreenInfo for Windermere to return the address of the screen RAM |
|
5250 bitmap rather than the palette. |
|
5251 3) Fixed a bug in the text window server introduced in 158 which stops pointer drag |
|
5252 from working. |
|
5253 |
|
5254 7) Pete |
|
5255 1) Various changes to facilitates a better partitiioning of |
|
5256 functions between EKERN and EPBUS and to allow ROMS to be built without an EPBUS |
|
5257 component. Functions which previously called either TPBusCallBack or |
|
5258 Kern::PBusController() in the indepedant layer have now been moved to the Asic |
|
5259 layer:- |
|
5260 Modification of class DPrimaryMedia into an Indepedent layer class |
|
5261 DPrimaryMediaBase and a Asic layer class DPrimaryMedia. |
|
5262 Modification of class DMediaChangeNotifier into an Indepedent layer class |
|
5263 DMediaChangeNotifierBase and a Asic layer class DPrimaryMedia. |
|
5264 Functions K::PowerUpPeriphBus(), K::BusDevPowerStatus() are now platform |
|
5265 dependent (hence moved to class P). Also creation of the functions P::ForceMediaRemount(), |
|
5266 ImpHal::TotalSupportedBuses() and ImpHal::TotalSupportedDrives(). |
|
5267 |
|
5268 Version 1.02.158 |
|
5269 ================ |
|
5270 (Made by Pete, 7th December 1998) |
|
5271 |
|
5272 1) Morgan |
|
5273 1) Bug fix for MARM and MAWD Emergency power down. (Screen not powered up |
|
5274 after emergency power down). Effects KEAWD\KE_POWER.CPP and |
|
5275 KAEIG\KA_POWER.CPP |
|
5276 2) Pointer-switch-on now behaves as it did in E32(156). |
|
5277 3) Added MISA power model. |
|
5278 |
|
5279 2) Pete |
|
5280 1) Split out the PC Card Controller from the kernel into a new |
|
5281 component - EPBUS.DLL. The independant layer code, previously in \KSRC, |
|
5282 files KS_PCCD.CPP and KS_PSOCK.CPP has been moved into \PSRC. |
|
5283 The architecture layer code files have been renamed from K?_PCCD.CPP |
|
5284 to P?_PCCD.CPP (e.g. \KAEIG\KA_PCCD.CPP renamed PA_PCCD.CPP). |
|
5285 As far as the interface with the kernel is conserned, EPBUS.DLL |
|
5286 is now a 'generic' Peripheral Bus Controller rather than specifically a |
|
5287 PC Card Controller. Machines which have a MultiMedia card interface or |
|
5288 a USB interface rather than a PC Card interface will have a Peripheral |
|
5289 Bus Controller supplying services for these interfaces instead. This has |
|
5290 involved quite extensive modifications to the classes which previously |
|
5291 implemented the PC Card media change (DMediaChange) and supply voltage |
|
5292 (TPcCardVcc) since large parts of these implementations are common for |
|
5293 any Peripheral Bus Controller. |
|
5294 The classes associated with the 'generic' Peripheral Bus Controller |
|
5295 are defined in P32STD.H. Of these functions, the code for those asociated with |
|
5296 media change and supply voltage classes is in PS_PSU.CPP and the code for the |
|
5297 Controller interface itself is in PS_PBUS.CPP. The independant layer code for |
|
5298 the PC Card Controller implementation in now in PS_PCCD.CPP and PS_PSOCK.CPP |
|
5299 (defined in P32PCCD.H). |
|
5300 The variant layer code for the Peripheral Bus Controller is still supplied |
|
5301 by the variant DLL. However, the bulk of the PC Card Controller functions have |
|
5302 been removed from the main Custom class and moved to a TPcCardControllerInterface |
|
5303 class (defined in V32PCCD.H). The custom now has a single function:- |
|
5304 TAny* Custom::CreatePeriphBusControllerInterface() |
|
5305 which returns a pointer to this class. This will allow variant layer code for other |
|
5306 types of Peripheral Bus Controller to be supplied by the variant DLL without bloating |
|
5307 the basic Custom class with these functions. |
|
5308 Removed the majority of the exported functions of the class UserPcCardController |
|
5309 (all apart from PwrDown() and NotifyChange()) from EUSER.DLL. Also, constructors for the |
|
5310 classes TPccdChnk, TPccdConfigInfo, TPccdRegionInfo and TPccdType. The DEF file entries for |
|
5311 these functions have been replaced with NotSupported entries. |
|
5312 Similarly, fixed up the MARM/WINS EKERN DEF files to replace all the entries for |
|
5313 exported PC Card Controller functions with NotSupported entries. |
|
5314 [Note: No Pc Card reorganisation for MISA.] |
|
5315 2) The class TPccdCallback has become TPBusCallBack. A single callback can now be |
|
5316 registed for mutiple events, with the event now specified by a mask rather than an enum. |
|
5317 This has simplified the implemenation of the classes DPrimaryMedia and DMediaChangeNotifier. |
|
5318 3) Modified the variant function PcCardMemPhysicalAddress() to take an extra |
|
5319 parameter - 'TPccdMemType'. Prior to this, the variant just returned |
|
5320 the physical address per socket, with the kernel adding an offset |
|
5321 dependant on the memory type. Unfortunatley, the PS7111 has a |
|
5322 different PC Card memory offset scheme to that used in the PS7110. |
|
5323 Hence the need for it to be calculated in the variant (since 7111 and |
|
5324 7110 share the same kernel). |
|
5325 |
|
5326 |
|
5327 Version 1.02.157 |
|
5328 ================ |
|
5329 (Made by Dennis, 1st December 1998) |
|
5330 |
|
5331 NOTE: Must be used with F32 version. |
|
5332 No ISA or Windermere binaries. |
|
5333 Outstanding problem with machine-code serial PDDs (non-machine code |
|
5334 version has been released) and with Windermere power-off. |
|
5335 Bldmake-generated batch files are no longer released as source so |
|
5336 bldmake <all> must be run to create the batch files before any building |
|
5337 can be done. |
|
5338 |
|
5339 1) Morgan |
|
5340 1) Added uid-type-safety overloads to RLibrary::Load() and |
|
5341 RProcess::Create() to only load Dlls and Exes that match |
|
5342 the supplied Uids. |
|
5343 eg |
|
5344 lib.Load(_L("\\system\\plugins\\PLUGIN.DLL"); |
|
5345 should change to |
|
5346 lib.Load(_L("\\system\plugins\\PLUGIN.DLL"), |
|
5347 TUidType(KNullUid, KPluginUid, KNullUid); |
|
5348 where KPluginUid is either KPluginUid8 or KPluginUid16. |
|
5349 2) SARMBE-RIP |
|
5350 3) Added a new power management framework in INC\K32POWER.H. Here is a |
|
5351 quick overview: |
|
5352 A DPowerHandler performs power related functions previously resident |
|
5353 in DLogicalChannel, and also provides mechanisms for communicating |
|
5354 with the machine's power model. A DPowerModel, (DEigerPowerModel on |
|
5355 the Series5, DWinsPowerModel on WINS), logs all DPowerHandlers in |
|
5356 the system and their power requirements. The power model controls |
|
5357 power up and power down behaviour of all shared power units. This |
|
5358 allows it to dictate the machine's power management policy. (See |
|
5359 document POWER001 in the Base database for more grusome details). |
|
5360 These changes break binary compatability for DLogicalChannels, and |
|
5361 existing device drivers that require power management. |
|
5362 |
|
5363 * Here is some guidance on how to update existing |
|
5364 DLogicalChannels to use E32(157): |
|
5365 // 1. given an old Ldd "Tomfoolery": |
|
5366 class DTomfooleryLdd : public DLogicalChannel |
|
5367 { |
|
5368 public: |
|
5369 ~DTomfooleryLdd(); |
|
5370 [...] |
|
5371 // override DLogicalChannel pure virtual functions |
|
5372 virtual void DoPowerUp(); |
|
5373 virtual void DPowerDown(); |
|
5374 virtual void DoEmergencyPowerDown(); |
|
5375 } |
|
5376 |
|
5377 // 2. modify the class declaration to insert a power handler |
|
5378 class DTomfooleryPowerHandler; |
|
5379 class DTomfooleryLdd : public DLogicalChannel |
|
5380 { |
|
5381 public: |
|
5382 ~DTomfooleryLdd(); |
|
5383 [...] |
|
5384 // these power functions no longer need to be virtual |
|
5385 // but you may wish to keep them virtual to maintain |
|
5386 // Ldd-Pdd compatability. |
|
5387 virtual void DoPowerUp(); |
|
5388 virtual void DoPowerDown(); |
|
5389 virtual void DoEmergencyPowerDown(); |
|
5390 public: |
|
5391 // add power handling to this channel |
|
5392 DTomfooleryPowerHandler *iPowerHandler; |
|
5393 } |
|
5394 |
|
5395 // 3. add a new power handler to the TOMFOOL.CPP file |
|
5396 class DTomfooleryPowerHandler : public DPowerHandler |
|
5397 { |
|
5398 public: |
|
5399 DTomfooleryPowerHandler(DTomfooleryLdd *aLdd) : iLdd(aLdd) {} |
|
5400 virtual TInt DoPowerOn() { return iLdd->DoPowerUp; } |
|
5401 virtual void DoPowerStandby() { iLdd->DoPowerDown(); } |
|
5402 virtual void DoPowerRestart() { iLdd->DoPowerDown(); } |
|
5403 virtual void DoPowerEmergencyStandby() { iLdd->DoEmergencyStandby(); } |
|
5404 public: |
|
5405 DTomfooleryLdd *aLdd; |
|
5406 } |
|
5407 |
|
5408 // 4. change DTomfooleryLdd::DoCreateL and destructor |
|
5409 void DTomfooleryLdd::DoCreateL(...) |
|
5410 { |
|
5411 [...] |
|
5412 iPowerHandler=new (ELeave) DTomfooleryPowerHandler(this); |
|
5413 // register the power handler so we get power events |
|
5414 User::LeaveIfError(Power::AddPowerHandler(iPowerHandler)); |
|
5415 [...] |
|
5416 // ask the PowerManager to power us up |
|
5417 iPowerHandler->PowerOn(); |
|
5418 } |
|
5419 DTomfooleryLdd::~DTomfooleryLdd() |
|
5420 { |
|
5421 [...] |
|
5422 // ask the PowerManager to power us down |
|
5423 iPowerHandler->PowerStandby(); |
|
5424 // remove the power handler from the system |
|
5425 Power::RemovePowerHandler(iPowerHandler); |
|
5426 delete iPowerHandler; |
|
5427 } |
|
5428 |
|
5429 // 5. Finally, redirect calls to DLogicalChannel::PowerGood() |
|
5430 // and SetPowerConsumption() through the new iPowerHandler and |
|
5431 // remove all references of RegisterEmergencyPowerDownHandlerL() |
|
5432 |
|
5433 It should also be noted that DLogicalChannel::PowerOn() and |
|
5434 DLogicalChannel::PowerDown() are no longer called called during |
|
5435 S::CreateLogicalChannel() and DLogicalChannel::Close(). |
|
5436 4) Moved WINS, MAWD and MARM over to the new power models. Changed |
|
5437 DPcCardCntrl, and DLddSound to use the new facilities. |
|
5438 Also Altered DComm, DChannelComm, and DEigerComm. |
|
5439 [Note: Models not added for MMAD, MISA.] |
|
5440 5) Removed duplicate implementations of P::PowerOff, P::PowerOn, |
|
5441 P::Standby(), and P::CheckSupplies in WINS. |
|
5442 |
|
5443 2) Jo |
|
5444 1) Fixed EPOC software problem SW1-266 "TLocale isn't updated in |
|
5445 WINC/WINS when the time zone is changed" |
|
5446 Added a line to KPWINS\KP_INI to update locale data on EStartupCold |
|
5447 when the time zone on the PC is changed. |
|
5448 |
|
5449 3) Jane |
|
5450 1) Split kearm directory into kcarm for cpu only code and kaeig for |
|
5451 asic code. |
|
5452 Made the kcarm code generic for any arm processor, so that all arm |
|
5453 based ports can eventually share it. |
|
5454 Added a set of __CPU_ #defines for "cpu properties" such as whether |
|
5455 cache is write-back or write-through, whether there is a write |
|
5456 buffer, and so forth. Used these to make the kcarm directory |
|
5457 generic. |
|
5458 These properties are set up in u32std.h from the build #define. |
|
5459 Moved the MAD port to the new scheme - it shares the kcarm directory |
|
5460 and has its own asic dependent directory, kamad. |
|
5461 The MARM and MAD ports have new .MMP files for ekern (ekernx), |
|
5462 ekdata (ekdatx) and ke_exe (kc_exe). |
|
5463 I am particularly pleased with the new TMadPanic - it made it all |
|
5464 worthwhile... |
|
5465 |
|
5466 4) Alastair |
|
5467 1) Changed PP::TheMachineName to "Epoc". Take note SDK people, this |
|
5468 means the default .INI file loaded from the emulator's data |
|
5469 directory will be EPOC.INI rather than SYSTEM.INI. I've also |
|
5470 removed the facility to specify the fascia bitmap within the |
|
5471 <machine>.ini file - instead the emulator will expect the fascia |
|
5472 bitmap to have the same base name as it's corresponding ini file - |
|
5473 so if the emulator is invoked with the -Mgeofox1 switch it will try |
|
5474 to load geofox1.bmp. By default the emulator will try to load |
|
5475 epoc.bmp. I've updated E32's SWINS release component accordingly. |
|
5476 2) Updated EKERN.MMP and EUSER.MMP to take advantage of MAKMAKE's new |
|
5477 FIRSTOBJECT keyword (E32TOOLP 097). Merged Jane's new EKERNX.MMP |
|
5478 into EKERN.MMP, and old KE_EXE.MMP into Jane's new KC_EXE.MMP |
|
5479 following these changes. |
|
5480 3) Exporting the following functions from ekern under WINS/WINC by |
|
5481 ordinal rather than name |
|
5482 EXPORTS E32KernelDispatchAddress @279 NONAME |
|
5483 EXPORTS _E32Initialise @280 NONAME |
|
5484 EXPORTS _E32DeInitialise @281 NONAME |
|
5485 EXPORTS _E32ExitProcess @282 NONAME |
|
5486 |
|
5487 Euser.dll has been changed to look up these functions by ordinal. |
|
5488 The latter 3 functions were previously only exported under WINC, and |
|
5489 do nothing and are not called under WINS. The hack in MAKMAKE to |
|
5490 handle the linking of these functions by ordinal has been removed |
|
5491 (E32TOOLP O97). |
|
5492 4) Removed Plat::EnterCS() and Plat::LeaveCS() from ESDRV.CPP and |
|
5493 ECDRV.CPP |
|
5494 - these fixes should no longer be required to avoid deadlock since a |
|
5495 generic fix has been applied to E32 version 155. |
|
5496 5) Added 2 new exports to EUSER.DLL in E32WINS.H |
|
5497 IMPORT_C void SetEmulatorColorDepth(TUint& aDepths); |
|
5498 IMPORT_C void EmulatorColorDepth(TUint& aDepths); |
|
5499 SetEmulatorColorDepth() is called by EKERN.DLL which will set colour |
|
5500 depths supported by the emulator according to the specification of |
|
5501 the ColorDepth keyword in the System.ini file. Syntax is |
|
5502 ColorDepth {Gray2} {Gray4} {Gray16} {Color16} {Color256} |
|
5503 {Color4K} {Color16M} |
|
5504 If the ColorDepth keyword is not specified supported colour depths |
|
5505 will default to Gray2,Gray4 and Gray16 for backward compatibility. |
|
5506 Users of EmulatorColorDepth() will need to pass a bitmap reference |
|
5507 to the function which will be set based on the following constants |
|
5508 defined in E32WINS.H |
|
5509 const TUint KEmulGray2= 0x00000001; |
|
5510 const TUint KEmulGray4= 0x00000002; |
|
5511 const TUint KEmulGray16= 0x00000004; |
|
5512 const TUint KEmulGray256= 0x00000008; |
|
5513 const TUint KEmulColor16= 0x00000010; |
|
5514 const TUint KEmulColor256= 0x00000020; |
|
5515 const TUint KEmulColor4K= 0x00000040; |
|
5516 const TUint KEmulColor64K= 0x00000080; |
|
5517 const TUint KEmulColor16M= 0x00000100; |
|
5518 6) Changed RThread::Panic() so that in WINS DEBUG builds it calls a new |
|
5519 function, ThreadPanicBreakpoint2, in upwins\up_debug.cpp, with |
|
5520 information about the thread being panicked and also the name of the |
|
5521 killing thread. This fixes Epoc S/W problem 356 "The __DEBUGGER |
|
5522 macro that catches panics should be un-commented out." To get the |
|
5523 Windows ID of the panicking thread in RThread::Panic() I changed the |
|
5524 code which keeps a list of Epoc threads in EUSER.DLL so that it |
|
5525 contains the Epoc thread ID as well as the Windows one and added a |
|
5526 function to upwins\up_thrd.cpp, TUint32 WinsEpocThreadWinID(TUint |
|
5527 aEpocID), which returns the Windows ID corresponding to the Epoc ID |
|
5528 passed in as a parameter. |
|
5529 7) Split header inc\e32wins.h into 2 headers, e32wins.h and u32wins.h. |
|
5530 U32wins.h contains euser functions that should not need to be used |
|
5531 by any component except E32. |
|
5532 8) Removed all the logical and physical device driver deffiles from |
|
5533 \E32\INC, since makmake always ensures the right function is |
|
5534 exported at ordinal one for LDD and PDD targettypes. |
|
5535 9) Changed the Emulator's path scheme. Now, if a directory called |
|
5536 'Data\' is found in the same directory as the executable which |
|
5537 started the Emulator, the Emulator's data directory will be |
|
5538 considered to be this directory and expected to contain .INI files |
|
5539 and any corresponding bitmaps. Also, directories 'C\' and 'Z\' in |
|
5540 the executable's directory will be mapped to the emulated C: and Z: |
|
5541 drives. If a 'Data\' directory is not found in the executable's |
|
5542 directory, the old scheme will be assumed where the Emulator's data |
|
5543 directory is '\Epoc32\Data\' and the emulated C: drive is mapped to |
|
5544 'Epoc32\WINS\C\'. |
|
5545 10) Fixed Epoc S/W problem 466 |
|
5546 "Plat: 46 fault when running EXEs from a different directory". |
|
5547 The emulator now looks in the directory containing the emulated Z |
|
5548 directory for filenames specified without a drive, rather than in |
|
5549 the directory containing the executable that started up the |
|
5550 emulator; so if Z is mapped to \Epoc32\Release\WINS\DEB\Z\, the |
|
5551 emulator will look in \Epoc32\Release\WINS\DEB\ for these files. |
|
5552 Note that mappings for emulated C and Z drives will be overwritten |
|
5553 if specified in the environment, but can safely be set in the |
|
5554 EPOC.INI file using the _EPOC_DRIVE_? keyword. Any attempted |
|
5555 mapping for the Z drive which does not specify a directory ending in |
|
5556 \Z or \Z\ will fail. |
|
5557 11) Removed references to all bldmake-generated batch files from LI.PRJ |
|
5558 files containing them, and updated MNT.BAT so that directories \BWINC, |
|
5559 \BVC4 and \BVC4WINC are not archived (they contain nothing but |
|
5560 bldmake-generated files anyway). This means that to build E32 from |
|
5561 source bldmake must always be called first to generate the batch files, |
|
5562 and ensures these batch files are more likely to be up-to-date. |
|
5563 |
|
5564 5) Jonathan |
|
5565 1) Retired KEARM directory following Jane's changes. The MAWD and MISA |
|
5566 builds depended on some files in KEARM, so these files were copied: |
|
5567 KEISA: ke_edbg.cpp, ke_edbg.h, ke_dma.cpp |
|
5568 KEAWD: ke_edbg.cpp, ke_edbg.h, ke_dma.cpp, |
|
5569 ke_exc.cpp, ke_thrd.cpp, |
|
5570 ke_exe.cpp, ke_kdata.cpp |
|
5571 2) Updated MNT.BAT to reflect all of the above directory changes. |
|
5572 3) Hacked a workaround to MSVC++ 5.0 (sp3) assembler bug, where MSVC |
|
5573 incorrectly fixes up conditional jumps when the destination is a C++ |
|
5574 function. Files affected: upwins\up_realx.cpp, upwins\up_i64.cpp. |
|
5575 |
|
5576 6) Dennis |
|
5577 1) Fixed bug in serial comms driver relating to zero-length reads. If |
|
5578 the receive buffer was empty when a zero-length read was requested, |
|
5579 the driver would enter an inconsistent state and the request would |
|
5580 not be completed unless a terminating character was specified. |
|
5581 |
|
5582 7) Pete |
|
5583 1) Added the class RBusDevCom which is intended as a replacement |
|
5584 for RDevCom (although the latter is still supported). This new class |
|
5585 allows the support of serial devices such as PC Card modems which |
|
5586 require the asynchronous power up of the card. The changes included |
|
5587 in E32-120 allowed these types of cards to be initially powered up |
|
5588 just before a channel was opened on the device. They didn't however |
|
5589 support the repowering of an open channel (which again needs to be |
|
5590 asynchronous) after the machine has been turned off. The RBusDevCom |
|
5591 now provides the means to support for this scenario. If a channel is |
|
5592 opened on a serial device which requires asynchronous powering then |
|
5593 all DoControl() and DoRequest() calls are preceded by a fast exec |
|
5594 call to check whether the device needs repowering. (Channels open on |
|
5595 standard serial devices don't suffer the penatly of this |
|
5596 exec. call). |
|
5597 Added the class RBusLogicalChannel (RBusDevCom is derived from |
|
5598 this class) which is intended as a replacement for RLogicalChannel - |
|
5599 to be used for devices which may need to be asynchronously powered |
|
5600 either before opening or while the channel is use. RLogicalChannel |
|
5601 would continue to be the choice for classes of devices which don't |
|
5602 require this behaviour. |
|
5603 Modifications to the TLocalDrive class. This now makes use of the |
|
5604 MBusDev class - created as part of the implementation of the |
|
5605 RBusLogicalChannel class. |
|
5606 Fixed a problem with the TLocalDrive class CheckMount() function |
|
5607 so that it can't lock the file system doing continuous re-mounts |
|
5608 when a CF card is inserted that never asserts its RDY signal. |
|
5609 2) Added a member 'iHiddenSectors' to TLocalDriveCaps |
|
5610 to report the number of sectors on a media device reserved before |
|
5611 the start of the first partition. |
|
5612 3) Added a new version of the |
|
5613 DPcCardCntrl::RegisterEvent() function taking an extra parameter |
|
5614 'TUint aFlag'. This allows the better support of PC cards which use |
|
5615 level mode interrupt requests rather than pulse mode. The flag is |
|
5616 set when level mode is required meaning the PC Card Controller can |
|
5617 avoid failing to clear the interrupt in the PC Card Controller |
|
5618 hardware. |
|
5619 4) Merged various changes to the MAWD architecture layer, the MAWD |
|
5620 B1 variant layer and the MARM P2 variant layer including a new SPI |
|
5621 implementation for MAWD, support for ETNA Rev3 etc. |
|
5622 Added a function Plat::WaitAtLeastAMicroSecond() for use by the |
|
5623 ATA media driver. |
|
5624 |
|
5625 |
|
5626 Version 1.02.156 |
|
5627 ================ |
|
5628 (Made by Jonathan, 27th October 1998) |
|
5629 |
|
5630 N.B. WINS DEB/UDEB will only work with F32 122 OR LATER. |
|
5631 |
|
5632 1) Dennis |
|
5633 1) Reintroduced debug/release interoperability for WINS. Removed |
|
5634 CBase::iName and SObjectIxArray::iPadding. Deleted all debug DEF |
|
5635 files. |
|
5636 2) Merged in Andrew Thoelke's E32 proposals: |
|
5637 i) SW1-77 Compiler-generated constant descriptors. |
|
5638 ii) SW1-14 C++ range-checking template wrapper for fixed arrays. |
|
5639 iii) SW1-87 CleanupClosePushL and related cleanup-stack things. |
|
5640 3) Globally disabled warning about not inlining functions in MSVC++ 5.0. |
|
5641 |
|
5642 2) Jonathan |
|
5643 1) Fixed version bug in mnt getbld. |
|
5644 2) Fixed pvcs paramater error for bsarm and bsarmbe dirs in mnt *lock. |
|
5645 |
|
5646 3) Alastair |
|
5647 1) Added the following Unicode Uid values |
|
5648 KLogicalDeviceDriverUidValue 0x100039cf |
|
5649 KPhysicalDeviceDriverUidValue 0x100039d0 |
|
5650 KKernelUidValue 0x100039e2 |
|
5651 KUserDllUidValue 0x100039e5 |
|
5652 KLocaleDllUidValue 0x100039e6 |
|
5653 KConsoleDllUidValue 0x100039e7 |
|
5654 KDisplayDllUidValue 0x100039eb |
|
5655 KCustomDllUidValue 0x100039e8 |
|
5656 KKeyboardDllUidValue 0x100039e9 |
|
5657 KKeyboardDataUidValue 0x100039e0 |
|
5658 KKeyboardTranUidValue 0x100039e1 |
|
5659 KXYInputDllUidValue 0x100039ea |
|
5660 |
|
5661 N.B. some of these values are defined in the file E32UID.IBY (from |
|
5662 \e32\kbarm\,\e32\kbisa\, etc). If this file is to be used in creating |
|
5663 UNICODE roms then the preprocessing stage prior to rombuilding should |
|
5664 define the _UNICODE macro. |
|
5665 2) Updated .MMP files in accordance with the UNICODE plan. |
|
5666 3) Changed MNT.BAT to get E32TOOLP version 096. |
|
5667 |
|
5668 |
|
5669 Version 1.02.155 |
|
5670 ================ |
|
5671 (Made by Morgan, 20th October 1998) |
|
5672 |
|
5673 NB: REQUIRES F32 VERSION 121 OR ABOVE, WSERV VERSION 100 OR ABOVE |
|
5674 |
|
5675 0) Jonathan |
|
5676 1) Added Distribution lines to the LI.PRJ files in all subdirectories to |
|
5677 identify licensee-specific source. |
|
5678 |
|
5679 1) Graham Asher, 13/10/98 |
|
5680 These changes affect the Unicode builds only. They make it possible to use |
|
5681 several different sets of collation rules in the same locale, which is |
|
5682 needed for East Asian locales; and they make it easier to write collation |
|
5683 rules for these and other locales. |
|
5684 |
|
5685 \inc\collate.h |
|
5686 introduced TCollationRepertoire - stores a series of rule sets so that one |
|
5687 can choose, say, between sorting on stroke count and radical, or JIS code, |
|
5688 without changing locale. added new collation operators to make it easier |
|
5689 to write complex collation rules reorganised TCollate constructors to make |
|
5690 them easier for Mem functions to call |
|
5691 |
|
5692 \inc\e32des16.h |
|
5693 added new TDesC16::CompareC overloads to allow selection of rule set |
|
5694 |
|
5695 \inc\e32panic.h |
|
5696 added EBadCollationRulesIndex panic number |
|
5697 |
|
5698 \inc\e32std,h |
|
5699 added Mem functions to enumerate collation rule sets and select them when |
|
5700 comparing; these are new CompareC overloads |
|
5701 |
|
5702 \inc\u32std.h |
|
5703 changed LCharSet to include a collation repertoire (instead of just a ptr |
|
5704 to the rules) and a collation attribute repertoire |
|
5705 (TUnicodeAttributeRepertoire) for storing locale-specific character |
|
5706 attribute tables like radical and stroke count |
|
5707 |
|
5708 \inc\unicode.h |
|
5709 added the new structures used by TCollationRepertoire, and added |
|
5710 TUnicodeAttributeRepertoire and its constituents; added |
|
5711 TUnicode::GetAttribute, so that collation can use locale-specific |
|
5712 attributes, and abolished TUnicode::TranslateFromUnicode and |
|
5713 TUnicode::TranslateToUnicode |
|
5714 |
|
5715 \lsrc\ls_unic.cpp |
|
5716 now contains collation repertoire ptr, not rules ptr, and an attribute |
|
5717 repertoire ptr for any attributes supported by the locale |
|
5718 |
|
5719 \ucdt\uc_des16.cpp |
|
5720 implementation of new TDesC16::CompareC overloads |
|
5721 |
|
5722 \ucdt\uc_exec.cpp |
|
5723 TChar::TranslateFromUnicode and TChar::TranslateToUnicode now do nothing; |
|
5724 have not abolished them like the TUnicode functions of the same names |
|
5725 because of binary compatibility |
|
5726 |
|
5727 \ucdt\uc_func.cpp |
|
5728 added new Mem functions to enumerate and retrieve collation rules; and |
|
5729 implemented new Mem::CompareC overloads |
|
5730 |
|
5731 \unicode\collate.cpp |
|
5732 reorganised constructor arguments; implemented new operators including |
|
5733 those that retrieve locale-specific attributes; increased subkey size to |
|
5734 16 bits |
|
5735 |
|
5736 \unicode\unicode.cpp |
|
5737 abolished TUnicode::TranslateFromUnicode and TUnicode::TranslateToUnicode |
|
5738 |
|
5739 2) Dennis |
|
5740 1) Machine coded most of the TEiger functions because things like keyboard |
|
5741 scanning were taking a ridiculously long time (nearly 500us). |
|
5742 2) Fixed bug SW1-256 - TInt64::TInt64(TReal) won't compile under VC5. |
|
5743 3) Fixed bug SW1-738 - Scheduler bug may leave processes unprotected. |
|
5744 4) Added extra function calls to serial comms PDD VA_COM1.CPP to cope |
|
5745 with new chained interrupts. |
|
5746 |
|
5747 3) Alastair |
|
5748 1) Changed Emulator title bar to read "EPOC Emulator". |
|
5749 2) Changed \e32\dpwins\d_medint.cpp and \e32\kpwins\kp_pccd.cpp |
|
5750 to use Win32 function GetTempPath() to get the system |
|
5751 temporary path rather than manually checking the "temp" environmental |
|
5752 variable. Fixes Epoc Software problem SW1-112. |
|
5753 3) Changed WINS F11 key case closed behaviour so that "case |
|
5754 closed" is added to the WINS title bar rather than the case |
|
5755 bitmap being displayed. |
|
5756 4) Removed possibility of specifying the case bitmap within |
|
5757 WINS's system.ini file, and all references to the case bitmap. |
|
5758 5) Disabled Emulator Window maximise button since the button |
|
5759 served no purpose. |
|
5760 6) Added new header \E32\INC\E32WINS.H containing the following |
|
5761 WINS-specific functions to be exported from EUSER.DLL |
|
5762 |
|
5763 IMPORT_C TInt SetupEmulatorPaths(); |
|
5764 IMPORT_C TPtrC EmulatorPath(); |
|
5765 IMPORT_C TPtrC EmulatorDataPath(); |
|
5766 IMPORT_C TInt SetupEmulatedDrive(const TChar aDrive,const TDesC& aPath); |
|
5767 IMPORT_C TInt MapEmulatedFileName(TDes& aBuffer,const TDesC& aFileName); |
|
5768 |
|
5769 These functions are defined in new file |
|
5770 \E32\UPWINS\UP_PATH.CPP, and replace various drive-mapping |
|
5771 activities in different places in E32 and F32. They also |
|
5772 incorporate changes to make the Emulator runnable from |
|
5773 anywhere. If the Emulator is running from a traditional |
|
5774 \Epoc32\Release\WINS\<build>\ directory, then emulated C: and Z: |
|
5775 drives and the Emulator data directory will be as before; |
|
5776 otherwise, emulated C: and Z: will be subdirectories 'C' and 'Z' |
|
5777 of the Emulator directory, and the Emulator data directory |
|
5778 will be the 'data' subdirectory of the Emulator directory. |
|
5779 7) Fixed Epoc Software problem SW1-153 "Allow applications to simulate |
|
5780 running from C: or D: on WINS". F32 has been changed so that |
|
5781 an Epoc path, rather than a full Win32 path, is passed to |
|
5782 the kernel's DPlatLibrary::DoLoad() function. The path is mapped |
|
5783 to a Win32 path using MapEmulatedFileName() for the Win32 call to |
|
5784 LoadLibrary(), but DPlatLibrary.iFileName is set to the Epoc |
|
5785 path rather than the full Win32 path. It is iFileName that function |
|
5786 RLibrary.FileName() returns. Previously F32 would |
|
5787 pass in the full Win32 path and DPlatLibrary::DoLoad() would |
|
5788 convert it to an Epoc path to set the iFileName value, but for |
|
5789 libraries on the emulated Z drive only. |
|
5790 8) In \E32\KPWINS\KP_GUI.CPP, replaced some old dos function |
|
5791 calls with newer, more UNICODE-friendly, Win32 ones. |
|
5792 9) Added 2 new, case-sensitive, command-line flags. |
|
5793 Use EPOC.EXE -C<emulated C drive> -- (that's 2 dashes) to |
|
5794 specify the emulated C drive. |
|
5795 Use EPOC.EXE -T -- to specify that the system temporary path |
|
5796 should be used as the emulated C drive. |
|
5797 These flags will override the default settings and any _EPOC_DRIVE_C |
|
5798 setting in the environment or in the System.ini file. |
|
5799 10) Removed obselete code defaulting maximum free RAM under WINS from |
|
5800 \E32\KPWINS\KP_HAL.CPP. The default is now applied by |
|
5801 \E32\KPWINS\KP_GUI.CPP. |
|
5802 11) Changes to support international keyboard variants - these changes |
|
5803 will mean that WSERV version 100 (or above) and it's corresponding |
|
5804 changes are required to provide sensible keyboard behaviour. |
|
5805 a) Changed WINS EKERN.DLL so that character codes are passed onto the |
|
5806 Window Server in the 2 high bytes of the TRawEvent iScanCode |
|
5807 member variable. |
|
5808 b) Changed WINS EKTRAN.DLL to translate Epoc scan codes to the |
|
5809 character code provided in the 2 high bytes of the aScanCode |
|
5810 parameter if this code is available. |
|
5811 c) Changed EWSRV.DLL so that the 2 high bytes of the TRawEvent |
|
5812 iScanCode are ignored where appropriate. |
|
5813 d) Changed WINC ECONS.DLL to support international keyboard |
|
5814 input. |
|
5815 e) Removed \E32\KPWINS\KP_KYBD.CPP - this file used to provide |
|
5816 limited international keyboard support - UK/US variants only. |
|
5817 12) Added KConsoleDllUid, 0x100000C5, to \E32\INC\E32UID.H. |
|
5818 13) Made changes to \E32\WSRC\CO_TWIN.CPP to resolve the ECONS.DLL |
|
5819 problem in line with the version of Epoc S/W Proposal SW1-84 |
|
5820 revised 27/8/98. Some changes to the Eikon console will be |
|
5821 required for the solution to be fully effective. The changes |
|
5822 don't go quite as far as the proposal - the text console only |
|
5823 attempts to load ECONSEIK.DLL, not ECONS?*.DLL, since the |
|
5824 dll-loading code does not handle wildcards. |
|
5825 14) Changed \E32\KPWINS\KP_GUI.CPP so that under WINS the pointer |
|
5826 name (TMachineInfoV1.iXYInputName) is always either _L("PEN"), |
|
5827 _L("MOUSE") or _L("NONE"). This value can be set via |
|
5828 \Epoc32\Data\System.ini using keyword "PointerType", and |
|
5829 defaults to _L("PEN"). E.G. "PointerType mouse". |
|
5830 15) Changed \E32\KPWINS\KP_GUI.CPP to allow Emulator windows to be |
|
5831 created which are larger than the PC screen. |
|
5832 16) Changed \E32\GROUP\SWINS.REL to include the new symbian fascia.bmp and |
|
5833 friends from R:\SDK\ZIP\SDKMODELS.007. |
|
5834 17) Added new function and an enum to E32WINS.H |
|
5835 |
|
5836 IMPORT_C TInt EmulatorFlip(TEmulatorFlip aEmulatorFlip); |
|
5837 enum TEmulatorFlip |
|
5838 {EEmulatorFlipRestore,EEmulatorFlipInvert,EEmulatorFlipLeft,EEmulatorFlipRight}; |
|
5839 |
|
5840 Calling this function, defined in \E32\UPWINS\UP_GUI.CPP, will change |
|
5841 the size and orientation of the emulator's parent and child windows |
|
5842 and bitmap. |
|
5843 18) Implemented Epoc Proposal SW1-93 "Help for debugging Panics on WINS". |
|
5844 In WINS DEBUG mode, when a thread is panicked, a function in |
|
5845 \E32\UPWINS\UP_DEBUG.CPP will be called which will break into the |
|
5846 debugger and provide comprehensive information about the panic. Source |
|
5847 file UP_DEBUG.CPP will be needed for this to work properly. I've |
|
5848 removed the __DEBUGGER() macro from RThread::Panic() since it should no |
|
5849 longer be required. |
|
5850 20) Added 2 new functions to E32WINS.H - AddToWinsEpocThreadList() and |
|
5851 RemoveFromWinsEpocThreadList(). These enable the kernel to create and |
|
5852 maintain a list of "real" Epoc threads (as opposed to fake WINS |
|
5853 hardware threads) within EUSER.DLL. New function |
|
5854 UpWins::__EpocThread() in UP_STD.H is called by EDLL.OBJ (linked into |
|
5855 every WINS Epoc dll) to check whether the current thread is in this |
|
5856 list, so that EUSER's E32Dll() routine is only called when real Epoc |
|
5857 threads attach to and detach from loaded Epoc dlls. As a result of |
|
5858 this change dlls linked to the new version of EDLL.OBJ will not run |
|
5859 against older versions of EUSER.DLL. All these new functions are |
|
5860 defined in new file \E32\UPWINS\UP_THRD.CPP. This change addresses |
|
5861 Epoc Proposal SW1-19, though I haven't removed the calls to E32Dll() |
|
5862 with parameters EDllProcessAttach and EDllProcessDetach yet since the |
|
5863 window server, and perhaps other components, make use of these. |
|
5864 |
|
5865 4) Morgan |
|
5866 1) Added interrupt chaining to TInterrupt. This breaks binary |
|
5867 compatability for this class, but maintains source compatability. |
|
5868 Attempts to Bind the old TInterrupt class with the new kernel will |
|
5869 fail with KErrNotSupported. |
|
5870 |
|
5871 |
|
5872 Version 1.02.151 |
|
5873 ================ |
|
5874 (Made by Pete, 12 October 1998) |
|
5875 |
|
5876 1) Morgan |
|
5877 1) Updated TLinda and KEMAD\KE_PIC.CPP to take the new interrupts |
|
5878 2) Added some kernel access functions so device drivers can |
|
5879 find DPhysicalDevices, DLogicalDevices, DChunks, and DLibraries |
|
5880 3) Added TDma::Fill() |
|
5881 4) Fixed a bug in the ImpDma interface |
|
5882 5) Added hooks for automatic chaining of Dma buffers |
|
5883 |
|
5884 2) Pete |
|
5885 1) Re-organisation of the SPI bus / ADC channel |
|
5886 measurement code in MARM and MAWD builds:- |
|
5887 TSpiController is now an abstract class. A |
|
5888 TSpiController derived class is defined and instanciated in each |
|
5889 variant. During initialisation, the kernel calls |
|
5890 TSpiController* Custom::CreateSpiController() to create the |
|
5891 appropriate SPI controller device. |
|
5892 TSpiController now includes the following |
|
5893 pure virtual functions which (hopefully) encompass the variant |
|
5894 specific aspects of this device:- |
|
5895 - void TSpiController::InitialiseSpiDevice(); |
|
5896 - void TSpiController::StartAveragedReading(); |
|
5897 - void TSpiController::StartOneShotReading(); |
|
5898 Created the file VA_SPI.CPP in each MARM/MAWD |
|
5899 variant to implement the above functions (the code for which |
|
5900 has been essentially extracted from the appropriate KE_SPI.CPP |
|
5901 file). Also moved the following SPI related functions out of |
|
5902 VA_HW.CPP into VA_SPI.CPP:- |
|
5903 - TBool Custom::TestBootSequence() |
|
5904 - TInt Custom::BindSpiChannel(const TDesC8& aName) |
|
5905 - TBool Custom::EightChannelAdcFitted(). |
|
5906 The TSpiController device no longer relies on |
|
5907 the digitizer driver to drive it to pull off and process |
|
5908 entries from its queue of ADC channels waiting for an ADC reading. |
|
5909 The Controller now has its own 8mS tick to perform |
|
5910 this. The later can be suspended/resumed by the variant using:- |
|
5911 - void TSpiController::Suspend(); |
|
5912 - void TSpiController::Resume(); |
|
5913 (For PB-PD/P2 MARM and B1 MAWD variants, the |
|
5914 digitizer driver does indeed suspend this operation and |
|
5915 drives processing of pending channels itself so as not to |
|
5916 change the operation of this driver). |
|
5917 2) Re-organisation of the way the PC Card Controller |
|
5918 hardware (e.g. Etna) is implemented for MARM builds to make |
|
5919 use of the fact that the variant DLL can now contain static |
|
5920 data. The h/w chunks are no longer allocated in the |
|
5921 architecture layer (KE_INI.CPP), but are |
|
5922 allocated within the variant as part of the Custom::Init3() |
|
5923 function. As such, the function |
|
5924 Custom::PcCardCntrlPhysicalAddress() has become redundant. |
|
5925 3) The function Hal::ColdStart() is now properly |
|
5926 exported. |
|
5927 |
|
5928 3) Petteri |
|
5929 1) Changes to MARM display driver (WD_EIGER.CPP) so to handle |
|
5930 different screen sizes. Previous one assumed 640x240. |
|
5931 2) Changes to bootstrap and MARM variant layer to allocate an |
|
5932 additional h/w chunk for the extra registers in the CL-PS7111 device. |
|
5933 3) Various changes to the Cirrus Logic evaluation board |
|
5934 variant - to bring back as a supported variant. |
|
5935 |
|
5936 4) Dennis |
|
5937 1) Put SCREENVARIANT code back into MARM bootstrap. |
|
5938 |
|
5939 Version 1.02.150 |
|
5940 ================ |
|
5941 (Made by Alastair, 23rd September 1998) |
|
5942 |
|
5943 This release is not intended for ER4, though it could be used as part |
|
5944 of an ER4 SDK. |
|
5945 |
|
5946 1) Alastair |
|
5947 1) Changed ECDRV.PDD, ESDRV.PDD and ESOUND.LDD as suggested by replies |
|
5948 to topic "WINS sound and comms cause deadlocks with STDLIB" under |
|
5949 category "Known Epoc Problems" in Notes database |
|
5950 "Symbian Tech Support General", except that the change to |
|
5951 ECDRV.PDD has been modified slightly so that it doesn't break test |
|
5952 T_SERIAL.EXE. The ECDRV.PDD change has been tested with a version of |
|
5953 T_SERIAL.EXE modified to simulate the conditions which |
|
5954 could previously cause deadlock. |
|
5955 These changes address the following bugs/proposals, but do not |
|
5956 represent a permanent solution: |
|
5957 Epoc Software problem SW1 - 176 "WINS sound driver |
|
5958 deadlock in ESTLIB E32Dll() function." |
|
5959 Series5 Software problem SW1 - 503 "ECDRV.PDD can cause |
|
5960 deadlocks in simple test programs". |
|
5961 Epoc proposal SW1 - 19 "Implement true EPOC32 handling of |
|
5962 E32Dll() under WINS". |
|
5963 The change to ESOUND.LDD fixes Epoc Software problem SW1 - 179 |
|
5964 "ESOUND.LDD plays silence indefinitely for short sound samples". |
|
5965 |
|
5966 |
|
5967 Version 1.02.144 |
|
5968 ================ |
|
5969 (Made by Dennis, 7th August 1998) |
|
5970 |
|
5971 1) Matthew |
|
5972 1) Added code to MISA platform so that the cpu goes into idle mode when |
|
5973 in the idle thread. |
|
5974 2) Added \e32\keisa\todo.txt - a to-do list for the MISA platform. |
|
5975 |
|
5976 2) Dennis |
|
5977 1) Fixed bug in comms device driver D_COMM.CPP which left unwanted DFCs |
|
5978 queued after a power-down. These then attempted to complete requests |
|
5979 twice. Power down now cancels any pending DFCs. |
|
5980 |
|
5981 3) Jonathan |
|
5982 1) Removed tests for redundant files from valid command in mnt.bat. |
|
5983 2) Updated build.txt to add dire warnings about checking e32ver.h and |
|
5984 advice about MNT VALIDating releases. |
|
5985 |
|
5986 |
|
5987 Version 1.02.143 |
|
5988 ================ |
|
5989 (Made by Pete, 20th July 1998) |
|
5990 |
|
5991 1) Dennis |
|
5992 1) Fixed SW1-586 incorrect handling of signed zeros. |
|
5993 |
|
5994 2) Morgan |
|
5995 1) Updated V32Linda.h to reflect the latest hw |
|
5996 2) Added TDma class and supporting classes Dma, ImpDma |
|
5997 3) Changed MMAD bootstrap to use the same modular scheme as MARM |
|
5998 |
|
5999 3) Alastair |
|
6000 1) Fixed Epoc Software problem SW1-107 'WINS RThread::Resume problem on |
|
6001 Win95' by not faulting the platform unless Win32 API function |
|
6002 GetLastError() reports an error as well as ResumeThread(). |
|
6003 |
|
6004 4) Pete |
|
6005 1) Fixed a problem with ATA media driver such that it sometimes failed |
|
6006 to reduce machine current consumption - having raised it due to a |
|
6007 read or write to the CF card. |
|
6008 2) Fixed a problem with ATA media driver. As part of the exec. call to |
|
6009 read/write/format the card, the driver sends a command to the card, |
|
6010 to read/write the appropriate number of sectors. Each time a sector |
|
6011 is complete, the card generates an interrupt so the driver can |
|
6012 either read the data from the sector or supply the data for the next |
|
6013 sector to be written. There was a problem with the driver such that, |
|
6014 if the first interrupt from the card occurred while still in the |
|
6015 initial exec. call, the interrupt could be prematurely cleared. The |
|
6016 driver then only detects that the sector has been processed when a 2 |
|
6017 second time-out occurs on the operation - making the operation |
|
6018 appear very slow. This only seems to have been a problem for Viking |
|
6019 and Panasonic CF cards. |
|
6020 3) Alteration to the ATA media driver to improve speed of transfer, |
|
6021 particularly on reads from the card. Before, the driver queued a DFC |
|
6022 for the completion of each sector read from the card (to write it |
|
6023 back the thread making the request). The media driver's buffer has |
|
6024 now been increased so that this can be filled under interrupt. A DFC |
|
6025 in now only queued when the buffer is full. |
|
6026 |
|
6027 |
|
6028 Version 1.02.142 |
|
6029 ================ |
|
6030 (Made by Pete, 1st July 1998) |
|
6031 |
|
6032 1) Matthew |
|
6033 1) Changed MISA bootstraps to use the same modular scheme as MARM. |
|
6034 2) Added functions to TSa1100 for new hardware registers in revision D. |
|
6035 1) Dennis |
|
6036 1) Added thread write function DThread::WriteNoCheck() which doesn't |
|
6037 perform the strict checking that DThread::Write() does. |
|
6038 2) Changed TLex::Val(TReal*) to use TRealX in its intermediate |
|
6039 calculations in order to increase the precision of the final |
|
6040 result. Added a new function Math::MultPow10X which multiplies a |
|
6041 TRealX argument by an integer power of 10. This is basically a |
|
6042 higher precision version of Math::Pow10. |
|
6043 1) Pete |
|
6044 1) Changed MARM ATA and CROM media driver to use |
|
6045 DThread::WriteNoCheck(). Fixes SW1-482. |
|
6046 |
|
6047 |
|
6048 Version 1.02.141 |
|
6049 ================ |
|
6050 (Made by Pete, 10th June 1998) |
|
6051 |
|
6052 1) Jonathan |
|
6053 1) Removed private assignment operators from TSglQueIterBase and |
|
6054 TDblQueIterBase as per EPOC32 Proposal SW1-53. |
|
6055 2) Made inline RSubSessionBase::SubSessionHandle() public as per EPOC32 |
|
6056 Proposal SW1-45. |
|
6057 3) Bumped up the E32 KMediaDriverInterface*VersionNumber. |
|
6058 4) Changed the default WINS memory emulation from 4MB to 64MB as per |
|
6059 EPOC32 Proposal SW1-88. |
|
6060 5) New code page 1252 and Unicode character information tables derived |
|
6061 from release 2.1 of the character database from Unicode Inc. |
|
6062 Fixes EPOC32 Software Problems SW1-42 and also adds: |
|
6063 80 & U+20AC New euro currency symbol |
|
6064 8E LATIN CAPITAL LETTER Z WITH CARON (= U+017D) |
|
6065 9E LATIN SMALL LETTER Z WITH CARON (= U+017E) |
|
6066 U+FFFC OBJECT REPLACEMENT CHARACTER |
|
6067 6) From Graham Asher: |
|
6068 The enumerated type TChar::TCategory in e32std.h, used only in the |
|
6069 Unicode build, has been changed to accommodate the new character |
|
6070 categories in unidata2.txt. |
|
6071 |
|
6072 2) Matthew |
|
6073 1) Changed the TSa1100 class - removed SetHalt(), which had been |
|
6074 copied over from TEiger, and renamed IntLevels() to IntsPending() |
|
6075 and IntTypes() to IntLevels() to conform with the terminology in |
|
6076 the SA1100 documentation. Breaks misa kernel-side compatability. |
|
6077 2) Removed lccr followers from MISA, which were working around a bug |
|
6078 in the SA1100. |
|
6079 3) Changed MISA ScreenInfo function to return the address of the |
|
6080 beginning of the palette (rather than the pixel data for 8bpp). |
|
6081 The screen driver will have to change to take account of this. |
|
6082 4) Removed TSa1100 palette functions - the screen driver should write |
|
6083 to memory instead. |
|
6084 5) Removed Cassius-A releasables from the releasables, because we had |
|
6085 the hardware taken from us. |
|
6086 6) Changed Windamere(AWD) and SARMBE architectures to set year to |
|
6087 rombuild year on a cold boot, which I forgot in the last release |
|
6088 (see 3.13 in release 140). |
|
6089 7) Fixed Epoc32 defect SW1-33 ("Problem in Plat::Fault in Unicode |
|
6090 builds") by changing Length() calls to Size() calls. |
|
6091 8) Changed sound ldd to use DThread::Read() and Write() rather than |
|
6092 doing its own thing this fixes S5 defect SW1-231 ("Machine warm |
|
6093 reset when playing sound while spy running"). |
|
6094 9) Changed svChangeLocale() function so that it triggers |
|
6095 RChangeNotifiers. |
|
6096 10) Changed keyboard translator dll so that the default library is |
|
6097 closed when not in use. |
|
6098 11) Incremented EPOC comms-driver minor version number (but not WINS |
|
6099 one) and put a check into the pdds so that they will not be used |
|
6100 with early versions of the ldd. Partially fixes Bluebell defect |
|
6101 SW1-5 ("Triple beep reset when turning on the link"). |
|
6102 12) Added an explicit call to compress the kernel heap to |
|
6103 S::ChunkCompressAll(). This fixes the E32 bit of Series-5 defect |
|
6104 SW1-356 ("Large uncompressible heaps in system components"). |
|
6105 13) Fixed bug in sound ldd which caused sine waves to not be |
|
6106 cancelled in WINS on PCs which did not support aLaw. |
|
6107 |
|
6108 3) Dennis |
|
6109 1) Fixed bug in ARM710.S in EIGER bootstrap code. In function |
|
6110 EigerSetCSnWidth register R1 is accidentally overwritten, causing |
|
6111 the ROM to be set up incorrectly if its bus width is not 32 bits. |
|
6112 2) Implemented EPOC32 proposal SW1-69. User::StartThread modified to do |
|
6113 the DLL attach and detach in separate functions, so that the 1K of |
|
6114 stack used in these functions can be reused during actual running of |
|
6115 the thread. |
|
6116 3) Fixed problem SW1-51 - renamed TPointerArray<T> to RPointerArray<T> |
|
6117 and TSimpleArray<T> to RArray<T>. Replaced TArray(U)Int with |
|
6118 RArray<T(U)Int>. Replaced the destructor with a Close() function to |
|
6119 do memory deallocation. Frozen DEF files modified so that renamed |
|
6120 functions are at same ordinal as before, with Close() functions at |
|
6121 the same ordinals as the destructors were. |
|
6122 4) Fixed problem SW1-47 - modified code in DebugFunction ProfileResult |
|
6123 to get the tick period from Hal::TickPeriod instead of hardcoding it |
|
6124 to 15625us. |
|
6125 5) Fixed problem SW1-622 - modified heap code so that all free cells |
|
6126 are at least 16 bytes in debug mode, since this is the minimum |
|
6127 allocated cell size. |
|
6128 6) Modified RHeap::ReAlloc() so that the nestingLevel field in debug |
|
6129 mode is preserved. This prevents test programs failing a kernel |
|
6130 heap check due to one of the kernel's arrays being reallocated |
|
6131 during the test. |
|
6132 7) Modified handlers for vectors 0x00 and 0x14 (reset and reserved) to |
|
6133 fault with a simulated exception EExcInvalidVector rather than |
|
6134 looping forever. iCodeAddress=0x00 or 0x14, iDataAddress=value of |
|
6135 lr on jumping to 0x00 or 0x14. |
|
6136 8) Added functions RChunk::IsReadable() and RChunk::IsWritable() so |
|
6137 that user code can determine whether or not a chunk is mapped into |
|
6138 its process address space. |
|
6139 9) Fixed problem SW1-370 (Math::Mod is not sufficiently |
|
6140 accurate). Changed the algorithm from x%y=x-y*INT(x/y) to a |
|
6141 bit-by-bit shift and subtract algorithm. Added operator%, |
|
6142 operator%=, Mod() and ModEq() functions to TRealX class to implement |
|
6143 the new algorithm. |
|
6144 |
|
6145 4) Petteri |
|
6146 1) Fixed a bug in Math::Round(). (SW1-402) |
|
6147 2) Fixed a couple of bugs in the text window server. |
|
6148 3) Changed Ekern.mmp as required by changes in Makmake. |
|
6149 |
|
6150 5) Alastair |
|
6151 1) Changed mnt.bat so that mnt getsrc no longer attempts to make |
|
6152 the Epoc work directories. |
|
6153 2) Changed WinCOutput::Write(const TDesC &aDes) so that WINC |
|
6154 programs can write output to STDOUT for redirection. This change |
|
6155 applies to ascii builds only. |
|
6156 3) Changed the kernel so that the Windows Alt-F4 keyboard |
|
6157 shortcut for closing applications works for WINS. |
|
6158 4) Changed #define in kpwins\kp_chunk.cpp so that the code which |
|
6159 checks that requests for more memory won't cause the emulated |
|
6160 memory allocation limit to be exceeded applies for WINS only, not |
|
6161 WINC. This won't change WINC behaviour because the emulated |
|
6162 memory limit under WINC was always zero, which meant that the |
|
6163 check wasn't applied anyway. |
|
6164 5) Changed kpwins\kp_gui.cpp in line with Epoc Proposal SW1-21, |
|
6165 so that emulated drive assignment is possible from |
|
6166 \Epoc32\Data\System.ini. |
|
6167 Syntax is |
|
6168 _EPOC_DRIVE_<letter> <path> |
|
6169 |
|
6170 6) Jo |
|
6171 1) Fixed Series 5 software problem SW1-440 ("PDD returns different errors |
|
6172 in WINS and ARM"). Both WINS and ARM now return KErrNotSupported. |
|
6173 2) Fixed Series 5 software problem SW1-943 ("XXX_CAST macros in E32DEF.H |
|
6174 are written incorrectly") |
|
6175 |
|
6176 7) Pete |
|
6177 1) Implemented asynchronous rather than synchronous system |
|
6178 for read,write and format operations on local media devices. |
|
6179 This affects the TLocDrv and DMediaDriver classes. |
|
6180 2) Changed API on for local media devices so that for any given |
|
6181 operation (eg read,write,format,reduce size) the position on the |
|
6182 device is specified as a TInt64 rather than TInt. This will allow |
|
6183 very large media devcies to be supported. This affects the TLocDrv, |
|
6184 DMedia and DMediaDriver classes. |
|
6185 |
|
6186 Taking changes 1 & 2 for DMediaDriver, the functions |
|
6187 TInt DMediaDriver::ReduceSize(TInt aPos,TInt aLength); |
|
6188 TInt DMediaDriver::Read(TInt aPos,TInt &aLength,const TAny* aTrg,TInt aHandle,TInt anOffset); |
|
6189 TInt DMediaDriver::Write(TInt aPos,TInt &aLength,const TAny* aSrc,TInt aHandle,TInt anOffset); |
|
6190 TInt DMediaDriver::Format(TInt aPos,TInt &aLen); |
|
6191 |
|
6192 become:- |
|
6193 TInt DMediaDriver::ReduceSize(TInt64 &aPos,TInt aLength); |
|
6194 void DMediaDriver::Read(TInt64 &aPos,TInt *aLength,TLocalDriveMessageData &aTrg,DThread *aThread,TRequestStatus *aStatus); |
|
6195 void DMediaDriver::Write(TInt64 &aPos,TInt *aLength,TLocalDriveMessageData &aSrc,DThread *aThread,TRequestStatus *aStatus); |
|
6196 void DMediaDriver::Format(TInt64 &aPos,TInt *aLength,DThread *aThread,TRequestStatus *aStatus); |
|
6197 3) Withered the UserPcCardCntrl class. Now all functions are 'not supported' |
|
6198 apart from:- |
|
6199 void UserPcCardCntrl::PwrDown(TSocket aSocket); |
|
6200 TInt UserPcCardCntrl::NotifyChange(TSocket aSocket,TRequestStatus *aReqStat); |
|
6201 which are implemented using the corresponding UserSvr functions |
|
6202 described below. |
|
6203 The media device functions previously provided by UserPcCardCntrl |
|
6204 are now provided by D_DRVIF.LDD in E32UTILS. |
|
6205 The PC Card controller functions previously provided by UserPcCardCntrl |
|
6206 are now provided by D_PCCDIF.LDD in E32UTILS. |
|
6207 4) Added the following UserSvr local media functions: |
|
6208 void UserSvr::ForceRemountMedia(TMediaDevice aDevice); |
|
6209 Causes remount on next access to specifed device (ie |
|
6210 media change simulation). |
|
6211 TInt UserSvr::MediaChangeNotify(TMediaDevice aDevice,TRequestStatus *aReqStat); |
|
6212 Request notification of power of powerup and media change |
|
6213 events on the specified media device. |
|
6214 5) In MARM build the function:- |
|
6215 TInt DArmPlatPcCardSocket::EventCallBackEnable(TPccdEvent anEvent) |
|
6216 no longer performs a clear of any pending events before enabling an |
|
6217 event callback type. Also, it now performs an additional check that |
|
6218 a power down of a PC Card hasn't occured (ie Kern::PowerGood()) before |
|
6219 enabling PC Card IREQ events. |
|
6220 |
|
6221 |
|
6222 Version 1.02.140 |
|
6223 ================ |
|
6224 (Made by Morgan, 14th May 1998) |
|
6225 |
|
6226 1) Graham |
|
6227 1) Added P3 variant to the rom building capabilities in KBARM |
|
6228 |
|
6229 2) Dennis |
|
6230 1) Added support for multiple kernels/variants in the same ROM. |
|
6231 This requires F32 096 and ROMBUILD version 093. |
|
6232 2) Added TSimpleArray<>, TPointerArray<>, TArrayInt simple array classes. |
|
6233 3) Changed occurrences of CArray* in the kernel to TSimpleArray<>. |
|
6234 4) Rearranged ARM boot code into a form which is easier to adapt to other |
|
6235 hardware and which facilitates multiple-boot ROMs. |
|
6236 5) EKERN.EXE no longer links to the variant DLL. Instead, the variant DLL |
|
6237 is found by searching a list of possible variants. |
|
6238 6) Added executive call UserSvr::RomRootDirectoryAddress() to enable F32 to |
|
6239 obtain the address of the ROM file system root directory. This address is |
|
6240 now determined at boot time from a list of possible root directories, one |
|
6241 for each variant which the ROM supports. |
|
6242 7) Added code to enable profiling of threads (measures CPU time used by each |
|
6243 thread in the system). To use this, rebuild the MARM REL version with the |
|
6244 symbol __PROFILE__ defined at the top of M32STD.H. You will also need test |
|
6245 program T_PROF.EXE and device driver D_PROF.LDD from E32TEST. |
|
6246 8) Added two new format options %O and %o to Kern::Printf. %o prints the short |
|
6247 name of a CObject and %O prints the full name. Also modified Kern::Printf |
|
6248 to print (null) if a NULL pointer is passed into %S, %O or %o. |
|
6249 9) Modified statements of the form Kern::Printf(_L("%S"),&obj->FullName()) |
|
6250 to Kern::Printf(_L("%O"),obj). |
|
6251 10) Added a generic algorithm for determining the size and configuration of |
|
6252 DRAM devices to the ARM bootstrap code. |
|
6253 11) Modified ARM/ISA/X86 bootstrap to map in the PageTableInfo array at |
|
6254 0x41080000. The fixed offset from the page directory simplifies remapping |
|
6255 during a reschedule. |
|
6256 12) Added fields iHomePdes, iPdes and iNumPdes to the definition of DPlatChunk. |
|
6257 These indicate directly which PDEs are used by the chunk and simplify |
|
6258 moving a chunk around. Modified the scheduler to use these fields when |
|
6259 switching processes. Added a function DPlatChunk::SetPdeInfo to set up |
|
6260 these fields. |
|
6261 13) Removed the current consumption setting code from the scheduler. Added |
|
6262 a function K::TotalCurrentConsumptionInMilliAmps() which calculates the |
|
6263 machine current by adding K::TotalCurrentMilliAmps to the machine current, |
|
6264 determined by simply looking to see if the null thread is running. |
|
6265 14) Modified DPlatProcess::LookupChunk to do a binary search on the chunk list |
|
6266 instead of a straight entry-by-entry search. |
|
6267 15) Fixed a bug in DPlatChunk::ReallocateHomeAddress which would result in a |
|
6268 chunk being left without a home address if all linear addresses in the |
|
6269 home section were exhausted. |
|
6270 16) Modified text window server so that it loads EDISP.DLL from Z:\SYSTEM\LIBS |
|
6271 and invokes ordinal 1 in order to create the screen device driver, rather |
|
6272 than being statically linked to EDISP.DLL. This is necessary for multi-boot |
|
6273 ROMs since EDISP.DLL is hardware dependent. |
|
6274 17) Added WINDERMERE architecture (\E32\KEAWD), Bluebell V1 variant (\E32\VAWDB1), |
|
6275 and dual-boot EIGER/WINDERMERE test ROM (\E32\KBAWD). |
|
6276 This builds and runs on Rack D but is obviously completely untested on |
|
6277 Windermere. There are some outstanding issues with the Windermere port: |
|
6278 i) Standby code may be faulty - problem with restoring state when machine |
|
6279 powers back up. |
|
6280 ii) PC card/CF card code requires modification to use LDRH/STRH 16 bit |
|
6281 instructions rather than relying on EIGER 'mad-mad mode'. |
|
6282 iii) Bootstrap needs modifying to detect Windermere. |
|
6283 iv) SPI controller and LCD controller setup may be incorrect. |
|
6284 |
|
6285 3) Matthew |
|
6286 1) Got rid of MARM P1 (banana) variant. |
|
6287 |
|
6288 2) Bug fixes to MISA so it can be run in 4bpp and 16bpp modes. |
|
6289 |
|
6290 3) Changed misa to use the hardware rtc to keep track of the time, instead of |
|
6291 counting ticks. |
|
6292 Unfortunately the 32MHz crystal is very slow to warm up, so a cold boot is now |
|
6293 much slower than it was because it has to wait for the crystal to stabilise. |
|
6294 |
|
6295 4) Changed misa bootstraps to be fractionally more like the marm one. |
|
6296 |
|
6297 5) Moved the WINS-specific setting of the daylight-saving mode out of the |
|
6298 independent layer and into KPWINS. Removed the resetting of the |
|
6299 daylight-saving from the change-locale function. These mean that S5 |
|
6300 defect SW1-558 ("Remove windows dependency") has been fixed. |
|
6301 |
|
6302 6) Fixed bug in DLogicalChannel::Request(), which previously, in WINS, |
|
6303 could have sent a request from a thread which had no right to do a request |
|
6304 on that channel. |
|
6305 |
|
6306 7) Integrated Andrew Baldwin's wonderful new WINS sound pdd, which will not |
|
6307 offend your ears. Many thanks to Andrew for this. |
|
6308 |
|
6309 8) Modified sound ldd so that it can pass multiple samples to the pdd. Modified |
|
6310 pdds to use this new functionality. This reduces the amount of time spent in |
|
6311 the service routine. |
|
6312 |
|
6313 9) Fixed S5 defect SW1-228 ("Dial setup errors") in sound LDD. |
|
6314 |
|
6315 10)Incrememented sound driver minor version number, to stop people mixing old |
|
6316 and new pdds/ldds. |
|
6317 |
|
6318 11)Put an __DEBUGGER() macro into K::PanicCurrentThread() - previously these |
|
6319 panics were just stopping WINS without giving you a chance to jump in with |
|
6320 a debugger. |
|
6321 |
|
6322 12)Added int3's to WINS DEBUG versions Plat::Panic() and Plat::Fault() so they |
|
6323 break into the debugger whatever the state of the JustInTime flag. |
|
6324 |
|
6325 13)Changed MISA and MARM cold-boot to read the year from the rom header and set |
|
6326 the time to 10:10 January 1st of that year. Fixes Bluebell defect SW1-134. |
|
6327 |
|
6328 14)Made the private function KernelCompressAll() into the public |
|
6329 User::CompressAllHeaps(). This is to allow Shell to trigger heap compression |
|
6330 more easilly (see Bluebell defect SW1-299). |
|
6331 |
|
6332 4) Morgan |
|
6333 1) Integrated the MADLinda architecture and build system |
|
6334 2) Bug fix to KESARMBE\KE_PIC.CPP |
|
6335 3) Changed occurences of DisableIrqs and EnableIrqs to DisableIrqsToLevel2 and |
|
6336 RestoreIrqs in SARMBE architecture |
|
6337 4) Added callback hook for the idle loop |
|
6338 5) Added Kern::PhysicalDeviceFromHandle |
|
6339 6) Added an external debugger interface (K32DBG.H). Used it to bolt on an |
|
6340 InfoOutput debugger for MSDEV. On the MARM platforms bolted on a logging |
|
6341 debugger for use by an external JTAG debugger, (like TI's). No debugger |
|
6342 for X86. |
|
6343 |
|
6344 5) Jonathan |
|
6345 1) Made Eiger and Windemere text drivers return correct screen size |
|
6346 from CScreenDriverMarm::Init() instead of assuming 80x24. |
|
6347 Removed old #ifdefed-out SetMode() code from Eiger driver. |
|
6348 |
|
6349 |
|
6350 ================ |
|
6351 Big version number increment to skip over Liffey release. |
|
6352 ================ |
|
6353 |
|
6354 Version 1.02.128 |
|
6355 ================ |
|
6356 (Made by Jonathan Harris, 8th May 1998) |
|
6357 |
|
6358 1) Jonathan |
|
6359 1) P::SetMachineConfiguration(): Don't update the bits of the SuperPage that |
|
6360 belong to the boot code (including the exception info), apart from the |
|
6361 display contrast. |
|
6362 |
|
6363 |
|
6364 Version 1.02.127 |
|
6365 ================ |
|
6366 (Made by Graham Darnell, 26th March 1998) |
|
6367 |
|
6368 1) Dennis |
|
6369 1) Added a new variant function Variant::SetSoundDriverEnabled(TBool) for use |
|
6370 with Snowball in order to allow user code to enable/disable the speaker |
|
6371 using UserHal::SetSoundDriverEnabled(). |
|
6372 |
|
6373 2) Added some code to Variant::Init3 for P2 variant to enable correct operation |
|
6374 with either a single ROM device, 4Mb on CS0 and 2Mb on CS1, or 4Mb on both. |
|
6375 |
|
6376 2) Matthew, Pete and Rob Pym |
|
6377 1) Converted the MISA build from being for a Digital IT board to being for |
|
6378 SA-1100 based hardware. This has an identical user-side API to MARM, so |
|
6379 MARM releasables will run unchanged. To build a rom use the MARM F32. |
|
6380 |
|
6381 2) Added variants VISABA for a Digital's "Brutus" board and VISACA for a |
|
6382 Cassius rack. |
|
6383 |
|
6384 Note: TO BUILD A TEXT-SHELL ROM FOR BRUTUS YOU WILL NEED THE ESHELL.EXE |
|
6385 FROM F32 096 OR HIGHER. PRIOR TO THIS, THE SHELL TRIES TO CREATE |
|
6386 A CONSOLE WINDOW LARGER THAN THE BRUTUS SCREEN AND CRASHES. |
|
6387 |
|
6388 3) Matthew |
|
6389 1) Changed all interrupt-binding and startup-beep internals to use Narrow |
|
6390 descriptors in the Unicode build. |
|
6391 |
|
6392 2) Added code to read extra digitiser information in E2 on P1, P2 and PD |
|
6393 variants. Changed the digitiser drivers on P2 and PD machines to use this |
|
6394 extra information, so different digitisers can be used on these machines. |
|
6395 |
|
6396 If the new E2 information is invalid due to a new rom has been put into |
|
6397 an old machine, then this is detected due to the x rise-time being zero, |
|
6398 and the driver defaults to the previous good values. |
|
6399 |
|
6400 If you wish to program your E2 with values suitable for the standard |
|
6401 digitiser use XYSpread/16=6; X-Rise=1; Y-Rise=1; Pen-down discard=0. |
|
6402 |
|
6403 3) Moved TVideoMode enum from d32video.h to e32twin.h, and stopped e32twin.h |
|
6404 including d32video.h, thus fixing SW1-921. |
|
6405 |
|
6406 4) Changed sound LDD to make sure that the internal state is implies no |
|
6407 request is pending when a play request is completed. Thanks to Andrew |
|
6408 Baldwin for finding this. |
|
6409 |
|
6410 5) Changed some RChangeNotifier internals so that the internal state implies |
|
6411 no request is pending when a request is completed. |
|
6412 |
|
6413 4) Graham/Matthew |
|
6414 1) Changed the WINC memory information function so that it doesn't emulate a |
|
6415 machine with 4 megs of ram. |
|
6416 |
|
6417 2) Removed some critical-section switching in the WINS thread-startup code. |
|
6418 This fixes a bug which occasionally caused WINC to hang on fast machines |
|
6419 if a thread did an exec call very soon after being resumed for the first |
|
6420 time. |
|
6421 |
|
6422 3) Removed another 'dance of the semaphores' during WINS thread |
|
6423 startup. This seemed to prevent a resumer proceeding |
|
6424 until all resumee dll entry points have been called. Since |
|
6425 there seems to be no reason for this and since this was |
|
6426 causing a problem when threads were resumed inside |
|
6427 dll entry code, there seemed no point in keeping it. |
|
6428 However, this might be something to watch out for. |
|
6429 |
|
6430 3) On WINS/WINC, the call to tick the tick-queue is now sandwiched between a |
|
6431 Plat::EnterCS() and a Plat::LeaveCS(). This will make these platforms far |
|
6432 more robust, but might break work-arounds that may or may not exist in |
|
6433 user code. |
|
6434 |
|
6435 5) Morgan |
|
6436 1) Fixed Bluebell defect SW1-43. |
|
6437 |
|
6438 2) Added Dll::FreeData(). This should be called in the EProcessDetatch |
|
6439 of those Dlls sporting static data. |
|
6440 |
|
6441 6) Graham |
|
6442 1) Added comms and sound device drivers to the WINC |
|
6443 releasables. |
|
6444 |
|
6445 |
|
6446 Version 1.02.126 |
|
6447 ================ |
|
6448 (Made by Jonathan, 26th February 1998) |
|
6449 |
|
6450 1) Matthew |
|
6451 1) Tweaked MMP files in preparation for misa platform. |
|
6452 |
|
6453 2) Added lots of useful constants to k32std.h - these will be used in the |
|
6454 misa platform. |
|
6455 |
|
6456 3) Removed the obsolete DriveName and PccdSlotHame() functions from the |
|
6457 variant layers. |
|
6458 |
|
6459 2) Graham |
|
6460 1) Added K32KEYS, K32COMM, and K32SND header files to INCK release |
|
6461 |
|
6462 2) Split off the S1 variant into its own project |
|
6463 |
|
6464 3) Removed S1 variant from E32 project |
|
6465 |
|
6466 4) Fixed a bug in the MARM architecture that assumed that an eight channel |
|
6467 ADC was fitted when powering up. |
|
6468 |
|
6469 3) Dennis |
|
6470 1) Modified RHeap definition so that it is now derived from RHeapBase, |
|
6471 which contains all the non-debug data members. This is to force GCC |
|
6472 to put the vptr in the same place that it always was in release builds. |
|
6473 This is to enable test code to run on a real machine with EUSER.DLL |
|
6474 replaced from RAM. |
|
6475 |
|
6476 2) Changed UP_CON.CPP in UPMARM, UPMX86 and UPWINS to only include <e32def.h> |
|
6477 instead of up_std.h. Previously, modifying k32std.h would cause up_con.cpp |
|
6478 to be rebuilt but not the real econs.dll. |
|
6479 |
|
6480 4) Alastair |
|
6481 1) Added edll.pdb and eexe.pdb to ewinsdb.rel because following the move |
|
6482 to using makmake edll.obj and eexe.obj no longer contain their own |
|
6483 debugging information. |
|
6484 2) Updated .MMP files previously using the START MARM .. END block keyword |
|
6485 DLLNAME so that they use the new LINKAS keyword instead. Updated MNT.BAT |
|
6486 to get e32tools 091 and e32toolp 091. |
|
6487 |
|
6488 5) Jonathan |
|
6489 1) Added new SwitchOn() digitizer driver call. Needed by the Snowball |
|
6490 variant to reinit the digitizer after power-off. |
|
6491 |
|
6492 |
|
6493 Version 1.02.125 |
|
6494 ================ |
|
6495 (Made by Graham, 16th February 1998) |
|
6496 |
|
6497 1) Morgan |
|
6498 1) Allowed static data for Rom Ldds/Pdds. These require the 'fixed' |
|
6499 keyword in the obey file. |
|
6500 |
|
6501 2) Graham |
|
6502 1) Removed debug/release interoperability from WINS/WINC. |
|
6503 |
|
6504 |
|
6505 Version 1.02.124 |
|
6506 ================ |
|
6507 (Made by Jonathan, 10th February 1998) |
|
6508 |
|
6509 1) Jonathan |
|
6510 1) Incremented KMediaDriverInterfaceMinorVersionNumber because the |
|
6511 media interface has changed (actually, it changed back in 120). |
|
6512 2) Added new TPasswordToken member to TMachineConfiguration on WINS, |
|
6513 updated on setting the password or machine configuration. |
|
6514 3) For internal consistency, WINS now actually limits the amount of |
|
6515 available memory on the 'machine' to the parameter set in |
|
6516 system.ini, and defaults to 3M if no value is set. Previously WINS |
|
6517 merely _reported_ 3M if no default was set, but allowed you to |
|
6518 allocate past 3M. This broke test code. |
|
6519 4) Fixed generation of event on Off keypress on Snowball 1. |
|
6520 5) Incorporated Pete's change: Snowball 1 variant no longer waits for |
|
6521 400ms for SanDisk to come out of reset. Instead, the media driver |
|
6522 polls the SanDisk on first use. |
|
6523 |
|
6524 2) Alastair |
|
6525 1) Updated e32base.h and ub_sec.cpp with Andrew Thoelke's changes to |
|
6526 implement EPOC32 proposal PR-0077, that a new function be provided |
|
6527 to return the maximum possible length that an encrypted piece of |
|
6528 data could become under the encryption scheme in use given the |
|
6529 initial length of the data. |
|
6530 2) Changed mnt getrel so that it doesn't attempt to get the non-existent |
|
6531 .PDB files for release builds. |
|
6532 |
|
6533 3) Basher |
|
6534 1) Changed K::EmergencyPowerDown() and K::EmergencyPowerDownDfcFn() |
|
6535 functions (ks_power.cpp). |
|
6536 |
|
6537 2) Changed Variant::EmergencyStandby() - on the folowing varients |
|
6538 varmcl, varmpd, varmsa and varmsb. |
|
6539 |
|
6540 3) \varms1\va_mati.cpp changed - implementing safe EmergencyPowerDwn |
|
6541 control. EmergencyCallBack function added and the SectorWrite function |
|
6542 changed to control emergency system shutdown to prevent Liffy's |
|
6543 internal CF card from corruption. |
|
6544 |
|
6545 4) Morgan |
|
6546 1) Added VARMLA variant and bigendian support |
|
6547 |
|
6548 5) Graham |
|
6549 1) Changed variant structure for VARMCL, VARMPB, VARMPC, |
|
6550 VARMPD, VARMP1, VARMP2, VARMS1, VARMLA. |
|
6551 |
|
6552 The variant object is now created on the kernel heap. |
|
6553 This allows the variant code to have state and will |
|
6554 result in many simplifications of code that interacts |
|
6555 between variant and architecture layers. It will also |
|
6556 allow for improved customisation possibilities for |
|
6557 our licensees. |
|
6558 |
|
6559 Questions concerning historical and cross-platform |
|
6560 binary compatibility are yet to be resolved. |
|
6561 |
|
6562 2) Cleaned up E32STD.H. This now follows the new standard: |
|
6563 |
|
6564 CBase *Function(TDes &aParameter); |
|
6565 becomes |
|
6566 CBase* Function(TDes& aParameter); |
|
6567 |
|
6568 3) Snowball PTR2 varmsb and Delaware varmpg removed. |
|
6569 |
|
6570 6) Petteri |
|
6571 Changes to the text window server: |
|
6572 1) Four different window classes have been reduced into just one. |
|
6573 |
|
6574 2) The notifier server now has a thread of its own and uses text window |
|
6575 server API for its output. |
|
6576 |
|
6577 3) ASCII font has been changed to get the window borders back. |
|
6578 |
|
6579 4) There is now a constant KCONSFULLSCREEN, which can be used to create |
|
6580 a full-size window whatever the size of the screen. |
|
6581 |
|
6582 5) Windows can be moved, resized and scrolled using the mouse or a pen. |
|
6583 |
|
6584 6) OnTop flag has been added. If the flag is set, the window stays on top |
|
6585 of other windows. |
|
6586 |
|
6587 7) The size of notifier windows now depends on the length of the text |
|
6588 which is being displayed. Buttons can have more than just one character |
|
6589 and they are centred. One button option now works properly. Pressing |
|
6590 ESCAPE returns value 0, ENTER returns 1. The notifier window stays on |
|
6591 top of other windows. |
|
6592 |
|
6593 8) Info prints are also variable-sized and they stay on top of other windows. |
|
6594 |
|
6595 9) System.ini files are now read correctly in Unicode build. (Files written |
|
6596 in Unicode cannot be read.) |
|
6597 |
|
6598 10) Colour support has been added. WINS supports a mode EColor256, where a |
|
6599 palette of 256 colours is available. SetTextAttribute() provides an easy |
|
6600 way to display text in colour. The following attributes are available: |
|
6601 ETextAttributeNormal, ETextAttributeBold, ETextAttributeInverse and |
|
6602 ETextAttributeHighlight. Palettes (if supported) can be manipulated and |
|
6603 read with SetPaletteEntry() and GetPaletteEntry(). SetTextColors() changes |
|
6604 colours for text foreground and background. Colours for window background, |
|
6605 window borders and screen background are set with SetUIColors(). |
|
6606 |
|
6607 11) The text window server API has 8 new functions: |
|
6608 TInt SetWindowPosAbs(const TPoint &aPosition) (Sets window position.) |
|
6609 TInt ScreenSize(TSize &aSize) (Returns screensize in characters.) |
|
6610 TInt SetMode(TVideoMode aMode) |
|
6611 void SetPaletteEntry(TUint anIndex,TUint8 aRed,TUint8 aGreen,TUint8 aBlue) |
|
6612 void GetPaletteEntry(TUint anIndex,TUint8 &aRed,TUint8 &aGreen,TUint8 &aBlue) |
|
6613 void SetTextColors(TUint anFgColor,TUint aBgColor) |
|
6614 void SetUIColors(TUint aWindowBgColor,TUint aBorderColor,TUint aScreenColor) |
|
6615 void SetTextAttribute(TTextAttribute anAttribute) |
|
6616 |
|
6617 Version 1.02.123 |
|
6618 ================ |
|
6619 (Made by Jonathan, 27th January 1998) |
|
6620 |
|
6621 1) Alastair |
|
6622 1) Changed MNT.BAT so that no attempt is made to release PDB files for |
|
6623 WINS and WINC release builds, because MAKMAKE generated makefiles do |
|
6624 not create them by default. |
|
6625 |
|
6626 2) Removed references to defunct directory \e32\dmedia from MNT.BAT. |
|
6627 |
|
6628 2) Jonathan |
|
6629 1) Drain the Snowball 1 digitizer FIFO before enabling its interrupt to |
|
6630 prevent it from generating spurious and unwelcome penup/downs on |
|
6631 startup. |
|
6632 2) P::SetMachineConfiguration() : delete the current password and update |
|
6633 the password from the new configuration. |
|
6634 3) Dropping DTR on Snowball 1's 2nd serial port (the phone port) |
|
6635 asserts the ONKEY signal to the phone, allowing users of that serial |
|
6636 port to turn the phone on/off. |
|
6637 4) Corrected size returned by Custom::XYInputSize() on Snowball(). |
|
6638 5) Hugely simplified the Snowball 1 key data tables. |
|
6639 6) Added special support for the Snowball 1's Off key in the keyboard |
|
6640 driver. But this doesn't work. |
|
6641 7) Belatedly updated kbarm files with support for Snowball 1. |
|
6642 |
|
6643 Version 1.02.122 |
|
6644 ================ |
|
6645 (Made by Graham, 23rd January 1998) |
|
6646 |
|
6647 1) Jonathan |
|
6648 1) Snowball 1. Don't reset the ASIC on startup. |
|
6649 |
|
6650 2) Dennis |
|
6651 1) New serial comms LDD and modified PDDs for all variants. |
|
6652 |
|
6653 2) WINS comms LDD is now separate from the real comms LDDs. WINS LDD lives in |
|
6654 DPWINS directory with the WINS PDD, and is currently the same as the old comms LDD. |
|
6655 |
|
6656 3) Added hooks to KEARM\KE_INT.CPP to allow another operating system to be bolted on to EPOC32. |
|
6657 |
|
6658 4) Added test program T_PTNOS.CPP with LDD D_PTNOS.CPP to test the partner OS hooks. |
|
6659 |
|
6660 5) Added a check to KPEPOC\KP_PROC.CPP to prevent two copies of a fixed-address |
|
6661 process from being created. DPlatProcess::DoCreate will leave with |
|
6662 KErrAlreadyExists if it finds a matching EXE code chunk belonging to a fixed |
|
6663 address process. |
|
6664 |
|
6665 6) Added some more facilities to T_TERM.CPP, including file upload and download |
|
6666 and loopback. |
|
6667 |
|
6668 7) Fixed typo in ARM boot code which caused problems by failing to map in the |
|
6669 CS1 ROM if ROM address 0x10000ec6 (physical) contained zero. |
|
6670 |
|
6671 8) Fixed bug which could cause processes to be run with incorrect domain access |
|
6672 if an interrupt occurs during a reschedule. This caused machine to reset |
|
6673 during heavy keyboard use. |
|
6674 |
|
6675 9) Added missing __NAKED__ declaration to ARM assembler versions of |
|
6676 TDes8::AppendNumUC() and TDes8::AppendNumFixedWidthUC(). |
|
6677 |
|
6678 10) Fixed problem in DThread::Write() (all 3 variants) - it was returning an error |
|
6679 code if the source descriptor had zero length and a null pointer. |
|
6680 |
|
6681 3) Graham |
|
6682 1) Created a new public header file - E32PANIC.H - which |
|
6683 contains the base panic numbers. |
|
6684 |
|
6685 2) Split the test programs off into a new E32TEST |
|
6686 project. |
|
6687 |
|
6688 3) Removed full exception handling from WINS and WINC if running under Windows '95. |
|
6689 E32's exception handling system relies on being able to asynchronously |
|
6690 meddle with another threads context and stack in order to inject a call |
|
6691 to an exception handler into that thread's normal train of execution. This |
|
6692 technique works with NT but Windows 95 is not up to it. It is clear that |
|
6693 not every operating system would be able to handle this. Consider, for example, |
|
6694 the possibility that the thread is inside an OS call when the call is injected. |
|
6695 |
|
6696 4) Alastair |
|
6697 1) Moved build system over to MAKMAKE. The batch files for building E32 are |
|
6698 created by e32tools's BLDMAKE. From the GROUP directory, type BLD or CLEAN |
|
6699 or PREPARE without any arguments for help on how to use the new batch |
|
6700 commands. MAKMAKE has not yet been applied to the build system for MISA, |
|
6701 MX86. CLEAN.BAT uses NMAKE to do its cleaning, so a PREPARE.BAT |
|
6702 needs to have been done first. PREPARE.BAT will make the makefiles and |
|
6703 build the working directories. |
|
6704 |
|
6705 2) Renamed freeze files from .FRZ to .DEF, including CONSMARM.FRZ, CONSMISA.FRZ |
|
6706 and CONSWINS.FRZ. |
|
6707 |
|
6708 3) Removed WINS_UID statements from all source files. |
|
6709 |
|
6710 4) Changed EDLL.O, EXDLL.O, EEXE.O so they are built by separate makefiles |
|
6711 rather than that of EUSER for MARM. |
|
6712 |
|
6713 5) Changed KE_EXE.O so that it is built by a separate makefile rather than |
|
6714 that of EKERN for MARM. |
|
6715 |
|
6716 6) Added SARMBE platform to the build process so big-endian single-process ARM |
|
6717 platform can be built. |
|
6718 |
|
6719 |
|
6720 Version 1.02.121 |
|
6721 ================ |
|
6722 (Made by Graham, 10th Dec 1997) |
|
6723 |
|
6724 1) Dennis |
|
6725 1) Fixed bug whereby CObjectIx::~CObjectIx could crash if Close()ing an object |
|
6726 in the index caused other objects to be removed from the index and thereby |
|
6727 caused the array to be ReAlloc()ed. |
|
6728 |
|
6729 2) Speeded up TInt64 multiply a bit more on the ARM. |
|
6730 |
|
6731 3) Added a mechanism whereby every DFC knows whether or not it is pending. Kern::Add |
|
6732 will now only queue the DFC if it is not already queued. DFCs are flagged unqueued |
|
6733 just before being run. A Queued() function is provided to discover whether a DFC |
|
6734 is currently queued or not, and a Cancel() function is provided to cancel a DFC |
|
6735 which is currently pending. |
|
6736 |
|
6737 4) Added missing break statements to case EConsoleSetTitle and case EConsoleSetSize |
|
6738 in ws_main.cpp |
|
6739 |
|
6740 5) Fixed bug in KBARM\BOOTROM1.S and KBSARM\BOOTROM1.S where a register was being |
|
6741 corrupted (subroutine WordMove corrupts r3) leading to the kernel BSS section not |
|
6742 being correctly zeroed on reset. |
|
6743 |
|
6744 6) Fixed bug in TInt64::GetTReal() ARM machine code version - wrong shift count in one |
|
6745 instruction. |
|
6746 |
|
6747 7) Added new function KFormat() to KS_UTL.CPP to do limited printf-style formatting |
|
6748 without using any EXEC calls. Modified Kern::Printf to use this function instead |
|
6749 of TDes::AppendFormatList(). This enables Kern::Printf to be used in fast exec |
|
6750 calls, interrupts etc. Use a static buffer to receive the formatted string instead |
|
6751 of an automatic one to avoid gobbling a large amount of stack. |
|
6752 |
|
6753 8) Added a new flag ExecMutateFlag which is set by the IRQ and FIQ dispatchers if |
|
6754 an interrupt occurs in SVC mode. The fast executive dispatcher tests this flag on |
|
6755 return from the exec function and if it is set, DFCs and/or a reschedule will be |
|
6756 executed in the same way as for a slow exec call. This fills a hole in the interrupt |
|
6757 scheme whereby if an FIQ occurred during a fast executive call and queued a DFC, |
|
6758 the DFC would not be run before user code was resumed. This flag can also be set |
|
6759 by a fast executive call in order to allow rescheduling to occur. |
|
6760 |
|
6761 9) Changed some executive calls from slow to fast to reduce overhead in the case where |
|
6762 a reschedule is not needed. These are ChunkBase, ChunkSize, ChunkBottom, ChunkTop, |
|
6763 ChunkMaxSize, MutexCount, MutexWait, MutexSignal, ProcessId, ProcessExitReason, |
|
6764 ProcessExitType, ProcessExitCategory, ProcessPriority, ProcessFlags, SemaphoreCount, |
|
6765 SemaphoreWait, SemaphoreSignal1, ServerReceive, SessionSend, ThreadId, |
|
6766 ThreadPriority, ThreadProcessPriority, ThreadFlags, ThreadExitType, ThreadExitReason, |
|
6767 ThreadExitCategory, ThreadRequestCount, ThreadRequestComplete, WaitForAnyRequest |
|
6768 and SvSendReceive. |
|
6769 |
|
6770 10) Use a different stack for IRQs (IrqStack) rather than the reentrant stack. This |
|
6771 allows IRQs to be enabled during a fast executive call. ThreadRequestComplete, |
|
6772 SessionSend, SvSendReceive, ServerReceive enable IRQs during their execution. |
|
6773 |
|
6774 11) Modified the exception handling mechanism. All exceptions are now placed into |
|
6775 one of three categories: |
|
6776 |
|
6777 Fatal (exceptions in IRQ, FIQ or ABT mode) - these always cause a kernel fault |
|
6778 Critical (SVC mode or UND mode with the kernel locked) - these cause a kernel |
|
6779 fault unless exception trapping is enabled (DThread::iExceptionErrorCode) |
|
6780 Noncritical (user mode or UND mode with the kernel unlocked) - these are handled by |
|
6781 exception trapping, thread exception handler, global exception handler |
|
6782 in that order. If none of these is active, the current thread is paniced, |
|
6783 and if that thread has the system flag set a kernel fault results. |
|
6784 |
|
6785 12) If an exception occurs while the kernel is locked, DFCs will not be run at the end |
|
6786 of the exception handler. |
|
6787 |
|
6788 13) PD Variant::Init3() now sets CS1 ROM size to 4Mb and total ROM size to 8Mb. |
|
6789 |
|
6790 |
|
6791 2) Morgan |
|
6792 1) Renamed Dll::Data to Dll::InitialiseData() |
|
6793 2) Fixed zeroing bss for Dll data in ROM |
|
6794 |
|
6795 |
|
6796 Version 1.02.120 |
|
6797 ================ |
|
6798 (Made by Jonathan, 24th Nov 1997) |
|
6799 |
|
6800 1) Pete |
|
6801 A) Various changes to PC Card Controller to fully support I/O cards as well as memory cards:- |
|
6802 |
|
6803 1) Added a new (exported) PC card controller function - |
|
6804 TInt DPcCardCntrl::RestoreCardPower(TSocket aSocket, TInt aResetProfile). |
|
6805 This re-applies power to a PC Card which has previously been successfully powered by the system. |
|
6806 If a media change has occurred on the socket since it was last powered then function will |
|
6807 immediately return KErrGeneral. The power up process is the same as carried out by the controller |
|
6808 function PowerUpCard() - wait up to 2.5Secs for card to become ready using specified reset |
|
6809 profile. However, this function doesn't implement a TRequestStatus mechanism when complete. |
|
6810 It is left to the caller to poll the card status. If the card had previously been configured when |
|
6811 powered and the configuration options allow the configuration to be restored (see 3) then the |
|
6812 card will be reconfigured automatically when it is re-powered. |
|
6813 2) Modified the PC card controller function DPcCardCntrl::PowerUpCard() so that, like RestoreCardPower() |
|
6814 it re-configures PC cards which were previously configured when the card was powered down if a media |
|
6815 change hasn't happened since. Also, the optional last parameter (was TInt aResetLen, now TInt |
|
6816 aResetProfile) now specifies both the reset length and a pause after the card becomes ready. The upper |
|
6817 16bit word specifies a pause period (in 20mS units) after the card signals it is ready before the |
|
6818 controller updates the socket status (and TRequestStatus is signalled). The lower 16bit word specified |
|
6819 the length of the reset pulse (also in 20mS units) applied to the card. |
|
6820 3) Added a new version of the PC card controller function DPcCardCntrl::RequestConfig(). The new |
|
6821 version has an additional parameter 'TUint aFlag' (the old version is now obsolete). The only |
|
6822 flag currently defined is 'KPccdConfigRestorable' which is set if the config may be restored |
|
6823 automatically by the controller if the card is re-powered (see 1 and 2). |
|
6824 4) Added new values to TPccdSocketStatus (to support 1,2 and 14). This can now have the following |
|
6825 values:- |
|
6826 - ESocketFullyOff: Card not present or present but not yet powered. |
|
6827 - ESocketPoweredDown: Card present, not currently powered but has been powered |
|
6828 and could be restored to previous configuration (ie no media change |
|
6829 since it was last powered). |
|
6830 - ESocketBatTooLow: Card present, but not currently powered. A previous attempt to |
|
6831 power the card failed because the main battery voltage was too low. |
|
6832 - ESocketNotReset: Card present and powered, waiting for it to become ready. |
|
6833 - ESocketReady: Card present, powered and ready. |
|
6834 - ESocketCorruptCard: Card present but not powered since it cannot be recognised by |
|
6835 controller (not used yet). |
|
6836 5) Changed the PC card controller event type that causes the mount status of TLocalDrive objects |
|
6837 (associated with PC card media) to be updated. Before, the status was updated on a power-up |
|
6838 event (EPccdEvPwrUp) meaning that any subsequent access to the TLocalDrive object would |
|
6839 be preceded by a remount. Having it on power-up rather than power-down meant the media drive |
|
6840 system only had to bind to one event rather than EPccdEvPwrDown and EPccdEvEmergencyPwrDown. |
|
6841 This however meant it was not possible to power-down cards during periods of inactivity. The |
|
6842 media drive system now binds to power-down events. |
|
6843 6) Change to ATA media driver (MEDATA) on ARM architectures brought about by the emergency power |
|
6844 down changes in E32-V115. The driver was bound to the PC card controller emergency power down |
|
6845 event. Since the driver's event callback is now called on a DFC, changes have been necessary |
|
6846 to handle card writes aborted by emergency power down. |
|
6847 7) Added a new (exported) PC card controller function - |
|
6848 TInt DPcCardCntrl::SetEvent(TSocket aSocket, TPccdEvent anEvent, TInt anInfo); |
|
6849 This allows drivers etc to generate PC card events. It also allows extra info to be passed to |
|
6850 callback functions via 'anInfo' (see 8 below). |
|
6851 8) TPccdCallBack has an extra member 'TInt iCallBackInfo' which can be used to provide extra info. |
|
6852 on a PC card controller event. Extra info on the reason for card power down is now provided in |
|
6853 iCallBackInfo for EPccdEvPwrDown events. |
|
6854 9) The following functions have been added to the custom DLL:- |
|
6855 TPtrC PcCardMediaChangeIntSource(TInt aMediaChange) |
|
6856 void ClearPcCardMediaChangeInt(TInt aMediaChange) |
|
6857 TMediaState PcCardMediaState(TInt aMediaChange); |
|
6858 Prior to these changes the PC card controller media change implementation was completely |
|
6859 implemented in the architecture level and above, meaning that variations to the media change |
|
6860 system couldn't be handled without a new architecture. |
|
6861 Also added an additional member 'TInt iMediaDoorCloseDelay' to 'TPccdCntrlMachineInfo' (returned by the |
|
6862 custom function PcCardMachineInfo()) which allows the media door switch de-bounce parameter to be specified |
|
6863 in the custom. |
|
6864 10) Support for dual voltage PC Card sockets added. These are sockets where the VCC voltage can be |
|
6865 altered depending on the type of card detected (typically 3.3V or 5V). The system implemented, |
|
6866 initially sets the socket VCC depending on the voltage setting indicated by the cards VS (voltage sense) |
|
6867 signals. Dynamically changing the socket VCC once the card is powered (in response to information in |
|
6868 a card's CIS etc) is not supported. |
|
6869 11) Added a new (exported) PC card controller function - |
|
6870 TPccdSocketVcc DPcCardCntrl::SocketVcc(TSocket aSocket); |
|
6871 This returns the current VCC setting for the specified socket. Note that this function |
|
6872 returns info on its current VCC setting even when the supply is turned off. |
|
6873 12) Generally tidy up of the ARM PC card controller VCC implementation. Additions of the following |
|
6874 function to custom DLL:- |
|
6875 PcCardVccInfo(TInt aPsu,TPccdCntrlVccInfo &aninfo). |
|
6876 TPccdCntrlVccInfo is defined:- |
|
6877 class TPccdCntrlVccInfo |
|
6878 { |
|
6879 public: |
|
6880 TUint iVoltageSupported; |
|
6881 TInt iMaxCurrentInMicroAmps; |
|
6882 TUint iVoltCheckInterval; |
|
6883 TPccdPsuVoltChkMthd iVoltCheckMethod; |
|
6884 }; |
|
6885 This specifies the voltage(s) that the supply supports (5V,3.3V etc), the maximum current |
|
6886 it can supply, when the o/p of the supply should be checked (once when first turned on, |
|
6887 or continuously while on) and how the voltage should be check (via the ADC channel reserved |
|
6888 for the PC card controller or via a variant layer function). |
|
6889 13) TPcCardPsu renamed to TPcCardVcc since it now has functionality which could |
|
6890 only be attributed to a VCC supply (eg 10&12 above) rather than a generic PC Card supply. |
|
6891 14) Added an additional member 'TInt iDisableOnLowBattery' to 'TPccdCntrlMachineInfo' (returned by the |
|
6892 custom function PcCardMachineInfo()). This can be used to set a battery level (see TSupplyStatus) such that |
|
6893 if the main battery level is below this level, the PC card controller will no longer power up |
|
6894 any PC cards. Set to EZero to disable this feature. |
|
6895 15) Fixed problem clearing PC Card IREQ interrupts on ARM. On ARM platforms the PC card controller |
|
6896 IREQ interrupt service routine was clearing the interrupt in the controller hardware (ETNA) |
|
6897 before calling any ISRs bound by drivers. Since it is generally the driver ISR which clears |
|
6898 the source of the interrupt on the card you end up with a second bogus IREQ interrupt. This |
|
6899 only occurs when 'level mode' interrupts are enabled, not 'pulse mode'. Pulse mode interrupts |
|
6900 are selected if supported which is why the problem was only discovered so late in the day. |
|
6901 16) Changed the reset timing when powering up a PC card. Now:- Apply reset for 100mS, wait up to 2.5Seconds |
|
6902 for card to become ready, delay any access to the card for a further 100mS after ready. (Was:- apply reset |
|
6903 for 60mS, wait 2.5Seconds for ready and no delay on subsequent access). |
|
6904 17) Fixed problem in PC card serial port PDD where the destructor could be called before the member |
|
6905 'iSocket' was initiated. The destructor calls PcCardCntrl::PowerDownCard(iSocket). This was |
|
6906 a particular problem on rack D where the PC card socket is socket 1 (CF card socket is socket 0) |
|
6907 and the rack hw doesn't fully isolate the two sockets. Certain comms programs attempt to open a channel |
|
6908 on the PC card serial port while a channel is already open on this device. These subsequent attempts fail |
|
6909 calling the PDD destructor which then was incorrectly powering off the wrong socket. Due to the h/w |
|
6910 implementation, this was actually resulting in the serial PC card being reset. |
|
6911 18) Fixed a problem affecting EXTFIQ. Once you bound a TInterrupt to EXTFIQ it was not possible to unbind |
|
6912 again. |
|
6913 19) Added the following test programs to TPCCD:- |
|
6914 i)T_MEDCH (and associated LDD MEDCH.LDD): Soak test of Compact Flash (ATA) - h/w media changes. |
|
6915 ii)T_EXTFIQ (and associated LDD EXTFIQ.LDD): Continuously generates EXTFIQ on rack D using EXTFIQ.LDD. |
|
6916 iii)T_BEXFIQ (and associated LDD BEXFIQ.LDD): Generates EXTFIQ on rack D, associated LDD binds and clears |
|
6917 FIQ. |
|
6918 Also modified DRVSOAK to better support emergency power down testing. |
|
6919 |
|
6920 B) Modification to serial comms in order to support PC card serial devices:- |
|
6921 |
|
6922 20) Added mechanism for opening a channel on a PC Card I/O device. These devices requires an asynchronous |
|
6923 power-up of the card before the standard channel open mechanism can take place. In the case of some PC |
|
6924 Cards (e.g. Serial port cards) there needs to be a further asynchronous phase after creating the PDD |
|
6925 before the channel is fully open. |
|
6926 Added a kernel slow exec function:- |
|
6927 TInt RLogicalChannel::CheckOpenMode(const TDesC &aLogicalDevice,const TVersion &aVer,TInt aUnit); |
|
6928 This is called once each time a channel is opened. If the return value is <0 then the open proceeds as |
|
6929 normal. Otherwise, it indicates that a 1 or 2 phase asynchronous open is required. (This function would |
|
6930 normally ripple down to the custom DLL). |
|
6931 Added a kernel supervisor function:- |
|
6932 TInt RLogicalChannel::DoSlowOpen(TInt aMode,TInt anInfo,TRequestStatus &aStatus); |
|
6933 This initiates the asynchronous parts of the operation. 'aMode' is either KChanSlowOpenPhase1 or |
|
6934 KChanSlowOpenPhase1 to indicate whether its the aynchronous phase before or after the normal open. 'anInfo' |
|
6935 is derived from the value returned from CheckOpenMode() and normally indicates the PC Card socket in |
|
6936 question. TInt RLogicalChannel::DoCreate() has been modified to include these extra operations. |
|
6937 An extra pure virtual function:- |
|
6938 TInt DComm::CompleteSlowOpen(DThread *aThread,TRequestStatus *aReqStat); |
|
6939 had to be added to DComm in order to implement the 2nd asynchronous open phase. |
|
6940 21) Modified PC card serial port PDD to take advantage of the above PDD open scheme (20) so that the PDD now |
|
6941 fully controls the PC card. (Before it relied on the media system having already powered up the PC Card and |
|
6942 didn't properly perform the 2nd part of the initialisation). Also modified the PDD so that it re-applies |
|
6943 power and re-configures the Serial PC Card each time the system comes out of standby (eg machine switched |
|
6944 off, emergency power down etc). |
|
6945 22) Changes to LDD to handle PC Card media change events (ie media door open or card removal - dependant on |
|
6946 platform). |
|
6947 As far as I can gather, in the serial LDD, iStatus==EClosed never occurs. I now force the LDD into |
|
6948 this state from a PC Card PDD when a media change is detected. The serial port now needs to be disabled |
|
6949 (for good) because it has been powered down (and in all likelyhood removed). Once in this state |
|
6950 you never should to change to any other state. Any write requests return with KErrNotReady which hopefully |
|
6951 will give any client a clue that they shouldn't have removed the PC card serial port while using it. This |
|
6952 is an intermediate solution. The eventual plan (involving a the invention of a new RDevCom type class) will |
|
6953 handle the media change and re-power the serial PC card (if still there) before any requests get down to |
|
6954 the LDD. However, you need an asychronous supervisor kernel call to restore a PC card after media change |
|
6955 which can't be acheived with the present scheme. It is possible to re-power the PC card when coming out of |
|
6956 standby (machine turned off etc) because you know the same PC card is still present and hence you don't |
|
6957 need to alter any memory allocation associated with the card. |
|
6958 23) Modified PC card serial port PDD to enable serial interrupts for modem signal status changes (CTS,DCD,DSR, |
|
6959 RI). Prior to this, h/w flow control wasn't supported on this serial device. |
|
6960 24) Modified PC card serial port PDD to update system current consumption info. This info is derived from the |
|
6961 PC card CIS where possible. |
|
6962 25) Modified PC card serial port PDD to determine its baudrate capabilities from 'max baudrate supported' field |
|
6963 (if present) in the CIS. Also, limit baudrate (capabilities) to 19200 if serial card doesn't contain a FIFO. |
|
6964 26) Added the following test programs to TCOMM:- |
|
6965 i)T_MODEM1: Test code for PC Card Modem Serial Ports (analogue loopback). |
|
6966 ii)T_COMSOAK1: Serial port soak test program (requires loopback connector). |
|
6967 iii)T_AMPV: Approval test code for PC Card Adapter. |
|
6968 iv) T_MODEM2: T_SERIAL for PC card serial port. Instead of looping COM1 to COM2(Etna) it loops |
|
6969 COM1 to COM3 expecting a PC Card Socket I/O Serial card. |
|
6970 Also modified T_TERM so it can be used to open a channel on COM3. (Also added extra error reporting). |
|
6971 |
|
6972 2) Jonathan |
|
6973 1) Old Snowball variant SA retired. |
|
6974 2) New Snowball variant S1 for Prototype 3 units. Major changes from SB: |
|
6975 - Combined PDD for Eiger and ASIC serial ports using shared modem |
|
6976 status interrupt. |
|
6977 - Variant-specific LDD for use on ASIC serial port only - implements |
|
6978 Spark phone's weird CTS handshaking. |
|
6979 - QuickEmergencyStandby handler. |
|
6980 3) New PhysicalScreenWidth and PhysicalScreenHeight values for |
|
6981 \epoc32\data\system.ini, see kpwins\kp_gui.cpp . |
|
6982 4) Prevented *\va_sdrv.cpp from trying to Disable or UnBind when unbound |
|
6983 from its interrupt. |
|
6984 |
|
6985 |
|
6986 Version 1.02.119 |
|
6987 ================ |
|
6988 (Made by Morgan, 7th Nov 1997) |
|
6989 |
|
6990 1) Alastair |
|
6991 1) SARM |
|
6992 Integrated Single-process code into e32 source allowing SARM roms to be |
|
6993 created. Build commands are mnt sarm, sarmall, sarmrel etc. There are no |
|
6994 releaseables and no facilities for building test programs. SARM builds |
|
6995 use the "__SINGLE__" macro for distinguishing Single-process-specific |
|
6996 code. Work directories are \epoc32\build\e32\sarm\[build] and |
|
6997 \epoc32\release\sarm\[build]. SARM makefiles are generated into |
|
6998 \e32\bsarm using perl to process makefiles from \e32\bmarm as a |
|
6999 temporary measure prior to the use of makmake for creating e32 |
|
7000 makefiles. SARM roms are built from directory \e32\kbsarm, and require |
|
7001 a special version of rombuild - the makefile for this special version |
|
7002 will be released with e32tools version 082. |
|
7003 |
|
7004 Major changes |
|
7005 a) \e32\kbsarm - contains special versions of bootrom1.s and rom.oby. |
|
7006 |
|
7007 b) \e32\inc - changes to e32rom.h, k32std.h, m32mmu.h, m32std.h and |
|
7008 v32eiger.h so that different linear address constants are defined |
|
7009 for __SINGLE__ builds. |
|
7010 |
|
7011 __SINGLE__ (MULTI) |
|
7012 KRomHeaderLinAddr 0x00000000 0x50000000 |
|
7013 KSuperPageLinAddr 0xC0000000 0x40000000 |
|
7014 KHomeBase 0xC0000000 0x80000000 |
|
7015 KHomeEnd KHomebase+0x3fffff 0xffffffff |
|
7016 KHwLinBase 0xa0000000 0x60000000 |
|
7017 KHwLinEnd 0xbfffffff 0x7fffffff |
|
7018 KEigerBaseAddress 0x80000000 0x58000000 |
|
7019 |
|
7020 c) \e32\kpepoc\kp_chk.cpp - __SINGLE__ chunks are allocated in the kernel's |
|
7021 heap - they cannot change in size and don't move. Since SARM roms do not |
|
7022 utilise the MMU. The actual size of a chunk is a compromise between the |
|
7023 initial and maximum sizes requested when a chunk is created. |
|
7024 |
|
7025 File changes |
|
7026 d) bsarm\* |
|
7027 dpepoc\d_medint |
|
7028 group\mnt.cmd |
|
7029 inc\ - e32rom.h, k32std.h, m32mmu.h, m32std.h, v32eiger.h |
|
7030 kbsarm\* |
|
7031 kearm\ - ke_ini, ke_int, ke_mmu, ke_utl |
|
7032 kpehal\ - kph_inf, kph_pic |
|
7033 kpemmu\ - kpm_mmu.cpp |
|
7034 kpepoc\ - kp_chk, kp_ini, kp_proc, kp_reg, kp_std.h, kp_thrd, kp_utl |
|
7035 ksrc\ - ks_svr, ks_utl |
|
7036 varmpd\va_hw |
|
7037 wsrc\wd_eiger |
|
7038 |
|
7039 2) Added UNICODE.H to e32\inc\incc.prj so that the file is released. |
|
7040 |
|
7041 3) Changed WINS command line processing such that only switches specified |
|
7042 before "--" is encountered are processed. Switches after the "--" switch, |
|
7043 or all switches if the "--" switch is not specified, are ignored. |
|
7044 |
|
7045 4) Added -L<language Index> switch to WINS command line so that |
|
7046 different Epoc locales can be specified. Eg "WSEXE -L5 --" will |
|
7047 mean that elocl5.dll rather than elocl.dll is loaded. |
|
7048 |
|
7049 2) Dennis |
|
7050 1) Rewrote MMU code. Major changes are: |
|
7051 i) Linear address map has changed - see file KEARM\KE_MMU.CPP |
|
7052 ii) RAM drive is at fixed linear address but no longer composed of consecutive |
|
7053 physical RAM pages. |
|
7054 iii) The free page pool has been removed. |
|
7055 iv) The ROM is mapped with section descriptors on the ARM instead of 4K pages. |
|
7056 v) Chunks can be adjusted in place rather than only in the home section. |
|
7057 vi) On the ARM extra protection has been added for page tables, registry |
|
7058 and RAM drive. |
|
7059 vii) ROM layout is different - the kernel data is at 80000000, followed by |
|
7060 static data for fixed-address ROM processes (see below). The kernel |
|
7061 stack follows the last fixed-address data chunk, and the home section |
|
7062 starts with the kernel stack chunk. |
|
7063 |
|
7064 2) Modified process handling and scheduling: |
|
7065 i) Now have two classes of process. One class has its chunks mapped down |
|
7066 into the data section while running, the other class has its chunks |
|
7067 at the same linear address all the time. The latter class is used for |
|
7068 system servers. It reduces the need for cache flushing - this is only |
|
7069 required if any chunks have moved - and thus gives a considerable speed |
|
7070 increase. |
|
7071 ii) ROM fixed address processes specified in .OBY file |
|
7072 RAM fixed address processes specified by setting KImageFixedAddressExe flag |
|
7073 iii) On the ARM, a domain will be allocated to every fixed-address process. |
|
7074 All the process' local chunks will be located in this domain. In addition, |
|
7075 every global chunk created by a fixed-address process will be allocated |
|
7076 a domain. The use of domains removes the need for page directory |
|
7077 manipulation when switching between these processes. |
|
7078 iv) The scheduler has been machine coded for ARM and ISA. Actions performed |
|
7079 on switching between processes now depend on the attributes of these |
|
7080 processes. |
|
7081 |
|
7082 3) Added ARM machine coded message passing and semaphore code. |
|
7083 |
|
7084 4) Modified inter-process reading and writing code. Two functions have been added: |
|
7085 i) TAny* DPlatThread::CurrentAddress(TAny *anAddress); |
|
7086 This function returns the current linear address corresponding to an |
|
7087 address in the thread's address space. No translation is done for addresses |
|
7088 above 0x40000000 or if the thread's process is currently running. |
|
7089 This function is used to convert addresses for reading. |
|
7090 ii) TAny* DPlatThread::CurrentAddress(TAny *anAddress, TInt& aMaxSize); |
|
7091 This function returns the current linear address corresponding to an |
|
7092 address in the thread's address space and also the maximum size of a write |
|
7093 to the thread's address space (end of chunk - specified address). |
|
7094 Chunk lookup is always performed. |
|
7095 This function is used to convert addresses for writing. |
|
7096 |
|
7097 5) Kernel faults now restart the system from the reset vector. The MMU backup |
|
7098 page has been removed. |
|
7099 |
|
7100 6) Added double-ended chunks. These are regions of memory where the committed |
|
7101 region can start at any address in the reserved range, rather than always starting |
|
7102 at the base of the reserved range. Added functions |
|
7103 i) RChunk::CreateDoubleEndedLocal() |
|
7104 Create a local double-ended chunk with a specified maximum size and |
|
7105 a specified initial committed region. |
|
7106 ii) RChunk::CreateDoubleEndedGlobal() |
|
7107 Create a global named double-ended chunk with a specified maximum size and |
|
7108 a specified initial committed region. |
|
7109 iii) RChunk::AdjustDoubleEnded() |
|
7110 Adjust the position and/or size of the committed region. If the initial |
|
7111 and final regions intersect, the contents of the intersection are |
|
7112 unchanged. Other parts of the committed region have undefined contents. |
|
7113 iv) RChunk::Bottom() |
|
7114 Returns the offset of the base of the committed region from the base of |
|
7115 the reserved region (RChunk::Base()). |
|
7116 v) RChunk::Top() |
|
7117 Returns the offset of the top of the committed region from the base of |
|
7118 the reserved region. ( Top() = Bottom()+Size() ) |
|
7119 RChunk::Size() always returns the size of the committed region. |
|
7120 |
|
7121 7) Extended the CBitMapAllocator class. Functions added are: |
|
7122 i) TInt Alloc(TInt aCount, TInt& aConsecutive) |
|
7123 Allocates from the first free position as many consecutive positions as |
|
7124 possible, up to aCount. Returns the first free position, and aConsecutive |
|
7125 equal to the number of positions allocated. |
|
7126 ii) TInt AllocAligned(TInt anAlignment) |
|
7127 Allocates a position whose number is an exact multiple of 2^anAlignment. |
|
7128 iii) TInt AllocAlignedBlock(TInt anAlignment) |
|
7129 Allocates a block of 2^anAlignment consecutive positions such that the |
|
7130 first position is an exact multiple of 2^anAlignment. Returns the |
|
7131 first position. |
|
7132 iv) AllocAt(TInt aPos, TInt aCount) |
|
7133 Allocates aCount positions starting at aPos. |
|
7134 v) Free(TInt aPos, TInt aCount) |
|
7135 Frees aCount positions starting at aPos. |
|
7136 iv) TBool IsFree(TInt aPos, TInt aCount) |
|
7137 Returns TRUE if and only if positions [aPos,aPos+aCount) are all free. |
|
7138 |
|
7139 8) Modified Math::Sin, Math::Cos and Math::Tan functions to return exact answers |
|
7140 when input values are exact multiples of pi/2. This is done by adding tests of |
|
7141 the form |
|
7142 IF ( ABS(x MOD pi) < 2^-52 * ABS(x) ) |
|
7143 return exact answer |
|
7144 ELSE |
|
7145 do calculation as before |
|
7146 ENDIF |
|
7147 |
|
7148 9) Modified TTime::Convert(const TDateTime&) and TTime::DateTime() in order |
|
7149 to minimise the number of divisions involved and to use 32 bit arithmetic |
|
7150 rather than 64 bit wherever possible. The latter of these functions gets |
|
7151 called frequently by the window server on a periodic timer. |
|
7152 |
|
7153 10) Added functions TDes8/TDes16 :: (Append)NumFixedWidth(UC) |
|
7154 These convert 32-bit integers to descriptors in a specified radix, adding leading |
|
7155 zeros up to the specified field width. These are intended to replace calls of |
|
7156 the form |
|
7157 des.Format(_L("%08x"),value) |
|
7158 which are very inefficient. All Format() calls in E32 have been replaced, apart |
|
7159 from the ones which use an overflow handler. |
|
7160 |
|
7161 11) Fixed problem with comms driver causing reset if an interrupt occurs while the |
|
7162 kernel server is closing a comms channel. This was caused by the interrupt queuing |
|
7163 a DFC which refers to the comms channel being closed. The DFC runs after the |
|
7164 kernel server has deleted the channel, and resets the machine when it tries to |
|
7165 access the nonexistent channel. |
|
7166 |
|
7167 12) Files changed: |
|
7168 dcomm\ d_comm.cpp |
|
7169 dpepoc\ d_medint.cpp |
|
7170 dvideo\ ws_disp.cpp |
|
7171 inc\ e32base.h, e32des8.h, e32des16.h, e32rom.h, e32std.h, e32svr.h, |
|
7172 k32std.h, k32std.inl, m32std.h, m32std.inl, m32hal.h, u32std.h, v32eiger.h |
|
7173 m32mmu.h and m32mmu.inl have been removed |
|
7174 kbarm\ bootrom1.s, rom.oby |
|
7175 kbx86\ boot486.asm, bootrom.asm, build.cmd, e32d.oby, e32r.oby, m486.bat, |
|
7176 romdefs.inc, romhead.inc |
|
7177 kbsarm\ bootrom1.s |
|
7178 kearm\ ke_dat.cpp, ke_dbg.cpp, ke_ini.cpp, ke_int.cpp, ke_mmu.cpp, ke_pccd.cpp, |
|
7179 ke_pic.cpp, ke_psu.cpp, ke_std.h, ke_thrd.cpp, ke_utl.cpp |
|
7180 ke_all.cpp deleted, ke_sched.cpp added |
|
7181 keisa\ ke_dat.cpp, ke_dbg.cpp, ke_ini.cpp, ke_int.cpp, ke_mmu.cpp, ke_pccd.cpp, |
|
7182 ke_std.h, ke_thrd.cpp, ke_utl.cpp |
|
7183 ke_all.cpp deleted, ke_sched.cpp added |
|
7184 kex86\ ke_exc.cpp, ke_ini.cpp, ke_int.cpp, ke_mmu.cpp, ke_std.h, ke_thrd.cpp, |
|
7185 ke_utl.cpp |
|
7186 ke_all.cpp deleted |
|
7187 kpehal\ kph_dbg.cpp, kph_inf.cpp, kph_pic.cpp |
|
7188 kpemmu\ kpm_mmu.cpp |
|
7189 kpm_all.cpp, kpm_regn.cpp, kpm_sect.cpp deleted |
|
7190 kpepoc\ kp_chk.cpp, kp_dat.cpp, kp_dev.cpp, kp_ini.cpp, kp_proc.cpp, kp_reg.cpp, |
|
7191 kp_sched.cpp, kp_sem.cpp, kp_thrd.cpp, kp_utl.cpp |
|
7192 kpwins\ kp_chk.cpp, kp_ini.cpp, kp_proc.cpp, kp_std.h, kp_thrd.cpp, kp_utl.cpp |
|
7193 ksrc\ ks_chk.cpp, ks_exec.cpp, ks_ldd.cpp, ks_lib.cpp, ks_mes.cpp, ks_pdd.cpp, |
|
7194 ks_proc.cpp, ks_svr.cpp, ks_thrd.cpp, ks_utl.cpp |
|
7195 ubas\ ub_bma.cpp, ub_obj.cpp, ub_std.h |
|
7196 ucdt\ uc_des8.cpp, uc_des16.cpp, uc_exec.cpp, uc_func.cpp, uc_ksvr.cpp, |
|
7197 uc_reg.cpp, uc_std.h, uc_time.cpp |
|
7198 umath\ um_rtod.cpp, um_sin.cpp, um_tan.cpp |
|
7199 upmarm\ up_des8.cpp, up_exec.cpp, up_utl.cpp |
|
7200 upmx86\ up_exec.cpp |
|
7201 upwins\ up_exec.cpp |
|
7202 vx86pc\ vx_vga.cpp |
|
7203 |
|
7204 |
|
7205 3) Morgan |
|
7206 1) Added dll process attach and detach for ARM and X86 builds |
|
7207 2) Added RThread::Context(TDes8 &aDes) to retrieve the register contents of |
|
7208 a sleeping thread. |
|
7209 3) Added RChunk::ReserveAt(TUint8 *) to force allocation of a chunk at the |
|
7210 specified linear address. |
|
7211 4) Ldd/Pdds with static data was broken. Now fixed. |
|
7212 5) Loading Dlls with writable static data now allocates a Data/Bss chunk |
|
7213 and offers it to F32 to be fixed up. |
|
7214 6) Added TInt Dll::Data() to initialise Dll writable static data |
|
7215 |
|
7216 |
|
7217 Version 1.02.118 |
|
7218 ================ |
|
7219 (Made by Jonathan, 15th October 1997) |
|
7220 |
|
7221 1) Dennis |
|
7222 1) Rewrote CObjectIx, CObjectCon and CObjectConIx classes to do their own |
|
7223 array handling instead of using CArrayFixFlat. |
|
7224 |
|
7225 2) Added ARM machine-coded versions of CObjectIx::At, CObjectIx::operator[], |
|
7226 CObjectCon::At and CObjectCon::operator[]. |
|
7227 |
|
7228 3) Added ARM machine-coded versions of CActiveScheduler::Start() and |
|
7229 CServer::RunL(). |
|
7230 |
|
7231 4) Removed CArrayFixFlat from DPlatProcess. Custom array handling code is now |
|
7232 used to store the chunks being used by a process. |
|
7233 |
|
7234 5) Added ARM machine-coded versions of some commonly used fast Exec:: calls and |
|
7235 of DPlatProcess::LookupChunk(). |
|
7236 |
|
7237 2) Morgan |
|
7238 1) Added -M<machineName> switch to WINS command line to pick up |
|
7239 alternate System ini files from \epoc32\Data. eg WSEXE -Mfungus |
|
7240 will use \epoc32\data\fungus.ini |
|
7241 2) Froze the Custom Dll against V1.01 E32(114) |
|
7242 3) Froze the Variant Dlls (P1,P2,PB,PC,PD,PG,SA,SB,CL) against V1.01 E32(114) |
|
7243 |
|
7244 3) Jonathan |
|
7245 1) Changed Snowball A & B physical screen size to 4.4"x1.375". |
|
7246 2) New TSAsic::SetCrystalSpeed function in varmsb\va_sasic.cpp. |
|
7247 3) Added cakysbd keyboard driver for Snowball B which has a, b, z and : |
|
7248 instead of arrow keys. |
|
7249 4) Snowball B variant autodetects 4MB or 8MB ROM, 1MB or 4MB RAM |
|
7250 5) New Hal::StartupReason() type EStartupSafeReset. Currently this is only |
|
7251 returned by Snowballs when "Home" and "Back" are pressed at boot. |
|
7252 6) Replaced Variant::ColdReset with more general Variant::StartupReason. |
|
7253 This breaks Morgan's variant & custom freezes against 114 for this one |
|
7254 function, but that's OK because the kernel really is the only component |
|
7255 that should be calling this. |
|
7256 7) New UserSvr::ResetMachine(TMachineStartupType) function. Currently only |
|
7257 allows a reset type of EStartupWarmReset. Implemented by generating a |
|
7258 TPlatFault::ESoftwareWarmReset. After the reset the kernel may |
|
7259 actually report a reason other than EStartupWarmReset if either: |
|
7260 - EStartupWarmReset isn't supported (mx86/misa/wins) |
|
7261 - The variant supports munging of reset types, ie by holding down |
|
7262 keys at boot, and those keys are held down (various marm variants). |
|
7263 8) New custom and parent functions AutoSwitchOffType, which returns |
|
7264 ESwitchOffEvent on Snowballs A & B, ESwitchOffHard on other variants. |
|
7265 9) New TRawEvent::ESwitchOff. The kernel generates this at auto-switchoff |
|
7266 time instead of just switching off if the above function returns |
|
7267 ESwitchOffEvent. The window server (or one of its clients) must call |
|
7268 UserHal::SwitchOff fairly soon after receiving this event. Made the |
|
7269 text window server do this. Auto-switchoff is still disabled by default |
|
7270 on Snowballs A & B becuase wakeup is still broken. |
|
7271 |
|
7272 |
|
7273 4) Matthew |
|
7274 1) Enabled hardware filtering on SA and SB digitisers. Also boosted |
|
7275 sampling rate to 112 pps. |
|
7276 |
|
7277 2) Changed SB variant so that the san-disk is mapped to InternalMedia0 |
|
7278 (ie C:). Make sure you get rid of MEDINT.PDD from your .oby file when |
|
7279 building roms, or F32 will pick this up and you will still have the |
|
7280 ram disk as C:. |
|
7281 |
|
7282 |
|
7283 Version 1.02.117 |
|
7284 ================ |
|
7285 (Made by Jonathan, 5th September 1997) |
|
7286 |
|
7287 1) Dennis |
|
7288 1) Rewrote Math:: transcendental functions to use simpler algorithms |
|
7289 and to run faster. All functions now use polynomial approximations |
|
7290 instead of rational functions. |
|
7291 |
|
7292 2) Added Math::PolyX function to do fast polynomial evaluation using |
|
7293 TRealX for argument, coefficients and result. |
|
7294 |
|
7295 3) Updated T_R64BM to benchmark more functions and to use a range of |
|
7296 different argument values. |
|
7297 |
|
7298 4) Added new test program T_MATH2.EXE to test the accuracy of the |
|
7299 transcendental functions. |
|
7300 |
|
7301 5) Fixed SW-21. |
|
7302 Changed way in which DLLs statically linked to an EXE are handled. |
|
7303 Instead of opening a process-relative handle on the DLL, the process' |
|
7304 code chunk now holds a list of DLLs on which it depends. This list |
|
7305 is only deleted when the chunk itself is deleted, thus solving the |
|
7306 problem of two instances of the same EXE running concurrently. |
|
7307 Added function UserSvr::ExeAddDependency to add a DLL to the process |
|
7308 code chunk's dependency list. |
|
7309 |
|
7310 2) Matthew |
|
7311 1) Added software filtering to Snowball digitiser drivers. |
|
7312 |
|
7313 2) Moved initial calibration of digitiser into the TDigitiserXxx::Init3(). |
|
7314 This has also meant that some of the E2Prom functions needed to be |
|
7315 exported - I exported all the public functions. |
|
7316 This change has allowed Hal::Init3 to be rearranged to how it was in 114. |
|
7317 |
|
7318 3) Fixed small bug in Snowball B Comm2 driver, which was acting as though |
|
7319 it supported 57600bps. |
|
7320 |
|
7321 3) Rob Pym |
|
7322 1) Added support for ARM 7115 - this chip has a few more peripherals |
|
7323 than the ARM 7110. New functions in ke_eiger.cpp and ke_pic.cpp. |
|
7324 |
|
7325 2) Added CL variant for the Cirrus Logic ARM 7115 evaluation board. |
|
7326 [Jonathan:] Releasables not released because it doesn't build. |
|
7327 |
|
7328 |
|
7329 Version 1.02.116 |
|
7330 ================ |
|
7331 (Made by Jonathan, 26th August 1997) |
|
7332 |
|
7333 1) Dennis |
|
7334 1) Added new extended-precision real class TRealX, defined in |
|
7335 e32math.h. This class provides 64 bit precision and a dynamic |
|
7336 range of approx. 1E-9863 to 1E+9863. All member functions are |
|
7337 assembler coded for speed. |
|
7338 |
|
7339 2) Changed GCC compiler helper functions to use TRealX instead |
|
7340 of TReal96 to speed things up. Also modified all UM_xxx files |
|
7341 to use TRealX instead of TReal96, apart from UM_DTOR and |
|
7342 UM_RTOD. |
|
7343 |
|
7344 3) Added new test programs T_TREALX, T_R64BM, T_RXBM. T_TREALX |
|
7345 tests the TRealX member functions. T_R64BM does a benchmark |
|
7346 test for TReal64 field operations and transcendental functions. |
|
7347 T_RXBM does a benchmark test for TRealX field operations. |
|
7348 |
|
7349 4) Added machine coded versions of Math::Sqrt() and some other |
|
7350 Math:: functions for ARM. |
|
7351 |
|
7352 2) Jonathan |
|
7353 1) Fixed data TX on varmsa/va_com2.cpp and varmpd/va_com3.cpp when |
|
7354 Fifos are disabled; no longer trys to output >1 byte on TX interrupt. |
|
7355 |
|
7356 2) Variant::Init3() on Snowball A & B sets AutoSwitchOffBehavior to |
|
7357 ESwitchOffDisabled because power management isn't yet implemented. |
|
7358 |
|
7359 3) Changed table in Snowball B Variant::SetLcdContrast to correct for |
|
7360 strange hardware. |
|
7361 |
|
7362 4) To reduce noise in the output logs, all .cmd files to build E32 now |
|
7363 invoke NMAKE with the -nologo flag. |
|
7364 |
|
7365 3) Pete |
|
7366 1) Added Internal ATA media driver (MATISB.PDD) for Lavender prototype B |
|
7367 build. |
|
7368 |
|
7369 2) Change to internal ram media driver on WINS/ARM so that it only |
|
7370 opens on media device type EFixedMedia0 rather than any fixed media |
|
7371 type. |
|
7372 |
|
7373 4) Matthew |
|
7374 1) Fixed bug in Snowball digitiser drivers which caused execeptions when |
|
7375 the pen was down. Fixed by moving the queueing of the pen-up timer from |
|
7376 the interrupt service routine into the Dfc. |
|
7377 |
|
7378 2) Added code to read the CTS signal in the Snowball prototype B com2 PDD. |
|
7379 |
|
7380 3) Temporarilly made the Snowball prototype B com2 PDD ignore framing |
|
7381 errors at 38400 bps. This is to allow people downstream to use the port. |
|
7382 |
|
7383 4) Further modifications to T_SERIAL for Snowball compatibility. |
|
7384 |
|
7385 Version 1.02.115 |
|
7386 ================ |
|
7387 (Made by Jonathan, 16th August 1997) |
|
7388 |
|
7389 1) Graham |
|
7390 1) Changed in RAM standby code to have a delay loop |
|
7391 rather than the previous faulty inmplementation |
|
7392 which attempted to validate the ROM by |
|
7393 continually reading it until it returned a known |
|
7394 good value - this was erroneous because the ROM |
|
7395 reads were coming from the cache anyway. |
|
7396 |
|
7397 Then I commented out this code and replaced it with |
|
7398 the traditional code that runs from ROM (this was |
|
7399 only introduced as a result of some hardware paranoia |
|
7400 when we were getting 'unable to switch on' bugs in |
|
7401 the run up to V1.00 |
|
7402 |
|
7403 2) Updated minor version number to 02. |
|
7404 |
|
7405 2) Dennis |
|
7406 1) Modified emergency power-down FIQ handler so that it |
|
7407 only performs the bare minimum of tasks when the machine |
|
7408 is powered up again. Other more time-consuming tasks have |
|
7409 been moved into a DFC. |
|
7410 |
|
7411 2) Added new machine code versions of TInt64 functions for MARM, |
|
7412 WINS and MX86 which don't use the TInt64A class. |
|
7413 |
|
7414 3) Added machine coded versions of some 8-bit descriptor functions |
|
7415 for MARM in new file UPMARM\UP_DES8.CPP. |
|
7416 |
|
7417 4) Added machine coded versions of RHeap::Alloc(), RHeap::Free() |
|
7418 for MARM REL. |
|
7419 |
|
7420 5) Modified Mem::Copy() to run faster when source and destination |
|
7421 addresses are unaligned, or when a small copy is required. |
|
7422 |
|
7423 3) Ann |
|
7424 1) Fixed rounding bug where the number of intervening zeros |
|
7425 after the decimal point in a descriptor was being ignored |
|
7426 when next non-zero digit is out of range of precision when |
|
7427 converting to real. |
|
7428 |
|
7429 4) Matthew/Jonathan |
|
7430 1) Added Snowball B variant for use with the Snowball prototype. |
|
7431 |
|
7432 2) With a TSAsic class to access the ASIC on the Snowball prototype. |
|
7433 |
|
7434 5) Matthew |
|
7435 1) Added digitiser drivers for snowballs A and B. |
|
7436 |
|
7437 2) Added a virtual SetCalibration() function to the TXYInput |
|
7438 class, so that future digitiser drivers can use hardware |
|
7439 calibration, if this is available. |
|
7440 Currently none of the drivers use this (including the Snowball |
|
7441 ones) and they return KErrNotSupported. |
|
7442 |
|
7443 3) Added a comm pdd for the Snowball prototype asic. There are |
|
7444 several known bugs in this driver. |
|
7445 Made some modifications to T_SERIAL so that it does not test |
|
7446 things beyond the capabilities of the comm port when running |
|
7447 on a Snowball. |
|
7448 |
|
7449 6) Jonathan |
|
7450 1) Fixed problem caused by reading IID register too often in |
|
7451 Snowball A 2nd comm pdd. |
|
7452 2) Added IR support to Snowball B 1st comm pdd (untested). |
|
7453 |
|
7454 Failing on Snowball B prototype: |
|
7455 - tests t_power, t_timer, t_chunk, t_serial, t_idrv, t_pccd1, t_pccd2 |
|
7456 - Power up after switch-off |
|
7457 |
|
7458 |
|
7459 Version 1.01.114 |
|
7460 ================ |
|
7461 (Made by Graham, 29th July 1997) |
|
7462 |
|
7463 1) Matthew |
|
7464 1) SW1-244 Fixed sound driver so that it no longer returns |
|
7465 KErrAlreadyExists if a prepare function is called |
|
7466 twice. Changed test code accordingly. |
|
7467 |
|
7468 2) Morgan |
|
7469 1) SW3-1556 Removed dependency in M32HAL.H on M32DBG.H and |
|
7470 re-inserted dependency on M32DBG.H in appropriate .CPP |
|
7471 files. |
|
7472 |
|
7473 |
|
7474 Version 1.01.113 |
|
7475 ================ |
|
7476 (Made by Graham, 25th July 1997) |
|
7477 |
|
7478 1) Dennis |
|
7479 1) Fixed CSW3-1559, CSW3-1560, CSW3-1530, SW1-91, SW1-155, SW1-158 |
|
7480 Added doubly-linked tree structure to DLibrary objects to record which |
|
7481 DLLs depend on which. The access count of a DLibrary object is now equal to |
|
7482 the number of thread/process handles open on it, plus the number of other |
|
7483 DLibrary objects which have a dependency on it. Added code to DLibrary::Close() |
|
7484 to check that a DLL is really in use (directly or indirectly) by traversing |
|
7485 the tree structure and to delete it if it is not. Added a new supervisor function |
|
7486 UserSvr::DllAddDependency() used by the loader to record DLL dependencies. |
|
7487 |
|
7488 2) Matthew |
|
7489 1) Fixed bug in sound ldd which caused buffers to be orphaned on the kernel heap if |
|
7490 a prepare function was called twice. This now returns KErrAlreadyExists. |
|
7491 Added test code to t_sound. |
|
7492 |
|
7493 3) Graham |
|
7494 1) Made further changes to the backup battery levels: |
|
7495 |
|
7496 Good -> Low 2850 |
|
7497 Low -> Replace 2800 |
|
7498 |
|
7499 Replace -> Low 2850 |
|
7500 Low -> Good 2900 |
|
7501 |
|
7502 Not present 2000 |
|
7503 |
|
7504 2) SW1-201. Reduced the maximum voltage of the main battery |
|
7505 from 3100mV to 3000mV. |
|
7506 |
|
7507 3) SW1-179. Removed redundant IMPORT_C declarations from |
|
7508 E32BASE.H on: |
|
7509 |
|
7510 CServer::NewSessionL |
|
7511 CSession::ServiceL |
|
7512 |
|
7513 4) Added Charles Wier's ASSERT macro. |
|
7514 |
|
7515 5) Changed the battery voltage reading algorithm. I used |
|
7516 to do one one dummy read on the adc channel then wait |
|
7517 10mS then take the real reading. I now do 10 dummy |
|
7518 reads at the rate of one every millisecond and then |
|
7519 take the real reading. |
|
7520 |
|
7521 6) Fixed the .REL files to release Dutch and French |
|
7522 localisation dlls and a french keyboard table for MARM P2. |
|
7523 |
|
7524 7) Added Scandinavian localisation dll in WINS and MARM |
|
7525 builds. |
|
7526 |
|
7527 8) Added DANISH/NORWEGIAN keyboard table (CAKDP2.DN) and |
|
7528 SWEDISH/FINNISH keyboard table (CAKDP2.SF) for P2 |
|
7529 MARM builds. |
|
7530 |
|
7531 Version 1.01.112 |
|
7532 ================ |
|
7533 (Made by Graham, 17th July 1997) |
|
7534 |
|
7535 1) Dennis |
|
7536 1) Fixed CSW-2710, SW1-114 |
|
7537 Changed four kernel faults to K::PanicCurrentThread with new KERN-EXEC |
|
7538 panic numbers; these are KK::EMesAlreadyPending, KK::EEvntRequestPending |
|
7539 and two instances of PP::EIllegalWsProcess. |
|
7540 |
|
7541 2) Fixed CSW3-880 |
|
7542 Corrected checking of filename length in RLoader::LoadProcess() and added |
|
7543 a check for the command line length. |
|
7544 |
|
7545 3) Fixed CSW3-1340 |
|
7546 Changed the code to allow both heap min size and heap max size to be zero. |
|
7547 However if heap max size < 256, then a value of 256 will actually be used. |
|
7548 |
|
7549 4) Fixed CSW3-1601 |
|
7550 Set up the value of K::TickCounter in the RTC tick ISR rather than in code |
|
7551 which runs asynchronously to the RTC tick. Reinitialise K::TickCounter when |
|
7552 the system time is changed. |
|
7553 |
|
7554 5) Fixed CSW3-1670 |
|
7555 Added function TBool TTickQ::CheckMidnightCrossover(TInt aSecs) to check if |
|
7556 a midnight crossover has occurred and set iTomorrowStarts accordingly. Added |
|
7557 overloaded function void TSecondQ::SystemTimeChanged(TUint& aChanges) |
|
7558 to abort all absolute and locked timers and set the EChangesMidnightCrossover |
|
7559 bit in aChanges if a system time change results in a midnight crossover. |
|
7560 TSecondQ::SystemTimeChanged() now calls this function, as does |
|
7561 ExecHandler::LocaleSet(). Updated T_CHNOT.CPP to test the new RChangeNotifier |
|
7562 behaviour. |
|
7563 |
|
7564 6) Modified prefetch abort handler to set iDataAddress to the value of lr when |
|
7565 the exception occurred. |
|
7566 |
|
7567 7) Corrected User::StartThread to call DLL entrypoints with EDllThreadDetach |
|
7568 rather than EDllThreadAttach when the thread exits. |
|
7569 |
|
7570 8) Set the RTC correction to zero on a cold start. (Forgot this last time!) |
|
7571 |
|
7572 2) Graham |
|
7573 1) Added code to fetch the language index and the keyboard |
|
7574 index from E2. Added these values to the machine info |
|
7575 structure (UserHal::MachineInfo()) by adding class |
|
7576 TMachineInfoV2 which derives from TMachineInfoV1. |
|
7577 |
|
7578 2) Modified the text window server to load a different |
|
7579 localisation module and keyboard module according to |
|
7580 the language and keyboard indexes read from E2. |
|
7581 |
|
7582 3) Increased the adjustment for current consumption |
|
7583 that is made prior to establishing whether the main |
|
7584 battery status should fall. |
|
7585 |
|
7586 4) Reduced the voltage levels at which the main battery |
|
7587 status changes. Low is now at 2150mV, Replace is now |
|
7588 at 1900mV (P2 and PD variants only). |
|
7589 |
|
7590 5) Reduced the max backup battery voltage to 3100mV in |
|
7591 line with the max main battery voltage (P2 and PD |
|
7592 variants only). |
|
7593 |
|
7594 6) Reduced the voltage levels at which the backup up |
|
7595 battery status changes: |
|
7596 |
|
7597 Old (mV) New (mV) |
|
7598 Good -> Low 2900 2800 |
|
7599 Low -> Replace 2800 2750 |
|
7600 |
|
7601 Replace -> Low 2850 2780 |
|
7602 Low -> Good 3000 3000 |
|
7603 |
|
7604 Not present 2000 2000 |
|
7605 |
|
7606 7) Added kernel side EXPORTS for: |
|
7607 S::ChunkCreate |
|
7608 S::LibraryLoadExact |
|
7609 S::MutexCreate |
|
7610 S::PhysicalDeviceLoad |
|
7611 S::PhysicalDeviceFree |
|
7612 S::SemaphoreCreate |
|
7613 |
|
7614 |
|
7615 3) Basher |
|
7616 1) Added new function in the keyboard translation dll |
|
7617 (ChangeKeyData) which loads a different keyboard data |
|
7618 module. |
|
7619 |
|
7620 4) Pete |
|
7621 1) When interrogating the CIS of a PC Card to determine the cards type, |
|
7622 the PC Card controller verifies the integrity of the CIS by |
|
7623 attempting to follow each CIS chain to the end. While performing this |
|
7624 operation the controller is currently reading each tuple entirely |
|
7625 rather than just checking its type and link. This is un-necesary and |
|
7626 in fact not recomemded. Unknown tuples may contain active registers. |
|
7627 This change fixes the problem. |
|
7628 |
|
7629 |
|
7630 Version 1.01.111 |
|
7631 ================ |
|
7632 (Made by Graham, 11th July 1997) |
|
7633 |
|
7634 1) Jonathan |
|
7635 1) Small fix to DPccdCntrlInterface::DoNotifyChange and DoChangeFlag to return |
|
7636 KErrGeneral instead of panicing on being passed an invalid socket number. |
|
7637 2) Kernel now exports all of DPlatChunkHw so that device drivers can map |
|
7638 in their own memory-mapped registers etc. |
|
7639 3) Added 2nd serial port (16550-based) to Snowball MARM variant. Currently |
|
7640 just a dummy because of a suspected bug triggered by ~DPlatChunkHW(). |
|
7641 4) Variant::TestBootSequence on Snowball is always True. This enables an |
|
7642 (alternative) etest.exe to be run on boot, which starts elink before booting |
|
7643 normally. |
|
7644 5) Added etestl.exe which does the above. |
|
7645 |
|
7646 2) Pete |
|
7647 1) Fixed SW3-1226 |
|
7648 Makes it possible to force accesses to as particular type of PC Card |
|
7649 memory (ie Common,Attribute,I/O) to be 8-bit accesses only (ie 32bit |
|
7650 word accesses disabled). This mode can be enabled in the function |
|
7651 Variant::PcCardCntrlMemConfig() by returning KMemConfigByteAccess. |
|
7652 This is to support h/w implementations which can't support 32-bit accesses |
|
7653 to PC Card memory. |
|
7654 |
|
7655 3) Dennis |
|
7656 1) Fixed SW3-1321 |
|
7657 Moved the RTC correction value and last set time into the super page so |
|
7658 that they will be preserved over warm resets. This stops strange offsets |
|
7659 from being added to the system time when the machine is switched off and on. |
|
7660 |
|
7661 2) Moved the definition of the super page from M32STD.H to K32STD.H. Added a |
|
7662 super page to the WINS build. Moved the battery statistics (insertion time, |
|
7663 time on main battery, time on external power, battery power used) from K:: |
|
7664 into the super page so that they will be preserved over warm resets. |
|
7665 |
|
7666 3) Fixed SW3-1419 |
|
7667 Removed all user access from user data chunks in the home section. Changed |
|
7668 the way the stack/heap chunk is created on thread creation - the pages are |
|
7669 now allocated using DPlatChunk::AdjustL() instead of AdjustUserL(). This means |
|
7670 that the pages are immediately mapped with the correct page permissions |
|
7671 rather than with full user access. Removed the line in DPlatProcess::Loaded() |
|
7672 which applies the final page permissions to the main thread's stack/heap chunk. |
|
7673 |
|
7674 4) Fixed SW3-1317 |
|
7675 Modified function RUserHeap::SvClose() so that if it finds the access count of |
|
7676 the heap negative, it panics the owning process rather than causing a kernel fault. |
|
7677 |
|
7678 5) Fixed SW3-1311 |
|
7679 Fixed operator precedence error in CObjectIx::Remove(). |
|
7680 |
|
7681 6) Fixed SW3-770, SW3-1539 |
|
7682 Modified DPlatProcess::DoSetPriority() to recursively descend the tree of threads |
|
7683 owned by the process and adjust their priorities (previously, thread-relative threads |
|
7684 were not adjusted). |
|
7685 Introduced a new set of absolute thread priorities which enable the priority of a |
|
7686 thread to be made independent of the priority of its owning process. |
|
7687 Note that this upgrade requires a modification to the SHELL to set the priority of |
|
7688 the EIKON server thread to EPriorityAbsoluteForeground instead of EPriorityMore. |
|
7689 |
|
7690 7) Fixed SW3-319 |
|
7691 Added a new exported function Kern::PanicCurrentThread(const TDesC&, int) which panics |
|
7692 a thread by sending a message to the kernel server (like K::PanicCurrentThread). |
|
7693 Modified D_COMM.CPP to call this function instead of DPlatThread::Panic(). |
|
7694 |
|
7695 8) Fixed SW3-1604 |
|
7696 Modified RThread::RaiseException() so that if the exception is unhandled, it panics |
|
7697 with ECausedException rather than calling User::Exit(KErrDied); |
|
7698 |
|
7699 9) Fixed SW3-4688 |
|
7700 Modified UPWINS\UP_TRP.CPP to do a ret 4 at the end of User::Leave() instead |
|
7701 of a compiler-generated ret 0. Applied the same modification to the X86 build. |
|
7702 |
|
7703 10) Fixed SW3-1408, SW3-1671 |
|
7704 Modified UCDT\UC_REGN.CPP TRegion::SubRect() to return without doing anything if |
|
7705 the rectangle to be subtracted is empty. Applied the same modification to the |
|
7706 ARM version in UPMARM\UP_UTL.CPP. |
|
7707 |
|
7708 11) Fixed SW-4688 |
|
7709 Modified UPWINS\UP_TRP.CPP User::Leave() to end with a ret 4 instead of a ret 0. |
|
7710 Applied the same modification to the MX86 version. |
|
7711 |
|
7712 12) Fixed SW3-1149 |
|
7713 Added an inline accessor function for the iThread member of CAsyncOneShot to |
|
7714 allow the handle to be changed. |
|
7715 |
|
7716 13) Fixed SW3-1604 |
|
7717 Modified RThread::RaiseException() so that if the exception is unhandled, it |
|
7718 panics with ECausedException rather than calling User::Exit(KErrDied); |
|
7719 |
|
7720 14) Fixed SW-5529 |
|
7721 Modified RLibrary::LoadRomLibrary in UPMARM\UP_LIB.CPP and UPMX86\UP_LIB.CPP |
|
7722 to close a handle in all possible cases. |
|
7723 |
|
7724 15) Fixed SW-5530 |
|
7725 Modified KS_SEM.CPP, KS_MUTX.CPP and KS_CHK.CPP so that if a global object is |
|
7726 created with a thread-relative handle, it has no owner. |
|
7727 |
|
7728 16) Modified DPlatThread::Die() so that if a system thread panics, the machine resets. |
|
7729 |
|
7730 17) Fixed SW1-22 |
|
7731 Modified CObjectIx destructor to invalidate each array entry after closing it. |
|
7732 Modified CObjectIx::Remove() to panic if an attempt is made to remove an entry with |
|
7733 a null object pointer. |
|
7734 Modified S::Close() to check if the handle is valid before attempting to close it. |
|
7735 |
|
7736 18) Fixed CSW3-1426 |
|
7737 Made 0x10 (DLE, non-breaking space character in OPL) a whitespace character. |
|
7738 |
|
7739 19) Fixed CSW-5500 |
|
7740 Check for nDig<0 in doGeneral() function, return KErrGeneral in this case. |
|
7741 |
|
7742 4) Matthew |
|
7743 1) Fixed SW3-883 |
|
7744 Moved the undertaker notification call Kern::NotifyThreadDeath() from |
|
7745 DThread::Cleanup() to DThread::DoDie(), so it is called before any child threads |
|
7746 are killed. |
|
7747 Added test to T_THREAD. |
|
7748 |
|
7749 2) Fixed SW3-1173 |
|
7750 Made "%X" give upper-case, instead of lower-case hex. |
|
7751 Added test to T_BUF. |
|
7752 |
|
7753 3) Changed T_SOUND test code so that it actually tests that keyclicks are disabled |
|
7754 during recording. |
|
7755 |
|
7756 4) Renamed Variant::TVarmpdPanic to TVarmp2Panic in P2 variant. |
|
7757 |
|
7758 5) Made varmp2\va_prom.cpp #include v32armp2.h instead of v32armpd.h. |
|
7759 |
|
7760 5) Graham |
|
7761 1) Anns fix for incompatibility between random number |
|
7762 generation on WINS and MARM. |
|
7763 |
|
7764 2) Martin Tasker's updated header files E32BASE.H and |
|
7765 E32DEF.H for MSVC 5.0 compliance. |
|
7766 |
|
7767 3) Increased RAM refresh rate to the maximum in the |
|
7768 bootstrap. This can then be slowed down in the |
|
7769 variant layer if applicable. |
|
7770 |
|
7771 4) Changed the reschedule code to run with interrupts on. |
|
7772 |
|
7773 5) Added Charles Wier's __DECLARE_TEST_DEBUG that compiles |
|
7774 out in release mode. |
|
7775 |
|
7776 6) Added Charles Wier's RTest::SetConsole(CConsoleBase*). |
|
7777 |
|
7778 7) SW3-716 sanitise E32KEYS.H for the resource compiler. |
|
7779 |
|
7780 8) SW3-1556 released M32MMU.H and .INL in INCK and removed |
|
7781 dependency in M32HAL.H on M32DBG.H. |
|
7782 |
|
7783 9) SW3-1557. Fixed an ASSERT in Mmu::AllocShadowPage(). |
|
7784 |
|
7785 10) Added new Central European language enums to TLanguage. |
|
7786 |
|
7787 11) Changed RNotifier::Connect to use its own version number |
|
7788 instead of the operating system version number - the |
|
7789 notifier interface is updated independently of E32. |
|
7790 |
|
7791 12) Merged in new in localisation files since 110. |
|
7792 |
|
7793 13) Fixed bug in ARM architecture which caused ADC code |
|
7794 to be called when the variant specified that no |
|
7795 ADC was fitted - caused problems for Delaware. |
|
7796 |
|
7797 14) Changed the main battery monitoring code to compensate |
|
7798 for voltage drops with high current consumption when |
|
7799 calculating changes in battery status. |
|
7800 |
|
7801 15) Changed the main battery monitoring code to increase |
|
7802 the frequency that it samples the main battery voltage |
|
7803 when other components are interested in obtaining |
|
7804 accurate readings of that voltage. |
|
7805 |
|
7806 16) Changed the P2 and PD sound driver to divorce its ability |
|
7807 to play digital sound from the main battery status. It |
|
7808 now has two threshhold voltages - one at 2200mV below |
|
7809 which no sound driver operation will begin and another |
|
7810 at 2000mV below which any sound driver operation that |
|
7811 is in progress will be aborted. |
|
7812 |
|
7813 17) Fixed the backup battery code which caused its status to |
|
7814 oscillate between Good and Low every time you switched |
|
7815 off and on. |
|
7816 |
|
7817 These fixes, in combination should fix CSW-5376, CSW3-682, |
|
7818 CSW3-1672 |
|
7819 |
|
7820 6) Basher |
|
7821 1) Added new user server function "ChangeLocale" to change |
|
7822 localisation dll. |
|
7823 |
|
7824 Version 1.00.110 |
|
7825 ================ |
|
7826 (Made by Graham , 5th June 1997) |
|
7827 |
|
7828 1) Graham / Jonathan / Morgan / Colly |
|
7829 1) Fixed a bug in the Comms LDD emergency power down code. |
|
7830 This was causing interrupts to be enabled which then |
|
7831 caused the kernel irq handling routine to reenable |
|
7832 fiqs thus causing the fiq handler to be reentered with |
|
7833 subsequent death of a random nature to any user code |
|
7834 that might happen to be lying around within reach. |
|
7835 Multiple SW's hopefully. |
|
7836 |
|
7837 2) Introduced interrupt protection around |
|
7838 TEiger::ModifyRegister8. This had been introduced into |
|
7839 TEiger::ModifyRegister32 a long time ago but somehow got |
|
7840 missed out of the 8 bit variant. |
|
7841 |
|
7842 3) Added protection against rogue irqlevels passed into |
|
7843 Hal::RestoreIrqs(); |
|
7844 |
|
7845 4) Added NOPs into the following type of ARM assembler |
|
7846 construct: |
|
7847 |
|
7848 asm("stmia lr, {r13-r14}^"); |
|
7849 asm("add lr, lr, #8"); |
|
7850 |
|
7851 This now becomes: |
|
7852 |
|
7853 asm("stmia lr, {r13-r14}^"); |
|
7854 asm("mov r0, r0"); |
|
7855 asm("add lr, lr, #8"); |
|
7856 |
|
7857 The ARM manual advises against using a banked register |
|
7858 directly after any user-bank load or store multiple |
|
7859 instruction. |
|
7860 |
|
7861 5) Added T_IRQS test code developed by Alastair. |
|
7862 |
|
7863 |
|
7864 Version 0.01.109 |
|
7865 ================ |
|
7866 (Made by Graham , 3rd June 1997) |
|
7867 |
|
7868 1) Dennis |
|
7869 1) 2/6/97 |
|
7870 Fixed SW-3795, SW-3798 |
|
7871 Set main battery insertion time after initialising RTC |
|
7872 When system time is set, main battery insertion time is changed |
|
7873 by (new system time-old system time) |
|
7874 Moved initialisation of Locale data from S::Initialise() to P::Initialise() |
|
7875 just after Hal::Init1(). This is necessary to make sure that the home time |
|
7876 offset is initialised before the system time on a cold start. |
|
7877 |
|
7878 2) Fixed alloc heaven problem in KS_CHN.CPP whereby a |
|
7879 physical channel is created and not deleted if the |
|
7880 corresponding logical channel creation failed. |
|
7881 |
|
7882 2) Matthew |
|
7883 1) Changed sound and comms emergency power-down code to do their completions |
|
7884 with DFCs. This seems to fix the exception-type resets associated with |
|
7885 emergency power-downs. |
|
7886 |
|
7887 2) Fixed a bug in the sound driver's write-to-thread code where the home |
|
7888 address of the user buffer was not being used. Spotted by Colly. |
|
7889 |
|
7890 3) Fixed bug in sound driver where if an Open() failed with OOM then any |
|
7891 subsequent attempts to open would fail with KErrInUse. Spotted by Colly. |
|
7892 |
|
7893 3) Pete |
|
7894 1) Fixed SW3-998: Prevents emergency power downs occuring |
|
7895 while servicing PC Card interrupts from generating an exception. |
|
7896 |
|
7897 |
|
7898 2) Fixed SW3-974: Machine reset inserting CF card with OOM. |
|
7899 Fix is low risk (FLW). One part affects code only called in OOM |
|
7900 situation, and the other is minor change to a destructor. |
|
7901 |
|
7902 4) Graham |
|
7903 1) Fixed a bug in the comms logical device driver. This bug |
|
7904 prevented the machine from switching on sometimes in the |
|
7905 presence of an oscillating DSR input (like Nautilus). |
|
7906 |
|
7907 2) Fixed a bug in the backup battery handling when switching |
|
7908 on. This again was preventing machine from turning on |
|
7909 occasionally. Thanks to Colly, Bill and Morgan for help |
|
7910 finding this one. SW3-666 (the number of the beast). |
|
7911 |
|
7912 3) SW3-877. Slowed down the turning off of the display |
|
7913 when switching off normally - the previous behaviour |
|
7914 may have been damaging to the lcd panel. (UNAPPROVED) |
|
7915 |
|
7916 4) SW3-997 fixed a keyboard table bug when pressing FN+B |
|
7917 followed by the space bar - previously gave a little |
|
7918 circle; now gives a circumflex. (UNAPPROVED) |
|
7919 |
|
7920 5) Upped the LCD pump value to 11 from 8. SW3-354. |
|
7921 (UNAPPROVED) |
|
7922 |
|
7923 6) Changed MachineInfo for P2 to describe the microprocessor |
|
7924 as an ARM 7100 rather than an ARM 7110. SW3-1028. |
|
7925 (UNAPPROVED). |
|
7926 |
|
7927 5) Morgan |
|
7928 1) Fixed RTC error. Conversion between parts per 4000000 |
|
7929 and parts per 2^24 was wrong. |
|
7930 |
|
7931 Version 0.01.108 |
|
7932 ================ |
|
7933 (Made by ---, --- May 1997) |
|
7934 |
|
7935 1) Matthew |
|
7936 1) 22/5/97 |
|
7937 Fixed SW-5406: Made the fall-back alarm sound slightly less offensive. |
|
7938 Forward and backward compatible. |
|
7939 |
|
7940 2) 22/5/97 |
|
7941 Fixed SW-4899: WINS comms pdd no longer calls the ldd's transmit ISR the |
|
7942 extra time. |
|
7943 Backward compatible, not forward if you were assume the transmit ISR |
|
7944 can only be called once. |
|
7945 |
|
7946 3) 22/5/97 |
|
7947 Fixed SW3-293: Moved EWSRV.DLL to base 0x42800000 so it no longer clashes |
|
7948 with dsound.ldd. |
|
7949 Forward and backward compatible. |
|
7950 |
|
7951 4) 22/5/97 |
|
7952 Fixed SW3-372: Added the '%.' label to TTime::FormatL. This gives the |
|
7953 locale decimal separator. Test code in T_TIME. |
|
7954 Backward compatible, not forward compatible - previous versions of |
|
7955 E32 reduced '%.' to '.' whatever the locale information was. |
|
7956 |
|
7957 2) Morgan |
|
7958 1) 23/5/97 |
|
7959 Fixed SW-4604: When a growing Ram Drive hits a page containing |
|
7960 page tables the page allocator attempts to move them. This code was |
|
7961 assuming all four page tables in the page were in use which is not |
|
7962 always the case, causing the allocator to Leave. To fix this, trapped |
|
7963 the Leave when an unused page table is not found in the PageDir. |
|
7964 Forward and Backward compatible. |
|
7965 |
|
7966 2) 27/5/97 |
|
7967 Applied the correct Uids and capitalised the names of EKern and EFile |
|
7968 by hand during startup. Required because neither of these processes |
|
7969 are loaded by the file server (which is normally responsible for doing |
|
7970 that). |
|
7971 |
|
7972 3) 27/5/97 |
|
7973 Added RProcess::SetType(const TUidType &aType) and test code. |
|
7974 Backward compatible |
|
7975 |
|
7976 3) Ann |
|
7977 1) 27/5/97 |
|
7978 Changed KRealFormatNoExponent to use a maximum of aMaxSigFigs digits. |
|
7979 Updated test code accordingly. |
|
7980 |
|
7981 4) Graham |
|
7982 1) 28/5/97 |
|
7983 SW3-495. Reduced the risk of E32 getting out of step with case |
|
7984 opening/closing |
|
7985 |
|
7986 2) 28/5/97 |
|
7987 Introduced BLDARMREL as a synonym for ARMREL in MNT.CMD and |
|
7988 removed the need to do MAKEWORK before building. |
|
7989 |
|
7990 |
|
7991 Version 0.01.107 |
|
7992 ================ |
|
7993 (Made by ---, --- May 1997) |
|
7994 |
|
7995 1) Graham |
|
7996 1) Removed MEDCRR.MAP and DATXPD3.MAP from MARM releaseables |
|
7997 |
|
7998 Forward and backward compatible. |
|
7999 |
|
8000 2) Removed EKERN.LIB from WINC releaseables |
|
8001 |
|
8002 Forward and backward compatible. |
|
8003 |
|
8004 3) Upgrade 003 |
|
8005 |
|
8006 Fixed SW3-282. If the 'switch off when case is closed' option was |
|
8007 enabled and one switched off, closed the case, then attempted to wake |
|
8008 the machine up using the external buttons or by asserting dsr, then |
|
8009 the machine would remain dead until the next warm reset. |
|
8010 |
|
8011 This was fixed by reading the state of the case when coming out of |
|
8012 standby as well as every second while switched on. |
|
8013 |
|
8014 Forward and backward compatible. |
|
8015 |
|
8016 4) Upgrade 007 |
|
8017 |
|
8018 Removed the ability to turn on using the digitiser after an emergency |
|
8019 power down. This makes the behaviour consistent with 'Switch on when |
|
8020 case is opened'. SW-5282 |
|
8021 |
|
8022 Forward and backward compatible. |
|
8023 |
|
8024 5) Upgrade 008 |
|
8025 |
|
8026 Upgraded P2 and PD digitiser drivers to include debouncing logic |
|
8027 (SW-874 and duplicates). |
|
8028 |
|
8029 Forward and backward compatible. |
|
8030 |
|
8031 6) Upgrade 009 |
|
8032 |
|
8033 Upgraded P2 and PD comms pdd's. These now implement the following |
|
8034 current consumption scheme. |
|
8035 |
|
8036 RS232 drivers enabled 2mA |
|
8037 Cable connected + 22 mA |
|
8038 Ir enabled 0 mA |
|
8039 Ir receiving 0 mA |
|
8040 Ir transmitting + 35 mA |
|
8041 |
|
8042 The cable is detected by either: |
|
8043 |
|
8044 1) DSR high |
|
8045 2) Character received |
|
8046 |
|
8047 Forward and backward compatible. |
|
8048 |
|
8049 2) Pete |
|
8050 1) Upgrade 001 |
|
8051 |
|
8052 Fixed SW3-331. Formatting of Local Drives was being done cardSize/32 |
|
8053 bytes at a time. This was OK on smaller CF cards but on larger ones |
|
8054 (eg 16M Hitachi CF) it was locking up the machine for long periods |
|
8055 (because F32 which is running during each sub-format is at a high |
|
8056 priority). Changed so that a Local Drive is formatted |
|
8057 Min(16K,size/32) bytes at a time. |
|
8058 |
|
8059 Forward and backward compatible. |
|
8060 |
|
8061 2) Upgrade 004 |
|
8062 |
|
8063 In addition to having the option to disable compatibility checking between a cards |
|
8064 Vcc level requrements and those supported by a machine, it is now possible |
|
8065 to disable Vcc current and Vpp level compatibility checking in |
|
8066 TPcCardConfig::IsMachineCompatible(). |
|
8067 |
|
8068 Backward compatible, not forward. |
|
8069 |
|
8070 3) Upgrade 005 |
|
8071 |
|
8072 Fixed a problem parsing device info. tuples which fail to provide the |
|
8073 end of field character. TCisReader::FindReadRegion() now checks the |
|
8074 length of such a tuple and doesn't rely on the terminating character |
|
8075 being present. |
|
8076 |
|
8077 Forward and backward compatible. |
|
8078 |
|
8079 4) Upgrade 006 |
|
8080 |
|
8081 Various changes to Pc Card Serial Port PDDs: |
|
8082 - Added Cellular Card Phone Serial Driver (VA_NCCP.CPP) for Rack D. |
|
8083 - Fixed a problem with the standard Modem Card Serial Driver (EUART3.PDD) |
|
8084 when writing to the card at 115Kbps. The driver wasn't making full |
|
8085 use of the Tx FIFO and was spending too long servicing interrupts |
|
8086 resulting in a triple beep reset due to the watchdog timing out. |
|
8087 Also disabled Vpp compatibility checking in order to support the |
|
8088 WorldPort modem. |
|
8089 The full list of supported modems is now:- |
|
8090 - Socket I/O serial port |
|
8091 - Dacom Goldcard V34 + Fax |
|
8092 - Dacom GoldCard Global (V34+Fax) |
|
8093 - Hayes Optima 288 |
|
8094 - US Robotics WorldPort |
|
8095 - MegaHertz XJ2288 |
|
8096 - Trellis Datacom PC288V2 |
|
8097 - Com1 Modem Card MC218 |
|
8098 - Paldio Data card |
|
8099 - Changes to Delaware standard Modem Card Serial Driver (EUART2.PDD) |
|
8100 to bring it up to same standard as the Rack D driver. |
|
8101 None of this affects Protea P2. |
|
8102 |
|
8103 Forward and backward compatible. |
|
8104 |
|
8105 3) Ann |
|
8106 1) Upgrade 002 |
|
8107 |
|
8108 Fixed SW-4304, SW3-415. TRealFormat changes. Changed |
|
8109 Calculator mode to discard trailing zeros first and then to decide on |
|
8110 exponential or non-exponential format based on the number of digits |
|
8111 available. If the number of digits (including significant leading/trailing |
|
8112 zeros) when using non-exponential format would exceed aMaxSigFigs, then |
|
8113 exponential format would be used, so reducing to no more than aMaxSigFigs. |
|
8114 Fixed SW3-416. The above changes should been this situation won't |
|
8115 occur, but leaves space for sign now, just in case! |
|
8116 Also T_FLOAT test code improved and updated. |
|
8117 |
|
8118 |
|
8119 Version 0.01.106 |
|
8120 ================ |
|
8121 (Made by Graham, 19th May 1997) |
|
8122 |
|
8123 1) Graham |
|
8124 1) Implemented MNT VALID verb. |
|
8125 |
|
8126 Forward and backward compatible. |
|
8127 |
|
8128 2) Updated all version numbers to 1.0(106) |
|
8129 |
|
8130 The compatibilty issues for this are quite complicated. |
|
8131 However, I believe these changes to be both forward and |
|
8132 and backward compatible. |
|
8133 |
|
8134 3) Added .MAP files to MARM releasables. |
|
8135 |
|
8136 Forward and backward compatible |
|
8137 |
|
8138 4) Changed idle current to 38mA, backlight current to 98mA. |
|
8139 |
|
8140 Forward and backward compatible |
|
8141 |
|
8142 5) Upgrade 004 |
|
8143 |
|
8144 Changed the WINS fascia to reflect the changed order on the |
|
8145 application bar. |
|
8146 |
|
8147 Forward and backward compatible |
|
8148 |
|
8149 6) Upgrade 009 |
|
8150 |
|
8151 Fix which defends against the possibility that the Flash ROM will not |
|
8152 wake up quickly enough when coming out of standby. We jump into RAM |
|
8153 to execute the standby instruction. When we come out of standby we |
|
8154 check the ROM is reading correctly before jumping back. |
|
8155 |
|
8156 Forward and backward compatible |
|
8157 |
|
8158 7) Upgrade 010 |
|
8159 |
|
8160 SW-5179 Return an error if an attempt is made to turn the backlight |
|
8161 on when the main batteries are set to 'replace' and no external power |
|
8162 is being applied. |
|
8163 |
|
8164 Forward and backward compatible |
|
8165 |
|
8166 8) Upgrade 011 |
|
8167 |
|
8168 Reduce default on time of backlight to one minute and make it |
|
8169 sensitive to user activity. |
|
8170 |
|
8171 Forward and backward compatible |
|
8172 |
|
8173 9) Upgrade 012 |
|
8174 |
|
8175 SW-5319 Changed default screen contrast of PD and P2 variants |
|
8176 |
|
8177 Forward and backward compatible |
|
8178 |
|
8179 10) Upgrade 013 |
|
8180 |
|
8181 SW-3264 Changed default auto power down behaviour to |
|
8182 'Enabled always' and reduced the default timeout to |
|
8183 3 minutes. |
|
8184 |
|
8185 Forward and backward compatible |
|
8186 |
|
8187 11) Upgrade 014 |
|
8188 |
|
8189 SW-3232 Swop round FN-Q,D and FN-Q,T |
|
8190 |
|
8191 Forward and backward compatible |
|
8192 |
|
8193 2) Dennis |
|
8194 1) Changed wait states on CS1 ROM from 4 to 2 on P2 variant. |
|
8195 |
|
8196 Forward and backward compatible |
|
8197 |
|
8198 2) Modified ImpHal::PrepareForRepro() to leave the cache and |
|
8199 write buffer enabled. It is only necessary that the page |
|
8200 directory entries for the FLASH are marked as not |
|
8201 cacheable or bufferable and that the TLB and cache are |
|
8202 flushed, which was already the case. |
|
8203 |
|
8204 Forward and backward compatible |
|
8205 |
|
8206 3) Upgrade 001 |
|
8207 |
|
8208 Rewrote some of the TRegion member functions in ARM assembly language in an attempt to |
|
8209 speed up the operation of the window server, which uses these functions extensively, and |
|
8210 which was found to be responsible for slow operation of the machine when a large number |
|
8211 of applications are open. See defect reports SW-3500 and SW-4478 and the replies to them. |
|
8212 |
|
8213 Forward and backward compatible |
|
8214 |
|
8215 3) Ann |
|
8216 1) Upgrade 002 |
|
8217 |
|
8218 Fixed a bug in Math::Pow() (defect report SW-4624) so that |
|
8219 KErrOverflow errors are not incorrectly returned as KErrArgument |
|
8220 errors. This occured because of differencing of infinity - which is |
|
8221 now checked for. Updated maths test code (t_math) to test this |
|
8222 change fully. |
|
8223 |
|
8224 Forward and backward compatible |
|
8225 |
|
8226 2) Upgrade 025 |
|
8227 |
|
8228 Fixed SW3-317 KRealFormatNoExponent mode was not checking for |
|
8229 KExtraSpaceForSign flag. Now checks and changed to act accordingly. |
|
8230 Also added this to test code. |
|
8231 |
|
8232 |
|
8233 4) Morgan |
|
8234 1) Upgrade 003 |
|
8235 |
|
8236 Set a constant string in the SuperPage when platform initialisation |
|
8237 has completed. This string is checked on warm resets to validate |
|
8238 cold start initialisation has completed successfully at some point |
|
8239 in the past. |
|
8240 |
|
8241 Forward and Backward compatible except for machine configuration |
|
8242 compatiblity. So, machine configurations may not be passed |
|
8243 between old and new versions of E32. You must perform a cold |
|
8244 reset having upgraded to the version of E32 because of this |
|
8245 change. |
|
8246 |
|
8247 |
|
8248 2) Upgrade 019 |
|
8249 |
|
8250 Fix for SW3-91 and SW3-66: Shared code chunks are Open()ed properly |
|
8251 in DProcess::Create(). New code chunks are named "$EXE[<Checksum>]" |
|
8252 and no longer have an owner. |
|
8253 |
|
8254 3) Upgrade 026 |
|
8255 |
|
8256 Initialised TheSuperPage.iXtalError to 0 in Hal::Init1() on a cold boot |
|
8257 for those platforms that don't do it themselves in their variant |
|
8258 initialisation. |
|
8259 |
|
8260 5) Matthew |
|
8261 1) Upgrade 005 |
|
8262 |
|
8263 Changed "Rings" alarm sound to be the same as those on the 3a. Thanks to Jezar |
|
8264 for his help with this. |
|
8265 |
|
8266 Also adjusted the trailing silence in algorithmic alarms as suggested. |
|
8267 Fixes SW3-22. |
|
8268 |
|
8269 Forward and backward compatible |
|
8270 |
|
8271 2) Upgrade 006 |
|
8272 |
|
8273 Fixed SW3-256: Arm sound ldd no longer links to localisation dll. |
|
8274 |
|
8275 Forward and backward compatible |
|
8276 |
|
8277 3) Upgrade 007 |
|
8278 |
|
8279 Fixed bug SW3-25: Requests on logical channels by threads which did not open |
|
8280 that channel will now panic the rogue thread, rather than potentially crashing |
|
8281 the whole machine. |
|
8282 |
|
8283 Added test code to T_SOUND. |
|
8284 |
|
8285 Forward and backward compatible |
|
8286 |
|
8287 4) Upgrade 008 |
|
8288 |
|
8289 Fixed bug SW3-9. Wins fixed (again) to take account of NT daylight saving settings. |
|
8290 |
|
8291 Forward and backward compatible |
|
8292 |
|
8293 5) Upgrade 023 |
|
8294 |
|
8295 Fixed SW3_315. In the sound LDDs play and record dfc functions the value of |
|
8296 iThread.iExit is now tested, and if it is not EExitPending then the function |
|
8297 returns straight away. |
|
8298 |
|
8299 Forward and backward compatible |
|
8300 |
|
8301 6) Pete |
|
8302 1) Upgrade 015 |
|
8303 |
|
8304 SW3-138 Change to CF card interrupt enable scheme. Currently the MTD keeps |
|
8305 card IREQ interrupts enabled in Etna while its open. These are normally |
|
8306 disabled at the card level but enabled in the card during a write operations. |
|
8307 When the media switch is broken or when a dodgy CF card is present, this can |
|
8308 resulting in a watchdog timeout due to the card permanently asserting IREQ and |
|
8309 not responding to the interrupt clear. This change leaves IREQ disabled |
|
8310 in Etna until required for the write operation. |
|
8311 |
|
8312 Forward and backward compatible |
|
8313 |
|
8314 2) Upgrade 016 |
|
8315 |
|
8316 Change only for variants with 2 sockets (ie RackD). Currently on these systems, |
|
8317 when a media change occurs, the PC Card controller does the following |
|
8318 to each socket in turn before turning off Vpc: |
|
8319 - Disable IREQ |
|
8320 - Disable Etna interface |
|
8321 However, because the two sockets have an individual IREQ, but share |
|
8322 the same Data/Address buffers, when the Etna interface is disabled on |
|
8323 the 1st socket, it causes the RESET signal to the 2nd to become |
|
8324 active. This in turn causes the 2nd socket to permanently assert IREQ |
|
8325 (which is now Rdy/Bsy) while its IREQ interrupt could potentially be |
|
8326 enabled. Result is continuous interrupts followed by watchdog |
|
8327 timeout. |
|
8328 The fix is to disable IREQs on both sockets before disabling the Etna |
|
8329 interface. This is done in the variant code for Rack D - ie no impact |
|
8330 on Protea P2. |
|
8331 |
|
8332 Forward and backward compatible |
|
8333 |
|
8334 3) Upgrade 017 |
|
8335 |
|
8336 Change to test program DRVSOAK so that it monitors the amount of |
|
8337 spare RAM while soak test is running. |
|
8338 |
|
8339 Forward and backward compatible |
|
8340 |
|
8341 4) Upgrade 027 |
|
8342 |
|
8343 Fixed SW3-440. Older SanDisk CF cards still sometimes timeout when |
|
8344 running on batteries. Increased timeout in CF card media driver from 60ms |
|
8345 to 70ms. |
|
8346 |
|
8347 Forward and backward compatible |
|
8348 |
|
8349 5) Upgrade 028 |
|
8350 Fixed SW3-434. Allow CIS parsing functions not to reject a CIS which |
|
8351 has incorrect link tuples. |
|
8352 If a CIS chain contains no link tuples then a check is made for a link target |
|
8353 tuple at address 0 in common memory (as before). However, if a link |
|
8354 target isn't found here then we assume a normal end of the CIS chain |
|
8355 (rather than marking the entire CIS chain as invalid as before). |
|
8356 If a CIS chain contains a 'Long Link to attribute memory' tuple but no link |
|
8357 target tuple is found at address: (specified offset x2) then we also check for a |
|
8358 link target tuple at address: (specified offset x1). |
|
8359 |
|
8360 Forward and backward compatible |
|
8361 |
|
8362 7) William |
|
8363 1) Upgrade 020 |
|
8364 |
|
8365 Changes to test programs so that they run from CF card on top of the full |
|
8366 Protea ROM. T_CTRAP, T_POWR, T_UID from TBAS, the rest from TCDT. Still more changes |
|
8367 required to fix "Z:\Test" assumptions and the strange bug with the EIKON console. |
|
8368 T_CTRAP will now fail on WINS debug because it checks the stack depth. |
|
8369 |
|
8370 Forward and backward compatible |
|
8371 |
|
8372 2) Upgrade 021 |
|
8373 |
|
8374 Extend RChangeNotifier to do EChangesSystemTime: effects E32STD.H and KSRC\KS_TIM.CPP, KS_NOFTY.CPP |
|
8375 There is a Defect for this, but it's really an E32 Proposal trying to be noticed... |
|
8376 |
|
8377 Backward compatible, not forward compatible if you take |
|
8378 advantage of this new feature. |
|
8379 |
|
8380 3) Upgrade 022 |
|
8381 |
|
8382 Check in DThread::Cleanup to see if the dying thread is the one which currently owns the event hook. |
|
8383 If so, cause a 'graceful' kernel fault instead of an |
|
8384 'ungraceful' one further down the line (SW3-205). |
|
8385 |
|
8386 Forward and backward compatible |
|
8387 |
|
8388 4) Upgrade 024 |
|
8389 |
|
8390 Fixed SW3-73. Puts the first 8 characters of the Panic/Fault category into the codeAddress |
|
8391 and dataAddress of the last exception information (except, of course, if we are faulting |
|
8392 because of an exception...) |
|
8393 |
|
8394 Forward and backward compatible |
|
8395 |
|
8396 8) Geert |
|
8397 1) Upgrade 029 |
|
8398 |
|
8399 Fully source and binary compatible. Not link compatible, however. See below for details. |
|
8400 |
|
8401 Fixed SW3-11, replacing the following EUSER.DLL exported functions with binary equivalents: |
|
8402 |
|
8403 CArrayFix<TAny>::CArrayFix(TBufRep aRep,TInt aRecordLength,TInt aGranularity); |
|
8404 CArrayFix<TAny>::~CArrayFix(); |
|
8405 CArrayFixFlat<TAny>::CArrayFixFlat(TInt aRecordLength,TInt aGranularity); |
|
8406 CArrayFixFlat<TAny>::~CArrayFixFlat(); |
|
8407 CArrayFixSeg<TAny>::CArrayFixSeg(TInt aRecordLength,TInt aGranularity); |
|
8408 CArrayFixSeg<TAny>::~CArrayFixSeg(); |
|
8409 CArrayVar<TAny>::CArrayVar(TBufRep aRep,TInt aGranularity); |
|
8410 CArrayVar<TAny>::~CArrayVar(); |
|
8411 CArrayPak<TAny>::CArrayPak(TBufRep aRep,TInt aGranularity); |
|
8412 CArrayPak<TAny>::~CArrayPak(); |
|
8413 |
|
8414 All CArrayXxx<TAny> stock instances acquire inline ctors just like the template ones. |
|
8415 If you use any of these classes then to be able to link against the new EUSER.LIB |
|
8416 will require re-compilation. |
|
8417 |
|
8418 A clean build should be sufficient. |
|
8419 |
|
8420 2) Upgrade 030 |
|
8421 |
|
8422 Entirely backward compatible. Forward compatible for all software that doesn't use the new service. |
|
8423 And additional forward incompatible change now allows the element just past the array to be addressed |
|
8424 using CArrayXxx::End(). |
|
8425 |
|
8426 Fixed SW3-374, adding new exported function |
|
8427 |
|
8428 TAny* CArrayFixBase::Back(TInt anIndex) const; |
|
8429 |
|
8430 as well as inline wrappers to CArrayFix<T> and CArrayFix<TAny>. |
|
8431 |
|
8432 These functions provide functionality equivalent to CBufBase::BackPtr(), being CArrayFixXxx::End() |
|
8433 counterparts for fast _backward_ iteration. |
|
8434 |
|
8435 Also introduced modifiable overloads of End() inline wrappers and relaxed index range checks for |
|
8436 CArrayFixXxx::End() as well as Back(). |
|
8437 |
|
8438 9) Jonathan |
|
8439 1) Upgrade 031 |
|
8440 |
|
8441 Fixes SW3-334 |
|
8442 |
|
8443 Debug::SetBreakpoint only allowed breakpoints to be set at 0x2xxxxxxx (and at |
|
8444 0x5xxxxxxx in debug releases). Eikon apps get loaded into memory between |
|
8445 0x9000~ and 0xFFFF~. |
|
8446 |
|
8447 Debug::SetBreakpoint allows breakpoints between 0x9000~ and 0xFFFF~. |
|
8448 |
|
8449 No API change. Doesn't depend or tread on any previous upgrade. |
|
8450 |
|
8451 Forward and backward compatible |
|
8452 |
|
8453 |
|
8454 Version 0.01.105 |
|
8455 ================ |
|
8456 (Made by Pete, 8th May 1997) |
|
8457 |
|
8458 1) Dennis |
|
8459 1) Modified the scheduler to set machine current consumption to either |
|
8460 running or idle current depending on whether the null thread is |
|
8461 being scheduled. |
|
8462 2) Added functions Custom::BacklightCurrentInMilliAmps() and |
|
8463 ImpHal::BacklightCurrentInMilliAmps and code to include the |
|
8464 backlight current in K::TotalCurrentMilliAmps when it is on. |
|
8465 3) Fixed a problem with average battery current calculation - the function |
|
8466 was using a hard-coded tick rate of 10 ticks per second. |
|
8467 4) Changed function DLogicalChannel::SetCurrentConsumptionInMilliAmps from |
|
8468 protected to public since in practice it is always the PDD which calls it. |
|
8469 5) Modified the sound and COM1 PDDs to set the current consumption according |
|
8470 to the device state. |
|
8471 |
|
8472 2) Morgan |
|
8473 1) Digitiser calibrated from values in E-squared Prom on a Cold Start. |
|
8474 2) Calibration preserved over a warm reset. |
|
8475 3) Plugged in crystal error and machine unique Id values from the E-squared. |
|
8476 4) DPlatProcess destructor closes the process code chunk, and Create() adds |
|
8477 newly created code chunks to the list of Kernel chunks. |
|
8478 5) RLoader::LoadProcess() Kill()s the new process on a failed load. |
|
8479 |
|
8480 |
|
8481 3) William |
|
8482 1) Reorganise CDeltaTimer creation to fix SW-4030 |
|
8483 2) Remove TDblQueLInkBase::EnQue() assertion, to fix SW-4991 |
|
8484 3) Reset auto switchoff timeout when an absolute timer completes, to fix SW-4870 |
|
8485 |
|
8486 4) Ann |
|
8487 1) Fixed bug SW-4351 in Math::Mod(). Now returns KErrTotalLossOfPrecision |
|
8488 if an accurate answer cannot be given. |
|
8489 2) Reorganised maths test code so it now builds for ARM. |
|
8490 |
|
8491 |
|
8492 5) Andrew 1) Fixed bug SW-4180. SetReserveL(TInt) is now available only |
|
8493 for CArrayFixFlat<T>, CArrayFixFlat<TAny> and CArrayPtrFlat<T>. |
|
8494 The parameter is new the reserved size of the array, not the |
|
8495 reserved expansion space. |
|
8496 |
|
8497 6) Pete 1) TPcCardSocket::SetSocketStatus() made virtual function. |
|
8498 2) Added the inline function |
|
8499 TPcCardSocket::EventCallBacksRequested(TPccdEvent anEvent). |
|
8500 Used to determine if there are any clients expecting notification of |
|
8501 a particular PC Card event. |
|
8502 3) CROM Media Driver Caps() no longer sets the drive attributes as |
|
8503 KDriveAttRom. |
|
8504 4) Fixed problem parsing Configuration table entry tuples where the |
|
8505 last two entries both have the same configuration entry value. Prior to |
|
8506 this, only the first of the two was reported. |
|
8507 5) ATA Media Driver now leaves card interrupts enabled in the PC Card |
|
8508 Controller h/w, and enables/disables these as required on the card. This |
|
8509 is quicker than the previous scheme where it was continuously enabling |
|
8510 and disabling interrupts in controller h/w on each Write() request. |
|
8511 6) Media Driver Open() failures due to media change now only return |
|
8512 KErrNotReady rather than any other error value. |
|
8513 7) ATA Media Driver now verifies that a partition is a DOS partition |
|
8514 (extended DOS partitions not supported). |
|
8515 8) ATA Media Driver now uses Pulse mode interrupts where possible. |
|
8516 Previously it always used Level mode interrupts. |
|
8517 9) Change to ATA Media Driver - for write requests |
|
8518 which straddle a sector boundary and require prior reading of two |
|
8519 consecutive sectors, the read is now performed with a single read |
|
8520 command (of two sectors) rather than two reads of one sector. |
|
8521 10) Default attribute memory access speed for 3.3V |
|
8522 socket is 600ns rather than 300ns (as per PC Card Spec.). |
|
8523 11) Withered Custom::DriveName() and Custom::PcCardSocketName() in |
|
8524 custom dll. |
|
8525 12) Prevented DPrimaryMedia queueing same DFC twice. |
|
8526 13) Introduce Media Driver Interface version number. |
|
8527 14) Made media driver current consumption values more realistic. |
|
8528 |
|
8529 7) Jonathan |
|
8530 |
|
8531 1) The Debug class won't let the user insert breakpoints or |
|
8532 single-step into ROM code before the aDebugLimit argument to |
|
8533 Debug::Open. Gdbstub sets aDebugLimit to its own location in |
|
8534 ROM, thus preventing breakpoints/stepping into code before it in |
|
8535 ROM (including EUser, EKern etc) which might otherwise break. |
|
8536 |
|
8537 2) The Debug class ignores the user-supplied aDebugLimit in Release |
|
8538 builds and prevents setting of breakpoints/single-stepping |
|
8539 anywhere in the ROM. |
|
8540 |
|
8541 3) Binary incompatibility (affects gdbstub & test code, doesn't |
|
8542 affect RDebug::Printf): |
|
8543 Debugger functions in the RDebug & Debug classes changed to use |
|
8544 thread Ids instead of opaque DThread pointers. Components that |
|
8545 call RDebug::ReadMemory() or RDebug::WriteMemory() should pass in |
|
8546 RThread().Id() as the first argument to these functions to retain |
|
8547 their current functionality. |
|
8548 |
|
8549 4) New DThread* Kern::ThreadFromId(TThreadId) for use by Debug |
|
8550 class. Also changed S::ThreadOpen(... TThreadId, ...) to use it. |
|
8551 |
|
8552 8) Matthew |
|
8553 1) Fixed SW-3783 - by default, the comms driver now uses descriptor |
|
8554 MaxLength() rather than Length() for reads. |
|
8555 Note: This fix has meant a change to the inline function RDevComm::Read(), |
|
8556 so anyone using this function should recompile with the new E32. You |
|
8557 know who you are. |
|
8558 2) Fixed bug in comms driver so that it no longer crashes if you |
|
8559 request that it writes beyond the end of a descriptor. |
|
8560 3) Stopped WINS sound pdd from gurgling when you do a PlaySineWave(). |
|
8561 4) Moved DTMF volume information from sound LDD into the PDDs, since |
|
8562 it depends on the frequency response of the hardware. |
|
8563 5) Tiny amount of fiddling with algorithmic alarm sounds. |
|
8564 6) Made the __WINS_UID() macro expand in WINC builds, implementing the E32 |
|
8565 proposal. |
|
8566 7) Removed the EChangesAll enum from E32STD.H since if it used it may break |
|
8567 forwards compatability. This should only effect BAFL. |
|
8568 8) Added a User::SetCurrencySymbol() function for setting the system-wide |
|
8569 currency symbol. |
|
8570 |
|
8571 9) Graham |
|
8572 1) Added German keyboard table which now gets |
|
8573 released as CAKDP2.GE |
|
8574 2) Released IMPORT_C from TInt64A functions. These |
|
8575 were not being exported anyway. |
|
8576 3) Exported RLibrary::LoadRomLibrary on EPOC |
|
8577 platforms |
|
8578 4) Fixed update of battery statistics when the |
|
8579 main batteries are changed (SW-5096, SW-4228). |
|
8580 5) Fixed update of main and backup battery statuses |
|
8581 when switching on (SW-3401, SW-4479). |
|
8582 6) Changed UK, US, and German keyboard tables to give |
|
8583 the multiplication and division signs when the |
|
8584 appropriate keystrokes are made. |
|
8585 7) Shortened the beeps for Cold Start, Warm Start, |
|
8586 and Kernel Fault. |
|
8587 |
|
8588 |
|
8589 10) Jal |
|
8590 1) Added build infrastructure for ELOCL.GE |
|
8591 (the german localisation dll). |
|
8592 |
|
8593 Version 0.01.104 |
|
8594 ================ |
|
8595 (Made by William, 2nd May 1997) |
|
8596 |
|
8597 1) William |
|
8598 |
|
8599 1) Removed the TRAPD() from DThread::RequestComplete, which still seems |
|
8600 to cause lots of E32USER-CBase 71 and 63 panics when used in the |
|
8601 harsh environment of real test roms |
|
8602 2) Remove reference to GateFunction in EGATE.DEF to fix the T_DUID.DLL test |
|
8603 3) Add extra test cases to TCDT\T_THREAD.CPP |
|
8604 4) Add missing XCUST*.DEF files to BMARM\LI.PRJ |
|
8605 |
|
8606 Version 0.01.103 |
|
8607 ================ |
|
8608 (Made by Morgan, 1st May 1997) |
|
8609 |
|
8610 1) Graham |
|
8611 |
|
8612 1) Fixed a problem with the code which looks for both shift |
|
8613 keys when switching on after a warm reset in order to |
|
8614 change it into a cold reset. |
|
8615 |
|
8616 2) Fixed a problem with constructing the encrypted password |
|
8617 in the super page. |
|
8618 |
|
8619 Version 0.01.102 |
|
8620 ================ |
|
8621 (Made by Morgan, 30th April 1997) |
|
8622 |
|
8623 1) Pete |
|
8624 1) Change to PC Card Serial Driver (EUART3.PDD) for Rack D. Added |
|
8625 followers for 16550 registers IER,LCR,MCR rather than relying on |
|
8626 them being read/write registers. Tested this driver using |
|
8627 COMMS(033) app. Sent/received files at various baud rates up to |
|
8628 57600 (didn't test at 115K) using XMODEM without any problems. The |
|
8629 above driver works with the following PC Card Serial Ports/Modems: |
|
8630 - Socket I/O serial port |
|
8631 - Dacom Goldcard V34 + Fax |
|
8632 - Hayes Optima 288 |
|
8633 2) Now possible for ATA media driver to return the following errors |
|
8634 on read or write command fails: |
|
8635 KErrCorrupt - Bad block detected / sector ID error. |
|
8636 KErrWrite - Write fault. |
|
8637 KErrTimedOut - Timeout waiting for ATA controller to negate |
|
8638 BSY bit. |
|
8639 KErrLocked - Timeout waiting for ATA controller to assert |
|
8640 RDY bit). |
|
8641 KErrGeneral - Protocol error (wrong state of DRQ bit |
|
8642 detected). |
|
8643 KErrUnknown - General ATA controller error. |
|
8644 KErrCancel - Command aborted |
|
8645 KErrDied - Uncorrectable error encountered. |
|
8646 Prior to this, all the above conditions resulted in KErrTimedOut. |
|
8647 (All of these get translated as before by F32 but the extra |
|
8648 information from the driver is useful). |
|
8649 3) Format command now implemented using ATA WriteSectors command rather |
|
8650 than FormatTrack. This is because there seem to be a variety of |
|
8651 implementations of the FormatTrack command and also it can take a significant |
|
8652 time to complete (>200ms) on some cards which require CHS addressing. |
|
8653 4) Changes to various trace o/ps to prevent system watchdog timeouts on media |
|
8654 changes with tracing on. |
|
8655 |
|
8656 2) William |
|
8657 1) Use Win32 IsBadReadPtr/IsBadWritePtr functions to provide better emulation of |
|
8658 EPOC32 kernel exception handling (should allow us to handle the access violations |
|
8659 that the kernel has contingency plans for, even under the MSDEV debugger). |
|
8660 2) Fix SW-1799 by preventing the Win32 thread priority from being raised too high |
|
8661 3) Fix SW-???? by ignoring the KNotifyIfDie flag when WINS threads die (as per EPOC32). |
|
8662 4) Trace the Win32 Thread ID and the WINS thread name in the debug window (WINS debug builds) |
|
8663 5) Fix SW-4346 by making CalcChunkHeapCompression wary of corrupt heaps and wrapping the |
|
8664 invocation from ChunkCompressAll in a suitable exception trap. |
|
8665 6) Arrange to keep iHandles valid (but empty) after thread cleanup |
|
8666 7) Fix SW-3718 by making ChangeNotifier handles thread-relative. |
|
8667 8) Prevent WINS RProcess::SetPriority from changing the Win32 process priority (SW-1799) |
|
8668 9) Limit the size of a heap cell to 1 Gigabyte (SW-4528) |
|
8669 10) Fix SW-4389 by ignoring UserSvr::InitRegisterCallback calls after initial bootstrap. |
|
8670 11) Fix SW-3527 by ensuring that the SYSTEM.INI screenwidth is rounded up to a multiple of 16. |
|
8671 12) Fix T_QUE, T_DLL1, T_DLL2 and T_SVR2 test failures. |
|
8672 |
|
8673 3) Graham |
|
8674 1) Fixed WINS problem with expanded MachineInfo |
|
8675 structure. |
|
8676 |
|
8677 4) Bruce |
|
8678 1) Two field dates are now accepted for all locales. Fixed year 2000 bug. |
|
8679 Removed hard-coded 'am'/'pm' and replaced these with data |
|
8680 retrieved from the localisation dll. |
|
8681 |
|
8682 5) Ann |
|
8683 1) Fixed bug in TLex8::ScndigAfterPoint() (SW-4304) - now reads in first 18 significant |
|
8684 digits rather than just first 18 digits. |
|
8685 2) Fixed bug in TLex8::Val() (SW-4355) - overflow in some cases was being returned as |
|
8686 positive regardless of actual sign. |
|
8687 |
|
8688 Version 0.01.101 |
|
8689 ================ |
|
8690 (Made by Graham, 29rd April 1997) |
|
8691 |
|
8692 1) Graham |
|
8693 1) SW-1921 Fixed the occasional load click by disabling interrupts while creating the click. |
|
8694 2) Added localised keyboard tables to the P2 build |
|
8695 system and created CAKDP2.UK and CAKDP2.US. CAKDP2.DLL |
|
8696 remains and gives a layout consistent with the keyboards |
|
8697 currently on our Limes. |
|
8698 3) Change the rombuilding system to accept a localisation |
|
8699 parameter. So you may use "rom rel p2 uk". If you specify |
|
8700 just "rom rel p2", you get what you always used to. |
|
8701 4) SW-3330 Fixed repeating keys when entering 'Raw' |
|
8702 mode in the text window server while a key is depressed. |
|
8703 5) SW-3837 introduced ELangInternationalFrench |
|
8704 6) SW-4181 allocated WINS DLL address for MEDCRM.PDD |
|
8705 7) Solved problem with watchdog timer going off sometimes |
|
8706 when coming out of standby. |
|
8707 8) Changed Hal information names in preparation for the |
|
8708 final ROM. |
|
8709 9) Changed supply voltage information so that it |
|
8710 never returns a voltage above the stated maximum |
|
8711 for that battery and returns zero millivolts if |
|
8712 the battery status is EZero. Changed the maximum |
|
8713 voltage for the main battery to 3100mV and for the |
|
8714 backup battery to 3200mV. SW-4194 SW-4237. |
|
8715 10) Implemented the reading of ADC channel 7 on a cold |
|
8716 boot in order to detect when test department boot |
|
8717 to final test is required. |
|
8718 11) SW-3563 Displaying years >2000 as 2 digits in |
|
8719 abbreviated form. |
|
8720 12) SW-4339 Set CurrencyNegativeInBrackets to EFalse |
|
8721 in both the US and UK localisation dlls. |
|
8722 13) Added structure for UserHal::CpuInfo(TDes8& aInfo) |
|
8723 14) Added UserSvr::WsRegisterSwitchOnScreenHandling(). |
|
8724 If a window server wants to take control of |
|
8725 turning on the screen, then it should call this |
|
8726 function with ETrue and may then call |
|
8727 UserSvr::WsSwitchOnScreen(). It may relinquish |
|
8728 control back to the Os by calling the register |
|
8729 function again with EFalse. |
|
8730 15) Added the functions: |
|
8731 UserHal::SaveXYInputCalibration(); |
|
8732 UserHal::RestoreXYInputCalibration(aType); |
|
8733 Restore takes an argument that may be EFactory (to |
|
8734 restore the factory set calibration) or ESaved to |
|
8735 restore the previously saved calibration. |
|
8736 16) Added the following to the Machine Information |
|
8737 structure: |
|
8738 TInfoName iProcessorName |
|
8739 TInt iProcessorClockInKHz |
|
8740 TInt iSpeedFactor |
|
8741 TInt iMaximumDisplayColors |
|
8742 |
|
8743 2) William |
|
8744 1) Added WINS SYSTEM.INI support for "MegabytesOfFreeMemory" which also turns on the |
|
8745 mechanism for limiting the total amount of memory which WINS can allocate. |
|
8746 2) Number some more enumerated types associated with panics and faults. Note that this |
|
8747 includes removing #ifdef __XCON in KPWINS\KP_STD.H so that the KPWINS platform fault |
|
8748 numbers will change: prior permission was obtained from the BC police. |
|
8749 3) In DEBUG builds, change RHeap::Free to fill the released block with 0xDE rather than 0 |
|
8750 4) Add __ASSERT_DEBUG to catch double insertion of a TDblQueLink (and fix two places in |
|
8751 the Base which weren't constructing a link when creating an object). |
|
8752 5) Fix SW-3707 by not panicing unnecessarily in DPlatProcess::AllocateDataSectionBase() |
|
8753 6) Fix SW-2104 in DTimer::Cancel(), by not calling RequestComplete on a dead thread, and |
|
8754 not doing the expensive timer scan in DThread::Cleanup(). |
|
8755 7) Fix SW-1185 by interpreting EKeyIncContrast to mean "bigger number in SetContrast" in the |
|
8756 text window server. |
|
8757 |
|
8758 3) Morgan |
|
8759 1) Preserved the password and its enabled state over a warm reset. |
|
8760 |
|
8761 4) Matthew |
|
8762 1) Added PlaySineWave() function to RDevSound. Also added an iMaxSineWaveFrequency |
|
8763 member variable to the sound caps structure. Frequencies are in Hz. |
|
8764 2) Changed sound LDD so that it gets the alarm name via the kernel's |
|
8765 locale-message-text service. LS_SND.CPP and K32LSND.H have thus been scrapped. |
|
8766 3) Fixed bug in sound LDD which caused a kernel panic if FlushRecordBuffer() was |
|
8767 called after a record request had failed with bad power. |
|
8768 |
|
8769 |
|
8770 Version 0.01.100 |
|
8771 ================ |
|
8772 (Made by Graham, 23rd April 1997) |
|
8773 |
|
8774 1) Dennis |
|
8775 1) Modified ARM boot code to automatically work out the size and bus width of |
|
8776 the ROMs connected to CS0 and CS1 chip selects. This information is stored |
|
8777 in the super page in the iRomConfig entries. Both banks of ROM are then mapped |
|
8778 to consecutive linear addresses. |
|
8779 2) Added a new function Hal::PrepareForRepro, which re-maps all the ROM in the |
|
8780 machine. This is to make sure repro works correctly even if ROM page shadowing |
|
8781 is in use. This function uses the information stored in the iRomConfig entries |
|
8782 in the super page to work out which ROM to map and how to map it. |
|
8783 3) Removed ROM mapping calls from VA_HW.CPP for all variants, and added code to set |
|
8784 up the ROM speed and type. For P2 variant, added code to set up the ROM size |
|
8785 for CS1 and the total ROM size. This is required to ensure that repro will work |
|
8786 correctly even if the CS1 ROM is initially blank. |
|
8787 4) Added code to SF_MAIN.CPP to load an LDD (BOOT.LDD) from Z: immediately prior to |
|
8788 loading the window server. This allows any shadowing of the ROM for bug fixes to |
|
8789 be done. |
|
8790 5) Added a new function UserHal::RomInfo to read the iRomConfig entries from the |
|
8791 super page. Updated T_INF.CPP to display this information. |
|
8792 6) Modified ARM boot code to allocate 1K for each page table instead of 4K as it |
|
8793 does at the moment. Also use page tables 6 onwards for ROM mapping instead of |
|
8794 8 onwards, since page tables 6 and 7 are unused at the moment. |
|
8795 This saves 44K RAM for the standard Protea configuration. |
|
8796 7) Modified ARM boot code to make checking the RAM configuration non-destructive. |
|
8797 |
|
8798 2) Graham |
|
8799 1) SW-3765 Export TReal96::IsZero by number instead of by name. |
|
8800 2) SW-3760 Removed E32VIRT.H from the release |
|
8801 3) SW-3759 Removed temporary __ARRAY_NO_PTRS__ from E32DEF.H |
|
8802 and appropriate function definitions. |
|
8803 4) SW-3058 Removed __DECLARE_DLL_UID(). |
|
8804 5) SW-3480 Removed default Southern daylight savings |
|
8805 time from the UK localisation DLL. |
|
8806 6) SW-3565 Implemented ~ as FN+J on Lime keyboards |
|
8807 7) SW-3564 Implemented the dial key as Fn+Menu on a |
|
8808 Lime and as F3 on WINS. This comes through as |
|
8809 EStdKeyDial and EKeyDIal (in E32KEYS.H). |
|
8810 |
|
8811 3) Morgan |
|
8812 1) Moved the locale configuration into the SuperPage to preserve it |
|
8813 over a warm-reset. |
|
8814 2) Implemented TDes::TrimAll(); |
|
8815 3) Checked Uid[1] in S::PhysicalDeviceLoad and S::LogicalDeviceLoad. |
|
8816 Added WINS Uids to the device drivers in the Base. |
|
8817 4) Cold reset is now: Warm-reset followed by LeftShift+RightShift+On |
|
8818 to make it harder to do by accident. |
|
8819 5) Fixed K::TickCounter synchronisation after standby, and initialised |
|
8820 iLastLock for locked timers. |
|
8821 |
|
8822 4) Matthew |
|
8823 1) Fixed SW-2855 - the TRegion::Sort() and CArrayXxxBase::Sort() functions |
|
8824 have been changed from having no return value to returning TInts, they |
|
8825 will return KErrGeneral if there is a stack overflow. |
|
8826 2) Fixed blitting bug in eiger text window server which caused blocks of |
|
8827 screen to be cleared. |
|
8828 3) Fixed bug in sound driver which made it crash when given a zero-length |
|
8829 sample. |
|
8830 |
|
8831 5) Jal |
|
8832 1) Added TLocaleMessageText to E32SVR.H |
|
8833 |
|
8834 6) Alastair |
|
8835 1) Changed e32\wsrc\ws_main.cpp so that the eikon shell is not loaded |
|
8836 if the machine is in test department boot mode. |
|
8837 2) Created new project e32\etest producing an executable which will be |
|
8838 loaded instead of ewsrv.exe if the machine is in test department |
|
8839 boot mode. This executable will attempt to load ewsrv.exe and |
|
8840 final.exe from the root directory of a cf card containing euser.dll, |
|
8841 edisp.dll and econs.dll from the base in directory D:\system\libs. |
|
8842 If this attempt fails, etest.exe will try to load elink.exe from |
|
8843 Z:\system\libs which will open the remote link so that the machine |
|
8844 can be booted down the serial port. If this fails etest.exe will |
|
8845 attempt to boot the machine up normally. |
|
8846 |
|
8847 7) Pete |
|
8848 1) Fixed 'Emergency power down with CF card powered results in cold |
|
8849 reset' (SW-3620). This was due to QuickEmergencyStandby() not |
|
8850 disabling the Etna's wait state controller properly. |
|
8851 2) Force ATA and CROM media drivers on ARM to only return KErrNotReady |
|
8852 rather than any other error value when a request is interrupted by a |
|
8853 media change. |
|
8854 3) Added the function CardIsReady() to class DPcCardCntrl. This should |
|
8855 be used periodically while using the PC Card Controller to check that |
|
8856 a media change hasn't occured. The new function is a quicker alternative |
|
8857 to the function CardIsReadyAndVerified(). The later is now only used once |
|
8858 at the start of each interface with the controller. |
|
8859 4) Requests to Write or Format the CROM card now return KErrAccessDenied |
|
8860 rather than KErrNotSupported. |
|
8861 5) PC Card Controller now calls P::ResetAutoSwitchOffTimer() on each |
|
8862 call off RPccdWindow::SetupChunkHw() to stop the machine going into |
|
8863 standby in the middle of a long write to a CF card etc. |
|
8864 |
|
8865 Version 0.01.099 |
|
8866 ================ |
|
8867 (Made by Graham, 18th April 1997) |
|
8868 |
|
8869 1) William |
|
8870 1) Fix SW-3331 by ignoring Undertakers owned by threads which have themselves already died |
|
8871 2) Tweak UPWINS\BLD.CMD to bootstrap ECONS.LIB more reliably |
|
8872 3) Arrange for absolute timers to complete with KErrOverflow for times too far in the future |
|
8873 instead of treating them as times in the past (starts to fix SW-3566) |
|
8874 |
|
8875 2) Graham 1) Fixed leaving without a trap harness. This was |
|
8876 calling a slow executive function to panic the |
|
8877 thread inside a fast executive trap function. |
|
8878 Moved the call to panic to the user side. |
|
8879 2) Added V32ARMP2.H to INCK release. |
|
8880 3) Fixed a problem with 098 which meant that |
|
8881 EKERN.DLL was linking to ELOCL.US rather |
|
8882 than ELOCL.DLL (In WINS). |
|
8883 4) Included device driver def files in the INCK |
|
8884 release. |
|
8885 |
|
8886 3) Matthew |
|
8887 1) Fixed Sound device driver's DTMF tone generating |
|
8888 interrupt handler. |
|
8889 |
|
8890 4) Ann |
|
8891 1) Fixed doCalculator() function so that KRealFormatCalculator mode displays in no exponent |
|
8892 mode only if full precision may be seen in this mode or if no mor precision will be available |
|
8893 in exponent mode. |
|
8894 2) Fixed doNoExponent() function so that KRealFormatNoExponent mode reduces the number of |
|
8895 significant figures used if the given no won't fit. Now only raises an error if value is too |
|
8896 big or too small to fit into the given width. |
|
8897 |
|
8898 |
|
8899 Version 0.01.098 |
|
8900 ================ |
|
8901 (Made by Graham, 16 April 1997) |
|
8902 |
|
8903 Note: This release is neither 100% binary compatible with 097, nor 100% source compatible. |
|
8904 The binary incompatibility is to do with UID allocation changes, the source incompatibility |
|
8905 with the correction of "overriden". |
|
8906 The UID changes are such that narrow release DLLs should work as they are. Other targets need |
|
8907 tweaking, which maktran 063 will do for you. See below for details. |
|
8908 |
|
8909 1) GrahamA |
|
8910 |
|
8911 IMPLEMENTATION OF UNICODE CHARACTER CLASSIFICATION, CONVERSION AND COLLATION |
|
8912 |
|
8913 NEW FILES |
|
8914 e32\inc\collate.h |
|
8915 header for Unicode collation system |
|
8916 |
|
8917 e32\inc\unicode.h |
|
8918 header for Unicode character classification system |
|
8919 |
|
8920 e32\unicode\collate.cpp |
|
8921 Unicode collation system |
|
8922 |
|
8923 e32\unicode\unicode.cpp |
|
8924 Unicode character classification and attribute retrieval |
|
8925 |
|
8926 e32\unicode\unitable.cpp |
|
8927 tables of Unicode character attributes; this file is generated by the READTYPE utility from unidata2.txt. |
|
8928 |
|
8929 CHANGED FILES |
|
8930 e32\bmarm\elocl.mak: |
|
8931 e32\bmisa\elocl.mak: |
|
8932 e32\bmx86\elocl.mak: |
|
8933 e32\bwins\elocl.mak: |
|
8934 added ls_unic.cpp to list of source files |
|
8935 |
|
8936 e32\bmarm\eloclu.def: |
|
8937 e32\bmarm\eloclud.def |
|
8938 e32\bmisa\eloclu.def: |
|
8939 e32\bmisa\eloclud.def |
|
8940 e32\bmx86\eloclu.def |
|
8941 e32\bwins\eloclu.def |
|
8942 removed UpperTable, LowerTable, FoldTable, CollTable, TypeTable; added CharSet. |
|
8943 (where relevant) added ls_unic.cpp to list of source files |
|
8944 |
|
8945 e32\bmarm\euser.def: |
|
8946 e32\bmarm\euser.frz: |
|
8947 e32\bmarm\euserd.def: |
|
8948 e32\bmarm\euserd.frz: |
|
8949 e32\bmisa\euser.def: |
|
8950 e32\bmisa\euser.frz: |
|
8951 e32\bmisa\euserd.def: |
|
8952 e32\bmisa\euserd.frz: |
|
8953 e32\bmx86\euser.def: |
|
8954 e32\bmx86\euser.frz: |
|
8955 e32\bwins\euser.def: |
|
8956 e32\bwins\euser.frz: |
|
8957 added TChar::GetUpperCase, TChar::GetLowerCase |
|
8958 |
|
8959 e32\bmarm\euser.mak: |
|
8960 e32\bmisa\euser.mak: |
|
8961 e32\bmx86\euser.mak: |
|
8962 e32\bwins\euser.mak: |
|
8963 added collate.cpp, unicode.cpp and unitable.cpp to list of source files, and collate.h and unicode.h |
|
8964 to dependencies where needed |
|
8965 |
|
8966 e32\bmarm\euseru.def: |
|
8967 e32\bmarm\euseru.frz: |
|
8968 e32\bmarm\euserud.def: |
|
8969 e32\bmarm\euserud.frz: |
|
8970 e32\bmisa\euseru.def: |
|
8971 e32\bmisa\euseru.frz: |
|
8972 e32\bmisa\euserud.def: |
|
8973 e32\bmisa\euserud.frz: |
|
8974 e32\bmx86\euseru.def: |
|
8975 e32\bmx86\euseru.frz: |
|
8976 e32\bwins\euseru.def: |
|
8977 e32\bwins\euseru.frz: |
|
8978 added TChar::Compose, TChar::Decompose, User::Fold (new overload), TUnicode::Fold, |
|
8979 TChar::GetBDCategory, TChar::GetCJKWidth, TChar::GetCategory, TUnicode::GetCategory, |
|
8980 TChar::GetCombiningClass, TChar::GetInfo, TCHar::GetLowerCase, TUnicode::GetLowerCase, |
|
8981 TChar::GetNumericValue, TChar::GetTitleCase, TChar::GetUpperCase, TUnicode::GetUpperCase, |
|
8982 TChar::IsAssigned, TChar::IsMirrored, TChar::IsTitle, User::TitleCase, |
|
8983 TChar::TranslateFromUnicode,TChar::TranslateFromUnicode. |
|
8984 changed entry for RLogicalChannel::DoCreate to suit new signature |
|
8985 |
|
8986 e32\dsound\d_sound.cpp |
|
8987 changed an erroneous use of TChar::Fold to TChar::UpperCase |
|
8988 |
|
8989 e32\inc\d32ftim.inl |
|
8990 corrected penultimate arg to RLogicalChannel::DoCreate to suit new type (const TDesC8 *, not const TDesC 8). |
|
8991 |
|
8992 e32\inc\e32std.h |
|
8993 added Unicode functions and constants to TChar class |
|
8994 added Unicode functions to User class |
|
8995 |
|
8996 e32\inc\e32std.inl |
|
8997 added inline definitions of TChar::Fold and TChar::TitleCase |
|
8998 |
|
8999 e32\inc\k32std.h |
|
9000 added declarations for ExecHandler::GetLocaleCharSet, Locl::CharSet, K::CharSet |
|
9001 |
|
9002 e32\inc\u32std.h |
|
9003 added definition of LCharSet and removed character type bits (__U, __L, etc.), from Unicode build |
|
9004 defined EExecGetLocaleCharSet and DExecGetLocaleCharSet |
|
9005 added declaration for Exec::GetLocaleCharSet |
|
9006 |
|
9007 e32\kearm\ke_int.cpp |
|
9008 e32\keisa\ke_int.cpp |
|
9009 e32\kex86\ke_int.cpp |
|
9010 e32\kpwins\kp_utl.cpp |
|
9011 added ExecHandler::GetLocaleCharSet to the dispatch table |
|
9012 |
|
9013 e32\ksrc\ks_dat.cpp |
|
9014 in the Unicode build, removed K::TypeTable, K::UpperTable, K::LowerTable, K::FoldTable and K::CollTable |
|
9015 and added K::CharSet |
|
9016 |
|
9017 e32\ksrc\ks_exec.cpp |
|
9018 added Unicode functionality to existing functions; added ExecHandler::GetLocaleCharSet |
|
9019 |
|
9020 e32\ksrc\ks_ini.cpp |
|
9021 in the Unicode build, removed initialisation of K::TypeTable, K::UpperTable, K::LowerTable, |
|
9022 K::FoldTable and K::CollTable and added initialisation of K::CharSet |
|
9023 |
|
9024 e32\lsrc\ls_lat1.cpp |
|
9025 in the Unicode build, used preprocessor directives to remove unused material |
|
9026 |
|
9027 e32\lsrc\ls_table.cpp |
|
9028 added preprocessor directives to select Unicode-build or Ascii-build material as appropriate |
|
9029 |
|
9030 e32\lsrc\ls_std.h |
|
9031 in the Unicode build, removed the LAlphabet class and added the TheCharSet object |
|
9032 |
|
9033 e32\tbas\t_key.cpp |
|
9034 e32\t_cdt\t_buf.cpp |
|
9035 collation tests now work with new Unicode stuff |
|
9036 |
|
9037 e32\t_cdt\t_char.cpp |
|
9038 now works with new Unicode stuff; and in the Unicode build tests character classification and |
|
9039 my new collation system |
|
9040 |
|
9041 e32\tlocale\t_chset.cpp |
|
9042 now works with new Unicode stuff |
|
9043 |
|
9044 e32\ucdt\uc_des.cpp |
|
9045 changed two erroneous uses of TCharF to TCharUC |
|
9046 |
|
9047 e32\ucdt\uc_des16.cpp |
|
9048 e32\ucdt\uc_des8.cpp |
|
9049 Capitalize and CopyCP convert first letter to title case, not upper case, in the Unicode build |
|
9050 |
|
9051 e32\ucdt\uc_exec.cpp |
|
9052 character classification and conversion functions (TChar::IsUpper, etc.) now work for all |
|
9053 Unicode values in the Unicode build; added new Unicode-only functions like TChar::IsMirrored |
|
9054 and TChar::GetNumericValue |
|
9055 |
|
9056 e32\ucdt\uc_func.cpp |
|
9057 the Unicode versions of Mem::CompareC now use the Unicode locale-specific string-based collation |
|
9058 system implemented by the TCollate class in the new source file collate.cpp |
|
9059 |
|
9060 e32\ucdt\uc_ksvr.cpp |
|
9061 changed type of penultimate arg to RLogicalChannel::DoCreate from const TDesC* to const TDesC8* |
|
9062 so that it works in the Unicode build: this caused changes to exported function signatures in the |
|
9063 .def and .frz files |
|
9064 |
|
9065 e32\ucdt\uc_lex16.cpp |
|
9066 e32\ucdt\uc_lex8.cpp |
|
9067 changed two erroneous uses of TChar::Fold to TChar::UpperCase: folding isn't guaranteed to make |
|
9068 characters upper case, and doesn't in the Unicode build, but UpperCase is |
|
9069 |
|
9070 e32\upmarm\up_exec.cpp |
|
9071 e32\upmx86\up_exec.cpp |
|
9072 e32\upwins\up_exec.cpp |
|
9073 added Exec::GetLocaleCharSet |
|
9074 |
|
9075 e32\upmarm\up_lib.cpp |
|
9076 e32\upmx86\up_lib.cpp |
|
9077 changed an erroneous use of CompareC to CompareF |
|
9078 |
|
9079 2) William |
|
9080 1) Used Win32 InterlockedIncrement/InterlockedDecrement to implement WINS LockedInc and LockedDec |
|
9081 2) Implemented first-cut exception->leave translation for WINS (as per MARM) |
|
9082 3) Added exception trapping to DThread::RequestComplete, to fix SW-2274 |
|
9083 4) Arranged not to complete requests if the requesting thread has already died |
|
9084 5) Enhance T_HEAP test to include truly concurrent access to shared heaps |
|
9085 6) Fix incorrect semaphore count on default heaps (as shown by the revised T_HEAP!) |
|
9086 7) Correct implementation of DThread::GetRamSizes for shared heaps, to fix SW-2671 |
|
9087 8) Fix WINS implementation of RDebug::Print, which was assuming a zero-terminated string |
|
9088 9) Add T_REASON, a utility which loops printing the restart reason using RDebug::Print. |
|
9089 This isn't a test program as such, but can be put on a CF card as \System\libs\wserv.exe |
|
9090 to help debug endless restarting. |
|
9091 10) Improve DSession destructor to dequeue any messages which are marked EDelivered, in the |
|
9092 hope of fixing SW-1407 and friends. |
|
9093 11) Implement scheme to orphan kernel CObjects when their owner goes away, to fix SW-1665 (again!) |
|
9094 |
|
9095 3) Dennis |
|
9096 1) Modified prefetch abort, data abort and undefined instruction exception |
|
9097 handlers in ke_int.cpp to save correct context if exception occurs in |
|
9098 supervisor mode. |
|
9099 |
|
9100 4) Matthew |
|
9101 1) Fixed SW-2408 (problems with signals when you come out af standby). |
|
9102 2) Fixed SW-3293 (cancelling fallback alarm causes panic). |
|
9103 3) Fixed bug with emergency power down during fallback sound. |
|
9104 4) Increased DTMF buffer so if can now cope with 32 characters. |
|
9105 5) Made kernel noises (keyclicks, buzzes and sound driver activity) obey |
|
9106 the state of the sound info. KErrAccessDenied is returned when sound |
|
9107 cannot be played. Fixes SW-2725. |
|
9108 6) Yet more fiddling with algorithmic alarm sounds - fixed nasty distortion |
|
9109 occuring with chimes. |
|
9110 7) Fixed potential memory leaks in CSecurityBase and CConsoleBase. |
|
9111 8) Fixed TTime::RoundUpToNextMinute() and TTime::operator+(TTimeIntervalMonth) |
|
9112 so they now handle negative values correctly. |
|
9113 9) Fixed SW-1974 (Switching on IrDA gives 0xff in Rx buffer). |
|
9114 10) Changed comms PDD so that RS232 hardware is not enabled when IrDA is in use. |
|
9115 11) Changed "KeyClickOverriden" to "KeyClickOverridden" in lots of places. |
|
9116 12) Fixed SW-3097 (Wins Hal switch statement missing a break after TickPeriod). |
|
9117 |
|
9118 5) Graham |
|
9119 1) Fixed (with help from Morgan) booting up into a text |
|
9120 shell on a normal eikon-based machine by placing |
|
9121 the appropriate components (EWSRV.EXE EUSER.DLL ECONS.DLL |
|
9122 EDISP.DLL ESHELL.EXE) in the \system\libs directory on |
|
9123 a CF card. |
|
9124 2) Fixed SW-3163 (Alarms when the case is closed and |
|
9125 'switch off when case is closed' is enabled). |
|
9126 3) Fixed SW-3091 (Auto switch of in the presence of |
|
9127 'switch on when case opens'). |
|
9128 4) Fixed SW-2893 (UserHal::MaxDisplayContrast(TInt&) in |
|
9129 WINS). |
|
9130 |
|
9131 6) Geert |
|
9132 1) Removed the encoding of build variants in uid[0] of E32 images. Introduced |
|
9133 differentiation between EXEs and DLLs in uid[0]. EXEs have a uid[0] of |
|
9134 KExecutableImageUid [0x1000007a], DLLs come with one of KDynamicLibraryUid |
|
9135 [0x10000079]; ie, DLLs don't change for narrow release builds, EXEs get the |
|
9136 value previously used for narrow debug builds. EXEs won't load unless they |
|
9137 have their uid[0] changed. |
|
9138 |
|
9139 2) Changed lots of other private and public UIDs, taking care to preserve |
|
9140 compatibility for ARM builds. Unless you release an EXE you're alright, and |
|
9141 even EXEs can be fixed at rom build time. |
|
9142 UIDs of interest can be found in a bare <e32uid.h>, which, in addition to |
|
9143 KExecutableImageUid and KDynamicLibraryUid contains KLogicalDeviceDriverUid |
|
9144 and KPhysicalDeviceDriverUid--uid[1] values for device drivers--and unrelated |
|
9145 KMachineConfigurationUid. |
|
9146 |
|
9147 3) Removed the second PREP stage from the rom build process. |
|
9148 |
|
9149 7) Morgan |
|
9150 1) Fixed a chunk problem with RAM loading the same process twice. |
|
9151 |
|
9152 8) Pete |
|
9153 1) Fixed 'Panic in DPlatMediaChange::TickService()' in WINS |
|
9154 (SW-1962). Now ignore further media change events (F5 keydown) |
|
9155 while the door state is open (as per ARM). |
|
9156 2) Fixed problems parsing the CIS of Multifunction PC Cards. |
|
9157 3) Temporarily fixed 'Occasional Write() / Format() |
|
9158 timeouts when accessing CF card' (SW-3311) by increasing the |
|
9159 WaitForNotBusy() watch dog in the CF media driver from 40mS to 60mS. |
|
9160 4) Door close event in WINS (F5 keyup) now processed |
|
9161 when the machine is in standby. |
|
9162 5) CRom(Prog) media driver (MEDCRR.PDD) now |
|
9163 calculated the CRom size by attempting to read the intelligent ID |
|
9164 from each flash device. This driver now has 'high' priority to allow |
|
9165 it to open in preference to the normal CRom media driver. |
|
9166 |
|
9167 |
|
9168 Version 0.01.097 |
|
9169 ================ |
|
9170 (Made by ???, ??? April 1997) |
|
9171 |
|
9172 1) MarkT |
|
9173 1) Added Early write completion to serial driver - D_COMM.CPP. |
|
9174 To enable set the flag KConfigWriteBufferedComplete in the |
|
9175 iHandshake of TCommConfigV01 and writes will be completed when |
|
9176 they are in the transmit buffer as oppose to waiting until they are |
|
9177 in the hardware. To flush data from the transmit buffer either |
|
9178 use Write(0), (Write(0) will not complete until transmit buffer |
|
9179 is empty), or unset KConfigWriteBufferedComplete and do a |
|
9180 write as normal. |
|
9181 |
|
9182 2) Pete 1) Change to CF media driver (MEDATA.PDD) so that this reverts to CHS |
|
9183 addressing if the LBA disk size is found to be invalid. Allows us to |
|
9184 work with Epson PC ATA card. |
|
9185 2) Fixed a problem such that the second socket on rack D (E:) wasn't |
|
9186 properly being reset following a media change (DPcCardSocket::Reset1() |
|
9187 wasn't being called) - only applies to racks modified for |
|
9188 VPC control via the CHRGEN signal. |
|
9189 3) Pc Card Controller now fully supports Memory Space Description fields |
|
9190 when parsing Configuration Table Entry tuples. |
|
9191 4) Pc Card Controllers attribute memory chunk increased from 8K to 64K. |
|
9192 5) Added the Delaware variant (VARMPG). |
|
9193 6) Added PC Card Serial Driver (EUART3.PDD) for Rack D - ie providing a third |
|
9194 serial port on Rack D when PC Card Modem or Serial card is inserted into the PC |
|
9195 Card Socket (68pin socket). To use it you have to switch the '3.3V/5V' switch to |
|
9196 the 5V position (LEFT) and apply a 5V/500mA supply to the '+5V'pin next to this |
|
9197 switch. Unfortunately, without a modification to Rack D it is not possible to |
|
9198 turn this socket on/off under s/w control. The driver assumes the card is |
|
9199 permanently powered and if the rack goes into standby (or the media change switch |
|
9200 is operated) then the card is no longer useable. |
|
9201 This driver has only received limited testing:- |
|
9202 - With a Serial PC Card it passes T_SERIAL up to 115K baud as long as the power-off |
|
9203 tests are disabled and the serial port FIFO is enabled. (Passes T_SERIAL up to |
|
9204 19200baud with FIFO disabled). |
|
9205 - Dacom V34 PC Card modem responds to an AT<CR> with T_TERM. |
|
9206 7) Change to CROM media driver so that the page latch |
|
9207 is reset after each access. This ensures that the page containing the |
|
9208 cards CIS is always selected at the start of each access. |
|
9209 8) Fixed problem where DPccdCntrlInterface::DoNotifyChange was adding the same TPccdCallBack |
|
9210 to two event queues. This resulted in the wrong event callback being |
|
9211 called on media change. This eventually lead to the situation where |
|
9212 the DMediaChange Dfc wasn't queued and the door close event was |
|
9213 missed. Any subsequent access to the CF card returned KErrNotReady. |
|
9214 (Fixes SW-2557) |
|
9215 |
|
9216 3) William |
|
9217 1) Fixed HeapOffset/ChunkCompressAll interactions to ensure heap safety: the HeapOffset |
|
9218 is now set by RHeap::ChunkHeapCreated after the RHeap has been fully created, and |
|
9219 ChunkCompressAll now respects the RHeap critical sections. |
|
9220 2) Add "DebugMask nnn" facility to WINS SYSTEM.INI (sadly you have to specify the |
|
9221 bitmask as a decimal number, but it's still useful). |
|
9222 3) Start adding explicit numbering to some of the panic enumerated types, in particular |
|
9223 TBasePanic, TCdtPanic and TExcType. |
|
9224 4) Implement CConsoleTextWin::SetTitle |
|
9225 5) Add T_HCOMP.CPP heap compressing program used to cause ChunkCompressAll problems. |
|
9226 6) Add __KTRACE_ANY which is similar to the previous version of __KTRACE_OPT |
|
9227 |
|
9228 4) Graham |
|
9229 1) Made pointer click volume default to soft (on a cold boot) |
|
9230 2) Removed Steve Townsend's change to TRegn::Clear() |
|
9231 3) Removed the leading 'V' from version names |
|
9232 4) Changed the fold and collate tables of the ISO |
|
9233 LATIN1 character set so that 'a with a ring above |
|
9234 it' and 'ae combined into one character' both |
|
9235 fold to an 'a' and so that 'o with a slash through |
|
9236 it' folds to an 'o'. |
|
9237 5) Froze the complete kernel interface on all builds |
|
9238 except WINC. |
|
9239 6) Published CConsoleBase interface def files in |
|
9240 CONSWINS.FRZ, CONSMARM.FRZ, and CONSMISA.FRZ. |
|
9241 These are released in the INCC zip file so they |
|
9242 will end up in \EPOC32\INCLUDE |
|
9243 |
|
9244 5) Morgan |
|
9245 1) Released E32 as PETRANned components, complete with Uids. |
|
9246 2) Removed RLibrary::UidL() and RLibrary::Gate() from the API |
|
9247 3) Introduced TUidType RLibrary::Type() and |
|
9248 TUidType RProcess::Type(). |
|
9249 4) TLoaderInfo has changed, so this E32 and the new F32 must be |
|
9250 used as a pair. |
|
9251 |
|
9252 6) Matthew |
|
9253 1) Fixed comms drivers so they return the correct Ir Capabilities |
|
9254 (KCapsSIR115kbps on Eiger). |
|
9255 2) Fixed bug in WINS sound pdd which meant that sometimes cancelling |
|
9256 a play request would only finish after the sound had finished playing |
|
9257 anyway. |
|
9258 3) Fixed bug in sound LDD which meant that samples up to the length of |
|
9259 the buffer could be played or recorded on one go. Now descriptors |
|
9260 must be less than or equal to the half the size of the buffer. |
|
9261 4) Added code to check that the power was not too low for playing or |
|
9262 recording before it started. Also added code which checks the power |
|
9263 level while it is in use and aborts if the power drops too low. |
|
9264 5) Further changes to the algorithmic alarm sounds - they now use beats, |
|
9265 as on the 3a. |
|
9266 6) Added EChangesPowerStatus to the change notifier. This change occurs |
|
9267 when either of the two battery statuses changes, or if external power |
|
9268 is connected or disconnected. |
|
9269 7) Fixed bugs in TTime::DayNoInWeek() and TTime::DateTime() which were |
|
9270 giving the wrong values for negative TTimes. |
|
9271 8) Added horizontal tabs, delete and ascii bell to test window server. |
|
9272 Also made it ignore the null character and vertical tabs. |
|
9273 |
|
9274 Version 0.01.096 |
|
9275 ================ |
|
9276 (Made by Graham, 2nd April 1997) |
|
9277 |
|
9278 Binary compatible with 095 |
|
9279 |
|
9280 1) Graham |
|
9281 1) Improved backup battery voltage monitoring |
|
9282 2) Fixed a bug in the sound driver in the presence of |
|
9283 emergency power loss. This should cure all reported |
|
9284 problems of not being able to turn the machine back |
|
9285 on after playing sounds with low batteries. |
|
9286 |
|
9287 2) Dennis |
|
9288 1) Fixed bug in unsigned division routine when used with |
|
9289 a divisor >= 0x80000000. |
|
9290 |
|
9291 3) William |
|
9292 1) Implement primitive support for WINS memory gauge (SW-1183) |
|
9293 Note that this won't limit the total memory allocated, so the gauge can |
|
9294 exceed 100% (see Defects database for details). |
|
9295 2) Report allocated base address even for chunks of committed size 0 (SW-1876) |
|
9296 3) Fix dangling pointer problem with DChunk::AdjustL (SW-1793) |
|
9297 4) Implement Steve Townsend's suggested shortcut in User::Free and User::FreeZ |
|
9298 5) Tidy up handling of config structures in DoControl in D_COMM.CPP (SW-1970) |
|
9299 |
|
9300 4) Matthew |
|
9301 1) Fixed SW-1994: Playing no sound can lock up machine. |
|
9302 |
|
9303 5) Pete |
|
9304 1) Measurement of Vpc when powering up Pc Cards has now been enabled. This is in order |
|
9305 to reject cards which are found to be drawing excessive current. |
|
9306 (This had been disabled until it was possible to convert the ADC reading to millivolts). |
|
9307 |
|
9308 Version 0.01.095 |
|
9309 ================ |
|
9310 (Made by Graham, 26th March 1997) |
|
9311 |
|
9312 1) William |
|
9313 1) Fixed bug with shared heaps (SW-1665) and added failure scenario to the T_RHEAP test. |
|
9314 2) Fixed SW-1884 bug about timer.At() alarms going off early after switchoff, and |
|
9315 enhanced T_POWR test to check for this. |
|
9316 |
|
9317 2) Morgan |
|
9318 1) Added code to calibrate the digitiser based on the values in the |
|
9319 E-squared on a cold start. This may mean that if your E-squared |
|
9320 contains wildly outrageous values the digitiser will be out of |
|
9321 kilter. You can run \E32\TBAS\T_PROM to rectify this. |
|
9322 |
|
9323 3) Matthew |
|
9324 1) Fixed B5/B6 bug SW-1726 (volume suddenly shooting to maximum). |
|
9325 |
|
9326 2) Moved algorithmic alarm data into the localisation dll, so the names can |
|
9327 be changed. |
|
9328 |
|
9329 3) Fixed B5/B6 bug SW-1630 in Comms PDDs: trying to set Mark and Space now |
|
9330 returns an error, and they are not returned as part of the capabilities. |
|
9331 |
|
9332 4) Changes to Etna comms: |
|
9333 Fixed bug where the TEtna class was ignoring the Parity-Enable bit. |
|
9334 Removed the Uart interrupt enable from the boot up, since it was being |
|
9335 switched off anyway, and made the Etna comms driver switch interrupts on. |
|
9336 |
|
9337 5) Added Comms driver power handling code. The behaviour is now that read and |
|
9338 write requests are completed with KErrAbort on normal switch-off and with |
|
9339 KErrBadPower if there is an emergency power down. On a power down the input |
|
9340 signals drop. On switch off, writes will keep going until the end of the |
|
9341 hardware fifo. |
|
9342 |
|
9343 6) Fixed some bugs in the Comms LDD to do with signals. |
|
9344 |
|
9345 7) Added Grahams K32DBGDD.H header file, which contains a helpful class for |
|
9346 debugging device drivers. |
|
9347 |
|
9348 4) Jal |
|
9349 1) Changes to the Pccd interface controller to allow |
|
9350 access to media change notification. Added to UserPcCardCntrl: |
|
9351 |
|
9352 IMPORT_C static TInt NotifyChange(TSocket aSocket,TRequestStatus *aReqStat); |
|
9353 |
|
9354 5) Graham |
|
9355 1) Tightened up the backlight handling code and added various |
|
9356 backlight tests to T_POWR.CPP |
|
9357 |
|
9358 2) Made Steve Townsends modification to TRegion. |
|
9359 |
|
9360 3) Fixed a bug in Unicode in UM_RTOD.CPP |
|
9361 |
|
9362 6) Jonathan |
|
9363 1) t_dbg: Added memory read/write tests to user data and, on |
|
9364 MARM, to Eiger registers. |
|
9365 2) Forced RDebug::WriteMemory() to use Mem::Move for aligned |
|
9366 writes so that writing to Eiger registers works. |
|
9367 |
|
9368 7) Dennis |
|
9369 1) Added code to implement real-time clock correction based on a |
|
9370 measured crystal error value in parts per 2^24, written into |
|
9371 K::XtalError at startup. |
|
9372 8) Pete |
|
9373 1) On media change, before writing to a thread which |
|
9374 has requested notification of media change, a check has been added to |
|
9375 verify the thread has not been destroyed. |
|
9376 2) Fixed a problem with CRom media driver (MEDCRM.PDD). |
|
9377 Reads/writes from a position which wasn't on a word boundary (or of a |
|
9378 length in bytes which wasn't a multiple of 4), weren't previously supported. |
|
9379 3) Implemented a 40ms watchdog timeout on writes to CF cards (MEDATA.PDD). |
|
9380 4) Pc Card Controller now supports extended device |
|
9381 speed bytes when parsing Device Information Tuples. |
|
9382 5) Added extra fixed media enum to TMediaDevice in E32PCCD.H. |
|
9383 6) Various changes to Pc Card Controller to reduce code size. |
|
9384 7) It is now possible to disable the media change |
|
9385 implementation by setting iTotalMediaChanges=0 in Custom::PcCardMachineInfo(). |
|
9386 8) Pc Card inactivity power down and 'not locked' power down periods can now be |
|
9387 set at the custom layer in Custom::PcCardMachineInfo(). |
|
9388 |
|
9389 Version 0.01.094 |
|
9390 ================ |
|
9391 (Made by Graham, 20th March 1997) |
|
9392 |
|
9393 1) William |
|
9394 1) Changed __KTRACE_OPT for exact matches on multiple trace bits, and tweaked some |
|
9395 of the debug messages a bit. |
|
9396 2) Enabled __KTRACE_OPT for WINS builds, writing to "Output" window under MSDEV |
|
9397 3) Automatically set KPANIC trace bit if debug mask is non-zero |
|
9398 4) Use aThread==NULL to mean &Plat::CurrentThread() in ObjectFromHandle functions, |
|
9399 and adjusted the callers appropriately |
|
9400 5) Check in SvSendReceive to make sure that the iSvSession is not NULL, and |
|
9401 fault if it is: the most likely reason for this is a User::Panic in the Supervisor |
|
9402 thread, so we check to see if the message code is ESvThreadPanic and extract the |
|
9403 Panic category and code as appropriate. |
|
9404 6) Added a new TCDT\T_KILLER.CPP test program. |
|
9405 7) Added simple calibration of WINS ticks, to fix SW-1384 by making the clocks run on time... |
|
9406 8) Arranged for Plat::Panic to add 0x10000 to the afult number and call Plat::Fault, so that |
|
9407 the machine will restart rather than loop forever. |
|
9408 9) Put back tweaked VA_RCHG.CPP battery charging driver: it will charge batteries without |
|
9409 melting the machine, but it won't do so automatically: still needs more work. |
|
9410 |
|
9411 2) Graham |
|
9412 1) Changed rack B,C,and D keyboard tables to interpret FN+cursor |
|
9413 keys as home, end, page down and up. |
|
9414 |
|
9415 2) Updated all keyboard tables to handle ctrl+fn as outlined in |
|
9416 the 090 release notes - not sure what happened to these changes, |
|
9417 they seemed to disappear some time after 090 |
|
9418 |
|
9419 3) Added code to handle low battery situations a lot faster. |
|
9420 Typically, we remove power from all devices within 110uS and go |
|
9421 into standby within 130uS. |
|
9422 |
|
9423 4) Enhanced the P2 keyboard driver. It no longer locks the keyboard |
|
9424 out fully when three keys are pressed simultaneously. Rather, it |
|
9425 waits until fewer then three keys remain pressed before beginning |
|
9426 to deliver keyboard events again. |
|
9427 |
|
9428 5) Fixed a bug in the keyboard when switching on with the dictaphone |
|
9429 keys - it delivered the key down event but never delivered a |
|
9430 key up event when the key was released. |
|
9431 |
|
9432 3) Ann |
|
9433 1) Changed TRealFormat KRealFormatExponent mode to be able to use |
|
9434 either significant figures or decimal places. Default is still |
|
9435 decimal places, but oring in the KUseSigFigs flag to the format type |
|
9436 will allow use of significant figures instead. |
|
9437 |
|
9438 2) Changed TRealForamtFixed mode so that negative numbers < -1 are |
|
9439 are "0" rather than "-0" when 0 dp are used. |
|
9440 |
|
9441 4) Dennis |
|
9442 1) Exec::ThreadRead8, ThreadRead16, ThreadWrite8, ThreadWrite16, ThreadGetDesLength, |
|
9443 ThreadGetDesMaxLength now return an error code of KErrArgument if the pointer into the |
|
9444 remote thread address space is invalid, rather than panicing the caller. This fixes |
|
9445 problem SW-1013. |
|
9446 |
|
9447 2) Supervisor server functions invoked with a bad pointer will now panic the caller, |
|
9448 rather than causing a system fault and rebooting the machine. |
|
9449 |
|
9450 3) The sound driver LDD has been changed to allow only one channel to be open at a time. |
|
9451 This fixes problem SW-1165. |
|
9452 |
|
9453 4) All key and pointer clicks are now disabled during sound recording. This fixes |
|
9454 problem SW-817. |
|
9455 |
|
9456 5) Morgan |
|
9457 1) Read the E-Squared ROM into RAM on a cold boot. |
|
9458 |
|
9459 |
|
9460 Version 0.01.093 |
|
9461 ================ |
|
9462 (Made by Graham, 14th March 1997) |
|
9463 |
|
9464 1) Pete |
|
9465 1) Fixed a problem with inter-thread reading from CF card. |
|
9466 2) Fixed a timeout problem with some CF cards when |
|
9467 formatting. |
|
9468 |
|
9469 2) Jonathan |
|
9470 1) StrongARM port (ISA) brought up-to-date but not tested. |
|
9471 |
|
9472 *) Base team please note that (rightly or wrongly) the ARM Custom |
|
9473 API is shared with ISA (file inc\v32arm.h), so any changes or |
|
9474 additions to the ARM Custom API must be reflected in the ISA |
|
9475 Custom implementation. |
|
9476 |
|
9477 3) Graham |
|
9478 1) Fixed handling of the emergency power down queue. This |
|
9479 problem was due to the bad design of single queues - it |
|
9480 is impossible to fully check that you are enqueued without |
|
9481 traversing the queue from the top. We might look into |
|
9482 adding a more useful single queue type. |
|
9483 |
|
9484 Version 0.01.092 |
|
9485 ================ |
|
9486 (Made by Graham, 13th March 1997) |
|
9487 |
|
9488 |
|
9489 1) Pete |
|
9490 1) Fixed problem with Format() in Compact Rom (repro version) |
|
9491 media driver (MEDCRR.PDD) such that it was only formatting the first |
|
9492 2M of a CRom card. |
|
9493 2) Compact Rom media driver (MEDCRM.PDD) now included in release. |
|
9494 |
|
9495 2) Graham |
|
9496 1) Fixed an bug in the mmu abstraction which assumed that the page |
|
9497 directory was aligned linearly in the same way as it was aligned |
|
9498 physically. |
|
9499 |
|
9500 3) William |
|
9501 1) Fixed a problem with threads dying |
|
9502 |
|
9503 Version 0.01.091 |
|
9504 ================ |
|
9505 (Made by Graham, 12th March 1997) |
|
9506 |
|
9507 1) SimonB |
|
9508 1) Fix for Serial PDD in NT 4 |
|
9509 2) Removal of dependancy on MSVCRT40*.DLL |
|
9510 |
|
9511 2) Morgan |
|
9512 1) Added screen information to TRomHeader for the bootstrap |
|
9513 2) Fixed corrupted ExcInfo on MARM by adding a FiqStack and |
|
9514 moving the exceptions onto the ExceptionStack. |
|
9515 3) Moved TExcInfo to E32HAL.H |
|
9516 4) System Death due to an exception now saves ExcInfo in the |
|
9517 Superpage and causes a Kernel Fault. Startup, Fault and |
|
9518 Exception reasons are available through: |
|
9519 UserHal::StartupReason() |
|
9520 UserHal::FaultReason() |
|
9521 UserHal::ExceptionId() |
|
9522 UserHal::ExceptionInfo() |
|
9523 There should be a Shell dialogue which retrieves |
|
9524 this information after a kernel fault. This will |
|
9525 enable us to pin down the offending code. Also, along |
|
9526 with each new Protea image, MAKSYM should be run and |
|
9527 the generated log file should be placed on the network |
|
9528 as well. This will give the address of every function |
|
9529 in every module of the ROM. |
|
9530 5) Changed the startup beeps |
|
9531 ColdStart 1 beep |
|
9532 WarmStart 2 beeps |
|
9533 KernelFault 3 decending beeps |
|
9534 6) Fixed SW-1069 - WINC heaps can grow up to 8Mb |
|
9535 |
|
9536 3) Graham |
|
9537 1) Enabled the shift key when typing e.g. CTRL-1 a to give |
|
9538 a-umlaut. |
|
9539 |
|
9540 2) Solved the œ sign problem on WINS - this had been |
|
9541 re-introduced by Simon's WINS internationalisation |
|
9542 code. |
|
9543 |
|
9544 3) Re-introduced some digitiser inertia code to prevent |
|
9545 wobble. |
|
9546 |
|
9547 4) Re-structured the Spi controller code. |
|
9548 |
|
9549 5) Fixed a bug in CObjectCon::CheckUniqueFullName() that was |
|
9550 preventing two processes of the same name being loaded. |
|
9551 This cures problems with T_KHEAP.EXE and T_PROC1.EXE. |
|
9552 |
|
9553 6) Fixed T_KEYS.EXE by updating it for the new ISO LATIN 1 |
|
9554 keyboard tables. |
|
9555 |
|
9556 7) Made TInt64::GetTInt() and TInt64::GetTReal() const. |
|
9557 |
|
9558 8) Swapped the dictaphone keys round (again?) |
|
9559 |
|
9560 9) Changed the emergency power down list to be on a single |
|
9561 queue instead of an object container. |
|
9562 |
|
9563 10) Changed the P2 keyboard table to make FN-e give e acute |
|
9564 and FN-SHIFT-e to give E acute. This is just to test that |
|
9565 such things are possible although it might be cool to just |
|
9566 leave this in since e acute is probably the most-used |
|
9567 accented character in English. |
|
9568 |
|
9569 11) Moved the accenting keys from CTRL+1-6 to FN+Q and FN+Z-B |
|
9570 |
|
9571 12) Completed anti-ghosting logic to disallow more than one |
|
9572 modifier and more than one normal key at the same time. |
|
9573 |
|
9574 13) Changed the text window server so that a pointer click outside |
|
9575 the region of any window will cause the foreground window to |
|
9576 change. |
|
9577 |
|
9578 14) Implemented battery voltage monitoring |
|
9579 |
|
9580 15) Increased the number of frozen functions in the kernel to |
|
9581 avoid BITGDI recompilations when E32 is released. Lane, you |
|
9582 will have to recompile, hopefully for the last time, for |
|
9583 this version of E32. |
|
9584 |
|
9585 16) Changed keyboard driver to recognise when the machine is |
|
9586 turned on. It will then scan the keyboard and deliver a |
|
9587 keyboard event only if the dictaphone keys are down. It then |
|
9588 waits for all keys to be up before proceeding to deliver |
|
9589 further events. |
|
9590 |
|
9591 4) Matthew |
|
9592 1) Fixed B5 bug SW-266 ("%+0*S" formatted incorrectly). |
|
9593 |
|
9594 2) Put in Ir power-down fix (from Mark Ball). |
|
9595 |
|
9596 3) Added emergency power down handling to sound driver. The driver |
|
9597 completes statuses with KErrBadPower on emergency power down. |
|
9598 This fixes B5 bug SW-384. |
|
9599 |
|
9600 4) Added two functions to sound driver - BytesPlayed() and |
|
9601 ResetBytesPlayed() wich give the user feedback on how playing is |
|
9602 progressing. |
|
9603 |
|
9604 5) Increased the volume of EVolumeMedium in Eiger sound PDD so the |
|
9605 steps are more even. "Fixes" SW-543 (No apparent difference |
|
9606 between volume settings). |
|
9607 |
|
9608 6) Moved sound test code from F32 to E32. |
|
9609 |
|
9610 5) Jonathan |
|
9611 1) Added SA ARM variant for Snowball. |
|
9612 |
|
9613 2) Fixed #defines in ROM.OBY file to make PREP happy. |
|
9614 |
|
9615 3) Made screen size a variant-dependent thing on ARM: |
|
9616 - Screen size is no longer hard-coded in ARM text window server |
|
9617 (wd_eiger.cpp) or ImpHal::Init3(). Text window server no |
|
9618 longer handles switching bit depth. |
|
9619 - LCD initialisation moved out of boot code into |
|
9620 ImpHal::Init3(), with size-dependant LCD initialisation in |
|
9621 Variant::Init3(). |
|
9622 - ARM boot code uses screensize parameters in ROM header to |
|
9623 determine video RAM size and placement of page tables. |
|
9624 |
|
9625 6) Dennis |
|
9626 1) Fixed a bug in the high-resolution timer code, and added a |
|
9627 Cancel() function to TMilliSecondCallBack. |
|
9628 |
|
9629 2) Added a logical device driver for the high-resolution |
|
9630 timer (EFTIM.LDD) accessed via RFastTimer class in |
|
9631 D32FTIM.H |
|
9632 |
|
9633 3) Fixed some bugs in 486 build of E32 and speeded it up |
|
9634 by enabling the processor cache and by coding the Mem:: |
|
9635 functions in assembler. |
|
9636 |
|
9637 7) Ann |
|
9638 1) Fixed a bug in TLex8::Val() which setting next to start of |
|
9639 string if an overflow occurred, causing problems for EIKON. |
|
9640 |
|
9641 8) Pete |
|
9642 1) On ARM architecture, moved code for Etna device out of the Kernel |
|
9643 into the Variant DLL for P1,P2,RackC and RackD builds. |
|
9644 2) Added iInterruptInfo to TPccdConfigInfo class. Users of |
|
9645 UserPcCardCntrl::GetConfig() must rebuild - only Pc Card test code should |
|
9646 be using this. |
|
9647 3) Changes to the inter-thread Read()/Write() functions and the Format() |
|
9648 function of DMediaDriver to take a reference to a length (TInt &aLen rather |
|
9649 than TInt aLen). Read/Write/Format requests which would result in excessive time spent in the Kernel now only partly complete. They then return TErrTooBig |
|
9650 with aLength adjusted to the remaining length. |
|
9651 4) Removed the current thread read/write functions |
|
9652 Read(TInt aPos,TintaLength,TDes8 &aTrg) and Write(TInt aPos,TDesC8 &aSrc) from class DMediaDriver as the inter thread read/write versions now perform the same function if the target thread is found to be current. |
|
9653 5) ARM Ata media driver now adjusts auto power down timeout of CF card to 1sec. This prevents it from going into sleep mode between access which could affect CF card transfer rates (default is 5mS). |
|
9654 |
|
9655 Version 0.01.090 |
|
9656 ================ |
|
9657 (Made by Graham, 26th February 1997) |
|
9658 |
|
9659 1) Graham |
|
9660 1) Changed CTRL+FN+key behaviour. This is a complicated |
|
9661 issue. If one hits CTRL+FN+'1' on a Lime, then it is clear |
|
9662 that the Control and Function modifiers should be set. |
|
9663 However, what should the keycode be? It should be '1' |
|
9664 and not '_'. Higher level software is more interested in |
|
9665 the fact that CTRL+FN+'1' has been pressed than CTRL+'_' has |
|
9666 been pressed. For this reason, in 089, the keyboard tables |
|
9667 were changed to make CTRL override FN as far as keycode code |
|
9668 production was concerned. |
|
9669 |
|
9670 However, consider the keystroke CTRL+FN+LeftArrow. In this |
|
9671 case, the opposite is true. Higher level software is more |
|
9672 interested in the fact that CTRL+HOME has been pressed |
|
9673 than that CTRL+FN+LeftArrow has been pressed. |
|
9674 |
|
9675 So, in this release I have changed the keyboard tables to |
|
9676 cater for both problems by judging each key on an |
|
9677 individual basis. On a Lime, the keycode produced for: |
|
9678 |
|
9679 CTRL+FN+'1' - CTRL+FN+'9' -> '1' - '9' |
|
9680 CTRL+FN+'A' - CTRL+FN+'Z' -> 0x01 - 0x1a |
|
9681 CTRL+FN+LeftArrow -> Home |
|
9682 CTRL+FN+RightArrow -> End |
|
9683 CTRL+FN+UpArrow -> PgUp |
|
9684 CTRL+FN+DownArrow -> PgDn |
|
9685 CTRL+FN+Tab -> CapsLock |
|
9686 CTRL+FN+Esc -> Off |
|
9687 CTRL+FN+' -> ' |
|
9688 CTRL+FN+. -> . |
|
9689 CTRL+FN+<space> -> Backlight |
|
9690 CTRL+FN+, -> Help |
|
9691 |
|
9692 2) Changed the raw key code on WINS for the Alt key from |
|
9693 EStdKeyLeftAlt to EStdKeyLeftFunc. Attempted to get the |
|
9694 windows key to be the Epoc32 Alt key. |
|
9695 |
|
9696 3) Various additions to do with REPROing the upper 2Mb on |
|
9697 Limes. |
|
9698 |
|
9699 4) Protected the eiger internal registers from user mode access |
|
9700 |
|
9701 5) Introduced anti-ghosting algorithm into the P2 keyboard |
|
9702 driver. It doesn't, however, get rid of the ghost FN key |
|
9703 when you hold down LeftShift, DownArrow, and RightArrow |
|
9704 together. This leads me to believe that not all the diodes |
|
9705 have been fitted on the modifier keys. |
|
9706 |
|
9707 The algorithm is basically one of 2-key rollover. So, any |
|
9708 keypresses made when two keys are already held down should |
|
9709 be ignored. Naturally, this is no good when you want to |
|
9710 hold down certain complex modifier and key combinations. |
|
9711 So, these special cases are compensated for in the software |
|
9712 in the knowledge diodes should be fitted into the modifier keys |
|
9713 to prevent any matrix-ghosting. |
|
9714 |
|
9715 2) Ann |
|
9716 1) Fixed bug spotted by Natascha in doCalculator() so that values |
|
9717 with negative exponents are displayed correctly. |
|
9718 |
|
9719 |
|
9720 Version 0.01.089 |
|
9721 ================ |
|
9722 (Made by Jane, 21st February 1997) |
|
9723 |
|
9724 1) SimonB |
|
9725 1) Removed dependency on WINMM. Timer now based on a RealTime thread |
|
9726 and sleeps. |
|
9727 Required for Win95 and general compatibility. |
|
9728 |
|
9729 2) Changed WINS Comms PDD to work with Windows 95 |
|
9730 |
|
9731 3) Mark T's Comms PDD bug fixes integrated. |
|
9732 |
|
9733 4) International Keyboard support. Just UK and US at the |
|
9734 moment, more to follow. |
|
9735 |
|
9736 5) Removed first chance exceptions from WINS loading. |
|
9737 IsBadWritePtr replaced by VirtualQuery. |
|
9738 |
|
9739 2) Jane |
|
9740 |
|
9741 1) Finished the CObjectCon improvements suggested by Andrew. Note |
|
9742 that to pick these up you need the new version of |
|
9743 CheckUniqueName which takes CObject*s rather than names. |
|
9744 The time taken to Add 0x600 named objects to a container has |
|
9745 gone down from 14 seconds to 6 seconds. |
|
9746 |
|
9747 2) Added code for _ftol() to WINS and X86 builds. The function |
|
9748 header is in e32std.h |
|
9749 |
|
9750 3) Fixed various debugging printfs by supplying a simple overflow |
|
9751 handler so that long strings are truncated rather than |
|
9752 panicing the caller. |
|
9753 |
|
9754 3) Graham |
|
9755 |
|
9756 1) Fixed the œ gives ae keyboard problem by converting all |
|
9757 keyboard tables from CP850 to ISO Latin 1. |
|
9758 |
|
9759 2) Introduced a new key code - EKeyHelp. This is now F2 |
|
9760 on WINS. |
|
9761 |
|
9762 3) Changed the WINS keyboard tables so that the dictaphone |
|
9763 keys give the correct raw scan code as well as the |
|
9764 appropriate Epoc32 key code. Did the same trick for |
|
9765 the menu, help and off keys. |
|
9766 |
|
9767 4) Fixed up the P2 keyboard tables. Note that the backlight |
|
9768 keys have to be handled in higher level software - |
|
9769 presumably the window server. On Protea the key code used |
|
9770 is EKeyBacklightToggle. However, a really skillful |
|
9771 implementation would handle EKeyBacklightOn and |
|
9772 EKeyBacklightOff as well (in case future hardware has |
|
9773 both on and off keys for the backlight). |
|
9774 |
|
9775 5) Fixed the P2 sticky shift and function modifiers. |
|
9776 |
|
9777 6) Removed the keyclick on shift, function and control keys. |
|
9778 This has only been implemented on P2. |
|
9779 |
|
9780 4) Pete |
|
9781 1) Renamed EPccdEvent enums to prevent name clashing with |
|
9782 W32STD.H. |
|
9783 2) Enabled media change interrupts on P2 hardware. |
|
9784 |
|
9785 5) Morgan |
|
9786 1) WarmReset+LeftShift boots with EStartupColdReset on P1,P2,PB,PC,PD |
|
9787 2) Added startup beep |
|
9788 3) Fixed SW-32 |
|
9789 4) Write protected the Mmu page directory backup |
|
9790 |
|
9791 6) Ann |
|
9792 I IMPLEMENTATION OF SPECIAL VALUES: |
|
9793 |
|
9794 TReal96, Math and TDes8/16 classes now handle "special values" - NaNs, |
|
9795 infinities, signed zeros and denormals. |
|
9796 |
|
9797 Changes are as follows: |
|
9798 |
|
9799 1) Maths constants renamed: |
|
9800 K...ExponentBigBad now K...SpecialExponent |
|
9801 K...ExponentSmallBad now K...ZeroExponent. |
|
9802 |
|
9803 2) The Math member functions |
|
9804 ASin(), ACos(), ATAn(), Exp(), Frac(), Int(), Ln(), Log(), Mod(), |
|
9805 Pow(), Pow10(), Sin(), Cos(), Tan(), Sqrt() |
|
9806 have been changed as follows: |
|
9807 |
|
9808 a) to return an error corresponding to the result, i.e. |
|
9809 KErrArgument if the result is indefined / a NaN, |
|
9810 KErrOverflow if the result is too big to be represented or infinite |
|
9811 positive only if the result is an integer), |
|
9812 KErrUnderflow if the result is too small to be represented (or if the |
|
9813 result is an integer, if the result is too large or infinite |
|
9814 and negative), |
|
9815 KErrNone if the result is finite and representable. |
|
9816 b) to write a result to the aTrg IN ALL CASES rather than just |
|
9817 the return value is KErrNone. Hence the result is as follows: |
|
9818 NaN if the error is KErrArgument, |
|
9819 Positive or negative infinity as appropriate if the error is |
|
9820 KErrOverflow (or the max value if the result is an integer), |
|
9821 Positive or negative zero as appropriate if the error is |
|
9822 KErrUnderflow (or the min value if the result is an integer). |
|
9823 c) to be able to handle denormals. i.e. all numbers >= 5E-324 and < |
|
9824 KMinTReal64=2.2250738585072015E-308. |
|
9825 |
|
9826 3) Math member functions IsZero(), IsNaN(), IsInfinite() and |
|
9827 IsFinite() added. Also private member functions SetZero(), SetNaN() |
|
9828 and SetInfinite(). |
|
9829 |
|
9830 4) TDes8/16::Num/AppendNum() returns error value or length of string |
|
9831 as previously, but if error value is returned an appropriate string |
|
9832 is set: |
|
9833 "Inf" for positive overflow (KErrOverflow and positive argument) |
|
9834 "-Inf" for negative overflow (KErrOverflow and negative argument) |
|
9835 "0" for positive underflow (KErrUnderflow and positive argument) |
|
9836 "-0" for negative underflow (KErrUnderflow and negative argument) |
|
9837 "NaN" for NaN (KErrArgument) |
|
9838 |
|
9839 5) TDes8/16::AppendFormatList() only panics for KErrGeneral and |
|
9840 if another error value is returned by Num(), uses the string set |
|
9841 as above. |
|
9842 |
|
9843 6) The exponent of TReal96 zero is now -32768, the smallest exponent |
|
9844 possible. |
|
9845 |
|
9846 7) TReal96 member functions IsZero(), IsNaN(), IsInfinite(), |
|
9847 IsFinite(), SetZero(), SetNaN() and SetInfinite() added. |
|
9848 |
|
9849 II ROUNDING FLAG: |
|
9850 |
|
9851 See Programming DB - Global Rounding Flag Required |
|
9852 A new private member of TReal96, iFlag, has been added to |
|
9853 indicate whether the mantissa is rounded up, rounded down or exact. |
|
9854 This has required changes in member functions to set and use the |
|
9855 flag where necessary. |
|
9856 |
|
9857 Changes are: |
|
9858 |
|
9859 1) iSign member changed from TInt16 to TInt8. |
|
9860 |
|
9861 2) Constants for values of iFlag added to e32math.h: |
|
9862 const TUint8 KRoundedUp=2; |
|
9863 const TUint8 KRoundedDown=1; |
|
9864 const TUint8 KExact=0; |
|
9865 |
|
9866 3) New TReal96 member function TReal96::Flag() which returns the |
|
9867 value of iFlag as a TInt. |
|
9868 |
|
9869 4) New private function TReal96::Round() taking an argument which |
|
9870 specifies the number of binary digits in the mantissa to perform |
|
9871 rounding in the (MSDEV and IEEE standard default) round to nearest |
|
9872 mode and to set the flag as appropraite has been added to be used by |
|
9873 Normalise(), Prepare() and conversion functions. New private member |
|
9874 function TReal96::ShiftToNormalise() added to be used in cases where |
|
9875 rounding will never be required e.g. assignment/construction of |
|
9876 TReal96 from TInt. |
|
9877 |
|
9878 5) TInt64::Multop() returns integer values between -2 and 1 with the |
|
9879 following meanings: |
|
9880 -2 least significant 64 bits exactly zero |
|
9881 -1 least significant 64 bits less than TInt64(0x80000000,0) but |
|
9882 not zero |
|
9883 0 least significant 64 bits exactly TInt64(0x80000000,0) |
|
9884 1 least significant 64 bits greater than TInt64(0x80000000,0) |
|
9885 and TReal96::MultEq() changed to round according to these values. |
|
9886 |
|
9887 6) TReal96::DivEq() rounds on the remainder after division similarly. |
|
9888 |
|
9889 |
|
9890 All maths test code updated to test special cases including |
|
9891 correct return values and setting target values and new functions, |
|
9892 etc. Also fixed to work in X86 build. |
|
9893 |
|
9894 |
|
9895 III OTHER |
|
9896 |
|
9897 1) UP_GCC.CPP function converting double to float changed to raise |
|
9898 the exception. Also all arithmetic changed to do operation and |
|
9899 conversion and raise the exception if an error value is returned at |
|
9900 any stage. |
|
9901 |
|
9902 2) Function TReal96::CheckOverUnderflow() used by arithmetic now a |
|
9903 private member function and altered to check fewer large-exponent |
|
9904 cases for overflow. |
|
9905 |
|
9906 7) Matthew |
|
9907 1) Fixed SW-25 from B5 database (Power off while recording hangs machine). |
|
9908 |
|
9909 |
|
9910 Version 0.01.088 |
|
9911 ================ |
|
9912 (Made by Jane, 12th February 1997) |
|
9913 |
|
9914 This version requires F32 053 |
|
9915 |
|
9916 1) Graham |
|
9917 1) Sorted out the digitiser. This should no longer |
|
9918 exhibit wobble or erroneous points when touching |
|
9919 the surface lightly. |
|
9920 |
|
9921 2) Updated digitser driver to use the new digitiser |
|
9922 clicks rather than the keyboard clicks. These |
|
9923 should now be indepenently controllable. |
|
9924 |
|
9925 2) Jane |
|
9926 1) Added an implementation of User::IsRomAddress from |
|
9927 Simon B. |
|
9928 |
|
9929 2) Added CArrayFixBase::SetReserveL |
|
9930 |
|
9931 3) Fixed a chunk bug - when a TFindChunk was opened read-only |
|
9932 in a process, the top bit of the process address (data |
|
9933 section) was set to indicate this. If another thread was |
|
9934 then created in the process, its heap address was incorrectly |
|
9935 allocated over the TFindChunk, as the latter's address was |
|
9936 stored with top bit set. |
|
9937 |
|
9938 4) Fixed a shared chunk bug on 486 - when T_CHUNK opened the |
|
9939 Window Server chunk RO, and then did an Exec::SessionSend |
|
9940 to the WindowServer, there was a fault when the kernel |
|
9941 attempted to write the message into the Window Server's |
|
9942 heap. Fixed this by unsetting the WP bit in CR0, so that |
|
9943 supervisor can write over User RO chunks. This is OK on the |
|
9944 ARM, but a thing to look out for if we ever port to another |
|
9945 processor. |
|
9946 |
|
9947 5) Improved CArrayPtr<T>::ResetAndDestroy as suggested. |
|
9948 |
|
9949 6) Changed profiler end/start behaviour as detailed on Notes. |
|
9950 |
|
9951 7) Started to optimise CObjectCon::CheckUniqueName as suggested |
|
9952 by Andrew Thoelke. |
|
9953 The time taken to store 0x200 unnamed objects has gone down |
|
9954 from 6 seconds to being as close to 0 as makes no difference. |
|
9955 More on this later... |
|
9956 |
|
9957 8) Added __ftol to EUSER. |
|
9958 |
|
9959 9) Added CObjectCon::AtL which leaves rather than panicking, so that |
|
9960 the kernel can panic a thread which passes an invalid find handle to |
|
9961 open, rather than dying itself. |
|
9962 |
|
9963 10) Increased the WINS main user thread's max heap size to 8M. |
|
9964 |
|
9965 3) Pete |
|
9966 1) Moved sections of code relating external interrupt control and binding out of |
|
9967 the Kernel DLL and down into the Variant DLL. |
|
9968 2) Code for Pc Card external interrupts (Ready,IREQ,Status change) added. |
|
9969 3) CF card media driver now makes use of card IREQ signal during card writes. This |
|
9970 now goes into idle after initiating a write to the card, with the card asserting |
|
9971 an interrupt on completion to wake up the system. |
|
9972 4) Added a media driver for compact rom card (MEDCRM.PDD). |
|
9973 5) Written media driver for programming flash on compact rom card(MEDCRR.PDD). |
|
9974 6) Modified the functions |
|
9975 7) Changes to functions CardInfo() and ChangeFlag() of UserPcCardCntrl class. |
|
9976 8) Monitor the Vpc voltage on first applying power to a Pc Card to check that |
|
9977 the card isn't drawing too much current for the rail. |
|
9978 9) Alteration to media change simulation in WINS: |
|
9979 F5 - Media door open as long as F5 is held down. |
|
9980 F4 - This toggles between 1 of two simulated CF cards on socket 0 (ie X:) |
|
9981 when hit while F5 is held down. |
|
9982 10) All files used to simulate Pc Card memory and internal ram drive now created in |
|
9983 systems temp directory rather than \EPOC32\DATA - ie fixed HA-262. |
|
9984 11) Fixed problem with ATA media driver - divide by zero. |
|
9985 12) Removed support for Rev 1.0 Asic12. |
|
9986 13) Check battery status before commencing write to CF Card - return with |
|
9987 KErrBadPower if battery is low. |
|
9988 14) CF Card driver now handles emergency power down. |
|
9989 15) Pc Card power consumption - K::PcCardCurrentMilliAmps |
|
9990 now implemented. |
|
9991 |
|
9992 4) Matthew |
|
9993 1) User::SetHomeTime() has been changed to return a TInt. This will return KErrOverFlow on |
|
9994 Arm if the new time is out of range (past about 2068, before about 1932). |
|
9995 |
|
9996 2) Sound driver: Added more click controlling code and implemented a fallback alarm. |
|
9997 |
|
9998 |
|
9999 Version 0.01.087 |
|
10000 ================ |
|
10001 (Made by Graham, 5th February 1997) |
|
10002 |
|
10003 This release is binary compatible with 086 |
|
10004 |
|
10005 1) Graham |
|
10006 1) Implemented dictaphone keys in WINS: |
|
10007 F6 Dictaphone Play |
|
10008 F7 Dictaphone Stop |
|
10009 F8 Dictaphone Record |
|
10010 |
|
10011 2) Begun the production of power supply |
|
10012 information from UserHal::SupplyInfo(). |
|
10013 Expanded test code in t_power accordingly. |
|
10014 |
|
10015 3) Added the P2 variant which will be used for green |
|
10016 machines. Changed the keyboard variant to include |
|
10017 the dictaphone keys. |
|
10018 |
|
10019 4) Added PD and P2 variants to the releaseables. |
|
10020 |
|
10021 5) Added the function UserSvr::TestBootSequence(). This |
|
10022 returns true if the machine is being booted by the test |
|
10023 department. The file server should call this function and |
|
10024 load etest.exe rather than ewsrv.exe if this is the case. |
|
10025 |
|
10026 6) Added the function UserHal::ResetAutoSwitchOffTimer(). |
|
10027 |
|
10028 |
|
10029 7) Added the function UserSvr::AddEvent(). This enables user |
|
10030 code to add events into the event queue. Quite apart from |
|
10031 the numerous applications that this might spawn, it is |
|
10032 necessary for user side implementation of a VT100 |
|
10033 console driver and handwriting recognition software. |
|
10034 |
|
10035 8) Added the EKeyMenu, EKeyBacklightOn, |
|
10036 EKeyBacklightOff, and EKeyBacklightToggle keycodes |
|
10037 to all variants. On WINS the F1 key is used as the |
|
10038 MENU key. |
|
10039 |
|
10040 9) Rationalised the MARM rom building system. This is |
|
10041 now controlled by a single ROM.OBY file which is |
|
10042 preprocessed with build and variant information. |
|
10043 |
|
10044 10) Added backlight support. The backlight may be |
|
10045 either timed or untimed. Should the timeout |
|
10046 be reset whenever the machine is used? |
|
10047 |
|
10048 11) Made pointer clicks configurable separately from |
|
10049 key clicks. |
|
10050 |
|
10051 12) Added screen clearing on switch on if a password |
|
10052 is set. |
|
10053 |
|
10054 13) Added UserHal functions for PointerSwitchesOn, |
|
10055 CaseOpenSwitchesOn, and CaseCloseSwitchesOff. |
|
10056 Grouped these, together with the |
|
10057 AutoSwitchOffTime, AutoSwitchOffBehavior, |
|
10058 BacklightTime, and BacklightBehavior information, |
|
10059 into a new TOnOffInfo structure. |
|
10060 |
|
10061 14) Implemented switch off on case close and switch |
|
10062 on on case open on all platforms. |
|
10063 |
|
10064 15) Simon has implemented a visual simulation on WINS |
|
10065 of case closing. On WINS, F11 is also used to simulate |
|
10066 both closing and opening the case. You will |
|
10067 notice that, while the case is closed, keyboard |
|
10068 and pointer events have no effect. This is to |
|
10069 simulate the fact that normally you can't get to the |
|
10070 keyboard or screen under these conditions. |
|
10071 |
|
10072 16) Enhanced MARM switch on on pen down to take |
|
10073 account of the Hal variable PointerSwitchesOn. |
|
10074 |
|
10075 17) Solved Low battery bugs (HA-357, HA-362) |
|
10076 |
|
10077 2) Ann |
|
10078 1) Test code changes: |
|
10079 |
|
10080 i) Additional tests added to t_math tests for Pow10(). These show |
|
10081 that in all but one case inexact string to real conversion is due |
|
10082 to inexact calculation by Math::Pow10(). All tests in t_math check |
|
10083 for as much accuracy as possible. |
|
10084 |
|
10085 ii) t_float tests are now consistent between WINS and ARM. |
|
10086 |
|
10087 iii) Whetstone benchmark tests added |
|
10088 |
|
10089 iv) t_r96 casting tests now include identity tests (which check |
|
10090 consistency with MSDEV in WINS). Casting to TInt tests changed |
|
10091 in line with changes to source code (ii below). |
|
10092 |
|
10093 2) Source code changes: |
|
10094 |
|
10095 i) TReal96::MultEq() altered to do one shift rather than preparing |
|
10096 and then shifting to left. This avoids losing bits which may be |
|
10097 shifted off the end by preparation, but for which there is space in |
|
10098 the final postition. |
|
10099 |
|
10100 ii) TReal96::operator TInt() changed to round towards zero to |
|
10101 comply with IEEE standard and Java requirements (also MSDEV). |
|
10102 |
|
10103 iii) TReal96::Prepare() altered to check for zero sign or zero |
|
10104 mantissa. If so, preparation is not done. Im the latter case, |
|
10105 the mantissa is meaningless and in the second preparation would |
|
10106 result in an infinite loop which does nothing. |
|
10107 |
|
10108 3) Morgan |
|
10109 1) Implemented Kernel Faulting. |
|
10110 2) Reorganised low memory to include the Registry just before the |
|
10111 Ram Drive. This means that the Ram Drive is shoved up and down |
|
10112 in memory as the Registry changes size. |
|
10113 Added class TLowMemory to manage the Ram Drive and Registry |
|
10114 memory allocation and to provide information to F32 about the |
|
10115 drive's changing position. |
|
10116 3) The Ram Drive now survives Warm Resets and Kernel Faults |
|
10117 Implemented CPersistantRegistry to do the same for the Registry. |
|
10118 T_RESET tests all this jiggery pokery on MARM. |
|
10119 4) Added integer divide by zero exception to MARM |
|
10120 5) Implemented a user side mini-loader for loading Dlls from ROM |
|
10121 when an explicit ROM path is provided. |
|
10122 eg. lib.Load(_L("MONKEY.DLL"), _L("Z:\\Animals\\Primates\\Hairy")); |
|
10123 This eliminates most of the time taken to load these Dlls. |
|
10124 |
|
10125 4) Jane |
|
10126 |
|
10127 1) Fixed MMU bug which showed up in fairly obscure kernel growth/shrinkage |
|
10128 situations. |
|
10129 |
|
10130 2) Optimised page allocator for faster kernel growth. |
|
10131 |
|
10132 3) Added a routine to compact kernel pages when the machine is reset. This function |
|
10133 is not called yet, except in test code. |
|
10134 |
|
10135 4) Made a TFindChunk::Open() actually add the chunk to the process address space (unless |
|
10136 it is a kernel chunk) so that the chunk can be read/written from another process. |
|
10137 |
|
10138 5) Matthew |
|
10139 1) Fixed HA-355: added %*a and %*b to TTime::Format() which give |
|
10140 am/pm without a space. |
|
10141 |
|
10142 2) Fixed HA-367: descriptor formatting now accepts things like |
|
10143 %-10f (default fill character space) and % 5F (no "+"). |
|
10144 |
|
10145 3) Internal changes to sound driver to reduce the amount of clicking. |
|
10146 Also fiddled with the volumes of DTMF dialling, so it should work now. |
|
10147 |
|
10148 |
|
10149 Version 0.01.086 |
|
10150 ================ |
|
10151 (Made by Matthew, 22nd January 1997) |
|
10152 |
|
10153 This release is binary compatible with 085 |
|
10154 |
|
10155 1) Graham |
|
10156 1) Renamed T_PARSE to T_TPARSE to eliminate the |
|
10157 conflict with the F32 test program of the same |
|
10158 name. |
|
10159 2) Updated the TREALTIM test programs and fixed some |
|
10160 super thread bugs. |
|
10161 3) Temporarily reintroduced page-based ROM mapping so |
|
10162 that debugging can be tested again. |
|
10163 4) Fixed a bug in the user side event code which |
|
10164 prevented position information being extracted |
|
10165 from the new EPointerSwitchOn events. |
|
10166 5) Fixed bugs in the ARM implementation of |
|
10167 TInt64A::MulTop() and changed it to return a TInt. |
|
10168 |
|
10169 2) Ann Windsor |
|
10170 1) Removed KTReal96MaxExponent and KTReal96MinExponent from |
|
10171 e32math.h |
|
10172 |
|
10173 2) Fixed bug HA-345: constants now correct to full precision. |
|
10174 |
|
10175 3) In t_math test code, all approximate tests now use the |
|
10176 function testApprox(). This tests that the relative error |
|
10177 is within a specified tolerance. |
|
10178 |
|
10179 4) Removed all approximate tests from t_r96 and t_r64. |
|
10180 |
|
10181 5) In Pow10(), limits for second underflow check changed so |
|
10182 1.0E-308 underflows as expected. |
|
10183 |
|
10184 6) TInt64A::Multop() fixed to carry from insignificant parts |
|
10185 and now returns a TInt to indicate whether the insignificant |
|
10186 64 bits are zero or non-zero. TInt64::MulTop() changed |
|
10187 accordingly. |
|
10188 |
|
10189 7) TReal96::DivEq() fixed to force rounding up where |
|
10190 appropriate. This results in division being up to |
|
10191 5E-6 secs slower in the worst case. |
|
10192 |
|
10193 8) SReal64 and SReal32 struct definitions added to um_std.h |
|
10194 and removed from other umath *.cpp files |
|
10195 |
|
10196 9) TReal96::MultEq() fixed to force rounding up where appropriate. |
|
10197 |
|
10198 3) Alastair |
|
10199 1) Fixed bugs in release versions of T_SEC. |
|
10200 |
|
10201 4) Simon |
|
10202 1) Protected EventQ from access from WINS Window and Timer threads. |
|
10203 Fixes a few WINS Bugs related to AddEvent causing an Access |
|
10204 Violation. |
|
10205 |
|
10206 2) Added some new shutdown code to allow System threads to continue |
|
10207 execution when the machine is off. This fixes bugs like "Program |
|
10208 does not exit when minimized" and other miscallaneous hangings |
|
10209 after a PowerDown. |
|
10210 |
|
10211 3) Change to E32Initialize to allow WINC apps to call it more than |
|
10212 once. |
|
10213 |
|
10214 5) Matthew |
|
10215 1) Stopped WINS from adding 1 hour for summer time when it's winter. |
|
10216 |
|
10217 2) Fixed bug in CRegistry::SetContents(). |
|
10218 |
|
10219 |
|
10220 Version 0.01.085 |
|
10221 ================ |
|
10222 (Made by Jal, 10th January 1997) |
|
10223 |
|
10224 1) Morgan |
|
10225 1) Fixed OOM alloc heaven in CreateSession and RLoader::LoadLibrary |
|
10226 2) Renamed kernel.exe to ekern.exe in the X86 obey file so device |
|
10227 drivers can link to it. |
|
10228 3) Added iLanguage bitfield and iHardware members to TRomHeader. |
|
10229 Updated BOOTROM.BIN to match. |
|
10230 |
|
10231 2) Jane |
|
10232 1) E32 Proposals |
|
10233 a) Made CObjectCon::ValidateName -> User::ValidateName (static) |
|
10234 b) Removed copy constructors for TPoint, TSize, TRect |
|
10235 c) Made TLocale constructor exported, removed setting to 0 from TChar |
|
10236 constructor. |
|
10237 d) Removed CDeltaTimerAlloc |
|
10238 e) Americanised Capitalise. |
|
10239 f) Make TDesC8::Length and TDesC16::Length inline |
|
10240 g) Implemented Rog's amendment of David's User::Notify proposal: an RNotifier |
|
10241 class with the following member functions- |
|
10242 TInt Connect(); |
|
10243 void Notify(const TDesC& aLine1,const TDesC& aLine2,const TDesC& aBut1,const TDesC& aBut2,TInt& aButtonVal,TRequestStatus& aStatus); |
|
10244 TInt InfoPrint(const TDesC& aDes); |
|
10245 |
|
10246 2) Bug fixes |
|
10247 a) Removed unused User time/date functions |
|
10248 b) Kept a list of thread relative threads within the thread so that they |
|
10249 can be closed properly when the thread dies. |
|
10250 c) Alloced a bit in the DThread iFlags for whether the thread is the main one, this |
|
10251 fixed the bug with APPRUNs not dying. |
|
10252 d) The priority of the NULL thread was incorrect in WINS - spotted by |
|
10253 David Batchelor, thanks. |
|
10254 f) Added CServer::Restart() and fixed CServer::RunL() |
|
10255 g) Fixed HA-55 kernel alloc heaven causes kernel re-entrancy |
|
10256 |
|
10257 3) SteveG |
|
10258 1) Fixed bug in the battery recharger hanging when free'd. Added |
|
10259 iChargeTick.Cancel() into the device driver destructor. |
|
10260 |
|
10261 4) Geert |
|
10262 1) Inlined various TDateTime, TTimeIntervalXxx and TTime members. |
|
10263 |
|
10264 2) Integrated Bruce's TTime::Parse() service. (See the proposal and |
|
10265 spec in E32 Proposals for details.) |
|
10266 |
|
10267 3) Removed all Time member functions duplicating services in TTime. |
|
10268 |
|
10269 4) Removed initialisation code from TTimeIntervalXxx's and TTime's |
|
10270 default ctors. Default constructed instances of these classes now |
|
10271 have undefined, arbitrary values. |
|
10272 |
|
10273 5) Graham |
|
10274 1) Added functionality to the text window server to allow raw |
|
10275 event information to be passed through to a client. The |
|
10276 primary user of this is the final test program which |
|
10277 needs some way of testing each raw keyboard element. |
|
10278 |
|
10279 2) Updated the double multitasking kernel functions to give |
|
10280 handles wrt the kernel server rather than the device |
|
10281 driver client. Updated the real time test program and |
|
10282 device driver accordingly. |
|
10283 |
|
10284 3) Made relocatable static data changes appropriate for |
|
10285 our real-time needs. |
|
10286 |
|
10287 4) Fixed a further digitiser problem. There should |
|
10288 now be no machines which experience complete |
|
10289 digitiser failure apart from those with hardware |
|
10290 faults in this area. |
|
10291 |
|
10292 6) Alastair |
|
10293 1) Added overloaded NewL function for Security class which |
|
10294 takes a piece of security data as a parameter so that a |
|
10295 CSecurityBase object can be constructed using security |
|
10296 data stored in a file for decryption purposes. |
|
10297 |
|
10298 2) Removed ConstructL, EncryptL, DecryptL and |
|
10299 IsValid functions from CSecurityBase API. |
|
10300 |
|
10301 3) Added NewEncryptL and NewDecryptL functions to |
|
10302 CSecurityBase API so that objects for handling encryption |
|
10303 sessions and objects for handling decryption sessions can |
|
10304 be created. The APIs for these object classes - |
|
10305 CSecurityEncryptBase and CSecurityDecryptBase - have been |
|
10306 added to E32BASE.H. |
|
10307 NewEncryptL and NewDecryptL take an initialisation |
|
10308 vector as a parameter to allow for pluggability with |
|
10309 more sophisticated encryption methods. |
|
10310 |
|
10311 4) Written a new UB_SEC.CPP to cater for the above |
|
10312 changes. The current encryption scheme produces |
|
10313 encrypted data in multiples of 32 bytes. |
|
10314 |
|
10315 5) Rewritten T_SEC.CPP to test security changes. |
|
10316 |
|
10317 7) Matthew |
|
10318 1) Changed set and free tls functions from exec to sv calls. |
|
10319 |
|
10320 2) Fixed alloc heaven in change notifier, and changed notifier so that |
|
10321 you can only logon once to each notifier, so that the kernel's notify |
|
10322 function can be called from exec functions. This has meant API changes, |
|
10323 and the RUndertaker API has also been changed - the parameter has been |
|
10324 removed from LogonCancel - so the two are more similar. |
|
10325 |
|
10326 3) Added iMaxVolume capability to sound driver, now the volume-by-value |
|
10327 takes a value from 0 to iMaxVolume, instead of 0 to 100. |
|
10328 |
|
10329 4) Removed Time::IsValidDate(). |
|
10330 |
|
10331 8) Pete |
|
10332 1) Added custom and variant DLL for rack D h/w. |
|
10333 |
|
10334 2) Moved sections of code relating to the Pc Card Controller h/w out of |
|
10335 the Kernel DLL and down into the Variant DLL. |
|
10336 |
|
10337 3) Added the function UserHal::DriveInfo() which |
|
10338 returns a TInfoName for each local drive and Pc Card socket as well |
|
10339 as the total number of valid drives and socketss on a given variant. |
|
10340 |
|
10341 4) Various changes to the member functions of UserPcCardCntrl |
|
10342 class. |
|
10343 |
|
10344 9) Ann Windsor - CHANGES TO MATHS SOURCE CODE |
|
10345 |
|
10346 I e32\inc\e32math.h |
|
10347 ------------------- |
|
10348 1. Constants KTReal32MinExponent and KTReal32MinExponent, KTReal96MaxExponent, |
|
10349 KTReal96MinExponent, KTReal96ExponentBigBad and KTReal96ExponentSmallBad added. |
|
10350 |
|
10351 2. Functions added to UM_R96.CPP added to TReal96 class |
|
10352 |
|
10353 II e32\inc\e32std.h |
|
10354 ------------------- |
|
10355 1. Constant KErrDivideByZero added. |
|
10356 |
|
10357 2. New constants defined for flags in TRealFormat type: |
|
10358 KExtraSpaceForSign=0x40000000 |
|
10359 KAllow ThreeDigitExp=0x20000000 |
|
10360 KUseSigFigs=0x10000000 |
|
10361 KDoNotUseTriads=0x08000000 |
|
10362 KGeneralLimit=0x04000000 |
|
10363 KRealFormatTypeFlagsMask=0x7c000000 |
|
10364 KRealFormatTypesMask=0x0000007 |
|
10365 |
|
10366 3. RealFormatType no longer enum; changed to constant TInts |
|
10367 KRealFormatFixed=1 |
|
10368 KRealFormatExponent=2 |
|
10369 KRealFormatGeneral=3 |
|
10370 and two new types added: |
|
10371 KRealFormatNoExponent=4 |
|
10372 KRealFormatCalculator=5 |
|
10373 |
|
10374 4. iDecimalPlaces member of TRealFormat name changed to iPlaces because used |
|
10375 for decimal places or significant figures as appropriate. |
|
10376 |
|
10377 5. TLex8 member function ScndigAfterPoint() added. |
|
10378 |
|
10379 |
|
10380 III e32\ucdt\uc_des.cpp |
|
10381 ---------------------- |
|
10382 1. Changed in line with changes to e32std.h above. |
|
10383 |
|
10384 2. AppendFormatList() altered to allow three-digit exponents in E,e (exponent) |
|
10385 and G,g, so Printf %E,e,G and g all display numbers to the maximum range. |
|
10386 |
|
10387 |
|
10388 IV e32\umath\um_dtor.cpp |
|
10389 ------------------------ |
|
10390 1. Changed TLex8::Val() appropriately to deal with the full range of values. This |
|
10391 includes doing multiplications in TReal96's so that errors can be detected. |
|
10392 |
|
10393 2. TLex8::ScndigAfterPoint() added to do conversion from decimal after point, so that |
|
10394 trailing zeros are not included. This ensures that e.g. 0.2900 and 0.29 have the same |
|
10395 binary representation. |
|
10396 |
|
10397 |
|
10398 V e32\umath\um_pow.cpp |
|
10399 ----------------------- |
|
10400 1. Changed to check for aSrc being ±1. If so, sets result appropriately to ensure exact |
|
10401 and to save running algorithm. |
|
10402 |
|
10403 2. Bug found and fixed: Int() being used for a number potentially larger than 32767. |
|
10404 Altered to return an error if Int() reports an error, i.e. if the input has an absolute |
|
10405 value larger than 32767 (a return value larger than 32767 would lead to an error later in |
|
10406 the function anyway). This ensures that results over and underflow as expected. |
|
10407 |
|
10408 3. Bug found and fixed: reduce() set high part of f to 0 rather than leaving it unchanged. |
|
10409 This fixes the bug reported in B4 problem report no HA-207: overflows are now reported as |
|
10410 expected. |
|
10411 |
|
10412 |
|
10413 VI e32\umath\um_pow10.cpp |
|
10414 ------------------------- |
|
10415 1. Changed to handle the full range of TReals rather than up to 1e±100. |
|
10416 |
|
10417 |
|
10418 VII e32\umath\um_r96.cpp |
|
10419 ------------------------ |
|
10420 1. Set() checks that exponent does not exceed maximum (KTReal64ExponentBigBad/ |
|
10421 KTReal64ExponentBigBad) and is not less than minimum (KTReal32ExponentSmallBad/ |
|
10422 KTReal64ExponentSmallBad). If so, KErrArgument is returned. |
|
10423 |
|
10424 2. GetTReal() |
|
10425 i) In checking for underflow, value against which check is made changed from |
|
10426 -KTReal32MaxExponent/-KTReal64MaxExponent to KTReal32MinExponent/KTReal64MinExponent. |
|
10427 ii) Rounding has been implemented for TReal32s so that when a TReal96 mantissa is |
|
10428 converted to a TReal32 it is rounded to the nearest value using all bits available, |
|
10429 rather than just being truncated. |
|
10430 |
|
10431 3. Casting to a TInt from a TReal96 changed to check for zero by using sign and also to |
|
10432 round to nearest, rather than always rounding down. |
|
10433 |
|
10434 4. Arithmetic |
|
10435 i) Added functions AddEq(), SubEq(), MultEq() and DivEq() which perform the operations |
|
10436 +=(), -=(), *=() and /=() respectively, as these operator functions did previously, but |
|
10437 reporting an error constant, rather than panicking. |
|
10438 ii) Similarly to i), functions Add(), Sub(), Mult() and Div() have been added as the |
|
10439 non-panicking variants of operator +(), -(), *() and /(). The latter functions panic on |
|
10440 an error as described in ii). The result is written to an input target variable. |
|
10441 iii) operator +=(), -=(), *=() and /=() perform arithmetic operations (using AddEq(), |
|
10442 SubEq(), MultEq() and DivEq() respectively) and either panic (when unsuccessful), leaving |
|
10443 the initial arguments unchanged, or otherwise return the result in *this. |
|
10444 iv) Added function CheckOverUnderflow(), to be used in AddEq(), SubEq(), MultEq() and |
|
10445 DivEq(), to check for overflow or underflow in cases where it may occur by normalising |
|
10446 the result and checking the exponent. |
|
10447 v) Added function PanicOverUnderflowDividebyZero() which is used in operator +=(), -=(), |
|
10448 *=() and /=() to panic if an error is returned by AddEq(), SubEq(), MultEq() or DivEq() |
|
10449 respectively. |
|
10450 vi) Addition operations (in AddEq()) improved to eliminate loops which change exponent by |
|
10451 1 and shift the mantissa by 1 place on each loop to make the exponents equal before |
|
10452 addition takes place, instead altering the exponent and shifting as appropriate in one |
|
10453 step. |
|
10454 vii) Fixed bug in AddEq() so that it shifts the mantissa of the bigger number right by |
|
10455 one. This prevents failure when subtracting numbers of the same sign (or adding numbers |
|
10456 of the opposite sign) when the ms bit needs to be carried down (and hence only two bits |
|
10457 are shifted down into the extended part when preparing the result) and the last hex digit |
|
10458 of the result is 4 when prepared. |
|
10459 viii) In DivEq(), a new error KErrDivideByZero has been introduced. Also reports |
|
10460 KErrArgument if 0/0 (invalid operation). |
|
10461 |
|
10462 5. Changed Normalise() to round on last three bits to nearest value, rounding to value |
|
10463 with l.s. bit zero (even) if two values are equally near to be consistent with MSDev and |
|
10464 to minimise propagation of rounding errors in general. |
|
10465 |
|
10466 6. To be consistent with MSDev, increment and decrement operators should normalise after |
|
10467 each operation. However, this doubles the time and ultimately decreases accuracy, so |
|
10468 has not been adopted. |
|
10469 |
|
10470 |
|
10471 VIII e32\umath\um_rtod.cpp |
|
10472 -------------------------- |
|
10473 1. fDigLim() changed to handle all exponents between -1022 and 1025, i.e. all TReal64s. |
|
10474 |
|
10475 2. All do...() functions now take TInt flags as one of their parameters to enable (or |
|
10476 disable) extra space for sign, three-digit exponents, significant figures rather than |
|
10477 decimal places, triads and linited accuracy of digbuf. |
|
10478 |
|
10479 3. In addtition to the flags above, an internal flag determining whether the digbuf needs |
|
10480 rounding has been added. |
|
10481 |
|
10482 4. doExponent() altered so it can be used both directly and by doGeneral() and |
|
10483 doCalculator(). In calculator mode, trailing zeros are eliminated. Also uses three- |
|
10484 digit exponents if allowed by flag if necesary. |
|
10485 |
|
10486 5. doFixed() altered so that a space is left for a potential sign if a flag is set. This |
|
10487 allows positive and negative numbers of the same exponent to be of the same accuracy. |
|
10488 |
|
10489 6. doGeneral() altered in line with alterations to doFixed() and doExponent(). |
|
10490 |
|
10491 7. doNoExponent() new function added to deal with calculator representation which does |
|
10492 not use exponents, i.e. numbers to a maximum number of significant figures. This |
|
10493 function is similar to doFixed(), other than it does not pad with zeros and hence does |
|
10494 not necessarily have a decimal point or deciaml places. If the triad length is non-zero |
|
10495 then triads are allowed by default (but can of course be disabled by a flag). An |
|
10496 overflow error is reported if the number is too big to fit in the maximum significant |
|
10497 figures and an underflow if it is too small for any significant digits to appear i.e. |
|
10498 apparently 0. If the number does not fit, i.e. not enough space for sign, point or triad |
|
10499 separators, then a general error is reported. |
|
10500 |
|
10501 8. doCalculator() new function added which operates as a conventional calculator would, |
|
10502 i.e. using non-exponential representation as far as possible and otherwise exponential |
|
10503 representation. The number of figures in the display is limited by the maximum |
|
10504 significant figures. This function will report a general error if there is insufficient |
|
10505 space availble to include a sign, decimal point and exponent, as well as the figures, |
|
10506 EVEN IF THEY ARE NOT REQUIRED. In this way it operates as a conventional calculator. |
|
10507 doCalculator() uses either doNoExponent() or doExponent() (in calculator mode, see 4.) |
|
10508 as necessary. |
|
10509 |
|
10510 9. rtob() has been altered in line with the above changes. |
|
10511 Also it now checks that the numspace is >0, otherwise reporting a general error. iType is |
|
10512 now used to take both the user-specified flags and type. If no type or flags are |
|
10513 specified then it leaves. Flags are also set as necessary for the various modes (in all |
|
10514 modes, rounding is needed): |
|
10515 fixed - does not use significant figures |
|
10516 exponent - does not use significant figures (when accessed directly rather than |
|
10517 through calculator) |
|
10518 general - does not use significant figures or triads |
|
10519 no exponent - uses significant figures |
|
10520 calculator - uses significant figures and no triads. |
|
10521 |
|
10522 |
|
10523 IX e32\umath\um_sin.cpp |
|
10524 ----------------------- |
|
10525 1. sinx() changed to ensure than sin of a multiple of pi and cos of an odd multiple of pi/2 |
|
10526 give exactly zero. |
|
10527 |
|
10528 |
|
10529 X e32\umath\um_std.h |
|
10530 --------------------- |
|
10531 1. EMathUnknownPanic added to TMathPanic to deal with unknown errors. |
|
10532 |
|
10533 |
|
10534 XI e32\umath\um_tan.cpp |
|
10535 ----------------------- |
|
10536 1. Tan() changed to ensure that tan of a multiple of pi gives exactly zero and tan of an |
|
10537 odd multiple of pi/2 reports an overflow error. |
|
10538 |
|
10539 |
|
10540 XII e32\umath\um_utl.cpp |
|
10541 ------------------------ |
|
10542 1. Poly() changed to use TReal96s. |
|
10543 |
|
10544 |
|
10545 XIII e32\upmarm\up_gcc.cpp |
|
10546 -------------------------- |
|
10547 1. Arithmetic now raises an exception if an error is returned by the TReal96 non- |
|
10548 panicking arithmetic variants. |
|
10549 |
|
10550 |
|
10551 XIV e32\upwins\up_i64.cpp |
|
10552 ------------------------- |
|
10553 1. Bug found in MulTop() - the two least significant words are never multiplied together |
|
10554 and hence the possible carry from this part into the ls word of the result is ignored. |
|
10555 This part may also need to be used for rounding purposes. |
|
10556 |
|
10557 |
|
10558 CHANGES TO MATHS TEST CODE |
|
10559 -------------------------- |
|
10560 I T_FLOAT |
|
10561 --------- |
|
10562 1. Altered and increased appropriately to test altered and new cases due to changes |
|
10563 in the above. Also divided into two modules containing data only (FLTDATA1.CPP and |
|
10564 FLTDATA2.CPP) and a header file containing class definitions because the amount |
|
10565 of initialised data was too large for the GCC compiler. |
|
10566 |
|
10567 2. Altered and increased appropriately to test fully string to real conversion to |
|
10568 full range. N.B. THESE TESTS ARE CURRENTLY APPROXIMATE DUE TO AN UNRESOLVED BUG. |
|
10569 |
|
10570 |
|
10571 II T_GEN and T_GEN32 |
|
10572 -------------------- |
|
10573 1. Added to generate files for use by T_R64 and T_R32. These are for testing in |
|
10574 ARM, to see that the GCC and MSDEV compiler give the same results. |
|
10575 T_GEN also generates special values needed for the generation of these files and |
|
10576 for T_R32 and T_R64 test code. |
|
10577 |
|
10578 |
|
10579 III T_MATH |
|
10580 ---------- |
|
10581 1. In the light of changes made to sin, cos, tan and power functions various tests have |
|
10582 been added or updated: |
|
10583 i) tests exact results are given for: zero to a power, any number to power zero, ±1 to |
|
10584 any power, sin(n*pi), cos((2n+1)*pi/2) and tan(n*pi) (where n is an integer). |
|
10585 ii) tests overflows occur as expected for Math::Pow() |
|
10586 iii) tests tan((2n+1)*pi/2) overflows. |
|
10587 |
|
10588 2. More comprehensive tests of trig functions have been included to test multiples of |
|
10589 "common" values: pi/6, pi/4, pi/3, pi/2 and pi (in addition to test for exact values |
|
10590 above). |
|
10591 |
|
10592 3. Comprehensive testing of Math::Cos() (not just Sin() ) have been added. |
|
10593 |
|
10594 4. Added test to check reduce() is working correctly. |
|
10595 |
|
10596 |
|
10597 IV T_R64 and T_R32 |
|
10598 ------------------- |
|
10599 1. Special values generated by T_GEN and T_GEN32 used in all tests. |
|
10600 |
|
10601 2. Casting tests for TReal32s now use TReal96s. (A special test following this shows the |
|
10602 occurrence of an (as yet unresolved) bug.) Tests have also been added to be used when |
|
10603 exception handling is fully implemented. |
|
10604 |
|
10605 3. All tests improved and made comprehensive. |
|
10606 |
|
10607 4. Further tests added using the files generated as described in II. |
|
10608 |
|
10609 5. T_R64.CPP and T_R32.CPP have also been split so their data is in a separate file |
|
10610 to avoid duplication of code in T_GEN and T_GEN32. |
|
10611 |
|
10612 6. Arithmetic tests all test for equality rather than using BitApprox, with cases |
|
10613 which fail being removed until bugs are fixed so exact results are obtained in all cases. |
|
10614 With changes to um_r96.cpp explained in VII 2. and 4. above, T_R32 tests are now all |
|
10615 exact. |
|
10616 |
|
10617 7. Test code has been included (for use in debug mode only) to test that exceptions |
|
10618 are raised correctly by the up_gcc.cpp code (which has been copied into separate files - |
|
10619 emgcc32.cpp and emgcc64.cpp - which may be called by these tests). |
|
10620 |
|
10621 |
|
10622 V T_R96 |
|
10623 -------- |
|
10624 1. Special values for use in the test code have been initialised and used in the tests |
|
10625 where appropriate. |
|
10626 |
|
10627 2. Constructors of TReal96s from TInts, TReal32s and TReal64s tested fully, including |
|
10628 tests that attempting to construct from values with "bad" exponents (i.e. exponents too |
|
10629 big or too small) results in a return of KErrArgument. |
|
10630 |
|
10631 3. Test of preparing a denormal checks that the value is not already prepared. Also added |
|
10632 test of preparing of an unprepared value. |
|
10633 |
|
10634 4. Arithmetic tests |
|
10635 i) Arithmetic tests all test for equality rather than using BitApprox, with cases |
|
10636 which fail being removed until bugs are fixed so exact results are obtained in all cases. |
|
10637 ii) As a result of the bug fixed in operator/=() by Jal a test of division of denormals |
|
10638 has been added. |
|
10639 iii) Extra tests have been added to test the new member functions AddEq(), SubEq(), |
|
10640 MultEq() and DivEq() which perform arithmetic operations and report an error rather than |
|
10641 panicking if overflow, underflow or division by zero errors occur. The panicking-variants |
|
10642 are also tested to be sure panics occur as expected (to be run in debug only). |
|
10643 |
|
10644 5. Tests of GetTReal(), casting functions unary operators, increment and decrement |
|
10645 operators and equalities and inequalities have been made more comprehensive and include |
|
10646 tests for overflow, underflow and total loss of precision errors where appropriate. |
|
10647 |
|
10648 6. Tests for SetExp() and SetSign() and also for assignment operators added. |
|
10649 |
|
10650 7. Increment/decrement tests now include normalising to get results consistent with |
|
10651 Microsoft. |
|
10652 |
|
10653 Version 0.01.082 |
|
10654 ================ |
|
10655 (Made by Morgan, 20th December 1996) |
|
10656 |
|
10657 This release is binary compatible with 081 |
|
10658 |
|
10659 1) Morgan |
|
10660 1) Fixed a bug in the SWI vector code on the ARM that was calling |
|
10661 dispatchDfcAndReschedule incorrectly. |
|
10662 |
|
10663 2) Jane |
|
10664 1) Changed the base addresses of WINS dlls as suggested by Martin Budden. |
|
10665 |
|
10666 2) Fixed bug in CObjectIx where creating many objects could return a null handle. |
|
10667 |
|
10668 3) Fixed Daylight saving bug in WINS |
|
10669 |
|
10670 3) Graham |
|
10671 1) Modified bootup code so that it reads the keyboard to |
|
10672 set up ROM memory configuration. This will be used with |
|
10673 the masked ROM to check paged mode rom access |
|
10674 |
|
10675 |
|
10676 Version 0.01.081 |
|
10677 ================ |
|
10678 (Made by Matthew, 17th December 1996) |
|
10679 |
|
10680 This release is binary compatible with 080 |
|
10681 |
|
10682 1) Matthew |
|
10683 1) Fixed dereferencing-zero bug in CObjectCon and CObjectConIx destructors. |
|
10684 |
|
10685 2) Changed EDLL WINS debug info to C7 format. |
|
10686 |
|
10687 |
|
10688 Version 0.01.080 |
|
10689 ================ |
|
10690 (Made by Jane, 16th December 1996) |
|
10691 |
|
10692 This release is binary compatible with 079 |
|
10693 |
|
10694 1) Morgan |
|
10695 1) Timers abort on power up and locale changes to universal |
|
10696 time, and daylight saving. |
|
10697 2) Fixed HA-307 |
|
10698 |
|
10699 2) Matthew |
|
10700 1) Speeded up several CObjectIx, CObjectCon and CObjectConIx |
|
10701 functions by using pointers into arrays instead of operator[]. |
|
10702 |
|
10703 3) Jane |
|
10704 1) Added support for real time threads. These are supervisor mode threads |
|
10705 whose real time response is greatly improved over ordinary user threads, |
|
10706 as it is possible for them to interrupt the supervisor server and |
|
10707 non-blocked slow exec calls. |
|
10708 Wrote the WINS and X86 implementations of the above, and a test driver |
|
10709 and test program. (D_RTIM and T_RTIM). |
|
10710 |
|
10711 4) Graham |
|
10712 1) Added ARM implementation of real time threads. |
|
10713 |
|
10714 Version 0.01.079 |
|
10715 ================ |
|
10716 (Made by Graham, 10th December 1996) |
|
10717 |
|
10718 This release is binary compatible with 078 |
|
10719 |
|
10720 1) Graham |
|
10721 1) Changed the bootstrap to map the ROM using ARM MMU 1Mb |
|
10722 sections. This reduces the number of TLB entries used |
|
10723 by the ROM and yields a 4% speed increase on our inter- |
|
10724 process message passing test (T_PROC1). |
|
10725 |
|
10726 2) Fixed MachineInfo problems on WINS (HA-220, HA-303). |
|
10727 |
|
10728 3) Patched up some Hal information services. |
|
10729 |
|
10730 4) Experimentally added clicks when the digitiser is touched. |
|
10731 |
|
10732 2) Matthew |
|
10733 1) Checked all PP::, KK::, Plat:: Panics and Faults. Some |
|
10734 have been changed to panic the calling thread, instead of |
|
10735 the kernel. This fixes bugs like HA-276 (Leave without TRAP). |
|
10736 |
|
10737 |
|
10738 Version 0.01.078 |
|
10739 ================ |
|
10740 (Made by Graham, 7th December 1996) |
|
10741 |
|
10742 This release is binary compatible with 077 |
|
10743 |
|
10744 1) Simon |
|
10745 1) Changed WINC over to use some WINS components, allowing |
|
10746 Store and other components to use WINS librraies for WINC |
|
10747 development. |
|
10748 |
|
10749 WINC now conists of a EKERN ECONS and EEXE but all other |
|
10750 components are taken from the WINS build. The BLD.CMD has |
|
10751 been changed to reflect this new building model. |
|
10752 |
|
10753 2) WINS EUSER added WINC initialisation functions. |
|
10754 |
|
10755 3) Removed unecessary files from UPWINC |
|
10756 |
|
10757 2) Graham |
|
10758 1) Implemented User::MachineConfiguration() and |
|
10759 User::SetMachineConfiguration(). These may be used to |
|
10760 save and restore the registry and O/S information such as |
|
10761 whether key clicks are enabled or sound volume is loud etc. |
|
10762 It is hoped that this information will now be standardised |
|
10763 in such a way that anyone moving from one EPOC/32 machine |
|
10764 to another will be able to transfer their machine's |
|
10765 'personality' in one go. |
|
10766 |
|
10767 2) Moved P::DebugMask() to Plat::DebugMask() as it was being |
|
10768 exported. |
|
10769 |
|
10770 3) Pete |
|
10771 1) PC Cards are now powered down automatically after 5 |
|
10772 seconds if the card is left both un-configured and with no memory |
|
10773 allocated. |
|
10774 2) Fixed a problem were a CF Card was incorrectly returning |
|
10775 'Not supported' on each subsequent access following the |
|
10776 situation were a read from the card was interrupted with a media |
|
10777 change. (Unfortunatley interrupted writes still cause the file server |
|
10778 to panic). |
|
10779 3) Full 16bit access of CF cards (and therefore support of Hitachi |
|
10780 cards) now takes place when a Rev2 Etna is detected. |
|
10781 4) General PC Card related class renameing. Also, PC Card |
|
10782 configuration info. has now been moved from the EKERN into the |
|
10783 appropriate custom DLL for ARM builds. |
|
10784 |
|
10785 |
|
10786 Version 0.01.077 |
|
10787 ================ |
|
10788 (Made by Graham, 6th December 1996) |
|
10789 |
|
10790 1) SteveG |
|
10791 1) Fixed bug in battery charging LDD which hung when free'ing the |
|
10792 device driver. Removed debug information which was being |
|
10793 output to the comms port while charging was in progress |
|
10794 |
|
10795 2) Morgan |
|
10796 1) Altered the MARM MMU PTE permissions lookup table to enable |
|
10797 write buffers for user data. Fixes HA-300 (Speed). |
|
10798 2) User::Abort now raises EExcKill exception. |
|
10799 |
|
10800 3) Jane |
|
10801 1) Fixed Lane's shared chunk growing problem |
|
10802 |
|
10803 4) Graham |
|
10804 1) Fixed a versioning problem with the text window notifier |
|
10805 server. |
|
10806 |
|
10807 Version 0.01.076 |
|
10808 ================ |
|
10809 (Made by Graham, December 3rd 1996) |
|
10810 |
|
10811 This release is binary compatible with 075 |
|
10812 |
|
10813 1) Graham |
|
10814 1) Added Eiger port control code which avoids output bits |
|
10815 reading erroneously when they are connected to circuits |
|
10816 with large rise or decay times. |
|
10817 |
|
10818 2) Added Minor Version 4 to the E32 version number to reflect |
|
10819 the fact that this is a B4 release. |
|
10820 |
|
10821 3) Fixed a problem in the media driver version numbering. |
|
10822 |
|
10823 2) SteveG |
|
10824 1) Preliminary release of the battery recharging LDD, DARCP1.LDD, |
|
10825 for tests by the hardware dept. This is only for the real |
|
10826 Proteas. |
|
10827 |
|
10828 The LDD offers the following functions: |
|
10829 |
|
10830 RDevNicads::Open() to open a channel |
|
10831 |
|
10832 RDevNicads::Type(TInt& type) to get the charge type in progress |
|
10833 This will be EChargeNone, EChargeFast or EChargeTrickle |
|
10834 |
|
10835 RDevNicads::SetChargeType(TInt aType) to set the type |
|
10836 The type should be EChargeNone, EChargeFast or EChargeTrickle. |
|
10837 Returns an error if it is not possible to start the requested |
|
10838 charging method. |
|
10839 |
|
10840 RDevNicads::Close() |
|
10841 |
|
10842 The functions are defined in D32RCHG.H and D32RCHG.INL |
|
10843 |
|
10844 Loading the device driver using LoadLogicalDevice will start |
|
10845 the charging if a rechargeable battery pack is fitted. The mains |
|
10846 LED will flash while fast charging is in process. Once fully charged, |
|
10847 the battery pack is trickle charged while mains power is applied. |
|
10848 This can be overridden using the above functions. |
|
10849 |
|
10850 3) Morgan |
|
10851 1) Fixed WINS so that it reports the same physical screen |
|
10852 size as it did before .INI-file-controlled fascia bitmaps |
|
10853 were introduced. |
|
10854 |
|
10855 Version 0.01.075 |
|
10856 ================ |
|
10857 (Made by Graham, November 28th 1996) |
|
10858 |
|
10859 This release is not binary compatible with any previous version. |
|
10860 |
|
10861 1) SteveG |
|
10862 a) Wrote the device driver for the serial E2PROM. This is currently |
|
10863 only for P1 Proteas, as the racks do not have the device fitted |
|
10864 |
|
10865 The device driver is DAE2P1.LDD and provides all the commands |
|
10866 necessary for writing, reading, protecting and locking the |
|
10867 sixteen 16-bit registers in the E2PROM chip |
|
10868 |
|
10869 b) Fixed bug in ARM Mem::Compare with non word aligned buffers >=16 |
|
10870 |
|
10871 c) Implemented keyboard repeats in the E32 text WServ |
|
10872 |
|
10873 d) Added an EActive event, which is sent in WINS when the focus |
|
10874 is returned to the WINS window. The EInactive event is still |
|
10875 sent when the WINS window loses focus |
|
10876 |
|
10877 e) Added an EUpdateModifers event, which is sent whenever the |
|
10878 WINS window gains focus. This event includes the current |
|
10879 state of the toggling modifier keys, and should be passed |
|
10880 on to the keyboard translator to update its modifier states |
|
10881 using KeyTranslator->UpdateModifiers(TInt). The modifiers |
|
10882 are extracted from the event using TInt TRawEvent::Modifiers(); |
|
10883 E32 text WServ modified accordingly. This event is sent before |
|
10884 the EActive event. This event will also be sent when booting |
|
10885 up WINS, so the caps/num lock states will be correct at bootup. |
|
10886 KeyTranslator->UpdateModifiers() also resets the state of the |
|
10887 key translator to normal |
|
10888 |
|
10889 f) Implemented keyboard clicks, the following UserHal functions |
|
10890 can be used to set the clicks: |
|
10891 |
|
10892 to set/read the volume: |
|
10893 UserHal::SetKeyClickLoud(TBool) |
|
10894 UserHal::KeyClickLoud(TBool&) |
|
10895 |
|
10896 to set/read if clicks are enabled: |
|
10897 UserHal::SetKeyClickEnabled(TBool); |
|
10898 UserHal::KeyClickEnabled(TBool&); |
|
10899 |
|
10900 to override the system on/off setting, forcing clicks off |
|
10901 (will be used by WServ to turn off clicks when an application |
|
10902 requests to disable clicks while in foreground): |
|
10903 UserHal::SetKeyClickOverriden(TBool) |
|
10904 UserHal::KeyClickOverriden(TBool&) |
|
10905 (This function could do with a better name...:-) |
|
10906 |
|
10907 Using SetKeyClickOverriden(ETrue) will disable key clicks |
|
10908 regardless of the system setting. The system setting can |
|
10909 still be changed while overriden. |
|
10910 |
|
10911 Note that key clicks will not work in WINS as they produced |
|
10912 more of a key fart than a click. The functionality is there, |
|
10913 and if a way of producing a suitable click is found, will be |
|
10914 added in a later release (function P::KeyClick() in KP_UTL.CPP) |
|
10915 |
|
10916 g) Fixed problem with CTimers going off 1 second early - this |
|
10917 solves the problem of alarms going off a second or so early |
|
10918 in TimeW app on MARM. There still appear to be problems |
|
10919 in WINS, which may lie elsewhere... |
|
10920 |
|
10921 TSecondLink::At() now converts the absolute time you specify |
|
10922 to seconds since year2000, and uses this to work out the |
|
10923 delta value to put into the queue. This is more accurate |
|
10924 since the time that the queue was last ticked over is also |
|
10925 stored in seconds since year2000. Previously the value added |
|
10926 to the delta queue was the difference between the system time |
|
10927 and the time you supplied, which could be upto a second out |
|
10928 if the microseconds part of the system time was non-zero |
|
10929 which would be 99.9999% of the time |
|
10930 |
|
10931 2) Morgan, |
|
10932 a) Added support for a WINS system ini file allowing some system defaults |
|
10933 to be setup. The .INI file lives at \EPOC32\DATA\SYSTEM.INI |
|
10934 and allows you to change the screen dimentions, fascia and the |
|
10935 LED arrangement. |
|
10936 The defaults are |
|
10937 ScreenWidth 640 |
|
10938 ScreenHeight 240 |
|
10939 ScreenOffsetX 123 |
|
10940 ScreenOffsetY 53 |
|
10941 FasciaBitmap \epoc32\data\Fascia.bmp |
|
10942 LedOffsetX 30 |
|
10943 LedOffsetY 26 |
|
10944 LedSize 14 |
|
10945 LedGap 5 |
|
10946 LedArrangeHorizontally |
|
10947 #LedArrangeVertically |
|
10948 |
|
10949 b) Added exception support for MX86, MARM, and WINS: |
|
10950 |
|
10951 TExceptionHandler* RThread::ExceptionHandler() const; |
|
10952 TInt RThread::SetExceptionHandler(TExceptionHandler* aHandler,TUint32 aMask); |
|
10953 void RThread::ModifyExceptionMask(TUint32 aClearMask, TUint32 aSetMask); |
|
10954 TInt RThread::RaiseException(TExcType aType); |
|
10955 TBool RThread::IsExceptionHandled(TExcType aType); |
|
10956 |
|
10957 If a thread has no handler for an exception it is passed onto the |
|
10958 kernel for handling. The default action is to panic the offending |
|
10959 thread. Unhandled exceptions caused by RThread::RaiseException() |
|
10960 force the thread to exit via User::Exit(). |
|
10961 Otherwise handlers are executed in the context of the thread on |
|
10962 which the exception is raised and control returned to the |
|
10963 point of the exception. |
|
10964 |
|
10965 When debugging under WINS, MSDEV will intercept the exception before |
|
10966 the handler has a chance to execute. |
|
10967 |
|
10968 c) Fixed HA-258 |
|
10969 |
|
10970 d) Added Uids (and -type-safe-link for ROMBUILD) to the Base components under ARM. |
|
10971 The Uids are #defined in \Epoc32\include\E32UID.H and \e32\kbarm\E32UID.IBY. |
|
10972 |
|
10973 e) Added an iTextSize to TLoaderInfo and TRomImageHeader for GDB |
|
10974 |
|
10975 f) Implemented Dll::GlobalAlloc, Dll::GlobalAllocated, Dll::GlobalRead, and |
|
10976 Dll::GlobalWrite. |
|
10977 |
|
10978 3) Matthew |
|
10979 a) Fixed HA-208 (IsPresent and IsValid in TUidType should return TBool). |
|
10980 Also changed loads of other Is*() functions to return a TBool instead |
|
10981 of a TInt. A few Is*() functions which returned KErr values have been |
|
10982 renamed: |
|
10983 |
|
10984 CObjectCon::IsValidName -> ValidateName |
|
10985 CObjectCon::IsUniqueFullName -> CheckUniqueName |
|
10986 DComm::IsValid -> Validate |
|
10987 |
|
10988 b) Fixed HA-196 (inline TLocale functions not expanded in release builds). |
|
10989 |
|
10990 c) Fixed HA-238 (Shortcomings of KNullUid definition): removed TUidC class |
|
10991 and added static functions TUid::Uid(TInt) and TUid::Null() to get round |
|
10992 GCC bug. #defined KNullUid as TUid::Null(). |
|
10993 |
|
10994 d) Changed WINS Uid scheme so that the UId is stored in a segment of its own |
|
10995 called ".E32_UID", to add a UID to a windows file include the code |
|
10996 |
|
10997 #pragma data_seg(".E32_UID") |
|
10998 __WINS_UID(Uid1,Uid2,Uid3) |
|
10999 #pragma data_seg() |
|
11000 |
|
11001 in your source. |
|
11002 |
|
11003 e) Added the capability to detect thread death to the RChangeNotifier |
|
11004 (completes with the EChangesThreadDeath bit set). |
|
11005 |
|
11006 f) Implemented User::InfoPrint() function. Also added a very simple notifier |
|
11007 server to the text window server so that little windows appear when |
|
11008 anyone calls User::Notify or InfoPrint. |
|
11009 |
|
11010 g) Improved the Tls scheme so that it uses a CArrayFixFlat. According to my |
|
11011 benchmarking this should speed up Dll::Tls(), though it remains to be |
|
11012 seen what happens in the real world. |
|
11013 |
|
11014 Note that there is now a Dll::FreeTls() function, and that Dll::SetTls |
|
11015 can now return KErrNoMemory. |
|
11016 |
|
11017 h) Changed midnight crossover code, to avoid costly divisions. |
|
11018 |
|
11019 i) Changes to sound driver: Fixed several bugs to do with having two LDDs |
|
11020 going at once. This has caused the driver to become more sensitive to |
|
11021 playing and recording at once, and may mean that code that previously |
|
11022 worked fine now returns KErrInUse. Remember that the driver keeps |
|
11023 playing aLaw even after the last play request has been completed, and |
|
11024 keeps recording until the buffer is full. If you find problems, check |
|
11025 that you flush the record buffer when you have stopped recording, and if |
|
11026 you try to record and get KErrInUse, you may want to wait until the play |
|
11027 buffer has had time to drain and try again before reporting an error. |
|
11028 |
|
11029 Added some preliminary power handling code. Playing will stop on |
|
11030 switch-off and the restart from where it left off; recording will |
|
11031 terminate with KErrGeneral (this seemed the only appropriate value) |
|
11032 when you switch back on. |
|
11033 |
|
11034 The PDDs now support EVolumeByValue. The values are as follows: |
|
11035 |
|
11036 0-20 = EVolumeNone |
|
11037 21-40 = EVolumeSoft |
|
11038 41-60 = EVolumeMedium |
|
11039 61-80 = between EVolumeMedium and EVolumeLoud |
|
11040 81-100 = EVolumeLoud |
|
11041 |
|
11042 4) Jane |
|
11043 a) Changed MMU from a scheme of passing 3 parameters denoting the chunk's |
|
11044 owner, its type (code, data etc.) and whether it was locked in physical or |
|
11045 linear memory, to a simpler scheme where the chunk's owner is passed throughout the MMU |
|
11046 system (there being a greatly increased possible number of chunk owners). This |
|
11047 was to enable the ARM MMU, which is more limited than the X86 one, to cope with |
|
11048 shared chunks being read only in one process and writable in another etc. |
|
11049 |
|
11050 b) When creating certain types of chunks, kept a list of allocated pages, so that it |
|
11051 is possible to support 3 possible states of permissions. (On the X86 this is achievable |
|
11052 by merely changing the top level PDE permissions - this is not so on the ARM). This change |
|
11053 allows the ARM MMU to support code chunks which are read/write to start with when the file |
|
11054 server reads the code into them from a CF card, but later are both supervisor read/only |
|
11055 when in the home section and user read/only when running. |
|
11056 |
|
11057 c) Made a note early on of the file server's process. Changed the ram drive chunk |
|
11058 to being two-state chunk, and when the file server runs, change the permissions on the |
|
11059 RAM chunk (top level PDEs only) so that the file server has direct access to the |
|
11060 RAM drive. |
|
11061 |
|
11062 d) Made the RAM drive supervisor priviledges, so that no-one except the file |
|
11063 server (see above) can access it. |
|
11064 |
|
11065 e) Added size reporting functions for spy programs |
|
11066 TInt RLibrary::GetRamSizes(TInt& aCodeSize, TInt& aConstDataSize); |
|
11067 TInt RThread::GetRamSizes(TInt& aHeapSize, TInt& aStackSize); |
|
11068 TInt RProcess::GetRamSizes(TInt& aCodeSize, TInt& aConstDataSize, TInt& anInitialisedDataSize, TInt& anUninitialisedDataSize); |
|
11069 |
|
11070 f) Added Andrew Thoelke's optimisations to various Find and Locate functions - see |
|
11071 Notes for more details. |
|
11072 |
|
11073 |
|
11074 5) Graham |
|
11075 1) Added and enhanced Kazuhiro Konishi's unicode/japanese changes |
|
11076 to the text window server. |
|
11077 |
|
11078 2) Added the UID into the sound driver make file and removed |
|
11079 all the link dependancies that the sound PDDs had upon |
|
11080 their LDD. |
|
11081 |
|
11082 3) Fixed the dodgy digitiser (HA-284) |
|
11083 |
|
11084 4) Experimentally increased the digitiser sample rate to |
|
11085 50 samples/s. |
|
11086 |
|
11087 5) Introduced the EPointerSwitchOn event. This event contains |
|
11088 x and y information and is generated when pen down causes |
|
11089 the machine to switch on. No further pen events should be |
|
11090 generated until the pen has subsequently been removed from |
|
11091 the surface of the digitiser. I believe appropriate windows |
|
11092 (i.e. the application bar window) will be able to register |
|
11093 with the window server an interest in these events. So, normal |
|
11094 windows should not be troubled by them. This should solve |
|
11095 problem HA-325. |
|
11096 |
|
11097 6) Removed the text window server's beep when switching on |
|
11098 normally and introduced it when switching on with the |
|
11099 digitiser. (This only occurs on debug builds). |
|
11100 |
|
11101 6) Rog 1) Fixed RackC COM::1 bug which was causing input RS-232 lines |
|
11102 to be reported incorrectly. |
|
11103 7) Pete 1) Reduced the wait states introduced by Etna on CF Card |
|
11104 attribute memory reads. This was interfering with screen |
|
11105 refreshing when 16 shades of grey mode was enabled (HA285). |
|
11106 2) CF card support when powering on and off the machine has |
|
11107 now been added. On power off, the card is fully powered down. On power |
|
11108 up, TLocalDrive objects are notified of the power down, forcing them |
|
11109 to re-mount the disk on the next access (HA281). |
|
11110 3) Added the functions InCritical() and EndInCritical() to |
|
11111 the PC Card controller. While in-critical, media change power down is |
|
11112 delayed. Writes to the CF Card are now critical. Prior to this, if a |
|
11113 media change occured during a write to the card then this could leave |
|
11114 a sector with an ID error on the card. |
|
11115 However, there is currently a problem such that the File Server |
|
11116 panics if a media change occures during a write to the CF card |
|
11117 so this should be avoided for now. |
|
11118 4) PC Card controller now able to access a CIS chain in common |
|
11119 memory as well as attribute memory. |
|
11120 5) Removed the function User::PcCardCntrlInterface() and |
|
11121 replaced this with the class UserPcCardCntrl. |
|
11122 6) Added the following functions to the above class: MediaStart(), |
|
11123 MediaOpen(),MediaInfo(),MediaRead(),MediaWrite(). These |
|
11124 allow access to a media device (eg CF Card) at a media |
|
11125 level (rather than a partition level as do TLocalDrive.Read() and |
|
11126 Write()). I.E. they allow access to the partition table etc. |
|
11127 |
|
11128 |
|
11129 Version 0.01.074 |
|
11130 ================ |
|
11131 (Made by Graham, November 6th 1996) |
|
11132 |
|
11133 1) Graham |
|
11134 1) Fixed a leak in AddProtected() which caused the O/S to |
|
11135 panic with EBadDfc when stressed. |
|
11136 |
|
11137 2) Added followers into the TEiger class for ports A,B,C,D |
|
11138 and E. Modifying these registers can now be safely |
|
11139 achieved without worrying about those bits which are |
|
11140 programmed to be input bits. |
|
11141 |
|
11142 3) Added interrupt protection into all TEiger modify |
|
11143 functions. |
|
11144 |
|
11145 4) Stopped KE_ALL debug information from coming out in all |
|
11146 circumstances. |
|
11147 |
|
11148 2) Morgan |
|
11149 1) Moved WINS power off button to F9 (HA-214). |
|
11150 2) Fixed HA-255 and added test code. |
|
11151 3) Made semaphore and mutex names unique for each process to fix |
|
11152 HA-163. It is now possible to run 2 WINS kernels with the same |
|
11153 process name simultaniously. |
|
11154 |
|
11155 Version 0.01.073 |
|
11156 ================ |
|
11157 (Made by Graham, November 6th 1996) |
|
11158 |
|
11159 1) Graham |
|
11160 1) Solved the stack problem which prevented debug information |
|
11161 from being emmitted in MARM debug builds. |
|
11162 |
|
11163 2) Fixed WINS keyboard repeat problem when the WINS window |
|
11164 loses focus. |
|
11165 |
|
11166 2) SteveG |
|
11167 1) Reduced stack usage of CObject::FullName, which was shoving a |
|
11168 TFullName on the stack for every owner of an object. Now only |
|
11169 one TFullName is put on the stack regardless of the number of |
|
11170 owners. This cures HA-273. |
|
11171 |
|
11172 Version 0.01.072 |
|
11173 ================ |
|
11174 (Made by Jane, October 25th 1996) |
|
11175 |
|
11176 This release is the candidate B3 release. Unless there are any show-stopping |
|
11177 bugs, our next release will be the first in the chain leading to B4, and |
|
11178 will not be binary compatible with this one. |
|
11179 |
|
11180 NOTE: Once again to speed the passage of this non-binary compatible release |
|
11181 through the system, I have released with test code failures. However in this |
|
11182 case I believe them to be test code problems. The following tests are failing |
|
11183 with kernel alloc heaven - T_CHUNK (chunk testing), T_KHEAP (thread testing) |
|
11184 and T_THREAD (undertaker testing). These tests fail in ARM debug builds only, |
|
11185 and pass on X86, which leads me to believe that these are granularity |
|
11186 issues in the kernel heap on ARM. |
|
11187 |
|
11188 1) Jane |
|
11189 a) Implemented allocation of sub-page tables for ARM. |
|
11190 |
|
11191 b) Fixed bugs to do with lengths of supplied filenames in |
|
11192 process and library loading. Took the opportunity to rationalise |
|
11193 the loader to do this and reduce stack impact considerably. |
|
11194 |
|
11195 c) Added MMU debug supervisor calls to enable the porting of my |
|
11196 MMU system from its emulated environment, and converted several |
|
11197 tests to the new system. |
|
11198 |
|
11199 d) Tidied up various APIs to their correct places, ready for |
|
11200 unfreeze. |
|
11201 Affected are the new unimplemented exception APIS, and the |
|
11202 RLoader::LoadLibrary |
|
11203 |
|
11204 e) Added an enum, TKernPanic, to e32std.h |
|
11205 Now client threads will be panicked with values in this list, |
|
11206 rather than error numbers. |
|
11207 |
|
11208 f) Fixed a couple of bugs in the low-level arm mmu implementation which |
|
11209 showed up with very large RAM disks. |
|
11210 |
|
11211 g) Exported wildcards KMatchAny and KMatchOne from e32std.h |
|
11212 |
|
11213 h) Changed RConsole::Set to RConsole::Init |
|
11214 |
|
11215 i) Stopped RTest writing to comm ports (except in X86 builds) |
|
11216 |
|
11217 j) Rationalised KErrxxxx constants |
|
11218 KErrNoLinearMemory gone, used KErrNoMemory instead |
|
11219 KErrSubSystem gone |
|
11220 KErrDomain gone, used KErrArgument instead |
|
11221 KErrException gone (kernel panic enum used instead) |
|
11222 KErrNotFound becomes -1, so that we could omit KNotFound in future. |
|
11223 |
|
11224 NOTE - KErrGeneral is no longer -1. This showed up quite a few |
|
11225 bugs in the file server which was assuming that KNotFound was the |
|
11226 same thing as KErrGeneral. This is no longer the case, beware! |
|
11227 |
|
11228 k) Added RThread::ProcessPriority() and RThread::SetProcessPriority() |
|
11229 |
|
11230 l) Changed void RThread::GetHeap(RHeap*&) to RHeap* RThread::Heap() |
|
11231 |
|
11232 m) Speeded up interprocess messaging by about 10%. A further 8% |
|
11233 to come in next release. |
|
11234 |
|
11235 2) Steve |
|
11236 a) Fixed UserHal::MemoryInfo which was returning an incorrect |
|
11237 figure for FreeRam - it was deducting the size of the RAM |
|
11238 disk from the real free ram size. |
|
11239 |
|
11240 3) Graham |
|
11241 a) Changed the ADC interface to unsigned values. This should give |
|
11242 doubled digitiser accuracy but meant recalibration of the |
|
11243 digitiser on all platforms. |
|
11244 |
|
11245 b) Updated K32VIDEO.H to include power handling functions. |
|
11246 |
|
11247 c) Add CountDown(n) and FirstDelta() function calls to the |
|
11248 priority queue class. |
|
11249 |
|
11250 d) Implemented waking up from alarms. |
|
11251 |
|
11252 e) Implemented waking up from pen down. |
|
11253 |
|
11254 f) Implemented ESwitchOn events on all platforms (HA-229). |
|
11255 |
|
11256 g) Added a beep to the Text Window Server in debug builds |
|
11257 when an ESwitchOn event occurs. |
|
11258 |
|
11259 h) Added a general purpose interface to the ADC channels which |
|
11260 measure battery voltages, thermistor readings etc. |
|
11261 |
|
11262 i) Made Neil Lilliot's change for reducing shadowing on the LCD. |
|
11263 |
|
11264 4) Jal |
|
11265 a) Fixed a bug in TReal96::operator/= |
|
11266 |
|
11267 Version 0.01.071 |
|
11268 ================ |
|
11269 (Made by Graham, October 11th 1996) |
|
11270 |
|
11271 1) Graham |
|
11272 1) Added a millisecond timer queue to the kernel. It |
|
11273 currently uses FRC2. All kernel services which were |
|
11274 using TEiger::WaitMilliseconds should now move over |
|
11275 to the new services provided by this queue. |
|
11276 2) Implemented the digitiser in terms of the millisecond |
|
11277 timer queue instead of the system tick queue. This enables |
|
11278 code to be written which can deliver more than 21 digitiser |
|
11279 events per second (it is currently set to 25/s). Not only |
|
11280 this, by driving current across the digitiser only when it |
|
11281 is absolutely necessary, power consumption has been |
|
11282 reduced. The digitiser should now work on upgraded |
|
11283 machines - the H/W fix for digitiser wobble involves an |
|
11284 increase to 1mS in the X/Y drive rise-time. In order to |
|
11285 take account of this rise-time, the millisecond timer was |
|
11286 required. |
|
11287 3) Implemented the buzzer in terms of the millisecond timer |
|
11288 queue. Due to variable interrupt latency, this does not |
|
11289 produce a pleasing effect. So, for the time being, I have |
|
11290 left the buzzer monopolising FRC1. You can switch between |
|
11291 this and the new millisecond timer buzzer with the compile |
|
11292 time switch __SOFTWARE_BUZZER__ in KEARM\KE_UTL.CPP |
|
11293 4) Introduced Hal::WaitMilliSeconds which uses the |
|
11294 millisecond timer. This replaces TEiger::WaitMilliSeconds. |
|
11295 5) Added device driver power handling functions in |
|
11296 KS_POWER.CPP. |
|
11297 6) Created a release of header files for those who link to |
|
11298 the E32 kernel (device driver writers mainly). This can |
|
11299 be found in R:\E32\ZIP\INCK.xxx |
|
11300 7) Implemented the auto clibration sequence on the ADC |
|
11301 converter. This cures the problem which causes the first |
|
11302 ever pen down event to have the wrong y-coordinate. |
|
11303 |
|
11304 2) Pete |
|
11305 1) Fixed a bug which prevented the machine booting up with |
|
11306 the CF card door open. |
|
11307 |
|
11308 Version 0.01.070 |
|
11309 ================ |
|
11310 (Made by Jane, October 4th 1996) |
|
11311 |
|
11312 1) Morgan |
|
11313 1) Priority of a process is set according to the Executable's E32Image. |
|
11314 |
|
11315 2) Fixed svLibraryLoadExact to deal with statically linked libraries where |
|
11316 the ownership of the libraries handle belongs to the newly created process. |
|
11317 |
|
11318 2) SteveG |
|
11319 1) Changed the keyboard data for P1 to have ' on shift-6, not ^ |
|
11320 |
|
11321 2) RDebug changes: Anyone can now request to be informed when a thread |
|
11322 panics, hits a breakpoint or causes an exception without having |
|
11323 called RDebug::Open. This means a panic catcher can be running |
|
11324 continuously and still allow GDB to be used. Previously, only one call |
|
11325 to RDebug::Open was allowed, meaning that the debugger could not |
|
11326 be used while a panic catcher was running and vice-versa. |
|
11327 |
|
11328 To catch panics etc, use the following code: |
|
11329 |
|
11330 SDebugInfo info; |
|
11331 TRequestStatus status; |
|
11332 RDebug::GetException(info,status); |
|
11333 User::WaitForRequest(status); |
|
11334 |
|
11335 SDebugInfo is defined in E32SVR.H |
|
11336 |
|
11337 You must kill the thread that paniced at some point using: |
|
11338 |
|
11339 RDebug::KillThread(info.iThread); |
|
11340 |
|
11341 or it will remain suspended forever. Do not use RDebug::Open |
|
11342 or you will prevent GDB from running at the same time. |
|
11343 |
|
11344 If someone starts GDB while your request to GetException is pending, |
|
11345 GDB takes priority and you will not recieve any notifications of threads |
|
11346 panicing until GDB quits |
|
11347 |
|
11348 Only one call to GetException can be active at any one time. It is |
|
11349 quite safe to call GetException while GDB is running, your request |
|
11350 will remain pending until the first app panics after GDB quits |
|
11351 |
|
11352 To cancel a request to GetException, use RDebug::CancelGetException() |
|
11353 |
|
11354 This feature has been buried by Jane's RUndertaker class which |
|
11355 should be used in preference ('cos she says it's better :-() |
|
11356 The ability to use GetException without calling RDebug::Open will |
|
11357 be removed in a later release. |
|
11358 |
|
11359 3) Altered D_GDB, the GDB stub, so that if you launch it without |
|
11360 passing a program to debug on the command line, it will wait |
|
11361 for a thread to panic/hit a breakpoint and then call |
|
11362 User::Notify(). You can then start up GDB on the PC and |
|
11363 connect to the Protea and start debugging the thread that |
|
11364 paniced/hit a breakpoint. |
|
11365 |
|
11366 To put a hardcoded breakpoint into your code, use the line: |
|
11367 |
|
11368 asm(".word 0xe7ffffff"); |
|
11369 |
|
11370 in your code. Run D_GDB without passing a command line, and |
|
11371 start your program. When the notify appears saying that |
|
11372 a program has hit a breakpoint, start up GDB on the remote |
|
11373 PC and start debugging... |
|
11374 |
|
11375 3) Jane |
|
11376 1) Added KErrException. Threads which make illegal accesses etc. are |
|
11377 now panicked with this value. |
|
11378 |
|
11379 2) Added RThread::RaiseException(TExcType aType) |
|
11380 For the time being, this just panics a thread with category |
|
11381 "Exception Raised" and panic number = the exception number |
|
11382 TExceptionType is obsolete, and will be retired at the next thaw. |
|
11383 |
|
11384 3) Filled all user mode stacks with 0x29 to aid spy programs |
|
11385 |
|
11386 4) Implemented the thread death notifer service. The class is |
|
11387 |
|
11388 class RUndertaker : public RHandleBase |
|
11389 { |
|
11390 public: |
|
11391 IMPORT_C TInt Create(); |
|
11392 IMPORT_C TInt Logon(TRequestStatus& aStatus,TInt& aThreadHandle) const; |
|
11393 IMPORT_C TInt LogonCancel(TRequestStatus& aStatus) const; |
|
11394 }; |
|
11395 |
|
11396 To use the class, create an RUndertaker and logon to it like so |
|
11397 |
|
11398 RUndertaker u; |
|
11399 u.Create(); |
|
11400 TRequeststatus stat; |
|
11401 TInt handle; |
|
11402 u.Logon(stat, handle); |
|
11403 User::WaitForRequest(stat); |
|
11404 |
|
11405 When a thread dies, the status word is completed, and the handle is that |
|
11406 of the dying thread. To look at why the thread died, for example, you might |
|
11407 do the following... |
|
11408 |
|
11409 RThread r; |
|
11410 r.SetHandle(handle); |
|
11411 if (r.ExitReason()==0x666) |
|
11412 { |
|
11413 ... |
|
11414 |
|
11415 As you now have a handle on the dying thread, it won't go away until |
|
11416 you close it. |
|
11417 |
|
11418 r.Close(); |
|
11419 |
|
11420 Look at T_THREAD for examples. |
|
11421 |
|
11422 NOTE: This service isn't guaranteed. If a thread dies while you are not |
|
11423 logged on to your RUndertaker, obviously you'll miss it - and there is a |
|
11424 window of opportunity after a thread has died & your status has completed |
|
11425 and before you get chance to deal with this and logon on again. |
|
11426 |
|
11427 NOTE2: Matt will be implementing a more general form of this in his |
|
11428 RChangeNotifier class, which will complete to tell you that a thread |
|
11429 has died, but not tell you *which* thread. |
|
11430 |
|
11431 4) Matthew |
|
11432 Fixed bugs: HA-207 (%J in TTime::FormatL should abbreviate in 12hour |
|
11433 mode) and HA-215 (CActiveScheduler::Add should assert parameter). |
|
11434 |
|
11435 5) Graham |
|
11436 Partial implementation of a kernel millisecond timer which |
|
11437 now runs the buzzer. Do not be alarmed if buzzing sounds |
|
11438 different in this release. |
|
11439 |
|
11440 Version 0.01.069 |
|
11441 ================ |
|
11442 (Made by Jane, September 26th 1996) |
|
11443 |
|
11444 1) Jane |
|
11445 1) Clients causing an exception are now panicked KErrAbort. |
|
11446 |
|
11447 2) Possible fix for curtains bug. Any more reports of curtains |
|
11448 welcome (sort of.) |
|
11449 The bug was caused because of the change in behaviour such that |
|
11450 a client thread is still hanging around when the server processes |
|
11451 the disconnect. If the process creator had already closed its |
|
11452 process handle, then the process died immediately, but the client |
|
11453 thread was left. Then when the client thread eventually died, it |
|
11454 closed its chunks, which involved removing them from the (dead) |
|
11455 process's address space. BANG! |
|
11456 |
|
11457 Now the chunk is removed from the process address space earlier on. |
|
11458 |
|
11459 |
|
11460 2) SteveG |
|
11461 1) Release 068 had a problem with the MARM custom DLLs, |
|
11462 which prevented the LEDs from flashing. Now OK. |
|
11463 |
|
11464 3) Graham |
|
11465 1) When the kernel faulted, it used to continue to run and |
|
11466 possibly do all sorts of bad things. |
|
11467 For the time being, we just print a helpful message to |
|
11468 COMM1 and loop forever. (In the future we will reset.) |
|
11469 |
|
11470 |
|
11471 Version 0.01.068 |
|
11472 ================ |
|
11473 (Made by Jane, September 23rd 1996) |
|
11474 |
|
11475 NOTE - T_RDRV failed on certain bananas. We think that it is due |
|
11476 to a problem with the hardware - the door open interrupt is not |
|
11477 asserted for these fruit. |
|
11478 |
|
11479 1) Graham |
|
11480 1) Removed nocallentrypoint declarations in MARM .OBY files |
|
11481 and added dll= appropriately. |
|
11482 |
|
11483 2) Fixed HA-219 which caused the digitiser to stop working |
|
11484 after the sound driver had been used. |
|
11485 |
|
11486 3) Added a system of cumulative inertia into the digitiser. |
|
11487 Consider a system where a physical movement of the pen |
|
11488 produces an actual Pen Move Event only if it has moved |
|
11489 more than 1 pixel. Call this an inertia of value 1. So, |
|
11490 if the digitiser has an inertia value of 3, then it only |
|
11491 produces Pen Move Events when a movement of greater than |
|
11492 3 pixels in any direction has occured. The system I am |
|
11493 now experimenting with is one where the longer the pen |
|
11494 stays in one place, the greater inertia it acquires. So, |
|
11495 normally, with the pen moving all the time, no inertia |
|
11496 effects are apparent. But, when the pen comes to rest, |
|
11497 then the inertia begins to increase by one unit for every |
|
11498 1/4s that it remains within its 'inert event horizon'. It |
|
11499 is currently set so that the maximum possible inertia |
|
11500 value is 5. Clearly, I can't tell if this is a valuable |
|
11501 system until some higher level apps start running with |
|
11502 this O/S. So, feedback on this subject is especially |
|
11503 welcome. |
|
11504 |
|
11505 4) Speculative fix for HA-217 ('Curtains'). |
|
11506 |
|
11507 5) Exported Hal::DisableIrqsToLevel1() et al. from the kernel |
|
11508 |
|
11509 6) Reworked the kernel exception interface (TException,Exc). |
|
11510 |
|
11511 2) SimonB |
|
11512 1) Removal of F32 code from the EWINC library |
|
11513 |
|
11514 1) Addition of a new TWINC directory with MAK files for building all the code in TBAS. (The CPP files |
|
11515 used are the ones in TBAS). The header files from TBAS have been copied into TWINC, but this could |
|
11516 be rectified by changing the #includes to reference "..\TBAS\..." |
|
11517 |
|
11518 1) Addition of bld and run cmd for building WINC libs, and test code. Also for running the test code. |
|
11519 |
|
11520 1) Changes to MNT additional verbs |
|
11521 |
|
11522 winc build the libarries |
|
11523 wincall |
|
11524 wincdeb |
|
11525 wincrel |
|
11526 wincudeb |
|
11527 wincurel |
|
11528 btwinc build the test code |
|
11529 btwincall |
|
11530 btwincdeb |
|
11531 btwincrel |
|
11532 btwincudeb |
|
11533 btwincurel |
|
11534 rtwinc Run the test code |
|
11535 rtwincall |
|
11536 rtwincdeb |
|
11537 rtwincrel |
|
11538 rtwincudeb |
|
11539 trwincurel |
|
11540 |
|
11541 |
|
11542 1) Changes to EWINC MAK files and build cmd file to get Unicode variants to build and work. May still |
|
11543 need some more changes - (the mak files were completely stuffed with release builds compiling debug |
|
11544 code). It may be worth recreating all mak files again froms scratch |
|
11545 |
|
11546 1) Changes to E32Initialise. With the file server in a separate Dll, the init code follows the WINS |
|
11547 init code method for the file server. |
|
11548 |
|
11549 3) Jane |
|
11550 1) Added new RThread::Create which takes an open RLibrary, as discussed in EON defects - |
|
11551 IMPORT_C TInt Create(const TDesC &aName,TThreadFunction aFunction,TInt aStackSize,TAny* aPtr,RLibrary* aLibrary,RProcess* aProcess,RHeap* aHeap, TInt aHeapMinSize,TInt aHeapMaxSize,TOwnerType aType); |
|
11552 This function takes all possible parameters so that a thread with an open library |
|
11553 handle can be created in another process, sharing a heap etc. (If the RLibrary*, RProcess*, RHeap* |
|
11554 are not required, just pass in NULL as usual.) |
|
11555 |
|
11556 The entrypoints of the library are called before the thread's entrypoint. |
|
11557 |
|
11558 NOTE - obviously the thread cannot access the handle it has on the library, so the library |
|
11559 can only get its final close when the thread dies. |
|
11560 |
|
11561 2) Fixed a bug to do with stack chunk creation. Improved the naming scheme for chunks. |
|
11562 |
|
11563 3) Various E32 Proposals |
|
11564 - Processes unmarked by default |
|
11565 - Queues don't allow shallow copies |
|
11566 - CActive functions const |
|
11567 - RTest Console() accessor for iConsole |
|
11568 |
|
11569 4) Improved the kernel server protection method, which was becoming more unsafe |
|
11570 with the addition of each new way of shooting a client thread. (Now if the kernel |
|
11571 server shoots a client, it should always leave KErrKernelServerLeave, after |
|
11572 stashing a suitable error to shoot the client with in K::ClientErrorCode) |
|
11573 |
|
11574 5) Fixed a few situations where the kernel was shooting itself rather than the client. |
|
11575 |
|
11576 6) Pervasive change, such that the Owmer() of a CObject - used in forming the |
|
11577 name - is correct for thread-owned objects. |
|
11578 If a semaphore A is owned by thread B in process C its name is now C::B::A |
|
11579 If it was owned by process C directly it would be called C::A |
|
11580 |
|
11581 4) SteveG |
|
11582 1) Implemented control of the LEDs on the racks and P1. It is now possible to get your |
|
11583 red alarm LED on your banana to flash, but it will flash green. Please note that this |
|
11584 is not an E32 software bug |
|
11585 |
|
11586 2) Changed all occurances of TheSuperPage().iTotalRamSize to TheSuperPage().iMaxFreeRam, |
|
11587 and added iTotalRamSize and iTotalRomSize to the SuperPage. iRamDriveSize is now |
|
11588 setup correctly, and these figures will be returned properly when using UserHal::MemoryInfo |
|
11589 |
|
11590 3) Added ESpecialKeyBase and ESpeicalKeyCount to E32KEYS.H. Any scancode in this range passed |
|
11591 to the keyboard translator will be passed through unaltered, and can be used for the |
|
11592 on-screen keys facility provided by the window server |
|
11593 |
|
11594 5) Morgan |
|
11595 1) Added RLibrary::FileName() |
|
11596 2) Corrected the key mappings for Func and Alt on the X86 build |
|
11597 3) Extended Library and Process RAM loading to share ready loaded code chunks. RAM loaded |
|
11598 Libraries can use ROM code chunks but currently Processes cannot. Suitable code chunks |
|
11599 are identified by matching their checksums. |
|
11600 |
|
11601 5) Matthew |
|
11602 1) Implemented %lx, %ld etc for formatting TInt64s. Added TLex::Val functions for TInt64s. |
|
11603 Removed TLex::Convert() and TLex::ConvertList(). |
|
11604 |
|
11605 2) Given DThreads and DProcesses ids: essentially just a unique TUint. Threads and processes |
|
11606 can be now opened by their id. |
|
11607 |
|
11608 3) Changed Hal::RomVersion() so that it now returns version number from the rom header on |
|
11609 Epoc platforms. |
|
11610 6) Pete |
|
11611 1) Changes to support Asci12-Rev2. (Still works with Rev1 though). |
|
11612 2) ATA Driver - Validation of partition entries in MBR now added. |
|
11613 3) ATA Driver - CHS and LBA addressing now supported (this allows us to work with Hitachi CF |
|
11614 card). |
|
11615 |
|
11616 7) Rog |
|
11617 1) Introduced a rack only bug into hardware handshaking for the Serial driver. To facilitate a |
|
11618 timely E32 release the serial drivers will be re-released with C32. If you don't need h/w |
|
11619 handshaking or can get by on WINS, these drivers are just fine. |
|
11620 |
|
11621 Version 0.01.067 |
|
11622 ================ |
|
11623 (Made by Jal, September 7th 1996) |
|
11624 |
|
11625 1) Jane |
|
11626 1) MMU fix to do with re-allocating linear space after RAM disk |
|
11627 has grown. |
|
11628 |
|
11629 2) More build and mnt fixes. |
|
11630 |
|
11631 3) Fixed HA-204, incorrect error given by in WINS library loading. |
|
11632 |
|
11633 4) Fixed HA-205, bug in RThread::Create |
|
11634 |
|
11635 5) Changed the Environment class, so that all environment variables are |
|
11636 stored and compared in UPPER CASE. |
|
11637 |
|
11638 6) Changed ks_proc as requested by Colly so that names which are duplicates except |
|
11639 for generation are allowed. |
|
11640 |
|
11641 7) Fixed HA-95, allowing the server to refer to the client thread when processing a |
|
11642 disconnect message |
|
11643 |
|
11644 8) Fixed HA-211, RProcess::Open stops process from being destroyed |
|
11645 |
|
11646 9) Fixed HA-210, runtime checks on queues |
|
11647 |
|
11648 10) Implemented basic exception handling - i.e. shooting the offending thread. Fixes |
|
11649 bugs HA-137 and HA-157 |
|
11650 |
|
11651 11) Fixed HA-212, RLibrary::Load problems after creating thread in foreign process |
|
11652 |
|
11653 |
|
11654 2) Matthew |
|
11655 1) Bug fixes HA-188, HA-198 and HA-202. Also fixed a time-mangling bug on |
|
11656 the rack, which effected relative timers due to off after more than |
|
11657 about 30 seconds, and a bug which caused the sound LDD to panic. |
|
11658 |
|
11659 3) SteveG |
|
11660 1) On the WINS build, F10 and F11 now send EKeySliderDown and |
|
11661 EKeySliderUp keypresses. F12 key is now the OFF key and |
|
11662 sends an EKeyOff keypress. The UserHal::SwitchOff() function |
|
11663 now minimizes the WINS window, simulating switching off. |
|
11664 Maximising the window will simulate switching on by sending |
|
11665 a TEvent::SwitchOn. The Shell, or whoever switches off, |
|
11666 should just look for EKeyOff and then call UserHal::SwitchOff |
|
11667 which will then work with the correct key on all platforms |
|
11668 |
|
11669 2) Implemented the TTime::Set(TDesC& aString) function which |
|
11670 allows setting or constructing a TTime from a date string |
|
11671 in the format YYYYMMDD:HHMMSS.MMMM - any part of the string |
|
11672 may be omitted, but either the dot or colon must be present. |
|
11673 Any parts of the string which are omitted are zero'd. |
|
11674 |
|
11675 3) Added suitable values to be returned by the WINS memory |
|
11676 functions in UserHal::MemoryInfo() |
|
11677 |
|
11678 4) Fixed problem with supplying long category names when |
|
11679 panicing a thread - only the first 16 characters used |
|
11680 |
|
11681 4) Morgan |
|
11682 1) Fixed HA-191 by not passing the placement new as an argument to |
|
11683 CArrayFixBase::ResizeL. |
|
11684 Fixed HA-187. Under WINS Mutex are signaled in thread CleanUp code |
|
11685 rather than in the DPlatThread destructor. |
|
11686 Fixed a Bug in Time::FormatL to prevent the %C directive overflowing |
|
11687 the descriptor and causing a panic. |
|
11688 |
|
11689 2) CArray???::FindIsq returns an index of 0 if the array is empty. |
|
11690 |
|
11691 3) User::IsRomAddress is back. Again. |
|
11692 |
|
11693 |
|
11694 Version 0.01.066 |
|
11695 ================ |
|
11696 (Made by Jane, August 23rd 1996) |
|
11697 |
|
11698 1) SteveG |
|
11699 1) Re-fixed bug in ARM Mem::Copy and Mem::Move, which got |
|
11700 lost prior to releasing 0.01.065. Refixed the test |
|
11701 software T_FUNC.CPP as well. The bug meant that |
|
11702 Mem::Copy and Mem::Move didn't return the correct |
|
11703 address if the source and target were the same |
|
11704 |
|
11705 2) Debugger fixed to take into account the changes in the |
|
11706 way threads start - the change meant the debugger no |
|
11707 longer set a breakpoint at the start of the thread |
|
11708 when starting a debug session |
|
11709 |
|
11710 2) Matthew |
|
11711 1) Fixes to sound LDD and arm PDD. |
|
11712 |
|
11713 3) Jane |
|
11714 1) Various build fixes, especially to WINC |
|
11715 |
|
11716 |
|
11717 Version 0.01.065 |
|
11718 ================ |
|
11719 (Made by Jane and Jal, 17th August 1996) |
|
11720 |
|
11721 IMPORTANT NOTE: |
|
11722 |
|
11723 To avoid delaying the chain below us, this version of E32 has been released with |
|
11724 2 known bugs and one possible bug. They are as follows... |
|
11725 |
|
11726 |
|
11727 1. Problems on ARM build when the RAM drive grows beyond 1 Meg in size. To avoid this |
|
11728 bug, this release of E32/F32 implements a maximum size of 1 Meg for the RAM drive. |
|
11729 |
|
11730 2. T_SOUND fails on the ARM platform. |
|
11731 |
|
11732 3. T_CPER (CPeriodic test) fails on EPOC platforms. However, I believe this is not a bug |
|
11733 - Graham fixed the timers but the test code is out of date. |
|
11734 |
|
11735 4. There are WINC test code problems which aren't worth delaying the release for. |
|
11736 |
|
11737 1) Graham |
|
11738 1) Added microseconds to the system time. This required a |
|
11739 fix to TEiger::RtcTickCount() to counteract an Eiger |
|
11740 hardware anomoly - the SYSFLG 64ths do not roll over to |
|
11741 zero at the same time as the RTC rolls over its seconds. |
|
11742 It does this on the half-second instead. Enhanced T_TIMER |
|
11743 to test this roll-over effect. |
|
11744 |
|
11745 2) Changed the MUTATBLE errors in E32DEF.H |
|
11746 |
|
11747 3) Updated EMARM.REL to include the P1 variant device drivers |
|
11748 |
|
11749 4) Fixed warnings in T_BUF.CPP. |
|
11750 |
|
11751 5) Fixed intrnal TTickLink services to work with microseconds |
|
11752 instead of tenths. In order to help device-driver writers, |
|
11753 I have changed the name of the functions to |
|
11754 PeriodicInMicroSeconds and OneShotInMicroSeconds. |
|
11755 |
|
11756 6) IMPORTANT |
|
11757 |
|
11758 I have changed the way in which the timing services in E32 work. |
|
11759 Although the changes mean that more of the underlying mechanism |
|
11760 is exposed, it is hoped that this policy will result in more |
|
11761 programmer-friendly services once the theory has been explained. |
|
11762 |
|
11763 The theory: |
|
11764 |
|
11765 The timing services are based upon the regular pulse that animates |
|
11766 the operating system. The time between pulses is called the tick |
|
11767 period and this will vary according to the platform being used. |
|
11768 The tick period for WINS, for instance, is 100000 uS, while for |
|
11769 MARM it is 15625 uS. |
|
11770 |
|
11771 A new service has been introduced which enables the programmer |
|
11772 to determine the length of the tick period in microseconds: |
|
11773 |
|
11774 TInt UserHal::TickPeriod(TTimeIntervalMicroSeconds32& aPeriod) |
|
11775 |
|
11776 But, for the purposes of the subsequent discussion, I will call |
|
11777 this length of time T. |
|
11778 |
|
11779 So, we have the following situation: |
|
11780 |
|
11781 ---|-----------|-----------|-----------|-----------|-- |
|
11782 <-----------> |
|
11783 T |
|
11784 |
|
11785 At any point in time, a program may request a timing service |
|
11786 such as User::After(x). This function should return x uS later. |
|
11787 Let us show this on the diagram and introduce the term y. |
|
11788 |
|
11789 User::After(x) |
|
11790 | |
|
11791 ---|-----------|-----------|-----+-----|-----------|-- |
|
11792 <-----------> <-----> |
|
11793 T y |
|
11794 |
|
11795 So, y represents the amount of time between the timing service |
|
11796 being requested and the next system tick. It is clear that y may |
|
11797 be any duration of time less than or equal to T. |
|
11798 |
|
11799 Let's explore the behaviour of User::After(x) for a range of |
|
11800 different values of x. |
|
11801 |
|
11802 x=0 |
|
11803 --- |
|
11804 This will return on the next system tick. So, if you ask |
|
11805 for 0 uS, you actually get y uS. |
|
11806 |
|
11807 User::After(0) Completes |
|
11808 | | |
|
11809 ---|-----------|-----------|-----+-----|-----------|-- |
|
11810 <-----------> <-----> |
|
11811 T y | |
|
11812 |
|
11813 x<T |
|
11814 --- |
|
11815 This will also return on the next system tick. So, if you |
|
11816 ask for T-1 uS, you actually get y uS. |
|
11817 |
|
11818 User::After(T-1) Completes |
|
11819 | | |
|
11820 ---|-----------|-----------|-----+-----|-----------|-- |
|
11821 <-----------> <-----> |
|
11822 T y | |
|
11823 |
|
11824 x=T |
|
11825 --- |
|
11826 This will cause a wait of 1 tick to be set up. So, if you |
|
11827 ask for T uS, you actually get y+T uS. |
|
11828 |
|
11829 User::After(T) Completes |
|
11830 | | |
|
11831 ---|-----------|-----------|-----+-----|-----------|-- |
|
11832 <-----------> <-----> |
|
11833 T y | |
|
11834 |
|
11835 x=2T-1 |
|
11836 ------ |
|
11837 Just to expose the workings a little more. 2T-1 gets divided |
|
11838 by T to see how many ticks to wait. Any remainder is discarded. |
|
11839 Now, in integer maths, (2T-1)/T = 1. So, we set up a wait of |
|
11840 1 tick. So, if you ask for 2T-1 uS, you actually get y+T uS. |
|
11841 |
|
11842 User::After(2T-1) Completes |
|
11843 | | |
|
11844 ---|-----------|-----------|-----+-----|-----------|-- |
|
11845 <-----------> <-----> |
|
11846 T y | |
|
11847 |
|
11848 x=2T |
|
11849 ---- |
|
11850 2T/T = 2. So, we set up a wait of 2 ticks. So, if you ask |
|
11851 for 2T uS, you actually get y+2T uS. |
|
11852 |
|
11853 User::After(2T) Completes |
|
11854 | | |
|
11855 ---|-----------|-----------|-----+-----|-----------|-----------|-- |
|
11856 <-----------> <-----> |
|
11857 T y | |
|
11858 |
|
11859 |
|
11860 Notes |
|
11861 ----- |
|
11862 |
|
11863 a. It is a slightly irksome feature of this system that if you |
|
11864 ask for x uS, you may end up waiting less time than x, or you |
|
11865 might end up waiting more time than x. It all depends on |
|
11866 the value of the 'wobble factor', y. |
|
11867 |
|
11868 As mentioned above, if you ask for T-1 uS, you actually |
|
11869 get y uS. Now y could be, in fact it will in all probability |
|
11870 be, significantly less than T-1. On the other hand, if you ask |
|
11871 for T uS, you get T+y uS, which means you will be waiting a |
|
11872 longer time than that requested. |
|
11873 |
|
11874 It is impossible, then, for the operating system using this |
|
11875 system to guarantee that it will wait at least as long as the |
|
11876 period of time requested. If this is the sort of guarantee you |
|
11877 need, then you will have to arrange it yourself by |
|
11878 adding (T-1) to your request. You can determine T using the |
|
11879 UserHal function mentioned above. |
|
11880 |
|
11881 b. In some situations the value of y is known. Consider a |
|
11882 periodic timer. After the first callback, you know that |
|
11883 you are now synchronised to the system tick and that y |
|
11884 is just less than T. The 'wobble factor', in this situation, |
|
11885 can be taken allowed for by the programmer. So, if you start |
|
11886 a CPeriodic with a delay of 0 uS and an interval of 0 uS, |
|
11887 you will get one which immediately starts calling back on |
|
11888 every system tick. |
|
11889 |
|
11890 c. Timing test programs commonly want to synchronise to the |
|
11891 system tick in order to remove the 'wobble factor' from |
|
11892 their calculations. This can now be achieved using User::After(0). |
|
11893 |
|
11894 |
|
11895 2) Jane |
|
11896 1) Added new User class layout from Martin Tasker. |
|
11897 |
|
11898 2) Re-fixed WINS RDebug.Print (HA-170) which had become un-edited after |
|
11899 I put it in! |
|
11900 |
|
11901 3) Added CObjectIx::Count() to return the total number of |
|
11902 objects in a CObjectIx. |
|
11903 |
|
11904 4) Added RThread::HandleCount(TInt& aProcessHandleCount, TInt& aThreadHandleCount) const; |
|
11905 This returns the total number of handles open in a thread and |
|
11906 its owning process. |
|
11907 |
|
11908 5) Added RHandleBase::HandleInfo(THandleInfo* anInfo); |
|
11909 This function fills in a THandleInfo structure with |
|
11910 information about the current handle. |
|
11911 |
|
11912 class THandleInfo |
|
11913 { |
|
11914 public: |
|
11915 TInt iNumOpenInProcess; |
|
11916 TInt iNumOpenInThread; |
|
11917 TInt iNumProcesses; |
|
11918 TInt iNumThreads; |
|
11919 }; |
|
11920 |
|
11921 iNumOpenInProcess = the number of times the object given by |
|
11922 the handle is open in this process. |
|
11923 iNumOpenInThread = the number of times the object given by |
|
11924 the handle is open in this thread. |
|
11925 iNumProcesses = the number of processes which have a handle on the object. |
|
11926 iNumThreads = the number of threads which have a handle on the object. |
|
11927 |
|
11928 6) Added an extra defaulted parameter to many RHandleBase derived classes' Create calls. |
|
11929 For example, from RMutex... |
|
11930 TInt CreateLocal(TOwnerType aType=EOwnerProcess); |
|
11931 TInt CreateGlobal(const TDesC &aName,TOwnerType aType=EOwnerProcess); |
|
11932 |
|
11933 The owner type specifies whether the handle created is |
|
11934 thread or process relative. (The default is process-relative |
|
11935 as before.) |
|
11936 Process-relative handles may be passed between threads in |
|
11937 the same process without duplication. The handles are held |
|
11938 in the process, and are not closed when the thread dies, so |
|
11939 the objects will hang around until the process dies. |
|
11940 Thread-relative handles need to be duplicated between |
|
11941 threads in the same process, but the handles will be closed |
|
11942 when the thread dies. |
|
11943 |
|
11944 IMPORTANT NOTE 1 |
|
11945 Due to design considerations, RLibraries and RTimers are |
|
11946 now always thread relative handles. You will need to |
|
11947 duplicate them if they are shared between threads. RLibraries |
|
11948 should now unload when their access counts become 0. |
|
11949 |
|
11950 Fixes bug HA-170 |
|
11951 |
|
11952 7) Fixed X86 crash on test failure. |
|
11953 |
|
11954 8) Fixed HA-177 - panicking a dead thread kills the caller. |
|
11955 |
|
11956 9) Fixed HA-180 - panic enum was incorrect. |
|
11957 |
|
11958 10) Dll loading changes. |
|
11959 |
|
11960 RLibrary load api becomes... |
|
11961 TInt Load(const TDesC &aFileName,const TDesC &aPath=_L("")); |
|
11962 |
|
11963 If aFileName is a full filename with path, then aPath will be ignored, |
|
11964 and the only load attempted will be that of aFileName. If the dll is not |
|
11965 at the specified location, the load will fail. |
|
11966 If aFileName is just a rootname, (e.g. _L("ECONS.DLL")), then the dll |
|
11967 will be searched for in the following order - specifed path, followed by |
|
11968 the system directory on each attached drive. |
|
11969 |
|
11970 IMPORTANT - old calls with the extension specified as the second parameter |
|
11971 e.g. lib.Load(_L("MYDLL"),_L(".DLL")) are now likely to fail as the second |
|
11972 parameter is now interpreted as a path. |
|
11973 |
|
11974 11) Dll entrypoints |
|
11975 For the first time under EPOC, DLL entrypoints are now called. |
|
11976 |
|
11977 When a process is loaded, all the DLLs to which it is statically linked |
|
11978 get their entrypoints called with the value EDllThreadAttach. (This call |
|
11979 is on behalf of and in the context of the main thread.) |
|
11980 When a new thread is created in the process, the statically |
|
11981 linked DLLs' entrypoints are again called with EDllThreadAttach in the |
|
11982 context of the newly created thread. |
|
11983 When each thread in the process dies, the entrypoints are called with |
|
11984 EDllThreadDetach in the context of that thread. |
|
11985 |
|
11986 Unlike Windows NT, I do not call entrypoints with EDllProcessAttach and |
|
11987 EDllProcessDetach. This is because the function pair Dll::GlobalAlloc() |
|
11988 and Dll::GlobalAllocated (currently unimplemented) allow the DLL to |
|
11989 discover its first ever call, if necessary. This is though to be more |
|
11990 useful in our system then knowing a first call per process. Similarly |
|
11991 Dll::SetTls() and Dll::Tls() enable the DLL to discover its first load |
|
11992 within a thread. |
|
11993 |
|
11994 When a thread loads a DLL dynamically via RLibrary::Load(), the DLL's |
|
11995 entrypoint is called, if and only if this is the first load of this DLL |
|
11996 within the thread. (So if a process is statically linked to FRED.DLL and then |
|
11997 a thread does an RLibrary::Load of FRED.DLL, then FRED's entrypoint is not called |
|
11998 in response to this load.) |
|
11999 The entrypoint is called with the value EDllThreadAttach in the context of the |
|
12000 thread loading the DLL. |
|
12001 |
|
12002 The above situation is further complicated by DLL's themselves being statically |
|
12003 linked to other DLLs. When a DLL is loaded, I make a list of unique DLL entrypoints |
|
12004 in the statically linked chain, and call each of them once only. So if DLL |
|
12005 A is linked to DLLs B, C and D, and then B is linked to X, C and Y, and D is |
|
12006 linked to B, C, and Z, then the entrypoints for A, B, C, D, X, Y and Z are called |
|
12007 once each when A is loaded. |
|
12008 If A were statically linked to just B and C, then when it was loaded just the |
|
12009 entrypoints for A, B, C, X, Y would be called. If the same thread then went |
|
12010 on to load D, then the entrypoints which had not already been loaded in that |
|
12011 thread would be called - i.e. D and Z. |
|
12012 |
|
12013 All this DLL entrypoint calling can get very time-consuming in the case of |
|
12014 many of the DLLs in the ROM which have no need for entrypoints to be called. |
|
12015 In this case, add "nocallentrypoint" after the DLL's specification line in the |
|
12016 obeyfile, and no entrypoints will be called for that DLL or any DLLs below it |
|
12017 in the static linkage chain. |
|
12018 All drivers should have "nocallentrypoint" specifiers. |
|
12019 |
|
12020 E.g. primary=\xxx\ekernd.exe sys\kernel.exe nocallentrypoint |
|
12021 |
|
12022 |
|
12023 IMPORTANT NOTE 2 |
|
12024 |
|
12025 Although for many of the files "nocallentrypoint" is optional, it is compulsory for |
|
12026 kernel.exe and efile.exe. Bad things happen if the kernel's entrypoint is called |
|
12027 when something which is linked to it is loaded, and the file server doesn't take |
|
12028 too kindly to it either! |
|
12029 Also, note that the name of efsrv.dll has changed in the obeyfile. It's probably |
|
12030 best to cut and paste from the released E32 obeyfiles. |
|
12031 |
|
12032 There are new versions of ROMBUILD & PETRAN which support the above obeyfile |
|
12033 changes and new structures necessary for the calling of DLL entrypoints. |
|
12034 |
|
12035 12) Due to the new directory scheme, it has been possible to remove |
|
12036 RLibrary::LoadExact. RLibrary::Load now does a load exact - i.e. it does no |
|
12037 name mangling on the name passed in as a parameter. |
|
12038 |
|
12039 RLoader::LoadExact has been renamed to RLoader::Load. This will affect you |
|
12040 if you have one of those "mini-loaders" for WINS which allows you to live |
|
12041 without the file server. |
|
12042 |
|
12043 |
|
12044 3) SteveG |
|
12045 1) Altered all builds of E32 to use the new directory structure \Epoc32\Build and |
|
12046 \Epoc32\Release |
|
12047 |
|
12048 2) Added SetModifierState function to KeyTranslator: |
|
12049 |
|
12050 TInt SetModifierState(TEventModifier aModifier,TModifierState aState) |
|
12051 |
|
12052 which alters the supplied modifier according to the supplied state. |
|
12053 TModifierState is defined in E32Keys.h and is one of ETurnOnModifier, |
|
12054 ETurnOffModifier or EToggleModifier. |
|
12055 |
|
12056 3) Fixed bug in KYTRAN where left and right modifiers were not being set |
|
12057 |
|
12058 4) Implimented DigitizerCalibration functions, and wrote simple text shell |
|
12059 calibration program. A calibrator will need to be written as an Eikon app. |
|
12060 |
|
12061 A calibration program should: |
|
12062 |
|
12063 Call UserHal::CalibrationPoints(TCalibration& aCalibration) which will return |
|
12064 three screen coordinates at which points should be plotted. The user should |
|
12065 touch these three points, and the values returned by the digitizer for the points |
|
12066 actually touched should then be returned to |
|
12067 UserHal::SetXYInputCalibration(TCalibration aCalibration) |
|
12068 |
|
12069 Note that a TCalibration actually has 4 points - the 4th is ignored by |
|
12070 SetXYInputCalibration |
|
12071 |
|
12072 Suitable default calibration values incorporated into each ARM variant, so |
|
12073 the calibration on your yellow jobbie should be more or less correct without |
|
12074 calibrating. If yours is wildly off, please let us know |
|
12075 |
|
12076 5) Added profiling support to all platforms, and increased the number of nested |
|
12077 profiles to 64. You can specify a range of profiles to clear/read results of. |
|
12078 Results returned in microseconds, but only recorded at tick resolution. This |
|
12079 avoids changing the API when profiles are measured more accurately. |
|
12080 |
|
12081 Using profiles: |
|
12082 |
|
12083 Decide on the profile numbers you are going to use, between 0 and 63. You can |
|
12084 use any of them, unless someone else is using some in the same ROM build. |
|
12085 |
|
12086 Reset the profiles you are using, by: |
|
12087 |
|
12088 RDebug::ProfileReset(aStart,aCount); |
|
12089 |
|
12090 which resets aCount profiles starting from profile number aStart. |
|
12091 |
|
12092 Surround the code with __PROFILE_START(n) and __PROFILE_END(n) where n is |
|
12093 a number of your choice between 0 and 63 inclusive. You can nest the profiles. |
|
12094 |
|
12095 Return the results using: |
|
12096 |
|
12097 TProfile profile[n]; // n is the number of results you are reading |
|
12098 |
|
12099 RDebug::ProfileResults(&profile[0],aStart,aCount); |
|
12100 |
|
12101 which writes the results of aCount profiles starting with profile number |
|
12102 aStart into your profile array. |
|
12103 |
|
12104 TProfile is currently defined as: |
|
12105 |
|
12106 class TProfile |
|
12107 { |
|
12108 TInt iTime; |
|
12109 TInt iCount; |
|
12110 }; |
|
12111 |
|
12112 You need to include E32SVR.H in your code to use profiles |
|
12113 |
|
12114 6) Moved the keystroke data dll to the variant level, allowing |
|
12115 different keyboard layouts for each implementation. Changed |
|
12116 the P1 version to give correct keystrokes and modifiers on the |
|
12117 yellow jobbies. |
|
12118 |
|
12119 On the real Proteas: |
|
12120 Fn sets EModifierLeftFunc and EModifierFunc |
|
12121 Menu sets EModifierLeftAlt and EModifierAlt |
|
12122 Fn-Esc sends an EKeyOff keypress |
|
12123 Fn-M sends an EKeyDecContrast keypress |
|
12124 Fn-, sends an EKeyIncContrast keypress |
|
12125 |
|
12126 On B and C racks: |
|
12127 Alt sets EModifierLeftAlt and EModifierAlt |
|
12128 Alt-Esc sends EKeyOff |
|
12129 Alt-, sends EKeyDecContrast |
|
12130 Alt-. sends EKeyIncContrast |
|
12131 |
|
12132 On WINS: |
|
12133 Left Alt sets EModifierLeftAlt and EModifierAlt |
|
12134 Right Alt sets EModifierFunc and EModifierLeftCtrl |
|
12135 and EModiiferCtrl (the setting of Ctrl is a Windows |
|
12136 funny and can't be prevented AFAIK) |
|
12137 |
|
12138 |
|
12139 7) Fixed bug with ARM coded Mem::Copy and Mem::Move where it |
|
12140 returned the wrong value if the source and targets were the same |
|
12141 |
|
12142 |
|
12143 4) AdamG |
|
12144 1) Much of ECOMM re-written to speed up data paths and fix all known serial driver |
|
12145 bugs. |
|
12146 |
|
12147 2) Implemented reference counting of interrupts in all serial PDDs for all hardware |
|
12148 and platform variants. |
|
12149 |
|
12150 3) Added use of NT Critical sections to WINS Serial PDD to eliminate multiple |
|
12151 completion bugs. |
|
12152 |
|
12153 4) Corrected signal polarity in all MARM serial PDDs. |
|
12154 |
|
12155 5) Matthew |
|
12156 1) Changes to TLocale. |
|
12157 Most importantly there are now four date separators and four time separators, one |
|
12158 for the beginning, one for the end and two potentially different internal |
|
12159 separators. The convention is that the NULL character represents no separator. |
|
12160 This has had a knock on effect on the TTime::FormatL() function: now '%:0' means |
|
12161 first time separator, '%/3' means the forth date separator etc. |
|
12162 |
|
12163 Additionally there is now an AmPmSymbolPosition indicator, and different distance |
|
12164 units for different contexts: one general and two for short/long distances. |
|
12165 |
|
12166 2) Added an RChangeNotifier class, for notifying users of global changes. At the |
|
12167 moment changes to TLocale and midnight crossover are the only things which are |
|
12168 notified. |
|
12169 |
|
12170 To use call Create() and then Logon() with a TRequestStatus. This first Logon() |
|
12171 will complete straight away with the value EChangesAll. Subsequent logons will |
|
12172 complete next time there is a change and the status will contain a bitfield |
|
12173 indicating what has changed. |
|
12174 |
|
12175 3) Made certain TInt64 functions inline. Also changed the default constructor so |
|
12176 that it does not assign zero. |
|
12177 |
|
12178 4) Changed the X86 build so that getting the time returns fractions of seconds. The |
|
12179 time is now given to the nearest tick (which occur at just over 18.2Hz on the X86). |
|
12180 |
|
12181 5) Added unary minus operators to TPoint and TSize. |
|
12182 |
|
12183 6) Changes to sound driver: Fixed a bug that caused a crash when you tried cancelling |
|
12184 playing alarm sounds. Stopped it from panicking in Wins if you turned beeps off |
|
12185 from the control panel. |
|
12186 |
|
12187 6) Jal |
|
12188 1) Various internal changes to TLocalDrive and media drivers. |
|
12189 |
|
12190 2) Added operator[] to CObjectIx |
|
12191 |
|
12192 7) Morgan |
|
12193 1) More RThread test code under Suspend/Resume conditions |
|
12194 and fixes to WINS and EPOC threads. |
|
12195 2) Moved User::IsRomAddress to the file server where it is now called |
|
12196 RFs::IsRomAddress |
|
12197 3) Added User::TickPeriod |
|
12198 4) Added physical screen size (in twips) to MachineInfo |
|
12199 |
|
12200 8) Steve & Jane |
|
12201 |
|
12202 Implemented new Epoc32 directory structure (described in more detail on Notes.) |
|
12203 |
|
12204 All makefiles should be changed so that the intermediate files are built to |
|
12205 e.g. \Epoc32\Build\WINS\E32\Deb for exes and \Epoc32\Build\WINSD\E32\Deb for dlls. |
|
12206 The executables and dlls themselves should be built to |
|
12207 e.g. \Epoc32\Release\WINS\Deb. (NOTE - there is no "E32" in this directory path - |
|
12208 all releasables for a given build go to the same directory.) |
|
12209 |
|
12210 E32 mnt makework currently makes the whole Epoc32 structure - this can be used to |
|
12211 get started. |
|
12212 |
|
12213 mnt gettools gets tools to Epoc32\Tools. This should be added to your path from |
|
12214 the control panel. All existing paths to \tools should be removed if possible |
|
12215 - if not possible then the e32 tools themselves should be removed from any tools |
|
12216 directories in your path. |
|
12217 |
|
12218 \E32SYS should also be removed from the path. |
|
12219 |
|
12220 The scheme whereby executables can be installed under Epoc32\WINS\Z and appear as |
|
12221 if they are under Z: is not in this release, but will be in the next one. For the |
|
12222 time being, the old scheme with romfile.bin holds. |
|
12223 |
|
12224 NOTE: GCC only runs from C:\Epoc32\GCC\BIN, so if you are working on a substed |
|
12225 drive, you will still need an Epoc32 directory with GCC in on C:. |
|
12226 |
|
12227 |
|
12228 Version 0.01.064 |
|
12229 ================ |
|
12230 (Made by Graham, 26 July '96) |
|
12231 |
|
12232 1) Graham |
|
12233 1) Integrated WINC into MNT.CMD. This version is the first |
|
12234 to include a release of WINC. |
|
12235 |
|
12236 2) Implemented a special version of RDebug::SupervisorMode |
|
12237 which suits the purposes of REPRO.EXE |
|
12238 |
|
12239 3) REPRO.EXE now works. It communicates with a program called |
|
12240 PREPRO.EXE which runs on the PC. You can get this program |
|
12241 from S: using GETREL PTOOL PEIGER 104 in your \TOOLS |
|
12242 directory. You may type PREPRO for command line options, but, in |
|
12243 general, you merely type PREPRO imagefilename.IMG. The PC will |
|
12244 then wait for the Protea to lead communications. |
|
12245 |
|
12246 Now run the REPRO program on your Protea. Make sure you do |
|
12247 not remove mains power during the reprogramming process. |
|
12248 |
|
12249 Progress will be reported on the screen of the PC. |
|
12250 |
|
12251 If an error is detected during the reprogramming process, |
|
12252 then the program on the Protea will just restart - erasing |
|
12253 all the flash chips again and then programming them. |
|
12254 |
|
12255 This means that if you interrupt the PC program, no |
|
12256 disaster will occur. If you decide you are programming the wrong |
|
12257 image in the middle of the process, then just escape from the PC |
|
12258 program, get the correct image on your PC and restart |
|
12259 PREPRO with this image. By the time you have done this, |
|
12260 the Protea will have timed out and will have decided to |
|
12261 restart. |
|
12262 |
|
12263 4) Added Gillian's bug fix for TTime::MonthsFrom() and |
|
12264 TDateTime::SetHour() |
|
12265 |
|
12266 5) Changed EWSRV.EXE so that it hunts for ESHELL.EXE on all |
|
12267 drives from A: to Z: |
|
12268 |
|
12269 6) Upgraded BOOTROM.BIN to the new E32TOOLS(36) |
|
12270 |
|
12271 |
|
12272 2) SteveG |
|
12273 1) Fixed bug in Des::AppendNumUC which converted the whole |
|
12274 descriptor to uppercase rather than just the appended number |
|
12275 |
|
12276 2) Added simple profiling for ARM builds, which counts the |
|
12277 number of times a function or section of code is executed |
|
12278 and the time taken in ticks. A later version will be |
|
12279 more accurate (using a 512kHz timer). |
|
12280 |
|
12281 To use this, surround the section of code to be tested with: |
|
12282 |
|
12283 __PROFILE_START(n) |
|
12284 and |
|
12285 __PROFILE_END(n) |
|
12286 |
|
12287 where n is a number between 0 and 7 inclusive. You use upto |
|
12288 8 profiles, which can be nested if necessary. You will need |
|
12289 to use the RDebug class to access the results as follows: |
|
12290 |
|
12291 TInt E32Main() |
|
12292 { |
|
12293 RDebug debug; |
|
12294 |
|
12295 debug.ProfileReset(); // Clear readings & reset counts |
|
12296 |
|
12297 __PROFILE_START(0); |
|
12298 <test code> |
|
12299 __PROFILE_END(0); |
|
12300 |
|
12301 SProfileInfo profile; |
|
12302 |
|
12303 debug.ProfileResult(profile); |
|
12304 } |
|
12305 |
|
12306 SProfileInfo and RDebug are defined in E32SVR.H. |
|
12307 |
|
12308 SProfileInfo is defined as: |
|
12309 |
|
12310 struct SProfileInfo |
|
12311 { |
|
12312 TInt iCount[8]; |
|
12313 TUint iTimes[8]; |
|
12314 } |
|
12315 |
|
12316 RDebug::ProfileResults returns the counts and times |
|
12317 for all 8 profiles, even if you are only using 1 profile. |
|
12318 |
|
12319 3) ARM coded the following E32 routines which were dog slow, |
|
12320 and changed the relevent descriptor functions to use these |
|
12321 new functions rather than their own copying code |
|
12322 |
|
12323 Mem::Copy |
|
12324 Mem::Move |
|
12325 Mem::Swap |
|
12326 Mem::Fill |
|
12327 Mem::Compare |
|
12328 |
|
12329 TDes8::AppendNum |
|
12330 TDes8::AppendNumUC |
|
12331 |
|
12332 and added ARM code for signed or unsigned integer divide |
|
12333 by 2,4,5,7,8,10 and 16, which will improve the modulo |
|
12334 function as well. |
|
12335 |
|
12336 Speed improvements, TDes::AppendNum() |
|
12337 |
|
12338 TDes8::AppendNum has been optimised for hex, decimal, octal |
|
12339 and binary conversions, and is improved for all other |
|
12340 conversions as well. |
|
12341 |
|
12342 TDes::AppendNum(num,EHex) is now 614% faster |
|
12343 TDes::AppendNum(num,EDecimal) is now 611% faster |
|
12344 TDes::AppendNum(num,EOctal) is now 751% faster |
|
12345 TDes::AppendNum(num,EBinary) is now 1322% faster |
|
12346 |
|
12347 The uppercase conversions will be the same speed as the |
|
12348 lowercase ones, but the %age increase will be greater due |
|
12349 to the fact that the string is worked out in uppercase rather |
|
12350 than converting the descriptor to uppercase after the conversion, |
|
12351 as was done in the CPP version. |
|
12352 |
|
12353 Speed improvements, Mem functions |
|
12354 |
|
12355 Mem::Fill is now 236% faster for word aligned buffers, and |
|
12356 around 400% faster for non word aligned buffers, which were |
|
12357 slow before |
|
12358 |
|
12359 Mem::Swap is now 975% faster for buffers which have the same |
|
12360 word or non-word alignment and around 160% faster for buffers |
|
12361 which have different alignments to each other |
|
12362 |
|
12363 Mem::Move and Mem::Copy are 330% faster for word aligned |
|
12364 buffers. For buffers with the same byte alignment, the speed |
|
12365 increase is around 600%. If the two buffers have different |
|
12366 alignments to each other, the increase is around 157%. |
|
12367 Mem::Move will be slightly faster than Mem::Copy as it knows |
|
12368 the buffers are aligned by definition of the function. |
|
12369 |
|
12370 Mem::Compare: no figures yet, but descriptor compares are |
|
12371 around 220% faster, although this depends on what you're |
|
12372 comparing |
|
12373 |
|
12374 Speed improvements, Integer division |
|
12375 |
|
12376 No speed measurements on this, but for divide by 16,8,4,2 |
|
12377 should be pretty big, and the divide by 10 seems to be around |
|
12378 200% faster. Much hair missing after realising that the GCC |
|
12379 routine __umodsi3 in UP_GCC.CPP (which returns the remainder |
|
12380 of a division), doesn't actually 'destroy r3' as it states in |
|
12381 the cpp file, it returns the quotient in r3, which is relied |
|
12382 upon in divide routines which call __umodsi3. |
|
12383 |
|
12384 4) DeBugger. Drastic unimprovements to get a working version, |
|
12385 which is now what we have :-)) The debugger will now not |
|
12386 single step into EUSER or certain other DLLs, as this |
|
12387 causes problems on the ARM build. As the ARM processor |
|
12388 does not have any single step or trace mode, all single |
|
12389 stepping is done by looking at the next instruction to |
|
12390 be executed, working out where the PC will be if that |
|
12391 instruction is executed, and setting a breakpoint at that |
|
12392 address. Stepping into EUSER or certain other DLLs causes |
|
12393 certain death as any thread could hit that breakpoint |
|
12394 before the thread being stepped. Although code has been |
|
12395 written to silently step any thread over a breakpoint |
|
12396 it shouldn't stop at, serious problems occur if the |
|
12397 kernel hits the breakpoint while in supervisor mode or similar. |
|
12398 |
|
12399 A document on how to use GDB is on R:\E32\DOCS\GDB.DOC. |
|
12400 Contact me on x625 if you are daring enough to try and use |
|
12401 the most excellent GDB software. |
|
12402 |
|
12403 If you wish to use the debugger, you need to include |
|
12404 D_GDB.EXE in your ROM build. Please ensure this is AFTER |
|
12405 euser.dll in the ROM and BEFORE anything you debug. |
|
12406 The debugger will not single step into any part of the ROM |
|
12407 that is before D_GDB.EXE. This is a quick 'bodge' to get |
|
12408 around the problem mentioned above, and allows a quick |
|
12409 method of changing what you can and can't single step |
|
12410 into. |
|
12411 |
|
12412 3) Rog |
|
12413 1) Added CAsyncOneShot and CAsyncCallBack. These two active object |
|
12414 derived classes are like a single use CIdle. They can also be used |
|
12415 to transfer a thread of control between two threads. Because of the |
|
12416 way they work both classes are added to the current active scheduler |
|
12417 when they are created. |
|
12418 |
|
12419 2) Added delta timer class. CDeltatimer is a resource efficient timer |
|
12420 based on a delta queue and a single RTimer. Requests are identified by |
|
12421 TTimerHandles which are returned from CDeltaTimer::Queue and may be |
|
12422 passed to CDeltaTimer::Remove. |
|
12423 |
|
12424 3) Added the fast timer driver to the source release. Due to beta |
|
12425 deadlines work on the fast timer has ceased. |
|
12426 |
|
12427 4) Matthew |
|
12428 1) Various changes to the sound LDD and PDDs. The main change is that |
|
12429 buffering in now done entirely within the LDD. |
|
12430 |
|
12431 2) Renamed TTime::SetNow() to HomeTime(); TTime::SetUniversal() to |
|
12432 UniversalTime() and User::SetSystemTime() to SetHomeTime(). The |
|
12433 "system time" is now universal time ie GMT. Home time takes into |
|
12434 account any daylight saving and time zone. |
|
12435 |
|
12436 3) Changes to TLocale - added SpaceBeforeAmPm and changed the way |
|
12437 daylight saving is handled. |
|
12438 |
|
12439 4) Fixed bug in second queue which caused absolute timers to run twice |
|
12440 as fast as they should have done. |
|
12441 |
|
12442 5) Implemented RHeap::CompressAll(). |
|
12443 |
|
12444 5) Jane |
|
12445 1) Added changes from Steve Townsend to optimize region code. |
|
12446 |
|
12447 2) Added timer fixes to thread clean-up code |
|
12448 |
|
12449 3) Fixed the RDebug death under WINS, and implemented RDebug::Print using |
|
12450 OutputDebugString to the debug window. |
|
12451 |
|
12452 6) Pete 1) Pc card Controller now allows allocation of card memory chunks smaller |
|
12453 than page size. |
|
12454 2) Various omissions to Pc Card Controller now attended to. |
|
12455 3) Improvements to media change handling. |
|
12456 4) Internal ram drive supports size changing. |
|
12457 5) TLocalDrive::Format() now calls back during formatting. |
|
12458 6) TLocalDrive::Caps() returns more than just size. |
|
12459 |
|
12460 7) Morgan 1) Thread and Process protection. |
|
12461 The kernel, file server, null thread, supervisor are now marked as |
|
12462 system threads/processes. They are also Protected. |
|
12463 Any attempt to Panic, Kill, Terminate, SetPriority on a protected thread |
|
12464 will shoot the caller. |
|
12465 A thread's status can be changed with: |
|
12466 RThread::SetProtected(TBool) |
|
12467 RThread::SetSystem(TBool) |
|
12468 RThread::SetNotifyIfDie(TBool) (was SetServer) |
|
12469 RThread::SetMark(TBool) |
|
12470 Similar functions exist for processes. |
|
12471 The Exec functions (Set)Mark, and (Set)Server have been replaced with |
|
12472 (Set)Flags functions for threads and processes to implement this. |
|
12473 |
|
12474 T_PS.EXE displays thread and process status. |
|
12475 |
|
12476 2) AppendFormat and AppendFormatList changes. |
|
12477 Both can now take a TDes[8|16]Overflow handler which is called when the |
|
12478 formatting operation would write to the descriptor beyond its max length. |
|
12479 When this happens and no overflow handler is supplied, the default action |
|
12480 is to panic. |
|
12481 |
|
12482 3) TTime::Format has become TTime::FormatL |
|
12483 |
|
12484 4) Added CServer *CSession::Server() to return the session's server. |
|
12485 Added protected member TDblQueIter<CSession *> CServer::iSessionQ, an |
|
12486 itterator over the server's sessions. |
|
12487 |
|
12488 5) Name changes |
|
12489 TTimeIntervalShortMicroSeconds -> TTimeIntervalMicroSeconds32 |
|
12490 AfterInMicroSeconds -> After |
|
12491 TStartup -> TMachineStartupType |
|
12492 and some Americanisations |
|
12493 |
|
12494 6) Defined __ARRAY_NO_PTRS__ |
|
12495 and *_CAST operators |
|
12496 Changed __ASSERT_*(c,p) to use (... p ,0) |
|
12497 |
|
12498 8) Removed huffman encoding/decoding from TBuf |
|
12499 |
|
12500 9) Implemented User::IsRomAddress(TAny *) |
|
12501 |
|
12502 10) Added a checksum member to TRomHeader |
|
12503 |
|
12504 |
|
12505 |
|
12506 Version 0.01.063 |
|
12507 ================ |
|
12508 (Made by Graham 3 July '96) |
|
12509 |
|
12510 1) SteveG |
|
12511 1) Applied patches to the GCC tools and rebuilt them all, with lotsa |
|
12512 help from Nick Twyman. You now no longer need template instantiations, |
|
12513 and the code saving seems to be somewhere between a massive 8 and 13%, |
|
12514 although the exact figure will vary between projects. You will need |
|
12515 to remove all occurances of 'template class.....' from your .cpp files. |
|
12516 |
|
12517 2) Altered the whole of E32 to compile with the new tools, removing every |
|
12518 'template class...' line from all the source files, altering all the |
|
12519 MAK files etc. The new compiler/linker are a lot more nit-picky, and |
|
12520 you will experience several warnings such as 'class xxx only defines |
|
12521 private constructors and has no friends' or 'taking address of temporary'. |
|
12522 Handcrafted ARM MAK files will need changing by hand, v033 of MAKTRAN will |
|
12523 take care of any changes for you. Any handmade ARM MAK files will need |
|
12524 changing as follows: |
|
12525 |
|
12526 change all occurances of -m6 to -mcpu=arm710 -mapcs-32 and remove all |
|
12527 instances of -fno-implicit-templates. Add in -fvtable-thunks after the |
|
12528 -fcheck-new flag. To remove the warnings 'class xxxx only defines |
|
12529 private constructors and has no friends' add in the flag |
|
12530 -Wno-ctor-dtor-privacy after the -Wall flag. |
|
12531 |
|
12532 If anyone has any problems with the new tools, please hesitate to |
|
12533 contact me on x625. |
|
12534 |
|
12535 3) Wrote various benchmark tests to identify areas of E32 that could |
|
12536 improve with being written in ARM code. Start made on testing speed |
|
12537 increases for various descriptor/memory/number functions in ARM code. |
|
12538 |
|
12539 4) Debugger (Arrrrrrrrrgh :-( |
|
12540 Source level debugging now possible to some extent running a debug |
|
12541 .exe file from the E32 text shell (if you can bear to use Gdb). |
|
12542 No success with an eikon app yet. Identified some problems caused |
|
12543 by single stepping through user functions which my breakpoint |
|
12544 handler uses (memcopy, array/descriptor functions etc). The first |
|
12545 thing my breakpoint handler does is to clear any breakpoints in |
|
12546 the ROM, but in doing so it cannot use any functions which might have |
|
12547 breakpoints set in them. |
|
12548 |
|
12549 2) Matthew |
|
12550 1) Changed RThread::Read() and Write() so that they leave on errors. |
|
12551 This fixes HA-158 - CSession::WriteL(...) panics caller. |
|
12552 |
|
12553 2) Added RThread::SetInitialParameter() and RThread::GetHeap(), |
|
12554 fixing HA-63, so you can now create an RThread, find its heap, |
|
12555 alloc a cell in that heap, pass the pointer to that cell as the |
|
12556 parameter to the thread and the thread can call User::Free on it. |
|
12557 |
|
12558 3) Made KCurrentThreadHandle have the NoClose flag set, so that |
|
12559 Close()ing an RThread which hasn't been Create()ed is harmless. |
|
12560 |
|
12561 4) RThread and RProcess::LogonCancel() now return KErrGeneral if |
|
12562 you are not logged on. |
|
12563 |
|
12564 3) Graham |
|
12565 1) Built and released Protea Rev 1 (P1) variant of MARM. |
|
12566 |
|
12567 2) Made WeekNoInYear and DayNoInYear const correct. |
|
12568 |
|
12569 3) Removed 'API Freeze Technology' |
|
12570 |
|
12571 4) Added the REPRO program which must be included (In PETRAN |
|
12572 format) in all P1 variant ROMs. NB this program does not |
|
12573 work yet. |
|
12574 |
|
12575 5) Re-included Andrew Theolke's fix for Single Queues. This |
|
12576 means that everyone will have to remove their work-arounds |
|
12577 |
|
12578 6) Fixed the HAL API problem with UserHal::BacklightBehaviour |
|
12579 |
|
12580 7) Reintroduced stack frames into the debug MARM builds of EKERN |
|
12581 and EUSER. |
|
12582 |
|
12583 4) Jane. |
|
12584 1) Fixed linear address allocation problem with hardware chunks. |
|
12585 |
|
12586 2) Stopped a false read of CMOS data/time information under X86 |
|
12587 killing the kernel. |
|
12588 |
|
12589 3) Fixed bug HA-150 - Rng was returning T rather than TBool |
|
12590 |
|
12591 4) Removed J Day hacks and old functionality for RAM loading |
|
12592 of exes and dlls, and added support for new E32Image format etc. |
|
12593 |
|
12594 IMPORTANT NOTE - You must now update to the latest version of E32TOOLS. This |
|
12595 version of E32/F32 is incompatible with versions of tools pre 029. |
|
12596 |
|
12597 5) Morgan |
|
12598 1) Added WINS Led simulation. To turn the Leds on and off use: |
|
12599 UserHal::ModifyLedMask(TUint aClearMask, TUint aSetMask); |
|
12600 with the masks, KLedMaskRed1 and KLedMaskGreen1 |
|
12601 |
|
12602 2) Removed the protea bitmap from the kernels WINS resource. |
|
12603 The bitmap is now loaded from \E32\KPWINS\PROTEA.BMP at runtime. |
|
12604 |
|
12605 3) Implemented TSecondQ::SystemTimeChanged() |
|
12606 |
|
12607 User::SetSystemTime() now completes all pending timers on the |
|
12608 K::SecondQ with KErrAbort. |
|
12609 |
|
12610 4) Added DTimer::Abort() to support this. |
|
12611 |
|
12612 |
|
12613 Version 0.01.062 |
|
12614 ================ |
|
12615 (Made by Graham, 31st May 1996) |
|
12616 |
|
12617 |
|
12618 1) Graham Fixed MARM Debug mode |
|
12619 |
|
12620 2) Pete Added Media change handling. This allows CF cards to |
|
12621 be inserted or removed without the need to reset. All |
|
12622 that is now required is that the DOOR switch is |
|
12623 depressed during these operations. |
|
12624 |
|
12625 NB Do not attempt to use the CF card (or even boot up |
|
12626 a rack with a CF card inserted) if your rack does not |
|
12627 have a special capacitor fitted to counteract a fault |
|
12628 in the ETNA chip (ASIC12) |
|
12629 |
|
12630 Version 0.01.061 |
|
12631 ================ |
|
12632 (Made by Graham, 30th May 1996) |
|
12633 |
|
12634 1) Jane |
|
12635 1. Implemented E32 Proposal: TDes8::Append(const TDesC16&) |
|
12636 |
|
12637 2. Implemented E32 Proposal: calling RMessage::Complete twice panics server not kernel |
|
12638 |
|
12639 3. Implemented E32 Proposal: priority enumeration for active objects |
|
12640 |
|
12641 4. Fixed bug HA-93: referring to a dead thread panics caller |
|
12642 |
|
12643 2) Matthew |
|
12644 Fixed bug HA-102: K::BeepComplete can be catastrophic |
|
12645 |
|
12646 3) Rog Added IrDA support to serial LDD and COM1 PDDs |
|
12647 Enabling Irda will automatically set framing and |
|
12648 handshaking to SIR standards (i.e. 8N1 None) |
|
12649 |
|
12650 Added CheckConfig()=0 to PDDs this allows PDDS to |
|
12651 furtle with the default configuration before the |
|
12652 driver is created (in specific it allows the Etna |
|
12653 driver to disable the Fifo.) |
|
12654 |
|
12655 4) Pete Added ATA media driver for Compact Flash cards |
|
12656 (MEDATA.PDD). This allows read/write/format of CF cards |
|
12657 via TLocalDrive. However, media change interrupts aren't |
|
12658 handled yet. Therefore racks must be powered down or Reset |
|
12659 before inserting or removing a card to remove power |
|
12660 from the CF card socket. |
|
12661 |
|
12662 NB Use E32TOOLS(028) - this release contains a .EXE which exposes |
|
12663 a bug in earlier versions of ROMBUILD. You should also use these |
|
12664 tools because the new MAKTRAN causes -fcheck-new to be introduced |
|
12665 into the gcc compiler options. |
|
12666 |
|
12667 Version 0.01.060 |
|
12668 ================ |
|
12669 (Made by Graham, 23rd May 1996) |
|
12670 |
|
12671 1) Pete |
|
12672 1. General enhancement to TLocalDrive and its corresponding |
|
12673 kernel side objects to support Media Drivers. TDriveBase/TPlatDrive |
|
12674 now replaced with TLocDrv which is platform independant. |
|
12675 |
|
12676 2. TLocalDrive::Connect() can now take a reference to a |
|
12677 media change flag (TBool). |
|
12678 |
|
12679 3. Internal Ram Drive now implemented using Media Driver. |
|
12680 |
|
12681 4. Further improvements to RPcCardController. |
|
12682 |
|
12683 2) Rog |
|
12684 1. All but a complete re-write of serial LDD. Throughput much |
|
12685 increased. |
|
12686 |
|
12687 2. Support for COM1 on RackC is now available from the new |
|
12688 DATXPC1.PDD. |
|
12689 |
|
12690 3. Hardware handshaking is currently broken. |
|
12691 |
|
12692 3) Graham |
|
12693 1. Etna support fixed. |
|
12694 |
|
12695 2. Removed redundant .FRZ files |
|
12696 |
|
12697 4) Jane |
|
12698 1. Added support for RAM loading of dlls and exes. Currently entrypoints |
|
12699 are called in the same manner as for ROM exes and dlls, i.e. only once |
|
12700 for a process attach, and never for a thread attach/detach, or a process |
|
12701 detach. |
|
12702 |
|
12703 IMPORTANT NOTE: To support this, the format of the rom headers has |
|
12704 changed, and there are new rom building tools - see E32TOOLs release notes. |
|
12705 The old tools are incompatible with E32 060. |
|
12706 |
|
12707 2. Added RDebug::Print(TRefByValue<const TDesC> aFmt,...) which outputs |
|
12708 text to COM1 from user side code as an aid in debugging. |
|
12709 |
|
12710 |
|
12711 Version 0.01.059 |
|
12712 ================ |
|
12713 (Made by Colly) |
|
12714 |
|
12715 1) Fixed RLibrary::LoadExact() which would not load more than 1 |
|
12716 DLL at a time. |
|
12717 |
|
12718 Version 0.01.058 |
|
12719 =============[== |
|
12720 (Made by Matthew) |
|
12721 |
|
12722 1) Colly |
|
12723 1. Changed the _S8,_S16 and _S macros to return |
|
12724 |
|
12725 const TText* |
|
12726 |
|
12727 rather than |
|
12728 |
|
12729 TText* |
|
12730 |
|
12731 which was allowing writeable descriptors to be constructed illegally |
|
12732 over strings. i.e. |
|
12733 |
|
12734 TPrtC(_S("Test string")); |
|
12735 |
|
12736 Bad news as strings are in the text segment and read only. |
|
12737 Compiler will now refuse to compile the above code. |
|
12738 |
|
12739 2. Renamed class TGuid to TUid and changed the representation to just |
|
12740 a signed integer (to keep Bill happy). Added the class TUidC where |
|
12741 C stands for constructor which just has two constructor, a default |
|
12742 constructor which effectively sets the UID to KNullUid and one |
|
12743 taking an integer. Given a uid of 0x10000000 then TUidC(0x10000000) |
|
12744 will construct the right UID. KNullUid is unfortunately implemented |
|
12745 as a #define to avoid class consts. |
|
12746 |
|
12747 Everywhere that guid was used has now been changed to uid which |
|
12748 effected RLibrary and the registry functions. |
|
12749 |
|
12750 Renamed the uid test DLL from T_UID to T_DUID and the test program |
|
12751 from T_GUID to T_UID. |
|
12752 |
|
12753 3. Changed CObjectCon::FindByName() and CObjectCon::FindByFullName() |
|
12754 to use MatchF() instead of Match(). CObject::FullName() used to |
|
12755 concatenate Owner().Name() with Name(). It now concatenates |
|
12756 Owner().FullName() with Name(). |
|
12757 |
|
12758 4. Changed TCreateProcessInfo and TCreateLibraryInfo to have a TUid |
|
12759 which in due course will be supplied by the loader from the |
|
12760 .exe and .dll headers. Added the TUid to DProcess and DLibrary. |
|
12761 Also added iGeneration to DProcess so that more than one process |
|
12762 can be run at the same time. |
|
12763 |
|
12764 5. Changed the name of a library to include the TUid::Name(). |
|
12765 If library t_test.dll is loaded and it has a TUid of 0x10000001 |
|
12766 then its name will be: |
|
12767 |
|
12768 t_test[10000001] |
|
12769 |
|
12770 6. Changed the name of a Process() to include the TUid::Name() |
|
12771 followed by iGeneration as a 4 digit decimal value. If process |
|
12772 t_test.exe is loaded and it has a TUid of 0x10000001 and |
|
12773 it is the the third copy running its name will be: |
|
12774 |
|
12775 t_test[10000001]0002 |
|
12776 |
|
12777 7. Added Mem::Crc() |
|
12778 |
|
12779 which performs the 16 bit CCITT checksum. It should be called |
|
12780 for a descriptor as follows: |
|
12781 |
|
12782 TPtrC8 des=_L("Check string"); |
|
12783 TUint16 crc=0; |
|
12784 Mem::Crc(crc,des.Ptr(),des.Length()); |
|
12785 |
|
12786 8. Added the TUidType class. This class packages three UIDs |
|
12787 together. It is intended to provide Type, SubType and |
|
12788 SubSubType together for the typimng mechanism in E32. It |
|
12789 has the following important functions: |
|
12790 |
|
12791 TUidType::IsValid() |
|
12792 TRUE if at least one of the UIDs is not KNullUid |
|
12793 TUidType::IsPresent(TUid aUid) |
|
12794 TRUE if any one of the UIDs == aUid |
|
12795 TUidType::MostDerived() |
|
12796 { |
|
12797 if (iUid[2]!=KNullUid) |
|
12798 return(iUid[2]); |
|
12799 if (iUid[1]!=KNullUid) |
|
12800 return(iUid[1]); |
|
12801 return(iUid[0]); |
|
12802 } |
|
12803 |
|
12804 9. Added the TCheckedUid class. This class packages a TUidType |
|
12805 together with a checksum. It is intended to be placed at the |
|
12806 beginning of all E32 binary files as follows: |
|
12807 |
|
12808 TCheckedUid check(TUidType(0x10000001)); // Created the header |
|
12809 RFile f; |
|
12810 f.Open(theFs,_L("binary.file"),EFileWrite); |
|
12811 f.Write(check.Des()); // Write the descriptor |
|
12812 .... |
|
12813 |
|
12814 The class can be reinstantiated from the binary file as follows |
|
12815 |
|
12816 TPckgBuf<TCheckedUid> check; |
|
12817 RFile f; |
|
12818 f.Open(theFs,_L("binary.file"),EFileRead); |
|
12819 f.Read(check); // Read the signature |
|
12820 if (check().Type().IsValid()) // Is it a valid signature |
|
12821 |
|
12822 10.Added a new type TPassword which is just a 16 character buffer. |
|
12823 |
|
12824 11.Added the new abstract class CSecurityBase which provides |
|
12825 encryption/decryption functions given a TPassword. This is |
|
12826 polymorphic to allow other security systems to be |
|
12827 substituted at a later date. One implementation of a security |
|
12828 system is provided which implements a polyalphabetic |
|
12829 substitution which is similar to that on E32 but no great shakes. |
|
12830 |
|
12831 In order to use CSecurityBase merely instantiate one with |
|
12832 Security::NewL(). By default the security object will be |
|
12833 initialsed with a zero length password and disabled. To |
|
12834 change its value use SetL(_L(""),new password). Alternatively |
|
12835 it can be re-initialised with a descriptor that was previously |
|
12836 extracted from a CSecurityBase with CSecurityBase::SecurityData(). |
|
12837 The data returned by CSecurityBase::SecurityData() is intended to |
|
12838 be saved to file and acts as a token for the associated password. |
|
12839 |
|
12840 Before encrypting or decrypting data use PrepareL() and there |
|
12841 after make continuous calls to EncryptL() or DecryptL(). |
|
12842 |
|
12843 Hopefully the other functions are self explanatory. |
|
12844 |
|
12845 Added test code T_SEC.CPP to test the security system. |
|
12846 |
|
12847 NOTE: Passwords are currently case sensitive. |
|
12848 |
|
12849 12.Added the machine password control functions |
|
12850 |
|
12851 class Password |
|
12852 { |
|
12853 public: |
|
12854 IMPORT_C static TInt IsEnabled(); |
|
12855 IMPORT_C static TInt SetEnable(const TPassword& aPassword, |
|
12856 TBool aIsEnabled); |
|
12857 IMPORT_C static TInt IsValid(const TPassword& aPassword); |
|
12858 IMPORT_C static TInt Set(const TPassword& anOldPassword, |
|
12859 const TPassword& aNewPassword); |
|
12860 }; |
|
12861 |
|
12862 Password::IsEnabled() returns the current state of the password |
|
12863 enabled flag. Password::SetEnabled() allows the state to be |
|
12864 changed but only if the correct password is supplied. |
|
12865 |
|
12866 Password::IsValid() returns TRUE if the password is valid. |
|
12867 |
|
12868 Password::Set() allows the password to be changed |
|
12869 |
|
12870 By default the password is _L("") |
|
12871 |
|
12872 13.Added the notifier functions: |
|
12873 |
|
12874 TInt User::Notify(const TDesC& aLine1,const TDesC& aLine2, |
|
12875 const TDesC& aBut1); |
|
12876 TInt User::Notify(const TDesC& aLine1,const TDesC& aLine2, |
|
12877 const TDesC& aBut1,const TDesC& aBut2); |
|
12878 TInt User::Notify(const TDesC& aLine1,const TDesC& aLine2, |
|
12879 const TDesC& aBut1,const TDesC& aBut2, |
|
12880 const TDesC& aBut3); |
|
12881 |
|
12882 The function will attempt to connect to a server called |
|
12883 __NOTIFIER_NAME (#define in E32SVR.H) and then send a message |
|
12884 ENotifierNotify with P0() pointing to a TPckgBuf<TNotifyInfo>. |
|
12885 It is allowable for iButton[1] or iButton[2] to be NULL in which case |
|
12886 one, two or three button should occur in the dialog. If aBut1 |
|
12887 is picked then 0 is returned, 1 for aBut2 and 2 for aBut3. Any |
|
12888 other error such as their being no Notifier or a result being |
|
12889 wrong will result in a return of KErrGeneral. |
|
12890 14.Added Mem::Move() which has the same API as Mem::Copy(). Move() |
|
12891 assumes that src and trg are 2^2 aligned and that aLength is a |
|
12892 multiple of 4. |
|
12893 15.Added a new time interval TTimeIntervalShortMicroSeconds |
|
12894 which is an interval in micro seconds but stored in a 32 |
|
12895 integer. This is the new interval when specifying After() |
|
12896 delays. Note that I have left the low level kern services |
|
12897 in ticks for now. |
|
12898 16.Renamed |
|
12899 RTimer::After() to RTimer::AfterInMicroSeconds() |
|
12900 CTimer::After() to CTimer::AfterInMicroSeconds() |
|
12901 User::After() to User::AfterInMicroSeconds() |
|
12902 CPeriodic::Start() to CPeriodic::StartInMicroSeconds() |
|
12903 to aid the conversion to the new interval. When converting |
|
12904 just multiply the value being passed originally by 100000 |
|
12905 which is ofcourse the number of microseconds in a tenth of |
|
12906 a second. |
|
12907 17).RSessionBase::CreateSession() and |
|
12908 RSessionBase::SetRetry() both take a |
|
12909 TTimeIntervalShortMicroSeconds as the the delay interval. |
|
12910 18).Fixed mnt.cmd by adding %_F32VER% as the second parameter |
|
12911 of all recursive getXXX calls to fix defect HA-121 reported |
|
12912 by DavidW. |
|
12913 19).Made the Timer services TicksToTenths() a bit easier to |
|
12914 implement and OneShot() timing slightly more accurate. |
|
12915 |
|
12916 2) Geert |
|
12917 |
|
12918 1. Removed CArrayFixBase::DestroyAll(). Use the new |
|
12919 CArrayPtr<T> class template instead. (See below.) |
|
12920 |
|
12921 2. Added support for objects that can only ever |
|
12922 live inside an array. E.g. support for a variable |
|
12923 array of TBufC<100000>, where the elements are just |
|
12924 big enough to contain the actual data in the |
|
12925 buffer. |
|
12926 |
|
12927 CArrayFix<T>::ExpandL(TInt anIndex) opens up a slot |
|
12928 at anIndex by shifting the elements after anIndex |
|
12929 and returns a reference to the new element. The new |
|
12930 element is constructed in place. |
|
12931 ArrayFix<T>::ExtendL() is equivalent to ExpandL(Count()). |
|
12932 CArrayVar<T>::ExpandL(TInt anIndex,TInt aLength) |
|
12933 opens up a slot of size aLength at anIndex by and |
|
12934 is otherwise the same as the fixed record case. |
|
12935 CArrayVar<T>::ExtendL(TInt aLength) is equivalent |
|
12936 to ExpandL(Count(),aLength). |
|
12937 |
|
12938 3. Added repeated insertion and re-sizing functions |
|
12939 to CArrayFix. |
|
12940 |
|
12941 CArrayFix<T>::InsertL(TInt anIndex,const T& aRef,TInt aReplicas) |
|
12942 inserts a copy of aRef, aReplicas times. |
|
12943 CArrayFix<T>::ResizeL(TInt aCount) |
|
12944 extends or shrinks the array as needed for it to |
|
12945 contain aCount elements. Any new elements are |
|
12946 bitwise copies of a default-constructed T. |
|
12947 CArrayFix<T>::ResizeL(TInt aCount,const T& aRef) |
|
12948 extends or shrinks the array like ResizeL(TInt). |
|
12949 New elements, however, are bitwise copies of aRef. |
|
12950 |
|
12951 NB. As a result of these changes, the element type |
|
12952 has to have an accessible default constructor. If |
|
12953 you have a CArrayXxx<TYyy>, and some custom |
|
12954 TYyy::TYyy(TZzz aZzz) exists, a TYyy::TYyy() will |
|
12955 have to be added. A knock-on effect is that C-style |
|
12956 arrays can no longer be supported as element types. |
|
12957 |
|
12958 Note that array elements are still bitwise copies, |
|
12959 and will be Mem::Copy()-ed around during their |
|
12960 lifetime. Having the constructor called merely |
|
12961 guarantees that they'll be bitwise copies of a |
|
12962 properly constructed object, rather than random |
|
12963 garbage. In keeping with this, array functions may |
|
12964 construct instances of the element types, but they |
|
12965 will never destroy them. Element types need not |
|
12966 have an accessible destructor. |
|
12967 |
|
12968 4. Changed CArrayXxx::InsertIsqL() and added the |
|
12969 new funcion InsertIsqAllowDuplicatesL() |
|
12970 |
|
12971 CArrayFix<T>::InsertIsqL(const T& aRef,TKeyArrayFix &aKey) |
|
12972 and |
|
12973 CArrayFix<T>::InsertIsqAllowDuplicatesL(const T& aRef,TKeyArrayFix &aKey) |
|
12974 return the new element's index. |
|
12975 InsertIsqL() leaves with KErrAlreadyExists if a |
|
12976 duplicate is discovered, and |
|
12977 InsertIsqAllowDuplicatesL() inserts the element |
|
12978 after any duplicate. The existing InsertIsqL(), |
|
12979 returning KErrNone or KErrAlreadyExists, and taking |
|
12980 a TAllowDuplicates argument is withdrawn. |
|
12981 In the case of variable-element arrays, the |
|
12982 signatures are |
|
12983 CArrayVar<T>::InsertIsqL(const T& aRef,TInt aLength,TKeyArrayFix &aKey) |
|
12984 and |
|
12985 CArrayVar<T>::InsertIsqAllowDuplicatesL(const T& aRef,TInt aLength,TKeyArrayFix &aKey). |
|
12986 |
|
12987 Note that the meaning of InsertIsqL()'s return |
|
12988 value has changed and care should be taken when |
|
12989 porting. |
|
12990 |
|
12991 5. Almost all the array manipulation functions in |
|
12992 CArrayXxxBase have become public. This is to allow |
|
12993 code to operate on incoming (typed) arrays in a |
|
12994 type-independent way. It can be argued this reduces |
|
12995 type-safety and encapsulation, but the most |
|
12996 important thing is to guard against accidental |
|
12997 misuse. This is done by providing typed functions |
|
12998 in the template classes overriding--and hiding--all |
|
12999 the unsafe functions. |
|
13000 |
|
13001 6. Added functions CArrayXxx<T>::At(TInt anIndex). |
|
13002 They are synonymous with CArrayXxx<T>::operator[]() |
|
13003 and serve to hide the At() functions in the base |
|
13004 classes. |
|
13005 |
|
13006 7. Added CArrayFix<TAny>, CArrayFixFlat<TAny> and |
|
13007 CArrayFixSeg<TAny> as well as CArrayVar<TAny> and |
|
13008 CArrayPak<TAny>. They are hand-crafted and somewhat |
|
13009 restricted instances of the templates, for those |
|
13010 who wish to use a generic array; e.g., as a member |
|
13011 of the base class in a template pair. In the case |
|
13012 of CArrayFixXxx<TAny>, the record length is |
|
13013 specified as a constructor parameter. |
|
13014 |
|
13015 8. Added functions CArrayXxx::AppendL(), Find(), |
|
13016 FindIsq() and InsertL() taking a reference to T |
|
13017 instead of a pointer. People wishing to switch to |
|
13018 the reference-based API may define the macro |
|
13019 __ARRAY_NO_PTRS__, which will hide the |
|
13020 pointer-based versions. |
|
13021 |
|
13022 9. Added class template CArrayPtr<T> extending |
|
13023 CArrayFix<T*>'s interface with a ResetAndDestroy() |
|
13024 function. The function is intended as a type safe |
|
13025 replacement for CArrayFix<CBase*>::DestroyAll(). |
|
13026 It is equivalent to a loop delete-ing all (pointer) |
|
13027 elements, followed by Reset(). |
|
13028 |
|
13029 10. CBufBase::ExpandL(TInt aPos,TInt aLength) makes |
|
13030 room for aLength bytes at aPos. The new contents |
|
13031 are undefined. InsertL(Pos,aPtr,aLength) is |
|
13032 equivalent to ExpandL(aPos,aLength) followed by |
|
13033 Write(aPos,aPtr,aLength). |
|
13034 |
|
13035 11. CBufBase::ResizeL(TInt aSize) expands or |
|
13036 deletes from the buffer at the end so that its |
|
13037 Size() becomes equal to aSize. Not to be confused |
|
13038 with CBufFlat::SetReserveL, which has no effect on |
|
13039 the logical size of the buffer. |
|
13040 |
|
13041 12. CBufFlat::Capacity() reports the size the |
|
13042 buffer can grow to without reallocation. The buffer |
|
13043 insertion functions are guaranteed not to leave |
|
13044 until the buffers Size() reaches or exceeds its |
|
13045 Capacity(). A flat buffer's capacity is changed |
|
13046 using SetReserveL(). |
|
13047 |
|
13048 13. Removed the global new operator taking a base |
|
13049 pointer and check size; ie., TAny* operator |
|
13050 new(TUint aSize,TAny* aBase,TInt aCheckSize) |
|
13051 |
|
13052 Making sure at runtime that the allocated size is |
|
13053 he same as the supplied buffer size is not a very |
|
13054 common requirement. As it turned out, size checking |
|
13055 was really only required for RHeap and derived |
|
13056 classes. Supplying it with a custom RHeap::operator |
|
13057 new(), as is now the case, is actually a cheaper |
|
13058 solution. |
|
13059 |
|
13060 14. Added zero-filling versions of the full set of |
|
13061 available global new operators to CBase and removed |
|
13062 CBase's delete operator. |
|
13063 |
|
13064 The delete operator was there only as a workaround |
|
13065 for a problem with the Visual C++ linker. The |
|
13066 problem appears to be fixed in Visual C++ 4.0, so |
|
13067 there is now no point in having the operator. |
|
13068 |
|
13069 15. Added pragma's disabling Visual C++ warnings to |
|
13070 do with the generation of copy constructors and |
|
13071 assignment operators to <e32def.h>. |
|
13072 |
|
13073 16. Added private, undefined copy constructors and |
|
13074 assignment operators to CBase. Copying and |
|
13075 assignment of CBase-derived classes is now |
|
13076 prohibited by default. |
|
13077 |
|
13078 3). Graham |
|
13079 1. Various keyboard changes. |
|
13080 |
|
13081 2. Added HAL set and sense functions. Most are not |
|
13082 yet implemented but will be in 059. |
|
13083 |
|
13084 4). Steve |
|
13085 1. Debugger: |
|
13086 Further improvement and additions to the debugger classes and the Gdb stub. |
|
13087 Still no bug fixes back form Cygnus to allow source level debugging using |
|
13088 Gdb. Added support for multiple thread debugging, and allowing breakpoints |
|
13089 to be set in ROM which effect the threads you specify rather than all |
|
13090 threads. Finalised the API for the RDebug class which is used by any |
|
13091 debugger or debug stump program. Full details of the E32 debugger class |
|
13092 currently in R:\E32\DOCS\RDEBUG.DOC. |
|
13093 |
|
13094 2. Key translator: |
|
13095 Fixed the bug where the modifier status wasn't updated on a modifier key |
|
13096 down - it was updated on the next key up or down. |
|
13097 |
|
13098 5). Jane |
|
13099 1. Removed saving and restoring of fs & gs in interrupt code to speed up |
|
13100 X86 version of EPOC. |
|
13101 |
|
13102 2.Added support for debugger in finding code address of target processes. |
|
13103 Added MMU functions to support debugger in shadowing ROM. (Both untested). |
|
13104 |
|
13105 3.Added process cleanup code to fix process logon - but left it commented |
|
13106 out due to time pressure in meeting API freeze. Will be tested and in |
|
13107 place in 059. |
|
13108 |
|
13109 4.Added start of code supporting process and dll loading from RAM, and |
|
13110 added dummy APIs for future additions to this. Rationalised kernel |
|
13111 LoadLibrary functions. |
|
13112 |
|
13113 5.Fixed stack scribble in runThread, which was causing an incorrect |
|
13114 return status to be given to logging threads. |
|
13115 |
|
13116 6). Roger |
|
13117 Serial LDD reliability improved. Fixed double completion bugs. |
|
13118 |
|
13119 Eiger Serial PDD. Turned interrupts off during initial fifo priming. |
|
13120 |
|
13121 Etna Serial PDD. Written not able to test due to a (suspected) kernel bug. |
|
13122 |
|
13123 Further changes to the serial drivers as of Sat 4th May given |
|
13124 to Colly. |
|
13125 |
|
13126 7). Matthew |
|
13127 Preliminary sound Ldd and Pdds for Wins and Eiger. Currently the Wins PDD |
|
13128 pretends to play by making random beeps for the appropriate length of time |
|
13129 and pretends to record aLaw data by filling a bufer with silence in the |
|
13130 appropriate time. The Eiger PDD just plays silence. |
|
13131 |
|
13132 8). Pete |
|
13133 Improvements to Pc Card Controller and its user interface. |
|
13134 |
|
13135 Simulation of Media Change using F5 key added to WINS (commented out for |
|
13136 now). |
|
13137 |
|
13138 Version 0.01.057 |
|
13139 ================ |
|
13140 (Made by Graham, Friday 19th April) |
|
13141 |
|
13142 1) Graham |
|
13143 1. Implemented MNT ARMALL, ARM, ARMDEB, ARMREL, ARMUDEB, ARMUREL |
|
13144 BTSTARMALL, BTSTARM, BTSTARMDEB, BTSTARMREL, BTSTARMUDEB, |
|
13145 BTSTARMUREL. |
|
13146 |
|
13147 2. Fixed bugs in BMARM\XDUMM.MAK, XKEYB.MAK, and XXYIN.MAK |
|
13148 |
|
13149 3. Fixed F32\BMARM\ESHELL.MAK to vary name according to |
|
13150 build - ESHELL.EXE, ESHELLD.EXE, ESHELLU.EXE, ESHELLUD.EXE |
|
13151 |
|
13152 4. Updated ARM Rom building system to build debug and unicode |
|
13153 roms as well. |
|
13154 |
|
13155 5. Ensured O/S and test programs build in DEBUG and UNICODE |
|
13156 as well as RELEASE mode. |
|
13157 |
|
13158 6. Removed redundant LCD contrast handling from |
|
13159 VARMPR\VA_KEYB.CPP |
|
13160 |
|
13161 7. Added KE_ETNA.CPP with the help of Roger and Peter. |
|
13162 |
|
13163 8. Rationalised variant system, allowing for three MARM |
|
13164 variants. Each variant for a given architecture has a |
|
13165 two character mnemomnic: |
|
13166 |
|
13167 PB Protea rack B |
|
13168 PC Protea rack C |
|
13169 P1 Protea version 1 |
|
13170 |
|
13171 Each variant has an E32\ sub-directory: |
|
13172 |
|
13173 \E32\VARMPB |
|
13174 \E32\VARMPC |
|
13175 \E32\VARMP1 |
|
13176 |
|
13177 Each must contain a VA_CUST.CPP which implements class |
|
13178 Custom and produces an ECUST.DLL which the kernel links to. |
|
13179 These ECUST.DLL's are called CARMPB.DLL, CARMPC.DLL, and |
|
13180 CARMP1.DLL until one of them is selected to become |
|
13181 ECUST.DLL in the ROM. |
|
13182 |
|
13183 They must also include keyboard or pointer device |
|
13184 implementations (VA_KEYB.CPP and VA_XYIN.CPP) which |
|
13185 create CAKYPB.DLL, CAKYPC.DLL, CAKYP1.DLL (Arm keyboard |
|
13186 DLL's) and CAXYPB.DLL, CAXYPC.DLL, CAXYP1.DLL (Arm XY |
|
13187 input device DLL's). |
|
13188 |
|
13189 Normally, they will also include a VA_HW.CPP which |
|
13190 implements variant-specific hardware functionality. These go |
|
13191 on to produce the variant dll's VARMPB.DLL, VARMPC.DLL, |
|
13192 and VARMP1.DLL. Physical Device drivers (which are intrinsically |
|
13193 Variant-level entities) and custom dll's might want to |
|
13194 link to these DLL's, but the kernel cannot. |
|
13195 |
|
13196 They will also contain PDD source. |
|
13197 |
|
13198 The upshot of this is that .OBY files have to change. |
|
13199 |
|
13200 A typical Protea Rack B .OBY file will begin: |
|
13201 |
|
13202 romname=arompb.img |
|
13203 version=0.01 |
|
13204 bootbinary=c:\work\emarm\bootrom.bin |
|
13205 romsize=0x400000 |
|
13206 romlinearbase=0x50000000 |
|
13207 romalign=0x1000 |
|
13208 kerneldataaddress=0x80100000 |
|
13209 kernelstackaddress=0x80000000 |
|
13210 kernelheapmin=0x10000 |
|
13211 dataaddress=0x400000 |
|
13212 |
|
13213 files= |
|
13214 primary=c:\work\emarm\ekern.exe sys\ekern.exe |
|
13215 file=c:\work\emarm\euser.dll sys\euser.dll |
|
13216 file=c:\work\emarm\elocl.dll sys\elocl.dll |
|
13217 secondary=c:\work\emarm\efile.exe sys\efile.exe |
|
13218 file=c:\work\emarm\efsrv.dll sys\efsrv.dll |
|
13219 file=c:\work\emarm\elocal.fsy sys\elocal.fsy |
|
13220 file=c:\work\emarm\ewsrv.exe sys\ewsrv.exe |
|
13221 file=c:\work\emarm\econs.dll sys\econs.dll |
|
13222 file=c:\work\emarm\edisp.dll sys\edisp.dll |
|
13223 file=c:\work\emarm\varmpb.dll sys\varmpb.dll |
|
13224 file=c:\work\emarm\carmpb.dll sys\ecust.dll |
|
13225 file=c:\work\emarm\cakypb.dll sys\ekeyb.dll |
|
13226 file=c:\work\emarm\caxypb.dll sys\exyin.dll |
|
13227 file=c:\work\emarm\ektran.dll sys\ektran.dll |
|
13228 file=c:\work\emarm\ekdata.dll sys\ekdata.dll |
|
13229 file=c:\work\emarm\eshell.exe sys\eshell.exe |
|
13230 |
|
13231 A typical Protea Rack C .OBY file will begin: |
|
13232 |
|
13233 romname=arompc.img |
|
13234 version=0.01 |
|
13235 bootbinary=c:\work\emarm\bootrom.bin |
|
13236 romsize=0x400000 |
|
13237 romlinearbase=0x50000000 |
|
13238 romalign=0x1000 |
|
13239 kerneldataaddress=0x80100000 |
|
13240 kernelstackaddress=0x80000000 |
|
13241 kernelheapmin=0x10000 |
|
13242 dataaddress=0x400000 |
|
13243 |
|
13244 files= |
|
13245 primary=c:\work\emarm\ekern.exe sys\ekern.exe |
|
13246 file=c:\work\emarm\euser.dll sys\euser.dll |
|
13247 file=c:\work\emarm\elocl.dll sys\elocl.dll |
|
13248 secondary=c:\work\emarm\efile.exe sys\efile.exe |
|
13249 file=c:\work\emarm\efsrv.dll sys\efsrv.dll |
|
13250 file=c:\work\emarm\elocal.fsy sys\elocal.fsy |
|
13251 file=c:\work\emarm\ewsrv.exe sys\ewsrv.exe |
|
13252 file=c:\work\emarm\econs.dll sys\econs.dll |
|
13253 file=c:\work\emarm\edisp.dll sys\edisp.dll |
|
13254 file=c:\work\emarm\varmpc.dll sys\varmpc.dll |
|
13255 file=c:\work\emarm\carmpc.dll sys\ecust.dll |
|
13256 file=c:\work\emarm\cakypc.dll sys\ekeyb.dll |
|
13257 file=c:\work\emarm\caxypc.dll sys\exyin.dll |
|
13258 file=c:\work\emarm\ektran.dll sys\ektran.dll |
|
13259 file=c:\work\emarm\ekdata.dll sys\ekdata.dll |
|
13260 file=c:\work\emarm\eshell.exe sys\eshell.exe |
|
13261 |
|
13262 9. Enhanced the KBARM\ rom building system to allow for the |
|
13263 production of all three variant ROMs. |
|
13264 |
|
13265 10. Fixed spurious Pen Up events on the digitiser. |
|
13266 |
|
13267 11. Added GETSRC verb to MNT.CMD |
|
13268 |
|
13269 2) Morgan |
|
13270 1. Completed DEVICE/DRIVER name changes to LDD/PDD. |
|
13271 |
|
13272 2. Added operator++() to TTimerLockSpec |
|
13273 |
|
13274 3. Added TTimerLockSpec User::LockPeriod(). This returns which |
|
13275 of the TTimerLockSpec periods the clock is currently in. |
|
13276 |
|
13277 3) Jane |
|
13278 1. Fixed some problems with the new chunk sheme, notably to do with |
|
13279 closing EPOC chunks. |
|
13280 |
|
13281 2. Added a new debug only build of the .def files for X86. |
|
13282 |
|
13283 3. Added MMU support for both kernel growth (contigous in linear and |
|
13284 high physical memory) and RAM drive growth (contigous in linear |
|
13285 and low physical memory) - moving other people's pages and page |
|
13286 tables out of the way if necessary. Added TMMU test code to test |
|
13287 these situations. |
|
13288 |
|
13289 4. Added a new function to the bit map allocator |
|
13290 AllocFromTopFrom(TInt aPos) which returns the |
|
13291 next free page after the one specified. Tidied |
|
13292 up AllocFromTop() a bit while I was at it. |
|
13293 |
|
13294 4) Colly |
|
13295 1. Added User::PageSize() to return the current machine page size. |
|
13296 |
|
13297 2. Renamed RHeap::Destroy() to RHeap::Close(). |
|
13298 |
|
13299 3. Implemented heap sharing for heaps in chunks by having it heaps |
|
13300 own and use an RCriticalSection as well as supporting access counting. |
|
13301 The function TInt RHeap::Open() should be used to open a heap for |
|
13302 sharing which increases the access count. A subsequent RHeap::Close() |
|
13303 will decrement the access count but the heap will only be discarded |
|
13304 if the access count goes to zero. The static function User::ChunkHeap |
|
13305 includes the call to Open(). Fixed address heaps cannot be shared and |
|
13306 calls to Open() will be panicked. |
|
13307 |
|
13308 The heaps which are created when a thread is created and which can be |
|
13309 retrieved with a call to User::Heap() should not be closed with a call |
|
13310 to Close() since the chunk in which the heap is created contains the |
|
13311 threads stack as well as the heap. If Close() is called the thread will |
|
13312 be panicked. The constanst RHeap::EChunkStack for the heaps type indicate |
|
13313 this kind of a heap, while RHeap::EChunkNormal indicate a heap created |
|
13314 with User::ChunkHeap(). Type EChunkSupervisor will never be seen |
|
13315 by an user mode code. |
|
13316 |
|
13317 A thread is usually created with its own heap, but it can also be |
|
13318 created to use either the current thread's heap or a heap already |
|
13319 created. To use the current threads heap: |
|
13320 |
|
13321 RThread t; |
|
13322 TInt r=t.Create(_L("Shared1"),threadEntryPoint,KDefaultStackSize, |
|
13323 NULL,NULL); |
|
13324 |
|
13325 The first of the TWO NULLs will cause the routine to share the |
|
13326 current threads heap. i.e. that returned by User::Heap(). |
|
13327 |
|
13328 To use a heap already created: |
|
13329 |
|
13330 RHeap* pH=User::ChunkHeap(_L("Share"),User::PageSize(),0x100000); |
|
13331 test(pH!=NULL); |
|
13332 RThread t; |
|
13333 TInt r=t.Create(_L("Shared1"),threadEntryPoint,KDefaultStackSize, |
|
13334 pH,NULL); |
|
13335 |
|
13336 NOTE: In either case above the Heap will be opened and closed |
|
13337 internally so you need not provide any cleanup. If you no longer |
|
13338 wish to retain your copy of the heap in the example above after the |
|
13339 new thread has been created then you can call pH->Close(). |
|
13340 |
|
13341 Finally note that if thread1 creates thread2 to share its heap and |
|
13342 then exits thread1's chunk will remain in existence until such time |
|
13343 as thread2 exits. This is so since thread2's heap is now in thread1's |
|
13344 chunk. Such are the joys of sharing heaps. |
|
13345 |
|
13346 4. Full automated heap growth is now implemented as is RHeap::Compress(). |
|
13347 If the adjust to the heaps chunk fails the the kernel server will be |
|
13348 called to attempt to compress all heaps known to the kernel. When |
|
13349 completed a further attempt will be made to adjust the chunk so that |
|
13350 the heap can grow. Remember that a heap will never be compressed |
|
13351 below its minimum size and that heaps can onlybe compressed if they |
|
13352 have free space at the top of the heap. |
|
13353 |
|
13354 5. Added a default argument TOwnerType aType=EOwnerProcess to most |
|
13355 of the operating system types CreateLocal(),CreateGlobal() and |
|
13356 Open() functions. Because of the default paramter this change is |
|
13357 seamless all current programs. The meaning of TOwnerType is to |
|
13358 indicate whether the resulting RObject is owned by the Process or |
|
13359 the Thread. Owned by the Process has been the only behaviour allowed |
|
13360 until this change. EOwnerThread will make the thread the owner of the |
|
13361 handle. The effect of being owner by the thread is that when the |
|
13362 thread dies any handles owned by the thread and not closed, will be |
|
13363 closed automatically. Example of process ownership: |
|
13364 |
|
13365 RLibrary lib; |
|
13366 test(lib.Load(_L("TESTDLL")); |
|
13367 // |
|
13368 // The library handle will be closed when the process exits |
|
13369 // |
|
13370 User::Exit(KErrNone); |
|
13371 |
|
13372 Example of thread ownership |
|
13373 |
|
13374 RLibrary lib; |
|
13375 test(lib.Load(_L("TESTDLL"),EOwnerThread); |
|
13376 // |
|
13377 // The library handle will be closed when the thread exits |
|
13378 // |
|
13379 User::Exit(KErrNone); |
|
13380 |
|
13381 NB. Although the addition of TOwnerType arguments to the |
|
13382 appropriate function calls has been made, EOwnerThread-type |
|
13383 services have not yet been implemented. This change merely |
|
13384 prepares the way for such an implementation. |
|
13385 |
|
13386 6. Implemented the full and correct naming strategy for |
|
13387 objects in the base. |
|
13388 |
|
13389 7. The test DLLs T_START1.DLL, T_START2.DLL and T_START3.DLL were |
|
13390 all using a WIN32 function GetTickCount() to delay their startup |
|
13391 which was preventing them from being used as a test under Epoc/32. |
|
13392 Changed to use User::TickCount() and removed Kernel32.lib from |
|
13393 the link dependencies. |
|
13394 |
|
13395 5) Gillian |
|
13396 |
|
13397 1. Added TDateTime::SetYear() etc functions (Brendan's |
|
13398 accepted proposal E32.51 TDateTime setting functions) |
|
13399 |
|
13400 2. Added TTime::- and TTime-= functions for all TTimeInterval classes |
|
13401 (Richard Knights accepted proposal TTime should define operators - |
|
13402 and -=) |
|
13403 |
|
13404 3. Extended TTime::DateTime() function to deal with BC dates |
|
13405 |
|
13406 4. Added tests for all the above and tidied the test code up a |
|
13407 little. |
|
13408 |
|
13409 6) Roger |
|
13410 1. Implemented DFcs under WINS. This allows us to use DFCs |
|
13411 from the serial LDD rather than the non WINs PDD. This gives |
|
13412 much more reliability under WINs and improved throughput under |
|
13413 MX86 and MARM. |
|
13414 |
|
13415 7) Steve |
|
13416 Key Translator: |
|
13417 1) Added new modifier EModifierPureKey, which is set when a |
|
13418 ctrl-key combination does not alter the keycode (basically |
|
13419 any key other than Space,A-Z which return 0 to 26 respectively) |
|
13420 |
|
13421 2) Fixed bug so that ctrl-space returns a NULL key press |
|
13422 rather than being thrown away |
|
13423 |
|
13424 3) TPattern enums moved into E32SVR.H for use by wserv |
|
13425 |
|
13426 Debugger: |
|
13427 4) Removed the Gdb stub from the E32 kernel |
|
13428 |
|
13429 5) Added Debug and RDebug classes. Debug is on the Kernel side |
|
13430 and provides debugging functions for RDebug on the user side. |
|
13431 A user mode debugger or stub opens a channel to RDebug and |
|
13432 can then debug one or more threads. The RDebug class provides |
|
13433 functions for Single-stepping, setting breakpoints, |
|
13434 reading/writing memory and reading/setting of register |
|
13435 values. Watching of memory addresses will be provided |
|
13436 in a later release |
|
13437 |
|
13438 6) Added 'TInt iDataSize' into DPlatProcess for use by the Debug |
|
13439 class for returning the Bss address of a Process |
|
13440 |
|
13441 7) Simple program written to run on the rack which waits for |
|
13442 any thread to panic and then displays what has panicked |
|
13443 and why |
|
13444 |
|
13445 8) Gdb stub written which communicates between RDebug and Gdb |
|
13446 running on a remote host PC. Currently the Gdb stub only copes with |
|
13447 debugging one thread at a time, and due to problems with Gdb itself, |
|
13448 only limited debugging facilities are available. |
|
13449 |
|
13450 8) Pete |
|
13451 1. Added PC Card Controller to WINS and MARM. |
|
13452 |
|
13453 9) NOTE to shared chunk users (FBSERV etc). Support for read-only |
|
13454 shared chunks has been withdrawn. Although the API remains, all |
|
13455 shared chunk users should ONLY open for read/write. |
|
13456 |
|
13457 |
|
13458 Version 0.01.056 |
|
13459 ================ |
|
13460 (Made by Morgan, Sometime soon) |
|
13461 |
|
13462 1) Matthew |
|
13463 Bug fixes: |
|
13464 HA-81: In Wins if a E32Dll returns an error this is now correctly |
|
13465 detected. |
|
13466 HA-58: (Just in time debugging added for Kernel Panics) fixed in |
|
13467 KSRC\KS_UTL.CPP |
|
13468 HA-62: (Flat buffers not compressed when cleared) fixed in |
|
13469 UBAS\UB_BUF.CPP. |
|
13470 HA-82 (ReadCancel() doesn't complete TRequestStatus) fixed in |
|
13471 WSRC\WS_WIN.CPP, tested in T_WSIMP.CPP. |
|
13472 HA-73, HA-74, HA-61, HA-52,58,61,62,69,73,74,81,82. |
|
13473 |
|
13474 2) Rog |
|
13475 Added: |
|
13476 IMPORT_C void CActive::SetPriority(TInt aPriority); |
|
13477 inline TInt CActive::Priority(); |
|
13478 SetPriority() will panic if the AO is active when it is called. |
|
13479 |
|
13480 3) SteveT |
|
13481 1: Added: |
|
13482 TBool TRegion::Contains(const TPoint &aPoint); |
|
13483 Simply returns True if the point is contained within the region, |
|
13484 False if not. |
|
13485 |
|
13486 2. Added a new template class RRegionBuf<N> |
|
13487 This is a cross between the two existing variants of the TRegion |
|
13488 class, it's black box spec is identical to the RRegion class, you |
|
13489 can have unlimited size regions but have to check for errors, but |
|
13490 a buffer big enough to hold <N> rectangles is included with the |
|
13491 RRegionBuf structure, this is used until it is full up when a |
|
13492 cell will be allocated and the whole rectangle list copied into |
|
13493 the allocated cell, the region will not revert back to using the |
|
13494 buffer even if it shrinks small enough fit. |
|
13495 |
|
13496 These regions are chiefly designed to be used as temporary work |
|
13497 space on the stack where they will save a lot of calls to alloc |
|
13498 for trivial rectangle lists. Using these for long term region |
|
13499 storage would be inefficient as when the buffer overflows it is |
|
13500 left lying around empty wasting memory. |
|
13501 |
|
13502 3. After calling Close() the region can safely be reused, before |
|
13503 it was left in a dangerous state with a pointer to the old freed |
|
13504 cell. |
|
13505 |
|
13506 4) Jane |
|
13507 Changed EPOC to the new process relative chunk strategy. Under |
|
13508 this scheme, the process now owns a chunk, which contains the |
|
13509 .data and .bss (zero-filled data) sections. Each additional |
|
13510 thread now only has one chunk minimally, which contains its stack |
|
13511 and heap. This scheme saves on resources, and will allow the |
|
13512 process to live on if the main thread dies, a change I intend to |
|
13513 make later on. |
|
13514 |
|
13515 Added support for shared chunks in EPOC. A global chunk - one |
|
13516 created with RChunk::CreateGlobal() - can be shared by other |
|
13517 processes/threads if they do an OpenGlobal() of the same chunk, |
|
13518 by name. |
|
13519 |
|
13520 WARNING! The latter change has necessitated api changes in |
|
13521 RChunk, detailed below. |
|
13522 |
|
13523 1. The Create functions have gained an extra parameter, as shown. |
|
13524 |
|
13525 IMPORT_C TInt CreateLocal(TInt aSize,TInt aMaxSize); |
|
13526 IMPORT_C TInt CreateGlobal(const TDesC &aName,TInt aSize,TInt |
|
13527 aMaxSize); |
|
13528 |
|
13529 The new parameter, aSize, is the number of bytes to initially |
|
13530 commit to the chunk. IT IS NO LONGER NECESSARY TO ADJUST A NEW |
|
13531 CHUNK - it will be adjusted to aSize on creation. |
|
13532 |
|
13533 2. OpenGlobal has gained an extra parameter, as shown below. |
|
13534 |
|
13535 IMPORT_C TInt OpenGlobal(const TDesC &aName,TBool isReadOnly); |
|
13536 |
|
13537 The new parameter, isReadOnly, specifies whether the sharing |
|
13538 process wants readonly access to the chunk. Thus it is now |
|
13539 possible for the creator of a chunk to have read/write access to |
|
13540 it, but for others who share that chunk to be denied that |
|
13541 priviledge. |
|
13542 |
|
13543 3. As mentioned, it is now unnecessary to adjust a newly created |
|
13544 chunk. It will be adjusted to aSize bytes on creation. |
|
13545 |
|
13546 5) Colly |
|
13547 1. Added Registry and Environment services |
|
13548 |
|
13549 6) Graham |
|
13550 1. All release mode tests run on MARM |
|
13551 |
|
13552 2. Enhanced the MARM build to include DEBUG and UNICODE modes. |
|
13553 |
|
13554 3. Enhanced the Eiger Text Display Deiver to switch between |
|
13555 1bpp, 2bpp, and 4bpp modes. |
|
13556 |
|
13557 4. Text Window server allows CTRL-ALT-1, CTRL-ALT-2, |
|
13558 CTRL-ALT4 to switch display modes. The rack now boots up |
|
13559 in 2bpp.mode. |
|
13560 |
|
13561 5. Released BOOTROM.BIN. It boots the rack in 2bpp mode, so |
|
13562 the same .BIN file may be used for Text Window Server and |
|
13563 Graphics Window Server ROM's. |
|
13564 |
|
13565 6. Added -fno-implicit-templates to the MARM builds and |
|
13566 removed -fvtable-thunks. |
|
13567 |
|
13568 7) Peter |
|
13569 1. Added proto-ramdrive. |
|
13570 |
|
13571 |
|
13572 Version 0.01.055 |
|
13573 ================ |
|
13574 (Made by Morgan, 18 March '96) |
|
13575 |
|
13576 1). NickT, |
|
13577 TLex??. I have added two new classes TLexMark8 and TLexMark16 and |
|
13578 the obvious typedef TLexMark. These classes are used to record or |
|
13579 mark a positon in a TLex, hence |
|
13580 TLex8::Mark(TLexMark8& aMark) |
|
13581 which can be followed by, e.g. |
|
13582 TLex8::UnGetToMark(TLexMark8& aMark). |
|
13583 By and large, wherever there was a TLex?? member function which |
|
13584 used the internal mark, e.g. SkipSpaceAndMark, there is a new |
|
13585 member which is passed a TLexMark?? or reference to one. |
|
13586 I have retained the internal mark iMark, changing it to a |
|
13587 TLexMark, and all the existing member function remain, usually as |
|
13588 an inline function which passes the internal mark to the general |
|
13589 member function. |
|
13590 The TLex??::Val() members no longer use the internal mark to |
|
13591 recover from errors but use an automatic TLexMark?? constructed |
|
13592 within the function. |
|
13593 |
|
13594 T???Que(Base). I have added a member function Reset() to the Sgl, |
|
13595 DBl and Delta ques which just resets the que to be empty (the |
|
13596 offset remains unchanged). |
|
13597 |
|
13598 CArrayFix(Base)/CArrayVar(Base). I have added new member function |
|
13599 which over load the existing InsertIsqL members. The change is an |
|
13600 addition TInt& argument. |
|
13601 On returning from InsertIsqL, this is set to contain the position |
|
13602 within the array of either the new entry or, if the entry exists |
|
13603 and ENoDuplicates is passed, the position of the pre-existing |
|
13604 entry. |
|
13605 |
|
13606 2). Morgan, |
|
13607 Plat::TickCount on WINS fixed so 1 tick = 1/10th of a second. |
|
13608 CBufxxx::New is now CBufxxx::NewL. The CArray classes have been |
|
13609 altered to use these. |
|
13610 CActiveScheduler made concrete and constructor made public. |
|
13611 |
|
13612 Removed PopAndDestroyAll from TCleanupTrapHandler::Untrap which |
|
13613 now calls CCleanup::PreviousLevel(). This ASSERTS that the |
|
13614 cleanup stack's current level is empty. All Pushes to the clean |
|
13615 up stack must be balanced with a Pop before the Trap unwinds |
|
13616 naturally. +Test code. |
|
13617 |
|
13618 Added PushL() and Pop() member functions to TAutoClose so they |
|
13619 can be pushed onto the cleanup stack and are closed automatically |
|
13620 on a leave. +Test code. |
|
13621 |
|
13622 Added TReal and TReal96 formating to TDes?::Format |
|
13623 New specifiers are: |
|
13624 %f(%F) - format TReal(TReal96) (was padding) |
|
13625 %e(%E) - format TReal(TReal96) using exponent format |
|
13626 %g(%G) - format TReal(TReal96) using general format |
|
13627 %p(%P) - padding (used to be %f) |
|
13628 and |
|
13629 .n - specify n decimal places |
|
13630 |
|
13631 New thread test code, to test Suspend/Resume while the thread is |
|
13632 suspended on a semaphore. |
|
13633 |
|
13634 Extended RTimer/CTimer with locked timers for synchronisation to |
|
13635 fractions of a second. |
|
13636 |
|
13637 Included USERTYPE.DAT in the release. |
|
13638 |
|
13639 3). Jane, |
|
13640 Fixed Exc::Dispatch which was deferencing NULL in certain cases. |
|
13641 Fixed DLogonProcess derivation, which was incorrect under the new |
|
13642 single phase destruct. |
|
13643 Added kernel protection for bad handles in both kernel server and |
|
13644 executive. Now the user thread should get panicked for a bad |
|
13645 handle, rather than the kernel dying when dereferencing 0. Now |
|
13646 that this is in place, I would welcome reports of any remaining |
|
13647 kernel death due to bad parameters, so that we may tighten up any |
|
13648 remaining loopholes. |
|
13649 |
|
13650 Fixed CObjectIx::At which was panicking rather than returning 0 in |
|
13651 certain circumstances. |
|
13652 Added CObjectIx::AtL which leaves on a bad handle. |
|
13653 |
|
13654 Added low memory handling to the MMU, and enhanced test code to |
|
13655 test that there are no alloc heavens in low memory situations. |
|
13656 Note that the rem page allocator function FreeHomePage() now takes |
|
13657 a physical address as a parameter rather than a linear one. |
|
13658 |
|
13659 Added a new type of executive service, EXECUTIVE_SLOW_CONFORMANT |
|
13660 (int 22h on x86), which allows certain carefully chosen kernel |
|
13661 services to go re-entrant (i.e. be called from another slow kernel |
|
13662 executive service). Match8 and Match16 have been changed to this |
|
13663 new type, so that Match can be called from Exec::ThreadNext and |
|
13664 friends, thus allowing find services to work on EPOC. |
|
13665 |
|
13666 4). Matthew, |
|
13667 Tiny change to T_CHUNK (x86): now assumes the executable is T_CHUNK |
|
13668 rather than TCHUNK, and the case used on the command-line is not |
|
13669 important. |
|
13670 |
|
13671 5). SteveG |
|
13672 Key translation: |
|
13673 ================ |
|
13674 Combined the keyboard translator files into two source files, |
|
13675 KY_TRAN.CPP and KY_CAPT.CPP. |
|
13676 These make up EKTRAN.DLL, which carries out translating the |
|
13677 scancodes into keycodes and modifiers and handles capture keys. |
|
13678 KD_MC400.CPP makes up the keyboard translator data dll |
|
13679 (EKDATA.DLL). Removed all .data from this DLL by copious use of |
|
13680 const. |
|
13681 |
|
13682 Fixed the keytranslator so that modifier keys are returned as |
|
13683 EKeyNull. |
|
13684 |
|
13685 CCaptureKey and CKeyTranslator are now defined in e32svr.h for use |
|
13686 by the Window Server. w32keyb.h and w32keyb.inl no longer exist. |
|
13687 In order to use the keyboard translator, theWindow Server must at |
|
13688 startup create a new CKeyTranslator, eg: |
|
13689 CKeyTranslator* KeyTranslator=CKeyTranslator::New(); |
|
13690 |
|
13691 The translate key function is defined as: |
|
13692 KeyTranslator->TranslateKey(TUint aScanCode, TBool aKeyUp, const |
|
13693 CCaptureKeys& aCaptureKeys, TKeyData& aKeyData) |
|
13694 and an extra function for obtaining the current modifier state |
|
13695 has been added: |
|
13696 TUint KeyTranslator->GetModifierState(); |
|
13697 |
|
13698 Key Modifiers |
|
13699 ============= |
|
13700 EModifier enums are now defined in e32virt.h and are at the top |
|
13701 level. Anyone making use of 'TEvent::EModifierXxxxx' should |
|
13702 globally replace 'TEvent::EModifier' to 'EModifier'. |
|
13703 Removed the TModifier class. A normal TUint should be used in |
|
13704 place of TModifier, and anyone using the modifier functions |
|
13705 IsOn(), IsOff(), TurnOn() etc should do this using | and & etc. |
|
13706 |
|
13707 E32 TEvents |
|
13708 =========== |
|
13709 Changed the E32 TEvent structure, and renamed it TRawEvent. A |
|
13710 TRawEvent is passed to the Window Server, which will create a |
|
13711 TWservEvent as before. TRawEvent is defined in e32svr.h and no |
|
13712 longer includes the modifier state. The modifier state is added in |
|
13713 in the Window Server for events that require the modifer state, |
|
13714 rather than being worked out and passed around for every event |
|
13715 type. |
|
13716 Changed the event types. Mouse events have been removed and |
|
13717 replaced with EPointerMove and EButtonNDown/Up events. The new |
|
13718 event types, defined in e32svr.h are: |
|
13719 enum TType |
|
13720 { |
|
13721 ENone, |
|
13722 EPointerMove, |
|
13723 EKeyDown,EKeyUp, |
|
13724 ERedraw, |
|
13725 ESwitchOn, |
|
13726 EInactive, |
|
13727 EButton1Down,EButton1Up, |
|
13728 EButton2Down,EButton2Up, |
|
13729 EButton3Down,EButton3Up |
|
13730 }; |
|
13731 |
|
13732 Changed all occurences of TEvent and TEventBuf to TRawEvent and |
|
13733 TRawEventBuf respectively in the E32 source and header files. |
|
13734 Changed Event.Set() and RawEvent copy constructors etc so they no |
|
13735 longer use the shiftState. |
|
13736 |
|
13737 6). Colly, |
|
13738 Changes required to implement the proposal to give DLLs a globally |
|
13739 unique identifier (GUID) which can be checked before trying to |
|
13740 call any of the functions in the DLL. It adds two functions to |
|
13741 RLibrary as well as adding the concrete data type TGuid. Included |
|
13742 is a test program T_GUID along with a test DLL T_UID, all of which |
|
13743 live in TBAS. I have also fixed bugs in the .MAK files for EKTRAN |
|
13744 and EKDATA. |
|
13745 |
|
13746 A new version of t_romg.cpp which was broken by changes to |
|
13747 TDes?::Format() (i.e. changing %f to %p for padding). |
|
13748 |
|
13749 7). Jal, |
|
13750 Added methods to CSession: |
|
13751 IMPORT_C void ResourceCountMarkStart(); |
|
13752 Panics client if CountResources returns KErrGeneral |
|
13753 IMPORT_C void ResourceCountMarkEnd(); |
|
13754 Panics client if CountResources != iResourceCountMark |
|
13755 IMPORT_C virtual TInt CountResources(); |
|
13756 Default implementation returns KErrGeneral |
|
13757 |
|
13758 |
|
13759 Version 0.01.054 |
|
13760 ================ |
|
13761 (Made by Morgan, 23 Feb '96) |
|
13762 |
|
13763 1). Colly |
|
13764 Removed two phase destruction. Note that all objects derived from |
|
13765 CActive must call Cancel() in their destructors. Note that |
|
13766 Adt::Destroy() has disappeared (replace with delete). |
|
13767 The class TAggregate depended on Adt::Destroy(), so it has |
|
13768 also disappeared (I don't think anyone was using it anyway). |
|
13769 |
|
13770 Renamed E32ADT.H to E32BASE.H and the project UADT and TADT to |
|
13771 UBAS and TBAS. Decided not to include E32BASE.H in E32STD.H as |
|
13772 anyone can include E32BASE.H directly and achieve the same effect. |
|
13773 |
|
13774 Removed all TBuf_10, TBuf_20 etc variants. |
|
13775 |
|
13776 2). Jane |
|
13777 Added an extra flag to TModifier: EModifierDoubleClick=0x00800000 |
|
13778 |
|
13779 Fixed DLogons which were writing back the wrong status into the |
|
13780 logged thread. The net effect being that now when you try to run a |
|
13781 program which doesn't exist, you don't crash the OS. |
|
13782 |
|
13783 Added the window server to the dll startup scheme so that the font |
|
13784 server can be started before it. Look at wsrc\ws_utl.cpp to see |
|
13785 E32's window server startup code. |
|
13786 |
|
13787 Added thread relative handles for DServer, DSession and client |
|
13788 DThread in server DThread. This was necessary for proper cleanup |
|
13789 of sessions when server and client threads died. It has the |
|
13790 side-effect of making the WINS implementation much more like the |
|
13791 EPOC one - and will show up any bugs where sessions are used from |
|
13792 another thread. |
|
13793 |
|
13794 Added the Window Server to the dll startup scheme so that the font |
|
13795 server can be started before it. |
|
13796 |
|
13797 Fixed bug in CObjectIx::Destruct(), HA-19. |
|
13798 |
|
13799 3). Matthew |
|
13800 Changed the base to use the new CServer/CSession with ServiceL in |
|
13801 CSession insted of CServer. The new versions of CSession and |
|
13802 CServer are now what used to be called CNewSession and CNewServer. |
|
13803 The windows server and test code use this new scheme. |
|
13804 If you have your own server/session then to convert you must |
|
13805 replace your CServer::ServiceL(RMessage&,CSession&) with a |
|
13806 CSession::ServiceL(RMessage&). In addition, if you have supplied |
|
13807 a CSession::CreateL() it should now be a |
|
13808 CSession::CreateL(CServer&). |
|
13809 |
|
13810 Made TSglQueLink::Enque() private and TSglQueBase a friend of |
|
13811 TSglQueLink. Removed calls to Enque in T_SQUE. |
|
13812 |
|
13813 Fixed X86 chunk routines. Additionally, changed WINS so that if |
|
13814 you try to create a chunk of negative/zero size it returns |
|
13815 KErrArgument instead of KErrGeneral. |
|
13816 |
|
13817 4). SteveG |
|
13818 This change affects the Window Server: |
|
13819 Changed TKeyTranslator::TranslateKey(). It no longer accepts a |
|
13820 TModifier as the second parameter. This function now takes care of |
|
13821 working out and storing the current key modifier states. |
|
13822 Now implemented as: |
|
13823 TBoot TKeyTranslator::TranslateKey(TUint aScanCode, TBool aKeyUp, |
|
13824 const CCaptureKeys& aCaptureKeys, SKeyData& aKeyData); |
|
13825 |
|
13826 Altered \wsrc\ws_main.cpp and \wsrc\keytran.h accordingly, and |
|
13827 altered keytran.cpp to work out the key modifier states from the |
|
13828 supplied scancodes. |
|
13829 The keycode translator is now part of E32 as two DLL's: EKDATA.DLL |
|
13830 and EKTRAN.DLL. |
|
13831 |
|
13832 Added the stub for the Gdb debugger. This adds two classes, Gdb |
|
13833 and ImpGdb. Class Gdb handles the communication protocol to the |
|
13834 remote PC running the debugger. The ImpGdb class handles all the |
|
13835 implementation specific functions such as returning register |
|
13836 values, setting breakpoints and the sending and receiving of data |
|
13837 packets to the remote PC. |
|
13838 |
|
13839 Altered \e32\kex86\ke_int.cpp to pass control to the Gdb stub when |
|
13840 a breakpoint or single step trap occurs, and \e32\kearm\ke_int.cpp |
|
13841 to pass control to the Gdb stub when an undefined instruction is |
|
13842 executed. |
|
13843 |
|
13844 5). Morgan |
|
13845 Fixed thread cleanup code to cancel the threads timer if it had |
|
13846 not completed when the thread died. Previously the destructor was |
|
13847 attempting to close it after the thread's heap had been removed. |
|
13848 |
|
13849 Made TInt64A::Cmp into a signed compare. |
|
13850 Fixed the DivMod function and other small fixes to get TInt64 code |
|
13851 running on the rack. |
|
13852 TInt64 operator >> now does an ASR. TInt64::Asr() has become |
|
13853 TInt64::Lsr() |
|
13854 |
|
13855 Alloc fail tool changes: |
|
13856 __xHEAP_FAILNEXT(n) now fails once on the nth mem alloc. |
|
13857 CTimer::Create has become CTimer::ConstructL. |
|
13858 CActiveScheduler is now concrete. |
|
13859 |
|
13860 6). Graham |
|
13861 Incorporated ARM E32 - find GCC porting guide in 'Protea Software Design'. |
|
13862 Modified test programs so that they build under gcc. |
|
13863 Added digitiser code (XYIN) and general ADC control code. |
|
13864 Added compiler support functions for software floating point. |
|
13865 Added 'float' conversion routines to UM_R96.CPP |
|
13866 Removed data from ELOCL.DLL by appropriate use of const in LSRC\*.CPP |
|
13867 |
|
13868 **** WARNING TO SERVER WRITERS **** |
|
13869 |
|
13870 CSession::CreateL(CServer& aServer) has changed to |
|
13871 CSession::CreateL(const CServer& aServer) |
|
13872 |
|
13873 This is a virtual function. If you supply your own version of this |
|
13874 function, then be sure to change its prototype. If you don't then you won't |
|
13875 get a compiler warning, but your program won't work any more. |
|
13876 |
|
13877 |
|
13878 Version 0.01.053 |
|
13879 ================ |
|
13880 (Made by Morgan, 29 Jan '96) |
|
13881 |
|
13882 1). Matthew |
|
13883 Removed all trace of the old date\time classes. |
|
13884 |
|
13885 \E32\TCDT\T_FIND, which tests the find handles. |
|
13886 There's also a modified version of \E32\TCDT\T_KERN.CPP, which has had it's |
|
13887 brief TFindXxxx tests expanded to include the ones it previously missed out. |
|
13888 |
|
13889 2). SteveT |
|
13890 I'm just putting keyboard repeats into the window server. I've put this change |
|
13891 into \E32\KPWINS\KP_GUI.CPP to block windows auto repeats from getting |
|
13892 through. |
|
13893 |
|
13894 line 169: |
|
13895 case WM_SYSKEYDOWN: |
|
13896 case WM_KEYDOWN: |
|
13897 if (!(HIWORD(lParam)&KF_REPEAT)) |
|
13898 { |
|
13899 v.Set(TEvent::EKeyDown,PP::Sca.... |
|
13900 Kern::AddEvent(v); |
|
13901 } |
|
13902 break; |
|
13903 |
|
13904 Another change to KP_GUI.CPP to get the keyboard repeats going properly. This |
|
13905 adds a new TEvent type EInActive that informs me when the E32 window has lost |
|
13906 focus, the change I've done is as below. |
|
13907 |
|
13908 case WM_ACTIVATE: // line 207 |
|
13909 if ((lParam&0xFFFF)==WA_INACTIVE) |
|
13910 { |
|
13911 v.Set(TEvent::EInActive); |
|
13912 Kern::AddEvent(v); |
|
13913 } |
|
13914 break; |
|
13915 case WM_CHAR: |
|
13916 |
|
13917 I'm not sure if this the best solution, presumably for completeness there |
|
13918 should be an EActive event as well, or add a true/false parameter to the event |
|
13919 to say whether it's an active or inactive message. |
|
13920 Of course on the real machine these events will never be used but I don't see |
|
13921 that as a problem. |
|
13922 |
|
13923 3). Morgan |
|
13924 Serial drivers for X86 and Eiger platforms. |
|
13925 TLinearSectionRam::CreateRegion now rounds the committed size argument to page |
|
13926 size before calling Map. |
|
13927 |
|
13928 4). Natascha |
|
13929 Character set conversion. |
|
13930 New test code (t_chset, t_chset2, t_chcon) for Unicode build |
|
13931 |
|
13932 5). Jane |
|
13933 Added User::SetDebugMask to allow the setting of the trace mask around |
|
13934 important sections of code. |
|
13935 |
|
13936 Fixed various DSession closing and CServer bugs, including HA-51. EPOCX86 can |
|
13937 now run a test program more than once!! |
|
13938 |
|
13939 Fixed a process creation bug. |
|
13940 |
|
13941 |
|
13942 Version 0.01.052 |
|
13943 ================ |
|
13944 (Made by Matthew, 16 Jan '96) |
|
13945 |
|
13946 1). Matthew |
|
13947 Modified the kernel to use the new date/time classes internally. This includes |
|
13948 the addition of new overloaded functions duplicating old ones. This should not |
|
13949 effect the external interface except in a few cases, where some functions have |
|
13950 been renamed XxxOld(). |
|
13951 |
|
13952 In release 053 the old functions will be removed and some data members will be |
|
13953 changed to the new date/time classes. |
|
13954 |
|
13955 2). Natascha |
|
13956 Character set conversion. |
|
13957 |
|
13958 Replaced \e32\lsrc\LS_850.CPP with new file \e32\lsrc\LS_LAT1.CPP, which has |
|
13959 the same format: |
|
13960 |
|
13961 type table for characters |
|
13962 and conversions for upper case, lower case, folding and collating. |
|
13963 |
|
13964 for the Windows ISO Latin 1 character set. |
|
13965 |
|
13966 There are 3 test programs: |
|
13967 |
|
13968 1) \e32\tlocale\t_chset.mak which writes to a file "chtest.txt" the descriptions |
|
13969 for the characters 32 - 255 together with a description of the character it is |
|
13970 mapped to for each of the upper case, lower case, folding and collating conversions. |
|
13971 It does this by reading from the tables in LS_LAT1.CPP directly. This is designed |
|
13972 to test the mapping tables in LS_LAT1.CPP. |
|
13973 |
|
13974 2) \e32\tlocale\t_chset2.mak which produces the same output to a file "chtest2.txt" |
|
13975 and console, but uses the functions provided by the TChar class instead of reading |
|
13976 the tables directly. This is designed to test that the changes made in |
|
13977 \e32\bwins\elocl.mak have taken effect. Note there is no collate output since |
|
13978 TChar has no collate function. |
|
13979 |
|
13980 3) \e32\tlocale\t_chcon.mak which produces a console output displaying the |
|
13981 attributes of a range of characters 0xC0-0xCF using functions in TChar. This |
|
13982 tests that the type table in LS_LAT1.CPP is correct. |
|
13983 |
|
13984 All 3 test programs read from the text file e32\tlocale\winiso.txt. |
|
13985 |
|
13986 Note that currently these new tests do not compile in unicode build. |
|
13987 |
|
13988 3). Matthew |
|
13989 Replaced TBool TRegion::Check() with TBool TRegion::IsContainedBy(), which |
|
13990 has the opposite sense, ie it returns ETrue when Check() returned EFalse and |
|
13991 vice-versa. |
|
13992 |
|
13993 4). Roger |
|
13994 Added write(0) functionality to the serial LDD. |
|
13995 |
|
13996 A request to Write(...) with either a zero length descriptor or an explicit |
|
13997 zero length will not complete until the control lines are asserted in such a |
|
13998 way that a further write would actually send characters on to the line. The |
|
13999 exact behaviour of write(0) depends upon the iHandshaking field in the current |
|
14000 config. |
|
14001 |
|
14002 eg. |
|
14003 void WaitForCTS(RComm& aSerial) |
|
14004 // |
|
14005 // Synchronously wait for CTS to be asserted, assumes aSerial is Open. |
|
14006 // |
|
14007 { |
|
14008 TCommConfig cBuf; |
|
14009 TCommConfigV01& c=cBuf(); |
|
14010 aSerial.Config(cBuf); |
|
14011 c.iHandshake=KConfigObeyCTS; |
|
14012 TRequestStatus stat; |
|
14013 aSerial.Write(stat,TPtr8(NULL,0),0); |
|
14014 User::WaitForRequest(stat); |
|
14015 } |
|
14016 |
|
14017 The XOn/XOff bits of iHandshaking are ignored for Write(0). |
|
14018 |
|
14019 There are no changes to the PDD. |
|
14020 |
|
14021 5). Jane |
|
14022 Wrote display dll, video device (LDD) and VGA driver (PDD) for EPOCx86. |
|
14023 |
|
14024 Fixed ImpHal::DisableInt() which was only pushing 16 bits of flags. |
|
14025 |
|
14026 KMaxSectionBase in m32std.h was wrong - fixed. |
|
14027 |
|
14028 Added TExec which tests number of exec calls in one second. |
|
14029 |
|
14030 6). Graham |
|
14031 Fixed allocation of run addresses to chunks in DPlatProcess:: |
|
14032 AllocateDataSectionBase(). |
|
14033 |
|
14034 7). Roger |
|
14035 Implemented CNewServer and CNewSession to run alongside CServer and CSession as |
|
14036 proposed in MartinT's E32 proposal "ServiceL() should belong to CSession, not |
|
14037 CServer". See E32 proposals for the API. |
|
14038 |
|
14039 This code is not part of a fully accepted proposal as yet - the code is included |
|
14040 in the release to A) make further testing with the socket server less painful |
|
14041 and B) allow others to migrate servers to the new scheme if they wish. |
|
14042 |
|
14043 Assuming the proposal becomes accepted, CServer and CSession will be replaced |
|
14044 with CNewServer and CNewSession. |
|
14045 |
|
14046 8). Matthew |
|
14047 Maths bug fixes and test code. |
|
14048 |
|
14049 |
|
14050 Version 0.01.051 |
|
14051 ================ |
|
14052 (Made by Matthew, 21 Dec '95) |
|
14053 |
|
14054 1). Jane |
|
14055 Implemented dll and device loading for EPOC platforms. |
|
14056 |
|
14057 IMPORTANT NOTE |
|
14058 We have decided that when the entrypoint of a dll (E32Dll) succeeds, it should |
|
14059 return KErrNone rather than TRUE. Under WINS, the true entrypoint (_E32Dll) |
|
14060 converts KErrNone to TRUE before returning, but under EPOC this is not |
|
14061 necessary and we get tighter code by being able just to pass on the return |
|
14062 value of E32Dll(). |
|
14063 So in release 051 all dll entrypoints must now return KErrNone if successful. |
|
14064 |
|
14065 Added functions TBool User::JustInTime() and User::SetJustInTime(TBool) to |
|
14066 allow getting/setting a kernel variable which controls whether the debugger |
|
14067 macro executes its int 3 to do just in time debugging of panics with Visual |
|
14068 C++. The default is ETrue, i.e. just in time debugging is enabled. |
|
14069 All test code which traps deliberate panics should set this variable to |
|
14070 false around the code in question, to prevent Visual C++ firing up. See |
|
14071 TADT\T_CTIMER.CPP |
|
14072 |
|
14073 2). Morgan |
|
14074 Changes to TReal96: Changed KMatissaBits back to 53. |
|
14075 Added Normalise and Prepare functions. |
|
14076 GetTReal is now a const function. |
|
14077 |
|
14078 3). Gillian |
|
14079 Changes to the date and time classes |
|
14080 |
|
14081 The following is a summary of the new classes, but see the report in E32 proposals |
|
14082 (Replacement for the existing date and time classes), and the ensuing discussion |
|
14083 for a fuller description of the classes and the motivation for these changes. |
|
14084 |
|
14085 To avoid a name clash, the existing TDateTime class has been renamed TOldDateTime. |
|
14086 This along with TSystemTime, SDaySec, SDate and STime and the static date and time |
|
14087 functions in Userwill be withdrawn in release 053. |
|
14088 |
|
14089 The functionality previously in TDateTime is provided by TTime which holds the |
|
14090 number of microseconds since midnight on 1st January 0AD in a TInt64. A TTime |
|
14091 object may be constructed from a TInt64, a TDateTime (see below) or a string |
|
14092 literal. Default construction will set the time 0.00am 1st January 2000AD. This |
|
14093 class also supports comparisons between TTimes, the addition of TTimeIntervals |
|
14094 (see below) to TTimes and the subtraction of TTimes (giving a TTimeInterval as the |
|
14095 result). Such arithmetic operations are allowed to over- or underflow, but an error |
|
14096 is returned if the results of a subtraction are too large to fit in the relevent |
|
14097 (32-bit) TTimeInterval. |
|
14098 |
|
14099 The class TTimeIntervalMicroSeconds represents a 64-bit signed difference and the |
|
14100 classes TTimeIntervalSeconds, ...Minutes, ...Hours, ...Days, ...Months, ...Years |
|
14101 all derived from TTimeIntervalBase represent the differences in the rest of the |
|
14102 time bases in a 32-bit signed integer. These classes only support getting, setting |
|
14103 and comparison functions. |
|
14104 |
|
14105 The new class TDateTime has been defined for easy user access to TTime. It has |
|
14106 year, month, day, hour, minute, second and microsecond data members, all held as |
|
14107 TInts and therefore replaces the SDate and STime structs. This can hold times longer |
|
14108 than TTime but no checks will be made on construction or assignment. The TDateTime |
|
14109 class will only support getting and setting functions. |
|
14110 |
|
14111 The static functions date and time functions previously in User are now in the class |
|
14112 Time. |
|
14113 |
|
14114 Omissions - BC dates, string parsing. |
|
14115 Proviso - Due to bug in TInt64 class Time::MaxTTime() and MinTTime() fail comparisons |
|
14116 |
|
14117 4). Colly |
|
14118 Removed RThread::Read() and Write() variants taking 2 parameters. |
|
14119 |
|
14120 Provided RMessage::ReadL and WriteL functions. These call the appropriate Client |
|
14121 functions, so the code like |
|
14122 myMessage.Client().Read(...) |
|
14123 should now be changed to |
|
14124 myMessage.ReadL(...) |
|
14125 |
|
14126 Removed AllocHeaps. |
|
14127 |
|
14128 Added preliminary code for support of shared heaps. In functions where a heap was |
|
14129 previously created using given min and max heap sizes there is now an extra argument: |
|
14130 RHeap * aHeap. If this is NULL then everything proceeds as before. Otherwise, the |
|
14131 given heap is used. However, this is not properly implemented as yet and so for now |
|
14132 you should always pass a null pointer. |
|
14133 |
|
14134 Replaced the constructor RHeap(THeapType aType,TInt aMinLength,TInt aMaxLength,TInt |
|
14135 aGrowBy) with RHeap(TInt aMaxLength). |
|
14136 |
|
14137 5). Matthew |
|
14138 If TCallBack::iFunction==NULL then TCallBack::CallBack() returns 0. The default |
|
14139 constructor now sets iFunction=NULL. |
|
14140 |
|
14141 CBufBase::DoInsertL() has been made private and a new overloaded variant of InsertL |
|
14142 has been added. |
|
14143 |
|
14144 Added CActiveScheduler::Level(), which returns iLevel. |
|
14145 |
|
14146 6). New error codes: |
|
14147 const TInt KErrTimedOut=(-33); |
|
14148 const TInt KErrCouldNotConnect=(-34); |
|
14149 const TInt KErrCouldNotDisconnect=(-35); |
|
14150 const TInt KErrSubSystem=(-36); |
|
14151 const TInt KErrBadLibraryEntryPoint=(-37); |
|
14152 const TInt KErrBadDescriptor=(-38); |
|
14153 |
|
14154 |
|
14155 Version 0.01.050 |
|
14156 ================ |
|
14157 (Made by Matthew, 12 Dec '95) |
|
14158 |
|
14159 1). Roger/Mark |
|
14160 Comms bug fixes. |
|
14161 |
|
14162 2). Jal |
|
14163 Circular buffer bug fix. |
|
14164 |
|
14165 3). Roger |
|
14166 RThread::Duplicate() fix. |
|
14167 |
|
14168 4). Jane |
|
14169 Improved the build system. Added mnt cleanup, mnt cleanwins and mnt |
|
14170 cleanx86 which delete all the intermediate files for all builds, just |
|
14171 WINS and just X86 respectively. A cleanup should always be performed |
|
14172 before the first build of a new release of E32. |
|
14173 |
|
14174 Fixed clean-up of a thread's kernel server session when it dies. |
|
14175 |
|
14176 DPlatThread::Create() was not opening the thread it created, and thus |
|
14177 the access count was too low, causing death when the thread died. Fixed. |
|
14178 |
|
14179 Fixed TTimerInt::TimerComplete() to switch interrupts off during the |
|
14180 non-atomic decrement of the dfc pending flag. |
|
14181 |
|
14182 Made CObject::AccessCount() public rather than protected - mainly for use |
|
14183 in debugging. |
|
14184 |
|
14185 5). Geert |
|
14186 Changed to a new scheme for boolean values. As the change has considerable |
|
14187 impact there is a fair amount of material here, including some background |
|
14188 information. Feel free to skip anything that looks familiar: |
|
14189 |
|
14190 In a statement such as |
|
14191 if (cond) s1; |
|
14192 else s2; |
|
14193 C++ will execute s1 if cond!=0, and s2 if cond==0. In general, C++ treats |
|
14194 boolean values as false if they are equal to zero, and true if they are |
|
14195 anything else. The if statement, ?:, &&, || and ! operators all work on |
|
14196 this assumption. |
|
14197 |
|
14198 However, the _result_ of a C++ calculation with boolean values is defined |
|
14199 to be zero for false, and (int) 1 for true: the built-in &&, ||, !, ==, |
|
14200 !=, <, >, <= and >= operators all return either 0 or 1. |
|
14201 |
|
14202 Thus, although 1 is the most usual value representing 'true', it is not |
|
14203 the only value that can mean 'true'. It is therefore _bad practice_ to |
|
14204 compare any boolean variable with 1 (or ETrue, or TRUE), to see whether |
|
14205 it's true: |
|
14206 if (x==ETrue) s1; |
|
14207 will only execute s1 if x==1, whereas |
|
14208 if (x) s1; |
|
14209 will execute s1 if x!=0, which is the correct definition of 'true'ness. |
|
14210 |
|
14211 The draft ANSI C++ standard includes a 'bool' type that has the right |
|
14212 properties. The TBool introduced here has two main design goals: |
|
14213 (i) when ANSI compilers become widely available, it will be possible to |
|
14214 replace the current type definition with |
|
14215 typedef bool TBool; |
|
14216 and everything will work perfectly |
|
14217 (ii) it is designed to cause the compiler to generate an error message |
|
14218 whenever a TBool is compared with ETrue. This forces you to fix code that |
|
14219 is potentially in error, before your code will successfully compile. |
|
14220 |
|
14221 TBool is no longer an enumeration. It is now an integral type best thought |
|
14222 of as the type of boolean operators such as <, ==, !=, etc. The only |
|
14223 significant property of its values is whether they are zero (false) or |
|
14224 non-zero (true). The EFalse and ETrue enumeration constants are available |
|
14225 as boolean literals, but a TBool does _not_ have to be equal to ETrue to |
|
14226 be considered true. |
|
14227 |
|
14228 This has some impact on the kinds of expressions you can meaningfully |
|
14229 write using TBools. Comparisons between boolean variables are meaningless, |
|
14230 for instance. On the other hand, a statement such as |
|
14231 if (x==EFalse) s1; |
|
14232 is equivalent to |
|
14233 if (!x) s1; |
|
14234 which is not only more concise but also more expressive in many contexts. |
|
14235 |
|
14236 The most common meaningless expressions involving TBools; i.e., the likes |
|
14237 of |
|
14238 if (x==ETrue) s1; |
|
14239 are trapped at compile time, or link time at the latest. Use |
|
14240 if (x) s1; |
|
14241 instead. |
|
14242 |
|
14243 Another commonly used construct is |
|
14244 return(x ? ETrue : EFalse); |
|
14245 where the conditional is now entirely redundant. As a side effect of the |
|
14246 definition of EFalse and ETrue, this code no longer compiles. Examples of |
|
14247 other code intended to achieve the same effect are: |
|
14248 return((TBool)(x)); |
|
14249 or |
|
14250 if (x) return(ETrue); |
|
14251 else return(EFalse); |
|
14252 or one of many variants. These are not picked up by the compiler. |
|
14253 |
|
14254 Comparisons of one TBool to another are not trapped, nor are other |
|
14255 meaningless constructs such as |
|
14256 if (x<=ETrue) s1; |
|
14257 |
|
14258 To help the human reader, all boolean values should be declared as TBool, |
|
14259 including: member data; function parameters taking booleans; functions |
|
14260 returning booleans and especially overloaded boolean operators such as |
|
14261 operator==(), operator!=() etc. Where booleans are packed into TInt8s or |
|
14262 the like to save space, consider using a flags word instead. |
|
14263 |
|
14264 In rare cases TBools may have to be converted into integer values. This |
|
14265 may be the case when packing booleans into bytes, or when streaming them |
|
14266 out. One elegant and efficient way of doing that is to compare to EFalse; |
|
14267 e.g., |
|
14268 TUint8 iPresent[aColorComponent]=(TUint8)(aComponentPresent!=EFalse); |
|
14269 Just casting is not sufficient because vital non-zero bits in the incoming |
|
14270 boolean may be lost. |
|
14271 |
|
14272 Moreover, it is sometimes useful to assert things about the exact integer |
|
14273 value of a boolean. One example of this is test code. The built-in boolean |
|
14274 operators return either 0 or 1. It may be desirable to specify the same |
|
14275 behaviour for overloaded operators or even ordinary member functions. Use |
|
14276 the FALSE and TRUE macros in those cases; e.g., |
|
14277 test((des1<des2)==TRUE); |
|
14278 |
|
14279 The macros may also be useful when an ordinary integer is regarded as a |
|
14280 boolean. The E32Dll() entry point returns a TInt, for instance. FALSE and |
|
14281 TRUE may be used in that context. Another use is at the interface with |
|
14282 external code, such as the Win32 API. As a final example: a callback |
|
14283 function to be used in the context of a CIdle object might use the macros, |
|
14284 since its TInt return value is interpreted as a boolean. |
|
14285 |
|
14286 Note that the conversion to this new scheme is only partially implemented |
|
14287 in the base. |
|
14288 |
|
14289 6). Steve |
|
14290 New functions TSize TPoint::AsSize and TPoint TSize::AsPoint return |
|
14291 this as the respective type. Removed overloaded functions in TPoint, |
|
14292 TSize and TRect. |
|
14293 |
|
14294 TSize::SetWH renamed to SetSize. |
|
14295 |
|
14296 TRect - Functions renamed from Offset to Move and Normalise to |
|
14297 Normalize. New functions: Size, Width, Height, IsNormalized, Center, |
|
14298 SetSize, SetWidth and SetHeight. |
|
14299 |
|
14300 |
|
14301 Version 0.01.049 |
|
14302 ================ |
|
14303 (Made by Matthew, 21 Nov 1995) |
|
14304 |
|
14305 1). Andrew |
|
14306 The constness of the parameters to CCleanup::PushL and |
|
14307 CleanupStack::PushL has gone. |
|
14308 |
|
14309 CCleanup and CleanupStack now have an extra PushL overload: This |
|
14310 takes a TCleanupItem, which is callback. This enables any component |
|
14311 to be placed on the cleanup stack by providing a implicit cast to |
|
14312 TCleanupItem: the component will require a static member which conforms |
|
14313 to the TCleanupOperation prototype, with which it can constuct a |
|
14314 TCleanupItem. The overhead of all this is negligible _only_ if the cast |
|
14315 operator is inline! |
|
14316 |
|
14317 See the RItem class in the T_CTRAP test code for an example of how to |
|
14318 do this. |
|
14319 |
|
14320 It is possible to push a no-data callback on the stack, though the function |
|
14321 must take a dummy TAny * parameter. Such a function can be PushLed |
|
14322 directly, as TCleanupItem provides a constructor from a TCleanupOperation. |
|
14323 |
|
14324 |
|
14325 2). Jane |
|
14326 Added code for the WINS platform to allow DLLs to startup in a chosen |
|
14327 order. When E32Dll() is first called (aReason==EDllProcessAttach), a new |
|
14328 function UserSvr::InitRegisterCallback(TCallBack t, TInt p) should be |
|
14329 called. This registers t as a callback function with priority p. All the |
|
14330 start-up functionality of E32Dll() should now be moved to the callback. |
|
14331 |
|
14332 After all the DLLs have been loaded, the kernel runs through a priority |
|
14333 queue, doing callbacks in the requested order, and waiting on a semaphore |
|
14334 between each call. Before it terminates, the callback function should call |
|
14335 UserSvr::ServerStarted() to signal the semaphore, and allow the kernel to |
|
14336 callback to the next DLL's registered function. |
|
14337 |
|
14338 See the t_start files in TADT. |
|
14339 |
|
14340 Added support for sharing loading of dlls. |
|
14341 |
|
14342 Fixed the thread cleanup code to correctly free resources owned by the |
|
14343 session, and exit cleanly if the thread creation failed due to lack of |
|
14344 heap. Should fix HA-7. |
|
14345 |
|
14346 3). Matthew |
|
14347 CObject::Close now panics if the access count becomes negative, new test |
|
14348 code checks this. |
|
14349 |
|
14350 In WINS, PP:MapLastError returns KErrDoesNotExist for the NT error code |
|
14351 ERROR_MOD_NOT_FOUND. This fixes HA-22. |
|
14352 |
|
14353 Added a function RLibrary::LoadExact which loads a DLL without mangling |
|
14354 the name. To use this you will need F32 build 13. |
|
14355 |
|
14356 4). Roger |
|
14357 Added __DEBUGGER() Macro. |
|
14358 |
|
14359 Under WINS and MX86 this macro will place an inline int3 instruction into |
|
14360 your code. For ARM builds the macro expands to a SWI instruction. |
|
14361 |
|
14362 The macro compiles out under release builds. |
|
14363 |
|
14364 Under WINS __DEBUGGER() will cause the application to drop into the |
|
14365 debugger - it will also invoke just in time debugging if your system has |
|
14366 it enabled. |
|
14367 |
|
14368 There is no kernel debugger support for ARM or MX86 builds. |
|
14369 |
|
14370 The Macro is currently defined in E32STD.h this is a temporary measure |
|
14371 until there is a good area for platform specific pre-processor macros. |
|
14372 |
|
14373 Fixed the two DPlatThreads with the same NT thread id in the kernel's |
|
14374 list of threads bug, HA-16 and HA-6. |
|
14375 |
|
14376 5). Graham |
|
14377 New ARM code, added function TEiger::BootWaitMilliseconds(), changed |
|
14378 ArmVectorIrq() and CScreenDriverMarm::Blit(). |
|
14379 |
|
14380 |
|
14381 Version 0.01.048 |
|
14382 ================ |
|
14383 (Made by Jane,13 Nov 1995) |
|
14384 |
|
14385 1). Colly |
|
14386 If a function has a parameter by reference immediately before the |
|
14387 ellipsis argument as in: |
|
14388 |
|
14389 RTest::Printf(const TDesC &aFmt,...) |
|
14390 |
|
14391 then there is a problem when using the variable argument macros as |
|
14392 follows: |
|
14393 |
|
14394 VA_LIST list; |
|
14395 VA_START(list,aFmt); |
|
14396 |
|
14397 since the macro use &aFmt to try and get the address of the argument |
|
14398 on the stack. However this does not work with arguments passed by |
|
14399 reference since &aFmt is the real address of the descriptor. I have |
|
14400 been using a special function User::SetVaArgList() to overcome this |
|
14401 difficulty. However this function does not work with register calling |
|
14402 conventions as for the ARM compiler and so a better solution has been |
|
14403 found. Many thanks to Geert for the solution as follows: |
|
14404 |
|
14405 A new class has been defined TRefByValue as follows: |
|
14406 |
|
14407 template <class T> |
|
14408 class TRefByValue |
|
14409 { |
|
14410 public: |
|
14411 inline TRefByValue(T &aRef); |
|
14412 inline operator T &(); |
|
14413 private: |
|
14414 TRefByValue &operator=(TRefByValue aRef); |
|
14415 private: |
|
14416 T &iRef; |
|
14417 }; |
|
14418 |
|
14419 The assignment operator is just to stop the compiler whining since |
|
14420 it cannot generate the assignment operator. The trick is to pass a |
|
14421 reference by value and then have a cast to return the refernce again. |
|
14422 So all that needs to change is the function declaration as follows: |
|
14423 |
|
14424 RTest::Printf(TRefByValue<const TDesC> aFmt,...) |
|
14425 |
|
14426 Note that the TRefByValue is now passed by value so that |
|
14427 |
|
14428 VA_START(list,aFmt) |
|
14429 |
|
14430 will now work. SetVaArgList has now thankfully been banished. |
|
14431 |
|
14432 NOTE: No functions calling these functions with ... should need |
|
14433 to be changed. |
|
14434 |
|
14435 As a consequence of this change three pairs of overloaded functions |
|
14436 are now ambiguous: |
|
14437 |
|
14438 TDesC::Format(TRefByValue<const TDesC8> aFmt,...); and |
|
14439 TDesC::Format(const TDesC8 &aFmt,VA_LIST aList); |
|
14440 TDesC::AppendFormat(TRefByValue<const TDesC8> aFmt,...); and |
|
14441 TDesC::AppendFormat(const TDesC8 &aFmt,VA_LIST aList); |
|
14442 TLex::Convert(TRefByValue<const TDesC8> aFormat,...); |
|
14443 TLex::Convert(const TDesC8 &aFormat,VA_LIST aList); |
|
14444 |
|
14445 Resolved the ambiguity in each case by renaming the function which |
|
14446 takes the VA_LIST argument to end in List, i.e. |
|
14447 |
|
14448 TDesC::FormatList(const TDesC8 &aFmt,VA_LIST aList); |
|
14449 TDesC::AppendFormatList(const TDesC8 &aFmt,VA_LIST aList); |
|
14450 TLex::ConvertList(const TDesC8 &aFormat,VA_LIST aList); |
|
14451 |
|
14452 2). Colly |
|
14453 A mis-understanding between myself and Nick Twyman caused me to |
|
14454 change EXPORT_C to be defined empty. This is not correct and I have |
|
14455 put it back to the correct #define EXPORT_C __declspec(dllexport) |
|
14456 |
|
14457 3). Colly |
|
14458 Fixed a bug in the TReal96 class which then showed up a failure |
|
14459 in the implementation of TReal96. TReal96 on being Set() was always |
|
14460 shifting the mantissa left three and then subtracting 3 from the |
|
14461 exponent. However all the function were not allowing for this. I |
|
14462 have changed the Set() code not to to the shift any longer. So if |
|
14463 real calculations are to be performed the shift will have to be |
|
14464 done before the calculation. GetTReal() and the cast to TReal |
|
14465 normalise as before. GetTReal() had a bug in that it was |
|
14466 normalising *this along the way to converting to a TReal. It should |
|
14467 in fact do nothing and be changed to a const function. Two new |
|
14468 functions need to be added, Normalise() and Prepare(). Normalise() |
|
14469 will do most of what GetTReal() is doing now but will do it directly |
|
14470 on *this, while Prepare() will do the left shift by three. |
|
14471 |
|
14472 4). Colly |
|
14473 Changed all executive services to have 4 or less arguments to suit |
|
14474 the calling convention of the GCC compiler. i.e. all arguments are |
|
14475 in registers. |
|
14476 |
|
14477 5). Colly |
|
14478 Added the ARM implementation of Epoc/32 for the Eiger chip and finally |
|
14479 got a workable release of the GNU tool chain from Cygnus. Work is now |
|
14480 progressing on getting Epoc/32 running on Eiger. |
|
14481 |
|
14482 6). Graham |
|
14483 Various Eiger fixes. |
|
14484 |
|
14485 7.) Jane |
|
14486 Changed build system adding the verbs mnt cleanup (deletes everything from \e32sys |
|
14487 and \work\e32\...) and mnt blddef (automated build of all the .def files into |
|
14488 \E32\BWINS and \E32\BMX86 directories). Made several changes to the DEFMAKE tool |
|
14489 to support this. |
|
14490 These should only need to be used by the base team - others can continue to |
|
14491 use mnt bldall etc. as usual. |
|
14492 |
|
14493 8). Matthew |
|
14494 Test code for CPeriodic and TDayName etc added. |
|
14495 |
|
14496 Fixed rounding bug in um_rtod.cpp (HA-15) & adapted Martin Hardman's test |
|
14497 code. |
|
14498 |
|
14499 9). Jane |
|
14500 Fixed HA-13, setting iBase=0 in DestroyAll(), and wrote test code. Note that |
|
14501 DestroyAll() is due to be replaced by a function in a new class CArrayFixFlatCBase |
|
14502 which will subclass CArrayFixFlat<CBase *> and thus can be type safe. |
|
14503 |
|
14504 10). Jane |
|
14505 Changed EXE header format in kernel and E32ROM to contain stack & heap maximum |
|
14506 and minimum sizes. |
|
14507 |
|
14508 11). Jane |
|
14509 MMU - added allocation of linear regions (chunks) from high memory for DLLs, and |
|
14510 wrote test code. |
|
14511 |
|
14512 12). Morgan |
|
14513 Maths fixes. |
|
14514 |
|
14515 T_MATH.CPP: |
|
14516 2 sin tests (lines 1317-1321) were failing with the new TReal96 due to inaccurate |
|
14517 values for sin(3) and sin(4). |
|
14518 |
|
14519 lntest4 now uses a bit test ( using the 'approx' class) to compare the results taking |
|
14520 into account any bit wobble. |
|
14521 |
|
14522 UM_INT.CPP: |
|
14523 Fixed Math::Int(TReal &aTrg,const TReal &aSrc) aSrc.Exp() = KMantissaBits-32. |
|
14524 (Left shifting a TInt by 32 (eg x<<32) results in 0xffffffff when it was required to be 0). |
|
14525 |
|
14526 UP_I64.CPP |
|
14527 Added TInt64A::MulTop which returns the top 64 bits of a 64x64->128 multiply. |
|
14528 |
|
14529 UM_R96.CPP - TReal96 functions |
|
14530 Set() now writes the correct exponent for a 56 bit mantissa (and is consistent with the |
|
14531 transendental fuctions when KMantissaBits=56) |
|
14532 |
|
14533 Added TMathPanics |
|
14534 |
|
14535 Added test code for TReal96, RChunks and more tests for Int64 |
|
14536 |
|
14537 |
|
14538 13). Colly |
|
14539 Various X86 keyboard fixes. |
|
14540 |
|
14541 14). Martin |
|
14542 Changed Alloc heaven 'dialog' so that address of offending cell is visible. |
|
14543 |
|
14544 Added a Replace function to descriptors (courtesy of Brendan), with test code. |
|
14545 |
|
14546 Fixed TPtr::Set function to do the right thing with maxlen, modified test code. |
|
14547 |
|
14548 15). Graham |
|
14549 Windows server changes. |
|
14550 |
|
14551 16). Jane |
|
14552 Added KBX86 and KBARM boot source to PVCS. |
|
14553 |
|
14554 |
|
14555 Version 0.01.047 |
|
14556 ================ |
|
14557 (Made by Colly, 9 Oct 1995) |
|
14558 |
|
14559 1). Changed all TUint to TInt. |
|
14560 |
|
14561 2). The UserSvr::RequestEvent(TEvent &anEvent,TRequestStatus &aStatus) |
|
14562 was unworkable for the Epoc/32 micro-kernel variants since the |
|
14563 O/S needs to write the resulting event back in the context of the |
|
14564 interrupt which may not be the same process as that requesting the |
|
14565 event. Like servers, this needs to be written using RThread::Write() |
|
14566 which needs to write to a descriptor in the requesting process. To |
|
14567 this end I have defined: |
|
14568 |
|
14569 class TEventBuf : public TPckgBuf<TEvent> |
|
14570 { |
|
14571 public: |
|
14572 inline TEvent &Event() const {return(*((TEvent *)&iBuf[0]));} |
|
14573 }; |
|
14574 |
|
14575 The function now becomes: |
|
14576 |
|
14577 UserSvr::RequestEvent(TEventBuf &anEvent,TRequestStatus &aStatus); |
|
14578 |
|
14579 i.e. it takes the packaged event. The actual event can be returned |
|
14580 by using the () operator on the package or by calling Event(). |
|
14581 |
|
14582 3). The text window server had a bug which was causing the unicode |
|
14583 release build to fail reading the setup parameters in a random way. |
|
14584 |
|
14585 4). CObjectIx::Destruct() was deleting NULL object handles. Fixed. |
|
14586 |
|
14587 5). Made TRequestStatus a proper class so that it is now strongly typed. |
|
14588 This helps the compiler pick the correct overloaded function as |
|
14589 can happen in the file server for example. Note that there is no |
|
14590 conversion from a TRequestStatus to a TInt. Use the Int() function. |
|
14591 |
|
14592 6). ROM sizes are now quoted for the Epoc/32 microkernel builds and |
|
14593 not for WINS as previously. |
|
14594 |
|
14595 ROM SIZES |
|
14596 |
|
14597 X86 ARM |
|
14598 --- ---- |
|
14599 EUSER.DLL 94K 154K |
|
14600 EKERN.DLL 70K 110K |
|
14601 ELOCL.DLL 3K 3K |
|
14602 EFSRV.DLL 27K 41K |
|
14603 ---------------------- |
|
14604 TOTAL 194K 308K |
|
14605 ---------------------- |
|
14606 |
|
14607 Version 0.01.046 |
|
14608 ================ |
|
14609 (Made by Colly, 2 Oct 1995) |
|
14610 |
|
14611 1). Added #defines _L8, _L16, _S8 and _S16 for string literals. |
|
14612 |
|
14613 2). Eliminated wait handlers for device drivers. The function |
|
14614 User::AllowRequestsToComplete() is now redundant. Withdrawn. |
|
14615 |
|
14616 3). KMinTInt8 and KMinTInt16 were not defined correctly. Fixed. |
|
14617 |
|
14618 4). Completed the implementation of RHeap(). The various UserHeap |
|
14619 creation functions now have new arguments, aMinLength, |
|
14620 aMaxLength and aGrowBy. The heap will initially be aMinLength |
|
14621 in size, and can grow to be aMaxLength in size. If there is no |
|
14622 space in the heap then an attempt will be made to grow the heap |
|
14623 in aGrowBy increments. There is a new function Compress() which |
|
14624 will free any excess space at the end of the heap. Compress() will |
|
14625 never shrink the heap to less than aMinLength. The sizing code has |
|
14626 been modified to take account of the RHeap structure at the bottom |
|
14627 of the heap, so that the free size of a newly created heap will |
|
14628 always be >= aMinLength. None of this affects fixed heaps. |
|
14629 |
|
14630 5). Changed RThread::Create() to allow the initial size of the heap |
|
14631 to be specified as well as the maximum size of the heap. These |
|
14632 are given as the aHeapMinSize and aHeapMaxSize parameters. All |
|
14633 heaps created in chunks are targets for compression if the system |
|
14634 runs out of memory. |
|
14635 |
|
14636 6). Implemented the process handling functions for the first time in |
|
14637 the micro-kernel version, including an interface to allow a loader |
|
14638 server to actually load .EXEs and .DLLs. In a normal system the |
|
14639 loader server will be part of the file server. The 486 version |
|
14640 of Epoc/32 now supports multiple processes, full pre-emptive |
|
14641 scheduling, and execute in place .DLLs and .EXEs. |
|
14642 |
|
14643 7). Added User::Beep(TInt aFrequency,TInt aDuration). The frequency |
|
14644 is in hertz so 440 is middle A. The duration is in tenths |
|
14645 of a second. As in Epoc/16 a negative duration indicates that if |
|
14646 the hardware to perform the beep is being used for another purpose |
|
14647 no beep will be sounded. As before if the duration is positive the |
|
14648 beep can hang up the program until the hardware is free to make |
|
14649 the beep. And as before the first beep will return immediately if |
|
14650 the hardware is not busy and the beep will continue in background. |
|
14651 Note that in Epoc/16 the frequency was specified as an interval. |
|
14652 This function is not playing a sound constinuously due to a bug in |
|
14653 Win32. It is however functionally correct. I will fix it in the |
|
14654 next release. |
|
14655 |
|
14656 8). The constructor for the TPckg template class was leaving the |
|
14657 length of the descriptor as zero, when it should be the sizeof |
|
14658 the object T. Fixed. |
|
14659 |
|
14660 9). Add support for drivers to the kernel. In Epoc/16 there were LDDs |
|
14661 and PDDs. In Epoc/32 a Device is equivalent to an LDD and a Driver |
|
14662 is equivalent to a PDD. The only user mode services for drivers |
|
14663 are TFindDriver which allows all installed drivers to be listed |
|
14664 and User::LoadDriver() and User::FreeDriver(). With the addition |
|
14665 of drivers \E32\KSRC\KS_DEV.CPP got too big to handle so I have |
|
14666 split out channels into KS_CHN.CPP and libraries (DLLs) into |
|
14667 KS_LIB.CPP and put drivers in KS_DRV.CPP. |
|
14668 |
|
14669 10).Completed the implementation of the device driver functions in the |
|
14670 kernel and implemented the RDevComm device as well as a WINS driver. |
|
14671 Ax X86 driver for 16450s and 16550s is coming soon. Serial comms lives |
|
14672 again! The comms device and WINS driver are now part of the standard |
|
14673 release of E32 for WINS. The interface to the device is in D32COMM.H |
|
14674 and D32COMM.INL. It is necessary to load both the device driver |
|
14675 and the physical driver in order to use the comms device. An example |
|
14676 of how to do this is in \e32\dpwins\t_comm.cpp. |
|
14677 |
|
14678 11).Added a public function CActive::Deque() which will allow the |
|
14679 active object to be removed from the scheduler queue. Deque() |
|
14680 will call Cancel() before dequeing the object. The object must |
|
14681 already be on the scheduler queue to be dequed or else a panic |
|
14682 will result. |
|
14683 |
|
14684 12).Added a circular buffer template class CCirBuf<T> to E32ADT.H and |
|
14685 its test program T_CIRC.CPP. This is used by the serial device |
|
14686 to implement receive and transmit buffers. It allows items to be |
|
14687 added at the head of the queue while allowing items to be removed |
|
14688 from the tail of the queue. The buffers size can be changed |
|
14689 dynamically by calling SetLengthL(), although it will discard the |
|
14690 current contents of the buffer. Also added a class CCirBufer |
|
14691 derived from CCirBuf<TUint8> which add Get() and Put() which will |
|
14692 add or remove a single item and are optimised for speed. |
|
14693 |
|
14694 13).Added the text window server to the standard build of E32. This has |
|
14695 now been implemented for WINS and EPOC/32-MX86 platforms. The source |
|
14696 of this server is in \E32\WSRC. It uses a screen driver .DLL |
|
14697 to perform character blitting to the screen. The test programs are |
|
14698 in \E32\TWIN. The RConsole class has the following facilities: |
|
14699 |
|
14700 RConsole is used to communicate with the text windows server. |
|
14701 |
|
14702 Version() Reports client side version information |
|
14703 |
|
14704 Create() If necessary, opens a connection to the window server, then creates a default window without displaying |
|
14705 it. The default window characteristics may then be changed using Control() before proceeding to display |
|
14706 the window using Set(). |
|
14707 |
|
14708 Set() If necessary, opens a connection to the window server. If necessary, creates a window. Then displays |
|
14709 the window with the given title and attaches the given buffer size characteristics to it. |
|
14710 |
|
14711 Write() Writes the given text at the current cursor position. |
|
14712 |
|
14713 Clear() Clears the whole window and places the cursor at the top left corner. |
|
14714 |
|
14715 ClearToEndOfLIne() Clears from the current cursor position to the end of the line |
|
14716 |
|
14717 Destroy() Removes the window from the screen. Another may then be opened using Create()/Set(). |
|
14718 |
|
14719 SetCursorSize() Sets the percentage height of the cursor |
|
14720 SetCursorPosAbs() Places cursor at given absolute position. |
|
14721 SetCursorPosRel() Places cursor relative to current position. |
|
14722 CursorPos() Returns current cursor position |
|
14723 |
|
14724 Control() Controls various window characteristics. The text passed to this function may contain near-English |
|
14725 commands. However, only the '+', '-', and upper-case letters are actually interpreted: |
|
14726 |
|
14727 '+' Apply subsequent characteristics |
|
14728 '-' Remove subsequent characteristics |
|
14729 'V' Visibility |
|
14730 'C' Cursor on |
|
14731 'S' Scroll bars |
|
14732 'L' Scroll lock |
|
14733 'W' Wrap lock |
|
14734 'M' Maximum Window Size |
|
14735 'N' '/n' is CR and LF |
|
14736 |
|
14737 Before interpreting the text, a silent '+' is assumed: |
|
14738 |
|
14739 Control(_L("Visibility -Cursor Lock + Scroll")) |
|
14740 |
|
14741 This would cause the window to become visible, with no text cursor, no scroll lock active, |
|
14742 but with scroll bars present. Of course, the following command would achieve exactly the same |
|
14743 result, but would not posses the same level of self-documentation or readability: |
|
14744 |
|
14745 Control(_L("VS-CL")) |
|
14746 |
|
14747 Further more, the next command would achieve the same thing with even more readability: |
|
14748 |
|
14749 Control(_L("+Visibility -Cursor -Lock +Scroll")) |
|
14750 |
|
14751 Read() Read a character. |
|
14752 |
|
14753 ReadCancel() Cancel asynchronous read request |
|
14754 |
|
14755 14).Set the priority of the kernel server thread and null thread |
|
14756 correctly on the EPOC/32 platforms. |
|
14757 |
|
14758 15).Now allocating data section base addresses correctly so that multiple |
|
14759 threads will now work correctly on the EPOC/32 platforms. |
|
14760 |
|
14761 16).Changed THandleBase::Duplicate(RProcess &aProcess) to be |
|
14762 THandleBase::Duplicate(RThread &aThread) since it is usual |
|
14763 to have the remote thread handle and unusual to have the remote |
|
14764 threads process handle. The O/S uses the thread's process as the |
|
14765 handle's source process. |
|
14766 |
|
14767 17).RTimer.After() and User::After() were using a duration in ticks. This |
|
14768 has now been changed to a duration in tenths of a second so that it |
|
14769 is platform independent. |
|
14770 |
|
14771 18).RProcess RThread::Process() was always returning the current |
|
14772 process rather than the thread's process. Also returning a new |
|
14773 handle based object can fail with out of memory so I have changed |
|
14774 this function to TInt RThread::Process(RProcess &aProcess) so that |
|
14775 it can return the error. |
|
14776 |
|
14777 19).Under Windows/NT a mutex once owned by a thread can be waited on again |
|
14778 without locking the thread, on the basis that this protects a thread |
|
14779 from entering deadlock. However this is nonsense since a mutex can |
|
14780 be used to prevent a thread from accessing the resource as |
|
14781 happens in the case of the User::Beep() function. Basically the |
|
14782 mutex is used to lock out threads until the current beep has |
|
14783 completed. What takes the thread out of potential deadlock is the |
|
14784 beep completing in due course. Changed the WINS implementation to |
|
14785 behave correctly and lock the thread. |
|
14786 |
|
14787 20).TLex::Val(TReal &) did not fail with a number like _L("1.2e"). Fixed. |
|
14788 |
|
14789 21).The default constructor for the TLex class was still being set up for |
|
14790 zero terminated descriptors which were discarded in January. Fixed. |
|
14791 |
|
14792 22).TLex::Peek() would happily try and access a character from a default |
|
14793 constructed TLex which resulted in an access violation. Now fixed. |
|
14794 Also dropped inline for Inc(),Peek() and Get(). |
|
14795 |
|
14796 23).CBufBase::Read(TUint aPos,TDes8 &aDes) is documented as reading up to |
|
14797 aDes.MaxLength() characters, but was in fact reading up to |
|
14798 aDes.Length() characters. Fixed. |
|
14799 |
|
14800 24).RTimer was not setting the request status to KRequestPending after |
|
14801 an asynchronous request. Fixed. |
|
14802 |
|
14803 25).I have changed EXPORT_C to just be nothing rather than |
|
14804 __declspec(dllexport). For the time being it is still required to |
|
14805 declare functions as EXPORT_C. If you had a function which did |
|
14806 not have a corresponding IMPORT_C then make sure that there is |
|
14807 an IMPORT_C defined somewhere or else the function will not be |
|
14808 exported. |
|
14809 |
|
14810 26).Changed the heap checking macros to have understandable names and have |
|
14811 simplified their implementation. I have also made them orthogonal. The |
|
14812 new names and their old equivalents are as follows: |
|
14813 |
|
14814 // For the user heap |
|
14815 |
|
14816 __UHEAP_MARK MARKSTART |
|
14817 __UHEAP_CHECK(aCount) CHECKNUM1(x) |
|
14818 __UHEAP_CHECKALL(aCount) CHECKTOTALNUM1(x) |
|
14819 __UHEAP_MARKEND MARKEND |
|
14820 __UHEAP_MARKEND(aCount) MARKEND1(x) |
|
14821 __UHEAP_FAILNEXT(aCount) SETFAIL(x,y) |
|
14822 __UHEAP_SETFAIL(aType,aRate) SETFAIL(x,y) |
|
14823 __UHEAP_RESET RESET |
|
14824 |
|
14825 // For the kernel heap |
|
14826 |
|
14827 __KHEAP_MARK |
|
14828 __KHEAP_CHECK(aCount) |
|
14829 __KHEAP_CHECKALL(aCount) |
|
14830 __KHEAP_MARKEND |
|
14831 __KHEAP_MARKEND(aCount) |
|
14832 __KHEAP_FAILNEXT(aCount) K_SETFAIL(x,y) |
|
14833 __KHEAP_SETFAIL(aType,aRate) K_SETFAIL(x,y) |
|
14834 __KHEAP_RESET K_RESET |
|
14835 |
|
14836 // For any RHeap |
|
14837 |
|
14838 __RHEAP_MARK(aHeap) MARKSTART1(x) |
|
14839 __RHEAP_CHECK(aHeap,aCount) CHECKNUM2(x,y) |
|
14840 __RHEAP_CHECKALL(aHeap,aCount) CHECKTOTALNUM2(x,y) |
|
14841 __RHEAP_MARKEND(aHeap) MARKEND1(x) |
|
14842 __RHEAP_MARKEND(aHeap,aCount) MARKEND2(x,y) |
|
14843 __RHEAP_FAILNEXT(aHeap,aCount) UH_SETFAIL(x,y,z) |
|
14844 __RHEAP_SETFAIL(aHeap,aType,aRate) UH_SETFAIL(x,y,z) |
|
14845 __RHEAP_RESET(aHeap) UH_RESET |
|
14846 |
|
14847 FAILNEXT,UH_FAILNEXT and K_FAILNEXT can be replaced |
|
14848 with __?HEAP_FAILNEXT(1) |
|
14849 |
|
14850 It is no longer possible to check a threads heap since this will |
|
14851 not work under Epoc/32 if a thread is in another process. |
|
14852 |
|
14853 In the first trial implementation of __?HEAP__FAILNEXT(aCount) I |
|
14854 had not realised that aCount did not do anything. This is now |
|
14855 fixed. Note that aCount==1 fails the next alloc call. |
|
14856 |
|
14857 27).The member variable of TScreenInfoV01 were not declared with a lower |
|
14858 case i prefix. Fixed. |
|
14859 |
|
14860 28).Released the console classes. The header for the console class in |
|
14861 E32CONS.H. It has an abstract base class CConsoleBase which just |
|
14862 defines a basic set of console functions. It also has CConsoleTextWin |
|
14863 which is the console implementation for the text window server. |
|
14864 |
|
14865 29).Changed the WINS platform to use the the CConsoleTextWin instead of |
|
14866 a second Windows/NT console window. The test class now uses the |
|
14867 CConsoleTextWin. The console is released as ECONS.DLL. The |
|
14868 CConsoleTextWin class is defined in the E32TWIN.H header. |
|
14869 |
|
14870 30).Changed the test class to use the console. Also added a Getch() |
|
14871 function to the test class. Because it now owns a console object |
|
14872 I have had to rename the test class RTest. I have also added |
|
14873 a Close() member function which will free an allocated console. |
|
14874 |
|
14875 31).Added CConsoleBase *Adt::NewConsoleL() which will create a basic |
|
14876 console object. Note that you do not need to be linked to ECONS.LIB |
|
14877 in order to use this or any of the member functions of CConsoleBase. |
|
14878 |
|
14879 32).Took the opportunity with the release of the X86 platform to rename |
|
14880 the WINS platform releaseables to be inline with those of the X86 |
|
14881 platform. The new names are as follows: |
|
14882 |
|
14883 OLD NAME NEW NAME |
|
14884 ============ ============= |
|
14885 ESTAT.OBJ EEXE.OBJ |
|
14886 ESTAT.LIB EEXE.LIB |
|
14887 EWINS.DLL EUSER.DLL |
|
14888 EWINS.LIB EUSER.LIB |
|
14889 KWINS.DLL EKERN.DLL |
|
14890 LWINS.DLL ELOCL.DLL |
|
14891 |
|
14892 For programs the programs which use E32 the only changes to .MAK files |
|
14893 which are significant are as follows: |
|
14894 |
|
14895 ESTAT?.OBJ to EEXE.OBJ - The startup object for .EXEs |
|
14896 ESTAT?.LIB to EEXE.LIB - The startup library for .EXEs |
|
14897 if linking with msvcrt20.lib |
|
14898 EWINS?.LIB to EUSER.LIB - The user library |
|
14899 |
|
14900 33).Added an inline "construct in place" global new operator. |
|
14901 |
|
14902 34).Due to popular demand I have moved the following functions |
|
14903 to a new class of their own CleanupStack. |
|
14904 |
|
14905 Adt::PushL(const TAny *) |
|
14906 Adt::PushL(const CBase *) |
|
14907 Adt::Pop() |
|
14908 Adt::Pop(TUint aCount) |
|
14909 Adt::PopAndDestroy() |
|
14910 Adt::PopAndDestroy(TUint aCount) |
|
14911 |
|
14912 become |
|
14913 |
|
14914 CleanupStack::PushL(const TAny *) |
|
14915 CleanupStack::PushL(const CBase *) |
|
14916 CleanupStack::Pop() |
|
14917 CleanupStack::Pop(TUint aCount) |
|
14918 CleanupStack::PopAndDestroy() |
|
14919 CleanupStack::PopAndDestroy(TUint aCount) |
|
14920 |
|
14921 35).For a long time I have been tracking down a race condition under |
|
14922 WINS which resulted in the kernel being hung. This turns out to be |
|
14923 a bug in the Windows/NT implementation of critical sections. |
|
14924 I have replaced the critical section with a mutex which fixes the bug. |
|
14925 |
|
14926 36).I have fixed the T_SEMUTX.CPP program which has also long had a |
|
14927 deliberate race condition as part of its test. However the problem |
|
14928 was that sometimes it raced and sometimes it did not. By making each |
|
14929 thread wait different times its possible to always make the race |
|
14930 conditions occur so that the test will always pass consistently. |
|
14931 |
|
14932 37).The CIdle class was doing a User::WaitForAnyRequest() in the |
|
14933 DoCancel() function. DoCancel() should just do nothing ofcourse |
|
14934 since the CActive::Cancel() function will do the WaitForAnyRequest(). |
|
14935 Many thanks to Brendan for spotting the bug and for providing |
|
14936 the test code t_idle.cpp. |
|
14937 |
|
14938 38).Adt::DestroyZ() was never any use, so I have removed it. |
|
14939 |
|
14940 39).CSession::CreateL() was defined as pure virtual so that server |
|
14941 implmentors had to define a CreateL() function even, as is often |
|
14942 the case, the function did nothing. I have now supplied a default |
|
14943 implementation which does nothing. |
|
14944 |
|
14945 40).CActiveScheduler::Install() would not allow the current scheduler |
|
14946 to be removed by passing NULL. This is now allowed. Note that if |
|
14947 you want to change the scheduler you must first de-install by using |
|
14948 NULL and then replace with the new scheduler. |
|
14949 |
|
14950 41).Got most of the base test code working in release mode. For some |
|
14951 unknow reason, some of the test code template classes are not |
|
14952 instaniating in release builds. All tests pass but the following |
|
14953 have the body of their code eliminated. |
|
14954 |
|
14955 T_BUF, T_CHAR, T_DES, T_HEAPDB, T_HUF |
|
14956 T_LEX, T_QUE, T_SQUE, T_KEY, T_FLOAT |
|
14957 |
|
14958 In getting the test programs to work in the release build almost |
|
14959 all problems wre due to a dependency on the lifetime of |
|
14960 temporaries. In debug builds temporaries are never re-used so they |
|
14961 exist for the duration of the function. However in release builds |
|
14962 they are re-used at the first opportunity. Typical buggy code is |
|
14963 as follows: |
|
14964 |
|
14965 class TBug |
|
14966 { |
|
14967 public: |
|
14968 TBuf(); |
|
14969 void Set1(const TDesC *aDes); |
|
14970 void Set2(const TDesC *aDes); |
|
14971 private: |
|
14972 const TDesC *iPtr1; |
|
14973 const TDesC *iPtr2; |
|
14974 }; |
|
14975 |
|
14976 TBuf b; |
|
14977 b.Set1(&_L("Temporary 1")); |
|
14978 b.Set2(&_L("Temporary 2")); |
|
14979 |
|
14980 This will work fine in debug builds but will result in iPtr1 and |
|
14981 iPtr2 pointing to the same value. This is because _L is defined |
|
14982 as a constructor for a TPtrC which creates a temporary. The same |
|
14983 automatic space will be used for the temporary. |
|
14984 |
|
14985 42).HBufC::NewMax(),HBufC::NewMaxL() and HBufC::NewMaxLC() all ended |
|
14986 up setting the length to the size of the allocated cell which can |
|
14987 be bigger that the requested length. Changed to set the length |
|
14988 to the requested length. |
|
14989 |
|
14990 43).Moved MemCopy(),MemCompare(),MemCompareF(),MemCompareC() |
|
14991 MemFill(),MemFillZ() and MemSwap() to a class of their own |
|
14992 called Mem and dropped the Mem prefix. So User::MemCopy() is |
|
14993 now Mem::Copy() etc. |
|
14994 |
|
14995 44).Changed TDesC functions Match(),Locate(),LocateReverse() and Find() |
|
14996 to return an unsigned result. They all return KNotFound which is |
|
14997 defined as KMaxTUint if they fail. |
|
14998 |
|
14999 45).The message system was not tidying up correctly when a session |
|
15000 was closed by the client or if the client died before closing. The |
|
15001 new implementation of messaging has now fixed this problem. |
|
15002 |
|
15003 NOTE |
|
15004 ==== |
|
15005 |
|
15006 20th September 1995. |
|
15007 |
|
15008 The X86 implementation of the Epoc/32 platform ran through the |
|
15009 creation and execution of the first user mode process and then |
|
15010 eventually ended up in the NULL process and consequently the idle |
|
15011 loop. The MMU and protection is fully enabled, so this constitutes |
|
15012 the birth of Epoc/32. We hope to have the remainder of the boot |
|
15013 sequence, i.e. file server, window server and shell completed |
|
15014 by the end of the next week. |
|
15015 |
|
15016 ROM SIZES |
|
15017 |
|
15018 X86 ARM |
|
15019 --- ---- |
|
15020 EUSER.DLL 90K 148K |
|
15021 EKERN.DLL 33K 47K |
|
15022 ELOCL.DLL 3K 3K |
|
15023 EFSRV.DLL 28K 42K |
|
15024 ---------------------- |
|
15025 TOTAL 154K 240K |
|
15026 ---------------------- |
|
15027 |
|
15028 Version 0.01.045 |
|
15029 ================ |
|
15030 (Made by Colly, 30 Aug 1995) |
|
15031 |
|
15032 1). Changed the way messaging worked internally. RServer::Receive() used |
|
15033 to get a pointer to the message received. I was hoping to pass this |
|
15034 pointer directly from supervisor space for efficiency, but I have |
|
15035 decided that its not worth the extra overhead of read only shared |
|
15036 memory that wouldbe required. RServer now has a RMessage by value |
|
15037 which receives the contents of the message when it arrives. If the |
|
15038 server needs to hold onto the message then it must either copy |
|
15039 the message in full (I have added a copy constructor and an assignment |
|
15040 operator to allow this) or it must use the new function MessagePtr() |
|
15041 which returns a const RMessagePtr. The only thing you can do with |
|
15042 an RMessagePtr is to complete the message as you do with a normal |
|
15043 RMessage by call RMessagePtr::Complete(). |
|
15044 |
|
15045 While I was about it I also changes the naming of the accessor |
|
15046 functions I1(),P1() etc. The problem with the names was that on |
|
15047 the client side arguments were being set into an array using normal |
|
15048 indexing, i.e. base 0, while on the server side the names were based 1. |
|
15049 In order to help the conversion I have renamed I to Int and P to Ptr |
|
15050 so that: |
|
15051 |
|
15052 I1() is now Int0() |
|
15053 I2() is now Int1() |
|
15054 I3() is now Int2() |
|
15055 I4() is niw Int3() |
|
15056 P1() is now Ptr0() |
|
15057 P2() is now Ptr1() |
|
15058 P3() is now Ptr2() |
|
15059 P4() is niw Ptr3() |
|
15060 |
|
15061 Sorry for the inconvenience. |
|
15062 |
|
15063 2). Moved a number of constructors in abstract base classes which were |
|
15064 public to protected. This should have no affect other than to stop |
|
15065 them being instantiated. |
|
15066 |
|
15067 3). Withdrawn the new(ECleanup) and new(ECleanupObj) options. new(ELeave) |
|
15068 still exists. CBase * is not nescessarily the start of the heap cell |
|
15069 when MI is involved. In general a cast of (TAny *) to a CBase * will |
|
15070 not work unless the TAny * was originally downcast to a CBase *. If |
|
15071 you know the type T of a TAny *ptr then its o.k. to code |
|
15072 |
|
15073 (CBase *)(T *)ptr; |
|
15074 |
|
15075 but not |
|
15076 |
|
15077 (CBase *)ptr; |
|
15078 |
|
15079 4). More tiresome CBase * problems. TDblQue::DeletaAll and |
|
15080 TSglQue::DeleteAll were removing each item from the que and then |
|
15081 casting the ptr to a CBase * to call Adt::Destroy(). Withdrawn. |
|
15082 |
|
15083 5). CActiveScheduler::Start() was not nesting levels correctly. Fixed. |
|
15084 |
|
15085 6). Added TLex?::Offset() and TLex?::MarkedOffset(). |
|
15086 |
|
15087 7). The various TLex::Val() routines should not change iNext if they |
|
15088 fail to lex a valid number. Fixed. |
|
15089 |
|
15090 8). Added TLex?::Val(TReal32 &aReal,TChar aPoint) and |
|
15091 TLex?::Val(TReal64 &aReal,TChar aPoint). |
|
15092 |
|
15093 9). Added some extra key difinitions to E32VIRT.H |
|
15094 |
|
15095 EKeyBell=0x0007, |
|
15096 EKeyLineFeed=0x000a, |
|
15097 EKeyVerticalTab=0x000b, |
|
15098 EKeyFormFeed=0x000c, |
|
15099 EKeySpace=0x0020 |
|
15100 |
|
15101 10).Implemented default constructors for TPtrC8 and TPtrC16 which |
|
15102 set the pointer NULL and the length to zero. |
|
15103 |
|
15104 11).The X86 version of E32 now builds in unicode. |
|
15105 |
|
15106 12).Changed CObjectConIx::Remove(CObjectCon *aCon) so that it can be |
|
15107 passed NULL. It does nothing if aCon is NULL. |
|
15108 |
|
15109 13).Added CObjectCon::operator[]() to allow access to all objects in a |
|
15110 container by straight indexing. |
|
15111 |
|
15112 Version 0.01.044 |
|
15113 ================ |
|
15114 (Made by Colly, 23 Aug 1995) |
|
15115 |
|
15116 1). TDes8::SetMax() and TDes16::SetMax() did not work correctly if the |
|
15117 TDes was from a TBufC.Des() or HBufC.Des(). This caused the |
|
15118 HBufC::NewMax() and HBufC::NewMaxL() to fail to set length to |
|
15119 MaxLength(). Fixed. |
|
15120 |
|
15121 2). Added a new type TTrapHandler. This is an abstract class which needs |
|
15122 to be derived to provide a handler to work with the TRAP mechanism. |
|
15123 The trap handler can be installed by calling User::SetTrapHandler() |
|
15124 and can be cleared by passing a NULL pointer. By default there is no |
|
15125 trap handler. Once a trap handler is installed then each time TRAP is |
|
15126 invoked TTrapHandler::Trap() is called. If a leave is called then |
|
15127 TTrapHandler::Leave() is called. If the function being trapped does |
|
15128 not leave then TTrapHandler::UnTrap() is called. Each thread has its |
|
15129 own trap handler. Its not a good idea to install a trap handler while |
|
15130 under a TRAP (exercise for the reader to work out why), so a panic |
|
15131 will be given if this is attempted. The current trap handler can be |
|
15132 retrieved by calling User::TrapHandler(). |
|
15133 |
|
15134 3). Added a new ADT class CCleanup. The purpose of this class is to |
|
15135 provide an automated cleanup mechanism to go with the TTrapHandler |
|
15136 facility. This class is basically a stack onto which either |
|
15137 allocated cells can be pushed using PushL(TAny *aPtr) or objects |
|
15138 derived from CBase with PushL(CBase *aPtr). The object can |
|
15139 be popped from the stack with Pop() or popped and destroyed with |
|
15140 PopAndDestroy(). It is possible to pop a number of items from the |
|
15141 stack by using the overloaded Pop(TUint aCount) functions. |
|
15142 |
|
15143 The object also allows for nesting so that all objects at the |
|
15144 current nesting level can be popped or popped and destroyed with |
|
15145 PopAll() or PopAndDestroyAll(). These functions automatically |
|
15146 decrement the nesting level. The nesting level can be incremented |
|
15147 with NextLevel(). When the object is created the level is zero. |
|
15148 Objects cannot be pushed while the nesting level is zero so it is |
|
15149 necessary to call NextLevel() before doing a PushL(). |
|
15150 |
|
15151 If the object is destroyed then all items on the stack will also |
|
15152 be destroyed. |
|
15153 |
|
15154 The cleanup object keeps a free slot at all times. Thus an object |
|
15155 can always be guaranteed to be added to the cleanup stack. Having |
|
15156 added the object, room is made for another free slot. This may |
|
15157 leave but it will be alright as the object has already been pushed |
|
15158 onto the stack and will be cleaned up. Cleaning up leaves room for |
|
15159 another free slot. |
|
15160 |
|
15161 4). Added a new ADT class CTrapCleanup which puts 2) and 3) together to |
|
15162 give a framework for cleanup. All thats necessary to implement this |
|
15163 facility is to call CTrapCleanup::New(). There is no NewL() since |
|
15164 the trap handler can only be installed while not under a TRAP. |
|
15165 Destroying this object will remove the trap handler. Added the static |
|
15166 functions Adt::PushL(const TAny *), Adt::PushL(const CBase *), |
|
15167 Adt::Pop(), Adt::Pop(TUint aCount) and the PopAndDestroy() |
|
15168 equivalents which all use the installed CTrapCleanup object. Note |
|
15169 that the PopAll() variants are not available, since this is done |
|
15170 by the trap handler. |
|
15171 |
|
15172 5). Added 2 more types to TLeave, i.e. ECleanup and ECleanupObj. ECleanup |
|
15173 will allocate the storage and leave on error. If successful it will |
|
15174 add the new cell to the cleanup list. ECleaupObj is the same except |
|
15175 that it will add the cell as a CBase derived object. It is possible |
|
15176 to use ::new with ECleanupObj, but you will just get |
|
15177 panicked. It should only be used with CBase::new. Note that any |
|
15178 call to new within a member function in a class derived from CBase |
|
15179 will be calling CBase::new and so will need ECleanup. If creating an |
|
15180 object then ECleanupObj is correct. Using User::AllocLC() is probably |
|
15181 preferable and always call new(ECleanupObj) or new(ELeave). |
|
15182 |
|
15183 Added RHeap::AllocLC(), User::AllocLC(), TDesC::AllocLC(), |
|
15184 HBufC::NewLC() and HBufC::NewMaxLC() which all are the same as |
|
15185 the equivalent L functions except that they add the object to |
|
15186 the cleanup list if successful. |
|
15187 |
|
15188 Remember that a Pop() of some kind will be required. |
|
15189 |
|
15190 6). Added the function to return machine information from the Hardware |
|
15191 Abstraction Layer (HAL). This is retrieved by calling User::HalInfo(). |
|
15192 The class is declared in E32HAL.H. Setting functions will be added |
|
15193 in a forthcoming release. |
|
15194 Note that this function takes a TDes8. This is to allow for extensions |
|
15195 to the class as developments proceed apace. The function will always |
|
15196 fill the entire descriptor with zero and then copy the smaller of the |
|
15197 current size of the info class or size of the descriptor. Thus if a |
|
15198 new info class is used with an old O/S all new members are guaranteed |
|
15199 to be zeroed. If an old info class is used with a new O/S only the |
|
15200 appropriate slice of the new info struct is returned. There is a |
|
15201 typedef for a packaged THalInfoV1 called THalInfoV1Buf which can be |
|
15202 passed to User::HalInfo(). Ofcourse later version will be derived |
|
15203 from THalInfoV1 as THalInfoV2 and so on, leaving a clear picture of |
|
15204 what has been added between versions. The object can be retrieved |
|
15205 from the package as follows: |
|
15206 |
|
15207 THalInfoV1Buf b; |
|
15208 User::HalInfo(b); |
|
15209 THalInfoV1 &info=b(); |
|
15210 test.Printf(_L("Machine name = %S\n"),&info.MachineName()); |
|
15211 |
|
15212 See the test program \E32\TCDT\T_HAL.CPP for details. |
|
15213 |
|
15214 7). The O/S was running DLL startup procedures before starting the file |
|
15215 server and window server threads. It has to do this to allow the |
|
15216 Window and File server DLLs to register their threads so that they |
|
15217 can be started in an ordered manner. However many other servers |
|
15218 like the alarm, comms and secokets servers would also like to start |
|
15219 the server thread from their E32Dll() entry point. The solution is |
|
15220 to hang all starting threads except the Window and File server |
|
15221 threads until the Window and File server threads have started. |
|
15222 |
|
15223 8). Changed the RLibrary::Load() function so that it will automatically |
|
15224 add the approriate suffix for the current build. Thus if the file |
|
15225 server wants to load a .DLL called "elocal.fsy" it just uses |
|
15226 "elocal.fsy". The O/S will look for the .DLL names as follows: |
|
15227 |
|
15228 Build Source Suffix Target |
|
15229 ============ ============ ====== ============== |
|
15230 ansi release "elocal.fsy" none "elocal.fsy" |
|
15231 ansi debug "elocal.fsy" d "elocald.fsy" |
|
15232 uni release "elocal.fsy" u "elocalu.fsy" |
|
15233 uni debug "elocal.fsy" ud "elocalud.fsy" |
|
15234 |
|
15235 Because of 8 character name limits the maximum length name of a DLL |
|
15236 can only be 6 characters. If an extension is not supplied it will |
|
15237 be assumed to be .DLL. |
|
15238 |
|
15239 9). Added TPtrC8::Set(const TDesC8 &aDes) and TPtr8::Set(const TPtr8 &aPtr) |
|
15240 and the TPtrC16 and TPtr16 equivalents. |
|
15241 |
|
15242 10).The resource file \E32\KPWINS\KWINS.RC was including afxres.h from |
|
15243 \msvc20\mfc\include which is not actually required. Fixed. |
|
15244 |
|
15245 11).Fixed a bug in TLex::Val(TInt?) which has been lurking from day one |
|
15246 and was scraping by through good fortune. |
|
15247 |
|
15248 12).Fixed a bug in creating global operating system objects such as |
|
15249 RSempahores etc. |
|
15250 |
|
15251 13).Changed CArrayPakBase to be derived directly from CBase rather |
|
15252 than CArrayVarBase. This was being done to share code but because |
|
15253 of the public inheritance it caused some nasty problems since a |
|
15254 CArrayPakBase is definitely not ISA CArrayVarBase. Users of this |
|
15255 class note that the sort function is SortL() and not Sort() since |
|
15256 it makes a copy of the array as a CArrayVar and then sorts it. |
|
15257 Making the copy can clearly fail. Also note that since the sort is |
|
15258 actually performed on a CArrayVar the key for SortL() needs to be |
|
15259 a TKeyArrVar. Other functions take a TKeyArrPak as normal. No code |
|
15260 should be affected by this change. |
|
15261 |
|
15262 14).Added const TArray<T> Array() to each of the array template classes, |
|
15263 which allows a degree of polymorphism amongst the arrays. |
|
15264 TArray<T> only allows const T &operator[]() and Count(). |
|
15265 |
|
15266 If you want a function to be able to read any of the arrays then |
|
15267 declare it as follows: |
|
15268 |
|
15269 void ReadAnyArray(const TArray<TBuf_40> anArray); |
|
15270 |
|
15271 It could use the TArray as follows: |
|
15272 |
|
15273 TUint count=anArray.Count(); |
|
15274 for (TUint i=0;i<count;i++) |
|
15275 test.Printf(_L("%S\n"),&anArray[i]); |
|
15276 |
|
15277 Then if you have: |
|
15278 |
|
15279 CArrayFixFlat<TBuf_40> *fix; |
|
15280 CArrayFixFlat<TBuf_40> *var; |
|
15281 CArrayFixFlat<TBuf_40> *pak; |
|
15282 |
|
15283 They can all be passed to ReadAnyArray() as follows: |
|
15284 |
|
15285 ReadAnyArray(fix->Array()); |
|
15286 ReadAnyArray(var->Array()); |
|
15287 ReadAnyArray(pak->Array()); |
|
15288 |
|
15289 15).SteveT was getting a weird problem with delete in one of |
|
15290 his CBase derived classes with the virtual destructor calling the |
|
15291 delete from the Windows library. The fix to his problem is to |
|
15292 provide CBase::operator delete() even though its not necessary. |
|
15293 |
|
15294 Version 0.01.043 |
|
15295 ================ |
|
15296 (Made by Colly, 21 Aug 1995) |
|
15297 |
|
15298 1). Renamed CBufFlat::Capacity() to CBufFlat::SetReserveL(). |
|
15299 2). Added the L suffix to all the methods in the ADT classes which |
|
15300 can leave. |
|
15301 CBufBase::InsertL(), CBufFlat::InsertL() and CBufSeg::InsertL(). |
|
15302 CArrayFix::AppendL(), CArrayVar::AppendL() and CArrayPak::AppendL(). |
|
15303 CArrayFix::InsertL(), CArrayVar::InsertL() and CArrayPak::InsertL(). |
|
15304 CArrayFix::InsertIsqL(), CArrayVar::InsertIsqL() and CArrayPak::InsertIsqL(). |
|
15305 Note that all occurences of ISQ (uppercase) have been changed to |
|
15306 lower case. Thus FindISQ() has become FindIsq(). |
|
15307 Note also that the virtual function InsertL() has been renamed to |
|
15308 DoInsertL(), so that the derived classes do not have to re-define |
|
15309 the two new InsertL()'s in CBufBase. |
|
15310 3). The CArray classes had a kludged way of delaying allocation of the |
|
15311 CBufBase. Fixed. |
|
15312 4). Incorporated SteveT's changes to TPoint, TSize and TRect. His release |
|
15313 notes are as follows: |
|
15314 There are 3 changes to the TRect spec as agreed with Martin Tasker:- |
|
15315 Replaced |
|
15316 TInt TRect::InterSect() |
|
15317 with |
|
15318 void TRect::InterSection() & |
|
15319 TBool TRect::Intersects() |
|
15320 Changed the names of:- |
|
15321 TRect:Union() to TRect::BoundingRect() |
|
15322 TRect::Inside() to TRect::Contains() |
|
15323 I have also removed most of the inline functions from the TPoint, |
|
15324 TSize & TRect functions. The only ones left as inline are the |
|
15325 TPoint & TSize constructors and operator=, although I'm still not |
|
15326 too sure whether they should stay inline or not. |
|
15327 5). Changed CBufBase::Ptr() and CBufBase::BackPtr() to return TPtrs |
|
15328 rather than pointer and length. |
|
15329 Added CBufBase::Read(TUint aPos,TDes8 &aDes) |
|
15330 which will read aDes.Length() bytes. |
|
15331 Added CBufBase::Read(TUint aPos,TDes8 &aDes,TUint aLength) |
|
15332 which will read aLength bytes. |
|
15333 Added CBufBase::Write(TUint aPos,const TDesC8 &aDes) |
|
15334 which will write aDes.Length() bytes. |
|
15335 Added CBufBase::Write(TUint aPos,const TDesC8 &aDes,TUint aLength) |
|
15336 which will write aLength bytes. |
|
15337 Added CBufBase::InsertL(TUint aPos,const TDesC8 &aDes) |
|
15338 which will insert aDes.Length() bytes. |
|
15339 Added CBufBase::InsertL(TUint aPos,const TDesC8 &aDes,TUint aLength) |
|
15340 which will insert aLength bytes. |
|
15341 6). Removed the protected destructor (not actually implemented) from CBase |
|
15342 and changed CBase::Destroy() so that it does not delete this. |
|
15343 |
|
15344 Renamed CBase::Destroy() as CBase::Destruct() and all other |
|
15345 virtual Destroy()s to Destruct(). |
|
15346 |
|
15347 Changed Adt::Destroy() to call delete after the Destruct(). |
|
15348 |
|
15349 This allows CBase derived objects to be aggregated by value, although |
|
15350 it is not Psion policy to do this (preferring to aggegrate by reference). |
|
15351 |
|
15352 Note that there is no longer any requirement to call CBase::Destroy() |
|
15353 from classes derived from CBase. |
|
15354 |
|
15355 Note that if aggregating by reference which should be the case for |
|
15356 all Psion code then the object must be destroyed with Adt::Destroy() |
|
15357 rather than the Destruct() function. Its probably a good idea to |
|
15358 search all code for ->Destroy() and check each case. Also make sure |
|
15359 that all classes derived from CBase which have virtual void Destroy() |
|
15360 are changed to virtual void Destruct(). |
|
15361 7). CObjectIx, CObjectCon and CObjectConIx could all be created with |
|
15362 optional leave on error. This is not in the spirit of |
|
15363 the ADT classes and so I have removed the option. They will now |
|
15364 always leave on errors. The methods have been renamed where |
|
15365 applicable with the L suffix. These classes were also privately |
|
15366 derived from CArrayFixFlat<T> which was breaking the ISA |
|
15367 relationship with CBase, which prevents use of Adt::Destroy(). |
|
15368 They now have a CArrayFixFlat<T> and are derived directly from |
|
15369 CBase. CObject and CObjectCon used to capitalise the name. They |
|
15370 are now case sensitive on the names. Note this affects server |
|
15371 names (watch out SteveT and Brendan). |
|
15372 8). TPckg<T>::operator->() and TPckg<T>::operator()() were returning |
|
15373 const T * and const T & respectively. Fixed. |
|
15374 9). Added HBufC::NewMax() and HBufC::NewMaxL() which allocate an HBufC |
|
15375 of the requested size and then set the length to the maximum length. |
|
15376 Note in the proposals database a function it was agreed to add |
|
15377 a function SetLengthToMax() to TDes. This has been done but I decided |
|
15378 to call it SetMax(). Obviously these functions are available for 8 |
|
15379 and 16 HBufC's as well. |
|
15380 10).If multiple inheritance is to be allowed for then the only way to |
|
15381 guarantee that an Adt::Destroy() through a CBase pointer will work |
|
15382 correctly is to have a virtual destructor. This has been implemented |
|
15383 in CBase. No derived classes need to be changed as the compiler will |
|
15384 generate the appropriate destructors automatically. If this seems |
|
15385 like a waste then I have to agree, however it will make us compatible |
|
15386 with the C++ language and all proper C++ implementations. If you want |
|
15387 to know more details then ask me, Gerry or DavidW. |
|
15388 11).The ENTER,CATCH,END_ENTER mechanism had a serious flaw when using |
|
15389 a register calling convention. This has now been replaced with the |
|
15390 pre-processor macros TRAP and TRAPD. These are defined as below: |
|
15391 |
|
15392 #define TRAP(_r,_s) {TTrap __t;if (__t.Trap(_r)==0){_s;TTrap::UnTrap();}} |
|
15393 #define TRAPD(_r,_s) TInt _r;{TTrap __t;if (__t.Trap(_r)==0){_s;TTrap::UnTrap();}} |
|
15394 |
|
15395 Basically _r is an integer variable which will receive the result of |
|
15396 any User::Leave() and _s is a statement to be executed. It can be any |
|
15397 valid C++ statement, but will normally be a function call. |
|
15398 |
|
15399 The difference between TRAP and TRAPD is that TRAPD will declare the |
|
15400 integer variable for you. The integer variable will always be |
|
15401 initialised to 0 before the statement _s is executed. It is possible |
|
15402 to use a number of statements for _s by separating them with ; but |
|
15403 this will possibly lead to failure. |
|
15404 |
|
15405 Examples: |
|
15406 |
|
15407 CSomething *pS=new(ELeave) CSomething; |
|
15408 TRAPD(ret,pC->ConstructL()) |
|
15409 if (ret!=KErrNone) |
|
15410 { |
|
15411 Adt::Destroy(pS); |
|
15412 User::Leave(ret); |
|
15413 } |
|
15414 |
|
15415 is the same as |
|
15416 |
|
15417 CSomething *pS=new(ELeave) CSomething; |
|
15418 TInt ret; |
|
15419 TRAP(ret,pC->ConstructL()) |
|
15420 if (ret!=KErrNone) |
|
15421 { |
|
15422 Adt::Destroy(pS); |
|
15423 User::Leave(ret); |
|
15424 } |
|
15425 |
|
15426 If you have a function, say TInt DoSomethingL() and you want to |
|
15427 get the result of the function or the leave then do this: |
|
15428 |
|
15429 TRAPD(ret,ret=DoSomethingL()) |
|
15430 12).Changed RHeap::Free() to zero the cell it has just freed in the debug |
|
15431 build. |
|
15432 13).Added User::RequestComplete() which will complete a request in for |
|
15433 the current thread. |
|
15434 14).Added a new CDT TCallBack which packages a function taking a TAny * |
|
15435 argument and returning an integer with a TAny * value. It has a two |
|
15436 constructors, the one which does not have a TAny * value will set the |
|
15437 value to NULL. It has one function CallBack which can be used to call |
|
15438 the function passing it the TAny * value. e.g. |
|
15439 |
|
15440 class TMyIdle |
|
15441 { |
|
15442 public: |
|
15443 void Run(); |
|
15444 static TInt Idle(TAny *aPtr); |
|
15445 }; |
|
15446 |
|
15447 TInt TMyIdle::Idle(TAny *anObj) |
|
15448 {((TMyIdle *)anObj)->Run();} |
|
15449 |
|
15450 TMyIdle idler; |
|
15451 CIdle *pI=CIdle::New(); |
|
15452 pI->ConstructL(TCallBack(TMyIdle::Idle,&idler)); |
|
15453 15).Added a new active object CIdle which will call back whenever |
|
15454 the active scheduler has scheduled all higher priority objects. |
|
15455 CIdle will re-schedule itself as long as the callback function |
|
15456 returns TRUE. It can be re-started by calling Start() again. |
|
15457 New() and NewL() add the idle object to the scheduler. |
|
15458 16).Changed CPeriodic to use a TCallBack. Note the CPeriodic::RunL() |
|
15459 now always calls the callback. |
|
15460 17).Added TLex8::UnGetToMark() and TLex16::UnGetToMark() which just |
|
15461 reset iNext to iMark. |
|
15462 18).Renamed all the functions which were in the debug build but not in |
|
15463 the release build to have an __Dbg prefix. Also renamed the test |
|
15464 functions __TestInvariant() and __Test to __DbgTestInvariant and |
|
15465 __DbgTest. This is partly as a reminder to users of these functions |
|
15466 that they should only be used inside #if defined(_DEBUG) and partly |
|
15467 to ease producing the .DEF file to control the .DLL build process |
|
15468 using linkage by ordinal. An automated tool will generate the .DEF |
|
15469 file for a .DLL linked by name and will produce the .DEF for the |
|
15470 debug build. It can then produce the .DEF for the release build |
|
15471 by leaving out all the functions starting with __Dbg. |
|
15472 |
|
15473 Version 0.01.042 |
|
15474 ================ |
|
15475 (Made by Colly, 3 Aug 1995) |
|
15476 |
|
15477 1). All DLLs now link by ordinal. |
|
15478 2). The release versions had a startup bug with some configurations of DLL |
|
15479 useage. DavidW this is what cause the BAFL test code to fail. |
|
15480 3). Includes the first release of the Epoc/32 microkernel platform and |
|
15481 implementation for 486 processor on an IBM/PC. |
|
15482 |
|
15483 NOTES |
|
15484 ===== |
|
15485 |
|
15486 Its a good idea to turn on DEBUG under link so that release EXEs and DLLs |
|
15487 have at least the public symbols for debugging. This can be done for |
|
15488 all build variants. I have done this for all .MAK files in E32 and F32. |
|
15489 |
|
15490 Version 0.01.041 |
|
15491 ================ |
|
15492 (Made by Colly, 25 July 1995) |
|
15493 |
|
15494 1). RThread::Read() failed when reading a descriptor of the type |
|
15495 generated by TBufC::Des(). Added a test and fixed. |
|
15496 2). Made the NULL thread hang around forever instead of exiting to help |
|
15497 with debugging. |
|
15498 3). Added a new directory BWINS to the group which now has all the .MAK |
|
15499 files used to build the base. If the .MAK is in the same directory |
|
15500 as the source files then the debug databases .PDB files don't store |
|
15501 a full path which causes the debugger to prompt for the source |
|
15502 directory. Putting them in BWINS causes all paths to be stored in the |
|
15503 .PDB. Note that the BLD.CMD files remain where they were they just |
|
15504 pick up the .MAK file from BWINS. If using VC++ then load the .MAK |
|
15505 file directly from BWINS. Moved the startup files from USTAT to |
|
15506 UPWINS and dropped the USTAT directory from the group. |
|
15507 Split the startup module us_stat.cpp into two UP_EXE.CPP for |
|
15508 starting .EXEs and UP_DLL.CPP for starting DLLs. |
|
15509 4). Split EWINS into two .DLLs. EWINS still survives but now contains |
|
15510 just the user mode functions. KWINS is new and contains the kernel. |
|
15511 There is no need to change any .MAK files as it is only the |
|
15512 EWINSxx.DLLs which link to KWINSxx.DLL. |
|
15513 5). Stopped releasing the include file E32CHAR.H. |
|
15514 6). Merged the E32EVNT.H and E32WSRV.H header files into one header file |
|
15515 E32SVR.H which is just for communication with system servers such |
|
15516 as the Window server and File server etc. Moved the functions which |
|
15517 were in the UserWindowServer class to the UserSvr class and gave |
|
15518 the functions better names. Note that I have given the functions in |
|
15519 the UserSvr class more meaningful names. SteveT, these changes will |
|
15520 affect you! |
|
15521 7). Fixed missing external references to _fltused, _adj_fdiv, _adjust_fdiv, |
|
15522 _adjust_fdivr_m64 and _adjust_fdiv_m64. |
|
15523 8). Added the functions to support Global and thread local data in DLLs. |
|
15524 The functions are as follows: |
|
15525 |
|
15526 TAny *Dll::Tls() - Returns the Thread Local Storage variable for the |
|
15527 current DLL. |
|
15528 void Dll::SetTls(TAny *aPtr) - Sets the Thread Local Storage variable |
|
15529 for the current DLL. |
|
15530 Usually in the entry point E32Dll() when the process is attached or |
|
15531 when a thread is attached to the DLL some memory will be allocated |
|
15532 on the threads heap. This value will then be saved with Dll::SetTls(). |
|
15533 Thereafter it can be retrieved with Dll::Tls(). |
|
15534 |
|
15535 The following functions are not yet fully implemented: |
|
15536 |
|
15537 TBool Dll::GlobalAllocated(); |
|
15538 TInt Dll::GlobalAlloc(TUint aSize); |
|
15539 TInt Dll::GlobalRead(TUint aPos,TDes8 &aDes); |
|
15540 TInt Dll::GlobalWrite(TUint aPos,TDesC8 &aDes); |
|
15541 |
|
15542 Dll::GlobalAlloc() allocates the global data for the currently |
|
15543 running DLL. Specifying a size of 0 will free the data. The amount |
|
15544 of data allocated can be changed by calling Dll::GlobalAlloc() |
|
15545 repeatedly. It is normal to allocate the global data in the entry |
|
15546 point E32Dll() when a process attaches and when |
|
15547 Dll::GlobalAllocated() returns EFalse. There is no need to free |
|
15548 the data since if the DLL is unloaded the data will be freed. However |
|
15549 it is possible to use some of the allocated data to keep a reference |
|
15550 count which can be incremented on process attach and decremented on |
|
15551 process detach. When the count is zero it can be discarded. |
|
15552 |
|
15553 Since the data is kept in the kernel the DLL cannot have direct |
|
15554 access to the data, so it must be read and written using the |
|
15555 Dll::GlobalRead() and Dll::GlobalWrite() functions. It |
|
15556 is considered a panic to write past the current size of the data |
|
15557 but not an error to read past the end of the data. |
|
15558 |
|
15559 These functions are implemented in a class of their own since they |
|
15560 need to be statically linked with each DLL or EXE (note than an |
|
15561 EXE is also potentially a DLL) on the WINS platform. |
|
15562 |
|
15563 Finally it is a good idea to minimize the size of the global data. |
|
15564 |
|
15565 Look at the test DLL \e32\tcdt\t_dll.mak and the test program |
|
15566 \e32\tcdt\t_tdll.mak to see how this works in practice. |
|
15567 |
|
15568 9). Now release EXDLL??.PDB files. These come from EXDLL??.OBJ which is |
|
15569 a start up module for EWINS??.DLL, KWINS??.DLL and LWINS??.DLL which |
|
15570 have special initialisation requirements. These are just released as |
|
15571 an aide to debugging. |
|
15572 |
|
15573 NOTES |
|
15574 ===== |
|
15575 |
|
15576 It is now vital that programs are build with proper make files. In |
|
15577 particular any program still linking to the C runtime library MSVCRT20.DLL |
|
15578 will fail to start correctly. Note that we are only talking about the |
|
15579 C runtime library and not the Win32 API libraries kernel32.lib, |
|
15580 gdi32.lib, user32.lib etc. The C runtime library is no longer necessary |
|
15581 as the base is now running entirely independently. |
|
15582 |
|
15583 All EXEs should be linked with ESTAT??.OBJ and should have _E32Startup |
|
15584 set as the entry point. |
|
15585 |
|
15586 All DLLs should be linked with EDLL??.OBJ and should have _E32Dll set |
|
15587 as the entry point. Remeber that a DLL must now supply a function |
|
15588 E32Dll(). To see and example look at the code in \E32\DPWINS\WS_UTL.CPP. |
|
15589 |
|
15590 Everything should be linked with the user library EWINS??.LIB. Apart from |
|
15591 other E32 software nothing else should be necessary. |
|
15592 |
|
15593 Make sure that "Ignore all default libraries" is set and that |
|
15594 "Disable exception handling is also checked" and that alignment is |
|
15595 set to 4 bytes. |
|
15596 |
|
15597 If you are not sure then start with one of the .MAK files released by |
|
15598 the base and modify it to suit your project. |
|
15599 |
|
15600 Version 0.01.040 |
|
15601 ================ |
|
15602 (Made by Colly, 20 July 1995) |
|
15603 |
|
15604 1). Converted the kernel to having a Kernel Supervisor Server and an |
|
15605 executive. |
|
15606 2). Replaced the specific exit type of exception with a Panic() category |
|
15607 of Exception. |
|
15608 3). Clean compiled all the platform independent source code with the GCC |
|
15609 compiler with the exception of the sources in UMATH. |
|
15610 4). Added cleanup functionality to the kernel. |
|
15611 5). Incorporated SteveT's fixes to pointer messages with the new screen |
|
15612 surround. |
|
15613 6). Added Martin Dolphin's CArrayPacked classes. Renamed the classes |
|
15614 "Packed" to "Pak". His release notes follow: |
|
15615 |
|
15616 This version of CArrayPak inherits from CArrayVar and uses |
|
15617 some virtual functions to achieve code reuse. TKeyArrayPak |
|
15618 inherits from TKeyArrayVar. |
|
15619 |
|
15620 ucdt\uc_func.cpp |
|
15621 This has a slightly modified binary search. |
|
15622 This modification guarantees that: |
|
15623 //if no match is found. |
|
15624 //the index of the record logically following the value being searched |
|
15625 //for will be returned in aPos. |
|
15626 |
|
15627 uadt\ua_array.cpp |
|
15628 Has the new CArrayPak code plus some other small |
|
15629 modification listed below. |
|
15630 CArrayFixBase::InsertIsq changed to reflect change in BinarySearch. |
|
15631 CArrayVarBase::Find, FindIsq have had unused length parameter |
|
15632 removed, some functions made virtual to achieve code reuse. |
|
15633 8). Fixed further bugs in TInt64 divide and remainder functions as |
|
15634 reported by SteveT. |
|
15635 9). Incorporated SteveT's changes to the region classes. |
|
15636 10).Incorporated the faster versions of User::MemCopy(),User::MemFill() |
|
15637 and User::MemFillZ() |
|
15638 11).Added two template inline functions to align pointers. |
|
15639 inline T *Align2(T *aPtr) |
|
15640 inline T *Align4(T *aPtr) |
|
15641 Align2 will make ((T *)&1)==0 |
|
15642 Align4 will make ((T *)&3)==0 |
|
15643 and two template functions to align integers. |
|
15644 inline TUint Align4(T aVal) |
|
15645 inline TUint Align2(T aVal) |
|
15646 12).Removed the Notify() and SetNotify methods from RThread and RProcess. |
|
15647 They will re-appear in the file server in due course. |
|
15648 13).Added the executive dispatcher to the kernel. |
|
15649 14).Rationalised the RThread and RChunk read/write routines. |
|
15650 15).Changed CActiveScheduler::Destroy() to just remove active objects |
|
15651 from the schedule queue. It used to destroy them as well. Before |
|
15652 removing each active object it will call CActive::Cancel(); |
|
15653 16).Fixed a bug in TLex8::NextToken() and TLex16::NextToken() which |
|
15654 was not checking properly for the end of the buffer. Found by Martin |
|
15655 Dolphin by trying to lex an empty command line. |
|
15656 17).Changed the name of the key matching enumerates as follows: |
|
15657 TKeyArrayCmp to TKeyCmpText |
|
15658 TKeyArrayCmpNumeric to TKeyCmpNumeric |
|
15659 Added another constructor for comparing descriptors and changed |
|
15660 the order of the parameters as follows: |
|
15661 inline TKey(TUint anOffset,TKeyCmpText aType); |
|
15662 At anOffset should be one of the descriptor types, TPtr,TBufC etc |
|
15663 inline TKey(TUint anOffset,TKeyCmpText aType,TUint aLength); |
|
15664 At anOffset should be TText of length aLength. |
|
15665 inline TKey(TUint anOffset,TKeyCmpNumeric aType); |
|
15666 At anOffset should be an integer of some type. |
|
15667 Added support for TInt64s. |
|
15668 This change is propagated to the various TKeyArrayXXX:: classes. |
|
15669 18).Fixed a race condition in the kernel when resuming threads. |
|
15670 19).If a thread panics then it just quietly disappears. If this is |
|
15671 one of the server threads then the program appears to hang for |
|
15672 no reason. To this end I have added new services RThread::Server() |
|
15673 and RThread::SetServer(TBool aState). Any thread marking itself as |
|
15674 a server with RThread().SetServer(ETrue) will have its panics |
|
15675 reported through the messagebox and will then abort the program. |
|
15676 Note that this is done for the main thread as well. |
|
15677 |
|
15678 NOTES |
|
15679 All test programs pass in all builds. |
|
15680 |
|
15681 Version 0.01.039 |
|
15682 ================ |
|
15683 (Made by Colly, 23 June 1995) |
|
15684 |
|
15685 1). Finally removed the dependency on the C runtime libarary. |
|
15686 |
|
15687 There are new libraries in t:\msvc21\lib which should all |
|
15688 be copied to c:\msvc20\lib. This is still necessary as the |
|
15689 main operating system .DLL and SteveT's .DLL still link to |
|
15690 the runtime library MSVCRT20.DLL. Also copy |
|
15691 t:\msvc21\system32\*.* to c:\winnt35\system32\*.* |
|
15692 |
|
15693 The build for a .EXE has now changed as follows: |
|
15694 |
|
15695 a). Select project settings and highlight all 4 builds: |
|
15696 Select the Link tab and the Output category. |
|
15697 Set Entry-point symbol to _E32Startup |
|
15698 (The case is important in _E32Startup) |
|
15699 Select the general category. |
|
15700 Delete all the libraries/object modules. |
|
15701 Make sure "Ignore all Default libraries" is selected. |
|
15702 b). Select each build in turn and set the libraries/object modules |
|
15703 as follows: |
|
15704 |
|
15705 Release : \e32sys\estat.obj \e32sys\ewins.lib |
|
15706 Debug : \e32sys\estatd.obj \e32sys\ewinsd.lib |
|
15707 Uni Release : \e32sys\estatu.obj \e32sys\ewinsu.lib |
|
15708 Uni Debug : \e32sys\estatud.obj \e32sys\ewinsud.lib |
|
15709 |
|
15710 If in doubt look at one of the test programs. |
|
15711 |
|
15712 The build for a .DLL which is linked to Win32 does not need to |
|
15713 change at all. |
|
15714 |
|
15715 The build for a .DLL which is linked only to E32 must be changed |
|
15716 as follows: |
|
15717 |
|
15718 a). Select project settings and highlight all 4 builds: |
|
15719 Select the Link tab and the Output category. |
|
15720 Set Entry-point symbol to _E32Dll |
|
15721 (The case is important in _E32Dll) |
|
15722 Select the general category. |
|
15723 Delete all the libraries/object modules. |
|
15724 Make sure "Ignore all Default libraries" is selected. |
|
15725 b). Select each build in turn and set the libraries/object modules |
|
15726 as follows: |
|
15727 |
|
15728 Release : \e32sys\edll.obj \e32sys\ewins.lib |
|
15729 Debug : \e32sys\edlld.obj \e32sys\ewinsd.lib |
|
15730 Uni Release : \e32sys\edllu.obj \e32sys\ewinsu.lib |
|
15731 Uni Debug : \e32sys\edllud.obj \e32sys\ewinsud.lib |
|
15732 |
|
15733 c). Provide a function prototyped as follows: |
|
15734 |
|
15735 GLDEF_C TInt E32Dll(TDllReason aReason) |
|
15736 |
|
15737 See \f32\sfsrv\fs_utl.cpp for an example of such a function. |
|
15738 |
|
15739 The new system cannot be build with the project system at the |
|
15740 moment and must be built with the VC++ IDE. The correct build |
|
15741 order is as follows: |
|
15742 |
|
15743 \e32\lsrc\lwins.mak |
|
15744 \e32\kpwins\ewins.mak |
|
15745 \e32\ustat\estat.mak |
|
15746 \e32\ustat\edll.mak |
|
15747 |
|
15748 2). Added the fancy graphics screen bitmap of protea to surround the screen. |
|
15749 It does not appear in its full glory on my work machine, but it does on |
|
15750 my home machine. Perhaps SteveT can sort this out for me. I am also |
|
15751 assuming that SteveT will handle the buttons on the imaghe and return |
|
15752 them as key strokes. |
|
15753 3). CServer::RunL() was still using delete to remove a session when |
|
15754 a client disconnected rather than Destroy(). |
|
15755 4). Added a protected destructor to CBase which will stop any objects |
|
15756 derived from CBase being placed on the stack. |
|
15757 5). Increased the Window servers stack to 1MByte. |
|
15758 6). TInt64 divide was not working for large intergers. |
|
15759 7). Absorbed SteveT's new region code. |
|
15760 8). Fixed a bug in TLex::Val() which was not dealing with the end of the |
|
15761 descriptor properly. MartinH's fix. |
|
15762 9). Added the TReal to buffer and buffer to TReal functions. The maths |
|
15763 library is now complete. Thanks to MartinH. |
|
15764 10).Fixed a bug in CArrayFixBase::DestroyAll(). |
|
15765 11).Moved the TInt64 class from E32MATH.H to E32STD.H and its source |
|
15766 code from umath to ucdt. |
|
15767 12).Took the additions to the bitmap allocator from JaneS |
|
15768 13).New version of enter and leave which should fix previous problems |
|
15769 |
|
15770 NOTES |
|
15771 ===== |
|
15772 |
|
15773 1). T_LEX.CPP failed because the TReal functions now work. I have |
|
15774 commented these out until MH can fix them. |
|
15775 2). T_THREAD.CPP and T_SEMUTX.CPP fail under the unicode debug version. |
|
15776 T_THREAD because their is a race condition in the kernel somwhere |
|
15777 and T_SEMUTX.CPP because there is a bug in the program logic. I will |
|
15778 fix these in the next release. |
|
15779 |
|
15780 Version 0.01.038 |
|
15781 ================ |
|
15782 (Made by DavidW, 19 May 1995) |
|
15783 |
|
15784 One step backwards before taking two steps forward again! |
|
15785 Put back RRegion::~RRegion to allow the Window Server and GDI to |
|
15786 release new versions quickly, compatible with the latest E32, before |
|
15787 they take more time over the next week to convert to a new RRegion |
|
15788 scheme altogether. |
|
15789 |
|
15790 [Added later - fixed INCC.PRJ to release E32DES8.H & E32DES16.H] |
|
15791 |
|
15792 Also made a fix to MNT.CMD which meant that only the Release build |
|
15793 versions were being released. The ESTAT*.PDB files weren't being |
|
15794 released either. |
|
15795 |
|
15796 Note: T_I64 still fails in UON. |
|
15797 T_SEMUTX fails intermittently (in either UON and UOFF). |
|
15798 |
|
15799 Version 0.01.037 |
|
15800 ================ |
|
15801 (Made by Colly, 19 May 1995) |
|
15802 |
|
15803 1). Fixed a bug in Math::Rand(). |
|
15804 2). Moved the private classes TRectKey and TRectSwap in RRegion |
|
15805 to be declared locally in u_regn.cpp. |
|
15806 RRegion still has a virtual destructor which I have now removed. I |
|
15807 notice that the test code t_regn.cpp does not test either the Close() |
|
15808 or Destroy() functions. |
|
15809 3). Re-organized the entire group. |
|
15810 SUSER has been split into |
|
15811 UCDT - User Concrete Data Types, platform independent |
|
15812 UPWINS - User Wins platform dependent |
|
15813 SOLIB renamed to UADT - User Abstract Data Types |
|
15814 SMATH renamed to UMATH |
|
15815 TUSER renamed to TCDT |
|
15816 TOLIB renamed to TADT |
|
15817 SKERN renamed to KSRC |
|
15818 SWINS renamed to KPWINS |
|
15819 SWINSD renamed to DPWINS |
|
15820 SLOCL renamed to LSRC |
|
15821 4). In line with the above I have renamed E32OLIB.H and E32OLIB.INL |
|
15822 to E32ADT.H and E32ADT.INL. |
|
15823 5). Added class CBitMapAllocator to Adt. This class uses a bitmap to |
|
15824 control allocation of resources. It is used by the PageAllocator |
|
15825 in the micro kernel to allocate free physical pages. Another |
|
15826 potential use is in implementing a block allocation scheme in |
|
15827 a binary file such as a BTree index file. |
|
15828 6). I have changed the way the version numbers are formatted by TVersion. |
|
15829 7). Fixed a bug in RSubSession::Close() which did not check for a NULL |
|
15830 handle before despatching the close message to the server. It is |
|
15831 normal practice to allow a close on something which has never been |
|
15832 opened/created. |
|
15833 8). Recorded the size of components in the release history. |
|
15834 9). The localising code is now released separately as LWINS.DLL. This |
|
15835 is currently included in the base release zip file ewins. Note that |
|
15836 only ewins.dll has a dependency on this file so that no build files |
|
15837 need change. |
|
15838 10).Changed TDblQueIterBase::Wind() and TDblQueIterBase::Rewind() |
|
15839 to TDblQueIterBase::SetToFirst() and TDblQueIterBase::SetToLast() |
|
15840 Also added TDblQueIter<T>::Set(T &aLink) which will start the |
|
15841 iterator on a particular link. |
|
15842 11).Changed TSglQueIterBase::Rewind() to TSglQueIterBase::SetToFirst() |
|
15843 Also added TSglQueIter<T>::Set(T &aLink) which will start the |
|
15844 iterator on a particular link. |
|
15845 12).Added a function Adt::DestroyZ(CBase * &anObject) which will |
|
15846 destroy an object if anObject is not NULL and will then zero |
|
15847 anObject. |
|
15848 13).Added DestroyAll() to CArrayFixFlat and CArrayFixSeg which |
|
15849 assumes that the array is a set of CBase pointers, i.e. |
|
15850 CArrayFixFlat<CBase *>. The only check that is made is the the |
|
15851 record length==sizeof(CBase *). Note that DestroyAll() destroys |
|
15852 all the non-NULL pointers and then calls the normal Destroy(). |
|
15853 14).Added a new template class TAggregate to e32atd.h. The idea |
|
15854 behind TAggregate is to automate the desctruction of aggregate |
|
15855 objects in CBase derived classes. Say you have three active |
|
15856 objects owned by your object CMyObject the current way of |
|
15857 writing the class is as follows: |
|
15858 |
|
15859 class CMyObject : public CBase |
|
15860 { |
|
15861 public: |
|
15862 CMyObject(); |
|
15863 virtual void Destroy(); |
|
15864 inline CTimer &Timer(*iTimer); |
|
15865 inline CServer &Server(*iServer); |
|
15866 inline CComms &Comms(*iComms); |
|
15867 private: |
|
15868 CTimer *iTimer; |
|
15869 CServer *iServer; |
|
15870 CComms *iComms; |
|
15871 }; |
|
15872 |
|
15873 And the Destroy() is as follows: |
|
15874 |
|
15875 void CMyObject::Destroy() |
|
15876 { |
|
15877 |
|
15878 Adt::DestroyZ(iTimer); |
|
15879 Adt::DestroyZ(iServer); |
|
15880 Adt::DestroyZ(iComms); |
|
15881 CBase::Destroy(); |
|
15882 }; |
|
15883 |
|
15884 With TAggregate you would do it as follows. |
|
15885 |
|
15886 class CMyObject : public CBase |
|
15887 { |
|
15888 private: |
|
15889 enum {ETimer,EServer,EComms,EMaxAggregate}; |
|
15890 public: |
|
15891 CMyObject(); |
|
15892 virtual void Destroy(); |
|
15893 inline CTimer &Timer(*((CTimer *)iAgg.iPtrs[ETimer])); |
|
15894 inline CServer &Server(*((CServer *)iAgg.iPtrs[EServer])); |
|
15895 inline CComms &Comms(*((CComms *)iAgg.iPtrs[EComms])); |
|
15896 private: |
|
15897 TAggregate iAgg[EMaxAggregate]; |
|
15898 }; |
|
15899 |
|
15900 And the destructor is as follows: |
|
15901 |
|
15902 void CMyObject::Destroy() |
|
15903 { |
|
15904 |
|
15905 iAgg.Destroy(); |
|
15906 CBase::Destroy(); |
|
15907 }; |
|
15908 |
|
15909 If one of the aggregates is removed or another is added all that |
|
15910 has to be done is add a new enum and the accessor method. |
|
15911 The Destroy() will automatically be correct. Note that there is |
|
15912 no additional overhead for the iAgg.iPtrs[] in the accessors. |
|
15913 15).I have added a new template class TAutoClose to e32std.h which |
|
15914 will add a destructor to any class which has a Close() method. |
|
15915 This is useful for functions in which you want to take advantage |
|
15916 of the compiler automatically destructing the object when it goes |
|
15917 out of scope. e.g. |
|
15918 |
|
15919 TInt ReadFile(const TDesC &aFile) |
|
15920 // |
|
15921 // Read a file |
|
15922 // |
|
15923 { |
|
15924 |
|
15925 TAutoClose<RFile> f; |
|
15926 TInt r=f.iObj.Open(aFile,KFileStreamText|EFileExclusive); |
|
15927 if (r!=KErrNone) |
|
15928 return(r); |
|
15929 TBuf_100 b; |
|
15930 if ((r=f.iObj.Read(b))!=KErrNone) |
|
15931 return(r); |
|
15932 ..... |
|
15933 } |
|
15934 |
|
15935 There is no need to call f.iObj.Close() as the compiler will do that |
|
15936 automatically when f goes out of scope. Even if the early return |
|
15937 after f.iObj.Read() is taken the compiler will still call |
|
15938 f.iObj.Close(). There is no overhead to using the TAutoClose class. |
|
15939 16).Added SetMax() to TDes which set the length of the TDes to |
|
15940 MaxLength(). i.e. equivalent to: |
|
15941 TBuf_100 b; |
|
15942 b.SetLength(b.MaxLength()); |
|
15943 17).Added TPtrC::Set(const TText *aBuf,TUint aLength) and |
|
15944 TPtr::Set(TText *aBuf,TUint aLength,TUint aMaxLength) |
|
15945 since assignment of a TPtrC is not supported and assignment |
|
15946 of a TPtr means a deep copy rather than a shallow copy. |
|
15947 18).Renamed the files E32DES8.INL and E32DES16.INL if E32DES8.H and |
|
15948 E32DES16.H |
|
15949 |
|
15950 Comp Date Bld .text .bss .rdata .data .idata Total |
|
15951 ===== ========= === ====== ====== ====== ====== ====== ====== |
|
15952 LWINS 17-Mar-95 37 822 32 1344 1092 268 2704 |
|
15953 EWINS 17-Mar-95 37 82484 560 6012 1156 2916 92568 |
|
15954 |
|
15955 .text = The code size (a good indication) |
|
15956 .bss = The uninitialized data size (a good indication) |
|
15957 .rdata = The const data size (a good indication) |
|
15958 .data = The initialized data size (a good indication) |
|
15959 .idata = C++ initialisation + .DLL export table (unreliable indication) |
|
15960 |
|
15961 The .idata section is unreliable since it has all .dll refences by name. |
|
15962 As .dll references will be by ordinal rather than by name I expect these |
|
15963 sizes to fall quite a bit. |
|
15964 |
|
15965 Note that the current conversion factor from VC++ to GC++ is multiply |
|
15966 by 1.16 |
|
15967 |
|
15968 NOTES |
|
15969 ===== |
|
15970 |
|
15971 1). I think that all the heap debug macros in e32std.h should be prefixed |
|
15972 with __ and should be moved to their own include file e32hdbg.h which |
|
15973 is included by e32def.h. I also removed the unnecessary spaces in |
|
15974 their declaration which have been added back in build 035. |
|
15975 2). The functions RHeapDebug() in the RHeap class look like constrcutors |
|
15976 which they are not. The should be declared as returning void and |
|
15977 should also be given a different name. There are a number of comments |
|
15978 in the RHeap class declaration which I have removed. |
|
15979 3). T_thread.cpp fails. Also this program was including the header file |
|
15980 k32kern.h so that is could call Plat::CurrentProcess() to get the |
|
15981 current process. It is a bad idea for any test programs to call any |
|
15982 function in the kernel. This won't be possible on any other platform. |
|
15983 The correct way to get the current thread or the current process is |
|
15984 just to use an RProcess() or RThread() constructor. i.e. |
|
15985 |
|
15986 if (RProcess().Mark()) |
|
15987 etc. |
|
15988 |
|
15989 if (RThread().Priority==EPriorityNormal) |
|
15990 RThread().SetPriority(EPriorityAboveNormal); |
|
15991 |
|
15992 This works because the constructor for an RProcess or RThread sets |
|
15993 the RThread or RProcess handle to a special token which means the |
|
15994 currrent process or the current thread. It does no have to be |
|
15995 opened or created in the normal way. |
|
15996 |
|
15997 Also the current process can be got from the current thread e.g. |
|
15998 |
|
15999 RThread().Process() |
|
16000 |
|
16001 P.S. This was covered in the release 26 release notes. |
|
16002 4). T_HEAPDB.CPP also includes k32kern.h (now k32std.h) so that it |
|
16003 can call Kern::UserHeap(). This is unnecessary as there is |
|
16004 already a call User::Heap() which returns the current heap. I have |
|
16005 fixed the test program. |
|
16006 5). T_I64.CPP still fails on divide. I will fix this in the next release. |
|
16007 |
|
16008 Version 0.01.036 |
|
16009 ================ |
|
16010 (Made by MartinB, 11 May 1995) |
|
16011 |
|
16012 1) New SetThreadAllocFail method in User (MartinH). |
|
16013 2) New macros in e32def.h (MartinH). |
|
16014 3) New Math functions and test code (MartinH), |
|
16015 4) New ASSERT_DEBUGs in RHeap::Alloc. |
|
16016 5) Removed User::SetWSAllocFail, since cannot have window server |
|
16017 dependencies in the base. |
|
16018 6) Improved region code (Lane). |
|
16019 7) Added several "long ptr" qualifiers in P_I64.CPP. MSVC was |
|
16020 treating constants as 16 bit values when moved into (say) |
|
16021 [ebx]. (MartinB). |
|
16022 |
|
16023 All test code runs for ASCII DEBUG and UNICODE DEBUG builds (MartinB) |
|
16024 (except T_I64 which does not run in UNICODE). |
|
16025 |
|
16026 Version 0.01.035 |
|
16027 ================ |
|
16028 (Made by MartinB, 9 May 1995) |
|
16029 |
|
16030 1) Fix to Mul routine in P_I64.CPP. |
|
16031 2) New region code from Steve/Lane. |
|
16032 3) New T_THREAD test code from MartinH. |
|
16033 4) New T_I64 test code from MartinH. |
|
16034 |
|
16035 All test code runs for ASCII DEBUG and UNICODE DEBUG builds (MartinB). |
|
16036 |
|
16037 Version 0.01.034 |
|
16038 ================ |
|
16039 (Made by Colly, 9 May 1995) |
|
16040 |
|
16041 1). In both versions of RSessionBase::SendReceive() the parameter |
|
16042 TAny *aPtr can be passed as NULL. |
|
16043 2). Converted the design E32 to make the categories Kernel, User and |
|
16044 Olib as units. This allows other designs to import these units. |
|
16045 3). Added to RChannelBase overloads for DoRequest() and DoControl() which |
|
16046 allow none, one or two arguments. |
|
16047 4). Added three functions to the TLex classes. |
|
16048 void SkipAndMark(TInt aNumber) which moves the mark along by aNumber. |
|
16049 TPtrC Remainder() which returns the remainder of the buffer after |
|
16050 the mark. |
|
16051 void Inc(TInt aNumber) which moves the pointer on by aNumber. |
|
16052 5). Added IMPORT_C TAny *operator new(TUint aSize,TUint anExtraSize) |
|
16053 to CBase. |
|
16054 6). I have removed the resource file stuff from Olib because I do not |
|
16055 want the base to have a dependency on the file system. Note that in |
|
16056 due course the file server like the window server will live in its own |
|
16057 group and is only included with E32 for convenience while I develop |
|
16058 it. The file server is already completely independent of the operating |
|
16059 system. |
|
16060 I suggest that we have two DLLs called something like HCILI and HCILU. |
|
16061 HCILI would contain user interface independent code and HCILU would |
|
16062 have user interface dependent code. Then a getbld can go something like |
|
16063 this: |
|
16064 |
|
16065 GET E32 // The base |
|
16066 GET F32 // The file server |
|
16067 GET W32 // The window server |
|
16068 GET HCIL // Both HCIL DLLs |
|
16069 |
|
16070 I originally intended to supply the base as 3 DLLs, i.e. |
|
16071 E32KERN.DLL,E32USER.DLL and E32OLIB.DLL I now intend to supply it as |
|
16072 just two merging E32OLIB.DLL and E32USER.DLL into E32USER.DLL. For |
|
16073 those who are fond of the name OLIB I am quite happy to relinquish |
|
16074 the name and HCILI.DLL could be OLIB.DLL. But OLIB is a funny name |
|
16075 as it stands for Object library which is strange since all libraries |
|
16076 are now object libraries. Maybe its time for OLIB to just disappear. |
|
16077 7). In messages associated with a RSubSession the handle was being passed |
|
16078 in P1(). This was not the best option so I have now changed it to P4(). |
|
16079 Note that for a SubSessionCreate message a descriptor is passed in P4() |
|
16080 rather than P1() which a server should use to write back the handle |
|
16081 of the sub session. See \e32\swinsd\ws_main.cpp for an example of the |
|
16082 approriate code. |
|
16083 8). Added Math::Rand(TInt64 &aSeed). This returns a random number in the |
|
16084 range 0 to KMaxTInt (i.e. positive) and updates the seed. |
|
16085 9). Renamed the operating systems Segment to Chunk to avoid confusion on |
|
16086 80x86 platforms with segment registers. Thus RSegment has become |
|
16087 RChunk and User::SegmentHeap has become User::ChunkHeap. |
|
16088 10). The function Test::Next() was assuming a zero terminated string. Fixed. |
|
16089 11). RProcess::CommandLine() was not getting the full command line. Fixed. |
|
16090 |
|
16091 NOTES |
|
16092 ===== |
|
16093 |
|
16094 1). MartinB. Surely HufEncode should belong to class TDes and convert its |
|
16095 argument a TDesC into the TDes rather than belong to TDesC. As well |
|
16096 don't we need a second version of HufDecode called something like |
|
16097 HufDecodeInPlace which will do a decode in place on a TDes since |
|
16098 this is what the resource system does currently. Finally should we |
|
16099 not make a 32 bit version of the resource compiler. |
|
16100 2). There is a #define test in E32TEST.H. All #defines should be in |
|
16101 upper case. |
|
16102 3). Why does RRegion have a virtual destructor, a Close() and a |
|
16103 Destroy(). I suspect that the destructor should go. |
|
16104 4). In TOLIB t_ctimer.cpp and t_cact.cpp both have a #include to |
|
16105 \e32\olib\o_std.h. This is not correct! |
|
16106 5). In TUSER t_heapdb.cpp has a dependency on the window server header |
|
16107 file and in fact uses the window server. This is definitely |
|
16108 incorrect? |
|
16109 6). Can everyone try and make an effort before releasing E32 that |
|
16110 all projects are left in the DEBUG build and that all test |
|
16111 programs do not have windows open and breakpoints left enabled. |
|
16112 |
|
16113 Version 0.01.033 |
|
16114 ================ |
|
16115 (Made by MartinB, 4 May 1995) |
|
16116 |
|
16117 1) Changed jcxz to a jecxz in P_I64.CPP (!!!) |
|
16118 2) Fixed some alloc heaven in CArrayVarBase::Delete. |
|
16119 3) Improved T_RSC test code. |
|
16120 4) Added MaxSize() to TDes. |
|
16121 5) New RRegion code from Steve. |
|
16122 6) Loads of test code from MartinH. |
|
16123 7) Note u_heap.cpp temporarily includes <stdlib.h> (for |
|
16124 random number generators) for heap alloc failure testing. |
|
16125 This is a temporary measure until the real file handling an |
|
16126 random number generation becomes available. |
|
16127 8) T_HEAPDB requires window server to run (since it tests for window |
|
16128 server heap failure). |
|
16129 |
|
16130 All test code runs for ASCII DEBUG and UNICODE DEBUG builds (MartinB). |
|
16131 |
|
16132 |
|
16133 Version 0.01.032 |
|
16134 ================ |
|
16135 (Made by MartinB, 26 April 1995) |
|
16136 |
|
16137 1) Added a new CResourceFile class (and its superclass CFile). CFile |
|
16138 uses standard C files as a temporary measure until Colly |
|
16139 releases the real filing system. |
|
16140 2) Added a KErrFile const to go with the above. Again a temporary |
|
16141 measure. |
|
16142 3) CResourceFile reads resource files produced using our resource |
|
16143 compiler. (S_.RSC and S_.RZC were used in the test code, and |
|
16144 form part of the release of the test code). Note that |
|
16145 CResourceFile also reads compressed resource files. This |
|
16146 meant that: |
|
16147 4) Added Huffman compression for TDes16. Actually this does not |
|
16148 quite work yet, one or two of the test cases are #ifdefed out |
|
16149 in the UNICODE build. However it is 90% there and I have a |
|
16150 good idea of what the problem is (its to do with the unused |
|
16151 byte at the end when the descriptor compresses to an odd number of |
|
16152 bytes). |
|
16153 5) New test code from MartinH. |
|
16154 6) Minor fixes to threads from Colly/MartinH. |
|
16155 |
|
16156 NOTES |
|
16157 ===== |
|
16158 |
|
16159 1) Should we have a TDes::MaxSize() function? |
|
16160 |
|
16161 2) All test code runs for ASCII DEBUG and UNICODE DEBUG builds, except |
|
16162 T_RSC does not run in UNICODE. |
|
16163 |
|
16164 |
|
16165 Version 0.01.031 |
|
16166 ================ |
|
16167 (Made by Colly, 18 April 1995) |
|
16168 |
|
16169 1). Changed KEventPending to KRequestPending. |
|
16170 2). Made CActiveScheduler::Start() call the virtual function |
|
16171 WaitForAnyRequest(). |
|
16172 3). Fixed ..\rel\ewinsdb.prj to release the estat*.pdb files |
|
16173 rather that wwins*.pdb files. |
|
16174 4). When a thread had an exception or was killed, terminated or |
|
16175 panicked, execution unfortunately continued. Fixed. |
|
16176 5). Added a function User::Dying() which is called by all the kernel |
|
16177 functions just before they kill,terminate,except or panic a thread |
|
16178 or process. This is a very good place for a breakpoint when |
|
16179 debugging. It will catch everything. |
|
16180 6). Added support to dynamically load a DLL and then lookup functions |
|
16181 in the DLL. See class RLibrary. |
|
16182 7). Added support for device drivers. See User::LoadDevice() and |
|
16183 User::FreeDevice() as well as the example device driver in |
|
16184 \e32\swinsd\d_timer.mak and its test program \e32\swinsd\t_devc.mak. |
|
16185 8). Added a constructor to all TFindHandle derived classes to allow |
|
16186 initialisation with the find string. |
|
16187 9). Converted the rose designs to rose 2.525 |
|
16188 |
|
16189 NOTES |
|
16190 ===== |
|
16191 |
|
16192 1). The fact that CActiveScheduler::Start() is static is no reason why |
|
16193 the virtual function WaitForAnyRequest() cannot be called. Just use |
|
16194 the static pointer to the scheduler: |
|
16195 theActiveScheduler->WaitForAnyRequest() |
|
16196 |
|
16197 All test code runs for ASCII DEBUG and UNICODE DEBUG builds (MartinB). |
|
16198 |
|
16199 |
|
16200 Version 0.01.030 |
|
16201 ================ |
|
16202 (Made by Colly, 12 April 1995) |
|
16203 |
|
16204 1). Removed the virtual destructor in CBase. Added vitrual void Destroy(). |
|
16205 CBase::Destroy() now calls delete this. It is now generally necessary |
|
16206 to call the base classes Destroy() in order to get proper destruction |
|
16207 of the object. Note that the DeleteAll methods in TDblQue and TSglQue |
|
16208 only work if the objects on the queue are derived from CBase. Added |
|
16209 a static function Olib::Destroy(CBase *anObject) which will only |
|
16210 destroy the object if anObject is not NULL. |
|
16211 2). Added a static function: |
|
16212 CActiveScheduler * CActiveScheduler::Current(); |
|
16213 which return the currently installed active scheduler. |
|
16214 3). In RSubSession::CreateSubSession() was not passing as P1() in the |
|
16215 message the address of the reply so that the subsession handle could |
|
16216 be returned by the server. |
|
16217 4). Creating a semaphore with an initial count other than 0 did not set |
|
16218 the internal count with the initial count although the Windows/NT |
|
16219 semaphore was being set correctly. The same bug applied to Mutexes. |
|
16220 5). When a process was dying its access count was not being decremented |
|
16221 so that if no handles were outstanding the object was not being |
|
16222 destroyed. |
|
16223 6). CObjectIx::Add() and CObjectCon::Add() were closing the object being |
|
16224 added if the add failed. This proves to be unhelpful so they have |
|
16225 been changed to just fail and not do the close. |
|
16226 7). Added the following functions to RThread and RProcess to determine |
|
16227 the reason a thread or process exited. |
|
16228 IMPORT_C TExitType ExitType() const; |
|
16229 IMPORT_C TInt ExitReason() const; |
|
16230 IMPORT_C TName ExitCategory() const; |
|
16231 8). The design of the CPeriodic class made it unusable. This has now been |
|
16232 changed so that the New functions add the active object to the |
|
16233 scheduler. Start() is now defined as: |
|
16234 |
|
16235 void Start(TInt aDelay,TInt anInterval, |
|
16236 TPeriodicCallBack aCallBack,TAny *aPtr); |
|
16237 |
|
16238 which allows a CPeriodic to be restarted after it has been cancelled. |
|
16239 StartL() has been dropped since Start() is void. |
|
16240 There was also a bug in the RunL() method in that it issued the callback |
|
16241 and then requested the next timer. It should request the next timer and |
|
16242 then issue the callback. |
|
16243 |
|
16244 The following merged in by MartinB: |
|
16245 |
|
16246 9) Removed double definition of TText8 and TText16 form e32def.h |
|
16247 10) Moved enclosing #endif (matched to #if !defined(__E32DEF_H__)) to |
|
16248 end of e32def.h. |
|
16249 11) Changed make files so that .PDB files are built into \e32sys. |
|
16250 12) Added virtual WaitForAnyRequest to CActiveScheduler. This is not |
|
16251 called from Start, however, since Start is a static function. |
|
16252 After discussion with DW I retained User::WaitForAnyRequest |
|
16253 in Start, until we have time to discuss which functions |
|
16254 should be static. |
|
16255 13) Changed KErrPending to KEventPending. |
|
16256 |
|
16257 |
|
16258 Version 0.01.029 |
|
16259 ================ |
|
16260 (Made by Martin, 3 April 1995) |
|
16261 |
|
16262 1) New alloc testing code does not include filename and lineno |
|
16263 (MartinH). |
|
16264 2) New SglQue test code (DougF). |
|
16265 3) New test code (JalP). |
|
16266 4) Move common functionality of TKeyArrayFix and TKeyArrayVar into |
|
16267 TKey (JalP). |
|
16268 5) Fix to TEnter (DavidW). |
|
16269 |
|
16270 All test code runs for ASCII DEBUG and UNICODE DEBUG builds. |
|
16271 |
|
16272 |
|
16273 Version 0.01.028 |
|
16274 ================ |
|
16275 (Made by Colly, 22 Mar 1995) |
|
16276 |
|
16277 1). Definitely the last name changes for the descriptor and buffer classes. |
|
16278 Old Name New Name |
|
16279 ======== ======== |
|
16280 TDesC TDesC |
|
16281 TDes TDes |
|
16282 TBufBase TBufCBase |
|
16283 TBuf TBufC |
|
16284 HBuf HBufC |
|
16285 TDesR TPtrC |
|
16286 TDesW TPtr |
|
16287 TBufW TBuf |
|
16288 |
|
16289 Note that the function: |
|
16290 TDesW DesW() |
|
16291 in TBufBase has now been renamed: |
|
16292 TPtr Des() |
|
16293 Its helpful to consult the Rose class diagram to see why these names |
|
16294 are sensible. |
|
16295 2). Took Steve's new region code. |
|
16296 3). Added the missing #defines for __TEST_INVARIANT. |
|
16297 4). Changed the graphics window to position to 10,10. |
|
16298 5). Fixed the re-entrancy bug with UserWindowServer::Request(). |
|
16299 6). Added the fix to stop the beep on ALT + char. |
|
16300 7). Added the code for User::Abort() and User::Exit(). |
|
16301 8). User::Panic() was panicking the process and not the current thread |
|
16302 making it impossible to run test threads to see if they panic. |
|
16303 |
|
16304 All the test code passes under the DEBUG build. |
|
16305 |
|
16306 NOTES |
|
16307 |
|
16308 1). The virtual destructor in CActive is calling the virtual DoCancel |
|
16309 which since the destructor is running at the CActive level has |
|
16310 no method to call as its pure virtual. The only reasonable solution |
|
16311 is to introduce a virtual Destroy() function to CBase() which can |
|
16312 do the necessary cleanup and then do the delete. |
|
16313 2). Many of the test programs do not have a standard comment header. |
|
16314 One did not even have a header. This is just careless. |
|
16315 I have fixed them all. |
|
16316 3). Many people when declaring an enum leave a comma on the last |
|
16317 declaration which is untidy. |
|
16318 4). A number of people are decalring automatic variables with capital |
|
16319 letters. Please avoid this practice. |
|
16320 |
|
16321 |
|
16322 Version 0.01.027 |
|
16323 ================ |
|
16324 (Made by Martin, 16 Mar 1995) |
|
16325 |
|
16326 1) Changed TBuf to TBufW, TLcb to TBuf and TLcbH to HBuf. |
|
16327 2) Fixed .lnk files so test code works if built from command line |
|
16328 (Duncan). |
|
16329 3) New T_REF test code (Jal). |
|
16330 4) Added previously missing RRef<T>::AllocL to e32std.inl (Jal). |
|
16331 5) Fixed bug in RRefBase::DoAlloc (Jal). |
|
16332 6) Added invariant to TDateTime (Gill). |
|
16333 7) Improved T_DATE test code (Gill). |
|
16334 8) Improved T_KEY test code (MartinH). |
|
16335 9) Fix to heap checking code (MartinH). |
|
16336 10) Changed T_QUE to use V classes (rather than S classes) (Doug). |
|
16337 11) Made iInterval protected (was private) in CPeriodic (at Steve's |
|
16338 request). |
|
16339 12) This release contains a zip file release (in s:\e32\zip) so that |
|
16340 users should not need to build E32. Only the ASCII DEBUG |
|
16341 version has been released. |
|
16342 |
|
16343 All test code (ASCII DEBUG) can now be built and run from the command line |
|
16344 (except T_HEAPDB). |
|
16345 |
|
16346 Actions: |
|
16347 |
|
16348 1) Now that C classes rely on zero filling for initialisation their |
|
16349 definitions MUST be changed so that they cannot be declared on the |
|
16350 stack. |
|
16351 2) MartinH to fix T_HEAPDB. |
|
16352 3) Steve to complete transformation of CRegion to RRegion. |
|
16353 4) MartinB to complete (or remove) Huffman encoding (did not have |
|
16354 time to do it this release). |
|
16355 5) T_ARRAY and T_VARRAY need more test.Start() and test.Next() |
|
16356 messages (Jal). |
|
16357 6) Many classes still have no __TestInvariant methods (All). |
|
16358 7) CBufSeg has a test class defined under #if defined(_DEBUG) (Jal). |
|
16359 |
|
16360 |
|
16361 Version 0.01.026 |
|
16362 ================ |
|
16363 (Made by Colly, 11 Mar 1995) |
|
16364 |
|
16365 1). Added an operator new() to class CBase which fills memory with zeroes |
|
16366 so that most constructors need do nothing. Note that a constructor |
|
16367 is still required in order to set the name of the class in debug |
|
16368 builds. |
|
16369 2). Changed the RProcess::FileName() and RProcess::CommandLine() functions |
|
16370 to return their result rather than take an them as reference args. |
|
16371 3). Added RHandleBase::Duplicate(RProcess aSrc) which allows a handle from |
|
16372 another process to be duplicated in the current process. This is also |
|
16373 the mechanism by which the pseudo handles for the current thread and |
|
16374 the current process to be turned into real handles. i.e. |
|
16375 |
|
16376 RThread self; |
|
16377 self.Duplicate(RProcess()); |
|
16378 |
|
16379 Note that you will now need to call self.Close() at some stage since |
|
16380 the resource must be freed. |
|
16381 |
|
16382 In case you have missed the examples in ..\tuser\t_kern.cpp |
|
16383 instantiating a RThread or RProcess by default give handles to the |
|
16384 current thread and current process respectively. i.e. |
|
16385 |
|
16386 RThread().Name() will return the current threads name. |
|
16387 |
|
16388 These objects use a pseudo handle since it is not possible to close |
|
16389 these handles since if you could close them they would have to |
|
16390 delete the current thread or current process. Since these are pseudo |
|
16391 handles passing them to another process will not work as in the other |
|
16392 process they will also mean the current process and current thread. |
|
16393 Duplicate overcomes this problem since it gives a real handle to |
|
16394 either the current thread or the current process. |
|
16395 4). Added the RThread::Logon(),RThread::LogonCancel(),RProcess::Logon() |
|
16396 and RProcess::LogonCancel() functions. |
|
16397 5). Cleanup on Thread termination by the kernel now implemented. |
|
16398 6). RThread::Kill(),RThread::Exit(),RProcess::Kill() and RProcess::Exit() |
|
16399 implemented fully. |
|
16400 7). Changed Plat::Panic() and Plat::Fault() to always use the desktop |
|
16401 window for the messagebox. |
|
16402 8). Changed to build options for all variants. Everyone should make a new |
|
16403 .MAK file from T_KERN.MAK as a prototype. Presumably the tool sets |
|
16404 will have to be updated to reflect these changes. Also fixed a number |
|
16405 of link failures which had crept into the system. |
|
16406 9). Note that because of the use User::SetVaArgList() the optimisation |
|
16407 in the release versions to drop stack frames cannot be used. |
|
16408 10). The definition of the private class TLink in CBufSeg is a waste |
|
16409 of space in the headers. So I have declared a forward reference |
|
16410 to the class TBufSegLink and then only need the actual declaration |
|
16411 and implementation in O_BUF.CPP. |
|
16412 |
|
16413 The following merged in by MartinB: |
|
16414 |
|
16415 11) Uses new toolsets (use TOOLS WINS and TOOLS WINSD to get them). |
|
16416 12) New T_DES test code. (From Duncan). |
|
16417 13) Fixed integer compares in TKeyArrayFix and TKeyArrayVar. (From |
|
16418 Jal). |
|
16419 14) Fixed bug in CArrayFixBase::InsertISQ. (From Jal). |
|
16420 15) Added classes: TSglQueLink, TSglQueBase, TSglQue, TSglQueIterBase |
|
16421 and TSglQueIter. (From Colly). (No test code yet). |
|
16422 16) Added classes: RRefBase and RRef. (From Colly). (No test code |
|
16423 yet). |
|
16424 17) Added Alloc functions that take a size parameter to RRef classes |
|
16425 (at Jal's request). |
|
16426 18) Added __TEST_INVARIANT macro to e32std.h. (from MartinH). |
|
16427 19) Added MartinH's heap checking code. Note took some functions |
|
16428 even though they were not commented - they will be commented for next |
|
16429 release. |
|
16430 20) Took keycode code from DavidB. NOTE: P_STDKEY.CPP still contains |
|
16431 some numbers that should be converted to symbolic constants. |
|
16432 21) Small changes to code in winsd from Steve. |
|
16433 22) Changed User::MemSwap in u_func.cpp so that it does not swap if |
|
16434 memory locations are identical. There is an argument to do |
|
16435 this in the compare routines as well. |
|
16436 23) Moved region to e32std.h and called it RRegion. Steve will implement it as |
|
16437 a proper 'R' in a subsequent release. |
|
16438 |
|
16439 ASCII Debug version only was tested. |
|
16440 |
|
16441 All test code passes except T_QUE which fails on DeleteAll. Note |
|
16442 that |
|
16443 |
|
16444 T_HEAPDB, T_ARRAY, T_CACT, T_VARRAY fail when built from the command |
|
16445 line. |
|
16446 |
|
16447 Version 0.01.025 |
|
16448 ================ |
|
16449 (Made by MartinB, 7 Mar 1995) |
|
16450 |
|
16451 1) From Gillian: New TDateTime code. |
|
16452 Changed DateAsString() to Format(). |
|
16453 Removed 3 unnecessary Add() functions. |
|
16454 Ammended t_time.cpp test code. |
|
16455 Renamed u_time.cpp to u_date.cpp (to lessen confusion with |
|
16456 timer code). |
|
16457 2) From Jal: Bug fix in CBufSeg::Delete() method. New test code. |
|
16458 3) From Duncan: mnt.cmd altered to build math functions and test code. |
|
16459 4) From Duncan: Updated all .lnk files for test code, so that they are built as |
|
16460 windows rather than console applications. |
|
16461 5) From Duncan: Introduced bld.prj in SMATH: this contains all the buildable math |
|
16462 routines (there are some .cpp files in li.prj that have not yet |
|
16463 been converted to E32). |
|
16464 6) From Duncan: Introduced bld.prj in SWINSD: this contains all the buildable cpp |
|
16465 files (there are some .cpp files in li.prj that have not yet |
|
16466 been converted to E32). |
|
16467 7) From Doug: Removed DEBUG friend declarations from Que classes. |
|
16468 8) From Jal: New CRefCountBase and CRefCount classes added to Olib. |
|
16469 9) From MartinH: New TKeyArrayCmpNumeric comparision types for |
|
16470 TKeyArrays. Ammended T_KEY test code. |
|
16471 10) From MartinH: Ammended T_ACT test code. |
|
16472 11) From DavidW: new T_VERSION test code. |
|
16473 12) Minor fixes to test code. |
|
16474 |
|
16475 All ASCII DEBUG test code runs. There is one anomally: T_COBJ runs |
|
16476 fine if build inside VC++ but panics with a user panic of 37 if built |
|
16477 from the command line. It was getting late so I decided not to track |
|
16478 this one down. |
|
16479 |
|
16480 Version 0.01.024 |
|
16481 ================ |
|
16482 (Made by Colly, 1 Mar 1995) |
|
16483 |
|
16484 1). Renamed TPackage to TPckgBuf which packages an object in a TBuf8 and |
|
16485 added TPckgC which packages in a TDesR8 and TPckg which packages in |
|
16486 a TDesW8. |
|
16487 2). Added new Panic function to RMessage which panics the client and |
|
16488 frees the message as well as one to CSession which just panics the |
|
16489 client. This is necessary as the Client() functions return a const |
|
16490 RThread & on which Panic cannot be called. |
|
16491 3). Noticed that Convert(const TDesC &aDes,...) would not work properly |
|
16492 as taking the address of aDes on the stack would fail. Changed to |
|
16493 use the User::SetVaArgList() function. Also removed the version |
|
16494 of Convert which took a string as an argument. Fixed the test |
|
16495 code accordingly. |
|
16496 4). My code in the example window server client side code was being very |
|
16497 naughty and assuming that all arguments were being passed on the |
|
16498 stack (TRUE for VC++, but not TRUE for GCC ARM code generation). Fixed. |
|
16499 5). Removed the function numbers from the RWindowServerBase class as |
|
16500 they can be entirely private. |
|
16501 6). The platform code to get system time was not subtracting 1 from the |
|
16502 day so TDateTime was correctly panicking the kernel on 28 Feb since |
|
16503 it was trying 29 Feb. |
|
16504 |
|
16505 Version 0.01.023 |
|
16506 ================ |
|
16507 (Made by Colly, 27 Feb 1995) |
|
16508 |
|
16509 1). Moved the region code to SUSER in the file U_REGN.CPP. Moved the |
|
16510 test code from TOLIB to TUSER. |
|
16511 2). The OLIB CServer class was deleting the server object on disconnect |
|
16512 rather than the CSession. Fixed some other bugs as well. |
|
16513 3). Renamed CActive::Run() to CActive::RunL() to indicate that it may |
|
16514 leave. |
|
16515 4). Renamed CServer::Service() to CServer::ServiceL() to indicate that |
|
16516 it may leave. |
|
16517 5). Renamed CServer::NewSession() to CServer::NewSessionL() to indicate |
|
16518 that it may leave. |
|
16519 6). Added the TInt64 class and a number of the maths functions. See |
|
16520 \e32\inc\e32math.h. |
|
16521 7). Completely changed the whole scheme for E32 programs from being |
|
16522 console based to being GUI based. Test programs will write to |
|
16523 a normal Windows/NT console and the GUI window will be ignored. |
|
16524 All GUI programs now need to link with a window server library, |
|
16525 i.e. one of wwins,wwinsd,wwinsu,wwinsud. See the make file in |
|
16526 \e32\tuser\t_gui.mak. |
|
16527 A basic window server which just provides console services can be |
|
16528 found in swinsd in the project wwins.mak until Steve can get his |
|
16529 window server running. |
|
16530 All programs now use: |
|
16531 GLDEF_C TInt E32Main() |
|
16532 for the main program instead of main(). |
|
16533 The functions for the basic window server and console are in header |
|
16534 \e32\inc\e32wsrv.h. Steve will provide these and extended functions |
|
16535 by subclassing these in his Window server library. |
|
16536 8). Added a variant to RThread::Read() which allows an offset to be |
|
16537 specified withing the descriptor to allow reading in smaller chunks |
|
16538 in case the user sends over a huge chunk of data. |
|
16539 9). Added the TEvent class and various functions all of which are |
|
16540 only for a Window server. I will discuss these with Steve directly. |
|
16541 The data is in \e32\inc\e32evnt.h. |
|
16542 10). The CArray classes were leaving in their constructors. Fixed by |
|
16543 delaying allocation of the CBufBase till an insert. Increased |
|
16544 the error checking. |
|
16545 11). The kernel was not doing unicode properly since UNICODE was |
|
16546 not defined in \e32\swins\p_std.h before windows.h was included. |
|
16547 12). Added TDes8::Copy(const TDesC16 &aRef) and |
|
16548 TDes16::Copy(const TDesC8 &aBuf) conversions between 8 and 16. |
|
16549 |
|
16550 Notes: |
|
16551 |
|
16552 Many of the test programs were not keeping test.Start() and |
|
16553 test.End() in balance. |
|
16554 In U_TIME.CPP the unicode build was disabled because Gillian |
|
16555 was using a TLex8 instead of a plain TLex8. I also not that |
|
16556 the API for DateAsString takes the format string as a pointer |
|
16557 and not as a reference. Also the name of the function should |
|
16558 surely be Format(). |
|
16559 |
|
16560 Version 0.01.022 |
|
16561 ================ |
|
16562 (Made by Martin, 17 Feb 1995) |
|
16563 |
|
16564 1) Fixed construction of TLex over strings. |
|
16565 2) New time class from Gillian. |
|
16566 3) Fixed t_buf,t_bflat and t_bseg test code from Jal. |
|
16567 4) Fixed t_lex test code from MartinH. |
|
16568 5) Changed CRegion to RRegion (after consultation with Steve). |
|
16569 6) NOTE: the TDateTime::DateAsString function fails to build under |
|
16570 unicode. |
|
16571 7) K_MES.CPP does not build under UNICODE, search for !!! string to |
|
16572 find where. |
|
16573 |
|
16574 Note that there are new wins and winsd toolsets and a new version of |
|
16575 EPR. Get these by doing |
|
16576 TOOLS WINS |
|
16577 TOOLS WINSD |
|
16578 in the usual way. |
|
16579 |
|
16580 Version 0.01.021 |
|
16581 ================ |
|
16582 (Made by Colly, 16 Feb 1995) |
|
16583 |
|
16584 1). In TUSER t_buf,t_lex do not compile. |
|
16585 2). In TOLIB t_bflat,t_bseg do not compile. |
|
16586 3). In TOLIB t_cact,t_cobj compile but fail. Note t_cact was t_creq. |
|
16587 4). Made the kernel platform function Plat::SetVaArgList(VA_LIST &aList) |
|
16588 public in class User. This function was written assuming the argument |
|
16589 const TDesC &aFmt was the first argument. Using it in |
|
16590 Test::Panic(TInt anError,const TDesC &aFmt |
|
16591 would not work correctly. Changed this function to take a second |
|
16592 argument which says how many bytes to skip before the |
|
16593 const TDesC &aFmt argument. For Test::Panic this is 4 and 0 |
|
16594 for all other uses. |
|
16595 5). Renamed CRequester to CActive and CRequestManager to CActiveScheduler. |
|
16596 6). Renamed all T classes which require closing to free their resources |
|
16597 to R classes. I have not renamed CRegion to RRegion in this release |
|
16598 but would propose that we do this (Steve?). |
|
16599 7). Added User::At() and User::After() to put the current process to |
|
16600 sleep for relative and absolute time repectively. These are sync |
|
16601 functions. |
|
16602 8). Implemented the RMessage, RServer and RSessionBase classes and added |
|
16603 the Olib classes CServer and CSession. See the T_SVR.CPP test code |
|
16604 to see how these are used. |
|
16605 9). Renamed t_req.* in TOLIB to t_act.* |
|
16606 10). Added the template class TPackage<T> which will package any type |
|
16607 T in a TBuf<sizeof(T)>. Note the -> and () operator overloading. |
|
16608 |
|
16609 TPackage<TVersion> v; |
|
16610 v->iMajor |
|
16611 v().iMajor |
|
16612 |
|
16613 This is most useful for passing and receiving non TDesC arguments |
|
16614 to a server so that the server can subsequently read/write to it. |
|
16615 11). Added the minimum,maximum values for all integers in e32std.h look |
|
16616 for KMaxTInt8 etc. |
|
16617 |
|
16618 Queries |
|
16619 ------- |
|
16620 |
|
16621 1). Are we going to implement a 16 bit version of Hufman coding. If not |
|
16622 then we cannot have this functionality as there cannot be a difference |
|
16623 between 8 and 16 bit character versions as far as functionality goes. |
|
16624 2). Someone put #ifdef UNICODE into one of the files in swins. This is |
|
16625 wrong and should have been #if defined(_UNICODE). Although Microsoft |
|
16626 are confused we should always use the _UNICODE form. |
|
16627 3). I think we should rename User::Check and User::Available to have |
|
16628 Heap in their name somewhere. |
|
16629 |
|
16630 Version 0.01.020 |
|
16631 ================ |
|
16632 (Made by MartinB, 15 Feb 1995) |
|
16633 |
|
16634 1) Removed (most) string functions from descriptors. |
|
16635 2) Fixed bug in unicode Printf. |
|
16636 3) Time class changed to DateTime. |
|
16637 4) Made some queue parameters constant. |
|
16638 5) Tidied up some of the Locale code. |
|
16639 6) Tidied up mnt.bat and renamed it to mnt.cmd. |
|
16640 7) Fixed Format for %S in descriptors. |
|
16641 8) Added Huffman coding to TDesC8 (finally). |
|
16642 9) Added some DateTime validation routines. |
|
16643 10) Removed SetActive and SetInActive functions from CRequestors. |
|
16644 11) Fixed most test code to run with the new descriptors, but there |
|
16645 was too much to do for some (ie t_buf, t_lex, t_bflat). |
|
16646 |
|
16647 Version 0.01.019 |
|
16648 ================ |
|
16649 (Made by Colly, 7 Feb 1995) |
|
16650 |
|
16651 1). Added the new TTimer concrete data type (CDT). |
|
16652 2). Added the OLIB classes CRequestManager and CRequester. |
|
16653 3). Added the OLIB requesters CTimer and CPeriodic. |
|
16654 4). UNICODE needs to be defined as well as _UNICODE. |
|
16655 5). Fixed a bug in TDblQueIter where neither the inc or dec operators |
|
16656 returned NULL at the end of the queue. Changed the test code to deal |
|
16657 with this. Note that if the iterator is positioned at the end of the |
|
16658 queue it will also return NULL when being casted. |
|
16659 6). Fixed a bug in the TDes::Format(const TDesC &aDes) functons which |
|
16660 when try to set up the VA_LIST were taking the address of aDes and |
|
16661 getting it rather than the expected address of the argument on the |
|
16662 stack. Fixed by using the new User::SetVaArgList() function. The |
|
16663 test code is not testing this part of the code. |
|
16664 7). Added the new static time validation functions to User. |
|
16665 8). The User::WaitForRequest() type functions are now operational. |
|
16666 9). Added the device driver code. Still to write a test device driver |
|
16667 but this will probably be a console device. |
|
16668 10). Changed all the kernel classes to be D something rather than C |
|
16669 something to avoid name clashes with OLIB. |
|
16670 11). Changed the CObject class to allocate the name of the resource so |
|
16671 that NULL can be used to indicate an unnamed object. This has |
|
16672 changed the API's for some of the CreateLocal functions to no |
|
16673 longer require a name, i.e. TSemaphore::CreateLocal(). |
|
16674 12). Changed all the API's to the kernel to use const TDesC& rather |
|
16675 than const TName& etc. |
|
16676 13). All tests pass in non-unicode debug. |
|
16677 |
|
16678 Version 0.01.018 |
|
16679 ================ |
|
16680 (Made by MartinB, 3 Feb 1995) |
|
16681 |
|
16682 1) Improvements to MartinH's test code. |
|
16683 2) Uses new format link files (so needs new tools release). |
|
16684 3) Incorporates Duncan's test code. |
|
16685 4) Improvements to Strings in test code (ie _TL macro). |
|
16686 5) Removed most of the #if defined(_DEBUG) stuff from include files, |
|
16687 but not for the friend classes. Working on a plan for this though. |
|
16688 6) Fixed T_VARRAY .MAK file (was building T_ARRAY). |
|
16689 7) This is a consolidation release. |
|
16690 |
|
16691 Version 0.01.017 |
|
16692 ================ |
|
16693 (Made by Colly, 26 Jan 1995) |
|
16694 |
|
16695 1) Integrated the changes in preparation for device drivers. |
|
16696 2) Note that the #if defined(_DEBUG) stuff for queues in the |
|
16697 headers is unacceptable. |
|
16698 3) Note that I am not confident of the enumerate for EAllowDuplicates |
|
16699 nor the provision of default parameters. |
|
16700 |
|
16701 Version 0.01.016 |
|
16702 ================ |
|
16703 (Made by MartinB, 24 Jan 1995) |
|
16704 All test code passes. (But have not tried UNICODE build). |
|
16705 |
|
16706 Now builds with 32bit EBLD. To get this type |
|
16707 |
|
16708 TOOLS ETSET |
|
16709 TOOLS WINS |
|
16710 TOOLS WINSD |
|
16711 |
|
16712 You can then do MNT BLD etc from the command line. |
|
16713 |
|
16714 1) Added _S macro and changed _L macro in preparation for removing |
|
16715 strings from descriptors. Changed code to use _S and _L so that |
|
16716 strings could be easily removed in next release. |
|
16717 2) Took T_TKEY test code from MartinH. |
|
16718 3) Removed Free from CBuf class. |
|
16719 4) Minor bug fixes here and there. |
|
16720 5) Took Que code from Douglas |
|
16721 |
|
16722 Version 0.01.015 |
|
16723 ================ |
|
16724 (Made by Colly, 18 Jan 1995) |
|
16725 |
|
16726 1). Made the final re-organisation to the descriptors and introduced |
|
16727 the new derived class TDesR. Note that TDesC and TDes are real |
|
16728 abstract base classes as they cannot be directly instantiated. |
|
16729 (They have no contructors). Note that functions like Mid(),Left() |
|
16730 etc. now return a TDesR. |
|
16731 |
|
16732 Added the template TLcb class. This class is intended for use |
|
16733 as a member of a struct or class since it needs the minimum |
|
16734 storage space. |
|
16735 |
|
16736 This is similar to the TBuf class except that it is a length |
|
16737 followed by the buffer, i.e. no max length. Thus apart from |
|
16738 assigning to it and behaving as a TDesC a TLcb cannot be |
|
16739 manipulated as it was a TDes. However help is at hand since there |
|
16740 is a function DesW() which return a writeable descriptor through |
|
16741 which a TLcb can be manipulated in the same was as a TBuf. i.e. |
|
16742 |
|
16743 TLcb<KMaxName> b; |
|
16744 b=_L(" Some spaces"); |
|
16745 b.TrimLeft(); // This will fail. |
|
16746 b.DesW().TrimLeft(); // This will work fine. |
|
16747 b.DesW().UpperCase(); |
|
16748 |
|
16749 If a lot of write operations are to be performed on the TLcb then |
|
16750 it is more efficient to take a copy of the TDesW. i.e. |
|
16751 |
|
16752 TDesW w=a.DesW(); |
|
16753 |
|
16754 Note that there is no public constructor on TDesW for a TLcb |
|
16755 directly as it would need you to pass the maximum length as well |
|
16756 which is best left to the template to do on your behalf. |
|
16757 |
|
16758 If a function needs a writeable descriptor then just pass b.DesW() |
|
16759 and all will be well. |
|
16760 |
|
16761 As a last final thing for descriptors I have added one final class |
|
16762 TLcbH (H stands for heap). A TLcbH has the property that the TDesW |
|
16763 returned by DesW() has its iMaxLength set to the size of the alloc |
|
16764 cell - sizeof(TUint). A fine feature of this is that the length of |
|
16765 an alloc cell which is always present can now be used to good |
|
16766 purpose. It is also possible to call the TLcbH member functions |
|
16767 ReAlloc() or ReAllocL() on the cell and the get another TDesW |
|
16768 which will have changed its iMaxLength to the new size of the cell. |
|
16769 |
|
16770 TLcbH *TLcbH::ReAlloc(); // Returns NULL if fails |
|
16771 TLcbH *TLcbH::ReAllocL(); // Leaves if fails |
|
16772 |
|
16773 It is possible to directly construct a TLcbH with the static |
|
16774 functions: |
|
16775 |
|
16776 TLcbH *TLcbH::New(TUint aMaxLength) // Returns NULL if fails |
|
16777 TLcbH *TLcbH::NewL(TUint aMaxLength) // Leaves if fails |
|
16778 |
|
16779 The TDesC class also has two methods: |
|
16780 |
|
16781 TLcbH *TDesC::Alloc(); // Returns NULL if fails |
|
16782 TLcbH *TDesC::AllocL(); // Leaves if fails |
|
16783 |
|
16784 which will clone the descriptor on the heap. The size of the TLcbH |
|
16785 will be the length of the descriptor. Remember that these objects |
|
16786 must be freed with either delete or User::Free(). |
|
16787 |
|
16788 Note that there is a class TLcbBase which is just used to provide a |
|
16789 place to provide the code for the template class and although this |
|
16790 could be placed in the TDesC class this could only be done by |
|
16791 sacrificing the efficiency of the constructors for the TLcb class. |
|
16792 TDesC has so many constructors that TLcbBase is useful in providing a |
|
16793 selector for the base constructor. If this was removed an artificial |
|
16794 enum would have to be added to the constructors in TDesC to ease |
|
16795 selection. Since these are called inline by TLcb this would waste |
|
16796 code. |
|
16797 |
|
16798 It is useful to look at the Rose class diagram in \e32\desn\e32.dsn |
|
16799 in the User\Descriptors category. |
|
16800 |
|
16801 2). Took the fixed u_time.cpp and new t_time.cpp. |
|
16802 |
|
16803 3). Changed the build plan so that all 4 build versions are supported |
|
16804 in all E32 .MAK files and that all releaseable files are in \e32sys |
|
16805 as follows: |
|
16806 |
|
16807 Build Name Object directory |
|
16808 ========== ================ |
|
16809 Win32 Release \work\e32\wins\rel |
|
16810 Win32 Debug \work\e32\wins\deb |
|
16811 Win32 Uni Release \work\e32\wins\urel |
|
16812 Win32 Uni Debug \work\e32\wins\udeb |
|
16813 |
|
16814 Build Name .DLLs |
|
16815 ========== ================ |
|
16816 Win32 Release \e32sys\ewins.dll |
|
16817 Win32 Debug \e32sys\ewinsd.dll |
|
16818 Win32 Uni Release \e32sys\ewinsu.dll |
|
16819 Win32 Uni Debug \e32sys\ewinsud.dll |
|
16820 |
|
16821 Build Name .LIBs |
|
16822 ========== ===================================== |
|
16823 Win32 Release \e32sys\ewins.lib \e32sys\estat.lib |
|
16824 Win32 Debug \e32sys\ewinsd.lib \e32sys\estatd.lib |
|
16825 Win32 Uni Release \e32sys\ewinsu.lib \e32sys\estatu.lib |
|
16826 Win32 Uni Debug \e32sys\ewinsud.lib \e32sys\estatud.lib |
|
16827 |
|
16828 The directory \e32\lib has been deleted and replaced with |
|
16829 \e32\rel where the release project files are kept. |
|
16830 |
|
16831 As a result of this no generated files get placed in the \e32 |
|
16832 source tree, meaning a check -a li should always show no |
|
16833 additional or missing files |
|
16834 |
|
16835 4). Fixed most of the death in the unicode build but some test |
|
16836 programs are not building properly. |
|
16837 |
|
16838 5). Added the __DECLARE_TEST() macro for adding the test operations |
|
16839 to classes for debug builds. This macro should always be declared |
|
16840 as the last thing in the class as it switches back to public: as |
|
16841 follows: |
|
16842 |
|
16843 public: |
|
16844 void __TestInvariant() const; |
|
16845 void __Test() const; |
|
16846 |
|
16847 If a DLL is being built the __DLL__ #define should be present and the |
|
16848 macro will generate: |
|
16849 |
|
16850 IMPORT_C void __TestInvariant() const; |
|
16851 |
|
16852 The operation __TestInvariant() is expected to be supplied for all |
|
16853 classes and should do all the checking that it can to determine that |
|
16854 the object is in a healthy state. If it finds an error it should call |
|
16855 User::Invariant() which will cause a panic. If a class is derived from |
|
16856 a base class then the base class __TestInvariant() should be called |
|
16857 first and then further checking should be done. |
|
16858 |
|
16859 This macro should not be added to template functions as the base class |
|
16860 from which the template function is derived should be able to do all |
|
16861 the necessary checking. |
|
16862 |
|
16863 The __Test() function is not implemented and is provided to allow |
|
16864 test code a way of directly accessing all the members of a class. |
|
16865 Test code needs only to provide the function and then call it as it |
|
16866 is always assumed to be in the same .exe as the calling program. |
|
16867 |
|
16868 Look at e32des8.inl and \e32\suser\u_des8.cpp for an example of how |
|
16869 to implement __DECLARE_TEST(). |
|
16870 |
|
16871 N.B. |
|
16872 It is expected that all classes will implement this scheme. |
|
16873 |
|
16874 6). Taken Gillian's fix to u_loc.cpp which was returning day names |
|
16875 for months. |
|
16876 |
|
16877 Version 0.01.014 |
|
16878 ================ |
|
16879 (Made by Colly, 16 Jan 1995) |
|
16880 1). THeap::Available() was not subtracting the header from the cells size. |
|
16881 2). The insert bug in CBufSeg has been fixed. |
|
16882 3). Implemented the new TDes/TBuf plan. This now allows TBufs to be moved |
|
16883 around in memory so that CArray<TBuf_40> is now O.K. Note that TDes8 |
|
16884 cannot be instantiated, instead instantiate a TDesW8. TBufs now only |
|
16885 have an overhead of 8 bytes. See TDesC8::Ptr() to understand how |
|
16886 this trickery is accomplished. In general note that the values of the |
|
16887 members of TDesC8 and its derived classes are now meaningless so don't |
|
16888 jump to conclusions. The iLength should be divided by 4 to get the |
|
16889 real length. The bottom two bits provide flags for the Ptr() function. |
|
16890 For TDes8,TBuf8 and TDesW8 iPtr is in fact the maximum length. The |
|
16891 address of the buffer for TBuf8 is assumed to follow iPtr. For a |
|
16892 TDesW8 the real pointer to the buffer follows iPtr. |
|
16893 4). Added the TVersion class and the User::Version() function. |
|
16894 5). In class TLex, renamed Token() to NextToken() and made |
|
16895 MarkedToken() and NextToken() return a TDesC8. |
|
16896 6). Removed the new operator in class CBase. As the cell is no longer |
|
16897 zero filled all relevant fields must be initialised. |
|
16898 7). Added a member variable TText *__iName to CBase when the _DEBUG |
|
16899 flag is set. All constructors of classed derived from CBase should |
|
16900 initialise by using the __DECLARE_NAME macro. For CBufSeg this would |
|
16901 be : |
|
16902 EXPORT_C CBufSeg::CBufSeg(TUint anExpandSize) |
|
16903 // |
|
16904 // Constructor |
|
16905 // |
|
16906 : CBufBase(anExpandSize),iSeg(NULL) |
|
16907 { |
|
16908 |
|
16909 __DECLARE_NAME(_L("CBufSeg")); |
|
16910 } |
|
16911 8). Changed the ASSERT1,ASSERT2 and ASSERT3 macros to |
|
16912 __ASSERT_ALWAYS - applied in all builds |
|
16913 __ASSERT_DEBUG - applied only in debug builds |
|
16914 __ASSERT_OPT - applied if __OPT__ is defined |
|
16915 The previous versions assumed that Panic was called, i.e. |
|
16916 #define ASSERT1(c,p) if (!(c)) Panic(p) |
|
16917 This has been changed to allow other functions to be called. |
|
16918 #define __ASSERT_ALWAYS(c,p) if (!(c)) p |
|
16919 This should be used as follows: |
|
16920 __ASSERT_ALWAYS(anIndex<iLength,Panic(EDes8IndexOutOfRange)); |
|
16921 9). Further bugs showed up in T_BFLAT which was still assuming that |
|
16922 a TBuf was zero terminated. Changed the code to zero terminate |
|
16923 after construction. |
|
16924 |
|
16925 Version 0.01.013 |
|
16926 ================ |
|
16927 (Made by Colly, 12 Jan 1995) |
|
16928 1). Completed the implementation of the descriptor/buffer classes. |
|
16929 2). The TLocale class is now working. |
|
16930 3). Move SDate,STime and SDaySecs out of TTime. Made the members |
|
16931 start with a lower case. Changed the order of members so that |
|
16932 sorting will occur correctly. Changed the filler on STime to be |
|
16933 1/100ths of a second. Provided a service in the kernel to retrieve |
|
16934 the current 1/100ths. |
|
16935 4). Changed TTime to call the kernel to get the current time and TLocale |
|
16936 to get the start of week. The function to set system time is in |
|
16937 User. i.e. User::SetSystemTime(TSystemTime aTime); |
|
16938 5). Moved the static functions from TTime to User. |
|
16939 6). Converted the u_time.cpp to E32 code standards. |
|
16940 7). Converted the u_graph.cpp to E32 code standards. |
|
16941 8). Converted the o_region.cpp to E32 code standards. |
|
16942 9). Fixed the bug if you ran a program from the command line without |
|
16943 the .exe. |
|
16944 10). Changed TDblQue::Next() to be TDblQue::First() and |
|
16945 TDblQue()::Prev() to be TDblQue()::Last(). Changed the |
|
16946 implementation of AddFirst() and AddLast() to take a T * rather |
|
16947 that a TDblQueLink *. |
|
16948 11). Changed the static New()'s in CBufFlat and CBufSeg to return a |
|
16949 pointer to the class rather than to CBufBase. |
|
16950 12). Add a further global new operator which will leave if it cannot |
|
16951 allocate the memory. This is called as follows: |
|
16952 Normally: |
|
16953 TRect *p=new TRect(0,0,10,10); |
|
16954 With leave: |
|
16955 TRect *p=new(ELeave) TRect(0,0,10,10); |
|
16956 13). Renamed TEnter::Throw() to TEnter::Leave(); |
|
16957 14). Fixed User::Leave(). |
|
16958 15). Add the full queue implemetations. |
|
16959 16). Threads other than the main thread did not have their heap set. |
|
16960 17). Lots more that I have forgotten. |
|
16961 |
|
16962 The TLex test code does not pass since it was relying on the zero |
|
16963 terminator and I don't have the time to fix it. There is bug shown |
|
16964 in CBufSeg with the test program T_ARRAY, although not surprisingly |
|
16965 by T_BSEG. |
|
16966 All the test code should now be reviewed and checked. |
|
16967 |
|
16968 Version 0.01.012 |
|
16969 ================ |
|
16970 (Made by MartinB, 6 Jan 1995) |
|
16971 1) Fixed death in release 11 below. |
|
16972 2) Descriptor classes essentially complete. Moved iMaxLength from |
|
16973 TDesC to TDes. However must still define unicode-independent |
|
16974 buffers. |
|
16975 3) Passes all test code now (except T_SEM). |
|
16976 |
|
16977 |
|
16978 Version 0.01.011 |
|
16979 ================ |
|
16980 (Made by MartinB, 6 Jan 1995) |
|
16981 1) Bug fixes to Heap from MartinH. |
|
16982 2) Bug fixes to arrays from Jal. |
|
16983 3) Changed some pointer parameters to references. |
|
16984 4) Changed to new Descriptor class hierarchy. The change is not yet |
|
16985 complete. |
|
16986 5) Some things are now (partially) broken: |
|
16987 T_BUF does not pass all test code (wierd stack death), |
|
16988 T_ARRAY.CPP and T_BFLAT.CPP do not build, |
|
16989 T_LEX does not pass all test code. |
|
16990 |
|
16991 Version 0.01.010 |
|
16992 ================ |
|
16993 (Made by MartinB, 4 Jan 1995) |
|
16994 1) Minor bug fix to o_array.cpp. |
|
16995 2) Fixes to slocl to support dynamic loading. |
|
16996 3) Fixes to TLex and TChar code. |
|
16997 4) Converted to using spaces for tabs. |
|
16998 5) Incorporated DWs time class. |
|
16999 6) Moved Steve's CRegion class to SOLIB. |
|
17000 |
|
17001 Version 0.01.009 |
|
17002 ================ |
|
17003 (Made by MartinB, 22 Dec 1994) |
|
17004 1) Minor bug fixes and improvements to descriptor code. |
|
17005 2) Now partially buildable under EPR (courtesy of DuncanS). To get |
|
17006 extended toolset type: |
|
17007 |
|
17008 TOOLS ETSET |
|
17009 TOOLS WINS |
|
17010 |
|
17011 You will also need to set your DOS box to run off a PIF file |
|
17012 (ETSET.PIF in this directory will do), otherwise you will get out of |
|
17013 memory/environment space problems. |
|
17014 |
|
17015 Then |
|
17016 ETON WINS |
|
17017 and (in the usual way) |
|
17018 CONT E32 GROUP |
|
17019 DON |
|
17020 BUILD DEB |
|
17021 |
|
17022 Then you should be able to do MNT BLDALL. Unfortunately we don't yet |
|
17023 have the technology to build DLLs yet, but we can do CCs and LFs. |
|
17024 This certainly makes it much less tedious to build the test code. |
|
17025 In CONT E32 TUSER type |
|
17026 EBLD ETLI |
|
17027 In CONT E32 TOLIB type |
|
17028 EBLD LI |
|
17029 |
|
17030 Version 0.01.008 |
|
17031 ================ |
|
17032 (Made by MartinB, 21 Dec 1994) |
|
17033 1) Took Jal's fixes for CBufSeg class. |
|
17034 2) Added |
|
17035 void Append(const TUint8* aBuf,TUint aLength); |
|
17036 function to TDesBase class. |
|
17037 3) Removed the Assign() functions that were just duplicates of Copy() |
|
17038 from TDesBase. |
|
17039 4) Split data in slocl into country dependent, language dependent and |
|
17040 alphabet (character set) dependent parts. Split not yet complete. |
|
17041 |
|
17042 Version 0.01.007 |
|
17043 ================ |
|
17044 (Made by MartinB, 20 Dec 1994) |
|
17045 1) Produces e32winsu.* and e32statu.* on UDEB and UREL builds. |
|
17046 2) Moved to warning level 4. |
|
17047 3) operator= changed to return reference in TPoint, TSize and TRect classes |
|
17048 4) Converted CBuf* classes to constant reference convention. |
|
17049 5) Changed TLex to use descriptors. |
|
17050 |
|
17051 Version 0.01.006 |
|
17052 ================ |
|
17053 (Made by MartinB, 20 Dec 1994) |
|
17054 1) #defined _UNICODE on UDEB and UREL in e32ver.h in preparation |
|
17055 for epr building. |
|
17056 2) Converted TLex* class to constant reference convention. |
|
17057 3) Renamed TSuffix to TDateSuffix. |
|
17058 |
|
17059 Version 0.01.005 |
|
17060 ================ |
|
17061 (Made by MartinB, 19 Dec 1994) |
|
17062 1) First version with buffers replaced by descriptors. Note that |
|
17063 ..\inc\e32db16.h |
|
17064 is a copy of |
|
17065 ..\inc\e32db8.h |
|
17066 with 8 replaced by 16 throughout, and |
|
17067 ..\suser\u_dsbf16.cpp |
|
17068 is a copy of |
|
17069 ..\suser\u_dsbf8.cpp |
|
17070 with 8 replaced by 16 throughout. |
|
17071 |
|
17072 This is necessary since it seems impossible to use templates in |
|
17073 this case (this is because there seems to be no way to manually |
|
17074 instantiate the template so that it can be placed in the DLL). |
|
17075 2) Passes all test code except T_BFLAT (which I didn't get to work on |
|
17076 version 004) and T_SEM (which I'm not sure about). |
|
17077 3) TThread class broken? It may well work but I have not yet looked |
|
17078 into the implications for this class. |
|
17079 4) Made this version for a "safe" one to come back to. |
|
17080 5) U_LEX*.CPP and U_SEG.CPP can now be much improved by using |
|
17081 Descriptors instead of temporary buffers. |
|
17082 |
|
17083 Version 0.01.004 |
|
17084 ================ |
|
17085 (Made by MartinB, 19 Dec 1994) |
|
17086 1) Minor fixes to SLOCL tables. |
|
17087 2) Defined ASSERTn and ASSERT_VALIDn macros. |
|
17088 3) Last version before new TDes and TBuf classes. |
|
17089 |
|
17090 Version 0.01.003 |
|
17091 ================ |
|
17092 (Made by MartinB, 14 Dec 1994) |
|
17093 1) Incorporates TPoint, TSize, TRect & TRegion classes. |
|
17094 2) Incorporates test code for above. |
|
17095 3) Moved TCheckedHeapWalk declaration into THeap (ie nested class |
|
17096 declaration), partially because of name class with TSize (above). |
|
17097 |
|
17098 Version 0.01.002 |
|
17099 ================ |
|
17100 (Made by MartinB, 13 Dec 1994) |
|
17101 1) Incorporates buf fixes to TChar, TLex & TBuf classes. |
|
17102 2) Incorporates test code for above. |
|
17103 3) First working UNICODE version. |
|
17104 |
|
17105 Version 0.01.001 |
|
17106 ================ |
|
17107 (Made by Colly, 10 Dec 1994) |
|
17108 1) First release. |