Z80/R800 Opcodes List

Página 1/3
| 2 | 3

Por gdx

Prophet (2977)

Imagen del gdx

08-07-2017, 14:59

Hello,

I make a simple list of all documented & undocumented Opcodes of the Z80/R800 on PDF. I would put it in the wiki. Before that do you think it needs corrections?

Z80 Opcodes-beta.zip

The purpose of this list is to have at hand all the instructions that correspond to the machine code.
A small anecdote: Several undocumented Z80 Opcodes became official on R800, for example IN (C) that is used for the PCM of the turbo R.

Login sesión o register para postear comentarios

Por NYYRIKKI

Enlighted (5358)

Imagen del NYYRIKKI

08-07-2017, 16:02

Quote:

The instructions from CB 30 to CB 37 and ED 70 are the most commonly used among undocumented instructions

I don't think this is true... I'm sure the instructions like LD A,IXL are much more common.

Quote:

The instruction ED 70 reads the output port indicated by the register C without keeping the result but the register F will be modified.

This is usually written as IN F,(C) and I think this is exactly how it works.

Por Grauw

Ascended (8379)

Imagen del Grauw

08-07-2017, 17:26

NYYRIKKI wrote:
Quote:

The instructions from CB 30 to CB 37 and ED 70 are the most commonly used among undocumented instructions

I don't think this is true... I'm sure the instructions like LD A,IXL are much more common.

Indeed. And since “SLL” is not supported by the R800, this is for the best!

NYYRIKKI wrote:
Quote:

The instruction ED 70 reads the output port indicated by the register C without keeping the result but the register F will be modified.

This is usually written as IN F,(C) and I think this is exactly how it works.

Actually in (c) is documented in the Z80 CPU user manual (see page 290). In Glass the syntax is in (c), because all in r,(c) instructions affect the flag register, this one just doesn’t store the return value in a register. So saying f,(c) is inconsistent, and would imply the input value is placed in the flag register verbatim.

Some other remarks; I think instructions which are not available on either Z80 or R800 should be clearly marked, so that we can see at once which we can and can not use. For this reason my instruction set overview on the MAP also does not include any Z80 instructions which aren’t supported by the R800, because I think people shouldn’t use them.

About the colour scheme; to mark I/O and interrupt-related instructions with green / purple colour codes don’t seem very useful to me, and kind of arbitrary (why not mark block transfer then, etc.). And I wouldn’t use bold for the alternate lines, it made me think it had some significance.

Por gdx

Prophet (2977)

Imagen del gdx

08-07-2017, 17:29

I indicated I/O and interrupt-related instructions in color to find them more easily when I convert Coleco / SG1000 games to MSX.

I marked the instructions that are not available on Z80 or R800 in the notes. I can not find any more precise documentation.

Por DarkSchneider

Paladin (861)

Imagen del DarkSchneider

09-07-2017, 09:38

Grauw wrote:

Indeed. And since “SLL” is not supported by the R800, this is for the best!

In any case, that's why I never use undocumented intructions. You enter in the uncertain world of things.

Also, thankful in any case for the full compendium.

Por gdx

Prophet (2977)

Imagen del gdx

09-07-2017, 10:45

I modified a little the list. I removed bold for the alternate lines and changed/fixed some details.

Z80 Opcodes.zip

Por KdL

Paragon (1222)

Imagen del KdL

09-07-2017, 12:50

Many thx!! Like+1 Smile

Por KdL

Paragon (1222)

Imagen del KdL

25-09-2017, 11:02

hi gdx, but MULUB A,A? is it working or not?

R800 Wiki

Por gdx

Prophet (2977)

Imagen del gdx

25-09-2017, 12:45

I didn't test it myself. I only know that in the book "MSX Turbo R Technical Hand Book" at page 172, it is written that operation is guaranteed only for registers B, C, D and E.

Por KdL

Paragon (1222)

Imagen del KdL

25-09-2017, 13:25

ok thanks! Smile

Por Grauw

Ascended (8379)

Imagen del Grauw

25-09-2017, 14:37

See latest change by sd_snatcher on that wiki page: "MULUB A,A works just fine"

https://www.msx.org/wiki/index.php?title=R800_Programming&di...

Página 1/3
| 2 | 3