Retro video games delivered to your door every month!
Click above to get retro games delivered to your door ever month!
X-Hacker.org- Peter Norton Programmer's Guide - Norton Guide http://www.X-Hacker.org [<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]

  Service 12H (decimal 18) made its debut along with service 11H in the EGA
  BIOS. It, too, is supported in the ROM BIOS in all PC/2 video subsystems.
  IBM's name for this service derives from the purpose of one of the
  subservices of service 12H, namely, to select an alternate print-screen
  routine for the ROM BIOS Shift-PrtSc function. The name lingers on even
  though service 12H has been expanded by adding a number of unrelated
  subservices. (See Figure 9-20.)

  Subservice Number        Description
  --------------------------------------------------------------------------
  BL = 10H                 Return video configuration information.
  BL = 20H                 Select alternate print-screen routine.
  BL = 30H                 Select scan lines for VGA text modes.
  BL = 31H                 Enable/disable default palette loading.
  BL = 32H                 Enable/disable CPU access to video RAM.
  BL = 33H                 Enable/disable gray-scale summing.
  BL = 34H                 Enable/disable ROM BIOS cursor emulation.
  BL = 35H                 PS/2 display switch interface.
  BL = 36H                 Enable/disable video refresh.
  --------------------------------------------------------------------------

  Figure 9-20.  Subservices available through video BIOS service 12H.

  Subservice 10H (decimal 16) reports on the configuration of an EGA or VGA.
  The value returned in BH indicates whether the current video mode is color
  (BH = 00H) or monochrome (BH = 01H). BL contains a number between 0 and 3
  that represents the amount of RAM installed on an EGA (0 means 64 KB; 1
  means 128 KB; 2 means 192 KB; 3 means 256 KB). The value in CH reflects
  the status of input from the EGA feature connector, and CL contains the
  settings of the EGA configuration switches.

  Subservice 20H (decimal 32) is provided for the convenience of users of
  the EGA or a VGA adapter. It replaces the motherboard ROM BIOS
  print-screen routine with a more flexible routine in the adapter ROM BIOS.
  Unlike the motherboard ROM BIOS routine, the adapter BIOS routine can
  print a snapshot of a text-mode screen that has more than 25 rows of
  characters. In PS/2s, of course, the motherboard routine can already do
  this, eliminating the need for this subservice.

  Subservice 30H (decimal 48) lets you specify how many scan lines to
  display in VGA text modes. The default ROM BIOS text modes contain 400
  scan lines. When you call subservice 30H, the value you pass in register
  AL can instruct the ROM BIOS to use a different vertical resolution: If AL
  = 00H, ROM BIOS text modes will display 200 scan lines, as they do on a
  CGA. If AL = 01H, text modes will display an EGA-compatible 350 scan
  lines. Finally, when AL = 02H, the ROM BIOS uses its default resolution of
  400 scan lines.

  When you use subservice 30H, the vertical resolution does not change until
  the next time a program uses video ROM BIOS service 00H to select a text
  mode. Thus, changing the vertical resolution actually requires you to make
  two different ROM BIOS calls: one to specify the resolution and another to
  set up the text mode.

  Subservice 31H (decimal 49) lets you enable or disable palette loading
  when the ROM BIOS sets up a new MCGA or VGA video mode. Calling subservice
  31H with AL = 01H disables palette loading, so you can subsequently change
  video modes without changing the colors in a previously-loaded palette. A
  call with AL = 00H enables default palette loading.

  Subservices 32H (decimal 50) and 35H (decimal 53) are provided for
  programmers who want to use two different video subsystems in the same
  PS/2 computer. In particular, these routines support the use of a VGA
  alongside the built-in MCGA subsystem in a PS/2 Model 30.

  Subservice 32H enables or disables buffer and port addressing according to
  the value passed in AL (AL = 00H means enable; AL = 01H means disable).
  This feature is important if any addresses in the two video subsystems
  overlap: Before accessing one subsystem, you must disable addressing in
  the other one.

  Subservice 35H provides a complete switching interface that lets you
  selectively access both an MCGA and a VGA in the same computer. This
  subservice relies on the function provided through subservice 32H to
  independently enable and disable each video subsystem. See Chapter 13 and
  the IBM BIOS Interface Technical Reference manual for details.

  Subservice 33H (decimal 51) tells the ROM BIOS whether or not to average
  colors to gray scales when it establishes a new video mode on an MCGA or
  VGA. A call to this subservice with AL = 01H disables the gray-scaling; a
  call with AL = 00H enables gray-scaling. You can also use this subservice
  to force the ROM BIOS to use a gray-scale palette even if you're using a
  color monitor.

  Subservice 34H (decimal 52) enables or disables text-mode cursor emulation
  on the VGA. When you call this subservice with AL = 00H, the ROM BIOS
  emulates CGA text-mode cursor sizing whenever you change

  video modes or update the cursor size. When called with AL = 01H, this
  subservice disables text-mode cursor emulation.

  Subservice 36H (decimal 54) lets you enable or disable VGA video refresh.
  Calling this subservice with AL = 01H disables refresh, and a call with AL
  = 00H enables refresh. When you disable refresh, the screen goes blank,
  but reads and writes to the video buffer are somewhat faster than when
  refresh is enabled. If you are writing a program that needs to run as fast
  as possible, and if you don't mind having the screen go blank while you
  access the video buffer, then consider using subservice 36H to temporarily
  blank the screen while you update it.

Online resources provided by: http://www.X-Hacker.org --- NG 2 HTML conversion by Dave Pearson