From b1147c3be7664219a6d203b63d4e536e5c559650 Mon Sep 17 00:00:00 2001 From: "Artem Jerdev (art_zh)" Date: Tue, 22 Jan 2013 22:47:49 +0000 Subject: [PATCH] Good-bye APM ! git-svn-id: svn://kolibrios.org@3194 a494cfbc-eb01-0410-851d-a64ba20cac60 --- .../Kolibri-A/trunk/boot/bootcode.inc | 17 +-- .../branches/Kolibri-A/trunk/boot/rdload.inc | 126 ------------------ kernel/branches/Kolibri-A/trunk/data32.inc | 16 --- kernel/branches/Kolibri-A/trunk/kernel.asm | 87 +----------- 4 files changed, 8 insertions(+), 238 deletions(-) delete mode 100644 kernel/branches/Kolibri-A/trunk/boot/rdload.inc diff --git a/kernel/branches/Kolibri-A/trunk/boot/bootcode.inc b/kernel/branches/Kolibri-A/trunk/boot/bootcode.inc index 18c24b856..d095fdc22 100644 --- a/kernel/branches/Kolibri-A/trunk/boot/bootcode.inc +++ b/kernel/branches/Kolibri-A/trunk/boot/bootcode.inc @@ -39,7 +39,7 @@ start_of_code: cpugood: - xor ax, ax + xor ax, ax push ax popf sti @@ -49,35 +49,28 @@ cpugood: push ax pop es - mov [es:0x9031], ax - -; --------------- APM - removed-------------------- - and word [es:0x9044], 0 ; ver = 0.0 (APM not found) cfgmanager: ; DMA ACCESS TO HD - mov al, 1 - mov [es:0x901F], al +; mov al, 1 ; GRAPHICS ACCELERATION ; force yes - mov [es:0x901C], al +; mov [es:0x901C], al ; VRR_M USE - mov [es:0x9030], byte 2 - mov [es:0x901E], al +; mov [es:0x9030], byte 2 ; BOOT DEVICE xor ax, ax mov [boot_dev], al - mov es, ax - +; mov es, ax ; SET GRAPHICS diff --git a/kernel/branches/Kolibri-A/trunk/boot/rdload.inc b/kernel/branches/Kolibri-A/trunk/boot/rdload.inc deleted file mode 100644 index 9548bc6fd..000000000 --- a/kernel/branches/Kolibri-A/trunk/boot/rdload.inc +++ /dev/null @@ -1,126 +0,0 @@ -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; ;; -;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;; -;; Distributed under terms of the GNU General Public License ;; -;; ;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -$Revision$ - - -; READ RAMDISK IMAGE FROM HD - -; cmp [boot_dev+OS_BASE+0x10000],1 - jmp no_sys_on_hd -if 0 - test [DRIVE_DATA+1],byte 0x40 - jz position_2 - mov [hdbase],0x1f0 - mov [hdid],0x0 - mov [hdpos],1 - mov [fat32part], 0 - position_1_1: - inc [fat32part] - call search_and_read_image - cmp [image_retrieved],1 - je yes_sys_on_hd - movzx eax,byte [DRIVE_DATA+2] - cmp [fat32part],eax - jle position_1_1 - position_2: - test [DRIVE_DATA+1],byte 0x10 - jz position_3 - mov [hdbase],0x1f0 - mov [hdid],0x10 - mov [hdpos],2 - mov [fat32part],0 - position_2_1: - inc [fat32part] - call search_and_read_image - cmp [image_retrieved],1 - je yes_sys_on_hd - movzx eax,byte [DRIVE_DATA+3] - cmp eax,[fat32part] - jle position_2_1 - position_3: - test [DRIVE_DATA+1],byte 0x4 - jz position_4 - mov [hdbase],0x170 - mov [hdid],0x0 - mov [hdpos],3 - mov [fat32part],0 - position_3_1: - inc [fat32part] - call search_and_read_image - cmp [image_retrieved],1 - je yes_sys_on_hd - movzx eax,byte [DRIVE_DATA+4] - cmp eax,[fat32part] - jle position_3_1 - position_4: - test [DRIVE_DATA+1],byte 0x1 - jz no_sys_on_hd - mov [hdbase],0x170 - mov [hdid],0x10 - mov [hdpos],4 - mov [fat32part],0 - position_4_1: - inc [fat32part] - call search_and_read_image - cmp [image_retrieved],1 - je yes_sys_on_hd - movzx eax,byte [DRIVE_DATA+5] - cmp eax,[fat32part] - jle position_4_1 - jmp yes_sys_on_hd - - search_and_read_image: - call set_FAT32_variables - mov edx, bootpath - call read_image - test eax, eax - jz image_present - mov edx, bootpath2 - call read_image - test eax, eax - jz image_present - ret - image_present: - mov [image_retrieved],1 - ret - -read_image: - mov eax, hdsysimage+OS_BASE+0x10000 - mov ebx, 1474560/512 - mov ecx, RAMDISK - mov esi, 0 - mov edi, 12 - call file_read - ret -end if - -image_retrieved db 0 -counter_of_partitions db 0 -no_sys_on_hd: - ; test_to_format_ram_disk (need if not using ram disk) - cmp [boot_dev+OS_BASE+0x10000],3 - jne not_format_ram_disk - ; format_ram_disk - mov edi, RAMDISK - mov ecx, 0x1080 - xor eax,eax -@@: - stosd - loop @b - - mov ecx, 0x58F7F - mov eax,0xF6F6F6F6 -@@: - stosd - loop @b - - mov [RAMDISK+0x200],dword 0xFFFFF0 ; fat table - mov [RAMDISK+0x4200],dword 0xFFFFF0 - -not_format_ram_disk: -yes_sys_on_hd: diff --git a/kernel/branches/Kolibri-A/trunk/data32.inc b/kernel/branches/Kolibri-A/trunk/data32.inc index 72cbfed8a..29ee3cd19 100644 --- a/kernel/branches/Kolibri-A/trunk/data32.inc +++ b/kernel/branches/Kolibri-A/trunk/data32.inc @@ -212,22 +212,6 @@ pci_data_32: db D32 ;lim 16-19+props db 0 ;base 24-31 -; --------------- APM --------------------- -apm_code_32: - dw 0x0f ; limit 64kb - db 0, 0, 0 - dw 11010000b *256 +10011010b - db 0x00 -apm_code_16: - dw 0x0f - db 0, 0, 0 - dw 10010000b *256 +10011010b - db 0x00 -apm_data_16: - dw 0x0f - db 0, 0, 0 - dw 10010000b *256 +10010010b - db 0x00 ; ----------------------------------------- graph_data_l: diff --git a/kernel/branches/Kolibri-A/trunk/kernel.asm b/kernel/branches/Kolibri-A/trunk/kernel.asm index ce365cdc1..e0ef231b3 100644 --- a/kernel/branches/Kolibri-A/trunk/kernel.asm +++ b/kernel/branches/Kolibri-A/trunk/kernel.asm @@ -248,12 +248,6 @@ align 4 bios32_entry dd ? tmp_page_tabs dd ? -;use16 -;org $-0x10000 -;include "boot/shutdown.inc" ; shutdown or restart -;org $+0x10000 - -use32 __DEBUG__ fix 1 __DEBUG_LEVEL__ fix 1 @@ -291,41 +285,11 @@ high_code: mov cr3, eax ; flush TLB ; SAVE REAL MODE VARIABLES - mov ax, [BOOT_VAR + 0x9031] + xor eax, eax mov [IDEContrRegsBaseAddr], ax -; --------------- APM --------------------- - -; init selectors - mov ebx,[BOOT_VAR+0x9040] ; offset of APM entry point - movzx eax,word [BOOT_VAR+0x9050] ; real-mode segment base address of - ; protected-mode 32-bit code segment - movzx ecx,word [BOOT_VAR+0x9052] ; real-mode segment base address of - ; protected-mode 16-bit code segment - movzx edx,word [BOOT_VAR+0x9054] ; real-mode segment base address of - ; protected-mode 16-bit data segment - - shl eax, 4 - mov [dword apm_code_32 + 2], ax - shr eax, 16 - mov [dword apm_code_32 + 4], al - - shl ecx, 4 - mov [dword apm_code_16 + 2], cx - shr ecx, 16 - mov [dword apm_code_16 + 4], cl - - shl edx, 4 - mov [dword apm_data_16 + 2], dx - shr edx, 16 - mov [dword apm_data_16 + 4], dl - - mov dword[apm_entry], ebx - mov word [apm_entry + 4], apm_code_32 - gdts - - mov eax, [BOOT_VAR + 0x9044] ; version & flags - mov [apm_vf], eax ; ----------------------------------------- - mov al, [BOOT_VAR+0x901F] ; DMA access + inc eax +; mov al, [BOOT_VAR+0x901F] ; DMA access mov [allow_dma_access], al mov eax, 32 ; << bpp mov [ScreenBPP],al @@ -4379,61 +4343,16 @@ set_screen: hlt ; Houston, we've had a problem ; --------------- APM --------------------- -uglobal -apm_entry dp 0 -apm_vf dd 0 -endg align 4 sys_apm: xor eax,eax - cmp word [apm_vf], ax ; Check APM BIOS enable - jne @f inc eax or dword [esp + 44], eax ; error add eax,7 mov dword [esp + 32], eax ; 32-bit protected-mode interface not supported ret -@@: -; xchg eax, ecx -; xchg ebx, ecx - - cmp dx, 3 - ja @f - and [esp + 44], byte 0xfe ; emulate func 0..3 as func 0 - mov eax,[apm_vf] - mov [esp + 32], eax - shr eax, 16 - mov [esp + 28], eax - ret - -@@: - - mov esi,[master_tab+(OS_BASE shr 20)] - xchg [master_tab], esi - push esi - mov edi, cr3 - mov cr3, edi ;flush TLB - - call pword [apm_entry] ;call APM BIOS - - xchg eax, [esp] - mov [master_tab], eax - mov eax, cr3 - mov cr3, eax - pop eax - - mov [esp + 4 ], edi - mov [esp + 8], esi - mov [esp + 20], ebx - mov [esp + 24], edx - mov [esp + 28], ecx - mov [esp + 32], eax - setc al - and [esp + 44], byte 0xfe - or [esp + 44], al - ret ; ----------------------------------------- align 4