Just to add
grist for the mill, I'd point out that people now are, perhaps
erroneously, calling recorded program material for your stereo and your TV
'software' as well. Now, I would call a CD or a CDROM firmware, since you
can't really change it, but who's splitting hairs . . .
Ah, the question of when is software software. If you want to get
really precise, I would argue that it is "stored data" when it is on
the CDROM. It does not become software until it is relocated and
available for execution in the processors address space. If you can
step a program counter (or instruction pointer or whatever you call it
on a particular architecture) across it, then it is either software or
firmware. Otherwise: If it is on paper, it is a "listing". If it is
on paper tape, it is a "dump". Etc. Of course, this opens up the
question of just what are interpreted language and p-code programs?
Definitely software. Just because the program counter that steps through the
code is in fact a variable in a program, rather than a register on a chip,
doesn't make the code any less software. In fact, a good interpreter will
probably have the program counter in a processor register if the processor has
enough of these.
FWIW, I would call a cd-rom a storage medium (everyone who says "a storage
media" go and wash your mouths out).
The code that is stored on it is software if it represents instructions for a
computer. I would include embedded data (like messages the program might print)
to be part of the "software", even though (you hope) they are not stepped
through by the program counter. I'm not sure where you draw the line on this
one - is a separate message file (a man file, for example) still software?
A ROM chip is hardware. The program in it is software. Because it is stored in
a ROM chip it is _also_ firmware. (IMHO).
Philip.