home *** CD-ROM | disk | FTP | other *** search
/ The CDPD Public Domain Collection for CDTV 3 / CDPDIII.bin / pd / programming / assembler / thesource / volume4 / source / startupcode / custom.i < prev    next >
Encoding:
Text File  |  1993-03-22  |  11.5 KB  |  341 lines

  1. ***********************************************************
  2. * $Version 1.1
  3. * Revision history:
  4. * 1.1:
  5. *    cop2lc address was corrected
  6. *    WaitVblank and WaitBlitter macros were added
  7. *
  8. * 1.0:
  9. *    Initial release
  10. ***********************************************************
  11. * Custom chip register addresses *
  12. Custom        equ    $dff000    ; Custom chips base address
  13.  
  14. bltddat        equ    $0000    ; Blitter Destination Data (DMA only)
  15. dmaconr        equ    $0002    ; DMA Enable Read
  16. vposr        equ    $0004    ; Vertical Beam Position Read
  17. vhposr        equ    $0006    ; Vert/Horiz Beam Position Read
  18. dskdatr        equ    $0008    ; Disk Data Read (DMA only)
  19. joy0dat        equ    $000a    ; Joystick/Mouse Port 0 Data (read)
  20. joy1dat        equ    $000c    ; Joystick/Mouse Port 1 Data (read)
  21. clxdat        equ    $000e    ; Collision Data (read)
  22. adkconr        equ    $0010    ; Audio/Disk Control Read
  23. pot0dat        equ    $0012    ; Pot Port 0 Data Read
  24. pot1dat        equ    $0012    ; Pot Port 1 Data Read
  25. potgor        equ    $0016    ; Pot Port Data Read
  26. serdatr        equ    $0018    ; Serial Data Input and Status Read
  27. dskbytr        equ    $001a    ; Disk Data Byte and Disk Status Read
  28. intenar        equ    $001c    ; Interrupt Enable (read)
  29. intreqr        equ    $001e    ; Interrupt Request (read)
  30. dskpt        equ    $0020    ; Disk Pointer (write)
  31. dskpth        equ    dskpt
  32. dskptl        equ    dskpt+2
  33. dsklen        equ    $0024    ; Disk Data Length
  34. dskdat        equ    $0026    ; Disk DMA Write
  35. refptr        equ    $0028    ; Refresh Pointer (write) DON'T USE!
  36. vposw        equ    $002a    ; Vert Beam Position Write DON'T USE!
  37. vhposw        equ    $002c    ; Vert/Horiz Beam Pos Write DON'T USE!
  38. copcon        equ    $002e    ; Coprocessor Control
  39. serdat        equ    $0030    ; Serial Data Output (write)
  40. serper        equ    $0032    ; Serial Period & Data Bit Control (write)
  41. potgo        equ    $0034    ; Pot Port Data (write)
  42. joytest        equ    $0036    ; JOY0DAT and JOY1DAT Write
  43. strequ        equ    $0038    ; Short Frame Vertical Strobe
  44. strvbl        equ    $003a    ; Normal Vertical Blank Stobe
  45. strhor        equ    $003c    ; Horizontal Sync Strobe
  46. strlong        equ    $003e    ; Long Raster Strobe
  47. bltcon0        equ    $0040    ; Blitter Control Register 0 (write)
  48. bltcon1        equ    $0042    ; Blitter Control Register 1 (write)
  49. bltafwm        equ    $0044    ; Source A First Word Mask (write)
  50. bltalwm        equ    $0046    ; Source A Last Word Mask (write)
  51. bltcpt        equ    $0048    ; Blitter Source C Pointer (write)
  52. bltcpth        equ    bltcpt
  53. bltcptl        equ    bltcpt+2
  54. bltbpt        equ    $004c    ; Blitter Source B Pointer (write)
  55. bltbpth        equ    bltbpt
  56. bltbptl        equ    bltbpt+2
  57. bltapt        equ    $0050    ; Blitter Source A Pointer (write)
  58. bltapth        equ    bltapt
  59. bltaptl        equ    bltapt+2
  60. bltdpt        equ    $0054    ; Blitter Destination Pointer (write)
  61. bltdpth        equ    bltdpt
  62. bltdptl        equ    bltdpt+2
  63. bltsize        equ    $0058    ; Blitter Start and Size (write)
  64.  
  65. bltcmod        equ    $0060    ; Blitter Source C Modulo (write)
  66. bltbmod        equ    $0062    ; Blitter Source B Modulo (write)
  67. bltamod        equ    $0064    ; Blitter Source A Modulo (write)
  68. bltdmod        equ    $0066    ; Blitter Destination Modulo (write)
  69.  
  70. bltcdat        equ    $0070    ; Blitter Source C Data (write)
  71. bltbdat        equ    $0072    ; Blitter Source B Data (write)
  72. bltadat        equ    $0074    ; Blitter Source A Data (write)
  73.  
  74. dsksync        equ    $007e    ; Disk Sync Pattern (write)
  75. cop1lc        equ    $0080    ; Copper Program Counter 1 (write)
  76. cop1lch        equ    cop1lc
  77. cop1lcl        equ    cop1lc+2
  78. cop2lc        equ    $0084    ; Copper Program Counter 2 (write)
  79. cop2lch        equ    cop2lc
  80. cop2lcl        equ    cop2lc+2
  81. copjmp1        equ    $0088    ; Copper Jump Strobe 1
  82. copjmp2        equ    $0088    ; Copper Jump Strobe 2
  83. copins        equ    $008c    ; Copper Instruction Identity (write)
  84. diwstrt        equ    $008e    ; Display Window Start (write)
  85. diwstop        equ    $0090    ; Display Window Stop (write)
  86. ddfstrt        equ    $0092    ; Display Data Fetch Start (write)
  87. ddfstop        equ    $0094    ; Display Data Fetch Stop (write)
  88. dmacon        equ    $0096    ; DMA Control (write)
  89. clxcon        equ    $0098    ; Collision Control (write)
  90. intena        equ    $009a    ; Interrupt Enable (write)
  91. intreq        equ    $009c    ; Interrupt Request (write)
  92. adkcon        equ    $009e    ; Audio/Disk Control (write)
  93. aud0lc        equ    $00a0    ; Channel 0 Waveform Address (write)
  94. aud0lch        equ    aud0lc
  95. aud0lcl        equ    aud0lc+2
  96. aud0len        equ    $00a4    ; Channel 0 Waveform Length (write)
  97. aud0per        equ    $00a6    ; Channel 0 Period (write)
  98. aud0vol        equ    $00a8    ; Channel 0 Volume (write)
  99. aud0dat        equ    $00aa    ; Channel 0 Data (write)
  100.  
  101. aud1lc        equ    $00b0    ; Channel 1 Waveform Address (write)
  102. aud1lch        equ    aud1lc
  103. aud1lcl        equ    aud1lc+2
  104. aud1len        equ    $00b4    ; Channel 1 Waveform Length (write)
  105. aud1per        equ    $00b6    ; Channel 1 Period (write)
  106. aud1vol        equ    $00b8    ; Channel 1 Volume (write)
  107. aud1dat        equ    $00ba    ; Channel 1 Data (write)
  108.  
  109. aud2lc        equ    $00c0    ; Channel 2 Waveform Address (write)
  110. aud2lch        equ    aud2lc
  111. aud2lcl        equ    aud2lc+2
  112. aud2len        equ    $00c4    ; Channel 2 Waveform Length (write)
  113. aud2per        equ    $00c6    ; Channel 2 Period (write)
  114. aud2vol        equ    $00c8    ; Channel 2 Volume (write)
  115. aud2dat        equ    $00ca    ; Channel 2 Data (write)
  116.  
  117. aud3lc        equ    $00d0    ; Channel 3 Waveform Address (write)
  118. aud3lch        equ    aud3lc
  119. aud3lcl        equ    aud3lc+2
  120. aud3len        equ    $00d4    ; Channel 3 Waveform Length (write)
  121. aud3per        equ    $00d6    ; Channel 3 Period (write)
  122. aud3vol        equ    $00d8    ; Channel 3 Volume (write)
  123. aud3dat        equ    $00da    ; Channel 3 Data (write)
  124.  
  125. bpl1pt        equ    $00e0    ; Bitplane 1 Pointer (write)
  126. bpl1pth        equ    bpl1pt
  127. bpl1ptl        equ    bpl1pt+2
  128. bpl2pt        equ    $00e4    ; Bitplane 2 Pointer (write)
  129. bpl2pth        equ    bpl2pt
  130. bpl2ptl        equ    bpl2pt+2
  131. bpl3pt        equ    $00e8    ; Bitplane 3 Pointer (write)
  132. bpl3pth        equ    bpl3pt
  133. bpl3ptl        equ    bpl3pt+2
  134. bpl4pt        equ    $00ec    ; Bitplane 4 Pointer (write)
  135. bpl4pth        equ    bpl4pt
  136. bpl4ptl        equ    bpl4pt+2
  137. bpl5pt        equ    $00f0    ; Bitplane 5 Pointer (write)
  138. bpl5pth        equ    bpl5pt
  139. bpl5ptl        equ    bpl5pt+2
  140. bpl6pt        equ    $00f4    ; Bitplane 6 Pointer (write)
  141. bpl6pth        equ    bpl6pt
  142. bpl6ptl        equ    bpl6pt+2
  143.  
  144. bplcon0        equ    $0100    ; Bitplane Control Register 0 (write)
  145. bplcon1        equ    $0102    ; Bitplane Control Register 1 (write)
  146. bplcon2        equ    $0104    ; Bitplane Control Register 2 (write)
  147.  
  148. bpl1mod        equ    $0108    ; Bitplane Modulo 1 (write)
  149. bpl2mod        equ    $010a    ; Bitplane Modulo 2 (write)
  150.  
  151. bpl1dat        equ    $0110    ; Bitplane Data Register 1 (write)
  152. bpl2dat        equ    $0112    ; Bitplane Data Register 2 (write)
  153. bpl3dat        equ    $0114    ; Bitplane Data Register 3 (write)
  154. bpl4dat        equ    $0116    ; Bitplane Data Register 4 (write)
  155. bpl5dat        equ    $0118    ; Bitplane Data Register 5 (write)
  156. bpl6dat        equ    $011a    ; Bitplane Data Register 6 (write)
  157.  
  158. spr0pt        equ    $0120    ; Sprite Pointer 0 (write)
  159. spr0pth        equ    spr0pt
  160. spr0ptl        equ    spr0pt+2
  161. spr1pt        equ    $0124    ; Sprite Pointer 1 (write)
  162. spr1pth        equ    spr1pt
  163. spr1ptl        equ    spr1pt+2
  164. spr2pt        equ    $0128    ; Sprite Pointer 2 (write)
  165. spr2pth        equ    spr2pt
  166. spr2ptl        equ    spr2pt+2
  167. spr3pt        equ    $012c    ; Sprite Pointer 3 (write)
  168. spr3pth        equ    spr3pt
  169. spr3ptl        equ    spr3pt+2
  170. spr4pt        equ    $0130    ; Sprite Pointer 4 (write)
  171. spr4pth        equ    spr4pt
  172. spr4ptl        equ    spr4pt+2
  173. spr5pt        equ    $0134    ; Sprite Pointer 5 (write)
  174. spr5pth        equ    spr5pt
  175. spr5ptl        equ    spr5pt+2
  176. spr6pt        equ    $0138    ; Sprite Pointer 6 (write)
  177. spr6pth        equ    spr6pt
  178. spr6ptl        equ    spr6pt+2
  179. spr7pt        equ    $013c    ; Sprite Pointer 7 (write)
  180. spr7pth        equ    spr7pt
  181. spr7ptl        equ    spr7pt+2
  182.  
  183. spr0pos        equ    $0140    ; Sprite Position 0 (write)
  184. spr0ctl        equ    $0142    ; Sprite Control 0 (write)
  185. spr0data    equ    $0144    ; Sprite Data A Register 0 (write)
  186. spr0datb    equ    $0146    ; Sprite Data B Register 0 (write)
  187. spr1pos        equ    $0148    ; Sprite Position 1 (write)
  188. spr1ctl        equ    $014a    ; Sprite Control 1 (write)
  189. spr1data    equ    $014c    ; Sprite Data A Register 1 (write)
  190. spr1datb    equ    $014e    ; Sprite Data B Register 1 (write)
  191. spr2pos        equ    $0150    ; Sprite Position 2 (write)
  192. spr2ctl        equ    $0152    ; Sprite Control 2 (write)
  193. spr2data    equ    $0154    ; Sprite Data A Register 2 (write)
  194. spr2datb    equ    $0156    ; Sprite Data B Register 2 (write)
  195. spr3pos        equ    $0158    ; Sprite Position 3 (write)
  196. spr3ctl        equ    $015a    ; Sprite Control 3 (write)
  197. spr3data    equ    $015c    ; Sprite Data A Register 3 (write)
  198. spr3datb    equ    $015e    ; Sprite Data B Register 3 (write)
  199. spr4pos        equ    $0160    ; Sprite Position 4 (write)
  200. spr4ctl        equ    $0162    ; Sprite Control 4 (write)
  201. spr4data    equ    $0164    ; Sprite Data A Register 4 (write)
  202. spr4datb    equ    $0166    ; Sprite Data B Register 4 (write)
  203. spr5pos        equ    $0168    ; Sprite Position 5 (write)
  204. spr5ctl        equ    $016a    ; Sprite Control 5 (write)
  205. spr5data    equ    $016c    ; Sprite Data A Register 5 (write)
  206. spr5datb    equ    $016e    ; Sprite Data B Register 5 (write)
  207. spr6pos        equ    $0170    ; Sprite Position 6 (write)
  208. spr6ctl        equ    $0172    ; Sprite Control 6 (write)
  209. spr6data    equ    $0174    ; Sprite Data A Register 6 (write)
  210. spr6datb    equ    $0176    ; Sprite Data B Register 6 (write)
  211. spr7pos        equ    $0178    ; Sprite Position 7 (write)
  212. spr7ctl        equ    $017a    ; Sprite Control 7 (write)
  213. spr7data    equ    $017c    ; Sprite Data A Register 7 (write)
  214. spr7datb    equ    $017e    ; Sprite Data B Register 7 (write)
  215.  
  216. color00        equ    $0180    ; Color Register 0 (write)
  217. color01        equ    $0182    ; Color Register 1 (write)
  218. color02        equ    $0184    ; Color Register 2 (write)
  219. color03        equ    $0186    ; Color Register 3 (write)
  220. color04        equ    $0188    ; Color Register 4 (write)
  221. color05        equ    $018a    ; Color Register 5 (write)
  222. color06        equ    $018c    ; Color Register 6 (write)
  223. color07        equ    $018e    ; Color Register 7 (write)
  224. color08        equ    $0190    ; Color Register 8 (write)
  225. color09        equ    $0192    ; Color Register 9 (write)
  226. color10        equ    $0194    ; Color Register 10 (write)
  227. color11        equ    $0196    ; Color Register 11 (write)
  228. color12        equ    $0198    ; Color Register 12 (write)
  229. color13        equ    $019a    ; Color Register 13 (write)
  230. color14        equ    $019c    ; Color Register 14 (write)
  231. color15        equ    $019e    ; Color Register 15 (write)
  232. color16        equ    $01a0    ; Color Register 16 (write)
  233. color17        equ    $01a2    ; Color Register 17 (write)
  234. color18        equ    $01a4    ; Color Register 18 (write)
  235. color19        equ    $01a6    ; Color Register 19 (write)
  236. color20        equ    $01a8    ; Color Register 20 (write)
  237. color21        equ    $01aa    ; Color Register 21 (write)
  238. color22        equ    $01ac    ; Color Register 22 (write)
  239. color23        equ    $01ae    ; Color Register 23 (write)
  240. color24        equ    $01b0    ; Color Register 24 (write)
  241. color25        equ    $01b2    ; Color Register 25 (write)
  242. color26        equ    $01b4    ; Color Register 26 (write)
  243. color27        equ    $01b6    ; Color Register 27 (write)
  244. color28        equ    $01b8    ; Color Register 28 (write)
  245. color29        equ    $01ba    ; Color Register 29 (write)
  246. color30        equ    $01bc    ; Color Register 30 (write)
  247. color31        equ    $01be    ; Color Register 31 (write)
  248. beamcon0    equ    $01dc    ; Video Beam Control 0 (write)
  249.  
  250. ***********************************************************
  251. * CIA addresses *
  252.  
  253. CIAA        equ    $bfe001    ; CIAA base address
  254. CIAB        equ    $bfd000    ; CIAB base address
  255. PRA        equ    $000    ; Peripheral Data Register for port A
  256. PRB        equ    $100    ; Peripheral Data Register for port B
  257. DDRA        equ    $200    ; Data Direction Register A
  258. DDRB        equ    $300    ; Data Direction Register B
  259. TALO        equ    $400    ; Timer A Low Byte
  260. TAHI        equ    $500    ; Timer A High Byte
  261. TBLO        equ    $600    ; Timer B Low Byte
  262. TBHI        equ    $700    ; Timer B High Byte
  263. TODLO        equ    $800    ; TOD Counter Low Byte
  264. TODMID        equ    $900    ; TOD Counter Mid Byte
  265. TODHI        equ    $a00    ; TOD Counter High Byte
  266. TODHR        equ    $b00    ; Unused
  267. SDR        equ    $c00    ; Serial Data Register
  268. ICR        equ    $d00    ; Interrupt Control Register
  269. CRA        equ    $e00    ; Control Register A
  270. CRB        equ    $f00    ; Control Register B
  271.  
  272. ***********************************************************
  273. * Define the following for your coding stye:
  274. ;A5CUSTOM    EQU    1    ; if a5 = $dff000
  275. ;A5CUSTOMPLUS2    EQU    1    ; if a5 = $dff002
  276. ;A6CUSTOM    EQU    1    ; if a6 = $dff000
  277. ;A6CUSTOMPLUS2    EQU    1    ; if a6 = $dff002
  278. ;USEOS        EQU    1    ; if you want to use graphics.library
  279.                 ; WaitBlit()
  280.  
  281.  IFND        WaitVblank
  282. WaitVblank    MACRO    \1
  283. .\@:
  284.  IFD        A5CUSTOM
  285.         move.l    4(a5),d0
  286.  ELSE
  287.    IFD        A5CUSTOMPLUS2
  288.         move.l    4-2(a5),d0
  289.    ELSE
  290.      IFD    A6CUSTOM
  291.         move.l    4(a6),d0
  292.      ELSE
  293.        IFD    A6CUSTOMPLUS2
  294.         move.l    4-2(a6),d0
  295.        ELSE
  296.         move.l    $dff004,d0
  297.        ENDIF
  298.      ENDIF
  299.    ENDIF
  300.  ENDIF
  301.         lsr.l    8,d0
  302.         andi.w    #$3ff,d0
  303.         cmp.w    \1,d0
  304.         bne.b    .\@
  305.         ENDM
  306.  ENDIF
  307.  
  308.  IFND        WaitBlitter
  309. WaitBlitter    MACRO
  310.  IFD        USEOS
  311.         CALLGRAF    WaitBlit
  312.  ELSE
  313.    IFD        A5CUSTOM
  314.         tst.w    2(a5)
  315. .\@:        btst.b    #6,2(a5)
  316.         bne.b    .\@
  317.    ELSE
  318.      IFD    A5CUSTOMPLUS2
  319.         tst.w    (a5)
  320. .\@:        btst.b    #6,(a5)
  321.         bne.b    .\@
  322.      ELSE
  323.        IFD    A6CUSTOM
  324.         tst.w    2(a6)
  325. .\@:        btst.b    #6,2(a6)
  326.         bne.b    .\@
  327.        ELSE
  328.          IFD    A6CUSTOMPLUS2
  329.         tst.w    (a6)
  330. .\@:        btst.b    #6,(a6)
  331.         bne.b    .\@
  332.          ELSE
  333.         tst.w    $dff002
  334. .\@:        btst.b    #6,$dff002
  335.         bne.b    .\@
  336.      ELSE
  337.        ENDIF
  338.      ENDIF
  339.    ENDIF
  340.  ENDIF
  341.         ENDM