Hardware Modification Options
Tinyurl link https://tinyurl.com/mrl67k8
Introduction
The Z88 Flash/RAM card has been working for several years now. When OZ 4.6 was introduced, allowing applications to be run in RAM, some games failed to run.
Standard Version | Modified Monitoring Version |
|---|---|
This was thought to be due to an intermittent timing error from the decode chip CD74HCT139 which switches between the RAM and Flash chip but after the Z88 Hardware Investigation, it has been discovered to be a misunderstanding by both the hardware and software engineers on how to write faultlessly to the flash chip. This has only affected a few users, i.e. those who play games in RAM or who do repetitive writing to the flash card. The majority of users have not reported any problems.
Object
Although the best solution would be a software upgrade to OZ 4.7 allowing users to update their cards, it has been decided to see if by changing the hardware the same result may be achieved. See Writing to Flash Chips for a full explanation of what needs to be fixed. NOTE: This needs to be updated with the results found here.
The object of this exercise is to see if redefining the address map by hardware this prevents the flash chip from writing to the data bus when it is running OZ 4.7.
It has already been proved that if OZ 4.7 is run in a 256K EPROM card, the application runs faultlessly. This is because the code that the flash chip normally writes to the data bus is no longer written, as there is no flash chip.
Although using an EPROM was considered, the Protect Flash version was tried first. This worked allowing the EPROM versions to be discarded.
Method
The modified 512K/512K card was used with the modified extender card as described in the Z88 Hardware Investigation section.
Decoder Tests
The decode circuits (one chip 74139) were built on a breadboard externally using DIL instead of using the SMD used on the card for easier testing, with flying wires to connect signals to the card and oscilloscope.
16 pin DIL | 16 pin SO 16 |
|---|---|
| EPROM | FLASH | RAM |
|
|
|
| ||
|---|---|---|---|---|---|---|---|---|---|
| OZ 4.7 | FILES | PROTECTED | FILES |
| CE | A19 | A18 | ROE |
Replace Flash with EPROM 1 | 256K |
|
|
| 768K | X | X | X |
|
Replace Flash with EPROM 2 | 256K | 256K |
|
| 512K | X | X |
|
|
Protect Flash |
|
| 256K | 256K | 512K | X | X | X | X |
Decoder Connections
The decode chip used, is repeated twice in the same device. The first part does the 512K/512K chip select decode between the RAM and FLASH (as before). The unused decode is used for the ROE and ROE_S the additional circuitry.
In all cases, the input pins of the unused part (Pins 13, 14 & 15), need to be isolated as they have been connected to GND.
Protect Flash
256K FLASH PROTECTED, 256K FLASH & 512 RAM
| CE | A19 | A18 | ROES |
|---|---|---|---|---|
256K FLASH PROTECTED | X | 1 | 1 | 1 |
256K FLASH | 1 | 1 | 0 | ROE |
512K RAM | 0 | 0 |
|
|
Initially it was decided to protect the top 256K of the Flash chip, where OZ 4.7 is, but it was found that if that area was protected, the Z88 would only see 256K of Flash with no File Area.
Choosing the output
Using the signal that we wish to control as the Enable signal, choosing which out put is used is determined by A0 and A1. In this case they are both high, which means that Y3 is used.
ROE to E (Pin 15)
Vcc to A0 (Pin 14) for A19 high
Vcc to A1 (Pin 13) for logic 1
The output was Y3 (Pin 9). It passed through the signal. The other 3 were high. Connecting MA19 and Vcc afterwards, the card worked perfectly.
This procedure was repeated for
ROE to E (Pin 15)
Vcc to A0 (Pin 14) for A19 high
GND to A1 (Pin 13) for logic 0
The output was Y1 (Pin 11).
This was the final result as it would allow the Enable signal from the Z88 to be gated into the logic as well.
512K FLASH PROTECTED & 512 RAM
| CE | A19 | LOGIC 1 | ROES |
|---|---|---|---|---|
256K FLASH PROTECTED | X | 1 | 1 | 1 |
256K FLASH | 1 | 1 | 0 | ROE |
512K RAM | 0 | 0 |
|
|
Connection List 512K
| I/O |
| PIN |
|
|
|
|
|
|
| I/O |
| PIN |
|
|
|
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
FROM Z88 SE1 | I | E | 1 | 1 | 0 | 0 | 0 | 0 |
| FROM Z88 ROE | I | E | 15 | 1 | 0 | 0 | 0 | 0 |
FROM Z88 MA19 | I | A0 | 2 | X | 1 | 0 | 1 | 0 |
| FROM Z88 SE1 | I | A0 | 14 | X | 1 | 0 | 1 | 0 |
LOGIC 0 - 0v | I | A1 | 3 | X | 1 | 1 | 0 | 0 |
| FROM Z88 MA19 | I | A1 | 13 | X | 1 | 1 | 0 | 0 |
TO RAM CE | O | Y0 | 4 | 1 | 1 | 1 | 1 | 0 |
|
| O | Y0 | 12 | 1 | 1 | 1 | 1 | 0 |
TO FLASH CE | O | Y1 | 5 | 1 | 1 | 1 | 0 | 1 |
|
| O | Y1 | 11 | 1 | 1 | 1 | 0 | 1 |
| O | Y2 | 6 | 1 | 1 | 0 | 1 | 1 |
| TO FLASH ROE_S | O | Y2 | 10 | 1 | 1 | 0 | 1 | 1 |
| O | Y3 | 7 | 1 | 0 | 1 | 1 | 1 |
|
| O | Y3 | 9 | 1 | 0 | 1 | 1 |
|
Connection List 1M
| I/O |
| PIN |
|
|
|
|
|
|
| I/O |
| PIN |
|
|
|
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
FROM Z88 SE1 | I | E | 1 | 1 | 0 | 0 | 0 | 0 |
| FROM Z88 ROE | I | E | 15 | 1 | 0 | 0 | 0 | 0 |
FROM Z88 MA19 | I | A0 | 2 | X | 1 | 0 | 1 | 0 |
| FROM Z88 SE1 | I | A0 | 14 | X | 1 | 0 | 1 | 0 |
LOGIC 0 - 0v | I | A1 | 3 | X |