Corrections and clarifications.
-----------------------------------------------------------------------------
    Hehe! This area was added to "correct" or clear up a little bit more the
concepts we discussed in this magazine... generally from previous issues.The
problem is how frequently we are putting out the rag:  we have a group of
people working on many projects at the same time, as well as on the magazine,
so things are unintentionally overlooked or aren't clear enough to be easily
understood.

    One example is the note in which Zarathustra discusses residence methods;
where he explains the MCB he says:

     mov  ax, cs              ;With this we obtain the MCB segment.
     dec  ax             

     mov  es, ax              ;Here we obtain the amount of memory used 
     mov  ax, es:[3]          ;from the MCB.

;****************************************************************************
    The problem is that nowhere is it clear that we must make the size of the
virus a little larger, exactly one paragraph larger.  Why is this?  When we
subtract a paragraph from the memory we want to reserve  (to make room for
the MCB's new block) we are also reserving one paragraph less for the virus,
too.  In other words, the last part of the virus would not enter the reserved
memory.  It might not be a problem if it's a data area or something like
that, but we want to do things right, right?  ;-) 
    Ok, the easy solution to this is to increment the number of virus
paragraphs or, if you are stating it in your program with:

  SIZE_IN_PARAGRAPHS EQU ((END-START)/16)+1

  just state the increment there, so as to not waste bytes or clocks.   ;) :
 
  SIZE_IN PARAGRAPHS EQU ((END-START+15)/16)+1

*****************************************************************************

     sub  ax, bx              ;BX contains the virus length in paragraphs
                              : (now incremented).

     push bx                  ;Save the amount of memory to be reserved
     mov  bx, ax              ;Pass the new value to BX.
     push cs 
     pop  es
     mov  ah, 4ah
     int  21h

     pop  bx                  ;POP the amount of memory to reserve..
     dec  bx
     mov  ah, 48h
     int  21h

     dec  ax
     mov  es, ax
     mov  word ptr es:[1], 8
     mov  word ptr es:[8],'XX'     ;Optional, name the block.
     inc  ax
     mov  es, ax

     push es             ;Save the address of the virus segment
     ...                 ;blah blah blah followed by the rest of the code.
     ...
  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Remember Where You Saw This Phile First ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
  ÄÄÄÄÄÄÄÄ[=] ARRESTED DEVELOPMENT +31.77.547477 The Netherlands [=]ÄÄÄÄÄÄÄ
  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
