TMS9995 Max II

Information here is about a TMS9995 pcb board that has full 64k of memory and a TMS9901 peripheral chips (2).

PLD Code - no peripheral chips

Name            9995 EMVBUG + Cortex extra ram space;

Partno          0001;

Revision        Ver 1;

Date            27/10/17;

Designer        mc;

Company         mcoz;

Location        oz;

Assembly        manual;

Device          g22v10;

/** Inputs **/

pin [2..11] = [a6..15] ;

pin 14 =nmemen;

pin 13= nwe;

/** Outputs **/

pin 17 = rom;

pin 23 = mce;

pin 20 = !sce1;

pin 18 = !cruclk;

/** Declarations and Intermediate Variable Definitions **/

field ioaddr= [a15..6];

sce1_eqn   = (ioaddr:[0000..003F]);

/** Logic Equations **/

mce = !a15 # nmemen ;

rom  = a15 # nmemen;

sce1  = sce1_eqn & nmemen;

cruclk   = nwe;

Here is Binary code for the EPROM - load from address h0000.

After loading the Monitor and cortex Basic into EPROM ...  press rest button then any key on keyboard to get the PROMPT for EVMBUG or BASIC

As you can see it runs with 22K free RAM space

now the trick is to find out why NVRAM does not cooperate

Here is schematic of the board with EPROM option and 2 peripheral chips ..

Vew of a PCB ...of above circuit

Partly completed board .. note the colours on the com1 port for comms .. note you do not need the peripheral chips to run the board.

To add the peripheral function to the board with extra 2 9901 chips change to pld code to something like this..

PLD for peripheral chips ..

Name            9995 EMVBUG + Cortex extra ram space;

Partno          0001;

Revision        Ver 1;

Date            20/05/19;

Designer        mc;

Company         mcoz;

Location        oz;

Assembly        manual;

Device          g22v10;

/** Inputs **/

pin [2..11] = [a6..15] ;

pin 14 =nmemen;

pin 13= nwe;

/** Outputs **/

pin 17 = rom;

pin 23 = mce;

pin 22 = !ce1;

pin 21 = !ce2;

pin 20 = !sce1;

pin 18 = !cruclk;

/** Declarations and Intermediate Variable Definitions **/

field ioaddr= [a15..6];

sce1_eqn   = (ioaddr:[000X..003X]);

ce1_eqn   = (ioaddr:[004X..00CX]);

ce2_eqn   = (ioaddr:[01XX..014X]);

/** Logic Equations **/

mce = !a15 # nmemen ;

rom  = a15 # nmemen;

sce1  = sce1_eqn & nmemen;

ce1  = ce1_eqn & nmemen;

ce2  = ce2_eqn & nmemen;

cruclk   = nwe;