home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 211.lha / MemFlush.asm < prev    next >
Assembly Source File  |  1996-02-14  |  3KB  |  100 lines

  1. ;
  2. ;       MemFlush 1.0
  3. ;
  4. ;       Public Domain Software, Courtesy of
  5. ;           Eric Schwertfeger
  6. ;       and Laser's Edge Software
  7. ;
  8. ;       MemFlush is a short Assembly language program who's purpose is to
  9. ;       force EXEC to free up the memory occupied by unused libraries,
  10. ;       fonts, and other shared resources.  Since this memory will get
  11. ;       freed as soon as it is needed anyway, this program is not useful
  12. ;       to non-programmers.  It's purpose is to flush unused resources
  13. ;       so that the programmer can be sure that his or her program is
  14. ;       freeing all resources upon exiting.  It does this merely by
  15. ;       Allocating a very large block of memory (256 Meg), freeing it
  16. ;       if it just happens to get it.
  17. ;
  18.             XREF    _AbsExecBase
  19.             XREF    _LVOOpenLibrary
  20.             XREF    _LVOCloseLibrary
  21.             XREF    _LVOOutput
  22.             XREF    _LVOWrite
  23.             XREF    _LVOAllocMem
  24.             XREF    _LVOFreeMem
  25.             XREF    _LVOExit
  26.  
  27. MEMF_CHIP   EQU     2
  28. MEMF_FAST   EQU     4
  29.  
  30. MemFlush:
  31.             move.l  _AbsExecBase,a6
  32.             move.l  #0,d1
  33.             sub.q   #1,d0
  34.             bra.s   ParseDone
  35. Parse:
  36.             move.b  (a0)+,d2            ;Search for c, f, or ?
  37.             cmp.b   #'?',d2
  38.             beq.s   PrintHelp
  39.             or.b    #32,d2              ;Make whatever it is lower case
  40.             cmp.b   #'c',d2
  41.             bne.s   NotChip
  42.             or.l    #MEMF_CHIP,d1
  43.             bra.s   ParseDone
  44. NotChip:
  45.             cmp.b   #'f',d2
  46.             bne.s   NotFast
  47.             or.l    #MEMF_FAST,d1
  48.             bra.s   ParseDone
  49. NotFast:
  50.             cmp.b   #32,d2
  51.             bne.s   PrintHelp
  52. ParseDone:
  53.             dbra    d0,Parse
  54.             cmp.l   #MEMF_CHIP!MEMF_FAST,d1 ;can't get both Fast and Chip
  55.             beq.s   PrintHelp
  56.             move.l  #$FFFFFFF,d0
  57.             jsr     _LVOAllocMem(a6)        ;flush unused fonts and
  58.             tst.l   d0                      ;libraries
  59.             beq.s   Done                    ;just in case the operating system
  60.             move.l  d0,a1                   ;ever goes virtual
  61.             move.l  #$FFFFFFF,d0
  62.             jsr     _LVOFreeMem(a6)
  63. Done:
  64.             rts
  65. ;
  66. ;           Print the Help message
  67. ;
  68. PrintHelp:
  69.             move.l  #dosname,a1
  70.             clr.l   d0
  71.             jsr     _LVOOpenLibrary(a6)     ;get the dos library so we can Write
  72.             move.l  a6,a5
  73.             move.l  d0,a6
  74.             beq     Done                    ;couldn't open dos.library
  75.             jsr     _LVOOutput(a6)
  76.             tst.l   d0
  77.             beq.s   abort                   ;couldn't get Output
  78.             move.l  d0,d1
  79.             move.l  #Message,d2
  80.             move.l  #MesLen,d3
  81.             jsr     _LVOWrite(a6)
  82. abort:
  83.             move.l  a6,a1
  84.             move.l  a5,a6
  85.             jsr     _LVOCloseLibrary(a6)
  86.             bra     Done
  87.  
  88. dosname     dc.b    'dos.library',0
  89. Message     dc.b    'MemFlush 1.0, by Eric Schwertfeger',10
  90.             dc.b    'USAGE:  MemFlush [c|f|?]',10
  91.             dc.b    9,'MemFlush',9,'Frees as much RAM as possible.',10
  92.             dc.b    9,'MemFlush c',9,'Frees as much Chip RAM as possible.',10
  93.             dc.b    9,'MemFlush f',9,'Frees as much Fast RAM as possible.',10
  94.             dc.b    9,'MemFlush ?',9,'Displays this help message.',10
  95. EOM         ds      0
  96. MesLen      EQU     EOM-Message
  97.  
  98.            END
  99.  
  100.