The latest version contains the following features:

- General IDE enhancements
- Fully integrated assembler editor
- Content outline and source folding
- Content assist and code completion
- Hyperlink navigation
- Hex Editor
- Graphics Editor
- Preferences for editing
- Preferences for assembling and compiling
- Annotations for assembling and compiling
- Known Bugs
- Planned features

##### General IDE enhancements » top

- "Open Folder" context menu available for all folders and files
- "Sort" context menu with sub-menu available for all text files including
  - Case sensitive, case insensitive, and numeric sorting
  - Sorting with and without removal of duplicates
  - Reverse ordering
- The online help contains the entry "WUDSN IDE Guide" which contains multiple sections.
  - WUDSN IDE - mainly the documentation from the web site
    - Video links to the tutorial and release news
    - Features
    - Installation
    - FQA
    - Link
  - Assemblers - the information on the supported assemblers and their properties
    - General - links, syntax, and support features
    - Instructions - all supported instruction including their descriptions grouped by type
    - Manual - direct access to the PDF, HTML, or text manual file or files which are part of the compiler installation
  - Hardware - the information on the supported hardware types and the corresponding emulators and links
    - Reference documentation - Hardware specific PDF, HTML, or text files with CPU and customer chips reference sheets and programming guides

##### Fully integrated assembler editor » top

- The Eclipse platform contains editors like for example the generic text editor. Editors can support one or more content types identified by file extensions. One editor can be the default for a specific file extension. WUDSN IDE provides an assembler editor and a corresponding content type for every compiler. Every assembler editor has a default compiler associated which in turn defines via the preferences which application is used to run the output file.
- New content types and file associations for Atari 2600 compilers
  - DASM Source File (*.asm)
- New content types and file associations for Atari 8-bit compilers
  - ATASM Source File (*.asm)
  - MADS Source File (*.asm, default)
  - XASM Source File (*.asx, default)
- New content types and file associations for C64 compilers
  - ACME Source File (*.a, default)
- New content types and file associations for NES compilers
  - ASM6 Source File (*.asm)
- The default editor for an extension can be configured in section "File Associations" of the preferences with the button "Default"
- Syntax highlighting colors and styles for comments, directives, all types of identifiers, legal opcodes, illegal opcodes, pseudo opcodes, and strings
- Single line comments for the current line selection can be toggled using "CTRL-7" or the editor context menu entry "Toggle Comment"
- Configurable support for 16-bit opcodes of 65816
- Built-in support for ATASM assembler, MADS assembler, XASM assembler, ACME assembler
- Built-in support for running compiler output files with the operating system default application without configuration effort
- Built-in support for Altirra emulator, Atari800Win emulator, Atari800MacX emulator, Atari++ emulator
- Adding support for new compilers and application is possible via Eclipse extension points
- Compile or compile and run with a single keystroke or via the menu
- Toolbar button for "Compile and Run" which adapts to the hardware of the currently opened editor, for example, it will show a C64 icon when using the "ACME (C64)" editor
- The toolbar button for "Compile and Run" offers a pulldown menu that allows running the output file with any of the applications configured in the preferences. This way you can run the output file easily with different emulators without changing the preferences. That can be very helpful if one emulator shows different behavior than another or in case you have specified a build script as a user-defined application in the preferences
- Open source and output folder directly from the menu
- Open compiler help directly from the menu if the documentation is available in the default folder structure of the compiler executable
- Complete list of compiler error and warning messages in the problems view
- Direct navigation to the source location of the via double click on the problem message
- Problem markers in the scroll area including tooltip with problem message
- German localization for all Eclipse plugin texts. The original compiler messages are not translated but some are mapped automatically
  - ATASM ".bank" warnings are mapped to info messages
- Console view with original compiler output opens automatically in the background after compiling which useful in cases where the plugin is not yet complete. The "Compiler Console" is automatically brought to front when the compiler starts. This prevents the compiler output from being hidden behind other consoles in the console view

##### Content outline and source folding » top

- Activated via the standard menu "Window/Show View/Outline"
- Automated asynchronous parsing while typing
- Automated recursive parsing of source includes and merge with the current outline
- Positioning in the content outline remains stable while typing unless structure changes appear
- Folding is activated automatically when the outline is visible
- Folding for if/else/endif blocks
- Outline and folding for definition section and implementation sections
- Outline for equate definitions (including defining expression), label definitions, and variable definitions
- Outline and folding for enum and struct definitions
- Outline and folding for macros definitions
- Outline and folding for repeat sections
- Outline and folding for procedure definitions
- Outline and folding for local sections
- Outline for source includes and binary includes
- Type-specific outline icons
- Nested folding with tooltip for folded sections
- Line end comment is used as a short description
- Toolbar with a button to toggle the sorting order of the sections and labels. The state of the button is persisted automatically along with the respective source file. For files that do not have a setting yet, the setting from the currently opened file will be used

##### Content assist and code completion » top

- Content assist by pressing CTRL-Space for directives, legal opcode, illegal opcodes, and pseudo opcodes
- The content assist also recognizes if there is already an instruction in the current line and suggests the available identifiers instead if this is the case. This is the first version and it supports global identifiers in the current source file and source file included from there. Scoped identifiers of the form "a.b" are not yet supported
- Completion proposal auto-activation without pressing CTRL-Space after typing compiler dependent characters, for example "." in ATASM, "." or "#" in MADS and "!" in ACME
- Type-specific icon and mnemonic highlighting
- Progressive filtering as you type
- Automatic detection of lower case / upper case based on current input
- Default case configurable in preferences
- Illegal opcodes can be hidden via preferences
- 16-bit opcodes of 65816 can be hidden via preferences
- Multi-line content completion and explicit cursor positioning, for example ".MA" becomes ".MACRO <cursor is here> <newline> .ENDM"

##### Hyperlink navigation » top

- Hyperlink navigation via CTRL-click to source includes and binary includes
- Support for relative and absolute file paths
- Source files are always opened with the same assembler editor, irrespective of the extension
- The ".asm" extension for "ICL" source includes is appended automatically in MADS, if it is missing
- The ".asx" extension for "ICL" source includes is appended automatically in XASM, if it is missing
- Option for binary includes for opening the file with
  - the built-in hex editor
  - the built-in graphics editor
  - the default Eclipse editor (e.g. a text editor)
  - system editor (e.g. an emulator or a paint program)
- Hyperlink navigation via CTRL-click to labels equates, local definitions, macro definitions, and procedure definitions. In case there is only one target, direct navigation takes place. In case there is more than one possible target, the type and line number of the target are displayed in a hyperlink popup. All included source files are also taken into account like in the content outline. In case there are targets from different files, the file name is also displayed as a differentiator in the hyperlink popup.

##### Hex Editor » top

- Read-only hex editor to inspect arbitrary files
- Available via context menu including multi-file-selection to open several files at once
- The "Open With Hex Editor" menu entry closes an existing editor in case the file is already opened and thereby forces the file to be opened with the hex editor. In addition, the hex editor is set as the default editor for this file. As a consequence double-clicking the file in the package explorer will open it automatically with the hex editor, no matter which type of file is actually is. This saves you from always using the context menu, just because the file has no known file type. You can change the default editor again by just using the "Open With" context menu entry
- Available via hyperlink navigation for binary includes
- Context menu to copy parts of the file into the clipboard in different formats:
  - hex values (".byte $01,$02,...")
  - decimal values (".byte 1,2,...")
  - ASCII string
  This is very helpful to turn parts of a file into source code. The possibility to copy/paste into the binary file itself in order to modify is prepared but not working yet and will be completed later.
- Support for binary files, Atari COM files, and Atari Disk Images
- The possible file modes for a binary file are computed automatically and used as default when opening the file
- Unsupported file modes are detected and cannot be used
- Files with a block structure get an outline in the outline view
- Files with a corrupted block structure are detected and displayed as good as possible

##### Graphics Editor »

- Viewer for binary files and 8-bit image files.
  The most suitable supported converter and the corresponding default parameters are computed based on the file content, size, and extension.
  The converters for the Atari standard image formats are based on RECOIL fka. FAIL, the excellent First Atari Image Library created by Piotr Fusik and Adrian Matoga.

  Platform | File Extension | File Format
  --- | --- | ---
  Atari 8-bit | AP3 | 80x192, 256 colors, interlaced
  Atari 8-bit | APC | Any Point, Any Color, 80x96, 256 colors, interlaced
  Atari 8-bit | CHR | 8x8 charset, mono or multicolor
  Atari 8-bit | CCI | Champions' Interlace, 160x192, compressed
  Atari 8-bit | CIN | Champions' Interlace, 160x192
  Atari 8-bit | CHG | Gephard Hires Graphics, up to 320x200, mono
  Atari 8-bit | CPR | Trzmiel, 320x192, mono, compressed
  Atari 8-bit | FNT | Standard 8x8 font, mono
  Atari 8-bit | GR8 | Standard 320x192, mono
  Atari 8-bit | GR9 | Standard 80x192, grayscale
  Atari 8-bit | HIP | Hard Interlace Picture, 160x200, grayscale
  Atari 8-bit | HR | Hires 256x239, 3 colors, interlaced
  Atari 8-bit | HR2 | Hires 320x200, 5 colors, interlaced
  Atari 8-bit | ILC | APAC 80x192, 256 colors interlaced
  Atari 8-bit | INP | Interlace Picture 160x200, 7 colors, interlaced
  Atari 8-bit | INT | INT95a, up to 160x239, 16 colors, interlaced
  Atari 8-bit | MCP | McPainter, 160x200, 16 colors, interlaced
  Atari 8-bit | MIC | Micropainter 160x192, 4 colors
  Atari 8-bit | PIC | Koala MicroIllustrator, 160x192, 4 colors, compressed
  Atari 8-bit | PLM | Plama 256, 80x96, 256 colors
  Atari 8-bit | RIP | Rocky Interlace Picture, up to 160x239
  Atari 8-bit | SXS | 16x16 font, mono
  Atari 8-bit | TIP | Taquart Interlace Picture, up to 160x119
  C64 | 64C | Charset, mono or multi color
  C64 | SPR | Sprite, mono or multi color

- Viewer for GIF/JPG/BMP/PNG images
- Available via context menu including multi-file-selection to open several files at once
- The "Open With Graphics Editor" menu entry closes an existing editor in case the file is already opened and thereby forces the file to be opened with the graphics editor. In addition, the graphics editor is set as the default editor for this file. As a consequence double-clicking the file in the package explorer will open it automatically with the graphics editor, no matter which type of file it actually is. This saves you from always using the context menu, just because the file has no known file type. You can change the default editor again by just using the "Open With" context menu entry
- Available via hyperlink navigation for binary includes
- Conversion from binary files or 8-bit images files to GIF/JPG/BMP/PNG images
  - Up to different 3 source files depending on the converter
  - Configurable start offset for every source file, useful for extracting character sets
  - Configurable palette via the Image Palette view
  - Configurable number of rows and columns
  - Configurable spacing width for and spacing color to separate tiles and unused areas
  - Separate aspect ratio for display and saving the image file
- Conversion from GIF/JPG/BMP/PNG images to binary files or 8-bit images using JavaScript.
  - Separate aspect ratio for loading and displaying the image file
  - Default scripts are included. They can be adjusted and saved along with the other parameters
- The image palette view associated with the graphics editor displays the palette entries and the color histogram. It supports filtering of unused colors, sorting by index and color frequencies, pre-settings, and editing the palette when displaying 8-bit images
- Conversion files with extension ".cnv" are used to save the conversion direction and all conversion parameters
- Support for relative file paths. If the file path is in the same folder as the ".cnv" file, it is automatically converted to a relative file path when the file name is defaulted or picked from the file browser dialog. This allows to move the ".cnv" file and the referenced source files around together without breaking the saved paths

##### Preferences for editing » top

- Available via entry "Preferences" from the menu "Window" (in Windows and Linux) or the menu "Eclipse" (in Mac OS X)
- Configuration of syntax highlighting colors and styles for comments, directives, all types of identifiers, legal opcodes, illegal opcodes, numbers, pseudo opcodes, and strings
- For non-unique identifiers, the syntax highlighting will try to be the best guess
- Configuration of default case in content assist

##### Preferences for compiling » top

- Available via entry "Preferences" from the menu "Window" (in Windows and Linux) or the menu "Eclipse" (in Mac OS X)
- Separate compiler preferences page for every type of hardware, i.e. Atari 8-bit and C64; Apple 2 support is in development by Nick Westgate
- Preferences can be maintained for all compilers in parallel
- Upon opening the compiler preferences, the tab for the compiler of the active editor is activated automatically
- Configuration of illegal opcodes and 65816 opcodes support in syntax highlighting and content assist
  The configuration is offered only if the compiler supports the respective feature
- Download links, configurable paths, and default parameters for all compilers
- The default file extension filter is set to "*.exe" on Windows and "*.*" on all other operating systems
- The button "Apply Defaults" does explicitly not reset the paths to the executables
- Configuration of parameters per compiler including predefined defaults to run out-of-the-box
  Possible variables are:
  - {$sourceFolderPath} The absolute path to the source folder
  - {$sourceFilePath} The absolute path to the source file
  - {$outputFolderPath} The absolute path to the output folder
  - {$outputFilePath} The absolute path to the output file
  - {$outputFileName} The name of the output file including its extension, for example "TestFile123.asm"
  - {$outputFileNameWithoutExtension} The name of the output file without extension, for example "TestFile123"
  - {$outputFileNameShortWithoutExtension} The name of the output file without extension shortened to 8 alphanumeric characters, for example "TESTFILE"
  Make sure that you don't remove parameters when you specify your own values
  If not, either creating the label definition file or parsing the compiler log may fail
  - ATASM requires the "-s" parameter to be present"
  - MADS requires the "-p" parameter to be present
  - ACME requires the "!to" directive in the source to be commented out to ensure the output file name from the command line is used
- Preferences can be maintained for all possible applications of all compilers in parallel
  - Possibility to use the "Operating System Default Application" of the platform to open the output file
    For Windows and Mac OS X choosing the "Operating System Default Application" means that for ".xex" file the emulator will be started automatically without any further configuration
  - Possibility to use one of the pre-defined applications and optionally change the command line
  - Possibility to use a user-defined application to open the output file
  - Possible variables are:
    - {$runnerExecutablePath} The absolute path to the executable of the application
    - {$sourceFolderPath} The absolute path to the source folder
    - {$sourceFilePath} The absolute path to the source file
    - {$outputFolderPath} The absolute path to the output folder
    - {$outputFilePath} The absolute path to the output file
    - {$outputFileName} The name of the output file including its extension, for example "TestFile123.asm"
    - {$outputFileNameWithoutExtension} The name of the output file without extension, for example "TestFile123"
    - {$outputFileNameShortWithoutExtension} The name of the output file without extension shortened to 8 alphanumeric characters, for example "TESTFILE"
- Download links, configurable paths, and default command lines for Atari++, Atari800Win, Atari800MacX emulators per compiler
- The default file extension filter is set to "*.exe" on Windows and "*.*" on all other operating systems

##### Annotations for compiling » top

- For most use-cases, the defaults provided for the compilers and in the preferences are sufficient. But if you want to develop in parallel in multiple projects, for different platforms (Apple II and Atari 8-bit) or in different output formats (".XEX" and ".BIN") with the same compiler it may become cumbersome to change the preferences every time. Therefore WUDSN IDE offers annotations that you can put into the source code files. These annotations override the defaults and the preferences.
- All annotations start with the prefix "@com.wudsn.ide.asm." followed by the lower case name of the annotation, an equals sign, and the unquoted value. Example: "@com.wudsn.ide.asm.hardware=ATARI8BIT"
- All annotations can be placed in comment lines at the beginning of a source file. Some of the annotations are only relevant for the main source file, some are only relevant in include source files, some are relevant for all source files.
- @com.wudsn.ide.asm.hardware
  - Defines the target hardware for which the preferences shall be evaluated, in particular, which emulator is used to run the output file.
  - Allowed values are "APPLE2", "ATARI2600", "ATARI7800", "ATARI8BIT", "C64", "NES".
  - This annotation is relevant for all source files.
  - This annotation is only evaluated when a file is opened. So if you add this annotation or change its value, you have to close and re-open the file once.
  - Example: @com.wudsn.ide.asm.hardware=ATARI8BIT
- @com.wudsn.ide.asm.mainsourcefile
  - Defines the main source file to which the current include source file belongs. When the "Compile" action is executed, the main source file is compiler instead of the current file.
  - Allowed values are file paths relative to the folder of the current include source file and absolute file paths.
  - This annotation is only relevant in include source files.
  - Example: @com.wudsn.ide.asm.mainsourcefile=ExampleMain.asm
- @com.wudsn.ide.asm.outputfoldermode (planned for 1.7.0)
  - Overrides the "Output Folder Mode" from the preferences.
  - Allowed values are "SOURCE_FOLDER", "TEMP_FOLDER", "FIXED_FOLDER".
  - This annotation is only relevant in the main source file.
  - Example: @com.wudsn.ide.asm.outputfoldermode=SOURCE_FOLDER
- @com.wudsn.ide.asm.outputfolder (planned for 1.7.0)
  - Overrides the "Output Folder" from the preferences and the "@com.wudsn.ide.asm.outputfoldermode" annotation.
  - Allowed values are file paths relative to the folder of the main source file and absolute file paths.
  - This annotation is only relevant in the main source file.
  - Example: @com.wudsn.ide.asm.outputfolder=..\out
- @com.wudsn.ide.asm.outputfileextension (planned for 1.7.0)
  - Overrides the "Output File Extension" from the preferences.
  - Allowed values have to start with a period.
  - This annotation is only relevant in the main source file.
  - Example: @com.wudsn.ide.asm.outputfileextension=.bin
- @com.wudsn.ide.asm.outputfile (planned for 1.7.0)
  - Overrides the "Output Folder", "Output File Extension" from the preferences and the automatic computation of the out file name based on the main source file name.
  - Allowed values are file paths relative to the folder of the main source file and absolute file paths.
  - This annotation is only relevant in the main source file.
  - Example: @com.wudsn.ide.asm.outputfile=..\out\output.bin

##### Known bugs » top

Open bugs:

- If you find any, please contact me

Fixed bugs:

- 1.6.5
  - Automatic creation of ".DSK" disk images for Apple II now works correctly
  - The dirty indicator in Graphics Editor is now updated correctly
- 1.6.4
  - The toolbar icons now work correctly with newer Eclipse versions
  - Atari 8-bit Graphics 12 Converter works again
  - Graphics editor now properly closes input stream for image files
  - Empty selection and too large numbers no longer lead to exceptions when opening the context menu for "Convert..."
  - Pressing refresh in the graphics converter now always updates the image pane correctly and not only if the size has changed
  - Inline repeats like ":64" in MADS are no longer detected as labels
  - Hex Editor now correctly detects erroneous COM files in case the segment length exceeds the file length (by one)
  - Disk images (for Apple II) are now updated also if only "Compile" instead of "Compile and Run" is used
  - Apple Commander integration is now part of the installation, as it should have been with 1.6.3
  - The HELLO program generated for the auto-start disk images of Apple II now displays a title and uses "BLOAD/CALL" instead of "BRUN" because of this bug in Apple DOS

        10 PRINT "Loading <title>" : PRINT CHR$(4);"BRUN WORLD" : CALL <address>

- 1.6.3
  - The first character of numbers is now correctly highlighted in #123
  - Source file includes via "INCSRC" are now correctly detected for ASM6
- 1.6.2
  - Typing a "." to trigger the automatic content assist no longer locks-up
  - The default color for illegal opcodes changed to red as it was intended
  - German localization for the graphics editor is finally completed
  - Sorting of application in the preferences now is "Default, A...Z, User Defined" also in non-English localizations
- 1.6.1
  - Clicking in the outline always positions the cursor correctly in the source, not only the first time
  - All names of content types are now translated correctly in the preferences
  - "Open Folder" command now also works for objects which are no resource or file themselves but can be adapted to one of these types. For example project explorer entries for Java classes
- 1.6.0
  - Hyperlink navigation now also works for labels that contain an underscore
  - The key binding for the "Compile" menu is now "Shift-Ctrl-9" because it turned out that "Ctrl-0" is not available in all cases
  - The HexEditor is now also detecting the situation that the first block of a COM file is incorrect and display this correctly
  - Content assist has now correct new lines when inserting #IF, #WHILE and .TEST
  - Fonts and colors resources are disposed of correctly now
  - Resetting to default syntax colors in the preferences works now
  - Elements of .ENUM are recognized as equates now also if they do not start of position 0
  - Elements of .STRUCT are recognized as labels now also if they do not start of position 0
  - The cursor is now positioned to the first character of an equate or label also if it is not defined starting at position 0
  - The cursor is now positioned to the first character of an equate or label also if it is not defined starting at position 0
- 1.5.0
  - Syntax highlighting remains active now also after "Save as..."
  - The cursor is now placed correctly by content assist
  - The key binding for the "Compile" menu is now "Ctrl-0" instead of "Ctrl-Alt-0", so entering "}" is now possible again
  - XASM editor now correctly detects the "ORG" directive
  - The assembler editor toolbar contribution now also displays the label "Assembler" in the customizing dialog for the perspective
- 1.4.4
  - The directive ".LOCAL" in ATASM is a normal directive now and does not start a folding section while in MADS it is really is a folding section from ".LOCAL" to ".ENDL"
  - "SIN()" and "RND()" in MADS are now recognized correctly even if there are no spaces before or after the directive
  - ".EN" and ."END" in MADS are now recognized correctly
  - Labels in "ORG" lines are now recognized correctly and rendered as separate tree entries
  - Preferences for lower/upper case instructions in content assist are now also evaluated if for directives that do not start with letters like ".end"
  - When opening a file that is located outside of the workspace, the actions to open folders and to compile the file are now not doing anything and will not cause exceptions. They will also be disabled once the new Eclipse version is mandatory
  - The 16 bytes per row in the hex editor are now separated by a space
- 1.4.3
  - The output file is not opened anymore in case it has been there before but was not updated by the compiler due to compiler errors
  - The scroll bar and cursor in the editor are now stable also in the cases when the outline is changed by the latest user input
  - The hex editor now gets the focus correctly also when clicking on already opened files
- 1.4.2
  - The folder which contains the output file and the symbols file is refreshed automatically after compiling to ensure that the Eclipse resource cache is in sync with the file system
  - Line end comments are now used as a description for source and binary includes in the content outline
  - The "Open Folder" context menu entry works again, a bug was introduced in version 1.4.0
- 1.4.0
  - The "Assembler" menu is visible now only if an Assembler editor is active. The contained entries and their short cuts are now disabled if no Assembler editor is active
  - The output file is not deleted anymore before the compiler is started, instead, it is only checked for being writeable. This allows for direct compilation into an existing ATR image
  - The name of the application used to open the output file is now included in the info message
- 1.3.2
  - The content outline sometimes only found the first macro definition
  - Folding did not show up in all situations
  - Under Mac OS X, the file select dialog can now choose an "*.app" application-like "Atari800MacX.app" since this is a folder. The solution is a workaround to the general Eclipse problem under MacOS X, see BUG 82155
- Before 1.3.2
  - The "OK" and "Apply" buttons in the preferences are now always enabled, irrespective of the specified compiler and emulator paths
  - The focus is not back in the editor window after compiling
  - The syntax highlighting of illegal opcodes fixed, now also uses the preferences setting
  - On German operating systems, the properties for the correct locale are now found

##### Planned features » top

- See the table below for the current feature set for the features which depend on the compiler.
  Features that are not supported by the compiler itself and hence cannot be supported by the IDE are marked as "n/a".

  Compiler | Default Hardware | Auto-Completion Activation | Single-Line Comments | Block Comments | Strings | Opcodes | Directives | Compile Log Parsing | Include Log Parsing | Content Outline | Label Definition File Format
  --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
  ACME | C64 | Yes: ! | Yes: ;| | n/a | Yes: " | Yes | Partly | Yes | TBD | Partly | ACME
  ATASM | Atari 8-bit | Yes: . | Yes: ; | n/a | Yes: " | Yes | Yes | Yes | TBD | Yes | XASM 3.0.1
  MADS | Atari 8-bit | Yes: . # | Yes: ; * // | Yes | Yes: ' " | Yes | Yes | Yes | TBD | Yes | MADS
  XASM | Atari 8-bit | n/a | Yes: ; * | | n/a | Yes: ' " | Yes | Yes | Planned | TBD | Yes | XASM 3.0.1