home *** CD-ROM | disk | FTP | other *** search
/ Current Shareware 1994 January / SHAR194.ISO / pictures / mandzoom.zip / ZOOM.S < prev   
Text File  |  1993-09-02  |  2KB  |  125 lines

  1.  
  2. .comm source_width,4
  3. .comm dest_width,4
  4. .comm new_width,4
  5.  
  6. .comm horiz_code,4000
  7.  
  8.  
  9.                 .align 4,0x90
  10. .globl do_zoom
  11. do_zoom:
  12.                 movl %ebp,(source_width)
  13.                 andl $65535,(source_width)
  14.                 shrl $16,%ebp
  15.                 movl %ebp,(dest_width)
  16.  
  17.                 subl %eax,%ebp
  18.  
  19.                 movl %eax,(new_width)
  20.  
  21.                 pusha
  22.  
  23.                 call calc_horiz_code
  24.  
  25.                 popa
  26.  
  27.                 cld
  28.  
  29.                 xorl %eax,%eax
  30.                 movl %edx,%ecx
  31.  
  32. next_vert:
  33.                 addl %ebx,%eax
  34.                 jle skip_vert_copy
  35.  
  36.                 pushl %eax
  37.                 pushl %esi
  38.  
  39.                 call horiz_code
  40.  
  41.                 popl %esi
  42.                 popl %eax
  43.  
  44.                 addl %ebp,%edi
  45.  
  46.                 subl %edx,%eax
  47.  
  48.                 jle skip_vert_copy
  49.  
  50. copy_next_vert:
  51.  
  52.                 pushl %ecx
  53.                 pushl %esi
  54.  
  55.                 movl %edi,%esi
  56.                 subl (dest_width),%esi
  57.                 movl (new_width),%ecx
  58.                 shrl $1,%ecx
  59.  
  60.                 rep
  61.                 movsw
  62.  
  63.                 jnc skip_movsb
  64.  
  65.                 movsb
  66. skip_movsb:
  67.  
  68.                 popl %esi
  69.                 popl %ecx
  70.  
  71.                 addl %ebp,%edi
  72.  
  73.                 subl %edx,%eax
  74.  
  75.                 jg copy_next_vert
  76.  
  77. skip_vert_copy:
  78.                 addl (source_width),%esi
  79.                 decl %ecx
  80.                 jnz next_vert
  81.  
  82.                 ret
  83.  
  84.  
  85.                 .align 4,0x90
  86.  
  87. calc_horiz_code:
  88.  
  89.                 xorl %ebp,%ebp
  90.                 leal horiz_code,%edi
  91.                 movl %ecx,%esi
  92.  
  93. next_horiz:
  94.                 addl %eax,%ebp
  95.                 jle skip_horiz_copy
  96.  
  97.                 movl $0x0788068a,(%edi)
  98.                 movb $0x47,4(%edi)
  99.                 addl $5,%edi
  100.  
  101.                 subl %esi,%ebp
  102.  
  103.                 jle skip_horiz_copy
  104.  
  105. copy_next_horiz:
  106.  
  107.                 movw $0x0788,(%edi)
  108.                 movb $0x47,2(%edi)
  109.                 addl $3,%edi
  110.  
  111.                 subl %esi,%ebp
  112.  
  113.                 jg copy_next_horiz
  114.  
  115. skip_horiz_copy:
  116.                 movb $0x46,(%edi)
  117.                 incl %edi
  118.                 decl %ecx
  119.                 jnz next_horiz
  120.  
  121.                 movb $0xc3,(%edi)
  122.                 ret
  123.  
  124.  
  125.