cpu/ns32000: add NS32CG16 graphics/printer variant#15569
Merged
Conversation
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.
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
requested changes
Jun 22, 2026
pmackinlay
left a comment
Contributor
There was a problem hiding this comment.
Looks good except the tight coupling to BPU.
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
requested changes
Jun 23, 2026
pmackinlay
left a comment
Contributor
There was a problem hiding this comment.
Only one more request, thanks for your patience.
|
|
||
| protected: | ||
| virtual dp8510_device *bpu() const override; | ||
| virtual void bpu_window(bool active) override { m_out_bpu(active); } |
Contributor
There was a problem hiding this comment.
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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(), anddegrades 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.