December 9, 2020

Patch for Server DIR

The first version of the BIOS code in the flash memory of the MCX32-SD contained a bug that prevents the DIR command from working correctly when accessing an Emcee server. 

Any attempt to use a command like DIR 1 to display the contents of a server directory will result in an ?IO ERROR on the MC-10 or Alice.

Click the image above to download a patch for fixing this problem.

 

October 31, 2020

MCX32-SD Docs

 A User Guide for the MCX32-SD board is now available.

 


User Guide Download Link (pdf)


October 9, 2020

MCX32-SD

The MCX32-SD is an expansion module for the TRS-80 MC-10 and the Matra Alice 4K/32/90.  It adds 32K static RAM, 128K Flash (16 banks, 8K each) and an SD card socket. The SD card interface is managed by an Atmega328P micro controller.

 


The board is supported by MCX Basic version 3 which is programmed into the Flash memory.  MCX Basic version 3 adds many of the language features found in Extended Color Basic on the Tandy Color Computer (CoCo) along with the I/O commands to manage file storage on the SD card or an Emcee server.

Support for PMODE 3 and 4 graphics modes has been added allowing those with an internal video RAM upgrade to take full advantage.

 

 

The SD card interface supports SD and SDHC cards formatted with either the FAT16 or FAT32 file systems. Limited support for long file names (up to 39 ASCII characters) is included.

File types recognized are:

  • Basic programs as ASCII text, C10 emulator files or WAV audio.
  • Machine language (binary files) as C10, WAV or CoCo Binary format.
  • Basic Array files as C10 or WAV.
  • Basic Data files (PRINT#, INPUT#) as ASCII text.
  • PMODE graphics screens as raw data.

Assembly language programmers can utilize a set of BIOS routines to perform general-purpose random access I/O (Open, Close, Alloc, Seek, Read, Write). 


 

Ed Snider (TheZippsterZone) has designed a 3D-printed enclosure for the board and has agreed to take on the task of manufacturing and sales of the product. Availability is expected sometime before the end of 2020.

Further details and documentation to follow as they become available.



July 1, 2020

A Logical Solution

With a new internal RAM upgrade for the MC-10 having been announced, users of the MCX128 who install this upgrade would need new logic programmed into the GAL chip if they want the added internal RAM to be available for the video display.

Without updating the logic, you can still use the MCX128 on a computer with an internal RAM upgrade but the two highest resolution graphics modes (CG6 and RG6) will remain unable to make use of the bottom third of the screen. 

Previously, a special version of the GAL logic had been made available for computers with the 8K internal RAM modification.  However, this logic prevented proper use of the MCX128 on an unmodified MC-10.

For those with the ability to re-program the GAL chip, a new universal version of the logic is now available that allows the MCX128 to work properly on computers with or without an internal RAM upgrade.


Download Link:


June 26, 2020

Coming Soon...


Enclosure design is subject to change.








April 18, 2020

Giving an Old Mod a New Fix

Back in the September 1983 issue of Color Computer Magazine an article by Dennis Kitsz showed how to add an extra 4K of RAM to the MC-10 internally, bringing the total up to 8K.

At first it may seem a bit silly to bother with such a modification when it is far easier to add RAM via the expansion port.  But because the design of the MC-10 isolated the 6847 video display generator (VDG) from the expansion port, adding RAM externally would not solve the problem wherein the two highest resolution graphics modes (each of which requires 6K of video RAM) could not be used properly.  Adding RAM internally was the only way to fully support all the graphics modes.

Unfortunately the article seems to have been written prior to availability of the 16K Expansion module from Radio Shack. It is therefore unlikely that the modification was tested for compatibility with that module prior to publication.  As it turns out, when an external expansion module (including the MCX128) is used in conjunction with an MC-10 that has been modified according to the instructions given in the article, there will undoubtedly be some interference seen on the video display.  The intensity of the interference can vary greatly depending on what the software is doing at the time.  Examples can be seen in this YouTube video by CanadianRetroThings.





After rereading Mr. Kitsz article and carefully examining the details of his modification, the cause of the interference was revealed.  A 74LS139 chip was used to decode two of the address lines (A11 and A12) to produce the four individual chip-select signals for the 2K SRAMs (the two original SRAMs and the two piggybacked additions).  The problem is that the Enable pin (/G) of this decoder was erroneously connected to a signal that is used by expansion modules to insert themselves into the address space.  Any assertion of this signal will disable the decoder and prevent access to any of the SRAMs.  If the decoder is disabled early enough within a cycle, it can overlap the period in which the VDG is trying to access RAM and thus result in the interference seen on screen.

Original diagram from the article updated to show the correction.

The fix for this problem is relatively simple.  Eliminate the erroneous connection of the decoder's enable pin and tie it to GND instead.  This keeps the decoder enabled at all times, as it should be.

April 13, 2020

MC-11





The MC-11 is an unfinished project to create an SBC that is mostly compatible with the TRS-80 MC-10.



MCU 68HC11E1


The main component of this microcomputer is the E1 version of the Motorola 68HC11 micro controller. This is a 52-pin PLCC integrated circuit which provides address, data, and miscellaneous control signals. All timing in the system is derived from a 14.31818 MHz oscillator.  The 68HC11 MCU is clocked at either 3.579 MHz or 7.159 MHz as provided by frequency divider logic in the Xilinx CPLD. The MCU further divides this by 4 to produce an operating frequency of either 0.89 MHz or 1.78 MHz. This frequency is available as the processor clock E.

The 68HC11 is designed to be used in a minimum hardware configuration so, a number of I/O lines are provided directly on the chip. In the MC-11 computer these I/O lines are used to receive timing signals from the Video Display Generator, receive data from the PS2 keyboard controller, support data storage/retrieval on an SD card and provide a bit-banged serial I/O port.

The 68HC11 operates in Expanded Mode with 512 bytes of internal RAM, 512 bytes of internal EEPROM, a full 16 line address bus and an 8 bit data bus which is multiplexed with the lower eight address lines. De-multiplexing of the address/data lines is performed by the CPLD during the low portion of the E clock.  The Address Strobe signal (AS) provided by the MCU is not used in this system.  Instead, the CPLD uses the clock divider logic along with feedback from the processor E clock to determine the correct time for latching the address lines.



VDG


The video interface function in the MC-11 is performed by the Motorola 6847 along with an MC1372 to produce NTSC composite output. The 6847 is a video display generator that will produce nine colors (eight colors and black), an alphanumeric display mode, and several graphics modes. In the MC-11 the VDG is interfaced to the 32K static RAM and the mode control inputs are controlled by registered logic in the Xilinx CPLD under the direction of software.



RAM


Access to the 32K SRAM is shared by the MCU and the video display generator. This is accomplished by providing tri-state buffers between the address and data lines from the MCU, and synchronizing the operation of the VDG to the MCU.  All buffering and synchronization logic is performed by the CPLD.

Normally the MCU address buffers are disabled so that the VDG address is being supplied to the RAM and the RAM data is supplied to the VDG. However, during an MCU access of the RAM (E is high), the MCU address buffers in the CPLD are enabled and the MS* line of the VDG is asserted low to disable the MC6847 address lines. This provides the MCU address to the RAM chip and allows an MCU read or write cycle to occur.


EEPROM


The MC-11 uses a single 32K x 8 EEPROM to store the BIOS code and a Microsoft Basic interpreter.   The EEPROM is connected directly to the multiplexed address/data, however any possible contention is avoided by asserting the Chip Enable pin (CE*) for the device only during the high cycle of the E clock when a valid address is decoded by the CPLD.

The R/W line from the MCU is also connected to the EEPROM, allowing the chip to be programmed in-system.  The Output Enable (OE*) pin of the EEPROM is connected to pin PA5 of the MCU. This output-only port pin is low following reset and inhibits writing to the EEPROM under normal conditions. A software routine running exclusively from RAM can set the PA5 output high to allow a write cycle to be recognized by the EEPROM.



PS2 KEYBOARD


A controller for interfacing with a PS2 keyboard is implemented in an ATtiny84A micro controller.  The controller translates up/down key events into signals that are sent to the Xilinx CPLD.  The CPLD is programmed to simulate the keyboard matrix of a TRS-80 MC-10 and provides compatibility with existing software written for the MC-10.

Additionally, the ATiny controller is connected to the built-in UART of the 68HC11 allowing software written specifically for this SBC to directly receive and process up/down events from the keyboard.




April 3, 2020

MCX128




The MCX128 is an expansion module for the TRS-80 MC-10 or Matra Alice 4K.  It adds 128K static RAM and a socket to accomodate a 27128, 27256 or 27512 EPROM.

The board is supported by an extended version of the MicroColor Basic interpreter (MCX Basic) which needs to be programmed into the EPROM.  MCX Basic adds many of the language features found in Extended Color Basic for the Tandy Color Computer (CoCo).  It also supports using a PC/Mac or other host device as a file server.

Links:


Documentation:
  MCX Docs (pdf)

Emcee File Server for MacOS:
  Emcee Server App

PyDriveWire Server  (python, multi-platform):
  GitHub Repository

Latest Project Files  (December 2019):
  MCX128 Essentials

Purple PCBs:
  OSH Park