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

  1. ;ku psi brejle
  2. .386
  3. cra segment use16
  4. assume es:cra,cs:cra,ss:cra,ds:cra
  5. org 100h
  6. all:
  7.  
  8.  mov  al,13h
  9.  int  10h
  10.  push 0A000h
  11.  pop  es
  12. ;nastavi gradientni sedou paletu
  13.  mov  dx,03C8h
  14.  mov  cl,63
  15. @0:
  16.  mov  al,cl
  17.  out  dx,al
  18.  inc  dx
  19.  out  dx,al
  20.  out  dx,al
  21.  out  dx,al
  22.  dec  dx
  23.  loop @0
  24. ;napise maly napis do rohu obrazovky
  25.  mov  dx,offset msg
  26.  mov  ah,9
  27.  int  21h
  28. ;skopiruje ho a zvetsi ho 1x1 -> 4x7
  29.  mov  di,75*320
  30.  mov  ch,8
  31. @1:
  32.  mov  cl,80
  33. @2:
  34.  mov  al,es:[bx]
  35.  inc  bx
  36.  mov  dl,al
  37.  shl  dl,3
  38.  mov  ah,4
  39. @3:
  40.  mov  al,7
  41. @4:
  42.  mov  es:[di],dl
  43.  add  di,320
  44.  dec  al
  45.  jnz  @4
  46.  sub  di,7*320-1
  47.  dec  ah
  48.  jnz  @3
  49.  dec  cl
  50.  jnz  @2
  51.  add  bx,320-80
  52.  add  di,6*320+320-10*8*4
  53.  dec  ch
  54.  jnz  @1
  55. ;vymaze puvodni napis
  56.  xor  di,di
  57.  mov  ax,di
  58.  mov  cx,8*320/2
  59.  rep  stosw
  60. ;skopiruje napis do CodeSegmentu do ofsetuu 0200h a 5200h.
  61.  PUSH DS
  62.  push es
  63.  pop  ds
  64.  push cs
  65.  pop  es
  66.  mov  si,70*320
  67.  mov  di,200h
  68.  mov  cx,8*8*320/2
  69.  rep  movsw
  70.  mov  si,70*320
  71.  mov  cx,8*8*320/2
  72.  rep  movsw
  73.  push cs
  74.  pop  ds
  75. ;hlavni cyklus
  76. @main:
  77. ;prekopiruje napis do mezibuferu
  78.  mov  si,5200h
  79.  mov  di,200h
  80.  mov  cx,8*8*320/2
  81.  rep  movsw
  82. ;rozostri napis v mezibuferu
  83. ;00yxxxxx - x=cislo, y=1 pro zvetsovani
  84.  mov  al,ah
  85.  shr  al,4
  86.  and  al,2
  87.  dec  al
  88.  add  ah,al
  89.  jns  @5
  90.  mov  ah,00100000b
  91. @5:
  92.  push ax
  93. @oko:
  94.  mov  si,200h+320
  95.  mov  cx,62*320
  96. @oko1:
  97.  mov  al,ds:[si]
  98.  shl  al,1
  99.  add  al,ds:[si+320]
  100.  add  al,ds:[si-320]
  101.  shr  al,2
  102.  mov  ds:[si],al
  103.  inc  si
  104.  loop @oko1
  105. ; mov  si,201h
  106. ; mov  cx,64*320-2
  107. ;@oko2:
  108. ; mov  al,ds:[si]
  109. ; shl  al,1
  110. ; add  al,ds:[si+1]
  111. ; add  al,ds:[si-1]
  112. ; shr  al,2
  113. ; mov  ds:[si],al
  114. ; inc  si
  115. ; loop @oko2
  116.  dec  ah
  117.  test ah,1Fh
  118.  jnz  @oko
  119.  pop  ax
  120. ;hodi napis na obrazovku
  121.  push 0A000h
  122.  pop  es
  123.  mov  si,200h
  124.  mov  di,70*320
  125.  mov  cx,8*8*320/2
  126.  rep  movsw
  127.  push cs
  128.  pop  es
  129. ;pocka na Retracy Chapmana
  130.  mov  dx,03DAh
  131. @trace1:
  132.  in   al,dx
  133.  test al,8
  134.  jz   @trace1
  135.  in   al,60h
  136.  dec  al
  137.  jnz  @main
  138.  POP  DS
  139.  xor  ah,ah
  140.  int  16h
  141.  retn
  142.  
  143. msg    db   'FIASKO ',27h,'99$'
  144.  
  145. cra ends
  146. end all
  147.