home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / progm / gvb-int.zip / GVB-INT.DOC < prev    next >
Text File  |  1988-06-14  |  4KB  |  88 lines

  1. GVB-INT.SHR - Get Video Buffer Interrupt Handler - 1988 by Simon Kane
  2.  
  3.  This DESQview 'Shared Program' provides a means to allow a program
  4.  that writes directly to the screen to use the DV-supplied alternate
  5.  video buffer without making major changes or requiring a loader.
  6.  
  7.  Most programs that write directly to the screen determine which video
  8.  buffer (CGA or Mono) to use by issuing an INT 10 w/ AH=0Fh and then
  9.  saving either B800h (CGA) or B000h (Mono) somewhere. Typically, an
  10.  instruction such as 'MOV reg,B800h' (for CGA) will be found (the
  11.  register won't always be AX). Once these instructions (Usually at
  12.  least two - one for each of CGA and Mono) have been found by using
  13.  DEBUG or a similar tool, installation is easy. Some programs might
  14.  use a 'MOV mem,B800h' instruction (op code C7h) instead of moving
  15.  the segment value to a register. It's possible that the program
  16.  could be doing something so strange that this program won't work
  17.  (like moving just the high order byte of the segment while depending
  18.  on the value in the other byte of the register - which is very bad
  19.  programming practice!). If so, I'd like to hear about it. I can be
  20.  contacted via the DESQview support bulletin board. There is a slim
  21.  chance that the instruction to be replaced is shorter than 3 bytes,
  22.  if so, a register had to be set to point to a constant of B800h or
  23.  B000h. If you're lucky (and know some assembler!), you can probably
  24.  move some instructions around and still make this work. If you find
  25.  a program that requires this level of hacking, and you do it, others
  26.  would probably appreciate the details - please put them on the
  27.  DESQview support bulletin board - after all that's where this came
  28.  from in the first place (even if you found it somewhere else!).
  29.  
  30.  Installation procedure:
  31.  
  32.   1. Use DEBUG (or the like) to replace the instructions found above
  33.      with the appropriate INT and operand code - NOP any unused bytes!
  34.  
  35.   2. Use 'Change a Program' Advanced Options to invoke GVB-INT.SHR
  36.      as a shared program.
  37.  
  38.  The operand code (that follows the INT 67) is constructed as follows:
  39.    Bit 76543210
  40.        11000rrr   Output to General Register rrr: 0=AX, 1=CX, 2=DX,
  41.                   3=BX, 5=BP, 6=SI, 7=DI (4 is invalid - it would be
  42.                   SP, but we can't use that and expect to return)
  43.        110010ss   Output to Segment Register ss: 0=ES, 3=DS (1 and 2
  44.                   are invalid - they would be CS & SS, but see above)
  45.        10......   Output to memory operand with 16-bit displacement
  46.        01......   Output to memory operand with 8-bit displacement
  47.        00......   Output to memory operand with no displacement
  48.        (memory operands are not yet implemented - and may never be!)
  49.  
  50.  
  51.  
  52.  Example:
  53.    The application program has been found to contain the following:
  54.         MOV   AH,0Fh
  55.         INT   10h
  56.         CMP   AL,2
  57.         JE    MONO
  58.         CMP   AL,7
  59.         JE    MONO
  60.         MOV   AX,B800h
  61.         JMP   GO_ON
  62.  MONO:  MOV   AX,B000h
  63.  GO_ON: ....
  64.  
  65.  The interrupt number to be used is 67h
  66.  
  67.  Replace the 'MOV  AX,B800h' (xB800B8) with INT 67; NOP (xCD67C0)
  68.  Replace the 'MOV  AX,B000h' (xB800B0) with INT 67; NOP (xCD67C0)
  69.  Enter the name of this program in the Shared Program path field
  70.  Go for it!
  71.  
  72.  Note:
  73.  
  74.  If INT 67h is already in use on your system, simply change the line
  75.  labeled USER_INT to reflect the desired interrupt number, reassemble
  76.  & link GVB-INT, and put that number into the INT instruction instead.
  77.  
  78.  
  79.  A final word of warning!
  80.  
  81.  The modified application program will no longer run without DESQview!
  82.  
  83.  I recommend that you keep 2 copies of the program under different
  84.  names - the original and the DESQview-only version. Any name will do
  85.  for the DV version - just enter that name into the PIF or BAT file
  86.  that invokes it. If you use a BAT file, either keep two of them, or
  87.  add a parameter to tell it which version to use.
  88.