Exactly what programming tools I
should use, are there any already
installed?
Basic was the only language to come pre-packaged, and even it was in two dialects (ABasic, and AmigaBasic). You'll want to look at the Fred Fish collection or AmiNet for more tools, as finding commercial compilers will be nigh-impossible.
Am I limited to plain text editors, or
are there IDEs and debugging tools
available?
You're pretty much back to edit-save-compile-link-run-crash-whycrash-doh-fixit-edit cycle, IDEs are not readily available. I would look at something like DME (Dillon's Macro Editor), also available on the Fred Fish collection or AmiNet (http://wuarchive.wustl.edu/pub/aminet/). It provides some basic macro construction facilities that will help.
If no tools are already installed, how
can this done? Are there free ones?
Yes. Again, Fred Fish, or AmiNet.
I'd like to learn a traditional Amiga
language, could you reccomend one?
Draco. It was written by Chris Grey. It's a little "primitive" but it should provide you with all that you need to get going, including the proper bindings and constants. The language is compiled and runs at speeds comparable to C.
What should I use to compile the
language you suggest?
Manx or Lattice C were the C compilers of the time (if you can find them, good luck), with Manx tending towards 16bit and Lattice towards 32bit. There were a few tiny C-based compilers. There is 68k assembly (a neato instruction set IMHO), Draco, a pascal dialect, possibly Modula-2, as well as DICE (a free C compiler, but you're looking for something else)...
Please could you suggest tools I may
use to debug the suggested language?
Again, commercial tools are far and few between, you're going to have to dig through the public domain archives to find anything.
Are there any libraries I should be
aware of, such as GUI libraries?
The libraries are all built in. intuition.library is the name of the library that provides basic windowing support. gfx.library will provide you with high-level primitives, and layers.library will provide you with support for handing the unique bit-plane approach to graphics. Before you get that far, you'll want to look at exec, which was the heart & soul of the OS. It provides pre-emptive multitasking, built-in linked list primitives, message passing primitives, IO primitives, etc. and was heavily re-used throughout the system. If you understand exec, you'll understand the low-level innards of the rest of the system.
Keep in mind that the state of the system will look more like an embedded game console, as there will be no memory protection, SMP support, etc. All of these things could not easily be added due to design constraints that were introduced just before the first Amiga shipped. I seem to recall that the issue was surrounding how it would handle multiple processors and memory protection given that the entire microkernel runs in a non-priv CPU mode.
Last but not least, the magic number is 4, which is a memory address. That address is the pointer to the exec (which is not only a microkernel but also a library) and with it you can bootstrap into the rest of the system via OpenLibrary() calls. Libraries that could not be located will automatically be loaded from disk via AmigaDOS. This is how the Amiga dealt with the issue of portable code - all of the code was written using offsets into a pointer to the "base" of a library and there were no fixed addresses, other than address 4. Every library has a call table of 6 bytes per entry (a jump instruction) that then vectors off into the correct entry point. It was easy to write your own library, provided you had the correct format for your "header". Device drivers "borrowed" the structure of libraries and used the same concept to provide default I/O handlers.
Sorry if the names are slightly wrong, this information is off the top of my head from nearly 20 years ago...
Some things to note...
I'm running Workbench 3.1 from within
the WinUAE emulator.
Cool. You're set. That was the last great "classic" workbench.
From Workbench, I can access files
from my Windows hard drive.
It'll help, but you'll want to go "native" as much as possible.
I'd like to code and compile it from
Workbench if possible.
See above.
I'm running WinUAE in A1200 mode, not
sure if that matters.
It's the model of hardware you're emulating; it was a good budget machine, but try setting it for A3000 if possible, that was a nice high-end machine before Commodore had trouble.
There's an application already
installed called MEmacs.
Give it a try, if Emacs is your thing...otherwise I would look at some of the native tools.
know C++ and C# very well, maybe
there's a similar Amiga language. I'm
aware that you can code with C and
C++, but I want to learn a new
language.
Then Draco is for you. It has most of the bindings for libraries, compiles cleanly, and it's officially a "dead" language given it's tied to a specific hardware platform. Very Amiga-specific. :)
Good luck! Let everyone know how it turned out...