Hi Keith,
I haven't actually tried "-f coff" much, so I'm kinda guessing here... I have, over on the "dos side", a "hwcoff.asm" which is virtually identical to what you've got (as you've noted, "org" is recognized by "-f bin" only). I *thought* it worked okay - not in the mood to reboot to dos to test it at the moment... I can think of a possible reason why neither your example nor mine would work...
You give "ld the "-o hello3.com" switch. This only controls the *name* of the output file, but unless I'm mistaken, what you'll get is actually an "MZ" executable. This in itself isn't going to hurt. Dos sees *either* .com or .exe as a file extension, and it examines the first two bytes for the "MZ" signature, and loads the file according to *that*, not the file extension. ("command.com" hasn't been a .com file since about dos 2.0 or so!) The difference is, a .com file starts up with segment registers (ds and es, at least) pointed at your one-and-only segment. An .exe loads with ds and es pointed to the PSP - you need to start a normal dos .exe with:
mov ax, data
mov ds, ax
mov es, ax ; if you're using es
...
I *recall* that my example without that worked, but I'd try adding that to see if it'll get you some output... The reason this might *not* be necessary is that djgpp's ld adds a considerable "runtime" to your executable - you've probably noticed the difference in size! This *might* take care of that for you...
I'll try to remember to do some testing with "-f coff" the next time I reboot. Right now, that's the only thing I can think of that might be causing a problem...
Best,
Frank