home *** CD-ROM | disk | FTP | other *** search
/ APDL Public Domain 1 / APDL_PD1A.iso / fractal / tesseract / !Tesseract / source / a / plotcfill < prev    next >
Encoding:
Text File  |  1991-12-18  |  3.9 KB  |  199 lines

  1. ; > plotcfill
  2.  
  3. .CINCLUDE "h.ploth"
  4.  
  5. a1  =   0
  6. a2  =   1
  7. a3  =   2
  8. a4  =   3
  9.  
  10. v1  =   4
  11. v2  =   5
  12. v3  =   6
  13. v4  =   7
  14. v5  =   8
  15. v6  =   9
  16.  
  17. sl  =   10
  18. fp  =   11
  19. ip  =   12
  20. sp  =   13
  21.  
  22. lr  =   14
  23. pc  =   15
  24.  
  25. .AREA   WA$$code,.CODE,.READONLY
  26.  
  27. ; extern void plot_circlefill(int x, int y, int r, unsigned col);
  28.  
  29. x     = a1
  30. y     = a2
  31. r     = a3
  32. col   = a4
  33. col1  = v1
  34. col2  = col
  35. yadr  = v2
  36. ydif  = y
  37. x1    = v3
  38. x2    = x
  39. e     = v4
  40. dxe   = r
  41. dye   = v5
  42. padr  = v6
  43. len   = sl
  44. mask  = lr
  45.  
  46. v_screen_adr: .ADDRESS screen_adr
  47.  
  48. plot_circlefill::
  49.         STMFD   sp!, {v1-v6, sl, fp, lr}
  50.  
  51.         ADD     r, r, #3
  52.         MOV     r, r, ASR #2
  53.         ADD     x, x, #640
  54.         MOV     x, x, ASR #2
  55.         RSB     y, y, #512
  56.         MOV     y, y, ASR #2
  57.  
  58.         TST     y, #1
  59.         MOVNE   col, col, ROR #16
  60.         MOV     col1, col, LSL #16
  61.         MOV     col2, col, LSR #16
  62.         ORR     col1, col1, col1, LSR #16
  63.         ORR     col2, col2, col2, LSL #16
  64.         TST     x, #1
  65.         MOVNE   col1, col1, ROR #4
  66.         MOVNE   col2, col2, ROR #4
  67.         EOR     col2, col2, col1
  68.  
  69.         SUB     x1, x, r
  70.         ADD     x2, x, r
  71.         LDR     ip, v_screen_adr
  72.         MOV     y, y, ASL #5
  73.         ADD     y, y, y, ASL #2
  74.         LDR     ip, [ip]
  75.         ADD     yadr, y, ip
  76.         MOV     ydif, #0
  77.  
  78.         AND     ip, r, #3      
  79.         RSB     lr, ip, r, ASL 1
  80.         MOV     e, #0
  81.         TST     ip, #1
  82.         MOVNE   e, lr
  83.         TST     ip, #2
  84.         ADDNE   e, e, lr, ASL #1
  85.         MOV     e, e, ASR #4
  86.         RSBS    e, e, #0
  87.  
  88.         BEQ     plotcirc_1
  89.         RSB     lr, e, #0
  90.         ADD     ip, e, #1
  91.         ADDS    ip, ip, r, ASL #1
  92.         RSBMI   ip, ip, #0
  93.         CMP     ip, lr
  94.         ADDMI   r, r, #1
  95.         MOV     e, ip
  96. plotcirc_1:
  97.  
  98.         MOV     dxe, r, LSL #1
  99.         RSB     dxe, dxe, #1
  100.         MOV     dye, #1
  101.  
  102.         ADD     e, e, dxe
  103.         ADD     e, e, dye
  104.  
  105. plotcirc_E:
  106.         CMP     x1, x2
  107.         LDMGTFD sp!, {v1-v6, sl, fp, pc}^
  108.  
  109. plotcirc_L:
  110.         RSBS    ip, dxe, e, ASL #1
  111.         ADDGT   x1, x1, #1
  112.         SUBGT   x2, x2, #1
  113.         ADDGT   dxe, dxe, #2
  114.         ADDGT   e, e, dxe
  115.  
  116.         RSBS    ip, dye, e, ASL #1
  117.         BGT     plotcirc_E
  118.  
  119.         ADD     dye, dye, #2
  120.         ADD     e, e, dye
  121.  
  122.         AND     ip, x1, #7
  123.         MOV     ip, ip, ASL #2
  124.         MVN     mask, #0
  125.         MOV     mask, mask, LSL ip
  126.  
  127.         MOV     ip, x1, ASR #3
  128.         ADD     padr, yadr, ip, ASL #2
  129.         RSBS    len, ip, x2, ASR #3
  130.         BEQ     plotcirc_6
  131.  
  132.         LDR     ip, [padr, ydif]
  133.         EOR     ip, ip, col1
  134.         BIC     ip, ip, mask
  135.         EOR     ip, ip, col1
  136.         STR     ip, [padr, ydif]
  137.  
  138.         LDR     ip, [padr]
  139.         EOR     ip, ip, col1
  140.         BIC     ip, ip, mask
  141.         EOR     ip, ip, col1
  142.         STR     ip, [padr], #4
  143.  
  144.         SUBS    len, len, #1
  145.         BEQ     plotcirc_4
  146.  
  147.         TST     len, #1
  148.         STRNE   col1, [padr, ydif]
  149.         STRNE   col1, [padr], #4
  150.         BICS    len, len, #1
  151.         BEQ     plotcirc_4
  152.  
  153.         MOV     mask, col1
  154.         ADD     ip, padr, ydif
  155.  
  156. plotcirc_3:
  157.  
  158.         STMIA   ip!, {col1, mask}
  159.         STMIA   padr!, {col1, mask}
  160.         SUBS    len, len, #2
  161.         BNE     plotcirc_3
  162.  
  163. plotcirc_4:
  164.  
  165.         AND     ip, x2, #7
  166.         MOV     ip, ip, ASL #2
  167.         MVN     mask, #15
  168.         MVN     mask, mask, LSL ip
  169.  
  170. plotcirc_5:
  171.  
  172.         LDR     ip, [padr, ydif]
  173.         EOR     ip, ip, col1
  174.         BIC     ip, ip, mask
  175.         EOR     ip, ip, col1
  176.         STR     ip, [padr, ydif]
  177.  
  178.         LDR     ip, [padr]
  179.         EOR     ip, ip, col1
  180.         BIC     ip, ip, mask
  181.         EOR     ip, ip, col1
  182.         STR     ip, [padr]
  183.  
  184.         SUB     yadr, yadr, #0xA0
  185.         ADD     ydif, ydif, #0x140
  186.         EOR     col1, col1, col2
  187.  
  188.         B       plotcirc_E
  189.  
  190. plotcirc_6:
  191.  
  192.         AND     ip, x2, #7
  193.         MOV     ip, ip, ASL #2
  194.         RSB     ip, ip, #28
  195.         MOV     mask, mask, LSL ip
  196.         MOV     mask, mask, LSR ip
  197.  
  198.         B       plotcirc_5
  199.