11

Wikipedia's article for MC68020 sports this paragraph:

Addressing modes

The new addressing modes added scaled indexing and another level of indirection to many of the pre-existing modes, and added quite a bit of flexibility to various indexing modes and operations. Though it was not intended, these new modes made the 68020 very suitable for page printing; most laser printers in the early '90s had a 68EC020 at their core.

What addressing mode was indeed the one that proved valuable for page printing? And, assuming it could be that it facilitated implementing PostScript, why exactly?

EDIT: could it be that the very same addressing mode helped efficiently implement virtual table dispatch or equivalent constructs for stack-based languages like PostScript?

user180940
  • 3,716
  • 11
  • 50

1 Answers1

14

The memory indirect [pre|post]indexed addressing modes were basically direct support on CPU level for 2-dimensional arrays (which are inherently suitable to describe printed (pixelated) pages in various scalings).

The programmer builds a table of row addresses in memory, and the CPU can directly access data in such tables by instructions like

MOVE.L ([10, A4,d0.l * 4],16),d1

(fetch the longword that is pointed to by an address in memory at 10+a4+d0+16 into d1, - All in a single instruction). A4 would be used as a row, d0 as a column register. This allows the CPU to sweep large n-dimensional arrays of arbitrary sized elements very effectively.

Whether it really was this mode that made the CPU particularly suitable for laser printers, I don't know. It was very suitable for other applications as well. I guess it was more the capability to directly address huge amounts of memory without the additional Intel hassle of segmented memory.

tofro
  • 34,832
  • 4
  • 89
  • 170