home *** CD-ROM | disk | FTP | other *** search
/ ST-Computer Leser-CD 2000 January / LCD_01_2000.iso / games / doom / pmdoom / src / m68k / joypad.s < prev    next >
Encoding:
Text File  |  1999-12-17  |  2.0 KB  |  152 lines

  1. |    Atari joypad routine
  2. |
  3. |    Patrice Mandin
  4.  
  5.     .text
  6.  
  7.     .globl    _I_Asm_UpdateJoypad
  8.  
  9.     .globl    _atari_joypad0
  10.     .globl    _atari_joypad1
  11.  
  12. | -----    Joypads routine
  13.  
  14.     .text
  15. _I_Asm_UpdateJoypad:
  16.     moveml    d0-d3/a0-a1,sp@-
  17.  
  18.     lea    0xffff9200:w,a0
  19.     lea    a0@(2),a1
  20.     movew    #0x0f00,d3
  21.  
  22.     |    Update joypad 0
  23.  
  24.     movew    #0xfffe,d2
  25.     movew    d2,a1@
  26.     movew    a0@,d0
  27.     notw    d0
  28.     andw    #3,d0
  29.     swap    d0
  30.     movew    d2,a1@
  31.     movew    a1@,d0
  32.     notw    d0
  33.     andw    d3,d0
  34.     rorw    #8,d0
  35.     swap    d0    | d0 = 000F0003
  36.  
  37.     movew    #0xfffd,d2
  38.     movew    d2,a1@
  39.     movew    a0@,d1
  40.     notw    d1
  41.     andw    #3,d1
  42.     lslw    #2,d1
  43.     swap    d1
  44.     movew    d2,a1@
  45.     movew    a1@,d1
  46.     notw    d1
  47.     andw    d3,d1
  48.     rorw    #4,d1
  49.     swap    d1    | d1 = 00F0000C
  50.     orl    d1,d0
  51.  
  52.     movew    #0xfffb,d2
  53.     movew    d2,a1@
  54.     movew    a0@,d1
  55.     notw    d1
  56.     andw    #3,d1
  57.     lslw    #4,d1
  58.     swap    d1
  59.     movew    d2,a1@
  60.     movew    a1@,d1
  61.     notw    d1
  62.     andw    d3,d1
  63.     swap    d1    | d1 = 0F000030
  64.     orl    d1,d0
  65.  
  66.     movew    #0xfff7,d2
  67.     movew    d2,a1@
  68.     movew    a0@,d1
  69.     notw    d1
  70.     andw    #3,d1
  71.     lslw    #6,d1
  72.     swap    d1
  73.     movew    d2,a1@
  74.     movew    a1@,d1
  75.     notw    d1
  76.     andw    d3,d1
  77.     lslw    #4,d1
  78.     swap    d1    | d1 = F00000C0
  79.     orl    d1,d0
  80.  
  81.     movel    d0,_atari_joypad0
  82.  
  83.     |    Update joypad 1
  84.  
  85.     movew    #0xffef,d2
  86.     movew    d2,a1@
  87.     movew    a0@,d0
  88.     notw    d0
  89.     andw    #3,d0
  90.     swap    d0
  91.     movew    d2,a1@
  92.     movew    a1@,d0
  93.     notw    d0
  94.     andw    d3,d0
  95.     rorw    #8,d0
  96.     swap    d0    | d0 = 000F0003
  97.  
  98.     movew    #0xffdf,d2
  99.     movew    d2,a1@
  100.     movew    a0@,d1
  101.     notw    d1
  102.     andw    #3,d1
  103.     lslw    #2,d1
  104.     swap    d1
  105.     movew    d2,a1@
  106.     movew    a1@,d1
  107.     notw    d1
  108.     andw    d3,d1
  109.     rorw    #4,d1
  110.     swap    d1    | d1 = 00F0000C
  111.     orl    d1,d0
  112.  
  113.     movew    #0xffbf,d2
  114.     movew    d2,a1@
  115.     movew    a0@,d1
  116.     notw    d1
  117.     andw    #3,d1
  118.     lslw    #4,d1
  119.     swap    d1
  120.     movew    d2,a1@
  121.     movew    a1@,d1
  122.     notw    d1
  123.     andw    d3,d1
  124.     swap    d1    | d1 = 0F000030
  125.     orl    d1,d0
  126.  
  127.     movew    #0xff7f,d2
  128.     movew    d2,a1@
  129.     movew    a0@,d1
  130.     notw    d1
  131.     andw    #3,d1
  132.     lslw    #6,d1
  133.     swap    d1
  134.     movew    d2,a1@
  135.     movew    a1@,d1
  136.     notw    d1
  137.     andw    d3,d1
  138.     lslw    #4,d1
  139.     swap    d1    | d1 = F00000C0
  140.     orl    d1,d0
  141.  
  142.     movel    d0,_atari_joypad1
  143.     moveml    sp@+,d0-d3/a0-a1
  144.  
  145.     rts
  146.  
  147.     .data
  148.     .even
  149.     .comm    _atari_joypad0,4*1
  150.     .even
  151.     .comm    _atari_joypad1,4*1
  152.