Post by JJPost by John McCuePost by JJWith modern display adapters such as Intel HD, NVIDIA, and AMD;
is it even possible for non primary monitor to display a text
video mode?
If it's possible, was there a driver/TSR which provide acces
to other monitor in multi-monitor setup? i.e. designed for use
by other program to specifically display things on non primary
monitor. Or a demo program which can use non primary monitor in
text video mode.
In a way, MS-DOS kind of had support for multi-monitors (2)
where you can flip between the two.
I had a B&W and a VGA and I was able to do this by using two
video boards.
Some Debuggers did support using 2 monitors. Zortech c and
Microsoft 5.1 debuggers allowed for this. The debugger would
show up on the B&W monitor where program output would show up
on the VGA. This was on a 286.
So it was more up to the application as opposed to MS-DOS.
Sorry. I should have been more clearer.
I wasn't referring to multi-monitor provided by multiple video adapters.
I was referring to one video adapter which support multi monitors. i.e. has
at least 2 video output ports.
Mac, Windows, and Linux support multiple monitors on a single
IntelHD/NVIDIA/AMD video adapter, but so far, I've seen non primary monitors
used only for graphics video mode. I never seen any which is used for text
video mode. Though, may be I don't have enough experience working with
various hardware setups.
So this question intrigued me, as I have used dual display adapters for
DOS development in the past (as mentioned above by John McCue - I was
developing a graphical application on a VGA, using Microsoft C5.1 and
their CodeView debugger on an MDA). What of modern hardware?
I am aware that booting my laptop (Lenovo ThinkPad E590) with the lid
shut results in the text mode boot screen (and any subsequent DOS
output) appearing on the HDMI output, so it's possible, but is it
possible after boot to switch outputs or have text mode on >1 output?
Fortunately my laptop has an Intel i8265U SOC with UHD 620 (Intel HD)
graphics, which is well documented in the programmers reference manuals
here:
https://www.intel.com/content/www/us/en/docs/graphics-for-linux/developer-reference/1-0/kaby-lake.html
(actually the i8265U is CoffeLake, but the graphics are the same)
Reading the "Display" manual (volume 12, from page 105) I see that it
has real VGA hardware, which is off to the side of the main rendering
pipelines (x3), and can be wired into Pipeline A, which is then
multiplexed into one of three Transcoders: one for the flat panel, one
back into RAM and one that can be further multiplexed to any of four
output ports, including the HDMI.
So one can see how the Intel HD specific BIOS wires the VGA to whichever
output port is active (eDP or HDMI) at boot, and indeed it seems
possible to switch the pipeline around by programming the multiplexers
(via PCI registers). FWIW I tried to find such code in Coreboot but got
a bit lost in their directory structure!) and I don't think my E590 is
supported yet (although Intel HD may be).
Unfortunately I haven't found any standardised API (eg: UEFI-GOP, VBE)
that supports output management at the BIOS level, which would have
allowed DOS to support multi-output adapters generically. Indeed if one
looks at the Linux DRM driver stack, there is an API there for managing
outputs, which is implemented in hardware-specific driver code (all of
which is extremely non-trivial!)
I guess if your laptop or whatever is supported by Coreboot, and it has
the necessary multiplxer drivers, then it /could/ export a suitable
API.. otherwise it's porting ugly chunks of Linux kernel code into DOS
as a TSR or similar, or starting again with the manuals... good luck :)
Phil (rabbit hole explorer :))