ZDS II - Z8 Encore! Family 5.2.2 (Build 15082502) ============================================================================== The following features are provided in this release: - Z8 Encore! language tools including C compiler, assembler, linker/locator, and librarian - Instruction set simulator and disassembler - Zilog Standard Library (ZSL) - In-Circuit Z8 Encore! Flash MCU debugger and programmer - USB Smart Cable, Ethernet Smart Cable, and Serial Smart Cable support The technical documentation supplied in the installation is available in PDF format. This format requires that Acrobat Reader or equivalent be installed on the host machine. In the event of a component problem, please complete the Problem Report Form and submit it with your request. The form is located in the installa- tion directory of your hard drive. Our staff will use the information to diagnose or log the problem. Contact Information -------------------------------------------------------------------------- Zilog Inc. Web Site: http://www.zilog.com Technical Support Channel: http://support.zilog.com Table of Contents -------------------------------------------------------------------------- A. CHANGES FROM PREVIOUS RELEASES B. COMPATIBILITY C. SYSTEM REQUIREMENTS D. APPLICATION AND OTHER OS ISSUES E. P & L (PRECAUTIONS AND LIMITATIONS) F. CLOSED CHANGE REQUESTS G. OPEN CHANGE REQUESTS A. CHANGES FROM PREVIOUS RELEASES ============================================================================== Refer to the 'Migrating from a Previous Release' section of the FAQ for information and pointers related to migrating/converting ZDS projects and targets from releases prior to version 4.10.0. (to 5.2.2 Build 15082502) - Updated for the support of F6482 Revision AC (to 5.2.1 Build 15022704) - Fixed typographical error in names of ZMotion CPUs in the ez8.h and ez8dev.inc files - Modified USB configuration callback parameters to include the Configuration, Interface and Alternate Setting specified in Set Configuration and Set Interface requests. For more information refer to the description of the fpUserConfig member of the BSP_USB structure described in the Z8 Encore! XP F6482Series API Programmers Reference Manual (RM0064) - The BSP USB driver now only sends a Zero Length Packet (ZLP) when explicitly requested by the application via a call to the BSP_USB_EpTransmit API with a packet length of 0 - The USB data toggle is set to DATA0 upon receipt of a Set Configuration or Set Interface requests and when an endpoint stall is cleared (to 5.2.1 Build 14121501) - Fixed a bug in the RTL module ulcase.asm which could cause unpredictable program execution, depending on register usage in other parts of the application. - Fixed a bug in the RTL module uscan_state.c which could cause the compiler to give an incorrect error message for valid C code using the String Placement feature for a string stored in rom. - Updated bit-field labels in BSP header files to match the latest Z8 Encore XP F6482 Series Product Specification (PS0294) - Modified BSP source code and sample projects to use updated bit-field labels - Updated documentation (to 5.2.0) - Added support for several new CPU families, all members of the new Z8Encore! F6482 group of CPUs. - Library functions such as printf and scanf that take parameters which are pointers to strings now offer variant versions for pointers to different address spaces such as near, far, or rom pointers. - Compiler listing files have been improved in several ways. Lines may now, optionally, be displayed with the effects of macro expansion included. Lines that are effectively removed from compilation, by being commented out or removed by conditional compilation, are now clearly indicated. Entry into, and exit from, include files are more clearly indicated. Other readability enhancements have been added. - Change Requests have been addressed. Refer to the Closed Change Requests section for more details. - Changed the edit view to list view for "defines" and "Include Directories" in the Assembler and C preprocessor pages. - Range checking (checking that the tools do not attempt to put a 9 bit value in an 8 bit space) has been restored in the linker. For more information, refer to the item #2 in the section E, "P & L (PRECAUTIONS AND LIMITATIONS)"-> "Compiler, Assembler, Linker/Locator, & Librarian". (to 5.0.0) - Added Intelligent Editor support that allows you to read and write code faster, navigate intelligently, and identify and correct mistakes. - Added color configuration per syntax style - Added printing capability for the following windows: output, disassembly, callstack, symbol, memory and register. To print the window content, click on the content of the window and press CTRL+P or right mouse-click on the window and select "print". - Added Window 7 support. Please refer to the USBsmartcable driver installation procedure described in the "USB driver installation.txt" located in \device drivers\USB - Information on the memory footprint (RAM and ROM) -- how much has been used and how much is still available -- is now output to the build window at compile time. - Segments whose names are changed by the linker CHANGE directive are now displayed under the changed name (with a reference to the original name) in the map file, to reduce confusion. - At user request, the labels __intrp and errno have been moved from the standard startup module to other locations. This saves a few bytes of near memory for applications that don't use these symbols. Applications that do use them should not be affected. - Change Requests have been addressed. Refer to the Closed Change Requests section for more details. - Added clearer messages when a build fails. - NUMLOCK display is no longer supported due to the variety of keyboard mappings. B. COMPATIBILITY ============================================================================== Devices -------------------------------------------------------------------------- Z8 Encore! F0830 Series: : Z8F013x, Z8F023x, Z8F043x, Z8F083x, : Z8F123x Z8 Encore! F083A Series: : Z8F043A, Z8F083A Z8 Encore! XP F082A Series: : Z8F082A, Z8F042A, Z8F022A, Z8F012A : Z8F081A, Z8F041A, Z8F021A, Z8F011A 8-pin*: : Z8F082AXB, Z8F042AXB, Z8F022AXB, Z8F012AXB : Z8F081AXB, Z8F041AXB, Z8F021AXB, Z8F011AXB Z8 Encore! XP F0823 Series: : Z8F0823, Z8F0423, Z8F0223, Z8F0123 : Z8F0813, Z8F0413, Z8F0213, Z8F0113 8-pin*: : Z8F0823XB, Z8F0423XB, Z8F0223XB, Z8F0123XB : Z8F0813XB, Z8F0413XB, Z8F0213XB, Z8F0113XB Z8 Encore! XP F0822 Series: : Z8F0822, Z8F0812, Z8F0422, Z8F412 : Z8F0821, Z8F0811, Z8F0421, Z8F411 Z8 Encore! XP F64XX Series: : Z8F6423, Z8F4823 : Z8F6422, Z8F4822, Z8F3222, Z8F2422, Z8F1622 : Z8F6421, Z8F4821, Z8F3221, Z8F2421, Z8F1621 Z8 Encore! XP F1680 Series 8K*: Z8F0880 Z8 Encore! XP F1680 Series 16K*: Z8F1680 Z8 Encore! XP F1680 Series 24K*: Z8F2480 Z8 Encore! XP F6482 Series 16K : Z8F1681, Z8F1682 Z8 Encore! XP F6482 Series 32K : Z8F3281, Z8F3282 Z8 Encore! XP F6482 Series 60K : Z8F6081, Z8F6082 Z8 Encore! XP F6482 Series 64K : Z8F6481, Z8F6482 Z8 Encore! MC Series* : Z8FMC16100, Z8FMC08100, Z8FMC04100 Z8 Encore! ZMOTION 8-pin Series: Z8FS021. z8FS040 (Please see section E > IDE #5) Z8 Encore! ZMOTION Series : Z8FS021. z8FS040 (Please see section E > IDE #5) Z8 Encore! 640 Family : Not Supported. Please use Ver: 4.10.1 *Requires USB Smart Cable, Opto-Isolated USB Smart Cable, or Ethernet Smart Cable Please refer to the Project>Settings>General>CPU selection for the latest supported devices. In-Circuit Debuggers/Programmers -------------------------------------------------------------------------- USB Smart Cable, version 1.0 or later: ~ Supports target frequencies from 32KHz to 20MHz ~ Supports target voltages from 2.7V to 3.6V ~ Requires 2mA from the target Opto-Isolated USB Smart Cable, version 1.3: ~ Supports target frequencies from 32KHz to 20MHz ~ Supports target voltages from 2.7V to 3.6V ~ Requires 2mA from the target Ethernet Smart Cable, version 1.0 or later: ~ Supports target frequencies from 32KHz to 20MHz ~ Supports target voltages from 2.7V to 3.6V ~ Requires 2mA from the target Serial Smart Cable for Z8 Encore!, version 6.04.03 or later: ~ Supports target frequencies from 153.6KHz to 20MHz ~ Supports target voltages from 3.0V to 3.6V ~ Requires 35mA at 3.3V from the target USB device drivers and installation instructions can be found in the following locations: \device drivers\USB\ The firmware and upgrade instructions can be found in the following directory: \bin\firmware\ Please visit Zilog's website for latest versions. http://www.zilog.com/software/zds2.asp C. SYSTEM REQUIREMENTS ============================================================================== Supported Operating Systems -------------------------------------------------------------------------- Windows 7 64-bit Windows 7 32-bit Windows Vista 32-bit Windows Vista 64-bit Windows XP Professional 32-bit Windows 2000 SP4 USB Smart Cable -------------------------------------------------------------------------- Hi-Speed USB (Fully compatible with Original USB) Root (direct) or self-powered hub connection *The USB Smart Cable is a high power USB device Opto-Isolated USB Smart Cable -------------------------------------------------------------------------- Hi-Speed USB (Fully compatible with Original USB) Root (direct) or self-powered hub connection *The USB Smart Cable is a high power USB device Ethernet Smart Cable -------------------------------------------------------------------------- Ethernet 10Base-T compatible connection Serial Smart Cable for Z8 Encore! -------------------------------------------------------------------------- RS232 Communication port with hardware flow and modem control signals *Some USB to RS232 devices are not compatible because they lack the necessary hardware signals and/or they use proprietary auto-sensing mechanisms which prevent the Smart Cable from connecting. D. APPLICATION AND OTHER OS ISSUES ============================================================================== 1. Apply the latest Windows updates to the host system when appropriate. 2. ZDS II will terminate an active target connection when the host goes into Stand by or Hibernate. 3. Some systems with one or more other USB devices connected may not boot properly after connecting the USB Smart Cable. Workaround: Connect the USB Smart Cable after the system has started. E. P & L (PRECAUTIONS AND LIMITATIONS) ============================================================================== Debugger & Programmer -------------------------------------------------------------------------- 1. The Debugger's memory window for RData shows internal Data Memory range 0-Edata limit of selected device. 2. The Z8F08200100KITG and Z8F64200100KITG development boards are shipped with a 18.432MHz clock which requires the host to communicate with it at a rate greater than 36Kbit/s. The minimum and maximum target communication frequencies are determined by MIN = Fsysclk / 512 and MAX = Fsysclk / 8. For more information about OCD Auto-Baud limits, please refer to the "On-Chip Debugger" section in the Z8 Encore! device's product specification. 3. Selecting "No" when prompted with the flash option bit write warning during a code memory fill operation does not stop the operation. 4. The Watch Dog Timer (WDT) must be disabled when in run mode or executing code. The WDT will cause the processor to perform a reset and the debug mode will not be enabled upon reset. Therefore the debugger will lose control of the processor. 5. The STOP command is not supported by ZDS II. The ZDB interface utilizes the internal clock to communicate with the processor and this command causes the internal clock to stop terminating communication with ZDS II. See FAQ "Why does the debugger exit STOP mode without the occurrence of STOP mode recovery event?" for additional information. 6. If the target device system clock frequency is designed to change during program execution, the matching configuration should be assigned in the Setup Target dialog prior to the target connection. Otherwise target communication may be lost during program execution. 7. -Purposedly deleted - 8. When using the RS232 Smart Cable, a connection attempt may fail if the previous attempt was made with an invalid communication rate. 9. The debugger does not support arrays with more then 6 dimensions. 10. When using the USB or Ethernet Smart Cable with the Z8 Encore! XP F042A development kit (Z8F04A28100KIT) or the Z8 Encore! XP F082A development kit (Z8F08A28100KIT) board revisions A and B, apply the following hardware changes: a. Solder a 10K resistor between pins 5 and 4 of U7 (LT1129) b. Solder a 15K resistor between pins 4 and 3 of U7 (LT1129) Otherwise, the target may not come out of reset and ZDS will fail to connect. When applying power to the XP F082A and F042A board with the USB or Ethernet Smart Cable connected to the DBG port, the 3.3V power LED will normally flicker (on then off). Performing a connect or reset in the IDE will power the board and illuminate the 3.3V LED. 11. ZDS may hang for a long period of time if the NVDS memory window is open during a debug session -- run-control operations and general user interface updates will be slow. If ZDS can not reestablish a connection because the NVDS window was open during the last debug session; change the target to Simulator, start a debug session, and close the NVDS window. NVDS window will hang or will take a long time to recover if connected to a non-NVDS CPU. 12. When Debugging user NVDS memory read/write functions it is important not to issue an asynchronous break request that interrupts the read/write function while in Run Mode. The debugger can not tell if the read/write operation is complete. For write operation a break request may interrupt the NVDS erase-write cycle. If the internal read/write operation is interrupted before completion, the NVDS may be erased and all NVDS data may be lost. 13. The USB Smart Cable is required to implement the following unique connection procedure for the Z8 Encore! XP 8-pin device: 1. Assert the Reset line 2. Send a key on the DBG line to unlock the debug mode 3. Start a break condition on the DBG line 4. Release the Reset line 5. Stop the break condition 6. Initialize the target and continue normal debug operations The reset line will be released at the end of this procedure even if the target initialization fails. The target initialization will fail if the Smart Cable is not physically connected or the or power is not supplied to the target. Cycle the target power if the target is not in reset, debug mode, or failed to initialize prior to starting this procedure. The USB Smart Cable will assert the Reset line if it detects a target power loss. 14. The Serial Smart Cable may not be able to communicate with a target at baud rates of 19200 and less. Use a baud rate greater than 19200. 15. If the Serial Smart Cable is used for debugging, ZDS will enable and select the target's system clock source after performing a reset. If the USB Smart Cable is used for debugging, ZDS will not attempt to change the target's system clock source after performing a reset. The Project>Settings>Debugger>Setup>Clock information may be used at build time and will be referenced during a debug session. 16. Debugging or programming a device that uses the external clock signal (CLKIN) option is not supported when using the Serial Smart Cable. As a workaround, apply the external clock signal to the XIN pin or use the USB Smart Cable. The Serial Smart Cable is not compatible with a Z8 Encore! XP derivative target system that uses CLKIN system clock source because ZDS is not aware of the Z8 Encore! XP CLKIN option and, with the serial (TIM and Smart Cable), attempts to select the system clock source. As a workaround the user may apply the external clock source to the XIN pin instead of the CLKIN pin and operate ZDS as if the target was using an external crystal like one would with the other Z8 Encore! devices. This will allow ZDS to select a “functioning” clock source. Another workaround would be to use the USB Smart Cable because ZDS with the USB Smart Cable won’t enable and select the system clock source. 17. The Z8 Encore! XP F082A and F0823 series 8-pin samples target the simulator and may be used on actual hardware. The Z8 Encore! XP F042A series 8-pin development kit (PN: Z8F04A08100KIT) and its sample project may be used to evaluate the Z8 Encore! XP F082A and F0823 series 8-pin development environment. A project that targets the Z8 Encore! XP F082A or F0823 8-pin device may be used with Z8 Encore! XP F042A 8-pin development kit board but the device feature limitations such as reduced program space will apply. 18. The simulator does not support UART input. 19. The simulator treats halt/sleep instruction as a NOP. 20. ZDS opens a UDP port to search for Ethernet Smart Cables and should be allowed to do so through an active firewall that stands between ZDS and the Ethernet Smart Cable. The firewall may be disabled or configured to grant ZDS the right to open a local UDP port. The local port number is assigned by the host and the foreign port number is 3000. 21. The USB and Ethernet Smart Cables will hold the reset line low if it detects a target power loss. If you need to test the Power On Reset circuit, first disconnect the debug tool from your target and then apply power. 22. Page Erase of internal Flash memory is used as the default to protect user data or programs (i.e. Boot Loaders) in Flash. The user can select mass erase by removing the check mark from the Project > Settings > Debugger tab "Use Page Erase Before Flashing". When Page Erase is selected, note that the debugger will erase all pages within the program's address range prior to programming Flash. The address range is determined by the lowest and highest addresses contained in the .LOD file and those pages and all the pages in between are erased in one step to speed the download process. If the program overlaps a page by a single byte the entire page will be erased. (i.e. For ROM Address Range: 0-38, 8000-FF00, the .LOD download will erase the Flash from 0-FFFF). The Flash Loader can be used if you need to download non-overlapping .HEX files in non-sequential order because the ZDS linker will sort the addresses when the file is created and the Flash Loader can then determine the exact pages to erase. (i.e. For ROM Address Range: 0-38, 8000-FF00 the .HEX download will erase 0-1FF (entire page) and 8000-FFFF). 23. Flash option bits cannot be modified via the Special Function Registers debug window. Please use the Rom Memory Window to change option bits. 24. Due to CPU Families re-grouping, opening projects from previous versions may result to errors due to missing target. Please select or create a new target as a work-around. Compiler, Assembler, Linker/Locator, & Librarian -------------------------------------------------------------------------- 1. The compiler now disallows declaring functions near or far. This usage was previously allowed when static frames were in use, but was never properly supported and its use has not been recommended for some time. A review of the status of this feature found that the unresolved implementation and testing issues surrounding the feature are such that it is best to remove it from the supported compiler interface at this time. 2. Range checking (checking that the tools do not attempt to put a 9 bit value in an 8 bit space) has been restored in the linker. On some existing projects, this may result in warnings such as WARNING (915) (00000040 zsldivinit.obj) --> Expression range error. This error is likely to result from code such as the following: XREF _zsl_g_clock_xdefine ; Defined in linker command file ; … DB _zsl_g_clock_xdefine>>24 DB _zsl_g_clock_xdefine>>16 DB _zsl_g_clock_xdefine>>8 DB _zsl_g_clock_xdefine If _zsl_g_clock_xdefine requires more than 16 bits, this error will occur on the attempts to place its value and the value shifted by 8 bits each in a single byte. The solution in this case is to AND each byte value with FFH: DB (_zsl_g_clock_xdefine>>24) & FFH DB (_zsl_g_clock_xdefine>>16) & FFH DB (_zsl_g_clock_xdefine>>8) & FFH DB _zsl_g_clock_xdefine & FFH (One could also use a single DL instead of four DBs.) A general approach to dealing with this, or other errors coming from the linker, is to turn on “Show Absolute Addresses in Assembler Listings” in the Output page of the linker settings, then examine the listing file for the source in question, zsldevinit.lst in this case, for the address in the linker message. Run-Time Library -------------------------------------------------------------------------- 1. The Zilog default startup files startups.asm and startupl.asm have been modified to allow user code to begin at an arbitrary origin (because it can now be located independently of the interrupt vectors). In general, users can continue to use these startup files without any impact from the modifications, because the linker places the start of user code at a safe location. Any user who wishes to ensure that his user code begins at a specific address should use the LOCATE linker directive to do so. For example, to locate the startup at 38H, add the following in Project->Settings->Linker->Input->Add Directives: locate startup at $38 2. In release 4.10.0, the C standard library typedef size_t was redefined to be of type int, no matter which memory model is in use. In earlier releases, size_t was defined to be char in the small model and int in the large model. Because of the importance and ubiquity of size_t in standard library functions, this caused a variety of subtle bugs. Because of this change, modules and libraries built with pre-4.10.0 releases of the tools will not be compatible with code that is compiled using 4.10.0 or later. Specifically, if your application uses the small model and calls any functions (such as many of the standard library functions) that pass or return a size_t value, the code will not interoperate correctly with older libraries or modules. It is recommended that you rebuild all parts of your application with the 4.10.0 or later tools. IDE -------------------------------------------------------------------------- 1. Options available via Project > Settings... have been reworked for more efficient and correct use. Note that some options that existed in the multiple settings tabs have been moved to the General tab, most notably Generate Debug Information. Refer to the ZDS User Manual, Online Help and FAQ for assistance. 2. The Simulator is now a Debug Tool option, where previously it was a target. This allows the Simulator to better operate more correctly by using target configuration settings. 3. If Tools > Options > General tab > Always rebuild after configuration activated is not enabled but both the previous and new active configurations use the same location for the Project > Settings > General tab > Intermediate Files Directory option, the first build after selecting the new configuration will result in the reprocessing of all of the project’s source files (a rebuild). 4. The Motorola S-record format is not supported. Utilities exist to convert files to the S-Record format from one or more of the formats supported by ZDS II. These may be acquired via the Internet using an Internet search site such as Yahoo or Google. 5. When converting a project to another MCU, please note that the default settings are used from the new MCU. Make sure that you review and copy if needed the settings from the previous MCU project settings(i.e Linker > Address Spaces, ROM, Rdata, Edata ...). ZSL -------------------------------------------------------------------------- 1. The following device series are not supported by ZSL: - Z8 Encore! F0830 Series - Z8 Encore! F083A Series Target Hardware -------------------------------------------------------------------------- 1. Earlier builds of the Z8FMC160100KIT board may exhibit erratic operation when switching from IPO to external clock using ceramic resonator. This may be because C4 and C5 were populated. Remove capacitors C4 and C5 to avoid this behavior. F. CLOSED CHANGE REQUESTS ============================================================================== IDE -------------------------------------------------------------------------- (Fixed in 5.2.0) CR 13342 Can not save all files during a debug session > Alt F-V shortcut. CR 13326 Provide a warning when entering RData lower boundary lower than 20H in the Note section of the project settings->Address Spaces page. CR 13301 ZDS2 crash that related to Editor thread-safe bug. CR 13281 Edit Menu Manage Breakpoints Go to Code does not work when the target file is opened but not focused. CR 13263 When saving a project and the .ZDSPROJ file is locked, a line of text shows in the message window. CR 13236 Missing Z8Encore F1680 ZSL libraries CR 13200 ZDS auto-complete feature doesn't work after the structure third level. CR 7145 Moving the cursor over a variable does not display address of the variable CR 5517 Add ability to watch EQU symbols on the watch window. CR 1397 Sometimes, double-clicking on the error takes to the wrong location of the source code. (Fixed in 5.0.0) CR 13114 Close Window from tool\close window or x button does not ask to save modified file CR 13112 Setting background color to black makes cursor invisible CR 13110 Click and drag in the editor gutter on selecting the whole lines CR 13109 Extraneous text selection by Editor when double-click on build error in the output window. CR 13107 Removed errant edit box on compiler code generation dialog CR 13104 Unkown Switch build error. (Before beta report) CR 13080 Support for windows 7 CR 13042 Can not save read-only file to a different name. CR 12991 Filename is getting converted to uppercase after connecting to debugger main. CR 11778 Add Separate range validation for assembler and C project CR 11763 Can't view symbol window content during run mode. CR 11761 Close Project menu item not asking for save changes. CR 11477 Assembler Page length/width options are not passed to the compiler. CR 11021 The editor should support automactic Indetation of curly braces. CR 10696 Variable name decina or any name starts with dec is not displayed properly. CR 9985 Changes in the code memory does not reflect in disassembly window CR 9422 Font Style is not saved after closing options dialog. CR 4431 IDE will not provide a warning that hex code is larger than the project device size. CR 3587 Color display of the memory is not changed when backspace is hit. CR 3453 Color text is printed in black only CR 2165 Can not print output window using CTRL+P CR 1253 Allow Column highlighting. Hold ALT+ drag the left mouse. Assembler -------------------------------------------------------------------------- (Fixed in 5.2.0) CR 13363 Vector Table machinery wrongly picks up IRQ routines defined in libraries. CR 13318 Jump optimization setting should interact sensibly with compiler-generated code in mixed C & assembly projects. CR 13249 Several problems with assembler correctly enforcing the restricted scope of local and anonymous labels. CR 13240 CONDLIST directive does not interact correctly with NOLIST directive in assembler listing files. CR 13180 Assembler STRUCT/ENDSTRUCT directive should arrange that structure size is a multiple of the alignment requirement. CR 13178 Assembler could optimize instructions that use a signed offset of 0. CR 13059 Assembler should not allow relocatable data in a directive that reserves space, such as BLKB. CR 11893 Reqest for assembler to give warning when unnecessarily inefficient, extended addressing instructions are used. CR 11887 Display PC using only 4 hex digits in the listing file. CR 9601 The assembler should only give a warning message, not an error, when asked to relist an empty object file. CR 1397 If an included file has an undefined symbol and you click on the error message, the display jumps to a location in the wrong source code file. (Fixed in 5.0.0) CR 13068 Assembler fails to issue warning if undefined label is used as the bit operand for BTJZ/BTJNZ instructions. CR 13054 Use of a symbol defined by an ENDSTRUCT directive prior to the definition caused the symbol to be treated as undefined. CR 13052 Use of the IFSAME or IFNOSAME directives inside the false branch of another IF directive terminated the containing IF. CR 13046 Using the GLOBALS or XDEF directive on STRUCT labels causes a fatal linker error. CR 13040 An XDEF'ed EQU-defined symbol causes an error if it in turn depends on an XREF symbol defined in another module. CR 12911 Anonymous labels are not accepted unless followed by a colon. CR 12323 The assembler dies with an internal error, rather than a useful error message, if a symbol is defined and later mistakenly declared EXTERN in the same file. CR 12011 Assembler fails to report an error on XREF symbols used in an EQU expression which it cannot resolve. CR 11894 Assembler fails to report error when unable to disambiguate between opcodes 87 and 97 for LDX. Compiler -------------------------------------------------------------------------- (Fixed in 5.2.0) CR 13382 Encore compiler could make better use of the MULT instruction. CR 13381 Improve Encore implementation of 6 or 7 bit left shifts of an 8 bit value, by using the RR instruction. CR 13376 Numerous improvements to make the compiler listing files more useful and readable. CR 13361 P1 internal error on multi-line macro call of over 250 characters. CR 13332 Improve speed of switch statement execution. CR 13327 For inline assembly, parse the assembly code to reduce likelihood of assembly code and compiler re-using the same registers and hence corrupting data. CR 13297 If the compiler generates LDX instruction with certain addressing modes, the assembler then issues a warning message. CR 13279 Add a pragma to provide greater control over output of warning messages. CR 13232 Compiler not generating prologue/epilogue code for some ISRs when parameter passing via registers is active, leading to unpredictable behavior when those ISRs are active. CR 13209 Bad code generated for some linked list manipulations when far pointers are involved. CR 13189 Compiler does not handlle very long source lines (over 5000 characters) created by trailing backslashes. CR 13185 Compiler generates bad code when trying to convert an address to floating point in a calculation. CR 13181 Front end gets internal error on source code containing a combination of an incomplete struct definition and an improper array declaration. CR 13179 Optimizer "global optimizations disabled" message is reported on the wrong function. CR 13173 Compiler may give internal error when trying to simplify some very specific algebraic identities. CR 12867 P2 internal error for a function pointer in assignment. CR 12510 Problems when typedef names are later used in an array declaration with a fixed array size. CR 12297 P2 internal error when a variable declared volatile is repeatedly shifted within a single complex expression. CR 12199 P1 internal error when user erroneously tries to reference an undefined structure. CR 12115 Hardware routines WRITE_NVDS, READ_NVDS don't work when parameter passing thru register option is selected. CR 11475 Compiler gives internal error, rather than useful error message, when asked to initialize an array member with an expression involving non-integer arguments to the << operator. CR 4018 Reduce errors by not allowing ISRs declared with "interrupt" keyword to take parameters or return values. (Fixed in 5.0.0) CR 13098 Attempting to take the address of a rom variable fails. CR 13048 The optimizer may incorrectly move a variable outside of a loop if its initialized value is used only on the first pass through the loop. CR 13026 The compiler improperly may change the number of consecutive accesses to volatile variables, or the order of accesses to different volatile variables. CR 13024 In debug information, the compiler sometimes places the line number after some instructions, causing breakpoints to be slightly out of their proper locations. CR 13020 The compiler improperly optimizes away successive reads of a register into separate volatile variables. CR 13018 The compiler dies with an internal error, rather than a useful error message, if a non-existent structure member is referenced (e.g. due to a typo). CR 13017 Bad code is generated for subtraction of the constants 254 or 255 from a short int variable. CR 12998 The compiler doesn't accept the (strictly speaking illegal, but now common) use of const-qualified variables as array dimensions. CR 12985 Concatenation of 3 strings fails if the middle one contains only a single character. CR 12963 The compiler may incorrectly generate an indirect operand when it should be a literal value, for bitwise operations on volatile variables that are not grouped with parentheses. CR 12590 Concatenated strings containing newlines are not handled properly. CR 12578 If a function argument is pre-incremented, the compiler skips the function call. CR 12569 Use of sizeof() inside complex expressions can generate incorrect code unless all constants are moved to the beginning of the expression. CR 12527 Internal error when user tries to increment the address of a structure member. CR 12477 Error in pointer arithmetic code, due to the type result of an additive expression not being handled in accordance to the ANSI standard. CR 12377 The pragma noglobalopt is not gunctioning properly. CR 12376 The pragma noopt is not functioning properly. CR 12373 No warning is given if not all paths through a function return a value. CR 12299 Over-aggressive optimization rekated to temporary variables resulting in an irrelevant warning message. CR 12291 __FILE__ macro problem when the file path involves a directory whose name begins with an octal number. CR 11948 Overoptimization wrongly removing code due to erroneous copy propagation algorithm. CR 11915 Internal error caused by erroneous local common sub-expression optimization. CR 11272 Compiler error message for complex while() condition involving pre-incremented pointer. CR 2412 Compiler improperly fails to generate code to freshly load the value of a pointer that could have been changed by an intervening function call. Librarian -------------------------------------------------------------------------- (Fixed in 5.2.0) CR 10053 Librarian gives error if you try adding multiple modules on a single command line. Linker -------------------------------------------------------------------------- (Fixed in 5.2.0) CR 13259 Linker crashes if Linker Command File refers to non-existent address space. CR 13229 Memory usage display can show negative numbers for RDATA usage when static frames are in use. CR 12994 If a segment is empty, it isn't placed at the correct location specified by the LOCATE directive. (Fixed in 5.0.0) CR 13101 Give clearer error messages to indicate overall failure of a build. CR 13083 Give a more useful display of addresses for segments that have the linker command CHANGE applied to them. CR 13000 The linker should issue a warning if any variables are placed in Rdata addresses E0-EF, conflicting with Encore escaped addressing. CR 12606 User requests that information about the usage of ROM and RAM be output in the build window at compile time. CR 9754 When both the relist and CHANGE directives are used, wrong absolute addresses may be shown for _TEXT sections. CR 6224 Linker doesn't warn about out-of-RAM condition when static frames are used. CR 2781 The relist operation sometimes gives error messages when the CHANGE directive is in use. Run-Time Libraries -------------------------------------------------------------------------- (Fixed in 5.2.0) CR 13335 Add printf/scanf support for Near/Far/Rom pointers. CR 13323 If a negative floating point value which is exactly equal to an integer is converted to an integer, its sign is wrong. CR 12507 The declaration of the standard function memmove() in string.h is wrong. CR 2532 Minor numerical inaccuracy, near the limit of single precision, in pow(). (Fixed in 5.0.0) CR 13092 In the small model, if malloc() fails to obtain as much memory as requested, it endlessly loops attempting to get more memory, instead of returning NULL as it should. CR 13002 At user request, __intrp has been moved from the standard startup into the chelp library. CR 13001 At user request, errno has been moved from the standard startup into the standard C library. G. OPEN CHANGE REQUESTS ============================================================================== IDE -------------------------------------------------------------------------- CR 7918 During the loading of large projects (those with a large number of files and/or file dependencies), the ZDS user interface may become non-responsive. CR 5519 External dependencies generation/display ignores project preprocessor defines. CR 5517 Unable to watch large EQU symbols on the watch window. CR 4431 IDE will not provide a warning that the hex code file is larger than the project device size when using Load from File on the code memory window. CR 3852 In assembly files, the ".r" or ".rr" designators are not correctly chroma coded. CR 3711 Hex files that use \r as a line ender are not supported. CR 3210 Local watch window does not display negative values CR 2731 When the program is running in the debugger, the program counter indicator (yellow arrow) is still displayed at previous location. CR 1650 After single-stepping through a function call, the program counter indicator returns to the calling line instead of the next executable line. CR 1638 Customized workspace not restored properly. Appears to be reset when application restarted. CR 1397 Double-clicking on the error sometimes places the cursor in the incorrect location. CR 1177 Resizing the debug windows is difficult and behaves inconsistently.