   A Module has two ways to obtain information from MVG 1.3
 Any method can be used alone. Most can be mixed and matched,
 although at this time I don't know why you should bother.
 


1) Manual contruction: this is the original method as used in MVG v1.2
                       It requires that you copy the Packet Table from
                       MVG's data space into your module. The Packet
                       is a bit disorganized, mixing varibles' addresses
                       with subroutine entry points; but it is kept
                       to maintain compatiblity with v 1.2.

2) Minimal Hassle:     a set of function calls using a method
                       similar to that used in GEMDOS calls.




  All methods require that the module can locate its parent's basepage
 address, and thereby locate the parent's command line (basepage+$0080).
 
 
MVG's commandline will contain the following 3 items, each is four bytes wide
 
   a) Packet Address      32 bit word:   $nnnnnnnn
   b) MVG Signature       ascii codes:   $00, $4D, $56, $47    ( 0,"MVG")
   c) Version signature   ascii codes:   $31, $2e, $30, (??)   ("1.3",??)
   
   
   a) Address of Packet List: THIS IS WHERE YOU'LL FIND THE GOODIES!
   b) MVG Signature must be located!
   c) sub signature denotes version number. last char is sub_ver letter.
   


Packet List Pointer  (item #a, in MVG commandline)

  This address points to the original Packet List (as defined in v1.2).
  Each item in the list is 4 bytes wide (ie a long word). Items are
  either a variables address in MVG's space or the entry point for a
  subroutine within MVG.
  
  The first two items do not follow the above definition. They are direct!
  
  item 0: MAIN_BUFFER Address. This is a pointer to the main image buffer.
          Unlike the other items which can be modified, this one cannot.

  item 1: BUFFER_LEN  Variable. This is the size, in bytes, of the above
          addressed buffer. This, also, cannot be modified.

  All other items are POINTERS to either Variables or Routines. You can
  modify the value found at the item's directed address:

  
  -------------------------------------------------------------------------
  Sample Sample  Sample Sample  Sample Sample  Sample Sample  Sample Sample
  -------------------------------------------------------------------------
  
  Item #z:  Image_Height.W :  $002CE428
  
       at address $002CE428 is where you'll find the Height of the current
       image in memory. 
       
       at $002CE428 we find the value $0190   (400 decimal)
       we can reduce the image's height by simply replacing the $0190
       with a smaller value. When MVG regains control, it will think
       that the image is shorter.


  Item #e:  AnyKey         :  $00301990
  
       address $00301990 is the entrypoint for the subroutine ANYKEY
       calling this address (ANYKEY) will wait for a keypress and 
       return the keycode in D0.L ; you can use it for input or simply
       as a pausing method.
       
  -------------------------------------------------------------------------




 The Packet List Pointer, as said earlier, points to the start of the Packet.
 Each item is an offset from this start (item_number * 4).
 
 At offset -4 is the address for method#2 calls   (PACK2_FUNC)
 At offset -8 is the address for method#3 calls   (not implemented in 1.3)
 At offset -12 is the address of MOD_RETURN_VALUES_INT   (unused in 1.3)
 At offset -16 is the address of MOD_RETURN_VALUES_ADR   (unused in 1.3)
 
 
   Method #1 requires that your module copy the packet list into it's own
 memory space and build it's own method of accessing the values there (or
 contantly accessing MVG's packet area via an indirect pointer).
   There are samples in the MOD_CODE folder, showing how to read MVG's info
 and call it's subroutines. A Number of macros also provide for ease of use.
 The Packet Listing is documented there.
 
  Method #2 incorporates a simple "function call" to perform a specific task
 This is much the same way that GEMDOS calls are made, except that MVG is 
 not called using the TRAP opcode. Instead, JSR to PACK2_FUNC :

  -------------------------------------------------------------------------
  Sample Sample  Sample Sample  Sample Sample  Sample Sample  Sample Sample
  -------------------------------------------------------------------------

 
   move.l #2,-(sp)            ;function #2, (get main_buffer address)
   move.l PACK2_FUNC,(a0)     ;point to function method address
   jsr (a0)                   ;call MVG Function dispatcher
   addq.l #4,sp               ;restore stack_ptr
   move.l d0,buffer_ptr       ;save address of image buffer
   move.l d1,buffer_len       ;and also it's length
   
  Each function is specified by a number. See M_METH2 file for
  functions details.
  
  
       
       
  -------------------------------------------------------------------------


 Logical steps for module construction:
 
 
 
 1) INIT
    a) do standard prog init with free_mem etc
    b) store pointer to "parent's" commandline. Label: PAR_whatever
    c) check for MVG signature in parent commandline
       1) if no sig, then exit
       2) if sig found
          a) check version number if necessary
          b) or skip to packet read

 2) PACKET Pointers
    a) for method two, simply store the MVG_FUNC pointer somewhere...
    b) for method one, copy the packet listing into module memory...
    
 3) Build or point to necessary routines or system variables
    a) most often, store adrs of main image buffer 
    b) 2nd most often, store adrs of clipboard buffer
    c) other common vars: WID,HGT etc
    
 4) Your program's MAIN_ACTION...........
 
        