Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1.  
  2. ;  (▄) ( ) ▄ ) ( )   256b intro by baze/3SC for Syndeecate 2001   use NASM to
  3. ;  ▀█▀ █▄█ ███ ██▄   loveC: thanks, Serzh: eat my socks dude ;]   compile the
  4. ;  ( ) ( ) ( ) ( )   e-mail: baze@stonline.sk, web: www.3SC.sk    source code
  5.  
  6. ;  Menuet port by VT
  7.  
  8. use32
  9.              org  0x0
  10.  
  11.              db   'MENUET01'
  12.              dd   0x01
  13.              dd   START
  14.              dd   I_END
  15.              dd   0x40000
  16.              dd   0x3ff00
  17.              dd   0,0
  18.  
  19. include 'macros.inc'
  20.  
  21. START:
  22.  
  23.    call draw_window
  24.  
  25.    call init_tube
  26.  
  27.    push ebx
  28.  
  29. still:
  30.  
  31.    pop  ebx
  32.  
  33.    call MAIN
  34.  
  35.    push ebx
  36.  
  37.    mov  eax,23
  38.    mov  ebx,1
  39.    int  0x40
  40.  
  41.    cmp  eax,1
  42.    jne  no_red
  43.    call draw_window
  44.    jmp  still
  45.   no_red:
  46.  
  47.    cmp  eax,0
  48.    je   still
  49.  
  50.    mov  eax,-1
  51.    int  0x40
  52.  
  53.  
  54. SCREEN equ 160
  55. PIXBUF equ 200h
  56. EYE     equ EYE_P-2
  57.  
  58.  
  59. MAIN:
  60.  
  61.  add    bh,10;8
  62.  mov    edi,PIXBUF
  63.  fadd   dword [di-PIXBUF+TEXUV-4]
  64.  push   di
  65.  mov    dx,-80
  66.  
  67. TUBEY:
  68.  
  69.  mov    bp,-160
  70.  
  71. TUBEX:
  72.  
  73.  mov    si,TEXUV
  74.  fild   word [si-TEXUV+EYE]
  75.  mov    [si],bp
  76.  fild   word [si]
  77.  mov    [si],dx
  78.  fild   word [si]
  79.  mov    cl,2
  80.  
  81. ROTATE:
  82.  
  83.  fld    st3
  84.  fsincos
  85.  fld    st2
  86.  fmul   st0,st1
  87.  fld    st4
  88.  fmul   st0,st3
  89.  db     0xde,0xe9 ; fsubp   st1,st0
  90.  db     0xd9,0xcb ; fxch    st3
  91.  fmulp  st2,st0
  92.  fmulp  st3,st0
  93.  faddp  st2,st0
  94.  db     0xd9,0xca ; fxch    st2
  95.  
  96.  loop   ROTATE
  97.  
  98.  fld    st1
  99.  db     0xdc,0xc8 ; fmul    st0,st
  100.  fld    st1
  101.  db     0xdc,0xc8 ; fmul    st0,st
  102.  faddp  st1,st0
  103.  fsqrt
  104.  db     0xde,0xfb ; fdivp   st3,st0
  105.  fpatan
  106.  fimul  word [si-4]
  107.  fistp  word [si]
  108.  fimul  word [si-4]
  109.  fistp  word [si+1]
  110.  mov    si,[si]
  111.  
  112.  lea    ax,[bx+si]
  113.  add    al,ah
  114.  and    al,64
  115.  mov    al,-5
  116.  jz     STORE_1
  117.  
  118.  shl    si,2
  119.  lea    ax,[bx+si]
  120.  sub    al,ah
  121.  mov    al,-16
  122.  jns    STORE_1
  123.  
  124.  shl    si,1
  125.  mov    al,-48
  126.  
  127. STORE_1:
  128.  
  129. ; add    al,[ebx+esi+0x80000]
  130.  add    [di],al
  131.  inc    di
  132.  
  133.  inc    bp
  134.  cmp    bp,160
  135.  
  136. EYE_P:
  137.  
  138.  jnz    TUBEX
  139.  inc    dx
  140.  cmp    dx,80
  141.  jnz    TUBEY
  142.  
  143.  call   display_image
  144.  
  145.  pop    si
  146.  mov    ch,SCREEN*320/256
  147.  
  148. BLUR:
  149.  
  150.  inc    si
  151.  sar    byte [si],2
  152.  loop   BLUR
  153.  
  154.  ret
  155.  
  156.  
  157.  
  158. display_image:
  159.  
  160.   pusha
  161.  
  162.   mov esi,PIXBUF
  163.   mov edi,0x10000
  164.  newp:
  165.   movzx edx,byte [esi]
  166.   shl edx,4
  167. ;  mov dh,dl
  168.   mov [edi],edx
  169.  
  170.   add edi,3
  171.   inc esi
  172.  
  173.   cmp esi,320*160+PIXBUF
  174.   jbe newp
  175.  
  176.   mov eax,7
  177.   mov ecx,320*65536+160
  178.   mov edx,10*65536+27
  179.   mov ebx,0x10000
  180.   int 0x40
  181.  
  182.   popa
  183.   ret
  184.  
  185.  
  186.  
  187. draw_window:
  188.  
  189.      pusha
  190.  
  191.      mov  eax,12
  192.      mov  ebx,1
  193.      int  0x40
  194.  
  195.      mov  eax,0
  196.      mov  ebx,100*65536+339
  197.      mov  ecx,100*65536+198
  198.      mov  edx,0x03225588
  199.      mov  esi,0x0
  200.      mov  esi,0x0
  201.      int  0x40
  202.  
  203.      mov  eax,4
  204.      mov  ebx,8*65536+8
  205.      mov  ecx,0xffffff
  206.      mov  edx,labeltext
  207.      mov  esi,19
  208.      int  0x40
  209.  
  210.      mov  eax,12
  211.      mov  ebx,2
  212.      int  0x40
  213.  
  214.      popa
  215.      ret
  216.  
  217. labeltext db 'TUBE.ASM - with FPU'
  218.  
  219. db 41,0,0xC3,0x3C
  220.  
  221. TEXUV:
  222.  
  223. init_tube:
  224.  
  225.   mov ecx,256
  226.  
  227. PAL1:
  228.  
  229.   mov dx,3C8h
  230.   mov ax,cx
  231.   inc dx
  232.   sar al,1
  233.   js PAL2
  234.   mul al
  235.   shr ax,6
  236.  
  237. PAL2:
  238.  
  239.   mov al,0
  240.   jns PAL3
  241.   sub al,cl
  242.   shr al,1
  243.   shr al,1
  244.  
  245. PAL3:
  246.  
  247.   mov bx,cx
  248.   mov [ebx+0x1000],bh
  249.   loop PAL1
  250.   mov  ecx,256
  251.  
  252. TEX:
  253.  
  254.   mov bx,cx
  255.   add ax,cx
  256.   rol ax,cl
  257.   mov dh,al
  258.   sar dh,5
  259.   adc dl,dh
  260.   adc dl,[ebx+255+0x1000]
  261.   shr dl,1
  262.   mov [ebx+0x1000],dl
  263.   not bh
  264.   mov [ebx+0x1000],dl
  265.   loop TEX
  266.  
  267.   fninit
  268.   fldz
  269.  
  270.   ret
  271.  
  272.  
  273. I_END:
  274.  
  275.  
  276.  
  277.  
  278.