home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / vol_200 / 286_02 / line.asm < prev    next >
Assembly Source File  |  1989-05-25  |  5KB  |  182 lines

  1.         TITLE   LINE of GDS
  2.         page    60,132
  3.         .SFCOND
  4. ;
  5. ; *==========================================================*
  6. ; * This file contain level 1 line drawing                   *
  7. ; *==========================================================*
  8.  
  9. IFDEF   COLOR
  10.   IFDEF HERC
  11.    .err both display type defined
  12.   ENDIF
  13. else
  14.   IFNDEF HERC
  15.     HERC equ 0
  16.   ENDIF
  17. ENDIF
  18.  
  19. smo     equ     4       ; small model offset value
  20.  
  21. DGROUP  group   _DATA
  22. _DATA   segment word public 'DATA'
  23.         assume  ds:DGROUP
  24.         extrn   _STYLE:word
  25. _DATA   ends
  26.  
  27. _TEXT   segment byte public 'CODE'
  28.         assume  cs:_TEXT,ds:DGROUP
  29.         public  _lline1,_lline3,_lline2,_lline4
  30.  
  31.         extrn  $calc:near, downln:near, $dot:near
  32.         extrn  _horzl:near, _vert1l:near
  33.  
  34. _lline1 proc    near    ;public to c
  35.         push    bp
  36.         mov     bp,sp
  37.         push    si
  38.         push    di
  39.         mov     si,[bp+smo+6]
  40.         mov     dx,_STYLE
  41.         xchg    dh,dl
  42.         mov     cx,[bp+smo]
  43.         and     cl,0fh
  44.         jz      short   ll1d
  45.         rol     dx,cl
  46.         jmp     short ll1d
  47. ll1a:   inc     word ptr [bp+smo]
  48.         mov     ax,[bp+smo+8]
  49.         test    ax,ax
  50.         jns     short ll1b
  51.         add     ax,[bp+smo+10]
  52.         jmp     short ll1c
  53. ll1b:   add     ax,[bp+smo+12]
  54.         mov     bx,[bp+smo+4]
  55.         add     [bp+smo+2],bx
  56. ll1c:   mov     [bp+smo+8],ax
  57. ll1d:   rol     dx,1
  58.         jnc     ll1e
  59.         mov     ax,[bp+smo]
  60.         mov     bx,[bp+smo+2]
  61.         push    dx
  62.         call    $dot
  63.         pop     dx
  64. ll1e:   dec     si
  65.         jns     ll1a
  66.         pop     di
  67.         pop     si
  68.         pop     bp
  69.         ret
  70. _lline1 endp
  71.  
  72. _lline2 proc    near    ;public to c
  73.         push    bp
  74.         mov     bp,sp
  75. ll2a:   mov     bx,1
  76.         mov     ax,[bp+smo+8]
  77. ll2b:   test    ax,ax
  78.         jns     short ll2c
  79.         add     ax,[bp+smo+10]
  80.         inc     bx
  81.         dec     word ptr [bp+smo+6]
  82.         jnz     short ll2b
  83.         jmp     short ll2d
  84. ll2c:   add     ax,[bp+smo+12]
  85.         mov     [bp+smo+8],ax
  86.         push    bx
  87.         mov     ax,[bp+smo+2]
  88.         push    ax
  89.         add     ax,[bp+smo+4]
  90.         mov     [bp+smo+2],ax
  91.         push    word ptr [bp+smo]
  92.         add     [bp+smo],bx
  93.         call    _horzl
  94.         mov     sp,bp
  95.         dec     word ptr [bp+smo+6]
  96.         jnz     short ll2a
  97.         mov     bx,1
  98. ll2d:   push    bx
  99.         push    word ptr [bp+smo+2]
  100.         push    word ptr [bp+smo]
  101.         call    _horzl
  102.         mov     sp,bp
  103.         pop     bp
  104.         ret
  105. _lline2 endp
  106.  
  107. _lline3 proc    near    ;public to c
  108.         push    bp
  109.         mov     bp,sp
  110.         push    si
  111.         push    di
  112.         mov     si,[bp+smo+6]
  113.         mov     dx,_STYLE
  114.         xchg    dh,dl
  115.         mov     cx,[bp+smo+2]
  116.         and     cl,0fh
  117.         jz      ll3d
  118.         rol     dx,cl
  119.         jmp     short ll3d
  120. ll3a:   inc     word ptr [bp+smo+2]
  121.         mov     ax,[bp+smo+8]
  122.         test    ax,ax
  123.         jns     short ll3b
  124.         add     ax,[bp+smo+10]
  125.         jmp     short ll3c
  126. ll3b:   add     ax,[bp+smo+12]
  127.         mov     bx,[bp+smo+4]
  128.         add     [bp+smo],bx
  129. ll3c:   mov     [bp+smo+8],ax
  130. ll3d:   rol     dx,1
  131.         jnc     ll3e
  132.         mov     ax,[bp+smo]
  133.         mov     bx,[bp+smo+2]
  134.         push    dx
  135.         call    $dot
  136.         pop     dx
  137. ll3e:   dec     si
  138.         jns     ll3a
  139.         pop     di
  140.         pop     si
  141.         pop     bp
  142.         ret
  143. _lline3 endp
  144.  
  145. _lline4 proc    near    ;public to c
  146.         push    bp
  147.         mov     bp,sp
  148. ll4a:   mov     bx,1
  149.         mov     ax,[bp+smo+8]
  150. ll4b:   test    ax,ax
  151.         jns     short ll4c
  152.         add     ax,[bp+smo+10]
  153.         inc     bx
  154.         dec     word ptr [bp+smo+6]
  155.         jnz     short ll4b
  156.         jmp     short ll4d
  157. ll4c:   add     ax,[bp+smo+12]
  158.         mov     [bp+smo+8],ax
  159.         push    bx
  160.         push    word ptr [bp+smo+2]
  161.         add     [bp+smo+2],bx
  162.         mov     ax,[bp+smo]
  163.         push    ax
  164.         add     ax,[bp+smo+4]
  165.         mov     [bp+smo],ax
  166.         call    _vert1l
  167.         mov     sp,bp
  168.         dec     word ptr [bp+smo+6]
  169.         jnz     short ll4a
  170.         mov     bx,1
  171. ll4d:   push    bx
  172.         push    word ptr [bp+smo+2]
  173.         push    word ptr [bp+smo]
  174.         call    _vert1l
  175.         mov     sp,bp
  176.         pop     bp
  177.         ret
  178. _lline4 endp
  179.  
  180. _TEXT   ends
  181.         end
  182.