	IF1
INCLUDE COMDEF.INC              ; Include command definition
        ENDIF
VOL     EQU     0               ; Define volume number
LOGIC   SEGMENT BYTE
        ASSUME  CS:LOGIC
        BEGIN                   ; Start up

;  logic10 ; дождь (изображается при помощи восьми капель)
; А.В.Хорев, обучающая программа "ГРОЗА", 1991 год.

        if_
          isset  5    ; f5 -> 1 ? (новая комната впервые) ?
        else_ NotNr   ; нет: переход на NotNr
		      ; да: выполнить инициализацию (см.описание в log09.asm)

          load_view 25  ; загрузить view 25 (дождевая капля) в память

          animate_obj    8           ; вкл.объект #8 (1-я капля)
	                             ; в список управл.объектов
          ignore_horizon 8           ; объекту #8 игнорировать линию гориз.
          random          0, 156, 38 ; присвоить v38 случайное число из
	                             ; интервала [0,156]
          random         50, 160, 39 ; присвоить v39 случайное число из
	                             ; интервала [50,160]               
          position_v     8,  38,  39 ; установить координаты объекта #8 по
	                             ; значениям переменных: х=v38 и у=v39
          set_view       8,  25      ; связать объект #8 с view #25
          set_cel        8,   0      ; объекту #8 установить цикл 0 (во view 25)
          set_priority   8,  15      ; объекту #8 установить приоритет 15
	       
          animate_obj    9           ; объект #9 (2-я капля)
          ignore_horizon 9           ; описание команд см. для объекта #8
          random          0, 156, 38    
          random         50, 160, 39    
          position_v     9,  38,  39    
          set_view       9,  25     
          set_cel        9,   0     
          set_priority   9,  15    
	 
          animate_obj    10          ; объект #10 (3-я капля)              
          ignore_horizon 10          ; описание команд см. для объекта #8 
          random          0, 156, 38    
          random         50, 160, 39    
          position_v     10,  38, 39    
          set_view       10,  25     
          set_cel        10,   0     
          set_priority   10,  15    
	       
          animate_obj    11          ; объект #11 (4-я капля)              
          ignore_horizon 11          ; описание команд см. для объекта #8 
          random          0, 156, 38    
          random         50, 160, 39    
          position_v     11,  38, 39    
          set_view       11,  25     
          set_cel        11,   0     
          set_priority   11,  15    
	            
          animate_obj    12          ; объект #12 (5-я капля)              
          ignore_horizon 12          ; описание команд см. для объекта #8 
          random          0, 156, 38    
          random         50, 160, 39    
          position_v     12,  38, 39    
          set_view       12,  25     
          set_cel        12,   0     
          set_priority   12,  15    
	       
          animate_obj    13          ; объект #13 (6-я капля)              
          ignore_horizon 13          ; описание команд см. для объекта #8 
          random          0, 156, 38
          random         50, 160, 39
          position_v     13,  38, 39
          set_view       13,  25     
          set_cel        13,   3     
          set_priority   13,  15    
	       
          animate_obj    14           ; объект #14 (7-я капля)                                                  
          ignore_horizon 14           ; описание команд см. для объекта #8                                     
          random          0, 156,  38
          random         50, 160,  39
          position_v     14,  38,  39
          set_view       14,  25     
          set_loop       14,   0     
          set_cel        14,   0        
          set_priority   14,  15        
	          
          animate_obj    15           ; объект #15 (8-я капля)              
          ignore_horizon 15           ; описание команд см. для объекта #8 
          random          0, 156,  38        
          random         50, 160,  39        
          position_v     15,  38,  39        
          set_view       15,  25        
          set_loop       15,   0        
          set_cel        15,   3        
          set_priority   15,  15        
	          
          return    ; вернуть управление в log09 команде, следующей за call_ 10
	                              
NotNr:     ; не первый вход в программу
        if_
          isset  206   ; f206 -> 1 (мультфильм для объекта 8 закончен)?
        else_ A185     ; нет: переход на A185
                       ; да:
          random 10, 240,  38 ; v38 = случ.число из инт.[10,240]
          random 10, 240,  39 ; v39 = случ.число из инт.[10,240]
          addv   38,  40      ; v38 = v38 + v40
          addv   39,  41      ; v39 = v39 + v41
 ; вычислить новое значение коорд. х (v38) для объекта #8
          if_
            greatern 38, 159  ; значение v38 > 159 (разм.экр.по горизонтали)
          else_ A165          ; нет: переход на A165
                              ; да: 
            subn 38, 160      ; v38 = v38 - 160

A165 : ; вычислить новое значение коорд. у (v39) для объекта #8     
            if_
              greatern 39, 167       ; значение v39 > 167 (разм.экр.по верт.)  
            else_ A175               ; нет: переход на A175
                                     ; да:                 
              subn            39, 168; v39 = v39 - 168
	            
A175 :        reposition_to_v  8,  38,  39 ; переместить объект #8 в точку с
                                           ; коорд. х=v38 и у=v39
              set_cel          8,   0      ; установить номер кадра 0 для об.8
              end_of_loop      8, 206      ; однократно прокрутить мультфильм
	                                   ; для объекта 8, по оконч. f206->1
	   
A185:   if_
          isset   207  ; f207 -> 1 (мультфильм для объекта 9 закончен)?
        else_ B185     ; нет: переход на B185                          
                       ; да: (далее см.комментарии для объекта #8)    
          random 10, 240,  38 
          random 10, 240,  39 
          addv   38,  40 
          addv   39,  41
 
          if_
            greatern 38, 159 
          else_ B165
 
            subn 38, 160 
B165 :      if_
              greatern 39, 167 
            else_ B175
 
              subn            39, 168 
B175 :        reposition_to_v  9,  38,  39 
              set_cel          9,   0 
              end_of_loop      9, 207     ; однократно прокрутить мультфильм
	                                  ; для объекта 9, по оконч. f207->1
B185:   if_
          isset  208   ; f208 -> 1 (мультфильм для объекта 10 закончен)?
        else_ C185     ; нет: переход на C185                          
                       ; да: (далее см.комментарии для объекта #8)     
          random 10, 240,  38 
          random 10, 240,  39 
          addv   38,  40 
          addv   39,  41
 
          if_
            greatern 38, 159 
          else_ C165
 
            subn 38, 160 
C165 :      if_
              greatern 39, 167 
            else_ C175
 
              subn            39, 168 
C175 :        reposition_to_v 10,  38,  39 
              set_cel         10,   0 
              end_of_loop     10, 208     ; однократно прокрутить мультфильм 
	                                  ; для объекта 10, по оконч. f208->1
C185:   if_
          isset  209   ; f209 -> 1 (мультфильм для объекта 11 закончен)?
        else_ D185     ; нет: переход на D185                           
                       ; да: (далее см.комментарии для объекта #8)      
          random 10, 240,  38 
          random 10, 240,  39 
          addv   38,  40 
          addv   39,  41
 
          if_
            greatern 38, 159 
          else_ D165
 
            subn 38, 160 
D165 :      if_
              greatern 39, 167 
            else_ D175
 
              subn            39, 168 
D175 :        reposition_to_v 11,  38,  39 
              set_cel         11,   0 
              end_of_loop     11, 209     ; однократно прокрутить мультфильм  
	                                  ; для объекта 11, по оконч. f209->1
D185:   if_
          isset 210    ; f210 -> 1 (мультфильм для объекта 12 закончен)? 
        else_ L185     ; нет: переход на L185                            
                       ; да: (далее см.комментарии для объекта #8)      
          random 10, 240,  38 
          random 10, 240,  39 
          addv   38,  40 
          addv   39,  41
 
          if_
            greatern 38, 159 
          else_ L165
 
            subn 38, 160 
L165 :      if_
              greatern 39, 167 
            else_ L175
 
              subn            39, 168 
L175 :        reposition_to_v 12,  38,  39 
              set_cel         12,   0 
              end_of_loop     12, 210     ; однократно прокрутить мультфильм  
	                                  ; для объекта 12, по оконч. f210->1
L185 :  if_
          isset 211    ; f211 -> 1 (мультфильм для объекта 13 закончен)? 
        else_ L235     ; нет: переход на L235                            
                       ; да: (далее см.комментарии для объекта #8)       
          random 10, 240,  38 
          random 10, 240,  39 
          addv   38,  40 
          addv   39,  41
 
          if_
            greatern 38, 159 
          else_ L215
 
            subn 38, 160 
L215 :      if_
              greatern 39, 167 
            else_ L225
 
              subn            39, 168 
L225 :        reposition_to_v 13,  38,  39 
              set_cel         13,   0 
              end_of_loop     13, 211     ; однократно прокрутить мультфильм  
					  ; для объекта 13, по оконч. f211->1 
L235 :  if_
          isset 212    ; f212 -> 1 (мультфильм для объекта 14 закончен)? 
        else_ L285     ; нет: переход на L285                            
                       ; да: (далее см.комментарии для объекта #8)       
          random 10, 240,  38 
          random 10, 240,  39 
          addv   38,  40 
          addv   39,  41
 
          if_
            greatern 38, 159 
          else_ L265
 
            subn 38, 160 
L265 :      if_
              greatern 39, 167 
            else_ L275
 
              subn            39, 168 
L275 :        reposition_to_v 14,  38,  39 
              set_cel         14,   0 
              end_of_loop     14, 212     ; однократно прокрутить мультфильм  
					  ; для объекта 14, по оконч. f212->1 
L285 :  if_
          isset 213    ; f213 -> 1 (мультфильм для объекта 15 закончен)? 
        else_ L335     ; нет: переход на L335                            
	               ; да: (далее см.комментарии для объекта #8)       
          random 10, 240,  38 
          random 10, 240,  39 
          addv   38,  40 
          addv   39,  41 

          if_
            greatern 38, 159 
          else_ L315
 
            subn 38, 160 
L315 :      if_
              greatern 39, 167 
            else_ L325
 
              subn            39, 168 
L325 :        reposition_to_v 15,  38,  39 
              set_cel         15,   0 
              end_of_loop     15, 213     ; однократно прокрутить мультфильм  
                                          ; для объекта 15, по оконч. f213->1
					   
L335 :  return  ; вернуть управление в log09 команде, следующей за call_ 10

         messages 0  ; сообщений нет

VERYEND EQU $
LOGIC   ENDS
        END