REM ***   PAIN-DEMO   ***
REM by Simon Wiest ILYM&I
REM      -KICKSTART-

CHDIR "df0:"

LIBRARY "exec.library"
DECLARE FUNCTION AllocMem& LIBRARY

LIBRARY "dos.library"
DECLARE FUNCTION xOpen& LIBRARY
DECLARE FUNCTION xRead& LIBRARY

hardware&=14675968&                'Magische Anfangsadresse
speed=320                          'Geschwindigkeit
Laenge&=86800&
vol=64

f$="df0:SOUNDS/PAIN.SOUND"+CHR$(0)

CLS

Adresse&=AllocMem&(Laenge&,2&) 'Speicher reservieren
IF Adresse&=0 THEN PRINT "Not enough CHIP-Memory !":END
Handle&=xOpen&(SADD(f$),1005&) 'Datei öffnen
  erg&=xRead&(Handle&,Adresse&,Laenge&) 'Daten lesen
CALL xClose(Handle&) 'Datei schließen 


POKEL hardware&+160,Adresse&       'Anfang des Sounds
POKEW hardware&+164,INT(Laenge&/2) 'Laenge in Worten
POKEW hardware&+166,speed          'Geschwindigkeit
POKEW hardware&+168,vol            'volle Lautstärke

POKEW  hardware&+150,32771&        'DMA ein = Sound los !
PRINT "The PAIN-Demo by Simon Wiest":PRINT 
PRINT "Press cursor keys:"
COLOR 2:PRINT "Up   ";:COLOR 1:PRINT " to increase volume"
COLOR 2:PRINT "Down ";:COLOR 1:PRINT " to decrease volume"
COLOR 2:PRINT "Right";:COLOR 1:PRINT " to increase speed&pitch"
COLOR 2:PRINT "Left ";:COLOR 1:PRINT " to decrease speed&pitch"
COLOR 2:PRINT "ESC  ";:COLOR 1:PRINT " to skip"

s:
  a$=INKEY$
  IF a$="" THEN s
  IF ASC(a$)=28 AND vol<64 THEN vol=vol+1:POKEW hardware&+168,vol
  IF ASC(a$)=29 AND vol>1 THEN vol=vol-1:POKEW hardware&+168,vol
  IF ASC(a$)=31 AND speed<500 THEN speed=speed+5:POKEW hardware&+166,speed
  IF ASC(a$)=30 AND speed>5 THEN speed=speed-5:POKEW hardware&+166,speed
  IF ASC(a$)<>27 THEN s

POKEW  hardware&+150,3             'DMA aus = Sound aus
POKEW hardware&+168,0              'Lautstäke: aus
CALL Freemem(Adresse&,Laenge&)     'Speicher freigeben
PRINT "Good Byte !"

END

