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]

  Interrupt 19H (decimal 25) activates the standard bootstrap routine for
  the computer (which produces a similar result to powering on and nearly
  the same net result as the Ctrl-Alt-Del key combination). However, this
  bootstrap interrupt bypasses the lengthy memory check of the power-on
  routines as well as the reset operations of Ctrl-Alt-Del.

  The bootstrap loader works by reading the first sector of the first track
  (the boot sector) from the diskette in drive A into memory at 0000:7C00H.
  If the ROM BIOS cannot read from the diskette, it reads the boot sector
  from the hard disk in drive C instead. If both attempts fail, the BIOS
  executes interrupt 18H to bring up ROM BASIC. If the BIOS reads a sector
  from the disk but the sector doesn't contain an operating-system boot
  record, the BIOS issues an error message and waits for you to reboot or
  replace the offending diskette.

  We know of two uses for this interrupt service. One is to immediately shut
  down, or dead-end, the operation of the computer. This can be done by a
  program when it encounters an "illegal" situation, for example, by a
  copy-protected program that detects an apparent violation of copy
  protection.

  The other use for this service is to reboot the computer without going
  through the reset and restart operations, which would, for example,
  recalculate the memory size and equipment list reported by interrupts 11H
  and 12H. This interrupt is particularly useful for any program that
  modifies either of these two items. The reasoning is simple: If you want
  to change the equipment list or the memory size (for example, to set aside
  some memory for a RAM disk), you cannot reliably count on all programs--
  including DOS--to check the actual memory or equipment specifications each
  time they are used. But a program could set aside some memory, change the
  memory specification, and then use this interrupt to reboot the system.
  When that is done and DOS is activated, DOS would take its own record of
  the available memory from the value set by your program. Neither DOS nor
  any civilized DOS program would be aware of, or interfere with, the memory
  area that was set aside.

  To give you a brief example, here's a fragment of assembler code that will
  change the ROM BIOS's record of the memory size and then use interrupt 19H
  to reboot the computer:

  mov     ax,40H                   ; get BIOS data segment of hex 40...
  mov     es,ax                    ; ...into ES segment register
  mov     word ptr es:[13h],256    ; set memory to 256 KB
  int     19h                      ; reboot system

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