Despite your attempt at more precise specification, it seems to me there is
still a problem with understanding what you call software.
Even without requiring Turing power, I assume that your computer is a little
bit more than a logical circuit computing always the same result, and does
manipulate some data, if only as input. Then, how do you distinguish data and
software. One important point of theory of computing is precisely that there
is no such distinction, thanks to Gödel numbering.
For example, a computer C running a program P on input x can be seen as a "raw
computer" (i.e., without software) running on an input which is a pair <P,x>.
Conversely and more to the point, consider a would be "raw computer" C that
performs some useful computation on some data x to produce a result f(x). Now
you can cut you data into a pair of 2 pieces x=<x1,x2>, and view x1 as a
program run by your raw computer C on input x2, to produce f(<x1,x2>),
i.e. f(x). So C is now a computer that uses software x1 to compute on input x2. This is related to techniques called partial evaluation.
Then, whether you have achieved an example of a useful raw computer depends
only on the way you look at it. It's all in the eyes of the beholder.
I expect there are other ways to discuss this. For example, a purely hardware
circuitry could be represented in a harware description language, and this
linguistic representation could then be interpreted by a circuit description
emulator. Then you might say that the circuit is hardware, while its
linguistic description is software. But, again, where is the
distinction. Software is always represented physically in computers, even
though it is linguistic in nature, exactly like our circuitry which is
physical with a linguistic representation. And that applies as well to parts
of the circuit. Is a given part of the circuit a piece of hardware, or just a
physical representation of a software written in a circuit description
language ("language" is the important word).