home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 12 / CD_ASCQ_12_0294.iso / maj / 4383 / line.asm < prev    next >
Assembly Source File  |  1994-01-01  |  2KB  |  99 lines

  1.  
  2.     include    model.inc
  3.  
  4. ;
  5. ;    VGAKIT Version 6.0
  6. ;
  7. ;    Copyright 1988,89,90,91,92,93,94 John Bridges
  8. ;    Free for use in commercial, shareware or freeware applications
  9. ;
  10. ;    LINE.ASM
  11. ;
  12. ;
  13. .code
  14.     public    bline
  15.  
  16. callpt    macro            ;C order of parameter passing
  17.     push    [color]
  18.     push    di
  19.     push    si
  20.     call    [func]
  21.     add    sp,6
  22.     endm
  23.  
  24. ;bline(x,y,x2,y2,func())
  25. ;
  26. ;input   : endpoints of line and function to use as point
  27. ;output  : nothing
  28. ;utility : draw line between endpoints using function
  29. ;          converted c routine
  30. ;
  31. bline    proc    uses si di, x1:word,y1:word,x2:word,y2:word,color:word,func:ptr proc
  32.     local    cnt:word,acc:word
  33.     local    deltax:word,deltay:word,dirx:word,diry:word
  34.  
  35.     mov    si,[x1]
  36.     mov    di,[y1]
  37.     xor    ax,ax
  38.     mov    [acc],ax
  39.     mov    ax,[x2]
  40.     sub    ax,si
  41.     mov    dx,1
  42.     jns    nosx
  43.     neg    ax
  44.     mov    dx,-1
  45. nosx:    mov    [dirx],dx
  46.     mov    [deltax],ax
  47.     mov    ax,[y2]
  48.     sub    ax,di
  49.     mov    dx,1
  50.     jns    nosy
  51.     neg    ax
  52.     mov    dx,-1
  53. nosy:    mov    [diry],dx
  54.     mov    [deltay],ax
  55.     cmp    ax,[deltax]
  56.     jge    ylp
  57.     callpt
  58.     mov    ax,[deltax]
  59.     mov    [cnt],ax
  60. lp1:
  61.     dec    [cnt]
  62.     js    done
  63.     add    si,[dirx]
  64.     mov    ax,[deltay]
  65.     add    [acc],ax
  66.     mov    ax,[acc]
  67.     cmp    ax,[deltax]
  68.     jb    noincy
  69.     mov    ax,[deltax]
  70.     sub    [acc],ax
  71.     add    di,[diry]
  72. noincy:
  73.     callpt
  74.     jmp    short lp1
  75. ylp:
  76.     callpt
  77.     mov    ax,[deltay]
  78.     mov    [cnt],ax
  79. lp2:
  80.     dec    [cnt]
  81.     js    done
  82.     add    di,[diry]
  83.     mov    ax,[deltax]
  84.     add    [acc],ax
  85.     mov    ax,[acc]
  86.     cmp    ax,[deltay]
  87.     jb    noincx
  88.     mov    ax,[deltay]
  89.     sub    [acc],ax
  90.     add    si,[dirx]
  91. noincx:
  92.     callpt
  93.     jmp    short lp2
  94. done:    ret
  95. bline    endp
  96.  
  97.     end
  98.  
  99.