Skip to main content
Overlapping memory buffers would have caused problems anyway.
Source Link
Stephen Kitt
  • 139.4k
  • 19
  • 575
  • 535

The history behind the various base addresses is as follows:

  • the area starting at A0000h was set aside for video frame buffers in general (see Who set the 640K limit?)
  • MDA used 4KiB starting at B0000h (out of 16KiB reserved, and 32KiB occupied in practice because of partial address decoding in the MDA)
  • CGA used 16KiB starting at B8000h (see also Who decides what is the memory address that the CGA video buffer will be mapped to?)
  • EGA introduced modes based at A0000h, using planes of up to 64KiB, depending on the amount of memory installed; this wasn’t backward-compatible with MDA or CGA, so a new address was chosen

I don’t know why the MDA and CGA base addresses were chosen in the B0000h bank rather than A0000h; but there is a useful side-effect to the choice: MDA and non-MDA modes can be used in parallel, which enables dual-monitor setups. Thanks to the non-overlapping display buffers, and to the non-overlapping I/O port ranges (3B0h–3BBh for MDA, 3D0h–3DFh for CGA; EGA adds 3C0h–3CFh), a variety of combinations are possible, starting with CGA and MDA in the original IBM PC (John Elliott’s “Dual-Head Operation on a Vintage PC” gives details). “Common” uses of this feature included displaying a running program on the colour screen and a debugger on the monochrome screen (even under Windows), or a CAD render on the colour screen and UI on the monochrome screen.

Aside from dual-monitor use, the combination of features provided on the MDA and CGA required different ports and memory addresses to be used. On PCs at the time, there was no central coordination of address assignment; each card in the system was equal on the bus, for both memory addresses and I/O ports, and chose which addresses it responded to. The original MDA also included a parallel port; even if dual displays weren’t envisioned, users buying a PC with MDA and later installing CGA might want to keep their MDA to connect their printer. If the MDA and CGA buffers or port ranges overlapped, the system wouldn’t behave correctly; it was probably simpler to map the adapters to separate ranges rather than add jumpers to choose which card “owned” the relevant addresses (as seen on EGA).

Dual-monitor use seems to have been an intentional decision; at least, it is mentioned in the original IBM PC Technical Reference, in the DIP switch settings for monitor type selection (the MDA setting is listed as “IBM monochrome display or both types of display adapters”; PCs with dual monitors used the monochrome monitor as their primary display). The comments on dual-adapter purchases in the internal IBM PC Q&A suggests that simultaneous dual-monitor use wasn’t a well-known feature however, at least not in 1981. Since the MDA also hosted the parallel port, PCs with both MDA and CGA weren’t unusualunheard of, but most CGA-equipped PCs would only have a single, colour, monitor (and switches configured for CGA-only operation). (A separate card providing only a parallel port was also available.)

Bear in mind that the PC wasn’t really designed as a family of computers, and didn’t have an expansion-ready high-performance API of any kind, so many of its implementation details became features, simultaneously sub-optimal and locked-in for a long time.

The history behind the various base addresses is as follows:

  • the area starting at A0000h was set aside for video frame buffers in general (see Who set the 640K limit?)
  • MDA used 4KiB starting at B0000h (out of 16KiB reserved, and 32KiB occupied in practice because of partial address decoding in the MDA)
  • CGA used 16KiB starting at B8000h (see also Who decides what is the memory address that the CGA video buffer will be mapped to?)
  • EGA introduced modes based at A0000h, using planes of up to 64KiB, depending on the amount of memory installed; this wasn’t backward-compatible with MDA or CGA, so a new address was chosen

I don’t know why the MDA and CGA base addresses were chosen in the B0000h bank rather than A0000h; but there is a useful side-effect to the choice: MDA and non-MDA modes can be used in parallel, which enables dual-monitor setups. Thanks to the non-overlapping display buffers, and to the non-overlapping I/O port ranges (3B0h–3BBh for MDA, 3D0h–3DFh for CGA; EGA adds 3C0h–3CFh), a variety of combinations are possible, starting with CGA and MDA in the original IBM PC (John Elliott’s “Dual-Head Operation on a Vintage PC” gives details). “Common” uses of this feature included displaying a running program on the colour screen and a debugger on the monochrome screen (even under Windows), or a CAD render on the colour screen and UI on the monochrome screen.

Dual-monitor use seems to have been an intentional decision; at least, it is mentioned in the original IBM PC Technical Reference, in the DIP switch settings for monitor type selection (the MDA setting is listed as “IBM monochrome display or both types of display adapters”; PCs with dual monitors used the monochrome monitor as their primary display). The comments on dual-adapter purchases in the internal IBM PC Q&A suggests that simultaneous dual-monitor use wasn’t a well-known feature however, at least not in 1981. Since the MDA also hosted the parallel port, PCs with both MDA and CGA weren’t unusual, but most CGA-equipped PCs would only have a single, colour, monitor (and switches configured for CGA-only operation).

Bear in mind that the PC wasn’t really designed as a family of computers, and didn’t have an expansion-ready high-performance API of any kind, so many of its implementation details became features, simultaneously sub-optimal and locked-in for a long time.

The history behind the various base addresses is as follows:

  • the area starting at A0000h was set aside for video frame buffers in general (see Who set the 640K limit?)
  • MDA used 4KiB starting at B0000h (out of 16KiB reserved, and 32KiB occupied in practice because of partial address decoding in the MDA)
  • CGA used 16KiB starting at B8000h (see also Who decides what is the memory address that the CGA video buffer will be mapped to?)
  • EGA introduced modes based at A0000h, using planes of up to 64KiB, depending on the amount of memory installed; this wasn’t backward-compatible with MDA or CGA, so a new address was chosen

I don’t know why the MDA and CGA base addresses were chosen in the B0000h bank rather than A0000h; but there is a useful side-effect to the choice: MDA and non-MDA modes can be used in parallel, which enables dual-monitor setups. Thanks to the non-overlapping display buffers, and to the non-overlapping I/O port ranges (3B0h–3BBh for MDA, 3D0h–3DFh for CGA; EGA adds 3C0h–3CFh), a variety of combinations are possible, starting with CGA and MDA in the original IBM PC (John Elliott’s “Dual-Head Operation on a Vintage PC” gives details). “Common” uses of this feature included displaying a running program on the colour screen and a debugger on the monochrome screen (even under Windows), or a CAD render on the colour screen and UI on the monochrome screen.

Aside from dual-monitor use, the combination of features provided on the MDA and CGA required different ports and memory addresses to be used. On PCs at the time, there was no central coordination of address assignment; each card in the system was equal on the bus, for both memory addresses and I/O ports, and chose which addresses it responded to. The original MDA also included a parallel port; even if dual displays weren’t envisioned, users buying a PC with MDA and later installing CGA might want to keep their MDA to connect their printer. If the MDA and CGA buffers or port ranges overlapped, the system wouldn’t behave correctly; it was probably simpler to map the adapters to separate ranges rather than add jumpers to choose which card “owned” the relevant addresses (as seen on EGA).

Dual-monitor use seems to have been an intentional decision; at least, it is mentioned in the original IBM PC Technical Reference, in the DIP switch settings for monitor type selection (the MDA setting is listed as “IBM monochrome display or both types of display adapters”; PCs with dual monitors used the monochrome monitor as their primary display). The comments on dual-adapter purchases in the internal IBM PC Q&A suggests that simultaneous dual-monitor use wasn’t a well-known feature however, at least not in 1981. Since the MDA also hosted the parallel port, PCs with both MDA and CGA weren’t unheard of, but most CGA-equipped PCs would only have a single, colour, monitor (and switches configured for CGA-only operation). (A separate card providing only a parallel port was also available.)

Bear in mind that the PC wasn’t really designed as a family of computers, and didn’t have an expansion-ready high-performance API of any kind, so many of its implementation details became features, simultaneously sub-optimal and locked-in for a long time.

The MDA actually blocks 32KiB...
Source Link
Stephen Kitt
  • 139.4k
  • 19
  • 575
  • 535

The history behind the various base addresses is as follows:

  • the area starting at A0000h was set aside for video frame buffers in general (see Who set the 640K limit?)
  • MDA used 4KiB starting at B0000h (out of 16KiB reserved, and 32KiB occupied in practice because of partial address decoding in the MDA)
  • CGA used 16KiB starting at B8000h (see also Who decides what is the memory address that the CGA video buffer will be mapped to?)
  • EGA introduced modes based at A0000h, using planes of up to 64KiB, depending on the amount of memory installed; this wasn’t backward-compatible with MDA or CGA, so a new address was chosen

I don’t know why the MDA and CGA base addresses were chosen in the B0000h bank rather than A0000h; but there is a useful side-effect to the choice: MDA and non-MDA modes can be used in parallel, which enables dual-monitor setups. Thanks to the non-overlapping display buffers, and to the non-overlapping I/O port ranges (3B0h–3BBh for MDA, 3D0h–3DFh for CGA; EGA adds 3C0h–3CFh), a variety of combinations are possible, starting with CGA and MDA in the original IBM PC (John Elliott’s “Dual-Head Operation on a Vintage PC” gives details). “Common” uses of this feature included displaying a running program on the colour screen and a debugger on the monochrome screen (even under Windows), or a CAD render on the colour screen and UI on the monochrome screen.

Dual-monitor use seems to have been an intentional decision; at least, it is mentioned in the original IBM PC Technical Reference, in the DIP switch settings for monitor type selection (the MDA setting is listed as “IBM monochrome display or both types of display adapters”; PCs with dual monitors used the monochrome monitor as their primary display). The comments on dual-adapter purchases in the internal IBM PC Q&A suggests that simultaneous dual-monitor use wasn’t a well-known feature however, at least not in 1981. Since the MDA also hosted the parallel port, PCs with both MDA and CGA weren’t unusual, but most CGA-equipped PCs would only have a single, colour, monitor (and switches configured for CGA-only operation).

Bear in mind that the PC wasn’t really designed as a family of computers, and didn’t have an expansion-ready high-performance API of any kind, so many of its implementation details became features, simultaneously sub-optimal and locked-in for a long time.

The history behind the various base addresses is as follows:

I don’t know why the MDA and CGA base addresses were chosen in the B0000h bank rather than A0000h; but there is a useful side-effect to the choice: MDA and non-MDA modes can be used in parallel, which enables dual-monitor setups. Thanks to the non-overlapping display buffers, and to the non-overlapping I/O port ranges (3B0h–3BBh for MDA, 3D0h–3DFh for CGA; EGA adds 3C0h–3CFh), a variety of combinations are possible, starting with CGA and MDA in the original IBM PC (John Elliott’s “Dual-Head Operation on a Vintage PC” gives details). “Common” uses of this feature included displaying a running program on the colour screen and a debugger on the monochrome screen (even under Windows), or a CAD render on the colour screen and UI on the monochrome screen.

Dual-monitor use seems to have been an intentional decision; at least, it is mentioned in the original IBM PC Technical Reference, in the DIP switch settings for monitor type selection (the MDA setting is listed as “IBM monochrome display or both types of display adapters”; PCs with dual monitors used the monochrome monitor as their primary display). The comments on dual-adapter purchases in the internal IBM PC Q&A suggests that simultaneous dual-monitor use wasn’t a well-known feature however, at least not in 1981. Since the MDA also hosted the parallel port, PCs with both MDA and CGA weren’t unusual, but most CGA-equipped PCs would only have a single, colour, monitor (and switches configured for CGA-only operation).

Bear in mind that the PC wasn’t really designed as a family of computers, and didn’t have an expansion-ready high-performance API of any kind, so many of its implementation details became features, simultaneously sub-optimal and locked-in for a long time.

The history behind the various base addresses is as follows:

  • the area starting at A0000h was set aside for video frame buffers in general (see Who set the 640K limit?)
  • MDA used 4KiB starting at B0000h (out of 16KiB reserved, and 32KiB occupied in practice because of partial address decoding in the MDA)
  • CGA used 16KiB starting at B8000h (see also Who decides what is the memory address that the CGA video buffer will be mapped to?)
  • EGA introduced modes based at A0000h, using planes of up to 64KiB, depending on the amount of memory installed; this wasn’t backward-compatible with MDA or CGA, so a new address was chosen

I don’t know why the MDA and CGA base addresses were chosen in the B0000h bank rather than A0000h; but there is a useful side-effect to the choice: MDA and non-MDA modes can be used in parallel, which enables dual-monitor setups. Thanks to the non-overlapping display buffers, and to the non-overlapping I/O port ranges (3B0h–3BBh for MDA, 3D0h–3DFh for CGA; EGA adds 3C0h–3CFh), a variety of combinations are possible, starting with CGA and MDA in the original IBM PC (John Elliott’s “Dual-Head Operation on a Vintage PC” gives details). “Common” uses of this feature included displaying a running program on the colour screen and a debugger on the monochrome screen (even under Windows), or a CAD render on the colour screen and UI on the monochrome screen.

Dual-monitor use seems to have been an intentional decision; at least, it is mentioned in the original IBM PC Technical Reference, in the DIP switch settings for monitor type selection (the MDA setting is listed as “IBM monochrome display or both types of display adapters”; PCs with dual monitors used the monochrome monitor as their primary display). The comments on dual-adapter purchases in the internal IBM PC Q&A suggests that simultaneous dual-monitor use wasn’t a well-known feature however, at least not in 1981. Since the MDA also hosted the parallel port, PCs with both MDA and CGA weren’t unusual, but most CGA-equipped PCs would only have a single, colour, monitor (and switches configured for CGA-only operation).

Bear in mind that the PC wasn’t really designed as a family of computers, and didn’t have an expansion-ready high-performance API of any kind, so many of its implementation details became features, simultaneously sub-optimal and locked-in for a long time.

Mention I/O ports, link John Elliott’s page.
Source Link
Stephen Kitt
  • 139.4k
  • 19
  • 575
  • 535

The history behind the various base addresses is as follows:

I don’t know why the MDA and CGA base addresses were chosen starting atin the B0000h bank rather than A0000h; but there is a useful side-effect to the choice: MDA and non-MDA modes can be used in parallel, which is useful forenables dual-monitor setups. Thanks to the non-overlapping display buffers, and to the non-overlapping I/O port ranges (for example in the early PC era3B0h–3BBh for MDA, 3D0h–3DFh for CGA; EGA adds 3C0h–3CFh), a debugger on MDAvariety of combinations are possible, starting with CGA and MDA in the original IBM PC (John Elliott’s “Dual-Head Operation on a Vintage PC” gives details). “Common” uses of this feature included displaying a running program on CGA/EGA/VGA —the colour screen and this continued intoa debugger on the monochrome screen (even under Windows era), more commonly with a Hercules card alongside a VGA or SVGA)a CAD render on the colour screen and UI on the monochrome screen.

Dual-monitor use seems to have been an intentional decision; at least, it is mentioned in the original IBM PC Technical Reference, in the DIP switch settings for monitor type selection (the MDA setting is listed as “IBM monochrome display or both types of display adapters”adapters”; PCs with dual monitors used the monochrome monitor as their primary display). The comments on dual-adapter purchases in the internal IBM PC Q&A suggests that simultaneous dual-monitor use wasn’t a well-known feature however, at least not in 1981. Since the MDA also hosted the parallel port, PCs with both MDA and CGA weren’t unusual, but most CGA-equipped PCs would only have a single, colour, monitor (and switches configured for CGA-only operation).

Bear in mind that the PC wasn’t really designed as a family of computers, and didn’t have an expansion-ready high-performance API of any kind, so many of its implementation details became features, simultaneously sub-optimal and locked-in for a long time.

The history behind the various base addresses is as follows:

I don’t know why the MDA and CGA base addresses were chosen starting at B0000h rather than A0000h; but there is a useful side-effect to the choice: MDA and non-MDA modes can be used in parallel, which is useful for dual-monitor setups (for example in the early PC era, a debugger on MDA and a running program on CGA/EGA/VGA — and this continued into the Windows era, more commonly with a Hercules card alongside a VGA or SVGA).

Dual-monitor use seems to have been an intentional decision; at least, it is mentioned in the original IBM PC Technical Reference, in the DIP switch settings for monitor type selection (the MDA setting is listed as “IBM monochrome display or both types of display adapters”). The comments on dual-adapter purchases in the internal IBM PC Q&A suggests that simultaneous dual-monitor use wasn’t a well-known feature however.

Bear in mind that the PC wasn’t really designed as a family of computers, and didn’t have an expansion-ready high-performance API of any kind, so many of its implementation details became features, simultaneously sub-optimal and locked-in for a long time.

The history behind the various base addresses is as follows:

I don’t know why the MDA and CGA base addresses were chosen in the B0000h bank rather than A0000h; but there is a useful side-effect to the choice: MDA and non-MDA modes can be used in parallel, which enables dual-monitor setups. Thanks to the non-overlapping display buffers, and to the non-overlapping I/O port ranges (3B0h–3BBh for MDA, 3D0h–3DFh for CGA; EGA adds 3C0h–3CFh), a variety of combinations are possible, starting with CGA and MDA in the original IBM PC (John Elliott’s “Dual-Head Operation on a Vintage PC” gives details). “Common” uses of this feature included displaying a running program on the colour screen and a debugger on the monochrome screen (even under Windows), or a CAD render on the colour screen and UI on the monochrome screen.

Dual-monitor use seems to have been an intentional decision; at least, it is mentioned in the original IBM PC Technical Reference, in the DIP switch settings for monitor type selection (the MDA setting is listed as “IBM monochrome display or both types of display adapters”; PCs with dual monitors used the monochrome monitor as their primary display). The comments on dual-adapter purchases in the internal IBM PC Q&A suggests that simultaneous dual-monitor use wasn’t a well-known feature however, at least not in 1981. Since the MDA also hosted the parallel port, PCs with both MDA and CGA weren’t unusual, but most CGA-equipped PCs would only have a single, colour, monitor (and switches configured for CGA-only operation).

Bear in mind that the PC wasn’t really designed as a family of computers, and didn’t have an expansion-ready high-performance API of any kind, so many of its implementation details became features, simultaneously sub-optimal and locked-in for a long time.

added 66 characters in body
Source Link
Michael Karcher
  • 9.5k
  • 3
  • 33
  • 55
Loading
Avoid giving the impression that dual-monitor use was only with early PCs.
Source Link
Stephen Kitt
  • 139.4k
  • 19
  • 575
  • 535
Loading
Briefly explain why EGA needed a new address. Temper the dual-monitor use-case.
Source Link
Stephen Kitt
  • 139.4k
  • 19
  • 575
  • 535
Loading
Dual-monitor use was seemingly a design feature.
Source Link
Stephen Kitt
  • 139.4k
  • 19
  • 575
  • 535
Loading
Link the CGA decoding Q&A.
Source Link
Stephen Kitt
  • 139.4k
  • 19
  • 575
  • 535
Loading
Source Link
Stephen Kitt
  • 139.4k
  • 19
  • 575
  • 535
Loading