Subversion Repositories Kolibri OS

Rev

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