home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Assembler / dse-src5.dms / in.adf / cb2.S < prev    next >
Encoding:
Text File  |  2010-02-27  |  3.4 KB  |  194 lines

  1. start:    jsr    initialize
  2. s1:    btst    #6,$bfe001
  3.     beq    stop
  4.     jsr    waitvblank
  5.     jsr    makenewCL
  6.     jmp    s1
  7. stop:    jsr    shut_down
  8.     rts
  9. makenewcl:
  10.     move.l    cbadr,a0
  11.     move.b    #30,d0
  12. mncl1:    move    #$0,(a0)
  13.     add.l    #8,a0
  14.     add.b    #1,d0
  15.     cmp.b    #0,d0
  16.     bne    mncl1
  17.     move.l    #0,cbc
  18. mncl2:    lea    cb,a0
  19.     add.l    cbc,a0
  20.     add.b    #1,(a0)
  21.     move.b    (a0),d0
  22.     jsr    sine
  23.     divs    #2,d0
  24.     add.b    #45,d0
  25.     jsr    makebar
  26.     add.l    #1,cbc
  27.     cmp.l    #10,cbc
  28.     bne    mncl2
  29.     rts
  30. makebar:
  31.     move.l    cbadr,a0
  32.     muls    #8,d0
  33.     add.l    d0,a0
  34.     move    #$0000,d1
  35. mb1:    move    d1,(a0)
  36.     add.l    #8,a0
  37.     add    #$0100,d1
  38.     cmp    #$0e00,d1
  39.     bne    mb1
  40. mb2:    move    d1,(a0)
  41.     add.l    #8,a0
  42.     sub    #$0200,d1
  43.     cmp    #$0000,d1
  44.     bne    mb2
  45.     rts
  46. sine:    cmp.l    #$ff,d0
  47.     ble    ntbig
  48.     sub.l    #$100,d0
  49.     jmp    sine
  50. ntbig:    move.l    #0,d1
  51.     cmp.l    #$80,d0
  52.     ble    nneg
  53.     move.l    #-1,d1
  54.     sub.l    #$80,d0
  55. nneg:    lea    sinetable,a0
  56.     cmp.l    #$40,d0
  57.     ble    nomv
  58.     move.l    #$40,d2
  59.     sub.l    d2,d0
  60.     sub.l    d0,d2
  61.     move.l    d2,d0
  62. nomv:    add.l    d0,a0
  63.     move.b    (a0),d0
  64.     cmp.l    #-1,d1
  65.     bne    nneged
  66.     move.l    #$80,d2
  67.     sub.l    d2,d0
  68.     sub.l    d0,d2
  69.     move.l    d2,d0
  70. nneged:    rts
  71. waitvblank:                ;wait for vblank
  72.     move.l    $dff004,d0
  73.     and.l    #$0001ff00,d0
  74.     cmp.l    #$00001000,d0
  75.     bne.s    waitvblank
  76.     rts
  77. initialize:
  78.     move.l    execbase,a6
  79.     move.l    #allocsize,d0
  80.     move.l    #clear,d1
  81.     jsr    allocmem(a6)        ;alloc mem for bplane
  82.     move.l    d0,planeadr
  83.     move.l    #clsize,d0
  84.     moveq    #chip,d1
  85.     jsr    allocmem(a6)        ;alloc mem for CL
  86.     move.l    d0,CLadr
  87.                     ;Make the CopperList
  88.     move.l    #numplanes,d4        ;no of bitplanes -1
  89.     sub.l    #1,d4
  90.     move.l    d0,a0
  91.     move.l    planeadr,d1
  92.     move.w    #bpl1pth,d3
  93. mCL:    move.w    d3,(a0)+
  94.     addq.w    #2,d3
  95.     swap    d1
  96.     move.w    d1,(a0)+
  97.     move.w    d3,(a0)+
  98.     addq.w    #2,d3
  99.     swap     d1
  100.     move.w    d1,(a0)+
  101.     add.l    #planesize,d1
  102.     dbf    d4,mCL
  103.     move.l    a0,cbadr
  104.     add.l    #6,cbadr
  105.     move.b    #30,d0
  106. mcbs:    move.b    d0,(a0)+
  107.     move.b    #$0f,(a0)+
  108.     move    #$fffe,(a0)+
  109.     move.l    #$01800000,(a0)+
  110.     add.b    #1,d0
  111.     cmp.b    #0,d0
  112.     bne    mcbs
  113.     move.l    #$fffffffe,(a0)
  114.     jsr    forbid(a6)        ;DMA&tasksw off
  115.     lea    $dff000,a5
  116.     move.w    #$01e0,dmacon(a5)
  117.     move.l    CLadr,cop1lc(a5)    ;init CL
  118.     clr.w    copjmp1(a5)
  119.     move.w    #$3081,diwstrt(a5)    ;init PlayField
  120.     move.w    #$10c1,diwstop(a5)
  121.     move.w    #$0038,ddfstrt(a5)
  122.     move.w    #$00d0,ddfstop(a5)
  123.     move.w    #%0001000000000000,bplcon0(a5)    ;12-14=bplanes
  124.     clr.w    bplcon1(a5)
  125.     clr.w    bplcon2(a5)
  126.     move.w    #0,bpl1mod(a5)
  127.     move.w    #0,bpl2mod(a5)
  128.     move.w    #$8180,dmacon(a5)
  129.     rts
  130. shut_down:
  131.     move.l    #grname,a1
  132.     clr.l    d0
  133.     jsr    openlibrary(a6)
  134.     move.l    d0,a4
  135.     move.l    startlist(a4),cop1lc(a5)
  136.     clr    copjmp1(a5)
  137.     move.w    #$83e0,dmacon(a5)
  138.     jsr    permit(a6)
  139.     move.l    CLadr,a1
  140.     move.l    #CLsize,d0
  141.     jsr    freemem(a6)
  142.     move.l    planeadr,a1
  143.     move.l    #allocsize,d0
  144.     jsr    freemem(a6)
  145.     rts
  146. dmacon=        $96
  147. vposr=        $4
  148. cop1lc=        $80
  149. cop2lc=        $84
  150. copjmp1=    $88
  151. bplcon0=    $100
  152. bplcon1=    $102
  153. bplcon2=    $104
  154. bpl1pth=    $0e0
  155. bpl1ptl=    $0e2
  156. bpl1mod=    $108
  157. bpl2mod=    $10a
  158. diwstrt=    $08e
  159. diwstop=    $090
  160. ddfstrt=    $092
  161. ddfstop=    $094
  162. openlibrary=    -30-522
  163. forbid=        -30-102
  164. permit=        -30-108
  165. allocmem=    -30-168
  166. freemem=    -30-180
  167. startlist=    38
  168. execbase=    4
  169. numplanes=    1
  170. planewith=    40
  171. planehigh=    224
  172. planesize=    planewith*planehigh
  173. allocsize=    planesize*numplanes
  174. CLsize=        2000            ;(numplns*8)+4
  175. chip=        2
  176. clear=        chip+$10000
  177. cbadr:    dc.l    0
  178. cbc:    dc.l    0
  179. sinetable:
  180.     dc.b    128,131,134,137,140,144,147,150,153
  181.     dc.b    156,159,162,165,168,171,174,177,179
  182.     dc.b    182,185,188,191,193,196,199,201,204
  183.     dc.b    206,209,211,213,216,218,220,222,224
  184.     dc.b    226,228,230,232,234,235,237,239,240
  185.     dc.b    241,243,244,245,246,248,249,250,250
  186.     dc.b    251,252,253,253,254,254,254,255,255
  187.     dc.b    255,255
  188. cb:    dc.b    0,5,10,15,20,130,135,140,145,150
  189.     even
  190. CLadr:        dc.l    0
  191. planeadr:    dc.l    0
  192. test:        dc.l    0
  193. GRname:        dc.b    'graphics.library',0
  194.