home *** CD-ROM | disk | FTP | other *** search
/ Vectronix 2 / VECTRONIX2.iso / FILES_03 / SOURCE_J.LZH / 3DDEMO / JOYPAD.S < prev    next >
Text File  |  1994-09-06  |  3KB  |  99 lines

  1. ;*======================================================================*
  2. ;*                TITLE:                  JOYPAD.S                      *
  3. ;*                Function:               RAPIER joypad input           *
  4. ;*                                                                      *
  5. ;*                Project #:              RAPIER                        *
  6. ;*                Programmer:             Rob Zdybel                    *
  7. ;*                                                                      *
  8. ;*              COPYRIGHT 1993 Atari Computer Corporation               *
  9. ;*         UNAUTHORIZED REPRODUCTION, ADAPTATION, DISTRIBUTION,         *
  10. ;*          PERFORMANCE OR DISPLAY OF THIS COMPUTER PROGRAM OR          *
  11. ;*        THE ASSOCIATED AUDIOVISUAL WORK IS STRICTLY PROHIBITED.       *
  12. ;*                            ALL RIGHTS RESERVED.                      *
  13. ;*                                                                      *
  14. ;*======================================================================*
  15.  
  16.     .include "jaguar.inc"
  17.  
  18. ;
  19. ;    PUBLIC SYMBOLS
  20. ;
  21.     .globl    readpad
  22.  
  23.     .globl    pad_now
  24.     .globl    pad_shot
  25.  
  26. ;
  27. ;    SUBROUTINE AREA
  28. ;
  29.  
  30. ;
  31. ;    READPAD   Read the JAGUAR Joypad
  32. ;
  33. ;    Given:
  34. ;        Control
  35. ;
  36. ;    Returns:
  37. ;        PAD_NOW = Current reading of joypad (Asserted High)
  38. ;        PAD_SHOT = Edge-triggered One Shot of joypad
  39. ;
  40. ;    Register Usage:
  41. ;        All Registers Restored
  42. ;
  43. ;    Externals:
  44. ;        None
  45. ;
  46. readpad:
  47.     movem.l    d0-d2,-(sp)
  48.  
  49.     move.l    #$f0fffffc,d1        ; d1 = Joypad data mask
  50.     moveq.l    #-1,d2            ; d2 = Cumulative joypad reading
  51.  
  52.     move.w    #$800e,JOYSTICK
  53.     move.l    JOYSTICK,d0        ; Read Stick and Pause/A
  54.     or.l    d1,d0            ; Mask off unused bits
  55.     ror.l    #4,d0
  56.     and.l    d0,d2            ; d2 = xxApxxxx RLDUxxxx xxxxxxxx xxxxxxxx
  57.     move.w    #$800d,JOYSTICK
  58.     move.l    JOYSTICK,d0        ; Read *741 and B
  59.     or.l    d1,d0            ; Mask off unused bits
  60.     ror.l    #8,d0
  61.     and.l    d0,d2            ; d2 = xxApxxBx RLDU741* xxxxxxxx xxxxxxxx
  62.     move.w    #$800b,JOYSTICK
  63.     move.l    JOYSTICK,d0        ; Read 2580 and C
  64.     or.l    d1,d0            ; Mask off unused bits
  65.     rol.l    #6,d0
  66.     rol.l    #6,d0
  67.     and.l    d0,d2            ; d2 = xxApxxBx RLDU741* xxCxxxxx 2580xxxx
  68.     move.w    #$8007,JOYSTICK
  69.     move.l    JOYSTICK,d0        ; Read 369# and Option
  70.     or.l    d1,d0            ; Mask off unused bits
  71.     rol.l    #8,d0
  72.     and.l    d0,d2            ; d2 = xxApxxBx RLDU741* xxCxxxox 2580369#
  73.  
  74.     not.l    d2            ; d2 = Inputs active high
  75.  
  76.     move.l    pad_now,d0
  77.     move.l    d2,pad_now        ; PAD_NOW = Current joypad reading
  78.     eor.l    d2,d0
  79.     and.l    d2,d0
  80.     move.l    d0,pad_shot        ; PAD_SHOT = Oneshot joypad
  81.  
  82.     movem.l    (sp)+,d0-d2
  83.     rts
  84.  
  85. ;
  86. ;    VARIABLE STORAGE
  87. ;
  88.     .bss
  89.     .even
  90.  
  91. pad_now:        ; Current Joypad reading
  92.     .ds.l    1    ; xxApxxBx RLDU741* xxCxxxox 2580369#
  93. pad_shot:        ; OneShot Joypad reading
  94.     .ds.l    1
  95.  
  96. ;*======================================================================*
  97. ;*                      EOF
  98. ;*======================================================================*
  99.