FAQ

Here you can find the answers to some frequently asked questions. If your question is not answered here, please have a look at the video tutorials or contact me.

Installation

How to I install Eclipse at all?

If you are not familiar with Eclipse at all, make sure that you have installed the Eclipse platform distribution only - without Java or J2EE tools. This distribution is much smaller (normally around 50-70 MB instead of 170 MD) and will not confuse you with tons of features and buttons you do not need at all. See the section "Installing Eclipse" on the tab "Installation" for the required steps. If you use Windows, you can use one of the zero installation distributions of WUDSN IDE which are linked on the tab "Installation". They are simply ".zip" archives that already contain Eclipse and everything else."

When I try to start Eclipse is get an error like "Failed to load the JNI shared library 'C:\Program Files (x86)\Java\jre6\bin\client\jvm.dll'". What is wrong?

The Eclipse version and the Java version on your system are not compatible. The Eclipse is not pure Java, but uses platform specific native libraries to run and debug Java efficiently. For example you must install the 64-bit version Java (JRE or JDK) if you want to use the 64-bit version of the Eclipse. This is a frequent issue under Windows 7, because be default there is only the 32-bit version of Java installed. See the section "Installing Eclipse" on the tab "Installation" for the required steps.

How to I use Eclipse at all?

Start the build-in help of Eclipse via the menu "Help/Help Content" and read the section "Workbench User Guide".

Workbench user guide

Why is WUDSN IDE not available via the update site?

Most likely you typed in the wrong update site URL, for example using "wusdn" instead of "wudsn". The correct URL is "http://www.wudsn.com/update". In addition you should disable the checkbox "Hide items that are already installed", so you see what really is there. See the section "Installing WUDSN IDE" the tab "Installation" for the required steps.

Installation dialog with update site

Why do I get "Unable to read repository at ... Read timed out" when accessing the update site?

This error message indicates the the Eclipse program is somehow blocked from accessing the site. If you are behind a proxy server, check the general proxy server setttings in the Eclipse preferences. If you use a firewall or internet security tool, make sure "Eclipse.exe", "java.exe", "javaw.exe" or the corresponding program on your host platform are allowed to cannot to the internet. Maybe you have to change the settings, so you are prompted to allow access interactively.

Why is the "Assembler" section not visible in the preferences?

If the WUDSN IDE specific sections and features are not visible after a successful installation, you are probably using an outdated Java version. For example Java 1.6 is out of maintenance since 2013/02 . This seems to be a common problem on Mac OS X even in Mavericks (10.9), which still uses Java 1.6 by default. Make sure you have at least the Java version that is mentioned in the installation section for the IDE installed and that Eclipse is actually started using that version.

Configuration

Why do I see wrong messages in the "Problems" view?

The default configuration of the "Problems" view show all error from all files in the current project. While this is a good default for Java programming, it does not fit at all for compiling single independent assembler files. Therefore you have to configure the "Problems" view accordingly. See the section "Installing Eclipse" on the tab "Installation" for the required steps.

How to I associate my source file extensions with the correct editor?

The IDE support many different compilers and provides a specialized editor for each of them. Typically you have some preferred source file extension (".asm" or ".a") and a preferred compiler. The procedure to associate the file extension with the editor via the preferences is described in this video tutorial WUDSN IDE Tutorial 3: Setting up Editors and File Extensions correctly .

Why do I have to put ;@com.wudsn.ide.asm.hardware=...in the source file?

The association with the file extension with the editor for your compiler (that is done in the preferences, see before) does not determine for which platform you want to create output. Therefore this additional annotation in the main source file is required used to tell the IDE which is the target platform. It is used to fine the correct compiler and emulator setting, which can be different per platform. Every compiler has a default platform (see the online help in the IDE) but can also be used to every other platform. Therefore you have to specify the target platform in the main source file, if you use a non-default platform.

Editing

Is there support for source version control?

Yes, there are several plugins available to connect Eclipse to CVS or subversion. Also the "Local History" feature is installed by default. You can configure it in the preferences. It automatically records all changes to the source file and let's you compare versions in-place.

Source version control

Is there support for block selection mode?

Yes, there is a toolbar button and the shortcut "ALT+SHIFT+A" to toggle block selection mode in all text editors. This can be very useful for adding and removing common prefixes such as line numbers.

Toggle block selection mode

In case the toolbar button is not visible, you have to set it to visible via the menu entry "Customize Perspective" in the context menu of the main toolbar. In the customizing dialog you have to activate the commend group "Editor Presentation" and then the toolbar entries you want to see.

Toggle block selection mode

Why does CTRL-Space not open content assist?

There is a known key conflict when using Messenger Plus Live! v4.85.0.386 with Microsoft Messenger 2009 on Windows 7 Ultimate. This may also occur in other version of course. Justin Payne has provided the following description of the solution.

  1. Start up and log into MS Messenger.
  2. From the main window, hit the ALT key to bring up the main menu and select "Plus! | Preferences & Options".
  3. From the Preferences Windows, Select the Messenger tab and uncheck "Activate Messenger Lock with a system-wide shortcut" OR change the value in it's text box to something other than "CTRL + Space"
  4. Select OK button.

Why do CTRL-SHIFT-0/9 and other key combinations not work?

You probably have another program outside of Eclipse that has already captured these keys or key combinations. A frequent problem is the Windows Input Methods Editor (IME) which is used to switch keyboard layouts. For example if you are using multiple keyboard layouts, the CTRL-Space is mapped to allow you to cycle between the different keyboard regional layouts. You should probably be aware of how to turn the feature off since you're probably using this features, but if you don't...

Windows 7

  1. Within "Windows Control Panel", open "Region and Settings".
  2. Select the "Keyboard and Languages" tab, select "Change Keyboards...".
  3. In the "Text Services and Input Languages" windows, select "Advanced Key Settings".
  4. In the "Hot Keys for input languages" list box, select "Between input languages" and then select "Change Key Sequence..."
  5. In the "Change Key Sequence" window, choose another radio button other than the one next to CTRL+Shift. At best you choose "(None)".
  6. Click OK until you closed all popup windows.

Windows 10

  1. Open "Control Panel\Clock, Language, and Region\Language\Advanced settings.
  2. Click "Change Language bar hot keys".
  3. Set all key sequences to "(None)".
  4. Click OK until you closed all popup windows.

Of course, this is Windows 7/10 and we know how Microsoft loves to change their layouts and names, but for fact this option is available back to Windows XP.
Configure Windows IME hot keys

Compiling

Why is MADS the primary compiler?

When I started with WUDSN IDE, ATASM was the first supported compiler. The reason was simple: 90% of my sources are in ATASM format. ATASM is very comprehensive and fast. Its capabilities to define constants an byte sequence is very complete (".BYTE", ".WORD", ".DBYTE", ".FLOAT", ."SBYTE" for ATASCII, ".CBYTE" for terminated strings, separate offset for all constants). Over time additional platform compilers haven been added and support for them will be completed step by step. When the support for MADS was rather complete, I found that it is the most powerful compiler I have ever seen and used. The support for ".PROC/.ENDPROC" has revolutionized the way I write assembler code now. It allows logical structuring and visibility control without any runtime overhead. At the same time MADS is compatible to MAC/65 and XASM and even ATASM sources can be adapted to MADS with a few minor changes described below. Therefore MADS is the primary compiler since WUDSN IDE version 1.6.0.

Why do I get the error "No ORG defined" when compiling the example from the tutorial?

Since WUDSN IDE version 1.6.0 MADS is the primary compiler which is registered for the file extensions ".asm" upon installation. You are trying to run the code example for version 1.5.0 or before, which is in ATASM format. Therefore you can either

Why are the errors and warnings from an include file assigned to the main source file in the problems view?

You use a case-insensitive file system and have used different upper or lower case writing in the source include statement than in the actual file system. For example you have written "ICL 'example.asm'" for a file named "Example.asm" on the file system. In Eclipse the file names of all resources are treated as case-sensitive, even if the underlying file system is case-insensitive. Therefore the file name issued by the compiler will no match with the file name of the source include. As a fall-back, the IDE assigns the error message to the main source file. To fix this, you have to adapt the spelling of the file name in the source include statement.

How to I convert an ATASM source for to MADS format?

Because both ATASM and MADS syntax are based on the MAC/65 syntax, there are not really many differences. Therefore manual conversion using "Find/Replace (CTRL-F)" is very easy.

  • Replace the origin definition "* = address" by "ORG address".
  • Replace ".INCLUDE" by "ICL" for source includes.
  • Replace ".INCBIN" by "INS" for binary includes.
  • Replace "* = $2E0;.WORD address" by "RUN address" to specify the run address.
  • Replace "* = $2E2;.WORD address" by "INI address" to specify the init address.
  • Check the quotes of ".BYTE" and "DTA" statements. In MADS, single quotes result in ASCII codes, double quotes in ATARI screen codes.
  • Remove all ".BANK" statements. While ATASM sorts and merges all segments within one bank statement, MADS simply uses the order of segments as defined in the source file. Every "ORG" statement automatically generates new file segment.

How does ATASM generate segments in executable files?

A helpful feature for small projects is that by default ATASM sorts the segments by address and warns if the same address is overwritten by code or data. Since version 1.05 the ".BANK" directive is available, which allows you to create COM files with "INITAD" segments and arbitrary segment counts. If you don't use the ".BANK" directive, ATASM will sort the segments by their address and will put consecutive blocks into a single segment by default. While this saves some bytes, it might be confusing if you are used to other assemblers. Note that you have to use the ".SET 6" directive to set the assembler origin offset in every bank if you use it in one of the banks.

; Bank 0
.bank
.set 6,0
* = $8000
start lda #0
jmp *

; Bank 1
.bank .set 6,0
* = $2e0
.word start;

; Bank 2
.bank
.set 6,$4300-$C000
* = $C000
lda #1
sta label+1
label lda #2
jmp *

How do I compile into ROM images?

Plain ROM Images do not have header bytes by default, or at least they do not have the same header bytes as executable files. In order to create raw object files without headers, compiler specific options have to be used. Some cases are listed below. See the manual of the specific compiler for more details.

  • ACME: Use the compiler parameter " -f plain " instead of "-f cbm" (default) to switch to "plain" mode without header
  • ATASM: Extend the compiler parameter "-o${outputFilePath}" to " -r -o${outputFilePath}" to switch to "raw" mode without header
  • MADS: Use " OPT h-f+ " at the very beginning of the source file disables header and enabled "fill" mode, i.e. no segments are created if there are gaps in the object code

How do I compile into disk images?

Atari 8-bit

For Atari 8-bit, the ATASM compiler has dedicated parameter to write the executable file directly into ".ATR" or ".XFD" disk images. The disk image must be formatted with Atari DOS 2.0S, Atari DOS DOS 2.5 or a compatible DOS. All Atari 8-bit disk formats can be created using the "dir2atr.exe" tool of the AtariSIO tools by Matthias Reichl (hias). The tool can create a complete disk image with arbitrary DOS (Atari DOS 2.5, MyDos, SpartaDOS) and size based on a folder which contains "DOS.SYS", "DUP.SYS" (or the equivalent files of the respective DOS) and all other files requires. I have packaged an example including the "dir2atr" tool, a batch script to call the tool and the emulator and the "files" folder in this archive . Unpack the archive to your output folder. Double-click "makefile.bat" to see how the disk image is created and started. Read section How to run a makefile script instead of an emulator? for the details how to configure the call to "makefile.bat". For productive usage you should of course put the "hias" folder into a central location and use the most recent version from hias' site. For MacOS X users, the download also contains a "makefile.sh" script and MacOS X binaries of Matthias Reichl's tools. The binaries have been provided by Fredrick Holst (freetz) and you can find the latest versions on his web site .

Apple II

For Apple II, WUDSN IDE automatically generates a bootable AppleDos 3.3 disk image with extension ".dsk" if one of the predefined emulators is used for execution. If you want to use another DOS or disk size or if you want to but more files into the disk after compilation, you can use the command line version of AppleCommander to achieve this. Create a makefile script and configured it as described in How to run a makefile script instead of an emulator? . In case of Apple Disk images always remember using the correct the file content/load/run address. The IDE needs to know the load address of an executable file in order to store this information in the directory entry. To detect the load address from the executable file, the IDE evaluate the file extension. Supported extensions are ".b", ".prg" and ".xex". Here's the logic begin the built in disk image creation:

  • File extension ".b"
    // AppleDos 3.3 binary file: start-lo,start-hi,length-lo,length-hi,data
    address = getWord(outputFileContent, 0);length = length - 4;content = getData(outputFileContent, 4);
  • File extension ".prg" and length > 2
    // C64 program file: start-lo,start-hi,data
    address = getWord(outputFileContent, 0);length = length - 2;content = getData(outputFileContent, 2);
  • File extension ".xex" and length > 6 and (getWord(outputFileContent, 0) & 0xffff) == 0xffff)
    // AtariDOS 2.5 binary file:$ff,$ff,start-lo,start-hi,end-lo,end-hi,data
    address = getWord(outputFileContent, 2);length = length - 6;content = getData(outputFileContent, 6);
Other hardwares

If you find a tool similar to "dir2atr.exe" for the Atari 8-bit or "AppleCommander" for the Apple II, you can use create your own script an run it as described in How to run a makefile script instead of an emulator? .

How can I run a makefile or script instead of an emulator?

Sometimes it is useful to run a makefile script instead of the emulator, for example if the output file shall be combined with other files into a single ATR file. To execute a such a script select "User Defined Application" as the "Default Application to open Output File". Specify the path to the shell as "Path to Application". In the command line you can then use the standard variables to start the shell, pass the name of the script and pass the file path of the compiled output file. Since the working directory at the time of execution is the output folder of the compiler you must place the script file there or you must specify the script file with its absolute path. If you are using Windows and "cmd.exe" as shell, you must specify "/c" before the name of the script to prevent "cmd.exe" from remaining as process after the script has finished. The resulting command line is "${runnerExecutablePath} /c makefile.bat ${outputFilePath}", assuming "makefile.bat" is located in the output folder". See How do I compile into disk images? for the example how to use this for compiling complete disk images.

Configure makefile script

Emulation

How can I use other emulators?

You can "re-use" the existing tabs and simply specify another emulators' executable. If you use "User Defined Application", you can specify whatever you want. When using "User Defined Application", no disk image is created or updated. You can use this setting to have you own script which put the executable file onto a disk image of your choice using additional tools like "dir2atr.exe" or "AppleCommander" for example.