16-color mode for ZX

ZXNet echo conference «real.speccy»

From Dima Bystrov To All 17 September 2005

Hello All!

There is an idea to quickly suppress the multicolor mode #eff7 bit0 and advance the subject
color to each pixel (it’s convenient to overlay anything on anything, including for
wire plots, graphs, etc.). This device should be possible
to be assembled on almost any non-FPGA echotag.
The idea is as simple as a ball (complex ideas don’t come to my mind ;))).
It should work like this:
1. in the main screen field, all clock cycles are given to the video controller (2 logical elements).
2. writing to the shift registers should occur with a frequency of not 0.875MHz, but 3.5MHz (1
multiplexer device). The shift frequency remains the same as it was - 7 MHz.
3. 4 color
components are removed from the outputs of the shift registers (one at a time). These components go through a buffer/register (1 case + 1 logical element
for superimposing the border signal on the mode sampling signal) to the output and are mixed
with resistors, in the RGBw palette. bits 7 6 5 4 3 2 1 0 = wL wR GL GR RL RR BL BR,
where L is the left pixel, R is the right pixel.
4. During operation of this mode, the output from the RGBI multiplexers must
be blocked (1 logical element).
5. Screen addressing is the same as in multicolor mode (2 logical elements), but
for intermediate pixels (freed due to the processor being cut off from access to
memory) a signal is sent to turn on the 2nd screen (1 logical element). That is,
it turns out:
#4000 #c000 #6000 #e000 #4001 #c001 #6001 #e001 andetc.
6. access through, say, the same #eff7 bit0. There is still only one multicolor program through
this port (mine), and that program works well even without
hardware multicolor.

Programming is very convenient (especially the overlay of sprites - we just put/don't
put the required 2 pixels. And you don't even need to shift the bits to print
sprites with an accuracy of 2 pixels horizontally!). But there is only one
screen area. Is it better to take the signal of the 2nd half of the
256k memory instead of the signal of the 2nd screen (all the same, for 128k 16-color graphics are a bit bold)? This will
save one log. an element that would mix #eff7 bit0 with the signal of the 2nd screen.

There is nothing to do to play games under this miracle. I would have spanked a couple if I had this regime. Regarding the possible shouts of "megatormozzzz!" - you don’t need to clear/fill the entire screen every time, and there won’t be a megatormozzz. And there is no need to scroll through the text in this
mode - there is a normal mode for that.

You need:
port #eff7 decoder with a TM8 type trigger
register/buffer type IR22/IR23/AP5
5-6 log. el-tov, some can be on diodes, some on the free outputs of that
register
1 multiplexer el-t, can be assembled on log.el-tah

Whoever would undertake to solder this miracle to his real world - raise your hands. The left one - if
you decide to solder, only having a diagram on how to solder. The right one - if you decide to
solder it usingown imagination (we need such people).

- A.Coder [Wolf3d2004 InfoGuide7 ACEdit96 ACN42 PT3695 Chip13 HexFill HDDoct5]
[Ansi04 8col12 ZXRar27UnR59 Jpg042 CacVox1 Dbs07 Gluk61R PC21 Alasm50f2 Sts70i]

... ZX Spectrum today