an article about z80 affecting MSX computers was published

Page 3/7
1 | 2 | | 4 | 5 | 6 | 7

By TomH

Champion (322)

TomH's picture

15-09-2018, 01:25

PingPong wrote:

I disagree. In electronics what were done in C64 is ... classical. The fact that there is arbitration is not special in electronics ...

Okay! I think I've got a handle on this now:

I'm saying "it's empirically atypical of that category of computers", you're saying "it's very typical of that variety of electronics". I think we're cross-talking by each thinking in reference to different control groups?

PingPong wrote:

By contrast, the ZX Spectrum used a original solution (even if tricky) called floating bus. the side effect is that the z80 is not halted when accessing some ram region where there is no VRAM access.
This is a original ( and imho a little dirty and cheap ) solution. It's unusual in electronics to decouple bus lines via resistors.

My fun trivia fact: it might be a Sinclair thing, but it's not original to the ZX Spectrum, it's just used much more intelligently there. In the ZX81, and therefore I assume the ZX80, it's how the ULA (or, presumably, the ZX80's equivalent logic) substitutes the three-bit row counter and six-bit character address onto the refresh address when fetching video.

In that case Sinclair just meant to use it for substitution, not to allow two devices to access memory at the same time as long as they stuck to their side of the resistors, but the design has the side effect of enabling true high resolution graphics in compatible expansion packs: if you craft a refresh address that the ROM won't actually respond to then the version with nothing substituted persists on the non-ROM side of the bus and the directly-addressed RAM value ends up in the shift register.

The same thing works on the internal RAM, but you've got all of 1kb so you're not getting much of a framebuffer in there.

Sample demo.

By PingPong

Prophet (3229)

PingPong's picture

15-09-2018, 13:33

Quote:

My fun trivia fact: it might be a Sinclair thing, but it's not original to the ZX Spectrum, it's just used much more intelligently there. In the ZX81, and therefore I assume the ZX80, it's how the ULA (or, presumably, the ZX80's equivalent logic) substitutes the three-bit row counter and six-bit character address onto the refresh address when fetching video.

In that case Sinclair just meant to use it for substitution, not to allow two devices to access memory at the same time as long as they stuck to their side of the resistors

You are confusing Spectrum with zx80/81. things are different.
the former uses another trick to generate video signals with the "help" of z80, the latter has a TRUE video cirquitry that does memory fetch and video signal generation. Those are very different things.
The solution used to decouple the bus using an array of resistors is a tricky one but original in electronics.
By contrast, in the zx80 there is no need to do so, simply because there are no true devices that want to access vram at the same time.

By TomH

Champion (322)

TomH's picture

15-09-2018, 17:33

PingPong wrote:
Quote:

My fun trivia fact: it might be a Sinclair thing, but it's not original to the ZX Spectrum, it's just used much more intelligently there. In the ZX81, and therefore I assume the ZX80, it's how the ULA (or, presumably, the ZX80's equivalent logic) substitutes the three-bit row counter and six-bit character address onto the refresh address when fetching video.

In that case Sinclair just meant to use it for substitution, not to allow two devices to access memory at the same time as long as they stuck to their side of the resistors

You are confusing Spectrum with zx80/81. things are different.

My post talks about:

  • nine resistors;
  • that all the ULA to substitute (i) a three-bit counter; and (ii) a six-bit character code;
  • during a refresh cycle;
  • so that one address is visible to ROM, from which it is intended pixels will be fetched; but
  • which leaves the original address visible on the expansion card.

The idea that I could be talking about the Spectrum is crazy.

For anybody unfamiliar, a ZX81 schematic can be found here. The resistors I'm referring to are R18 to R26 in the lower right.

By contrast the ZX Spectrum:

  • has more than nine resistors;
  • doesn't ever use the ROM for video contents; and
  • doesn't attempt to reuse the Z80's refresh counter for anything.

For those that want to know more about the functioning of the ZX80 and ZX81, I've previously documented it here, provided an explanation of how you can fool it into high-resolution graphics here, and of course my emulator is one of only two that scores a perfect 100% on timing tests, implying that it perfect implements the whole video process.

Here's an animated GIF of the ZX80 from my emulator, which also has the foresight fully to emulate a CRT — hence the bouncing resync. It's not some dumb post hoc effect I added:

By PingPong

Prophet (3229)

PingPong's picture

16-09-2018, 11:21

TomH wrote:

By contrast the ZX Spectrum:

  • has more than nine resistors;
  • doesn't ever use the ROM for video contents; and
  • doesn't attempt to reuse the Z80's refresh counter for anything.

First: I'm talking about BUS architecture and comparing a classical solution (C64) with a tricky one (ZX Spectrum)
Second: your statements above are true, but for me are not relevant.

What i'm telling about is in essence this:
"C 64 had no original architecture, instead it is a rather classical DMA for the era, more sophisticated than others machines because of the higher bandwith requirements of VIC-II"
"ZX had a cheap & dirty solution, perhaps original, that was dictated by the cost-cutting requirements, and resulted in a singular design that allowed a full speed access from CPU without waits when interacting with RAM chips outside the first 16 K Bank"

While you explanations on ZX 80 -81 are interesting to me, they sound irrelevant in the end , just because it is not possible to compare a zx80/81 (that lacks fundamentally video - controller in a true sense of term) with C64, ZX Spectrum , Amstrad CPC, MSX that have complete and independent circuitry for the purpose of video generation.

By litwr

Rookie (30)

litwr's picture

12-12-2018, 15:13

I continue studying the details about Zilog and its processors. I have just added the next text to the article.

Quote:

If we take as a basis the frequency of memory, not the processor, it turns out that z80 25-40% faster than 6502. The last result can be illustrated by the fact that with memory with a frequency of 2 MHz z80 can operate at a frequency of up to 6 MHz, and 6502 only up to 2 MHz.

Zilog did work on improving the Z80 very inconsistently and extremely slowly. The first Z80 worked at frequencies up to 2.5 MHz, soon appeared Z80A had limiting frequency 4 MHZ – these processors became the basis for most popular computers using Z80. Z80B appeared by 1980 but was used relatively rarely, for example, in the mentioned second processor card for the BBC Micro or in the late (1989) computer Sam Coupé. Z80H appeared by the mid-80s and could operate at frequencies up to 8 MHz. It was not used in well-known computers.

A deeper upgrade of the z80 was hampered by the desire of Zilog to create processors that are competitive with 16-bit Intel processors. In 1978, a little later than the 8086, the Z8000 was released. It was not compatible with the z80. This processor was unable to withstand competitors from Intel and, especially, Motorola – 68000 surpassed the Z8000 in almost all parameters, although the Z8000 was used in about a dozen different low-cost systems, usually for working with Unix variants. Interestingly, IBM did not even consider the Z8000 as a possible processor for the IBM PC, since Zilog was funded by Exxon, which was going to compete with IBM. Perhaps due to the lack of success of the Z8000 Zilog became an Exxon subsidiary by 1980. There was also an attempt to create a competitive 32-bit processor. In 1986, the Z80000 appeared, compatible with the Z8000, which has never been used anywhere.

Creating a new processor based on the Z80 was postponed until 1985 when the Z800 was made. However, then the main efforts of Zilog were directed at the Z80000 and the Z800 was released very little. In 1986, after the failure of the z80000, the Z280 was released, a significantly improved version of the Z800, which, in particular, could work on the internal frequency several times higher than the bus frequency – this new idea brought a big success to the Intel 486DX2 and 486DX4 processors. But, perhaps because of poor performance – the Z280, despite many technological innovations, could use only relatively low clock frequencies, this processor also has not found any use anywhere. It is considered that the Z280 roughly matched the capabilities of the Intel 80286, but was significantly, at least 50% slower when using the same clock speed as used with 80286. Perhaps, if the Z280 appeared 5 years earlier, it could be very successful.

The greatest success was achieved thanks to cooperation with the Japanese company Hitachi, which in 1985 released its super-Z80, HD64180, which allowed the use of 512 KB of memory, added a dozen new instructions, but at the same time some almost standard undocumented Z80 instructions were not supported. Zilog received a license for HD64180 and began to produce them with the marking Z64180. Zilog managed to slightly improve this processor, in particular, to add support for working with 1 MB of memory and release it by the end of 1986. This new processor was called Z180 and became the basis for a family of processors and controllers, with clock frequencies up to 33 MHz. It was used in some rare MSX2 computers, but more as a controller. In 1994, a 32-bit Z380 was made on the basis of the Z180, which retained compatibility with the z80 and roughly corresponds to the capabilities of the Intel 80386 or Motorola 68020 – Zilog showed a lag behind competitors in almost 10 years. For the 21st century, again on the basis of the Z180, the successful eZ80 controller-processors have been manufactured with timings almost like the R800. They are used in various equipment, in particular, in network cards, DVD-drives, ...

I will be glad to get any comments. I write the link to the article for the convenience again.

By Grauw

Enlighted (7961)

Grauw's picture

12-12-2018, 15:53

litwr wrote:

the Z280 was released, a significantly improved version of the Z800

From the Z800 documentation I have seen, it is nearly if not fully identical to the Z280, see the second paragraph of my post here and compare the manuals, I have not spotted any differences in instruction set or capabilities.

By the way, it’s a very impressive upgrade to the Z80 instruction set I think. Wish the R800 had inherited more of it than just MULUB / MULUW.

By litwr

Rookie (30)

litwr's picture

12-12-2018, 19:57

Thanks with the help with a typo. It should be "an insignificantly". Shocked! It is interesting that MUL instructions have the same opcodes at R800 and Z800/Z280. Was it a coincidence? Thanks for the link too.

By Grauw

Enlighted (7961)

Grauw's picture

13-12-2018, 13:48

I don’t think it’s a coincidence. The R800 also has pins which indicate features similar to the Z280 has, so I definitely see the common ancestry. But the R800 does not seem to have any support for the Z280 opcodes, just MULTU / MULTUW, so it seems severely stripped. In that thread I linked to I wonder if it retained the MMU features, would be strange if they were stripped but the pins for it remained.

The MUL of the Z180 is different (and has no 16-bit version), and the eZ80 uses the same MUL, which also shows the common ancestry between those two. Makes sense if you consider that the instruction extensions were originally developed independently by Hitachi as you say. Interestingly the eZ80 also has quite a different approach to expanding the instruction set than the Z280 does. The Z280 relies on the ED, DD and FD prefixes, while the eZ80 actually designates LD A,A, LD B,B, etc. as new prefixes (assuming they are never used in real live code).

By litwr

Rookie (30)

litwr's picture

13-12-2018, 21:15

Thanks! You have been doing interesting researches. However I have some doubts because R800 supports instructions to work with bytes of IX and IY registers and Z180 and Z280 don't have them. I am not 100% sure about Z280. I am almost sure that internally R800 and Z800 (Z280) are completely different but R800 designers possibly took opcodes for MUL from Z280 opcode charts.

By Grauw

Enlighted (7961)

Grauw's picture

13-12-2018, 21:38

litwr wrote:

However I have some doubts because R800 supports instructions to work with bytes of IX and IY registers and Z180 and Z280 don't have them.

Z800 / Z280 does support IXL / IXH / IYL / IYH.

Z280 is not a successor of the Z180. The Z180 architecture is very different and indeed lacks these. Your remark about Hitachi’s independent development of the Z180, while Zilog was internally working on the Z800 along with Z8000 and Z80000, explains this different ancestry for me. And later the Z800 seems to be simply rebranded to Z280 to match their new naming scheme for marketing purposes.

litwr wrote:

I am almost sure that internally R800 and Z800 (Z280) are completely different but R800 designers possibly took opcodes for MUL from Z280 opcode charts.

R800 is completely different in the sense that it does not seems to contain the vastly extended instruction set of the Z800 / Z280. Perhaps to save cost, because that instruction set expansion seems like it would require a lot of transistors.

But I dunno if they aren’t at least partially related, as I mentioned a lot of the pins on the R800 seem to refer to Z800 features. If it was really just a meagre upgrade to the Z80 then why have all those pins. I haven’t compared the timings though, that would be interesting, if they are similar it would be another indicator, if quite different then the likelihood decreases.

Page 3/7
1 | 2 | | 4 | 5 | 6 | 7
My MSX profile