os/kernelhwsrv/kernel/eka/release_old.txt
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
sl@0
     1
sl@0
     2
Version 1.02.371
sl@0
     3
================
sl@0
     4
(Made by Dennis 04/04/2002)
sl@0
     5
sl@0
     6
1)	TimBa
sl@0
     7
	1)	Fix for BAD-58CDM4: Locale change has no effect on contact filtering.
sl@0
     8
2)	ChrisM
sl@0
     9
	1)	Fix for MOS-58EJ8V (Integrator calibration doesn't work properly)
sl@0
    10
		Removed the "patches" from the Y coordinate digitizertoscreen calculation and
sl@0
    11
		changed the Y calibration constants to work with this.
sl@0
    12
	2)	Fix for CAR-57RETM (WINSCW UDEB Emulator crashes when launched in console mode)
sl@0
    13
	3)	Fix for TAR-58LEUV (Emulator title - variant indication) CR ref MTAR-58LDG2
sl@0
    14
	4)	Fix for SHY-58GGR5 (Test case that leads to unhandled exception
sl@0
    15
 		in DThread::GetDesMaxLength)
sl@0
    16
sl@0
    17
3)	Nicolas
sl@0
    18
	1)	Fixed defect THY-588MLT (Integrator board with ARM926
sl@0
    19
		core module does not boot).  The ARM920 clock setting
sl@0
    20
		code can not be reused as-is for ARM926.  Modified
sl@0
    21
		bootstrap to figure out which core is being used and
sl@0
    22
		branch to the appropriate code.	 A software reset is
sl@0
    23
		necessary halfway through the ARM926 clock
sl@0
    24
		configuration.	See comments in HwInitialise for more
sl@0
    25
		details.  For ARM926, the clocks are set to:
sl@0
    26
			  CPU:			125mhz
sl@0
    27
			  system bus:	25mhz
sl@0
    28
			  local bus:	31.25mhz (CPU clock / 4)
sl@0
    29
4) 	AndrewJ
sl@0
    30
	1) 	Fixed defect JON-58DHHP where Assabet lffs media driver has an error in 
sl@0
    31
		suspend resume operation.
sl@0
    32
5)	MarkCa
sl@0
    33
	1)	Fixed CAN-58GG5E (MEDMMC is not leave-safe.)  Used non-leaving new in
sl@0
    34
		D_MEDMMC.CPP.
sl@0
    35
sl@0
    36
6)	PeteS
sl@0
    37
	1)	Added Lubbock Base port.
sl@0
    38
sl@0
    39
Version 1.02.370
sl@0
    40
================
sl@0
    41
(Made by CarlosF, 12/03/2002)
sl@0
    42
sl@0
    43
1)	JonathanM
sl@0
    44
	1)	Fix for defect MET-57ZHTH - "TDblQueBase has incorrect copy constructor
sl@0
    45
		and operator ="
sl@0
    46
sl@0
    47
2)	Nicolas
sl@0
    48
	1)	Fixed defect MET-57YN7A (Power Sequence at EmergencyStandby).
sl@0
    49
		Migrated 6.1 fix: In DPowerModel::PowerEmergencyStandbyDfc(),
sl@0
    50
		PowerEmergencyStandby() is now called for all power handlers
sl@0
    51
		*before* switching off the machine.
sl@0
    52
	2)	Fixed defect MET-57YMU7 (Template Port requires 'EARLY
sl@0
    53
		DEBUG' examples in the template code).
sl@0
    54
	3)	Modified template port to use the same UART API as
sl@0
    55
		recent ports, e.g. Uart1Data() and Uart2Data()
sl@0
    56
		replaced with UartData(TUint32 aUartBase).
sl@0
    57
	4)	Fixed defect THY-585N22 (OOM during process creation
sl@0
    58
		can crash the kernel).	Now uses HBufC::New() instead
sl@0
    59
		of NewL() in svProcessCreate() to allocate the
sl@0
    60
		command-line buffer.
sl@0
    61
sl@0
    62
3)	Markdo
sl@0
    63
	1) 	Fixed defect DON-585LNV "Media door open does not work on WINS with
sl@0
    64
		Mmc card controller". Removed call from PcCard Controller to set up a
sl@0
    65
		media change callback in WINS. Only MmcCard Controller sets this callback
sl@0
    66
		now.
sl@0
    67
sl@0
    68
4)	ChrisM
sl@0
    69
	1)	Fixed defect MOS-586BWV (integrator had digitizer and mouse driver loaded
sl@0
    70
		in e32 text shell roms).  Removed mouse driver from rom.
sl@0
    71
	2)	Fixed defect MOS-55DJN4 (New integrator video driver should use constants
sl@0
    72
		rather than magic numbers)
sl@0
    73
	3)	Tidied up integrator digitizer calibration.
sl@0
    74
	4)	Fixed defect OMC-586LJF assabet rom size
sl@0
    75
	5)	Fixed defect OMC-586K5Z mainline warnings
sl@0
    76
sl@0
    77
5)	Pete
sl@0
    78
	1) 	Change to the WINS local drive mappings.
sl@0
    79
		The entire local drive mapping for WINS is now as follows:-
sl@0
    80
		Local drive 0:	Internal RAM drive (EFixedMedia0) - Y:
sl@0
    81
		Local drive 1:	MMC Card on MMC socket 0 (ERemovableMedia0) - X: 
sl@0
    82
		Local drive 2:	MMC Card on MMC socket 1 - Partition1 (ERemovableMedia1)
sl@0
    83
		Local drive 3:	MMC Card on MMC socket 1 - Partition2 (ERemovableMedia1)
sl@0
    84
		Local drive 4:	PC Card on PC Card socket 0 (ERemovableMedia2)
sl@0
    85
		Local drive 5:	PC Card on PC Card socket 1 (ERemovableMedia3)
sl@0
    86
		Local drive 6:	Not currently assigned
sl@0
    87
		Local drive 7:	Not currently assigned
sl@0
    88
		Local drive 8:	Internal LFFS drive (EFixedMedia1) - W: 
sl@0
    89
	2) 	Implemented CR PHAR-54RJMT 'We should be able to simulate password
sl@0
    90
		protected disks on the emulator'.
sl@0
    91
		1) The method of mapping drive letter to local drive number on the WINS
sl@0
    92
		emulator has been changed from being a fixed mapping, to one that uses
sl@0
    93
		enviroment variables to specify the mapping. When the system starts up
sl@0
    94
		it sets environment variables to reconstuct the same mapping as before:
sl@0
    95
		Y:-LocDrv 0, X:-LocDrv 1, W:-LocDrv8. (This is done in SetupEmulatorPaths()
sl@0
    96
		in \e32\euser\emul\win32\up_path.cpp). However, these default mappings can
sl@0
    97
		overidden or new mappings created in EPOC.INI using the following syntax:
sl@0
    98
		
sl@0
    99
			_EPOC_LocDrv_<locDrvNum> <drvLetter>: <FileSystemID string> 
sl@0
   100
			
sl@0
   101
		The FileSystem ID indicates which file system should be mounted on the
sl@0
   102
		local drive in question. The following file system IDs are defined:
sl@0
   103
			'Fat' and 'Lffs'.
sl@0
   104
		For example, to map X: to local drive 1 specifying the FAT file system:  
sl@0
   105
			'_EPOC_LocDrv_1 X: Fat'
sl@0
   106
		The file system ID is read by the text shell as it starts up and mounts the
sl@0
   107
		appropriate file system on any local drive that it finds a mapping for.	
sl@0
   108
		2) A start-up media password can now be assigned to any MMC card - again
sl@0
   109
		using environment variables to store the password. Passwords are set in
sl@0
   110
		EPOC.INI using the syntax:
sl@0
   111
		
sl@0
   112
			EPOC_LocDrv_<locDrvNum>_PWord_<cardNum> <password>
sl@0
   113
			
sl@0
   114
		'locDrvNum' is the number of the local drive and 'cardNum' is the number of
sl@0
   115
		the MMC card on that drive. The latter is only relevant on local drive 1 where
sl@0
   116
		two virtual MMC cards are emulated (with the user hot swapping between cards
sl@0
   117
		by hitting F4 while F5 is down). For example, to set Card0 on local drive 1:
sl@0
   118
			'EPOC_LocDrv_1_PWord_0 aaa1'
sl@0
   119
			
sl@0
   120
		3) The start-up state of the MMC card in local drive 1 can be configured to be
sl@0
   121
		any one of the following: No MMC card, MMC Card0 or MMC Card1. The user
sl@0
   122
		subsequently toggles between each of these states each time they hit the F4 key
sl@0
   123
		while F5 is down. The start-up state is set in EPOC.INI using the syntax:
sl@0
   124
		
sl@0
   125
			_EPOC_Active_LocDrv_1 <StartUpState>
sl@0
   126
			
sl@0
   127
		'StartUpState' can be one of the following values:  -1 - card present,
sl@0
   128
		0 - MMC Card0, 1 - MMC Card1. For example, to set the start up state to MMC Card1:
sl@0
   129
			'EPOC_Active_LocDrv_1 1' 		
sl@0
   130
sl@0
   131
6)	MarkCa
sl@0
   132
	1)	Removed SD specific parts of MMC controller.  EPBUSM no longer built for MEIG.
sl@0
   133
sl@0
   134
7)	TimBa
sl@0
   135
	1)	Fix for COY-56DEYY: "MatchesPartial function uses undocumented
sl@0
   136
		feature of CompareC". TDesC16::HasPrefix function added.
sl@0
   137
sl@0
   138
sl@0
   139
Version 1.02.369
sl@0
   140
================
sl@0
   141
(Made by ChrisM, 06/03/2002)
sl@0
   142
sl@0
   143
0) 	ArunsakhS
sl@0
   144
	1) 	Fix for defect  BAD-57HF3Y - "Locale persistence broken" 
sl@0
   145
		A new HAL atrribute was added to TAttribute in Hal_data.h for the
sl@0
   146
		defect fix above. The new attribute is "ELocaleLoaded". 
sl@0
   147
		Made the required changes to "config.hcf" and "values.hda" in HAL 
sl@0
   148
		and all the reference platform components. Added the test for
sl@0
   149
		ELocaleLoaded in the test "T_newhal" in HAL. 
sl@0
   150
sl@0
   151
1)	RobertJ
sl@0
   152
	1)	Silenced some warnings in:
sl@0
   153
		\e32\drivers\medmmc\epoc\d_medmmc.cpp
sl@0
   154
		\e32\drivers\medmmc\epoc\d_medsdp.cpp
sl@0
   155
	2) 	Correction of comms header file to correct KCapsBpsxxxx constants
sl@0
   156
		\e32\include\d32comm.h
sl@0
   157
		JAN-57WL3N  "Comm port capability constants same, missing"
sl@0
   158
		(was SAS-554K4P in GT6.1)
sl@0
   159
	3)	Fixed JAN-57WL8G "Possible access violations in e32 drivers under OOM?"
sl@0
   160
		was HAR-56DPLW in GT6.1
sl@0
   161
		\e32\drivers\dfir\d_fir.cpp
sl@0
   162
		\e32\drivers\ecomm\d_comm.cpp
sl@0
   163
		\e32\drivers\ecommdce\epoc\d_commdce.cpp
sl@0
   164
sl@0
   165
2)	CarlosF
sl@0
   166
	1)	Fixed defect MOS-579LUN powering down digitiser causes machine to hang
sl@0
   167
 		when screen is tapped.
sl@0
   168
	2)	Changes to Serial Port: the existing power-down timeout after finishing 
sl@0
   169
		transmitting has been made configurable through the introduction of a new
sl@0
   170
		member to the comms config structure (this is now TCommConfigV02).
sl@0
   171
		Changes to d_comm.cpp (ARM and WIN32 emulator) to support this. Also when
sl@0
   172
		it powers down as a consequence of having timed out it now completes the
sl@0
   173
		requests with KErrTimedOut instead of KErrAbort.
sl@0
   174
	3)	Further changes to the digitiser extension on Assabet and Brutus in order to
sl@0
   175
		fix problems with Silent Running.
sl@0
   176
	4)	Fixed defect THE-57LHGD Unable to use the Profiler tool on Assabet.
sl@0
   177
sl@0
   178
3) 	MichaelP
sl@0
   179
	1)	Added data member access function TInt BytesToBeTransfered() to class
sl@0
   180
		THwaDataTfReq (k32hwa.[h|inl]).
sl@0
   181
	2) 	In T_HWA (\f32test\DEVICE\t_hwa.cpp) changed test of "HWA device specific
sl@0
   182
		function (2)": the address that is now used lies within the DSP bridge
sl@0
   183
		shared memory area.
sl@0
   184
	3)	Fixed address and size of reserved RAM area in \Helen\Bootstrap\Helen.s.
sl@0
   185
sl@0
   186
4)	MarkCa
sl@0
   187
	1)	Fixed CAN-579MLN MultiMediaCard controller does not pre-check current
sl@0
   188
		password.
sl@0
   189
sl@0
   190
5)	Nicolas
sl@0
   191
	1)	Fixed defect THY-57QNYA (incorrect default debug port
sl@0
   192
		on assabet).  The default port is now UART3
sl@0
   193
		everywhere.
sl@0
   194
		
sl@0
   195
7)	ChrisM
sl@0
   196
	1)	Fix for DON-57RNLR (Screen is not switched on when coming back from digitiser
sl@0
   197
		power-down)
sl@0
   198
	2)	Fix for defect PEN-57XBRV ("EPOC Emulator" should be replaced)
sl@0
   199
		Changed the emulator name from EPOC Emulator to Symbian OS Emulator by default.
sl@0
   200
		Name can be specified in epoc.ini with the keyword EmulatorName.
sl@0
   201
sl@0
   202
sl@0
   203
Version 1.02.368
sl@0
   204
================
sl@0
   205
(Made by RobertJ, 11/02/2002)
sl@0
   206
sl@0
   207
1)	ChrisM
sl@0
   208
	1)	Fix for defect ROS-55CGCR - "EPOC.EXE logo fails to conform to Corporate ID guidelines"
sl@0
   209
sl@0
   210
3)	JonathanM
sl@0
   211
	1)	Fix for defect MET-572N7U - "Destroying FixedContiguous TransferBuffers causes
sl@0
   212
		memory to be 'lost' to the free pool"
sl@0
   213
sl@0
   214
4) 	Pete
sl@0
   215
	1) 	Further extended the local drive caps class (TLocalDriveCapsV3)
sl@0
   216
		by adding the following member:-
sl@0
   217
			TUint iExtraInfo;		
sl@0
   218
	2)	Modified the MMC Media driver to supply the above information as part of
sl@0
   219
		the Media Driver Caps() function.
sl@0
   220
	3)	Fixed a defect where the 'iHiddenSectors' field in
sl@0
   221
		the disk caps. info was not being initialised if a default boot
sl@0
   222
		partition wasn't detected in the MBR.
sl@0
   223
sl@0
   224
Version 1.02.367
sl@0
   225
================
sl@0
   226
(Made by PeterS, 02/02/2002)
sl@0
   227
sl@0
   228
1)	RobertJ
sl@0
   229
	1) CR CLCT-55JENG. Modified \e32\include\d32usbc.h & \e32\include\d32usbc.inl
sl@0
   230
	argument TInt& aLen for RDevUsbcClient::Write and
sl@0
   231
	RDevUsbcClient::WriteEndpointZero changed to TInt aLen
sl@0
   232
sl@0
   233
2)	JonathanM
sl@0
   234
	1)	Fix for defect FID-563G8A - "TPckgBuf cannot return a const reference"
sl@0
   235
	2)  Fix for defect PAR-56MGEB - "Generic EDISP driver lives in the wrong place."
sl@0
   236
	3)	Removed last vestiges of Cogent from E32
sl@0
   237
	4)	Fix for defect THY-4XPH4C - "T_CURRENCYFORMAT fails from time to time"
sl@0
   238
	5)	Fix for defect MET-56UJ35 - "Unhandled Leave in Kernel Server"
sl@0
   239
	6)	Fix for defect MET-56VJY6 - "Session creation can crash machine under OOM conditions"
sl@0
   240
sl@0
   241
3)	MarkCa
sl@0
   242
	1)	Added caps buffer zeroing to MEDMMC and MEDLFS on MINT and MINK.
sl@0
   243
sl@0
   244
4) Nicolas
sl@0
   245
	1)	CR JPAR-54XMZD: ROM building and run time configuration of debug port
sl@0
   246
		- On selected targets the current debug port can be
sl@0
   247
		  viewed and changed at run-time thanks to a new eshell
sl@0
   248
		  command (debugport).	See rombuild release notes for details
sl@0
   249
		  about ROM building time configuration.
sl@0
   250
		- Debug port setting applies everywhere (i.e. bootstrap
sl@0
   251
		  traces, early debug mode, non early debug mode (variant)
sl@0
   252
		  and debug monitor) *but* run-time port switching is not
sl@0
   253
		  supported in early debug mode as in this case the port
sl@0
   254
		  initialisation is done by the bootstrap.
sl@0
   255
		- The bootstrap fetches the debug port from the ROM
sl@0
   256
		  header and copy it to a new field in the the super page.
sl@0
   257
		- A new HAL attribute (EDebugPort) has been added and
sl@0
   258
		  a default implementation based on userhal has been provided.
sl@0
   259
		- Assabet port modified.  The accepted debug port
sl@0
   260
		  values are 1 (UART1) and 3 (UART3).  The default is 3.
sl@0
   261
		- Brutus port always uses UART3.
sl@0
   262
		- Integrator (MINT) port modified.  The accepted debug
sl@0
   263
		  port values are 0 (UART0), 1 (UART1) and 42 (JTAG DCC).  The
sl@0
   264
		  default is 0.
sl@0
   265
		- KHARDWAREASSIST flag removed.	 Ports supporting JTAG
sl@0
   266
		  DCC output should use the new scheme.
sl@0
   267
		- Modified accordingly the template port
sl@0
   268
	2)	Modified bootvariant.mke in MINT port so that a symbol
sl@0
   269
		file for bootromv1.bin is generated.
sl@0
   270
	3)	Fixed long standing bug in MISA variants: BOOTMISA.LIB was
sl@0
   271
	  	not suffixed by a variant-specific identifier.  This was
sl@0
   272
	  	not discovered before as the libraries were identical on
sl@0
   273
	  	assabet and brutus.  The libraries are now called
sl@0
   274
	  	BOOTMISAAB.LIB and BOOTMISABA.LIB.
sl@0
   275
	4)	"abld clean bootmisa" now removes symbol files for both
sl@0
   276
		assabet and brutus.
sl@0
   277
sl@0
   278
5)	ChrisM
sl@0
   279
	1)	Euser source reorg for ipr categorisation CR GBON-567RCZ
sl@0
   280
		- created new directory  base\e32\euser\utils
sl@0
   281
		- moved us_array.cpp, us_func.cpp, us_lex8.cpp, us_lex16.cpp, us_heap.cpp 
sl@0
   282
		  and us_que.cpp into the new dir which has a cat D ipr file.
sl@0
   283
		- created new file us_desx.cpp which contains all the exported constructors
sl@0
   284
		  from us_des8.cpp and us_des16.cpp
sl@0
   285
		- created a new header file in utils which contains some inline funcs which 
sl@0
   286
		  are needed in us_desx.cpp and the old us_des8.cpp and us_des16.cpp files
sl@0
   287
		- + some panic numbers and a few other shared bits.
sl@0
   288
		- removed the exported constructors from us_des8.cpp and us_des16.cpp
sl@0
   289
sl@0
   290
sl@0
   291
sl@0
   292
sl@0
   293
Version 1.02.366
sl@0
   294
================
sl@0
   295
(Made by MarkCa, 15/01/2002)
sl@0
   296
sl@0
   297
1)	MarkCa
sl@0
   298
	1)	Modified MEDMMC to support partial reads, write-through caching and
sl@0
   299
		multi-block writes.  Multi-block writes are a compile-time option
sl@0
   300
		that is not compiled in by default.
sl@0
   301
	2)	Removed packed struct optimization from PS_MMC.CPP.
sl@0
   302
	3)	Changed debug print statements in D_MEDSDP.CPP so can distinguish
sl@0
   303
		from D_MEDMMC.CPP.
sl@0
   304
	4)	Fixed FID-54YK2B (MEDMMC buffer not DMA-safe.)  Pages of physically
sl@0
   305
		contiguous RAM are allocated by the EPBUS controller at bootup and
sl@0
   306
		the media driver uses a virtual function to find out where they are.
sl@0
   307
		Note this is a convenience for the principal EPBUS client, i.e.,
sl@0
   308
		MEDMMC / MEDSDU.  If other drivers want to be clients of EPBUS, they
sl@0
   309
		should still allocate their own internal buffers.
sl@0
   310
	5)	Fixed MBR.H header file to use include guards and #include <e32std.h>.
sl@0
   311
	6)	Fixed FID-54VENJ (MMC: Same debug trace used for different functions.)
sl@0
   312
		Changed debug text for DMMCStack::SchedGroundDown().
sl@0
   313
sl@0
   314
2) 	Peter
sl@0
   315
	1) 	Added support on MMC Card Controller for mechanical write protect switch.
sl@0
   316
	2) 	Extended the local drive caps class (now extended to TLocalDriveCapsV3)
sl@0
   317
		by adding two extra members:-
sl@0
   318
			TUint iMediaSubType;
sl@0
   319
			TInt64 iTotalDiskCapacity;
sl@0
   320
	3) 	Added support for multiple Peripheral Bus Controllers.
sl@0
   321
		For all platforms other than WINS, these are now loaded as kernel
sl@0
   322
		extensions which then register themselves with the kernel from
sl@0
   323
		the extension DLL entry-point. Each Controllers register once for
sl@0
   324
		each socket that it controls and the kernel supports up to
sl@0
   325
		KMaxPBusSockets(4) sockets (i.e. the system could support four different
sl@0
   326
		Controllers each managing a single socket, two different Controllers
sl@0
   327
		each managing a pair of sockets etc). The Peripheral Bus Controller
sl@0
   328
		DLLs have been renamed. All used to be build as EPBUS.DLL. Now PC Card
sl@0
   329
		Controllers are built as EPBUSP.DLL and MMC Controllers are built as
sl@0
   330
		EPBUSM.DLL. For non-WINS platforms, the kernel no longer links with the
sl@0
   331
		Peripheral Bus object and a platform can be configured with multiple
sl@0
   332
		Controllers, a single Controller or no Controllers simply by the inclusion
sl@0
   333
		(or non-inclusion) of the Controller extension DLL in the rom OBY file. The
sl@0
   334
		WINS and MEIG platforms now support dual Controllers, both a PC Card
sl@0
   335
		Controller and an MMC Controller. (Note, to achieve this in WINS, the kernel
sl@0
   336
		now links to EPBUSP.DLL and EPBUSM.DLL). Changes to support this include:-
sl@0
   337
		a) Added the function:-
sl@0
   338
		   	void Kern::RegisterPBusController(TPBusNum aMachineBusNum,
sl@0
   339
				DPeriphBusController* aController,TPBusNum aControllerBusNum)
sl@0
   340
		which should be called from the Controller extension DLL entry-point for
sl@0
   341
		each bus that the Controller manages in order to register that Controller
sl@0
   342
		for that bus. 'aControllerBus' is the number of the bus relative to that
sl@0
   343
		particular Controller as opposed to 'aMachineBus' which is the bus number
sl@0
   344
		relative to the entire machine (e.g. on a machine configured with two
sl@0
   345
		Controllers each managing two buses, then when the 2nd controller registers
sl@0
   346
		for it's 2nd bus, the machine bus number of this is 3, but the number relative
sl@0
   347
		to the 2nd Controller is 1).  
sl@0
   348
		b) With there now being potentially multiple Controllers,
sl@0
   349
		the function to retrieve the pointer to the Controller now takes a  bus
sl@0
   350
		number as a parameter and becomes:-
sl@0
   351
			DPeriphBusController* Kern::PBusController(TPBusNum aMachineBusNum)
sl@0
   352
		c) Added the function 
sl@0
   353
			TPBusNum Kern::PBusControllerBusNum(TPBusNum aMachineBusNum)
sl@0
   354
		which returns the bus number relative to its owning Controller for a given 
sl@0
   355
		machine bus number.
sl@0
   356
		d) The kernel now keeps a count of Controller registered. This means the
sl@0
   357
		platform specific HAL function ImpHal::TotalSupportedBuses() is now
sl@0
   358
		redundant and has been removed.
sl@0
   359
		e) Modified the extension DLL entry-point function for the generic
sl@0
   360
		Peripheral Bus Controller to allocate the Controller object and perform
sl@0
   361
		secondary initialisation before registering the Controller with the kernel.
sl@0
   362
		This makes the function P::InitialiseLocalDrives() redundant and it has
sl@0
   363
		therefore been removed. Also, the function DPeriphBusController::NewL() is
sl@0
   364
		no longer exported. (Still exported from WINS Controllers which aren't
sl@0
   365
		extensions and therefore still need to to initialised directly by the kernel).
sl@0
   366
		f) Removed the function DPeriphBusController::TotalSupportedDrives() and
sl@0
   367
		replaced this with a straight call to the variant of the same name:
sl@0
   368
			Custom::TotalSupportedDrives().
sl@0
   369
		Following on from this, removed the data member iTotalSupportedDrives
sl@0
   370
		from the classes TPcCardMachineInfo and TMmcCardMachineInfo.
sl@0
   371
		g) Added the pure virtual function:
sl@0
   372
			TPBusNum DPeriphBusController::BaseBusNumber()
sl@0
   373
		to the generic Peripheral Bus Controller class which returns the
sl@0
   374
		machine bus number of the first bus under the control of this Peripheral
sl@0
   375
		bus Controller. Provided implementations of this in the DPcCardController
sl@0
   376
		and DMMCController classes. These read the required information from the
sl@0
   377
		corresponding TPcCardMachineInfo and TMmcCardMachineInfo classes. Added the 
sl@0
   378
		corresponding data member iBaseBusNumber to each of these classes which
sl@0
   379
		is supplied from the variant.  
sl@0
   380
		h) Constructors for TPBusCallBack made inline rather than being exported
sl@0
   381
		from the Peripheral Bus Controller so that the kernel no longer needs to
sl@0
   382
		link with EPBUS.LIB.
sl@0
   383
		i) Moved the function:
sl@0
   384
			DPBusMediaDriver::SetCurrentConsumptionInMilliAmps()
sl@0
   385
		to the Media Driver base class - DMediaDriver and removed the function
sl@0
   386
		DMediaDriver::DeltaCurrentConsumptionInMilliAmps() which was now redundant.
sl@0
   387
		Also added a destructor to the DMediaDriver class to reset the current
sl@0
   388
		consumption when the object is destroyed. This again required in order that
sl@0
   389
		the kernel need no longer link with EPBUS.LIB (as this needs to reset
sl@0
   390
		the media driver current consumption on a media change - with object
sl@0
   391
		destruction not occuring until the next mount).
sl@0
   392
		j) Change to the WINS local drive mappings to include emulation of PC Card
sl@0
   393
		drives as well as MMC drives.
sl@0
   394
		The entire local drive mapping for WINS is now as follows:-
sl@0
   395
		Local drive 0:	Internal RAM drive (EFixedMedia0) - Y:
sl@0
   396
		Local drive 1:	1st special MMC Card on MMC socket 0 (ERemovableMedia0) - X: 
sl@0
   397
		Local drive 2:	2nd special MMC Card on MMC socket 0 (ERemovableMedia0) - V:
sl@0
   398
		Local drive 3:	MMC Card on MMC socket 1 (ERemovableMedia1)
sl@0
   399
		Local drive 4:	PC Card on PC Card socket 0 (ERemovableMedia2)
sl@0
   400
		Local drive 5:	PC Card on PC Card socket 1 (ERemovableMedia3)
sl@0
   401
		Local drive 6:	Not currently assigned
sl@0
   402
		Local drive 7:	Not currently assigned
sl@0
   403
		Local drive 8:	Internal LFFS drive (EFixedMedia1) - W: 
sl@0
   404
		k) For MEIG, MISA and MTEMPLATE platforms, the Peripheral Bus variant interface has
sl@0
   405
		been removed from the variant DLL and is instead built as a separate kernel extension - either
sl@0
   406
		as EPBUSPV.DLL for PC Card Controller variants or EPBUSMV.DLL for MMC Controller variants.
sl@0
   407
		For these platforms, registration of the Controller with the kernel takes place via a call
sl@0
   408
		from the Controller variant extension DLL entry point rather than from the Controller extension
sl@0
   409
		DLL entry point. For all other platforms, the Controller variant remains as part of the main
sl@0
   410
		variant DLL. These platforms therefore have no separate Controller variant DLL.
sl@0
   411
		As a result of this change, the Controller DLL entry
sl@0
   412
		point has been moved out of the generic layer of the Peripheral Bus
sl@0
   413
		Controller (PS_PBUS.CPP) into the ASSP layer. 
sl@0
   414
		Splitting the Controller variant out of the main
sl@0
   415
		variant DLL is necesssary where there are multiple
sl@0
   416
		Peripheral Bus Controllers on a platform - otherwise the variant DLL has to contain
sl@0
   417
		multiple Controller variants.
sl@0
   418
		l) Deleted V32PCCD.H, and V32PCCDI which were being used as a general definition of the
sl@0
   419
		PC Card Controller variant interface for all platforms. Each peripheral bus ASSP layer
sl@0
   420
		should define its own variant interface as required for that impelementation. This
sl@0
   421
		should be defined in the header file \e32\epbus\epoc\<assp>\v32pccdv.h (or v32mmcv.h
sl@0
   422
		for MMC Controllers). Implemented this for all supported platforms.
sl@0
   423
sl@0
   424
		NOTE: The power model extension - EPOWER.DLL must be loaded before any Peripheral
sl@0
   425
		Bus Controller extensions - EPBUS?.DLL or EPBUS?V.DLL (i.e. in the OBY file, the
sl@0
   426
		lines that specify the inclusion of EPBUS??.DLL must occur after the line which
sl@0
   427
		specifies the inclusion of EPOWER.DLL).
sl@0
   428
sl@0
   429
3)	RobertJ
sl@0
   430
	1)	Changed string descriptor text in pa_usbc.cpp to remove reference
sl@0
   431
		to EPOC and ER6.2
sl@0
   432
sl@0
   433
	2)	Removed function CopyMaxToClient in d_usbc.cpp, this was in effect a
sl@0
   434
		duplicate of CopyToClient. Code now uses CopyToClient in all cases.
sl@0
   435
sl@0
   436
	3)	In usbdma.cpp & k32usbc.h changed interface to
sl@0
   437
		TDmaBuf::RxCopyPacketToClient & TDmaBuf::RxCopyDataToClient to take
sl@0
   438
		an explicit length argument. This removes the need to modify the
sl@0
   439
		TEndpointTransferInfo
sl@0
   440
		Modified d_usbc.cpp to reflect change in the calling interface to 
sl@0
   441
		TDmaBuf::RxCopyPacketToClient & TDmaBuf::RxCopyDataToClient
sl@0
   442
sl@0
   443
4)	MichaelP
sl@0
   444
	1)	Fixed compile time error in /e32/drivers/ehwa/d_hwa.cpp which only occurred
sl@0
   445
		when GETPUTDATA_ARE_KERNELSERVERCALLS had been #defined.
sl@0
   446
	2)	Added parameter 'TInt aNumWindows' to functions DHwaTask::Init() and
sl@0
   447
		THwaTaskHwInterface::Init(), which are declared in k32hwa.h.
sl@0
   448
	3)	Introduction of boolean flag iInUse to class THwaDataTfReq: used to identify
sl@0
   449
		transfer requests which are currently being processed by the PDD.
sl@0
   450
	4)	HWA bogus PDDs: changed order of calls to DHwaTask::GetNextRequest to account
sl@0
   451
		for change no. 3).
sl@0
   452
	5)	Moved HWA device state member iStatus from class DHwaDevice to class
sl@0
   453
		DHwaDevicePdd; maintaining its correct value is now up to the PDD.
sl@0
   454
sl@0
   455
sl@0
   456
Version 1.02.365
sl@0
   457
================
sl@0
   458
(Made by AndrewJ, 12/12/2001)
sl@0
   459
sl@0
   460
1)	Morgan
sl@0
   461
	1)	Integrated DPassiveDebugger enhancements from \tools\debugger_stub\...
sl@0
   462
		into Helen variant: \helen\debugger\...
sl@0
   463
sl@0
   464
2)	ChrisM
sl@0
   465
	1)	Fixed MET-54HLQA (T_NEWHAL tests fail)
sl@0
   466
	2)	Fixed MET-555GLS (On WINS HAL function EDisplayMemoryAddress should return the Window Handle)
sl@0
   467
sl@0
   468
3)	Dennis
sl@0
   469
	1)	Fixed HEY-54JJ9Y (DPlatLibrary not filled in for some loads)
sl@0
   470
sl@0
   471
4)	JonathanM
sl@0
   472
	1)	Fix for 6.1 defect MOS-54NLHX - "__PROFILE_DISPLAY macro in e32def.h has error"
sl@0
   473
sl@0
   474
5)	WilliamRo
sl@0
   475
	1)	Fixed ROS-54MGXX "WINSCW builds enable C++ exceptions and RTTI" by adding 
sl@0
   476
		appropriate #pragmas to the __CW32__ section of e32def.h
sl@0
   477
sl@0
   478
6)	Nicolas
sl@0
   479
	1)	Fixed MOS-54QM2W (Building bootstrap MMU layer &
sl@0
   480
		special bit patterns in permissions): The MMU
sl@0
   481
		permissions are now global variables defined in the
sl@0
   482
		variant part of the bootstrap and used by the generic
sl@0
   483
		ones.
sl@0
   484
	2)	Removed the write-through version of the generic
sl@0
   485
		bootstrap MMU library.	This was used only by the
sl@0
   486
		Helen port which now uses the same code as everything
sl@0
   487
		else and selects write-through behaviour by changing
sl@0
   488
		the MMU permissions in the variant (see previous
sl@0
   489
		entry).	 See commented out code at the top of helen.s
sl@0
   490
		and helenc.cpp to switch between write-back and
sl@0
   491
		write-through.
sl@0
   492
	3)	Fixed THY-54XJFZ (When fast RAM used, cache should be
sl@0
   493
		disabled for kernel stacks, data and heap).  When
sl@0
   494
		those entities are in DRAM, they are always cacheable.
sl@0
   495
		When they are in FRAM, they are mapped using the map
sl@0
   496
		flags specified in the FRAM bank.  This allows to
sl@0
   497
		enable/disable the cache on a per-bank basis.
sl@0
   498
sl@0
   499
7)	RobertJ
sl@0
   500
	1)	Fixed HEY-54JME9. Removed mini-loader
sl@0
   501
		"Drive specifier missing on libraries loaded with the mini-loader"
sl@0
   502
sl@0
   503
8)	MichaelP
sl@0
   504
	1)	Removed /e32/drivers/ subdirectories ecommdma and emcbsp. These two drivers were
sl@0
   505
		introduced by the Helen port and are actually TI-specific. Since they are not even
sl@0
   506
		used by the current Helen port, we can safely get rid of them.
sl@0
   507
sl@0
   508
9)	PeterH
sl@0
   509
	1)	Integrated changes to DEF files from the mainline.
sl@0
   510
		Frozen exports are now marked with the R3UNUSED flag where appropriate.
sl@0
   511
		This is to support the thumb stub optimisation where the R3 register is
sl@0
   512
		use to generate a smaller import stub for a function if it isn't used to
sl@0
   513
		receive parameters.
sl@0
   514
sl@0
   515
10)	MarkCa
sl@0
   516
	1)	Updated MLNK EPBUS port to detect all events in ISR.
sl@0
   517
	2)	Reduced EPBUS by c1.2k by using packed TMMCCommandSpec structure.
sl@0
   518
sl@0
   519
Version 1.02.364
sl@0
   520
================
sl@0
   521
(Made by MichaelP, 20/11/2001)
sl@0
   522
sl@0
   523
1)	MarkCa
sl@0
   524
	1)	Changed DFlashDevice::SetupWrite() in \integratorap\lffs\flashfile.cpp
sl@0
   525
		to use wrapper class for testing if write buffer available instead of
sl@0
   526
		testing bits in 32bit value.
sl@0
   527
	2)	Fixed CAN-547HD3 (Controller panics when no events to handle.)
sl@0
   528
sl@0
   529
2)	RobertJ
sl@0
   530
	1)	Corrected coding comments in d_usbc.cpp & minor clarification in pa_usbc.cpp
sl@0
   531
	2)	Implemented new USB VID.
sl@0
   532
	3)	Further cleanup work following deconfiguration on USB client SIN-535KPU
sl@0
   533
	4)	Propagated fix for PBN-4TKJ7J "Bluetooth panics with HCI error 23".
sl@0
   534
		In \brutusa\vi_com2.cpp, reordered ISR rx now done first
sl@0
   535
		then tx, removed uart tx busy spin.
sl@0
   536
sl@0
   537
3)	Nicolas
sl@0
   538
	1)	Fixed FID-53YD58 (Bootstrap doesn't dump all MMU
sl@0
   539
		pages): off-by-one error.
sl@0
   540
	2)	Enabled cache for exception vector page when it is in
sl@0
   541
		DRAM (cache still disabled if the page is in fast RAM
sl@0
   542
		as TC RAM and cache are not compatible).
sl@0
   543
sl@0
   544
4)	ChrisM
sl@0
   545
	1)	Fixed ALM-53LHP4 (Fixed Calibration settings are not saved).  Assabet only defect, 
sl@0
   546
		problem was in the variant vi_xyin.cpp in DDigitiserSA1100::DigitiserToScreen.
sl@0
   547
	2)	Fixed FOD-54MET2 (Display bytesPerLine calculated as bits not bytes).  Fixed the problem 								in template port + integrator.
sl@0
   548
sl@0
   549
5) 	AndrewJ
sl@0
   550
	
sl@0
   551
	1)	Fixed DOM-4XWC5P (Medlfs driver  is not reliable) This problem was concerned with 
sl@0
   552
		flash devices not erasing properly when suspended, on assabet boards. This was 
sl@0
   553
		fixed by not suspending an erase unless both chips have gone into suspend mode 
sl@0
   554
		properly.
sl@0
   555
	2)	Fixed FID-53YDJC (Error LFFS driver SetupWrite() function) Semi implemented 
sl@0
   556
		suggestion in defect report though still need to issue dummy command after 
sl@0
   557
		correct register has been read, otherwise command issued does not work.
sl@0
   558
sl@0
   559
6)	JonM
sl@0
   560
	1)	Implemented change request JMET-544FUM - "Change RTransferWindow::MapInBuffer() to
sl@0
   561
		return error code and not panic"
sl@0
   562
sl@0
   563
7)	CarlosF
sl@0
   564
	1)	Fixed MOU-543FVR HAL attribute ECaseSwitch returns wrong value for Assabet.
sl@0
   565
		The following files were modified:
sl@0
   566
		\assabetb\hal\config.hcf
sl@0
   567
		\assabetb\hal\values.hda
sl@0
   568
		\assabetb\lffs\loadlffs.cpp
sl@0
   569
		\assabetb\vi_hal.cpp
sl@0
   570
		\hal\inc\hal_data.cpp
sl@0
   571
		\hal\tsrc\t_new_hal.cpp.
sl@0
   572
		Fixed FRS-534EWW T_SERIAL fails on Assabet. The following files were
sl@0
   573
		modified:
sl@0
   574
		\assabetb\bmisa\visaabu.def
sl@0
   575
		\assabetb\v32scpld1111.h
sl@0
   576
		\assabetb\vi_com1.cpp
sl@0
   577
		\assabetb\vi_com3.cpp
sl@0
   578
		\assabetb\vi_cpld1111.h
sl@0
   579
		\assabetb\vi_hw.cpp
sl@0
   580
		\assabetb\vi_power.cpp.
sl@0
   581
sl@0
   582
8)	MichaelP
sl@0
   583
	1)	HWA API implementation now corresponds to API document version 0.15:
sl@0
   584
		a) Removed enum TTaskPriority from d32hwa.h (was not used).
sl@0
   585
		b) Two new functions in class RHwaTask:
sl@0
   586
		   TInt PutData(RTransferBuffer& aBuf, TInt aBytesToBeTransfered,
sl@0
   587
		                TInt* aBytesTransfered=NULL, TInt TransferId=KTfBufIdNull);
sl@0
   588
		   and
sl@0
   589
		   TInt PutData(RTransferBuffer& aBuf, TRequestStatus& aStat,
sl@0
   590
		                TInt aBytesToBeTransfered, TInt* aBytesTransfered=NULL,
sl@0
   591
		                TInt aTransferId=KTfBufIdNull);
sl@0
   592
		   which allow the user to specify the number of bytes to be transferred to the
sl@0
   593
		   DSP (rather than the whole buffer).
sl@0
   594
		c) New member in class TTaskDataTfInfo (d32hwa.h): TInt iBytesToBeTransfered;
sl@0
   595
		d) Renamed THwaPanic enums from EHwaXxx to EHwaPanicXxx (k32hwa.h).
sl@0
   596
		e) Added virtual destructor for class THwaTaskHwInterface to prevent resource
sl@0
   597
		   leaking in derived classes.
sl@0
   598
		f) Removed function TInt DHwaTask::Priority() (was not used).
sl@0
   599
		g) New member in class THwaDataTfReq (k32hwa.h): TInt iBytesToBeTransfered;
sl@0
   600
		h) Removed data member iPriority from class DHwaTask: moved to class
sl@0
   601
		   THwaTaskHwInterface; thus the task priority is now managed entirely by the PDD.
sl@0
   602
		i) Added three additional arguments to TInt THwaTaskHwInterface::DoInputFrom(const
sl@0
   603
		   DHwaTask& /*aTask*/, TInt /*aOutputIndex*/, TInt /*aInputIndex*/,
sl@0
   604
		   TInt /*aConnectionId*/) to pass the task index and connection ID information to
sl@0
   605
		   the PDD.
sl@0
   606
		j) Made function void DHwaDevice::SetStatus(THwaDeviceStatus aStatus) public
sl@0
   607
		   (was: protected).
sl@0
   608
		k) Merged two functions of class DHwaDevice
sl@0
   609
		   TInt TaskCallPutData(DHwaTask* aTask, const TAny* aArg);
sl@0
   610
		   TInt TaskCallGetData(DHwaTask* aTask, const TAny* aArg);
sl@0
   611
		   into one function
sl@0
   612
		   TInt TaskCallTransferData(DHwaTask* aTask, const TAny* aArg, THwaDataTfDir aDir);
sl@0
   613
		l) Fixed kernel heap memory leak caused by incorrect call to S::TransferWindowClose()
sl@0
   614
		   in destructor DHwaTask::~DHwaTask().
sl@0
   615
sl@0
   616
	2)	USB client implementation:
sl@0
   617
		a) Added "#define SET_DESCRIPTOR_REQUEST_SUPPORTED" to k32usbc.h (in commented-out
sl@0
   618
		   form).
sl@0
   619
		b) Added "const TUint16 KUsbVendorId_Symbian = 0x0E22;" to usb.h (USB-IF assigned
sl@0
   620
		   Vendor ID).
sl@0
   621
sl@0
   622
sl@0
   623
Version 1.02.363
sl@0
   624
================
sl@0
   625
(Made by Dennis 26/10/2001)
sl@0
   626
sl@0
   627
1)	MarkCa
sl@0
   628
	1)	Updated Linkup MMC port with event checking asserts.
sl@0
   629
	2)	Modified P32MMC.H to allow per-platform configuration.  The file
sl@0
   630
		can only be included into ASSP-specific builds.  It reads a header
sl@0
   631
		file MMC_CFG.H from \epoc32\include\kernel\ASSP.
sl@0
   632
	3)	Fixed FID-4ZKEKQ (Inefficient memfill in MMC driver.)  Use Mem::Fill()
sl@0
   633
		instead of loops to fill buffers with 0xff in DoFormat() for
sl@0
   634
		DMmcMediaDriverFlash.
sl@0
   635
sl@0
   636
2)	Nicolas
sl@0
   637
	1)	Fixed THY-52WJTE (DLL static data support doesn't
sl@0
   638
		allow for DLLs which only have BSS): The "$DAT" chunk
sl@0
   639
		which holds the initial content of the DATA section is
sl@0
   640
		not created when there is no DATA section.
sl@0
   641
		Additionally it is not created for ROM-based DLLs as
sl@0
   642
		the initial content is fetched from ROM in that case.
sl@0
   643
	2)	Fixed generic bootstrap defect FID-53BKSD (920T
sl@0
   644
		MMU_Invalidate is wrong): The ARM920T version of that
sl@0
   645
		function now only invalidates TLB and I-cache.
sl@0
   646
	3)	Fixed kernel defect THY-53FE32 (Confusion between
sl@0
   647
		TheKernelPage and TKernelPage ctor)
sl@0
   648
	4)	Fixed generic bootstrap defect THY-53LC9Y (crash when
sl@0
   649
		only exception handlers and supervisor stack/heap in
sl@0
   650
		IRAM).  Reversed exception code and supervisor
sl@0
   651
		heap/stack allocation order in fast RAM to ensure that
sl@0
   652
		stack/heap always at top of bank where the bootstrap
sl@0
   653
		stack is.  Otherwise the adjusted stack value after
sl@0
   654
		enabling MMU is wrong.
sl@0
   655
	5)	Fixed generic bootstrap defect FID-53LKTG (Bootstrap
sl@0
   656
		test code: heap test is useless, author should be
sl@0
   657
		shot).  Kernel data is now really checked.
sl@0
   658
	6)	Modified bootstrap tests to take into account possible
sl@0
   659
		exception vectors relocation to highmem.
sl@0
   660
	7)	Removed deprecated "screensize" keyword from bootstrap
sl@0
   661
		test obey files.
sl@0
   662
sl@0
   663
3)	ChrisM
sl@0
   664
	1)	Fixed WIR-53FANN (RArrayBase::HeapSort makes assumption about max iEntrySize value)
sl@0
   665
		Changed temp buffer in HeapSort functions to use the const KSimpleArrayMaxEntrySize
sl@0
   666
	2)	Fixed MOS-53FLUF (HAL attribute ordering incorrect).  Moved EPenState from
sl@0
   667
 		before EKeyboardState to after ESystemDrive.
sl@0
   668
	3)	Fixed MOS-53RHP3v(Screen width and height returned by HAL are constant).  Added func
sl@0
   669
		to hal\src\emul.cpp to return the current sizes defined in epoc.ini.
sl@0
   670
sl@0
   671
4)	Carlosf
sl@0
   672
	1)	Changes to Assabet Variant to fix a problem with the External Interrupts
sl@0
   673
		dispatching. Modified \assabetb\vi_hw.cpp.
sl@0
   674
	2)	Fixed BAN-52BKKC Physical device driver for serial port have a defect and
sl@0
   675
		can cause loss of data.
sl@0
   676
sl@0
   677
5)	Pete
sl@0
   678
	Migrated the fixes for the following 6.1 defects:
sl@0
   679
	1) Fixed PAS-4WRMQS: "Requeing a read() after PowerOn Panics the Driver/Kernel".
sl@0
   680
	Problem caused by driver registering for PC Card IREQ events twice without
sl@0
   681
	de-registering in between. This causes a panic in the PC Card Controller.
sl@0
   682
		- Modified the Brutus and Assabet PC Card serial PDDs
sl@0
   683
		(DITXBA4.PDD/DITXAB4.PDD) so that rather than registering and de-registering
sl@0
   684
		for notification of PC Card IREQ events whenever they need to disable serial
sl@0
   685
		interrupts, the drivers keep the notification request registered - and simply
sl@0
   686
		enable and disable IREQ events on that socket.
sl@0
   687
		- Changed the PC Card Controller so that registering a TPBusCallBack object
sl@0
   688
		for event notification (with DPcCardController::RegisterEvent()) which is
sl@0
   689
		already registered returns an error rather than causing a kernel panic.
sl@0
   690
		- Modified the PC Card Controller by adding support for a new configuration
sl@0
   691
		request flag: KPccdConfigOverrideNormalPwrEvents. If a configuration is
sl@0
   692
		requested (via DPcCardController::RequestConfig()) which contains this flag
sl@0
   693
		setting then normal machine power handling by the Controller for the socket
sl@0
   694
		in question will be disabled - leaving the PC Card Controller client to
sl@0
   695
		implement its own power handling policy. This only applies to machine power
sl@0
   696
		on/ power off events. The Controller will continue to handle emergency power
sl@0
   697
		down and media change events. The power handling override will remain in
sl@0
   698
		force as long as the configuration is applied (i.e. this condition is removed
sl@0
   699
		following a call of DPcCardController::ReleaseConfig(),
sl@0
   700
		DPcCardController::DeregisterClient(), a media change event etc). This
sl@0
   701
		feature is required to support PC Card serial cards in order to support the
sl@0
   702
		'idle off' power policy which serial ports now implement.  Without this, even
sl@0
   703
		though the PC Card serial driver will ignore a machine power down call when
sl@0
   704
		it still has a write request in progress, the PC Card Controller will still 
sl@0
   705
		turn off the VCC supply to the card and thus power it down.		
sl@0
   706
	2) Fixed SCE-534GAE: "Problems with Serial Comms LDD power handling"
sl@0
   707
		- Modification to the serial port LDDs, ECOMM.LDD (including the WINS version)
sl@0
   708
		and ECOMMDCE.LDD to fix a problem with the way it implements the 'idle off'
sl@0
   709
		power policy. Although it currently ignores Power-Off notifications, it does
sl@0
   710
		not ignore Power-On notifications and instead completes any outstanding request
sl@0
   711
		with KErrAbort. Hence, if the machine happens to be powered off and then back
sl@0
   712
		on again before the serial port has had an inactivity timeout, any outstanding
sl@0
   713
		requests will wrongly be completed with KErrAbort as the machine turns back on.
sl@0
   714
		- Another problem fixed is associated with the fact that the
sl@0
   715
		current comms driver power handler doesn't actually power the
sl@0
   716
		device down on a normal power down event. However, the driver
sl@0
   717
		itself uses the power model at other times to control power
sl@0
   718
		to the device (e.g. when closing the driver). Hence,
sl@0
   719
		DChannelComm::DoPowerDown() is never called and the driver
sl@0
   720
		closes leaving the comms h/w powered up. This is now fixed,
sl@0
   721
		with the driver calling DoPowerDown directly when required.
sl@0
   722
	3) Fixed SCE-52YHQE: "Serial change notifier problems".
sl@0
   723
sl@0
   724
6)	WilliamR
sl@0
   725
	1)	Fix defect ROS-53TDGG "Access Violation in CreateFirstDllRefTable" by allowing for
sl@0
   726
		GetModuleHandleA to return 0. This is essentially the same code as used in 
sl@0
   727
		CreateDllRefTable() which handles dynamically loaded DLLs.
sl@0
   728
sl@0
   729
sl@0
   730
Version 1.02.362
sl@0
   731
================
sl@0
   732
(Made by ChrisM, 05/10/2001)
sl@0
   733
sl@0
   734
1)	CarlosF
sl@0
   735
	1)	Port defect fix for defect ALM-4VQB5V Ditizer freezes (was: The Brutus
sl@0
   736
		board freezes after entering 50-60 characters with HWR) from 6.1.
sl@0
   737
		Modified \assabetb\vi_xyin.cpp and \brutusa\vi_xyin.cpp.
sl@0
   738
sl@0
   739
2)	MarkCa
sl@0
   740
	1)	Fixed FID-4ZWDMZ (MMC program poll is too slow to be useful.)
sl@0
   741
		Use TMilliSecondCallBack instead of TTickLink.  Pure virtual DMMCStack
sl@0
   742
		function ProgramPollPeriod() replaced with pure virtual DMMCController
sl@0
   743
		function ProgramPeriodInMilliSeconds().
sl@0
   744
	2)	Moved Integrator LFFS drive to k:.  ImpHal::TotalSupportedDrives() now
sl@0
   745
		returns 9 instead of 2, as does unused Variant::PeriphBusMachineInfo().
sl@0
   746
		MEDLFS changed to use 22MB of flash across three pairs of chips.
sl@0
   747
		The memory range is a contiguous block, which can be specified at
sl@0
   748
		compile time in \integratorap\lffs\ffs_config.h.
sl@0
   749
sl@0
   750
3)	JonM
sl@0
   751
	1)	Fixed defect FER-4XDK9G - "Assabet timers go off at strange intervals."
sl@0
   752
	2)	Fixed defect MET-52AF29 - "Power off/on may freeze Assabet/Brutus"
sl@0
   753
	3)	Fixed defect in TSa1100::SetRtcData. This needed to wait longer for the new value to take effect.
sl@0
   754
	4)	Moved HELEN's exported headers from E32 to the HELEN variant.
sl@0
   755
		This helps fix defect MAY-4XWM9Q - "e32 does not build in an IPR-E OCK".
sl@0
   756
		It also moves what should probably be IPR category B stuff from a cat E directory.
sl@0
   757
sl@0
   758
4)	MichaelP
sl@0
   759
	1)	HWA API implementation now corresponds to API doc version 0.14
sl@0
   760
		a) THwaTaskHwInterface::DoCloseTask() now has a parameter TBool
sl@0
   761
		   aCallbackRequest which indicates whether or not the PDD should
sl@0
   762
		   finally call DHwaTask::CloseComplete()
sl@0
   763
		b) RHwaTask::Logon() now has a second parameter TUint aFlagsWord which
sl@0
   764
		   can be used to make a logon request more specific
sl@0
   765
		c) RHwaTask functions Start(), Suspend(), Resume(), and SetPriority()
sl@0
   766
		   are now asynchronous; however this is transparent to the user as the
sl@0
   767
		   asynchronousness is wrapped up in the d32hwa.inl inline header file
sl@0
   768
		d) Renamed DHwaTask::DoLogonComplete() to LogonComplete()
sl@0
   769
	2)	USB PIL: Endpoint Data Toggles are now correctly reset after Set_Interface and
sl@0
   770
		Set_Configuration requests.
sl@0
   771
sl@0
   772
5)	AndrewT
sl@0
   773
	1)	Fixed BAN-52BKTN (CAsyncCallBack ctor TCallBack& could be const). Made
sl@0
   774
		the TCallBack parameters to the constructor and Set() const.
sl@0
   775
	2)	Fixed BAN-52BKV2 (Should inline TInt RSubSessionBase::SubSessionHandle() be
sl@0
   776
		const?). Added const to this member.
sl@0
   777
	3)	Fixed THE-52WJR6 (Equality operators for TThreadId and TProcessId should be
sl@0
   778
		const). Made the accessor and comparison operators const on these classes.
sl@0
   779
6)	RobertJ
sl@0
   780
	1) 	Incorrect behaviour in usb client after getting deconfigured then
sl@0
   781
		configured, without an intervening reset.
sl@0
   782
		Data toggles were not getting reset,
sl@0
   783
		ldd wasn't cancelling user requests,
sl@0
   784
		PIL layer wasn't cancelling ldd requests and
sl@0
   785
		psl layer was trying to drain fifo because RPE bit was set.
sl@0
   786
		RPE will get reset on next read when RPC gets cleared and fifo is
sl@0
   787
		automatically emptied.
sl@0
   788
	2)	Fixed FID-52HBTA: USB driver not leave safe
sl@0
   789
	3)	Fixed ROS-534EAV: usbdma.cpp mixes new[] and delete
sl@0
   790
sl@0
   791
7)	ChrisM
sl@0
   792
	1)	Fixed  PAR-52CLSB (920T bootstrap code is Cat D it should be Cat E).  Changed
sl@0
   793
		categorisation to E after source code recategorisation CR - CMOS-52WJ5V
sl@0
   794
	
sl@0
   795
sl@0
   796
8)	Pete
sl@0
   797
	1)	Removed Cogent source
sl@0
   798
	2)	Removed Windermere source
sl@0
   799
	3)	Removed MEDCRM and MEDCRR media driver source.
sl@0
   800
sl@0
   801
Version 1.02.361
sl@0
   802
================
sl@0
   803
(Made by AndrewT, 31/08/2001)
sl@0
   804
sl@0
   805
1)	AndrewT
sl@0
   806
	1)	Fixed EDNATHE-4QQKZM (RThread().Suspend() deadlocks the emulator) again.
sl@0
   807
		The original fix was incomplete.
sl@0
   808
	2)	Fixed HEY-4XHGD5 (Remove \e32\include\K32DBGDD.H)
sl@0
   809
	3)	Fixed MET-4YSM3M (Text shell DIR command problems)
sl@0
   810
sl@0
   811
2)	Nicolas
sl@0
   812
	1)	Fixed FID-4VHGDK (Debug should show current thread
sl@0
   813
	  	after exception).  When a thread or process panics or
sl@0
   814
	  	takes an unhandled exception, the name and ID of the
sl@0
   815
	  	thread/process is displayed in the kernel traces (only
sl@0
   816
	  	if KPANIC is set).
sl@0
   817
	2)	Replaced void GetExceptionVectorsInfo(addr, size) with
sl@0
   818
	  	TUint32 ExcVectorsAddr() in generic bootstrap because
sl@0
   819
	  	vector table size not used anymore.  Documented that
sl@0
   820
	  	in bootstrap doc version 1.2.
sl@0
   821
	3)	Small changes following RHR 113.2 (exception code in
sl@0
   822
	  	fast RAM) review.
sl@0
   823
	4)	Exception vectors are now moved to highmem on assabet.
sl@0
   824
	5)	Updated makefiles used to build bootstrap tests for
sl@0
   825
	  	MLNK, MINT and VTEMPLATE now that the generic test
sl@0
   826
	  	code is contained in libraries.
sl@0
   827
sl@0
   828
3)	Chris
sl@0
   829
	1)	Fixed problem with cirrus not turning display on introduced with LCD changes for GT111
sl@0
   830
	2)	finished implementation of mapping video chunk from more than one physical region
sl@0
   831
	3)	Updates to video driver code from code review.  Split video driver up into bit which needs porting and the interface.
sl@0
   832
	4)	Changes to video driver for CR LROS-4Z7E7Z to allow scdv get all display modes
sl@0
   833
	5)	updated video test code to include tests for palette when not in palettized video mode and updated assabet and brutus
sl@0
   834
		to report if backlight is supported via HAL and fixed inconsistency between assabet,brutus and the template reporting
sl@0
   835
		different error value if palette functions called on a none palettized video mode.
sl@0
   836
	6)	Fixed  FID-4ZGJ2L WINS/WINC doesn't handle command line args correctly.  If executable command path 
sl@0
   837
		has spaces it will be quoted.  If a quote is found it skips until the next one.
sl@0
   838
	7)	Fixed MOS-4Y4D9K Two taps on screen required to turn on display.
sl@0
   839
sl@0
   840
4)	AndrewJ
sl@0
   841
	1)	Fixed THY-4YCP96 stopped Null pointer from being derefrenced in LFFS media driver
sl@0
   842
sl@0
   843
5)	JonM
sl@0
   844
	1)	Fixed defect FID-4WUGL4 - "MMU secondary config is annoying"
sl@0
   845
		The MMU secondary config is now obtained from a constant (KMmuSecondaryConfig) contained
sl@0
   846
		in the bootstrap's variant library.
sl@0
   847
	2)	Fixed defect FID-4XTC27 - "Bank width corrupted in BDB"
sl@0
   848
	3)	Fixed defect FID-4Y3CP3 - "Should fill unused Rom config blocks"
sl@0
   849
	4)	TransferBuffer performance greatly improved.
sl@0
   850
	5)	API CHANGE: DTransferWindow::MapInBufferL is now non-leaving and has been
sl@0
   851
		renamed to MapInBuffer.
sl@0
   852
	6)	Fixed bug in DPlatProcess::RemoveChunk, this no longer flushed the data chache
sl@0
   853
		when removing EFixedAddress chunks.
sl@0
   854
	7)	Extended T_HWA test to include a benchmark test for PutData. Also made this
sl@0
   855
		work on Integrator.
sl@0
   856
	8)	Fix for defect PAR-4VMKV7 - "WD_VT100 has lost its basic nature and now depends on the Comms drivers!!"
sl@0
   857
		WD_VT100.CPP Has now reverted being output only, via the debug port.
sl@0
   858
		The implementation using the ECOMM driver has been added as WD_VT100_ECOMM.CPP
sl@0
   859
	9)	Fix for defect FID-4YTET9 - "Manufacturer in HAL should be a UID"
sl@0
   860
		(Made TManufacturer definition obviousely extendable by using UIDs.)
sl@0
   861
	10)	Fixed defect SAS-4ZTD5D - "Missing l7200a t_trace.cpp file for bootstrap tests"
sl@0
   862
		Also fixed build failure with Integrator bootstrap test code.
sl@0
   863
	11)	Fixed defect SAS-4ZSGBU - "Exports inconsistent. v32isaab.h includes not exported"
sl@0
   864
	12)	Fixed defect FER-4XGDVT - "Integrator can't cope with time being set randomly"
sl@0
   865
	13)	Removed #include <e32transbuf.h> from e32std.h
sl@0
   866
sl@0
   867
6)	MarkCa
sl@0
   868
	1)	Implemented MEDLFS driver for Integrator.  Mounts on local drive 1
sl@0
   869
		and provides access to 2 * 4Mb flash chips.  ELFFS is not mounted
sl@0
   870
		by default.
sl@0
   871
sl@0
   872
7)	CarlosF
sl@0
   873
	1)	Changes to Assabet bootstrap and Variant to make Assabet's CPU and Memory
sl@0
   874
		bus clock speed configurable. Also includes an option to always format the
sl@0
   875
		C:\ drive on start-up if LFFS filesystem is mounted on this media.
sl@0
   876
	2)	Changes to SA1100 ASSP to enable WAIT signal detection on Assabet PCCard 
sl@0
   877
		IO accesses. This is required as the Assabet controller needs to be
sl@0
   878
		configured to detect the assertion of this signal on accesses to IO space
sl@0
   879
		contrary to Brutus which has this detection enabled by default.
sl@0
   880
sl@0
   881
8)	TimBa
sl@0
   882
	1)	Folding now folds 0xA0 (non-breaking space) to normal space (0x20)
sl@0
   883
sl@0
   884
9)	Andy Curran (Uikon)
sl@0
   885
	1)	Fix for (PER-4Z5DW6) Switch On/Off Control Panel Dialog case closed option does not work.
sl@0
   886
		Really just correcting a few typos.  Fix tested with success.  Fix accepetd by Nicolas T.
sl@0
   887
sl@0
   888
10)	MichaelP
sl@0
   889
	1)	Updated Helen port (mhelen target) to 6.1 port sources from 30 July
sl@0
   890
		2001 (Perforce revision 10426). Many changes, among them items 2) - 6).
sl@0
   891
	2)	Added directory stdarmWT (containing some files) under /bootstrap/mmu/:
sl@0
   892
		"Bootstrap MMU Write-Through Mode." 
sl@0
   893
	3)	Added directory ecommdma (also containing some files) under
sl@0
   894
		/e32/drivers/: "Implements the Logical device driver for a serial port
sl@0
   895
		using DMA transfers." This driver is used by the mhelen target.
sl@0
   896
	4)	New kernel exports for mhelen: 
sl@0
   897
		THelen::ReadIntMask(unsigned int);
sl@0
   898
		THelen::SetMcBspReg(unsigned int, unsigned int, unsigned int);
sl@0
   899
		THelen::SetComBSPStatus(int);
sl@0
   900
	5)	Re-activated #define __EARLY_DEBUG__ in
sl@0
   901
		\e32\ekern\epoc\arm\Helen\KA_UTL.CPP.
sl@0
   902
	6)	Added file \e32\rombuild\HelenTests.oby.
sl@0
   903
	7)	HWA API: RHwaTask functions GetData / PutData are now kernel exec calls
sl@0
   904
		(as opposed to kernel server calls) --> significant performance
sl@0
   905
		increase.
sl@0
   906
		The previous behaviour (i.e. server calls) can be had by uncommenting 
sl@0
   907
		//#define GETPUTDATA_ARE_KERNELSERVERCALLS in d32hwa.h.
sl@0
   908
	8)	HWA API: Constant value changed: KTfBufIdNull = 0x0 (was: 0xf0000000).
sl@0
   909
	9)	Added overloaded function
sl@0
   910
		DTransferWindow* Kern::TransferWindowFromHandle(TInt aHandle, DThread* aThread);
sl@0
   911
		to \e32\include\k32std.h, exported and frozen for all targets. Function
sl@0
   912
		is implemented in \e32\ekern\ks_transbuf.cpp. This function is used
sl@0
   913
		where the current thread is not the same as the one that created the
sl@0
   914
		window handle.
sl@0
   915
	10)	T_HWA has now integrated profiling support, activated by calling "t_hwa
sl@0
   916
		profile". 
sl@0
   917
sl@0
   918
11)	RobertJ
sl@0
   919
	1)	Added a new constructor each for RArray and RArrayPointer. This enables
sl@0
   920
		the sort/find to be used with an existing array with memory allocated
sl@0
   921
		outside of these classes.
sl@0
   922
sl@0
   923
sl@0
   924
Version 1.02.360
sl@0
   925
================
sl@0
   926
(Made by Peter, 06/08/2001)
sl@0
   927
sl@0
   928
1)	MarkCa
sl@0
   929
	1)	Fixed FID-4X8JKB (TMMCCommandDesc::Direction() should be const.)
sl@0
   930
	2)	Fixed MMC controller defect in ExecCommandSM() / EStDeselectEndCheck
sl@0
   931
		where cmd was not reset after the stack was popped.
sl@0
   932
	3)	Optimized DMMCcontroller::PowerUpBus() to initialize stack once for
sl@0
   933
		all drives.  Check if initialized successfully and still powered up.
sl@0
   934
		If so, complete immediately.  Retain ability to power down and power
sl@0
   935
		up again if failed because of unknown password (CMD3 RTO.)
sl@0
   936
sl@0
   937
2)	Chris
sl@0
   938
	1)	Changed brutusa\video.mmp to use visaba.lib not visaab.lib and cixyba.lib not cixyab.lib
sl@0
   939
	2)	Updated headers and removed dead code from files changed for LCD driver improvements.
sl@0
   940
	3)	Removed "screensize" keyword from header.iby files
sl@0
   941
sl@0
   942
3)	AndrewT
sl@0
   943
	1)	Fixed NEO-4X8CFY (TTime::WeekNoInYear() function returns wrong 
sl@0
   944
		week number if  week start day is not monday). Rewrote the
sl@0
   945
		second half of the offending function to do the right calculations.
sl@0
   946
sl@0
   947
4)	Michael
sl@0
   948
	1)	Commented out #define __EARLY_DEBUG__ in
sl@0
   949
		\e32\ekern\epoc\arm\Helen\KA_UTL.CPP.
sl@0
   950
	2)	Deleted line "screensize=320x240x12" from
sl@0
   951
		\e32\rombuild\mhelen\header.iby.
sl@0
   952
	3)	Added to \hal\inc\hal_data.h enum TManufacturer
sl@0
   953
		"EManufacturer_TexasInstruments" and enum TMachineUid
sl@0
   954
		"EMachineUid_Helen=0x101F3EE3".
sl@0
   955
	4)	HWA API:
sl@0
   956
		a) Introduction of concept of input and output index for tasks with
sl@0
   957
		   multiple I/Os. These indices are additional (& optional) arguments for
sl@0
   958
		   RHwaTask functions InputFrom(), DisConnectInput(), InputConnection(),
sl@0
   959
		   and OutputConnection(), and are also part of class TTaskConnectInfo.
sl@0
   960
		b) New RHwaTask querying functions: GetTaskProperties() and
sl@0
   961
		   GetTaskStatus().
sl@0
   962
		c) With these come two new classes: TTaskPropertyInfo (this not new but
sl@0
   963
		   updated), and TTaskStatusInfo.
sl@0
   964
		d) RHwaDevice::Tasks() now returns a find-handle -- the handle is no
sl@0
   965
		   longer a component of the filled TTaskPropertyInfo structure.
sl@0
   966
		e) RHwaDevice::CreateTask() has an additional parameter aNumWindows (#
sl@0
   967
		   of transfer windows for DHwaTask object).
sl@0
   968
		f) RHwaTask functions Logon() and LogonCancel() are now void.
sl@0
   969
		g) RHwaTask::SetOwningDevice() is now a protected class member and no
sl@0
   970
		   longer documented in the API doc.
sl@0
   971
		h) Class RHwaDevice is now a friend of class RHwaTask.
sl@0
   972
		i) Removed RHwaTask functions GetStatus() and GetTaskID().
sl@0
   973
		j) Removed RHwaTask default constructor (was empty).
sl@0
   974
		k) Removed enum THwaTaskLogon (was not used).
sl@0
   975
sl@0
   976
5)	Nicolas
sl@0
   977
	1)	Modified MCOY bootstrap to take into account the super
sl@0
   978
	  	and CPU pages layout changes introduced in E32 359.
sl@0
   979
	2)	MCOY ASSP layer now contains static arrays for the
sl@0
   980
	  	various stacks and initialises the PP::* and Arm::*
sl@0
   981
	  	stack "top" pointers.  Note that it would be possible
sl@0
   982
	  	to perform the stack allocation in the bootstrap
sl@0
   983
	  	instead.
sl@0
   984
	3)	Fixed MAY-4V4E5V (Breakpoints don't work on ARM
sl@0
   985
	  	architecture 5 processors). Now two opcodes in the
sl@0
   986
	  	undefined space are used: a 16 bit one for THUMB and a
sl@0
   987
	  	32 bit one for ARM (previously a unique 16 bit pattern
sl@0
   988
	  	was used).  RDebug::SetBreakPoint() has now a new
sl@0
   989
	  	overload which allows to specify what kind of
sl@0
   990
	  	breakpoint is excepted.  The old overload is
sl@0
   991
	  	deprecated (it returns KErrGeneral systematically).
sl@0
   992
	4)	Cosmetic changes to bootstrap and kernel following
sl@0
   993
	  	code review.
sl@0
   994
	5)	Removed dubious assert from bootstrap which crashed
sl@0
   995
	  	Brutus when warm-booting: MarkRamImageInBank() can
sl@0
   996
	  	actually be called with a BDB containing
sl@0
   997
	  	KBdbBankTypeRamAsRom in that case because the BDB
sl@0
   998
	  	initialised during cold boot is reused.  This allows
sl@0
   999
	  	to skip bank size/width detection.
sl@0
  1000
6)	William
sl@0
  1001
	1)	Add CleanupArrayDelete template to E32BASE.H, and remove the __EPOC_CLEANUP_SUPPORT__
sl@0
  1002
		include guards to complete Epoc32 Proposal SW1-87 (See STORE 0049 notes from 1998) 
sl@0
  1003
	2)	Export EKDATA.DEF so that ASSPs can get it from a published place, rather than
sl@0
  1004
		referring to ..\e32\bmarm\ekdata.def. Modified various MMP files to get this file
sl@0
  1005
		from \epoc32\release\marm\ekdata.def instead.
sl@0
  1006
sl@0
  1007
7)	Pete	
sl@0
  1008
	1)	Fixed FID-4XEE3C "Remount of fixed media broken". Change to the function
sl@0
  1009
		DPrimaryMediaBase::NotifyMediaStatusChange() which is called on media
sl@0
  1010
		change, but more significantly when forcing a remount on a drive. The change
sl@0
  1011
		involves only attempting to reset media driver current consumption if the
sl@0
  1012
		media is removable (since only drivers for removable media track current
sl@0
  1013
		consumption). This fixes a problem where the kernel heap became corrupt when
sl@0
  1014
		forcing a remount on a fixed drive.
sl@0
  1015
	2) 	Added the following functions to the TBusLocalDrive class:-
sl@0
  1016
sl@0
  1017
		a) TInt SetMountInfo(const TDesC8* aMountInfo,TInt aMountInfoThreadHandle);
sl@0
  1018
			The SetMountInfo() function allows a descriptor to be associated with
sl@0
  1019
		a local drive - which is passed down to the corresponding media driver for the
sl@0
  1020
		drive as that driver is opened. This therefore provides a means of supplying
sl@0
  1021
		additional information to the driver at creation time. In the case of 'secure'
sl@0
  1022
		drives, a driver may not open successfully unless the correct mount information
sl@0
  1023
		is supplied at creation time. Mount information, once passed into the drive, is
sl@0
  1024
		stored in the correspnding DPrimaryMedia object for the drive and is therefore
sl@0
  1025
		available for subsequent remounts of the drive following media change or machine
sl@0
  1026
		power down events. Mount information can be cleared by passing in a NULL mount
sl@0
  1027
		info descriptor.
sl@0
  1028
sl@0
  1029
		b) TInt ForceRemount(TUint aFlags);
sl@0
  1030
			This forces a local drive to be remounted. This is a replacement for the
sl@0
  1031
		function UserSvr::ForceRemountMedia(TMediaDevice aDevice) since the latter
sl@0
  1032
		requires knowlege of the h/w platform in quesion in order to select the 
sl@0
  1033
		appropraite TMediaDevice value for a particular drive.
sl@0
  1034
	3)	Added SetMountInfo() function to TLocDrv class and modified TLocDrv::Open()
sl@0
  1035
		so this no longer takes a 'const TDesC* aMountInfo' parameter. Corresponding
sl@0
  1036
		change to DMedia::Open() function which also no longer has a 
sl@0
  1037
		'const TDesC* aMountInfo' a parameter. The mount info is intead stored in the
sl@0
  1038
		DPrimaryMedia class which has two new functions:-
sl@0
  1039
			TInt SetMountInfo(TLocalDriveMessageData &aMountInfo,TInt aMediaNum);
sl@0
  1040
			TMediaDrvDescData* MountInfo(TInt aMediaNum);
sl@0
  1041
	4)	Change to DMediaDriver class which now supplies the DoCreate() function and instead
sl@0
  1042
		requires a derived driver class to supply the pure virtual function:-
sl@0
  1043
			Int Open(TMediaDevice aMediaDevice).
sl@0
  1044
		In most cases, convertion of existing non-removable drivers will require the existing
sl@0
  1045
		DoCreate() function to be renamed Open().
sl@0
  1046
sl@0
  1047
sl@0
  1048
Version 1.02.359
sl@0
  1049
================
sl@0
  1050
(Made by JonathanM, 18/07/2001)
sl@0
  1051
sl@0
  1052
1)	Morgan
sl@0
  1053
	1)	Implemented CR MHEY-4XHN9D "Move DPassiveDebugger implementation out
sl@0
  1054
		of the core kernel"
sl@0
  1055
		Exported the following functions and K32DBG.H
sl@0
  1056
			ImpMmu::AllocatePageTable(unsigned long, unsigned long, int)
sl@0
  1057
			DPlatProcess::DataSectionBase(DPlatChunk *) const
sl@0
  1058
			ImpMmu::FreePageTable(int, int)
sl@0
  1059
		Moved ka_edbg.cpp from all ASSPs and
sl@0
  1060
		\e32\ekern\epoc\arm\kc_edbg.cpp into a device-driver/extention in
sl@0
  1061
		\tools\debugger_stub\passivestub\...
sl@0
  1062
	2)	Removed DDebugger initialisation calls from boot.
sl@0
  1063
		A DDebugger implementation should load itself as an extension or a
sl@0
  1064
		device driver, and install using Plat::SetDebugger(debugger);
sl@0
  1065
	3)	Added __ENABLE_NOTIFY_DEBUGGER__ macro to enable/disable debug support
sl@0
  1066
		in the kernel.  Currently on in UREL and UDEB builds by default.
sl@0
  1067
	4)	Cogent passive debugger now lives in \tools\debugger_stub\passivestub
sl@0
  1068
		and is built as EDEBUG.LDD.  Include this as an extension to get
sl@0
  1069
		Lauterbach OS aware debug.  Or load it as an LDD with DEBUGGER.EXE
sl@0
  1070
			"DEBUGGER load" from the command line
sl@0
  1071
	5)	Helen debugger now lives in \helen\debugger and built as EDEBUG.LDD
sl@0
  1072
		See 4) for usage.
sl@0
  1073
sl@0
  1074
2)    Nicolas
sl@0
  1075
	1)	The kernel data/bss section can be relocated to any fast
sl@0
  1076
		RAM bank by setting KBdbFlagKernelData in the
sl@0
  1077
		appropriate BDB bank descriptor (generic bootstrap
sl@0
  1078
		only).
sl@0
  1079
	2)	The supervisor stack/heap can be relocated to any fast
sl@0
  1080
		RAM bank by setting KBdbFlagSvStackHeap in the
sl@0
  1081
		appropriate BDB bank descriptor (generic bootstrap
sl@0
  1082
		only).
sl@0
  1083
	3)	The kernel stacks (reentrant, null, irq, fiq, exception)
sl@0
  1084
		can be relocated to any fast RAM bank by setting the
sl@0
  1085
		relevant bit (KBdbFlagStack*) in the appropriate BDB
sl@0
  1086
		bank descriptor (generic bootstrap only).
sl@0
  1087
	4)	The kernel stacks are now allocated by the generic
sl@0
  1088
		bootstrap (either in DRAM or fast RAM).	 Super and CPU
sl@0
  1089
		pages layout modified to pass stack info to the kernel.
sl@0
  1090
		Each variant using the generic bootstrap calls
sl@0
  1091
		Arm::Init1Stacks() from ImpHal::Init1() to initialise
sl@0
  1092
		the stacks.
sl@0
  1093
	5)	For the windermere port which does not use the generic
sl@0
  1094
		bootstrap, the stacks are statically allocated in the
sl@0
  1095
		ASSP layer and ImpHal::Init1() initialises the
sl@0
  1096
		Arm::*StackTop and PP::*StackTop pointers.
sl@0
  1097
	6)	The exception vectors, handler and dispatch table can
sl@0
  1098
	  	be relocated to any fast RAM bank by setting
sl@0
  1099
	  	KBdbExcCode4k in the appropriate bank descriptor
sl@0
  1100
	  	(generic bootstrap only).  There also exist
sl@0
  1101
	  	KBdbExcCode8k and KBdbExcCode12k in case the exception
sl@0
  1102
	  	handlers get bigger in the future.
sl@0
  1103
	7)	The exception vectors are now located at 0xFFFF0000 on
sl@0
  1104
	  	platforms which support this.  Grep for
sl@0
  1105
	  	__CPU_EXC_VECTORS_MOVABLE in u32std.h for a
sl@0
  1106
	  	comprehensive list.  As a consequence dereferencing
sl@0
  1107
	  	NULL pointers in privileged mode now enters the debug
sl@0
  1108
	  	monitor.
sl@0
  1109
	8)	Fix defect CLE-4Y4EMG (Bootstrap doesn't fill in Rom
sl@0
  1110
		config section completely): ROM type fields now
sl@0
  1111
		correctly initialised in the super page.
sl@0
  1112
	9)	Bootstrap test code added for assabet.
sl@0
  1113
	10)	Bootstrap documentation updated.
sl@0
  1114
	11)	Template port updated.
sl@0
  1115
sl@0
  1116
sl@0
  1117
3)	Michael
sl@0
  1118
	1)	Fixed Helen crashing (exc id 26) at boot-up time: ImpHal::Idle() in 
sl@0
  1119
		\e32\ekern\epoc\arm\Helen\KA_UTL.CPP
sl@0
  1120
	2)	Modified macro test() in e32test.h such that it now also displays the
sl@0
  1121
		respective source filename when an RTest test fails. Added the necessary
sl@0
  1122
		overloaded operator() and constructor to class RTest in us_test.cpp.
sl@0
  1123
		An occasional stack overflow problem has been fixed: we now pass the filename
sl@0
  1124
		string as a const TText* rather than a const TDesc& (_S() vs. _L()).
sl@0
  1125
	3)	Fixed DPlatChunk::SetContiguousRamL() and DPlatChunk::SetHardwareL() in
sl@0
  1126
		\e32\ekern\epoc\kp_chk.cpp: too much memory was	reserved upon creation of a
sl@0
  1127
		transfer buffer, too little freed after closing it.
sl@0
  1128
	4)	Fixed CBitMapAllocator::ExtractRamPages() in \e32\euser\cbase\ub_bma.cpp:
sl@0
  1129
		eliminated a condition when the do/while loop would never be left.
sl@0
  1130
	5)	added two exported static kernel functions: DThread* Kern::SvThread() and
sl@0
  1131
		DProcess* Kern::SvProcess(), frozen for mawd, mcga, mcoy, meig, mhelen, mint,
sl@0
  1132
		misa, mlnk, mtemplate, wins
sl@0
  1133
	6)	HWA API:
sl@0
  1134
		- changed task parameter TaskID from type TInt to TUid
sl@0
  1135
		- RHwaTask::Close() and RHwaDevice::CloseTask() now return an TInt error code
sl@0
  1136
		  from the kernel (actually from the PDD), rather than being void
sl@0
  1137
		- T_HWA: creating a contiguous transfer buffer from the user side now works,
sl@0
  1138
		  added test of task messaging functions, misc. fixes.
sl@0
  1139
sl@0
  1140
4)	Tim Band and Arun Sachamuneewongse
sl@0
  1141
	1)	Added three 'next favourite' language specifiers to TLocale and
sl@0
  1142
		SLocaleData, and setters and getters for them in TLocale.
sl@0
  1143
sl@0
  1144
5)	JonathanM
sl@0
  1145
	
sl@0
  1146
	LCD Driver Portability Enhancements
sl@0
  1147
sl@0
  1148
	Moved all display related code into new kernel extension (VIDEODRIVEREX)
sl@0
  1149
	New LDD stub (VIDEODRIVERLDD) provides access to this implementation.
sl@0
  1150
sl@0
  1151
	Added HAL attributes
sl@0
  1152
sl@0
  1153
		EDisplayIsMono,                // Display is monochrome
sl@0
  1154
		EDisplayIsPalettized,          // True if display is in a paletized mode
sl@0
  1155
		EDisplayBitsPerPixel,          // Number of bits per pixel for current display mode
sl@0
  1156
		EDisplayMaxBitsPerPixel,       // Max color resolution display mode
sl@0
  1157
		EDisplayMemoryAddress,         // Start of video memory
sl@0
  1158
		EDisplayOffsetToFirstPixel,    // Offset of first displayed pixel from EDisplayMemoryAddress
sl@0
  1159
		EDisplayOffsetBetweenLines,    // Number of bytes between the first pixel in successive lines
sl@0
  1160
		EDisplayPaletteEntry,          // To get, pass entry number (Color returned as 0x00bbggrr)
sl@0
  1161
									   // To set, pass entry in bits 31-24, color in bits 23-0
sl@0
  1162
		EDisplayIsPixelOrderRGB,       // True if physical pixel layout is RGB, false for BGR
sl@0
  1163
		EDisplayIsPixelOrderLandscape, // True if physical pixel layout is landcape, false for portrait
sl@0
  1164
sl@0
  1165
	Added new exports to EKERN
sl@0
  1166
sl@0
  1167
		DPlatChunkHw::DoCreateL(class TPhysAddrs* aAddr,TInt aCount,TChunkType aChunkType)
sl@0
  1168
		TBool Plat::CheckInWservThread()                     // Returns true if current thread is the registerd WSERV thread
sl@0
  1169
		void Hal::SetDisplaySizeInPixels(const TSize& aSize) // Inform kernel of display size in pixels
sl@0
  1170
		void Hal::SetPhysicalScreenSize(const TSize& aSize)  // Inform kernel of display size in twips
sl@0
  1171
		void Hal::SetMaximumDisplayColors(TInt aMaxColors)   // Inform kernel of number of phsysical colors
sl@0
  1172
sl@0
  1173
	Removed the following methods
sl@0
  1174
sl@0
  1175
		ImpHal::DisplaySizeInPixels()
sl@0
  1176
		ImpHal::PhysicalScreenSize()
sl@0
  1177
		ImpHal::MaximumDisplayColors()
sl@0
  1178
sl@0
  1179
		Hal::DisplaySizeInPixels()
sl@0
  1180
		Hal::PhysicalScreenSize()
sl@0
  1181
sl@0
  1182
		ImpPsu::DisplayOn()
sl@0
  1183
sl@0
  1184
		Custom::DisplaySize();
sl@0
  1185
		Custom::PhysicalScreenSize();
sl@0
  1186
		Custom::DisplayOn();
sl@0
  1187
		Custom::DisplayOff();
sl@0
  1188
		Custom::MaximumDisplayColors()=0;
sl@0
  1189
sl@0
  1190
		P::ClearScreen()
sl@0
  1191
sl@0
  1192
6)	JonathanM
sl@0
  1193
sl@0
  1194
	Fixes for base release.
sl@0
  1195
sl@0
  1196
	1) Updated E32 and F32 version numbers.
sl@0
  1197
	2) Added IPR Policy files to base\assabetb\bootstrap\test (Category E)
sl@0
  1198
	   and base\helen\debugger (Category B).
sl@0
  1199
	3) Fixed WINS EDISP build warning.
sl@0
  1200
	4) Changed T_VIDEO so that it doesn't build for WINS.
sl@0
  1201
	5) Modified OBY files for varients which now use the new VideoDriverExtension.
sl@0
  1202
	   These now have "#define USE_VIDEODRIVEREXTENSION"
sl@0
  1203
	6) Removed spuriours Kern::Printfs.
sl@0
  1204
	7) Renamed Integrator VideoDriverExtension to match romkit name pattern.
sl@0
  1205
	8) Fixed bug in MISA videodriver GetPaletteEntry function.
sl@0
  1206
	9) Removed always on tracing from brutus screen driver code.
sl@0
  1207
	10) Fixed Integrator ROM building (needed to include video driver by correct name
sl@0
  1208
	    and exclude the old Neon250 kernel extension.
sl@0
  1209
sl@0
  1210
sl@0
  1211
Version 1.02.358
sl@0
  1212
================
sl@0
  1213
(Made by Michael, 19/06/2001)
sl@0
  1214
sl@0
  1215
1)	MichaelP
sl@0
  1216
	1)	Added (many) and modified (some) files for the MHELEN ASSP base port.
sl@0
  1217
	2)	Modified macro test() in e32test.h such that it now also displays the
sl@0
  1218
		respective source filename when an RTest test fails. Added the necessary
sl@0
  1219
		overloaded operator() and constructor to class RTest in us_test.cpp.
sl@0
  1220
	3)	Reverted the change of the test() macro mentioned under 2) because of stack
sl@0
  1221
		overflow problems with some programs which were detected during the link
sl@0
  1222
		stage. This needs to be further investigated. For the time being we use the
sl@0
  1223
		old version of test().
sl@0
  1224
	4)	Updated HWA driver (LDD + WINS PDD) and API code. Added (bogus) PDD for Helen.
sl@0
  1225
sl@0
  1226
2)	Nicolas
sl@0
  1227
	1)	rom.cfg: suppressed no-header option for integrator.
sl@0
  1228
	2)	Fixed defect FER-4XDH9P (Switch On messages not
sl@0
  1229
	  	received) on WINS by calling Power::SwitchOn() when
sl@0
  1230
	  	waking up following normal or emergency standby.
sl@0
  1231
	3)	Deleted Eiger custom bootstrap because the port
sl@0
  1232
	  	actually uses the generic one.
sl@0
  1233
sl@0
  1234
3)	MarkCa
sl@0
  1235
	1)	Fixed EDNHLJT-4WZGTD (Secure mmc - "Invalid" after cancelling pw change
sl@0
  1236
		& FM panic) and related EDNHAAO-4WZFYR (Secure MMC: Note "Invalid" shown
sl@0
  1237
		after updating the file system.)  New media attribute KMediaAttHasPassword
sl@0
  1238
		shadows PWD_LEN != 0 in card, and controller backs up store before
sl@0
  1239
		password operation, recovering on failure.
sl@0
  1240
	2)	Fixed CAN-4WJHJN (6.0) and EDNMCAN-4VYKTY (6.1) ("File server must accept
sl@0
  1241
		new MultiMediaCard password encoding scheme".)  Password notifier
sl@0
  1242
		changed to encode passwords as Unicode.
sl@0
  1243
	3)	Enabled debug password notifier for F32 fix EDNPCHY-4VWP5B
sl@0
  1244
		(problems with secure mmc implementation.)  This completes after
sl@0
  1245
		a user specified period and is used to debug using F32 when a
sl@0
  1246
		notifier is raised.
sl@0
  1247
	4)	Implemented CR PSCE-4VMP3K to set hard limit for RAM drive.  New HAL
sl@0
  1248
		attribute EMaxRAMDriveSize must be set to size in bytes, where value
sl@0
  1249
		includes FAT.
sl@0
  1250
sl@0
  1251
4)	TimBa	Fixed bug in MatchF: if argument was an empty descriptor, it always
sl@0
  1252
		returned null. Now if the candidate is nonempty it returns KErrNotFound.
sl@0
  1253
sl@0
  1254
Version 1.02.357
sl@0
  1255
================
sl@0
  1256
(Made by Carlos, 31/05/2001)
sl@0
  1257
sl@0
  1258
1)	William
sl@0
  1259
	1)	Change DebugThreadPanic to use a struct for the debugger-friendly values, so that
sl@0
  1260
		a simple autoexp.dat change will display the panic details properly.
sl@0
  1261
sl@0
  1262
2)	Dennis
sl@0
  1263
	1)	Fixed defect HAR-4WSGJ5 (RArray::FindInUnsignedKeyOrder not returning KErrNotFound).
sl@0
  1264
		This was due to problems with the special case handling of 4 byte entries in the ARM
sl@0
  1265
		assembler version.
sl@0
  1266
	2)	Fixed problem with MCOY failing to boot when image was loaded using RedBoot
sl@0
  1267
		instead of RT bootloader.
sl@0
  1268
		There were two problems - a spurious CIU interrupt and the fact that the RTC correction
sl@0
  1269
		and LastSetTime were uninitialised.
sl@0
  1270
sl@0
  1271
3)	Nicolas (RHR 113.1 completly implemented)
sl@0
  1272
	1)	5mx: Set LCD contrast to its default level every time
sl@0
  1273
	  	the screen is switched on.  This works around the
sl@0
  1274
	  	regression introduced while cleaning up the Hal class (p4 changelist 
sl@0
  1275
	  	(the screen was completely black and unusable).  
sl@0
  1276
	2)	Fixed typo in ImpMmu::UnmapPage(): confusion between pde and pte.
sl@0
  1277
	3)	Added support for TC RAM banks in generic bootstrap.
sl@0
  1278
	  	Hardware-specific initialisation is left as an
sl@0
  1279
	  	exercise to the system integrator.  It should be done
sl@0
  1280
	  	in HWInitialise().
sl@0
  1281
	4)	Added new consistency checks in generic bootstrap
sl@0
  1282
	  	(ROM/RAM bank ordering, bank overlap in
sl@0
  1283
	  	physical/linear space).  Enabled for UDEB only.
sl@0
  1284
	5)	Partially implemented scheme allowing to fake IRAM on
sl@0
  1285
	  	assabet (disabled).
sl@0
  1286
	6)	Reorganised bootstrap test code: generic code moved
sl@0
  1287
	  	from brutusa to bootstrap.
sl@0
  1288
	7)	Ported bootstrap test code on assabet.
sl@0
  1289
sl@0
  1290
4)	JonathanM
sl@0
  1291
	1)	Added a new export to the BLD.INF files for BRUTUSA and ASSABETB.
sl@0
  1292
		VI_POWER.H is now exported to KERNEL\SA1100\ to enable the sound drivers to
sl@0
  1293
		set their power requirements.
sl@0
  1294
sl@0
  1295
5)	AndrewCu
sl@0
  1296
	1)	Small changes to the RNotifier class in e32 (for Uikon 6.2 Dialog Server work).
sl@0
  1297
sl@0
  1298
6)	Tim Band
sl@0
  1299
	1)	Changed TChar functions that query the type of the character so that
sl@0
  1300
		they do not make an Exec call
sl@0
  1301
	2)	Made Private Use Area characters graphical and printable according
sl@0
  1302
		to their meaning
sl@0
  1303
	3)	New folding code that respects Unicode
sl@0
  1304
	4)	Removed Uzbek, Tajik and Azerbaijani from language list, added
sl@0
  1305
		Tagalog in place of Azerbaijani
sl@0
  1306
sl@0
  1307
7)	CarlosF
sl@0
  1308
	1)	Several changes to Assabet Variant to get LFFS to mount on C:\ drive. This ended up
sl@0
  1309
		being made configurable, Switch 4 of the switch-pack on the Companion Chip Card
sl@0
  1310
		is used to decide wheter to Mount FAT or LFFS on drive C:\.
sl@0
  1311
sl@0
  1312
1)	Nicolas (RHR 113.1 completly implemented)
sl@0
  1313
	1)	5mx: Set LCD contrast to its default level every time
sl@0
  1314
	  	the screen is switched on.  This works around the
sl@0
  1315
	  	regression introduced while cleaning up the Hal class (p4 changelist 
sl@0
  1316
	  	(the screen was completely black and unusable).  
sl@0
  1317
	2)	Fixed typo in ImpMmu::UnmapPage(): confusion between pde and pte.
sl@0
  1318
	3)	Added support for TC RAM banks in generic bootstrap.
sl@0
  1319
	  	Hardware-specific initialisation is left as an
sl@0
  1320
	  	exercise to the system integrator.  It should be done
sl@0
  1321
	  	in HWInitialise().
sl@0
  1322
	4)	Added new consistency checks in generic bootstrap
sl@0
  1323
	  	(ROM/RAM bank ordering, bank overlap in
sl@0
  1324
	  	physical/linear space).  Enabled for UDEB only.
sl@0
  1325
	5)	Partially implemented scheme allowing to fake IRAM on
sl@0
  1326
	  	assabet (disabled).
sl@0
  1327
	6)	Reorganised bootstrap test code: generic code moved
sl@0
  1328
	  	from brutusa to bootstrap.
sl@0
  1329
	7)	Ported bootstrap test code on assabet.
sl@0
  1330
sl@0
  1331
sl@0
  1332
Version 1.02.356
sl@0
  1333
================
sl@0
  1334
(Made by Pete, 10/05/2001)
sl@0
  1335
sl@0
  1336
1)	MarkCa
sl@0
  1337
	1)	Added base support for store LFFS optimization.  KDriveAttTransaction
sl@0
  1338
		bit added to \e32\include\e32std.h.
sl@0
  1339
sl@0
  1340
2)	Dennis
sl@0
  1341
	1)	Added mouse driver and VGA video driver for Integrator.
sl@0
  1342
	2)	Renamed the text window server DServer object to "TextWindowServer".
sl@0
  1343
sl@0
  1344
3)	Morgan
sl@0
  1345
	1)	Implemented Silent Running on Assabet
sl@0
  1346
sl@0
  1347
4)	Pete
sl@0
  1348
	Further changes to MMC Controller:-
sl@0
  1349
	1) 	Renamed the function 
sl@0
  1350
		DMMCSession::FillCommandDesc(TMMCArgumentTUint32,TUint8*,TUint32) to
sl@0
  1351
		FillCommandArgs() since it doesn't actually result in the command descriptor
sl@0
  1352
		array being updated.	
sl@0
  1353
	3) 	Removed check from DMMCStack::IssueCommandCheckResponseSM() whether
sl@0
  1354
		a multiblock read/write command has been selected with a total length less than 
sl@0
  1355
		a block. This is redundant.
sl@0
  1356
	4) 	Modified DMMCStack::CIMReadWriteBlocksSM(). This
sl@0
  1357
		function no longer sets up the command descriptor array for special block transfer 
sl@0
  1358
		commands (but expects this to have been already done before the function is called).		
sl@0
  1359
	8) 	Further change to the WINS local drive mappings. The entire local drive mapping for
sl@0
  1360
		WINS is now as follows:-
sl@0
  1361
		Local drive 0:	Internal RAM drive (EFixedMedia0) - Y:
sl@0
  1362
		Local drive 1:	1st special MMC Card on MMC socket 0 (ERemovableMedia0) - X: 
sl@0
  1363
		Local drive 2:	2nd special MMC Card on MMC socket 0 (ERemovableMedia0)
sl@0
  1364
		Local drive 3:	MMC Card on MMC socket 1 (ERemovableMedia1)
sl@0
  1365
		Local drive 4:	Not currently assigned
sl@0
  1366
		Local drive 5:	Not currently assigned
sl@0
  1367
		Local drive 6:	Not currently assigned
sl@0
  1368
		Local drive 7:	Not currently assigned
sl@0
  1369
		Local drive 8:	Internal LFFS drive (EFixedMedia1) - W:
sl@0
  1370
sl@0
  1371
5)	Pete
sl@0
  1372
	1)  	Modified bootstrap for Cirrus7211a so that this now runs at 36MHz.
sl@0
  1373
sl@0
  1374
6)	Nicolas 
sl@0
  1375
	1)	Added fixed size internal RAM banks in generic
sl@0
  1376
	  	bootstrap.
sl@0
  1377
	2)	Introduced support for area relocation in generic
sl@0
  1378
		bootstrap.  Every kind of file (including the primary)
sl@0
  1379
		can be relocated to an internal RAM bank.
sl@0
  1380
	3)	Updated generic bootstrap version number to 2.1.
sl@0
  1381
	4)	Submitted Richard's bootstrap test files.
sl@0
  1382
	5)	Removed MCORE stuff from generic bootstrap.
sl@0
  1383
	6)	Inversed order of "static" and "const" in _LIT()
sl@0
  1384
	  	definition to avoid lint warning.
sl@0
  1385
	7)	Added assabet.mbc (metabuild script).	 
sl@0
  1386
	8)	Implemented RProcess::GetMemoryInfo().  This allows to
sl@0
  1387
	  	extend GDB so it can attach itself to running threads.
sl@0
  1388
sl@0
  1389
7)	Michael
sl@0
  1390
	1) 	Added overloaded function:
sl@0
  1391
		DTransferBuffer* TransferBufferFromHandle(TInt aHandle, DThread *aThread)
sl@0
  1392
		to \e32\include\k32std.h, exported and frozen for all BUILDS. Function
sl@0
  1393
		implemented in \e32\ekern\ks_transbuf.cpp. This function is used where the
sl@0
  1394
		current thread is not the same as the one that created the handle.
sl@0
  1395
	2)	Changed behaviour of DPlatTransferBuffer::~DPlatTransferBuffer() and
sl@0
  1396
		DPlatTransferBuffer::DoClose() in \e32\ekern\emul\win32\kp_transbuf.cpp and 
sl@0
  1397
		\e32\ekern\epoc\kp_transbuf.cpp: iChunk gets only deleted if it actually exists,
sl@0
  1398
		i.e. is non-NULL
sl@0
  1399
	3)	Numerous changes to HWA implementation (User API, LDD and WINS PDD), work
sl@0
  1400
		still ongoing.
sl@0
  1401
sl@0
  1402
Version 1.02.355
sl@0
  1403
================
sl@0
  1404
(Made by Nicolas, 04/05/2001)
sl@0
  1405
sl@0
  1406
1)	William
sl@0
  1407
	1)	Changed the WINC-only KernelStarted semaphore to be anonymous, to prevent
sl@0
  1408
		problems with concurrent WINC execution on a multiple processor build machine.
sl@0
  1409
		This will not re-open defect EDNGBON-4JYNU6 "Inaccessibility of request
sl@0
  1410
		semaphores breaks EPOC connect" because this isn't a request semaphore.
sl@0
  1411
	2)	Fixed TGlobalAlloc to use User::AllocL rather than new[], and User::Free instead of
sl@0
  1412
		the mismatched delete. This will now work even if new[] plays funny tricks (which
sl@0
  1413
		is the case with CodeWarrior) and makes the User::ReAllocL call legitimate.
sl@0
  1414
sl@0
  1415
2)	Nicolas
sl@0
  1416
	1)	Merged 6.1 release branch back into the mainline.
sl@0
  1417
sl@0
  1418
Version 1.02.354
sl@0
  1419
================
sl@0
  1420
(Made by Dennis, 20/04/2001)
sl@0
  1421
sl@0
  1422
1)	AndrewJ
sl@0
  1423
	1) 	Changed the misa kernel.iby file to detect whether the build is for 
sl@0
  1424
	   	Assabet varient. If it is for assabet an alternative estart is 
sl@0
  1425
		included in the rom which automatically loads the LFFS on to K: drive 
sl@0
  1426
		as well as other tasks performed by estart. This should not take place
sl@0
  1427
		on any other platform.
sl@0
  1428
	2)	The generic estart is only loaded (in f32) for non Assabet platform as
sl@0
  1429
		added a definition call CUSTOM_ROM that is only defined for assabet. 
sl@0
  1430
	3) 	Added estart.cpp /assabetb/ and loadlffs.cpp to /assabetb/lffs/ for
sl@0
  1431
		new estart.exe component loaded only fopr Assabet.
sl@0
  1432
	4)	removed /test/ subdirectory in /assabetb/lffs/ as nothing it it is or 
sl@0
  1433
		should be used.
sl@0
  1434
	5)	removed obsolete definition of BASE_ROM from F32tests.oby,
sl@0
  1435
		E32tests.Oby and Alltests.oby
sl@0
  1436
sl@0
  1437
2)	Morgan
sl@0
  1438
	1)	Deleted \e32\bmarm\EXYIN.DEF
sl@0
  1439
	2)	Added EPenState attribute to HAL to get/set state of the digitiser.
sl@0
  1440
	3)	Added EKeyboardState.
sl@0
  1441
	4)	Added pen/display get/set functionality to BRUTUS HAL DLL and driver.
sl@0
  1442
	5)	Added Enable() and Disable() functions to digitiser driver on Brutus.
sl@0
  1443
	6)	Tweeked Brutus digitiser driver to send switch on events when coming
sl@0
  1444
		out of standby or hibernation (disabled) mode.
sl@0
  1445
	7)	Removed LCD switch on from LCD power handler.
sl@0
  1446
	8)	Generic kernel now doesn't call DisplayOn().
sl@0
  1447
	9)	Added Power::SwitchOn() that can be called from device drivers to
sl@0
  1448
		send a ESwitchOn event if the KPowerUserCpu bit is not set.  Does the
sl@0
  1449
		same thing as a call to SetRequirement(KPowerUserCpu | ...) but is
sl@0
  1450
		easier to understand.
sl@0
  1451
		Added variant that takes a TRawEvent to specify which event is sent
sl@0
  1452
		for switch on.
sl@0
  1453
		Call Power::SwitchOn() from your device driver to cause full UI switch
sl@0
  1454
		on.
sl@0
  1455
	10)	Tidied Brutus HAL DLL startup code.
sl@0
  1456
	11)	Made text window server take responsibility for turning on the screen
sl@0
  1457
		at switch on.
sl@0
  1458
	12)	Tidied Assabet HAL DLL startup code and removed spurious panicking
sl@0
  1459
		code.
sl@0
  1460
	13)	Updated HAL\DOC\HAL.DOC boilerplate startup code.
sl@0
  1461
	14)	Made display on imply switch on, and send events as appropriate
sl@0
  1462
	15)	assabetb, cirrus7211a, series5mx1 variant updates to maintain current
sl@0
  1463
		behaviour.
sl@0
  1464
	16)	Changed the prototype of DPowerModel::PowerStandby() to return an error
sl@0
  1465
		value.
sl@0
  1466
sl@0
  1467
3)	Dennis
sl@0
  1468
	1)	Fixed a problem with creation of fixed address chunks with initial
sl@0
  1469
		size zero.
sl@0
  1470
sl@0
  1471
4)	Jonathan
sl@0
  1472
	1)	Removed redundant Hal and UserHal functions from kernel and ASSPs.
sl@0
  1473
	2)	Refroze kernel exports for all platforms other than WINS/WINC.
sl@0
  1474
	3)	Removed associated variant functions and, where necessary to implement
sl@0
  1475
		the HAL API, re-implemented them via a HAL driver on the mainstream
sl@0
  1476
		platforms Brutus, Assabet and VTemplate. Other variant DLLs still
sl@0
  1477
		contain some redundant functions and may not have implementations for
sl@0
  1478
		all appropriate HAL attributes.
sl@0
  1479
sl@0
  1480
5)	Carlos
sl@0
  1481
	1)	Several changes to Assabet Variant to get PC Card working
sl@0
  1482
	2)	Assabet builds its own ATA driver (vi_medata.cpp). The generic ATA
sl@0
  1483
		driver is not used. Changed the MISA kernel.iby to allow Brutus to use
sl@0
  1484
		the generic ATA driver and Assabet to use its Variant-specific one.
sl@0
  1485
sl@0
  1486
6)	Dennis
sl@0
  1487
	1)	Added integrator port. No screen or serial drivers yet.
sl@0
  1488
sl@0
  1489
7)	Pete 	
sl@0
  1490
	4)	Fixed SCE-4V7S6C "MMC Controller card init. function is in-efficient
sl@0
  1491
		and unnecessarily complex". This entailed:-
sl@0
  1492
sl@0
  1493
		- Add new TMmcCardArray class to replace the DMMCStack::iCxNewAcqArray[]
sl@0
  1494
		and DMMCStack::iCards[] arrays and their associated functionality.
sl@0
  1495
		- Removal of ASSP layer function DMMCStack::PhysicalCardSlots()
sl@0
  1496
		  function as this was duplicating information already returned in the
sl@0
  1497
		  ASSP layer function DMMCController::SetMachineInfo() function.
sl@0
  1498
		- Addition of generic layer DMMCStack::Init() function to determine
sl@0
  1499
		  the max. number of cards for the platform once - at Controller
sl@0
  1500
		  init. time rather than every time a card stack is initialized.
sl@0
  1501
		- Modification to DMMCStack::PowerDownStack() function to add an extra
sl@0
  1502
		  argument to this function (TBool aMediaChange) indicating whether
sl@0
  1503
		  the power down is required due to media change or not.
sl@0
  1504
		- Removal of the 'update stack' implementation in the generic layer of
sl@0
  1505
		  the Controller. This was intended to re-scan for new cards after a
sl@0
  1506
		  media change. This is now redundant since all cards are always
sl@0
  1507
		  powered down on media change.
sl@0
  1508
		- Various comments added throughout PS_MMC.CPP to aid clarity.
sl@0
  1509
	5)	Fixed FID-4UZLFG "Increase number of supported local drives"
sl@0
  1510
sl@0
  1511
8)	Nicolas
sl@0
  1512
	1)	Added \brutusa\brutusa.mbc
sl@0
  1513
	2)	Cogent: Moved call to ImpHal::EnableIrqs() from ImpPic::Init3() to
sl@0
  1514
	  	beginning of ImpHal::Init3() to avoid the board hanging forever while
sl@0
  1515
	  	initialising the PCI base module.
sl@0
  1516
sl@0
  1517
9)	William
sl@0
  1518
	1)	Removed temporary WINSCW workaround in up_i64.cpp, now that the CodeWarrior
sl@0
  1519
		compiler supports the BT instruction.
sl@0
  1520
	2)	Added WINSCW-specific variation of the path constants in up_path.cpp
sl@0
  1521
	3)	Rearranged win32/up_trp.cpp version of TTrap::Trap() so that the register
sl@0
  1522
		saving happens before the C++ code to manipulate iResult and aResult. This
sl@0
  1523
		avoids a problem where the CodeWarrior compiler was saving EBX on the stack and
sl@0
  1524
		and using it as a temporary during the iResult/aResult mangling, causing the
sl@0
  1525
		wrong EBX value to be restored during Leave.
sl@0
  1526
sl@0
  1527
Version 1.02.353
sl@0
  1528
================
sl@0
  1529
(Made by RobertJ, 26/03/2001)
sl@0
  1530
sl@0
  1531
1)	Carlos
sl@0
  1532
	1)	Several Changes in Assabet Bootstrap and vi_power.cpp in order to get
sl@0
  1533
		the Power Management/Sleep Mode working properly.
sl@0
  1534
	2)	Changes to Assabet Keyboard driver/controller
sl@0
  1535
	3)	Removed #define __USE_LEDS_FOR_SYSTEM_DEBUG. User software can now use
sl@0
  1536
		those LEDs if they wish.
sl@0
  1537
	4)	Had to implement a function in the Assabet Variant to allow enabling
sl@0
  1538
		RTC Interrupts. Surprisingly the SA1100 ASSP does not have these
sl@0
  1539
		functions!
sl@0
  1540
	5)	Some changes to the SA1100 Interrupt controller (only affect Assabet
sl@0
  1541
		as they were changes in the way External Interrupts are handled).
sl@0
  1542
	6)	Needed to export the Kernel function ImpMmu::LinearToPhysical as this
sl@0
  1543
		will be called from the Assabet Variant (vi_power.cpp).
sl@0
  1544
	7)	Got rid of the debug message printed every time the Variant is called:
sl@0
  1545
		after waking up, a call to re-enable the Debug Port would attempt to
sl@0
  1546
		print this out and crash!
sl@0
  1547
sl@0
  1548
2)	Alastair
sl@0
  1549
	1)	Added initial transfer buffer functionality.  Chief classes are
sl@0
  1550
		RTransferBuffer and RTransferWindow user-side, described in
sl@0
  1551
		E32TransBuf.h, and DTransferBuffer and DTransferWindow
sl@0
  1552
		kernel-side, described in K32Std.h.  Test program is built from
sl@0
  1553
		e32test\mmu\t_transbuf.cpp, though the test isn't fully
sl@0
  1554
		complete yet.  Also, the scheme doesn't yet cater for transfer
sl@0
  1555
		buffer access via transfer windows for "fixed" processes, though
sl@0
  1556
		it will shortly.
sl@0
  1557
		
sl@0
  1558
3)	Nicolas
sl@0
  1559
	1)	Introduced example metabuild script for MCGA (see
sl@0
  1560
		\cogent1\cogent1.mbc).
sl@0
  1561
sl@0
  1562
4)	MarkCa
sl@0
  1563
	1)	Fixed CAN-4TXKZQ (Using a PC Card can wrongly produce password
sl@0
  1564
	  	notifier)
sl@0
  1565
	2)	Fixed CAN-4TWM6E (L7200 MMC Controller takes control of second UART)
sl@0
  1566
		Fix affects t_atadrv, so changed \l7200a\va_hw.cpp to use non-zero
sl@0
  1567
		machine uid.
sl@0
  1568
	3)	Fixed CAN-4TYFHS (Reading to the end of a MultiMediaCard can produce
sl@0
  1569
		an out-of-range error)
sl@0
  1570
	4)	Fixed EDNTDAS-4L4JZ8 (Thread leakage using emulators)
sl@0
  1571
	5)	Fixed TOD-4RXJSS (Race condition causing accessing of already delete
sl@0
  1572
		pointer when deleting DChannelComm)
sl@0
  1573
	6)	Fixed CAN-4UBJU2 (Controller does not process all error conditions)
sl@0
  1574
	7)	Changed l7200\pa_mmc.cpp to return KMMCErrNotSupported because pre 2.1
sl@0
  1575
		controller.
sl@0
  1576
	8)	Added __MLNK__ case to cpu defines in u32std.h.
sl@0
  1577
	9)	Fixed CAN-4UNE8D (MMC Controller access violation after emergency power
sl@0
  1578
		down)
sl@0
  1579
	10)	Removed KPBUS1 | KPBUS2 | KPBUSDRV tracing from mlnk\header.iby.
sl@0
  1580
	
sl@0
  1581
5)	AndrewJ
sl@0
  1582
	1)	Enabled LFFS on assabet.
sl@0
  1583
	2)	Edited vi_hw.cpp and vi_pbus.cpp to enable LFFS on K: with PC Card
sl@0
  1584
	  	disabled.
sl@0
  1585
	3)		put in fixes from 6.1 Numbers: 	SCE-4TVQ78	
sl@0
  1586
						TOD-4RWEHL
sl@0
  1587
sl@0
  1588
6)	Dennis
sl@0
  1589
	1)	Fixed XScale RTC rounding problem
sl@0
  1590
	2)	Added check for imprecise aborts on XScale - fault the kernel if they
sl@0
  1591
	  	occur.
sl@0
  1592
	3)	iExtraData=FSR for both data and prefetch aborts.
sl@0
  1593
sl@0
  1594
	*** Release note for XScale delivery ***
sl@0
  1595
sl@0
  1596
	This release supports the Intel IQ80310 evaluation board based on the
sl@0
  1597
	XScale 80200 processor (Coyanosa). Code for this board can be built by
sl@0
  1598
	specifying platform MCOY on the build command line.
sl@0
  1599
sl@0
  1600
	The following property definitions are used to specify the CPU type (in
sl@0
  1601
	\e32\include\u32std.h):
sl@0
  1602
sl@0
  1603
	__CPU_XSCALE__
sl@0
  1604
		Means that the CPU is based on the XScale microarchitecture
sl@0
  1605
	__CPU_ARMV5TE
sl@0
  1606
		Means that the CPU supports the ARMv5TE instruction set
sl@0
  1607
	__CPU_ARM_ABORT_MODEL_RESTORED
sl@0
  1608
		Means that the base register is unaltered if a load/store with base
sl@0
  1609
		register writeback is aborted.
sl@0
  1610
	__CPU_SPLIT_CACHE
sl@0
  1611
		Means that the CPU uses separate instruction and data caches
sl@0
  1612
	__CPU_SPLIT_TLB
sl@0
  1613
		Means that the CPU uses separate instruction and data TLBs
sl@0
  1614
	__CPU_WRITE_BUFFER
sl@0
  1615
		Means that the CPU uses a write buffer
sl@0
  1616
	__CPU_WRITE_BACK_CACHE
sl@0
  1617
		Means that the CPU (data) cache supports write-back operation and that
sl@0
  1618
		the OS uses this mode for normal RAM allocations.
sl@0
  1619
	__CPU_CACHE_WRITE_ALLOCATE
sl@0
  1620
		Means that the CPU (data) cache supports line allocation on writes and
sl@0
  1621
		that the OS uses this mode for normal RAM allocations.
sl@0
  1622
	__CPU_CACHE_FLUSH_BY_LINE_ALLOC
sl@0
  1623
		Means that the (data) cache is cleaned/flushed by using an explicit
sl@0
  1624
		line allocate instruction.
sl@0
  1625
	__CPU_CACHE_POLICY_IN_PTE
sl@0
  1626
		Means that the (data) cache policy can be changed between writethrough
sl@0
  1627
		and writeback on a page-by-page basis using flags in the page table
sl@0
  1628
		entries.
sl@0
  1629
	__CPU_HAS_CACHE_TYPE_REGISTER
sl@0
  1630
		Means that the CPU possesses the cache type register as specified in
sl@0
  1631
		the ARM architecture reference manual (CP15 CRn=CRm=0, opc2=1)
sl@0
  1632
	__CPU_HAS_SINGLE_ENTRY_ITLB_FLUSH
sl@0
  1633
		Means that the CPU supports the 'Flush single ITLB entry by MVA'
sl@0
  1634
		instruction (MCR P15, 0, Rn, C8, C5, 1)
sl@0
  1635
	__CPU_HAS_SINGLE_ENTRY_ICACHE_FLUSH
sl@0
  1636
		Means that the CPU supports the 'Flush single ICache line by MVA'
sl@0
  1637
		instruction (MCR P15, 0, Rn, C7, C5, 1)
sl@0
  1638
	__CPU_HAS_BTB
sl@0
  1639
		Means that the CPU has a branch target buffer which needs to be
sl@0
  1640
		flushed explicitly in conjunction with partial ICache flushes.
sl@0
  1641
	__CPU_USE_MMU_TEX_FIELD
sl@0
  1642
		Means that the CPU supports the extended page table permissions (TEX)
sl@0
  1643
		field.
sl@0
  1644
	__CPU_EXC_VECTORS_MOVABLE
sl@0
  1645
		Means that the CPU allows the exception vectors to be relocated to
sl@0
  1646
		FFFF0000.
sl@0
  1647
sl@0
  1648
	All E32 and F32 automatic tests pass on this release, with the exception
sl@0
  1649
	of:
sl@0
  1650
		T_PCCD1, T_PCCD2 - because the board does not support PCMCIA
sl@0
  1651
		T_DEBUGGER - because the debugger uses a bit pattern for breakpoints
sl@0
  1652
			which is defined in ARM Arch 5 (was undefined on ARM Arch 4). This
sl@0
  1653
			is being handled as a defect (defect number MAY-4V4E5V).
sl@0
  1654
sl@0
  1655
	The branch target buffer is not enabled by this release. This is due to a
sl@0
  1656
	known problem when executing THUMB code with the BTB enabled.
sl@0
  1657
sl@0
  1658
7)	Pete
sl@0
  1659
	1) 	First release of Hardware Accelerator (HWA) LDD and a crude emulation
sl@0
  1660
		of a HWA PDD on WINS.
sl@0
  1661
	2) 	Changes to MMC Controller to support SD Memory card initialisation.
sl@0
  1662
	3) 	Added TMMCCardArray class and various other minor changes to the MMC
sl@0
  1663
		Controller such (e.g. more comments).
sl@0
  1664
	4)	Improved the WINS MMC emulation. Two cards are now emulated rather
sl@0
  1665
		than one as before. Also, better account of the current card status is
sl@0
  1666
		taken when deciding how to respond to an MMC command.
sl@0
  1667
	5) 	Change to the WINS local drive mapping. Local drive 2 
sl@0
  1668
		is now the primary partition on the second emulated MMC card rather
sl@0
  1669
		than a secondry partition on the first emulated MMC card.
sl@0
  1670
	6)	Temporarily disabled PC Card Peripheral bus (EPBUS.DLL) on Cirrus Logic
sl@0
  1671
		board and replaced this with MMC Peripheral bus to facilitate development
sl@0
  1672
		of SD Memory card development. (PC Card support will be restored once
sl@0
  1673
		the multiple peripheral bus Controllers are supported).
sl@0
  1674
	
sl@0
  1675
8)	William
sl@0
  1676
	1)	Added exported destructor to CAsyncCallBack, to solve a problem with
sl@0
  1677
		the CodeWarrior compiler.
sl@0
  1678
sl@0
  1679
Version 1.02.352
sl@0
  1680
================
sl@0
  1681
(Made by Morgan, 08/03/2001)
sl@0
  1682
sl@0
  1683
0)	Requires E32TOOLS(173), E32TOOLP(226), F32(260)
sl@0
  1684
	from \\epoc\development\base\ongoing\...
sl@0
  1685
sl@0
  1686
1)	Morgan
sl@0
  1687
	1)	Split functions in UP_DLL.CPP into separate source files.  This
sl@0
  1688
		allows the linker to discard unused functions.
sl@0
  1689
		Functions are grouped by functional area. up_dll_file.cpp,
sl@0
  1690
		up_dll_global.cpp, up_dll_static, up_dll_tls.cpp.
sl@0
  1691
	2)	Split EDLL.LIB into EDLL.LIB containing the entrypoint and
sl@0
  1692
		EDLLSTUB.LIB containing the class Dll stub functions.
sl@0
  1693
	3)	Removed strange .idata$3 padding from UP_DLL.CPP since (we think) it
sl@0
  1694
		is a hack for a defunct version of GCC
sl@0
  1695
	4)	Moved thumb gcc helper functions into up_gcc.cpp in EGCC.LIB
sl@0
  1696
	5)	Removed thumb gcc helper functions from uc_exe.cpp.  These are now in
sl@0
  1697
		EGCC.LIB that should be included in the link of a GCC EXE or GCC DLL.
sl@0
  1698
	6)	Moved float gcc helper functions into up_gcc_float.cpp in EGCC.LIB
sl@0
  1699
	7)	Removed null definition of atexit() from up_dll.cpp
sl@0
  1700
	8)	Deleted \e32\euser\epoc\arm\uc_dll.cpp since it is not used anywhere
sl@0
  1701
	9)	Integrated MAWD DDebugger bug fix (again)
sl@0
  1702
	10)	Added default cpu definition for __MTEMPLATE__ in U32STD.H to make it
sl@0
  1703
		compile
sl@0
  1704
sl@0
  1705
2)	Carlos
sl@0
  1706
	1)	Disabled the Pc Card on Assabet as it is not fully working and causes
sl@0
  1707
		problems when using the CF loader to download an image.
sl@0
  1708
sl@0
  1709
3)	Dennis
sl@0
  1710
	1)	Added basic port to Intel XScale 80200 CPU on IQ80310 board.
sl@0
  1711
	2)	Fixed defect HAS-4U7N92 (T_WWINS hangs on Brutus). This is due to the
sl@0
  1712
		smaller screen size compared with the Series 5.
sl@0
  1713
		Modified notifier stuff to take account of the screen size.
sl@0
  1714
sl@0
  1715
4)	RobertJ
sl@0
  1716
	1) 	Added notification of clear stall to USB Client
sl@0
  1717
	2) 	Fixed dma handling code for USB Client.
sl@0
  1718
sl@0
  1719
5)	Alastair
sl@0
  1720
	1)	Added initial transfer buffer functionality.  Chief classes are
sl@0
  1721
		RTransferBuffer and RTransferWindow user-side, described in
sl@0
  1722
		E32TransBuf.h, and DTransferBuffer and DTransferWindow
sl@0
  1723
		kernel-side, described in K32Std.h.  Test program is built from
sl@0
  1724
		e32test\mmu\t_transbuf.cpp, though the test isn't fully
sl@0
  1725
		complete yet.  Also, the scheme doesn't yet cater for transfer
sl@0
  1726
		buffer access via transfer windows for "fixed" processes, though
sl@0
  1727
		it will shortly.
sl@0
  1728
		
sl@0
  1729
6)	Nicolas
sl@0
  1730
	1)	Introduced example metabuild script for MCGA (see
sl@0
  1731
		\cogent1\cogent1.mbc).
sl@0
  1732
sl@0
  1733
7)	MarkCa
sl@0
  1734
	1)	Fixed CAN-4TXKZQ (Using a PC Card can wrongly produce password notifier)
sl@0
  1735
	2)	Fixed CAN-4TWM6E (L7200 MMC Controller takes control of second UART)
sl@0
  1736
		Fix affects t_atadrv, so changed \l7200a\va_hw.cpp to use non-zero
sl@0
  1737
		machine uid.
sl@0
  1738
	3)	Fixed CAN-4TYFHS (Reading to the end of a MultiMediaCard can produce an
sl@0
  1739
		out-of-range error)
sl@0
  1740
	4)	Fixed EDNTDAS-4L4JZ8 (Thread leakage using emulators)
sl@0
  1741
	5)	Fixed TOD-4RXJSS (Race condition causing accessing of already delete
sl@0
  1742
		pointer when deleting DChannelComm)
sl@0
  1743
	6)	Fixed CAN-4UBJU2 (Controller does not process all error conditions)
sl@0
  1744
	7)	Changed l7200\pa_mmc.cpp to return KMMCErrNotSupported because pre 2.1
sl@0
  1745
		controller.
sl@0
  1746
	8)	Added __MLNK__ case to cpu defines in u32std.h.
sl@0
  1747
	9)	Fixed CAN-4UNE8D (MMC Controller access vilation after emergency power
sl@0
  1748
		down)
sl@0
  1749
	10)	Removed KPBUS1 | KPBUS2 | KPBUSDRV tracing from mlnk\header.iby.
sl@0
  1750
sl@0
  1751
Version 1.02.351
sl@0
  1752
================
sl@0
  1753
(Made by Carlos, 20/02/2001)
sl@0
  1754
sl@0
  1755
1)	Carlos
sl@0
  1756
	1)	Added Assabet Variant (\Assabetb). This is an interim release 
sl@0
  1757
		(see Release_Notes.txt)
sl@0
  1758
	2)	Debug Monitor on SA1100 ASSP: now gets the serial port number to 
sl@0
  1759
		be used as debug port from the variant TInt Variant::DebugInit().
sl@0
  1760
	3)	Interrupt Controller on SA1100 ASSP: expanded the Interrupt controller
sl@0
  1761
		to work with Conceptual Interrupts (IRQ11-27) and external interrupts.
sl@0
  1762
		Also disabled the watchdog to free-up the OST Timer3 as an auxillary
sl@0
  1763
		timed interrupt source for LFFS.
sl@0
  1764
	4)	Several changes to Brutus' Variant according to what's decribed above.
sl@0
  1765
	5)	FIR Driver: Assabet allows setting the IR range. Therefore a new
sl@0
  1766
		Synchronous Request was introduced to deal with this.
sl@0
  1767
	6)	ecomm driver - as above, passes the setting for the range on
sl@0
  1768
		iSIRSettings member of the Config structure.
sl@0
  1769
	7)	Implemented EARLY DEBUG on SA1100 ASSP.
sl@0
  1770
	8)	A few changes on the SA1100 ASSP implementation of PC Card Controller.
sl@0
  1771
	9)	SA1100 Text shell: changed Background/foreground colours to improve
sl@0
  1772
		visibility on Assabet.
sl@0
  1773
	10)	Text Shell (generic): now traps EKeyIncBrightness and
sl@0
  1774
	   	EKeyDecBrightness.
sl@0
  1775
	11)	HAL: added Machine ID for Assabet on hal_data.h.
sl@0
  1776
	12)	HAL: changed hal.iby file to include an HAL##VARIANT##.DLL to get
sl@0
  1777
	   	round the problem of having two Variants coming off the same ASSP but
sl@0
  1778
	   	not sharing the same HAL. Changed the hal.mmp on \assabetb, \brutus,
sl@0
  1779
		\cirrus721, \cogent1, \l7200, \series5mx1 and \vtemplate.
sl@0
  1780
		NOTE: Had to change \romkit\base.iby to allow overnight builds to
sl@0
  1781
		build correctly.
sl@0
  1782
	13)	MISA EKERN def file (e32\bmisa\ekernu.def) - includes a new export
sl@0
  1783
		Plat::BindExtInterrupt(..) to allow binding to external interrupts
sl@0
  1784
		on Assabet.
sl@0
  1785
	14)	Some changes on MISA .IBY files. LFFS is excluded for the time being,
sl@0
  1786
		even on Brutus. It will be put back when Assabet's LFFS is ready. The
sl@0
  1787
		bootstrap is now passed with the Variant extension to its name. Now
sl@0
  1788
		includes a Hal LDD in kernel.iby.
sl@0
  1789
	15)	MISA Variants allowed (\e32\rombuild\rom.cfg): now allows 3 variants, 
sl@0
  1790
		Brutus (BA), Assabet-only (A0) and Assabet+Companion Card (AB).
sl@0
  1791
sl@0
  1792
2)	MarkCa
sl@0
  1793
	1)	UART media change must now be explicitly compiled in for linkup
sl@0
  1794
		MMC port.
sl@0
  1795
	2)	t_atadrv will now not run media change tests on linkup.  Machine
sl@0
  1796
		UID modified in va_hw.cpp to avoid clash with Cogent.
sl@0
  1797
sl@0
  1798
3)	William
sl@0
  1799
	1)	Introduce __CW32__ defines for CodeWarrior, and adjust various
sl@0
  1800
		compiler-related definitions accordingly.
sl@0
  1801
	2)	Workaround bugs in the CW inline assembler
sl@0
  1802
	3)	Remove spurious WINBASEAPI decorations in euniw.h, which upset
sl@0
  1803
	  	CodeWarrior.
sl@0
  1804
sl@0
  1805
4)	RobertJ
sl@0
  1806
	1)	Fixed problem with FIR reads in D_FIR.CPP, the LDD. When read
sl@0
  1807
		completes to LDD from the PDD it was possible for another read to
sl@0
  1808
		complete the same user request.
sl@0
  1809
	2)	Added first release of USB client for SA-1100. Components are
sl@0
  1810
		EUSBC.LDD, which is a generic LDD, and EUSBCC.DLL. \EUSBCC is the USB
sl@0
  1811
		Client Controller and loads as a KERNEL extension.
sl@0
  1812
sl@0
  1813
Version 1.02.350
sl@0
  1814
================
sl@0
  1815
(Made by Dennis, 05/02/2001)
sl@0
  1816
sl@0
  1817
1)	William
sl@0
  1818
	1)	Adjust the x86 inline assember in euser\emul\win32 so that it is
sl@0
  1819
		acceptable to the CodeWarrior compiler: change the 8000h style
sl@0
  1820
		constants to 0x8000, and change "_asm SomeLabel:" into "SomeLabel:".
sl@0
  1821
sl@0
  1822
2)	Dennis
sl@0
  1823
	1)	Added APIs to support execution of data as code, for use by just in
sl@0
  1824
		time compilers for Java and also for the ARM JBit extension. New APIs
sl@0
  1825
		are:
sl@0
  1826
sl@0
  1827
		TInt RChunk::CreateLocalCode(TInt aSize, TInt aMaxSize, TOwnerType);
sl@0
  1828
sl@0
  1829
		This creates a data chunk with a globally unique virtual address which
sl@0
  1830
		is allocated from the top of virtual address space (as for EXE and DLL
sl@0
  1831
		code chunks). The chunk is accessible only by the current process
sl@0
  1832
		(unlike DLL code chunks) and is marked by the kernel as containing
sl@0
  1833
		code. This means that on a split-TLB machine the ITLB will be flushed
sl@0
  1834
		when a reschedule occurs to or from a process with a chunk of this
sl@0
  1835
		type mapped into it and also when pages are decommitted from such a
sl@0
  1836
		chunk. The globally unique virtual address means that the ICache need
sl@0
  1837
		not be flushed on a reschedule.
sl@0
  1838
sl@0
  1839
		RHeap* UserHeap::ChunkHeap(RChunk& aChunk, TInt aMinLength, TInt aGrowBy=KMinHeapGrowBy);
sl@0
  1840
sl@0
  1841
		This creates a heap in an already existing chunk. It is intended to
sl@0
  1842
		allow a heap to be created in a local code chunk; this heap can then
sl@0
  1843
		be used to hold code fragments from a JIT compiler.
sl@0
  1844
sl@0
  1845
		void User::IMB_Range(TAny* aStart, TAny* aEnd);
sl@0
  1846
sl@0
  1847
		This performs whatever cache cleaning/flushing operations are
sl@0
  1848
		necessary in order to guarantee correct execution of code in the
sl@0
  1849
		specified address range (from aStart inclusive to aEnd exclusive),
sl@0
  1850
		under the assumption that this code has been loaded/modified by user
sl@0
  1851
		code. Typically this will involve cleaning the data cache for the area
sl@0
  1852
		concerned, draining the write buffer and flushing the instruction
sl@0
  1853
		cache and branch target buffer for the area concerned.
sl@0
  1854
sl@0
  1855
	2)	Added a new chunk type EUserSelfModCode to TChunkType to represent the
sl@0
  1856
		new chunks. Added a new attribute DPlatChunk::ECode to the DPlatChunk
sl@0
  1857
		iAttributes field to signify any chunk containing code.
sl@0
  1858
sl@0
  1859
	3)	Added code to notify the ARM ETM of reschedules if the PROCID register
sl@0
  1860
		exists (conditioned on __CPU_HAS_ETM_PROCID_REG).
sl@0
  1861
sl@0
  1862
	4)	Added support for kernel trace via the JTAG port on ARM720 and ARM920.
sl@0
  1863
		The KHARDWAREASSIST bit in the debug mask controls whether tracing is
sl@0
  1864
		directed to the JTAG port or to a UART.
sl@0
  1865
sl@0
  1866
	5)	Modified perl script halcfg.pl so that the output file is not opened
sl@0
  1867
		until the inputs have been parsed - this prevents strange error
sl@0
  1868
		messages due to a zero length file being generated.
sl@0
  1869
sl@0
  1870
sl@0
  1871
Version 1.02.310
sl@0
  1872
================
sl@0
  1873
(Made by Morgan, 09/04/2001)
sl@0
  1874
sl@0
  1875
1)	Jonathan
sl@0
  1876
	1)	Move notes for releases prior to creation of 6.1 release branch to
sl@0
  1877
	  	releases_old.txt.
sl@0
  1878
sl@0
  1879
2)	Pete
sl@0
  1880
	1)	Fixed SCE-4V7S6C "MMC Controller card init. function is in-efficient and
sl@0
  1881
		unnecessarily complex". This entailed:-
sl@0
  1882
sl@0
  1883
		- Add new TMmcCardArray class to replace the DMMCStack::iCxNewAcqArray[]
sl@0
  1884
		and DMMCStack::iCards[] arrays and their associated functionality.
sl@0
  1885
		- Removal of ASSP layer function DMMCStack::PhysicalCardSlots() function as
sl@0
  1886
		this was duplicating information already returned in the ASSP layer function
sl@0
  1887
		DMMCController::SetMachineInfo() function.
sl@0
  1888
		- Addition of generic layer DMMCStack::Init() function to determine the max.
sl@0
  1889
		number of cards for the platform once - at Controller init. time rather than
sl@0
  1890
		every time a card stack is initialized.
sl@0
  1891
		- Modification to DMMCStack::PowerDownStack() function to add an extra
sl@0
  1892
		argument to this function (TBool aMediaChange) indicating whether the power
sl@0
  1893
		down is required due to media change or not.
sl@0
  1894
		- Removal of the 'update stack' implementation in the generic layer of the
sl@0
  1895
		Controller. This was intended to re-scan for new cards after a media change.
sl@0
  1896
		This is now redundant since all cards are always powered down on media
sl@0
  1897
		change.
sl@0
  1898
		- Various comments added throughout PS_MMC.CPP to aid clarity.
sl@0
  1899
	2)	Fixed FID-4UZLFG "Increase number of supported local drives"
sl@0
  1900
sl@0
  1901
sl@0
  1902
Version 1.02.309
sl@0
  1903
================
sl@0
  1904
(Made by Will Ramsay, 03/04/2001)
sl@0
  1905
sl@0
  1906
1)	Requires  E32TOOLP(226), F32(237)
sl@0
  1907
	from \\epoc\development\base\ongoing\...
sl@0
  1908
sl@0
  1909
2)	Backported Morgan's 6.2 changes to remove import stubs:
sl@0
  1910
	1)	Split functions in UP_DLL.CPP into separate source files.  This
sl@0
  1911
		allows the linker to discard unused functions.
sl@0
  1912
		Functions are grouped by functional area. up_dll_file.cpp,
sl@0
  1913
		up_dll_global.cpp, up_dll_static, up_dll_tls.cpp.
sl@0
  1914
	2)	Split EDLL.LIB into EDLL.LIB containing the entrypoint and
sl@0
  1915
		EDLLSTUB.LIB containing the class Dll stub functions.
sl@0
  1916
	3)	Removed strange .idata$3 padding from UP_DLL.CPP since (we think) it
sl@0
  1917
		is a hack for a defunct version of GCC
sl@0
  1918
	4)	Moved thumb gcc helper functions into up_gcc.cpp in EGCC.LIB
sl@0
  1919
	5)	Removed thumb gcc helper functions from uc_exe.cpp.  These are now in
sl@0
  1920
		EGCC.LIB that should be included in the link of a GCC EXE or GCC DLL.
sl@0
  1921
	6)	Moved float gcc helper functions into up_gcc_float.cpp in EGCC.LIB
sl@0
  1922
	7)	Removed null definition of atexit() from up_dll.cpp
sl@0
  1923
	
sl@0
  1924
sl@0
  1925
Version 1.02.308
sl@0
  1926
================
sl@0
  1927
(Made by MarkCa, 20/03/2001)
sl@0
  1928
sl@0
  1929
1)	Morgan/AndrewF
sl@0
  1930
	1)	Fixed FOD-4TAH7A "DMA double buffering will not work on Halla".
sl@0
  1931
		This is an interface change and it is not source compatable.
sl@0
  1932
		Added extra buffer fill during transfer initialisation for double
sl@0
  1933
		buffered HW.  Added explicitly named enums and new imp functions
sl@0
  1934
		in ASSP to make writing ImpDMA easier.
sl@0
  1935
	2)	Changed all ASSPs, and added implementation details to template
sl@0
  1936
		port.
sl@0
  1937
		Detail of changes required to \e32\ekern\epoc\arm\<assp>\KA_DMA.CPP:
sl@0
  1938
		a) Remove ImpDma::NextBlock()
sl@0
  1939
		b) Add the following functions:
sl@0
  1940
sl@0
  1941
		/**
sl@0
  1942
		 * No more DMA blocks for this transfer
sl@0
  1943
		 *
sl@0
  1944
		 * TO DO: (mandatory)
sl@0
  1945
		 *
sl@0
  1946
		 * Modify to suit your hardware. The code below is just an example
sl@0
  1947
		 *
sl@0
  1948
		 * If your DMA hardware has multiple buffers this function should be
sl@0
  1949
		 * used to disable the empty buffer
sl@0
  1950
		 */
sl@0
  1951
		void ImpDma::FinalBlock(TInt aChannel);
sl@0
  1952
		
sl@0
  1953
		/**
sl@0
  1954
		 * Get the reason for the DMA interrupt.
sl@0
  1955
		 * Called from TDmaInterrupt::Service()
sl@0
  1956
		 *
sl@0
  1957
		 * TO DO: (mandatory)
sl@0
  1958
		 *
sl@0
  1959
		 * Modify to suit your hardware. The code below is just an example
sl@0
  1960
		 *
sl@0
  1961
		 * EBufferEmpty indicates that one buffer is empty
sl@0
  1962
		 * EStall indicates the entire transfer is complete, ie both buffers
sl@0
  1963
		 * empty, FinalBlock() has been called.
sl@0
  1964
		 * EError indicates a transfer error
sl@0
  1965
		 * (ELastBuffer indicates that one buffer is empty and FinalBlock()
sl@0
  1966
		 * has been called. On most hardware it is sufficient to return
sl@0
  1967
		 * EBufferEmpty in this case)
sl@0
  1968
		 *
sl@0
  1969
		 */
sl@0
  1970
		Dma::TDmaState ImpDma::GetState(TInt aChannel);
sl@0
  1971
sl@0
  1972
		//
sl@0
  1973
		// Return ESingleBuffer or EDoubleBuffer
sl@0
  1974
		//
sl@0
  1975
		Dma::TDmaBufferMode ImpDma::BufferMode();
sl@0
  1976
sl@0
  1977
sl@0
  1978
2)	Nicolas
sl@0
  1979
	1)	Fixed STE-4UEQC2 "The case off event and possibly some other events
sl@0
  1980
		do not get through WSERV correctly".  EPOC doesn't any more send
sl@0
  1981
		two ESwitchOn notifications instead of one when starting up.  The
sl@0
  1982
		emulator now sends only one ESwitchOn notification when being
sl@0
  1983
		switched back on after an emergency power off.  The emulator sends
sl@0
  1984
		ECaseOpen or ECaseClose notifications when F11 is pressed while not
sl@0
  1985
		in standby mode.  And finally the emulator doesn't any more switch
sl@0
  1986
		off automatically when the case is closed (this is up to the
sl@0
  1987
		user-side event consumer).
sl@0
  1988
	2)	Fixed STE-4UJPEC "Some of the HAL attributes are not supported".
sl@0
  1989
		The following attributes are now supported on WINS: EPenDisplayOn,
sl@0
  1990
		ECaseSwitch, ECaseSwitchDisplayOn, ECaseSwitchDisplayOff.
sl@0
  1991
	3)	T_NEWHAL TestGetAll() output modified to make it readable on a
sl@0
  1992
		small screen (key press expected when screen is full).
sl@0
  1993
3)	MarkCa
sl@0
  1994
	1)	Fixed CAN-4UNE8D (MMC Controller access vilation after emergency power
sl@0
  1995
		down)
sl@0
  1996
	2)	Removed KPBUS1 | KPBUS2 | KPBUSDRV tracing from mlnk\header.iby.
sl@0
  1997
sl@0
  1998
sl@0
  1999
Version 1.02.307
sl@0
  2000
================
sl@0
  2001
(Made by Nicolas, 27/02/2001)
sl@0
  2002
sl@0
  2003
1)	Jonathan
sl@0
  2004
	Manual e32test cleanup:
sl@0
  2005
	1)	Moved T_COLOUR from a manual to a support test since no-one bothers
sl@0
  2006
		implementing text video modes other than mono. Made those screen
sl@0
  2007
		drivers that didn't already return KErrNone from SetMode(EMono).
sl@0
  2008
	2)	Moved T_PS and T_WWINS from manual to support tests since they're not
sl@0
  2009
	  	useful.
sl@0
  2010
	3)	Nuked T_PTNOS test and D_PTNOS test driver.
sl@0
  2011
	4)	Nuked T_REGRAM registry test (which was lurking unused since v6.0).
sl@0
  2012
	5)	Made T_INF prompt for confirmation that displayed values are OK, so
sl@0
  2013
		if not OK an error appears in the test log.
sl@0
  2014
	6)	Fixed FID-4TXFVX "Wrong defaults for MainBatteryGood()".
sl@0
  2015
	7)	Fixed FID-4TYF78 "FIQ link with battery state is broken".
sl@0
  2016
	8)	Fixed BAR-4SMG99 "Efficiently implement the "MergeModifiers" function
sl@0
  2017
	  	in e32\include\K32KEYS.INL".
sl@0
  2018
	9)	Fixed FID-4RRMTH "bootstrap: Bug searching for sleep info block".
sl@0
  2019
sl@0
  2020
2)	MarkCa
sl@0
  2021
	1)	Fixed CAN-4TXKZQ (Using a PC Card can wrongly produce password
sl@0
  2022
	  	notifier)
sl@0
  2023
	2)	Fixed CAN-4TWM6E (L7200 MMC Controller takes control of second UART)
sl@0
  2024
		Fix affects t_atadrv, so changed \l7200a\va_hw.cpp to use non-zero
sl@0
  2025
		machine uid.
sl@0
  2026
	3)	Fixed CAN-4TYFHS (Reading to the end of a MultiMediaCard can produce
sl@0
  2027
	  	an out-of-range error)
sl@0
  2028
	4)	Fixed EDNTDAS-4L4JZ8 (Thread leakage using emulators)
sl@0
  2029
	5)	Fixed TOD-4RXJSS (Race condition causing accessing of already delete
sl@0
  2030
		pointer when deleting DChannelComm)
sl@0
  2031
	6)	Fixed CAN-4UBJU2 (Controller does not process all error conditions)
sl@0
  2032
sl@0
  2033
3)	Dennis
sl@0
  2034
	1)	Fixed defect HAS-4U7N92 (T_WWINS hangs on Brutus). This is due to the
sl@0
  2035
		smaller screen size compared with the Series 5.
sl@0
  2036
		Modified notifier stuff to take account of the screen size.
sl@0
  2037
	2)	Fixed defect HAD-4T2EJ5 (P::TimerLockSpecToTicks returns incorrect
sl@0
  2038
	  	value).
sl@0
  2039
	3)	Fixed defect MAT-4TYKLE (Profiler doesn't work on Quartz/Brutus).
sl@0
  2040
sl@0
  2041
sl@0
  2042
Version 1.02.306
sl@0
  2043
================
sl@0
  2044
(Made by Markdo, 07/02/2001)
sl@0
  2045
sl@0
  2046
1)	Tim Band
sl@0
  2047
	1)	Fixed BAD-4SVJY8 "Unavoidable initialisation cost for TRect, TPoint
sl@0
  2048
		and TSize"
sl@0
  2049
sl@0
  2050
2)	Alastair
sl@0
  2051
	1)	Fixed EDNTBAD-4Q8M2F "CBufSeg can leak memory"
sl@0
  2052
	2)	Fixed EDNATHE-4QQJSU
sl@0
  2053
		"Inconsistent error handling in use of S::MakeHandleAndOpen",
sl@0
  2054
		though there's still some work to be done in this area.
sl@0
  2055
	3)	Fixed FID-4RKDJT
sl@0
  2056
		"Use Cogent key translation tables on template port"
sl@0
  2057
	4)	Fixed HAD-4RLFVN
sl@0
  2058
		"Template header.iby has exyin.dll as file instead of extension"
sl@0
  2059
	5)	Fixed HAD-4RLFSY
sl@0
  2060
		"Template header.iby missing kerneltrace entry"
sl@0
  2061
	6)	Fixed FID-4SNDAD
sl@0
  2062
		"TemplatePort: Tick counter not invalidated when time changed"
sl@0
  2063
sl@0
  2064
3)	Morgan
sl@0
  2065
	1)	Integrated fix for DPassiveDebugger allocation bug for
sl@0
  2066
		WINDERMERE
sl@0
  2067
sl@0
  2068
4)	Jonathan
sl@0
  2069
	1)	Created new \e32\ekern\emul\win32\d_entry.cpp as a copy of
sl@0
  2070
		\e32\euser\emul\win32\up_dll.cpp. This allows edev.lib to be built
sl@0
  2071
		for WINS in an IPR Category E only build. To preserve layering WINS
sl@0
  2072
		device driver initialisation no longer wires the kernel.
sl@0
  2073
	2)	Documented the deprecated nature of UserHAL enums in e32hal.h.
sl@0
  2074
		Added minimal documentation to \hal\inc\hal.h and hal_data.h.
sl@0
  2075
sl@0
  2076
5)	MarkCa
sl@0
  2077
	1)	Update linked build by removing warnings from linkup ekern and
sl@0
  2078
		implemented polling after MMC data transfers.
sl@0
  2079
sl@0
  2080
Version 1.02.304
sl@0
  2081
================
sl@0
  2082
(Made by Pete, 19/01/2001)
sl@0
  2083
sl@0
  2084
1) Morgan
sl@0
  2085
	1)	Fixed EDNSCHM-4M7PAJ. Added RMessagePtr::IsNull()
sl@0
  2086
	2)	Fixed EDNJPAR-4KLLCA "Brutus bootstrap contains large delay..."
sl@0
  2087
	3)	Fixed EDNRFID-4NVFWF "Bootstrap test-code has Brutus-specific code"
sl@0
  2088
	4)	Fixed EDNRFID-4MVEQV "Bootstrap: bug in RAM width checking"
sl@0
  2089
	5)	Fixed EDNRFID-4MVKBL "Bootstrap attempts to write to ROM"
sl@0
  2090
	6)	Fixed EDNRFID-4NXETX "Bootstrap: bugs mapping IO as sections"
sl@0
  2091
	7)	Fixed EDNWROS-4LQEPN "bootstrap component -WHAT output incorrect"
sl@0
  2092
	8)	Fixed EDNRFID-4LGBVH "Bootstrap should keep PE file"
sl@0
  2093
	9)	Fixed EDNRFID-4PXFYK "Add buffered, not cached flag to bootstrap"
sl@0
  2094
	10)	Fixed EDNRFID-4PTHXH "Flush D TLBs & Cache in bootstrap after enabling
sl@0
  2095
	   	MMU"
sl@0
  2096
	11) Fixed EDNRFID-4MVJZQ "Bootstrap bugs finding initial scratch RAM"
sl@0
  2097
		Tested on COGENT, BRUTUS, [UDEB,UREL]
sl@0
  2098
	12)	Fixed HEY-4STFK7 "Template port: Definition of interrupt names
sl@0
  2099
	   	should..."
sl@0
  2100
	13)	Fixed TOD-4RJJ75 "Corruption of K::TickQ". This fix creates a change
sl@0
  2101
	   	in the behaviour of the emulator - comms power handler active requests
sl@0
  2102
	   	keep the power requirement up. In practice this means that the
sl@0
  2103
	   	emulator will never power off. A proper fix will have to wait for v7.
sl@0
  2104
sl@0
  2105
2)  Pete
sl@0
  2106
	1) 	Fixed a problem introduced in release 303 with the
sl@0
  2107
		Cirrus bootstrap which was mapping in 16K rather than 12K for the h/w
sl@0
  2108
		registers.
sl@0
  2109
	2)	Changes to the MMC Controller - to the way that the
sl@0
  2110
		ASSP layer reports the operating PSU voltage. Removed TOCR class.
sl@0
  2111
sl@0
  2112
3)	Dennis
sl@0
  2113
	1)	Modified low-memory notification system. There are now two TChanges
sl@0
  2114
		flags: EChangesFreeMemory and EChangesOutOfMemory. The first is raised
sl@0
  2115
		if the free memory level crosses the relevant threshold, and the
sl@0
  2116
		second is raised if an allocation fails due to insufficient free
sl@0
  2117
		memory.
sl@0
  2118
sl@0
  2119
4)	Jonathan
sl@0
  2120
	1)	Brutus HAL: Fixed defect EDNABOT-4MCGNL "HALData::EKeyboardClickVolume
sl@0
  2121
	  	doesn't accept valid value". Key click and digitiser click are not
sl@0
  2122
	  	supported on Brutus for 6.1. Changed the values reported by HAL to
sl@0
  2123
	  	reflect this. Cogent was similarly incorrect.
sl@0
  2124
	2)	Added memory traces for kernel stack and data.
sl@0
  2125
	3)	Brutus keyboard: Fixed defect JAN-4RLLH3 "Brutus board doesn't map
sl@0
  2126
	  	EKeyDevice key codes". Made Fn modifier generate EKeyDevice0-9. Fixed
sl@0
  2127
	  	some Fn and Shift translation errors.
sl@0
  2128
sl@0
  2129
5)	Markdo	
sl@0
  2130
	1)	Implemented Pc Card Controller for Cogent. Controller is disabled (by
sl@0
  2131
		setting total supported drives to 1) until timer problem sorted out.
sl@0
  2132
	2)	Fixed problem in Brutus Pc Card Controller where reset signal not
sl@0
  2133
		asserted for long enough when powering up. Reduced length of time spent
sl@0
  2134
		in Sa1100::BootWaitMilliSeconds when called in \brutus1\vi_pbus.cpp.
sl@0
  2135
	3)	Ensured that uart1 in linkup initialised in release builds.
sl@0
  2136
	4)	Implemented dma on linkup.
sl@0
  2137
		
sl@0
  2138
6)	MarkCa
sl@0
  2139
	1)	Merged in MMC security code.  _LOCKABLE_MEDIA in e32svr.h is not
sl@0
  2140
		commented out any more.
sl@0
  2141
	2)	Updates to linkup example mmc port.
sl@0
  2142
sl@0
  2143
sl@0
  2144
Version 1.02.303
sl@0
  2145
================
sl@0
  2146
(Made by RobertJ, 13/12/2000)
sl@0
  2147
sl@0
  2148
1)	Nicolas
sl@0
  2149
	1)	ECOMMDCE: Cancel power handler timer and reset power requirements in
sl@0
  2150
		DChannelComm dtor (pasted from ECOMM).  This avoid a kernel panics
sl@0
  2151
		in DPowerHandler::RemovePowerModel() when a DCE comm port is
sl@0
  2152
		closed.
sl@0
  2153
	2)	Added DISTRIBUTION.POLICY file (cat. E) to \e32\rombuild\mlnk and
sl@0
  2154
		removed superfluous ones from E32 and BOOTSTRAP.
sl@0
  2155
	3)	Modified rom.bat to avoid spurious error msg when some files
sl@0
  2156
		included in the ROM image contain "warning" or "error".
sl@0
  2157
sl@0
  2158
2)	Dennis
sl@0
  2159
	1)	Removed all MCORE code.
sl@0
  2160
	2)	Minor consolidation of MMU-related #ifdefs in order to support ARM920.
sl@0
  2161
		__CPU_SOFTWARE_CACHE_FLUSH, __CPU_CACHE_CONFIGURABLE have gone.
sl@0
  2162
		__CPU_ARMV3 is no longer supported.
sl@0
  2163
sl@0
  2164
		Remaining #ifdefs with meanings are:
sl@0
  2165
sl@0
  2166
		__CPU_CACHE_POLICY_IN_PTE
sl@0
  2167
			This means that you can select write through or write-back caching
sl@0
  2168
			on a page-by-page basis.
sl@0
  2169
		__CPU_WRITE_BACK_CACHE
sl@0
  2170
			This means that write-back caching is being used. This may be
sl@0
  2171
			either because the cache only supports write-back mode (eg SA1100)
sl@0
  2172
			or the cache supports both modes and write-back mode is being used
sl@0
  2173
			(eg ARM920). If this is not defined and the cache can support both
sl@0
  2174
			modes, write-through caching will be used.
sl@0
  2175
		__CPU_CACHE_FLUSH_BY_DATA_READ
sl@0
  2176
			This option is only applicable if write-back caching is in use.
sl@0
  2177
			It means that the cache must be flushed by reading spurious data
sl@0
  2178
			(i.e. SA1100 mode). Currently the data used for flushing is always
sl@0
  2179
			mapped at 0x430fe000 and a cache size of 8K is assumed.  If this
sl@0
  2180
			option is not selected and write-back caching is in use, the
sl@0
  2181
			ARM920 method is used (ie flush each line by way/set index) and
sl@0
  2182
			the CP15 cache config register is read to determine the size and
sl@0
  2183
			layout of the cache.
sl@0
  2184
		__CPU_SPLIT_CACHE
sl@0
  2185
			This means that the processor has separate instruction and data
sl@0
  2186
			caches.
sl@0
  2187
		__CPU_SPLIT_TLB
sl@0
  2188
			This means that the processor has separate instruction and data
sl@0
  2189
			TLBs.
sl@0
  2190
sl@0
  2191
	3)	Added low memory notification. This uses two thresholds (low and
sl@0
  2192
		good).  If a low-level chunk adjust or allocation of page tables fails
sl@0
  2193
		due to out-of-memory or causes the amount of free memory to drop below
sl@0
  2194
		the low threshold, all change notifiers are signalled. If a low-level
sl@0
  2195
		chunk adjust or freeing of page tables causes the amount of free
sl@0
  2196
		memory to rise above the good threshold change notifiers are also
sl@0
  2197
		signalled. A new change notifier flag (EChangesFreeMemory) has been
sl@0
  2198
		added to signify the occurrence of one of these conditions. A new
sl@0
  2199
		function
sl@0
  2200
sl@0
  2201
			TInt UserSvr::SetMemoryThresholds(TInt low, TInt good)
sl@0
  2202
sl@0
  2203
		has been added to set the thresholds at which notification occurs.
sl@0
  2204
sl@0
  2205
		Test program T_CHUNK has been extended to test this system.
sl@0
  2206
sl@0
  2207
	4)	Fixed defect EDNATHE-4LCEWZ (Sessions using global message pool can
sl@0
  2208
		lose available slots).
sl@0
  2209
	5)	Fixed defect PAR-4R6DGK (WS_MAIN.CPP should have an extra line of debug
sl@0
  2210
		to warn you that you have booted in test mode).
sl@0
  2211
	6)	Fixed defect EDNJPAR-4L2LMM (WS_MAIN.CPP has a leave without a trap).
sl@0
  2212
	7)	Fixed defect EDNJPAR-4N9GU2 (TEiger:: missing from added 7211 functions
sl@0
  2213
		in ka_eiger.cpp)
sl@0
  2214
	8)	Fixed defect HAS-4R5NPC (JTAG trace example in template variant).
sl@0
  2215
sl@0
  2216
3)	Alastair
sl@0
  2217
	1)	Fixed EDNJHAS-4QLRPC "All 3rd UIDs wrong" (in the template port).
sl@0
  2218
		Uids are now the UNICODE rather than narrow values.
sl@0
  2219
	2)	Split this file up on the assumption that its large size is the
sl@0
  2220
		reason P4 sometimes has difficulty accepting changes to it.
sl@0
  2221
		Old release notes are now in release_old.txt.
sl@0
  2222
	3)	Fixed EDNJHAS-4QNRUB "Template variant include file in E32" by moving
sl@0
  2223
	   	it into the vtemplate directory and exporting it from there.
sl@0
  2224
	4)	Fixed EDNJHAS-4QNR4M "Template ASSP is in the wrong place"
sl@0
  2225
	5)	Changed include paths in VTemplate .mmp files so that they no longer
sl@0
  2226
	  	refer to \e32\include.
sl@0
  2227
	6)	Added DISTRIBUTION.POLICY files (cat. E) to the \VTemplate
sl@0
  2228
	  	directories.
sl@0
  2229
	7)	Fixed  EDNABRY-4L8NR2 "Text console appears stripy on Windows 95"
sl@0
  2230
	8)	Fixed problem with emulator parent window appearing jazzed if no
sl@0
  2231
		bitmap is specified on Windows9x platforms.
sl@0
  2232
	9)	Fixed EDNJBRN-4MEP5F
sl@0
  2233
		"Threads that use a shared heap don't get their stack 0x29 filled".
sl@0
  2234
	10)	Fixed EDNATHE-4QQKZM
sl@0
  2235
		"RThread().Suspend() deadlocks the emulator".
sl@0
  2236
		Under WINS/WINC, if a thread is about to suspends itself then it
sl@0
  2237
		relinquishes the kernel critical first.
sl@0
  2238
	11)	Fixed EDNTEEA-4L4BHV
sl@0
  2239
		"WINS emulator does not remember its previous position".
sl@0
  2240
		Emulator only remembers its position if it's shutdown with Alt+F4 or
sl@0
  2241
		via the Windows menus, not with typing "exit" in eshell or exiting
sl@0
  2242
		from a test.  It is clever about not "reappearing" off-screen.
sl@0
  2243
	12)	Extended Dennis' low memory notification changes to work under WINS.
sl@0
  2244
	13)	Fixed defect FID-4RDJTJ
sl@0
  2245
		"Template port keyboard driver generates streams of keyup"
sl@0
  2246
	14)	Fixed defect FID-4RHKC9
sl@0
  2247
		"Template Idle function should not be naked"
sl@0
  2248
  	15)	Fixed defect EDNNGRE-4LGJU7
sl@0
  2249
  		 "UserHal::SwitchOff() hangs emulator if mouse is pressed".
sl@0
  2250
  		Problem: Emulator would power off but not minimise since mouse button
sl@0
  2251
  		was down, and power on requires impossible window restoration.
sl@0
  2252
  		Solution: No longer minimise and maximise Emulator window to emulate 
sl@0
  2253
  		Power Off and Power On.  Instead, blank screen for Power Off.  Power
sl@0
  2254
  		back on when EStdKeyOff (F9 by default) is pressed.  Power on also if
sl@0
  2255
  		screen is tapped, or case is opened (toggle F11 by default), depending
sl@0
  2256
  		upon EPointerSwitchesOn and ECaseOpenSwitchesOn
sl@0
  2257
		HAL/machine_configuration settings: these values now default to TRUE
sl@0
  2258
		for WINS.
sl@0
  2259
sl@0
  2260
4)	MarkCa
sl@0
  2261
	1)	Fixed defect EDNJHET-4PTLUD (Emulator crashes on startup if com
sl@0
  2262
		ports used by another program under win98.)
sl@0
  2263
sl@0
  2264
5)	Pete
sl@0
  2265
	1)  Modified the FIR LDD so it conforms with latest power handling scheme
sl@0
  2266
		(i.e. it requests it's power requirement on all tx requests while at
sl@0
  2267
		the same time setting a timer to releases these requirements if it is
sl@0
  2268
		allowed to expire). This in turn required an extra function to be
sl@0
  2269
		added to each FIR PDD - PowerRequirement() which returns the FIR power
sl@0
  2270
		requirements for that particular platform.
sl@0
  2271
	2)	Fixed warnings when building WINS version of MMC Controller.
sl@0
  2272
	3)	Modified TBusLocalDrive class and the associated local media
sl@0
  2273
		sub-system so that an info. descriptor can be passed down to the media
sl@0
  2274
		driver which is available to the driver at the point at which it is
sl@0
  2275
		opened.
sl@0
  2276
	4)	Fixed warnings when building WINS version of MMC Media Driver.
sl@0
  2277
	5)	Applied various bug fixes supplied by Pete Sanders for Cirrus Logic
sl@0
  2278
	  	build:-
sl@0
  2279
		 - Increased BDB IO block size from 8K to 16K in bootstrap.
sl@0
  2280
		 - Moved addition of power handler from Variant::Init3() to
sl@0
  2281
		   Variant::Init4().
sl@0
  2282
		 - Set mem. config registers for both banks of 8Mb flash in
sl@0
  2283
		   Variant::Init1().
sl@0
  2284
		 - Fixed problem with digitizer resistive plate enable signals.
sl@0
  2285
sl@0
  2286
6)	Morgan
sl@0
  2287
	1)	Fixed EDNGTIN-4KUH3E "Dll::FileName inconsistent in ARMI",
sl@0
  2288
		Mini-loader now forms the filename correctly.
sl@0
  2289
	2)	Fixed memory allocation bug in DPassiveDebugger
sl@0
  2290
	2.1)	Fixed empty members of DProcess for bootstrapped processes,
sl@0
  2291
		(kernel and file server) for the benefit of the debugger
sl@0
  2292
	3)	Enabled DPassiveDebugger on Cogent UDEB builds
sl@0
  2293
	4)	EDNMHEY-4N3FV8 "TDma::iChannel should be set back to ENotBound ..."
sl@0
  2294
	5)	PAR-4R5EGK "Definition of interrupt name should be in ASSP header ..."
sl@0
  2295
		Moved interrupt name definitions from ka_pic.cpp to a32*.h
sl@0
  2296
		MCGA, MISA, MAWD, MLNK, MEIG
sl@0
  2297
	6)	Updated Cogent1, Brutusa, Series5mx1, l7200a, cirrus7211x, variants to
sl@0
  2298
		use symbolic interrupt names
sl@0
  2299
	7)	Updated \e32\rombuild\rom.cfg to match stricter options in ROMBUILD
sl@0
  2300
sl@0
  2301
7)	Jonathan
sl@0
  2302
	1)	Changed meaning of KMEMTRACE kernel trace option. Now only traces
sl@0
  2303
	  	changes in chunk committed size and does not trace RHeap allocation.
sl@0
  2304
sl@0
  2305
8)	Markdo
sl@0
  2306
	1)	Changed WINS simulated mmc drive to 1MB size (from 2MB).
sl@0
  2307
sl@0
  2308
9)	William
sl@0
  2309
	1)	Added iRomRootDirectoryList to TSuperPage in K32STD.H
sl@0
  2310
	2)	Added TExtensionRomHeader in E32ROM.H
sl@0
  2311
	3)	Modified epoc\kp_ini.cpp to get the iRomRootDirectoryList from the
sl@0
  2312
	  	superpage
sl@0
  2313
	4)	Changed bootstrap to pass the iRomRootDirectoryList address vai the
sl@0
  2314
		superpage, and added code to support extension ROMs. If a valid
sl@0
  2315
		extension ROM is found, the Root Directory List comes from the
sl@0
  2316
		extension rather than the main ROM.
sl@0
  2317
sl@0
  2318
sl@0
  2319
Version 1.02.302
sl@0
  2320
================
sl@0
  2321
(Made by Nicolas, 19/10/2000)
sl@0
  2322
sl@0
  2323
1)	Alastair	
sl@0
  2324
	1)	Applied fix which will be made on the release branch to EDNJBON-4PBJFD
sl@0
  2325
		"Crystal emulator won't run under Windows 98"
sl@0
  2326
	2)	Replaced calls to Win32 "W" suffixed functions, which won't work on 
sl@0
  2327
	      	Windows9x platforms, with new versions supplied in EUNIW.DLL.
sl@0
  2328
	3)	Merged in Template Port from //epoc/release/bpk/....  This builds as
sl@0
  2329
		platform MTemplate and the variant is described by the \VTemplate
sl@0
  2330
		directory.  Function comments have been changed to JavaDoc format.
sl@0
  2331
		Changes have also been made in accordance with Jonathan's changes to
sl@0
  2332
		E32 version 301, detailed below ...
sl@0
  2333
		\e32\include\v32arm.h --> \e32\ekern\epoc\katemplate\v32template.h
sl@0
  2334
		\e32\include\v32templateassp.h --> \e32\ekern\epoc\katemplate\a32templateassp.h
sl@0
  2335
		\e32\include\v32templatev1.h --> \e32\ekern\epoc\katemplate\v32template1.h
sl@0
  2336
		
sl@0
  2337
2)	Nicolas
sl@0
  2338
	1)	Fixed defect EDNNTHY-4PMKJW "RDebug Breakpoints Are Sometimes
sl@0
  2339
		Ignored Under Brutus".  The B bit is now set in
sl@0
  2340
		KRomSectionPermissions and KRomPtePermissions.  As a side-effect,
sl@0
  2341
		on CPUs with write-through caches the write buffer is now used for
sl@0
  2342
		shadowed pages.  On SA-1100, setting B ensures the main data cache
sl@0
  2343
		is used instead of the mini one, and so fixes the defect.
sl@0
  2344
sl@0
  2345
3)	Pete
sl@0
  2346
	1)	Added WINS platform layer for MMC Controller.
sl@0
  2347
	2)	Changed the WINS EPBUS.DLL from being a PC Card Controller
sl@0
  2348
		to being an MMC Controller (i.e emulation of the PC
sl@0
  2349
		Card Controller has now been disabled in WINS and replaced
sl@0
  2350
		with an MMC Controller emulator). Similarly, the Media Driver
sl@0
  2351
		for WINS drive X: is now a MMC Media driver rather than a CF card
sl@0
  2352
		Media Driver. 
sl@0
  2353
	3) 	Fixed defect EDNMCAN-4P5C37 "File Mgr:Memory card menu is
sl@0
  2354
		not dynamic'. Fixed by powering down any MMC cards while
sl@0
  2355
		the media door is open and not allowing any operations on
sl@0
  2356
		the cards during this time.
sl@0
  2357
	4)	Implemented inactivity timer on MMC Controller. While the
sl@0
  2358
		MMC bus is powered up, if a given period elapses (set at the
sl@0
  2359
		ASSP/Variant layer) where no MMC bus activity has taken place,
sl@0
  2360
		then the MMC clock is turned off and power removed from the
sl@0
  2361
		bus.
sl@0
  2362
sl@0
  2363
4)	Dennis
sl@0
  2364
	1)	Fixed defect EDNDFER-4N2K8R (Wrong error code returned by fix to
sl@0
  2365
		another bug). DThread::Read/Write now return KErrDied if the target
sl@0
  2366
		thread has exited.
sl@0
  2367
sl@0
  2368
5)	Jonathan
sl@0
  2369
	1)	Removed old distrib IPR files and script.
sl@0
  2370
sl@0
  2371
sl@0
  2372
Version 1.02.301
sl@0
  2373
================
sl@0
  2374
(Made by MarkCa, 29/09/2000)
sl@0
  2375
sl@0
  2376
0)	Must add the following line (BEFORE LINE 44) to
sl@0
  2377
	\\epoc\main\romkit\include\base.iby when releasing to mainline:
sl@0
  2378
		extension[VARID]=ASSP_DIR\BUILD_DIR\epower.dll     System\Libs\EPower.dll
sl@0
  2379
sl@0
  2380
1)	Pete
sl@0
  2381
	1) 	Merged in changes to MMC Controller from Cambridge base porting
sl@0
  2382
		branch.
sl@0
  2383
	2)	Improved scheme in MMC Controller on how information on
sl@0
  2384
		number of MMC sockets and media drives is returned.
sl@0
  2385
		This is now set in the variant layer as you would expect.
sl@0
  2386
	3)	Removed workaround for broken MCR instruction on ARM915T from
sl@0
  2387
		\E32\EKERN\EPOC\ARM\KC_MMU.CPP.
sl@0
  2388
	4)	Changes to Cogent DTE serial port drivers. Also to
sl@0
  2389
		Cogent IREQ1 interrupt control code. These changes,
sl@0
  2390
		together your Cogent board re-configured with config 'p120_05_v12'
sl@0
  2391
		and also a PCB cut/strap modification to each DTE serial port to
sl@0
  2392
		reverse the TX and RX signals will allow the Cogent DTE serial ports
sl@0
  2393
		to work fully.
sl@0
  2394
		Cogent EUART3.PDD which had been temporarily modified
sl@0
  2395
		to drive 'SERIAL 1' rather than 'SERIAL 2' (PCB designations) has now
sl@0
  2396
		been changed to drive 'SERIAL 2'.
sl@0
  2397
sl@0
  2398
2)	MarkCa
sl@0
  2399
	2)	Added linkup port from BPC.  Build with assp MLNK, variant LA.
sl@0
  2400
sl@0
  2401
3)	Nicolas
sl@0
  2402
	1)	Fixed defect EDNNTHY-4P3GT6 (RDebug::SingleStep() does not stop
sl@0
  2403
		after one instruction sometimes).  Fix applied to arm generic and
sl@0
  2404
		windermere.
sl@0
  2405
sl@0
  2406
4)	Jonathan
sl@0
  2407
	1)	Include file re-org for IPR reasons - ASSP-specific include files live
sl@0
  2408
	  	in the ASSP directory under ekern:
sl@0
  2409
		- Include files describing ASSPs (TEiger etc) are named a32*.h:
sl@0
  2410
			v32eiger.h -> ekern\epoc\arm\721x\a32eiger.h
sl@0
  2411
			v32s1100.h -> ekern\epoc\arm\sa1100\a32sa1100.h
sl@0
  2412
			v32wind.h  -> ekern\epoc\arm\windermere\a32windermere.h
sl@0
  2413
			v32cog.h   -> ekern\epoc\generic\cogent\a32cogent.h
sl@0
  2414
		- Custom interface files are named v32*.h:
sl@0
  2415
			v32arm.h   -> ekern\epoc\arm\721x\v32eiger.h
sl@0
  2416
			v32arm.h   -> ekern\epoc\arm\sa1100\v32sa1100.h
sl@0
  2417
			v32awd.h   -> ekern\epoc\arm\windermere\v32windermere.h
sl@0
  2418
			v32arm.h   -> ekern\epoc\generic\cogent\a32cogent.h
sl@0
  2419
			v32mcore.h -> ekern\epoc\generic\cogent\a32cogent.h
sl@0
  2420
		- All variant-specific include files moved to the variants.
sl@0
  2421
		- kc_std.h -> kc_arm.h.
sl@0
  2422
	2)	New exported file for the text notifier interface
sl@0
  2423
	  	\e32\include\twintnotifier.h split out from ws_std.h, which is no
sl@0
  2424
	  	longer exported.
sl@0
  2425
sl@0
  2426
5)	Morgan
sl@0
  2427
	1)	Integrated fix from 6.0 branch: Fixed EDNTRIN-4BPCTM2 "Detection of
sl@0
  2428
		pointer events stops - multiple platforms" for MAWD. Keyboard now
sl@0
  2429
		detects switch on keys while sleeping.
sl@0
  2430
	2)	Removed \brutus\v32isa.h and references
sl@0
  2431
	3)	Called through to the variant for the following functions on MISA
sl@0
  2432
			TBool ImpPsu::ExternalPowerPresent();
sl@0
  2433
			TSupplyStatus ImpPsu::MainBatteryStatus();
sl@0
  2434
			TInt ImpPsu::MainBatteryMilliVolts();
sl@0
  2435
			TSupplyStatus ImpPsu::BackupBatteryStatus();
sl@0
  2436
			TInt ImpPsu::BackupBatteryMilliVolts();
sl@0
  2437
	4)	Moved MISA, MCGA, MCGM, MEIG default power models to variant layer so
sl@0
  2438
		they can be replaced as necessary
sl@0
  2439
	5)	Removed P::SwitchOffBacklight().  Calls to this can be replaced with
sl@0
  2440
		Hal::SetBacklightOn(EFalse)
sl@0
  2441
	6)	Promoted P::OsSwitchOnScreen() to Plat:: so it can be called from the
sl@0
  2442
		power model.
sl@0
  2443
	7)	Added Plat::DebugInit() to force re-initialisation of the trace port
sl@0
  2444
		after switch off.
sl@0
  2445
	8)	Fixes to the interface and implementation of DDebugger/DPassiveDebugger
sl@0
  2446
sl@0
  2447
6)	Alastair
sl@0
  2448
	1)	Applied fixes already made on release branch for EDNABRY-4PHFJJ:
sl@0
  2449
		"Emulator support for international keyboards is broken on Windows9x
sl@0
  2450
		platforms" and EDNSRES-4P4EFD: "CopyAnyWhere page fault on Win 98".
sl@0
  2451
sl@0
  2452
sl@0
  2453
Version 1.02.300
sl@0
  2454
================
sl@0
  2455
(Made by Dennis, 13/09/2000)
sl@0
  2456
sl@0
  2457
1)	Alastair
sl@0
  2458
	1)	Renamed K32ADDR.H to M32ADDR.H and removed references to it from
sl@0
  2459
		WINS/WINC builds, since it isn't required.
sl@0
  2460
	2)	Fixed Base v6.1 defect EDNWROS-4MJKWH
sl@0
  2461
			 "Request for a change to emulator window size calculation".
sl@0
  2462
		The Emulator window no longer defaults to the Series5 Fascia bitmap
sl@0
  2463
		size, and expands to accommodate the specified digitizer size if
sl@0
  2464
		necessary.
sl@0
  2465
sl@0
  2466
2)	William
sl@0
  2467
	1)	Modified COGENT1 MMP files to use \e32\bmarm DEF files in all cases
sl@0
  2468
	2)	Fixed a few places in RArrayBase where delete was being used on a
sl@0
  2469
		TAny* pointer. This should be User::Free() as there is no destructor
sl@0
  2470
		to be called.
sl@0
  2471
	3)	Fixed EDNMMIR-4JQDYY "E32DEF.H doesn't correctly use all the features
sl@0
  2472
		of GCC" by changing the definitions of CONST_CAST etc.
sl@0
  2473
	4)	Fixed EDNWROS-4MEJRS "_LIT generates compiler warnings when string
sl@0
  2474
		contains large Unicode constants" as suggested in the defect report.
sl@0
  2475
	5)	Replaced lots of M*Core PP:Fault(PP:ESystemException) calls with
sl@0
  2476
		distinct Mcore::Panic(Esomething) calls so that we can tell which is
sl@0
  2477
		which.
sl@0
  2478
	6)	Export \e32\bmarm\eloclu.def 
sl@0
  2479
	7)	Remove excess ".." in bootstrap makefile variables BUILDDIR and
sl@0
  2480
	  	TARGETDIR
sl@0
  2481
sl@0
  2482
3)	Jonathan
sl@0
  2483
	1)	Changes to distrib mechanism:
sl@0
  2484
		- "mnt distrib generic" no longer includes source under \e32\euser
sl@0
  2485
		  since this is "IPR Category D: Additional" source. Split out MMP
sl@0
  2486
		  files under \e32\euser into new \e32\additional.inf file.
sl@0
  2487
		- New "mnt distrib Additional" is similar to "generic" but does
sl@0
  2488
		  include the \e32\euser source.
sl@0
  2489
sl@0
  2490
4)	Dennis
sl@0
  2491
	1)	Merged in MCore source from Motorola.
sl@0
  2492
	2)	Added GCC helpers for 64-bit integers (long long) to EUSER so that the
sl@0
  2493
		same .DEF file can be used for ARM and MCore.
sl@0
  2494
	3)	Added test program SAVEHAL to HAL component to store the modifiable HAL
sl@0
  2495
		values in \System\Data\HAL.DAT
sl@0
  2496
sl@0
  2497
6)	Markdo
sl@0
  2498
	1)	Added support for pci interrupts on Cogent.
sl@0
  2499
sl@0
  2500
sl@0
  2501
Version 1.02.276
sl@0
  2502
================
sl@0
  2503
(Made by Morgan, 31/08/2000)
sl@0
  2504
sl@0
  2505
1)	Alastair
sl@0
  2506
	1)	Fixed defect EDNABRY-4NFNPX
sl@0
  2507
			"HAL component should create HAL.LIB from a dummy HAL.DLL project".
sl@0
  2508
		Now a dummy HAL.LIB can be created for ARMI, ARM4 or THUMB builds by
sl@0
  2509
		executing "abld build armi", or some similar command(s), for dependent
sl@0
  2510
		components to link to.  The HAL.DLL created in the ARMI, ARM4 or THUMB
sl@0
  2511
		release directories is an empty implementation and should be ignored.
sl@0
  2512
sl@0
  2513
2)	Morgan
sl@0
  2514
	1)	Fixed defect EDNJBED-4NAFQ2 "Switch makes the digitiser freeze"
sl@0
  2515
		1) Gave the LCD a power handler so it can respond to on/off calls
sl@0
  2516
		from the power model.  (Effects MISA, MAWD)
sl@0
  2517
		2) PowerStandby can now be aborted.  Power handlers are given a
sl@0
  2518
		power-on call if they were sent power-off and standby is later
sl@0
  2519
		aborted.  (Effects generic kernel)
sl@0
  2520
		3) Changed the MISA digitiser wrt 2
sl@0
  2521
		4) Improved the PM heuristics in the WINS and EPOC comms drivers to
sl@0
  2522
		guess when it is busy.  (Effects WINS/EPOC comms)
sl@0
  2523
sl@0
  2524
sl@0
  2525
Version 1.02.275
sl@0
  2526
================
sl@0
  2527
(Made by Alastair, 24/08/2000)
sl@0
  2528
sl@0
  2529
1)	Alastair
sl@0
  2530
	1)	Fixed defect EDNPHAR-4N3HRA "Access Violation when closing RLibrary
sl@0
  2531
`		handle".
sl@0
  2532
		Note that entrypoints of DLLs which are statically-linked
sl@0
  2533
		to, having already been dynamically-loaded, will not have their
sl@0
  2534
		entrypoints called in the statically-linked context.
sl@0
  2535
sl@0
  2536
sl@0
  2537
Version 1.02.274
sl@0
  2538
================
sl@0
  2539
(Made by MarkCa, 17/08/2000)
sl@0
  2540
sl@0
  2541
1)	Morgan
sl@0
  2542
	1)	Fixed EDNMHEY-4N3FAY.  Removed references to V32ETNA.H from MEIG and
sl@0
  2543
		MAWD platforms.
sl@0
  2544
sl@0
  2545
2)	MarkCa
sl@0
  2546
	1)	Fixed EDNTBLT-4MFKKY (peripherals need to be started after extensions
sl@0
  2547
		loaded). The pbus code has been moved to P::InitialiseLocalDrives(),
sl@0
  2548
		which is called from InitialiseLocalDrivesL().
sl@0
  2549
sl@0
  2550
sl@0
  2551
Version 1.02.273
sl@0
  2552
================
sl@0
  2553
(Made by Alastair, 2/8/2000)
sl@0
  2554
sl@0
  2555
1)	Alastair
sl@0
  2556
	1)	Removed enum EKeyEuro from E32Keys.h - fixes EDNGASR-4MKLHW
sl@0
  2557
			"EKeyEuro should not be 0x80 but 0x20AC in e32keys.h"
sl@0
  2558
sl@0
  2559
2)	MarkCa
sl@0
  2560
	1)	Fixed defect EDNPSCE-4MFPQC Media Change doesn't work properly
sl@0
  2561
		on MMC Controller
sl@0
  2562
		\e32\drivers\medmmc\epoc\d_medmmc.cpp
sl@0
  2563
			Added return value checking for Engage() calls, particularly in
sl@0
  2564
			DMmcMediaDriverFlash::SessionEndDfc() where value is used to
sl@0
  2565
			determine behaviour on media door opening / closing.
sl@0
  2566
		\e32\epbus\epoc\linda\pa_mmc.cpp
sl@0
  2567
			Added KPBUS1 conditional door interrupt debug trace.
sl@0
  2568
		\e32\epbus\epoc\linda\pa_std.h
sl@0
  2569
			Made MediaState() definition in TLindaMMCMediaChange virtual.  It
sl@0
  2570
			is implicitly virtual because it is derived from TMediaChangeBase.
sl@0
  2571
		\e32\include\p32mmc.h
sl@0
  2572
			Made TMediaState MediaState() pure virtual function in
sl@0
  2573
			TMMCMediaChange.  The function is pure virtual from
sl@0
  2574
			TMediaChangeBase anyway.  Added AccessMediaChange(TPBusNum aBus)
sl@0
  2575
			function to DMMCController.  MediaChange(TPBusNum aBus) is
sl@0
  2576
			declared as a pure virtual protected function in
sl@0
  2577
			DPeriphBusController, and so is not accessible from
sl@0
  2578
			DMMCSession::Engage().
sl@0
  2579
		\e32\include\p32mmc.inl
sl@0
  2580
			Added definition for DMMCController::AccessMediaChange(TPBusNum
sl@0
  2581
			aBus).  This is an accessor function that simply returns
sl@0
  2582
			MediaChange(aBus).
sl@0
  2583
		\e32\epbus\ps_mmc.cpp
sl@0
  2584
			Added checking to DMMCSession::Engage() to return KErrNotReady if
sl@0
  2585
			media driver tries to launch a write while the door for the
sl@0
  2586
			associated bus is opened.
sl@0
  2587
		\e32test\pccd\t_mmcdrv.cpp
sl@0
  2588
			Added test code to check above modifications.  Source file must be
sl@0
  2589
			explicitly recompiled with TEST_DOOR_CLOSE #define set to non-zero
sl@0
  2590
			for test to work.
sl@0
  2591
sl@0
  2592
3)	Jonathan
sl@0
  2593
		1)	Disallow reads/writes to/from dead threads. Fixes EDNDFER-4MFNER.
sl@0
  2594
		2)	Also removed some old code from ks_thrd, commented out since ER1.
sl@0
  2595
sl@0
  2596
4)	Nicolas
sl@0
  2597
	1)	Fixed EDNNTHY-4MNJXK (Kernel crash after calling ARM4 code from
sl@0
  2598
		THUMB code).
sl@0
  2599
		In the exception reporting code in __ArmVectorUndef(), the address of
sl@0
  2600
		the invalid ARM opcode is now forced to a four-byte boundary before
sl@0
  2601
		fetching the opcode. Fixed both in kc_int.cpp (arm generic) and
sl@0
  2602
		ke_int.cpp (windermere).
sl@0
  2603
sl@0
  2604
sl@0
  2605
Version 1.02.272
sl@0
  2606
================
sl@0
  2607
(Made by RobertJ, 20/07/2000)
sl@0
  2608
sl@0
  2609
1) Morgan
sl@0
  2610
	1)	Added a TVersion member to the Debugger API
sl@0
  2611
	2)	Added a iDebugger member to TKernelPage so it is available
sl@0
  2612
		to externel debugger software over JTAG/BDM, at a constant
sl@0
  2613
		address.  Removed K::Debugger.
sl@0
  2614
	3)	Fixed EDNMMAT-4M6KHZ "TLex::Val returns the wrong number"
sl@0
  2615
sl@0
  2616
2) 	Alastair
sl@0
  2617
	1)	Fixed EDNJBON-4MBMC8 '"set _epoc_drive_j=...." causing emulator
sl@0
  2618
		problems' by removing trailing spaces from _EPOC_DRIVE_? environment
sl@0
  2619
		variables as they are read.
sl@0
  2620
sl@0
  2621
3)	Dennis
sl@0
  2622
	1)	Fixed EDNKLIG-4LVJST (Device turns off when time changed).
sl@0
  2623
		The problem was due to K::TickCounter being updated when the system
sl@0
  2624
		time changed. This no longer happens - K::TickCounter now increments
sl@0
  2625
		every tick when the machine is on and does not change when the machine
sl@0
  2626
		is off. The offset between K::TickCounter and the real time clock is
sl@0
  2627
		remembered in order to make locked timers work.
sl@0
  2628
sl@0
  2629
sl@0
  2630
Version 1.02.271
sl@0
  2631
================
sl@0
  2632
(Made by Morgan, 5/07/2000)
sl@0
  2633
sl@0
  2634
1) Morgan
sl@0
  2635
	1)	Fixed EDNBBOY-4LWGW2
sl@0
  2636
	2)	Fixed MCGA Monitor warnings
sl@0
  2637
	3)	Fixed Cirrus7211a MMP warnings
sl@0
  2638
sl@0
  2639
sl@0
  2640
Version 1.02.270
sl@0
  2641
================
sl@0
  2642
(Made by RobertJ, 29/06/2000)
sl@0
  2643
sl@0
  2644
1) RobertJ
sl@0
  2645
	1)	Fixed EDNMHEY-4L3KX7 "References to Licensee hardware in generic code"
sl@0
  2646
	2)	Changed \e32\drivers\dfir\epoc\d_fir.cpp to return an error code for a
sl@0
  2647
		read failure
sl@0
  2648
	3)	Changed \e32\drivers\dfir\epoc\d_fir.cpp test for buffer full from
sl@0
  2649
		>= to > as limit excluded valid transfer address.
sl@0
  2650
	4)	Changed \e32\drivers\dfir\epoc\dmabuff.cpp error code was not always
sl@0
  2651
		correctly returned. It could return zero when in error
sl@0
  2652
	5)	Changed \brutusa\vi_fir.cpp to remove 1ms wait after write to
sl@0
  2653
		spin until TUR flag set (fifo is empty) then TBY flag transmitter busy.
sl@0
  2654
		This is to remove as much latency as possible in tx->rx turnaround
sl@0
  2655
sl@0
  2656
2) Jonathan
sl@0
  2657
	1)	Fixed EDNJHAS-4LQPA5: changed MMAD to use ARM Base Restored Data
sl@0
  2658
		Abort Model.
sl@0
  2659
sl@0
  2660
3) Pete
sl@0
  2661
	1)	Fixed EDNPSCE-4L3CHV "Device driver slow open
sl@0
  2662
		mechanism doesn't work properly on machines with more than one PCMCIA
sl@0
  2663
		slot."
sl@0
  2664
		In fact, the slow open mechanism is OK as long as a
sl@0
  2665
		separate unit number can be used to open a serial channel on each
sl@0
  2666
		slot. Hence, the change really just involves enabling the PC Card
sl@0
  2667
		Serial driver on Brutus to open on either PC Card slot.
sl@0
  2668
			Bottom slot - Unit number 3 (Com4).
sl@0
  2669
			Top slot - Unit number 4 (Com5).
sl@0
  2670
		Also a change to the function DPhysicalDevice::CheckForSlowOpening()
sl@0
  2671
		just to make this more logical.
sl@0
  2672
sl@0
  2673
4) MarkCa
sl@0
  2674
	1)	Removed Kern::Printf() debug from DLindaMMCStack::DoPowerUpSM() in
sl@0
  2675
		\e32\epbus\epoc\linda\pa_mmc.cpp.
sl@0
  2676
sl@0
  2677
Version 1.02.269
sl@0
  2678
================
sl@0
  2679
(Made by Dennis, 22/06/2000)
sl@0
  2680
sl@0
  2681
1) Alastair
sl@0
  2682
	1)	Using CP_ACP rather that CP_UTF8 for EPOC.INI file text conversion
sl@0
  2683
		since CP_UTF8 is not supported on Windows 95
sl@0
  2684
	2)	Fixed EDNWROS-4L5NLW "Text window server has hardcoded width of 80
sl@0
  2685
		characters in some places" and EDNNGRE-4H2MKK "ConsoleBase does not
sl@0
  2686
		work on small screens" by replacing the hardcoded widths of 80
sl@0
  2687
		characters by iTextScreenSize.iWidth in
sl@0
  2688
		\e32\drivers\edisp\emul\win32\wd_wins.cpp.
sl@0
  2689
	3)	Fixed EDNNSIH-4LCLNE "Access violation when loading SMUM.DLL..."  by
sl@0
  2690
		using the base name of a dll rather than it's full name to get a Win32
sl@0
  2691
		handle to it, in case it's already been loaded from a different
sl@0
  2692
		directory.
sl@0
  2693
	4)	Fixed EDNRCLF-4L4FB2 "User::LeaveIfError crash while trying to connect
sl@0
  2694
		to File Server Session in WINC" Now the dll reference table for the
sl@0
  2695
		starting process includes efile.dll and dependent dlls if efile.dll
sl@0
  2696
		has already been loaded by the process.  This ensures that the
sl@0
  2697
		efile.dll's entry point is called on startup where necessary and that
sl@0
  2698
		the file server is started.
sl@0
  2699
	5)	Fixed EDNRCLF-4LALXK "E32Initialize Crash".
sl@0
  2700
		UpWins::__DllAttachProcess() now changes "TRUE" return value from
sl@0
  2701
		Win32 DLLs to KErrNone.
sl@0
  2702
sl@0
  2703
sl@0
  2704
2) Morgan
sl@0
  2705
	1)	EDNRFID-4FQKKQ Zero-filled the 'Visibility Map' in the text window
sl@0
  2706
		server, during initialisation.
sl@0
  2707
	2)	EDNMHEY-4L9NKJ Added TRawEvent::ECaseOpen and TRawEvent::ECaseClose
sl@0
  2708
		events
sl@0
  2709
	3)	Added idle off behaviour to the comms LDD D_COMM.  This stops the
sl@0
  2710
		machine turning off while
sl@0
  2711
			a) there is a write request outstanding,
sl@0
  2712
			b) 20 seconds elapse after the last character has been sent,
sl@0
  2713
			c) there is a read request outstanding
sl@0
  2714
	4)	Altered comms PDD for all variants wrt above.
sl@0
  2715
sl@0
  2716
3) Dennis
sl@0
  2717
	1)	Yet another 'fix' for defect EDNGBON-4JYNU6 (Inaccessibility of request
sl@0
  2718
		semaphores breaks EPOC connect). For WINC the semaphore name has been
sl@0
  2719
		reverted to be the same as ER5U.
sl@0
  2720
sl@0
  2721
4) Pete
sl@0
  2722
	1)	Changes required to move Cirris Logic bootstrap over
sl@0
  2723
		to the new bootstrap scheme.
sl@0
  2724
sl@0
  2725
sl@0
  2726
Version 1.02.268
sl@0
  2727
================
sl@0
  2728
(Made by Markdo, 07/06/2000)
sl@0
  2729
sl@0
  2730
1) Alastair
sl@0
  2731
	1)	Fixed EDNTJOS-4JGME4 "Dialog title EPOC32 fault needs to be changed"
sl@0
  2732
	2)	If dll entrypoints return TRUE, the return value is changed to
sl@0
  2733
		KErrNone.
sl@0
  2734
		This change means that Win32 DLLs linked to by EPOC DLLs can return
sl@0
  2735
		TRUE without resulting in a KErrBadLibraryEntryPoint error.
sl@0
  2736
sl@0
  2737
2) Nicolas
sl@0
  2738
	1)	Fixed bugs preventing from building __EARLY_DEBUG__-enabled MCGA
sl@0
  2739
		kernels.
sl@0
  2740
sl@0
  2741
3) Dennis
sl@0
  2742
	1)	Fixed EDNPPAN-4KEELX (HAL attribute for keyboard backlight needed).
sl@0
  2743
	2)	Fixed EDNPPAN-4KPEEL (HAL attribute EAccessoryPower needed).
sl@0
  2744
	3)	Fixed EDNJPAR-4KLLGL (HAL TManufacturer not generic).
sl@0
  2745
	4)	Fixed EDNRFID-4KTFD3 (Bootstrap doesn't clear first new page table).
sl@0
  2746
	5)	Removed ARM architecture 3 maths code from UC_I64.CPP and UC_REALX.CPP.
sl@0
  2747
		The architecture 4 code is always used now.
sl@0
  2748
sl@0
  2749
Version 1.02.267
sl@0
  2750
================
sl@0
  2751
(Made by Alastair, 23.5.2000)
sl@0
  2752
sl@0
  2753
1) Dennis
sl@0
  2754
	1)	Fixed problem with all ARM bootstraps caused by switching mode from
sl@0
  2755
		svc26 to svc32 in a subroutine - LR will contain flags since the BL
sl@0
  2756
		was executed in 26-bit mode, giving an incorrect return address for
sl@0
  2757
		32-bit mode. Fixed by masking top 6 bits of LR if the routine was
sl@0
  2758
		actually entered in 26-bit mode.
sl@0
  2759
	2)	Fixed defect EDNGBON-4JYNU6 (Inaccessibility of request semaphores
sl@0
  2760
		breaks EPOC connect). Thread request semaphores are no longer added
sl@0
  2761
		to the K::Semaphores container so that other EPOC code cannot access
sl@0
  2762
		them directly. On EPOC they are also unnamed, on Win32 they are named
sl@0
  2763
		PROCESSNAME::THREADNAME{EPOCTHREADID} so that the Win32 semaphore
sl@0
  2764
		inherits this name and can be found by EPOC connect.
sl@0
  2765
	3)	Fixed defect EDNSCHM-4K7MTC (CActiveScheduler::Error() broken on ARM).
sl@0
  2766
	4)	Fixed defect EDNDBAR-4K5EU3 (Close functions in RArray...)
sl@0
  2767
	5)	Fixed defect EDNMBOX-4JZEAP (TDblQueLink should allow multiple deques).
sl@0
  2768
	6)	Fixed defect EDNACLN-4JQK2F (HAL::Get panics on low memory).
sl@0
  2769
	7)	Fixed defect EDNSCHM-4JHRRS (RTimer::Inactivity only useful for switch
sl@0
  2770
		off)
sl@0
  2771
sl@0
  2772
2) Nicolas
sl@0
  2773
	1)	Debug::EnableBreakPoint() now flushes instruction cache after writing
sl@0
  2774
		breakpoints into memory.  This fixes the transient test failures
sl@0
  2775
		observed on brutus.
sl@0
  2776
sl@0
  2777
3)	Alastair
sl@0
  2778
	1)	Introduced new scheme into WINS/WINC so that Dll entry-points are
sl@0
  2779
		called by EPOC in much the same way that they are called on a target
sl@0
  2780
		device.
sl@0
  2781
		When a process is started or when a library is loaded, the Kernel
sl@0
  2782
		creates a Dll reference table for the executable to mimic the Dll
sl@0
  2783
		information available on the target device.  EPOC under WINS/WINC can
sl@0
  2784
		thus call Dll entry-points at the appropriate times.  This change
sl@0
  2785
		means that the Win32 Dll entrypoint mechanism is no longer used for
sl@0
  2786
		calling Dll entry-points, and therefore avoids deadlock occurring due
sl@0
  2787
		to the "hidden" critical section used by Windows operating systems
sl@0
  2788
		while making entry-point calls.  This change fixes Symbian defect
sl@0
  2789
		EDNATHE-4GAL54 -
sl@0
  2790
			"Emulator hangs during startup"
sl@0
  2791
		Whether this change will also fix similar deadlocks occuring with the
sl@0
  2792
		Emulator running  with NT SP5 on Compaq PCs remains to be seen.
sl@0
  2793
	2)	Added WINS/WINC base address for HAL.DLL - 0x6b000000
sl@0
  2794
sl@0
  2795
4) Morgan
sl@0
  2796
	1)	Undid a change to TMillisecondTimer::CounterExpired that was causing
sl@0
  2797
		the digitiser to crash on Series5mx.
sl@0
  2798
sl@0
  2799
sl@0
  2800
Version 1.02.266
sl@0
  2801
================
sl@0
  2802
(Made by MarkCa, 16/05/00)
sl@0
  2803
sl@0
  2804
1) Pete
sl@0
  2805
	1)	Fixed EDNPHAR-4JCNSC (Can't access removable drives
sl@0
  2806
		on latetst Brutus Roms).
sl@0
  2807
	2) 	Fixed a couple of problems to allow UserSvr::ForceRemountMedia()
sl@0
  2808
		to work when a non-removable drive is specified. This now
sl@0
  2809
		allows the media driver for a non-removable drive to be swapped
sl@0
  2810
		successfully.
sl@0
  2811
	3) 	Modified the ISR for the Brutus PCMCIA/CF Card Serial driver (COM4)
sl@0
  2812
		so that it now handles all pending UART interrupts in
sl@0
  2813
		a single call rather than just the highest priority interrupt. This
sl@0
  2814
		fixes problems with the driver where it could 'lose track' of
sl@0
  2815
		interrupts when multiple interrupts were pending.
sl@0
  2816
		This fixes EDNACLE-4JZL3V (Brutus PCMCIA Serial I/O Adapter hangs...)
sl@0
  2817
		and EDNPREF-4JCKV (Protocol hanging on Brutus board).
sl@0
  2818
	4) 	Modified the Brutus PCMCIA/CF Card Serial driver (COM4)
sl@0
  2819
		to support change notification.
sl@0
  2820
	5)	Fixed a problem with Brutus built-in serial ports
sl@0
  2821
		(COM1 and COM2) which were not correctly configuring the port when
sl@0
  2822
		either Odd or Even parity was selected.
sl@0
  2823
sl@0
  2824
2) RobertJ
sl@0
  2825
	1)	Fixed \brutusa\vi_com2.cpp, \brutusa\vi_fir.cpp, \brutusa\v32isaba.h
sl@0
  2826
		to cope with transceiver SIR/FIR mode change
sl@0
  2827
sl@0
  2828
3) Morgan
sl@0
  2829
	Fixed some anomalies in the power handling code:
sl@0
  2830
	1)	Removed ImpHal::Standby() and ImpHal::Standby(aWakeup) (from
sl@0
  2831
		MAWD, MISA, MCGA, MEIG, MMAD)
sl@0
  2832
		and replaced it with appropriate code in the power model.
sl@0
  2833
		The correct way to turn off the machine from kernel-side is to call
sl@0
  2834
			a) DPowerModel::PowerStandby() for immediate kernel-side switchoff
sl@0
  2835
			b) Kern::AddEvent(ESwitchOff) for ordered user shutdown
sl@0
  2836
		To turn off from user side, we call UserHal::SwitchOff().
sl@0
  2837
	1.2)Renamed K::SwitchOff() to Power::SwitchOff()
sl@0
  2838
		Renamed K::PowerOn() to Power::PowerOn()
sl@0
  2839
		Removed DPowerModel::PowerStandby(aWakeup) because it is useless.
sl@0
  2840
	2)	UserHal::SwitchOff calls Power::SwitchOff which calls PowerStandby on
sl@0
  2841
		all power handlers.  This will cause
sl@0
  2842
		DPowerModel::PowerTransition(EPowerNone) to be called (when each power
sl@0
  2843
		hander has called SetRequirement(0)).  The power model should then
sl@0
  2844
		call DPowerModel::PowerStandby() to turn the machine off. (see a)
sl@0
  2845
		above).
sl@0
  2846
	3)	DPowerModel::PowerStandby() works out when the next alarm is due, and
sl@0
  2847
		turns off the machine by calling the appropriate
sl@0
  2848
		DPowerModel::DoPowerStandby(/*aWakeup*/) function.
sl@0
  2849
	4)	Added a User-Cpu-In-Use flag to the power model's power-requirement.
sl@0
  2850
		This stops the machine turning off while there is user-side processing
sl@0
  2851
		but no device drivers (power handlers) active.  This flag does NOT
sl@0
  2852
		prevent idle.  This flag is unset when UserHal::SwitchOff is called,
sl@0
  2853
		and set for PowerOn.
sl@0
  2854
sl@0
  2855
Version 1.02.265
sl@0
  2856
================
sl@0
  2857
(Made by Morgan, 18/4/2000)
sl@0
  2858
sl@0
  2859
0)	Must change \\epoc\main\generic\romkit\include\base.iby line
sl@0
  2860
		file[VARID]=ASSP_DIR\BUILD_DIR\cVARLETTERxyVARIANT.dll System\Libs\Exyin.dll
sl@0
  2861
	to
sl@0
  2862
		extension[VARID]=ASSP_DIR\BUILD_DIR\cVARLETTERxyVARIANT.dll System\Libs\Exyin.dll
sl@0
  2863
	when integrating to mainline.
sl@0
  2864
sl@0
  2865
1) Morgan
sl@0
  2866
	1)	Made all XYInputs into kernel-extensions
sl@0
  2867
	2)	Removed TXYInput from M32HAL.H
sl@0
  2868
sl@0
  2869
2) Dennis
sl@0
  2870
	1)	Fixed EDNJPAR-4G5FA8 (missing chunk types)
sl@0
  2871
	2)	Fixed EDNMBOX-4DSJXH (missing #include guards on e32des8.h
sl@0
  2872
		and e32des16.h)
sl@0
  2873
	3)	Fixed EDNJBON-4DCEHD (Kern::Printf doesn't support %c)
sl@0
  2874
	4)	Fixed EDNPBAA-4HXEST (TDes::Format doesn't support %i)
sl@0
  2875
	5)	Fixed EFNATHE-4GYFQ8 (Thread semaphores named after thread)
sl@0
  2876
	6)	Fixed EDNJHAS-4HCQAF (SA1100 standby)
sl@0
  2877
	7)	Fixed EDNDBAR-4C5E7V (RArray<> should have a TArray interface).
sl@0
  2878
	8)	Fixed EDNJHAS-4HXEGT (Literal length as compiler constant).
sl@0
  2879
	9)	Fixed EDNJHAS-4HXELS (Compile-time TFixedArray).
sl@0
  2880
	10)	Fixed EDNJHAS-4HXEPN (Support for profiling).
sl@0
  2881
	11)	Added CleanupStack checking functions:
sl@0
  2882
			CleanupStack::Pop(TAny* aExpectedItem)	check top item and pop
sl@0
  2883
			CleanupStack::PopAndDestroy(TAny* aExpectedItem)	check top
sl@0
  2884
			item, pop and destroy
sl@0
  2885
			CleanupStack::Pop(TInt aCount, TAny* aExpectedItem)	Pop aCount
sl@0
  2886
			items, checking last one
sl@0
  2887
			CleanupStack::PopAndDestroy(TInt aCount, TAny* aExpectedItem)
sl@0
  2888
			Pop/destroy aCount items, checking last one
sl@0
  2889
	12)	Removed compiler warnings from E32 and variants.
sl@0
  2890
	13)	Added EMemoryRAMFree option to HAL to get amount of free RAM.
sl@0
  2891
	14) Fixed EDNCDUG-4J3QA8 (collate.h includes files not in \epoc32\include).
sl@0
  2892
sl@0
  2893
3)	Alastair
sl@0
  2894
	1)	Fixed EDNABRY-4JGJG4 "Test T_Float fails under WINS/WINC"
sl@0
  2895
sl@0
  2896
sl@0
  2897
Version 1.02.264
sl@0
  2898
================
sl@0
  2899
(Made by Morgan, 7/4/2000)
sl@0
  2900
sl@0
  2901
1) Morgan
sl@0
  2902
	1)	Added DPowerHandler::DoPowerTransition(aPowerState) virtual
sl@0
  2903
		function to the power handlers.  Power handlers should
sl@0
  2904
		implement this if they need notification when the power state
sl@0
  2905
		of the machine changes.
sl@0
  2906
	2)	Added DPowerModel::PowerTransition to call the power handlers.
sl@0
  2907
		Added pure virtual function DPowerModel::DoPowerTransition()
sl@0
  2908
		to replace the DPowerModel::SetPowerState function, (which has
sl@0
  2909
		now been killed).
sl@0
  2910
	3)	Added Power Model locking - Power::[Un]LockPowerModel().  This
sl@0
  2911
		prevents the power model from shifting power states during
sl@0
  2912
		power critical periods.
sl@0
  2913
	4)	Added ECaseState to the HAL.
sl@0
  2914
	5)	Removed ImpHal::EmergencyStandby() from all platforms.  This fn
sl@0
  2915
		is not used or needed any more.
sl@0
  2916
sl@0
  2917
2) Nicolas
sl@0
  2918
	1)	Improvements and bug fixes in RDebug API implementation
sl@0
  2919
		so in-target-debugging will be usable on ER6 devices.
sl@0
  2920
		USER-LEVEL VISIBLE CHANGES:
sl@0
  2921
		* Debugging resources owned by the debugger and the
sl@0
  2922
		  debuggee are automatically released when the
sl@0
  2923
		  debugger/debuggee ends (this includes automatically
sl@0
  2924
		  closing the debugging session).
sl@0
  2925
		* SDebugInfo has a new field containing the start
sl@0
  2926
		  address of the debuggee's data/bss chunk: this is
sl@0
  2927
		  mandatory to support the current toolchain in
sl@0
  2928
		  gdbstub.
sl@0
  2929
		* THUMB breakpoints supported.  Let A be the address
sl@0
  2930
		   of a breakpoint to be set/cleared.  In THUMB mode, A
sl@0
  2931
		   should be passed as-is to RDebug.     In ARM mode, A+2
sl@0
  2932
		   should be passed.  See below for a rationale.
sl@0
  2933
		* New class TArmBreakPoint added in kc_std.h.  It
sl@0
  2934
		  contains breakpoint characteristics and an inline
sl@0
  2935
		  function that can be used to insert a hardcoded ARM
sl@0
  2936
		  or THUMB breakpoint in user code.
sl@0
  2937
		INTERNAL CHANGES:
sl@0
  2938
		* Breakpoint notification in __ArmVectorUndef() was
sl@0
  2939
		  disabled.  It is now re-enabled.  Code updated to
sl@0
  2940
		  take into account both THUMB and ARM.
sl@0
  2941
		* Support for ARM BX instruction has been added to
sl@0
  2942
		  single-stepping code.  THUMB single-stepping still
sl@0
  2943
		  not supported.
sl@0
  2944
		* In Debug::Continue(), removed code which stepped
sl@0
  2945
		  over breakpoints located at the start address
sl@0
  2946
		  because GDB already does the same thing.  Removed
sl@0
  2947
		  too, code which stepped over hardcoded breakpoints
sl@0
  2948
		  because it was buggy and hardcoded breakpoints are
sl@0
  2949
		  uncommon.
sl@0
  2950
		* New scheme used for breakpoints: a single 16-bit
sl@0
  2951
		  opcode is used for both ARM and THUMB breakpoint.
sl@0
  2952
		  For ARM, this pattern must replace the upper 16-bits
sl@0
  2953
		  of the instruction to break at.  As little-endian is
sl@0
  2954
		  used, the breakpoint bit pattern is actually at
sl@0
  2955
		  address+2, hence the API change described above.
sl@0
  2956
		* CPU-dependent modifications done in both generic ARM
sl@0
  2957
		  and in windermere.
sl@0
  2958
	2)    Fixed defect EDNNTHY-4H6PXT (PC address computed at
sl@0
  2959
		  start of __ArmVectorUndef() is wrong in THUMB mode).
sl@0
  2960
sl@0
  2961
3) AndrewB
sl@0
  2962
	1)	Removed K32SND.H, K32SND.INL, D32SND.H and D32SND.INL
sl@0
  2963
		from the export section of bld.inf. These files should
sl@0
  2964
		no longer be public since all sound functionality is now
sl@0
  2965
		managed by the Media Server.
sl@0
  2966
sl@0
  2967
4)	MarkCa
sl@0
  2968
	1)	\E32\EPBUS\EMUL\WIN32\PP_PCCD.CPP
sl@0
  2969
		Added ReadPasswordFromStore() and EncodePassword().
sl@0
  2970
		Added logic to RPlatPccdChunk::(Read|Write) to automatically unlock
sl@0
  2971
		card if pw in store  Replaced assertion w. return code in
sl@0
  2972
		DPlatPcCardController::WritePasswordData().  Added comments to describe
sl@0
  2973
		how emulated mechanism corresponds with real MMC mechanism.
sl@0
  2974
		Modified password store to use 128-bit card ids to simulate mmc better.
sl@0
  2975
		DPlatPcCardController::PasswordControl(),
sl@0
  2976
		DPlatPcCardController::PasswordStoreLengthInBytes(),
sl@0
  2977
		DPlatPcCardController::(Read|Write)PasswordStore()
sl@0
  2978
		All modified to give same behaviour as default DPeriphBusController
sl@0
  2979
		virtual functions if _LOCKABLE_MEDIA is not #defined.
sl@0
  2980
	2)	\E32\EPBUS\EMUL\WIN32\PP_STD.H
sl@0
  2981
		DPlatPcCardController prototypes for above.
sl@0
  2982
		Removed panics EWinsPcCard(MappingNotInStore|PswdStoreBadWriteDesc).
sl@0
  2983
	3)	\E32\INCLUDE\E32SVR.H
sl@0
  2984
		Added "//#define _LOCKABLE_MEDIA" so WINS PC Card controller can be
sl@0
  2985
		built without locking mechanism.
sl@0
  2986
sl@0
  2987
5)	Morgan
sl@0
  2988
	1)	Changed declaration of Custom::DriveSettings to pure virtual on
sl@0
  2989
		MAWD and MMAD and MIEG platforms.
sl@0
  2990
	2)	k32snd.h and d32snd.h are no longer exported, so:
sl@0
  2991
		Changed \series5mx\va_sdrv.h to get k32snd.* and d32snd.*
sl@0
  2992
		from \e32\include. Changed \cirrus72x1\va_sdrv.h to get k32snd.*
sl@0
  2993
		and d32snd.* from \e32\include.  Modified k32snd.h and d32snd.h
sl@0
  2994
		to get header files from \e32\include
sl@0
  2995
sl@0
  2996
6)	Alastair
sl@0
  2997
	1)	Removed unused __USE_CRITICAL_SECTION__ #defines from the WINS/WINC
sl@0
  2998
		kernel.
sl@0
  2999
	2)	Removed badly-spelt LedArrangeVerticaly keyword from the EPOC.INI file
sl@0
  3000
		processing code - use LedArrangeVertically instead.
sl@0
  3001
	3)	Named the WINS/WINC kernel critical section mutex so that it can be
sl@0
  3002
		shared between processes.
sl@0
  3003
	4)	Fixed Symbian ER5u defect EDNHLOO-4HGKKJ
sl@0
  3004
		"EXPORT_C used instead of IMPORT_C in header file".
sl@0
  3005
sl@0
  3006
7) 	Pete
sl@0
  3007
	1)	Added extra member to TDriveInfoV1 class:-
sl@0
  3008
			TInt iRuggedFileSystem
sl@0
  3009
		With this set (to KRuggedFileSystem), it indicates to the
sl@0
  3010
		file server that it should implement a rugged file system.
sl@0
  3011
		This required the addition of a new variant function - DriveSettings()
sl@0
  3012
		so the ruggedization option can be selected at the variant level.
sl@0
  3013
	2) 	Added latest versions of LFFS Media drivers for WINS and Brutus - 4th
sl@0
  3014
		candidate version (R1.2) of LFFS.
sl@0
  3015
	3) 	Modification to E32 local media subsystem so that the reading
sl@0
  3016
		of partition information from the media driver on mounting
sl@0
  3017
		a drive is done asynchronously. This affects the media driver API as
sl@0
  3018
		follows:-
sl@0
  3019
sl@0
  3020
		TInt DMediaDriver::PartitionInfo(TPartitionInfo &anInfo);
sl@0
  3021
		becomes
sl@0
  3022
		void DMediaDriver::ReadPartitionInfo(TInt &aResult,const TCallBack& aCallBack);
sl@0
  3023
sl@0
  3024
		The ReadPartitionInfo() call just initiates the reading of partitiion
sl@0
  3025
		information with this typically being concluded on an interrupt. From
sl@0
  3026
		the interrupt, the driver signals the conclusion of the requests by
sl@0
  3027
		call 'aCallback', having first written the result of the request to
sl@0
  3028
		'aResult'. The partition info is now written by the driver directly
sl@0
  3029
		into its member data - DMediadriver::iPartitionInfo rather than being
sl@0
  3030
		passed back to the local media subsystem.
sl@0
  3031
sl@0
  3032
8)	Dennis
sl@0
  3033
	1)	Renamed iCount member of CObjectIx to iHighWaterMark. Added new member
sl@0
  3034
		iNumEntries which counts the number of actual entries in the index.
sl@0
  3035
		The Count() member function now returns iHighWaterMark so its meaning
sl@0
  3036
		is unchanged. Added new ActiveCount() member function to return the
sl@0
  3037
		new iNumEntries member.
sl@0
  3038
		Changed Exec::HandleCount() to return the number of actual handles open
sl@0
  3039
		rather than the high water mark of the handles array as before.
sl@0
  3040
sl@0
  3041
Version 1.02.263
sl@0
  3042
================
sl@0
  3043
(Made by MarkDo, 30.03.2000)
sl@0
  3044
sl@0
  3045
1)	Morgan
sl@0
  3046
	1)	Reorganised the super-page into TSuperPage, TKernelPage,
sl@0
  3047
		and TMachineConfiguration.  TMachineConfiguration has
sl@0
  3048
		been promoted from WINS.
sl@0
  3049
		TSuperPage holds values discovered by the bootstrap that
sl@0
  3050
		are required by the generic kernel.  TKernelPage
sl@0
  3051
		contains generic kernel data that needs to be preserved
sl@0
  3052
		over a warm reset.  TMachineConfiguration contains
sl@0
  3053
		system wide settings that should be persisted over a
sl@0
  3054
		warm reset and machine state saves (backup).
sl@0
  3055
	2)	Changed P::SetMachineConfiguration() and
sl@0
  3056
		P::MachineConfiguration() to use the new
sl@0
  3057
		TMachineConfiguration on all platforms.
sl@0
  3058
	3)	Removed iDebugger from the super page
sl@0
  3059
	4)	Fixed some warnings
sl@0
  3060
	5)	Changed the bootstraps for MEIG and MAWD to match new
sl@0
  3061
		superpage layout.
sl@0
  3062
		Changed bootstrap\include\superpage.h to match new
sl@0
  3063
		bootstrap.
sl@0
  3064
	6)	Removed PowerRestart functions since the power model
sl@0
  3065
		never calls them.
sl@0
  3066
sl@0
  3067
sl@0
  3068
Version 1.02.262
sl@0
  3069
================
sl@0
  3070
(Made by Dennis, 23.03.2000)
sl@0
  3071
sl@0
  3072
1)	Alastair
sl@0
  3073
	1)	Added calls to Sleep(0) before all occurrences of SetEvent(),
sl@0
  3074
		ReleaseSemaphore() and ReleaseMutex() in accordance with advice given
sl@0
  3075
		in MSDN Knowledge Base article Q173260.  This change should make one
sl@0
  3076
		variant of the Emulator Hanging bug less likely to occur.
sl@0
  3077
sl@0
  3078
2)	MarkCa
sl@0
  3079
	1)	\E32\EPBUS\EMUL\WIN32\PP_PCCD
sl@0
  3080
		Added ReadPasswordFromStore() and EncodePassword().
sl@0
  3081
		Added logic to RPlatPccdChunk::(Read|Write) to automatically unlock
sl@0
  3082
		card if pw in store.
sl@0
  3083
		\E32\EPBUS\EMUL\WIN32\PP_STD.H
sl@0
  3084
		DPlatPcCardController prototypes for above.
sl@0
  3085
sl@0
  3086
3)	MarkDo
sl@0
  3087
	1)	Added additional media attributes KMediaAttLockable and
sl@0
  3088
		KMediaAttLocked.
sl@0
  3089
sl@0
  3090
4)	Pete
sl@0
  3091
	1) 	Removed the EUSER class UserPcCardCntrl.
sl@0
  3092
	2)	Modified the function MBusDev::DoAsyncLateOpen() to
sl@0
  3093
		now take an additional second parameter 'TInt anOpenInfo'.
sl@0
  3094
sl@0
  3095
5)	Dennis
sl@0
  3096
	1)	Removed the EPOC registry - files US_REG.CPP, UB_REG.CPP and KP_REG.CPP
sl@0
  3097
		along with TRegistryCategory, TRegistryItemName, TRegistryItemValue,
sl@0
  3098
		CRegistry, CPersistentRegistry and Environment classes.
sl@0
  3099
	2)	Removed most UserHal:: functions - these have been superseded by HAL::
sl@0
  3100
		functions.
sl@0
  3101
	3)	Removed RThread::Create() overload taking a RProcess& parameter and
sl@0
  3102
		removed RProcess* parameter from the overload taking an RLibrary*
sl@0
  3103
		parameter. Threads may now only be created in the current process.
sl@0
  3104
	4)	Reassigned ARM domains following demise of registry. 2 is still used
sl@0
  3105
		for page tables, 3 is now used for the RAM drive and 4 for F32.
sl@0
  3106
	5)	Change to Brutus bootstrap to link at 0xc8000000 for compatibility
sl@0
  3107
		with 12Mb bootloader.
sl@0
  3108
sl@0
  3109
sl@0
  3110
Version 1.02.261
sl@0
  3111
================
sl@0
  3112
(Made by Robert, 17.3.2000)
sl@0
  3113
sl@0
  3114
1)	Morgan
sl@0
  3115
	1)	Added User::ResetInactivityTime() to reset all
sl@0
  3116
		RTimer::Inactivity timers
sl@0
  3117
	2)	Added TRawEvent::EKeyRepeat for adding auto repeated key events
sl@0
  3118
		to the event queue
sl@0
  3119
sl@0
  3120
2)	Pete
sl@0
  3121
	1)	Added kernel functions to read, write and return the
sl@0
  3122
		size of the Peripheral Bus Controller password store.
sl@0
  3123
sl@0
  3124
3)	MarkCa
sl@0
  3125
		1)	Added WINS PC Card locking features to test mmc (Crystal) functions
sl@0
  3126
sl@0
  3127
			\E32\EKERN\KW_EXEC.CPP
sl@0
  3128
			Modified ExecHandler::Drive(ReadPasswordData|PasswordStoreLengthInBytes)()
sl@0
  3129
		to call P functions.
sl@0
  3130
sl@0
  3131
			\E32\EKERN\KS_SVR.CPP
sl@0
  3132
			Modified svDriveWritePasswordData to call P::WritePeriphBusPasswordData().
sl@0
  3133
sl@0
  3134
			\E32\EPBUS\EMUL\WIN32\PP_PCCD.CPP
sl@0
  3135
			Modified DPlatPcCardController::PasswordControl().
sl@0
  3136
			Implemented DPlatPcCardController::(Read|Write)PasswordStore(),
sl@0
  3137
			DPlatPcCardController::PasswordStoreLengthInBytes().
sl@0
  3138
			Read and write routines return KErrLocked if locked and accessing
sl@0
  3139
			EPccdAttribMem memory.  This still allows chunks to be created for
sl@0
  3140
			locked cards.
sl@0
  3141
sl@0
  3142
		\E32\EPBUS\EMUL\WIN32\PP_STD.H
sl@0
  3143
			Prototypes for above and store panic codes.
sl@0
  3144
sl@0
  3145
4)	RobertJ
sl@0
  3146
	1)	Entered suppilied mods to Linda SIR in vm_com2.cpp for all variants
sl@0
  3147
sl@0
  3148
sl@0
  3149
Version 1.02.260
sl@0
  3150
================
sl@0
  3151
(Made by Alastair, 10.3.2000)
sl@0
  3152
sl@0
  3153
sl@0
  3154
1)	Alastair
sl@0
  3155
	1)	Updated e32 rombuild scripts to pick up the test .IBY files
sl@0
  3156
		generated by Bldmake from the new directory structure implied
sl@0
  3157
		by recent changes to E32TOOLP.
sl@0
  3158
sl@0
  3159
	2)	Added temporary hack to bootstrap component extension makefile
sl@0
  3160
		so that mainline rombuilds for MEIG, MAWD and MMAD will still work,
sl@0
  3161
		now that the rombuild system has been changed to work with output
sl@0
  3162
		produced by the generic bootstrap build system.
sl@0
  3163
sl@0
  3164
2)	Pete
sl@0
  3165
	1)	Modified PC Card Controller emulator (EPBUS) in WINS
sl@0
  3166
		to implement Peripheral bus password functions (Lock/Unlock/Clear).
sl@0
  3167
		This is only possible on the simulated CF cards in Socket 0 (not the
sl@0
  3168
		simulated Compact rom card in socket 1).
sl@0
  3169
sl@0
  3170
3)	MarkCa
sl@0
  3171
	1)	\E32\EUSER\US_KSVR: converted
sl@0
  3172
		TBusLocalDrive::((Lock|Unlock)Drive)|ClearPassword) from async to sync.
sl@0
  3173
		\E32\E32SVR.H: changed TBusLocalDrive prototypes.
sl@0
  3174
sl@0
  3175
Version 1.02.259
sl@0
  3176
=================
sl@0
  3177
(Made by MarkCa 03-03-00)
sl@0
  3178
sl@0
  3179
1)	Morgan
sl@0
  3180
	1)	Guarded POS hooks with #define __SUPPORT_PARTNER_OS__ and updated
sl@0
  3181
		U32STD.H appropriately.  This removes partner OS support from most
sl@0
  3182
		platforms.
sl@0
  3183
	2)	'Enhanced' the POS hooks.  Kernel lock is now done after the POS
sl@0
  3184
		reschedule hook, instead of before.  This makes it necessary to
sl@0
  3185
		check for the POS rescheduler being interrupted.  If it has been
sl@0
  3186
		interrupted then we now make an early exit from the int-vector to
sl@0
  3187
		prevent running DFCs from the nested interrupt.
sl@0
  3188
sl@0
  3189
2)	William
sl@0
  3190
	1)	Fixed the borders for text-window server windows on EPOC devices.
sl@0
  3191
		WINS uses true Unicode fonts, but EPOC devices have a cp1252 font
sl@0
  3192
		built in, and so need to continue using the cp1252 encoding for the
sl@0
  3193
		box drawing characters.
sl@0
  3194
sl@0
  3195
3)	MarkCa
sl@0
  3196
	1)	Added TBusLocalDrive -> Exec -> ExecHandler functions for MMC
sl@0
  3197
		password support.
sl@0
  3198
sl@0
  3199
4)	Pete
sl@0
  3200
	1)	Added PasswordControl() function to TLocDrv,DMediaDriver and
sl@0
  3201
		DPeriphBusController classes.
sl@0
  3202
sl@0
  3203
Version 1.02.258
sl@0
  3204
================
sl@0
  3205
(Made by Pete 24/02/00)
sl@0
  3206
sl@0
  3207
1)	Alastair
sl@0
  3208
	1)	Updated a few .mmp files to hardcode .def file locations.
sl@0
  3209
sl@0
  3210
2)	Dennis
sl@0
  3211
	1)	Made TDesC8::Left(), TDesC8::Right(), TDesC16::Left() and
sl@0
  3212
		TDesC16::Right() truncate the requested length to Length() instead
sl@0
  3213
		of panicing.
sl@0
  3214
	2)	Export COLLATE.H to \Epoc32\Include instead of \Epoc32\Include\Kernel
sl@0
  3215
		since it contains public interfaces.
sl@0
  3216
	3)	Added DEBUG mode checking to ensure that heaps are not referenced by
sl@0
  3217
		DFCs. Before calling a DFC the current heap pointer is changed to
sl@0
  3218
		0xC90FDAA2 and is restored when the DFC returns.
sl@0
  3219
sl@0
  3220
3)	Morgan
sl@0
  3221
	1)	Removed \hal\group.  BLD.INF is now in \hal.  Removed annoying
sl@0
  3222
		"Nothing to do" declarations.  Updated all variant hals to match.
sl@0
  3223
sl@0
  3224
4)	Robert
sl@0
  3225
	1)	Added new export ClearIrError for Linda in ka_linda.cpp and v32linda.h
sl@0
  3226
sl@0
  3227
5)	Pete
sl@0
  3228
	1)	Signal change notification added to Cogent DTE serial drivers (COM3 &
sl@0
  3229
	  	COM4).
sl@0
  3230
	2)	Fixed problem with signal change notification on DTE
sl@0
  3231
		and DCE serial drivers where it was possible for a transition on a
sl@0
  3232
		modem status line to occasionally fail to trigger notification.
sl@0
  3233
	3) 	Added CF Card Serial driver for Brutus (COM4) - not yet tested.
sl@0
  3234
sl@0
  3235
sl@0
  3236
Version 1.02.257
sl@0
  3237
================
sl@0
  3238
(Made by Dennis, 14-02-2000)
sl@0
  3239
sl@0
  3240
1)	Dennis
sl@0
  3241
	1)	Added HAL component.
sl@0
  3242
	2)	Removed calls to most UserHal functions except for those which are
sl@0
  3243
		always available from the kernel.
sl@0
  3244
	3)	Inlined ::operator new(TUint, TLeave) and
sl@0
  3245
		CBase::operator new(TUint, TLeave) to remove the need for the
sl@0
  3246
		TLeave parameter to be generated by the compiler.
sl@0
  3247
	4)	Kernel now always disables auto switch off by default.
sl@0
  3248
	5)	Added RTimer::Inactivity() and CTimer::Inactivity() functions to
sl@0
  3249
		support generic user inactivity timers.
sl@0
  3250
	6)	Added K::InactivityQ and TInactivityLink to the kernel to implement
sl@0
  3251
		generic user inactivity timers.
sl@0
  3252
	7)	Added User::InactivityTime() to return the time elapsed since the last
sl@0
  3253
		user event.
sl@0
  3254
sl@0
  3255
2)	Morgan
sl@0
  3256
	1)	Exported hal_int.h into the system\kernel include dir
sl@0
  3257
	2)	Made \hal\group\config.mke generic so it works for HALs in
sl@0
  3258
		\hal component and also works for HALs in \<variant>\hal.
sl@0
  3259
		Renamed <variant>.hda and <variant>.hcf to values.hda and
sl@0
  3260
		config.hcf.
sl@0
  3261
	3)	Added HALs to linda b,c,1 variants
sl@0
  3262
	4)	Updated Variant::DisplayOn for all linda variants.
sl@0
  3263
		Code from Sampsa - not tested locally.
sl@0
  3264
	5)	Fixed EPBUS build error in pa_std.h on MMAD platform
sl@0
  3265
	6)	Added kernel-extension loading to kernel init.
sl@0
  3266
		Kernel extensions are loaded just before the file-server.
sl@0
  3267
		Extensions can have writable static data but global constructors
sl@0
  3268
		are not called.
sl@0
  3269
	8)	Made keyboard drivers on all platforms into kernel-extensions.
sl@0
  3270
	9)	Removed TKeyboard.
sl@0
  3271
	10)	Fixed bug in TIdler::Idle().  There are now 64 ticks in a second.
sl@0
  3272
sl@0
  3273
3)	Jonathan
sl@0
  3274
	1)	Fixes to "mnt distrib" mechanism and dsitrib.txt files.
sl@0
  3275
		Made distrib.pl checking stricter: Checks for mising distrib.txt files
sl@0
  3276
		and for non-existent files listed in distrib.txt.
sl@0
  3277
sl@0
  3278
4)	Pete
sl@0
  3279
	1) 	Re-enabled the ACD on MEIG.
sl@0
  3280
	2)	Enabled main battery voltage measurement on Cirrus 7211
sl@0
  3281
		board (which is simulated using a pot. on the board). Also reference
sl@0
  3282
		voltage measurement. Disabled backup battery measurement.
sl@0
  3283
	3)	Added digitizer driver for Cirrus 7211 board - using
sl@0
  3284
		ADC channels to measure screen position.
sl@0
  3285
	4)	Generally tidied up variant for Cirrus 7211 board.
sl@0
  3286
	5)	Modified MEIG bootsrap so it resets DRAM width to
sl@0
  3287
		32bit. (Cirrus 7211 repro program sets it to 16bit).
sl@0
  3288
	6) 	Temporarily re-assigned Cogent UART3.PDD to use
sl@0
  3289
		UARTB rather than UARTC since UARTC/UARTD still have h/w problems
sl@0
  3290
		with setting thier interrupt mask registers. This means Cogent now
sl@0
  3291
		has a single DCE and DTE serial port. The ports are now assigned:-
sl@0
  3292
sl@0
  3293
		Driver	Port Number	Uart	Port Type
sl@0
  3294
		------	-----------	----	---------
sl@0
  3295
		EUART1	Serial 0	UART-A	DCE
sl@0
  3296
		EUART2	Serial 2	UART-C	Not working
sl@0
  3297
		EUART3	Serial 1	UART-B	DTE
sl@0
  3298
		EUART4	Serial 3	UART-D	Not working
sl@0
  3299
sl@0
  3300
Version 1.02.256
sl@0
  3301
================
sl@0
  3302
(Made by Simon, 01-02-2000)
sl@0
  3303
sl@0
  3304
1)	Dennis
sl@0
  3305
	1)	Added aLength parameter to Dll::GlobalRead() to specify how much data
sl@0
  3306
		to read.
sl@0
  3307
	2)	Added UserSvr::HalGet() and UserSvr::HalSet().
sl@0
  3308
sl@0
  3309
2)	Pete
sl@0
  3310
	1)	Modified Linda MMC Controller to include calls on the
sl@0
  3311
		power model to reduce the clock frequency during MMC operation (and
sl@0
  3312
		restore to normal clock frequency afterwards).
sl@0
  3313
	2) 	Corresponding changes to the Linda power model to support MMC clock
sl@0
  3314
		switching.
sl@0
  3315
	3)	Added various additional functions to TLinda class to
sl@0
  3316
		support power model clock switching.
sl@0
  3317
	4)	Added CF card modem serial PDD to MAWD - DATXB13
sl@0
  3318
sl@0
  3319
3)	Morgan
sl@0
  3320
	1)	Integrated Matt's changes for the LCD on the HPs
sl@0
  3321
sl@0
  3322
4)	Simon
sl@0
  3323
	1)	Restructured e32 source directory, and moved varients to new components
sl@0
  3324
sl@0
  3325
sl@0
  3326
Version 1.02.255
sl@0
  3327
================
sl@0
  3328
(Made by Dennis, 19th January 2000)
sl@0
  3329
sl@0
  3330
1)	Morgan
sl@0
  3331
	1)	Bug fix for WINS emulator-configuration on the command-line
sl@0
  3332
		(EDNATHE-4ETJPC)
sl@0
  3333
	2)	MMAD LC/LB/L1 clock moved to 52Mhz and changed LCD settings
sl@0
  3334
	3)	EXPORT_Ced some more functions (in ImpAsic) for use by ENOS
sl@0
  3335
	4)	Integrated changes from Nile to MMAD keyboard drivers
sl@0
  3336
	5)	Added TRUST changes to MMAD bootstrap
sl@0
  3337
	6)	Modification to the POS fiq vector to defer POS reschedule
sl@0
  3338
		when interrupted from irq or svc mode
sl@0
  3339
sl@0
  3340
2)	Dennis
sl@0
  3341
	1)	Removed X86 build
sl@0
  3342
	2)	Removed NoLongerSupported... functions from EUSER and EKERN
sl@0
  3343
	3)	Removed TReal96. Removed the implementations of Math:: functions which
sl@0
  3344
		use TReal96; only the TRealX implementations now remain. Rewrote some
sl@0
  3345
		code in UM_RTOD.CPP (real to text conversion) to use TRealX instead of
sl@0
  3346
		TReal96.
sl@0
  3347
	4)	Removed SObjectIxArray, SObjectConArray and SObjectConIxArray. These
sl@0
  3348
		data members are now part of CObjectIx, CObjectCon and CObjectConIx
sl@0
  3349
		respectively.
sl@0
  3350
	5)	Inlined CObjectCon::UniqueID() and CObjectCon::Count()
sl@0
  3351
	6)	Changes to descriptor code from Andrew Thoelke. Copy constructors are
sl@0
  3352
		no longer explicitly defined (compiler generated instead). A protected
sl@0
  3353
		empty destructor has been added to TDesC8 and TDesC16 to prevent the
sl@0
  3354
		passing of TDesC and TDes parameters by value, which would result in
sl@0
  3355
		object slicing. To cope with static descriptors, an empty atexit()
sl@0
  3356
		function has been added to UP_DLL, UP_EXE and KC_EXE for all platforms.
sl@0
  3357
	7)	Added machine coded 16-bit descriptor code for ARM (UC_DES16.CPP). This
sl@0
  3358
		is enabled by __DES16_MACHINE_CODED in U32STD.H.
sl@0
  3359
	8)	Inlined TCallBack functions.
sl@0
  3360
	9)	Removed TChar copy constructor. This means that TChar parameters passed
sl@0
  3361
		by value are now passed in registers by GCC. Modified machine coded
sl@0
  3362
		functions which take a TChar parameter to account for this.
sl@0
  3363
	10)	Removed TLex8 and TLex16 copy constructors.
sl@0
  3364
	11)	UserSvr::StaticCallList(), UserSvr::DynamicCallList() and
sl@0
  3365
		RLibrary::LibraryCallList() are no longer exported.
sl@0
  3366
	12) RChunk::CreateDllStatic(), RChunk::ReserveAt() and all overloads of
sl@0
  3367
		RChunk::Read() and RChunk::Write() have been removed.
sl@0
  3368
	13)	Added inline functions for converting TProcessId and TThreadId to and
sl@0
  3369
		from TUint.
sl@0
  3370
	14)	Removed RThread::Mark(), RThread::SetMark(), RThread::NotifyIfDie(),
sl@0
  3371
		RThread::SetNotifyIfDie(), RThread::Busy() and RThread::SetBusy().
sl@0
  3372
	15)	Removed RProcess::Mark(), RProcess::SetMark() and RProcess::Busy().
sl@0
  3373
	16)	Removed User::Abort() and User::Dying().
sl@0
  3374
	17)	Inlined TRawEvent default constructor, TRawEvent::Type() and
sl@0
  3375
		TRawEvent::Ticks().
sl@0
  3376
	18)	Removed RLoader::LoadProcess and RLoader::LoadLibrary functions which
sl@0
  3377
		don't take a TUidType. RLoader::Version() and RLoader::LoadProcess()
sl@0
  3378
		are no longer exported.
sl@0
  3379
	19)	Changed CCaptureKeys to use RArray instead of CArrayFixFlat.
sl@0
  3380
	20)	Removed class RMmu.
sl@0
  3381
	21)	Removed CArrayFixA etc.
sl@0
  3382
	22)	Options %E, %F, %G in TDes::AppendFormatList() now convert a TRealX
sl@0
  3383
		instead of a TReal96.
sl@0
  3384
	23)	Fixed bug in chunk creation - between setting the domain and the
sl@0
  3385
		iOwningProcess, the SetNameL could leave. The chunk destructor would
sl@0
  3386
		then erroneously free the domain.
sl@0
  3387
sl@0
  3388
3)	Alastair
sl@0
  3389
	1)	Removed SROS, ARM3 and MARM targets from BLD.INF and GENERIC.INF.
sl@0
  3390
	2)	Fixed minor problem with DIFILB.MMP.
sl@0
  3391
	3)	Added support for specifying color depths Gray256 and Color64K in the
sl@0
  3392
		EPOC.INI file with the ColorDepth keyword.  Changed the Emulator color
sl@0
  3393
		depths default to all supported color depths rather than just Gray2,
sl@0
  3394
		Gray4 and Gray16.
sl@0
  3395
	4)	Made processing of all EPOC.INI file keywords case-insensitive, and
sl@0
  3396
		extended maximum line length from 80 to 256 characters.  EPOC.INI
sl@0
  3397
		syntax errors are now captured and displayed in a Message box before
sl@0
  3398
		causing the Emulator to exit.  Text from the EPOC.INI file is
sl@0
  3399
		converted to UNICODE before processing.
sl@0
  3400
sl@0
  3401
4)	Mark
sl@0
  3402
	1)	Added KLindaUidValue and used to set iMachineUniqueId in superpage
sl@0
  3403
		for MMAD L1/LB/LC.
sl@0
  3404
sl@0
  3405
5)	Pete
sl@0
  3406
	1)	Merged in latest changes to MMC Controller and MMC Media driver.
sl@0
  3407
		The Controller now supports multiple block read/writes requests
sl@0
  3408
		and the Media driver makes use of the multiple block reads.
sl@0
  3409
	2)	Added support in TCogent for the 2nd Dual UART device (ST16C2552) and
sl@0
  3410
		also suppport for its associated interrupts (in KA_PIC.CPP).
sl@0
  3411
	3)	Added DCE serial drivers to Cogent - not yet fully functional. Also
sl@0
  3412
		re-organized cogent serial PDDs. These are now assigned as follows:-
sl@0
  3413
			Serial 0 - DCE using ST16C552 device (CTS/RTS).
sl@0
  3414
			Serial 1 - DCE using ST16C552 device (CTS/RTS).
sl@0
  3415
			Serial 2 - DTE using ST16C2552 device (RTS,DTR/CTS,DSR,RI).
sl@0
  3416
			Serial 3 - DTE using ST16C2552 device (RTS,DTR/CTS,DSR,RI).
sl@0
  3417
	4) 	Removed TLocalDrive class from EUSER (use TBusLocalDrive instead).
sl@0
  3418
	5)	Changed TBusLocalDrive Read(), Write() Format() functions to use a
sl@0
  3419
		TInt64 rather than a TInt to specify position within the drive.
sl@0
  3420
	6) 	Removed RLogicalChannel class from EUSER (use RBusLogicalChannel
sl@0
  3421
	   	instead).
sl@0
  3422
	7)	Removed RDevComm class from EUSER (use RBusDevComm instead).
sl@0
  3423
sl@0
  3424
Version 1.02.254
sl@0
  3425
================
sl@0
  3426
(Made by Pete, 21st December 1999)
sl@0
  3427
sl@0
  3428
1)	Petteri
sl@0
  3429
	1)	Added extended serial port functionality as required by Linda. A new
sl@0
  3430
		pair of device drivers has been added to enable Linda to act as a DCE
sl@0
  3431
		device in addition to DTE. New notifications and capabilities have
sl@0
  3432
		been added.
sl@0
  3433
sl@0
  3434
		Files changed:
sl@0
  3435
		Inc\D32comm.h		Inc\D32comm.inl
sl@0
  3436
		Inc\K32comm.h		Inc\K32comm.inl
sl@0
  3437
		Inc\K32std.h		Inc\V32linda.h
sl@0
  3438
		Dcomm\D_comm.cpp	Vmadlc\Vm_com1.cpp
sl@0
  3439
		Vmadlc\Vm_com2.cpp	Vmadlb\Vm_com1.cpp
sl@0
  3440
		Vmadlb\Vm_com2.cpp	Varmca\Va_com1.cpp
sl@0
  3441
		Varmca\Va_com2.cpp	Varmcl\Va_com1.cpp
sl@0
  3442
		Varmcl\Va_com2.cpp	Varmp2\Va_com1.cpp
sl@0
  3443
		Varmpb\Va_com1.cpp	Varmpc\Va_com1.cpp
sl@0
  3444
		Varmpc\Va_com2.cpp	Varmpd\Va_com1.cpp
sl@0
  3445
		Varmpd\Va_com2.cpp	Varmpd\Va_com3.cpp
sl@0
  3446
		Vawdb1\Va_com1.cpp	Vawdb1\Va_com2.cpp
sl@0
  3447
		Vcgac1\Va_com1.cpp	Vcgac1\Va_com2.cpp
sl@0
  3448
		Visaba\Vi_com1.cpp	Visaba\Vi_com2.cpp
sl@0
  3449
		Visaba\Vi_com3.cpp	Vrosr1\Va_coms.cpp
sl@0
  3450
		Vx86pc\Vx_comm.cpp	Dpwins\D_cdrv.cpp
sl@0
  3451
		Kamad\Ka_linda.cpp	Bmmad\Ekernu.def
sl@0
  3452
		Group\Bld.inf		Ksrc\Ks_chn.cpp
sl@0
  3453
sl@0
  3454
		Files added:
sl@0
  3455
		Dcomm\D_commdce.cpp	Vmadlc\Vm_com1dce.cpp
sl@0
  3456
		Group\Ecommdce.mmp	Group\Dmtxlc1dce.mmp
sl@0
  3457
		Group\Dmtxlb1dce.mmp	Vmadlb\Vm_com1dce.cpp
sl@0
  3458
sl@0
  3459
2) 	Pete
sl@0
  3460
	Changes to the above DCE serial drivers and the new notification aspects
sl@0
  3461
	of the DTE serial drivers:-
sl@0
  3462
	1)	Added DCE serial driver for Linda L1 together with the corresponding
sl@0
  3463
		changes to the existing DTE serial drivers for Linda L1.
sl@0
  3464
	2)	Postponed various notification completion calls to a DFC. Also, now
sl@0
  3465
		uses DThread::Write() were appropriate to return completion
sl@0
  3466
		information to the client thread.
sl@0
  3467
	3)	Changed implementation of NotifyFlowControlChange() so this only
sl@0
  3468
		completes when a change to a h/w signal has actually changed the Tx
sl@0
  3469
		flow control status. Also, now XON/XOFF changes trigger this notifier
sl@0
  3470
		too.
sl@0
  3471
	4) 	Slight change to the way NotifySignalChange() is implemented.
sl@0
  3472
	5)	Implemented notification changes to WINS serial driver.
sl@0
  3473
sl@0
  3474
3) 	Pete
sl@0
  3475
	Converted MEIG build to the Cirrus Logic 7211 - a ARM Architecture V4
sl@0
  3476
	device. MEIG can now be built for ARM4, ARMI and THUMB and can no longer
sl@0
  3477
	be used on ARM 7110 (Eiger) platforms.
sl@0
  3478
	1)	Modifications to Varmca variant (i.e. Cirrus Logic 7211 evaluation
sl@0
  3479
	  	board:
sl@0
  3480
		- Alterations to reflect changed GPIO allocation for the Rev.B
sl@0
  3481
		  evaluation board.
sl@0
  3482
		- Fixed problem with diagnostic LED.
sl@0
  3483
	2) 	Fixed a problem with enabling additional CL-PS7111 interrupts.
sl@0
  3484
	3) 	Fixed a problem with TEiger::SetUart2Config() so that the 2nd 7211
sl@0
  3485
		serial port now works OK.
sl@0
  3486
	4)	Altered MEIG bootstrap to use ARMv4 rather than ARMv3 coprocessor
sl@0
  3487
		instructions to flush the cache and TLB. Also, now maps an extra page
sl@0
  3488
		for the additional 7211 Eiger specific registers.
sl@0
  3489
	5)	Changed the definitions for MEIG in U32STD.H to use ARM4 rather than
sl@0
  3490
		ARM3 settings.
sl@0
  3491
	6)	Added added support for additional 7211 registers in the TEiger class.
sl@0
  3492
	7)	Modifed BLD.INF so that only the CA variant is built for MEIG
sl@0
  3493
		builds. The PB,PC,PD,P2,CL variants are no longer built.
sl@0
  3494
sl@0
  3495
4) 	Pete
sl@0
  3496
		1) 	Changes to e32\dcomm\d_comm.cpp to fix a s/w flow control
sl@0
  3497
		problem. If SetConfig() is called on the serial port with
sl@0
  3498
		KConfigSendXon set in config.iHandshake and the port h/w has not yet
sl@0
  3499
		been initialised then the driver attempts to send an XON char with the
sl@0
  3500
		h/w off. No XON char is transmitted and no subsequent data can be
sl@0
  3501
		transmitted.
sl@0
  3502
sl@0
  3503
5) 	Morgan
sl@0
  3504
	1)	Bug fix for MMAD LB and LC variants
sl@0
  3505
sl@0
  3506
Version 1.02.253
sl@0
  3507
================
sl@0
  3508
(Made by Morgan, 3/12/99)
sl@0
  3509
sl@0
  3510
0)	Use with F32(201)
sl@0
  3511
sl@0
  3512
1)	Dennis
sl@0
  3513
	1)	Use section mapped garbage area for SA1100 cache flushing. Main cache
sl@0
  3514
		flush area is at 0x43000000, mini cache at 0x43100000.
sl@0
  3515
	2)	Added new function Mmu::FlushUnmap() which is called when RAM is
sl@0
  3516
		unmapped. This function flushes a writeback DCache to ensure that no
sl@0
  3517
		modified lines remain which relate to the unmapped memory.
sl@0
  3518
	3)	Added new function Mmu::FlushCode() which is called after new code
sl@0
  3519
		is loaded into RAM - in DPlatProcess::Loaded and DPlatLibrary::Loaded.
sl@0
  3520
		This flushes the ICache on a split-cache machine.
sl@0
  3521
	4)	Reinstated machine coded CActiveScheduler::Start() and CServer::RunL()
sl@0
  3522
		after applying the RunError() modifications from last release.
sl@0
  3523
	5)	Added new define __CPU_EXC_VECTORS_MOVABLE in U32STD.H for
sl@0
  3524
		SA1100. This signifies that the processor offers a choice about the
sl@0
  3525
		virtual address used for the exception vector table. Changed SA1100
sl@0
  3526
		bootstrap to place the vectors at 0xFFFF0000 and changed Mmu::Init1()
sl@0
  3527
		to set the end of the home section to 0xFFF00000 on SA1100.
sl@0
  3528
	6)	Fixed scheduler bug which caused a null pointer dereference in the case
sl@0
  3529
		where TheCurrentVMProcess=NULL, i.e. during boot.
sl@0
  3530
	7)	Modified SA1100 bootstrap to output boot tracing to the same port as
sl@0
  3531
		kernel tracing. Added more boot tracing. Tracing can now be done after
sl@0
  3532
		the MMU is enabled, since the output char function checks the MMU
sl@0
  3533
		control register.
sl@0
  3534
	8)	Modified SA1100 bootstrap to set the correct RAM wait states when
sl@0
  3535
		running from RAM, since the bootloader sets pessimistic values.
sl@0
  3536
	9)	Modified SA1100 bootstrap to mark the exception vectors as cacheable
sl@0
  3537
		and as readable by all code and writeable by none.
sl@0
  3538
	10)	Removed __MCGA__ hacks from KCARM. We now use __CPU_ARMV3 define to
sl@0
  3539
		determine whether to use architecture 3 or 4 MMU instructions.
sl@0
  3540
	11)	EXE code chunks are now allocated at the top of virtual address space
sl@0
  3541
		in the same region as DLL code chunks. Also they don't move during a
sl@0
  3542
		reschedule. This means that split-cache machines need never flush the
sl@0
  3543
		ICache except following loading of new code to RAM.
sl@0
  3544
	12)	When sharing a DLL code chunk, copy entry point from the library whose
sl@0
  3545
		code chunk is being shared.
sl@0
  3546
	13)	Added "kerneltrace 0x80000000" to every HEADER.IBY file, so panics are
sl@0
  3547
		always traced in debug builds.
sl@0
  3548
sl@0
  3549
2) Morgan
sl@0
  3550
	1)	Fixed a couple of warnings
sl@0
  3551
	2)	Removed the 256 character limit from process command lines
sl@0
  3552
		Added Exec::ProcessCommandLineLength
sl@0
  3553
		Added RProcess::CommandLineLength()
sl@0
  3554
		Added RProcess::CommandLine(TDes&)
sl@0
  3555
		Changed UserSvr::ProcessCreate to take an additional cl HBufC parameter
sl@0
  3556
		Changed svProcessCreate and S::ProcessCreate[L] accordingly, and added
sl@0
  3557
		cleanup code.
sl@0
  3558
		Changed RLoader::LoadProcess RMessage to take additional cl parameter
sl@0
  3559
		Changed WINS getFileNameAndCommandLine initialisation function
sl@0
  3560
		DProcess::Create now takes and additional command line HBufC
sl@0
  3561
	3)	Fixed PWM interface in TLinda
sl@0
  3562
	4)	Added EStdKeyApplication<n> enumerations
sl@0
  3563
	5)	Added KHARDWAREASSIST to the KTRACE #defines for switching on
sl@0
  3564
		hardware that can assist with kernel tracing
sl@0
  3565
	6)	Mapped in CBA on EStdKeyDevice0..EStdKeyDevice3 on MMAD LB and LC
sl@0
  3566
		variants
sl@0
  3567
	7)	Added hardware assist tracing to Variant::DebugOutput() on
sl@0
  3568
		MMAD platforms
sl@0
  3569
	8)	Changed the XYInputType on MMAD platforms to EXYInputDeltaMouse,
sl@0
  3570
		and MCGA to EXYInputMouse by implementing ImpHal::XYInputType()
sl@0
  3571
	9)	Integrated Matthew's new MMAD L1 variant
sl@0
  3572
	10)	Integrated Matthew's WINS changes for mapping application keys
sl@0
  3573
sl@0
  3574
3)	Simon
sl@0
  3575
	1)	Use Cogent extended PCI space if available
sl@0
  3576
sl@0
  3577
Version 1.02.252
sl@0
  3578
================
sl@0
  3579
(Made by Simon 25-11-1999)
sl@0
  3580
sl@0
  3581
1) Morgan
sl@0
  3582
	1)	Process create now correctly notifies the debugger of the new main
sl@0
  3583
		thread.
sl@0
  3584
	2)	VMADLB and VMADLC report correct physical screen dimensions.
sl@0
  3585
	3)	Updated the MMAD bootstrap to take new flash initialisation values
sl@0
  3586
	4)	Pushed DPassiveDebugger Rom-library-hunting into 3rd stage kernel
sl@0
  3587
		initialisation.  This is to allow the kernel heap to grow as required.
sl@0
  3588
		Also, reorganised strings in the DPassiveDebugger tables to take up
sl@0
  3589
		less room.
sl@0
  3590
	5)	Added EVT100.MMP to build the vt100 display driver.
sl@0
  3591
sl@0
  3592
2)	Alastair
sl@0
  3593
	1)	Changed exception-handling for system threads under WINS/WINC so that
sl@0
  3594
		exceptions are passed on to the system debugger for handling rather
sl@0
  3595
		than producing the Plat 46 dialog.
sl@0
  3596
sl@0
  3597
3)	Andrew T
sl@0
  3598
	1)	Fixed regression defect EDNMDON-4DJK8E (from Defect tracking V3.0) as
sl@0
  3599
		suggested.
sl@0
  3600
	2)	Added a further check on the message slot handle in
sl@0
  3601
		Kern::MessageComplete to verify that it lies within the kernel heap,
sl@0
  3602
		prior to the validity check. This prevents bogus message handles from
sl@0
  3603
		causing a kernel exception and crashing the kernel.
sl@0
  3604
	2a)	Modified E32 t_svr test to test the new check.
sl@0
  3605
sl@0
  3606
4)	Andrew B
sl@0
  3607
	1)	Added virtual "RunError" function to CActive definition in E32BASE.H,
sl@0
  3608
		and modified CActive::Scheduler::Start() to use new CActive::RunError
sl@0
  3609
		function when RunL leaves. It is a source compatible but not binary
sl@0
  3610
		compatible change.
sl@0
  3611
	2)	Modified U32STD.H to prevent machine-coded versions of CServer::RunL()
sl@0
  3612
		and CActiveScheduler::Start() being used until the implementations are
sl@0
  3613
		updated to reflect the changes to the C++ versions.
sl@0
  3614
	3)	Fixed long-standing defect in CActive::Deque() which stopped active
sl@0
  3615
		objects being re-added to scheduler. Updated T_ACT.CPP to test
sl@0
  3616
		CActive::Deque() defect and new RunError function.
sl@0
  3617
sl@0
  3618
Version 1.02.251
sl@0
  3619
================
sl@0
  3620
(Made by Morgan, 25/10/99)
sl@0
  3621
sl@0
  3622
1)	Alastair
sl@0
  3623
	1)	Removed local function loadEnvironmentVariablesL() from
sl@0
  3624
		KPWINS\KP_INI.CPP.  This change addresses ER5u software problem
sl@0
  3625
		EDNKDEY-4AAKEW "Long environment variables stop the emulator working".
sl@0
  3626
		The full emulator (from Mainline build 00019) still appears to work OK
sl@0
  3627
		without this function.  Note that this change means that F32 will no
sl@0
  3628
		longer search the system path for DLLs to be loaded dynamically.
sl@0
  3629
sl@0
  3630
	2)	Added code to make it possible to set the User::JustInTime() value
sl@0
  3631
		from the EPOC.INI file for WINS debug builds, using the syntax
sl@0
  3632
sl@0
  3633
			JustInTime	1	# turn on just-in-time debugging
sl@0
  3634
			JustInTime	0	# turn off just-in-time debugging
sl@0
  3635
sl@0
  3636
		Presumably only the latter will ever be used since JustInTime
sl@0
  3637
		debugging is enabled in WINS debug builds by default.  The keyword is
sl@0
  3638
		case-insensitive.  This change addresses ER5 defect EDN414664 "Should
sl@0
  3639
		be possible to set User::JustInTime from the EPOC.INI file".
sl@0
  3640
sl@0
  3641
	3)	Refrozen EKERN.DLL for WINS/WINC so that the four functions referenced
sl@0
  3642
		by ordinal in source code appear at the start of the frozen .DEF file.
sl@0
  3643
		This means WINS/WINC executables linking to EKERN.LIB will need to be
sl@0
  3644
		rebuilt with the latest EKERN.LIB before they will run against the
sl@0
  3645
		latest EKERN.DLL.
sl@0
  3646
sl@0
  3647
2)	Morgan
sl@0
  3648
	1)	TMachineInfo::iXYInputPresent has become iXYInputType.  Added
sl@0
  3649
		enum TXYInputType in e32hal.h.  This can take one of the values
sl@0
  3650
		EXYInputNone, EXYInputPointer, EXYInputMouse (delivers absolute
sl@0
  3651
		values in mouse events), EXYInputDeltaMouse (delivers relative
sl@0
  3652
		values in mouse events).
sl@0
  3653
	2)	Removed MouseButtonDown and SetMouseButtonDown from UserHal and
sl@0
  3654
		Hal classes.  Binary incompatable change.  Incompatability limited
sl@0
  3655
		to the functions added last release.
sl@0
  3656
	3)	Removed unused events from TRawEvent:  EFlipChange, ESimButton*
sl@0
  3657
		and EPointerMoveBy.  Removed unused TFlipPos from TRawEvent.
sl@0
  3658
	4)	Updated MMAD emulated-mouse driver to use new API
sl@0
  3659
sl@0
  3660
3)	Alex
sl@0
  3661
	1)	Added a preliminary version of MMC stack controller and MMC media
sl@0
  3662
		driver (currently disabled) to the "peripheral bus" drivers family.
sl@0
  3663
	2)	Added Linda implementation of MMC stack ASSP layer.
sl@0
  3664
sl@0
  3665
4)  Bob
sl@0
  3666
	1)	Applied suggested fix to TLinda::ArtError and TLinda::IrError in
sl@0
  3667
		kamad\ka_linda.cpp
sl@0
  3668
		Reset the fifo only when error condition, not after every byte
sl@0
  3669
sl@0
  3670
5) 	Pete
sl@0
  3671
		Change to bootloader to support CL-PS7211.
sl@0
  3672
		Temporarily disabled ADC on Cirrus Logic board due to problems with it.
sl@0
  3673
sl@0
  3674
sl@0
  3675
Version 1.02.250
sl@0
  3676
================
sl@0
  3677
(Made by Morgan, 27/9/99)
sl@0
  3678
sl@0
  3679
1)	Morgan
sl@0
  3680
	1)	Added the very random number generator Math::Random and Kern::Random.
sl@0
  3681
		Any device drivers that can derive random bits from their devices
sl@0
  3682
		should call Kern::RandomSalt(TUint aBitOfSalt) to mix up the kernel's
sl@0
  3683
		random pool.  Only the LSB is used.
sl@0
  3684
	2)	MAWD Arm::IrqDispatch adds random salt from TWind::RtcTickCount()
sl@0
  3685
		MEIG Arm::IrqDispatch adds random salt from TEiger::RtcTickCount()
sl@0
  3686
		MISA Arm::IrqDispatch adds random salt from TSa1100::OstData()
sl@0
  3687
		MCGA Arm::IrqDispatch adds random salt from TCogent::TimerCounter()
sl@0
  3688
	3)	Added DPowerModel::NotifyEvent called from Kern::AddEvent.  Override
sl@0
  3689
		this function in your power model to implement auto timeout behaviour.
sl@0
  3690
			eg
sl@0
  3691
			DMachinePowerModel::NotifyEvent()
sl@0
  3692
				{ iLcdPowerHandler->ResetAutoSwitchOffTimer(); }
sl@0
  3693
	4)	Fixed HW IO mapping problem in the MMAD bootstrap
sl@0
  3694
	5)	Fixed \e32\rmmad\header.iby.  Now includes screen size.
sl@0
  3695
sl@0
  3696
2)	Chris
sl@0
  3697
	1)	Fixed bug in TDMA (generic dma) affecting receive transfers large
sl@0
  3698
		enough to require breaking down into multiple dma operations.
sl@0
  3699
	2)	Changes to TLinda fns DmaSrcSize() and DmaDestSize().
sl@0
  3700
	3)	Changed ImpDma::GetInterrupt() and added code to set up the correct
sl@0
  3701
		device widths of peripherals for dma on Linda.
sl@0
  3702
	4)	Changed fast ir LDD to store ir frames on 4 byte boundaries.
sl@0
  3703
	5)	Changed PDD/LDD fast ir interface to be more generic and added
sl@0
  3704
		Caps/Config.
sl@0
  3705
	6)	Added incomplete Linda fast ir pdd(difilb). Supports 1M and 4M.
sl@0
  3706
sl@0
  3707
3)	Jonathan
sl@0
  3708
	1)	Fixed ER5u defect EDNGASR-46SD7V "Special keycodes conflict with
sl@0
  3709
		Unicode values" by making non-character keys start at 0xff80 and
sl@0
  3710
		special keys start at 0xff70, within the UNICODE private area.
sl@0
  3711
			inc\e32keys.h
sl@0
  3712
sl@0
  3713
4)	Petteri
sl@0
  3714
	1)	Added base mouse support.
sl@0
  3715
		[Note, this API has not been finalised.  If you use these
sl@0
  3716
		APIs expect source and binary incompatable changes next
sl@0
  3717
		release]
sl@0
  3718
		Files changed:
sl@0
  3719
		Vmadlc\Vm_hw.cpp	Usrc\Us_exec.cpp
sl@0
  3720
		Vmadlc\Vm_keyb.cpp	Kpehal\Kph_inf.cpp
sl@0
  3721
		Vmadlb\Vm_hw.cpp	Kamad\ka_inf.cpp
sl@0
  3722
		Vmadlb\Vm_keyb.cpp	Kpepoc\Kp_dat.cpp
sl@0
  3723
		Inc\E32svr.h		Bmarm\Euseru.def
sl@0
  3724
		Inc\E32hal.h		Bmmad\Ekernu.def
sl@0
  3725
		Inc\U32std.h		Bmawd\Ekernu.def
sl@0
  3726
		Inc\M32hal.h		Bmcga\Ekernu.def
sl@0
  3727
		Inc\M32std.h		Bmeig\Ekernu.def
sl@0
  3728
		Kaisa\Ka_inf.cpp	Bmisa\Ekernu.def
sl@0
  3729
		Kacga\Ka_inf.cpp	Bmros\Ekernu.def
sl@0
  3730
		Kaeig\Ka_inf.cpp	Bwins\Euseru.def
sl@0
  3731
		Karos\Ka_inf.cpp
sl@0
  3732
		Keawd\Ka_inf.cpp
sl@0
  3733
	2)	Added virtual cursor support for Linda
sl@0
  3734
sl@0
  3735
5)	Simon
sl@0
  3736
	1)	MCGA will now 'dual boot' on CMA120 and CMA102
sl@0
  3737
sl@0
  3738
6)	Alastair
sl@0
  3739
	1)	Changed GROUP\GENERIC.INF so that ELOCL.DLL is not built for
sl@0
  3740
		THUMB.
sl@0
  3741
sl@0
  3742
7)  Malcolm
sl@0
  3743
	1)  Added new feature to rom.bat find template files by scanning
sl@0
  3744
		the e32/r*/ directories for .oby files.  The config file now
sl@0
  3745
		simply specifies which one is the default - if this is not
sl@0
  3746
		present then another template is picked.  The new
sl@0
  3747
		--list-templates option lists the known templates, along with
sl@0
  3748
		a description.  The description is picked up from a line in
sl@0
  3749
		the .oby file starting //#NAME:
sl@0
  3750
sl@0
  3751
	2)	Added ability to reuse rom.oby file in rom.bat (--reuse).
sl@0
  3752
		This is not recommended but is useful for quick .oby file
sl@0
  3753
		hacks.  There is a heuristic employed to determine the ASSP of
sl@0
  3754
		the rom.oby file from its name, or it can be specified
sl@0
  3755
		directly.
sl@0
  3756
sl@0
  3757
	3)  Changed MAWD, MEIG, MISA, MAD, SROS and SARM bootstraps to
sl@0
  3758
		pick up the kernel trace mask from the rom header (requires
sl@0
  3759
		rombuild > 125 to write the info there).
sl@0
  3760
sl@0
  3761
8)	Alex
sl@0
  3762
	1)	Fixed multiplier for TMillisecondTimer on MMAD, and adjusted
sl@0
  3763
		delay in keyboard driver.
sl@0
  3764
sl@0
  3765
sl@0
  3766
Version 1.02.197
sl@0
  3767
================
sl@0
  3768
(Made by Morgan, 26/8/99)
sl@0
  3769
sl@0
  3770
SOURCE-ONLY RELEASE
sl@0
  3771
Built with MSVC6
sl@0
  3772
sl@0
  3773
1)	Jason
sl@0
  3774
	1)	Removed Casius MISA variant and all references to FPGA14 from MISA
sl@0
  3775
	  	code.
sl@0
  3776
	2)	Uncached screen chunk in \KAISA\KA_INI.CPP to fix stripy cursors.
sl@0
  3777
	3)	Update the MISA OST timer and match registers (KA_INI.CPP) over switch
sl@0
  3778
	  	off/on.
sl@0
  3779
	4)	MISA Seting of RTC clock now wait for one 32KHz tick.
sl@0
  3780
	5)  MISA Codec sample rate divider functions fixed.
sl@0
  3781
	6)  MISA Tick code fixed.
sl@0
  3782
	7)  InitSystemTime() implemented for MISA.
sl@0
  3783
	8)	MISA Bootstrap now uses correct MMU permissions for page tables.
sl@0
  3784
		Pagetables unlocked and locked (KA_ISA.CPP) in MISA sleep code.
sl@0
  3785
	9)	MISA Mini-Cache is now mappable and flushable, using new mappings of
sl@0
  3786
		EUserRwNotBuff, ESupRwNotBuff.
sl@0
  3787
	10) \VISABA\VI_HW.CPP variant tidied up with Eikon friendly constants.
sl@0
  3788
	11) \VISABA\VI_XYIN.CPP	restructured.
sl@0
  3789
	12) Added OS Timer Watchdog Enable to MISA sleep code and cleared all
sl@0
  3790
		the OST status bits after wakeup.
sl@0
  3791
	13) Fixed possible MISA millisecond timer code bug.
sl@0
  3792
sl@0
  3793
2)	Alastair
sl@0
  3794
	1)	Removed ESOUND.LDD and ESDRV.PDD - these projects are now part of
sl@0
  3795
		E32TEST.
sl@0
  3796
	2)	Used #defines in GROUP\GENERIC.INF to ensure that KC_EXE.LIB is not
sl@0
  3797
		built for THUMB.
sl@0
  3798
	3)	Moved EUSER from BLD.INF to GENERIC.INF so that it's built only for
sl@0
  3799
		generic platforms rather than ASSP-specific platforms.  Used #defines
sl@0
  3800
		so that it's not built for THUMB.
sl@0
  3801
	4)	Added empty target "FINAL" to GROUP\BOOTROM.MKE.
sl@0
  3802
	5)	Disabled VC6 warning C4414 - short jump to function converted to near,
sl@0
  3803
		in UPWINS\UP_I64.CPP and UPWINS\UP_REALX.CPP.
sl@0
  3804
	6)	Fixed BOOTROM.MKE so that SROS builds correctly report their
sl@0
  3805
	  	releasable.
sl@0
  3806
	7)	Added extension makefile KCARM\ABORTH.MKE to copy the correct abort
sl@0
  3807
		handler object file to \Epoc32\Build\...., and corresponding Perl file
sl@0
  3808
		KCARM\ABORTH.PL.
sl@0
  3809
	8)	Changed IBY files in ROMBUILD directory to #include the E32TEST and
sl@0
  3810
		F32TEST IBY files generated by ABLD TEST ROMFILE.
sl@0
  3811
	9)	Removed narrow frozen .DEF files.
sl@0
  3812
	10)	Re-frozen all .DEF files in new format so that the C++ name
sl@0
  3813
		appears with the mangled name for all exports and windiff can be
sl@0
  3814
		used to compare frozen .DEF files with generated .DEF files.
sl@0
  3815
sl@0
  3816
3)	Petteri
sl@0
  3817
	1)	Added a new variant (Vmadlc) for Linda Macro m1.3BB rack.
sl@0
  3818
sl@0
  3819
		Files changed:
sl@0
  3820
		Group\Bld.inf		Kbmad\E32var.iby
sl@0
  3821
		Kbmad\Rom.cmd		Kbmad\Rom.oby
sl@0
  3822
sl@0
  3823
		Files added:
sl@0
  3824
		Vmadlc\Distrib.txt	Vmadlc\Vm_com1.cpp
sl@0
  3825
		Vmadlc\Vm_com2.cpp	Vmadlc\Vm_hw.cpp
sl@0
  3826
		Vmadlc\Vm_kdata.cpp	Vmadlc\Vm_keyb.cpp
sl@0
  3827
		Vmadlc\Vm_pbus.cpp	Vmadlc\Vm_xyin.cpp
sl@0
  3828
		Inc\V32madlc.h		Group\Cmkdlc.mmp
sl@0
  3829
		Group\Cmkylc.mmp	Group\Cmxylc.mmp
sl@0
  3830
		Group\Dmtxlc1.mmp	Group\Dmtxlc2.mmp
sl@0
  3831
		Group\Vmadlc.mmp	Bmmad\Vmadlc.def
sl@0
  3832
		Bmmad\Vmadlcu.def
sl@0
  3833
sl@0
  3834
4)	Morgan
sl@0
  3835
	1)	Improved the MMAD TIdler to perform tickQ correction and to take notice
sl@0
  3836
		of active millisecond timers
sl@0
  3837
	2)	Wired in the TRtc class to the SetSystemTime function
sl@0
  3838
	3)	Corrected ImpMmu::FlushShadow for MMAD
sl@0
  3839
	4)	Added a flag to MilliSecondTimer so we can tell if the Millisecond
sl@0
  3840
		timers are being used while in Idle
sl@0
  3841
	5)	Bug fix to TDma::GetLargestXfer which was delivering odd count values
sl@0
  3842
	6)	Added initialisation function optimisation for pipe and copy commands
sl@0
  3843
		in ImpDma
sl@0
  3844
	7)	Incorporated TLinda::SetStateDiscriminator into the ImpDma
sl@0
  3845
		initialisation functions
sl@0
  3846
sl@0
  3847
5)	Pete
sl@0
  3848
	1)	E32 provides the following function to facilitate notification
sl@0
  3849
		of media change events:-
sl@0
  3850
		TInt UserSvr::MediaChangeNotify(TMediaDevice aDevice,TRequesStatus *aStat);
sl@0
  3851
		This currently only supports a single request to be outstanding on any
sl@0
  3852
		socket at any given time. Hence, for platforms which have more than one
sl@0
  3853
		socket, it is only possible to be notified of a media change on one of
sl@0
  3854
		these sockets. This has been changesd to allow a request to be
sl@0
  3855
		outstanding on each socket.
sl@0
  3856
	2) 	Removed support for 2nd PC Card socket from VARMPD - no longer have a
sl@0
  3857
		rack with this h/w functional.
sl@0
  3858
	3) 	Modified function UserSvr::ForceRemountMedia(TMediaDevice aDevice) to
sl@0
  3859
		allow a fixed drive as well as a removable drive to be specified. It
sl@0
  3860
		can now be called after having installed a new media driver to force
sl@0
  3861
		a remount on the appropriate drives. This fixes a problem where a new
sl@0
  3862
		driver for a fixed device is loaded but there is no way to force F32
sl@0
  3863
		to remount the local drives associated with the media driver.
sl@0
  3864
	4)	Modifications to Varmca variant:
sl@0
  3865
		- Alterations to reflect changed GPIO allocation for the LCD interface
sl@0
  3866
		on Rev.B evaluation board.
sl@0
  3867
		- Enabled diagnostic LED.
sl@0
  3868
		- Enabled SPI-ADC device.
sl@0
  3869
sl@0
  3870
6)	Chris
sl@0
  3871
	1)	Added mouse driver to Cogent + hardware cursor.
sl@0
  3872
	2)	Changed name of serial driver on Cogent to that expected by Romkit.
sl@0
  3873
	3)	Tidied up fast ir.
sl@0
  3874
	4)	Changed unit masks for Com2 and Com3 on Brutus.
sl@0
  3875
	5)	Modified Cogent serial drivers. Passes T_Serial.
sl@0
  3876
sl@0
  3877
sl@0
  3878
7)	Jonathan
sl@0
  3879
	1)	Removed kc_exc.cpp and ke_exc.cpp from all distributions until IPR
sl@0
  3880
		issues are clarified.
sl@0
  3881
sl@0
  3882
8)	Dennis
sl@0
  3883
	1)	Added __SWITCH_TO_ARM and __END_ARM macros for use in test programs to
sl@0
  3884
		enable them to build in THUMB without rewriting assembler code.
sl@0
  3885
	2)	Modified test ROM build script to work with new GCC.
sl@0
  3886
	3)	Initialise .data and .bss for ROM-resident device drivers when driver
sl@0
  3887
		is loaded.
sl@0
  3888
	4)	Corrected TLocDrv::Caps(TDes8& aCapsBuf) so it doesn't assume that the
sl@0
  3889
		descriptor parameter is a TBuf8.
sl@0
  3890
	5)	Removed Kern::Printf() from Kern::PowerGood() - this causes the serial
sl@0
  3891
		driver to lock up since it gets called in the serial driver's ISR.
sl@0
  3892
	6)	Modifications to ROM.BAT:
sl@0
  3893
		Added --inst option to specify instruction set. If not specified,
sl@0
  3894
		defaults to first instruction set listed for the ASSP in ROM.CFG.
sl@0
  3895
		Build (--build) can now be UDEB or UREL only. If not specified,
sl@0
  3896
		defaults to the first build listed in ROM.CFG (ie UDEB).
sl@0
  3897
		Changed format of ROM.CFG - [VARIANTS] section has been scrapped.
sl@0
  3898
		[ASSPS] section now lists for each ASSP the ROMBUILD flags to use, the
sl@0
  3899
		variants supported and the instruction sets supported.
sl@0
  3900
sl@0
  3901
9)	Simon
sl@0
  3902
	1)	Mouse is now optional, ie doesn't hang if no mouse connected
sl@0
  3903
sl@0
  3904
sl@0
  3905
Version 1.02.196
sl@0
  3906
================
sl@0
  3907
(Made by William, 13.8.99)
sl@0
  3908
sl@0
  3909
SOURCE-ONLY RELEASE
sl@0
  3910
Built with MSVC6 and ARMv4 (GCC 518).
sl@0
  3911
sl@0
  3912
CHANGES TO RELEASABLE
sl@0
  3913
1)	William
sl@0
  3914
	1)	CAKD*.MMP files no longer specify ASSP_LIBRARY EKERN.LIB, so that they
sl@0
  3915
		can be built correctly for THUMB.
sl@0
  3916
sl@0
  3917
	2)	U32STD.H now defines __SUPPORT_THUMB_INTERWORKING for ARMv4T, using
sl@0
  3918
		#ifdef __ARM_ARCH_4T__ to distinguish between MAWD compiled with the
sl@0
  3919
		new GCC and MAWD compiled with the old toolchain.
sl@0
  3920
sl@0
  3921
	3)	The GCC "_call_via_rX" helper functions required by THUMB code are
sl@0
  3922
		hacked into up_dll.cpp and uc_exe.cpp. This should be removed and
sl@0
  3923
		replaced by the proper GCC.LIB mechanism.
sl@0
  3924
sl@0
  3925
	4)	RequestComplete tracing is now conditional on KTHREAD+KSEMAPHORE
sl@0
  3926
sl@0
  3927
	5)	BOOTROM.MKE CLEAN target now removes intermediate .o files
sl@0
  3928
sl@0
  3929
sl@0
  3930
Version 1.02.195
sl@0
  3931
================
sl@0
  3932
(Made by Alastair, 2.8.99)
sl@0
  3933
sl@0
  3934
SOURCE-ONLY RELEASE
sl@0
  3935
Built with MSVC6
sl@0
  3936
sl@0
  3937
CHANGES TO RELEASABLE
sl@0
  3938
1)	Alastair
sl@0
  3939
	1)	E32 now releases zip files for ARMI, ARM4 and THUMB in the same style
sl@0
  3940
	  	as it's other releasables.  Note that generic EUSER.LIB and EDISP.LIB
sl@0
  3941
	  	are still released with the ASSP-specific releasables, though all
sl@0
  3942
	  	other generic stuff is now contained in the 3 new zip files.  To use
sl@0
  3943
	  	these releasables it's necessary to use E32TOOLP version 120 and the
sl@0
  3944
	  	new GCC compiler.
sl@0
  3945
sl@0
  3946
		This change is academic for this release since it's source-only, also
sl@0
  3947
		it has, in fact, been built with the old gcc compiler.
sl@0
  3948
sl@0
  3949
1)	Alastair
sl@0
  3950
	1)	Hopefully fixed ER5u defect EDNDMAI-49UE4V
sl@0
  3951
		'"KERN RE-ENTRANT" Panic' in KPWINS\KP_UTL.CPP by converting the
sl@0
  3952
		UNICODE RDebug::Print text to NARROW 256 characters at a time using
sl@0
  3953
		a stack variable rather than allocating space on the heap.
sl@0
  3954
sl@0
  3955
	2)	Fixed ER5 defect EDNKDEY-45NHVH
sl@0
  3956
		"Unhandled exception checking for priority key (emulator only)" in
sl@0
  3957
		WSRC\KY_TRAN.CPP by making sure that capture key data is not left
sl@0
  3958
		uninitialised when Windows produces a character code that the EPOC
sl@0
  3959
		translation tables didn't.
sl@0
  3960
sl@0
  3961
	3)	Fixed ER5u defect EDNWROS-46YC3V "Plat fault or Plat panic?" in
sl@0
  3962
		KPWINS\KP_UTL.CPP so that the Fault/Panic distinction is part of the
sl@0
  3963
		text inside the alert box rather than just in the title where nobody
sl@0
  3964
		ever thinks to look.
sl@0
  3965
sl@0
  3966
	4)	Split BLD.INF into BLD.INF and GENERIC.INF with GENERIC.INF containing
sl@0
  3967
		details of those projects which are not ASSP-specific.  This change
sl@0
  3968
		corresponds to changes in E32TOOLP version 120 and is designed to
sl@0
  3969
		support building E32 with the new GCC compiler for the new targets.
sl@0
  3970
		To build E32 it is now necessary to build the generic libraries, then
sl@0
  3971
		the ASSP-specific libraries, then the generic releasables, then the
sl@0
  3972
		ASSP-specific releasables.
sl@0
  3973
		Updated .OBY files so that, if E32 is built with the old GCC compiler,
sl@0
  3974
		they will look for the generic releasables in the right places.  They
sl@0
  3975
		will need more updating to work with the new compiler though.
sl@0
  3976
sl@0
  3977
	5)	Changed EKERN.MMP and KC_EXE.MMP so that EKERN links to KC_EXE.LIB
sl@0
  3978
		rather than KE_EXE.LIB under MAWD.
sl@0
  3979
sl@0
  3980
	6)	Now building E(EXE|DLL).LIB rather than E(EXE|DLL).o under MARM and
sl@0
  3981
		E(EXE|DLL).obj under WINS.  This means that using this version of
sl@0
  3982
		E32 requires E32TOOLP version 120.
sl@0
  3983
sl@0
  3984
	7)	Changed E32DEF.H so that WINS/WINC warning C4710, about functions not
sl@0
  3985
		being inlined, is disabled for MSVC versions 5 or later, rather than
sl@0
  3986
		just MSVC5.
sl@0
  3987
sl@0
  3988
	8)	Commented out user-side tracing macros under WINS/WINC builds in
sl@0
  3989
		INC\U32STD.H because they cause the kernel to go re-entrant.  This
sl@0
  3990
		should be investigated further.
sl@0
  3991
sl@0
  3992
	9)	Integrated changes for compiling with VC6 from Ann Windsor and William
sl@0
  3993
		Roberts.  Changes to EKERNU.DEF and EUSERU.DEF mean that this release
sl@0
  3994
		of E32 will not build with MSVC5 and the import libraries from this
sl@0
  3995
		release will not be compatible with MSVC5.
sl@0
  3996
sl@0
  3997
2) Malcolm
sl@0
  3998
	1)  Enabled debug monitor for SROS, and protected some MMU
sl@0
  3999
		instructions for single builds.
sl@0
  4000
	2)	Added new trace level, KMEMTRACE that dumps alloc/free/realloc and
sl@0
  4001
		chunk adjustments (chunks in SINGLE only) to the debug log
sl@0
  4002
sl@0
  4003
3) Morgan
sl@0
  4004
	1)	Made Mmu::AllocPageTable public so it can be accessed by the debugger
sl@0
  4005
	2)	Added MMAD-specific debugger implementation, and null debuggers for
sl@0
  4006
		those platforms without support
sl@0
  4007
	3)	Moved useful ARM Mmu definitions into kcarm\kc_mmu.h
sl@0
  4008
	4)	MMAD debugger now updates the thread id register, remaps the Rom
sl@0
  4009
		as small pages, and allocates some free pages for SW breakpointing.
sl@0
  4010
	5)	Removed explicit references to variants from KC_UTL.CPP and removed
sl@0
  4011
		reference to the Eiger variant (V32ARM.H) from the global header
sl@0
  4012
		KC_STD.H.  Pushed P::StartupBeep into the ASSP layer.  Re-organised
sl@0
  4013
		P::OutputToCom1 functionality so the variant is only referenced in
sl@0
  4014
		ASSP layer. Changed P::ScreenInfo() to use the Hal function instead
sl@0
  4015
		of calling the variant directly.
sl@0
  4016
	6)	Defined TExtInterrupt in KC_STD.H, but it should really be moved into
sl@0
  4017
		the Eiger platform which seems to be its only client.
sl@0
  4018
	7)	Modified the Asic::Debug* functions for all ASSPs
sl@0
  4019
	8)	Added MMAD interfaces for the Psu and Rtc to V32MAD.H and wired them
sl@0
  4020
		into the kernel
sl@0
  4021
	9)	Implemented EDNWROS-49ZKUX "Unhelpful trace message"
sl@0
  4022
sl@0
  4023
4) Dennis
sl@0
  4024
	1)	Added alignment checking on 16-bit descriptor functions in DEBUG mode.
sl@0
  4025
	2)	Modified User::HandleException() to trap leaves by the exception
sl@0
  4026
		handler and pass them on after clearing the last chance flag and doing
sl@0
  4027
		User::WaitForAnyRequest();
sl@0
  4028
sl@0
  4029
5) Chris
sl@0
  4030
	1)	Added slow ir pdd for Linda (dmtxlb2).
sl@0
  4031
	2)	Added serial pdd for Cogent (datxcg1 and datxcg2).
sl@0
  4032
	3)	Made small change to Brutus slow ir pdd (ditxba2).
sl@0
  4033
sl@0
  4034
sl@0
  4035
Version 1.02.189
sl@0
  4036
================
sl@0
  4037
(Made by Kal Patel, 22nd July 1999)
sl@0
  4038
sl@0
  4039
1)	Jonathan
sl@0
  4040
	1)	TStringToDateTime::NextToken():
sl@0
  4041
		Fixed defect EDN830354: Allow am/pm designators to be non-alpha and >3
sl@0
  4042
		characters.
sl@0
  4043
		Reapplied and reworked an ER5 ICF (defect EDNANOE-49BFV2): Match
sl@0
  4044
		against abbreviated month names instead of leading substrings of
sl@0
  4045
		months.
sl@0
  4046
		usrc\us_parse.cpp
sl@0
  4047
sl@0
  4048
2)	Morgan
sl@0
  4049
	1)	Added an implementation of TMillisecondTimer for MMAD
sl@0
  4050
		kamad\ka_pic.cpp
sl@0
  4051
	2)	Implemented workaround for ARM915T MMU MCR instruction bug
sl@0
  4052
		Interrupts are disabled over writes to the domain access control
sl@0
  4053
		register
sl@0
  4054
		kcarm\kc_int.cpp
sl@0
  4055
		kcarm\kc_sched.cpp
sl@0
  4056
		inc\kc_std.h
sl@0
  4057
	3)	Fixed the definition of delta and tick TTimerModes
sl@0
  4058
		inc\v32linda.h
sl@0
  4059
	4)	Added a new class TIdler, that switches off rescheduling and the tick
sl@0
  4060
		during idle, and reenables it shortly before a timer is due.
sl@0
  4061
		kamad\ka_idle.cpp
sl@0
  4062
		kamad\ka_std.h
sl@0
  4063
	5)	Exported functions from DPowerModel for those power models that
sl@0
  4064
		are implemented outside of the platform kernel
sl@0
  4065
		inc\k32power.h
sl@0
  4066
		ksrc\ks_power.h
sl@0
  4067
	6)	Moved the MMAD variant to VMADLB, and invented a custom layer suitable
sl@0
  4068
		for MMAD.  VARMLB.DLL is now VMADLB.DLL. CA*LB.DLL is now CM*LB.DLL.
sl@0
  4069
		DATXLB1.DLL is now DMTXLB1.DLL.
sl@0
  4070
		varmlb\*
sl@0
  4071
		inc\v32mad.h
sl@0
  4072
		inc\v32madlb.h
sl@0
  4073
		group\ca*lb.mmp
sl@0
  4074
		group\varmlb.mmp
sl@0
  4075
sl@0
  4076
3)	Alastair
sl@0
  4077
	1)	Added RESOURCE target to GROUP\BOOTROM.MKE.
sl@0
  4078
	2)	Removed defunct .DEF files from BSARM, BSCGA and BSROS.
sl@0
  4079
	3)	Removed defunct UPEPOC\UP_CON.CPP.
sl@0
  4080
	4)	Removed defunct BLD.CMD files from various directories.
sl@0
  4081
	5)	Updated GROUP\E32.FTC to include the MCGA releasables.
sl@0
  4082
	6)	Changed GROUP\BOOTROM.MKE to copy KBMCGA\COGENT.BIN to
sl@0
  4083
		\EPOC32\Release\MCGA\BOOTROM.BIN.  Updated KBMCGA .OBY files
sl@0
  4084
		accordingly.
sl@0
  4085
	7)  Changes to support building with new compiler (*.oby files,
sl@0
  4086
		/group/mnt.bat files, /group/bld.inf files etc)
sl@0
  4087
sl@0
  4088
4)	Simon
sl@0
  4089
	1)	Fixed problem with cogent timer interrupt going off for no good reason
sl@0
  4090
		kacga\ka_pic.cpp
sl@0
  4091
	2)	Fixed problem in vcgac1\va_keyb.cpp that caused intermittent exceptions
sl@0
  4092
sl@0
  4093
5)	Malcolm
sl@0
  4094
	1) Added new RAM Loaded code functionality
sl@0
  4095
	2) Modifications for Unicode SROS
sl@0
  4096
	3) Incorporated Kista-Patch-Baseport-3.00-990717A
sl@0
  4097
		kbros/rose.inc
sl@0
  4098
		vrosr1/va_xyin.cpp
sl@0
  4099
		karos/ka_rose.cpp
sl@0
  4100
		INC/D32COMM.H, INC/V32Rose.h
sl@0
  4101
		vrosr1/va_coms.cpp
sl@0
  4102
		group/DATXR11.MMP
sl@0
  4103
		group/bld.inf
sl@0
  4104
sl@0
  4105
6)	Kal
sl@0
  4106
	1) Added the Aort handler functionality for flash filing system use
sl@0
  4107
		karos/ka_ini.cpp
sl@0
  4108
		karos/ka_excep.cpp
sl@0
  4109
		karos/ka_std.h
sl@0
  4110
		karos/ka_rose.cpp
sl@0
  4111
		WSRC/wd_rose4.cpp
sl@0
  4112
		group/EKERN.MMP
sl@0
  4113
		INC/V32Rose.h
sl@0
  4114
	2) Added Fast Timers on A1C
sl@0
  4115
		karos/ka_rose.cpp
sl@0
  4116
		karos/ka_pic.cpp
sl@0
  4117
		karos/ka_std.h
sl@0
  4118
		INC/distrib.txt
sl@0
  4119
		INC/V32FTick.h
sl@0
  4120
		group/bld.inf
sl@0
  4121
sl@0
  4122
sl@0
  4123
Version 1.02.188
sl@0
  4124
================
sl@0
  4125
(Made by Dennis, 13th July 1999)
sl@0
  4126
sl@0
  4127
1) Morgan
sl@0
  4128
	1)	Removed the SPI controller from MMAD platform
sl@0
  4129
		kamad\ka_spi.cpp
sl@0
  4130
		kamad\ekern.mmp
sl@0
  4131
		kamad\ka_psu.cpp
sl@0
  4132
	2)	Used a more efficient method for draining the write buffer on MMAD
sl@0
  4133
		kcarm\kc_mmu.cpp
sl@0
  4134
		kamad\ka_ini.cpp
sl@0
  4135
	3)	Included a missing call to POS in the slow swi dispatcher
sl@0
  4136
		kcarm\kc_int.cpp
sl@0
  4137
	4)	Frozen BMMAD
sl@0
  4138
		bmmad\*.def
sl@0
  4139
	5)	Added a gcc-helper static library (EGCC.LIB) which currently
sl@0
  4140
		only contains the __fixuns* helper functions
sl@0
  4141
		upepoc\up_gcc.cpp
sl@0
  4142
		group\egcc.mmp
sl@0
  4143
	6)	Implemented RTC emulation
sl@0
  4144
		kamad\ka_utl.cpp
sl@0
  4145
		kamad\ka_std.h
sl@0
  4146
		kamad\ka_pic.cpp
sl@0
  4147
	7)	Added state discriminator functions to TLinda and updated Linda Dma
sl@0
  4148
		kamad\ka_dma.cpp
sl@0
  4149
		kamad\ka_linda.cpp
sl@0
  4150
		inc\v32linda.h
sl@0
  4151
sl@0
  4152
2) Petteri
sl@0
  4153
	1)	Added an improved version of
sl@0
  4154
		varmlb\va_keyb.cpp
sl@0
  4155
sl@0
  4156
3) Alastair
sl@0
  4157
	1)	Added Graham Asher's updates to his change to UMATH\UM_DTOR.CPP so that
sl@0
  4158
		it builds in narrow variants.
sl@0
  4159
	2)	Added GROUP\BOOTROM.MKE - a bldmake-compatible custom-build makefile
sl@0
  4160
	  	for building bootstraps.
sl@0
  4161
	3)	Removed some hacks from MNT.BAT now that MAKMAKE from E32TOOLP version
sl@0
  4162
		109 builds static libraries to \EPOC32\Release\MARM rather than
sl@0
  4163
		\EPOC32\Release\MEIG.
sl@0
  4164
	4)	Moved \e32\inc\conswins.def to \e32\inc\econs.def and listed it for
sl@0
  4165
		export to \epoc32\release\wins\econs.def.  Made a corresponding change
sl@0
  4166
		to \e32\inc\consmarm.def and removed \e32\inc\consmisa.def.
sl@0
  4167
	5)	Moved the implementation of the RConsole and TConsoleKey classes into
sl@0
  4168
		EWSRV.DLL from ECONS.DLL. Stopped exporting all functions from the
sl@0
  4169
		CConsoleTextWin Class under WINS/MARM except the function to create a
sl@0
  4170
		new console.  Removed the dummy export from the text window server.
sl@0
  4171
		This means there is no longer a mutual link-time dependency between
sl@0
  4172
		ECONS.DLL and EWSRV.DLL - ECONS.DLL merely depends upon EWSRV.DLL, and
sl@0
  4173
		the WINS ECONS.DLL has the same API as the WINC one. and not vice
sl@0
  4174
		versa.
sl@0
  4175
	6)	Added fetcher definition file, E32.FTC, to the group directory.
sl@0
  4176
	7)	Fixed ER5U defect EDNABRY-48YFUC "Compiling E32 with MSVC6 reveals
sl@0
  4177
	  	problems with TPtr8 and TPtr16 copy constructors."
sl@0
  4178
		Fixed in USRC\US_DES8.CPP by taking the contents of the function
sl@0
  4179
		TPtr8::Set(TPtr8 &aPtr) function and adding it to function
sl@0
  4180
		TPtr8::TPtr8(const TPtr8& aTPtr).  This change is not binary compatible
sl@0
  4181
		backwards with code which calls the TPtr8 copy constructor either
sl@0
  4182
		explicitly or implicitly and relies upon the previous behaviour of the
sl@0
  4183
		copy constructor.  The previous behaviour merely made sure that the
sl@0
  4184
		copied TPtr pointed to the same descriptor as the original TPtr, while
sl@0
  4185
		the new behaviour also makes sure that the TPtr's iType is set
sl@0
  4186
		correctly.
sl@0
  4187
		These changes were necessary for TPtr8s to work correctly when compiled
sl@0
  4188
		with MSVC6.  I have made corresponding changes to the TPtr16 copy
sl@0
  4189
		constructor.
sl@0
  4190
	8)	Changed KPWINS\KP_GUI.CPP so that the Windows character code
sl@0
  4191
		translation is suppressed if the Ctrl, Alt and Shift keys are all
sl@0
  4192
		depressed.  This means that the heap-checking code for APPs which used
sl@0
  4193
		the Ctrl-Alt-Shift-A combination will now work again, as the EPOC key
sl@0
  4194
		translation will not be overridden by the Windows translation.
sl@0
  4195
sl@0
  4196
4) Chris
sl@0
  4197
	1) 	Added export to mmu to enable creation of DHardware chunk from Ram.
sl@0
  4198
	2) 	Slight change to TDma to allow it to break up non-contigous transfer
sl@0
  4199
	   	buffers.
sl@0
  4200
	3) 	Added fast infra-red LDD(Efir) to misa and mmad and a fast infra-red
sl@0
  4201
	   	PDD(Difiba) to misa.
sl@0
  4202
	4) 	Changes to TSa1100 variant class to implement infra red and dma on
sl@0
  4203
	   	misa.
sl@0
  4204
		ImpDma class impemented also for misa.
sl@0
  4205
	5) 	Added 572000,1152000 and 4000000 baud defs to d32comm.h.
sl@0
  4206
sl@0
  4207
5) Dennis
sl@0
  4208
	1)	Added routine ImpExc::AdjustRegisters() to restore registers on ARM
sl@0
  4209
		processors to allow an aborted instruction to be retried.
sl@0
  4210
	2)	Added TException::Bind(), TException::UnBind() exported functions to
sl@0
  4211
		allow device drivers to bind to exceptions.
sl@0
  4212
	3)	Various Snowdrop-specific fixes which didn't make it for ER5.
sl@0
  4213
	   (Euro, Digitiser factory settings, Windermere DRAM refresh, ROM size,
sl@0
  4214
	   digitiser EEPROM calibration)
sl@0
  4215
	4)	Prefetch aborts now have exception ID EExcCodeAbort instead of
sl@0
  4216
	  	EExcGeneral.
sl@0
  4217
	5)	Added ExecHandler::RomHeaderAddress() to windermere kernel.
sl@0
  4218
	6)	Rearranged VAWDB1U.DEF so that VariantInitialise__Fv is at ordinal 1
sl@0
  4219
		(this is necessary or else nothing works).
sl@0
  4220
	7)	Fixed bug in new RTest where RDebug::Printf(_L("<string>")) would panic
sl@0
  4221
		if <string> contained a % character. This was due to <string> being
sl@0
  4222
		passed into AppendFormatList which was then interpreting the % as a
sl@0
  4223
		format specification.
sl@0
  4224
	8)	Modified assembler code in EUSER to allow thumb interworking by making
sl@0
  4225
		all subroutine returns and indirect function calls use the BX
sl@0
  4226
		instruction.  Macros have been used so that the ARM-only version with
sl@0
  4227
		no BX instructions can still be built - this is necessary for
sl@0
  4228
		StrongARM builds.
sl@0
  4229
sl@0
  4230
		Macros employed are:
sl@0
  4231
sl@0
  4232
		__JUMP(cc,r) = BXcc r or MOVcc PC, r
sl@0
  4233
		__POPRET(rlist) = LDMFD SP!, {rlist,lr} \ BX lr or LDMFD SP!,{rlist,pc}
sl@0
  4234
		__CPOPRET(cc,rlist) = LDMccFD SP!, {rlist,lr} \ BXcc lr or LDMccFD SP!, {rlist,pc}
sl@0
  4235
sl@0
  4236
		NOTE: Thumb interworking is still disabled by default, since the new GCC
sl@0
  4237
		is not yet fully deployed.
sl@0
  4238
sl@0
  4239
	9)	Made minimal modification to EKERN to permit thumb user code to execute
sl@0
  4240
		correctly. This involves changing two instances of "mov pc, lr" in the
sl@0
  4241
		SWI handler to __JUMP(,lr) and also involves changing
sl@0
  4242
		DArmPlatThread::CallFunction to use separate routines depending on
sl@0
  4243
		whether an ARM or THUMB context is being modified. Also, when saving
sl@0
  4244
		context following a SWI call, the saved PC points to a BX instruction
sl@0
  4245
		instead of to the return address from the Exec:: function.
sl@0
  4246
sl@0
  4247
		NOTE: All supervisor mode code is expected to be ARM. Much more
sl@0
  4248
		extensive modification of the kernel would be required to permit THUMB
sl@0
  4249
		device drivers.
sl@0
  4250
sl@0
  4251
	10)	Compiled and tested E32 with the new version of GCC. This produces
sl@0
  4252
		several warnings, mostly "comparison of signed and unsigned", "ANSI
sl@0
  4253
		C++ does not permit declaration without type", "Taking address of
sl@0
  4254
		temporary" and "XXX declared but not used" (for variables or functions
sl@0
  4255
		only used from within assembler code). Modified the source to remove
sl@0
  4256
		these warnings.
sl@0
  4257
sl@0
  4258
	11)	Compiled and tested E32 using THUMB test executables. These all work
sl@0
  4259
		apart from those which contain ARM assembler code.  Disabled
sl@0
  4260
		breakpoint exception since this can crash the kernel with an alignment
sl@0
  4261
		fault if an undefined instruction is encountered in THUMB code.
sl@0
  4262
		Fixing this properly would require a lot of work on the debugger to
sl@0
  4263
		fully support THUMB.
sl@0
  4264
sl@0
  4265
		NOTE: To build THUMB executables, the _call_via_r0() helper functions
sl@0
  4266
		are required. These were added to EEXE.O for testing purposes, but will
sl@0
  4267
		eventually be in the GCC helper library.
sl@0
  4268
sl@0
  4269
	12)	Modified TDes::AppendFormatList() so that variable precision
sl@0
  4270
		specifications are now allowed, and so that the precision
sl@0
  4271
		specification is also applied to strings.
sl@0
  4272
sl@0
  4273
6) Simon
sl@0
  4274
	1)	Improved ps/2 keyboard initialisation within kacga
sl@0
  4275
sl@0
  4276
7) Mark
sl@0
  4277
	1)	Enabled unicode WINS/WINC to run on Windows 9x. Introduced euniw.dll
sl@0
  4278
		to convert between unicode and relevant narrow Win32 functions.
sl@0
  4279
		Added exported set of functions to euser.dll that return a pointer
sl@0
  4280
		to either the relevant 'W' Win32 function or a wrapper function in
sl@0
  4281
		euniw.dll. These functions and the initialisiation of the function
sl@0
  4282
		pointers is implemented in upwins\up_uansi.cpp.
sl@0
  4283
	2)	Changed unicode to narrow WINS/WINC conversion from UTF-8 to
sl@0
  4284
		CP_ACP in WinCOutput::Write and Debug::DebugFunction.
sl@0
  4285
sl@0
  4286
Version 1.02.187
sl@0
  4287
================
sl@0
  4288
(Made by Alastair, 9.6.99)
sl@0
  4289
sl@0
  4290
sl@0
  4291
1)	Jason
sl@0
  4292
	1)	Added sleep and wakeup code for MISA
sl@0
  4293
	2)	Enabled LCD and Keyboard for Brutus wakeup.
sl@0
  4294
	3)	Added MCP controller accessor functions for MISA
sl@0
  4295
	4)	Modified power model to share MCP clock
sl@0
  4296
	5)  Added definitions for the Brutus UCB1200 codec chip.
sl@0
  4297
	6)	Added touch screen controller for Brutus, including touch to wakeup.
sl@0
  4298
	7)  Fixed Brutus keyboard controller to not enable interrupt edges that it
sl@0
  4299
		does not use.
sl@0
  4300
	8)  Added the missing function TSa1100::UartTxBusy() to MISA
sl@0
  4301
		\inc\v32s1100.h
sl@0
  4302
			\v32ucb12.h
sl@0
  4303
		\kaisa\ka_isa.cpp
sl@0
  4304
			  \ka_ini.cpp
sl@0
  4305
			  \ka_power.cpp
sl@0
  4306
			  \ka_power.h
sl@0
  4307
		\kbisa\sa1100.inc
sl@0
  4308
			  \sa1100.s
sl@0
  4309
		\visaba\vi_hw.cpp
sl@0
  4310
			   \vi_keycn.cpp
sl@0
  4311
			   \vi_xyin.cpp
sl@0
  4312
sl@0
  4313
2)	Morgan
sl@0
  4314
	1)	Made Mmu::UnlockPageTables and Mmu::LockPageTables public so
sl@0
  4315
		code that calls Mmu::LogicalToPhysical() can unlock and
sl@0
  4316
		access the page tables.
sl@0
  4317
		\inc\m32hal.h
sl@0
  4318
	2)	Unlocked the page tables in TDma::NextBlock() function
sl@0
  4319
		\kpepoc\kp_dma.cpp
sl@0
  4320
sl@0
  4321
3)	Petteri
sl@0
  4322
	1)	Added Linda serial driver.
sl@0
  4323
	2)	Added 230.4K speed to d32comm.h and modified old serial drivers
sl@0
  4324
		to dislike it.
sl@0
  4325
		\group\datxlb1.mmp
sl@0
  4326
		\inc\d32comm.h
sl@0
  4327
			\v32linda.h
sl@0
  4328
		\kamad\ka_linda.cpp
sl@0
  4329
		\varmca\va_com1.cpp
sl@0
  4330
			   \va_com2.cpp
sl@0
  4331
		\varmcl\va_com1.cpp
sl@0
  4332
			   \va_com2.cpp
sl@0
  4333
		\varmlb\va_com1.cpp
sl@0
  4334
		\varmp2\va_com1.cpp
sl@0
  4335
		\varmpb\va_com1.cpp
sl@0
  4336
		\varmpc\va_com1.cpp
sl@0
  4337
			   \va_com2.cpp
sl@0
  4338
		\varmpd\va_com1.cpp
sl@0
  4339
			   \va_com2.cpp
sl@0
  4340
		\vawdb1\va_com1.cpp
sl@0
  4341
			   \va_com2.cpp
sl@0
  4342
sl@0
  4343
4)	Graham Asher (merged by Jonathan)
sl@0
  4344
	1)	Implement standard Unicode collation and add new collation functions
sl@0
  4345
		to allow loose matching.
sl@0
  4346
	2)	Fill up all the available TLanguage slots (00 to 99); codes added
sl@0
  4347
		include those requested for Roxette; this is a provisional solution
sl@0
  4348
		pending the introduction of a saner language and locale number API.
sl@0
  4349
	3)	Fix problems in TLex16::Val(TRealX&,TChar) &
sl@0
  4350
		TLex16::Val(TReal64&,TChar) in Unicode-to-8-bit conversion (defect
sl@0
  4351
		EDN769607).
sl@0
  4352
	4)	Obsolete functions yet to be removed:
sl@0
  4353
		TInt TDesC16::CompareC(const TDesC16& aDes,const TInt16*
sl@0
  4354
							   aCollationRules) const;
sl@0
  4355
		TInt TDesC16::CompareC(const TDesC16& aDes,TUint32
sl@0
  4356
							   aDesiredCollationRulesId,TUint32&
sl@0
  4357
							   aActualCollationRulesId) const;
sl@0
  4358
		static TInt Mem::CompareC(const TUint16* aLeft,TInt aLeftL,const
sl@0
  4359
								  TUint16* aRight,TInt aRightL,const TInt16*
sl@0
  4360
								  aCollationRules);
sl@0
  4361
		static TInt Mem::CompareC(const TUint16* aLeft,TInt aLeftL,const
sl@0
  4362
								  TUint16* aRight,TInt aRightL,TUint32
sl@0
  4363
								  aDesiredCollationRulesId,TUint32&
sl@0
  4364
								  aActualCollationRulesId);
sl@0
  4365
		static TInt Mem::CollationRuleSets();
sl@0
  4366
		static TInt Mem::CollationRuleSetId(TInt aIndex);
sl@0
  4367
		static const TInt16* Mem::CollationRuleSetByIndex(TInt aIndex);
sl@0
  4368
		static const TInt16* Mem::CollationRuleSetById(TUint32
sl@0
  4369
													   aDesiredId,TUint32&
sl@0
  4370
													   aActualId);
sl@0
  4371
sl@0
  4372
5)	Jonathan
sl@0
  4373
	1)	Fixed "ambiguous overload for `bool ? TChar : char'" errors from new
sl@0
  4374
		gcc compiler.
sl@0
  4375
			umath\um_rtod.cpp
sl@0
  4376
sl@0
  4377
6)	Alastair
sl@0
  4378
	1)	To build this release of e32tools you'll need the latest version - 108
sl@0
  4379
		- of E32toolp.  If you're going to use this release at all, you'll
sl@0
  4380
		need to be building your component with the latest version of
sl@0
  4381
		e32toolp, since import libraries are only released in the MARM release
sl@0
  4382
		and WINS debug directories and also because EDLL.O and EEXE.O won't
sl@0
  4383
		link properly with older versions of e32toolp.
sl@0
  4384
	2)	Renamed MARM platform to MEIG and SARM platform to SEIG just as far as
sl@0
  4385
		E32 is concerned.  Other components will still build for the MARM (and
sl@0
  4386
		SARM) platforms.  This change means that rombuild obey files will need
sl@0
  4387
		to change to reflect the new location of e32 releasables in
sl@0
  4388
		\EPOC32\Release\Meig instead of \EPOC32\Release\Marm.
sl@0
  4389
	3)	Changed zips of releasables put onto the network. There is now one zip
sl@0
  4390
		file for each platform.  There is also a zip file for exported header
sl@0
  4391
		files.  Hence, the contents of S:\e32\zip includes
sl@0
  4392
			export.<ver>, wins.<ver>, meig.<ver>, misa.<ver> ,mawd.<ver> winc.<ver>.
sl@0
  4393
		Each of the meig, misa and mawd zip files should contain everything
sl@0
  4394
		necessary for building components which depend on E32 for marm.
sl@0
  4395
		The files within these zip files now also have full pathnames so ensure
sl@0
  4396
		you unzip them into the root of your EPOC drive with any flags required
sl@0
  4397
		to recreate the directory structure.
sl@0
  4398
	4)	Added new MAKMAKE keyword ASSPEXPORTS to various .MMP files so that
sl@0
  4399
		they search ASSP-specific deffile directories rather than CPU-specific
sl@0
  4400
		deffile directories by default.  E.G. EKERN.DLL built for narrow MISA
sl@0
  4401
		REL will refer to \E32\BMISA\EKERN.DEF rather than
sl@0
  4402
		\E32\BMARM\EKERN.DEF.  These .MMP files are for EKERN, EPBUS, VARMCL,
sl@0
  4403
		VARMLA, VARMLB, VARMP2, VARMPB, VARMPC, VARMPD, VAWDB1, VISABA,
sl@0
  4404
		VISACA, VROSR1, VCGAC1, VARMCA.  This keyword means that the import
sl@0
  4405
		library for a project build for MEIG will go into
sl@0
  4406
		\EPOC32\Release\MEIG\<rel|urel>\ rather than
sl@0
  4407
		\EPOC32\Release\MARM\<rel|urel>\.
sl@0
  4408
sl@0
  4409
		Where .MMP files have links to the import libraries for these
sl@0
  4410
		components I have listed the libraries with new keyword ASSPLIBRARY
sl@0
  4411
		and taken them out of any existing LIBRARY statements.  This ensures
sl@0
  4412
		that the generated- makefile will search in the correct place for the
sl@0
  4413
		import library.  Any other components linking to these libraries will
sl@0
  4414
		have to do the same thing.
sl@0
  4415
	5)	Kernel include headers are now exported to \EPOC32\Include\Kernel
sl@0
  4416
		rather than \EPOC32\Include, so if your component includes these
sl@0
  4417
		headers you'll need to add \EPOC32\Include\Kernel as a SYSTEMINCLUDE
sl@0
  4418
		file in your .MMP file.
sl@0
  4419
	6)	Added new command, MNT CHECKREL, to check that all releasables are
sl@0
  4420
		present before doing an MNT PUTREL.
sl@0
  4421
		Before doing MNT CHECKREL or MNT PUTREL call BLDMAKE -v RELFILES to
sl@0
  4422
		create the lists of releasables.
sl@0
  4423
	7)	Changed edll, exdll, eexe and kc_exe so that they all build as static
sl@0
  4424
		libraries rather than object files in accordance with ER5u makmake
sl@0
  4425
		changes.
sl@0
  4426
	8)	Changed second uids in device driver .MMP files to zero so that makmake
sl@0
  4427
		will apply the correct ones automatically.
sl@0
  4428
	9)	Changed .MMP files to take advantage of changes in makmake .MMP
sl@0
  4429
		#defines.
sl@0
  4430
	10)	Replaced all B[plat].PRJ files for use with BLDMAKE with BLD.INF in
sl@0
  4431
		accordance with latest BLDMAKE changes.
sl@0
  4432
	11)	Moved ETIMR and T_DEVC to project E32TEST.
sl@0
  4433
	12)	Removed all E*.REL files from GROUP directory and changed MNT.BAT so
sl@0
  4434
		that MNT PUTREL looks for .REL files generated by BLDMAKE instead.
sl@0
  4435
		Updated BLD.INF accordingly.
sl@0
  4436
	13)	Changed #defines in the following files now that __MEIG__ is being used
sl@0
  4437
		to mean __MARM__ and __MARM__ is being used to mean ARM CPU:
sl@0
  4438
			INC\U32STD.H, INC\M32STD.H, PSRC\PS_PCCD.CPP,
sl@0
  4439
			KCARM\KC_INT.CPP, DPEPOC\D_MEDINT.CPP, DPEPOC\D_MEDCRR.CPP,
sl@0
  4440
			DPEPOC\D_MEDCRM.CPP, DPEPOC\D_MEDATA.CPP.
sl@0
  4441
	14)	Removed EVALID.PL and EVALID.BAT from GROUP dir now that this version
sl@0
  4442
		of EVALID is being released as part of E32TOOLP.
sl@0
  4443
	15) Created directory \E32\BMEIG.  Moved .DEF files for the following
sl@0
  4444
		projects from \E32\BMARM\ to \E32\BMEIG:
sl@0
  4445
			EKERN, EPBUS, VARMCL, VARMP2, VARMPB, VARMPC, VARMPD.
sl@0
  4446
	16)	Removed unnessary __XCON__ #defines and swapped them with __WINC__
sl@0
  4447
		instead where necessary.
sl@0
  4448
	17)	Removed XWSRV.MMP, XPBUS.MMP, XCONS.MMP, EXYIN.MMP and EKEYB.MMP - they
sl@0
  4449
		were no longer required now that libraries can be built separately.
sl@0
  4450
		Note that this means the import libraries must be built before building
sl@0
  4451
		the other releasables because of the mutual imports between some E32
sl@0
  4452
		Dlls.
sl@0
  4453
	18)	Changed variant .MMP files to link to the respective variant versions
sl@0
  4454
		of exyin.lib and ekeyb.lib now that exyin.lib and ekeyb.lib are no
sl@0
  4455
		longer built as import libraries.
sl@0
  4456
	19)	Removed WINS #defines from around the dummy export for the text window
sl@0
  4457
		server so that it has a dummy export for other builds.  Frozen the dummy
sl@0
  4458
		export in \E32\BMARM\EWSRV.DEF.
sl@0
  4459
	20)	Removed export command from MNT.BAT and EXPORT.PL from group directory
sl@0
  4460
		now that and equivalent command is provided by BLDMAKE.
sl@0
  4461
	20)	CONSWINS.DEF, CONSMARM.DEF and CONSMISA.DEF are now exported to
sl@0
  4462
		directory \EPOC32\Release\<Platform>\ rather than \EPOC32\Include.
sl@0
  4463
	21)	Changed #defines in K32ADDR.H, U32STD.H, V32COG.H in accordance with
sl@0
  4464
		makmake #define changes for __SROS__ and __SCGA__.
sl@0
  4465
	22)	Adjusted BLD.INF so that kernel headers are exported to
sl@0
  4466
		\EPOC32\Include\Kernel\ rather than \EPOC32\Include.  This means that
sl@0
  4467
		any projects requiring the kernel headers will have to have
sl@0
  4468
		\EPOC32\Include\Kernel added to the list of SYSTEMINCLUDE paths within
sl@0
  4469
		their .MMP files.
sl@0
  4470
	23)	Removed all .DEF files from the B<plat> directories which are now
sl@0
  4471
		referenced in the BMARM directory.  Renamed BSROS BMROS and removed
sl@0
  4472
		BSARM and BSCGA.
sl@0
  4473
	24)	Added extra commands to MNT.BAT to copy edll.o and eexe.o from the MEIG
sl@0
  4474
		release directories to the MARM ones pro tem, and to zip them up for
sl@0
  4475
		MEIG, MAWD and MISA.
sl@0
  4476
	25)	Changed rom.oby files in KBARM and KBSARM directories to incorporate
sl@0
  4477
		changes resulting from the new way E32 is built.  A few changes in
sl@0
  4478
		other rom.oby files may also be required.
sl@0
  4479
	26)	Excluded Graham Asher's change to UMATH\UM_DTOR.CPP since they won't
sl@0
  4480
		build in narrow variants.
sl@0
  4481
	27)	Fixed up MEIG EKERN.DEF following Pete's DMedia changes.
sl@0
  4482
	28)	Changed P::Print so that in release builds it uses Win32's
sl@0
  4483
		OutputDebugString() rather than putting up a message box.  This has
sl@0
  4484
		always been the behaviour in debug builds.  As a result of this change,
sl@0
  4485
		test output will no longer appear in an annoying sequence of message
sl@0
  4486
		boxes.
sl@0
  4487
sl@0
  4488
7)	Pete
sl@0
  4489
	1) 	Modification to DMediaDriver class so a media driver
sl@0
  4490
		can be configured to allow read/write/format requests simultaneously
sl@0
  4491
		with each other. By default, a driver only allows one
sl@0
  4492
		request to be outstanding at any time but by setting the
sl@0
  4493
		DMediaDriver member iFlags to KMediaDrvMultipleReqs,
sl@0
  4494
		a read/write and format command may each be outstanding at a given
sl@0
  4495
		time.
sl@0
  4496
		\ksrc\ks_locd.cpp
sl@0
  4497
		\inc\k32std.h
sl@0
  4498
		\inc\k32std.inl
sl@0
  4499
sl@0
  4500
Version 1.02.186
sl@0
  4501
================
sl@0
  4502
(Made by Malcolm, 21st May 1999)
sl@0
  4503
sl@0
  4504
Petteri
sl@0
  4505
	1)	Added a new variant (Varmca) for the Rev.A of the new Cirrus
sl@0
  4506
		Logic 711X evaluation board. This port is not complete: digitiser
sl@0
  4507
		driver, most of ADC code, second serial port and some other
sl@0
  4508
		small things are missing. Also, the board is still evolving.
sl@0
  4509
sl@0
  4510
		New files added:
sl@0
  4511
		Varmca\Va_c6700.cpp	Group\Cakdca.mmp
sl@0
  4512
		Varmca\Va_com1.cpp	Group\Cakyca.mmp
sl@0
  4513
		Varmca\Va_com2.cpp	Group\Caxyca.mmp
sl@0
  4514
		Varmca\Va_hw.cpp	Group\Dasnca.mmp
sl@0
  4515
		Varmca\Va_kdata.cpp	Group\Datxca1.mmp
sl@0
  4516
		Varmca\Va_keyb.cpp	Group\Datxca2.mmp
sl@0
  4517
		Varmca\Va_pbus.cpp	Group\Varmca.mmp
sl@0
  4518
		Varmca\Va_sdrv.cpp	Inc\V32armca.h
sl@0
  4519
		Varmca\Va_spi.cpp
sl@0
  4520
		Varmca\Va_xyin.cpp
sl@0
  4521
		Varmca\Va_std.h
sl@0
  4522
sl@0
  4523
		Old files modified:
sl@0
  4524
		Group\Bmarm.prj
sl@0
  4525
		Group\Emarm.rel
sl@0
  4526
		Kbarm\E32var.iby
sl@0
  4527
		Kbarm\Rom.oby
sl@0
  4528
		Kbarm\Setvars.cmd
sl@0
  4529
		( and also:
sl@0
  4530
		Kamad\Ka_linda.cpp
sl@0
  4531
		Inc\V32linda.h )
sl@0
  4532
sl@0
  4533
Jason
sl@0
  4534
	1)	MISA Idle code fix.
sl@0
  4535
		\kaisa\ka_utl.cpp
sl@0
  4536
		\kcarm\kc_int.cpp
sl@0
  4537
		\kbisa\sa1100.s
sl@0
  4538
sl@0
  4539
Jonathan
sl@0
  4540
	1)	Added Protea, Cassius and inc{c|k} files to distrib.txt files
sl@0
  4541
		bmarm\distrib.txt
sl@0
  4542
		bmisa\distrib.txt
sl@0
  4543
		inc\distrib.txt
sl@0
  4544
		group\distrib.txt
sl@0
  4545
sl@0
  4546
Version 1.02.185
sl@0
  4547
================
sl@0
  4548
(Made by Malcolm, 14th May 1999)
sl@0
  4549
sl@0
  4550
Malcolm et al.
sl@0
  4551
	1)  Prepared E32 for automatic building and testing.  Each kbXXX
sl@0
  4552
		directory should now have the following files:
sl@0
  4553
sl@0
  4554
		rom.cmd that takes an .oby file as the first parameter (and
sl@0
  4555
		then the standard build/variant as before).
sl@0
  4556
		test.oby that builds a rom with all the test code for that
sl@0
  4557
		platform.  Test.oby should also include batch files called
sl@0
  4558
		z:\test\e32auto.bat, z:\test\f32auto.bat and
sl@0
  4559
		z:\test\allauto.bat that run respectively the e32, f32 and all
sl@0
  4560
		tests for this platform.  For now, these are taken from
sl@0
  4561
		\e32test\group./
sl@0
  4562
		bld.cmd that creates udeb and urel roms, given that all of
sl@0
  4563
		e32, f32 and the test suites have been built.  Typically this
sl@0
  4564
		makes the bootstrap code then calls rom.cmd.
sl@0
  4565
sl@0
  4566
		This change has been implemented for misa, marm, mcga & sros.
sl@0
  4567
sl@0
  4568
sl@0
  4569
Alastair
sl@0
  4570
	1)	Changed RDebug::Print for WINS/WINC so that output is appended to file
sl@0
  4571
		EPOCWIND.OUT in the PC's temporary directory, as well as being sent
sl@0
  4572
		where it is currently.  In UNICODE builds, the output is converted to
sl@0
  4573
		UTF-8 before being appended to the file.
sl@0
  4574
	2)	Changed WINC Console output under UNICODE builds so that it can be
sl@0
  4575
		redirected to a file.  The output is converted to UTF-8 before being
sl@0
  4576
		sent to the console.
sl@0
  4577
sl@0
  4578
Simon
sl@0
  4579
	1)	Merged in Cogent
sl@0
  4580
		\kacga\*
sl@0
  4581
		\bmcga\*
sl@0
  4582
		\vcgac1\*
sl@0
  4583
		\wsrc\wd_vgacga.cpp
sl@0
  4584
		\wsrc\wd_vtcgakb.cpp
sl@0
  4585
sl@0
  4586
	2)	Modified coproc related bits for ARM4 on Cogent
sl@0
  4587
		\kcarm\kc_sched
sl@0
  4588
		\kcarm\kc_mmu
sl@0
  4589
sl@0
  4590
Petteri
sl@0
  4591
	1)  Minor Linda screen and keyboard related changes.
sl@0
  4592
		\kamad\ka_ini.cpp
sl@0
  4593
		\kamad\ka_linda.cpp
sl@0
  4594
		\inc\v32linda.h
sl@0
  4595
		\varmlb\va_hw.cpp
sl@0
  4596
		\varmlb\va_keyb.cpp
sl@0
  4597
		\wsrc\wd_mad.cpp
sl@0
  4598
sl@0
  4599
sl@0
  4600
Malcolm
sl@0
  4601
	1)  Changes to mnt.bat.  Directories are now enummerated in
sl@0
  4602
		dir.prj rather than being hard-coded into mnt.bat all over the
sl@0
  4603
		place.  Two perl helper scripts have been created to interface
sl@0
  4604
		to PVCS.
sl@0
  4605
		\group\mnt.bat
sl@0
  4606
		\group\dopvcs.pl
sl@0
  4607
		\group\lock.pl
sl@0
  4608
		\group\dir.prj
sl@0
  4609
sl@0
  4610
sl@0
  4611
Petteri
sl@0
  4612
	1)  Minor changes in order to tidy up DisplayOn()
sl@0
  4613
		\kamad\ka_ini.cpp
sl@0
  4614
		\inc\v32linda.h
sl@0
  4615
		\varmlb\va_hw.cpp
sl@0
  4616
		\wsrc\wd_mad.cpp
sl@0
  4617
sl@0
  4618
sl@0
  4619
Petteri
sl@0
  4620
	1)  Speed improvements to Linda screen driver.
sl@0
  4621
		\wsrc\wd_mad.cpp
sl@0
  4622
sl@0
  4623
	2)  Modified keyboard related files so that Linda keyboard
sl@0
  4624
		driver works properly.
sl@0
  4625
		\varmlb\va_keyb.cpp
sl@0
  4626
		\varmlb\va_kdata.cpp
sl@0
  4627
		\group\cakylb.mmp
sl@0
  4628
sl@0
  4629
sl@0
  4630
Malcolm
sl@0
  4631
	1)  Upgraded the MNT DISTRIB command to cope with per-file
sl@0
  4632
		inclusion/exclusion.  Now uses perl to parse distrib.txt
sl@0
  4633
		files.  These files have changed in format.  The format is
sl@0
  4634
		now lines of the format:
sl@0
  4635
		<filename>   <licensee>
sl@0
  4636
		If the filename is Default, then all the files in this
sl@0
  4637
		directory will be included.  If the licensee text contains
sl@0
  4638
		"Epoc" then this is part of the generic release.
sl@0
  4639
		To always exclude a file I suggest using a licensee of "Never".
sl@0
  4640
		Comments can be started with the # character and last to the
sl@0
  4641
		end of the line. \inc\distrib.txt and \group\distrib.txt files
sl@0
  4642
		are good examples.
sl@0
  4643
		The distrib.txt files themselves are never included.
sl@0
  4644
		At the moment, this script requires pkzip version 2.5, called
sl@0
  4645
		pkzip25 to be in the path.  This is due to limitations with
sl@0
  4646
		the previous versions of pkzip.
sl@0
  4647
		\group\distrib.pl
sl@0
  4648
		\group\mnt.bat
sl@0
  4649
		\*\distrib.txt
sl@0
  4650
sl@0
  4651
	2)  Fixed single process scheduler bug
sl@0
  4652
		\kcarm\kc_sched.cpp
sl@0
  4653
sl@0
  4654
	3)	Merged in Simon's automatic test changes.
sl@0
  4655
		\usrc\us_test.cpp
sl@0
  4656
		\inc\e32test.h
sl@0
  4657
sl@0
  4658
	4)  Added export.pl that will export E32 headers appropriately.
sl@0
  4659
		\group\export.pl
sl@0
  4660
sl@0
  4661
sl@0
  4662
Petteri
sl@0
  4663
	1)  Added text screen driver for Linda
sl@0
  4664
		\wsrc\wd_mad.cpp
sl@0
  4665
		\group\edisp.mmp
sl@0
  4666
sl@0
  4667
sl@0
  4668
Malcolm
sl@0
  4669
	1)  Removed all the li.prj files & moved the distribution comments
sl@0
  4670
		to distrib.txt files. Updated mnt.bat to deal with this.
sl@0
  4671
		\group\mnt.bat
sl@0
  4672
		*\li.prj
sl@0
  4673
		*\distrib.txt
sl@0
  4674
sl@0
  4675
	2)  Boilerplated Roxette sources
sl@0
  4676
		\vrosr1\*
sl@0
  4677
		\karos\*
sl@0
  4678
		\kbros\*
sl@0
  4679
sl@0
  4680
sl@0
  4681
Malcolm
sl@0
  4682
	1) 	Major reorganisation of the E32 tree.  Tags: Pre-ER5u-Reorg is
sl@0
  4683
		before this, Post-ER5u-Reorg is after it.
sl@0
  4684
sl@0
  4685
		What was upmarm and upmx86 has had the common parts extracted
sl@0
  4686
		into upepoc and the architecture dependant bits moved to
sl@0
  4687
		ucmarm and ucmx86 respectively.
sl@0
  4688
		\upmarm\*
sl@0
  4689
		\upmx86\*
sl@0
  4690
		\ucmarm\*
sl@0
  4691
		\ucmx86\*
sl@0
  4692
		\upepoc\*
sl@0
  4693
		group\ekern.mmp
sl@0
  4694
		group\eexe.mmp
sl@0
  4695
		group\xcons.mmp
sl@0
  4696
sl@0
  4697
	2)	Ucdt has been moved over to Usrc
sl@0
  4698
		\ucdt\*
sl@0
  4699
		\usrc\*
sl@0
  4700
		group\euser.mmp
sl@0
  4701
sl@0
  4702
	3) 	Roxette (SROS) has been merged in
sl@0
  4703
		\karos\*
sl@0
  4704
		\kbros\*
sl@0
  4705
		\vrosr1\*
sl@0
  4706
		\bsros\*
sl@0
  4707
		group\ekern.mmp
sl@0
  4708
		group\bsros.prj
sl@0
  4709
		group\esros.rel
sl@0
  4710
		group\euser.mmp
sl@0
  4711
		group\ekern.mmp
sl@0
  4712
		group\edisp.mmp
sl@0
  4713
		group\eexe.mmp
sl@0
  4714
		group\ekdata.mmp
sl@0
  4715
		group\inck.rel
sl@0
  4716
		group\vrosr1.mmp
sl@0
  4717
		wsrc\wd_rose*
sl@0
  4718
sl@0
  4719
	4)	Removed EPBUS reference in epbus
sl@0
  4720
		group\epbus.mmp
sl@0
  4721
sl@0
  4722
	5)	Added support for screen dimension keys (flip keys)
sl@0
  4723
		inc\e32keys.h
sl@0
  4724
		inc\e32panic.h
sl@0
  4725
		usrc\us_evnt.cpp
sl@0
  4726
sl@0
  4727
	6) 	Changes to timers to disambiguate periodic and locked timers for the
sl@0
  4728
		lower layers by encoding a value in the repeat field
sl@0
  4729
		ksrc\ks_tim.cpp
sl@0
  4730
		inc\k32std.h
sl@0
  4731
sl@0
  4732
	7) 	New function UserSvr::RomHeaderAddress(), replacing the use of
sl@0
  4733
		KRomLinAddr	constant.  This is so the F32 is single-process agnostic.
sl@0
  4734
		All address constants have been moved to k32addr.h
sl@0
  4735
		inc\k32addr.h
sl@0
  4736
		kpepoc\kp_ini.cpp
sl@0
  4737
		inc\u32std.h
sl@0
  4738
		inc\e32rom.h
sl@0
  4739
		inc\e32svr.h
sl@0
  4740
		inc\m32hal.h
sl@0
  4741
sl@0
  4742
sl@0
  4743
Jason
sl@0
  4744
	1)	Added debug monitor for MISA
sl@0
  4745
		\KAISA\KA_MON.CPP
sl@0
  4746
		\INC\M32STD.H
sl@0
  4747
		\GROUP\EKERN.MMP
sl@0
  4748
sl@0
  4749
Morgan
sl@0
  4750
	1)	Upgraded Dma abstraction to cope with transfers across page boundaries
sl@0
  4751
		\INC\M32STD.H
sl@0
  4752
		\KAMAD\KA_DMA.CPP
sl@0
  4753
		\KPEPOC\KP_DMA.CPP
sl@0
  4754
	2)	Fixed function prototype for DPowerHandler::SetRequirement(TUint &aState)
sl@0
  4755
		\inc\k32power.h
sl@0
  4756
		\ksrc\ks_power.cpp
sl@0
  4757
		\b*\ekern*.def
sl@0
  4758
	3)	Implemented Hal::ModifyLedMask()
sl@0
  4759
		\kpehal\kph_inf.cpp
sl@0
  4760
	4)	Fixed key translator to use User::LowerCase instead of User::Fold
sl@0
  4761
		for EMatchKeyCaseInsens
sl@0
  4762
		\wsrc\ky_tran.cpp
sl@0
  4763
	5)	Merged in changes for MMAD
sl@0
  4764
		\inc\u32std.h
sl@0
  4765
		\inc\v32linda.h
sl@0
  4766
		\kbmad\*
sl@0
  4767
		\kamad\*
sl@0
  4768
		\varmlb\*
sl@0
  4769
	6)	Corrected remote serial screen cursor positioning
sl@0
  4770
		\wsrc\wd_vt100.cpp
sl@0
  4771
	7)	Fixed mismatched #defines of
sl@0
  4772
			__CPU_SPLIT_TLBS and __CPU_SPLIT_TLB
sl@0
  4773
			__CPU_CACHE_CONFIGURABLE and __CPU_CACHE_SELECTABLE
sl@0
  4774
		\kcarm\kc_mmu.cpp
sl@0
  4775
	8)	Removed NotBuffered attribute from the read-only EKernelCode and
sl@0
  4776
		EUserCode chunks
sl@0
  4777
		\kcarm\kc_mmu.cpp
sl@0
  4778
	9)	Added Platform dependent constants for page table attributes
sl@0
  4779
		\kcarm\kc_mmu.cpp
sl@0
  4780
	10) Integrated the debug monitor into MMAD
sl@0
  4781
		\kamad\ka_mon.cpp
sl@0
  4782
		\inc\m32std.h
sl@0
  4783
	11) Uncommented the two lines of code that flush the D-Cache on
sl@0
  4784
		split cache processors
sl@0
  4785
		\kcarm\kc_sched.cpp
sl@0
  4786
		\kcarm\kc_mmu.cpp
sl@0
  4787
	12) More bug fixes for MMAD
sl@0
  4788
		\kamad\ka_linda.cpp
sl@0
  4789
	13) Implemented Rom groping in the bootstrap
sl@0
  4790
sl@0
  4791
sl@0
  4792
Jonathan
sl@0
  4793
	1)	Fixed fix for EDN430762 in 170; trap handler was not being correctly
sl@0
  4794
		zeroed.
sl@0
  4795
		kpwins\kp_utl.cpp
sl@0
  4796
	2)	Reinstated unused functions SetLine and GetLine cos they're pure
sl@0
  4797
		virtual in the base class and so need to exist.
sl@0
  4798
		wsrc\wd_wins.cpp
sl@0
  4799
	3)	Made RTest::Getch() pause for input even in non-manual mode.
sl@0
  4800
		usrc\us_test.cpp
sl@0
  4801
sl@0
  4802
Version 1.02.181
sl@0
  4803
================
sl@0
  4804
(Made by Pete, 5th May 1999)
sl@0
  4805
sl@0
  4806
1)	Pete
sl@0
  4807
	1)	Added the (exported) function:-
sl@0
  4808
			TBusLocalDrive::Format(TInt aPos,TInt aLength)
sl@0
  4809
		so that it is possible to format just a part of a
sl@0
  4810
		drive.
sl@0
  4811
	2) 	Changed the local drive allocation for Brutus/WINS as follows:-
sl@0
  4812
sl@0
  4813
		Local-Drive-Num	Assignment
sl@0
  4814
		(Let-EPOC/WINS)
sl@0
  4815
		0 (C:/Y:)	EFixedMedia0 (Internal Ram)
sl@0
  4816
		1 (D:/X:)	ERemovableMedia0 (1st partition on PC Card Socket0)
sl@0
  4817
		2 (E:)		ERemovableMedia1 (1st partition on PC Card Socket1)
sl@0
  4818
		3 (F:)		ERemovableMedia0 (2nd partition on PC Card Socket0)
sl@0
  4819
		4 (G:)		ERemovableMedia1 (2nd partition on PC Card Socket1)
sl@0
  4820
		5 (H:)		ERemovableMedia0 (3rd partition on PC Card Socket0)
sl@0
  4821
		6 (I:)		ERemovableMedia1 (3rd partition on PC Card Socket1)
sl@0
  4822
		7 (J:)		Not used
sl@0
  4823
		8 (K:/W:)	EFixedMedia1 (Flash File System)
sl@0
  4824
sl@0
  4825
	3) 	Backed out the change made in V180 to TTrapK::Trap() in kpwins\kp_utl.cpp as
sl@0
  4826
		this is suspected to be causing problems in WINS Unicode builds.
sl@0
  4827
	4) 	Fixed a problem with the function ImpHal::Idle() on ISA builds
sl@0
  4828
		(KAISA\KA_UTL.CPP).
sl@0
  4829
	5)	Fixed a problem with EPBUS.DLL which resulted in an exception
sl@0
  4830
		if an attempt was made to open a media driver for a peripheral
sl@0
  4831
		bus device (ie derived from DPBusMediaDriver) on an
sl@0
  4832
		internal drive. This typically only causes a problem on machines
sl@0
  4833
		which have a local drive designated as an internal drive in addition
sl@0
  4834
		to the standard Internal Ram drive (ie EFixedMedia1). This isn't a
sl@0
  4835
		problem on Snowdrop/Protea. There generally isn't a problem on the
sl@0
  4836
		internal Ram drive (ie EFixedMedia0) since the IRAM media driver
sl@0
  4837
		(MEDINT.PDD) opens successfully on this device before any drivers for
sl@0
  4838
		removable devices. (It would have caused a problem if ATA media driver was
sl@0
  4839
		loaded before the IRAM media driver).
sl@0
  4840
	6)	Modified E32VAR.IBY and ROM.OBY in \KBISA to allow ISA UNICODE rom's
sl@0
  4841
		to be built successfully.
sl@0
  4842
	7)	Added a LFFS media driver (MEDLFS.PDD) to the WINS and Brutus platforms.
sl@0
  4843
		The WINS version emulates a media device by performing reads/writes to the
sl@0
  4844
		file <temp>LFSLDRV.BIN (e.g. C:\TEMP\LFSLDRV.BIN). The Brutus version uses
sl@0
  4845
		2Mb of flash in Static Memory bank 1 and thus requires a pair of 1M x 16 flash
sl@0
  4846
		chips to be fitted to this bank. These devices aren't fitted on a standard Brutus
sl@0
  4847
		rack as shiped from Intel. The Brutus media driver is a read-only implementation
sl@0
  4848
		in this release.
sl@0
  4849
sl@0
  4850
Version 1.02.180
sl@0
  4851
================
sl@0
  4852
(Made by Pete, 29th April 1999)
sl@0
  4853
sl@0
  4854
	This is an ER5U release
sl@0
  4855
sl@0
  4856
1)	Jonathan
sl@0
  4857
	1)	Fixed EDN430762 (E32TEST T_REG.EXE fails in WINS REL).
sl@0
  4858
		TTrapK::Trap() in kpwins\kp_utl.cpp mixed assembler and C++ and was
sl@0
  4859
		being broken by MSVC5's aggressive optimisations when built for
sl@0
  4860
		WINS/WINC REL/UREL. The fixed code is still vulnerable to compiler
sl@0
  4861
		changes because it still contains one C++ statement and could
sl@0
  4862
		therefore be confused by the compiler setting up a stack frame or
sl@0
  4863
		trashing the cx register.
sl@0
  4864
		TTrap::Trap() in upwins\up_trp.cpp and upmx86\up_trp.cpp would contain
sl@0
  4865
		the same problem but we can't build the user library under MSVC5 with
sl@0
  4866
		optimisations enabled for other reasons so the problem does not
sl@0
  4867
		appear.
sl@0
  4868
sl@0
  4869
2)	Pete
sl@0
  4870
	1)	Modifications to Brutus variant (VISABA) to fix a problem with the PC Card
sl@0
  4871
		interface CD signals on GPIO7 (socket1) and GPIO4 (socket0). These were being
sl@0
  4872
		reconfigured to their alternate function (upper port of LCD interface) within
sl@0
  4873
		the function Variant::DisplayOn().
sl@0
  4874
	2) 	Change to the way the ISA PC Card Controller handles a media change interrupt so
sl@0
  4875
		that it now queues a 20ms millisecond callback to handle switch debounce rather
sl@0
  4876
		than doing this directly from the interrupt service routine.
sl@0
  4877
	3) 	In the ISA PC Card Controller abstraction, removed some redundant functions calls
sl@0
  4878
		called during media change and socket interrupt handling. These functions had been
sl@0
  4879
		carried over from the MARM platform.
sl@0
  4880
	4) 	Disabled idle mode for now in the ISA platform (ImpHal::Idle()). There appears to be a
sl@0
  4881
		problem with PC Card IREQ interrupts (implemnted using GPIO edge triggered interrupt)
sl@0
  4882
		bringing the machine out of idle such that the machine eventually hangs.
sl@0
  4883
	5) 	Implemented a new Pc Card Controller to Variant interface for ISA platforms (TPcCardControllerIsaInterface
sl@0
  4884
		in V32PCCDI.H). This includes the following new functions:-
sl@0
  4885
			- const TDesC8& SocketIntSource(TSocket aSocket,TPccdEvent anEvent);
sl@0
  4886
			- void InitSocketInt(TSocket aSocket,TPccdEvent anEvent);
sl@0
  4887
			- void ClearSocketInt(TSocket aSocket,TPccdEvent anEvent);
sl@0
  4888
		This is allows the socket interrupt implementation on ISA platforms to performed
sl@0
  4889
		at the variant layer
sl@0
  4890
sl@0
  4891
3)	Alex
sl@0
  4892
	1)	Modifications to ISA bootstrap (which is really tailored for the reference Brutus
sl@0
  4893
		platform) to support running code from RAM rather than FLASH. This means that images larger
sl@0
  4894
		than 4Mb (the previous limit on this platform due to the size of the flash bank) can be
sl@0
  4895
		handled. Use with E32UTILS REPROB V027.
sl@0
  4896
sl@0
  4897
4)	Pete
sl@0
  4898
	(inc\E32SVR.H)
sl@0
  4899
		Modification to TLocalDriveCapsV2 to add the data member
sl@0
  4900
		iEraseBlockSize. This is to support an F32 Flash File System.
sl@0
  4901
sl@0
  4902
sl@0
  4903
Version 1.02.166
sl@0
  4904
================
sl@0
  4905
(Made by Jonathan, 23rd February 1999)
sl@0
  4906
sl@0
  4907
1)	Jason
sl@0
  4908
	1)	Implemented Millisecond timer for MISA.
sl@0
  4909
	2)  Made the ATA Media driver as part of the ROM for MISA.
sl@0
  4910
sl@0
  4911
2)	Dennis
sl@0
  4912
	1)	Replaced Snowdrop digitiser default calibration values with values
sl@0
  4913
		supplied by Amazon.
sl@0
  4914
	2)	Modified Windermere LCD controller Timing2 register setting as
sl@0
  4915
		requested by Amazon.
sl@0
  4916
	3)	Changed Snowdrop current consumption and battery threshold values
sl@0
  4917
		to those supplied by Amazon.
sl@0
  4918
sl@0
  4919
3)	Morgan
sl@0
  4920
	1)	Replaced the code that stops the machine turning off if an absolute
sl@0
  4921
		timer is due soon.
sl@0
  4922
sl@0
  4923
4)	Jonathan & Co
sl@0
  4924
	1)	Boilerplated source.
sl@0
  4925
	2)	Removed historical epocfns.txt, sizes.txt, sizes.xls from .\group.
sl@0
  4926
sl@0
  4927
5)	Alastair
sl@0
  4928
	1)	Replaced hard-coded R: with %s% in MNT.BAT.
sl@0
  4929
	2)	Changed MNT PUTSRC to use T:\Tools\Zip.exe rather than
sl@0
  4930
		T:\Tools\PKZip.exe.
sl@0
  4931
	3)	Changed MNT GETREL to get the WINC debugging releaseables for DEB and
sl@0
  4932
		UDEB builds.
sl@0
  4933
	4)	Removed non-existent V32ARMS1.H, V32SASIC.H and duplicate listing of
sl@0
  4934
		K32POWER.H from \E32\INC\INCK.PRJ.
sl@0
  4935
	5)	Removed non-existent D32FTIM.H, D32FTIM.INL and *.FRZ from
sl@0
  4936
		\E32\INC\INCC.PRJ.
sl@0
  4937
	6)	Added CONSWINS.DEF, CONSMARM.DEF and CONSMISA.DEF to \E32\INC\INCK.PRJ.
sl@0
  4938
	7)	Removed CAKDP2 Series5 keyboard variants from EMARM.REL.
sl@0
  4939
	8)	Removed ELOCL variants from EMARM.REL, EWINS.REL and EWINC.REL.
sl@0
  4940
	9)	Moved \E32\INC\INCC.PRJ to \E32\GROUP\INCC.REL and \E32\INC\INCK.PRJ to
sl@0
  4941
		\E32\GROUP\INCK.REL and changed MNT.BAT so that these .REL files are
sl@0
  4942
		treated in the same way as all the other .REL files.
sl@0
  4943
	10)	Updated validation process to use William's new EVALID.BAT (added to
sl@0
  4944
		E32\Group pro tem.).
sl@0
  4945
	11)	Removed empty file \E32\Inc\M32hal.inl.
sl@0
  4946
sl@0
  4947
sl@0
  4948
Version 1.02.165
sl@0
  4949
================
sl@0
  4950
(Made by Pete, 16th February 1999)
sl@0
  4951
sl@0
  4952
1)	Jason
sl@0
  4953
	1)	Removed fixed Rom address from MMU initialisation bootstrap code.
sl@0
  4954
sl@0
  4955
2)	Morgan
sl@0
  4956
	1)	Fix for defect EDN964446 to prevent WINS standby going re-entrant.
sl@0
  4957
sl@0
  4958
3)	Mark
sl@0
  4959
	1)	Implemented PC card driver for MISA.
sl@0
  4960
sl@0
  4961
4)	Dennis
sl@0
  4962
	1)	Applied Jason Robinson's patch for defect EDN061952 (cannot force a
sl@0
  4963
		cold reset by holding down both shift keys).
sl@0
  4964
	2)	Fixed problem EDN106813 (snowdrop pathological failure mode).
sl@0
  4965
sl@0
  4966
5)	Pete
sl@0
  4967
	1)	Added range checking to the Pc Card h/w chunk allocation functions
sl@0
  4968
		(derived versions of RPccdChunkBase::CreateL()) in MARM, MISA and MAWD
sl@0
  4969
		builds to prevent this allocating memory chunks beyond the physical
sl@0
  4970
		region assigned to the Pc Card memory.
sl@0
  4971
sl@0
  4972
sl@0
  4973
Version 1.02.164
sl@0
  4974
================
sl@0
  4975
(Made by Jonathan, 10th February 1999)
sl@0
  4976
sl@0
  4977
1)	Jonathan
sl@0
  4978
	1)	Disabled the crash debug monitor.
sl@0
  4979
	2)	Fixed problem EDN941329 "RThread::GetRamSizes() Crashes the Kernel" by
sl@0
  4980
		making RThread::GetRamSizes() return 0 for the heap size in combined
sl@0
  4981
		stack+heap chunks.
sl@0
  4982
	3)	Applied Dennis' fix for EDN157244 "Process creation can leak memory"
sl@0
  4983
		by promoting DPlatProcess::FirstThread() to DProcess::FirstThread()
sl@0
  4984
		and checking for case where OOM occurs after thread creation.
sl@0
  4985
sl@0
  4986
2)	Dennis
sl@0
  4987
	1)	Fixed problem EDN256123 (adding a thread to a dead process crashes the
sl@0
  4988
		kernel). Create empty process handles array after deleting the
sl@0
  4989
		original one, and when creating a new thread check that the owning
sl@0
  4990
		process is not dead.
sl@0
  4991
	2)	COM061952: Put in Jason Robinson's bootstrap fix for Windermere so
sl@0
  4992
		that cold resets (both shift keys down) should now work on Snowdrop.
sl@0
  4993
sl@0
  4994
3)	Morgan
sl@0
  4995
	1)	User::LoadLogicalDevice and User::LoadPhysicalDevice now supply
sl@0
  4996
		match-Uid's KLogicalDeviceDriverUid and KPhysicalDeviceDriverUid on
sl@0
  4997
		their calls to RLoader::LoadLibrary
sl@0
  4998
sl@0
  4999
4)	Pete
sl@0
  5000
	1)	Added the function TPBusCallBack::Clear() (exported from EPBUS.DLL) to
sl@0
  5001
		clear the source of a Peripheral Bus event (e.g. IREQ interrupt from
sl@0
  5002
		PC card). This is a 'generic' version of the temporary fix applied in
sl@0
  5003
		E32-162 for defect 'CF Card interrupts being missed on Snowdrop
sl@0
  5004
		machines'. Also, removed the functions
sl@0
  5005
		DPcCardController::EnableEvent() and DPcCardController::DisableEvent()
sl@0
  5006
		and replaced them with TPBusCallBack::Enable() and
sl@0
  5007
		TPBusCallBack::Disable() respectively.
sl@0
  5008
	2)	Added the functions DPcCardController::PwrUpProfile() and
sl@0
  5009
		DPcCardController::SetPwrUpProfile() to read/modify the power up
sl@0
  5010
		profile of the PC Card Controller (ie time reset applied, pause after
sl@0
  5011
		card becomes ready, timeout period when waiting for card to become
sl@0
  5012
		ready).  Removed the parameter 'aResetProfile' from
sl@0
  5013
		DPeriphBusController::PowerUpBus(), DPcCardController::PowerUpCard(),
sl@0
  5014
		and DPcCardController::RestoreCardPower() as this information is now
sl@0
  5015
		superfluous.
sl@0
  5016
	3) 	Increased synchronous busy timeout period on ARM ATA driver from 15mS
sl@0
  5017
		to 20mS to support large Lexar CF cards.
sl@0
  5018
	4) 	Enabled CF card rail (Vpc) monitoring in Snowdrop variant. Also
sl@0
  5019
		modified this so that checking is performed periodically as long as
sl@0
  5020
		the rail is on (in addition to once when first turned).
sl@0
  5021
	5) 	Change to ARM ATA driver so it checks for 'card not busy' if it times
sl@0
  5022
		out on a command. If the card isn't busy then it processes this as if
sl@0
  5023
		it had received a normal card interrupt.
sl@0
  5024
sl@0
  5025
sl@0
  5026
Version 1.02.163
sl@0
  5027
================
sl@0
  5028
(Made by Pete, 3rd February 1999)
sl@0
  5029
sl@0
  5030
1) Morgan
sl@0
  5031
	1)	Fixed a problem that was causing Dll entrypoints to be called
sl@0
  5032
		with EDllProcessAttach twice.
sl@0
  5033
sl@0
  5034
2) Jason
sl@0
  5035
	1)	Restored the RAM drive to MISA.
sl@0
  5036
sl@0
  5037
3) Dennis
sl@0
  5038
	1)	Fixed problem EDN591058 (remote thread write to end of chunk can
sl@0
  5039
		fail). Use sizeof(TDes8) instead of sizeof(TBuf8<1>)-1 for checking
sl@0
  5040
		to avoid alignment problems.
sl@0
  5041
	2)	Fixed problem EDN468376 (RHeap::Compress can leave heap
sl@0
  5042
		corrupted). In the situations where a free cell header would have
sl@0
  5043
		been chopped in half, an extra page of RAM is now left allocated to
sl@0
  5044
		the heap.
sl@0
  5045
	3)	Fixed problem EDN102617 (undefined instruction exception kills the
sl@0
  5046
		kernel). Modified undefined instruction handler to run Exc::Dispatch
sl@0
  5047
		in mode_und rather than mode_abt.
sl@0
  5048
	4)	Modified super page signature so that it includes the E32 version
sl@0
  5049
		number. This means that when a machine is reprogrammed to a
sl@0
  5050
		different version of E32, a cold reset will be forced when the
sl@0
  5051
		machine is first booted even if the user attempts to do a warm
sl@0
  5052
		reset.
sl@0
  5053
sl@0
  5054
4)	Jonathan
sl@0
  5055
	1)	Fixed problem EDN671244 (RDebug::ReadMemory can reset the machine)
sl@0
  5056
		by trapping calls from Debug::DebugFunction to Debug::ReadMemory and
sl@0
  5057
		Debug::WriteMemory.
sl@0
  5058
	2)	Fixed problem EDN471656 (underlying cause of which was RAM disk
sl@0
  5059
		size not being a multiple of page size) by applying Andrew/Pete's
sl@0
  5060
		modified fix.
sl@0
  5061
sl@0
  5062
5)	Pete
sl@0
  5063
	1)		Renamed current implementation of the class TLocalDrive as
sl@0
  5064
		TBusLocalDrive. Also, changed TBusLocalDrive::Caps() from the form:-
sl@0
  5065
			TInt Caps(TLocalDriveCaps &anInfo);
sl@0
  5066
		to
sl@0
  5067
			TInt Caps(TDes8& anInfo);
sl@0
  5068
		with the later taking a TLocalDriveCapsBuf.
sl@0
  5069
			Re-introduced a TLocalDrive class which is BC with the E32-114
sl@0
  5070
		version. The TLocalDrive class will be maintained to support disk
sl@0
  5071
		utilities which need a level of direct disk access. However,
sl@0
  5072
		TLocalDrive functions: Enlarge(), ReduceSize() and Format() now
sl@0
  5073
		return KErrNotSupported. TBusLocalDrive is intended to be used only
sl@0
  5074
		by F32 and there is no BC commitment with this. (Fixes EDN545357).
sl@0
  5075
	2)	Added EPBUS.MAP to MARM,MISA,MAWD release files.
sl@0
  5076
	3)	Modification to prevent CF card from being powered down during a
sl@0
  5077
		write operation when the machine is turned off. This involves a
sl@0
  5078
		change to DPcCardController::PowerStandby() so that it waits a short
sl@0
  5079
		period for any critical operation to complete. If still critical
sl@0
  5080
		after that period then it goes ahead and powers down the sockets,
sl@0
  5081
		but generates an emergency reset event so that clients can attempt to
sl@0
  5082
		recover. (Fixes EDN201114).
sl@0
  5083
	4)	Modification to IRAM media driver (EPOC Platform) so that when it is
sl@0
  5084
		first mounted, it takes its initial size directly from the super
sl@0
  5085
		page rather than the IRAM chunk size (which is in multiples of a
sl@0
  5086
		page size).
sl@0
  5087
sl@0
  5088
sl@0
  5089
Version 1.02.162
sl@0
  5090
================
sl@0
  5091
(Made by Morgan, 27th January 1999)
sl@0
  5092
sl@0
  5093
1) Dennis
sl@0
  5094
	1)	Fixed problem EDN153887 (using infra-red lowers RS232 RTS line) -
sl@0
  5095
		modified VAWDB1\VA_COM1.CPP to ensure that UART1 SIR enable bit is
sl@0
  5096
		always cleared.
sl@0
  5097
	2)	Store garbage values in K::SvThread and K::SvProcess on completion of
sl@0
  5098
		a kernel server function to guard against inadvertent use of these in
sl@0
  5099
		executive calls or DFCs.
sl@0
  5100
	3)	Fixed problem EDN741588. Modified S::ChunkCompressAll() in KS_CHK.CPP
sl@0
  5101
		so that it only attempts to compress the kernel heap if its critical
sl@0
  5102
		section is not blocked.
sl@0
  5103
	4)	Added extra command 'R' to crash debugger to print the values of all
sl@0
  5104
		processor registers across all processor modes at the point where the
sl@0
  5105
		debugger was entered.
sl@0
  5106
sl@0
  5107
2) Jason
sl@0
  5108
	1)	Restored link to MISA Idle code with-in the bootstrap.
sl@0
  5109
	2)	MISA DRAM initialisation made to match the documentation.
sl@0
  5110
sl@0
  5111
3) Jonathan
sl@0
  5112
	1)	Added missing "Distribution:" comments to PSRC\LI.PRJ and
sl@0
  5113
		KBAWD\LI.PRJ. Modified "mnt check" to check that all LI.PRJs contain
sl@0
  5114
		"Distribution:" comments.
sl@0
  5115
	2)	Added new "mnt distrib" verb for zipping up a copy of E32 source for
sl@0
  5116
		distribution to a named licensee. This verb is intended to be used
sl@0
  5117
		on a clean freshly-got copy of the source.
sl@0
  5118
		"mnt distrib acme" will produce \E32-acme.zip for acme.
sl@0
  5119
		"mnt distrib generic" will produce an unencumbered \E32-generic.zip.
sl@0
  5120
sl@0
  5121
4) Pete
sl@0
  5122
	1)	Fixed EDN590829 (CF Card interrupts being missed on snowdrop
sl@0
  5123
		machines).  Fixed by clearing the interrupt directly from the media
sl@0
  5124
		driver interrupt callback rather than relying on it to be cleared by
sl@0
  5125
		the PC Card controller before the callback.  This affects CF cards
sl@0
  5126
		which 'claim' to support pulse mode interrupts but actually seem to
sl@0
  5127
		implement level mode interrupts.
sl@0
  5128
sl@0
  5129
sl@0
  5130
Version 1.02.161
sl@0
  5131
================
sl@0
  5132
(Made by MarkD, 19 January 1999)
sl@0
  5133
sl@0
  5134
1) Dennis
sl@0
  5135
	1)	New Snowdrop digitiser and SPI code from Mark Ball.
sl@0
  5136
	2)	Battery low interrupt now disables UART and Codec interrupts on
sl@0
  5137
		EIGER to prevent watchdog death due to permanently asserted
sl@0
  5138
		interrupt from UART when power is removed abruptly.
sl@0
  5139
	3)	Reinstated __COMMS_MACHINE_CODED__ in VA_COM1.CPP for P2 and PD
sl@0
  5140
		variants, after fixing problem caused by hard-coded vtable offset.
sl@0
  5141
sl@0
  5142
2) Pete
sl@0
  5143
	1)	Fixed two problems with the ATA command timeout
sl@0
  5144
		implementation on the ARM ATA driver. (The timeout catches
sl@0
  5145
		situations where a request is made on the card which ought to be
sl@0
  5146
		signalled by an interrupt from the card when complete, but where the
sl@0
  5147
		card fails to generate an interrupt):-
sl@0
  5148
			a) Changed to use a ticklink rather than a
sl@0
  5149
		TMilliSecondCallBack to implement the timeout.
sl@0
  5150
			b) Fixed a problem where the timeout could be requeued
sl@0
  5151
		before the previous timeout had completed.
sl@0
  5152
	2) 	Increased synchronous busy timeout period on ARM ATA driver from
sl@0
  5153
		8mS to 15mS to support KingMax CF cards.
sl@0
  5154
	3) 	Modification to function DMediaDriver::RequestSetup()
sl@0
  5155
		so it now returns KErrInUse if the data member iReqStat isn't NULL.
sl@0
  5156
		This prevents the possibility of more than one request at a time on a
sl@0
  5157
		single media driver.
sl@0
  5158
	4) 	Stopped releasing WINS .BMP files (ie killed SWINS.REL).
sl@0
  5159
sl@0
  5160
3) Morgan
sl@0
  5161
	1)	Turned off emulation of the WINS backlight
sl@0
  5162
sl@0
  5163
sl@0
  5164
Version 1.02.160
sl@0
  5165
================
sl@0
  5166
(Made by Jason, 12th January 1999)
sl@0
  5167
sl@0
  5168
1) Mark
sl@0
  5169
	1) 	Fixed a problem with MISA such that the screen wasn't being turned
sl@0
  5170
		on.
sl@0
  5171
sl@0
  5172
2) Dennis
sl@0
  5173
	1)	Added kernel crash debugger to MARM and MAWD builds. When a kernel
sl@0
  5174
		fault occurs, the debugger will start instead of the machine just
sl@0
  5175
		restarting.  The crash debugger is enabled by compiling with
sl@0
  5176
		__ENABLE_DEBUG_MONITOR__ defined in M32STD.H.
sl@0
  5177
	2)	Got the C++ build going again. Compiling with
sl@0
  5178
		__MINIMUM_MACHINE_CODE__ defined in U32STD.H will result in a build
sl@0
  5179
		with all non-essential machine code removed. All tests pass on EIGER
sl@0
  5180
		in debug and release builds.
sl@0
  5181
	3)	Assembler-coded most TWind functions (KE_WIND.CPP).
sl@0
  5182
	4)	Made RPointerArray<T>::Count() and RPointerArray<T>::Find*() const.
sl@0
  5183
	5)	Added check in svProcessTerminate in KS_SVR.CPP so that calling
sl@0
  5184
		RProcess().Terminate() does not crash the kernel.
sl@0
  5185
sl@0
  5186
3) Jason
sl@0
  5187
	1 )	MISA five layer split done created \e32\kaisa\ removed \e32\keisa\.
sl@0
  5188
sl@0
  5189
4)	Morgan
sl@0
  5190
	1)	Added Dll::FileName() which will return the drive, path, and filename
sl@0
  5191
		of the library it is called from.  (Added UserSvr::DllFileName and
sl@0
  5192
		associated EXEC functions to support this).  Dll's that exist on the
sl@0
  5193
		ROM drive and have not been RLibrary::Load()ed will return only the
sl@0
  5194
		drive, (ie. "Z:").
sl@0
  5195
	2)	Fixed bugs in LoadLogicalDevice and LoadPhysicalDevice that was causing
sl@0
  5196
		unbalanced calls to the entrypoint of drivers (with EProcessDetatch and
sl@0
  5197
		EThreadAttach).
sl@0
  5198
	3)	Removed cleanup code from user side code RLoader::LoadLibrary.  Cleanup
sl@0
  5199
		of half loaded dll's is now performed loader side as it should be.
sl@0
  5200
	4)	Fixed a problem with switch-off-on-case-close.
sl@0
  5201
	5)	S::LoadLibraryExact now creates a handle into the Loader thread rather
sl@0
  5202
		than into the loading client.  DLibrary::LoadedL transfers handles and
sl@0
  5203
		created dependencies as required.  See Note F32 126.2.2
sl@0
  5204
sl@0
  5205
sl@0
  5206
Version 1.02.159
sl@0
  5207
================
sl@0
  5208
(Made by Pete, 21st December 1998)
sl@0
  5209
sl@0
  5210
THIS RELEASE OF E32 REQUIRES F32 125
sl@0
  5211
sl@0
  5212
1) Jonathan
sl@0
  5213
   1)	Added TLanguage enums { ELangTaiwanChinese, ELangHongKongChinese,
sl@0
  5214
		ELangPrcChinese, ELangJapanese, ELangThai }.
sl@0
  5215
sl@0
  5216
2) Morgan
sl@0
  5217
	1)	Removed old static power functions that are no longer used from
sl@0
  5218
		classes P, K, and ImpPsu.
sl@0
  5219
	2)	Removed TKeyboard::SwitchOn() and TXYInput::SwitchOn().  And for those
sl@0
  5220
		variants that required it, upgraded the keyboards and digitisers to be
sl@0
  5221
		first class power handlers.
sl@0
  5222
	3)	Changed KLogicalDeviceDriverUid for Unicode and Narrow builds because
sl@0
  5223
		the Ldd interface has changed.  This change stops old device drivers
sl@0
  5224
		loading on the new kernel.
sl@0
  5225
	4)	Uniquely identified each architecture of the kernel with a Uid.  This
sl@0
  5226
		change stops libraries that link to the kernel from loading on the
sl@0
  5227
		wrong architecture.
sl@0
  5228
sl@0
  5229
3) MarkD
sl@0
  5230
	1)	Performed the PC Card reorganisation for MISA.
sl@0
  5231
	2) 	Fixed a problem in KEISA\KE_INI where the requested video chunk size wasn't
sl@0
  5232
		rounded to page size.
sl@0
  5233
	3)	Added a serial driver for Brutus using serial ports 1 (VISABA\VI_COM1.CPP)
sl@0
  5234
		and 3 (VISABA\VI_COM2.CPP).
sl@0
  5235
sl@0
  5236
4) Alastair
sl@0
  5237
	1)	Fixed ER5 defect EDN381842 "WINS 'large' fascia problem under Win95/98".
sl@0
  5238
		If not running under Windows_NT SetupEmulatorPaths() function in upwins\up_path.cpp
sl@0
  5239
		takes account of the fact that Win32 GetModuleFileName() will report a full path
sl@0
  5240
		rather than a virtual path if the Emulator is running on a subst'ed drive from a
sl@0
  5241
		DOS prompt.
sl@0
  5242
sl@0
  5243
5) Petteri
sl@0
  5244
	1)	Changes to VARMCL variant to fully enable the PC Card Controller. All PC Card tests
sl@0
  5245
			now pass on this variant.
sl@0
  5246
sl@0
  5247
6) Dennis
sl@0
  5248
	1)	Merged in more Amazon changes to Windermere port.
sl@0
  5249
	2)	Modified Plat::ScreenInfo for Windermere to return the address of the screen RAM
sl@0
  5250
		bitmap rather than the palette.
sl@0
  5251
	3)	Fixed a bug in the text window server introduced in 158 which stops pointer drag
sl@0
  5252
		from working.
sl@0
  5253
sl@0
  5254
7) Pete
sl@0
  5255
	1)		Various changes to facilitates a better partitiioning of
sl@0
  5256
		functions between EKERN and EPBUS and to allow ROMS to be built without an EPBUS
sl@0
  5257
		component. Functions which previously called either TPBusCallBack or
sl@0
  5258
		Kern::PBusController() in the indepedant layer have now been moved to the Asic
sl@0
  5259
		layer:-
sl@0
  5260
			Modification of class DPrimaryMedia into an Indepedent layer class
sl@0
  5261
		DPrimaryMediaBase and a Asic layer class DPrimaryMedia.
sl@0
  5262
			Modification of class DMediaChangeNotifier into an Indepedent layer class
sl@0
  5263
		DMediaChangeNotifierBase and a Asic layer class DPrimaryMedia.
sl@0
  5264
			Functions K::PowerUpPeriphBus(), K::BusDevPowerStatus() are now platform
sl@0
  5265
		dependent (hence moved to class P). Also creation of the functions P::ForceMediaRemount(),
sl@0
  5266
		ImpHal::TotalSupportedBuses() and ImpHal::TotalSupportedDrives().
sl@0
  5267
sl@0
  5268
Version 1.02.158
sl@0
  5269
================
sl@0
  5270
(Made by Pete, 7th December 1998)
sl@0
  5271
sl@0
  5272
1) Morgan
sl@0
  5273
	1)	Bug fix for MARM and MAWD Emergency power down. (Screen not powered up
sl@0
  5274
		after emergency power down).  Effects KEAWD\KE_POWER.CPP and
sl@0
  5275
		KAEIG\KA_POWER.CPP
sl@0
  5276
	2)	Pointer-switch-on now behaves as it did in E32(156).
sl@0
  5277
	3)	Added MISA power model.
sl@0
  5278
sl@0
  5279
2) Pete
sl@0
  5280
	1) 		Split out the PC Card Controller from the kernel into a new
sl@0
  5281
		component - EPBUS.DLL. The independant layer code, previously in \KSRC,
sl@0
  5282
		files KS_PCCD.CPP and KS_PSOCK.CPP has been moved into \PSRC.
sl@0
  5283
		The architecture layer code files have been renamed from K?_PCCD.CPP
sl@0
  5284
		to P?_PCCD.CPP (e.g. \KAEIG\KA_PCCD.CPP renamed PA_PCCD.CPP).
sl@0
  5285
			As far as the interface with the kernel is conserned, EPBUS.DLL
sl@0
  5286
		is now a 'generic' Peripheral Bus Controller rather than specifically a
sl@0
  5287
		PC Card Controller. Machines which have a MultiMedia card interface or
sl@0
  5288
		a USB interface rather than a PC Card interface will have a Peripheral
sl@0
  5289
		Bus Controller supplying services for these interfaces instead. This has
sl@0
  5290
		involved quite extensive modifications to the classes which previously
sl@0
  5291
		implemented the PC Card media change (DMediaChange) and supply voltage
sl@0
  5292
		(TPcCardVcc) since large parts of these implementations are common for
sl@0
  5293
		any Peripheral Bus Controller.
sl@0
  5294
			The classes associated with the 'generic' Peripheral Bus Controller
sl@0
  5295
		are defined in P32STD.H. Of these functions, the code for those asociated with
sl@0
  5296
		media change and supply voltage classes is in PS_PSU.CPP and the code for the
sl@0
  5297
		Controller interface itself is in PS_PBUS.CPP. The independant layer code for
sl@0
  5298
		the PC Card Controller implementation in now in PS_PCCD.CPP and PS_PSOCK.CPP
sl@0
  5299
		(defined in P32PCCD.H).
sl@0
  5300
			The variant layer code for the Peripheral Bus Controller is still supplied
sl@0
  5301
		by the variant DLL. However, the bulk of the PC Card Controller functions have
sl@0
  5302
		been removed from the main Custom class and moved to a TPcCardControllerInterface
sl@0
  5303
		class (defined in V32PCCD.H). The custom now has a single function:-
sl@0
  5304
			TAny* Custom::CreatePeriphBusControllerInterface()
sl@0
  5305
		which returns a pointer to this class. This will allow variant layer code for other
sl@0
  5306
		types of Peripheral Bus Controller to be supplied by the variant DLL without bloating
sl@0
  5307
		the basic Custom class with these functions.
sl@0
  5308
			Removed the majority of the exported functions of the class UserPcCardController
sl@0
  5309
		(all apart from PwrDown() and NotifyChange()) from EUSER.DLL. Also, constructors for the
sl@0
  5310
		classes TPccdChnk, TPccdConfigInfo, TPccdRegionInfo and TPccdType. The DEF file entries for
sl@0
  5311
		these functions have been replaced with NotSupported entries.
sl@0
  5312
			Similarly, fixed up the MARM/WINS EKERN DEF files to replace all the entries for
sl@0
  5313
		exported PC Card Controller functions with NotSupported entries.
sl@0
  5314
		[Note: No Pc Card reorganisation for MISA.]
sl@0
  5315
	2)		The class TPccdCallback has become TPBusCallBack. A single callback can now be
sl@0
  5316
		registed for mutiple events, with the event now specified by a mask rather than an enum.
sl@0
  5317
		This has simplified the implemenation of the classes DPrimaryMedia and DMediaChangeNotifier.
sl@0
  5318
	3) 		Modified the variant function PcCardMemPhysicalAddress() to take an extra
sl@0
  5319
		parameter - 'TPccdMemType'. Prior to this, the variant just returned
sl@0
  5320
		the physical address per socket, with the kernel adding an offset
sl@0
  5321
		dependant on the memory type. Unfortunatley, the PS7111 has a
sl@0
  5322
		different PC Card memory offset scheme to that used in the PS7110.
sl@0
  5323
		Hence the need for it to be calculated in the variant (since 7111 and
sl@0
  5324
		7110 share the same kernel).
sl@0
  5325
sl@0
  5326
sl@0
  5327
Version 1.02.157
sl@0
  5328
================
sl@0
  5329
(Made by Dennis, 1st December 1998)
sl@0
  5330
sl@0
  5331
NOTE:	Must be used with F32 version.
sl@0
  5332
		No ISA or Windermere binaries.
sl@0
  5333
		Outstanding problem with machine-code serial PDDs (non-machine code
sl@0
  5334
		version has been released) and with Windermere power-off.
sl@0
  5335
		Bldmake-generated batch files are no longer released as source so
sl@0
  5336
		bldmake <all> must be run to create the batch files before any building
sl@0
  5337
		can be done.
sl@0
  5338
sl@0
  5339
1) Morgan
sl@0
  5340
	1)	Added uid-type-safety overloads to RLibrary::Load() and
sl@0
  5341
		RProcess::Create() to only load Dlls and Exes that match
sl@0
  5342
		the supplied Uids.
sl@0
  5343
			eg
sl@0
  5344
		lib.Load(_L("\\system\\plugins\\PLUGIN.DLL");
sl@0
  5345
			should change to
sl@0
  5346
		lib.Load(_L("\\system\plugins\\PLUGIN.DLL"),
sl@0
  5347
				 TUidType(KNullUid, KPluginUid, KNullUid);
sl@0
  5348
			where KPluginUid is either KPluginUid8 or KPluginUid16.
sl@0
  5349
	2)	SARMBE-RIP
sl@0
  5350
	3)	Added a new power management framework in INC\K32POWER.H.  Here is a
sl@0
  5351
		quick overview:
sl@0
  5352
		A DPowerHandler performs power related functions previously resident
sl@0
  5353
		in DLogicalChannel, and also provides mechanisms for communicating
sl@0
  5354
		with the machine's power model.  A DPowerModel, (DEigerPowerModel on
sl@0
  5355
		the Series5, DWinsPowerModel on WINS), logs all DPowerHandlers in
sl@0
  5356
		the system and their power requirements.  The power model controls
sl@0
  5357
		power up and power down behaviour of all shared power units.  This
sl@0
  5358
		allows it to dictate the machine's power management policy.  (See
sl@0
  5359
		document POWER001 in the Base database for more grusome details).
sl@0
  5360
		These changes break binary compatability for DLogicalChannels, and
sl@0
  5361
		existing device drivers that require power management.
sl@0
  5362
sl@0
  5363
		* Here is some guidance on how to update existing
sl@0
  5364
		  DLogicalChannels to use E32(157):
sl@0
  5365
			// 1. given an old Ldd "Tomfoolery":
sl@0
  5366
			class DTomfooleryLdd : public DLogicalChannel
sl@0
  5367
				{
sl@0
  5368
			public:
sl@0
  5369
				~DTomfooleryLdd();
sl@0
  5370
				[...]
sl@0
  5371
				// override DLogicalChannel pure virtual functions
sl@0
  5372
				virtual void DoPowerUp();
sl@0
  5373
				virtual void DPowerDown();
sl@0
  5374
				virtual void DoEmergencyPowerDown();
sl@0
  5375
				}
sl@0
  5376
sl@0
  5377
			// 2. modify the class declaration to insert a power handler
sl@0
  5378
			class DTomfooleryPowerHandler;
sl@0
  5379
			class DTomfooleryLdd : public DLogicalChannel
sl@0
  5380
				{
sl@0
  5381
			public:
sl@0
  5382
				~DTomfooleryLdd();
sl@0
  5383
				[...]
sl@0
  5384
				// these power functions no longer need to be virtual
sl@0
  5385
				// but you may wish to keep them virtual to maintain
sl@0
  5386
				// Ldd-Pdd compatability.
sl@0
  5387
				virtual void DoPowerUp();
sl@0
  5388
				virtual void DoPowerDown();
sl@0
  5389
				virtual void DoEmergencyPowerDown();
sl@0
  5390
			public:
sl@0
  5391
				// add power handling to this channel
sl@0
  5392
				DTomfooleryPowerHandler *iPowerHandler;
sl@0
  5393
				}
sl@0
  5394
sl@0
  5395
			// 3. add a new power handler to the TOMFOOL.CPP file
sl@0
  5396
			class DTomfooleryPowerHandler : public DPowerHandler
sl@0
  5397
				{
sl@0
  5398
			public:
sl@0
  5399
				DTomfooleryPowerHandler(DTomfooleryLdd *aLdd) : iLdd(aLdd) {}
sl@0
  5400
				virtual TInt DoPowerOn() { return iLdd->DoPowerUp; }
sl@0
  5401
				virtual void DoPowerStandby() { iLdd->DoPowerDown(); }
sl@0
  5402
				virtual void DoPowerRestart() { iLdd->DoPowerDown(); }
sl@0
  5403
				virtual void DoPowerEmergencyStandby() { iLdd->DoEmergencyStandby(); }
sl@0
  5404
			public:
sl@0
  5405
				DTomfooleryLdd *aLdd;
sl@0
  5406
				}
sl@0
  5407
sl@0
  5408
			// 4. change DTomfooleryLdd::DoCreateL and destructor
sl@0
  5409
			void DTomfooleryLdd::DoCreateL(...)
sl@0
  5410
				{
sl@0
  5411
				[...]
sl@0
  5412
				iPowerHandler=new (ELeave) DTomfooleryPowerHandler(this);
sl@0
  5413
				// register the power handler so we get power events
sl@0
  5414
				User::LeaveIfError(Power::AddPowerHandler(iPowerHandler));
sl@0
  5415
				[...]
sl@0
  5416
				// ask the PowerManager to power us up
sl@0
  5417
				iPowerHandler->PowerOn();
sl@0
  5418
				}
sl@0
  5419
			DTomfooleryLdd::~DTomfooleryLdd()
sl@0
  5420
				{
sl@0
  5421
				[...]
sl@0
  5422
				// ask the PowerManager to power us down
sl@0
  5423
				iPowerHandler->PowerStandby();
sl@0
  5424
				// remove the power handler from the system
sl@0
  5425
				Power::RemovePowerHandler(iPowerHandler);
sl@0
  5426
				delete iPowerHandler;
sl@0
  5427
				}
sl@0
  5428
sl@0
  5429
			// 5. Finally, redirect calls to DLogicalChannel::PowerGood()
sl@0
  5430
			// and SetPowerConsumption() through the new iPowerHandler and
sl@0
  5431
			// remove all references of RegisterEmergencyPowerDownHandlerL()
sl@0
  5432
sl@0
  5433
		It should also be noted that DLogicalChannel::PowerOn() and
sl@0
  5434
		DLogicalChannel::PowerDown() are no longer called called during
sl@0
  5435
		S::CreateLogicalChannel() and DLogicalChannel::Close().
sl@0
  5436
	4)	Moved WINS, MAWD and MARM over to the new power models.  Changed
sl@0
  5437
		DPcCardCntrl, and DLddSound to use the new facilities.
sl@0
  5438
		Also Altered DComm, DChannelComm, and DEigerComm.
sl@0
  5439
		[Note: Models not added for MMAD, MISA.]
sl@0
  5440
	5)	Removed duplicate implementations of P::PowerOff, P::PowerOn,
sl@0
  5441
		P::Standby(), and P::CheckSupplies in WINS.
sl@0
  5442
sl@0
  5443
2) Jo
sl@0
  5444
	1)	Fixed EPOC software problem SW1-266 "TLocale isn't updated in
sl@0
  5445
		WINC/WINS when the time zone is changed"
sl@0
  5446
		Added a line to KPWINS\KP_INI to update locale data on EStartupCold
sl@0
  5447
		when the time zone on the PC is changed.
sl@0
  5448
sl@0
  5449
3) Jane
sl@0
  5450
	1)  Split kearm directory into kcarm for cpu only code and kaeig for
sl@0
  5451
		asic code.
sl@0
  5452
		Made the kcarm code generic for any arm processor, so that all arm
sl@0
  5453
		based ports can eventually share it.
sl@0
  5454
		Added a set of __CPU_ #defines for "cpu properties" such as whether
sl@0
  5455
		cache is write-back or write-through, whether there is a write
sl@0
  5456
		buffer, and so forth. Used these to make the kcarm directory
sl@0
  5457
		generic.
sl@0
  5458
		These properties are set up in u32std.h from the build #define.
sl@0
  5459
		Moved the MAD port to the new scheme - it shares the kcarm directory
sl@0
  5460
		and has its own asic dependent directory, kamad.
sl@0
  5461
		The MARM and MAD ports have new .MMP files for ekern (ekernx),
sl@0
  5462
		ekdata (ekdatx) and ke_exe (kc_exe).
sl@0
  5463
		I am particularly pleased with the new TMadPanic - it made it all
sl@0
  5464
		worthwhile...
sl@0
  5465
sl@0
  5466
4)	Alastair
sl@0
  5467
	1)	Changed PP::TheMachineName to "Epoc".  Take note SDK people, this
sl@0
  5468
		means the default .INI file loaded from the emulator's data
sl@0
  5469
		directory will be EPOC.INI rather than SYSTEM.INI.  I've also
sl@0
  5470
		removed the facility to specify the fascia bitmap within the
sl@0
  5471
		<machine>.ini file - instead the emulator will expect the fascia
sl@0
  5472
		bitmap to have the same base name as it's corresponding ini file -
sl@0
  5473
		so if the emulator is invoked with the -Mgeofox1 switch it will try
sl@0
  5474
		to load geofox1.bmp.  By default the emulator will try to load
sl@0
  5475
		epoc.bmp.  I've updated E32's SWINS release component accordingly.
sl@0
  5476
	2)	Updated EKERN.MMP and EUSER.MMP to take advantage of MAKMAKE's new
sl@0
  5477
		FIRSTOBJECT keyword (E32TOOLP 097).  Merged Jane's new EKERNX.MMP
sl@0
  5478
		into EKERN.MMP, and old KE_EXE.MMP into Jane's new KC_EXE.MMP
sl@0
  5479
		following these changes.
sl@0
  5480
	3)	Exporting the following functions from ekern under WINS/WINC by
sl@0
  5481
		ordinal rather than name
sl@0
  5482
			EXPORTS E32KernelDispatchAddress @279 NONAME
sl@0
  5483
			EXPORTS _E32Initialise @280 NONAME
sl@0
  5484
			EXPORTS _E32DeInitialise @281 NONAME
sl@0
  5485
			EXPORTS _E32ExitProcess @282 NONAME
sl@0
  5486
sl@0
  5487
		Euser.dll has been changed to look up these functions by ordinal.
sl@0
  5488
		The latter 3 functions were previously only exported under WINC, and
sl@0
  5489
		do nothing and are not called under WINS.  The hack in MAKMAKE to
sl@0
  5490
		handle the linking of these functions by ordinal has been removed
sl@0
  5491
		(E32TOOLP O97).
sl@0
  5492
	4)	Removed Plat::EnterCS() and Plat::LeaveCS() from ESDRV.CPP and
sl@0
  5493
		ECDRV.CPP
sl@0
  5494
		- these fixes should no longer be required to avoid deadlock since a
sl@0
  5495
		generic fix has been applied to E32 version 155.
sl@0
  5496
	5)	Added 2 new exports to EUSER.DLL in E32WINS.H
sl@0
  5497
			IMPORT_C void SetEmulatorColorDepth(TUint& aDepths);
sl@0
  5498
			IMPORT_C void EmulatorColorDepth(TUint& aDepths);
sl@0
  5499
		SetEmulatorColorDepth() is called by EKERN.DLL which will set colour
sl@0
  5500
		depths supported by the emulator according to the specification of
sl@0
  5501
		the ColorDepth keyword in the System.ini file.  Syntax is
sl@0
  5502
			ColorDepth {Gray2} {Gray4} {Gray16} {Color16} {Color256}
sl@0
  5503
					   {Color4K} {Color16M}
sl@0
  5504
		If the ColorDepth keyword is not specified supported colour depths
sl@0
  5505
		will default to Gray2,Gray4 and Gray16 for backward compatibility.
sl@0
  5506
		Users of EmulatorColorDepth() will need to pass a bitmap reference
sl@0
  5507
		to the function which will be set based on the following constants
sl@0
  5508
		defined in E32WINS.H
sl@0
  5509
			const TUint KEmulGray2=		0x00000001;
sl@0
  5510
			const TUint KEmulGray4=		0x00000002;
sl@0
  5511
			const TUint KEmulGray16=	0x00000004;
sl@0
  5512
			const TUint KEmulGray256=	0x00000008;
sl@0
  5513
			const TUint KEmulColor16=	0x00000010;
sl@0
  5514
			const TUint KEmulColor256=	0x00000020;
sl@0
  5515
			const TUint KEmulColor4K=	0x00000040;
sl@0
  5516
			const TUint KEmulColor64K=	0x00000080;
sl@0
  5517
			const TUint KEmulColor16M=	0x00000100;
sl@0
  5518
	6)	Changed RThread::Panic() so that in WINS DEBUG builds it calls a new
sl@0
  5519
		function, ThreadPanicBreakpoint2, in upwins\up_debug.cpp, with
sl@0
  5520
		information about the thread being panicked and also the name of the
sl@0
  5521
		killing thread.  This fixes Epoc S/W problem 356 "The __DEBUGGER
sl@0
  5522
		macro that catches panics should be un-commented out."  To get the
sl@0
  5523
		Windows ID of the panicking thread in RThread::Panic() I changed the
sl@0
  5524
		code which keeps a list of Epoc threads in EUSER.DLL so that it
sl@0
  5525
		contains the Epoc thread ID as well as the Windows one and added a
sl@0
  5526
		function to upwins\up_thrd.cpp, TUint32 WinsEpocThreadWinID(TUint
sl@0
  5527
		aEpocID), which returns the Windows ID corresponding to the Epoc ID
sl@0
  5528
		passed in as a parameter.
sl@0
  5529
	7)	Split header inc\e32wins.h into 2 headers, e32wins.h and u32wins.h.
sl@0
  5530
		U32wins.h contains euser functions that should not need to be used
sl@0
  5531
		by any component except E32.
sl@0
  5532
	8)	Removed all the logical and physical device driver deffiles from
sl@0
  5533
		\E32\INC, since makmake always ensures the right function is
sl@0
  5534
		exported at ordinal one for LDD and PDD targettypes.
sl@0
  5535
	9)	Changed the Emulator's path scheme.  Now, if a directory called
sl@0
  5536
		'Data\' is found in the same directory as the executable which
sl@0
  5537
		started the Emulator, the Emulator's data directory will be
sl@0
  5538
		considered to be this directory and expected to contain .INI files
sl@0
  5539
		and any corresponding bitmaps.  Also, directories 'C\' and 'Z\' in
sl@0
  5540
		the executable's directory will be mapped to the emulated C: and Z:
sl@0
  5541
		drives.  If a 'Data\' directory is not found in the executable's
sl@0
  5542
		directory, the old scheme will be assumed where the Emulator's data
sl@0
  5543
		directory is '\Epoc32\Data\' and the emulated C: drive is mapped to
sl@0
  5544
		'Epoc32\WINS\C\'.
sl@0
  5545
	10)	Fixed Epoc S/W problem 466
sl@0
  5546
			"Plat: 46 fault when running EXEs from a different directory".
sl@0
  5547
		The emulator now looks in the directory containing the emulated Z
sl@0
  5548
		directory for filenames specified without a drive, rather than in
sl@0
  5549
		the directory containing the executable that started up the
sl@0
  5550
		emulator; so if Z is mapped to \Epoc32\Release\WINS\DEB\Z\, the
sl@0
  5551
		emulator will look in \Epoc32\Release\WINS\DEB\ for these files.
sl@0
  5552
		Note that mappings for emulated C and Z drives will be overwritten
sl@0
  5553
		if specified in the environment, but can safely be set in the
sl@0
  5554
		EPOC.INI file using the _EPOC_DRIVE_? keyword.  Any attempted
sl@0
  5555
		mapping for the Z drive which does not specify a directory ending in
sl@0
  5556
		\Z or \Z\ will fail.
sl@0
  5557
	11)	Removed references to all bldmake-generated batch files from LI.PRJ
sl@0
  5558
		files containing them, and updated MNT.BAT so that directories \BWINC,
sl@0
  5559
		\BVC4 and \BVC4WINC are not archived (they contain nothing but
sl@0
  5560
		bldmake-generated files anyway).  This means that to build E32 from
sl@0
  5561
		source bldmake must always be called first to generate the batch files,
sl@0
  5562
		and ensures these batch files are more likely to be up-to-date.
sl@0
  5563
sl@0
  5564
5)	Jonathan
sl@0
  5565
	1)	Retired KEARM directory following Jane's changes. The MAWD and MISA
sl@0
  5566
		builds depended on some files in KEARM, so these files were copied:
sl@0
  5567
			KEISA:	ke_edbg.cpp, ke_edbg.h, ke_dma.cpp
sl@0
  5568
			KEAWD:	ke_edbg.cpp, ke_edbg.h, ke_dma.cpp,
sl@0
  5569
					ke_exc.cpp, ke_thrd.cpp,
sl@0
  5570
					ke_exe.cpp, ke_kdata.cpp
sl@0
  5571
	2)	Updated MNT.BAT to reflect all of the above directory changes.
sl@0
  5572
	3)	Hacked a workaround to MSVC++ 5.0 (sp3) assembler bug, where MSVC
sl@0
  5573
		incorrectly fixes up conditional jumps when the destination is a C++
sl@0
  5574
		function. Files affected: upwins\up_realx.cpp, upwins\up_i64.cpp.
sl@0
  5575
sl@0
  5576
6)	Dennis
sl@0
  5577
	1)	Fixed bug in serial comms driver relating to zero-length reads. If
sl@0
  5578
		the receive buffer was empty when a zero-length read was requested,
sl@0
  5579
		the driver would enter an inconsistent state and the request would
sl@0
  5580
		not be completed unless a terminating character was specified.
sl@0
  5581
sl@0
  5582
7) 	Pete
sl@0
  5583
	1)		Added the class RBusDevCom which is intended as a replacement
sl@0
  5584
		for RDevCom (although the latter is still supported). This new class
sl@0
  5585
		allows the support of serial devices such as PC Card modems which
sl@0
  5586
		require the asynchronous power up of the card. The changes included
sl@0
  5587
		in E32-120 allowed these types of cards to be initially powered up
sl@0
  5588
		just before a channel was opened on the device. They didn't however
sl@0
  5589
		support the repowering of an open channel (which again needs to be
sl@0
  5590
		asynchronous) after the machine has been turned off. The RBusDevCom
sl@0
  5591
		now provides the means to support for this scenario. If a channel is
sl@0
  5592
		opened on a serial device which requires asynchronous powering then
sl@0
  5593
		all DoControl() and DoRequest() calls are preceded by a fast exec
sl@0
  5594
		call to check whether the device needs repowering. (Channels open on
sl@0
  5595
		standard serial devices don't suffer the penatly of this
sl@0
  5596
		exec. call).
sl@0
  5597
			Added the class RBusLogicalChannel (RBusDevCom is derived from
sl@0
  5598
		this class) which is intended as a replacement for RLogicalChannel -
sl@0
  5599
		to be used for devices which may need to be asynchronously powered
sl@0
  5600
		either before opening or while the channel is use. RLogicalChannel
sl@0
  5601
		would continue to be the choice for classes of devices which don't
sl@0
  5602
		require this behaviour.
sl@0
  5603
			Modifications to the TLocalDrive class. This now makes use of the
sl@0
  5604
		MBusDev class - created as part of the implementation of the
sl@0
  5605
		RBusLogicalChannel class.
sl@0
  5606
			Fixed a problem with the TLocalDrive class CheckMount() function
sl@0
  5607
		so that it can't lock the file system doing continuous re-mounts
sl@0
  5608
		when a CF card is inserted that never asserts its RDY signal.
sl@0
  5609
	2)		Added a member 'iHiddenSectors' to TLocalDriveCaps
sl@0
  5610
		to report the number of sectors on a media device reserved before
sl@0
  5611
		the start of the first partition.
sl@0
  5612
	3)		Added a new version of the
sl@0
  5613
		DPcCardCntrl::RegisterEvent() function taking an extra parameter
sl@0
  5614
		'TUint aFlag'. This allows the better support of PC cards which use
sl@0
  5615
		level mode interrupt requests rather than pulse mode. The flag is
sl@0
  5616
		set when level mode is required meaning the PC Card Controller can
sl@0
  5617
		avoid failing to clear the interrupt in the PC Card Controller
sl@0
  5618
		hardware.
sl@0
  5619
	4)		Merged various changes to the MAWD architecture layer, the MAWD
sl@0
  5620
		B1 variant layer and the MARM P2 variant layer including a new SPI
sl@0
  5621
		implementation for MAWD, support for ETNA Rev3 etc.
sl@0
  5622
			Added a function Plat::WaitAtLeastAMicroSecond() for use by the
sl@0
  5623
		ATA media driver.
sl@0
  5624
sl@0
  5625
sl@0
  5626
Version 1.02.156
sl@0
  5627
================
sl@0
  5628
(Made by Jonathan, 27th October 1998)
sl@0
  5629
sl@0
  5630
N.B. WINS DEB/UDEB will only work with F32 122 OR LATER.
sl@0
  5631
sl@0
  5632
1) Dennis
sl@0
  5633
	1)	Reintroduced debug/release interoperability for WINS. Removed
sl@0
  5634
		CBase::iName and SObjectIxArray::iPadding. Deleted all debug DEF
sl@0
  5635
		files.
sl@0
  5636
	2)	Merged in Andrew Thoelke's E32 proposals:
sl@0
  5637
		i)	SW1-77 Compiler-generated constant descriptors.
sl@0
  5638
		ii)	SW1-14 C++ range-checking template wrapper for fixed arrays.
sl@0
  5639
		iii) SW1-87 CleanupClosePushL and related cleanup-stack things.
sl@0
  5640
	3)	Globally disabled warning about not inlining functions in MSVC++ 5.0.
sl@0
  5641
sl@0
  5642
2) Jonathan
sl@0
  5643
	1)	Fixed version bug in mnt getbld.
sl@0
  5644
	2)	Fixed pvcs paramater error for bsarm and bsarmbe dirs in mnt *lock.
sl@0
  5645
sl@0
  5646
3)	Alastair
sl@0
  5647
		1) Added the following Unicode Uid values
sl@0
  5648
			KLogicalDeviceDriverUidValue	0x100039cf
sl@0
  5649
			KPhysicalDeviceDriverUidValue	0x100039d0
sl@0
  5650
			KKernelUidValue					0x100039e2
sl@0
  5651
			KUserDllUidValue				0x100039e5
sl@0
  5652
			KLocaleDllUidValue				0x100039e6
sl@0
  5653
			KConsoleDllUidValue				0x100039e7
sl@0
  5654
			KDisplayDllUidValue				0x100039eb
sl@0
  5655
			KCustomDllUidValue				0x100039e8
sl@0
  5656
			KKeyboardDllUidValue			0x100039e9
sl@0
  5657
			KKeyboardDataUidValue			0x100039e0
sl@0
  5658
			KKeyboardTranUidValue			0x100039e1
sl@0
  5659
			KXYInputDllUidValue				0x100039ea
sl@0
  5660
sl@0
  5661
		N.B. some of these values are defined in the file E32UID.IBY (from
sl@0
  5662
		\e32\kbarm\,\e32\kbisa\, etc).  If this file is to be used in creating
sl@0
  5663
		UNICODE roms then the preprocessing stage prior to rombuilding should
sl@0
  5664
		define the _UNICODE macro.
sl@0
  5665
		2)	Updated .MMP files in accordance with the UNICODE plan.
sl@0
  5666
		3)	Changed MNT.BAT to get E32TOOLP version 096.
sl@0
  5667
sl@0
  5668
sl@0
  5669
Version 1.02.155
sl@0
  5670
================
sl@0
  5671
(Made by Morgan, 20th October 1998)
sl@0
  5672
sl@0
  5673
NB: REQUIRES F32 VERSION 121 OR ABOVE, WSERV VERSION 100 OR ABOVE
sl@0
  5674
sl@0
  5675
0)	Jonathan
sl@0
  5676
	1)	Added Distribution lines to the LI.PRJ files in all subdirectories to
sl@0
  5677
		identify licensee-specific source.
sl@0
  5678
sl@0
  5679
1)	Graham Asher, 13/10/98
sl@0
  5680
	These changes affect the Unicode builds only. They make it possible to use
sl@0
  5681
	several different sets of collation rules in the same locale, which is
sl@0
  5682
	needed for East Asian locales; and they make it easier to write collation
sl@0
  5683
	rules for these and other locales.
sl@0
  5684
sl@0
  5685
	\inc\collate.h
sl@0
  5686
	introduced TCollationRepertoire - stores a series of rule sets so that one
sl@0
  5687
	can choose, say, between sorting on stroke count and radical, or JIS code,
sl@0
  5688
	without changing locale.  added new collation operators to make it easier
sl@0
  5689
	to write complex collation rules reorganised TCollate constructors to make
sl@0
  5690
	them easier for Mem functions to call
sl@0
  5691
sl@0
  5692
	\inc\e32des16.h
sl@0
  5693
	added new TDesC16::CompareC overloads to allow selection of rule set
sl@0
  5694
sl@0
  5695
	\inc\e32panic.h
sl@0
  5696
	added EBadCollationRulesIndex panic number
sl@0
  5697
sl@0
  5698
	\inc\e32std,h
sl@0
  5699
	added Mem functions to enumerate collation rule sets and select them when
sl@0
  5700
	comparing; these are new CompareC overloads
sl@0
  5701
sl@0
  5702
	\inc\u32std.h
sl@0
  5703
	changed LCharSet to include a collation repertoire (instead of just a ptr
sl@0
  5704
	to the rules) and a collation attribute repertoire
sl@0
  5705
	(TUnicodeAttributeRepertoire) for storing locale-specific character
sl@0
  5706
	attribute tables like radical and stroke count
sl@0
  5707
sl@0
  5708
	\inc\unicode.h
sl@0
  5709
	added the new structures used by TCollationRepertoire, and added
sl@0
  5710
	TUnicodeAttributeRepertoire and its constituents; added
sl@0
  5711
	TUnicode::GetAttribute, so that collation can use locale-specific
sl@0
  5712
	attributes, and abolished TUnicode::TranslateFromUnicode and
sl@0
  5713
	TUnicode::TranslateToUnicode
sl@0
  5714
sl@0
  5715
	\lsrc\ls_unic.cpp
sl@0
  5716
	now contains collation repertoire ptr, not rules ptr, and an attribute
sl@0
  5717
	repertoire ptr for any attributes supported by the locale
sl@0
  5718
sl@0
  5719
	\ucdt\uc_des16.cpp
sl@0
  5720
	implementation of new TDesC16::CompareC overloads
sl@0
  5721
sl@0
  5722
	\ucdt\uc_exec.cpp
sl@0
  5723
	TChar::TranslateFromUnicode and TChar::TranslateToUnicode now do nothing;
sl@0
  5724
	have not abolished them like the TUnicode functions of the same names
sl@0
  5725
	because of binary compatibility
sl@0
  5726
sl@0
  5727
	\ucdt\uc_func.cpp
sl@0
  5728
	added new Mem functions to enumerate and retrieve collation rules; and
sl@0
  5729
	implemented new Mem::CompareC overloads
sl@0
  5730
sl@0
  5731
	\unicode\collate.cpp
sl@0
  5732
	reorganised constructor arguments; implemented new operators including
sl@0
  5733
	those that retrieve locale-specific attributes; increased subkey size to
sl@0
  5734
	16 bits
sl@0
  5735
sl@0
  5736
	\unicode\unicode.cpp
sl@0
  5737
	abolished TUnicode::TranslateFromUnicode and TUnicode::TranslateToUnicode
sl@0
  5738
sl@0
  5739
2)	Dennis
sl@0
  5740
	1)	Machine coded most of the TEiger functions because things like keyboard
sl@0
  5741
		scanning were taking a ridiculously long time (nearly 500us).
sl@0
  5742
	2)	Fixed bug SW1-256 - TInt64::TInt64(TReal) won't compile under VC5.
sl@0
  5743
	3)	Fixed bug SW1-738 - Scheduler bug may leave processes unprotected.
sl@0
  5744
	4)	Added extra function calls to serial comms PDD VA_COM1.CPP to cope
sl@0
  5745
		with new chained interrupts.
sl@0
  5746
sl@0
  5747
3)	Alastair
sl@0
  5748
	1)	Changed Emulator title bar to read "EPOC Emulator".
sl@0
  5749
	2)	Changed \e32\dpwins\d_medint.cpp and \e32\kpwins\kp_pccd.cpp
sl@0
  5750
		to use Win32 function GetTempPath() to get the system
sl@0
  5751
		temporary path rather than manually checking the "temp" environmental
sl@0
  5752
		variable.  Fixes Epoc Software problem SW1-112.
sl@0
  5753
	3)	Changed WINS F11 key case closed behaviour so that "case
sl@0
  5754
		closed" is added to the WINS title bar rather than the case
sl@0
  5755
		bitmap being displayed.
sl@0
  5756
	4)	Removed possibility of specifying the case bitmap within
sl@0
  5757
		WINS's system.ini file, and all references to the case bitmap.
sl@0
  5758
	5)	Disabled Emulator Window maximise button since the button
sl@0
  5759
		served no purpose.
sl@0
  5760
	6)	Added new header \E32\INC\E32WINS.H containing the following
sl@0
  5761
		WINS-specific functions to be exported from EUSER.DLL
sl@0
  5762
sl@0
  5763
		IMPORT_C TInt SetupEmulatorPaths();
sl@0
  5764
		IMPORT_C TPtrC EmulatorPath();
sl@0
  5765
		IMPORT_C TPtrC EmulatorDataPath();
sl@0
  5766
		IMPORT_C TInt SetupEmulatedDrive(const TChar aDrive,const TDesC& aPath);
sl@0
  5767
		IMPORT_C TInt MapEmulatedFileName(TDes& aBuffer,const TDesC& aFileName);
sl@0
  5768
sl@0
  5769
		These functions are defined in new file
sl@0
  5770
		\E32\UPWINS\UP_PATH.CPP, and replace various drive-mapping
sl@0
  5771
		activities in different places in E32 and F32.  They also
sl@0
  5772
		incorporate changes to make the Emulator runnable from
sl@0
  5773
		anywhere.  If the Emulator is running from a traditional
sl@0
  5774
		\Epoc32\Release\WINS\<build>\ directory, then emulated C: and Z:
sl@0
  5775
		drives and the Emulator data directory will be as before;
sl@0
  5776
		otherwise, emulated C: and Z: will be subdirectories 'C' and 'Z'
sl@0
  5777
		of the Emulator directory, and the Emulator data directory
sl@0
  5778
		will be the 'data' subdirectory of the Emulator directory.
sl@0
  5779
	7)	Fixed Epoc Software problem SW1-153 "Allow applications to simulate
sl@0
  5780
		running from C: or D: on WINS".  F32 has been changed so that
sl@0
  5781
		an Epoc path, rather than a full Win32 path, is passed to
sl@0
  5782
		the kernel's DPlatLibrary::DoLoad() function.  The path is mapped
sl@0
  5783
		to a Win32 path using MapEmulatedFileName() for the Win32 call to
sl@0
  5784
		LoadLibrary(), but DPlatLibrary.iFileName is set to the Epoc
sl@0
  5785
		path rather than the full Win32 path.  It is iFileName that function
sl@0
  5786
		RLibrary.FileName() returns.  Previously F32 would
sl@0
  5787
		pass in the full Win32 path and DPlatLibrary::DoLoad() would
sl@0
  5788
		convert it to an Epoc path to set the iFileName value, but for
sl@0
  5789
		libraries on the emulated Z drive only.
sl@0
  5790
	8)	In \E32\KPWINS\KP_GUI.CPP, replaced some old dos function
sl@0
  5791
		calls with newer, more UNICODE-friendly, Win32 ones.
sl@0
  5792
	9)	Added 2 new, case-sensitive, command-line flags.
sl@0
  5793
		Use EPOC.EXE -C<emulated C drive> -- (that's 2 dashes) to
sl@0
  5794
		specify the emulated C drive.
sl@0
  5795
		Use EPOC.EXE -T -- to specify that the system temporary path
sl@0
  5796
		should be used as the emulated C drive.
sl@0
  5797
		These flags will override the default settings and any _EPOC_DRIVE_C
sl@0
  5798
		setting in the environment or in the System.ini file.
sl@0
  5799
	10)	Removed obselete code defaulting maximum free RAM under WINS from
sl@0
  5800
		\E32\KPWINS\KP_HAL.CPP.  The default is now applied by
sl@0
  5801
		\E32\KPWINS\KP_GUI.CPP.
sl@0
  5802
	11)	Changes to support international keyboard variants - these changes
sl@0
  5803
		will mean that WSERV version 100 (or above) and it's corresponding
sl@0
  5804
		changes are required to provide sensible keyboard behaviour.
sl@0
  5805
		a) Changed WINS EKERN.DLL so that character codes are passed onto the
sl@0
  5806
		Window Server in the 2 high bytes of the TRawEvent iScanCode
sl@0
  5807
		member variable.
sl@0
  5808
		b) Changed WINS EKTRAN.DLL to translate Epoc scan codes to the
sl@0
  5809
		character code provided in the 2 high bytes of the aScanCode
sl@0
  5810
		parameter if this code is available.
sl@0
  5811
		c) Changed EWSRV.DLL so that the 2 high bytes of the TRawEvent
sl@0
  5812
		iScanCode are ignored where appropriate.
sl@0
  5813
		d) Changed WINC ECONS.DLL to support international keyboard
sl@0
  5814
		input.
sl@0
  5815
		e) Removed \E32\KPWINS\KP_KYBD.CPP - this file used to provide
sl@0
  5816
		limited international keyboard support - UK/US variants only.
sl@0
  5817
	12)	Added KConsoleDllUid, 0x100000C5, to \E32\INC\E32UID.H.
sl@0
  5818
	13) Made changes to \E32\WSRC\CO_TWIN.CPP to resolve the ECONS.DLL
sl@0
  5819
		problem in line with the version of Epoc S/W Proposal SW1-84
sl@0
  5820
		revised 27/8/98.  Some changes to the Eikon console will be
sl@0
  5821
		required for the solution to be fully effective.  The changes
sl@0
  5822
		don't go quite as far as the proposal - the text console only
sl@0
  5823
		attempts to load ECONSEIK.DLL, not ECONS?*.DLL, since the
sl@0
  5824
		dll-loading code does not handle wildcards.
sl@0
  5825
	14) Changed \E32\KPWINS\KP_GUI.CPP so that under WINS the pointer
sl@0
  5826
		name (TMachineInfoV1.iXYInputName) is always either _L("PEN"),
sl@0
  5827
		_L("MOUSE") or _L("NONE").  This value can be set via
sl@0
  5828
		\Epoc32\Data\System.ini using keyword "PointerType", and
sl@0
  5829
		defaults to _L("PEN").  E.G. "PointerType mouse".
sl@0
  5830
	15) Changed \E32\KPWINS\KP_GUI.CPP to allow Emulator windows to be
sl@0
  5831
		created which are larger than the PC screen.
sl@0
  5832
	16)	Changed \E32\GROUP\SWINS.REL to include the new symbian fascia.bmp and
sl@0
  5833
		friends from R:\SDK\ZIP\SDKMODELS.007.
sl@0
  5834
	17)	Added new function and an enum to E32WINS.H
sl@0
  5835
sl@0
  5836
			IMPORT_C TInt EmulatorFlip(TEmulatorFlip aEmulatorFlip);
sl@0
  5837
			enum TEmulatorFlip
sl@0
  5838
				{EEmulatorFlipRestore,EEmulatorFlipInvert,EEmulatorFlipLeft,EEmulatorFlipRight};
sl@0
  5839
sl@0
  5840
		Calling this function, defined in \E32\UPWINS\UP_GUI.CPP, will change
sl@0
  5841
		the size and orientation of the emulator's parent and child windows
sl@0
  5842
		and bitmap.
sl@0
  5843
	18)	Implemented Epoc Proposal SW1-93 "Help for debugging Panics on WINS".
sl@0
  5844
		In WINS DEBUG mode, when a thread is panicked, a function in
sl@0
  5845
		\E32\UPWINS\UP_DEBUG.CPP will be called which will break into the
sl@0
  5846
		debugger and provide comprehensive information about the panic.  Source
sl@0
  5847
		file UP_DEBUG.CPP will be needed for this to work properly.  I've
sl@0
  5848
		removed the __DEBUGGER() macro from RThread::Panic() since it should no
sl@0
  5849
		longer be required.
sl@0
  5850
	20)	Added 2 new functions to E32WINS.H - AddToWinsEpocThreadList() and
sl@0
  5851
		RemoveFromWinsEpocThreadList().  These enable the kernel to create and
sl@0
  5852
		maintain a list of "real" Epoc threads (as opposed to fake WINS
sl@0
  5853
		hardware threads) within EUSER.DLL.  New function
sl@0
  5854
		UpWins::__EpocThread() in UP_STD.H is called by EDLL.OBJ (linked into
sl@0
  5855
		every WINS Epoc dll) to check whether the current thread is in this
sl@0
  5856
		list, so that EUSER's E32Dll() routine is only called when real Epoc
sl@0
  5857
		threads attach to and detach from loaded Epoc dlls.  As a result of
sl@0
  5858
		this change dlls linked to the new version of EDLL.OBJ will not run
sl@0
  5859
		against older versions of EUSER.DLL.  All these new functions are
sl@0
  5860
		defined in new file \E32\UPWINS\UP_THRD.CPP.  This change addresses
sl@0
  5861
		Epoc Proposal SW1-19, though I haven't removed the calls to E32Dll()
sl@0
  5862
		with parameters EDllProcessAttach and EDllProcessDetach yet since the
sl@0
  5863
		window server, and perhaps other components, make use of these.
sl@0
  5864
sl@0
  5865
4) Morgan
sl@0
  5866
	1)	Added interrupt chaining to TInterrupt.  This breaks binary
sl@0
  5867
		compatability for this class, but maintains source compatability.
sl@0
  5868
		Attempts to Bind the old TInterrupt class with the new kernel will
sl@0
  5869
		fail with KErrNotSupported.
sl@0
  5870
sl@0
  5871
sl@0
  5872
Version 1.02.151
sl@0
  5873
================
sl@0
  5874
(Made by Pete, 12 October 1998)
sl@0
  5875
sl@0
  5876
1) Morgan
sl@0
  5877
	1)	Updated TLinda and KEMAD\KE_PIC.CPP to take the new interrupts
sl@0
  5878
	2)	Added some kernel access functions so device drivers can
sl@0
  5879
		find DPhysicalDevices, DLogicalDevices, DChunks, and DLibraries
sl@0
  5880
	3)	Added TDma::Fill()
sl@0
  5881
	4)	Fixed a bug in the ImpDma interface
sl@0
  5882
	5)	Added hooks for automatic chaining of Dma buffers
sl@0
  5883
sl@0
  5884
2) Pete
sl@0
  5885
	1) 		Re-organisation of the SPI bus / ADC channel
sl@0
  5886
		measurement code in MARM and MAWD builds:-
sl@0
  5887
			TSpiController is now an abstract class. A
sl@0
  5888
		TSpiController derived class is defined and instanciated in each
sl@0
  5889
		variant. During initialisation, the kernel calls
sl@0
  5890
		TSpiController* Custom::CreateSpiController() to create the
sl@0
  5891
		appropriate SPI controller device.
sl@0
  5892
			TSpiController now includes the following
sl@0
  5893
		pure virtual functions which (hopefully) encompass the variant
sl@0
  5894
		specific aspects of this device:-
sl@0
  5895
			- void TSpiController::InitialiseSpiDevice();
sl@0
  5896
			- void TSpiController::StartAveragedReading();
sl@0
  5897
			- void TSpiController::StartOneShotReading();
sl@0
  5898
			Created the file VA_SPI.CPP in each MARM/MAWD
sl@0
  5899
		variant to implement the above functions (the code for which
sl@0
  5900
		has been essentially extracted from the appropriate KE_SPI.CPP
sl@0
  5901
		file). Also moved the following SPI related functions out of
sl@0
  5902
		VA_HW.CPP into VA_SPI.CPP:-
sl@0
  5903
		- TBool Custom::TestBootSequence()
sl@0
  5904
		- TInt Custom::BindSpiChannel(const TDesC8& aName)
sl@0
  5905
		- TBool Custom::EightChannelAdcFitted().
sl@0
  5906
			The TSpiController device no longer relies on
sl@0
  5907
		the digitizer driver to drive it to pull off and process
sl@0
  5908
		entries from its queue of ADC channels waiting for an ADC reading.
sl@0
  5909
		The Controller now has its own 8mS tick to perform
sl@0
  5910
		this. The later can be suspended/resumed by the variant using:-
sl@0
  5911
			- void TSpiController::Suspend();
sl@0
  5912
			- void TSpiController::Resume();
sl@0
  5913
		(For PB-PD/P2 MARM and B1 MAWD variants, the
sl@0
  5914
		digitizer driver does indeed suspend this operation and
sl@0
  5915
		drives processing of pending channels itself so as not to
sl@0
  5916
		change the operation of this driver).
sl@0
  5917
	2) 		Re-organisation of the way the PC Card Controller
sl@0
  5918
		hardware (e.g. Etna) is implemented for MARM builds to make
sl@0
  5919
		use of the fact that the variant DLL can now contain static
sl@0
  5920
		data. The h/w chunks are no longer allocated in the
sl@0
  5921
		architecture layer (KE_INI.CPP), but are
sl@0
  5922
		allocated within the variant as part of the Custom::Init3()
sl@0
  5923
		function. As such, the function
sl@0
  5924
		Custom::PcCardCntrlPhysicalAddress() has become redundant.
sl@0
  5925
	3) 		The function Hal::ColdStart() is now properly
sl@0
  5926
		exported.
sl@0
  5927
sl@0
  5928
3) Petteri
sl@0
  5929
	1) Changes to MARM display driver (WD_EIGER.CPP) so to handle
sl@0
  5930
	different screen sizes. Previous one assumed 640x240.
sl@0
  5931
	2) Changes to bootstrap and MARM variant layer to allocate an
sl@0
  5932
	additional h/w chunk for the extra registers in the CL-PS7111 device.
sl@0
  5933
	3) Various changes to the Cirrus Logic evaluation board
sl@0
  5934
	variant - to bring back as a supported variant.
sl@0
  5935
sl@0
  5936
4)	Dennis
sl@0
  5937
	1) Put SCREENVARIANT code back into MARM bootstrap.
sl@0
  5938
sl@0
  5939
Version 1.02.150
sl@0
  5940
================
sl@0
  5941
(Made by Alastair, 23rd September 1998)
sl@0
  5942
sl@0
  5943
This release is not intended for ER4, though it could be used as part
sl@0
  5944
of an ER4 SDK.
sl@0
  5945
sl@0
  5946
1)	Alastair
sl@0
  5947
	1)	Changed ECDRV.PDD, ESDRV.PDD and ESOUND.LDD as suggested by replies
sl@0
  5948
		to topic "WINS sound and comms cause deadlocks with STDLIB" under
sl@0
  5949
		category "Known Epoc Problems" in Notes database
sl@0
  5950
		"Symbian Tech Support General", except that the change to
sl@0
  5951
		ECDRV.PDD has been modified slightly so that it doesn't break test
sl@0
  5952
		T_SERIAL.EXE.  The ECDRV.PDD change has been tested with a version of
sl@0
  5953
		T_SERIAL.EXE modified to simulate the conditions which
sl@0
  5954
		could previously cause deadlock.
sl@0
  5955
		These changes address the following bugs/proposals, but do not
sl@0
  5956
		represent a permanent solution:
sl@0
  5957
			Epoc Software problem SW1 - 176 "WINS sound driver
sl@0
  5958
				deadlock in ESTLIB E32Dll() function."
sl@0
  5959
			Series5 Software problem SW1 - 503 "ECDRV.PDD can cause
sl@0
  5960
				deadlocks in simple test programs".
sl@0
  5961
			Epoc proposal SW1 - 19 "Implement true EPOC32 handling of
sl@0
  5962
				E32Dll() under WINS".
sl@0
  5963
		The change to ESOUND.LDD fixes Epoc Software problem SW1 - 179
sl@0
  5964
		"ESOUND.LDD plays silence indefinitely for short sound samples".
sl@0
  5965
sl@0
  5966
sl@0
  5967
Version 1.02.144
sl@0
  5968
================
sl@0
  5969
(Made by Dennis, 7th August 1998)
sl@0
  5970
sl@0
  5971
1) Matthew
sl@0
  5972
	1)	Added code to MISA platform so that the cpu goes into idle mode when
sl@0
  5973
		in the idle thread.
sl@0
  5974
	2)	Added \e32\keisa\todo.txt - a to-do list for the MISA platform.
sl@0
  5975
sl@0
  5976
2) Dennis
sl@0
  5977
	1)	Fixed bug in comms device driver D_COMM.CPP which left unwanted DFCs
sl@0
  5978
		queued after a power-down. These then attempted to complete requests
sl@0
  5979
		twice. Power down now cancels any pending DFCs.
sl@0
  5980
sl@0
  5981
3) Jonathan
sl@0
  5982
	1)	Removed tests for redundant files from valid command in mnt.bat.
sl@0
  5983
	2)	Updated build.txt to add dire warnings about checking e32ver.h and
sl@0
  5984
		advice about MNT VALIDating releases.
sl@0
  5985
sl@0
  5986
sl@0
  5987
Version 1.02.143
sl@0
  5988
================
sl@0
  5989
(Made by Pete, 20th July 1998)
sl@0
  5990
sl@0
  5991
1) Dennis
sl@0
  5992
	1) Fixed SW1-586 incorrect handling of signed zeros.
sl@0
  5993
sl@0
  5994
2) Morgan
sl@0
  5995
	1) Updated V32Linda.h to reflect the latest hw
sl@0
  5996
	2) Added TDma class and supporting classes Dma, ImpDma
sl@0
  5997
	3) Changed MMAD bootstrap to use the same modular scheme as MARM
sl@0
  5998
sl@0
  5999
3)	Alastair
sl@0
  6000
	1)	Fixed Epoc Software problem SW1-107 'WINS RThread::Resume problem on
sl@0
  6001
		Win95' by not faulting the platform unless Win32 API function
sl@0
  6002
		GetLastError() reports an error as well as ResumeThread().
sl@0
  6003
sl@0
  6004
4) Pete
sl@0
  6005
	1) 	Fixed a problem with ATA media driver such that it sometimes failed
sl@0
  6006
		to reduce machine current consumption - having raised it due to a
sl@0
  6007
		read or write to the CF card.
sl@0
  6008
	2) 	Fixed a problem with ATA media driver. As part of the exec. call to
sl@0
  6009
		read/write/format the card, the driver sends a command to the card,
sl@0
  6010
		to read/write the appropriate number of sectors. Each time a sector
sl@0
  6011
		is complete, the card generates an interrupt so the driver can
sl@0
  6012
		either read the data from the sector or supply the data for the next
sl@0
  6013
		sector to be written. There was a problem with the driver such that,
sl@0
  6014
		if the first interrupt from the card occurred while still in the
sl@0
  6015
		initial exec. call, the interrupt could be prematurely cleared. The
sl@0
  6016
		driver then only detects that the sector has been processed when a 2
sl@0
  6017
		second time-out occurs on the operation - making the operation
sl@0
  6018
		appear very slow. This only seems to have been a problem for Viking
sl@0
  6019
		and Panasonic CF cards.
sl@0
  6020
	3) 	Alteration to the ATA media driver to improve speed of transfer,
sl@0
  6021
		particularly on reads from the card. Before, the driver queued a DFC
sl@0
  6022
		for the completion of each sector read from the card (to write it
sl@0
  6023
		back the thread making the request). The media driver's buffer has
sl@0
  6024
		now been increased so that this can be filled under interrupt. A DFC
sl@0
  6025
		in now only queued when the buffer is full.
sl@0
  6026
sl@0
  6027
sl@0
  6028
Version 1.02.142
sl@0
  6029
================
sl@0
  6030
(Made by Pete, 1st July 1998)
sl@0
  6031
sl@0
  6032
1) Matthew
sl@0
  6033
	1)	Changed MISA bootstraps to use the same modular scheme as MARM.
sl@0
  6034
	2)	Added functions to TSa1100 for new hardware registers in revision D.
sl@0
  6035
1) Dennis
sl@0
  6036
	1)	Added thread write function DThread::WriteNoCheck() which doesn't
sl@0
  6037
		perform the strict checking that DThread::Write() does.
sl@0
  6038
	2)	Changed TLex::Val(TReal*) to use TRealX in its intermediate
sl@0
  6039
		calculations in order to increase the precision of the final
sl@0
  6040
		result. Added a new function Math::MultPow10X which multiplies a
sl@0
  6041
		TRealX argument by an integer power of 10. This is basically a
sl@0
  6042
		higher precision version of Math::Pow10.
sl@0
  6043
1) Pete
sl@0
  6044
	1)	Changed MARM ATA and CROM media driver to use
sl@0
  6045
		DThread::WriteNoCheck(). Fixes SW1-482.
sl@0
  6046
sl@0
  6047
sl@0
  6048
Version 1.02.141
sl@0
  6049
================
sl@0
  6050
(Made by Pete, 10th June 1998)
sl@0
  6051
sl@0
  6052
1) Jonathan
sl@0
  6053
	1)	Removed private assignment operators from TSglQueIterBase and
sl@0
  6054
		TDblQueIterBase as per EPOC32 Proposal SW1-53.
sl@0
  6055
	2)	Made inline RSubSessionBase::SubSessionHandle() public as per EPOC32
sl@0
  6056
		Proposal SW1-45.
sl@0
  6057
	3)	Bumped up the E32 KMediaDriverInterface*VersionNumber.
sl@0
  6058
	4)	Changed the default WINS memory emulation from 4MB to 64MB as per
sl@0
  6059
		EPOC32 Proposal SW1-88.
sl@0
  6060
	5)	New code page 1252 and Unicode character information tables derived
sl@0
  6061
		from release 2.1 of the character database from Unicode Inc.
sl@0
  6062
		Fixes EPOC32 Software Problems SW1-42 and also adds:
sl@0
  6063
			80 & U+20AC	  New euro currency symbol
sl@0
  6064
			8E			  LATIN CAPITAL LETTER Z WITH CARON (= U+017D)
sl@0
  6065
			9E			  LATIN SMALL LETTER Z WITH CARON (= U+017E)
sl@0
  6066
			U+FFFC		  OBJECT REPLACEMENT CHARACTER
sl@0
  6067
	6)	From Graham Asher:
sl@0
  6068
		The enumerated type TChar::TCategory in e32std.h, used only in the
sl@0
  6069
		Unicode build, has been changed to accommodate the new character
sl@0
  6070
		categories in unidata2.txt.
sl@0
  6071
sl@0
  6072
2) Matthew
sl@0
  6073
	1)	Changed the TSa1100 class - removed SetHalt(), which had been
sl@0
  6074
		copied over from TEiger, and renamed IntLevels() to	IntsPending()
sl@0
  6075
		and IntTypes() to IntLevels() to conform with the terminology in
sl@0
  6076
		the SA1100 documentation. Breaks misa kernel-side compatability.
sl@0
  6077
	2)	Removed lccr followers from MISA, which were working around a bug
sl@0
  6078
		in the SA1100.
sl@0
  6079
	3)	Changed MISA ScreenInfo function to return the address of the
sl@0
  6080
		beginning of the palette (rather than the pixel data for 8bpp).
sl@0
  6081
		The screen driver will have to change to take account of this.
sl@0
  6082
	4)	Removed TSa1100 palette functions - the screen driver should write
sl@0
  6083
		to memory instead.
sl@0
  6084
	5)	Removed Cassius-A releasables from the releasables, because we had
sl@0
  6085
		the hardware taken from us.
sl@0
  6086
	6)	Changed Windamere(AWD) and SARMBE architectures to set year to
sl@0
  6087
		rombuild year on a cold boot, which I forgot in the last release
sl@0
  6088
		(see 3.13 in release 140).
sl@0
  6089
	7)	Fixed Epoc32 defect SW1-33 ("Problem in Plat::Fault in Unicode
sl@0
  6090
		builds") by changing Length() calls to Size() calls.
sl@0
  6091
	8)	Changed sound ldd to use DThread::Read() and Write() rather than
sl@0
  6092
		doing its own thing this fixes S5 defect SW1-231 ("Machine warm
sl@0
  6093
		reset when playing sound while spy running").
sl@0
  6094
	9)	Changed svChangeLocale() function so that it triggers
sl@0
  6095
		RChangeNotifiers.
sl@0
  6096
	10)	Changed keyboard translator dll so that the default library is
sl@0
  6097
		closed when not in use.
sl@0
  6098
	11)	Incremented EPOC comms-driver minor version number (but not WINS
sl@0
  6099
		one) and put a check into the pdds so that they will not be used
sl@0
  6100
		with early versions of the ldd. Partially fixes Bluebell defect
sl@0
  6101
		SW1-5 ("Triple beep reset when turning on the link").
sl@0
  6102
	12)	Added an explicit call to compress the kernel heap to
sl@0
  6103
		S::ChunkCompressAll(). This fixes the E32 bit of Series-5 defect
sl@0
  6104
		SW1-356 ("Large uncompressible heaps in system components").
sl@0
  6105
	13)	Fixed bug in sound ldd which caused sine waves to not be
sl@0
  6106
		cancelled in WINS on PCs which did not support aLaw.
sl@0
  6107
sl@0
  6108
3) Dennis
sl@0
  6109
	1)	Fixed bug in ARM710.S in EIGER bootstrap code. In function
sl@0
  6110
		EigerSetCSnWidth register R1 is accidentally overwritten, causing
sl@0
  6111
		the ROM to be set up incorrectly if its bus width is not 32 bits.
sl@0
  6112
	2)	Implemented EPOC32 proposal SW1-69. User::StartThread modified to do
sl@0
  6113
		the DLL attach and detach in separate functions, so that the 1K of
sl@0
  6114
		stack used in these functions can be reused during actual running of
sl@0
  6115
		the thread.
sl@0
  6116
	3)	Fixed problem SW1-51 - renamed TPointerArray<T> to RPointerArray<T>
sl@0
  6117
		and TSimpleArray<T> to RArray<T>. Replaced TArray(U)Int with
sl@0
  6118
		RArray<T(U)Int>.  Replaced the destructor with a Close() function to
sl@0
  6119
		do memory deallocation.  Frozen DEF files modified so that renamed
sl@0
  6120
		functions are at same ordinal as before, with Close() functions at
sl@0
  6121
		the same ordinals as the destructors were.
sl@0
  6122
	4)	Fixed problem SW1-47 - modified code in DebugFunction ProfileResult
sl@0
  6123
		to get the tick period from Hal::TickPeriod instead of hardcoding it
sl@0
  6124
		to 15625us.
sl@0
  6125
	5)	Fixed problem SW1-622 - modified heap code so that all free cells
sl@0
  6126
		are at least 16 bytes in debug mode, since this is the minimum
sl@0
  6127
		allocated cell size.
sl@0
  6128
	6)	Modified RHeap::ReAlloc() so that the nestingLevel field in debug
sl@0
  6129
		mode is preserved.  This prevents test programs failing a kernel
sl@0
  6130
		heap check due to one of the kernel's arrays being reallocated
sl@0
  6131
		during the test.
sl@0
  6132
	7)	Modified handlers for vectors 0x00 and 0x14 (reset and reserved) to
sl@0
  6133
		fault with a simulated exception EExcInvalidVector rather than
sl@0
  6134
		looping forever.  iCodeAddress=0x00 or 0x14, iDataAddress=value of
sl@0
  6135
		lr on jumping to 0x00 or 0x14.
sl@0
  6136
	8)	Added functions RChunk::IsReadable() and RChunk::IsWritable() so
sl@0
  6137
		that user code can determine whether or not a chunk is mapped into
sl@0
  6138
		its process address space.
sl@0
  6139
	9)	Fixed problem SW1-370 (Math::Mod is not sufficiently
sl@0
  6140
		accurate). Changed the algorithm from x%y=x-y*INT(x/y) to a
sl@0
  6141
		bit-by-bit shift and subtract algorithm.  Added operator%,
sl@0
  6142
		operator%=, Mod() and ModEq() functions to TRealX class to implement
sl@0
  6143
		the new algorithm.
sl@0
  6144
sl@0
  6145
4) Petteri
sl@0
  6146
	1)	Fixed a bug in Math::Round(). (SW1-402)
sl@0
  6147
	2)	Fixed a couple of bugs in the text window server.
sl@0
  6148
	3)	Changed Ekern.mmp as required by changes in Makmake.
sl@0
  6149
sl@0
  6150
5) Alastair
sl@0
  6151
	1)	Changed mnt.bat so that mnt getsrc no longer attempts to make
sl@0
  6152
		the Epoc work directories.
sl@0
  6153
	2)	Changed WinCOutput::Write(const TDesC &aDes) so that WINC
sl@0
  6154
		programs can write output to STDOUT for redirection.  This change
sl@0
  6155
		applies to ascii builds only.
sl@0
  6156
	3)	Changed the kernel so that the Windows Alt-F4 keyboard
sl@0
  6157
		shortcut for closing applications works for WINS.
sl@0
  6158
	4)	Changed #define in kpwins\kp_chunk.cpp so that the code which
sl@0
  6159
		checks that requests for more memory won't cause the emulated
sl@0
  6160
		memory allocation limit to be exceeded applies for WINS only, not
sl@0
  6161
		WINC.  This won't change WINC behaviour because the emulated
sl@0
  6162
		memory limit under WINC was always zero, which meant that the
sl@0
  6163
		check wasn't applied anyway.
sl@0
  6164
	5)	Changed kpwins\kp_gui.cpp in line with Epoc Proposal SW1-21,
sl@0
  6165
		so that emulated drive assignment is possible from
sl@0
  6166
		\Epoc32\Data\System.ini.
sl@0
  6167
		Syntax is
sl@0
  6168
		_EPOC_DRIVE_<letter> <path>
sl@0
  6169
sl@0
  6170
6) Jo
sl@0
  6171
	1)	Fixed Series 5 software problem SW1-440 ("PDD returns different errors
sl@0
  6172
		in WINS and ARM").  Both WINS and ARM now return KErrNotSupported.
sl@0
  6173
	2)	Fixed Series 5 software problem SW1-943 ("XXX_CAST macros in E32DEF.H
sl@0
  6174
		are written incorrectly")
sl@0
  6175
sl@0
  6176
7) Pete
sl@0
  6177
	1)	Implemented asynchronous rather than synchronous system
sl@0
  6178
		for read,write and format operations on local media devices.
sl@0
  6179
		This affects the TLocDrv and DMediaDriver classes.
sl@0
  6180
	2)	Changed API on for local media devices so that for any given
sl@0
  6181
		operation (eg read,write,format,reduce size) the position on the
sl@0
  6182
		device is specified as a TInt64 rather than TInt. This will allow
sl@0
  6183
		very large media devcies to be supported. This affects the TLocDrv,
sl@0
  6184
		DMedia and DMediaDriver classes.
sl@0
  6185
sl@0
  6186
		Taking changes 1 & 2 for DMediaDriver, the functions
sl@0
  6187
			TInt DMediaDriver::ReduceSize(TInt aPos,TInt aLength);
sl@0
  6188
			TInt DMediaDriver::Read(TInt aPos,TInt &aLength,const TAny* aTrg,TInt aHandle,TInt anOffset);
sl@0
  6189
			TInt DMediaDriver::Write(TInt aPos,TInt &aLength,const TAny* aSrc,TInt aHandle,TInt anOffset);
sl@0
  6190
			TInt DMediaDriver::Format(TInt aPos,TInt &aLen);
sl@0
  6191
sl@0
  6192
		become:-
sl@0
  6193
			TInt DMediaDriver::ReduceSize(TInt64 &aPos,TInt aLength);
sl@0
  6194
			void DMediaDriver::Read(TInt64 &aPos,TInt *aLength,TLocalDriveMessageData &aTrg,DThread *aThread,TRequestStatus *aStatus);
sl@0
  6195
			void DMediaDriver::Write(TInt64 &aPos,TInt *aLength,TLocalDriveMessageData &aSrc,DThread *aThread,TRequestStatus *aStatus);
sl@0
  6196
			void DMediaDriver::Format(TInt64 &aPos,TInt *aLength,DThread *aThread,TRequestStatus *aStatus);
sl@0
  6197
	3)	Withered the UserPcCardCntrl class. Now all functions are 'not supported'
sl@0
  6198
		apart from:-
sl@0
  6199
			void UserPcCardCntrl::PwrDown(TSocket aSocket);
sl@0
  6200
			TInt UserPcCardCntrl::NotifyChange(TSocket aSocket,TRequestStatus *aReqStat);
sl@0
  6201
		which are implemented using the corresponding UserSvr functions
sl@0
  6202
		described below.
sl@0
  6203
		The media device functions previously provided by UserPcCardCntrl
sl@0
  6204
		are now provided by D_DRVIF.LDD in E32UTILS.
sl@0
  6205
		The PC Card controller functions previously provided by UserPcCardCntrl
sl@0
  6206
		are now provided by D_PCCDIF.LDD in E32UTILS.
sl@0
  6207
	4)	Added the following UserSvr local media functions:
sl@0
  6208
			void UserSvr::ForceRemountMedia(TMediaDevice aDevice);
sl@0
  6209
		Causes remount on next access to specifed device (ie
sl@0
  6210
		media change simulation).
sl@0
  6211
			TInt UserSvr::MediaChangeNotify(TMediaDevice aDevice,TRequestStatus *aReqStat);
sl@0
  6212
		Request notification of power of powerup and media change
sl@0
  6213
		events on the specified media device.
sl@0
  6214
	5)	In MARM build the function:-
sl@0
  6215
			TInt DArmPlatPcCardSocket::EventCallBackEnable(TPccdEvent anEvent)
sl@0
  6216
		no longer performs a clear of any pending events before enabling an
sl@0
  6217
		event callback type. Also, it now performs an additional check that
sl@0
  6218
		a power down of a PC Card hasn't occured (ie Kern::PowerGood()) before
sl@0
  6219
		enabling PC Card IREQ events.
sl@0
  6220
sl@0
  6221
sl@0
  6222
Version 1.02.140
sl@0
  6223
================
sl@0
  6224
(Made by Morgan, 14th May 1998)
sl@0
  6225
sl@0
  6226
1) Graham
sl@0
  6227
		1) Added P3 variant to the rom building capabilities in KBARM
sl@0
  6228
sl@0
  6229
2) Dennis
sl@0
  6230
		1)	Added support for multiple kernels/variants in the same ROM.
sl@0
  6231
			This requires F32 096 and ROMBUILD version 093.
sl@0
  6232
		2)	Added TSimpleArray<>, TPointerArray<>, TArrayInt simple array classes.
sl@0
  6233
		3)	Changed occurrences of CArray* in the kernel to TSimpleArray<>.
sl@0
  6234
		4)	Rearranged ARM boot code into a form which is easier to adapt to other
sl@0
  6235
			hardware and which facilitates multiple-boot ROMs.
sl@0
  6236
		5)	EKERN.EXE no longer links to the variant DLL. Instead, the variant DLL
sl@0
  6237
			is found by searching a list of possible variants.
sl@0
  6238
		6)	Added executive call UserSvr::RomRootDirectoryAddress() to enable F32 to
sl@0
  6239
			obtain the address of the ROM file system root directory. This address is
sl@0
  6240
			now determined at boot time from a list of possible root directories, one
sl@0
  6241
			for each variant which the ROM supports.
sl@0
  6242
		7)	Added code to enable profiling of threads (measures CPU time used by each
sl@0
  6243
			thread in the system). To use this, rebuild the MARM REL version with the
sl@0
  6244
			symbol __PROFILE__ defined at the top of M32STD.H. You will also need test
sl@0
  6245
			program T_PROF.EXE and device driver D_PROF.LDD from E32TEST.
sl@0
  6246
		8)	Added two new format options %O and %o to Kern::Printf. %o prints the short
sl@0
  6247
			name of a CObject and %O prints the full name. Also modified Kern::Printf
sl@0
  6248
			to print (null) if a NULL pointer is passed into %S, %O or %o.
sl@0
  6249
		9)	Modified statements of the form Kern::Printf(_L("%S"),&obj->FullName())
sl@0
  6250
			to Kern::Printf(_L("%O"),obj).
sl@0
  6251
		10)	Added a generic algorithm for determining the size and configuration of
sl@0
  6252
			DRAM devices to the ARM bootstrap code.
sl@0
  6253
		11)	Modified ARM/ISA/X86 bootstrap to map in the PageTableInfo array at
sl@0
  6254
			0x41080000. The fixed offset from the page directory simplifies remapping
sl@0
  6255
			during a reschedule.
sl@0
  6256
		12)	Added fields iHomePdes, iPdes and iNumPdes to the definition of DPlatChunk.
sl@0
  6257
			These indicate directly which PDEs are used by the chunk and simplify
sl@0
  6258
			moving a chunk around. Modified the scheduler to use these fields when
sl@0
  6259
			switching processes. Added a function DPlatChunk::SetPdeInfo to set up
sl@0
  6260
			these fields.
sl@0
  6261
		13)	Removed the current consumption setting code from the scheduler. Added
sl@0
  6262
			a function K::TotalCurrentConsumptionInMilliAmps() which calculates the
sl@0
  6263
			machine current by adding K::TotalCurrentMilliAmps to the machine current,
sl@0
  6264
			determined by simply looking to see if the null thread is running.
sl@0
  6265
		14)	Modified DPlatProcess::LookupChunk to do a binary search on the chunk list
sl@0
  6266
			instead of a straight entry-by-entry search.
sl@0
  6267
		15)	Fixed a bug in DPlatChunk::ReallocateHomeAddress which would result in a
sl@0
  6268
			chunk being left without a home address if all linear addresses in the
sl@0
  6269
			home section were exhausted.
sl@0
  6270
		16)	Modified text window server so that it loads EDISP.DLL from Z:\SYSTEM\LIBS
sl@0
  6271
			and invokes ordinal 1 in order to create the screen device driver, rather
sl@0
  6272
			than being statically linked to EDISP.DLL. This is necessary for multi-boot
sl@0
  6273
			ROMs since EDISP.DLL is hardware dependent.
sl@0
  6274
		17)	Added WINDERMERE architecture (\E32\KEAWD), Bluebell V1 variant (\E32\VAWDB1),
sl@0
  6275
			and dual-boot EIGER/WINDERMERE test ROM (\E32\KBAWD).
sl@0
  6276
			This builds and runs on Rack D but is obviously completely untested on
sl@0
  6277
			Windermere. There are some outstanding issues with the Windermere port:
sl@0
  6278
			i)		Standby code may be faulty - problem with restoring state when machine
sl@0
  6279
					powers back up.
sl@0
  6280
			ii)		PC card/CF card code requires modification to use LDRH/STRH 16 bit
sl@0
  6281
					instructions rather than relying on EIGER 'mad-mad mode'.
sl@0
  6282
			iii)	Bootstrap needs modifying to detect Windermere.
sl@0
  6283
			iv)		SPI controller and LCD controller setup may be incorrect.
sl@0
  6284
sl@0
  6285
3) Matthew
sl@0
  6286
		1) Got rid of MARM P1 (banana) variant.
sl@0
  6287
sl@0
  6288
		2) Bug fixes to MISA so it can be run in 4bpp and 16bpp modes.
sl@0
  6289
sl@0
  6290
		3) Changed misa to use the hardware rtc to keep track of the time, instead of
sl@0
  6291
		   counting ticks.
sl@0
  6292
		   Unfortunately the 32MHz crystal is very slow to warm up, so a cold boot is now
sl@0
  6293
		   much slower than it was because it has to wait for the crystal to stabilise.
sl@0
  6294
sl@0
  6295
		4) Changed misa bootstraps to be fractionally more like the marm one.
sl@0
  6296
sl@0
  6297
		5) Moved the WINS-specific setting of the daylight-saving mode out of the
sl@0
  6298
		   independent layer and into KPWINS. Removed the resetting of the
sl@0
  6299
		   daylight-saving from the change-locale function. These mean that S5
sl@0
  6300
		   defect SW1-558 ("Remove windows dependency") has been fixed.
sl@0
  6301
sl@0
  6302
		6) Fixed bug in DLogicalChannel::Request(), which previously, in WINS,
sl@0
  6303
		   could have sent a request from a thread which had no right to do a request
sl@0
  6304
		   on that channel.
sl@0
  6305
sl@0
  6306
		7) Integrated Andrew Baldwin's wonderful new WINS sound pdd, which will not
sl@0
  6307
		   offend your ears. Many thanks to Andrew for this.
sl@0
  6308
sl@0
  6309
		8) Modified sound ldd so that it can pass multiple samples to the pdd. Modified
sl@0
  6310
		   pdds to use this new functionality. This reduces the amount of time spent in
sl@0
  6311
		   the service routine.
sl@0
  6312
sl@0
  6313
		9) Fixed S5 defect SW1-228 ("Dial setup errors") in sound LDD.
sl@0
  6314
sl@0
  6315
		10)Incrememented sound driver minor version number, to stop people mixing old
sl@0
  6316
		   and new pdds/ldds.
sl@0
  6317
sl@0
  6318
		11)Put an __DEBUGGER() macro into K::PanicCurrentThread() - previously these
sl@0
  6319
		   panics were just stopping WINS without giving you a chance to jump in with
sl@0
  6320
		   a debugger.
sl@0
  6321
sl@0
  6322
		12)Added int3's to WINS DEBUG versions Plat::Panic() and Plat::Fault() so they
sl@0
  6323
		   break into the debugger whatever the state of the JustInTime flag.
sl@0
  6324
sl@0
  6325
		13)Changed MISA and MARM cold-boot to read the year from the rom header and set
sl@0
  6326
		   the time to 10:10 January 1st of that year. Fixes Bluebell defect SW1-134.
sl@0
  6327
sl@0
  6328
		14)Made the private function KernelCompressAll() into the public
sl@0
  6329
		   User::CompressAllHeaps(). This is to allow Shell to trigger heap compression
sl@0
  6330
		   more easilly (see Bluebell defect SW1-299).
sl@0
  6331
sl@0
  6332
4) Morgan
sl@0
  6333
		1) Integrated the MADLinda architecture and build system
sl@0
  6334
		2) Bug fix to KESARMBE\KE_PIC.CPP
sl@0
  6335
		3) Changed occurences of DisableIrqs and EnableIrqs to DisableIrqsToLevel2 and
sl@0
  6336
		   RestoreIrqs in SARMBE architecture
sl@0
  6337
		4) Added callback hook for the idle loop
sl@0
  6338
		5) Added Kern::PhysicalDeviceFromHandle
sl@0
  6339
		6) Added an external debugger interface (K32DBG.H).  Used it to bolt on an
sl@0
  6340
		   InfoOutput debugger for MSDEV.  On the MARM platforms bolted on a logging
sl@0
  6341
		   debugger for use by an external JTAG debugger, (like TI's).  No debugger
sl@0
  6342
		   for X86.
sl@0
  6343
sl@0
  6344
5) Jonathan
sl@0
  6345
		1) Made Eiger and Windemere text drivers return correct screen size
sl@0
  6346
		   from CScreenDriverMarm::Init() instead of assuming 80x24.
sl@0
  6347
		   Removed old #ifdefed-out SetMode() code from Eiger driver.
sl@0
  6348
sl@0
  6349
sl@0
  6350
================
sl@0
  6351
Big version number increment to skip over Liffey release.
sl@0
  6352
================
sl@0
  6353
sl@0
  6354
Version 1.02.128
sl@0
  6355
================
sl@0
  6356
(Made by Jonathan Harris, 8th May 1998)
sl@0
  6357
sl@0
  6358
1) Jonathan
sl@0
  6359
	1)	P::SetMachineConfiguration(): Don't update the bits of the SuperPage that
sl@0
  6360
		belong to the boot code (including the exception info), apart from the
sl@0
  6361
		display contrast.
sl@0
  6362
sl@0
  6363
sl@0
  6364
Version 1.02.127
sl@0
  6365
================
sl@0
  6366
(Made by Graham Darnell, 26th March 1998)
sl@0
  6367
sl@0
  6368
1) Dennis
sl@0
  6369
	1) Added a new variant function Variant::SetSoundDriverEnabled(TBool) for use
sl@0
  6370
	   with Snowball in order to allow user code to enable/disable the speaker
sl@0
  6371
	   using UserHal::SetSoundDriverEnabled().
sl@0
  6372
sl@0
  6373
	2) Added some code to Variant::Init3 for P2 variant to enable correct operation
sl@0
  6374
	   with either a single ROM device, 4Mb on CS0 and 2Mb on CS1, or 4Mb on both.
sl@0
  6375
sl@0
  6376
2) Matthew, Pete and Rob Pym
sl@0
  6377
	1) Converted the MISA build from being for a Digital IT board to being for
sl@0
  6378
	   SA-1100 based hardware. This has an identical user-side API to MARM, so
sl@0
  6379
	   MARM releasables will run unchanged. To build a rom use the MARM F32.
sl@0
  6380
sl@0
  6381
	2) Added variants VISABA for a Digital's "Brutus" board and VISACA for a
sl@0
  6382
	   Cassius rack.
sl@0
  6383
sl@0
  6384
	   Note: TO BUILD A TEXT-SHELL ROM FOR BRUTUS YOU WILL NEED THE ESHELL.EXE
sl@0
  6385
			 FROM F32 096 OR HIGHER. PRIOR TO THIS, THE SHELL TRIES TO CREATE
sl@0
  6386
			 A CONSOLE WINDOW LARGER THAN THE BRUTUS SCREEN AND CRASHES.
sl@0
  6387
sl@0
  6388
3) Matthew
sl@0
  6389
	1) Changed all interrupt-binding and startup-beep internals to use Narrow
sl@0
  6390
	   descriptors in the Unicode build.
sl@0
  6391
sl@0
  6392
	2) Added code to read extra digitiser information in E2 on P1, P2 and PD
sl@0
  6393
	   variants. Changed the digitiser drivers on P2 and PD machines to use this
sl@0
  6394
	   extra information, so different digitisers can be used on these machines.
sl@0
  6395
sl@0
  6396
	   If the new  E2 information is invalid due to a new rom has been put into
sl@0
  6397
	   an old machine, then this is detected due to the x rise-time being zero,
sl@0
  6398
	   and the driver defaults to the previous good values.
sl@0
  6399
sl@0
  6400
	   If you wish to program your E2 with values suitable for the standard
sl@0
  6401
	   digitiser use XYSpread/16=6; X-Rise=1; Y-Rise=1; Pen-down discard=0.
sl@0
  6402
sl@0
  6403
	3) Moved TVideoMode enum from d32video.h to e32twin.h, and stopped e32twin.h
sl@0
  6404
	   including d32video.h, thus fixing SW1-921.
sl@0
  6405
sl@0
  6406
	4) Changed sound LDD to make sure that the internal state is implies no
sl@0
  6407
	   request is pending when a play request is completed. Thanks to Andrew
sl@0
  6408
	   Baldwin for finding this.
sl@0
  6409
sl@0
  6410
	5) Changed some RChangeNotifier internals so that the internal state implies
sl@0
  6411
	   no request is pending when a request is completed.
sl@0
  6412
sl@0
  6413
4) Graham/Matthew
sl@0
  6414
	1) Changed the WINC memory information function so that it doesn't emulate a
sl@0
  6415
	   machine with 4 megs of ram.
sl@0
  6416
sl@0
  6417
	2) Removed some critical-section switching in the WINS thread-startup code.
sl@0
  6418
	   This fixes a bug which occasionally caused WINC to hang on fast machines
sl@0
  6419
	   if a thread did an exec call very soon after being resumed for the first
sl@0
  6420
	   time.
sl@0
  6421
sl@0
  6422
		3) Removed another 'dance of the semaphores' during WINS thread
sl@0
  6423
		   startup. This seemed to prevent a resumer proceeding
sl@0
  6424
		   until all resumee dll entry points have been called. Since
sl@0
  6425
		   there seems to be no reason for this and since this was
sl@0
  6426
		   causing a problem when threads were resumed inside
sl@0
  6427
		   dll entry code, there seemed no point in keeping it.
sl@0
  6428
		   However, this might be something to watch out for.
sl@0
  6429
sl@0
  6430
	3) On WINS/WINC, the call to tick the tick-queue is now sandwiched between a
sl@0
  6431
	   Plat::EnterCS() and a Plat::LeaveCS(). This will make these platforms far
sl@0
  6432
		   more robust, but might break work-arounds that may or may not exist in
sl@0
  6433
		   user code.
sl@0
  6434
sl@0
  6435
5) Morgan
sl@0
  6436
	1) Fixed Bluebell defect SW1-43.
sl@0
  6437
sl@0
  6438
	2) Added Dll::FreeData().  This should be called in the EProcessDetatch
sl@0
  6439
	   of those Dlls sporting static data.
sl@0
  6440
sl@0
  6441
6) Graham
sl@0
  6442
		1) Added comms and sound device drivers to the WINC
sl@0
  6443
		   releasables.
sl@0
  6444
sl@0
  6445
sl@0
  6446
Version 1.02.126
sl@0
  6447
================
sl@0
  6448
(Made by Jonathan, 26th February 1998)
sl@0
  6449
sl@0
  6450
1) Matthew
sl@0
  6451
	1) Tweaked MMP files in preparation for misa platform.
sl@0
  6452
sl@0
  6453
	2) Added lots of useful constants to k32std.h - these will be used in the
sl@0
  6454
	   misa platform.
sl@0
  6455
sl@0
  6456
	3) Removed the obsolete DriveName and PccdSlotHame() functions from the
sl@0
  6457
	   variant layers.
sl@0
  6458
sl@0
  6459
2) Graham
sl@0
  6460
	1) Added K32KEYS, K32COMM, and K32SND header files to INCK release
sl@0
  6461
sl@0
  6462
	2) Split off the S1 variant into its own project
sl@0
  6463
sl@0
  6464
	3) Removed S1 variant from E32 project
sl@0
  6465
sl@0
  6466
	4) Fixed a bug in the MARM architecture that assumed that an eight channel
sl@0
  6467
	   ADC was fitted when powering up.
sl@0
  6468
sl@0
  6469
3) Dennis
sl@0
  6470
	1) Modified RHeap definition so that it is now derived from RHeapBase,
sl@0
  6471
	   which contains all the non-debug data members. This is to force GCC
sl@0
  6472
	   to put the vptr in the same place that it always was in release builds.
sl@0
  6473
	   This is to enable test code to run on a real machine with EUSER.DLL
sl@0
  6474
	   replaced from RAM.
sl@0
  6475
sl@0
  6476
	2) Changed UP_CON.CPP in UPMARM, UPMX86 and UPWINS to only include <e32def.h>
sl@0
  6477
	   instead of up_std.h. Previously, modifying k32std.h would cause up_con.cpp
sl@0
  6478
	   to be rebuilt but not the real econs.dll.
sl@0
  6479
sl@0
  6480
4) Alastair
sl@0
  6481
	1) Added edll.pdb and eexe.pdb to ewinsdb.rel because following the move
sl@0
  6482
	   to using makmake edll.obj and eexe.obj no longer contain their own
sl@0
  6483
	   debugging information.
sl@0
  6484
	2) Updated .MMP files previously using the START MARM .. END block keyword
sl@0
  6485
	   DLLNAME so that they use the new LINKAS keyword instead.  Updated MNT.BAT
sl@0
  6486
	   to get e32tools 091 and e32toolp 091.
sl@0
  6487
sl@0
  6488
5) Jonathan
sl@0
  6489
	1)	Added new SwitchOn() digitizer driver call. Needed by the Snowball
sl@0
  6490
		variant to reinit the digitizer after power-off.
sl@0
  6491
sl@0
  6492
sl@0
  6493
Version 1.02.125
sl@0
  6494
================
sl@0
  6495
(Made by Graham, 16th February 1998)
sl@0
  6496
sl@0
  6497
1)	Morgan
sl@0
  6498
	1)	Allowed static data for Rom Ldds/Pdds.  These require the 'fixed'
sl@0
  6499
		keyword in the obey file.
sl@0
  6500
sl@0
  6501
2)  Graham
sl@0
  6502
		1)      Removed debug/release interoperability from WINS/WINC.
sl@0
  6503
sl@0
  6504
sl@0
  6505
Version 1.02.124
sl@0
  6506
================
sl@0
  6507
(Made by Jonathan, 10th February 1998)
sl@0
  6508
sl@0
  6509
1) Jonathan
sl@0
  6510
	1)	Incremented KMediaDriverInterfaceMinorVersionNumber because the
sl@0
  6511
		media interface has changed (actually, it changed back in 120).
sl@0
  6512
	2)	Added new TPasswordToken member to TMachineConfiguration on WINS,
sl@0
  6513
		updated on setting the password or machine configuration.
sl@0
  6514
	3)	For internal consistency, WINS now actually limits the amount of
sl@0
  6515
		available memory on the 'machine' to the parameter set in
sl@0
  6516
		system.ini, and defaults to 3M if no value is set. Previously WINS
sl@0
  6517
		merely _reported_ 3M if no default was set, but allowed you to
sl@0
  6518
		allocate past 3M. This broke test code.
sl@0
  6519
	4)	Fixed generation of event on Off keypress on Snowball 1.
sl@0
  6520
	5)	Incorporated Pete's change: Snowball 1 variant no longer waits for
sl@0
  6521
		400ms for SanDisk to come out of reset. Instead, the media driver
sl@0
  6522
		polls the SanDisk on first use.
sl@0
  6523
sl@0
  6524
2) Alastair
sl@0
  6525
	1)	Updated e32base.h and ub_sec.cpp with Andrew Thoelke's changes to
sl@0
  6526
		implement EPOC32 proposal PR-0077, that a new function be provided
sl@0
  6527
		to return the maximum possible length that an encrypted piece of
sl@0
  6528
		data could become under the encryption scheme in use given the
sl@0
  6529
		initial length of the data.
sl@0
  6530
	2)	Changed mnt getrel so that it doesn't attempt to get the non-existent
sl@0
  6531
		.PDB files for release builds.
sl@0
  6532
sl@0
  6533
3) Basher
sl@0
  6534
	1)	Changed K::EmergencyPowerDown() and K::EmergencyPowerDownDfcFn()
sl@0
  6535
		functions (ks_power.cpp).
sl@0
  6536
sl@0
  6537
	2)	Changed Variant::EmergencyStandby() - on the folowing varients
sl@0
  6538
		varmcl, varmpd, varmsa and varmsb.
sl@0
  6539
sl@0
  6540
	3)	\varms1\va_mati.cpp changed - implementing safe EmergencyPowerDwn
sl@0
  6541
		control. EmergencyCallBack function added and the SectorWrite function
sl@0
  6542
		changed to control emergency system shutdown to prevent Liffy's
sl@0
  6543
		internal CF card from corruption.
sl@0
  6544
sl@0
  6545
4) Morgan
sl@0
  6546
	1)	Added VARMLA variant and bigendian support
sl@0
  6547
sl@0
  6548
5) Graham
sl@0
  6549
		1)      Changed variant structure for VARMCL, VARMPB, VARMPC,
sl@0
  6550
				VARMPD, VARMP1, VARMP2, VARMS1, VARMLA.
sl@0
  6551
sl@0
  6552
				The variant object is now created on the kernel heap.
sl@0
  6553
				This allows the variant code to have state and will
sl@0
  6554
				result in many simplifications of code that interacts
sl@0
  6555
				between variant and architecture layers. It will also
sl@0
  6556
				allow for improved customisation possibilities for
sl@0
  6557
				our licensees.
sl@0
  6558
sl@0
  6559
				Questions concerning historical and cross-platform
sl@0
  6560
				binary compatibility are yet to be resolved.
sl@0
  6561
sl@0
  6562
		2)      Cleaned up E32STD.H. This now follows the new standard:
sl@0
  6563
sl@0
  6564
						CBase *Function(TDes &aParameter);
sl@0
  6565
						becomes
sl@0
  6566
						CBase* Function(TDes& aParameter);
sl@0
  6567
sl@0
  6568
		3)      Snowball PTR2 varmsb and Delaware varmpg removed.
sl@0
  6569
sl@0
  6570
6) Petteri
sl@0
  6571
		Changes to the text window server:
sl@0
  6572
		1)      Four different window classes have been reduced into just one.
sl@0
  6573
sl@0
  6574
		2)      The notifier server now has a thread of its own and uses text window
sl@0
  6575
				server API for its output.
sl@0
  6576
sl@0
  6577
		3)      ASCII font has been changed to get the window borders back.
sl@0
  6578
sl@0
  6579
		4)      There is now a constant KCONSFULLSCREEN, which can be used to create
sl@0
  6580
				a full-size window whatever the size of the screen.
sl@0
  6581
sl@0
  6582
		5)      Windows can be moved, resized and scrolled using the mouse or a pen.
sl@0
  6583
sl@0
  6584
		6)      OnTop flag has been added. If the flag is set, the window stays on top
sl@0
  6585
				of other windows.
sl@0
  6586
sl@0
  6587
		7)      The size of notifier windows now depends on the length of the text
sl@0
  6588
				which is being displayed. Buttons can have more than just one character
sl@0
  6589
				and they are centred. One button option now works properly. Pressing
sl@0
  6590
				ESCAPE returns value 0, ENTER returns 1. The notifier window stays on
sl@0
  6591
				top of other windows.
sl@0
  6592
sl@0
  6593
		8)      Info prints are also variable-sized and they stay on top of other windows.
sl@0
  6594
sl@0
  6595
		9)      System.ini files are now read correctly in Unicode build. (Files written
sl@0
  6596
				in Unicode cannot be read.)
sl@0
  6597
sl@0
  6598
		10)     Colour support has been added. WINS supports a mode EColor256, where a
sl@0
  6599
				palette of 256 colours is available. SetTextAttribute() provides an easy
sl@0
  6600
				way to display text in colour. The following attributes are available:
sl@0
  6601
				ETextAttributeNormal, ETextAttributeBold, ETextAttributeInverse and
sl@0
  6602
				ETextAttributeHighlight. Palettes (if supported) can be manipulated and
sl@0
  6603
				read with SetPaletteEntry() and GetPaletteEntry(). SetTextColors() changes
sl@0
  6604
				colours for text foreground and background. Colours for window background,
sl@0
  6605
				window borders and screen background are set with SetUIColors().
sl@0
  6606
sl@0
  6607
		11)     The text window server API has 8 new functions:
sl@0
  6608
					 TInt SetWindowPosAbs(const TPoint &aPosition) (Sets window position.)
sl@0
  6609
					 TInt ScreenSize(TSize &aSize) (Returns screensize in characters.)
sl@0
  6610
					 TInt SetMode(TVideoMode aMode)
sl@0
  6611
					 void SetPaletteEntry(TUint anIndex,TUint8 aRed,TUint8 aGreen,TUint8 aBlue)
sl@0
  6612
					 void GetPaletteEntry(TUint anIndex,TUint8 &aRed,TUint8 &aGreen,TUint8 &aBlue)
sl@0
  6613
					 void SetTextColors(TUint anFgColor,TUint aBgColor)
sl@0
  6614
					 void SetUIColors(TUint aWindowBgColor,TUint aBorderColor,TUint aScreenColor)
sl@0
  6615
					 void SetTextAttribute(TTextAttribute anAttribute)
sl@0
  6616
sl@0
  6617
Version 1.02.123
sl@0
  6618
================
sl@0
  6619
(Made by Jonathan, 27th January 1998)
sl@0
  6620
sl@0
  6621
1) Alastair
sl@0
  6622
	1)  Changed MNT.BAT so that no attempt is made to release PDB files for
sl@0
  6623
		WINS and WINC release builds, because MAKMAKE generated makefiles do
sl@0
  6624
		not create them by default.
sl@0
  6625
sl@0
  6626
	2)	Removed references to defunct directory \e32\dmedia from MNT.BAT.
sl@0
  6627
sl@0
  6628
2) Jonathan
sl@0
  6629
	1)	Drain the Snowball 1 digitizer FIFO before enabling its interrupt to
sl@0
  6630
		prevent it from generating spurious and unwelcome penup/downs on
sl@0
  6631
		startup.
sl@0
  6632
	2)	P::SetMachineConfiguration() : delete the current password and update
sl@0
  6633
		the password from the new configuration.
sl@0
  6634
	3)	Dropping DTR on Snowball 1's 2nd serial port (the phone port)
sl@0
  6635
		asserts the ONKEY signal to the phone, allowing users of that serial
sl@0
  6636
		port to turn the phone on/off.
sl@0
  6637
	4)	Corrected size returned by Custom::XYInputSize() on Snowball().
sl@0
  6638
	5)	Hugely simplified the Snowball 1 key data tables.
sl@0
  6639
	6)	Added special support for the Snowball 1's Off key in the keyboard
sl@0
  6640
		driver. But this doesn't work.
sl@0
  6641
	7)	Belatedly updated kbarm files with support for Snowball 1.
sl@0
  6642
sl@0
  6643
Version 1.02.122
sl@0
  6644
================
sl@0
  6645
(Made by Graham, 23rd January 1998)
sl@0
  6646
sl@0
  6647
1) Jonathan
sl@0
  6648
	1)  Snowball 1. Don't reset the ASIC on startup.
sl@0
  6649
sl@0
  6650
2) Dennis
sl@0
  6651
	1)	New serial comms LDD and modified PDDs for all variants.
sl@0
  6652
sl@0
  6653
	2)	WINS comms LDD is now separate from the real comms LDDs. WINS LDD lives in
sl@0
  6654
		DPWINS directory with the WINS PDD, and is currently the same as the old comms LDD.
sl@0
  6655
sl@0
  6656
	3)	Added hooks to KEARM\KE_INT.CPP to allow another operating system to be bolted on to EPOC32.
sl@0
  6657
sl@0
  6658
	4)	Added test program T_PTNOS.CPP with LDD D_PTNOS.CPP to test the partner OS hooks.
sl@0
  6659
sl@0
  6660
	5)	Added a check to KPEPOC\KP_PROC.CPP to prevent two copies of a fixed-address
sl@0
  6661
		process from being created. DPlatProcess::DoCreate will leave with
sl@0
  6662
		KErrAlreadyExists if it finds a matching EXE code chunk belonging to a fixed
sl@0
  6663
		address process.
sl@0
  6664
sl@0
  6665
	6)	Added some more facilities to T_TERM.CPP, including file upload and download
sl@0
  6666
		and loopback.
sl@0
  6667
sl@0
  6668
	7)	Fixed typo in ARM boot code which caused problems by failing to map in the
sl@0
  6669
		CS1 ROM if ROM address 0x10000ec6 (physical) contained zero.
sl@0
  6670
sl@0
  6671
	8)	Fixed bug which could cause processes to be run with incorrect domain access
sl@0
  6672
		if an interrupt occurs during a reschedule. This caused machine to reset
sl@0
  6673
		during heavy keyboard use.
sl@0
  6674
sl@0
  6675
	9)	Added missing __NAKED__ declaration to ARM assembler versions of
sl@0
  6676
		TDes8::AppendNumUC() and TDes8::AppendNumFixedWidthUC().
sl@0
  6677
sl@0
  6678
	10)	Fixed problem in DThread::Write() (all 3 variants) - it was returning an error
sl@0
  6679
		code if the source descriptor had zero length and a null pointer.
sl@0
  6680
sl@0
  6681
3) Graham
sl@0
  6682
		1)      Created a new public header file - E32PANIC.H - which
sl@0
  6683
				contains the base panic numbers.
sl@0
  6684
sl@0
  6685
		2)      Split the test programs off into a new E32TEST
sl@0
  6686
				project.
sl@0
  6687
sl@0
  6688
	3)	Removed full exception handling from WINS and WINC if running under Windows '95.
sl@0
  6689
		E32's exception handling system relies on being able to asynchronously
sl@0
  6690
		meddle with another threads context and stack in order to inject a call
sl@0
  6691
		to an exception handler into that thread's normal train of execution. This
sl@0
  6692
		technique works with NT but Windows 95 is not up to it. It is clear that
sl@0
  6693
		not every operating system would be able to handle this. Consider, for example,
sl@0
  6694
		the possibility that the thread is inside an OS call when the call is injected.
sl@0
  6695
sl@0
  6696
4) Alastair
sl@0
  6697
	1)	Moved build system over to MAKMAKE.  The batch files for building E32 are
sl@0
  6698
		created by e32tools's BLDMAKE.  From the GROUP directory, type BLD or CLEAN
sl@0
  6699
		or PREPARE without any arguments for help on how to use the new batch
sl@0
  6700
		commands.  MAKMAKE has not yet been applied to the build system for MISA,
sl@0
  6701
		MX86.  CLEAN.BAT uses NMAKE to do its cleaning, so a PREPARE.BAT
sl@0
  6702
		needs to have been done first.  PREPARE.BAT will make the makefiles and
sl@0
  6703
		build the working directories.
sl@0
  6704
sl@0
  6705
	2)	Renamed freeze files from .FRZ to .DEF, including CONSMARM.FRZ, CONSMISA.FRZ
sl@0
  6706
		and CONSWINS.FRZ.
sl@0
  6707
sl@0
  6708
	3)	Removed WINS_UID statements from all source files.
sl@0
  6709
sl@0
  6710
	4)	Changed EDLL.O, EXDLL.O, EEXE.O so they are built by separate makefiles
sl@0
  6711
		rather than that of EUSER for MARM.
sl@0
  6712
sl@0
  6713
	5)	Changed KE_EXE.O so that it is built by a separate makefile rather than
sl@0
  6714
		that of EKERN for MARM.
sl@0
  6715
sl@0
  6716
	6)	Added SARMBE platform to the build process so big-endian single-process ARM
sl@0
  6717
		platform can be built.
sl@0
  6718
sl@0
  6719
sl@0
  6720
Version 1.02.121
sl@0
  6721
================
sl@0
  6722
(Made by Graham, 10th Dec 1997)
sl@0
  6723
sl@0
  6724
1) Dennis
sl@0
  6725
	1)	Fixed bug whereby CObjectIx::~CObjectIx could crash if Close()ing an object
sl@0
  6726
		in the index caused other objects to be removed from the index and thereby
sl@0
  6727
		caused the array to be ReAlloc()ed.
sl@0
  6728
sl@0
  6729
	2)	Speeded up TInt64 multiply a bit more on the ARM.
sl@0
  6730
sl@0
  6731
	3)	Added a mechanism whereby every DFC knows whether or not it is pending. Kern::Add
sl@0
  6732
		will now only queue the DFC if it is not already queued. DFCs are flagged unqueued
sl@0
  6733
		just before being run. A Queued() function is provided to discover whether a DFC
sl@0
  6734
		is currently queued or not, and a Cancel() function is provided to cancel a DFC
sl@0
  6735
		which is currently pending.
sl@0
  6736
sl@0
  6737
	4)	Added missing break statements to case EConsoleSetTitle and case EConsoleSetSize
sl@0
  6738
		in ws_main.cpp
sl@0
  6739
sl@0
  6740
	5)	Fixed bug in KBARM\BOOTROM1.S and KBSARM\BOOTROM1.S where a register was being
sl@0
  6741
		corrupted (subroutine WordMove corrupts r3) leading to the kernel BSS section not
sl@0
  6742
		being correctly zeroed on reset.
sl@0
  6743
sl@0
  6744
	6)	Fixed bug in TInt64::GetTReal() ARM machine code version - wrong shift count in one
sl@0
  6745
		instruction.
sl@0
  6746
sl@0
  6747
	7)	Added new function KFormat() to KS_UTL.CPP to do limited printf-style formatting
sl@0
  6748
		without using any EXEC calls. Modified Kern::Printf to use this function instead
sl@0
  6749
		of TDes::AppendFormatList(). This enables Kern::Printf to be used in fast exec
sl@0
  6750
		calls, interrupts etc. Use a static buffer to receive the formatted string instead
sl@0
  6751
		of an automatic one to avoid gobbling a large amount of stack.
sl@0
  6752
sl@0
  6753
	8)	Added a new flag ExecMutateFlag which is set by the IRQ and FIQ dispatchers if
sl@0
  6754
		an interrupt occurs in SVC mode. The fast executive dispatcher tests this flag on
sl@0
  6755
		return from the exec function and if it is set, DFCs and/or a reschedule will be
sl@0
  6756
		executed in the same way as for a slow exec call. This fills a hole in the interrupt
sl@0
  6757
		scheme whereby if an FIQ occurred during a fast executive call and queued a DFC,
sl@0
  6758
		the DFC would not be run before user code was resumed. This flag can also be set
sl@0
  6759
		by a fast executive call in order to allow rescheduling to occur.
sl@0
  6760
sl@0
  6761
	9)	Changed some executive calls from slow to fast to reduce overhead in the case where
sl@0
  6762
		a reschedule is not needed. These are ChunkBase, ChunkSize, ChunkBottom, ChunkTop,
sl@0
  6763
		ChunkMaxSize, MutexCount, MutexWait, MutexSignal, ProcessId, ProcessExitReason,
sl@0
  6764
		ProcessExitType, ProcessExitCategory, ProcessPriority, ProcessFlags, SemaphoreCount,
sl@0
  6765
		SemaphoreWait, SemaphoreSignal1, ServerReceive, SessionSend, ThreadId,
sl@0
  6766
		ThreadPriority, ThreadProcessPriority, ThreadFlags, ThreadExitType, ThreadExitReason,
sl@0
  6767
		ThreadExitCategory, ThreadRequestCount, ThreadRequestComplete, WaitForAnyRequest
sl@0
  6768
		and SvSendReceive.
sl@0
  6769
sl@0
  6770
	10) Use a different stack for IRQs (IrqStack) rather than the reentrant stack. This
sl@0
  6771
		allows IRQs to be enabled during a fast executive call. ThreadRequestComplete,
sl@0
  6772
		SessionSend, SvSendReceive, ServerReceive enable IRQs during their execution.
sl@0
  6773
sl@0
  6774
	11)	Modified the exception handling mechanism. All exceptions are now placed into
sl@0
  6775
		one of three categories:
sl@0
  6776
sl@0
  6777
		Fatal		(exceptions in IRQ, FIQ or ABT mode) - these always cause a kernel fault
sl@0
  6778
		Critical	(SVC mode or UND mode with the kernel locked) - these cause a kernel
sl@0
  6779
					fault unless exception trapping is enabled (DThread::iExceptionErrorCode)
sl@0
  6780
		Noncritical	(user mode or UND mode with the kernel unlocked) - these are handled by
sl@0
  6781
					exception trapping, thread exception handler, global exception handler
sl@0
  6782
					in that order. If none of these is active, the current thread is paniced,
sl@0
  6783
					and if that thread has the system flag set a kernel fault results.
sl@0
  6784
sl@0
  6785
	12)	If an exception occurs while the kernel is locked, DFCs will not be run at the end
sl@0
  6786
		of the exception handler.
sl@0
  6787
sl@0
  6788
	13)	PD Variant::Init3() now sets CS1 ROM size to 4Mb and total ROM size to 8Mb.
sl@0
  6789
sl@0
  6790
sl@0
  6791
2) Morgan
sl@0
  6792
	1)	Renamed Dll::Data to Dll::InitialiseData()
sl@0
  6793
	2)	Fixed zeroing bss for Dll data in ROM
sl@0
  6794
sl@0
  6795
sl@0
  6796
Version 1.02.120
sl@0
  6797
================
sl@0
  6798
(Made by Jonathan, 24th Nov 1997)
sl@0
  6799
sl@0
  6800
1) Pete
sl@0
  6801
	A) Various changes to PC Card Controller to fully support I/O cards as well as memory cards:-
sl@0
  6802
sl@0
  6803
	1)	Added a new (exported) PC card controller function -
sl@0
  6804
		TInt DPcCardCntrl::RestoreCardPower(TSocket aSocket, TInt aResetProfile).
sl@0
  6805
		This re-applies power to a PC Card which has previously been successfully powered by the system.
sl@0
  6806
		If a media change has occurred on the socket since it was last powered then function will
sl@0
  6807
		immediately return KErrGeneral. The power up process is the same as carried out by the controller
sl@0
  6808
		function PowerUpCard() - wait up to 2.5Secs for card to become ready using specified reset
sl@0
  6809
		profile. However, this function doesn't implement a TRequestStatus mechanism when complete.
sl@0
  6810
		It is left to the caller to poll the card status. If the card had previously been configured when
sl@0
  6811
		powered and the configuration options allow the configuration to be restored (see 3) then the
sl@0
  6812
		card will be reconfigured automatically when it is re-powered.
sl@0
  6813
	2) 	Modified the PC card controller function DPcCardCntrl::PowerUpCard() so that, like RestoreCardPower()
sl@0
  6814
		it re-configures PC cards which were previously configured when the card was powered down if a media
sl@0
  6815
		change hasn't happened since. Also, the optional last parameter (was TInt aResetLen, now TInt
sl@0
  6816
		aResetProfile) now specifies both the reset length and a pause after the card becomes ready. The upper
sl@0
  6817
		16bit word specifies a pause period (in 20mS units) after the card signals it is ready before the
sl@0
  6818
		controller updates the socket status (and TRequestStatus is signalled). The lower 16bit word specified
sl@0
  6819
		the length of the reset pulse (also in 20mS units) applied to the card.
sl@0
  6820
	3) 	Added a new version of the PC card controller function DPcCardCntrl::RequestConfig(). The new
sl@0
  6821
		version has an additional parameter 'TUint aFlag' (the old version is now obsolete). The only
sl@0
  6822
		flag currently defined is 'KPccdConfigRestorable' which is set if the config may be restored
sl@0
  6823
		automatically by the controller if the card is re-powered (see 1 and 2).
sl@0
  6824
	4) 	Added new values to TPccdSocketStatus (to support 1,2 and 14). This can now have the following
sl@0
  6825
		values:-
sl@0
  6826
		- ESocketFullyOff: 	Card not present or present but not yet powered.
sl@0
  6827
		- ESocketPoweredDown: 	Card present, not currently powered but has been powered
sl@0
  6828
						and could be restored to previous configuration (ie no media change
sl@0
  6829
						since it was last powered).
sl@0
  6830
		- ESocketBatTooLow:	Card present, but not currently powered. A previous attempt to
sl@0
  6831
						power the card failed because the main battery voltage was too low.
sl@0
  6832
		- ESocketNotReset:	Card present and powered, waiting for it to become ready.
sl@0
  6833
		- ESocketReady:		Card present, powered and ready.
sl@0
  6834
		- ESocketCorruptCard:	Card present but not powered since it cannot be recognised by
sl@0
  6835
						controller (not used yet).
sl@0
  6836
	5) 	Changed the PC card controller event type that causes the mount status of TLocalDrive objects
sl@0
  6837
		(associated with PC card media) to be updated. Before, the status was updated on a power-up
sl@0
  6838
		event (EPccdEvPwrUp) meaning that any subsequent access to the TLocalDrive object would
sl@0
  6839
		be preceded by a remount.  Having it on power-up rather than power-down meant the media drive
sl@0
  6840
		system only had to bind to one event rather than EPccdEvPwrDown and EPccdEvEmergencyPwrDown.
sl@0
  6841
		This however meant it was not possible to power-down cards during periods of inactivity. The
sl@0
  6842
		media drive system now binds to power-down events.
sl@0
  6843
	6) 	Change to ATA media driver (MEDATA) on ARM architectures brought about by the emergency power
sl@0
  6844
		down changes in E32-V115. The driver was bound to the PC card controller emergency power down
sl@0
  6845
		event. Since the driver's event callback is now called on a DFC, changes have been necessary
sl@0
  6846
		to handle card writes aborted by emergency power down.
sl@0
  6847
	7) 	Added a new (exported) PC card controller function -
sl@0
  6848
			TInt DPcCardCntrl::SetEvent(TSocket aSocket, TPccdEvent anEvent, TInt anInfo);
sl@0
  6849
		This allows drivers etc to generate PC card events. It also allows extra info to be passed to
sl@0
  6850
		callback functions via 'anInfo' (see 8 below).
sl@0
  6851
	8)	TPccdCallBack has an extra member 'TInt iCallBackInfo' which can be used to provide extra info.
sl@0
  6852
		on a PC card controller event. Extra info on the reason for card power down is now provided in
sl@0
  6853
		iCallBackInfo for EPccdEvPwrDown events.
sl@0
  6854
	9) 	The following functions have been added to the custom DLL:-
sl@0
  6855
			TPtrC PcCardMediaChangeIntSource(TInt aMediaChange)
sl@0
  6856
			void ClearPcCardMediaChangeInt(TInt aMediaChange)
sl@0
  6857
			TMediaState PcCardMediaState(TInt aMediaChange);
sl@0
  6858
		Prior to these changes the PC card controller media change implementation was completely
sl@0
  6859
		implemented in the architecture level and above, meaning that variations to the media change
sl@0
  6860
		system couldn't be handled without a new architecture.
sl@0
  6861
		Also added an additional member 'TInt iMediaDoorCloseDelay' to 'TPccdCntrlMachineInfo' (returned by the
sl@0
  6862
		custom function PcCardMachineInfo()) which allows the media door switch de-bounce parameter to be specified
sl@0
  6863
		in the custom.
sl@0
  6864
	10) 	Support for dual voltage PC Card sockets added. These are sockets where the VCC voltage can be
sl@0
  6865
		altered depending on the type of card detected (typically 3.3V or 5V). The system implemented,
sl@0
  6866
		initially sets the socket VCC depending on the voltage setting indicated by the cards VS (voltage sense)
sl@0
  6867
		signals. Dynamically changing the socket VCC once the card is powered (in response to information in
sl@0
  6868
		a card's CIS etc) is not supported.
sl@0
  6869
	11) 	Added a new (exported) PC card controller function -
sl@0
  6870
			TPccdSocketVcc DPcCardCntrl::SocketVcc(TSocket aSocket);
sl@0
  6871
		This returns the current VCC setting for the specified socket. Note that this function
sl@0
  6872
		returns info on its current VCC setting even when the supply is turned off.
sl@0
  6873
	12) 	Generally tidy up of the ARM PC card controller VCC implementation. Additions of the following
sl@0
  6874
		function to custom DLL:-
sl@0
  6875
			PcCardVccInfo(TInt aPsu,TPccdCntrlVccInfo &aninfo).
sl@0
  6876
		TPccdCntrlVccInfo is defined:-
sl@0
  6877
			class TPccdCntrlVccInfo
sl@0
  6878
				{
sl@0
  6879
			public:
sl@0
  6880
				TUint iVoltageSupported;
sl@0
  6881
				TInt iMaxCurrentInMicroAmps;
sl@0
  6882
				TUint iVoltCheckInterval;
sl@0
  6883
				TPccdPsuVoltChkMthd iVoltCheckMethod;
sl@0
  6884
				};
sl@0
  6885
		This specifies the voltage(s) that the supply supports (5V,3.3V etc), the maximum current
sl@0
  6886
		it can supply, when the o/p of the supply should be checked (once when first turned on,
sl@0
  6887
		or continuously while on) and how the voltage should be check (via the ADC channel reserved
sl@0
  6888
		for the PC card controller or via a variant layer function).
sl@0
  6889
	13) 	TPcCardPsu renamed to TPcCardVcc since it now has functionality which could
sl@0
  6890
		only be attributed to a VCC supply (eg 10&12 above) rather than a generic PC Card supply.
sl@0
  6891
	14)	Added an additional member 'TInt iDisableOnLowBattery' to 'TPccdCntrlMachineInfo' (returned by the
sl@0
  6892
		custom function PcCardMachineInfo()). This can be used to set a battery level (see TSupplyStatus) such that
sl@0
  6893
		if the main battery level is below this level, the PC card controller will no longer power up
sl@0
  6894
		any PC cards. Set to EZero to disable this feature.
sl@0
  6895
	15) 	Fixed problem clearing PC Card IREQ interrupts on ARM. On ARM platforms the PC card controller
sl@0
  6896
		IREQ interrupt service routine was clearing the interrupt in the controller hardware (ETNA)
sl@0
  6897
		before calling any ISRs bound by drivers. Since it is generally the driver ISR which clears
sl@0
  6898
		the source of the interrupt on the card you end up with a second bogus IREQ interrupt. This
sl@0
  6899
		only occurs when 'level mode' interrupts are enabled, not 'pulse mode'. Pulse mode interrupts
sl@0
  6900
		are selected if supported which is why the problem was only discovered so late in the day.
sl@0
  6901
	16)	Changed the reset timing when powering up a PC card. Now:- Apply reset for 100mS, wait up to 2.5Seconds
sl@0
  6902
		for card to become ready, delay any access to the card for a further 100mS after ready. (Was:- apply reset
sl@0
  6903
		for 60mS, wait 2.5Seconds for ready and no delay on subsequent access).
sl@0
  6904
	17) 	Fixed problem in PC card serial port PDD where the destructor could be called before the member
sl@0
  6905
		'iSocket' was initiated. The destructor calls PcCardCntrl::PowerDownCard(iSocket). This was
sl@0
  6906
		a particular problem on rack D where the PC card socket is socket 1 (CF card socket is socket 0)
sl@0
  6907
		and the rack hw doesn't fully isolate the two sockets. Certain comms programs attempt to open a channel
sl@0
  6908
		on the PC card serial port while a channel is already open on this device. These subsequent attempts fail
sl@0
  6909
		calling the PDD destructor which then was incorrectly powering off the wrong socket. Due to the h/w
sl@0
  6910
		implementation, this was actually resulting in the serial PC card being reset.
sl@0
  6911
	18) 	Fixed a problem affecting EXTFIQ. Once you bound a TInterrupt to EXTFIQ it was not possible to unbind
sl@0
  6912
		again.
sl@0
  6913
	19) 	Added the following test programs to TPCCD:-
sl@0
  6914
		i)T_MEDCH (and associated LDD MEDCH.LDD): Soak test of Compact Flash (ATA) - h/w media changes.
sl@0
  6915
		ii)T_EXTFIQ (and associated LDD EXTFIQ.LDD): Continuously generates EXTFIQ on rack D using EXTFIQ.LDD.
sl@0
  6916
		iii)T_BEXFIQ (and associated LDD BEXFIQ.LDD): Generates EXTFIQ on rack D, associated LDD binds and clears
sl@0
  6917
		FIQ.
sl@0
  6918
		Also modified DRVSOAK to better support emergency power down testing.
sl@0
  6919
sl@0
  6920
	B) 	Modification to serial comms in order to support PC card serial devices:-
sl@0
  6921
sl@0
  6922
	20) 	Added mechanism for opening a channel on a PC Card I/O device. These devices requires an asynchronous
sl@0
  6923
		power-up of the card before the standard channel open mechanism can take place. In the case of some PC
sl@0
  6924
		Cards (e.g. Serial port cards) there needs to be a further asynchronous phase after creating the PDD
sl@0
  6925
		before the channel is fully open.
sl@0
  6926
		Added a kernel slow exec function:-
sl@0
  6927
			TInt RLogicalChannel::CheckOpenMode(const TDesC &aLogicalDevice,const TVersion &aVer,TInt aUnit);
sl@0
  6928
		This is called once each time a channel is opened. If the return value is <0 then the open proceeds as
sl@0
  6929
		normal. Otherwise, it indicates that a 1 or 2 phase asynchronous open is required. (This function would
sl@0
  6930
		normally ripple down to the custom DLL).
sl@0
  6931
		Added a kernel supervisor function:-
sl@0
  6932
			TInt RLogicalChannel::DoSlowOpen(TInt aMode,TInt anInfo,TRequestStatus &aStatus);
sl@0
  6933
		This initiates the asynchronous parts of the operation. 'aMode' is either KChanSlowOpenPhase1 or
sl@0
  6934
		KChanSlowOpenPhase1 to indicate whether its the aynchronous phase before or after the normal open. 'anInfo'
sl@0
  6935
		is derived from the value returned from CheckOpenMode() and normally indicates the PC Card socket in
sl@0
  6936
		question. TInt RLogicalChannel::DoCreate() has been modified to include these extra operations.
sl@0
  6937
		An extra pure virtual function:-
sl@0
  6938
			TInt DComm::CompleteSlowOpen(DThread *aThread,TRequestStatus *aReqStat);
sl@0
  6939
		had to be added to DComm in order to implement the 2nd asynchronous open phase.
sl@0
  6940
	21) 	Modified PC card serial port PDD to take advantage of the above PDD open scheme (20) so that the PDD now
sl@0
  6941
		fully controls the PC card. (Before it relied on the media system having already powered up the PC Card and
sl@0
  6942
		didn't properly perform the 2nd part of the initialisation). Also modified the PDD so that it re-applies
sl@0
  6943
		power and re-configures the Serial PC Card each time the system comes out of standby (eg machine switched
sl@0
  6944
		off, emergency power down etc).
sl@0
  6945
	22) 	Changes to LDD to handle PC Card media change events (ie media door open or card removal - dependant on
sl@0
  6946
		platform).
sl@0
  6947
			As far as I can gather, in the serial LDD, iStatus==EClosed never occurs. I now force the LDD into
sl@0
  6948
		this state from a PC Card PDD when a media change is detected. The serial port now needs to be disabled
sl@0
  6949
		(for good) because it has been powered down (and in all likelyhood removed). Once in this state
sl@0
  6950
		you never should to change to any other state. Any write requests return with KErrNotReady which hopefully
sl@0
  6951
		will give any client a clue that they shouldn't have removed the PC card serial port while using it. This
sl@0
  6952
		is an intermediate solution. The eventual plan (involving a the invention of a new RDevCom type class) will
sl@0
  6953
		handle the media change and re-power the serial PC card (if still there) before any requests get down to
sl@0
  6954
		the LDD. However, you need an asychronous supervisor kernel call to restore a PC card after media change
sl@0
  6955
		which can't be acheived with the present scheme. It is possible to re-power the PC card when coming out of
sl@0
  6956
		standby (machine turned off etc) because you know the same PC card is still present and hence you don't
sl@0
  6957
		need to alter any memory allocation associated with the card.
sl@0
  6958
	23)	Modified PC card serial port PDD to enable serial interrupts for modem signal status changes (CTS,DCD,DSR,
sl@0
  6959
		RI). Prior to this, h/w flow control wasn't supported on this serial device.
sl@0
  6960
	24) 	Modified PC card serial port PDD to update system current consumption info. This info is derived from the
sl@0
  6961
		PC card CIS where possible.
sl@0
  6962
	25) 	Modified PC card serial port PDD to determine its baudrate capabilities from 'max baudrate supported' field
sl@0
  6963
		(if present) in the CIS. Also, limit baudrate (capabilities) to 19200 if serial card doesn't contain a FIFO.
sl@0
  6964
	26) 	Added the following test programs to TCOMM:-
sl@0
  6965
		i)T_MODEM1: Test code for PC Card Modem Serial Ports (analogue loopback).
sl@0
  6966
		ii)T_COMSOAK1: Serial port soak test program (requires loopback connector).
sl@0
  6967
		iii)T_AMPV: Approval test code for PC Card Adapter.
sl@0
  6968
		iv) T_MODEM2: T_SERIAL for PC card serial port. Instead of looping COM1 to COM2(Etna) it loops
sl@0
  6969
			COM1 to COM3 expecting a PC Card Socket I/O Serial card.
sl@0
  6970
		Also modified T_TERM so it can be used to open a channel on COM3. (Also added extra error reporting).
sl@0
  6971
sl@0
  6972
2) Jonathan
sl@0
  6973
	1)	Old Snowball variant SA retired.
sl@0
  6974
	2)	New Snowball variant S1 for Prototype 3 units. Major changes from SB:
sl@0
  6975
		- Combined PDD for Eiger and ASIC serial ports using shared modem
sl@0
  6976
		  status interrupt.
sl@0
  6977
		- Variant-specific LDD for use on ASIC serial port only - implements
sl@0
  6978
		  Spark phone's weird CTS handshaking.
sl@0
  6979
		- QuickEmergencyStandby handler.
sl@0
  6980
	3)	New PhysicalScreenWidth and PhysicalScreenHeight values for
sl@0
  6981
		\epoc32\data\system.ini, see kpwins\kp_gui.cpp .
sl@0
  6982
	4)  Prevented *\va_sdrv.cpp from trying to Disable or UnBind when unbound
sl@0
  6983
		from its interrupt.
sl@0
  6984
sl@0
  6985
sl@0
  6986
Version 1.02.119
sl@0
  6987
================
sl@0
  6988
(Made by Morgan, 7th Nov 1997)
sl@0
  6989
sl@0
  6990
1) Alastair
sl@0
  6991
	1) SARM
sl@0
  6992
		Integrated Single-process code into e32 source allowing SARM roms to be
sl@0
  6993
		created.  Build commands are mnt sarm, sarmall, sarmrel etc.  There are no
sl@0
  6994
		releaseables and no facilities for building test programs.  SARM builds
sl@0
  6995
		use the "__SINGLE__" macro for distinguishing Single-process-specific
sl@0
  6996
		code.  Work directories are \epoc32\build\e32\sarm\[build] and
sl@0
  6997
		\epoc32\release\sarm\[build].  SARM makefiles are generated into
sl@0
  6998
		\e32\bsarm using perl to process makefiles from \e32\bmarm as a
sl@0
  6999
		temporary measure prior to the use of makmake for creating e32
sl@0
  7000
		makefiles.  SARM roms are built from directory \e32\kbsarm, and require
sl@0
  7001
		a special version of rombuild - the makefile for this special version
sl@0
  7002
		will be released with e32tools version 082.
sl@0
  7003
sl@0
  7004
	Major changes
sl@0
  7005
	a)	\e32\kbsarm - contains special versions of bootrom1.s and rom.oby.
sl@0
  7006
sl@0
  7007
	b)	\e32\inc - changes to e32rom.h, k32std.h, m32mmu.h, m32std.h and
sl@0
  7008
		v32eiger.h so that different linear address constants are defined
sl@0
  7009
		for __SINGLE__ builds.
sl@0
  7010
sl@0
  7011
								__SINGLE__						(MULTI)
sl@0
  7012
		KRomHeaderLinAddr		0x00000000						0x50000000
sl@0
  7013
		KSuperPageLinAddr		0xC0000000						0x40000000
sl@0
  7014
		KHomeBase				0xC0000000						0x80000000
sl@0
  7015
		KHomeEnd				KHomebase+0x3fffff				0xffffffff
sl@0
  7016
		KHwLinBase				0xa0000000						0x60000000
sl@0
  7017
		KHwLinEnd				0xbfffffff						0x7fffffff
sl@0
  7018
		KEigerBaseAddress		0x80000000						0x58000000
sl@0
  7019
sl@0
  7020
	c)	\e32\kpepoc\kp_chk.cpp - __SINGLE__ chunks are allocated in the kernel's
sl@0
  7021
		heap - they cannot change in size and don't move.  Since SARM roms do not
sl@0
  7022
		utilise the MMU.  The actual size of a chunk is a compromise between the
sl@0
  7023
		initial and maximum sizes requested when a chunk is created.
sl@0
  7024
sl@0
  7025
	File changes
sl@0
  7026
	d)	bsarm\*
sl@0
  7027
		dpepoc\d_medint
sl@0
  7028
		group\mnt.cmd
sl@0
  7029
		inc\ - e32rom.h, k32std.h, m32mmu.h, m32std.h, v32eiger.h
sl@0
  7030
		kbsarm\*
sl@0
  7031
		kearm\ - ke_ini, ke_int, ke_mmu, ke_utl
sl@0
  7032
		kpehal\ - kph_inf, kph_pic
sl@0
  7033
		kpemmu\ - kpm_mmu.cpp
sl@0
  7034
		kpepoc\ - kp_chk, kp_ini, kp_proc, kp_reg, kp_std.h, kp_thrd, kp_utl
sl@0
  7035
		ksrc\ - ks_svr, ks_utl
sl@0
  7036
		varmpd\va_hw
sl@0
  7037
		wsrc\wd_eiger
sl@0
  7038
sl@0
  7039
	2)	Added UNICODE.H to e32\inc\incc.prj so that the file is released.
sl@0
  7040
sl@0
  7041
	3)	Changed WINS command line processing such that only switches specified
sl@0
  7042
		before "--" is encountered are processed.  Switches after the "--" switch,
sl@0
  7043
		or all switches if the "--" switch is not specified, are ignored.
sl@0
  7044
sl@0
  7045
	4)	Added -L<language Index> switch to WINS command line so that
sl@0
  7046
		different Epoc locales can be specified.  Eg "WSEXE -L5 --" will
sl@0
  7047
		mean that elocl5.dll rather than elocl.dll is loaded.
sl@0
  7048
sl@0
  7049
2) Dennis
sl@0
  7050
	1)	Rewrote MMU code. Major changes are:
sl@0
  7051
		i)		Linear address map has changed - see file KEARM\KE_MMU.CPP
sl@0
  7052
		ii)		RAM drive is at fixed linear address but no longer composed of consecutive
sl@0
  7053
				physical RAM pages.
sl@0
  7054
		iii)	The free page pool has been removed.
sl@0
  7055
		iv)		The ROM is mapped with section descriptors on the ARM instead of 4K pages.
sl@0
  7056
		v)		Chunks can be adjusted in place rather than only in the home section.
sl@0
  7057
		vi)		On the ARM extra protection has been added for page tables, registry
sl@0
  7058
				and RAM drive.
sl@0
  7059
		vii)	ROM layout is different - the kernel data is at 80000000, followed by
sl@0
  7060
				static data for fixed-address ROM processes (see below). The kernel
sl@0
  7061
				stack follows the last fixed-address data chunk, and the home section
sl@0
  7062
				starts with the kernel stack chunk.
sl@0
  7063
sl@0
  7064
	2)	Modified process handling and scheduling:
sl@0
  7065
		i)		Now have two classes of process. One class has its chunks mapped down
sl@0
  7066
				into the data section while running, the other class has its chunks
sl@0
  7067
				at the same linear address all the time. The latter class is used for
sl@0
  7068
				system servers. It reduces the need for cache flushing - this is only
sl@0
  7069
				required if any chunks have moved - and thus gives a considerable speed
sl@0
  7070
				increase.
sl@0
  7071
		ii)		ROM fixed address processes specified in .OBY file
sl@0
  7072
				RAM fixed address processes specified by setting KImageFixedAddressExe flag
sl@0
  7073
		iii)	On the ARM, a domain will be allocated to every fixed-address process.
sl@0
  7074
				All the process' local chunks will be located in this domain. In addition,
sl@0
  7075
				every global chunk created by a fixed-address process will be allocated
sl@0
  7076
				a domain. The use of domains removes the need for page directory
sl@0
  7077
				manipulation when switching between these processes.
sl@0
  7078
		iv)		The scheduler has been machine coded for ARM and ISA. Actions performed
sl@0
  7079
				on switching between processes now depend on the attributes of these
sl@0
  7080
				processes.
sl@0
  7081
sl@0
  7082
	3)	Added ARM machine coded message passing and semaphore code.
sl@0
  7083
sl@0
  7084
	4)	Modified inter-process reading and writing code. Two functions have been added:
sl@0
  7085
		i)		TAny* DPlatThread::CurrentAddress(TAny *anAddress);
sl@0
  7086
				This function returns the current linear address corresponding to an
sl@0
  7087
				address in the thread's address space. No translation is done for addresses
sl@0
  7088
				above 0x40000000 or if the thread's process is currently running.
sl@0
  7089
				This function is used to convert addresses for reading.
sl@0
  7090
		ii)		TAny* DPlatThread::CurrentAddress(TAny *anAddress, TInt& aMaxSize);
sl@0
  7091
				This function returns the current linear address corresponding to an
sl@0
  7092
				address in the thread's address space and also the maximum size of a write
sl@0
  7093
				to the thread's address space (end of chunk - specified address).
sl@0
  7094
				Chunk lookup is always performed.
sl@0
  7095
				This function is used to convert addresses for writing.
sl@0
  7096
sl@0
  7097
	5)	Kernel faults now restart the system from the reset vector. The MMU backup
sl@0
  7098
		page has been removed.
sl@0
  7099
sl@0
  7100
	6)	Added double-ended chunks. These are regions of memory where the committed
sl@0
  7101
		region can start at any address in the reserved range, rather than always starting
sl@0
  7102
		at the base of the reserved range. Added functions
sl@0
  7103
		i)		RChunk::CreateDoubleEndedLocal()
sl@0
  7104
				Create a local double-ended chunk with a specified maximum size and
sl@0
  7105
				a specified initial committed region.
sl@0
  7106
		ii)		RChunk::CreateDoubleEndedGlobal()
sl@0
  7107
				Create a global named double-ended chunk with a specified maximum size and
sl@0
  7108
				a specified initial committed region.
sl@0
  7109
		iii)	RChunk::AdjustDoubleEnded()
sl@0
  7110
				Adjust the position and/or size of the committed region. If the initial
sl@0
  7111
				and final regions intersect, the contents of the intersection are
sl@0
  7112
				unchanged. Other parts of the committed region have undefined contents.
sl@0
  7113
		iv)		RChunk::Bottom()
sl@0
  7114
				Returns the offset of the base of the committed region from the base of
sl@0
  7115
				the reserved region (RChunk::Base()).
sl@0
  7116
		v)		RChunk::Top()
sl@0
  7117
				Returns the offset of the top of the committed region from the base of
sl@0
  7118
				the reserved region. ( Top() = Bottom()+Size() )
sl@0
  7119
		RChunk::Size() always returns the size of the committed region.
sl@0
  7120
sl@0
  7121
	7)	Extended the CBitMapAllocator class. Functions added are:
sl@0
  7122
		i)		TInt Alloc(TInt aCount, TInt& aConsecutive)
sl@0
  7123
				Allocates from the first free position as many consecutive positions as
sl@0
  7124
				possible, up to aCount. Returns the first free position, and aConsecutive
sl@0
  7125
				equal to the number of positions allocated.
sl@0
  7126
		ii)		TInt AllocAligned(TInt anAlignment)
sl@0
  7127
				Allocates a position whose number is an exact multiple of 2^anAlignment.
sl@0
  7128
		iii)	TInt AllocAlignedBlock(TInt anAlignment)
sl@0
  7129
				Allocates a block of 2^anAlignment consecutive positions such that the
sl@0
  7130
				first position is an exact multiple of 2^anAlignment. Returns the
sl@0
  7131
				first position.
sl@0
  7132
		iv)		AllocAt(TInt aPos, TInt aCount)
sl@0
  7133
				Allocates aCount positions starting at aPos.
sl@0
  7134
		v)		Free(TInt aPos, TInt aCount)
sl@0
  7135
				Frees aCount positions starting at aPos.
sl@0
  7136
		iv)		TBool IsFree(TInt aPos, TInt aCount)
sl@0
  7137
				Returns TRUE if and only if positions [aPos,aPos+aCount) are all free.
sl@0
  7138
sl@0
  7139
	8)	Modified Math::Sin, Math::Cos and Math::Tan functions to return exact answers
sl@0
  7140
		when input values are exact multiples of pi/2. This is done by adding tests of
sl@0
  7141
		the form
sl@0
  7142
		IF ( ABS(x MOD pi) < 2^-52 * ABS(x) )
sl@0
  7143
			return exact answer
sl@0
  7144
		ELSE
sl@0
  7145
			do calculation as before
sl@0
  7146
		ENDIF
sl@0
  7147
sl@0
  7148
	9)	Modified TTime::Convert(const TDateTime&) and TTime::DateTime() in order
sl@0
  7149
		to minimise the number of divisions involved and to use 32 bit arithmetic
sl@0
  7150
		rather than 64 bit wherever possible. The latter of these functions gets
sl@0
  7151
		called frequently by the window server on a periodic timer.
sl@0
  7152
sl@0
  7153
	10)	Added functions TDes8/TDes16 :: (Append)NumFixedWidth(UC)
sl@0
  7154
		These convert 32-bit integers to descriptors in a specified radix, adding leading
sl@0
  7155
		zeros up to the specified field width. These are intended to replace calls of
sl@0
  7156
		the form
sl@0
  7157
			des.Format(_L("%08x"),value)
sl@0
  7158
		which are very inefficient. All Format() calls in E32 have been replaced, apart
sl@0
  7159
		from the ones which use an overflow handler.
sl@0
  7160
sl@0
  7161
	11)	Fixed problem with comms driver causing reset if an interrupt occurs while the
sl@0
  7162
		kernel server is closing a comms channel. This was caused by the interrupt queuing
sl@0
  7163
		a DFC which refers to the comms channel being closed. The DFC runs after the
sl@0
  7164
		kernel server has deleted the channel, and resets the machine when it tries to
sl@0
  7165
		access the nonexistent channel.
sl@0
  7166
sl@0
  7167
	12)	Files changed:
sl@0
  7168
		dcomm\	d_comm.cpp
sl@0
  7169
		dpepoc\	d_medint.cpp
sl@0
  7170
		dvideo\	ws_disp.cpp
sl@0
  7171
		inc\	e32base.h, e32des8.h, e32des16.h, e32rom.h, e32std.h, e32svr.h,
sl@0
  7172
				k32std.h, k32std.inl, m32std.h, m32std.inl, m32hal.h, u32std.h, v32eiger.h
sl@0
  7173
				m32mmu.h and m32mmu.inl have been removed
sl@0
  7174
		kbarm\	bootrom1.s, rom.oby
sl@0
  7175
		kbx86\	boot486.asm, bootrom.asm, build.cmd, e32d.oby, e32r.oby, m486.bat,
sl@0
  7176
				romdefs.inc, romhead.inc
sl@0
  7177
		kbsarm\	bootrom1.s
sl@0
  7178
		kearm\	ke_dat.cpp, ke_dbg.cpp, ke_ini.cpp, ke_int.cpp, ke_mmu.cpp, ke_pccd.cpp,
sl@0
  7179
				ke_pic.cpp, ke_psu.cpp, ke_std.h, ke_thrd.cpp, ke_utl.cpp
sl@0
  7180
				ke_all.cpp deleted, ke_sched.cpp added
sl@0
  7181
		keisa\	ke_dat.cpp, ke_dbg.cpp, ke_ini.cpp, ke_int.cpp, ke_mmu.cpp, ke_pccd.cpp,
sl@0
  7182
				ke_std.h, ke_thrd.cpp, ke_utl.cpp
sl@0
  7183
				ke_all.cpp deleted, ke_sched.cpp added
sl@0
  7184
		kex86\	ke_exc.cpp, ke_ini.cpp, ke_int.cpp, ke_mmu.cpp, ke_std.h, ke_thrd.cpp,
sl@0
  7185
				ke_utl.cpp
sl@0
  7186
				ke_all.cpp deleted
sl@0
  7187
		kpehal\	kph_dbg.cpp, kph_inf.cpp, kph_pic.cpp
sl@0
  7188
		kpemmu\	kpm_mmu.cpp
sl@0
  7189
				kpm_all.cpp, kpm_regn.cpp, kpm_sect.cpp deleted
sl@0
  7190
		kpepoc\	kp_chk.cpp, kp_dat.cpp, kp_dev.cpp, kp_ini.cpp, kp_proc.cpp, kp_reg.cpp,
sl@0
  7191
				kp_sched.cpp, kp_sem.cpp, kp_thrd.cpp, kp_utl.cpp
sl@0
  7192
		kpwins\	kp_chk.cpp, kp_ini.cpp, kp_proc.cpp, kp_std.h, kp_thrd.cpp, kp_utl.cpp
sl@0
  7193
		ksrc\	ks_chk.cpp, ks_exec.cpp, ks_ldd.cpp, ks_lib.cpp, ks_mes.cpp, ks_pdd.cpp,
sl@0
  7194
				ks_proc.cpp, ks_svr.cpp, ks_thrd.cpp, ks_utl.cpp
sl@0
  7195
		ubas\	ub_bma.cpp, ub_obj.cpp, ub_std.h
sl@0
  7196
		ucdt\	uc_des8.cpp, uc_des16.cpp, uc_exec.cpp, uc_func.cpp, uc_ksvr.cpp,
sl@0
  7197
				uc_reg.cpp, uc_std.h, uc_time.cpp
sl@0
  7198
		umath\	um_rtod.cpp, um_sin.cpp, um_tan.cpp
sl@0
  7199
		upmarm\	up_des8.cpp, up_exec.cpp, up_utl.cpp
sl@0
  7200
		upmx86\	up_exec.cpp
sl@0
  7201
		upwins\	up_exec.cpp
sl@0
  7202
		vx86pc\	vx_vga.cpp
sl@0
  7203
sl@0
  7204
sl@0
  7205
3) Morgan
sl@0
  7206
	1)	Added dll process attach and detach for ARM and X86 builds
sl@0
  7207
	2)	Added RThread::Context(TDes8 &aDes) to retrieve the register contents of
sl@0
  7208
		a sleeping thread.
sl@0
  7209
	3)	Added RChunk::ReserveAt(TUint8 *) to force allocation of a chunk at the
sl@0
  7210
		specified linear address.
sl@0
  7211
	4)	Ldd/Pdds with static data was broken.  Now fixed.
sl@0
  7212
	5)	Loading Dlls with writable static data now allocates a Data/Bss chunk
sl@0
  7213
		and offers it to F32 to be fixed up.
sl@0
  7214
	6)	Added TInt Dll::Data() to initialise Dll writable static data
sl@0
  7215
sl@0
  7216
sl@0
  7217
Version 1.02.118
sl@0
  7218
================
sl@0
  7219
(Made by Jonathan, 15th October 1997)
sl@0
  7220
sl@0
  7221
1) Dennis
sl@0
  7222
	1)	Rewrote CObjectIx, CObjectCon and CObjectConIx classes to do their own
sl@0
  7223
		array handling instead of using CArrayFixFlat.
sl@0
  7224
sl@0
  7225
	2)	Added ARM machine-coded versions of CObjectIx::At, CObjectIx::operator[],
sl@0
  7226
		CObjectCon::At and CObjectCon::operator[].
sl@0
  7227
sl@0
  7228
	3)	Added ARM machine-coded versions of CActiveScheduler::Start() and
sl@0
  7229
		CServer::RunL().
sl@0
  7230
sl@0
  7231
	4)	Removed CArrayFixFlat from DPlatProcess. Custom array handling code is now
sl@0
  7232
		used to store the chunks being used by a process.
sl@0
  7233
sl@0
  7234
	5)	Added ARM machine-coded versions of some commonly used fast Exec:: calls and
sl@0
  7235
		of DPlatProcess::LookupChunk().
sl@0
  7236
sl@0
  7237
2) Morgan
sl@0
  7238
	1)	Added -M<machineName> switch to WINS command line to pick up
sl@0
  7239
		alternate System ini files from \epoc32\Data.  eg WSEXE -Mfungus
sl@0
  7240
		will use \epoc32\data\fungus.ini
sl@0
  7241
	2)	Froze the Custom Dll against V1.01 E32(114)
sl@0
  7242
	3)	Froze the Variant Dlls (P1,P2,PB,PC,PD,PG,SA,SB,CL) against V1.01 E32(114)
sl@0
  7243
sl@0
  7244
3) Jonathan
sl@0
  7245
	1)	Changed Snowball A & B physical screen size to 4.4"x1.375".
sl@0
  7246
	2)	New TSAsic::SetCrystalSpeed function in varmsb\va_sasic.cpp.
sl@0
  7247
	3)	Added cakysbd keyboard driver for Snowball B which has a, b, z and :
sl@0
  7248
		instead of arrow keys.
sl@0
  7249
	4)	Snowball B variant autodetects 4MB or 8MB ROM, 1MB or 4MB RAM
sl@0
  7250
	5)	New Hal::StartupReason() type EStartupSafeReset. Currently this is only
sl@0
  7251
		returned by Snowballs when "Home" and "Back" are pressed at boot.
sl@0
  7252
	6)	Replaced Variant::ColdReset with more general Variant::StartupReason.
sl@0
  7253
		This breaks Morgan's variant & custom freezes against 114 for this one
sl@0
  7254
		function, but that's OK because the kernel really is the only component
sl@0
  7255
		that should be calling this.
sl@0
  7256
	7)	New UserSvr::ResetMachine(TMachineStartupType) function. Currently only
sl@0
  7257
		allows a reset type of EStartupWarmReset. Implemented by generating a
sl@0
  7258
		TPlatFault::ESoftwareWarmReset. After the reset the kernel may
sl@0
  7259
		actually report a reason other than EStartupWarmReset if either:
sl@0
  7260
		-	EStartupWarmReset isn't supported (mx86/misa/wins)
sl@0
  7261
		-	The variant supports munging of reset types, ie by holding down
sl@0
  7262
			keys at boot, and those keys are held down (various marm variants).
sl@0
  7263
	8)	New custom and parent functions AutoSwitchOffType, which returns
sl@0
  7264
		ESwitchOffEvent on Snowballs A & B, ESwitchOffHard on other variants.
sl@0
  7265
	9)	New TRawEvent::ESwitchOff. The kernel generates this at auto-switchoff
sl@0
  7266
		time instead of just switching off if the above function returns
sl@0
  7267
		ESwitchOffEvent. The window server (or one of its clients) must call
sl@0
  7268
		UserHal::SwitchOff fairly soon after receiving this event. Made the
sl@0
  7269
		text window server do this. Auto-switchoff is still disabled by default
sl@0
  7270
		on Snowballs A & B becuase wakeup is still broken.
sl@0
  7271
sl@0
  7272
sl@0
  7273
4) Matthew
sl@0
  7274
	1)	Enabled hardware filtering on SA and SB digitisers.	Also boosted
sl@0
  7275
		sampling rate to 112 pps.
sl@0
  7276
sl@0
  7277
	2)	Changed SB variant so that the san-disk is mapped to InternalMedia0
sl@0
  7278
		(ie C:). Make sure you get rid of MEDINT.PDD from your .oby file when
sl@0
  7279
		building roms, or F32 will pick this up and you will still have the
sl@0
  7280
		ram disk as C:.
sl@0
  7281
sl@0
  7282
sl@0
  7283
Version 1.02.117
sl@0
  7284
================
sl@0
  7285
(Made by Jonathan, 5th September 1997)
sl@0
  7286
sl@0
  7287
1) Dennis
sl@0
  7288
	1)	Rewrote Math:: transcendental functions to use simpler algorithms
sl@0
  7289
		and to run faster. All functions now use polynomial approximations
sl@0
  7290
		instead of rational functions.
sl@0
  7291
sl@0
  7292
	2)	Added Math::PolyX function to do fast polynomial evaluation using
sl@0
  7293
		TRealX for argument, coefficients and result.
sl@0
  7294
sl@0
  7295
	3)	Updated T_R64BM to benchmark more functions and to use a range of
sl@0
  7296
		different argument values.
sl@0
  7297
sl@0
  7298
	4)	Added new test program T_MATH2.EXE to test the accuracy of the
sl@0
  7299
		transcendental functions.
sl@0
  7300
sl@0
  7301
	5)	Fixed SW-21.
sl@0
  7302
		Changed way in which DLLs statically linked to an EXE are handled.
sl@0
  7303
		Instead of opening a process-relative handle on the DLL, the process'
sl@0
  7304
		code chunk now holds a list of DLLs on which it depends. This list
sl@0
  7305
		is only deleted when the chunk itself is deleted, thus solving the
sl@0
  7306
		problem of two instances of the same EXE running concurrently.
sl@0
  7307
		Added function UserSvr::ExeAddDependency to add a DLL to the process
sl@0
  7308
		code chunk's dependency list.
sl@0
  7309
sl@0
  7310
2) Matthew
sl@0
  7311
	1)	Added software filtering to Snowball digitiser drivers.
sl@0
  7312
sl@0
  7313
	2)	Moved initial calibration of digitiser into the TDigitiserXxx::Init3().
sl@0
  7314
		This has also meant that some of the E2Prom functions needed to be
sl@0
  7315
		exported - I exported all the public functions.
sl@0
  7316
		This change has allowed Hal::Init3 to be rearranged to how it was in 114.
sl@0
  7317
sl@0
  7318
	3)	Fixed small bug in Snowball B Comm2 driver, which was acting as though
sl@0
  7319
		it supported 57600bps.
sl@0
  7320
sl@0
  7321
3) Rob Pym
sl@0
  7322
	1)	Added support for ARM 7115 - this chip has a few more peripherals
sl@0
  7323
		than the ARM 7110. New functions in ke_eiger.cpp and ke_pic.cpp.
sl@0
  7324
sl@0
  7325
	2)	Added CL variant for the Cirrus Logic ARM 7115 evaluation board.
sl@0
  7326
		[Jonathan:] Releasables not released because it doesn't build.
sl@0
  7327
sl@0
  7328
sl@0
  7329
Version 1.02.116
sl@0
  7330
================
sl@0
  7331
(Made by Jonathan, 26th August 1997)
sl@0
  7332
sl@0
  7333
1) Dennis
sl@0
  7334
	1)	Added new extended-precision real class TRealX, defined in
sl@0
  7335
		e32math.h. This class provides 64 bit precision and a dynamic
sl@0
  7336
		range of approx. 1E-9863 to 1E+9863. All member functions are
sl@0
  7337
		assembler coded for speed.
sl@0
  7338
sl@0
  7339
	2)	Changed GCC compiler helper functions to use TRealX instead
sl@0
  7340
		of TReal96 to speed things up. Also modified all UM_xxx files
sl@0
  7341
		to use TRealX instead of TReal96, apart from UM_DTOR and
sl@0
  7342
		UM_RTOD.
sl@0
  7343
sl@0
  7344
	3)	Added new test programs T_TREALX, T_R64BM, T_RXBM. T_TREALX
sl@0
  7345
		tests the TRealX member functions. T_R64BM does a benchmark
sl@0
  7346
		test for TReal64 field operations and transcendental functions.
sl@0
  7347
		T_RXBM does a benchmark test for TRealX field operations.
sl@0
  7348
sl@0
  7349
	4)	Added machine coded versions of Math::Sqrt() and some other
sl@0
  7350
		Math:: functions for ARM.
sl@0
  7351
sl@0
  7352
2) Jonathan
sl@0
  7353
	1)	Fixed data TX on varmsa/va_com2.cpp and varmpd/va_com3.cpp when
sl@0
  7354
		Fifos are disabled; no longer trys to output >1 byte on TX interrupt.
sl@0
  7355
sl@0
  7356
	2)  Variant::Init3() on Snowball A & B sets AutoSwitchOffBehavior to
sl@0
  7357
		ESwitchOffDisabled because power management isn't yet implemented.
sl@0
  7358
sl@0
  7359
	3)	Changed table in Snowball B Variant::SetLcdContrast to correct for
sl@0
  7360
		strange hardware.
sl@0
  7361
sl@0
  7362
	4)	To reduce noise in the output logs, all .cmd files to build E32 now
sl@0
  7363
		invoke NMAKE with the -nologo flag.
sl@0
  7364
sl@0
  7365
3) Pete
sl@0
  7366
	1) 	Added Internal ATA media driver (MATISB.PDD) for Lavender prototype B
sl@0
  7367
		build.
sl@0
  7368
sl@0
  7369
	2)	Change to internal ram media driver on WINS/ARM so that it only
sl@0
  7370
		opens on media device type EFixedMedia0 rather than any fixed media
sl@0
  7371
		type.
sl@0
  7372
sl@0
  7373
4) Matthew
sl@0
  7374
	1)	Fixed bug in Snowball digitiser drivers which caused execeptions when
sl@0
  7375
		the pen was down. Fixed by moving the queueing of the pen-up timer from
sl@0
  7376
		the interrupt service routine into the Dfc.
sl@0
  7377
sl@0
  7378
	2)	Added code to read the CTS signal in the Snowball prototype B com2 PDD.
sl@0
  7379
sl@0
  7380
	3)	Temporarilly made the Snowball prototype B com2 PDD ignore framing
sl@0
  7381
		errors at 38400 bps. This is to allow people downstream to use the port.
sl@0
  7382
sl@0
  7383
	4)	Further modifications to T_SERIAL for Snowball compatibility.
sl@0
  7384
sl@0
  7385
Version 1.02.115
sl@0
  7386
================
sl@0
  7387
(Made by Jonathan, 16th August 1997)
sl@0
  7388
sl@0
  7389
1) Graham
sl@0
  7390
		1)      Changed in RAM standby code to have a delay loop
sl@0
  7391
				rather than the previous faulty inmplementation
sl@0
  7392
				which attempted to validate the ROM by
sl@0
  7393
				continually reading it until it returned a known
sl@0
  7394
				good value - this was erroneous because the ROM
sl@0
  7395
				reads were coming from the cache anyway.
sl@0
  7396
sl@0
  7397
				Then I commented out this code and replaced it with
sl@0
  7398
				the traditional code that runs from ROM (this was
sl@0
  7399
				only introduced as a result of some hardware paranoia
sl@0
  7400
				when we were getting 'unable to switch on' bugs in
sl@0
  7401
				the run up to V1.00
sl@0
  7402
sl@0
  7403
		2)      Updated minor version number to 02.
sl@0
  7404
sl@0
  7405
2) Dennis
sl@0
  7406
	1)	Modified emergency power-down FIQ handler so that it
sl@0
  7407
		only performs the bare minimum of tasks when the machine
sl@0
  7408
		is powered up again. Other more time-consuming tasks have
sl@0
  7409
		been moved into a DFC.
sl@0
  7410
sl@0
  7411
	2)	Added new machine code versions of TInt64 functions for MARM,
sl@0
  7412
		WINS and MX86 which don't use the TInt64A class.
sl@0
  7413
sl@0
  7414
	3)	Added machine coded versions of some 8-bit descriptor functions
sl@0
  7415
		for MARM in new file UPMARM\UP_DES8.CPP.
sl@0
  7416
sl@0
  7417
	4)	Added machine coded versions of RHeap::Alloc(), RHeap::Free()
sl@0
  7418
		for MARM REL.
sl@0
  7419
sl@0
  7420
	5)	Modified Mem::Copy() to run faster when source and destination
sl@0
  7421
		addresses are unaligned, or when a small copy is required.
sl@0
  7422
sl@0
  7423
3) Ann
sl@0
  7424
		1)		Fixed rounding bug where the number of intervening zeros
sl@0
  7425
				after the decimal point in a descriptor was being ignored
sl@0
  7426
				when next non-zero digit is out of range of precision when
sl@0
  7427
				converting to real.
sl@0
  7428
sl@0
  7429
4) Matthew/Jonathan
sl@0
  7430
		1)		Added Snowball B variant for use with the Snowball prototype.
sl@0
  7431
sl@0
  7432
		2)		With a TSAsic class to access the ASIC on the Snowball prototype.
sl@0
  7433
sl@0
  7434
5) Matthew
sl@0
  7435
		1)		Added digitiser drivers for snowballs A and B.
sl@0
  7436
sl@0
  7437
		2)		Added a virtual SetCalibration() function to the TXYInput
sl@0
  7438
				class, so that future digitiser drivers can use hardware
sl@0
  7439
				calibration, if this is available.
sl@0
  7440
				Currently none of the drivers use this (including the Snowball
sl@0
  7441
				ones) and they return KErrNotSupported.
sl@0
  7442
sl@0
  7443
		3)		Added a comm pdd for the Snowball prototype asic. There are
sl@0
  7444
				several known bugs in this driver.
sl@0
  7445
				Made some modifications to T_SERIAL so that it does not test
sl@0
  7446
				things beyond the capabilities of the comm port when running
sl@0
  7447
				on a Snowball.
sl@0
  7448
sl@0
  7449
6) Jonathan
sl@0
  7450
		1)		Fixed problem caused by reading IID register too often in
sl@0
  7451
				Snowball A 2nd comm pdd.
sl@0
  7452
		2)		Added IR support to Snowball B 1st comm pdd (untested).
sl@0
  7453
sl@0
  7454
		Failing on Snowball B prototype:
sl@0
  7455
		-	tests t_power, t_timer, t_chunk, t_serial, t_idrv, t_pccd1, t_pccd2
sl@0
  7456
		-	Power up after switch-off
sl@0
  7457
sl@0
  7458
sl@0
  7459
Version 1.01.114
sl@0
  7460
================
sl@0
  7461
(Made by Graham, 29th July 1997)
sl@0
  7462
sl@0
  7463
1) Matthew
sl@0
  7464
		1)      SW1-244 Fixed sound driver so that it no longer returns
sl@0
  7465
				KErrAlreadyExists if a prepare function is called
sl@0
  7466
				twice. Changed test code accordingly.
sl@0
  7467
sl@0
  7468
2) Morgan
sl@0
  7469
		1)      SW3-1556 Removed dependency in M32HAL.H on M32DBG.H and
sl@0
  7470
				re-inserted dependency on M32DBG.H in appropriate .CPP
sl@0
  7471
				files.
sl@0
  7472
sl@0
  7473
sl@0
  7474
Version 1.01.113
sl@0
  7475
================
sl@0
  7476
(Made by Graham, 25th July 1997)
sl@0
  7477
sl@0
  7478
1) Dennis
sl@0
  7479
	1)	Fixed CSW3-1559, CSW3-1560, CSW3-1530, SW1-91, SW1-155, SW1-158
sl@0
  7480
		Added doubly-linked tree structure to DLibrary objects to record which
sl@0
  7481
		DLLs depend on which. The access count of a DLibrary object is now equal to
sl@0
  7482
		the number of thread/process handles open on it, plus the number of other
sl@0
  7483
		DLibrary objects which have a dependency on it. Added code to DLibrary::Close()
sl@0
  7484
		to check that a DLL is really in use (directly or indirectly) by traversing
sl@0
  7485
		the tree structure and to delete it if it is not. Added a new supervisor function
sl@0
  7486
		UserSvr::DllAddDependency() used by the loader to record DLL dependencies.
sl@0
  7487
sl@0
  7488
2) Matthew
sl@0
  7489
	1)	Fixed bug in sound ldd which caused buffers to be orphaned on the kernel heap if
sl@0
  7490
		a prepare function was called twice. This now returns KErrAlreadyExists.
sl@0
  7491
		Added test code to t_sound.
sl@0
  7492
sl@0
  7493
3) Graham
sl@0
  7494
		1)      Made further changes to the backup battery levels:
sl@0
  7495
sl@0
  7496
				Good -> Low     2850
sl@0
  7497
				Low -> Replace  2800
sl@0
  7498
sl@0
  7499
				Replace -> Low  2850
sl@0
  7500
				Low -> Good     2900
sl@0
  7501
sl@0
  7502
				Not present     2000
sl@0
  7503
sl@0
  7504
		2)      SW1-201. Reduced the maximum voltage of the main battery
sl@0
  7505
				from 3100mV to 3000mV.
sl@0
  7506
sl@0
  7507
		3)      SW1-179. Removed redundant IMPORT_C declarations from
sl@0
  7508
				E32BASE.H on:
sl@0
  7509
sl@0
  7510
				CServer::NewSessionL
sl@0
  7511
				CSession::ServiceL
sl@0
  7512
sl@0
  7513
		4)      Added Charles Wier's ASSERT macro.
sl@0
  7514
sl@0
  7515
		5)      Changed the battery voltage reading algorithm. I used
sl@0
  7516
				to do one one dummy read on the adc channel then wait
sl@0
  7517
				10mS then take the real reading. I now do 10 dummy
sl@0
  7518
				reads at the rate of one every millisecond and then
sl@0
  7519
				take the real reading.
sl@0
  7520
sl@0
  7521
		6)      Fixed the .REL files to release Dutch and French
sl@0
  7522
				localisation dlls and a french keyboard table for MARM P2.
sl@0
  7523
sl@0
  7524
		7)      Added Scandinavian localisation dll in WINS and MARM
sl@0
  7525
				builds.
sl@0
  7526
sl@0
  7527
		8)      Added DANISH/NORWEGIAN keyboard table (CAKDP2.DN) and
sl@0
  7528
				SWEDISH/FINNISH keyboard table (CAKDP2.SF) for P2
sl@0
  7529
				MARM builds.
sl@0
  7530
sl@0
  7531
Version 1.01.112
sl@0
  7532
================
sl@0
  7533
(Made by Graham, 17th July 1997)
sl@0
  7534
sl@0
  7535
1) Dennis
sl@0
  7536
	1)	Fixed CSW-2710, SW1-114
sl@0
  7537
		Changed four kernel faults to K::PanicCurrentThread with new KERN-EXEC
sl@0
  7538
		panic numbers; these are KK::EMesAlreadyPending, KK::EEvntRequestPending
sl@0
  7539
		and two instances of PP::EIllegalWsProcess.
sl@0
  7540
sl@0
  7541
	2)	Fixed CSW3-880
sl@0
  7542
		Corrected checking of filename length in RLoader::LoadProcess() and added
sl@0
  7543
		a check for the command line length.
sl@0
  7544
sl@0
  7545
	3)	Fixed CSW3-1340
sl@0
  7546
		Changed the code to allow both heap min size and heap max size to be zero.
sl@0
  7547
		However if heap max size < 256, then a value of 256 will actually be used.
sl@0
  7548
sl@0
  7549
	4)	Fixed CSW3-1601
sl@0
  7550
		Set up the value of K::TickCounter in the RTC tick ISR rather than in code
sl@0
  7551
		which runs asynchronously to the RTC tick. Reinitialise K::TickCounter when
sl@0
  7552
		the system time is changed.
sl@0
  7553
sl@0
  7554
	5)	Fixed CSW3-1670
sl@0
  7555
		Added function TBool TTickQ::CheckMidnightCrossover(TInt aSecs) to check if
sl@0
  7556
		a midnight crossover has occurred and set iTomorrowStarts accordingly. Added
sl@0
  7557
		overloaded function void TSecondQ::SystemTimeChanged(TUint& aChanges)
sl@0
  7558
		to abort all absolute and locked timers and set the EChangesMidnightCrossover
sl@0
  7559
		bit in aChanges if a system time change results in a midnight crossover.
sl@0
  7560
		TSecondQ::SystemTimeChanged() now calls this function, as does
sl@0
  7561
		ExecHandler::LocaleSet(). Updated T_CHNOT.CPP to test the new RChangeNotifier
sl@0
  7562
		behaviour.
sl@0
  7563
sl@0
  7564
	6)	Modified prefetch abort handler to set iDataAddress to the value of lr when
sl@0
  7565
		the exception occurred.
sl@0
  7566
sl@0
  7567
	7)	Corrected User::StartThread to call DLL entrypoints with EDllThreadDetach
sl@0
  7568
		rather than EDllThreadAttach when the thread exits.
sl@0
  7569
sl@0
  7570
	8)	Set the RTC correction to zero on a cold start. (Forgot this last time!)
sl@0
  7571
sl@0
  7572
2) Graham
sl@0
  7573
		1)      Added code to fetch the language index and the keyboard
sl@0
  7574
				index from E2. Added these values to the machine info
sl@0
  7575
				structure (UserHal::MachineInfo()) by adding class
sl@0
  7576
				TMachineInfoV2 which derives from TMachineInfoV1.
sl@0
  7577
sl@0
  7578
		2)      Modified the text window server to load a different
sl@0
  7579
				localisation module and keyboard module according to
sl@0
  7580
				the language and keyboard indexes read from E2.
sl@0
  7581
sl@0
  7582
		3)      Increased the adjustment for current consumption
sl@0
  7583
				that is made prior to establishing whether the main
sl@0
  7584
				battery status should fall.
sl@0
  7585
sl@0
  7586
		4)      Reduced the voltage levels at which the main battery
sl@0
  7587
				status changes. Low is now at 2150mV, Replace is now
sl@0
  7588
				at 1900mV (P2 and PD variants only).
sl@0
  7589
sl@0
  7590
		5)      Reduced the max backup battery voltage to 3100mV in
sl@0
  7591
				line with the max main battery voltage  (P2 and PD
sl@0
  7592
				variants only).
sl@0
  7593
sl@0
  7594
		6)      Reduced the voltage levels at which the backup up
sl@0
  7595
				battery status changes:
sl@0
  7596
sl@0
  7597
								Old (mV)        New (mV)
sl@0
  7598
				Good -> Low     2900            2800
sl@0
  7599
				Low -> Replace  2800            2750
sl@0
  7600
sl@0
  7601
				Replace -> Low  2850            2780
sl@0
  7602
				Low -> Good     3000            3000
sl@0
  7603
sl@0
  7604
				Not present     2000            2000
sl@0
  7605
sl@0
  7606
		7)      Added kernel side EXPORTS for:
sl@0
  7607
						S::ChunkCreate
sl@0
  7608
						S::LibraryLoadExact
sl@0
  7609
						S::MutexCreate
sl@0
  7610
						S::PhysicalDeviceLoad
sl@0
  7611
						S::PhysicalDeviceFree
sl@0
  7612
						S::SemaphoreCreate
sl@0
  7613
sl@0
  7614
sl@0
  7615
3) Basher
sl@0
  7616
		1)      Added new function in the keyboard translation dll
sl@0
  7617
				(ChangeKeyData) which loads a different keyboard data
sl@0
  7618
				module.
sl@0
  7619
sl@0
  7620
4) Pete
sl@0
  7621
		1)      When interrogating the CIS of a PC Card to determine the cards type,
sl@0
  7622
				the PC Card controller verifies the integrity of the CIS by
sl@0
  7623
				attempting to follow each CIS chain to the end. While performing this
sl@0
  7624
				operation the controller is currently reading each tuple entirely
sl@0
  7625
				rather than just checking its type and link. This is un-necesary and
sl@0
  7626
				in fact not recomemded. Unknown tuples may contain active registers.
sl@0
  7627
				This change fixes the problem.
sl@0
  7628
sl@0
  7629
sl@0
  7630
Version 1.01.111
sl@0
  7631
================
sl@0
  7632
(Made by Graham, 11th July 1997)
sl@0
  7633
sl@0
  7634
1) Jonathan
sl@0
  7635
	1) Small fix to DPccdCntrlInterface::DoNotifyChange and DoChangeFlag to return
sl@0
  7636
	   KErrGeneral instead of panicing on being passed an invalid socket number.
sl@0
  7637
	2) Kernel now exports all of DPlatChunkHw so that device drivers can map
sl@0
  7638
	   in their own memory-mapped registers etc.
sl@0
  7639
	3) Added 2nd serial port (16550-based) to Snowball MARM variant. Currently
sl@0
  7640
	   just a dummy because of a suspected bug triggered by ~DPlatChunkHW().
sl@0
  7641
	4) Variant::TestBootSequence on Snowball is always True. This enables an
sl@0
  7642
	   (alternative) etest.exe to be run on boot, which starts elink before booting
sl@0
  7643
	   normally.
sl@0
  7644
	5) Added etestl.exe which does the above.
sl@0
  7645
sl@0
  7646
2) Pete
sl@0
  7647
	1)	Fixed SW3-1226
sl@0
  7648
		Makes it possible to force accesses to as particular type of PC Card
sl@0
  7649
		memory (ie Common,Attribute,I/O) to be 8-bit accesses only (ie 32bit
sl@0
  7650
		word accesses disabled). This mode can be enabled in the function
sl@0
  7651
		Variant::PcCardCntrlMemConfig() by returning KMemConfigByteAccess.
sl@0
  7652
		This is to support h/w implementations which can't support 32-bit accesses
sl@0
  7653
		to PC Card memory.
sl@0
  7654
sl@0
  7655
3) Dennis
sl@0
  7656
	1)	Fixed SW3-1321
sl@0
  7657
		Moved the RTC correction value and last set time into the super page so
sl@0
  7658
		that they will be preserved over warm resets. This stops strange offsets
sl@0
  7659
		from being added to the system time when the machine is switched off and on.
sl@0
  7660
sl@0
  7661
	2)	Moved the definition of the super page from M32STD.H to K32STD.H. Added a
sl@0
  7662
		super page to the WINS build. Moved the battery statistics (insertion time,
sl@0
  7663
		time on main battery, time on external power, battery power used) from K::
sl@0
  7664
		into the super page so that they will be preserved over warm resets.
sl@0
  7665
sl@0
  7666
	3)	Fixed SW3-1419
sl@0
  7667
		Removed all user access from user data chunks in the home section. Changed
sl@0
  7668
		the way the stack/heap chunk is created on thread creation - the pages are
sl@0
  7669
		now allocated using DPlatChunk::AdjustL() instead of AdjustUserL(). This means
sl@0
  7670
		that the pages are immediately mapped with the correct page permissions
sl@0
  7671
		rather than with full user access. Removed the line in DPlatProcess::Loaded()
sl@0
  7672
		which applies the final page permissions to the main thread's stack/heap chunk.
sl@0
  7673
sl@0
  7674
	4)	Fixed SW3-1317
sl@0
  7675
		Modified function RUserHeap::SvClose() so that if it finds the access count of
sl@0
  7676
		the heap negative, it panics the owning process rather than causing a kernel fault.
sl@0
  7677
sl@0
  7678
	5)	Fixed SW3-1311
sl@0
  7679
		Fixed operator precedence error in CObjectIx::Remove().
sl@0
  7680
sl@0
  7681
	6)	Fixed SW3-770, SW3-1539
sl@0
  7682
		Modified DPlatProcess::DoSetPriority() to recursively descend the tree of threads
sl@0
  7683
		owned by the process and adjust their priorities (previously, thread-relative threads
sl@0
  7684
		were not adjusted).
sl@0
  7685
		Introduced a new set of absolute thread priorities which enable the priority of a
sl@0
  7686
		thread to be made independent of the priority of its owning process.
sl@0
  7687
		Note that this upgrade requires a modification to the SHELL to set the priority of
sl@0
  7688
		the EIKON server thread to EPriorityAbsoluteForeground instead of EPriorityMore.
sl@0
  7689
sl@0
  7690
	7)	Fixed SW3-319
sl@0
  7691
		Added a new exported function Kern::PanicCurrentThread(const TDesC&, int) which panics
sl@0
  7692
		a thread by sending a message to the kernel server (like K::PanicCurrentThread).
sl@0
  7693
		Modified D_COMM.CPP to call this function instead of DPlatThread::Panic().
sl@0
  7694
sl@0
  7695
	8)	Fixed SW3-1604
sl@0
  7696
		Modified RThread::RaiseException() so that if the exception is unhandled, it panics
sl@0
  7697
		with ECausedException rather than calling User::Exit(KErrDied);
sl@0
  7698
sl@0
  7699
	9)	Fixed SW3-4688
sl@0
  7700
		Modified UPWINS\UP_TRP.CPP to do a ret 4 at the end of User::Leave() instead
sl@0
  7701
		of a compiler-generated ret 0. Applied the same modification to the X86 build.
sl@0
  7702
sl@0
  7703
	10) Fixed SW3-1408, SW3-1671
sl@0
  7704
		Modified UCDT\UC_REGN.CPP TRegion::SubRect() to return without doing anything if
sl@0
  7705
		the rectangle to be subtracted is empty. Applied the same modification to the
sl@0
  7706
		ARM version in UPMARM\UP_UTL.CPP.
sl@0
  7707
sl@0
  7708
	11)	Fixed SW-4688
sl@0
  7709
		Modified UPWINS\UP_TRP.CPP User::Leave() to end with a ret 4 instead of a ret 0.
sl@0
  7710
		Applied the same modification to the MX86 version.
sl@0
  7711
sl@0
  7712
	12)	Fixed SW3-1149
sl@0
  7713
		Added an inline accessor function for the iThread member of CAsyncOneShot to
sl@0
  7714
		allow the handle to be changed.
sl@0
  7715
sl@0
  7716
	13)	Fixed SW3-1604
sl@0
  7717
		Modified RThread::RaiseException() so that if the exception is unhandled, it
sl@0
  7718
		panics with ECausedException rather than calling User::Exit(KErrDied);
sl@0
  7719
sl@0
  7720
	14)	Fixed SW-5529
sl@0
  7721
		Modified RLibrary::LoadRomLibrary in UPMARM\UP_LIB.CPP and UPMX86\UP_LIB.CPP
sl@0
  7722
		to close a handle in all possible cases.
sl@0
  7723
sl@0
  7724
	15) Fixed SW-5530
sl@0
  7725
		Modified KS_SEM.CPP, KS_MUTX.CPP and KS_CHK.CPP so that if a global object is
sl@0
  7726
		created with a thread-relative handle, it has no owner.
sl@0
  7727
sl@0
  7728
	16)	Modified DPlatThread::Die() so that if a system thread panics, the machine resets.
sl@0
  7729
sl@0
  7730
	17)	Fixed SW1-22
sl@0
  7731
		Modified CObjectIx destructor to invalidate each array entry after closing it.
sl@0
  7732
		Modified CObjectIx::Remove() to panic if an attempt is made to remove an entry with
sl@0
  7733
		a null object pointer.
sl@0
  7734
		Modified S::Close() to check if the handle is valid before attempting to close it.
sl@0
  7735
sl@0
  7736
	18)	Fixed CSW3-1426
sl@0
  7737
		Made 0x10 (DLE, non-breaking space character in OPL) a whitespace character.
sl@0
  7738
sl@0
  7739
	19)	Fixed CSW-5500
sl@0
  7740
		Check for nDig<0 in doGeneral() function, return KErrGeneral in this case.
sl@0
  7741
sl@0
  7742
4) Matthew
sl@0
  7743
	1) Fixed SW3-883
sl@0
  7744
	   Moved the undertaker notification call Kern::NotifyThreadDeath() from
sl@0
  7745
	   DThread::Cleanup() to DThread::DoDie(), so it is called before any child threads
sl@0
  7746
	   are killed.
sl@0
  7747
	   Added test to T_THREAD.
sl@0
  7748
sl@0
  7749
	2) Fixed SW3-1173
sl@0
  7750
	   Made "%X" give upper-case, instead of lower-case hex.
sl@0
  7751
	   Added test to T_BUF.
sl@0
  7752
sl@0
  7753
	3) Changed T_SOUND test code so that it actually tests that keyclicks are disabled
sl@0
  7754
	   during recording.
sl@0
  7755
sl@0
  7756
	4) Renamed Variant::TVarmpdPanic to TVarmp2Panic in P2 variant.
sl@0
  7757
sl@0
  7758
	5) Made varmp2\va_prom.cpp #include v32armp2.h instead of v32armpd.h.
sl@0
  7759
sl@0
  7760
5) Graham
sl@0
  7761
		1) Anns fix for incompatibility between random number
sl@0
  7762
		   generation on WINS and MARM.
sl@0
  7763
sl@0
  7764
		2) Martin Tasker's updated header files E32BASE.H and
sl@0
  7765
		   E32DEF.H for MSVC 5.0 compliance.
sl@0
  7766
sl@0
  7767
		3) Increased RAM refresh rate to the maximum in the
sl@0
  7768
		   bootstrap. This can then be slowed down in the
sl@0
  7769
		   variant layer if applicable.
sl@0
  7770
sl@0
  7771
		4) Changed the reschedule code to run with interrupts on.
sl@0
  7772
sl@0
  7773
		5) Added Charles Wier's __DECLARE_TEST_DEBUG that compiles
sl@0
  7774
		   out in release mode.
sl@0
  7775
sl@0
  7776
		6) Added Charles Wier's RTest::SetConsole(CConsoleBase*).
sl@0
  7777
sl@0
  7778
		7) SW3-716 sanitise E32KEYS.H for the resource compiler.
sl@0
  7779
sl@0
  7780
		8) SW3-1556 released M32MMU.H and .INL in INCK and removed
sl@0
  7781
		   dependency in M32HAL.H on M32DBG.H.
sl@0
  7782
sl@0
  7783
		9) SW3-1557. Fixed an ASSERT in Mmu::AllocShadowPage().
sl@0
  7784
sl@0
  7785
		10) Added new Central European language enums to TLanguage.
sl@0
  7786
sl@0
  7787
		11) Changed RNotifier::Connect to use its own version number
sl@0
  7788
			instead of the operating system version number - the
sl@0
  7789
			notifier interface is updated independently of E32.
sl@0
  7790
sl@0
  7791
		12) Merged in new in localisation files since 110.
sl@0
  7792
sl@0
  7793
		13) Fixed bug in ARM architecture which caused ADC code
sl@0
  7794
			to be called when the variant specified that no
sl@0
  7795
			ADC was fitted - caused problems for Delaware.
sl@0
  7796
sl@0
  7797
		14) Changed the main battery monitoring code to compensate
sl@0
  7798
			for voltage drops with high current consumption when
sl@0
  7799
			calculating changes in battery status.
sl@0
  7800
sl@0
  7801
		15) Changed the main battery monitoring code to increase
sl@0
  7802
			the frequency that it samples the main battery voltage
sl@0
  7803
			when other components are interested in obtaining
sl@0
  7804
			accurate readings of that voltage.
sl@0
  7805
sl@0
  7806
		16) Changed the P2 and PD sound driver to divorce its ability
sl@0
  7807
			to play digital sound from the main battery status. It
sl@0
  7808
			now has two threshhold voltages - one at 2200mV below
sl@0
  7809
			which no sound driver operation will begin and another
sl@0
  7810
			at 2000mV below which any sound driver operation that
sl@0
  7811
			is in progress will be aborted.
sl@0
  7812
sl@0
  7813
		17) Fixed the backup battery code which caused its status to
sl@0
  7814
			oscillate between Good and Low every time you switched
sl@0
  7815
			off and on.
sl@0
  7816
sl@0
  7817
			These fixes, in combination should fix CSW-5376, CSW3-682,
sl@0
  7818
			CSW3-1672
sl@0
  7819
sl@0
  7820
6) Basher
sl@0
  7821
		1) Added new user server function "ChangeLocale" to change
sl@0
  7822
		   localisation dll.
sl@0
  7823
sl@0
  7824
Version 1.00.110
sl@0
  7825
================
sl@0
  7826
(Made by Graham , 5th June 1997)
sl@0
  7827
sl@0
  7828
1) Graham / Jonathan / Morgan / Colly
sl@0
  7829
		1) Fixed a bug in the Comms LDD emergency power down code.
sl@0
  7830
		   This was causing interrupts to be enabled which then
sl@0
  7831
		   caused the kernel irq handling routine to reenable
sl@0
  7832
		   fiqs thus causing the fiq handler to be reentered with
sl@0
  7833
		   subsequent death of a random nature to any user code
sl@0
  7834
		   that might happen to be lying around within reach.
sl@0
  7835
		   Multiple SW's hopefully.
sl@0
  7836
sl@0
  7837
		2) Introduced interrupt protection around
sl@0
  7838
		   TEiger::ModifyRegister8. This had been introduced into
sl@0
  7839
		   TEiger::ModifyRegister32 a long time ago but somehow got
sl@0
  7840
		   missed out of the 8 bit variant.
sl@0
  7841
sl@0
  7842
		3) Added protection against rogue irqlevels passed into
sl@0
  7843
		   Hal::RestoreIrqs();
sl@0
  7844
sl@0
  7845
		4) Added NOPs into the following type of ARM assembler
sl@0
  7846
		   construct:
sl@0
  7847
sl@0
  7848
				asm("stmia lr, {r13-r14}^");
sl@0
  7849
				asm("add lr, lr, #8");
sl@0
  7850
sl@0
  7851
		   This now becomes:
sl@0
  7852
sl@0
  7853
				asm("stmia lr, {r13-r14}^");
sl@0
  7854
				asm("mov r0, r0");
sl@0
  7855
				asm("add lr, lr, #8");
sl@0
  7856
sl@0
  7857
		   The ARM manual advises against using a banked register
sl@0
  7858
		   directly after any user-bank load or store multiple
sl@0
  7859
		   instruction.
sl@0
  7860
sl@0
  7861
		5) Added T_IRQS test code developed by Alastair.
sl@0
  7862
sl@0
  7863
sl@0
  7864
Version 0.01.109
sl@0
  7865
================
sl@0
  7866
(Made by Graham , 3rd June 1997)
sl@0
  7867
sl@0
  7868
1) Dennis
sl@0
  7869
	1) 2/6/97
sl@0
  7870
	Fixed SW-3795, SW-3798
sl@0
  7871
	Set main battery insertion time after initialising RTC
sl@0
  7872
	When system time is set, main battery insertion time is changed
sl@0
  7873
	by (new system time-old system time)
sl@0
  7874
	Moved initialisation of Locale data from S::Initialise() to P::Initialise()
sl@0
  7875
	just after Hal::Init1(). This is necessary to make sure that the home time
sl@0
  7876
	offset is initialised before the system time on a cold start.
sl@0
  7877
sl@0
  7878
		2) Fixed alloc heaven problem in KS_CHN.CPP whereby a
sl@0
  7879
		physical channel is created and not deleted if the
sl@0
  7880
		corresponding logical channel creation failed.
sl@0
  7881
sl@0
  7882
2) Matthew
sl@0
  7883
	1) Changed sound and comms emergency power-down code to do their completions
sl@0
  7884
	with DFCs. This seems to fix the exception-type resets associated with
sl@0
  7885
	emergency power-downs.
sl@0
  7886
sl@0
  7887
	2) Fixed a bug in the sound driver's write-to-thread code where the home
sl@0
  7888
	address of the user buffer was not being used. Spotted by Colly.
sl@0
  7889
sl@0
  7890
	3) Fixed bug in sound driver where if an Open() failed with OOM then any
sl@0
  7891
	subsequent attempts to open would fail with KErrInUse. Spotted by Colly.
sl@0
  7892
sl@0
  7893
3) Pete
sl@0
  7894
		1) Fixed SW3-998: Prevents emergency power downs occuring
sl@0
  7895
		   while servicing PC Card interrupts from generating an exception.
sl@0
  7896
sl@0
  7897
sl@0
  7898
		2) Fixed SW3-974: Machine reset inserting CF card with OOM.
sl@0
  7899
		   Fix is low risk (FLW). One part affects code only called in OOM
sl@0
  7900
		   situation, and the other is minor change to a destructor.
sl@0
  7901
sl@0
  7902
4) Graham
sl@0
  7903
		1) Fixed a bug in the comms logical device driver. This bug
sl@0
  7904
		   prevented the machine from switching on sometimes in the
sl@0
  7905
		   presence of an oscillating DSR input (like Nautilus).
sl@0
  7906
sl@0
  7907
		2) Fixed a bug in the backup battery handling when switching
sl@0
  7908
		   on. This again was preventing machine from turning on
sl@0
  7909
		   occasionally. Thanks to Colly, Bill and Morgan for help
sl@0
  7910
		   finding this one. SW3-666 (the number of the beast).
sl@0
  7911
sl@0
  7912
		3) SW3-877. Slowed down the turning off of the display
sl@0
  7913
		   when switching off normally - the previous behaviour
sl@0
  7914
		   may have been damaging to the lcd panel. (UNAPPROVED)
sl@0
  7915
sl@0
  7916
		4) SW3-997 fixed a keyboard table bug when pressing FN+B
sl@0
  7917
		   followed by the space bar - previously gave a little
sl@0
  7918
		   circle; now gives a circumflex. (UNAPPROVED)
sl@0
  7919
sl@0
  7920
		5) Upped the LCD pump value to 11 from 8. SW3-354.
sl@0
  7921
		   (UNAPPROVED)
sl@0
  7922
sl@0
  7923
		6) Changed MachineInfo for P2 to describe the microprocessor
sl@0
  7924
		   as an ARM 7100 rather than an ARM 7110. SW3-1028.
sl@0
  7925
		   (UNAPPROVED).
sl@0
  7926
sl@0
  7927
5) Morgan
sl@0
  7928
		1) Fixed RTC error. Conversion between parts per 4000000
sl@0
  7929
		   and parts per 2^24 was wrong.
sl@0
  7930
sl@0
  7931
Version 0.01.108
sl@0
  7932
================
sl@0
  7933
(Made by ---, --- May 1997)
sl@0
  7934
sl@0
  7935
1) Matthew
sl@0
  7936
	1) 22/5/97
sl@0
  7937
	Fixed SW-5406: Made the fall-back alarm sound slightly less offensive.
sl@0
  7938
	Forward and backward compatible.
sl@0
  7939
sl@0
  7940
	2) 22/5/97
sl@0
  7941
	Fixed SW-4899: WINS comms pdd no longer calls the ldd's transmit ISR the
sl@0
  7942
	extra time.
sl@0
  7943
	Backward compatible, not forward if you were assume the transmit ISR
sl@0
  7944
	can only be called once.
sl@0
  7945
sl@0
  7946
	3) 22/5/97
sl@0
  7947
	Fixed SW3-293: Moved EWSRV.DLL to base 0x42800000 so it no longer clashes
sl@0
  7948
	with dsound.ldd.
sl@0
  7949
	Forward and backward compatible.
sl@0
  7950
sl@0
  7951
	4) 22/5/97
sl@0
  7952
	Fixed SW3-372: Added the '%.' label to TTime::FormatL. This gives the
sl@0
  7953
	locale decimal separator. Test code in T_TIME.
sl@0
  7954
	Backward compatible, not forward compatible - previous versions of
sl@0
  7955
	E32 reduced '%.' to '.' whatever the locale information was.
sl@0
  7956
sl@0
  7957
2) Morgan
sl@0
  7958
	1) 23/5/97
sl@0
  7959
	Fixed SW-4604:  When a growing Ram Drive hits a page containing
sl@0
  7960
	page tables the page allocator attempts to move them.  This code was
sl@0
  7961
	assuming all four page tables in the page were in use which is not
sl@0
  7962
	always the case, causing the allocator to Leave.  To fix this, trapped
sl@0
  7963
	the Leave when an unused page table is not found in the PageDir.
sl@0
  7964
	Forward and Backward compatible.
sl@0
  7965
sl@0
  7966
	2) 27/5/97
sl@0
  7967
	Applied the correct Uids and capitalised the names of EKern and EFile
sl@0
  7968
	by hand during startup.   Required because neither of these processes
sl@0
  7969
	are loaded by the file server (which is normally responsible for doing
sl@0
  7970
	that).
sl@0
  7971
sl@0
  7972
	3) 27/5/97
sl@0
  7973
	Added RProcess::SetType(const TUidType &aType) and test code.
sl@0
  7974
	Backward compatible
sl@0
  7975
sl@0
  7976
3) Ann
sl@0
  7977
	1) 27/5/97
sl@0
  7978
	Changed KRealFormatNoExponent to use a maximum of aMaxSigFigs digits.
sl@0
  7979
	Updated test code accordingly.
sl@0
  7980
sl@0
  7981
4) Graham
sl@0
  7982
	1) 28/5/97
sl@0
  7983
	SW3-495. Reduced the risk of E32 getting out of step with case
sl@0
  7984
		opening/closing
sl@0
  7985
sl@0
  7986
		2) 28/5/97
sl@0
  7987
		Introduced BLDARMREL as a synonym for ARMREL in MNT.CMD and
sl@0
  7988
		removed the need to do MAKEWORK before building.
sl@0
  7989
sl@0
  7990
sl@0
  7991
Version 0.01.107
sl@0
  7992
================
sl@0
  7993
(Made by ---, --- May 1997)
sl@0
  7994
sl@0
  7995
1) Graham
sl@0
  7996
		1) Removed MEDCRR.MAP and DATXPD3.MAP from MARM releaseables
sl@0
  7997
sl@0
  7998
		   Forward and backward compatible.
sl@0
  7999
sl@0
  8000
		2) Removed EKERN.LIB from WINC releaseables
sl@0
  8001
sl@0
  8002
		   Forward and backward compatible.
sl@0
  8003
sl@0
  8004
		3) Upgrade 003
sl@0
  8005
sl@0
  8006
		   Fixed SW3-282. If the 'switch off when case is closed' option was
sl@0
  8007
		   enabled and one switched off, closed the case, then attempted to wake
sl@0
  8008
		   the machine up using the external buttons or by asserting dsr, then
sl@0
  8009
		   the machine would remain dead until the next warm reset.
sl@0
  8010
sl@0
  8011
		   This was fixed by reading the state of the case when coming out of
sl@0
  8012
		   standby as well as every second while switched on.
sl@0
  8013
sl@0
  8014
		   Forward and backward compatible.
sl@0
  8015
sl@0
  8016
		4) Upgrade 007
sl@0
  8017
sl@0
  8018
		   Removed the ability to turn on using the digitiser after an emergency
sl@0
  8019
		   power down. This makes the behaviour consistent with 'Switch on when
sl@0
  8020
		   case is opened'. SW-5282
sl@0
  8021
sl@0
  8022
		   Forward and backward compatible.
sl@0
  8023
sl@0
  8024
		5) Upgrade 008
sl@0
  8025
sl@0
  8026
		   Upgraded P2 and PD digitiser drivers to include debouncing logic
sl@0
  8027
		   (SW-874 and duplicates).
sl@0
  8028
sl@0
  8029
		   Forward and backward compatible.
sl@0
  8030
sl@0
  8031
		6) Upgrade 009
sl@0
  8032
sl@0
  8033
		   Upgraded P2 and PD comms pdd's. These now implement the following
sl@0
  8034
		   current consumption scheme.
sl@0
  8035
sl@0
  8036
				RS232 drivers enabled           2mA
sl@0
  8037
				Cable connected                 + 22 mA
sl@0
  8038
				Ir enabled                      0 mA
sl@0
  8039
				Ir receiving                    0 mA
sl@0
  8040
				Ir transmitting                 + 35 mA
sl@0
  8041
sl@0
  8042
		   The cable is detected by either:
sl@0
  8043
sl@0
  8044
				1) DSR high
sl@0
  8045
				2) Character received
sl@0
  8046
sl@0
  8047
		   Forward and backward compatible.
sl@0
  8048
sl@0
  8049
2) Pete
sl@0
  8050
		1) Upgrade 001
sl@0
  8051
sl@0
  8052
		   Fixed SW3-331. Formatting of Local Drives was being done cardSize/32
sl@0
  8053
		   bytes at a time. This was OK on smaller CF cards but on larger ones
sl@0
  8054
		   (eg 16M Hitachi CF) it was locking up the machine for long periods
sl@0
  8055
		   (because F32 which is running during each sub-format is at a high
sl@0
  8056
		   priority). Changed so that a Local Drive is formatted
sl@0
  8057
		   Min(16K,size/32) bytes at a time.
sl@0
  8058
sl@0
  8059
		   Forward and backward compatible.
sl@0
  8060
sl@0
  8061
		2) Upgrade 004
sl@0
  8062
sl@0
  8063
		   In addition to having the option to disable compatibility checking between a cards
sl@0
  8064
		   Vcc level requrements and those supported by a machine, it is now possible
sl@0
  8065
		   to disable Vcc current and Vpp level compatibility checking in
sl@0
  8066
		   TPcCardConfig::IsMachineCompatible().
sl@0
  8067
sl@0
  8068
		   Backward compatible, not forward.
sl@0
  8069
sl@0
  8070
		3) Upgrade 005
sl@0
  8071
sl@0
  8072
		   Fixed a problem parsing device info. tuples which fail to provide the
sl@0
  8073
		   end of field character. TCisReader::FindReadRegion() now checks the
sl@0
  8074
		   length of such a tuple and doesn't rely on the terminating character
sl@0
  8075
		   being present.
sl@0
  8076
sl@0
  8077
		   Forward and backward compatible.
sl@0
  8078
sl@0
  8079
		4) Upgrade 006
sl@0
  8080
sl@0
  8081
		   Various changes to Pc Card Serial Port PDDs:
sl@0
  8082
		   - Added Cellular Card Phone Serial Driver (VA_NCCP.CPP) for Rack D.
sl@0
  8083
		   - Fixed a problem with the standard Modem Card Serial Driver (EUART3.PDD)
sl@0
  8084
			 when writing to the card at 115Kbps. The driver wasn't making full
sl@0
  8085
			 use of the Tx FIFO and was spending too long servicing interrupts
sl@0
  8086
			 resulting in a triple beep reset due to the watchdog timing out.
sl@0
  8087
			 Also disabled Vpp compatibility checking in order to support the
sl@0
  8088
			 WorldPort modem.
sl@0
  8089
			 The full list of supported modems is now:-
sl@0
  8090
			- Socket I/O serial port
sl@0
  8091
			- Dacom Goldcard V34 + Fax
sl@0
  8092
			- Dacom GoldCard Global (V34+Fax)
sl@0
  8093
			- Hayes Optima 288
sl@0
  8094
			- US Robotics WorldPort
sl@0
  8095
			- MegaHertz XJ2288
sl@0
  8096
			- Trellis Datacom PC288V2
sl@0
  8097
			- Com1 Modem Card MC218
sl@0
  8098
			- Paldio Data card
sl@0
  8099
		   - Changes to Delaware standard Modem Card Serial Driver (EUART2.PDD)
sl@0
  8100
			 to bring it up to same standard as the Rack D driver.
sl@0
  8101
			 None of this affects Protea P2.
sl@0
  8102
sl@0
  8103
		   Forward and backward compatible.
sl@0
  8104
sl@0
  8105
3) Ann
sl@0
  8106
		1) Upgrade 002
sl@0
  8107
sl@0
  8108
		   Fixed SW-4304, SW3-415.  TRealFormat changes.  Changed
sl@0
  8109
		   Calculator mode to discard trailing zeros first and then to decide on
sl@0
  8110
		   exponential or non-exponential format based on the number of digits
sl@0
  8111
		   available.  If the number of digits (including significant leading/trailing
sl@0
  8112
		   zeros) when using non-exponential format would exceed aMaxSigFigs, then
sl@0
  8113
		   exponential format would be used, so reducing to no more than aMaxSigFigs.
sl@0
  8114
		   Fixed SW3-416.  The above changes should been this situation won't
sl@0
  8115
		   occur, but leaves space for sign now, just in case!
sl@0
  8116
		   Also T_FLOAT test code improved and updated.
sl@0
  8117
sl@0
  8118
sl@0
  8119
Version 0.01.106
sl@0
  8120
================
sl@0
  8121
(Made by Graham, 19th May 1997)
sl@0
  8122
sl@0
  8123
1) Graham
sl@0
  8124
		1) Implemented MNT VALID verb.
sl@0
  8125
sl@0
  8126
		   Forward and backward compatible.
sl@0
  8127
sl@0
  8128
		2) Updated all version numbers to 1.0(106)
sl@0
  8129
sl@0
  8130
		   The compatibilty issues for this are quite complicated.
sl@0
  8131
		   However, I believe these changes to be both forward and
sl@0
  8132
		   and backward compatible.
sl@0
  8133
sl@0
  8134
		3) Added .MAP files to MARM releasables.
sl@0
  8135
sl@0
  8136
		   Forward and backward compatible
sl@0
  8137
sl@0
  8138
		4) Changed idle current to 38mA, backlight current to 98mA.
sl@0
  8139
sl@0
  8140
		   Forward and backward compatible
sl@0
  8141
sl@0
  8142
		5) Upgrade 004
sl@0
  8143
sl@0
  8144
		   Changed the WINS fascia to reflect the changed order on the
sl@0
  8145
		   application bar.
sl@0
  8146
sl@0
  8147
		   Forward and backward compatible
sl@0
  8148
sl@0
  8149
		6) Upgrade 009
sl@0
  8150
sl@0
  8151
		   Fix which defends against the possibility that the Flash ROM will not
sl@0
  8152
		   wake up quickly enough when coming out of standby. We jump into RAM
sl@0
  8153
		   to execute the standby instruction. When we come out of standby we
sl@0
  8154
		   check the ROM is reading correctly before jumping back.
sl@0
  8155
sl@0
  8156
		   Forward and backward compatible
sl@0
  8157
sl@0
  8158
		7) Upgrade 010
sl@0
  8159
sl@0
  8160
		   SW-5179 Return an error if an attempt is made to turn the backlight
sl@0
  8161
		   on when the main batteries are set to 'replace' and no external power
sl@0
  8162
		   is being applied.
sl@0
  8163
sl@0
  8164
		   Forward and backward compatible
sl@0
  8165
sl@0
  8166
		8) Upgrade 011
sl@0
  8167
sl@0
  8168
		   Reduce default on time of backlight to one minute and make it
sl@0
  8169
		   sensitive to user activity.
sl@0
  8170
sl@0
  8171
		   Forward and backward compatible
sl@0
  8172
sl@0
  8173
		9) Upgrade 012
sl@0
  8174
sl@0
  8175
		   SW-5319 Changed default screen contrast of PD and P2 variants
sl@0
  8176
sl@0
  8177
		   Forward and backward compatible
sl@0
  8178
sl@0
  8179
	   10) Upgrade 013
sl@0
  8180
sl@0
  8181
		   SW-3264 Changed default auto power down behaviour to
sl@0
  8182
		   'Enabled always' and reduced the default timeout to
sl@0
  8183
		   3 minutes.
sl@0
  8184
sl@0
  8185
		   Forward and backward compatible
sl@0
  8186
sl@0
  8187
	   11) Upgrade 014
sl@0
  8188
sl@0
  8189
		   SW-3232 Swop round FN-Q,D and FN-Q,T
sl@0
  8190
sl@0
  8191
		   Forward and backward compatible
sl@0
  8192
sl@0
  8193
2) Dennis
sl@0
  8194
		1) Changed wait states on CS1 ROM from 4 to 2 on P2 variant.
sl@0
  8195
sl@0
  8196
		   Forward and backward compatible
sl@0
  8197
sl@0
  8198
		2) Modified ImpHal::PrepareForRepro() to leave the cache and
sl@0
  8199
		   write buffer enabled. It is only necessary that the page
sl@0
  8200
		   directory entries for the FLASH are marked as not
sl@0
  8201
		   cacheable or bufferable and that the TLB and cache are
sl@0
  8202
		   flushed, which was already the case.
sl@0
  8203
sl@0
  8204
		   Forward and backward compatible
sl@0
  8205
sl@0
  8206
		3) Upgrade 001
sl@0
  8207
sl@0
  8208
		   Rewrote some of the TRegion member functions in ARM assembly language in an attempt to
sl@0
  8209
		   speed up the operation of the window server, which uses these functions extensively, and
sl@0
  8210
		   which was found to be responsible for slow operation of the machine when a large number
sl@0
  8211
		   of applications are open. See defect reports SW-3500 and SW-4478 and the replies to them.
sl@0
  8212
sl@0
  8213
		   Forward and backward compatible
sl@0
  8214
sl@0
  8215
3) Ann
sl@0
  8216
		1) Upgrade 002
sl@0
  8217
sl@0
  8218
		   Fixed a bug in Math::Pow() (defect report SW-4624) so that
sl@0
  8219
		   KErrOverflow errors are not incorrectly returned as KErrArgument
sl@0
  8220
		   errors.  This occured because of differencing of infinity - which is
sl@0
  8221
		   now checked for.  Updated maths test code (t_math) to test this
sl@0
  8222
		   change fully.
sl@0
  8223
sl@0
  8224
		   Forward and backward compatible
sl@0
  8225
sl@0
  8226
		2) Upgrade 025
sl@0
  8227
sl@0
  8228
		   Fixed SW3-317 KRealFormatNoExponent mode was not checking for
sl@0
  8229
		   KExtraSpaceForSign flag.  Now checks and changed to act accordingly.
sl@0
  8230
		   Also added this to test code.
sl@0
  8231
sl@0
  8232
sl@0
  8233
4) Morgan
sl@0
  8234
		1) Upgrade 003
sl@0
  8235
sl@0
  8236
		   Set a constant string in the SuperPage when platform initialisation
sl@0
  8237
		   has completed.  This string is checked on warm resets to validate
sl@0
  8238
		   cold start initialisation has completed successfully at some point
sl@0
  8239
		   in the past.
sl@0
  8240
sl@0
  8241
		   Forward and Backward compatible except for machine configuration
sl@0
  8242
		   compatiblity. So, machine configurations may not be passed
sl@0
  8243
		   between old and new versions of E32. You must perform a cold
sl@0
  8244
		   reset having upgraded to the version of E32 because of this
sl@0
  8245
		   change.
sl@0
  8246
sl@0
  8247
sl@0
  8248
		2) Upgrade 019
sl@0
  8249
sl@0
  8250
		   Fix for SW3-91 and SW3-66:  Shared code chunks are Open()ed properly
sl@0
  8251
		   in DProcess::Create().  New code chunks are named "$EXE[<Checksum>]"
sl@0
  8252
		   and no longer have an owner.
sl@0
  8253
sl@0
  8254
		3) Upgrade 026
sl@0
  8255
sl@0
  8256
		   Initialised TheSuperPage.iXtalError to 0 in Hal::Init1() on a cold boot
sl@0
  8257
		   for those platforms that don't do it themselves in their variant
sl@0
  8258
		   initialisation.
sl@0
  8259
sl@0
  8260
5) Matthew
sl@0
  8261
		1) Upgrade 005
sl@0
  8262
sl@0
  8263
		   Changed "Rings" alarm sound to be the same as those on the 3a. Thanks to Jezar
sl@0
  8264
		   for his help with this.
sl@0
  8265
sl@0
  8266
		   Also adjusted the trailing silence in algorithmic alarms as suggested.
sl@0
  8267
		   Fixes SW3-22.
sl@0
  8268
sl@0
  8269
		   Forward and backward compatible
sl@0
  8270
sl@0
  8271
		2) Upgrade 006
sl@0
  8272
sl@0
  8273
		   Fixed SW3-256: Arm sound ldd no longer links to localisation dll.
sl@0
  8274
sl@0
  8275
		   Forward and backward compatible
sl@0
  8276
sl@0
  8277
		3) Upgrade 007
sl@0
  8278
sl@0
  8279
		   Fixed bug SW3-25: Requests on logical channels by threads which did not open
sl@0
  8280
		   that channel will now panic the rogue thread, rather than potentially crashing
sl@0
  8281
		   the whole machine.
sl@0
  8282
sl@0
  8283
		   Added test code to T_SOUND.
sl@0
  8284
sl@0
  8285
		   Forward and backward compatible
sl@0
  8286
sl@0
  8287
		4) Upgrade 008
sl@0
  8288
sl@0
  8289
		   Fixed bug SW3-9. Wins fixed (again) to take account of NT daylight saving settings.
sl@0
  8290
sl@0
  8291
		   Forward and backward compatible
sl@0
  8292
sl@0
  8293
		5) Upgrade 023
sl@0
  8294
sl@0
  8295
		   Fixed SW3_315. In the sound LDDs play and record dfc functions the value of
sl@0
  8296
		   iThread.iExit is now tested, and if it is not EExitPending then the function
sl@0
  8297
		   returns straight away.
sl@0
  8298
sl@0
  8299
		   Forward and backward compatible
sl@0
  8300
sl@0
  8301
6) Pete
sl@0
  8302
		1) Upgrade 015
sl@0
  8303
sl@0
  8304
		   SW3-138 Change to CF card interrupt enable scheme. Currently the MTD keeps
sl@0
  8305
		   card IREQ interrupts enabled in Etna while its open. These are normally
sl@0
  8306
		   disabled at the card level but enabled in the card during a write operations.
sl@0
  8307
		   When the media switch is broken or when a dodgy CF card is present, this can
sl@0
  8308
		   resulting in a watchdog timeout due to the card permanently asserting IREQ and
sl@0
  8309
	   not responding to the interrupt clear. This change leaves IREQ disabled
sl@0
  8310
		   in Etna until required for the write operation.
sl@0
  8311
sl@0
  8312
		   Forward and backward compatible
sl@0
  8313
sl@0
  8314
		2) Upgrade 016
sl@0
  8315
sl@0
  8316
		   Change only for variants with 2 sockets (ie RackD). Currently on these systems,
sl@0
  8317
		   when a media change occurs, the PC Card controller does the following
sl@0
  8318
		   to each socket in turn before turning off Vpc:
sl@0
  8319
		   - Disable IREQ
sl@0
  8320
		   - Disable Etna interface
sl@0
  8321
		   However, because the two sockets have an individual IREQ, but share
sl@0
  8322
		   the same Data/Address buffers, when the Etna interface is disabled on
sl@0
  8323
		   the 1st socket, it causes the RESET signal to the 2nd to become
sl@0
  8324
		   active. This in turn causes the 2nd socket to permanently assert IREQ
sl@0
  8325
		   (which is now Rdy/Bsy) while its IREQ interrupt could potentially be
sl@0
  8326
		   enabled. Result is continuous interrupts followed by watchdog
sl@0
  8327
		   timeout.
sl@0
  8328
		   The fix is to disable IREQs on both sockets before disabling the Etna
sl@0
  8329
		   interface. This is done in the variant code for Rack D - ie no impact
sl@0
  8330
		   on Protea P2.
sl@0
  8331
sl@0
  8332
		   Forward and backward compatible
sl@0
  8333
sl@0
  8334
		3) Upgrade 017
sl@0
  8335
sl@0
  8336
		   Change to test program DRVSOAK so that it monitors the amount of
sl@0
  8337
		   spare RAM while soak test is running.
sl@0
  8338
sl@0
  8339
		   Forward and backward compatible
sl@0
  8340
sl@0
  8341
		4) Upgrade 027
sl@0
  8342
sl@0
  8343
		   Fixed SW3-440. Older SanDisk CF cards still sometimes timeout when
sl@0
  8344
		   running on batteries. Increased timeout in CF card media driver from 60ms
sl@0
  8345
		   to 70ms.
sl@0
  8346
sl@0
  8347
		   Forward and backward compatible
sl@0
  8348
sl@0
  8349
		5) Upgrade 028
sl@0
  8350
		   Fixed SW3-434. Allow CIS parsing functions not to reject a CIS which
sl@0
  8351
		   has incorrect link tuples.
sl@0
  8352
		   If a CIS chain contains no link tuples then a check is made for a link target
sl@0
  8353
		   tuple at address 0 in common memory (as before). However, if a link
sl@0
  8354
		   target isn't found here then we assume a normal end of the CIS chain
sl@0
  8355
		   (rather than marking the entire CIS chain as invalid as before).
sl@0
  8356
		   If a CIS chain contains a 'Long Link to attribute memory' tuple but no link
sl@0
  8357
		   target tuple is found at address: (specified offset x2) then we also check for a
sl@0
  8358
		   link target tuple at address: (specified offset x1).
sl@0
  8359
sl@0
  8360
		   Forward and backward compatible
sl@0
  8361
sl@0
  8362
7) William
sl@0
  8363
		1) Upgrade 020
sl@0
  8364
sl@0
  8365
		   Changes to test programs so that they run from CF card on top of the full
sl@0
  8366
		   Protea ROM. T_CTRAP, T_POWR, T_UID from TBAS, the rest from TCDT. Still more changes
sl@0
  8367
		   required to fix "Z:\Test" assumptions and the strange bug with the EIKON console.
sl@0
  8368
		   T_CTRAP will now fail on WINS debug because it checks the stack depth.
sl@0
  8369
sl@0
  8370
		   Forward and backward compatible
sl@0
  8371
sl@0
  8372
		2) Upgrade 021
sl@0
  8373
sl@0
  8374
		   Extend RChangeNotifier to do EChangesSystemTime: effects E32STD.H and KSRC\KS_TIM.CPP, KS_NOFTY.CPP
sl@0
  8375
		   There is a Defect for this, but it's really an E32 Proposal trying to be noticed...
sl@0
  8376
sl@0
  8377
		   Backward compatible, not forward compatible if you take
sl@0
  8378
		   advantage of this new feature.
sl@0
  8379
sl@0
  8380
		3) Upgrade 022
sl@0
  8381
sl@0
  8382
		   Check in DThread::Cleanup to see if the dying thread is the one which currently owns the event hook.
sl@0
  8383
		   If so, cause a 'graceful' kernel fault instead of an
sl@0
  8384
		   'ungraceful' one further down the line (SW3-205).
sl@0
  8385
sl@0
  8386
		   Forward and backward compatible
sl@0
  8387
sl@0
  8388
		4) Upgrade 024
sl@0
  8389
sl@0
  8390
		   Fixed SW3-73. Puts the first 8 characters of the Panic/Fault category into the codeAddress
sl@0
  8391
		   and dataAddress of the last exception information (except, of course, if we are faulting
sl@0
  8392
		   because of an exception...)
sl@0
  8393
sl@0
  8394
		   Forward and backward compatible
sl@0
  8395
sl@0
  8396
8) Geert
sl@0
  8397
		1) Upgrade 029
sl@0
  8398
sl@0
  8399
		   Fully source and binary compatible. Not link compatible, however. See below for details.
sl@0
  8400
sl@0
  8401
		   Fixed SW3-11, replacing the following EUSER.DLL exported functions with binary equivalents:
sl@0
  8402
sl@0
  8403
			CArrayFix<TAny>::CArrayFix(TBufRep aRep,TInt aRecordLength,TInt aGranularity);
sl@0
  8404
			CArrayFix<TAny>::~CArrayFix();
sl@0
  8405
			CArrayFixFlat<TAny>::CArrayFixFlat(TInt aRecordLength,TInt aGranularity);
sl@0
  8406
			CArrayFixFlat<TAny>::~CArrayFixFlat();
sl@0
  8407
			CArrayFixSeg<TAny>::CArrayFixSeg(TInt aRecordLength,TInt aGranularity);
sl@0
  8408
			CArrayFixSeg<TAny>::~CArrayFixSeg();
sl@0
  8409
			CArrayVar<TAny>::CArrayVar(TBufRep aRep,TInt aGranularity);
sl@0
  8410
			CArrayVar<TAny>::~CArrayVar();
sl@0
  8411
			CArrayPak<TAny>::CArrayPak(TBufRep aRep,TInt aGranularity);
sl@0
  8412
			CArrayPak<TAny>::~CArrayPak();
sl@0
  8413
sl@0
  8414
		   All CArrayXxx<TAny> stock instances acquire inline ctors just like the template ones.
sl@0
  8415
		   If you use any of these classes then to be able to link against the new EUSER.LIB
sl@0
  8416
		   will require re-compilation.
sl@0
  8417
sl@0
  8418
		   A clean build should be sufficient.
sl@0
  8419
sl@0
  8420
		2) Upgrade 030
sl@0
  8421
sl@0
  8422
		   Entirely backward compatible. Forward compatible for all software that doesn't use the new service.
sl@0
  8423
		   And additional forward incompatible change now allows the element just past the array to be addressed
sl@0
  8424
		   using CArrayXxx::End().
sl@0
  8425
sl@0
  8426
		   Fixed SW3-374, adding new exported function
sl@0
  8427
sl@0
  8428
				TAny* CArrayFixBase::Back(TInt anIndex) const;
sl@0
  8429
sl@0
  8430
		   as well as inline wrappers to CArrayFix<T> and CArrayFix<TAny>.
sl@0
  8431
sl@0
  8432
		   These functions provide functionality equivalent to CBufBase::BackPtr(), being CArrayFixXxx::End()
sl@0
  8433
		   counterparts for fast _backward_ iteration.
sl@0
  8434
sl@0
  8435
		   Also introduced modifiable overloads of End() inline wrappers and relaxed index range checks for
sl@0
  8436
		   CArrayFixXxx::End() as well as Back().
sl@0
  8437
sl@0
  8438
9) Jonathan
sl@0
  8439
		1) Upgrade 031
sl@0
  8440
sl@0
  8441
		   Fixes SW3-334
sl@0
  8442
sl@0
  8443
		   Debug::SetBreakpoint only allowed breakpoints to be set at 0x2xxxxxxx (and at
sl@0
  8444
		   0x5xxxxxxx in debug releases). Eikon apps get loaded into memory between
sl@0
  8445
		   0x9000~ and 0xFFFF~.
sl@0
  8446
sl@0
  8447
		   Debug::SetBreakpoint allows breakpoints between 0x9000~ and 0xFFFF~.
sl@0
  8448
sl@0
  8449
		   No API change. Doesn't depend or tread on any previous upgrade.
sl@0
  8450
sl@0
  8451
		   Forward and backward compatible
sl@0
  8452
sl@0
  8453
sl@0
  8454
Version 0.01.105
sl@0
  8455
================
sl@0
  8456
(Made by Pete, 8th May 1997)
sl@0
  8457
sl@0
  8458
1) Dennis
sl@0
  8459
		1) Modified the scheduler to set machine current consumption to either
sl@0
  8460
		   running or idle current depending on whether the null thread is
sl@0
  8461
		   being scheduled.
sl@0
  8462
		2) Added functions Custom::BacklightCurrentInMilliAmps() and
sl@0
  8463
		   ImpHal::BacklightCurrentInMilliAmps and code to include the
sl@0
  8464
		   backlight current in K::TotalCurrentMilliAmps when it is on.
sl@0
  8465
		3) Fixed a problem with average battery current calculation - the function
sl@0
  8466
		   was using a hard-coded tick rate of 10 ticks per second.
sl@0
  8467
		4) Changed function DLogicalChannel::SetCurrentConsumptionInMilliAmps from
sl@0
  8468
		   protected to public since in practice it is always the PDD which calls it.
sl@0
  8469
		5) Modified the sound and COM1 PDDs to set the current consumption according
sl@0
  8470
		   to the device state.
sl@0
  8471
sl@0
  8472
2) Morgan
sl@0
  8473
		1) Digitiser calibrated from values in E-squared Prom on a Cold Start.
sl@0
  8474
		2) Calibration preserved over a warm reset.
sl@0
  8475
		3) Plugged in crystal error and machine unique Id values from the E-squared.
sl@0
  8476
		4) DPlatProcess destructor closes the process code chunk, and Create() adds
sl@0
  8477
		   newly created code chunks to the list of Kernel chunks.
sl@0
  8478
		5) RLoader::LoadProcess() Kill()s the new process on a failed load.
sl@0
  8479
sl@0
  8480
sl@0
  8481
3) William
sl@0
  8482
		1) Reorganise CDeltaTimer creation to fix SW-4030
sl@0
  8483
		2) Remove TDblQueLInkBase::EnQue() assertion, to fix SW-4991
sl@0
  8484
		3) Reset auto switchoff timeout when an absolute timer completes, to fix SW-4870
sl@0
  8485
sl@0
  8486
4) Ann
sl@0
  8487
		1) Fixed bug SW-4351 in Math::Mod().  Now returns KErrTotalLossOfPrecision
sl@0
  8488
		if an accurate answer cannot be given.
sl@0
  8489
		2) Reorganised maths test code so it now builds for ARM.
sl@0
  8490
sl@0
  8491
sl@0
  8492
5) Andrew       1) Fixed bug SW-4180. SetReserveL(TInt) is now available only
sl@0
  8493
				for CArrayFixFlat<T>, CArrayFixFlat<TAny> and CArrayPtrFlat<T>.
sl@0
  8494
				The parameter is new the reserved size of the array, not the
sl@0
  8495
				reserved expansion space.
sl@0
  8496
sl@0
  8497
6) Pete		1) TPcCardSocket::SetSocketStatus() made virtual function.
sl@0
  8498
		2) Added the inline function
sl@0
  8499
		TPcCardSocket::EventCallBacksRequested(TPccdEvent anEvent).
sl@0
  8500
		Used to determine if there are any clients expecting notification of
sl@0
  8501
		a particular PC Card event.
sl@0
  8502
		3) CROM Media Driver Caps() no longer sets the drive attributes as
sl@0
  8503
		KDriveAttRom.
sl@0
  8504
		4) Fixed problem parsing Configuration table entry tuples where the
sl@0
  8505
		last two entries both have the same configuration entry value. Prior to
sl@0
  8506
		this, only the first of the two was reported.
sl@0
  8507
		5) ATA Media Driver now leaves card interrupts enabled in the PC Card
sl@0
  8508
		Controller h/w, and enables/disables these as required on the card. This
sl@0
  8509
		is quicker than the previous scheme where it was continuously enabling
sl@0
  8510
		and disabling interrupts in controller h/w on each Write() request.
sl@0
  8511
		6) Media Driver Open() failures due to media change now only return
sl@0
  8512
		KErrNotReady rather than any other error value.
sl@0
  8513
		7) ATA Media Driver now verifies that a partition is a DOS partition
sl@0
  8514
		(extended DOS partitions not supported).
sl@0
  8515
		8) ATA Media Driver now uses Pulse mode interrupts where possible.
sl@0
  8516
		Previously it always used Level mode interrupts.
sl@0
  8517
		9) Change to ATA Media Driver - for write requests
sl@0
  8518
		which straddle a sector boundary and require prior reading of two
sl@0
  8519
		consecutive sectors, the read is now performed with a single read
sl@0
  8520
		command (of two sectors) rather than two reads of one sector.
sl@0
  8521
		10) Default attribute memory access speed for 3.3V
sl@0
  8522
		socket is 600ns rather than 300ns (as per PC Card Spec.).
sl@0
  8523
		11) Withered Custom::DriveName() and Custom::PcCardSocketName() in
sl@0
  8524
		custom dll.
sl@0
  8525
		12) Prevented DPrimaryMedia queueing same DFC twice.
sl@0
  8526
		13) Introduce Media Driver Interface version number.
sl@0
  8527
		14) Made media driver current consumption values more realistic.
sl@0
  8528
sl@0
  8529
7) Jonathan
sl@0
  8530
sl@0
  8531
		1) The Debug class won't let the user insert breakpoints or
sl@0
  8532
		   single-step into ROM code before the aDebugLimit argument to
sl@0
  8533
		   Debug::Open.  Gdbstub sets aDebugLimit to its own location in
sl@0
  8534
		   ROM, thus preventing breakpoints/stepping into code before it in
sl@0
  8535
		   ROM (including EUser, EKern etc) which might otherwise break.
sl@0
  8536
sl@0
  8537
		2) The Debug class ignores the user-supplied aDebugLimit in Release
sl@0
  8538
		   builds and prevents setting of breakpoints/single-stepping
sl@0
  8539
		   anywhere in the ROM.
sl@0
  8540
sl@0
  8541
		3) Binary incompatibility (affects gdbstub & test code, doesn't
sl@0
  8542
		   affect RDebug::Printf):
sl@0
  8543
		   Debugger functions in the RDebug & Debug classes changed to use
sl@0
  8544
		   thread Ids instead of opaque DThread pointers. Components that
sl@0
  8545
		   call RDebug::ReadMemory() or RDebug::WriteMemory() should pass in
sl@0
  8546
		   RThread().Id() as the first argument to these functions to retain
sl@0
  8547
		   their current functionality.
sl@0
  8548
sl@0
  8549
		4) New DThread* Kern::ThreadFromId(TThreadId) for use by Debug
sl@0
  8550
		   class. Also changed S::ThreadOpen(... TThreadId, ...) to use it.
sl@0
  8551
sl@0
  8552
8) Matthew
sl@0
  8553
		1) Fixed SW-3783 - by default, the comms driver now uses descriptor
sl@0
  8554
		   MaxLength() rather than Length() for reads.
sl@0
  8555
		   Note: This fix has meant a change to the inline function RDevComm::Read(),
sl@0
  8556
		   so anyone using this function should recompile with the new E32. You
sl@0
  8557
		   know who you are.
sl@0
  8558
		2) Fixed bug in comms driver so that it no longer crashes if you
sl@0
  8559
		   request that it writes beyond the end of a descriptor.
sl@0
  8560
		3) Stopped WINS sound pdd from gurgling when you do a PlaySineWave().
sl@0
  8561
		4) Moved DTMF volume information from sound LDD into the PDDs, since
sl@0
  8562
		   it depends on the frequency response of the hardware.
sl@0
  8563
		5) Tiny amount of fiddling with algorithmic alarm sounds.
sl@0
  8564
		6) Made the __WINS_UID() macro expand in WINC builds, implementing the E32
sl@0
  8565
		   proposal.
sl@0
  8566
		7) Removed the EChangesAll enum from E32STD.H since if it used it may break
sl@0
  8567
		   forwards compatability. This should only effect BAFL.
sl@0
  8568
		8) Added a User::SetCurrencySymbol() function for setting the system-wide
sl@0
  8569
		   currency symbol.
sl@0
  8570
sl@0
  8571
9) Graham
sl@0
  8572
				1) Added German keyboard table which now gets
sl@0
  8573
				   released as CAKDP2.GE
sl@0
  8574
				2) Released IMPORT_C from TInt64A functions. These
sl@0
  8575
				   were not being exported anyway.
sl@0
  8576
				3) Exported RLibrary::LoadRomLibrary on EPOC
sl@0
  8577
				   platforms
sl@0
  8578
				4) Fixed update of battery statistics when the
sl@0
  8579
				   main batteries are changed (SW-5096, SW-4228).
sl@0
  8580
				5) Fixed update of main and backup battery statuses
sl@0
  8581
				   when switching on (SW-3401, SW-4479).
sl@0
  8582
				6) Changed UK, US, and German keyboard tables to give
sl@0
  8583
				   the multiplication and division signs when the
sl@0
  8584
				   appropriate keystrokes are made.
sl@0
  8585
				7) Shortened the beeps for Cold Start, Warm Start,
sl@0
  8586
				   and Kernel Fault.
sl@0
  8587
sl@0
  8588
sl@0
  8589
10) Jal
sl@0
  8590
				1) Added build infrastructure for ELOCL.GE
sl@0
  8591
				   (the german localisation dll).
sl@0
  8592
sl@0
  8593
Version 0.01.104
sl@0
  8594
================
sl@0
  8595
(Made by William, 2nd May 1997)
sl@0
  8596
sl@0
  8597
1) William
sl@0
  8598
sl@0
  8599
		1) Removed the TRAPD() from DThread::RequestComplete, which still seems
sl@0
  8600
		   to cause lots of E32USER-CBase 71 and 63 panics when used in the
sl@0
  8601
		   harsh environment of real test roms
sl@0
  8602
		2) Remove reference to GateFunction in EGATE.DEF to fix the T_DUID.DLL test
sl@0
  8603
		3) Add extra test cases to TCDT\T_THREAD.CPP
sl@0
  8604
		4) Add missing XCUST*.DEF files to BMARM\LI.PRJ
sl@0
  8605
sl@0
  8606
Version 0.01.103
sl@0
  8607
================
sl@0
  8608
(Made by Morgan, 1st May 1997)
sl@0
  8609
sl@0
  8610
1) Graham
sl@0
  8611
sl@0
  8612
		1) Fixed a problem with the code which looks for both shift
sl@0
  8613
		   keys when switching on after a warm reset in order to
sl@0
  8614
		   change it into a cold reset.
sl@0
  8615
sl@0
  8616
		2) Fixed a problem with constructing the encrypted password
sl@0
  8617
		   in the super page.
sl@0
  8618
sl@0
  8619
Version 0.01.102
sl@0
  8620
================
sl@0
  8621
(Made by Morgan, 30th April 1997)
sl@0
  8622
sl@0
  8623
1) Pete
sl@0
  8624
		1) Change to PC Card Serial Driver (EUART3.PDD) for Rack D. Added
sl@0
  8625
		followers for 16550 registers IER,LCR,MCR rather than relying on
sl@0
  8626
		them being read/write registers. Tested this driver using
sl@0
  8627
		COMMS(033) app. Sent/received files at various baud rates up to
sl@0
  8628
		57600 (didn't test at 115K) using XMODEM without any problems. The
sl@0
  8629
		above driver works with the following PC Card Serial Ports/Modems:
sl@0
  8630
			- Socket I/O serial port
sl@0
  8631
			- Dacom Goldcard V34 + Fax
sl@0
  8632
			- Hayes Optima 288
sl@0
  8633
		2) Now possible for ATA media driver to return the following errors
sl@0
  8634
		on read or write command fails:
sl@0
  8635
			KErrCorrupt  - Bad block detected / sector ID error.
sl@0
  8636
			KErrWrite    - Write fault.
sl@0
  8637
			KErrTimedOut - Timeout waiting for ATA controller to negate
sl@0
  8638
					   BSY bit.
sl@0
  8639
			KErrLocked   - Timeout waiting for ATA controller to assert
sl@0
  8640
					   RDY bit).
sl@0
  8641
			KErrGeneral  - Protocol error (wrong state of DRQ bit
sl@0
  8642
					   detected).
sl@0
  8643
			KErrUnknown  - General ATA controller error.
sl@0
  8644
			KErrCancel   - Command aborted
sl@0
  8645
			KErrDied     - Uncorrectable error encountered.
sl@0
  8646
		Prior to this, all the above conditions resulted in KErrTimedOut.
sl@0
  8647
		(All of these get translated as before by F32 but the extra
sl@0
  8648
		information from the driver is useful).
sl@0
  8649
		3) Format command now implemented using ATA WriteSectors command rather
sl@0
  8650
		than FormatTrack. This is because there seem to be a variety of
sl@0
  8651
		implementations of the FormatTrack command and also it can take a significant
sl@0
  8652
		time to complete (>200ms) on some cards which require CHS addressing.
sl@0
  8653
		4) Changes to various trace o/ps to prevent system watchdog timeouts on media
sl@0
  8654
		changes with tracing on.
sl@0
  8655
sl@0
  8656
2) William
sl@0
  8657
		 1) Use Win32 IsBadReadPtr/IsBadWritePtr functions to provide better emulation of
sl@0
  8658
			EPOC32 kernel exception handling (should allow us to handle the access violations
sl@0
  8659
			that the kernel has contingency plans for, even under the MSDEV debugger).
sl@0
  8660
		 2) Fix SW-1799 by preventing the Win32 thread priority from being raised too high
sl@0
  8661
		 3) Fix SW-???? by ignoring the KNotifyIfDie flag when WINS threads die (as per EPOC32).
sl@0
  8662
		 4) Trace the Win32 Thread ID and the WINS thread name in the debug window (WINS debug builds)
sl@0
  8663
		 5) Fix SW-4346 by making CalcChunkHeapCompression wary of corrupt heaps and wrapping the
sl@0
  8664
			invocation from ChunkCompressAll in a suitable exception trap.
sl@0
  8665
		 6) Arrange to keep iHandles valid (but empty) after thread cleanup
sl@0
  8666
		 7) Fix SW-3718 by making ChangeNotifier handles thread-relative.
sl@0
  8667
		 8) Prevent WINS RProcess::SetPriority from changing the Win32 process priority (SW-1799)
sl@0
  8668
		 9) Limit the size of a heap cell to 1 Gigabyte (SW-4528)
sl@0
  8669
		10) Fix SW-4389 by ignoring UserSvr::InitRegisterCallback calls after initial bootstrap.
sl@0
  8670
		11) Fix SW-3527 by ensuring that the SYSTEM.INI screenwidth is rounded up to a multiple of 16.
sl@0
  8671
		12) Fix T_QUE, T_DLL1, T_DLL2 and T_SVR2 test failures.
sl@0
  8672
sl@0
  8673
3) Graham
sl@0
  8674
				1) Fixed WINS problem with expanded MachineInfo
sl@0
  8675
				   structure.
sl@0
  8676
sl@0
  8677
4) Bruce
sl@0
  8678
				1) Two field dates are now accepted for all locales. Fixed year 2000 bug.
sl@0
  8679
				   Removed hard-coded 'am'/'pm' and replaced these with data
sl@0
  8680
				   retrieved from the localisation dll.
sl@0
  8681
sl@0
  8682
5) Ann
sl@0
  8683
			1) Fixed bug in TLex8::ScndigAfterPoint() (SW-4304) - now reads in first 18 significant
sl@0
  8684
			   digits rather than just first 18 digits.
sl@0
  8685
			2) Fixed bug in TLex8::Val() (SW-4355) - overflow in some cases was being returned as
sl@0
  8686
				   positive regardless of actual sign.
sl@0
  8687
sl@0
  8688
Version 0.01.101
sl@0
  8689
================
sl@0
  8690
(Made by Graham, 29rd April 1997)
sl@0
  8691
sl@0
  8692
1) Graham
sl@0
  8693
				1) SW-1921 Fixed the occasional load click by disabling interrupts while creating the click.
sl@0
  8694
				2) Added localised keyboard tables to the P2 build
sl@0
  8695
				   system and created CAKDP2.UK and CAKDP2.US. CAKDP2.DLL
sl@0
  8696
				   remains and gives a layout consistent with the keyboards
sl@0
  8697
				   currently on our Limes.
sl@0
  8698
				3) Change the rombuilding system to accept a localisation
sl@0
  8699
				   parameter. So you may use "rom rel p2 uk". If you specify
sl@0
  8700
				   just "rom rel p2", you get what you always used to.
sl@0
  8701
				4) SW-3330 Fixed repeating keys when entering 'Raw'
sl@0
  8702
				   mode in the text window server while a key is depressed.
sl@0
  8703
				5) SW-3837 introduced ELangInternationalFrench
sl@0
  8704
				6) SW-4181 allocated WINS DLL address for MEDCRM.PDD
sl@0
  8705
				7) Solved problem with watchdog timer going off sometimes
sl@0
  8706
				   when coming out of standby.
sl@0
  8707
				8) Changed Hal information names in preparation for the
sl@0
  8708
				   final ROM.
sl@0
  8709
				9) Changed supply voltage information so that it
sl@0
  8710
				   never returns a voltage above the stated maximum
sl@0
  8711
				   for that battery and returns zero millivolts if
sl@0
  8712
				   the battery status is EZero. Changed the maximum
sl@0
  8713
				   voltage for the main battery to 3100mV and for the
sl@0
  8714
				   backup battery to 3200mV. SW-4194 SW-4237.
sl@0
  8715
			   10) Implemented the reading of ADC channel 7 on a cold
sl@0
  8716
				   boot in order to detect when test department boot
sl@0
  8717
				   to final test is required.
sl@0
  8718
			   11) SW-3563 Displaying years >2000 as 2 digits in
sl@0
  8719
				   abbreviated form.
sl@0
  8720
			   12) SW-4339 Set CurrencyNegativeInBrackets to EFalse
sl@0
  8721
				   in both the US and UK localisation dlls.
sl@0
  8722
			   13) Added structure for UserHal::CpuInfo(TDes8& aInfo)
sl@0
  8723
			   14) Added UserSvr::WsRegisterSwitchOnScreenHandling().
sl@0
  8724
				   If a window server wants to take control of
sl@0
  8725
				   turning on the screen, then it should call this
sl@0
  8726
				   function with ETrue and may then call
sl@0
  8727
				   UserSvr::WsSwitchOnScreen(). It may relinquish
sl@0
  8728
				   control back to the Os by calling the register
sl@0
  8729
				   function again with EFalse.
sl@0
  8730
			   15) Added the functions:
sl@0
  8731
						UserHal::SaveXYInputCalibration();
sl@0
  8732
						UserHal::RestoreXYInputCalibration(aType);
sl@0
  8733
				   Restore takes an argument that may be EFactory (to
sl@0
  8734
				   restore the factory set calibration) or ESaved to
sl@0
  8735
				   restore the previously saved calibration.
sl@0
  8736
			   16) Added the following to the Machine Information
sl@0
  8737
				   structure:
sl@0
  8738
						TInfoName iProcessorName
sl@0
  8739
						TInt iProcessorClockInKHz
sl@0
  8740
						TInt iSpeedFactor
sl@0
  8741
						TInt iMaximumDisplayColors
sl@0
  8742
sl@0
  8743
2) William
sl@0
  8744
		1) Added WINS SYSTEM.INI support for "MegabytesOfFreeMemory" which also turns on the
sl@0
  8745
		   mechanism for limiting the total amount of memory which WINS can allocate.
sl@0
  8746
		2) Number some more enumerated types associated with panics and faults. Note that this
sl@0
  8747
		   includes removing #ifdef __XCON in KPWINS\KP_STD.H so that the KPWINS platform fault
sl@0
  8748
		   numbers will change: prior permission was obtained from the BC police.
sl@0
  8749
		3) In DEBUG builds, change RHeap::Free to fill the released block with 0xDE rather than 0
sl@0
  8750
		4) Add __ASSERT_DEBUG to catch double insertion of a TDblQueLink (and fix two places in
sl@0
  8751
		   the Base which weren't constructing a link when creating an object).
sl@0
  8752
		5) Fix SW-3707 by not panicing unnecessarily in DPlatProcess::AllocateDataSectionBase()
sl@0
  8753
		6) Fix SW-2104 in DTimer::Cancel(), by not calling RequestComplete on a dead thread, and
sl@0
  8754
		   not doing the expensive timer scan in DThread::Cleanup().
sl@0
  8755
		7) Fix SW-1185 by interpreting EKeyIncContrast to mean "bigger number in SetContrast" in the
sl@0
  8756
		   text window server.
sl@0
  8757
sl@0
  8758
3) Morgan
sl@0
  8759
		1) Preserved the password and its enabled state over a warm reset.
sl@0
  8760
sl@0
  8761
4) Matthew
sl@0
  8762
		1) Added PlaySineWave() function to RDevSound. Also added an iMaxSineWaveFrequency
sl@0
  8763
		   member variable to the sound caps structure. Frequencies are in Hz.
sl@0
  8764
		2) Changed sound LDD so that it gets the alarm name via the kernel's
sl@0
  8765
		   locale-message-text service. LS_SND.CPP and K32LSND.H have thus been scrapped.
sl@0
  8766
		3) Fixed bug in sound LDD which caused a kernel panic if FlushRecordBuffer() was
sl@0
  8767
		   called after a record request had failed with bad power.
sl@0
  8768
sl@0
  8769
sl@0
  8770
Version 0.01.100
sl@0
  8771
================
sl@0
  8772
(Made by Graham, 23rd April 1997)
sl@0
  8773
sl@0
  8774
1) Dennis
sl@0
  8775
		1) Modified ARM boot code to automatically work out the size and bus width of
sl@0
  8776
		   the ROMs connected to CS0 and CS1 chip selects. This information is stored
sl@0
  8777
		   in the super page in the iRomConfig entries. Both banks of ROM are then mapped
sl@0
  8778
		   to consecutive linear addresses.
sl@0
  8779
		2) Added a new function Hal::PrepareForRepro, which re-maps all the ROM in the
sl@0
  8780
		   machine. This is to make sure repro works correctly even if ROM page shadowing
sl@0
  8781
		   is in use. This function uses the information stored in the iRomConfig entries
sl@0
  8782
		   in the super page to work out which ROM to map and how to map it.
sl@0
  8783
		3) Removed ROM mapping calls from VA_HW.CPP for all variants, and added code to set
sl@0
  8784
		   up the ROM speed and type. For P2 variant, added code to set up the ROM size
sl@0
  8785
		   for CS1 and the total ROM size. This is required to ensure that repro will work
sl@0
  8786
		   correctly even if the CS1 ROM is initially blank.
sl@0
  8787
		4) Added code to SF_MAIN.CPP to load an LDD (BOOT.LDD) from Z: immediately prior to
sl@0
  8788
		   loading the window server. This allows any shadowing of the ROM for bug fixes to
sl@0
  8789
		   be done.
sl@0
  8790
		5) Added a new function UserHal::RomInfo to read the iRomConfig entries from the
sl@0
  8791
		   super page. Updated T_INF.CPP to display this information.
sl@0
  8792
		6) Modified ARM boot code to allocate 1K for each page table instead of 4K as it
sl@0
  8793
		   does at the moment. Also use page tables 6 onwards for ROM mapping instead of
sl@0
  8794
		   8 onwards, since page tables 6 and 7 are unused at the moment.
sl@0
  8795
		   This saves 44K RAM for the standard Protea configuration.
sl@0
  8796
		7) Modified ARM boot code to make checking the RAM configuration non-destructive.
sl@0
  8797
sl@0
  8798
2) Graham
sl@0
  8799
				1) SW-3765 Export TReal96::IsZero by number instead of by name.
sl@0
  8800
				2) SW-3760 Removed E32VIRT.H from the release
sl@0
  8801
				3) SW-3759 Removed temporary __ARRAY_NO_PTRS__ from E32DEF.H
sl@0
  8802
				   and appropriate function definitions.
sl@0
  8803
				4) SW-3058 Removed __DECLARE_DLL_UID().
sl@0
  8804
				5) SW-3480 Removed default Southern daylight savings
sl@0
  8805
				   time from the UK localisation DLL.
sl@0
  8806
				6) SW-3565 Implemented ~ as FN+J on Lime keyboards
sl@0
  8807
				7) SW-3564 Implemented the dial key as Fn+Menu on a
sl@0
  8808
				   Lime and as F3 on WINS. This comes through as
sl@0
  8809
				   EStdKeyDial and EKeyDIal (in E32KEYS.H).
sl@0
  8810
sl@0
  8811
3) Morgan
sl@0
  8812
		1) Moved the locale configuration into the SuperPage to preserve it
sl@0
  8813
		   over a warm-reset.
sl@0
  8814
		2) Implemented TDes::TrimAll();
sl@0
  8815
		3) Checked Uid[1] in S::PhysicalDeviceLoad and S::LogicalDeviceLoad.
sl@0
  8816
		   Added WINS Uids to the device drivers in the Base.
sl@0
  8817
		4) Cold reset is now: Warm-reset followed by LeftShift+RightShift+On
sl@0
  8818
		   to make it harder to do by accident.
sl@0
  8819
		5) Fixed K::TickCounter synchronisation after standby, and initialised
sl@0
  8820
		   iLastLock for locked timers.
sl@0
  8821
sl@0
  8822
4) Matthew
sl@0
  8823
		1) Fixed SW-2855 - the TRegion::Sort() and CArrayXxxBase::Sort() functions
sl@0
  8824
		   have been changed from having no return value to returning TInts, they
sl@0
  8825
		   will return KErrGeneral if there is a stack overflow.
sl@0
  8826
		2) Fixed blitting bug in eiger text window server which caused blocks of
sl@0
  8827
		   screen to be cleared.
sl@0
  8828
		3) Fixed bug in sound driver which made it crash when given a zero-length
sl@0
  8829
		   sample.
sl@0
  8830
sl@0
  8831
5) Jal
sl@0
  8832
				1) Added TLocaleMessageText to E32SVR.H
sl@0
  8833
sl@0
  8834
6) Alastair
sl@0
  8835
		1)	Changed e32\wsrc\ws_main.cpp so that the eikon shell is not loaded
sl@0
  8836
			if the machine is in test department boot mode.
sl@0
  8837
		2)	Created new project e32\etest producing an executable which will be
sl@0
  8838
			loaded instead of ewsrv.exe if the machine is in test department
sl@0
  8839
			boot mode.  This executable will attempt to load ewsrv.exe and
sl@0
  8840
			final.exe from the root directory of a cf card containing euser.dll,
sl@0
  8841
			edisp.dll and econs.dll	from the base in directory D:\system\libs.
sl@0
  8842
			If this attempt fails, etest.exe will try to load elink.exe from
sl@0
  8843
			Z:\system\libs which will open the remote link so that the machine
sl@0
  8844
			can be booted down the serial port.  If this fails etest.exe will
sl@0
  8845
			attempt to boot the machine up normally.
sl@0
  8846
sl@0
  8847
7) Pete
sl@0
  8848
			1) Fixed 'Emergency power down with CF card powered results in cold
sl@0
  8849
			reset' (SW-3620). This was due to QuickEmergencyStandby() not
sl@0
  8850
			disabling the Etna's wait state controller properly.
sl@0
  8851
			2) Force ATA and CROM media drivers on ARM to only return KErrNotReady
sl@0
  8852
			rather than any other error value when a request is interrupted by a
sl@0
  8853
			media change.
sl@0
  8854
			3) Added the function CardIsReady() to class DPcCardCntrl. This should
sl@0
  8855
			be used periodically while using the PC Card Controller to check that
sl@0
  8856
			a media change hasn't occured. The new function is a quicker alternative
sl@0
  8857
			to the function CardIsReadyAndVerified(). The later is now only used once
sl@0
  8858
			at the start of each interface with the controller.
sl@0
  8859
			4) Requests to Write or Format the CROM card now return KErrAccessDenied
sl@0
  8860
			rather than KErrNotSupported.
sl@0
  8861
			5) PC Card Controller now calls P::ResetAutoSwitchOffTimer() on each
sl@0
  8862
			call off RPccdWindow::SetupChunkHw() to stop the machine going into
sl@0
  8863
			standby in the middle of a long write to a CF card etc.
sl@0
  8864
sl@0
  8865
Version 0.01.099
sl@0
  8866
================
sl@0
  8867
(Made by Graham, 18th April 1997)
sl@0
  8868
sl@0
  8869
1) William
sl@0
  8870
		1) Fix SW-3331 by ignoring Undertakers owned by threads which have themselves already died
sl@0
  8871
		2) Tweak UPWINS\BLD.CMD to bootstrap ECONS.LIB more reliably
sl@0
  8872
		3) Arrange for absolute timers to complete with KErrOverflow for times too far in the future
sl@0
  8873
		   instead of treating them as times in the past (starts to fix SW-3566)
sl@0
  8874
sl@0
  8875
2) Graham       1) Fixed leaving without a trap harness. This was
sl@0
  8876
				   calling a slow executive function to panic the
sl@0
  8877
				   thread inside a fast executive trap function.
sl@0
  8878
				   Moved the call to panic to the user side.
sl@0
  8879
				2) Added V32ARMP2.H to INCK release.
sl@0
  8880
				3) Fixed a problem with 098 which meant that
sl@0
  8881
				   EKERN.DLL was linking to ELOCL.US rather
sl@0
  8882
				   than ELOCL.DLL (In WINS).
sl@0
  8883
				4) Included device driver def files in the INCK
sl@0
  8884
				   release.
sl@0
  8885
sl@0
  8886
3) Matthew
sl@0
  8887
				1) Fixed Sound device driver's DTMF tone generating
sl@0
  8888
				   interrupt handler.
sl@0
  8889
sl@0
  8890
4) Ann
sl@0
  8891
		1) Fixed doCalculator() function so that KRealFormatCalculator mode displays in no exponent
sl@0
  8892
		 mode only if full precision may be seen in this mode or if no mor precision will be available
sl@0
  8893
		 in exponent mode.
sl@0
  8894
		2) Fixed doNoExponent() function so that KRealFormatNoExponent mode reduces the number of
sl@0
  8895
		 significant figures used if the given no won't fit.  Now only raises an error if value is too
sl@0
  8896
		 big or too small to fit into the given width.
sl@0
  8897
sl@0
  8898
sl@0
  8899
Version 0.01.098
sl@0
  8900
================
sl@0
  8901
(Made by Graham, 16 April 1997)
sl@0
  8902
sl@0
  8903
Note: This release is neither 100% binary compatible with 097, nor 100% source compatible.
sl@0
  8904
	The binary incompatibility is to do with UID allocation changes, the source incompatibility
sl@0
  8905
	with the correction of "overriden".
sl@0
  8906
	The UID changes are such that narrow release DLLs should work as they are. Other targets need
sl@0
  8907
	tweaking, which maktran 063 will do for you. See below for details.
sl@0
  8908
sl@0
  8909
1) GrahamA
sl@0
  8910
sl@0
  8911
IMPLEMENTATION OF UNICODE CHARACTER CLASSIFICATION, CONVERSION AND COLLATION
sl@0
  8912
sl@0
  8913
NEW FILES
sl@0
  8914
e32\inc\collate.h
sl@0
  8915
	header for Unicode collation system
sl@0
  8916
sl@0
  8917
e32\inc\unicode.h
sl@0
  8918
	header for Unicode character classification system
sl@0
  8919
sl@0
  8920
e32\unicode\collate.cpp
sl@0
  8921
	Unicode collation system
sl@0
  8922
sl@0
  8923
e32\unicode\unicode.cpp
sl@0
  8924
	Unicode character classification and attribute retrieval
sl@0
  8925
sl@0
  8926
e32\unicode\unitable.cpp
sl@0
  8927
	tables of Unicode character attributes; this file is generated by the READTYPE utility from unidata2.txt.
sl@0
  8928
sl@0
  8929
CHANGED FILES
sl@0
  8930
e32\bmarm\elocl.mak:
sl@0
  8931
e32\bmisa\elocl.mak:
sl@0
  8932
e32\bmx86\elocl.mak:
sl@0
  8933
e32\bwins\elocl.mak:
sl@0
  8934
	added ls_unic.cpp to list of source files
sl@0
  8935
sl@0
  8936
e32\bmarm\eloclu.def:
sl@0
  8937
e32\bmarm\eloclud.def
sl@0
  8938
e32\bmisa\eloclu.def:
sl@0
  8939
e32\bmisa\eloclud.def
sl@0
  8940
e32\bmx86\eloclu.def
sl@0
  8941
e32\bwins\eloclu.def
sl@0
  8942
	removed UpperTable, LowerTable, FoldTable, CollTable, TypeTable; added CharSet.
sl@0
  8943
	(where relevant) added ls_unic.cpp to list of source files
sl@0
  8944
sl@0
  8945
e32\bmarm\euser.def:
sl@0
  8946
e32\bmarm\euser.frz:
sl@0
  8947
e32\bmarm\euserd.def:
sl@0
  8948
e32\bmarm\euserd.frz:
sl@0
  8949
e32\bmisa\euser.def:
sl@0
  8950
e32\bmisa\euser.frz:
sl@0
  8951
e32\bmisa\euserd.def:
sl@0
  8952
e32\bmisa\euserd.frz:
sl@0
  8953
e32\bmx86\euser.def:
sl@0
  8954
e32\bmx86\euser.frz:
sl@0
  8955
e32\bwins\euser.def:
sl@0
  8956
e32\bwins\euser.frz:
sl@0
  8957
	added TChar::GetUpperCase, TChar::GetLowerCase
sl@0
  8958
sl@0
  8959
e32\bmarm\euser.mak:
sl@0
  8960
e32\bmisa\euser.mak:
sl@0
  8961
e32\bmx86\euser.mak:
sl@0
  8962
e32\bwins\euser.mak:
sl@0
  8963
	added collate.cpp, unicode.cpp and unitable.cpp to list of source files, and collate.h and unicode.h
sl@0
  8964
	to dependencies where needed
sl@0
  8965
sl@0
  8966
e32\bmarm\euseru.def:
sl@0
  8967
e32\bmarm\euseru.frz:
sl@0
  8968
e32\bmarm\euserud.def:
sl@0
  8969
e32\bmarm\euserud.frz:
sl@0
  8970
e32\bmisa\euseru.def:
sl@0
  8971
e32\bmisa\euseru.frz:
sl@0
  8972
e32\bmisa\euserud.def:
sl@0
  8973
e32\bmisa\euserud.frz:
sl@0
  8974
e32\bmx86\euseru.def:
sl@0
  8975
e32\bmx86\euseru.frz:
sl@0
  8976
e32\bwins\euseru.def:
sl@0
  8977
e32\bwins\euseru.frz:
sl@0
  8978
	added TChar::Compose, TChar::Decompose, User::Fold (new overload), TUnicode::Fold,
sl@0
  8979
	TChar::GetBDCategory, TChar::GetCJKWidth, TChar::GetCategory, TUnicode::GetCategory,
sl@0
  8980
	TChar::GetCombiningClass, TChar::GetInfo, TCHar::GetLowerCase, TUnicode::GetLowerCase,
sl@0
  8981
	TChar::GetNumericValue, TChar::GetTitleCase, TChar::GetUpperCase, TUnicode::GetUpperCase,
sl@0
  8982
	TChar::IsAssigned, TChar::IsMirrored, TChar::IsTitle, User::TitleCase,
sl@0
  8983
	TChar::TranslateFromUnicode,TChar::TranslateFromUnicode.
sl@0
  8984
	changed entry for RLogicalChannel::DoCreate to suit new signature
sl@0
  8985
sl@0
  8986
e32\dsound\d_sound.cpp
sl@0
  8987
	changed an erroneous use of TChar::Fold to TChar::UpperCase
sl@0
  8988
sl@0
  8989
e32\inc\d32ftim.inl
sl@0
  8990
	corrected penultimate arg to RLogicalChannel::DoCreate to suit new type (const TDesC8 *, not const TDesC 8).
sl@0
  8991
sl@0
  8992
e32\inc\e32std.h
sl@0
  8993
	added Unicode functions and constants to TChar class
sl@0
  8994
	added Unicode functions to User class
sl@0
  8995
sl@0
  8996
e32\inc\e32std.inl
sl@0
  8997
	added inline definitions of TChar::Fold and TChar::TitleCase
sl@0
  8998
sl@0
  8999
e32\inc\k32std.h
sl@0
  9000
	added declarations for ExecHandler::GetLocaleCharSet, Locl::CharSet, K::CharSet
sl@0
  9001
sl@0
  9002
e32\inc\u32std.h
sl@0
  9003
	added definition of LCharSet and removed character type bits (__U, __L, etc.), from Unicode build
sl@0
  9004
	defined EExecGetLocaleCharSet and DExecGetLocaleCharSet
sl@0
  9005
	added declaration for Exec::GetLocaleCharSet
sl@0
  9006
sl@0
  9007
e32\kearm\ke_int.cpp
sl@0
  9008
e32\keisa\ke_int.cpp
sl@0
  9009
e32\kex86\ke_int.cpp
sl@0
  9010
e32\kpwins\kp_utl.cpp
sl@0
  9011
	added ExecHandler::GetLocaleCharSet to the dispatch table
sl@0
  9012
sl@0
  9013
e32\ksrc\ks_dat.cpp
sl@0
  9014
	in the Unicode build, removed K::TypeTable, K::UpperTable, K::LowerTable, K::FoldTable and K::CollTable
sl@0
  9015
	and added K::CharSet
sl@0
  9016
sl@0
  9017
e32\ksrc\ks_exec.cpp
sl@0
  9018
	added Unicode functionality to existing functions; added ExecHandler::GetLocaleCharSet
sl@0
  9019
sl@0
  9020
e32\ksrc\ks_ini.cpp
sl@0
  9021
	in the Unicode build, removed initialisation of K::TypeTable, K::UpperTable, K::LowerTable,
sl@0
  9022
	K::FoldTable and K::CollTable and added initialisation of K::CharSet
sl@0
  9023
sl@0
  9024
e32\lsrc\ls_lat1.cpp
sl@0
  9025
	in the Unicode build, used preprocessor directives to remove unused material
sl@0
  9026
sl@0
  9027
e32\lsrc\ls_table.cpp
sl@0
  9028
	added preprocessor directives to select Unicode-build or Ascii-build material as appropriate
sl@0
  9029
sl@0
  9030
e32\lsrc\ls_std.h
sl@0
  9031
	in the Unicode build, removed the LAlphabet class and added the TheCharSet object
sl@0
  9032
sl@0
  9033
e32\tbas\t_key.cpp
sl@0
  9034
e32\t_cdt\t_buf.cpp
sl@0
  9035
	collation tests now work with new Unicode stuff
sl@0
  9036
sl@0
  9037
e32\t_cdt\t_char.cpp
sl@0
  9038
	now works with new Unicode stuff; and in the Unicode build tests character classification and
sl@0
  9039
	my new collation system
sl@0
  9040
sl@0
  9041
e32\tlocale\t_chset.cpp
sl@0
  9042
	now works with new Unicode stuff
sl@0
  9043
sl@0
  9044
e32\ucdt\uc_des.cpp
sl@0
  9045
	changed two erroneous uses of TCharF to TCharUC
sl@0
  9046
sl@0
  9047
e32\ucdt\uc_des16.cpp
sl@0
  9048
e32\ucdt\uc_des8.cpp
sl@0
  9049
	Capitalize and CopyCP convert first letter to title case, not upper case, in the Unicode build
sl@0
  9050
sl@0
  9051
e32\ucdt\uc_exec.cpp
sl@0
  9052
	character classification and conversion functions (TChar::IsUpper, etc.) now work for all
sl@0
  9053
	Unicode values in the Unicode build; added new Unicode-only functions like TChar::IsMirrored
sl@0
  9054
	and TChar::GetNumericValue
sl@0
  9055
sl@0
  9056
e32\ucdt\uc_func.cpp
sl@0
  9057
	the Unicode versions of Mem::CompareC now use the Unicode locale-specific string-based collation
sl@0
  9058
	system implemented by the TCollate class in the new source file collate.cpp
sl@0
  9059
sl@0
  9060
e32\ucdt\uc_ksvr.cpp
sl@0
  9061
	changed type of penultimate arg to RLogicalChannel::DoCreate from const TDesC* to const TDesC8*
sl@0
  9062
	so that it works in the Unicode build: this caused changes to exported function signatures in the
sl@0
  9063
	.def and .frz files
sl@0
  9064
sl@0
  9065
e32\ucdt\uc_lex16.cpp
sl@0
  9066
e32\ucdt\uc_lex8.cpp
sl@0
  9067
	changed two erroneous uses of TChar::Fold to TChar::UpperCase: folding isn't guaranteed to make
sl@0
  9068
	characters upper case, and doesn't in the Unicode build, but UpperCase is
sl@0
  9069
sl@0
  9070
e32\upmarm\up_exec.cpp
sl@0
  9071
e32\upmx86\up_exec.cpp
sl@0
  9072
e32\upwins\up_exec.cpp
sl@0
  9073
	added Exec::GetLocaleCharSet
sl@0
  9074
sl@0
  9075
e32\upmarm\up_lib.cpp
sl@0
  9076
e32\upmx86\up_lib.cpp
sl@0
  9077
	changed an erroneous use of CompareC to CompareF
sl@0
  9078
sl@0
  9079
2) William
sl@0
  9080
		 1) Used Win32 InterlockedIncrement/InterlockedDecrement to implement WINS LockedInc and LockedDec
sl@0
  9081
		 2) Implemented first-cut exception->leave translation for WINS (as per MARM)
sl@0
  9082
		 3) Added exception trapping to DThread::RequestComplete, to fix SW-2274
sl@0
  9083
		 4) Arranged not to complete requests if the requesting thread has already died
sl@0
  9084
		 5) Enhance T_HEAP test to include truly concurrent access to shared heaps
sl@0
  9085
		 6) Fix incorrect semaphore count on default heaps (as shown by the revised T_HEAP!)
sl@0
  9086
		 7) Correct implementation of DThread::GetRamSizes for shared heaps, to fix SW-2671
sl@0
  9087
		 8) Fix WINS implementation of RDebug::Print, which was assuming a zero-terminated string
sl@0
  9088
		 9) Add T_REASON, a utility which loops printing the restart reason using RDebug::Print.
sl@0
  9089
			This isn't a test program as such, but can be put on a CF card as \System\libs\wserv.exe
sl@0
  9090
			to help debug endless restarting.
sl@0
  9091
		10) Improve DSession destructor to dequeue any messages which are marked EDelivered, in the
sl@0
  9092
			hope of fixing SW-1407 and friends.
sl@0
  9093
		11) Implement scheme to orphan kernel CObjects when their owner goes away, to fix SW-1665 (again!)
sl@0
  9094
sl@0
  9095
3) Dennis
sl@0
  9096
		1) Modified prefetch abort, data abort and undefined instruction exception
sl@0
  9097
		   handlers in ke_int.cpp to save correct context if exception occurs in
sl@0
  9098
		   supervisor mode.
sl@0
  9099
sl@0
  9100
4) Matthew
sl@0
  9101
		1) Fixed SW-2408 (problems with signals when you come out af standby).
sl@0
  9102
		2) Fixed SW-3293 (cancelling fallback alarm causes panic).
sl@0
  9103
		3) Fixed bug with emergency power down during fallback sound.
sl@0
  9104
		4) Increased DTMF buffer so if can now cope with 32 characters.
sl@0
  9105
		5) Made kernel noises (keyclicks, buzzes and sound driver activity) obey
sl@0
  9106
		   the state of the sound info. KErrAccessDenied is returned when sound
sl@0
  9107
		   cannot be played. Fixes SW-2725.
sl@0
  9108
		6) Yet more fiddling with algorithmic alarm sounds - fixed nasty distortion
sl@0
  9109
		   occuring with chimes.
sl@0
  9110
		7) Fixed potential memory leaks in CSecurityBase and CConsoleBase.
sl@0
  9111
		8) Fixed TTime::RoundUpToNextMinute() and TTime::operator+(TTimeIntervalMonth)
sl@0
  9112
		   so they now handle negative values correctly.
sl@0
  9113
		9) Fixed SW-1974 (Switching on IrDA gives 0xff in Rx buffer).
sl@0
  9114
		10) Changed comms PDD so that RS232 hardware is not enabled when IrDA is in use.
sl@0
  9115
		11) Changed "KeyClickOverriden" to "KeyClickOverridden" in lots of places.
sl@0
  9116
		12) Fixed SW-3097 (Wins Hal switch statement missing a break after TickPeriod).
sl@0
  9117
sl@0
  9118
5) Graham
sl@0
  9119
				1) Fixed (with help from Morgan) booting up into a text
sl@0
  9120
				   shell on a normal eikon-based machine by placing
sl@0
  9121
				   the appropriate components (EWSRV.EXE EUSER.DLL ECONS.DLL
sl@0
  9122
				   EDISP.DLL ESHELL.EXE) in the \system\libs directory on
sl@0
  9123
				   a CF card.
sl@0
  9124
				2) Fixed SW-3163 (Alarms when the case is closed and
sl@0
  9125
				   'switch off when case is closed' is enabled).
sl@0
  9126
				3) Fixed SW-3091 (Auto switch of in the presence of
sl@0
  9127
				   'switch on when case opens').
sl@0
  9128
				4) Fixed SW-2893 (UserHal::MaxDisplayContrast(TInt&) in
sl@0
  9129
				   WINS).
sl@0
  9130
sl@0
  9131
6) Geert
sl@0
  9132
		1) Removed the encoding of build variants in uid[0] of E32 images. Introduced
sl@0
  9133
		   differentiation between EXEs and DLLs in uid[0]. EXEs have a uid[0] of
sl@0
  9134
		   KExecutableImageUid [0x1000007a], DLLs come with one of KDynamicLibraryUid
sl@0
  9135
		   [0x10000079]; ie, DLLs don't change for narrow release builds, EXEs get the
sl@0
  9136
		   value previously used for narrow debug builds. EXEs won't load unless they
sl@0
  9137
		   have their uid[0] changed.
sl@0
  9138
sl@0
  9139
		2) Changed lots of other private and public UIDs, taking care to preserve
sl@0
  9140
		   compatibility for ARM builds. Unless you release an EXE you're alright, and
sl@0
  9141
		   even EXEs can be fixed at rom build time.
sl@0
  9142
		   UIDs of interest can be found in a bare <e32uid.h>, which, in addition to
sl@0
  9143
		   KExecutableImageUid and KDynamicLibraryUid contains KLogicalDeviceDriverUid
sl@0
  9144
		   and KPhysicalDeviceDriverUid--uid[1] values for device drivers--and unrelated
sl@0
  9145
		   KMachineConfigurationUid.
sl@0
  9146
sl@0
  9147
		3) Removed the second PREP stage from the rom build process.
sl@0
  9148
sl@0
  9149
7) Morgan
sl@0
  9150
		1) Fixed a chunk problem with RAM loading the same process twice.
sl@0
  9151
sl@0
  9152
8) Pete
sl@0
  9153
		1) Fixed 'Panic in DPlatMediaChange::TickService()' in WINS
sl@0
  9154
		(SW-1962). Now ignore further media change events (F5 keydown)
sl@0
  9155
		while the door state is open (as per ARM).
sl@0
  9156
		2) Fixed problems parsing the CIS of Multifunction PC Cards.
sl@0
  9157
		3) Temporarily fixed 'Occasional Write() / Format()
sl@0
  9158
		timeouts when accessing CF card' (SW-3311) by increasing the
sl@0
  9159
		WaitForNotBusy() watch dog in the CF media driver from 40mS to 60mS.
sl@0
  9160
		4) Door close event in WINS (F5 keyup) now processed
sl@0
  9161
		when the machine is in standby.
sl@0
  9162
		5) CRom(Prog) media driver (MEDCRR.PDD) now
sl@0
  9163
		calculated the CRom size by attempting to read the intelligent ID
sl@0
  9164
		from each flash device. This driver now has 'high' priority to allow
sl@0
  9165
		it to open in preference to the normal CRom media driver.
sl@0
  9166
sl@0
  9167
sl@0
  9168
Version 0.01.097
sl@0
  9169
================
sl@0
  9170
(Made by ???, ??? April 1997)
sl@0
  9171
sl@0
  9172
1) MarkT
sl@0
  9173
		1) Added Early write completion to serial driver - D_COMM.CPP.
sl@0
  9174
		   To enable set the flag KConfigWriteBufferedComplete in the
sl@0
  9175
		   iHandshake of TCommConfigV01 and writes will be completed when
sl@0
  9176
		   they are in the transmit buffer as oppose to waiting until they are
sl@0
  9177
		   in the hardware.  To flush data from the transmit buffer either
sl@0
  9178
		   use Write(0), (Write(0) will not complete until transmit buffer
sl@0
  9179
		   is empty), or unset KConfigWriteBufferedComplete and do a
sl@0
  9180
		   write as normal.
sl@0
  9181
sl@0
  9182
2) Pete		1) Change to CF media driver (MEDATA.PDD) so that this reverts to CHS
sl@0
  9183
		addressing if the LBA disk size is found to be invalid. Allows us to
sl@0
  9184
		work with Epson PC ATA card.
sl@0
  9185
		2) Fixed a problem such that the second socket on rack D (E:) wasn't
sl@0
  9186
		properly being reset following a media change (DPcCardSocket::Reset1()
sl@0
  9187
		wasn't being called) - only applies to racks modified for
sl@0
  9188
		VPC control via the CHRGEN signal.
sl@0
  9189
		3) Pc Card Controller now fully supports Memory Space Description fields
sl@0
  9190
		when parsing Configuration Table Entry tuples.
sl@0
  9191
		4) Pc Card Controllers attribute memory chunk increased from 8K to 64K.
sl@0
  9192
		5) Added the Delaware variant (VARMPG).
sl@0
  9193
		6) Added PC Card Serial Driver (EUART3.PDD) for Rack D - ie providing a third
sl@0
  9194
		serial port on Rack D when PC Card Modem or Serial card is inserted into the PC
sl@0
  9195
		Card Socket (68pin socket). To use it you have to switch the '3.3V/5V' switch to
sl@0
  9196
		the 5V position (LEFT) and apply a 5V/500mA supply to the '+5V'pin next to this
sl@0
  9197
		switch. Unfortunately, without a modification to Rack D it is not possible to
sl@0
  9198
		turn this socket on/off under s/w control. The driver assumes the card is
sl@0
  9199
		permanently powered and if the rack goes into standby (or the media change switch
sl@0
  9200
		is operated) then the card is no longer useable.
sl@0
  9201
		This driver has only received limited testing:-
sl@0
  9202
		- With a Serial PC Card it passes T_SERIAL up to 115K baud as long as the power-off
sl@0
  9203
		tests are disabled and the serial port FIFO is enabled. (Passes T_SERIAL up to
sl@0
  9204
		19200baud with FIFO disabled).
sl@0
  9205
		- Dacom V34 PC Card modem responds to an AT<CR> with T_TERM.
sl@0
  9206
		7) Change to CROM media driver so that the page latch
sl@0
  9207
		is reset after each access. This ensures that the page containing the
sl@0
  9208
		cards CIS is always selected at the start of each access.
sl@0
  9209
		8) Fixed problem where DPccdCntrlInterface::DoNotifyChange was adding the same TPccdCallBack
sl@0
  9210
		to two event queues. This resulted in the wrong event callback being
sl@0
  9211
		called on media change. This eventually lead to the situation where
sl@0
  9212
		the DMediaChange Dfc wasn't queued and the door close event was
sl@0
  9213
		missed. Any subsequent access to the CF card returned KErrNotReady.
sl@0
  9214
		(Fixes SW-2557)
sl@0
  9215
sl@0
  9216
3) William
sl@0
  9217
		1) Fixed HeapOffset/ChunkCompressAll interactions to ensure heap safety: the HeapOffset
sl@0
  9218
		   is now set by RHeap::ChunkHeapCreated after the RHeap has been fully created, and
sl@0
  9219
		   ChunkCompressAll now respects the RHeap critical sections.
sl@0
  9220
		2) Add "DebugMask nnn" facility to WINS SYSTEM.INI (sadly you have to specify the
sl@0
  9221
		   bitmask as a decimal number, but it's still useful).
sl@0
  9222
		3) Start adding explicit numbering to some of the panic enumerated types, in particular
sl@0
  9223
		   TBasePanic, TCdtPanic and TExcType.
sl@0
  9224
		4) Implement CConsoleTextWin::SetTitle
sl@0
  9225
		5) Add T_HCOMP.CPP heap compressing program used to cause ChunkCompressAll problems.
sl@0
  9226
		6) Add __KTRACE_ANY which is similar to the previous version of __KTRACE_OPT
sl@0
  9227
sl@0
  9228
4) Graham
sl@0
  9229
		1) Made pointer click volume default to soft (on a cold boot)
sl@0
  9230
				2) Removed Steve Townsend's change to TRegn::Clear()
sl@0
  9231
				3) Removed the leading 'V' from version names
sl@0
  9232
				4) Changed the fold and collate tables of the ISO
sl@0
  9233
				   LATIN1 character set so that 'a with a ring above
sl@0
  9234
				   it' and 'ae combined into one character' both
sl@0
  9235
				   fold to an 'a' and so that 'o with a slash through
sl@0
  9236
				   it' folds to an 'o'.
sl@0
  9237
				5) Froze the complete kernel interface on all builds
sl@0
  9238
				   except WINC.
sl@0
  9239
				6) Published CConsoleBase interface def files in
sl@0
  9240
				   CONSWINS.FRZ, CONSMARM.FRZ, and CONSMISA.FRZ.
sl@0
  9241
				   These are released in the INCC zip file so they
sl@0
  9242
				   will end up in \EPOC32\INCLUDE
sl@0
  9243
sl@0
  9244
5) Morgan
sl@0
  9245
		1) Released E32 as PETRANned components, complete with Uids.
sl@0
  9246
		2) Removed RLibrary::UidL() and RLibrary::Gate() from the API
sl@0
  9247
		3) Introduced TUidType RLibrary::Type() and
sl@0
  9248
		   TUidType RProcess::Type().
sl@0
  9249
		4) TLoaderInfo has changed, so this E32 and the new F32 must be
sl@0
  9250
		   used as a pair.
sl@0
  9251
sl@0
  9252
6) Matthew
sl@0
  9253
		1) Fixed comms drivers so they return the correct Ir Capabilities
sl@0
  9254
		   (KCapsSIR115kbps on Eiger).
sl@0
  9255
		2) Fixed bug in WINS sound pdd which meant that sometimes cancelling
sl@0
  9256
		   a play request would only finish after the sound had finished playing
sl@0
  9257
		   anyway.
sl@0
  9258
		3) Fixed bug in sound LDD which meant that samples up to the length of
sl@0
  9259
		   the buffer could be played or recorded on one go. Now descriptors
sl@0
  9260
		   must be less than or equal to the half the size of the buffer.
sl@0
  9261
		4) Added code to check that the power was not too low for playing or
sl@0
  9262
		   recording before it started. Also added code which checks the power
sl@0
  9263
		   level while it is in use and aborts if the power drops too low.
sl@0
  9264
		5) Further changes to the algorithmic alarm sounds - they now use beats,
sl@0
  9265
		   as on the 3a.
sl@0
  9266
		6) Added EChangesPowerStatus to the change notifier. This change occurs
sl@0
  9267
		   when either of the two battery statuses changes, or if external power
sl@0
  9268
		   is connected or disconnected.
sl@0
  9269
		7) Fixed bugs in TTime::DayNoInWeek() and TTime::DateTime() which were
sl@0
  9270
		   giving the wrong values for negative TTimes.
sl@0
  9271
		8) Added horizontal tabs, delete and ascii bell to test window server.
sl@0
  9272
		   Also made it ignore the null character and vertical tabs.
sl@0
  9273
sl@0
  9274
Version 0.01.096
sl@0
  9275
================
sl@0
  9276
(Made by Graham, 2nd April 1997)
sl@0
  9277
sl@0
  9278
Binary compatible with 095
sl@0
  9279
sl@0
  9280
1) Graham
sl@0
  9281
		1) Improved backup battery voltage monitoring
sl@0
  9282
		2) Fixed a bug in the sound driver in the presence of
sl@0
  9283
		   emergency power loss. This should cure all reported
sl@0
  9284
		   problems of not being able to turn the machine back
sl@0
  9285
		   on after playing sounds with low batteries.
sl@0
  9286
sl@0
  9287
2) Dennis
sl@0
  9288
		1) Fixed bug in unsigned division routine when used with
sl@0
  9289
		   a divisor >= 0x80000000.
sl@0
  9290
sl@0
  9291
3) William
sl@0
  9292
		1)	Implement primitive support for WINS memory gauge (SW-1183)
sl@0
  9293
			Note that this won't limit the total memory allocated, so the gauge can
sl@0
  9294
			exceed 100% (see Defects database for details).
sl@0
  9295
		2)	Report allocated base address even for chunks of committed size 0 (SW-1876)
sl@0
  9296
		3)	Fix dangling pointer problem with DChunk::AdjustL (SW-1793)
sl@0
  9297
		4)	Implement Steve Townsend's suggested shortcut in User::Free and User::FreeZ
sl@0
  9298
		5)	Tidy up handling of config structures in DoControl in D_COMM.CPP (SW-1970)
sl@0
  9299
sl@0
  9300
4) Matthew
sl@0
  9301
		1) Fixed SW-1994: Playing no sound can lock up machine.
sl@0
  9302
sl@0
  9303
5) Pete
sl@0
  9304
		1) Measurement of Vpc when powering up Pc Cards has now been enabled. This is in order
sl@0
  9305
		   to reject cards which are found to be drawing excessive current.
sl@0
  9306
		   (This had been disabled until it was possible to convert the ADC reading to millivolts).
sl@0
  9307
sl@0
  9308
Version 0.01.095
sl@0
  9309
================
sl@0
  9310
(Made by Graham, 26th March 1997)
sl@0
  9311
sl@0
  9312
1) William
sl@0
  9313
		1) Fixed bug with shared heaps (SW-1665) and added failure scenario to the T_RHEAP test.
sl@0
  9314
		2) Fixed SW-1884 bug about timer.At() alarms going off early after switchoff, and
sl@0
  9315
		   enhanced T_POWR test to check for this.
sl@0
  9316
sl@0
  9317
2) Morgan
sl@0
  9318
		1) Added code to calibrate the digitiser based on the values in the
sl@0
  9319
		   E-squared on a cold start.  This may mean that if your E-squared
sl@0
  9320
		   contains wildly outrageous values the digitiser will be out of
sl@0
  9321
		   kilter.  You can run \E32\TBAS\T_PROM to rectify this.
sl@0
  9322
sl@0
  9323
3) Matthew
sl@0
  9324
		1) Fixed B5/B6 bug SW-1726 (volume suddenly shooting to maximum).
sl@0
  9325
sl@0
  9326
		2) Moved algorithmic alarm data into the localisation dll, so the names can
sl@0
  9327
		   be changed.
sl@0
  9328
sl@0
  9329
		3) Fixed B5/B6 bug SW-1630 in Comms PDDs: trying to set Mark and Space now
sl@0
  9330
		   returns an error, and they are not returned as part of the capabilities.
sl@0
  9331
sl@0
  9332
		4) Changes to Etna comms:
sl@0
  9333
			Fixed bug where the TEtna class was ignoring the Parity-Enable bit.
sl@0
  9334
			Removed the Uart interrupt enable from the boot up, since it was being
sl@0
  9335
			switched off anyway, and made the Etna comms driver switch interrupts on.
sl@0
  9336
sl@0
  9337
		5) Added Comms driver power handling code. The behaviour is now that read and
sl@0
  9338
		   write requests are completed with KErrAbort on normal switch-off and with
sl@0
  9339
		   KErrBadPower if there is an emergency power down. On a power down the input
sl@0
  9340
		   signals drop. On switch off, writes will keep going until the end of the
sl@0
  9341
		   hardware fifo.
sl@0
  9342
sl@0
  9343
		6) Fixed some bugs in the Comms LDD to do with signals.
sl@0
  9344
sl@0
  9345
		7) Added Grahams K32DBGDD.H header file, which contains a helpful class for
sl@0
  9346
		   debugging device drivers.
sl@0
  9347
sl@0
  9348
4) Jal
sl@0
  9349
		1) Changes to the Pccd interface controller to allow
sl@0
  9350
				   access to media change notification. Added to UserPcCardCntrl:
sl@0
  9351
sl@0
  9352
						IMPORT_C static TInt NotifyChange(TSocket aSocket,TRequestStatus *aReqStat);
sl@0
  9353
sl@0
  9354
5) Graham
sl@0
  9355
				1) Tightened up the backlight handling code and added various
sl@0
  9356
				   backlight tests to T_POWR.CPP
sl@0
  9357
sl@0
  9358
		2) Made Steve Townsends modification to TRegion.
sl@0
  9359
sl@0
  9360
				3) Fixed a bug in Unicode in UM_RTOD.CPP
sl@0
  9361
sl@0
  9362
6) Jonathan
sl@0
  9363
				1) t_dbg: Added memory read/write tests to user data and, on
sl@0
  9364
				   MARM, to Eiger registers.
sl@0
  9365
				2) Forced RDebug::WriteMemory() to use Mem::Move for aligned
sl@0
  9366
				   writes so that writing to Eiger registers works.
sl@0
  9367
sl@0
  9368
7) Dennis
sl@0
  9369
		1) Added code to implement real-time clock correction based on a
sl@0
  9370
		   measured crystal error value in parts per 2^24, written into
sl@0
  9371
		   K::XtalError at startup.
sl@0
  9372
8) Pete
sl@0
  9373
		1) On media change, before writing to a thread which
sl@0
  9374
		   has requested notification of media change, a check has been added to
sl@0
  9375
		   verify the thread has not been destroyed.
sl@0
  9376
		2) Fixed a problem with CRom media driver (MEDCRM.PDD).
sl@0
  9377
		   Reads/writes from a position which wasn't on a word boundary (or of a
sl@0
  9378
		   length in bytes which wasn't a multiple of 4), weren't previously supported.
sl@0
  9379
		3) Implemented a 40ms watchdog timeout on writes to CF cards (MEDATA.PDD).
sl@0
  9380
		4) Pc Card Controller now supports extended device
sl@0
  9381
		   speed bytes when parsing Device Information Tuples.
sl@0
  9382
		5) Added extra fixed media enum to TMediaDevice in E32PCCD.H.
sl@0
  9383
		6) Various changes to Pc Card Controller to reduce code size.
sl@0
  9384
		7) It is now possible to disable the media change
sl@0
  9385
		   implementation by setting iTotalMediaChanges=0 in Custom::PcCardMachineInfo().
sl@0
  9386
		8) Pc Card inactivity power down and 'not locked' power down periods can now be
sl@0
  9387
		   set at the custom layer in Custom::PcCardMachineInfo().
sl@0
  9388
sl@0
  9389
Version 0.01.094
sl@0
  9390
================
sl@0
  9391
(Made by Graham, 20th March 1997)
sl@0
  9392
sl@0
  9393
1) William
sl@0
  9394
		1) Changed __KTRACE_OPT for exact matches on multiple trace bits, and tweaked some
sl@0
  9395
		   of the debug messages a bit.
sl@0
  9396
		2) Enabled __KTRACE_OPT for WINS builds, writing to "Output" window under MSDEV
sl@0
  9397
		3) Automatically set KPANIC trace bit if debug mask is non-zero
sl@0
  9398
		4) Use aThread==NULL to mean &Plat::CurrentThread() in ObjectFromHandle functions,
sl@0
  9399
		   and adjusted the callers appropriately
sl@0
  9400
		5) Check in SvSendReceive to make sure that the iSvSession is not NULL, and
sl@0
  9401
		   fault if it is: the most likely reason for this is a User::Panic in the Supervisor
sl@0
  9402
		   thread, so we check to see if the message code is ESvThreadPanic and extract the
sl@0
  9403
		   Panic category and code as appropriate.
sl@0
  9404
		6) Added a new TCDT\T_KILLER.CPP test program.
sl@0
  9405
		7) Added simple calibration of WINS ticks, to fix SW-1384 by making the clocks run on time...
sl@0
  9406
		8) Arranged for Plat::Panic to add 0x10000 to the afult number and call Plat::Fault, so that
sl@0
  9407
		   the machine will restart rather than loop forever.
sl@0
  9408
		9) Put back tweaked VA_RCHG.CPP battery charging driver: it will charge batteries without
sl@0
  9409
		   melting the machine, but it won't do so automatically: still needs more work.
sl@0
  9410
sl@0
  9411
2) Graham
sl@0
  9412
		1) Changed rack B,C,and D keyboard tables to interpret FN+cursor
sl@0
  9413
		   keys as home, end, page down and up.
sl@0
  9414
sl@0
  9415
		2) Updated all keyboard tables to handle ctrl+fn as outlined in
sl@0
  9416
		   the 090 release notes - not sure what happened to these changes,
sl@0
  9417
		   they seemed to disappear some time after 090
sl@0
  9418
sl@0
  9419
		3) Added code to handle low battery situations a lot faster.
sl@0
  9420
		   Typically, we remove power from all devices within 110uS and go
sl@0
  9421
		   into standby within 130uS.
sl@0
  9422
sl@0
  9423
		4) Enhanced the P2 keyboard driver. It no longer locks the keyboard
sl@0
  9424
		   out fully when three keys are pressed simultaneously. Rather, it
sl@0
  9425
		   waits until fewer then three keys remain pressed before beginning
sl@0
  9426
		   to deliver keyboard events again.
sl@0
  9427
sl@0
  9428
		5) Fixed a bug in the keyboard when switching on with the dictaphone
sl@0
  9429
		   keys - it delivered the key down event but never delivered a
sl@0
  9430
		   key up event when the key was released.
sl@0
  9431
sl@0
  9432
3) Ann
sl@0
  9433
		1) Changed TRealFormat KRealFormatExponent mode to be able to use
sl@0
  9434
		either significant figures or decimal places.  Default is still
sl@0
  9435
		decimal places, but oring in the KUseSigFigs flag to the format type
sl@0
  9436
		will allow use of significant figures instead.
sl@0
  9437
sl@0
  9438
		2) Changed TRealForamtFixed mode so that negative numbers < -1 are
sl@0
  9439
		are "0" rather than "-0" when 0 dp are used.
sl@0
  9440
sl@0
  9441
4) Dennis
sl@0
  9442
	1) Exec::ThreadRead8, ThreadRead16, ThreadWrite8, ThreadWrite16, ThreadGetDesLength,
sl@0
  9443
	   ThreadGetDesMaxLength now return an error code of KErrArgument if the pointer into the
sl@0
  9444
	   remote thread address space is invalid, rather than panicing the caller. This fixes
sl@0
  9445
	   problem SW-1013.
sl@0
  9446
sl@0
  9447
	2) Supervisor server functions invoked with a bad pointer will now panic the caller,
sl@0
  9448
	   rather than causing a system fault and rebooting the machine.
sl@0
  9449
sl@0
  9450
	3) The sound driver LDD has been changed to allow only one channel to be open at a time.
sl@0
  9451
	   This fixes problem SW-1165.
sl@0
  9452
sl@0
  9453
	4) All key and pointer clicks are now disabled during sound recording. This fixes
sl@0
  9454
	   problem SW-817.
sl@0
  9455
sl@0
  9456
5) Morgan
sl@0
  9457
	1) Read the E-Squared ROM into RAM on a cold boot.
sl@0
  9458
sl@0
  9459
sl@0
  9460
Version 0.01.093
sl@0
  9461
================
sl@0
  9462
(Made by Graham, 14th March 1997)
sl@0
  9463
sl@0
  9464
1) Pete
sl@0
  9465
		1) Fixed a problem with inter-thread reading from CF card.
sl@0
  9466
	2) Fixed a timeout problem with some CF cards when
sl@0
  9467
	formatting.
sl@0
  9468
sl@0
  9469
2) Jonathan
sl@0
  9470
	1) StrongARM port (ISA) brought up-to-date but not tested.
sl@0
  9471
sl@0
  9472
	*) Base team please note that (rightly or wrongly) the ARM Custom
sl@0
  9473
	   API is shared with ISA (file inc\v32arm.h), so any changes or
sl@0
  9474
	   additions to the ARM Custom API must be reflected in the ISA
sl@0
  9475
	   Custom implementation.
sl@0
  9476
sl@0
  9477
3) Graham
sl@0
  9478
		1) Fixed handling of the emergency power down queue. This
sl@0
  9479
		   problem was due to the bad design of single queues - it
sl@0
  9480
		   is impossible to fully check that you are enqueued without
sl@0
  9481
		   traversing the queue from the top. We might look into
sl@0
  9482
		   adding a more useful single queue type.
sl@0
  9483
sl@0
  9484
Version 0.01.092
sl@0
  9485
================
sl@0
  9486
(Made by Graham, 13th March 1997)
sl@0
  9487
sl@0
  9488
sl@0
  9489
1) Pete
sl@0
  9490
	1) Fixed problem with Format() in Compact Rom (repro version)
sl@0
  9491
	media driver (MEDCRR.PDD) such that it was only formatting the first
sl@0
  9492
	2M of a CRom card.
sl@0
  9493
	2) Compact Rom media driver (MEDCRM.PDD) now included in release.
sl@0
  9494
sl@0
  9495
2) Graham
sl@0
  9496
		1) Fixed an bug in the mmu abstraction which assumed that the page
sl@0
  9497
		   directory was aligned linearly in the same way as it was aligned
sl@0
  9498
		   physically.
sl@0
  9499
sl@0
  9500
3) William
sl@0
  9501
		1) Fixed a problem with threads dying
sl@0
  9502
sl@0
  9503
Version 0.01.091
sl@0
  9504
================
sl@0
  9505
(Made by Graham, 12th March 1997)
sl@0
  9506
sl@0
  9507
1) SimonB
sl@0
  9508
		1) Fix for Serial PDD in NT 4
sl@0
  9509
		2) Removal of dependancy on MSVCRT40*.DLL
sl@0
  9510
sl@0
  9511
2) Morgan
sl@0
  9512
		1) Added screen information to TRomHeader for the bootstrap
sl@0
  9513
		2) Fixed corrupted ExcInfo on MARM by adding a FiqStack and
sl@0
  9514
		   moving the exceptions onto the ExceptionStack.
sl@0
  9515
		3) Moved TExcInfo to E32HAL.H
sl@0
  9516
		4) System Death due to an exception now saves ExcInfo in the
sl@0
  9517
		   Superpage and causes a Kernel Fault.  Startup, Fault and
sl@0
  9518
		   Exception reasons are available through:
sl@0
  9519
				UserHal::StartupReason()
sl@0
  9520
				UserHal::FaultReason()
sl@0
  9521
				UserHal::ExceptionId()
sl@0
  9522
				UserHal::ExceptionInfo()
sl@0
  9523
				   There should be a Shell dialogue which retrieves
sl@0
  9524
				   this information after a kernel fault. This will
sl@0
  9525
				   enable us to pin down the offending code. Also, along
sl@0
  9526
				   with each new Protea image, MAKSYM should be run and
sl@0
  9527
				   the generated log file should be placed on the network
sl@0
  9528
				   as well. This will give the address of every function
sl@0
  9529
				   in every module of the ROM.
sl@0
  9530
		5) Changed the startup beeps
sl@0
  9531
				ColdStart    1 beep
sl@0
  9532
				WarmStart    2 beeps
sl@0
  9533
				KernelFault  3 decending beeps
sl@0
  9534
		6) Fixed SW-1069 - WINC heaps can grow up to 8Mb
sl@0
  9535
sl@0
  9536
3) Graham
sl@0
  9537
		1) Enabled the shift key when typing e.g. CTRL-1 a to give
sl@0
  9538
		   a-umlaut.
sl@0
  9539
sl@0
  9540
		2) Solved the œ sign problem on WINS - this had been
sl@0
  9541
		   re-introduced by Simon's WINS internationalisation
sl@0
  9542
		   code.
sl@0
  9543
sl@0
  9544
		3) Re-introduced some digitiser inertia code to prevent
sl@0
  9545
		   wobble.
sl@0
  9546
sl@0
  9547
		4) Re-structured the Spi controller code.
sl@0
  9548
sl@0
  9549
		5) Fixed a bug in CObjectCon::CheckUniqueFullName() that was
sl@0
  9550
		   preventing two processes of the same name being loaded.
sl@0
  9551
		   This cures problems with T_KHEAP.EXE and T_PROC1.EXE.
sl@0
  9552
sl@0
  9553
		6) Fixed T_KEYS.EXE by updating it for the new ISO LATIN 1
sl@0
  9554
		   keyboard tables.
sl@0
  9555
sl@0
  9556
		7) Made TInt64::GetTInt() and TInt64::GetTReal() const.
sl@0
  9557
sl@0
  9558
		8) Swapped the dictaphone keys round (again?)
sl@0
  9559
sl@0
  9560
		9) Changed the emergency power down list to be on a single
sl@0
  9561
		   queue instead of an object container.
sl@0
  9562
sl@0
  9563
		10) Changed the P2 keyboard table to make FN-e give e acute
sl@0
  9564
			and FN-SHIFT-e to give E acute. This is just to test that
sl@0
  9565
			such things are possible although it might be cool to just
sl@0
  9566
			leave this in since e acute is probably the most-used
sl@0
  9567
			accented character in English.
sl@0
  9568
sl@0
  9569
		11) Moved the accenting keys from CTRL+1-6 to FN+Q and FN+Z-B
sl@0
  9570
sl@0
  9571
		12) Completed anti-ghosting logic to disallow more than one
sl@0
  9572
			modifier and more than one normal key at the same time.
sl@0
  9573
sl@0
  9574
		13) Changed the text window server so that a pointer click outside
sl@0
  9575
			the region of any window will cause the foreground window to
sl@0
  9576
			change.
sl@0
  9577
sl@0
  9578
		14) Implemented battery voltage monitoring
sl@0
  9579
sl@0
  9580
		15) Increased the number of frozen functions in the kernel to
sl@0
  9581
			avoid BITGDI recompilations when E32 is released. Lane, you
sl@0
  9582
			will have to recompile, hopefully for the last time, for
sl@0
  9583
			this version of E32.
sl@0
  9584
sl@0
  9585
		16) Changed keyboard driver to recognise when the machine is
sl@0
  9586
			turned on. It will then scan the keyboard and deliver a
sl@0
  9587
			keyboard event only if the dictaphone keys are down. It then
sl@0
  9588
			waits for all keys to be up before proceeding to deliver
sl@0
  9589
			further events.
sl@0
  9590
sl@0
  9591
4) Matthew
sl@0
  9592
		1) Fixed B5 bug SW-266 ("%+0*S" formatted incorrectly).
sl@0
  9593
sl@0
  9594
		2) Put in Ir power-down fix (from Mark Ball).
sl@0
  9595
sl@0
  9596
		3) Added emergency power down handling to sound driver. The driver
sl@0
  9597
		   completes statuses with KErrBadPower on emergency power down.
sl@0
  9598
		   This fixes B5 bug SW-384.
sl@0
  9599
sl@0
  9600
		4) Added two functions to sound driver - BytesPlayed() and
sl@0
  9601
		   ResetBytesPlayed() wich give the user feedback on how playing is
sl@0
  9602
		   progressing.
sl@0
  9603
sl@0
  9604
		5) Increased the volume of EVolumeMedium in Eiger sound PDD so the
sl@0
  9605
		   steps are more even. "Fixes" SW-543 (No apparent difference
sl@0
  9606
		   between volume settings).
sl@0
  9607
sl@0
  9608
		6) Moved sound test code from F32 to E32.
sl@0
  9609
sl@0
  9610
5) Jonathan
sl@0
  9611
	1) Added SA ARM variant for Snowball.
sl@0
  9612
sl@0
  9613
	2) Fixed #defines in ROM.OBY file to make PREP happy.
sl@0
  9614
sl@0
  9615
	3) Made screen size a variant-dependent thing on ARM:
sl@0
  9616
		- Screen size is no longer hard-coded in ARM text window server
sl@0
  9617
		  (wd_eiger.cpp) or ImpHal::Init3(). Text window server no
sl@0
  9618
		  longer handles switching bit depth.
sl@0
  9619
		- LCD initialisation moved out of boot code into
sl@0
  9620
		  ImpHal::Init3(), with size-dependant LCD initialisation in
sl@0
  9621
		  Variant::Init3().
sl@0
  9622
		- ARM boot code uses screensize parameters in ROM header to
sl@0
  9623
		  determine video RAM size and placement of page tables.
sl@0
  9624
sl@0
  9625
6) Dennis
sl@0
  9626
		1) Fixed a bug in the high-resolution timer code, and added a
sl@0
  9627
		   Cancel() function to TMilliSecondCallBack.
sl@0
  9628
sl@0
  9629
		2) Added a logical device driver for the high-resolution
sl@0
  9630
		   timer (EFTIM.LDD) accessed via RFastTimer class in
sl@0
  9631
		   D32FTIM.H
sl@0
  9632
sl@0
  9633
		3) Fixed some bugs in 486 build of E32 and speeded it up
sl@0
  9634
		   by enabling the processor cache and by coding the Mem::
sl@0
  9635
		   functions in assembler.
sl@0
  9636
sl@0
  9637
7) Ann
sl@0
  9638
		1) Fixed a bug in TLex8::Val() which setting next to start of
sl@0
  9639
		string if an overflow occurred, causing problems for EIKON.
sl@0
  9640
sl@0
  9641
8) Pete
sl@0
  9642
	1)  On ARM architecture, moved code for Etna device out of the Kernel
sl@0
  9643
	 into the Variant DLL for P1,P2,RackC and RackD builds.
sl@0
  9644
	2) Added iInterruptInfo to TPccdConfigInfo class. Users of
sl@0
  9645
	UserPcCardCntrl::GetConfig() must rebuild - only Pc Card test code should
sl@0
  9646
	be using this.
sl@0
  9647
	3) Changes to the inter-thread Read()/Write() functions and the Format()
sl@0
  9648
	function of DMediaDriver to take a reference to a length (TInt &aLen rather
sl@0
  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
sl@0
  9650
	with aLength adjusted to the remaining length.
sl@0
  9651
	4) Removed the current thread read/write functions
sl@0
  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.
sl@0
  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).
sl@0
  9654
sl@0
  9655
Version 0.01.090
sl@0
  9656
================
sl@0
  9657
(Made by Graham, 26th February 1997)
sl@0
  9658
sl@0
  9659
1) Graham
sl@0
  9660
		1) Changed CTRL+FN+key behaviour. This is a complicated
sl@0
  9661
		   issue. If one hits CTRL+FN+'1' on a Lime, then it is clear
sl@0
  9662
		   that the Control and Function modifiers should be set.
sl@0
  9663
		   However, what should the keycode be? It should be '1'
sl@0
  9664
		   and not '_'. Higher level software is more interested in
sl@0
  9665
		   the fact that CTRL+FN+'1' has been pressed than CTRL+'_' has
sl@0
  9666
		   been pressed. For this reason, in 089, the keyboard tables
sl@0
  9667
		   were changed to make CTRL override FN as far as keycode code
sl@0
  9668
		   production was concerned.
sl@0
  9669
sl@0
  9670
		   However, consider the keystroke CTRL+FN+LeftArrow. In this
sl@0
  9671
		   case, the opposite is true. Higher level software is more
sl@0
  9672
		   interested in the fact that CTRL+HOME has been pressed
sl@0
  9673
		   than that CTRL+FN+LeftArrow has been pressed.
sl@0
  9674
sl@0
  9675
		   So, in this release I have changed the keyboard tables to
sl@0
  9676
		   cater for both problems by judging each key on an
sl@0
  9677
		   individual basis. On a Lime, the keycode produced for:
sl@0
  9678
sl@0
  9679
		   CTRL+FN+'1' - CTRL+FN+'9'    ->      '1' - '9'
sl@0
  9680
		   CTRL+FN+'A' - CTRL+FN+'Z'    ->      0x01 - 0x1a
sl@0
  9681
		   CTRL+FN+LeftArrow            ->      Home
sl@0
  9682
		   CTRL+FN+RightArrow           ->      End
sl@0
  9683
		   CTRL+FN+UpArrow              ->      PgUp
sl@0
  9684
		   CTRL+FN+DownArrow            ->      PgDn
sl@0
  9685
		   CTRL+FN+Tab                  ->      CapsLock
sl@0
  9686
		   CTRL+FN+Esc                  ->      Off
sl@0
  9687
		   CTRL+FN+'                    ->      '
sl@0
  9688
		   CTRL+FN+.                    ->      .
sl@0
  9689
		   CTRL+FN+<space>              ->      Backlight
sl@0
  9690
		   CTRL+FN+,                    ->      Help
sl@0
  9691
sl@0
  9692
		2) Changed the raw key code on WINS for the Alt key from
sl@0
  9693
		   EStdKeyLeftAlt to EStdKeyLeftFunc. Attempted to get the
sl@0
  9694
		   windows key to be the Epoc32 Alt key.
sl@0
  9695
sl@0
  9696
		3) Various additions to do with REPROing the upper 2Mb on
sl@0
  9697
		   Limes.
sl@0
  9698
sl@0
  9699
		4) Protected the eiger internal registers from user mode access
sl@0
  9700
sl@0
  9701
		5) Introduced anti-ghosting algorithm into the P2 keyboard
sl@0
  9702
		   driver. It doesn't, however, get rid of the ghost FN key
sl@0
  9703
		   when you hold down LeftShift, DownArrow, and RightArrow
sl@0
  9704
		   together. This leads me to believe that not all the diodes
sl@0
  9705
		   have been fitted on the modifier keys.
sl@0
  9706
sl@0
  9707
		   The algorithm is basically one of 2-key rollover. So, any
sl@0
  9708
		   keypresses made when two keys are already held down should
sl@0
  9709
		   be ignored. Naturally, this is no good when you want to
sl@0
  9710
		   hold down certain complex modifier and key combinations.
sl@0
  9711
		   So, these special cases are compensated for in the software
sl@0
  9712
		   in the knowledge diodes should be fitted into the modifier keys
sl@0
  9713
		   to prevent any matrix-ghosting.
sl@0
  9714
sl@0
  9715
2) Ann
sl@0
  9716
	1) Fixed bug spotted by Natascha in doCalculator() so that values
sl@0
  9717
	   with negative exponents are displayed correctly.
sl@0
  9718
sl@0
  9719
sl@0
  9720
Version 0.01.089
sl@0
  9721
================
sl@0
  9722
(Made by Jane, 21st February 1997)
sl@0
  9723
sl@0
  9724
1) SimonB
sl@0
  9725
	1) Removed dependency on WINMM. Timer now based on a RealTime thread
sl@0
  9726
	   and sleeps.
sl@0
  9727
	   Required for Win95 and general compatibility.
sl@0
  9728
sl@0
  9729
	2) Changed WINS Comms PDD to work with Windows 95
sl@0
  9730
sl@0
  9731
	3) Mark T's Comms PDD bug fixes integrated.
sl@0
  9732
sl@0
  9733
		4) International Keyboard support. Just UK and US at the
sl@0
  9734
		   moment, more to follow.
sl@0
  9735
sl@0
  9736
		5) Removed first chance exceptions from WINS loading.
sl@0
  9737
		   IsBadWritePtr replaced by VirtualQuery.
sl@0
  9738
sl@0
  9739
2) Jane
sl@0
  9740
sl@0
  9741
	1) Finished the CObjectCon improvements suggested by Andrew. Note
sl@0
  9742
	   that to pick these up you need the new version of
sl@0
  9743
	   CheckUniqueName which takes CObject*s rather than names.
sl@0
  9744
	   The time taken to Add 0x600 named objects to a container has
sl@0
  9745
	   gone down from 14 seconds to 6 seconds.
sl@0
  9746
sl@0
  9747
	2) Added code for _ftol() to WINS and X86 builds. The function
sl@0
  9748
	   header is in e32std.h
sl@0
  9749
sl@0
  9750
	3) Fixed various debugging printfs by supplying a simple overflow
sl@0
  9751
	   handler so that long strings are truncated rather than
sl@0
  9752
	   panicing the caller.
sl@0
  9753
sl@0
  9754
3) Graham
sl@0
  9755
sl@0
  9756
		1) Fixed the œ gives ae keyboard problem by converting all
sl@0
  9757
		   keyboard tables from CP850 to ISO Latin 1.
sl@0
  9758
sl@0
  9759
		2) Introduced a new key code - EKeyHelp. This is now F2
sl@0
  9760
		   on WINS.
sl@0
  9761
sl@0
  9762
		3) Changed the WINS keyboard tables so that the dictaphone
sl@0
  9763
		   keys give the correct raw scan code as well as the
sl@0
  9764
		   appropriate Epoc32 key code. Did the same trick for
sl@0
  9765
		   the menu, help and off keys.
sl@0
  9766
sl@0
  9767
		4) Fixed up the P2 keyboard tables. Note that the backlight
sl@0
  9768
		   keys have to be handled in higher level software -
sl@0
  9769
		   presumably the window server. On Protea the key code used
sl@0
  9770
		   is EKeyBacklightToggle. However, a really skillful
sl@0
  9771
		   implementation would handle EKeyBacklightOn and
sl@0
  9772
		   EKeyBacklightOff as well (in case future hardware has
sl@0
  9773
		   both on and off keys for the backlight).
sl@0
  9774
sl@0
  9775
		5) Fixed the P2 sticky shift and function modifiers.
sl@0
  9776
sl@0
  9777
		6) Removed the keyclick on shift, function and control keys.
sl@0
  9778
		   This has only been implemented on P2.
sl@0
  9779
sl@0
  9780
4) Pete
sl@0
  9781
	1) Renamed EPccdEvent enums to prevent name clashing with
sl@0
  9782
	W32STD.H.
sl@0
  9783
	2) Enabled media change interrupts on P2 hardware.
sl@0
  9784
sl@0
  9785
5) Morgan
sl@0
  9786
		1) WarmReset+LeftShift boots with EStartupColdReset on P1,P2,PB,PC,PD
sl@0
  9787
		2) Added startup beep
sl@0
  9788
		3) Fixed SW-32
sl@0
  9789
		4) Write protected the Mmu page directory backup
sl@0
  9790
sl@0
  9791
6) Ann
sl@0
  9792
		I IMPLEMENTATION OF SPECIAL VALUES:
sl@0
  9793
sl@0
  9794
		TReal96, Math and TDes8/16 classes now handle "special values" - NaNs,
sl@0
  9795
		infinities, signed zeros and denormals.
sl@0
  9796
sl@0
  9797
		Changes are as follows:
sl@0
  9798
sl@0
  9799
		1) Maths constants renamed:
sl@0
  9800
			K...ExponentBigBad   now K...SpecialExponent
sl@0
  9801
			K...ExponentSmallBad now K...ZeroExponent.
sl@0
  9802
sl@0
  9803
		2) The Math member functions
sl@0
  9804
		ASin(), ACos(), ATAn(), Exp(), Frac(), Int(), Ln(), Log(), Mod(),
sl@0
  9805
		Pow(), Pow10(), Sin(), Cos(), Tan(), Sqrt()
sl@0
  9806
		have been changed as follows:
sl@0
  9807
sl@0
  9808
		a) to return an error corresponding to the result, i.e.
sl@0
  9809
		KErrArgument if the result is indefined / a NaN,
sl@0
  9810
		KErrOverflow if the result is too big to be represented or infinite
sl@0
  9811
		positive only if the result is an integer),
sl@0
  9812
		KErrUnderflow if the result is too small to be represented (or if the
sl@0
  9813
		result is an integer, if the result is too large or infinite
sl@0
  9814
		and negative),
sl@0
  9815
		KErrNone if the result is finite and representable.
sl@0
  9816
		b) to write a result to the aTrg IN ALL CASES rather than just
sl@0
  9817
		the return value is KErrNone.  Hence the result is as follows:
sl@0
  9818
		NaN if the error is KErrArgument,
sl@0
  9819
		Positive or negative infinity as appropriate if the error is
sl@0
  9820
			KErrOverflow (or the max value if the result is an integer),
sl@0
  9821
		Positive or negative zero as appropriate if the error is
sl@0
  9822
			KErrUnderflow (or the min value if the result is an integer).
sl@0
  9823
		c) to be able to handle denormals. i.e. all numbers >= 5E-324 and <
sl@0
  9824
		KMinTReal64=2.2250738585072015E-308.
sl@0
  9825
sl@0
  9826
		3) Math member functions IsZero(), IsNaN(), IsInfinite() and
sl@0
  9827
		IsFinite() added.  Also private member functions SetZero(), SetNaN()
sl@0
  9828
		and SetInfinite().
sl@0
  9829
sl@0
  9830
		4) TDes8/16::Num/AppendNum() returns error value or length of string
sl@0
  9831
		as previously, but if error value is returned an appropriate string
sl@0
  9832
		is set:
sl@0
  9833
		"Inf" for positive overflow (KErrOverflow and positive argument)
sl@0
  9834
		"-Inf" for negative overflow (KErrOverflow and negative argument)
sl@0
  9835
		"0" for positive underflow (KErrUnderflow and positive argument)
sl@0
  9836
		"-0" for negative underflow (KErrUnderflow and negative argument)
sl@0
  9837
		"NaN" for NaN (KErrArgument)
sl@0
  9838
sl@0
  9839
		5) TDes8/16::AppendFormatList() only panics for KErrGeneral and
sl@0
  9840
		if another error value is returned by Num(), uses the string set
sl@0
  9841
		as above.
sl@0
  9842
sl@0
  9843
		6) The exponent of TReal96 zero is now -32768, the smallest exponent
sl@0
  9844
		possible.
sl@0
  9845
sl@0
  9846
		7) TReal96 member functions IsZero(), IsNaN(), IsInfinite(),
sl@0
  9847
		IsFinite(), SetZero(), SetNaN() and SetInfinite() added.
sl@0
  9848
sl@0
  9849
		II ROUNDING FLAG:
sl@0
  9850
sl@0
  9851
		See Programming DB - Global Rounding Flag Required
sl@0
  9852
		A new private member of TReal96, iFlag, has been added to
sl@0
  9853
		indicate whether the mantissa is rounded up, rounded down or exact.
sl@0
  9854
		This has required changes in member functions to set and use the
sl@0
  9855
		flag where necessary.
sl@0
  9856
sl@0
  9857
		Changes are:
sl@0
  9858
sl@0
  9859
		1) iSign member changed from TInt16 to TInt8.
sl@0
  9860
sl@0
  9861
		2) Constants for values of iFlag added to e32math.h:
sl@0
  9862
			const TUint8 KRoundedUp=2;
sl@0
  9863
			const TUint8 KRoundedDown=1;
sl@0
  9864
			const TUint8 KExact=0;
sl@0
  9865
sl@0
  9866
		3) New TReal96 member function TReal96::Flag() which returns the
sl@0
  9867
		value of iFlag as a TInt.
sl@0
  9868
sl@0
  9869
		4) New private function TReal96::Round() taking an argument which
sl@0
  9870
		specifies the number of binary digits in the mantissa to perform
sl@0
  9871
		rounding in the (MSDEV and IEEE standard default) round to nearest
sl@0
  9872
		mode and to set the flag as appropraite has been added to be used by
sl@0
  9873
		Normalise(), Prepare() and conversion functions.  New private member
sl@0
  9874
		function TReal96::ShiftToNormalise() added to be used in cases where
sl@0
  9875
		rounding will never be required e.g. assignment/construction of
sl@0
  9876
		TReal96 from TInt.
sl@0
  9877
sl@0
  9878
		5) TInt64::Multop() returns integer values between -2 and 1 with the
sl@0
  9879
		following meanings:
sl@0
  9880
		-2	least significant 64 bits exactly zero
sl@0
  9881
		-1	least significant 64 bits less than TInt64(0x80000000,0) but
sl@0
  9882
			not zero
sl@0
  9883
		0	least significant 64 bits exactly TInt64(0x80000000,0)
sl@0
  9884
		1	least significant 64 bits greater than TInt64(0x80000000,0)
sl@0
  9885
		and TReal96::MultEq() changed to round according to these values.
sl@0
  9886
sl@0
  9887
		6) TReal96::DivEq() rounds on the remainder after division similarly.
sl@0
  9888
sl@0
  9889
sl@0
  9890
		All maths test code updated to test special cases including
sl@0
  9891
		correct return values and setting target values and new functions,
sl@0
  9892
		etc.  Also fixed to work in X86 build.
sl@0
  9893
sl@0
  9894
sl@0
  9895
		III OTHER
sl@0
  9896
sl@0
  9897
		1) UP_GCC.CPP function converting double to float changed to raise
sl@0
  9898
		the exception.  Also all arithmetic changed to do operation and
sl@0
  9899
		conversion and raise the exception if an error value is returned at
sl@0
  9900
		any stage.
sl@0
  9901
sl@0
  9902
		2) Function TReal96::CheckOverUnderflow() used by arithmetic now a
sl@0
  9903
		private member function and altered to check fewer large-exponent
sl@0
  9904
		cases for overflow.
sl@0
  9905
sl@0
  9906
7) Matthew
sl@0
  9907
		1) Fixed SW-25 from B5 database (Power off while recording hangs machine).
sl@0
  9908
sl@0
  9909
sl@0
  9910
Version 0.01.088
sl@0
  9911
================
sl@0
  9912
(Made by Jane, 12th February 1997)
sl@0
  9913
sl@0
  9914
This version requires F32 053
sl@0
  9915
sl@0
  9916
1) Graham
sl@0
  9917
				1) Sorted out the digitiser. This should no longer
sl@0
  9918
				   exhibit wobble or erroneous points when touching
sl@0
  9919
				   the surface lightly.
sl@0
  9920
sl@0
  9921
				2) Updated digitser driver to use the new digitiser
sl@0
  9922
				   clicks rather than the keyboard clicks. These
sl@0
  9923
				   should now be indepenently controllable.
sl@0
  9924
sl@0
  9925
2) Jane
sl@0
  9926
		1) Added an implementation of User::IsRomAddress from
sl@0
  9927
		   Simon B.
sl@0
  9928
sl@0
  9929
		2) Added CArrayFixBase::SetReserveL
sl@0
  9930
sl@0
  9931
		3) Fixed a chunk bug - when a TFindChunk was opened read-only
sl@0
  9932
		   in a process, the top bit of the process address (data
sl@0
  9933
		   section) was set to indicate this. If another thread was
sl@0
  9934
		   then created in the process, its heap address was incorrectly
sl@0
  9935
		   allocated over the TFindChunk, as the latter's address was
sl@0
  9936
		   stored with top bit set.
sl@0
  9937
sl@0
  9938
		4) Fixed a shared chunk bug on 486 - when T_CHUNK opened the
sl@0
  9939
		   Window Server chunk RO, and then did an Exec::SessionSend
sl@0
  9940
		   to the WindowServer, there was a fault when the kernel
sl@0
  9941
		   attempted to write the message into the Window Server's
sl@0
  9942
		   heap. Fixed this by unsetting the WP bit in CR0, so that
sl@0
  9943
		   supervisor can write over User RO chunks. This is OK on the
sl@0
  9944
		   ARM, but a thing to look out for if we ever port to another
sl@0
  9945
		   processor.
sl@0
  9946
sl@0
  9947
		5) Improved CArrayPtr<T>::ResetAndDestroy as suggested.
sl@0
  9948
sl@0
  9949
		6) Changed profiler end/start behaviour as detailed on Notes.
sl@0
  9950
sl@0
  9951
		7) Started to optimise CObjectCon::CheckUniqueName as suggested
sl@0
  9952
		   by Andrew Thoelke.
sl@0
  9953
		   The time taken to store 0x200 unnamed objects has gone down
sl@0
  9954
		   from 6 seconds to being as close to 0 as makes no difference.
sl@0
  9955
		   More on this later...
sl@0
  9956
sl@0
  9957
		8) Added __ftol to EUSER.
sl@0
  9958
sl@0
  9959
		9) Added CObjectCon::AtL which leaves rather than panicking, so that
sl@0
  9960
		   the kernel can panic a thread which passes an invalid find handle to
sl@0
  9961
		   open, rather than dying itself.
sl@0
  9962
sl@0
  9963
		10) Increased the WINS main user thread's max heap size to 8M.
sl@0
  9964
sl@0
  9965
3) Pete
sl@0
  9966
		1) Moved sections of code relating external interrupt control and binding out of
sl@0
  9967
				the Kernel DLL and down into the Variant DLL.
sl@0
  9968
				2) Code for Pc Card external interrupts (Ready,IREQ,Status change) added.
sl@0
  9969
				3) CF card media driver now makes use of card IREQ signal during card writes. This
sl@0
  9970
				now goes into idle after initiating a write to the card, with the card asserting
sl@0
  9971
				an interrupt on completion to wake up the system.
sl@0
  9972
				4) Added a media driver for compact rom card (MEDCRM.PDD).
sl@0
  9973
				5) Written media driver for programming flash on compact rom card(MEDCRR.PDD).
sl@0
  9974
				6) Modified the functions
sl@0
  9975
		7) Changes to functions CardInfo() and ChangeFlag() of UserPcCardCntrl class.
sl@0
  9976
				8) Monitor the Vpc voltage on first applying power to a Pc Card to check that
sl@0
  9977
				the card isn't drawing too much current for the rail.
sl@0
  9978
				9) Alteration to media change simulation in WINS:
sl@0
  9979
						F5 - Media door open as long as F5 is held down.
sl@0
  9980
						F4 - This toggles between 1 of two simulated CF cards on socket 0 (ie X:)
sl@0
  9981
							 when hit while F5 is held down.
sl@0
  9982
				10) All files used to simulate Pc Card memory and internal ram drive now created in
sl@0
  9983
				systems temp directory rather than \EPOC32\DATA - ie fixed HA-262.
sl@0
  9984
				11) Fixed problem with ATA media driver - divide by zero.
sl@0
  9985
				12) Removed support for Rev 1.0 Asic12.
sl@0
  9986
				13) Check battery status before commencing write to CF Card - return with
sl@0
  9987
				KErrBadPower if battery is low.
sl@0
  9988
				14) CF Card driver now handles emergency power down.
sl@0
  9989
				15) Pc Card power consumption - K::PcCardCurrentMilliAmps
sl@0
  9990
				now implemented.
sl@0
  9991
sl@0
  9992
4) Matthew
sl@0
  9993
		1) User::SetHomeTime() has been changed to return a TInt. This will return KErrOverFlow on
sl@0
  9994
		   Arm if the new time is out of range (past about 2068, before about 1932).
sl@0
  9995
sl@0
  9996
		2) Sound driver: Added more click controlling code and implemented a fallback alarm.
sl@0
  9997
sl@0
  9998
sl@0
  9999
Version 0.01.087
sl@0
 10000
================
sl@0
 10001
(Made by Graham, 5th February 1997)
sl@0
 10002
sl@0
 10003
This release is binary compatible with 086
sl@0
 10004
sl@0
 10005
1) Graham
sl@0
 10006
				1) Implemented dictaphone keys in WINS:
sl@0
 10007
						F6 Dictaphone Play
sl@0
 10008
						F7 Dictaphone Stop
sl@0
 10009
						F8 Dictaphone Record
sl@0
 10010
sl@0
 10011
				2) Begun the production of power supply
sl@0
 10012
				   information from UserHal::SupplyInfo().
sl@0
 10013
				   Expanded test code in t_power accordingly.
sl@0
 10014
sl@0
 10015
				3) Added the P2 variant which will be used for green
sl@0
 10016
				   machines. Changed the keyboard variant to include
sl@0
 10017
				   the dictaphone keys.
sl@0
 10018
sl@0
 10019
				4) Added PD and P2 variants to the releaseables.
sl@0
 10020
sl@0
 10021
				5) Added the function UserSvr::TestBootSequence(). This
sl@0
 10022
				   returns true if the machine is being booted by the test
sl@0
 10023
				   department. The file server should call this function and
sl@0
 10024
				   load etest.exe rather than ewsrv.exe if this is the case.
sl@0
 10025
sl@0
 10026
				6) Added the function UserHal::ResetAutoSwitchOffTimer().
sl@0
 10027
sl@0
 10028
sl@0
 10029
				7) Added the function UserSvr::AddEvent(). This enables user
sl@0
 10030
				   code to add events into the event queue. Quite apart from
sl@0
 10031
				   the numerous applications that this might spawn, it is
sl@0
 10032
				   necessary for user side implementation of a VT100
sl@0
 10033
				   console driver and handwriting recognition software.
sl@0
 10034
sl@0
 10035
				8) Added the EKeyMenu, EKeyBacklightOn,
sl@0
 10036
				   EKeyBacklightOff, and EKeyBacklightToggle keycodes
sl@0
 10037
				   to all variants. On WINS the F1 key is used as the
sl@0
 10038
				   MENU key.
sl@0
 10039
sl@0
 10040
				9) Rationalised the MARM rom building system. This is
sl@0
 10041
				   now controlled by a single ROM.OBY file which is
sl@0
 10042
				   preprocessed with build and variant information.
sl@0
 10043
sl@0
 10044
				10) Added backlight support. The backlight may be
sl@0
 10045
					either timed or untimed. Should the timeout
sl@0
 10046
					be reset whenever the machine is used?
sl@0
 10047
sl@0
 10048
				11) Made pointer clicks configurable separately from
sl@0
 10049
					key clicks.
sl@0
 10050
sl@0
 10051
				12) Added screen clearing on switch on if a password
sl@0
 10052
					is set.
sl@0
 10053
sl@0
 10054
				13) Added UserHal functions for PointerSwitchesOn,
sl@0
 10055
					CaseOpenSwitchesOn, and CaseCloseSwitchesOff.
sl@0
 10056
					Grouped these, together with the
sl@0
 10057
					AutoSwitchOffTime, AutoSwitchOffBehavior,
sl@0
 10058
					BacklightTime, and BacklightBehavior information,
sl@0
 10059
					into a new TOnOffInfo structure.
sl@0
 10060
sl@0
 10061
				14) Implemented switch off on case close and switch
sl@0
 10062
					on on case open on all platforms.
sl@0
 10063
sl@0
 10064
				15) Simon has implemented a visual simulation on WINS
sl@0
 10065
					of case closing. On WINS, F11 is also used to simulate
sl@0
 10066
					both closing and opening the case. You will
sl@0
 10067
					notice that, while the case is closed, keyboard
sl@0
 10068
					and pointer events have no effect. This is to
sl@0
 10069
					simulate the fact that normally you can't get to the
sl@0
 10070
					keyboard or screen under these conditions.
sl@0
 10071
sl@0
 10072
				16) Enhanced MARM switch on on pen down to take
sl@0
 10073
					account of the Hal variable PointerSwitchesOn.
sl@0
 10074
sl@0
 10075
				17) Solved Low battery bugs (HA-357, HA-362)
sl@0
 10076
sl@0
 10077
2) Ann
sl@0
 10078
		1) Test code changes:
sl@0
 10079
sl@0
 10080
		i) Additional tests added to t_math tests for Pow10().  These show
sl@0
 10081
		that in all but one case inexact string to real conversion is due
sl@0
 10082
		to inexact calculation by Math::Pow10(). All tests in t_math check
sl@0
 10083
		for as much accuracy as possible.
sl@0
 10084
sl@0
 10085
		ii) t_float tests are now consistent between WINS and ARM.
sl@0
 10086
sl@0
 10087
		iii) Whetstone benchmark tests added
sl@0
 10088
sl@0
 10089
		iv) t_r96 casting tests now include identity tests (which check
sl@0
 10090
		consistency with MSDEV in WINS).  Casting to TInt tests changed
sl@0
 10091
		in line with changes to source code (ii below).
sl@0
 10092
sl@0
 10093
		2) Source code changes:
sl@0
 10094
sl@0
 10095
		i) TReal96::MultEq() altered to do one shift rather than preparing
sl@0
 10096
		and then shifting to left.  This avoids losing bits which may be
sl@0
 10097
		shifted off the end by preparation, but for which there is space in
sl@0
 10098
		the final postition.
sl@0
 10099
sl@0
 10100
		ii) TReal96::operator TInt() changed to round towards zero to
sl@0
 10101
		comply with IEEE standard and Java requirements (also MSDEV).
sl@0
 10102
sl@0
 10103
		iii) TReal96::Prepare() altered to check for zero sign or zero
sl@0
 10104
		mantissa.  If so, preparation is not done.  Im the latter case,
sl@0
 10105
		the mantissa is meaningless and in the second preparation would
sl@0
 10106
		result in an infinite loop which does nothing.
sl@0
 10107
sl@0
 10108
3) Morgan
sl@0
 10109
		1) Implemented Kernel Faulting.
sl@0
 10110
		2) Reorganised low memory to include the Registry just before the
sl@0
 10111
				   Ram Drive.  This means that the Ram Drive is shoved up and down
sl@0
 10112
				   in memory as the Registry changes size.
sl@0
 10113
		   Added class TLowMemory to manage the Ram Drive and Registry
sl@0
 10114
		   memory allocation and to provide information to F32 about the
sl@0
 10115
		   drive's changing position.
sl@0
 10116
		3) The Ram Drive now survives Warm Resets and Kernel Faults
sl@0
 10117
		   Implemented CPersistantRegistry to do the same for the Registry.
sl@0
 10118
		   T_RESET tests all this jiggery pokery on MARM.
sl@0
 10119
		4) Added integer divide by zero exception to MARM
sl@0
 10120
		5) Implemented a user side mini-loader for loading Dlls from ROM
sl@0
 10121
		   when an explicit ROM path is provided.
sl@0
 10122
				   eg. lib.Load(_L("MONKEY.DLL"), _L("Z:\\Animals\\Primates\\Hairy"));
sl@0
 10123
		   This eliminates most of the time taken to load these Dlls.
sl@0
 10124
sl@0
 10125
4) Jane
sl@0
 10126
sl@0
 10127
		1) Fixed MMU bug which showed up in fairly obscure kernel growth/shrinkage
sl@0
 10128
		   situations.
sl@0
 10129
sl@0
 10130
		2) Optimised page allocator for faster kernel growth.
sl@0
 10131
sl@0
 10132
		3) Added a routine to compact kernel pages when the machine is reset. This function
sl@0
 10133
		   is not called yet, except in test code.
sl@0
 10134
sl@0
 10135
		4) Made a TFindChunk::Open() actually add the chunk to the process address space (unless
sl@0
 10136
		   it is a kernel chunk) so that the chunk can be read/written from another process.
sl@0
 10137
sl@0
 10138
5) Matthew
sl@0
 10139
		1) Fixed HA-355: added %*a and %*b to TTime::Format() which give
sl@0
 10140
		   am/pm without a space.
sl@0
 10141
sl@0
 10142
		2) Fixed HA-367: descriptor formatting now accepts things like
sl@0
 10143
		   %-10f (default fill character space) and % 5F (no "+").
sl@0
 10144
sl@0
 10145
		3) Internal changes to sound driver to reduce the amount of clicking.
sl@0
 10146
		   Also fiddled with the volumes of DTMF dialling, so it should work now.
sl@0
 10147
sl@0
 10148
sl@0
 10149
Version 0.01.086
sl@0
 10150
================
sl@0
 10151
(Made by Matthew, 22nd January 1997)
sl@0
 10152
sl@0
 10153
This release is binary compatible with 085
sl@0
 10154
sl@0
 10155
1) Graham
sl@0
 10156
				1) Renamed T_PARSE to T_TPARSE to eliminate the
sl@0
 10157
				   conflict with the F32 test program of the same
sl@0
 10158
				   name.
sl@0
 10159
				2) Updated the TREALTIM test programs and fixed some
sl@0
 10160
				   super thread bugs.
sl@0
 10161
				3) Temporarily reintroduced page-based ROM mapping so
sl@0
 10162
				   that debugging can be tested again.
sl@0
 10163
				4) Fixed a bug in the user side event code which
sl@0
 10164
				   prevented position information being extracted
sl@0
 10165
				   from the new EPointerSwitchOn events.
sl@0
 10166
				5) Fixed bugs in the ARM implementation of
sl@0
 10167
				   TInt64A::MulTop() and changed it to return a TInt.
sl@0
 10168
sl@0
 10169
2) Ann Windsor
sl@0
 10170
		1) Removed KTReal96MaxExponent and KTReal96MinExponent from
sl@0
 10171
		 e32math.h
sl@0
 10172
sl@0
 10173
		2) Fixed bug HA-345: constants now correct to full precision.
sl@0
 10174
sl@0
 10175
		3) In t_math test code, all approximate tests now use the
sl@0
 10176
		function testApprox().  This tests that the relative error
sl@0
 10177
		is within a specified tolerance.
sl@0
 10178
sl@0
 10179
		4) Removed all approximate tests from t_r96 and t_r64.
sl@0
 10180
sl@0
 10181
		5) In Pow10(), limits for second underflow check changed so
sl@0
 10182
		1.0E-308 underflows as expected.
sl@0
 10183
sl@0
 10184
		6) TInt64A::Multop() fixed to carry from insignificant parts
sl@0
 10185
		and now returns a TInt to indicate whether the insignificant
sl@0
 10186
		64 bits are zero or non-zero.  TInt64::MulTop() changed
sl@0
 10187
		accordingly.
sl@0
 10188
sl@0
 10189
		7) TReal96::DivEq() fixed to force rounding up where
sl@0
 10190
		appropriate.  This results in division being up to
sl@0
 10191
		5E-6 secs slower in the worst case.
sl@0
 10192
sl@0
 10193
		8) SReal64 and SReal32 struct definitions added to um_std.h
sl@0
 10194
		 and removed from other umath *.cpp files
sl@0
 10195
sl@0
 10196
		9) TReal96::MultEq() fixed to force rounding up where appropriate.
sl@0
 10197
sl@0
 10198
3) Alastair
sl@0
 10199
		1) Fixed bugs in release versions of T_SEC.
sl@0
 10200
sl@0
 10201
4) Simon
sl@0
 10202
		1) Protected EventQ from access from WINS Window and Timer threads.
sl@0
 10203
		   Fixes a few WINS Bugs related to AddEvent causing an Access
sl@0
 10204
		   Violation.
sl@0
 10205
sl@0
 10206
		2) Added some new shutdown code to allow System threads to continue
sl@0
 10207
		   execution when the machine is off. This fixes bugs like "Program
sl@0
 10208
		   does not exit when minimized" and other miscallaneous hangings
sl@0
 10209
		   after a PowerDown.
sl@0
 10210
sl@0
 10211
		3) Change to E32Initialize to allow WINC apps to call it more than
sl@0
 10212
		   once.
sl@0
 10213
sl@0
 10214
5) Matthew
sl@0
 10215
		1) Stopped WINS from adding 1 hour for summer time when it's winter.
sl@0
 10216
sl@0
 10217
		2) Fixed bug in CRegistry::SetContents().
sl@0
 10218
sl@0
 10219
sl@0
 10220
Version 0.01.085
sl@0
 10221
================
sl@0
 10222
(Made by Jal, 10th January 1997)
sl@0
 10223
sl@0
 10224
1) Morgan
sl@0
 10225
		1) Fixed OOM alloc heaven in CreateSession and RLoader::LoadLibrary
sl@0
 10226
		2) Renamed kernel.exe to ekern.exe in the X86 obey file so device
sl@0
 10227
		   drivers can link to it.
sl@0
 10228
		3) Added iLanguage bitfield and iHardware members to TRomHeader.
sl@0
 10229
		   Updated BOOTROM.BIN to match.
sl@0
 10230
sl@0
 10231
2) Jane
sl@0
 10232
		1) E32 Proposals
sl@0
 10233
			a) Made CObjectCon::ValidateName -> User::ValidateName (static)
sl@0
 10234
			b) Removed copy constructors for TPoint, TSize, TRect
sl@0
 10235
			c) Made TLocale constructor exported, removed setting to 0 from TChar
sl@0
 10236
			   constructor.
sl@0
 10237
			d) Removed CDeltaTimerAlloc
sl@0
 10238
			e) Americanised Capitalise.
sl@0
 10239
			f) Make TDesC8::Length and TDesC16::Length inline
sl@0
 10240
			g) Implemented Rog's amendment of David's User::Notify proposal: an RNotifier
sl@0
 10241
			   class with the following member functions-
sl@0
 10242
					TInt Connect();
sl@0
 10243
					void Notify(const TDesC& aLine1,const TDesC& aLine2,const TDesC& aBut1,const TDesC& aBut2,TInt& aButtonVal,TRequestStatus& aStatus);
sl@0
 10244
					TInt InfoPrint(const TDesC& aDes);
sl@0
 10245
sl@0
 10246
		2) Bug fixes
sl@0
 10247
			a) Removed unused User time/date functions
sl@0
 10248
			b) Kept a list of thread relative threads within the thread so that they
sl@0
 10249
			   can be closed properly when the thread dies.
sl@0
 10250
			c) Alloced a bit in the DThread iFlags for whether the thread is the main one, this
sl@0
 10251
			   fixed the bug with APPRUNs not dying.
sl@0
 10252
			d) The priority of the NULL thread was incorrect in WINS - spotted by
sl@0
 10253
			   David Batchelor, thanks.
sl@0
 10254
			f) Added CServer::Restart() and fixed CServer::RunL()
sl@0
 10255
			g) Fixed HA-55 kernel alloc heaven causes kernel re-entrancy
sl@0
 10256
sl@0
 10257
3) SteveG
sl@0
 10258
		1) Fixed bug in the battery recharger hanging when free'd. Added
sl@0
 10259
		   iChargeTick.Cancel() into the device driver destructor.
sl@0
 10260
sl@0
 10261
4) Geert
sl@0
 10262
		1) Inlined various TDateTime, TTimeIntervalXxx and TTime members.
sl@0
 10263
sl@0
 10264
		2) Integrated Bruce's TTime::Parse() service. (See the proposal and
sl@0
 10265
		   spec in E32 Proposals for details.)
sl@0
 10266
sl@0
 10267
		3) Removed all Time member functions duplicating services in TTime.
sl@0
 10268
sl@0
 10269
		4) Removed initialisation code from TTimeIntervalXxx's and TTime's
sl@0
 10270
		   default ctors. Default constructed instances of these classes now
sl@0
 10271
		   have undefined, arbitrary values.
sl@0
 10272
sl@0
 10273
5) Graham
sl@0
 10274
				1) Added functionality to the text window server to allow raw
sl@0
 10275
				   event information to be passed through to a client. The
sl@0
 10276
				   primary user of this is the final test program which
sl@0
 10277
				   needs some way of testing each raw keyboard element.
sl@0
 10278
sl@0
 10279
				2) Updated the double multitasking kernel functions to give
sl@0
 10280
				   handles wrt the kernel server rather than the device
sl@0
 10281
				   driver client. Updated the real time test program and
sl@0
 10282
				   device driver accordingly.
sl@0
 10283
sl@0
 10284
				3) Made relocatable static data changes appropriate for
sl@0
 10285
				   our real-time needs.
sl@0
 10286
sl@0
 10287
				4) Fixed a further digitiser problem. There should
sl@0
 10288
				   now be no machines which experience complete
sl@0
 10289
				   digitiser failure apart from those with hardware
sl@0
 10290
				   faults in this area.
sl@0
 10291
sl@0
 10292
6) Alastair
sl@0
 10293
				1) Added overloaded NewL function for Security class which
sl@0
 10294
				   takes a piece of security data as a parameter so that a
sl@0
 10295
				   CSecurityBase object can be constructed using security
sl@0
 10296
				   data stored in a file for decryption purposes.
sl@0
 10297
sl@0
 10298
				2) Removed ConstructL, EncryptL, DecryptL and
sl@0
 10299
				   IsValid functions from CSecurityBase API.
sl@0
 10300
sl@0
 10301
				3) Added NewEncryptL and NewDecryptL functions to
sl@0
 10302
				   CSecurityBase API so that objects for handling encryption
sl@0
 10303
				   sessions and objects for handling decryption sessions can
sl@0
 10304
				   be created.  The APIs for these object classes -
sl@0
 10305
				   CSecurityEncryptBase and CSecurityDecryptBase - have been
sl@0
 10306
				   added to E32BASE.H.
sl@0
 10307
				   NewEncryptL and NewDecryptL take an initialisation
sl@0
 10308
				   vector as a parameter to allow for pluggability with
sl@0
 10309
				   more sophisticated encryption methods.
sl@0
 10310
sl@0
 10311
				4) Written a new UB_SEC.CPP to cater for the above
sl@0
 10312
				   changes.  The current encryption scheme produces
sl@0
 10313
				   encrypted data in multiples of 32 bytes.
sl@0
 10314
sl@0
 10315
				5) Rewritten T_SEC.CPP to test security changes.
sl@0
 10316
sl@0
 10317
7) Matthew
sl@0
 10318
		1) Changed set and free tls functions from exec to sv calls.
sl@0
 10319
sl@0
 10320
		2) Fixed alloc heaven in change notifier, and changed notifier so that
sl@0
 10321
		   you can only logon once to each notifier, so that the kernel's notify
sl@0
 10322
		   function can be called from exec functions. This has meant API changes,
sl@0
 10323
		   and the RUndertaker API has also been changed - the parameter has been
sl@0
 10324
		   removed from LogonCancel - so the two are more similar.
sl@0
 10325
sl@0
 10326
		3) Added iMaxVolume capability to sound driver, now the volume-by-value
sl@0
 10327
		   takes a value from 0 to iMaxVolume, instead of 0 to 100.
sl@0
 10328
sl@0
 10329
		4) Removed Time::IsValidDate().
sl@0
 10330
sl@0
 10331
8) Pete
sl@0
 10332
		1) Added custom and variant DLL for rack D h/w.
sl@0
 10333
sl@0
 10334
		2) Moved sections of code relating to the Pc Card Controller h/w out of
sl@0
 10335
		   the Kernel DLL and down into the Variant DLL.
sl@0
 10336
sl@0
 10337
		3) Added the function UserHal::DriveInfo() which
sl@0
 10338
		   returns a TInfoName for each local drive and Pc Card socket as well
sl@0
 10339
		   as the total number of valid drives and socketss on a given variant.
sl@0
 10340
sl@0
 10341
		4) Various changes to the member functions of UserPcCardCntrl
sl@0
 10342
		   class.
sl@0
 10343
sl@0
 10344
9) Ann Windsor - CHANGES TO MATHS SOURCE CODE
sl@0
 10345
sl@0
 10346
I e32\inc\e32math.h
sl@0
 10347
-------------------
sl@0
 10348
1. Constants KTReal32MinExponent and KTReal32MinExponent, KTReal96MaxExponent,
sl@0
 10349
KTReal96MinExponent, KTReal96ExponentBigBad and KTReal96ExponentSmallBad added.
sl@0
 10350
sl@0
 10351
2. Functions added to UM_R96.CPP added to TReal96 class
sl@0
 10352
sl@0
 10353
II e32\inc\e32std.h
sl@0
 10354
-------------------
sl@0
 10355
1. Constant KErrDivideByZero added.
sl@0
 10356
sl@0
 10357
2. New constants defined for flags in TRealFormat type:
sl@0
 10358
	KExtraSpaceForSign=0x40000000
sl@0
 10359
	KAllow ThreeDigitExp=0x20000000
sl@0
 10360
	KUseSigFigs=0x10000000
sl@0
 10361
	KDoNotUseTriads=0x08000000
sl@0
 10362
	KGeneralLimit=0x04000000
sl@0
 10363
	KRealFormatTypeFlagsMask=0x7c000000
sl@0
 10364
	KRealFormatTypesMask=0x0000007
sl@0
 10365
sl@0
 10366
3. RealFormatType no longer enum; changed to constant TInts
sl@0
 10367
	KRealFormatFixed=1
sl@0
 10368
	KRealFormatExponent=2
sl@0
 10369
	KRealFormatGeneral=3
sl@0
 10370
and two new types added:
sl@0
 10371
	KRealFormatNoExponent=4
sl@0
 10372
	KRealFormatCalculator=5
sl@0
 10373
sl@0
 10374
4. iDecimalPlaces member of TRealFormat name changed to iPlaces because used
sl@0
 10375
for decimal places or significant figures as appropriate.
sl@0
 10376
sl@0
 10377
5. TLex8 member function ScndigAfterPoint() added.
sl@0
 10378
sl@0
 10379
sl@0
 10380
III e32\ucdt\uc_des.cpp
sl@0
 10381
----------------------
sl@0
 10382
1. Changed in line with changes to e32std.h above.
sl@0
 10383
sl@0
 10384
2. AppendFormatList() altered to allow three-digit exponents in E,e (exponent)
sl@0
 10385
and G,g, so Printf %E,e,G and g all display numbers to the maximum range.
sl@0
 10386
sl@0
 10387
sl@0
 10388
IV e32\umath\um_dtor.cpp
sl@0
 10389
------------------------
sl@0
 10390
1. Changed TLex8::Val() appropriately to deal with the full range of values.  This
sl@0
 10391
includes doing multiplications in TReal96's so that errors can be detected.
sl@0
 10392
sl@0
 10393
2. TLex8::ScndigAfterPoint() added to do conversion from decimal after point, so that
sl@0
 10394
trailing zeros are not included.  This ensures that e.g. 0.2900 and 0.29 have the same
sl@0
 10395
binary representation.
sl@0
 10396
sl@0
 10397
sl@0
 10398
V e32\umath\um_pow.cpp
sl@0
 10399
-----------------------
sl@0
 10400
1. Changed to check for aSrc being ±1.  If so, sets result appropriately to ensure exact
sl@0
 10401
and to save running algorithm.
sl@0
 10402
sl@0
 10403
2. Bug found and fixed: Int() being used for a number potentially larger than 32767.
sl@0
 10404
Altered to return an error if Int() reports an error, i.e. if the input has an absolute
sl@0
 10405
value larger than 32767 (a return value larger than 32767 would lead to an error later in
sl@0
 10406
the function anyway).  This ensures that results over and underflow as expected.
sl@0
 10407
sl@0
 10408
3. Bug found and fixed: reduce() set high part of f to 0 rather than leaving it unchanged.
sl@0
 10409
This fixes the bug reported in B4 problem report no HA-207: overflows are now reported as
sl@0
 10410
expected.
sl@0
 10411
sl@0
 10412
sl@0
 10413
VI e32\umath\um_pow10.cpp
sl@0
 10414
-------------------------
sl@0
 10415
1. Changed to handle the full range of TReals rather than up to 1e±100.
sl@0
 10416
sl@0
 10417
sl@0
 10418
VII e32\umath\um_r96.cpp
sl@0
 10419
------------------------
sl@0
 10420
1. Set() checks that exponent does not exceed maximum (KTReal64ExponentBigBad/
sl@0
 10421
KTReal64ExponentBigBad) and is not less than minimum (KTReal32ExponentSmallBad/
sl@0
 10422
KTReal64ExponentSmallBad). If so, KErrArgument is returned.
sl@0
 10423
sl@0
 10424
2. GetTReal()
sl@0
 10425
i) In checking for underflow, value against which check is made changed from
sl@0
 10426
-KTReal32MaxExponent/-KTReal64MaxExponent to KTReal32MinExponent/KTReal64MinExponent.
sl@0
 10427
ii) Rounding has been implemented for TReal32s so that when a TReal96 mantissa is
sl@0
 10428
converted to a TReal32 it is rounded to the nearest value using all bits available,
sl@0
 10429
rather than just being truncated.
sl@0
 10430
sl@0
 10431
3. Casting to a TInt from a TReal96 changed to check for zero by using sign and also to
sl@0
 10432
round to nearest, rather than always rounding down.
sl@0
 10433
sl@0
 10434
4. Arithmetic
sl@0
 10435
i) Added functions AddEq(), SubEq(), MultEq() and DivEq() which perform the operations
sl@0
 10436
+=(), -=(), *=() and /=() respectively, as these operator functions did previously, but
sl@0
 10437
reporting an error constant, rather than panicking.
sl@0
 10438
ii) Similarly to i), functions Add(), Sub(), Mult() and Div() have been added as the
sl@0
 10439
non-panicking variants of operator +(), -(), *() and /().  The latter functions panic on
sl@0
 10440
an error as described in ii).  The result is written to an input target variable.
sl@0
 10441
iii) operator +=(), -=(), *=() and /=() perform arithmetic operations (using AddEq(),
sl@0
 10442
SubEq(), MultEq() and DivEq() respectively) and either panic (when unsuccessful), leaving
sl@0
 10443
the initial arguments unchanged, or otherwise return the result in *this.
sl@0
 10444
iv) Added function CheckOverUnderflow(), to be used in AddEq(), SubEq(), MultEq() and
sl@0
 10445
DivEq(), to check for overflow or underflow in cases where it may occur by normalising
sl@0
 10446
the result and checking the exponent.
sl@0
 10447
v) Added function PanicOverUnderflowDividebyZero() which is used in operator +=(), -=(),
sl@0
 10448
*=() and /=() to panic if an error is returned by AddEq(), SubEq(), MultEq() or DivEq()
sl@0
 10449
respectively.
sl@0
 10450
vi) Addition operations (in AddEq()) improved to eliminate loops which change exponent by
sl@0
 10451
1 and shift the mantissa by 1 place on each loop to make the exponents equal before
sl@0
 10452
addition takes place, instead altering the exponent and shifting as appropriate in one
sl@0
 10453
step.
sl@0
 10454
vii) Fixed bug in AddEq() so that it shifts the mantissa of the bigger number right by
sl@0
 10455
one.  This prevents failure when subtracting numbers of the same sign (or adding numbers
sl@0
 10456
of the opposite sign) when the ms bit needs to be carried down (and hence only two bits
sl@0
 10457
are shifted down into the extended part when preparing the result) and the last hex digit
sl@0
 10458
of the result is 4 when prepared.
sl@0
 10459
viii) In DivEq(), a new error KErrDivideByZero has been introduced. Also reports
sl@0
 10460
KErrArgument if 0/0 (invalid operation).
sl@0
 10461
sl@0
 10462
5. Changed Normalise() to round on last three bits to nearest value, rounding to value
sl@0
 10463
with l.s. bit zero (even) if two values are equally near to be consistent with MSDev and
sl@0
 10464
to minimise propagation of rounding errors in general.
sl@0
 10465
sl@0
 10466
6. To be consistent with MSDev, increment and decrement operators should normalise after
sl@0
 10467
each operation.  However, this doubles the time and ultimately decreases accuracy, so
sl@0
 10468
has not been adopted.
sl@0
 10469
sl@0
 10470
sl@0
 10471
VIII e32\umath\um_rtod.cpp
sl@0
 10472
--------------------------
sl@0
 10473
1. fDigLim() changed to handle all exponents between -1022 and 1025, i.e. all TReal64s.
sl@0
 10474
sl@0
 10475
2. All do...() functions now take TInt flags as one of their parameters to enable (or
sl@0
 10476
disable) extra space for sign, three-digit exponents, significant figures rather than
sl@0
 10477
decimal places, triads and linited accuracy of digbuf.
sl@0
 10478
sl@0
 10479
3. In addtition to the flags above, an internal flag determining whether the digbuf needs
sl@0
 10480
rounding has been added.
sl@0
 10481
sl@0
 10482
4. doExponent() altered so it can be used both directly and by doGeneral() and
sl@0
 10483
doCalculator().  In calculator mode, trailing zeros are eliminated.  Also uses three-
sl@0
 10484
digit exponents if allowed by flag if necesary.
sl@0
 10485
sl@0
 10486
5. doFixed() altered so that a space is left for a potential sign if a flag is set.  This
sl@0
 10487
allows positive and negative numbers of the same exponent to be of the same accuracy.
sl@0
 10488
sl@0
 10489
6. doGeneral() altered in line with alterations to doFixed() and doExponent().
sl@0
 10490
sl@0
 10491
7. doNoExponent() new function added to deal with calculator representation which does
sl@0
 10492
not use exponents, i.e. numbers to a maximum number of significant figures.  This
sl@0
 10493
function is similar to doFixed(), other than it does not pad with zeros and hence does
sl@0
 10494
not necessarily have a decimal point or deciaml places.  If the triad length is non-zero
sl@0
 10495
then triads are allowed by default (but can of course be disabled by a flag).  An
sl@0
 10496
overflow error is reported if the number is too big to fit in the maximum significant
sl@0
 10497
figures and an underflow if it is too small for any significant digits to appear i.e.
sl@0
 10498
apparently 0.  If the number does not fit, i.e. not enough space for sign, point or triad
sl@0
 10499
separators, then a general error is reported.
sl@0
 10500
sl@0
 10501
8. doCalculator() new function added which operates as a conventional calculator would,
sl@0
 10502
i.e. using non-exponential representation as far as possible and otherwise exponential
sl@0
 10503
representation.  The number of figures in the display is limited by the maximum
sl@0
 10504
significant figures.  This function will report a general error if there is insufficient
sl@0
 10505
space availble to include a sign, decimal point and exponent, as well as the figures,
sl@0
 10506
EVEN IF THEY ARE NOT REQUIRED.  In this way it operates as a conventional calculator.
sl@0
 10507
doCalculator() uses either doNoExponent() or doExponent() (in calculator mode, see 4.)
sl@0
 10508
as necessary.
sl@0
 10509
sl@0
 10510
9. rtob() has been altered in line with the above changes.
sl@0
 10511
Also it now checks that the numspace is >0, otherwise reporting a general error. iType is
sl@0
 10512
now used to take both the user-specified flags and type.  If no type or flags are
sl@0
 10513
specified then it leaves.  Flags are also set as necessary for the various modes (in all
sl@0
 10514
modes, rounding is needed):
sl@0
 10515
	fixed - does not use significant figures
sl@0
 10516
	exponent - does not use significant figures (when accessed directly rather than
sl@0
 10517
	through calculator)
sl@0
 10518
	general - does not use significant figures or triads
sl@0
 10519
	no exponent - uses significant figures
sl@0
 10520
	calculator - uses significant figures and no triads.
sl@0
 10521
sl@0
 10522
sl@0
 10523
IX e32\umath\um_sin.cpp
sl@0
 10524
-----------------------
sl@0
 10525
1. sinx() changed to ensure than sin of a multiple of pi and cos of an odd multiple of pi/2
sl@0
 10526
give exactly zero.
sl@0
 10527
sl@0
 10528
sl@0
 10529
X e32\umath\um_std.h
sl@0
 10530
---------------------
sl@0
 10531
1. EMathUnknownPanic added to TMathPanic to deal with unknown errors.
sl@0
 10532
sl@0
 10533
sl@0
 10534
XI e32\umath\um_tan.cpp
sl@0
 10535
-----------------------
sl@0
 10536
1. Tan() changed to ensure that tan of a multiple of pi gives exactly zero and tan of an
sl@0
 10537
odd multiple of pi/2 reports an overflow error.
sl@0
 10538
sl@0
 10539
sl@0
 10540
XII e32\umath\um_utl.cpp
sl@0
 10541
------------------------
sl@0
 10542
1. Poly() changed to use TReal96s.
sl@0
 10543
sl@0
 10544
sl@0
 10545
XIII e32\upmarm\up_gcc.cpp
sl@0
 10546
--------------------------
sl@0
 10547
1. Arithmetic now raises an exception if an error is returned by the TReal96 non-
sl@0
 10548
panicking arithmetic variants.
sl@0
 10549
sl@0
 10550
sl@0
 10551
XIV e32\upwins\up_i64.cpp
sl@0
 10552
-------------------------
sl@0
 10553
1. Bug found in MulTop() - the two least significant words are never multiplied together
sl@0
 10554
and hence the possible carry from this part into the ls word of the result is ignored.
sl@0
 10555
This part may also need to be used for rounding purposes.
sl@0
 10556
sl@0
 10557
sl@0
 10558
CHANGES TO MATHS TEST CODE
sl@0
 10559
--------------------------
sl@0
 10560
I T_FLOAT
sl@0
 10561
---------
sl@0
 10562
1. Altered and increased appropriately to test altered and new cases due to changes
sl@0
 10563
in the above.  Also divided into two modules containing data only (FLTDATA1.CPP and
sl@0
 10564
FLTDATA2.CPP) and a header file containing class definitions because the amount
sl@0
 10565
of initialised data was too large for the GCC compiler.
sl@0
 10566
sl@0
 10567
2. Altered and increased appropriately to test fully string to real conversion to
sl@0
 10568
full range. N.B. THESE TESTS ARE CURRENTLY APPROXIMATE DUE TO AN UNRESOLVED BUG.
sl@0
 10569
sl@0
 10570
sl@0
 10571
II T_GEN and T_GEN32
sl@0
 10572
--------------------
sl@0
 10573
1. Added to generate files for use by T_R64 and T_R32. These are for testing in
sl@0
 10574
ARM, to see that the GCC and MSDEV compiler give the same results.
sl@0
 10575
T_GEN also generates special values needed for the generation of these files and
sl@0
 10576
for T_R32 and T_R64 test code.
sl@0
 10577
sl@0
 10578
sl@0
 10579
III T_MATH
sl@0
 10580
----------
sl@0
 10581
1. In the light of changes made to sin, cos, tan and power functions various tests have
sl@0
 10582
been added or updated:
sl@0
 10583
i) tests exact results are given for: zero to a power, any number to power zero, ±1 to
sl@0
 10584
any power, sin(n*pi), cos((2n+1)*pi/2) and tan(n*pi) (where n is an integer).
sl@0
 10585
ii) tests overflows occur as expected for Math::Pow()
sl@0
 10586
iii) tests tan((2n+1)*pi/2) overflows.
sl@0
 10587
sl@0
 10588
2. More comprehensive tests of trig functions have been included to test multiples of
sl@0
 10589
"common" values: pi/6, pi/4, pi/3, pi/2 and pi (in addition to test for exact values
sl@0
 10590
above).
sl@0
 10591
sl@0
 10592
3. Comprehensive testing of Math::Cos() (not just Sin() ) have been added.
sl@0
 10593
sl@0
 10594
4. Added test to check reduce() is working correctly.
sl@0
 10595
sl@0
 10596
sl@0
 10597
IV T_R64 and T_R32
sl@0
 10598
-------------------
sl@0
 10599
1. Special values generated by T_GEN and T_GEN32 used in all tests.
sl@0
 10600
sl@0
 10601
2. Casting tests for TReal32s now use TReal96s. (A special test following this shows the
sl@0
 10602
occurrence of an (as yet unresolved) bug.)  Tests have also been added to be used when
sl@0
 10603
exception handling is fully implemented.
sl@0
 10604
sl@0
 10605
3. All tests improved and made comprehensive.
sl@0
 10606
sl@0
 10607
4. Further tests added using the files generated as described in II.
sl@0
 10608
sl@0
 10609
5. T_R64.CPP and T_R32.CPP have also been split so their data is in a separate file
sl@0
 10610
to avoid duplication of code in T_GEN and T_GEN32.
sl@0
 10611
sl@0
 10612
6. Arithmetic tests all test for equality rather than using BitApprox, with cases
sl@0
 10613
which fail being removed until bugs are fixed so exact results are obtained in all cases.
sl@0
 10614
With changes to um_r96.cpp explained in VII 2. and 4. above, T_R32 tests are now all
sl@0
 10615
exact.
sl@0
 10616
sl@0
 10617
7. Test code has been included (for use in debug mode only) to test that exceptions
sl@0
 10618
are raised correctly by the up_gcc.cpp code (which has been copied into separate files -
sl@0
 10619
emgcc32.cpp and emgcc64.cpp - which may be called by these tests).
sl@0
 10620
sl@0
 10621
sl@0
 10622
V T_R96
sl@0
 10623
--------
sl@0
 10624
1. Special values for use in the test code have been initialised and used in the tests
sl@0
 10625
where appropriate.
sl@0
 10626
sl@0
 10627
2. Constructors of TReal96s from TInts, TReal32s and TReal64s tested fully, including
sl@0
 10628
tests that attempting to construct from values with "bad" exponents (i.e. exponents too
sl@0
 10629
big or too small) results in a return of KErrArgument.
sl@0
 10630
sl@0
 10631
3. Test of preparing a denormal checks that the value is not already prepared. Also added
sl@0
 10632
test of preparing of an unprepared value.
sl@0
 10633
sl@0
 10634
4. Arithmetic tests
sl@0
 10635
i) Arithmetic tests all test for equality rather than using BitApprox, with cases
sl@0
 10636
which fail being removed until bugs are fixed so exact results are obtained in all cases.
sl@0
 10637
ii) As a result of the bug fixed in operator/=() by Jal a test of division of denormals
sl@0
 10638
has been added.
sl@0
 10639
iii) Extra tests have been added to test the new member functions AddEq(), SubEq(),
sl@0
 10640
MultEq() and DivEq() which perform arithmetic operations and report an error rather than
sl@0
 10641
panicking if overflow, underflow or division by zero errors occur. The panicking-variants
sl@0
 10642
are also tested to be sure panics occur as expected (to be run in debug only).
sl@0
 10643
sl@0
 10644
5. Tests of GetTReal(), casting functions unary operators, increment and decrement
sl@0
 10645
operators and equalities and inequalities have been made more comprehensive and include
sl@0
 10646
tests for overflow, underflow and total loss of precision errors where appropriate.
sl@0
 10647
sl@0
 10648
6. Tests for SetExp() and SetSign() and also for assignment operators added.
sl@0
 10649
sl@0
 10650
7. Increment/decrement tests now include normalising to get results consistent with
sl@0
 10651
Microsoft.
sl@0
 10652
sl@0
 10653
Version 0.01.082
sl@0
 10654
================
sl@0
 10655
(Made by Morgan, 20th December 1996)
sl@0
 10656
sl@0
 10657
This release is binary compatible with 081
sl@0
 10658
sl@0
 10659
1) Morgan
sl@0
 10660
		1) Fixed a bug in the SWI vector code on the ARM that was calling
sl@0
 10661
		   dispatchDfcAndReschedule incorrectly.
sl@0
 10662
sl@0
 10663
2) Jane
sl@0
 10664
		1) Changed the base addresses of WINS dlls as suggested by Martin Budden.
sl@0
 10665
sl@0
 10666
		2) Fixed bug in CObjectIx where creating many objects could return a null handle.
sl@0
 10667
sl@0
 10668
		3) Fixed Daylight saving bug in WINS
sl@0
 10669
sl@0
 10670
3) Graham
sl@0
 10671
				1) Modified bootup code so that it reads the keyboard to
sl@0
 10672
				   set up ROM memory configuration. This will be used with
sl@0
 10673
				   the masked ROM to check paged mode rom access
sl@0
 10674
sl@0
 10675
sl@0
 10676
Version 0.01.081
sl@0
 10677
================
sl@0
 10678
(Made by Matthew, 17th December 1996)
sl@0
 10679
sl@0
 10680
This release is binary compatible with 080
sl@0
 10681
sl@0
 10682
1) Matthew
sl@0
 10683
		1) Fixed dereferencing-zero bug in CObjectCon and CObjectConIx destructors.
sl@0
 10684
sl@0
 10685
		2) Changed EDLL WINS debug info to C7 format.
sl@0
 10686
sl@0
 10687
sl@0
 10688
Version 0.01.080
sl@0
 10689
================
sl@0
 10690
(Made by Jane, 16th December 1996)
sl@0
 10691
sl@0
 10692
This release is binary compatible with 079
sl@0
 10693
sl@0
 10694
1) Morgan
sl@0
 10695
		1) Timers abort on power up and locale changes to universal
sl@0
 10696
		   time, and daylight saving.
sl@0
 10697
		2) Fixed HA-307
sl@0
 10698
sl@0
 10699
2) Matthew
sl@0
 10700
		1) Speeded up several CObjectIx, CObjectCon and CObjectConIx
sl@0
 10701
		   functions by using pointers into arrays instead of operator[].
sl@0
 10702
sl@0
 10703
3) Jane
sl@0
 10704
		1) Added support for real time threads. These are supervisor mode threads
sl@0
 10705
		   whose real time response is greatly improved over ordinary user threads,
sl@0
 10706
		   as it is possible for them to interrupt the supervisor server and
sl@0
 10707
		   non-blocked slow exec calls.
sl@0
 10708
		   Wrote the WINS and X86 implementations of the above, and a test driver
sl@0
 10709
		   and test program. (D_RTIM and T_RTIM).
sl@0
 10710
sl@0
 10711
4) Graham
sl@0
 10712
		1) Added ARM implementation of real time threads.
sl@0
 10713
sl@0
 10714
Version 0.01.079
sl@0
 10715
================
sl@0
 10716
(Made by Graham, 10th December 1996)
sl@0
 10717
sl@0
 10718
This release is binary compatible with 078
sl@0
 10719
sl@0
 10720
1) Graham
sl@0
 10721
		1) Changed the bootstrap to map the ROM using ARM MMU 1Mb
sl@0
 10722
		   sections. This reduces the number of TLB entries used
sl@0
 10723
		   by the ROM and yields a 4% speed increase on our inter-
sl@0
 10724
		   process message passing test (T_PROC1).
sl@0
 10725
sl@0
 10726
		2) Fixed MachineInfo problems on WINS (HA-220, HA-303).
sl@0
 10727
sl@0
 10728
		3) Patched up some Hal information services.
sl@0
 10729
sl@0
 10730
		4) Experimentally added clicks when the digitiser is touched.
sl@0
 10731
sl@0
 10732
2) Matthew
sl@0
 10733
		1) Checked all PP::, KK::, Plat:: Panics and Faults. Some
sl@0
 10734
		have been changed to panic the calling thread, instead of
sl@0
 10735
		the kernel. This fixes bugs like HA-276 (Leave without TRAP).
sl@0
 10736
sl@0
 10737
sl@0
 10738
Version 0.01.078
sl@0
 10739
================
sl@0
 10740
(Made by Graham, 7th December 1996)
sl@0
 10741
sl@0
 10742
This release is binary compatible with 077
sl@0
 10743
sl@0
 10744
1) Simon
sl@0
 10745
		1) Changed WINC over to use some WINS components, allowing
sl@0
 10746
		   Store and other components to use WINS librraies for WINC
sl@0
 10747
		   development.
sl@0
 10748
sl@0
 10749
		   WINC now conists of a EKERN ECONS and EEXE but all other
sl@0
 10750
		   components are taken from the WINS build. The BLD.CMD has
sl@0
 10751
		   been changed to reflect this new building model.
sl@0
 10752
sl@0
 10753
		2) WINS EUSER added WINC initialisation functions.
sl@0
 10754
sl@0
 10755
		3) Removed unecessary files from UPWINC
sl@0
 10756
sl@0
 10757
2) Graham
sl@0
 10758
		1) Implemented User::MachineConfiguration() and
sl@0
 10759
		   User::SetMachineConfiguration(). These may be used to
sl@0
 10760
		   save and restore the registry and O/S information such as
sl@0
 10761
		   whether key clicks are enabled or sound volume is loud etc.
sl@0
 10762
		   It is hoped that this information will now be standardised
sl@0
 10763
		   in such a way that anyone moving from one EPOC/32 machine
sl@0
 10764
		   to another will be able to transfer their machine's
sl@0
 10765
		   'personality' in one go.
sl@0
 10766
sl@0
 10767
		2) Moved P::DebugMask() to Plat::DebugMask() as it was being
sl@0
 10768
		   exported.
sl@0
 10769
sl@0
 10770
3) Pete
sl@0
 10771
	1) PC Cards are now powered down automatically after 5
sl@0
 10772
	   seconds if the card is left both un-configured and with no memory
sl@0
 10773
	   allocated.
sl@0
 10774
	2) Fixed a problem were a CF Card was incorrectly returning
sl@0
 10775
	   'Not supported'  on each subsequent access following the
sl@0
 10776
	   situation were a read from the card was interrupted with a media
sl@0
 10777
	   change. (Unfortunatley interrupted writes still cause the file server
sl@0
 10778
	   to panic).
sl@0
 10779
	3) Full 16bit access of CF cards (and therefore support of Hitachi
sl@0
 10780
	   cards) now takes place when a Rev2 Etna is detected.
sl@0
 10781
	4) General PC Card related class renameing. Also, PC Card
sl@0
 10782
	   configuration info. has now been moved from the EKERN into the
sl@0
 10783
	   appropriate custom DLL for ARM builds.
sl@0
 10784
sl@0
 10785
sl@0
 10786
Version 0.01.077
sl@0
 10787
================
sl@0
 10788
(Made by Graham, 6th December 1996)
sl@0
 10789
sl@0
 10790
1) SteveG
sl@0
 10791
	1) Fixed bug in battery charging LDD which hung when free'ing the
sl@0
 10792
	   device driver. Removed debug information which was being
sl@0
 10793
	   output to the comms port while charging was in progress
sl@0
 10794
sl@0
 10795
2) Morgan
sl@0
 10796
		1) Altered the MARM MMU PTE permissions lookup table to enable
sl@0
 10797
		   write buffers for user data.  Fixes HA-300 (Speed).
sl@0
 10798
		2) User::Abort now raises EExcKill exception.
sl@0
 10799
sl@0
 10800
3) Jane
sl@0
 10801
		1) Fixed Lane's shared chunk growing problem
sl@0
 10802
sl@0
 10803
4) Graham
sl@0
 10804
		1) Fixed a versioning problem with the text window notifier
sl@0
 10805
		   server.
sl@0
 10806
sl@0
 10807
Version 0.01.076
sl@0
 10808
================
sl@0
 10809
(Made by Graham, December 3rd 1996)
sl@0
 10810
sl@0
 10811
This release is binary compatible with 075
sl@0
 10812
sl@0
 10813
1) Graham
sl@0
 10814
		1) Added Eiger port control code which avoids output bits
sl@0
 10815
		   reading erroneously when they are connected to circuits
sl@0
 10816
		   with large rise or decay times.
sl@0
 10817
sl@0
 10818
		2) Added Minor Version 4 to the E32 version number to reflect
sl@0
 10819
		   the fact that this is a B4 release.
sl@0
 10820
sl@0
 10821
		3) Fixed a problem in the media driver version numbering.
sl@0
 10822
sl@0
 10823
2) SteveG
sl@0
 10824
		1) Preliminary release of the battery recharging LDD, DARCP1.LDD,
sl@0
 10825
		   for tests by the hardware dept. This is only for the real
sl@0
 10826
		   Proteas.
sl@0
 10827
sl@0
 10828
	   The LDD offers the following functions:
sl@0
 10829
sl@0
 10830
	   RDevNicads::Open() to open a channel
sl@0
 10831
sl@0
 10832
	   RDevNicads::Type(TInt& type) to get the charge type in progress
sl@0
 10833
	   This will be EChargeNone, EChargeFast or EChargeTrickle
sl@0
 10834
sl@0
 10835
	   RDevNicads::SetChargeType(TInt aType) to set the type
sl@0
 10836
	   The type should be EChargeNone, EChargeFast or EChargeTrickle.
sl@0
 10837
	   Returns an error if it is not possible to start the requested
sl@0
 10838
	   charging method.
sl@0
 10839
sl@0
 10840
	   RDevNicads::Close()
sl@0
 10841
sl@0
 10842
	   The functions are defined in D32RCHG.H and D32RCHG.INL
sl@0
 10843
sl@0
 10844
	   Loading the device driver using LoadLogicalDevice will start
sl@0
 10845
	   the charging if a rechargeable battery pack is fitted. The mains
sl@0
 10846
	   LED will flash while fast charging is in process. Once fully charged,
sl@0
 10847
	   the battery pack is trickle charged while mains power is applied.
sl@0
 10848
	   This can be overridden using the above functions.
sl@0
 10849
sl@0
 10850
3) Morgan
sl@0
 10851
		1) Fixed WINS so that it reports the same physical screen
sl@0
 10852
		   size as it did before .INI-file-controlled fascia bitmaps
sl@0
 10853
		   were introduced.
sl@0
 10854
sl@0
 10855
Version 0.01.075
sl@0
 10856
================
sl@0
 10857
(Made by Graham, November 28th 1996)
sl@0
 10858
sl@0
 10859
This release is not binary compatible with any previous version.
sl@0
 10860
sl@0
 10861
1) SteveG
sl@0
 10862
		a) Wrote the device driver for the serial E2PROM. This is currently
sl@0
 10863
		   only for P1 Proteas, as the racks do not have the device fitted
sl@0
 10864
sl@0
 10865
		   The device driver is DAE2P1.LDD and provides all the commands
sl@0
 10866
		   necessary for writing, reading, protecting and locking the
sl@0
 10867
		   sixteen 16-bit registers in the E2PROM chip
sl@0
 10868
sl@0
 10869
		b) Fixed bug in ARM Mem::Compare with non word aligned buffers >=16
sl@0
 10870
sl@0
 10871
		c) Implemented keyboard repeats in the E32 text WServ
sl@0
 10872
sl@0
 10873
		d) Added an EActive event, which is sent in WINS when the focus
sl@0
 10874
		   is returned to the WINS window. The EInactive event is still
sl@0
 10875
		   sent when the WINS window loses focus
sl@0
 10876
sl@0
 10877
		e) Added an EUpdateModifers event, which is sent whenever the
sl@0
 10878
		   WINS window gains focus. This event includes the current
sl@0
 10879
		   state of the toggling modifier keys, and should be passed
sl@0
 10880
		   on to the keyboard translator to update its modifier states
sl@0
 10881
		   using KeyTranslator->UpdateModifiers(TInt). The modifiers
sl@0
 10882
		   are extracted from the event using TInt TRawEvent::Modifiers();
sl@0
 10883
		   E32 text WServ modified accordingly. This event is sent before
sl@0
 10884
	   the EActive event. This event will also be sent when booting
sl@0
 10885
	   up WINS, so the caps/num lock states will be correct at bootup.
sl@0
 10886
	   KeyTranslator->UpdateModifiers() also resets the state of the
sl@0
 10887
	   key translator to normal
sl@0
 10888
sl@0
 10889
		f) Implemented keyboard clicks, the following UserHal functions
sl@0
 10890
		   can be used to set the clicks:
sl@0
 10891
sl@0
 10892
		   to set/read the volume:
sl@0
 10893
				   UserHal::SetKeyClickLoud(TBool)
sl@0
 10894
				   UserHal::KeyClickLoud(TBool&)
sl@0
 10895
sl@0
 10896
		   to set/read if clicks are enabled:
sl@0
 10897
				   UserHal::SetKeyClickEnabled(TBool);
sl@0
 10898
				   UserHal::KeyClickEnabled(TBool&);
sl@0
 10899
sl@0
 10900
		   to override the system on/off setting, forcing clicks off
sl@0
 10901
		   (will be used by WServ to turn off clicks when an application
sl@0
 10902
		   requests to disable clicks while in foreground):
sl@0
 10903
				   UserHal::SetKeyClickOverriden(TBool)
sl@0
 10904
				   UserHal::KeyClickOverriden(TBool&)
sl@0
 10905
		   (This function could do with a better name...:-)
sl@0
 10906
sl@0
 10907
	   Using SetKeyClickOverriden(ETrue) will disable key clicks
sl@0
 10908
	   regardless of the system setting. The system setting can
sl@0
 10909
	   still be changed while overriden.
sl@0
 10910
sl@0
 10911
		   Note that key clicks will not work in WINS as they produced
sl@0
 10912
		   more of a key fart than a click. The functionality is there,
sl@0
 10913
		   and if a way of producing a suitable click is found, will be
sl@0
 10914
		   added in a later release (function P::KeyClick() in KP_UTL.CPP)
sl@0
 10915
sl@0
 10916
		g) Fixed problem with CTimers going off 1 second early - this
sl@0
 10917
		   solves the problem of alarms going off a second or so early
sl@0
 10918
		   in TimeW app on MARM. There still appear to be problems
sl@0
 10919
		   in WINS, which may lie elsewhere...
sl@0
 10920
sl@0
 10921
		   TSecondLink::At() now converts the absolute time you specify
sl@0
 10922
		   to seconds since year2000, and uses this to work out the
sl@0
 10923
		   delta value to put into the queue. This is more accurate
sl@0
 10924
		   since the time that the queue was last ticked over is also
sl@0
 10925
		   stored in seconds since year2000. Previously the value added
sl@0
 10926
		   to the delta queue was the difference between the system time
sl@0
 10927
		   and the time you supplied, which could be upto a second out
sl@0
 10928
		   if the microseconds part of the system time was non-zero
sl@0
 10929
		   which would be 99.9999% of the time
sl@0
 10930
sl@0
 10931
2) Morgan,
sl@0
 10932
	a) Added support for a WINS system ini file allowing some system defaults
sl@0
 10933
		   to be setup.  The .INI file lives at \EPOC32\DATA\SYSTEM.INI
sl@0
 10934
	   and allows you to change the screen dimentions, fascia and the
sl@0
 10935
		   LED arrangement.
sl@0
 10936
		   The defaults are
sl@0
 10937
		ScreenWidth 640
sl@0
 10938
		ScreenHeight 240
sl@0
 10939
		ScreenOffsetX 123
sl@0
 10940
		ScreenOffsetY 53
sl@0
 10941
		FasciaBitmap \epoc32\data\Fascia.bmp
sl@0
 10942
		LedOffsetX 30
sl@0
 10943
		LedOffsetY 26
sl@0
 10944
		LedSize 14
sl@0
 10945
		LedGap 5
sl@0
 10946
		LedArrangeHorizontally
sl@0
 10947
		#LedArrangeVertically
sl@0
 10948
sl@0
 10949
	b) Added exception support for MX86, MARM, and WINS:
sl@0
 10950
sl@0
 10951
		   TExceptionHandler* RThread::ExceptionHandler() const;
sl@0
 10952
	   TInt RThread::SetExceptionHandler(TExceptionHandler* aHandler,TUint32 aMask);
sl@0
 10953
	   void RThread::ModifyExceptionMask(TUint32 aClearMask, TUint32 aSetMask);
sl@0
 10954
	   TInt RThread::RaiseException(TExcType aType);
sl@0
 10955
	   TBool RThread::IsExceptionHandled(TExcType aType);
sl@0
 10956
sl@0
 10957
		   If a thread has no handler for an exception it is passed onto the
sl@0
 10958
		   kernel for handling.  The default action is to panic the offending
sl@0
 10959
		   thread.  Unhandled exceptions caused by RThread::RaiseException()
sl@0
 10960
		   force the thread to exit via User::Exit().
sl@0
 10961
		   Otherwise handlers are executed in the context of the thread on
sl@0
 10962
		   which the exception is raised and control returned to the
sl@0
 10963
		   point of the exception.
sl@0
 10964
sl@0
 10965
		   When debugging under WINS, MSDEV will intercept the exception before
sl@0
 10966
		   the handler has a chance to execute.
sl@0
 10967
sl@0
 10968
	c) Fixed HA-258
sl@0
 10969
sl@0
 10970
	d) Added Uids (and -type-safe-link for ROMBUILD) to the Base components under ARM.
sl@0
 10971
	   The Uids are #defined in \Epoc32\include\E32UID.H and \e32\kbarm\E32UID.IBY.
sl@0
 10972
sl@0
 10973
	e) Added an iTextSize to TLoaderInfo and TRomImageHeader for GDB
sl@0
 10974
sl@0
 10975
	f) Implemented Dll::GlobalAlloc, Dll::GlobalAllocated, Dll::GlobalRead, and
sl@0
 10976
	   Dll::GlobalWrite.
sl@0
 10977
sl@0
 10978
3) Matthew
sl@0
 10979
	a) Fixed HA-208 (IsPresent and IsValid in TUidType should return TBool).
sl@0
 10980
	   Also changed loads of other Is*() functions to return a TBool instead
sl@0
 10981
	   of a TInt. A few Is*() functions which returned KErr values have been
sl@0
 10982
	   renamed:
sl@0
 10983
sl@0
 10984
			CObjectCon::IsValidName -> ValidateName
sl@0
 10985
			CObjectCon::IsUniqueFullName -> CheckUniqueName
sl@0
 10986
			DComm::IsValid -> Validate
sl@0
 10987
sl@0
 10988
	b) Fixed HA-196 (inline TLocale functions not expanded in release builds).
sl@0
 10989
sl@0
 10990
	c) Fixed HA-238 (Shortcomings of KNullUid definition): removed TUidC class
sl@0
 10991
	   and added static functions TUid::Uid(TInt) and TUid::Null() to get round
sl@0
 10992
	   GCC bug. #defined KNullUid as TUid::Null().
sl@0
 10993
sl@0
 10994
	d) Changed WINS Uid scheme so that the UId is stored in a segment of its own
sl@0
 10995
	   called ".E32_UID", to add a UID to a windows file include the code
sl@0
 10996
sl@0
 10997
			#pragma data_seg(".E32_UID")
sl@0
 10998
			__WINS_UID(Uid1,Uid2,Uid3)
sl@0
 10999
			#pragma data_seg()
sl@0
 11000
sl@0
 11001
	   in your source.
sl@0
 11002
sl@0
 11003
	e) Added the capability to detect thread death to the RChangeNotifier
sl@0
 11004
	   (completes with the EChangesThreadDeath bit set).
sl@0
 11005
sl@0
 11006
	f) Implemented User::InfoPrint() function. Also added a very simple notifier
sl@0
 11007
	   server to the text window server so that little windows appear when
sl@0
 11008
	   anyone calls User::Notify or InfoPrint.
sl@0
 11009
sl@0
 11010
	g) Improved the Tls scheme so that it uses a CArrayFixFlat. According to my
sl@0
 11011
	   benchmarking this should speed up Dll::Tls(), though it remains to be
sl@0
 11012
	   seen what happens in the real world.
sl@0
 11013
sl@0
 11014
	   Note that there is now a Dll::FreeTls() function, and that Dll::SetTls
sl@0
 11015
	   can now return KErrNoMemory.
sl@0
 11016
sl@0
 11017
	h) Changed midnight crossover code, to avoid costly divisions.
sl@0
 11018
sl@0
 11019
	i) Changes to sound driver: Fixed several bugs to do with having two LDDs
sl@0
 11020
	   going at once. This has caused the driver to become more sensitive to
sl@0
 11021
	   playing and recording at once, and may mean that code that previously
sl@0
 11022
	   worked fine now returns KErrInUse. Remember that the driver keeps
sl@0
 11023
	   playing aLaw even after the last play request has been completed, and
sl@0
 11024
	   keeps recording until the buffer is full. If you find problems, check
sl@0
 11025
	   that you flush the record buffer when you have stopped recording, and if
sl@0
 11026
	   you try to record and get KErrInUse, you may want to wait until the play
sl@0
 11027
	   buffer has had time to drain and try again before reporting an error.
sl@0
 11028
sl@0
 11029
	   Added some preliminary power handling code. Playing will stop on
sl@0
 11030
	   switch-off and the restart from where it left off; recording will
sl@0
 11031
	   terminate with KErrGeneral (this seemed the only appropriate value)
sl@0
 11032
	   when you switch back on.
sl@0
 11033
sl@0
 11034
	   The PDDs now support EVolumeByValue. The values are as follows:
sl@0
 11035
sl@0
 11036
				0-20  = EVolumeNone
sl@0
 11037
			21-40 = EVolumeSoft
sl@0
 11038
			41-60 = EVolumeMedium
sl@0
 11039
			61-80 = between EVolumeMedium and EVolumeLoud
sl@0
 11040
			81-100 = EVolumeLoud
sl@0
 11041
sl@0
 11042
4) Jane
sl@0
 11043
		a) Changed MMU from a scheme of passing 3 parameters denoting the chunk's
sl@0
 11044
		owner, its type (code, data etc.) and whether it was locked in physical or
sl@0
 11045
		linear memory, to a simpler scheme where the chunk's owner is passed throughout the MMU
sl@0
 11046
		system (there being a greatly increased possible number of chunk owners). This
sl@0
 11047
		was to enable the ARM MMU, which is more limited than the X86 one, to cope with
sl@0
 11048
		shared chunks being read only in one process and writable in another etc.
sl@0
 11049
sl@0
 11050
		b) When creating certain types of chunks, kept a list of allocated pages, so that it
sl@0
 11051
		is possible to support 3 possible states of permissions. (On the X86 this is achievable
sl@0
 11052
		by merely changing the top level PDE permissions - this is not so on the ARM). This change
sl@0
 11053
		allows the ARM MMU to support code chunks which are read/write to start with when the file
sl@0
 11054
		server reads the code into them from a CF card, but later are both supervisor read/only
sl@0
 11055
		when in the home section and user read/only when running.
sl@0
 11056
sl@0
 11057
		c) Made a note early on of the file server's process. Changed the ram drive chunk
sl@0
 11058
		to being two-state chunk, and when the file server runs, change the permissions on the
sl@0
 11059
		RAM chunk (top level PDEs only) so that the file server has direct access to the
sl@0
 11060
		RAM drive.
sl@0
 11061
sl@0
 11062
		d) Made the RAM drive supervisor priviledges, so that no-one except the file
sl@0
 11063
		server (see above) can access it.
sl@0
 11064
sl@0
 11065
		e) Added size reporting functions for spy programs
sl@0
 11066
			TInt RLibrary::GetRamSizes(TInt& aCodeSize, TInt& aConstDataSize);
sl@0
 11067
			TInt RThread::GetRamSizes(TInt& aHeapSize, TInt& aStackSize);
sl@0
 11068
			TInt RProcess::GetRamSizes(TInt& aCodeSize, TInt& aConstDataSize, TInt& anInitialisedDataSize, TInt& anUninitialisedDataSize);
sl@0
 11069
sl@0
 11070
		f) Added Andrew Thoelke's optimisations to various Find and Locate functions - see
sl@0
 11071
		   Notes for more details.
sl@0
 11072
sl@0
 11073
sl@0
 11074
5) Graham
sl@0
 11075
		1) Added and enhanced Kazuhiro Konishi's unicode/japanese changes
sl@0
 11076
		   to the text window server.
sl@0
 11077
sl@0
 11078
		2) Added the UID into the sound driver make file and removed
sl@0
 11079
		   all the link dependancies that the sound PDDs had upon
sl@0
 11080
		   their LDD.
sl@0
 11081
sl@0
 11082
		3) Fixed the dodgy digitiser (HA-284)
sl@0
 11083
sl@0
 11084
		4) Experimentally increased the digitiser sample rate to
sl@0
 11085
		   50 samples/s.
sl@0
 11086
sl@0
 11087
		5) Introduced the EPointerSwitchOn event. This event contains
sl@0
 11088
		   x and y information and is generated when pen down causes
sl@0
 11089
		   the machine to switch on. No further pen events should be
sl@0
 11090
		   generated until the pen has subsequently been removed from
sl@0
 11091
		   the surface of the digitiser. I believe appropriate windows
sl@0
 11092
		   (i.e. the application bar window) will be able to register
sl@0
 11093
		   with the window server an interest in these events. So, normal
sl@0
 11094
		   windows should not be troubled by them. This should solve
sl@0
 11095
		   problem HA-325.
sl@0
 11096
sl@0
 11097
		6) Removed the text window server's beep when switching on
sl@0
 11098
		   normally and introduced it when switching on with the
sl@0
 11099
		   digitiser. (This only occurs on debug builds).
sl@0
 11100
sl@0
 11101
6) Rog	1) Fixed RackC COM::1 bug which was causing input RS-232 lines
sl@0
 11102
	   to be reported incorrectly.
sl@0
 11103
7) Pete 1) Reduced the wait states introduced by Etna on CF Card
sl@0
 11104
	   attribute memory reads. This was interfering with screen
sl@0
 11105
	   refreshing when 16 shades of grey mode was enabled (HA285).
sl@0
 11106
	2) CF card support when powering on and off the machine has
sl@0
 11107
	   now been added. On power off, the card is fully powered down. On power
sl@0
 11108
	   up, TLocalDrive objects are notified of the power down, forcing them
sl@0
 11109
	   to re-mount the disk on the next access (HA281).
sl@0
 11110
	3) Added the functions InCritical() and EndInCritical() to
sl@0
 11111
	   the PC Card controller. While in-critical, media change power down is
sl@0
 11112
	   delayed. Writes to the CF Card are now critical. Prior to this, if a
sl@0
 11113
	   media change occured during a write to the card then this could leave
sl@0
 11114
	   a sector with an ID error on the card.
sl@0
 11115
	   However, there is currently a problem such that the File Server
sl@0
 11116
	   panics if a media change occures during a write to the CF card
sl@0
 11117
	   so this should be avoided for now.
sl@0
 11118
	4) PC Card controller now able to access a CIS chain in common
sl@0
 11119
	   memory as well as attribute memory.
sl@0
 11120
	5) Removed the function User::PcCardCntrlInterface() and
sl@0
 11121
	   replaced this with the class UserPcCardCntrl.
sl@0
 11122
	6) Added the following functions to the above class: MediaStart(),
sl@0
 11123
	   MediaOpen(),MediaInfo(),MediaRead(),MediaWrite(). These
sl@0
 11124
	   allow access to a media device (eg CF Card) at a media
sl@0
 11125
	   level (rather than a partition level as do TLocalDrive.Read() and
sl@0
 11126
	   Write()). I.E. they allow access to the partition table etc.
sl@0
 11127
sl@0
 11128
sl@0
 11129
Version 0.01.074
sl@0
 11130
================
sl@0
 11131
(Made by Graham, November 6th 1996)
sl@0
 11132
sl@0
 11133
1) Graham
sl@0
 11134
		1) Fixed a leak in AddProtected() which caused the O/S to
sl@0
 11135
		   panic with EBadDfc when stressed.
sl@0
 11136
sl@0
 11137
		2) Added followers into the TEiger class for ports A,B,C,D
sl@0
 11138
		   and E. Modifying these registers can now be safely
sl@0
 11139
		   achieved without worrying about those bits which are
sl@0
 11140
		   programmed to be input bits.
sl@0
 11141
sl@0
 11142
		3) Added interrupt protection into all TEiger modify
sl@0
 11143
		   functions.
sl@0
 11144
sl@0
 11145
		4) Stopped KE_ALL debug information from coming out in all
sl@0
 11146
		   circumstances.
sl@0
 11147
sl@0
 11148
2) Morgan
sl@0
 11149
	1) Moved WINS power off button to F9 (HA-214).
sl@0
 11150
	2) Fixed HA-255 and added test code.
sl@0
 11151
	3) Made semaphore and mutex names unique for each process to fix
sl@0
 11152
		   HA-163. It is now possible to run 2 WINS kernels with the same
sl@0
 11153
		   process name simultaniously.
sl@0
 11154
sl@0
 11155
Version 0.01.073
sl@0
 11156
================
sl@0
 11157
(Made by Graham, November 6th 1996)
sl@0
 11158
sl@0
 11159
1) Graham
sl@0
 11160
		1) Solved the stack problem which prevented debug information
sl@0
 11161
		   from being emmitted in MARM debug builds.
sl@0
 11162
sl@0
 11163
		2) Fixed WINS keyboard repeat problem when the WINS window
sl@0
 11164
		   loses focus.
sl@0
 11165
sl@0
 11166
2) SteveG
sl@0
 11167
		1) Reduced stack usage of CObject::FullName, which was shoving a
sl@0
 11168
		   TFullName on the stack for every owner of an object. Now only
sl@0
 11169
		   one TFullName is put on the stack regardless of the number of
sl@0
 11170
		   owners. This cures HA-273.
sl@0
 11171
sl@0
 11172
Version 0.01.072
sl@0
 11173
================
sl@0
 11174
(Made by Jane, October 25th 1996)
sl@0
 11175
sl@0
 11176
This release is the candidate B3 release. Unless there are any show-stopping
sl@0
 11177
bugs, our next release will be the first in the chain leading to B4, and
sl@0
 11178
will not be binary compatible with this one.
sl@0
 11179
sl@0
 11180
NOTE: Once again to speed the passage of this non-binary compatible release
sl@0
 11181
through the system, I have released with test code failures. However in this
sl@0
 11182
case I believe them to be test code problems. The following tests are failing
sl@0
 11183
with kernel alloc heaven - T_CHUNK (chunk testing), T_KHEAP (thread testing)
sl@0
 11184
and T_THREAD (undertaker testing). These tests fail in ARM debug builds only,
sl@0
 11185
and pass on X86, which leads me to believe that these are granularity
sl@0
 11186
issues in the kernel heap on ARM.
sl@0
 11187
sl@0
 11188
1) Jane
sl@0
 11189
		a) Implemented allocation of sub-page tables for ARM.
sl@0
 11190
sl@0
 11191
		b) Fixed bugs to do with lengths of supplied filenames in
sl@0
 11192
		   process and library loading. Took the opportunity to rationalise
sl@0
 11193
		   the loader to do this and reduce stack impact considerably.
sl@0
 11194
sl@0
 11195
		c) Added MMU debug supervisor calls to enable the porting of my
sl@0
 11196
		   MMU system from its emulated environment, and converted several
sl@0
 11197
		   tests to the new system.
sl@0
 11198
sl@0
 11199
		d) Tidied up various APIs to their correct places, ready for
sl@0
 11200
		   unfreeze.
sl@0
 11201
		   Affected are the new unimplemented exception APIS, and the
sl@0
 11202
		   RLoader::LoadLibrary
sl@0
 11203
sl@0
 11204
		e) Added an enum, TKernPanic, to e32std.h
sl@0
 11205
		   Now client threads will be panicked with values in this list,
sl@0
 11206
		   rather than error numbers.
sl@0
 11207
sl@0
 11208
	f) Fixed a couple of bugs in the low-level arm mmu implementation which
sl@0
 11209
	   showed up with very large RAM disks.
sl@0
 11210
sl@0
 11211
	g) Exported wildcards KMatchAny and KMatchOne from e32std.h
sl@0
 11212
sl@0
 11213
	h) Changed RConsole::Set to RConsole::Init
sl@0
 11214
sl@0
 11215
	i) Stopped RTest writing to comm ports (except in X86 builds)
sl@0
 11216
sl@0
 11217
	j) Rationalised KErrxxxx constants
sl@0
 11218
	   KErrNoLinearMemory gone, used KErrNoMemory instead
sl@0
 11219
	   KErrSubSystem gone
sl@0
 11220
	   KErrDomain gone, used KErrArgument instead
sl@0
 11221
	   KErrException gone (kernel panic enum used instead)
sl@0
 11222
	   KErrNotFound becomes -1, so that we could omit KNotFound in future.
sl@0
 11223
sl@0
 11224
	   NOTE - KErrGeneral is no longer -1. This showed up quite a few
sl@0
 11225
	   bugs in the file server which was assuming that KNotFound was the
sl@0
 11226
	   same thing as KErrGeneral. This is no longer the case, beware!
sl@0
 11227
sl@0
 11228
	 k) Added RThread::ProcessPriority() and RThread::SetProcessPriority()
sl@0
 11229
sl@0
 11230
	 l) Changed void RThread::GetHeap(RHeap*&) to RHeap* RThread::Heap()
sl@0
 11231
sl@0
 11232
		 m) Speeded up interprocess messaging by about 10%. A further 8%
sl@0
 11233
			to come in next release.
sl@0
 11234
sl@0
 11235
2) Steve
sl@0
 11236
		a) Fixed UserHal::MemoryInfo which was returning an incorrect
sl@0
 11237
		   figure for FreeRam - it was deducting the size of the RAM
sl@0
 11238
		   disk from the real free ram size.
sl@0
 11239
sl@0
 11240
3) Graham
sl@0
 11241
		a) Changed the ADC interface to unsigned values. This should give
sl@0
 11242
		   doubled digitiser accuracy but meant recalibration of the
sl@0
 11243
		   digitiser on all platforms.
sl@0
 11244
sl@0
 11245
		b) Updated K32VIDEO.H to include power handling functions.
sl@0
 11246
sl@0
 11247
		c) Add CountDown(n) and FirstDelta() function calls to the
sl@0
 11248
		   priority queue class.
sl@0
 11249
sl@0
 11250
		d) Implemented waking up from alarms.
sl@0
 11251
sl@0
 11252
		e) Implemented waking up from pen down.
sl@0
 11253
sl@0
 11254
		f) Implemented ESwitchOn events on all platforms (HA-229).
sl@0
 11255
sl@0
 11256
		g) Added a beep to the Text Window Server in debug builds
sl@0
 11257
		   when an ESwitchOn event occurs.
sl@0
 11258
sl@0
 11259
		h) Added a general purpose interface to the ADC channels which
sl@0
 11260
		   measure battery voltages, thermistor readings etc.
sl@0
 11261
sl@0
 11262
		i) Made Neil Lilliot's change for reducing shadowing on the LCD.
sl@0
 11263
sl@0
 11264
4) Jal
sl@0
 11265
		a) Fixed a bug in TReal96::operator/=
sl@0
 11266
sl@0
 11267
Version 0.01.071
sl@0
 11268
================
sl@0
 11269
(Made by Graham, October 11th 1996)
sl@0
 11270
sl@0
 11271
1) Graham
sl@0
 11272
		1) Added a millisecond timer queue to the kernel. It
sl@0
 11273
		   currently uses FRC2. All kernel services which were
sl@0
 11274
		   using TEiger::WaitMilliseconds should now move over
sl@0
 11275
		   to the new services provided by this queue.
sl@0
 11276
		2) Implemented the digitiser in terms of the millisecond
sl@0
 11277
		   timer queue instead of the system tick queue. This enables
sl@0
 11278
		   code to be written which can deliver more than 21 digitiser
sl@0
 11279
		   events per second (it is currently set to 25/s). Not only
sl@0
 11280
		   this, by driving current across the digitiser only when it
sl@0
 11281
		   is absolutely necessary, power consumption has been
sl@0
 11282
		   reduced. The digitiser should now work on upgraded
sl@0
 11283
		   machines - the H/W fix for digitiser wobble involves an
sl@0
 11284
		   increase to 1mS in the X/Y drive rise-time. In order to
sl@0
 11285
		   take account of this rise-time, the millisecond timer was
sl@0
 11286
		   required.
sl@0
 11287
		3) Implemented the buzzer in terms of the millisecond timer
sl@0
 11288
		   queue. Due to variable interrupt latency, this does not
sl@0
 11289
		   produce a pleasing effect. So, for the time being, I have
sl@0
 11290
		   left the buzzer monopolising FRC1. You can switch between
sl@0
 11291
		   this and the new millisecond timer buzzer with the compile
sl@0
 11292
		   time switch __SOFTWARE_BUZZER__ in KEARM\KE_UTL.CPP
sl@0
 11293
		4) Introduced Hal::WaitMilliSeconds which uses the
sl@0
 11294
		   millisecond timer. This replaces TEiger::WaitMilliSeconds.
sl@0
 11295
		5) Added device driver power handling functions in
sl@0
 11296
		   KS_POWER.CPP.
sl@0
 11297
		6) Created a release of header files for those who link to
sl@0
 11298
		   the E32 kernel (device driver writers mainly). This can
sl@0
 11299
		   be found in R:\E32\ZIP\INCK.xxx
sl@0
 11300
		7) Implemented the auto clibration sequence on the ADC
sl@0
 11301
		   converter. This cures the problem which causes the first
sl@0
 11302
		   ever pen down event to have the wrong y-coordinate.
sl@0
 11303
sl@0
 11304
2) Pete
sl@0
 11305
		1) Fixed a bug which prevented the machine booting up with
sl@0
 11306
		   the CF card door open.
sl@0
 11307
sl@0
 11308
Version 0.01.070
sl@0
 11309
================
sl@0
 11310
(Made by Jane, October 4th 1996)
sl@0
 11311
sl@0
 11312
1) Morgan
sl@0
 11313
		1) Priority of a process is set according to the Executable's E32Image.
sl@0
 11314
sl@0
 11315
		2) Fixed svLibraryLoadExact to deal with statically linked libraries where
sl@0
 11316
		the ownership of the libraries handle belongs to the newly created process.
sl@0
 11317
sl@0
 11318
2) SteveG
sl@0
 11319
		1) Changed the keyboard data for P1 to have ' on shift-6, not ^
sl@0
 11320
sl@0
 11321
		2) RDebug changes: Anyone can now request to be informed when a thread
sl@0
 11322
		   panics, hits a breakpoint or causes an exception without having
sl@0
 11323
		   called RDebug::Open. This means a panic catcher can be running
sl@0
 11324
		   continuously and still allow GDB to be used. Previously, only one call
sl@0
 11325
		   to RDebug::Open was allowed, meaning that the debugger could not
sl@0
 11326
		   be used while a panic catcher was running and vice-versa.
sl@0
 11327
sl@0
 11328
		   To catch panics etc, use the following code:
sl@0
 11329
sl@0
 11330
			   SDebugInfo info;
sl@0
 11331
			   TRequestStatus status;
sl@0
 11332
			   RDebug::GetException(info,status);
sl@0
 11333
			   User::WaitForRequest(status);
sl@0
 11334
sl@0
 11335
		   SDebugInfo is defined in E32SVR.H
sl@0
 11336
sl@0
 11337
		   You must kill the thread that paniced at some point using:
sl@0
 11338
sl@0
 11339
			   RDebug::KillThread(info.iThread);
sl@0
 11340
sl@0
 11341
		   or it will remain suspended forever. Do not use RDebug::Open
sl@0
 11342
		   or you will prevent GDB from running at the same time.
sl@0
 11343
sl@0
 11344
		   If someone starts GDB while your request to GetException is pending,
sl@0
 11345
		   GDB takes priority and you will not recieve any notifications of threads
sl@0
 11346
		   panicing until GDB quits
sl@0
 11347
sl@0
 11348
		   Only one call to GetException can be active at any one time. It is
sl@0
 11349
		   quite safe to call GetException while GDB is running, your request
sl@0
 11350
		   will remain pending until the first app panics after GDB quits
sl@0
 11351
sl@0
 11352
		   To cancel a request to GetException, use RDebug::CancelGetException()
sl@0
 11353
sl@0
 11354
		   This feature has been buried by Jane's RUndertaker class which
sl@0
 11355
		   should be used in preference ('cos she says it's better :-()
sl@0
 11356
		   The ability to use GetException without calling RDebug::Open will
sl@0
 11357
		   be removed in a later release.
sl@0
 11358
sl@0
 11359
		3) Altered D_GDB, the GDB stub, so that if you launch it without
sl@0
 11360
		   passing a program to debug on the command line, it will wait
sl@0
 11361
		   for a thread to panic/hit a breakpoint and then call
sl@0
 11362
		   User::Notify(). You can then start up GDB on the PC and
sl@0
 11363
		   connect to the Protea and start debugging the thread that
sl@0
 11364
		   paniced/hit a breakpoint.
sl@0
 11365
sl@0
 11366
		   To put a hardcoded breakpoint into your code, use the line:
sl@0
 11367
sl@0
 11368
			   asm(".word 0xe7ffffff");
sl@0
 11369
sl@0
 11370
		   in your code. Run D_GDB without passing a command line, and
sl@0
 11371
		   start your program. When the notify appears saying that
sl@0
 11372
		   a program has hit a breakpoint, start up GDB on the remote
sl@0
 11373
		   PC and start debugging...
sl@0
 11374
sl@0
 11375
3) Jane
sl@0
 11376
		1) Added KErrException. Threads which make illegal accesses etc. are
sl@0
 11377
		   now panicked with this value.
sl@0
 11378
sl@0
 11379
	2) Added RThread::RaiseException(TExcType aType)
sl@0
 11380
		   For the time being, this just panics a thread with category
sl@0
 11381
		   "Exception Raised" and panic number = the exception number
sl@0
 11382
		   TExceptionType is obsolete, and will be retired at the next thaw.
sl@0
 11383
sl@0
 11384
	3) Filled all user mode stacks with 0x29 to aid spy programs
sl@0
 11385
sl@0
 11386
	4) Implemented the thread death notifer service. The class is
sl@0
 11387
sl@0
 11388
		class RUndertaker : public RHandleBase
sl@0
 11389
			{
sl@0
 11390
		public:
sl@0
 11391
			IMPORT_C TInt Create();
sl@0
 11392
			IMPORT_C TInt Logon(TRequestStatus& aStatus,TInt& aThreadHandle) const;
sl@0
 11393
			IMPORT_C TInt LogonCancel(TRequestStatus& aStatus) const;
sl@0
 11394
			};
sl@0
 11395
sl@0
 11396
			To use the class, create an RUndertaker and logon to it like so
sl@0
 11397
sl@0
 11398
		RUndertaker u;
sl@0
 11399
		u.Create();
sl@0
 11400
		TRequeststatus stat;
sl@0
 11401
		TInt handle;
sl@0
 11402
		u.Logon(stat, handle);
sl@0
 11403
		User::WaitForRequest(stat);
sl@0
 11404
sl@0
 11405
			When a thread dies, the status word is completed, and the handle is that
sl@0
 11406
		of the dying thread. To look at why the thread died, for example, you might
sl@0
 11407
			do the following...
sl@0
 11408
sl@0
 11409
			RThread r;
sl@0
 11410
			r.SetHandle(handle);
sl@0
 11411
			if (r.ExitReason()==0x666)
sl@0
 11412
				{
sl@0
 11413
				...
sl@0
 11414
sl@0
 11415
		As you now have a handle on the dying thread, it won't go away until
sl@0
 11416
		you close it.
sl@0
 11417
sl@0
 11418
			r.Close();
sl@0
 11419
sl@0
 11420
			Look at T_THREAD for examples.
sl@0
 11421
sl@0
 11422
		NOTE: This service isn't guaranteed. If a thread dies while you are not
sl@0
 11423
		logged on to your RUndertaker, obviously you'll miss it - and there is a
sl@0
 11424
		window of opportunity after a thread has died & your status has completed
sl@0
 11425
			and before you get chance to deal with this and logon on again.
sl@0
 11426
sl@0
 11427
		NOTE2: Matt will be implementing a more general form of this in his
sl@0
 11428
		RChangeNotifier class, which will complete to tell you that a thread
sl@0
 11429
		has died, but not tell you *which* thread.
sl@0
 11430
sl@0
 11431
4) Matthew
sl@0
 11432
		Fixed bugs: HA-207 (%J in TTime::FormatL should abbreviate in 12hour
sl@0
 11433
		mode) and HA-215 (CActiveScheduler::Add should assert parameter).
sl@0
 11434
sl@0
 11435
5) Graham
sl@0
 11436
		Partial implementation of a kernel millisecond timer which
sl@0
 11437
		now runs the buzzer. Do not be alarmed if buzzing sounds
sl@0
 11438
		different in this release.
sl@0
 11439
sl@0
 11440
Version 0.01.069
sl@0
 11441
================
sl@0
 11442
(Made by Jane, September 26th 1996)
sl@0
 11443
sl@0
 11444
1) Jane
sl@0
 11445
		1) Clients causing an exception are now panicked KErrAbort.
sl@0
 11446
sl@0
 11447
		2) Possible fix for curtains bug. Any more reports of curtains
sl@0
 11448
		   welcome (sort of.)
sl@0
 11449
		   The bug was caused because of the change in behaviour such that
sl@0
 11450
		   a client thread is still hanging around when the server processes
sl@0
 11451
		   the disconnect. If the process creator had already closed its
sl@0
 11452
		   process handle, then the process died immediately, but the client
sl@0
 11453
		   thread was left. Then when the client thread eventually died, it
sl@0
 11454
		   closed its chunks, which involved removing them from the (dead)
sl@0
 11455
		   process's address space. BANG!
sl@0
 11456
sl@0
 11457
		   Now the chunk is removed from the process address space earlier on.
sl@0
 11458
sl@0
 11459
sl@0
 11460
2) SteveG
sl@0
 11461
		1) Release 068 had a problem with the MARM custom DLLs,
sl@0
 11462
		   which prevented the LEDs from flashing. Now OK.
sl@0
 11463
sl@0
 11464
3) Graham
sl@0
 11465
		1) When the kernel faulted, it used to continue to run and
sl@0
 11466
		   possibly do all sorts of bad things.
sl@0
 11467
		   For the time being, we just print a helpful message to
sl@0
 11468
		   COMM1 and loop forever. (In the future we will reset.)
sl@0
 11469
sl@0
 11470
sl@0
 11471
Version 0.01.068
sl@0
 11472
================
sl@0
 11473
(Made by Jane, September 23rd 1996)
sl@0
 11474
sl@0
 11475
NOTE - T_RDRV failed on certain bananas. We think that it is due
sl@0
 11476
to a problem with the hardware - the door open interrupt is not
sl@0
 11477
asserted for these fruit.
sl@0
 11478
sl@0
 11479
1) Graham
sl@0
 11480
		1) Removed nocallentrypoint declarations in MARM .OBY files
sl@0
 11481
		   and added  dll= appropriately.
sl@0
 11482
sl@0
 11483
		2) Fixed HA-219 which caused the digitiser to stop working
sl@0
 11484
		   after the sound driver had been used.
sl@0
 11485
sl@0
 11486
		3) Added a system of cumulative inertia into the digitiser.
sl@0
 11487
		   Consider a system where a physical movement of the pen
sl@0
 11488
		   produces an actual Pen Move Event only if it has moved
sl@0
 11489
		   more than 1 pixel. Call this an inertia of value 1. So,
sl@0
 11490
		   if the digitiser has an inertia value of 3, then it only
sl@0
 11491
		   produces Pen Move Events when a movement of greater than
sl@0
 11492
		   3 pixels in any direction has occured. The system I am
sl@0
 11493
		   now experimenting with is one where the longer the pen
sl@0
 11494
		   stays in one place, the greater inertia it acquires. So,
sl@0
 11495
		   normally, with the pen moving all the time, no inertia
sl@0
 11496
		   effects are apparent. But, when the pen comes to rest,
sl@0
 11497
		   then the inertia begins to increase by one unit for every
sl@0
 11498
		   1/4s that it remains within its 'inert event horizon'. It
sl@0
 11499
		   is currently set so that the maximum possible inertia
sl@0
 11500
		   value is 5. Clearly, I can't tell if this is a valuable
sl@0
 11501
		   system until some higher level apps start running with
sl@0
 11502
		   this O/S. So, feedback on this subject is especially
sl@0
 11503
		   welcome.
sl@0
 11504
sl@0
 11505
		4) Speculative fix for HA-217 ('Curtains').
sl@0
 11506
sl@0
 11507
		5) Exported Hal::DisableIrqsToLevel1() et al. from the kernel
sl@0
 11508
sl@0
 11509
		6) Reworked the kernel exception interface (TException,Exc).
sl@0
 11510
sl@0
 11511
2) SimonB
sl@0
 11512
		1) Removal of F32 code from the EWINC library
sl@0
 11513
sl@0
 11514
		1) Addition of a new TWINC directory with MAK files for building all the code in TBAS. (The CPP files
sl@0
 11515
		   used are the ones in TBAS). The header files from TBAS have been copied into TWINC, but this could
sl@0
 11516
		   be rectified by changing the #includes to reference "..\TBAS\..."
sl@0
 11517
sl@0
 11518
		1) Addition of bld and run cmd for building WINC libs, and test code. Also for running the test code.
sl@0
 11519
sl@0
 11520
		1) Changes to MNT additional verbs
sl@0
 11521
sl@0
 11522
					winc            build the libarries
sl@0
 11523
					wincall
sl@0
 11524
					wincdeb
sl@0
 11525
					wincrel
sl@0
 11526
					wincudeb
sl@0
 11527
					wincurel
sl@0
 11528
					btwinc          build the test code
sl@0
 11529
					btwincall
sl@0
 11530
					btwincdeb
sl@0
 11531
					btwincrel
sl@0
 11532
					btwincudeb
sl@0
 11533
					btwincurel
sl@0
 11534
					rtwinc          Run the test code
sl@0
 11535
					rtwincall
sl@0
 11536
					rtwincdeb
sl@0
 11537
					rtwincrel
sl@0
 11538
					rtwincudeb
sl@0
 11539
					trwincurel
sl@0
 11540
sl@0
 11541
sl@0
 11542
		1) Changes to EWINC MAK files and build cmd file to get Unicode variants to build and work. May still
sl@0
 11543
		   need some more changes - (the mak files were completely stuffed with release builds compiling debug
sl@0
 11544
		   code). It may be worth recreating all mak files again froms scratch
sl@0
 11545
sl@0
 11546
		1) Changes to E32Initialise. With the file server in a separate Dll, the init code follows the WINS
sl@0
 11547
		   init code method for the file server.
sl@0
 11548
sl@0
 11549
3) Jane
sl@0
 11550
		1) Added new RThread::Create which takes an open RLibrary, as discussed in EON defects -
sl@0
 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);
sl@0
 11552
		   This function takes all possible parameters so that a thread with an open library
sl@0
 11553
		   handle can be created in another process, sharing a heap etc. (If the RLibrary*, RProcess*, RHeap*
sl@0
 11554
		   are not required, just pass in NULL as usual.)
sl@0
 11555
sl@0
 11556
		   The entrypoints of the library are called before the thread's entrypoint.
sl@0
 11557
sl@0
 11558
		   NOTE - obviously the thread cannot access the handle it has on the library, so the library
sl@0
 11559
		   can only get its final close when the thread dies.
sl@0
 11560
sl@0
 11561
		2) Fixed a bug to do with stack chunk creation. Improved the naming scheme for chunks.
sl@0
 11562
sl@0
 11563
		3) Various E32 Proposals
sl@0
 11564
			- Processes unmarked by default
sl@0
 11565
			- Queues don't allow shallow copies
sl@0
 11566
			- CActive functions const
sl@0
 11567
			- RTest Console() accessor for iConsole
sl@0
 11568
sl@0
 11569
		4) Improved the kernel server protection method, which was becoming more unsafe
sl@0
 11570
		   with the addition of each new way of shooting a client thread. (Now if the kernel
sl@0
 11571
		   server shoots a client, it should always leave KErrKernelServerLeave, after
sl@0
 11572
		   stashing a suitable error to shoot the client with in K::ClientErrorCode)
sl@0
 11573
sl@0
 11574
		5) Fixed a few situations where the kernel was shooting itself rather than the client.
sl@0
 11575
sl@0
 11576
		6) Pervasive change, such that the Owmer() of a CObject - used in forming the
sl@0
 11577
		   name - is correct for thread-owned objects.
sl@0
 11578
		   If a semaphore A is owned by thread B in process C its name is now C::B::A
sl@0
 11579
		   If it was owned by process C directly it would be called C::A
sl@0
 11580
sl@0
 11581
4) SteveG
sl@0
 11582
		1) Implemented control of the LEDs on the racks and P1. It is now possible to get your
sl@0
 11583
		   red alarm LED on your banana to flash, but it will flash green. Please note that this
sl@0
 11584
		   is not an E32 software bug
sl@0
 11585
sl@0
 11586
		2) Changed all occurances of TheSuperPage().iTotalRamSize to TheSuperPage().iMaxFreeRam,
sl@0
 11587
		   and added iTotalRamSize and iTotalRomSize to the SuperPage. iRamDriveSize is now
sl@0
 11588
		   setup correctly, and these figures will be returned properly when using UserHal::MemoryInfo
sl@0
 11589
sl@0
 11590
		3) Added ESpecialKeyBase and ESpeicalKeyCount to E32KEYS.H. Any scancode in this range passed
sl@0
 11591
		   to the keyboard translator will be passed through unaltered, and can be used for the
sl@0
 11592
		   on-screen keys facility provided by the window server
sl@0
 11593
sl@0
 11594
5) Morgan
sl@0
 11595
		1) Added RLibrary::FileName()
sl@0
 11596
		2) Corrected the key mappings for Func and Alt on the X86 build
sl@0
 11597
		3) Extended Library and Process RAM loading to share ready loaded code chunks.  RAM loaded
sl@0
 11598
		   Libraries can use ROM code chunks but currently Processes cannot.  Suitable code chunks
sl@0
 11599
		   are identified by matching their checksums.
sl@0
 11600
sl@0
 11601
5) Matthew
sl@0
 11602
		1) Implemented %lx, %ld etc for formatting TInt64s. Added TLex::Val functions for TInt64s.
sl@0
 11603
		   Removed TLex::Convert() and TLex::ConvertList().
sl@0
 11604
sl@0
 11605
		2) Given DThreads and DProcesses ids: essentially just a unique TUint. Threads and processes
sl@0
 11606
		   can be now opened by their id.
sl@0
 11607
sl@0
 11608
		3) Changed Hal::RomVersion() so that it now returns version number from the rom header on
sl@0
 11609
		   Epoc platforms.
sl@0
 11610
6) Pete
sl@0
 11611
		1) Changes to support Asci12-Rev2. (Still works with Rev1 though).
sl@0
 11612
		2) ATA Driver - Validation of partition entries in MBR now added.
sl@0
 11613
		3) ATA Driver - CHS and LBA addressing now supported (this allows us to work with Hitachi CF
sl@0
 11614
		   card).
sl@0
 11615
sl@0
 11616
7) Rog
sl@0
 11617
		1) Introduced a rack only bug into hardware handshaking for the Serial driver. To facilitate a
sl@0
 11618
		   timely E32 release the serial drivers will be re-released with C32. If you don't need h/w
sl@0
 11619
		   handshaking or can get by on WINS, these drivers are just fine.
sl@0
 11620
sl@0
 11621
Version 0.01.067
sl@0
 11622
================
sl@0
 11623
(Made by Jal, September 7th 1996)
sl@0
 11624
sl@0
 11625
1) Jane
sl@0
 11626
		1) MMU fix to do with re-allocating linear space after RAM disk
sl@0
 11627
		   has grown.
sl@0
 11628
sl@0
 11629
		2) More build and mnt fixes.
sl@0
 11630
sl@0
 11631
		3) Fixed HA-204, incorrect error given by in WINS library loading.
sl@0
 11632
sl@0
 11633
		4) Fixed HA-205, bug in RThread::Create
sl@0
 11634
sl@0
 11635
		5) Changed the Environment class, so that all environment variables are
sl@0
 11636
		   stored and compared in UPPER CASE.
sl@0
 11637
sl@0
 11638
		6) Changed ks_proc as requested by Colly so that names which are duplicates except
sl@0
 11639
		   for generation are allowed.
sl@0
 11640
sl@0
 11641
		7) Fixed HA-95, allowing the server to refer to the client thread when processing a
sl@0
 11642
		   disconnect message
sl@0
 11643
sl@0
 11644
		8) Fixed HA-211, RProcess::Open stops process from being destroyed
sl@0
 11645
sl@0
 11646
		9) Fixed HA-210, runtime checks on queues
sl@0
 11647
sl@0
 11648
		10) Implemented basic exception handling - i.e. shooting the offending thread. Fixes
sl@0
 11649
			bugs HA-137 and HA-157
sl@0
 11650
sl@0
 11651
		11) Fixed HA-212, RLibrary::Load problems after creating thread in foreign process
sl@0
 11652
sl@0
 11653
sl@0
 11654
2) Matthew
sl@0
 11655
		1) Bug fixes HA-188, HA-198 and HA-202. Also fixed a time-mangling bug on
sl@0
 11656
		   the rack, which effected relative timers due to off after more than
sl@0
 11657
		   about 30 seconds, and a bug which caused the sound LDD to panic.
sl@0
 11658
sl@0
 11659
3) SteveG
sl@0
 11660
		1) On the WINS build, F10 and F11 now send EKeySliderDown and
sl@0
 11661
		   EKeySliderUp keypresses. F12 key is now the OFF key and
sl@0
 11662
		   sends an EKeyOff keypress. The UserHal::SwitchOff() function
sl@0
 11663
		   now minimizes the WINS window, simulating switching off.
sl@0
 11664
		   Maximising the window will simulate switching on by sending
sl@0
 11665
		   a TEvent::SwitchOn. The Shell, or whoever switches off,
sl@0
 11666
		   should just look for EKeyOff and then call UserHal::SwitchOff
sl@0
 11667
		   which will then work with the correct key on all platforms
sl@0
 11668
sl@0
 11669
		2) Implemented the TTime::Set(TDesC& aString) function which
sl@0
 11670
		   allows setting or constructing a TTime from a date string
sl@0
 11671
		   in the format YYYYMMDD:HHMMSS.MMMM - any part of the string
sl@0
 11672
		   may be omitted, but either the dot or colon must be present.
sl@0
 11673
		   Any parts of the string which are omitted are zero'd.
sl@0
 11674
sl@0
 11675
		3) Added suitable values to be returned by the WINS memory
sl@0
 11676
		   functions in UserHal::MemoryInfo()
sl@0
 11677
sl@0
 11678
		4) Fixed problem with supplying long category names when
sl@0
 11679
		   panicing a thread - only the first 16 characters used
sl@0
 11680
sl@0
 11681
4) Morgan
sl@0
 11682
		1) Fixed HA-191 by not passing the placement new as an argument to
sl@0
 11683
		   CArrayFixBase::ResizeL.
sl@0
 11684
		   Fixed HA-187.  Under WINS Mutex are signaled in thread CleanUp code
sl@0
 11685
		   rather than in the DPlatThread destructor.
sl@0
 11686
		   Fixed a Bug in Time::FormatL to prevent the %C directive overflowing
sl@0
 11687
		   the descriptor and causing a panic.
sl@0
 11688
sl@0
 11689
		2) CArray???::FindIsq returns an index of 0 if the array is empty.
sl@0
 11690
sl@0
 11691
		3) User::IsRomAddress is back.  Again.
sl@0
 11692
sl@0
 11693
sl@0
 11694
Version 0.01.066
sl@0
 11695
================
sl@0
 11696
(Made by Jane, August 23rd 1996)
sl@0
 11697
sl@0
 11698
1) SteveG
sl@0
 11699
		1) Re-fixed bug in ARM Mem::Copy and Mem::Move, which got
sl@0
 11700
		   lost prior to releasing 0.01.065. Refixed the test
sl@0
 11701
		   software T_FUNC.CPP as well. The bug meant that
sl@0
 11702
		   Mem::Copy and Mem::Move didn't return the correct
sl@0
 11703
		   address if the source and target were the same
sl@0
 11704
sl@0
 11705
		2) Debugger fixed to take into account the changes in the
sl@0
 11706
		   way threads start - the change meant the debugger no
sl@0
 11707
		   longer set a breakpoint at the start of the thread
sl@0
 11708
		   when starting a debug session
sl@0
 11709
sl@0
 11710
2) Matthew
sl@0
 11711
		1) Fixes to sound LDD and arm PDD.
sl@0
 11712
sl@0
 11713
3) Jane
sl@0
 11714
		1) Various build fixes, especially to WINC
sl@0
 11715
sl@0
 11716
sl@0
 11717
Version 0.01.065
sl@0
 11718
================
sl@0
 11719
(Made by Jane and Jal, 17th August 1996)
sl@0
 11720
sl@0
 11721
IMPORTANT NOTE:
sl@0
 11722
sl@0
 11723
To avoid delaying the chain below us, this version of E32 has been released with
sl@0
 11724
2 known bugs and one possible bug. They are as follows...
sl@0
 11725
sl@0
 11726
sl@0
 11727
1. Problems on ARM build when the RAM drive grows beyond 1 Meg in size. To avoid this
sl@0
 11728
   bug, this release of E32/F32 implements a maximum size of 1 Meg for the RAM drive.
sl@0
 11729
sl@0
 11730
2. T_SOUND fails on the ARM platform.
sl@0
 11731
sl@0
 11732
3. T_CPER (CPeriodic test) fails on EPOC platforms. However, I believe this is not a bug
sl@0
 11733
   - Graham fixed the timers but the test code is out of date.
sl@0
 11734
sl@0
 11735
4. There are WINC test code problems which aren't worth delaying the release for.
sl@0
 11736
sl@0
 11737
1) Graham
sl@0
 11738
		1) Added microseconds to the system time. This required a
sl@0
 11739
		   fix to TEiger::RtcTickCount() to counteract an Eiger
sl@0
 11740
		   hardware anomoly - the SYSFLG 64ths do not roll over to
sl@0
 11741
		   zero at the same time as the RTC rolls over its seconds.
sl@0
 11742
		   It does this on the half-second instead. Enhanced T_TIMER
sl@0
 11743
		   to test this roll-over effect.
sl@0
 11744
sl@0
 11745
		2) Changed the MUTATBLE errors in E32DEF.H
sl@0
 11746
sl@0
 11747
		3) Updated EMARM.REL to include the P1 variant device drivers
sl@0
 11748
sl@0
 11749
		4) Fixed warnings in T_BUF.CPP.
sl@0
 11750
sl@0
 11751
		5) Fixed intrnal TTickLink services to work with microseconds
sl@0
 11752
		   instead of tenths. In order to help device-driver writers,
sl@0
 11753
		   I have changed the name of the functions to
sl@0
 11754
		   PeriodicInMicroSeconds and OneShotInMicroSeconds.
sl@0
 11755
sl@0
 11756
		6) IMPORTANT
sl@0
 11757
sl@0
 11758
		I have changed the way in which the timing services in E32 work.
sl@0
 11759
		Although the changes mean that more of the underlying mechanism
sl@0
 11760
		is exposed, it is hoped that this policy will result in more
sl@0
 11761
		programmer-friendly services once the theory has been explained.
sl@0
 11762
sl@0
 11763
		The theory:
sl@0
 11764
sl@0
 11765
		The timing services are based upon the regular pulse that animates
sl@0
 11766
		the operating system. The time between pulses is called the tick
sl@0
 11767
		period and this will vary according to the platform being used.
sl@0
 11768
		The tick period for WINS, for instance, is 100000 uS, while for
sl@0
 11769
		MARM it is 15625 uS.
sl@0
 11770
sl@0
 11771
		A new service has been introduced which enables the programmer
sl@0
 11772
		to determine the length of the tick period in microseconds:
sl@0
 11773
sl@0
 11774
	TInt UserHal::TickPeriod(TTimeIntervalMicroSeconds32& aPeriod)
sl@0
 11775
sl@0
 11776
		But, for the purposes of the subsequent discussion, I will call
sl@0
 11777
		this length of time T.
sl@0
 11778
sl@0
 11779
		So, we have the following situation:
sl@0
 11780
sl@0
 11781
	---|-----------|-----------|-----------|-----------|--
sl@0
 11782
	   <----------->
sl@0
 11783
			 T
sl@0
 11784
sl@0
 11785
		At any point in time, a program may request a timing service
sl@0
 11786
		such as User::After(x). This function should return x uS later.
sl@0
 11787
		Let us show this on the diagram and introduce the term y.
sl@0
 11788
sl@0
 11789
							User::After(x)
sl@0
 11790
									 |
sl@0
 11791
	---|-----------|-----------|-----+-----|-----------|--
sl@0
 11792
	   <----------->                 <----->
sl@0
 11793
			 T                          y
sl@0
 11794
sl@0
 11795
		So, y represents the amount of time between the timing service
sl@0
 11796
		being requested and the next system tick. It is clear that y may
sl@0
 11797
		be any duration of time less than or equal to T.
sl@0
 11798
sl@0
 11799
		Let's explore the behaviour of User::After(x) for a range of
sl@0
 11800
		different values of x.
sl@0
 11801
sl@0
 11802
		x=0
sl@0
 11803
		---
sl@0
 11804
		This will return on the next system tick. So, if you ask
sl@0
 11805
		for 0 uS, you actually get y uS.
sl@0
 11806
sl@0
 11807
							User::After(0)     Completes
sl@0
 11808
									 |     |
sl@0
 11809
	---|-----------|-----------|-----+-----|-----------|--
sl@0
 11810
	   <----------->                 <----->
sl@0
 11811
			 T                          y  |
sl@0
 11812
sl@0
 11813
		x<T
sl@0
 11814
		---
sl@0
 11815
		This will also return on the next system tick. So, if you
sl@0
 11816
		ask for T-1 uS, you actually get y uS.
sl@0
 11817
sl@0
 11818
						  User::After(T-1)     Completes
sl@0
 11819
									 |     |
sl@0
 11820
	---|-----------|-----------|-----+-----|-----------|--
sl@0
 11821
	   <----------->                 <----->
sl@0
 11822
			 T                          y  |
sl@0
 11823
sl@0
 11824
		x=T
sl@0
 11825
		---
sl@0
 11826
		This will cause a wait of 1 tick to be set up. So, if you
sl@0
 11827
		ask for T uS, you actually get y+T uS.
sl@0
 11828
sl@0
 11829
							User::After(T)                 Completes
sl@0
 11830
									 |                 |
sl@0
 11831
	---|-----------|-----------|-----+-----|-----------|--
sl@0
 11832
	   <----------->                 <----->
sl@0
 11833
			 T                          y  |
sl@0
 11834
sl@0
 11835
		x=2T-1
sl@0
 11836
		------
sl@0
 11837
		Just to expose the workings a little more. 2T-1 gets divided
sl@0
 11838
		by T to see how many ticks to wait. Any remainder is discarded.
sl@0
 11839
		Now, in integer maths, (2T-1)/T = 1. So, we set up a wait of
sl@0
 11840
		1 tick. So, if you ask for 2T-1 uS, you actually get y+T uS.
sl@0
 11841
sl@0
 11842
						 User::After(2T-1)                 Completes
sl@0
 11843
									 |                 |
sl@0
 11844
	---|-----------|-----------|-----+-----|-----------|--
sl@0
 11845
	   <----------->                 <----->
sl@0
 11846
			 T                          y  |
sl@0
 11847
sl@0
 11848
		x=2T
sl@0
 11849
		----
sl@0
 11850
		2T/T = 2. So, we set up a wait of 2 ticks. So, if you ask
sl@0
 11851
		for 2T uS, you actually get y+2T uS.
sl@0
 11852
sl@0
 11853
						   User::After(2T)                     Completes
sl@0
 11854
									 |                             |
sl@0
 11855
	---|-----------|-----------|-----+-----|-----------|-----------|--
sl@0
 11856
	   <----------->                 <----->
sl@0
 11857
			 T                          y  |
sl@0
 11858
sl@0
 11859
sl@0
 11860
		Notes
sl@0
 11861
		-----
sl@0
 11862
sl@0
 11863
		a. It is a slightly irksome feature of this system that if you
sl@0
 11864
		   ask for x uS, you may end up waiting less time than x, or you
sl@0
 11865
		   might end up waiting more time than x. It all depends on
sl@0
 11866
		   the value of the 'wobble factor', y.
sl@0
 11867
sl@0
 11868
		   As mentioned above, if you ask for T-1 uS, you actually
sl@0
 11869
		   get y uS. Now y could be, in fact it will in all probability
sl@0
 11870
		   be, significantly less than T-1. On the other hand, if you ask
sl@0
 11871
		   for T uS, you get T+y uS, which means you will be waiting a
sl@0
 11872
		   longer time than that requested.
sl@0
 11873
sl@0
 11874
		   It is impossible, then, for the operating system using this
sl@0
 11875
		   system to guarantee that it will wait at least as long as the
sl@0
 11876
		   period of time requested. If this is the sort of guarantee you
sl@0
 11877
		   need, then you will have to arrange it yourself by
sl@0
 11878
		   adding (T-1) to your request. You can determine T using the
sl@0
 11879
		   UserHal function mentioned above.
sl@0
 11880
sl@0
 11881
		b. In some situations the value of y is known. Consider a
sl@0
 11882
		   periodic timer. After the first callback, you know that
sl@0
 11883
		   you are now synchronised to the system tick and that y
sl@0
 11884
		   is just less than T. The 'wobble factor', in this situation,
sl@0
 11885
		   can be taken allowed for by the programmer. So, if you start
sl@0
 11886
		   a CPeriodic with a delay of 0 uS and an interval of 0 uS,
sl@0
 11887
		   you will get one which immediately starts calling back on
sl@0
 11888
		   every system tick.
sl@0
 11889
sl@0
 11890
		c. Timing test programs commonly want to synchronise to the
sl@0
 11891
		   system tick in order to remove the 'wobble factor' from
sl@0
 11892
		   their calculations. This can now be achieved using User::After(0).
sl@0
 11893
sl@0
 11894
sl@0
 11895
2) Jane
sl@0
 11896
		1) Added new User class layout from Martin Tasker.
sl@0
 11897
sl@0
 11898
		2) Re-fixed WINS RDebug.Print (HA-170) which had become un-edited after
sl@0
 11899
		   I put it in!
sl@0
 11900
sl@0
 11901
		3) Added CObjectIx::Count() to return the total number of
sl@0
 11902
		   objects in a CObjectIx.
sl@0
 11903
sl@0
 11904
		4) Added RThread::HandleCount(TInt& aProcessHandleCount, TInt& aThreadHandleCount) const;
sl@0
 11905
		   This returns the total number of handles open in a thread and
sl@0
 11906
		   its owning process.
sl@0
 11907
sl@0
 11908
		5) Added RHandleBase::HandleInfo(THandleInfo* anInfo);
sl@0
 11909
		   This function fills in a THandleInfo structure with
sl@0
 11910
		   information about the current handle.
sl@0
 11911
sl@0
 11912
		   class THandleInfo
sl@0
 11913
				{
sl@0
 11914
		   public:
sl@0
 11915
				TInt iNumOpenInProcess;
sl@0
 11916
				TInt iNumOpenInThread;
sl@0
 11917
				TInt iNumProcesses;
sl@0
 11918
				TInt iNumThreads;
sl@0
 11919
				};
sl@0
 11920
sl@0
 11921
		   iNumOpenInProcess = the number of times the object given by
sl@0
 11922
			   the handle is open in this process.
sl@0
 11923
		   iNumOpenInThread = the number of times the object given by
sl@0
 11924
			   the handle is open in this thread.
sl@0
 11925
		   iNumProcesses = the number of processes which have a handle on the object.
sl@0
 11926
		   iNumThreads = the number of threads which have a handle on the object.
sl@0
 11927
sl@0
 11928
		 6) Added an extra defaulted parameter to many RHandleBase derived classes' Create calls.
sl@0
 11929
			For example, from RMutex...
sl@0
 11930
			TInt CreateLocal(TOwnerType aType=EOwnerProcess);
sl@0
 11931
			TInt CreateGlobal(const TDesC &aName,TOwnerType aType=EOwnerProcess);
sl@0
 11932
sl@0
 11933
			The owner type specifies whether the handle created is
sl@0
 11934
			thread or process relative. (The default is process-relative
sl@0
 11935
			as before.)
sl@0
 11936
			Process-relative handles may be passed between threads in
sl@0
 11937
			the same process without duplication. The handles are held
sl@0
 11938
			in the process, and are not closed when the thread dies, so
sl@0
 11939
			the objects will hang around until the process dies.
sl@0
 11940
			Thread-relative handles need to be duplicated between
sl@0
 11941
			threads in the same process, but the handles will be closed
sl@0
 11942
			when the thread dies.
sl@0
 11943
sl@0
 11944
			IMPORTANT NOTE 1
sl@0
 11945
			Due to design considerations, RLibraries and RTimers are
sl@0
 11946
			now always thread relative handles. You will need to
sl@0
 11947
			duplicate them if they are shared between threads. RLibraries
sl@0
 11948
			should now unload when their access counts become 0.
sl@0
 11949
sl@0
 11950
			Fixes bug HA-170
sl@0
 11951
sl@0
 11952
		 7) Fixed X86 crash on test failure.
sl@0
 11953
sl@0
 11954
		 8) Fixed HA-177 - panicking a dead thread kills the caller.
sl@0
 11955
sl@0
 11956
		 9) Fixed HA-180 - panic enum was incorrect.
sl@0
 11957
sl@0
 11958
		10) Dll loading changes.
sl@0
 11959
sl@0
 11960
			RLibrary load api becomes...
sl@0
 11961
			TInt Load(const TDesC &aFileName,const TDesC &aPath=_L(""));
sl@0
 11962
sl@0
 11963
			If aFileName is a full filename with path, then aPath will be ignored,
sl@0
 11964
			and the only load attempted will be that of aFileName. If the dll is not
sl@0
 11965
			at the specified location, the load will fail.
sl@0
 11966
			If aFileName is just a rootname, (e.g. _L("ECONS.DLL")), then the dll
sl@0
 11967
			will be searched for in the following order - specifed path, followed by
sl@0
 11968
			the system directory on each attached drive.
sl@0
 11969
sl@0
 11970
			IMPORTANT - old calls with the extension specified as the second parameter
sl@0
 11971
			e.g. lib.Load(_L("MYDLL"),_L(".DLL")) are now likely to fail as the second
sl@0
 11972
			parameter is now interpreted as a path.
sl@0
 11973
sl@0
 11974
		11) Dll entrypoints
sl@0
 11975
			For the first time under EPOC, DLL entrypoints are now called.
sl@0
 11976
sl@0
 11977
			When a process is loaded, all the DLLs to which it is statically linked
sl@0
 11978
			get their entrypoints called with the value EDllThreadAttach. (This call
sl@0
 11979
			is on behalf of and in the context of the main thread.)
sl@0
 11980
			When a new thread is created in the process, the statically
sl@0
 11981
			linked DLLs' entrypoints are again called with EDllThreadAttach in the
sl@0
 11982
			context of the newly created thread.
sl@0
 11983
			When each thread in the process dies, the entrypoints are called with
sl@0
 11984
			EDllThreadDetach in the context of that thread.
sl@0
 11985
sl@0
 11986
			Unlike Windows NT, I do not call entrypoints with EDllProcessAttach and
sl@0
 11987
			EDllProcessDetach. This is because the function pair Dll::GlobalAlloc()
sl@0
 11988
			and Dll::GlobalAllocated (currently unimplemented) allow the DLL to
sl@0
 11989
			discover its first ever call, if necessary. This is though to be more
sl@0
 11990
			useful in our system then knowing a first call per process. Similarly
sl@0
 11991
			Dll::SetTls() and Dll::Tls() enable the DLL to discover its first load
sl@0
 11992
			within a thread.
sl@0
 11993
sl@0
 11994
			When a thread loads a DLL dynamically via RLibrary::Load(), the DLL's
sl@0
 11995
			entrypoint is called, if and only if this is the first load of this DLL
sl@0
 11996
			within the thread. (So if a process is statically linked to FRED.DLL and then
sl@0
 11997
			a thread does an RLibrary::Load of FRED.DLL, then FRED's entrypoint is not called
sl@0
 11998
			in response to this load.)
sl@0
 11999
			The entrypoint is called with the value EDllThreadAttach in the context of the
sl@0
 12000
			thread loading the DLL.
sl@0
 12001
sl@0
 12002
			The above situation is further complicated by DLL's themselves being statically
sl@0
 12003
			linked to other DLLs. When a DLL is loaded, I make a list of unique DLL entrypoints
sl@0
 12004
			in the statically linked chain, and call each of them once only. So if DLL
sl@0
 12005
			A is linked to DLLs B, C and D, and then B is linked to X, C and Y, and D is
sl@0
 12006
			linked to B, C, and Z, then the entrypoints for A, B, C, D, X, Y and Z are called
sl@0
 12007
			once each when A is loaded.
sl@0
 12008
			If A were statically linked to just B and C, then when it was loaded just the
sl@0
 12009
			entrypoints for A, B, C, X, Y would be called. If the same thread then went
sl@0
 12010
			on to load D, then the entrypoints which had not already been loaded in that
sl@0
 12011
			thread would be called - i.e. D and Z.
sl@0
 12012
sl@0
 12013
			All this DLL entrypoint calling can get very time-consuming in the case of
sl@0
 12014
			many of the DLLs in the ROM which have no need for entrypoints to be called.
sl@0
 12015
			In this case, add "nocallentrypoint" after the DLL's specification line in the
sl@0
 12016
			obeyfile, and no entrypoints will be called for that DLL or any DLLs below it
sl@0
 12017
			in the static linkage chain.
sl@0
 12018
			All drivers should have "nocallentrypoint" specifiers.
sl@0
 12019
sl@0
 12020
			E.g. primary=\xxx\ekernd.exe sys\kernel.exe nocallentrypoint
sl@0
 12021
sl@0
 12022
sl@0
 12023
			IMPORTANT NOTE 2
sl@0
 12024
sl@0
 12025
			Although for many of the files "nocallentrypoint" is optional, it is compulsory for
sl@0
 12026
			kernel.exe and efile.exe. Bad things happen if the kernel's entrypoint is called
sl@0
 12027
			when something which is linked to it is loaded, and the file server doesn't take
sl@0
 12028
			too kindly to it either!
sl@0
 12029
			Also, note that the name of efsrv.dll has changed in the obeyfile. It's probably
sl@0
 12030
			best to cut and paste from the released E32 obeyfiles.
sl@0
 12031
sl@0
 12032
			There are new versions of ROMBUILD & PETRAN which support the above obeyfile
sl@0
 12033
			changes and new structures necessary for the calling of DLL entrypoints.
sl@0
 12034
sl@0
 12035
		12) Due to the new directory scheme, it has been possible to remove
sl@0
 12036
			RLibrary::LoadExact. RLibrary::Load now does a load exact - i.e. it does no
sl@0
 12037
			name mangling on the name passed in as a parameter.
sl@0
 12038
sl@0
 12039
			RLoader::LoadExact has been renamed to RLoader::Load. This will affect you
sl@0
 12040
			if you have one of those "mini-loaders" for WINS which allows you to live
sl@0
 12041
			without the file server.
sl@0
 12042
sl@0
 12043
sl@0
 12044
3) SteveG
sl@0
 12045
		1) Altered all builds of E32 to use the new directory structure \Epoc32\Build and
sl@0
 12046
		   \Epoc32\Release
sl@0
 12047
sl@0
 12048
		2) Added SetModifierState function to KeyTranslator:
sl@0
 12049
sl@0
 12050
		   TInt SetModifierState(TEventModifier aModifier,TModifierState aState)
sl@0
 12051
sl@0
 12052
		   which alters the supplied modifier according to the supplied state.
sl@0
 12053
		   TModifierState is defined in E32Keys.h and is one of ETurnOnModifier,
sl@0
 12054
		   ETurnOffModifier or EToggleModifier.
sl@0
 12055
sl@0
 12056
		3) Fixed bug in KYTRAN where left and right modifiers were not being set
sl@0
 12057
sl@0
 12058
		4) Implimented DigitizerCalibration functions, and wrote simple text shell
sl@0
 12059
		   calibration program. A calibrator will need to be written as an Eikon app.
sl@0
 12060
sl@0
 12061
		   A calibration program should:
sl@0
 12062
sl@0
 12063
		   Call UserHal::CalibrationPoints(TCalibration& aCalibration) which will return
sl@0
 12064
		   three screen coordinates at which points should be plotted. The user should
sl@0
 12065
		   touch these three points, and the values returned by the digitizer for the points
sl@0
 12066
		   actually touched should then be returned to
sl@0
 12067
		   UserHal::SetXYInputCalibration(TCalibration aCalibration)
sl@0
 12068
sl@0
 12069
		   Note that a TCalibration actually has 4 points - the 4th is ignored by
sl@0
 12070
		   SetXYInputCalibration
sl@0
 12071
sl@0
 12072
		   Suitable default calibration values incorporated into each ARM variant, so
sl@0
 12073
		   the calibration on your yellow jobbie should be more or less correct without
sl@0
 12074
		   calibrating. If yours is wildly off, please let us know
sl@0
 12075
sl@0
 12076
		5) Added profiling support to all platforms, and increased the number of nested
sl@0
 12077
		   profiles to 64. You can specify a range of profiles to clear/read results of.
sl@0
 12078
		   Results returned in microseconds, but only recorded at tick resolution. This
sl@0
 12079
		   avoids changing the API when profiles are measured more accurately.
sl@0
 12080
sl@0
 12081
		   Using profiles:
sl@0
 12082
sl@0
 12083
		   Decide on the profile numbers you are going to use, between 0 and 63. You can
sl@0
 12084
		   use any of them, unless someone else is using some in the same ROM build.
sl@0
 12085
sl@0
 12086
		   Reset the profiles you are using, by:
sl@0
 12087
sl@0
 12088
		   RDebug::ProfileReset(aStart,aCount);
sl@0
 12089
sl@0
 12090
		   which resets aCount profiles starting from profile number aStart.
sl@0
 12091
sl@0
 12092
		   Surround the code with __PROFILE_START(n) and __PROFILE_END(n) where n is
sl@0
 12093
		   a number of your choice between 0 and 63 inclusive. You can nest the profiles.
sl@0
 12094
sl@0
 12095
		   Return the results using:
sl@0
 12096
sl@0
 12097
		   TProfile profile[n]; // n is the number of results you are reading
sl@0
 12098
sl@0
 12099
		   RDebug::ProfileResults(&profile[0],aStart,aCount);
sl@0
 12100
sl@0
 12101
		   which writes the results of aCount profiles starting with profile number
sl@0
 12102
		   aStart into your profile array.
sl@0
 12103
sl@0
 12104
		   TProfile is currently defined as:
sl@0
 12105
sl@0
 12106
		   class TProfile
sl@0
 12107
			   {
sl@0
 12108
			   TInt iTime;
sl@0
 12109
			   TInt iCount;
sl@0
 12110
			   };
sl@0
 12111
sl@0
 12112
		   You need to include E32SVR.H in your code to use profiles
sl@0
 12113
sl@0
 12114
		6) Moved the keystroke data dll to the variant level, allowing
sl@0
 12115
		   different keyboard layouts for each implementation. Changed
sl@0
 12116
		   the P1 version to give correct keystrokes and modifiers on the
sl@0
 12117
		   yellow jobbies.
sl@0
 12118
sl@0
 12119
		   On the real Proteas:
sl@0
 12120
			   Fn sets EModifierLeftFunc and EModifierFunc
sl@0
 12121
			   Menu sets EModifierLeftAlt and EModifierAlt
sl@0
 12122
			   Fn-Esc sends an EKeyOff keypress
sl@0
 12123
			   Fn-M sends an EKeyDecContrast keypress
sl@0
 12124
			   Fn-, sends an EKeyIncContrast keypress
sl@0
 12125
sl@0
 12126
		   On B and C racks:
sl@0
 12127
			   Alt sets EModifierLeftAlt and EModifierAlt
sl@0
 12128
			   Alt-Esc sends EKeyOff
sl@0
 12129
			   Alt-, sends EKeyDecContrast
sl@0
 12130
			   Alt-. sends EKeyIncContrast
sl@0
 12131
sl@0
 12132
		   On WINS:
sl@0
 12133
			   Left Alt sets EModifierLeftAlt and EModifierAlt
sl@0
 12134
			   Right Alt sets EModifierFunc and EModifierLeftCtrl
sl@0
 12135
					and EModiiferCtrl (the setting of Ctrl is a Windows
sl@0
 12136
					funny and can't be prevented AFAIK)
sl@0
 12137
sl@0
 12138
sl@0
 12139
		7) Fixed bug with ARM coded Mem::Copy and Mem::Move where it
sl@0
 12140
		   returned the wrong value if the source and targets were the same
sl@0
 12141
sl@0
 12142
sl@0
 12143
4) AdamG
sl@0
 12144
		1) Much of ECOMM re-written to speed up data paths and fix all known serial driver
sl@0
 12145
		   bugs.
sl@0
 12146
sl@0
 12147
		2) Implemented reference counting of interrupts in all serial PDDs for all hardware
sl@0
 12148
		   and platform variants.
sl@0
 12149
sl@0
 12150
		3) Added use of NT Critical sections to WINS Serial PDD to eliminate multiple
sl@0
 12151
		   completion bugs.
sl@0
 12152
sl@0
 12153
		4) Corrected signal polarity in all MARM serial PDDs.
sl@0
 12154
sl@0
 12155
5) Matthew
sl@0
 12156
		1) Changes to TLocale.
sl@0
 12157
		   Most importantly there are now four date separators and four time separators, one
sl@0
 12158
		   for the beginning, one for the end and two potentially different internal
sl@0
 12159
		   separators. The convention is that the NULL character represents no separator.
sl@0
 12160
		   This has had a knock on effect on the TTime::FormatL() function: now '%:0' means
sl@0
 12161
		   first time separator, '%/3' means the forth date separator etc.
sl@0
 12162
sl@0
 12163
		   Additionally there is now an AmPmSymbolPosition indicator, and different distance
sl@0
 12164
		   units for different contexts: one general and two for short/long distances.
sl@0
 12165
sl@0
 12166
		2) Added an RChangeNotifier class, for notifying users of global changes. At the
sl@0
 12167
		   moment changes to TLocale and midnight crossover are the only things which are
sl@0
 12168
		   notified.
sl@0
 12169
sl@0
 12170
		   To use call Create() and then Logon() with a TRequestStatus. This first Logon()
sl@0
 12171
		   will complete straight away with the value EChangesAll. Subsequent logons will
sl@0
 12172
		   complete next time there is a change and the status will contain a bitfield
sl@0
 12173
		   indicating what has changed.
sl@0
 12174
sl@0
 12175
		3) Made certain TInt64 functions inline. Also changed the default constructor so
sl@0
 12176
		   that it does not assign zero.
sl@0
 12177
sl@0
 12178
		4) Changed the X86 build so that getting the time returns fractions of seconds. The
sl@0
 12179
		   time is now given to the nearest tick (which occur at just over 18.2Hz on the X86).
sl@0
 12180
sl@0
 12181
		5) Added unary minus operators to TPoint and TSize.
sl@0
 12182
sl@0
 12183
		6) Changes to sound driver: Fixed a bug that caused a crash when you tried cancelling
sl@0
 12184
		   playing alarm sounds. Stopped it from panicking in Wins if you turned beeps off
sl@0
 12185
		   from the control panel.
sl@0
 12186
sl@0
 12187
6) Jal
sl@0
 12188
				1) Various internal changes to TLocalDrive and media drivers.
sl@0
 12189
sl@0
 12190
				2) Added operator[] to CObjectIx
sl@0
 12191
sl@0
 12192
7) Morgan
sl@0
 12193
		1) More RThread test code under Suspend/Resume conditions
sl@0
 12194
		   and fixes to WINS and EPOC threads.
sl@0
 12195
		2) Moved User::IsRomAddress to the file server where it is now called
sl@0
 12196
				 RFs::IsRomAddress
sl@0
 12197
		3) Added User::TickPeriod
sl@0
 12198
		4) Added physical screen size (in twips) to MachineInfo
sl@0
 12199
sl@0
 12200
8) Steve & Jane
sl@0
 12201
sl@0
 12202
	Implemented new Epoc32 directory structure (described in more detail on Notes.)
sl@0
 12203
sl@0
 12204
	All makefiles should be changed so that the intermediate files are built to
sl@0
 12205
	e.g. \Epoc32\Build\WINS\E32\Deb for exes and \Epoc32\Build\WINSD\E32\Deb for dlls.
sl@0
 12206
	The executables and dlls themselves should be built to
sl@0
 12207
	e.g. \Epoc32\Release\WINS\Deb. (NOTE - there is no "E32" in this directory path -
sl@0
 12208
	all releasables for a given build go to the same directory.)
sl@0
 12209
sl@0
 12210
	E32 mnt makework currently makes the whole Epoc32 structure - this can be used to
sl@0
 12211
	get started.
sl@0
 12212
sl@0
 12213
	mnt gettools gets tools to Epoc32\Tools. This should be added to your path from
sl@0
 12214
	the control panel. All existing paths to \tools should be removed if possible
sl@0
 12215
		- if not possible then the e32 tools themselves should be removed from any tools
sl@0
 12216
	 directories in your path.
sl@0
 12217
sl@0
 12218
	\E32SYS should also be removed from the path.
sl@0
 12219
sl@0
 12220
	The scheme whereby executables can be installed under Epoc32\WINS\Z and appear as
sl@0
 12221
	if they are under Z: is not in this release, but will be in the next one. For the
sl@0
 12222
	time being, the old scheme with romfile.bin holds.
sl@0
 12223
sl@0
 12224
	NOTE: GCC only runs from C:\Epoc32\GCC\BIN, so if you are working on a substed
sl@0
 12225
	drive, you will still need an Epoc32 directory with GCC in on C:.
sl@0
 12226
sl@0
 12227
sl@0
 12228
Version 0.01.064
sl@0
 12229
================
sl@0
 12230
(Made by Graham, 26 July '96)
sl@0
 12231
sl@0
 12232
1) Graham
sl@0
 12233
		1) Integrated WINC into MNT.CMD. This version is the first
sl@0
 12234
		   to include a release of WINC.
sl@0
 12235
sl@0
 12236
		2) Implemented a special version of RDebug::SupervisorMode
sl@0
 12237
		   which suits the purposes of REPRO.EXE
sl@0
 12238
sl@0
 12239
		3) REPRO.EXE now works. It communicates with a program called
sl@0
 12240
		   PREPRO.EXE which runs on the PC. You can get this program
sl@0
 12241
		   from S: using GETREL PTOOL PEIGER 104 in your \TOOLS
sl@0
 12242
		   directory. You may type PREPRO for command line options, but, in
sl@0
 12243
		   general, you merely type PREPRO imagefilename.IMG. The PC will
sl@0
 12244
		   then wait for the Protea to lead communications.
sl@0
 12245
sl@0
 12246
		   Now run the REPRO program on your Protea. Make sure you do
sl@0
 12247
		   not remove mains power during the reprogramming process.
sl@0
 12248
sl@0
 12249
		   Progress will be reported on the screen of the PC.
sl@0
 12250
sl@0
 12251
		   If an error is detected during the reprogramming process,
sl@0
 12252
		   then the program on the Protea will just restart - erasing
sl@0
 12253
		   all the flash chips again and then programming them.
sl@0
 12254
sl@0
 12255
		   This means that if you interrupt the PC program, no
sl@0
 12256
		   disaster will occur. If you decide you are programming the wrong
sl@0
 12257
		   image in the middle of the process, then just escape from the PC
sl@0
 12258
		   program, get the correct image on your PC and restart
sl@0
 12259
		   PREPRO with this image. By the time you have done this,
sl@0
 12260
		   the Protea will have timed out and will have decided to
sl@0
 12261
		   restart.
sl@0
 12262
sl@0
 12263
		4) Added Gillian's bug fix for TTime::MonthsFrom() and
sl@0
 12264
		   TDateTime::SetHour()
sl@0
 12265
sl@0
 12266
		5) Changed EWSRV.EXE so that it hunts for ESHELL.EXE on all
sl@0
 12267
		   drives from A: to Z:
sl@0
 12268
sl@0
 12269
		6) Upgraded BOOTROM.BIN to the new E32TOOLS(36)
sl@0
 12270
sl@0
 12271
sl@0
 12272
2) SteveG
sl@0
 12273
		1) Fixed bug in Des::AppendNumUC which converted the whole
sl@0
 12274
		   descriptor to uppercase rather than just the appended number
sl@0
 12275
sl@0
 12276
		2) Added simple profiling for ARM builds, which counts the
sl@0
 12277
		   number of times a function or section of code is executed
sl@0
 12278
		   and the time taken in ticks. A later version will be
sl@0
 12279
		   more accurate (using a 512kHz timer).
sl@0
 12280
sl@0
 12281
		   To use this, surround the section of code to be tested with:
sl@0
 12282
sl@0
 12283
		   __PROFILE_START(n)
sl@0
 12284
		   and
sl@0
 12285
		   __PROFILE_END(n)
sl@0
 12286
sl@0
 12287
		   where n is a number between 0 and 7 inclusive. You use upto
sl@0
 12288
		   8 profiles, which can be nested if necessary. You will need
sl@0
 12289
		   to use the RDebug class to access the results as follows:
sl@0
 12290
sl@0
 12291
		   TInt E32Main()
sl@0
 12292
			   {
sl@0
 12293
			   RDebug debug;
sl@0
 12294
sl@0
 12295
			   debug.ProfileReset(); // Clear readings & reset counts
sl@0
 12296
sl@0
 12297
			   __PROFILE_START(0);
sl@0
 12298
			   <test code>
sl@0
 12299
			   __PROFILE_END(0);
sl@0
 12300
sl@0
 12301
			   SProfileInfo profile;
sl@0
 12302
sl@0
 12303
			   debug.ProfileResult(profile);
sl@0
 12304
			   }
sl@0
 12305
sl@0
 12306
		   SProfileInfo and RDebug are defined in E32SVR.H.
sl@0
 12307
sl@0
 12308
		   SProfileInfo is defined as:
sl@0
 12309
sl@0
 12310
		   struct SProfileInfo
sl@0
 12311
			   {
sl@0
 12312
			   TInt iCount[8];
sl@0
 12313
			   TUint iTimes[8];
sl@0
 12314
			   }
sl@0
 12315
sl@0
 12316
		   RDebug::ProfileResults returns the counts and times
sl@0
 12317
		   for all 8 profiles, even if you are only using 1 profile.
sl@0
 12318
sl@0
 12319
		3) ARM coded the following E32 routines which were dog slow,
sl@0
 12320
		   and changed the relevent descriptor functions to use these
sl@0
 12321
		   new functions rather than their own copying code
sl@0
 12322
sl@0
 12323
		   Mem::Copy
sl@0
 12324
		   Mem::Move
sl@0
 12325
		   Mem::Swap
sl@0
 12326
		   Mem::Fill
sl@0
 12327
		   Mem::Compare
sl@0
 12328
sl@0
 12329
		   TDes8::AppendNum
sl@0
 12330
		   TDes8::AppendNumUC
sl@0
 12331
sl@0
 12332
		   and added ARM code for signed or unsigned integer divide
sl@0
 12333
		   by 2,4,5,7,8,10 and 16, which will improve the modulo
sl@0
 12334
		   function as well.
sl@0
 12335
sl@0
 12336
		   Speed improvements, TDes::AppendNum()
sl@0
 12337
sl@0
 12338
		   TDes8::AppendNum has been optimised for hex, decimal, octal
sl@0
 12339
		   and binary conversions, and is improved for all other
sl@0
 12340
		   conversions as well.
sl@0
 12341
sl@0
 12342
		   TDes::AppendNum(num,EHex)     is now  614% faster
sl@0
 12343
		   TDes::AppendNum(num,EDecimal) is now  611% faster
sl@0
 12344
		   TDes::AppendNum(num,EOctal)   is now  751% faster
sl@0
 12345
		   TDes::AppendNum(num,EBinary)  is now 1322% faster
sl@0
 12346
sl@0
 12347
		   The uppercase conversions will be the same speed as the
sl@0
 12348
		   lowercase ones, but the %age increase will be greater due
sl@0
 12349
		   to the fact that the string is worked out in uppercase rather
sl@0
 12350
		   than converting the descriptor to uppercase after the conversion,
sl@0
 12351
		   as was done in the CPP version.
sl@0
 12352
sl@0
 12353
		   Speed improvements, Mem functions
sl@0
 12354
sl@0
 12355
		   Mem::Fill is now 236% faster for word aligned buffers, and
sl@0
 12356
		   around 400% faster for non word aligned buffers, which were
sl@0
 12357
		   slow before
sl@0
 12358
sl@0
 12359
		   Mem::Swap is now 975% faster for buffers which have the same
sl@0
 12360
		   word or non-word alignment and around 160% faster for buffers
sl@0
 12361
		   which have different alignments to each other
sl@0
 12362
sl@0
 12363
		   Mem::Move and Mem::Copy are 330% faster for word aligned
sl@0
 12364
		   buffers. For buffers with the same byte alignment, the speed
sl@0
 12365
		   increase is around 600%. If the two buffers have different
sl@0
 12366
		   alignments to each other, the increase is around 157%.
sl@0
 12367
		   Mem::Move will be slightly faster than Mem::Copy as it knows
sl@0
 12368
		   the buffers are aligned by definition of the function.
sl@0
 12369
sl@0
 12370
		   Mem::Compare: no figures yet, but descriptor compares are
sl@0
 12371
		   around 220% faster, although this depends on what you're
sl@0
 12372
		   comparing
sl@0
 12373
sl@0
 12374
		   Speed improvements, Integer division
sl@0
 12375
sl@0
 12376
		   No speed measurements on this, but for divide by 16,8,4,2
sl@0
 12377
		   should be pretty big, and the divide by 10 seems to be around
sl@0
 12378
		   200% faster. Much hair missing after realising that the GCC
sl@0
 12379
		   routine __umodsi3 in UP_GCC.CPP (which returns the remainder
sl@0
 12380
		   of a division), doesn't actually 'destroy r3' as it states in
sl@0
 12381
		   the cpp file, it returns the quotient in r3, which is relied
sl@0
 12382
		   upon in divide routines which call __umodsi3.
sl@0
 12383
sl@0
 12384
		4) DeBugger. Drastic unimprovements to get a working version,
sl@0
 12385
		   which is now what we have :-)) The debugger will now not
sl@0
 12386
		   single step into EUSER or certain other DLLs, as this
sl@0
 12387
		   causes problems on the ARM build. As the ARM processor
sl@0
 12388
		   does not have any single step or trace mode, all single
sl@0
 12389
		   stepping is done by looking at the next instruction to
sl@0
 12390
		   be executed, working out where the PC will be if that
sl@0
 12391
		   instruction is executed, and setting a breakpoint at that
sl@0
 12392
		   address. Stepping into EUSER or certain other DLLs causes
sl@0
 12393
		   certain death as any thread could hit that breakpoint
sl@0
 12394
		   before the thread being stepped. Although code has been
sl@0
 12395
		   written to silently step any thread over a breakpoint
sl@0
 12396
		   it shouldn't stop at, serious problems occur if the
sl@0
 12397
		   kernel hits the breakpoint while in supervisor mode or similar.
sl@0
 12398
sl@0
 12399
		   A document on how to use GDB is on R:\E32\DOCS\GDB.DOC.
sl@0
 12400
		   Contact me on x625 if you are daring enough to try and use
sl@0
 12401
		   the most excellent GDB software.
sl@0
 12402
sl@0
 12403
		   If you wish to use the debugger, you need to include
sl@0
 12404
		   D_GDB.EXE in your ROM build. Please ensure this is AFTER
sl@0
 12405
		   euser.dll in the ROM and BEFORE anything you debug.
sl@0
 12406
		   The debugger will not single step into any part of the ROM
sl@0
 12407
		   that is before D_GDB.EXE. This is a quick 'bodge' to get
sl@0
 12408
		   around the problem mentioned above, and allows a quick
sl@0
 12409
		   method of changing what you can and can't single step
sl@0
 12410
		   into.
sl@0
 12411
sl@0
 12412
3) Rog
sl@0
 12413
		1) Added CAsyncOneShot and CAsyncCallBack. These two active object
sl@0
 12414
		derived classes are like a single use CIdle. They can also be used
sl@0
 12415
		to transfer a thread of control between two threads. Because of the
sl@0
 12416
		way they work both classes are added to the current active scheduler
sl@0
 12417
		when they are created.
sl@0
 12418
sl@0
 12419
		2) Added delta timer class. CDeltatimer is a resource efficient timer
sl@0
 12420
		based on a delta queue and a single RTimer. Requests are identified by
sl@0
 12421
		TTimerHandles which are returned from CDeltaTimer::Queue and may be
sl@0
 12422
		passed to CDeltaTimer::Remove.
sl@0
 12423
sl@0
 12424
		3) Added the fast timer driver to the source release. Due to beta
sl@0
 12425
		deadlines work on the fast timer has ceased.
sl@0
 12426
sl@0
 12427
4) Matthew
sl@0
 12428
		1) Various changes to the sound LDD and PDDs. The main change is that
sl@0
 12429
		buffering in now done entirely within the LDD.
sl@0
 12430
sl@0
 12431
		2) Renamed TTime::SetNow() to HomeTime(); TTime::SetUniversal() to
sl@0
 12432
		UniversalTime() and User::SetSystemTime() to SetHomeTime(). The
sl@0
 12433
		"system time" is now universal time ie GMT. Home time takes into
sl@0
 12434
		account any daylight saving and time zone.
sl@0
 12435
sl@0
 12436
		3) Changes to TLocale - added SpaceBeforeAmPm and changed the way
sl@0
 12437
		daylight saving is handled.
sl@0
 12438
sl@0
 12439
		4) Fixed bug in second queue which caused absolute timers to run twice
sl@0
 12440
		as fast as they should have done.
sl@0
 12441
sl@0
 12442
		5) Implemented RHeap::CompressAll().
sl@0
 12443
sl@0
 12444
5) Jane
sl@0
 12445
		1) Added changes from Steve Townsend to optimize region code.
sl@0
 12446
sl@0
 12447
		2) Added timer fixes to thread clean-up code
sl@0
 12448
sl@0
 12449
		3) Fixed the RDebug death under WINS, and implemented RDebug::Print using
sl@0
 12450
		   OutputDebugString to the debug window.
sl@0
 12451
sl@0
 12452
6) Pete		1) Pc card Controller now allows allocation of card memory chunks smaller
sl@0
 12453
		than page size.
sl@0
 12454
		2) Various omissions to Pc Card Controller now attended to.
sl@0
 12455
		3) Improvements to media change handling.
sl@0
 12456
		4) Internal ram drive supports size changing.
sl@0
 12457
		5) TLocalDrive::Format() now calls back during formatting.
sl@0
 12458
		6) TLocalDrive::Caps() returns more than just size.
sl@0
 12459
sl@0
 12460
7) Morgan	1) Thread and Process protection.
sl@0
 12461
				   The kernel, file server, null thread, supervisor are now marked as
sl@0
 12462
				   system threads/processes.  They are also Protected.
sl@0
 12463
				   Any attempt to Panic, Kill, Terminate, SetPriority on a protected thread
sl@0
 12464
				   will shoot the caller.
sl@0
 12465
				   A thread's status can be changed with:
sl@0
 12466
				   RThread::SetProtected(TBool)
sl@0
 12467
				   RThread::SetSystem(TBool)
sl@0
 12468
				   RThread::SetNotifyIfDie(TBool)       (was SetServer)
sl@0
 12469
				   RThread::SetMark(TBool)
sl@0
 12470
				   Similar functions exist for processes.
sl@0
 12471
				   The Exec functions (Set)Mark, and (Set)Server have been replaced with
sl@0
 12472
				   (Set)Flags functions for threads and processes to implement this.
sl@0
 12473
sl@0
 12474
				   T_PS.EXE displays thread and process status.
sl@0
 12475
sl@0
 12476
				2) AppendFormat and AppendFormatList changes.
sl@0
 12477
				   Both can now take a TDes[8|16]Overflow handler which is called when the
sl@0
 12478
				   formatting operation would write to the descriptor beyond its max length.
sl@0
 12479
				   When this happens and no overflow handler is supplied, the default action
sl@0
 12480
				   is to panic.
sl@0
 12481
sl@0
 12482
				3) TTime::Format has become TTime::FormatL
sl@0
 12483
sl@0
 12484
				4) Added CServer *CSession::Server() to return the session's server.
sl@0
 12485
				   Added protected member TDblQueIter<CSession *> CServer::iSessionQ, an
sl@0
 12486
				   itterator over the server's sessions.
sl@0
 12487
sl@0
 12488
				5) Name changes
sl@0
 12489
				   TTimeIntervalShortMicroSeconds -> TTimeIntervalMicroSeconds32
sl@0
 12490
				   AfterInMicroSeconds            -> After
sl@0
 12491
				   TStartup                       -> TMachineStartupType
sl@0
 12492
				   and some Americanisations
sl@0
 12493
sl@0
 12494
				6) Defined __ARRAY_NO_PTRS__
sl@0
 12495
				   and *_CAST operators
sl@0
 12496
				   Changed __ASSERT_*(c,p) to use (... p ,0)
sl@0
 12497
sl@0
 12498
				8) Removed huffman encoding/decoding from TBuf
sl@0
 12499
sl@0
 12500
				9) Implemented User::IsRomAddress(TAny *)
sl@0
 12501
sl@0
 12502
		10) Added a checksum member to TRomHeader
sl@0
 12503
sl@0
 12504
sl@0
 12505
sl@0
 12506
Version 0.01.063
sl@0
 12507
================
sl@0
 12508
(Made by Graham 3 July '96)
sl@0
 12509
sl@0
 12510
1) SteveG
sl@0
 12511
		1) Applied patches to the GCC tools and rebuilt them all, with lotsa
sl@0
 12512
	   help from Nick Twyman. You now no longer need template instantiations,
sl@0
 12513
	   and the code saving seems to be somewhere between a massive 8 and 13%,
sl@0
 12514
	   although the exact figure will vary between projects. You will need
sl@0
 12515
	   to remove all occurances of 'template class.....' from your .cpp files.
sl@0
 12516
sl@0
 12517
		2) Altered the whole of E32 to compile with the new tools, removing every
sl@0
 12518
	   'template class...' line from all the source files, altering all the
sl@0
 12519
	   MAK files etc. The new compiler/linker are a lot more nit-picky, and
sl@0
 12520
	   you will experience several warnings such as 'class xxx only defines
sl@0
 12521
	   private constructors and has no friends' or 'taking address of temporary'.
sl@0
 12522
	   Handcrafted ARM MAK files will need changing by hand, v033 of MAKTRAN will
sl@0
 12523
	   take care of any changes for you. Any handmade ARM MAK files will need
sl@0
 12524
	   changing as follows:
sl@0
 12525
sl@0
 12526
	   change all occurances of -m6 to -mcpu=arm710 -mapcs-32 and remove all
sl@0
 12527
	   instances of -fno-implicit-templates. Add in -fvtable-thunks after the
sl@0
 12528
	   -fcheck-new flag. To remove the warnings 'class xxxx only defines
sl@0
 12529
	   private constructors and has no friends' add in the flag
sl@0
 12530
	   -Wno-ctor-dtor-privacy after the -Wall flag.
sl@0
 12531
sl@0
 12532
	   If anyone has any problems with the new tools, please hesitate to
sl@0
 12533
	   contact me on x625.
sl@0
 12534
sl@0
 12535
	   3) Wrote various benchmark tests to identify areas of E32 that could
sl@0
 12536
	   improve with being written in ARM code. Start made on testing speed
sl@0
 12537
	   increases for various descriptor/memory/number functions in ARM code.
sl@0
 12538
sl@0
 12539
	   4) Debugger (Arrrrrrrrrgh :-(
sl@0
 12540
	   Source level debugging now possible to some extent running a debug
sl@0
 12541
	   .exe file from the E32 text shell (if you can bear to use Gdb).
sl@0
 12542
	   No success with an eikon app yet. Identified some problems caused
sl@0
 12543
	   by single stepping through user functions which my breakpoint
sl@0
 12544
	   handler uses (memcopy, array/descriptor functions etc). The first
sl@0
 12545
	   thing my breakpoint handler does is to clear any breakpoints in
sl@0
 12546
	   the ROM, but in doing so it cannot use any functions which might have
sl@0
 12547
	   breakpoints set in them.
sl@0
 12548
sl@0
 12549
2) Matthew
sl@0
 12550
	1) Changed RThread::Read() and Write() so that they leave on errors.
sl@0
 12551
		   This fixes HA-158 - CSession::WriteL(...) panics caller.
sl@0
 12552
sl@0
 12553
	2) Added RThread::SetInitialParameter() and RThread::GetHeap(),
sl@0
 12554
		   fixing HA-63, so you can now create an RThread, find its heap,
sl@0
 12555
		   alloc a cell in that heap, pass the pointer to that cell as the
sl@0
 12556
		   parameter to the thread and the thread can call User::Free on it.
sl@0
 12557
sl@0
 12558
	3) Made KCurrentThreadHandle have the NoClose flag set, so that
sl@0
 12559
		   Close()ing an RThread which hasn't been Create()ed is harmless.
sl@0
 12560
sl@0
 12561
	4) RThread and RProcess::LogonCancel() now return KErrGeneral if
sl@0
 12562
		   you are not logged on.
sl@0
 12563
sl@0
 12564
3) Graham
sl@0
 12565
		1) Built and released Protea Rev 1 (P1) variant of MARM.
sl@0
 12566
sl@0
 12567
		2) Made WeekNoInYear and DayNoInYear const correct.
sl@0
 12568
sl@0
 12569
		3) Removed 'API Freeze Technology'
sl@0
 12570
sl@0
 12571
		4) Added the REPRO program which must be included (In PETRAN
sl@0
 12572
		   format) in all P1 variant ROMs. NB this program does not
sl@0
 12573
		   work yet.
sl@0
 12574
sl@0
 12575
		5) Re-included Andrew Theolke's fix for Single Queues. This
sl@0
 12576
		   means that everyone will have to remove their work-arounds
sl@0
 12577
sl@0
 12578
		6) Fixed the HAL API problem with UserHal::BacklightBehaviour
sl@0
 12579
sl@0
 12580
		7) Reintroduced stack frames into the debug MARM builds of EKERN
sl@0
 12581
		   and EUSER.
sl@0
 12582
sl@0
 12583
4) Jane.
sl@0
 12584
	1) Fixed linear address allocation problem with hardware chunks.
sl@0
 12585
sl@0
 12586
	2) Stopped a false read of CMOS data/time information under X86
sl@0
 12587
		   killing the kernel.
sl@0
 12588
sl@0
 12589
	3) Fixed bug HA-150 - Rng was returning T rather than TBool
sl@0
 12590
sl@0
 12591
	4) Removed J Day hacks and old functionality for RAM loading
sl@0
 12592
		   of exes and dlls, and added support for new E32Image format etc.
sl@0
 12593
sl@0
 12594
	IMPORTANT NOTE - You must now update to the latest version of E32TOOLS. This
sl@0
 12595
		version of E32/F32 is incompatible with versions of tools pre 029.
sl@0
 12596
sl@0
 12597
5) Morgan
sl@0
 12598
	1) Added WINS Led simulation.  To turn the Leds on and off use:
sl@0
 12599
	   UserHal::ModifyLedMask(TUint aClearMask, TUint aSetMask);
sl@0
 12600
	   with the masks, KLedMaskRed1 and KLedMaskGreen1
sl@0
 12601
sl@0
 12602
	2) Removed the protea bitmap from the kernels WINS resource.
sl@0
 12603
	   The bitmap is now loaded from \E32\KPWINS\PROTEA.BMP at runtime.
sl@0
 12604
sl@0
 12605
	3) Implemented TSecondQ::SystemTimeChanged()
sl@0
 12606
sl@0
 12607
		   User::SetSystemTime() now completes all pending timers on the
sl@0
 12608
		   K::SecondQ with KErrAbort.
sl@0
 12609
sl@0
 12610
		4) Added DTimer::Abort() to support this.
sl@0
 12611
sl@0
 12612
sl@0
 12613
Version 0.01.062
sl@0
 12614
================
sl@0
 12615
(Made by Graham, 31st May 1996)
sl@0
 12616
sl@0
 12617
sl@0
 12618
1) Graham       Fixed MARM Debug mode
sl@0
 12619
sl@0
 12620
2) Pete         Added Media change handling. This allows CF cards to
sl@0
 12621
				be inserted or removed without the need to reset. All
sl@0
 12622
				that is now required is that the DOOR switch is
sl@0
 12623
				depressed during these operations.
sl@0
 12624
sl@0
 12625
				NB Do not attempt to use the CF card (or even boot up
sl@0
 12626
				a rack with a CF card inserted) if your rack does not
sl@0
 12627
				have a special capacitor fitted to counteract a fault
sl@0
 12628
				in the ETNA chip (ASIC12)
sl@0
 12629
sl@0
 12630
Version 0.01.061
sl@0
 12631
================
sl@0
 12632
(Made by Graham, 30th May 1996)
sl@0
 12633
sl@0
 12634
1) Jane
sl@0
 12635
		1. Implemented E32 Proposal: TDes8::Append(const TDesC16&)
sl@0
 12636
sl@0
 12637
		2. Implemented E32 Proposal: calling RMessage::Complete twice panics server not kernel
sl@0
 12638
sl@0
 12639
		3. Implemented E32 Proposal: priority enumeration for active objects
sl@0
 12640
sl@0
 12641
		4. Fixed bug HA-93: referring to a dead thread panics caller
sl@0
 12642
sl@0
 12643
2) Matthew
sl@0
 12644
		Fixed bug HA-102: K::BeepComplete can be catastrophic
sl@0
 12645
sl@0
 12646
3) Rog          Added IrDA support to serial LDD and COM1 PDDs
sl@0
 12647
				Enabling Irda will automatically set framing and
sl@0
 12648
				handshaking to SIR standards (i.e. 8N1 None)
sl@0
 12649
sl@0
 12650
				Added CheckConfig()=0 to PDDs this allows PDDS to
sl@0
 12651
				furtle with the default configuration before the
sl@0
 12652
				driver is created (in specific it allows the Etna
sl@0
 12653
				driver to disable the Fifo.)
sl@0
 12654
sl@0
 12655
4) Pete         Added ATA media driver for Compact Flash cards
sl@0
 12656
				(MEDATA.PDD). This allows read/write/format of CF cards
sl@0
 12657
				via TLocalDrive. However, media change interrupts aren't
sl@0
 12658
				handled yet. Therefore racks must be powered down or Reset
sl@0
 12659
				before inserting or removing a card to remove power
sl@0
 12660
				from the CF card socket.
sl@0
 12661
sl@0
 12662
NB Use E32TOOLS(028) - this release contains a .EXE which exposes
sl@0
 12663
a bug in earlier versions of ROMBUILD. You should also use these
sl@0
 12664
tools because the new MAKTRAN causes -fcheck-new to be introduced
sl@0
 12665
into the gcc compiler options.
sl@0
 12666
sl@0
 12667
Version 0.01.060
sl@0
 12668
================
sl@0
 12669
(Made by Graham, 23rd May 1996)
sl@0
 12670
sl@0
 12671
1) Pete
sl@0
 12672
		1.  General enhancement to TLocalDrive and its corresponding
sl@0
 12673
			kernel side objects to support Media Drivers. TDriveBase/TPlatDrive
sl@0
 12674
			now replaced with TLocDrv which is platform independant.
sl@0
 12675
sl@0
 12676
		2.  TLocalDrive::Connect() can now take a reference to a
sl@0
 12677
			media change flag (TBool).
sl@0
 12678
sl@0
 12679
		3.  Internal Ram Drive now implemented using Media Driver.
sl@0
 12680
sl@0
 12681
		4.  Further improvements to RPcCardController.
sl@0
 12682
sl@0
 12683
2) Rog
sl@0
 12684
		1.  All but a complete re-write of serial LDD. Throughput much
sl@0
 12685
			increased.
sl@0
 12686
sl@0
 12687
		2.  Support for COM1 on RackC is now available from the new
sl@0
 12688
			DATXPC1.PDD.
sl@0
 12689
sl@0
 12690
		3.  Hardware handshaking is currently broken.
sl@0
 12691
sl@0
 12692
3) Graham
sl@0
 12693
		1.  Etna support fixed.
sl@0
 12694
sl@0
 12695
		2.  Removed redundant .FRZ files
sl@0
 12696
sl@0
 12697
4) Jane
sl@0
 12698
		1. Added support for RAM loading of dlls and exes. Currently entrypoints
sl@0
 12699
		   are called in the same manner as for ROM exes and dlls, i.e. only once
sl@0
 12700
		   for a process attach, and never for a thread attach/detach, or a process
sl@0
 12701
		   detach.
sl@0
 12702
sl@0
 12703
		   IMPORTANT NOTE: To support this, the format of the rom headers has
sl@0
 12704
		   changed, and there are new rom building tools - see E32TOOLs release notes.
sl@0
 12705
		   The old tools are incompatible with E32 060.
sl@0
 12706
sl@0
 12707
		2. Added RDebug::Print(TRefByValue<const TDesC> aFmt,...) which outputs
sl@0
 12708
		   text to COM1 from user side code as an aid in debugging.
sl@0
 12709
sl@0
 12710
sl@0
 12711
Version 0.01.059
sl@0
 12712
================
sl@0
 12713
(Made by Colly)
sl@0
 12714
sl@0
 12715
1) Fixed RLibrary::LoadExact() which would not load more than 1
sl@0
 12716
   DLL at a time.
sl@0
 12717
sl@0
 12718
Version 0.01.058
sl@0
 12719
=============[==
sl@0
 12720
(Made by Matthew)
sl@0
 12721
sl@0
 12722
1) Colly
sl@0
 12723
	1. Changed the _S8,_S16 and _S macros to return
sl@0
 12724
sl@0
 12725
		const TText*
sl@0
 12726
sl@0
 12727
	   rather than
sl@0
 12728
sl@0
 12729
		TText*
sl@0
 12730
sl@0
 12731
	   which was allowing writeable descriptors to be constructed illegally
sl@0
 12732
	   over strings. i.e.
sl@0
 12733
sl@0
 12734
		TPrtC(_S("Test string"));
sl@0
 12735
sl@0
 12736
	   Bad news as strings are in the text segment and read only.
sl@0
 12737
	   Compiler will now refuse to compile the above code.
sl@0
 12738
sl@0
 12739
	2. Renamed class TGuid to TUid and changed the representation to just
sl@0
 12740
	   a signed integer (to keep Bill happy). Added the class TUidC where
sl@0
 12741
	   C stands for constructor which just has two constructor, a default
sl@0
 12742
	   constructor which effectively sets the UID to KNullUid and one
sl@0
 12743
	   taking an integer. Given a uid of 0x10000000 then TUidC(0x10000000)
sl@0
 12744
	   will construct the right UID. KNullUid is unfortunately implemented
sl@0
 12745
		   as a #define to avoid class consts.
sl@0
 12746
sl@0
 12747
	   Everywhere that guid was used has now been changed to uid which
sl@0
 12748
	   effected RLibrary and the registry functions.
sl@0
 12749
sl@0
 12750
	   Renamed the uid test DLL from T_UID to T_DUID and the test program
sl@0
 12751
	   from T_GUID to T_UID.
sl@0
 12752
sl@0
 12753
	3. Changed CObjectCon::FindByName() and CObjectCon::FindByFullName()
sl@0
 12754
	   to use MatchF() instead of Match(). CObject::FullName() used to
sl@0
 12755
	   concatenate Owner().Name() with Name(). It now concatenates
sl@0
 12756
	   Owner().FullName() with Name().
sl@0
 12757
sl@0
 12758
	4. Changed TCreateProcessInfo and TCreateLibraryInfo to have a TUid
sl@0
 12759
	   which in due course will be supplied by the loader from the
sl@0
 12760
	   .exe and .dll headers. Added the TUid to DProcess and DLibrary.
sl@0
 12761
	   Also added iGeneration to DProcess so that more than one process
sl@0
 12762
	   can be run at the same time.
sl@0
 12763
sl@0
 12764
	5. Changed the name of a library to include the TUid::Name().
sl@0
 12765
		   If library t_test.dll is loaded and it has a TUid of 0x10000001
sl@0
 12766
		   then its name will be:
sl@0
 12767
sl@0
 12768
		t_test[10000001]
sl@0
 12769
sl@0
 12770
	6. Changed the name of a Process() to include the TUid::Name()
sl@0
 12771
		   followed by iGeneration as a 4 digit decimal value. If process
sl@0
 12772
		   t_test.exe is loaded and it has a TUid of 0x10000001 and
sl@0
 12773
	   it is the the third copy running its name will be:
sl@0
 12774
sl@0
 12775
		t_test[10000001]0002
sl@0
 12776
sl@0
 12777
	7. Added Mem::Crc()
sl@0
 12778
sl@0
 12779
	   which performs the 16 bit CCITT checksum. It should be called
sl@0
 12780
	   for a descriptor as follows:
sl@0
 12781
sl@0
 12782
		TPtrC8 des=_L("Check string");
sl@0
 12783
		TUint16 crc=0;
sl@0
 12784
		Mem::Crc(crc,des.Ptr(),des.Length());
sl@0
 12785
sl@0
 12786
	8. Added the TUidType class. This class packages three UIDs
sl@0
 12787
	   together. It is intended to provide Type, SubType and
sl@0
 12788
		   SubSubType together for the typimng mechanism in E32. It
sl@0
 12789
		   has the following important functions:
sl@0
 12790
sl@0
 12791
		   TUidType::IsValid()
sl@0
 12792
				TRUE if at least one of the UIDs is not KNullUid
sl@0
 12793
		   TUidType::IsPresent(TUid aUid)
sl@0
 12794
				TRUE if any one of the UIDs == aUid
sl@0
 12795
		   TUidType::MostDerived()
sl@0
 12796
				{
sl@0
 12797
				if (iUid[2]!=KNullUid)
sl@0
 12798
					return(iUid[2]);
sl@0
 12799
				if (iUid[1]!=KNullUid)
sl@0
 12800
					return(iUid[1]);
sl@0
 12801
				return(iUid[0]);
sl@0
 12802
				}
sl@0
 12803
sl@0
 12804
	9. Added the TCheckedUid class. This class packages a TUidType
sl@0
 12805
	   together with a checksum. It is intended to be placed at the
sl@0
 12806
	   beginning of all E32 binary files as follows:
sl@0
 12807
sl@0
 12808
		TCheckedUid check(TUidType(0x10000001)); // Created the header
sl@0
 12809
		RFile f;
sl@0
 12810
		f.Open(theFs,_L("binary.file"),EFileWrite);
sl@0
 12811
		f.Write(check.Des()); // Write the descriptor
sl@0
 12812
		....
sl@0
 12813
sl@0
 12814
	   The class can be reinstantiated from the binary file as follows
sl@0
 12815
sl@0
 12816
		TPckgBuf<TCheckedUid> check;
sl@0
 12817
		RFile f;
sl@0
 12818
		f.Open(theFs,_L("binary.file"),EFileRead);
sl@0
 12819
		f.Read(check); // Read the signature
sl@0
 12820
		if (check().Type().IsValid()) // Is it a valid signature
sl@0
 12821
sl@0
 12822
	10.Added a new type TPassword which is just a 16 character buffer.
sl@0
 12823
sl@0
 12824
	11.Added the new abstract class CSecurityBase which provides
sl@0
 12825
	   encryption/decryption functions given a TPassword. This is
sl@0
 12826
	   polymorphic to allow other security systems to be
sl@0
 12827
	   substituted at a later date. One implementation of a security
sl@0
 12828
	   system is provided which implements a polyalphabetic
sl@0
 12829
	   substitution which is similar to that on E32 but no great shakes.
sl@0
 12830
sl@0
 12831
	   In order to use CSecurityBase merely instantiate one with
sl@0
 12832
	   Security::NewL(). By default the security object will be
sl@0
 12833
	   initialsed with a zero length password and disabled. To
sl@0
 12834
	   change its value use SetL(_L(""),new password). Alternatively
sl@0
 12835
	   it can be re-initialised with a descriptor that was previously
sl@0
 12836
	   extracted from a CSecurityBase with CSecurityBase::SecurityData().
sl@0
 12837
	   The data returned by CSecurityBase::SecurityData() is intended to
sl@0
 12838
	   be saved to file and acts as a token for the associated password.
sl@0
 12839
sl@0
 12840
	   Before encrypting or decrypting data use PrepareL() and there
sl@0
 12841
	   after make continuous calls to EncryptL() or DecryptL().
sl@0
 12842
sl@0
 12843
	   Hopefully the other functions are self explanatory.
sl@0
 12844
sl@0
 12845
	   Added test code T_SEC.CPP to test the security system.
sl@0
 12846
sl@0
 12847
	   NOTE: Passwords are currently case sensitive.
sl@0
 12848
sl@0
 12849
	12.Added the machine password control functions
sl@0
 12850
sl@0
 12851
		class Password
sl@0
 12852
			{
sl@0
 12853
		public:
sl@0
 12854
			IMPORT_C static TInt IsEnabled();
sl@0
 12855
			IMPORT_C static TInt SetEnable(const TPassword& aPassword,
sl@0
 12856
										TBool aIsEnabled);
sl@0
 12857
			IMPORT_C static TInt IsValid(const TPassword& aPassword);
sl@0
 12858
			IMPORT_C static TInt Set(const TPassword& anOldPassword,
sl@0
 12859
									const TPassword& aNewPassword);
sl@0
 12860
			};
sl@0
 12861
sl@0
 12862
	   Password::IsEnabled() returns the current state of the password
sl@0
 12863
	   enabled	flag. Password::SetEnabled() allows the state to be
sl@0
 12864
	   changed but only if the correct password is supplied.
sl@0
 12865
sl@0
 12866
	   Password::IsValid() returns TRUE if the password is valid.
sl@0
 12867
sl@0
 12868
	   Password::Set() allows the password to be changed
sl@0
 12869
sl@0
 12870
	   By default the password is _L("")
sl@0
 12871
sl@0
 12872
	13.Added the notifier functions:
sl@0
 12873
sl@0
 12874
		TInt User::Notify(const TDesC& aLine1,const TDesC& aLine2,
sl@0
 12875
						  const TDesC& aBut1);
sl@0
 12876
		TInt User::Notify(const TDesC& aLine1,const TDesC& aLine2,
sl@0
 12877
						  const TDesC& aBut1,const TDesC& aBut2);
sl@0
 12878
		TInt User::Notify(const TDesC& aLine1,const TDesC& aLine2,
sl@0
 12879
						  const TDesC& aBut1,const TDesC& aBut2,
sl@0
 12880
						  const TDesC& aBut3);
sl@0
 12881
sl@0
 12882
	   The function will attempt to connect to a server called
sl@0
 12883
	   __NOTIFIER_NAME (#define in E32SVR.H) and then send a message
sl@0
 12884
	   ENotifierNotify with P0() pointing to a TPckgBuf<TNotifyInfo>.
sl@0
 12885
	   It is allowable for iButton[1] or iButton[2] to be NULL in which case
sl@0
 12886
	   one, two or three button should occur in the dialog. If aBut1
sl@0
 12887
	   is picked then 0 is returned, 1 for aBut2 and 2 for aBut3. Any
sl@0
 12888
	   other error such as their being no Notifier or a result being
sl@0
 12889
	   wrong will result in a return of KErrGeneral.
sl@0
 12890
		14.Added Mem::Move() which has the same API as Mem::Copy(). Move()
sl@0
 12891
		   assumes that src and trg are 2^2 aligned and that aLength is a
sl@0
 12892
		   multiple of 4.
sl@0
 12893
		15.Added a new time interval TTimeIntervalShortMicroSeconds
sl@0
 12894
		   which is an interval in micro seconds but stored in a 32
sl@0
 12895
		   integer. This is the new interval when specifying After()
sl@0
 12896
		   delays. Note that I have left the low level kern services
sl@0
 12897
		   in ticks for now.
sl@0
 12898
		16.Renamed
sl@0
 12899
			   RTimer::After() to RTimer::AfterInMicroSeconds()
sl@0
 12900
			   CTimer::After() to CTimer::AfterInMicroSeconds()
sl@0
 12901
			   User::After() to User::AfterInMicroSeconds()
sl@0
 12902
			   CPeriodic::Start() to CPeriodic::StartInMicroSeconds()
sl@0
 12903
		   to aid the conversion to the new interval. When converting
sl@0
 12904
		   just multiply the value being passed originally by 100000
sl@0
 12905
		   which is ofcourse the number of microseconds in a tenth of
sl@0
 12906
		   a second.
sl@0
 12907
		17).RSessionBase::CreateSession() and
sl@0
 12908
			RSessionBase::SetRetry() both take a
sl@0
 12909
			TTimeIntervalShortMicroSeconds as the the delay interval.
sl@0
 12910
		18).Fixed mnt.cmd by adding %_F32VER% as the second parameter
sl@0
 12911
			of all recursive getXXX calls to fix defect HA-121 reported
sl@0
 12912
			by DavidW.
sl@0
 12913
		19).Made the Timer services TicksToTenths() a bit easier to
sl@0
 12914
			implement and OneShot() timing slightly more accurate.
sl@0
 12915
sl@0
 12916
2) Geert
sl@0
 12917
sl@0
 12918
		1. Removed CArrayFixBase::DestroyAll(). Use the new
sl@0
 12919
		CArrayPtr<T> class template instead. (See below.)
sl@0
 12920
sl@0
 12921
		2. Added support for objects that can only ever
sl@0
 12922
		live inside an array. E.g. support for a variable
sl@0
 12923
		array of TBufC<100000>, where the elements are just
sl@0
 12924
		big enough to contain the actual data in the
sl@0
 12925
		buffer.
sl@0
 12926
sl@0
 12927
		CArrayFix<T>::ExpandL(TInt anIndex) opens up a slot
sl@0
 12928
		at anIndex by shifting the elements after anIndex
sl@0
 12929
		and returns a reference to the new element. The new
sl@0
 12930
		element is constructed in place.
sl@0
 12931
		ArrayFix<T>::ExtendL() is equivalent to ExpandL(Count()).
sl@0
 12932
		CArrayVar<T>::ExpandL(TInt anIndex,TInt aLength)
sl@0
 12933
		opens up a slot of size aLength at anIndex by and
sl@0
 12934
		is otherwise the same as the fixed record case.
sl@0
 12935
		CArrayVar<T>::ExtendL(TInt aLength) is equivalent
sl@0
 12936
		to ExpandL(Count(),aLength).
sl@0
 12937
sl@0
 12938
		3. Added repeated insertion and re-sizing functions
sl@0
 12939
		to CArrayFix.
sl@0
 12940
sl@0
 12941
		CArrayFix<T>::InsertL(TInt anIndex,const T& aRef,TInt aReplicas)
sl@0
 12942
		inserts a copy of aRef, aReplicas times.
sl@0
 12943
		CArrayFix<T>::ResizeL(TInt aCount)
sl@0
 12944
		extends or shrinks the array as needed for it to
sl@0
 12945
		contain aCount elements. Any new elements are
sl@0
 12946
		bitwise copies of a default-constructed T.
sl@0
 12947
		CArrayFix<T>::ResizeL(TInt aCount,const T& aRef)
sl@0
 12948
		extends or shrinks the array like ResizeL(TInt).
sl@0
 12949
		New elements, however, are bitwise copies of aRef.
sl@0
 12950
sl@0
 12951
		NB. As a result of these changes, the element type
sl@0
 12952
		has to have an accessible default constructor. If
sl@0
 12953
		you have a CArrayXxx<TYyy>, and some custom
sl@0
 12954
		TYyy::TYyy(TZzz aZzz) exists, a TYyy::TYyy() will
sl@0
 12955
		have to be added. A knock-on effect is that C-style
sl@0
 12956
		arrays can no longer be supported as element types.
sl@0
 12957
sl@0
 12958
		Note that array elements are still bitwise copies,
sl@0
 12959
		and will be Mem::Copy()-ed around during their
sl@0
 12960
		lifetime. Having the constructor called merely
sl@0
 12961
		guarantees that they'll be bitwise copies of a
sl@0
 12962
		properly constructed object, rather than random
sl@0
 12963
		garbage. In keeping with this, array functions may
sl@0
 12964
		construct instances of the element types, but they
sl@0
 12965
		will never destroy them. Element types need not
sl@0
 12966
		have an accessible destructor.
sl@0
 12967
sl@0
 12968
		4. Changed CArrayXxx::InsertIsqL() and added the
sl@0
 12969
		new funcion InsertIsqAllowDuplicatesL()
sl@0
 12970
sl@0
 12971
		CArrayFix<T>::InsertIsqL(const T& aRef,TKeyArrayFix &aKey)
sl@0
 12972
		and
sl@0
 12973
		CArrayFix<T>::InsertIsqAllowDuplicatesL(const T& aRef,TKeyArrayFix &aKey)
sl@0
 12974
		return the new element's index.
sl@0
 12975
		InsertIsqL() leaves with KErrAlreadyExists if a
sl@0
 12976
		duplicate is discovered, and
sl@0
 12977
		InsertIsqAllowDuplicatesL() inserts the element
sl@0
 12978
		after any duplicate. The existing InsertIsqL(),
sl@0
 12979
		returning KErrNone or KErrAlreadyExists, and taking
sl@0
 12980
		a TAllowDuplicates argument is withdrawn.
sl@0
 12981
		In the case of variable-element arrays, the
sl@0
 12982
		signatures are
sl@0
 12983
		CArrayVar<T>::InsertIsqL(const T& aRef,TInt aLength,TKeyArrayFix &aKey)
sl@0
 12984
		and
sl@0
 12985
		CArrayVar<T>::InsertIsqAllowDuplicatesL(const T& aRef,TInt aLength,TKeyArrayFix &aKey).
sl@0
 12986
sl@0
 12987
		Note that the meaning of InsertIsqL()'s return
sl@0
 12988
		value has changed and care should be taken when
sl@0
 12989
		porting.
sl@0
 12990
sl@0
 12991
		5. Almost all the array manipulation functions in
sl@0
 12992
		CArrayXxxBase have become public. This is to allow
sl@0
 12993
		code to operate on incoming (typed) arrays in a
sl@0
 12994
		type-independent way. It can be argued this reduces
sl@0
 12995
		type-safety and encapsulation, but the most
sl@0
 12996
		important thing is to guard against accidental
sl@0
 12997
		misuse. This is done by providing typed functions
sl@0
 12998
		in the template classes overriding--and hiding--all
sl@0
 12999
		the unsafe functions.
sl@0
 13000
sl@0
 13001
		6. Added functions CArrayXxx<T>::At(TInt anIndex).
sl@0
 13002
		They are synonymous with CArrayXxx<T>::operator[]()
sl@0
 13003
		and serve to hide the At() functions in the base
sl@0
 13004
		classes.
sl@0
 13005
sl@0
 13006
		7. Added CArrayFix<TAny>, CArrayFixFlat<TAny> and
sl@0
 13007
		CArrayFixSeg<TAny> as well as CArrayVar<TAny> and
sl@0
 13008
		CArrayPak<TAny>. They are hand-crafted and somewhat
sl@0
 13009
		restricted instances of the templates, for those
sl@0
 13010
		who wish to use a generic array; e.g., as a member
sl@0
 13011
		of the base class in a template pair. In the case
sl@0
 13012
		of CArrayFixXxx<TAny>, the record length is
sl@0
 13013
		specified as a constructor parameter.
sl@0
 13014
sl@0
 13015
		8. Added functions CArrayXxx::AppendL(), Find(),
sl@0
 13016
		FindIsq() and InsertL() taking a reference to T
sl@0
 13017
		instead of a pointer. People wishing to switch to
sl@0
 13018
		the reference-based API may define the macro
sl@0
 13019
		__ARRAY_NO_PTRS__, which will hide the
sl@0
 13020
		pointer-based versions.
sl@0
 13021
sl@0
 13022
		9. Added class template CArrayPtr<T> extending
sl@0
 13023
		CArrayFix<T*>'s interface with a ResetAndDestroy()
sl@0
 13024
		function. The function is intended as a type safe
sl@0
 13025
		replacement for CArrayFix<CBase*>::DestroyAll().
sl@0
 13026
		It is equivalent to a loop delete-ing all (pointer)
sl@0
 13027
		elements, followed by Reset().
sl@0
 13028
sl@0
 13029
		10. CBufBase::ExpandL(TInt aPos,TInt aLength) makes
sl@0
 13030
		room for aLength bytes at aPos. The new contents
sl@0
 13031
		are undefined. InsertL(Pos,aPtr,aLength) is
sl@0
 13032
		equivalent to ExpandL(aPos,aLength) followed by
sl@0
 13033
		Write(aPos,aPtr,aLength).
sl@0
 13034
sl@0
 13035
		11. CBufBase::ResizeL(TInt aSize) expands or
sl@0
 13036
		deletes from the buffer at the end so that its
sl@0
 13037
		Size() becomes equal to aSize. Not to be confused
sl@0
 13038
		with CBufFlat::SetReserveL, which has no effect on
sl@0
 13039
		the logical size of the buffer.
sl@0
 13040
sl@0
 13041
		12. CBufFlat::Capacity() reports the size the
sl@0
 13042
		buffer can grow to without reallocation. The buffer
sl@0
 13043
		insertion functions are guaranteed not to leave
sl@0
 13044
		until the buffers Size() reaches or exceeds its
sl@0
 13045
		Capacity(). A flat buffer's capacity is changed
sl@0
 13046
		using SetReserveL().
sl@0
 13047
sl@0
 13048
		13. Removed the global new operator taking a base
sl@0
 13049
		pointer and check size; ie., TAny* operator
sl@0
 13050
		new(TUint aSize,TAny* aBase,TInt aCheckSize)
sl@0
 13051
sl@0
 13052
		Making sure at runtime that the allocated size is
sl@0
 13053
		he same as the supplied buffer size is not a very
sl@0
 13054
		common requirement. As it turned out, size checking
sl@0
 13055
		was really only required for RHeap and derived
sl@0
 13056
		classes. Supplying it with a custom RHeap::operator
sl@0
 13057
		new(), as is now the case, is actually a cheaper
sl@0
 13058
		solution.
sl@0
 13059
sl@0
 13060
		14. Added zero-filling versions of the full set of
sl@0
 13061
		available global new operators to CBase and removed
sl@0
 13062
		CBase's delete operator.
sl@0
 13063
sl@0
 13064
		The delete operator was there only as a workaround
sl@0
 13065
		for a problem with the Visual C++ linker. The
sl@0
 13066
		problem appears to be fixed in Visual C++ 4.0, so
sl@0
 13067
		there is now no point in having the operator.
sl@0
 13068
sl@0
 13069
		15. Added pragma's disabling Visual C++ warnings to
sl@0
 13070
		do with the generation of copy constructors and
sl@0
 13071
		assignment operators to <e32def.h>.
sl@0
 13072
sl@0
 13073
		16. Added private, undefined copy constructors and
sl@0
 13074
		assignment operators to CBase. Copying and
sl@0
 13075
		assignment of CBase-derived classes is now
sl@0
 13076
		prohibited by default.
sl@0
 13077
sl@0
 13078
3). Graham
sl@0
 13079
	1. Various keyboard changes.
sl@0
 13080
sl@0
 13081
		2. Added HAL set and sense functions. Most are not
sl@0
 13082
		yet implemented but will be in 059.
sl@0
 13083
sl@0
 13084
4). Steve
sl@0
 13085
	1. Debugger:
sl@0
 13086
	Further improvement and additions to the debugger classes and the Gdb stub.
sl@0
 13087
	Still no bug fixes back form Cygnus to allow source level debugging using
sl@0
 13088
	Gdb. Added support for multiple thread debugging, and allowing breakpoints
sl@0
 13089
	to be set in ROM which effect the threads you specify rather than all
sl@0
 13090
	threads. Finalised the API for the RDebug class which is used by any
sl@0
 13091
	debugger or debug stump program. Full details of the E32 debugger class
sl@0
 13092
	currently in R:\E32\DOCS\RDEBUG.DOC.
sl@0
 13093
sl@0
 13094
	2. Key translator:
sl@0
 13095
	Fixed the bug where the modifier status wasn't updated on a modifier key
sl@0
 13096
	down - it was updated on the next key up or down.
sl@0
 13097
sl@0
 13098
5). Jane
sl@0
 13099
		1. Removed saving and restoring of fs & gs in interrupt code to speed up
sl@0
 13100
		X86 version of EPOC.
sl@0
 13101
sl@0
 13102
		2.Added support for debugger in finding code address of target processes.
sl@0
 13103
		Added MMU functions to support debugger in shadowing ROM. (Both untested).
sl@0
 13104
sl@0
 13105
		3.Added process cleanup code to fix process logon - but left it commented
sl@0
 13106
		out due to time pressure in meeting API freeze. Will be tested and in
sl@0
 13107
		place in 059.
sl@0
 13108
sl@0
 13109
		4.Added start of code supporting process and dll loading from RAM, and
sl@0
 13110
		added dummy APIs for future additions to this. Rationalised kernel
sl@0
 13111
		LoadLibrary functions.
sl@0
 13112
sl@0
 13113
		5.Fixed stack scribble in runThread, which was causing an incorrect
sl@0
 13114
		return status to be given to logging threads.
sl@0
 13115
sl@0
 13116
6). Roger
sl@0
 13117
	Serial LDD reliability improved. Fixed double completion bugs.
sl@0
 13118
sl@0
 13119
	Eiger Serial PDD. Turned interrupts off during initial fifo priming.
sl@0
 13120
sl@0
 13121
	Etna Serial PDD. Written not able to test due to a (suspected) kernel bug.
sl@0
 13122
sl@0
 13123
		Further changes to the serial drivers as of Sat 4th May given
sl@0
 13124
		to Colly.
sl@0
 13125
sl@0
 13126
7). Matthew
sl@0
 13127
	Preliminary sound Ldd and Pdds for Wins and Eiger. Currently the Wins PDD
sl@0
 13128
	pretends to play by making random beeps for the appropriate length of time
sl@0
 13129
	and pretends to record aLaw data by filling a bufer with silence in the
sl@0
 13130
	appropriate time. The Eiger PDD just plays silence.
sl@0
 13131
sl@0
 13132
8). Pete
sl@0
 13133
	Improvements to Pc Card Controller and its user interface.
sl@0
 13134
sl@0
 13135
	Simulation of Media Change using F5 key added to WINS (commented out for
sl@0
 13136
	now).
sl@0
 13137
sl@0
 13138
Version 0.01.057
sl@0
 13139
================
sl@0
 13140
(Made by Graham, Friday 19th April)
sl@0
 13141
sl@0
 13142
1) Graham
sl@0
 13143
		1. Implemented MNT ARMALL, ARM, ARMDEB, ARMREL, ARMUDEB, ARMUREL
sl@0
 13144
		   BTSTARMALL, BTSTARM, BTSTARMDEB, BTSTARMREL, BTSTARMUDEB,
sl@0
 13145
		   BTSTARMUREL.
sl@0
 13146
sl@0
 13147
		2. Fixed bugs in BMARM\XDUMM.MAK, XKEYB.MAK, and XXYIN.MAK
sl@0
 13148
sl@0
 13149
		3. Fixed F32\BMARM\ESHELL.MAK to vary name according to
sl@0
 13150
		   build - ESHELL.EXE, ESHELLD.EXE, ESHELLU.EXE, ESHELLUD.EXE
sl@0
 13151
sl@0
 13152
		4. Updated ARM Rom building system to build debug and unicode
sl@0
 13153
		   roms as well.
sl@0
 13154
sl@0
 13155
		5. Ensured O/S and test programs build in DEBUG and UNICODE
sl@0
 13156
		   as well as RELEASE mode.
sl@0
 13157
sl@0
 13158
		6. Removed redundant LCD contrast handling from
sl@0
 13159
		   VARMPR\VA_KEYB.CPP
sl@0
 13160
sl@0
 13161
		7. Added KE_ETNA.CPP with the help of Roger and Peter.
sl@0
 13162
sl@0
 13163
		8. Rationalised variant system, allowing for three MARM
sl@0
 13164
		   variants. Each variant for a given architecture has a
sl@0
 13165
		   two character mnemomnic:
sl@0
 13166
sl@0
 13167
				PB      Protea rack B
sl@0
 13168
				PC      Protea rack C
sl@0
 13169
				P1      Protea version 1
sl@0
 13170
sl@0
 13171
		   Each variant has an E32\ sub-directory:
sl@0
 13172
sl@0
 13173
				\E32\VARMPB
sl@0
 13174
				\E32\VARMPC
sl@0
 13175
				\E32\VARMP1
sl@0
 13176
sl@0
 13177
		   Each must contain a VA_CUST.CPP which implements class
sl@0
 13178
		   Custom and produces an ECUST.DLL which the kernel links to.
sl@0
 13179
		   These ECUST.DLL's are called CARMPB.DLL, CARMPC.DLL, and
sl@0
 13180
		   CARMP1.DLL until one of them is selected to become
sl@0
 13181
		   ECUST.DLL in the ROM.
sl@0
 13182
sl@0
 13183
		   They must also include keyboard or pointer device
sl@0
 13184
		   implementations (VA_KEYB.CPP and VA_XYIN.CPP) which
sl@0
 13185
		   create CAKYPB.DLL, CAKYPC.DLL, CAKYP1.DLL (Arm keyboard
sl@0
 13186
		   DLL's) and CAXYPB.DLL, CAXYPC.DLL, CAXYP1.DLL (Arm XY
sl@0
 13187
		   input device DLL's).
sl@0
 13188
sl@0
 13189
		   Normally, they will also include a VA_HW.CPP which
sl@0
 13190
		   implements variant-specific hardware functionality. These go
sl@0
 13191
		   on to produce the variant dll's VARMPB.DLL, VARMPC.DLL,
sl@0
 13192
		   and VARMP1.DLL. Physical Device drivers (which are intrinsically
sl@0
 13193
		   Variant-level entities) and custom dll's might want to
sl@0
 13194
		   link to these DLL's, but the kernel cannot.
sl@0
 13195
sl@0
 13196
		   They will also contain PDD source.
sl@0
 13197
sl@0
 13198
		   The upshot of this is that .OBY files have to change.
sl@0
 13199
sl@0
 13200
		   A typical Protea Rack B .OBY file will begin:
sl@0
 13201
sl@0
 13202
		   romname=arompb.img
sl@0
 13203
		   version=0.01
sl@0
 13204
		   bootbinary=c:\work\emarm\bootrom.bin
sl@0
 13205
		   romsize=0x400000
sl@0
 13206
		   romlinearbase=0x50000000
sl@0
 13207
		   romalign=0x1000
sl@0
 13208
		   kerneldataaddress=0x80100000
sl@0
 13209
		   kernelstackaddress=0x80000000
sl@0
 13210
		   kernelheapmin=0x10000
sl@0
 13211
		   dataaddress=0x400000
sl@0
 13212
sl@0
 13213
		   files=
sl@0
 13214
		   primary=c:\work\emarm\ekern.exe sys\ekern.exe
sl@0
 13215
		   file=c:\work\emarm\euser.dll sys\euser.dll
sl@0
 13216
		   file=c:\work\emarm\elocl.dll sys\elocl.dll
sl@0
 13217
		   secondary=c:\work\emarm\efile.exe sys\efile.exe
sl@0
 13218
		   file=c:\work\emarm\efsrv.dll sys\efsrv.dll
sl@0
 13219
		   file=c:\work\emarm\elocal.fsy sys\elocal.fsy
sl@0
 13220
		   file=c:\work\emarm\ewsrv.exe sys\ewsrv.exe
sl@0
 13221
		   file=c:\work\emarm\econs.dll sys\econs.dll
sl@0
 13222
		   file=c:\work\emarm\edisp.dll sys\edisp.dll
sl@0
 13223
		   file=c:\work\emarm\varmpb.dll sys\varmpb.dll
sl@0
 13224
		   file=c:\work\emarm\carmpb.dll sys\ecust.dll
sl@0
 13225
		   file=c:\work\emarm\cakypb.dll sys\ekeyb.dll
sl@0
 13226
		   file=c:\work\emarm\caxypb.dll sys\exyin.dll
sl@0
 13227
		   file=c:\work\emarm\ektran.dll sys\ektran.dll
sl@0
 13228
		   file=c:\work\emarm\ekdata.dll sys\ekdata.dll
sl@0
 13229
		   file=c:\work\emarm\eshell.exe sys\eshell.exe
sl@0
 13230
sl@0
 13231
		   A typical Protea Rack C .OBY file will begin:
sl@0
 13232
sl@0
 13233
		   romname=arompc.img
sl@0
 13234
		   version=0.01
sl@0
 13235
		   bootbinary=c:\work\emarm\bootrom.bin
sl@0
 13236
		   romsize=0x400000
sl@0
 13237
		   romlinearbase=0x50000000
sl@0
 13238
		   romalign=0x1000
sl@0
 13239
		   kerneldataaddress=0x80100000
sl@0
 13240
		   kernelstackaddress=0x80000000
sl@0
 13241
		   kernelheapmin=0x10000
sl@0
 13242
		   dataaddress=0x400000
sl@0
 13243
sl@0
 13244
		   files=
sl@0
 13245
		   primary=c:\work\emarm\ekern.exe sys\ekern.exe
sl@0
 13246
		   file=c:\work\emarm\euser.dll sys\euser.dll
sl@0
 13247
		   file=c:\work\emarm\elocl.dll sys\elocl.dll
sl@0
 13248
		   secondary=c:\work\emarm\efile.exe sys\efile.exe
sl@0
 13249
		   file=c:\work\emarm\efsrv.dll sys\efsrv.dll
sl@0
 13250
		   file=c:\work\emarm\elocal.fsy sys\elocal.fsy
sl@0
 13251
		   file=c:\work\emarm\ewsrv.exe sys\ewsrv.exe
sl@0
 13252
		   file=c:\work\emarm\econs.dll sys\econs.dll
sl@0
 13253
		   file=c:\work\emarm\edisp.dll sys\edisp.dll
sl@0
 13254
		   file=c:\work\emarm\varmpc.dll sys\varmpc.dll
sl@0
 13255
		   file=c:\work\emarm\carmpc.dll sys\ecust.dll
sl@0
 13256
		   file=c:\work\emarm\cakypc.dll sys\ekeyb.dll
sl@0
 13257
		   file=c:\work\emarm\caxypc.dll sys\exyin.dll
sl@0
 13258
		   file=c:\work\emarm\ektran.dll sys\ektran.dll
sl@0
 13259
		   file=c:\work\emarm\ekdata.dll sys\ekdata.dll
sl@0
 13260
		   file=c:\work\emarm\eshell.exe sys\eshell.exe
sl@0
 13261
sl@0
 13262
		9. Enhanced the KBARM\ rom building system to allow for the
sl@0
 13263
		   production of all three variant ROMs.
sl@0
 13264
sl@0
 13265
		10. Fixed spurious Pen Up events on the digitiser.
sl@0
 13266
sl@0
 13267
		11. Added GETSRC verb to MNT.CMD
sl@0
 13268
sl@0
 13269
2) Morgan
sl@0
 13270
		1. Completed DEVICE/DRIVER name changes to LDD/PDD.
sl@0
 13271
sl@0
 13272
		2. Added operator++() to TTimerLockSpec
sl@0
 13273
sl@0
 13274
		3. Added TTimerLockSpec User::LockPeriod(). This returns which
sl@0
 13275
		   of the TTimerLockSpec periods the clock is currently in.
sl@0
 13276
sl@0
 13277
3) Jane
sl@0
 13278
		1. Fixed some problems with the new chunk sheme, notably to do with
sl@0
 13279
		   closing EPOC chunks.
sl@0
 13280
sl@0
 13281
		2. Added a new debug only build of the .def files for X86.
sl@0
 13282
sl@0
 13283
		3. Added MMU support for both kernel growth (contigous in linear and
sl@0
 13284
		   high physical memory) and RAM drive growth (contigous in linear
sl@0
 13285
		   and low physical memory) - moving other people's pages and page
sl@0
 13286
		   tables out of the way if necessary. Added TMMU test code to test
sl@0
 13287
		   these situations.
sl@0
 13288
sl@0
 13289
		4. Added a new function to the bit map allocator
sl@0
 13290
		   AllocFromTopFrom(TInt aPos) which returns the
sl@0
 13291
		   next free page after the one specified. Tidied
sl@0
 13292
		   up AllocFromTop() a bit while I was at it.
sl@0
 13293
sl@0
 13294
4) Colly
sl@0
 13295
		1. Added User::PageSize() to return the current machine page size.
sl@0
 13296
sl@0
 13297
		2. Renamed RHeap::Destroy() to RHeap::Close().
sl@0
 13298
sl@0
 13299
		3. Implemented heap sharing for heaps in chunks by having it heaps
sl@0
 13300
		own and use an RCriticalSection as well as supporting access counting.
sl@0
 13301
	The function TInt RHeap::Open() should be used to open a heap for
sl@0
 13302
	sharing which increases the access count. A subsequent RHeap::Close()
sl@0
 13303
	will decrement the access count but the heap will only be discarded
sl@0
 13304
	if the access count	goes to zero. The static function User::ChunkHeap
sl@0
 13305
	includes the call to Open(). Fixed address heaps cannot be shared and
sl@0
 13306
	calls to Open() will be panicked.
sl@0
 13307
sl@0
 13308
	The heaps which are created when a thread is created and which can be
sl@0
 13309
	retrieved with a call to User::Heap() should not be closed with a call
sl@0
 13310
	to Close() since the chunk in which the heap is created contains the
sl@0
 13311
	threads stack as well as the heap. If Close() is called the thread will
sl@0
 13312
	be panicked. The constanst RHeap::EChunkStack for the heaps type indicate
sl@0
 13313
	this kind of a heap, while RHeap::EChunkNormal indicate a heap created
sl@0
 13314
	with User::ChunkHeap(). Type EChunkSupervisor will never be seen
sl@0
 13315
	by an user mode code.
sl@0
 13316
sl@0
 13317
	A thread is usually created with its own heap, but it can also be
sl@0
 13318
	created to use either the current thread's heap or a heap already
sl@0
 13319
	created. To use the current threads heap:
sl@0
 13320
sl@0
 13321
	RThread t;
sl@0
 13322
	TInt r=t.Create(_L("Shared1"),threadEntryPoint,KDefaultStackSize,
sl@0
 13323
			 NULL,NULL);
sl@0
 13324
sl@0
 13325
	The first of the TWO NULLs will cause the routine to share the
sl@0
 13326
	current threads heap. i.e. that returned by User::Heap().
sl@0
 13327
sl@0
 13328
	To use a heap already created:
sl@0
 13329
sl@0
 13330
	RHeap* pH=User::ChunkHeap(_L("Share"),User::PageSize(),0x100000);
sl@0
 13331
	test(pH!=NULL);
sl@0
 13332
	RThread t;
sl@0
 13333
	TInt r=t.Create(_L("Shared1"),threadEntryPoint,KDefaultStackSize,
sl@0
 13334
			 pH,NULL);
sl@0
 13335
sl@0
 13336
	NOTE: In either case above the Heap will be opened and closed
sl@0
 13337
	internally so you need not provide any cleanup. If you no longer
sl@0
 13338
	wish to retain your copy of the heap in the example above after the
sl@0
 13339
	new thread has been created then you can call pH->Close().
sl@0
 13340
sl@0
 13341
	Finally note that if thread1 creates thread2 to share its heap and
sl@0
 13342
	then exits thread1's chunk will remain in existence until such time
sl@0
 13343
	as thread2 exits. This is so since thread2's heap is now in thread1's
sl@0
 13344
	chunk. Such are the joys of sharing heaps.
sl@0
 13345
sl@0
 13346
		4. Full automated heap growth is now implemented as is RHeap::Compress().
sl@0
 13347
	If the adjust to the heaps chunk fails the the kernel server will be
sl@0
 13348
	called to attempt to compress all heaps known to the kernel. When
sl@0
 13349
	completed a further attempt will be made to adjust the chunk so that
sl@0
 13350
	the heap can grow. Remember that a heap will never be compressed
sl@0
 13351
	below its minimum size and that heaps can onlybe compressed if they
sl@0
 13352
	have free space at the top of the heap.
sl@0
 13353
sl@0
 13354
		5. Added a default argument TOwnerType aType=EOwnerProcess to most
sl@0
 13355
	of the operating system types CreateLocal(),CreateGlobal() and
sl@0
 13356
	Open() functions. Because of the default paramter this change is
sl@0
 13357
	seamless all current programs. The meaning of TOwnerType is to
sl@0
 13358
	indicate whether the resulting RObject is owned by the Process or
sl@0
 13359
	the Thread. Owned by the Process has been the only behaviour allowed
sl@0
 13360
	until this change. EOwnerThread will make the thread the owner of the
sl@0
 13361
	handle. The effect of being owner by the thread is that when the
sl@0
 13362
	thread dies any handles owned by the thread and not closed, will be
sl@0
 13363
	closed automatically. Example of process ownership:
sl@0
 13364
sl@0
 13365
			RLibrary lib;
sl@0
 13366
			test(lib.Load(_L("TESTDLL"));
sl@0
 13367
		//
sl@0
 13368
		// The library handle will be closed when the process exits
sl@0
 13369
		//
sl@0
 13370
			User::Exit(KErrNone);
sl@0
 13371
sl@0
 13372
	Example of thread ownership
sl@0
 13373
sl@0
 13374
			RLibrary lib;
sl@0
 13375
			test(lib.Load(_L("TESTDLL"),EOwnerThread);
sl@0
 13376
		//
sl@0
 13377
		// The library handle will be closed when the thread exits
sl@0
 13378
		//
sl@0
 13379
			User::Exit(KErrNone);
sl@0
 13380
sl@0
 13381
		NB. Although the addition of TOwnerType arguments to the
sl@0
 13382
		appropriate function calls has been made, EOwnerThread-type
sl@0
 13383
		services have not yet been implemented. This change merely
sl@0
 13384
		prepares the way for such an implementation.
sl@0
 13385
sl@0
 13386
		6. Implemented the full and correct naming strategy for
sl@0
 13387
		objects in the base.
sl@0
 13388
sl@0
 13389
		7. The test DLLs T_START1.DLL, T_START2.DLL and T_START3.DLL were
sl@0
 13390
	all using a WIN32 function GetTickCount() to delay their startup
sl@0
 13391
	which was preventing them from being used as a test under Epoc/32.
sl@0
 13392
	Changed to use User::TickCount() and removed Kernel32.lib from
sl@0
 13393
	the link dependencies.
sl@0
 13394
sl@0
 13395
5) Gillian
sl@0
 13396
sl@0
 13397
		1. Added TDateTime::SetYear() etc functions (Brendan's
sl@0
 13398
		accepted proposal E32.51 TDateTime setting functions)
sl@0
 13399
sl@0
 13400
		2. Added TTime::- and TTime-= functions for all TTimeInterval classes
sl@0
 13401
		(Richard Knights accepted proposal TTime should define operators -
sl@0
 13402
		and -=)
sl@0
 13403
sl@0
 13404
		3. Extended TTime::DateTime() function to deal with BC dates
sl@0
 13405
sl@0
 13406
		4. Added tests for all the above and tidied the test code up a
sl@0
 13407
		little.
sl@0
 13408
sl@0
 13409
6) Roger
sl@0
 13410
		1. Implemented DFcs under WINS. This allows us to use DFCs
sl@0
 13411
		from the serial LDD rather than the non WINs PDD. This gives
sl@0
 13412
		much more reliability under WINs and improved throughput under
sl@0
 13413
		MX86 and MARM.
sl@0
 13414
sl@0
 13415
7) Steve
sl@0
 13416
		Key Translator:
sl@0
 13417
		1) Added new modifier EModifierPureKey, which is set when a
sl@0
 13418
		   ctrl-key combination does not alter the keycode (basically
sl@0
 13419
		   any key other than Space,A-Z which return 0 to 26 respectively)
sl@0
 13420
sl@0
 13421
		2) Fixed bug so that ctrl-space returns a NULL key press
sl@0
 13422
		   rather than being thrown away
sl@0
 13423
sl@0
 13424
		3) TPattern enums moved into E32SVR.H for use by wserv
sl@0
 13425
sl@0
 13426
		Debugger:
sl@0
 13427
		4) Removed the Gdb stub from the E32 kernel
sl@0
 13428
sl@0
 13429
		5) Added Debug and RDebug classes. Debug is on the Kernel side
sl@0
 13430
		and provides debugging functions for RDebug on the user side.
sl@0
 13431
		A user mode debugger or stub opens a channel to RDebug and
sl@0
 13432
		can then debug one or more threads. The RDebug class provides
sl@0
 13433
		functions for Single-stepping, setting breakpoints,
sl@0
 13434
		reading/writing memory and reading/setting of register
sl@0
 13435
		values. Watching of memory addresses will be provided
sl@0
 13436
		in a later release
sl@0
 13437
sl@0
 13438
		6) Added 'TInt iDataSize' into DPlatProcess for use by the Debug
sl@0
 13439
		class for returning the Bss address of a Process
sl@0
 13440
sl@0
 13441
		7) Simple program written to run on the rack which waits for
sl@0
 13442
		any thread to panic and then displays what has panicked
sl@0
 13443
		and why
sl@0
 13444
sl@0
 13445
		8) Gdb stub written which communicates between RDebug and Gdb
sl@0
 13446
		running on a remote host PC. Currently the Gdb stub only copes with
sl@0
 13447
		debugging one thread at a time, and due to problems with Gdb itself,
sl@0
 13448
		only limited debugging facilities are available.
sl@0
 13449
sl@0
 13450
8) Pete
sl@0
 13451
		1. Added PC Card Controller to WINS and MARM.
sl@0
 13452
sl@0
 13453
9) NOTE to shared chunk users (FBSERV etc). Support for read-only
sl@0
 13454
		shared chunks has been withdrawn. Although the API remains, all
sl@0
 13455
		shared chunk users should ONLY open for read/write.
sl@0
 13456
sl@0
 13457
sl@0
 13458
Version 0.01.056
sl@0
 13459
================
sl@0
 13460
(Made by Morgan, Sometime soon)
sl@0
 13461
sl@0
 13462
1) Matthew
sl@0
 13463
	Bug fixes:
sl@0
 13464
	HA-81: In Wins if a E32Dll returns an error this is now correctly
sl@0
 13465
	detected.
sl@0
 13466
	HA-58: (Just in time debugging added for Kernel Panics) fixed in
sl@0
 13467
	KSRC\KS_UTL.CPP
sl@0
 13468
	HA-62: (Flat buffers not compressed when cleared) fixed in
sl@0
 13469
	UBAS\UB_BUF.CPP.
sl@0
 13470
	HA-82 (ReadCancel() doesn't complete TRequestStatus) fixed in
sl@0
 13471
	WSRC\WS_WIN.CPP, tested in T_WSIMP.CPP.
sl@0
 13472
	HA-73, HA-74, HA-61, HA-52,58,61,62,69,73,74,81,82.
sl@0
 13473
sl@0
 13474
2) Rog
sl@0
 13475
	Added:
sl@0
 13476
	IMPORT_C void CActive::SetPriority(TInt aPriority);
sl@0
 13477
	inline TInt CActive::Priority();
sl@0
 13478
	SetPriority() will panic if the AO is active when it is called.
sl@0
 13479
sl@0
 13480
3) SteveT
sl@0
 13481
	1: Added:
sl@0
 13482
	TBool TRegion::Contains(const TPoint &aPoint);
sl@0
 13483
	Simply returns True if the point is contained within the region,
sl@0
 13484
	False if not.
sl@0
 13485
sl@0
 13486
	2. Added a new template class RRegionBuf<N>
sl@0
 13487
	This is a cross between the two existing variants of the TRegion
sl@0
 13488
	class, it's black box spec is identical to the RRegion class, you
sl@0
 13489
	can have unlimited size regions but have to check for errors, but
sl@0
 13490
	a buffer big enough to hold <N> rectangles is included with the
sl@0
 13491
	RRegionBuf structure, this is used until it is full up when a
sl@0
 13492
	cell will be allocated and the whole rectangle list copied into
sl@0
 13493
	the allocated cell, the region will not revert back to using the
sl@0
 13494
	buffer even if it shrinks small enough fit.
sl@0
 13495
sl@0
 13496
	These regions are chiefly designed to be used as temporary work
sl@0
 13497
	space on the stack where they will save a lot of calls to alloc
sl@0
 13498
	for trivial rectangle lists. Using these for long term region
sl@0
 13499
	storage would be inefficient as when the buffer overflows it is
sl@0
 13500
	left lying around empty wasting memory.
sl@0
 13501
sl@0
 13502
	3. After calling Close() the region can safely be reused, before
sl@0
 13503
	it was left in a dangerous state with a pointer to the old freed
sl@0
 13504
	cell.
sl@0
 13505
sl@0
 13506
4) Jane
sl@0
 13507
	Changed EPOC to the new process relative chunk strategy. Under
sl@0
 13508
	this scheme, the process now owns a chunk, which contains the
sl@0
 13509
	.data and .bss (zero-filled data) sections. Each additional
sl@0
 13510
	thread now only has one chunk minimally, which contains its stack
sl@0
 13511
	and heap. This scheme saves on resources, and will allow the
sl@0
 13512
	process to live on if the main thread dies, a change I intend to
sl@0
 13513
	make later on.
sl@0
 13514
sl@0
 13515
	Added support for shared chunks in EPOC. A global chunk - one
sl@0
 13516
	created with RChunk::CreateGlobal() - can be shared by other
sl@0
 13517
	processes/threads if they do an OpenGlobal() of the same chunk,
sl@0
 13518
	by name.
sl@0
 13519
sl@0
 13520
	WARNING! The latter change has necessitated api changes in
sl@0
 13521
	RChunk, detailed below.
sl@0
 13522
sl@0
 13523
	1. The Create functions have gained an extra parameter, as shown.
sl@0
 13524
sl@0
 13525
	IMPORT_C TInt CreateLocal(TInt aSize,TInt aMaxSize);
sl@0
 13526
	IMPORT_C TInt CreateGlobal(const TDesC &aName,TInt aSize,TInt
sl@0
 13527
								aMaxSize);
sl@0
 13528
sl@0
 13529
	The new parameter, aSize, is the number of bytes to initially
sl@0
 13530
	commit to the chunk. IT IS NO LONGER NECESSARY TO ADJUST A NEW
sl@0
 13531
	CHUNK - it will be adjusted to aSize on creation.
sl@0
 13532
sl@0
 13533
	2. OpenGlobal has gained an extra parameter, as shown below.
sl@0
 13534
sl@0
 13535
	IMPORT_C TInt OpenGlobal(const TDesC &aName,TBool isReadOnly);
sl@0
 13536
sl@0
 13537
	The new parameter, isReadOnly, specifies whether the sharing
sl@0
 13538
	process wants readonly access to the chunk. Thus it is now
sl@0
 13539
	possible for the creator of a chunk to have read/write access to
sl@0
 13540
	it, but for others who share that chunk to be denied that
sl@0
 13541
	priviledge.
sl@0
 13542
sl@0
 13543
	3. As mentioned, it is now unnecessary to adjust a newly created
sl@0
 13544
	chunk. It will be adjusted to aSize bytes on creation.
sl@0
 13545
sl@0
 13546
5) Colly
sl@0
 13547
		1. Added Registry and Environment services
sl@0
 13548
sl@0
 13549
6) Graham
sl@0
 13550
		1. All release mode tests run on MARM
sl@0
 13551
sl@0
 13552
		2. Enhanced the MARM build to include DEBUG and UNICODE modes.
sl@0
 13553
sl@0
 13554
		3. Enhanced the Eiger Text Display Deiver to switch between
sl@0
 13555
		   1bpp, 2bpp, and 4bpp modes.
sl@0
 13556
sl@0
 13557
		4. Text Window server allows CTRL-ALT-1, CTRL-ALT-2,
sl@0
 13558
		   CTRL-ALT4 to switch display modes. The rack now boots up
sl@0
 13559
		   in 2bpp.mode.
sl@0
 13560
sl@0
 13561
		5. Released BOOTROM.BIN. It boots the rack in 2bpp mode, so
sl@0
 13562
		   the same .BIN file may be used for Text Window Server and
sl@0
 13563
		   Graphics Window Server ROM's.
sl@0
 13564
sl@0
 13565
		6. Added -fno-implicit-templates to the MARM builds and
sl@0
 13566
		   removed -fvtable-thunks.
sl@0
 13567
sl@0
 13568
7) Peter
sl@0
 13569
		1. Added proto-ramdrive.
sl@0
 13570
sl@0
 13571
sl@0
 13572
Version 0.01.055
sl@0
 13573
================
sl@0
 13574
(Made by Morgan, 18 March '96)
sl@0
 13575
sl@0
 13576
1). NickT,
sl@0
 13577
	TLex??. I have added two new classes TLexMark8 and TLexMark16 and
sl@0
 13578
	the obvious typedef TLexMark. These classes are used to record or
sl@0
 13579
	mark a positon in a TLex, hence
sl@0
 13580
		TLex8::Mark(TLexMark8& aMark)
sl@0
 13581
	which can be followed by, e.g.
sl@0
 13582
		TLex8::UnGetToMark(TLexMark8& aMark).
sl@0
 13583
	By and large, wherever there was a TLex?? member function which
sl@0
 13584
	used the internal mark, e.g. SkipSpaceAndMark, there is a new
sl@0
 13585
	member which is passed a TLexMark?? or reference to one.
sl@0
 13586
	I have retained the internal mark iMark, changing it to a
sl@0
 13587
	TLexMark, and all the existing member function remain, usually as
sl@0
 13588
	an inline function which passes the internal mark to the general
sl@0
 13589
	member function.
sl@0
 13590
	The TLex??::Val() members no longer use the internal mark to
sl@0
 13591
	recover from errors but use an automatic TLexMark?? constructed
sl@0
 13592
	within the function.
sl@0
 13593
sl@0
 13594
	T???Que(Base). I have added a member function Reset() to the Sgl,
sl@0
 13595
	DBl and Delta ques which just resets the que to be empty (the
sl@0
 13596
	offset remains unchanged).
sl@0
 13597
sl@0
 13598
	CArrayFix(Base)/CArrayVar(Base). I have added new member function
sl@0
 13599
	which over load the existing InsertIsqL members. The change is an
sl@0
 13600
	addition TInt& argument.
sl@0
 13601
	On returning from InsertIsqL, this is set to contain the position
sl@0
 13602
	within the array of either the new entry or, if the entry exists
sl@0
 13603
	and ENoDuplicates is passed, the position of the pre-existing
sl@0
 13604
	entry.
sl@0
 13605
sl@0
 13606
2). Morgan,
sl@0
 13607
	Plat::TickCount on WINS fixed so 1 tick = 1/10th of a second.
sl@0
 13608
	CBufxxx::New is now CBufxxx::NewL.  The CArray classes have been
sl@0
 13609
	altered to use these.
sl@0
 13610
	CActiveScheduler made concrete and constructor made public.
sl@0
 13611
sl@0
 13612
	Removed PopAndDestroyAll from TCleanupTrapHandler::Untrap which
sl@0
 13613
	now calls CCleanup::PreviousLevel().  This ASSERTS that the
sl@0
 13614
	cleanup stack's current level is empty.  All Pushes to the clean
sl@0
 13615
	up stack must be balanced with a Pop before the Trap unwinds
sl@0
 13616
	naturally.  +Test code.
sl@0
 13617
sl@0
 13618
	Added PushL() and Pop() member functions to TAutoClose so they
sl@0
 13619
	can be pushed onto the cleanup stack and are closed automatically
sl@0
 13620
	on a leave.  +Test code.
sl@0
 13621
sl@0
 13622
	Added TReal and TReal96 formating to TDes?::Format
sl@0
 13623
	New specifiers are:
sl@0
 13624
	%f(%F)	- format TReal(TReal96)  (was padding)
sl@0
 13625
	%e(%E)	- format TReal(TReal96) using exponent format
sl@0
 13626
	%g(%G)	- format TReal(TReal96) using general format
sl@0
 13627
	%p(%P)	- padding (used to be %f)
sl@0
 13628
	and
sl@0
 13629
	.n	- specify n decimal places
sl@0
 13630
sl@0
 13631
	New thread test code, to test Suspend/Resume while the thread is
sl@0
 13632
	suspended on a semaphore.
sl@0
 13633
sl@0
 13634
	Extended RTimer/CTimer with locked timers for synchronisation to
sl@0
 13635
	fractions of a second.
sl@0
 13636
sl@0
 13637
	Included USERTYPE.DAT in the release.
sl@0
 13638
sl@0
 13639
3). Jane,
sl@0
 13640
	Fixed Exc::Dispatch which was deferencing NULL in certain cases.
sl@0
 13641
	Fixed DLogonProcess derivation, which was incorrect under the new
sl@0
 13642
	single phase destruct.
sl@0
 13643
	Added kernel protection for bad handles in both kernel server and
sl@0
 13644
	executive. Now the user thread should get panicked for a bad
sl@0
 13645
	handle, rather than the kernel dying when dereferencing 0. Now
sl@0
 13646
	that this is in place, I would welcome reports of any remaining
sl@0
 13647
	kernel death due to bad parameters, so that we may tighten up any
sl@0
 13648
	remaining loopholes.
sl@0
 13649
sl@0
 13650
	Fixed CObjectIx::At which was panicking rather than returning 0 in
sl@0
 13651
	certain circumstances.
sl@0
 13652
	Added CObjectIx::AtL which leaves on a bad handle.
sl@0
 13653
sl@0
 13654
	Added low memory handling to the MMU, and enhanced test code to
sl@0
 13655
	test that there are no alloc heavens in low memory situations.
sl@0
 13656
	Note that the rem page allocator function FreeHomePage() now takes
sl@0
 13657
	a physical address as a parameter rather than a linear one.
sl@0
 13658
sl@0
 13659
	Added a new type of executive service, EXECUTIVE_SLOW_CONFORMANT
sl@0
 13660
	(int 22h on x86), which allows certain carefully chosen kernel
sl@0
 13661
	services to go re-entrant (i.e. be called from another slow kernel
sl@0
 13662
	executive service). Match8 and Match16 have been changed to this
sl@0
 13663
	new type, so that Match can be called from Exec::ThreadNext and
sl@0
 13664
	friends, thus allowing find services to work on EPOC.
sl@0
 13665
sl@0
 13666
4). Matthew,
sl@0
 13667
	Tiny change to T_CHUNK (x86): now assumes the executable is T_CHUNK
sl@0
 13668
	rather than TCHUNK, and the case used on the command-line is not
sl@0
 13669
	important.
sl@0
 13670
sl@0
 13671
5). SteveG
sl@0
 13672
	Key translation:
sl@0
 13673
	================
sl@0
 13674
	Combined the keyboard translator files into two source files,
sl@0
 13675
	KY_TRAN.CPP and KY_CAPT.CPP.
sl@0
 13676
	These make up EKTRAN.DLL, which carries out translating the
sl@0
 13677
	scancodes into keycodes and modifiers and handles capture keys.
sl@0
 13678
	KD_MC400.CPP makes up the keyboard translator data dll
sl@0
 13679
	(EKDATA.DLL). Removed all .data from this DLL by copious use of
sl@0
 13680
	const.
sl@0
 13681
sl@0
 13682
	Fixed the keytranslator so that modifier keys are returned as
sl@0
 13683
	EKeyNull.
sl@0
 13684
sl@0
 13685
	CCaptureKey and CKeyTranslator are now defined in e32svr.h for use
sl@0
 13686
	by the Window Server. w32keyb.h and w32keyb.inl no longer exist.
sl@0
 13687
	In order to use the keyboard translator, theWindow Server must at
sl@0
 13688
	startup create a new CKeyTranslator, eg:
sl@0
 13689
	CKeyTranslator* KeyTranslator=CKeyTranslator::New();
sl@0
 13690
sl@0
 13691
	The translate key function is defined as:
sl@0
 13692
	KeyTranslator->TranslateKey(TUint aScanCode, TBool aKeyUp, const
sl@0
 13693
			CCaptureKeys& aCaptureKeys, TKeyData& aKeyData)
sl@0
 13694
	and an extra function for obtaining the current modifier state
sl@0
 13695
	has been added:
sl@0
 13696
	TUint KeyTranslator->GetModifierState();
sl@0
 13697
sl@0
 13698
	Key Modifiers
sl@0
 13699
	=============
sl@0
 13700
	EModifier enums are now defined in e32virt.h and are at the top
sl@0
 13701
	level. Anyone making use of 'TEvent::EModifierXxxxx' should
sl@0
 13702
	globally replace 'TEvent::EModifier' to 'EModifier'.
sl@0
 13703
	Removed the TModifier class. A normal TUint should be used in
sl@0
 13704
	place of TModifier, and anyone using the modifier functions
sl@0
 13705
	IsOn(), IsOff(), TurnOn() etc should do this using | and & etc.
sl@0
 13706
sl@0
 13707
	E32 TEvents
sl@0
 13708
	===========
sl@0
 13709
	Changed the E32 TEvent structure, and renamed it TRawEvent. A
sl@0
 13710
	TRawEvent is passed to the Window Server, which will create a
sl@0
 13711
	TWservEvent as before. TRawEvent is defined in e32svr.h and no
sl@0
 13712
	longer includes the modifier state. The modifier state is added in
sl@0
 13713
	in the Window Server for events that require the modifer state,
sl@0
 13714
	rather than being worked out and passed around for every event
sl@0
 13715
	type.
sl@0
 13716
	Changed the event types. Mouse events have been removed and
sl@0
 13717
	replaced with EPointerMove and EButtonNDown/Up events. The new
sl@0
 13718
	event types, defined in e32svr.h are:
sl@0
 13719
	enum TType
sl@0
 13720
	{
sl@0
 13721
	ENone,
sl@0
 13722
	EPointerMove,
sl@0
 13723
	EKeyDown,EKeyUp,
sl@0
 13724
	ERedraw,
sl@0
 13725
	ESwitchOn,
sl@0
 13726
	EInactive,
sl@0
 13727
	EButton1Down,EButton1Up,
sl@0
 13728
	EButton2Down,EButton2Up,
sl@0
 13729
	EButton3Down,EButton3Up
sl@0
 13730
	};
sl@0
 13731
sl@0
 13732
	Changed all occurences of TEvent and TEventBuf to TRawEvent and
sl@0
 13733
	TRawEventBuf respectively in the E32 source and header files.
sl@0
 13734
	Changed Event.Set() and RawEvent copy constructors etc so they no
sl@0
 13735
	longer use the shiftState.
sl@0
 13736
sl@0
 13737
6). Colly,
sl@0
 13738
	Changes required to implement the proposal to give DLLs a globally
sl@0
 13739
	unique identifier (GUID) which can be checked before trying to
sl@0
 13740
	call any of the functions in the DLL. It adds two functions to
sl@0
 13741
	RLibrary as well as adding the concrete data type TGuid. Included
sl@0
 13742
	is a test program T_GUID along with a test DLL T_UID, all of which
sl@0
 13743
	live in TBAS. I have also fixed bugs in the .MAK files for EKTRAN
sl@0
 13744
	and EKDATA.
sl@0
 13745
sl@0
 13746
	A new version of t_romg.cpp which was broken by changes to
sl@0
 13747
	TDes?::Format() (i.e. changing %f to %p for padding).
sl@0
 13748
sl@0
 13749
7). Jal,
sl@0
 13750
	Added methods to CSession:
sl@0
 13751
	IMPORT_C void ResourceCountMarkStart();
sl@0
 13752
	Panics client if CountResources returns KErrGeneral
sl@0
 13753
	IMPORT_C void ResourceCountMarkEnd();
sl@0
 13754
	Panics client if CountResources != iResourceCountMark
sl@0
 13755
	IMPORT_C virtual TInt CountResources();
sl@0
 13756
	Default implementation returns KErrGeneral
sl@0
 13757
sl@0
 13758
sl@0
 13759
Version 0.01.054
sl@0
 13760
================
sl@0
 13761
(Made by Morgan, 23 Feb '96)
sl@0
 13762
sl@0
 13763
1). Colly
sl@0
 13764
	Removed two phase destruction. Note that all objects derived from
sl@0
 13765
	CActive must call Cancel() in their destructors. Note that
sl@0
 13766
	Adt::Destroy() has disappeared (replace with delete).
sl@0
 13767
	The class TAggregate depended on Adt::Destroy(), so it has
sl@0
 13768
	also disappeared (I don't think anyone was using it anyway).
sl@0
 13769
sl@0
 13770
	Renamed E32ADT.H to E32BASE.H and the project UADT and TADT to
sl@0
 13771
	UBAS and TBAS. Decided not to include E32BASE.H in E32STD.H as
sl@0
 13772
	anyone can include E32BASE.H directly and achieve the same effect.
sl@0
 13773
sl@0
 13774
	Removed all TBuf_10, TBuf_20 etc variants.
sl@0
 13775
sl@0
 13776
2). Jane
sl@0
 13777
	Added an extra flag to TModifier: EModifierDoubleClick=0x00800000
sl@0
 13778
sl@0
 13779
	Fixed DLogons which were writing back the wrong status into the
sl@0
 13780
	logged thread. The net effect being that now when you try to run a
sl@0
 13781
	program which doesn't exist, you don't crash the OS.
sl@0
 13782
sl@0
 13783
	Added the window server to the dll startup scheme so that the font
sl@0
 13784
	server can be started before it. Look at wsrc\ws_utl.cpp to see
sl@0
 13785
	E32's window server startup code.
sl@0
 13786
sl@0
 13787
	Added thread relative handles for DServer, DSession and client
sl@0
 13788
	DThread in server DThread. This was necessary for proper cleanup
sl@0
 13789
	of sessions when server and client threads died. It has the
sl@0
 13790
	side-effect of making the WINS implementation much more like the
sl@0
 13791
	EPOC one - and will show up any bugs where sessions are used from
sl@0
 13792
	another thread.
sl@0
 13793
sl@0
 13794
	Added the Window Server to the dll startup scheme so that the font
sl@0
 13795
	server can be started before it.
sl@0
 13796
sl@0
 13797
	Fixed bug in CObjectIx::Destruct(), HA-19.
sl@0
 13798
sl@0
 13799
3). Matthew
sl@0
 13800
	Changed the base to use the new CServer/CSession with ServiceL in
sl@0
 13801
	CSession insted of CServer. The new versions of CSession and
sl@0
 13802
	CServer are now what used to be called CNewSession and CNewServer.
sl@0
 13803
	The windows server and test code use this new scheme.
sl@0
 13804
	If you have your own server/session then to convert you must
sl@0
 13805
	replace your CServer::ServiceL(RMessage&,CSession&) with a
sl@0
 13806
	CSession::ServiceL(RMessage&). In addition, if you have supplied
sl@0
 13807
	a CSession::CreateL() it should now be a
sl@0
 13808
	CSession::CreateL(CServer&).
sl@0
 13809
sl@0
 13810
	Made TSglQueLink::Enque() private and TSglQueBase a friend of
sl@0
 13811
	TSglQueLink. Removed calls to Enque in T_SQUE.
sl@0
 13812
sl@0
 13813
	Fixed X86 chunk routines. Additionally, changed WINS so that if
sl@0
 13814
	you try to create a chunk of negative/zero size it returns
sl@0
 13815
	KErrArgument instead of KErrGeneral.
sl@0
 13816
sl@0
 13817
4). SteveG
sl@0
 13818
	This change affects the Window Server:
sl@0
 13819
	Changed TKeyTranslator::TranslateKey(). It no longer accepts a
sl@0
 13820
	TModifier as the second parameter. This function now takes care of
sl@0
 13821
	working out and storing the current key modifier states.
sl@0
 13822
	Now implemented as:
sl@0
 13823
	TBoot TKeyTranslator::TranslateKey(TUint aScanCode, TBool aKeyUp,
sl@0
 13824
		const CCaptureKeys& aCaptureKeys, SKeyData& aKeyData);
sl@0
 13825
sl@0
 13826
	Altered \wsrc\ws_main.cpp and \wsrc\keytran.h accordingly, and
sl@0
 13827
	altered keytran.cpp to work out the key modifier states from the
sl@0
 13828
	supplied scancodes.
sl@0
 13829
	The keycode translator is now part of E32 as two DLL's: EKDATA.DLL
sl@0
 13830
	and EKTRAN.DLL.
sl@0
 13831
sl@0
 13832
	Added the stub for the Gdb debugger. This adds two classes, Gdb
sl@0
 13833
	and ImpGdb. Class Gdb handles the communication protocol to the
sl@0
 13834
	remote PC running the debugger. The ImpGdb class handles all the
sl@0
 13835
	implementation specific functions such as returning register
sl@0
 13836
	values, setting breakpoints and the sending and receiving of data
sl@0
 13837
	packets to the remote PC.
sl@0
 13838
sl@0
 13839
	Altered \e32\kex86\ke_int.cpp to pass control to the Gdb stub when
sl@0
 13840
	a breakpoint or single step trap occurs, and \e32\kearm\ke_int.cpp
sl@0
 13841
	to pass control to the Gdb stub when an undefined instruction is
sl@0
 13842
	executed.
sl@0
 13843
sl@0
 13844
5). Morgan
sl@0
 13845
	Fixed thread cleanup code to cancel the threads timer if it had
sl@0
 13846
	not completed when the thread died.  Previously the destructor was
sl@0
 13847
	attempting to close it after the thread's heap had been removed.
sl@0
 13848
sl@0
 13849
	Made TInt64A::Cmp into a signed compare.
sl@0
 13850
	Fixed the DivMod function and other small fixes to get TInt64 code
sl@0
 13851
	running on the rack.
sl@0
 13852
	TInt64 operator >> now does an ASR.  TInt64::Asr() has become
sl@0
 13853
	TInt64::Lsr()
sl@0
 13854
sl@0
 13855
	Alloc fail tool changes:
sl@0
 13856
	__xHEAP_FAILNEXT(n) now fails once on the nth mem alloc.
sl@0
 13857
	CTimer::Create has become CTimer::ConstructL.
sl@0
 13858
	CActiveScheduler is now concrete.
sl@0
 13859
sl@0
 13860
6). Graham
sl@0
 13861
	Incorporated ARM E32 - find GCC porting guide in 'Protea Software Design'.
sl@0
 13862
	Modified test programs so that they build under gcc.
sl@0
 13863
	Added digitiser code (XYIN) and general ADC control code.
sl@0
 13864
	Added compiler support functions for software floating point.
sl@0
 13865
	Added 'float' conversion routines to UM_R96.CPP
sl@0
 13866
	Removed data from ELOCL.DLL by appropriate use of const in LSRC\*.CPP
sl@0
 13867
sl@0
 13868
	**** WARNING TO SERVER WRITERS ****
sl@0
 13869
sl@0
 13870
	CSession::CreateL(CServer& aServer) has changed to
sl@0
 13871
	CSession::CreateL(const CServer& aServer)
sl@0
 13872
sl@0
 13873
	This is a virtual function. If you supply your own version of this
sl@0
 13874
	function, then be sure to change its prototype. If you don't then you won't
sl@0
 13875
	get a compiler warning, but your program won't work any more.
sl@0
 13876
sl@0
 13877
sl@0
 13878
Version 0.01.053
sl@0
 13879
================
sl@0
 13880
(Made by Morgan, 29 Jan '96)
sl@0
 13881
sl@0
 13882
1).	Matthew
sl@0
 13883
	Removed all trace of the old date\time classes.
sl@0
 13884
sl@0
 13885
	\E32\TCDT\T_FIND, which tests the find handles.
sl@0
 13886
	There's also a modified version of \E32\TCDT\T_KERN.CPP, which has had it's
sl@0
 13887
	brief TFindXxxx tests expanded to include the ones it previously missed out.
sl@0
 13888
sl@0
 13889
2).	SteveT
sl@0
 13890
	I'm just putting keyboard repeats into the window server. I've put this change
sl@0
 13891
	into \E32\KPWINS\KP_GUI.CPP to block windows auto repeats from getting
sl@0
 13892
	through.
sl@0
 13893
sl@0
 13894
	line 169:
sl@0
 13895
	case WM_SYSKEYDOWN:
sl@0
 13896
	case WM_KEYDOWN:
sl@0
 13897
	if (!(HIWORD(lParam)&KF_REPEAT))
sl@0
 13898
		{
sl@0
 13899
		v.Set(TEvent::EKeyDown,PP::Sca....
sl@0
 13900
		Kern::AddEvent(v);
sl@0
 13901
		}
sl@0
 13902
	break;
sl@0
 13903
sl@0
 13904
	Another change to KP_GUI.CPP to get the keyboard repeats going properly. This
sl@0
 13905
	adds a new TEvent type EInActive that informs me when the E32 window has lost
sl@0
 13906
	focus, the change I've done is as below.
sl@0
 13907
sl@0
 13908
	case WM_ACTIVATE:      // line 207
sl@0
 13909
	if ((lParam&0xFFFF)==WA_INACTIVE)
sl@0
 13910
		{
sl@0
 13911
		v.Set(TEvent::EInActive);
sl@0
 13912
		Kern::AddEvent(v);
sl@0
 13913
		}
sl@0
 13914
	break;
sl@0
 13915
	case WM_CHAR:
sl@0
 13916
sl@0
 13917
	I'm not sure if this the best solution, presumably for completeness there
sl@0
 13918
	should be an EActive event as well, or add a true/false parameter to the event
sl@0
 13919
	to say whether it's an active or inactive message.
sl@0
 13920
	Of course on the real machine these events will never be used but I don't see
sl@0
 13921
	that as a problem.
sl@0
 13922
sl@0
 13923
3).	Morgan
sl@0
 13924
	Serial drivers for X86 and Eiger platforms.
sl@0
 13925
	TLinearSectionRam::CreateRegion now rounds the committed size argument to page
sl@0
 13926
	size before calling Map.
sl@0
 13927
sl@0
 13928
4).	Natascha
sl@0
 13929
	Character set conversion.
sl@0
 13930
	New test code (t_chset, t_chset2, t_chcon) for Unicode build
sl@0
 13931
sl@0
 13932
5).	Jane
sl@0
 13933
	Added User::SetDebugMask to allow the setting of the trace mask around
sl@0
 13934
	important sections of code.
sl@0
 13935
sl@0
 13936
	Fixed various DSession closing and CServer bugs, including HA-51. EPOCX86 can
sl@0
 13937
	now run a test program more than once!!
sl@0
 13938
sl@0
 13939
	Fixed a process creation bug.
sl@0
 13940
sl@0
 13941
sl@0
 13942
Version 0.01.052
sl@0
 13943
================
sl@0
 13944
(Made by Matthew, 16 Jan '96)
sl@0
 13945
sl@0
 13946
1). Matthew
sl@0
 13947
	Modified the kernel to use the new date/time classes internally. This includes
sl@0
 13948
	the addition of new overloaded functions duplicating old ones. This should not
sl@0
 13949
	effect the external interface except in a few cases, where some functions have
sl@0
 13950
	been renamed XxxOld().
sl@0
 13951
sl@0
 13952
	In release 053 the old functions will be removed and some data members will be
sl@0
 13953
	changed to the new date/time classes.
sl@0
 13954
sl@0
 13955
2). Natascha
sl@0
 13956
	Character set conversion.
sl@0
 13957
sl@0
 13958
	Replaced \e32\lsrc\LS_850.CPP with new file \e32\lsrc\LS_LAT1.CPP, which has
sl@0
 13959
	the same format:
sl@0
 13960
sl@0
 13961
			type table for characters
sl@0
 13962
		and     conversions for upper case, lower case, folding and collating.
sl@0
 13963
sl@0
 13964
	for the Windows ISO Latin 1 character set.
sl@0
 13965
sl@0
 13966
	There are 3 test programs:
sl@0
 13967
sl@0
 13968
	1) \e32\tlocale\t_chset.mak which writes to a file "chtest.txt" the descriptions
sl@0
 13969
	for the characters 32 - 255 together with a description of the character it is
sl@0
 13970
	mapped to for each of the upper case, lower case, folding and collating conversions.
sl@0
 13971
	It does this by reading from the tables in LS_LAT1.CPP directly.  This is designed
sl@0
 13972
	to test the mapping tables in LS_LAT1.CPP.
sl@0
 13973
sl@0
 13974
	2) \e32\tlocale\t_chset2.mak which produces the same output to a file "chtest2.txt"
sl@0
 13975
	and console, but uses the functions provided by the TChar class instead of reading
sl@0
 13976
	the tables directly.  This is designed to test that the changes made in
sl@0
 13977
	\e32\bwins\elocl.mak have taken effect.  Note there is no collate output since
sl@0
 13978
	TChar has no collate function.
sl@0
 13979
sl@0
 13980
	3) \e32\tlocale\t_chcon.mak which produces a console output displaying the
sl@0
 13981
	attributes of a range of characters 0xC0-0xCF using functions in TChar.  This
sl@0
 13982
	tests that the type table in LS_LAT1.CPP is correct.
sl@0
 13983
sl@0
 13984
	All 3 test programs read from the text file e32\tlocale\winiso.txt.
sl@0
 13985
sl@0
 13986
	Note that currently these new tests do not compile in unicode build.
sl@0
 13987
sl@0
 13988
3). Matthew
sl@0
 13989
	Replaced TBool TRegion::Check() with TBool TRegion::IsContainedBy(), which
sl@0
 13990
	has the opposite sense, ie it returns ETrue when Check() returned EFalse and
sl@0
 13991
	vice-versa.
sl@0
 13992
sl@0
 13993
4). Roger
sl@0
 13994
	Added write(0) functionality to the serial LDD.
sl@0
 13995
sl@0
 13996
	A request to Write(...) with either a zero length descriptor or an explicit
sl@0
 13997
	zero length will not complete until the control lines are asserted in such a
sl@0
 13998
	way that a further write would actually send characters on to the line. The
sl@0
 13999
	exact behaviour of write(0) depends upon the iHandshaking field in the current
sl@0
 14000
	config.
sl@0
 14001
sl@0
 14002
	eg.
sl@0
 14003
	void WaitForCTS(RComm& aSerial)
sl@0
 14004
	//
sl@0
 14005
	// Synchronously wait for CTS to be asserted, assumes aSerial is Open.
sl@0
 14006
	//
sl@0
 14007
		{
sl@0
 14008
		TCommConfig cBuf;
sl@0
 14009
		TCommConfigV01& c=cBuf();
sl@0
 14010
		aSerial.Config(cBuf);
sl@0
 14011
		c.iHandshake=KConfigObeyCTS;
sl@0
 14012
		TRequestStatus stat;
sl@0
 14013
		aSerial.Write(stat,TPtr8(NULL,0),0);
sl@0
 14014
		User::WaitForRequest(stat);
sl@0
 14015
		}
sl@0
 14016
sl@0
 14017
	The XOn/XOff bits of iHandshaking are ignored for Write(0).
sl@0
 14018
sl@0
 14019
	There are no changes to the PDD.
sl@0
 14020
sl@0
 14021
5). Jane
sl@0
 14022
	Wrote display dll, video device (LDD) and VGA driver (PDD) for EPOCx86.
sl@0
 14023
sl@0
 14024
	Fixed ImpHal::DisableInt() which was only pushing 16 bits of flags.
sl@0
 14025
sl@0
 14026
	KMaxSectionBase in m32std.h was wrong - fixed.
sl@0
 14027
sl@0
 14028
	Added TExec which tests number of exec calls in one second.
sl@0
 14029
sl@0
 14030
6). Graham
sl@0
 14031
	Fixed allocation of run addresses to chunks in DPlatProcess::
sl@0
 14032
	AllocateDataSectionBase().
sl@0
 14033
sl@0
 14034
7). Roger
sl@0
 14035
	Implemented CNewServer and CNewSession to run alongside CServer and CSession as
sl@0
 14036
	proposed in MartinT's E32 proposal "ServiceL() should belong to CSession, not
sl@0
 14037
	CServer". See E32 proposals for the API.
sl@0
 14038
sl@0
 14039
	This code is not part of a fully accepted proposal as yet - the code is included
sl@0
 14040
	in the release to A) make further testing with the socket server less painful
sl@0
 14041
	and B) allow others to migrate servers to the new scheme if they wish.
sl@0
 14042
sl@0
 14043
	Assuming the proposal becomes accepted, CServer and CSession will be replaced
sl@0
 14044
	with CNewServer and CNewSession.
sl@0
 14045
sl@0
 14046
8). Matthew
sl@0
 14047
	Maths bug fixes and test code.
sl@0
 14048
sl@0
 14049
sl@0
 14050
Version 0.01.051
sl@0
 14051
================
sl@0
 14052
(Made by Matthew, 21 Dec '95)
sl@0
 14053
sl@0
 14054
1). Jane
sl@0
 14055
	Implemented dll and device loading for EPOC platforms.
sl@0
 14056
sl@0
 14057
	IMPORTANT NOTE
sl@0
 14058
	We have decided that when the entrypoint of a dll (E32Dll) succeeds, it should
sl@0
 14059
	return KErrNone rather than TRUE. Under WINS, the true entrypoint (_E32Dll)
sl@0
 14060
	converts KErrNone to TRUE before returning, but under EPOC this is not
sl@0
 14061
	necessary and we get tighter code by being able just to pass on the return
sl@0
 14062
	value of E32Dll().
sl@0
 14063
	So in release 051 all dll entrypoints must now return KErrNone if successful.
sl@0
 14064
sl@0
 14065
	Added functions TBool User::JustInTime() and User::SetJustInTime(TBool) to
sl@0
 14066
	allow getting/setting a kernel variable which controls whether the debugger
sl@0
 14067
	macro executes its int 3 to do just in time debugging of panics with Visual
sl@0
 14068
	C++. The default is ETrue, i.e. just in time debugging is enabled.
sl@0
 14069
	All test code which traps deliberate panics should set this variable to
sl@0
 14070
	false around the code in question, to prevent Visual C++ firing up. See
sl@0
 14071
	TADT\T_CTIMER.CPP
sl@0
 14072
sl@0
 14073
2). Morgan
sl@0
 14074
	Changes to TReal96:  Changed KMatissaBits back to 53.
sl@0
 14075
	Added Normalise and Prepare functions.
sl@0
 14076
	GetTReal is now a const function.
sl@0
 14077
sl@0
 14078
3). Gillian
sl@0
 14079
	Changes to the date and time classes
sl@0
 14080
sl@0
 14081
	The following is a summary of the new classes, but see the report in E32 proposals
sl@0
 14082
	(Replacement for the existing date and time classes), and the ensuing discussion
sl@0
 14083
	for a fuller description of the classes and the motivation for these changes.
sl@0
 14084
sl@0
 14085
	To avoid a name clash, the existing TDateTime class has been renamed TOldDateTime.
sl@0
 14086
	This along with TSystemTime, SDaySec, SDate and STime and the static date and time
sl@0
 14087
	functions in Userwill be withdrawn in release 053.
sl@0
 14088
sl@0
 14089
	The functionality previously in TDateTime is provided by TTime which holds the
sl@0
 14090
	number of microseconds since midnight on 1st January 0AD in a TInt64. A TTime
sl@0
 14091
	object may be constructed from a TInt64, a TDateTime (see below) or a string
sl@0
 14092
	literal. Default construction will set the time 0.00am 1st January 2000AD. This
sl@0
 14093
	class also supports comparisons between TTimes, the addition of TTimeIntervals
sl@0
 14094
	(see below) to TTimes and the subtraction of TTimes (giving a TTimeInterval as the
sl@0
 14095
	result). Such arithmetic operations are allowed to over- or underflow, but an error
sl@0
 14096
	is returned if the results of a subtraction are too large to fit in the relevent
sl@0
 14097
	(32-bit) TTimeInterval.
sl@0
 14098
sl@0
 14099
	The class TTimeIntervalMicroSeconds represents a 64-bit signed difference and the
sl@0
 14100
	classes TTimeIntervalSeconds, ...Minutes, ...Hours, ...Days, ...Months, ...Years
sl@0
 14101
	all derived from TTimeIntervalBase represent the differences in the rest of the
sl@0
 14102
	time bases in a 32-bit signed integer. These classes only support getting, setting
sl@0
 14103
	and comparison functions.
sl@0
 14104
sl@0
 14105
	The new class TDateTime has been defined for easy user access to TTime. It has
sl@0
 14106
	year, month, day, hour, minute, second and microsecond data members, all held as
sl@0
 14107
	TInts and therefore replaces the SDate and STime structs. This can hold times longer
sl@0
 14108
	than TTime but no checks will be made on construction or assignment. The TDateTime
sl@0
 14109
	class will only support getting and setting functions.
sl@0
 14110
sl@0
 14111
	The static functions date and time functions previously in User are now in the class
sl@0
 14112
	Time.
sl@0
 14113
sl@0
 14114
	Omissions - BC dates, string parsing.
sl@0
 14115
	Proviso   - Due to bug in TInt64 class Time::MaxTTime() and MinTTime() fail comparisons
sl@0
 14116
sl@0
 14117
4). Colly
sl@0
 14118
	Removed RThread::Read() and Write() variants taking 2 parameters.
sl@0
 14119
sl@0
 14120
	Provided RMessage::ReadL and WriteL functions. These call the appropriate Client
sl@0
 14121
	functions, so the code like
sl@0
 14122
		myMessage.Client().Read(...)
sl@0
 14123
	should now be changed to
sl@0
 14124
		myMessage.ReadL(...)
sl@0
 14125
sl@0
 14126
	Removed AllocHeaps.
sl@0
 14127
sl@0
 14128
	Added preliminary code for support of shared heaps. In functions where a heap was
sl@0
 14129
	previously created using given min and max heap sizes there is now an extra argument:
sl@0
 14130
	RHeap * aHeap. If this is NULL then everything proceeds as before. Otherwise, the
sl@0
 14131
	given heap is used. However, this is not properly implemented as yet and so for now
sl@0
 14132
	you should always pass a null pointer.
sl@0
 14133
sl@0
 14134
	Replaced the constructor RHeap(THeapType aType,TInt aMinLength,TInt aMaxLength,TInt
sl@0
 14135
	aGrowBy) with RHeap(TInt aMaxLength).
sl@0
 14136
sl@0
 14137
5). Matthew
sl@0
 14138
	If TCallBack::iFunction==NULL then TCallBack::CallBack() returns 0. The default
sl@0
 14139
	constructor now sets iFunction=NULL.
sl@0
 14140
sl@0
 14141
	CBufBase::DoInsertL() has been made private and a new overloaded variant of InsertL
sl@0
 14142
	has been added.
sl@0
 14143
sl@0
 14144
	Added CActiveScheduler::Level(), which returns iLevel.
sl@0
 14145
sl@0
 14146
6). New error codes:
sl@0
 14147
	const TInt KErrTimedOut=(-33);
sl@0
 14148
	const TInt KErrCouldNotConnect=(-34);
sl@0
 14149
	const TInt KErrCouldNotDisconnect=(-35);
sl@0
 14150
	const TInt KErrSubSystem=(-36);
sl@0
 14151
	const TInt KErrBadLibraryEntryPoint=(-37);
sl@0
 14152
	const TInt KErrBadDescriptor=(-38);
sl@0
 14153
sl@0
 14154
sl@0
 14155
Version 0.01.050
sl@0
 14156
================
sl@0
 14157
(Made by Matthew, 12 Dec '95)
sl@0
 14158
sl@0
 14159
1). Roger/Mark
sl@0
 14160
	Comms bug fixes.
sl@0
 14161
sl@0
 14162
2). Jal
sl@0
 14163
	Circular buffer bug fix.
sl@0
 14164
sl@0
 14165
3). Roger
sl@0
 14166
	RThread::Duplicate() fix.
sl@0
 14167
sl@0
 14168
4). Jane
sl@0
 14169
	Improved the build system. Added mnt cleanup, mnt cleanwins and mnt
sl@0
 14170
	cleanx86 which delete all the intermediate files for all builds, just
sl@0
 14171
	WINS and just X86 respectively. A cleanup should always be performed
sl@0
 14172
	before the first build of a new release of E32.
sl@0
 14173
sl@0
 14174
	Fixed clean-up of a thread's kernel server session when it dies.
sl@0
 14175
sl@0
 14176
	DPlatThread::Create() was not opening the thread it created, and thus
sl@0
 14177
	the access count was too low, causing death when the thread died. Fixed.
sl@0
 14178
sl@0
 14179
	Fixed TTimerInt::TimerComplete() to switch interrupts off during the
sl@0
 14180
	non-atomic decrement of the dfc pending flag.
sl@0
 14181
sl@0
 14182
	Made CObject::AccessCount() public rather than protected - mainly for use
sl@0
 14183
	in debugging.
sl@0
 14184
sl@0
 14185
5). Geert
sl@0
 14186
	Changed to a new scheme for boolean values. As the change has considerable
sl@0
 14187
	impact there is a fair amount of material here, including some background
sl@0
 14188
	information. Feel free to skip anything that looks familiar:
sl@0
 14189
sl@0
 14190
	In a statement such as
sl@0
 14191
		if (cond) s1;
sl@0
 14192
		else s2;
sl@0
 14193
	C++ will execute s1 if cond!=0, and s2 if cond==0.  In general, C++ treats
sl@0
 14194
	boolean values as false if they are equal to zero, and true if they are
sl@0
 14195
	anything else.  The if statement, ?:, &&, || and ! operators all work on
sl@0
 14196
	this assumption.
sl@0
 14197
sl@0
 14198
	However, the _result_ of a C++ calculation with boolean values is defined
sl@0
 14199
	to be zero for false, and (int) 1 for true: the built-in &&, ||, !, ==,
sl@0
 14200
	!=, <, >, <= and >= operators all return either 0 or 1.
sl@0
 14201
sl@0
 14202
	Thus, although 1 is the most usual value representing 'true', it is not
sl@0
 14203
	the only value that can mean 'true'.  It is therefore _bad practice_ to
sl@0
 14204
	compare any boolean variable with 1 (or ETrue, or TRUE), to see whether
sl@0
 14205
	it's true:
sl@0
 14206
		if (x==ETrue) s1;
sl@0
 14207
	will only execute s1 if x==1, whereas
sl@0
 14208
		if (x) s1;
sl@0
 14209
	will execute s1 if x!=0, which is the correct definition of 'true'ness.
sl@0
 14210
sl@0
 14211
	The draft ANSI C++ standard includes a 'bool' type that has the right
sl@0
 14212
	properties.  The TBool introduced here has two main design goals:
sl@0
 14213
	(i) when ANSI compilers become widely available, it will be possible to
sl@0
 14214
	replace the current type definition with
sl@0
 14215
		typedef bool TBool;
sl@0
 14216
	and everything will work perfectly
sl@0
 14217
	(ii) it is designed to cause the compiler to generate an error message
sl@0
 14218
	whenever a TBool is compared with ETrue.  This forces you to fix code that
sl@0
 14219
	is potentially in error, before your code will successfully compile.
sl@0
 14220
sl@0
 14221
	TBool is no longer an enumeration. It is now an integral type best thought
sl@0
 14222
	of as the type of boolean operators such as <, ==, !=, etc. The only
sl@0
 14223
	significant property of its values is whether they are zero (false) or
sl@0
 14224
	non-zero (true). The EFalse and ETrue enumeration constants are available
sl@0
 14225
	as boolean literals, but a TBool does _not_ have to be equal to ETrue to
sl@0
 14226
	be considered true.
sl@0
 14227
sl@0
 14228
	This has some impact on the kinds of expressions you can meaningfully
sl@0
 14229
	write using TBools. Comparisons between boolean variables are meaningless,
sl@0
 14230
	for instance. On the other hand, a statement such as
sl@0
 14231
		if (x==EFalse) s1;
sl@0
 14232
	is equivalent to
sl@0
 14233
		if (!x) s1;
sl@0
 14234
	which is not only more concise but also more expressive in many contexts.
sl@0
 14235
sl@0
 14236
	The most common meaningless expressions involving TBools; i.e., the likes
sl@0
 14237
	of
sl@0
 14238
		if (x==ETrue) s1;
sl@0
 14239
	are trapped at compile time, or link time at the latest. Use
sl@0
 14240
		if (x) s1;
sl@0
 14241
	instead.
sl@0
 14242
sl@0
 14243
	Another commonly used construct is
sl@0
 14244
		return(x ? ETrue : EFalse);
sl@0
 14245
	where the conditional is now entirely redundant. As a side effect of the
sl@0
 14246
	definition of EFalse and ETrue, this code no longer compiles. Examples of
sl@0
 14247
	other code intended to achieve the same effect are:
sl@0
 14248
		return((TBool)(x));
sl@0
 14249
	or
sl@0
 14250
		if (x) return(ETrue);
sl@0
 14251
		else return(EFalse);
sl@0
 14252
	or one of many variants. These are not picked up by the compiler.
sl@0
 14253
sl@0
 14254
	Comparisons of one TBool to another are not trapped, nor are other
sl@0
 14255
	meaningless constructs such as
sl@0
 14256
		if (x<=ETrue) s1;
sl@0
 14257
sl@0
 14258
	To help the human reader, all boolean values should be declared as TBool,
sl@0
 14259
	including: member data; function parameters taking booleans; functions
sl@0
 14260
	returning booleans and especially overloaded boolean operators such as
sl@0
 14261
	operator==(), operator!=() etc. Where booleans are packed into TInt8s or
sl@0
 14262
	the like to save space, consider using a flags word instead.
sl@0
 14263
sl@0
 14264
	In rare cases TBools may have to be converted into integer values. This
sl@0
 14265
	may be the case when packing booleans into bytes, or when streaming them
sl@0
 14266
	out. One elegant and efficient way of doing that is to compare to EFalse;
sl@0
 14267
	e.g.,
sl@0
 14268
		TUint8 iPresent[aColorComponent]=(TUint8)(aComponentPresent!=EFalse);
sl@0
 14269
	Just casting is not sufficient because vital non-zero bits in the incoming
sl@0
 14270
	boolean may be lost.
sl@0
 14271
sl@0
 14272
	Moreover, it is sometimes useful to assert things about the exact integer
sl@0
 14273
	value of a boolean. One example of this is test code. The built-in boolean
sl@0
 14274
	operators return either 0 or 1. It may be desirable to specify the same
sl@0
 14275
	behaviour for overloaded operators or even ordinary member functions. Use
sl@0
 14276
	the FALSE and TRUE macros in those cases; e.g.,
sl@0
 14277
		test((des1<des2)==TRUE);
sl@0
 14278
sl@0
 14279
	The macros may also be useful when an ordinary integer is regarded as a
sl@0
 14280
	boolean. The E32Dll() entry point returns a TInt, for instance. FALSE and
sl@0
 14281
	TRUE may be used in that context. Another use is at the interface with
sl@0
 14282
	external code, such as the Win32 API. As a final example: a callback
sl@0
 14283
	function to be used in the context of a CIdle object might use the macros,
sl@0
 14284
	since its TInt return value is interpreted as a boolean.
sl@0
 14285
sl@0
 14286
	Note that the conversion to this new scheme is only partially implemented
sl@0
 14287
	in the base.
sl@0
 14288
sl@0
 14289
6). Steve
sl@0
 14290
	New functions TSize TPoint::AsSize and TPoint TSize::AsPoint return
sl@0
 14291
	this as the respective type. Removed overloaded functions in TPoint,
sl@0
 14292
	TSize and TRect.
sl@0
 14293
sl@0
 14294
	TSize::SetWH renamed to SetSize.
sl@0
 14295
sl@0
 14296
	TRect - Functions renamed from Offset to Move and Normalise to
sl@0
 14297
	Normalize. New functions: Size, Width, Height, IsNormalized, Center,
sl@0
 14298
	SetSize, SetWidth and SetHeight.
sl@0
 14299
sl@0
 14300
sl@0
 14301
Version 0.01.049
sl@0
 14302
================
sl@0
 14303
(Made by Matthew, 21 Nov 1995)
sl@0
 14304
sl@0
 14305
1). Andrew
sl@0
 14306
	The constness of the parameters to CCleanup::PushL and
sl@0
 14307
	CleanupStack::PushL has gone.
sl@0
 14308
sl@0
 14309
	CCleanup and CleanupStack now have an extra PushL overload: This
sl@0
 14310
	takes a TCleanupItem, which is callback. This enables any component
sl@0
 14311
	to be placed on the cleanup stack by providing a implicit cast to
sl@0
 14312
	TCleanupItem: the component will require a static member which conforms
sl@0
 14313
	to the TCleanupOperation prototype, with which it can constuct a
sl@0
 14314
	TCleanupItem. The overhead of all this is negligible _only_ if the cast
sl@0
 14315
	operator is inline!
sl@0
 14316
sl@0
 14317
	See the RItem class in the T_CTRAP test code for an example of how to
sl@0
 14318
	do this.
sl@0
 14319
sl@0
 14320
	It is possible to push a no-data callback on the stack, though the function
sl@0
 14321
	must take a dummy TAny * parameter. Such a function can be PushLed
sl@0
 14322
	directly, as TCleanupItem provides a constructor from a TCleanupOperation.
sl@0
 14323
sl@0
 14324
sl@0
 14325
2). Jane
sl@0
 14326
	Added code for the WINS platform to allow DLLs to startup in a chosen
sl@0
 14327
	order. When E32Dll() is first called (aReason==EDllProcessAttach), a new
sl@0
 14328
	function UserSvr::InitRegisterCallback(TCallBack t, TInt p) should be
sl@0
 14329
	called. This registers t as a callback function with priority p. All the
sl@0
 14330
	start-up functionality of E32Dll() should now be moved to the callback.
sl@0
 14331
sl@0
 14332
	After all the DLLs have been loaded, the kernel runs through a priority
sl@0
 14333
	queue, doing callbacks in the requested order, and waiting on a semaphore
sl@0
 14334
	between each call. Before it terminates, the callback function should call
sl@0
 14335
	UserSvr::ServerStarted() to signal the semaphore, and allow the kernel to
sl@0
 14336
	callback to the next DLL's registered function.
sl@0
 14337
sl@0
 14338
	See the t_start files in TADT.
sl@0
 14339
sl@0
 14340
	Added support for sharing loading of dlls.
sl@0
 14341
sl@0
 14342
	Fixed the thread cleanup code to correctly free resources owned by the
sl@0
 14343
	session, and exit cleanly if the thread creation failed due to lack of
sl@0
 14344
	heap. Should fix HA-7.
sl@0
 14345
sl@0
 14346
3). Matthew
sl@0
 14347
	CObject::Close now panics if the access count becomes negative, new test
sl@0
 14348
	code checks this.
sl@0
 14349
sl@0
 14350
	In WINS, PP:MapLastError returns KErrDoesNotExist for the NT error code
sl@0
 14351
	ERROR_MOD_NOT_FOUND. This fixes HA-22.
sl@0
 14352
sl@0
 14353
	Added a function RLibrary::LoadExact which loads a DLL without mangling
sl@0
 14354
	the name. To use this you will need F32 build 13.
sl@0
 14355
sl@0
 14356
4). Roger
sl@0
 14357
	Added __DEBUGGER() Macro.
sl@0
 14358
sl@0
 14359
	Under WINS and MX86 this macro will place an inline int3 instruction into
sl@0
 14360
	your code. For ARM builds the macro expands to a SWI instruction.
sl@0
 14361
sl@0
 14362
	The macro compiles out under release builds.
sl@0
 14363
sl@0
 14364
	Under WINS __DEBUGGER() will cause the application to drop into the
sl@0
 14365
	debugger - it will also invoke just in time debugging if your system has
sl@0
 14366
	it enabled.
sl@0
 14367
sl@0
 14368
	There is no kernel debugger support for ARM or MX86 builds.
sl@0
 14369
sl@0
 14370
	The Macro is currently defined in E32STD.h this is a temporary measure
sl@0
 14371
	until there is a good area for platform specific pre-processor macros.
sl@0
 14372
sl@0
 14373
	Fixed the two DPlatThreads with the same NT thread id in the kernel's
sl@0
 14374
	list of threads bug, HA-16 and HA-6.
sl@0
 14375
sl@0
 14376
5). Graham
sl@0
 14377
	New ARM code, added function TEiger::BootWaitMilliseconds(), changed
sl@0
 14378
	ArmVectorIrq() and CScreenDriverMarm::Blit().
sl@0
 14379
sl@0
 14380
sl@0
 14381
Version 0.01.048
sl@0
 14382
================
sl@0
 14383
(Made by Jane,13 Nov 1995)
sl@0
 14384
sl@0
 14385
1). Colly
sl@0
 14386
	If a function has a parameter by reference immediately before the
sl@0
 14387
	ellipsis argument as in:
sl@0
 14388
sl@0
 14389
	RTest::Printf(const TDesC &aFmt,...)
sl@0
 14390
sl@0
 14391
	then there is a problem when using the variable argument macros as
sl@0
 14392
	follows:
sl@0
 14393
sl@0
 14394
	VA_LIST list;
sl@0
 14395
	VA_START(list,aFmt);
sl@0
 14396
sl@0
 14397
	since the macro use &aFmt to try and get the address of the argument
sl@0
 14398
	on the stack. However this does not work with arguments passed by
sl@0
 14399
	reference since &aFmt is the real address of the descriptor. I have
sl@0
 14400
	been using a special function User::SetVaArgList() to overcome this
sl@0
 14401
	difficulty. However this function does not work with register calling
sl@0
 14402
	conventions as for the ARM compiler and so a better solution has been
sl@0
 14403
	found. Many thanks to Geert for the solution as follows:
sl@0
 14404
sl@0
 14405
	A new class has been defined TRefByValue as follows:
sl@0
 14406
sl@0
 14407
	template <class T>
sl@0
 14408
	class TRefByValue
sl@0
 14409
		{
sl@0
 14410
	public:
sl@0
 14411
		inline TRefByValue(T &aRef);
sl@0
 14412
		inline operator T &();
sl@0
 14413
	private:
sl@0
 14414
		TRefByValue &operator=(TRefByValue aRef);
sl@0
 14415
	private:
sl@0
 14416
		T &iRef;
sl@0
 14417
		};
sl@0
 14418
sl@0
 14419
	The assignment operator is just to stop the compiler whining since
sl@0
 14420
	it cannot generate the assignment operator. The trick is to pass a
sl@0
 14421
	reference by value and then have a cast to return the refernce again.
sl@0
 14422
	So all that needs to change is the function declaration as follows:
sl@0
 14423
sl@0
 14424
	RTest::Printf(TRefByValue<const TDesC> aFmt,...)
sl@0
 14425
sl@0
 14426
	Note that the TRefByValue is now passed by value so that
sl@0
 14427
sl@0
 14428
	VA_START(list,aFmt)
sl@0
 14429
sl@0
 14430
	will now work. SetVaArgList has now thankfully been banished.
sl@0
 14431
sl@0
 14432
	NOTE: No functions calling these functions with ... should need
sl@0
 14433
	to be changed.
sl@0
 14434
sl@0
 14435
	As a consequence of this change three pairs of overloaded functions
sl@0
 14436
	are now ambiguous:
sl@0
 14437
sl@0
 14438
	TDesC::Format(TRefByValue<const TDesC8> aFmt,...); and
sl@0
 14439
	TDesC::Format(const TDesC8 &aFmt,VA_LIST aList);
sl@0
 14440
	TDesC::AppendFormat(TRefByValue<const TDesC8> aFmt,...); and
sl@0
 14441
	TDesC::AppendFormat(const TDesC8 &aFmt,VA_LIST aList);
sl@0
 14442
	TLex::Convert(TRefByValue<const TDesC8> aFormat,...);
sl@0
 14443
	TLex::Convert(const TDesC8 &aFormat,VA_LIST aList);
sl@0
 14444
sl@0
 14445
	Resolved the ambiguity in each case by renaming the function which
sl@0
 14446
	takes the VA_LIST argument to end in List, i.e.
sl@0
 14447
sl@0
 14448
	TDesC::FormatList(const TDesC8 &aFmt,VA_LIST aList);
sl@0
 14449
	TDesC::AppendFormatList(const TDesC8 &aFmt,VA_LIST aList);
sl@0
 14450
	TLex::ConvertList(const TDesC8 &aFormat,VA_LIST aList);
sl@0
 14451
sl@0
 14452
2). Colly
sl@0
 14453
	A mis-understanding between myself and Nick Twyman caused me to
sl@0
 14454
	change EXPORT_C to be defined empty. This is not correct and I have
sl@0
 14455
	put it back to the correct #define EXPORT_C __declspec(dllexport)
sl@0
 14456
sl@0
 14457
3). Colly
sl@0
 14458
	Fixed a bug in the TReal96 class which then showed up a failure
sl@0
 14459
	in the implementation of TReal96. TReal96 on being Set() was always
sl@0
 14460
	shifting the mantissa left three and then subtracting 3 from the
sl@0
 14461
	exponent. However all the function were not allowing for this. I
sl@0
 14462
	have changed the Set() code not to to the shift any longer. So if
sl@0
 14463
	real calculations are to be performed the shift will have to be
sl@0
 14464
	done before the calculation. GetTReal() and the cast to TReal
sl@0
 14465
	normalise as before. GetTReal() had a bug in that it was
sl@0
 14466
	normalising *this along the way to converting to a TReal. It should
sl@0
 14467
	in fact do nothing and be changed to a const function. Two new
sl@0
 14468
	functions need to be added, Normalise() and Prepare(). Normalise()
sl@0
 14469
	will do most of what GetTReal() is doing now but will do it directly
sl@0
 14470
	on *this, while Prepare() will do the left shift by three.
sl@0
 14471
sl@0
 14472
4). Colly
sl@0
 14473
	Changed all executive services to have 4 or less arguments to suit
sl@0
 14474
	the calling convention of the GCC compiler. i.e. all arguments are
sl@0
 14475
	in registers.
sl@0
 14476
sl@0
 14477
5). Colly
sl@0
 14478
	Added the ARM implementation of Epoc/32 for the Eiger chip and finally
sl@0
 14479
	got a workable release of the GNU tool chain from Cygnus. Work is now
sl@0
 14480
	progressing on getting Epoc/32 running on Eiger.
sl@0
 14481
sl@0
 14482
6). Graham
sl@0
 14483
	Various Eiger fixes.
sl@0
 14484
sl@0
 14485
7.) Jane
sl@0
 14486
	Changed build system adding the verbs mnt cleanup (deletes everything from \e32sys
sl@0
 14487
	and \work\e32\...) and mnt blddef (automated build of all the .def files into
sl@0
 14488
	\E32\BWINS and \E32\BMX86 directories). Made several changes to the DEFMAKE tool
sl@0
 14489
	to support this.
sl@0
 14490
	These should only need to be used by the base team - others can continue to
sl@0
 14491
	use mnt bldall etc. as usual.
sl@0
 14492
sl@0
 14493
8). Matthew
sl@0
 14494
	Test code for CPeriodic and TDayName etc added.
sl@0
 14495
sl@0
 14496
	Fixed rounding bug in um_rtod.cpp (HA-15) & adapted Martin Hardman's test
sl@0
 14497
	code.
sl@0
 14498
sl@0
 14499
9). Jane
sl@0
 14500
	Fixed HA-13, setting iBase=0 in DestroyAll(), and wrote test code. Note that
sl@0
 14501
	DestroyAll() is due to be replaced by a function in a new class CArrayFixFlatCBase
sl@0
 14502
	which will subclass CArrayFixFlat<CBase *> and thus can be type safe.
sl@0
 14503
sl@0
 14504
10). Jane
sl@0
 14505
	Changed EXE header format in kernel and E32ROM to contain stack & heap maximum
sl@0
 14506
	and minimum sizes.
sl@0
 14507
sl@0
 14508
11). Jane
sl@0
 14509
	MMU - added allocation of linear regions (chunks) from high memory for DLLs, and
sl@0
 14510
	wrote test code.
sl@0
 14511
sl@0
 14512
12). Morgan
sl@0
 14513
	Maths fixes.
sl@0
 14514
sl@0
 14515
	T_MATH.CPP:
sl@0
 14516
	2 sin tests (lines 1317-1321) were failing with the new TReal96 due to inaccurate
sl@0
 14517
	values for sin(3) and sin(4).
sl@0
 14518
sl@0
 14519
	lntest4 now uses a bit test ( using the 'approx' class) to compare the results taking
sl@0
 14520
	into account any bit wobble.
sl@0
 14521
sl@0
 14522
	UM_INT.CPP:
sl@0
 14523
	Fixed Math::Int(TReal &aTrg,const TReal &aSrc) aSrc.Exp() = KMantissaBits-32.
sl@0
 14524
	(Left shifting a TInt by 32 (eg  x<<32)  results in 0xffffffff when it was required to be 0).
sl@0
 14525
sl@0
 14526
	UP_I64.CPP
sl@0
 14527
	Added TInt64A::MulTop which returns the top 64 bits of a 64x64->128 multiply.
sl@0
 14528
sl@0
 14529
	UM_R96.CPP - TReal96 functions
sl@0
 14530
	Set() now writes the correct exponent for a 56 bit mantissa (and is consistent with the
sl@0
 14531
	transendental fuctions when KMantissaBits=56)
sl@0
 14532
sl@0
 14533
	Added TMathPanics
sl@0
 14534
sl@0
 14535
	Added test code for TReal96, RChunks and more tests for Int64
sl@0
 14536
sl@0
 14537
sl@0
 14538
13). Colly
sl@0
 14539
	Various X86 keyboard fixes.
sl@0
 14540
sl@0
 14541
14). Martin
sl@0
 14542
	Changed Alloc heaven 'dialog' so that address of offending cell is visible.
sl@0
 14543
sl@0
 14544
	Added a Replace function to descriptors (courtesy of Brendan), with test code.
sl@0
 14545
sl@0
 14546
	Fixed TPtr::Set function to do the right thing with maxlen, modified test code.
sl@0
 14547
sl@0
 14548
15). Graham
sl@0
 14549
	Windows server changes.
sl@0
 14550
sl@0
 14551
16). Jane
sl@0
 14552
	Added KBX86 and KBARM boot source to PVCS.
sl@0
 14553
sl@0
 14554
sl@0
 14555
Version 0.01.047
sl@0
 14556
================
sl@0
 14557
(Made by Colly, 9 Oct 1995)
sl@0
 14558
sl@0
 14559
1). Changed all TUint to TInt.
sl@0
 14560
sl@0
 14561
2). The UserSvr::RequestEvent(TEvent &anEvent,TRequestStatus &aStatus)
sl@0
 14562
	was unworkable for the Epoc/32 micro-kernel variants since the
sl@0
 14563
	O/S needs to write the resulting event back in the context of the
sl@0
 14564
	interrupt which may not be the same process as that requesting the
sl@0
 14565
	event. Like servers, this needs to be written using RThread::Write()
sl@0
 14566
	which needs to write to a descriptor in the requesting process. To
sl@0
 14567
	this end I have defined:
sl@0
 14568
sl@0
 14569
	class TEventBuf : public TPckgBuf<TEvent>
sl@0
 14570
		{
sl@0
 14571
	public:
sl@0
 14572
		inline TEvent &Event() const {return(*((TEvent *)&iBuf[0]));}
sl@0
 14573
		};
sl@0
 14574
sl@0
 14575
	The function now becomes:
sl@0
 14576
sl@0
 14577
	UserSvr::RequestEvent(TEventBuf &anEvent,TRequestStatus &aStatus);
sl@0
 14578
sl@0
 14579
	i.e. it takes the packaged event. The actual event can be returned
sl@0
 14580
	by using the () operator on the package or by calling Event().
sl@0
 14581
sl@0
 14582
3). The text window server had a bug which was causing the unicode
sl@0
 14583
	release build to fail reading the setup parameters in a random way.
sl@0
 14584
sl@0
 14585
4). CObjectIx::Destruct() was deleting NULL object handles. Fixed.
sl@0
 14586
sl@0
 14587
5). Made TRequestStatus a proper class so that it is now strongly typed.
sl@0
 14588
	This helps the compiler pick the correct overloaded function as
sl@0
 14589
	can happen in the file server for example. Note that there is no
sl@0
 14590
	conversion from a TRequestStatus to a TInt. Use the Int() function.
sl@0
 14591
sl@0
 14592
6). ROM sizes are now quoted for the Epoc/32 microkernel builds and
sl@0
 14593
	not for WINS as previously.
sl@0
 14594
sl@0
 14595
ROM SIZES
sl@0
 14596
sl@0
 14597
			X86    ARM
sl@0
 14598
			---   ----
sl@0
 14599
EUSER.DLL   94K   154K
sl@0
 14600
EKERN.DLL   70K   110K
sl@0
 14601
ELOCL.DLL    3K     3K
sl@0
 14602
EFSRV.DLL   27K    41K
sl@0
 14603
----------------------
sl@0
 14604
TOTAL      194K   308K
sl@0
 14605
----------------------
sl@0
 14606
sl@0
 14607
Version 0.01.046
sl@0
 14608
================
sl@0
 14609
(Made by Colly, 2 Oct 1995)
sl@0
 14610
sl@0
 14611
1). Added #defines _L8, _L16, _S8 and _S16 for string literals.
sl@0
 14612
sl@0
 14613
2). Eliminated wait handlers for device drivers. The function
sl@0
 14614
	User::AllowRequestsToComplete() is now redundant. Withdrawn.
sl@0
 14615
sl@0
 14616
3). KMinTInt8 and KMinTInt16 were not defined correctly. Fixed.
sl@0
 14617
sl@0
 14618
4). Completed the implementation of RHeap(). The various UserHeap
sl@0
 14619
	creation functions now have new	arguments, aMinLength,
sl@0
 14620
	aMaxLength and aGrowBy. The heap will initially be aMinLength
sl@0
 14621
	in size, and can grow to be aMaxLength in size. If there is no
sl@0
 14622
	space in the heap then an attempt will be made to grow the heap
sl@0
 14623
	in aGrowBy increments. There is a new function Compress() which
sl@0
 14624
	will free any excess space at the end of the heap. Compress() will
sl@0
 14625
	never shrink the heap to less than aMinLength. The sizing code has
sl@0
 14626
	been modified to take account of the RHeap structure at the bottom
sl@0
 14627
	of the heap, so that the free size of a newly created heap will
sl@0
 14628
	always be >= aMinLength. None of this affects fixed heaps.
sl@0
 14629
sl@0
 14630
5). Changed RThread::Create() to allow the initial size of the heap
sl@0
 14631
	to be specified as well as the maximum size of the heap. These
sl@0
 14632
	are given as the aHeapMinSize and aHeapMaxSize parameters. All
sl@0
 14633
	heaps created in chunks are targets for compression if the system
sl@0
 14634
	runs out of memory.
sl@0
 14635
sl@0
 14636
6). Implemented the process handling functions for the first time in
sl@0
 14637
	the micro-kernel version, including an interface to allow a loader
sl@0
 14638
	server to actually load .EXEs and .DLLs. In a normal system the
sl@0
 14639
	loader server will be part of the file server. The 486 version
sl@0
 14640
	of Epoc/32 now supports multiple processes, full pre-emptive
sl@0
 14641
	scheduling, and execute in place .DLLs and .EXEs.
sl@0
 14642
sl@0
 14643
7). Added User::Beep(TInt aFrequency,TInt aDuration). The frequency
sl@0
 14644
	is in hertz so 440 is middle A. The duration is in tenths
sl@0
 14645
	of a second. As in Epoc/16 a negative duration indicates that if
sl@0
 14646
	the hardware to perform the beep is being used for another purpose
sl@0
 14647
	no beep will be sounded. As before if the duration is positive the
sl@0
 14648
	beep can hang up the program until the hardware is free to make
sl@0
 14649
	the beep. And as before the first beep will return immediately if
sl@0
 14650
	the hardware is not busy and the beep will continue in background.
sl@0
 14651
	Note that in Epoc/16 the frequency was specified as an interval.
sl@0
 14652
	This function is not playing a sound constinuously due to a bug in
sl@0
 14653
	Win32. It is however functionally correct. I will fix it in the
sl@0
 14654
	next release.
sl@0
 14655
sl@0
 14656
8). The constructor for the TPckg template class was leaving the
sl@0
 14657
	length of the descriptor as zero, when it should be the sizeof
sl@0
 14658
	the object T. Fixed.
sl@0
 14659
sl@0
 14660
9). Add support for drivers to the kernel. In Epoc/16 there were LDDs
sl@0
 14661
	and PDDs. In Epoc/32 a Device is equivalent to an LDD and a Driver
sl@0
 14662
	is equivalent to a PDD. The only user mode services for drivers
sl@0
 14663
	are TFindDriver which allows all installed drivers to be listed
sl@0
 14664
	and User::LoadDriver() and User::FreeDriver(). With the addition
sl@0
 14665
	of drivers \E32\KSRC\KS_DEV.CPP got too big to handle so I have
sl@0
 14666
	split out channels into KS_CHN.CPP and libraries (DLLs) into
sl@0
 14667
	KS_LIB.CPP and put drivers in KS_DRV.CPP.
sl@0
 14668
sl@0
 14669
10).Completed the implementation of the device driver functions in the
sl@0
 14670
	kernel and implemented the RDevComm device as well as a WINS driver.
sl@0
 14671
	Ax X86 driver for 16450s and 16550s is coming soon. Serial comms lives
sl@0
 14672
	again! The comms device	and WINS driver are now part of the standard
sl@0
 14673
	release of E32 for WINS. The interface to the device is in D32COMM.H
sl@0
 14674
	and D32COMM.INL. It is necessary to load both the device driver
sl@0
 14675
	and	the physical driver in order to use the comms device. An example
sl@0
 14676
	of how to do this is in \e32\dpwins\t_comm.cpp.
sl@0
 14677
sl@0
 14678
11).Added a public function CActive::Deque() which will allow the
sl@0
 14679
	active object to be removed from the scheduler queue. Deque()
sl@0
 14680
	will call Cancel() before dequeing the object. The object must
sl@0
 14681
	already be on the scheduler queue to be dequed or else a panic
sl@0
 14682
	will result.
sl@0
 14683
sl@0
 14684
12).Added a circular buffer template class CCirBuf<T> to E32ADT.H and
sl@0
 14685
	its test program T_CIRC.CPP. This is used by the serial device
sl@0
 14686
	to implement receive and transmit buffers. It allows items to be
sl@0
 14687
	added at the head of the queue while allowing items to be removed
sl@0
 14688
	from the tail of the queue. The buffers size can be changed
sl@0
 14689
	dynamically by calling SetLengthL(), although it will discard the
sl@0
 14690
	current contents of the buffer. Also added a class CCirBufer
sl@0
 14691
	derived from CCirBuf<TUint8> which add Get() and Put() which will
sl@0
 14692
	add or remove a single item and are	optimised for speed.
sl@0
 14693
sl@0
 14694
13).Added the text window server to the standard build of E32. This has
sl@0
 14695
	now been implemented for WINS and EPOC/32-MX86 platforms. The source
sl@0
 14696
	of this server is in \E32\WSRC. It uses a screen driver .DLL
sl@0
 14697
	to perform character blitting to the screen. The test programs are
sl@0
 14698
	in \E32\TWIN. The RConsole class has the following facilities:
sl@0
 14699
sl@0
 14700
	RConsole is used to communicate with the text windows server.
sl@0
 14701
sl@0
 14702
	Version()	Reports client side version information
sl@0
 14703
sl@0
 14704
	Create()	If necessary, opens a connection to the window server, then creates a default window without displaying
sl@0
 14705
				it. The default window characteristics may then be changed using Control() before proceeding to display
sl@0
 14706
				the window using Set().
sl@0
 14707
sl@0
 14708
	Set()		If necessary, opens a connection to the window server. If necessary, creates a window. Then displays
sl@0
 14709
				the window with the given title and attaches the given buffer size characteristics to it.
sl@0
 14710
sl@0
 14711
	Write()		Writes the given text at the current cursor position.
sl@0
 14712
sl@0
 14713
	Clear()		Clears the whole window and places the cursor at the top left corner.
sl@0
 14714
sl@0
 14715
	ClearToEndOfLIne() Clears from the current cursor position to the end of the line
sl@0
 14716
sl@0
 14717
	Destroy()	Removes the window from the screen. Another may then be opened using Create()/Set().
sl@0
 14718
sl@0
 14719
	SetCursorSize()	  Sets the percentage height of the cursor
sl@0
 14720
	SetCursorPosAbs() Places cursor at given absolute position.
sl@0
 14721
	SetCursorPosRel() Places cursor relative to current position.
sl@0
 14722
	CursorPos()		  Returns current cursor position
sl@0
 14723
sl@0
 14724
	Control()	Controls various window characteristics. The text passed to this function may contain near-English
sl@0
 14725
				commands. However, only the '+', '-', and upper-case letters are actually interpreted:
sl@0
 14726
sl@0
 14727
				'+'		Apply subsequent characteristics
sl@0
 14728
				'-'		Remove subsequent characteristics
sl@0
 14729
				'V'		Visibility
sl@0
 14730
				'C'		Cursor on
sl@0
 14731
				'S'		Scroll bars
sl@0
 14732
				'L'		Scroll lock
sl@0
 14733
				'W'		Wrap lock
sl@0
 14734
				'M'		Maximum Window Size
sl@0
 14735
				'N'		'/n' is CR and LF
sl@0
 14736
sl@0
 14737
				Before interpreting the text, a silent '+' is assumed:
sl@0
 14738
sl@0
 14739
						Control(_L("Visibility -Cursor Lock + Scroll"))
sl@0
 14740
sl@0
 14741
				This would cause the window to become visible, with no text cursor, no scroll lock active,
sl@0
 14742
				but with scroll bars present. Of course, the following command would achieve exactly the same
sl@0
 14743
				result, but would not posses the same level of self-documentation or readability:
sl@0
 14744
sl@0
 14745
						Control(_L("VS-CL"))
sl@0
 14746
sl@0
 14747
				Further more, the next command would achieve the same thing with even more readability:
sl@0
 14748
sl@0
 14749
						Control(_L("+Visibility -Cursor -Lock +Scroll"))
sl@0
 14750
sl@0
 14751
	Read()		Read a character.
sl@0
 14752
sl@0
 14753
	ReadCancel()	Cancel asynchronous read request
sl@0
 14754
sl@0
 14755
14).Set the priority of the kernel server thread and null thread
sl@0
 14756
	correctly on the EPOC/32 platforms.
sl@0
 14757
sl@0
 14758
15).Now allocating data section base addresses correctly so that multiple
sl@0
 14759
	threads will now work correctly on the EPOC/32 platforms.
sl@0
 14760
sl@0
 14761
16).Changed THandleBase::Duplicate(RProcess &aProcess) to be
sl@0
 14762
	THandleBase::Duplicate(RThread &aThread) since it is usual
sl@0
 14763
	to have the remote thread handle and unusual to have the remote
sl@0
 14764
	threads process handle. The O/S uses the thread's process as the
sl@0
 14765
	handle's source process.
sl@0
 14766
sl@0
 14767
17).RTimer.After() and User::After() were using a duration in ticks. This
sl@0
 14768
	has now been changed to a duration in tenths of a second so that it
sl@0
 14769
	is platform independent.
sl@0
 14770
sl@0
 14771
18).RProcess RThread::Process() was always returning the current
sl@0
 14772
	process rather than the thread's process. Also returning a new
sl@0
 14773
	handle based object can fail with out of memory so I have changed
sl@0
 14774
	this function to TInt RThread::Process(RProcess &aProcess) so that
sl@0
 14775
	it can return the error.
sl@0
 14776
sl@0
 14777
19).Under Windows/NT a mutex once owned by a thread can be waited on again
sl@0
 14778
	without locking the thread, on the basis that this protects a thread
sl@0
 14779
	from entering deadlock. However this is nonsense since a mutex can
sl@0
 14780
	be used to prevent a thread from accessing the resource as
sl@0
 14781
	happens in the case of the User::Beep() function. Basically the
sl@0
 14782
	mutex is used to lock out threads until the current beep has
sl@0
 14783
	completed. What takes the thread out of potential deadlock is the
sl@0
 14784
	beep completing in due course. Changed the WINS implementation to
sl@0
 14785
	behave correctly and lock the thread.
sl@0
 14786
sl@0
 14787
20).TLex::Val(TReal &) did not fail with a number like _L("1.2e"). Fixed.
sl@0
 14788
sl@0
 14789
21).The default constructor for the TLex class was still being set up for
sl@0
 14790
	zero terminated descriptors which were discarded in January. Fixed.
sl@0
 14791
sl@0
 14792
22).TLex::Peek() would happily try and access a character from a default
sl@0
 14793
	constructed TLex which resulted in an access violation. Now fixed.
sl@0
 14794
	Also dropped inline for Inc(),Peek() and Get().
sl@0
 14795
sl@0
 14796
23).CBufBase::Read(TUint aPos,TDes8 &aDes) is documented as reading up to
sl@0
 14797
	aDes.MaxLength() characters, but was in fact reading up to
sl@0
 14798
	aDes.Length() characters. Fixed.
sl@0
 14799
sl@0
 14800
24).RTimer was not setting the request status to KRequestPending after
sl@0
 14801
	an asynchronous request. Fixed.
sl@0
 14802
sl@0
 14803
25).I have changed EXPORT_C to just be nothing rather than
sl@0
 14804
	__declspec(dllexport). For the time being it is still required to
sl@0
 14805
	declare functions as EXPORT_C. If you had a function which did
sl@0
 14806
	not have a corresponding IMPORT_C then make sure that there is
sl@0
 14807
	an IMPORT_C defined somewhere or else the function will not be
sl@0
 14808
	exported.
sl@0
 14809
sl@0
 14810
26).Changed the heap checking macros to have understandable names and have
sl@0
 14811
	simplified their implementation. I have also made them orthogonal. The
sl@0
 14812
	new names and their old equivalents are as follows:
sl@0
 14813
sl@0
 14814
	// For the user heap
sl@0
 14815
sl@0
 14816
	__UHEAP_MARK							MARKSTART
sl@0
 14817
	__UHEAP_CHECK(aCount)					CHECKNUM1(x)
sl@0
 14818
	__UHEAP_CHECKALL(aCount)				CHECKTOTALNUM1(x)
sl@0
 14819
	__UHEAP_MARKEND							MARKEND
sl@0
 14820
	__UHEAP_MARKEND(aCount)					MARKEND1(x)
sl@0
 14821
	__UHEAP_FAILNEXT(aCount)				SETFAIL(x,y)
sl@0
 14822
	__UHEAP_SETFAIL(aType,aRate)			SETFAIL(x,y)
sl@0
 14823
	__UHEAP_RESET							RESET
sl@0
 14824
sl@0
 14825
	// For the kernel heap
sl@0
 14826
sl@0
 14827
	__KHEAP_MARK
sl@0
 14828
	__KHEAP_CHECK(aCount)
sl@0
 14829
	__KHEAP_CHECKALL(aCount)
sl@0
 14830
	__KHEAP_MARKEND
sl@0
 14831
	__KHEAP_MARKEND(aCount)
sl@0
 14832
	__KHEAP_FAILNEXT(aCount)				K_SETFAIL(x,y)
sl@0
 14833
	__KHEAP_SETFAIL(aType,aRate)			K_SETFAIL(x,y)
sl@0
 14834
	__KHEAP_RESET							K_RESET
sl@0
 14835
sl@0
 14836
	// For any RHeap
sl@0
 14837
sl@0
 14838
	__RHEAP_MARK(aHeap)						MARKSTART1(x)
sl@0
 14839
	__RHEAP_CHECK(aHeap,aCount)				CHECKNUM2(x,y)
sl@0
 14840
	__RHEAP_CHECKALL(aHeap,aCount)			CHECKTOTALNUM2(x,y)
sl@0
 14841
	__RHEAP_MARKEND(aHeap)					MARKEND1(x)
sl@0
 14842
	__RHEAP_MARKEND(aHeap,aCount)			MARKEND2(x,y)
sl@0
 14843
	__RHEAP_FAILNEXT(aHeap,aCount)			UH_SETFAIL(x,y,z)
sl@0
 14844
	__RHEAP_SETFAIL(aHeap,aType,aRate)		UH_SETFAIL(x,y,z)
sl@0
 14845
	__RHEAP_RESET(aHeap)					UH_RESET
sl@0
 14846
sl@0
 14847
	FAILNEXT,UH_FAILNEXT and K_FAILNEXT can be replaced
sl@0
 14848
	with __?HEAP_FAILNEXT(1)
sl@0
 14849
sl@0
 14850
	It is no longer possible to check a threads heap since this will
sl@0
 14851
	not work under Epoc/32 if a thread is in another process.
sl@0
 14852
sl@0
 14853
	In the first trial implementation of __?HEAP__FAILNEXT(aCount) I
sl@0
 14854
	had not realised that aCount did not do anything. This is now
sl@0
 14855
	fixed. Note that aCount==1 fails the next alloc call.
sl@0
 14856
sl@0
 14857
27).The member variable of TScreenInfoV01 were not declared with a lower
sl@0
 14858
	case i prefix. Fixed.
sl@0
 14859
sl@0
 14860
28).Released the console classes. The header for the console class in
sl@0
 14861
	E32CONS.H. It has an abstract base class CConsoleBase which just
sl@0
 14862
	defines a basic set of console functions. It also has CConsoleTextWin
sl@0
 14863
	which is the console implementation for the text window server.
sl@0
 14864
sl@0
 14865
29).Changed the WINS platform to use the the CConsoleTextWin instead of
sl@0
 14866
	a second Windows/NT console window. The test class now uses the
sl@0
 14867
	CConsoleTextWin. The console is released as ECONS.DLL. The
sl@0
 14868
	CConsoleTextWin class is defined in the E32TWIN.H header.
sl@0
 14869
sl@0
 14870
30).Changed the test class to use the console. Also added a Getch()
sl@0
 14871
	function to the test class. Because it now owns a console object
sl@0
 14872
	I have had to rename the test class RTest. I have also added
sl@0
 14873
	a Close() member function which will free an allocated console.
sl@0
 14874
sl@0
 14875
31).Added CConsoleBase *Adt::NewConsoleL() which will create a basic
sl@0
 14876
	console object. Note that you do not need to be linked to ECONS.LIB
sl@0
 14877
	in order to	use this or any of the member functions of CConsoleBase.
sl@0
 14878
sl@0
 14879
32).Took the opportunity with the release of the X86 platform to rename
sl@0
 14880
	the WINS platform releaseables to be inline with those of the X86
sl@0
 14881
	platform. The new names are as follows:
sl@0
 14882
sl@0
 14883
	OLD NAME		NEW NAME
sl@0
 14884
	============	=============
sl@0
 14885
	ESTAT.OBJ		EEXE.OBJ
sl@0
 14886
	ESTAT.LIB		EEXE.LIB
sl@0
 14887
	EWINS.DLL		EUSER.DLL
sl@0
 14888
	EWINS.LIB		EUSER.LIB
sl@0
 14889
	KWINS.DLL		EKERN.DLL
sl@0
 14890
	LWINS.DLL		ELOCL.DLL
sl@0
 14891
sl@0
 14892
	For programs the programs which use E32 the only changes to .MAK files
sl@0
 14893
	which are significant are as follows:
sl@0
 14894
sl@0
 14895
	ESTAT?.OBJ	to	EEXE.OBJ	- The startup object for .EXEs
sl@0
 14896
	ESTAT?.LIB	to	EEXE.LIB	- The startup library for .EXEs
sl@0
 14897
								  if linking with msvcrt20.lib
sl@0
 14898
	EWINS?.LIB	to	EUSER.LIB	- The user library
sl@0
 14899
sl@0
 14900
33).Added an inline "construct in place" global new operator.
sl@0
 14901
sl@0
 14902
34).Due to popular demand I have moved the following functions
sl@0
 14903
	to a new class of their own CleanupStack.
sl@0
 14904
sl@0
 14905
	Adt::PushL(const TAny *)
sl@0
 14906
	Adt::PushL(const CBase *)
sl@0
 14907
	Adt::Pop()
sl@0
 14908
	Adt::Pop(TUint aCount)
sl@0
 14909
	Adt::PopAndDestroy()
sl@0
 14910
	Adt::PopAndDestroy(TUint aCount)
sl@0
 14911
sl@0
 14912
	become
sl@0
 14913
sl@0
 14914
	CleanupStack::PushL(const TAny *)
sl@0
 14915
	CleanupStack::PushL(const CBase *)
sl@0
 14916
	CleanupStack::Pop()
sl@0
 14917
	CleanupStack::Pop(TUint aCount)
sl@0
 14918
	CleanupStack::PopAndDestroy()
sl@0
 14919
	CleanupStack::PopAndDestroy(TUint aCount)
sl@0
 14920
sl@0
 14921
35).For a long time I have been tracking down a race condition under
sl@0
 14922
	WINS which resulted in the kernel being hung. This turns out to be
sl@0
 14923
	a bug in the Windows/NT implementation	of critical	sections.
sl@0
 14924
	I have replaced the critical section with a mutex which	fixes the bug.
sl@0
 14925
sl@0
 14926
36).I have fixed the T_SEMUTX.CPP program which has also long had a
sl@0
 14927
	deliberate race condition as part of its test. However the problem
sl@0
 14928
	was that sometimes it raced and sometimes it did not. By making each
sl@0
 14929
	thread wait different times its possible to always make the race
sl@0
 14930
	conditions occur so that the test will always pass consistently.
sl@0
 14931
sl@0
 14932
37).The CIdle class was doing a User::WaitForAnyRequest() in the
sl@0
 14933
	DoCancel() function. DoCancel() should just do nothing ofcourse
sl@0
 14934
	since the CActive::Cancel() function will do the WaitForAnyRequest().
sl@0
 14935
	Many thanks to Brendan for spotting the bug and for providing
sl@0
 14936
	the test code t_idle.cpp.
sl@0
 14937
sl@0
 14938
38).Adt::DestroyZ() was never any use, so I have removed it.
sl@0
 14939
sl@0
 14940
39).CSession::CreateL() was defined as pure virtual so that server
sl@0
 14941
	implmentors had to define a CreateL() function even, as is often
sl@0
 14942
	the case, the function did nothing. I have now supplied a default
sl@0
 14943
	implementation which does nothing.
sl@0
 14944
sl@0
 14945
40).CActiveScheduler::Install() would not allow the current scheduler
sl@0
 14946
	to be removed by passing NULL. This is now allowed. Note that if
sl@0
 14947
	you want to change the scheduler you must first de-install by using
sl@0
 14948
	NULL and then replace with the new scheduler.
sl@0
 14949
sl@0
 14950
41).Got most of the base test code working in release mode. For some
sl@0
 14951
	unknow reason, some of the test code template classes are not
sl@0
 14952
	instaniating in release builds. All tests pass but the following
sl@0
 14953
	have the body of their code eliminated.
sl@0
 14954
sl@0
 14955
	T_BUF, T_CHAR, T_DES, T_HEAPDB,	T_HUF
sl@0
 14956
	T_LEX, T_QUE, T_SQUE, T_KEY, T_FLOAT
sl@0
 14957
sl@0
 14958
	In getting the test programs to work in the release build almost
sl@0
 14959
	all problems wre due to a dependency on the lifetime of
sl@0
 14960
	temporaries. In debug builds temporaries are never re-used so they
sl@0
 14961
	exist for the duration of the function. However in release builds
sl@0
 14962
	they are re-used at the first opportunity. Typical buggy code is
sl@0
 14963
	as follows:
sl@0
 14964
sl@0
 14965
	class TBug
sl@0
 14966
		{
sl@0
 14967
	public:
sl@0
 14968
		TBuf();
sl@0
 14969
		void Set1(const TDesC *aDes);
sl@0
 14970
		void Set2(const TDesC *aDes);
sl@0
 14971
	private:
sl@0
 14972
		const TDesC *iPtr1;
sl@0
 14973
		const TDesC *iPtr2;
sl@0
 14974
		};
sl@0
 14975
sl@0
 14976
	TBuf b;
sl@0
 14977
	b.Set1(&_L("Temporary 1"));
sl@0
 14978
	b.Set2(&_L("Temporary 2"));
sl@0
 14979
sl@0
 14980
	This will work fine in debug builds but will result in iPtr1 and
sl@0
 14981
	iPtr2 pointing to the same value. This is because _L is defined
sl@0
 14982
	as a constructor for a TPtrC which creates a temporary. The same
sl@0
 14983
	automatic space will be used for the temporary.
sl@0
 14984
sl@0
 14985
42).HBufC::NewMax(),HBufC::NewMaxL() and HBufC::NewMaxLC() all ended
sl@0
 14986
	up setting the length to the size of the allocated cell which can
sl@0
 14987
	be bigger that the requested length. Changed to set the length
sl@0
 14988
	to the requested length.
sl@0
 14989
sl@0
 14990
43).Moved MemCopy(),MemCompare(),MemCompareF(),MemCompareC()
sl@0
 14991
	MemFill(),MemFillZ() and MemSwap() to a class of their own
sl@0
 14992
	called Mem and dropped the Mem prefix. So User::MemCopy() is
sl@0
 14993
	now Mem::Copy() etc.
sl@0
 14994
sl@0
 14995
44).Changed TDesC functions Match(),Locate(),LocateReverse() and Find()
sl@0
 14996
	to return an unsigned result. They all return KNotFound which is
sl@0
 14997
	defined as KMaxTUint if they fail.
sl@0
 14998
sl@0
 14999
45).The message system was not tidying up correctly when a session
sl@0
 15000
	was closed by the client or if the client died before closing. The
sl@0
 15001
	new implementation of messaging has now fixed this problem.
sl@0
 15002
sl@0
 15003
NOTE
sl@0
 15004
====
sl@0
 15005
sl@0
 15006
20th September 1995.
sl@0
 15007
sl@0
 15008
The X86 implementation of the Epoc/32 platform ran through the
sl@0
 15009
creation and execution of the first user mode process and then
sl@0
 15010
eventually ended up in the NULL process and consequently the idle
sl@0
 15011
loop. The MMU and protection is fully enabled, so this constitutes
sl@0
 15012
the birth of Epoc/32. We hope to have the remainder of the boot
sl@0
 15013
sequence, i.e. file server, window server and shell completed
sl@0
 15014
by the end of the next week.
sl@0
 15015
sl@0
 15016
ROM SIZES
sl@0
 15017
sl@0
 15018
			X86    ARM
sl@0
 15019
			---   ----
sl@0
 15020
EUSER.DLL   90K   148K
sl@0
 15021
EKERN.DLL   33K    47K
sl@0
 15022
ELOCL.DLL    3K     3K
sl@0
 15023
EFSRV.DLL   28K    42K
sl@0
 15024
----------------------
sl@0
 15025
TOTAL      154K   240K
sl@0
 15026
----------------------
sl@0
 15027
sl@0
 15028
Version 0.01.045
sl@0
 15029
================
sl@0
 15030
(Made by Colly, 30 Aug 1995)
sl@0
 15031
sl@0
 15032
1). Changed the way messaging worked internally. RServer::Receive() used
sl@0
 15033
	to get a pointer to the message received. I was hoping to pass this
sl@0
 15034
	pointer directly from supervisor space for efficiency, but I have
sl@0
 15035
	decided that its not worth the extra overhead of read only shared
sl@0
 15036
	memory that wouldbe required. RServer now has a RMessage by value
sl@0
 15037
	which receives the contents of the message when it arrives. If the
sl@0
 15038
	server needs to hold onto the message then it must either copy
sl@0
 15039
	the message in full (I have added a copy constructor and an assignment
sl@0
 15040
	operator to allow this) or it must use the new function MessagePtr()
sl@0
 15041
	which returns a const RMessagePtr. The only thing you can do with
sl@0
 15042
	an RMessagePtr is to complete the message as you do with a normal
sl@0
 15043
	RMessage by call RMessagePtr::Complete().
sl@0
 15044
sl@0
 15045
	While I was about it I also changes the naming of the accessor
sl@0
 15046
	functions I1(),P1() etc. The problem with the names was that on
sl@0
 15047
	the client side arguments were being set into an array using normal
sl@0
 15048
	indexing, i.e. base 0, while on the server side the names were based 1.
sl@0
 15049
	In order to help the conversion	I have renamed I to Int and P to Ptr
sl@0
 15050
	so that:
sl@0
 15051
sl@0
 15052
	I1() is now Int0()
sl@0
 15053
	I2() is now Int1()
sl@0
 15054
	I3() is now Int2()
sl@0
 15055
	I4() is niw Int3()
sl@0
 15056
	P1() is now Ptr0()
sl@0
 15057
	P2() is now Ptr1()
sl@0
 15058
	P3() is now Ptr2()
sl@0
 15059
	P4() is niw Ptr3()
sl@0
 15060
sl@0
 15061
	Sorry for the inconvenience.
sl@0
 15062
sl@0
 15063
2). Moved a number of constructors in abstract base	classes which were
sl@0
 15064
	public to protected. This should have no affect other than to stop
sl@0
 15065
	them being instantiated.
sl@0
 15066
sl@0
 15067
3). Withdrawn the new(ECleanup) and new(ECleanupObj) options. new(ELeave)
sl@0
 15068
	still exists. CBase * is not nescessarily the start of the heap cell
sl@0
 15069
	when MI is involved. In general a cast of (TAny *) to a CBase * will
sl@0
 15070
	not work unless the TAny * was originally downcast to a CBase *. If
sl@0
 15071
	you know the type T of a TAny *ptr then its o.k. to code
sl@0
 15072
sl@0
 15073
	(CBase *)(T *)ptr;
sl@0
 15074
sl@0
 15075
	but not
sl@0
 15076
sl@0
 15077
	(CBase *)ptr;
sl@0
 15078
sl@0
 15079
4). More tiresome CBase * problems. TDblQue::DeletaAll and
sl@0
 15080
	TSglQue::DeleteAll were removing each item from the que and then
sl@0
 15081
	casting the ptr to a CBase * to call Adt::Destroy(). Withdrawn.
sl@0
 15082
sl@0
 15083
5). CActiveScheduler::Start() was not nesting levels correctly. Fixed.
sl@0
 15084
sl@0
 15085
6). Added TLex?::Offset() and TLex?::MarkedOffset().
sl@0
 15086
sl@0
 15087
7). The various TLex::Val() routines should not change iNext if they
sl@0
 15088
	fail to lex a valid number. Fixed.
sl@0
 15089
sl@0
 15090
8). Added TLex?::Val(TReal32 &aReal,TChar aPoint) and
sl@0
 15091
	TLex?::Val(TReal64 &aReal,TChar aPoint).
sl@0
 15092
sl@0
 15093
9). Added some extra key difinitions to E32VIRT.H
sl@0
 15094
sl@0
 15095
	EKeyBell=0x0007,
sl@0
 15096
	EKeyLineFeed=0x000a,
sl@0
 15097
	EKeyVerticalTab=0x000b,
sl@0
 15098
	EKeyFormFeed=0x000c,
sl@0
 15099
	EKeySpace=0x0020
sl@0
 15100
sl@0
 15101
10).Implemented default constructors for TPtrC8 and TPtrC16 which
sl@0
 15102
	set the pointer NULL and the length to zero.
sl@0
 15103
sl@0
 15104
11).The X86 version of E32 now builds in unicode.
sl@0
 15105
sl@0
 15106
12).Changed CObjectConIx::Remove(CObjectCon *aCon) so that it can be
sl@0
 15107
	passed NULL. It does nothing if aCon is NULL.
sl@0
 15108
sl@0
 15109
13).Added CObjectCon::operator[]() to allow access to all objects in a
sl@0
 15110
	container by straight indexing.
sl@0
 15111
sl@0
 15112
Version 0.01.044
sl@0
 15113
================
sl@0
 15114
(Made by Colly, 23 Aug 1995)
sl@0
 15115
sl@0
 15116
1). TDes8::SetMax() and TDes16::SetMax() did not work correctly if the
sl@0
 15117
	TDes was from a TBufC.Des() or HBufC.Des(). This caused the
sl@0
 15118
	HBufC::NewMax() and HBufC::NewMaxL() to fail to set length to
sl@0
 15119
	MaxLength(). Fixed.
sl@0
 15120
sl@0
 15121
2). Added a new type TTrapHandler. This is an abstract class which needs
sl@0
 15122
	to be derived to provide a handler to work with the TRAP mechanism.
sl@0
 15123
	The trap handler can be installed by calling User::SetTrapHandler()
sl@0
 15124
	and can be cleared by passing a NULL pointer. By default there is no
sl@0
 15125
	trap handler. Once a trap handler is installed then each time TRAP is
sl@0
 15126
	invoked TTrapHandler::Trap() is called. If a leave is called then
sl@0
 15127
	TTrapHandler::Leave() is called. If the function being trapped does
sl@0
 15128
	not leave then TTrapHandler::UnTrap() is called. Each thread has its
sl@0
 15129
	own trap handler. Its not a good idea to install a trap handler while
sl@0
 15130
	under a TRAP (exercise for the reader to work out why), so a panic
sl@0
 15131
	will be given if this is attempted. The current trap handler can be
sl@0
 15132
	retrieved by calling User::TrapHandler().
sl@0
 15133
sl@0
 15134
3). Added a new ADT class CCleanup. The purpose of this class is to
sl@0
 15135
	provide an automated cleanup mechanism to go with the TTrapHandler
sl@0
 15136
	facility. This class is basically a stack onto which either
sl@0
 15137
	allocated cells can be pushed using PushL(TAny *aPtr) or objects
sl@0
 15138
	derived from CBase with PushL(CBase *aPtr). The object can
sl@0
 15139
	be popped from the stack with Pop() or popped and destroyed with
sl@0
 15140
	PopAndDestroy(). It is possible to pop a number of items from the
sl@0
 15141
	stack by using the overloaded Pop(TUint aCount) functions.
sl@0
 15142
sl@0
 15143
	The object also allows for nesting so that all objects at the
sl@0
 15144
	current nesting level can be popped or popped and destroyed with
sl@0
 15145
	PopAll() or PopAndDestroyAll(). These functions automatically
sl@0
 15146
	decrement the nesting level. The nesting level can be incremented
sl@0
 15147
	with NextLevel(). When the object is created the level is zero.
sl@0
 15148
	Objects cannot be pushed while the nesting level is zero so it is
sl@0
 15149
	necessary to call NextLevel() before doing a PushL().
sl@0
 15150
sl@0
 15151
	If the object is destroyed then all items on the stack will also
sl@0
 15152
	be destroyed.
sl@0
 15153
sl@0
 15154
	The cleanup object keeps a free slot at all times. Thus an object
sl@0
 15155
	can always be guaranteed to be added to the cleanup stack. Having
sl@0
 15156
	added the object, room is made for another free slot. This may
sl@0
 15157
	leave but it will be alright as the object has already been pushed
sl@0
 15158
	onto the stack and will be cleaned up. Cleaning up leaves room for
sl@0
 15159
	another free slot.
sl@0
 15160
sl@0
 15161
4). Added a new ADT class CTrapCleanup which puts 2) and 3) together to
sl@0
 15162
	give a framework for cleanup. All thats necessary to implement this
sl@0
 15163
	facility is to call CTrapCleanup::New(). There is no NewL() since
sl@0
 15164
	the trap handler can only be installed while not under a TRAP.
sl@0
 15165
	Destroying this object will remove the trap handler. Added the static
sl@0
 15166
	functions Adt::PushL(const TAny *), Adt::PushL(const CBase *),
sl@0
 15167
	Adt::Pop(), Adt::Pop(TUint aCount) and the PopAndDestroy()
sl@0
 15168
	equivalents which all use the installed CTrapCleanup object. Note
sl@0
 15169
	that the PopAll() variants are not available, since this is done
sl@0
 15170
	by the trap handler.
sl@0
 15171
sl@0
 15172
5). Added 2 more types to TLeave, i.e. ECleanup and ECleanupObj. ECleanup
sl@0
 15173
	will allocate the storage and leave on error. If successful it will
sl@0
 15174
	add the new cell to the cleanup list. ECleaupObj is the same except
sl@0
 15175
	that it will add the cell as a CBase derived object. It is possible
sl@0
 15176
	to use ::new with ECleanupObj, but you will just get
sl@0
 15177
	panicked. It should only be used with CBase::new. Note that any
sl@0
 15178
	call to new within a member function in a class derived from CBase
sl@0
 15179
	will be calling CBase::new and so will need ECleanup. If creating an
sl@0
 15180
	object then ECleanupObj is correct. Using User::AllocLC() is probably
sl@0
 15181
	preferable and always call new(ECleanupObj) or new(ELeave).
sl@0
 15182
sl@0
 15183
	Added RHeap::AllocLC(), User::AllocLC(), TDesC::AllocLC(),
sl@0
 15184
	HBufC::NewLC() and HBufC::NewMaxLC() which all are the same as
sl@0
 15185
	the equivalent L functions except that they add the object to
sl@0
 15186
	the cleanup list if successful.
sl@0
 15187
sl@0
 15188
	Remember that a Pop() of some kind will be required.
sl@0
 15189
sl@0
 15190
6). Added the function to return machine information from the Hardware
sl@0
 15191
	Abstraction Layer (HAL). This is retrieved by calling User::HalInfo().
sl@0
 15192
	The class is declared in E32HAL.H. Setting functions will be added
sl@0
 15193
	in a forthcoming release.
sl@0
 15194
	Note that this function takes a TDes8. This is to allow for extensions
sl@0
 15195
	to the class as developments proceed apace. The function will always
sl@0
 15196
	fill the entire descriptor with zero and then copy the smaller of the
sl@0
 15197
	current size of the info class or size of the descriptor. Thus if a
sl@0
 15198
	new info class is used with an old O/S all new members are guaranteed
sl@0
 15199
	to be zeroed. If an old info class is used with a new O/S only the
sl@0
 15200
	appropriate slice of the new info struct is	returned. There is a
sl@0
 15201
	typedef for a packaged THalInfoV1 called THalInfoV1Buf which can be
sl@0
 15202
	passed to User::HalInfo(). Ofcourse later version will be derived
sl@0
 15203
	from THalInfoV1 as THalInfoV2 and so on, leaving a clear picture of
sl@0
 15204
	what has been added between versions. The object can be retrieved
sl@0
 15205
	from the package as follows:
sl@0
 15206
sl@0
 15207
	THalInfoV1Buf b;
sl@0
 15208
	User::HalInfo(b);
sl@0
 15209
	THalInfoV1 &info=b();
sl@0
 15210
	test.Printf(_L("Machine name = %S\n"),&info.MachineName());
sl@0
 15211
sl@0
 15212
	See the test program \E32\TCDT\T_HAL.CPP for details.
sl@0
 15213
sl@0
 15214
7). The O/S was running DLL startup procedures before starting the file
sl@0
 15215
	server and window server threads. It has to do this to allow the
sl@0
 15216
	Window and File server DLLs to register their threads so that they
sl@0
 15217
	can be started in an ordered manner. However many other servers
sl@0
 15218
	like the alarm, comms and secokets servers would also like to start
sl@0
 15219
	the server thread from their E32Dll() entry point. The solution is
sl@0
 15220
	to hang all starting threads except the Window and File server
sl@0
 15221
	threads until the Window and File server threads have started.
sl@0
 15222
sl@0
 15223
8).	Changed the RLibrary::Load() function so that it will automatically
sl@0
 15224
	add the approriate suffix for the current build. Thus if the file
sl@0
 15225
	server wants to load a .DLL called "elocal.fsy" it just uses
sl@0
 15226
	"elocal.fsy". The O/S will look for the .DLL names as follows:
sl@0
 15227
sl@0
 15228
	   Build         Source     Suffix     Target
sl@0
 15229
	============  ============  ======  ==============
sl@0
 15230
	ansi release  "elocal.fsy"   none     "elocal.fsy"
sl@0
 15231
	ansi debug    "elocal.fsy"      d    "elocald.fsy"
sl@0
 15232
	uni release   "elocal.fsy"      u    "elocalu.fsy"
sl@0
 15233
	uni debug     "elocal.fsy"     ud   "elocalud.fsy"
sl@0
 15234
sl@0
 15235
	Because of 8 character name limits the maximum length name of a DLL
sl@0
 15236
	can only be 6 characters. If an extension is not supplied it will
sl@0
 15237
	be assumed to be .DLL.
sl@0
 15238
sl@0
 15239
9). Added TPtrC8::Set(const TDesC8 &aDes) and TPtr8::Set(const TPtr8 &aPtr)
sl@0
 15240
	and the TPtrC16 and TPtr16 equivalents.
sl@0
 15241
sl@0
 15242
10).The resource file \E32\KPWINS\KWINS.RC was including afxres.h from
sl@0
 15243
	\msvc20\mfc\include which is not actually required. Fixed.
sl@0
 15244
sl@0
 15245
11).Fixed a bug in TLex::Val(TInt?) which has been lurking from day one
sl@0
 15246
	and was scraping by through good fortune.
sl@0
 15247
sl@0
 15248
12).Fixed a bug in creating global operating system objects such as
sl@0
 15249
	RSempahores etc.
sl@0
 15250
sl@0
 15251
13).Changed CArrayPakBase to be derived directly from CBase rather
sl@0
 15252
	than CArrayVarBase. This was being done to share code but because
sl@0
 15253
	of the public inheritance it caused some nasty problems since a
sl@0
 15254
	CArrayPakBase is definitely not ISA CArrayVarBase. Users of this
sl@0
 15255
	class note that the sort function is SortL() and not Sort() since
sl@0
 15256
	it makes a copy of the array as a CArrayVar and then sorts it.
sl@0
 15257
	Making the copy can clearly fail. Also note that since the sort is
sl@0
 15258
	actually performed on a CArrayVar the key for SortL() needs to be
sl@0
 15259
	a TKeyArrVar. Other functions take a TKeyArrPak as normal. No code
sl@0
 15260
	should be affected by this change.
sl@0
 15261
sl@0
 15262
14).Added const TArray<T> Array() to each of the array template classes,
sl@0
 15263
	which allows a degree of polymorphism amongst the arrays.
sl@0
 15264
	TArray<T> only allows const T &operator[]() and Count().
sl@0
 15265
sl@0
 15266
	If you want a function to be able to read any of the arrays then
sl@0
 15267
	declare it as follows:
sl@0
 15268
sl@0
 15269
	void ReadAnyArray(const TArray<TBuf_40> anArray);
sl@0
 15270
sl@0
 15271
	It could use the TArray as follows:
sl@0
 15272
sl@0
 15273
	TUint count=anArray.Count();
sl@0
 15274
	for (TUint i=0;i<count;i++)
sl@0
 15275
		test.Printf(_L("%S\n"),&anArray[i]);
sl@0
 15276
sl@0
 15277
	Then if you have:
sl@0
 15278
sl@0
 15279
	CArrayFixFlat<TBuf_40> *fix;
sl@0
 15280
	CArrayFixFlat<TBuf_40> *var;
sl@0
 15281
	CArrayFixFlat<TBuf_40> *pak;
sl@0
 15282
sl@0
 15283
	They can all be passed to ReadAnyArray() as follows:
sl@0
 15284
sl@0
 15285
	ReadAnyArray(fix->Array());
sl@0
 15286
	ReadAnyArray(var->Array());
sl@0
 15287
	ReadAnyArray(pak->Array());
sl@0
 15288
sl@0
 15289
15).SteveT was getting a weird problem with delete in one of
sl@0
 15290
	his CBase derived classes with the virtual destructor calling the
sl@0
 15291
	delete from the Windows library. The fix to his problem is to
sl@0
 15292
	provide CBase::operator delete() even though its not necessary.
sl@0
 15293
sl@0
 15294
Version 0.01.043
sl@0
 15295
================
sl@0
 15296
(Made by Colly, 21 Aug 1995)
sl@0
 15297
sl@0
 15298
1). Renamed CBufFlat::Capacity() to CBufFlat::SetReserveL().
sl@0
 15299
2). Added the L suffix to all the methods in the ADT classes which
sl@0
 15300
	can leave.
sl@0
 15301
	CBufBase::InsertL(), CBufFlat::InsertL() and CBufSeg::InsertL().
sl@0
 15302
	CArrayFix::AppendL(), CArrayVar::AppendL() and CArrayPak::AppendL().
sl@0
 15303
	CArrayFix::InsertL(), CArrayVar::InsertL() and CArrayPak::InsertL().
sl@0
 15304
	CArrayFix::InsertIsqL(), CArrayVar::InsertIsqL() and CArrayPak::InsertIsqL().
sl@0
 15305
	Note that all occurences of ISQ (uppercase) have been changed to
sl@0
 15306
	lower case. Thus FindISQ() has become FindIsq().
sl@0
 15307
	Note also that the virtual function InsertL() has been renamed to
sl@0
 15308
	DoInsertL(), so that the derived classes do not have to re-define
sl@0
 15309
	the two new InsertL()'s in CBufBase.
sl@0
 15310
3). The CArray classes had a kludged way of delaying allocation of the
sl@0
 15311
	CBufBase. Fixed.
sl@0
 15312
4). Incorporated SteveT's changes to TPoint, TSize and TRect. His release
sl@0
 15313
	notes are as follows:
sl@0
 15314
		There are 3 changes to the TRect spec as agreed with Martin Tasker:-
sl@0
 15315
		Replaced
sl@0
 15316
			TInt TRect::InterSect()
sl@0
 15317
			with
sl@0
 15318
			void TRect::InterSection() &
sl@0
 15319
			TBool TRect::Intersects()
sl@0
 15320
		Changed the names of:-
sl@0
 15321
			TRect:Union() to TRect::BoundingRect()
sl@0
 15322
			TRect::Inside() to TRect::Contains()
sl@0
 15323
		I have also removed most of the inline functions from the TPoint,
sl@0
 15324
		TSize & TRect functions. The only ones left as inline are the
sl@0
 15325
		TPoint & TSize constructors and operator=, although I'm still not
sl@0
 15326
		too sure whether they should stay inline or not.
sl@0
 15327
5).	Changed CBufBase::Ptr() and CBufBase::BackPtr() to return TPtrs
sl@0
 15328
	rather than pointer and length.
sl@0
 15329
	Added CBufBase::Read(TUint aPos,TDes8 &aDes)
sl@0
 15330
		which will read aDes.Length() bytes.
sl@0
 15331
	Added CBufBase::Read(TUint aPos,TDes8 &aDes,TUint aLength)
sl@0
 15332
		which will read aLength bytes.
sl@0
 15333
	Added CBufBase::Write(TUint aPos,const TDesC8 &aDes)
sl@0
 15334
		which will write aDes.Length() bytes.
sl@0
 15335
	Added CBufBase::Write(TUint aPos,const TDesC8 &aDes,TUint aLength)
sl@0
 15336
		which will write aLength bytes.
sl@0
 15337
	Added CBufBase::InsertL(TUint aPos,const TDesC8 &aDes)
sl@0
 15338
		which will insert aDes.Length() bytes.
sl@0
 15339
	Added CBufBase::InsertL(TUint aPos,const TDesC8 &aDes,TUint aLength)
sl@0
 15340
		which will insert aLength bytes.
sl@0
 15341
6). Removed the protected destructor (not actually implemented) from CBase
sl@0
 15342
	and changed CBase::Destroy() so that it does not delete this.
sl@0
 15343
sl@0
 15344
	Renamed	CBase::Destroy() as CBase::Destruct() and all other
sl@0
 15345
	virtual Destroy()s to Destruct().
sl@0
 15346
sl@0
 15347
	Changed Adt::Destroy() to call delete after the Destruct().
sl@0
 15348
sl@0
 15349
	This allows CBase derived objects to be aggregated by value, although
sl@0
 15350
	it is not Psion policy to do this (preferring to aggegrate by reference).
sl@0
 15351
sl@0
 15352
	Note that there is no longer any requirement to call CBase::Destroy()
sl@0
 15353
	from classes derived from CBase.
sl@0
 15354
sl@0
 15355
	Note that if aggregating by reference which should be the case for
sl@0
 15356
	all Psion code then the object must be destroyed with Adt::Destroy()
sl@0
 15357
	rather than the Destruct() function. Its probably a good idea to
sl@0
 15358
	search all code for ->Destroy() and check each case. Also make sure
sl@0
 15359
	that all classes derived from CBase	which have virtual void Destroy()
sl@0
 15360
	are changed to virtual void Destruct().
sl@0
 15361
7). CObjectIx, CObjectCon and CObjectConIx could all be created with
sl@0
 15362
	optional leave on error. This is not in the spirit of
sl@0
 15363
	the ADT classes and so I have removed the option. They will now
sl@0
 15364
	always leave on errors. The methods have been renamed where
sl@0
 15365
	applicable with the L suffix. These classes were also privately
sl@0
 15366
	derived from CArrayFixFlat<T> which was breaking the ISA
sl@0
 15367
	relationship with CBase, which prevents use of Adt::Destroy().
sl@0
 15368
	They now have a CArrayFixFlat<T> and are derived directly from
sl@0
 15369
	CBase. CObject and CObjectCon used to capitalise the name. They
sl@0
 15370
	are now case sensitive on the names. Note this affects server
sl@0
 15371
	names (watch out SteveT and Brendan).
sl@0
 15372
8). TPckg<T>::operator->() and TPckg<T>::operator()() were returning
sl@0
 15373
	const T * and const T & respectively. Fixed.
sl@0
 15374
9). Added HBufC::NewMax() and HBufC::NewMaxL() which allocate an HBufC
sl@0
 15375
	of the requested size and then set the length to the maximum length.
sl@0
 15376
	Note in the proposals database a function it was agreed to add
sl@0
 15377
	a function SetLengthToMax() to TDes. This has been done but I decided
sl@0
 15378
	to call it SetMax(). Obviously these functions are available for 8
sl@0
 15379
	and 16 HBufC's as well.
sl@0
 15380
10).If multiple inheritance is to be allowed for then the only way to
sl@0
 15381
	guarantee that an Adt::Destroy() through a CBase pointer will work
sl@0
 15382
	correctly is to have a virtual destructor. This has been implemented
sl@0
 15383
	in CBase. No derived classes need to be changed as the compiler will
sl@0
 15384
	generate the appropriate destructors automatically. If this seems
sl@0
 15385
	like a waste then I have to agree, however it will make us compatible
sl@0
 15386
	with the C++ language and all proper C++ implementations. If you want
sl@0
 15387
	to know more details then ask me, Gerry or DavidW.
sl@0
 15388
11).The ENTER,CATCH,END_ENTER mechanism had a serious flaw when using
sl@0
 15389
	a register calling convention. This has now been replaced with the
sl@0
 15390
	pre-processor macros TRAP and TRAPD. These are defined as below:
sl@0
 15391
sl@0
 15392
#define TRAP(_r,_s) {TTrap __t;if (__t.Trap(_r)==0){_s;TTrap::UnTrap();}}
sl@0
 15393
#define TRAPD(_r,_s) TInt _r;{TTrap __t;if (__t.Trap(_r)==0){_s;TTrap::UnTrap();}}
sl@0
 15394
sl@0
 15395
	Basically _r is an integer variable which will receive the result of
sl@0
 15396
	any User::Leave() and _s is a statement to be executed. It can be any
sl@0
 15397
	valid C++ statement, but will normally be a function call.
sl@0
 15398
sl@0
 15399
	The difference between TRAP and TRAPD is that TRAPD will declare the
sl@0
 15400
	integer variable for you. The integer variable will always be
sl@0
 15401
	initialised to 0 before the statement _s is executed. It is possible
sl@0
 15402
	to use a number of statements for _s by separating them with ; but
sl@0
 15403
	this will possibly lead to failure.
sl@0
 15404
sl@0
 15405
	Examples:
sl@0
 15406
sl@0
 15407
	CSomething *pS=new(ELeave) CSomething;
sl@0
 15408
	TRAPD(ret,pC->ConstructL())
sl@0
 15409
	if (ret!=KErrNone)
sl@0
 15410
		{
sl@0
 15411
		Adt::Destroy(pS);
sl@0
 15412
		User::Leave(ret);
sl@0
 15413
		}
sl@0
 15414
sl@0
 15415
	is the same as
sl@0
 15416
sl@0
 15417
	CSomething *pS=new(ELeave) CSomething;
sl@0
 15418
	TInt ret;
sl@0
 15419
	TRAP(ret,pC->ConstructL())
sl@0
 15420
	if (ret!=KErrNone)
sl@0
 15421
		{
sl@0
 15422
		Adt::Destroy(pS);
sl@0
 15423
		User::Leave(ret);
sl@0
 15424
		}
sl@0
 15425
sl@0
 15426
	If you have a function, say TInt DoSomethingL() and you want to
sl@0
 15427
	get the result of the function or the leave then do this:
sl@0
 15428
sl@0
 15429
	TRAPD(ret,ret=DoSomethingL())
sl@0
 15430
12).Changed RHeap::Free() to zero the cell it has just freed in the debug
sl@0
 15431
	build.
sl@0
 15432
13).Added User::RequestComplete() which will complete a request in for
sl@0
 15433
	the current thread.
sl@0
 15434
14).Added a new CDT TCallBack which packages a function taking a TAny *
sl@0
 15435
	argument and returning an integer with a TAny * value. It has a two
sl@0
 15436
	constructors, the one which does not have a TAny * value will set the
sl@0
 15437
	value to NULL. It has one function CallBack which can be used to call
sl@0
 15438
	the function passing it the TAny * value. e.g.
sl@0
 15439
sl@0
 15440
	class TMyIdle
sl@0
 15441
		{
sl@0
 15442
	public:
sl@0
 15443
		void Run();
sl@0
 15444
		static TInt Idle(TAny *aPtr);
sl@0
 15445
		};
sl@0
 15446
sl@0
 15447
	TInt TMyIdle::Idle(TAny *anObj)
sl@0
 15448
		{((TMyIdle *)anObj)->Run();}
sl@0
 15449
sl@0
 15450
	TMyIdle idler;
sl@0
 15451
	CIdle *pI=CIdle::New();
sl@0
 15452
	pI->ConstructL(TCallBack(TMyIdle::Idle,&idler));
sl@0
 15453
15).Added a new active object CIdle which will call back whenever
sl@0
 15454
	the active scheduler has scheduled all higher priority objects.
sl@0
 15455
	CIdle will re-schedule itself as long as the callback function
sl@0
 15456
	returns TRUE. It can be re-started by calling Start() again.
sl@0
 15457
	New() and NewL() add the idle object to the scheduler.
sl@0
 15458
16).Changed CPeriodic to use a TCallBack. Note the CPeriodic::RunL()
sl@0
 15459
	now always calls the callback.
sl@0
 15460
17).Added TLex8::UnGetToMark() and TLex16::UnGetToMark() which just
sl@0
 15461
	reset iNext to iMark.
sl@0
 15462
18).Renamed all the functions which were in the debug build but not in
sl@0
 15463
	the release build to have an __Dbg prefix. Also renamed the test
sl@0
 15464
	functions __TestInvariant() and __Test to __DbgTestInvariant and
sl@0
 15465
	__DbgTest. This is partly as a reminder to users of these functions
sl@0
 15466
	that they should only be used inside #if defined(_DEBUG) and partly
sl@0
 15467
	to ease producing the .DEF file to control the .DLL build process
sl@0
 15468
	using linkage by ordinal. An automated tool will generate the .DEF
sl@0
 15469
	file for a .DLL linked by name and will produce the .DEF for the
sl@0
 15470
	debug build. It can then produce the .DEF for the release build
sl@0
 15471
	by leaving out all the functions starting with __Dbg.
sl@0
 15472
sl@0
 15473
Version 0.01.042
sl@0
 15474
================
sl@0
 15475
(Made by Colly, 3 Aug 1995)
sl@0
 15476
sl@0
 15477
1). All DLLs now link by ordinal.
sl@0
 15478
2). The release versions had a startup bug with some configurations of DLL
sl@0
 15479
	useage. DavidW this is what cause the BAFL test code to fail.
sl@0
 15480
3). Includes the first release of the Epoc/32 microkernel platform and
sl@0
 15481
	implementation for 486 processor on an IBM/PC.
sl@0
 15482
sl@0
 15483
NOTES
sl@0
 15484
=====
sl@0
 15485
sl@0
 15486
Its a good idea to turn on DEBUG under link so that release EXEs and DLLs
sl@0
 15487
have at least the public symbols for debugging. This can be done for
sl@0
 15488
all build variants. I have done this for all .MAK files in E32 and F32.
sl@0
 15489
sl@0
 15490
Version 0.01.041
sl@0
 15491
================
sl@0
 15492
(Made by Colly, 25 July 1995)
sl@0
 15493
sl@0
 15494
1). RThread::Read() failed when reading a descriptor of the type
sl@0
 15495
	generated by TBufC::Des(). Added a test and fixed.
sl@0
 15496
2). Made the NULL thread hang around forever instead of exiting to help
sl@0
 15497
	with debugging.
sl@0
 15498
3). Added a new directory BWINS to the group which now has all the .MAK
sl@0
 15499
	files used to build the base. If the .MAK is in the same directory
sl@0
 15500
	as the source files then the debug databases .PDB files don't store
sl@0
 15501
	a full path which causes the debugger to prompt for the source
sl@0
 15502
	directory. Putting them in BWINS causes all paths to be stored in the
sl@0
 15503
	.PDB. Note that the BLD.CMD files remain where they were they just
sl@0
 15504
	pick up the .MAK file from BWINS. If using VC++ then load the .MAK
sl@0
 15505
	file directly from BWINS. Moved the startup files from USTAT to
sl@0
 15506
	UPWINS and dropped the USTAT directory from the group.
sl@0
 15507
	Split the startup module us_stat.cpp into two UP_EXE.CPP for
sl@0
 15508
	starting .EXEs and UP_DLL.CPP for starting DLLs.
sl@0
 15509
4). Split EWINS into two .DLLs. EWINS still	survives but now contains
sl@0
 15510
	just the user mode functions. KWINS is new and contains the kernel.
sl@0
 15511
	There is no need to change any .MAK files as it is only the
sl@0
 15512
	EWINSxx.DLLs which link to KWINSxx.DLL.
sl@0
 15513
5). Stopped releasing the include file E32CHAR.H.
sl@0
 15514
6). Merged the E32EVNT.H and E32WSRV.H header files into one header file
sl@0
 15515
	E32SVR.H which is just for communication with system servers such
sl@0
 15516
	as the Window server and File server etc. Moved the functions which
sl@0
 15517
	were in the UserWindowServer class to the UserSvr class and gave
sl@0
 15518
	the functions better names. Note that I have given the functions in
sl@0
 15519
	the UserSvr class more meaningful names. SteveT, these changes will
sl@0
 15520
	affect you!
sl@0
 15521
7). Fixed missing external references to _fltused, _adj_fdiv, _adjust_fdiv,
sl@0
 15522
	_adjust_fdivr_m64 and _adjust_fdiv_m64.
sl@0
 15523
8). Added the functions to support Global and thread local data in DLLs.
sl@0
 15524
	The functions are as follows:
sl@0
 15525
sl@0
 15526
	TAny *Dll::Tls() - Returns the Thread Local Storage variable for the
sl@0
 15527
					   current DLL.
sl@0
 15528
	void Dll::SetTls(TAny *aPtr) - Sets the Thread Local Storage variable
sl@0
 15529
								   for the current DLL.
sl@0
 15530
	Usually in the entry point E32Dll() when the process is attached or
sl@0
 15531
	when a thread is attached to the DLL some memory will be allocated
sl@0
 15532
	on the threads heap. This value will then be saved with Dll::SetTls().
sl@0
 15533
	Thereafter it can be retrieved with Dll::Tls().
sl@0
 15534
sl@0
 15535
	The following functions are not yet fully implemented:
sl@0
 15536
sl@0
 15537
	TBool Dll::GlobalAllocated();
sl@0
 15538
	TInt Dll::GlobalAlloc(TUint aSize);
sl@0
 15539
	TInt Dll::GlobalRead(TUint aPos,TDes8 &aDes);
sl@0
 15540
	TInt Dll::GlobalWrite(TUint aPos,TDesC8 &aDes);
sl@0
 15541
sl@0
 15542
	Dll::GlobalAlloc() allocates the global data for the currently
sl@0
 15543
	running	DLL. Specifying a size of 0 will free the data. The amount
sl@0
 15544
	of data allocated can be changed by calling Dll::GlobalAlloc()
sl@0
 15545
	repeatedly. It is normal to allocate the global data in the entry
sl@0
 15546
	point E32Dll() when a process attaches and when
sl@0
 15547
	Dll::GlobalAllocated() returns EFalse. There is no need to free
sl@0
 15548
	the data since if the DLL is unloaded the data will be freed. However
sl@0
 15549
	it is possible to use some of the allocated data to keep a reference
sl@0
 15550
	count which can be incremented on process attach and decremented on
sl@0
 15551
	process detach. When the count is zero it can be discarded.
sl@0
 15552
sl@0
 15553
	Since the data is kept in the kernel the DLL cannot have direct
sl@0
 15554
	access to the data, so it must be read and written using the
sl@0
 15555
	Dll::GlobalRead() and Dll::GlobalWrite() functions. It
sl@0
 15556
	is considered a panic to write past the current size of the data
sl@0
 15557
	but not an error to read past the end of the data.
sl@0
 15558
sl@0
 15559
	These functions are implemented in a class of their own since they
sl@0
 15560
	need to be statically linked with each DLL or EXE (note than an
sl@0
 15561
	EXE is also potentially a DLL) on the WINS platform.
sl@0
 15562
sl@0
 15563
	Finally it is a good idea to minimize the size of the global data.
sl@0
 15564
sl@0
 15565
	Look at the test DLL \e32\tcdt\t_dll.mak and the test program
sl@0
 15566
	\e32\tcdt\t_tdll.mak to see how this works in practice.
sl@0
 15567
sl@0
 15568
9). Now release EXDLL??.PDB	files. These come from EXDLL??.OBJ which is
sl@0
 15569
	a start up module for EWINS??.DLL, KWINS??.DLL and LWINS??.DLL which
sl@0
 15570
	have special initialisation	requirements. These are just released as
sl@0
 15571
	an aide to debugging.
sl@0
 15572
sl@0
 15573
NOTES
sl@0
 15574
=====
sl@0
 15575
sl@0
 15576
It is now vital that programs are build with proper make files. In
sl@0
 15577
particular any program still linking to the C runtime library MSVCRT20.DLL
sl@0
 15578
will fail to start correctly. Note that we are only talking about the
sl@0
 15579
C runtime library and not the Win32 API libraries kernel32.lib,
sl@0
 15580
gdi32.lib, user32.lib etc. The C runtime library is no longer necessary
sl@0
 15581
as the base is now running entirely independently.
sl@0
 15582
sl@0
 15583
All EXEs should be linked with ESTAT??.OBJ and should have _E32Startup
sl@0
 15584
set as the entry point.
sl@0
 15585
sl@0
 15586
All DLLs should be linked with EDLL??.OBJ and should have _E32Dll set
sl@0
 15587
as the entry point. Remeber that a DLL must now supply a function
sl@0
 15588
E32Dll(). To see and example look at the code in \E32\DPWINS\WS_UTL.CPP.
sl@0
 15589
sl@0
 15590
Everything should be linked with the user library EWINS??.LIB. Apart from
sl@0
 15591
other E32 software nothing else should be necessary.
sl@0
 15592
sl@0
 15593
Make sure that "Ignore all default libraries" is set and that
sl@0
 15594
"Disable exception handling is also checked" and that alignment is
sl@0
 15595
set to 4 bytes.
sl@0
 15596
sl@0
 15597
If you are not sure then start with one of the .MAK files released by
sl@0
 15598
the base and modify it to suit your project.
sl@0
 15599
sl@0
 15600
Version 0.01.040
sl@0
 15601
================
sl@0
 15602
(Made by Colly, 20 July 1995)
sl@0
 15603
sl@0
 15604
1). Converted the kernel to having a Kernel Supervisor Server and an
sl@0
 15605
	executive.
sl@0
 15606
2). Replaced the specific exit type of exception with a Panic() category
sl@0
 15607
	of Exception.
sl@0
 15608
3). Clean compiled all the platform independent source code with the GCC
sl@0
 15609
	compiler with the exception of the sources in UMATH.
sl@0
 15610
4). Added cleanup functionality to the kernel.
sl@0
 15611
5). Incorporated SteveT's fixes to pointer messages with the new screen
sl@0
 15612
	surround.
sl@0
 15613
6). Added Martin Dolphin's CArrayPacked classes. Renamed the classes
sl@0
 15614
	"Packed" to "Pak". His release notes follow:
sl@0
 15615
sl@0
 15616
	 This version of CArrayPak inherits from CArrayVar and uses
sl@0
 15617
	 some virtual functions to achieve code reuse. TKeyArrayPak
sl@0
 15618
	 inherits from TKeyArrayVar.
sl@0
 15619
sl@0
 15620
	 ucdt\uc_func.cpp
sl@0
 15621
		This has a slightly modified binary search.
sl@0
 15622
		This modification guarantees that:
sl@0
 15623
		//if no match is found.
sl@0
 15624
		//the index of the record logically following the value being searched
sl@0
 15625
		//for will be returned in aPos.
sl@0
 15626
sl@0
 15627
	uadt\ua_array.cpp
sl@0
 15628
		Has the new CArrayPak code plus some other small
sl@0
 15629
		modification listed below.
sl@0
 15630
		CArrayFixBase::InsertIsq changed to reflect change in BinarySearch.
sl@0
 15631
		CArrayVarBase::Find, FindIsq have had unused length parameter
sl@0
 15632
		removed, some functions made virtual to achieve code reuse.
sl@0
 15633
8). Fixed further bugs in TInt64 divide and remainder functions as
sl@0
 15634
	reported by SteveT.
sl@0
 15635
9). Incorporated SteveT's changes to the region classes.
sl@0
 15636
10).Incorporated the faster versions of User::MemCopy(),User::MemFill()
sl@0
 15637
	and User::MemFillZ()
sl@0
 15638
11).Added two template inline functions to align pointers.
sl@0
 15639
	inline T *Align2(T *aPtr)
sl@0
 15640
	inline T *Align4(T *aPtr)
sl@0
 15641
	Align2 will make ((T *)&1)==0
sl@0
 15642
	Align4 will make ((T *)&3)==0
sl@0
 15643
	and two template functions to align integers.
sl@0
 15644
	inline TUint Align4(T aVal)
sl@0
 15645
	inline TUint Align2(T aVal)
sl@0
 15646
12).Removed the Notify() and SetNotify methods from RThread and RProcess.
sl@0
 15647
	They will re-appear in the file server in due course.
sl@0
 15648
13).Added the executive dispatcher to the kernel.
sl@0
 15649
14).Rationalised the RThread and RChunk read/write routines.
sl@0
 15650
15).Changed CActiveScheduler::Destroy() to just remove active objects
sl@0
 15651
	from the schedule queue. It used to destroy them as well. Before
sl@0
 15652
	removing each active object it will call CActive::Cancel();
sl@0
 15653
16).Fixed a bug in TLex8::NextToken() and TLex16::NextToken() which
sl@0
 15654
	was not checking properly for the end of the buffer. Found by Martin
sl@0
 15655
	Dolphin by trying to lex an empty command line.
sl@0
 15656
17).Changed the name of the key matching enumerates as follows:
sl@0
 15657
	TKeyArrayCmp to TKeyCmpText
sl@0
 15658
	TKeyArrayCmpNumeric to TKeyCmpNumeric
sl@0
 15659
	Added another constructor for comparing descriptors and changed
sl@0
 15660
	the order of the parameters as follows:
sl@0
 15661
	inline TKey(TUint anOffset,TKeyCmpText aType);
sl@0
 15662
		At anOffset should be one of the descriptor types, TPtr,TBufC etc
sl@0
 15663
	inline TKey(TUint anOffset,TKeyCmpText aType,TUint aLength);
sl@0
 15664
		At anOffset should be TText of length aLength.
sl@0
 15665
	inline TKey(TUint anOffset,TKeyCmpNumeric aType);
sl@0
 15666
		At anOffset should be an integer of some type.
sl@0
 15667
	Added support for TInt64s.
sl@0
 15668
	This change is propagated to the various TKeyArrayXXX:: classes.
sl@0
 15669
18).Fixed a race condition in the kernel when resuming threads.
sl@0
 15670
19).If a thread panics then it just quietly disappears. If this is
sl@0
 15671
	one of the server threads then the program appears to hang for
sl@0
 15672
	no reason. To this end I have added new services RThread::Server()
sl@0
 15673
	and RThread::SetServer(TBool aState). Any thread marking itself as
sl@0
 15674
	a server with RThread().SetServer(ETrue) will have its panics
sl@0
 15675
	reported through the messagebox and will then abort the program.
sl@0
 15676
	Note that this is done for the main thread as well.
sl@0
 15677
sl@0
 15678
NOTES
sl@0
 15679
	All test programs pass in all builds.
sl@0
 15680
sl@0
 15681
Version 0.01.039
sl@0
 15682
================
sl@0
 15683
(Made by Colly, 23 June 1995)
sl@0
 15684
sl@0
 15685
1). Finally removed the dependency on the C runtime libarary.
sl@0
 15686
sl@0
 15687
	There are new libraries in t:\msvc21\lib which should all
sl@0
 15688
	be copied to c:\msvc20\lib. This is still necessary as the
sl@0
 15689
	main operating system .DLL and SteveT's .DLL still link to
sl@0
 15690
	the runtime library MSVCRT20.DLL. Also copy
sl@0
 15691
	t:\msvc21\system32\*.* to c:\winnt35\system32\*.*
sl@0
 15692
sl@0
 15693
	The build for a .EXE has now changed as follows:
sl@0
 15694
sl@0
 15695
	a). Select project settings and highlight all 4 builds:
sl@0
 15696
			Select the Link tab and the Output category.
sl@0
 15697
			Set Entry-point symbol to _E32Startup
sl@0
 15698
			(The case is important in _E32Startup)
sl@0
 15699
			Select the general category.
sl@0
 15700
			Delete all the libraries/object modules.
sl@0
 15701
			Make sure "Ignore all Default libraries" is selected.
sl@0
 15702
	b). Select each build in turn and set the libraries/object modules
sl@0
 15703
		as follows:
sl@0
 15704
sl@0
 15705
		Release     : \e32sys\estat.obj \e32sys\ewins.lib
sl@0
 15706
		Debug       : \e32sys\estatd.obj \e32sys\ewinsd.lib
sl@0
 15707
		Uni Release : \e32sys\estatu.obj \e32sys\ewinsu.lib
sl@0
 15708
		Uni Debug   : \e32sys\estatud.obj \e32sys\ewinsud.lib
sl@0
 15709
sl@0
 15710
	If in doubt look at one of the test programs.
sl@0
 15711
sl@0
 15712
	The build for a .DLL which is linked to Win32 does not need to
sl@0
 15713
	change at all.
sl@0
 15714
sl@0
 15715
	The build for a .DLL which is linked only to E32 must be changed
sl@0
 15716
	as follows:
sl@0
 15717
sl@0
 15718
	a). Select project settings and highlight all 4 builds:
sl@0
 15719
			Select the Link tab and the Output category.
sl@0
 15720
			Set Entry-point symbol to _E32Dll
sl@0
 15721
			(The case is important in _E32Dll)
sl@0
 15722
			Select the general category.
sl@0
 15723
			Delete all the libraries/object modules.
sl@0
 15724
			Make sure "Ignore all Default libraries" is selected.
sl@0
 15725
	b). Select each build in turn and set the libraries/object modules
sl@0
 15726
		as follows:
sl@0
 15727
sl@0
 15728
		Release     : \e32sys\edll.obj \e32sys\ewins.lib
sl@0
 15729
		Debug       : \e32sys\edlld.obj \e32sys\ewinsd.lib
sl@0
 15730
		Uni Release : \e32sys\edllu.obj \e32sys\ewinsu.lib
sl@0
 15731
		Uni Debug   : \e32sys\edllud.obj \e32sys\ewinsud.lib
sl@0
 15732
sl@0
 15733
	c). Provide a function prototyped as follows:
sl@0
 15734
sl@0
 15735
		GLDEF_C TInt E32Dll(TDllReason aReason)
sl@0
 15736
sl@0
 15737
		See \f32\sfsrv\fs_utl.cpp for an example of such a function.
sl@0
 15738
sl@0
 15739
	The new system cannot be build with the project system at the
sl@0
 15740
	moment and must be built with the VC++ IDE. The correct build
sl@0
 15741
	order is as follows:
sl@0
 15742
sl@0
 15743
	\e32\lsrc\lwins.mak
sl@0
 15744
	\e32\kpwins\ewins.mak
sl@0
 15745
	\e32\ustat\estat.mak
sl@0
 15746
	\e32\ustat\edll.mak
sl@0
 15747
sl@0
 15748
2). Added the fancy graphics screen bitmap of protea to surround the screen.
sl@0
 15749
	It does not appear in its full glory on my work machine, but it does on
sl@0
 15750
	my home machine. Perhaps SteveT can sort this out for me. I am also
sl@0
 15751
	assuming that SteveT will handle the buttons on the imaghe and return
sl@0
 15752
	them as key strokes.
sl@0
 15753
3). CServer::RunL() was still using delete to remove a session when
sl@0
 15754
	a client disconnected rather than Destroy().
sl@0
 15755
4). Added a protected destructor to CBase which will stop any objects
sl@0
 15756
	derived from CBase being placed on the stack.
sl@0
 15757
5). Increased the Window servers stack to 1MByte.
sl@0
 15758
6). TInt64 divide was not working for large intergers.
sl@0
 15759
7). Absorbed SteveT's new region code.
sl@0
 15760
8). Fixed a bug in TLex::Val() which was not dealing with the end of the
sl@0
 15761
	descriptor properly. MartinH's fix.
sl@0
 15762
9). Added the TReal to buffer and buffer to TReal functions. The maths
sl@0
 15763
	library is now complete. Thanks to MartinH.
sl@0
 15764
10).Fixed a bug in CArrayFixBase::DestroyAll().
sl@0
 15765
11).Moved the TInt64 class from E32MATH.H to E32STD.H and its source
sl@0
 15766
	code from umath to ucdt.
sl@0
 15767
12).Took the additions to the bitmap allocator from JaneS
sl@0
 15768
13).New version of enter and leave which should fix previous problems
sl@0
 15769
sl@0
 15770
NOTES
sl@0
 15771
=====
sl@0
 15772
sl@0
 15773
1). T_LEX.CPP failed because the TReal functions now work. I have
sl@0
 15774
	commented these out until MH can fix them.
sl@0
 15775
2). T_THREAD.CPP and T_SEMUTX.CPP fail under the unicode debug version.
sl@0
 15776
	T_THREAD because their is a race condition in the kernel somwhere
sl@0
 15777
	and T_SEMUTX.CPP because there is a bug in the program logic. I will
sl@0
 15778
	fix these in the next release.
sl@0
 15779
sl@0
 15780
Version 0.01.038
sl@0
 15781
================
sl@0
 15782
(Made by DavidW, 19 May 1995)
sl@0
 15783
sl@0
 15784
One step backwards before taking two steps forward again!
sl@0
 15785
Put back RRegion::~RRegion to allow the Window Server and GDI to
sl@0
 15786
release new versions quickly, compatible with the latest E32, before
sl@0
 15787
they take more time over the next week to convert to a new RRegion
sl@0
 15788
scheme altogether.
sl@0
 15789
sl@0
 15790
[Added later - fixed INCC.PRJ to release E32DES8.H & E32DES16.H]
sl@0
 15791
sl@0
 15792
Also made a fix to MNT.CMD which meant that only the Release build
sl@0
 15793
versions were being released.  The ESTAT*.PDB files weren't being
sl@0
 15794
released either.
sl@0
 15795
sl@0
 15796
Note: T_I64 still fails in UON.
sl@0
 15797
T_SEMUTX fails intermittently (in either UON and UOFF).
sl@0
 15798
sl@0
 15799
Version 0.01.037
sl@0
 15800
================
sl@0
 15801
(Made by Colly, 19 May 1995)
sl@0
 15802
sl@0
 15803
1). Fixed a bug in Math::Rand().
sl@0
 15804
2). Moved the private classes TRectKey and TRectSwap in RRegion
sl@0
 15805
	to be declared locally in u_regn.cpp.
sl@0
 15806
	RRegion still has a virtual destructor which I have now removed. I
sl@0
 15807
	notice that the test code t_regn.cpp does not test either the Close()
sl@0
 15808
	or Destroy() functions.
sl@0
 15809
3). Re-organized the entire group.
sl@0
 15810
	SUSER has been split into
sl@0
 15811
		UCDT	- User Concrete Data Types, platform independent
sl@0
 15812
		UPWINS	- User Wins platform dependent
sl@0
 15813
	SOLIB renamed to UADT - User Abstract Data Types
sl@0
 15814
	SMATH renamed to UMATH
sl@0
 15815
	TUSER renamed to TCDT
sl@0
 15816
	TOLIB renamed to TADT
sl@0
 15817
	SKERN renamed to KSRC
sl@0
 15818
	SWINS renamed to KPWINS
sl@0
 15819
	SWINSD renamed to DPWINS
sl@0
 15820
	SLOCL renamed to LSRC
sl@0
 15821
4). In line with the above I have renamed E32OLIB.H and E32OLIB.INL
sl@0
 15822
	to E32ADT.H and E32ADT.INL.
sl@0
 15823
5). Added class CBitMapAllocator to Adt. This class uses a bitmap to
sl@0
 15824
	control allocation of resources. It is used by the PageAllocator
sl@0
 15825
	in the micro kernel to allocate free physical pages. Another
sl@0
 15826
	potential use is in implementing a block allocation scheme in
sl@0
 15827
	a binary file such as a BTree index file.
sl@0
 15828
6). I have changed the way the version numbers are formatted by TVersion.
sl@0
 15829
7). Fixed a bug in RSubSession::Close() which did not check for a NULL
sl@0
 15830
	handle before despatching the close message to the server. It is
sl@0
 15831
	normal practice to allow a close on something which has never been
sl@0
 15832
	opened/created.
sl@0
 15833
8). Recorded the size of components in the release history.
sl@0
 15834
9). The localising code is now released separately as LWINS.DLL. This
sl@0
 15835
	is currently included in the base release zip file ewins. Note that
sl@0
 15836
	only ewins.dll has a dependency on this file so that no build files
sl@0
 15837
	need change.
sl@0
 15838
10).Changed TDblQueIterBase::Wind() and TDblQueIterBase::Rewind()
sl@0
 15839
	to TDblQueIterBase::SetToFirst() and TDblQueIterBase::SetToLast()
sl@0
 15840
	Also added TDblQueIter<T>::Set(T &aLink) which will start the
sl@0
 15841
	iterator on a particular link.
sl@0
 15842
11).Changed TSglQueIterBase::Rewind() to TSglQueIterBase::SetToFirst()
sl@0
 15843
	Also added TSglQueIter<T>::Set(T &aLink) which will start the
sl@0
 15844
	iterator on a particular link.
sl@0
 15845
12).Added a function Adt::DestroyZ(CBase * &anObject) which will
sl@0
 15846
	destroy an object if anObject is not NULL and will then zero
sl@0
 15847
	anObject.
sl@0
 15848
13).Added DestroyAll() to CArrayFixFlat and CArrayFixSeg which
sl@0
 15849
	assumes that the array is a set of CBase pointers, i.e.
sl@0
 15850
	CArrayFixFlat<CBase *>. The only check that is made is the the
sl@0
 15851
	record length==sizeof(CBase *). Note that DestroyAll() destroys
sl@0
 15852
	all the non-NULL pointers and then calls the normal Destroy().
sl@0
 15853
14).Added a new template class TAggregate to e32atd.h. The idea
sl@0
 15854
	behind TAggregate is to automate the desctruction of aggregate
sl@0
 15855
	objects in CBase derived classes. Say you have three active
sl@0
 15856
	objects owned by your object CMyObject the current way of
sl@0
 15857
	writing the class is as follows:
sl@0
 15858
sl@0
 15859
	class CMyObject : public CBase
sl@0
 15860
		{
sl@0
 15861
	public:
sl@0
 15862
		CMyObject();
sl@0
 15863
		virtual void Destroy();
sl@0
 15864
		inline CTimer &Timer(*iTimer);
sl@0
 15865
		inline CServer &Server(*iServer);
sl@0
 15866
		inline CComms &Comms(*iComms);
sl@0
 15867
	private:
sl@0
 15868
		CTimer *iTimer;
sl@0
 15869
		CServer *iServer;
sl@0
 15870
		CComms *iComms;
sl@0
 15871
		};
sl@0
 15872
sl@0
 15873
	And the Destroy() is as follows:
sl@0
 15874
sl@0
 15875
	void CMyObject::Destroy()
sl@0
 15876
		{
sl@0
 15877
sl@0
 15878
		Adt::DestroyZ(iTimer);
sl@0
 15879
		Adt::DestroyZ(iServer);
sl@0
 15880
		Adt::DestroyZ(iComms);
sl@0
 15881
		CBase::Destroy();
sl@0
 15882
		};
sl@0
 15883
sl@0
 15884
	With TAggregate you would do it as follows.
sl@0
 15885
sl@0
 15886
	class CMyObject : public CBase
sl@0
 15887
		{
sl@0
 15888
	private:
sl@0
 15889
		enum {ETimer,EServer,EComms,EMaxAggregate};
sl@0
 15890
	public:
sl@0
 15891
		CMyObject();
sl@0
 15892
		virtual void Destroy();
sl@0
 15893
		inline CTimer &Timer(*((CTimer *)iAgg.iPtrs[ETimer]));
sl@0
 15894
		inline CServer &Server(*((CServer *)iAgg.iPtrs[EServer]));
sl@0
 15895
		inline CComms &Comms(*((CComms *)iAgg.iPtrs[EComms]));
sl@0
 15896
	private:
sl@0
 15897
		TAggregate iAgg[EMaxAggregate];
sl@0
 15898
		};
sl@0
 15899
sl@0
 15900
	And the destructor is as follows:
sl@0
 15901
sl@0
 15902
	void CMyObject::Destroy()
sl@0
 15903
		{
sl@0
 15904
sl@0
 15905
		iAgg.Destroy();
sl@0
 15906
		CBase::Destroy();
sl@0
 15907
		};
sl@0
 15908
sl@0
 15909
	If one of the aggregates is removed or another is added all that
sl@0
 15910
	has to be done is add a new enum and the accessor method.
sl@0
 15911
	The Destroy() will automatically be correct. Note that there is
sl@0
 15912
	no additional overhead for the iAgg.iPtrs[] in the accessors.
sl@0
 15913
15).I have added a new template class TAutoClose to e32std.h which
sl@0
 15914
	will add a destructor to any class which has a Close() method.
sl@0
 15915
	This is	useful for functions in which you want to take advantage
sl@0
 15916
	of the compiler automatically destructing the object when it goes
sl@0
 15917
	out of scope. e.g.
sl@0
 15918
sl@0
 15919
	TInt ReadFile(const TDesC &aFile)
sl@0
 15920
	//
sl@0
 15921
	// Read a file
sl@0
 15922
	//
sl@0
 15923
		{
sl@0
 15924
sl@0
 15925
		TAutoClose<RFile> f;
sl@0
 15926
		TInt r=f.iObj.Open(aFile,KFileStreamText|EFileExclusive);
sl@0
 15927
		if (r!=KErrNone)
sl@0
 15928
			return(r);
sl@0
 15929
		TBuf_100 b;
sl@0
 15930
		if ((r=f.iObj.Read(b))!=KErrNone)
sl@0
 15931
			return(r);
sl@0
 15932
		.....
sl@0
 15933
		}
sl@0
 15934
sl@0
 15935
	There is no need to call f.iObj.Close() as the compiler will do that
sl@0
 15936
	automatically when f goes out of scope. Even if the early return
sl@0
 15937
	after f.iObj.Read() is taken the compiler will still call
sl@0
 15938
	f.iObj.Close(). There is no overhead to using the TAutoClose class.
sl@0
 15939
16).Added SetMax() to TDes which set the length of the TDes to
sl@0
 15940
	MaxLength(). i.e. equivalent to:
sl@0
 15941
	TBuf_100 b;
sl@0
 15942
	b.SetLength(b.MaxLength());
sl@0
 15943
17).Added TPtrC::Set(const TText *aBuf,TUint aLength) and
sl@0
 15944
	TPtr::Set(TText *aBuf,TUint aLength,TUint aMaxLength)
sl@0
 15945
	since assignment of a TPtrC is not supported and assignment
sl@0
 15946
	of a TPtr means a deep copy rather than a shallow copy.
sl@0
 15947
18).Renamed the files E32DES8.INL and E32DES16.INL if E32DES8.H and
sl@0
 15948
	E32DES16.H
sl@0
 15949
sl@0
 15950
Comp     Date   Bld  .text   .bss .rdata  .data .idata  Total
sl@0
 15951
===== ========= === ====== ====== ====== ====== ====== ======
sl@0
 15952
LWINS 17-Mar-95  37    822     32   1344   1092    268   2704
sl@0
 15953
EWINS 17-Mar-95  37  82484    560   6012   1156   2916  92568
sl@0
 15954
sl@0
 15955
.text  = The code size (a good indication)
sl@0
 15956
.bss   = The uninitialized data size (a good indication)
sl@0
 15957
.rdata = The const data size (a good indication)
sl@0
 15958
.data  = The initialized data size (a good indication)
sl@0
 15959
.idata = C++ initialisation + .DLL export table (unreliable indication)
sl@0
 15960
sl@0
 15961
The .idata section is unreliable since it has all .dll refences by name.
sl@0
 15962
As .dll references will be by ordinal rather than by name I expect these
sl@0
 15963
sizes to fall quite a bit.
sl@0
 15964
sl@0
 15965
Note that the current conversion factor from VC++ to GC++ is multiply
sl@0
 15966
by 1.16
sl@0
 15967
sl@0
 15968
NOTES
sl@0
 15969
=====
sl@0
 15970
sl@0
 15971
1). I think that all the heap debug macros in e32std.h should be prefixed
sl@0
 15972
	with __ and should be moved to their own include file e32hdbg.h which
sl@0
 15973
	is included by e32def.h. I also removed the unnecessary spaces in
sl@0
 15974
	their declaration which have been added back in build 035.
sl@0
 15975
2). The functions RHeapDebug() in the RHeap class look like constrcutors
sl@0
 15976
	which they are not. The should be declared as returning void and
sl@0
 15977
	should also be given a different name. There are a number of comments
sl@0
 15978
	in the RHeap class declaration which I have removed.
sl@0
 15979
3). T_thread.cpp fails. Also this program was including the header file
sl@0
 15980
	k32kern.h so that is could call Plat::CurrentProcess() to get the
sl@0
 15981
	current process. It is a bad idea for any test programs to call any
sl@0
 15982
	function in the kernel. This won't be possible on any other platform.
sl@0
 15983
	The correct way to get the current thread or the current process is
sl@0
 15984
	just to use an RProcess() or RThread() constructor. i.e.
sl@0
 15985
sl@0
 15986
	if (RProcess().Mark())
sl@0
 15987
		etc.
sl@0
 15988
sl@0
 15989
	if (RThread().Priority==EPriorityNormal)
sl@0
 15990
		RThread().SetPriority(EPriorityAboveNormal);
sl@0
 15991
sl@0
 15992
	This works because the constructor for an RProcess or RThread sets
sl@0
 15993
	the RThread or RProcess handle to a special token which means the
sl@0
 15994
	currrent process or the current thread. It does no have to be
sl@0
 15995
	opened or created in the normal way.
sl@0
 15996
sl@0
 15997
	Also the current process can be got from the current thread e.g.
sl@0
 15998
sl@0
 15999
	RThread().Process()
sl@0
 16000
sl@0
 16001
	P.S. This was covered in the release 26 release notes.
sl@0
 16002
4). T_HEAPDB.CPP also includes k32kern.h (now k32std.h) so that it
sl@0
 16003
	can call Kern::UserHeap(). This is unnecessary as there is
sl@0
 16004
	already a call User::Heap() which returns the current heap. I have
sl@0
 16005
	fixed the test program.
sl@0
 16006
5). T_I64.CPP still fails on divide. I will fix this in the next release.
sl@0
 16007
sl@0
 16008
Version 0.01.036
sl@0
 16009
================
sl@0
 16010
(Made by MartinB, 11 May 1995)
sl@0
 16011
sl@0
 16012
1) New SetThreadAllocFail method in User (MartinH).
sl@0
 16013
2) New macros in e32def.h (MartinH).
sl@0
 16014
3) New Math functions and test code (MartinH),
sl@0
 16015
4) New ASSERT_DEBUGs in RHeap::Alloc.
sl@0
 16016
5) Removed User::SetWSAllocFail, since cannot have window server
sl@0
 16017
	dependencies in the base.
sl@0
 16018
6) Improved region code (Lane).
sl@0
 16019
7) Added several "long ptr" qualifiers in P_I64.CPP.  MSVC was
sl@0
 16020
	treating constants as 16 bit values when moved into (say)
sl@0
 16021
	[ebx]. (MartinB).
sl@0
 16022
sl@0
 16023
All test code runs for ASCII DEBUG and UNICODE DEBUG builds (MartinB)
sl@0
 16024
(except T_I64 which does not run in UNICODE).
sl@0
 16025
sl@0
 16026
Version 0.01.035
sl@0
 16027
================
sl@0
 16028
(Made by MartinB, 9 May 1995)
sl@0
 16029
sl@0
 16030
1) Fix to Mul routine in P_I64.CPP.
sl@0
 16031
2) New region code from Steve/Lane.
sl@0
 16032
3) New T_THREAD test code from MartinH.
sl@0
 16033
4) New T_I64 test code from MartinH.
sl@0
 16034
sl@0
 16035
All test code runs for ASCII DEBUG and UNICODE DEBUG builds (MartinB).
sl@0
 16036
sl@0
 16037
Version 0.01.034
sl@0
 16038
================
sl@0
 16039
(Made by Colly, 9 May 1995)
sl@0
 16040
sl@0
 16041
1). In both versions of RSessionBase::SendReceive() the parameter
sl@0
 16042
	TAny *aPtr can be passed as NULL.
sl@0
 16043
2). Converted the design E32 to make the categories Kernel, User and
sl@0
 16044
	Olib as units. This allows other designs to import these units.
sl@0
 16045
3). Added to RChannelBase overloads for DoRequest() and DoControl() which
sl@0
 16046
	allow none, one or two arguments.
sl@0
 16047
4). Added three functions to the TLex classes.
sl@0
 16048
	void SkipAndMark(TInt aNumber) which moves the mark along by aNumber.
sl@0
 16049
	TPtrC Remainder() which returns the remainder of the buffer after
sl@0
 16050
	the mark.
sl@0
 16051
	void Inc(TInt aNumber) which moves the pointer on by aNumber.
sl@0
 16052
5).	Added IMPORT_C TAny *operator new(TUint aSize,TUint anExtraSize)
sl@0
 16053
	to CBase.
sl@0
 16054
6). I have removed the resource file stuff from Olib because I do not
sl@0
 16055
	want the base to have a dependency on the file system. Note that in
sl@0
 16056
	due course the file server like the window server will live in its own
sl@0
 16057
	group and is only included with E32 for convenience while I develop
sl@0
 16058
	it. The file server is already completely independent of the operating
sl@0
 16059
	system.
sl@0
 16060
	I suggest that we have two DLLs called something like HCILI and HCILU.
sl@0
 16061
	HCILI would contain user interface independent code and HCILU would
sl@0
 16062
	have user interface dependent code. Then a getbld can go something like
sl@0
 16063
	this:
sl@0
 16064
sl@0
 16065
	GET E32		// The base
sl@0
 16066
	GET F32		// The file server
sl@0
 16067
	GET W32		// The window server
sl@0
 16068
	GET HCIL	// Both HCIL DLLs
sl@0
 16069
sl@0
 16070
	I originally intended to supply the base as 3 DLLs, i.e.
sl@0
 16071
	E32KERN.DLL,E32USER.DLL and E32OLIB.DLL I now intend to supply it as
sl@0
 16072
	just two merging E32OLIB.DLL and E32USER.DLL into E32USER.DLL. For
sl@0
 16073
	those who are fond of the name OLIB I am quite happy to relinquish
sl@0
 16074
	the name and HCILI.DLL could be OLIB.DLL. But OLIB is a funny name
sl@0
 16075
	as it stands for Object library which is strange since all libraries
sl@0
 16076
	are now object libraries. Maybe its time for OLIB to just disappear.
sl@0
 16077
7). In messages associated with a RSubSession the handle was being passed
sl@0
 16078
	in P1(). This was not the best option so I have now changed it to P4().
sl@0
 16079
	Note that for a SubSessionCreate message a descriptor is passed in P4()
sl@0
 16080
	rather than P1() which a server should use to write back the handle
sl@0
 16081
	of the sub session. See \e32\swinsd\ws_main.cpp for an example of the
sl@0
 16082
	approriate code.
sl@0
 16083
8). Added Math::Rand(TInt64 &aSeed). This returns a random number in the
sl@0
 16084
	range 0 to KMaxTInt (i.e. positive) and updates the seed.
sl@0
 16085
9). Renamed the operating systems Segment to Chunk to avoid confusion on
sl@0
 16086
	80x86 platforms with segment registers. Thus RSegment has become
sl@0
 16087
	RChunk and User::SegmentHeap has become User::ChunkHeap.
sl@0
 16088
10). The function Test::Next() was assuming a zero terminated string. Fixed.
sl@0
 16089
11). RProcess::CommandLine() was not getting the full command line. Fixed.
sl@0
 16090
sl@0
 16091
NOTES
sl@0
 16092
=====
sl@0
 16093
sl@0
 16094
1). MartinB. Surely HufEncode should belong to class TDes and convert its
sl@0
 16095
	argument a TDesC into the TDes rather than belong to TDesC. As well
sl@0
 16096
	don't we need a second version of HufDecode called something like
sl@0
 16097
	HufDecodeInPlace which will do a decode in place on a TDes since
sl@0
 16098
	this is what the resource system does currently. Finally should we
sl@0
 16099
	not make a 32 bit version of the resource compiler.
sl@0
 16100
2). There is a #define test in E32TEST.H. All #defines should be in
sl@0
 16101
	upper case.
sl@0
 16102
3). Why does RRegion have a virtual destructor, a Close() and a
sl@0
 16103
	Destroy(). I suspect that the destructor should go.
sl@0
 16104
4). In TOLIB t_ctimer.cpp and t_cact.cpp both have a #include to
sl@0
 16105
	\e32\olib\o_std.h. This is not correct!
sl@0
 16106
5). In TUSER t_heapdb.cpp has a dependency on the window server header
sl@0
 16107
	file and in fact uses the window server. This is definitely
sl@0
 16108
	incorrect?
sl@0
 16109
6). Can everyone try and make an effort before releasing E32 that
sl@0
 16110
	all projects are left in the DEBUG build and that all test
sl@0
 16111
	programs do not have windows open and breakpoints left enabled.
sl@0
 16112
sl@0
 16113
Version 0.01.033
sl@0
 16114
================
sl@0
 16115
(Made by MartinB, 4 May 1995)
sl@0
 16116
sl@0
 16117
1) Changed jcxz to a jecxz in P_I64.CPP (!!!)
sl@0
 16118
2) Fixed some alloc heaven in CArrayVarBase::Delete.
sl@0
 16119
3) Improved T_RSC test code.
sl@0
 16120
4) Added MaxSize() to TDes.
sl@0
 16121
5) New RRegion code from Steve.
sl@0
 16122
6) Loads of test code from MartinH.
sl@0
 16123
7) Note u_heap.cpp temporarily includes <stdlib.h> (for
sl@0
 16124
	random number generators) for heap alloc failure testing.
sl@0
 16125
	This is a temporary  measure until the real file handling an
sl@0
 16126
	random number generation becomes available.
sl@0
 16127
8) T_HEAPDB requires window server to run (since it tests for window
sl@0
 16128
	server heap failure).
sl@0
 16129
sl@0
 16130
All test code runs for ASCII DEBUG and UNICODE DEBUG builds (MartinB).
sl@0
 16131
sl@0
 16132
sl@0
 16133
Version 0.01.032
sl@0
 16134
================
sl@0
 16135
(Made by MartinB, 26 April 1995)
sl@0
 16136
sl@0
 16137
1) Added a new CResourceFile class (and its superclass CFile).  CFile
sl@0
 16138
	uses standard C files as a temporary measure until Colly
sl@0
 16139
	releases the real filing system.
sl@0
 16140
2) Added a KErrFile const to go with the above.  Again a temporary
sl@0
 16141
	measure.
sl@0
 16142
3) CResourceFile reads resource files produced using our resource
sl@0
 16143
	compiler.  (S_.RSC and S_.RZC were used in the test code, and
sl@0
 16144
	form part of the release of the test code).  Note that
sl@0
 16145
	CResourceFile also reads compressed resource files.  This
sl@0
 16146
	meant that:
sl@0
 16147
4) Added Huffman compression for TDes16.  Actually this does not
sl@0
 16148
	quite work yet, one or two of the test cases are #ifdefed out
sl@0
 16149
	in the UNICODE build.  However it is 90% there and I have a
sl@0
 16150
	good idea of what the problem is (its to do with the unused
sl@0
 16151
	byte at the end when the descriptor compresses to an odd number of
sl@0
 16152
	bytes).
sl@0
 16153
5) New test code from MartinH.
sl@0
 16154
6) Minor fixes to threads from Colly/MartinH.
sl@0
 16155
sl@0
 16156
NOTES
sl@0
 16157
=====
sl@0
 16158
sl@0
 16159
1) Should we have a TDes::MaxSize() function?
sl@0
 16160
sl@0
 16161
2) All test code runs for ASCII DEBUG and UNICODE DEBUG builds, except
sl@0
 16162
	T_RSC does not run in UNICODE.
sl@0
 16163
sl@0
 16164
sl@0
 16165
Version 0.01.031
sl@0
 16166
================
sl@0
 16167
(Made by Colly, 18 April 1995)
sl@0
 16168
sl@0
 16169
1). Changed KEventPending to KRequestPending.
sl@0
 16170
2). Made CActiveScheduler::Start() call the virtual function
sl@0
 16171
	WaitForAnyRequest().
sl@0
 16172
3). Fixed ..\rel\ewinsdb.prj to release the estat*.pdb files
sl@0
 16173
	rather that wwins*.pdb files.
sl@0
 16174
4). When a thread had an exception or was killed, terminated or
sl@0
 16175
	panicked, execution unfortunately continued. Fixed.
sl@0
 16176
5). Added a function User::Dying() which is called by all the kernel
sl@0
 16177
	functions just before they kill,terminate,except or panic a thread
sl@0
 16178
	or process. This is a very good place for a breakpoint when
sl@0
 16179
	debugging. It will catch everything.
sl@0
 16180
6). Added support to dynamically load a DLL and then lookup functions
sl@0
 16181
	in the DLL. See class RLibrary.
sl@0
 16182
7). Added support for device drivers. See User::LoadDevice() and
sl@0
 16183
	User::FreeDevice() as well as the example device driver in
sl@0
 16184
	\e32\swinsd\d_timer.mak and its test program \e32\swinsd\t_devc.mak.
sl@0
 16185
8). Added a constructor to all TFindHandle derived classes to allow
sl@0
 16186
	initialisation with the find string.
sl@0
 16187
9). Converted the rose designs to rose 2.525
sl@0
 16188
sl@0
 16189
NOTES
sl@0
 16190
=====
sl@0
 16191
sl@0
 16192
1). The fact that CActiveScheduler::Start() is static is no reason why
sl@0
 16193
	the virtual function WaitForAnyRequest() cannot be called. Just use
sl@0
 16194
	the static pointer to the scheduler:
sl@0
 16195
	theActiveScheduler->WaitForAnyRequest()
sl@0
 16196
sl@0
 16197
All test code runs for ASCII DEBUG and UNICODE DEBUG builds (MartinB).
sl@0
 16198
sl@0
 16199
sl@0
 16200
Version 0.01.030
sl@0
 16201
================
sl@0
 16202
(Made by Colly, 12 April 1995)
sl@0
 16203
sl@0
 16204
1). Removed the virtual destructor in CBase. Added vitrual void Destroy().
sl@0
 16205
	CBase::Destroy() now calls delete this. It is now generally necessary
sl@0
 16206
	to call the base classes Destroy() in order to get proper destruction
sl@0
 16207
	of the object. Note that the DeleteAll methods in TDblQue and TSglQue
sl@0
 16208
	only work if the objects on the queue are derived from CBase. Added
sl@0
 16209
	a static function Olib::Destroy(CBase *anObject) which will only
sl@0
 16210
	destroy the object if anObject is not NULL.
sl@0
 16211
2). Added a static function:
sl@0
 16212
	CActiveScheduler * CActiveScheduler::Current();
sl@0
 16213
	which return the currently installed active scheduler.
sl@0
 16214
3). In RSubSession::CreateSubSession() was not passing as P1() in the
sl@0
 16215
	message the address of the reply so that the subsession handle could
sl@0
 16216
	be returned by the server.
sl@0
 16217
4). Creating a semaphore with an initial count other than 0 did not set
sl@0
 16218
	the internal count with the initial count although the Windows/NT
sl@0
 16219
	semaphore was being set correctly. The same bug applied to Mutexes.
sl@0
 16220
5). When a process was dying its access count was not being decremented
sl@0
 16221
	so that if no handles were outstanding the object was not being
sl@0
 16222
	destroyed.
sl@0
 16223
6). CObjectIx::Add() and CObjectCon::Add() were closing the object being
sl@0
 16224
	added if the add failed. This proves to be unhelpful so they have
sl@0
 16225
	been changed to just fail and not do the close.
sl@0
 16226
7). Added the following functions to RThread and RProcess to determine
sl@0
 16227
	the reason a thread or process exited.
sl@0
 16228
	IMPORT_C TExitType ExitType() const;
sl@0
 16229
	IMPORT_C TInt ExitReason() const;
sl@0
 16230
	IMPORT_C TName ExitCategory() const;
sl@0
 16231
8). The design of the CPeriodic class made it unusable. This has now been
sl@0
 16232
	changed so that the New functions add the active object to the
sl@0
 16233
	scheduler. Start() is now defined as:
sl@0
 16234
sl@0
 16235
	void Start(TInt aDelay,TInt anInterval,
sl@0
 16236
			   TPeriodicCallBack aCallBack,TAny *aPtr);
sl@0
 16237
sl@0
 16238
	which allows a CPeriodic to be restarted after it has been cancelled.
sl@0
 16239
	StartL() has been dropped since Start() is void.
sl@0
 16240
	There was also a bug in the RunL() method in that it issued the callback
sl@0
 16241
	and then requested the next timer. It should request the next timer and
sl@0
 16242
	then issue the callback.
sl@0
 16243
sl@0
 16244
The following merged in by MartinB:
sl@0
 16245
sl@0
 16246
9) Removed double definition of TText8 and TText16 form e32def.h
sl@0
 16247
10) Moved enclosing #endif (matched to #if !defined(__E32DEF_H__)) to
sl@0
 16248
	end of e32def.h.
sl@0
 16249
11) Changed make files so that .PDB files are built into \e32sys.
sl@0
 16250
12) Added virtual WaitForAnyRequest to CActiveScheduler.  This is not
sl@0
 16251
	called from Start, however, since Start is a static function.
sl@0
 16252
	After discussion with DW I retained User::WaitForAnyRequest
sl@0
 16253
	in Start, until we have time to discuss which functions
sl@0
 16254
	should be static.
sl@0
 16255
13) Changed KErrPending to KEventPending.
sl@0
 16256
sl@0
 16257
sl@0
 16258
Version 0.01.029
sl@0
 16259
================
sl@0
 16260
(Made by Martin, 3 April 1995)
sl@0
 16261
sl@0
 16262
1) New alloc testing code does not include filename and lineno
sl@0
 16263
	(MartinH).
sl@0
 16264
2) New SglQue test code (DougF).
sl@0
 16265
3) New test code (JalP).
sl@0
 16266
4) Move common functionality of TKeyArrayFix and TKeyArrayVar into
sl@0
 16267
	TKey (JalP).
sl@0
 16268
5) Fix to TEnter (DavidW).
sl@0
 16269
sl@0
 16270
All test code runs for ASCII DEBUG and UNICODE DEBUG builds.
sl@0
 16271
sl@0
 16272
sl@0
 16273
Version 0.01.028
sl@0
 16274
================
sl@0
 16275
(Made by Colly, 22 Mar 1995)
sl@0
 16276
sl@0
 16277
1). Definitely the last name changes for the descriptor and buffer classes.
sl@0
 16278
		Old Name		New Name
sl@0
 16279
		========		========
sl@0
 16280
		TDesC			TDesC
sl@0
 16281
		TDes			TDes
sl@0
 16282
		TBufBase		TBufCBase
sl@0
 16283
		TBuf			TBufC
sl@0
 16284
		HBuf			HBufC
sl@0
 16285
		TDesR			TPtrC
sl@0
 16286
		TDesW			TPtr
sl@0
 16287
		TBufW			TBuf
sl@0
 16288
sl@0
 16289
	Note that the function:
sl@0
 16290
		TDesW DesW()
sl@0
 16291
	in TBufBase has now been renamed:
sl@0
 16292
		TPtr Des()
sl@0
 16293
	Its helpful to consult the Rose class diagram to see why these names
sl@0
 16294
	are sensible.
sl@0
 16295
2). Took Steve's new region code.
sl@0
 16296
3). Added the missing #defines for __TEST_INVARIANT.
sl@0
 16297
4). Changed the graphics window to position to 10,10.
sl@0
 16298
5). Fixed the re-entrancy bug with UserWindowServer::Request().
sl@0
 16299
6). Added the fix to stop the beep on ALT + char.
sl@0
 16300
7). Added the code for User::Abort() and User::Exit().
sl@0
 16301
8). User::Panic() was panicking the process and not the current thread
sl@0
 16302
	making it impossible to run test threads to see if they panic.
sl@0
 16303
sl@0
 16304
	All the test code passes under the DEBUG build.
sl@0
 16305
sl@0
 16306
NOTES
sl@0
 16307
sl@0
 16308
1).	The virtual destructor in CActive is calling the virtual DoCancel
sl@0
 16309
	which since the destructor is running at the CActive level has
sl@0
 16310
	no method to call as its pure virtual. The only reasonable solution
sl@0
 16311
	is to introduce a virtual Destroy() function to CBase() which can
sl@0
 16312
	do the necessary cleanup and then do the delete.
sl@0
 16313
2). Many of the test programs do not have a standard comment header.
sl@0
 16314
	One did not even have a header.	This is just careless.
sl@0
 16315
	I have fixed them all.
sl@0
 16316
3). Many people when declaring an enum leave a comma on the last
sl@0
 16317
	declaration which is untidy.
sl@0
 16318
4). A number of people are decalring automatic variables with capital
sl@0
 16319
	letters. Please avoid this practice.
sl@0
 16320
sl@0
 16321
sl@0
 16322
Version 0.01.027
sl@0
 16323
================
sl@0
 16324
(Made by Martin, 16 Mar 1995)
sl@0
 16325
sl@0
 16326
1) Changed TBuf to TBufW, TLcb to TBuf and TLcbH to HBuf.
sl@0
 16327
2) Fixed .lnk files so test code works if built from command line
sl@0
 16328
	(Duncan).
sl@0
 16329
3) New T_REF test code (Jal).
sl@0
 16330
4) Added previously missing RRef<T>::AllocL to e32std.inl (Jal).
sl@0
 16331
5) Fixed bug in RRefBase::DoAlloc (Jal).
sl@0
 16332
6) Added invariant to TDateTime (Gill).
sl@0
 16333
7) Improved T_DATE test code (Gill).
sl@0
 16334
8) Improved T_KEY test code (MartinH).
sl@0
 16335
9) Fix to heap checking code (MartinH).
sl@0
 16336
10) Changed T_QUE to use V classes (rather than S classes) (Doug).
sl@0
 16337
11) Made iInterval protected (was private) in CPeriodic (at Steve's
sl@0
 16338
	request).
sl@0
 16339
12) This release contains a zip file release (in s:\e32\zip) so that
sl@0
 16340
	users should not need to build E32.  Only the ASCII DEBUG
sl@0
 16341
	version has been released.
sl@0
 16342
sl@0
 16343
All test code (ASCII DEBUG) can now be built and run from the command line
sl@0
 16344
(except T_HEAPDB).
sl@0
 16345
sl@0
 16346
Actions:
sl@0
 16347
sl@0
 16348
1) Now that C classes rely on zero filling for initialisation their
sl@0
 16349
	definitions MUST be changed so that they cannot be declared on the
sl@0
 16350
	stack.
sl@0
 16351
2) MartinH to fix T_HEAPDB.
sl@0
 16352
3) Steve to complete transformation of CRegion to RRegion.
sl@0
 16353
4) MartinB to complete (or remove) Huffman encoding (did not have
sl@0
 16354
	time to do it this release).
sl@0
 16355
5) T_ARRAY and T_VARRAY need more test.Start() and test.Next()
sl@0
 16356
	messages (Jal).
sl@0
 16357
6) Many classes still have no __TestInvariant methods (All).
sl@0
 16358
7) CBufSeg has a test class defined under #if defined(_DEBUG) (Jal).
sl@0
 16359
sl@0
 16360
sl@0
 16361
Version 0.01.026
sl@0
 16362
================
sl@0
 16363
(Made by Colly, 11 Mar 1995)
sl@0
 16364
sl@0
 16365
1). Added an operator new() to class CBase which fills memory with zeroes
sl@0
 16366
	so that most constructors need do nothing. Note that a constructor
sl@0
 16367
	is still required in order to set the name of the class in debug
sl@0
 16368
	builds.
sl@0
 16369
2). Changed the RProcess::FileName() and RProcess::CommandLine() functions
sl@0
 16370
	to return their result rather than take an them as reference args.
sl@0
 16371
3). Added RHandleBase::Duplicate(RProcess aSrc) which allows a handle from
sl@0
 16372
	another process to be duplicated in the current process. This is also
sl@0
 16373
	the mechanism by which the pseudo handles for the current thread and
sl@0
 16374
	the current process to be turned into real handles. i.e.
sl@0
 16375
sl@0
 16376
	RThread self;
sl@0
 16377
	self.Duplicate(RProcess());
sl@0
 16378
sl@0
 16379
	Note that you will now need to call self.Close() at some stage since
sl@0
 16380
	the resource must be freed.
sl@0
 16381
sl@0
 16382
	In case you have missed the examples in ..\tuser\t_kern.cpp
sl@0
 16383
	instantiating a RThread or RProcess by default give handles to the
sl@0
 16384
	current thread and current process respectively. i.e.
sl@0
 16385
sl@0
 16386
	RThread().Name() will return the current threads name.
sl@0
 16387
sl@0
 16388
	These objects use a pseudo handle since it is not possible to close
sl@0
 16389
	these handles since if you could close them they would have to
sl@0
 16390
	delete the current thread or current process. Since these are pseudo
sl@0
 16391
	handles passing them to another process will not work as in the other
sl@0
 16392
	process they will also mean the current process and current thread.
sl@0
 16393
	Duplicate overcomes this problem since it gives a real handle to
sl@0
 16394
	either the current thread or the current process.
sl@0
 16395
4). Added the RThread::Logon(),RThread::LogonCancel(),RProcess::Logon()
sl@0
 16396
	and RProcess::LogonCancel() functions.
sl@0
 16397
5). Cleanup on Thread termination by the kernel now implemented.
sl@0
 16398
6). RThread::Kill(),RThread::Exit(),RProcess::Kill() and RProcess::Exit()
sl@0
 16399
	implemented fully.
sl@0
 16400
7). Changed Plat::Panic() and Plat::Fault() to always use the desktop
sl@0
 16401
	window for the messagebox.
sl@0
 16402
8). Changed to build options for all variants. Everyone should make a new
sl@0
 16403
	.MAK file from T_KERN.MAK as a prototype. Presumably the tool sets
sl@0
 16404
	will have to be updated to reflect these changes. Also fixed a number
sl@0
 16405
	of link failures which had crept into the system.
sl@0
 16406
9). Note that because of the use User::SetVaArgList() the optimisation
sl@0
 16407
	in the release versions to drop stack frames cannot be used.
sl@0
 16408
10). The definition of the private class TLink in CBufSeg is a waste
sl@0
 16409
	of space in the headers. So I have declared a forward reference
sl@0
 16410
	to the class TBufSegLink and then only need the actual declaration
sl@0
 16411
	and implementation in O_BUF.CPP.
sl@0
 16412
sl@0
 16413
The following merged in by MartinB:
sl@0
 16414
sl@0
 16415
11) Uses new toolsets (use TOOLS WINS and TOOLS WINSD to get them).
sl@0
 16416
12) New T_DES test code. (From Duncan).
sl@0
 16417
13) Fixed integer compares in TKeyArrayFix and TKeyArrayVar. (From
sl@0
 16418
	Jal).
sl@0
 16419
14) Fixed bug in CArrayFixBase::InsertISQ. (From Jal).
sl@0
 16420
15) Added classes: TSglQueLink, TSglQueBase, TSglQue, TSglQueIterBase
sl@0
 16421
	and TSglQueIter. (From Colly). (No test code yet).
sl@0
 16422
16) Added classes: RRefBase and RRef. (From Colly). (No test code
sl@0
 16423
	yet).
sl@0
 16424
17) Added Alloc functions that take a size parameter to RRef classes
sl@0
 16425
	(at Jal's request).
sl@0
 16426
18) Added __TEST_INVARIANT macro to e32std.h. (from MartinH).
sl@0
 16427
19) Added MartinH's heap checking code.  Note took some functions
sl@0
 16428
	even though they were not commented - they will be commented for next
sl@0
 16429
	release.
sl@0
 16430
20) Took keycode code from DavidB.  NOTE: P_STDKEY.CPP still contains
sl@0
 16431
	some numbers that should be converted to symbolic constants.
sl@0
 16432
21) Small changes to code in winsd from Steve.
sl@0
 16433
22) Changed User::MemSwap in u_func.cpp so that it does not swap if
sl@0
 16434
	memory locations are identical.  There is an argument to do
sl@0
 16435
	this in the compare routines as well.
sl@0
 16436
23) Moved region to e32std.h and called it RRegion.  Steve will implement it as
sl@0
 16437
	a proper 'R' in a subsequent release.
sl@0
 16438
sl@0
 16439
ASCII Debug version only was tested.
sl@0
 16440
sl@0
 16441
All test code passes except T_QUE which fails on DeleteAll.  Note
sl@0
 16442
that
sl@0
 16443
sl@0
 16444
T_HEAPDB, T_ARRAY, T_CACT, T_VARRAY fail when built from the command
sl@0
 16445
line.
sl@0
 16446
sl@0
 16447
Version 0.01.025
sl@0
 16448
================
sl@0
 16449
(Made by MartinB, 7 Mar 1995)
sl@0
 16450
sl@0
 16451
1)  From Gillian: New TDateTime code.
sl@0
 16452
	Changed DateAsString() to Format().
sl@0
 16453
	Removed 3 unnecessary Add() functions.
sl@0
 16454
	Ammended t_time.cpp test code.
sl@0
 16455
	Renamed u_time.cpp to u_date.cpp (to lessen confusion with
sl@0
 16456
	timer code).
sl@0
 16457
2)  From Jal: Bug fix in CBufSeg::Delete() method. New test code.
sl@0
 16458
3)  From Duncan: mnt.cmd altered to build math functions and test code.
sl@0
 16459
4)  From Duncan: Updated all .lnk files for test code, so that they are built as
sl@0
 16460
	windows rather than console applications.
sl@0
 16461
5)  From Duncan: Introduced bld.prj in SMATH: this contains all the buildable math
sl@0
 16462
	routines (there are some .cpp files in li.prj that have not yet
sl@0
 16463
	been converted to E32).
sl@0
 16464
6)  From Duncan: Introduced bld.prj in SWINSD: this contains all the buildable cpp
sl@0
 16465
	files (there are some .cpp files in li.prj that have not yet
sl@0
 16466
	been converted to E32).
sl@0
 16467
7)  From Doug: Removed DEBUG friend declarations from Que classes.
sl@0
 16468
8)  From Jal: New CRefCountBase and CRefCount classes added to Olib.
sl@0
 16469
9)  From MartinH: New TKeyArrayCmpNumeric comparision types for
sl@0
 16470
	TKeyArrays.  Ammended T_KEY test code.
sl@0
 16471
10) From MartinH: Ammended T_ACT test code.
sl@0
 16472
11) From DavidW: new T_VERSION test code.
sl@0
 16473
12) Minor fixes to test code.
sl@0
 16474
sl@0
 16475
All ASCII DEBUG test code runs.  There is one anomally: T_COBJ runs
sl@0
 16476
fine if build inside VC++ but panics with a user panic of 37 if built
sl@0
 16477
from the command line.  It was getting late so I decided not to track
sl@0
 16478
this one down.
sl@0
 16479
sl@0
 16480
Version 0.01.024
sl@0
 16481
================
sl@0
 16482
(Made by Colly, 1 Mar 1995)
sl@0
 16483
sl@0
 16484
1). Renamed TPackage to TPckgBuf which packages an object in a TBuf8 and
sl@0
 16485
	added TPckgC which packages in a TDesR8 and TPckg which packages in
sl@0
 16486
	a TDesW8.
sl@0
 16487
2). Added new Panic function to RMessage which panics the client and
sl@0
 16488
	frees the message as well as one to CSession which just panics the
sl@0
 16489
	client. This is necessary as the Client() functions return a const
sl@0
 16490
	RThread & on which Panic cannot be called.
sl@0
 16491
3). Noticed that Convert(const TDesC &aDes,...) would not work properly
sl@0
 16492
	as taking the address of aDes on the stack would fail. Changed to
sl@0
 16493
	use the User::SetVaArgList() function. Also removed the version
sl@0
 16494
	of Convert which took a string as an argument. Fixed the test
sl@0
 16495
	code accordingly.
sl@0
 16496
4). My code in the example window server client side code was being very
sl@0
 16497
	naughty and assuming that all arguments were being passed on the
sl@0
 16498
	stack (TRUE for VC++, but not TRUE for GCC ARM code generation). Fixed.
sl@0
 16499
5). Removed the function numbers from the RWindowServerBase class as
sl@0
 16500
	they can be entirely private.
sl@0
 16501
6). The platform code to get system time was not subtracting 1 from the
sl@0
 16502
	day so TDateTime was correctly panicking the kernel on 28 Feb since
sl@0
 16503
	it was trying 29 Feb.
sl@0
 16504
sl@0
 16505
Version 0.01.023
sl@0
 16506
================
sl@0
 16507
(Made by Colly, 27 Feb 1995)
sl@0
 16508
sl@0
 16509
1). Moved the region code to SUSER in the file U_REGN.CPP. Moved the
sl@0
 16510
	test code from TOLIB to TUSER.
sl@0
 16511
2). The OLIB CServer class was deleting the server object on disconnect
sl@0
 16512
	rather than the CSession. Fixed some other bugs as well.
sl@0
 16513
3). Renamed CActive::Run() to CActive::RunL() to indicate that it may
sl@0
 16514
	leave.
sl@0
 16515
4). Renamed CServer::Service() to CServer::ServiceL() to indicate that
sl@0
 16516
	it may leave.
sl@0
 16517
5). Renamed CServer::NewSession() to CServer::NewSessionL() to indicate
sl@0
 16518
	that it may leave.
sl@0
 16519
6). Added the TInt64 class and a number of the maths functions. See
sl@0
 16520
	\e32\inc\e32math.h.
sl@0
 16521
7). Completely changed the whole scheme for E32 programs from being
sl@0
 16522
	console based to being GUI based. Test programs will write to
sl@0
 16523
	a normal Windows/NT console and the GUI window will be ignored.
sl@0
 16524
	All GUI programs now need to link with a window server library,
sl@0
 16525
	i.e. one of wwins,wwinsd,wwinsu,wwinsud. See the make file in
sl@0
 16526
	\e32\tuser\t_gui.mak.
sl@0
 16527
	A basic window server which just provides console services can be
sl@0
 16528
	found in swinsd in the project wwins.mak until Steve can get his
sl@0
 16529
	window server running.
sl@0
 16530
	All programs now use:
sl@0
 16531
	GLDEF_C TInt E32Main()
sl@0
 16532
	for the main program instead of main().
sl@0
 16533
	The functions for the basic window server and console are in header
sl@0
 16534
	\e32\inc\e32wsrv.h. Steve will provide these and extended functions
sl@0
 16535
	by subclassing these in his Window server library.
sl@0
 16536
8). Added a variant to RThread::Read() which allows an offset to be
sl@0
 16537
	specified withing the descriptor to allow reading in smaller chunks
sl@0
 16538
	in case the user sends over a huge chunk of data.
sl@0
 16539
9). Added the TEvent class and various functions all of which are
sl@0
 16540
	only for a Window server. I will discuss these with Steve directly.
sl@0
 16541
	The data is in \e32\inc\e32evnt.h.
sl@0
 16542
10). The CArray classes were leaving in their constructors. Fixed by
sl@0
 16543
	 delaying allocation of the CBufBase till an insert. Increased
sl@0
 16544
	 the error checking.
sl@0
 16545
11). The kernel was not doing unicode properly since UNICODE was
sl@0
 16546
	 not defined in \e32\swins\p_std.h before windows.h was included.
sl@0
 16547
12). Added TDes8::Copy(const TDesC16 &aRef) and
sl@0
 16548
	 TDes16::Copy(const TDesC8 &aBuf) conversions between 8 and 16.
sl@0
 16549
sl@0
 16550
	Notes:
sl@0
 16551
sl@0
 16552
	Many of the test programs were not keeping test.Start() and
sl@0
 16553
	test.End() in balance.
sl@0
 16554
	In U_TIME.CPP the unicode build was disabled because Gillian
sl@0
 16555
	was using a TLex8 instead of a plain TLex8. I also not that
sl@0
 16556
	the API for DateAsString takes the format string as a pointer
sl@0
 16557
	and not as a reference. Also the name of the function should
sl@0
 16558
	surely be Format().
sl@0
 16559
sl@0
 16560
Version 0.01.022
sl@0
 16561
================
sl@0
 16562
(Made by Martin, 17 Feb 1995)
sl@0
 16563
sl@0
 16564
1) Fixed construction of TLex over strings.
sl@0
 16565
2) New time class from Gillian.
sl@0
 16566
3) Fixed t_buf,t_bflat and t_bseg test code from Jal.
sl@0
 16567
4) Fixed t_lex test code from MartinH.
sl@0
 16568
5) Changed CRegion to RRegion (after consultation with Steve).
sl@0
 16569
6) NOTE: the TDateTime::DateAsString function fails to build under
sl@0
 16570
   unicode.
sl@0
 16571
7) K_MES.CPP does not build under UNICODE, search for !!! string to
sl@0
 16572
   find where.
sl@0
 16573
sl@0
 16574
Note that there are new wins and winsd toolsets and a new version of
sl@0
 16575
EPR.  Get these by doing
sl@0
 16576
		TOOLS WINS
sl@0
 16577
		TOOLS WINSD
sl@0
 16578
in the usual way.
sl@0
 16579
sl@0
 16580
Version 0.01.021
sl@0
 16581
================
sl@0
 16582
(Made by Colly, 16 Feb 1995)
sl@0
 16583
sl@0
 16584
1). In TUSER t_buf,t_lex do not compile.
sl@0
 16585
2). In TOLIB t_bflat,t_bseg do not compile.
sl@0
 16586
3). In TOLIB t_cact,t_cobj compile but fail. Note t_cact was t_creq.
sl@0
 16587
4). Made the kernel platform function Plat::SetVaArgList(VA_LIST &aList)
sl@0
 16588
	public in class User. This function was written assuming the argument
sl@0
 16589
	const TDesC &aFmt was the first argument. Using it in
sl@0
 16590
	Test::Panic(TInt anError,const TDesC &aFmt
sl@0
 16591
	would not work correctly. Changed this function to take a second
sl@0
 16592
	argument which says how many bytes to skip before the
sl@0
 16593
	const TDesC &aFmt argument. For Test::Panic this is 4 and 0
sl@0
 16594
	for all other uses.
sl@0
 16595
5). Renamed CRequester to CActive and CRequestManager to CActiveScheduler.
sl@0
 16596
6). Renamed all T classes which require closing to free their resources
sl@0
 16597
	to R classes. I have not renamed CRegion to RRegion in this release
sl@0
 16598
	but would propose that we do this (Steve?).
sl@0
 16599
7). Added User::At() and User::After() to put the current process to
sl@0
 16600
	sleep for relative and absolute time repectively. These are sync
sl@0
 16601
	functions.
sl@0
 16602
8). Implemented the RMessage, RServer and RSessionBase classes and added
sl@0
 16603
	the Olib classes CServer and CSession. See the T_SVR.CPP test code
sl@0
 16604
	to see how these are used.
sl@0
 16605
9). Renamed t_req.* in TOLIB to t_act.*
sl@0
 16606
10). Added the template class TPackage<T> which will package any type
sl@0
 16607
	 T in a TBuf<sizeof(T)>. Note the -> and () operator overloading.
sl@0
 16608
sl@0
 16609
	 TPackage<TVersion> v;
sl@0
 16610
	 v->iMajor
sl@0
 16611
	 v().iMajor
sl@0
 16612
sl@0
 16613
	 This is most useful for passing and receiving non TDesC arguments
sl@0
 16614
	 to a server so that the server can subsequently read/write to it.
sl@0
 16615
11). Added the minimum,maximum values for all integers in e32std.h look
sl@0
 16616
	 for KMaxTInt8 etc.
sl@0
 16617
sl@0
 16618
Queries
sl@0
 16619
-------
sl@0
 16620
sl@0
 16621
1). Are we going to implement a 16 bit version of Hufman coding. If not
sl@0
 16622
	then we cannot have this functionality as there cannot be a difference
sl@0
 16623
	between 8 and 16 bit character versions as far as functionality goes.
sl@0
 16624
2). Someone put #ifdef UNICODE into one of the files in swins. This is
sl@0
 16625
	wrong and should have been #if defined(_UNICODE). Although Microsoft
sl@0
 16626
	are confused we should always use the _UNICODE form.
sl@0
 16627
3). I think we should rename User::Check and User::Available to have
sl@0
 16628
	Heap in their name somewhere.
sl@0
 16629
sl@0
 16630
Version 0.01.020
sl@0
 16631
================
sl@0
 16632
(Made by MartinB, 15 Feb 1995)
sl@0
 16633
sl@0
 16634
1)  Removed (most) string functions from descriptors.
sl@0
 16635
2)  Fixed bug in unicode Printf.
sl@0
 16636
3)  Time class changed to DateTime.
sl@0
 16637
4)  Made some queue parameters constant.
sl@0
 16638
5)  Tidied up some of the Locale code.
sl@0
 16639
6)  Tidied up mnt.bat and renamed it to mnt.cmd.
sl@0
 16640
7)  Fixed Format for %S in descriptors.
sl@0
 16641
8)  Added Huffman coding to TDesC8 (finally).
sl@0
 16642
9)  Added some DateTime validation routines.
sl@0
 16643
10) Removed SetActive and SetInActive functions from CRequestors.
sl@0
 16644
11) Fixed most test code to run with the new descriptors, but there
sl@0
 16645
was too much to do for some (ie t_buf, t_lex, t_bflat).
sl@0
 16646
sl@0
 16647
Version 0.01.019
sl@0
 16648
================
sl@0
 16649
(Made by Colly, 7 Feb 1995)
sl@0
 16650
sl@0
 16651
1). Added the new TTimer concrete data type (CDT).
sl@0
 16652
2). Added the OLIB classes CRequestManager and CRequester.
sl@0
 16653
3). Added the OLIB requesters CTimer and CPeriodic.
sl@0
 16654
4). UNICODE needs to be defined as well as _UNICODE.
sl@0
 16655
5). Fixed a bug in TDblQueIter where neither the inc or dec operators
sl@0
 16656
	returned NULL at the end of the queue. Changed the test code to deal
sl@0
 16657
	with this. Note that if the iterator is positioned at the end of the
sl@0
 16658
	queue it will also return NULL when being casted.
sl@0
 16659
6). Fixed a bug in the TDes::Format(const TDesC &aDes) functons which
sl@0
 16660
	when try to set up the VA_LIST were taking the address of aDes and
sl@0
 16661
	getting it rather than the expected address of the argument on the
sl@0
 16662
	stack. Fixed by using the new User::SetVaArgList() function. The
sl@0
 16663
	test code is not testing this part of the code.
sl@0
 16664
7). Added the new static time validation functions to User.
sl@0
 16665
8). The User::WaitForRequest() type functions are now operational.
sl@0
 16666
9). Added the device driver code. Still to write a test device driver
sl@0
 16667
	but this will probably be a console device.
sl@0
 16668
10). Changed all the kernel classes to be D something rather than C
sl@0
 16669
	 something to avoid name clashes with OLIB.
sl@0
 16670
11). Changed the CObject class to allocate the name of the resource so
sl@0
 16671
	 that NULL can be used to indicate an unnamed object. This has
sl@0
 16672
	 changed the API's for some of the CreateLocal functions to no
sl@0
 16673
	 longer require a name, i.e. TSemaphore::CreateLocal().
sl@0
 16674
12). Changed all the API's to the kernel to use const TDesC& rather
sl@0
 16675
	 than const TName& etc.
sl@0
 16676
13). All tests pass in non-unicode debug.
sl@0
 16677
sl@0
 16678
Version 0.01.018
sl@0
 16679
================
sl@0
 16680
(Made by MartinB,  3 Feb 1995)
sl@0
 16681
sl@0
 16682
1) Improvements to MartinH's test code.
sl@0
 16683
2) Uses new format link files (so needs new tools release).
sl@0
 16684
3) Incorporates Duncan's test code.
sl@0
 16685
4) Improvements to Strings in test code (ie _TL macro).
sl@0
 16686
5) Removed most of the #if defined(_DEBUG) stuff from include files,
sl@0
 16687
   but not for the friend classes.  Working on a plan for this though.
sl@0
 16688
6) Fixed T_VARRAY .MAK file (was building T_ARRAY).
sl@0
 16689
7) This is a consolidation release.
sl@0
 16690
sl@0
 16691
Version 0.01.017
sl@0
 16692
================
sl@0
 16693
(Made by Colly, 26 Jan 1995)
sl@0
 16694
sl@0
 16695
1) Integrated the changes in preparation for device drivers.
sl@0
 16696
2) Note that the #if defined(_DEBUG) stuff for queues in the
sl@0
 16697
   headers is unacceptable.
sl@0
 16698
3) Note that I am not confident of the enumerate for EAllowDuplicates
sl@0
 16699
   nor the provision of default parameters.
sl@0
 16700
sl@0
 16701
Version 0.01.016
sl@0
 16702
================
sl@0
 16703
(Made by MartinB, 24 Jan 1995)
sl@0
 16704
All test code passes.  (But have not tried UNICODE build).
sl@0
 16705
sl@0
 16706
Now builds with 32bit EBLD.  To get this type
sl@0
 16707
sl@0
 16708
TOOLS ETSET
sl@0
 16709
TOOLS WINS
sl@0
 16710
TOOLS WINSD
sl@0
 16711
sl@0
 16712
You can then do MNT BLD etc from the command line.
sl@0
 16713
sl@0
 16714
1) Added _S macro and changed _L macro in preparation for removing
sl@0
 16715
   strings from descriptors.  Changed code to use _S and _L so that
sl@0
 16716
   strings could be easily removed in next release.
sl@0
 16717
2) Took T_TKEY test code from MartinH.
sl@0
 16718
3) Removed Free from CBuf class.
sl@0
 16719
4) Minor bug fixes here and there.
sl@0
 16720
5) Took Que code from Douglas
sl@0
 16721
sl@0
 16722
Version 0.01.015
sl@0
 16723
================
sl@0
 16724
(Made by Colly, 18 Jan 1995)
sl@0
 16725
sl@0
 16726
1).	Made the final re-organisation to the descriptors and introduced
sl@0
 16727
	the new derived class TDesR. Note that TDesC and TDes are real
sl@0
 16728
	abstract base classes as they cannot be directly instantiated.
sl@0
 16729
	(They have no contructors). Note that functions like Mid(),Left()
sl@0
 16730
	etc. now return a TDesR.
sl@0
 16731
sl@0
 16732
	Added the template TLcb class. This class is intended for use
sl@0
 16733
	as a member of a struct or class since it needs the minimum
sl@0
 16734
	storage space.
sl@0
 16735
sl@0
 16736
	This is similar to the TBuf class except that it is a length
sl@0
 16737
	followed by the buffer, i.e. no max length. Thus apart from
sl@0
 16738
	assigning to it and behaving as a TDesC a TLcb cannot be
sl@0
 16739
	manipulated as it was a TDes. However help is at hand since there
sl@0
 16740
	is a function DesW() which return a writeable descriptor through
sl@0
 16741
	which a TLcb can be manipulated in the same was as a TBuf. i.e.
sl@0
 16742
sl@0
 16743
	TLcb<KMaxName> b;
sl@0
 16744
	b=_L("   Some spaces");
sl@0
 16745
	b.TrimLeft(); // This will fail.
sl@0
 16746
	b.DesW().TrimLeft(); // This will work fine.
sl@0
 16747
	b.DesW().UpperCase();
sl@0
 16748
sl@0
 16749
	If a lot of write operations are to be performed on the TLcb then
sl@0
 16750
	it is more efficient to take a copy of the TDesW. i.e.
sl@0
 16751
sl@0
 16752
	TDesW w=a.DesW();
sl@0
 16753
sl@0
 16754
	Note that there is no public constructor on TDesW for a TLcb
sl@0
 16755
	directly as it would need you to pass the maximum length as well
sl@0
 16756
	which is best left to the template to do on your behalf.
sl@0
 16757
sl@0
 16758
	If a function needs a writeable descriptor then just pass b.DesW()
sl@0
 16759
	and all will be well.
sl@0
 16760
sl@0
 16761
	As a last final thing for descriptors I have added one final class
sl@0
 16762
	TLcbH (H stands for heap). A TLcbH has the property that the TDesW
sl@0
 16763
	returned by DesW() has its iMaxLength set to the size of the alloc
sl@0
 16764
	cell - sizeof(TUint). A fine feature of	this is that the length of
sl@0
 16765
	an alloc cell which is always present can now be used to good
sl@0
 16766
	purpose. It is also possible to call the TLcbH member functions
sl@0
 16767
	ReAlloc() or ReAllocL() on the cell and the get another TDesW
sl@0
 16768
	which will have changed its iMaxLength to the new size of the cell.
sl@0
 16769
sl@0
 16770
	TLcbH *TLcbH::ReAlloc(); // Returns NULL if fails
sl@0
 16771
	TLcbH *TLcbH::ReAllocL(); // Leaves if fails
sl@0
 16772
sl@0
 16773
	It is possible to directly construct a TLcbH with the static
sl@0
 16774
	functions:
sl@0
 16775
sl@0
 16776
	TLcbH *TLcbH::New(TUint aMaxLength) // Returns NULL if fails
sl@0
 16777
	TLcbH *TLcbH::NewL(TUint aMaxLength) // Leaves if fails
sl@0
 16778
sl@0
 16779
	The TDesC class also has two methods:
sl@0
 16780
sl@0
 16781
	TLcbH *TDesC::Alloc(); // Returns NULL if fails
sl@0
 16782
	TLcbH *TDesC::AllocL(); // Leaves if fails
sl@0
 16783
sl@0
 16784
	which will clone the descriptor on the heap. The size of the TLcbH
sl@0
 16785
	will be the length of the descriptor. Remember that these objects
sl@0
 16786
	must be freed with either delete or User::Free().
sl@0
 16787
sl@0
 16788
	Note that there is a class TLcbBase which is just used to provide a
sl@0
 16789
	place to provide the code for the template class and although this
sl@0
 16790
	could be placed in the TDesC class this could only be done by
sl@0
 16791
	sacrificing the efficiency of the constructors for the TLcb class.
sl@0
 16792
	TDesC has so many constructors that TLcbBase is useful in providing a
sl@0
 16793
	selector for the base constructor. If this was removed an artificial
sl@0
 16794
	enum would have to be added to the constructors in TDesC to ease
sl@0
 16795
	selection. Since these are called inline by TLcb this would waste
sl@0
 16796
	code.
sl@0
 16797
sl@0
 16798
	It is useful to look at the Rose class diagram in \e32\desn\e32.dsn
sl@0
 16799
	in the User\Descriptors category.
sl@0
 16800
sl@0
 16801
2). Took the fixed u_time.cpp and new t_time.cpp.
sl@0
 16802
sl@0
 16803
3). Changed the build plan so that all 4 build versions are supported
sl@0
 16804
	in all E32 .MAK files and that all releaseable files are in \e32sys
sl@0
 16805
	as follows:
sl@0
 16806
sl@0
 16807
	Build Name			Object directory
sl@0
 16808
	==========			================
sl@0
 16809
	Win32 Release		\work\e32\wins\rel
sl@0
 16810
	Win32 Debug			\work\e32\wins\deb
sl@0
 16811
	Win32 Uni Release	\work\e32\wins\urel
sl@0
 16812
	Win32 Uni Debug		\work\e32\wins\udeb
sl@0
 16813
sl@0
 16814
	Build Name			.DLLs
sl@0
 16815
	==========			================
sl@0
 16816
	Win32 Release		\e32sys\ewins.dll
sl@0
 16817
	Win32 Debug			\e32sys\ewinsd.dll
sl@0
 16818
	Win32 Uni Release	\e32sys\ewinsu.dll
sl@0
 16819
	Win32 Uni Debug		\e32sys\ewinsud.dll
sl@0
 16820
sl@0
 16821
	Build Name			.LIBs
sl@0
 16822
	==========			=====================================
sl@0
 16823
	Win32 Release		\e32sys\ewins.lib	\e32sys\estat.lib
sl@0
 16824
	Win32 Debug			\e32sys\ewinsd.lib	\e32sys\estatd.lib
sl@0
 16825
	Win32 Uni Release	\e32sys\ewinsu.lib	\e32sys\estatu.lib
sl@0
 16826
	Win32 Uni Debug		\e32sys\ewinsud.lib	\e32sys\estatud.lib
sl@0
 16827
sl@0
 16828
	The directory \e32\lib has been deleted and replaced with
sl@0
 16829
	\e32\rel where the release project files are kept.
sl@0
 16830
sl@0
 16831
	As a result of this no generated files get placed in the \e32
sl@0
 16832
	source tree, meaning a check -a li should always show no
sl@0
 16833
	additional or missing files
sl@0
 16834
sl@0
 16835
4). Fixed most of the death in the unicode build but some test
sl@0
 16836
	programs are not building properly.
sl@0
 16837
sl@0
 16838
5). Added the __DECLARE_TEST() macro for adding the test operations
sl@0
 16839
	to classes for debug builds. This macro should always be declared
sl@0
 16840
	as the last thing in the class as it switches back to public: as
sl@0
 16841
	follows:
sl@0
 16842
sl@0
 16843
	public:
sl@0
 16844
		void __TestInvariant() const;
sl@0
 16845
		void __Test() const;
sl@0
 16846
sl@0
 16847
	If a DLL is being built the __DLL__ #define should be present and the
sl@0
 16848
	macro will generate:
sl@0
 16849
sl@0
 16850
		IMPORT_C void __TestInvariant() const;
sl@0
 16851
sl@0
 16852
	The operation __TestInvariant() is expected to be supplied for all
sl@0
 16853
	classes and should do all the checking that it can to determine that
sl@0
 16854
	the object is in a healthy state. If it finds an error it should call
sl@0
 16855
	User::Invariant() which will cause a panic. If a class is derived from
sl@0
 16856
	a base class then the base class __TestInvariant() should be called
sl@0
 16857
	first and then further checking should be done.
sl@0
 16858
sl@0
 16859
	This macro should not be added to template functions as the base class
sl@0
 16860
	from which the template function is derived should be able to do all
sl@0
 16861
	the necessary checking.
sl@0
 16862
sl@0
 16863
	The __Test() function is not implemented and is provided to allow
sl@0
 16864
	test code a way of directly accessing all the members of a class.
sl@0
 16865
	Test code needs only to provide the function and then call it as it
sl@0
 16866
	is always assumed to be in the same .exe as the calling program.
sl@0
 16867
sl@0
 16868
	Look at e32des8.inl and \e32\suser\u_des8.cpp for an example of how
sl@0
 16869
	to implement __DECLARE_TEST().
sl@0
 16870
sl@0
 16871
	N.B.
sl@0
 16872
	It is expected that all classes will implement this scheme.
sl@0
 16873
sl@0
 16874
6). Taken Gillian's fix to u_loc.cpp which was returning day names
sl@0
 16875
	for months.
sl@0
 16876
sl@0
 16877
Version 0.01.014
sl@0
 16878
================
sl@0
 16879
(Made by Colly, 16 Jan 1995)
sl@0
 16880
1). THeap::Available() was not subtracting the header from the cells size.
sl@0
 16881
2). The insert bug in CBufSeg has been fixed.
sl@0
 16882
3). Implemented the new TDes/TBuf plan. This now allows TBufs to be moved
sl@0
 16883
	around in memory so that CArray<TBuf_40> is now O.K. Note that TDes8
sl@0
 16884
	cannot be instantiated, instead instantiate a TDesW8. TBufs now only
sl@0
 16885
	have an overhead of 8 bytes. See TDesC8::Ptr() to understand how
sl@0
 16886
	this trickery is accomplished. In general note that the values of the
sl@0
 16887
	members of TDesC8 and its derived classes are now meaningless so don't
sl@0
 16888
	jump to conclusions. The iLength should be divided by 4 to get the
sl@0
 16889
	real length. The bottom two bits provide flags for the Ptr() function.
sl@0
 16890
	For TDes8,TBuf8 and TDesW8 iPtr is in fact the maximum length. The
sl@0
 16891
	address of the buffer for TBuf8 is assumed to follow iPtr. For a
sl@0
 16892
	TDesW8 the real pointer to the buffer follows iPtr.
sl@0
 16893
4). Added the TVersion class and the User::Version() function.
sl@0
 16894
5). In class TLex, renamed Token() to NextToken() and made
sl@0
 16895
	MarkedToken() and NextToken() return a TDesC8.
sl@0
 16896
6). Removed the new operator in class CBase. As the cell is no longer
sl@0
 16897
	zero filled all relevant fields must be initialised.
sl@0
 16898
7). Added a member variable TText *__iName to CBase when the _DEBUG
sl@0
 16899
	flag is set. All constructors of classed derived from CBase should
sl@0
 16900
	initialise by using the __DECLARE_NAME macro. For CBufSeg this would
sl@0
 16901
	be :
sl@0
 16902
	EXPORT_C CBufSeg::CBufSeg(TUint anExpandSize)
sl@0
 16903
	//
sl@0
 16904
	// Constructor
sl@0
 16905
	//
sl@0
 16906
		: CBufBase(anExpandSize),iSeg(NULL)
sl@0
 16907
		{
sl@0
 16908
sl@0
 16909
		__DECLARE_NAME(_L("CBufSeg"));
sl@0
 16910
		}
sl@0
 16911
8). Changed the ASSERT1,ASSERT2 and ASSERT3 macros to
sl@0
 16912
	__ASSERT_ALWAYS - applied in all builds
sl@0
 16913
	__ASSERT_DEBUG - applied only in debug builds
sl@0
 16914
	__ASSERT_OPT - applied if __OPT__ is defined
sl@0
 16915
	The previous versions assumed that Panic was called, i.e.
sl@0
 16916
	#define ASSERT1(c,p) if (!(c)) Panic(p)
sl@0
 16917
	This has been changed to allow other functions to be called.
sl@0
 16918
	#define __ASSERT_ALWAYS(c,p) if (!(c)) p
sl@0
 16919
	This should be used as follows:
sl@0
 16920
	__ASSERT_ALWAYS(anIndex<iLength,Panic(EDes8IndexOutOfRange));
sl@0
 16921
9). Further bugs showed up in T_BFLAT which was still assuming that
sl@0
 16922
	a TBuf was zero terminated. Changed the code to zero terminate
sl@0
 16923
	after construction.
sl@0
 16924
sl@0
 16925
Version 0.01.013
sl@0
 16926
================
sl@0
 16927
(Made by Colly, 12 Jan 1995)
sl@0
 16928
1). Completed the implementation of the descriptor/buffer classes.
sl@0
 16929
2). The TLocale class is now working.
sl@0
 16930
3). Move SDate,STime and SDaySecs out of TTime. Made the members
sl@0
 16931
	start with a lower case. Changed the order of members so that
sl@0
 16932
	sorting	will occur correctly. Changed the filler on STime to be
sl@0
 16933
	1/100ths of a second. Provided a service in the kernel to retrieve
sl@0
 16934
	the current 1/100ths.
sl@0
 16935
4). Changed TTime to call the kernel to get the current time and TLocale
sl@0
 16936
	to get the start of week. The function to set system time is in
sl@0
 16937
	User. i.e. User::SetSystemTime(TSystemTime aTime);
sl@0
 16938
5). Moved the static functions from TTime to User.
sl@0
 16939
6). Converted the u_time.cpp to E32 code standards.
sl@0
 16940
7). Converted the u_graph.cpp to E32 code standards.
sl@0
 16941
8). Converted the o_region.cpp to E32 code standards.
sl@0
 16942
9). Fixed the bug if you ran a program from the command line without
sl@0
 16943
	the .exe.
sl@0
 16944
10). Changed TDblQue::Next() to be TDblQue::First() and
sl@0
 16945
	TDblQue()::Prev() to be TDblQue()::Last(). Changed the
sl@0
 16946
	implementation of AddFirst() and AddLast() to take a T * rather
sl@0
 16947
	that a TDblQueLink *.
sl@0
 16948
11). Changed the static New()'s in CBufFlat and CBufSeg to return a
sl@0
 16949
	pointer to the class rather than to CBufBase.
sl@0
 16950
12). Add a further global new operator which will leave if it cannot
sl@0
 16951
	allocate the memory. This is called as follows:
sl@0
 16952
	Normally:
sl@0
 16953
	TRect *p=new TRect(0,0,10,10);
sl@0
 16954
	With leave:
sl@0
 16955
	TRect *p=new(ELeave) TRect(0,0,10,10);
sl@0
 16956
13). Renamed TEnter::Throw() to TEnter::Leave();
sl@0
 16957
14). Fixed User::Leave().
sl@0
 16958
15). Add the full queue implemetations.
sl@0
 16959
16). Threads other than the main thread did not have their heap set.
sl@0
 16960
17). Lots more that I have forgotten.
sl@0
 16961
sl@0
 16962
The TLex test code does not pass since it was relying on the zero
sl@0
 16963
terminator and I don't have the time to fix it. There is bug shown
sl@0
 16964
in CBufSeg with the test program T_ARRAY, although not surprisingly
sl@0
 16965
by T_BSEG.
sl@0
 16966
All the test code should now be reviewed and checked.
sl@0
 16967
sl@0
 16968
Version 0.01.012
sl@0
 16969
================
sl@0
 16970
(Made by MartinB, 6 Jan 1995)
sl@0
 16971
1) Fixed death in release 11 below.
sl@0
 16972
2) Descriptor classes essentially complete.  Moved iMaxLength from
sl@0
 16973
   TDesC to TDes.  However must still define unicode-independent
sl@0
 16974
   buffers.
sl@0
 16975
3) Passes all test code now (except T_SEM).
sl@0
 16976
sl@0
 16977
sl@0
 16978
Version 0.01.011
sl@0
 16979
================
sl@0
 16980
(Made by MartinB, 6 Jan 1995)
sl@0
 16981
1) Bug fixes to Heap from MartinH.
sl@0
 16982
2) Bug fixes to arrays from Jal.
sl@0
 16983
3) Changed some pointer parameters to references.
sl@0
 16984
4) Changed to new Descriptor class hierarchy.  The change is not yet
sl@0
 16985
   complete.
sl@0
 16986
5) Some things are now (partially) broken:
sl@0
 16987
		T_BUF does not pass all test code (wierd stack death),
sl@0
 16988
		T_ARRAY.CPP and T_BFLAT.CPP do not build,
sl@0
 16989
		T_LEX does not pass all test code.
sl@0
 16990
sl@0
 16991
Version 0.01.010
sl@0
 16992
================
sl@0
 16993
(Made by MartinB, 4 Jan 1995)
sl@0
 16994
1) Minor bug fix to o_array.cpp.
sl@0
 16995
2) Fixes to slocl to support dynamic loading.
sl@0
 16996
3) Fixes to TLex and TChar code.
sl@0
 16997
4) Converted to using spaces for tabs.
sl@0
 16998
5) Incorporated DWs time class.
sl@0
 16999
6) Moved Steve's CRegion class to SOLIB.
sl@0
 17000
sl@0
 17001
Version 0.01.009
sl@0
 17002
================
sl@0
 17003
(Made by MartinB, 22 Dec 1994)
sl@0
 17004
1) Minor bug fixes and improvements to descriptor code.
sl@0
 17005
2) Now partially buildable under EPR (courtesy of DuncanS).  To get
sl@0
 17006
   extended toolset type:
sl@0
 17007
sl@0
 17008
		TOOLS ETSET
sl@0
 17009
		TOOLS WINS
sl@0
 17010
sl@0
 17011
You will also need to set your DOS box to run off a PIF file
sl@0
 17012
(ETSET.PIF in this directory will do), otherwise you will get out of
sl@0
 17013
memory/environment space problems.
sl@0
 17014
sl@0
 17015
Then
sl@0
 17016
		ETON WINS
sl@0
 17017
and (in the usual way)
sl@0
 17018
		CONT E32 GROUP
sl@0
 17019
		DON
sl@0
 17020
		BUILD DEB
sl@0
 17021
sl@0
 17022
Then you should be able to do MNT BLDALL.  Unfortunately we don't yet
sl@0
 17023
have the technology to build DLLs yet, but we can do CCs and LFs.
sl@0
 17024
This certainly makes it much less tedious to build the test code.
sl@0
 17025
In CONT E32 TUSER type
sl@0
 17026
		EBLD ETLI
sl@0
 17027
In CONT E32 TOLIB type
sl@0
 17028
		EBLD LI
sl@0
 17029
sl@0
 17030
Version 0.01.008
sl@0
 17031
================
sl@0
 17032
(Made by MartinB, 21 Dec 1994)
sl@0
 17033
1) Took Jal's fixes for CBufSeg class.
sl@0
 17034
2) Added
sl@0
 17035
		void Append(const TUint8* aBuf,TUint aLength);
sl@0
 17036
   function to TDesBase class.
sl@0
 17037
3) Removed the Assign() functions that were just duplicates of Copy()
sl@0
 17038
   from TDesBase.
sl@0
 17039
4) Split data in slocl into country dependent, language dependent and
sl@0
 17040
   alphabet (character set) dependent parts.  Split not yet complete.
sl@0
 17041
sl@0
 17042
Version 0.01.007
sl@0
 17043
================
sl@0
 17044
(Made by MartinB, 20 Dec 1994)
sl@0
 17045
1) Produces e32winsu.* and e32statu.* on UDEB and UREL builds.
sl@0
 17046
2) Moved to warning level 4.
sl@0
 17047
3) operator= changed to return reference in TPoint, TSize and TRect classes
sl@0
 17048
4) Converted CBuf* classes to constant reference convention.
sl@0
 17049
5) Changed TLex to use descriptors.
sl@0
 17050
sl@0
 17051
Version 0.01.006
sl@0
 17052
================
sl@0
 17053
(Made by MartinB, 20 Dec 1994)
sl@0
 17054
1) #defined _UNICODE on UDEB and UREL in e32ver.h in preparation
sl@0
 17055
   for epr building.
sl@0
 17056
2) Converted TLex* class to constant reference convention.
sl@0
 17057
3) Renamed TSuffix to TDateSuffix.
sl@0
 17058
sl@0
 17059
Version 0.01.005
sl@0
 17060
================
sl@0
 17061
(Made by MartinB, 19 Dec 1994)
sl@0
 17062
1) First version with buffers replaced by descriptors.  Note that
sl@0
 17063
		..\inc\e32db16.h
sl@0
 17064
   is a copy of
sl@0
 17065
		..\inc\e32db8.h
sl@0
 17066
   with 8 replaced by 16 throughout, and
sl@0
 17067
		..\suser\u_dsbf16.cpp
sl@0
 17068
   is a copy of
sl@0
 17069
		..\suser\u_dsbf8.cpp
sl@0
 17070
   with 8 replaced by 16 throughout.
sl@0
 17071
sl@0
 17072
   This is necessary since it seems impossible to use templates in
sl@0
 17073
   this case (this is because there seems to be no way to manually
sl@0
 17074
   instantiate the template so that it can be placed in the DLL).
sl@0
 17075
2) Passes all test code except T_BFLAT (which I didn't get to work on
sl@0
 17076
   version 004) and T_SEM (which I'm not sure about).
sl@0
 17077
3) TThread class broken?  It may well work but I have not yet looked
sl@0
 17078
   into the implications for this class.
sl@0
 17079
4) Made this version for a "safe" one to come back to.
sl@0
 17080
5) U_LEX*.CPP and U_SEG.CPP can now be much improved by using
sl@0
 17081
   Descriptors instead of temporary buffers.
sl@0
 17082
sl@0
 17083
Version 0.01.004
sl@0
 17084
================
sl@0
 17085
(Made by MartinB, 19 Dec 1994)
sl@0
 17086
1) Minor fixes to SLOCL tables.
sl@0
 17087
2) Defined ASSERTn and ASSERT_VALIDn macros.
sl@0
 17088
3) Last version before new TDes and TBuf classes.
sl@0
 17089
sl@0
 17090
Version 0.01.003
sl@0
 17091
================
sl@0
 17092
(Made by MartinB, 14 Dec 1994)
sl@0
 17093
1) Incorporates TPoint, TSize, TRect & TRegion classes.
sl@0
 17094
2) Incorporates test code for above.
sl@0
 17095
3) Moved TCheckedHeapWalk declaration into THeap (ie nested class
sl@0
 17096
   declaration), partially because of name class with TSize (above).
sl@0
 17097
sl@0
 17098
Version 0.01.002
sl@0
 17099
================
sl@0
 17100
(Made by MartinB, 13 Dec 1994)
sl@0
 17101
1) Incorporates buf fixes to TChar, TLex & TBuf classes.
sl@0
 17102
2) Incorporates test code for above.
sl@0
 17103
3) First working UNICODE version.
sl@0
 17104
sl@0
 17105
Version 0.01.001
sl@0
 17106
================
sl@0
 17107
(Made by Colly, 10 Dec 1994)
sl@0
 17108
1) First release.