Armalyser Change Log
====================

0.01 05-Mar-2000 Initial revision
0.10 19-May-2000 1st Alpha release
0.11 23-May-2000 2nd Alpha release
                 * Dissembly entering infinite loop on C Symbol fixed
                 * Exclusive conditional termination added
0.12 25-May-2000 3rd Alpha release
                 * Assembler Shared C library labels fixed
                 * FindAddr incorrectly terminating at flags fixed
                   (Caused C init code not to be followed past _kernel_init)
                 * Ignores pushing PC on stack in APCS code
                   (thought it was setting up a post vector claim)
0.13 29-Nov-2000 * 32bit C application support added
                 * MessageTrans_ErrorLookup handled
                 * LDR PC,[R13],#4 recognised as function exit
0.14 04-Dec-2000 * PullCall returns 0xFFFFFFFF if empty not 0
0.15 21-Apr-2001 * xpand used for unsqueezing absolutes
                 * unmodsqz used for squeezed modules
0.16 25-Apr-2001 * AOF and ALF file checking added
0.17 23-Jul-2001 * SWI parameter checking greatly expanded
0.18 10-Aug-2001 * HTML and XML formatting added
0.19 14-Aug-2001 * Custom format loading added
0.20 31-Aug-2001 * Debug data and C++ name unmangling added
0.21 01-Sep-2001 First Beta release
                 * Formatting fixes for DDF and DDL
0.22 27-Sep-2001 * Fixed length string emble display
                 * Wimp menu display fix
                 * MessageTrans menu structure added
                 * MarkData() and MarkString() will not override higher
                   priority constructs
0.23 30-Oct-2001 * XML tags formalised with introduction of a DTD
0.24 01-Jan-2002 * Code expected warning addresses fixed
0.25 20-Jan-2002 * OBJ_AREA relocation directive aware of instruction type
0.26 13-Feb-2002 * Command line arguments rearranged
                 * Output to file added, correct RISC OS filetype set
0.27 22-Feb-2002 * Fixed warnings not being output to file
0.28 01-May-2002 * Last word of code storage cleared before loading
                 * SDT2 type (LDR SB/SH/H) instructions added
                 * Removed 26bit wrapping from PC relative address calcs
0.29 02-Jun-2002 * 32bit SCL jump table unknown entries analysed correctly
0.30 06-Jul-2002 * WIMP structure priorities altered
                 * Prefix added to EmbleWimpIconData
0.31 26-Jul-2002 * Patch candidate statistics added
                 * Sub stats now percentage of main stat not total words
0.32 01-Sep-2002 * Asm warning links generated if not disassembling
                 * Mutex flag sequence end correctly detected with R14 DP's
                 * SDT target address calculation fixed by adding offset
                 * FindAddr and FindValue terminates on BL or LDM Rx
                 * Code start sequence finder recognises if PC is stacked
                 * Code and data stack tracing added
                 * Trailing .0 removed from FP constants for ObjAsm
                 * FP precision added to FIX for ObjAsm
                 * Title and warning lines prefixed with ';' in text output
                 * Branch table endpoint label removal problem fixed
                 * Mid string assembler label offsets generated
                 * References generated from MarkData address
                 * MakeString single and double quote bugs fixed
                 * $$ quoted in assembler strings
                 * Greater precision used for DCFS and DCFD values
                 * Character following escape ignored in string
                 * Only BASIC or unknown string types terminate on \r
                 * Address word identification prevented in SCL modules
                 * Relocation table tragets and end points marked as ref'd
                 * Detection of sequential strings improved
0.33 05-Sep-2002 * FindAddr and FindValue conditional instruction checking
0.34 21-Sep-2002 * Explicit Immediate value & rotate used in ASM instructions
                 * Non 32bit compliant SWI warningd added
                 * Label prescan to ensure only valid asm labels are generated
0.35 04-Nov-2002 * MSR/MRS CPSR and SPSR names compatible with ObjAsm
                 * mnemoaic_opts added for control of immediate and ADRs
                 * Suprious OS_WriteI SWI variants removed from OSLib port
                 * Invalid FP instructs with prec=3 and FIX const rejected
                 * All code using NV condition marked as not 32 bit
                 * Settype comment added to aseembler output for modules
                 * Library directory chunk date stamp displayed correctly
                 * String detection prevented from running off end of data
                 * Error block detection fixed
                 * Sound SWI groups &40140-&40180-&401C0 dispatch corrected
                 * Sound_Install voice installation header identified
                 * Wimp Message block size validated by analysis
                 * 32bit module header analysis and display added
                 * C symbols searched in reverse order for code detection
                 * Non XScale instruction warning added for LDR Rd,[Rd],#0
                 * Warning added for branching outside 64MB or with thumb bit
                 * Non RISC OS: Bogus names for SWI &100 to &1FF removed
                 * Non RISC OS: Sound SWI names added &40140-&40180-&401C0
                 * Non RISC OS: osfile funcs dont convert extn to lower case
                 * Non RISC OS: Territory_ConvertDateAndTime fixed
                 * !ARMalyser auto runs 26 or 32 bit RISC OS executable
0.36 12-Nov-2002 * Analysis state introduced for register value tracking
                 * Register state tracking dump option added
                 * Fixed Wimp message display returning incorrect length
                 * VDU variable block end point detection fixed
0.37 28-Nov-2002 * Code cautionary descriptions improved
0.38 29-Nov-2002 * Display of new cautions from state and decoding
0.39 05-Dec-2002 * Analysis state stacking added
0.40 06-Dec-2002 * 26/32bit guarding and conditional exit detection enhanced
0.41 08-Dec-2002 * AOF and ALF with filetype text as well as data allowed
                 * Relocated addresses handled in register memory loads
                 * Fix to label generation in during analysis warnings
                 * CRT on control processor decode type corrected
0.42 22-Dec-2002 * 16 bit half word data type handling added
                 * ARMv5 load/store double word instrucions added
                 * Wimp Icon Data buffer and validation marked as address
                 * Long ADR recognised and real label with offset used
                 * Label+offset links fixed in HTML output
                 * OBJAREA_START marker placement validity check
0.43 31-Jan-2003 * SDT Rm=Rn with write back is unpredictable
                 * MarkData exits if length is > 16MB (or signed negative)
                 * Caution if comparing PC against value of 1<<31 or more
                 * ARMv5 Misc and DSP instructions added
                 * ARMv5 instruction display conditional on 32bit executable
                 * MessageTrans menu structure display corrected
                 * RO4 fast service entry show as address in service table
                 * Instructure architecture version displayed
                 * Shared C Library APCS-A recognised and marked as non 32bit
                 * Co-pro data transfer instruction data marking corrected
                 * ResourceFS file length displayed
                 * Performance (XScale register latency) information added
                 * LDR/STR register emulation offset sign calc corrected
                 * Target processor command line option added
0.44 28-Mar-2003 * Executable extended to encompase SCL static data areas
                 * Shared C Library _swi and _swix vectors correctly labelled
                 * Instruction issue latency added
                 * Regsiter result latencies adjusted
                 * Instruction shift and register shift added to decode info
                 * AIF header dectection tightened
                 * Register emu ignores loads from memory modified at runtime
                 * Data not marked on unaligned loads and stores
                 * Control terminated strings allowed in error blocks and
                   various SWI parameters
                 * ALIGN in assembler output replaced by DCB's of spare data
                 * SpriteArea display fixed and enhanced
                 * R14 address checked on SDT dynamic branch
                 * NOP/No Banked caution not triggered on exclusive condition
                 * End of file label added to assembler output
                 * Register condition validity sep'd from value known flag
                 * Instruction unpredictable info calculated in main decode
                 * MSR immediate decoding and display fixed
                 * AOF code detection and file structure display enhanced
                 * Relative offset data type and display added
0.45 05-Apr-2003 * Dynamic branches with R14=PC+4 trated as subroutine
                 * Flag modifications tracked over dynamic branch subroutines
                 * Instruction latency cycles added to register trace output
                 * Total instruction latency cycles display option
                 * Branch throughput latency corrected
                 * OS_ReadLine32, OS_SubstituteArgs32, OS_HeapSort32 added
                 * Mnemonic field length alterd in assem and dissassem modes
                 * Brkpt marked as unpredictable if conditional
                 * Error block marked on MSR CSPR_f,#Vflag
                 * Width of SWI names in assembler EQU table mode increased
                 * Detection of branch to thumb mode fixed
                 * Removed banked register warning for PC
0.46 17-Aug-2003 * PSR state invalidated after flag setting DP instruction
                 * Z & C flag returning SWI knowledge added
                 * Conditional after BL/SWI improved to use SWI BL flag info
                 * Base field removed from discontiguous enum debug display
0.47 21-Mar-2004 * Last word of module service table not marked as array
                 * Object file code attribute explicitly flagged as 26bit
                 * C flag set for OS_GBPB and OS_BGet
0.48 05-Jul-2004 * Check for sensible SCL chunk id added
0.49 02-Mar-2005 * Module header end detection improved
0.50 30-May-2005 * Test for cond not compatible with flags set by instr
0.51 14-Nov-2005 * PLD not treated as dynamic branch even if not ARMv5
                 * BL/BLX & CLZ decode subtype numbers corrected
0.52 02-Dec-2005 * Construct start markers added
                 * Debug data bitfield type omission corrected
                 * Labels used for debug data pointers in assembler output
                 * Assembler & Dissambler output string generation improved
                 * ARMv5 decoding suppressed unless target XScale specified
                 * Fixed Rm state caclulation for DP with register shift
                 * Data backtrace location moved to pickup byte modifications
                 * Dots substituted for characters 128 to 159 in HTML output
0.53 22-Dec-2005 * Debug FileInfo structure not skipped if length field zero
                 * Debug FileInfo formating for 3 digit increments
                 * Undefined rd in COPRO_CTRL CDT fixed
                 * Help text updated
0.54 02-Feb-2006 * Fixed reg latency reporting only when reg values known
0.55 13-Apr-2006 * Performance analysis corrected and enhanced, ARM9 addded
                 * SWI number displayed for kernel_SWI and swi functions
                 * Checking of command line arguments added
0.56 06-Dec-2006 * C assumed if apcs reg requested so symbols are identified
                 * Symbol detection allows short strings
                 * Fixed Rm state caclulation for SDT2 instructions
                 * Binary chop algorithm used to find preceeding lable
0.57 03-Jan-2007 * ELF file format support added
                 * Terminating function name list extended
                 * Fixed BDT instruction base address for data marking
                 * Label+Offset bracketed when used in relative expressions
                 * Value comments improved for assembler mode
                 * Array extension moved to surmise level 3
                 * Fast find nearest label routine used for pointer comments
                 * Code and data warning for address zero supressed
                 * Backtrace support for RO5 ROM location added (untested)
                 * Memory access macros renamed
0.58 07-Jan-2007 * SDT value calculation fixed
                 * Jump table detection added for LDRxx PC,Rm
                 * Jump and Branch table range detection improved
                 * CalcRm returns invalid if Rm and Rs unknown
0.59 12-Jan-2007 * Separate addr & state stacks used for 64bit compatability
                 * Size data type added, used in AOF/ALF/AIF & debug info
                 * 32bit flag always set when target is ARM9 or XScale
                 * HTML output changed to 4.01 and CSS1
                 * HTML chars 127 to 159 given orange colour tag
                 * Additional end of file word not counted in statistics
                 * Fix to unspecified user formatting tag free failure
                 * Program data array validation checks added
0.60 23-Mar-2007 * ELF Relative object file support added
                 * ELF Symbol table handling improved and REL support added
                 * ELF REL Unliked functions looked up from relacation table
                 * AR format ELF static libraries supported
                 * AOF/ALF annotations improved
                 * AOF function names picked up from the symbol table
                 * AOF unlinked functions recognised from relocation table
                 * Local func at start of AOF AREA not classed as unlinked
                 * First word of ELF string table marked correctly
                 * Text output chars 128 to 159 replaced with dots
                 * MarkFunction respects contruct and code info precidence
                 * BDT with PC on stack/frame not treated as dynamic branch
                 * Fixed length string dissembler output corrected
0.61 27-Apr-2007 * C++ name unmangle code re-written
                 * -ls list symbols option added
                 * Utility file header support added
0.62 16-Oct-2007 * G++ name unmangle code added
                 * CFront templates names supported
                 * uncompressAIF used on non RISC OS platorms
