home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format 7 / af007.adf / ArgAsm / vqmb.s < prev   
Text File  |  1987-08-27  |  3KB  |  201 lines

  1.     OPT    D+    * ,e+
  2.  
  3. ****************************************
  4. **                                    **
  5. ** Optimised (read: Very Fast)        **
  6. **                                    **
  7. ** PJ's Mandelbrot set generator      **
  8. **                                    **
  9. **     St. Albans, England.           **
  10. **                                    **
  11. ** Public Domain provided my credits  **
  12. ** are left intact.                   **
  13. **                                    **
  14. ****************************************
  15.  
  16.     incdir    include:
  17.     include    exec/funcdef.i
  18.     INCLUDE    exec/exec_lib.i
  19.     INCLUDE    :include/intuition/intuition_lib.i
  20.     INCLUDE    :include/graphics/graphics_lib.i
  21.  
  22.     output    v
  23.  
  24. mlp    MACRO
  25.     MOVE.W    D5,D1
  26.     MOVE.W    D4,D0
  27.     MOVEQ    #32,D7
  28. mlp\1    MOVE.W    D0,D2
  29.     MOVE.W    D1,D3
  30.     MULS    D2,D2
  31.     MULS    D3,D3
  32.     MOVE.L    A4,D6
  33.     ADD.L    D2,D6
  34.     ADD.L    D3,D6
  35.     BGE    emlp\1
  36.     LSL.L    #4,D2
  37.     LSL.L    #4,D3
  38.     SWAP    D2
  39.     SWAP    D3
  40.     MOVE.W    D4,D6
  41.     ADD.W    D2,D6
  42.     SUB.W    D3,D6
  43.     MULS    D0,D1
  44.     LSL.L    #4,D1
  45.     SWAP    D1
  46.     ADD.W    D1,D1
  47.     ADD.W    D5,D1
  48.     MOVE.W    D6,D0
  49.     DBRA    D7,mlp\1
  50.  
  51.     ADDQ.W    #1,D7
  52. emlp\1    AND.W    #$F,D7
  53.     BEQ    nntp\1
  54.     BTST    #0,D7
  55.     BEQ    pp1\1
  56.     BSET    #(8-\1),(A0)
  57. pp1\1    BTST    #1,D7
  58.     BEQ    pp2\1
  59.     BSET    #(8-\1),(A1)
  60. pp2\1    BTST    #2,D7
  61.     BEQ    pp3\1
  62.     BSET    #(8-\1),(A2)
  63. pp3\1    BTST    #3,D7
  64.     BEQ    nntp\1
  65.     BSET    #(8-\1),(A5)
  66.  
  67. nntp\1    ADD.W    A6,D4
  68.  
  69.  
  70.     ENDM
  71.  
  72.     LEA    intname,A1        Open intuition library
  73.     MOVEQ    #0,D0
  74.     CALLEXEC    OpenLibrary
  75.     MOVE.L    D0,_IntuitionBase
  76.  
  77.     LEA    grfname,A1        Open graphics library
  78.     MOVEQ    #0,D0
  79.     CALLEXEC    OpenLibrary
  80.     MOVE.L    D0,_GfxBase
  81.  
  82.     LEA    nscreen,A0        Open new screen
  83.     CALLINT    OpenScreen
  84.     MOVE.L    D0,screen
  85.  
  86.     MOVEA.L    screen,A0
  87.     MOVEQ    #0,D0
  88.     CALLINT    ShowTitle
  89.   
  90.     MOVEA.L    screen,A0
  91.     CALLINT    ScreenToBack
  92.  
  93.     LEA    screen,A0        Choose some nice colours
  94.     MOVEA.L    (A0),A0
  95.     LEA    44(A0),A0
  96.     LEA    cmap,A1
  97.     MOVEQ    #16,D0
  98.     CALLGRAF    LoadRGB4
  99.  
  100.     LEA    screen,A0        Find out where the bitplanes are
  101.     MOVEA.L    00(A0),A0
  102.     LEA    84(A0),A0
  103.     MOVEA.L    04(A0),A0
  104.     MOVEA.L    12(A0),A1
  105.     MOVEA.L    16(A0),A2
  106.     MOVEA.L    20(A0),A5
  107.     MOVEA.L    08(A0),A0
  108.  
  109. cls    MOVE.W    #20476,D0        Clear bitplanes
  110. cls2    CLR.L    (A0,D0.W)
  111.     CLR.L    (A1,D0.W)
  112.     CLR.L    (A2,D0.W)
  113.     CLR.L    (A5,D0.W)
  114.     SUBQ.W    #4,D0
  115.     BPL    cls2
  116.  
  117.     MOVE.W    size,D0            Setup registers
  118.     MOVE.W    D0,D5
  119.     ASR.W    #8,D0
  120.     MOVE.W    D0,dy
  121.     ASR.W    D0
  122.     MOVE.W    D0,dx
  123.     MOVE.L    A6,tempA6
  124.     MOVEA.W    D0,A6
  125.     MOVE.W    xpos,A3
  126.     ADD.W    ypos,D5
  127.     MOVE.L    #$FC000000,A4    
  128.  
  129. yloop    MOVE.W    A3,D4
  130.     MOVE.W    #79,sx
  131.  
  132. xloop    mlp    1
  133.     mlp    2
  134.     mlp    3
  135.     mlp    4
  136.     mlp    5
  137.     mlp    6
  138.     mlp    7
  139.     mlp    8
  140.  
  141.     LEA    1(A0),A0
  142.     LEA    1(A1),A1
  143.     LEA    1(A2),A2
  144.     LEA    1(A5),A5
  145.     
  146.     SUB.W    #1,sx
  147.     BPL    xloop
  148.  
  149.     SUB.W    dy,D5
  150.     SUB.W    #1,sy
  151.     BPL    yloop
  152.  
  153. end    MOVEA.L    tempA6,A6
  154.     MOVEA.L    screen,A0
  155.     CALLINT    ScreenToFront
  156.     
  157.     RTS
  158.  
  159. screen    DC.L    0
  160.  
  161. nscreen    DC.W    0,0
  162.     DC.W    640,256
  163.     DC.W    4
  164.     DC.B    0,1
  165.     DC.W    $8000
  166.     DC.W    15
  167.     DC.L    font
  168.     DC.L    title
  169.     DC.L    0
  170.     DC.L    0
  171.  
  172. font    DC.L    fname
  173.     DC.W    8
  174.     DC.B    0,0
  175.  
  176. fname    DC.B    'topaz.font',0
  177.  
  178. title    DC.B    'Mandelbrot set generator',0
  179.  
  180. _IntuitionBase    DC.L    0
  181. _GfxBase    DC.L    0
  182.  
  183. intname    INTNAME
  184. grfname    GRAFNAME
  185.  
  186. cmap    DC.W    $000,$0F0,$0FC,$0BF
  187.     DC.W    $08F,$00F,$70F,$A0F
  188.     DC.W    $E0F,$F08,$F00,$F33
  189.     DC.W    $F66,$F99,$FCC,$FFF
  190.  
  191. sx    DC.W    0
  192. sy    DC.W    255
  193. xpos    DC.W    $E000
  194. ypos    DC.W    $EC00
  195. size    DC.W    $2800
  196. dx    DC.W    $0014
  197. dy    DC.W    $0028
  198. tempA6    DC.L    0
  199.  
  200.  
  201.