/* Joy.m
   Assember version by Oliver Wagner
   Amiga E module by Peter Gordon

   Using the joy routine:
   
   SYNTAX:  value:=joy(port)
   
   INPUTS:  port (LONG)
            Can be 1 or 0. Any other number makes joy() return -1
            1= Joystick port, 0= Mouse port
   
   OUTPUTS: value (LONG) tested like this:
            IF(value AND JOY_LEFT) THEN WriteF('Left\n')
            

*/

MODULE '*joy' /* Joystick module */

PROC main()
  DEF moo[80]:STRING
  
  WriteF('\cAmiga E joystick demo... Public Domain!! Written by Peter Gordon!\n.---------- Port 1 ------------.--------- Port 2 ------------.\n\n`------------------------------^-----------------------------''\nCtrl-C to quit!',12)
  
  REPEAT
    StringF(moo,'\c[3;1H',27)
    IF(joy(1) AND JOY_LEFT)
      StrAdd(moo,'|LEFT  ')
    ELSE
      StrAdd(moo,'|      ')
    ENDIF
    IF(joy(1) AND JOY_RIGHT)
      StrAdd(moo,'RIGHT ')
    ELSE
      StrAdd(moo,'      ')
    ENDIF
    IF(joy(1) AND JOY_UP)
      StrAdd(moo,'UP    ')
    ELSE
      StrAdd(moo,'      ')
    ENDIF
    IF(joy(1) AND JOY_DOWN)
      StrAdd(moo,'DOWN  ')
    ELSE
      StrAdd(moo,'      ')
    ENDIF
    IF(joy(1) AND JOY_FIRE)
      StrAdd(moo,'FIRE  |')
    ELSE
      StrAdd(moo,'      |')
    ENDIF
    IF(joy(0) AND JOY_LEFT)
      StrAdd(moo,'LEFT  ')
    ELSE
      StrAdd(moo,'      ')
    ENDIF
    IF(joy(0) AND JOY_RIGHT)
      StrAdd(moo,'RIGHT ')
    ELSE
      StrAdd(moo,'      ')
    ENDIF
    IF(joy(0) AND JOY_UP)
      StrAdd(moo,'UP    ')
    ELSE
      StrAdd(moo,'      ')
    ENDIF
    IF(joy(0) AND JOY_DOWN)
      StrAdd(moo,'DOWN  ')
    ELSE
      StrAdd(moo,'      ')
    ENDIF
    IF(joy(0) AND JOY_FIRE)
      StrAdd(moo,'FIRE |')
    ELSE
      StrAdd(moo,'     |')
    ENDIF
    WriteF('\s',moo)
  UNTIL CtrlC()
  WriteF('\n\n\n\n')
ENDPROC
