The 4054 service manual is up on Bitsavers. The 2901-based CPU for the
4054 is very similar to that in the 4052. Similar enough that looking
through it should give you the answers you seek. The microcoded engine
does indeed emulate a Motorola 6800, but it adds extensions to the
instruction set so that the machine can address more memory. It also
changes the interrupt processing and I/O stuff, which is part of the
reason that the 4052 can't run ROMPacks designed for the 4051, and that
CALL "EXEC" code doesn't port directly.
The 4054 does have some additional hardware in it that generates vectors
for refresh graphics and other things, but architecturally the main CPU
components are very similar to the 4052.
To gain a deep understanding of the CPU, it'll be necessary to
understand the microcode contained in the fast ROM on the ALU board.
The ALU board contains the 2901's and the sequencing logic to create
the6800-like microengine that runs the machine.
I have a 4052A that runs, and a 4052 that doesn't due to a bad ROM on
the MAS board. The real problem is that the ROMs used on the 4051 and
4052 (not the 4052A) are virtually unobtainium. They have to be fast,
and use a strange addressing scheme. Finding a ROM programmer that can
program the original chips (assuming you can find them) is also a
challenge. The chips can't be directly replaced by a 2764 (the ROMs are
8kx8), because of pinout and chip select/chip enable differences. It is
hard to make a piggyback board that plugs into the ROM socket and uses a
fast 2764 because of clearance problems with the circuit board support
rail. In the 4052A, they changed the ROMs to 2764's. I need to read
the 4052A ROMs out and put them up on Bitsavers...something I'll do
when I have time, which isn't very often anymore.
The ROMs on the MAS board (the board with the RAM on it also) contain
the "operating system" for the 4052...which contains the code that the
"modified emulated 6800" CPU executes to run the machine.
The ROMs on the ALU board contain the microcode that the 2901's execute
to create the pseudo-6800 machine.
Some, but not all of the "OS" code was copied from the 4051 code tree at
the source level. From what I can tell, a special assembler was written
on a PDP-10 system that assembled the modified 6800 source code to
generate the content that went into the OS ROMs. The OS ROM is
organized as a "HIGH" byte and "LOW" byte 16-bit word. I believe
that
the memory controller reads a 16-but word at a time, and the ALU
processes it as a 16-bit word. The microcode engine has some pipelining
in it to speed execution of certain types of instruction flow.
I worked at Tektronix from '77 to '90, and learned a lot about these
machines during that time.
Some of the memories are a little foggy, but I'm very positive that the
code in the ROMs on the MAS board are indeed mostly 6800 code. There
may be some difference in the ordering of bits in a byte, e.g., the MSB
of a byte may be bit 7 or bit 0. That could change the interpretation
of bytes in the ROM. Looking at a single ROM, you are only seeing the
"EVEN" or "ODD" bytes of instruction flow, which also could be
confusing
the interpretation of the code.
Hopefully this will be helpful to those digging around in the 4052.
Rick Bensene