I have a copy of Tannenbaum's book. It's ironic that you should mention him on a LUG list, considering his history with Linux. The debate between Linus Torvalds and Andy Tannenbaum is something of a legend in operating system design circles. Tannenbaum advocates the "microkernel" operating system design. Linux is technically speaking a monolithic operating system, with module device drivers. Hence the debate between them. Anyway, being here nor there... Clayton, Is the device in question a stand alone device, or something you plan to interface with a PC since you mentioned USB? What OS? If so, you may need to create a driver for the OS in question. Personally, depending on your experience level with hardware, I'd first suggest a courses in digital logic, and one in processor architecture. Then take your assembly language courses. Some combine the architecture and assembly into one course. Assembly language should not be taken lightly. It's notoriously difficult for new programmers to learn, and it is not portable from one processor family to another. There are no safety nets with assembly, for such things as array boundaries, so be sure to debug your programs carefully. Most often, programmers will use stripped object code from C, rather than drive into assembly code. Assembly should be your last resort really, when there is nothing else available to get the job done. It used to be a memory size concern, but flashcards and ram are so cheap now that it's not as much an issue anymore. Considering that there is even an embedded version of (memory hog), Windows, called Windows CE, I don't think anyone is as nervous about memory requirements as they were in past years. Let me know if I can help. Thanks, T.J. -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mailman.mn-linux.org/pipermail/tclug-list/attachments/20060429/42ad41bd/attachment.htm