home *** CD-ROM | disk | FTP | other *** search
/ PC World 1999 October / PCWorld_1999-10_cd1.bin / Novinky / expert / INTRO256 / DRIVING.ZIP / driving.asm next >
Encoding:
Assembly Source File  |  1999-08-23  |  2.0 KB  |  147 lines

  1. .386
  2. crs segment use16
  3. assume es:crs,cs:crs,ss:crs,ds:crs
  4. org 100h
  5. all:
  6.  
  7.  mov  al,13h
  8.  int  10h
  9. ;dodela sinusovou tabulku
  10.  mov  si,offset sine+10h
  11.  mov  bx,si
  12.  mov  cl,10h
  13. @2kvadrant:
  14.  dec  si
  15.  mov  al,ds:[si] 
  16.  mov  ds:[bx],al
  17.  inc  bx
  18.  loop @2kvadrant
  19.  mov  cl,20h
  20. @3a4kvadrant:
  21.  lodsb
  22.  neg  al
  23.  mov  ds:[bx],al
  24.  inc  bx
  25.  loop @3a4kvadrant
  26.  push 0A000h
  27.  pop  es
  28.  push 0040h
  29.  pop  fs
  30. @main:
  31.  mov  si,006Ch
  32.  mov  ah,fs:[si]
  33. @tick0:
  34.  cmp  ah,fs:[si] 
  35.  je   @tick0
  36. ;nakresli vrchni caru
  37.  inc  bx
  38.  and  bx,3Fh
  39.  mov  si,offset sine
  40.  mov  cl,80h
  41.  sub  cl,ds:[si+bx]
  42.  mov  al,29
  43.  mov  di,136*320
  44.  rep  stosb
  45.  mov  al,22
  46.  mov  cl,0Fh
  47.  rep  stosb
  48.  mov  al,bl
  49.  and  al,00000100b
  50.  add  al,22
  51.  stosb
  52.  stosb
  53.  mov  al,22
  54.  mov  cl,0Fh
  55.  rep  stosb
  56.  mov  cx,137*320
  57.  sub  cx,di
  58.  mov  al,29
  59.  rep  stosb
  60. ;nakresli zbyvajici cary
  61.  push ds
  62.  push es
  63.  pop  ds
  64.  mov  di,199*320
  65.  mov  cl,63
  66. @cary:
  67.  push cx
  68.  push di
  69.  mov  si,di
  70.  mov  cx,320
  71.  sub  si,cx
  72.  rep  movsb    ;skopiruje radku
  73.  or   byte ptr ds:[si],0
  74.  jz   @cary9
  75.  mov  ah,22
  76. @l1:
  77.  lodsb
  78.  cmp  ah,al
  79.  jne  @l1
  80.  mov  ds:[si-3],ah
  81.  mov  ds:[si-2],ah
  82.  add  si,310
  83. @l2:
  84.  mov  al,ds:[si]
  85.  dec  si
  86.  cmp  ah,al
  87.  jne  @l2
  88.  mov  ds:[si+2],ah
  89.  mov  ds:[si+3],ah
  90. @cary9:
  91.  pop  di
  92.  sub  di,320
  93.  pop  cx
  94.  loop @cary 
  95.  pop  ds
  96. ;vykresli prvni radek hvezd
  97.  xor  di,di
  98.  push bx
  99.  mov  bx,319
  100. @hvezdy1:
  101.  mov  ah,0
  102.  in   al,40h
  103.  cmp  al,248
  104.  jb   @hvezdy2
  105.  mov  ah,al
  106.  and  ah,0Fh
  107.  or   ah,10h
  108. @hvezdy2:
  109.  mov  es:[bx],ah
  110.  dec  bx
  111.  jnz  @hvezdy1
  112.  pop  bx 
  113.  push ds
  114.  push es
  115.  pop  ds
  116.  xor  ah,ah
  117.  mov  cl,135
  118.  mov  di,135*320
  119. @hvezdyscroll:
  120.  mov  si,di
  121.  push cx
  122.  mov  cx,320
  123.  sub  si,cx
  124.  dec  si
  125.  in   al,40h
  126.  and  al,3
  127.  add  si,ax
  128.  rep  movsb
  129.  sub  di,640
  130.  pop  cx
  131.  loop @hvezdyscroll
  132.  pop  ds
  133. ;ceka na Escape a kdyz je stisknut, tak skonci
  134.  in   al,60h
  135.  dec  al
  136.  jnz  @main
  137.  int  16h
  138.  mov  ah,12h
  139.  mov  bl,33h
  140.  int  10h
  141.  retn
  142.  
  143. sine     db   000h,003h,006h,009h,00Ch,00Eh,011h,013h,015h,017h,019h,01Bh,01Ch,01Dh,01Eh,01Eh
  144.  
  145. crs ends
  146. end all
  147.