NEC V30MZ

From WSdev Wiki
Revision as of 18:18, 2 August 2024 by Asie (talk | contribs) (add architecture, sketch instruction set)
Jump to navigationJump to search

The NEC V30MZ is the CPU component of the WonderSwan SoC.

Unlike the NEC V20/V30 CPU family, the V30MZ is fully compatible with the Intel 80186's documented behaviour, as well as some of its undocumented behaviour (such as the SALC opcode); it also omits the V20/V30's opcode extensions.

The NEC V30MZ datasheet uses distinct names for opcodes and registers (NEC names); as all homebrew compilers and assemblers for the platform utilize Intel's official naming (Intel names), the latter is what the wiki - and most community tooling - has standardized on.

Architecture

For this section, elements of the architecture which have distinct NEC names are provided in the following format: IntelNEC.

Registers

  • Four 16-bit general-purpose registers, with their (low, high) components accessible as individual 8-bit sub-registers:
    • AXAW (AL, AH)
    • BXBW (BL, BH)
    • CXCW (CL, CH)
    • DXDW (DL, DH)
  • Four additional 16-bit registers:
    • SIIX
    • DIIY
    • SP
    • BP
  • Four segment registers:
    • CSPS - code segment,
    • DSDS0 - data segment,
    • ESDS1 - additional data segment,
    • SS - stack segment.
  • IPPC - instruction pointer; instructions are always addressed in the code segment (so as CS:IP far addresses),
  • FLAGSPSW - 16-bit processor flag register.

Flags

15  bit  8  7  bit  0
 ---- ----  ---- ----
 m111 odit  sz0a 0p1c
 |    ||||  || |  | |
 |    ||||  || |  | +- Carry (CF<sup>CY</sup>)
 |    ||||  || |  +--- Parity (PF<sup>P</sup>)
 |    ||||  || +------ Auxillary Carry (AF<sup>AC</sup>)
 |    ||||  |+-------- Zero (Z)
 |    ||||  +--------- Sign (S)
 |    |||+------------ Single Step<sup>Break</sup> (TF<sup>BRK</sup>)
 |    ||+------------- Interrupt Enable (IF<sup>IE</sup>)
 |    |+-------------- Direction (DF<sup>DIR</sup>)
 |    +--------------- Overflow (OF<sup>V</sup>)
 +-------------------- Mode (MD)


Links