|
The Memotech MTX Series |
|
Memotech Compact Flash System - Version 2
CFX - II
one ?)
Introduction
CFX-II is a
development of CFX, which itself
was spin-off of the Compact Flash storage system developed for
MTXPlus+, our modern day,
fully compatible, MTX "super computer". For full details of the
development and features of CFX, see the
CFX project page.
CFX-II started
life as SFX, see the now redundant
SFX page for the background. As the design progressed, it became clear
that we were really working on an enhanced CFX, rather than a
completely new idea, so the SFX name was dropped and we decided
to rebadge the new design as CFX-II.
Changes from CFX Version 1
The Compact Flash interface in MTXPlus+
and CFX uses two of the 8-bit ports of an 82C55 PPI to
facilitate 16 bit access to the IDE interface. As well as
supporting Compact Flash cards, this interface would
theoretically also allow hard drives or optical drives to be
used, however, the use of those types of devices is unlikely to
have any practical use on a 4MHz MTX.
It is possible to use the Compact Flash
in 8 bit mode which does not require the 82C55, Martin did some
testing in 8-bit mode and found that the data transfer rate was
actually about twice as fast as 16 bit mode. We decided to use 8-bit mode
for CFX-II which would be faster than
CFX and reduce the component
footprint, at the expense of 16 bit compatibility.
While SFX was still at the concept stage,
a couple of other enhancements were added. Martin and I had been
discussing the non-Memotech Silicon Disk that was present in one of my FDXs
and decided that adding a Silicon Disk to SFX was feasible. In
addition, during
Memofest 2016, Bill Brendling had demonstrated an
80 Column card add on for CFX
based on the
Parallax Propeller. Bill's 80 column modification has been
added to CFX-II.
NB: the 80
column mode is only available under
CP/M; the MTX TV and video (AV) outputs are still used to
display the 40 column output from the TI 9929 VDP in the same
way that the Memotech 80 column card was used in the CP/M
version of FDX and SDX.
One of the limitations of using
CFX on a 32k MTX500 was the inability to run
CP/M, as the operating system needs 64k of RAM. This was also
the case with Memotech's SDX and FDX disk systems which only ran
on MTX512 and above computers. Since it was relatively
straightforward to add a 32k "skinny" DIP RAM to the
CFX-II board, this change was also included.
As with CFX,
CFX-II is self
contained - it does not require any modifications to the MTX
motherboard ROMs.
Hardware
CFX-II comprises of
:
-
An SSTSF010 128 kB x 8 CMOS Flash
holding the CP/M, SDX and support ROM images
-
A 512 kB CMOS SRAM for the Silicon
Disc (optional)
-
A 32kb RAM in a narrow DIP package
for the 32k to 64k MTX memory expansion (optional)
-
A
Parallax Propeller Microcontroller Unit (MCU) for the 80
Column board hardware
-
A serial EPROM storing the executable
code for the Propeller chip
-
A Programmable Logic Device (CPLD)
incorporating all of the glue logic previously done in 74LS
logic
-
JTAG Programming port for the CPLD
-
Programming interface for the serial
EPROM
-
VGA Connector (external version) or
Pin header (internal version) for 80-Column output
I/O Port Range
In Memotech's original design, I/O ports below 20h
can be provided by the motherboard and internal/external
add-ons. Ports 20 and above were to be provided from within the
FDX, the SDX ROM used ports 10h to 14h.
As with MAGROM, I wanted the flexibility to be able to mount
CFX internally, thus board space is at a premium. In Version 1
of CFX, the glue logic was done using 74 series components and
with the small
number of logic gates that it was possible to fit into the footprint, the range of I/O decode lines
was very limited, so Version 1
used Z80 I/O ports 6Ch to 6Fh. This port range was not used by Memotech and is shown as available on Andy Key's list of I/O
ports used by Memotech and for modern day add-ons1.
In Version 2 of CFX,
the glue logic is done in an Altera MAX7000
CPLD, although all of the address lines are connected to the
CPLD and the full range of Z80 I/O ports could be decoded, the
I/O port range has been maintained for compatibility reasons.
Since the emulation of the 80 column card
is done using different display hardware than Memotech used in
the FDX/SDX display controllers (Motorola
6845) and the ROM needed to be changed to support the new
hardware, there was no advantage in retaining the original 80
column card I/O port assignments () so ports 60h and
61h are used to interface with the Parallax
Propeller.
PCB Dimensions
As well as the depth constraint, there is also a limit to the
width of an internal board if it is to be compatible with the
existing range of MTX expansion boards, RAM, ROM, and the
RS-232/FDX interface board (using only the RS232 ports).
Each of these boards was half the width
of the expansion card area, i.e., up to two expansion
cards could be installed internally. (A combined
80-column/RS-232 board, taking up the full width of the
expansion card area was released later but is not
relevant to this discussion, since it was meant to
support Memotech's own disk based CP/M add-on using a
disk interface connected the the cartridge port on the
left hand side of the case. If you have one of those,
you probably don't need CFX-II.
The Version 1
CFX PCB was narrow enough that edge
connectors could be installed on both sides of the board
and it could be switched between internal and external
mounting at will - even if a Memotech memory board was
installed. With the increased component footprint of
CFX-II, this would no longer have been possible. If a
Memotech memory board is installed, the CFX-II PCB could
not have had the right hand side edge connector fitted
without removing the MTX computer side plate. In most
cases, this is not likely to be a problem as the Memotech memory board could be removed. It would only be
a problem if the Memotech memory board could not be
removed if it were soldered in. |
The other space constraint on
the CFX PCB was driven by the price points set by the PCB
manufacturers that I use in China. There is a price break at
100mm x 100mm and the cost of CFX is minimised if I keep the
PCB size below this limit. Meeting this target with the
increased complexity of CFX-II proved to be a real
challenge, both to my component layout "skills" and the
track auto-router that I use. The only way that I could keep
to this PCB size limit was to remove the second edge
connector, meaning that the standard fit for CFX-II will be
external only. However, based on
the problem that I accidentally introduced with
Version 1.1 of the MAGROM
PCB and the convenient solution suggested by Martin,
this isn't actually a barrier to installing the PCB
internally. Although the board would not be reversible,
depending on how the edge connector is fitted to the PCB,
the board can be installed either externally or internally.
Firmware
The CFX-II ROM provides versions of both the MTX SDX BASIC ROM
and a CP/M ROM based on the original Memotech CP/M ROM with 80
Column Card support. See the
CFX-II firmware page for full details.
Hardware
Hardware |
Version 0.3 of the
provisional SFX design, incorporating a 32kB RAM, RTC,
82C55, 2 x GALs for I/O and Memory decode logic and
512kB Flash memory.
The Flash was intended to hold the
SFX System, CP/M and SDX ROMs, with the remaining
480kB originally intended to be used to store MAGROM game
files. |
|
Martin's V0.3 prototype
board |
|
Solder side of the V0.3
prototype board |
|
The prototype board running
an early version of the SFX
ROM.
The screen shows the RTC working and the
system seeing the additional 32K of RAM - in this
case, the board in plugged into a 64K MTX, giving
96K total RAM.
This was as far as the
proposed SFX got before Bill showed off his 80
Column card board at
Memofest 2016. |
|
With Bill's input, the
functionality of the board has now been expanded to
include VGA output from an emulated 80 Column board.
In addition, Silicon Disc functionality has been
added.
As you can see from Martin's draft
V0.6 layout, the component footprint has increased,
which led us to drop the RTC from the scope of
SFX to save board space. |
|
Martin's partially
completed prototype V0.6 board, now taking up around
70% of a Eurocard size prototype board and does not
include the 32kb RAM addition. |
|
Fully assembled prototype,
powered on and working !
As you can see,
there are significantly more components on the board
than CFX, but I am still
hopeful that the final PCB will be suitable for both
internal and external mounting.
This will
probably mean mounting some components on the
underside of the board so that the portion of the
board in the shallowest part of the MTX case can be
used too. |
|
Solder side of the
prototype board |
|
The output from the
prototype board, showing the boot screen output from
the MTX monitor output and test output from the 80
column screen on a VGA monitor. |
|
Close up of the 80 column
output with the screen filled with 80 column text,
displayed on the VGA monitor. |
|
Initial test of the 80
Column output under CP/M using the SFX CP/M BIOS and
a very basic driver for the Propeller hardware. |
|
More development of the
CP/M driver - now with colour!
Mimicking the
colour boot screen that would be seen on an FDX with
colour monitor. |
|
Screenshot showing colour
NewWord running from CP/M.
At this point, the
80 Column Escape codes have not been implemented, so
scrolling does not work, but the screen display
looks good. |
|
When, thanks to the hard work of
Martin and Bill, CFX-II
got to this stage, I started to think about building
my own prototype, with the addition of the 32kb RAM
expansion and using a CPLD, rather than 74 series
components for the glue logic.
Despite
having had lots more practice, my soldering "skills"
are still not great and the thought of wiring up
another complex prototype board did not really
appeal to me though. When I saw that my PCB
manufacturer had a bit of a sale on and that I could
get a small run of boards made pretty cheaply, I
decided to take a chance and get a few boards made
based on Martin's prototype with a few, hopefully,
low risk modifications added. |
I took Martin's design and
replaced the 74 series logic components with an
Altera MAX 7000 CPLD and added a 32kb CMOS RAM in a
skinny DIP package to enable the board to provide
the necessary RAM upgrade to allow a MTX 500 to run
CP/M. |
|
The size of the Memotech
option ROMs was 8kBytes, for CFX we need space for
the SDX and CP/M ROMs, i.e., 16kBytes in two 8kByte
"pages". Address lines A0 to A12
can address 0 to 8191d locations, and A13
allows a second block of 8kB to be addressed. In
CFX, the Page Port R0 line is used to select the
appropriate ROM page.
CFX/CFX-II was designed to use
Flash storage, although only 16kB is used, larger
devices can be used if available. |
|
CFX/CFX-II can also use EPROMs
provided that it is acceptable for the programming
voltage on Pin 1 to be 0v in normal operation.
A selection of compatible Flash and EPROM
devices are shown in the table - the component
datasheets are available by clicking on the
hyperlinks. |
|
The second edge connector
included in CFX Version 1 was removed to meet the
size constraints described earlier.
CFX
Version 1 had all of the components squeezed into
the top 2/3 of the board to allow the PCB to fit
underneath the MTX keyboard when it was mounted
internally.
The increased component count for
Version 2 means that this is no longer possible but
the PCB should fit internally if mounted upside down
as has been done with the MAGROM Version 1.1 PCB. |
|
The KiCad 3D view of the
PCB showing how the board would look when configured
for connection to J10, the MTX expansion connector
on the left side of the case.
In this
configuration, the edge connector would be mounted
below the PCB and a standard 15-pin "D" type VGA
socket installed to connect to the monitor.
Pin headers are included for cabled connections for
the VGA monitor, CPLD JTAG connector and a
programming connector for the serial EPROM.
Not shown are the 18 through hole resistors mounted
inside the 40 pin propeller socket. |
|
Prototype PCB, assembled
for external installation
There are a few
minor issues with the PCB that need to be corrected |
|
- The CPLD socket footprint that I used turns
out to be slightly smaller than the sockets that
I have, so there is not enough clearance between
the SMD capacitors and the edges of the socket.
The components can all be fitted, provided that
the capacitors are fitted first, but the socket
then does not quite sit flush on the PCB, but
there's no real problem.
- Using a box type header for the JTAG
connector leads to a clash with the ROM chip.
- VGA connectors for PCB mounting come in
different sizes, while the socket that I have
fits onto the PCB, the ones that Martin have
don't. On the next version of the PCB, I will
see if I can create a more universal VGA
connector mounting
- VCC for the Serial EPROM should be connected
to 3.3V, rather than 5V.
|
Startup of the CFX-II PCB
with the minimum hardware configuration, i.e., only
the CPLD and system ROM installed.
There was
no CF drive connected and the additional RAM and 80
column video were not installed at this point.
As you can see, Martin has done a nice new
"CFX-II" logo |
|
For this test, the
32k RAM has been installed and temporarily remapped
above the 64k RAM area to make it visible when the
board was installed in my MTX512 test bed.
The system correctly reports a total of 96k of RAM
present.
For "production" boards, there is no
real use for RAM above 64k, so CFX-II boards
intended for installation in a MTX512 will likely
omit the 32k RAM chip. |
|
The next step should just have been
to install the CF card reader and test booting CP/M
and reading/writing the CF card from CP/M and SDX
BASIC, however, things didn't go quite as smoothly
as expected. In fact, were looking pretty ropey for
a while !
The first time that I tried the CF
card, the system booted successfully and things
appeared to be working as expected - unfortunately,
that wasn't to last . . . .
I found that
access to the CF card was unreliable and the CF
drive was pretty much unusable. I tried a number of
things, including using different MTXs, power
supplies, CF readers and CF cards - all to no avail.
I suspected that the power being drawn by the new
design might have been an issue and measured the 5V
current consumption of the bare MTXs, as well as
with CFX-I, CFX-II and REMEMOrizer boards fitted.
The largest power requirement was with REMEMOrizer
(which worked perfectly), but the difference between
all four scenarios was trivial and I ruled out it
being a power issue.
To try and eliminate
construction errors, I even resorted to assembling
another CFX-II, this time for internal mounting, but
the results were the same. At this point, I resorted
to running remote diagnostics - meaning that I sent
one of the assembled boards off to Martin for him to
test on his systems and see whether he could spot
any construction errors that I might have made.
When Martin tried the board, it worked perfectly
on both of his MTXs. At this point the differences
between our MTXs came to light. My machines have the
original NMOS Z80 CPUs installed, whereas Martin had
previously replaced the CPUs on his machine with
CMOS chips. When this information came to light, I
replaced the CPU in my machine with a CMOS Z80 and
lo and behold, my internal CFX-II now worked without
error.
The original CFX design included a
82C55 PPI that was used to interface the CF reader
with the Z80 CPU and support 16 bit transfers.
CFX-II uses 8 bit data transfers and the 82C55 is no
longer needed. This means that the Z80 is directly
interfaced to the CF reader, which is obviously an
issue with an NMOS CPU.
It would likely be
possible to put buffers between the CF card and the
Z80 control and data lines, but this would mean
increasing the PCB size. Instead, I will probably
include a replacement (CMOS) CPU with CFX-II
purchases.
|
Ta Da!
With a CMOS
CPU installed in the MTX, the system can use the CF
reader reliably.
This version of the ROM uses
the SCPM 62 column graphics mode for CP/M as was
used for CFX Version 1.
|
|
With the 512k SRAM
installed, the system can be configured to have a
type 41, 512k Silicon disc as shown here.
Although the Silicon disc contents survive reboots,
the disc handler must be reloaded and the drive
reconfigured after a reboot. This will be fixed with
a ROM update.
(Update : This was fixed in ROM
Version 206) |
|
And finally, with the ROM
updated to drive the emulated 80 column card
hardware and the Parallax Propeller and its boot
EPROM installed, you can see the significant
improvement in the quality of the CP/M output when
driving a VGA monitor. |
|
And the colour VGA output
after the RAM disk has been configured. |
|
To differentiate the CFX-II
builds from CFX, Martin has increased the Build
number to 2xx.
As CFX-II will need the MTX to
have a CMOS Z80 CPU installed, the boot screen now
reports the CPU type as either CMOS or NMOS and
issues a warning if an NMOS is found. |
|
If CFX-II is booted into
CP/M mode (with <reset> <c>), the MTX VDP output
displays "CPM Boot", rather than displaying a
blank/black screen as the original MTX FDX and SDX
add-ons did. |
|
Pushing the envelope
- or rather, pushing the Parallax Propeller (too
far)
As described above, the basis of design
for CFX-II was for the Parallax Propeller to
generate an 80 column VGA output from an emulated 80
column card but not to generate video from the VDP -
in the same way that the FDX/SDX 80 column cards
were independent of the VDP output.
Tony
Brewer suggested that Bill might be able to also use
the Propeller to generate a shadow display for the
VDP, allowing the VGA screen to also display output
from games etc. Bill did think that this was going
to be a stretch for the Propeller; whilst it is a
nice device, it is not particularly powerful,
particularly when compared with some other
microcontrollers, but he has had a good stab at it!
|
|
|
Status
As
of the end of March 2017, three working CFX-II
PCBs have been assembled and proved working, one internal
and two external. These three boards have proved that
CFX-II meets the original design
intent, they have working 80 column VGA output, Compact
Flash "disk drive", 512k Silicon Disc drive and 32k memory
expansion available, when used in an MTX with a
CMOS CPU. The minor PCB layout issues
described above are not essential for CFX-II
to work and would not have prevented me from supplying the
device to anyone interested - that is still the case - see
below for availability.
However, when the requirement to fit a CMOS CPU as part of
the CFX-II upgrade became clear,
we started to plan a redesign to allow CFX-II
to work without replacing the original MTX NMOS CPU.
Although in itself, this should not have necessitated large
scale changes, a number of other changes are being planned
that will likely delay shipping of what will become
CFX-III for at least 2-3 months, if
indeed, it actually sees the light of day!
Availability
I shall shortly be taking orders for CFX-II,
please send me an e-mail if you are interested in buying
one. The price is
£tbc, including Postage & Packing to
the UK, plus
any applicable payment fees, e.g., Paypal (unless you pay
the fee).
News Flash : 02 April 2017
Due to the pending redesign, I plan on offering the few
CFX-II boards that I will have available (<10) to "early
adopters" at preferential rates. I will work out a price
shortly, but if you are interested, you could always make me
an offer . . . . .
(Note : it will not be possible to upgrade these
boards to CFX-III if/when it becomes available.)
The standard build of CFX-II is for external mounting, if you
want to mount CFX internally, please check that you have
adequate space inside the MTX, please contact me for advice
if you are unsure. The internal option requires that the edge connector
is mounted the other way up from the external version, this
decision must be made at build time. You will also need a
short IDE extension cable, and VGA breakout lead, there
will be an extra charge of £5.00 for an internally mountable
CFX (to cover the cost of the additional cables), depending on the configuration of your MTX, the CF card
reader may be inside or outside the MTX case. I will supply
a CMOS CPU to replace the NMOS CMOS that, unless it has
previously been upgraded, is probably present in your MTX.
Software
Note : For your convenience, I will include
a selection of MTX software on the CF card, for the
avoidance of doubt - you are not
paying for this software. Although the majority of the
included software is still under copyright, it is freely
available in various places on the Web, including my
software download pages.
Although it is extremely unlikely that the copyright
holders, even if they are still around, would want to assert
their rights to the software, it should not be distributed
for profit. The price of CFX
covers the cost of design, manufacturing and assembly of the
hardware only.
Please also note that, although the CF card contains a large
number of programs, although the majority will, not all
programs will run on the system, there are no guarantees
with the software ! Although I have tried much of the
software, there are many items that have not been tested, I
have put together
a "rough 'n' ready" list of what is on the first
partition, if you can share your experiences, I will update
the spreadsheet.
First
Production Run (March 2017) |
Board
Rev |
Firmware+ |
Serial |
Connector Configuration, Feedback |
Owner |
CFX |
Prop |
1.0 |
276 |
10A |
1 |
External - Fully working |
DS |
1.0 |
276 |
10A |
2 |
External - Fully working |
MA |
1.0 |
276 |
10A |
3 |
Internal - Fully working |
DS |
1.0 |
255 |
8 |
4 |
Internal - Fully working |
VP (it) |
1.0 |
263 |
9 |
5 |
External - Fully working |
BB |
1.0 |
276 |
10 |
6 |
Internal - Fully working |
IH |
1.0 |
278 |
10A |
7 |
Internal - Fully working |
MR (nz) |
1.0 |
106 |
11 |
8 |
External - Fully working |
AV |
1.0 |
161 |
11 |
9 |
Internal - Fully working |
SG (dk) |
1.0 |
|
|
10 |
External - Available to order |
|
Shipping address UK unless
otherwise noted (by Country Code) |
For firmware upgrades,
see here |
References:
1 Andy Key's Memotech Hardware page
2 Que Publishing, Upgrading and
Repairing PCs, 21st Edition, ISBN-13: 978-0-7897-5000-6.
Sample Chapter : The ATA/IDE Interface
|