	; Programm : Sound Effect Machine
	; Modul    : Clear Memory-Tabelle
	; by       : Dan Dark Software / Jörg Schließer
	; Version  : V1.0 / April 1990
	; Assembler: Kick-Ass V1.20

	; Modul zum Freigeben einer Anzahl von Speicherblöcken

	; Übergabeparameter beim Aufruf:

	; a0 = Zeiger auf Tabelle der Speicherblöcke
	; d0 = Anzahl der freizugebenden Speicherblöcke

	; Rückgabeparameter:
	; keine

	; Betriebsystem-Routinen

FreeMem	= -210

	; Konstanten:

execbase	= $4           ; Exec Basisadresse

	; Clear Speicher-Tabelle - Modul zum Freigeben einer Reihe
	; von Speicherblöcken. Die Tabelle enthält jeweils zuerst ein
	; Langwort mit der Adresse des Mem-Blocks, dann ein Langwort mit
	; der Länge des Speicherbereichs.

cleartab:
	movem.l d1-d7/a1-a6,-(sp) ; Registerinhalte retten
	exg    d0,d5              ; Zahl der Speicherblöcke sichen
	move.l a0,a5              ; Zeiger auf Speichertabelle
	subq.l #1,d5              ; Zähler -1 für dbra-Befehl
	move.l execbase.s,a6      ; Exec-Basisadresse
cleartabloop:
	move.l (a5)+,a1           ; Adresszeiger auf Speicher
	move.l (a5)+,d0           ; Länge des Speicherblocks
	beq    emptyblock         ; Länge=0 ... geht nicht !
	jsr    FreeMem(a6)        ; Speicherblock freigeben
emptyblock:
	dbra d5,cleartabloop      ; nächsten Speicherblock
exitcleartab:
	movem.l (sp)+,d1-d7/a1-a6; Register zurückhohlen
	rts

