From: Bernd Paysan on
On Dienstag, 3. August 2010 15:02, Piotr Wyderski wrote:

> Joe Pfeiffer wrote:
>
>> Being able to reflash the ROM doesn't affect whether an embedded system
>> should be rommable.
>
> Sure, but why would one want a rommable system?

Ok, let's stay with the embedded system. Flash is a lot more dense than
SRAM, and even denser than DRAM. It's the cheapest memory you get there,
therefore you want to put as much as possible into this cheapest memory.
Embedded systems are much more cost-sensitive ;-).

> I mean a CPU-related system, the ability to etch an FSM
> or a LUT is obviously desirable.

Yes, but that doesn't mean it can't be in ROM or flash.

Actually, ROMable and flashable can be significantly different. E.g. the
Gforth EC (stripped down version of Gforth for embedded control) is
flashable, which means that all the incremental compiler stuff in a Forth
compiler work with a flash memory underneath. Flash is bulk erase (usually
all bits 1), and you can write individual bits to zero, which usually means
"write once" (exception: you can later clear a flag bit if necessary). You
can't do that with ROM, and the ROMable version will put all incremental
compile stuff into RAM.

You also don't need to organize patch vectors or something like that to
allow small fixes bugs in your ROMed system - you simply reflash.

--
Bernd Paysan
"If you want it done right, you have to do it yourself!"
http://www.jwdt.com/~paysan/
From: Joe Pfeiffer on
"Piotr Wyderski" <piotr.wyderski(a)mothers.against.spam.gmail.com> writes:

> Joe Pfeiffer wrote:
>
>> Being able to reflash the ROM doesn't affect whether an embedded system
>> should be rommable.
>
> Sure, but why would one want a rommable system?
> I mean a CPU-related system, the ability to etch an FSM
> or a LUT is obviously desirable.

Right now I'm playing with 8-bit embedded systems -- no OS. No
secondary storage. Running from ROM is the only reasonable way to work
down in that league.
--
As we enjoy great advantages from the inventions of others, we should
be glad of an opportunity to serve others by any invention of ours;
and this we should do freely and generously. (Benjamin Franklin)
From: Piotr Wyderski on
Joe Pfeiffer wrote:

> Right now I'm playing with 8-bit embedded systems -- no OS. No
> secondary storage. Running from ROM is the only reasonable way to work
> down in that league.

Here's the point: I misunderstood the meaning of "rommability", so
the answer is obvious. I thought that the "rommability" word used
by Andy was for "the ability to translate hardware circuits into something
like ROM-based LUTs", i.e. the FPGA-style design. And I was wondering
why would one use a ROM-based solution if he can build the respective
circuit directly.

Best regards
Piotr Wyderski

From: robertwessel2 on
On Aug 2, 4:47 pm, EricP <ThatWouldBeTell...(a)thevillage.com> wrote:
> Andy Glew wrote:
> > ROMmability refers to the ability to place the stuff needed by a
> > computer system that must reside in memory - e.g. instructions, data,
> > page tables - in ROM, read-only memory.
>
> This is dated, but...
>
> = Instruction Set =
>
> The Intel 8008 and 8080 had Input IN and Output OUT instructions
> that only allowed port addresses as an instruction immediate constant.
> To perform I/O to a arbitrary port address (one not known at
> compile/assembly time) you would generate the I/O instruction
> with a RET into writable memory and call it. To avoid interrupt
> reentrancy issues, this should done on the top of stack.
>
> Later the Z80 and 8086 added I/O instructions that allowed
> port addresses to be in a register.
>
> Data General Nova Input and Output instructions were similar,
> and IIRC also IBM 360 START CHANNEL, in only allowing immediate
> constant port address. While neither was interested in ROMability,
> performing arbitrary port I/O required generating and executing
> self modifying code which interacts with prefetch buffers.
> They later added register variants of I/O instructions.


S/360 Start I/O (SIO), and the Start Subchannel (SSCH) that replaced
it with the big revamp of the I/O subsystem in XA, both used registers
to address the device. With SIO (and its variants), the base
+displacement in the instruction specified the device, so you could
actually hard code a device address (so long as it was less the
0xfff), but that immediate value was always added to the specified
register (with the usual register zero exception). A problem was that
a word in low memory (the Channel Address Word) was used to specify
the start of the channel program and some options.

With SSCH on XA and later, the model changed, and the I/O device is
always specified with a value in GPR1, and the address in the
instruction points to the Operation Request Block (which basically
replaces and significantly extends the CAW), so there are fewer
reentrancy issues.

But there has never been a requirement to modify code to do mainstream
I/O on S/360 and its descendents. One minor exception that I know of
is the Direct Control facility that was an option on some S/370s (I
don't believe that was ever supported on any XA or later machines),
which basically added a parallel port to the machine. There was
provision for an eight bit output (which could be used to address one
of 256 ports) which came from an immediate field in the two
instructions in question. But that was a minor facility at best.
From: Andy Glew "newsgroup at on
On 8/3/2010 10:58 AM, Piotr Wyderski wrote:
> Joe Pfeiffer wrote:
>
>> Right now I'm playing with 8-bit embedded systems -- no OS. No
>> secondary storage. Running from ROM is the only reasonable way to work
>> down in that league.
>
> Here's the point: I misunderstood the meaning of "rommability", so
> the answer is obvious. I thought that the "rommability" word used
> by Andy was for "the ability to translate hardware circuits into something
> like ROM-based LUTs", i.e. the FPGA-style design. And I was wondering
> why would one use a ROM-based solution if he can build the respective
> circuit directly.
>
> Best regards
> Piotr Wyderski


Sorry. I'll try to revise the wiki page to make it clearer.

"ROMmable" = my cute name for instruction set and other featurewsture
that make it easier to put code - executable instructions, and maybe
some datatructures - into ROM.