My understanding of the N8VEM 6x0x boards



My understanding of the N8VEM 6x0x boards

Oscar Vermeulen, November 2012

I found the lack of accessible information on the 6x0x boards a real barrier to entry, and these boards deserve a lot more attention from vintage computer enthusiasts that want to broaden out their horizons beyond CP/M. This text is the byproduct of building my own board set. It may be of use as a technical introduction; but because it is simply a bundling of my personal notes please do not take it as an authorative or even competent guide to the boards. Open questions are marked in red – but be prepared for mistakes elsewhere in the text!

Background

6800-family CPUs were first brought on the N8VEM platform through a 6809 prototype board developed by Andrew Lynch. The board saw a lot of ‘evolution’ going from early prototype to its current, second version. Next to the 6800 and 6809, it can host 6502 or 6802 CPUs. Through the work of Dan Werner, each CPU is now provided with its own operating system and ROM monitor.

Next to the SBC board, two optional expansion boards were developed: the Mezzanine IO board and the ECB Bridge board. The first adds I/O to the Processor board, the latter is a backplane that allows normal ECB peripheral cards to be added. This opened up the choice to run the 6x0x SBC in two different modes:

• Hosted mode. The 6x0x Processor board is a peripheral in the Z80 N8VEM system. On-board, the 6x0x lives its own life with its own operating system, but a CP/M server program delivers console and disk I/O. The Mezzanine board can be used to add more I/O to this setup.

• Stand Alone mode. Coupled to the 6x0x mezzanine board, the 6x0x processor board can also run on its own. The Bridge board allows this system to use existing ECB peripherals, like the VDU or Disk IO boards.

All of this means there are multiple ways to operate the 6x0x boards, with multiple CPUs and operating systems. That flexibility is impressive, but also makes it easy to lose oversight. You can just use the Processor board in a Z80 N8VEM system, or end up with a stand-alone machine as shown below:

[pic] [pic]

(The 3 6x0x boards stacked, source: here) (Adding N8VEM ECB cards, source: here)

1. 6x0x Processor board

This is the main board, and actually the only one you need for running a full 6502 or 6809 system. Two versions exist:

• Rev. 1: one socket for a 6809 CPU, but a 6502 can be used with a home-made socket adapter

• Rev. 2: has dual 68xx and 6502 sockets

Description of the Rev.1 board

[pic](The Rev.1 board, with a single CPU socket. Source: here)

This is a self-contained 1- or 2 Mhz 6809 SBC computer system with its own memory. A 28c16 (or 2716) ROM provides the 2k bootstrap, and a 628128 SRAM provides 60k of accessible RAM. A 6821 PIA is the single peripheral of the SBC and it does only one thing: talk to the on-board 8255. That 8255 is instrumental: it makes the whole stand-alone, independently operating SBC appear as a peripheral on the ECB bus. The Z80 N8VEM can then serve the 6809 card by providing the user console, (hard) disk services, and whatever else you may think of, all served to the 6809 through the parallel port of the 8255/6821 combo.

As opposed to the Z80, IO in the 6x0x world is memory mapped. The SBC uses $0000-$EFFF for SRAM, $F000-F7FF as the IO region, and $F800-FFFF as the ROM region. That leaves 60K for RAM and only uses 2K each for IO and ROM spaces.

Jumpers:

Jumpers P16-P20 are normally on, but removing them allows users to interfere in the default chip select logic. Jumper P21 connects the 8255 interrupt signal to the ECB bus [why should it not be on – but DW states he leaves the jumper off?]. Details:

• P16 – connects the /CS_PIA to the 688 comparator. [why would you not want to do this?]

• P17 – pulls mA16 to GND, getting rid of the upper 64k of the SRAM chip.

Remove jumper only if the mezzanine board is set up to control A16

Remove jumpers P18,19,20 only when you want the Mezzanine board to intercept chip select signals. Rewiring them becomes necessary when operating the bus expansion port on the Mezzanine board (and consequently, the Bridge board), but not for anything else.

• P18 – connects /CS_ROM to the default chip select circuitry.

• P19 – connects the generic /CS_IO signal to the default chip select circuitry.

• P20 - connects /CS_RAM to the default chip select circuitry.

• P21- a jumper connects the ECB bus interrupt to the 8255’s INTR_A and INTR_B outputs.

Switches:

Four switches set the base address of the Processor board (to be precise, its 8255) as a peripheral on the ECB bus. SW1 sets address value of A7 to 0 or 1, SW2 covers A6, SW3 covers A5, SW4 covers A4. A3 and A2 are hard-wired to be 0 for the board address. See the appendix for default settings with various operating systems.

Lastly, two 26-pin headers rise up to provide access for the optional IO Mezzanine expansion board. P14 brings out the address and data lines (plus VCC and GND). P15 brings out the other lines.

Patches (correcting the RESET signal):

The Rev. 1 board gives a /RESET signal (active low) to the 8255, which in fact needs an active high RESET signal. Cut the input to 8255 U6 pin 35 and connect it to pin U5 pin 10. Without this, you will not be able to communicate with the 6809 host processor via the ECB.

Accommodating a 6502 CPU:

Rev. I of the Processor board has no separate socket for the 6502. Instead, a simple adapter socket can make a 6502 fit in the 6809’s socket.

The Rev. 2 board and its changes

This board ‘s major improvement is a separate socket for a 6502. There’s no longer a need to have a home-made adapter socket to wedge a 6502 into the 6809’s socket.

[pic]

Jumpers P16-P21 are as described for Rev.1. The old address select switches are now replaced by P26, which allows you to set A7 (jumper p1-2), A6 (3-4), A5 (5-6), A4 (7-8), A3 (9-10) and A2 (11-12).

New jumpers:

K1 – jumpering 2-3 gets the R/W signal from the 6809 socket, 1-2 gets it from the 6502 socket

K2 – jumpering 2-3 gets the E signal from the 6809 socket, 1-2 gets it from the 6502 socket

K3 – there is no K3, actually.

K4 – off for 6809 (use its E), jumper 1-2 let 6502’s Phi2 (pin 39) drive E. Jumper 2-3 for 6802

K5 – off for 6809, jumper 2-3 to let CLK drive 6502’s clock input (pin 37), jumper 1-2 for 6802 (the 6802 uses this pin for its clock output)

JP1 – Leave off for 6809 operation. Put on for 6502 and 6802 operation.

Jumpering pulls 6809’s pin 35 (Q) to GND.

JP2 – Leave off for normal 6502 & 6809 operation.

Jumpering pulls 6802 pin 35 (6802 VCC Standby, but NC on 6502) to GND. I do not understand the purpose behind the schematic – pin 35 is pulled high without JP2, but jumpering this brings a pull-down into play. Why would you connect pin 35 in-between? Are you supposed to cut the VCC trace for a 6802?

JP3 – Leave off for normal 6502 & 6809 operation, but used for 6802.

Jumpering connects 6802 pin 36 (RE but NC on 6502) to NC_A24 on the ECB bus. apparently this is to let a 6802 retain its 32 bytes of built-in memory, but AFAIK A24 is well and truly Not Connected. So why would a 6802 CPU benefit from this? More importantly, should it not be pulled to GND by default for 6802s?

JP4 – Leave off for normal 6502 & 6809 operation, but used for 6802.

Jumpering connects 6802’s pin 3 (MR) to the board’s MRDY signal.

Obtaining components

Most ICs are available from the usual sources. The 6821 and 6809 are no longer carried by Mouser or its competitors, but eBay vendors offer them continuously.

• 6809: Any version of the CPU will suit the board, but 1 Mhz parts (the 6809P is the most common) will certainly not work with on 2Mhz – match the parts. For the 6821, the same is true.

• The 28C16 EEPROM is also no longer easily available. However, a 2716 can also be used.

Using a 6502 should also be reasonably uncomplicated. It should be kept in mind that running the system in Stand Alone mode requires a 2 Mhz 6502 for the Disk I/O board to run reliably. In Hosted Mode, of course, that is not relevant. New production runs of the 65C02, such as the one offered here by Mouser, should also be fine.

14 Nov 2013 – update on the new 6502 from Mouser, taken from a Google Groups discussion:

On the new 65c02’s (W65C02S6TPG-14), 3 pins have gotten a new meaning, see below. One modification required to use them: pin BE needs to be pulled high! Also, place a jumper from pin 1 JP2 to pin 1 JP3.

Finer detail: New production runs of the 65C02, have two previously unused pins now being used. And pin BE has gotten a new meaning:

o        Pin 5 MLB (output) ---> no problem, pin 5 is NC on the board

The Memory Lock (MLB) output may be used to ensure the integrity of Read-Modify-Write instructions in a multiprocessor system. Memory Lock indicates the need to defer arbitration of the bus cycle when MLB is low. Memory Lock is low during the last three cycles of ASL, DEC, INC, LSR, ROL, ROR, TRB, and TSB memory referencing instructions.

o        Pin 36 BE (Bus Enable, input) ---> is NC on the board, does it not need pulling high? Yes.

The Bus Enable (BE) input signal provides external control of the Address, Data and the RWB buffers. When Bus Enable is high, the Address, Data and RWB buffers are active. When BE is low, these buffers are set to the high impedance status. Bus Enable is an asynchronous signal.

o        Pin 2 Ready (no longer just input but bidirectional) ---> OK, pullup is already there, so no problem.

Bi-directional, WAI instruction pulls low.”Latest TSMC devices no longer have an internal pull up. An external pullup should be used if RDY is not driven and a resistor added when driven by a gate to allow for the W65C02S to pull RDY low.”

2. IO Mezzanine Board

This board adds I/O and allows the 6809 host processor to act as a stand-alone computer system, away from the Z80/ECB environment, if desired. It adds the following components:

• A 9V DC power connector (regulated down to 5V using a 7805)

• 6551 ACIA serial

• 6840 PTM programmable counter/timer

• Two 6522 VIA parallel IO with timers

• Expansion bus for future expansion

• Reset button

[pic]

Although the above additions make it possible for the 6809 to run as a stand-alone computer, the Mezzanine board can also be used in the Hosted mode (ie, using the Z80 N8VEM). In the Hosted Mode, it simply adds extra contacts to the outside world for the 6809.

Description:

• P7 and P8 are the connection to the CPU board (so solder on the reverse side of the PCB…)

• P9 is the serial port, RS-232 level with RTS/CTS as hardware handshaking possibility.

• P10 is the parallel port connector, bringing out 3 8-bit ports.

• P11 offers the other (control) pins from the 6522s

• P12 and P13 are the expansion bus interface, data and address buses are buffered by 244/245s but not all control signals are buffered.

The configuration latch[1]:

This is the one important element of the Mezzanine board to understand. Only 3 of the 4 parallel ports are brought out for general use. The 4th port (PD0-7) is used internally as a configuration latch.

a. PD0 is connected to the ECB bus interrupt line, so the 6809 CPU can now interrupt the Z80 on the SBC whenever it wants. PD0 should default to LOW so that the 74LS06 pulls the ECB bus interrupt signal HIGH.

(Andrew Lynch:) When running the 6809 host processor with the IO mezzanine attached I recommend the Z80 CPU have code to handle a regular /INT interrupt. If the PD0 pull down resistor is not enough to pull the pin down and if the PD0 initializes as an OUTPUT set to HIGH, it will pull the Z80 CPU /INT line LOW until the 6809 configures the U7 PD0 to go LOW and release the Z80 from its interrupt.

b. PD1 disables ROM, allowing for future expansion cards on the 6x0x bus to use its address space on demand. If this feature is to be used (no ROM expansion boards exist though) then use JP1 and JP2 as described further below.

PD1 should default to LOW so that the normal 6809 host processor ROM chip select works. Setting it to HIGH would block the 6809 host processor ROM from being selected creating an internal memory hole ($F800-$FFFF).

c. PD2 is similar and it can map out the RAM to allow an alternative RAM on the expansion bus. This would be useful for a MC6845 style shared memory CRTC circuit or RAM expansion. PD2 should default to LOW so that it the normal 6809 host processor RAM chip select works. Setting it to HIGH would block the 6809 host processor RAM from being selected creating an internal memory hole ($0000-$EFFF).

d. PD3 is connected to the 6809 host processor A16 line so it allows the 6809 to use the upper 64K of the 128Kx8 SRAM. That should work without any special configuration. [Except that jumper P17 should then absolutely be left open on the processor board?]

e. Pins PD4-PD7 are exported to the 6809 IO mezzanine expansion bus to help configure expansion RAM, ROM, and/or IO in the future.

Jumpers and settings:

• K2 - jumper pins 1 and 2. This connects the 6840 Timer Output 1 to /NMI (through the U1 inverter). But note the patch for a missing trace on /NMI below.

• JP1 – ROM Select override. Normally, leave this open.

But: connecting pin 2 to [P18, pin 2] enables the 6809 IO mezzanine to "intercept" the ROM chip select signal and add conditions to it before it is passed to the ROM chip.

• JP2 – RAM Select override. Normally, leave this open.

But: connecting pin 2 to [P20, pin 2] enables interception of CS_RAM on the processor board for the same purpose.

• If the RAM/ROM override feature described above is installed, then pin 1 of both JP1 and JP2 are 10K pull up resistors and should be connected to Pin 1 of P18 and P20 respectively.

(Andrew Lynch) It is probably not necessary but since there are longer signal paths and a chance for unconnected inputs the pull up resistors will prevent U11 (74LS32) from oscillating.

• U11 – this 74LS32 should normally notbe fitted and remain an empty socket, unless RAM/ROM overrides are implemented.

Using the expansion bus[2]:

Although the expansion bus exports everything from the CPU bus, it will only allow any importing if and only if all the RAM/ROM/internal IO chip selects are inactive. That should prevent bus contention. Since the 6809 host processor CPU memory map is full except for a portion of the IO address range the PD1 and PD2 are needed to prevent the internal RAM/ROM from being selected so they do not conflict with the bus expansion memory. This is where the complexity around JP1 and JP2, described above, come into play. If you do not want to use the expansion bus, ignoring this topic (and ignoring JP1 and JP2) are fine.

Patches and fixes

A few connection traces were left out of the PCB. Do check whether this still applies to your board, newer versions may exist that have this fixed on the board already:

• add jumper from pin 1 of K2 to pin 3 of U1 (/NMI missing trace)

• add jumper from pin4 of U1 to R14 resistor on the pin not connected to VCC (/NMI missing trace)

One other patch is also generally needed:

• add jumper from pin 1 to pin 9 on the 6551, forcing ‘Clear to Send’ at all times.

This eliminates problems with CTS when using the serial terminal.

It may also be good to replace the reset button by a jumper: if the Bridge Board is used, the reset button is impossible to access. Lastly, on the Rev. 1 Processor board, disconnect pin 12 of U5 if using the Mezzanine’s reset button [Not necessary on the Rev. 2 board as it buffers the ECB /RESET signal?].

Obtaining the parts

• 6551 and 6840 are available through eBay dealers and the like – but easy to obtain

• The 6522 is also available new from Mouser etc. Buy the ‘S’ (Standard CMOS) version.

Note 14 Nov 2013: the above recommendation is wrong – buy the ‘N’ version.

Details, taken from the Google Group conversation:

One of the key differences between the W65C22S and W65C22N is the circuitry connected to the IRQ pin. The W65C22N has an open drain output like all the previous NMOS and CMOS parts and it can be wire ORed with the IRQ pins of other devices. The W65C22S has a standard totem pole output, so in a wire ORed system if another device attempts to pull the IRQ line low there will be a short across the 5V supply between the pull-up transistor in the W65C22S and the device pulling the line low. If you wish to use the W65C22S in a wire Ored system the data sheet suggests using "a low voltage diode ( ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download