Subversion Repositories Kolibri OS

Rev

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