*DECK OMOVE 
          IDENT  OMOVE
          ENTRY  OMOVE
          EXT    XTRACE 
          SST 
*IF  DEF,IMS
*#
*1DC  OMOVE 
* 
*     1. PROC NAME           AUTHOR              DATE 
*        OMOVE               Y. HSIEH            77/01/30 
* 
*     2. FUNCTIONAL DESCRIPTION.
*        THIS ROUTINE IS RESPONSIBLE FOR MOVING MOVABLE BUFFERS IN USE
*        TO A BIG ENOUGH FREE BLOCK AT LOWER ADDRESS TO AVOID MEMORY
*        FRAGMENTATION. 
* 
*     3. METHOD USED. 
*        PARAMETERS ARE PASSED THROUGH COMMON DECK FORDEQ 
*        MOVING STARTS FROM LOWER END TO TAKE CARE OF THE OVERLAPPING.
* 
*     4. ENTRY PARAMETERS.
*        MOLD   = FWA OF BLOCK TO BE MOVED FROM 
*        MNEW   = NUMBER OF WORDS IN BLOCK
*        MSIZE  = FWA OF BLOCK TO MOVE TO 
*        ALL THREE PARAMETERS CAN BE FOUND IN FREETAB COMMON BLOCK
* 
*     5. EXIT PARAMETERS.    NONE 
* 
*     6. COMDECKS CALLED. 
*          CYBERDEFS FREETAB INPARU MACDEF
* 
*     7. ROUTINES CALLED. 
*          XTRACE            RECORD CALL
* 
*     8. DAYFILE MESSAGES.   NONE 
* 
*#
*ENDIF
  
*CALL MACDEF
*CALL CYBERDEFS 
*CALL INPARU
*CALL FREETAB 
* 
 OMOVE    SUBR   =           ENTRY/EXIT 
* 
          IFEQ   DEBUG,1,6
          SX6    A1 
          SA6    TEMP 
          SX1    XOMOVE 
          RJ     XTRACE 
          SA1    TEMP 
          SA1    X1 
* 
          SA1    MOLD 
          SB1    1
          SB2    X1                FROM ADDRESS 
          SA2    MSIZE
          ZR     X2,OMOVE    EXIT IF NO TEXT TO MOVE
          SB5    B1-B1
          SA3    MNEW 
          SB3    X2                NUMBER OF WORDS
          SB4    X3                TO ADDRESS 
  
OMOVEA    SA4    B2+B5
          BX6    X4 
          SA6    B4+B5
          SB5    B5+B1
          NE     B3,B5,OMOVEA 
          EQ     OMOVE
 XOMOVE   DATA   L*OMOVE* 
 TEMP     BSS    1
          END 
