home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 28 / amigaformatcd28.iso / -screenplay- / otherstuff / adoomppc_src / amiga_sega.s < prev    next >
Text File  |  1998-04-23  |  2KB  |  158 lines

  1.  
  2.         .extern    Sega6
  3.         .extern    Sega3
  4.  
  5. # returns - xxSAxxxxxxCBMXYZxxSAxxDUxxCBRLDU
  6.  
  7. Sega6:        mflr    r8
  8.         lis    r7,0x00DF
  9.         lis    r6,0x00BF
  10.         ori    r7,r7,0xF000
  11.         ori    r6,r6,0xE001
  12.  
  13.         bl    GetSega        # xxSAxxDUxxCBRLDU
  14.         rlwinm    r3,r3,16,0,15    # save
  15.         bl    GetSega        # xxSAxxDUxxCBRLDU
  16.         bl    GetSega        # xxSAxxxxxxCBRLDU
  17.         bl    GetSega        # xxSAxxxxxxCBMXYZ
  18.         rlwinm    r3,r3,16,0,31    # xxSAxxxxxxCBMXYZxxSAxxDUxxCBRLDU
  19.  
  20.         li    r4,-0x0100    # SEL=1
  21.         mtlr    r8
  22.         sth    r4,0x34(r7)
  23.         blr
  24.  
  25. # returns - 0000000000000000xxSAxxDUxxCBRLDU
  26.  
  27. Sega3:        mflr    r8
  28.         lis    r7,0x00DF
  29.         lis    r6,0x00BF
  30.         ori    r7,r7,0xF000
  31.         ori    r6,r6,0xE001
  32.  
  33.         li    r3,0
  34.         bl    GetSega        # xxSAxxDUxxCBRLDU
  35.  
  36.         li    r4,-0x0100    # SEL=1
  37.         mtlr    r8
  38.         sth    r4,0x34(r7)
  39.         blr
  40.  
  41. # read Sega controller
  42.  
  43. GetSega:    rlwinm    r3,r3,0,0,15
  44.         li    r4,-0x00FF    # SEL=1, dump caps
  45.         sth    r4,0x34(r7)
  46.  
  47.         lbz    r4,0(r6)
  48.         lbz    r4,0(r6)
  49.         lbz    r4,0(r6)
  50.         lbz    r4,0(r6)
  51.         lbz    r4,0(r6)
  52.         lbz    r4,0(r6)
  53.         lbz    r4,0(r6)
  54.         lbz    r4,0(r6)
  55.         lbz    r4,0(r6)
  56.         lbz    r4,0(r6)
  57.         lbz    r4,0(r6)
  58.         lbz    r4,0(r6)
  59.         lbz    r4,0(r6)
  60.         lbz    r4,0(r6)
  61.         lbz    r4,0(r6)
  62.         lbz    r4,0(r6)
  63.         lbz    r4,0(r6)
  64.         lbz    r4,0(r6)
  65.         lbz    r4,0(r6)
  66.         lbz    r4,0(r6)
  67.         lbz    r4,0(r6)
  68.         lbz    r4,0(r6)
  69.         lbz    r4,0(r6)
  70.         lbz    r4,0(r6)
  71.  
  72.         rlwinm.    r4,r4,0,24,24
  73.         bne    shl1
  74.         ori    r3,r3,0x10    # B/0
  75.  
  76. shl1:        lhz    r4,0x16(r7)
  77.         rlwinm.    r4,r4,0,17,17
  78.         bne    shl2
  79.         ori    r3,r3,0x20    # C/0
  80.  
  81. shl2:        lhz    r4,0xC(r7)
  82.         rlwinm.    r5,r4,0,30,30
  83.         beq    shl3
  84.         ori    r3,r3,8        # R/M
  85.  
  86. shl3:        rlwinm.    r5,r4,0,22,22
  87.         beq    shl4
  88.         ori    r3,r3,4        # L/X
  89.  
  90. shl4:        rlwinm    r5,r4,1,0,31
  91.         xor    r4,r4,r5
  92.         rlwinm.    r5,r4,0,30,30
  93.         beq    shl5
  94.         ori    r3,r3,2        # D/Y
  95.  
  96. shl5:        rlwinm.    r5,r4,0,22,22
  97.         beq    shl6
  98.         ori    r3,r3,1        # U/Z
  99.  
  100. shl6:        li    r4,-0x10FF    # SEL=0, dump caps
  101.         sth    r4,0x34(r7)
  102.  
  103.         lbz    r4,0(r6)
  104.         lbz    r4,0(r6)
  105.         lbz    r4,0(r6)
  106.         lbz    r4,0(r6)
  107.         lbz    r4,0(r6)
  108.         lbz    r4,0(r6)
  109.         lbz    r4,0(r6)
  110.         lbz    r4,0(r6)
  111.         lbz    r4,0(r6)
  112.         lbz    r4,0(r6)
  113.         lbz    r4,0(r6)
  114.         lbz    r4,0(r6)
  115.         lbz    r4,0(r6)
  116.         lbz    r4,0(r6)
  117.         lbz    r4,0(r6)
  118.         lbz    r4,0(r6)
  119.         lbz    r4,0(r6)
  120.         lbz    r4,0(r6)
  121.         lbz    r4,0(r6)
  122.         lbz    r4,0(r6)
  123.         lbz    r4,0(r6)
  124.         lbz    r4,0(r6)
  125.         lbz    r4,0(r6)
  126.         lbz    r4,0(r6)
  127.  
  128.         rlwinm.    r4,r4,0,24,24
  129.         bne    shl11
  130.         ori    r3,r3,0x1000    # A/0
  131.  
  132. shl11:        lhz    r4,0x16(r7)
  133.         rlwinm.    r4,r4,0,17,17
  134.         bne    shl12
  135.         ori    r3,r3,0x2000    # S/0
  136.  
  137. shl12:        lhz    r4,0xC(r7)
  138.         rlwinm.    r5,r4,0,30,30
  139.         beq    shl13
  140.         ori    r3,r3,0x800    # 0/1
  141.  
  142. shl13:        rlwinm.    r5,r4,0,22,22
  143.         beq    shl14
  144.         ori    r3,r3,0x400    # 0/1
  145.  
  146. shl14:        rlwinm    r5,r4,1,0,31
  147.         xor    r4,r4,r5
  148.         rlwinm.    r5,r4,0,30,30
  149.         beq    shl15
  150.         ori    r3,r3,0x200    # D/1
  151.  
  152. shl15:        rlwinm.    r5,r4,0,22,22
  153.         beq    shl16
  154.         ori    r3,r3,0x100    # U/1
  155.  
  156. shl16:        blr
  157.  
  158.