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) è òåì íå ìåíåå, âûõîä åñòü! Äëÿ íà÷àëà, íàäî ðåàëüíî îñîçíàòü ñâîþ ïîçèöèþ â èãðå è íàâÿçàòü ñâîþ, àêòèâíóþ èãðó (êàæäûé íîâûé àêòèâíûé èãðîê óñëîæíÿåò ïàðòíåðàì àíàëèç èãðû). Ýòî ñëîæíî (ïðîùå áûòü áîëâàíîì), è ýòî òðåáóåò Âîëè è âîññîçäàíèÿ Ñìûñëîâ. |
- |