About the LEDs, any of both could be used. The diagnostics port per se expects the probe to be connected, but no probe for this machine has been found to this day. What I have is a homemade device which simply add eight LEDs. The only difference is having to interpret the outcoming signals or having them presented nicely without effort.
If you want to treat it as a pair of 7-segment displays for convenience, the easiest thing to do would be to have two output digits:
output_finder<2> m_diag_digits;
Ensure that they're initialized in your driver_device's constructor:
m_diag_digits(*this, "digit%u", 0U)
To send an 8-bit value to them:
m_diag_digits[0] = val & 0x0f;
m_diag_digits[1] = (val >> 4) & 0x0f;
To see how to display them using MAME's artwork system, refer to src/mame/layout/maxaflex.lay, and take note of the named "digit" element, and the two individual digits - "digit1" and "digit0" - that refer to it.
Give your .lay file an appropriate name and ensure it's in src/mame/layout/, and include the generated layout file as so:
In the machine-configuration function, point the machine config at it:
config.set_default_layout(layout_datamaster);
Build with REGENIE=1 once again, to ensure that the necessary layout-header is generated from the .lay that you created.
If you want to display each individual bit, there should be enough info above, while also referring to the maxaflex layout file, for you to intuit how to do that.
Last, but not least, it might speed up your development process by doing a single-driver build, and also using "lld" to link instead of the usual "ld". You do that like so:
make SUBTARGET=myname SOURCES=src/mame/ibm/datamaster.cpp ARCHOPTS="-fuse-ld=lld" REGENIE=1
...and take the REGENIE=1 off once you've built. Re-add it if you add any new files.
Make sure that any new drivers are added to src/mame/mame.lst in the appropriate spot, and any new CPU cores or individual devices are added to the appropriate Lua scripts in scripts/src/.