Advertisement
vladikcomper

GYM Player by Vladikcomper (extract)

May 27th, 2012
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; Memory consts
  2.  
  3. vdp_data    equ $C00000
  4. vdp_ctrl    equ $C00004
  5. z80_ram     equ $A00000
  6.  
  7. wait_for_vblank equ $FFFF8000
  8.  
  9. ym      equ $4000
  10.  
  11. wait_ym macro
  12. @0\@    move.b  ym(a1),d2
  13.     btst    #7,d2
  14.     bne.s   @0\@
  15.     endm
  16.  
  17. ; ----------------------------------------------------------
  18.     lea music_file,a0
  19.     lea z80_ram,a1
  20.  
  21. ; ----------------------------------------------------------
  22. mainloop
  23.     moveq   #0,d0
  24.     move.b  (a0)+,d0
  25.     bmi.s   error
  26.     andi.b  #%11,d0
  27.     add.w   d0,d0
  28.     jmp cmd_lst(pc,d0.w)
  29. ; ----------------------------------------------------------
  30. error   bra.s   *
  31.  
  32. ; ----------------------------------------------------------
  33. cmd_lst bra.s   cmd0    ; +$00
  34.     bra.s   cmd1    ; +$02
  35.     bra.s   cmd2    ; +$04
  36.     bra.w   cmd3    ; +$06
  37.  
  38. ; ----------------------------------------------------------
  39. ; cmd - skip a frame
  40. cmd0    move    #$2300,sr
  41.     st.b    wait_for_vblank
  42. @0  tst.b   wait_for_vblank
  43.     bne.s   @0
  44.     bra.s   mainloop
  45.  
  46. ; ----------------------------------------------------------
  47. ; cmd - set ym reg 0
  48. cmd1    wait_ym
  49.     move.b  (a0)+,ym(a1)
  50.     wait_ym
  51.     move.b  (a0)+,ym+1(a1)
  52.     bra.w   mainloop
  53.  
  54. ; ----------------------------------------------------------
  55. ; cmd - set ym reg 1
  56. cmd2    wait_ym
  57.     move.b  (a0)+,ym+2(a1)
  58.     wait_ym
  59.     move.b  (a0)+,ym+3(a1)
  60.     bra.w   mainloop
  61.  
  62. cmd3    move.b  (a0)+,$C00011
  63.     bra.w   mainloop
  64.  
  65. ; ----------------------------------------------------------
  66. ; vblank interrupt
  67. vblank  sf.b    wait_for_vblank
  68.     move    #$2700,sr
  69.  
  70. ; ----------------------------------------------------------
  71. ; hblank interrupt
  72. hblank  rte
  73.  
  74. ; ----------------------------------------------------------
  75. music_file
  76.     incbin  test.gym
  77.     dc.b    -1      ; eof flag
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement