len = 393216					; Musikspeicherlänge
		
speed = 430					; Geschwindigkeit
	
execbase = 4

AllocMem   = -30 -168
FreeMem    = -30 -180
openlib    = -30 -378
closelib   = -30 -384
supervisor = -30 -0

open       = -30 -0
close      = -30 -6
write      = -30 -18

timerlo = $bfd400
timerhi = $bfd500
inter   = $bfdd00
control = $bfde00
base1   = $BFE001
base2   = $BFD000
dra2    = base2+$000
drb1    = base1+$100
ddra2   = base2+$200
ddrb1   = base1+$300

start:		andi.b  #$40,$bfe001
		bne.s   start
		move.l	execbase,a6		; Supervisor-Modus
		lea	super,a5
		jmp	supervisor(a6)
super:		addq.l	#8,a7
		move.l	#$10002,d1		; Speicher reservieren
		move.l	#len+4,d0		; (Musikspeicher)
		jsr	AllocMem(a6)
		move.l	d0,buffer
		lea.l   dosname,a1
		jsr     openlib(a6)
		move.l  d0,dosbase
		move.l  d0,a6
		move.l  #name,d1
		move.l  #$03ee,d2
		jsr     open(a6)		
		move.l  d0,fileh

		move	#$2700,SR		; Interrupts sperren
		move.b	#%00000000,ddrb1	; Parallel-Port
		move.b	ddra2,d0		; initialisieren
		andi.b	#%11111010,d0
		ori.b	#%00000100,d0
		move.b	d0,ddra2

		move.b	#speed/5,timerlo
		move.b	#0,timerhi
		move.b	#%01111110,inter
		move.b	#%10000001,inter
		move.b	#%10010101,control

		lea	block,a1		; Farbdefinitionen
		move	#$0000,block		; Nullpunkt (schwarz)
		move	#$0F00,block+254	; übersteuert (rot)
		move	#$0F00,block+256	; übersteuert (rot)

		move.l  #$01,d4
schleife:	move.l	buffer,a0
		move.l	#len,d3
		
schleife1:	andi.b	#%00000001,inter
		beq.S	schleife1
		ori.b	#%00000100,dra2		; Digitalisierung
		andi.b	#%11111011,dra2		; starten
busy:		andi.b	#%00000001,dra2		; Noch beschäftigt?
		beq.S	busy			; Ja,warten
		clr.l	d1
		move.b	drb1,d1			; Sounddaten holen
	 	eori.b	#128,d1			; Umrechnung
		move.b	d1,(a0)+		; Wert speichern
		asl	#1,d1			; Farbe berechnen
		move	(a1,d1),$DFF180
		subq.l	#1,d3
		bpl.S	schleife1

		move.l  fileh,d1
		move.l  buffer,d2
		move.l  #len+2,d3
		jsr     write(a6)

tja:		andi.b #$40,$bfe001
		bne.s tja	
		dbra    d4,schleife
		move.l  fileh,d1
		jsr     close(a6)

		move	#0,SR			; User-Modus
		move.l  execbase,a6
		move.l	buffer,a1		; Speicher
		move.l	#len+4,d0		; freigeben
		jsr	FreeMem(a6)
		move.l  dosbase,a1
		jsr     closelib(a6)
		illegal				; => zum Seka
;		rts				; => zum CLI

align 4
buffer:		dc.l	0
dosbase:        dc.l    0
align 4
name:  dc.b 'Gang',0
align 4
fileh: dc.l  0
align 4
dosname: dc.b 'dos.library',0
align 4
block:		blk.w	256,8

