10) the mill of the CPU core
It's a redesign of the NMOS 6502 mill.
There are some minor differences at gate level, and the layout is different.
We have weak pullups at the DB, SB, ADH bus. //I can't remember to heve seen them in the 6509.
The CPU gives out A0#..A3# (low_active) and A4..A7 (high_active), that's because of how the address decoder is built.
Unlike in the NMOS 6502, the flags are crammed into the mill (to make better use of chip space).
Also, there wasn't enough space in the mill for the ADH latches (which sample the ADH bus for generating A8..A15).
That's why we have inverters (or super buffers) which just buffer ADH8..ADH11, sending ADH8#..ADH11# to the address decoder.
//The address decoder then contains the ADH latches.
But on the logic level design of view, the 6500/1 CPU core should do exactly the same as the NMOS 6502 core.
//Whether the weak pullups and the different layout have an effect on the less stable "illegal instructions" or not would have to be tested.
Here we go, rolling out the mill from West to East:
Attachment:
6571r6_10_mill_transistorlevel.png [ 298.18 KiB | Viewed 547 times ]
Attachment:
6571r6_10_mill.png [ 242.45 KiB | Viewed 547 times ]
;---
10a) ADL latches, registers Y, X, S
Not much difference to the NMOS 6502.
Attachment:
6571r6_10a_adl_y_x_s.png [ 93.49 KiB | Viewed 547 times ]
Attachment:
si6571r6_10a_adl_y_x_s.png [ 25.11 KiB | Viewed 547 times ]
;---
10bc) ALU
Inverting/non_inverting carry chain, pretty much like in the NMOS 6502.
Attachment:
6571r6_10bc_alu.png [ 109.67 KiB | Viewed 547 times ]
Attachment:
si6571r6_10b_alu_logic_adder.png [ 32.01 KiB | Viewed 547 times ]
Attachment:
si6571r6_10c_alu_result.png [ 9.03 KiB | Viewed 547 times ]
;---
10d) decimal correction plus accumulator and stuff
In decimal mode, 6500/1 ADC/SBC will give the same results like the NMOS 6502,
even for non_BCD numbers, I checked.
Decimal mode ADC/SBC incorrectly sets the flags like in the NMOS 6502.
Attachment:
6571r6_10d_decimal_correction_acc.png [ 438.62 KiB | Viewed 547 times ]
Attachment:
si6571r6_10d_decimal_correction_acc.png [ 147.84 KiB | Viewed 547 times ]
;---
10e) PC, the program counter.
16 Bit up counter.
Inverting/non_inverting carry chain plus carry lookahead,
pretty much the same game like in the NMOS 6502.
Attachment:
6571r6_10e_pc.png [ 159.51 KiB | Viewed 547 times ]
Attachment:
si6571r6_10e_pc.png [ 27.75 KiB | Viewed 547 times ]
;---
10f) flags
The flag section was crammed into the mill to make better use of chip space.
Note the inverters (or inverting super buffers) which buffer ADH8..ADH11,
sending ADH8#..ADH11# (low_active) to the address decoder.
Attachment:
6571r6_10f_flags.png [ 258.38 KiB | Viewed 547 times ]
Attachment:
si6571r6_10f_flags.png [ 114.21 KiB | Viewed 547 times ]
;---
10g) data latch
What connects the CPU internal bus systems to the data bus,
and the game is pretty much similar to the NMOS 6502.
Except that the CPU only puts data on the bus during PHI2.
//Because during PHI1 the data bus is used for distributing control signals.
Attachment:
6571r6_10g_data_latch.png [ 28.72 KiB | Viewed 547 times ]
Attachment:
si6571r6_10g_data_latch.png [ 13.78 KiB | Viewed 547 times ]