Skip to content

cpu/ns32000: add NS32CG16 graphics/printer variant#15569

Merged
pmackinlay merged 3 commits into
mamedev:masterfrom
davidlrand:ns32cg16
Jun 24, 2026
Merged

cpu/ns32000: add NS32CG16 graphics/printer variant#15569
pmackinlay merged 3 commits into
mamedev:masterfrom
davidlrand:ns32cg16

Conversation

@davidlrand

Copy link
Copy Markdown
Contributor

Adds the NS32CG16, an NS32016 plus the Series 32000 graphics instructions
(Format-5 extensions): the bit-string ops (MOVMP, BITWT, TBITS, SBITS, SBITPS),
the BitBlt instructions (BBOR, BBXOR, BBAND, BBFOR, BBSTOD), and EXTBLT. EXTBLT
drives an optional DP8510/DP8511 BITBLT processing unit via set_bpu(), and
degrades to a pseudo-DMA source-to-destination copy when none is connected.
Disassembler support for the new Format-5 opcodes is included, and instruction
timing follows the published NS32CG16 (B-stepping) data.

emax2 (Emax II) is switched from a placeholder NS32016 to the NS32CG16.

Adds the NS32CG16, an NS32016 plus the Series 32000 graphics instructions
(Format-5 extensions): the bit-string ops (MOVMP, BITWT, TBITS, SBITS,
SBITPS), the BitBlt instructions (BBOR, BBXOR, BBAND, BBFOR, BBSTOD), and
EXTBLT.  EXTBLT drives an optional DP8510/DP8511 BITBLT processing unit via
set_bpu(), and degrades to a pseudo-DMA source-to-destination copy when none
is connected.  Disassembler support for the new Format-5 opcodes is included,
and instruction timing follows the published NS32CG16 (B-stepping) data.

emax2 (Emax II) is switched from a placeholder NS32016 to the NS32CG16.
@davidlrand

Copy link
Copy Markdown
Contributor Author

As usual, there is additional information, including the CG16 Programmers Reference, at [https://github.com/davidlrand/mame-system-media/tree/main/NS32CG16] including the emulation library, additional application notes, and the WordStar (!) source files for many of them.

@pmackinlay pmackinlay left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good except the tight coupling to BPU.

Comment thread src/devices/cpu/ns32000/ns32000.cpp Outdated
Drop the direct dependency on the concrete DP8510 device: remove the
video/dp8510.h include, the optional_device<dp8510_device>, set_bpu()
and the bpu() accessor.

EXTBLT now runs the plain source-read / destination-read / write bus
cycles and asserts a new out_bpu() write line for the duration of the
transfer.  A DP8510 attached in the driver snoops those cycles via
memory taps, latching the source/destination words and substituting its
processed output on the write.  With no BPU connected the cycles run as
a plain source-to-destination copy.

@pmackinlay pmackinlay left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Only one more request, thanks for your patience.

Comment thread src/devices/cpu/ns32000/ns32000.h Outdated

protected:
virtual dp8510_device *bpu() const override;
virtual void bpu_window(bool active) override { m_out_bpu(active); }

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please make this output active low (active==0) to match the hardware.

The NS32CG16's /BPU window strobe is active low; emit the physical level
(0 = low/asserted) rather than the logical active flag.
@pmackinlay pmackinlay merged commit 0bc0193 into mamedev:master Jun 24, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants