Table of Contents
The SBC V2 is a Zilog Z80 processor board. It's a 100x160mm board that is capable of functioning both as a standalone SBC or as attached to the ECB bus.
- 4Mhz Zilog Z80 CPU
- Up to 512Kb paged SRAM.
- Up to 1Mb EPROM or FLASH ROM.
- Serial Interface (16550 Uart)
- Parallel interface (8255), can be extended to support IDE interface via small board
- Real Time Clock (DS1302)
- Battery backup for RTC and SRAM.
- Standard ECB bus interface
- Standard PC drive connector power supply interface using +5V only
- Reset button with external connector
- Status LED
- ROMWBW BIOS featuring
- CP/M / ZSDOS
- RAM & ROM disk support.
- ROM based BASIC, FORTH and Monitor.
A description of the circuit operation can been seen here: http://obsolescence.wixsite.com/obsolescence/the-n8vem-sbc
A video showing the construction of the SBC-V2-003 can be seen here: https://www.youtube.com/watch?v=gXUt_EX-eo0
The current version is SBC-V2-003A. A new version SBC-V2-004 is under development and details can be found here.
Additionally, an alternate version leading on from the SBC-V2-004 is being developed and further information on progress can be seen here.
PCB Board: :boards:sbc:sbc_v2:sbc_v2-003a-brd.pdf
The following table outlines the correct jumper settings for the SBC V2 board:
|Board Reference||Jumper Description|| |
Installed - allows you to use the common battery backup on the ECB bus (pin A24).
Not installed - means either a local battery is used or no battery backup at all.
|JP2||One bit input port||X||
Installed - enables the one bit input port. This is currently
unused although could be used for external input if desired like a button or other things.
Not installed - disables the one bit input port.
|K1||U2 EPROM chip pins (32-pin or 28-pin)||X *||32-pin EPROM used in U2 (ex. 27C080 1MBx8 EPROM) - default|
|X||28-pin EPROM used in U2 (ex. 27C256 EPROM)|
|K2||UART side hardware handshaking (DSR, CTS)||X *||DSR (this should be paired with K3 - DTR) - default|
|X||CTS (this should be paired with K3 - RTS)|
|K3||UART side hardware handshaking (DTR, RTS)||X *||DTR (this should be paired with K2 - DSR) - default|
|X||RTS (this should be paired with K2 - CTS)|
|K4||Serial side hardware handshaking (DSR, CTS)||X *||DSR (this should be paired with K5 - DTR) - default|
|X||CTS (this should be paired with K5 - RTS)|
|K5||Serial side hardware handshaking (DTR, RTS)||X *||DTR (this should be paired with K4 - DSR) - default|
|X||RTS (this should be paired with K4 - CTS)|
|K6||U2 chip type (27C080 EPROM, 29C040 flash)||X *||27C080 EPROM used in U2 - default|
|X||29C040 flash used in U2|
|K7||U23 SRAM (512K or 128K)||X *||512K chip used in U23 - default|
|X||128K chip used in U23|
|K8||U2 chip type (27C080 EPROM, 29C040 flash)||X *||27C080 EPROM used in U2 - default|
|X||29C040 flash used in U2|
|K9||Parallel Port power control (pin 25)||X *||GROUND - default|
|X||VCC ( WARNING - this setting will send VCC power down pin 25 of the parallel port which may potentially damage connected device)|
|K10||MCPL (Memory Page Config Latched)||X *||32K upper RAM fixed/32K lower RAM switchable memory map - default|
|X||48K upper RAM fixed/16K lower RAM switchable memory map (banked)|
|K11||MCPL (Memory Page Config Latched)||X *||32K upper RAM fixed/32K lower RAM switchable memory map - default|
|X||48K upper RAM fixed/16K lower RAM switchable memory map (banked)|
|K12||Bus Interrupt (pin A23)||X *||Internal UART interrupt - default|
|X||External ECB interrupt|
|K13||ECB/Kontron Reset configuration||X *||ECB legacy: pin C-31 is Reset OUT to peripherals - default|
Kontron compatible: pin C-31 is Reset IN from a SPST pushbutton pin C-26 is Reset OUT to peripherals.
N.B.: All boards in a system must use the same setting. Older boards don't have this jumper; hence, 1-2 is specified as the “default” setting. Newer systems should use the Kontron setting, since the newer backplanes have the Reset IN connector for pin C-31. (JRC 2015-7-6)
* = default setting
Serial Cable Instructions
The SBC V2 doesn't have any video capabilities in its solitary form. Therefore, in order to test it, you will need to connect it to a serial terminal (which will provide the keyboard input and monitor output). The easiest way to do this is to construct a cable which will provide a serial port (with a D-sub connector or DE-9 plug) which will plug into a “host” computer running a serial terminal emulation program. This program will allow you to interface with the SBC V2 board using the host computer’s keyboard and monitor.
First, you must build a cable with an IDC-10 plug on one end (plastic rectangular connector with 2 rows of 5 pins) and a female DE-9 plug (ie. a serial port plug) on the other end.
The female DE-9 plug is what you will plug into the serial port of your host computer. Serial ports (on the back of the computer) are male ports (ie. they have pins), so the plug at the end of this cable must be a female plug (they have holes). It's not recommended to use accessory serial cables to make this connection (such as null modem cables, etc.). This is because many such cables are wired for specific applications, and may not work with your SBC V2 board. For instance, a serial data transfer cable is wired very differently from a “straight-through” serial cable (pin 1 to 1, 2 to 2, etc.) which is different from a null modem cable. Because of this cable inconsistency, it's preferred to build the complete custom cable from the beginning knowing exactly what pin is connected where and why, and not to use any serial extension cables. The exception to this is using a serial cable that you know is wired as a “straight through” cable (with each pin on one plug connected to each pin on the other plug: 1 to 1, 2 to 2, etc).
The following cable layout shows what is being connected where in this cable:
|IDC-10 side||DE-9 side|
Pin 1 on the IDC plug is marked with an embossed triangle on the plug, and this pin corresponds to pin 1 on the pcb which is marked with a square solder hole (at the lower-right most position of the plug on the SBC V2 pcb). The pins on the DE-9 plug are usually marked right on the plug itself in tiny numbers. Strip some wires and solder away. Instead of stripping wires and soldering manually, you can also use ribbon cable and special “direct connect” plugs that connect directly to the ribbon cable without soldering (they have rows of metal “pins” that press down and penetrate the ribbon cable to make the connections). Because of the non-standard pin connections that are needed in this cable (per the above table), however, you will likely need to do some soldering or “custom connecting”.
Always double and triple check where you’re soldering something before you solder it. When you’ve built your cable, use your multimeter to check connectivity between each pin on the IDC-10 side and the DE-9 side according to the arrangement above to make sure you got it right.
In order to test connections in a plug you cannot stick the multimeter lead into the hole (because it will not fit). Instead, take a spare piece of wire, stick it into the hole for the pin you want to test, and then touch the multimeter lead to that wire.
Flow control considerations:
ROMWBW will automatically identify the type of serial chip installed. Depending on the capability of the serial chip, flow control may or may not be available. Chip data sheets cannot be relied upon to accurately identify the chips capability.
In the absence of flow control, guidelines for baud rate settings are:
4Mhz CPU Crystal - 38400 baud
8Mhz CPU Crystal - 57600 baud
Baud rate can be changed using the CP/M MODE program i.e. MODE COM0:57600,8,N,1 /P
If garbled characters are seen on the display or serial file transfers fail, a lower baud rate should be tried.
Full list of parts::boards:sbc:sbc_v2:sbc-v2-parts-list.pdf
See here for minimum build and parts substitution guidelines.
There is extensive firmware support for the SBC V2 and associated ECB peripheral cards. Currently there are two firmware builds still being actively developed - UNA and ROMWBW.
See here for current software builds and information on historical projects.
A debug boot ROM can be installed for testing - try James Moxham's ROMIMAGE.BIN from here.
REAL TIME CLOCK (RTC)
The DS1302 real time clock can be set under CP/M using the rtc utility program.
Loading CPM... CP/M-80 Version 2.2C for the N8VEM, October 2008 Run XM from A drive, this downloads file to B drive A>rtc Start RTC Program RTC: Version 1.0 RTC: Commands: E)xit T)ime st(A)rt S)et R)aw L)oop C)harge N)ocharge D)elay I)nit G)et P)ut H)elp RTC: trickle charger disabled. RTC>
Set the time and date with the Init command first and then use the Set command to program it.
RTC.COM can also be used to set up trickle charging for the backup battery or super capacitor if connected. More Information on charging Super Capacitors can be found here: https://www.maximintegrated.com/en/design/tools/calculators/product-design/supercap.cfm
The utility can also set and read the RTC memory.
A single color or bicolor LED can be installed for the status LED. The LED monitors the status of the HALT line from the Z80 CPU. Consider the color selection and orientation when choosing. A red/green LED is ideal and logically should show green when cpu is running and red when halted. Or in the case of a single colour LED, on when cpu is running and off when halted. It is wise to not fully solder in the LED until the orientation has been checked to confirm the right sequence. Or, you could install a pin header and run flying leads to an LED mounted in a case,
The HALT status can be initiated by booting CP/M and running the DDTZ debugger, loading and executing a HALT instruction.
B>ddtz DDTZ v2.7M by CB Falconer. CPU=Z80 -a100 0100 hlt 0101 -g100
The SBC can be configured with 128Kb or 512Kb RAM and up to 512Kb ROM. The Z80 processor can only access 64Kb at one time, so the additionally memory is accessed through a memory paging scheme.
The memory paging system can be configured in two different ways but the default is to be set with 32Kb of RAM fixed at the top 8000h-FFFFh memory range and for the bottom 32Kb 0000h-7FFFh being selectable from either the RAM or ROM chips. This 32Kb/32Kb configuration is what is supported by the ROMWBW software package.
Under the 32Kb/32Kb configuration, the top 32Kb is mapped to the last 32Kb of the 128Kb or 512Kb RAM chip and the lower 32Kb is selected from RAM or ROM by writing the required address line configuration to the RAM or ROM memory page configuration latch.
One Bit Input Port
Bit 6 of RTC port $70 is connect to an on board jumper JP2 which can be read by software. By default it is tied high. Removing jumper JP2 will result in the being tied low (=0).
Effectively this creates a configurable jumper setting which the ROMWBW bootrom can use for determining the primary communications console.
This facility is not enabled by default in ROMWBW and the setting is ignored. To enable, rebuild the ROMWBW package with the CRTACT setting set to true. The CRT type can also be configured at this time:
CRTACT .SET TRUE ; CRT ACTIVATION AT STARTUP VDAEMU .SET EMUTYP_ANSI ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...)
This will cause ROMWBW to check the status of BIT 6 at startup. If “0” (jumper removed) it will change the primary communications console from the Serial UART to the first CRT console found. If a CRT console is not found it will default back to the Serial UART. If BIT 6 = “1” (jumper in place) it will boot as normal with the primary console using the Serial UART.
Boot "BEEP" modification
There is no inbuilt sound on the SBC V2-003 board. Complex sound output can be achieved with the ECB-SCG (Sprite-Colour-Graphics) board.
Rudimentary sound support can be add the SBC V2 by utilizing one of the unused outputs of the RTC interfacing latch and connecting a simple amplifier to this output.
On U18 74LS174 connect a ground wire from pin 8 and a signal wire from pin 2 to an amplifier. Generic LM386 amplifiers are available from many sources and work well.
With this addition and the
SPKENABLE setting set to
TRUE in ROMWBW, the SBC V2 will issue a beep sound on bootup.
A transistor speaker driver has been incorporated in the SBC-V2-004 so a speaker can be connected directly to the board.
Sound support has been added to NASCOM BASIC in ROMWBW 2.9.2-pre.17:
PLAY O,N,D Where: O = OCTAVE 0-8 N = NOTE 0-11 D = DURATION 1-8 (8ths of a second) Example: Middle C for one second = PLAY 4,0,8
Speed switch modification:
The following modification allows the cpu clock speed to be changed from full to half speed under program control. The purpose of this modification is to provide a level of compatibility with MSX applications while retaining the high speed capability. Specifically a 7.159Mhz crystal can be installed for normal operation including high density floppy disk support but be switched to 3.5795Mhz to drive the Sprite Colour Graphics board when required.
This modification requires a 74LS74 to be modified and mounted on top of U4. Five leads are required to connect to other parts of the circuit. Suggested installation method:
Prepare connection points for new clock source:
- Remove Z80 CPU U4 and fold out pin 6 and reinsert.
- Remove 74LS244 U17 and fold out pin 6 and reinsert.
Prepare a 74LS74 for mounting on 74LS10 U4
- Fold up pins 1-6 and 8-13 and snip off the ends leaving the stubs. Pin 7 and 14 remain for connecting to 74LS10 U4.
- Solder a wire from pin 14 to pin 1 and then to pin 11 (brown wire).
- Solder a wire from pin 4 to pin 9 (blue wire)
- Solder wire from pin 13 to pin 5 (green wire)
- Solder wire from pin 12 to pin 7 (yellow wire)
Mounting 74LS74 and connecting flying leads on component side of board:
- Place the 74LS74 over 74LS10 U4 so only pin 7 and 14 are touching.
- Solder pin 14's together and pin 7's together.
- Solder a wire from pin 2 of the 74LS74 to pin 5 of 74LS174 U18 (purple wire)
- Solder a wire from pin 11 of the 74LS74 to pin 12 of 74LS06 U26 (orange wire)
- Solder a wire from pin 3 of 74LS74 to pin 13 74LS06 U26 (red wire).
- Solder a wire from 7 of the 74LS74 to lifted pin 6 of 74LS244 U17 and then to lifted pin 6 of Z80 CPU U24 (yellow wire)
Solder side connections:
- Solder wire from pin 5 of CPU clock P4 to pin 13 74LS06 U26 (red wire).
Bit 4 of port 70h is used to select the clock speed. The normal condition is for Bit 4 to be set to 0 (low) and this will select the full clock speed of the installed crystal. Writing a 1 (high) to Bit 4 of port 70h will activate the 74LS74 clock divider. The speed switch is currently not supported in ROMWBW. Use of the RTC or speaker will reset Bit 4 to 0 i.e. full speed operation. Further, precalculated software delays or delays based on the initial speed detected at boot time do not take into account the possibility of the speed changing.
1 OUT 112,0 2 PRINT "NORMAL SPEED" 3 GOSUB 10 4 OUT 112,8 5 PRINT "SLOW SPEED" 6 GOSUB 10 7 END 10 FOR X=1 TO 64 20 PRINT "."; 30 FOR Y=1 TO 256 40 NEXT Y 50 NEXT X 60 PRINT 70 RETURN
Recovery mode switch modification:
In some situations, reflashing a new ROMWBW image may result in an inaccessible system. This may happen when conflicts occur due to enabling additional ROMWBW features, when additional drivers are selected or during development.
A basic recovery mode process can be activated, so that the minimum driver set is activated on boot. This is achieved by activating the BT_REC_TYPE option in your custom configuration. When activated ROMWBW will check an input at boot time to see if the recovery mode should be activated. A number of options can be selected to define what this input is.
BT_REC_TYPE .SET BT_REC_SBC1B ; CHECK 1-BIT IO PORT
Boot recover input options:
BT_REC_NONE NO RECOVERY MODE BT_REC_FORCE FORCE BOOT RECOVERY MODE BT_REC_SBC01 BIT 1 RTC HIGH BT_REC_SBC1B 1-BIT IO PORT BT_REC_SBCRI 16550 UART RING INDICATOR LINE
BT_REC+SBC1B utilized the existing 1-BIT IO jumper header on the SBC-V2. Connecting a push buttons switch to this header is all that is required. However, this will override the CRTACT option if that is in use. The following two options use other inputs that do not interfere with existing setting but require modification to the board
BT_REC_SBC01 uses the RTC data line and requires soldering a push button switch to GND and RTC clock data line.
BT_REC_SBCRI used the unused 16550 UART Ring Indicator line as an input. A more complex modification required. The ring indicator pin needs to be lifted out of the socket and a resistor and push button switch wired in.
The SBC V2 uses address 60h - 7Fh for on board peripherals. Address decoding is not complete so some address ports are duplicated within this address range. All other I/O address ranges are exported to the ECB.
|82C55 PPI||Parallel Port||60h-63h ( & 64h-67h)|
|16550 UART||Serial Port||68h-6Fh|
|DS1302 RTC||Real Time Clock||70h ( & 71h-77h)|
|RAM||RAM bank select latch (Write Only)||78h ( & 79h)|
|ROM||ROM bank select latch (Write Only)||7Ch ( & 7Eh)|
asciiart.bas benchmark for SBC-V2 8Mhz Z80 board running Microsoft MBASIC v5.21:
10 FOR Y=-12 TO 12 20 FOR X=-39 TO 39 30 CA=X*.0458 40 CB= Y*.08333 50 A=CA 60 B=CB 70 FOR I=0 TO 15 80 T=A*A-B*B+CA 90 B=2*A*B+CB 100 A=T 110 IF (A*A+B*B)>4 THEN GOTO 200 120 NEXT I 130 PRINT " "; 140 GOTO 210 200 IF I>9 THEN I=I+7 205 PRINT CHR$(48+I); 210 NEXT X 220 PRINT 230 NEXT Y 000000011111111111111111122222233347E7AB322222111100000000000000000000000000000 000001111111111111111122222222333557BF75433222211111000000000000000000000000000 000111111111111111112222222233445C 643332222111110000000000000000000000000 011111111111111111222222233444556C 654433332211111100000000000000000000000 11111111111111112222233346 D978 BCF DF9 6556F4221111110000000000000000000000 111111111111122223333334469 D 6322111111000000000000000000000 1111111111222333333334457DB 85332111111100000000000000000000 11111122234B744444455556A 96532211111110000000000000000000 122222233347BAA7AB776679 A32211111110000000000000000000 2222233334567 9A A532221111111000000000000000000 222333346679 9432221111111000000000000000000 234445568 F B5432221111111000000000000000000 864332221111111000000000000000000 234445568 F B5432221111111000000000000000000 222333346679 9432221111111000000000000000000 2222233334567 9A A532221111111000000000000000000 122222233347BAA7AB776679 A32211111110000000000000000000 11111122234B744444455556A 96532211111110000000000000000000 1111111111222333333334457DB 85332111111100000000000000000000 111111111111122223333334469 D 6322111111000000000000000000000 11111111111111112222233346 D978 BCF DF9 6556F4221111110000000000000000000000 011111111111111111222222233444556C 654433332211111100000000000000000000000 000111111111111111112222222233445C 643332222111110000000000000000000000000 000001111111111111111122222222333557BF75433222211111000000000000000000000000000 000000011111111111111111122222233347E7AB322222111100000000000000000000000000000