home *** CD-ROM | disk | FTP | other *** search
/ APDL Public Domain 1 / APDL_PD1A.iso / fractal / tesseract / !Tesseract / source / a / plotline < prev   
Encoding:
Text File  |  1991-12-17  |  3.4 KB  |  175 lines

  1. ; > plotline
  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.  
  28. ; extern void plot_line(int x0, int y0, int x1, int y1);
  29.  
  30. x0   = a1
  31. y0   = a2
  32. x1   = a3
  33. y1   = a4
  34.  
  35. dx   = x1
  36. dy   = y1
  37. yinc = v1
  38. d    = v2
  39. m    = v3
  40. j    = x0
  41. e    = y0
  42.  
  43.  
  44. v_screen_adr: .ADDRESS screen_adr
  45.  
  46. plot_line::
  47.         STMFD   sp!, {v1-v6, sl, fp, lr}
  48.  
  49.         SUBS    dx, x0, x1
  50.         BPL     line1
  51.         SUB     x0, x0, dx
  52.         RSB     dx, dx, #0
  53.         MOV     ip, y0
  54.         MOV     y0, y1
  55.         MOV     y1, ip
  56. line1:
  57.         ADD     x0, x0, #640
  58.         MOV     x0, x0, ASR #2
  59.  
  60.         SUBS    dy, y1, y0
  61.         MOV     yinc, #160
  62.         RSBPL   yinc, yinc, #0
  63.         RSBMI   dy, dy, #0
  64.         RSB     y0, y0, #512
  65.         MOV     y0, y0, ASR #2
  66.  
  67.         LDR     d, v_screen_adr
  68.         LDR     d, [d]
  69.         ADD     d, d, y0, LSL #7
  70.         ADD     d, d, y0, LSL #5
  71.  
  72.         CMP     dy, dx
  73.         BLT     line_3
  74.  
  75.         ADD     x0, x0, #1
  76.         MOV     ip, x0, LSR #3
  77.         ADD     d, d, ip, LSL #2
  78.  
  79.         MOV     m, #0x80000007
  80.         MVN     ip, x0, LSL #2
  81.         MOV     m, m, ROR ip
  82.  
  83.         MVN     e, dy, LSR #1
  84.         ADD     j, dy, #3
  85.         MOV     j, j, ASR #2
  86.  
  87.         ORR     v4, m, m, ROR #8
  88.  
  89.         TST     m, #0x000000FF
  90.         BNE     loopys
  91. loopy:
  92.         LDR     ip, [d]
  93.         ORR     ip, ip, v4
  94.         BIC     ip, ip, m, LSR #4
  95.         STR     ip, [d], yinc
  96.         SUBS    j, j, #1
  97.         LDMMIFD sp!, {v1-v6, sl, fp, pc}^
  98.         ADDS    e, e, dx
  99.         BLE     loopy
  100.  
  101.         SUB     e, e, dy
  102.         MOV     m, m, ROR #4
  103.         MOVS    v4, v4, ROR #4
  104.         BCC     loopy
  105. loopys:
  106.         LDMDA   d, {ip, lr}
  107.         ORR     lr, lr, m
  108.         BIC     lr, lr, m, LSR #4
  109.         ORR     lr, lr, m, LSR #8
  110.         BIC     ip, ip, m, LSL #28
  111.         ORR     ip, ip, m, LSL #24
  112.         STMDA   d, {ip, lr}
  113.         SUBS    j, j, #1
  114.         LDMMIFD sp!, {v1-v6, sl, fp, pc}^
  115.         ADD     d, d, yinc
  116.         ADDS    e, e, dx
  117.         BLE     loopys
  118.  
  119.         SUB     e, e, dy
  120.         MOV     v4, v4, ROR #4
  121.         MOVS    m, m, ROR #4
  122.         SUBCS   d, d, #4
  123.         BCC     loopys
  124.         B       loopy
  125.  
  126. line_3:
  127.         MOV     ip, x0, LSR #3
  128.         ADD     d, d, ip, LSL #2
  129.  
  130.         MOV     m, #0x80000007
  131.         MVN     ip, x0, LSL #2
  132.         MOV     m, m, ROR ip
  133.  
  134.         MVN     e, dx, LSR #1
  135.         ADD     j, dx, #3
  136.         MOV     j, j, ASR #2
  137.         LDR     v4, [d, -yinc]
  138.         LDR     v5, [d]
  139.         LDR     v6, [d, yinc]
  140. loopx:
  141.         ORR     v4, v4, m
  142.         BIC     v5, v5, m
  143.         ORR     v6, v6, m
  144.         SUBS    j, j, #1
  145.         BMI     loopxr
  146.         MOVS    m, m, ROR #4
  147.         BCS     loopxs
  148.         ADDS    e, e, dy
  149.         BLT     loopx
  150.  
  151.         SUB     e, e, dx
  152.         STR     v4, [d, -yinc]
  153.         MOV     v4, v5
  154.         MOV     v5, v6
  155.         ADD     d, d, yinc
  156.         LDR     v6, [d, yinc]
  157.         B       loopx
  158. loopxs:
  159.         STR     v4, [d, -yinc]
  160.         STR     v5, [d]
  161.         STR     v6, [d, yinc]
  162.         SUB     d, d, #4
  163.         ADDS    e, e, dy
  164.         SUBGE   e, e, dx
  165.         ADDGE   d, d, yinc
  166.         LDR     v4, [d, -yinc]
  167.         LDR     v5, [d]
  168.         LDR     v6, [d, yinc]
  169.         B       loopx
  170. loopxr:
  171.         STR     v4, [d, -yinc]
  172.         STR     v5, [d]
  173.         STR     v6, [d, yinc]
  174.         LDMFD   sp!, {v1-v6, sl, fp, pc}^
  175.