home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 September / Chip_2002-09_cd1.bin / ctenari / Veber / src / procs.asm < prev    next >
Assembly Source File  |  2002-07-08  |  4KB  |  201 lines

  1. ; Procedures (Game Sputnik)
  2. ; Copyright (C) 2001 Jaromφr Veber
  3. ;
  4. ; This program is free software; you can redistribute it and/or modify
  5. ; it under the terms of the GNU General Public License as published by
  6. ; the Free Software Foundation; either version 2 of the License, or
  7. ; (at your option) any later version.
  8. ;
  9. ; This program is distributed in the hope that it will be useful,
  10. ; but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12. ; GNU General Public License for more details.
  13. ;
  14. ; You should have received a copy of the GNU General Public License
  15. ; along with this program; if not, write to the Free Software
  16. ; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  17. ;###############################################################################
  18.  
  19. ;this is very good delay - it takes on all computers the same time.
  20. delay:
  21.   mov bp,sp  
  22.   MOV cx,[bp+2]
  23.   test cx,cx
  24.   jz .pauza_end              
  25.  
  26.  
  27.   mov      ax,66
  28.   mul      cx
  29.   mov      cx,ax
  30. .pauza_c1
  31.   in         al,61h
  32.   test       al,10h
  33.   jz         .pauza_c1
  34.   dec        cx
  35.   jz         .pauza_end
  36. .pauza_c2
  37.   in        al,61h
  38.   test      al,10h
  39.   jnz       .pauza_c2
  40.   dec       cx
  41.   jnz       .pauza_c1
  42. .pauza_end
  43.   ret
  44.  
  45. ;display procedures
  46. ;5 words - 1. position X , 2. position Y, 3. sizeX, 4. sizeY
  47.                     ;5. color (byte)
  48. New_Rectangle    ;it is realy programed from me so....
  49.   mov bp,sp
  50.   mov AX,[bp+10]    
  51.   mov BX,[bp+8]
  52.   SHL BX,6
  53.   add AX,BX
  54.   SHL BX,2
  55.   add BX,AX
  56.   mov AL,[bp+2]
  57.   mov CX,[bp+6]  
  58. .loopik   
  59.   mov [FS:BX],AL
  60.   inc BX
  61.   LOOP .loopik
  62.   mov CX,[bp+4]
  63. .loopik1
  64.   add BX,320
  65.   sub BX,[bp+6]
  66.   mov [FS:BX],AL
  67.   add BX,[bp+6]  
  68.   mov [FS:BX-1],AL
  69.     LOOP .loopik1    
  70. .exit
  71.  
  72.   add BX,320
  73.   sub BX,[bp+6]
  74.   mov CX,[bp+6]  
  75. .loopik2   
  76.   mov [FS:BX],AL
  77.   inc BX
  78.   LOOP .loopik2
  79.   ret
  80. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  81. ;1. X; 2. Y ;3. size X 4. color 
  82. New_lineX
  83.   mov bp,sp
  84.   mov AX,[bp+8]    
  85.   mov BX,[bp+6]
  86.   SHL BX,6
  87.   add AX,BX
  88.   SHL BX,2
  89.   add BX,AX
  90.   mov AL,[bp+2]
  91.   mov CX,[bp+4]  
  92. .loopik   
  93.   mov [FS:BX],AL
  94.   inc BX
  95.   LOOP .loopik
  96.   ret
  97.  
  98. ;;;;;;;;;;;
  99. ;random
  100. ;1. number to generate radom number; 2. number of posibilities
  101. ;returns in AX generated number
  102.  
  103. ;it is not the best generator, but can be used
  104. ;it was realy made from my
  105. Random
  106.     mov bp,sp
  107.     mov AX,[bp+4]
  108.     mov BX,[bp+2]    
  109.  
  110.     mov CL,BL
  111.     rcl AX,CL
  112.  
  113.     mov CX,0FFFFH
  114. .loopt
  115.         cmp AX,BX
  116.         jb  .return
  117.         rol AX,15
  118.         shr AX,2
  119.         ror AX,15
  120.         rcl AX,CL
  121.         LOOP .loopt
  122.  
  123.         mov CX,10H
  124. .eliminator
  125.         cmp AX,BX
  126.         jb  .return
  127.         shr ax,1
  128.         LOOP .loopt
  129.         .return
  130.         ret
  131.  
  132. WriteStr_proc
  133.      mov bp,sp
  134.      mov si,[BP+2]
  135.      mov AH,0EH
  136.      mov BL,7
  137. .UP
  138.      LODSB
  139.      test AL,AL
  140.      JZ   .DOWN
  141.      INT  10H
  142.      JMP  .UP
  143. .DOWN
  144.      ret
  145.  
  146.  
  147. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  148. ;1. X; 2. Y ;3. size Y 4. color 
  149. lineY_proc
  150.   mov bp,sp
  151.  
  152.   mov AX,[bp+8]
  153.   mov BX,[bp+6]
  154.   SHL BX,6
  155.   add AX,BX
  156.   SHL BX,2
  157.   add BX,AX
  158.   mov AL,[bp+2]
  159.   mov CX,[bp+4]
  160.   dec CX
  161.   dec CX
  162. .loopik   
  163.   mov [FS:BX],AL
  164.   add BX,320
  165.   LOOP .loopik
  166.   ret
  167.   
  168. %ifdef DEBUG
  169. Write_AX_proc:
  170.       push ax
  171.       xchg AL,AH
  172.       call WriteAL_proc
  173.       xchg AL,AH 
  174.       call WriteAL_proc
  175.       pop ax
  176.        ret
  177. %endif       
  178.  
  179. WriteAL_proc
  180.         pusha
  181.  
  182.           mov CL,AL  
  183.           shr AL,4          
  184.           cmp al,10
  185.         sbb al,69h
  186.         das 
  187.           mov AH,0EH
  188.           mov BL,7
  189.           INT  10H
  190.  
  191.           mov AL,CL
  192.           and AL,0FH
  193.  
  194.           cmp al,10
  195.         sbb al,69h
  196.         das
  197.           mov AH,0EH
  198.           mov BL,7
  199.           INT  10H
  200.           popa
  201.         ret