Subversion Repositories Kolibri OS

Rev

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

Rev 1859 Rev 1899
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
$Revision: 1859 $
-
 
62
 
-
 
63
 
-
 
64
USE_COM_IRQ	equ 1	   ; make irq 3 and irq 4 available for PCI devices
61
$Revision: 1899 $
65
 
62
 
Line 66... Line 63...
66
; Enabling the next line will enable serial output console
63
 
67
;debug_com_base  equ 0x3f8  ; 0x3f8 is com1, 0x2f8 is com2, 0x3e8 is com3, 0x2e8 is com4, no irq's are used
64
USE_COM_IRQ	equ 1	   ; make irq 3 and irq 4 available for PCI devices
Line 342... Line 339...
342
	dec   eax
339
	dec   eax
343
	mov   [Screen_Max_Y],eax
340
	mov   [Screen_Max_Y],eax
344
	mov   [screen_workarea.bottom],eax
341
	mov   [screen_workarea.bottom],eax
345
	movzx eax,word [BOOT_VAR+0x9008]        ; screen mode
342
	movzx eax,word [BOOT_VAR+0x9008]        ; screen mode
346
	mov   [SCR_MODE],eax
343
	mov   [SCR_MODE],eax
347
	mov   eax,[BOOT_VAR+0x9014]	        ; Vesa 1.2 bnk sw add
344
;	mov   eax,[BOOT_VAR+0x9014]	        ; Vesa 1.2 bnk sw add == not used any more
348
	mov   [BANK_SWITCH],eax
345
;	mov   [BANK_SWITCH],eax
349
	movzx eax, word[BOOT_VAR+0x9001]        ; for other modes
346
	movzx eax, word[BOOT_VAR+0x9001]        ; for other modes
350
	mov   [BytesPerScanLine],ax
347
	mov   [BytesPerScanLine],ax
351
	mov   [_display.pitch], eax
348
	mov   [_display.pitch], eax
352
@@:
349
@@:
353
	mov   eax, [_display.height]
350
	mov   eax, [_display.height]
Line 373... Line 370...
373
	mov	eax, 0xDEADBEEF
370
	mov	eax, 0xDEADBEEF
374
	hlt
371
	hlt
375
;        ===  EGA, VGA & Vesa 1.2 modes not supported ===
372
;        ===  EGA, VGA & Vesa 1.2 modes not supported ===
376
setvesa20:
373
setvesa20:
377
v20ga32:
374
v20ga32:
378
	mov	[PUTPIXEL],dword put_pixel
375
;	mov	[PUTPIXEL],dword put_pixel
379
	mov	[GETPIXEL],dword get_pixel
376
;	mov	[GETPIXEL],dword get_pixel
Line 380... Line 377...
380
 
377
 
381
; -------- Fast System Call init ----------
378
; -------- Fast System Call init ----------
382
.SEnP:
379
.SEnP:
383
; AMD SYSCALL/SYSRET
380
; AMD SYSCALL/SYSRET
Line 512... Line 509...
512
; set background
509
; set background
Line 513... Line 510...
513
 
510
 
514
	mov   [BgrDrawMode],eax
511
	mov   [BgrDrawMode],eax
515
	mov   [BgrDataWidth],eax
512
	mov   [BgrDataWidth],eax
516
	mov   [BgrDataHeight],eax
513
	mov   [BgrDataHeight],eax
517
	mov    [mem_BACKGROUND], 4
514
;	mov    [mem_BACKGROUND], 4
Line 518... Line 515...
518
	mov [img_background], static_background_data
515
;	mov [img_background], static_background_data
Line 519... Line 516...
519
 
516
 
520
	mov	[SLOT_BASE + 256 + APPDATA.dir_table], sys_pgdir - OS_BASE
517
	mov	[SLOT_BASE + 256 + APPDATA.dir_table], sys_pgdir - OS_BASE
Line 601... Line 598...
601
 
598
 
602
; PRINT AMOUNT OF MEMORY
599
; PRINT AMOUNT OF MEMORY
603
	mov	esi, boot_memdetect
600
	mov	esi, boot_memdetect
Line 604... Line -...
604
	call	boot_log
-
 
605
 
-
 
606
; <<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>
-
 
607
	mov ebx, img_test_struct
-
 
608
	mov ecx, 3*65536 + 4
-
 
609
	mov edx, 32*65536 + 512
-
 
610
	mov esi, 32
-
 
611
        xor     edi, edi
-
 
612
	mov     ebp, edi
-
 
613
	call sys_putimage_palette.forced
-
 
614
 
-
 
615
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>	
601
	call	boot_log
616
 
602
 
617
	movzx	ecx, word [boot_y]
603
	movzx	ecx, word [boot_y]
618
	or	ecx, (10+29*6) shl 16 ; "Determining amount of memory"
604
	or	ecx, (10+29*6) shl 16 ; "Determining amount of memory"
619
	sub	ecx, 10
605
	sub	ecx, 10
Line 643... Line 629...
643
 
629
 
Line 644... Line 630...
644
; SET BACKGROUND DEFAULTS
630
; SET BACKGROUND DEFAULTS
645
 
631
 
646
	mov   esi,boot_bgr
632
	mov   esi,boot_bgr
647
	call  boot_log
633
	call  boot_log
Line 648... Line -...
648
	call  init_background
-
 
649
	call  calculatebackground
-
 
650
 
-
 
651
; RESERVE SYSTEM IRQ'S JA PORT'S
-
 
652
 
-
 
653
;        mov   esi,boot_resirqports
-
 
654
;        call  boot_log
-
 
655
;        call  reserve_irqs_ports
634
	call  _init_background   ;graph32.inc ?
Line 656... Line 635...
656
 
635
	call  calculatebackground
657
 
636
 
Line 704... Line 683...
704
	call init_display
683
	call init_display
705
	mov eax, [def_cursor]
684
	mov eax, [def_cursor]
706
	mov [SLOT_BASE+APPDATA.cursor],eax
685
	mov [SLOT_BASE+APPDATA.cursor],eax
707
	mov [SLOT_BASE+APPDATA.cursor+256],eax
686
	mov [SLOT_BASE+APPDATA.cursor+256],eax
Line -... Line 687...
-
 
687
 
-
 
688
; <<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>
-
 
689
 
-
 
690
;	mov     esi, img_test_struct_8
-
 
691
;	mov     edi, 151
-
 
692
 
-
 
693
 ;       mov     ebp, edi
-
 
694
;        imul    edi, [BytesPerScanLine]
-
 
695
;        add     edi, LFB_BASE + 32*4
-
 
696
;        mov     [img_lfb_origin], edi
-
 
697
;        shr     ebp, 1
-
 
698
;        imul    ebp, [_WinMapWidth]
-
 
699
;        add     ebp, 32/4
-
 
700
;        add     ebp, [_WinMapAddress]
-
 
701
;        mov     ecx, ebp
-
 
702
;        add     ecx, [_WinMapWidth]
-
 
703
;        mov     byte[ecx+1], 2
-
 
704
;        mov     ecx, 6
-
 
705
;        mov     [img_pix_y], ecx
-
 
706
;        mov     eax, 1
-
 
707
;        mov     [img_bytes_per_pix], eax
-
 
708
;        mov     ebx, 1
-
 
709
;        bts     ebx, 24
-
 
710
;        mov     eax, 8-1
-
 
711
;        mov     [img_pix_x], eax
-
 
712
;        inc     eax
-
 
713
;        shr     eax, 2
-
 
714
;        mov     [img_map_x], eax
-
 
715
;	mov	[img_draw_core_fn],  draw_core_8bpp
-
 
716
;	mov	[img_draw_edge_fn],  draw_edge_8bpp
-
 
717
;	mov	[img_buf_line_size], 9
-
 
718
;	mov	[img_palette],  img_test_palette
-
 
719
 
-
 
720
;	call    draw_aligned_box
-
 
721
;       add     edi, 48
-
 
722
;        mov     edx, 8
-
 
723
;        call    draw_unaligned_edge
-
 
724
; mono
-
 
725
;        bts     ebx, 25
-
 
726
;        add     edi, [_WinMapWidth]             ; = 1/16 of the screen width
-
 
727
;        mov     esi, img_test_struct_1
-
 
728
;        mov     [img_lfb_origin], edi
-
 
729
;        mov     ecx, 9
-
 
730
;        mov     [img_map_x], 4
-
 
731
;        mov     [img_bitoffset], 1
-
 
732
;        mov     [img_edgeoffset], 16
-
 
733
;	mov	[img_draw_core_fn],  draw_core_1bpp
-
 
734
;	mov	[img_draw_edge_fn],  draw_edge_1bpp
-
 
735
;	mov	[img_buf_line_size], 2
-
 
736
;        mov     [img_bytes_per_pix], 0
-
 
737
;	call    draw_aligned_box
-
 
738
;        add     edi, 48
-
 
739
;        mov     edx, 8
-
 
740
;        call    draw_unaligned_edge
-
 
741
;        btr     ebx, 25
-
 
742
; 32bpp
-
 
743
;        add     edi, [_WinMapWidth]             ; = 1/16 of the screen width
-
 
744
;        mov     esi, img_test_struct_32
-
 
745
;        mov     [img_lfb_origin], edi
-
 
746
;        mov     ecx, 6
-
 
747
;        mov     [img_map_x], 2
-
 
748
;	mov	[img_draw_core_fn],  draw_core_32bpp
-
 
749
;	mov	[img_draw_edge_fn],  draw_edge_32bpp
-
 
750
;	mov	[img_buf_line_size], 32
-
 
751
;       mov     [img_bytes_per_pix], 4
-
 
752
;	call    draw_aligned_box
-
 
753
;        add     edi, 48
-
 
754
;        mov     edx, 8
-
 
755
;        call    draw_unaligned_edge
-
 
756
 
-
 
757
; 24bpp        
-
 
758
;        add     edi, [_WinMapWidth]             ; = 1/16 of the screen width
-
 
759
;        mov     esi, img_test_struct_24
-
 
760
;        mov     [img_lfb_origin], edi
-
 
761
;        mov     ecx, 7
-
 
762
;        mov     [img_map_x], 4
-
 
763
;	mov	[img_draw_core_fn],  draw_core_24bpp
-
 
764
;	mov	[img_draw_edge_fn],  draw_edge_24bpp
-
 
765
;	mov	[img_buf_line_size], 45
-
 
766
;        mov     [img_bytes_per_pix], 3
-
 
767
;	call    draw_aligned_box
-
 
768
;       add     edi, 80
-
 
769
;        mov     edx, 4
-
 
770
;        call    draw_unaligned_edge
-
 
771
 
-
 
772
;        mov     [TASK_BASE-twdw + WDATA.box.left], 0
-
 
773
;        mov     [TASK_BASE-twdw + WDATA.box.top], 0
-
 
774
;        mov     eax, [Screen_Max_X]
-
 
775
;        mov     [TASK_BASE-twdw + WDATA.box.width], eax
-
 
776
;        mov     eax, [Screen_Max_Y]
-
 
777
;        mov     [TASK_BASE-twdw + WDATA.box.height], eax
-
 
778
 
-
 
779
; 	mov	ebx, img_test_struct_24
-
 
780
;        mov     ecx, 16*65536 + 7
-
 
781
;        mov     edx, 512*65536 + 400
-
 
782
 
-
 
783
;        call    _putimage 
-
 
784
 
-
 
785
 
-
 
786
;-----------
-
 
787
;	mov ebx, img_test_struct_32
-
 
788
;	mov ecx, 6*65536 + 6
-
 
789
;	mov edx, 32*65536 + 512
-
 
790
;	mov esi, 32
-
 
791
;       xor     edi, edi
-
 
792
;	mov     ebp, edi
-
 
793
;	call sys_putimage_palette.forced
-
 
794
 
-
 
795
;	mov     [img_palette], img_test_palette
-
 
796
;	mov     [img_bytes_per_pix], 0
-
 
797
;	mov     [img_buf_line_size], 0
-
 
798
;	mov     ebx, img_test_palette
-
 
799
;	mov	[img_draw_core_fn],  draw_core_0bpp
-
 
800
;	mov	[img_draw_edge_fn],  draw_edge_0bpp
-
 
801
;	mov     ecx, 20*65536 + 9
-
 
802
;        mov     edx, 513*65536 + 401 
-
 
803
;	call    _putimage
-
 
804
 
-
 
805
;        mov     eax, 561
-
 
806
;        mov     ebx, 461
-
 
807
;        mov     ecx, 555
-
 
808
;        mov     edx, 333
-
 
809
;        mov     edi, 0xAA5533
-
 
810
;        call    _drawbar
-
 
811
 
-
 
812
 
-
 
813
 
-
 
814
 ;       jmp     $
-
 
815
 
-
 
816
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>	
-
 
817
 
-
 
818
 
708
 
819
 
Line 709... Line 820...
709
  ; READ TSC / SECOND
820
  ; READ TSC / SECOND
710
 
821
 
711
	mov   esi,boot_tsc
822
	mov   esi,boot_tsc
Line 742... Line 853...
742
 
853
 
Line 743... Line 854...
743
; SET VARIABLES
854
; SET VARIABLES
Line -... Line 855...
-
 
855
 
-
 
856
	call  set_variables
744
 
857
 
Line 745... Line 858...
745
	call  set_variables
858
 
746
 
859
 
747
; SET MOUSE
-
 
Line 748... Line 860...
748
 
860
; SET MOUSE
749
	;call   detect_devices
861
 
750
	stdcall load_driver, szPS2MDriver
862
	;call   detect_devices
751
;        stdcall load_driver, szCOM_MDriver
863
	stdcall load_driver, szPS2MDriver
Line 752... Line 864...
752
 
864
 
Line 753... Line 865...
753
	mov   esi,boot_setmouse
865
	mov   esi,boot_setmouse
754
	call  boot_log
866
	call  boot_log
Line 850... Line 962...
850
     ;// mike.dld [
962
     ;// mike.dld [
851
	call  set_lights
963
	call  set_lights
852
     ;// mike.dld ]
964
     ;// mike.dld ]
Line 853... Line -...
853
 
-
 
854
 
-
 
855
; Setup serial output console (if enabled)
-
 
856
 
-
 
857
if defined debug_com_base
-
 
858
 
-
 
859
	; enable Divisor latch
-
 
860
 
-
 
861
	mov	dx, debug_com_base+3
-
 
862
	mov	al, 1 shl 7
-
 
863
	out	dx, al
-
 
864
 
-
 
865
	; Set speed to 115200 baud (max speed)
-
 
866
 
-
 
867
	mov	dx, debug_com_base
-
 
868
	mov	al, 0x01
-
 
869
	out	dx, al
-
 
870
 
-
 
871
	mov	dx, debug_com_base+1
-
 
872
	mov	al, 0x00
-
 
873
	out	dx, al
-
 
874
 
-
 
875
	; No parity, 8bits words, one stop bit, dlab bit back to 0
-
 
876
 
-
 
877
	mov	dx, debug_com_base+3
-
 
878
	mov	al, 3
-
 
879
	out	dx, al
-
 
880
 
-
 
881
	; disable interrupts
-
 
882
 
-
 
883
	mov	dx, debug_com_base+1
-
 
884
	mov	al, 0
-
 
885
	out	dx, al
-
 
886
 
-
 
887
	; clear +  enable fifo (64 bits)
-
 
888
 
-
 
889
	mov	dx, debug_com_base+2
-
 
890
	mov	al, 0x7 + 1 shl 5
-
 
891
	out	dx, al
-
 
892
 
-
 
Line 893... Line 965...
893
 
965
 
Line 894... Line 966...
894
end if
966
 
895
 
967
 
Line 931... Line 1003...
931
		xor	  edi,edi
1003
		xor	  edi,edi
932
	mov   edx,esi
1004
	mov   edx,esi
933
		inc	  edi
1005
		inc	  edi
934
	call  dtext
1006
	call  dtext
Line 935... Line -...
935
 
-
 
936
;        mov   [novesachecksum],1000
-
 
937
;        call  checkVga_N13
-
 
938
 
1007
 
Line 939... Line 1008...
939
	popad
1008
	popad
Line 940... Line 1009...
940
 
1009
 
Line 949... Line 1018...
949
osloop:
1018
osloop:
950
	call   [draw_pointer]
1019
	call   [draw_pointer]
951
	call	window_check_events
1020
	call	window_check_events
952
	call	mouse_check_events
1021
	call	mouse_check_events
953
	call   checkmisc
1022
	call   checkmisc
954
;        call   checkVga_N13
-
 
955
	call   stack_handler
1023
	call   stack_handler
956
	call   checkidle
1024
	call   checkidle
957
	call   check_fdd_motor_status
1025
;	call   check_fdd_motor_status
958
;        call   check_ATAPI_device_event
-
 
959
	jmp    osloop
1026
	jmp    osloop
960
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1027
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
961
;                                                                    ;
1028
;                                                                    ;
962
;                      MAIN OS LOOP END                              ;
1029
;                      MAIN OS LOOP END                              ;
963
;                                                                    ;
1030
;                                                                    ;
Line 1762... Line 1829...
1762
     mov ecx, [current_slot]
1829
     mov ecx, [current_slot]
1763
     mov eax, [ecx+APPDATA.tls_base]
1830
     mov eax, [ecx+APPDATA.tls_base]
1764
     test eax, eax
1831
     test eax, eax
1765
     jz @F
1832
     jz @F
Line -... Line 1833...
-
 
1833
 
1766
 
1834
 
1767
     stdcall user_free, eax
1835
     stdcall user_free, eax
Line 1768... Line 1836...
1768
@@:
1836
@@:
1769
 
1837
 
Line 2148... Line 2216...
2148
align 4
2216
align 4
2149
bgrlockpid dd 0
2217
bgrlockpid dd 0
2150
bgrlock db 0
2218
bgrlock db 0
2151
endg
2219
endg
Line -... Line 2220...
-
 
2220
 
2152
 
2221
;===============================  SysFn 15  ================================
-
 
2222
; no background service supported so far ...
Line 2153... Line -...
2153
sys_background:
-
 
2154
 
-
 
2155
    cmp   ebx,1 			   ; BACKGROUND SIZE
-
 
2156
    jnz   nosb1
-
 
2157
    test  ecx,ecx
-
 
2158
;    cmp   ecx,0
-
 
2159
    jz	  sbgrr
-
 
2160
    test  edx,edx
-
 
2161
;    cmp   edx,0
-
 
2162
    jz	  sbgrr
-
 
2163
@@:
-
 
2164
;;Maxis use atomic bts for mutexes  4.4.2009
-
 
2165
	bts	dword [bgrlock], 0
2223
;===========================================
2166
	jnc	@f
-
 
2167
	call	change_task
-
 
2168
	jmp	@b
-
 
2169
@@:
-
 
2170
    mov   [BgrDataWidth],ecx
-
 
Line 2171... Line -...
2171
    mov   [BgrDataHeight],edx
-
 
2172
;    mov   [bgrchanged],1
-
 
2173
 
-
 
2174
    pushad
2224
 
2175
; return memory for old background
-
 
2176
	mov	eax, [img_background]
-
 
2177
	cmp	eax, static_background_data
-
 
2178
	jz	@f
-
 
2179
	stdcall kernel_free, eax
-
 
2180
@@:
-
 
2181
; calculate RAW size
-
 
2182
    xor  eax,eax
-
 
2183
    inc  eax
-
 
2184
    cmp  [BgrDataWidth],eax
-
 
2185
    jae   @f
-
 
2186
    mov [BgrDataWidth],eax
-
 
2187
@@:
-
 
2188
    cmp  [BgrDataHeight],eax
-
 
2189
    jae   @f
-
 
2190
    mov [BgrDataHeight],eax
-
 
2191
@@:
-
 
2192
    mov  eax,[BgrDataWidth]
-
 
2193
    imul eax,[BgrDataHeight]
-
 
2194
    lea  eax,[eax*3]
-
 
2195
    mov  [mem_BACKGROUND],eax
-
 
2196
; get memory for new background
-
 
2197
    stdcall kernel_alloc, eax
-
 
2198
    test eax, eax
2225
sys_background:
2199
    jz .memfailed
-
 
2200
    mov [img_background], eax
-
 
2201
    jmp .exit
2226
 
2202
.memfailed:
-
 
2203
; revert to static monotone data
-
 
2204
	mov	[img_background], static_background_data
-
 
2205
	xor	eax, eax
-
 
2206
	inc	eax
-
 
2207
	mov	[BgrDataWidth], eax
2227
    	cmp   ebx,6 			; subfns 1..5 do not return anything
2208
	mov	[BgrDataHeight], eax
-
 
2209
	mov	[mem_BACKGROUND], 4
-
 
2210
.exit:
-
 
2211
    popad
-
 
2212
	mov	[bgrlock], 0
2228
    	jb    .exit
Line 2213... Line -...
2213
 
-
 
2214
  sbgrr:
-
 
2215
    ret
-
 
2216
 
-
 
2217
nosb1:
-
 
2218
 
-
 
2219
    cmp   ebx,2 			   ; SET PIXEL
-
 
2220
    jnz   nosb2
-
 
2221
 
-
 
2222
    mov   eax, [img_background]
-
 
2223
    test  ecx, ecx
-
 
2224
    jz	  @f
-
 
2225
    cmp   eax, static_background_data
-
 
2226
 
-
 
2227
    jz	  .ret
-
 
2228
@@:
-
 
2229
    mov ebx, [mem_BACKGROUND]
-
 
2230
    add ebx, 4095
-
 
2231
    and ebx, -4096
-
 
2232
    sub ebx, 4
-
 
2233
    cmp   ecx, ebx
-
 
2234
    ja	 .ret
2229
	mov	dword [esp+32], 0		; subfns 6,7 return 0 as error 
2235
 
-
 
2236
    mov   ebx,[eax+ecx]
-
 
2237
    and   ebx,0xFF000000 ;255*256*256*256
-
 
2238
    and   edx,0x00FFFFFF ;255*256*256+255*256+255
-
 
2239
    add   edx,ebx
-
 
2240
    mov   [eax+ecx],edx
-
 
2241
.ret:
-
 
2242
    ret
-
 
2243
nosb2:
-
 
2244
 
-
 
2245
    cmp   ebx,3 			   ; DRAW BACKGROUND
-
 
2246
    jnz   nosb3
-
 
2247
draw_background_temp:
-
 
2248
;    cmp   [bgrchanged],1 ;0
-
 
2249
;    je    nosb31
2230
.exit:
2250
;draw_background_temp:
-
 
2251
;    mov   [bgrchanged],1 ;0
-
 
2252
 
-
 
2253
    mov    [background_defined], 1
-
 
2254
    mov    byte[BACKGROUND_CHANGED], 1
-
 
2255
    call  force_redraw_background
-
 
2256
   nosb31:
2231
	ret
2257
    ret
-
 
2258
  nosb3:
-
 
2259
 
-
 
2260
    cmp   ebx,4 			   ; TILED / STRETCHED
-
 
2261
    jnz   nosb4
-
 
2262
    cmp   ecx,[BgrDrawMode]
-
 
2263
    je	  nosb41
-
 
2264
    mov   [BgrDrawMode],ecx
2232
 
2265
;    mov   [bgrchanged],1
-
 
2266
   nosb41:
-
 
2267
    ret
-
 
2268
  nosb4:
-
 
2269
 
-
 
2270
    cmp   ebx,5 			   ; BLOCK MOVE TO BGR
-
 
2271
    jnz   nosb5
-
 
2272
    cmp   [img_background], static_background_data
-
 
2273
    jnz   @f
-
 
2274
    test  edx, edx
-
 
2275
    jnz   .fin
-
 
2276
    cmp   esi, 4
-
 
2277
    ja	  .fin
-
 
2278
  @@:
-
 
2279
  ; bughere
-
 
2280
    mov   eax, ecx
-
 
2281
    mov   ebx, edx
-
 
2282
    add   ebx, [img_background]   ;IMG_BACKGROUND
-
 
2283
    mov   ecx, esi
-
 
Line 2284... Line -...
2284
    call  memmove
-
 
2285
  .fin:
-
 
2286
    ret
-
 
2287
  nosb5:
-
 
2288
 
-
 
2289
	cmp	ebx, 6
-
 
2290
	jnz	nosb6
-
 
2291
;;Maxis use atomic bts for mutex 4.4.2009
-
 
2292
@@:
-
 
2293
	bts	dword [bgrlock], 0
-
 
2294
	jnc	@f
-
 
2295
	call	change_task
-
 
2296
	jmp	@b
-
 
2297
@@:
-
 
2298
	mov	eax, [CURRENT_TASK]
-
 
2299
	mov	[bgrlockpid], eax
-
 
2300
	cmp	[img_background], static_background_data
-
 
2301
	jz	.nomem
-
 
2302
	stdcall user_alloc, [mem_BACKGROUND]
-
 
2303
	mov	[esp+32], eax
-
 
2304
	test	eax, eax
2233
;===============================  SysFn 39  ================================
2305
	jz	.nomem
-
 
2306
	mov	ebx, eax
-
 
2307
	shr	ebx, 12
-
 
2308
	or	dword [page_tabs+(ebx-1)*4], DONT_FREE_BLOCK
-
 
2309
	mov	esi, [img_background]
-
 
2310
	shr	esi, 12
-
 
2311
	mov	ecx, [mem_BACKGROUND]
-
 
2312
	add	ecx, 0xFFF
-
 
2313
	shr	ecx, 12
-
 
2314
.z:
-
 
2315
	mov	eax, [page_tabs+ebx*4]
-
 
2316
	test	al, 1
-
 
2317
	jz	@f
-
 
2318
	call	free_page
-
 
2319
@@:
-
 
2320
	mov	eax, [page_tabs+esi*4]
-
 
2321
	or	al, PG_UW
-
 
2322
	mov	[page_tabs+ebx*4], eax
-
 
2323
	mov	eax, ebx
-
 
2324
	shl	eax, 12
-
 
2325
	invlpg	[eax]
-
 
2326
	inc	ebx
-
 
2327
	inc	esi
-
 
2328
	loop	.z
-
 
2329
	ret
-
 
2330
.nomem:
-
 
2331
	and	[bgrlockpid], 0
-
 
2332
	mov	[bgrlock], 0
-
 
2333
nosb6:
-
 
2334
	cmp	ebx, 7
-
 
2335
	jnz	nosb7
-
 
2336
	cmp	[bgrlock], 0
-
 
2337
	jz	.err
-
 
2338
	mov	eax, [CURRENT_TASK]
-
 
2339
	cmp	[bgrlockpid], eax
-
 
2340
	jnz	.err
-
 
2341
	mov	eax, ecx
-
 
2342
	mov	ebx, ecx
-
 
2343
	shr	eax, 12
-
 
2344
	mov	ecx, [page_tabs+(eax-1)*4]
-
 
2345
	test	cl, USED_BLOCK+DONT_FREE_BLOCK
-
 
2346
	jz	.err
-
 
2347
	jnp	.err
-
 
2348
	push	eax
-
 
2349
	shr	ecx, 12
-
 
2350
	dec	ecx
-
 
2351
@@:
-
 
2352
	and	dword [page_tabs+eax*4], 0
-
 
2353
	mov	edx, eax
-
 
2354
	shl	edx, 12
-
 
2355
	push eax
-
 
2356
	invlpg	[edx]
-
 
2357
	pop eax
-
 
2358
	inc	eax
-
 
2359
	loop	@b
-
 
2360
	pop	eax
-
 
2361
	and	dword [page_tabs+(eax-1)*4], not DONT_FREE_BLOCK
-
 
2362
	stdcall user_free, ebx
-
 
2363
	mov	[esp+32], eax
2234
; no background service supported so far ...
2364
	and	[bgrlockpid], 0
2235
;===========================================
Line 2365... Line -...
2365
	mov	[bgrlock], 0
-
 
2366
	ret
-
 
-
 
2236
align 4
Line 2367... Line 2237...
2367
.err:
2237
 
2368
	and	dword [esp+32], 0
2238
sys_getbackground:
2369
	ret
2239
    mov   dword [esp+32], 0
2370
 
2240
    ret
Line 2380... Line 2250...
2380
    mov   [draw_data+32 + RECT.right],eax
2250
    mov   [draw_data+32 + RECT.right],eax
2381
    mov   [draw_data+32 + RECT.bottom],ebx
2251
    mov   [draw_data+32 + RECT.bottom],ebx
2382
    pop   ebx eax
2252
    pop   ebx eax
2383
    inc   byte[REDRAW_BACKGROUND]
2253
    inc   byte[REDRAW_BACKGROUND]
2384
    ret
2254
    ret
-
 
2255
;===========================================
Line 2385... Line -...
2385
 
-
 
2386
align 4
-
 
2387
 
-
 
2388
sys_getbackground:
-
 
2389
;    cmp   eax,1                                  ; SIZE
-
 
2390
    dec   ebx
-
 
2391
    jnz   nogb1
-
 
2392
    mov   eax,[BgrDataWidth]
-
 
2393
    shl   eax,16
-
 
2394
    mov   ax,[BgrDataHeight]
-
 
2395
    mov   [esp+32],eax
-
 
2396
    ret
-
 
2397
 
-
 
2398
nogb1:
-
 
2399
;    cmp   eax,2                                  ; PIXEL
-
 
2400
    dec   ebx
-
 
2401
    jnz   nogb2
-
 
2402
 
-
 
2403
	mov	eax, [img_background]
-
 
2404
	test	ecx, ecx
-
 
2405
	jz	@f
-
 
2406
	cmp	eax, static_background_data
-
 
2407
	jz	.ret
-
 
2408
@@:
-
 
2409
    mov ebx, [mem_BACKGROUND]
-
 
2410
    add ebx, 4095
-
 
2411
    and ebx, -4096
-
 
2412
    sub ebx, 4
-
 
2413
    cmp ecx, ebx
-
 
2414
    ja	.ret
-
 
2415
 
-
 
2416
    mov   eax,[ecx+eax]
-
 
2417
 
-
 
2418
    and   eax, 0xFFFFFF
-
 
2419
    mov   [esp+32],eax
-
 
2420
.ret:
-
 
2421
    ret
-
 
2422
  nogb2:
-
 
2423
 
-
 
2424
;    cmp   eax,4                                  ; TILED / STRETCHED
-
 
2425
    dec   ebx
-
 
2426
    dec   ebx
-
 
2427
    jnz   nogb4
-
 
2428
    mov   eax,[BgrDrawMode]
-
 
2429
  nogb4:
-
 
2430
    mov   [esp+32],eax
-
 
Line 2431... Line 2256...
2431
    ret
2256
 
Line 2432... Line 2257...
2432
 
2257
 
2433
align 4
2258
align 4
Line 2844... Line 2669...
2844
       mov [esp+32],eax
2669
       mov [esp+32],eax
2845
ret
2670
ret
2846
;---------------------------------------------------------------------------------------------
2671
;---------------------------------------------------------------------------------------------
Line 2847... Line -...
2847
 
-
 
2848
 
-
 
2849
; check if pixel is allowed to be drawn
-
 
2850
; -- not in use any more ?
-
 
2851
 
-
 
2852
;checkpixel:
-
 
2853
;	push eax ebx edx
-
 
2854
;	shr  ebx, 1
-
 
2855
;	mov  edx, [_WinMapWidth]     ; <<<< 
-
 
2856
;	imul edx, ebx
-
 
2857
;       shr  eax, 2
-
 
2858
;	add  eax, [_WinMapAddress]
-
 
2859
;	mov  dl,  [eax+edx] 		 
-
 
2860
;
-
 
2861
;	xor  ecx, ecx
-
 
2862
;	mov  eax, [CURRENT_TASK]
-
 
2863
;	cmp  al, dl
-
 
2864
;	setne cl
-
 
2865
;
-
 
2866
;	pop  edx ebx eax
-
 
2867
;	ret
2672
 
2868
 
2673
 
2869
iglobal
2674
iglobal
Line 2870... Line 2675...
2870
  cpustring db 'CPU',0
2675
  cpustring db 'CPU',0
Line 3289... Line 3094...
3289
 
3094
 
Line 3290... Line 3095...
3290
endg
3095
endg
3291
 
3096
 
3292
drawbackground:
-
 
3293
       inc   [mouse_pause]
-
 
3294
;       cmp   [BgrDrawMode],dword 1
-
 
3295
;       jne   bgrstr
3097
drawbackground:
3296
;       call  vesa20_drawbackground_tiled
3098
       inc   [mouse_pause]
3297
       call  drawbackground
3099
       call  draw_background    ; graph32.inc
3298
       dec   [mouse_pause]
3100
       dec   [mouse_pause]
3299
       call   [draw_pointer]
-
 
3300
       ret
-
 
3301
;     bgrstr:
-
 
3302
;       call  vesa20_drawbackground_stretch
-
 
3303
;       dec   [mouse_pause]
-
 
Line 3304... Line 3101...
3304
;       call   [draw_pointer]
3101
       call   [draw_pointer]
3305
;       ret
3102
       ret
3306
 
3103
 
3307
; ====================================================================
3104
; ====================================================================
Line 3337... Line 3134...
3337
 
3134
 
3338
sys_putimage_bpp:                       ; only called from sys_putimage_palette
3135
sys_putimage_bpp:                       ; only called from sys_putimage_palette
3339
	inc	[mouse_pause]
3136
	inc	[mouse_pause]
3340
	call	_putimage		
3137
	call	_putimage		
3341
	dec	[mouse_pause]
3138
	dec	[mouse_pause]
-
 
3139
	call	[draw_pointer]
Line 3342... Line 3140...
3342
	jmp	[draw_pointer]
3140
        ret
3343
 
3141
 
3344
 
3142
 
Line 3355... Line 3153...
3355
	add	dx, word [eax+SLOT_BASE+APPDATA.wnd_clientbox.top]
3153
	add	dx, word [eax+SLOT_BASE+APPDATA.wnd_clientbox.top]
3356
	rol	edx, 16
3154
	rol	edx, 16
3357
	add	dx, word [eax+SLOT_BASE+APPDATA.wnd_clientbox.left]
3155
	add	dx, word [eax+SLOT_BASE+APPDATA.wnd_clientbox.left]
3358
	rol	edx, 16
3156
	rol	edx, 16
3359
.forced:
3157
.forced:
-
 
3158
        push    eax
-
 
3159
        push    esi 
3360
        mov     [img_palette], edi
3160
        mov     [img_palette], edi
3361
        mov     eax, esi
3161
        mov     eax, esi
3362
        cmp     eax, 32       ;>32bpp (stupid call)
3162
        cmp     eax, 32                 ;>32bpp (stupid call)
3363
        ja      .exit
3163
        ja      .exit
3364
        shr     al, 3         ; 0=1bpp, other lo-pix modes not supported
3164
        shr     al, 3                   ; 0=1bpp or solid color
3365
        push    esi
-
 
3366
        mov     [img_bytes_per_pix], eax
3165
        mov     [img_bytes_per_pix], eax
3367
        mov     esi, [eax*4 + img_core_proc_0]
3166
        mov     esi, [eax*4 + img_core_proc_0]
3368
        mov     [img_draw_core_fn], esi
3167
        mov     [img_draw_core_fn], esi
3369
        mov     esi, [eax*4 + img_edge_proc_0]
3168
        mov     esi, [eax*4 + img_edge_proc_0]
3370
        mov     [img_draw_edge_fn], esi
3169
        mov     [img_draw_edge_fn], esi
3371
        mov     esi, ecx
3170
        mov     esi, ecx
3372
        shr     esi, 16                 ; esi = SizeX
3171
        shr     esi, 16                 ; esi = SizeX
3373
        or      al, al
-
 
3374
        jz      .1bpp
-
 
3375
	imul	esi, eax
3172
	imul	esi, eax
-
 
3173
        or      al, al
3376
        jmp     .done
3174
        jnz     .done
-
 
3175
        mov     eax, [esp]              ; bits per pixel
-
 
3176
        or      al, al
-
 
3177
        jz      .done
3377
.1bpp:
3178
.1bpp:
3378
	add	esi, 7
3179
	add	esi, 7
3379
	shr	esi, 3                  ; 8 pixels per byte
3180
	shr	esi, 3                  ; 8 pixels per byte
-
 
3181
        mov     [img_draw_edge_fn], draw_edge_1bpp
-
 
3182
        mov     [img_draw_core_fn], draw_core_1bpp
3380
.done:
3183
.done:
3381
        add     esi, ebp                ; + line offset
3184
        add     esi, ebp                ; + line offset
3382
        mov     [img_buf_line_size], esi
3185
        mov     [img_buf_line_size], esi
3383
        pop     esi
3186
        pop     esi
-
 
3187
        pop     eax
3384
	jmp	_putimage ;<<< sys_putimage_bpp
3188
	jmp	sys_putimage_bpp
3385
.exit:
3189
.exit:
3386
        ret
3190
        ret
Line 3387... Line 3191...
3387
 
3191
 
3388
align 4
3192
align 4
3389
img_core_proc_0         dd      draw_core_1bpp 
3193
img_core_proc_0         dd      draw_core_0bpp 
3390
img_core_proc_1         dd      draw_core_8bpp 
3194
img_core_proc_1         dd      draw_core_8bpp 
3391
img_core_proc_2         dd      draw_core_16bpp 
3195
img_core_proc_2         dd      draw_core_16bpp 
3392
img_core_proc_3         dd      draw_core_24bpp 
3196
img_core_proc_3         dd      draw_core_24bpp 
Line 3393... Line 3197...
3393
img_core_proc_4         dd      draw_core_32bpp 
3197
img_core_proc_4         dd      draw_core_32bpp 
3394
 
3198
 
3395
img_edge_proc_0         dd      draw_edge_1bpp 
3199
img_edge_proc_0         dd      draw_edge_0bpp 
3396
img_edge_proc_1         dd      draw_edge_8bpp 
3200
img_edge_proc_1         dd      draw_edge_8bpp 
3397
img_edge_proc_2         dd      draw_edge_16bpp 
3201
img_edge_proc_2         dd      draw_edge_16bpp 
Line 3412... Line 3216...
3412
	add	ebx,[esi+APPDATA.wnd_clientbox.top]
3216
	add	ebx,[esi+APPDATA.wnd_clientbox.top]
3413
	add	edx,[esi+APPDATA.wnd_clientbox.top]
3217
	add	edx,[esi+APPDATA.wnd_clientbox.top]
3414
  .forced:
3218
  .forced:
3415
    inc   [mouse_pause]
3219
    inc   [mouse_pause]
3416
;  dbv20:
3220
;  dbv20:
3417
    call vesa20_drawbar
3221
    call  _drawbar
3418
    dec   [mouse_pause]
3222
    dec   [mouse_pause]
3419
    jmp   [draw_pointer]
3223
    jmp   [draw_pointer]
Line 3420... Line 3224...
3420
 
3224
 
Line 3515... Line 3319...
3515
	xor	ah,ah
3319
	xor	ah,ah
3516
      c_exit:
3320
      c_exit:
3517
	ret
3321
	ret
Line 3518... Line 3322...
3518
 
3322
 
3519
 
3323
 
Line 3520... Line 3324...
3520
setmouse:  ; set mousepicture -pointer
3324
;setmouse:  ; set mousepicture -pointer
3521
	   ; ps2 mouse enable
-
 
3522
 
3325
	   ; ps2 mouse enable
3523
     mov     [MOUSE_PICTURE],dword mousepointer
-
 
3524
 
3326
 
Line 3525... Line 3327...
3525
     cli
3327
;     mov     [MOUSE_PICTURE],dword mousepointer
3526
 
3328
;     cli
3527
     ret
3329
;     ret
3528
 
3330
 
3529
if used _rdtsc
3331
;if used _rdtsc
3530
_rdtsc:
3332
;_rdtsc:
3531
     bt [cpu_caps], CAPS_TSC
3333
;     bt [cpu_caps], CAPS_TSC
3532
     jnc ret_rdtsc
3334
;     jnc ret_rdtsc
3533
     rdtsc
3335
;     rdtsc
3534
     ret
3336
;     ret
3535
   ret_rdtsc:
3337
;   ret_rdtsc:
Line 3536... Line 3338...
3536
     mov   edx,0xffffffff
3338
;     mov   edx,0xffffffff
Line 3537... Line 3339...
3537
     mov   eax,0xffffffff
3339
;     mov   eax,0xffffffff
Line 3665... Line 3467...
3665
 
3467
 
3666
	mov	ecx, [msg_board_count]
3468
	mov	ecx, [msg_board_count]
3667
	cmp	eax, 1
3469
	cmp	eax, 1
Line 3668... Line -...
3668
	jne	.smbl1
-
 
3669
 
-
 
3670
if defined debug_com_base
-
 
3671
 
-
 
3672
	push	dx ax
-
 
3673
 
-
 
3674
       @@:				; Wait for empty transmit register  (yes, this slows down system..)
-
 
3675
	mov	dx, debug_com_base+5
-
 
3676
	in	al, dx
-
 
3677
	test	al, 1 shl 5
-
 
3678
	jz	@r
-
 
3679
 
-
 
3680
	mov	dx, debug_com_base	; Output the byte
-
 
3681
	mov	al, bl
-
 
3682
	out	dx, al
-
 
3683
 
-
 
3684
	pop	ax dx
-
 
3685
 
-
 
3686
end if
3470
	jne	.smbl1
3687
 
3471
 
3688
	mov	[msg_board_data+ecx],bl
3472
	mov	[msg_board_data+ecx],bl
3689
	inc	ecx
3473
	inc	ecx
3690
	and	ecx, 4095
3474
	and	ecx, 4095
Line 3873... Line 3657...
3873
syscall_setpixel:			; SetPixel
3657
syscall_setpixel:			; SetPixel
Line 3874... Line 3658...
3874
 
3658
 
3875
	mov	eax, ebx
3659
	mov	eax, ebx
3876
	mov	ebx, ecx
3660
	mov	ebx, ecx
3877
	mov	ecx, edx
-
 
3878
	mov	edx, [TASK_BASE]
-
 
3879
	add	eax, [edx-twdw+WDATA.box.left]
-
 
3880
	add	ebx, [edx-twdw+WDATA.box.top]
-
 
3881
	mov	edi, [current_slot]
-
 
3882
	add	eax, [edi+APPDATA.wnd_clientbox.left]
-
 
3883
	add	ebx, [edi+APPDATA.wnd_clientbox.top]
3661
	mov	ecx, edx
3884
	xor	edi, edi ; no force
-
 
3885
;       mov     edi, 1
3662
	xor	edi, edi ; no force
3886
	call	[_display.disable_mouse]
3663
;	call	[_display.disable_mouse]
Line 3887... Line 3664...
3887
	jmp	[putpixel]
3664
	jmp	__sys_putpixel
Line 3888... Line 3665...
3888
 
3665
 
Line 3964... Line 3741...
3964
     xor   edx, edx
3741
     xor   edx, edx
3965
     mov   eax, ebx
3742
     mov   eax, ebx
3966
     div   ecx
3743
     div   ecx
3967
     mov   ebx, edx
3744
     mov   ebx, edx
3968
     xchg  eax, ebx
3745
     xchg  eax, ebx
3969
     call  dword [GETPIXEL] ; eax - x, ebx - y
3746
     call  get_pixel    ; eax - x, ebx - y
3970
     mov   [esp + 32], ecx
3747
     mov   [esp + 32], ecx
3971
     ret
3748
     ret
Line 3972... Line 3749...
3972
 
3749
 
Line 4026... Line 3803...
4026
     push  ecx edx
3803
     push  ecx edx
4027
.start_x:
3804
.start_x:
4028
     push  eax ebx ecx
3805
     push  eax ebx ecx
4029
     add   eax,ecx
3806
     add   eax,ecx
Line 4030... Line 3807...
4030
 
3807
 
Line 4031... Line 3808...
4031
     call  dword [GETPIXEL] ; eax - x, ebx - y
3808
     call  get_pixel ; eax - x, ebx - y
4032
 
3809
 
4033
     mov   [ebp],cx
3810
     mov   [ebp],cx
Line 4185... Line 3962...
4185
	pushad
3962
	pushad
Line 4186... Line 3963...
4186
 
3963
 
Line 4187... Line 3964...
4187
	stdcall kernel_free, [_WinMapAddress]
3964
	stdcall kernel_free, [_WinMapAddress]
4188
 
-
 
4189
	mov eax, [_display.width]
3965
 
4190
	shr eax, 1
3966
	mov eax, [_display.width]
4191
	shr eax, 1
3967
	shr eax, 2
4192
	mov [_WinMapWidth], eax
3968
	mov [_WinMapWidth], eax
4193
	mov eax, [_display.height]
3969
	mov eax, [_display.height]
4194
	shr eax, 1
3970
	shr eax, 1
Line 4526... Line 4302...
4526
__REV__ = __REV
4302
__REV__ = __REV
Line 4527... Line 4303...
4527
 
4303
 
4528
uglobals_size = $ - endofcode
4304
uglobals_size = $ - endofcode
4529
diff16 "Zero-filled blk",0,endofcode
4305
diff16 "Zero-filled blk",0,endofcode
-
 
4306
diff16 "End of kernel  ",0,$
-
 
4307
 
-
 
4308
;Êóðãèíÿí - ìàòåìàòèê, è îñíîâíûå ñâîè âûâîäû äåëàåò íà îñíîâå òåîðèè êàòàñòðîô (åñòü òàêàÿ âïîëíå ñåáå ïðèêëàäíàÿ îáëàñòü ìàòåìàòèêè) ñ ýëåìåíòàìè âàðèàöèîííîãî è ôàêòîðíîãî àíàëèçà.  ïðèíöèïå, îí ìîã áû èçëîæèòü ñóòü â 3-4 ñóõèõ ôîðìóëàõ, íî òîëüêî ïîíÿòü èõ ìîãëè (è çàõîòåëè) áû ÷åëîâåê 200-300...
-
 
4309
 
-
 
4310
;Âîò è ïðèõîäèòñÿ åìó èçëàãàòü òî æå ñàìîå, íî ãîðàçäî äëèííåå è äîõîä÷èâåå. Ëè÷íî ÿ íå ïîëåíèëñÿ è ïðî÷èòàë öèêë "Êðèçèñ è äðóãèå" â àðõèâå "Çàâòðà" çà 2009 ãîä.
-
 
4311
 
-
 
4312
 
-
 
4313
;Âîò î÷åíü êðàòêàÿ âûæèìêà åãî îñíîâíûõ èäåé (ñ ìîåé êîëîêîëüíè, êîíå÷íî):
-
 
4314
 
-
 
4315
;1) Ïëàíåòà ïåðåíàñåëåíà, ðåñóðñîâ íà âñåõ íå õâàòèò, ïåðèîä ëèáåðàëüíåíêîé ãëîáàëèçàöèè äîëæåí ñìåíèòüñÿ ýðîé æåñòêîãî ðàöèîíèðîâàíèÿ ïðè òîòàëüíîì êîíòðîëå âñåãî.
-
 
4316
 
-
 
4317
;2) Ó ãðÿäóùåãî òîòàëèòàðíîãî îáùåñòâà äîëæíà áûòü ãîñïîäñòâóþùàÿ èäåîëîãèÿ, ìîáèëèçóþùàÿ ëþäåé â ñóðîâîé áîðüáå. Êàêîé åé áûòü? äëÿ ýòîãî íàäî îòâåòèòü íà äâà îñíîâíûõ âîïðîñà: à) ìîæíî ëè ñäåëàòü ÷åëîâåêà ëó÷øå, ñèëüíåå, óìíåå? è á) ìîæíî ëè ñäåëàòü îáùåñòâî ëó÷øå, ñïðàâåäëèâåå, ñâîáîäíåå?
-
 
4318
 
-
 
4319
;3) ñóùåñòâóåò 4 âîçìîæíûõ îòâåòà íà ýòè 2 âîïðîñà: (à+á+) èñòîðè÷åñêèé ìîäåðí, îí æå êîììóíèçì; (à+á-) àíòèèñòîðè÷åñêèé ìîäåðí, èëè ôàøèçì; (à-á+) ðåëèãèîçíûé ôóíäàìåíòàëèçì, èëè Êîíòðìîäåðí; è íàêîíåö (à-á-) öèíè÷íûé àíòèãóìàíèçì, îí æå Ïîñòìîäåðí.
-
 
4320
 
-
 
4321
;4) êðóøåíèå êîììóíèñòè÷åñêîãî ïðîåêòà â XX âåêå áûëî òùàòåëüíî ñïëàíèðîâàííîé êàòàñòðîôîé ñ öåëüþ ïîâîðîòà ÷åëîâå÷åñòâà ñ ìîäåðíèñòñêîãî ïóòè ðàçâèòèÿ íà ïîñòìîäåðíèñòñêèé ïóòü ðàñïàäà. Êóðãèíÿí çäåñü èìååò â âèäó êàòàñòðîôó â ìàòåìàòè÷åñêîì ñìûñëå, ò.å. íå êàêîå-òî ïå÷àëüíîå ñîáûòèå, à ïðîöåññ, ïðèâîäÿùèé ê òàêîìó ñîáûòèþ. ß íå õî÷ó ïåðåñêàçûâàòü çäåñü âñå ïîëîæåíèÿ òåîðèè êàòàñòðîô - âàæíî òîëüêî ïîíèìàòü, ÷òî òàêîé ïðîöåññ âîâñå íå îáÿçàòåëüíî äîëæåí ïðèâîäèòü ê ôàòàëüíîìó èñõîäó - âûõîä èç êàòàñòðîôû âñåãäà ìîæíî íàéòè, âïëîòü äî ñàìîãî ïîñëåäíåãî ìîìåíòà!
-
 
4322
 
-
 
4323
;5) êàòèòüñÿ ïî ýòîìó êàòàñòðîôè÷åñêîìó ïóòè ëåãêî, íî íàéòè âûõîä èç êàòàñòðîôû ñ êàæäûì øàãîì âñå ñëîæíåå. ×òîáû èçáåæàòü ôàòàëüíîãî êîíöà, îäíîé ýíåðãèè ìàëî - òðåáóåòñÿ èçðÿäíàÿ ñèëà âîëè.
-
 
4324
 
-
 
4325
;6) çäåñü Êóðãèíÿí ïîäêëþ÷àåò äðóãîé ìàòåìàòè÷åñêèé àïïàðàò - òåîðèþ èãð. È ïîêàçûâàåò, êàê øóëåðà - ìàãèñòðû ñëîæíîé êîàëèöèîííî-àíòàãîíèñòè÷åñêîé èãðû óìåþò öåëåíàïðàâëåííî è ýôôåêòèâíî ëèøàòü ïðîòèâíèêîâ âîëè è ñìûñëîâ äëÿ ïîèñêà âûõîäà èç êàòàñòðîôû.
-
 
4326
 
-
 
4327
;7) êîíå÷íî, ÷åëîâå÷åñêîå îáùåñòâî - ñëîæíåéøàÿ ñèñòåìà ñ íåïðåäñêàçóåìûì îòêëèêîì íà àêòèíûå äåéñòâèÿ êàæäîãî èç èãðîêîâ. Äàæå îïûòíåéøèé øóëåð ìîæåò çäåñü ñäåëàòü íåâåðíûå õîäû. Íî â ðàñïîðÿæåíèè ìàñòåðîâ èãðû èìååòñÿ åùå îäèí ìîùíûé àïïàðàò - ôàêòîðíûé àíàëèç, ïîçâîëÿþùèé ýôôåêòèâíî êîððåêòèðîâàòü ïðîìàõè è ëó÷øå ïðåäñêàçûâòü ïîâåäåíèå ñëîæíûõ ñèñòåì.
-
 
4328
 
-
 
4329
;8) è òåì íå ìåíåå, âûõîä åñòü! Äëÿ íà÷àëà, íàäî ðåàëüíî îñîçíàòü ñâîþ ïîçèöèþ â èãðå è íàâÿçàòü ñâîþ, àêòèâíóþ èãðó (êàæäûé íîâûé àêòèâíûé èãðîê óñëîæíÿåò ïàðòíåðàì àíàëèç èãðû). Ýòî ñëîæíî (ïðîùå áûòü áîëâàíîì), è ýòî òðåáóåò Âîëè è âîññîçäàíèÿ Ñìûñëîâ.
-
 
4330