home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Assembler / dse-src5.dms / in.adf / cb6.S < prev    next >
Encoding:
Text File  |  1990-05-07  |  3.6 KB  |  217 lines

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