Advertisement
Clownacy

Crazy DMA

Jun 18th, 2018
1,227
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ProcessDMAQueue:
  2.     lea .jump_table-VDP_Command_Buffer-10(pc),a1    ; 8(2/0)
  3.     adda.w  (VDP_Command_Buffer_Slot).w,a1          ; 8(1/0) + 8(2/0)
  4.     jmp (a1)                        ; 8(2/0)
  5.  
  6. .jump_table:
  7.     rts
  8.     dc.w    $DEAD,$DEAD,$DEAD,$DEAD,$DEAD,$DEAD
  9.  
  10.     lea (VDP_control_port).l,a5
  11.     lea (VDP_Command_Buffer).w,a1
  12.     bra.w   .jump1
  13.  
  14.     lea (VDP_control_port).l,a5
  15.     lea (VDP_Command_Buffer).w,a1
  16.     bra.w   .jump2
  17.  
  18.     lea (VDP_control_port).l,a5
  19.     lea (VDP_Command_Buffer).w,a1
  20.     bra.w   .jump3
  21.  
  22.     lea (VDP_control_port).l,a5
  23.     lea (VDP_Command_Buffer).w,a1
  24.     bra.w   .jump4
  25.  
  26.     lea (VDP_control_port).l,a5
  27.     lea (VDP_Command_Buffer).w,a1
  28.     bra.w   .jump5
  29.  
  30.     lea (VDP_control_port).l,a5
  31.     lea (VDP_Command_Buffer).w,a1
  32.     bra.w   .jump6
  33.  
  34.     lea (VDP_control_port).l,a5
  35.     lea (VDP_Command_Buffer).w,a1
  36.     bra.w   .jump7
  37.  
  38.     lea (VDP_control_port).l,a5
  39.     lea (VDP_Command_Buffer).w,a1
  40.     bra.w   .jump8
  41.  
  42.     lea (VDP_control_port).l,a5
  43.     lea (VDP_Command_Buffer).w,a1
  44.     bra.w   .jump9
  45.  
  46.     lea (VDP_control_port).l,a5
  47.     lea (VDP_Command_Buffer).w,a1
  48.     bra.w   .jump10
  49.  
  50.     lea (VDP_control_port).l,a5
  51.     lea (VDP_Command_Buffer).w,a1
  52.     bra.w   .jump11
  53.  
  54.     lea (VDP_control_port).l,a5
  55.     lea (VDP_Command_Buffer).w,a1
  56.     bra.w   .jump12
  57.  
  58.     lea (VDP_control_port).l,a5
  59.     lea (VDP_Command_Buffer).w,a1
  60.     bra.w   .jump13
  61.  
  62.     lea (VDP_control_port).l,a5
  63.     lea (VDP_Command_Buffer).w,a1
  64.     bra.w   .jump14
  65.  
  66.     lea (VDP_control_port).l,a5
  67.     lea (VDP_Command_Buffer).w,a1
  68.     bra.w   .jump15
  69.  
  70.     lea (VDP_control_port).l,a5
  71.     lea (VDP_Command_Buffer).w,a1
  72.     bra.w   .jump16
  73.  
  74.     lea (VDP_control_port).l,a5
  75.     lea (VDP_Command_Buffer).w,a1
  76.     bra.w   .jump17
  77.  
  78.     lea (VDP_control_port).l,a5
  79.     lea (VDP_Command_Buffer).w,a1
  80. ;   bra.w   .jump18
  81.  
  82. ;.jump18:
  83.     move.l  (a1)+,(a5)  ; Transfer length
  84.     move.l  (a1)+,(a5)  ; Source address
  85.     move.l  (a1)+,(a5)  ; Source address + destination
  86.     move.w  (a1)+,(a5)  ; Destination
  87. .jump17:
  88.     move.l  (a1)+,(a5)  ; Transfer length
  89.     move.l  (a1)+,(a5)  ; Source address
  90.     move.l  (a1)+,(a5)  ; Source address + destination
  91.     move.w  (a1)+,(a5)  ; Destination
  92. .jump16:
  93.     move.l  (a1)+,(a5)  ; Transfer length
  94.     move.l  (a1)+,(a5)  ; Source address
  95.     move.l  (a1)+,(a5)  ; Source address + destination
  96.     move.w  (a1)+,(a5)  ; Destination
  97. .jump15:
  98.     move.l  (a1)+,(a5)  ; Transfer length
  99.     move.l  (a1)+,(a5)  ; Source address
  100.     move.l  (a1)+,(a5)  ; Source address + destination
  101.     move.w  (a1)+,(a5)  ; Destination
  102. .jump14:
  103.     move.l  (a1)+,(a5)  ; Transfer length
  104.     move.l  (a1)+,(a5)  ; Source address
  105.     move.l  (a1)+,(a5)  ; Source address + destination
  106.     move.w  (a1)+,(a5)  ; Destination
  107. .jump13:
  108.     move.l  (a1)+,(a5)  ; Transfer length
  109.     move.l  (a1)+,(a5)  ; Source address
  110.     move.l  (a1)+,(a5)  ; Source address + destination
  111.     move.w  (a1)+,(a5)  ; Destination
  112. .jump12:
  113.     move.l  (a1)+,(a5)  ; Transfer length
  114.     move.l  (a1)+,(a5)  ; Source address
  115.     move.l  (a1)+,(a5)  ; Source address + destination
  116.     move.w  (a1)+,(a5)  ; Destination
  117. .jump11:
  118.     move.l  (a1)+,(a5)  ; Transfer length
  119.     move.l  (a1)+,(a5)  ; Source address
  120.     move.l  (a1)+,(a5)  ; Source address + destination
  121.     move.w  (a1)+,(a5)  ; Destination
  122. .jump10:
  123.     move.l  (a1)+,(a5)  ; Transfer length
  124.     move.l  (a1)+,(a5)  ; Source address
  125.     move.l  (a1)+,(a5)  ; Source address + destination
  126.     move.w  (a1)+,(a5)  ; Destination
  127. .jump9:
  128.     move.l  (a1)+,(a5)  ; Transfer length
  129.     move.l  (a1)+,(a5)  ; Source address
  130.     move.l  (a1)+,(a5)  ; Source address + destination
  131.     move.w  (a1)+,(a5)  ; Destination
  132. .jump8:
  133.     move.l  (a1)+,(a5)  ; Transfer length
  134.     move.l  (a1)+,(a5)  ; Source address
  135.     move.l  (a1)+,(a5)  ; Source address + destination
  136.     move.w  (a1)+,(a5)  ; Destination
  137. .jump7:
  138.     move.l  (a1)+,(a5)  ; Transfer length
  139.     move.l  (a1)+,(a5)  ; Source address
  140.     move.l  (a1)+,(a5)  ; Source address + destination
  141.     move.w  (a1)+,(a5)  ; Destination
  142. .jump6:
  143.     move.l  (a1)+,(a5)  ; Transfer length
  144.     move.l  (a1)+,(a5)  ; Source address
  145.     move.l  (a1)+,(a5)  ; Source address + destination
  146.     move.w  (a1)+,(a5)  ; Destination
  147. .jump5:
  148.     move.l  (a1)+,(a5)  ; Transfer length
  149.     move.l  (a1)+,(a5)  ; Source address
  150.     move.l  (a1)+,(a5)  ; Source address + destination
  151.     move.w  (a1)+,(a5)  ; Destination
  152. .jump4:
  153.     move.l  (a1)+,(a5)  ; Transfer length
  154.     move.l  (a1)+,(a5)  ; Source address
  155.     move.l  (a1)+,(a5)  ; Source address + destination
  156.     move.w  (a1)+,(a5)  ; Destination
  157. .jump3:
  158.     move.l  (a1)+,(a5)  ; Transfer length
  159.     move.l  (a1)+,(a5)  ; Source address
  160.     move.l  (a1)+,(a5)  ; Source address + destination
  161.     move.w  (a1)+,(a5)  ; Destination
  162. .jump2:
  163.     move.l  (a1)+,(a5)  ; Transfer length
  164.     move.l  (a1)+,(a5)  ; Source address
  165.     move.l  (a1)+,(a5)  ; Source address + destination
  166.     move.w  (a1)+,(a5)  ; Destination
  167. .jump1:
  168.     move.l  (a1)+,(a5)  ; Transfer length
  169.     move.l  (a1)+,(a5)  ; Source address
  170.     move.l  (a1)+,(a5)  ; Source address + destination
  171.     move.w  (a1)+,(a5)  ; Destination
  172.  
  173.     ResetDMAQueue
  174.  
  175.     rts
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement