home *** CD-ROM | disk | FTP | other *** search
/ AMIGA-CD 2 / Amiga-CD - Volume 2.iso / ungepackte_daten / 1994 / 6 / 02 / tips&tricks / speicher.asm < prev   
Encoding:
Assembly Source File  |  1995-06-01  |  1.1 KB  |  42 lines

  1. ***************************************
  2. ;Routine  : Speicher_Reservieren
  3. ;Parameter: D0=Größe des benötigten Speichers
  4. ;Rückgabe : D0=Adresse des Speicherbereichs
  5. ;              oder 0 bei Speichermangel!
  6.  
  7. Speicher_Reservieren:
  8.  movem.l d2/a6,-(a7)
  9.  addq.l  #4,d0        ;Größe+4 Bytes reservieren
  10.  move.l  #$10001,d1   ;MEMF_CLEAR!MEMF_PUBLIC
  11.  move.l  d0,d2        ;Größe merken
  12.  move.l  4.w,a6
  13.  jsr     -198(a6)     ;AllocMem
  14.  tst.l   d0           ;Fehler -> Routine beenden!
  15.  beq.s   1$
  16.  move.l  d0,a0        ;Größe vor den Beginn des
  17.                       ;Speicherbereichs schreiben
  18.  move.l  d2,(a0)+
  19.  move.l  a0,d0        ;Adresse+4 zurückgeben
  20. 1$
  21.  movem.l (a7)+,d2/a6
  22.  rts
  23.  
  24. *******************************************
  25. ;Routine  : Speicher_Freigeben
  26. ;Parameter: D0=Adresse des Speicherbereichs
  27. ;Rückgabe : -
  28.  
  29. Speicher_Freigeben:
  30.  move.l  a6,-(a7)
  31.  tst.l   d0           ;überhaupt reserviert?
  32.  beq.s   1$           ;nein -> nicht freigeben!
  33.  move.l  d0,a1
  34.  move.l  -(a1),d0     ;Größe des reservierten
  35.                       ;Speicherbereichs holen
  36.  move.l  4.w,a6
  37.  jsr     -210(a6)     ;FreeMem aufrufen
  38. 1$
  39.  move.l  (a7)+,a6
  40.  rts
  41.  
  42.