A number of people have claimed that it's well nigh impossible to
send CW from software running under multitasking operating systems,
due to system latency, overhead, etc.
I would like to contribute a datapoint ...
About a month ago I modified the UNIX 'morse' command such that
it would send "real" morse via the /dev/speaker device under
FreeBSD. For the last month I have hooked my system monitoring tools
into the new-and-improved morse command so that now the system
fires off messages in morse to report events I need to know about
(system reboots, login failures, full-up filesystems, etc). This
is running on a production server (running a full news feed, my
software development environment, assorted UUCP and FAX feeds,
X windows, etc). In the last month I have heard the "CW" output
stutter two or three times, and the stuttering only makes the code
sounds better - it's like the machine has a bit of "swing" in it's
fist. The software that generates the code performs an ioctl to
"push the key" and another to "let go" resulting in two context
switches per dot or dash sent. Even with this overhead it sends
quite nicely at 35 WPM.
I am not using any of the real time process scheduling facilities
available in FreeBSD (rtprio and friends). The program runs in
user space and fights for resources on an even footing with everything
else that's running. Therefore I can only conclude that CW on a
multitasking system is in fact doable.
I guess the next argument is whether OS/2 counts as "multitasking."
Certainly the scheme I use *requires* a truly preemptive task
switching environment. The task switching in Windows (any flavour)
is not up to the job, however the OS/2 scheduler seems to have a
low enough latency to make this viable. At some point I plan to
compile the UNIX morse under OS/2 using EMX. It will be interesting
to see the results.
--lyndon
--
Submissions: ct-user@ve7tcp.ampr.org
Administrative requests: ct-user-REQUEST@ve7tcp.ampr.org
WWW: http://ve7tcp.ampr.org/Lists/ct-user.html
Questions: reisert@ve7tcp.ampr.org
|