changeset 380:a814a6c1dab7

Added joypoll
author boisy
date Sat, 24 Aug 2002 15:24:16 +0000
parents 5f44464f7a4b
children 25c2f2c8f15f
files 3rdparty/utils/boisy/joypoll.asm
diffstat 1 files changed, 171 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/3rdparty/utils/boisy/joypoll.asm	Sat Aug 24 15:24:16 2002 +0000
@@ -0,0 +1,171 @@
+         nam   JoyPoll
+         ttl   Joystick poll utility
+
+         ifp1
+         use   os9defs
+         use   scfdefs
+         endc
+
+         mod   eom,Name,Prgrm+Objct,Reent+1,Start,Fin
+
+Name     fcs   /AutoEx/
+Ed       fcb   $02
+
+outpath  rmb   1
+outline  rmb   80
+SubEnt   rmb   2
+RetAddr  rmb   2
+JoyNum   rmb   2
+JoyX     rmb   2
+JoyY     rmb   2
+JoyB     rmb   2
+LastJoyX rmb   2
+LastJoyY rmb   2
+LastJoyB rmb   2
+opts     rmb   OPTCNT
+Stack    rmb   200
+Fin      equ   .
+
+ParmCnt  equ   0
+Addr1    equ   2
+Size1    equ   4
+Addr2    equ   6
+Size2    equ   8
+Addr3    equ   10
+Size3    equ   12
+Addr4    equ   14
+Size4    equ   16
+StackEnd equ   Size4
+
+submod   fcs   "JoyStk"
+outdev   fcs   "/T1"
+
+Start    lda   #Sbrtn+Objct
+         leax  submod,pcr
+         pshs  u
+         os9   F$Link
+         puls  u
+         bcc   GoOn
+error    os9   F$Exit
+GoOn     sty   <SubEnt			save entry pointer
+
+* Initialize our static storage
+         ldd   #$FFFF
+         std   <LastJoyX
+         std   <LastJoyY
+         std   <LastJoyB
+
+* Populate our storage area with parameters for the module
+         leas  -StackEnd,s
+         ldd   #$04
+         std   ParmCnt,s
+         ldb   #$02
+         std   Size1,s
+         std   Size2,s
+         std   Size3,s
+         std   Size4,s
+         leax  JoyNum,u
+         decb
+         std   ,x
+         stx   Addr1,s
+         leax  JoyX,u
+         stx   Addr2,s 
+         leax  JoyY,u
+         stx   Addr3,s 
+         leax  JoyB,u
+         stx   Addr4,s 
+        
+* Open path to output device
+         leax  outdev,pcr
+         lda   #WRITE.
+         os9   I$Open
+         bcs   error
+         sta   <outpath
+
+* Set up no pause for both stdout and newly opened output path
+         ldb   #SS.Opt
+         leax  opts,u
+         os9   I$GetStt
+         bcs   error
+         clr   (PD.PAU-PD.OPT),x
+         os9   I$SetStt
+         bcs   error
+         lda   #1
+         os9   I$GetStt
+         bcs   error
+         clr   (PD.PAU-PD.OPT),x
+         os9   I$SetStt
+         bcs   error
+       
+* Here's where the action is
+FLoop    ldx   <SubEnt 
+         jsr   ,x		call subroutine module
+
+* See if our new values match our last values?
+         ldd   <JoyX		get joystick X
+         cmpd  <LastJoyX	same as last?
+         bne   CopyVals		branch if not
+         ldd   <JoyY		get joystick Y
+         cmpd  <LastJoyY	same as last?
+         bne   CopyVals		branch if not
+         ldd   <JoyB		get joystick button
+         cmpd  <LastJoyB	same as last?
+         beq   Nap
+
+* Copy current values to 'last' values
+CopyVals ldd  <JoyB
+         std  <LastJoyB
+         ldd  <JoyY
+         std  <LastJoyY
+         ldd  <JoyX
+         std  <LastJoyX
+
+         leax  <outline,u
+         bsr   OutDec3		output joystick X
+         lda   #C$SPAC
+         sta   ,x+
+         ldd   JoyY,u
+         bsr   OutDec3		output joystick Y
+         lda   #C$SPAC
+         sta   ,x+
+         ldd   JoyB,u
+         bsr   OutDec3		output joystick button
+         lda   #C$CR
+         sta   ,x+
+         lda   <outpath
+         leax  <outline,u
+         ldy   #80
+         os9   I$WritLn		write line
+         lda   #$01		stdout
+         os9   I$WritLn		write line to screen
+
+* Take a small nap
+Nap      ldx   #60*1			1 seconds
+         os9   F$Sleep			go to sleep
+         bra   FLoop 
+
+ 
+* Print 3 Decimal Digits from D to ,X
+OutDec3  pshs  a
+         lda   #'0
+         sta   ,x
+         sta   1,x
+         puls  a
+Hundred  subd  #100
+         bcs   PreTen
+         inc   ,x
+         bra   Hundred
+PreTen   addd  #100
+Ten      subd  #10
+         bcs   PreOne
+         inc   1,x
+         bra   Ten
+PreOne   addb  #$30+10
+         stb   2,x
+         leax  3,x
+         rts
+
+         emod
+eom      equ   *
+         end
+