home *** CD-ROM | disk | FTP | other *** search
/ Dream 57 / Amiga_Dream_57.iso / Amiga / Programmation / c / QuakeC / qtools0.2-src.lha / src / libqdisplay / drawSpans8wire-m68k2.S < prev    next >
Encoding:
Text File  |  1998-08-11  |  960 b   |  50 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6. void draw_spans8wire(register int y __asm__("a4"), register int ey __asm__("d5"));
  7.  
  8.     __asm ("
  9.  
  10.     .equ    y,a4
  11.     .equ    dest,a3
  12.     .equ    mults,a2
  13.     .equ    scan,a1
  14.     .equ    buf,a0        | parameter ...
  15.     
  16.     .equ    ey,d5
  17.     .equ    len,d1
  18.     .equ    sx,d0
  19.  
  20. .text
  21.     .globl    _draw_spans8wire
  22. | void draw_spans8wire(register int y __asm__ (a4), register int ey __asm__ (d5))
  23. _draw_spans8wire:
  24.     subl    y,ey            | y < ey
  25.     subql    #1,ey            | (y - 1) <= ey
  26.     blt    .bigEnd8wire
  27.  
  28.     moveml    a2-a3,sp@-
  29.     movel    _localDim+26,dest    | localDim.frameBuffer
  30.  
  31.     lea    @(_scan, y:l:8), scan    | scan[y][]
  32.     movel    _multRows,mults
  33.     lea    mults@(y:l:4),mults
  34. .bigLoop8wire:
  35.     movel    mults@+,buf        | multRows[y]
  36.     movel    scan@+,sx        | FIX_INT(scan[y][0])
  37.     movel    scan@+,len        | FIX_INT(scan[y][1])
  38.     subl    sx,len            | scan[y][1] - sx
  39.     bles    .noSpan8wire        | len > 0
  40.     addl    dest,buf        | localDim.frameBuffer + multRows[y]
  41.     moveb    #0x15,buf@(sx)
  42.     moveb    #0x15,buf@(len)
  43. .noSpan8wire:
  44.     dbra    ey,.bigLoop8wire
  45.     moveml    sp@+,a2-a3
  46. .bigEnd8wire:
  47.     rts
  48.     .even
  49.     ");
  50.