home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 303.lha / AssemTools / Include / joylib.i < prev    next >
Text File  |  1980-12-03  |  2KB  |  102 lines

  1. ;;; JOYSTICK INCLUDE FILE v1.3 by TM0312881546
  2.  
  3.  
  4. ; sortentry.comments added -> v1.3  04.03.1989
  5.  
  6. *T
  7. *T    JOYLIB.I * Metacc Include File
  8. *T        Version 1.3
  9. *T          Date 04.03.1989
  10. *T
  11. *B
  12.  
  13. ;  stick    (read joystick direction)
  14. ;  in:        d0=port_number;
  15. ;  call:    joylib stick;
  16. ;  out:        d0=x_direction; /left=-1,0,1=right/
  17. ;        d1=y_direction; /up=-1,0,1=down/
  18. ;        d2=fire_button; /0,1=pressed/
  19.  
  20. ;  rangerand    (generate random numbers)
  21. ;  in:        d0=range;
  22. ;  call:    joylib    rangerand;
  23. ;  out:        d0=random_number;
  24. ;  notes:    /Needs GFX/
  25. ;        /'range' should be between 0 and 256/
  26. ;        /'random_number' is chosen between [0..]range/
  27. ;        /thus including '0' but excluding 'range'/
  28.  
  29. *E
  30.  
  31.  
  32.  
  33. joylib    macro
  34.     ifnc    '','\1'
  35. _JOYF\1    set    1
  36.     bsr    _JOY\1
  37.     mexit
  38.     endc
  39.  
  40.     ifd    _JOYFstick
  41.  
  42. _JOYstick    push    a0/d3-d5
  43.         moveq    #6,d3
  44.         lea    $dff00a,a0
  45.         btst    #0,d0
  46.         beq    _stick0
  47.         lea    2(a0),a0
  48.         moveq    #7,d3
  49. _stick0        moveq    #0,d2        ;fireb status
  50.         moveq    #0,d4        ;dx
  51.         moveq    #0,d5        ;dy
  52.         move.b    $bfe001,d1
  53.         btst    d3,d1
  54.         bne    _stick1
  55.         bset    #0,d2        ;fire
  56. _stick1        move.w    (a0),d1
  57.         btst    #9,d1
  58.         bne    _stick2
  59.         addq.l    #1,d4
  60. _stick2        btst    #1,d1
  61.         bne    _stick3
  62.         subq.l    #1,d4
  63. _stick3        move.w    d1,d0
  64.         lsr.w    #1,d0
  65.         eor.w    d0,d1
  66.         btst    #0,d1
  67.         bne    _stick4
  68.         subq.l    #1,d5
  69. _stick4        btst    #8,d1
  70.         bne    _stick5
  71.         addq.l    #1,d5
  72. _stick5        move.l    d4,d0
  73.         move.l    d5,d1
  74.         pull    a0/d3-d5
  75.         rts
  76.  
  77.     endc
  78.  
  79.     ifd    _JOYFrangerand
  80. _JOYrangerand    push    d1
  81.         move.l    d0,d1
  82.         push    d1/a0-a1
  83.         lib    Gfx,VBeamPos
  84.         and.l    #$ff,d0
  85.         lea.l    _JOYrangerands(pc),a0
  86.         move.b    (a0),d1
  87.         eor.b    d1,d0
  88.         move.b    d0,d1
  89.         add.b    #$39,d1
  90.         move.b    d1,(a0)
  91.         pull    d1/a0-a1
  92.         mulu.w    d1,d0
  93.         lsr.l    #8,d0
  94.         pull    d1
  95.         rts
  96. _JOYrangerands    dc.w    0
  97.     endc
  98.  
  99.     endm
  100.  
  101.  
  102.