'
' Jagpad routine in GFABASIC
' by Simon Sunnyboy / Paradize
'
DO
jag%=FN jagpad_a
EXIT IF jag% AND 128 ! exit if button
IF jag% AND 1
PRINT "UP ";
ENDIF
IF jag% AND 2
PRINT "DOWN ";
ENDIF
IF jag% AND 4
PRINT "LEFT ";
ENDIF
IF jag% AND 8
PRINT "RIGHT ";
ENDIF
IF jag% AND 16
PRINT "OPTIONS ";
ENDIF
IF jag% AND 32
PRINT "BUTC ";
ENDIF
IF jag% AND 64
PRINT "BUTB ";
ENDIF
LOOP
EDIT
'
FUNCTION jagpad_a
LOCAL vec%,pad%
'
' returns the state of Jagpad A as a vector
' Bits 0-3 standard joystick directions (compatible with IKBD)
' Bit 4 Options button
' Bit 5 Button C
' Bit 6 Button B
' Bit 7 Button A
' directions
vec%=0
SDPOKE &HFF9202,&HFFFE
pad%=NOT (DPEEK(&HFF9202) AND &HF00)
IF pad% AND 2048 ! right
vec%=vec% OR 8
ENDIF
IF pad% AND 1024 ! left
vec%=vec% OR 4
ENDIF
IF pad% AND 512 ! down
vec%=vec% OR 2
ENDIF
IF pad% AND 256 ! up
vec%=vec% OR 1
ENDIF
'
SDPOKE &HFF9202,&HFFFE
pad%=NOT (DPEEK(&HFF9200) AND &HF)
IF pad% AND 2
vec%=vec% OR 128 ! button A
ENDIF
SDPOKE &HFF9202,&HFFFD
pad%=NOT (DPEEK(&HFF9200) AND &HF)
IF pad% AND 2
vec%=vec% OR 64 ! button B
ENDIF
SDPOKE &HFF9202,&HFFFB
pad%=NOT (DPEEK(&HFF9200) AND &HF)
IF pad% AND 2
vec%=vec% OR 32 ! button C
ENDIF
'
SDPOKE &HFF9202,&HFFF7
pad%=NOT (DPEEK(&HFF9200) AND &HF)
IF pad% AND 2
vec%=vec% OR 16 ! Options
ENDIF
'
RETURN vec%
ENDFUNC