CPU-Board

The CPU boards carries the main CPU 65c02, 64k RAM organized in two 32k * 8 SRAM chips (62256). We decided to use SRAM just because it’s much simpler to use than DRAM as we do not need a DRAM conroller. Also, small SRAM chips are also pretty easy to come by and also rather cheap.
The ROM is a 28c256 EEPROM, which is banked in at $e000 in 8k steps.
Also, clock generation and reset circuit also reside on the CPU board. The latter one could of course be much simpler since a simple RC circuit would have sufficed. But we decided to replicate the NE555 based reset circuit used by commodore in the PET series as a little hommage.

cpu_mem_rdy

CPU/memory board

decoder

address decoder and /RDY generator

 

Address decoding

The adress decoder logic is the glue that holds everything together as it takes care of mapping all components into their respective areas within the 65c02’s address space by decoding the upper 12bit of the adress bus. The decoding logic itself is accommodated in a GAL22V10

		GAL22V10

	  -------___/-------
      A15 |  1           24 | VCC
	  |                 |
      A14 |  2           23 | CSIO	- /ENABLE for a 74HCT139 providing additional 4 io-enable pins at $0240-$0270
	  |                 |
      A13 |  3           22 | MEMCTL	- /CS "Memory Mapping Control-Latch" at $0230
	  |                 |
      A12 |  4           21 | CSVDP	- /CS VDP V9958  at $0220
	  |                 |
      A11 |  5           20 | CSVIA	- /CS VIA 65c22  at $0210
	  |                 |
      A10 |  6           19 | CSUART	- /CS UART 16550 at $0200
	  |                 |
       A9 |  7           18 | CSHIRAM	- /CS upper SRAM 62256 at $8000-$DFFF($FFFF)
	  |                 |
       A8 |  8           17 | CSLORAM	- /CS lower SRAM 62256 at $0000-$7FFF
	  |                 |
       A7 |  9           16 | CSROM	- /CS ROM at $E000-$FFFF
	  |                 |
       A6 | 10           15 | ROMOFF	- If H, ROM at $E000-$FFFF is banked out to make the underlying RAM accessible
	  |                 |		  Is controlled via bit 0 of the "Memory Mapping Control-Latch" 
       A5 | 11           14 | RW
	  |                 |
      GND | 12           13 | A4
	  -------------------

This way, we can assign memory areas as small as 16 byte, which comes in handy for IO devices.
Additionally, the r/W pin and a custom pin “ROMOFF” are being decoded to provide some runtime controll over the memory mapping. Write accesses to the ROM-area $E000-$FFFF will always go to the unterlying RAM. Is ROMOFF high, the ROM will be banked out, and the underlying RAM will be readable.
ROMOFF is connected to bit 0 of the “Memory Mapping Control Latch”, so writing a 1 into $0230 will bank out the ROM, writing a 0 will bank it back in.

The memory mapping looks like this:

Description
$0000-$00ff Zeropage
$0100-$01ff Stack
$0200-$02ff IO-Area
$0300-$7fff RAM
$8000-$dfff RAM
$e000-$ffff ROM/RAM

The 28C256 EEPROM is 32k * 8, and we only bank in 8k. To make the whole EEPROM accessible, A13 and A14 of the EEPROM are connected to bits 1 and 2 of the latch. This way, the 32k ROM is divided into 4 banks of 8k each, which are selectable during runtime.

Waitstate generation

The Steckschwein runs at 8MHz, and probably more in the future, as the WDC 65c02 is actually rated for 14MHz. Not all components are capable of that bus speed though, so we need to take care about them. The 65c02 has us covered by providing a pin called “RDY”, which can be used to stop and freeze the CPU at whatever it is doing right now.
While accessing slower devices such as the video chip, sound chip and ROM, the Steckschwein halts the CPU for 1 cycle, giving those devices the time they need.

printed board with parts description

printed board with parts description

PDF

Bill of Materials

Id Designator Package Quantity Designation Supplier and ref
1 R10,R7,R8,R9,R11,R12,R13,

R14,R15,R16,R17

Resistor 1/4w 11 270 https://www.reichelt.de/widerstand-kohleschicht-270-ohm-0207-250-mw-5-k-o-rd14jn271t52-p237381.html?&trstct=pos_1
2 P5 Pin_Header_Angled_2x25 1 CONN_02X25 https://www.reichelt.de/2x25pol-stiftleiste-gewinkelt-rm-2-54-sl-2x25w-2-54-p19495.html?&trstct=pol_0
4 C1,C5,C6,C7,C8,

C10,C11,C12,C13,C9

Ceramic Capacitor 2.54 10 100n https://www.reichelt.de/keramik-kondensator-100n-kerko-100n-p9265.html?r=1
5 C4 Elko vertical 2.54 1 https://www.reichelt.de/keramik-kondensator-100n-kerko-100n-p9265.html?r=1
6 P1 Pin_Header_Straight_2x04 1 CONN_02X04 https://www.reichelt.de/stiftleisten-2-54-mm-2×04-gerade-mpe-087-2-008-p119894.html?&trstct=pol_0
7 P3 Pin_Header_Straight_1x03 1 CONN_01X03 https://www.reichelt.de/stiftleisten-2-54-mm-1×03-gerade-mpe-087-1-003-p119880.html?&trstct=pol_1
8 P4 Pin_Header_Straight_2x02 1 CONN_02X02 https://www.reichelt.de/rnd-stiftleiste-4-pol-rm-2-54-mm-rnd-205-00633-p208859.html?&trstct=pol_0
9 R1,R2,R3,R4 R3 4 3.3k https://www.reichelt.de/widerstand-kohleschicht-3-3-kohm-0207-250-mw-5-1-4w-3-3k-p1397.html?r=1
10 R6,R5 R3 2 1M https://www.reichelt.de/widerstand-kohleschicht-1-0-mohm-0207-250-mw-5-1-4w-1-0m-p1316.html?&trstct=pos_0
11 P2 Pin_Header_Straight_1x08 1 CONN_01X08 https://www.reichelt.de/stiftleisten-2-54-mm-1×08-gerade-mpe-087-1-008-p119884.html?&trstct=pol_6
12 C2 Ceramic Capacitor 2.54 1 10n https://www.reichelt.de/keramik-kondensator-10n-kerko-10n-p9267.html?r=1
13 C3 Ceramic Capacitor 2.54 1 1n https://www.reichelt.de/smd-kerko-1-nf-100-v-10-85-c-hita-hb2a102k-s2-p246880.html?&trstct=pol_2
14 D1,D2,D3,D4,D5,

D6,D7,D8,D9,D10,D11

LED-3MM 11 LED https://www.reichelt.de/led-3-mm-bedrahtet-rot-4-5-mcd-60-led-3mm-rt-p10228.html?r=1
15 U14 DIP-20_W7.62mm_LongPads 1 GAL16V8 https://www.ebay.de/itm/1PCS-GAL16V8D-15LPN-GAL16V8D-DIP-20-IC-NEW/232836527288?hash=item36362374b8:g:es0AAOSwnklauxGu
16 U9 DIP-16_W7.62mm_LongPads 1 74HCT139 https://www.reichelt.de/decoder-mpx-2-to-4-2-6-v-dil-16-74hct-139-p3319.html?r=1
17 C14 Ceramic Capacitor 2.54 1 100n https://www.reichelt.de/keramik-kondensator-100n-kerko-100n-p9265.html?r=1
18 SW1 Push_E-Switch_KS01Q01 1 SW_PUSH https://www.reichelt.de/eingabetaster-schaltspannung-100v-rund-rt-dt-6-rt-p7240.html?&trstct=pol_15
19 U1 DIP-40_W15.24mm_LongPads 1 65C02 https://www.mouser.de/ProductDetail/Western-Design-Center-WDC/W65C02S6TPG-14?qs=sGAEpiMZZMtVFuKNr6IGvpdkwXR9vVB1
20 U5 DIP-24_W7.62mm_LongPads 1 GAL22V10 https://www.ebay.de/itm/IC-GAL22V10D-15LP-GAL22V10D-LATTICE-DIP-24/232879842252?hash=item3638b863cc:g:Mp8AAOSwhYdZwMvf
21 X1 KXO-200_LargePads 1 OSC https://www.reichelt.de/quarzoszillator-16-00-mhz-oszi-16-000000-p13686.html?&trstct=pol_0
22 U4 DIP-14_W7.62mm_LongPads 1 74HCT393 https://www.reichelt.de/counter-4-bit-4-5-5-5-v-dil-14-74hct-393-p3380.html?&trstct=pos_0
23 U2 DIP-8_W7.62mm_LongPads 1 LM555N https://www.reichelt.de/timer-ic-typ-555-dip-8-ne-555-dip-p13396.html?&trstct=pos_0
24 U3 DIP-14_W7.62mm_LongPads 1 74F00 https://www.reichelt.de/nand-gate-2-input-2-6-v-dil-14-74ac-00-p58121.html?&trstct=pol_0
25 U12 DIP-20_W7.62mm_LongPads 1 74HCT244 https://www.reichelt.de/octal-bus-puffer-3-state-4-5-5-5-v-dil-20-74hct-244-p3355.html?r=1
26 U11 DIP-20_W7.62mm_LongPads 1 74HCT273 https://www.reichelt.de/flip-flop-d-type-octal-4-5-5-5-v-dil-20-74hct-273-p3363.html?r=1
27 U6 DIP-28_W15.24mm_LongPads 1 28C256 https://www.reichelt.de/eeprom-256-kb-32-k-x-8-4-5-5-5-v-pdip-28-28c256-150-p1945.html?r=1
28 U8,U7 DIP-28_W15.24mm_LongPads 2 62256 55ns https://www.reichelt.de/sram-32-kb-4-k-x-8-2-7-5-5-v-dil-28-as-6c62256-55pcn-p146551.html?&trstct=pol_0
(with adapter)http://www.kessler-electronic.de/Halbleiter/integrierte_Schaltkreise/Speicher/statische_RAMs/SRAMs/62256-LFP45__IS62C256AL-45ULI_i276_14520_0.htm
29 J1 USB_B 1 USB https://www.reichelt.de/usb-einbaukupplung-typ-b-gew-pcb-lum-2411-02-p116160.html?&trstct=pol_0
30 CON1 BARREL_JACK 1 BARREL_JACK https://www.reichelt.de/einbaubuchse-innen-2-1-mm-dc-bu21-90-p183502.html?&trstct=pol_5
31 P6 Pin_Header_Straight_1x02 1 POWER https://www.reichelt.de/stiftleisten-2-54-mm-1×02-gerade-mpe-087-1-002-p119879.html?&trstct=pol_0
32 SW2 Pin_Header_Straight_1x02 1 SWITCH https://www.reichelt.de/stiftleisten-2-54-mm-1×02-gerade-mpe-087-1-002-p119879.html?&trstct=pol_0
33 C16 C_Radial_D5_L6_P2.5 1 100µF https://www.reichelt.de/elko-radial-100-f-35-v-rm-2-5-85-c-2000h-20-m-a-100u-35-p199829.html?&trstct=pol_7
34 Jumper 4 Jumper https://www.reichelt.de/jumper-2-54-mm-geoeffnet-schwarz-mpe-149-1-002-f0-p119941.html?&trstct=pol_0
Socket DIP20 1 for gal16v8 https://www.reichelt.de/ic-sockel-20-polig-doppelter-federkontakt-gs-20-p8212.html?r=1
Socket DIP24 1 for gal22v10 https://www.reichelt.de/ic-sockel-24-polig-doppelter-federkont-schmal-gs-24-s-p8217.html?&trstct=pos_2
socket DIP28 1 for 28c256 https://www.reichelt.de/ic-sockel-28-polig-doppelter-federkontakt-gs-28-p8220.html?r=1
socket DIP40 1 for 65c02 https://www.reichelt.de/ic-sockel-40-polig-doppelter-federkontakt-gs-40-p8224.html?r=1