Subversion Repositories Kolibri OS

Rev

Rev 1928 | Rev 1930 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1928 Rev 1929
Line 56... Line 56...
56
;;
56
;;
57
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
57
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Line 58... Line 58...
58
 
58
 
Line 59... Line 59...
59
include 'macros.inc'
59
include 'macros.inc'
Line 60... Line 60...
60
 
60
 
Line 61... Line 61...
61
$Revision: 1928 $
61
$Revision: 1929 $
Line 318... Line 318...
318
    mov    eax, [BOOT_VAR + 0x9044]    ; version & flags
318
    mov    eax, [BOOT_VAR + 0x9044]    ; version & flags
319
    mov    [apm_vf], eax
319
    mov    [apm_vf], eax
320
; -----------------------------------------
320
; -----------------------------------------
321
		mov	al, [BOOT_VAR+0x901F]		; DMA access
321
	mov	al, [BOOT_VAR+0x901F]		; DMA access
322
	mov	[allow_dma_access], al
322
	mov	[allow_dma_access], al
323
	mov   eax, 32	 			; <<<<<<<<<  bpp
323
	mov     eax, 32	 			; bpp
324
	mov [ScreenBPP],al
324
	mov     [ScreenBPP],al
325
 
-
 
326
	mov [_display.bpp], eax
325
	mov     [_display.bpp], eax
-
 
326
 
327
	mov [_display.vrefresh], 60
327
	mov     [_display.vrefresh], 60
328
	mov [_display.disable_mouse],  __sys_disable_mouse
328
	mov     [_display.disable_mouse],  __sys_disable_mouse
Line 329... Line 329...
329
 
329
 
330
	movzx eax,word [BOOT_VAR+0x900A]  ; X max
330
	movzx   eax,word [BOOT_VAR+0x900A]  ; X max
331
	mov [_display.width], eax
331
	mov     [_display.width], eax
332
	dec   eax
332
	dec     eax
333
	mov   [Screen_Max_X],eax
333
	mov     [Screen_Max_X],eax
334
	mov   [screen_workarea.right],eax
-
 
335
	inc	eax
-
 
336
	shr	eax, 2
-
 
337
	mov	[_WinMapWidth], eax             ; 1 tyle = 4 pixels
334
	mov     [screen_workarea.right],eax
338
	movzx eax,word [BOOT_VAR+0x900C]        ; Y max
335
	movzx   eax,word [BOOT_VAR+0x900C]        ; Y max
339
	mov   [_display.height], eax
336
	mov     [_display.height], eax
340
	dec   eax
337
	dec     eax
341
	mov   [Screen_Max_Y],eax
338
	mov     [Screen_Max_Y],eax
342
	mov   [screen_workarea.bottom],eax
339
	mov     [screen_workarea.bottom],eax
343
	movzx eax,word [BOOT_VAR+0x9008]        ; screen mode
340
	movzx   eax,word [BOOT_VAR+0x9008]        ; screen mode
344
	mov   [SCR_MODE],eax
-
 
345
;	mov   eax,[BOOT_VAR+0x9014]	        ; Vesa 1.2 bnk sw add == not used any more
-
 
-
 
341
	mov     [SCR_MODE],eax
346
;	mov   [BANK_SWITCH],eax
342
 
347
	movzx eax, word[BOOT_VAR+0x9001]        ; for other modes
343
	movzx   eax, word[BOOT_VAR+0x9001]        ; for other modes
348
	mov   [BytesPerScanLine],ax
344
	mov     [BytesPerScanLine],ax
349
	mov   [_display.pitch], eax
345
	mov     [_display.pitch], eax
350
@@:
346
 
351
	mov   eax, [_display.height]
-
 
352
	shr   eax, 1
347
	mov     eax, [_display.width]
353
	mul   [_WinMapWidth]
348
	mul     [_display.height]
Line 354... Line 349...
354
	mov   [_WinMapSize], eax
349
	mov     [_WinMapSize], eax
355
 
350
 
356
	mov	esi, BOOT_VAR+0x9080
351
	mov	esi, BOOT_VAR+0x9080
Line 371... Line 366...
371
	mov	eax, 0xDEADBEEF
366
	mov	eax, 0xDEADBEEF
372
	hlt
367
	hlt
373
;        ===  EGA, VGA & Vesa 1.2 modes not supported ===
368
;        ===  EGA, VGA & Vesa 1.2 modes not supported ===
374
setvesa20:
369
setvesa20:
375
v20ga32:
370
v20ga32:
376
;	mov	[PUTPIXEL],dword put_pixel
371
	mov	[PUTPIXEL],dword __sys_putpixel
377
;	mov	[GETPIXEL],dword get_pixel
372
	mov	[GETPIXEL],dword get_pixel
Line 378... Line 373...
378
 
373
 
379
; -------- Fast System Call init ----------
374
; -------- Fast System Call init ----------
380
.SEnP:
375
.SEnP:
381
; AMD SYSCALL/SYSRET
376
; AMD SYSCALL/SYSRET
Line 409... Line 404...
409
	stdcall map_page, tss+0x1080, eax, PG_SW
404
	stdcall map_page, tss+0x1080, eax, PG_SW
Line 410... Line 405...
410
 
405
 
Line 411... Line 406...
411
; LOAD IDT
406
; LOAD IDT
412
 
-
 
Line 413... Line 407...
413
	   call build_interrupt_table ;lidt is executed
407
 
414
	  ;lidt [idtreg]
408
	   call         build_interrupt_table ;lidt is executed
415
 
409
 
Line 510... Line 504...
510
; set background
504
; set background
Line 511... Line 505...
511
 
505
 
512
	mov   [BgrDrawMode],eax
506
	mov   [BgrDrawMode],eax
513
	mov   [BgrDataWidth],eax
507
	mov   [BgrDataWidth],eax
514
	mov   [BgrDataHeight],eax
508
	mov   [BgrDataHeight],eax
515
;	mov    [mem_BACKGROUND], 4
509
	mov   [mem_BACKGROUND], 4
Line 516... Line 510...
516
;	mov [img_background], static_background_data
510
	mov   [img_background], static_background_data
Line 517... Line 511...
517
 
511
 
518
	mov	[SLOT_BASE + 256 + APPDATA.dir_table], sys_pgdir - OS_BASE
512
	mov	[SLOT_BASE + 256 + APPDATA.dir_table], sys_pgdir - OS_BASE
Line 630... Line 624...
630
 
624
 
Line 631... Line 625...
631
; SET BACKGROUND DEFAULTS
625
; SET BACKGROUND DEFAULTS
632
 
626
 
633
	mov   esi,boot_bgr
627
	mov   esi,boot_bgr
634
	call  boot_log
628
	call  boot_log
Line 635... Line 629...
635
	call  _init_background   ;graph32.inc ?
629
	call  init_background   ; 
Line 636... Line 630...
636
	call  calculatebackground
630
        call  calculatebackground
Line 684... Line 678...
684
	call init_display
678
	call init_display
685
	mov eax, [def_cursor]
679
	mov eax, [def_cursor]
686
	mov [SLOT_BASE+APPDATA.cursor],eax
680
	mov [SLOT_BASE+APPDATA.cursor],eax
687
	mov [SLOT_BASE+APPDATA.cursor+256],eax
681
	mov [SLOT_BASE+APPDATA.cursor+256],eax
Line 688... Line -...
688
 
-
 
689
; <<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>
-
 
690
 
-
 
691
;	mov     esi, img_test_struct_8
-
 
692
;	mov     edi, 151
-
 
693
 
-
 
694
 ;       mov     ebp, edi
-
 
695
;        imul    edi, [BytesPerScanLine]
-
 
696
;        add     edi, LFB_BASE + 32*4
-
 
697
;        mov     [img_lfb_origin], edi
-
 
698
;        shr     ebp, 1
-
 
699
;        imul    ebp, [_WinMapWidth]
-
 
700
;        add     ebp, 32/4
-
 
701
;        add     ebp, [_WinMapAddress]
-
 
702
;        mov     ecx, ebp
-
 
703
;        add     ecx, [_WinMapWidth]
-
 
704
;        mov     byte[ecx+1], 2
-
 
705
;        mov     ecx, 6
-
 
706
;        mov     [img_pix_y], ecx
-
 
707
;        mov     eax, 1
-
 
708
;        mov     [img_bytes_per_pix], eax
-
 
709
;        mov     ebx, 1
-
 
710
;        bts     ebx, 24
-
 
711
;        mov     eax, 8-1
-
 
712
;        mov     [img_pix_x], eax
-
 
713
;        inc     eax
-
 
714
;        shr     eax, 2
-
 
715
;        mov     [img_map_x], eax
-
 
716
;	mov	[img_draw_core_fn],  draw_core_8bpp
-
 
717
;	mov	[img_draw_edge_fn],  draw_edge_8bpp
-
 
718
;	mov	[img_buf_line_size], 9
-
 
719
;	mov	[img_palette],  img_test_palette
-
 
720
 
-
 
721
;	call    draw_aligned_box
-
 
722
;       add     edi, 48
-
 
723
;        mov     edx, 8
-
 
724
;        call    draw_unaligned_edge
-
 
725
; mono
-
 
726
;        bts     ebx, 25
-
 
727
;        add     edi, [_WinMapWidth]             ; = 1/16 of the screen width
-
 
728
;        mov     esi, img_test_struct_1
-
 
729
;        mov     [img_lfb_origin], edi
-
 
730
;        mov     ecx, 9
-
 
731
;        mov     [img_map_x], 4
-
 
732
;        mov     [img_bitoffset], 1
-
 
733
;        mov     [img_edgeoffset], 16
-
 
734
;	mov	[img_draw_core_fn],  draw_core_1bpp
-
 
735
;	mov	[img_draw_edge_fn],  draw_edge_1bpp
-
 
736
;	mov	[img_buf_line_size], 2
-
 
737
;        mov     [img_bytes_per_pix], 0
-
 
738
;	call    draw_aligned_box
-
 
739
;        add     edi, 48
-
 
740
;        mov     edx, 8
-
 
741
;        call    draw_unaligned_edge
-
 
742
;        btr     ebx, 25
-
 
743
; 32bpp
-
 
744
;        add     edi, [_WinMapWidth]             ; = 1/16 of the screen width
-
 
745
;        mov     esi, img_test_struct_32
-
 
746
;        mov     [img_lfb_origin], edi
-
 
747
;        mov     ecx, 6
-
 
748
;        mov     [img_map_x], 2
-
 
749
;	mov	[img_draw_core_fn],  draw_core_32bpp
-
 
750
;	mov	[img_draw_edge_fn],  draw_edge_32bpp
-
 
751
;	mov	[img_buf_line_size], 32
-
 
752
;       mov     [img_bytes_per_pix], 4
-
 
753
;	call    draw_aligned_box
-
 
754
;        add     edi, 48
-
 
755
;        mov     edx, 8
-
 
756
;        call    draw_unaligned_edge
-
 
757
 
-
 
758
; 24bpp        
-
 
759
;        add     edi, [_WinMapWidth]             ; = 1/16 of the screen width
-
 
760
;        mov     esi, img_test_struct_24
-
 
761
;        mov     [img_lfb_origin], edi
-
 
762
;        mov     ecx, 7
-
 
763
;        mov     [img_map_x], 4
-
 
764
;	mov	[img_draw_core_fn],  draw_core_24bpp
-
 
765
;	mov	[img_draw_edge_fn],  draw_edge_24bpp
-
 
766
;	mov	[img_buf_line_size], 45
-
 
767
;        mov     [img_bytes_per_pix], 3
-
 
768
;	call    draw_aligned_box
-
 
769
;       add     edi, 80
-
 
770
;        mov     edx, 4
-
 
771
;        call    draw_unaligned_edge
-
 
772
 
-
 
773
;        mov     [TASK_BASE-twdw + WDATA.box.left], 0
-
 
774
;        mov     [TASK_BASE-twdw + WDATA.box.top], 0
-
 
775
;        mov     eax, [Screen_Max_X]
-
 
776
;        mov     [TASK_BASE-twdw + WDATA.box.width], eax
-
 
777
;        mov     eax, [Screen_Max_Y]
-
 
778
;        mov     [TASK_BASE-twdw + WDATA.box.height], eax
-
 
779
 
-
 
780
; 	mov	ebx, img_test_struct_24
-
 
781
;        mov     ecx, 16*65536 + 7
-
 
782
;        mov     edx, 512*65536 + 400
-
 
783
 
-
 
784
;        call    _putimage 
-
 
785
 
-
 
786
 
-
 
787
;-----------
-
 
788
;	mov ebx, img_test_struct_32
-
 
789
;	mov ecx, 6*65536 + 6
-
 
790
;	mov edx, 32*65536 + 512
-
 
791
;	mov esi, 32
-
 
792
;       xor     edi, edi
-
 
793
;	mov     ebp, edi
-
 
794
;	call sys_putimage_palette.forced
-
 
795
 
-
 
796
;	mov     [img_palette], img_test_palette
-
 
797
;	mov     [img_bytes_per_pix], 0
-
 
798
;	mov     [img_buf_line_size], 0
-
 
799
;	mov     ebx, img_test_palette
-
 
800
;	mov	[img_draw_core_fn],  draw_core_0bpp
-
 
801
;	mov	[img_draw_edge_fn],  draw_edge_0bpp
-
 
802
;	mov     ecx, 20*65536 + 9
-
 
803
;        mov     edx, 513*65536 + 401 
-
 
804
;	call    _putimage
-
 
805
 
-
 
806
;        mov     eax, 561
-
 
807
;        mov     ebx, 461
-
 
808
;        mov     ecx, 555
-
 
809
;        mov     edx, 333
-
 
810
;        mov     edi, 0xAA5533
-
 
811
;        call    _drawbar
-
 
812
 
-
 
813
 
-
 
814
 
-
 
815
 ;       jmp     $
-
 
816
 
-
 
817
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>	
-
 
818
 
-
 
Line 819... Line 682...
819
 
682
 
Line 820... Line 683...
820
 
683
 
821
  ; READ TSC / SECOND
684
  ; READ TSC / SECOND
Line 854... Line 717...
854
 
717
 
Line 855... Line 718...
855
; SET VARIABLES
718
; SET VARIABLES
Line 856... Line -...
856
 
-
 
857
	call  set_variables
-
 
858
 
719
 
Line 859... Line 720...
859
 
720
	call  set_variables
860
 
721
 
Line 1021... Line 882...
1021
	call	window_check_events
882
	call	window_check_events
1022
	call	mouse_check_events
883
	call	mouse_check_events
1023
	call   checkmisc
884
	call   checkmisc
1024
	call   stack_handler
885
	call   stack_handler
1025
	call   checkidle
886
	call   checkidle
1026
;	call   check_fdd_motor_status
-
 
1027
	jmp    osloop
887
	jmp    osloop
1028
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
888
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1029
;                                                                    ;
889
;                                                                    ;
1030
;                      MAIN OS LOOP END                              ;
890
;                      MAIN OS LOOP END                              ;
1031
;                                                                    ;
891
;                                                                    ;
Line 1830... Line 1690...
1830
     mov ecx, [current_slot]
1690
     mov ecx, [current_slot]
1831
     mov eax, [ecx+APPDATA.tls_base]
1691
     mov eax, [ecx+APPDATA.tls_base]
1832
     test eax, eax
1692
     test eax, eax
1833
     jz @F
1693
     jz @F
Line 1834... Line -...
1834
 
-
 
1835
 
1694
 
1836
     stdcall user_free, eax
1695
     stdcall user_free, eax
Line 1837... Line 1696...
1837
@@:
1696
@@:
1838
 
1697
 
Line 2218... Line 2077...
2218
bgrlockpid dd 0
2077
bgrlockpid dd 0
2219
bgrlock db 0
2078
bgrlock db 0
2220
endg
2079
endg
Line 2221... Line 2080...
2221
 
2080
 
2222
;===============================  SysFn 15  ================================
-
 
2223
; no background service supported so far ...
-
 
2224
;===========================================
-
 
2225
 
2081
;===============================  SysFn 15  ================================
Line 2226... Line 2082...
2226
sys_background:
2082
sys_background:
-
 
2083
 
-
 
2084
    cmp   ebx,1 			   ; BACKGROUND SIZE
-
 
2085
    jnz   nosb1
-
 
2086
    test  ecx,ecx
-
 
2087
;    cmp   ecx,0
-
 
2088
    jz	  sbgrr
-
 
2089
    test  edx,edx
-
 
2090
;    cmp   edx,0
-
 
2091
    jz	  sbgrr
-
 
2092
@@:
-
 
2093
;;Maxis use atomic bts for mutexes  4.4.2009
-
 
2094
	bts	dword [bgrlock], 0
-
 
2095
	jnc	@f
-
 
2096
	call	change_task
-
 
2097
	jmp	@b
-
 
2098
@@:
-
 
2099
    mov   [BgrDataWidth],ecx
-
 
2100
    mov   [BgrDataHeight],edx
-
 
2101
;    mov   [bgrchanged],1
-
 
2102
 
-
 
2103
    pushad
-
 
2104
; return memory for old background
-
 
2105
	mov	eax, [img_background]
-
 
2106
	cmp	eax, static_background_data
-
 
2107
	jz	@f
-
 
2108
	stdcall kernel_free, eax
-
 
2109
@@:
-
 
2110
; calculate RAW size
-
 
2111
    xor  eax,eax
-
 
2112
    inc  eax
-
 
2113
    cmp  [BgrDataWidth],eax
-
 
2114
    jae   @f
-
 
2115
    mov [BgrDataWidth],eax
-
 
2116
@@:
-
 
2117
    cmp  [BgrDataHeight],eax
-
 
2118
    jae   @f
-
 
2119
    mov [BgrDataHeight],eax
-
 
2120
@@:
-
 
2121
    mov  eax,[BgrDataWidth]
-
 
2122
    imul eax,[BgrDataHeight]
-
 
2123
    lea  eax,[eax*3]
-
 
2124
    mov  [mem_BACKGROUND],eax
-
 
2125
; get memory for new background
-
 
2126
    stdcall kernel_alloc, eax
-
 
2127
    test eax, eax
2227
 
2128
    jz .memfailed
-
 
2129
    mov [img_background], eax
-
 
2130
    jmp .exit
2228
    	cmp   ebx,6 			; subfns 1..5 do not return anything
2131
.memfailed:
-
 
2132
; revert to static monotone data
-
 
2133
	mov	[img_background], static_background_data
-
 
2134
	xor	eax, eax
-
 
2135
	inc	eax
-
 
2136
	mov	[BgrDataWidth], eax
2229
    	jb    .exit
2137
	mov	[BgrDataHeight], eax
-
 
2138
	mov	[mem_BACKGROUND], 4
-
 
2139
.exit:
-
 
2140
    popad
-
 
2141
	mov	[bgrlock], 0
-
 
2142
 
-
 
2143
  sbgrr:
-
 
2144
    ret
-
 
2145
 
-
 
2146
nosb1:
-
 
2147
 
-
 
2148
    cmp   ebx,2 			   ; SET PIXEL
-
 
2149
    jnz   nosb2
-
 
2150
 
-
 
2151
    mov   eax, [img_background]
-
 
2152
    test  ecx, ecx
-
 
2153
    jz	  @f
-
 
2154
    cmp   eax, static_background_data
-
 
2155
 
-
 
2156
    jz	  .ret
-
 
2157
@@:
-
 
2158
    mov ebx, [mem_BACKGROUND]
-
 
2159
    add ebx, 4095
-
 
2160
    and ebx, -4096
-
 
2161
    sub ebx, 4
-
 
2162
    cmp   ecx, ebx
-
 
2163
    ja	 .ret
-
 
2164
 
-
 
2165
    mov   ebx,[eax+ecx]
-
 
2166
    and   ebx,0xFF000000 ;255*256*256*256
-
 
2167
    and   edx,0x00FFFFFF ;255*256*256+255*256+255
-
 
2168
    add   edx,ebx
-
 
2169
    mov   [eax+ecx],edx
-
 
2170
.ret:
-
 
2171
    ret
-
 
2172
nosb2:
-
 
2173
 
-
 
2174
    cmp   ebx,3 			   ; DRAW BACKGROUND
-
 
2175
    jnz   nosb3
-
 
2176
draw_background_temp:
-
 
2177
;    cmp   [bgrchanged],1 ;0
-
 
2178
;    je    nosb31
-
 
2179
;draw_background_temp:
-
 
2180
;    mov   [bgrchanged],1 ;0
-
 
2181
    mov    [background_defined], 1
-
 
2182
    mov    byte[BACKGROUND_CHANGED], 1
-
 
2183
    call  force_redraw_background
-
 
2184
   nosb31:
-
 
2185
    ret
-
 
2186
  nosb3:
-
 
2187
 
-
 
2188
    cmp   ebx,4 			   ; TILED / STRETCHED
-
 
2189
    jnz   nosb4
-
 
2190
    cmp   ecx,[BgrDrawMode]
-
 
2191
    je	  nosb41
-
 
2192
    mov   [BgrDrawMode],ecx
-
 
2193
;    mov   [bgrchanged],1
-
 
2194
   nosb41:
-
 
2195
    ret
-
 
2196
  nosb4:
-
 
2197
 
-
 
2198
    cmp   ebx,5 			   ; BLOCK MOVE TO BGR
-
 
2199
    jnz   nosb5
-
 
2200
    cmp   [img_background], static_background_data
-
 
2201
    jnz   @f
-
 
2202
    test  edx, edx
-
 
2203
    jnz   .fin
-
 
2204
    cmp   esi, 4
-
 
2205
    ja	  .fin
-
 
2206
  @@:
-
 
2207
  ; bughere
-
 
2208
    mov   eax, ecx
-
 
2209
    mov   ebx, edx
-
 
2210
    add   ebx, [img_background]   ;IMG_BACKGROUND
-
 
2211
    mov   ecx, esi
-
 
2212
    call  memmove
-
 
2213
  .fin:
-
 
2214
    ret
-
 
2215
  nosb5:
-
 
2216
 
-
 
2217
	cmp	ebx, 6
-
 
2218
	jnz	nosb6
-
 
2219
;;Maxis use atomic bts for mutex 4.4.2009
-
 
2220
@@:
-
 
2221
	bts	dword [bgrlock], 0
-
 
2222
	jnc	@f
-
 
2223
	call	change_task
-
 
2224
	jmp	@b
-
 
2225
@@:
-
 
2226
	mov	eax, [CURRENT_TASK]
-
 
2227
	mov	[bgrlockpid], eax
-
 
2228
	cmp	[img_background], static_background_data
-
 
2229
	jz	.nomem
-
 
2230
	stdcall user_alloc, [mem_BACKGROUND]
-
 
2231
	mov	[esp+32], eax
-
 
2232
	test	eax, eax
-
 
2233
	jz	.nomem
-
 
2234
	mov	ebx, eax
-
 
2235
	shr	ebx, 12
-
 
2236
	or	dword [page_tabs+(ebx-1)*4], DONT_FREE_BLOCK
-
 
2237
	mov	esi, [img_background]
-
 
2238
	shr	esi, 12
-
 
2239
	mov	ecx, [mem_BACKGROUND]
-
 
2240
	add	ecx, 0xFFF
-
 
2241
	shr	ecx, 12
-
 
2242
.z:
-
 
2243
	mov	eax, [page_tabs+ebx*4]
-
 
2244
	test	al, 1
-
 
2245
	jz	@f
-
 
2246
	call	free_page
-
 
2247
@@:
-
 
2248
	mov	eax, [page_tabs+esi*4]
-
 
2249
	or	al, PG_UW
-
 
2250
	mov	[page_tabs+ebx*4], eax
-
 
2251
	mov	eax, ebx
-
 
2252
	shl	eax, 12
-
 
2253
	invlpg	[eax]
-
 
2254
	inc	ebx
-
 
2255
	inc	esi
-
 
2256
	loop	.z
-
 
2257
	ret
-
 
2258
.nomem:
-
 
2259
	and	[bgrlockpid], 0
-
 
2260
	mov	[bgrlock], 0
-
 
2261
nosb6:
-
 
2262
	cmp	ebx, 7
-
 
2263
	jnz	nosb7
-
 
2264
	cmp	[bgrlock], 0
-
 
2265
	jz	.err
-
 
2266
	mov	eax, [CURRENT_TASK]
-
 
2267
	cmp	[bgrlockpid], eax
-
 
2268
	jnz	.err
-
 
2269
	mov	eax, ecx
-
 
2270
	mov	ebx, ecx
-
 
2271
	shr	eax, 12
-
 
2272
	mov	ecx, [page_tabs+(eax-1)*4]
-
 
2273
	test	cl, USED_BLOCK+DONT_FREE_BLOCK
-
 
2274
	jz	.err
-
 
2275
	jnp	.err
-
 
2276
	push	eax
-
 
2277
	shr	ecx, 12
-
 
2278
	dec	ecx
-
 
2279
@@:
-
 
2280
	and	dword [page_tabs+eax*4], 0
-
 
2281
	mov	edx, eax
-
 
2282
	shl	edx, 12
-
 
2283
	push eax
-
 
2284
	invlpg	[edx]
-
 
2285
	pop eax
-
 
2286
	inc	eax
-
 
2287
	loop	@b
-
 
2288
	pop	eax
-
 
2289
	and	dword [page_tabs+(eax-1)*4], not DONT_FREE_BLOCK
-
 
2290
	stdcall user_free, ebx
-
 
2291
	mov	[esp+32], eax
-
 
2292
	and	[bgrlockpid], 0
-
 
2293
	mov	[bgrlock], 0
-
 
2294
	ret
-
 
2295
.err:
-
 
2296
	and	dword [esp+32], 0
-
 
2297
	ret
2230
	mov	dword [esp+32], 0		; subfns 6,7 return 0 as error 
2298
 
Line 2231... Line 2299...
2231
.exit:
2299
nosb7:
2232
	ret
-
 
2233
 
-
 
2234
;===============================  SysFn 39  ================================
2300
    ret
Line 2235... Line 2301...
2235
; no background service supported so far ...
2301
 
-
 
2302
;===============================  SysFn 39  ================================
-
 
2303
align 4
-
 
2304
 
-
 
2305
sys_getbackground:
-
 
2306
    dec   ebx
-
 
2307
    jnz   nogb1
-
 
2308
    mov   eax,[BgrDataWidth]
-
 
2309
    shl   eax,16
-
 
2310
    mov   ax,[BgrDataHeight]
-
 
2311
    mov   [esp+32],eax
-
 
2312
    ret
-
 
2313
 
-
 
2314
nogb1:
-
 
2315
;    cmp   eax,2                                  ; PIXEL
-
 
2316
    dec   ebx
-
 
2317
    jnz   nogb2
-
 
2318
 
-
 
2319
	mov	eax, [img_background]
-
 
2320
	test	ecx, ecx
-
 
2321
	jz	@f
-
 
2322
	cmp	eax, static_background_data
-
 
2323
	jz	.ret
-
 
2324
@@:
-
 
2325
    mov ebx, [mem_BACKGROUND]
-
 
2326
    add ebx, 4095
-
 
2327
    and ebx, -4096
-
 
2328
    sub ebx, 4
-
 
2329
    cmp ecx, ebx
-
 
2330
    ja	.ret
-
 
2331
 
-
 
2332
    mov   eax,[ecx+eax]
-
 
2333
 
-
 
2334
    and   eax, 0xFFFFFF
-
 
2335
    mov   [esp+32],eax
-
 
2336
.ret:
-
 
2337
    ret
-
 
2338
  nogb2:
-
 
2339
 
-
 
2340
;    cmp   eax,4                                  ; TILED / STRETCHED
-
 
2341
    dec   ebx
2236
;===========================================
2342
    dec   ebx
2237
align 4
2343
    jnz   nogb4
Line 2238... Line 2344...
2238
 
2344
    mov   eax,[BgrDrawMode]
Line 2239... Line 2345...
2239
sys_getbackground:
2345
  nogb4:
Line 3094... Line 3200...
3094
     dd p_irq15
3200
     dd p_irq15
Line 3095... Line 3201...
3095
 
3201
 
Line 3096... Line 3202...
3096
endg
3202
endg
-
 
3203
 
-
 
3204
drawbackground:
-
 
3205
;       inc   [mouse_pause]
-
 
3206
;       call  draw_background    ; graph32.inc
-
 
3207
;       dec   [mouse_pause]
3097
 
3208
;       call   [draw_pointer]
-
 
3209
;       ret
-
 
3210
       inc   [mouse_pause]
-
 
3211
       cmp   [SCR_MODE],word 0x12
-
 
3212
       je   dbrv20
-
 
3213
     dbrv12:
-
 
3214
       cmp  [SCR_MODE],word 0100000000000000b
-
 
3215
       jge  dbrv20
-
 
3216
       dec   [mouse_pause]
-
 
3217
       call   [draw_pointer]
-
 
3218
       ret
-
 
3219
     dbrv20:
-
 
3220
       cmp   [BgrDrawMode],dword 1
-
 
3221
       jne   bgrstr
-
 
3222
       call  vesa20_drawbackground_tiled
-
 
3223
       dec   [mouse_pause]
-
 
3224
       call   [draw_pointer]
3098
drawbackground:
3225
       ret
3099
       inc   [mouse_pause]
3226
     bgrstr:
3100
       call  draw_background    ; graph32.inc
3227
       call  vesa20_drawbackground_stretch
3101
       dec   [mouse_pause]
3228
       dec   [mouse_pause]
Line 3102... Line 3229...
3102
       call   [draw_pointer]
3229
       call   [draw_pointer]
-
 
3230
       ret
-
 
3231
 
-
 
3232
; ====================================================================
3103
       ret
3233
if 0
3104
 
3234
; the new GFX sys
3105
; ====================================================================
3235
 
3106
align 4
3236
align 4
3107
syscall_putimage:			; PutImage = SysFn07
3237
syscall_putimage:			; PutImage = SysFn07
Line 3201... Line 3331...
3201
img_edge_proc_1         dd      draw_edge_8bpp 
3331
img_edge_proc_1         dd      draw_edge_8bpp 
3202
img_edge_proc_2         dd      draw_edge_16bpp 
3332
img_edge_proc_2         dd      draw_edge_16bpp 
3203
img_edge_proc_3         dd      draw_edge_24bpp 
3333
img_edge_proc_3         dd      draw_edge_24bpp 
3204
img_edge_proc_4         dd      draw_edge_32bpp 
3334
img_edge_proc_4         dd      draw_edge_32bpp 
Line -... Line 3335...
-
 
3335
 
-
 
3336
end if
-
 
3337
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
-
 
3338
; the old GFX sys
-
 
3339
align 4
-
 
3340
 
-
 
3341
syscall_putimage:			; PutImage
-
 
3342
sys_putimage:
-
 
3343
     test  ecx,0x80008000
-
 
3344
     jnz   .exit
-
 
3345
     test  ecx,0x0000FFFF
-
 
3346
     jz    .exit
-
 
3347
     test  ecx,0xFFFF0000
-
 
3348
     jnz   @f
-
 
3349
  .exit:
-
 
3350
     ret
-
 
3351
 @@:
-
 
3352
	mov	edi,[current_slot]
-
 
3353
	add	dx,word[edi+APPDATA.wnd_clientbox.top]
-
 
3354
	rol	edx,16
-
 
3355
	add	dx,word[edi+APPDATA.wnd_clientbox.left]
-
 
3356
	rol	edx,16
-
 
3357
  .forced:
-
 
3358
	push	ebp esi 0
-
 
3359
	mov	ebp, putimage_get24bpp
-
 
3360
	mov	esi, putimage_init24bpp
-
 
3361
sys_putimage_bpp:
-
 
3362
;        cmp     [SCR_MODE], word 0x12
-
 
3363
;        jz      @f   ;.doit
-
 
3364
;        mov     eax, vesa12_putimage
-
 
3365
;        cmp     [SCR_MODE], word 0100000000000000b
-
 
3366
;        jae     @f
-
 
3367
;        cmp     [SCR_MODE], word 0x13
-
 
3368
;        jnz     .doit
-
 
3369
;@@:
-
 
3370
	mov	eax, vesa20_putimage
-
 
3371
.doit:
-
 
3372
	inc	[mouse_pause]
-
 
3373
	call	eax
-
 
3374
	dec	[mouse_pause]
-
 
3375
	pop	ebp esi ebp
-
 
3376
	jmp	[draw_pointer]
-
 
3377
align 4
-
 
3378
sys_putimage_palette:
-
 
3379
; ebx = pointer to image
-
 
3380
; ecx = [xsize]*65536 + [ysize]
-
 
3381
; edx = [xstart]*65536 + [ystart]
-
 
3382
; esi = number of bits per pixel, must be 8, 24 or 32
-
 
3383
; edi = pointer to palette
-
 
3384
; ebp = row delta
-
 
3385
	mov	eax, [CURRENT_TASK]
-
 
3386
	shl	eax, 8
-
 
3387
	add	dx, word [eax+SLOT_BASE+APPDATA.wnd_clientbox.top]
-
 
3388
	rol	edx, 16
-
 
3389
	add	dx, word [eax+SLOT_BASE+APPDATA.wnd_clientbox.left]
-
 
3390
	rol	edx, 16
-
 
3391
.forced:
-
 
3392
	cmp	esi, 1
-
 
3393
	jnz	@f
-
 
3394
	push	edi
-
 
3395
	mov	eax, [edi+4]
-
 
3396
	sub	eax, [edi]
-
 
3397
	push	eax
-
 
3398
	push	dword [edi]
-
 
3399
	push	0ffffff80h
-
 
3400
	mov	edi, esp
-
 
3401
	call	put_mono_image
-
 
3402
	add	esp, 12
-
 
3403
	pop	edi
-
 
3404
	ret
-
 
3405
@@:
-
 
3406
	cmp	esi, 2
-
 
3407
	jnz	@f
-
 
3408
	push	edi
-
 
3409
	push	0ffffff80h
-
 
3410
	mov	edi, esp
-
 
3411
	call	put_2bit_image
-
 
3412
	pop	eax
-
 
3413
	pop	edi
-
 
3414
	ret
-
 
3415
@@:
-
 
3416
	cmp	esi, 4
-
 
3417
	jnz	@f
-
 
3418
	push	edi
-
 
3419
	push	0ffffff80h
-
 
3420
	mov	edi, esp
-
 
3421
	call	put_4bit_image
-
 
3422
	pop	eax
-
 
3423
	pop	edi
-
 
3424
	ret
-
 
3425
@@:
-
 
3426
	push	ebp esi ebp
-
 
3427
	cmp	esi, 8
-
 
3428
	jnz	@f
-
 
3429
	mov	ebp, putimage_get8bpp
-
 
3430
	mov	esi, putimage_init8bpp
-
 
3431
	jmp	sys_putimage_bpp
-
 
3432
@@:
-
 
3433
	cmp	esi, 15
-
 
3434
	jnz	@f
-
 
3435
	mov	ebp, putimage_get15bpp
-
 
3436
	mov	esi, putimage_init15bpp
-
 
3437
	jmp	sys_putimage_bpp
-
 
3438
@@:
-
 
3439
	cmp	esi, 16
-
 
3440
	jnz	@f
-
 
3441
	mov	ebp, putimage_get16bpp
-
 
3442
	mov	esi, putimage_init16bpp
-
 
3443
	jmp	sys_putimage_bpp
-
 
3444
@@:
-
 
3445
	cmp	esi, 24
-
 
3446
	jnz	@f
-
 
3447
	mov	ebp, putimage_get24bpp
-
 
3448
	mov	esi, putimage_init24bpp
-
 
3449
	jmp	sys_putimage_bpp
-
 
3450
@@:
-
 
3451
	cmp	esi, 32
-
 
3452
	jnz	@f
-
 
3453
	mov	ebp, putimage_get32bpp
-
 
3454
	mov	esi, putimage_init32bpp
-
 
3455
	jmp	sys_putimage_bpp
-
 
3456
@@:
-
 
3457
	pop	ebp esi ebp
-
 
3458
	ret
-
 
3459
 
-
 
3460
put_mono_image:
-
 
3461
	push	ebp esi ebp
-
 
3462
	mov	ebp, putimage_get1bpp
-
 
3463
	mov	esi, putimage_init1bpp
-
 
3464
	jmp	sys_putimage_bpp
-
 
3465
put_2bit_image:
-
 
3466
	push	ebp esi ebp
-
 
3467
	mov	ebp, putimage_get2bpp
-
 
3468
	mov	esi, putimage_init2bpp
-
 
3469
	jmp	sys_putimage_bpp
-
 
3470
put_4bit_image:
-
 
3471
	push	ebp esi ebp
-
 
3472
	mov	ebp, putimage_get4bpp
-
 
3473
	mov	esi, putimage_init4bpp
-
 
3474
	jmp	sys_putimage_bpp
-
 
3475
 
-
 
3476
putimage_init24bpp:
-
 
3477
	lea	eax, [eax*3]
-
 
3478
putimage_init8bpp:
-
 
3479
	ret
-
 
3480
 
-
 
3481
align 16
-
 
3482
putimage_get24bpp:
-
 
3483
	movzx	eax, byte [esi+2]
-
 
3484
	shl	eax, 16
-
 
3485
	mov	ax, [esi]
-
 
3486
	add	esi, 3
-
 
3487
	ret	4
-
 
3488
align 16
-
 
3489
putimage_get8bpp:
-
 
3490
	movzx	eax, byte [esi]
-
 
3491
	push	edx
-
 
3492
	mov	edx, [esp+8]
-
 
3493
	mov	eax, [edx+eax*4]
-
 
3494
	pop	edx
-
 
3495
	inc	esi
-
 
3496
	ret	4
-
 
3497
 
-
 
3498
putimage_init1bpp:
-
 
3499
	add	eax, ecx
-
 
3500
	push	ecx
-
 
3501
	add	eax, 7
-
 
3502
	add	ecx, 7
-
 
3503
	shr	eax, 3
-
 
3504
	shr	ecx, 3
-
 
3505
	sub	eax, ecx
-
 
3506
	pop	ecx
-
 
3507
	ret
-
 
3508
align 16
-
 
3509
putimage_get1bpp:
-
 
3510
	push	edx
-
 
3511
	mov	edx, [esp+8]
-
 
3512
	mov	al, [edx]
-
 
3513
	add	al, al
-
 
3514
	jnz	@f
-
 
3515
	lodsb
-
 
3516
	adc	al, al
-
 
3517
@@:
-
 
3518
	mov	[edx], al
-
 
3519
	sbb	eax, eax
-
 
3520
	and	eax, [edx+8]
-
 
3521
	add	eax, [edx+4]
-
 
3522
	pop	edx
-
 
3523
	ret	4
-
 
3524
 
-
 
3525
putimage_init2bpp:
-
 
3526
	add	eax, ecx
-
 
3527
	push	ecx
-
 
3528
	add	ecx, 3
-
 
3529
	add	eax, 3
-
 
3530
	shr	ecx, 2
-
 
3531
	shr	eax, 2
-
 
3532
	sub	eax, ecx
-
 
3533
	pop	ecx
-
 
3534
	ret
-
 
3535
align 16
-
 
3536
putimage_get2bpp:
-
 
3537
	push	edx
-
 
3538
	mov	edx, [esp+8]
-
 
3539
	mov	al, [edx]
-
 
3540
	mov	ah, al
-
 
3541
	shr	al, 6
-
 
3542
	shl	ah, 2
-
 
3543
	jnz	.nonewbyte
-
 
3544
	lodsb
-
 
3545
	mov	ah, al
-
 
3546
	shr	al, 6
-
 
3547
	shl	ah, 2
-
 
3548
	add	ah, 1
-
 
3549
.nonewbyte:
-
 
3550
	mov	[edx], ah
-
 
3551
	mov	edx, [edx+4]
-
 
3552
	movzx	eax, al
-
 
3553
	mov	eax, [edx+eax*4]
-
 
3554
	pop	edx
-
 
3555
	ret	4
-
 
3556
 
-
 
3557
putimage_init4bpp:
-
 
3558
	add	eax, ecx
-
 
3559
	push	ecx
-
 
3560
	add	ecx, 1
-
 
3561
	add	eax, 1
-
 
3562
	shr	ecx, 1
-
 
3563
	shr	eax, 1
-
 
3564
	sub	eax, ecx
-
 
3565
	pop	ecx
-
 
3566
	ret
-
 
3567
align 16
-
 
3568
putimage_get4bpp:
-
 
3569
	push	edx
-
 
3570
	mov	edx, [esp+8]
-
 
3571
	add	byte [edx], 80h
-
 
3572
	jc	@f
-
 
3573
	movzx	eax, byte [edx+1]
-
 
3574
	mov	edx, [edx+4]
-
 
3575
	and	eax, 0x0F
-
 
3576
	mov	eax, [edx+eax*4]
-
 
3577
	pop	edx
-
 
3578
	ret	4
-
 
3579
@@:
-
 
3580
	movzx	eax, byte [esi]
-
 
3581
	add	esi, 1
-
 
3582
	mov	[edx+1], al
-
 
3583
	shr	eax, 4
-
 
3584
	mov	edx, [edx+4]
-
 
3585
	mov	eax, [edx+eax*4]
-
 
3586
	pop	edx
-
 
3587
	ret	4
-
 
3588
 
-
 
3589
putimage_init32bpp:
-
 
3590
	shl	eax, 2
-
 
3591
	ret
-
 
3592
align 16
-
 
3593
putimage_get32bpp:
-
 
3594
	lodsd
-
 
3595
	ret	4
-
 
3596
 
-
 
3597
putimage_init15bpp:
-
 
3598
putimage_init16bpp:
-
 
3599
	add	eax, eax
-
 
3600
	ret
-
 
3601
align 16
-
 
3602
putimage_get15bpp:
-
 
3603
; 0RRRRRGGGGGBBBBB -> 00000000RRRRR000GGGGG000BBBBB000
-
 
3604
	push	ecx edx
-
 
3605
	movzx	eax, word [esi]
-
 
3606
	add	esi, 2
-
 
3607
	mov	ecx, eax
-
 
3608
	mov	edx, eax
-
 
3609
	and	eax, 0x1F
-
 
3610
	and	ecx, 0x1F shl 5
-
 
3611
	and	edx, 0x1F shl 10
-
 
3612
	shl	eax, 3
-
 
3613
	shl	ecx, 6
-
 
3614
	shl	edx, 9
-
 
3615
	or	eax, ecx
-
 
3616
	or	eax, edx
-
 
3617
	pop	edx ecx
-
 
3618
	ret	4
-
 
3619
 
-
 
3620
align 16
-
 
3621
putimage_get16bpp:
-
 
3622
; RRRRRGGGGGGBBBBB -> 00000000RRRRR000GGGGGG00BBBBB000
-
 
3623
	push	ecx edx
-
 
3624
	movzx	eax, word [esi]
-
 
3625
	add	esi, 2
-
 
3626
	mov	ecx, eax
-
 
3627
	mov	edx, eax
-
 
3628
	and	eax, 0x1F
-
 
3629
	and	ecx, 0x3F shl 5
-
 
3630
	and	edx, 0x1F shl 11
-
 
3631
	shl	eax, 3
-
 
3632
	shl	ecx, 5
-
 
3633
	shl	edx, 8
-
 
3634
	or	eax, ecx
-
 
3635
	or	eax, edx
-
 
3636
	pop	edx ecx
-
 
3637
	ret	4
-
 
3638
 
-
 
3639
 
3205
 
3640
 
3206
; ==================================================
3641
; ==================================================
3207
; eax x beginning
3642
; eax x beginning
3208
; ebx y beginning
3643
; ebx y beginning
3209
; ecx x end
3644
; ecx x end
Line 3217... Line 3652...
3217
	add	ebx,[esi+APPDATA.wnd_clientbox.top]
3652
	add	ebx,[esi+APPDATA.wnd_clientbox.top]
3218
	add	edx,[esi+APPDATA.wnd_clientbox.top]
3653
	add	edx,[esi+APPDATA.wnd_clientbox.top]
3219
  .forced:
3654
  .forced:
3220
    inc   [mouse_pause]
3655
    inc   [mouse_pause]
3221
;  dbv20:
3656
;  dbv20:
3222
    call  _drawbar
3657
    call  drawbar
3223
    dec   [mouse_pause]
3658
    dec   [mouse_pause]
3224
    jmp   [draw_pointer]
3659
    jmp   [draw_pointer]
Line 3225... Line 3660...
3225
 
3660
 
Line 3963... Line 4398...
3963
	pushad
4398
	pushad
Line 3964... Line 4399...
3964
 
4399
 
Line 3965... Line 4400...
3965
	stdcall kernel_free, [_WinMapAddress]
4400
	stdcall kernel_free, [_WinMapAddress]
3966
 
-
 
3967
	mov eax, [_display.width]
-
 
3968
	shr eax, 2
4401
 
3969
	mov [_WinMapWidth], eax
-
 
3970
	mov eax, [_display.height]
-
 
3971
	shr eax, 1
4402
	mov eax, [_display.width]
Line 3972... Line 4403...
3972
	mul [_WinMapWidth]
4403
	mul [_display.height]
3973
	mov [_WinMapSize], eax
4404
	mov [_WinMapSize], eax
3974
 
4405
 
Line 4304... Line 4735...
4304
 
4735
 
4305
uglobals_size = $ - endofcode
4736
uglobals_size = $ - endofcode
4306
diff16 "Zero-filled blk",0,endofcode
4737
diff16 "Zero-filled blk",0,endofcode
Line 4307... Line -...
4307
diff16 "End of kernel  ",0,$
-
 
4308
 
-
 
4309
;Êóðãèíÿí - ìàòåìàòèê, è îñíîâíûå ñâîè âûâîäû äåëàåò íà îñíîâå òåîðèè êàòàñòðîô (åñòü òàêàÿ âïîëíå ñåáå ïðèêëàäíàÿ îáëàñòü ìàòåìàòèêè) ñ ýëåìåíòàìè âàðèàöèîííîãî è ôàêòîðíîãî àíàëèçà.  ïðèíöèïå, îí ìîã áû èçëîæèòü ñóòü â 3-4 ñóõèõ ôîðìóëàõ, íî òîëüêî ïîíÿòü èõ ìîãëè (è çàõîòåëè) áû ÷åëîâåê 200-300...
-
 
4310
 
-
 
4311
;Âîò è ïðèõîäèòñÿ åìó èçëàãàòü òî æå ñàìîå, íî ãîðàçäî äëèííåå è äîõîä÷èâåå. Ëè÷íî ÿ íå ïîëåíèëñÿ è ïðî÷èòàë öèêë "Êðèçèñ è äðóãèå" â àðõèâå "Çàâòðà" çà 2009 ãîä.
-
 
4312
 
-
 
4313
 
-
 
4314
;Âîò î÷åíü êðàòêàÿ âûæèìêà åãî îñíîâíûõ èäåé (ñ ìîåé êîëîêîëüíè, êîíå÷íî):
-
 
4315
 
-
 
4316
;1) Ïëàíåòà ïåðåíàñåëåíà, ðåñóðñîâ íà âñåõ íå õâàòèò, ïåðèîä ëèáåðàëüíåíêîé ãëîáàëèçàöèè äîëæåí ñìåíèòüñÿ ýðîé æåñòêîãî ðàöèîíèðîâàíèÿ ïðè òîòàëüíîì êîíòðîëå âñåãî.
-
 
4317
 
-
 
4318
;2) Ó ãðÿäóùåãî òîòàëèòàðíîãî îáùåñòâà äîëæíà áûòü ãîñïîäñòâóþùàÿ èäåîëîãèÿ, ìîáèëèçóþùàÿ ëþäåé â ñóðîâîé áîðüáå. Êàêîé åé áûòü? äëÿ ýòîãî íàäî îòâåòèòü íà äâà îñíîâíûõ âîïðîñà: à) ìîæíî ëè ñäåëàòü ÷åëîâåêà ëó÷øå, ñèëüíåå, óìíåå? è á) ìîæíî ëè ñäåëàòü îáùåñòâî ëó÷øå, ñïðàâåäëèâåå, ñâîáîäíåå?
-
 
4319
 
-
 
4320
;3) ñóùåñòâóåò 4 âîçìîæíûõ îòâåòà íà ýòè 2 âîïðîñà: (à+á+) èñòîðè÷åñêèé ìîäåðí, îí æå êîììóíèçì; (à+á-) àíòèèñòîðè÷åñêèé ìîäåðí, èëè ôàøèçì; (à-á+) ðåëèãèîçíûé ôóíäàìåíòàëèçì, èëè Êîíòðìîäåðí; è íàêîíåö (à-á-) öèíè÷íûé àíòèãóìàíèçì, îí æå Ïîñòìîäåðí.
-
 
4321
 
-
 
4322
;4) êðóøåíèå êîììóíèñòè÷åñêîãî ïðîåêòà â XX âåêå áûëî òùàòåëüíî ñïëàíèðîâàííîé êàòàñòðîôîé ñ öåëüþ ïîâîðîòà ÷åëîâå÷åñòâà ñ ìîäåðíèñòñêîãî ïóòè ðàçâèòèÿ íà ïîñòìîäåðíèñòñêèé ïóòü ðàñïàäà. Êóðãèíÿí çäåñü èìååò â âèäó êàòàñòðîôó â ìàòåìàòè÷åñêîì ñìûñëå, ò.å. íå êàêîå-òî ïå÷àëüíîå ñîáûòèå, à ïðîöåññ, ïðèâîäÿùèé ê òàêîìó ñîáûòèþ. ß íå õî÷ó ïåðåñêàçûâàòü çäåñü âñå ïîëîæåíèÿ òåîðèè êàòàñòðîô - âàæíî òîëüêî ïîíèìàòü, ÷òî òàêîé ïðîöåññ âîâñå íå îáÿçàòåëüíî äîëæåí ïðèâîäèòü ê ôàòàëüíîìó èñõîäó - âûõîä èç êàòàñòðîôû âñåãäà ìîæíî íàéòè, âïëîòü äî ñàìîãî ïîñëåäíåãî ìîìåíòà!
-
 
4323
 
-
 
4324
;5) êàòèòüñÿ ïî ýòîìó êàòàñòðîôè÷åñêîìó ïóòè ëåãêî, íî íàéòè âûõîä èç êàòàñòðîôû ñ êàæäûì øàãîì âñå ñëîæíåå. ×òîáû èçáåæàòü ôàòàëüíîãî êîíöà, îäíîé ýíåðãèè ìàëî - òðåáóåòñÿ èçðÿäíàÿ ñèëà âîëè.
-
 
4325
 
-
 
4326
;6) çäåñü Êóðãèíÿí ïîäêëþ÷àåò äðóãîé ìàòåìàòè÷åñêèé àïïàðàò - òåîðèþ èãð. È ïîêàçûâàåò, êàê øóëåðà - ìàãèñòðû ñëîæíîé êîàëèöèîííî-àíòàãîíèñòè÷åñêîé èãðû óìåþò öåëåíàïðàâëåííî è ýôôåêòèâíî ëèøàòü ïðîòèâíèêîâ âîëè è ñìûñëîâ äëÿ ïîèñêà âûõîäà èç êàòàñòðîôû.
-
 
4327
 
-
 
4328
;7) êîíå÷íî, ÷åëîâå÷åñêîå îáùåñòâî - ñëîæíåéøàÿ ñèñòåìà ñ íåïðåäñêàçóåìûì îòêëèêîì íà àêòèíûå äåéñòâèÿ êàæäîãî èç èãðîêîâ. Äàæå îïûòíåéøèé øóëåð ìîæåò çäåñü ñäåëàòü íåâåðíûå õîäû. Íî â ðàñïîðÿæåíèè ìàñòåðîâ èãðû èìååòñÿ åùå îäèí ìîùíûé àïïàðàò - ôàêòîðíûé àíàëèç, ïîçâîëÿþùèé ýôôåêòèâíî êîððåêòèðîâàòü ïðîìàõè è ëó÷øå ïðåäñêàçûâòü ïîâåäåíèå ñëîæíûõ ñèñòåì.
-
 
4329
 
-
 
4330
;8) è òåì íå ìåíåå, âûõîä åñòü! Äëÿ íà÷àëà, íàäî ðåàëüíî îñîçíàòü ñâîþ ïîçèöèþ â èãðå è íàâÿçàòü ñâîþ, àêòèâíóþ èãðó (êàæäûé íîâûé àêòèâíûé èãðîê óñëîæíÿåò ïàðòíåðàì àíàëèç èãðû). Ýòî ñëîæíî (ïðîùå áûòü áîëâàíîì), è ýòî òðåáóåò Âîëè è âîññîçäàíèÿ Ñìûñëîâ.
-